V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
V2EX  ›  morphyhu  ›  全部回复第 12 页 / 共 21 页
回复总数  416
1 ... 4  5  6  7  8  9  10  11  12  13 ... 21  
❮ ❯
2022 年 6 月 28 日
回复了 bugfan 创建的主题 › 分享创造 › 最近整了个无插件内网穿透工具
#!/usr/bin/env bash
#
# Description: A Nat Script by sean bugfan
#
# Copyright (C) 2022 - Now bugfan <[email protected]>
# URL: i996.me
# https://github.com/bugfan
#
access_token=$1
pipe_dir="/tmp/clotho/"
if [ -d ${pipe_dir} ]; then
rm -rf ${pipe_dir}
fi
if [ ! -d ${pipe_dir} ]; then
mkdir ${pipe_dir}
fi
pipe_websocket=$(echo ${pipe_dir}"websocket")
if [ ! -p ${pipe_websocket} ]; then
mkfifo ${pipe_websocket}
fi
pipe_internal=$(echo ${pipe_dir}"internal")
if [ ! -p ${pipe_internal} ]; then
mkfifo ${pipe_internal}
fi

message_request="ClothoHTTPRequest"
message_broadcast="ClothoBroadcast"
message_break="ClothoBreakClient"
message_key="ClothoMsg"


sys_protocol="https://"
sys_host="api.i996.me"
public_api_protocol="https://"
public_host="xxxx.i996.me"
private_host="127.0.0.1:8080"
wxtoken="xxxx"

include(){
tmp=$(echo $1 | grep "${2}")
if [[ "$tmp" != "" ]]
then
return 1
else
return 0
fi
}

