Add edit handler in menu.sh
This commit is contained in:
86
menu.sh
86
menu.sh
@ -74,15 +74,85 @@ hysteria2_change_port_handler() {
|
|||||||
python3 $CLI_PATH change-hysteria2-port --port "$port"
|
python3 $CLI_PATH change-hysteria2-port --port "$port"
|
||||||
}
|
}
|
||||||
|
|
||||||
# TODO check it out
|
hysteria2_edit_user() {
|
||||||
# Function to modify users
|
# Function to prompt for user input with validation
|
||||||
hysteria2_modify_users() {
|
prompt_for_input() {
|
||||||
modify_script="/etc/hysteria/users/modify.py"
|
local prompt_message="$1"
|
||||||
github_raw_url="https://raw.githubusercontent.com/ReturnFI/Hysteria2/main/modify.py"
|
local validation_regex="$2"
|
||||||
|
local default_value="$3"
|
||||||
|
local input_variable_name="$4"
|
||||||
|
|
||||||
[ -f "$modify_script" ] || wget "$github_raw_url" -O "$modify_script" >/dev/null 2>&1
|
while true; do
|
||||||
|
read -p "$prompt_message" input
|
||||||
|
if [[ -z "$input" ]]; then
|
||||||
|
input="$default_value"
|
||||||
|
fi
|
||||||
|
if [[ "$input" =~ $validation_regex ]]; then
|
||||||
|
eval "$input_variable_name='$input'"
|
||||||
|
break
|
||||||
|
else
|
||||||
|
echo -e "\033[0;31mError:\033[0m Invalid input. Please try again."
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
python3 "$modify_script"
|
# Prompt for username
|
||||||
|
prompt_for_input "Enter the username you want to edit: " '^[a-z0-9]+$' '' username
|
||||||
|
|
||||||
|
# Check if user exists
|
||||||
|
if ! python3 $CLI_PATH get-user --username "$username" > /dev/null 2>&1; then
|
||||||
|
echo -e "\033[0;31mError:\033[0m User '$username' not found."
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Prompt for new username
|
||||||
|
prompt_for_input "Enter the new username (leave empty to keep the current username): " '^[a-z0-9]*$' '' new_username
|
||||||
|
|
||||||
|
# Prompt for new traffic limit
|
||||||
|
prompt_for_input "Enter the new traffic limit (in GB) (leave empty to keep the current limit): " '^[0-9]*$' '' new_traffic_limit_GB
|
||||||
|
|
||||||
|
# Prompt for new expiration days
|
||||||
|
prompt_for_input "Enter the new expiration days (leave empty to keep the current expiration days): " '^[0-9]*$' '' new_expiration_days
|
||||||
|
|
||||||
|
# Prompt for renewing password
|
||||||
|
while true; do
|
||||||
|
read -p "Do you want to generate a new password? (y/n): " renew_password
|
||||||
|
case "$renew_password" in
|
||||||
|
y|Y) renew_password=true; break ;;
|
||||||
|
n|N) renew_password=false; break ;;
|
||||||
|
*) echo -e "\033[0;31mError:\033[0m Please answer 'y' or 'n'." ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
# Prompt for renewing creation date
|
||||||
|
while true; do
|
||||||
|
read -p "Do you want to generate a new creation date? (y/n): " renew_creation_date
|
||||||
|
case "$renew_creation_date" in
|
||||||
|
y|Y) renew_creation_date=true; break ;;
|
||||||
|
n|N) renew_creation_date=false; break ;;
|
||||||
|
*) echo -e "\033[0;31mError:\033[0m Please answer 'y' or 'n'." ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
# Prompt for blocking user
|
||||||
|
while true; do
|
||||||
|
read -p "Do you want to block the user? (y/n): " block_user
|
||||||
|
case "$block_user" in
|
||||||
|
y|Y) blocked=true; break ;;
|
||||||
|
n|N) blocked=false; break ;;
|
||||||
|
*) echo -e "\033[0;31mError:\033[0m Please answer 'y' or 'n'." ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
# Call the edit-user script with appropriate flags
|
||||||
|
python3 $CLI_PATH edit-user \
|
||||||
|
--username "$username" \
|
||||||
|
${new_username:+--new-username "$new_username"} \
|
||||||
|
${new_traffic_limit_GB:+--new-traffic-limit "$new_traffic_limit_GB"} \
|
||||||
|
${new_expiration_days:+--new-expiration-days "$new_expiration_days"} \
|
||||||
|
${renew_password:+--renew-password} \
|
||||||
|
${renew_creation_date:+--renew-creation-date} \
|
||||||
|
${blocked:+--blocked}
|
||||||
}
|
}
|
||||||
|
|
||||||
warp_configure_handler() {
|
warp_configure_handler() {
|
||||||
@ -165,7 +235,7 @@ hysteria2_menu() {
|
|||||||
case $choice in
|
case $choice in
|
||||||
1) hysteria2_install_handler ;;
|
1) hysteria2_install_handler ;;
|
||||||
2) hysteria2_add_user_handler ;;
|
2) hysteria2_add_user_handler ;;
|
||||||
3) hysteria2_modify_users ;;
|
3) hysteria2_edit_user ;;
|
||||||
4) hysteria2_show_user_uri_handler ;;
|
4) hysteria2_show_user_uri_handler ;;
|
||||||
5) python3 $CLI_PATH traffic-status ;;
|
5) python3 $CLI_PATH traffic-status ;;
|
||||||
6) hysteria2_remove_user_handler ;;
|
6) hysteria2_remove_user_handler ;;
|
||||||
|
|||||||
Reference in New Issue
Block a user