不忘初心,方得始终

『Loading…』

为Windows10家庭版加入远程桌面功能

前言

说来话长,最近搭建了个frp内网转发,想着转发winodws的远程桌面端口3389,来实现任意地点的远程桌面登陆
等我搭建完毕frp后,试了下远程连接,发现连接失败 汗.png
第一反应就是不是防火墙出问题了,等我排除了防火墙的问题后,隐隐约约记得win10是不是把家庭版的远程桌面给阉割掉了...
进去一看,果然是!万恶的资本主义...
2020-04-16T13:03:46.png

虽然自己用的系统都是专业版的,可公司电脑默认装的是家庭版的...
公司的电脑毕竟是公司的财产,不到万不得已,我还是不想动这个系统
家庭版就不能用远程桌面了吗?nonono~
经过一番仔细查找,在Github找到了大佬写的远程桌面软件包,该程序可以让家庭版支持远程桌面功能,大佬就是大佬 真棒.png

下面开始安装:

1 下载

- 阅读剩余部分 -

使用frp内网穿透转发,来实现Windows远程桌面登陆

前言

你是否有需求,突然来了紧急需求,需要在家里远程操作公司的电脑进行加班? 捂嘴笑.png
不加班怎么享受福报呢? 滑稽.png
当然以上都是瞎扯,在家里访问公司电脑,最简单的是使用远程控制软件,如Teamviewer、向日葵等,但是这都是第三方的应用,安全性没得什么保障,其次并不是很稳定,而且以上软件是监控VGA的输出,也就是你操作的时候,你的公司的屏幕也是可以被同事看到的,吓到人就不太好了,hh
最完美的方案还是windows自带的远程桌面,使用体验完美,并且不会在实际桌面输出,其弊端是公司的电脑一般都不会单独配置ip地址,无法直接连接,其次也不能调用独立显卡进行计算,不过公司的mx250拿来编译怕是要反向加速...
所以综合以上,这里我准备使用frp做内网穿透,并使用vps做端口转发,来实现在任意地点登陆公司电脑 太开心.png


1 准备工作

  • Root权限的VPS服务器(最好是国内的服务器,速度快延迟低,连接稳定)
  • 公司电脑可24h开机并联网

2 开始搭建

2.1 先配置服务器端

1.Centos下先执行命令安装wget
yum install -y wget
2.创建目录来存放frp和配置文件
mkdir /home/frp && cd /home/frp
3.下载Github最新版服务器端frp
下载地址:https://github.com/fatedier/frp/releases
这里以目前最新版 v0.32.1 为例
wget https://github.com/fatedier/frp/releases/download/v0.32.1/frp_0.32.1_linux_amd64.tar.gz
4.解压文件
tar -xzvf frp_0.32.1_linux_amd64.tar.gz
5.进入解压的文件夹
cd frp_0.32.1_linux_amd64/
6.编辑配置文件 vi frps.ini

[common]
bind_addr = 0.0.0.0
#frp连接端口
bind_port = 7000
#frp连接密码
token = 1234567890

#面板端口
dashboard_port = 7500
#面板账号
dashboard_user = admin
#面板密码
dashboard_pwd = admin

修改完成后输入:wq保存退出即可
具体参数可参考官方的参考文档:https://github.com/fatedier/frp/blob/master/README_zh.md
7.给脚本加上执行权限
chmod +X *.sh
8.运行脚本
./frps -c ./frps.ini
2020-04-16T05:55:29.png

至此,服务端就运行成功了,不过别忘了在防火墙放行对应的端口
现在可以直接在浏览器输入服务器ip:7500打开frp面板了

2.2 配置客户端

- 阅读剩余部分 -

SpringBoot 配置文件存放位置及读取顺序

因为线上部署的时候和本地往往使用不同的配置文件,所以研究了下SpringBoot配置文件存放位置及读取顺序
之前是直接手动指定配置文件启动来启动SpringBoot工程的,后来发现直接按照配置文件的加载顺序优先级放到对应的文件夹下即可进行配置文件的自动覆盖和互补

以下内容转载自:https://my.oschina.net/sdlvzg/blog/1612703


SpringBoot配置文件可以使用yml格式和properties格式

分别的默认命名为:application.yml、application.properties

存放目录

SpringBoot配置文件默认可以放到以下目录中,可以自动读取到:

  • 项目根目录下
  • 项目根目录中 config 目录下
  • 项目的 resources 目录下
  • 项目 resources 目录中 config 目录下

