mSurge.sh 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. #!/bin/bash
  2. trap 'echo -en "\ec"; stty sane; exit' SIGINT
  3. aa=0
  4. A(){ for b in $(seq 0 15);do E${b};done; }
  5. B()
  6. {
  7. local c
  8. IFS= read -s -n1 c 2>/dev/null >&2
  9. if [[ $c = $(echo -en "\e") ]]; then
  10. read -s -n1 c 2>/dev/null >&2
  11. if [[ $c = \[ ]]; then
  12. read -s -n1 c 2>/dev/null >&2
  13. case $c in
  14. A) echo d ;;
  15. B) echo e ;;
  16. C) echo f ;;
  17. D) echo g ;;
  18. esac
  19. fi
  20. elif [[ "$c" == "$(echo -en \\x0A)" ]]; then
  21. echo enter
  22. fi
  23. }
  24. C()
  25. {
  26. if [[ $i == d ]];then ((aa--));fi
  27. if [[ $i == e ]];then ((aa++));fi
  28. if [[ $aa -lt 0 ]];then aa=15;fi
  29. if [[ $aa -gt 15 ]];then aa=0;fi;
  30. }
  31. D()
  32. {
  33. j1=$((aa+1)); k1=$((aa-1))
  34. if [[ $k1 -lt 0 ]];then k1=15;fi
  35. if [[ $j1 -gt 15 ]];then j1=0;fi
  36. if [[ $aa -lt $aa ]];then echo -en "\e[0m";E$k1;else echo -en "\e[0m";E$j1;fi
  37. if [[ $j1 -eq 0 ]] || [ $k1 -eq 15 ];then
  38. echo -en "\e[0m" ; E$k1; E$j1;fi;echo -en "\e[0m";E$k1;E$j1;
  39. }
  40. TXa()
  41. {
  42. for (( a=2; a<=36; a++ ))
  43. do
  44. echo -e "\e[${a};1H\e[47;30m│\e[0m \e[47;30m│\e[0m"
  45. done
  46. echo -en "\e[1;1H\033[0m\033[47;30m┌────────────────────────────────────────────────────────────────────────────────┐\033[0m";
  47. echo -en "\e[3;3H\e[1m *** surge ***\e[0m";
  48. echo -en "\e[4;1H\e[47;30m├\e[0m────────────────────────────────────────────────────────────────────────────────\e[0m\e[47;30m┤\e[0m";
  49. echo -en "\e[5;3H\e[2m Single command web publishing\e[0m";
  50. echo -en "\e[6;1H\e[47;30m├\e[0m────────────────────────────────────────────────────────────────────────────────\e[0m\e[47;30m┤\e[0m";
  51. echo -en "\e[11;1H\e[47;30m├\e[0m────────────────────────────────────────────────────────────────────────────────\e[0m\e[47;30m┤\e[0m";
  52. echo -en "\e[12;3H\e[2m Опции:\e[0m \e[36m Options:\e[0m";
  53. echo -en "\e[17;1H\e[47;30m├\e[0m────────────────────────────────────────────────────────────────────────────────\e[0m\e[47;30m┤\e[0m";
  54. echo -en "\e[18;3H\e[2m Дополнительные команды:\e[0m \e[36m Additional commands:\e[0m";
  55. echo -en "\e[25;3H\e[2m Если вы сомневаетесь, запустите Surge из каталога вашего проекта.\e[0m";
  56. echo -en "\e[26;1H\e[47;30m├\e[0m────────────────────────────────────────────────────────────────────────────────\e[0m\e[47;30m┤\e[0m";
  57. echo -en "\e[27;3H\e[2m Руководство\e[0m \e[36m Guides:\e[0m";
  58. echo -en "\e[28;3H\e[2m Официальный сайт:\e[0m \e[36m https://surge.sh/\e[0m";
  59. echo -en "\e[29;3H\e[2m Начало работы\e[0m \e[36m surge.sh/help/getting-started-with-surge\e[0m";
  60. echo -en "\e[30;3H\e[2m Пользовательские домены\e[0m \e[36m surge.sh/help/adding-a-custom-domain\e[0m";
  61. echo -en "\e[31;3H\e[2m Дополнительная помощь\e[0m \e[36m surge.sh/help\e[0m";
  62. echo -en "\e[32;1H\e[47;30m├\e[0m────────────────────────────────────────────────────────────────────────────────\e[0m\e[47;30m┤\e[0m";
  63. echo -en "\e[34;1H\e[47;30m├\e[0m─ \xE2\x86\x91 Up ───── \xE2\x86\x93 Down ──── \xe2\x86\xb2 Select Enter ────────────────────────────────────────\e[0m\e[47;30m┤\e[0m";
  64. echo -en "\e[37;1H\033[0m\033[47;30m└────────────────────────────────────────────────────────────────────────────────┘\033[0m";
  65. }
  66. E0(){ echo -en "\e[7;3H Установка \e[32m INSTALL \e[0m";}
  67. E1(){ echo -en "\e[8;3H Применение \e[32m USAGE \e[0m";}
  68. E2(){ echo -en "\e[9;3H Регистрация и загрузка сайта ";}
  69. E3(){ echo -en "\e[10;3H Обновление сайта ";}
  70. E4(){ echo -en "\e[13;3H Добавляет пользователя в список соавторов \e[32m -a --add \e[0m";}
  71. E5(){ echo -en "\e[14;3H Удаляет пользователя из списка соавторов \e[32m -r --remove \e[0m";}
  72. E6(){ echo -en "\e[15;3H Show the version number \e[32m -V --version \e[0m";}
  73. E7(){ echo -en "\e[16;3H Show this help message \e[32m -h --help \e[0m";}
  74. E8(){ echo -en "\e[19;3H Показать, под каким именем вы вошли в систему \e[32m surge whoami \e[0m";}
  75. E9(){ echo -en "\e[20;3H Истечение срока действия локального токена \e[32m surge logout \e[0m";}
  76. E10(){ echo -en "\e[21;3H Выполняет только шаг аутентификации \e[32m surge login \e[0m";}
  77. E11(){ echo -en "\e[22;3H Список всех доменов, к которым у вас есть доступ \e[32m surge list \e[0m";}
  78. E12(){ echo -en "\e[23;3H Удалить опубликованный проект \e[32m surge teardown \e[0m";}
  79. E13(){ echo -en "\e[24;3H Установить тарифный план \e[32m surge plan \e[0m";}
  80. E14(){ echo -en "\e[33;3H \e[34m Git \e[0m";}
  81. E15(){ echo -en "\e[35;3H \e[34m Exit \e[0m";}
  82. INI(){ echo -en "\ec" ;stty sane;TXa;A; };INI
  83. while [[ "$l1" != " " ]]; do case $aa in
  84. 0)D;echo -en "\e[47;30m"; (E0);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  85. \e[32m sudo apt install npm\e[0m
  86. \e[32m sudo npm install --global surge\e[0m
  87. Проверить уязвимости:\e[32m sudo npm audit\e[0m
  88. ";echo -en "\e[47;30m ENTER = main menu ";read;INI;fi;;
  89. 1)D;echo -en "\e[47;30m"; (E1);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  90. \e[32m surge <project> <domain>\e[0m
  91. ";echo -en "\e[47;30m ENTER = main menu ";read;INI;fi;;
  92. 2)D;echo -en "\e[47;30m"; (E2);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  93. Порядок работы:
  94. 1. Войти в каталог проекта сайта.
  95. 2. Ввести команду:\e[32m sudo surge\e[0m
  96. 3. Ввести пароль пользователя системы.
  97. 4. Ввести почту пользователя.
  98. 5. Ввести пароль сайта.
  99. \e[2m
  100. [sudo] password for user:
  101. Welcome to surge! (surge.sh)
  102. Login (or create surge account) by entering email & password.
  103. email: user@mail.com
  104. password:
  105. Running as user@mail.com (Student)
  106. project: /home/user/project_site/
  107. domain: rainy-wound.surge.sh
  108. upload: [====================] 100% eta: 0.0s (10 files, 112865 bytes)
  109. CDN: [====================] 100%
  110. encryption: *.surge.sh, surge.sh (300 days)
  111. IP: 012.345.678.900
  112. Success! - Published to rainy-wound.surge.sh
  113. \e[0m";echo -en "\e[47;30m ENTER = main menu ";read;INI;fi;;
  114. 3)D;echo -en "\e[47;30m"; (E3);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  115. Отредактировать файл:\e[32m nano index.html\e[0m
  116. Обновить сайт:\e[32m sudo surge ./ rainy-wound.surge.sh\e[0m
  117. \e[2m
  118. Running as user@mail.com (Student)
  119. project: ./
  120. domain: rainy-wound.surge.sh
  121. upload: [====================] 100% eta: 0.0s (10 files, 111843 bytes)
  122. CDN: [====================] 100%
  123. encryption: *.surge.sh, surge.sh (300 days)
  124. IP: 001.234.567.890
  125. Success! - Published to rainy-wound.surge.sh
  126. \e[0m";echo -en "\e[47;30m ENTER = main menu ";read;INI;fi;;
  127. 4)D;echo -en "\e[47;30m"; (E4);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  128. Добавляет пользователя в список соавторов (адрес электронной почты):\e[32m
  129. surge -a
  130. surge --add
  131. \e[0m";echo -en "\e[47;30m ENTER = main menu ";read;INI;fi;;
  132. 5)D;echo -en "\e[47;30m"; (E5);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  133. Удаляет пользователя из списка соавторов (адрес электронной почты):\e[32m
  134. surge -r
  135. surge --remove
  136. \e[0m";echo -en "\e[47;30m ENTER = main menu ";read;INI;fi;;
  137. 6)D;echo -en "\e[47;30m"; (E6);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  138. Show the version number\e[32m
  139. surge -V
  140. surge --version
  141. \e[0m";echo -en "\e[47;30m ENTER = main menu ";read;INI;fi;;
  142. 7)D;echo -en "\e[47;30m"; (E7);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  143. Show this help message\e[32m
  144. surge -h
  145. surge --help
  146. \e[0m";echo -en "\e[47;30m ENTER = main menu ";read;INI;fi;;
  147. 8)D;echo -en "\e[47;30m"; (E8);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  148. \e[32m surge whoami\e[0m
  149. ";echo -en "\e[47;30m ENTER = main menu ";read;INI;fi;;
  150. 9)D;echo -en "\e[47;30m"; (E9);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  151. \e[32m surge logout\e[0m
  152. ";echo -en "\e[47;30m ENTER = main menu ";read;INI;fi;;
  153. 10)D;echo -en "\e[47;30m";(E10);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "\e[32m
  154. surge login
  155. \e[0m";echo -en "\e[47;30m ENTER = main menu ";read;INI;fi;;
  156. 11)D;echo -en "\e[47;30m";(E11);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "\e[32m
  157. surge list
  158. \e[0m";echo -en "\e[47;30m ENTER = main menu ";read;INI;fi;;
  159. 12)D;echo -en "\e[47;30m";(E12);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "\e[32m
  160. surge teardown
  161. \e[0m";echo -en "\e[47;30m ENTER = main menu ";read;INI;fi;;
  162. 13)D;echo -en "\e[47;30m";(E13);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "\e[32m
  163. surge plan
  164. \e[0m";echo -en "\e[47;30m ENTER = main menu ";read;INI;fi;;
  165. 14)D;echo -en "\e[47;30m";(E14);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;echo -e "
  166. So 28 Jän 2024
  167. mSurge Описание загрузки сайта из терминала.
  168. Asciinema: \e[36m https://asciinema.org/a/598841\e[0m
  169. Github: \e[36m https://github.com/Grannik/mSurge\e[0m
  170. Gitlab: \e[36m https://gitlab.com/grannik/msurge\e[0m
  171. Sourceforge:\e[36m https://sourceforge.net/projects/msurge/files/\e[0m
  172. Notabug: \e[36m https://notabug.org/Grannikoleg/mSurge\e[0m
  173. Bitbucket: \e[36m https://bitbucket.org/grannikoleg/msurge/src/main/mSurge.sh\e[0m
  174. Framagit: \e[36m https://framagit.org/GrannikOleg/msurge\e[0m
  175. Gitea \e[36m https://try.gitea.io/Grannik/mSurge\e[0m
  176. Gogs: \e[36m https://try.gogs.io/Grannik2/mSurge\e[0m
  177. Codeberg: \e[36m https://codeberg.org/Grannik/mSurge\e[0m
  178. ";echo -en "\e[47;30m ENTER = main menu ";read;INI;fi;;
  179. 15)D;echo -en "\e[47;30m";(E15);i=`B`;if [[ $i == enter ]];then echo -en "\ec";stty sane;exit 0;fi;;
  180. esac;C;done