2020/05/05

用 Visual C++ Build Tool 编译 Lua 5.3 源代码

Windows 下用 Microsoft Visual C++ Build Tool 来编译 Lua 5.3 源代码 其实很简单。
  1. 打开一个编译命令行窗口
  2. 解开 Lua 5.3.x 的源代码到 C:\Lua53
  3. 进入src目录, 执行下面的命令
REM cd src
del *.o *.obj *.res
cl /MD /O2 /c /DLUA_BUILD_AS_DLL *.c
ren lua.obj lua.o
ren luac.obj luac.o
IF EXIST wmain.obj ren wmain.obj wmain.o
link /DLL /OUT:lua53.dll *.obj
link /OUT:lua53.exe lua.o lua53.lib
lib /OUT:lua53a.lib *.obj
link /OUT:luac.exe luac.o lua53a.lib
IF NOT EXIST wlua.rc goto DEPLOY
rc wlua.rc
link /subsystem:windows /OUT:lua53w.exe wmain.o lua.o wlua.res lua53.lib
del /y *.o *.obj *.res
:DEPLOY
move /y *.exe ..
mkdir /y ..\lib
move /y *.lib ..\lib\

2020/01/28

利用 socat 搭建一个简易 VPN 的服务端脚本

Server Side - Bash

#!/bin/bash

[[ $# -lt 3 ]] && echo "Usage: $0 tunID udp-port remote.lan.ip/net" && exit 255

TUN_ID=$(echo $1 | tr -d '[a-zA-Z]+')
[[ "$TUN_ID" != "$(( $TUN_ID / 1 ))" ]] && echo "tunID:\"$1\" must suffix with a number!" && exit 254

## Debug
TUN_DEV=$1
LOCAL_INT="192.168.2.$(( $TUN_ID % 64 * 4 + 1 ))/30"
REMOTE_INT="192.168.2.$(( $TUN_ID % 64 * 4 + 2 ))"
UDP_PORT=$2
REMOTE_LAN=$3

# kill exists
pkill -f "tun-name=$TUN_DEV"

socat tun:$LOCAL_INT,tun-name=$TUN_DEV,up udp4-listen:$UDP_PORT,fork &
sleep 3

# tunX options
ip link set $TUN_DEV mtu 1452

shift 2

# Add all the given subnet to SNAT
for net in $*;do 
  ip route add $net dev $TUN_DEV
  iptables -t nat -I POSTROUTING -s $net -j SNAT --to-source $(hostname -i) 
done

Client Side - BusyBox

#!/bin/sh

[[ $# -lt 2 ]] && echo "Usage: $0 tunID remote.ip.udp:port" && exit 255

TUN_ID=$(echo $1 | tr -d '[A-Za-z]+')
[[ "$TUN_ID" != "$(( $TUN_ID / 1 ))" ]] && echo "tunID:\"$1\" must suffix with a number!" && exit 254

TUN_DEV=$1
LOCAL_INT="192.168.2.$(( $TUN_ID % 64 * 4 + 2 ))/30"
REMOTE_INT="192.168.2.$(( $TUN_ID % 64 * 4 + 1 ))"
REMOTE_UDP=$2

kill $(ps | grep tun-name=$TUN_DEV | cut -d ' ' -f 1) 2>/dev/null

socat tun:$LOCAL_INT,tun-name=$TUN_DEV,up udp4-connect:$REMOTE_UDP &
sleep 3

# MTU
ip link set $TUN_DEV mtu 1452

# IP Route2
ip route add default via $REMOTE_INT table $TUN_DEV
ip rule add from $REMOTE_INT table $TUN_DEV


BlockChain 相关电子书

@copyright of Sam Chadwick   - https://thehub.thomsonreuters.com/groups/bitcoin/blog/2017/09/10/blockchain-paper Blockchain Papers A c...