#!/bin/bash #27/01/2021 clear clear declare -A cor=( [0]="\033[1;37m" [1]="\033[1;34m" [2]="\033[1;31m" [3]="\033[1;33m" [4]="\033[1;32m" ) SCPdir="/etc/VPS-MX" && [[ ! -d ${SCPdir} ]] && exit 1 SCPusr="${SCPdir}/controlador" && [[ ! -d ${SCPusr} ]] && mkdir ${SCPusr} SCPfrm="${SCPdir}/herramientas" && [[ ! -d ${SCPfrm} ]] && mkdir ${SCPfrm} SCPinst="${SCPdir}/protocolos" && [[ ! -d ${SCPfrm} ]] && mkdir ${SCPfrm} port () { local portas local portas_var=$(lsof -V -i tcp -P -n | grep -v "ESTABLISHED" |grep -v "COMMAND" | grep "LISTEN") i=0 while read port; do var1=$(echo $port | awk '{print $1}') && var2=$(echo $port | awk '{print $9}' | awk -F ":" '{print $2}') [[ "$(echo -e ${portas}|grep -w "$var1 $var2")" ]] || { portas+="$var1 $var2 $portas" echo "$var1 $var2" let i++ } done <<< "$portas_var" } verify_port () { local SERVICE="$1" local PORTENTRY="$2" [[ ! $(echo -e $(port|grep -v ${SERVICE})|grep -w "$PORTENTRY") ]] && return 0 || return 1 } edit_squid () { msg -ama "$(fun_trans "REDEFINIR PUERTOS SQUID")" msg -bar if [[ -e /etc/squid/squid.conf ]]; then local CONF="/etc/squid/squid.conf" elif [[ -e /etc/squid3/squid.conf ]]; then local CONF="/etc/squid3/squid.conf" fi NEWCONF="$(cat ${CONF}|grep -v "http_port")" msg -ne "$(fun_trans "Nuevos Puertos"): " read -p "" newports for PTS in `echo ${newports}`; do verify_port squid "${PTS}" && echo -e "\033[1;33mPort $PTS \033[1;32mOK" || { echo -e "\033[1;33mPort $PTS \033[1;31mFAIL" return 1 } done rm ${CONF} while read varline; do echo -e "${varline}" >> ${CONF} if [[ "${varline}" = "#portas" ]]; then for NPT in $(echo ${newports}); do echo -e "http_port ${NPT}" >> ${CONF} done fi done <<< "${NEWCONF}" msg -azu "$(fun_trans "AGUARDE")" service squid restart &>/dev/null service squid3 restart &>/dev/null sleep 1s msg -bar msg -azu "$(fun_trans "PUERTOS REDEFINIDOS")" msg -bar } edit_apache () { msg -azu "$(fun_trans "REDEFINIR PUERTOS APACHE")" msg -bar local CONF="/etc/apache2/ports.conf" local NEWCONF="$(cat ${CONF})" msg -ne "$(fun_trans "Nuevos Puertos"): " read -p "" newports for PTS in `echo ${newports}`; do verify_port apache "${PTS}" && echo -e "\033[1;33mPort $PTS \033[1;32mOK" || { echo -e "\033[1;33mPort $PTS \033[1;31mFAIL" return 1 } done rm ${CONF} while read varline; do if [[ $(echo ${varline}|grep -w "Listen") ]]; then if [[ -z ${END} ]]; then echo -e "Listen ${newports}" >> ${CONF} END="True" else echo -e "${varline}" >> ${CONF} fi else echo -e "${varline}" >> ${CONF} fi done <<< "${NEWCONF}" msg -azu "$(fun_trans "AGUARDE")" service apache2 restart &>/dev/null sleep 1s msg -bar msg -azu "$(fun_trans "PUERTOS REDEFINIDOS")" msg -bar } edit_openvpn () { msg -azu "$(fun_trans "REDEFINIR PUERTOS OPENVPN")" msg -bar local CONF="/etc/openvpn/server.conf" local CONF2="/etc/openvpn/client-common.txt" local NEWCONF="$(cat ${CONF}|grep -v [Pp]ort)" local NEWCONF2="$(cat ${CONF2})" msg -ne "$(fun_trans "Nuevos puertos"): " read -p "" newports for PTS in `echo ${newports}`; do verify_port openvpn "${PTS}" && echo -e "\033[1;33mPort $PTS \033[1;32mOK" || { echo -e "\033[1;33mPort $PTS \033[1;31mFAIL" return 1 } done rm ${CONF} while read varline; do echo -e "${varline}" >> ${CONF} if [[ ${varline} = "proto tcp" ]]; then echo -e "port ${newports}" >> ${CONF} fi done <<< "${NEWCONF}" rm ${CONF2} while read varline; do if [[ $(echo ${varline}|grep -v "remote-random"|grep "remote") ]]; then echo -e "$(echo ${varline}|cut -d' ' -f1,2) ${newports} $(echo ${varline}|cut -d' ' -f4)" >> ${CONF2} else echo -e "${varline}" >> ${CONF2} fi done <<< "${NEWCONF2}" msg -azu "$(fun_trans "AGUARDE")" service openvpn restart &>/dev/null /etc/init.d/openvpn restart &>/dev/null sleep 1s msg -bar msg -azu "$(fun_trans "PUERTOS REDEFINIDOS")" msg -bar } edit_dropbear () { msg -bar msg -azu "$(fun_trans "REDEFINIR PUERTOS DROPBEAR")" msg -bar local CONF="/etc/default/dropbear" local NEWCONF="$(cat ${CONF}|grep -v "DROPBEAR_EXTRA_ARGS")" msg -ne "$(fun_trans "Nuevos Puertos"): " read -p "" newports for PTS in `echo ${newports}`; do verify_port dropbear "${PTS}" && echo -e "\033[1;33mPort $PTS \033[1;32mOK" || { echo -e "\033[1;33mPort $PTS \033[1;31mFAIL" return 1 } done rm ${CONF} while read varline; do echo -e "${varline}" >> ${CONF} if [[ ${varline} = "NO_START=0" ]]; then echo -e 'DROPBEAR_EXTRA_ARGS="VAR"' >> ${CONF} for NPT in $(echo ${newports}); do sed -i "s/VAR/-p ${NPT} VAR/g" ${CONF} done sed -i "s/VAR//g" ${CONF} fi done <<< "${NEWCONF}" msg -azu "$(fun_trans "AGUARDE")" service dropbear restart &>/dev/null sleep 1s msg -bar msg -azu "$(fun_trans "PUERTOS REDEFINIDOS")" msg -bar } edit_openssh () { msg -azu "$(fun_trans "REDEFINIR PUERTOS OPENSSH")" msg -bar local CONF="/etc/ssh/sshd_config" local NEWCONF="$(cat ${CONF}|grep -v [Pp]ort)" msg -ne "$(fun_trans "Nuevos Puertos"): " read -p "" newports for PTS in `echo ${newports}`; do verify_port sshd "${PTS}" && echo -e "\033[1;33mPort $PTS \033[1;32mOK" || { echo -e "\033[1;33mPort $PTS \033[1;31mFAIL" return 1 } done rm ${CONF} for NPT in $(echo ${newports}); do echo -e "Port ${NPT}" >> ${CONF} done while read varline; do echo -e "${varline}" >> ${CONF} done <<< "${NEWCONF}" msg -azu "$(fun_trans "AGUARDE")" service ssh restart &>/dev/null service sshd restart &>/dev/null sleep 1s msg -bar msg -azu "$(fun_trans "PUERTOS REDEFINIDOS")" msg -bar } main_fun () { msg -bar2 msg -tit "" msg -ama " EDITAR PUERTOS ACTIVOS " msg -bar2 unset newports i=0 while read line; do let i++ case $line in squid|squid3)squid=$i;; apache|apache2)apache=$i;; openvpn)openvpn=$i;; dropbear)dropbear=$i;; sshd)ssh=$i;; esac done <<< "$(port|cut -d' ' -f1|sort -u)" for((a=1; a<=$i; a++)); do [[ $squid = $a ]] && echo -ne "\033[1;32m [$squid] > " && msg -azu "$(fun_trans "REDEFINIR PUERTOS SQUID")" [[ $apache = $a ]] && echo -ne "\033[1;32m [$apache] > " && msg -azu "$(fun_trans "REDEFINIR PUERTOS APACHE")" [[ $openvpn = $a ]] && echo -ne "\033[1;32m [$openvpn] > " && msg -azu "$(fun_trans "REDEFINIR PUERTOS OPENVPN")" [[ $dropbear = $a ]] && echo -ne "\033[1;32m [$dropbear] > " && msg -azu "$(fun_trans "REDEFINIR PUERTOS DROPBEAR")" [[ $ssh = $a ]] && echo -ne "\033[1;32m [$ssh] > " && msg -azu "$(fun_trans "REDEFINIR PUERTOS SSH")" done echo -ne "$(msg -bar)\n\033[1;32m [0] > " && msg -azu "\e[97m\033[1;41m VOLVER \033[1;37m" msg -bar while true; do echo -ne "\033[1;37m$(fun_trans "Seleccione"): " && read selection tput cuu1 && tput dl1 [[ ! -z $squid ]] && [[ $squid = $selection ]] && edit_squid && break [[ ! -z $apache ]] && [[ $apache = $selection ]] && edit_apache && break [[ ! -z $openvpn ]] && [[ $openvpn = $selection ]] && edit_openvpn && break [[ ! -z $dropbear ]] && [[ $dropbear = $selection ]] && edit_dropbear && break [[ ! -z $ssh ]] && [[ $ssh = $selection ]] && edit_openssh && break [[ "0" = $selection ]] && break done #exit 0 } main_fun