check_token(){
if [ -z "${1}" ]; then
return 1
fi
msg=$(curl -s --http1.1 -X POST ''$sys_protocol$sys_host'/sys-auth' -H 'Authorization: '${1}'')
if [ $? != 0 ]; then
return 2
fi

include $msg $message_broadcast
stat=$?
if [ ${#msg} == '0' ]; then
return 1
fi
if [ $stat == 0 ]; then
return 1
fi
wxtoken=${1}
info=${msg#*$message_broadcast}
private_host=${info#*|}
public_host=${info%%|*}
# echo 'forward a:'$private_host
# echo 'forward b:'$public_host
# echo 'forward c:'$wxtoken
return 0
}

init(){
while :
do
# # read token
# echo "请输入 Token: \c"
# token=''
# while : ;
# do
# read -n 1 -s -p "" pw
# if [ $pw ]; then
# token=${token}$pw
# echo "*\c"
# else
# echo
# break
# fi
# done

# # read token
# # read -p "请输入 Token:" token
# check_token $token
# state=$?
# if [ $state == 0 ]; then
# break
# fi
# if [ $state == 2 ]; then
# echo '抱歉,服务器可能暂时出了点问题!请稍后再尝试~'
# else
# echo 'Token 验证失败!请关注"敲代码斯基"公众号获取 Token!(免费)'
# fi

# check token
token=${access_token}
if [ ${#token} == '0' ];then
echo '请指定 Token 参数!(curl -s i996.me | bash -s Token)'
exit 0
fi
check_token $token
state=$?
if [ $state == 0 ]; then
break
fi
if [ $state == 2 ]; then
echo '抱歉,服务器可能暂时出了点问题!请稍后再尝试~'
else
echo 'Token 验证失败!请关注"敲代码斯基"公众号获取 Token!(免费)'
fi
exit 0
done

}

init

new_fifo_name(){
echo $1$2
}

string_index(){
x="${1%%$2*}"
[[ $x = $1 ]] && echo -1 || echo ${#x}
}
do_request(){
# get message id
tmp="${1#*${message_key}:}"
message_id=${tmp%%\'*}
if [ ${#message_id} -lt 5 ]; then
printf "error message:%s\n" $message_id
return
fi
echo "==== request ====>:"$message_id

internal_fifo=$(new_fifo_name ${pipe_dir} ${message_id})
mkfifo ${internal_fifo}
response ${message_id} ${internal_fifo} &
(eval "$1") > ${internal_fifo}
# echo "===tunnel-client curl exit state===>:"$?
rm ${internal_fifo}
}

response(){
# printf 'normal msg id is:%s,%s\n' $1 $2
curl -X POST --http1.1 -v ''$sys_protocol$sys_host'/sys-callback' -H 'Authorization: '${wxtoken}'' -H 'ClothoMsg: '${1}'' --data-binary '@'${2}'' 2>/dev/null
echo "<==== response ====:"${1}
}

handle(){
msg=${1}
# printf "===message===>:%s\n" ${msg}
include $msg $message_request
req=$?
if [ $req > 0 ]; then
payload=${msg#*$message_request}
# printf "%s\n" $payload
cmd=$(echo $payload|base64 -d)
# cmd="curl -X 'GET' -d '' -H 'Accept: */*' -H 'ClothoMsg: '${wxtoken}'' -H 'User-Agent: curl/7.77.0' 'http://127.0.0.1:9090'"
do_request "$cmd" &
fi

# if [ $msg == *$message_break* ]; then
# echo '远端更新了,请输入 Token 重新启动!!'
# exit 0
# fi

}
ssh_response(){
while :
do
read msg < ${pipe_internal}
printf 'normal msg is:%s\n' $msg
curl -X POST --http1.1 -v ''$sys_protocol$sys_host'/sys-callback' -H 'Authorization: '${wxtoken}'' -H 'ClothoMsg: '${msg}'' --data-binary '@'${pipe_internal}''
echo "----send response ok ----\n"

done
echo "finish ssh_response\n"
}

read_io(){
# tail -f ${pipe_websocket} | while read -r line ; do
echo "It works!!! "
while IFS= read -r line ; do
handle "${line}"
done < "${pipe_websocket}"
echo "Connect exception...\n"
}


sys_connect(){
# listen conn
read_io & 2>/dev/null
read_io_pid=$!
# printf "worker pid:%s\n" ${read_io_pid}

# ssh_response &
# ssh_response_pid=$!
# printf "read response pid:%s\n" ${ssh_response_pid}

# do connect
curl -s --no-buffer --http1.1 -H 'Authorization: '${wxtoken}'' -H 'Connection: keep-alive, Upgrade' -H 'Upgrade: websocket' -v -H 'Sec-WebSocket-Version: 13' -H 'Sec-WebSocket-Key: websocket' ''$sys_protocol$sys_host'/sys-ws' ws -o ${pipe_websocket} 2>/dev/null
echo "System connection has broken! Retry...."
kill ${read_io_pid} 2>/dev/null
}

# finish func
finish () {
kill ${read_io_pid}
rm -rf ${pipe_dir}
rm 0
exit 0
}

# catch "Exit"
# catch "Ctrl + c"
trap finish EXIT SIGTERM SIGINT SIGQUIT

run(){
while :
do
sys_connect
sleep 5
done
}

run


# # Inifinite sleep
# sleep infinity
# wait $!
2022 年 6 月 28 日
回复了 ppxppx 创建的主题 › 分享创造 › 分享一个网盘+markdown 笔记
支持开源.加油.
2022 年 5 月 31 日
回复了 MonikaCeng 创建的主题 › Bitcoin › 买了 Ledger 后才知道原来有 20% off 的代金券。。
谢谢楼主
2022 年 5 月 15 日
回复了 LosLord 创建的主题 › Windows › 有什么办法看到什么程序在注入剪贴板
估计是中毒了。重装一下系统吧。
2022 年 5 月 5 日
回复了 nasaboy 创建的主题 › 云计算 › 阿里云国际 HK 轻量新开服务上 SS 立马被阻断端口
估计墙现在主要针对的是 tls 流量了。测试了一下。套用 TLS 马上被阻断。相反。更换端口直接连服务反正一切正常。。神奇的 GFW 开发
2022 年 5 月 4 日
回复了 nasaboy 创建的主题 › 云计算 › 阿里云国际 HK 轻量新开服务上 SS 立马被阻断端口
我的情况是走的 443 TLS ,非 SS ,经常看一段时间就会被卡住(阻断) 1-2 分钟左右。过一段时间就好了。
好苦恼。有什么有什么方式可破?
2022 年 4 月 20 日
回复了 idblife 创建的主题 › Kubernetes › Kubernetes 中如何做到 AB 分流
talk is cheap,show me the data.
"@idblife
istio 可以做到,但是性能垃圾"
2022 年 3 月 29 日
回复了 dunhanson 创建的主题 › Kubernetes › k8s pod 状态 Evicted 怎么进行排查问题?
2022 年 3 月 8 日
回复了 isno 创建的主题 › 程序员 › 14 年了,我总结了一下过往的工作经历
与其说是总结,感觉更像是一个营销自已的贴子。
2022 年 3 月 4 日
回复了 liangguan5 创建的主题 › 投资 › 梭哈了 SHIB, 0.0002U 见
果然长线是金。。。。
2022 年 3 月 4 日
回复了 pdog18 创建的主题 › macOS › 问下在用 macOS 的各位,用的是什么输入法?
原生输入法。拒绝搜狗
2022 年 2 月 25 日
回复了 heipipi 创建的主题 › GitLab › 思细级恐啊,我们自己搭的 gitlab 的都被黑了!
如果仅仅只是代码库管理功能还是很多选择的,推荐 Gogs
2022 年 2 月 17 日
回复了 colynn 创建的主题 › DevOps › 值得推荐的一个云原生的 cicd go 语言项目
一个 Jenkins 就搞定了。
2022 年 2 月 14 日
回复了 Reminders 创建的主题 › 生活 › 女友要在老家贷款买房
这么算计别结婚了。
2022 年 2 月 14 日
回复了 PqZS58MLPBHFpEqm 创建的主题 › SONY › Sony 电视上的 Youtube 无法登陆
推荐这几个,都可用
34871cef5a84648a6d3edea6d9850f4a com.amazon.firetv.youtube_1.110.0-1100_minAPI21(armeabi-v7a)(nodpi)_apkmirror.com.apk
e623ab34a6482881debefa7bbc2c7b12 com.disney.disneyplus_2.3.2-rc1-22010500_minAPI21(nodpi)_apkmirror.com.apk
41190a18a4ff195122e4d1a709b6a31a com.hbo.hbonow_52.5.1-1605205020_minAPI21(arm64-v8a,armeabi-v7a)(nodpi)_apkmirror.com.apk
b7c25e1ccd8e022f085b40ebc0cf24b6 com.netflix.ninja_8.3.1_build_4546-4546_minAPI22(armeabi-v7a)(nodpi)_apkmirror.com.apk
2022 年 2 月 10 日
回复了 mmmfj 创建的主题 › 程序员 › 失业在家怎么减少焦虑情绪
去看看祖国大好江山,新疆 /西藏值得走一次
2022 年 1 月 4 日
回复了 Nazar1te 创建的主题 › Linux › 国内云服务器怎么做 ssh 安全防护
我们多加了一层。VPN--》 WINDOWS RDP -->JumpServer
2021 年 12 月 1 日
回复了 37Y37 创建的主题 › DevOps › 我们自研的那些 DevOps 工具
重复造轮子,有很优秀的开源项目完全可以用。
比如当当网的 SQL 审计系统 https://github.com/hhyo/Archery
2021 年 12 月 1 日
回复了 lslvxy 创建的主题 › NAS › 求推荐一个家用的微型服务器
mac mini
1 ... 4  5  6  7  8  9  10  11  12  13 ... 21  
❮ ❯
About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   4550 Online   Highest 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 45ms · UTC 00:16 · PVG 08:16 · LAX 17:16 · JFK 20:16
♥ Do have faith in what you're doing.