#!/bin/bash
#Progammer : Kurniawan. trainingxcode@gmail.com. xcode.or.id.
#Program ini dapat digunakan untuk personal ataupun komersial.
#X-code Media - xcode.or.id / xcodetraining.com 
again='y'
while [[ $again == 'Y' ]] || [[ $again == 'y' ]];
do
clear
echo "====================================================================";
echo " X-code Pandawa Router for Ubuntu 16.04 Server                      ";
echo " Progammer : Kurniawan. xcode.or.id                                 ";
echo " Version 1.9 - 05/01/2020                                           ";
echo "=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-";
echo " Router & Server pendukung router                                   ";
echo " [1]  Install X-code Pandawa (Untuk ganti nama ke eth0 dan eth1)    ";
echo " [2]  Setting IP Address untuk eth0 dan eth1                        ";
echo " [3]  Install NAT, DHCP Server & Bandwidth monitoring               ";
echo " [4]  Install HTB untuk bandwidth managemen                         ";
echo " [5]  Install Squid untuk log dan cache pada client                 ";
echo " [6]  Setting DHCP Server                                           ";
echo " [7]  Jalankan monitoring Bandwidth                                 ";
echo " [8]  Port Forwarding                                               ";
echo " [9]  Pasang Squid + Log (transparent)                              ";
echo " [10] Pasang Squid + Log + Cache (transparent)                      ";
echo " [11] Install VPN Server PPTP                                       ";
echo " [12] Setting ip client VPN Server                                  ";
echo " [13] Setting Password VPN Server                                   ";
echo " [14] Setting ms-dns pada VPN Server                                ";
echo " =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=";
echo " Log dan lainnya                                                    ";
echo " [15] Lihat user yang mendapatkan akses dari DHCP Server            ";
echo " [16] Lihat log website yang dibuka client                          ";
echo " [17] Lihat ukuran cache squid                                      ";
echo " [18] Edit squid.conf                                               ";
echo " [19] Reset rc.local hanya untuk mengaktifkan NAT                   ";
echo " [20] Edit rc.local                                                 ";
echo " [21] Reboot                                                        ";
echo " [22] Exit                                                          ";
echo "====================================================================";
read -p " Masukkan Nomor Pilihan Anda [1 - 22] : " choice;
echo "";
case $choice in
1)  if [ -z "$(sudo ls -A /etc/default/grub)" ]; then
    echo "Tidak terdeteksi grub, anda yakin pakai Ubuntu 16.04 ?"
    else
    sudo cp support/grub /etc/default/grub
    sudo grub-mkconfig -o /boot/grub/grub.cfg
    sudo cp support/resolved.conf /etc/systemd/
    sudo systemctl restart systemd-resolved
    sudo cp support/interfaces /etc/network/
    sudo cp support/rc.local /etc/
    sudo apt-get install arp-scan
    sudo nano /etc/network/interfaces
    read -p "Tekan enter untuk restart"
    reboot
    fi
    ;;
2)  if [ -z "$(ls -l /etc/network/interfaces)" ]; then
    echo "Tidak terdeteksi ada /etc/network/interfaces"
    else
    sudo nano /etc/network/interfaces
    read -p "Apakah anda mau restart koneksi eth0 & eth1 sekarang? y/n :" -n 1 -r
    echo 
        if [[ ! $REPLY =~ ^[Nn]$ ]]
        then
        ip addr flush eth0 && sudo systemctl restart networking.service
        ip addr flush eth1 && sudo systemctl restart networking.service
        sudo ifconfig
        fi
    fi
    ;;
3)  read -p "Apakah anda mau yakin mau install NAT, DHCP Server, dan iptraf ? y/n :" -n 1 -r
    echo  ""
    if [[ ! $REPLY =~ ^[Nn]$ ]]
    then
    sudo sysctl -w net.ipv4.ip_forward=1
    sudo /sbin/iptables -P FORWARD ACCEPT
    sudo /sbin/iptables --table nat -A POSTROUTING -o eth0 -j MASQUERADE
    sudo cp support/rc.local /etc/
    echo "NAT sudah diinstall"
    sudo apt-get install isc-dhcp-server
    sudo mv /etc/dhcp/dhcp.conf /tmp
    sudo cp support/dhcpd.conf /etc/dhcp
    sudo nano /etc/dhcp/dhcpd.conf
    sudo service isc-dhcp-server restart
    echo "DHCP Server sudah diinstall"
    sudo apt-get install iptraf
    echo "iptraff sudah diinstall"
    fi
    ;;

