Update UserPass Method

This commit is contained in:
H-Return
2024-06-05 20:48:10 +00:00
parent 6d36fbef8a
commit 85944c2e7b

97
menu.sh
View File

@ -57,16 +57,27 @@ change_port() {
# Function to show URI if Hysteria2 is installed and active
show_uri() {
if [ -f "/etc/hysteria/config.json" ]; then
if systemctl is-active --quiet hysteria-server.service; then
# Get the list of configured usernames
usernames=$(jq -r '.auth.userpass | keys_unsorted[]' /etc/hysteria/config.json)
# Prompt the user to select a username
PS3="Select a username: "
select username in $usernames; do
if [ -n "$username" ]; then
# Get the selected user's password and other required parameters
authpassword=$(jq -r ".auth.userpass[\"$username\"]" /etc/hysteria/config.json)
port=$(jq -r '.listen' /etc/hysteria/config.json | cut -d':' -f2)
sha256=$(jq -r '.tls.pinSHA256' /etc/hysteria/config.json)
obfspassword=$(jq -r '.obfs.salamander.password' /etc/hysteria/config.json)
authpassword=$(jq -r '.auth.userpass.default' /etc/hysteria/config.json)
if systemctl is-active --quiet hysteria-server.service; then
# Get IP addresses
IP=$(curl -s -4 ip.sb)
IP6=$(curl -s -6 ip.sb)
URI="hy2://default:$authpassword@$IP:$port?obfs=salamander&obfs-password=$obfspassword&pinSHA256=$sha256&insecure=1&sni=bts.com#Hysteria2-IPv4"
URI6="hy2://:default$authpassword@[$IP6]:$port?obfs=salamander&obfs-password=$obfspassword&pinSHA256=$sha256&insecure=1&sni=bts.com#Hysteria2-IPv6"
# Construct URI
URI="hy2://$username:$authpassword@$IP:$port?obfs=salamander&obfs-password=$obfspassword&pinSHA256=$sha256&insecure=1&sni=bts.com#Hysteria2-IPv4"
URI6="hy2://$username:$authpassword@[$IP6]:$port?obfs=salamander&obfs-password=$obfspassword&pinSHA256=$sha256&insecure=1&sni=bts.com#Hysteria2-IPv6"
cols=$(tput cols)
rows=$(tput lines)
@ -87,6 +98,11 @@ show_uri() {
echo
echo "IPv6: $URI6"
echo
break
else
echo "Invalid selection. Please try again."
fi
done
else
echo "Error: Hysteria2 is not active."
fi
@ -95,7 +111,7 @@ show_uri() {
fi
}
# Function to check traffic status
# Function to check traffic status for each user
traffic_status() {
green='\033[0;32m'
cyan='\033[0;36m'
@ -109,16 +125,35 @@ traffic_status() {
fi
response=$(curl -s -H "Authorization: $secret" http://127.0.0.1:25413/traffic)
if [ -z "$response" ] || [ "$response" = "{}" ]; then
echo -e "Upload (TX): ${green}0B${NC}"
echo -e "Download (RX): ${cyan}0B${NC}"
echo -e "No traffic data available."
return
fi
tx_bytes=$(echo "$response" | jq -r '.user.tx // 0')
rx_bytes=$(echo "$response" | jq -r '.user.rx // 0')
echo "Traffic status for each user:"
echo "-------------------------------------------------"
printf "%-15s %-15s %-15s\n" "User" "Upload (TX)" "Download (RX)"
echo "-------------------------------------------------"
format_bytes() {
# Iterate over each user in the response
users=$(echo "$response" | jq -r 'keys[]')
for user in $users; do
tx_bytes=$(echo "$response" | jq -r ".[\"$user\"].tx // 0")
rx_bytes=$(echo "$response" | jq -r ".[\"$user\"].rx // 0")
# Format the bytes into human-readable format
formatted_tx=$(format_bytes "$tx_bytes")
formatted_rx=$(format_bytes "$rx_bytes")
# Print user traffic information with color formatting
printf "%-15s ${green}%-15s${NC} ${cyan}%-15s${NC}\n" "$user" "$formatted_tx" "$formatted_rx"
echo "-------------------------------------------------"
done
}
# Helper function to format bytes into human-readable format
format_bytes() {
bytes=$1
if [ "$bytes" -lt 1024 ]; then
echo "${bytes}B"
@ -131,10 +166,6 @@ traffic_status() {
else
echo "$(bc <<< "scale=2; $bytes / 1099511627776")TB"
fi
}
echo -e "Upload (TX): ${green}$(format_bytes "$tx_bytes")${NC}"
echo -e "Download (RX): ${cyan}$(format_bytes "$rx_bytes")${NC}"
}
# Function to uninstall Hysteria2
@ -240,29 +271,43 @@ configure_warp() {
echo "Error: Config file /etc/hysteria/config.json not found."
fi
}
# Function to add a new user to the configuration
add_user() {
if [ -f "/etc/hysteria/config.json" ]; then
read -p "Enter the username: " username
password=$(curl -s "https://api.genratr.com/?length=32&uppercase&lowercase&numbers" | jq -r '.password')
jq --arg username "$username" --arg password "$password" '.auth.userpass[$username] = $password' /etc/hysteria/config.json > /etc/hysteria/config_temp.json && mv /etc/hysteria/config_temp.json /etc/hysteria/config.json
systemctl restart hysteria-server.service >/dev/null 2>&1
echo "User $username added successfully."
else
echo "Error: Config file /etc/hysteria/config.json not found."
fi
}
# Hysteria2 menu
hysteria2_menu() {
clear
echo "===== Hysteria2 Menu ====="
echo "1. Install and Configure"
echo "2. Update Core"
echo "3. Change Port"
echo "4. Show URI"
echo "5. Check Traffic Status"
echo "6. Uninstall"
echo "7. Back to Main Menu"
echo "2. Add User"
echo "3. Show URI"
echo "4. Check Traffic Status"
echo "5. Change Port"
echo "6. Update Core"
echo "7. Uninstall"
echo "8. Back to Main Menu"
echo "=========================="
read -p "Enter your choice: " choice
case $choice in
1) install_and_configure ;;
2) update_core ;;
3) change_port ;;
4) show_uri ;;
5) traffic_status ;;
6) uninstall_hysteria ;;
7) return ;;
2) add_user ;;
3) show_uri ;;
4) traffic_status ;;
5) change_port ;;
6) update_core ;;
7) uninstall_hysteria ;;
8) return ;;
*) echo "Invalid option. Please try again." ;;
esac
read -p "Press any key to return to the Hysteria2 menu..."