作者:matrix
发布时间:2022-12-31
分类:零零星星
很多时候需要搭建简单的socket代理或者其他中转隧道,方便学习开发。
gost是用golang实现的隧道代理工具,功能强大,也有docker环境可以快速使用。
github
https://github.com/go-gost/gost
docker镜像
ginuerzh/gost
gogost/gost
两个docker镜像应该都可信,来源于作者/官方
前置条件
外网服务器 + 中转服务器(可选) + 域名 + 域名SSL证书
下面用中转
/直连
方案实现隧道代理,记录下~
服务端(outside server)
外网落地服务器
a. 直连方案配置
$ docker run --rm -it \
--net=host \
-v /etc/letsencrypt:/etc/letsencrypt:ro \
ginuerzh/gost -L "mwss://USERNAME:PASSWORD@:443?cert=/etc/letsencrypt/live/wwww.hhtjim.com/fullchain.pem&key=/etc/letsencrypt/live/wwww.hhtjim.com/privkey.pem"
b. 中转方案配置
$ docker run --rm -it \
--net=host \
-v /etc/letsencrypt:/etc/letsencrypt:ro \
ginuerzh/gost -L "relay+mwss://USERNAME:PASSWORD@:443?cert=/etc/letsencrypt/live/wwww.hhtjim.com/fullchain.pem&key=/etc/letsencrypt/live/wwww.hhtjim.com/privkey.pem"
说明:
用户名和密码
USERNAME:PASSWORD
SSL证书
/etc/letsencrypt/live/wwww.hhtjim.com/fullchain.pem
/etc/letsencrypt/live/wwww.hhtjim.com/privkey.pem
中转服务端(inside server)
inside中转服务器,仅b.中转方案
需要
目的:将服务端的relay+mwss中转为ss协议
$ docker run -p 8081:8081 -it -d --name gost-client gogost/gost -L ss://aes-256-cfb:PASSWORD2@:8081 -F "relay+mwss://USERNAME:PASSWORD@wwww.hhtjim.com:443"
说明:
8081为中转服务器本地启用的隧道端口
本地客户端
a. 直连方案
$ docker run -p 9898:9898 --rm gogost/gost -L ":9898" -F "mwss://USERNAME:PASSWORD@wwww.hhtjim.com:443"
说明:
9898为转发到本地的socket5端口
本地连接socket5://127.0.0.1:9898即可
b. 中转方案
普通客户端直连国内中转ip的ss协议
按照自己配置的中转方案参数,连接ss即可
测试
$ curl --proxy http://127.0.0.1:9898 -X GET 'https://ipinfo.io'
$ curl -v "https://www.google.com" --proxy "http://127.0.0.1:9898"
参考:
https://latest.gost.run/
https://v2.gost.run/port-forwarding/
https://github.com/haoel/haoel.github.io
https://ednovas.xyz/2021/02/24/mtproxy/#gost%E4%B8%AD%E8%BD%AC
https://telegra.ph/socks5%E5%8F%8AMTProto%E4%BB%A3%E7%90%86%E8%AE%BE%E7%BD%AE%E8%84%9A%E6%9C%AC-05-31
作者:matrix
发布时间:2022-10-18
分类:零零星星
环境:
Mac + vscode + docker
创建项目和容器镜像
基于nodejs的docker镜像安装tailwindcss,daisyui
新建目录tailwind-project
$ mkdir -p ./tailwind-project/src/ ./tailwind-project/dist/
$ cd ./tailwind-project/
$ docker run -it --rm -v $(pwd):/data -w /data node:latest sh -c 'npm install -D tailwindcss tailwindcss-cli ;npm i daisyui;npx tailwindcss-cli init;bash'
install -D 参数表示dev
daisyui为组件库 可取消
显示「Created Tailwind css config file: tailwind.config.js」 即创建成功
安装成功的npm包:
root@4e27e6ae691b:/data# npm list
data@ /data
+-- daisyui@2.31.0
+-- tailwindcss-cli@0.1.2
`-- tailwindcss@3.1.8
配置tailwind.config.js
找到tailwind-project
目录的tailwind.config.js
文件。
参考配置如下:
// 下面配置为tailwindcss 3.0+版本
// 旧版本配置参数名可能不同
/** @type {import('tailwindcss').Config} */
module.exports = {
content: ["./src/**/*.{html,js}"],
theme: {
extend: {},
},
plugins: [
require("daisyui"),
],
daisyui: {
themes: ["emerald"],
},
}
content:待监听的html/js/vue文件路径(Tailwind会自动读取使用的class,输出到output css
)
plugins:配置加载UI插件daisyui
daisyui.themes : 设置daisyui的默认主题为emerald
热更新监听
使用tailwindcss
命令监听html文件变更,自动输出class
的css代码到output.css
npx tailwindcss -o ./dist/output.css --minify --watch
-o参数定义output css
输出文件路径
--minify参数启用css压缩
--watch参数启用热加载更新文件
编辑你的html
编辑./src/index.html
文件,开始尝试tailwind啦...
<!DOCTYPE html>
<html lang="en" >
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>HHTjim'S 部落格 - tailwind Demo</title>
<!-- 引入tailwind输出的css文件-->
<link href="/dist/output.css" rel="stylesheet">
</head>
<!-- tailwind watch监听class变化自动更新到output css -->
<body class="bg-[#8ed1fc] h-screen">
<div class="container flex items-center flex-col w-full">
<h2 class="text-4xl text-center my-5 font-bold " >Test Title</h2>
<button class="bg-green-300 hover:bg-green-500 rounded px-2 py-2">Button</button>
</div>
</body>
</html>
vscode插件
tailwindcss官方提供了vscode的开发插件,便于提示class name
https://marketplace.visualstudio.com/items?itemName=bradlc.vscode-tailwindcss
tailwindcss用法要多多参考官方手册了,不过有daisyui也可以更快的输出你想要的控件样式
参考:
https://tailwindcss.com/docs/installation
https://daisyui.com/
https://github.com/komavideo/LearnTailwindCSS/tree/main/Lesson02
作者:matrix
发布时间:2022-10-02
分类:零零星星
SLA探活的需求很广泛,简单的可以自己实现。但是专门独立的探活工具倒是极少~
EaseProbe由GO编写,不需要其他依赖支持直接使用二进制程序运行。
这几天测试用来给api接口、ssl证书、web 200探活,好用~
github仓库
https://github.com/megaease/easeprobe
支持HTTP、TCP、SSH、ssl证书、各种数据库/消息中间件服务探活,和email、SLAck、Discord、Telegram、飞书...的通知。还支持消息通知和定时发送报表,可以自定义分类告警渠道
配置config.yaml
参照官方配置,新建文件config.yaml
配置SSL证书过期检测、WEB HTTP200检测、接口HTTP状态检测:
http: # http探活
# 默认监控网页HTTP是否为200OK
- name: "HHTJIM.COM OK"
url: https://www.hhtjim.com
- name: "LINK.HHTJIM.COM OK"
url: https://www.hhtjim.com
# 监控接口是否返回指定状态码
- name: link mp3 parse
url: https://link.hhtjim.com/163/5146554.mp3
method: GET
insecure: true
success_code:
# 配置允许的状态码范围
- [200,206] # the code >=200 and <= 206
- [300,308] # the code >=300 and <= 308
timeout: 1s # default is 30 seconds
tls: # SSL证书探活
# 监控网页证书是否临近过期(24小时内触发告警)
- name: "www.hhtjim.com SSL EXPIRED"
host: www.hhtjim.com:443
insecure_skip_verify: true # dont check cert validity
expire_skip_verify: false # dont check cert expire date
alert_expire_before: 24h # alert if cert expire date is before X, the value is a Duration, see https://pkg.go.dev/time#ParseDuration. example: 1h, 1m, 1s. expire_skip_verify must be false to use this feature.
# 监控网页证书是否临近过期(7天内触发告警)
- name: "link.hhtjim.com SSL EXPIRED"
host: link.hhtjim.com:443
insecure_skip_verify: true
expire_skip_verify: false
alert_expire_before: 168h
notify: # 告警通知方式
lark:
- name: "lark alert service"
# 配置飞书通知机器人的webhook
webhook: "https://open.feishu.cn/open-apis/bot/v2/hook/00000-10b1-000000-8949-00000000"
# 全局配置
settings:
probe:
timeout: 30s # the time out for all probes
interval: 1m # probe every minute for all probes
说明:
参照上面注释可自由配置,我这里使用的是飞书通知。也可以其他方式告警~
探活配置参数:
https://github.com/megaease/easeprobe/blob/main/docs/Manual.md#1-probe
告警通知配置参数:
https://github.com/megaease/easeprobe/blob/main/docs/Manual.md#2-notification
开启监控
EaseProbe已经有docker镜像,可以直接一键启停。
# 首次启动
$ docker run -d -p 8181:8181 --name sla -v $(pwd)/config.yaml:/opt/config.yaml megaease/easeprobe
# 重启
$ docker restart sla
# 关闭
$ docker stop sla
查看状态
访问http://HOST:8181`就能看到web监控面板,且支持api接口
http://HOST:8181/api/v1/sla`
附. 飞书BOT创建
这里的告警通知使用的是群自定义机器人webhook,需要使用飞书客户端创建(web端没有找到入口)
参考:
https://mp.weixin.qq.com/s/c73ZPBGoMbqjT-xbRiCJ3g
https://github.com/megaease/easeprobe/blob/main/docs/Manual.md
https://open.feishu.cn/document/ukTMukTMukTM/ucTM5YjL3ETO24yNxkjN?lang=zh-CN
作者:matrix
发布时间:2022-09-12
分类:零零星星
配置快捷键运行多条命令,目前没有看到官方的解决方案,使用三方插件支持
测试环境:
Mac vscode 默认语言
multi-command插件
https://marketplace.visualstudio.com/items?itemName=ryuta46.multi-command
先安装multi-command~
打开配置页
打开vscode命令面板按F1
或者command + shift + p
搜索 open keyboard shortcuts
,选择Open Keyboard Shortcuts (JSON)
我之前有次修改过cmd-k
快捷键,目的是清空code-runner
插件运行的命令行信息(清屏)。
vscode默认的cmd-k
执行场景有限,当初是把触发条件when
修改为终端或者编辑器获取焦点就行。
...
{
"key": "cmd+k",
"command": "workbench.action.terminal.clear",
"when": "terminalFocus && terminalProcessSupported || editorFocus"
}
...
但是现在需要terminal
和output
都执行清空,也就是执行两条命令。我尝试了多次都失败了,最后也只好乖乖安装插件搞定。
自定义快捷键
按照上面操作,正常打开keybindings.json
文件,
或者自己打开配置文件默认路径:
~/Library/Application Support/Code/User/keybindings.json
我需要执行多个消息清空的命令,按下面配置即可
// 将键绑定放在此文件中以覆盖默认值auto[]
[
//...
{
"key": "cmd+k",
"command": "extension.multiCommand.execute",
"args": {
"sequence": [
"workbench.action.terminal.clear",
"workbench.output.action.clearOutput",
]
},
"when": "terminalFocus && terminalProcessSupported || editorFocus"
},
//...
]
说明:
command
参数执行插件入口命令extension.multiCommand.execute
sequence
参数配置需要执行的命令(按序执行)
when
参数控制触发条件
配置完成之后,会立即生效~ 这样就可以了
找到自己的command
你自定义的快捷键可能会用到vscode的其他命令,可以使用下面方法找到完整command命令
- 打开vscode命令面板按
F1
或者command + shift + p
-
搜索命令关键字
-
点击右侧设置按钮
参考:
when参数可用context:
https://code.visualstudio.com/api/references/when-clause-contexts
不使用插件的方法:
VS Code: bind one key to multiple commands without an extension
作者:matrix
发布时间:2022-08-31
分类:command 零零星星
有些环境是内网使用网线连接,而外网需要通过wifi上网,不能同时连接内外网。
Windows本地环境:
172.27.9.1 # 外网网关
172.27.9.64 # 外网IP
10.211.132.69 #内网ip
route print
超管权限运行:
route print
找到自己的有线网卡序号,这里为5
route add
route add -p 172.0.0.0 mask 255.0.0.0 172.27.9.64 if 5
按照自己本机ip,执行上面命令。
之后重启windows即可实现内外网同时可用。
最终效果
C:\Users\admin>route print
===========================================================================
接口列表
14...a4 bb 6d 4a 0c 0a ......Realtek PCIe GbE Family Controller
10...08 d2 3e 98 58 ec ......Microsoft Wi-Fi Direct Virtual Adapter
9...0a d2 3e 98 58 eb ......Microsoft Wi-Fi Direct Virtual Adapter #2
3...08 d2 3e 98 58 eb ......Intel(R) Wireless-AC 9462
18...08 d2 3e 98 58 ef ......Bluetooth Device (Personal Area Network)
1...........................Software Loopback Interface 1
===========================================================================
IPv4 路由表
===========================================================================
活动路由:
网络目标 网络掩码 网关 接口 跃点数
0.0.0.0 0.0.0.0 172.27.9.1 172.27.9.64 40
10.0.0.0 255.0.0.0 10.211.132.1 172.27.9.64 41
10.0.0.0 255.0.0.0 10.211.132.69 172.27.9.64 41
10.211.0.0 255.255.0.0 10.211.132.1 10.211.132.69 26
10.211.132.0 255.255.255.0 在链路上 10.211.132.69 281
10.211.132.69 255.255.255.255 在链路上 10.211.132.69 281
10.211.132.255 255.255.255.255 在链路上 10.211.132.69 281
127.0.0.0 255.0.0.0 在链路上 127.0.0.1 331
127.0.0.1 255.255.255.255 在链路上 127.0.0.1 331
127.255.255.255 255.255.255.255 在链路上 127.0.0.1 331
172.27.9.0 255.255.255.0 在链路上 172.27.9.64 296
172.27.9.64 255.255.255.255 在链路上 172.27.9.64 296
172.27.9.255 255.255.255.255 在链路上 172.27.9.64 296
224.0.0.0 240.0.0.0 在链路上 127.0.0.1 331
224.0.0.0 240.0.0.0 在链路上 10.211.132.69 281
224.0.0.0 240.0.0.0 在链路上 172.27.9.64 296
255.255.255.255 255.255.255.255 在链路上 127.0.0.1 331
255.255.255.255 255.255.255.255 在链路上 10.211.132.69 281
255.255.255.255 255.255.255.255 在链路上 172.27.9.64 296
===========================================================================
我的博客即将同步至腾讯云开发者社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=3ab5kpykd2ww0
作者:matrix
发布时间:2022-03-01
分类:零零星星
第一次编写快捷指令,不错。小小满足了我的ios应用需求 😆
我不喜欢太黑的环境入睡,所以想要个倒计时关闭的手电筒
feat
- 支持列表选择时间
- 支持自定义倒计时时间
- 通知提示关闭时间
- 关闭时间动态判断(可手动修改缓存文件)
- 重复执行的覆盖提示
快捷指令
https://www.icloud.com/shortcuts/c83d1a4f15644e45a1410311cc84c715
ios手机直接在Safari浏览器中打开然后信任即可运行。
功能简单,但是里面执行步骤被我加到了50+ :捂脸:
从简单的循环倒计时修改,到支持列表选择、自动义倒计时时间、缓存关闭时间且支持动态判断(可手动更改缓存文件)真是鼓捣了一晚上。
很多可用功能都可以自己去搜索,也可以参照其他快捷指令
执行过程
推荐感兴趣的同学来玩玩,没什么规范限制,能跑起来基本功能就行了,效果简单粗暴。
我第一版是直接固定60秒的N次循环,最后执行手电筒关闭功能,当然要先把手电筒打开才行。用倒是能用,但是看了其他指令发现还可以做列表选择,还有配置缓存。
所以开始了功能升级,回过头来记录下大致的执行步骤
1.生成配置json文件
文件路径:~/iCloud云盘/Shortcuts/sleep-lamp/config.json
其中sleep-lamp/config.json
文件为自定义路径。得到关闭时间后会写入数据 类似
{"last-close-time":"2022年1月1日 00:00:00"}
2.列表选择
上面的config.json会初始化空白文件
之后会让选择时间列表
选择列表中的时间或者其他
自定义输入时间作为分钟数记录到变量$delay
单位为分钟
3.计算关闭时间写入配置
关闭时间 = 当前时间 + delay
写入配置文件
4.开启手电筒
5.轮训判断时间
类似for循环进行处理。读取配置的关闭时间,如果时间已过,则关闭手电筒。
完美
PEACE~
作者:matrix
发布时间:2021-09-03
分类:零零星星
现在我需要svn或者git的提交同步到其他远程仓库(svn或git),也就是同步操作。这里的同步最小单位为单次的提交commit。
配合之前的「使用git-svn管理svn仓库」可以完美解决这个问题,利用git来中转管理我们手上的仓库代码。
场景:
有多个相同代码的SVN仓库,我不想全部迁移到git。然而每次修改一个功能的代码就必须手动复制到其他的远程svn/git仓库上,代码相似但又不能直接替换。。。
之前使用git cherry-pick可以解决这个问题,但是要单独给svn用就会很麻烦。尝试用git svn
中转试试!
1. 本地添加远程仓库
如果是svn仓库,先使用git svn clone svn://xxx.com/xxx
克隆svn仓库到本地
2. 本地添加远程仓库
没有找到命令行的方式添加远程仓库分支,但是可以修改 .git/config
文件达到目的。
项目/.git/config
文件中新增svn-remote
配置:
[core]
...
[svn-remote "svn"]
...
[svn-remote "qingsui"]
url = svn://xxxx/qingsui
fetch = :refs/remotes/git-svn-qingsui
- 添加远程git仓库:
可以直接使用git命令添加:
$ git remote add remote-repository-name https://git.weixin.qq.com/xxx.git
注意:remote-repository-name 为自定义的分支名
3. 拉取远程代码
$ git svn fetch qingsui
如果需要pull操作来自动更新合并执行命令git svn rebase
$ git fetch remote-repository-name
4.新建对应的本地分支
$ git checkout -b qingsui remotes/git-svn-qingsui
$ git branch -a # 查看本地分支情况
$ git checkout -b remote-repository-name remotes/remote-repository-name/master
5. 将commit提交合并到新分支
commit_id
是需要同步到其他远程分支的commit id。
$ git cherry-pick {commit_id}
6. 推送修改到远程仓库
$ git svn dcommit
$ git push
完美解决,实际上就是使用git来操作。
同步到远程svn仓库操作脚本
#!/bin/bash
#同步commit到其他远程仓库
#example: shell.sh dade,qingsui commitID1,commitID2
# dade,qingsui 为`git branch`本地分支名字
if [ ! $1 -o ! $2 ]; then
echo -e "usage example: \n $ shell.sh dade,qingsui commitID1,commitID2"
exit
fi
repo_arr=(`echo $1 | tr ',' ' '`)
commit_arr=(`echo $2 | tr ',' ' '`)
for repo in ${repo_arr[@]};do
for commit_id in ${commit_arr[@]};do
git checkout $repo
git svn rebase #git pull操作
git cherry-pick $commit_id
git svn dcommit
git checkout master
echo -e "\n"
done
done
说明:
如果自动合并有冲突会操作会失败,需要手动修改再提交&推送。
如果需要git-svn自动输入密码>> https://www.hhtjim.com/git-svn-save-password-credentials-from-input.html
参考:
https://coderwall.com/p/vfop7g/add-an-svn-remote-to-your-git-repo
https://superuser.com/questions/354819/git-svn-pass-password-on-command-line
作者:matrix
发布时间:2021-07-31
分类:零零星星
不同的仓库可以互相同步其中任意提交的commit吗?可以的~
现有仓库enc,qsui,dada。三个的代码基本相同但是没有新建分支来区别。
本地会经常修改enc代码来提交到其远程仓库,但是其他仓库咋办?我不想每个再修改提交。
办法
大致思路就是本地仓库添加其他remote远程分支,本地抓取之后新建本地分支进行关联,再git cherry-pick
合并提交到本地新的分支,之后push即可。
步骤
$ git remote add dada https://git.weixin.qq.com/wx_wx8fffaa009d109aa1/dada.git
$ git remote -v # 查看远程仓库分支
$ git fetch dada
$ git checkout -b dada dada/master #远程dada/master分支新建为本地分支「dada」,且当前分支切换到dada
$ git branch -a # 查看本地分支情况
* dada
master
remotes/dada/master
remotes/origin/master
$ git cherry-pick d4df33b962910XXXX
$ git push dada dada:master
一句话同步操作
$ git checkout qsui && git cherry-pick dad6432037fcadcd35405aaa331dd367e58b1e2e && git push qsui qsui:master
多分支多commit操作脚本
#!/bin/bash
#example: shell.sh dada,qsui commitID1,commitID2
# 同步commit到其他远程仓库
if [ ! $1 -o ! $2 ]; then
echo -e "usage example: \n $ shell.sh dada,qsui commitID1,commitID2"
exit
fi
repo_arr=(`echo $1 | tr ',' ' '`)
commit_arr=(`echo $2 | tr ',' ' '`)
for repo in ${repo_arr[@]};do
for commit_id in ${commit_arr[@]};do
git checkout $repo
git pull
git cherry-pick $commit_id
git push $repo $repo:master
echo -e "\n"
done
done
git checkout master
参考:
https://www.bestyii.com/topic/40
https://blog.zengrong.net/post/bash_array/
https://blog.csdn.net/Jerry_1126/article/details/83930956
- 1
- 2
- 3
- 4
- 5
- 6
... - 23