Implement get-webpanel-api-token command

This commit is contained in:
Iam54r1n4
2025-02-05 19:34:31 +00:00
parent 287253da0a
commit 82394d6b6c
3 changed files with 26 additions and 3 deletions

View File

@ -422,6 +422,15 @@ def get_web_panel_url():
click.echo(f'Hysteria web panel is now running. The service is accessible on: {url}')
except Exception as e:
click.echo(f'{e}', err=True)
@cli.command('get-webpanel-api-token')
def get_web_panel_api_token():
try:
token = cli_api.get_webpanel_api_token()
click.echo(f'WebPanel API token: {token}')
except Exception as e:
click.echo(f'{e}', err=True)
# endregion

View File

@ -3,6 +3,8 @@ import subprocess
from enum import Enum
from datetime import datetime
import json
from typing import Any
import traffic
DEBUG = False
@ -172,7 +174,7 @@ def disable_hysteria2_masquerade():
# region User
def list_users() -> dict | None:
def list_users() -> dict[str, dict[str, Any]] | None:
'''
Lists all users.
'''
@ -180,7 +182,7 @@ def list_users() -> dict | None:
return json.loads(res)
def get_user(username: str) -> dict | None:
def get_user(username: str) -> dict[str, Any] | None:
'''
Retrieves information about a specific user.
'''
@ -205,7 +207,7 @@ def edit_user(username: str, new_username: str | None, new_traffic_limit: int |
'''
if not username:
raise InvalidInputError('Error: username is required')
if not any([new_username, new_traffic_limit, new_expiration_days, renew_password, renew_creation_date, blocked is not None]):
if not any([new_username, new_traffic_limit, new_expiration_days, renew_password, renew_creation_date, blocked is not None]): # type: ignore
raise InvalidInputError('Error: at least one option is required')
if new_traffic_limit is not None and new_traffic_limit <= 0:
raise InvalidInputError('Error: traffic limit must be greater than 0')
@ -410,5 +412,9 @@ def stop_webpanel():
def get_webpanel_url():
return run_cmd(['bash', Command.SHELL_WEBPANEL.value, 'url'])
def get_webpanel_api_token():
return run_cmd(['bash', Command.SHELL_WEBPANEL.value, 'api-token'])
# endregion
# endregion

View File

@ -169,6 +169,11 @@ show_webpanel_url() {
echo "$webpanel_url"
}
show_webpanel_api_token() {
source /etc/hysteria/core/scripts/webpanel/.env
echo "$API_TOKEN"
}
stop_service() {
echo "Stopping Caddy..."
systemctl disable caddy.service
@ -195,6 +200,9 @@ case "$1" in
url)
show_webpanel_url
;;
api-token)
show_webpanel_api_token
;;
*)
echo -e "${red}Usage: $0 {start|stop} <DOMAIN> <PORT> ${NC}"
exit 1