freedombone-config 74KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829
  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-2016 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. PROJECT_NAME='freedombone'
  33. # username created by default within a debian image
  34. GENERIC_IMAGE_USERNAME='fbone'
  35. export TEXTDOMAIN=${PROJECT_NAME}-config
  36. export TEXTDOMAINDIR="/usr/share/locale"
  37. # Web site
  38. FREEDOMBONE_WEBSITE="http://freedombone.uk.to"
  39. # Contact details
  40. FREEDOMBONE_BITMESSAGE="BM-2cWuhmBvVdfrHhLoZTdspCkKeiTorUesSL"
  41. # Minimum number of characters in a password
  42. MINIMUM_PASSWORD_LENGTH=10
  43. # file containing new password
  44. IMAGE_PASSWORD_FILE=/root/login.txt
  45. # Different system variants which may be specified within
  46. # the SYSTEM_TYPE option
  47. VARIANT_FULL="full"
  48. VARIANT_WRITER="writer"
  49. VARIANT_CLOUD="cloud"
  50. VARIANT_CHAT="chat"
  51. VARIANT_MAILBOX="mailbox"
  52. VARIANT_NONMAILBOX="nonmailbox"
  53. VARIANT_SOCIAL="social"
  54. VARIANT_MEDIA="media"
  55. VARIANT_DEVELOPER="developer"
  56. VARIANT_MESH="mesh"
  57. VARIANT_MESH_USER="mesh-user"
  58. MY_USERNAME=
  59. DEFAULT_DOMAIN_NAME=
  60. DEFAULT_DOMAIN_CODE=
  61. MY_EMAIL_ADDRESS=
  62. SYSTEM_TYPE=
  63. INSTALLING_ON_BBB="no"
  64. DDNS_PROVIDER=
  65. DDNS_USERNAME=
  66. DDNS_PASSWORD=
  67. MY_NAME=
  68. LOCAL_NETWORK_STATIC_IP_ADDRESS=
  69. ROUTER_IP_ADDRESS=
  70. ENABLE_CJDNS=
  71. ENABLE_BATMAN=
  72. ENABLE_BABEL=
  73. DEBIAN_REPO=
  74. NAMESERVER1=
  75. NAMESERVER2=
  76. WIKI_TITLE=
  77. WIKI_DOMAIN_NAME=
  78. WIKI_CODE=
  79. MY_BLOG_TITLE=
  80. FULLBLOG_DOMAIN_NAME=
  81. FULLBLOG_CODE=
  82. OWNCLOUD_DOMAIN_NAME=
  83. OWNCLOUD_CODE=
  84. HUBZILLA_DOMAIN_NAME=
  85. HUBZILLA_CODE=
  86. MICROBLOG_DOMAIN_NAME=
  87. MICROBLOG_CODE=
  88. GIT_DOMAIN_NAME=
  89. GIT_CODE=
  90. MEDIAGOBLIN_DOMAIN_NAME=
  91. MEDIAGOBLIN_CODE=
  92. USB_DRIVE=/dev/sdb1
  93. HWRNG_TYPE=
  94. ENABLE_SOCIAL_KEY_MANAGEMENT=
  95. ESSID='mesh'
  96. BATMAN_CELLID='any'
  97. WIFI_CHANNEL=
  98. CONFIGURATION_FILE=
  99. DH_KEYLENGTH=
  100. MINIMAL_INSTALL="yes"
  101. DEFAULT_LANGUAGE='en_GB.UTF-8'
  102. ONION_ONLY="no"
  103. function show_help {
  104. echo ''
  105. echo $"${PROJECT_NAME}-config -f [config filename] -m [min password length]"
  106. echo ''
  107. echo $'Creates an inventory of remote backup locations'
  108. echo ''
  109. echo ''
  110. echo $' -h --help Show help'
  111. echo $' -f --filename Configuration file (usually freedombone.cfg)'
  112. echo $' -m --min Minimum password length (characters)'
  113. echo $' -w --www Freedombone web site'
  114. echo $' -b --bm Freedombone support Bitmessage address'
  115. echo $' -o --onion [yes|no] Whether to only create .onion sites'
  116. echo $' --minimal [yes|no] For minimalistic "consumer grade" installs'
  117. echo ''
  118. exit 0
  119. }
  120. # Get the commandline options
  121. while [[ $# > 1 ]]
  122. do
  123. key="$1"
  124. case $key in
  125. -h|--help)
  126. show_help
  127. ;;
  128. # Configuration filename
  129. -f|--filename)
  130. shift
  131. CONFIGURATION_FILE="$1"
  132. ;;
  133. # Minimum password length
  134. -m|--min)
  135. shift
  136. MINIMUM_PASSWORD_LENGTH="$1"
  137. ;;
  138. # Freedombone website
  139. -w|--www)
  140. shift
  141. FREEDOMBONE_WEBSITE="$1"
  142. ;;
  143. # Bitmessage address for support
  144. -b|--bm)
  145. shift
  146. FREEDOMBONE_BITMESSAGE="$1"
  147. ;;
  148. --minimal)
  149. shift
  150. MINIMAL_INSTALL="$1"
  151. ;;
  152. -o|--onion)
  153. shift
  154. ONION_ONLY="$1"
  155. ;;
  156. *)
  157. # unknown option
  158. ;;
  159. esac
  160. shift
  161. done
  162. function save_configuration_file {
  163. if [ ! $CONFIGURATION_FILE ]; then
  164. CONFIGURATION_FILE='freedombone.cfg'
  165. fi
  166. echo "MY_USERNAME=$MY_USERNAME" > $CONFIGURATION_FILE
  167. echo "DEFAULT_DOMAIN_NAME=$DEFAULT_DOMAIN_NAME" >> $CONFIGURATION_FILE
  168. if [ $DEFAULT_DOMAIN_CODE ]; then
  169. echo "DEFAULT_DOMAIN_CODE=$DEFAULT_DOMAIN_CODE" >> $CONFIGURATION_FILE
  170. fi
  171. echo "SYSTEM_TYPE=$SYSTEM_TYPE" >> $CONFIGURATION_FILE
  172. echo "INSTALLING_ON_BBB=$INSTALLING_ON_BBB" >> $CONFIGURATION_FILE
  173. echo "USB_DRIVE=$USB_DRIVE" >> $CONFIGURATION_FILE
  174. echo "DDNS_PROVIDER=$DDNS_PROVIDER" >> $CONFIGURATION_FILE
  175. echo "DDNS_USERNAME=$DDNS_USERNAME" >> $CONFIGURATION_FILE
  176. echo "DDNS_PASSWORD=$DDNS_PASSWORD" >> $CONFIGURATION_FILE
  177. echo "DEFAULT_LANGUAGE=$DEFAULT_LANGUAGE" >> $CONFIGURATION_FILE
  178. if [ "$MY_NAME" ]; then
  179. echo "MY_NAME=$MY_NAME" >> $CONFIGURATION_FILE
  180. fi
  181. echo "MY_EMAIL_ADDRESS=$MY_EMAIL_ADDRESS" >> $CONFIGURATION_FILE
  182. if [ $LOCAL_NETWORK_STATIC_IP_ADDRESS ]; then
  183. echo "LOCAL_NETWORK_STATIC_IP_ADDRESS=$LOCAL_NETWORK_STATIC_IP_ADDRESS" >> $CONFIGURATION_FILE
  184. echo "ROUTER_IP_ADDRESS=$ROUTER_IP_ADDRESS" >> $CONFIGURATION_FILE
  185. fi
  186. if [ $ENABLE_CJDNS ]; then
  187. echo "ENABLE_CJDNS=$ENABLE_CJDNS" >> $CONFIGURATION_FILE
  188. fi
  189. if [ $ENABLE_BATMAN ]; then
  190. echo "ENABLE_BATMAN=$ENABLE_BATMAN" >> $CONFIGURATION_FILE
  191. fi
  192. if [ $ENABLE_BABEL ]; then
  193. echo "ENABLE_BABEL=$ENABLE_BABEL" >> $CONFIGURATION_FILE
  194. fi
  195. echo "DEBIAN_REPO=$DEBIAN_REPO" >> $CONFIGURATION_FILE
  196. if [ $NAMESERVER1 ]; then
  197. echo "NAMESERVER1=$NAMESERVER1" >> $CONFIGURATION_FILE
  198. fi
  199. if [ $NAMESERVER2 ]; then
  200. echo "NAMESERVER2=$NAMESERVER2" >> $CONFIGURATION_FILE
  201. fi
  202. if [ $WIKI_TITLE ]; then
  203. echo "WIKI_TITLE=$WIKI_TITLE" >> $CONFIGURATION_FILE
  204. fi
  205. if [ $WIKI_DOMAIN_NAME ]; then
  206. echo "WIKI_DOMAIN_NAME=$WIKI_DOMAIN_NAME" >> $CONFIGURATION_FILE
  207. fi
  208. if [ $WIKI_CODE ]; then
  209. echo "WIKI_CODE=$WIKI_CODE" >> $CONFIGURATION_FILE
  210. fi
  211. if [ $MY_BLOG_TITLE ]; then
  212. echo "MY_BLOG_TITLE=$MY_BLOG_TITLE" >> $CONFIGURATION_FILE
  213. fi
  214. if [ $FULLBLOG_DOMAIN_NAME ]; then
  215. echo "FULLBLOG_DOMAIN_NAME=$FULLBLOG_DOMAIN_NAME" >> $CONFIGURATION_FILE
  216. fi
  217. if [ $FULLBLOG_CODE ]; then
  218. echo "FULLBLOG_CODE=$FULLBLOG_CODE" >> $CONFIGURATION_FILE
  219. fi
  220. if [ $OWNCLOUD_DOMAIN_NAME ]; then
  221. echo "OWNCLOUD_DOMAIN_NAME=$OWNCLOUD_DOMAIN_NAME" >> $CONFIGURATION_FILE
  222. fi
  223. if [ $OWNCLOUD_CODE ]; then
  224. echo "OWNCLOUD_CODE=$OWNCLOUD_CODE" >> $CONFIGURATION_FILE
  225. fi
  226. if [ $HUBZILLA_DOMAIN_NAME ]; then
  227. echo "HUBZILLA_DOMAIN_NAME=$HUBZILLA_DOMAIN_NAME" >> $CONFIGURATION_FILE
  228. fi
  229. if [ $HUBZILLA_CODE ]; then
  230. echo "HUBZILLA_CODE=$HUBZILLA_CODE" >> $CONFIGURATION_FILE
  231. fi
  232. if [ $MICROBLOG_DOMAIN_NAME ]; then
  233. echo "MICROBLOG_DOMAIN_NAME=$MICROBLOG_DOMAIN_NAME" >> $CONFIGURATION_FILE
  234. fi
  235. if [ $MICROBLOG_CODE ]; then
  236. echo "MICROBLOG_CODE=$MICROBLOG_CODE" >> $CONFIGURATION_FILE
  237. fi
  238. if [ $GIT_DOMAIN_NAME ]; then
  239. echo "GIT_DOMAIN_NAME=$GIT_DOMAIN_NAME" >> $CONFIGURATION_FILE
  240. fi
  241. if [ $GIT_CODE ]; then
  242. echo "GIT_CODE=$GIT_CODE" >> $CONFIGURATION_FILE
  243. fi
  244. if [ $MEDIAGOBLIN_DOMAIN_NAME ]; then
  245. echo "MEDIAGOBLIN_DOMAIN_NAME=$MEDIAGOBLIN_DOMAIN_NAME" >> $CONFIGURATION_FILE
  246. fi
  247. if [ $MEDIAGOBLIN_CODE ]; then
  248. echo "MEDIAGOBLIN_CODE=$MEDIAGOBLIN_CODE" >> $CONFIGURATION_FILE
  249. fi
  250. if [ $HWRNG_TYPE ]; then
  251. echo "HWRNG_TYPE=$HWRNG_TYPE" >> $CONFIGURATION_FILE
  252. fi
  253. if [ $ENABLE_SOCIAL_KEY_MANAGEMENT ]; then
  254. echo "ENABLE_SOCIAL_KEY_MANAGEMENT=$ENABLE_SOCIAL_KEY_MANAGEMENT" >> $CONFIGURATION_FILE
  255. fi
  256. if [ $ESSID ]; then
  257. echo "ESSID=$ESSID" >> $CONFIGURATION_FILE
  258. fi
  259. if [ $BATMAN_CELLID ]; then
  260. echo "BATMAN_CELLID=$BATMAN_CELLID" >> $CONFIGURATION_FILE
  261. fi
  262. if [ $WIFI_CHANNEL ]; then
  263. echo "WIFI_CHANNEL=$WIFI_CHANNEL" >> $CONFIGURATION_FILE
  264. fi
  265. if [ $DH_KEYLENGTH ]; then
  266. echo "DH_KEYLENGTH=$DH_KEYLENGTH" >> $CONFIGURATION_FILE
  267. fi
  268. echo "ONION_ONLY=$ONION_ONLY" >> $CONFIGURATION_FILE
  269. }
  270. # test a domain name to see if it's valid
  271. function validate_domain_name {
  272. # count the number of dots in the domain name
  273. dots=${TEST_DOMAIN_NAME//[^.]}
  274. no_of_dots=${#dots}
  275. if (( no_of_dots > 3 )); then
  276. 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"
  277. fi
  278. if (( no_of_dots == 0 )); then
  279. 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"
  280. fi
  281. }
  282. function interactive_gpg_from_remote {
  283. REMOTE_SERVERS_LIST=/home/$MY_USERNAME/keyshareservers.txt
  284. # get a list of remote servers
  285. ${PROJECT_NAME}-remote -u $MY_USERNAME -l $REMOTE_SERVERS_LIST -t "Remote server"
  286. if [ ! -f $REMOTE_SERVERS_LIST ]; then
  287. dialog --title $"Encryption keys" --msgbox $'Error obtaining server list' 6 70
  288. return 1
  289. fi
  290. # check the number of entries in the file
  291. no_of_servers=$(cat $REMOTE_SERVERS_LIST | wc -l)
  292. if (( no_of_servers < 3 )); then
  293. dialog --title $"Encryption keys" \
  294. --msgbox $'There must be at least three servers to recover the key' 6 70
  295. return 2
  296. fi
  297. # try to recover the key from the servers
  298. apt-get -y install libgfshare-bin gnupg
  299. ${PROJECT_NAME}-recoverkey -u $MY_USERNAME -l $REMOTE_SERVERS_LIST
  300. if [ ! "$?" = "0" ]; then
  301. dialog --title $"Encryption keys" --msgbox $'Your key could not be recovered' 6 70
  302. return 3
  303. fi
  304. dialog --title $"Encryption keys" --msgbox $'Your key has been recovered' 6 70
  305. return 0
  306. }
  307. function reconstruct_key {
  308. if [ ! -d /home/$MY_USERNAME/.gnupg_fragments ]; then
  309. return
  310. fi
  311. cd /home/$MY_USERNAME/.gnupg_fragments
  312. no_of_shares=$(ls -afq keyshare.asc.* | wc -l)
  313. if (( no_of_shares < 4 )); then
  314. dialog --title $"Encryption keys" --msgbox $'Not enough fragments to reconstruct the key' 6 70
  315. exit 7348
  316. fi
  317. apt-get -y install libgfshare-bin gnupg
  318. gfcombine /home/$MY_USERNAME/.gnupg_fragments/keyshare*
  319. if [ ! "$?" = "0" ]; then
  320. dialog --title $"Encryption keys" --msgbox $'Unable to reconstruct the key' 6 70
  321. exit 7348
  322. fi
  323. KEYS_FILE=/home/$MY_USERNAME/.gnupg_fragments/keyshare.asc
  324. if [ ! -f $KEYS_FILE ]; then
  325. dialog --title $"Encryption keys" --msgbox $'Unable to reconstruct the key' 6 70
  326. fi
  327. su -c "gpg --allow-secret-key-import --import $KEYS_FILE" - $MY_USERNAME
  328. if [ ! "$?" = "0" ]; then
  329. echo $'Unable to import gpg key'
  330. shred -zu $KEYS_FILE
  331. rm -rf /home/$MY_USERNAME/.tempgnupg
  332. exit 9654
  333. fi
  334. shred -zu $KEYS_FILE
  335. dialog --title $"Encryption keys" --msgbox $'Key has been reconstructed' 6 70
  336. }
  337. function interactive_gpg_from_usb {
  338. dialog --title $"Encryption keys" \
  339. --msgbox $'Plug in a USB drive containing a copy of your full key or key fragment' 6 70
  340. HOME_DIR=/home/$MY_USERNAME
  341. GPG_LOADING="yes"
  342. SSH_IMPORTED="no"
  343. GPG_CTR=0
  344. while [[ $GPG_LOADING == "yes" ]]
  345. do
  346. if [[ $INSTALLING_ON_BBB == "yes" ]]; then
  347. GPG_USB_DRIVE='/dev/sda1'
  348. if [ ! -b $GPG_USB_DRIVE ]; then
  349. if (( GPG_CTR > 0 )); then
  350. reconstruct_key
  351. return 0
  352. fi
  353. dialog --title $"Encryption keys" --msgbox $'No USB drive found' 6 30
  354. exit 739836
  355. fi
  356. else
  357. GPG_USB_DRIVE='/dev/sdb1'
  358. if [ ! -b $GPG_USB_DRIVE ]; then
  359. GPG_USB_DRIVE='/dev/sdc1'
  360. if [ ! -b $GPG_USB_DRIVE ]; then
  361. GPG_USB_DRIVE='/dev/sdd1'
  362. if [ ! -b $GPG_USB_DRIVE ]; then
  363. if (( GPG_CTR > 0 )); then
  364. reconstruct_key
  365. return 0
  366. fi
  367. dialog --title $"Encryption keys" --msgbox $'No USB drive found' 6 30
  368. exit 27852
  369. fi
  370. fi
  371. fi
  372. fi
  373. GPG_USB_MOUNT='/mnt/usb'
  374. umount -f $GPG_USB_MOUNT
  375. if [ ! -d $GPG_USB_MOUNT ]; then
  376. mkdir -p $GPG_USB_MOUNT
  377. fi
  378. if [ -f /dev/mapper/encrypted_usb ]; then
  379. rm -rf /dev/mapper/encrypted_usb
  380. fi
  381. cryptsetup luksClose encrypted_usb
  382. cryptsetup luksOpen $GPG_USB_DRIVE encrypted_usb
  383. if [ "$?" = "0" ]; then
  384. GPG_USB_DRIVE=/dev/mapper/encrypted_usb
  385. fi
  386. mount $GPG_USB_DRIVE $GPG_USB_MOUNT
  387. if [ ! "$?" = "0" ]; then
  388. if (( GPG_CTR > 0 )); then
  389. rm -rf $GPG_USB_MOUNT
  390. reconstruct_key
  391. return 0
  392. fi
  393. dialog --title $"Encryption keys" \
  394. --msgbox $"There was a problem mounting the USB drive to $GPG_USB_MOUNT" 6 70
  395. rm -rf $GPG_USB_MOUNT
  396. exit 74393
  397. fi
  398. if [ ! -d $GPG_USB_MOUNT/.gnupg ]; then
  399. if [ ! -d $GPG_USB_MOUNT/.gnupg_fragments ]; then
  400. if (( GPG_CTR > 0 )); then
  401. umount -f $GPG_USB_MOUNT
  402. rm -rf $GPG_USB_MOUNT
  403. reconstruct_key
  404. return 0
  405. fi
  406. dialog --title $"Encryption keys" \
  407. --msgbox $"The directory $GPG_USB_MOUNT/.gnupg or $GPG_USB_MOUNT/.gnupg_fragments was not found" 6 70
  408. umount -f $GPG_USB_MOUNT
  409. rm -rf $GPG_USB_MOUNT
  410. exit 723814
  411. fi
  412. fi
  413. if [ -d $GPG_USB_MOUNT/.gnupg ]; then
  414. if [ ! -d $HOME_DIR/.gnupg ]; then
  415. mkdir $HOME_DIR/.gnupg
  416. fi
  417. cp -r $GPG_USB_MOUNT/.gnupg/* $HOME_DIR/.gnupg
  418. GPG_LOADING="no"
  419. dialog --title $"Encryption keys" \
  420. --msgbox $"GPG Keyring loaded to $HOME_DIR" 6 70
  421. else
  422. if [ ! -d $HOME_DIR/.gnupg_fragments ]; then
  423. mkdir $HOME_DIR/.gnupg_fragments
  424. fi
  425. cp -r $GPG_USB_MOUNT/.gnupg_fragments/* $HOME_DIR/.gnupg_fragments
  426. fi
  427. if [[ $SSH_IMPORTED == "no" ]]; then
  428. if [ -d $GPG_USB_MOUNT/.ssh ]; then
  429. if [ ! -d $HOME_DIR/.ssh ]; then
  430. mkdir $HOME_DIR/.ssh
  431. fi
  432. cp $GPG_USB_MOUNT/.ssh/* $HOME_DIR/.ssh
  433. dialog --title $"Encryption keys" \
  434. --msgbox $"ssh keys imported" 6 70
  435. SSH_IMPORTED="yes"
  436. fi
  437. fi
  438. umount -f $GPG_USB_MOUNT
  439. rm -rf $GPG_USB_MOUNT
  440. if [[ $GPG_LOADING == "yes" ]]; then
  441. dialog --title $"Encryption keys" \
  442. --msgbox $"Now remove the USB drive. Insert the next drive containing a key fragment, or select Ok to finish" 6 70
  443. fi
  444. GPG_CTR=$((GPG_CTR + 1))
  445. done
  446. }
  447. function interactive_gpg {
  448. GPG_CONFIGURED="no"
  449. while [[ $GPG_CONFIGURED != "yes" ]]
  450. do
  451. GPG_CONFIGURED="yes"
  452. data=$(tempfile 2>/dev/null)
  453. trap "rm -f $data" 0 1 2 5 15
  454. dialog --backtitle $"Freedombone Configuration" \
  455. --radiolist $"GPG/PGP keys for your system:" 13 70 3 \
  456. 1 $"Generate new keys (new user)" on \
  457. 2 $"Import keys from USB drive/s" off \
  458. 3 $"Retrieve keys from friends servers" off 2> $data
  459. sel=$?
  460. case $sel in
  461. 1) exit 1;;
  462. 255) exit 2;;
  463. esac
  464. case $(cat $data) in
  465. 1) if [ -d /home/$MY_USERNAME/.gnupg ]; then
  466. rm -rf /home/$MY_USERNAME/.gnupg
  467. fi
  468. break;;
  469. 2) interactive_gpg_from_usb
  470. break;;
  471. 3) interactive_gpg_from_remote
  472. if [ ! "$?" = "0" ]; then
  473. GPG_CONFIGURED="no"
  474. fi;;
  475. esac
  476. done
  477. }
  478. function interactive_select_language {
  479. data=$(tempfile 2>/dev/null)
  480. trap "rm -f $data" 0 1 2 5 15
  481. dialog --backtitle $"Freedombone Configuration" \
  482. --radiolist $"Select your language:" 12 40 4 \
  483. 1 $"English" on \
  484. 2 $"French" off \
  485. 3 $"German" off \
  486. 4 $"Spanish" off 2> $data
  487. sel=$?
  488. case $sel in
  489. 1) exit 1;;
  490. 255) exit 1;;
  491. esac
  492. case $(cat $data) in
  493. 1) DEFAULT_LANGUAGE='en_GB.UTF-8';;
  494. 2) DEFAULT_LANGUAGE='fr_FR.UTF-8';;
  495. 3) DEFAULT_LANGUAGE='de_DE.UTF-8';;
  496. 3) DEFAULT_LANGUAGE='es_ES.UTF-8';;
  497. esac
  498. save_configuration_file
  499. update-locale LANG=${DEFAULT_LANGUAGE}
  500. update-locale LANGUAGE=${DEFAULT_LANGUAGE}
  501. update-locale LC_MESSAGES=${DEFAULT_LANGUAGE}
  502. update-locale LC_ALL=${DEFAULT_LANGUAGE}
  503. update-locale LC_CTYPE=${DEFAULT_LANGUAGE}
  504. }
  505. function interactive_configuration {
  506. # create a temporary copy of the configuration file
  507. # which can be used to pre-populate selections
  508. if [ -f $CONFIGURATION_FILE ]; then
  509. cp $CONFIGURATION_FILE temp.cfg
  510. fi
  511. interactive_select_language
  512. 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."
  513. if [[ $ONION_ONLY == "no" ]]; then
  514. INITIAL_MESSAGE=$"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"
  515. else
  516. INITIAL_MESSAGE=$"Welcome to the Freedombone interactive installer. Communications freedom is only a short time away.\n\nWeb sites created will only be viewable within a Tor browser.\n\nFor more information please visit $FREEDOMBONE_WEBSITE or send a Bitmessage to $FREEDOMBONE_BITMESSAGE"
  517. fi
  518. dialog --title $"Freedombone" --msgbox "$INITIAL_MESSAGE" 15 50
  519. data=$(tempfile 2>/dev/null)
  520. trap "rm -f $data" 0 1 2 5 15
  521. dialog --backtitle $"Freedombone Configuration" \
  522. --radiolist $"Type of Installation:" 18 40 11 \
  523. 1 $"Full" on \
  524. 2 $"Writer" off \
  525. 3 $"Cloud" off \
  526. 4 $"Chat" off \
  527. 5 $"Mailbox" off \
  528. 6 $"Non-Mailbox" off \
  529. 7 $"Social" off \
  530. 8 $"Media" off \
  531. 9 $"Developer" off \
  532. 10 $"Mesh (router)" off \
  533. 11 $"Mesh (user device)" off 2> $data
  534. sel=$?
  535. case $sel in
  536. 1) exit 1;;
  537. 255) exit 1;;
  538. esac
  539. case $(cat $data) in
  540. 1) SYSTEM_TYPE=$VARIANT_FULL;;
  541. 2) SYSTEM_TYPE=$VARIANT_WRITER;;
  542. 3) SYSTEM_TYPE=$VARIANT_CLOUD;;
  543. 4) SYSTEM_TYPE=$VARIANT_CHAT;;
  544. 5) SYSTEM_TYPE=$VARIANT_MAILBOX;;
  545. 6) SYSTEM_TYPE=$VARIANT_NONMAILBOX;;
  546. 7) SYSTEM_TYPE=$VARIANT_SOCIAL;;
  547. 8) SYSTEM_TYPE=$VARIANT_MEDIA;;
  548. 9) SYSTEM_TYPE=$VARIANT_DEVELOPER;;
  549. 10) SYSTEM_TYPE=$VARIANT_MESH;;
  550. 11) SYSTEM_TYPE=$VARIANT_MESH_USER;;
  551. esac
  552. save_configuration_file
  553. if [[ $SYSTEM_TYPE == "$VARIANT_MESH" || $SYSTEM_TYPE == "$VARIANT_MESH_USER" ]]; then
  554. ENABLE_BATMAN="yes"
  555. ENABLE_CJDNS="no"
  556. ENABLE_BABEL="no"
  557. #data=$(tempfile 2>/dev/null)
  558. #trap "rm -f $data" 0 1 2 5 15
  559. #dialog --backtitle "Freedombone Configuration" \
  560. # --radiolist "Select your type of mesh network:" 10 40 3 \
  561. # 1 "Babel" off \
  562. # 2 "B.A.T.M.A.N. Advanced" on \
  563. # 3 "cjdns" off 2> $data
  564. #sel=$?
  565. #case $sel in
  566. # 1) exit 1;;
  567. # 255) exit 1;;
  568. #esac
  569. #case $(cat $data) in
  570. # 1) ENABLE_BABEL="yes";;
  571. # 2) ENABLE_BATMAN="yes";;
  572. # 3) ENABLE_CJDNS="yes";;
  573. #esac
  574. save_configuration_file
  575. data=$(tempfile 2>/dev/null)
  576. trap "rm -f $data" 0 1 2 5 15
  577. dialog --backtitle $"Freedombone Configuration" \
  578. --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
  579. sel=$?
  580. case $sel in
  581. 0) ESSID=$(cat $data);;
  582. 1) exit 1;;
  583. 255) exit 1;;
  584. esac
  585. save_configuration_file
  586. if [[ $SYSTEM_TYPE != "$VARIANT_MESH_USER" ]]; then
  587. data=$(tempfile 2>/dev/null)
  588. trap "rm -f $data" 0 1 2 5 15
  589. dialog --backtitle $"Freedombone Configuration" \
  590. --inputbox $"Give your mesh peer a name" 10 40 "$(grep 'DEFAULT_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 2> $data
  591. sel=$?
  592. case $sel in
  593. 0) DEFAULT_DOMAIN_NAME=$(cat $data);;
  594. 1) exit 1;;
  595. 255) exit 1;;
  596. esac
  597. else
  598. DEFAULT_DOMAIN_NAME=$(hostname)
  599. fi
  600. save_configuration_file
  601. data=$(tempfile 2>/dev/null)
  602. trap "rm -f $data" 0 1 2 5 15
  603. dialog --backtitle $"Freedombone Configuration" \
  604. --radiolist $"Wifi Channel (spaced to be non-overlapping):" 11 50 4 \
  605. 1 "1" on \
  606. 2 "5" off \
  607. 3 "9" off \
  608. 4 "13" off 2> $data
  609. sel=$?
  610. case $sel in
  611. 1) exit 1;;
  612. 255) exit 1;;
  613. esac
  614. case $(cat $data) in
  615. 1) WIFI_CHANNEL=1;;
  616. 2) WIFI_CHANNEL=5;;
  617. 3) WIFI_CHANNEL=9;;
  618. 4) WIFI_CHANNEL=13;;
  619. esac
  620. save_configuration_file
  621. fi
  622. #if [[ $ENABLE_BATMAN == "yes" ]]; then
  623. # data=$(tempfile 2>/dev/null)
  624. # trap "rm -f $data" 0 1 2 5 15
  625. # dialog --backtitle "Freedombone Configuration" \
  626. # --inputbox "Optionally register with an Access Point" 10 40 "$(grep 'BATMAN_CELLID' temp.cfg | awk -F '=' '{print $2}')" 2> $data
  627. # sel=$?
  628. # case $sel in
  629. # 0) BATMAN_CELLID=$(cat $data);;
  630. # 1) exit 1;;
  631. # 255) exit 1;;
  632. # esac
  633. # save_configuration_file
  634. #fi
  635. if [[ $SYSTEM_TYPE == "$VARIANT_MESH_USER" ]]; then
  636. ${PROJECT_NAME}-client --essid $ESSID --channel $WIFI_CHANNEL
  637. if [ "$?" = "0" ]; then
  638. clear
  639. echo ".---. . . "
  640. echo "| | | "
  641. echo "|--- .--. .-. .-. .-.| .-. .--.--. |.-. .-. .--. .-. "
  642. echo "| | (.-' (.-' ( | ( )| | | | )( )| | (.-' "
  643. echo "' ' --' --' -' - -' ' ' -' -' -' ' - --'"
  644. echo ''
  645. echo $'Your system is now ready for connection to the mesh network'
  646. echo ''
  647. echo $'To connect to the network open a terminal and type:'
  648. echo ''
  649. echo ' meshweb'
  650. echo ''
  651. echo $'To disconnect from the mesh and return to the internet type:'
  652. echo ''
  653. echo ' sudo batman stop'
  654. echo ''
  655. echo $'To turn your system into a dedicated mesh peer you could add'
  656. echo $'the meshweb command to your startup applications'
  657. echo ''
  658. touch /tmp/meshuserdevice
  659. exit 0
  660. else
  661. echo $'Failed to fully install the mesh networking system'
  662. exit 74589
  663. fi
  664. fi
  665. if [ -d /home/$GENERIC_IMAGE_USERNAME ]; then
  666. if [ ! -f $IMAGE_PASSWORD_FILE ]; then
  667. echo 'Cannot find the password file for the admin user'
  668. exit 62753
  669. fi
  670. # when installing from an image which comes with a known default user account
  671. selected_username=
  672. while [ ! $selected_username ]
  673. do
  674. if [ ! $selected_username ]; then
  675. selected_username=$(grep 'MY_USERNAME' temp.cfg | awk -F '=' '{print $2}')
  676. fi
  677. data=$(tempfile 2>/dev/null)
  678. trap "rm -f $data" 0 1 2 5 15
  679. dialog --backtitle $"Freedombone Configuration" \
  680. --title $"Username" \
  681. --inputbox $"Set your username for the system\n\nYour username should not contain any spaces" 12 60 "$selected_username" 2> $data
  682. sel=$?
  683. case $sel in
  684. 0) possible_username=$(cat $data)
  685. selected_username=
  686. if [[ $possible_username != *' '* && $possible_username != *'/'* && $possible_username != *'\'* && $possible_username != *'*'* ]]; then
  687. if [ $possible_username ]; then
  688. if [ ${#possible_username} -gt 1 ]; then
  689. if [[ $possible_username != $GENERIC_IMAGE_USERNAME ]]; then
  690. MY_USERNAME=$(cat $data)
  691. useradd -m -s /bin/bash $MY_USERNAME
  692. if [ -d /home/$MY_USERNAME ]; then
  693. echo "${MY_USERNAME}:$(printf `cat $IMAGE_PASSWORD_FILE`)" | chpasswd
  694. # Add the user as a sudoer - they will be the new admin user
  695. if ! grep -q "$MY_USERNAME ALL=(ALL) ALL" /etc/sudoers; then
  696. echo "$MY_USERNAME ALL=(ALL) ALL" >> /etc/sudoers
  697. # remove the generic image admin user from sudoers
  698. sed -i "s|${GENERIC_IMAGE_USERNAME}.*||g" /etc/sudoers
  699. fi
  700. break
  701. fi
  702. fi
  703. fi
  704. fi
  705. fi
  706. ;;
  707. 1) exit 1;;
  708. 255) exit 1;;
  709. esac
  710. done
  711. else
  712. no_of_users=$(find /home/* -maxdepth 0 -type d | wc -l)
  713. if [ $no_of_users -eq 1 ]; then
  714. # only a single user on the system
  715. MY_USERNAME=$(ls /home)
  716. else
  717. # select one from a number of users
  718. if [[ $SYSTEM_TYPE == "$VARIANT_MESH" && $DEFAULT_DOMAIN_NAME && -d /home/$DEFAULT_DOMAIN_NAME ]]; then
  719. MY_USERNAME=$DEFAULT_DOMAIN_NAME
  720. else
  721. data=$(tempfile 2>/dev/null)
  722. trap "rm -f $data" 0 1 2 5 15
  723. dialog --title $"Select the user account to install as" \
  724. --backtitle $"Freedombone Configuration" \
  725. --dselect "/home/$(grep 'MY_USERNAME' temp.cfg | awk -F '=' '{print $2}')" 14 40 2> $data
  726. sel=$?
  727. case $sel in
  728. 0) MY_USERNAME=$(cat $data | awk -F '/' '{print $3}');;
  729. 1) exit 1;;
  730. 255) exit 1;;
  731. esac
  732. fi
  733. fi
  734. fi
  735. if [ ! $MY_USERNAME ]; then
  736. echo $'No user account was selected'
  737. exit 64398
  738. fi
  739. if [[ $MY_USERNAME == '-f' ]]; then
  740. echo $'No user account was selected'
  741. exit 8347
  742. fi
  743. if [[ $MY_USERNAME == 'debian' || $MY_USERNAME == 'fbone' ]]; then
  744. echo $"Don't use the default user account"
  745. exit 9341
  746. fi
  747. if [ ! -d /home/$MY_USERNAME ]; then
  748. echo $"The directory /home/$MY_USERNAME does not exist"
  749. exit 6437
  750. fi
  751. save_configuration_file
  752. if [[ $MINIMAL_INSTALL == "no" ]]; then
  753. if [[ $(grep "INSTALLING_ON_BBB" temp.cfg | awk -F '=' '{print $2}') == "yes" ]]; then
  754. dialog --title $"Install Target" \
  755. --backtitle $"Freedombone Configuration" \
  756. --yesno $"\nAre you installing onto a Beaglebone Black?" 7 60
  757. else
  758. dialog --title $"Install Target" \
  759. --backtitle $"Freedombone Configuration" \
  760. --defaultno \
  761. --yesno $"\nAre you installing onto a Beaglebone Black?" 7 60
  762. fi
  763. sel=$?
  764. case $sel in
  765. 0) INSTALLING_ON_BBB="yes";;
  766. 1) INSTALLING_ON_BBB="no";;
  767. 255) exit 1;;
  768. esac
  769. if [[ $INSTALLING_ON_BBB == "yes" ]]; then
  770. USB_DRIVE=/dev/sda1
  771. fi
  772. save_configuration_file
  773. fi
  774. if [[ $MINIMAL_INSTALL == "no" ]]; then
  775. if [[ $SYSTEM_TYPE != "$VARIANT_MESH" ]]; then
  776. interactive_gpg
  777. data=$(tempfile 2>/dev/null)
  778. trap "rm -f $data" 0 1 2 5 15
  779. 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."
  780. if [[ $(grep "ENABLE_SOCIAL_KEY_MANAGEMENT" temp.cfg | awk -F '=' '{print $2}') == "yes" ]]; then
  781. dialog --title $"Social Key Management" \
  782. --backtitle $"Freedombone Configuration" \
  783. --yesno "$SOCIAL_KEY_STR" 15 60
  784. else
  785. dialog --title $"Social Key Management" \
  786. --backtitle $"Freedombone Configuration" \
  787. --defaultno \
  788. --yesno "$SOCIAL_KEY_STR" 15 60
  789. fi
  790. sel=$?
  791. case $sel in
  792. 0) ENABLE_SOCIAL_KEY_MANAGEMENT="yes";;
  793. 255) exit 1;;
  794. esac
  795. save_configuration_file
  796. fi
  797. else
  798. # enable for the minimal case
  799. ENABLE_SOCIAL_KEY_MANAGEMENT="yes"
  800. fi
  801. if [[ $MINIMAL_INSTALL == "no" ]]; then
  802. data=$(tempfile 2>/dev/null)
  803. trap "rm -f $data" 0 1 2 5 15
  804. if [[ $INSTALLING_ON_BBB != "yes" ]]; then
  805. dialog --backtitle $"Freedombone Configuration" \
  806. --radiolist $"Type of Random Number Generator:" 10 40 2 \
  807. 1 Haveged on \
  808. 2 OneRNG off 2> $data
  809. sel=$?
  810. case $sel in
  811. 1) exit 1;;
  812. 255) exit 1;;
  813. esac
  814. case $(cat $data) in
  815. 2) HWRNG_TYPE="onerng"
  816. dialog --title $"OneRNG Device" \
  817. --msgbox $"Please ensure that the OneRNG device is disconnected. You can reconnect it later during the installation" 8 60
  818. ;;
  819. 255) exit 1;;
  820. esac
  821. else
  822. HWRNG_TYPE="beaglebone"
  823. fi
  824. save_configuration_file
  825. fi
  826. if [[ $MINIMAL_INSTALL == "no" ]]; then
  827. data=$(tempfile 2>/dev/null)
  828. trap "rm -f $data" 0 1 2 5 15
  829. dialog --backtitle $"Freedombone Configuration" \
  830. --radiolist $"Where to download Debian packages from:" 25 45 49 \
  831. 1 $"Australia" off \
  832. 2 $"Austria" off \
  833. 3 $"Belarus" off \
  834. 4 $"Belgium" off \
  835. 5 $"Bosnia and Herzegovina" off \
  836. 6 $"Brazil" off \
  837. 7 $"Bulgaria" off \
  838. 8 $"Canada" off \
  839. 9 $"Chile" off \
  840. 10 $"China" off \
  841. 11 $"Croatia" off \
  842. 12 $"Czech Republic" off \
  843. 13 $"Denmark" off \
  844. 14 $"El Salvador" off \
  845. 15 $"Estonia" off \
  846. 16 $"Finland" off \
  847. 17 $"France 1" off \
  848. 18 $"France 2" off \
  849. 19 $"Germany 1" off \
  850. 20 $"Germany 2" off \
  851. 21 $"Greece" off \
  852. 22 $"Hungary" off \
  853. 23 $"Iceland" off \
  854. 24 $"Iran" off \
  855. 25 $"Ireland" off \
  856. 26 $"Italy" off \
  857. 27 $"Japan" off \
  858. 28 $"Korea" off \
  859. 29 $"Lithuania" off \
  860. 30 $"Mexico" off \
  861. 31 $"Netherlands" off \
  862. 32 $"New Caledonia" off \
  863. 33 $"New Zealand" off \
  864. 34 $"Norway" off \
  865. 35 $"Poland" off \
  866. 36 $"Portugal" off \
  867. 37 $"Romania" off \
  868. 38 $"Russia" off \
  869. 39 $"Slovakia" off \
  870. 40 $"Slovenia" off \
  871. 41 $"Spain" off \
  872. 42 $"Sweden" off \
  873. 43 $"Switzerland" off \
  874. 44 $"Taiwan" off \
  875. 45 $"Thailand" off \
  876. 46 $"Turkey" off \
  877. 47 $"Ukraine" off \
  878. 48 $"United Kingdom" off \
  879. 49 $"United States" on 2> $data
  880. sel=$?
  881. case $sel in
  882. 1) exit 1;;
  883. 255) exit 1;;
  884. esac
  885. case $(cat $data) in
  886. 1) DEBIAN_REPO='ftp.au.debian.org';;
  887. 2) DEBIAN_REPO='ftp.at.debian.org';;
  888. 3) DEBIAN_REPO='ftp.by.debian.org';;
  889. 4) DEBIAN_REPO='ftp.be.debian.org';;
  890. 5) DEBIAN_REPO='ftp.ba.debian.org';;
  891. 6) DEBIAN_REPO='ftp.br.debian.org';;
  892. 7) DEBIAN_REPO='ftp.bg.debian.org';;
  893. 8) DEBIAN_REPO='ftp.ca.debian.org';;
  894. 9) DEBIAN_REPO='ftp.cl.debian.org';;
  895. 10) DEBIAN_REPO='ftp.cn.debian.org';;
  896. 11) DEBIAN_REPO='ftp.hr.debian.org';;
  897. 12) DEBIAN_REPO='ftp.cz.debian.org';;
  898. 13) DEBIAN_REPO='ftp.dk.debian.org';;
  899. 14) DEBIAN_REPO='ftp.sv.debian.org';;
  900. 15) DEBIAN_REPO='ftp.ee.debian.org';;
  901. 16) DEBIAN_REPO='ftp.fi.debian.org';;
  902. 17) DEBIAN_REPO='ftp2.fr.debian.org';;
  903. 18) DEBIAN_REPO='ftp.fr.debian.org';;
  904. 19) DEBIAN_REPO='ftp2.de.debian.org';;
  905. 20) DEBIAN_REPO='ftp.de.debian.org';;
  906. 21) DEBIAN_REPO='ftp.gr.debian.org';;
  907. 22) DEBIAN_REPO='ftp.hu.debian.org';;
  908. 23) DEBIAN_REPO='ftp.is.debian.org';;
  909. 24) DEBIAN_REPO='ftp.ir.debian.org';;
  910. 25) DEBIAN_REPO='ftp.ie.debian.org';;
  911. 26) DEBIAN_REPO='ftp.it.debian.org';;
  912. 27) DEBIAN_REPO='ftp.jp.debian.org';;
  913. 28) DEBIAN_REPO='ftp.kr.debian.org';;
  914. 29) DEBIAN_REPO='ftp.lt.debian.org';;
  915. 30) DEBIAN_REPO='ftp.mx.debian.org';;
  916. 31) DEBIAN_REPO='ftp.nl.debian.org';;
  917. 32) DEBIAN_REPO='ftp.nc.debian.org';;
  918. 33) DEBIAN_REPO='ftp.nz.debian.org';;
  919. 34) DEBIAN_REPO='ftp.no.debian.org';;
  920. 35) DEBIAN_REPO='ftp.pl.debian.org';;
  921. 36) DEBIAN_REPO='ftp.pt.debian.org';;
  922. 37) DEBIAN_REPO='ftp.ro.debian.org';;
  923. 38) DEBIAN_REPO='ftp.ru.debian.org';;
  924. 39) DEBIAN_REPO='ftp.sk.debian.org';;
  925. 40) DEBIAN_REPO='ftp.si.debian.org';;
  926. 41) DEBIAN_REPO='ftp.es.debian.org';;
  927. 42) DEBIAN_REPO='ftp.se.debian.org';;
  928. 43) DEBIAN_REPO='ftp.ch.debian.org';;
  929. 44) DEBIAN_REPO='ftp.tw.debian.org';;
  930. 45) DEBIAN_REPO='ftp.th.debian.org';;
  931. 46) DEBIAN_REPO='ftp.tr.debian.org';;
  932. 47) DEBIAN_REPO='ftp.ua.debian.org';;
  933. 48) DEBIAN_REPO='ftp.uk.debian.org';;
  934. 49) DEBIAN_REPO='ftp.us.debian.org';;
  935. 255) exit 1;;
  936. esac
  937. save_configuration_file
  938. else
  939. DEBIAN_REPO='ftp.de.debian.org'
  940. fi
  941. if [[ $MINIMAL_INSTALL == "no" && $ONION_ONLY == "no" ]]; then
  942. data=$(tempfile 2>/dev/null)
  943. trap "rm -f $data" 0 1 2 5 15
  944. dialog --backtitle $"Freedombone Configuration" \
  945. --radiolist $"Pick a domain name service (DNS):" 25 50 16 \
  946. 1 $"Digital Courage" on \
  947. 2 $"German Privacy Foundation 1" off \
  948. 3 $"German Privacy Foundation 2" off \
  949. 4 $"Chaos Computer Club" off \
  950. 5 $"ClaraNet" off \
  951. 6 $"OpenNIC 1" off \
  952. 7 $"OpenNIC 2" off \
  953. 8 $"OpenNIC 3" off \
  954. 9 $"OpenNIC 4" off \
  955. 10 $"OpenNIC 5" off \
  956. 11 $"OpenNIC 6" off \
  957. 12 $"OpenNIC 7" off \
  958. 13 $"PowerNS" off \
  959. 14 $"ValiDOM" off \
  960. 15 $"Freie Unzensierte" off \
  961. 16 $"Google" off 2> $data
  962. sel=$?
  963. case $sel in
  964. 1) exit 1;;
  965. 255) exit 1;;
  966. esac
  967. case $(cat $data) in
  968. 1) NAMESERVER1='85.214.73.63'
  969. NAMESERVER2='213.73.91.35'
  970. ;;
  971. 2) NAMESERVER1='87.118.100.175'
  972. NAMESERVER2='94.75.228.29'
  973. ;;
  974. 3) NAMESERVER1='85.25.251.254'
  975. NAMESERVER2='2.141.58.13'
  976. ;;
  977. 4) NAMESERVER1='213.73.91.35'
  978. NAMESERVER2='85.214.73.63'
  979. ;;
  980. 5) NAMESERVER1='212.82.225.7'
  981. NAMESERVER2='212.82.226.212'
  982. ;;
  983. 6) NAMESERVER1='58.6.115.42'
  984. NAMESERVER2='58.6.115.43'
  985. ;;
  986. 7) NAMESERVER1='119.31.230.42'
  987. NAMESERVER2='200.252.98.162'
  988. ;;
  989. 8) NAMESERVER1='217.79.186.148'
  990. NAMESERVER2='81.89.98.6'
  991. ;;
  992. 9) NAMESERVER1='78.159.101.37'
  993. NAMESERVER2='203.167.220.153'
  994. ;;
  995. 10) NAMESERVER1='82.229.244.191'
  996. NAMESERVER2='82.229.244.191'
  997. ;;
  998. 11) NAMESERVER1='216.87.84.211'
  999. NAMESERVER2='66.244.95.20'
  1000. ;;
  1001. 12) NAMESERVER1='207.192.69.155'
  1002. NAMESERVER2='72.14.189.120'
  1003. ;;
  1004. 13) NAMESERVER1='194.145.226.26'
  1005. NAMESERVER2='77.220.232.44'
  1006. ;;
  1007. 14) NAMESERVER1='78.46.89.147'
  1008. NAMESERVER2='88.198.75.145'
  1009. ;;
  1010. 15) NAMESERVER1='85.25.149.144'
  1011. NAMESERVER2='87.106.37.196'
  1012. ;;
  1013. 16) NAMESERVER1='8.8.8.8'
  1014. NAMESERVER2='4.4.4.4'
  1015. ;;
  1016. 255) exit 1;;
  1017. esac
  1018. save_configuration_file
  1019. else
  1020. # as defaults for a minimal install process these settings are debatable
  1021. NAMESERVER1='85.214.73.63'
  1022. NAMESERVER2='213.73.91.35'
  1023. fi
  1024. if [[ $SYSTEM_TYPE != "$VARIANT_MESH" && $ONION_ONLY == "no" ]]; then
  1025. data=$(tempfile 2>/dev/null)
  1026. trap "rm -f $data" 0 1 2 5 15
  1027. dialog --backtitle $"Freedombone Configuration" \
  1028. --radiolist $"Choose Dynamic DNS provider:" 15 40 14 \
  1029. 1 dyndns off \
  1030. 2 freedns on \
  1031. 3 zoneedit off \
  1032. 4 no-ip off \
  1033. 5 easydns off \
  1034. 6 tzo off \
  1035. 7 3322 off \
  1036. 8 dnsomatic off \
  1037. 9 tunnelbroker off \
  1038. 10 dns.he.net off \
  1039. 11 dynsip off \
  1040. 12 sitelutions off \
  1041. 13 dnsexit off \
  1042. 14 changeip off 2> $data
  1043. sel=$?
  1044. case $sel in
  1045. 1) exit 1;;
  1046. 255) exit 1;;
  1047. esac
  1048. case $(cat $data) in
  1049. 1) DDNS_PROVIDER="default@dyndns.org";;
  1050. 2) DDNS_PROVIDER="default@freedns.afraid.org";;
  1051. 3) DDNS_PROVIDER="default@zoneedit.com";;
  1052. 4) DDNS_PROVIDER="default@no-ip.com";;
  1053. 5) DDNS_PROVIDER="default@easydns.com";;
  1054. 6) DDNS_PROVIDER="default@tzo.com";;
  1055. 7) DDNS_PROVIDER="dyndns@3322.org";;
  1056. 8) DDNS_PROVIDER="default@dnsomatic.com";;
  1057. 9) DDNS_PROVIDER="ipv6tb@he.net";;
  1058. 10) DDNS_PROVIDER="dyndns@he.net";;
  1059. 11) DDNS_PROVIDER="default@dynsip.org";;
  1060. 12) DDNS_PROVIDER="default@sitelutions.com";;
  1061. 13) DDNS_PROVIDER="default@dnsexit.com";;
  1062. 14) DDNS_PROVIDER="default@changeip.com";;
  1063. 255) exit 1;;
  1064. esac
  1065. save_configuration_file
  1066. valid_ddns_username=
  1067. while [ ! $valid_ddns_username ]
  1068. do
  1069. data=$(tempfile 2>/dev/null)
  1070. trap "rm -f $data" 0 1 2 5 15
  1071. dialog --backtitle $"Freedombone Configuration" \
  1072. --inputbox $"Dynamic DNS provider username" 10 30 "$(grep 'DDNS_USERNAME' temp.cfg | awk -F '=' '{print $2}')" 2> $data
  1073. sel=$?
  1074. case $sel in
  1075. 0) possible_username=$(cat $data)
  1076. if [ "$possible_username" ]; then
  1077. if [ ${#possible_username} -gt 1 ]; then
  1078. valid_ddns_username=$(cat $data)
  1079. DDNS_USERNAME=$valid_ddns_username
  1080. break;
  1081. fi
  1082. fi
  1083. ;;
  1084. 1) exit 1;;
  1085. 255) exit 1;;
  1086. esac
  1087. done
  1088. save_configuration_file
  1089. valid_ddns_password=
  1090. while [ ! $valid_ddns_password ]
  1091. do
  1092. data=$(tempfile 2>/dev/null)
  1093. trap "rm -f $data" 0 1 2 5 15
  1094. dialog --backtitle $"Freedombone Configuration" \
  1095. --clear \
  1096. --insecure \
  1097. --passwordbox $"Dynamic DNS provider password" 10 30 "$(grep 'DDNS_PASSWORD' temp.cfg | awk -F '=' '{print $2}')" 2> $data
  1098. sel=$?
  1099. case $sel in
  1100. 0) possible_password=$(cat $data)
  1101. if [ "$possible_password" ]; then
  1102. if [ ${#possible_password} -gt 1 ]; then
  1103. valid_ddns_password=$(cat $data)
  1104. DDNS_PASSWORD=$valid_ddns_password
  1105. break;
  1106. fi
  1107. fi
  1108. ;;
  1109. 1) exit 1;;
  1110. 255) exit 1;;
  1111. esac
  1112. if [ ${#DDNS_PASSWORD} -lt $MINIMUM_PASSWORD_LENGTH ]; then
  1113. 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
  1114. DDNS_PASSWORD=""
  1115. fi
  1116. done
  1117. save_configuration_file
  1118. fi
  1119. if [[ $SYSTEM_TYPE != "$VARIANT_MESH" ]]; then
  1120. valid_name=
  1121. while [ ! $valid_name ]
  1122. do
  1123. data=$(tempfile 2>/dev/null)
  1124. trap "rm -f $data" 0 1 2 5 15
  1125. dialog --backtitle $"Freedombone Configuration" \
  1126. --inputbox $"Your full name (or nick)" 10 30 "$(grep 'MY_NAME' temp.cfg | awk -F '=' '{print $2}')" 2> $data
  1127. sel=$?
  1128. case $sel in
  1129. 0) possible_name=$(cat $data)
  1130. if [ "$possible_name" ]; then
  1131. if [ ${#possible_name} -gt 1 ]; then
  1132. valid_name="$possible_name"
  1133. MY_NAME="$possible_name"
  1134. break;
  1135. fi
  1136. fi
  1137. ;;
  1138. 1) exit 1;;
  1139. 255) exit 1;;
  1140. esac
  1141. done
  1142. save_configuration_file
  1143. fi
  1144. if [[ $MINIMAL_INSTALL == "no" && $ONION_ONLY == "no" ]]; then
  1145. SET_STATIC_IP="no"
  1146. dialog --title $"Static local IP address" \
  1147. --backtitle $"Freedombone Configuration" \
  1148. --defaultno \
  1149. --yesno $"\nDo you want to set a static local IP address for this system?\n\nFor example, 192.168.1.10" 10 60
  1150. sel=$?
  1151. case $sel in
  1152. 0) SET_STATIC_IP="yes";;
  1153. 255) exit 1;;
  1154. esac
  1155. if [[ $SET_STATIC_IP == "yes" ]]; then
  1156. if [ ! $LOCAL_NETWORK_STATIC_IP_ADDRESS ]; then
  1157. LOCAL_NETWORK_STATIC_IP_ADDRESS=$(grep 'LOCAL_NETWORK_STATIC_IP_ADDRESS' temp.cfg | awk -F '=' '{print $2}')
  1158. if [ ! $LOCAL_NETWORK_STATIC_IP_ADDRESS ]; then
  1159. LOCAL_NETWORK_STATIC_IP_ADDRESS='192.168..'
  1160. fi
  1161. fi
  1162. if [ ! $ROUTER_IP_ADDRESS ]; then
  1163. ROUTER_IP_ADDRESS=$(grep 'ROUTER_IP_ADDRESS' temp.cfg | awk -F '=' '{print $2}')
  1164. if [ ! $ROUTER_IP_ADDRESS ]; then
  1165. ROUTER_IP_ADDRESS='192.168..'
  1166. fi
  1167. fi
  1168. data=$(tempfile 2>/dev/null)
  1169. trap "rm -f $data" 0 1 2 5 15
  1170. dialog --backtitle $"Freedombone Configuration" \
  1171. --title $"Local Network Configuration" \
  1172. --form $"\nPlease enter the IP addresses:" 11 55 3 \
  1173. $"This system:" 1 1 "$LOCAL_NETWORK_STATIC_IP_ADDRESS" 1 16 16 15 \
  1174. $"Internet router:" 2 1 "$ROUTER_IP_ADDRESS" 2 16 16 15 \
  1175. 2> $data
  1176. sel=$?
  1177. case $sel in
  1178. 1) exit 1;;
  1179. 255) exit 1;;
  1180. esac
  1181. LOCAL_NETWORK_STATIC_IP_ADDRESS=$(cat $data | sed -n 1p)
  1182. ROUTER_IP_ADDRESS=$(cat $data | sed -n 2p)
  1183. save_configuration_file
  1184. fi
  1185. fi
  1186. if [[ $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_FULL" ]]; then
  1187. if [[ $ONION_ONLY != "no" ]]; then
  1188. WIKI_TITLE='My Wiki'
  1189. WIKI_DOMAIN_NAME='wiki.onion'
  1190. else
  1191. WIKI_DETAILS_COMPLETE=
  1192. while [ ! $WIKI_DETAILS_COMPLETE ]
  1193. do
  1194. data=$(tempfile 2>/dev/null)
  1195. trap "rm -f $data" 0 1 2 5 15
  1196. if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then
  1197. dialog --backtitle $"Freedombone Configuration" \
  1198. --title $"Wiki Configuration" \
  1199. --form $"\nPlease enter your wiki details:" 11 55 4 \
  1200. $"Title:" 1 1 "$(grep 'WIKI_TITLE' temp.cfg | awk -F '=' '{print $2}')" 1 16 25 40 \
  1201. $"Domain:" 2 1 "$(grep 'WIKI_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 2 16 25 40 \
  1202. $"Code:" 3 1 "$(grep 'WIKI_CODE' temp.cfg | awk -F '=' '{print $2}')" 3 16 25 40 \
  1203. 2> $data
  1204. else
  1205. dialog --backtitle $"Freedombone Configuration" \
  1206. --title $"Wiki Configuration" \
  1207. --form $"\nPlease enter your wiki details:" 11 55 3 \
  1208. $"Title:" 1 1 "$(grep 'WIKI_TITLE' temp.cfg | awk -F '=' '{print $2}')" 1 16 25 40 \
  1209. $"Domain:" 2 1 "$(grep 'WIKI_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 2 16 25 40 \
  1210. 2> $data
  1211. fi
  1212. sel=$?
  1213. case $sel in
  1214. 1) exit 1;;
  1215. 255) exit 1;;
  1216. esac
  1217. WIKI_TITLE=$(cat $data | sed -n 1p)
  1218. WIKI_DOMAIN_NAME=$(cat $data | sed -n 2p)
  1219. if [ $WIKI_DOMAIN_NAME ]; then
  1220. TEST_DOMAIN_NAME=$WIKI_DOMAIN_NAME
  1221. validate_domain_name
  1222. if [[ $TEST_DOMAIN_NAME != $WIKI_DOMAIN_NAME ]]; then
  1223. WIKI_DOMAIN_NAME=
  1224. dialog --title $"Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50
  1225. else
  1226. if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then
  1227. WIKI_CODE=$(cat $data | sed -n 3p)
  1228. if [ ${#WIKI_CODE} -lt 30 ]; then
  1229. WIKI_DOMAIN_NAME=
  1230. dialog --title $"FreeDNS code" --msgbox "$FREEDNS_MESSAGE" 15 50
  1231. fi
  1232. fi
  1233. fi
  1234. fi
  1235. if [ $WIKI_DOMAIN_NAME ]; then
  1236. WIKI_DETAILS_COMPLETE="yes"
  1237. fi
  1238. done
  1239. fi
  1240. save_configuration_file
  1241. fi
  1242. if [[ $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_FULL" ]]; then
  1243. if [[ $ONION_ONLY != "no" ]]; then
  1244. MY_BLOG_TITLE='My Blog'
  1245. FULLBLOG_DOMAIN_NAME='blog.onion'
  1246. else
  1247. FULLBLOG_DETAILS_COMPLETE=
  1248. while [ ! $FULLBLOG_DETAILS_COMPLETE ]
  1249. do
  1250. data=$(tempfile 2>/dev/null)
  1251. trap "rm -f $data" 0 1 2 5 15
  1252. if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then
  1253. dialog --backtitle $"Freedombone Configuration" \
  1254. --title $"Blog Configuration" \
  1255. --form $"\nPlease enter your blog details:" 11 55 4 \
  1256. $"Title:" 1 1 "$(grep 'MY_BLOG_TITLE' temp.cfg | awk -F '=' '{print $2}')" 1 16 25 30 \
  1257. $"Domain:" 2 1 "$(grep 'FULLBLOG_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 2 16 25 30 \
  1258. $"Code:" 3 1 "$(grep 'FULLBLOG_CODE' temp.cfg | awk -F '=' '{print $2}')" 3 16 25 30 \
  1259. 2> $data
  1260. else
  1261. dialog --backtitle $"Freedombone Configuration" \
  1262. --title $"Blog Configuration" \
  1263. --form $"\nPlease enter your blog details:" 11 55 3 \
  1264. $"Title:" 1 1 "$(grep 'MY_BLOG_TITLE' temp.cfg | awk -F '=' '{print $2}')" 1 16 25 30 \
  1265. $"Domain:" 2 1 "$(grep 'FULLBLOG_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 2 16 25 30 \
  1266. 2> $data
  1267. fi
  1268. sel=$?
  1269. case $sel in
  1270. 1) exit 1;;
  1271. 255) exit 1;;
  1272. esac
  1273. MY_BLOG_TITLE=$(cat $data | sed -n 1p)
  1274. FULLBLOG_DOMAIN_NAME=$(cat $data | sed -n 2p)
  1275. if [ $FULLBLOG_DOMAIN_NAME ]; then
  1276. if [[ $FULLBLOG_DOMAIN_NAME == "$WIKI_DOMAIN_NAME" ]]; then
  1277. FULLBLOG_DOMAIN_NAME=""
  1278. fi
  1279. TEST_DOMAIN_NAME=$FULLBLOG_DOMAIN_NAME
  1280. validate_domain_name
  1281. if [[ $TEST_DOMAIN_NAME != $FULLBLOG_DOMAIN_NAME ]]; then
  1282. FULLBLOG_DOMAIN_NAME=
  1283. dialog --title $"Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50
  1284. else
  1285. if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then
  1286. FULLBLOG_CODE=$(cat $data | sed -n 3p)
  1287. if [ ${#FULLBLOG_CODE} -lt 30 ]; then
  1288. FULLBLOG_DOMAIN_NAME=
  1289. dialog --title $"FreeDNS code" --msgbox "$FREEDNS_MESSAGE" 15 50
  1290. fi
  1291. fi
  1292. fi
  1293. fi
  1294. if [ $FULLBLOG_DOMAIN_NAME ]; then
  1295. FULLBLOG_DETAILS_COMPLETE="yes"
  1296. fi
  1297. done
  1298. fi
  1299. save_configuration_file
  1300. fi
  1301. if [[ $SYSTEM_TYPE == "$VARIANT_CLOUD" || $SYSTEM_TYPE == "$VARIANT_FULL" ]]; then
  1302. if [[ $ONION_ONLY != "no" ]]; then
  1303. OWNCLOUD_DOMAIN_NAME='owncloud.onion'
  1304. else
  1305. OWNCLOUD_DETAILS_COMPLETE=
  1306. while [ ! $OWNCLOUD_DETAILS_COMPLETE ]
  1307. do
  1308. data=$(tempfile 2>/dev/null)
  1309. trap "rm -f $data" 0 1 2 5 15
  1310. if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then
  1311. dialog --backtitle $"Freedombone Configuration" \
  1312. --title $"Owncloud Configuration" \
  1313. --form $"\nPlease enter your Owncloud details:" 11 55 3 \
  1314. $"Domain:" 1 1 "$(grep 'OWNCLOUD_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 1 16 25 30 \
  1315. $"Code:" 2 1 "$(grep 'OWNCLOUD_CODE' temp.cfg | awk -F '=' '{print $2}')" 2 16 25 30 \
  1316. 2> $data
  1317. else
  1318. dialog --backtitle $"Freedombone Configuration" \
  1319. --title $"Owncloud Configuration" \
  1320. --form $"\nPlease enter your Owncloud details:" 11 55 3 \
  1321. $"Domain:" 1 1 "$(grep 'OWNCLOUD_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 1 16 25 30 \
  1322. 2> $data
  1323. fi
  1324. sel=$?
  1325. case $sel in
  1326. 1) exit 1;;
  1327. 255) exit 1;;
  1328. esac
  1329. OWNCLOUD_DOMAIN_NAME=$(cat $data | sed -n 1p)
  1330. if [ $OWNCLOUD_DOMAIN_NAME ]; then
  1331. TEST_DOMAIN_NAME=$OWNCLOUD_DOMAIN_NAME
  1332. validate_domain_name
  1333. if [[ $TEST_DOMAIN_NAME != $OWNCLOUD_DOMAIN_NAME ]]; then
  1334. OWNCLOUD_DOMAIN_NAME=
  1335. dialog --title $"Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50
  1336. else
  1337. if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then
  1338. OWNCLOUD_CODE=$(cat $data | sed -n 2p)
  1339. if [ ${#OWNCLOUD_CODE} -lt 30 ]; then
  1340. OWNCLOUD_DOMAIN_NAME=
  1341. dialog --title $"FreeDNS code" --msgbox "$FREEDNS_MESSAGE" 15 50
  1342. fi
  1343. fi
  1344. fi
  1345. fi
  1346. if [ $OWNCLOUD_DOMAIN_NAME ]; then
  1347. OWNCLOUD_DETAILS_COMPLETE="yes"
  1348. fi
  1349. done
  1350. fi
  1351. save_configuration_file
  1352. fi
  1353. if [[ $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_FULL" ]]; then
  1354. if [[ $ONION_ONLY != "no" ]]; then
  1355. HUBZILLA_DOMAIN_NAME='hubzilla.onion'
  1356. else
  1357. HUBZILLA_DETAILS_COMPLETE=
  1358. while [ ! $HUBZILLA_DETAILS_COMPLETE ]
  1359. do
  1360. data=$(tempfile 2>/dev/null)
  1361. trap "rm -f $data" 0 1 2 5 15
  1362. if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then
  1363. dialog --backtitle $"Freedombone Configuration" \
  1364. --title $"Hubzilla Configuration" \
  1365. --form $"\nPlease enter your Hubzilla details.\n\nIMPORTANT: This should be a domain name which is supported by Let's Encrypt:" 14 55 3 \
  1366. $"Domain:" 1 1 "$(grep 'HUBZILLA_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 1 16 25 30 \
  1367. $"Code:" 2 1 "$(grep 'HUBZILLA_CODE' temp.cfg | awk -F '=' '{print $2}')" 2 16 25 30 \
  1368. 2> $data
  1369. else
  1370. dialog --backtitle $"Freedombone Configuration" \
  1371. --title $"Hubzilla Configuration" \
  1372. --form $"\nPlease enter your Hubzilla details\n\nIMPORTANT: This should be a domain name which is supported by Let's Encrypt:" 11 55 3 \
  1373. $"Domain:" 1 1 "$(grep 'HUBZILLA_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 1 16 25 30 \
  1374. 2> $data
  1375. fi
  1376. sel=$?
  1377. case $sel in
  1378. 1) exit 1;;
  1379. 255) exit 1;;
  1380. esac
  1381. HUBZILLA_DOMAIN_NAME=$(cat $data | sed -n 1p)
  1382. if [ $HUBZILLA_DOMAIN_NAME ]; then
  1383. TEST_DOMAIN_NAME=$HUBZILLA_DOMAIN_NAME
  1384. validate_domain_name
  1385. if [[ $TEST_DOMAIN_NAME != $HUBZILLA_DOMAIN_NAME ]]; then
  1386. HUBZILLA_DOMAIN_NAME=
  1387. dialog --title $"Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50
  1388. else
  1389. if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then
  1390. HUBZILLA_CODE=$(cat $data | sed -n 2p)
  1391. if [ ${#HUBZILLA_CODE} -lt 30 ]; then
  1392. HUBZILLA_DOMAIN_NAME=
  1393. dialog --title $"FreeDNS code" --msgbox "$FREEDNS_MESSAGE" 15 50
  1394. fi
  1395. fi
  1396. fi
  1397. fi
  1398. if [ $HUBZILLA_DOMAIN_NAME ]; then
  1399. HUBZILLA_DETAILS_COMPLETE="yes"
  1400. fi
  1401. done
  1402. fi
  1403. save_configuration_file
  1404. fi
  1405. if [[ $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_FULL" ]]; then
  1406. if [[ $ONION_ONLY != "no" ]]; then
  1407. MICROBLOG_DOMAIN_NAME='microblog.onion'
  1408. else
  1409. MICROBLOG_DETAILS_COMPLETE=
  1410. while [ ! $MICROBLOG_DETAILS_COMPLETE ]
  1411. do
  1412. data=$(tempfile 2>/dev/null)
  1413. trap "rm -f $data" 0 1 2 5 15
  1414. if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then
  1415. dialog --backtitle $"Freedombone Configuration" \
  1416. --title $"Microblog Configuration" \
  1417. --form $"\nPlease enter your Microblog details\n\nIMPORTANT: This should be a domain name which is supported by Let's Encrypt:" 11 55 3 \
  1418. $"Domain:" 1 1 "$(grep 'MICROBLOG_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 1 16 25 30 \
  1419. $"Code:" 2 1 "$(grep 'MICROBLOG_CODE' temp.cfg | awk -F '=' '{print $2}')" 2 16 25 30 \
  1420. 2> $data
  1421. else
  1422. dialog --backtitle $"Freedombone Configuration" \
  1423. --title $"Microblog Configuration" \
  1424. --form $"\nPlease enter your Microblog details\n\nIMPORTANT: This should be a domain name which is supported by Let's Encrypt:" 11 55 3 \
  1425. $"Domain:" 1 1 "$(grep 'MICROBLOG_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 1 16 25 30 \
  1426. 2> $data
  1427. fi
  1428. sel=$?
  1429. case $sel in
  1430. 1) exit 1;;
  1431. 255) exit 1;;
  1432. esac
  1433. MICROBLOG_DOMAIN_NAME=$(cat $data | sed -n 1p)
  1434. if [ $MICROBLOG_DOMAIN_NAME ]; then
  1435. if [[ $MICROBLOG_DOMAIN_NAME == "$HUBZILLA_DOMAIN_NAME" ]]; then
  1436. MICROBLOG_DOMAIN_NAME=""
  1437. fi
  1438. TEST_DOMAIN_NAME=$MICROBLOG_DOMAIN_NAME
  1439. validate_domain_name
  1440. if [[ $TEST_DOMAIN_NAME != $MICROBLOG_DOMAIN_NAME ]]; then
  1441. MICROBLOG_DOMAIN_NAME=
  1442. dialog --title $"Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50
  1443. else
  1444. if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then
  1445. MICROBLOG_CODE=$(cat $data | sed -n 2p)
  1446. if [ ${#MICROBLOG_CODE} -lt 30 ]; then
  1447. MICROBLOG_DOMAIN_NAME=
  1448. dialog --title $"FreeDNS code" --msgbox "$FREEDNS_MESSAGE" 15 50
  1449. fi
  1450. fi
  1451. fi
  1452. fi
  1453. if [ $MICROBLOG_DOMAIN_NAME ]; then
  1454. MICROBLOG_DETAILS_COMPLETE="yes"
  1455. fi
  1456. done
  1457. fi
  1458. save_configuration_file
  1459. fi
  1460. if [[ $SYSTEM_TYPE == "$VARIANT_DEVELOPER" || $SYSTEM_TYPE == "$VARIANT_FULL" ]]; then
  1461. if [[ $ONION_ONLY != "no" ]]; then
  1462. GIT_DOMAIN_NAME='git.onion'
  1463. else
  1464. DEVELOPER_DETAILS_COMPLETE=
  1465. while [ ! $DEVELOPER_DETAILS_COMPLETE ]
  1466. do
  1467. data=$(tempfile 2>/dev/null)
  1468. trap "rm -f $data" 0 1 2 5 15
  1469. if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then
  1470. dialog --backtitle $"Freedombone Configuration" \
  1471. --title $"Developer Configuration" \
  1472. --form $"\nPlease enter your Git hosting site details.\nIf You don't need developer tools then just select Ok" 11 55 3 \
  1473. $"Domain:" 1 1 "$(grep 'GIT_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 1 16 25 40 \
  1474. $"Code:" 2 1 "$(grep 'GIT_CODE' temp.cfg | awk -F '=' '{print $2}')" 2 16 25 40 \
  1475. 2> $data
  1476. else
  1477. dialog --backtitle $"Freedombone Configuration" \
  1478. --title $"Developer Configuration" \
  1479. --form $"\nPlease enter your Git hosting site details.\nIf You don't need developer tools then just select Ok" 11 55 2 \
  1480. $"Domain:" 1 1 "$(grep 'GIT_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 1 16 25 40 \
  1481. 2> $data
  1482. fi
  1483. sel=$?
  1484. case $sel in
  1485. 1) exit 1;;
  1486. 255) exit 1;;
  1487. esac
  1488. GIT_DOMAIN_NAME=$(cat $data | sed -n 1p)
  1489. if [ $GIT_DOMAIN_NAME ]; then
  1490. TEST_DOMAIN_NAME=$GIT_DOMAIN_NAME
  1491. validate_domain_name
  1492. if [[ $TEST_DOMAIN_NAME != $GIT_DOMAIN_NAME ]]; then
  1493. GIT_DOMAIN_NAME=
  1494. dialog --title $"Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50
  1495. else
  1496. if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then
  1497. GIT_CODE=$(cat $data | sed -n 2p)
  1498. if [ ${#GIT_CODE} -lt 30 ]; then
  1499. GIT_DOMAIN_NAME=
  1500. dialog --title $"FreeDNS code" --msgbox "$FREEDNS_MESSAGE" 15 50
  1501. fi
  1502. fi
  1503. fi
  1504. else
  1505. DEVELOPER_DETAILS_COMPLETE="yes"
  1506. fi
  1507. if [ $GIT_DOMAIN_NAME ]; then
  1508. DEVELOPER_DETAILS_COMPLETE="yes"
  1509. fi
  1510. done
  1511. fi
  1512. save_configuration_file
  1513. fi
  1514. if [[ $SYSTEM_TYPE != "$VARIANT_MESH" ]]; then
  1515. if [[ $ONION_ONLY != "no" ]]; then
  1516. DEFAULT_DOMAIN_NAME="${PROJECT_NAME}.onion"
  1517. else
  1518. DEFAULT_DOMAIN_DETAILS_COMPLETE=
  1519. while [ ! $DEFAULT_DOMAIN_DETAILS_COMPLETE ]
  1520. do
  1521. data=$(tempfile 2>/dev/null)
  1522. trap "rm -f $data" 0 1 2 5 15
  1523. if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then
  1524. dialog --backtitle $"Freedombone Configuration" \
  1525. --title $"Your main domain name" \
  1526. --form $"\nWhich domain name should your email/XMPP/IRC/VoIP be associated with?" 11 55 3 \
  1527. $"Domain:" 1 1 "$(grep 'DEFAULT_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 1 16 25 30 \
  1528. $"Code:" 2 1 "$(grep 'DEFAULT_DOMAIN_CODE' temp.cfg | awk -F '=' '{print $2}')" 2 16 25 30 \
  1529. 2> $data
  1530. sel=$?
  1531. case $sel in
  1532. 1) exit 1;;
  1533. 255) exit 1;;
  1534. esac
  1535. DEFAULT_DOMAIN_NAME=$(cat $data | sed -n 1p)
  1536. DEFAULT_DOMAIN_CODE=$(cat $data | sed -n 2p)
  1537. if [ $DEFAULT_DOMAIN_NAME ]; then
  1538. if [ ${#DEFAULT_DOMAIN_CODE} -lt 30 ]; then
  1539. DEFAULT_DOMAIN_NAME=
  1540. dialog --title $"FreeDNS code" --msgbox "$FREEDNS_MESSAGE" 15 50
  1541. fi
  1542. fi
  1543. else
  1544. dialog --backtitle $"Freedombone Configuration" \
  1545. --inputbox $"Which domain name should your email/XMPP/IRC/VoIP be associated with?" 10 45 \
  1546. "$(grep 'DEFAULT_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 2> $data
  1547. sel=$?
  1548. case $sel in
  1549. 0) DEFAULT_DOMAIN_NAME=$(cat $data);;
  1550. 1) exit 1;;
  1551. 255) exit 1;;
  1552. esac
  1553. fi
  1554. if [ $DEFAULT_DOMAIN_NAME ]; then
  1555. TEST_DOMAIN_NAME=$DEFAULT_DOMAIN_NAME
  1556. validate_domain_name
  1557. if [[ $TEST_DOMAIN_NAME != $DEFAULT_DOMAIN_NAME ]]; then
  1558. DEFAULT_DOMAIN_NAME=
  1559. dialog --title $"Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50
  1560. else
  1561. DEFAULT_DOMAIN_DETAILS_COMPLETE="yes"
  1562. fi
  1563. fi
  1564. done
  1565. fi
  1566. save_configuration_file
  1567. if [[ $ONION_ONLY != "no" ]]; then
  1568. EMAIL_ADDRESS=$MY_USERNAME@$DEFAULT_DOMAIN_NAME
  1569. else
  1570. while [ ${#MY_EMAIL_ADDRESS} -lt 5 ]
  1571. do
  1572. EMAIL_ADDRESS=$(grep 'MY_EMAIL_ADDRESS' temp.cfg | awk -F '=' '{print $2}')
  1573. if [ ! $EMAIL_ADDRESS ]; then
  1574. EMAIL_ADDRESS=$MY_USERNAME@$DEFAULT_DOMAIN_NAME
  1575. fi
  1576. if [ ${#MY_EMAIL_ADDRESS} -lt 5 ]; then
  1577. EMAIL_ADDRESS=$MY_USERNAME@$DEFAULT_DOMAIN_NAME
  1578. fi
  1579. data=$(tempfile 2>/dev/null)
  1580. trap "rm -f $data" 0 1 2 5 15
  1581. dialog --backtitle $"Freedombone Configuration" \
  1582. --inputbox $"Your email address" 10 30 "$EMAIL_ADDRESS" 2> $data
  1583. sel=$?
  1584. case $sel in
  1585. 0) MY_EMAIL_ADDRESS=$(cat $data);;
  1586. 1) exit 1;;
  1587. 255) exit 1;;
  1588. esac
  1589. done
  1590. fi
  1591. save_configuration_file
  1592. fi
  1593. # delete the temporary configuration file
  1594. if [ -f temp.cfg ]; then
  1595. shred -zu temp.cfg
  1596. fi
  1597. }
  1598. function show_result {
  1599. clear
  1600. echo ''
  1601. echo -n $"Configuration filename:"
  1602. echo " $CONFIGURATION_FILE"
  1603. echo ''
  1604. echo $'Contents:'
  1605. echo ''
  1606. cat $CONFIGURATION_FILE
  1607. echo ''
  1608. }
  1609. function read_configuration {
  1610. if [ ! $CONFIGURATION_FILE ]; then
  1611. CONFIGURATION_FILE='freedombone.cfg'
  1612. fi
  1613. if [ -f $CONFIGURATION_FILE ]; then
  1614. if grep -q "ENABLE_SOCIAL_KEY_MANAGEMENT" $CONFIGURATION_FILE; then
  1615. ENABLE_SOCIAL_KEY_MANAGEMENT=$(grep "ENABLE_SOCIAL_KEY_MANAGEMENT" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1616. fi
  1617. if grep -q "GIT_DOMAIN_NAME" $CONFIGURATION_FILE; then
  1618. GIT_DOMAIN_NAME=$(grep "GIT_DOMAIN_NAME" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1619. fi
  1620. if grep -q "GIT_CODE" $CONFIGURATION_FILE; then
  1621. GIT_CODE=$(grep "GIT_CODE" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1622. fi
  1623. if grep -q "MY_USERNAME" $CONFIGURATION_FILE; then
  1624. MY_USERNAME=$(grep "MY_USERNAME" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1625. fi
  1626. if grep -q "DOMAIN_NAME" $CONFIGURATION_FILE; then
  1627. # for backwards compatability
  1628. DEFAULT_DOMAIN_NAME=$(grep "DOMAIN_NAME" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1629. fi
  1630. if grep -q "DEFAULT_DOMAIN_NAME" $CONFIGURATION_FILE; then
  1631. DEFAULT_DOMAIN_NAME=$(grep "DEFAULT_DOMAIN_NAME" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1632. fi
  1633. if grep -q "DEFAULT_DOMAIN_CODE" $CONFIGURATION_FILE; then
  1634. DEFAULT_DOMAIN_CODE=$(grep "DEFAULT_DOMAIN_CODE" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1635. fi
  1636. if grep -q "NAMESERVER1" $CONFIGURATION_FILE; then
  1637. NAMESERVER1=$(grep "NAMESERVER1" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1638. fi
  1639. if grep -q "NAMESERVER2" $CONFIGURATION_FILE; then
  1640. NAMESERVER2=$(grep "NAMESERVER2" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1641. fi
  1642. if grep -q "DEBIAN_REPO" $CONFIGURATION_FILE; then
  1643. DEBIAN_REPO=$(grep "DEBIAN_REPO" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1644. 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."
  1645. fi
  1646. if grep -q "DDNS_PROVIDER" $CONFIGURATION_FILE; then
  1647. DDNS_PROVIDER=$(grep "DDNS_PROVIDER" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1648. fi
  1649. if grep -q "DDNS_USERNAME" $CONFIGURATION_FILE; then
  1650. DDNS_USERNAME=$(grep "DDNS_USERNAME" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1651. fi
  1652. if grep -q "DDNS_PASSWORD" $CONFIGURATION_FILE; then
  1653. DDNS_PASSWORD=$(grep "DDNS_PASSWORD" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1654. fi
  1655. if grep -q "LOCAL_NETWORK_STATIC_IP_ADDRESS" $CONFIGURATION_FILE; then
  1656. LOCAL_NETWORK_STATIC_IP_ADDRESS=$(grep "LOCAL_NETWORK_STATIC_IP_ADDRESS" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1657. fi
  1658. if grep -q "ENABLE_CJDNS" $CONFIGURATION_FILE; then
  1659. ENABLE_CJDNS=$(grep "ENABLE_CJDNS" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1660. fi
  1661. if grep -q "ENABLE_BATMAN" $CONFIGURATION_FILE; then
  1662. ENABLE_BATMAN=$(grep "ENABLE_BATMAN" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1663. fi
  1664. if grep -q "ENABLE_BABEL" $CONFIGURATION_FILE; then
  1665. ENABLE_BABEL=$(grep "ENABLE_BABEL" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1666. fi
  1667. if grep -q "ROUTER_IP_ADDRESS" $CONFIGURATION_FILE; then
  1668. ROUTER_IP_ADDRESS=$(grep "ROUTER_IP_ADDRESS" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1669. fi
  1670. if grep -q "WIKI_TITLE" $CONFIGURATION_FILE; then
  1671. WIKI_TITLE=$(grep "WIKI_TITLE" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1672. fi
  1673. if grep -q "MY_NAME" $CONFIGURATION_FILE; then
  1674. MY_NAME=$(grep "MY_NAME" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1675. fi
  1676. if grep -q "MY_EMAIL_ADDRESS" $CONFIGURATION_FILE; then
  1677. MY_EMAIL_ADDRESS=$(grep "MY_EMAIL_ADDRESS" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1678. fi
  1679. if grep -q "INSTALLING_ON_BBB" $CONFIGURATION_FILE; then
  1680. INSTALLING_ON_BBB=$(grep "INSTALLING_ON_BBB" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1681. fi
  1682. if grep -q "USB_DRIVE" $CONFIGURATION_FILE; then
  1683. USB_DRIVE=$(grep "USB_DRIVE" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1684. fi
  1685. if grep -q "PUBLIC_MAILING_LIST" $CONFIGURATION_FILE; then
  1686. PUBLIC_MAILING_LIST=$(grep "PUBLIC_MAILING_LIST" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1687. fi
  1688. if grep -q "MICROBLOG_DOMAIN_NAME" $CONFIGURATION_FILE; then
  1689. MICROBLOG_DOMAIN_NAME=$(grep "MICROBLOG_DOMAIN_NAME" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1690. fi
  1691. if grep -q "MICROBLOG_CODE" $CONFIGURATION_FILE; then
  1692. MICROBLOG_CODE=$(grep "MICROBLOG_CODE" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1693. fi
  1694. if grep -q "HUBZILLA_DOMAIN_NAME" $CONFIGURATION_FILE; then
  1695. HUBZILLA_DOMAIN_NAME=$(grep "HUBZILLA_DOMAIN_NAME" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1696. fi
  1697. if grep -q "HUBZILLA_CODE" $CONFIGURATION_FILE; then
  1698. HUBZILLA_CODE=$(grep "HUBZILLA_CODE" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1699. fi
  1700. if grep -q "OWNCLOUD_DOMAIN_NAME" $CONFIGURATION_FILE; then
  1701. OWNCLOUD_DOMAIN_NAME=$(grep "OWNCLOUD_DOMAIN_NAME" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1702. fi
  1703. if grep -q "OWNCLOUD_CODE" $CONFIGURATION_FILE; then
  1704. OWNCLOUD_CODE=$(grep "OWNCLOUD_CODE" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1705. fi
  1706. if grep -q "WIKI_DOMAIN_NAME" $CONFIGURATION_FILE; then
  1707. WIKI_DOMAIN_NAME=$(grep "WIKI_DOMAIN_NAME" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1708. fi
  1709. if grep -q "WIKI_CODE" $CONFIGURATION_FILE; then
  1710. WIKI_CODE=$(grep "WIKI_CODE" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1711. fi
  1712. if grep -q "FULLBLOG_DOMAIN_NAME" $CONFIGURATION_FILE; then
  1713. FULLBLOG_DOMAIN_NAME=$(grep "FULLBLOG_DOMAIN_NAME" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1714. fi
  1715. if grep -q "FULLBLOG_CODE" $CONFIGURATION_FILE; then
  1716. FULLBLOG_CODE=$(grep "FULLBLOG_CODE" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1717. fi
  1718. if grep -q "MY_BLOG_TITLE" $CONFIGURATION_FILE; then
  1719. MY_BLOG_TITLE=$(grep "MY_BLOG_TITLE" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1720. fi
  1721. if grep -q "MY_BLOG_SUBTITLE" $CONFIGURATION_FILE; then
  1722. MY_BLOG_SUBTITLE=$(grep "MY_BLOG_SUBTITLE" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1723. fi
  1724. if grep -q "MEDIAGOBLIN_DOMAIN_NAME" $CONFIGURATION_FILE; then
  1725. MEDIAGOBLIN_DOMAIN_NAME=$(grep "MEDIAGOBLIN_DOMAIN_NAME" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1726. fi
  1727. if grep -q "MEDIAGOBLIN_CODE" $CONFIGURATION_FILE; then
  1728. MEDIAGOBLIN_CODE=$(grep "MEDIAGOBLIN_CODE" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1729. fi
  1730. if grep -q "ESSID" $CONFIGURATION_FILE; then
  1731. ESSID=$(grep "ESSID" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1732. fi
  1733. if grep -q "BATMAN_CELLID" $CONFIGURATION_FILE; then
  1734. BATMAN_CELLID=$(grep "BATMAN_CELLID" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1735. fi
  1736. if grep -q "WIFI_CHANNEL" $CONFIGURATION_FILE; then
  1737. WIFI_CHANNEL=$(grep "WIFI_CHANNEL" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1738. fi
  1739. if grep -q "ONION_ONLY" $CONFIGURATION_FILE; then
  1740. ONION_ONLY=$(grep "ONION_ONLY" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
  1741. fi
  1742. fi
  1743. }
  1744. read_configuration
  1745. interactive_configuration
  1746. show_result
  1747. exit 0