4)  read -p "Apakah anda yakin install HTB untuk bandwidth managemen  ? y/n :" -n 1 -r
    echo  ""
    if [[ ! $REPLY =~ ^[Nn]$ ]]
    then
    if [ -z "$(ls -l /etc/init.d/rc.htb)" ]; then
    sudo cp support/HTB-tools-0.3.0a-i486-1.tgz /usr/local/src
    sudo tar -zxvf /usr/local/src/HTB-tools-0.3.0a-i486-1.tgz -C /usr/local/src/ 
    sudo mv /usr/local/src/sbin/htb /sbin
    sudo mv /usr/local/src/sbin/q_parser /sbin
    sudo mv /usr/local/src/sbin/q_show /sbin
    sudo mv /usr/local/src/sbin/htbgen /sbin
    sudo mv /usr/local/src/sbin/q_checkcfg /sbin
    sudo mv /usr/local/src/etc/htb/ /etc
    sudo mv /etc/htb/eth0-qos.cfg.new /etc/htb/eth0-qos.cfg
    sudo mv /etc/htb/eth1-qos.cfg.new /etc/htb/eth1-qos.cfg
    sudo mv /usr/local/src/etc/rc.d/rc.htb.new /etc/init.d/rc.htb
    sudo chmod 755 /etc/init.d/rc.htb
    sudo nano /etc/htb/eth1-qos.cfg
    sudo /etc/init.d/rc.htb start_eth1
    sudo sed -i "/exit 0/i\/etc/init.d/rc.htb start_eth1" /etc/rc.local
    echo "hbt sudah diinstall"
    else
    echo "hbt sudah ada, tidak perlu diinstall lagi"
    fi
    fi
    ;;

5)  read -p "Apakah anda yakin install Squid (Default : access_log enabled, cache : disabled) ? y/n :" -n 1 -r
    echo  ""
    if [[ ! $REPLY =~ ^[Nn]$ ]]
    then
    if [ -z "$(ls -l /etc/squid/squid.conf)" ]; then
    sudo apt-get install squid3 
    iplan2="$(ifconfig | grep -A 1 'eth1' | tail -1 | cut -d ':' -f 2 | cut -d ' ' -f 1)"
    sudo rm /etc/squid/squid.conf
    sudo cp support/squid1/squid.conf /etc/squid/
    sudo iptables -t nat -A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j DNAT --to-destination $iplan2:3127
    sudo sed -i "/exit 0/i\sudo iptables -t nat -A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j DNAT --to-destination "$iplan2":3127" /etc/rc.local
    read -p "Log akan aktif jika linux sudah dilakukan restart"
    echo "Squid sudah diinstall"
    else
    echo "Squid sudah ada, tidak perlu diinstall lagi"
    fi
    fi
    ;;

6)  if [ -z "$(ls -A /etc/dhcp/dhcpd.conf)" ]; then
    echo "Tidak terdeteksi DHCP Server"
    else
    echo "Setting DHCP Server"
    sudo nano /etc/dhcp/dhcpd.conf
    sudo service isc-dhcp-server restart
    fi
    ;;   

7) sudo iptraf
    ;;


8) echo "Isi file rc.local :"
    sudo cat /etc/rc.local
    ipwan="$(ifconfig | grep -A 1 'eth0' | tail -1 | cut -d ':' -f 2 | cut -d ' ' -f 1)"
    echo "Daftar ip LAN yang dapat dituju :"
    sudo arp-scan --interface=eth1 --localnet
    echo -n "Masukkan ip LAN pada server yang dituju : "
    read iplan
    echo -n "Masukkan nomor port yang akan diforward : "
    read portip
    sudo sysctl -w net.ipv4.ip_forward=1
    sudo iptables -t nat -A PREROUTING -j DNAT -d $ipwan -p tcp --dport $portip --to $iplan
    sudo sed -i "/exit 0/i\sudo iptables -t nat -A PREROUTING -j DNAT -d "$ipwan" -p tcp --dport "$portip" --to "$iplan"" /etc/rc.local
   ;;

