官方提供的默认支持连接数2在大多数时候不够用所以需要调整 自动处理shell 可能需要调整授权文件目录(LICENSE_FILE_PATH)以及强依赖于unzip、zip包(此处使用的apt安装如报错请手动安装)
获取文件名称
进入/usr/local/openvpn_as/lib/python目录查找pyovpn-2.0-py3.12.egg格式的文件(红色字体内容的可能会变动)
#授权文件目录
LICENSE_FILE_PATH="/usr/local/openvpn_as/lib/python"
#授权文件名称 ps:版本不同此处内容也不同
LICENSE_FILE_NAME=$(ls -al $LICENSE_FILE_PATH | awk '{print $9}' | grep -E "^pyovpn-[0-9.]+-py3.[0-9]+.egg$")
echo "授权文件名称:${LICENSE_FILE_NAME}"
解压文件并修改限制
unzip -q pyovpn-2.0-py3.12.egg
cd ./pyovpn/lic/
mv uprop.pyc uprop2.pyc
echo "写入新的授权文件内容"
# 写入新的文件内容
cat << EOF > uprop.py
from pyovpn.lic import uprop2
old_figure = None
def new_figure(self, licdict):
ret = old_figure(self, licdict)
ret['concurrent_connections'] = 2048
return ret
for x in dir(uprop2):
if x[:2] == '__':
continue
if x == 'UsageProperties':
exec('old_figure = uprop2.UsageProperties.figure')
exec('uprop2.UsageProperties.figure = new_figure')
exec('%s = uprop2.%s' % (x, x))
EOF
python3 -O -m compileall uprop.py && mv __pycache__/uprop.*.pyc uprop.pyc
cd ../../
zip -rq pyovpn-2.0-py3.12.upd.egg ./pyovpn ./EGG-INFO ./common
备份源文件并使用修改后的内容替换
cp /usr/local/openvpn_as/lib/python/pyovpn-2.0-py3.12.egg{,.bak}
# 移动到原始授权文件位置
mv /tmp/pyovpn-2.0-py3.12.upd.egg /usr/local/openvpn_as/lib/python/pyovpn-2.0-py3.12.egg
重启openvpn-as服务
根据不同的部署方式命令不同请自行查阅
自动处理shell脚本内容
#!/bin/bash
# 生成随机字符串
random_string() {
local length=$1
cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w ${length} | head -n 1
}
# 工作目录
BASE_PATH=$(echo "/tmp/unlock-lic-$(random_string 6)")
mkdir -p "${BASE_PATH}" && cd "${BASE_PATH}"
echo "工作目录:${BASE_PATH}"
cleanup() {
echo "正在清理临时目录: ${BASE_PATH}"
rm -rf "${BASE_PATH}"
}
trap cleanup EXIT SIGINT SIGTERM ERR
#授权文件目录
LICENSE_FILE_PATH="/usr/local/openvpn_as/lib/python"
#授权文件名称 ps:版本不同此处内容也不同
LICENSE_FILE_NAME=$(ls -al $LICENSE_FILE_PATH | awk '{print $9}' | grep -E "^pyovpn-[0-9.]+-py3.[0-9]+.egg$")
echo "授权文件名称:${LICENSE_FILE_NAME}"
if [ -z "${LICENSE_FILE_NAME:-}" ]; then
echo "未找到授权文件"
exit 1
fi
# 检查是否安装了 unzip 和 zip
if ! command -v unzip >/dev/null 2>&1 || ! command -v zip >/dev/null 2>&1; then
echo "正在安装 unzip 和 zip..."
apt update && \
apt install -y unzip zip && \
apt-get clean && rm -rf /var/lib/apt/lists/* || \
{ echo "安装失败"; exit 1; }
else
echo "unzip 和 zip 已存在,跳过安装"
fi
cp ${LICENSE_FILE_PATH}/${LICENSE_FILE_NAME} ./${LICENSE_FILE_NAME}
unzip -q ${LICENSE_FILE_NAME}
cd ./pyovpn/lic/
if [ -f "uprop2.pyc" ]; then
echo "已存在破解信息请检查后再试"
exit 1
fi
mv uprop.pyc uprop2.pyc
echo "写入新的授权文件内容"
# 写入新的文件内容
cat << EOF > uprop.py
from pyovpn.lic import uprop2
old_figure = None
def new_figure(self, licdict):
ret = old_figure(self, licdict)
ret['concurrent_connections'] = 2048
return ret
for x in dir(uprop2):
if x[:2] == '__':
continue
if x == 'UsageProperties':
exec('old_figure = uprop2.UsageProperties.figure')
exec('uprop2.UsageProperties.figure = new_figure')
exec('%s = uprop2.%s' % (x, x))
EOF
echo "编译新的授权信息..."
#编译
python3 -O -m compileall uprop.py && mv __pycache__/uprop.*.pyc uprop.pyc
cd "${BASE_PATH}"
echo "正在重新打包授权文件内容"
# 重新打包
zip -rq ${LICENSE_FILE_NAME} ./pyovpn ./EGG-INFO ./common
# 备份原始授权文件
cp ${LICENSE_FILE_PATH}/${LICENSE_FILE_NAME}{,.bak}
# 移动到原始授权文件位置
mv ${LICENSE_FILE_NAME} ${LICENSE_FILE_PATH}/${LICENSE_FILE_NAME}
echo "请重新启动openvpn服务"