#!/bin/bash

# 切换到当前用户的主目录
cd

# 备份原始egg文件并复制到当前目录
#
#############################################################################
#                                                                           #
# 注意：pyovpn-2.0-py3.11.egg 的3.11会随着版本的变化而改变，请注意更改格式      #
#                                                                           #
#############################################################################
cp /usr/local/openvpn_as/lib/python/pyovpn-2.0-py3.11.egg{,.bak}
cp /usr/local/openvpn_as/lib/python/pyovpn-2.0-py3.11.egg .

# 解压egg文件
unzip -q pyovpn-2.0-py3.11.egg 

# 进入相应的目录
cd ./pyovpn/lic/

# 重命名uprop.pyc文件
mv uprop.pyc uprop2.pyc

# 创建新的uprop.py文件并写入内容
cat > uprop.py <<EOF
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

# 编译uprop.py文件并移动编译后的.pyc文件
python3 -O -m compileall uprop.py && mv __pycache__/uprop.*.pyc uprop.pyc

# 返回上一级目录
cd ../../

# 重新打包egg文件
zip -rq pyovpn-2.0-py3.11.egg ./pyovpn ./EGG-INFO ./common

# 将重新打包的egg文件移动到原始位置
mv ./pyovpn-2.0-py3.11.egg /usr/local/openvpn_as/lib/python/pyovpn-2.0-py3.11.egg

# 重启openvpn服务
systemctl restart openvpnas