9) if [ -z "$(ls -A /etc/squid/squid.conf)" ]; then
    echo "Squid tidak terdeteksi"
    else
    sudo rm /etc/squid/squid.conf
    sudo cp support/squid1/squid.conf /etc/squid/
    echo "Access_log : Enabled, Cache : disabled"
    read -p "Log akan aktif jika linux sudah dilakukan restart"
    fi
    ;;

10) if [ -z "$(ls -l /etc/squid/squid.conf)" ]; then
    echo "Squid tidak terdeteksi"
    else
    sudo rm /etc/squid/squid.conf
    sudo cp support/squid2/squid.conf /etc/squid/
    echo "Access_log : Enabled, Cache : enabled"
    read -p "Log akan aktif jika linux sudah dilakukan restart"
    fi
    ;;

11) read -p "Apakah anda yakin install VPN Server PPTP  ? y/n :" -n 1 -r
    echo  ""
    if [[ ! $REPLY =~ ^[Nn]$ ]]
    then
    if [ -z "$(ls -l /etc/pptpd.conf)" ]; then
    echo "Install PPTP Server" 
    sudo apt-get install pptpd
    sudo cp support/etc/pptpd.conf /etc
    sudo cp support/chap-secrets /etc/ppp
    sudo cp support/ppptpd-options /etc/ppp
    sudo nano /etc/pptpd.conf
    sudo nano /etc/ppp/chap-secrets
    sudo nano /etc/ppp/pptpd-options
    sudo service pptpd restart
    else
    echo "Sudah ada PPTP Server"
    fi
    fi
    ;;

12) if [ -z "$(ls -l /etc/pptpd.conf)" ]; then
    echo "Tidak terdeteksi file pptpd.conf pada VPN Server"
    else
    echo "Edit pptpd.conf" 
    sudo nano /etc/pptpd.conf
    sudo service pptpd restart
    fi
    ;;

13) if [ -z "$(ls -l /etc/ppp/chap-secrets)" ]; then
    echo "Tidak terdeteksi file chap-secrets pada VPN Server"
    else
    echo "Edit file chap-secrets" 
    sudo nano /etc/ppp/chap-secrets
    sudo service pptpd restart
    fi
    ;;

14) if [ -z "$(ls -l /etc/pptpd.conf)" ]; then
    echo "Tidak terdeteksi file pptpd-options pada VPN Server"
    else
    echo "Edit file pptpd-options" 
    sudo nano /etc/ppp/pptpd-options
    sudo service pptpd restart
    fi
    ;;

15) if [ -z "$(ls -l /var/lib/dhcp/dhcpd.leases)" ]; then
    echo "Tidak terdeteksi DHCP Server"
    else
    sudo perl support/dhcplist.pl
    fi 
    ;;
 
16) if [ -z "$(ls -l /var/log/squid/access.log)" ]; then
    echo "Tidak terdeteksi log access pada squid"
    else
    sudo nano /var/log/squid/access.log
    fi
    ;;

17) du -s /var/spool/squid
    read -p "Tekan enter untuk melanjutkan"
    ;;

18) if [ -z "$(ls -l /etc/squid/squid.conf)" ]; then
    echo "Tidak terdeteksi squid"
    else
    sudo nano /etc/squid/squid.conf
    fi
    ;;

19) if [ -z "$(sudo ls -A /etc/rc.local)" ]; then
    echo "Tidak terdeteksi ada file rc.local di /etc/"
    else
    echo "File rc.local di folder /etc/ disisipkan NAT dan HBT"
    sudo cp support/rc.local /etc
    fi
    ;; 

20) sudo nano /etc/rc.local
    ;;

21) read -p "Apakah anda yakin akan restart? y/n :" -n 1 -r
    echo 
    if [[ ! $REPLY =~ ^[Nn]$ ]]
    then
    reboot
    fi
    ;;

22) exit
    ;;
*)    echo "Maaf, menu tidak ada"
esac
echo ""
echo "X-code Pandawa"
echo "Oleh Kurniawan - trainingxcode@gmail.com. xcode.or.id"
echo ""
echo -n "Kembali ke menu? [y/n]: ";
read again;
while [[ $again != 'Y' ]] && [[ $again != 'y' ]] && [[ $again != 'N' ]] && [[ $again != 'n' ]];
do
echo "Masukkan yang anda pilih tidak ada di menu";
echo -n "Kembali ke menu? [y/n]: ";
read again;
done
done
