freedombone-config 43KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155
  1. #!/bin/bash
  2. #
  3. # .---. . .
  4. # | | |
  5. # |--- .--. .-. .-. .-.| .-. .--.--. |.-. .-. .--. .-.
  6. # | | (.-' (.-' ( | ( )| | | | )( )| | (.-'
  7. # ' ' --' --' -' - -' ' ' -' -' -' ' - --'
  8. #
  9. # Freedom in the Cloud
  10. #
  11. # Interactively creates a configuration file for use with the main
  12. # freedombone command
  13. #
  14. # License
  15. # =======
  16. #
  17. # Copyright (C) 2015 Bob Mottram <bob@robotics.uk.to>
  18. #
  19. # This program is free software: you can redistribute it and/or modify
  20. # it under the terms of the GNU General Public License as published by
  21. # the Free Software Foundation, either version 3 of the License, or
  22. # (at your option) any later version.
  23. #
  24. # This program is distributed in the hope that it will be useful,
  25. # but WITHOUT ANY WARRANTY; without even the implied warranty of
  26. # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  27. # GNU General Public License for more details.
  28. #
  29. # You should have received a copy of the GNU General Public License
  30. # along with this program. If not, see <http://www.gnu.org/licenses/>.
  31. NO_OF_ARGS=$#
  32. # Web site
  33. FREEDOMBONE_WEBSITE="http://freedombone.uk.to"
  34. # Contact details
  35. FREEDOMBONE_BITMESSAGE="BM-2cWuhmBvVdfrHhLoZTdspCkKeiTorUesSL"
  36. # Minimum number of characters in a password
  37. MINIMUM_PASSWORD_LENGTH=10
  38. # Different system variants which may be specified within
  39. # the SYSTEM_TYPE option
  40. VARIANT_FULL="full"
  41. VARIANT_WRITER="writer"
  42. VARIANT_CLOUD="cloud"
  43. VARIANT_CHAT="chat"
  44. VARIANT_MAILBOX="mailbox"
  45. VARIANT_NONMAILBOX="nonmailbox"
  46. VARIANT_SOCIAL="social"
  47. VARIANT_MEDIA="media"
  48. VARIANT_DEVELOPER="developer"
  49. MY_USERNAME=
  50. DEFAULT_DOMAIN_NAME=
  51. DEFAULT_DOMAIN_CODE=
  52. MY_EMAIL_ADDRESS=
  53. SYSTEM_TYPE=
  54. INSTALLING_ON_BBB=
  55. DDNS_PROVIDER=
  56. DDNS_USERNAME=
  57. DDNS_PASSWORD=
  58. MY_NAME=
  59. LOCAL_NETWORK_STATIC_IP_ADDRESS=
  60. ROUTER_IP_ADDRESS=
  61. ENABLE_CJDNS=
  62. DEBIAN_REPO=
  63. NAMESERVER1=
  64. NAMESERVER2=
  65. WIKI_TITLE=
  66. WIKI_DOMAIN_NAME=
  67. WIKI_CODE=
  68. MY_BLOG_TITLE=
  69. FULLBLOG_DOMAIN_NAME=
  70. FULLBLOG_CODE=
  71. OWNCLOUD_DOMAIN_NAME=
  72. OWNCLOUD_CODE=
  73. REDMATRIX_DOMAIN_NAME=
  74. REDMATRIX_CODE=
  75. MICROBLOG_DOMAIN_NAME=
  76. MICROBLOG_CODE=
  77. GIT_DOMAIN_NAME=
  78. GIT_CODE=
  79. MEDIAGOBLIN_DOMAIN_NAME=
  80. MEDIAGOBLIN_CODE=
  81. USB_DRIVE=/dev/sdb1
  82. CONFIGURATION_FILE=
  83. function show_help {
  84. echo ''
  85. echo 'freedombone-config -f [config filename] -m [min password length]'
  86. echo ''
  87. echo 'Creates an inventory of remote backup locations'
  88. echo ''
  89. echo ''
  90. echo ' -h --help Show help'
  91. echo ' -f --filename Configuration file (usually freedombone.cfg)'
  92. echo ' -m --min Minimum password length (characters)'
  93. echo ' -w --www Freedombone web site'
  94. echo ' -b --bm Freedombone support Bitmessage address'
  95. echo ''
  96. exit 0
  97. }
  98. # Get the commandline options
  99. while [[ $# > 1 ]]
  100. do
  101. key="$1"
  102. case $key in
  103. -h|--help)
  104. show_help
  105. ;;
  106. # Configuration filename
  107. -f|--filename)
  108. shift
  109. CONFIGURATION_FILE="$1"
  110. ;;
  111. # Minimum password length
  112. -m|--min)
  113. shift
  114. MINIMUM_PASSWORD_LENGTH="$1"
  115. ;;
  116. # Freedombone website
  117. -w|--www)
  118. shift
  119. FREEDOMBONE_WEBSITE="$1"
  120. ;;
  121. # Bitmessage address for support
  122. -b|--bm)
  123. shift
  124. FREEDOMBONE_BITMESSAGE="$1"
  125. ;;
  126. *)
  127. # unknown option
  128. ;;
  129. esac
  130. shift
  131. done
  132. function save_configuration_file {
  133. if [ ! $CONFIGURATION_FILE ]; then
  134. CONFIGURATION_FILE='freedombone.cfg'
  135. fi
  136. echo "MY_USERNAME=$MY_USERNAME" > $CONFIGURATION_FILE
  137. echo "DEFAULT_DOMAIN_NAME=$DEFAULT_DOMAIN_NAME" >> $CONFIGURATION_FILE
  138. if [ $DEFAULT_DOMAIN_CODE ]; then
  139. echo "DEFAULT_DOMAIN_CODE=$DEFAULT_DOMAIN_CODE" >> $CONFIGURATION_FILE
  140. fi
  141. echo "SYSTEM_TYPE=$SYSTEM_TYPE" >> $CONFIGURATION_FILE
  142. echo "INSTALLING_ON_BBB=$INSTALLING_ON_BBB" >> $CONFIGURATION_FILE
  143. echo "USB_DRIVE=$USB_DRIVE" >> $CONFIGURATION_FILE
  144. echo "DDNS_PROVIDER=$DDNS_PROVIDER" >> $CONFIGURATION_FILE
  145. echo "DDNS_USERNAME=$DDNS_USERNAME" >> $CONFIGURATION_FILE
  146. echo "DDNS_PASSWORD=$DDNS_PASSWORD" >> $CONFIGURATION_FILE
  147. echo "MY_NAME=$MY_NAME" >> $CONFIGURATION_FILE
  148. echo "MY_EMAIL_ADDRESS=$MY_EMAIL_ADDRESS" >> $CONFIGURATION_FILE
  149. echo "LOCAL_NETWORK_STATIC_IP_ADDRESS=$LOCAL_NETWORK_STATIC_IP_ADDRESS" >> $CONFIGURATION_FILE
  150. echo "ROUTER_IP_ADDRESS=$ROUTER_IP_ADDRESS" >> $CONFIGURATION_FILE
  151. if [ $ENABLE_CJDNS ]; then
  152. echo "ENABLE_CJDNS=$ENABLE_CJDNS" >> $CONFIGURATION_FILE
  153. fi
  154. echo "DEBIAN_REPO=$DEBIAN_REPO" >> $CONFIGURATION_FILE
  155. echo "NAMESERVER1=$NAMESERVER1" >> $CONFIGURATION_FILE
  156. echo "NAMESERVER2=$NAMESERVER2" >> $CONFIGURATION_FILE
  157. if [ $WIKI_TITLE ]; then
  158. echo "WIKI_TITLE=$WIKI_TITLE" >> $CONFIGURATION_FILE
  159. fi
  160. if [ $WIKI_DOMAIN_NAME ]; then
  161. echo "WIKI_DOMAIN_NAME=$WIKI_DOMAIN_NAME" >> $CONFIGURATION_FILE
  162. fi
  163. if [ $WIKI_CODE ]; then
  164. echo "WIKI_CODE=$WIKI_CODE" >> $CONFIGURATION_FILE
  165. fi
  166. if [ $MY_BLOG_TITLE ]; then
  167. echo "MY_BLOG_TITLE=$MY_BLOG_TITLE" >> $CONFIGURATION_FILE
  168. fi
  169. if [ $FULLBLOG_DOMAIN_NAME ]; then
  170. echo "FULLBLOG_DOMAIN_NAME=$FULLBLOG_DOMAIN_NAME" >> $CONFIGURATION_FILE
  171. fi
  172. if [ $FULLBLOG_CODE ]; then
  173. echo "FULLBLOG_CODE=$FULLBLOG_CODE" >> $CONFIGURATION_FILE
  174. fi
  175. if [ $OWNCLOUD_DOMAIN_NAME ]; then
  176. echo "OWNCLOUD_DOMAIN_NAME=$OWNCLOUD_DOMAIN_NAME" >> $CONFIGURATION_FILE
  177. fi
  178. if [ $OWNCLOUD_CODE ]; then
  179. echo "OWNCLOUD_CODE=$OWNCLOUD_CODE" >> $CONFIGURATION_FILE
  180. fi
  181. if [ $REDMATRIX_DOMAIN_NAME ]; then
  182. echo "REDMATRIX_DOMAIN_NAME=$REDMATRIX_DOMAIN_NAME" >> $CONFIGURATION_FILE
  183. fi
  184. if [ $REDMATRIX_CODE ]; then
  185. echo "REDMATRIX_CODE=$REDMATRIX_CODE" >> $CONFIGURATION_FILE
  186. fi
  187. if [ $MICROBLOG_DOMAIN_NAME ]; then
  188. echo "MICROBLOG_DOMAIN_NAME=$MICROBLOG_DOMAIN_NAME" >> $CONFIGURATION_FILE
  189. fi
  190. if [ $MICROBLOG_CODE ]; then
  191. echo "MICROBLOG_CODE=$MICROBLOG_CODE" >> $CONFIGURATION_FILE
  192. fi
  193. if [ $GIT_DOMAIN_NAME ]; then
  194. echo "GIT_DOMAIN_NAME=$GIT_DOMAIN_NAME" >> $CONFIGURATION_FILE
  195. fi
  196. if [ $GIT_CODE ]; then
  197. echo "GIT_CODE=$GIT_CODE" >> $CONFIGURATION_FILE
  198. fi
  199. if [ $MEDIAGOBLIN_DOMAIN_NAME ]; then
  200. echo "MEDIAGOBLIN_DOMAIN_NAME=$MEDIAGOBLIN_DOMAIN_NAME" >> $CONFIGURATION_FILE
  201. fi
  202. if [ $MEDIAGOBLIN_CODE ]; then
  203. echo "MEDIAGOBLIN_CODE=$MEDIAGOBLIN_CODE" >> $CONFIGURATION_FILE
  204. fi
  205. }
  206. # test a domain name to see if it's valid
  207. function validate_domain_name {
  208. # count the number of dots in the domain name
  209. dots=${TEST_DOMAIN_NAME//[^.]}
  210. no_of_dots=${#dots}
  211. if (( $no_of_dots > 3 )); then
  212. TEST_DOMAIN_NAME="The domain $TEST_DOMAIN_NAME has too many subdomains. It should be of the type w.x.y.z, x.y.z or y.z"
  213. fi
  214. if (( $no_of_dots == 0 )); then
  215. TEST_DOMAIN_NAME="The domain $TEST_DOMAIN_NAME has no top level domain. It should be of the type w.x.y.z, x.y.z or y.z"
  216. fi
  217. }
  218. function interactive_configuration {
  219. # create a temporary copy of the configuration file
  220. # which can be used to pre-populate selections
  221. if [ -f $CONFIGURATION_FILE ]; then
  222. cp $CONFIGURATION_FILE temp.cfg
  223. fi
  224. FREEDNS_MESSAGE="Please enter the FreeDNS code for this domain.\n\nThe code can be found by going to https://freedns.afraid.org, selecting 'Dynamic DNS' and then opening 'Wget example'. The code will consist of letters and numbers and be between the ? and = characters."
  225. dialog --title "Freedombone" --msgbox "Welcome to the Freedombone interactive installer. Communications freedom is only a short time away.\n\nEnsure that you have your domain and dynamic DNS settings ready.\n\nFor more information please visit $FREEDOMBONE_WEBSITE or send a Bitmessage to $FREEDOMBONE_BITMESSAGE" 15 50
  226. data=$(tempfile 2>/dev/null)
  227. trap "rm -f $data" 0 1 2 5 15
  228. dialog --backtitle "Freedombone Configuration" \
  229. --radiolist "Type of Installation:" 17 40 9 \
  230. 1 Full on \
  231. 2 Writer off \
  232. 3 Cloud off \
  233. 4 Chat off \
  234. 5 Mailbox off \
  235. 6 Non-Mailbox off \
  236. 7 Social off \
  237. 8 Media off \
  238. 9 Developer off 2> $data
  239. sel=$?
  240. case $sel in
  241. 1) exit 0;;
  242. 255) exit 0;;
  243. esac
  244. case $(cat $data) in
  245. 1) SYSTEM_TYPE=$VARIANT_FULL;;
  246. 2) SYSTEM_TYPE=$VARIANT_WRITER;;
  247. 3) SYSTEM_TYPE=$VARIANT_CLOUD;;
  248. 4) SYSTEM_TYPE=$VARIANT_CHAT;;
  249. 5) SYSTEM_TYPE=$VARIANT_MAILBOX;;
  250. 6) SYSTEM_TYPE=$VARIANT_NONMAILBOX;;
  251. 7) SYSTEM_TYPE=$VARIANT_SOCIAL;;
  252. 8) SYSTEM_TYPE=$VARIANT_MEDIA;;
  253. 9) SYSTEM_TYPE=$VARIANT_DEVELOPER;;
  254. esac
  255. save_configuration_file
  256. data=$(tempfile 2>/dev/null)
  257. trap "rm -f $data" 0 1 2 5 15
  258. dialog --title "Select the user account to install as" \
  259. --backtitle "Freedombone Configuration" \
  260. --dselect "/home/$(grep 'MY_USERNAME' temp.cfg | awk -F '=' '{print $2}')" 14 40 2> $data
  261. sel=$?
  262. case $sel in
  263. 0) MY_USERNAME=$(cat $data | awk -F '/' '{print $3}');;
  264. 1) exit 0;;
  265. 255) exit 0;;
  266. esac
  267. if [ ! $MY_USERNAME ]; then
  268. echo 'No user account was selected'
  269. exit 64398
  270. fi
  271. if [[ $MY_USERNAME == '-f' ]]; then
  272. echo 'No user account was selected'
  273. exit 8347
  274. fi
  275. if [[ $MY_USERNAME == 'debian' ]]; then
  276. echo "Don't use the default debian user account"
  277. exit 9341
  278. fi
  279. if [ ! -d /home/$MY_USERNAME ]; then
  280. echo "The directory /home/$MY_USERNAME does not exist"
  281. exit 6437
  282. fi
  283. save_configuration_file
  284. if [[ $(grep "INSTALLING_ON_BBB" temp.cfg | awk -F '=' '{print $2}') == "yes" ]]; then
  285. dialog --title "Install Target" \
  286. --backtitle "Freedombone Configuration" \
  287. --yesno "\nAre you installing onto a Beaglebone Black?" 7 60
  288. else
  289. dialog --title "Install Target" \
  290. --backtitle "Freedombone Configuration" \
  291. --defaultno \
  292. --yesno "\nAre you installing onto a Beaglebone Black?" 7 60
  293. fi
  294. sel=$?
  295. case $sel in
  296. 0) INSTALLING_ON_BBB="yes";;
  297. 1) INSTALLING_ON_BBB="no";;
  298. 255) exit 0;;
  299. esac
  300. if [[ $INSTALLING_ON_BBB == "yes" ]]; then
  301. USB_DRIVE=/dev/sda1
  302. fi
  303. save_configuration_file
  304. data=$(tempfile 2>/dev/null)
  305. trap "rm -f $data" 0 1 2 5 15
  306. dialog --backtitle "Freedombone Configuration" \
  307. --radiolist "Where to download Debian packages from:" 25 45 49 \
  308. 1 "Australia" off \
  309. 2 "Austria" off \
  310. 3 "Belarus" off \
  311. 4 "Belgium" off \
  312. 5 "Bosnia and Herzegovina" off \
  313. 6 "Brazil" off \
  314. 7 "Bulgaria" off \
  315. 8 "Canada" off \
  316. 9 "Chile" off \
  317. 10 "China" off \
  318. 11 "Croatia" off \
  319. 12 "Czech Republic" off \
  320. 13 "Denmark" off \
  321. 14 "El Salvador" off \
  322. 15 "Estonia" off \
  323. 16 "Finland" off \
  324. 17 "France 1" off \
  325. 18 "France 2" off \
  326. 19 "Germany 1" off \
  327. 20 "Germany 2" off \
  328. 21 "Greece" off \
  329. 22 "Hungary" off \
  330. 23 "Iceland" off \
  331. 24 "Iran" off \
  332. 25 "Ireland" off \
  333. 26 "Italy" off \
  334. 27 "Japan" off \
  335. 28 "Korea" off \
  336. 29 "Lithuania" off \
  337. 30 "Mexico" off \
  338. 31 "Netherlands" off \
  339. 32 "New Caledonia" off \
  340. 33 "New Zealand" off \
  341. 34 "Norway" off \
  342. 35 "Poland" off \
  343. 36 "Portugal" off \
  344. 37 "Romania" off \
  345. 38 "Russia" off \
  346. 39 "Slovakia" off \
  347. 40 "Slovenia" off \
  348. 41 "Spain" off \
  349. 42 "Sweden" off \
  350. 43 "Switzerland" off \
  351. 44 "Taiwan" off \
  352. 45 "Thailand" off \
  353. 46 "Turkey" off \
  354. 47 "Ukraine" off \
  355. 48 "United Kingdom" off \
  356. 49 "United States" on 2> $data
  357. sel=$?
  358. case $sel in
  359. 1) exit 0;;
  360. 255) exit 0;;
  361. esac
  362. case $(cat $data) in
  363. 1) DEBIAN_REPO='ftp.au.debian.org';;
  364. 2) DEBIAN_REPO='ftp.at.debian.org';;
  365. 3) DEBIAN_REPO='ftp.by.debian.org';;
  366. 4) DEBIAN_REPO='ftp.be.debian.org';;
  367. 5) DEBIAN_REPO='ftp.ba.debian.org';;
  368. 6) DEBIAN_REPO='ftp.br.debian.org';;
  369. 7) DEBIAN_REPO='ftp.bg.debian.org';;
  370. 8) DEBIAN_REPO='ftp.ca.debian.org';;
  371. 9) DEBIAN_REPO='ftp.cl.debian.org';;
  372. 10) DEBIAN_REPO='ftp.cn.debian.org';;
  373. 11) DEBIAN_REPO='ftp.hr.debian.org';;
  374. 12) DEBIAN_REPO='ftp.cz.debian.org';;
  375. 13) DEBIAN_REPO='ftp.dk.debian.org';;
  376. 14) DEBIAN_REPO='ftp.sv.debian.org';;
  377. 15) DEBIAN_REPO='ftp.ee.debian.org';;
  378. 16) DEBIAN_REPO='ftp.fi.debian.org';;
  379. 17) DEBIAN_REPO='ftp2.fr.debian.org';;
  380. 18) DEBIAN_REPO='ftp.fr.debian.org';;
  381. 19) DEBIAN_REPO='ftp2.de.debian.org';;
  382. 20) DEBIAN_REPO='ftp.de.debian.org';;
  383. 21) DEBIAN_REPO='ftp.gr.debian.org';;
  384. 22) DEBIAN_REPO='ftp.hu.debian.org';;
  385. 23) DEBIAN_REPO='ftp.is.debian.org';;
  386. 24) DEBIAN_REPO='ftp.ir.debian.org';;
  387. 25) DEBIAN_REPO='ftp.ie.debian.org';;
  388. 26) DEBIAN_REPO='ftp.it.debian.org';;
  389. 27) DEBIAN_REPO='ftp.jp.debian.org';;
  390. 28) DEBIAN_REPO='ftp.kr.debian.org';;
  391. 29) DEBIAN_REPO='ftp.lt.debian.org';;
  392. 30) DEBIAN_REPO='ftp.mx.debian.org';;
  393. 31) DEBIAN_REPO='ftp.nl.debian.org';;
  394. 32) DEBIAN_REPO='ftp.nc.debian.org';;
  395. 33) DEBIAN_REPO='ftp.nz.debian.org';;
  396. 34) DEBIAN_REPO='ftp.no.debian.org';;
  397. 35) DEBIAN_REPO='ftp.pl.debian.org';;
  398. 36) DEBIAN_REPO='ftp.pt.debian.org';;
  399. 37) DEBIAN_REPO='ftp.ro.debian.org';;
  400. 38) DEBIAN_REPO='ftp.ru.debian.org';;
  401. 39) DEBIAN_REPO='ftp.sk.debian.org';;
  402. 40) DEBIAN_REPO='ftp.si.debian.org';;
  403. 41) DEBIAN_REPO='ftp.es.debian.org';;
  404. 42) DEBIAN_REPO='ftp.se.debian.org';;
  405. 43) DEBIAN_REPO='ftp.ch.debian.org';;
  406. 44) DEBIAN_REPO='ftp.tw.debian.org';;
  407. 45) DEBIAN_REPO='ftp.th.debian.org';;
  408. 46) DEBIAN_REPO='ftp.tr.debian.org';;
  409. 47) DEBIAN_REPO='ftp.ua.debian.org';;
  410. 48) DEBIAN_REPO='ftp.uk.debian.org';;
  411. 49) DEBIAN_REPO='ftp.us.debian.org';;
  412. 255) exit 0;;
  413. esac
  414. save_configuration_file
  415. data=$(tempfile 2>/dev/null)
  416. trap "rm -f $data" 0 1 2 5 15
  417. dialog --backtitle "Freedombone Configuration" \
  418. --radiolist "Pick a domain name service (DNS):" 25 50 16 \
  419. 1 "Digital Courage" on \
  420. 2 "German Privacy Foundation 1" off \
  421. 3 "German Privacy Foundation 2" off \
  422. 4 "Chaos Computer Club" off \
  423. 5 "ClaraNet" off \
  424. 6 "OpenNIC 1" off \
  425. 7 "OpenNIC 2" off \
  426. 8 "OpenNIC 3" off \
  427. 9 "OpenNIC 4" off \
  428. 10 "OpenNIC 5" off \
  429. 11 "OpenNIC 6" off \
  430. 12 "OpenNIC 7" off \
  431. 13 "PowerNS" off \
  432. 14 "ValiDOM" off \
  433. 15 "Freie Unzensierte" off \
  434. 16 "Google" off 2> $data
  435. sel=$?
  436. case $sel in
  437. 1) exit 0;;
  438. 255) exit 0;;
  439. esac
  440. case $(cat $data) in
  441. 1) NAMESERVER1='85.214.73.63'
  442. NAMESERVER2='213.73.91.35'
  443. ;;
  444. 2) NAMESERVER1='87.118.100.175'
  445. NAMESERVER2='94.75.228.29'
  446. ;;
  447. 3) NAMESERVER1='85.25.251.254'
  448. NAMESERVER2='2.141.58.13'
  449. ;;
  450. 4) NAMESERVER1='213.73.91.35'
  451. NAMESERVER2='85.214.73.63'
  452. ;;
  453. 5) NAMESERVER1='212.82.225.7'
  454. NAMESERVER2='212.82.226.212'
  455. ;;
  456. 6) NAMESERVER1='58.6.115.42'
  457. NAMESERVER2='58.6.115.43'
  458. ;;
  459. 7) NAMESERVER1='119.31.230.42'
  460. NAMESERVER2='200.252.98.162'
  461. ;;
  462. 8) NAMESERVER1='217.79.186.148'
  463. NAMESERVER2='81.89.98.6'
  464. ;;
  465. 9) NAMESERVER1='78.159.101.37'
  466. NAMESERVER2='203.167.220.153'
  467. ;;
  468. 10) NAMESERVER1='82.229.244.191'
  469. NAMESERVER2='82.229.244.191'
  470. ;;
  471. 11) NAMESERVER1='216.87.84.211'
  472. NAMESERVER2='66.244.95.20'
  473. ;;
  474. 12) NAMESERVER1='207.192.69.155'
  475. NAMESERVER2='72.14.189.120'
  476. ;;
  477. 13) NAMESERVER1='194.145.226.26'
  478. NAMESERVER2='77.220.232.44'
  479. ;;
  480. 14) NAMESERVER1='78.46.89.147'
  481. NAMESERVER2='88.198.75.145'
  482. ;;
  483. 15) NAMESERVER1='85.25.149.144'
  484. NAMESERVER2='87.106.37.196'
  485. ;;
  486. 16) NAMESERVER1='8.8.8.8'
  487. NAMESERVER2='4.4.4.4'
  488. ;;
  489. 255) exit 0;;
  490. esac
  491. save_configuration_file
  492. data=$(tempfile 2>/dev/null)
  493. trap "rm -f $data" 0 1 2 5 15
  494. dialog --backtitle "Freedombone Configuration" \
  495. --radiolist "Choose Dynamic DNS provider:" 15 40 14 \
  496. 1 dyndns off \
  497. 2 freedns on \
  498. 3 zoneedit off \
  499. 4 no-ip off \
  500. 5 easydns off \
  501. 6 tzo off \
  502. 7 3322 off \
  503. 8 dnsomatic off \
  504. 9 tunnelbroker off \
  505. 10 dns.he.net off \
  506. 11 dynsip off \
  507. 12 sitelutions off \
  508. 13 dnsexit off \
  509. 14 changeip off 2> $data
  510. sel=$?
  511. case $sel in
  512. 1) exit 0;;
  513. 255) exit 0;;
  514. esac
  515. case $(cat $data) in
  516. 1) DDNS_PROVIDER="default@dyndns.org";;
  517. 2) DDNS_PROVIDER="default@freedns.afraid.org";;
  518. 3) DDNS_PROVIDER="default@zoneedit.com";;
  519. 4) DDNS_PROVIDER="default@no-ip.com";;
  520. 5) DDNS_PROVIDER="default@easydns.com";;
  521. 6) DDNS_PROVIDER="default@tzo.com";;
  522. 7) DDNS_PROVIDER="dyndns@3322.org";;
  523. 8) DDNS_PROVIDER="default@dnsomatic.com";;
  524. 9) DDNS_PROVIDER="ipv6tb@he.net";;
  525. 10) DDNS_PROVIDER="dyndns@he.net";;
  526. 11) DDNS_PROVIDER="default@dynsip.org";;
  527. 12) DDNS_PROVIDER="default@sitelutions.com";;
  528. 13) DDNS_PROVIDER="default@dnsexit.com";;
  529. 14) DDNS_PROVIDER="default@changeip.com";;
  530. 255) exit 0;;
  531. esac
  532. save_configuration_file
  533. while [ ! $DDNS_USERNAME ]
  534. do
  535. data=$(tempfile 2>/dev/null)
  536. trap "rm -f $data" 0 1 2 5 15
  537. dialog --backtitle "Freedombone Configuration" \
  538. --inputbox "Dynamic DNS provider username" 10 30 "$(grep 'DDNS_USERNAME' temp.cfg | awk -F '=' '{print $2}')" 2> $data
  539. sel=$?
  540. case $sel in
  541. 0) DDNS_USERNAME=$(cat $data);;
  542. 1) exit 0;;
  543. 255) exit 0;;
  544. esac
  545. done
  546. save_configuration_file
  547. while [ ! $DDNS_PASSWORD ]
  548. do
  549. data=$(tempfile 2>/dev/null)
  550. trap "rm -f $data" 0 1 2 5 15
  551. dialog --backtitle "Freedombone Configuration" \
  552. --clear \
  553. --insecure \
  554. --passwordbox "Dynamic DNS provider password" 10 30 "$(grep 'DDNS_PASSWORD' temp.cfg | awk -F '=' '{print $2}')" 2> $data
  555. sel=$?
  556. case $sel in
  557. 0) DDNS_PASSWORD=$(cat $data);;
  558. 1) exit 0;;
  559. 255) exit 0;;
  560. esac
  561. if [ ${#DDNS_PASSWORD} -lt $MINIMUM_PASSWORD_LENGTH ]; then
  562. dialog --title "Password quality check" --msgbox "The password given was too short. It must be at least $MINIMUM_PASSWORD_LENGTH characters. You may need to change your password on the dynamic DNS provider's web site." 10 40
  563. DDNS_PASSWORD=""
  564. fi
  565. done
  566. save_configuration_file
  567. while [ ! $MY_NAME ]
  568. do
  569. data=$(tempfile 2>/dev/null)
  570. trap "rm -f $data" 0 1 2 5 15
  571. dialog --backtitle "Freedombone Configuration" \
  572. --inputbox "Your full name (or nick)" 10 30 "$(grep 'MY_NAME' temp.cfg | awk -F '=' '{print $2}')" 2> $data
  573. sel=$?
  574. case $sel in
  575. 0) MY_NAME=$(cat $data);;
  576. 1) exit 0;;
  577. 255) exit 0;;
  578. esac
  579. done
  580. save_configuration_file
  581. if [ ! $LOCAL_NETWORK_STATIC_IP_ADDRESS ]; then
  582. LOCAL_NETWORK_STATIC_IP_ADDRESS=$(grep 'LOCAL_NETWORK_STATIC_IP_ADDRESS' temp.cfg | awk -F '=' '{print $2}')
  583. if [ ! $LOCAL_NETWORK_STATIC_IP_ADDRESS ]; then
  584. LOCAL_NETWORK_STATIC_IP_ADDRESS='192.168..'
  585. fi
  586. fi
  587. if [ ! $ROUTER_IP_ADDRESS ]; then
  588. ROUTER_IP_ADDRESS=$(grep 'ROUTER_IP_ADDRESS' temp.cfg | awk -F '=' '{print $2}')
  589. if [ ! $ROUTER_IP_ADDRESS ]; then
  590. ROUTER_IP_ADDRESS='192.168..'
  591. fi
  592. fi
  593. data=$(tempfile 2>/dev/null)
  594. trap "rm -f $data" 0 1 2 5 15
  595. dialog --backtitle "Freedombone Configuration" \
  596. --title "Local Network Configuration" \
  597. --form "\nPlease enter the IP addresses:" 11 55 3 \
  598. "This system:" 1 1 "$LOCAL_NETWORK_STATIC_IP_ADDRESS" 1 16 16 15 \
  599. "Internet router:" 2 1 "$ROUTER_IP_ADDRESS" 2 16 16 15 \
  600. 2> $data
  601. sel=$?
  602. case $sel in
  603. 1) exit 0;;
  604. 255) exit 0;;
  605. esac
  606. LOCAL_NETWORK_STATIC_IP_ADDRESS=$(cat $data | sed -n 1p)
  607. ROUTER_IP_ADDRESS=$(cat $data | sed -n 2p)
  608. save_configuration_file
  609. if [[ $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_FULL" ]]; then
  610. WIKI_DETAILS_COMPLETE=
  611. while [ ! $WIKI_DETAILS_COMPLETE ]
  612. do
  613. data=$(tempfile 2>/dev/null)
  614. trap "rm -f $data" 0 1 2 5 15
  615. if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then
  616. dialog --backtitle "Freedombone Configuration" \
  617. --title "Wiki Configuration" \
  618. --form "\nPlease enter your wiki details:" 11 55 4 \
  619. "Title:" 1 1 "$(grep 'WIKI_TITLE' temp.cfg | awk -F '=' '{print $2}')" 1 16 25 40 \
  620. "Domain:" 2 1 "$(grep 'WIKI_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 2 16 25 40 \
  621. "Code:" 3 1 "$(grep 'WIKI_CODE' temp.cfg | awk -F '=' '{print $2}')" 3 16 25 40 \
  622. 2> $data
  623. else
  624. dialog --backtitle "Freedombone Configuration" \
  625. --title "Wiki Configuration" \
  626. --form "\nPlease enter your wiki details:" 11 55 3 \
  627. "Title:" 1 1 "$(grep 'WIKI_TITLE' temp.cfg | awk -F '=' '{print $2}')" 1 16 25 40 \
  628. "Domain:" 2 1 "$(grep 'WIKI_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 2 16 25 40 \
  629. 2> $data
  630. fi
  631. sel=$?
  632. case $sel in
  633. 1) exit 0;;
  634. 255) exit 0;;
  635. esac
  636. WIKI_TITLE=$(cat $data | sed -n 1p)
  637. WIKI_DOMAIN_NAME=$(cat $data | sed -n 2p)
  638. if [ $WIKI_DOMAIN_NAME ]; then
  639. TEST_DOMAIN_NAME=$WIKI_DOMAIN_NAME
  640. validate_domain_name
  641. if [[ $TEST_DOMAIN_NAME != $WIKI_DOMAIN_NAME ]]; then
  642. WIKI_DOMAIN_NAME=
  643. dialog --title "Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50
  644. else
  645. if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then
  646. WIKI_CODE=$(cat $data | sed -n 3p)
  647. if [ ${#WIKI_CODE} -lt 30 ]; then
  648. WIKI_DOMAIN_NAME=
  649. dialog --title "FreeDNS code" --msgbox "$FREEDNS_MESSAGE" 15 50
  650. fi
  651. fi
  652. fi
  653. fi
  654. if [ $WIKI_DOMAIN_NAME ]; then
  655. WIKI_DETAILS_COMPLETE="yes"
  656. fi
  657. done
  658. save_configuration_file
  659. fi
  660. if [[ $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_FULL" ]]; then
  661. FULLBLOG_DETAILS_COMPLETE=
  662. while [ ! $FULLBLOG_DETAILS_COMPLETE ]
  663. do
  664. data=$(tempfile 2>/dev/null)
  665. trap "rm -f $data" 0 1 2 5 15
  666. if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then
  667. dialog --backtitle "Freedombone Configuration" \
  668. --title "Blog Configuration" \
  669. --form "\nPlease enter your blog details:" 11 55 4 \
  670. "Title:" 1 1 "$(grep 'MY_BLOG_TITLE' temp.cfg | awk -F '=' '{print $2}')" 1 16 25 30 \
  671. "Domain:" 2 1 "$(grep 'FULLBLOG_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 2 16 25 30 \
  672. "Code:" 3 1 "$(grep 'FULLBLOG_CODE' temp.cfg | awk -F '=' '{print $2}')" 3 16 25 30 \
  673. 2> $data
  674. else
  675. dialog --backtitle "Freedombone Configuration" \
  676. --title "Blog Configuration" \
  677. --form "\nPlease enter your blog details:" 11 55 3 \
  678. "Title:" 1 1 "$(grep 'MY_BLOG_TITLE' temp.cfg | awk -F '=' '{print $2}')" 1 16 25 30 \
  679. "Domain:" 2 1 "$(grep 'FULLBLOG_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 2 16 25 30 \
  680. 2> $data
  681. fi
  682. sel=$?
  683. case $sel in
  684. 1) exit 0;;
  685. 255) exit 0;;
  686. esac
  687. MY_BLOG_TITLE=$(cat $data | sed -n 1p)
  688. FULLBLOG_DOMAIN_NAME=$(cat $data | sed -n 2p)
  689. if [ $FULLBLOG_DOMAIN_NAME ]; then
  690. if [[ $FULLBLOG_DOMAIN_NAME == "$WIKI_DOMAIN_NAME" ]]; then
  691. FULLBLOG_DOMAIN_NAME=""
  692. fi
  693. TEST_DOMAIN_NAME=$FULLBLOG_DOMAIN_NAME
  694. validate_domain_name
  695. if [[ $TEST_DOMAIN_NAME != $FULLBLOG_DOMAIN_NAME ]]; then
  696. FULLBLOG_DOMAIN_NAME=
  697. dialog --title "Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50
  698. else
  699. if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then
  700. FULLBLOG_CODE=$(cat $data | sed -n 3p)
  701. if [ ${#FULLBLOG_CODE} -lt 30 ]; then
  702. FULLBLOG_DOMAIN_NAME=
  703. dialog --title "FreeDNS code" --msgbox "$FREEDNS_MESSAGE" 15 50
  704. fi
  705. fi
  706. fi
  707. fi
  708. if [ $FULLBLOG_DOMAIN_NAME ]; then
  709. FULLBLOG_DETAILS_COMPLETE="yes"
  710. fi
  711. done
  712. save_configuration_file
  713. fi
  714. if [[ $SYSTEM_TYPE == "$VARIANT_CLOUD" || $SYSTEM_TYPE == "$VARIANT_FULL" ]]; then
  715. OWNCLOUD_DETAILS_COMPLETE=
  716. while [ ! $OWNCLOUD_DETAILS_COMPLETE ]
  717. do
  718. data=$(tempfile 2>/dev/null)
  719. trap "rm -f $data" 0 1 2 5 15
  720. if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then
  721. dialog --backtitle "Freedombone Configuration" \
  722. --title "Owncloud Configuration" \
  723. --form "\nPlease enter your Owncloud details:" 11 55 3 \
  724. "Domain:" 1 1 "$(grep 'OWNCLOUD_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 1 16 25 30 \
  725. "Code:" 2 1 "$(grep 'OWNCLOUD_CODE' temp.cfg | awk -F '=' '{print $2}')" 2 16 25 30 \
  726. 2> $data
  727. else
  728. dialog --backtitle "Freedombone Configuration" \
  729. --title "Owncloud Configuration" \
  730. --form "\nPlease enter your Owncloud details:" 11 55 3 \
  731. "Domain:" 1 1 "$(grep 'OWNCLOUD_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 1 16 25 30 \
  732. 2> $data
  733. fi
  734. sel=$?
  735. case $sel in
  736. 1) exit 0;;
  737. 255) exit 0;;
  738. esac
  739. OWNCLOUD_DOMAIN_NAME=$(cat $data | sed -n 1p)
  740. if [ $OWNCLOUD_DOMAIN_NAME ]; then
  741. TEST_DOMAIN_NAME=$OWNCLOUD_DOMAIN_NAME
  742. validate_domain_name
  743. if [[ $TEST_DOMAIN_NAME != $OWNCLOUD_DOMAIN_NAME ]]; then
  744. OWNCLOUD_DOMAIN_NAME=
  745. dialog --title "Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50
  746. else
  747. if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then
  748. OWNCLOUD_CODE=$(cat $data | sed -n 2p)
  749. if [ ${#OWNCLOUD_CODE} -lt 30 ]; then
  750. OWNCLOUD_DOMAIN_NAME=
  751. dialog --title "FreeDNS code" --msgbox "$FREEDNS_MESSAGE" 15 50
  752. fi
  753. fi
  754. fi
  755. fi
  756. if [ $OWNCLOUD_DOMAIN_NAME ]; then
  757. OWNCLOUD_DETAILS_COMPLETE="yes"
  758. fi
  759. done
  760. save_configuration_file
  761. fi
  762. if [[ $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_FULL" ]]; then
  763. REDMATRIX_DETAILS_COMPLETE=
  764. while [ ! $REDMATRIX_DETAILS_COMPLETE ]
  765. do
  766. data=$(tempfile 2>/dev/null)
  767. trap "rm -f $data" 0 1 2 5 15
  768. if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then
  769. dialog --backtitle "Freedombone Configuration" \
  770. --title "RedMatrix Configuration" \
  771. --form "\nPlease enter your RedMatrix details:" 11 55 3 \
  772. "Domain:" 1 1 "$(grep 'REDMATRIX_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 1 16 25 30 \
  773. "Code:" 2 1 "$(grep 'REDMATRIX_CODE' temp.cfg | awk -F '=' '{print $2}')" 2 16 25 30 \
  774. 2> $data
  775. else
  776. dialog --backtitle "Freedombone Configuration" \
  777. --title "RedMatrix Configuration" \
  778. --form "\nPlease enter your RedMatrix details:" 11 55 3 \
  779. "Domain:" 1 1 "$(grep 'REDMATRIX_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 1 16 25 30 \
  780. 2> $data
  781. fi
  782. sel=$?
  783. case $sel in
  784. 1) exit 0;;
  785. 255) exit 0;;
  786. esac
  787. REDMATRIX_DOMAIN_NAME=$(cat $data | sed -n 1p)
  788. if [ $REDMATRIX_DOMAIN_NAME ]; then
  789. TEST_DOMAIN_NAME=$REDMATRIX_DOMAIN_NAME
  790. validate_domain_name
  791. if [[ $TEST_DOMAIN_NAME != $REDMATRIX_DOMAIN_NAME ]]; then
  792. REDMATRIX_DOMAIN_NAME=
  793. dialog --title "Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50
  794. else
  795. if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then
  796. REDMATRIX_CODE=$(cat $data | sed -n 2p)
  797. if [ ${#REDMATRIX_CODE} -lt 30 ]; then
  798. REDMATRIX_DOMAIN_NAME=
  799. dialog --title "FreeDNS code" --msgbox "$FREEDNS_MESSAGE" 15 50
  800. fi
  801. fi
  802. fi
  803. fi
  804. if [ $REDMATRIX_DOMAIN_NAME ]; then
  805. REDMATRIX_DETAILS_COMPLETE="yes"
  806. fi
  807. done
  808. save_configuration_file
  809. fi
  810. if [[ $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_FULL" ]]; then
  811. MICROBLOG_DETAILS_COMPLETE=
  812. while [ ! $MICROBLOG_DETAILS_COMPLETE ]
  813. do
  814. data=$(tempfile 2>/dev/null)
  815. trap "rm -f $data" 0 1 2 5 15
  816. if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then
  817. dialog --backtitle "Freedombone Configuration" \
  818. --title "Microblog Configuration" \
  819. --form "\nPlease enter your Microblog details:" 11 55 3 \
  820. "Domain:" 1 1 "$(grep 'MICROBLOG_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 1 16 25 30 \
  821. "Code:" 2 1 "$(grep 'MICROBLOG_CODE' temp.cfg | awk -F '=' '{print $2}')" 2 16 25 30 \
  822. 2> $data
  823. else
  824. dialog --backtitle "Freedombone Configuration" \
  825. --title "Microblog Configuration" \
  826. --form "\nPlease enter your Microblog details:" 11 55 3 \
  827. "Domain:" 1 1 "$(grep 'MICROBLOG_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 1 16 25 30 \
  828. 2> $data
  829. fi
  830. sel=$?
  831. case $sel in
  832. 1) exit 0;;
  833. 255) exit 0;;
  834. esac
  835. MICROBLOG_DOMAIN_NAME=$(cat $data | sed -n 1p)
  836. if [ $MICROBLOG_DOMAIN_NAME ]; then
  837. if [[ $MICROBLOG_DOMAIN_NAME == "$REDMATRIX_DOMAIN_NAME" ]]; then
  838. MICROBLOG_DOMAIN_NAME=""
  839. fi
  840. TEST_DOMAIN_NAME=$MICROBLOG_DOMAIN_NAME
  841. validate_domain_name
  842. if [[ $TEST_DOMAIN_NAME != $MICROBLOG_DOMAIN_NAME ]]; then
  843. MICROBLOG_DOMAIN_NAME=
  844. dialog --title "Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50
  845. else
  846. if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then
  847. MICROBLOG_CODE=$(cat $data | sed -n 2p)
  848. if [ ${#MICROBLOG_CODE} -lt 30 ]; then
  849. MICROBLOG_DOMAIN_NAME=
  850. dialog --title "FreeDNS code" --msgbox "$FREEDNS_MESSAGE" 15 50
  851. fi
  852. fi
  853. fi
  854. fi
  855. if [ $MICROBLOG_DOMAIN_NAME ]; then
  856. MICROBLOG_DETAILS_COMPLETE="yes"
  857. fi
  858. done
  859. save_configuration_file
  860. fi
  861. if [[ $SYSTEM_TYPE == "$VARIANT_DEVELOPER" || $SYSTEM_TYPE == "$VARIANT_FULL" ]]; then
  862. DEVELOPER_DETAILS_COMPLETE=
  863. while [ ! $DEVELOPER_DETAILS_COMPLETE ]
  864. do
  865. data=$(tempfile 2>/dev/null)
  866. trap "rm -f $data" 0 1 2 5 15
  867. if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then
  868. dialog --backtitle "Freedombone Configuration" \
  869. --title "Developer Configuration" \
  870. --form "\nPlease enter your Git hosting site details.\nIf You don't need developer tools then just select Ok" 11 55 3 \
  871. "Domain:" 1 1 "$(grep 'GIT_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 1 16 25 40 \
  872. "Code:" 2 1 "$(grep 'GIT_CODE' temp.cfg | awk -F '=' '{print $2}')" 2 16 25 40 \
  873. 2> $data
  874. else
  875. dialog --backtitle "Freedombone Configuration" \
  876. --title "Developer Configuration" \
  877. --form "\nPlease enter your Git hosting site details.\nIf You don't need developer tools then just select Ok" 11 55 2 \
  878. "Domain:" 1 1 "$(grep 'GIT_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 1 16 25 40 \
  879. 2> $data
  880. fi
  881. sel=$?
  882. case $sel in
  883. 1) exit 0;;
  884. 255) exit 0;;
  885. esac
  886. GIT_DOMAIN_NAME=$(cat $data | sed -n 1p)
  887. if [ $GIT_DOMAIN_NAME ]; then
  888. TEST_DOMAIN_NAME=$GIT_DOMAIN_NAME
  889. validate_domain_name
  890. if [[ $TEST_DOMAIN_NAME != $GIT_DOMAIN_NAME ]]; then
  891. GIT_DOMAIN_NAME=
  892. dialog --title "Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50
  893. else
  894. if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then
  895. GIT_CODE=$(cat $data | sed -n 2p)
  896. if [ ${#GIT_CODE} -lt 30 ]; then
  897. GIT_DOMAIN_NAME=
  898. dialog --title "FreeDNS code" --msgbox "$FREEDNS_MESSAGE" 15 50
  899. fi
  900. fi
  901. fi
  902. else
  903. DEVELOPER_DETAILS_COMPLETE="yes"
  904. fi
  905. if [ $GIT_DOMAIN_NAME ]; then
  906. DEVELOPER_DETAILS_COMPLETE="yes"
  907. fi
  908. done
  909. save_configuration_file
  910. fi
  911. DEFAULT_DOMAIN_DETAILS_COMPLETE=
  912. while [ ! $DEFAULT_DOMAIN_DETAILS_COMPLETE ]
  913. do
  914. data=$(tempfile 2>/dev/null)
  915. trap "rm -f $data" 0 1 2 5 15
  916. if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then
  917. dialog --backtitle "Freedombone Configuration" \
  918. --title "Default Domain" \
  919. --form "\nWhich domain name should your email/XMPP/IRC/VoIP be associated with?" 11 55 3 \
  920. "Domain:" 1 1 "$(grep 'DEFAULT_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 1 16 25 30 \
  921. "Code:" 2 1 "$(grep 'DEFAULT_DOMAIN_CODE' temp.cfg | awk -F '=' '{print $2}')" 2 16 25 30 \
  922. 2> $data
  923. sel=$?
  924. case $sel in
  925. 1) exit 0;;
  926. 255) exit 0;;
  927. esac
  928. DEFAULT_DOMAIN_NAME=$(cat $data | sed -n 1p)
  929. DEFAULT_DOMAIN_CODE=$(cat $data | sed -n 2p)
  930. if [ $DEFAULT_DOMAIN_NAME ]; then
  931. if [ ${#DEFAULT_DOMAIN_CODE} -lt 30 ]; then
  932. DEFAULT_DOMAIN_NAME=
  933. dialog --title "FreeDNS code" --msgbox "$FREEDNS_MESSAGE" 15 50
  934. fi
  935. fi
  936. else
  937. dialog --backtitle "Freedombone Configuration" \
  938. --inputbox "Which domain name should your email/XMPP/IRC/VoIP be associated with?" 10 45 \
  939. "$(grep 'DEFAULT_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 2> $data
  940. sel=$?
  941. case $sel in
  942. 0) DEFAULT_DOMAIN_NAME=$(cat $data);;
  943. 1) exit 0;;
  944. 255) exit 0;;
  945. esac
  946. fi
  947. if [ $DEFAULT_DOMAIN_NAME ]; then
  948. TEST_DOMAIN_NAME=$DEFAULT_DOMAIN_NAME
  949. validate_domain_name
  950. if [[ $TEST_DOMAIN_NAME != $DEFAULT_DOMAIN_NAME ]]; then
  951. DEFAULT_DOMAIN_NAME=
  952. dialog --title "Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50
  953. else
  954. DEFAULT_DOMAIN_DETAILS_COMPLETE="yes"
  955. fi
  956. fi
  957. done
  958. save_configuration_file
  959. while [ ${#MY_EMAIL_ADDRESS} -lt 5 ]
  960. do
  961. EMAIL_ADDRESS=$(grep 'MY_EMAIL_ADDRESS' temp.cfg | awk -F '=' '{print $2}')
  962. if [ ! $EMAIL_ADDRESS ]; then
  963. EMAIL_ADDRESS=$MY_USERNAME@$DEFAULT_DOMAIN_NAME
  964. fi
  965. if [ ${#MY_EMAIL_ADDRESS} -lt 5 ]; then
  966. EMAIL_ADDRESS=$MY_USERNAME@$DEFAULT_DOMAIN_NAME
  967. fi
  968. data=$(tempfile 2>/dev/null)
  969. trap "rm -f $data" 0 1 2 5 15
  970. dialog --backtitle "Freedombone Configuration" \
  971. --inputbox "Your email address" 10 30 "$EMAIL_ADDRESS" 2> $data
  972. sel=$?
  973. case $sel in
  974. 0) MY_EMAIL_ADDRESS=$(cat $data);;
  975. 1) exit 0;;
  976. 255) exit 0;;
  977. esac
  978. done
  979. save_configuration_file
  980. # delete the temporary configuration file
  981. if [ -f temp.cfg ]; then
  982. shred -zu temp.cfg
  983. fi
  984. }
  985. function show_result {
  986. clear
  987. echo ''
  988. echo "Configuration filename: $CONFIGURATION_FILE"
  989. echo ''
  990. echo 'Contents:'
  991. echo ''
  992. cat $CONFIGURATION_FILE
  993. echo ''
  994. }
  995. function read_configuration {
  996. if [ ! $CONFIGURATION_FILE ]; then
  997. CONFIGURATION_FILE='freedombone.cfg'
  998. fi
  999. if [ -f $CONFIGURATION_FILE ]; then
  1000. if grep -q "GIT_DOMAIN_NAME" $CONFIGURATION_FILE; then
  1001. GIT_DOMAIN_NAME=$(grep "GIT_DOMAIN_NAME" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1002. fi
  1003. if grep -q "GIT_CODE" $CONFIGURATION_FILE; then
  1004. GIT_CODE=$(grep "GIT_CODE" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1005. fi
  1006. if grep -q "MY_USERNAME" $CONFIGURATION_FILE; then
  1007. MY_USERNAME=$(grep "MY_USERNAME" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1008. fi
  1009. if grep -q "DOMAIN_NAME" $CONFIGURATION_FILE; then
  1010. # for backwards compatability
  1011. DEFAULT_DOMAIN_NAME=$(grep "DOMAIN_NAME" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1012. fi
  1013. if grep -q "DEFAULT_DOMAIN_NAME" $CONFIGURATION_FILE; then
  1014. DEFAULT_DOMAIN_NAME=$(grep "DEFAULT_DOMAIN_NAME" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1015. fi
  1016. if grep -q "DEFAULT_DOMAIN_CODE" $CONFIGURATION_FILE; then
  1017. DEFAULT_DOMAIN_CODE=$(grep "DEFAULT_DOMAIN_CODE" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1018. fi
  1019. if grep -q "NAMESERVER1" $CONFIGURATION_FILE; then
  1020. NAMESERVER1=$(grep "NAMESERVER1" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1021. fi
  1022. if grep -q "NAMESERVER2" $CONFIGURATION_FILE; then
  1023. NAMESERVER2=$(grep "NAMESERVER2" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1024. fi
  1025. if grep -q "DEBIAN_REPO" $CONFIGURATION_FILE; then
  1026. DEBIAN_REPO=$(grep "DEBIAN_REPO" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1027. CHECK_MESSAGE="Check your internet connection, /etc/network/interfaces and /etc/resolv.conf, then delete $COMPLETION_FILE, run 'rm -fR /var/lib/apt/lists/* && apt-get update --fix-missing' and run this script again. If hash sum mismatches persist then try setting $DEBIAN_REPO to a different mirror and also change /etc/apt/sources.list."
  1028. fi
  1029. if grep -q "DDNS_PROVIDER" $CONFIGURATION_FILE; then
  1030. DDNS_PROVIDER=$(grep "DDNS_PROVIDER" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1031. fi
  1032. if grep -q "DDNS_USERNAME" $CONFIGURATION_FILE; then
  1033. DDNS_USERNAME=$(grep "DDNS_USERNAME" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1034. fi
  1035. if grep -q "DDNS_PASSWORD" $CONFIGURATION_FILE; then
  1036. DDNS_PASSWORD=$(grep "DDNS_PASSWORD" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1037. fi
  1038. if grep -q "LOCAL_NETWORK_STATIC_IP_ADDRESS" $CONFIGURATION_FILE; then
  1039. LOCAL_NETWORK_STATIC_IP_ADDRESS=$(grep "LOCAL_NETWORK_STATIC_IP_ADDRESS" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1040. fi
  1041. if grep -q "ENABLE_CJDNS" $CONFIGURATION_FILE; then
  1042. ENABLE_CJDNS=$(grep "ENABLE_CJDNS" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1043. fi
  1044. if grep -q "ROUTER_IP_ADDRESS" $CONFIGURATION_FILE; then
  1045. ROUTER_IP_ADDRESS=$(grep "ROUTER_IP_ADDRESS" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1046. fi
  1047. if grep -q "WIKI_TITLE" $CONFIGURATION_FILE; then
  1048. WIKI_TITLE=$(grep "WIKI_TITLE" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1049. fi
  1050. if grep -q "MY_NAME" $CONFIGURATION_FILE; then
  1051. MY_NAME=$(grep "MY_NAME" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1052. fi
  1053. if grep -q "MY_EMAIL_ADDRESS" $CONFIGURATION_FILE; then
  1054. MY_EMAIL_ADDRESS=$(grep "MY_EMAIL_ADDRESS" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1055. fi
  1056. if grep -q "INSTALLING_ON_BBB" $CONFIGURATION_FILE; then
  1057. INSTALLING_ON_BBB=$(grep "INSTALLING_ON_BBB" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1058. fi
  1059. if grep -q "USB_DRIVE" $CONFIGURATION_FILE; then
  1060. USB_DRIVE=$(grep "USB_DRIVE" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1061. fi
  1062. if grep -q "PUBLIC_MAILING_LIST" $CONFIGURATION_FILE; then
  1063. PUBLIC_MAILING_LIST=$(grep "PUBLIC_MAILING_LIST" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1064. fi
  1065. if grep -q "MICROBLOG_DOMAIN_NAME" $CONFIGURATION_FILE; then
  1066. MICROBLOG_DOMAIN_NAME=$(grep "MICROBLOG_DOMAIN_NAME" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1067. fi
  1068. if grep -q "MICROBLOG_CODE" $CONFIGURATION_FILE; then
  1069. MICROBLOG_CODE=$(grep "MICROBLOG_CODE" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1070. fi
  1071. if grep -q "REDMATRIX_DOMAIN_NAME" $CONFIGURATION_FILE; then
  1072. REDMATRIX_DOMAIN_NAME=$(grep "REDMATRIX_DOMAIN_NAME" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1073. fi
  1074. if grep -q "REDMATRIX_CODE" $CONFIGURATION_FILE; then
  1075. REDMATRIX_CODE=$(grep "REDMATRIX_CODE" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1076. fi
  1077. if grep -q "OWNCLOUD_DOMAIN_NAME" $CONFIGURATION_FILE; then
  1078. OWNCLOUD_DOMAIN_NAME=$(grep "OWNCLOUD_DOMAIN_NAME" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1079. fi
  1080. if grep -q "OWNCLOUD_CODE" $CONFIGURATION_FILE; then
  1081. OWNCLOUD_CODE=$(grep "OWNCLOUD_CODE" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1082. fi
  1083. if grep -q "WIKI_DOMAIN_NAME" $CONFIGURATION_FILE; then
  1084. WIKI_DOMAIN_NAME=$(grep "WIKI_DOMAIN_NAME" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1085. fi
  1086. if grep -q "WIKI_CODE" $CONFIGURATION_FILE; then
  1087. WIKI_CODE=$(grep "WIKI_CODE" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1088. fi
  1089. if grep -q "FULLBLOG_DOMAIN_NAME" $CONFIGURATION_FILE; then
  1090. FULLBLOG_DOMAIN_NAME=$(grep "FULLBLOG_DOMAIN_NAME" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1091. fi
  1092. if grep -q "FULLBLOG_CODE" $CONFIGURATION_FILE; then
  1093. FULLBLOG_CODE=$(grep "FULLBLOG_CODE" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1094. fi
  1095. if grep -q "MY_BLOG_TITLE" $CONFIGURATION_FILE; then
  1096. MY_BLOG_TITLE=$(grep "MY_BLOG_TITLE" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1097. fi
  1098. if grep -q "MY_BLOG_SUBTITLE" $CONFIGURATION_FILE; then
  1099. MY_BLOG_SUBTITLE=$(grep "MY_BLOG_SUBTITLE" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1100. fi
  1101. if grep -q "MEDIAGOBLIN_DOMAIN_NAME" $CONFIGURATION_FILE; then
  1102. MEDIAGOBLIN_DOMAIN_NAME=$(grep "MEDIAGOBLIN_DOMAIN_NAME" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1103. fi
  1104. if grep -q "MEDIAGOBLIN_CODE" $CONFIGURATION_FILE; then
  1105. MEDIAGOBLIN_CODE=$(grep "MEDIAGOBLIN_CODE" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1106. fi
  1107. fi
  1108. }
  1109. read_configuration
  1110. interactive_configuration
  1111. show_result
  1112. exit 0