clipboard.png

读取顺序

如果在不同的目录中存在多个配置文件,它的读取顺序是:

1、config/application.properties(项目根目录中config目录下)
2、config/application.yml
3、application.properties(项目根目录下)
4、application.yml
5、resources/config/application.properties(项目resources目录中config目录下)
6、resources/config/application.yml
7、resources/application.properties(项目的resources目录下)
8、resources/application.yml

注:
1、如果同一个目录下,有application.yml也有application.properties,默认先读取application.properties。
2、如果同一个配置属性,在多个配置文件都配置了,默认使用第1个读取到的,后面读取的不覆盖前面读取到的。
3、创建SpringBoot项目时,一般的配置文件放置在“项目的resources目录下”

搭建softEther,组建虚拟局域网,和基友畅玩经典单机~

受疫情影响,在家实在闲着没事,就开始瞎折腾了... 笑眼.png
主流游戏玩腻了,就想找着基友来重温经典,打打红警,玩玩cs...,感受一下全球苏维埃的成就感 滑稽.png
111.jpg
可是全国人民都在家闲着,各大对战平台都是爆满状态,浩方、游侠、红警战网.. 都非常火爆,服务器负载大了,就会就现掉线,严重影响游戏体验... 不高兴.png
索性就利用闲置的服务器,搭建一个虚拟局域网,都是自己人玩,又快又稳定~ 滑稽.png

经各方查阅资料,最终决定选用 softEther v*n 来组建虚拟局域网
官方网站:https://www.softether.org/

原理:在服务器 CentOS7 系统下配置 softEther 服务端,使用DNSmasq进行DHCP地址分配,然后通过 Win10 自带的v*n功能连接到搭建好的服务器,实现虚拟局域网从而联机打游戏~


下面开始安装和配置:

- 阅读剩余部分 -

Github中提交Commit时使用GPG进行加密

概述

GPG 是一种加密算法,在 Git 中提交 Commit 时可以使用 GPG 进行加密,来保证提交的 Commit 没有被篡改,具体体现在 Github 提交的时候会有一个 verified 的标志。
QQ截图20200121153639.png

这里我是在 Windows 下操作来生成 GPG 密钥的,其他系统环境下操作可能会有不同

准备工作

生成GPG密钥之前,可以检查当前电脑是否存在有 GPG 密钥

1 打开 Git Bash
2 使用 gpg --list-secret-keys --keyid-format LONG 命令列出同时具有公共密钥和私有密钥的GPG密钥。签名提交或标记需要私钥。

gpg --list-secret-keys --keyid-format LONG

3 检查命令输出以查看是否具有 GPG 密钥
如果没有GPG密钥对,则生成一个新的GPG密钥
2020-01-21T08:02:03.png

- 阅读剩余部分 -

饭饭's 随机图片 Api → Random-Image-Api

饭饭's 随机图片 Api → Random-Image-Api

一个能够获取随机图片的 Api,基于 Spring Boot 构建

Demo:https://api.ffis.me/imgApi/index.html
Github: https://github.com/noisky/Random-Image-Api

可读取本地图片列表的地址,并提供随机访问服务,可配置域名白名单访问

2020-01-07T16:01:56.png

项目说明

程序启动的时候会自动加载 项目路径/list 文件夹下的所有列表文件;

图片列表文件:

  • 提供访问路径为文件名的随机图片服务
  • 文件命名格式 xxx.txt 必须为 .txt 结尾,每行一个图片url

域名白名单列表文件:

  • 会开启域名白名单访问,只允许列表中的域名进行接口调用
  • 命名只能为 domains.txt,每行一个域名,支持泛域名

    • 例如输入 test.com ,则会允许所有 test.com 结尾的域名访问
  • 若域名列表文件不存在或者文件为空,则会关闭域名白名单服务,任何域名都可以进行调用。
更改列表文件后,刷新图片缓存即可生效。

编译运行

# 拉取项目
git clone https://github.com/noisky/Random-Image-Api.git
# 使用 maven 打包
mvn clean package
cd target && java -jar Random-Image-Api-1.0.0.jar
# 将写好的图片列表文件放入 list 文件夹,刷新缓存即可正常访问
http://localhost:9090/flush
# 默认访问端口 9090
http://localhost:9090/random/{图片列表文件名}
# 主页地址
http://localhost:9090/index.html

