freedombone-config 42KB

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