1
0
Fork 0
mirror of https://github.com/Ysurac/openmptcprouter-vps-admin.git synced 2025-02-14 11:31:52 +00:00

Add workers support

This commit is contained in:
Ycarus (Yannick Chabanois) 2024-07-30 19:29:02 +02:00
parent f4bf679620
commit 9e86294e41
2 changed files with 50 additions and 12 deletions

6
debian/changelog vendored
View file

@ -1,3 +1,9 @@
omr-vps-admin (0.12+20240725) unstable; urgency=medium
* Add server workers
-- OpenMPTCProuter <contact@openmptcprouter.com> Thu, 25 Jul 2024 08:26:12 +0200
omr-vps-admin (0.11+20240723) unstable; urgency=medium
* Remove netjson dependency and endpoint using it

View file

@ -163,6 +163,7 @@ def get_bytes_ss(port):
def get_bytes_ss_go(user):
try:
r = requests.get(url="http://127.0.0.1:65279/v1/servers/ss-2022/stats")
#r = requests.get(url="http://127.0.0.1:65279/api/ssm/v1/servers/ss-2022/stats")
except requests.exceptions.Timeout:
LOG.debug("Shadowsocks go stats timeout")
return { 'downlinkBytes': 0, 'uplinkBytes': 0 }
@ -372,6 +373,7 @@ def remove_ss_user(port):
def add_ss_go_user(user, key=''):
try:
r = requests.post(url="http://127.0.0.1:65279/v1/servers/ss-2022/users", json= {'username': user,'uPSK': key})
#r = requests.post(url="http://127.0.0.1:65279/api/ssm/v1/servers/ss-2022/users", json= {'username': user,'uPSK': key})
except requests.exceptions.Timeout:
LOG.debug("Shadowsocks go add timeout")
except requests.exceptions.RequestException as err:
@ -381,6 +383,7 @@ def add_ss_go_user(user, key=''):
def remove_ss_go_user(user):
try:
r = requests.delete(url="http://127.0.0.1:65279/v1/servers/ss-2022/users/" + user)
#r = requests.delete(url="http://127.0.0.1:65279/api/ssm/v1/servers/ss-2022/users/" + user)
except requests.exceptions.Timeout:
LOG.debug("Shadowsocks go remove timeout")
except requests.exceptions.RequestException as err:
@ -1236,6 +1239,10 @@ async def get_current_user(token: str = Depends(oauth2_scheme)):
token_data = TokenData(username=username)
except PyJWTError:
raise credentials_exception
with open('/etc/openmptcprouter-vps-admin/omr-admin-config.json') as f:
omr_config_data = json.load(f)
fake_users_db = omr_config_data['users'][0]
user = get_user(fake_users_db, username=token_data.username)
if user is None:
raise credentials_exception
@ -1255,6 +1262,10 @@ async def homepage():
# function is used to actually generate the token
@app.post('/token', response_model=Token)
async def login_for_access_token(form_data: OAuth2PasswordRequestForm = Depends()):
with open('/etc/openmptcprouter-vps-admin/omr-admin-config.json') as f:
omr_config_data = json.load(f)
fake_users_db = omr_config_data['users'][0]
user = authenticate_user(fake_users_db, form_data.username, form_data.password)
if not user:
LOG.debug("Incorrect username or password")
@ -1284,6 +1295,10 @@ async def login_basic(auth: BasicAuth = Depends(basic_auth)):
try:
decoded = base64.b64decode(auth).decode("ascii")
username, _, password = decoded.partition(":")
with open('/etc/openmptcprouter-vps-admin/omr-admin-config.json') as f:
omr_config_data = json.load(f)
fake_users_db = omr_config_data['users'][0]
user = authenticate_user(fake_users_db, username, password)
if not user:
raise HTTPException(status_code=400, detail="Incorrect email or password")
@ -3230,10 +3245,10 @@ def add_user(*, params: NewUser, current_user: User = Depends(get_current_user))
#set_lastchange(30)
#os.execv(__file__, sys.argv)
with open('/etc/openmptcprouter-vps-admin/omr-admin-config.json') as f:
global fake_users_db
omr_config_data = json.load(f)
fake_users_db = omr_config_data['users'][0]
#with open('/etc/openmptcprouter-vps-admin/omr-admin-config.json') as f:
# global fake_users_db
# omr_config_data = json.load(f)
# fake_users_db = omr_config_data['users'][0]
class ExistingUser(BaseModel):
username: str = Query(..., title="Username")
@ -3286,10 +3301,10 @@ def remove_user(*, params: RemoveUser, current_user: User = Depends(get_current_
remove_dsvpn(userid)
#set_lastchange(30)
#os.execv(__file__, sys.argv)
with open('/etc/openmptcprouter-vps-admin/omr-admin-config.json') as f:
global fake_users_db
omr_config_data = json.load(f)
fake_users_db = omr_config_data['users'][0]
#with open('/etc/openmptcprouter-vps-admin/omr-admin-config.json') as f:
# global fake_users_db
# omr_config_data = json.load(f)
# fake_users_db = omr_config_data['users'][0]
class ClienttoClient(BaseModel):
enable: bool = False
@ -3367,9 +3382,19 @@ async def speedtestul(file: UploadFile, current_user: User = Depends(get_current
else:
return {'filename': file.filename}
def main(omrport: int, omrhost: str):
def ipv6_enabled():
ipv6_enabled = False
addr = netifaces.ifaddresses('lo')
ipv4_addr_list = addrs[netifaces.AF_INET]
for ip_info in ipv4_addr_list:
addr = ip_info['addr']
if IPAddress(addr).version == 6:
ipv6_enabled = True
return ipv6_enabled
def main(omrport: int, omrhost: str, workers: int):
LOG.debug("Main OMR-Admin launch")
uvicorn.run(app, host=omrhost, port=omrport, log_level='error', ssl_certfile='/etc/openmptcprouter-vps-admin/cert.pem', ssl_keyfile='/etc/openmptcprouter-vps-admin/key.pem', ssl_version=5)
uvicorn.run("__main__:app", host=omrhost, port=omrport, log_level='error', ssl_certfile='/etc/openmptcprouter-vps-admin/cert.pem', ssl_keyfile='/etc/openmptcprouter-vps-admin/key.pem', ssl_version=5, workers=workers)
if __name__ == '__main__':
with open('/etc/openmptcprouter-vps-admin/omr-admin-config.json') as f:
@ -3377,12 +3402,19 @@ if __name__ == '__main__':
omrport = 65500
if 'port' in omr_config_data:
omrport = omr_config_data["port"]
omrhost = '0.0.0.0'
if ipv6_enabled:
omrhost = '::'
else:
omrhost = '0.0.0.0'
if 'host' in omr_config_data:
omrhost = omr_config_data["host"]
workers = 4
if 'workers' in omr_config_data:
workers = omr_config_data["workers"]
parser = argparse.ArgumentParser(description="OpenMPTCProuter Server API")
parser.add_argument("--port", type=int, help="Listening port", default=omrport)
parser.add_argument("--host", type=str, help="Listening host", default=omrhost)
parser.add_argument("--workers", type=str, help="Workers", default=workers)
args = parser.parse_args()
main(args.port, args.host)
main(args.port, args.host, args.workers)
#uvicorn.run("__main__:app", host=omrhost, port=omrport, log_level='error', ssl_certfile='/etc/openmptcprouter-vps-admin/cert.pem', ssl_keyfile='/etc/openmptcprouter-vps-admin/key.pem', ssl_version=5, workers=6)