freedombone-config 56KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523
  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. VARIANT_MESH="mesh"
  50. MY_USERNAME=
  51. DEFAULT_DOMAIN_NAME=
  52. DEFAULT_DOMAIN_CODE=
  53. MY_EMAIL_ADDRESS=
  54. SYSTEM_TYPE=
  55. INSTALLING_ON_BBB=
  56. DDNS_PROVIDER=
  57. DDNS_USERNAME=
  58. DDNS_PASSWORD=
  59. MY_NAME=
  60. LOCAL_NETWORK_STATIC_IP_ADDRESS=
  61. ROUTER_IP_ADDRESS=
  62. ENABLE_CJDNS=
  63. ENABLE_BATMAN=
  64. ENABLE_BABEL=
  65. DEBIAN_REPO=
  66. NAMESERVER1=
  67. NAMESERVER2=
  68. WIKI_TITLE=
  69. WIKI_DOMAIN_NAME=
  70. WIKI_CODE=
  71. MY_BLOG_TITLE=
  72. FULLBLOG_DOMAIN_NAME=
  73. FULLBLOG_CODE=
  74. OWNCLOUD_DOMAIN_NAME=
  75. OWNCLOUD_CODE=
  76. REDMATRIX_DOMAIN_NAME=
  77. REDMATRIX_CODE=
  78. MICROBLOG_DOMAIN_NAME=
  79. MICROBLOG_CODE=
  80. GIT_DOMAIN_NAME=
  81. GIT_CODE=
  82. MEDIAGOBLIN_DOMAIN_NAME=
  83. MEDIAGOBLIN_CODE=
  84. USB_DRIVE=/dev/sdb1
  85. HWRNG_TYPE=
  86. ENABLE_SOCIAL_KEY_MANAGEMENT=
  87. ESSID='mesh'
  88. BATMAN_CELLID='02:BA:00:00:03:01'
  89. WIFI_CHANNEL=
  90. CONFIGURATION_FILE=
  91. function show_help {
  92. echo ''
  93. echo 'freedombone-config -f [config filename] -m [min password length]'
  94. echo ''
  95. echo 'Creates an inventory of remote backup locations'
  96. echo ''
  97. echo ''
  98. echo ' -h --help Show help'
  99. echo ' -f --filename Configuration file (usually freedombone.cfg)'
  100. echo ' -m --min Minimum password length (characters)'
  101. echo ' -w --www Freedombone web site'
  102. echo ' -b --bm Freedombone support Bitmessage address'
  103. echo ''
  104. exit 0
  105. }
  106. # Get the commandline options
  107. while [[ $# > 1 ]]
  108. do
  109. key="$1"
  110. case $key in
  111. -h|--help)
  112. show_help
  113. ;;
  114. # Configuration filename
  115. -f|--filename)
  116. shift
  117. CONFIGURATION_FILE="$1"
  118. ;;
  119. # Minimum password length
  120. -m|--min)
  121. shift
  122. MINIMUM_PASSWORD_LENGTH="$1"
  123. ;;
  124. # Freedombone website
  125. -w|--www)
  126. shift
  127. FREEDOMBONE_WEBSITE="$1"
  128. ;;
  129. # Bitmessage address for support
  130. -b|--bm)
  131. shift
  132. FREEDOMBONE_BITMESSAGE="$1"
  133. ;;
  134. *)
  135. # unknown option
  136. ;;
  137. esac
  138. shift
  139. done
  140. function save_configuration_file {
  141. if [ ! $CONFIGURATION_FILE ]; then
  142. CONFIGURATION_FILE='freedombone.cfg'
  143. fi
  144. echo "MY_USERNAME=$MY_USERNAME" > $CONFIGURATION_FILE
  145. echo "DEFAULT_DOMAIN_NAME=$DEFAULT_DOMAIN_NAME" >> $CONFIGURATION_FILE
  146. if [ $DEFAULT_DOMAIN_CODE ]; then
  147. echo "DEFAULT_DOMAIN_CODE=$DEFAULT_DOMAIN_CODE" >> $CONFIGURATION_FILE
  148. fi
  149. echo "SYSTEM_TYPE=$SYSTEM_TYPE" >> $CONFIGURATION_FILE
  150. echo "INSTALLING_ON_BBB=$INSTALLING_ON_BBB" >> $CONFIGURATION_FILE
  151. echo "USB_DRIVE=$USB_DRIVE" >> $CONFIGURATION_FILE
  152. echo "DDNS_PROVIDER=$DDNS_PROVIDER" >> $CONFIGURATION_FILE
  153. echo "DDNS_USERNAME=$DDNS_USERNAME" >> $CONFIGURATION_FILE
  154. echo "DDNS_PASSWORD=$DDNS_PASSWORD" >> $CONFIGURATION_FILE
  155. echo "MY_NAME=$MY_NAME" >> $CONFIGURATION_FILE
  156. echo "MY_EMAIL_ADDRESS=$MY_EMAIL_ADDRESS" >> $CONFIGURATION_FILE
  157. echo "LOCAL_NETWORK_STATIC_IP_ADDRESS=$LOCAL_NETWORK_STATIC_IP_ADDRESS" >> $CONFIGURATION_FILE
  158. echo "ROUTER_IP_ADDRESS=$ROUTER_IP_ADDRESS" >> $CONFIGURATION_FILE
  159. if [ $ENABLE_CJDNS ]; then
  160. echo "ENABLE_CJDNS=$ENABLE_CJDNS" >> $CONFIGURATION_FILE
  161. fi
  162. if [ $ENABLE_BATMAN ]; then
  163. echo "ENABLE_BATMAN=$ENABLE_BATMAN" >> $CONFIGURATION_FILE
  164. fi
  165. if [ $ENABLE_BABEL ]; then
  166. echo "ENABLE_BABEL=$ENABLE_BABEL" >> $CONFIGURATION_FILE
  167. fi
  168. echo "DEBIAN_REPO=$DEBIAN_REPO" >> $CONFIGURATION_FILE
  169. echo "NAMESERVER1=$NAMESERVER1" >> $CONFIGURATION_FILE
  170. echo "NAMESERVER2=$NAMESERVER2" >> $CONFIGURATION_FILE
  171. if [ $WIKI_TITLE ]; then
  172. echo "WIKI_TITLE=$WIKI_TITLE" >> $CONFIGURATION_FILE
  173. fi
  174. if [ $WIKI_DOMAIN_NAME ]; then
  175. echo "WIKI_DOMAIN_NAME=$WIKI_DOMAIN_NAME" >> $CONFIGURATION_FILE
  176. fi
  177. if [ $WIKI_CODE ]; then
  178. echo "WIKI_CODE=$WIKI_CODE" >> $CONFIGURATION_FILE
  179. fi
  180. if [ $MY_BLOG_TITLE ]; then
  181. echo "MY_BLOG_TITLE=$MY_BLOG_TITLE" >> $CONFIGURATION_FILE
  182. fi
  183. if [ $FULLBLOG_DOMAIN_NAME ]; then
  184. echo "FULLBLOG_DOMAIN_NAME=$FULLBLOG_DOMAIN_NAME" >> $CONFIGURATION_FILE
  185. fi
  186. if [ $FULLBLOG_CODE ]; then
  187. echo "FULLBLOG_CODE=$FULLBLOG_CODE" >> $CONFIGURATION_FILE
  188. fi
  189. if [ $OWNCLOUD_DOMAIN_NAME ]; then
  190. echo "OWNCLOUD_DOMAIN_NAME=$OWNCLOUD_DOMAIN_NAME" >> $CONFIGURATION_FILE
  191. fi
  192. if [ $OWNCLOUD_CODE ]; then
  193. echo "OWNCLOUD_CODE=$OWNCLOUD_CODE" >> $CONFIGURATION_FILE
  194. fi
  195. if [ $REDMATRIX_DOMAIN_NAME ]; then
  196. echo "REDMATRIX_DOMAIN_NAME=$REDMATRIX_DOMAIN_NAME" >> $CONFIGURATION_FILE
  197. fi
  198. if [ $REDMATRIX_CODE ]; then
  199. echo "REDMATRIX_CODE=$REDMATRIX_CODE" >> $CONFIGURATION_FILE
  200. fi
  201. if [ $MICROBLOG_DOMAIN_NAME ]; then
  202. echo "MICROBLOG_DOMAIN_NAME=$MICROBLOG_DOMAIN_NAME" >> $CONFIGURATION_FILE
  203. fi
  204. if [ $MICROBLOG_CODE ]; then
  205. echo "MICROBLOG_CODE=$MICROBLOG_CODE" >> $CONFIGURATION_FILE
  206. fi
  207. if [ $GIT_DOMAIN_NAME ]; then
  208. echo "GIT_DOMAIN_NAME=$GIT_DOMAIN_NAME" >> $CONFIGURATION_FILE
  209. fi
  210. if [ $GIT_CODE ]; then
  211. echo "GIT_CODE=$GIT_CODE" >> $CONFIGURATION_FILE
  212. fi
  213. if [ $MEDIAGOBLIN_DOMAIN_NAME ]; then
  214. echo "MEDIAGOBLIN_DOMAIN_NAME=$MEDIAGOBLIN_DOMAIN_NAME" >> $CONFIGURATION_FILE
  215. fi
  216. if [ $MEDIAGOBLIN_CODE ]; then
  217. echo "MEDIAGOBLIN_CODE=$MEDIAGOBLIN_CODE" >> $CONFIGURATION_FILE
  218. fi
  219. if [ $HWRNG_TYPE ]; then
  220. echo "HWRNG_TYPE=$HWRNG_TYPE" >> $CONFIGURATION_FILE
  221. fi
  222. if [ $ENABLE_SOCIAL_KEY_MANAGEMENT ]; then
  223. echo "ENABLE_SOCIAL_KEY_MANAGEMENT=$ENABLE_SOCIAL_KEY_MANAGEMENT" >> $CONFIGURATION_FILE
  224. fi
  225. if [ $ESSID ]; then
  226. echo "ESSID=$ESSID" >> $CONFIGURATION_FILE
  227. fi
  228. if [ $BATMAN_CELLID ]; then
  229. echo "BATMAN_CELLID=$BATMAN_CELLID" >> $CONFIGURATION_FILE
  230. fi
  231. if [ $WIFI_CHANNEL ]; then
  232. echo "WIFI_CHANNEL=$WIFI_CHANNEL" >> $CONFIGURATION_FILE
  233. fi
  234. }
  235. # test a domain name to see if it's valid
  236. function validate_domain_name {
  237. # count the number of dots in the domain name
  238. dots=${TEST_DOMAIN_NAME//[^.]}
  239. no_of_dots=${#dots}
  240. if (( no_of_dots > 3 )); then
  241. 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"
  242. fi
  243. if (( no_of_dots == 0 )); then
  244. 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"
  245. fi
  246. }
  247. function interactive_gpg_from_remote {
  248. REMOTE_SERVERS_LIST=/home/$MY_USERNAME/keyshareservers.txt
  249. # get a list of remote servers
  250. freedombone-remote -u $MY_USERNAME -l $REMOTE_SERVERS_LIST -t "Remote server"
  251. if [ ! -f $REMOTE_SERVERS_LIST ]; then
  252. dialog --title "Encryption keys" --msgbox 'Error obtaining server list' 6 70
  253. return 1
  254. fi
  255. # check the number of entries in the file
  256. no_of_servers=$(cat $REMOTE_SERVERS_LIST | wc -l)
  257. if (( no_of_servers < 3 )); then
  258. dialog --title "Encryption keys" \
  259. --msgbox 'There must be at least three servers to recover the key' 6 70
  260. return 2
  261. fi
  262. # try to recover the key from the servers
  263. apt-get -y install libgfshare-bin gnupg
  264. freedombone-recoverkey -u $MY_USERNAME -l $REMOTE_SERVERS_LIST
  265. if [ ! "$?" = "0" ]; then
  266. dialog --title "Encryption keys" --msgbox 'Your key could not be recovered' 6 70
  267. return 3
  268. fi
  269. dialog --title "Encryption keys" --msgbox 'Your key has been recovered' 6 70
  270. return 0
  271. }
  272. function reconstruct_key {
  273. if [ ! -d /home/$MY_USERNAME/.gnupg_fragments ]; then
  274. return
  275. fi
  276. cd /home/$MY_USERNAME/.gnupg_fragments
  277. no_of_shares=$(ls -afq keyshare.asc.* | wc -l)
  278. if (( no_of_shares < 4 )); then
  279. dialog --title "Encryption keys" --msgbox 'Not enough fragments to reconstruct the key' 6 70
  280. exit 7348
  281. fi
  282. apt-get -y install libgfshare-bin gnupg
  283. gfcombine /home/$MY_USERNAME/.gnupg_fragments/keyshare*
  284. if [ ! "$?" = "0" ]; then
  285. dialog --title "Encryption keys" --msgbox 'Unable to reconstruct the key' 6 70
  286. exit 7348
  287. fi
  288. KEYS_FILE=/home/$MY_USERNAME/.gnupg_fragments/keyshare.asc
  289. if [ ! -f $KEYS_FILE ]; then
  290. dialog --title "Encryption keys" --msgbox 'Unable to reconstruct the key' 6 70
  291. fi
  292. su -c "gpg --allow-secret-key-import --import $KEYS_FILE" - $MY_USERNAME
  293. if [ ! "$?" = "0" ]; then
  294. echo 'Unable to import gpg key'
  295. shred -zu $KEYS_FILE
  296. rm -rf /home/$MY_USERNAME/.tempgnupg
  297. exit 9654
  298. fi
  299. shred -zu $KEYS_FILE
  300. dialog --title "Encryption keys" --msgbox 'Key has been reconstructed' 6 70
  301. }
  302. function interactive_gpg_from_usb {
  303. dialog --title "Encryption keys" \
  304. --msgbox 'Plug in a USB drive containing a copy of your full key or key fragment' 6 70
  305. HOME_DIR=/home/$MY_USERNAME
  306. GPG_LOADING="yes"
  307. SSH_IMPORTED="no"
  308. GPG_CTR=0
  309. while [[ $GPG_LOADING == "yes" ]]
  310. do
  311. if [[ $INSTALLING_ON_BBB == "yes" ]]; then
  312. GPG_USB_DRIVE='/dev/sda1'
  313. if [ ! -b $GPG_USB_DRIVE ]; then
  314. if (( GPG_CTR > 0 )); then
  315. reconstruct_key
  316. return 0
  317. fi
  318. dialog --title "Encryption keys" --msgbox 'No USB drive found' 6 30
  319. exit 739836
  320. fi
  321. else
  322. GPG_USB_DRIVE='/dev/sdb1'
  323. if [ ! -b $GPG_USB_DRIVE ]; then
  324. GPG_USB_DRIVE='/dev/sdc1'
  325. if [ ! -b $GPG_USB_DRIVE ]; then
  326. GPG_USB_DRIVE='/dev/sdd1'
  327. if [ ! -b $GPG_USB_DRIVE ]; then
  328. if (( GPG_CTR > 0 )); then
  329. reconstruct_key
  330. return 0
  331. fi
  332. dialog --title "Encryption keys" --msgbox 'No USB drive found' 6 30
  333. exit 27852
  334. fi
  335. fi
  336. fi
  337. fi
  338. GPG_USB_MOUNT='/mnt/usb'
  339. umount -f $GPG_USB_MOUNT
  340. if [ ! -d $GPG_USB_MOUNT ]; then
  341. mkdir -p $GPG_USB_MOUNT
  342. fi
  343. if [ -f /dev/mapper/encrypted_usb ]; then
  344. rm -rf /dev/mapper/encrypted_usb
  345. fi
  346. cryptsetup luksClose encrypted_usb
  347. cryptsetup luksOpen $GPG_USB_DRIVE encrypted_usb
  348. if [ "$?" = "0" ]; then
  349. GPG_USB_DRIVE=/dev/mapper/encrypted_usb
  350. fi
  351. mount $GPG_USB_DRIVE $GPG_USB_MOUNT
  352. if [ ! "$?" = "0" ]; then
  353. if (( GPG_CTR > 0 )); then
  354. rm -rf $GPG_USB_MOUNT
  355. reconstruct_key
  356. return 0
  357. fi
  358. dialog --title "Encryption keys" \
  359. --msgbox "There was a problem mounting the USB drive to $GPG_USB_MOUNT" 6 70
  360. rm -rf $GPG_USB_MOUNT
  361. exit 74393
  362. fi
  363. if [ ! -d $GPG_USB_MOUNT/.gnupg ]; then
  364. if [ ! -d $GPG_USB_MOUNT/.gnupg_fragments ]; then
  365. if (( GPG_CTR > 0 )); then
  366. umount -f $GPG_USB_MOUNT
  367. rm -rf $GPG_USB_MOUNT
  368. reconstruct_key
  369. return 0
  370. fi
  371. dialog --title "Encryption keys" \
  372. --msgbox "The directory $GPG_USB_MOUNT/.gnupg or $GPG_USB_MOUNT/.gnupg_fragments was not found" 6 70
  373. umount -f $GPG_USB_MOUNT
  374. rm -rf $GPG_USB_MOUNT
  375. exit 723814
  376. fi
  377. fi
  378. if [ -d $GPG_USB_MOUNT/.gnupg ]; then
  379. if [ ! -d $HOME_DIR/.gnupg ]; then
  380. mkdir $HOME_DIR/.gnupg
  381. fi
  382. cp -r $GPG_USB_MOUNT/.gnupg/* $HOME_DIR/.gnupg
  383. GPG_LOADING="no"
  384. dialog --title "Encryption keys" \
  385. --msgbox "GPG Keyring loaded to $HOME_DIR" 6 70
  386. else
  387. if [ ! -d $HOME_DIR/.gnupg_fragments ]; then
  388. mkdir $HOME_DIR/.gnupg_fragments
  389. fi
  390. cp -r $GPG_USB_MOUNT/.gnupg_fragments/* $HOME_DIR/.gnupg_fragments
  391. fi
  392. if [[ $SSH_IMPORTED == "no" ]]; then
  393. if [ -d $GPG_USB_MOUNT/.ssh ]; then
  394. if [ ! -d $HOME_DIR/.ssh ]; then
  395. mkdir $HOME_DIR/.ssh
  396. fi
  397. cp $GPG_USB_MOUNT/.ssh/* $HOME_DIR/.ssh
  398. dialog --title "Encryption keys" \
  399. --msgbox "ssh keys imported" 6 70
  400. SSH_IMPORTED="yes"
  401. fi
  402. fi
  403. umount -f $GPG_USB_MOUNT
  404. rm -rf $GPG_USB_MOUNT
  405. if [[ $GPG_LOADING == "yes" ]]; then
  406. dialog --title "Encryption keys" \
  407. --msgbox "Now remove the USB drive. Insert the next drive containing a key fragment, or select Ok to finish" 6 70
  408. fi
  409. GPG_CTR=$((GPG_CTR + 1))
  410. done
  411. }
  412. function interactive_gpg {
  413. GPG_CONFIGURED="no"
  414. while [[ $GPG_CONFIGURED != "yes" ]]
  415. do
  416. GPG_CONFIGURED="yes"
  417. data=$(tempfile 2>/dev/null)
  418. trap "rm -f $data" 0 1 2 5 15
  419. dialog --backtitle "Freedombone Configuration" \
  420. --radiolist "GPG/PGP keys for your system:" 13 70 3 \
  421. 1 "Generate new keys (new user)" on \
  422. 2 "Import keys from USB drive/s" off \
  423. 3 "Retrieve keys from friends servers" off 2> $data
  424. sel=$?
  425. case $sel in
  426. 1) exit 1;;
  427. 255) exit 2;;
  428. esac
  429. case $(cat $data) in
  430. 1) return;;
  431. 2) interactive_gpg_from_usb
  432. return;;
  433. 3) interactive_gpg_from_remote
  434. if [ ! "$?" = "0" ]; then
  435. GPG_CONFIGURED="no"
  436. fi;;
  437. esac
  438. done
  439. }
  440. function interactive_configuration {
  441. # create a temporary copy of the configuration file
  442. # which can be used to pre-populate selections
  443. if [ -f $CONFIGURATION_FILE ]; then
  444. cp $CONFIGURATION_FILE temp.cfg
  445. fi
  446. 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."
  447. 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
  448. data=$(tempfile 2>/dev/null)
  449. trap "rm -f $data" 0 1 2 5 15
  450. dialog --backtitle "Freedombone Configuration" \
  451. --radiolist "Type of Installation:" 17 40 10 \
  452. 1 Full on \
  453. 2 Writer off \
  454. 3 Cloud off \
  455. 4 Chat off \
  456. 5 Mailbox off \
  457. 6 Non-Mailbox off \
  458. 7 Social off \
  459. 8 Media off \
  460. 9 Developer off \
  461. 10 Mesh off 2> $data
  462. sel=$?
  463. case $sel in
  464. 1) exit 1;;
  465. 255) exit 1;;
  466. esac
  467. case $(cat $data) in
  468. 1) SYSTEM_TYPE=$VARIANT_FULL;;
  469. 2) SYSTEM_TYPE=$VARIANT_WRITER;;
  470. 3) SYSTEM_TYPE=$VARIANT_CLOUD;;
  471. 4) SYSTEM_TYPE=$VARIANT_CHAT;;
  472. 5) SYSTEM_TYPE=$VARIANT_MAILBOX;;
  473. 6) SYSTEM_TYPE=$VARIANT_NONMAILBOX;;
  474. 7) SYSTEM_TYPE=$VARIANT_SOCIAL;;
  475. 8) SYSTEM_TYPE=$VARIANT_MEDIA;;
  476. 9) SYSTEM_TYPE=$VARIANT_DEVELOPER;;
  477. 10) SYSTEM_TYPE=$VARIANT_MESH;;
  478. esac
  479. save_configuration_file
  480. if [[ $SYSTEM_TYPE == "$VARIANT_MESH" ]]; then
  481. ENABLE_BATMAN="no"
  482. ENABLE_CJDNS="no"
  483. ENABLE_BABEL="no"
  484. data=$(tempfile 2>/dev/null)
  485. trap "rm -f $data" 0 1 2 5 15
  486. dialog --backtitle "Freedombone Configuration" \
  487. --radiolist "Select your type of mesh network:" 10 40 3 \
  488. 1 "Babel" off \
  489. 2 "B.A.T.M.A.N. Advanced" on \
  490. 3 "cjdns" off 2> $data
  491. sel=$?
  492. case $sel in
  493. 1) exit 1;;
  494. 255) exit 1;;
  495. esac
  496. case $(cat $data) in
  497. 1) ENABLE_BABEL="yes";;
  498. 2) ENABLE_BATMAN="yes";;
  499. 3) ENABLE_CJDNS="yes";;
  500. esac
  501. save_configuration_file
  502. data=$(tempfile 2>/dev/null)
  503. trap "rm -f $data" 0 1 2 5 15
  504. dialog --backtitle "Freedombone Configuration" \
  505. --inputbox "Wireless Mesh ESSID\n\nIf you press enter the default will be '$ESSID'" 10 40 "$(grep 'ESSID' temp.cfg | awk -F '=' '{print $2}')" 2> $data
  506. sel=$?
  507. case $sel in
  508. 0) ESSID=$(cat $data);;
  509. 1) exit 1;;
  510. 255) exit 1;;
  511. esac
  512. fi
  513. if [[ $ENABLE_BATMAN == "yes" ]]; then
  514. data=$(tempfile 2>/dev/null)
  515. trap "rm -f $data" 0 1 2 5 15
  516. dialog --backtitle "Freedombone Configuration" \
  517. --inputbox "Wireless Mesh cell ID\n\nIf you press enter the default will be $BATMAN_CELLID" 10 40 "$(grep 'BATMAN_CELLID' temp.cfg | awk -F '=' '{print $2}')" 2> $data
  518. sel=$?
  519. case $sel in
  520. 0) BATMAN_CELLID=$(cat $data);;
  521. 1) exit 1;;
  522. 255) exit 1;;
  523. esac
  524. fi
  525. data=$(tempfile 2>/dev/null)
  526. trap "rm -f $data" 0 1 2 5 15
  527. dialog --title "Select the user account to install as" \
  528. --backtitle "Freedombone Configuration" \
  529. --dselect "/home/$(grep 'MY_USERNAME' temp.cfg | awk -F '=' '{print $2}')" 14 40 2> $data
  530. sel=$?
  531. case $sel in
  532. 0) MY_USERNAME=$(cat $data | awk -F '/' '{print $3}');;
  533. 1) exit 1;;
  534. 255) exit 1;;
  535. esac
  536. if [ ! $MY_USERNAME ]; then
  537. echo 'No user account was selected'
  538. exit 64398
  539. fi
  540. if [[ $MY_USERNAME == '-f' ]]; then
  541. echo 'No user account was selected'
  542. exit 8347
  543. fi
  544. if [[ $MY_USERNAME == 'debian' ]]; then
  545. echo "Don't use the default debian user account"
  546. exit 9341
  547. fi
  548. if [ ! -d /home/$MY_USERNAME ]; then
  549. echo "The directory /home/$MY_USERNAME does not exist"
  550. exit 6437
  551. fi
  552. save_configuration_file
  553. if [[ $(grep "INSTALLING_ON_BBB" temp.cfg | awk -F '=' '{print $2}') == "yes" ]]; then
  554. dialog --title "Install Target" \
  555. --backtitle "Freedombone Configuration" \
  556. --yesno "\nAre you installing onto a Beaglebone Black?" 7 60
  557. else
  558. dialog --title "Install Target" \
  559. --backtitle "Freedombone Configuration" \
  560. --defaultno \
  561. --yesno "\nAre you installing onto a Beaglebone Black?" 7 60
  562. fi
  563. sel=$?
  564. case $sel in
  565. 0) INSTALLING_ON_BBB="yes";;
  566. 1) INSTALLING_ON_BBB="no";;
  567. 255) exit 1;;
  568. esac
  569. if [[ $INSTALLING_ON_BBB == "yes" ]]; then
  570. USB_DRIVE=/dev/sda1
  571. fi
  572. save_configuration_file
  573. if [[ $SYSTEM_TYPE != "$VARIANT_MESH" ]]; then
  574. interactive_gpg
  575. data=$(tempfile 2>/dev/null)
  576. trap "rm -f $data" 0 1 2 5 15
  577. SOCIAL_KEY_STR="\nDo you wish to enable social key management, otherwise known as \"the unforgettable key\"?\n\nThis means that fragments of your GPG key will be included with any remote backups so that if you later lose your key then it can be reconstructed from your friends servers. If you select \"no\" then you can still do social key management, but offline using physical USB thumb drives, which is more secure but less convenient."
  578. if [[ $(grep "ENABLE_SOCIAL_KEY_MANAGEMENT" temp.cfg | awk -F '=' '{print $2}') == "yes" ]]; then
  579. dialog --title "Social Key Management" \
  580. --backtitle "Freedombone Configuration" \
  581. --yesno "$SOCIAL_KEY_STR" 15 60
  582. else
  583. dialog --title "Social Key Management" \
  584. --backtitle "Freedombone Configuration" \
  585. --defaultno \
  586. --yesno "$SOCIAL_KEY_STR" 15 60
  587. fi
  588. sel=$?
  589. case $sel in
  590. 0) ENABLE_SOCIAL_KEY_MANAGEMENT="yes";;
  591. 255) exit 1;;
  592. esac
  593. save_configuration_file
  594. fi
  595. data=$(tempfile 2>/dev/null)
  596. trap "rm -f $data" 0 1 2 5 15
  597. if [[ $INSTALLING_ON_BBB == "no" ]]; then
  598. dialog --backtitle "Freedombone Configuration" \
  599. --radiolist "Type of Random Number Generator:" 10 40 3 \
  600. 1 Haveged on \
  601. 2 "Beaglebone built-in HRNG" off \
  602. 3 OneRNG off 2> $data
  603. else
  604. dialog --backtitle "Freedombone Configuration" \
  605. --radiolist "Type of Random Number Generator:" 10 40 3 \
  606. 1 Haveged off \
  607. 2 "Beaglebone built-in HRNG" on \
  608. 3 OneRNG off 2> $data
  609. fi
  610. sel=$?
  611. case $sel in
  612. 1) exit 1;;
  613. 255) exit 1;;
  614. esac
  615. case $(cat $data) in
  616. 2) HWRNG_TYPE="beaglebone";;
  617. 3) HWRNG_TYPE="onerng"
  618. dialog --title "OneRNG Device" \
  619. --msgbox "Please ensure that the OneRNG device is disconnected. You can reconnect it later during the installation" 8 60
  620. ;;
  621. 255) exit 1;;
  622. esac
  623. save_configuration_file
  624. data=$(tempfile 2>/dev/null)
  625. trap "rm -f $data" 0 1 2 5 15
  626. dialog --backtitle "Freedombone Configuration" \
  627. --radiolist "Where to download Debian packages from:" 25 45 49 \
  628. 1 "Australia" off \
  629. 2 "Austria" off \
  630. 3 "Belarus" off \
  631. 4 "Belgium" off \
  632. 5 "Bosnia and Herzegovina" off \
  633. 6 "Brazil" off \
  634. 7 "Bulgaria" off \
  635. 8 "Canada" off \
  636. 9 "Chile" off \
  637. 10 "China" off \
  638. 11 "Croatia" off \
  639. 12 "Czech Republic" off \
  640. 13 "Denmark" off \
  641. 14 "El Salvador" off \
  642. 15 "Estonia" off \
  643. 16 "Finland" off \
  644. 17 "France 1" off \
  645. 18 "France 2" off \
  646. 19 "Germany 1" off \
  647. 20 "Germany 2" off \
  648. 21 "Greece" off \
  649. 22 "Hungary" off \
  650. 23 "Iceland" off \
  651. 24 "Iran" off \
  652. 25 "Ireland" off \
  653. 26 "Italy" off \
  654. 27 "Japan" off \
  655. 28 "Korea" off \
  656. 29 "Lithuania" off \
  657. 30 "Mexico" off \
  658. 31 "Netherlands" off \
  659. 32 "New Caledonia" off \
  660. 33 "New Zealand" off \
  661. 34 "Norway" off \
  662. 35 "Poland" off \
  663. 36 "Portugal" off \
  664. 37 "Romania" off \
  665. 38 "Russia" off \
  666. 39 "Slovakia" off \
  667. 40 "Slovenia" off \
  668. 41 "Spain" off \
  669. 42 "Sweden" off \
  670. 43 "Switzerland" off \
  671. 44 "Taiwan" off \
  672. 45 "Thailand" off \
  673. 46 "Turkey" off \
  674. 47 "Ukraine" off \
  675. 48 "United Kingdom" off \
  676. 49 "United States" on 2> $data
  677. sel=$?
  678. case $sel in
  679. 1) exit 1;;
  680. 255) exit 1;;
  681. esac
  682. case $(cat $data) in
  683. 1) DEBIAN_REPO='ftp.au.debian.org';;
  684. 2) DEBIAN_REPO='ftp.at.debian.org';;
  685. 3) DEBIAN_REPO='ftp.by.debian.org';;
  686. 4) DEBIAN_REPO='ftp.be.debian.org';;
  687. 5) DEBIAN_REPO='ftp.ba.debian.org';;
  688. 6) DEBIAN_REPO='ftp.br.debian.org';;
  689. 7) DEBIAN_REPO='ftp.bg.debian.org';;
  690. 8) DEBIAN_REPO='ftp.ca.debian.org';;
  691. 9) DEBIAN_REPO='ftp.cl.debian.org';;
  692. 10) DEBIAN_REPO='ftp.cn.debian.org';;
  693. 11) DEBIAN_REPO='ftp.hr.debian.org';;
  694. 12) DEBIAN_REPO='ftp.cz.debian.org';;
  695. 13) DEBIAN_REPO='ftp.dk.debian.org';;
  696. 14) DEBIAN_REPO='ftp.sv.debian.org';;
  697. 15) DEBIAN_REPO='ftp.ee.debian.org';;
  698. 16) DEBIAN_REPO='ftp.fi.debian.org';;
  699. 17) DEBIAN_REPO='ftp2.fr.debian.org';;
  700. 18) DEBIAN_REPO='ftp.fr.debian.org';;
  701. 19) DEBIAN_REPO='ftp2.de.debian.org';;
  702. 20) DEBIAN_REPO='ftp.de.debian.org';;
  703. 21) DEBIAN_REPO='ftp.gr.debian.org';;
  704. 22) DEBIAN_REPO='ftp.hu.debian.org';;
  705. 23) DEBIAN_REPO='ftp.is.debian.org';;
  706. 24) DEBIAN_REPO='ftp.ir.debian.org';;
  707. 25) DEBIAN_REPO='ftp.ie.debian.org';;
  708. 26) DEBIAN_REPO='ftp.it.debian.org';;
  709. 27) DEBIAN_REPO='ftp.jp.debian.org';;
  710. 28) DEBIAN_REPO='ftp.kr.debian.org';;
  711. 29) DEBIAN_REPO='ftp.lt.debian.org';;
  712. 30) DEBIAN_REPO='ftp.mx.debian.org';;
  713. 31) DEBIAN_REPO='ftp.nl.debian.org';;
  714. 32) DEBIAN_REPO='ftp.nc.debian.org';;
  715. 33) DEBIAN_REPO='ftp.nz.debian.org';;
  716. 34) DEBIAN_REPO='ftp.no.debian.org';;
  717. 35) DEBIAN_REPO='ftp.pl.debian.org';;
  718. 36) DEBIAN_REPO='ftp.pt.debian.org';;
  719. 37) DEBIAN_REPO='ftp.ro.debian.org';;
  720. 38) DEBIAN_REPO='ftp.ru.debian.org';;
  721. 39) DEBIAN_REPO='ftp.sk.debian.org';;
  722. 40) DEBIAN_REPO='ftp.si.debian.org';;
  723. 41) DEBIAN_REPO='ftp.es.debian.org';;
  724. 42) DEBIAN_REPO='ftp.se.debian.org';;
  725. 43) DEBIAN_REPO='ftp.ch.debian.org';;
  726. 44) DEBIAN_REPO='ftp.tw.debian.org';;
  727. 45) DEBIAN_REPO='ftp.th.debian.org';;
  728. 46) DEBIAN_REPO='ftp.tr.debian.org';;
  729. 47) DEBIAN_REPO='ftp.ua.debian.org';;
  730. 48) DEBIAN_REPO='ftp.uk.debian.org';;
  731. 49) DEBIAN_REPO='ftp.us.debian.org';;
  732. 255) exit 1;;
  733. esac
  734. save_configuration_file
  735. data=$(tempfile 2>/dev/null)
  736. trap "rm -f $data" 0 1 2 5 15
  737. dialog --backtitle "Freedombone Configuration" \
  738. --radiolist "Pick a domain name service (DNS):" 25 50 16 \
  739. 1 "Digital Courage" on \
  740. 2 "German Privacy Foundation 1" off \
  741. 3 "German Privacy Foundation 2" off \
  742. 4 "Chaos Computer Club" off \
  743. 5 "ClaraNet" off \
  744. 6 "OpenNIC 1" off \
  745. 7 "OpenNIC 2" off \
  746. 8 "OpenNIC 3" off \
  747. 9 "OpenNIC 4" off \
  748. 10 "OpenNIC 5" off \
  749. 11 "OpenNIC 6" off \
  750. 12 "OpenNIC 7" off \
  751. 13 "PowerNS" off \
  752. 14 "ValiDOM" off \
  753. 15 "Freie Unzensierte" off \
  754. 16 "Google" off 2> $data
  755. sel=$?
  756. case $sel in
  757. 1) exit 1;;
  758. 255) exit 1;;
  759. esac
  760. case $(cat $data) in
  761. 1) NAMESERVER1='85.214.73.63'
  762. NAMESERVER2='213.73.91.35'
  763. ;;
  764. 2) NAMESERVER1='87.118.100.175'
  765. NAMESERVER2='94.75.228.29'
  766. ;;
  767. 3) NAMESERVER1='85.25.251.254'
  768. NAMESERVER2='2.141.58.13'
  769. ;;
  770. 4) NAMESERVER1='213.73.91.35'
  771. NAMESERVER2='85.214.73.63'
  772. ;;
  773. 5) NAMESERVER1='212.82.225.7'
  774. NAMESERVER2='212.82.226.212'
  775. ;;
  776. 6) NAMESERVER1='58.6.115.42'
  777. NAMESERVER2='58.6.115.43'
  778. ;;
  779. 7) NAMESERVER1='119.31.230.42'
  780. NAMESERVER2='200.252.98.162'
  781. ;;
  782. 8) NAMESERVER1='217.79.186.148'
  783. NAMESERVER2='81.89.98.6'
  784. ;;
  785. 9) NAMESERVER1='78.159.101.37'
  786. NAMESERVER2='203.167.220.153'
  787. ;;
  788. 10) NAMESERVER1='82.229.244.191'
  789. NAMESERVER2='82.229.244.191'
  790. ;;
  791. 11) NAMESERVER1='216.87.84.211'
  792. NAMESERVER2='66.244.95.20'
  793. ;;
  794. 12) NAMESERVER1='207.192.69.155'
  795. NAMESERVER2='72.14.189.120'
  796. ;;
  797. 13) NAMESERVER1='194.145.226.26'
  798. NAMESERVER2='77.220.232.44'
  799. ;;
  800. 14) NAMESERVER1='78.46.89.147'
  801. NAMESERVER2='88.198.75.145'
  802. ;;
  803. 15) NAMESERVER1='85.25.149.144'
  804. NAMESERVER2='87.106.37.196'
  805. ;;
  806. 16) NAMESERVER1='8.8.8.8'
  807. NAMESERVER2='4.4.4.4'
  808. ;;
  809. 255) exit 1;;
  810. esac
  811. save_configuration_file
  812. if [[ $SYSTEM_TYPE != "$VARIANT_MESH" ]]; then
  813. data=$(tempfile 2>/dev/null)
  814. trap "rm -f $data" 0 1 2 5 15
  815. dialog --backtitle "Freedombone Configuration" \
  816. --radiolist "Choose Dynamic DNS provider:" 15 40 14 \
  817. 1 dyndns off \
  818. 2 freedns on \
  819. 3 zoneedit off \
  820. 4 no-ip off \
  821. 5 easydns off \
  822. 6 tzo off \
  823. 7 3322 off \
  824. 8 dnsomatic off \
  825. 9 tunnelbroker off \
  826. 10 dns.he.net off \
  827. 11 dynsip off \
  828. 12 sitelutions off \
  829. 13 dnsexit off \
  830. 14 changeip off 2> $data
  831. sel=$?
  832. case $sel in
  833. 1) exit 1;;
  834. 255) exit 1;;
  835. esac
  836. case $(cat $data) in
  837. 1) DDNS_PROVIDER="default@dyndns.org";;
  838. 2) DDNS_PROVIDER="default@freedns.afraid.org";;
  839. 3) DDNS_PROVIDER="default@zoneedit.com";;
  840. 4) DDNS_PROVIDER="default@no-ip.com";;
  841. 5) DDNS_PROVIDER="default@easydns.com";;
  842. 6) DDNS_PROVIDER="default@tzo.com";;
  843. 7) DDNS_PROVIDER="dyndns@3322.org";;
  844. 8) DDNS_PROVIDER="default@dnsomatic.com";;
  845. 9) DDNS_PROVIDER="ipv6tb@he.net";;
  846. 10) DDNS_PROVIDER="dyndns@he.net";;
  847. 11) DDNS_PROVIDER="default@dynsip.org";;
  848. 12) DDNS_PROVIDER="default@sitelutions.com";;
  849. 13) DDNS_PROVIDER="default@dnsexit.com";;
  850. 14) DDNS_PROVIDER="default@changeip.com";;
  851. 255) exit 1;;
  852. esac
  853. save_configuration_file
  854. while [ ! $DDNS_USERNAME ]
  855. do
  856. data=$(tempfile 2>/dev/null)
  857. trap "rm -f $data" 0 1 2 5 15
  858. dialog --backtitle "Freedombone Configuration" \
  859. --inputbox "Dynamic DNS provider username" 10 30 "$(grep 'DDNS_USERNAME' temp.cfg | awk -F '=' '{print $2}')" 2> $data
  860. sel=$?
  861. case $sel in
  862. 0) DDNS_USERNAME=$(cat $data);;
  863. 1) exit 1;;
  864. 255) exit 1;;
  865. esac
  866. done
  867. save_configuration_file
  868. while [ ! $DDNS_PASSWORD ]
  869. do
  870. data=$(tempfile 2>/dev/null)
  871. trap "rm -f $data" 0 1 2 5 15
  872. dialog --backtitle "Freedombone Configuration" \
  873. --clear \
  874. --insecure \
  875. --passwordbox "Dynamic DNS provider password" 10 30 "$(grep 'DDNS_PASSWORD' temp.cfg | awk -F '=' '{print $2}')" 2> $data
  876. sel=$?
  877. case $sel in
  878. 0) DDNS_PASSWORD=$(cat $data);;
  879. 1) exit 1;;
  880. 255) exit 1;;
  881. esac
  882. if [ ${#DDNS_PASSWORD} -lt $MINIMUM_PASSWORD_LENGTH ]; then
  883. 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
  884. DDNS_PASSWORD=""
  885. fi
  886. done
  887. save_configuration_file
  888. fi
  889. while [ ! $MY_NAME ]
  890. do
  891. data=$(tempfile 2>/dev/null)
  892. trap "rm -f $data" 0 1 2 5 15
  893. dialog --backtitle "Freedombone Configuration" \
  894. --inputbox "Your full name (or nick)" 10 30 "$(grep 'MY_NAME' temp.cfg | awk -F '=' '{print $2}')" 2> $data
  895. sel=$?
  896. case $sel in
  897. 0) MY_NAME=$(cat $data);;
  898. 1) exit 1;;
  899. 255) exit 1;;
  900. esac
  901. done
  902. save_configuration_file
  903. if [ ! $LOCAL_NETWORK_STATIC_IP_ADDRESS ]; then
  904. LOCAL_NETWORK_STATIC_IP_ADDRESS=$(grep 'LOCAL_NETWORK_STATIC_IP_ADDRESS' temp.cfg | awk -F '=' '{print $2}')
  905. if [ ! $LOCAL_NETWORK_STATIC_IP_ADDRESS ]; then
  906. LOCAL_NETWORK_STATIC_IP_ADDRESS='192.168..'
  907. fi
  908. fi
  909. if [ ! $ROUTER_IP_ADDRESS ]; then
  910. ROUTER_IP_ADDRESS=$(grep 'ROUTER_IP_ADDRESS' temp.cfg | awk -F '=' '{print $2}')
  911. if [ ! $ROUTER_IP_ADDRESS ]; then
  912. ROUTER_IP_ADDRESS='192.168..'
  913. fi
  914. fi
  915. data=$(tempfile 2>/dev/null)
  916. trap "rm -f $data" 0 1 2 5 15
  917. dialog --backtitle "Freedombone Configuration" \
  918. --title "Local Network Configuration" \
  919. --form "\nPlease enter the IP addresses:" 11 55 3 \
  920. "This system:" 1 1 "$LOCAL_NETWORK_STATIC_IP_ADDRESS" 1 16 16 15 \
  921. "Internet router:" 2 1 "$ROUTER_IP_ADDRESS" 2 16 16 15 \
  922. 2> $data
  923. sel=$?
  924. case $sel in
  925. 1) exit 1;;
  926. 255) exit 1;;
  927. esac
  928. LOCAL_NETWORK_STATIC_IP_ADDRESS=$(cat $data | sed -n 1p)
  929. ROUTER_IP_ADDRESS=$(cat $data | sed -n 2p)
  930. save_configuration_file
  931. if [[ $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_FULL" ]]; then
  932. WIKI_DETAILS_COMPLETE=
  933. while [ ! $WIKI_DETAILS_COMPLETE ]
  934. do
  935. data=$(tempfile 2>/dev/null)
  936. trap "rm -f $data" 0 1 2 5 15
  937. if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then
  938. dialog --backtitle "Freedombone Configuration" \
  939. --title "Wiki Configuration" \
  940. --form "\nPlease enter your wiki details:" 11 55 4 \
  941. "Title:" 1 1 "$(grep 'WIKI_TITLE' temp.cfg | awk -F '=' '{print $2}')" 1 16 25 40 \
  942. "Domain:" 2 1 "$(grep 'WIKI_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 2 16 25 40 \
  943. "Code:" 3 1 "$(grep 'WIKI_CODE' temp.cfg | awk -F '=' '{print $2}')" 3 16 25 40 \
  944. 2> $data
  945. else
  946. dialog --backtitle "Freedombone Configuration" \
  947. --title "Wiki Configuration" \
  948. --form "\nPlease enter your wiki details:" 11 55 3 \
  949. "Title:" 1 1 "$(grep 'WIKI_TITLE' temp.cfg | awk -F '=' '{print $2}')" 1 16 25 40 \
  950. "Domain:" 2 1 "$(grep 'WIKI_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 2 16 25 40 \
  951. 2> $data
  952. fi
  953. sel=$?
  954. case $sel in
  955. 1) exit 1;;
  956. 255) exit 1;;
  957. esac
  958. WIKI_TITLE=$(cat $data | sed -n 1p)
  959. WIKI_DOMAIN_NAME=$(cat $data | sed -n 2p)
  960. if [ $WIKI_DOMAIN_NAME ]; then
  961. TEST_DOMAIN_NAME=$WIKI_DOMAIN_NAME
  962. validate_domain_name
  963. if [[ $TEST_DOMAIN_NAME != $WIKI_DOMAIN_NAME ]]; then
  964. WIKI_DOMAIN_NAME=
  965. dialog --title "Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50
  966. else
  967. if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then
  968. WIKI_CODE=$(cat $data | sed -n 3p)
  969. if [ ${#WIKI_CODE} -lt 30 ]; then
  970. WIKI_DOMAIN_NAME=
  971. dialog --title "FreeDNS code" --msgbox "$FREEDNS_MESSAGE" 15 50
  972. fi
  973. fi
  974. fi
  975. fi
  976. if [ $WIKI_DOMAIN_NAME ]; then
  977. WIKI_DETAILS_COMPLETE="yes"
  978. fi
  979. done
  980. save_configuration_file
  981. fi
  982. if [[ $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_FULL" ]]; then
  983. FULLBLOG_DETAILS_COMPLETE=
  984. while [ ! $FULLBLOG_DETAILS_COMPLETE ]
  985. do
  986. data=$(tempfile 2>/dev/null)
  987. trap "rm -f $data" 0 1 2 5 15
  988. if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then
  989. dialog --backtitle "Freedombone Configuration" \
  990. --title "Blog Configuration" \
  991. --form "\nPlease enter your blog details:" 11 55 4 \
  992. "Title:" 1 1 "$(grep 'MY_BLOG_TITLE' temp.cfg | awk -F '=' '{print $2}')" 1 16 25 30 \
  993. "Domain:" 2 1 "$(grep 'FULLBLOG_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 2 16 25 30 \
  994. "Code:" 3 1 "$(grep 'FULLBLOG_CODE' temp.cfg | awk -F '=' '{print $2}')" 3 16 25 30 \
  995. 2> $data
  996. else
  997. dialog --backtitle "Freedombone Configuration" \
  998. --title "Blog Configuration" \
  999. --form "\nPlease enter your blog details:" 11 55 3 \
  1000. "Title:" 1 1 "$(grep 'MY_BLOG_TITLE' temp.cfg | awk -F '=' '{print $2}')" 1 16 25 30 \
  1001. "Domain:" 2 1 "$(grep 'FULLBLOG_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 2 16 25 30 \
  1002. 2> $data
  1003. fi
  1004. sel=$?
  1005. case $sel in
  1006. 1) exit 1;;
  1007. 255) exit 1;;
  1008. esac
  1009. MY_BLOG_TITLE=$(cat $data | sed -n 1p)
  1010. FULLBLOG_DOMAIN_NAME=$(cat $data | sed -n 2p)
  1011. if [ $FULLBLOG_DOMAIN_NAME ]; then
  1012. if [[ $FULLBLOG_DOMAIN_NAME == "$WIKI_DOMAIN_NAME" ]]; then
  1013. FULLBLOG_DOMAIN_NAME=""
  1014. fi
  1015. TEST_DOMAIN_NAME=$FULLBLOG_DOMAIN_NAME
  1016. validate_domain_name
  1017. if [[ $TEST_DOMAIN_NAME != $FULLBLOG_DOMAIN_NAME ]]; then
  1018. FULLBLOG_DOMAIN_NAME=
  1019. dialog --title "Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50
  1020. else
  1021. if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then
  1022. FULLBLOG_CODE=$(cat $data | sed -n 3p)
  1023. if [ ${#FULLBLOG_CODE} -lt 30 ]; then
  1024. FULLBLOG_DOMAIN_NAME=
  1025. dialog --title "FreeDNS code" --msgbox "$FREEDNS_MESSAGE" 15 50
  1026. fi
  1027. fi
  1028. fi
  1029. fi
  1030. if [ $FULLBLOG_DOMAIN_NAME ]; then
  1031. FULLBLOG_DETAILS_COMPLETE="yes"
  1032. fi
  1033. done
  1034. save_configuration_file
  1035. fi
  1036. if [[ $SYSTEM_TYPE == "$VARIANT_CLOUD" || $SYSTEM_TYPE == "$VARIANT_FULL" ]]; then
  1037. OWNCLOUD_DETAILS_COMPLETE=
  1038. while [ ! $OWNCLOUD_DETAILS_COMPLETE ]
  1039. do
  1040. data=$(tempfile 2>/dev/null)
  1041. trap "rm -f $data" 0 1 2 5 15
  1042. if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then
  1043. dialog --backtitle "Freedombone Configuration" \
  1044. --title "Owncloud Configuration" \
  1045. --form "\nPlease enter your Owncloud details:" 11 55 3 \
  1046. "Domain:" 1 1 "$(grep 'OWNCLOUD_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 1 16 25 30 \
  1047. "Code:" 2 1 "$(grep 'OWNCLOUD_CODE' temp.cfg | awk -F '=' '{print $2}')" 2 16 25 30 \
  1048. 2> $data
  1049. else
  1050. dialog --backtitle "Freedombone Configuration" \
  1051. --title "Owncloud Configuration" \
  1052. --form "\nPlease enter your Owncloud details:" 11 55 3 \
  1053. "Domain:" 1 1 "$(grep 'OWNCLOUD_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 1 16 25 30 \
  1054. 2> $data
  1055. fi
  1056. sel=$?
  1057. case $sel in
  1058. 1) exit 1;;
  1059. 255) exit 1;;
  1060. esac
  1061. OWNCLOUD_DOMAIN_NAME=$(cat $data | sed -n 1p)
  1062. if [ $OWNCLOUD_DOMAIN_NAME ]; then
  1063. TEST_DOMAIN_NAME=$OWNCLOUD_DOMAIN_NAME
  1064. validate_domain_name
  1065. if [[ $TEST_DOMAIN_NAME != $OWNCLOUD_DOMAIN_NAME ]]; then
  1066. OWNCLOUD_DOMAIN_NAME=
  1067. dialog --title "Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50
  1068. else
  1069. if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then
  1070. OWNCLOUD_CODE=$(cat $data | sed -n 2p)
  1071. if [ ${#OWNCLOUD_CODE} -lt 30 ]; then
  1072. OWNCLOUD_DOMAIN_NAME=
  1073. dialog --title "FreeDNS code" --msgbox "$FREEDNS_MESSAGE" 15 50
  1074. fi
  1075. fi
  1076. fi
  1077. fi
  1078. if [ $OWNCLOUD_DOMAIN_NAME ]; then
  1079. OWNCLOUD_DETAILS_COMPLETE="yes"
  1080. fi
  1081. done
  1082. save_configuration_file
  1083. fi
  1084. if [[ $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_FULL" ]]; then
  1085. REDMATRIX_DETAILS_COMPLETE=
  1086. while [ ! $REDMATRIX_DETAILS_COMPLETE ]
  1087. do
  1088. data=$(tempfile 2>/dev/null)
  1089. trap "rm -f $data" 0 1 2 5 15
  1090. if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then
  1091. dialog --backtitle "Freedombone Configuration" \
  1092. --title "RedMatrix Configuration" \
  1093. --form "\nPlease enter your RedMatrix details:" 11 55 3 \
  1094. "Domain:" 1 1 "$(grep 'REDMATRIX_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 1 16 25 30 \
  1095. "Code:" 2 1 "$(grep 'REDMATRIX_CODE' temp.cfg | awk -F '=' '{print $2}')" 2 16 25 30 \
  1096. 2> $data
  1097. else
  1098. dialog --backtitle "Freedombone Configuration" \
  1099. --title "RedMatrix Configuration" \
  1100. --form "\nPlease enter your RedMatrix details:" 11 55 3 \
  1101. "Domain:" 1 1 "$(grep 'REDMATRIX_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 1 16 25 30 \
  1102. 2> $data
  1103. fi
  1104. sel=$?
  1105. case $sel in
  1106. 1) exit 1;;
  1107. 255) exit 1;;
  1108. esac
  1109. REDMATRIX_DOMAIN_NAME=$(cat $data | sed -n 1p)
  1110. if [ $REDMATRIX_DOMAIN_NAME ]; then
  1111. TEST_DOMAIN_NAME=$REDMATRIX_DOMAIN_NAME
  1112. validate_domain_name
  1113. if [[ $TEST_DOMAIN_NAME != $REDMATRIX_DOMAIN_NAME ]]; then
  1114. REDMATRIX_DOMAIN_NAME=
  1115. dialog --title "Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50
  1116. else
  1117. if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then
  1118. REDMATRIX_CODE=$(cat $data | sed -n 2p)
  1119. if [ ${#REDMATRIX_CODE} -lt 30 ]; then
  1120. REDMATRIX_DOMAIN_NAME=
  1121. dialog --title "FreeDNS code" --msgbox "$FREEDNS_MESSAGE" 15 50
  1122. fi
  1123. fi
  1124. fi
  1125. fi
  1126. if [ $REDMATRIX_DOMAIN_NAME ]; then
  1127. REDMATRIX_DETAILS_COMPLETE="yes"
  1128. fi
  1129. done
  1130. save_configuration_file
  1131. fi
  1132. if [[ $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_FULL" ]]; then
  1133. MICROBLOG_DETAILS_COMPLETE=
  1134. while [ ! $MICROBLOG_DETAILS_COMPLETE ]
  1135. do
  1136. data=$(tempfile 2>/dev/null)
  1137. trap "rm -f $data" 0 1 2 5 15
  1138. if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then
  1139. dialog --backtitle "Freedombone Configuration" \
  1140. --title "Microblog Configuration" \
  1141. --form "\nPlease enter your Microblog details:" 11 55 3 \
  1142. "Domain:" 1 1 "$(grep 'MICROBLOG_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 1 16 25 30 \
  1143. "Code:" 2 1 "$(grep 'MICROBLOG_CODE' temp.cfg | awk -F '=' '{print $2}')" 2 16 25 30 \
  1144. 2> $data
  1145. else
  1146. dialog --backtitle "Freedombone Configuration" \
  1147. --title "Microblog Configuration" \
  1148. --form "\nPlease enter your Microblog details:" 11 55 3 \
  1149. "Domain:" 1 1 "$(grep 'MICROBLOG_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 1 16 25 30 \
  1150. 2> $data
  1151. fi
  1152. sel=$?
  1153. case $sel in
  1154. 1) exit 1;;
  1155. 255) exit 1;;
  1156. esac
  1157. MICROBLOG_DOMAIN_NAME=$(cat $data | sed -n 1p)
  1158. if [ $MICROBLOG_DOMAIN_NAME ]; then
  1159. if [[ $MICROBLOG_DOMAIN_NAME == "$REDMATRIX_DOMAIN_NAME" ]]; then
  1160. MICROBLOG_DOMAIN_NAME=""
  1161. fi
  1162. TEST_DOMAIN_NAME=$MICROBLOG_DOMAIN_NAME
  1163. validate_domain_name
  1164. if [[ $TEST_DOMAIN_NAME != $MICROBLOG_DOMAIN_NAME ]]; then
  1165. MICROBLOG_DOMAIN_NAME=
  1166. dialog --title "Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50
  1167. else
  1168. if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then
  1169. MICROBLOG_CODE=$(cat $data | sed -n 2p)
  1170. if [ ${#MICROBLOG_CODE} -lt 30 ]; then
  1171. MICROBLOG_DOMAIN_NAME=
  1172. dialog --title "FreeDNS code" --msgbox "$FREEDNS_MESSAGE" 15 50
  1173. fi
  1174. fi
  1175. fi
  1176. fi
  1177. if [ $MICROBLOG_DOMAIN_NAME ]; then
  1178. MICROBLOG_DETAILS_COMPLETE="yes"
  1179. fi
  1180. done
  1181. save_configuration_file
  1182. fi
  1183. if [[ $SYSTEM_TYPE == "$VARIANT_DEVELOPER" || $SYSTEM_TYPE == "$VARIANT_FULL" ]]; then
  1184. DEVELOPER_DETAILS_COMPLETE=
  1185. while [ ! $DEVELOPER_DETAILS_COMPLETE ]
  1186. do
  1187. data=$(tempfile 2>/dev/null)
  1188. trap "rm -f $data" 0 1 2 5 15
  1189. if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then
  1190. dialog --backtitle "Freedombone Configuration" \
  1191. --title "Developer Configuration" \
  1192. --form "\nPlease enter your Git hosting site details.\nIf You don't need developer tools then just select Ok" 11 55 3 \
  1193. "Domain:" 1 1 "$(grep 'GIT_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 1 16 25 40 \
  1194. "Code:" 2 1 "$(grep 'GIT_CODE' temp.cfg | awk -F '=' '{print $2}')" 2 16 25 40 \
  1195. 2> $data
  1196. else
  1197. dialog --backtitle "Freedombone Configuration" \
  1198. --title "Developer Configuration" \
  1199. --form "\nPlease enter your Git hosting site details.\nIf You don't need developer tools then just select Ok" 11 55 2 \
  1200. "Domain:" 1 1 "$(grep 'GIT_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 1 16 25 40 \
  1201. 2> $data
  1202. fi
  1203. sel=$?
  1204. case $sel in
  1205. 1) exit 1;;
  1206. 255) exit 1;;
  1207. esac
  1208. GIT_DOMAIN_NAME=$(cat $data | sed -n 1p)
  1209. if [ $GIT_DOMAIN_NAME ]; then
  1210. TEST_DOMAIN_NAME=$GIT_DOMAIN_NAME
  1211. validate_domain_name
  1212. if [[ $TEST_DOMAIN_NAME != $GIT_DOMAIN_NAME ]]; then
  1213. GIT_DOMAIN_NAME=
  1214. dialog --title "Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50
  1215. else
  1216. if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then
  1217. GIT_CODE=$(cat $data | sed -n 2p)
  1218. if [ ${#GIT_CODE} -lt 30 ]; then
  1219. GIT_DOMAIN_NAME=
  1220. dialog --title "FreeDNS code" --msgbox "$FREEDNS_MESSAGE" 15 50
  1221. fi
  1222. fi
  1223. fi
  1224. else
  1225. DEVELOPER_DETAILS_COMPLETE="yes"
  1226. fi
  1227. if [ $GIT_DOMAIN_NAME ]; then
  1228. DEVELOPER_DETAILS_COMPLETE="yes"
  1229. fi
  1230. done
  1231. save_configuration_file
  1232. fi
  1233. if [[ $SYSTEM_TYPE != "$VARIANT_MESH" ]]; then
  1234. DEFAULT_DOMAIN_DETAILS_COMPLETE=
  1235. while [ ! $DEFAULT_DOMAIN_DETAILS_COMPLETE ]
  1236. do
  1237. data=$(tempfile 2>/dev/null)
  1238. trap "rm -f $data" 0 1 2 5 15
  1239. if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then
  1240. dialog --backtitle "Freedombone Configuration" \
  1241. --title "Default Domain" \
  1242. --form "\nWhich domain name should your email/XMPP/IRC/VoIP be associated with?" 11 55 3 \
  1243. "Domain:" 1 1 "$(grep 'DEFAULT_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 1 16 25 30 \
  1244. "Code:" 2 1 "$(grep 'DEFAULT_DOMAIN_CODE' temp.cfg | awk -F '=' '{print $2}')" 2 16 25 30 \
  1245. 2> $data
  1246. sel=$?
  1247. case $sel in
  1248. 1) exit 1;;
  1249. 255) exit 1;;
  1250. esac
  1251. DEFAULT_DOMAIN_NAME=$(cat $data | sed -n 1p)
  1252. DEFAULT_DOMAIN_CODE=$(cat $data | sed -n 2p)
  1253. if [ $DEFAULT_DOMAIN_NAME ]; then
  1254. if [ ${#DEFAULT_DOMAIN_CODE} -lt 30 ]; then
  1255. DEFAULT_DOMAIN_NAME=
  1256. dialog --title "FreeDNS code" --msgbox "$FREEDNS_MESSAGE" 15 50
  1257. fi
  1258. fi
  1259. else
  1260. dialog --backtitle "Freedombone Configuration" \
  1261. --inputbox "Which domain name should your email/XMPP/IRC/VoIP be associated with?" 10 45 \
  1262. "$(grep 'DEFAULT_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 2> $data
  1263. sel=$?
  1264. case $sel in
  1265. 0) DEFAULT_DOMAIN_NAME=$(cat $data);;
  1266. 1) exit 1;;
  1267. 255) exit 1;;
  1268. esac
  1269. fi
  1270. if [ $DEFAULT_DOMAIN_NAME ]; then
  1271. TEST_DOMAIN_NAME=$DEFAULT_DOMAIN_NAME
  1272. validate_domain_name
  1273. if [[ $TEST_DOMAIN_NAME != $DEFAULT_DOMAIN_NAME ]]; then
  1274. DEFAULT_DOMAIN_NAME=
  1275. dialog --title "Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50
  1276. else
  1277. DEFAULT_DOMAIN_DETAILS_COMPLETE="yes"
  1278. fi
  1279. fi
  1280. done
  1281. save_configuration_file
  1282. while [ ${#MY_EMAIL_ADDRESS} -lt 5 ]
  1283. do
  1284. EMAIL_ADDRESS=$(grep 'MY_EMAIL_ADDRESS' temp.cfg | awk -F '=' '{print $2}')
  1285. if [ ! $EMAIL_ADDRESS ]; then
  1286. EMAIL_ADDRESS=$MY_USERNAME@$DEFAULT_DOMAIN_NAME
  1287. fi
  1288. if [ ${#MY_EMAIL_ADDRESS} -lt 5 ]; then
  1289. EMAIL_ADDRESS=$MY_USERNAME@$DEFAULT_DOMAIN_NAME
  1290. fi
  1291. data=$(tempfile 2>/dev/null)
  1292. trap "rm -f $data" 0 1 2 5 15
  1293. dialog --backtitle "Freedombone Configuration" \
  1294. --inputbox "Your email address" 10 30 "$EMAIL_ADDRESS" 2> $data
  1295. sel=$?
  1296. case $sel in
  1297. 0) MY_EMAIL_ADDRESS=$(cat $data);;
  1298. 1) exit 1;;
  1299. 255) exit 1;;
  1300. esac
  1301. done
  1302. save_configuration_file
  1303. fi
  1304. # delete the temporary configuration file
  1305. if [ -f temp.cfg ]; then
  1306. shred -zu temp.cfg
  1307. fi
  1308. }
  1309. function show_result {
  1310. clear
  1311. echo ''
  1312. echo "Configuration filename: $CONFIGURATION_FILE"
  1313. echo ''
  1314. echo 'Contents:'
  1315. echo ''
  1316. cat $CONFIGURATION_FILE
  1317. echo ''
  1318. }
  1319. function read_configuration {
  1320. if [ ! $CONFIGURATION_FILE ]; then
  1321. CONFIGURATION_FILE='freedombone.cfg'
  1322. fi
  1323. if [ -f $CONFIGURATION_FILE ]; then
  1324. if grep -q "ENABLE_SOCIAL_KEY_MANAGEMENT" $CONFIGURATION_FILE; then
  1325. ENABLE_SOCIAL_KEY_MANAGEMENT=$(grep "ENABLE_SOCIAL_KEY_MANAGEMENT" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1326. fi
  1327. if grep -q "GIT_DOMAIN_NAME" $CONFIGURATION_FILE; then
  1328. GIT_DOMAIN_NAME=$(grep "GIT_DOMAIN_NAME" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1329. fi
  1330. if grep -q "GIT_CODE" $CONFIGURATION_FILE; then
  1331. GIT_CODE=$(grep "GIT_CODE" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1332. fi
  1333. if grep -q "MY_USERNAME" $CONFIGURATION_FILE; then
  1334. MY_USERNAME=$(grep "MY_USERNAME" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1335. fi
  1336. if grep -q "DOMAIN_NAME" $CONFIGURATION_FILE; then
  1337. # for backwards compatability
  1338. DEFAULT_DOMAIN_NAME=$(grep "DOMAIN_NAME" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1339. fi
  1340. if grep -q "DEFAULT_DOMAIN_NAME" $CONFIGURATION_FILE; then
  1341. DEFAULT_DOMAIN_NAME=$(grep "DEFAULT_DOMAIN_NAME" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1342. fi
  1343. if grep -q "DEFAULT_DOMAIN_CODE" $CONFIGURATION_FILE; then
  1344. DEFAULT_DOMAIN_CODE=$(grep "DEFAULT_DOMAIN_CODE" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1345. fi
  1346. if grep -q "NAMESERVER1" $CONFIGURATION_FILE; then
  1347. NAMESERVER1=$(grep "NAMESERVER1" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1348. fi
  1349. if grep -q "NAMESERVER2" $CONFIGURATION_FILE; then
  1350. NAMESERVER2=$(grep "NAMESERVER2" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1351. fi
  1352. if grep -q "DEBIAN_REPO" $CONFIGURATION_FILE; then
  1353. DEBIAN_REPO=$(grep "DEBIAN_REPO" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1354. 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."
  1355. fi
  1356. if grep -q "DDNS_PROVIDER" $CONFIGURATION_FILE; then
  1357. DDNS_PROVIDER=$(grep "DDNS_PROVIDER" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1358. fi
  1359. if grep -q "DDNS_USERNAME" $CONFIGURATION_FILE; then
  1360. DDNS_USERNAME=$(grep "DDNS_USERNAME" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1361. fi
  1362. if grep -q "DDNS_PASSWORD" $CONFIGURATION_FILE; then
  1363. DDNS_PASSWORD=$(grep "DDNS_PASSWORD" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1364. fi
  1365. if grep -q "LOCAL_NETWORK_STATIC_IP_ADDRESS" $CONFIGURATION_FILE; then
  1366. LOCAL_NETWORK_STATIC_IP_ADDRESS=$(grep "LOCAL_NETWORK_STATIC_IP_ADDRESS" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1367. fi
  1368. if grep -q "ENABLE_CJDNS" $CONFIGURATION_FILE; then
  1369. ENABLE_CJDNS=$(grep "ENABLE_CJDNS" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1370. fi
  1371. if grep -q "ENABLE_BATMAN" $CONFIGURATION_FILE; then
  1372. ENABLE_BATMAN=$(grep "ENABLE_BATMAN" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1373. fi
  1374. if grep -q "ENABLE_BABEL" $CONFIGURATION_FILE; then
  1375. ENABLE_BABEL=$(grep "ENABLE_BABEL" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1376. fi
  1377. if grep -q "ROUTER_IP_ADDRESS" $CONFIGURATION_FILE; then
  1378. ROUTER_IP_ADDRESS=$(grep "ROUTER_IP_ADDRESS" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1379. fi
  1380. if grep -q "WIKI_TITLE" $CONFIGURATION_FILE; then
  1381. WIKI_TITLE=$(grep "WIKI_TITLE" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1382. fi
  1383. if grep -q "MY_NAME" $CONFIGURATION_FILE; then
  1384. MY_NAME=$(grep "MY_NAME" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1385. fi
  1386. if grep -q "MY_EMAIL_ADDRESS" $CONFIGURATION_FILE; then
  1387. MY_EMAIL_ADDRESS=$(grep "MY_EMAIL_ADDRESS" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1388. fi
  1389. if grep -q "INSTALLING_ON_BBB" $CONFIGURATION_FILE; then
  1390. INSTALLING_ON_BBB=$(grep "INSTALLING_ON_BBB" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1391. fi
  1392. if grep -q "USB_DRIVE" $CONFIGURATION_FILE; then
  1393. USB_DRIVE=$(grep "USB_DRIVE" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1394. fi
  1395. if grep -q "PUBLIC_MAILING_LIST" $CONFIGURATION_FILE; then
  1396. PUBLIC_MAILING_LIST=$(grep "PUBLIC_MAILING_LIST" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1397. fi
  1398. if grep -q "MICROBLOG_DOMAIN_NAME" $CONFIGURATION_FILE; then
  1399. MICROBLOG_DOMAIN_NAME=$(grep "MICROBLOG_DOMAIN_NAME" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1400. fi
  1401. if grep -q "MICROBLOG_CODE" $CONFIGURATION_FILE; then
  1402. MICROBLOG_CODE=$(grep "MICROBLOG_CODE" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1403. fi
  1404. if grep -q "REDMATRIX_DOMAIN_NAME" $CONFIGURATION_FILE; then
  1405. REDMATRIX_DOMAIN_NAME=$(grep "REDMATRIX_DOMAIN_NAME" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1406. fi
  1407. if grep -q "REDMATRIX_CODE" $CONFIGURATION_FILE; then
  1408. REDMATRIX_CODE=$(grep "REDMATRIX_CODE" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1409. fi
  1410. if grep -q "OWNCLOUD_DOMAIN_NAME" $CONFIGURATION_FILE; then
  1411. OWNCLOUD_DOMAIN_NAME=$(grep "OWNCLOUD_DOMAIN_NAME" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1412. fi
  1413. if grep -q "OWNCLOUD_CODE" $CONFIGURATION_FILE; then
  1414. OWNCLOUD_CODE=$(grep "OWNCLOUD_CODE" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1415. fi
  1416. if grep -q "WIKI_DOMAIN_NAME" $CONFIGURATION_FILE; then
  1417. WIKI_DOMAIN_NAME=$(grep "WIKI_DOMAIN_NAME" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1418. fi
  1419. if grep -q "WIKI_CODE" $CONFIGURATION_FILE; then
  1420. WIKI_CODE=$(grep "WIKI_CODE" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1421. fi
  1422. if grep -q "FULLBLOG_DOMAIN_NAME" $CONFIGURATION_FILE; then
  1423. FULLBLOG_DOMAIN_NAME=$(grep "FULLBLOG_DOMAIN_NAME" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1424. fi
  1425. if grep -q "FULLBLOG_CODE" $CONFIGURATION_FILE; then
  1426. FULLBLOG_CODE=$(grep "FULLBLOG_CODE" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1427. fi
  1428. if grep -q "MY_BLOG_TITLE" $CONFIGURATION_FILE; then
  1429. MY_BLOG_TITLE=$(grep "MY_BLOG_TITLE" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1430. fi
  1431. if grep -q "MY_BLOG_SUBTITLE" $CONFIGURATION_FILE; then
  1432. MY_BLOG_SUBTITLE=$(grep "MY_BLOG_SUBTITLE" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1433. fi
  1434. if grep -q "MEDIAGOBLIN_DOMAIN_NAME" $CONFIGURATION_FILE; then
  1435. MEDIAGOBLIN_DOMAIN_NAME=$(grep "MEDIAGOBLIN_DOMAIN_NAME" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1436. fi
  1437. if grep -q "MEDIAGOBLIN_CODE" $CONFIGURATION_FILE; then
  1438. MEDIAGOBLIN_CODE=$(grep "MEDIAGOBLIN_CODE" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1439. fi
  1440. if grep -q "ESSID" $CONFIGURATION_FILE; then
  1441. ESSID=$(grep "ESSID" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1442. fi
  1443. if grep -q "BATMAN_CELLID" $CONFIGURATION_FILE; then
  1444. BATMAN_CELLID=$(grep "BATMAN_CELLID" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1445. fi
  1446. if grep -q "WIFI_CHANNEL" $CONFIGURATION_FILE; then
  1447. WIFI_CHANNEL=$(grep "WIFI_CHANNEL" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1448. fi
  1449. fi
  1450. }
  1451. read_configuration
  1452. interactive_configuration
  1453. show_result
  1454. exit 0