diff --git a/gerar.sh b/gerar.sh
new file mode 100644
index 0000000..0f111a0
--- /dev/null
+++ b/gerar.sh
@@ -0,0 +1,790 @@
+#!/bin/bash
+# INSTALACAO BASICA
+clear
+
+SCPT_DIR="/etc/SPlus"
+IVAR="/etc/http-instas"
+BARRA="\033[1;36m-----------------------------------------------------\033[0m"
+BARRA2="\033[1;31m=====================================================\033[0m"
+_hora=$(printf '%(%H:%M:%S)T')
+_fecha=$(printf '%(%D)T')
+[[ -e /etc/NSCT ]] && nscript="$(cat < /etc/NSCT)"
+[[ -e /etc/newadm-instalacao ]] && {
+ BASICINST="$(cat /etc/newadm-instalacao)"
+} || {
+ BASICINST="$(ls ${SCPT_DIR})"
+}
+
+#PROCESSADOR
+_core=$(printf '%-1s' "$(grep -c cpu[0-9] /proc/stat)")
+_usop=$(printf '%-1s' "$(top -bn1 | awk '/Cpu/ { cpu = "" 100 - $8 "%" }; END { print cpu }')")
+
+#SISTEMA-USO DA CPU-MEMORIA RAM
+ram1=$(free -h | grep -i mem | awk {'print $2'})
+ram2=$(free -h | grep -i mem | awk {'print $4'})
+ram3=$(free -h | grep -i mem | awk {'print $3'})
+
+_ram=$(printf ' %-9s' "$(free -h | grep -i mem | awk {'print $2'})")
+_usor=$(printf '%-8s' "$(free -m | awk 'NR==2{printf "%.2f%%", $3*100/$2 }')")
+
+# Funcoes Globais
+msg () {
+local colors="/etc/new-adm-color"
+if [[ ! -e $colors ]]; then
+COLOR[0]='\033[1;37m' #BRAN='\033[1;37m'
+COLOR[1]='\e[31m' #VERMELHO='\e[31m'
+COLOR[2]='\e[32m' #VERDE='\e[32m'
+COLOR[3]='\e[33m' #AMARELO='\e[33m'
+COLOR[4]='\e[34m' #AZUL='\e[34m'
+COLOR[5]='\e[91m' #MAGENTA='\e[35m'
+COLOR[6]='\033[1;97m' #MAG='\033[1;36m'
+COLOR[7]='\033[1;49;95m'
+COLOR[8]='\033[1;49;96m'
+else
+local COL=0
+for number in $(cat $colors); do
+case $number in
+1)COLOR[$COL]='\033[1;37m';;
+2)COLOR[$COL]='\e[31m';;
+3)COLOR[$COL]='\e[32m';;
+4)COLOR[$COL]='\e[33m';;
+5)COLOR[$COL]='\e[34m';;
+6)COLOR[$COL]='\e[35m';;
+7)COLOR[$COL]='\033[1;36m';;
+8)COLOR[$COL]='\033[1;49;95m';;
+9)COLOR[$COL]='\033[1;49;96m';;
+esac
+let COL++
+done
+fi
+NEGRITO='\e[1m'
+SEMCOR='\e[0m'
+ case $1 in
+ -ne)cor="${COLOR[1]}${NEGRITO}" && echo -ne "${cor}${2}${SEMCOR}";;
+ -ama)cor="${COLOR[3]}${NEGRITO}" && echo -e "${cor}${2}${SEMCOR}";;
+ -verm)cor="${COLOR[3]}${NEGRITO}[!] ${COLOR[1]}" && echo -e "${cor}${2}${SEMCOR}";;
+ -verm2)cor="${COLOR[1]}${NEGRITO}" && echo -e "${cor}${2}${SEMCOR}";;
+ -aqua)cor="${COLOR[8]}${NEGRITO}" && echo -e "${cor}${2}${SEMCOR}";;
+ -azu)cor="${COLOR[6]}${NEGRITO}" && echo -e "${cor}${2}${SEMCOR}";;
+ -verd)cor="${COLOR[2]}${NEGRITO}" && echo -e "${cor}${2}${SEMCOR}";;
+ -bra)cor="${COLOR[0]}${SEMCOR}" && echo -e "${cor}${2}${SEMCOR}";;
+ "-bar2"|"-bar")cor="${COLOR[7]}=====================================================" && echo -e "${SEMCOR}${cor}${SEMCOR}";;
+ esac
+}
+
+os_system () {
+system=$(echo $(cat -n /etc/issue |grep 1 |cut -d' ' -f6,7,8 |sed 's/1//' |sed 's/ //'))
+echo $system|awk '{print $1, $2}'
+}
+
+meu_ipe () {
+[[ -e /usr/bin/vendor_code ]] && IP=$(cat < /usr/bin/vendor_code) || {
+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)
+MIP2=$(wget -qO- ipv4.icanhazip.com)
+[[ "$MIP" != "$MIP2" ]] && IP="$MIP2" || IP="$MIP"
+echo "$IP" > /usr/bin/vendor_code
+}
+echo ${IP}
+}
+
+# SCPT_DIR="/etc/SPlus"
+[[ ! -e ${SCPT_DIR} ]] && mkdir ${SCPT_DIR}
+INSTA_ARQUIVOS="ADMVPS.zip"
+DIR="/etc/http-shell"
+LIST="lista-arq"
+meu_ip () {
+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)
+MIP2=$(wget -qO- ipv4.icanhazip.com)
+[[ -z "$MIP2" ]] && MIP2=127.0.0.1
+[[ "$MIP" != "$MIP2" ]] && IP="$MIP2" || IP="$MIP"
+}
+
+mudar_instacao () {
+while [[ ${var[$value]} != 0 ]]; do
+[[ -e /etc/newadm-instalacao ]] && {
+ BASICINST="$(cat /etc/newadm-instalacao)"
+} || {
+ BASICINST="$(ls ${SCPT_DIR})"
+}
+msg -bar
+echo -e "MENÚ SELECCIÓN DE INSTALACIÓN"
+msg -bar
+i=1
+for arqx in `ls ${SCPT_DIR}`; do
+[[ $arqx = @(gerar.sh|http-server.py) ]] && continue
+[[ $(echo $BASICINST|grep -w "$arqx") ]] && echo -e "\033[1;32m[$i] \033[1;37m- [\033[1;31mX\033[1;37m] - \033[1;96m$arqx" || echo -e "\033[1;32m[$i] \033[1;37m- [ ] - \033[1;96m$arqx"
+var[$i]="$arqx"
+let i++
+done
+msg -bar
+echo "[0] - FINALIZAR PROCEDIMIENTO"
+msg -bar
+echo -ne "Seleccione el archivo [Agregar / Eliminar]: "
+read value
+[[ -z ${var[$value]} ]] && return
+if [[ $(echo $BASICINST|grep -w "${var[$value]}") ]]; then
+rm /etc/newadm-instalacao
+local BASIC=""
+ for INSTS in $(echo $BASICINST); do
+ [[ $INSTS = "${var[$value]}" ]] && continue
+ BASIC+="$INSTS "
+ done
+echo $BASIC > /etc/newadm-instalacao
+else
+echo "$BASICINST ${var[$value]}" > /etc/newadm-instalacao
+fi
+done
+}
+
+
+ofus () {
+unset server
+server=$(echo ${txt_ofuscatw}|cut -d':' -f1)
+unset txtofus
+number=$(expr length $1)
+for((i=1; i<$number+1; i++)); do
+txt[$i]=$(echo "$1" | cut -b $i)
+case ${txt[$i]} in
+".")txt[$i]="R";;
+"R")txt[$i]=".";;
+"9")txt[$i]="@";;
+"@")txt[$i]="9";;
+"5")txt[$i]="?";;
+"?")txt[$i]="5";;
+"0")txt[$i]="%";;
+"%")txt[$i]="0";;
+"4")txt[$i]="I";;
+"I")txt[$i]="4";;
+"/")txt[$i]="Y";;
+"Y")txt[$i]="/";;
+"-")txt[$i]="T";;
+"T")txt[$i]="-";;
+"L")txt[$i]="1";;
+"1")txt[$i]="L";;
+esac
+txtofus+="${txt[$i]}"
+done
+echo "$txtofus" | rev
+}
+
+gen_key_menu () {
+if [[ $1 = 1 ]]; then
+ #ADM BASIC
+ [[ ! -e ${DIR}/${KEY} ]] && mkdir ${DIR}/${KEY}
+ read -p "Nombre de usuario ( comprador de la key ): " nombrevalue
+ [[ -z $nombrevalue ]] && nombrevalue="SIN NOMBRE"
+ arqslist="$BASICINST"
+ for arqx in `echo "${arqslist}"`; do
+ [[ -e ${DIR}/${KEY}/${arqx} ]] && continue #ANULA ARQUIVO CASO EXISTA
+ cp ${SCPT_DIR}/${arqx} ${DIR}/${KEY}/
+ echo "$arqx" >> ${DIR}/${KEY}/${LIST}
+ done
+ echo "$nombrevalue" > ${DIR}/${KEY}.name
+ [[ -e /etc/gen_at.txt ]] && at now +$(cat /etc/gen_at.txt) <<< "rm -rf ${DIR}/${KEY}.name; rm -rf ${DIR}/${KEY}" &>/dev/null
+ tipo="ADM"
+ linck=1
+ key_ok
+elif [[ $1 = 3 ]]; then
+ # GERADOR KEYS
+ [[ ! -e ${DIR}/${KEY} ]] && mkdir ${DIR}/${KEY}
+ read -p "Nombre de usuario ( comprador de la key ): " nombrevalue
+ [[ -z $nombrevalue ]] && nombrevalue="SIN NOMBRE"
+ msg -bar
+ read -p "autorizar a generar key para generador [Y/N]: " -e -i n gen_gen
+ msg -bar
+ read -p "KEY DE ACTUALIZACIÓN?: [Y/N]: " -e -i n attGEN
+ [[ $(echo $nombrevalue|grep -w "FIXA") ]] && nombrevalue+=[GERADOR]
+ for arqx in `ls $SCPT_DIR`; do
+ [[ -e ${DIR}/${KEY}/$arqx ]] && continue #ANULA ARQUIVO CASO EXISTA
+ cp ${SCPT_DIR}/$arqx ${DIR}/${KEY}/
+ echo "$arqx" >> ${DIR}/${KEY}/${LIST}
+ done
+
+ if [[ $gen_gen = @(Y|y|S|s) ]]; then
+ echo "generador autorizado para generar keys de generadores" > ${DIR}/${KEY}/autorizar &>/dev/null
+ echo "autorizar" >> ${DIR}/${KEY}/${LIST}
+ fi
+
+ tipo="GEN"
+ if [[ $attGEN = @(Y|y|S|s) ]]; then
+ [[ -e ${DIR}/${KEY}/gerar.sh ]] && rm ${DIR}/${KEY}/gerar.sh
+ [[ -e ${DIR}/${KEY}/http-server.py ]] && rm ${DIR}/${KEY}/http-server.py
+ nombrevalue+="_ACT"
+ tipo+="_ACTUALIZACION"
+ fi
+ nombrevalue+="_GEN"
+ echo "$nombrevalue" > ${DIR}/${KEY}.name
+ [[ -e /etc/gen_at.txt ]] && at now +$(cat /etc/gen_at.txt) <<< "rm -rf ${DIR}/${KEY}.name; rm -rf ${DIR}/${KEY}" &>/dev/null
+ linck=2
+ key_ok
+elif [[ $1 = 2 ]]; then
+ #ADM BASIC FIJA
+ [[ ! -e ${DIR}/${KEY} ]] && mkdir ${DIR}/${KEY}
+ read -p "Nombre de usuario ( comprador de la key ): " nombrevalue
+ [[ -z $nombrevalue ]] && nombrevalue="SIN NOMBRE"
+ arqslist="$BASICINST"
+ for arqx in `echo "${arqslist}"`; do
+ [[ -e ${DIR}/${KEY}/$arqx ]] && continue #ANULA ARQUIVO CASO EXISTA
+ cp ${SCPT_DIR}/$arqx ${DIR}/${KEY}/
+ echo "$arqx" >> ${DIR}/${KEY}/${LIST}
+ done
+ echo KEY_FIJA > ${DIR}/${KEY}/key.fija
+ echo "$nombrevalue" > ${DIR}/${KEY}.name
+ [[ -e /etc/gen_at.txt ]] && at now +$(cat /etc/gen_at.txt) <<< "rm -rf ${DIR}/${KEY}.name; rm -rf ${DIR}/${KEY}" &>/dev/null
+ tipo="FIJADA"
+ linck=1
+ key_ok
+elif [[ $1 = 4 ]]; then
+ unset time
+ unset text
+ unset num
+ clear
+ msg -bar
+ echo -e "\033[7;49;35m Configuracion de auto eliminacion de keys \033[0m"
+ msg -bar
+ menu_func "MINUTOS" "HORAS" "DESACTIVAR $genat"
+ msg -bar
+ echo -ne "$(msg -verd "[0]") $(msg -aqua ">") "&& msg -bra "\033[7;49;35mAtras"
+ msg -bar
+ selection=$(selection_fun 3)
+ case ${selection} in
+ 1)time=minutes && text=MINUTOS;;
+ 2)time=hours && text=HORAS;;
+ 3)[[ -e /etc/gen_at.txt ]] && rm /etc/gen_at.txt && registro auto_eliminar_fijado_en:OFF
+ return;;
+ 0)return;;
+ esac
+ echo -ne "ESCRIBA LA CATIDAD DE $text: " && read num
+ [[ ! -z $num ]] && echo $num $time > /etc/gen_at.txt && registro auto_eliminar_fijado_en:ACTIVO TIEMPO_DEFINIDO:$num$text
+ gerar_key
+fi
+}
+
+gerar_key () {
+valuekey="$(date | md5sum | head -c10)"
+valuekey+="$(echo $(($RANDOM*10))|head -c 5)"
+unset KEY
+KEY="$valuekey"
+#CRIA DIR
+[[ ! -e ${DIR} ]] && mkdir ${DIR}
+#ENVIA ARQS
+i=0
+VALUE+="gerar.sh instgerador.sh http-server.py lista-arq $BASICINST"
+for arqx in `ls ${SCPT_DIR}`; do
+[[ $(echo $VALUE|grep -w "${arqx}") ]] && continue
+echo -e "[$i] -> ${arqx}"
+arq_list[$i]="${arqx}"
+let i++
+done
+[[ -e /etc/gen_at.txt ]] && genat="CADA: \033[1;32m$(cat /etc/gen_at.txt)" || genat="\033[1;31mOff"
+clear
+msg -bar
+echo -e "\033[7;49;35m Seleccione el tipo de Keys \033[0m"
+msg -bar
+
+[[ -e /etc/SPlus/gerar.sh ]] && {
+
+menu_func "GENERAR KEY DE INSTALACIÓN NETCOLVIP" "GENERAR KEY FIJA DE INSTALACIÓN NETCOLVIP" "GENERAR KEY DE GENERADOR DE KEYS" "AUTO ELIMINACION DE KEY $genat"
+msg -bar
+echo -ne "$(msg -verd "[0]") $(msg -aqua ">") "&& msg -bra "\033[7;49;35mAtras"
+msg -bar
+selection=$(selection_fun 4)
+case ${selection} in
+ 1) gen_key_menu 1;;
+ 2) gen_key_menu 2;;
+ 3) gen_key_menu 3;;
+ 4) gen_key_menu 4;;
+ 0)return;;
+esac
+} || {
+menu_func "GENERAR KEY DE INSTALACIÓN NETCOLVIP" "GENERAR KEY FIJA DE INSTALACIÓN NETCOLVIP" "AUTO ELIMINACION DE KEY $genat"
+msg -bar
+echo -ne "$(msg -verd "[0]") $(msg -aqua ">") "&& msg -bra "\033[7;49;35mAtras"
+msg -bar
+selection=$(selection_fun 3)
+case ${selection} in
+ 1) gen_key_menu 1;;
+ 2) gen_key_menu 2;;
+ 3) gen_key_menu 4;;
+ 0)return;;
+esac
+ }
+}
+
+key_ok () {
+keyfinal=$(ofus "$IP:1116/$valuekey/$LIST")
+registro KEY_INSTALL_DE:$tipo KEY:$keyfinal NOMBRE:$nombrevalue
+clear
+msg -bar
+echo -e "\033[7;49;35m >>>>>Key Generada Con Exito!<<<<< \033[0m"
+msg -bar
+echo -e "\033[1;32m $keyfinal"
+links_inst $linck
+echo -ne "\033[1;37m Enter para Finalizar"
+read foo
+}
+
+att_gen_key () {
+i=0
+rm ${SCPT_DIR}/*.x.c &> /dev/null
+[[ -z $(ls $DIR|grep -v "ERROR-KEY") ]] && return
+echo "[$i] Retornar"
+keys="$keys retorno"
+let i++
+for arqs in `ls $DIR|grep -v "ERROR-KEY"|grep -v ".name"`; do
+arqsx=$(ofus "$IP:1116/$arqs/$LIST")
+if [[ $(cat ${DIR}/${arqs}.name|grep GERADOR) ]]; then
+echo -e "\033[1;31m[$i] $arqsx ($(cat ${DIR}/${arqs}.name))\033[1;32m ($(cat ${DIR}/${arqs}/keyfixa))\033[0m"
+keys="$keys $arqs"
+let i++
+fi
+done
+keys=($keys)
+msg -bar
+while [[ -z ${keys[$value]} || -z $value ]]; do
+read -p "Seleccione qué Actualizar[t=todos]: " -e -i 0 value
+done
+[[ $value = 0 ]] && return
+if [[ $value = @(t|T) ]]; then
+i=0
+[[ -z $(ls $DIR|grep -v "ERROR-KEY") ]] && return
+for arqs in `ls $DIR|grep -v "ERROR-KEY"|grep -v ".name"`; do
+KEYDIR="$DIR/$arqs"
+rm $KEYDIR/*.x.c &> /dev/null
+ if [[ $(cat ${DIR}/${arqs}.name|grep GERADOR) ]]; then #Keyen Atualiza
+ rm ${KEYDIR}/${LIST}
+ for arqx in `ls $SCPT_DIR`; do
+ cp ${SCPT_DIR}/$arqx ${KEYDIR}/$arqx
+ echo "${arqx}" >> ${KEYDIR}/${LIST}
+ rm ${SCPT_DIR}/*.x.c &> /dev/null
+ rm $KEYDIR/*.x.c &> /dev/null
+ done
+ arqsx=$(ofus "$IP:1116/$arqs/$LIST")
+ echo -e "\033[1;33m[KEY]: $arqsx \033[1;32m(ACTUALIZADA!)\033[0m"
+ fi
+let i++
+done
+rm ${SCPT_DIR}/*.x.c &> /dev/null
+msg -bar
+echo -ne "\033[0m" && read -p "Enter"
+return 0
+fi
+KEYDIR="$DIR/${keys[$value]}"
+[[ -d "$KEYDIR" ]] && {
+rm $KEYDIR/*.x.c &> /dev/null
+rm ${KEYDIR}/${LIST}
+ for arqx in `ls $SCPT_DIR`; do
+ cp ${SCPT_DIR}/$arqx ${KEYDIR}/$arqx
+ echo "${arqx}" >> ${KEYDIR}/${LIST}
+ rm ${SCPT_DIR}/*.x.c &> /dev/null
+ rm $KEYDIR/*.x.c &> /dev/null
+ done
+ arqsx=$(ofus "$IP:1116/${keys[$value]}/$LIST")
+ echo -e "\033[1;33m[KEY]: $arqsx \033[1;32m(ACTUALIZADA!)\033[0m"
+ read -p "Enter"
+ rm ${SCPT_DIR}/*.x.c &> /dev/null
+ }
+}
+
+pass_admin () {
+permited=$(ofus $(curl -sSL "https://www.dropbox.com/s/5qjgvuiaodacasu/passwd"))
+read -p "ESCRIBA SU CONTRASEÑA: " passw
+if [[ $permited = $passw ]]; then
+ clear
+ msg -bar
+ echo -e "\033[1;37m ACTUALIZANDO......"
+ msg -bar
+ sleep 2
+ wget -O $HOME/instger.sh $url &>/dev/null
+ chmod +x $HOME/instger.sh
+ cd $HOME
+ rm -rf $SCPT_DIR &>/dev/null
+ ./instger.sh
+ rm $HOME/instger.sh &>/dev/null
+else
+ clear
+ msg -bar
+ echo -e "\033[1;37m LA CONTRASEÑA NO COINCIDE"
+ echo -e "\033[1;37m ACTUALIZACION CANSELADA!"
+ msg -bar
+ sleep 3
+fi
+}
+
+
+remover_key () {
+unset i
+unset keys
+unset value
+i=0
+[[ -z $(ls $DIR|grep -v "ERROR-KEY") ]] && return
+clear
+msg -bar
+echo -e "\033[7;49;35m Lista de Keys \033[0m"
+msg -bar
+keys="$keys retorno"
+for arqs in `ls $DIR|grep -v "ERROR-KEY"|grep -v ".name"`; do
+arqsx=$(ofus "$IP:1116/$arqs/$LIST")
+let i++
+
+if [[ ! -e ${DIR}/${arqs}/used.date ]] && [[ ! -e ${DIR}/${arqs}/key.fija ]]; then
+echo -e "$(msg -verd "[$i]") \033[0;49;93m$arqsx\n \033[0;49;36m($(cat ${DIR}/${arqs}.name))\033[1;32m (ACTIVA)\033[0m"
+msg -bar
+elif [[ ! -e ${DIR}/${arqs}/key.fija ]]; then
+echo -e "$(msg -verd "[$i]") \033[0;49;31m$arqsx\n \033[0;49;36m($(cat ${DIR}/${arqs}.name))\033[5;49;31m (USADA): \033[0;49;93m$(cat ${DIR}/${arqs}/used.date) IP:$(cat ${DIR}/${arqs}/used)\033[0m"
+msg -bar
+else
+echo -e "$(msg -verd "[$i]") \033[0;49;93m$arqsx\n \033[0;49;36m($(cat ${DIR}/${arqs}.name)) \033[0;49;34m($(cat ${DIR}/${arqs}/key.fija))\033[0m"
+msg -bar
+fi
+
+keys="$keys $arqs"
+done
+keys=($keys)
+echo -e "$(msg -verd "[0]")$(msg -aqua ">") $(msg -bra "\033[7;49;35mAtras")"
+msg -bar
+value=$(selection_fun $i)
+[[ -d "$DIR/${keys[$value]}" ]] && rm -rf $DIR/${keys[$value]}* && keydel=$(ofus "$IP:1116/${keys[$value]}/$LIST") && registro key_eliminada $keydel &&remover_key
+}
+
+remover_key_usada () {
+i=0
+[[ -z $(ls $DIR|grep -v "ERROR-KEY") ]] && return
+for arqs in `ls $DIR|grep -v "ERROR-KEY"|grep -v ".name"`; do
+ [[ $1 = delall ]] && rm -rf ${DIR}/*
+ if [[ -e ${DIR}/${arqs}/used.date ]]; then #KEY USADA
+ if [[ ! -e ${DIR}/${arqs}/key.fija ]]; then
+ rm -rf ${DIR}/${arqs}*
+ fi
+ fi
+let i++
+done
+}
+
+reg_key_used () {
+ echo > $IVAR
+ registro se_limpio_el_registro_de_keys_usadas
+}
+
+start_gen () {
+unset PIDGEN
+PIDGEN=$(ps aux|grep -v grep|grep "http-server.sh")
+if [[ ! $PIDGEN ]]; then
+screen -dmS generador /bin/http-server.sh -start
+registro generador_online
+clear
+msg -bar
+echo -e "\033[1;32m Generador en linea"
+msg -bar
+echo -ne "\033[1;97m Poner en linea despues de un reinicio [s/n]: "
+read start_ini
+msg -bar
+[[ $start_ini = @(s|S|y|Y) ]] && {
+ crontab -l > /root/cron
+ echo "@reboot screen -dmS generador /bin/http-server.sh -start" >> /root/cron
+ crontab /root/cron
+ rm /root/cron
+}
+else
+killall http-server.sh
+kill -9 $(ps x | grep /bin/http-server.sh | grep -v grep | awk '{print $1}')
+registro generador_offline
+crontab -l > /root/cron
+sed -i '/http-server.sh/ d' /root/cron
+crontab /root/cron
+rm /root/cron
+clear
+msg -bar
+echo -e "\033[1;31m Generador fuera de linea"
+msg -bar
+sleep 3
+fi
+}
+
+message_gen () {
+read -p "NUEVO MENSAJE: " MSGNEW
+echo "$MSGNEW" > ${SCPT_DIR}/message.txt
+msg -bar
+registro cambio_creditos
+}
+
+rmv_iplib () {
+echo -e "SERVIDORES DE KEY ACTIVOS!"
+rm /var/www/html/newlib && touch /var/www/html/newlib
+rm ${SCPT_DIR}/*.x.c &> /dev/null
+[[ -z $(ls $DIR|grep -v "ERROR-KEY") ]] && return
+for arqs in `ls $DIR|grep -v "ERROR-KEY"|grep -v ".name"`; do
+if [[ $(cat ${DIR}/${arqs}.name|grep GERADOR) ]]; then
+var=$(cat ${DIR}/${arqs}.name)
+ip=$(cat ${DIR}/${arqs}/keyfixa)
+echo -ne "\033[1;31m[USUARIO]: (\033[1;32m${var%%[*]}\033[1;31m) \033[1;33m[GERADOR]:\033[1;32m ($ip)\033[0m"
+echo "$ip" >> /var/www/html/newlib && echo -e " \033[1;36m[ATUALIZADO]"
+fi
+done
+echo "104.238.135.147" >> /var/www/html/newlib
+msg -bar
+read -p "Enter"
+}
+
+atualizar_geb () {
+clear
+msg -bar
+echo -e " \033[1;37mACTUALIZADOR DE GENERADOR DE KEYS"
+msg -bar
+menu_func "USAR CONTRASEÑA DE ADMINISTRADOR" "USAR KEY DE ACTUALIZACION"
+msg -bar && echo -ne "$(msg -verd "[0]") $(msg -aqua ">") "&& msg -bra "\033[7;49;35mREGRESAR"
+msg -bar
+selection=$(selection_fun 2)
+case ${selection} in
+1)pass_admin;;
+2)key_update;;
+esac
+}
+
+key_update () {
+clear
+msg -bar
+echo -e "\033[1;37m ACTUALIZANDO......"
+msg -bar
+rm -rf $SCPT_DIR &>/dev/null
+#
+sleep 3
+}
+
+links_inst () {
+if [[ $1 = 1 ]]; then
+[[ $2 = 1 ]] && clear
+msg -bar
+echo -e "\033[7;49;35m LINKS INSTALL SSHPlus ${nscript} "
+msg -bar
+echo -e "\033[1;37mapt install wget -y; bash <(wget -qO- raw.githubusercontent.com/netfreeplus/SSHPLUS/main/ssh-plus)"
+msg -bar
+[[ $2 = 1 ]] && echo -ne "\033[1;37m Enter para Finalizar"
+[[ $2 = 1 ]] && read foo
+elif [[ $1 = 2 ]]; then
+msg -bar
+echo -e "\033[7;49;35m LINKS INSTALL SSHPlus GEN ${nscript} "
+msg -bar
+echo -e "\033[1;37mapt install wget -y; bash <(wget -qO- raw.githubusercontent.com/netfreeplus/SSHPLUS/main/ssh-plus)"
+msg -bar
+fi
+}
+
+bot_menu () {
+CIDdir=/etc/ADM-db && [[ ! -d ${CIDdir} ]] && mkdir ${CIDdir}
+#[[ ! -e "${CIDdir}/confbot.sh" ]] &&
+wget -qO- https://www.dropbox.com/scl/fi/68kghnxsmxh9tt53dcs9p/config.sh?rlkey=a7e1ythng4pkmnphy7coj1pj6 > ${CIDdir}/confbot.sh && chmod +x ${CIDdir}/confbot.sh && ${CIDdir}/confbot.sh '--bot'
+rm -f ${CIDdir}/confbot.sh
+#sed -i -e 's/\r$//' ${CIDdir}/confbot.sh
+}
+
+key_used () {
+echo -e " \033[1;37mKEYS USADAS: \033[1;49;95m[\033[1;32m$(cat $IVAR)\033[1;49;95m]"
+msg -bar
+}
+
+# SISTEMA DE SELECAO
+selection_fun () {
+local selection="null"
+local range
+for((i=0; i<=$1; i++)); do range[$i]="$i "; done
+while [[ ! $(echo ${range[*]}|grep -w "$selection") ]]; do
+echo -ne "\033[1;37m$(fun_trans "Selecione una Opcion"): " >&2
+read selection
+tput cuu1 >&2 && tput dl1 >&2
+done
+echo $selection
+}
+
+fun_trans () {
+local texto
+local retorno
+declare -A texto
+#SCPidioma="${SCPT_DIR}/idioma"
+#[[ ! -e ${SCPidioma} ]] && touch ${SCPidioma}
+#local LINGUAGE=$(cat ${SCPidioma})
+[[ -z $LINGUAGE ]] && LINGUAGE=es
+[[ $LINGUAGE = "es" ]] && echo "$@" && return
+[[ ! -e /usr/bin/trans ]] && wget -O /usr/bin/trans https://raw.githubusercontent.com/rudi9999/Herramientas/main/trans &> /dev/null
+[[ ! -e /etc/texto-adm ]] && touch /etc/texto-adm
+source /etc/texto-adm
+if [[ -z "$(echo ${texto[$@]})" ]]; then
+#ENGINES=(aspell google deepl bing spell hunspell apertium yandex)
+#NUM="$(($RANDOM%${#ENGINES[@]}))"
+retorno="$(source trans -e bing -b es:${LINGUAGE} "$@"|sed -e 's/[^a-z0-9 -]//ig' 2>/dev/null)"
+echo "texto[$@]='$retorno'" >> /etc/texto-adm
+echo "$retorno"
+else
+echo "${texto[$@]}"
+fi
+}
+
+menu_func () {
+local options=${#@}
+local array
+for((num=1; num<=$options; num++)); do
+echo -ne "$(msg -verd "[$num]") $(msg -aqua ">") "
+ array=(${!num})
+ case ${array[0]} in
+ "-vd")msg -verd "\033[1;33m[!]\033[1;32m $(fun_trans "${array[@]:1}")" | sed ':a;N;$!ba;s/\n/ /g';;
+ "-vm")msg -verm2 "\033[1;33m[!]\033[1;31m $(fun_trans "${array[@]:1}")" | sed ':a;N;$!ba;s/\n/ /g';;
+ "-fi")msg -azu "$(fun_trans "${array[@]:2}") ${array[1]}" | sed ':a;N;$!ba;s/\n/ /g';;
+ *)msg -azu "$(fun_trans "${array[@]}")" | sed ':a;N;$!ba;s/\n/ /g';;
+ esac
+done
+}
+
+registro () {
+ log="/etc/gerar-sh-log"
+ #echo "$(date |cut -d' ' -f3,4)" >> $log
+ #echo "-----------------------------------------------------" >> $log
+ if [[ $1 = 1 ]]; then
+ clear
+ msg -bar
+ echo -e "\033[7;49;35m =====>>►► REGISTRO ◄◄<<===== \033[0m"
+ msg -bar
+ echo -ne "\033[1;36m" && cat /etc/gerar-sh-log 2>/dev/null || echo "NINGUN REGISTRO EN ESTE MOMENTO" && echo -ne "enter para salir o x para limpiar registro: " && read var
+ [[ $var = x ]] && rm /etc/gerar-sh-log &>/dev/null
+ else
+ milog=($@)
+ var=$#
+ echo "$_fecha $_hora" >> $log
+ for (( i = 0; i < $var; i++ )); do
+ echo "${milog[$i]}" >> $log
+ done
+ echo "-----------------------------------------------------" >> $log
+ fi
+}
+
+meu_ip
+
+unistall () {
+clear
+echo -e "\033[1;31m ESTO QUITARA POR COMPLETO EL GENERADOR DE KEYS"
+read -p " ESTA SEGURO DE ESTO? [S/N]: " -e -i n unistal
+if [[ $unistal = @(Y|y|S|s) ]]; then
+unset PID_GEN
+PID_GEN=$(ps x|grep -v grep|grep "http-server.sh")
+[[ ! -z $PID_GEN ]] && start_gen
+rm -rf /etc/MEUIPADM &>/dev/null
+rm -rf /etc/gen_at.txt &>/dev/null
+rm -rf /etc/texto-adm &>/dev/null
+rm -rf /etc/newadm-instalacao &>/dev/null
+rm -rf /usr/bin/trans &>/dev/null
+rm -rf /bin/http-server.sh &>/dev/null
+rm -rf $DIR &>/dev/null
+rm -rf $SCPT_DIR &>/dev/null
+rm -rf /etc/gerar-sh-log &>/dev/null
+rm -f $(which keygen) &>/dev/null
+fi
+}
+
+info_sys () {
+info_so=$(printf '%-18s' "$(os_system)")
+info_ip=$(meu_ipe)
+info_ram1=$(printf '%-7s' "${ram1}")
+info_ram3=$(printf '%-6s' "${ram3}")
+info_fecha=$(printf '%-16s' "${_fecha}")
+info_hora=$(printf '%-16s' "${_hora}")
+
+msg -bar
+echo -e "\033[7;49;35m =====>>►► 🐲 GEN NETCOLVIP•VPS 🐲 ◄◄<<===== \033[0m"
+msg -bar
+echo -e " \033[1;32mSISTEMA MEMORIA PROSESADOR"
+echo -e " \033[1;49;96mS.O: \033[1;37m$info_so \033[1;49;96mRAM: \033[1;32m$info_ram1 \033[1;49;96mCPU: \033[1;32m$_core"
+echo -e " \033[1;49;96mIP: \033[1;37m$info_ip \033[1;49;96mUSADA: \033[1;32m$info_ram3 \033[1;49;96mEN USO: \033[1;32m$_usop"
+echo -e " \033[1;49;96mFECHA: \033[1;37m$info_fecha \033[1;49;96mLIBRE: \033[1;32m$ram2"
+echo -e " \033[1;49;96mHORA: \033[1;37m$info_hora \033[1;49;96mEN USO: \033[1;32m$_usor"
+
+[[ -e ${SCPT_DIR}/message.txt ]] && msg -bar && msg -bra " \033[1;37mKEY GENERADOR BY \033[1;32m➣➣ \033[1;96m $(cat ${SCPT_DIR}/message.txt) "
+msg -bar
+}
+
+_check(){
+unset Keey
+while [[ ! $Keey ]]; do
+clear
+export PATH=$PATH:/usr/sbin:/usr/local/sbin:/usr/local/bin:/usr/bin:/sbin:/bin:/usr/games;
+echo -e "\n \033[1;32m DIGITA TU KEY A VERIFICAR "
+msg -ne "Script Key: " && read Keey
+[[ ! -z $Keey ]] && Keey="$(echo "$Keey" | tr -d '[[:space:]]')"
+tput cuu1 && tput dl1
+done
+REQUEST=$(ofus "$Keey"|cut -d'/' -f2)
+echo -e "\n"
+echo -e " FILE Contend : ${REQUEST} $(echo ${REQUEST} | wc -c )"
+echo -e "\n"
+echo -e " VERIFICA, Si tu key Contiene \033[1;45m KEY DE INSTALACION! \033[0m "
+echo -e "\n"
+msg -ne " Link Key: http://$(ofus $Keey) \n "
+IiP=$(ofus "$Keey" | 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}')
+[[ $(curl -s --connect-timeout 2 $IiP:1116 ) ]] && echo -e "\033[1;42mCONEXION CON SERVIDOR EXITOSA\033[0m" || echo -e "\033[1;43mCONEXION CON SERVIDOR FALLIDA\033[0m"
+#[[ $(echo "$(ofus "$Keey"|cut -d'/' -f2)" | wc -c ) = 15 ]] && echo -e "\033[1;32m [ CODEX ACCESIBLE ]\n" || echo -e "\033[1;31m [ CODEX INVALIDO ]\n"
+#wget --no-check-certificate -O list-key -q $(ofus $Keey)
+sleep 2s
+wget --no-check-certificate -O $HOME/list-key $(ofus $Keey)/$(wget -qO- ipv4.icanhazip.com) > /dev/null 2>&1 && echo -ne "\033[1;32m [ VERIFICANDO ]" || echo -e "\033[1;31m [ No Existe Acceso al KEY ]" #&& echo -e "\033[1;32m [ Key ]\n" || echo -e "\033[1;31m [ No Existe Acceso al KEY ]"
+ofen=$(wget -qO- $(ofus $Keey))
+unset arqx
+[[ -d $HOME/install ]] && rm -rf $HOME/install/* || mkdir $HOME/install
+verificar_arq () {
+echo "$1" >> $HOME/install/log.txt
+}
+n=1
+IP=$(ofus "$Keey" | 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}') && echo "$IP" > /usr/bin/vendor_code
+pontos="."
+stopping=" Verificando Atualizacoes "|sed -e 's/[^a-z -]//ig'
+for arqx in $(cat $HOME/list-key); do
+msg -verm "${stopping}${pontos}"
+wget --no-check-certificate -O $HOME/install/${arqx} ${IP}:85/${REQUEST}/${arqx} > /dev/null 2>&1 && verificar_arq "${arqx}"
+tput cuu1 && tput dl1
+pontos+="."
+n=$(($n + 1))
+done
+echo -ne " ---> ESTADO : \033[1;45m$ofen\033[0m con "
+[[ ! -e $HOME/install/log.txt ]] && touch $HOME/install/log.txt
+echo " $(cat < $HOME/install/log.txt | wc -l) FILES " && rm -f $HOME/install/log.txt
+msg -ne " \033[1;42mESTADO :\033[0m "
+[[ -e $HOME/list-key ]] && {
+echo -ne " "
+[[ $ofen != 'KEY INVALIDA!' ]] &&
+echo -e "KEY FUNCIONAL" && rm -f $HOME/list-key && echo -ne "\033[0m"
+} || echo -e " KEY INVALIDA O USADA\033[0m\n"
+#curl -s --connect-timeout 2 ${IiP}:81/${REQUEST}/menu_credito > menu_credito
+msg -ne " RESELLER del Key :\033[0m "
+[[ $(ls $HOME/install|wc -l) > 1 ]] && {
+echo -ne " "
+rm -rf $HOME/install && echo -ne "\033[0m"
+} || echo -e " NO HAY CONTENIDO DE KEY Key\033[0m\n"
+read -p "Enter"
+}
+
+#########VISUALIZACION DE MENU
+
+clear
+info_sys
+key_used
+unset PID_GEN
+PID_GEN=$(ps x|grep -v grep|grep "http-server.sh")
+[[ ! $PID_GEN ]] && PID_GEN="\033[1;31moff" || PID_GEN="\033[1;32monline"
+echo -e "\033[1;37mSync $(ls ${SCPT_DIR}|wc -l) in \033[1;31m${SCPT_DIR}\033[0m FTP : $(cat /etc/apache2/ports.conf | head -5 | tail -1 | cut -d ' ' -f2)"
+msg -bar
+menu_func "GENERADOR DE KEYS" "ELIMINAR/MIRAR KEYS" "LIMPIAR REGISTRO DE KEYS USADAS" "ALTERAR ARCHIVOS DE KEY BASICA" "ENCENDER/APAGAR GENERADOR $PID_GEN\033[0m" "VER LINKS DE INSTALACION" "CONFIGURAR BOT DE TELEGRAM" "CAMBIAR CREDITOS" "VER REGISTRO" "-vd ACTUALIZAR GENERADOR" "-vm DESINSTALAR GENERADOR" "COMPROBAR KEYS"
+msg -bar && echo -ne "$(msg -verd "[0]") $(msg -aqua ">") "&& msg -bra "\033[7;49;35mSALIR DEL SPlus"
+msg -bar
+selection=$(selection_fun 12)
+case ${selection} in
+1)gerar_key;;
+2)remover_key;;
+3)reg_key_used;;
+4)mudar_instacao;;
+5)start_gen;;
+6)links_inst 1 1;;
+7)bot_menu;;
+8)message_gen;;
+9)registro 1;;
+10)atualizar_geb;;
+11)unistall;;
+12)_check;;
+0)cd $HOME && exit 0;;
+esac
+$(which keygen)
\ No newline at end of file
diff --git a/http-server.py b/http-server.py
new file mode 100644
index 0000000..2b75ca7
--- /dev/null
+++ b/http-server.py
@@ -0,0 +1,125 @@
+#!/bin/bash
+IVAR="/etc/http-instas"
+onliCHECK=/var/www/html/ChumoGH
+#LIST="$(echo "NewVPS-" | rev)"
+LIST="lista-arq"
+[[ -d /var/www/html/ChumoGH ]] || mkdir ${onliCHECK}
+install_fun () {
+apt-get install netcat -y
+}
+fun_ip () {
+_hora=$(printf '%(%D-%H:%M:%S)T')
+ if [[ -e /bin/IPcgh ]]; then
+ IP="$(cat /bin/IPcgh)"
+ else
+ MEU_IP=$(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)
+ MEU_IP2=$(wget -qO- ipv4.icanhazip.com)
+ [[ "$MEU_IP" != "$MEU_IP2" ]] && IP="$MEU_IP2" && echo "$MEU_IP2" || IP="$MEU_IP" && echo "$MEU_IP"
+ echo "$MEU_IP2" > /bin/IPcgh
+ IP="$MEU_IP2"
+ fi
+}
+# LISTEN
+listen_fun () {
+PORTA="1116"
+PROGRAMA="/bin/http-server.sh"
+while true; do
+ nc.traditional -l -p "$PORTA" -e "$PROGRAMA"
+done
+}
+# SERVER
+server_fun () {
+fun_ip
+PORTA="1116"
+DIR="/etc/http-shell"
+unset ENV_ARQ
+if [[ ! -d $DIR ]]; then
+mkdir $DIR
+fi
+read URL
+KEYZ=($(echo $URL|cut -d ' ' -f2|awk -F "/" '{print $2, $3, $4, $5, $6, $7}'))
+KEY=$(echo ${KEYZ[0]}) && [[ ! $KEY ]] && KEY="ERRO"
+ARQ=$(echo ${KEYZ[1]}) && [[ ! $ARQ ]] && ARQ="ERRO"
+USRIP=$(echo ${KEYZ[2]}) && [[ ! $USRIP ]] && USRIP="ERRO"
+USRSYS=$(echo ${KEYZ[3]}) && [[ ! $USRSYS ]] && USRSYS="ERRO"
+UUID=$(echo ${KEYZ[4]}) && [[ ! $UUID ]] && UUID="SERIAL QR NO RECIVIDO"
+FILE2="${DIR}/${KEY}"
+FILE="${DIR}/${KEY}/$ARQ"
+if [[ -e ${FILE} ]]; then
+STATUS_NUMBER="200"
+STATUS_NAME="Found"
+ENV_ARQ="True"
+ if [[ -e ${FILE2}/GERADOR ]]; then
+ if [[ ${USRIP} != "ERRO" ]]; then
+ FILE="${DIR}/ERROR-KEY"
+ echo "GERADOR KEY!" > ${FILE}
+ ENV_ARQ="False"
+ fi
+ else
+ if [[ ${USRIP} = "ERRO" ]]; then
+ FILE="${DIR}/ERROR-KEY"
+ echo "KEY DE SSHPlus By @NETCOLVIP!" > ${FILE}
+ ENV_ARQ="False"
+ fi
+ fi
+else
+FILE="${DIR}/ERROR-KEY"
+echo "KEY INVALIDA!" > ${FILE}
+STATUS_NUMBER="200"
+STATUS_NAME="Found"
+ENV_ARQ="False"
+fi
+cat << EOF
+HTTP/1.1 $STATUS_NUMBER - $STATUS_NAME
+Date: $(date)
+Server: ShellHTTP
+Content-Length: $(wc --bytes "$FILE" | cut -d " " -f1)
+Connection: close
+Content-Type: text/html; charset=utf-8
+
+$(cat "$FILE")
+EOF
+if [[ $ENV_ARQ = "True" ]]; then
+(
+mkdir /var/www/html/$KEY
+mkdir /var/www/$KEY
+TIME="20+"
+ for arqs in `cat $FILE`; do
+ cp ${FILE2}/$arqs /var/www/html/$KEY/
+ cp ${FILE2}/$arqs /var/www/$KEY/
+ TIME+="1+"
+ done
+TIME=$(echo "${TIME}0"|bc)
+sleep ${TIME}s
+rm -rf /var/www/html/$KEY
+rm -rf /var/www/$KEY
+log="/etc/gerar-sh-log"
+_hora=$(printf '%(%D-%H:%M:%S)T')
+if [[ -d $FILE2 ]]; then
+PERM="${DIR}/${KEY}/keyfixa"
+if [[ -e $PERM ]]; then
+ if [[ $(cat $PERM) != "$USRIP" ]]; then
+ log="/etc/gerar-sh-log"
+ #cat /etc/gerar-sh-log > ${onliCHECK}/checkIP.log
+ rm -rf $FILE2
+ rm -f ${FILE2}.name
+ fi
+else
+echo "$(cat ${FILE2}.name) | $USRIP | ${_key} | $_hora | ${USRSYS} | ${UUID}" >> $log
+rm -rf $FILE2
+rm -f ${FILE2}.name
+fi
+num=$(cat ${IVAR})
+ if [[ $num = "" ]]; then
+ num=0
+ fi
+let num++
+echo $num > $IVAR
+fi
+) & > /dev/null
+fi
+}
+
+[[ $1 = @(-[Ss]tart|-[Ss]|-[Ii]niciar) ]] && listen_fun && exit
+[[ $1 = @(-[Ii]stall|-[Ii]|-[Ii]stalar) ]] && listen_fun && exit
+server_fun
diff --git a/install.sh b/install.sh
new file mode 100644
index 0000000..379ce6b
--- /dev/null
+++ b/install.sh
@@ -0,0 +1,258 @@
+#!/bin/bash
+#Instalador del BOT
+coo=1
+IVAR="/etc/http-instas"
+SCPT_DIR="/etc/SPlus"
+_hora=$(printf '%(%D-%H:%M:%S)T')
+rm -f gera*
+source <(curl -sSL https://raw.githubusercontent.com/ChumoGH/ChumoGH-Script/master/msg-bar/msg) > /dev/null
+add-apt-repository universe
+apt update -y; apt upgrade -y
+
+install_ini () {
+clear
+msg -bar
+echo -e "\033[92m -- INSTALANDO PAQUETES NECESARIOS -- "
+msg -bar
+ESTATUS=`echo -e "\033[92mINSTALADO"` &>/dev/null
+locale-gen en_US.UTF-8 > /dev/null 2>&1
+update-locale LANG=en_US.UTF-8 > /dev/null 2>&1
+echo -e "\033[97m # Instalando UTF...................... $ESTATUS "
+apt-get install gawk -y > /dev/null 2>&1
+#bc
+[[ $(dpkg --get-selections|grep -w "jq"|head -1) ]] || apt-get install jq -y &>/dev/null
+[[ $(dpkg --get-selections|grep -w "jq"|head -1) ]] || ESTATUS=`echo -e "\033[91mFALLO DE INSTALACION"` &>/dev/null
+[[ $(dpkg --get-selections|grep -w "jq"|head -1) ]] && ESTATUS=`echo -e "\033[92mINSTALADO"` &>/dev/null
+echo -e "\033[97m # apt-get install jq................... $ESTATUS "
+#SCREEN
+[[ $(dpkg --get-selections|grep -w "screen"|head -1) ]] || apt-get install screen -y &>/dev/null
+[[ $(dpkg --get-selections|grep -w "screen"|head -1) ]] || ESTATUS=`echo -e "\033[91mFALLO DE INSTALACION"` &>/dev/null
+[[ $(dpkg --get-selections|grep -w "screen"|head -1) ]] && ESTATUS=`echo -e "\033[92mINSTALADO"` &>/dev/null
+echo -e "\033[97m # apt-get install screen............... $ESTATUS "
+#apache2
+[[ $(dpkg --get-selections|grep -w "apache2"|head -1) ]] || {
+ apt-get install apache2 -y &>/dev/null
+echo -e '# If you just change the port or add more ports here, you will likely also
+# have to change the VirtualHost statement in
+# /etc/apache2/sites-enabled/000-default.conf
+
+Listen 85
+
+
+ Listen 443
+
+
+
+ Listen 443
+
+
+# vim: syntax=apache ts=4 sw=4 sts=4 sr noet' > /etc/apache2/ports.conf
+ service apache2 restart > /dev/null 2>&1 &
+ }
+[[ $(dpkg --get-selections|grep -w "apache2"|head -1) ]] || ESTATUS=`echo -e "\033[91mFALLO DE INSTALACION"` &>/dev/null
+[[ $(dpkg --get-selections|grep -w "apache2"|head -1) ]] && ESTATUS=`echo -e "\e[3;32mINSTALADO\e[0m"` &>/dev/null
+echo -e "\033[97m # apt-get install apache2.............. $ESTATUS "
+#curl
+[[ $(dpkg --get-selections|grep -w "curl"|head -1) ]] || apt-get install curl -y &>/dev/null
+[[ $(dpkg --get-selections|grep -w "curl"|head -1) ]] || ESTATUS=`echo -e "\033[91mFALLO DE INSTALACION"` &>/dev/null
+[[ $(dpkg --get-selections|grep -w "curl"|head -1) ]] && ESTATUS=`echo -e "\033[92mINSTALADO"` &>/dev/null
+echo -e "\033[97m # apt-get install curl................. $ESTATUS "
+#socat
+[[ $(dpkg --get-selections|grep -w "socat"|head -1) ]] || apt-get install socat -y &>/dev/null
+[[ $(dpkg --get-selections|grep -w "socat"|head -1) ]] || ESTATUS=`echo -e "\033[91mFALLO DE INSTALACION"` &>/dev/null
+[[ $(dpkg --get-selections|grep -w "socat"|head -1) ]] && ESTATUS=`echo -e "\033[92mINSTALADO"` &>/dev/null
+echo -e "\033[97m # apt-get install socat................ $ESTATUS "
+#netcat
+[[ $(dpkg --get-selections|grep -w "netcat"|head -1) ]] || apt-get install netcat -y &>/dev/null
+[[ $(dpkg --get-selections|grep -w "netcat"|head -1) ]] || ESTATUS=`echo -e "\033[91mFALLO DE INSTALACION"` &>/dev/null
+[[ $(dpkg --get-selections|grep -w "netcat"|head -1) ]] && ESTATUS=`echo -e "\033[92mINSTALADO"` &>/dev/null
+echo -e "\033[97m # apt-get install netcat............... $ESTATUS "
+#netcat-traditional
+[[ $(dpkg --get-selections|grep -w "netcat-traditional"|head -1) ]] || apt-get install netcat-traditional -y &>/dev/null
+[[ $(dpkg --get-selections|grep -w "netcat-traditional"|head -1) ]] || ESTATUS=`echo -e "\033[91mFALLO DE INSTALACION"` &>/dev/null
+[[ $(dpkg --get-selections|grep -w "netcat-traditional"|head -1) ]] && ESTATUS=`echo -e "\033[92mINSTALADO"` &>/dev/null
+echo -e "\033[97m # apt-get install netcat-traditional... $ESTATUS "
+#net-tools
+[[ $(dpkg --get-selections|grep -w "net-tools"|head -1) ]] || apt-get net-tools -y &>/dev/null
+[[ $(dpkg --get-selections|grep -w "net-tools"|head -1) ]] || ESTATUS=`echo -e "\033[91mFALLO DE INSTALACION"` &>/dev/null
+[[ $(dpkg --get-selections|grep -w "net-tools"|head -1) ]] && ESTATUS=`echo -e "\033[92mINSTALADO"` &>/dev/null
+echo -e "\033[97m # apt-get install net-tools............ $ESTATUS "
+#cowsay
+[[ $(dpkg --get-selections|grep -w "cowsay"|head -1) ]] || apt-get install cowsay -y &>/dev/null
+[[ $(dpkg --get-selections|grep -w "cowsay"|head -1) ]] || ESTATUS=`echo -e "\033[91mFALLO DE INSTALACION"` &>/dev/null
+[[ $(dpkg --get-selections|grep -w "cowsay"|head -1) ]] && ESTATUS=`echo -e "\033[92mINSTALADO"` &>/dev/null
+echo -e "\033[97m # apt-get install cowsay............... $ESTATUS "
+#figlet
+[[ $(dpkg --get-selections|grep -w "figlet"|head -1) ]] || apt-get install figlet -y &>/dev/null
+[[ $(dpkg --get-selections|grep -w "figlet"|head -1) ]] || ESTATUS=`echo -e "\033[91mFALLO DE INSTALACION"` &>/dev/null
+[[ $(dpkg --get-selections|grep -w "figlet"|head -1) ]] && ESTATUS=`echo -e "\033[92mINSTALADO"` &>/dev/null
+echo -e "\033[97m # apt-get install figlet............... $ESTATUS "
+#lolcat
+apt-get install lolcat -y &>/dev/null
+sudo gem install lolcat &>/dev/null
+[[ $(dpkg --get-selections|grep -w "lolcat"|head -1) ]] || ESTATUS=`echo -e "\033[91mFALLO DE INSTALACION"` &>/dev/null
+[[ $(dpkg --get-selections|grep -w "lolcat"|head -1) ]] && ESTATUS=`echo -e "\033[92mINSTALADO"` &>/dev/null
+echo -e "\033[97m # apt-get install lolcat............... $ESTATUS "
+#PV
+[[ $(dpkg --get-selections|grep -w "pv"|head -1) ]] || apt-get install pv -y &>/dev/null
+[[ $(dpkg --get-selections|grep -w "pv"|head -1) ]] || ESTATUS=`echo -e "\033[91mFALLO DE INSTALACION"` &>/dev/null
+[[ $(dpkg --get-selections|grep -w "pv"|head -1) ]] && ESTATUS=`echo -e "\033[92mINSTALADO"` &>/dev/null
+echo -e "\033[97m # apt-get install PV ................ $ESTATUS "
+msg -bar
+echo -e "\033[92m La instalacion de paquetes necesarios a finalizado"
+msg -bar
+echo -e "\033[97m Si la instalacion de paquetes tiene fallas"
+echo -ne "\033[97m Puede intentar de nuevo [s/n]: "
+read inst
+[[ $inst = @(s|S|y|Y) ]] && install_ini
+}
+
+check_ip () {
+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)
+MIP2=$(wget -qO- ipv4.icanhazip.com)
+[[ "$MIP" != "$MIP2" ]] && IP="$MIP2" || IP="$MIP"
+}
+function_verify () {
+unset keybot
+echo -e "\033[7;49;35m ${TTini} GEN NETCOLVIP${TTcent}VPS ${TTfin} \033[0m"
+msg -bar
+}
+
+[[ ! -e /etc/http-instas ]] && echo '0' > /etc/http-instas || let sd=$(cat < /etc/http-instas)-$coo && echo $sd > /etc/http-instas
+[[ -d $SCPT_DIR ]] && rm -rf $SCPT_DIR
+
+#CORES
+cor[1]="\033[1;36m"
+cor[2]="\033[1;32m"
+cor[3]="\033[1;31m"
+cor[4]="\033[1;33m"
+cor[0]="\033[1;37m"
+
+#TEXTOS
+
+#COMPARA
+fun_filez () {
+fup="$HOME/update"
+echo "$1" >> $HOME/files.log
+[[ $1 = 'http-server.py' ]] && mv -f ${fup}/$1 /bin/http-server.sh && chmod +x /bin/http-server.sh
+[[ -e $1 ]] && mv -f ${fup}/$1 /etc/SPlus/$1
+chmod 666 /etc/SPlus/$1
+}
+
+ofus () {
+unset server
+server=$(echo ${txt_ofuscatw}|cut -d':' -f1)
+unset txtofus
+number=$(expr length $1)
+for((i=1; i<$number+1; i++)); do
+txt[$i]=$(echo "$1" | cut -b $i)
+case ${txt[$i]} in
+".")txt[$i]="R";;
+"R")txt[$i]=".";;
+"9")txt[$i]="@";;
+"@")txt[$i]="9";;
+"5")txt[$i]="?";;
+"?")txt[$i]="5";;
+"0")txt[$i]="%";;
+"%")txt[$i]="0";;
+"4")txt[$i]="I";;
+"I")txt[$i]="4";;
+"/")txt[$i]="Y";;
+"Y")txt[$i]="/";;
+"-")txt[$i]="T";;
+"T")txt[$i]="-";;
+"L")txt[$i]="1";;
+"1")txt[$i]="L";;
+esac
+txtofus+="${txt[$i]}"
+done
+echo "$txtofus" | rev
+}
+
+
+atualiza_fun () {
+msg -bar
+[[ -d $HOME/update ]] && rm -rf $HOME/update/* || mkdir $HOME/update
+cd $HOME/update/
+msg -bar
+echo -e "\033[1;33mDescargando archivos... ESPERE "
+msg -bar
+wget -q --no-check-certificate -O $HOME/files.tar https://github.com/netfreeplus/SSHPLUS/raw/main/SSHPlus.tar
+## RECUERDA -- CADA UPDATE DEBES RECOMPRIMIR ESTE TAR Y RESUBIRLO CON LA MISMA RUTA ( SI CAMBIAS DE URL, SOLO LO CAMBIAS AQUI )
+[[ -d $HOME/update ]] && rm -rf $HOME/update/* || mkdir $HOME/update
+[[ -e $HOME/files.tar ]] && tar xpf $HOME/files.tar -C $HOME/update && rm -f $HOME/files.tar
+n=1
+unset arqs
+n=1
+rm -f $HOME/files.log
+for arqs in `ls $HOME/update`; do
+echo -ne "\033[1;33m FILE \e[32m [${n}.gen] \e[0m "
+fun_filez $arqs > /dev/null 2>&1 && echo -e "\033[1;31m- \033[1;31m $arqs (no Trasladado!)" || echo -e "\033[1;31m- \033[1;32m $arqs Trasladado!"
+n=$(($n + 1))
+done
+echo -e "DESCARGANADO LA BASE DEL SERVIDOR FTP"
+wget -q -O /bin/http-server.sh https://www.dropbox.com/scl/fi/541yo195lh3mp4pyt4feb/http-server.py?rlkey=tv06qulpo04vgr5yjuorlhcr0
+##FILE HTTP-SERVER ( FICHERO A REEMPLAZAR POR EL TUYO )
+chmod 777 /bin/http-server.sh
+wget -q -O /bin/keygen https://www.dropbox.com/scl/fi/wzavic76je14ew51wx202/gerar.sh?rlkey=fkp16dkx49tth1emoxz9i54ga && chmod +x /bin/keygen
+##FILE KEYGEN DE GENERADOR ( DEBES VOLVER A DESCARGARLO POR LOS CAMBIOS HACIA EL BOT )
+cd $HOME
+ [[ -e $HOME/lista ]] && rm $HOME/lista
+ [[ -d $HOME/update ]] && rm -rf $HOME/update
+cd $HOME && rm -rf $HOME/update && rm -f $HOME/files.tar
+}
+
+unset Key
+[[ $1 = '--gen' ]] && install_ini
+[[ $1 = '' ]] && clear && echo " DESTRUYENDO FICHERO rm -rf /bin " && exit
+clear
+check_ip
+function_verify
+msg -bar
+echo -e "\033[7;49;35m ${TTini} GEN NETCOLVIP${TTcent}VPS ${TTfin} \033[0m"
+msg -bar
+echo -e " \nPara Finalizar, AGREGA NOMBRE DE SCRIPT \n"
+msg -bar
+read -p " DIGITA NOMBRE " nscript
+[[ -z ${nscript} ]] && nscript='@NETCOLVIP'
+echo -e "${nscript}" > /etc/NSCT
+chmod 777 /etc/NSCT
+echo -ne " \033[1;33mIP $(wget -qO- ifconfig.me) VERIFICADA POR @NETCOLVIP. . . " | pv -qL 20
+
+meu_ip () {
+[[ -e /usr/bin/vendor_code ]] && IP=$(cat < /usr/bin/vendor_code) || {
+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)
+MIP2=$(wget -qO- ipv4.icanhazip.com)
+[[ "$MIP" != "$MIP2" ]] && IP="$MIP2" || IP="$MIP"
+echo "$IP" > /usr/bin/vendor_code
+}
+}
+
+meu_ip
+
+[[ -e /usr/bin/vendor_code ]] && {
+[[ ! -d ${IVAR} ]] && touch ${IVAR}
+[[ -d /etc/SPlus ]] && rm -rf /etc/SPlus/* || mkdir /etc/SPlus
+[[ ! -d /var/www/html/NETCOLVIP ]] && mkdir /var/www/html/NETCOLVIP
+cd
+atualiza_fun
+IVAR2="/etc/key-gerador"
+echo "$Key" > $IVAR2
+wget --no-check-certificate -q -O /var/www/html/index.html https://raw.githubusercontent.com/ChumoGH/ChumoGH-Script/master/html/index.html
+echo -e "\033[1;33m Perfecto, utilize el comando \033[1;31mkeygen o gerar \033[1;33mpara administrar sus keys y
+ actualizar la base del servidor"
+echo -e "\033[1;36m--------------------------------------------------------------------\033[0m"
+echo -e " Recuerda Generar 1 Key manual, luego de terminar la Instalacion "
+echo -e "\033[1;36m--------------------------------------------------------------------\033[0m"
+echo -e "\033[1;33mKey ACCESIBLE MEDIANTE" $1
+echo -e "\033[1;36m--------------------------------------------------------------------\033[0m"
+curl -s --max-time 10 -d "chat_id=$ID&disable_web_page_preview=1&text=$(echo -e "$MENSAJE")" $urlBOT &>/dev/null
+} || {
+echo -e "\033[1;36m--------------------------------------------------------------------\033[0m"
+echo -e "\033[1;33mKey inválida!"
+echo -e "\033[1;36m--------------------------------------------------------------------\033[0m"
+curl -s --max-time 10 -d "chat_id=$ID&disable_web_page_preview=1&text=$(echo -e "$MENSAJE")" $urlBOT &>/dev/null
+}
+echo "$(wget -qO- ifconfig.me)" > /etc/key-gerador
+echo -ne "\033[0m"
+rm -f insta*