diff --git a/src/freedombone b/src/freedombone index 9aebd436..bb23baf4 100755 --- a/src/freedombone +++ b/src/freedombone @@ -252,6 +252,7 @@ function parse_args { read_config_param 'DEFAULT_DOMAIN_NAME' read_config_param 'MY_USERNAME' read_config_param 'SYSTEM_TYPE' + read_config_param 'ONION_ONLY' if [ ! -d /home/$MY_USERNAME ]; then echo $"There is no user '$MY_USERNAME' on the system. Use 'adduser $MY_USERNAME' to create the user." diff --git a/src/freedombone-app-blog b/src/freedombone-app-blog index 948bd6b6..36da064f 100755 --- a/src/freedombone-app-blog +++ b/src/freedombone-app-blog @@ -165,21 +165,9 @@ function install_interactive_blog { fi done - if grep -q "MY_BLOG_TITLE=" $CONFIGURATION_FILE; then - sed -i "s|MY_BLOG_TITLE=.*|MY_BLOG_TITLE=$MY_BLOG_TITLE|g" $CONFIGURATION_FILE - else - echo "MY_BLOG_TITLE=$MY_BLOG_TITLE" >> $CONFIGURATION_FILE - fi - if grep -q "FULLBLOG_DOMAIN_NAME=" $CONFIGURATION_FILE; then - sed -i "s|FULLBLOG_DOMAIN_NAME=.*|FULLBLOG_DOMAIN_NAME=$FULLBLOG_DOMAIN_NAME|g" $CONFIGURATION_FILE - else - echo "FULLBLOG_DOMAIN_NAME=$FULLBLOG_DOMAIN_NAME" >> $CONFIGURATION_FILE - fi - if grep -q "FULLBLOG_CODE=" $CONFIGURATION_FILE; then - sed -i "s|FULLBLOG_CODE=.*|FULLBLOG_CODE=$FULLBLOG_CODE|g" $CONFIGURATION_FILE - else - echo "FULLBLOG_CODE=$FULLBLOG_CODE" >> $CONFIGURATION_FILE - fi + write_config_param "MY_BLOG_TITLE" "$MY_BLOG_TITLE" + write_config_param "FULLBLOG_DOMAIN_NAME" "$FULLBLOG_DOMAIN_NAME" + write_config_param "FULLBLOG_CODE" "$FULLBLOG_CODE" fi } diff --git a/src/freedombone-app-gnusocial b/src/freedombone-app-gnusocial index a8389ada..b351facd 100755 --- a/src/freedombone-app-gnusocial +++ b/src/freedombone-app-gnusocial @@ -165,26 +165,10 @@ function install_interactive_gnusocial { fi done # save the results in the config file - if grep -q "MICROBLOG_DOMAIN_NAME=" $CONFIGURATION_FILE; then - sed -i "s|MICROBLOG_DOMAIN_NAME=.*|MICROBLOG_DOMAIN_NAME=$MICROBLOG_DOMAIN_NAME|g" $CONFIGURATION_FILE - else - echo "MICROBLOG_DOMAIN_NAME=$MICROBLOG_DOMAIN_NAME" >> $CONFIGURATION_FILE - fi - if grep -q "MICROBLOG_CODE=" $CONFIGURATION_FILE; then - sed -i "s|MICROBLOG_CODE=.*|MICROBLOG_CODE=$MICROBLOG_CODE|g" $CONFIGURATION_FILE - else - echo "MICROBLOG_CODE=$MICROBLOG_CODE" >> $CONFIGURATION_FILE - fi - if grep -q "MICROBLOG_WELCOME_MESSAGE=" $CONFIGURATION_FILE; then - sed -i "s|MICROBLOG_WELCOME_MESSAGE=.*|MICROBLOG_WELCOME_MESSAGE=$MICROBLOG_WELCOME_MESSAGE|g" $CONFIGURATION_FILE - else - echo "MICROBLOG_WELCOME_MESSAGE=$MICROBLOG_WELCOME_MESSAGE" >> $CONFIGURATION_FILE - fi - if grep -q "MICROBLOG_BACKGROUND_IMAGE_URL=" $CONFIGURATION_FILE; then - sed -i "s|MICROBLOG_BACKGROUND_IMAGE_URL=.*|MICROBLOG_BACKGROUND_IMAGE_URL=$MICROBLOG_BACKGROUND_IMAGE_URL|g" $CONFIGURATION_FILE - else - echo "MICROBLOG_BACKGROUND_IMAGE_URL=$MICROBLOG_BACKGROUND_IMAGE_URL" >> $CONFIGURATION_FILE - fi + write_config_param "MICROBLOG_DOMAIN_NAME" "$MICROBLOG_DOMAIN_NAME" + write_config_param "MICROBLOG_CODE" "$MICROBLOG_CODE" + write_config_param "MICROBLOG_WELCOME_MESSAGE" "$MICROBLOG_WELCOME_MESSAGE" + write_config_param "MICROBLOG_BACKGROUND_IMAGE_URL" "$MICROBLOG_BACKGROUND_IMAGE_URL" fi } diff --git a/src/freedombone-app-gogs b/src/freedombone-app-gogs index 76a854ea..a1c5c26b 100755 --- a/src/freedombone-app-gogs +++ b/src/freedombone-app-gogs @@ -104,16 +104,8 @@ function install_interactive_gogs { done # save the results in the config file - if grep -q "GIT_DOMAIN_NAME=" ${CONFIGURATION_FILE}; then - sed -i "s|GIT_DOMAIN_NAME=.*|GIT_DOMAIN_NAME=$GIT_DOMAIN_NAME|g" ${CONFIGURATION_FILE} - else - echo "GIT_DOMAIN_NAME=$GIT_DOMAIN_NAME" >> ${CONFIGURATION_FILE} - fi - if grep -q "GIT_CODE=" ${CONFIGURATION_FILE}; then - sed -i "s|GIT_CODE=.*|GIT_CODE=$GIT_CODE|g" ${CONFIGURATION_FILE} - else - echo "GIT_CODE=$GIT_CODE" >> ${CONFIGURATION_FILE} - fi + write_config_param "GIT_DOMAIN_NAME" "$GIT_DOMAIN_NAME" + write_config_param "GIT_CODE" "$GIT_CODE" fi } diff --git a/src/freedombone-app-hubzilla b/src/freedombone-app-hubzilla index 5f902d3a..37ae34a4 100755 --- a/src/freedombone-app-hubzilla +++ b/src/freedombone-app-hubzilla @@ -185,16 +185,8 @@ function install_interactive_hubzilla { fi done # save the results in the config file - if grep -q "HUBZILLA_DOMAIN_NAME=" $CONFIGURATION_FILE; then - sed -i "s|HUBZILLA_DOMAIN_NAME=.*|HUBZILLA_DOMAIN_NAME=$HUBZILLA_DOMAIN_NAME|g" $CONFIGURATION_FILE - else - echo "HUBZILLA_DOMAIN_NAME=$HUBZILLA_DOMAIN_NAME" >> $CONFIGURATION_FILE - fi - if grep -q "HUBZILLA_CODE=" $CONFIGURATION_FILE; then - sed -i "s|HUBZILLA_CODE=.*|HUBZILLA_CODE=$HUBZILLA_CODE|g" $CONFIGURATION_FILE - else - echo "HUBZILLA_CODE=$HUBZILLA_CODE" >> $CONFIGURATION_FILE - fi + write_config_param "HUBZILLA_DOMAIN_NAME" "$HUBZILLA_DOMAIN_NAME" + write_config_param "HUBZILLA_CODE" "$HUBZILLA_CODE" fi } diff --git a/src/freedombone-app-mediagoblin b/src/freedombone-app-mediagoblin index e3fa443a..7b7eca23 100755 --- a/src/freedombone-app-mediagoblin +++ b/src/freedombone-app-mediagoblin @@ -97,17 +97,10 @@ function install_interactive_mediagoblin { fi fi done + # save the results in the config file - if grep -q "MEDIAGOBLIN_DOMAIN_NAME=" $CONFIGURATION_FILE; then - sed -i "s|MEDIAGOBLIN_DOMAIN_NAME=.*|MEDIAGOBLIN_DOMAIN_NAME=$MEDIAGOBLIN_DOMAIN_NAME|g" $CONFIGURATION_FILE - else - echo "MEDIAGOBLIN_DOMAIN_NAME=$MEDIAGOBLIN_DOMAIN_NAME" >> $CONFIGURATION_FILE - fi - if grep -q "MEDIAGOBLIN_CODE=" $CONFIGURATION_FILE; then - sed -i "s|MEDIAGOBLIN_CODE=.*|MEDIAGOBLIN_CODE=$MEDIAGOBLIN_CODE|g" $CONFIGURATION_FILE - else - echo "MEDIAGOBLIN_CODE=$MEDIAGOBLIN_CODE" >> $CONFIGURATION_FILE - fi + write_config_param "MEDIAGOBLIN_DOMAIN_NAME" "$MEDIAGOBLIN_DOMAIN_NAME" + write_config_param "MEDIAGOBLIN_CODE" "$MEDIAGOBLIN_CODE" fi } diff --git a/src/freedombone-app-wiki b/src/freedombone-app-wiki index ad87085b..ec066687 100755 --- a/src/freedombone-app-wiki +++ b/src/freedombone-app-wiki @@ -99,21 +99,9 @@ function install_interactive_wiki { done # save the results in the config file - if grep -q "WIKI_TITLE=" $CONFIGURATION_FILE; then - sed -i "s|WIKI_TITLE=.*|WIKI_TITLE=$WIKI_TITLE|g" $CONFIGURATION_FILE - else - echo "WIKI_TITLE=$WIKI_TITLE" >> $CONFIGURATION_FILE - fi - if grep -q "WIKI_DOMAIN_NAME=" $CONFIGURATION_FILE; then - sed -i "s|WIKI_DOMAIN_NAME=.*|WIKI_DOMAIN_NAME=$WIKI_DOMAIN_NAME|g" $CONFIGURATION_FILE - else - echo "WIKI_DOMAIN_NAME=$WIKI_DOMAIN_NAME" >> $CONFIGURATION_FILE - fi - if grep -q "WIKI_CODE=" $CONFIGURATION_FILE; then - sed -i "s|WIKI_CODE=.*|WIKI_CODE=$WIKI_CODE|g" $CONFIGURATION_FILE - else - echo "WIKI_CODE=$WIKI_CODE" >> $CONFIGURATION_FILE - fi + write_config_param "WIKI_TITLE" "$WIKI_TITLE" + write_config_param "WIKI_DOMAIN_NAME" "$WIKI_DOMAIN_NAME" + write_config_param "WIKI_CODE" "$WIKI_CODE" fi } diff --git a/src/freedombone-config b/src/freedombone-config index 1077efa2..21678c00 100755 --- a/src/freedombone-config +++ b/src/freedombone-config @@ -128,6 +128,20 @@ MY_MIRRORS_PASSWORD= VALID_CODE= +source $PROJECT_INSTALL_DIR/${PROJECT_NAME}-vars + +UTILS_FILES=/usr/share/${PROJECT_NAME}/utils/${PROJECT_NAME}-utils-* +for f in $UTILS_FILES +do + source $f +done + +APP_FILES=/usr/share/${PROJECT_NAME}/apps/${PROJECT_NAME}-app-* +for f in $APP_FILES +do + source $f +done + function show_help { echo '' echo $"${PROJECT_NAME}-config -f [config filename] -m [min password length]" @@ -146,6 +160,662 @@ function show_help { exit 0 } +function choose_email_address { + if [[ $ONION_ONLY != "no" ]]; then + EMAIL_ADDRESS=$MY_USERNAME@$DEFAULT_DOMAIN_NAME + else + while [ ${#MY_EMAIL_ADDRESS} -lt 5 ] + do + EMAIL_ADDRESS=$(grep 'MY_EMAIL_ADDRESS' temp.cfg | awk -F '=' '{print $2}') + if [ ! $EMAIL_ADDRESS ]; then + EMAIL_ADDRESS=$MY_USERNAME@$DEFAULT_DOMAIN_NAME + fi + if [ ${#MY_EMAIL_ADDRESS} -lt 5 ]; then + EMAIL_ADDRESS=$MY_USERNAME@$DEFAULT_DOMAIN_NAME + fi + + data=$(tempfile 2>/dev/null) + trap "rm -f $data" 0 1 2 5 15 + dialog --backtitle $"Freedombone Configuration" \ + --inputbox $"Your email address" 10 30 "$EMAIL_ADDRESS" 2> $data + sel=$? + case $sel in + 0) MY_EMAIL_ADDRESS=$(cat $data);; + 1) exit 1;; + 255) exit 1;; + esac + done + fi + save_configuration_file +} + +function choose_default_domain_name { + if [[ $ONION_ONLY != "no" ]]; then + DEFAULT_DOMAIN_NAME="${PROJECT_NAME}.local" + else + DEFAULT_DOMAIN_DETAILS_COMPLETE= + while [ ! $DEFAULT_DOMAIN_DETAILS_COMPLETE ] + do + data=$(tempfile 2>/dev/null) + trap "rm -f $data" 0 1 2 5 15 + if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then + dialog --backtitle $"Freedombone Configuration" \ + --title $"Your main domain name" \ + --form $"\nWhich domain name should your email/XMPP/IRC/Mumble be associated with?" 11 55 3 \ + $"Domain:" 1 1 "$(grep 'DEFAULT_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 1 16 33 40 \ + $"Code:" 2 1 "$(grep 'DEFAULT_DOMAIN_CODE' temp.cfg | awk -F '=' '{print $2}')" 2 16 33 255 \ + 2> $data + sel=$? + case $sel in + 1) exit 1;; + 255) exit 1;; + esac + DEFAULT_DOMAIN_NAME=$(cat $data | sed -n 1p) + DEFAULT_DOMAIN_CODE=$(cat $data | sed -n 2p) + if [ $DEFAULT_DOMAIN_NAME ]; then + validate_freedns_code "$DEFAULT_DOMAIN_CODE" + if [ ! $VALID_CODE ]; then + DEFAULT_DOMAIN_NAME= + fi + fi + else + dialog --backtitle $"Freedombone Configuration" \ + --inputbox $"Which domain name should your email/XMPP/IRC/Mumble be associated with?" 10 45 \ + "$(grep 'DEFAULT_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 2> $data + sel=$? + case $sel in + 0) DEFAULT_DOMAIN_NAME=$(cat $data);; + 1) exit 1;; + 255) exit 1;; + esac + fi + if [ $DEFAULT_DOMAIN_NAME ]; then + TEST_DOMAIN_NAME=$DEFAULT_DOMAIN_NAME + validate_domain_name + if [[ $TEST_DOMAIN_NAME != $DEFAULT_DOMAIN_NAME ]]; then + DEFAULT_DOMAIN_NAME= + dialog --title $"Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50 + else + DEFAULT_DOMAIN_DETAILS_COMPLETE="yes" + fi + fi + done + fi + save_configuration_file +} + +function choose_static_ip { + if [[ $MINIMAL_INSTALL == "no" && $ONION_ONLY == "no" ]]; then + SET_STATIC_IP="no" + dialog --title $"Static local IP address" \ + --backtitle $"Freedombone Configuration" \ + --defaultno \ + --yesno $"\nDo you want to set a static local IP address for this system?\n\nFor example, 192.168.1.10" 10 60 + sel=$? + case $sel in + 0) SET_STATIC_IP="yes";; + 255) exit 1;; + esac + + if [[ $SET_STATIC_IP == "yes" ]]; then + if [ ! $LOCAL_NETWORK_STATIC_IP_ADDRESS ]; then + LOCAL_NETWORK_STATIC_IP_ADDRESS=$(grep 'LOCAL_NETWORK_STATIC_IP_ADDRESS' temp.cfg | awk -F '=' '{print $2}') + if [ ! $LOCAL_NETWORK_STATIC_IP_ADDRESS ]; then + LOCAL_NETWORK_STATIC_IP_ADDRESS='192.168..' + fi + fi + if [ ! $ROUTER_IP_ADDRESS ]; then + ROUTER_IP_ADDRESS=$(grep 'ROUTER_IP_ADDRESS' temp.cfg | awk -F '=' '{print $2}') + if [ ! $ROUTER_IP_ADDRESS ]; then + ROUTER_IP_ADDRESS='192.168..' + fi + fi + data=$(tempfile 2>/dev/null) + trap "rm -f $data" 0 1 2 5 15 + dialog --backtitle $"Freedombone Configuration" \ + --title $"Local Network Configuration" \ + --form $"\nPlease enter the IP addresses:" 11 55 3 \ + $"This system:" 1 1 "$LOCAL_NETWORK_STATIC_IP_ADDRESS" 1 16 16 15 \ + $"Internet router:" 2 1 "$ROUTER_IP_ADDRESS" 2 16 16 15 \ + 2> $data + sel=$? + case $sel in + 1) exit 1;; + 255) exit 1;; + esac + LOCAL_NETWORK_STATIC_IP_ADDRESS=$(cat $data | sed -n 1p) + ROUTER_IP_ADDRESS=$(cat $data | sed -n 2p) + save_configuration_file + fi + fi +} + +function choose_dynamic_dns { + if [[ $SYSTEM_TYPE != "$VARIANT_MESH" && $ONION_ONLY == "no" ]]; then + + data=$(tempfile 2>/dev/null) + trap "rm -f $data" 0 1 2 5 15 + dialog --backtitle $"Freedombone Configuration" \ + --radiolist $"Choose Dynamic DNS provider:" 15 40 14 \ + 1 dyndns off \ + 2 freedns on \ + 3 zoneedit off \ + 4 no-ip off \ + 5 easydns off \ + 6 tzo off \ + 7 3322 off \ + 8 dnsomatic off \ + 9 tunnelbroker off \ + 10 dns.he.net off \ + 11 dynsip off \ + 12 sitelutions off \ + 13 dnsexit off \ + 14 changeip off 2> $data + sel=$? + case $sel in + 1) exit 1;; + 255) exit 1;; + esac + case $(cat $data) in + 1) DDNS_PROVIDER="default@dyndns.org";; + 2) DDNS_PROVIDER="default@freedns.afraid.org";; + 3) DDNS_PROVIDER="default@zoneedit.com";; + 4) DDNS_PROVIDER="default@no-ip.com";; + 5) DDNS_PROVIDER="default@easydns.com";; + 6) DDNS_PROVIDER="default@tzo.com";; + 7) DDNS_PROVIDER="dyndns@3322.org";; + 8) DDNS_PROVIDER="default@dnsomatic.com";; + 9) DDNS_PROVIDER="ipv6tb@he.net";; + 10) DDNS_PROVIDER="dyndns@he.net";; + 11) DDNS_PROVIDER="default@dynsip.org";; + 12) DDNS_PROVIDER="default@sitelutions.com";; + 13) DDNS_PROVIDER="default@dnsexit.com";; + 14) DDNS_PROVIDER="default@changeip.com";; + 255) exit 1;; + esac + save_configuration_file + + valid_ddns_username= + while [ ! $valid_ddns_username ] + do + data=$(tempfile 2>/dev/null) + trap "rm -f $data" 0 1 2 5 15 + dialog --backtitle $"Freedombone Configuration" \ + --inputbox $"Dynamic DNS provider username" 10 30 "$(grep 'DDNS_USERNAME' temp.cfg | awk -F '=' '{print $2}')" 2> $data + sel=$? + case $sel in + 0) possible_username=$(cat $data) + if [ "$possible_username" ]; then + if [ ${#possible_username} -gt 1 ]; then + valid_ddns_username=$(cat $data) + DDNS_USERNAME=$valid_ddns_username + break; + fi + fi + ;; + 1) exit 1;; + 255) exit 1;; + esac + done + save_configuration_file + + valid_ddns_password= + while [ ! $valid_ddns_password ] + do + data=$(tempfile 2>/dev/null) + trap "rm -f $data" 0 1 2 5 15 + dialog --backtitle $"Freedombone Configuration" \ + --clear \ + --insecure \ + --passwordbox $"Dynamic DNS provider password" 10 30 "$(grep 'DDNS_PASSWORD' temp.cfg | awk -F '=' '{print $2}')" 2> $data + sel=$? + case $sel in + 0) possible_password=$(cat $data) + if [ "$possible_password" ]; then + if [ ${#possible_password} -gt 1 ]; then + valid_ddns_password=$(cat $data) + DDNS_PASSWORD=$valid_ddns_password + break; + fi + fi + ;; + 1) exit 1;; + 255) exit 1;; + esac + if [ ${#DDNS_PASSWORD} -lt $MINIMUM_PASSWORD_LENGTH ]; then + 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 + DDNS_PASSWORD="" + fi + done + save_configuration_file + fi +} + +function choose_dns { + if [[ $MINIMAL_INSTALL == "no" && $ONION_ONLY == "no" ]]; then + data=$(tempfile 2>/dev/null) + trap "rm -f $data" 0 1 2 5 15 + dialog --backtitle $"Freedombone Configuration" \ + --radiolist $"Pick a domain name service (DNS):" 25 50 16 \ + 1 $"Digital Courage" on \ + 2 $"German Privacy Foundation 1" off \ + 3 $"German Privacy Foundation 2" off \ + 4 $"Chaos Computer Club" off \ + 5 $"ClaraNet" off \ + 6 $"OpenNIC 1" off \ + 7 $"OpenNIC 2" off \ + 8 $"OpenNIC 3" off \ + 9 $"OpenNIC 4" off \ + 10 $"OpenNIC 5" off \ + 11 $"OpenNIC 6" off \ + 12 $"OpenNIC 7" off \ + 13 $"PowerNS" off \ + 14 $"ValiDOM" off \ + 15 $"Freie Unzensierte" off \ + 16 $"Google" off 2> $data + sel=$? + case $sel in + 1) exit 1;; + 255) exit 1;; + esac + case $(cat $data) in + 1) NAMESERVER1='85.214.73.63' + NAMESERVER2='213.73.91.35' + ;; + 2) NAMESERVER1='87.118.100.175' + NAMESERVER2='94.75.228.29' + ;; + 3) NAMESERVER1='85.25.251.254' + NAMESERVER2='2.141.58.13' + ;; + 4) NAMESERVER1='213.73.91.35' + NAMESERVER2='85.214.73.63' + ;; + 5) NAMESERVER1='212.82.225.7' + NAMESERVER2='212.82.226.212' + ;; + 6) NAMESERVER1='58.6.115.42' + NAMESERVER2='58.6.115.43' + ;; + 7) NAMESERVER1='119.31.230.42' + NAMESERVER2='200.252.98.162' + ;; + 8) NAMESERVER1='217.79.186.148' + NAMESERVER2='81.89.98.6' + ;; + 9) NAMESERVER1='78.159.101.37' + NAMESERVER2='203.167.220.153' + ;; + 10) NAMESERVER1='82.229.244.191' + NAMESERVER2='82.229.244.191' + ;; + 11) NAMESERVER1='216.87.84.211' + NAMESERVER2='66.244.95.20' + ;; + 12) NAMESERVER1='207.192.69.155' + NAMESERVER2='72.14.189.120' + ;; + 13) NAMESERVER1='194.145.226.26' + NAMESERVER2='77.220.232.44' + ;; + 14) NAMESERVER1='78.46.89.147' + NAMESERVER2='88.198.75.145' + ;; + 15) NAMESERVER1='85.25.149.144' + NAMESERVER2='87.106.37.196' + ;; + 16) NAMESERVER1='8.8.8.8' + NAMESERVER2='4.4.4.4' + ;; + 255) exit 1;; + esac + save_configuration_file + else + # as defaults for a minimal install process these settings are debatable + NAMESERVER1='85.214.73.63' + NAMESERVER2='213.73.91.35' + fi +} + +function choose_debian_repo { + if [[ $MINIMAL_INSTALL == "no" ]]; then + data=$(tempfile 2>/dev/null) + trap "rm -f $data" 0 1 2 5 15 + dialog --backtitle $"Freedombone Configuration" \ + --radiolist $"Where to download Debian packages from:" 25 45 49 \ + 1 $"Australia" off \ + 2 $"Austria" off \ + 3 $"Belarus" off \ + 4 $"Belgium" off \ + 5 $"Bosnia and Herzegovina" off \ + 6 $"Brazil" off \ + 7 $"Bulgaria" off \ + 8 $"Canada" off \ + 9 $"Chile" off \ + 10 $"China" off \ + 11 $"Croatia" off \ + 12 $"Czech Republic" off \ + 13 $"Denmark" off \ + 14 $"El Salvador" off \ + 15 $"Estonia" off \ + 16 $"Finland" off \ + 17 $"France 1" off \ + 18 $"France 2" off \ + 19 $"Germany 1" off \ + 20 $"Germany 2" off \ + 21 $"Greece" off \ + 22 $"Hungary" off \ + 23 $"Iceland" off \ + 24 $"Iran" off \ + 25 $"Ireland" off \ + 26 $"Italy" off \ + 27 $"Japan" off \ + 28 $"Korea" off \ + 29 $"Lithuania" off \ + 30 $"Mexico" off \ + 31 $"Netherlands" off \ + 32 $"New Caledonia" off \ + 33 $"New Zealand" off \ + 34 $"Norway" off \ + 35 $"Poland" off \ + 36 $"Portugal" off \ + 37 $"Romania" off \ + 38 $"Russia" off \ + 39 $"Slovakia" off \ + 40 $"Slovenia" off \ + 41 $"Spain" off \ + 42 $"Sweden" off \ + 43 $"Switzerland" off \ + 44 $"Taiwan" off \ + 45 $"Thailand" off \ + 46 $"Turkey" off \ + 47 $"Ukraine" off \ + 48 $"United Kingdom" off \ + 49 $"United States" on 2> $data + sel=$? + case $sel in + 1) exit 1;; + 255) exit 1;; + esac + case $(cat $data) in + 1) DEBIAN_REPO='ftp.au.debian.org';; + 2) DEBIAN_REPO='ftp.at.debian.org';; + 3) DEBIAN_REPO='ftp.by.debian.org';; + 4) DEBIAN_REPO='ftp.be.debian.org';; + 5) DEBIAN_REPO='ftp.ba.debian.org';; + 6) DEBIAN_REPO='ftp.br.debian.org';; + 7) DEBIAN_REPO='ftp.bg.debian.org';; + 8) DEBIAN_REPO='ftp.ca.debian.org';; + 9) DEBIAN_REPO='ftp.cl.debian.org';; + 10) DEBIAN_REPO='ftp.cn.debian.org';; + 11) DEBIAN_REPO='ftp.hr.debian.org';; + 12) DEBIAN_REPO='ftp.cz.debian.org';; + 13) DEBIAN_REPO='ftp.dk.debian.org';; + 14) DEBIAN_REPO='ftp.sv.debian.org';; + 15) DEBIAN_REPO='ftp.ee.debian.org';; + 16) DEBIAN_REPO='ftp.fi.debian.org';; + 17) DEBIAN_REPO='ftp2.fr.debian.org';; + 18) DEBIAN_REPO='ftp.fr.debian.org';; + 19) DEBIAN_REPO='ftp2.de.debian.org';; + 20) DEBIAN_REPO='ftp.de.debian.org';; + 21) DEBIAN_REPO='ftp.gr.debian.org';; + 22) DEBIAN_REPO='ftp.hu.debian.org';; + 23) DEBIAN_REPO='ftp.is.debian.org';; + 24) DEBIAN_REPO='ftp.ir.debian.org';; + 25) DEBIAN_REPO='ftp.ie.debian.org';; + 26) DEBIAN_REPO='ftp.it.debian.org';; + 27) DEBIAN_REPO='ftp.jp.debian.org';; + 28) DEBIAN_REPO='ftp.kr.debian.org';; + 29) DEBIAN_REPO='ftp.lt.debian.org';; + 30) DEBIAN_REPO='ftp.mx.debian.org';; + 31) DEBIAN_REPO='ftp.nl.debian.org';; + 32) DEBIAN_REPO='ftp.nc.debian.org';; + 33) DEBIAN_REPO='ftp.nz.debian.org';; + 34) DEBIAN_REPO='ftp.no.debian.org';; + 35) DEBIAN_REPO='ftp.pl.debian.org';; + 36) DEBIAN_REPO='ftp.pt.debian.org';; + 37) DEBIAN_REPO='ftp.ro.debian.org';; + 38) DEBIAN_REPO='ftp.ru.debian.org';; + 39) DEBIAN_REPO='ftp.sk.debian.org';; + 40) DEBIAN_REPO='ftp.si.debian.org';; + 41) DEBIAN_REPO='ftp.es.debian.org';; + 42) DEBIAN_REPO='ftp.se.debian.org';; + 43) DEBIAN_REPO='ftp.ch.debian.org';; + 44) DEBIAN_REPO='ftp.tw.debian.org';; + 45) DEBIAN_REPO='ftp.th.debian.org';; + 46) DEBIAN_REPO='ftp.tr.debian.org';; + 47) DEBIAN_REPO='ftp.ua.debian.org';; + 48) DEBIAN_REPO='ftp.uk.debian.org';; + 49) DEBIAN_REPO='ftp.us.debian.org';; + 255) exit 1;; + esac + save_configuration_file + else + DEBIAN_REPO='ftp.de.debian.org' + fi +} + +function choose_rng { + if [[ $MINIMAL_INSTALL == "no" ]]; then + data=$(tempfile 2>/dev/null) + trap "rm -f $data" 0 1 2 5 15 + if [[ $INSTALLING_ON_BBB != "yes" ]]; then + dialog --backtitle $"Freedombone Configuration" \ + --radiolist $"Type of Random Number Generator:" 10 40 2 \ + 1 Haveged on \ + 2 OneRNG off 2> $data + sel=$? + case $sel in + 1) exit 1;; + 255) exit 1;; + esac + case $(cat $data) in + 2) HWRNG_TYPE="onerng" + dialog --title $"OneRNG Device" \ + --msgbox $"Please ensure that the OneRNG device is disconnected. You can reconnect it later during the installation" 8 60 + ;; + 255) exit 1;; + esac + else + HWRNG_TYPE="beaglebone" + fi + save_configuration_file + fi +} + +function choose_social_key_management { + if [[ $MINIMAL_INSTALL == "no" ]]; then + interactive_gpg + + data=$(tempfile 2>/dev/null) + trap "rm -f $data" 0 1 2 5 15 + 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." + if [[ $(grep "ENABLE_SOCIAL_KEY_MANAGEMENT" temp.cfg | awk -F '=' '{print $2}') == "yes" ]]; then + dialog --title $"Social Key Management" \ + --backtitle $"Freedombone Configuration" \ + --yesno "$SOCIAL_KEY_STR" 15 60 + else + dialog --title $"Social Key Management" \ + --backtitle $"Freedombone Configuration" \ + --defaultno \ + --yesno "$SOCIAL_KEY_STR" 15 60 + fi + sel=$? + case $sel in + 0) ENABLE_SOCIAL_KEY_MANAGEMENT="yes";; + 255) exit 1;; + esac + save_configuration_file + else + # enable for the minimal case + ENABLE_SOCIAL_KEY_MANAGEMENT="yes" + fi +} + +function choose_beaglebone_options { + if [[ $MINIMAL_INSTALL == "no" ]]; then + if [[ $(grep "INSTALLING_ON_BBB" temp.cfg | awk -F '=' '{print $2}') == "yes" ]]; then + dialog --title $"Install Target" \ + --backtitle $"Freedombone Configuration" \ + --yesno $"\nAre you installing onto a Beaglebone Black?" 7 60 + else + dialog --title $"Install Target" \ + --backtitle $"Freedombone Configuration" \ + --defaultno \ + --yesno $"\nAre you installing onto a Beaglebone Black?" 7 60 + fi + sel=$? + case $sel in + 0) INSTALLING_ON_BBB="yes";; + 1) INSTALLING_ON_BBB="no";; + 255) exit 1;; + esac + if [[ $INSTALLING_ON_BBB == "yes" ]]; then + USB_DRIVE=/dev/sda1 + fi + save_configuration_file + fi +} + +function choose_username { + if [ -d /home/$GENERIC_IMAGE_USERNAME ]; then + if [ ! -f $IMAGE_PASSWORD_FILE ]; then + echo 'Cannot find the password file for the admin user' + exit 62753 + fi + # when installing from an image which comes with a known default user account + SELECTED_USERNAME= + while [ ! $SELECTED_USERNAME ] + do + if [ ! $SELECTED_USERNAME ]; then + SELECTED_USERNAME=$(grep 'MY_USERNAME' temp.cfg | awk -F '=' '{print $2}') + fi + data=$(tempfile 2>/dev/null) + trap "rm -f $data" 0 1 2 5 15 + dialog --backtitle $"Freedombone Configuration" \ + --title $"Username" \ + --inputbox $"Set your username for the system\n\nYour username should not contain any spaces" 12 60 "$SELECTED_USERNAME" 2> $data + sel=$? + case $sel in + 0) possible_username=$(cat $data) + SELECTED_USERNAME= + if [[ $possible_username != *' '* && $possible_username != *'/'* && $possible_username != *'\'* && $possible_username != *'*'* ]]; then + if [ $possible_username ]; then + if [ ${#possible_username} -gt 1 ]; then + if [[ $possible_username != $GENERIC_IMAGE_USERNAME ]]; then + MY_USERNAME=$(cat $data) + useradd -m -s /bin/bash $MY_USERNAME + if [ -d /home/$MY_USERNAME ]; then + echo "${MY_USERNAME}:$(printf `cat $IMAGE_PASSWORD_FILE`)" | chpasswd + # Add the user as a sudoer - they will be the new admin user + if ! grep -q "$MY_USERNAME ALL=(ALL) ALL" /etc/sudoers; then + echo "$MY_USERNAME ALL=(ALL) ALL" >> /etc/sudoers + # remove the generic image admin user from sudoers + sed -i "s|${GENERIC_IMAGE_USERNAME}.*||g" /etc/sudoers + fi + break + fi + fi + fi + fi + fi + ;; + 1) exit 1;; + 255) exit 1;; + esac + done + else + no_of_users=$(find /home/* -maxdepth 0 -type d | wc -l) + if [ $no_of_users -eq 1 ]; then + # only a single user on the system + MY_USERNAME=$(ls /home) + else + # select one from a number of users + if [[ $SYSTEM_TYPE == "$VARIANT_MESH" && $DEFAULT_DOMAIN_NAME && -d /home/$DEFAULT_DOMAIN_NAME ]]; then + MY_USERNAME=$DEFAULT_DOMAIN_NAME + else + select_user + if [ ! $SELECTED_USERNAME ]; then + echo $'No username selected' + exit 72589 + fi + MY_USERNAME="$SELECTED_USERNAME" + fi + fi + fi + + if [ ! $MY_USERNAME ]; then + echo $'No user account was selected' + exit 64398 + fi + if [[ $MY_USERNAME == '-f' ]]; then + echo $'No user account was selected' + exit 8347 + fi + if [[ $MY_USERNAME == 'debian' || $MY_USERNAME == 'fbone' ]]; then + echo $"Don't use the default user account" + exit 9341 + fi + if [ ! -d /home/$MY_USERNAME ]; then + echo $"The directory /home/$MY_USERNAME does not exist" + exit 6437 + fi + save_configuration_file +} + +function choose_full_name { + valid_name= + while [ ! $valid_name ] + do + data=$(tempfile 2>/dev/null) + trap "rm -f $data" 0 1 2 5 15 + dialog --backtitle $"Freedombone Configuration" \ + --inputbox $"Your full name (or nick)" 10 30 "$(grep 'MY_NAME' temp.cfg | awk -F '=' '{print $2}')" 2> $data + sel=$? + case $sel in + 0) possible_name=$(cat $data) + if [ "$possible_name" ]; then + if [ ${#possible_name} -gt 1 ]; then + valid_name="$possible_name" + MY_NAME="$possible_name" + break; + fi + fi + ;; + 1) exit 1;; + 255) exit 1;; + esac + done + save_configuration_file +} + +function choose_system_variant { + available_variants_list=() + variants_list=$(available_system_variants) + + varslist="" + n=1 + vars_index=0 + for a in "${available_variants_list[@]}" + do + varstate='off' + if [[ "$a" == $'full' || "$a" == $'Full' ]]; then + varstate='on' + fi + varslist="$varslist $n $a $varstate" + n=$[n+1] + vars_index=$[vars_index+1] + done + + variant_choice=$(dialog --stdout --backtitle $"Freedombone Configuration" \ + --title $"Type of Installation" \ + --radiolist $'Choose:' \ + 27 40 20 $varslist) + variant_choice=$((variant_choice - 1)) + export SYSTEM_TYPE=${variants_list[$variant_choice]} + save_configuration_file +} + function validate_freedns_code { freedns_code="$1" @@ -604,6 +1274,7 @@ function set_main_repo { dialog --title $"Main Repository" \ --msgbox $"Main repository set to $FRIENDS_MIRRORS_SERVER" 6 60 fi + save_configuration_file } function interactive_select_language { @@ -808,1198 +1479,21 @@ function interactive_config { dialog --title $"Freedombone" --msgbox "$INITIAL_MESSAGE" 15 50 - data=$(tempfile 2>/dev/null) - trap "rm -f $data" 0 1 2 5 15 - dialog --backtitle $"Freedombone Configuration" \ - --radiolist $"Type of Installation:" 18 40 11 \ - 1 $"Full" on \ - 2 $"Writer" off \ - 3 $"Cloud" off \ - 4 $"Chat" off \ - 5 $"Mailbox" off \ - 6 $"Non-Mailbox" off \ - 7 $"Social" off \ - 8 $"Media" off \ - 9 $"Developer" off \ - 10 $"Mesh (router)" off \ - 11 $"Mesh (user device)" off 2> $data - sel=$? - case $sel in - 1) exit 1;; - 255) exit 1;; - esac - case $(cat $data) in - 1) SYSTEM_TYPE=$VARIANT_FULL;; - 2) SYSTEM_TYPE=$VARIANT_WRITER;; - 3) SYSTEM_TYPE=$VARIANT_CLOUD;; - 4) SYSTEM_TYPE=$VARIANT_CHAT;; - 5) SYSTEM_TYPE=$VARIANT_MAILBOX;; - 6) SYSTEM_TYPE=$VARIANT_NONMAILBOX;; - 7) SYSTEM_TYPE=$VARIANT_SOCIAL;; - 8) SYSTEM_TYPE=$VARIANT_MEDIA;; - 9) SYSTEM_TYPE=$VARIANT_DEVELOPER;; - 10) SYSTEM_TYPE=$VARIANT_MESH;; - 11) SYSTEM_TYPE=$VARIANT_MESH_USER;; - esac - save_configuration_file - - if [[ $SYSTEM_TYPE != "$VARIANT_MESH" && $SYSTEM_TYPE != "$VARIANT_MESH_USER" ]]; then - set_main_repo - save_configuration_file - fi - - if [[ $SYSTEM_TYPE == "$VARIANT_MESH" || $SYSTEM_TYPE == "$VARIANT_MESH_USER" ]]; then - ENABLE_BATMAN="yes" - ENABLE_CJDNS="no" - ENABLE_BABEL="no" - if [ ! $WIFI_SSID ]; then - WIFI_SSID='mesh' - fi - - #data=$(tempfile 2>/dev/null) - #trap "rm -f $data" 0 1 2 5 15 - #dialog --backtitle "Freedombone Configuration" \ - # --radiolist "Select your type of mesh network:" 10 40 3 \ - # 1 "Babel" off \ - # 2 "B.A.T.M.A.N. Advanced" on \ - # 3 "cjdns" off 2> $data - #sel=$? - #case $sel in - # 1) exit 1;; - # 255) exit 1;; - #esac - #case $(cat $data) in - # 1) ENABLE_BABEL="yes";; - # 2) ENABLE_BATMAN="yes";; - # 3) ENABLE_CJDNS="yes";; - #esac - save_configuration_file - - data=$(tempfile 2>/dev/null) - trap "rm -f $data" 0 1 2 5 15 - dialog --backtitle $"Freedombone Configuration" \ - --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 - sel=$? - case $sel in - 0) WIFI_SSID=$(cat $data);; - 1) exit 1;; - 255) exit 1;; - esac - save_configuration_file - - if [[ $SYSTEM_TYPE != "$VARIANT_MESH_USER" ]]; then - data=$(tempfile 2>/dev/null) - trap "rm -f $data" 0 1 2 5 15 - dialog --backtitle $"Freedombone Configuration" \ - --inputbox $"Give your mesh peer a name" 10 40 "$(grep 'DEFAULT_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 2> $data - sel=$? - case $sel in - 0) DEFAULT_DOMAIN_NAME=$(cat $data);; - 1) exit 1;; - 255) exit 1;; - esac - else - DEFAULT_DOMAIN_NAME=$(hostname) - fi - save_configuration_file - - data=$(tempfile 2>/dev/null) - trap "rm -f $data" 0 1 2 5 15 - dialog --backtitle $"Freedombone Configuration" \ - --radiolist $"Wifi Channel (spaced to be non-overlapping):" 11 50 4 \ - 1 "1" on \ - 2 "5" off \ - 3 "9" off \ - 4 "13" off 2> $data - sel=$? - case $sel in - 1) exit 1;; - 255) exit 1;; - esac - case $(cat $data) in - 1) WIFI_CHANNEL=1;; - 2) WIFI_CHANNEL=5;; - 3) WIFI_CHANNEL=9;; - 4) WIFI_CHANNEL=13;; - esac - save_configuration_file - fi - - #if [[ $ENABLE_BATMAN == "yes" ]]; then - # data=$(tempfile 2>/dev/null) - # trap "rm -f $data" 0 1 2 5 15 - # dialog --backtitle "Freedombone Configuration" \ - # --inputbox "Optionally register with an Access Point" 10 40 "$(grep 'BATMAN_CELLID' temp.cfg | awk -F '=' '{print $2}')" 2> $data - # sel=$? - # case $sel in - # 0) BATMAN_CELLID=$(cat $data);; - # 1) exit 1;; - # 255) exit 1;; - # esac - # save_configuration_file - #fi - - if [[ $SYSTEM_TYPE == "$VARIANT_MESH_USER" ]]; then - ${PROJECT_NAME}-client --essid $WIFI_SSID --channel $WIFI_CHANNEL - if [ "$?" = "0" ]; then - clear - echo ".---. . . " - echo "| | | " - echo "|--- .--. .-. .-. .-.| .-. .--.--. |.-. .-. .--. .-. " - echo "| | (.-' (.-' ( | ( )| | | | )( )| | (.-' " - echo "' ' --' --' -' - -' ' ' -' -' -' ' - --'" - echo '' - echo $'Your system is now ready for connection to the mesh network' - echo '' - echo $'To connect to the network open a terminal and type:' - echo '' - echo ' meshweb' - echo '' - echo $'To disconnect from the mesh and return to the internet type:' - echo '' - echo ' sudo batman stop' - echo '' - echo $'To turn your system into a dedicated mesh peer you could add' - echo $'the meshweb command to your startup applications' - echo '' - touch /tmp/meshuserdevice - exit 0 - else - echo $'Failed to fully install the mesh networking system' - exit 74589 - fi - fi - - if [ -d /home/$GENERIC_IMAGE_USERNAME ]; then - if [ ! -f $IMAGE_PASSWORD_FILE ]; then - echo 'Cannot find the password file for the admin user' - exit 62753 - fi - # when installing from an image which comes with a known default user account - SELECTED_USERNAME= - while [ ! $SELECTED_USERNAME ] - do - if [ ! $SELECTED_USERNAME ]; then - SELECTED_USERNAME=$(grep 'MY_USERNAME' temp.cfg | awk -F '=' '{print $2}') - fi - data=$(tempfile 2>/dev/null) - trap "rm -f $data" 0 1 2 5 15 - dialog --backtitle $"Freedombone Configuration" \ - --title $"Username" \ - --inputbox $"Set your username for the system\n\nYour username should not contain any spaces" 12 60 "$SELECTED_USERNAME" 2> $data - sel=$? - case $sel in - 0) possible_username=$(cat $data) - SELECTED_USERNAME= - if [[ $possible_username != *' '* && $possible_username != *'/'* && $possible_username != *'\'* && $possible_username != *'*'* ]]; then - if [ $possible_username ]; then - if [ ${#possible_username} -gt 1 ]; then - if [[ $possible_username != $GENERIC_IMAGE_USERNAME ]]; then - MY_USERNAME=$(cat $data) - useradd -m -s /bin/bash $MY_USERNAME - if [ -d /home/$MY_USERNAME ]; then - echo "${MY_USERNAME}:$(printf `cat $IMAGE_PASSWORD_FILE`)" | chpasswd - # Add the user as a sudoer - they will be the new admin user - if ! grep -q "$MY_USERNAME ALL=(ALL) ALL" /etc/sudoers; then - echo "$MY_USERNAME ALL=(ALL) ALL" >> /etc/sudoers - # remove the generic image admin user from sudoers - sed -i "s|${GENERIC_IMAGE_USERNAME}.*||g" /etc/sudoers - fi - break - fi - fi - fi - fi - fi - ;; - 1) exit 1;; - 255) exit 1;; - esac - done - else - no_of_users=$(find /home/* -maxdepth 0 -type d | wc -l) - if [ $no_of_users -eq 1 ]; then - # only a single user on the system - MY_USERNAME=$(ls /home) - else - # select one from a number of users - if [[ $SYSTEM_TYPE == "$VARIANT_MESH" && $DEFAULT_DOMAIN_NAME && -d /home/$DEFAULT_DOMAIN_NAME ]]; then - MY_USERNAME=$DEFAULT_DOMAIN_NAME - else - select_user - if [ ! $SELECTED_USERNAME ]; then - echo $'No username selected' - exit 72589 - fi - MY_USERNAME="$SELECTED_USERNAME" - fi - fi - fi - - if [ ! $MY_USERNAME ]; then - echo $'No user account was selected' - exit 64398 - fi - if [[ $MY_USERNAME == '-f' ]]; then - echo $'No user account was selected' - exit 8347 - fi - if [[ $MY_USERNAME == 'debian' || $MY_USERNAME == 'fbone' ]]; then - echo $"Don't use the default user account" - exit 9341 - fi - if [ ! -d /home/$MY_USERNAME ]; then - echo $"The directory /home/$MY_USERNAME does not exist" - exit 6437 - fi - save_configuration_file - - if [[ $SYSTEM_TYPE != "$VARIANT_MESH" ]]; then - valid_name= - while [ ! $valid_name ] - do - data=$(tempfile 2>/dev/null) - trap "rm -f $data" 0 1 2 5 15 - dialog --backtitle $"Freedombone Configuration" \ - --inputbox $"Your full name (or nick)" 10 30 "$(grep 'MY_NAME' temp.cfg | awk -F '=' '{print $2}')" 2> $data - sel=$? - case $sel in - 0) possible_name=$(cat $data) - if [ "$possible_name" ]; then - if [ ${#possible_name} -gt 1 ]; then - valid_name="$possible_name" - MY_NAME="$possible_name" - break; - fi - fi - ;; - 1) exit 1;; - 255) exit 1;; - esac - done - save_configuration_file - fi - - if [[ $MINIMAL_INSTALL == "no" ]]; then - if [[ $(grep "INSTALLING_ON_BBB" temp.cfg | awk -F '=' '{print $2}') == "yes" ]]; then - dialog --title $"Install Target" \ - --backtitle $"Freedombone Configuration" \ - --yesno $"\nAre you installing onto a Beaglebone Black?" 7 60 - else - dialog --title $"Install Target" \ - --backtitle $"Freedombone Configuration" \ - --defaultno \ - --yesno $"\nAre you installing onto a Beaglebone Black?" 7 60 - fi - sel=$? - case $sel in - 0) INSTALLING_ON_BBB="yes";; - 1) INSTALLING_ON_BBB="no";; - 255) exit 1;; - esac - if [[ $INSTALLING_ON_BBB == "yes" ]]; then - USB_DRIVE=/dev/sda1 - fi - save_configuration_file - fi - - if [[ $MINIMAL_INSTALL == "no" ]]; then - if [[ $SYSTEM_TYPE != "$VARIANT_MESH" ]]; then - interactive_gpg - - data=$(tempfile 2>/dev/null) - trap "rm -f $data" 0 1 2 5 15 - 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." - if [[ $(grep "ENABLE_SOCIAL_KEY_MANAGEMENT" temp.cfg | awk -F '=' '{print $2}') == "yes" ]]; then - dialog --title $"Social Key Management" \ - --backtitle $"Freedombone Configuration" \ - --yesno "$SOCIAL_KEY_STR" 15 60 - else - dialog --title $"Social Key Management" \ - --backtitle $"Freedombone Configuration" \ - --defaultno \ - --yesno "$SOCIAL_KEY_STR" 15 60 - fi - sel=$? - case $sel in - 0) ENABLE_SOCIAL_KEY_MANAGEMENT="yes";; - 255) exit 1;; - esac - save_configuration_file - fi - else - # enable for the minimal case - ENABLE_SOCIAL_KEY_MANAGEMENT="yes" - fi - - if [[ $MINIMAL_INSTALL == "no" ]]; then - data=$(tempfile 2>/dev/null) - trap "rm -f $data" 0 1 2 5 15 - if [[ $INSTALLING_ON_BBB != "yes" ]]; then - dialog --backtitle $"Freedombone Configuration" \ - --radiolist $"Type of Random Number Generator:" 10 40 2 \ - 1 Haveged on \ - 2 OneRNG off 2> $data - sel=$? - case $sel in - 1) exit 1;; - 255) exit 1;; - esac - case $(cat $data) in - 2) HWRNG_TYPE="onerng" - dialog --title $"OneRNG Device" \ - --msgbox $"Please ensure that the OneRNG device is disconnected. You can reconnect it later during the installation" 8 60 - ;; - 255) exit 1;; - esac - else - HWRNG_TYPE="beaglebone" - fi - save_configuration_file - fi - - if [[ $MINIMAL_INSTALL == "no" ]]; then - data=$(tempfile 2>/dev/null) - trap "rm -f $data" 0 1 2 5 15 - dialog --backtitle $"Freedombone Configuration" \ - --radiolist $"Where to download Debian packages from:" 25 45 49 \ - 1 $"Australia" off \ - 2 $"Austria" off \ - 3 $"Belarus" off \ - 4 $"Belgium" off \ - 5 $"Bosnia and Herzegovina" off \ - 6 $"Brazil" off \ - 7 $"Bulgaria" off \ - 8 $"Canada" off \ - 9 $"Chile" off \ - 10 $"China" off \ - 11 $"Croatia" off \ - 12 $"Czech Republic" off \ - 13 $"Denmark" off \ - 14 $"El Salvador" off \ - 15 $"Estonia" off \ - 16 $"Finland" off \ - 17 $"France 1" off \ - 18 $"France 2" off \ - 19 $"Germany 1" off \ - 20 $"Germany 2" off \ - 21 $"Greece" off \ - 22 $"Hungary" off \ - 23 $"Iceland" off \ - 24 $"Iran" off \ - 25 $"Ireland" off \ - 26 $"Italy" off \ - 27 $"Japan" off \ - 28 $"Korea" off \ - 29 $"Lithuania" off \ - 30 $"Mexico" off \ - 31 $"Netherlands" off \ - 32 $"New Caledonia" off \ - 33 $"New Zealand" off \ - 34 $"Norway" off \ - 35 $"Poland" off \ - 36 $"Portugal" off \ - 37 $"Romania" off \ - 38 $"Russia" off \ - 39 $"Slovakia" off \ - 40 $"Slovenia" off \ - 41 $"Spain" off \ - 42 $"Sweden" off \ - 43 $"Switzerland" off \ - 44 $"Taiwan" off \ - 45 $"Thailand" off \ - 46 $"Turkey" off \ - 47 $"Ukraine" off \ - 48 $"United Kingdom" off \ - 49 $"United States" on 2> $data - sel=$? - case $sel in - 1) exit 1;; - 255) exit 1;; - esac - case $(cat $data) in - 1) DEBIAN_REPO='ftp.au.debian.org';; - 2) DEBIAN_REPO='ftp.at.debian.org';; - 3) DEBIAN_REPO='ftp.by.debian.org';; - 4) DEBIAN_REPO='ftp.be.debian.org';; - 5) DEBIAN_REPO='ftp.ba.debian.org';; - 6) DEBIAN_REPO='ftp.br.debian.org';; - 7) DEBIAN_REPO='ftp.bg.debian.org';; - 8) DEBIAN_REPO='ftp.ca.debian.org';; - 9) DEBIAN_REPO='ftp.cl.debian.org';; - 10) DEBIAN_REPO='ftp.cn.debian.org';; - 11) DEBIAN_REPO='ftp.hr.debian.org';; - 12) DEBIAN_REPO='ftp.cz.debian.org';; - 13) DEBIAN_REPO='ftp.dk.debian.org';; - 14) DEBIAN_REPO='ftp.sv.debian.org';; - 15) DEBIAN_REPO='ftp.ee.debian.org';; - 16) DEBIAN_REPO='ftp.fi.debian.org';; - 17) DEBIAN_REPO='ftp2.fr.debian.org';; - 18) DEBIAN_REPO='ftp.fr.debian.org';; - 19) DEBIAN_REPO='ftp2.de.debian.org';; - 20) DEBIAN_REPO='ftp.de.debian.org';; - 21) DEBIAN_REPO='ftp.gr.debian.org';; - 22) DEBIAN_REPO='ftp.hu.debian.org';; - 23) DEBIAN_REPO='ftp.is.debian.org';; - 24) DEBIAN_REPO='ftp.ir.debian.org';; - 25) DEBIAN_REPO='ftp.ie.debian.org';; - 26) DEBIAN_REPO='ftp.it.debian.org';; - 27) DEBIAN_REPO='ftp.jp.debian.org';; - 28) DEBIAN_REPO='ftp.kr.debian.org';; - 29) DEBIAN_REPO='ftp.lt.debian.org';; - 30) DEBIAN_REPO='ftp.mx.debian.org';; - 31) DEBIAN_REPO='ftp.nl.debian.org';; - 32) DEBIAN_REPO='ftp.nc.debian.org';; - 33) DEBIAN_REPO='ftp.nz.debian.org';; - 34) DEBIAN_REPO='ftp.no.debian.org';; - 35) DEBIAN_REPO='ftp.pl.debian.org';; - 36) DEBIAN_REPO='ftp.pt.debian.org';; - 37) DEBIAN_REPO='ftp.ro.debian.org';; - 38) DEBIAN_REPO='ftp.ru.debian.org';; - 39) DEBIAN_REPO='ftp.sk.debian.org';; - 40) DEBIAN_REPO='ftp.si.debian.org';; - 41) DEBIAN_REPO='ftp.es.debian.org';; - 42) DEBIAN_REPO='ftp.se.debian.org';; - 43) DEBIAN_REPO='ftp.ch.debian.org';; - 44) DEBIAN_REPO='ftp.tw.debian.org';; - 45) DEBIAN_REPO='ftp.th.debian.org';; - 46) DEBIAN_REPO='ftp.tr.debian.org';; - 47) DEBIAN_REPO='ftp.ua.debian.org';; - 48) DEBIAN_REPO='ftp.uk.debian.org';; - 49) DEBIAN_REPO='ftp.us.debian.org';; - 255) exit 1;; - esac - save_configuration_file - else - DEBIAN_REPO='ftp.de.debian.org' - fi - - if [[ $MINIMAL_INSTALL == "no" && $ONION_ONLY == "no" ]]; then - data=$(tempfile 2>/dev/null) - trap "rm -f $data" 0 1 2 5 15 - dialog --backtitle $"Freedombone Configuration" \ - --radiolist $"Pick a domain name service (DNS):" 25 50 16 \ - 1 $"Digital Courage" on \ - 2 $"German Privacy Foundation 1" off \ - 3 $"German Privacy Foundation 2" off \ - 4 $"Chaos Computer Club" off \ - 5 $"ClaraNet" off \ - 6 $"OpenNIC 1" off \ - 7 $"OpenNIC 2" off \ - 8 $"OpenNIC 3" off \ - 9 $"OpenNIC 4" off \ - 10 $"OpenNIC 5" off \ - 11 $"OpenNIC 6" off \ - 12 $"OpenNIC 7" off \ - 13 $"PowerNS" off \ - 14 $"ValiDOM" off \ - 15 $"Freie Unzensierte" off \ - 16 $"Google" off 2> $data - sel=$? - case $sel in - 1) exit 1;; - 255) exit 1;; - esac - case $(cat $data) in - 1) NAMESERVER1='85.214.73.63' - NAMESERVER2='213.73.91.35' - ;; - 2) NAMESERVER1='87.118.100.175' - NAMESERVER2='94.75.228.29' - ;; - 3) NAMESERVER1='85.25.251.254' - NAMESERVER2='2.141.58.13' - ;; - 4) NAMESERVER1='213.73.91.35' - NAMESERVER2='85.214.73.63' - ;; - 5) NAMESERVER1='212.82.225.7' - NAMESERVER2='212.82.226.212' - ;; - 6) NAMESERVER1='58.6.115.42' - NAMESERVER2='58.6.115.43' - ;; - 7) NAMESERVER1='119.31.230.42' - NAMESERVER2='200.252.98.162' - ;; - 8) NAMESERVER1='217.79.186.148' - NAMESERVER2='81.89.98.6' - ;; - 9) NAMESERVER1='78.159.101.37' - NAMESERVER2='203.167.220.153' - ;; - 10) NAMESERVER1='82.229.244.191' - NAMESERVER2='82.229.244.191' - ;; - 11) NAMESERVER1='216.87.84.211' - NAMESERVER2='66.244.95.20' - ;; - 12) NAMESERVER1='207.192.69.155' - NAMESERVER2='72.14.189.120' - ;; - 13) NAMESERVER1='194.145.226.26' - NAMESERVER2='77.220.232.44' - ;; - 14) NAMESERVER1='78.46.89.147' - NAMESERVER2='88.198.75.145' - ;; - 15) NAMESERVER1='85.25.149.144' - NAMESERVER2='87.106.37.196' - ;; - 16) NAMESERVER1='8.8.8.8' - NAMESERVER2='4.4.4.4' - ;; - 255) exit 1;; - esac - save_configuration_file - else - # as defaults for a minimal install process these settings are debatable - NAMESERVER1='85.214.73.63' - NAMESERVER2='213.73.91.35' - fi - - if [[ $SYSTEM_TYPE != "$VARIANT_MESH" ]]; then - ${PROJECT_NAME}-wifi --networksinteractive $WIFI_NETWORKS_FILE - fi - - if [[ $SYSTEM_TYPE != "$VARIANT_MESH" && $ONION_ONLY == "no" ]]; then - - data=$(tempfile 2>/dev/null) - trap "rm -f $data" 0 1 2 5 15 - dialog --backtitle $"Freedombone Configuration" \ - --radiolist $"Choose Dynamic DNS provider:" 15 40 14 \ - 1 dyndns off \ - 2 freedns on \ - 3 zoneedit off \ - 4 no-ip off \ - 5 easydns off \ - 6 tzo off \ - 7 3322 off \ - 8 dnsomatic off \ - 9 tunnelbroker off \ - 10 dns.he.net off \ - 11 dynsip off \ - 12 sitelutions off \ - 13 dnsexit off \ - 14 changeip off 2> $data - sel=$? - case $sel in - 1) exit 1;; - 255) exit 1;; - esac - case $(cat $data) in - 1) DDNS_PROVIDER="default@dyndns.org";; - 2) DDNS_PROVIDER="default@freedns.afraid.org";; - 3) DDNS_PROVIDER="default@zoneedit.com";; - 4) DDNS_PROVIDER="default@no-ip.com";; - 5) DDNS_PROVIDER="default@easydns.com";; - 6) DDNS_PROVIDER="default@tzo.com";; - 7) DDNS_PROVIDER="dyndns@3322.org";; - 8) DDNS_PROVIDER="default@dnsomatic.com";; - 9) DDNS_PROVIDER="ipv6tb@he.net";; - 10) DDNS_PROVIDER="dyndns@he.net";; - 11) DDNS_PROVIDER="default@dynsip.org";; - 12) DDNS_PROVIDER="default@sitelutions.com";; - 13) DDNS_PROVIDER="default@dnsexit.com";; - 14) DDNS_PROVIDER="default@changeip.com";; - 255) exit 1;; - esac - save_configuration_file - - valid_ddns_username= - while [ ! $valid_ddns_username ] - do - data=$(tempfile 2>/dev/null) - trap "rm -f $data" 0 1 2 5 15 - dialog --backtitle $"Freedombone Configuration" \ - --inputbox $"Dynamic DNS provider username" 10 30 "$(grep 'DDNS_USERNAME' temp.cfg | awk -F '=' '{print $2}')" 2> $data - sel=$? - case $sel in - 0) possible_username=$(cat $data) - if [ "$possible_username" ]; then - if [ ${#possible_username} -gt 1 ]; then - valid_ddns_username=$(cat $data) - DDNS_USERNAME=$valid_ddns_username - break; - fi - fi - ;; - 1) exit 1;; - 255) exit 1;; - esac - done - save_configuration_file - - valid_ddns_password= - while [ ! $valid_ddns_password ] - do - data=$(tempfile 2>/dev/null) - trap "rm -f $data" 0 1 2 5 15 - dialog --backtitle $"Freedombone Configuration" \ - --clear \ - --insecure \ - --passwordbox $"Dynamic DNS provider password" 10 30 "$(grep 'DDNS_PASSWORD' temp.cfg | awk -F '=' '{print $2}')" 2> $data - sel=$? - case $sel in - 0) possible_password=$(cat $data) - if [ "$possible_password" ]; then - if [ ${#possible_password} -gt 1 ]; then - valid_ddns_password=$(cat $data) - DDNS_PASSWORD=$valid_ddns_password - break; - fi - fi - ;; - 1) exit 1;; - 255) exit 1;; - esac - if [ ${#DDNS_PASSWORD} -lt $MINIMUM_PASSWORD_LENGTH ]; then - 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 - DDNS_PASSWORD="" - fi - done - save_configuration_file - fi - - if [[ $MINIMAL_INSTALL == "no" && $ONION_ONLY == "no" ]]; then - SET_STATIC_IP="no" - dialog --title $"Static local IP address" \ - --backtitle $"Freedombone Configuration" \ - --defaultno \ - --yesno $"\nDo you want to set a static local IP address for this system?\n\nFor example, 192.168.1.10" 10 60 - sel=$? - case $sel in - 0) SET_STATIC_IP="yes";; - 255) exit 1;; - esac - - if [[ $SET_STATIC_IP == "yes" ]]; then - if [ ! $LOCAL_NETWORK_STATIC_IP_ADDRESS ]; then - LOCAL_NETWORK_STATIC_IP_ADDRESS=$(grep 'LOCAL_NETWORK_STATIC_IP_ADDRESS' temp.cfg | awk -F '=' '{print $2}') - if [ ! $LOCAL_NETWORK_STATIC_IP_ADDRESS ]; then - LOCAL_NETWORK_STATIC_IP_ADDRESS='192.168..' - fi - fi - if [ ! $ROUTER_IP_ADDRESS ]; then - ROUTER_IP_ADDRESS=$(grep 'ROUTER_IP_ADDRESS' temp.cfg | awk -F '=' '{print $2}') - if [ ! $ROUTER_IP_ADDRESS ]; then - ROUTER_IP_ADDRESS='192.168..' - fi - fi - data=$(tempfile 2>/dev/null) - trap "rm -f $data" 0 1 2 5 15 - dialog --backtitle $"Freedombone Configuration" \ - --title $"Local Network Configuration" \ - --form $"\nPlease enter the IP addresses:" 11 55 3 \ - $"This system:" 1 1 "$LOCAL_NETWORK_STATIC_IP_ADDRESS" 1 16 16 15 \ - $"Internet router:" 2 1 "$ROUTER_IP_ADDRESS" 2 16 16 15 \ - 2> $data - sel=$? - case $sel in - 1) exit 1;; - 255) exit 1;; - esac - LOCAL_NETWORK_STATIC_IP_ADDRESS=$(cat $data | sed -n 1p) - ROUTER_IP_ADDRESS=$(cat $data | sed -n 2p) - save_configuration_file - fi - fi - - if [[ $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_FULL" ]]; then - if [[ $ONION_ONLY != "no" ]]; then - WIKI_TITLE='My Wiki' - WIKI_DOMAIN_NAME='wiki.local' - else - WIKI_DETAILS_COMPLETE= - while [ ! $WIKI_DETAILS_COMPLETE ] - do - data=$(tempfile 2>/dev/null) - trap "rm -f $data" 0 1 2 5 15 - - if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then - dialog --backtitle $"Freedombone Configuration" \ - --title $"Wiki Configuration" \ - --form $"\nPlease enter your wiki details:" 11 55 4 \ - $"Title:" 1 1 "$(grep 'WIKI_TITLE' temp.cfg | awk -F '=' '{print $2}')" 1 16 33 40 \ - $"Domain:" 2 1 "$(grep 'WIKI_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 2 16 33 40 \ - $"Code:" 3 1 "$(grep 'WIKI_CODE' temp.cfg | awk -F '=' '{print $2}')" 3 16 33 255 \ - 2> $data - else - dialog --backtitle $"Freedombone Configuration" \ - --title $"Wiki Configuration" \ - --form $"\nPlease enter your wiki details:" 11 55 3 \ - $"Title:" 1 1 "$(grep 'WIKI_TITLE' temp.cfg | awk -F '=' '{print $2}')" 1 16 33 40 \ - $"Domain:" 2 1 "$(grep 'WIKI_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 2 16 33 40 \ - 2> $data - fi - sel=$? - case $sel in - 1) exit 1;; - 255) exit 1;; - esac - WIKI_TITLE=$(cat $data | sed -n 1p) - WIKI_DOMAIN_NAME=$(cat $data | sed -n 2p) - if [ $WIKI_DOMAIN_NAME ]; then - TEST_DOMAIN_NAME=$WIKI_DOMAIN_NAME - validate_domain_name - if [[ $TEST_DOMAIN_NAME != $WIKI_DOMAIN_NAME ]]; then - WIKI_DOMAIN_NAME= - dialog --title $"Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50 - else - if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then - WIKI_CODE=$(cat $data | sed -n 3p) - validate_freedns_code "$WIKI_CODE" - if [ ! $VALID_CODE ]; then - WIKI_DOMAIN_NAME= - fi - fi - fi - fi - if [ $WIKI_DOMAIN_NAME ]; then - WIKI_DETAILS_COMPLETE="yes" - fi - done - fi - save_configuration_file - fi - - if [[ $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_FULL" ]]; then - if [[ $ONION_ONLY != "no" ]]; then - MY_BLOG_TITLE='My Blog' - FULLBLOG_DOMAIN_NAME='blog.local' - else - FULLBLOG_DETAILS_COMPLETE= - while [ ! $FULLBLOG_DETAILS_COMPLETE ] - do - data=$(tempfile 2>/dev/null) - trap "rm -f $data" 0 1 2 5 15 - if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then - dialog --backtitle $"Freedombone Configuration" \ - --title $"Blog Configuration" \ - --form $"\nPlease enter your blog details:" 11 55 4 \ - $"Title:" 1 1 "$(grep 'MY_BLOG_TITLE' temp.cfg | awk -F '=' '{print $2}')" 1 16 33 40 \ - $"Domain:" 2 1 "$(grep 'FULLBLOG_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 2 16 33 40 \ - $"Code:" 3 1 "$(grep 'FULLBLOG_CODE' temp.cfg | awk -F '=' '{print $2}')" 3 16 33 255 \ - 2> $data - else - dialog --backtitle $"Freedombone Configuration" \ - --title $"Blog Configuration" \ - --form $"\nPlease enter your blog details:" 11 55 3 \ - $"Title:" 1 1 "$(grep 'MY_BLOG_TITLE' temp.cfg | awk -F '=' '{print $2}')" 1 16 33 40 \ - $"Domain:" 2 1 "$(grep 'FULLBLOG_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 2 16 33 40 \ - 2> $data - fi - sel=$? - case $sel in - 1) exit 1;; - 255) exit 1;; - esac - MY_BLOG_TITLE=$(cat $data | sed -n 1p) - FULLBLOG_DOMAIN_NAME=$(cat $data | sed -n 2p) - if [ $FULLBLOG_DOMAIN_NAME ]; then - if [[ $FULLBLOG_DOMAIN_NAME == "$WIKI_DOMAIN_NAME" ]]; then - FULLBLOG_DOMAIN_NAME="" - fi - TEST_DOMAIN_NAME=$FULLBLOG_DOMAIN_NAME - validate_domain_name - if [[ $TEST_DOMAIN_NAME != $FULLBLOG_DOMAIN_NAME ]]; then - FULLBLOG_DOMAIN_NAME= - dialog --title $"Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50 - else - if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then - FULLBLOG_CODE=$(cat $data | sed -n 3p) - validate_freedns_code "$FULLBLOG_CODE" - if [ ! $VALID_CODE ]; then - FULLBLOG_DOMAIN_NAME= - fi - fi - fi - fi - if [ $FULLBLOG_DOMAIN_NAME ]; then - FULLBLOG_DETAILS_COMPLETE="yes" - fi - done - fi - save_configuration_file - fi - - if [[ $MEDIAGOBLIN_ENABLED == 'yes' ]]; then - if [[ $SYSTEM_TYPE == "$VARIANT_MEDIA" || $SYSTEM_TYPE == "$VARIANT_FULL" ]]; then - if [[ $ONION_ONLY != "no" ]]; then - MEDIAGOBLIN_DOMAIN_NAME='media.local' - else - MEDIAGOBLIN_DETAILS_COMPLETE= - while [ ! $MEDIAGOBLIN_DETAILS_COMPLETE ] - do - data=$(tempfile 2>/dev/null) - trap "rm -f $data" 0 1 2 5 15 - if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then - dialog --backtitle $"Freedombone Configuration" \ - --title $"Mediagoblin Configuration" \ - --form $"\nPlease enter your Mediagoblin details, or just select Ok if you don't need a Mediagoblin site:" 11 55 2 \ - $"Domain:" 1 1 "$(grep 'MEDIAGOBLIN_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 1 16 33 40 \ - $"Code:" 2 1 "$(grep 'MEDIAGOBLIN_CODE' temp.cfg | awk -F '=' '{print $2}')" 2 16 33 255 \ - 2> $data - else - dialog --backtitle $"Freedombone Configuration" \ - --title $"Mediagoblin Configuration" \ - --form $"\nPlease enter your Mediagoblin details, or just select Ok if you don't need a Mediagoblin site:" 11 55 2 \ - $"Domain:" 1 1 "$(grep 'MEDIAGOBLIN_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 1 16 33 40 \ - 2> $data - fi - sel=$? - case $sel in - 1) exit 1;; - 255) exit 1;; - esac - MEDIAGOBLIN_DOMAIN_NAME=$(cat $data | sed -n 1p) - if [ $MEDIAGOBLIN_DOMAIN_NAME ]; then - TEST_DOMAIN_NAME=$MEDIAGOBLIN_DOMAIN_NAME - validate_domain_name - if [[ $TEST_DOMAIN_NAME != $MEDIAGOBLIN_DOMAIN_NAME ]]; then - MEDIAGOBLIN_DOMAIN_NAME='invalid' - dialog --title $"Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50 - else - if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then - MEDIAGOBLIN_CODE=$(cat $data | sed -n 2p) - validate_freedns_code "$MEDIAGOBLIN_CODE" - if [ ! $VALID_CODE ]; then - MEDIAGOBLIN_DOMAIN_NAME='invalid' - fi - fi - fi - fi - if [ $MEDIAGOBLIN_DOMAIN_NAME ]; then - if [[ $MEDIAGOBLIN_DOMAIN_NAME == 'invalid' ]]; then - MEDIAGOBLIN_DOMAIN_NAME= - else - MEDIAGOBLIN_DETAILS_COMPLETE="yes" - fi - fi - done - fi - save_configuration_file - fi - MEDIA_SERVER_ENABLED='no' - fi - - if [[ $MEDIA_SERVER_ENABLED == 'yes' ]]; then - if [[ $SYSTEM_TYPE == "$VARIANT_MEDIA" || $SYSTEM_TYPE == "$VARIANT_FULL" ]]; then - if [[ $ONION_ONLY != "no" ]]; then - MEDIA_SERVER_DOMAIN_NAME='media.local' - else - MEDIA_SERVER_DETAILS_COMPLETE= - while [ ! $MEDIA_SERVER_DETAILS_COMPLETE ] - do - data=$(tempfile 2>/dev/null) - trap "rm -f $data" 0 1 2 5 15 - if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then - dialog --backtitle $"Freedombone Configuration" \ - --title $"Media Server Configuration" \ - --form $"\nPlease enter your Media Server details, or just select Ok if you don't need a Media Server site:" 11 55 2 \ - $"Domain:" 1 1 "$(grep 'MEDIA_SERVER_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 1 16 33 40 \ - $"Code:" 2 1 "$(grep 'MEDIA_SERVER_CODE' temp.cfg | awk -F '=' '{print $2}')" 2 16 33 255 \ - 2> $data - else - dialog --backtitle $"Freedombone Configuration" \ - --title $"Media Server Configuration" \ - --form $"\nPlease enter your Media Server details, or just select Ok if you don't need a Media Server site:" 11 55 2 \ - $"Domain:" 1 1 "$(grep 'MEDIA_SERVER_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 1 16 33 40 \ - 2> $data - fi - sel=$? - case $sel in - 1) exit 1;; - 255) exit 1;; - esac - MEDIA_SERVER_DOMAIN_NAME=$(cat $data | sed -n 1p) - if [ $MEDIA_SERVER_DOMAIN_NAME ]; then - TEST_DOMAIN_NAME=$MEDIA_SERVER_DOMAIN_NAME - validate_domain_name - if [[ $TEST_DOMAIN_NAME != $MEDIA_SERVER_DOMAIN_NAME ]]; then - MEDIA_SERVER_DOMAIN_NAME='invalid' - dialog --title $"Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50 - else - if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then - MEDIA_SERVER_CODE=$(cat $data | sed -n 2p) - validate_freedns_code "$MEDIA_SERVER_CODE" - if [ ! $VALID_CODE ]; then - MEDIA_SERVER_DOMAIN_NAME='invalid' - fi - fi - fi - fi - if [ $MEDIA_SERVER_DOMAIN_NAME ]; then - if [[ $MEDIA_SERVER_DOMAIN_NAME == 'invalid' ]]; then - MEDIA_SERVER_DOMAIN_NAME= - else - MEDIA_SERVER_DETAILS_COMPLETE="yes" - fi - fi - done - fi - save_configuration_file - fi - fi - - if [[ $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_FULL" ]]; then - if [[ $ONION_ONLY != "no" ]]; then - HUBZILLA_DOMAIN_NAME='hubzilla.local' - else - HUBZILLA_DETAILS_COMPLETE= - while [ ! $HUBZILLA_DETAILS_COMPLETE ] - do - data=$(tempfile 2>/dev/null) - trap "rm -f $data" 0 1 2 5 15 - if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then - dialog --backtitle $"Freedombone Configuration" \ - --title $"Hubzilla Configuration" \ - --form $"\nPlease enter your Hubzilla details.\n\nIMPORTANT: This should be a domain name which is supported by Let's Encrypt:" 14 55 3 \ - $"Domain:" 1 1 "$(grep 'HUBZILLA_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 1 16 33 40 \ - $"Code:" 2 1 "$(grep 'HUBZILLA_CODE' temp.cfg | awk -F '=' '{print $2}')" 2 16 33 255 \ - 2> $data - else - dialog --backtitle $"Freedombone Configuration" \ - --title $"Hubzilla Configuration" \ - --form $"\nPlease enter your Hubzilla details\n\nIMPORTANT: This should be a domain name which is supported by Let's Encrypt:" 11 55 3 \ - $"Domain:" 1 1 "$(grep 'HUBZILLA_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 1 16 33 40 \ - 2> $data - fi - sel=$? - case $sel in - 1) exit 1;; - 255) exit 1;; - esac - HUBZILLA_DOMAIN_NAME=$(cat $data | sed -n 1p) - if [ $HUBZILLA_DOMAIN_NAME ]; then - TEST_DOMAIN_NAME=$HUBZILLA_DOMAIN_NAME - validate_domain_name - if [[ $TEST_DOMAIN_NAME != $HUBZILLA_DOMAIN_NAME ]]; then - HUBZILLA_DOMAIN_NAME= - dialog --title $"Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50 - else - if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then - HUBZILLA_CODE=$(cat $data | sed -n 2p) - validate_freedns_code "$HUBZILLA_CODE" - if [ ! $VALID_CODE ]; then - HUBZILLA_DOMAIN_NAME= - fi - fi - fi - fi - if [ $HUBZILLA_DOMAIN_NAME ]; then - HUBZILLA_DETAILS_COMPLETE="yes" - fi - done - fi - save_configuration_file - fi - - if [[ $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_FULL" ]]; then - if [[ $ONION_ONLY != "no" ]]; then - MICROBLOG_DOMAIN_NAME='microblog.local' - else - MICROBLOG_DETAILS_COMPLETE= - while [ ! $MICROBLOG_DETAILS_COMPLETE ] - do - data=$(tempfile 2>/dev/null) - trap "rm -f $data" 0 1 2 5 15 - if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then - dialog --backtitle $"Freedombone Configuration" \ - --title $"Microblog Configuration" \ - --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 \ - $"Domain:" 1 1 "$(grep 'MICROBLOG_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 1 25 33 40 \ - $"Welcome Message:" 2 1 "$(grep '$MICROBLOG_WELCOME_MESSAGE' temp.cfg | awk -F '=' '{print $2}')" 2 25 255 255 \ - $"Background image URL:" 3 1 "$(grep '$MICROBLOG_BACKGROUND_IMAGE_URL' temp.cfg | awk -F '=' '{print $2}')" 3 25 255 255 \ - $"Code:" 4 1 "$(grep 'MICROBLOG_CODE' temp.cfg | awk -F '=' '{print $2}')" 4 25 33 255 \ - 2> $data - else - dialog --backtitle $"Freedombone Configuration" \ - --title $"Microblog Configuration" \ - --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 \ - $"Domain:" 1 1 "$(grep 'MICROBLOG_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 1 25 33 40 \ - $"Welcome Message:" 2 1 "$(grep '$MICROBLOG_WELCOME_MESSAGE' temp.cfg | awk -F '=' '{print $2}')" 2 25 255 255 \ - $"Background image URL:" 3 1 "$(grep '$MICROBLOG_BACKGROUND_IMAGE_URL' temp.cfg | awk -F '=' '{print $2}')" 3 25 255 255 \ - 2> $data - fi - sel=$? - case $sel in - 1) exit 1;; - 255) exit 1;; - esac - MICROBLOG_DOMAIN_NAME=$(cat $data | sed -n 1p) - welcome_msg=$(cat $data | sed -n 2p) - if [ ${#welcome_msg} -gt 1 ]; then - MICROBLOG_WELCOME_MESSAGE=$welcome_msg - fi - img_url=$(cat $data | sed -n 3p) - if [ ${#img_url} -gt 1 ]; then - MICROBLOG_BACKGROUND_IMAGE_URL=$img_url - fi - if [ $MICROBLOG_DOMAIN_NAME ]; then - if [[ $MICROBLOG_DOMAIN_NAME == "$HUBZILLA_DOMAIN_NAME" ]]; then - MICROBLOG_DOMAIN_NAME="" - fi - TEST_DOMAIN_NAME=$MICROBLOG_DOMAIN_NAME - validate_domain_name - if [[ $TEST_DOMAIN_NAME != $MICROBLOG_DOMAIN_NAME ]]; then - MICROBLOG_DOMAIN_NAME= - dialog --title $"Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50 - else - if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then - MICROBLOG_CODE=$(cat $data | sed -n 4p) - validate_freedns_code "$MICROBLOG_CODE" - if [ ! $VALID_CODE ]; then - MICROBLOG_DOMAIN_NAME= - fi - fi - fi - fi - if [ $MICROBLOG_DOMAIN_NAME ]; then - MICROBLOG_DETAILS_COMPLETE="yes" - fi - done - fi - save_configuration_file - fi - - if [[ $SYSTEM_TYPE == "$VARIANT_DEVELOPER" || $SYSTEM_TYPE == "$VARIANT_FULL" ]]; then - if [[ $ONION_ONLY != "no" ]]; then - GIT_DOMAIN_NAME='git.local' - else - DEVELOPER_DETAILS_COMPLETE= - while [ ! $DEVELOPER_DETAILS_COMPLETE ] - do - data=$(tempfile 2>/dev/null) - trap "rm -f $data" 0 1 2 5 15 - - if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then - dialog --backtitle $"Freedombone Configuration" \ - --title $"Developer Configuration" \ - --form $"\nPlease enter your Git hosting site details.\nIf You don't need developer tools then just select Ok" 11 55 3 \ - $"Domain:" 1 1 "$(grep 'GIT_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 1 16 33 40 \ - $"Code:" 2 1 "$(grep 'GIT_CODE' temp.cfg | awk -F '=' '{print $2}')" 2 16 33 255 \ - 2> $data - else - dialog --backtitle $"Freedombone Configuration" \ - --title $"Developer Configuration" \ - --form $"\nPlease enter your Git hosting site details.\nIf You don't need developer tools then just select Ok" 11 55 2 \ - $"Domain:" 1 1 "$(grep 'GIT_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 1 16 33 40 \ - 2> $data - fi - sel=$? - case $sel in - 1) exit 1;; - 255) exit 1;; - esac - GIT_DOMAIN_NAME=$(cat $data | sed -n 1p) - if [ $GIT_DOMAIN_NAME ]; then - TEST_DOMAIN_NAME=$GIT_DOMAIN_NAME - validate_domain_name - if [[ $TEST_DOMAIN_NAME != $GIT_DOMAIN_NAME ]]; then - GIT_DOMAIN_NAME= - dialog --title $"Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50 - else - if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then - GIT_CODE=$(cat $data | sed -n 2p) - validate_freedns_code "$GIT_CODE" - if [ ! $VALID_CODE ]; then - GIT_DOMAIN_NAME= - fi - fi - fi - else - DEVELOPER_DETAILS_COMPLETE="yes" - fi - if [ $GIT_DOMAIN_NAME ]; then - DEVELOPER_DETAILS_COMPLETE="yes" - fi - done - fi - save_configuration_file - fi - - if [[ $SYSTEM_TYPE != "$VARIANT_MESH" ]]; then - if [[ $ONION_ONLY != "no" ]]; then - DEFAULT_DOMAIN_NAME="${PROJECT_NAME}.local" - else - DEFAULT_DOMAIN_DETAILS_COMPLETE= - while [ ! $DEFAULT_DOMAIN_DETAILS_COMPLETE ] - do - data=$(tempfile 2>/dev/null) - trap "rm -f $data" 0 1 2 5 15 - if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then - dialog --backtitle $"Freedombone Configuration" \ - --title $"Your main domain name" \ - --form $"\nWhich domain name should your email/XMPP/IRC/Mumble be associated with?" 11 55 3 \ - $"Domain:" 1 1 "$(grep 'DEFAULT_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 1 16 33 40 \ - $"Code:" 2 1 "$(grep 'DEFAULT_DOMAIN_CODE' temp.cfg | awk -F '=' '{print $2}')" 2 16 33 255 \ - 2> $data - sel=$? - case $sel in - 1) exit 1;; - 255) exit 1;; - esac - DEFAULT_DOMAIN_NAME=$(cat $data | sed -n 1p) - DEFAULT_DOMAIN_CODE=$(cat $data | sed -n 2p) - if [ $DEFAULT_DOMAIN_NAME ]; then - validate_freedns_code "$DEFAULT_DOMAIN_CODE" - if [ ! $VALID_CODE ]; then - DEFAULT_DOMAIN_NAME= - fi - fi - else - dialog --backtitle $"Freedombone Configuration" \ - --inputbox $"Which domain name should your email/XMPP/IRC/Mumble be associated with?" 10 45 \ - "$(grep 'DEFAULT_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 2> $data - sel=$? - case $sel in - 0) DEFAULT_DOMAIN_NAME=$(cat $data);; - 1) exit 1;; - 255) exit 1;; - esac - fi - if [ $DEFAULT_DOMAIN_NAME ]; then - TEST_DOMAIN_NAME=$DEFAULT_DOMAIN_NAME - validate_domain_name - if [[ $TEST_DOMAIN_NAME != $DEFAULT_DOMAIN_NAME ]]; then - DEFAULT_DOMAIN_NAME= - dialog --title $"Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50 - else - DEFAULT_DOMAIN_DETAILS_COMPLETE="yes" - fi - fi - done - fi - save_configuration_file - - if [[ $ONION_ONLY != "no" ]]; then - EMAIL_ADDRESS=$MY_USERNAME@$DEFAULT_DOMAIN_NAME - else - while [ ${#MY_EMAIL_ADDRESS} -lt 5 ] - do - EMAIL_ADDRESS=$(grep 'MY_EMAIL_ADDRESS' temp.cfg | awk -F '=' '{print $2}') - if [ ! $EMAIL_ADDRESS ]; then - EMAIL_ADDRESS=$MY_USERNAME@$DEFAULT_DOMAIN_NAME - fi - if [ ${#MY_EMAIL_ADDRESS} -lt 5 ]; then - EMAIL_ADDRESS=$MY_USERNAME@$DEFAULT_DOMAIN_NAME - fi - - data=$(tempfile 2>/dev/null) - trap "rm -f $data" 0 1 2 5 15 - dialog --backtitle $"Freedombone Configuration" \ - --inputbox $"Your email address" 10 30 "$EMAIL_ADDRESS" 2> $data - sel=$? - case $sel in - 0) MY_EMAIL_ADDRESS=$(cat $data);; - 1) exit 1;; - 255) exit 1;; - esac - done - fi - save_configuration_file - fi + choose_system_variant + set_main_repo + choose_username + choose_full_name + choose_beaglebone_options + choose_social_key_management + choose_rng + choose_debian_repo + choose_dns + ${PROJECT_NAME}-wifi --networksinteractive $WIFI_NETWORKS_FILE + choose_dynamic_dns + choose_static_ip + choose_default_domain_name + choose_email_address + install_apps interactive # delete the temporary configuration file if [ -f temp.cfg ]; then @@ -2024,174 +1518,43 @@ function read_config { CONFIGURATION_FILE='freedombone.cfg' fi - if [ -f $CONFIGURATION_FILE ]; then - if grep -q "FRIENDS_MIRRORS_SERVER" $CONFIGURATION_FILE; then - FRIENDS_MIRRORS_SERVER=$(grep "FRIENDS_MIRRORS_SERVER" $CONFIGURATION_FILE | awk -F '=' '{print $2}') - fi - if grep -q "FRIENDS_MIRRORS_SSH_PORT" $CONFIGURATION_FILE; then - FRIENDS_MIRRORS_SSH_PORT=$(grep "FRIENDS_MIRRORS_SSH_PORT" $CONFIGURATION_FILE | awk -F '=' '{print $2}') - fi - if grep -q "FRIENDS_MIRRORS_PASSWORD" $CONFIGURATION_FILE; then - FRIENDS_MIRRORS_PASSWORD=$(grep "FRIENDS_MIRRORS_PASSWORD" $CONFIGURATION_FILE | awk -F '=' '{print $2}') - fi - if grep -q "ENABLE_SOCIAL_KEY_MANAGEMENT" $CONFIGURATION_FILE; then - ENABLE_SOCIAL_KEY_MANAGEMENT=$(grep "ENABLE_SOCIAL_KEY_MANAGEMENT" $CONFIGURATION_FILE | awk -F '=' '{print $2}') - fi - if grep -q "GIT_DOMAIN_NAME" $CONFIGURATION_FILE; then - GIT_DOMAIN_NAME=$(grep "GIT_DOMAIN_NAME" $CONFIGURATION_FILE | awk -F '=' '{print $2}') - fi - if grep -q "GIT_CODE" $CONFIGURATION_FILE; then - GIT_CODE=$(grep "GIT_CODE" $CONFIGURATION_FILE | awk -F '=' '{print $2}') - fi - if grep -q "MY_USERNAME" $CONFIGURATION_FILE; then - MY_USERNAME=$(grep "MY_USERNAME" $CONFIGURATION_FILE | awk -F '=' '{print $2}') - fi - if grep -q "DOMAIN_NAME" $CONFIGURATION_FILE; then - # for backwards compatability - DEFAULT_DOMAIN_NAME=$(grep "DOMAIN_NAME" $CONFIGURATION_FILE | awk -F '=' '{print $2}') - fi - if grep -q "DEFAULT_DOMAIN_NAME" $CONFIGURATION_FILE; then - DEFAULT_DOMAIN_NAME=$(grep "DEFAULT_DOMAIN_NAME" $CONFIGURATION_FILE | awk -F '=' '{print $2}') - fi - if grep -q "DEFAULT_DOMAIN_CODE" $CONFIGURATION_FILE; then - DEFAULT_DOMAIN_CODE=$(grep "DEFAULT_DOMAIN_CODE" $CONFIGURATION_FILE | awk -F '=' '{print $2}') - fi - if grep -q "NAMESERVER1" $CONFIGURATION_FILE; then - NAMESERVER1=$(grep "NAMESERVER1" $CONFIGURATION_FILE | awk -F '=' '{print $2}') - fi - if grep -q "NAMESERVER2" $CONFIGURATION_FILE; then - NAMESERVER2=$(grep "NAMESERVER2" $CONFIGURATION_FILE | awk -F '=' '{print $2}') - fi - if grep -q "DEBIAN_REPO" $CONFIGURATION_FILE; then - DEBIAN_REPO=$(grep "DEBIAN_REPO" $CONFIGURATION_FILE | awk -F '=' '{print $2}') - 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." - fi - if grep -q "DDNS_PROVIDER" $CONFIGURATION_FILE; then - DDNS_PROVIDER=$(grep "DDNS_PROVIDER" $CONFIGURATION_FILE | awk -F '=' '{print $2}') - fi - if grep -q "DDNS_USERNAME" $CONFIGURATION_FILE; then - DDNS_USERNAME=$(grep "DDNS_USERNAME" $CONFIGURATION_FILE | awk -F '=' '{print $2}') - fi - if grep -q "DDNS_PASSWORD" $CONFIGURATION_FILE; then - DDNS_PASSWORD=$(grep "DDNS_PASSWORD" $CONFIGURATION_FILE | awk -F '=' '{print $2}') - fi - if grep -q "LOCAL_NETWORK_STATIC_IP_ADDRESS" $CONFIGURATION_FILE; then - LOCAL_NETWORK_STATIC_IP_ADDRESS=$(grep "LOCAL_NETWORK_STATIC_IP_ADDRESS" $CONFIGURATION_FILE | awk -F '=' '{print $2}') - fi - if grep -q "ENABLE_CJDNS" $CONFIGURATION_FILE; then - ENABLE_CJDNS=$(grep "ENABLE_CJDNS" $CONFIGURATION_FILE | awk -F '=' '{print $2}') - fi - if grep -q "ENABLE_BATMAN" $CONFIGURATION_FILE; then - ENABLE_BATMAN=$(grep "ENABLE_BATMAN" $CONFIGURATION_FILE | awk -F '=' '{print $2}') - fi - if grep -q "ENABLE_BABEL" $CONFIGURATION_FILE; then - ENABLE_BABEL=$(grep "ENABLE_BABEL" $CONFIGURATION_FILE | awk -F '=' '{print $2}') - fi - if grep -q "ROUTER_IP_ADDRESS" $CONFIGURATION_FILE; then - ROUTER_IP_ADDRESS=$(grep "ROUTER_IP_ADDRESS" $CONFIGURATION_FILE | awk -F '=' '{print $2}') - fi - if grep -q "WIKI_TITLE" $CONFIGURATION_FILE; then - WIKI_TITLE=$(grep "WIKI_TITLE" $CONFIGURATION_FILE | awk -F '=' '{print $2}') - fi - if grep -q "MY_NAME" $CONFIGURATION_FILE; then - MY_NAME=$(grep "MY_NAME" $CONFIGURATION_FILE | awk -F '=' '{print $2}') - fi - if grep -q "MY_EMAIL_ADDRESS" $CONFIGURATION_FILE; then - MY_EMAIL_ADDRESS=$(grep "MY_EMAIL_ADDRESS" $CONFIGURATION_FILE | awk -F '=' '{print $2}') - fi - if grep -q "INSTALLING_ON_BBB" $CONFIGURATION_FILE; then - INSTALLING_ON_BBB=$(grep "INSTALLING_ON_BBB" $CONFIGURATION_FILE | awk -F '=' '{print $2}') - fi - if grep -q "USB_DRIVE" $CONFIGURATION_FILE; then - USB_DRIVE=$(grep "USB_DRIVE" $CONFIGURATION_FILE | awk -F '=' '{print $2}') - fi - if grep -q "PUBLIC_MAILING_LIST" $CONFIGURATION_FILE; then - PUBLIC_MAILING_LIST=$(grep "PUBLIC_MAILING_LIST" $CONFIGURATION_FILE | awk -F '=' '{print $2}') - fi - if grep -q "MICROBLOG_DOMAIN_NAME" $CONFIGURATION_FILE; then - MICROBLOG_DOMAIN_NAME=$(grep "MICROBLOG_DOMAIN_NAME" $CONFIGURATION_FILE | awk -F '=' '{print $2}') - fi - if grep -q "MICROBLOG_CODE" $CONFIGURATION_FILE; then - MICROBLOG_CODE=$(grep "MICROBLOG_CODE" $CONFIGURATION_FILE | awk -F '=' '{print $2}') - fi - if grep -q "MICROBLOG_WELCOME_MESSAGE" $CONFIGURATION_FILE; then - MICROBLOG_WELCOME_MESSAGE=$(grep "MICROBLOG_WELCOME_MESSAGE" $CONFIGURATION_FILE | awk -F '=' '{print $2}') - fi - if grep -q "MICROBLOG_BACKGROUND_IMAGE_URL" $CONFIGURATION_FILE; then - MICROBLOG_BACKGROUND_IMAGE_URL=$(grep "MICROBLOG_BACKGROUND_IMAGE_URL" $CONFIGURATION_FILE | awk -F '=' '{print $2}') - fi - if grep -q "HUBZILLA_DOMAIN_NAME" $CONFIGURATION_FILE; then - HUBZILLA_DOMAIN_NAME=$(grep "HUBZILLA_DOMAIN_NAME" $CONFIGURATION_FILE | awk -F '=' '{print $2}') - fi - if grep -q "HUBZILLA_CODE" $CONFIGURATION_FILE; then - HUBZILLA_CODE=$(grep "HUBZILLA_CODE" $CONFIGURATION_FILE | awk -F '=' '{print $2}') - fi - if grep -q "MEDIAGOBLIN_DOMAIN_NAME" $CONFIGURATION_FILE; then - MEDIAGOBLIN_DOMAIN_NAME=$(grep "MEDIAGOBLIN_DOMAIN_NAME" $CONFIGURATION_FILE | awk -F '=' '{print $2}') - MEDIAGOBLIN_ENABLED='yes' - fi - if grep -q "MEDIAGOBLIN_CODE" $CONFIGURATION_FILE; then - MEDIAGOBLIN_CODE=$(grep "MEDIAGOBLIN_CODE" $CONFIGURATION_FILE | awk -F '=' '{print $2}') - fi - if grep -q "MEDIA_SERVER_DOMAIN_NAME" $CONFIGURATION_FILE; then - MEDIA_SERVER_DOMAIN_NAME=$(grep "MEDIA_SERVER_DOMAIN_NAME" $CONFIGURATION_FILE | awk -F '=' '{print $2}') - MEDIA_SERVER_ENABLED='yes' - fi - if grep -q "MEDIA_SERVER_CODE" $CONFIGURATION_FILE; then - MEDIA_SERVER_CODE=$(grep "MEDIA_SERVER_CODE" $CONFIGURATION_FILE | awk -F '=' '{print $2}') - fi - if grep -q "WIKI_DOMAIN_NAME" $CONFIGURATION_FILE; then - WIKI_DOMAIN_NAME=$(grep "WIKI_DOMAIN_NAME" $CONFIGURATION_FILE | awk -F '=' '{print $2}') - fi - if grep -q "WIKI_CODE" $CONFIGURATION_FILE; then - WIKI_CODE=$(grep "WIKI_CODE" $CONFIGURATION_FILE | awk -F '=' '{print $2}') - fi - if grep -q "FULLBLOG_DOMAIN_NAME" $CONFIGURATION_FILE; then - FULLBLOG_DOMAIN_NAME=$(grep "FULLBLOG_DOMAIN_NAME" $CONFIGURATION_FILE | awk -F '=' '{print $2}') - fi - if grep -q "FULLBLOG_CODE" $CONFIGURATION_FILE; then - FULLBLOG_CODE=$(grep "FULLBLOG_CODE" $CONFIGURATION_FILE | awk -F '=' '{print $2}') - fi - if grep -q "MY_BLOG_TITLE" $CONFIGURATION_FILE; then - MY_BLOG_TITLE=$(grep "MY_BLOG_TITLE" $CONFIGURATION_FILE | awk -F '=' '{print $2}') - fi - if grep -q "MY_BLOG_SUBTITLE" $CONFIGURATION_FILE; then - MY_BLOG_SUBTITLE=$(grep "MY_BLOG_SUBTITLE" $CONFIGURATION_FILE | awk -F '=' '{print $2}') - fi - if grep -q "MEDIAGOBLIN_DOMAIN_NAME" $CONFIGURATION_FILE; then - MEDIAGOBLIN_DOMAIN_NAME=$(grep "MEDIAGOBLIN_DOMAIN_NAME" $CONFIGURATION_FILE | awk -F '=' '{print $2}') - fi - if grep -q "MEDIAGOBLIN_CODE" $CONFIGURATION_FILE; then - MEDIAGOBLIN_CODE=$(grep "MEDIAGOBLIN_CODE" $CONFIGURATION_FILE | awk -F '=' '{print $2}') - fi - if grep -q "MEDIA_SERVER_DOMAIN_NAME" $CONFIGURATION_FILE; then - MEDIA_SERVER_DOMAIN_NAME=$(grep "MEDIA_SERVER_DOMAIN_NAME" $CONFIGURATION_FILE | awk -F '=' '{print $2}') - fi - if grep -q "MEDIA_SERVER_CODE" $CONFIGURATION_FILE; then - MEDIA_SERVER_CODE=$(grep "MEDIA_SERVER_CODE" $CONFIGURATION_FILE | awk -F '=' '{print $2}') - fi - if grep -q "WIFI_SSID" $CONFIGURATION_FILE; then - WIFI_SSID=$(grep "WIFI_SSID" $CONFIGURATION_FILE | awk -F '=' '{print $2}') - fi - if grep -q "WIFI_INTERFACE" $CONFIGURATION_FILE; then - WIFI_INTERFACE=$(grep "WIFI_INTERFACE" $CONFIGURATION_FILE | awk -F '=' '{print $2}') - fi - if grep -q "WIFI_TYPE" $CONFIGURATION_FILE; then - WIFI_TYPE=$(grep "WIFI_TYPE" $CONFIGURATION_FILE | awk -F '=' '{print $2}') - fi - if grep -q "WIFI_PASSPHRASE" $CONFIGURATION_FILE; then - WIFI_PASSPHRASE=$(grep "WIFI_PASSPHRASE" $CONFIGURATION_FILE | awk -F '=' '{print $2}') - fi - if grep -q "BATMAN_CELLID" $CONFIGURATION_FILE; then - BATMAN_CELLID=$(grep "BATMAN_CELLID" $CONFIGURATION_FILE | awk -F '=' '{print $2}') - fi - if grep -q "WIFI_CHANNEL" $CONFIGURATION_FILE; then - WIFI_CHANNEL=$(grep "WIFI_CHANNEL" $CONFIGURATION_FILE | awk -F '=' '{print $2}') - fi - if grep -q "ONION_ONLY" $CONFIGURATION_FILE; then - ONION_ONLY=$(grep "ONION_ONLY" $CONFIGURATION_FILE | awk -F '=' '{print $2}') - fi + if [ ! -f $CONFIGURATION_FILE ]; then + return fi + + read_config_param FRIENDS_MIRRORS_SERVER + read_config_param FRIENDS_MIRRORS_SSH_PORT + read_config_param FRIENDS_MIRRORS_PASSWORD + read_config_param ENABLE_SOCIAL_KEY_MANAGEMENT + read_config_param GIT_DOMAIN_NAME + read_config_param GIT_CODE + read_config_param MY_USERNAME + read_config_param DEFAULT_DOMAIN_NAME + read_config_param DEFAULT_DOMAIN_CODE + read_config_param NAMESERVER1 + read_config_param NAMESERVER2 + read_config_param DEBIAN_REPO + read_config_param DDNS_PROVIDER + read_config_param DDNS_USERNAME + read_config_param DDNS_PASSWORD + read_config_param LOCAL_NETWORK_STATIC_IP_ADDRESS + read_config_param ENABLE_CJDNS + read_config_param ENABLE_BATMAN + read_config_param ENABLE_BABEL + read_config_param ROUTER_IP_ADDRESS + read_config_param WIKI_TITLE + read_config_param MY_NAME + read_config_param MY_EMAIL_ADDRESS + read_config_param INSTALLING_ON_BBB + read_config_param USB_DRIVE + read_config_param PUBLIC_MAILING_LIST + read_config_param WIFI_SSID + read_config_param WIFI_INTERFACE + read_config_param WIFI_TYPE + read_config_param WIFI_PASSPHRASE + read_config_param BATMAN_CELLID + read_config_param WIFI_CHANNEL + read_config_param ONION_ONLY } read_config diff --git a/src/freedombone-utils-config b/src/freedombone-utils-config index 15ce9c83..aa54e5ef 100755 --- a/src/freedombone-utils-config +++ b/src/freedombone-utils-config @@ -40,6 +40,23 @@ function read_config_param { fi } +function write_config_param { + param_name="$1" + param_value="$2" + + if [ $CONFIGURATION_FILE ]; then + if [ -f $CONFIGURATION_FILE ]; then + if grep -q "${param_name}=" $CONFIGURATION_FILE; then + sed -i "s|${param_name}=.*|${param_name}=${param_value}|g" $CONFIGURATION_FILE + else + echo "${param_name}=${param_value}" >> $CONFIGURATION_FILE + fi + else + echo "${param_name}=${param_value}" > $CONFIGURATION_FILE + fi + fi +} + function read_configuration { # if not installing on a Beaglebone then use sdb as the USB drive by default if [ ! $INSTALLING_ON_BBB ]; then diff --git a/src/freedombone-utils-selector b/src/freedombone-utils-selector index 0ba8c173..0c9aa3d1 100755 --- a/src/freedombone-utils-selector +++ b/src/freedombone-utils-selector @@ -92,6 +92,24 @@ function item_in_array { return 1 } +# returns a list of available system variants +# based upon the variants string in each app script +function available_system_variants { + FILES=/usr/share/${PROJECT_NAME}/apps/${PROJECT_NAME}-app-* + + for filename in $FILES + do + variants_list=$(app_variants $filename) + variants_array=($variants_list) + for variant_str in "${vars[@]}" + do + if [[ $(item_in_array "$variant_str" ${available_variants_list[@]}) == "0" ]]; then + available_variants_list+=("$variant_str") + fi + done + done +} + # mark a given app as having been removed so that it doesn't get reinstalled on updates function remove_app { app_name=$1