641 lines
24 KiB
Bash
641 lines
24 KiB
Bash
|
|
#By @drowkid01|Plus
|
|||
|
|
clear&&clear
|
|||
|
|
|
|||
|
|
#[[ -e /bin/ejecutar/msg ]] && source /bin/ejecutar/msg > /dev/null || source <(curl -sSL https://gitea.com/drowkid01/scriptdk1/raw/branch/main/msg-bar/msg) > /dev/null
|
|||
|
|
source msg
|
|||
|
|
|
|||
|
|
|
|||
|
|
RED="\033[31m"
|
|||
|
|
GREEN="\033[32m"
|
|||
|
|
YELLOW="\033[33m"
|
|||
|
|
PLAIN="\033[0m"
|
|||
|
|
|
|||
|
|
APP_IMPORT_GUIDE=" Open 'HTTP Injector' \n app -> Tunnel Type set 'Hysteria' -> \n Settings -> Hysteria -> \n Pegue el URI de configuraci<63>n de Hysteria2 para importar \n "
|
|||
|
|
|
|||
|
|
ip=$(mip) || ip=$(curl -s4m8 ip.sb -k)
|
|||
|
|
|
|||
|
|
red(){
|
|||
|
|
echo -e "\033[31m\033[01m$1\033[0m"
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
green(){
|
|||
|
|
echo -e "\033[32m\033[01m$1\033[0m"
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
yellow(){
|
|||
|
|
echo -e "\033[33m\033[01m$1\033[0m"
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
starthysteria(){
|
|||
|
|
systemctl start hysteria-server &>/dev/null
|
|||
|
|
systemctl enable hysteria-server &>/dev/null 2>&1
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
stophysteria(){
|
|||
|
|
systemctl stop hysteria-server &>/dev/null
|
|||
|
|
systemctl disable hysteria-server &>/dev/null 2>&1
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
showConf(){
|
|||
|
|
#yellow "Hysteria 2 client YML configuration file hy-client.yaml is as follows and saved to /root/hy/hy-client.yaml"
|
|||
|
|
#red "$(cat /root/hy/hy-client.yaml)"
|
|||
|
|
#yellow "Hysteria 2 client JSON configuration file hy-client.json is as follows and saved to /root/hy/hy-client.json"
|
|||
|
|
#red "$(cat /root/hy/hy-client.json)"
|
|||
|
|
green "$APP_IMPORT_GUIDE"
|
|||
|
|
yellow "Hysteria 2 config URI (with port hop) is as follows and saved to /root/hy/url.txt"
|
|||
|
|
red "$(cat /root/hy/url.txt)"
|
|||
|
|
yellow "Hysteria 2 config URI (without port hop) is as follows and saved to /root/hy/url-nohop.txt"
|
|||
|
|
red "$(cat /root/hy/url-nohop.txt)"
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
inst_port(){
|
|||
|
|
iptables -t nat -F PREROUTING &>/dev/null 2>&1
|
|||
|
|
msg -bar3
|
|||
|
|
echo -e "Configure el puerto Hysteria2 entre [1-65535] "
|
|||
|
|
read -p " (Enter para puerto aleatorio) : " port
|
|||
|
|
[[ -z $port ]] && port=$(shuf -i 2000-65535 -n 1)
|
|||
|
|
until [[ -z $(ss -tunlp | grep -w udp | awk '{print $5}' | sed 's/.*://g' | grep -w "$port") ]]; do
|
|||
|
|
if [[ -n $(ss -tunlp | grep -w udp | awk '{print $5}' | sed 's/.*://g' | grep -w "$port") ]]; then
|
|||
|
|
echo -e "${RED} $port ${PLAIN} El puerto ya est<73> ocupado por otro programa, <20>cambie el puerto e int<6E>ntelo de nuevo! "
|
|||
|
|
echo -e "Configure el puerto Hysteria2 entre [1-65535] "
|
|||
|
|
read -p " (Enter para puerto aleatorio) : " port
|
|||
|
|
[[ -z $port ]] && port=$(shuf -i 2000-65535 -n 1)
|
|||
|
|
fi
|
|||
|
|
done
|
|||
|
|
inst_jump
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
inst_jump(){
|
|||
|
|
green "El modo de uso del puerto Hysteria 2 es el siguiente:"
|
|||
|
|
echo ""
|
|||
|
|
echo -e " ${GREEN}1.${PLAIN} Puerto Unico ${YELLOW}410default411${PLAIN}"
|
|||
|
|
echo -e " ${GREEN}2.${PLAIN} Puerto RANGOS/RAMDOM (INICIO-FIN )"
|
|||
|
|
echo ""
|
|||
|
|
read -rp "Escoge [1-2]: " jumpInput
|
|||
|
|
if [[ $jumpInput == 2 ]]; then
|
|||
|
|
read -p "Configure el puerto de inicio del puerto de rango (recomendado entre 10000-65535):" firstport
|
|||
|
|
read -p "Configure el puerto final de un puerto de rango (recomendado entre 10000-65535, debe ser m<>s grande que el puerto de inicio anterior):" endport
|
|||
|
|
if [[ $firstport -ge $endport ]]; then
|
|||
|
|
until [[ $firstport -le $endport ]]; do
|
|||
|
|
if [[ $firstport -ge $endport ]]; then
|
|||
|
|
red "El puerto de inicio que configur<75> es menor que el puerto final; vuelva a ingresar el puerto inicial y final"
|
|||
|
|
read -p "Configure el puerto de inicio del puerto de rango (recomendado entre 10000-65535): " firstport
|
|||
|
|
read -p ":" endport
|
|||
|
|
fi
|
|||
|
|
done
|
|||
|
|
fi
|
|||
|
|
iptables -t nat -A PREROUTING -p udp --dport $firstport:$endport -j DNAT --to-destination :$port
|
|||
|
|
ip6tables -t nat -A PREROUTING -p udp --dport $firstport:$endport -j DNAT --to-destination :$port
|
|||
|
|
netfilter-persistent save &>/dev/null 2>&1
|
|||
|
|
else
|
|||
|
|
red " DEFAULD MODO UNICO PUERTO"
|
|||
|
|
fi
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
install_bin(){
|
|||
|
|
clear&&clear
|
|||
|
|
msg -bar3
|
|||
|
|
NAME=hysteria
|
|||
|
|
VERSION=$(curl -fsSL https://api.github.com/repos/apernet/hysteria/releases/latest | grep -w tag_name |sed -e 's/[^v.0-9 -]//ig'| tr -d '[:space:]')
|
|||
|
|
[[ $(uname -m 2> /dev/null) != x86_64 ]] && TARBALL="$NAME-linux-arm64" || TARBALL="$NAME-linux-amd64"
|
|||
|
|
msg -nama " Descargando Modulo ${VERSION}.(Evozi)."
|
|||
|
|
if wget -O /bin/Hysteria2 https://github.com/apernet/hysteria/releases/download/app/${VERSION}/${TARBALL} &>/dev/null ; then
|
|||
|
|
chmod +x /bin/Hysteria2
|
|||
|
|
msg -verd ' OK'
|
|||
|
|
else
|
|||
|
|
msg -verm2 ' FAIL '
|
|||
|
|
rm -f /bin/Hysteria2
|
|||
|
|
fi
|
|||
|
|
echo "
|
|||
|
|
[Unit]
|
|||
|
|
Description=Hysteria2 Server Service ChumoGH
|
|||
|
|
After=network.target
|
|||
|
|
|
|||
|
|
[Service]
|
|||
|
|
Type=simple
|
|||
|
|
ExecStart=/bin/Hysteria2 server --config /etc/adm-lite/HYSTERIA/config.yaml
|
|||
|
|
WorkingDirectory=~
|
|||
|
|
User=root
|
|||
|
|
Group=root
|
|||
|
|
Environment=HYSTERIA_LOG_LEVEL=info
|
|||
|
|
CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_BIND_SERVICE CAP_NET_RAW
|
|||
|
|
AmbientCapabilities=CAP_NET_ADMIN CAP_NET_BIND_SERVICE CAP_NET_RAW
|
|||
|
|
NoNewPrivileges=true
|
|||
|
|
|
|||
|
|
[Install]
|
|||
|
|
WantedBy=multi-user.target
|
|||
|
|
" > /hysteria-server.service
|
|||
|
|
chmod +x /hysteria-server.service
|
|||
|
|
install -Dm644 /hysteria-server.service /etc/systemd/system
|
|||
|
|
#systemctl disable hysteria-server.service &>/dev/null
|
|||
|
|
#systemctl start hysteria-server.service &>/dev/null
|
|||
|
|
#systemctl enable hysteria-server.service &>/dev/null
|
|||
|
|
#rm -f /hysteria-server.service
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
inst_pwd(){
|
|||
|
|
read -p "Establecer contrase<73>a de Hysteria2 (ingrese para obtener una contrase<73>a aleatoria): " auth_pwd
|
|||
|
|
[[ -z $auth_pwd ]] && auth_pwd=$(date +%s%N | md5sum | cut -c 1-8)
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
inst_site(){
|
|||
|
|
msg -bar3
|
|||
|
|
echo -e "INGRESA SU SNI ( HOST FAKE ) "
|
|||
|
|
msg -bar3
|
|||
|
|
echo -e "Ingrese su Sitio WEB Falso A Hysteria 2 (elimine https://) "
|
|||
|
|
read -rp " [Default : plus.admcgh.online]: " proxysite
|
|||
|
|
[[ -z $proxysite ]] && proxysite='plus.admcgh.online'
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
inst_cert(){
|
|||
|
|
msg -bar3
|
|||
|
|
echo -ne " Ingresa Tu Dominio Enlazado a este IP ( Omite con Enter ) :"
|
|||
|
|
read -p " " domainH2
|
|||
|
|
[[ -z ${domainH2} ]] && domainH2='Hysteria2'
|
|||
|
|
cert_path="/etc/hysteria/cert.crt"
|
|||
|
|
key_path="/etc/hysteria/private.key"
|
|||
|
|
openssl ecparam -genkey -name prime256v1 -out /etc/hysteria/private.key
|
|||
|
|
openssl req -new -x509 -days 36500 -key /etc/hysteria/private.key -out /etc/hysteria/cert.crt -subj "/CN=${domainH2}"
|
|||
|
|
chmod 777 /etc/hysteria/cert.crt
|
|||
|
|
chmod 777 /etc/hysteria/private.key
|
|||
|
|
hy_domain=$domainH2
|
|||
|
|
domain=$domainH2
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
_hysteria2(){
|
|||
|
|
[[ -d /etc/hysteria ]] || mkdir /etc/hysteria
|
|||
|
|
[[ -d /etc/adm-lite/HYSTERIA ]] || mkdir /etc/adm-lite/HYSTERIA/
|
|||
|
|
install_bin
|
|||
|
|
clear&&clear
|
|||
|
|
# Ask user for Hysteria configuration
|
|||
|
|
inst_cert
|
|||
|
|
clear&&clear
|
|||
|
|
inst_port
|
|||
|
|
clear&&clear
|
|||
|
|
inst_pwd
|
|||
|
|
clear&&clear
|
|||
|
|
inst_site
|
|||
|
|
clear&&clear
|
|||
|
|
# Set up the Hysteria configuration file
|
|||
|
|
#cat << EOF > /etc/hysteria/config.yaml
|
|||
|
|
cat << EOF > /etc/adm-lite/HYSTERIA/config.yaml
|
|||
|
|
listen: :$port
|
|||
|
|
|
|||
|
|
tls:
|
|||
|
|
cert: $cert_path
|
|||
|
|
key: $key_path
|
|||
|
|
|
|||
|
|
obfs:
|
|||
|
|
type: salamander
|
|||
|
|
salamander:
|
|||
|
|
password: $auth_pwd
|
|||
|
|
|
|||
|
|
quic:
|
|||
|
|
initStreamReceiveWindow: 16777216
|
|||
|
|
maxStreamReceiveWindow: 16777216
|
|||
|
|
initConnReceiveWindow: 33554432
|
|||
|
|
maxConnReceiveWindow: 33554432
|
|||
|
|
|
|||
|
|
auth:
|
|||
|
|
type: password
|
|||
|
|
password: $auth_pwd
|
|||
|
|
|
|||
|
|
masquerade:
|
|||
|
|
type: proxy
|
|||
|
|
proxy:
|
|||
|
|
url: https://$proxysite
|
|||
|
|
rewriteHost: true
|
|||
|
|
EOF
|
|||
|
|
|
|||
|
|
# Determine the final inbound port range
|
|||
|
|
if [[ -n $firstport ]]; then
|
|||
|
|
last_port="$port,$firstport-$endport"
|
|||
|
|
else
|
|||
|
|
last_port=$port
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
# Add brackets to the IPv6 address
|
|||
|
|
if [[ -n $(echo $ip | grep ":") ]]; then
|
|||
|
|
last_ip="[$ip]"
|
|||
|
|
else
|
|||
|
|
last_ip=$ip
|
|||
|
|
fi
|
|||
|
|
|
|||
|
|
mkdir /root/hy
|
|||
|
|
cat << EOF > /root/hy/hy-client.yaml
|
|||
|
|
server: $ip:$last_port
|
|||
|
|
|
|||
|
|
auth: $auth_pwd
|
|||
|
|
|
|||
|
|
tls:
|
|||
|
|
sni: $hy_domain
|
|||
|
|
insecure: true
|
|||
|
|
|
|||
|
|
obfs: $auth_pwd
|
|||
|
|
|
|||
|
|
quic:
|
|||
|
|
initStreamReceiveWindow: 16777216
|
|||
|
|
maxStreamReceiveWindow: 16777216
|
|||
|
|
initConnReceiveWindow: 33554432
|
|||
|
|
maxConnReceiveWindow: 33554432
|
|||
|
|
|
|||
|
|
fastOpen: true
|
|||
|
|
|
|||
|
|
socks5:
|
|||
|
|
listen: 127.0.0.1:5080
|
|||
|
|
|
|||
|
|
transport:
|
|||
|
|
udp:
|
|||
|
|
hopInterval: 30s
|
|||
|
|
EOF
|
|||
|
|
cat << EOF > /root/hy/hy-client.json
|
|||
|
|
{
|
|||
|
|
"server": "$ip:$last_port",
|
|||
|
|
"auth": "$auth_pwd",
|
|||
|
|
"tls": {
|
|||
|
|
"sni": "$hy_domain",
|
|||
|
|
"insecure": true
|
|||
|
|
},
|
|||
|
|
"obfs": "$auth_pwd",
|
|||
|
|
"quic": {
|
|||
|
|
"initStreamReceiveWindow": 16777216,
|
|||
|
|
"maxStreamReceiveWindow": 16777216,
|
|||
|
|
"initConnReceiveWindow": 33554432,
|
|||
|
|
"maxConnReceiveWindow": 33554432
|
|||
|
|
},
|
|||
|
|
"fastOpen": true,
|
|||
|
|
"socks5": {
|
|||
|
|
"listen": "127.0.0.1:5080"
|
|||
|
|
},
|
|||
|
|
"transport": {
|
|||
|
|
"udp": {
|
|||
|
|
"hopInterval": "30s"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
EOF
|
|||
|
|
echo " IP : $(mip)" > /etc/adm-lite/HYSTERIA/data.yaml
|
|||
|
|
echo " DOMINIO : ${domainH2}" >> /etc/adm-lite/HYSTERIA/data.yaml
|
|||
|
|
echo " Authentication : ${auth_pwd}" >> /etc/adm-lite/HYSTERIA/data.yaml
|
|||
|
|
echo " PUERTO : ${port}" >> /etc/adm-lite/HYSTERIA/data.yaml
|
|||
|
|
echo " SNI : ${proxysite}" >> /etc/adm-lite/HYSTERIA/data.yaml
|
|||
|
|
echo " RANGO DE PUERTOS : 10000:65000" >> /etc/adm-lite/HYSTERIA/data.yaml
|
|||
|
|
echo -e " \n Power By @drowkid01" >> /etc/adm-lite/HYSTERIA/data.yaml
|
|||
|
|
url="hy2://$auth_pwd@$ip:$last_port/?insecure=1&sni=$hy_domain&obfs=salamander&obfs-password=$auth_pwd#HttpInjector-hysteria2"
|
|||
|
|
echo $url > /root/hy/url.txt
|
|||
|
|
nohopurl="hy2://$auth_pwd@$ip:$port/?insecure=1&sni=$hy_domain&obfs=salamander&obfs-password=$auth_pwd#HttpInjector-hysteria2"
|
|||
|
|
echo $nohopurl > /root/hy/url-nohop.txt
|
|||
|
|
systemctl daemon-reload &>/dev/null
|
|||
|
|
systemctl enable hysteria-server &>/dev/null
|
|||
|
|
systemctl start hysteria-server &>/dev/null
|
|||
|
|
if [[ -n $(systemctl status hysteria-server 2>/dev/null | grep -w active) && -f '/etc/adm-lite/HYSTERIA/config.yaml' ]]; then
|
|||
|
|
green " Servicio Hysteria2 Iniciado Exitosamente"
|
|||
|
|
else
|
|||
|
|
red "ERROR, NO SE PUDO EJECUTAR EL SERVICIO DE HYSTERIA2 , \n\nEjecute systemctl status hysteria-server para ver el estado del servicio"
|
|||
|
|
fi
|
|||
|
|
#yellow "Hysteria 2 client YML configuration file hy-client.yaml is as follows and saved to /root/hy/hy-client.yaml"
|
|||
|
|
#red "$(cat /root/hy/hy-client.yaml)"
|
|||
|
|
#yellow "Hysteria 2 client JSON configuration file hy-client.json is as follows and saved to /root/hy/hy-client.json"
|
|||
|
|
#red "$(cat /root/hy/hy-client.json)"
|
|||
|
|
msg -bar3
|
|||
|
|
cat /etc/adm-lite/HYSTERIA/data.yaml
|
|||
|
|
msg -bar3
|
|||
|
|
green "$APP_IMPORT_GUIDE"
|
|||
|
|
yellow "El URI de configuraci<63>n de Hysteria 2 (con salto de puerto) "
|
|||
|
|
red "$(cat /root/hy/url.txt)"
|
|||
|
|
yellow "El URI de configuraci<63>n de Hysteria 2 (sin salto de puerto) "
|
|||
|
|
red "$(cat /root/hy/url-nohop.txt)"
|
|||
|
|
read -p "$(green "Hysteria 2 Modulos UDP By @drowkid01 Finalizado ") "
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
_hysteria(){
|
|||
|
|
clear&&clear
|
|||
|
|
[[ ! -d /etc/adm-lite/HYSTERIA ]] && mkdir /etc/adm-lite/HYSTERIA
|
|||
|
|
NAME=hysteria
|
|||
|
|
#VERSION=$(curl -fsSL https://api.github.com/repos/HyNetwork/hysteria/releases/latest | grep tag_name | sed -E 's/.*"v(.*)".*/\1/')
|
|||
|
|
VERSION=$(curl -fsSL https://api.github.com/repos/HyNetwork/hysteria/releases/latest | grep -w tag_name |sed -e 's/[^v.0-9 -]//ig'| tr -d '[:space:]')
|
|||
|
|
[[ $(uname -m 2> /dev/null) != x86_64 ]] && TARBALL="$NAME-linux-arm64" || TARBALL="$NAME-linux-amd64"
|
|||
|
|
interfas="$(ip -4 route ls|grep default|grep -Po '(?<=dev )(\S+)'|head -1)"
|
|||
|
|
#https://github.com/apernet/hysteria/releases/download/app%2Fv2.0.2/hysteria-linux-amd64
|
|||
|
|
|
|||
|
|
sys="$(which sysctl)"
|
|||
|
|
|
|||
|
|
ip4t=$(which iptables)
|
|||
|
|
ip6t=$(which ip6tables)
|
|||
|
|
|
|||
|
|
#OBFS=$(head /dev/urandom | tr -dc 'a-zA-Z0-9' | head -c 10)
|
|||
|
|
OBFS='ADMcghPLUS'
|
|||
|
|
|
|||
|
|
msg -nama ' INGRESA TU SUBDOMINIO/DOMINIO \n'
|
|||
|
|
#msg -nama ' Prederteminado ( ENTER )\n'
|
|||
|
|
read -p " DOMAIN : " domain
|
|||
|
|
sleep 4s
|
|||
|
|
del 1
|
|||
|
|
msg -nama " COMPIANDO CERTIFICADO SSL (UDP). . . . "
|
|||
|
|
[[ -e /etc/adm-lite/HYSTERIA/udpmod.ca.key && -e /etc/adm-lite/HYSTERIA/udpmod.server.crt ]] && {
|
|||
|
|
msg -verd ' OK'
|
|||
|
|
} || {
|
|||
|
|
#(
|
|||
|
|
#openssl genrsa -out /etc/adm-lite/HYSTERIA/udpmod.ca.key 2048 2048
|
|||
|
|
#openssl req -new -x509 -days 3650 -key /etc/adm-lite/HYSTERIA/udpmod.ca.key -subj "/C=CN/ST=GD/L=SZ/O=ChumoGH, Inc./CN=ChumoGH Root CA" -out /etc/adm-lite/HYSTERIA/udpmod.ca.crt
|
|||
|
|
#openssl req -newkey rsa:2048 -nodes -keyout /etc/adm-lite/HYSTERIA/udp.server.key -subj "/C=CN/ST=GD/L=SZ/O=ChumoGH, Inc./CN=${domain}" -out /etc/adm-lite/HYSTERIA/udpmod.server.csr
|
|||
|
|
#openssl x509 -req -extfile <(printf "subjectAltName=DNS:${domain},DNS:${domain}") -days 3650 -in /etc/adm-lite/HYSTERIA/udpmod.server.csr -CA /etc/adm-lite/HYSTERIA/udpmod.ca.crt -CAkey /etc/adm-lite/HYSTERIA/udpmod.ca.key -CAcreateserial -out /etc/adm-lite/HYSTERIA/udp.server.crt
|
|||
|
|
#
|
|||
|
|
(openssl genpkey -algorithm RSA -out /etc/adm-lite/HYSTERIA/udpmod.ca.key
|
|||
|
|
openssl req -x509 -new -nodes -key /etc/adm-lite/HYSTERIA/udpmod.ca.key -days 3650 -out /etc/adm-lite/HYSTERIA/udpmod.ca.crt -subj "/C=CN/ST=GD/L=SZ/O=ChumoGH, Inc./CN=ChumoGH Root CA"
|
|||
|
|
openssl req -newkey rsa:2048 -nodes -keyout /etc/adm-lite/HYSTERIA/udp.server.key -subj "/C=CN/ST=GD/L=SZ/O=ChumoGH, Inc./CN=${domain}" -out /etc/adm-lite/HYSTERIA/udpmod.server.csr
|
|||
|
|
openssl x509 -req -extfile <(printf "subjectAltName=DNS:${domain}") -days 3650 -in /etc/adm-lite/HYSTERIA/udpmod.server.csr -CA /etc/adm-lite/HYSTERIA/udpmod.ca.crt -CAkey /etc/adm-lite/HYSTERIA/udpmod.ca.key -CAcreateserial -out /etc/adm-lite/HYSTERIA/udp.server.crt
|
|||
|
|
) &>/dev/null && msg -verd ' OK'
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
del 1
|
|||
|
|
[[ -e /etc/adm-lite/HYSTERIA/udp.server.crt ]] && chmod +x /etc/adm-lite/HYSTERIA/udp.server.crt
|
|||
|
|
[[ -e /etc/adm-lite/HYSTERIA/udp.server.key ]] && chmod +x /etc/adm-lite/HYSTERIA/udp.server.key
|
|||
|
|
msg -nama " Descargando BINARIO v${VERSION}.(FAKE). "
|
|||
|
|
#if wget -O /bin/hysteria https://github.com/apernet/hysteria/releases/download/app%2F${VERSION}/${TARBALL} &>/dev/null ; then
|
|||
|
|
if wget -O /bin/hysteria https://github.com/apernet/hysteria/releases/download/v1.3.5/${TARBALL} &>/dev/null ; then
|
|||
|
|
chmod +x /bin/hysteria
|
|||
|
|
msg -verd ' OK'
|
|||
|
|
else
|
|||
|
|
msg -verm2 ' FAIL '
|
|||
|
|
rm -f /bin/hysteria
|
|||
|
|
fi
|
|||
|
|
sleep 4s && del 1
|
|||
|
|
msg -nama ' Descargando Motor JSON . . . . '
|
|||
|
|
if wget -O /etc/adm-lite/HYSTERIA/config.json https://gitea.com/drowkid01/scriptdk1/raw/branch/main/Recursos/menu_inst/UDPserver-sh/config.json &>/dev/null ; then
|
|||
|
|
chmod +x /etc/adm-lite/HYSTERIA/config.json
|
|||
|
|
sed -i "s/setobfs/${OBFS}/" /etc/adm-lite/HYSTERIA/config.json
|
|||
|
|
msg -verd ' OK'
|
|||
|
|
else
|
|||
|
|
msg -verm2 ' FAIL '
|
|||
|
|
rm -rf /etc/adm-lite/HYSTERIA/config.json
|
|||
|
|
fi
|
|||
|
|
sleep 4s && del 1
|
|||
|
|
msg -nama ' COMPILANDO GoLang AUTHSSH '
|
|||
|
|
#if wget -O /bin/authSSH https://raw.githubusercontent.com/ChumoGH/ADMcgh/main/Plugins/authSSH &>/dev/null ; then
|
|||
|
|
if wget -O /bin/authSSH https://gitea.com/drowkid01/scriptdk1/raw/branch/main/Recursos/menu_inst/UDPserver-sh/authSSH &>/dev/null ; then
|
|||
|
|
chmod +x /bin/authSSH
|
|||
|
|
msg -verd ' OK'
|
|||
|
|
else
|
|||
|
|
msg -verm2 ' FAIL '
|
|||
|
|
rm -rf /bin/authSSH
|
|||
|
|
fi
|
|||
|
|
sleep 4s && del 1
|
|||
|
|
msg -nama ' COMPILANDO BINARIO DE SYSTEMA . . . . '
|
|||
|
|
if wget -O /etc/adm-lite/HYSTERIA/hysteria.service https://gitea.com/drowkid01/scriptdk1/raw/branch/main/Recursos/menu_inst/UDPserver-sh/hysteria.service &>/dev/null ; then
|
|||
|
|
chmod +x /etc/adm-lite/HYSTERIA/hysteria.service
|
|||
|
|
systemctl disable hysteria.service &>/dev/null
|
|||
|
|
#rm -f /etc/systemd/system/hysteria.service
|
|||
|
|
|
|||
|
|
msg -verd ' OK'
|
|||
|
|
else
|
|||
|
|
msg -verm2 ' FAIL '
|
|||
|
|
rm -f /etc/adm-lite/HYSTERIA/hysteria.service
|
|||
|
|
fi
|
|||
|
|
sleep 4s && del 1
|
|||
|
|
sed -i "s%sysb%${sys}%g" /etc/adm-lite/HYSTERIA/hysteria.service
|
|||
|
|
sed -i "s%ip4tbin%${ip4t}%g" /etc/adm-lite/HYSTERIA/hysteria.service
|
|||
|
|
sed -i "s%ip6tbin%${ip6t}%g" /etc/adm-lite/HYSTERIA/hysteria.service
|
|||
|
|
sed -i "s%iptb%${interfas}%g" /etc/adm-lite/HYSTERIA/hysteria.service
|
|||
|
|
|
|||
|
|
install -Dm644 /etc/adm-lite/HYSTERIA/hysteria.service /etc/systemd/system
|
|||
|
|
|
|||
|
|
systemctl start hysteria &>/dev/null
|
|||
|
|
systemctl enable hysteria &>/dev/null
|
|||
|
|
rm -f /etc/adm-lite/HYSTERIA/hysteria.service /etc/adm-lite/HYSTERIA/udpmod*
|
|||
|
|
echo " IP : $(mip)" > /etc/adm-lite/HYSTERIA/data
|
|||
|
|
echo " DOMINIO : ${domain}" >> /etc/adm-lite/HYSTERIA/data
|
|||
|
|
echo " OBFS : ${OBFS}" >> /etc/adm-lite/HYSTERIA/data
|
|||
|
|
echo " PUERTO : 36712" >> /etc/adm-lite/HYSTERIA/data
|
|||
|
|
echo " ALPN : h3" >> /etc/adm-lite/HYSTERIA/data
|
|||
|
|
echo " RANGO DE PUERTOS : 10000:65000" >> /etc/adm-lite/HYSTERIA/data
|
|||
|
|
echo -e " \n Power By @drowkid01" >> /etc/adm-lite/HYSTERIA/data
|
|||
|
|
msg -bar3
|
|||
|
|
echo ""
|
|||
|
|
echo " --- TUS DATOS DE SERVICIO SON ---"
|
|||
|
|
msg -bar3
|
|||
|
|
figlet -p -f smslant Hysteria | lolcat
|
|||
|
|
msg -bar3
|
|||
|
|
cat /etc/adm-lite/HYSTERIA/data
|
|||
|
|
msg -bar3
|
|||
|
|
enter
|
|||
|
|
[[ $(ps x | grep hysteria| grep -v grep) ]] && echo -e "$(msg -verd 'SERVICIO HYSTERIA INICIADO EXITOSAMENTE')" || echo -e "$(msg -verm2 'SERVICIO HYSTERIA NO INICIADO')"
|
|||
|
|
_menuH
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
_menuH(){
|
|||
|
|
clear&&clear
|
|||
|
|
msg -bar3
|
|||
|
|
cat /etc/adm-lite/HYSTERIA/data
|
|||
|
|
msg -bar3
|
|||
|
|
unset op
|
|||
|
|
[[ $(cat /etc/adm-lite/HYSTERIA/config.json | grep -w '//"alpn"') ]] && _ap='\033[0;31mOFF' || _ap='\033[0;32mON'
|
|||
|
|
menu_func "CAMBIAR PUERTO" "CAMBIAR OBFS" "ALPN (http injector) \033[0;32m[ ${_ap}\033[0;32m ]" "REINICIAR SERVICIO" "\033[0;31mREMOVER SERVICIO"
|
|||
|
|
msg -bar3
|
|||
|
|
selecy=$(selection_fun 5)
|
|||
|
|
case $selecy in
|
|||
|
|
1)
|
|||
|
|
clear&&clear
|
|||
|
|
unset _col
|
|||
|
|
msg -bar3
|
|||
|
|
echo -e "INGRESE EL NUEVO PUERTO DE SERVICIO "
|
|||
|
|
read -p " PUERTO : " _col
|
|||
|
|
#_PA=$(cat /etc/adm-lite/HYSTERIA/config.json | grep -i listen |cut -d '"' -f4 |sed -e 's/[^0-9]//ig')
|
|||
|
|
_PA=$(cat /etc/adm-lite/HYSTERIA/config.json |jq -r .listen |sed -e 's/[^0-9]//ig')
|
|||
|
|
#sed -i "s%/bin/false%filemancgh%g" /etc/adm-lite/HYSTERIA/config.json
|
|||
|
|
[[ ${_col} ]] && {
|
|||
|
|
sed -i "s/${_PA}/${_col}/" /etc/adm-lite/HYSTERIA/config.json
|
|||
|
|
sed -i "s/${_PA}/${_col}/" /etc/adm-lite/HYSTERIA/data
|
|||
|
|
systemctl restart hysteria &>/dev/null
|
|||
|
|
}
|
|||
|
|
;;
|
|||
|
|
2)
|
|||
|
|
clear&&clear
|
|||
|
|
unset _col
|
|||
|
|
msg -bar3
|
|||
|
|
echo -e "INGRESE SU NUEVO OBFS "
|
|||
|
|
read -p " OBFS : " _col
|
|||
|
|
_obfs=$(cat /etc/adm-lite/HYSTERIA/config.json |jq -r .obfs)
|
|||
|
|
#sed -i "s%/bin/false%filemancgh%g" /etc/adm-lite/HYSTERIA/config.json
|
|||
|
|
[[ ${_col} ]] && {
|
|||
|
|
sed -i "s/${_obfs}/${_col}/" /etc/adm-lite/HYSTERIA/config.json
|
|||
|
|
sed -i "s/${_obfs}/${_col}/" /etc/adm-lite/HYSTERIA/data
|
|||
|
|
systemctl restart hysteria &>/dev/null
|
|||
|
|
}
|
|||
|
|
;;
|
|||
|
|
3)
|
|||
|
|
clear&&clear
|
|||
|
|
[[ $(cat /etc/adm-lite/HYSTERIA/config.json | grep -w '//"alpn"') ]] && {
|
|||
|
|
sed -i '12d' /etc/adm-lite/HYSTERIA/config.json
|
|||
|
|
sed -i '12i\ "alpn": "h3",' /etc/adm-lite/HYSTERIA/config.json
|
|||
|
|
} || {
|
|||
|
|
sed -i '12d' /etc/adm-lite/HYSTERIA/config.json
|
|||
|
|
sed -i '12i\ //"alpn": "h3",' /etc/adm-lite/HYSTERIA/config.json
|
|||
|
|
}
|
|||
|
|
systemctl restart hysteria &>/dev/null
|
|||
|
|
;;
|
|||
|
|
4)
|
|||
|
|
clear&&clear
|
|||
|
|
unset _col
|
|||
|
|
msg -bar3
|
|||
|
|
systemctl restart hysteria &>/dev/null
|
|||
|
|
;;
|
|||
|
|
5)
|
|||
|
|
clear&&clear
|
|||
|
|
rm -f /etc/adm-lite/HYSTERIA/*
|
|||
|
|
systemctl disable hysteria &>/dev/null
|
|||
|
|
systemctl remove hysteria &>/dev/null
|
|||
|
|
rm -f /etc/systemd/system/hysteria.service
|
|||
|
|
systemctl stop hysteria &>/dev/null
|
|||
|
|
exit
|
|||
|
|
;;
|
|||
|
|
esac
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
_menuH2(){
|
|||
|
|
clear&&clear
|
|||
|
|
msg -bar3
|
|||
|
|
cat /etc/adm-lite/HYSTERIA/data.yaml
|
|||
|
|
msg -bar3
|
|||
|
|
green "$APP_IMPORT_GUIDE"
|
|||
|
|
yellow "El URI de configuraci<63>n de Hysteria 2 (con salto de puerto) "
|
|||
|
|
red "$(cat /root/hy/url.txt)"
|
|||
|
|
yellow "El URI de configuraci<63>n de Hysteria 2 (sin salto de puerto) "
|
|||
|
|
red "$(cat /root/hy/url-nohop.txt)"
|
|||
|
|
msg -bar3
|
|||
|
|
unset op
|
|||
|
|
[[ $(cat /etc/adm-lite/HYSTERIA/config.yaml | grep -w '//"alpn"') ]] && _ap='\033[0;31mOFF' || _ap='\033[0;32mON'
|
|||
|
|
menu_func "CAMBIAR PUERTO" "CAMBIAR CONTRASE<53>A" "REINICIAR SERVICIO" "\033[0;31mREMOVER SERVICIO"
|
|||
|
|
msg -bar3
|
|||
|
|
selecy=$(selection_fun 5)
|
|||
|
|
case $selecy in
|
|||
|
|
1)
|
|||
|
|
clear&&clear
|
|||
|
|
unset _col
|
|||
|
|
msg -bar3
|
|||
|
|
oldport=$(cat /etc/adm-lite/HYSTERIA/config.yaml 2>/dev/null | sed -n 1p | awk '{print $2}' | awk -F ":" '{print $2}')
|
|||
|
|
echo -e "INGRESE EL NUEVO PUERTO DE SERVICIO "
|
|||
|
|
read -p "Puerto [1-65535] (Puerto Ramdom Enter): " port
|
|||
|
|
[[ -z $port ]] && port=$(shuf -i 2000-65535 -n 1)
|
|||
|
|
until [[ -z $(ss -tunlp | grep -w udp | awk '{print $5}' | sed 's/.*://g' | grep -w "$port") ]]; do
|
|||
|
|
if [[ -n $(ss -tunlp | grep -w udp | awk '{print $5}' | sed 's/.*://g' | grep -w "$port") ]]; then
|
|||
|
|
echo -e "${RED} $port ${PLAIN} Puerto Ocupado , Reintente Nuevamente! "
|
|||
|
|
read -p "Puerto [1-65535] (Puerto Ramdom Enter): " port
|
|||
|
|
[[ -z $port ]] && port=$(shuf -i 2000-65535 -n 1)
|
|||
|
|
fi
|
|||
|
|
done
|
|||
|
|
sed -i "1s#$oldport#$port#g" /etc/adm-lite/HYSTERIA/config.yaml
|
|||
|
|
sed -i "1s#$oldport#$port#g" /root/hy/hy-client.yaml
|
|||
|
|
sed -i "2s#$oldport#$port#g" /root/hy/hy-client.json
|
|||
|
|
sed -i "s#$oldport#$port#g" /root/hy/url.txt
|
|||
|
|
stophysteria && starthysteria
|
|||
|
|
green "Su puerto fue modificado Exitosamente : $port"
|
|||
|
|
cat /root/hy/url.txt
|
|||
|
|
;;
|
|||
|
|
2)
|
|||
|
|
clear&&clear
|
|||
|
|
unset _col
|
|||
|
|
msg -bar3
|
|||
|
|
oldpasswd=$(cat /etc/adm-lite/HYSTERIA/config.yaml 2>/dev/null | sed -n 20p | awk '{print $2}')
|
|||
|
|
oldobfs=$(cat /etc/adm-lite/HYSTERIA/config.yaml 2>/dev/null | sed -n 10p | awk '{print $2}')
|
|||
|
|
echo -e "INGRESE SU NUEVA CLAVE/CONTRASE<53>A "
|
|||
|
|
read -p " (Enter Clave RAMDON): " passwd
|
|||
|
|
[[ -z $passwd ]] && passwd=$(date +%s%N | md5sum | cut -c 1-8)
|
|||
|
|
|
|||
|
|
sed -i "20s#$oldpasswd#$passwd#g" /etc/adm-lite/HYSTERIA/config.yaml
|
|||
|
|
sed -i "10s#$oldobfs#$passwd#g" /etc/adm-lite/HYSTERIA/config.yaml
|
|||
|
|
sed -i "3s#$oldpasswd#$passwd#g" /root/hy/hy-client.yaml
|
|||
|
|
sed -i "9s#$oldobfs#$passwd#g" /root/hy/hy-client.yaml
|
|||
|
|
sed -i "3s#$oldpasswd#$passwd#g" /root/hy/hy-client.json
|
|||
|
|
sed -i "8s#$oldobfs#$passwd#g" /root/hy/hy-client.json
|
|||
|
|
sed -i "s#$oldpasswd#$passwd#g" /root/hy/url.txt
|
|||
|
|
sed -i "s#$oldobfs#$passwd#g" /root/hy/url.txt
|
|||
|
|
stophysteria && starthysteria
|
|||
|
|
green "Su nueva contrase<73>a $passwd se aplico Exitosamente"
|
|||
|
|
cat /root/hy/url.txt
|
|||
|
|
;;
|
|||
|
|
3)
|
|||
|
|
stophysteria && starthysteria
|
|||
|
|
;;
|
|||
|
|
4)
|
|||
|
|
clear&&clear
|
|||
|
|
rm -f /etc/adm-lite/HYSTERIA/*
|
|||
|
|
systemctl stop hysteria-server.service >/dev/null 2>&1
|
|||
|
|
systemctl disable hysteria-server.service >/dev/null 2>&1
|
|||
|
|
rm -f /lib/systemd/system/hysteria-server.service /lib/systemd/system/hysteria-server@.service
|
|||
|
|
rm -rf /bin/Hysteria2 /etc/hysteria /root/hy /root/hysteria.sh
|
|||
|
|
rm -f /bin/Hysteria2
|
|||
|
|
iptables -t nat -F PREROUTING >/dev/null 2>&1
|
|||
|
|
netfilter-persistent save >/dev/null 2>&1
|
|||
|
|
exit
|
|||
|
|
;;
|
|||
|
|
esac
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
unset _So _Cu _HIS _HIS2
|
|||
|
|
while :
|
|||
|
|
[[ $(ps x | grep -w 'udpServer'| grep -v grep) ]] && _So="$(msg -verd 'ON')" || _So="$(msg -verm2 'OFF')"
|
|||
|
|
[[ $(ps x | grep -w 'UDP-Custom'| grep -v grep) ]] && _Cu="$(msg -verd 'ON')" || _Cu="$(msg -verm2 'OFF')"
|
|||
|
|
[[ $(ps x | grep -w '/bin/hysteria' | grep -v grep) ]] && _HIS="$(msg -verd 'ON')" || _HIS="$(msg -verm2 'OFF')"
|
|||
|
|
[[ $(ps x | grep -w '/bin/Hysteria2'| grep -v grep) ]] && _HIS2="$(msg -verd 'ON')" || _HIS2="$(msg -verm2 'OFF')"
|
|||
|
|
_MSYS=" \n$(print_center "\033[0;35mUsuarios SSH del Sistema")"
|
|||
|
|
_MSYS2="\n$(print_center "\033[0;35mNO SOPORTA USERS DE SISTEMA")"
|
|||
|
|
|
|||
|
|
do
|
|||
|
|
unset port
|
|||
|
|
tittle
|
|||
|
|
a=( [0]="\e[1;30m[\e[38;5;219m#" [1]="\e[1;30m]" )
|
|||
|
|
menu_func "UDP-REQUEST ${a[0]}socks-ip${a[1]} ${_So}" \
|
|||
|
|
"UDP-CUSTOM ${a[0]}http-custom${a[1]} ${_Cu}" \
|
|||
|
|
"UDP-HYSTERIA ${a[0]}app'smod${a[1]} ${_HIS}" \
|
|||
|
|
"UDP-HYSTERIA2 ${a[0]}http-injector${a[1]} ${_HIS2}"
|
|||
|
|
back
|
|||
|
|
#menu_func " UDP-REQUEST SocksIP \033[0;31m[${_So}\033[0;31m]${_MSYS}" "UDP-CUSTOM HTTPCustom \033[0;31m[${_Cu}\033[0;31m]${_MSYS}" "UDP-Hysteria APPMod's \033[0;31m[${_HIS}\033[0;31m] ${_MSYS}"
|
|||
|
|
#echo -e "\033[0;35m [${cor[2]}01\033[0;35m]\033[0;33m ${flech}${cor[3]}UDP-REQUEST SocksIP \033[0;31m[${_So}\033[0;31m] ${_MSYS}"
|
|||
|
|
#echo -e "\033[0;35m [${cor[2]}02\033[0;35m]\033[0;33m ${flech}${cor[3]}UDP-CUSTOM HTTPCustom \033[0;31m[${_Cu}\033[0;31m] ${_MSYS}"
|
|||
|
|
#echo -e "\033[0;35m [${cor[2]}03\033[0;35m]\033[0;33m ${flech}${cor[3]}UDP-Hysteria APPMod's \033[0;31m[${_HIS}\033[0;31m] ${_MSYS}"
|
|||
|
|
#echo -e "\033[0;35m [${cor[2]}04\033[0;35m]\033[0;33m ${flech}${cor[3]}UDP-Hysteria2 HTTP-Injector \033[0;31m[${_HIS2}\033[0;31m] ${_MSYS2}"
|
|||
|
|
#msg -bar3
|
|||
|
|
#echo -ne "$(msg -verd " [0]") $(msg -verm2 "=>>") " && msg -bra "\033[1;41m Volver "
|
|||
|
|
#msg -bar3
|
|||
|
|
opcion=$(selection_fun 4)
|
|||
|
|
case $opcion in
|
|||
|
|
1) source <(curl -sSL https://gitea.com/drowkid01/scriptdk1/raw/branch/main/Recursos/menu_inst/UDPserver.org.sh) && exit;;
|
|||
|
|
2) source <(curl -sSL https://gitea.com/drowkid01/scriptdk1/raw/branch/main/Recursos/menu_inst/udp-custom.sh) && exit;;
|
|||
|
|
3) [[ $(ps x | grep -w "/bin/hysteria"| grep -v grep) ]] && _menuH || _hysteria ;;
|
|||
|
|
4) [[ $(ps x | grep -w "/bin/Hysteria2"| grep -v grep) ]] && _menuH2 || _hysteria2 ;;
|
|||
|
|
0) exit;;
|
|||
|
|
esac
|
|||
|
|
done
|
|||
|
|
|
|||
|
|
pruebas(){
|
|||
|
|
|
|||
|
|
echo '[Unit]
|
|||
|
|
Description=HysteriaUDP MOD Service BY @drowkid01
|
|||
|
|
After=network.target
|
|||
|
|
|
|||
|
|
[Service]
|
|||
|
|
User=root
|
|||
|
|
Group=root' > /etc/adm-lite/HYSTERIA/hysteria.service
|
|||
|
|
echo "ExecStartPost=${sys} net.ipv4.ip_forward=1
|
|||
|
|
ExecStartPost=${sys} net.ipv4.conf.all.rp_filter=0
|
|||
|
|
ExecStartPost=${sys} net.ipv4.conf.${interfas}.rp_filter=0
|
|||
|
|
ExecStartPost=${ip4t} -t nat -A PREROUTING -i ${interfas} -p udp --dport 10000:65000 -j DNAT --to-destination :36712
|
|||
|
|
ExecStartPost=${ip6t} -t nat -A PREROUTING -i ${interfas} -p udp --dport 10000:65000 -j DNAT --to-destination :36712
|
|||
|
|
ExecStopPost=${ip4t} -t nat -D PREROUTING -i ${interfas} -p udp --dport 10000:65000 -j DNAT --to-destination :36712
|
|||
|
|
ExecStopPost=${ip6t} -t nat -D PREROUTING -i ${interfas} -p udp --dport 10000:65000 -j DNAT --to-destination :36712" >> /etc/adm-lite/HYSTERIA/hysteria.service
|
|||
|
|
|
|||
|
|
echo 'WorkingDirectory=/etc/adm-lite/HYSTERIA
|
|||
|
|
Environment="PATH=/etc/adm-lite/HYSTERIA"
|
|||
|
|
ExecStart=/bin/hysteria -config /etc/adm-lite/HYSTERIA/config.json server
|
|||
|
|
|
|||
|
|
[Install]
|
|||
|
|
WantedBy=multi-user.target
|
|||
|
|
' >> /etc/adm-lite/HYSTERIA/hysteria.service
|
|||
|
|
|
|||
|
|
}
|