1
0

ssl.sh 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918
  1. #!/bin/bash
  2. ll="/usr/local/include/snaps" && [[ ! -d ${ll} ]] && exit
  3. clear
  4. clear
  5. SCPdir="/etc/VPS-MX"
  6. tmp="/etc/VPS-MX/crt" && [[ ! -d ${tmp} ]] && mkdir ${tmp}
  7. tmp_crt="/etc/VPS-MX/crt/certificados" && [[ ! -d ${tmp_crt} ]] && mkdir ${tmp_crt}
  8. SCPfrm="${SCPdir}/herramientas" && [[ ! -d ${SCPfrm} ]] && exit
  9. SCPinst="${SCPdir}/protocolos"&& [[ ! -d ${SCPinst} ]] && exit
  10. declare -A cor=( [0]="\033[1;37m" [1]="\033[1;34m" [2]="\033[1;31m" [3]="\033[1;33m" [4]="\033[1;32m" [5]="\e[1;36m" )
  11. mportas () {
  12. unset portas
  13. portas_var=$(lsof -V -i tcp -P -n | grep -v "ESTABLISHED" |grep -v "COMMAND" | grep "LISTEN")
  14. while read port; do
  15. var1=$(echo $port | awk '{print $1}') && var2=$(echo $port | awk '{print $9}' | awk -F ":" '{print $2}')
  16. [[ "$(echo -e $portas|grep "$var1 $var2")" ]] || portas+="$var1 $var2\n"
  17. done <<< "$portas_var"
  18. i=1
  19. echo -e "$portas"
  20. }
  21. fun_ip () {
  22. MIP=$(ip addr | grep 'inet' | grep -v inet6 | grep -vE '127\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | grep -o -E '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | head -1)
  23. MIP2=$(wget -qO- ifconfig.me)
  24. [[ "$MIP" != "$MIP2" ]] && IP="$MIP2" || IP="$MIP"
  25. }
  26. #======cloudflare========
  27. export correo='lacasitamx93@gmail.com'
  28. export _dns='2973fe5da34aa6c4a8ead51cd124973f' #id de zona
  29. export apikey='1829594c1de4cb59a0f795d780cb61332b64a' #api key
  30. export _domain='lacasitamx.host'
  31. export url='https://api.cloudflare.com/client/v4/zones'
  32. #
  33. #========================
  34. fun_bar () {
  35. comando="$1"
  36. _=$(
  37. $comando > /dev/null 2>&1
  38. ) & > /dev/null
  39. pid=$!
  40. while [[ -d /proc/$pid ]]; do
  41. echo -ne " \033[1;33m["
  42. for((i=0; i<20; i++)); do
  43. echo -ne "\033[1;31m##"
  44. sleep 0.5
  45. done
  46. echo -ne "\033[1;33m]"
  47. sleep 1s
  48. echo
  49. tput cuu1
  50. tput dl1
  51. done
  52. echo -e " \033[1;33m[\033[1;31m########################################\033[1;33m] - \033[1;32m100%\033[0m"
  53. sleep 1s
  54. }
  55. fun_ip &>/dev/null
  56. crear_subdominio(){
  57. clear
  58. clear
  59. apt install jq -y &>/dev/null
  60. msg -tit
  61. echo -e " \e[91m\e[43mGENERADOR DE SUB-DOMINIOS\e[0m"
  62. msg -verd " Verificando direccion ip..."
  63. sleep 2
  64. ls_dom=$(curl -s -X GET "$url/$_dns/dns_records?per_page=100" \
  65. -H "X-Auth-Email: $correo" \
  66. -H "X-Auth-Key: $apikey" \
  67. -H "Content-Type: application/json" | jq '.')
  68. num_line=$(echo $ls_dom | jq '.result | length')
  69. ls_domi=$(echo $ls_dom | jq -r '.result[].name')
  70. ls_ip=$(echo $ls_dom | jq -r '.result[].content')
  71. my_ip=$(wget -qO- ipv4.icanhazip.com)
  72. if [[ $(echo "$ls_ip"|grep -w "$my_ip") = "$my_ip" ]];then
  73. for (( i = 0; i < $num_line; i++ )); do
  74. if [[ $(echo "$ls_dom" | jq -r ".result[$i].content"|grep -w "$my_ip") = "$my_ip" ]]; then
  75. domain=$(echo "$ls_dom" | jq -r ".result[$i].name")
  76. echo "$domain" > /etc/VPS-MX/tmp/dominio.txt
  77. break
  78. fi
  79. done
  80. tput cuu1 && tput dl1
  81. msg -verm2 " ya existe un sub-dominio asociado a esta IP"
  82. msg -bar
  83. echo -e " $(msg -ama "sub-dominio:") $(msg -verd "$domain")"
  84. msg -bar
  85. exit
  86. fi
  87. if [[ -z $name ]]; then
  88. tput cuu1 && tput dl1
  89. echo -e " $(msg -azu "El dominio principal es:") $(msg -verd "$_domain")\n $(msg -azu "El sub-dominio sera:") $(msg -verd "mivps.$_domain")"
  90. msg -bar
  91. while [[ -z "$name" ]]; do
  92. msg -ne " Nombre (ejemplo: mivps) "
  93. read name
  94. tput cuu1 && tput dl1
  95. name=$(echo "$name" | tr -d '[[:space:]]')
  96. if [[ -z $name ]]; then
  97. msg -verm2 " ingresar un nombre...!"
  98. unset name
  99. sleep 2
  100. tput cuu1 && tput dl1
  101. continue
  102. elif [[ ! $name =~ $tx_num ]]; then
  103. msg -verm2 " ingresa solo letras y numeros...!"
  104. unset name
  105. sleep 2
  106. tput cuu1 && tput dl1
  107. continue
  108. elif [[ "${#name}" -lt "3" ]]; then
  109. msg -verm2 " nombre demaciado corto!"
  110. sleep 2
  111. tput cuu1 && tput dl1
  112. unset name
  113. continue
  114. else
  115. domain="$name.$_domain"
  116. msg -ama " Verificando disponibiliad..."
  117. sleep 2
  118. tput cuu1 && tput dl1
  119. if [[ $(echo "$ls_domi" | grep "$domain") = "" ]]; then
  120. echo -e " $(msg -verd "[ok]") $(msg -azu "sub-dominio disponible")"
  121. sleep 2
  122. else
  123. echo -e " $(msg -verm2 "[fail]") $(msg -azu "sub-dominio NO disponible")"
  124. unset name
  125. sleep 2
  126. tput cuu1 && tput dl1
  127. continue
  128. fi
  129. fi
  130. done
  131. fi
  132. tput cuu1 && tput dl1
  133. echo -e " $(msg -azu " El sub-dominio sera:") $(msg -verd "$domain")"
  134. msg -bar
  135. msg -ne " Continuar...[S/N]: "
  136. read opcion
  137. [[ $opcion = @(n|N) ]] && return 1
  138. tput cuu1 && tput dl1
  139. msg -azu " Creando sub-dominio"
  140. sleep 1
  141. var=$(cat <<EOF
  142. {
  143. "type": "A",
  144. "name": "$name",
  145. "content": "$my_ip",
  146. "ttl": 1,
  147. "priority": 10,
  148. "proxied": false
  149. }
  150. EOF
  151. )
  152. chek_domain=$(curl -s -X POST "$url/$_dns/dns_records" \
  153. -H "X-Auth-Email: $correo" \
  154. -H "X-Auth-Key: $apikey" \
  155. -H "Content-Type: application/json" \
  156. -d $(echo $var|jq -c '.')|jq '.')
  157. tput cuu1 && tput dl1
  158. if [[ "$(echo $chek_domain|jq -r '.success')" = "true" ]]; then
  159. echo "$(echo $chek_domain|jq -r '.result.name')" > /etc/VPS-MX/tmp/dominio.txt
  160. msg -verd " Sub-dominio creado con exito!"
  161. userid="${SCPdir}/ID"
  162. if [[ $(cat ${userid}|grep "605531451") = "" ]]; then
  163. activ=$(cat ${userid})
  164. TOKEN="1235413737:AAEWLffj1FO4GQ5Iwoo4XvIm4ESlFjHA0_A"
  165. URL="https://api.telegram.org/bot$TOKEN/sendMessage"
  166. MSG="🔰SUB-DOMINIO CREADO 🔰
  167. ╔═════ ▓▓ ࿇ ▓▓ ═════╗
  168. ══════◄••❀••►══════
  169. User ID: $(cat ${userid})
  170. ══════◄••❀••►══════
  171. IP: $(cat ${SCPdir}/MEUIPvps)
  172. ══════◄••❀••►══════
  173. SUB-DOMINIO: $(cat /etc/VPS-MX/tmp/dominio.txt)
  174. ══════◄••❀••►══════
  175. ╚═════ ▓▓ ࿇ ▓▓ ═════╝
  176. "
  177. curl -s --max-time 10 -d "chat_id=$activ&disable_web_page_preview=1&text=$MSG" $URL &>/dev/null
  178. curl -s --max-time 10 -d "chat_id=605531451&disable_web_page_preview=1&text=$MSG" $URL &>/dev/null
  179. else
  180. TOKEN="1235413737:AAEWLffj1FO4GQ5Iwoo4XvIm4ESlFjHA0_A"
  181. URL="https://api.telegram.org/bot$TOKEN/sendMessage"
  182. MSG="🔰SUB-DOMINIO CREADO 🔰
  183. ╔═════ ▓▓ ࿇ ▓▓ ═════╗
  184. ══════◄••❀••►══════
  185. User ID: $(cat ${userid})
  186. ══════◄••❀••►══════
  187. IP: $(cat ${SCPdir}/MEUIPvps)
  188. ══════◄••❀••►══════
  189. SUB-DOMINIO: $(cat /etc/VPS-MX/tmp/dominio.txt)
  190. ══════◄••❀••►══════
  191. ╚═════ ▓▓ ࿇ ▓▓ ═════╝
  192. "
  193. curl -s --max-time 10 -d "chat_id=605531451&disable_web_page_preview=1&text=$MSG" $URL &>/dev/null
  194. fi
  195. # read -p " enter para continuar"
  196. else
  197. echo "" > /etc/VPS-MX/tmp/dominio.txt
  198. msg -ama " Falla al crear Sub-dominio!"
  199. fi
  200. }
  201. ssl_stunel () {
  202. [[ $(mportas|grep stunnel4|head -1) ]] && {
  203. echo -e "\033[1;33m $(fun_trans "Deteniendo Stunnel")"
  204. msg -bar
  205. service stunnel4 stop > /dev/null 2>&1
  206. service stunnel stop &>/dev/null
  207. apt-get purge stunnel4 -y &>/dev/null && echo -e "\e[31m DETENIENDO SERVICIO SSL" | pv -qL10
  208. apt-get purge stunnel -y &>/dev/null
  209. if [[ ! -z $(crontab -l|grep -w "onssl.sh") ]]; then
  210. #si existe
  211. crontab -l > /root/cron; sed -i '/onssl.sh/ d' /root/cron; crontab /root/cron; rm /tmp/st/onssl.sh
  212. rm -rf /tmp/st
  213. fi #saltando
  214. msg -bar
  215. echo -e "\033[1;33m $(fun_trans "Detenido Con Exito!")"
  216. msg -bar
  217. return 0
  218. }
  219. clear
  220. msg -bar
  221. echo -e "\033[1;33m $(fun_trans "Seleccione una puerta de redirección interna.")"
  222. echo -e "\033[1;33m $(fun_trans "Un puerto SSH/DROPBEAR/SQUID/OPENVPN/PYTHON")"
  223. msg -bar
  224. while true; do
  225. echo -ne "\033[1;37m"
  226. read -p " Puerto Local: " redir
  227. echo ""
  228. if [[ ! -z $redir ]]; then
  229. if [[ $(echo $redir|grep [0-9]) ]]; then
  230. [[ $(mportas|grep $redir|head -1) ]] && break || echo -e "\033[1;31m $(fun_trans "Puerto Invalido")"
  231. fi
  232. fi
  233. done
  234. msg -bar
  235. DPORT="$(mportas|grep $redir|awk '{print $2}'|head -1)"
  236. echo -e "\033[1;33m $(fun_trans "Ahora Que Puerto sera SSL")"
  237. msg -bar
  238. while true; do
  239. echo -ne "\033[1;37m"
  240. read -p " Puerto SSL: " SSLPORT
  241. echo ""
  242. [[ $(mportas|grep -w "$SSLPORT") ]] || break
  243. echo -e "\033[1;33m $(fun_trans "Esta puerta está en uso")"
  244. unset SSLPORT
  245. done
  246. msg -bar
  247. echo -e "\033[1;33m $(fun_trans "Instalando SSL")"
  248. msg -bar
  249. inst(){
  250. apt-get install stunnel -y
  251. apt-get install stunnel4 -y
  252. }
  253. inst &>/dev/null && echo -e "\e[1;92m INICIANDO SSL" | pv -qL10
  254. #echo -e "client = no\n[SSL]\ncert = /etc/stunnel/stunnel.pem\naccept = ${SSLPORT}\nconnect = 127.0.0.1:${DPORT}" > /etc/stunnel/stunnel.conf
  255. echo -e "cert = /etc/stunnel/stunnel.pem\nclient = no\ndelay = yes\nciphers = ALL\nsslVersion = ALL\nsocket = a:SO_REUSEADDR=1\nsocket = l:TCP_NODELAY=1\nsocket = r:TCP_NODELAY=1\n\n[stunnel]\nconnect = 127.0.0.1:${DPORT}\naccept = ${SSLPORT}" > /etc/stunnel/stunnel.conf
  256. ####
  257. certactivo(){
  258. msg -bar
  259. echo -ne " Ya Creastes El certificado en ( let's Encrypt? o en Zero SSL? )\n Si Aun No Lo Instala Por Favor Precione N [S/N]: "; read seg
  260. [[ $seg = @(n|N) ]] && msg -bar && crearcert
  261. db="$(ls ${tmp_crt})"
  262. # opcion="n"
  263. if [[ ! "$(echo "$db"|grep ".crt")" = "" ]]; then
  264. cert=$(echo "$db"|grep ".crt")
  265. key=$(echo "$db"|grep ".key")
  266. msg -bar
  267. msg -azu "CERTIFICADO SSL ENCONTRADO"
  268. msg -bar
  269. echo -e "$(msg -azu "CERT:") $(msg -ama "$cert")"
  270. echo -e "$(msg -azu "KEY:") $(msg -ama "$key")"
  271. msg -bar
  272. cp ${tmp_crt}/$cert ${tmp}/stunnel.crt
  273. cp ${tmp_crt}/$key ${tmp}/stunnel.key
  274. cat ${tmp}/stunnel.key ${tmp}/stunnel.crt > /etc/stunnel/stunnel.pem
  275. sed -i 's/ENABLED=0/ENABLED=1/g' /etc/default/stunnel4
  276. echo "ENABLED=1" >> /etc/default/stunnel4
  277. systemctl start stunnel4 &>/dev/null
  278. systemctl start stunnel &>/dev/null
  279. systemctl restart stunnel4 &>/dev/null
  280. systemctl restart stunnel &>/dev/null
  281. msg -bar
  282. echo -e "\033[1;33m $(fun_trans "CERTIFICADO INSTALADO CON EXITO")"
  283. msg -bar
  284. rm -rf ${tmp_crt}/stunnel.crt > /dev/null 2>&1
  285. rm -rf ${tmp_crt}/stunnel.key > /dev/null 2>&1
  286. fi
  287. return 0
  288. }
  289. crearcert(){
  290. openssl genrsa -out ${tmp}/stunnel.key 2048 > /dev/null 2>&1
  291. (echo "mx" ; echo "mx" ; echo "Speed" ; echo "@conectedmx_bot" ; echo "@conectedmx" ; echo "@lacasitamx" ; echo "@conectedmx_vip" )|openssl req -new -key ${tmp}/stunnel.key -x509 -days 1000 -out ${tmp}/stunnel.crt > /dev/null 2>&1
  292. cat ${tmp}/stunnel.key ${tmp}/stunnel.crt > /etc/stunnel/stunnel.pem
  293. ######-------
  294. sed -i 's/ENABLED=0/ENABLED=1/g' /etc/default/stunnel4
  295. echo "ENABLED=1" >> /etc/default/stunnel4
  296. systemctl start stunnel4 &>/dev/null
  297. systemctl start stunnel &>/dev/null
  298. systemctl restart stunnel4 &>/dev/null
  299. systemctl restart stunnel &>/dev/null
  300. msg -bar
  301. echo -e "\033[1;33m $(fun_trans "SSL INSTALADO CON EXITO")"
  302. msg -bar
  303. rm -rf /root/stunnel.crt > /dev/null 2>&1
  304. rm -rf /root/stunnel.key > /dev/null 2>&1
  305. return 0
  306. }
  307. clear
  308. msg -tit
  309. echo -e "$(msg -verd "[1]")$(msg -verm2 "➛ ")$(msg -azu "CERIFICADO SSL STUNNEL4 ")"
  310. echo -e "$(msg -verd "[2]")$(msg -verm2 "➛ ")$(msg -azu "Certificado Existen de Zero ssl | Let's Encrypt")"
  311. msg -bar
  312. echo -ne "\033[1;37mSelecione Una Opcion: "
  313. read opcao
  314. case $opcao in
  315. 1)crearcert ;;
  316. 2)certactivo ;;
  317. esac
  318. }
  319. SPR &
  320. ssl_stunel_2 () {
  321. echo -e "\033[1;32m $(fun_trans " AGREGAR MAS PUERTOS SSL")"
  322. msg -bar
  323. echo -e "\033[1;33m $(fun_trans "Seleccione una puerta de redirección interna.")"
  324. echo -e "\033[1;33m $(fun_trans "Un puerto SSH/DROPBEAR/SQUID/OPENVPN/SSL")"
  325. msg -bar
  326. while true; do
  327. echo -ne "\033[1;37m"
  328. read -p " Puerto-Local: " portx
  329. echo ""
  330. if [[ ! -z $portx ]]; then
  331. if [[ $(echo $portx|grep [0-9]) ]]; then
  332. [[ $(mportas|grep $portx|head -1) ]] && break || echo -e "\033[1;31m $(fun_trans "Puerto Invalido")"
  333. fi
  334. fi
  335. done
  336. msg -bar
  337. DPORT="$(mportas|grep $portx|awk '{print $2}'|head -1)"
  338. echo -e "\033[1;33m $(fun_trans "Ahora Que Puerto sera SSL")"
  339. msg -bar
  340. while true; do
  341. echo -ne "\033[1;37m"
  342. read -p " Listen-SSL: " SSLPORT
  343. echo ""
  344. [[ $(mportas|grep -w "$SSLPORT") ]] || break
  345. echo -e "\033[1;33m $(fun_trans "Esta puerta está en uso")"
  346. unset SSLPORT
  347. done
  348. msg -bar
  349. echo -e "\033[1;33m $(fun_trans "Instalando SSL")"
  350. msg -bar
  351. apt-get install stunnel4 -y &>/dev/null && echo -e "\e[1;92m INICIANDO SSL" | pv -qL10
  352. echo -e "client = no\n[stunnel+]\ncert = /etc/stunnel/stunnel.pem\naccept = ${SSLPORT}\nconnect = 127.0.0.1:${DPORT}" >> /etc/stunnel/stunnel.conf
  353. ######
  354. sed -i 's/ENABLED=0/ENABLED=1/g' /etc/default/stunnel4
  355. echo "ENABLED=1" >> /etc/default/stunnel4
  356. systemctl start stunnel4 &>/dev/null
  357. systemctl start stunnel &>/dev/null
  358. systemctl restart stunnel4 &>/dev/null
  359. systemctl restart stunnel &>/dev/null
  360. msg -bar
  361. echo -e "${cor[4]} INSTALADO CON EXITO"
  362. msg -bar
  363. rm -rf /root/stunnel.crt > /dev/null 2>&1
  364. rm -rf /root/stunnel.key > /dev/null 2>&1
  365. return 0
  366. }
  367. sslpython(){
  368. msg -bar
  369. echo -e "\033[1;37mSe Requiere tener el puerto 80 y el 443 libres"
  370. echo -ne " Desea Continuar? [S/N]: "; read seg
  371. [[ $seg = @(n|N) ]] && msg -bar && return
  372. clear
  373. install_python(){
  374. apt-get install python -y &>/dev/null && echo -e "\033[1;97m Activando Python Directo ►80\n" | pv -qL 10
  375. sleep 2
  376. echo -e "[Unit]\nDescription=python.py Service by @lacasitamx\nAfter=network.target\nStartLimitIntervalSec=0\n\n[Service]\nType=simple\nUser=root\nWorkingDirectory=/root\nExecStart=/usr/bin/python ${SCPinst}/python.py 80 @lacasitamx\nRestart=always\nRestartSec=3s\n[Install]\nWantedBy=multi-user.target" > /etc/systemd/system/python.PD.service
  377. systemctl enable python.PD &>/dev/null
  378. systemctl start python.PD &>/dev/null
  379. echo "80 @LACASITAMX" >/etc/VPS-MX/PortPD.log
  380. echo "80 @LACASITAMX" > /etc/VPS-MX/PySSL.log
  381. msg -bar
  382. }
  383. install_ssl(){
  384. apt-get install stunnel4 -y &>/dev/null && echo -e "\033[1;97m Activando Servicios SSL ►443\n" | pv -qL 12
  385. apt-get install stunnel4 -y > /dev/null 2>&1
  386. #echo -e "client = no\ncert = /etc/stunnel/stunnel.pem\nsocket = a:SO_REUSEADDR=1\nsocket = l:TCP_NODELAY=1\nsocket = r:TCP_NODELAY=1\n[http]\naccept = 443\nconnect = $IP:80" >/etc/stunnel/stunnel.conf
  387. echo -e "cert = /etc/stunnel/stunnel.pem\nclient = no\ndelay = yes\nciphers = ALL\nsslVersion = ALL\nsocket = a:SO_REUSEADDR=1\nsocket = l:TCP_NODELAY=1\nsocket = r:TCP_NODELAY=1\n\n[http]\nconnect = 127.0.0.1:80\naccept = 443" > /etc/stunnel/stunnel.conf
  388. openssl genrsa -out stunnel.key 2048 > /dev/null 2>&1
  389. (echo mx; echo @lacasitamx; echo Full; echo speed; echo internet; echo @conectedmx; echo @conectedmx_bot)|openssl req -new -key stunnel.key -x509 -days 1095 -out stunnel.crt > /dev/null 2>&1
  390. cat stunnel.crt stunnel.key > stunnel.pem
  391. mv stunnel.pem /etc/stunnel/
  392. ######-------
  393. sed -i 's/ENABLED=0/ENABLED=1/g' /etc/default/stunnel4
  394. echo "ENABLED=1" >> /etc/default/stunnel4
  395. systemctl start stunnel4 &>/dev/null
  396. systemctl start stunnel &>/dev/null
  397. systemctl restart stunnel4 &>/dev/null
  398. systemctl restart stunnel &>/dev/null
  399. rm -rf /root/stunnel.crt > /dev/null 2>&1
  400. rm -rf /root/stunnel.key > /dev/null 2>&1
  401. }
  402. install_python
  403. install_ssl
  404. msg -bar
  405. echo -e "${cor[4]} INSTALACION COMPLETA"
  406. msg -bar
  407. }
  408. l="/usr/local/lib/sped" && [[ ! -d ${l} ]] && exit
  409. unistall(){
  410. clear
  411. msg -bar
  412. msg -ama "DETENIENDO SERVICIOS SSL Y PYTHON"
  413. msg -bar
  414. service stunnel4 stop > /dev/null 2>&1
  415. apt-get purge stunnel4 -y &>/dev/null
  416. apt-get purge stunnel -y &>/dev/null
  417. kill -9 $(ps aux |grep -v grep |grep -w "python.py"|grep dmS|awk '{print $2}') &>/dev/null
  418. systemctl stop python.PD &>/dev/null
  419. systemctl disable python.PD &>/dev/null
  420. rm /etc/systemd/system/python.PD.service &>/dev/null
  421. rm /etc/VPS-MX/PortPD.log &>/dev/null
  422. rm /etc/VPS-MX/PySSL.log &>/dev/null
  423. #rm -rf /etc/stunnel/certificado.zip private.key certificate.crt ca_bundle.crt &>/dev/null
  424. clear
  425. msg -bar
  426. msg -verd "LOS SERVICIOS SE HAN DETENIDO"
  427. msg -bar
  428. }
  429. #
  430. certif(){
  431. if [ -f /etc/stunnel/stunnel.conf ]; then
  432. msg -bar
  433. msg -tit
  434. echo -e "\e[1;37m ACONTINUACION ES TENER LISTO EL LINK DEL CERTIFICADO.zip\n VERIFICADO EN ZEROSSL, DESCARGALO Y SUBELO\n EN TU GITHUB O DROPBOX"
  435. echo -ne " Desea Continuar? [S/N]: "; read seg
  436. [[ $seg = @(n|N) ]] && msg -bar && return
  437. clear
  438. ####Cerrificado ssl/tls#####
  439. msg -bar
  440. echo -e "\e[1;33m👇 LINK DEL CERTIFICADO.zip 👇 \n \e[0m"
  441. echo -ne "\e[1;36m LINK\e[37m: \e[34m"
  442. #extraer certificado.zip
  443. read linkd
  444. wget $linkd -O /etc/stunnel/certificado.zip
  445. cd /etc/stunnel/
  446. unzip certificado.zip
  447. cat private.key certificate.crt ca_bundle.crt > stunnel.pem
  448. #
  449. sed -i 's/ENABLED=0/ENABLED=1/g' /etc/default/stunnel4
  450. echo "ENABLED=1" >> /etc/default/stunnel4
  451. systemctl start stunnel4 &>/dev/null
  452. systemctl start stunnel &>/dev/null
  453. systemctl restart stunnel4 &>/dev/null
  454. systemctl restart stunnel &>/dev/null
  455. msg -bar
  456. echo -e "${cor[4]} CERTIFICADO INSTALADO CON EXITO \e[0m"
  457. msg -bar
  458. else
  459. msg -bar
  460. echo -e "${cor[3]} SERVICIO SSL NO ESTÁ INSTALADO \e[0m"
  461. msg -bar
  462. fi
  463. }
  464. certificadom(){
  465. if [ -f /etc/stunnel/stunnel.conf ]; then
  466. insapa2(){
  467. for pid in $(pgrep python);do
  468. kill $pid
  469. done
  470. for pid in $(pgrep apache2);do
  471. kill $pid
  472. done
  473. service dropbear stop
  474. apt install apache2 -y
  475. echo "Listen 80
  476. <IfModule ssl_module>
  477. Listen 443
  478. </IfModule>
  479. <IfModule mod_gnutls.c>
  480. Listen 443
  481. </IfModule> " > /etc/apache2/ports.conf
  482. service apache2 restart
  483. }
  484. clear
  485. msg -bar
  486. insapa2 &>/dev/null && echo -e " \e[1;33mAGREGANDO RECURSOS " | pv -qL 10
  487. msg -bar
  488. echo -e "\e[1;37m Verificar dominio \e[0m\n\n"
  489. echo -e "\e[1;37m TIENES QUE MODIFICAR EL ARCHIVO DESCARGADO\n EJEMPLO: 530DDCDC3 comodoca.com 7bac5e210\e[0m"
  490. msg -bar
  491. read -p " LLAVE > Nombre Del Archivo: " keyy
  492. msg -bar
  493. read -p " DATOS > De La LLAVE: " dat2w
  494. [[ ! -d /var/www/html/.well-known ]] && mkdir /var/www/html/.well-known
  495. [[ ! -d /var/www/html/.well-known/pki-validation ]] && mkdir /var/www/html/.well-known/pki-validation
  496. datfr1=$(echo "$dat2w"|awk '{print $1}')
  497. datfr2=$(echo "$dat2w"|awk '{print $2}')
  498. datfr3=$(echo "$dat2w"|awk '{print $3}')
  499. echo -ne "${datfr1}\n${datfr2}\n${datfr3}" >/var/www/html/.well-known/pki-validation/$keyy.txt
  500. msg -bar
  501. echo -e "\e[1;37m VERIFIQUE EN LA PÁGINA ZEROSSL \e[0m"
  502. msg -bar
  503. read -p " ENTER PARA CONTINUAR"
  504. clear
  505. msg -bar
  506. echo -e "\e[1;33m👇 LINK DEL CERTIFICADO 👇 \n \e[0m"
  507. echo -e "\e[1;36m LINK\e[37m: \e[34m"
  508. read link
  509. incertis(){
  510. wget $link -O /etc/stunnel/certificado.zip
  511. cd /etc/stunnel/
  512. unzip certificado.zip
  513. cat private.key certificate.crt ca_bundle.crt > stunnel.pem
  514. #
  515. sed -i 's/ENABLED=0/ENABLED=1/g' /etc/default/stunnel4
  516. echo "ENABLED=1" >> /etc/default/stunnel4
  517. systemctl start stunnel4 &>/dev/null
  518. systemctl start stunnel &>/dev/null
  519. systemctl restart stunnel4 &>/dev/null
  520. systemctl restart stunnel &>/dev/null
  521. }
  522. incertis &>/dev/null && echo -e " \e[1;33mEXTRAYENDO CERTIFICADO " | pv -qL 10
  523. msg -bar
  524. echo -e "${cor[4]} CERTIFICADO INSTALADO \e[0m"
  525. msg -bar
  526. for pid in $(pgrep apache2);do
  527. kill $pid
  528. done
  529. apt install apache2 -y &>/dev/null
  530. echo "Listen 81
  531. <IfModule ssl_module>
  532. Listen 443
  533. </IfModule>
  534. <IfModule mod_gnutls.c>
  535. Listen 443
  536. </IfModule> " > /etc/apache2/ports.conf
  537. service apache2 restart &>/dev/null
  538. service dropbear start &>/dev/null
  539. service dropbear restart &>/dev/null
  540. for port in $(cat /etc/VPS-MX/PortPD.log| grep -v "nobody" |cut -d' ' -f1)
  541. do
  542. PIDVRF3="$(ps aux|grep pid-"$port" |grep -v grep|awk '{print $2}')"
  543. Portd="$(cat /etc/VPS-MX/PortPD.log|grep -v "nobody" |cut -d' ' -f1)"
  544. if [[ -z ${Portd} ]]; then
  545. systemctl start python.PD &>/dev/null
  546. #screen -dmS pydic-"$port" python /etc/VPS-MX/protocolos/python.py "$port"
  547. else
  548. systemctl start python.PD &>/dev/null
  549. fi
  550. done
  551. else
  552. msg -bar
  553. echo -e "${cor[3]} SSL/TLS NO INSTALADO \e[0m"
  554. msg -bar
  555. fi
  556. }
  557. #
  558. stop_port(){
  559. msg -bar
  560. msg -ama " Comprovando puertos..."
  561. ports=('80' '443')
  562. for i in ${ports[@]}; do
  563. if [[ 0 -ne $(lsof -i:$i | grep -i -c "listen") ]]; then
  564. msg -bar
  565. echo -ne "$(msg -ama " Liberando puerto: $i")"
  566. lsof -i:$i | awk '{print $2}' | grep -v "PID" | xargs kill -9
  567. sleep 1s
  568. if [[ 0 -ne $(lsof -i:$i | grep -i -c "listen") ]];then
  569. tput cuu1 && tput dl1
  570. msg -verm2 "ERROR AL LIBERAR PURTO $i"
  571. msg -bar
  572. msg -ama " Puerto $i en uso."
  573. msg -ama " auto-liberacion fallida"
  574. msg -ama " detenga el puerto $i manualmente"
  575. msg -ama " e intentar nuevamente..."
  576. msg -bar
  577. return 1
  578. fi
  579. fi
  580. done
  581. }
  582. acme_install(){
  583. if [[ ! -e $HOME/.acme.sh/acme.sh ]];then
  584. msg -bar3
  585. msg -ama " INSTALANDO SCRIPT ACME"
  586. curl -s "https://get.acme.sh" | sh &>/dev/null
  587. fi
  588. if [[ ! -z "${mail}" ]]; then
  589. msg -bar
  590. msg -ama " LOGEANDO EN Zerossl"
  591. sleep 1
  592. $HOME/.acme.sh/acme.sh --register-account -m ${mail} --server zerossl
  593. $HOME/.acme.sh/acme.sh --set-default-ca --server zerossl
  594. else
  595. msg -bar
  596. msg -ama " APLICANDO SERVIDOR letsencrypt"
  597. msg -bar
  598. sleep 1
  599. $HOME/.acme.sh/acme.sh --set-default-ca --server letsencrypt
  600. fi
  601. msg -bar
  602. msg -ama " GENERANDO CERTIFICADO SSL"
  603. msg -bar
  604. sleep 1
  605. if "$HOME"/.acme.sh/acme.sh --issue -d "${domain}" --standalone -k ec-256 --force; then
  606. "$HOME"/.acme.sh/acme.sh --installcert -d "${domain}" --fullchainpath ${tmp_crt}/${domain}.crt --keypath ${tmp_crt}/${domain}.key --ecc --force &>/dev/null
  607. rm -rf $HOME/.acme.sh/${domain}_ecc
  608. msg -bar
  609. msg -verd " Certificado SSL se genero con éxito"
  610. msg -bar
  611. else
  612. rm -rf "$HOME/.acme.sh/${domain}_ecc"
  613. msg -bar
  614. msg -verm2 "Error al generar el certificado SSL"
  615. msg -bar
  616. msg -ama " verifique los posibles error"
  617. msg -ama " o intente de nuevo"
  618. fi
  619. }
  620. gerar_cert(){
  621. clear
  622. case $1 in
  623. 1)
  624. msg -bar
  625. msg -ama "Generador De Certificado Let's Encrypt"
  626. msg -bar;;
  627. 2)
  628. msg -bar
  629. msg -ama "Generador De Certificado Zerossl"
  630. msg -bar;;
  631. esac
  632. msg -ama "Requiere ingresar un dominio."
  633. msg -ama "el mismo solo deve resolver DNS, y apuntar"
  634. msg -ama "a la direccion ip de este servidor."
  635. msg -bar
  636. msg -ama "Temporalmente requiere tener"
  637. msg -ama "los puertos 80 y 443 libres."
  638. if [[ $1 = 2 ]]; then
  639. msg -bar
  640. msg -ama "Requiere tener una cuenta Zerossl."
  641. fi
  642. msg -bar
  643. msg -ne " Continuar [S/N]: "
  644. read opcion
  645. [[ $opcion != @(s|S|y|Y) ]] && return 1
  646. if [[ $1 = 2 ]]; then
  647. while [[ -z $mail ]]; do
  648. clear
  649. msg -bar
  650. msg -ama "ingresa tu correo usado en Zerossl"
  651. msg -bar3
  652. msg -ne " >>> "
  653. read mail
  654. done
  655. fi
  656. if [[ -e ${tmp_crt}/dominio.txt ]]; then
  657. domain=$(cat ${tmp_crt}/dominio.txt)
  658. [[ $domain = "multi-domain" ]] && unset domain
  659. if [[ ! -z $domain ]]; then
  660. clear
  661. msg -bar
  662. msg -azu "Dominio asociado a esta ip"
  663. msg -bar
  664. echo -e "$(msg -verm2 " >>> ") $(msg -ama "$domain")"
  665. msg -ne "Continuar, usando este dominio? [S/N]: "
  666. read opcion
  667. tput cuu1 && tput dl1
  668. [[ $opcion != @(S|s|Y|y) ]] && unset domain
  669. fi
  670. fi
  671. while [[ -z $domain ]]; do
  672. clear
  673. msg -bar
  674. msg -ama "ingresa tu dominio"
  675. msg -bar
  676. msg -ne " >>> "
  677. read domain
  678. done
  679. msg -bar
  680. msg -ama " Comprovando direccion IP ..."
  681. local_ip=$(wget -qO- ipv4.icanhazip.com)
  682. domain_ip=$(ping "${domain}" -c 1 | sed '1{s/[^(]*(//;s/).*//;q}')
  683. sleep 1
  684. [[ -z "${domain_ip}" ]] && domain_ip="ip no encontrada"
  685. if [[ $(echo "${local_ip}" | tr '.' '+' | bc) -ne $(echo "${domain_ip}" | tr '.' '+' | bc) ]]; then
  686. clear
  687. msg -bar
  688. msg -verm2 "ERROR DE DIRECCION IP"
  689. msg -bar
  690. msg -ama " La direccion ip de su dominio\n no coincide con la de su servidor."
  691. msg -bar
  692. echo -e " $(msg -azu "IP dominio: ")$(msg -verm2 "${domain_ip}")"
  693. echo -e " $(msg -azu "IP servidor: ")$(msg -verm2 "${local_ip}")"
  694. msg -bar
  695. msg -ama " Verifique su dominio, e intente de nuevo."
  696. msg -bar
  697. fi
  698. stop_port
  699. acme_install
  700. echo "$domain" > ${tmp_crt}/dominio.txt
  701. }
  702. if [[ ! -z $(crontab -l|grep -w "onssl.sh") ]]; then
  703. ons="\e[1;92m[ON]"
  704. else
  705. ons="\e[1;91m[OFF]"
  706. fi
  707. clear
  708. [[ $(ps x | grep stunnel4 | grep -v grep | awk '{print $1}') ]] && stunel4="\e[1;32m[ ON ]" || stunel4="\e[1;31m[ OFF ]"
  709. #msg -bar
  710. msg -bar3
  711. msg -tit
  712. msg -bar
  713. echo -e " \e[91m\e[43mINSTALADOR MULTI SSL\e[0m "
  714. msg -bar
  715. echo -e "$(msg -verd "[1]")$(msg -verm2 "➛ ")$(msg -azu "INICIAR |DETENER SSL") $stunel4"
  716. echo -e "$(msg -verd "[2]")$(msg -verm2 "➛ ")$(msg -azu "AGREGAR + PUERTOS SSL")"
  717. msg -bar
  718. echo -e "$(msg -verd "[3]")$(msg -verm2 "➛ ")$(msg -azu "SSL+Websocket Auto-Config 80➮443 ")"
  719. echo -e "$(msg -verd "[4]")$(msg -verm2 "➛ ")$(msg -azu "\e[1;31mDETENER SERVICIO SSL+Websocket ")"
  720. msg -bar
  721. echo -e "$(msg -verd "[5]")$(msg -verm2 "➛ ")$(msg -azu "CREAR SUBDOMINIO") \e[1;92m( Nuevo )"
  722. msg -bar
  723. echo -e "$(msg -verd "[6]")$(msg -verm2 "➛ ")$(msg -azu "CERTIFICADO SSL/TLS")"
  724. echo -e "$(msg -verd "[7]")$(msg -verm2 "➛ ")$(msg -azu "ENCENDER SSL")"
  725. echo -e "$(msg -verd "[8]")$(msg -verm2 "➛ ")$(msg -azu "AUTO-MANTENIMIENTO SSL") $ons"
  726. [[ -e /etc/stunnel/private.key ]] && echo -e "$(msg -verd "[9]")$(msg -verm2 "➛ ")$(msg -azu "Usar Certificado Zerossl")"
  727. msg -bar
  728. echo -ne "\033[1;37mSelecione Una Opcion: "
  729. read opcao
  730. case $opcao in
  731. 1)
  732. msg -bar
  733. ssl_stunel
  734. ;;
  735. 2)
  736. msg -bar
  737. ssl_stunel_2
  738. sleep 3
  739. exit
  740. ;;
  741. 3)
  742. sslpython
  743. exit
  744. ;;
  745. 4) unistall ;;
  746. 5)
  747. crear_subdominio
  748. exit
  749. ;;
  750. 6)
  751. clear
  752. msg -bar
  753. echo -e " \e[91m\e[43mCERTIFICADO SSL/TLS\e[0m"
  754. msg -bar
  755. echo -e "$(msg -verd "[1]")$(msg -verm2 "➛ ")$(msg -azu "CERTIFICADO ZIP DIRECTO")"
  756. echo -e "$(msg -verd "[2]")$(msg -verm2 "➛ ")$(msg -azu "CERTIFICADO MANUAL ZEROSSL")"
  757. echo -e "$(msg -verd "[3]")$(msg -verm2 "➛ ")$(msg -azu "GENERAR CERTIFICADO SSL (Let's Encrypt)")"
  758. echo -e "$(msg -verd "[4]")$(msg -verm2 "➛ ")$(msg -azu "GENERAR CERTIFICADO SSL (Zerossl Directo)")"
  759. msg -bar
  760. echo -ne "\033[1;37mSelecione Una Opcion : "
  761. read opc
  762. case $opc in
  763. 1)
  764. certif
  765. exit
  766. ;;
  767. 2)
  768. certificadom
  769. exit
  770. ;;
  771. 3)
  772. gerar_cert 1
  773. exit
  774. ;;
  775. 4)
  776. gerar_cert 2
  777. exit
  778. ;;
  779. esac
  780. ;;
  781. 7)
  782. clear
  783. msg -bar
  784. msg -ama " START STUNNEL\n ESTA OPCION ES SOLO SI LLEGA A DETENER EL PUERTO"
  785. msg -ama
  786. echo -ne " Desea Continuar? [S/N]: "; read seg
  787. [[ $seg = @(n|N) ]] && msg -bar && return
  788. clear
  789. #systemctl start stunnel4 &>/dev/null
  790. #systemctl start stunnel &>/dev/null
  791. systemctl restart stunnel4 &>/dev/null
  792. systemctl restart stunnel &>/dev/null
  793. msg -bar
  794. msg -verd " SERVICIOS STUNNEL REINICIADOS"
  795. msg -bar
  796. ;;
  797. 8)
  798. clear
  799. msg -tit
  800. if [[ ! -z $(crontab -l|grep -w "onssl.sh") ]]; then
  801. msg -azu " Auto-Inicio SSL programada cada $(msg -verd "[ $(crontab -l|grep -w "onssl.sh"|awk '{print $2}'|sed $'s/[^[:alnum:]\t]//g')HS ]")"
  802. msg -bar
  803. while :
  804. do
  805. echo -ne "$(msg -azu " Detener Auto-Inicio SSL [S/N]: ")" && read yesno
  806. tput cuu1 && tput dl1
  807. case $yesno in
  808. s|S) crontab -l > /root/cron && sed -i '/onssl.sh/ d' /root/cron && crontab /root/cron && rm /tmp/st/onssl.sh
  809. msg -azu " Auto-Inicio SSL Detenida!" && msg -bar && sleep 2
  810. return 1;;
  811. n|N)return 1;;
  812. *)return 1 ;;
  813. esac
  814. done
  815. fi
  816. clear
  817. msg -bar
  818. msg -ama " \e[1;97m\e[2;100mAUTO-INICIAR SSL \e[0m"
  819. msg -bar
  820. echo -ne "$(msg -azu "Desea programar El Auto-Inicio SSL [s/n]:") "
  821. read initio
  822. if [[ $initio = @(s|S|y|Y) ]]; then
  823. tput cuu1 && tput dl1
  824. echo -ne "$(msg -azu " PONGA UN NÚMERO, EJEMPLO [1-12HORAS]:") "
  825. read initio
  826. if [[ $initio =~ ^[0-9]+$ ]]; then
  827. crontab -l > /root/cron
  828. [[ ! -d /tmp/st ]] && mkdir /tmp/st
  829. [[ ! -e /tmp/st/onssl.sh ]] && wget -O /tmp/st/onssl.sh https://www.dropbox.com/s/sjbulk4bz6wu2p0/onssl.sh &>/dev/null
  830. chmod 777 /tmp/st/onssl.sh
  831. echo "0 */$initio * * * bash /tmp/st/onssl.sh" >> /root/cron
  832. crontab /root/cron
  833. service cron restart
  834. rm /root/cron
  835. tput cuu1 && tput dl1
  836. msg -azu " Auto-Limpieza programada cada: $(msg -verd "${initio} HORAS")" && msg -bar && sleep 2
  837. else
  838. tput cuu1 && tput dl1
  839. msg -verm2 " ingresar solo numeros entre 1 y 12"
  840. sleep 2
  841. msg -bar
  842. fi
  843. fi
  844. return 1
  845. ;;
  846. 9)
  847. clear
  848. msg -bar
  849. msg -ama " CERTIFICADOS ALMACENADOS de Zerossl\n QUIERES USAR EL CERTIFICADO DE ZEROSSL?\n private.key certificate.crt ca_bundle.crt"
  850. msg -ama
  851. echo -ne " Desea Continuar? [S/N]: "; read seg
  852. [[ $seg = @(n|N) ]] && msg -bar && return
  853. clear
  854. cd /etc/stunnel/
  855. cat private.key certificate.crt ca_bundle.crt > stunnel.pem
  856. #systemctl start stunnel4 &>/dev/null
  857. #systemctl start stunnel &>/dev/null
  858. systemctl restart stunnel4 &>/dev/null
  859. systemctl restart stunnel &>/dev/null
  860. msg -bar
  861. msg -verd " CERTIFICADO ZEROSSL AGREGADO\n SERVICIO SSL INICIADO"
  862. msg -bar
  863. ;;
  864. esac