freedombone-config 72KB

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