12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886 |
- #!/bin/bash
- # VPS Installer
- # Script by XAM
- #
- # Illegal selling and redistribution of this script is strictly prohibited
- # Please respect author's Property
- # Binigay sainyo ng libre, ipamahagi nyo rin ng libre.
- #
- #
- # Now check if our machine is in root user, if not, this script exits
- # If you're on sudo user, run `sudo su -` first before running this script
- if [[ $EUID -ne 0 ]];then
- ScriptMessage
- echo -e "[\e[1;31mError\e[0m] This script must be run as root, exiting..."
- exit 1
- fi
- # Install Webserver
- apt -y --purge remove apache2*;
- apt -y install nginx
- apt -y install php3-fpm php3-cli libssh2-1 php-ssh2 php
-
- sed -i 's/listen = \/run\/php\/php7.3-fpm.sock/listen = 127.0.0.1:9000/g' /etc/php/7.3/fpm/pool.d/www.conf
- rm /etc/nginx/sites-enabled/default
- rm /etc/nginx/sites-available/default
- wget -O /etc/nginx/nginx.conf "https://raw.githubusercontent.com/irwanmohi/AutoScriptDebian10-1/main/Resources/Other/nginx.conf"
- wget -O /etc/nginx/conf.d/vps.conf "https://raw.githubusercontent.com/irwanmohi/AutoScriptDebian10-1/main/Resources/Other/vps.conf"
- wget -O /etc/nginx/conf.d/monitoring.conf "https://raw.githubusercontent.com/irwanmohi/AutoScriptDebian10-1/main/Resources/Other/monitoring.conf"
- mkdir -p /home/vps/public_html
- wget -O /home/vps/public_html/index.php "https://raw.githubusercontent.com/irwanmohi/AutoScriptDebian10-1/main/Resources/Panel/index.php"
- service php7.3-fpm restart
- service nginx restart
- # OpenVPN Monitoring
- apt-get install -y gcc libgeoip-dev python-virtualenv python-dev geoip-database-extra uwsgi uwsgi-plugin-python
- wget -O /srv/openvpn-monitor.tar "https://raw.githubusercontent.com/irwanmohi/AutoScriptDebian10-1/main/Resources/Panel/openvpn-monitor.tar"
- cd /srv
- tar xf openvpn-monitor.tar
- cd openvpn-monitor
- virtualenv .
- . bin/activate
- pip install -r requirements.txt
- wget -O /etc/uwsgi/apps-available/openvpn-monitor.ini "https://raw.githubusercontent.com/irwanmohi/AutoScriptDebian10-1/main/Resources/Panel/openvpn-monitor.ini"
- ln -s /etc/uwsgi/apps-available/openvpn-monitor.ini /etc/uwsgi/apps-enabled/
- # GeoIP For OpenVPN Monitor
- mkdir -p /var/lib/GeoIP
- wget -O /var/lib/GeoIP/GeoLite2-City.mmdb.gz "https://raw.githubusercontent.com/irwanmohi/AutoScriptDebian10-1/main/Resources/Panel/GeoLite2-City.mmdb.gz"
- gzip -d /var/lib/GeoIP/GeoLite2-City.mmdb.gz
- MyScriptName='ReGsUb Script'
- # OpenSSH Ports
- SSH_Port1='22'
- SSH_Port2='225'
- # OpenSSH Ports
- WS_Port1='80'
- WS_Port2='8080'
- # Your SSH Banner
- SSH_Banner='https://pastebin.com/raw/H7iNhF7m'
- # Dropbear Ports
- Dropbear_Port1='900'
- Dropbear_Port2='990'
- # Stunnel Ports
- Stunnel_Port1='443' # through Dropbear
- Stunnel_Port2='144' # through OpenSSH
- Stunnel_Port3='142' # through OpenVPN
- #ZIPROXY
- ZIPROXY='2898'
- Proxy_Port1='8000'
- Proxy_Port2='8118'
- # OpenVPN Ports
- OpenVPN_Port1='1720'
- OpenVPN_Port2='25222'
- OpenVPN_Port3='1194'
- OpenVPN_Port4='69' # take note when you change this port, openvpn sun noload config will not work
- # Privoxy Ports (must be 1024 or higher)
- Privoxy_Port1='6969'
- Privoxy_Port2='9696'
- # OpenVPN Config Download Port
- OvpnDownload_Port='86' # Before changing this value, please read this document. It contains all unsafe ports for Google Chrome Browser, please read from line #23 to line #89: https://chromium.googlesource.com/chromium/src.git/+/refs/heads/master/net/base/port_util.cc
- # Server local time
- MyVPS_Time='Asia/Kuala_Lumpur'
- #############################
- #############################
- #############################
- ## All function used for this script
- #############################
- ## WARNING: Do not modify or edit anything
- ## if you did'nt know what to do.
- ## This part is too sensitive.
- #############################
- #############################
- apt-get update
- apt-get upgrade -y
- apt-get install lolcat -y
- gem install lolcat
- sudo apt install python -y
- clear
- [[ ! "$(command -v curl)" ]] && apt install curl -y -qq
- [[ ! "$(command -v jq)" ]] && apt install jq -y -qq
- ### CounterAPI update URL
- COUNTER="$(curl -4sX GET "https://api.countapi.xyz/hit/BonvScripts/DebianVPS-Installer" | jq -r '.value')"
- IPADDR="$(curl -4skL http://ipinfo.io/ip)"
- GLOBAL_API_KEY="9531fde17724c8f2b297980c00498bc359e80"
- CLOUDFLARE_EMAIL="irwan@aidan.my"
- DOMAIN_NAME_TLD="vpnku.cf"
- DOMAIN_ZONE_ID="b8d4f58651dbc01b934ff7c1b911cbd3"
- ### DNS hostname / Payload here
- ## Setting variable
- ####
- ## Creating file dump for DNS Records
- TMP_FILE='/tmp/abonv.txt'
- curl -sX GET "https://api.cloudflare.com/client/v4/zones/$DOMAIN_ZONE_ID/dns_records?type=A&count=1000&per_page=1000" -H "X-Auth-Key: $GLOBAL_API_KEY" -H "X-Auth-Email: $CLOUDFLARE_EMAIL" -H "Content-Type: application/json" | python -m json.tool > "$TMP_FILE"
- ## Getting Existed DNS Record by Locating its IP Address "content" value
- CHECK_IP_RECORD="$(cat < "$TMP_FILE" | jq '.result[]' | jq 'del(.meta)' | jq 'del(.created_on,.locked,.modified_on,.proxiable,.proxied,.ttl,.type,.zone_id,.zone_name)' | jq '. | select(.content=='\"$IPADDR\"')' | jq -r '.content' | awk '!a[$0]++')"
- cat < "$TMP_FILE" | jq '.result[]' | jq 'del(.meta)' | jq 'del(.created_on,.locked,.modified_on,.proxiable,.proxied,.ttl,.type,.zone_id,.zone_name)' | jq '. | select(.content=='\"$IPADDR\"')' | jq -r '.name' | awk '!a[$0]++' | head -n1 > /tmp/abonv_existed_hostname
- cat < "$TMP_FILE" | jq '.result[]' | jq 'del(.meta)' | jq 'del(.created_on,.locked,.modified_on,.proxiable,.proxied,.ttl,.type,.zone_id,.zone_name)' | jq '. | select(.content=='\"$IPADDR\"')' | jq -r '.id' | awk '!a[$0]++' | head -n1 > /tmp/abonv_existed_dns_id
- function ExistedRecord(){
- MYDNS="$(cat /tmp/abonv_existed_hostname)"
- MYDNS_ID="$(cat /tmp/abonv_existed_dns_id)"
- }
- if [[ "$IPADDR" == "$CHECK_IP_RECORD" ]]; then
- ExistedRecord
- echo -e " IP Address already registered to database."
- echo -e " DNS: $MYDNS"
- echo -e " DNS ID: $MYDNS_ID"
- echo -e ""
- else
- PAYLOAD="ws"
- echo -e "Your IP Address:\033[0;35m $IPADDR\033[0m"
- read -p "Enter desired DNS: " servername
- #read -p "Enter desired servername: " servernames
- ### Creating a DNS Record
- function CreateRecord(){
- TMP_FILE2='/tmp/abonv2.txt'
- #TMP_FILE3='/tmp/abonv3.txt'
- curl -sX POST "https://api.cloudflare.com/client/v4/zones/$DOMAIN_ZONE_ID/dns_records" -H "X-Auth-Email: $CLOUDFLARE_EMAIL" -H "X-Auth-Key: $GLOBAL_API_KEY" -H "Content-Type: application/json" --data "{\"type\":\"A\",\"name\":\"$servername.$PAYLOAD\",\"content\":\"$IPADDR\",\"ttl\":86400,\"proxied\":false}" | python -m json.tool > "$TMP_FILE2"
- cat < "$TMP_FILE2" | jq '.result' | jq 'del(.meta)' | jq 'del(.created_on,.locked,.modified_on,.proxiable,.proxied,.ttl,.type,.zone_id,.zone_name)' > /tmp/abonv22.txt
- rm -f "$TMP_FILE2"
- mv /tmp/abonv22.txt "$TMP_FILE2"
- MYDNS="$(cat < "$TMP_FILE2" | jq -r '.name')"
- MYDNS_ID="$(cat < "$TMP_FILE2" | jq -r '.id')"
- #curl -sX POST "https://api.cloudflare.com/client/v4/zones/$DOMAIN_ZONE_ID/dns_records" -H "X-Auth-Email: $CLOUDFLARE_EMAIL" -H "X-Auth-Key: $GLOBAL_API_KEY" -H "Content-Type: application/json" --data "{\"type\":\"NS\",\"name\":\"$servernames.$PAYLOAD\",\"content\":\"$MYDNS\",\"ttl\":1,\"proxied\":false}" | python -m json.tool > "$TMP_FILE3"
- #cat < "$TMP_FILE3" | jq '.result' | jq 'del(.meta)' | jq 'del(.created_on,.locked,.modified_on,.proxiable,.proxied,.ttl,.type,.zone_id,.zone_name)' > /tmp/abonv33.txt
- #rm -f "$TMP_FILE3"
- #mv /tmp/abonv33.txt "$TMP_FILE3"
- #MYNS="$(cat < "$TMP_FILE3" | jq -r '.name')"
- #MYNS_ID="$(cat < "$TMP_FILE3" | jq -r '.id')"
- #echo "$MYNS" > nameserver.txt
- }
- CreateRecord
- echo -e " Registering your IP Address.."
- echo -e " DNS: $MYDNS"
- echo -e " DNS ID: $MYDNS_ID"
- #echo -e " DNS: $MYNS"
- #echo -e " DNS ID: $MYNS_ID"
- echo -e ""
- fi
- rm -rf /tmp/abonv*
- echo -e "$DOMAIN_NAME_TLD" > /tmp/abonv_mydns_domain
- echo -e "$MYDNS" > /tmp/abonv_mydns
- echo -e "$MYDNS_ID" > /tmp/abonv_mydns_id
- function Instupdate() {
- export DEBIAN_FRONTEND=noninteractive
- apt install fail2ban -y
- # Removing some firewall tools that may affect other services
- # apt-get remove --purge ufw firewalld -y
- # Installing some important machine essentials
- apt-get install nano wget curl zip unzip tar gzip p7zip-full bc rc openssl cron net-tools dnsutils dos2unix screen bzip2 ccrypt -y
- # Now installing all our wanted services
- apt-get install dropbear stunnel4 privoxy ca-certificates nginx ruby apt-transport-https lsb-release squid screenfetch -y
- # Installing all required packages to install Webmin
- apt-get install perl libnet-ssleay-perl openssl libauthen-pam-perl libpam-runtime libio-pty-perl apt-show-versions python dbus libxml-parser-perl -y
- apt-get install shared-mime-info jq -y
- # Installing a text colorizer
- # Trying to remove obsolette packages after installation
- apt-get autoremove -y
- # Installing OpenVPN by pulling its repository inside sources.list file
- #rm -rf /etc/apt/sources.list.d/openvpn*
- echo "deb http://build.openvpn.net/debian/openvpn/stable $(lsb_release -sc) main" >/etc/apt/sources.list.d/openvpn.list && apt-key del E158C569 && wget -O - https://swupdate.openvpn.net/repos/repo-public.gpg | apt-key add -
- wget -qO security-openvpn-net.asc "https://keys.openpgp.org/vks/v1/by-fingerprint/F554A3687412CFFEBDEFE0A312F5F7B42F2B01E7" && gpg --import security-openvpn-net.asc
- apt-get update -y
- apt-get install openvpn -y
- }
- function InstSSH(){
- # Removing some duplicated sshd server configs
- rm -f /etc/ssh/sshd_config*
- # Creating a SSH server config using cat eof tricks
- cat <<'MySSHConfig' > /etc/ssh/sshd_config
- # My OpenSSH Server config
- Port myPORT1
- Port myPORT2
- AddressFamily inet
- ListenAddress 0.0.0.0
- HostKey /etc/ssh/ssh_host_rsa_key
- HostKey /etc/ssh/ssh_host_ecdsa_key
- HostKey /etc/ssh/ssh_host_ed25519_key
- PermitRootLogin yes
- MaxSessions 1024
- PubkeyAuthentication yes
- PasswordAuthentication yes
- PermitEmptyPasswords no
- ChallengeResponseAuthentication no
- UsePAM yes
- X11Forwarding yes
- PrintMotd no
- ClientAliveInterval 240
- ClientAliveCountMax 2
- UseDNS no
- Banner /etc/banner
- AcceptEnv LANG LC_*
- Subsystem sftp /usr/lib/openssh/sftp-server
- MySSHConfig
- # Now we'll put our ssh ports inside of sshd_config
- sed -i "s|myPORT1|$SSH_Port1|g" /etc/ssh/sshd_config
- sed -i "s|myPORT2|$SSH_Port2|g" /etc/ssh/sshd_config
- # Download our SSH Banner
- rm -f /etc/banner
- wget -qO /etc/banner "$SSH_Banner"
- dos2unix -q /etc/banner
- # My workaround code to remove `BAD Password error` from passwd command, it will fix password-related error on their ssh accounts.
- sed -i '/password\s*requisite\s*pam_cracklib.s.*/d' /etc/pam.d/common-password
- sed -i 's/use_authtok //g' /etc/pam.d/common-password
- # Some command to identify null shells when you tunnel through SSH or using Stunnel, it will fix user/pass authentication error on HTTP Injector, KPN Tunnel, eProxy, SVI, HTTP Proxy Injector etc ssh/ssl tunneling apps.
- sed -i '/\/bin\/false/d' /etc/shells
- sed -i '/\/usr\/sbin\/nologin/d' /etc/shells
- echo '/bin/false' >> /etc/shells
- echo '/usr/sbin/nologin' >> /etc/shells
- # Restarting openssh service
- systemctl restart ssh
- # Removing some duplicate config file
- rm -rf /etc/default/dropbear*
- # creating dropbear config using cat eof tricks
- cat <<'MyDropbear' > /etc/default/dropbear
- # My Dropbear Config
- NO_START=0
- DROPBEAR_PORT=PORT01
- DROPBEAR_EXTRA_ARGS="-p PORT02"
- DROPBEAR_BANNER="/etc/banner"
- DROPBEAR_RSAKEY="/etc/dropbear/dropbear_rsa_host_key"
- DROPBEAR_DSSKEY="/etc/dropbear/dropbear_dss_host_key"
- DROPBEAR_ECDSAKEY="/etc/dropbear/dropbear_ecdsa_host_key"
- DROPBEAR_RECEIVE_WINDOW=65536
- MyDropbear
- # Now changing our desired dropbear ports
- sed -i "s|PORT01|$Dropbear_Port1|g" /etc/default/dropbear
- sed -i "s|PORT02|$Dropbear_Port2|g" /etc/default/dropbear
- # Restarting dropbear service
- systemctl restart dropbear
- }
- function InsStunnel(){
- StunnelDir=$(ls /etc/default | grep stunnel | head -n1)
- # Creating stunnel startup config using cat eof tricks
- cat <<'MyStunnelD' > /etc/default/$StunnelDir
- # My Stunnel Config
- ENABLED=1
- FILES="/etc/stunnel/*.conf"
- OPTIONS="/etc/banner"
- BANNER="/etc/banner"
- PPP_RESTART=0
- # RLIMITS="-n 4096 -d unlimited"
- RLIMITS=""
- MyStunnelD
- # Removing all stunnel folder contents
- rm -rf /etc/stunnel/*
- # Creating stunnel certifcate using openssl
- openssl req -new -x509 -days 9999 -nodes -subj "/C=MY/ST=SEL/L=Gombak/O=$MyScriptName/OU=$MyScriptName/CN=$MyScriptName" -out /etc/stunnel/stunnel.pem -keyout /etc/stunnel/stunnel.pem &> /dev/null
- ## > /dev/null 2>&1
- # Creating stunnel server config
- cat <<'MyStunnelC' > /etc/stunnel/stunnel.conf
- # My Stunnel Config
- pid = /var/run/stunnel.pid
- cert = /etc/stunnel/stunnel.pem
- client = no
- socket = l:TCP_NODELAY=1
- socket = r:TCP_NODELAY=1
- TIMEOUTclose = 0
- [stunnel]
- connect = 127.0.0.1:WS_Port1
- accept = WS_Port2
- [dropbear]
- accept = Stunnel_Port1
- connect = 127.0.0.1:dropbear_port_c
- [openssh]
- accept = Stunnel_Port2
- connect = 127.0.0.1:openssh_port_c
- [openvpn]
- accept = Stunnel_Port3
- connect = 127.0.0.1:MyOvpnPort3
- MyStunnelC
- # setting stunnel ports
- sed -i "s|WS_Port1|$WS_Port1|g" /etc/stunnel/stunnel.conf
- sed -i "s|WS_Port2|$WS_Port2|g" /etc/stunnel/stunnel.conf
- sed -i "s|MyOvpnPort3|$OpenVPN_Port3|g" /etc/stunnel/stunnel.conf
- sed -i "s|Stunnel_Port1|$Stunnel_Port1|g" /etc/stunnel/stunnel.conf
- sed -i "s|dropbear_port_c|$(netstat -tlnp | grep -i dropbear | awk '{print $4}' | cut -d: -f2 | xargs | awk '{print $2}' | head -n1)|g" /etc/stunnel/stunnel.conf
- sed -i "s|Stunnel_Port2|$Stunnel_Port2|g" /etc/stunnel/stunnel.conf
- sed -i "s|openssh_port_c|$(netstat -tlnp | grep -i ssh | awk '{print $4}' | cut -d: -f2 | xargs | awk '{print $2}' | head -n1)|g" /etc/stunnel/stunnel.conf
- sed -i "s|Stunnel_Port3|$Stunnel_Port3|g" /etc/stunnel/stunnel.conf
- sed -i "s|openssh_port_c|$(netstat -tlnp | grep -i ssh | awk '{print $4}' | cut -d: -f2 | xargs | awk '{print $2}' | head -n1)|g" /etc/stunnel/stunnel.conf
- # Restarting stunnel service
- systemctl restart $StunnelDir
- }
- function InsOpenVPN(){
- # Checking if openvpn folder is accidentally deleted or purged
- if [[ ! -e /etc/openvpn ]]; then
- mkdir -p /etc/openvpn
- fi
- # Removing all existing openvpn server files
- rm -rf /etc/openvpn/*
- # Creating server.conf, ca.crt, server.crt and server.key
- cat <<'myOpenVPNconf1' > /etc/openvpn/server_tcp.conf
- # XAMScript
- port MyOvpnPort3
- dev tun
- proto tcp
- ca /etc/openvpn/ca.crt
- cert /etc/openvpn/xbarts.crt
- key /etc/openvpn/xbarts.key
- dh none
- persist-tun
- persist-key
- persist-remote-ip
- cipher none
- ncp-disable
- auth none
- comp-lzo
- tun-mtu 1500
- reneg-sec 0
- plugin /etc/openvpn/openvpn-auth-pam.so /etc/pam.d/login
- verify-client-cert none
- username-as-common-name
- max-clients 4000
- topology subnet
- server 172.16.0.0 255.255.0.0
- push "redirect-gateway def1"
- keepalive 5 60
- status /etc/openvpn/tcp_stats.log
- log /etc/openvpn/tcp.log
- verb 2
- script-security 2
- socket-flags TCP_NODELAY
- push "socket-flags TCP_NODELAY"
- push "dhcp-option DNS 1.0.0.1"
- push "dhcp-option DNS 1.1.1.1"
- push "dhcp-option DNS 8.8.4.4"
- push "dhcp-option DNS 8.8.8.8"
- duplicate-cn
- myOpenVPNconf1
- cat <<'myOpenVPNconf3' > /etc/openvpn/server_tcp2.conf
- # XAMScript
- port MyOvpnPort1
- dev tun
- proto tcp
- ca /etc/openvpn/ca.crt
- cert /etc/openvpn/xbarts.crt
- key /etc/openvpn/xbarts.key
- dh none
- persist-tun
- persist-key
- persist-remote-ip
- cipher none
- ncp-disable
- auth none
- comp-lzo
- tun-mtu 1500
- reneg-sec 0
- plugin /etc/openvpn/openvpn-auth-pam.so /etc/pam.d/login
- verify-client-cert none
- username-as-common-name
- max-clients 4000
- topology subnet
- server 172.18.0.0 255.255.0.0
- push "redirect-gateway def1"
- keepalive 5 60
- status /etc/openvpn/tcp_stats.log
- log /etc/openvpn/tcp.log
- verb 2
- script-security 2
- socket-flags TCP_NODELAY
- push "socket-flags TCP_NODELAY"
- push "dhcp-option DNS 1.0.0.1"
- push "dhcp-option DNS 1.1.1.1"
- push "dhcp-option DNS 8.8.4.4"
- push "dhcp-option DNS 8.8.8.8"
- duplicate-cn
- myOpenVPNconf3
- cat <<'myOpenVPNconf4' > /etc/openvpn/server_tcp3.conf
- # XAMScript
- port MyOvpnPort4
- dev tun
- proto tcp
- ca /etc/openvpn/ca.crt
- cert /etc/openvpn/xbarts.crt
- key /etc/openvpn/xbarts.key
- dh none
- persist-tun
- persist-key
- persist-remote-ip
- cipher none
- ncp-disable
- auth none
- comp-lzo
- tun-mtu 1500
- reneg-sec 0
- plugin /etc/openvpn/openvpn-auth-pam.so /etc/pam.d/login
- verify-client-cert none
- username-as-common-name
- max-clients 4000
- topology subnet
- server 172.19.0.0 255.255.0.0
- push "redirect-gateway def1"
- keepalive 5 60
- status /etc/openvpn/tcp_stats.log
- log /etc/openvpn/tcp.log
- verb 2
- script-security 2
- socket-flags TCP_NODELAY
- push "socket-flags TCP_NODELAY"
- push "dhcp-option DNS 1.0.0.1"
- push "dhcp-option DNS 1.1.1.1"
- push "dhcp-option DNS 8.8.4.4"
- push "dhcp-option DNS 8.8.8.8"
- duplicate-cn
- myOpenVPNconf4
- cat <<'myOpenVPNconf2' > /etc/openvpn/server_udp.conf
- # XAMScript
- port MyOvpnPort2
- dev tun
- proto udp
- ca /etc/openvpn/ca.crt
- cert /etc/openvpn/xbarts.crt
- key /etc/openvpn/xbarts.key
- dh none
- persist-tun
- persist-key
- persist-remote-ip
- cipher none
- ncp-disable
- auth none
- comp-lzo
- tun-mtu 1500
- reneg-sec 0
- plugin /etc/openvpn/openvpn-auth-pam.so /etc/pam.d/login
- verify-client-cert none
- username-as-common-name
- max-clients 4000
- topology subnet
- server 172.17.0.0 255.255.0.0
- push "redirect-gateway def1"
- keepalive 5 60
- status /etc/openvpn/tcp_stats.log
- log /etc/openvpn/tcp.log
- verb 2
- script-security 2
- socket-flags TCP_NODELAY
- push "socket-flags TCP_NODELAY"
- push "dhcp-option DNS 1.0.0.1"
- push "dhcp-option DNS 1.1.1.1"
- push "dhcp-option DNS 8.8.4.4"
- push "dhcp-option DNS 8.8.8.8"
- duplicate-cn
- myOpenVPNconf2
- cat <<'EOF7'> /etc/openvpn/ca.crt
- -----BEGIN CERTIFICATE-----
- MIIDqTCCAxKgAwIBAgIUBnJqBAnqOixnTtR+X8wEmXk9EDQwDQYJKoZIhvcNAQEL
- BQAwgYkxCzAJBgNVBAYTAm15MQwwCgYDVQQIDANzZWwxDzANBgNVBAcMBmdvbWJh
- azEOMAwGA1UECgwFYWlkYW4xFTATBgNVBAsMDHd3dy5haWRhbi5teTEVMBMGA1UE
- AwwMdnBuLmFpZGFuLm15MR0wGwYJKoZIhvcNAQkBFg5hZG1pbkBhaWRhbi5teTAe
- Fw0yMTEwMDcyMTE0NDdaFw00OTAyMjEyMTE0NDdaMIGJMQswCQYDVQQGEwJteTEM
- MAoGA1UECAwDc2VsMQ8wDQYDVQQHDAZnb21iYWsxDjAMBgNVBAoMBWFpZGFuMRUw
- EwYDVQQLDAx3d3cuYWlkYW4ubXkxFTATBgNVBAMMDHZwbi5haWRhbi5teTEdMBsG
- CSqGSIb3DQEJARYOYWRtaW5AYWlkYW4ubXkwgZ8wDQYJKoZIhvcNAQEBBQADgY0A
- MIGJAoGBAJmt5wyo8p9tRHSDUNHHUqkt1H2livU3LT7PMzHFGsA3Uv4AchDnzep0
- Asl8Zv14kE3WUHCUn9TJKotNZrQcf0JIkdl9mlODMjIDt+Sgw7paal+E5kyztCw/
- tP3E9aBq84uJkUHNrx+s4pf4VmcG8jMvFBZ7u6QMz3H1hICRyjXjAgMBAAGjggEK
- MIIBBjAdBgNVHQ4EFgQUI9uCexq0CnJyzdDd/3EVIBBARQ0wgckGA1UdIwSBwTCB
- voAUI9uCexq0CnJyzdDd/3EVIBBARQ2hgY+kgYwwgYkxCzAJBgNVBAYTAm15MQww
- CgYDVQQIDANzZWwxDzANBgNVBAcMBmdvbWJhazEOMAwGA1UECgwFYWlkYW4xFTAT
- BgNVBAsMDHd3dy5haWRhbi5teTEVMBMGA1UEAwwMdnBuLmFpZGFuLm15MR0wGwYJ
- KoZIhvcNAQkBFg5hZG1pbkBhaWRhbi5teYIUBnJqBAnqOixnTtR+X8wEmXk9EDQw
- DAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAQYwDQYJKoZIhvcNAQELBQADgYEADKe3
- qVstKktLiPaqapjkl3u9vhouVytAG/hn+udeyeDKVJLP8eni6nw8xVdiDwaKAZZW
- 9xTq2EcgQ5qA1UZdttCUSpYvrpsh1kRpCDb1wPM0vEULVs8kcMbV+7rF4vspCjLT
- 7VnTDziwIWuZR7z1Ykxt0qlc3Mw3b3m3UVztbRY=
- -----END CERTIFICATE-----
- EOF7
- cat <<'EOF9'> /etc/openvpn/xbarts.crt
- Certificate:
- Data:
- Version: 3 (0x2)
- Serial Number:
- 0e:19:a0:34:ac:4c:44:ee:4e:e5:af:09:3e:6f:3a:d6
- Signature Algorithm: sha256WithRSAEncryption
- Issuer:
- countryName = my
- stateOrProvinceName = sel
- localityName = gombak
- organizationName = aidan
- organizationalUnitName = www.aidan.my
- commonName = vpn.aidan.my
- emailAddress = admin@aidan.my
- Validity
- Not Before: Oct 8 12:26:19 2021 GMT
- Not After : Jan 11 12:26:19 2024 GMT
- Subject:
- commonName = vpn.aidan.my
- X509v3 extensions:
- X509v3 Basic Constraints:
- CA:FALSE
- X509v3 Subject Key Identifier:
- E1:15:1A:9C:87:5A:B0:5F:EB:72:13:28:9F:1F:96:0C:D3:50:6F:1C
- X509v3 Authority Key Identifier:
- keyid:23:DB:82:7B:1A:B4:0A:72:72:CD:D0:DD:FF:71:15:20:10:40:45:0D
- DirName:/C=my/ST=sel/L=gombak/O=aidan/OU=www.aidan.my/CN=vpn.aidan.my/emailAddress=admin@aidan.my
- serial:06:72:6A:04:09:EA:3A:2C:67:4E:D4:7E:5F:CC:04:99:79:3D:10:34
- X509v3 Extended Key Usage:
- TLS Web Server Authentication
- X509v3 Key Usage:
- Digital Signature, Key Encipherment
- X509v3 Subject Alternative Name:
- DNS:vpn.aidan.my
- -----BEGIN CERTIFICATE-----
- MIIDYjCCAkqgAwIBAgIRAMfKRex4P5oCH0gsSFWNJHowDQYJKoZIhvcNAQELBQAw
- EzERMA8GA1UEAwwIQ2hhbmdlTWUwHhcNMjExMjA5MTQxMDQyWhcNMzExMjA3MTQx
- MDQyWjARMQ8wDQYDVQQDDAZzZXJ2ZXIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
- ggEKAoIBAQCo2sTRSAJoA398DjA9j9w8NLKT03kSlUkGZD3i+VYBSEOPOYxYsY5B
- V8J+IgeU22JmWCmcQctWpl7XnXyrCVJT/WO/VyplUioiSUnuPe2lZDaret5OV1pN
- 1hQ0tmLF+TTTy+0YreNAtkuinh4Inswp9f5YdhT69DAsidl5odybDllHyMoRH4dZ
- KanTuNFOMQa/H5wGKKwaZWRgHtZgxrkOyK4PFWsDV9jlXBxtfD16jjwFnLMM6glD
- 2X4mNKZhJdIAopYUA7jVaDHjaHJEuddveWLkEHsmgjpWBEashziSppY53UHHoKkt
- C05uASO1tifvETNCF+uNnJg1Y+yk+H4HAgMBAAGjgbIwga8wCQYDVR0TBAIwADAd
- BgNVHQ4EFgQUWxG61QzeKIhdHrWOC47mVPS+5CIwTgYDVR0jBEcwRYAUZrqFjj1H
- oZBIQJHfJLMA+oQUE0+hF6QVMBMxETAPBgNVBAMMCENoYW5nZU1lghRWoN7FEOBZ
- s6O4hB3le1qme///gDATBgNVHSUEDDAKBggrBgEFBQcDATALBgNVHQ8EBAMCBaAw
- EQYDVR0RBAowCIIGc2VydmVyMA0GCSqGSIb3DQEBCwUAA4IBAQClLNF/CDaJ6RCQ
- yX9R9cnLTxyXCp9+LEcpd8KBW4eyXRzhPhEny2059cwBo/F3BjO+LPEX58o18CEu
- pKJqI8a0l9gKf9alEDB6/+bkVcwPbe+10piPBBrjY+zXf92gyTi+CEbTvV1f5lNU
- w4py0lSn1Ly2Aa7wZOdGmsG90iUTKhbcBTXNyfehBGVs2OBcCb7IZYHNYuE47yTs
- YO+PHgyCUTaFW+03Sh7sFJ9UB6xM9RLN4awbEnuIPwbQjuzpI5vLSrXgSfnYJI4K
- ZJ6utnfpTRY7m9rvgdi/aa5i9qM3v145DYrVZ+jURdRveNe8FPY69XXqjpoTBhLJ
- pf3ioiv4
- -----END CERTIFICATE-----
- EOF9
- cat <<'EOF10'> /etc/openvpn/xbarts.key
- -----BEGIN PRIVATE KEY-----
- MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQClfU/iFBQjm6Zu
- CZ/Cbu6DZxpPse4yFgnSDpz7Kcy5ReH9IeLkL31wg0LcdbVqp5TaNuQm6dOGCLgv
- JJrKYTHZNgPs4wEwJDDCfZTgB6zqyIHGFD1ttQyQ5B/n9L0EyoSo8kN4k/fSgGmf
- AIKwNSFR0ld+EOaFUKqAoe28C5n5cOP3wlsrTG71oWGzqnc9M/rw0wACuxO166Jg
- +JYcIsuklAHvZmCiFZg11GayyAIs+izy6WpNfUdpqy1BY2rRrOIOk38pplyyr9gR
- 46unRbiOqPviBN6GeSzMLB9YT4wpJFXxbhrfW/s6EbQkY9jHu5XKPu9shGcwmFif
- ldpSCS5HAgMBAAECggEBAKLueZPQyPM17+out4gqx9G/1PvZ5vaRFCIoGQ5/3Pwc
- fZ9HmaenygzYbx+3FGJpk/g0SvS1CnjQZOalV3EhuH5u2/aCmUzYlNkn40eexvRx
- bLOkgcZdln2g3Hj3UJJDAdGElEFHDZvGqjbNvd3WsXNpcJLB+PQQs43p37Jgibw3
- gBWIS1/kJfVzeTnzk5qgrMogNIW4RAXUzI3tEbhYEVXCi/ZP/iBzalb2eAl/DOC9
- iKyZ+rEwPCfWL+JFq5Qe6T0R/USOZAdC1irr6XQ0rNQwWbce/RWAmb45d3QYHbb6
- Qjhx0ScuheRdutqaJUkqDHk26V13Z4KjLbKzUQZIg0ECgYEA0l+vajfWtTMnW1CR
- Qp+gpxvgQnN+V3tX30KiXOtM2BtGLXFIDdvbQxaMRzd+hW0naVVhu0KIQo07OEOz
- 4OH/xNHqVZ47gQgKHkUZub72JXaJAk1F40NdRbLvn5jfMz3I+MtTIXT7f1mBHvM7
- xLnBpwhs+JUKAAFTrw+TzOTd2skCgYEAyWGTHsBUEuEt9wj8LEp2fm6M9Iqp3eWS
- 6V7TiOqWduK3aCDhyw1BkvVZjWHFiL927y+imik9z0SBAKdUnKPSxLrMkzKH0ZER
- v2UmKhZHKMsKERIh8kcaAFYuNZSvxdbWRdMzM5dam5L6P67LvysZutE7gXsorynE
- OX8eRUBAOI8CgYEAznUjVM26BBhQrpgSBt1br8R2wSBRRI+C/FOLvj8aKhgSNjSv
- bxJuS5fMUXQP0ef+vqwRftJboVyzWpNu6+s/tKwCGsZwRUBblbtg9N6I+NksurqV
- NOT+m5FxAyLnIYWoPypjyjjhPOjdBD/XT0ix2Tg2oXq61qh2tR5HgdS2OakCgYEA
- s8FANGvS4ANWJzNC/Tn+aT6+3S3FEMfyihNV2NolMruOoQjw43HSvZ35sMS8MSNO
- w5QOnXMAtDleuTmjwipNYcOoBiBNsde/MsvT9C9sl1Idiz1XRc8Hu5Mxriwpdfwd
- ybgK9Rs+Cq54aE3bmqmbTvGjHyHTH/+1IumAGKqQaKsCgYAMacI1eSUDTNa0I4Us
- 29bKpvZrbDn/oDBaLGxBLrLMf450HJvpz0PGvNh0mY2G3a3dd6JRf5ZZ8me1rHXZ
- cwB6fMAtJdp6x/2QTDZ2va5avhRB/4lRNyJifl6lhad0XPKhEOByd7wg+VeCBJ6P
- xXEZw5bUG9re12VX9nWNBLhJCw==
- -----END PRIVATE KEY-----
- EOF10
- # Getting all dns inside resolv.conf then use as Default DNS for our openvpn server
- #grep -v '#' /etc/resolv.conf | grep 'nameserver' | grep -E -o '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | while read -r line; do
- #echo "push \"dhcp-option DNS $line\"" >> /etc/openvpn/server_tcp.conf
- #done
- #grep -v '#' /etc/resolv.conf | grep 'nameserver' | grep -E -o '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | while read -r line; do
- #echo "push \"dhcp-option DNS $line\"" >> /etc/openvpn/server_udp.conf
- #done
- # setting openvpn server port
- sed -i "s|MyOvpnPort1|$OpenVPN_Port1|g" /etc/openvpn/server_tcp2.conf
- sed -i "s|MyOvpnPort3|$OpenVPN_Port3|g" /etc/openvpn/server_tcp.conf
- sed -i "s|MyOvpnPort4|$OpenVPN_Port4|g" /etc/openvpn/server_tcp3.conf
- sed -i "s|MyOvpnPort2|$OpenVPN_Port2|g" /etc/openvpn/server_udp.conf
- # Generating openvpn dh.pem file using openssl
- #openssl dhparam -out /etc/openvpn/dh.pem 1024
- # Getting some OpenVPN plugins for unix authentication
- wget -qO /etc/openvpn/b.zip 'https://github.com/imaPSYCHO/Parts/raw/main/openvpn_plugin64'
- unzip -qq /etc/openvpn/b.zip -d /etc/openvpn
- rm -f /etc/openvpn/b.zip
- # Some workaround for OpenVZ machines for "Startup error" openvpn service
- if [[ "$(hostnamectl | grep -i Virtualization | awk '{print $2}' | head -n1)" == 'openvz' ]]; then
- sed -i 's|LimitNPROC|#LimitNPROC|g' /lib/systemd/system/openvpn*
- systemctl daemon-reload
- fi
- # Allow IPv4 Forwarding
- echo 'net.ipv4.ip_forward=1' > /etc/sysctl.d/20-openvpn.conf && sysctl --system &> /dev/null && echo 1 > /proc/sys/net/ipv4/ip_forward
- # Iptables Rule for OpenVPN server
- #PUBLIC_INET="$(ip -4 route ls | grep default | grep -Po '(?<=dev )(\S+)' | head -1)"
- #IPCIDR='10.200.0.0/16'
- #iptables -I FORWARD -s $IPCIDR -j ACCEPT
- #iptables -t nat -A POSTROUTING -o $PUBLIC_INET -j MASQUERADE
- #iptables -t nat -A POSTROUTING -s $IPCIDR -o $PUBLIC_INET -j MASQUERADE
- # Installing Firewalld
- apt install firewalld -y
- systemctl start firewalld
- systemctl enable firewalld
- firewall-cmd --quiet --set-default-zone=public
- firewall-cmd --quiet --zone=public --permanent --add-port=1-65534/tcp
- firewall-cmd --quiet --zone=public --permanent --add-port=1-65534/udp
- firewall-cmd --quiet --reload
- firewall-cmd --quiet --add-masquerade
- firewall-cmd --quiet --permanent --add-masquerade
- firewall-cmd --quiet --permanent --add-service=ssh
- firewall-cmd --quiet --permanent --add-service=openvpn
- firewall-cmd --quiet --permanent --add-service=http
- firewall-cmd --quiet --permanent --add-service=https
- firewall-cmd --quiet --permanent --add-service=privoxy
- firewall-cmd --quiet --permanent --add-service=squid
- firewall-cmd --quiet --reload
- # Enabling IPv4 Forwarding
- echo 1 > /proc/sys/net/ipv4/ip_forward
- # Starting OpenVPN server
- systemctl start openvpn@server_tcp
- systemctl start openvpn@server_tcp2
- systemctl start openvpn@server_tcp3
- systemctl start openvpn@server_udp
- systemctl enable openvpn@server_tcp
- systemctl enable openvpn@server_tcp2
- systemctl enable openvpn@server_tcp3
- systemctl enable openvpn@server_udp
- systemctl restart openvpn@server_tcp
- systemctl restart openvpn@server_tcp2
- systemctl restart openvpn@server_tcp3
- systemctl restart openvpn@server_udp
- # Pulling OpenVPN no internet fixer script
- #wget -qO /etc/openvpn/openvpn.bash "https://raw.githubusercontent.com/Bonveio/BonvScripts/master/openvpn.bash"
- #0chmod +x /etc/openvpn/openvpn.bash
- }
- function InsProxy(){
- # Removing Duplicate privoxy config
- rm -rf /etc/privoxy/config*
- # Creating Privoxy server config using cat eof tricks
- cat <<'myPrivoxy' > /etc/privoxy/config
- # My Privoxy Server Config
- user-manual /usr/share/doc/privoxy/user-manual
- confdir /etc/privoxy
- logdir /var/log/privoxy
- filterfile default.filter
- logfile logfile
- listen-address 0.0.0.0:Privoxy_Port1
- listen-address 0.0.0.0:Privoxy_Port2
- toggle 1
- enable-remote-toggle 0
- enable-remote-http-toggle 0
- enable-edit-actions 0
- enforce-blocks 0
- buffer-limit 4096
- enable-proxy-authentication-forwarding 1
- forwarded-connect-retries 1
- accept-intercepted-requests 1
- allow-cgi-request-crunching 1
- split-large-forms 0
- keep-alive-timeout 5
- tolerate-pipelining 1
- socket-timeout 300
- permit-access 0.0.0.0/0 IP-ADDRESS
- myPrivoxy
- # Setting machine's IP Address inside of our privoxy config(security that only allows this machine to use this proxy server)
- sed -i "s|IP-ADDRESS|$IPADDR|g" /etc/privoxy/config
- # Setting privoxy ports
- sed -i "s|Privoxy_Port1|$Privoxy_Port1|g" /etc/privoxy/config
- sed -i "s|Privoxy_Port2|$Privoxy_Port2|g" /etc/privoxy/config
- # I'm setting Some Squid workarounds to prevent Privoxy's overflowing file descriptors that causing 50X error when clients trying to connect to your proxy server(thanks for this trick @homer_simpsons)
- apt remove --purge squid -y
- rm -rf /etc/squid/sq*
- apt install squid -y
- # Squid Ports (must be 1024 or higher)
- cat <<mySquid > /etc/squid/squid.conf
- acl VPN dst $(wget -4qO- http://ipinfo.io/ip)/32
- http_access allow VPN
- http_access deny all
- http_port 0.0.0.0:$Proxy_Port1
- http_port 0.0.0.0:$Proxy_Port2
- coredump_dir /var/spool/squid
- dns_nameservers 1.1.1.1 1.0.0.1
- refresh_pattern ^ftp: 1440 20% 10080
- refresh_pattern ^gopher: 1440 0% 1440
- refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
- refresh_pattern . 0 20% 4320
- visible_hostname localhost
- mySquid
- sed -i "s|SquidCacheHelper|$Proxy_Port1|g" /etc/squid/squid.conf
- sed -i "s|SquidCacheHelper|$Proxy_Port2|g" /etc/squid/squid.conf
- sudo apt install ziproxy
- cat <<myziproxy > /etc/ziproxy/ziproxy.conf
- Port = ZIPROXY
- UseContentLength = false
- ImageQuality = {30,25,25,20}
- myziproxy
- sed -i "s|ZIPROXY|$ZIPROXY|g" /etc/ziproxy/ziproxy.conf
- # Starting Proxy server
- echo -e "Restarting proxy server.."
- systemctl restart privoxy
- systemctl restart squid
- systemctl restart ziproxy
- }
- function OvpnConfigs(){
- # Creating nginx config for our ovpn config downloads webserver
- cat <<'myNginxC' > /etc/nginx/conf.d/bonveio-ovpn-config.conf
- # My OpenVPN Config Download Directory
- server {
- listen 0.0.0.0:myNginx;
- server_name localhost;
- root /var/www/openvpn;
- index index.html;
- }
- myNginxC
- # Setting our nginx config port for .ovpn download site
- sed -i "s|myNginx|$OvpnDownload_Port|g" /etc/nginx/conf.d/bonveio-ovpn-config.conf
- # Removing Default nginx page(port 80)
- rm -rf /etc/nginx/sites-*
- # Creating our root directory for all of our .ovpn configs
- rm -rf /var/www/openvpn
- mkdir -p /var/www/openvpn
- # Now creating all of our OpenVPN Configs
- cat <<EOF152> /var/www/openvpn/GTMConfig.ovpn
- # Credits to XAMJYSS
- client
- dev tun
- proto tcp
- remote $IPADDR $OpenVPN_Port3
- remote-cert-tls server
- resolv-retry infinite
- nobind
- tun-mtu 1500
- tun-mtu-extra 32
- mssfix 1450
- persist-key
- persist-tun
- auth-user-pass
- auth none
- auth-nocache
- cipher none
- keysize 0
- comp-lzo
- setenv CLIENT_CERT 0
- reneg-sec 0
- verb 1
- http-proxy $(curl -s http://ipinfo.io/ip || wget -q http://ipinfo.io/ip) $Privoxy_Port1
- http-proxy-option CUSTOM-HEADER Host redirect.googlevideo.com
- http-proxy-option CUSTOM-HEADER X-Forwarded-For redirect.googlevideo.com
- <ca>
- $(cat /etc/openvpn/ca.crt)
- </ca>
- EOF152
- cat <<EOF16> /var/www/openvpn/XJ-TU-UDP.ovpn
- # Credits to XAMJYSS
- client
- dev tun
- proto udp
- remote $IPADDR $OpenVPN_Port2
- remote-cert-tls server
- resolv-retry infinite
- nobind
- tun-mtu 1500
- tun-mtu-extra 32
- mssfix 1450
- persist-key
- persist-tun
- auth-user-pass
- auth none
- auth-nocache
- cipher none
- keysize 0
- comp-lzo
- setenv CLIENT_CERT 0
- reneg-sec 0
- verb 1
- <ca>
- $(cat /etc/openvpn/ca.crt)
- </ca>
- EOF16
- cat <<EOF160> /var/www/openvpn/XJ-Stories-TCP.ovpn
- # Credits to XAMJYSS
- client
- dev tun
- proto tcp
- remote $IPADDR $OpenVPN_Port3
- remote-cert-tls server
- resolv-retry infinite
- nobind
- tun-mtu 1500
- tun-mtu-extra 32
- mssfix 1450
- persist-key
- persist-tun
- auth-user-pass
- auth none
- auth-nocache
- cipher none
- keysize 0
- comp-lzo
- setenv CLIENT_CERT 0
- reneg-sec 0
- verb 1
- http-proxy $(curl -s http://ipinfo.io/ip || wget -q http://ipinfo.io/ip) $Privoxy_Port1
- http-proxy-option CUSTOM-HEADER CONNECT HTTP/1.0
- http-proxy-option CUSTOM-HEADER Host tiktoktreats.onelink.me
- http-proxy-option CUSTOM-HEADER X-Online-Host tiktoktreats.onelink.me
- http-proxy-option CUSTOM-HEADER X-Forward-Host tiktoktreats.onelink.me
- http-proxy-option CUSTOM-HEADER Connection:Keep-Alive
- <ca>
- $(cat /etc/openvpn/ca.crt)
- </ca>
- EOF160
- cat <<EOF17> /var/www/openvpn/XJ-GAMES.ovpn
- # Credits to XAMJYSS
- client
- dev tun
- proto tcp
- remote $IPADDR $OpenVPN_Port3
- remote-cert-tls server
- resolv-retry infinite
- nobind
- tun-mtu 1500
- tun-mtu-extra 32
- mssfix 1450
- persist-key
- persist-tun
- auth-user-pass
- auth none
- auth-nocache
- cipher none
- keysize 0
- comp-lzo
- setenv CLIENT_CERT 0
- reneg-sec 0
- verb 2
- http-proxy $(curl -s http://ipinfo.io/ip || wget -q http://ipinfo.io/ip) $Privoxy_Port1
- http-proxy-option VERSION 1.1
- http-proxy-option CUSTOM-HEADER "Host: c3cdn.ml.youngjoygame.com"
- http-proxy-option CUSTOM-HEADER "X-Online-Host: c3cdn.ml.youngjoygame.com"
- http-proxy-option CUSTOM-HEADER "X-Forward-Host: c3cdn.ml.youngjoygame.com"
- http-proxy-option CUSTOM-HEADER "Connection: Keep-Alive"
- <ca>
- $(cat /etc/openvpn/ca.crt)
- </ca>
- EOF17
- cat <<EOF179> /var/www/openvpn/default.ovpn
- # Credits to XAMJYSS
- client
- dev tun
- proto tcp
- remote $IPADDR $OpenVPN_Port3
- remote-cert-tls server
- resolv-retry infinite
- nobind
- tun-mtu 1500
- tun-mtu-extra 32
- mssfix 1450
- persist-key
- persist-tun
- auth-user-pass
- auth none
- auth-nocache
- cipher none
- keysize 0
- comp-lzo
- setenv CLIENT_CERT 0
- reneg-sec 0
- verb 2
- <ca>
- $(cat /etc/openvpn/ca.crt)
- </ca>
- EOF179
- # Creating OVPN download site index.html
- cat <<'mySiteOvpn' > /var/www/openvpn/index.html
- <!DOCTYPE html>
- <html lang="en">
- <!-- OVPN Download site by XAMJYSS -->
- <head><meta charset="utf-8" /><title>MyScriptName OVPN Config Download</title><meta name="description" content="MyScriptName Server" /><meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" name="viewport" /><meta name="theme-color" content="#000000" /><link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.2/css/all.css"><link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.3.1/css/bootstrap.min.css" rel="stylesheet"><link href="https://cdnjs.cloudflare.com/ajax/libs/mdbootstrap/4.8.3/css/mdb.min.css" rel="stylesheet"></head><body><div class="container justify-content-center" style="margin-top:9em;margin-bottom:5em;"><div class="col-md"><div class="view"><img src="https://openvpn.net/wp-content/uploads/openvpn.jpg" class="card-img-top"><div class="mask rgba-white-slight"></div></div><div class="card"><div class="card-body"><h5 class="card-title">Config List</h5><br /><ul class="list-group"><li class="list-group-item justify-content-between align-items-center" style="margin-bottom:1em;"><p>For Globe/TM <span class="badge light-blue darken-4">Android/iOS</span><br /><small> For EZ/GS Promo with WNP freebies</small></p><a class="btn btn-outline-success waves-effect btn-sm" href="http://IP-ADDRESS:NGINXPORT/GTMConfig.ovpn" style="float:right;"><i class="fa fa-download"></i> Download</a></li><li class="list-group-item justify-content-between align-items-center" style="margin-bottom:1em;"><p>For Sun <span class="badge light-blue darken-4">Android/iOS/PC/Modem</span><br /><small> For TU/CTC UDP Promos</small></p><a class="btn btn-outline-success waves-effect btn-sm" href="http://IP-ADDRESS:NGINXPORT/XJ-TU-UDP.ovpn" style="float:right;"><i class="fa fa-download"></i> Download</a></li><li class="list-group-item justify-content-between align-items-center" style="margin-bottom:1em;"><p>For Sun/SMART/TNT <span class="badge light-blue darken-4">Android/iOS/PC/MODEM</span><br /><small> TNT GIGASTORIES</small></p><a class="btn btn-outline-success waves-effect btn-sm" href="http://IP-ADDRESS:NGINXPORT/XJ-Stories-TCP.ovpn" style="float:right;"><i class="fa fa-download"></i> Download</a></li></ul></div></div></div></div></body></html>
- mySiteOvpn
-
- # Setting template's correct name,IP address and nginx Port
- sed -i "s|MyScriptName|$MyScriptName|g" /var/www/openvpn/index.html
- sed -i "s|NGINXPORT|$OvpnDownload_Port|g" /var/www/openvpn/index.html
- sed -i "s|IP-ADDRESS|$IPADDR|g" /var/www/openvpn/index.html
- # Restarting nginx service
- systemctl restart nginx
-
- # Creating all .ovpn config archives
- cd /var/www/openvpn
- zip -qq -r Configs.zip *.ovpn
- cd
- }
- function ip_address(){
- local IP="$( ip addr | egrep -o '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | egrep -v "^192\.168|^172\.1[6-9]\.|^172\.2[0-9]\.|^172\.3[0-2]\.|^10\.|^127\.|^255\.|^0\." | head -n 1 )"
- [ -z "${IP}" ] && IP="$( wget -qO- -t1 -T2 ipv4.icanhazip.com )"
- [ -z "${IP}" ] && IP="$( wget -qO- -t1 -T2 ipinfo.io/ip )"
- [ ! -z "${IP}" ] && echo "${IP}" || echo
- }
- IPADDR="$(ip_address)"
- function ConfStartup(){
- # Daily reboot time of our machine
- # For cron commands, visit https://crontab.guru
- timedatectl set-timezone Asia/Kuala_Lumpur
- #write out current crontab
- crontab -l > mycron
- #echo new cron into cron file
- echo -e "0 3 * * * /sbin/reboot >/dev/null 2>&1" >> mycron
- #install new cron file
- crontab mycron
- service cron restart
- echo '0 3 * * * /sbin/reboot >/dev/null 2>&1' >> /etc/cron.d/mycron
- #removing cron
- service cron restart
- # Creating directory for startup script
- rm -rf /etc/juans
- mkdir -p /etc/juans
- chmod -R 777 /etc/juans
- # Creating startup script using cat eof tricks
- cat <<'EOFSH' > /etc/juans/startup.sh
- #!/bin/bash
- # Setting server local time
- ln -fs /usr/share/zoneinfo/MyVPS_Time /etc/localtime
- # Prevent DOS-like UI when installing using APT (Disabling APT interactive dialog)
- export DEBIAN_FRONTEND=noninteractive
- # Allowing ALL TCP ports for our machine (Simple workaround for policy-based VPS)
- iptables -A INPUT -s $(wget -4qO- http://ipinfo.io/ip) -p tcp -m multiport --dport 1:65535 -j ACCEPT
- # Allowing OpenVPN to Forward traffic
- /bin/bash /etc/openvpn/openvpn.bash
- # Deleting Expired SSH Accounts
- /usr/local/sbin/delete_expired &> /dev/null
- EOFSH
- chmod +x /etc/juans/startup.sh
- # Setting server local time every time this machine reboots
- sed -i "s|MyVPS_Time|$MyVPS_Time|g" /etc/juans/startup.sh
- #
- rm -rf /etc/sysctl.d/99*
- # Setting our startup script to run every machine boots
- echo "[Unit]
- Description=Juans Startup Script
- Before=network-online.target
- Wants=network-online.target
- [Service]
- Type=oneshot
- ExecStart=/bin/bash /etc/juans/startup.sh
- RemainAfterExit=yes
- [Install]
- WantedBy=multi-user.target" > /etc/systemd/system/juans.service
- chmod +x /etc/systemd/system/juans.service
- systemctl daemon-reload
- systemctl start juans
- systemctl enable juans &> /dev/null
- # Rebooting cron service
- systemctl restart cron
- systemctl enable cron
- }
- function ConfMenu(){
- echo -e " Creating Menu scripts.."
- cd /usr/local/sbin/
- rm -rf {accounts,base-ports,base-ports-wc,base-script,bench-network,clearcache,connections,create,create_random,create_trial,delete_expired,delete_all,diagnose,edit_dropbear,edit_openssh,edit_openvpn,edit_ports,edit_squid3,edit_stunnel4,locked_list,menu,options,ram,reboot_sys,reboot_sys_auto,restart_services,server,set_multilogin_autokill,set_multilogin_autokill_lib,show_ports,speedtest,user_delete,user_details,user_details_lib,user_extend,user_list,user_lock,user_unlock}
- wget -q 'https://raw.githubusercontent.com/xamjyss143/VPS/master/menu.zip'
- unzip -qq menu.zip
- rm -f menu.zip
- chmod +x ./*
- dos2unix ./* &> /dev/null
- sed -i 's|/etc/squid/squid.conf|/etc/privoxy/config|g' ./*
- sed -i 's|http_port|listen-address|g' ./*
- cd ~
- echo 'clear' > /etc/profile.d/juans.sh
- echo 'echo '' > /var/log/syslog' >> /etc/profile.d/juans.sh
- echo 'screenfetch -p -A Android' >> /etc/profile.d/juans.sh
- chmod +x /etc/profile.d/juans.sh
- # Turning Off Multi-login Auto Kill
- rm -f /etc/cron.d/set_multilogin_autokill_lib
- }
- function ScriptMessage(){
- echo -e ""
- echo -e " (。◕‿◕。) $MyScriptName VPS Installer"
- echo -e " Script created by Bonveio"
- echo -e " Remoded by XAM"
- echo -e ""
- }
- function service() {
- cat << PTHON > /usr/sbin/yakult
- #!/usr/bin/python
- import socket, threading, thread, select, signal, sys, time, getopt
- # Listen
- LISTENING_ADDR = '0.0.0.0'
- if sys.argv[1:]:
- LISTENING_PORT = sys.argv[1]
- else:
- LISTENING_PORT = 80
- # Pass
- PASS = ''
- # CONST
- BUFLEN = 4096 * 4
- TIMEOUT = 3600
- DEFAULT_HOST = '127.0.0.1:900'
- RESPONSE = 'HTTP/1.1 101 <font color="purple">xamjyssvpn.com|coronassh.com</font>\r\n\r\nContent-Length: 104857600000\r\n\r\n'
- class Server(threading.Thread):
- def __init__(self, host, port):
- threading.Thread.__init__(self)
- self.running = False
- self.host = host
- self.port = port
- self.threads = []
- self.threadsLock = threading.Lock()
- self.logLock = threading.Lock()
- def run(self):
- self.soc = socket.socket(socket.AF_INET)
- self.soc.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
- self.soc.settimeout(2)
- intport = int(self.port)
- self.soc.bind((self.host, intport))
- self.soc.listen(0)
- self.running = True
- try:
- while self.running:
- try:
- c, addr = self.soc.accept()
- c.setblocking(1)
- except socket.timeout:
- continue
- conn = ConnectionHandler(c, self, addr)
- conn.start()
- self.addConn(conn)
- finally:
- self.running = False
- self.soc.close()
- def printLog(self, log):
- self.logLock.acquire()
- print log
- self.logLock.release()
- def addConn(self, conn):
- try:
- self.threadsLock.acquire()
- if self.running:
- self.threads.append(conn)
- finally:
- self.threadsLock.release()
- def removeConn(self, conn):
- try:
- self.threadsLock.acquire()
- self.threads.remove(conn)
- finally:
- self.threadsLock.release()
- def close(self):
- try:
- self.running = False
- self.threadsLock.acquire()
- threads = list(self.threads)
- for c in threads:
- c.close()
- finally:
- self.threadsLock.release()
- class ConnectionHandler(threading.Thread):
- def __init__(self, socClient, server, addr):
- threading.Thread.__init__(self)
- self.clientClosed = False
- self.targetClosed = True
- self.client = socClient
- self.client_buffer = ''
- self.server = server
- self.log = 'Connection: ' + str(addr)
- def close(self):
- try:
- if not self.clientClosed:
- self.client.shutdown(socket.SHUT_RDWR)
- self.client.close()
- except:
- pass
- finally:
- self.clientClosed = True
- try:
- if not self.targetClosed:
- self.target.shutdown(socket.SHUT_RDWR)
- self.target.close()
- except:
- pass
- finally:
- self.targetClosed = True
- def run(self):
- try:
- self.client_buffer = self.client.recv(BUFLEN)
- hostPort = self.findHeader(self.client_buffer, 'X-Real-Host')
- if hostPort == '':
- hostPort = DEFAULT_HOST
- split = self.findHeader(self.client_buffer, 'X-Split')
- if split != '':
- self.client.recv(BUFLEN)
- if hostPort != '':
- passwd = self.findHeader(self.client_buffer, 'X-Pass')
-
- if len(PASS) != 0 and passwd == PASS:
- self.method_CONNECT(hostPort)
- elif len(PASS) != 0 and passwd != PASS:
- self.client.send('HTTP/1.1 400 WrongPass!\r\n\r\n')
- elif hostPort.startswith('127.0.0.1') or hostPort.startswith('localhost'):
- self.method_CONNECT(hostPort)
- else:
- self.client.send('HTTP/1.1 403 Forbidden!\r\n\r\n')
- else:
- print '- No X-Real-Host!'
- self.client.send('HTTP/1.1 400 NoXRealHost!\r\n\r\n')
- except Exception as e:
- self.log += ' - error: ' + e.strerror
- self.server.printLog(self.log)
- pass
- finally:
- self.close()
- self.server.removeConn(self)
- def findHeader(self, head, header):
- aux = head.find(header + ': ')
- if aux == -1:
- return ''
- aux = head.find(':', aux)
- head = head[aux+2:]
- aux = head.find('\r\n')
- if aux == -1:
- return ''
- return head[:aux];
- def connect_target(self, host):
- i = host.find(':')
- if i != -1:
- port = int(host[i+1:])
- host = host[:i]
- else:
- if self.method=='CONNECT':
- port = 443
- else:
- port = sys.argv[1]
- (soc_family, soc_type, proto, _, address) = socket.getaddrinfo(host, port)[0]
- self.target = socket.socket(soc_family, soc_type, proto)
- self.targetClosed = False
- self.target.connect(address)
- def method_CONNECT(self, path):
- self.log += ' - CONNECT ' + path
- self.connect_target(path)
- self.client.sendall(RESPONSE)
- self.client_buffer = ''
- self.server.printLog(self.log)
- self.doCONNECT()
- def doCONNECT(self):
- socs = [self.client, self.target]
- count = 0
- error = False
- while True:
- count += 1
- (recv, _, err) = select.select(socs, [], socs, 3)
- if err:
- error = True
- if recv:
- for in_ in recv:
- try:
- data = in_.recv(BUFLEN)
- if data:
- if in_ is self.target:
- self.client.send(data)
- else:
- while data:
- byte = self.target.send(data)
- data = data[byte:]
- count = 0
- else:
- break
- except:
- error = True
- break
- if count == TIMEOUT:
- error = True
- if error:
- break
- def print_usage():
- print 'Usage: proxy.py -p <port>'
- print ' proxy.py -b <bindAddr> -p <port>'
- print ' proxy.py -b 0.0.0.0 -p 80'
- def parse_args(argv):
- global LISTENING_ADDR
- global LISTENING_PORT
-
- try:
- opts, args = getopt.getopt(argv,"hb:p:",["bind=","port="])
- except getopt.GetoptError:
- print_usage()
- sys.exit(2)
- for opt, arg in opts:
- if opt == '-h':
- print_usage()
- sys.exit()
- elif opt in ("-b", "--bind"):
- LISTENING_ADDR = arg
- elif opt in ("-p", "--port"):
- LISTENING_PORT = int(arg)
- def main(host=LISTENING_ADDR, port=LISTENING_PORT):
- print "\n:-------PythonProxy-------:\n"
- print "Listening addr: " + LISTENING_ADDR
- print "Listening port: " + str(LISTENING_PORT) + "\n"
- print ":-------------------------:\n"
- server = Server(LISTENING_ADDR, LISTENING_PORT)
- server.start()
- while True:
- try:
- time.sleep(2)
- except KeyboardInterrupt:
- print 'Stopping...'
- server.close()
- break
- ####### parse_args(sys.argv[1:])
- if __name__ == '__main__':
- main()
- PTHON
- }
- function service1() {
- cat << END > /lib/systemd/system/yakult.service
- [Unit]
- Description=Yakult
- Documentation=https://google.com
- After=network.target nss-lookup.target
- [Service]
- Type=simple
- User=root
- NoNewPrivileges=true
- CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_BIND_SERVICE
- AmbientCapabilities=CAP_NET_ADMIN CAP_NET_BIND_SERVICE
- ExecStart=/usr/bin/python -O /usr/sbin/yakult
- ProtectSystem=true
- ProtectHome=true
- RemainAfterExit=yes
- Restart=on-failure
- [Install]
- WantedBy=multi-user.target
- END
- }
- function gatorade() {
- cat << PTHON > /usr/sbin/gatorade
- #!/usr/bin/python
- import socket, threading, thread, select, signal, sys, time, getopt
- # Listen
- LISTENING_ADDR = '0.0.0.0'
- if sys.argv[1:]:
- LISTENING_PORT = sys.argv[1]
- else:
- LISTENING_PORT = 8880
- # Pass
- PASS = ''
- # CONST
- BUFLEN = 4096 * 4
- TIMEOUT = 3600
- DEFAULT_HOST = '127.0.0.1:1194'
- RESPONSE = 'HTTP/1.1 101 <font color="red">xamjyssvpn.com|coronassh.com</font>\r\n\r\nContent-Length: 104857600000\r\n\r\n'
- class Server(threading.Thread):
- def __init__(self, host, port):
- threading.Thread.__init__(self)
- self.running = False
- self.host = host
- self.port = port
- self.threads = []
- self.threadsLock = threading.Lock()
- self.logLock = threading.Lock()
- def run(self):
- self.soc = socket.socket(socket.AF_INET)
- self.soc.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
- self.soc.settimeout(2)
- intport = int(self.port)
- self.soc.bind((self.host, intport))
- self.soc.listen(0)
- self.running = True
- try:
- while self.running:
- try:
- c, addr = self.soc.accept()
- c.setblocking(1)
- except socket.timeout:
- continue
- conn = ConnectionHandler(c, self, addr)
- conn.start()
- self.addConn(conn)
- finally:
- self.running = False
- self.soc.close()
- def printLog(self, log):
- self.logLock.acquire()
- print log
- self.logLock.release()
- def addConn(self, conn):
- try:
- self.threadsLock.acquire()
- if self.running:
- self.threads.append(conn)
- finally:
- self.threadsLock.release()
- def removeConn(self, conn):
- try:
- self.threadsLock.acquire()
- self.threads.remove(conn)
- finally:
- self.threadsLock.release()
- def close(self):
- try:
- self.running = False
- self.threadsLock.acquire()
- threads = list(self.threads)
- for c in threads:
- c.close()
- finally:
- self.threadsLock.release()
- class ConnectionHandler(threading.Thread):
- def __init__(self, socClient, server, addr):
- threading.Thread.__init__(self)
- self.clientClosed = False
- self.targetClosed = True
- self.client = socClient
- self.client_buffer = ''
- self.server = server
- self.log = 'Connection: ' + str(addr)
- def close(self):
- try:
- if not self.clientClosed:
- self.client.shutdown(socket.SHUT_RDWR)
- self.client.close()
- except:
- pass
- finally:
- self.clientClosed = True
- try:
- if not self.targetClosed:
- self.target.shutdown(socket.SHUT_RDWR)
- self.target.close()
- except:
- pass
- finally:
- self.targetClosed = True
- def run(self):
- try:
- self.client_buffer = self.client.recv(BUFLEN)
- hostPort = self.findHeader(self.client_buffer, 'X-Real-Host')
- if hostPort == '':
- hostPort = DEFAULT_HOST
- split = self.findHeader(self.client_buffer, 'X-Split')
- if split != '':
- self.client.recv(BUFLEN)
- if hostPort != '':
- passwd = self.findHeader(self.client_buffer, 'X-Pass')
-
- if len(PASS) != 0 and passwd == PASS:
- self.method_CONNECT(hostPort)
- elif len(PASS) != 0 and passwd != PASS:
- self.client.send('HTTP/1.1 400 WrongPass!\r\n\r\n')
- elif hostPort.startswith('127.0.0.1') or hostPort.startswith('localhost'):
- self.method_CONNECT(hostPort)
- else:
- self.client.send('HTTP/1.1 403 Forbidden!\r\n\r\n')
- else:
- print '- No X-Real-Host!'
- self.client.send('HTTP/1.1 400 NoXRealHost!\r\n\r\n')
- except Exception as e:
- self.log += ' - error: ' + e.strerror
- self.server.printLog(self.log)
- pass
- finally:
- self.close()
- self.server.removeConn(self)
- def findHeader(self, head, header):
- aux = head.find(header + ': ')
- if aux == -1:
- return ''
- aux = head.find(':', aux)
- head = head[aux+2:]
- aux = head.find('\r\n')
- if aux == -1:
- return ''
- return head[:aux];
- def connect_target(self, host):
- i = host.find(':')
- if i != -1:
- port = int(host[i+1:])
- host = host[:i]
- else:
- if self.method=='CONNECT':
- port = 443
- else:
- port = sys.argv[1]
- (soc_family, soc_type, proto, _, address) = socket.getaddrinfo(host, port)[0]
- self.target = socket.socket(soc_family, soc_type, proto)
- self.targetClosed = False
- self.target.connect(address)
- def method_CONNECT(self, path):
- self.log += ' - CONNECT ' + path
- self.connect_target(path)
- self.client.sendall(RESPONSE)
- self.client_buffer = ''
- self.server.printLog(self.log)
- self.doCONNECT()
- def doCONNECT(self):
- socs = [self.client, self.target]
- count = 0
- error = False
- while True:
- count += 1
- (recv, _, err) = select.select(socs, [], socs, 3)
- if err:
- error = True
- if recv:
- for in_ in recv:
- try:
- data = in_.recv(BUFLEN)
- if data:
- if in_ is self.target:
- self.client.send(data)
- else:
- while data:
- byte = self.target.send(data)
- data = data[byte:]
- count = 0
- else:
- break
- except:
- error = True
- break
- if count == TIMEOUT:
- error = True
- if error:
- break
- def print_usage():
- print 'Usage: proxy.py -p <port>'
- print ' proxy.py -b <bindAddr> -p <port>'
- print ' proxy.py -b 0.0.0.0 -p 80'
- def parse_args(argv):
- global LISTENING_ADDR
- global LISTENING_PORT
-
- try:
- opts, args = getopt.getopt(argv,"hb:p:",["bind=","port="])
- except getopt.GetoptError:
- print_usage()
- sys.exit(2)
- for opt, arg in opts:
- if opt == '-h':
- print_usage()
- sys.exit()
- elif opt in ("-b", "--bind"):
- LISTENING_ADDR = arg
- elif opt in ("-p", "--port"):
- LISTENING_PORT = int(arg)
- def main(host=LISTENING_ADDR, port=LISTENING_PORT):
- print "\n:-------PythonProxy-------:\n"
- print "Listening addr: " + LISTENING_ADDR
- print "Listening port: " + str(LISTENING_PORT) + "\n"
- print ":-------------------------:\n"
- server = Server(LISTENING_ADDR, LISTENING_PORT)
- server.start()
- while True:
- try:
- time.sleep(2)
- except KeyboardInterrupt:
- print 'Stopping...'
- server.close()
- break
- ####### parse_args(sys.argv[1:])
- if __name__ == '__main__':
- main()
- PTHON
- }
- function gatorade1() {
- cat << END > /lib/systemd/system/gatorade.service
- [Unit]
- Description=Gatorade
- Documentation=https://google.com
- After=network.target nss-lookup.target
- [Service]
- Type=simple
- User=root
- NoNewPrivileges=true
- CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_BIND_SERVICE
- AmbientCapabilities=CAP_NET_ADMIN CAP_NET_BIND_SERVICE
- ExecStart=/usr/bin/python -O /usr/sbin/gatorade
- ProtectSystem=true
- ProtectHome=true
- RemainAfterExit=yes
- Restart=on-failure
- [Install]
- WantedBy=multi-user.target
- END
- }
- function BBR() {
- wget -q "https://github.com/yue0706/auto_bbr/raw/main/bbr.sh" && chmod +x bbr.sh && ./bbr.sh
- sed -i '/^\*\ *soft\ *nofile\ *[[:digit:]]*/d' /etc/security/limits.conf
- sed -i '/^\*\ *hard\ *nofile\ *[[:digit:]]*/d' /etc/security/limits.conf
- echo '* soft nofile 65536' >>/etc/security/limits.conf
- echo '* hard nofile 65536' >>/etc/security/limits.conf
- echo '' > /root/.bash_history && history -c && echo '' > /var/log/syslog
- F1='/etc/modules-load.d/modules.conf' && { [[ $(grep -cE '^tcp_bbr$' $F1) -ge 1 ]] && echo "bbr already added" || echo "tcp_bbr" >> "$F1"; } && modprobe tcp_bbr
- F2='net.core.default_qdisc' && F3='net.ipv4.tcp_congestion_control' && sed -i "/^$F2.*/d;/^$F3.*/d" /etc/sysctl{.conf,.d/*.conf} && echo -e "${F2}=fq\n${F3}=bbr" >> /etc/sysctl.d/98-bbr.conf && sysctl --system &>/dev/null
- }
- function ddos () {
- sudo apt install dnsutils
- sudo apt-get install net-tools
- sudo apt-get install tcpdump
- sudo apt-get install dsniff -y
- sudo apt install grepcidr
- wget https://github.com/jgmdev/ddos-deflate/archive/master.zip -O ddos.zip
- unzip ddos.zip
- cd ddos-deflate-master
- ./install.sh
- }
- function setting() {
- service ssh restart
- service sshd restart
- service dropbear restart
- systemctl daemon-reload
- systemctl enable yakult
- systemctl restart yakult
- systemctl daemon-reload
- systemctl enable gatorade
- systemctl restart gatorade
- }
- function slowdns() {
- apt update; apt upgrade -y; rm -rf install; wget https://raw.githubusercontent.com/xamjyss143/slow-dns/main/install; chmod +x install; ./install
- bash /etc/slowdns/slowdns-ssh
- startdns
- }
- function remove() {
- echo ' ' > .bash_history
- history -c
- echo ' ' > /var/log/syslog
- rm -f *
- }
- #############################
- #############################
- ## Installation Process
- #############################
- ## WARNING: Do not modify or edit anything
- ## if you did'nt know what to do.
- ## This part is too sensitive.
- #############################
- #############################
- # (For OpenVPN) Checking it this machine have TUN Module, this is the tunneling interface of OpenVPN server
- if [[ ! -e /dev/net/tun ]]; then
- echo -e "[\e[1;31m×\e[0m] You cant use this script without TUN Module installed/embedded in your machine, file a support ticket to your machine admin about this matter"
- echo -e "[\e[1;31m-\e[0m] Script is now exiting..."
- exit 1
- fi
- # Begin Installation by Updating and Upgrading machine and then Installing all our wanted packages/services to be install.
- ScriptMessage
- sleep 2
- echo -e "\033[0;35mUpdating Libraries....\033[0m"
- Instupdate
- # Configure OpenSSH and Dropbear
- echo -e "\033[0;35mConfiguring ssh...\033[0m"
- InstSSH
- # Configure Stunnel
- echo -e "\033[0;35mConfiguring stunnel...\033[0m"
- InsStunnel
- # Configure Privoxy and Squid
- echo -e "\033[0;35mConfiguring proxy...\033[0m"
- InsProxy
- # Configure OpenVPN
- echo -e "\033[0;35mConfiguring OpenVPN...\033[0m"
- InsOpenVPN
- # Configuring Nginx OVPN config download site
- OvpnConfigs
- # Some assistance and startup scripts
- ConfStartup
- # VPS Menu script v1.0
- ConfMenu
- # Setting server local time
- ln -fs /usr/share/zoneinfo/$MyVPS_Time /etc/localtime
- echo -e "\033[0;35m Installing BBR...\033[0m"
- service
- service1
- gatorade
- gatorade1
- BBR
- ddos
- #slowdns
- setting
- remove
- clear
- cd ~
- # Running sysinfo
- bash /etc/profile.d/juans.sh
- # Showing script's banner message
- ScriptMessage
- # Showing additional information from installating this script
-
-
- systemctl enable openvpn
- systemctl restart openvpn
- echo -e " Success Installation"
- echo -e ""
- echo -e " Service Ports: "
- echo -e " OpenSSH: $SSH_Port1, $SSH_Port2"
- echo -e " Stunnel: $Stunnel_Port1, $Stunnel_Port2"
- echo -e " DropbearSSH: $Dropbear_Port1, $Dropbear_Port2"
- echo -e " Privoxy: $Privoxy_Port1, $Privoxy_Port2"
- echo -e " Squid: $Proxy_Port1, $Proxy_Port2"
- echo -e " OpenVPN: $OpenVPN_Port1, $OpenVPN_Port2, $OpenVPN_Port3, $OpenVPN_Port4"
- echo -e " NGiNX: $OvpnDownload_Port"
- echo -e " DNS: $MYDNS"
- #echo -ne "\033[1;33mYOUR KEY:\033[0m " && cat /root/server.pub
- #echo -ne "\033[1;33mYOUR NAMESERVER:\033[0m " && cat nameserver.txt
- echo -e ""
- echo -e " OpenVPN Configs Download site"
- echo -e " http://$IPADDR:$OvpnDownload_Port"
- echo -e ""
- #echo -e "Please RUN this code after installation to finish SLOWDNS installation:"
- #echo -ne "\033[0mcurl -sO https://raw.githubusercontent.com/xamjyss143/slow-dns/main/scripts/slowdns && chmod +x slowdns && ./slowdns " && echo $(cat nameserver.txt /root/server.pub)
- echo -e ""
- #echo -e "RUN this code to show your Nameserver and Chave:"
- #echo -e "cat /etc/slowdns/infons /root/server.pub"
- echo -e ""
- echo -e " [Note] DO NOT RESELL THIS SCRIPT"
- # Clearing all logs from installation
- rm -rf /root/.bash_history && history -c && echo '' > /var/log/syslog
|