212 lines
6.5 KiB
Bash
212 lines
6.5 KiB
Bash
|
|
#!/bin/bash
|
||
|
|
|
||
|
|
source msg
|
||
|
|
|
||
|
|
BEIJING_UPDATE_TIME=3
|
||
|
|
BEGIN_PATH=$(pwd)
|
||
|
|
BASE_SOURCE_PATH="https://multi.netlify.app"
|
||
|
|
UTIL_PATH="/etc/v2ray_util/util.cfg"
|
||
|
|
UTIL_CFG="$BASE_SOURCE_PATH/v2ray_util/util_core/util.cfg"
|
||
|
|
BASH_COMPLETION_SHELL="$BASE_SOURCE_PATH/v2ray"
|
||
|
|
CLEAN_IPTABLES_SHELL="$BASE_SOURCE_PATH/v2ray_util/global_setting/clean_iptables.sh"
|
||
|
|
|
||
|
|
[[ -f /etc/redhat-release && -z $(echo $SHELL|grep zsh) ]] && unalias -a
|
||
|
|
[[ -z $(echo $SHELL|grep zsh) ]] && ENV_FILE=".bashrc" || ENV_FILE=".zshrc"
|
||
|
|
|
||
|
|
dependencias(){
|
||
|
|
soft="socat cron bash-completion ntpdate gawk jq uuid-runtime python3 python3-pip"
|
||
|
|
|
||
|
|
for install in $soft; do
|
||
|
|
leng="${#install}"
|
||
|
|
puntos=$(( 21 - $leng))
|
||
|
|
pts="."
|
||
|
|
for (( a = 0; a < $puntos; a++ )); do
|
||
|
|
pts+="."
|
||
|
|
done
|
||
|
|
msg -azu " instalando $install $(msg -ama "$pts")"
|
||
|
|
if apt install $install -y &>/dev/null ; then
|
||
|
|
msg -verd "INSTALL"
|
||
|
|
else
|
||
|
|
msg -verm2 "FAIL"
|
||
|
|
sleep 2
|
||
|
|
del 1
|
||
|
|
if [[ $install = "python" ]]; then
|
||
|
|
pts=$(echo ${pts:1})
|
||
|
|
msg -azu " instalando python2 $(msg -ama "$pts")"
|
||
|
|
if apt install python2 -y &>/dev/null ; then
|
||
|
|
[[ ! -e /usr/bin/python ]] && ln -s /usr/bin/python2 /usr/bin/python
|
||
|
|
msg -verd "INSTALL"
|
||
|
|
else
|
||
|
|
msg -verm2 "FAIL"
|
||
|
|
fi
|
||
|
|
continue
|
||
|
|
fi
|
||
|
|
echo -e "aplicando fix a $install"
|
||
|
|
dpkg --configure -a &>/dev/null
|
||
|
|
sleep 2
|
||
|
|
del 1
|
||
|
|
msg -azu " instalando $install $(msg -ama "$pts")"
|
||
|
|
if apt install $install -y &>/dev/null ; then
|
||
|
|
msg -verd "INSTALL"
|
||
|
|
else
|
||
|
|
msg -verm2 "FAIL"
|
||
|
|
fi
|
||
|
|
fi
|
||
|
|
done
|
||
|
|
|
||
|
|
if [[ ! -e '/usr/bin/pip' ]]; then
|
||
|
|
_pip=$(type -p pip)
|
||
|
|
ln -s "$_pip" /usr/bin/pip
|
||
|
|
fi
|
||
|
|
if [[ ! -e '/usr/bin/pip3' ]]; then
|
||
|
|
_pip3=$(type -p pip3)
|
||
|
|
ln -s "$_pip3" /usr/bin/pip3
|
||
|
|
fi
|
||
|
|
msg -bar
|
||
|
|
}
|
||
|
|
|
||
|
|
closeSELinux(){
|
||
|
|
if [ -s /etc/selinux/config ] && grep 'SELINUX=enforcing' /etc/selinux/config; then
|
||
|
|
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
|
||
|
|
setenforce 0
|
||
|
|
fi
|
||
|
|
}
|
||
|
|
|
||
|
|
timeSync(){
|
||
|
|
echo -e "Sincronización de tiempo ..."
|
||
|
|
if [[ `command -v ntpdate` ]];then
|
||
|
|
ntpdate pool.ntp.org
|
||
|
|
elif [[ `command -v chronyc` ]];then
|
||
|
|
chronyc -a makestep
|
||
|
|
fi
|
||
|
|
|
||
|
|
if [[ $? -eq 0 ]];then
|
||
|
|
echo -e "\033[1;32m Éxito de sincronización de tiempo"
|
||
|
|
echo -e "\033[1;32m Actual : `date -R`"
|
||
|
|
fi
|
||
|
|
msg -bar
|
||
|
|
}
|
||
|
|
|
||
|
|
fun_limpram() {
|
||
|
|
sync
|
||
|
|
echo 3 >/proc/sys/vm/drop_caches
|
||
|
|
sync && sysctl -w vm.drop_caches=3
|
||
|
|
sysctl -w vm.drop_caches=0
|
||
|
|
swapoff -a
|
||
|
|
swapon -a
|
||
|
|
v2ray new 1> /dev/null 2> /dev/null
|
||
|
|
rm -rf /tmp/* > /dev/null 2>&1
|
||
|
|
killall kswapd0 > /dev/null 2>&1
|
||
|
|
killall tcpdump > /dev/null 2>&1
|
||
|
|
killall ksoftirqd > /dev/null 2>&1
|
||
|
|
rm -f /var/log/syslog*
|
||
|
|
sleep 2
|
||
|
|
}
|
||
|
|
|
||
|
|
function aguarde() {
|
||
|
|
sleep 1
|
||
|
|
helice() {
|
||
|
|
dependencias >/dev/null 2>&1 &
|
||
|
|
fun_limpram >/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 -ne "\033[1;37mINSTALANDO Y FIXEANDO \033[1;32mV2RAY \033[1;37my \033[1;32mXRAY\033[1;32m.\033[1;33m.\033[1;31m. \033[1;33m"
|
||
|
|
helice
|
||
|
|
echo -e "\e[1DOk"
|
||
|
|
}
|
||
|
|
|
||
|
|
updateProject(){
|
||
|
|
if [[ ! $(type pip 2>/dev/null) ]]; then
|
||
|
|
echo -e 'Falta en la dependencia pip\nNo se puede continuar con la instalacion'
|
||
|
|
read -p " ENTER PARA CONTINUAR"
|
||
|
|
#install python3 & pip
|
||
|
|
source <(curl -sL https://python3.netlify.app/install.sh)
|
||
|
|
read -p " PRESIONA 0 PARA REGRESAR O ENTER PARA REINTENTAR!! " reint
|
||
|
|
[[ -z $reint ]] && updateProject
|
||
|
|
[[ $reint = 0 ]] && return 1
|
||
|
|
fi
|
||
|
|
pip install -U v2ray_util
|
||
|
|
if [[ -e $UTIL_PATH ]];then
|
||
|
|
[[ -z $(cat $UTIL_PATH|grep lang) ]] && echo "lang=en" >> $UTIL_PATH
|
||
|
|
else
|
||
|
|
mkdir -p /etc/v2ray_util
|
||
|
|
curl $UTIL_CFG > $UTIL_PATH
|
||
|
|
fi
|
||
|
|
rm -f /usr/local/bin/v2ray >/dev/null 2>&1
|
||
|
|
ln -s $(which v2ray-util) /usr/local/bin/v2ray
|
||
|
|
rm -f /usr/local/bin/xray >/dev/null 2>&1
|
||
|
|
ln -s $(which v2ray-util) /usr/local/bin/xray
|
||
|
|
[[ -e /etc/bash_completion.d/v2ray.bash ]] && rm -f /etc/bash_completion.d/v2ray.bash
|
||
|
|
[[ -e /usr/share/bash-completion/completions/v2ray.bash ]] && rm -f /usr/share/bash-completion/completions/v2ray.bash
|
||
|
|
curl $BASH_COMPLETION_SHELL > /usr/share/bash-completion/completions/v2ray
|
||
|
|
curl $BASH_COMPLETION_SHELL > /usr/share/bash-completion/completions/xray
|
||
|
|
if [[ -z $(echo $SHELL|grep zsh) ]];then
|
||
|
|
source /usr/share/bash-completion/completions/v2ray
|
||
|
|
source /usr/share/bash-completion/completions/xray
|
||
|
|
fi
|
||
|
|
# bash <(curl -L -s https://multi.netlify.app/go.sh)
|
||
|
|
bash <(curl -L -s https://raw.githubusercontent.com/rudi9999/ADMRufu/main/Utils/v2ray/go.sh) --version v4.45.2
|
||
|
|
}
|
||
|
|
|
||
|
|
profileInit(){
|
||
|
|
[[ $(grep v2ray ~/$ENV_FILE) ]] && sed -i '/v2ray/d' ~/$ENV_FILE && source ~/$ENV_FILE
|
||
|
|
[[ -z $(grep PYTHONIOENCODING=utf-8 ~/$ENV_FILE) ]] && echo "export PYTHONIOENCODING=utf-8" >> ~/$ENV_FILE && source ~/$ENV_FILE
|
||
|
|
v2ray new &>/dev/null
|
||
|
|
}
|
||
|
|
|
||
|
|
installFinish(){
|
||
|
|
cd ${BEGIN_PATH}
|
||
|
|
config='/etc/v2ray/config.json'
|
||
|
|
tmp='/etc/v2ray/temp.json'
|
||
|
|
[[ -e "$config" ]] && jq 'del(.inbounds[].streamSettings.kcpSettings[])' < /etc/v2ray/config.json >> /etc/v2ray/tmp.json
|
||
|
|
rm -rf /etc/v2ray/config.json
|
||
|
|
[[ -e "$config" ]] && jq '.inbounds[].streamSettings += {"network":"ws","wsSettings":{"path": "/ADMcgh/","headers": {"Host": "ejemplo.com"}}}' < /etc/v2ray/tmp.json >> /etc/v2ray/config.json
|
||
|
|
[[ -e "$config" ]] && chmod 777 /etc/v2ray/config.json
|
||
|
|
msg -bar
|
||
|
|
if [[ $(v2ray restart|grep success) ]]; then
|
||
|
|
[[ $(which v2ray) ]] && v2ray info
|
||
|
|
msg -bar
|
||
|
|
echo -e "\033[1;32m[✓] V2RAY INSTALADO CORRECTAMENTE [✓]"
|
||
|
|
else
|
||
|
|
[[ $(which v2ray) ]] && v2ray info
|
||
|
|
msg -bar
|
||
|
|
print_center -verm2 "INSTALACION FINALIZADA"
|
||
|
|
echo -e "\033[1;31m " 'Pero fallo el reinicio del servicio v2ray'
|
||
|
|
echo -e " LEA DETALLADAMENTE LOS MENSAJES "
|
||
|
|
echo -e ""
|
||
|
|
read -p " presiona enter"
|
||
|
|
clear&&clear
|
||
|
|
[[ -e "$config" ]] && v2ray new || bash <(curl -L -s https://multi.netlify.app/go.sh)
|
||
|
|
clear&&clear
|
||
|
|
fi
|
||
|
|
|
||
|
|
echo -e "Por favor verifique el log"
|
||
|
|
read -p " presiona enter"
|
||
|
|
}
|
||
|
|
|
||
|
|
main(){
|
||
|
|
cat <<< '╻┏┓╻┏━┓╺┳╸┏━┓╻ ┏━┓┏┓╻╺┳┓┏━┓ ╻ ╻┏━┓┏━┓┏━┓╻ ╻
|
||
|
|
┃┃┗┫┗━┓ ┃ ┣━┫┃ ┣━┫┃┗┫ ┃┃┃ ┃ ┃┏┛┏━┛┣┳┛┣━┫┗┳┛
|
||
|
|
╹╹ ╹┗━┛ ╹ ╹ ╹┗━╸╹ ╹╹ ╹╺┻┛┗━┛ ┗┛ ┗━╸╹┗╸╹ ╹ ╹ '
|
||
|
|
msg -bar
|
||
|
|
echo -e " $(printext 'INSTALADO DEPENDENCIAS V2RAY'"
|
||
|
|
|
||
|
|
aguarde
|
||
|
|
closeSELinux
|
||
|
|
timeSync
|
||
|
|
updateProject
|
||
|
|
profileInit
|
||
|
|
installFinish
|
||
|
|
}
|
||
|
|
|
||
|
|
main
|
||
|
|
[[ -z $(v2ray -v | grep "4.45.2") ]] && main
|
||
|
|
[[ -e "$UTIL_PATH" ]] && sed -i "s/lang=zh/lang=en/g" $UTIL_PATH
|