接口调用:

1、获取随机图片:

  • 请求方式:GET请求

    • 请求地址:/random/{images}
    • {images} 则对应为 images.txt 文件里面的所有图片地址

2、获取每日图片:

  • 请求方式:GET请求

    • 请求地址:/today/{images}
    • {images} 则对应为 images.txt 文件里面的所有图片地址

3、刷新图片缓存:

  • 请求方式:GET请求

    • 请求地址:/flush

已完成功能:

  • 获取每日图片
  • 读取本地列表的图片地址,提供随机访问
  • 域名白名单访问,未授权的域名访问会跳转到未授权页面

TODO:

  • 提供本地图片的随机访问
  • 接口调用统计

Centos下使用shell脚本来批量管理Spring Boot Api服务

前言

最近在部署Spring Boot构建的Api
因为有多个jar要启动,启动的参数也都不一样 不高兴.png
搞的我都蛋疼了,只好研究下使用shell脚本来一键管理了
花了两个小时,终于把脚本撸出来了 太开心.png
注意如果在windows下创建shell脚本文件,注意文档格式要转换为unix才能在linux中运行
推荐直接在linux中直接使用vi创建shell脚本文件

创建脚本

在指定路径下运行vi startAll.sh来创建脚本文件
参考如下代码:

- 阅读剩余部分 -

念念不忘,必有回响,心仪的域名终于注册成功辣~

域名注册通知.png
前些天看中了一个域名,是由我的名字简写的域名 fanhy.com,正处于赎回期,原注册者也不打算赎回了 太开心.png
于是就写了个监控域名注册的Api来监控该域名,等域名可以注册了就给我发送邮件通知 小乖.png
传送门:自己动手造了个监控域名可否注册的Api → CheckDomain
经过半个多月的等待,终于在今日凌晨,该域名终于被注册局删除 乖.png

注册域名邮件截图.png
由于我早就推算好时间,今天睡觉的时候就给邮件通知加上了铃声通知,于是凌晨3点左右就收到了域名可以注册的邮件
梦中惊醒,打开早就准备好的注册页面,下单,付款一气呵成,域名终于到手! 滑稽.png
开心~~~
哈哈.png 哈哈.png 哈哈.png

不过注册后了才发现是一时冲动,手上已经有两个域名了,拿这个域名干什么呢? 不高兴.png
不管这么多了,先拿去备案再说吧~
网站备案期间需要暂时关闭留言功能...
域名备案.png
捂嘴笑.png

博客的友情链接从首页移至内页啦

由于友情链接日益增多已经影响阅读,风格也过于单调 小乖.png
所以就抽了个时间把友链从首页移动到内页
这样就能给友链加特效啦 太开心.png
友链的风格设计 参考了 基本照抄了:https://logi.ml/

添加了头像的展示,效果如下:
QQ截图20191212235426 (1).png

没有头像的小伙伴们还不快给我留言添加头像~~~ 乖.png

解决Spring项目打成Jar包后Freemarker找不到模板的问题

昨天改完CheckDomain的bug后,打包jar准备部署到服务器上,本地测试都正常,但是扔到服务器上却发不了邮件了... 不高兴.png

经过多次测试发现,freemarker在jar包中无法使用类加载器获取resourse目录下的templates文件 泪.png

出现的问题代码如下:(本地测试正常,打包jar后无法获取模板)

/**
 * 邮件模板静态化
 *
 * @param mailTemplateModel 模板数据模型
 * @return 加上数据后的静态化模板
 */
@Override
public String getMailHtml(MailTemplateModel mailTemplateModel) {
    try {
        //创建配置类
        Configuration configuration = new Configuration(Configuration.getVersion());
        //设置模板路径
        String classpath = this.getClass().getResource("/").getPath();
        configuration.setDirectoryForTemplateLoading(new File(classpath + "/templates"));
        //设置字符集
        configuration.setDefaultEncoding("utf-8");
        //加载模板
        Template template = configuration.getTemplate("mailTemplate.ftl");
        //模板静态化并返回
        return FreeMarkerTemplateUtils.processTemplateIntoString(template, mailTemplateModel);
    } catch (Exception e) {
        e.printStackTrace();
        log.error("模板静态化异常", e);
        return null;
    }
}

修改后的代码:(打包jar后正常获取模板)

- 阅读剩余部分 -

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. ...
  7. 18