Advertisement
Guest User

aa

a guest
Mar 21st, 2017
228
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 10.97 KB | None | 0 0
  1. #!/bin/bash
  2. VERSION="127"
  3. DIALOG=${DIALOG=dialog}
  4. tempfile=`tempfile 2>/dev/null` || tempfile=/tmp/test$$
  5. trap "rm -f $tempfile" 0 1 2 5 15
  6. trap ctrl_c INT
  7.  
  8. ctrl_c() {
  9.     exit -9
  10. }
  11.  
  12. #### VERSION CHECK - UPDATE #####
  13. newVersion=$(curl -s https://voonyx.mrhack.cz/hyperscript/check.php)
  14. if [ $newVersion != $VERSION ];then
  15. echo -e "K dispozici je aktualizace scriptu. Tvoje verze: $VERSION. Nejnovější verze: $newVersion. Chceš script aktualizovat: [yes/no]\nBud aktualizuj zde nebo si to dej clone z gitu."
  16. read update
  17. case $update in
  18.         [Yy][eE][sS]|[yY])
  19.         mv script.sh script.sh_old_$VERSION
  20.                 wget https://voonyx.mrhack.cz/hyperscript/versions/$newVersion -O script.sh
  21.         sudo chmod u+x script.sh
  22.         exit
  23.                 ;;
  24.         *)
  25.                 echo "Doporučuji script aktualizovat. Zastaralá verze může obsahovat chyby (jakože obsahuje) !"
  26.                 ;;
  27. esac
  28. fi
  29.  
  30.  
  31. $DIALOG --clear --title "L1Tools super turbo hyper skrYpt" \
  32.         --menu "Zdar taško, vyber si co chceš dělat :" 20 70 15 \
  33.     "--------"  "---------------------FUNGUJE-------------------------" \
  34.     "csr"   "Vygeneruje CSR" \
  35.     "dh"    "Vygeneruje DH parametr" \
  36.     "db"    "Připraví příkaz pro L2, a vypíše údaje pro zákazníka" \
  37.     "complete"  "Nastaví doplňování hostnames do vsh scriptu" \
  38.     "vsh"       "Nastaví VSH script pro pripojovani na servery" \
  39.     "space" "Vypíše df -h z červených serverů z BigSisteru" \
  40.     "hpkp"      "Vygenerovat HPKP" \
  41.     "imap"      "Imapsync " \
  42.     "--------"  "--------------------NEFUNGUJE------------------------" 2> $tempfile
  43.  
  44. retval=$?
  45.  
  46. choice=`cat $tempfile`
  47.  
  48. genCsr () {
  49.     dialog --title "CSR Generator GUI 1.0" --clear --yesno "Chceš přesunout klič a CSR na server ?" 10 30
  50.     if [ $? = "0" ]; then
  51.     dialog --title "CSR Generator GUI 1.0" --clear --inputbox "Server without .vshosting.cz:" 10 30 "" 2> $tempfile
  52.         server=$(cat $tempfile)
  53.     fi
  54.     dialog --title "CSR Generator GUI 1.0" --clear --inputbox "Common Name (eg, domena.cz):" 10 30 "" 2> $tempfile
  55.         commonName=$(cat $tempfile)
  56.     dialog --title "CSR Generator GUI 1.0" --clear --inputbox "Country name:" 10 30 "CZ" 2> $tempfile
  57.     country=$(cat $tempfile)
  58.     dialog --title "CSR Generator GUI 1.0" --clear --inputbox "State or Province Name (full name):" 10 30 "Czech Republic" 2> $tempfile
  59.     state=$(cat $tempfile)
  60.         dialog --title "CSR Generator GUI 1.0" --clear --inputbox "Locality Name (eg, city):" 10 30 "Praha" 2> $tempfile
  61.         locality=$(cat $tempfile)
  62.         dialog --title "CSR Generator GUI 1.0" --clear --inputbox "Organization Name (eg, company):" 10 30 "VSHosting s.r.o" 2> $tempfile
  63.         organization=$(cat $tempfile)
  64.         dialog --title "CSR Generator GUI 1.0" --clear --inputbox "Organizational Unit Name (eg, section):" 10 30 "Technicka podpora" 2> $tempfile
  65.         organizationalUnit=$(cat $tempfile)
  66.     dialog --title "CSR Generator GUI 1.0" --clear --inputbox "Email Address:" 10 30 "tech@vshosting.cz" 2> $tempfile
  67.         email=$(cat $tempfile)
  68.         dialog --title "CSR Generator GUI 1.0" --clear --inputbox "Password:" 10 30 "" 2> $tempfile
  69.         password=$(cat $tempfile)
  70.    
  71.     test -d certs
  72.     if [ "$?" != "0" ];then
  73.     mkdir certs
  74.     fi
  75.         openssl req -out certs/"$commonName".csr -new -newkey rsa:2048 -nodes -keyout certs/"$commonName".key \
  76.     -subj "/C=$country/ST=$state/L=$locality/O=$organization/OU=$organizationalUnit/CN=$commonName/emailAddress=$email" > /dev/null
  77.  
  78.     echo "------------------------------------------"
  79.     echo "----- Vše potřebné Kamile do ticketu -----"
  80.     echo "------------------------------------------"
  81.     echo
  82.     echo -e "Ahoj,\nposílám CSR pro $commonName\n"
  83.     cat certs/"$commonName".csr
  84.     echo
  85.     echo -e "$server.vshosting.cz:/home/vshfirstlevel/SSL/$commonName.key\n"
  86.     if [ ! -z $server ]; then
  87.             ssh vshfirstlevel@$server.vshosting.cz 'if test -d SSL;then true;else mkdir SSL; fi'
  88.                         scp "certs/$commonName".csr "certs/$commonName".key vshfirstlevel@$server.vshosting.cz:/home/vshfirstlevel/SSL
  89.     fi
  90. }
  91.  
  92. genHkpk () {
  93.     dialog --title "HKPK - GUI Generator" --backtitle "HKPK - GUI Generator" --clear --msgbox "\n\nVloz původni certifikat" 10 48
  94.     vim cert.crt       
  95.     hash1=`openssl x509 -noout -in cert.crt -pubkey | openssl pkey -pubin -outform der | openssl dgst -sha256 -binary | base64`
  96.     openssl genrsa -out backup.key 4096 2> /dev/null
  97.     openssl req -new -key backup.key -sha256 -out backup.csr
  98.     hash2=`openssl req -in backup.csr -pubkey -noout | openssl rsa -pubin -outform der | openssl dgst -sha256 -binary | openssl enc -base64`
  99.     echo -e "\nNGINX:\nadd_header Public-Key-Pins 'pin-sha256=\"$hash1\"; pin-sha256=\"$hash2\"; max-age=2592000; includeSubDomains';"
  100.     #echo -e "APACHE2:\nHeader set Public-Key-Pins \"pin-sha256=\"$hash1\"; pin-sha256=\"$hash2\"; max-age=2592000; includeSubDomains"
  101.     echo -e "APACHE2:\nHeader always set Public-Key-Pins \"pin-sha256=\"$hash1\"; pin-sha256=\"$hash2\"; max-age=5184000; includeSubDomains\""
  102. }
  103.  
  104. genDh () {
  105.         dialog --title "DH Generator GUI 0.1dev" --clear --inputbox "DH param size:" 10 30 "2048" 2> $tempfile
  106.         dhsize=$(cat $tempfile)
  107.     openssl dhparam -out dhparams.pem $dhsize >> /dev/null
  108.         echo "-------------------------------"
  109.         echo "-----Below is your DHParam-----"
  110.         echo "-------------------------------"
  111.         echo
  112.         cat dhparams.pem
  113. }
  114.  
  115. genDb () {
  116.     dialog --title "DB Generator GUI 1.0" --clear --inputbox "DB name:" 10 30 "" 2> $tempfile
  117.         databaze=$(cat $tempfile)
  118.     dialog --title "DB Generator GUI 1.0" --clear --inputbox "DB user (zkracuje se na 15 znaků) :" 10 30 "" 2> $tempfile
  119.         uzivatel=$(cat $tempfile)
  120.    
  121.     uzivatel=`echo $uzivatel | cut -c1-15`
  122.     heslo=`pwgen 15`
  123.     echo -e "\n=============== TOTO ZASLAT L2 ADMINOVI ==============="
  124.     echo "CREATE DATABASE $databaze;"
  125.     echo "GRANT ALL PRIVILEGES ON \`$databaze\`.* TO '$uzivatel'@'localhost' IDENTIFIED BY '$heslo';"
  126.     echo "GRANT ALL PRIVILEGES ON \`$databaze\`.* TO '$uzivatel'@'%' IDENTIFIED BY '$heslo';"
  127.     echo "FLUSH PRIVILEGES;"
  128.     echo "=============== TOTO ZASLAT ZAKAZNIKOVI ==============="
  129.     echo "Nazev databaze: $databaze"
  130.     echo "Uzivatel databate: $uzivatel"
  131.     echo "Heslo databaze: $heslo"
  132. }
  133.  
  134. doComplete () {
  135.     echo "Stahuji script na doplnovani"
  136.     sudo wget https://voonyx.mrhack.cz/hyperscript/vsh_complete -O /etc/bash_completion.d/vsh
  137.     echo -e "\nStahuji seznam serveru"
  138.     sudo wget https://voonyx.mrhack.cz/hyperscript/vsh_list -O ~/.ssh/vsh_list
  139.     echo -e "\nRestartuj terminál"
  140. }
  141.  
  142. doVSH () {
  143.     echo "Stahuji vsh script a zapisuji ho do /usr/bin"
  144.     sudo wget https://voonyx.mrhack.cz/hyperscript/vsh -O /usr/bin/vsh
  145.     echo "Nastuvuji právo 777 na VSH script"
  146.     sudo chmod 777 /usr/bin/vsh
  147. }
  148.  
  149. outOfSpace () {
  150. expect=`which expect`
  151. pin=123456
  152.  
  153. for f in `curl -s https://monitor.vshosting.cz/top.html|grep 'disk.html"><IMG ALIGN="middle" SRC="skins/static_lamps/red.gif"'|awk -F'.disk.html' '{print $1}'|awk -F'>' '{print $2}'|awk -F'<' '{print $1}'`;
  154.         do
  155.  
  156.     if [[ $f != *shoptet* ]]; then
  157.     $expect -c '
  158.     set timeout 22
  159.     spawn ssh -o PasswordAuthentication=no -o StrictHostKeyChecking=no vshfirstlevel@'$f'.vshosting.cz df -h
  160.     expect "Enter PIN"
  161.        send "'$pin'\r"
  162.        interact'
  163.     #ssh -o PasswordAuthentication=no -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no vshfirstlevel@$f.vshosting.cz df -h
  164.         echo -e "\e[91m$f\e[39m\n\n"
  165.     else
  166.     echo -e "\e[91m$f\e[39m\n!! STOPTET !!\n"
  167.     fi
  168.  done
  169. }
  170.  
  171. doImap () {
  172.     # 0 user;pass
  173.     # 2 domain;user;pass
  174.     # 4 user;pass;user2;pass2
  175.     # 6 domain;user;pass;user2;pass2
  176.     # liché + SSL
  177.     err_count=0
  178.     variant=0
  179.     dialog --title "IMAPSYNC - GUI" --clear --inputbox "Původní server:" 10 30 "" 2> $tempfile
  180.         sourceServer=$(cat $tempfile)
  181.     dialog --title "IMAPSYNC - GUI" --clear --inputbox "Nový server:" 10 30 "" 2> $tempfile
  182.     newServer=$(cat $tempfile)
  183.     dialog --title "IMAPSYNC - GUI" --clear --inputbox "Doména (nech prázdný pokud je jich víc) :" 10 30 "" 2> $tempfile
  184.     domain=$(cat $tempfile)
  185.     if [ -z $domain ]; then let variant+=2; fi
  186.     dialog --title "IMAPSYNC - GUI" --clear --yesno "\n\nJe uživatel a heslo na starém i novém serveru stejné ?" 10 30
  187.     if [ $? = "1" ] ; then variant=`expr $variant + 4` ;fi
  188.     dialog --title "IMAPSYNC - GUI" --clear --yesno "\n\nPoužít SSL/TLS ? :" 10 30
  189.         if [ $? = "0" ] ; then variant=`expr $variant + 1` ;fi
  190.  
  191.     if [ $((variant%2)) -eq 0 ]; then
  192.         echo sudy
  193.         ssl1=""
  194.         ssl2="";
  195.     else
  196.         ssl1="--tls1"
  197.         ssl2="--tls2"
  198.         variant=`expr $variant - 1`
  199.         echo $variant;
  200.     fi
  201.  
  202.     syntaxe="uzivatel;heslo\nuzivatel2;heslo\nuzivatel3;heslo\n\n..."
  203.  
  204.     case $variant in
  205.     "2") syntaxe="domena;uzivatel;heslo\nseznam.cz;petr;Polivka123\ngmail.com;david;p0kl1ce\n\n..";;
  206.     "4") syntaxe="staryUzivatel;stareHeslo;novyUzivatel;noveHeslo\nstaryUzivatel2;stareHeslo2;novyUzivatel2;noveHeslo2\n\n...";;   
  207.     "6") syntaxe="domena;staryUzivatel;stareHeslo;novyUzivatel;noveHeslo\ndomena;staryUzivatel2;stareHeslo2;novyUzivatel2;noveHeslo2\n\n...";;
  208.     esac
  209.    
  210.     dialog --title "IMAPSYNC - GUI" --backtitle "IMAPSYNC - GUI" --clear --msgbox "\n\nVloz do souboru udaje v nasledující syntaxi:\n\n$syntaxe" 14 70
  211.     vim imapsync-accounts.txt
  212.     clear
  213.     { while IFS=';' read -r -a array; do
  214.    
  215.     case $variant in
  216.     "0") u1=${array[0]} p1=${array[1]} u2=$u1 p2=$p1 ;;
  217.     "2") domain=${array[0]} u1=${array[1]} p1=${array[2]} u2=$u1 p2=$p1;;
  218.     "4") u1=${array[0]} p1=${array[1]} u2=${array[2]} p2=${array[3]} ;;
  219.     "6") domain=${array[0]} u1=${array[1]} p1=${array[2]} u2=${array[3]} p2=${array[4]} ;;
  220.     esac
  221.    
  222.     u1="$u1@$domain"
  223.     u2="$u2@$domain"   
  224.  
  225.     echo "Syncing user: $u1 to $u2"
  226.     imapsync --host1 $sourceServer --user1 "$u1" --password1 "$p1" $ssl1 --host2 $newServer --user2 "$u2" --password2 "$p2" $ssl2 --nofoldersizes --skipsize &> /dev/null
  227.     echo -e "Checking for errors in log file...\n...."
  228.     dobre="`cat LOG_imapsync/$(ls LOG_imapsync/ -Art | tail -n 1)|grep "Detected 0 errors"`"
  229.         if [ -z "$dobre" ] ; then
  230.         echo -e "\e[7mERROR !\e[27m"
  231.             let err_count+=1
  232.             err_users+="$u1 to $u2\n";
  233.         else
  234.             echo "User $u1 to $u2  done";
  235.         fi
  236.     echo "* * * *"
  237.  
  238.     done; } < imapsync-accounts.txt
  239.  
  240.         if [ $err_count = "0" ] ; then err_users="All users has been transferred succesfull" ;fi
  241.     echo "Done with $err_count errors."
  242.         echo -e "Unfinished users:\n$err_users\n"  
  243. }
  244.  
  245. case $choice in
  246.     "csr")
  247.     clear;
  248.     genCsr;;   
  249.     "hpkp")
  250.     clear
  251.     genHkpk;;
  252.     "dh")
  253.     clear
  254.     genDh;;
  255.     "db")
  256.     clear
  257.     genDb;;
  258.     "complete")
  259.     clear
  260.     doComplete;;
  261.     "vsh")
  262.     clear
  263.     doVSH;;
  264.     "space")
  265.     clear
  266.     outOfSpace;;
  267.     "imap")
  268.     clear
  269.     doImap;;
  270. esac
  271.  
  272.  
  273. case $retval in
  274.   0)
  275.     echo -e "\n------ Pokud jsi našel nějakou chybu, tak to máš blbý. Formulář na hlášen chyb ještě nemám.\n------ Takže mi to maximálně můžeš říct když zrovna budu v práci nebo když to bude fakt díra tak na pracovní mail.\n------ A jestli nevíš jak se jmenuju. Tak to máš dvakrát blbý. :)"
  276.     ;;
  277.   1)
  278.     clear;;
  279.   255)
  280.     clear;;
  281. esac
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement