Update UserPass Method

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

95
menu.sh
View File

@ -57,16 +57,27 @@ change_port() {
# Function to show URI if Hysteria2 is installed and active # Function to show URI if Hysteria2 is installed and active
show_uri() { show_uri() {
if [ -f "/etc/hysteria/config.json" ]; then 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) port=$(jq -r '.listen' /etc/hysteria/config.json | cut -d':' -f2)
sha256=$(jq -r '.tls.pinSHA256' /etc/hysteria/config.json) sha256=$(jq -r '.tls.pinSHA256' /etc/hysteria/config.json)
obfspassword=$(jq -r '.obfs.salamander.password' /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) IP=$(curl -s -4 ip.sb)
IP6=$(curl -s -6 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) cols=$(tput cols)
rows=$(tput lines) rows=$(tput lines)
@ -87,6 +98,11 @@ show_uri() {
echo echo
echo "IPv6: $URI6" echo "IPv6: $URI6"
echo echo
break
else
echo "Invalid selection. Please try again."
fi
done
else else
echo "Error: Hysteria2 is not active." echo "Error: Hysteria2 is not active."
fi fi
@ -95,7 +111,7 @@ show_uri() {
fi fi
} }
# Function to check traffic status # Function to check traffic status for each user
traffic_status() { traffic_status() {
green='\033[0;32m' green='\033[0;32m'
cyan='\033[0;36m' cyan='\033[0;36m'
@ -109,15 +125,34 @@ traffic_status() {
fi fi
response=$(curl -s -H "Authorization: $secret" http://127.0.0.1:25413/traffic) response=$(curl -s -H "Authorization: $secret" http://127.0.0.1:25413/traffic)
if [ -z "$response" ] || [ "$response" = "{}" ]; then if [ -z "$response" ] || [ "$response" = "{}" ]; then
echo -e "Upload (TX): ${green}0B${NC}" echo -e "No traffic data available."
echo -e "Download (RX): ${cyan}0B${NC}"
return return
fi fi
tx_bytes=$(echo "$response" | jq -r '.user.tx // 0') echo "Traffic status for each user:"
rx_bytes=$(echo "$response" | jq -r '.user.rx // 0') echo "-------------------------------------------------"
printf "%-15s %-15s %-15s\n" "User" "Upload (TX)" "Download (RX)"
echo "-------------------------------------------------"
# 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() { format_bytes() {
bytes=$1 bytes=$1
if [ "$bytes" -lt 1024 ]; then if [ "$bytes" -lt 1024 ]; then
@ -133,10 +168,6 @@ traffic_status() {
fi 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 # Function to uninstall Hysteria2
uninstall_hysteria() { uninstall_hysteria() {
echo "Uninstalling Hysteria2..." echo "Uninstalling Hysteria2..."
@ -240,29 +271,43 @@ configure_warp() {
echo "Error: Config file /etc/hysteria/config.json not found." echo "Error: Config file /etc/hysteria/config.json not found."
fi 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
hysteria2_menu() { hysteria2_menu() {
clear clear
echo "===== Hysteria2 Menu =====" echo "===== Hysteria2 Menu ====="
echo "1. Install and Configure" echo "1. Install and Configure"
echo "2. Update Core" echo "2. Add User"
echo "3. Change Port" echo "3. Show URI"
echo "4. Show URI" echo "4. Check Traffic Status"
echo "5. Check Traffic Status" echo "5. Change Port"
echo "6. Uninstall" echo "6. Update Core"
echo "7. Back to Main Menu" echo "7. Uninstall"
echo "8. Back to Main Menu"
echo "==========================" echo "=========================="
read -p "Enter your choice: " choice read -p "Enter your choice: " choice
case $choice in case $choice in
1) install_and_configure ;; 1) install_and_configure ;;
2) update_core ;; 2) add_user ;;
3) change_port ;; 3) show_uri ;;
4) show_uri ;; 4) traffic_status ;;
5) traffic_status ;; 5) change_port ;;
6) uninstall_hysteria ;; 6) update_core ;;
7) return ;; 7) uninstall_hysteria ;;
8) return ;;
*) echo "Invalid option. Please try again." ;; *) echo "Invalid option. Please try again." ;;
esac esac
read -p "Press any key to return to the Hysteria2 menu..." read -p "Press any key to return to the Hysteria2 menu..."