mirror of
https://github.com/AAAAAEXQOSyIpN2JZ0ehUQ/SSHPLUS-MANAGER-FREE.git
synced 2024-11-13 14:09:31 +00:00
357 lines
13 KiB
Bash
357 lines
13 KiB
Bash
#!/bin/bash
|
|
#====================================================
|
|
# SCRIPT: CRIARUSUARIO SSHPLUS MANAGER
|
|
# DESENVOLVIDO POR: CRAZY_VPN
|
|
# CONTATO TELEGRAM: http://t.me/crazy_vpn
|
|
# CANAL TELEGRAM: http://t.me/sshplus
|
|
#====================================================
|
|
IP=$(cat /etc/IP)
|
|
cor1='\033[41;1;37m'
|
|
cor2='\033[44;1;37m'
|
|
scor='\033[0m'
|
|
# Gerar client.ovpn
|
|
newclient() {
|
|
cp /etc/openvpn/client-common.txt ~/$1.ovpn
|
|
echo "<ca>" >>~/$1.ovpn
|
|
cat /etc/openvpn/easy-rsa/pki/ca.crt >>~/$1.ovpn
|
|
echo "</ca>" >>~/$1.ovpn
|
|
echo "<cert>" >>~/$1.ovpn
|
|
cat /etc/openvpn/easy-rsa/pki/issued/$1.crt >>~/$1.ovpn
|
|
echo "</cert>" >>~/$1.ovpn
|
|
echo "<key>" >>~/$1.ovpn
|
|
cat /etc/openvpn/easy-rsa/pki/private/$1.key >>~/$1.ovpn
|
|
echo "</key>" >>~/$1.ovpn
|
|
echo "<tls-auth>" >>~/$1.ovpn
|
|
cat /etc/openvpn/ta.key >>~/$1.ovpn
|
|
echo "</tls-auth>" >>~/$1.ovpn
|
|
}
|
|
fun_geraovpn() {
|
|
[[ "$respost" = @(s|S) ]] && {
|
|
cd /etc/openvpn/easy-rsa/
|
|
./easyrsa build-client-full $username nopass
|
|
newclient "$username"
|
|
sed -e "s;auth-user-pass;<auth-user-pass>\n$username\n$password\n</auth-user-pass>;g" /root/$username.ovpn >/root/tmp.ovpn && mv -f /root/tmp.ovpn /root/$username.ovpn
|
|
} || {
|
|
cd /etc/openvpn/easy-rsa/
|
|
./easyrsa build-client-full $username nopass
|
|
newclient "$username"
|
|
}
|
|
} >/dev/null 2>&1
|
|
[[ -e /etc/openvpn/server.conf ]] && {
|
|
_Port=$(grep -w 'port' /etc/openvpn/server.conf | awk {'print $2'})
|
|
_portarq=$(sed -n '7 p' /etc/openvpn/client-common.txt|cut -d' ' -f3)
|
|
hst=$(sed -n '8 p' /etc/openvpn/client-common.txt | awk {'print $4'})
|
|
rmt=$(sed -n '7 p' /etc/openvpn/client-common.txt)
|
|
hedr=$(sed -n '8 p' /etc/openvpn/client-common.txt)
|
|
prxy=$(sed -n '9 p' /etc/openvpn/client-common.txt)
|
|
rmt2='/SSHPLUS?'
|
|
payload1='#payload "HTTP/1.1 [lf]CONNECT HTTP/1.1[lf][lf]|[lf]."'
|
|
payload2='#payload "CONNECT 127.0.0.1:1194[split][crlf] HTTP/1.0 [crlf][crlf]#"'
|
|
oi="d1n212ccp6ldpw.cloudfront.net"
|
|
bypass="net_gateway"
|
|
slowdns="2222"
|
|
cert01="/etc/openvpn/client-common.txt"
|
|
if [[ "$hst" == "$oi" ]]; then
|
|
Host="Oi"
|
|
elif [[ "$_portarq" == "$slowdns" ]]; then
|
|
Host="MODO SLOWDNS"
|
|
elif [[ "$hst" == "$bypass" ]]; then
|
|
Host="MODO BYPASS"
|
|
elif [[ "$hedr" == "$payload1" ]]; then
|
|
Host="OPEN SOCKS"
|
|
elif [[ "$hedr" == "$payload2" ]]; then
|
|
Host="OPEN SQUID"
|
|
else
|
|
Host="CUSTOM"
|
|
fi
|
|
}
|
|
fun_bar() {
|
|
comando[0]="$1"
|
|
comando[1]="$2"
|
|
(
|
|
[[ -e $HOME/fim ]] && rm $HOME/fim
|
|
${comando[0]} >/dev/null 2>&1
|
|
${comando[1]} >/dev/null 2>&1
|
|
touch $HOME/fim
|
|
) >/dev/null 2>&1 &
|
|
tput civis
|
|
echo -ne "\033[1;33mAGUARDE \033[1;37m- \033[1;33m["
|
|
while true; do
|
|
for ((i = 0; i < 18; i++)); do
|
|
echo -ne "\033[1;31m#"
|
|
sleep 0.1s
|
|
done
|
|
[[ -e $HOME/fim ]] && rm $HOME/fim && break
|
|
echo -e "\033[1;33m]"
|
|
sleep 1s
|
|
tput cuu1
|
|
tput dl1
|
|
echo -ne "\033[1;33mAGUARDE \033[1;37m- \033[1;33m["
|
|
done
|
|
echo -e "\033[1;33m]\033[1;37m -\033[1;32m OK !\033[1;37m"
|
|
tput cnorm
|
|
}
|
|
fun_edithost() {
|
|
clear
|
|
echo -e "\E[44;1;37m ALTERAR MODO OVPN \E[0m"
|
|
echo ""
|
|
echo -e "\033[1;33mMODO EM USO\033[1;37m: \033[1;32m$Host"
|
|
echo ""
|
|
echo -e "\033[1;31m[\033[1;36m1\033[1;31m] \033[1;33mOPEN SOCKS \033[1;31m[\033[1;32mAPP MOD\033[1;31m]"
|
|
echo -e "\033[1;31m[\033[1;36m2\033[1;31m] \033[1;33mOPEN SQUID \033[1;31m[\033[1;32mAPP MOD\033[1;31m]"
|
|
echo -e "\033[1;31m[\033[1;36m3\033[1;31m] \033[1;33mSLOWDNS \033[1;31m[\033[1;32mOPENVPN FOR ANDROID + TERMUX\033[1;31m]"
|
|
echo -e "\033[1;31m[\033[1;36m4\033[1;31m] \033[1;33mBYPASS \033[1;31m[\033[1;32mOPENVPN + INJECTOR\033[1;31m]"
|
|
echo -e "\033[1;31m[\033[1;36m5\033[1;31m] \033[1;33mTODOS MODOS \033[1;31m[\033[1;32m1 OVPN DE CADA\033[1;31m]"
|
|
echo -e "\033[1;31m[\033[1;36m6\033[1;31m] \033[1;33mEDITAR MANUALMENTE"
|
|
echo -e "\033[1;31m[\033[1;36m0\033[1;31m] \033[1;33mVOLTAR"
|
|
echo ""
|
|
echo -ne "\033[1;32mQUAL MODO DESEJA ULTILIZAR \033[1;33m?\033[1;37m "
|
|
read respo
|
|
[[ -z "$respo" ]] && {
|
|
echo -e "\n\033[1;31mOpcao invalida!"
|
|
sleep 2
|
|
fun_edithost
|
|
}
|
|
if [[ "$respo" = '1' ]]; then
|
|
echo -e "\n\033[1;32mALTERANDO MODO!\033[0m\n"
|
|
fun_althostpay1() {
|
|
sed -i "7,9"d $cert01
|
|
sleep 1
|
|
sed -i "7i\remote $rmt2 $_Port\n$payload1\nhttp-proxy $IP 8080" $cert01
|
|
}
|
|
fun_bar 'fun_althostpay1'
|
|
echo -e "\n\033[1;32mMODO ALTERADO COM SUCESSO!\033[0m"
|
|
fun_geraovpn
|
|
sleep 1.5
|
|
elif [[ "$respo" = '2' ]]; then
|
|
echo -e "\n\033[1;32mALTERANDO MODO!\033[0m\n"
|
|
fun_althostpay2() {
|
|
sed -i "7,9"d $cert01
|
|
sleep 1
|
|
sed -i "7i\remote $rmt2 $_Port\n$payload2\nhttp-proxy $IP 80" $cert01
|
|
}
|
|
fun_bar 'fun_althostpay2'
|
|
echo -e "\n\033[1;32mMODO ALTERADO COM SUCESSO!\033[0m"
|
|
fun_geraovpn
|
|
sleep 1.5
|
|
elif [[ "$respo" = '3' ]]; then
|
|
echo -e "\n\033[1;32mALTERANDO MODO!\033[0m\n"
|
|
fun_althost5() {
|
|
sed -i "7,9"d $cert01
|
|
sleep 1
|
|
sed -i "7i\remote 127.0.0.1 2222\nroute $IP 255.255.255.255 net_gateway" $cert01
|
|
}
|
|
fun_bar 'fun_althost5'
|
|
echo -e "\n\033[1;32mMODO ALTERADO COM SUCESSO!\033[0m"
|
|
fun_geraovpn
|
|
sleep 1.5
|
|
elif [[ "$respo" = '4' ]]; then
|
|
echo -e "\n\033[1;32mALTERANDO MODO!\033[0m\n"
|
|
fun_althost6() {
|
|
sed -i "7,9"d $cert01
|
|
sleep 1
|
|
sed -i "7i\remote $IP $_Port\nroute $IP 255.255.255.255 net_gateway\nhttp-proxy 127.0.0.1 8989" $cert01
|
|
}
|
|
fun_bar 'fun_althost6'
|
|
echo -e "\n\033[1;32mMODO ALTERADO COM SUCESSO!\033[0m"
|
|
fun_geraovpn
|
|
sleep 1.5
|
|
elif [[ "$respo" = '5' ]]; then
|
|
[[ ! -e "$HOME/$username.ovpn" ]] && fun_geraovpn
|
|
echo -e "\n\033[1;32mALTERANDO MODO!\033[0m\n"
|
|
fun_packhost() {
|
|
[[ ! -d "$HOME/OVPN" ]] && mkdir $HOME/OVPN
|
|
sed -i "7,9"d $HOME/$username.ovpn
|
|
sleep 0.5
|
|
sed -i "7i\remote $IP $_Port\nroute $IP 255.255.255.255 net_gateway\nhttp-proxy 127.0.0.1 8989" $HOME/$username.ovpn
|
|
cp $HOME/$username.ovpn /root/OVPN/$username-bypass.ovpn
|
|
sed -i "7,9"d $HOME/$username.ovpn
|
|
sleep 0.5
|
|
sed -i "7i\remote 127.0.0.1 2222\nroute $IP 255.255.255.255 net_gatewaY" $HOME/$username.ovpn
|
|
cp $HOME/$username.ovpn /root/OVPN/$username-slowdns.ovpn
|
|
sed -i "7,9"d $HOME/$username.ovpn
|
|
sleep 0.5
|
|
sed -i "7i\remote $rmt2 $_Port\n$payload1\nhttp-proxy $IP 8080" $HOME/$username.ovpn
|
|
cp $HOME/$username.ovpn /root/OVPN/$username-socks.ovpn
|
|
sed -i "7,9"d $HOME/$username.ovpn
|
|
sleep 0.5
|
|
sed -i "7i\remote $rmt2 $_Port\n$payload2\nhttp-proxy $IP 80" $HOME/$username.ovpn
|
|
cp $HOME/$username.ovpn /root/OVPN/$username-squid.ovpn
|
|
cd $HOME/OVPN && zip $username.zip *.ovpn >/dev/null 2>&1 && cp $username.zip $HOME/$username.zip
|
|
cd $HOME && rm -rf /root/OVPN >/dev/null 2>&1
|
|
}
|
|
fun_bar 'fun_packhost'
|
|
echo -e "\n\033[1;32mMODO ALTERADO COM SUCESSO!\033[0m"
|
|
sleep 1.5
|
|
elif [[ "$respo" = '6' ]]; then
|
|
echo ""
|
|
echo -e "\033[1;32mALTERANDO ARQUIVO OVPN!\033[0m"
|
|
echo ""
|
|
echo -e "\033[1;31mATENCAO!\033[0m"
|
|
echo ""
|
|
echo -e "\033[1;33mPARA SALVAR USE AS TECLAS \033[1;32mctrl x y\033[0m"
|
|
sleep 4
|
|
clear
|
|
nano /etc/openvpn/client-common.txt
|
|
echo ""
|
|
echo -e "\033[1;32mALTERADO COM SUCESSO!\033[0m"
|
|
fun_geraovpn
|
|
sleep 1.5
|
|
elif [[ "$respo" = '0' ]]; then
|
|
echo ""
|
|
echo -e "\033[1;31mRetornando...\033[0m"
|
|
sleep 2
|
|
else
|
|
echo ""
|
|
echo -e "\033[1;31mOpcao invalida !\033[0m"
|
|
sleep 2
|
|
fun_edithost
|
|
fi
|
|
}
|
|
[[ ! -e /usr/lib/sshplus ]] && exit 0
|
|
tput setaf 7;tput setab 4;tput bold;printf '%30s%s%-15s\n' "Criar Usuário SSH";tput sgr0
|
|
echo ""
|
|
echo -ne "\033[1;32mNome do usuário:\033[1;37m ";read username
|
|
[[ -z $username ]] && {
|
|
echo -e "\n${cor1}Nome de usuário vazio ou invalido!${scor}\n"
|
|
exit 1
|
|
}
|
|
[[ "$(grep -wc $username /etc/passwd)" != '0' ]] && {
|
|
echo -e "\n${cor1}Este usuário já existe. tente outro nome!${scor}\n"
|
|
exit 1
|
|
}
|
|
[[ ${username} != ?(+|-)+([a-zA-Z0-9]) ]] && {
|
|
echo -e "\n${cor1}Você digitou um nome de usuário inválido!${scor}"
|
|
echo -e "${cor1}Não use espaços, acentos ou caracteres especiais!${scor}\n"
|
|
exit 1
|
|
}
|
|
sizemin=$(echo ${#username})
|
|
[[ $sizemin -lt 2 ]] && {
|
|
echo -e "\n${cor1}Você digitou um nome de usuário muito curto${scor}"
|
|
echo -e "${cor1}use no mínimo dois caracteres!${scor}\n"
|
|
exit 1
|
|
}
|
|
sizemax=$(echo ${#username})
|
|
[[ $sizemax -gt 10 ]] && {
|
|
echo -e "\n${cor1}Você digitou um nome de usuário muito grande"
|
|
echo -e "${cor1}use no máximo 10 caracteres!${scor}\n"
|
|
exit 1
|
|
}
|
|
echo -ne "\033[1;32mSenha:\033[1;37m ";read password
|
|
[[ -z $password ]] && {
|
|
echo -e "\n${cor1}Senha vazia ou invalida!${scor}\n"
|
|
exit 1
|
|
}
|
|
sizepass=$(echo ${#password})
|
|
[[ $sizepass -lt 4 ]] && {
|
|
echo -e "\n${cor1}Senha curta!, use no mínimo 4 caracteres${scor}\n"
|
|
exit 1
|
|
}
|
|
echo -ne "\033[1;32mDias para expirar:\033[1;37m ";read dias
|
|
[[ -z $dias ]] && {
|
|
echo -e "\n${cor1}Numero de dias vazio!${scor}\n"
|
|
exit 1
|
|
}
|
|
[[ ${dias} != ?(+|-)+([0-9]) ]] && {
|
|
echo -e "\n${cor1}Você digitou um número de dias inválido!${scor}\n"
|
|
exit 1
|
|
}
|
|
[[ $dias -lt 1 ]] && {
|
|
echo -e "\n${cor1}O número deve ser maior que zero!${scor}\n"
|
|
exit 1
|
|
}
|
|
echo -ne "\033[1;32mLimite de conexões:\033[1;37m ";read sshlimiter
|
|
[[ -z $sshlimiter ]] && {
|
|
echo -e "\n${cor1}Você deixou o limite de conexões vazio!${scor}\n"
|
|
exit 1
|
|
}
|
|
[[ ${sshlimiter} != ?(+|-)+([0-9]) ]] && {
|
|
echo -e "\n${cor1}Você digitou um número de conexões inválido!${scor}\n"
|
|
exit 1
|
|
}
|
|
[[ $sshlimiter -lt 1 ]] && {
|
|
echo -e "\n${cor1}Número de conexões simultâneas deve ser maior que zero!${scor}\n"
|
|
exit 1
|
|
}
|
|
final=$(date "+%Y-%m-%d" -d "+$dias days")
|
|
gui=$(date "+%d/%m/%Y" -d "+$dias days")
|
|
pass=$(perl -e 'print crypt($ARGV[0], "password")' $password)
|
|
useradd -e $final -M -s /bin/false -p $pass $username >/dev/null 2>&1 &
|
|
echo "$password" >/etc/SSHPlus/senha/$username
|
|
echo "$username $sshlimiter" >>/root/usuarios.db
|
|
[[ -e /etc/openvpn/server.conf ]] && {
|
|
echo -ne "\033[1;32mGerar Arquivo Ovpn \033[1;31m? \033[1;33m[s/n]:\033[1;37m "; read resp
|
|
[[ "$resp" = @(s|S) ]] && {
|
|
rm $username.zip $username.ovpn >/dev/null 2>&1
|
|
echo -ne "\033[1;32mGerar Com usuário e Senha \033[1;31m? \033[1;33m[s/n]:\033[1;37m "
|
|
read respost
|
|
echo -ne "\033[1;32mModo Atual\033[1;37m: \033[1;31m(\033[1;37m$Host\033[1;31m) \033[1;37m- \033[1;32mAlterar \033[1;31m? \033[1;33m[s/n]:\033[1;37m "; read oprc
|
|
[[ "$oprc" = @(s|S) ]] && {
|
|
fun_edithost
|
|
} || {
|
|
fun_geraovpn
|
|
}
|
|
gerarovpn() {
|
|
[[ ! -e "/root/$username.zip" ]] && {
|
|
zip /root/$username.zip /root/$username.ovpn
|
|
sleep 1.5
|
|
}
|
|
}
|
|
clear
|
|
echo -e "\E[44;1;37m CONTA SSH CRIADA ! \E[0m"
|
|
echo -e "\n\033[1;32mIP: \033[1;37m$IP"
|
|
echo -e "\033[1;32mUsuário: \033[1;37m$username"
|
|
echo -e "\033[1;32mSenha: \033[1;37m$password"
|
|
echo -e "\033[1;32mExpira em: \033[1;37m$gui"
|
|
echo -e "\033[1;32mLimite de conexões: \033[1;37m$sshlimiter"
|
|
sleep 1
|
|
function aguarde() {
|
|
helice() {
|
|
gerarovpn >/dev/null 2>&1 &
|
|
tput civis
|
|
while [ -d /proc/$! ]; do
|
|
for i in / - \\ \|; do
|
|
sleep .1
|
|
echo -ne "\e[1D$i"
|
|
done
|
|
done
|
|
tput cnorm
|
|
}
|
|
echo ""
|
|
echo -ne "\033[1;31mCRIANDO OVPN\033[1;33m.\033[1;31m. \033[1;32m"
|
|
helice
|
|
echo -e "\e[1DOK"
|
|
}
|
|
aguarde
|
|
VERSION_ID=$(cat /etc/os-release | grep "VERSION_ID")
|
|
echo ""
|
|
[[ -d /var/www/html/openvpn ]] && {
|
|
mv $HOME/$username.zip /var/www/html/openvpn/$username.zip >/dev/null 2>&1
|
|
[[ "$VERSION_ID" = 'VERSION_ID="14.04"' ]] && {
|
|
echo -e "\033[1;32mLINK\033[1;37m: \033[1;36m$IP:81/html/openvpn/$username.zip"
|
|
} || {
|
|
echo -e "\033[1;32mLINK\033[1;37m: \033[1;36m$IP:81/openvpn/$username.zip"
|
|
}
|
|
} || {
|
|
echo -e "\033[1;32mDisponivel em\033[1;31m" ~/"$username.zip\033[0m"
|
|
sleep 1
|
|
}
|
|
} || {
|
|
clear
|
|
echo -e "\E[44;1;37m CONTA SSH CRIADA ! \E[0m"
|
|
echo -e "\n\033[1;32mIP: \033[1;37m$IP"
|
|
echo -e "\033[1;32mUsuário: \033[1;37m$username"
|
|
echo -e "\033[1;32mSenha: \033[1;37m$password"
|
|
echo -e "\033[1;32mExpira em: \033[1;37m$gui"
|
|
echo -e "\033[1;32mLimite de conexões: \033[1;37m$sshlimiter"
|
|
}
|
|
} || {
|
|
clear
|
|
echo -e "\E[44;1;37m CONTA SSH CRIADA ! \E[0m"
|
|
echo -e "\n\033[1;32mIP: \033[1;37m$IP"
|
|
echo -e "\033[1;32mUsuário: \033[1;37m$username"
|
|
echo -e "\033[1;32mSenha: \033[1;37m$password"
|
|
echo -e "\033[1;32mExpira em: \033[1;37m$gui"
|
|
echo -e "\033[1;32mLimite de conexões: \033[1;37m$sshlimiter"
|
|
}
|