123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892 |
- #!/bin/bash
- #
- # .---. . .
- # | | |
- # |--- .--. .-. .-. .-.| .-. .--.--. |.-. .-. .--. .-.
- # | | (.-' (.-' ( | ( )| | | | )( )| | (.-'
- # ' ' --' --' -' - -' ' ' -' -' -' ' - --'
- #
- # Freedom in the Cloud
- #
- # Interactively creates a configuration file for use with the main
- # freedombone command
- #
- # License
- # =======
- #
- # Copyright (C) 2015 Bob Mottram <bob@robotics.uk.to>
- #
- # This program is free software: you can redistribute it and/or modify
- # it under the terms of the GNU General Public License as published by
- # the Free Software Foundation, either version 3 of the License, or
- # (at your option) any later version.
- #
- # This program is distributed in the hope that it will be useful,
- # but WITHOUT ANY WARRANTY; without even the implied warranty of
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- # GNU General Public License for more details.
- #
- # You should have received a copy of the GNU General Public License
- # along with this program. If not, see <http://www.gnu.org/licenses/>.
-
- NO_OF_ARGS=$#
-
- # Web site
- FREEDOMBONE_WEBSITE="http://freedombone.uk.to"
-
- # Contact details
- FREEDOMBONE_BITMESSAGE="BM-2cWuhmBvVdfrHhLoZTdspCkKeiTorUesSL"
-
- # Minimum number of characters in a password
- MINIMUM_PASSWORD_LENGTH=10
-
- # Different system variants which may be specified within
- # the SYSTEM_TYPE option
- VARIANT_FULL="full"
- VARIANT_WRITER="writer"
- VARIANT_CLOUD="cloud"
- VARIANT_CHAT="chat"
- VARIANT_MAILBOX="mailbox"
- VARIANT_NONMAILBOX="nonmailbox"
- VARIANT_SOCIAL="social"
- VARIANT_MEDIA="media"
- VARIANT_TOR_DONGLE="tordongle"
-
- MY_USERNAME=
- DEFAULT_DOMAIN_NAME=
- MY_EMAIL_ADDRESS=
- SYSTEM_TYPE=
- INSTALLING_ON_BBB=
- DDNS_PROVIDER=
- DDNS_USERNAME=
- DDNS_PASSWORD=
- MY_NAME=
- LOCAL_NETWORK_STATIC_IP_ADDRESS=
- ROUTER_IP_ADDRESS=
- ENABLE_CJDNS=
- DEBIAN_REPO=
- NAMESERVER1=
- NAMESERVER2=
- WIKI_TITLE=
- WIKI_DOMAIN_NAME=
- MY_BLOG_TITLE=
- FULLBLOG_DOMAIN_NAME=
- OWNCLOUD_DOMAIN_NAME=
- REDMATRIX_DOMAIN_NAME=
- MICROBLOG_DOMAIN_NAME=
-
- CONFIGURATION_FILE=
-
- function show_help {
- echo ''
- echo 'freedombone-config -f [config filename] -m [min password length]'
- echo ''
- echo 'Creates an inventory of remote backup locations'
- echo ''
- echo ''
- echo ' -h --help Show help'
- echo ' -f --filename Configuration file (usually freedombone.cfg)'
- echo ' -m --min Minimum password length (characters)'
- echo ' -w --www Freedombone web site'
- echo ' -b --bm Freedombone support Bitmessage address'
- echo ''
- exit 0
- }
-
- # Get the commandline options
- while [[ $# > 1 ]]
- do
- key="$1"
-
- case $key in
- -h|--help)
- show_help
- ;;
- # Configuration filename
- -f|--filename)
- shift
- CONFIGURATION_FILE="$1"
- ;;
- # Minimum password length
- -m|--min)
- shift
- MINIMUM_PASSWORD_LENGTH="$1"
- ;;
- # Freedombone website
- -w|--www)
- shift
- FREEDOMBONE_WEBSITE="$1"
- ;;
- # Bitmessage address for support
- -b|--bm)
- shift
- FREEDOMBONE_BITMESSAGE="$1"
- ;;
- *)
- # unknown option
- ;;
- esac
- shift
- done
-
- function save_configuration_file {
- if [ ! $CONFIGURATION_FILE ]; then
- CONFIGURATION_FILE='freedombone.cfg'
- fi
-
- echo "MY_USERNAME=$MY_USERNAME" > $CONFIGURATION_FILE
- echo "DEFAULT_DOMAIN_NAME=$DEFAULT_DOMAIN_NAME" >> $CONFIGURATION_FILE
- echo "SYSTEM_TYPE=$SYSTEM_TYPE" >> $CONFIGURATION_FILE
- echo "INSTALLING_ON_BBB=$INSTALLING_ON_BBB" >> $CONFIGURATION_FILE
- echo "DDNS_PROVIDER=$DDNS_PROVIDER" >> $CONFIGURATION_FILE
- echo "DDNS_USERNAME=$DDNS_USERNAME" >> $CONFIGURATION_FILE
- echo "DDNS_PASSWORD=$DDNS_PASSWORD" >> $CONFIGURATION_FILE
- echo "MY_NAME=$MY_NAME" >> $CONFIGURATION_FILE
- echo "MY_EMAIL_ADDRESS=$MY_EMAIL_ADDRESS" >> $CONFIGURATION_FILE
- echo "LOCAL_NETWORK_STATIC_IP_ADDRESS=$LOCAL_NETWORK_STATIC_IP_ADDRESS" >> $CONFIGURATION_FILE
- echo "ROUTER_IP_ADDRESS=$ROUTER_IP_ADDRESS" >> $CONFIGURATION_FILE
- echo "ENABLE_CJDNS=$ENABLE_CJDNS" >> $CONFIGURATION_FILE
- echo "DEBIAN_REPO=$DEBIAN_REPO" >> $CONFIGURATION_FILE
- echo "NAMESERVER1=$NAMESERVER1" >> $CONFIGURATION_FILE
- echo "NAMESERVER2=$NAMESERVER2" >> $CONFIGURATION_FILE
- if [ $WIKI_TITLE ]; then
- echo "WIKI_TITLE=$WIKI_TITLE" >> $CONFIGURATION_FILE
- fi
- if [ $WIKI_DOMAIN_NAME ]; then
- echo "WIKI_DOMAIN_NAME=$WIKI_DOMAIN_NAME" >> $CONFIGURATION_FILE
- fi
- if [ $MY_BLOG_TITLE ]; then
- echo "MY_BLOG_TITLE=$MY_BLOG_TITLE" >> $CONFIGURATION_FILE
- fi
- if [ $FULLBLOG_DOMAIN_NAME ]; then
- echo "FULLBLOG_DOMAIN_NAME=$FULLBLOG_DOMAIN_NAME" >> $CONFIGURATION_FILE
- fi
- if [ $OWNCLOUD_DOMAIN_NAME ]; then
- echo "OWNCLOUD_DOMAIN_NAME=$OWNCLOUD_DOMAIN_NAME" >> $CONFIGURATION_FILE
- fi
- if [ $REDMATRIX_DOMAIN_NAME ]; then
- echo "REDMATRIX_DOMAIN_NAME=$REDMATRIX_DOMAIN_NAME" >> $CONFIGURATION_FILE
- fi
- if [ $MICROBLOG_DOMAIN_NAME ]; then
- echo "MICROBLOG_DOMAIN_NAME=$MICROBLOG_DOMAIN_NAME" >> $CONFIGURATION_FILE
- fi
- }
-
- # test a domain name to see if it's valid
- function validate_domain_name {
- # count the number of dots in the domain name
- dots=${TEST_DOMAIN_NAME//[^.]}
- no_of_dots=${#dots}
- if (( $no_of_dots > 3 )); then
- 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"
- fi
- if (( $no_of_dots == 0 )); then
- 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"
- fi
- }
-
- function interactive_configuration {
- # create a temporary copy of the configuration file
- # which can be used to pre-populate selections
- if [ -f $CONFIGURATION_FILE ]; then
- cp $CONFIGURATION_FILE temp.cfg
- fi
-
- dialog --title "Freedombone" --msgbox "Welcome to the Freedombone interactive installer. Communications freedom is only a short time away.\n\nEnsure that you have your domain and dynamic DNS settings ready.\n\nFor more information please visit $FREEDOMBONE_WEBSITE or send a Bitmessage to $FREEDOMBONE_BITMESSAGE" 15 50
-
- data=$(tempfile 2>/dev/null)
- trap "rm -f $data" 0 1 2 5 15
- dialog --backtitle "Freedombone Configuration" \
- --radiolist "Type of Installation:" 15 40 8 \
- 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 2> $data
- sel=$?
- case $sel in
- 1) exit 0;;
- 255) exit 0;;
- 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;;
- esac
- save_configuration_file
-
- data=$(tempfile 2>/dev/null)
- trap "rm -f $data" 0 1 2 5 15
- dialog --title "Select the user account to install as" \
- --backtitle "Freedombone Configuration" \
- --dselect "/home/$(grep 'MY_USERNAME' temp.cfg | awk -F '=' '{print $2}')" 14 40 2> $data
- sel=$?
- case $sel in
- 0) MY_USERNAME=$(cat $data | awk -F '/' '{print $3}');;
- 1) exit 0;;
- 255) exit 0;;
- esac
- 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 [ ! -d /home/$MY_USERNAME ]; then
- echo "The directory /home/$MY_USERNAME does not exist"
- exit 6437
- fi
- save_configuration_file
-
- 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 0;;
- esac
- save_configuration_file
-
- 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 0;;
- 255) exit 0;;
- 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 0;;
- esac
- save_configuration_file
-
- 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 0;;
- 255) exit 0;;
- 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 0;;
- esac
- save_configuration_file
-
- 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 off \
- 3 zoneedit off \
- 4 no-ip on \
- 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 0;;
- 255) exit 0;;
- 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 0;;
- esac
- save_configuration_file
-
- while [ ! $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) DDNS_USERNAME=$(cat $data);;
- 1) exit 0;;
- 255) exit 0;;
- esac
- done
- save_configuration_file
-
- while [ ! $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) DDNS_PASSWORD=$(cat $data);;
- 1) exit 0;;
- 255) exit 0;;
- 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
-
- while [ ! $MY_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) MY_NAME=$(cat $data);;
- 1) exit 0;;
- 255) exit 0;;
- esac
- done
- save_configuration_file
-
- 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 0;;
- 255) exit 0;;
- esac
- LOCAL_NETWORK_STATIC_IP_ADDRESS=$(cat $data | sed -n 1p)
- ROUTER_IP_ADDRESS=$(cat $data | sed -n 2p)
- save_configuration_file
-
- data=$(tempfile 2>/dev/null)
- trap "rm -f $data" 0 1 2 5 15
- if [[ $(grep 'ENABLE_CJDNS' temp.cfg | awk -F '=' '{print $2}') == "yes" ]]; then
- dialog --title "Mesh Networking" \
- --backtitle "Freedombone Configuration" \
- --yesno "\nDo you want to enable CJDNS?" 7 60
- else
- dialog --title "Mesh Networking" \
- --backtitle "Freedombone Configuration" \
- --defaultno \
- --yesno "\nDo you want to enable CJDNS?" 7 60
- fi
- sel=$?
- case $sel in
- 0) ENABLE_CJDNS="yes";;
- 1) ENABLE_CJDNS="no";;
- 255) exit 0;;
- esac
- save_configuration_file
-
- if [[ $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_FULL" ]]; then
- while [ ! $WIKI_DOMAIN_NAME ]
- do
- data=$(tempfile 2>/dev/null)
- trap "rm -f $data" 0 1 2 5 15
- 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 25 40 \
- "Domain:" 2 1 "$(grep 'WIKI_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 2 16 25 40 \
- 2> $data
- sel=$?
- case $sel in
- 1) exit 0;;
- 255) exit 0;;
- 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
- fi
- fi
- done
- save_configuration_file
- fi
-
- if [[ $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_FULL" ]]; then
- while [ ! $FULLBLOG_DOMAIN_NAME ]
- do
- data=$(tempfile 2>/dev/null)
- trap "rm -f $data" 0 1 2 5 15
- 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 25 30 \
- "Domain:" 2 1 "$(grep 'FULLBLOG_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 2 16 25 30 \
- 2> $data
- sel=$?
- case $sel in
- 1) exit 0;;
- 255) exit 0;;
- 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
- fi
- fi
- done
- save_configuration_file
- fi
-
- if [[ $SYSTEM_TYPE == "$VARIANT_CLOUD" || $SYSTEM_TYPE == "$VARIANT_FULL" ]]; then
- while [ ! $OWNCLOUD_DOMAIN_NAME ]
- do
- data=$(tempfile 2>/dev/null)
- trap "rm -f $data" 0 1 2 5 15
- dialog --backtitle "Freedombone Configuration" \
- --title "Owncloud Configuration" \
- --form "\nPlease enter your Owncloud details:" 11 55 3 \
- "Domain:" 1 1 "$(grep 'OWNCLOUD_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 1 16 25 30 \
- 2> $data
- sel=$?
- case $sel in
- 1) exit 0;;
- 255) exit 0;;
- esac
- OWNCLOUD_DOMAIN_NAME=$(cat $data | sed -n 1p)
- if [ $OWNCLOUD_DOMAIN_NAME ]; then
- TEST_DOMAIN_NAME=$OWNCLOUD_DOMAIN_NAME
- validate_domain_name
- if [[ $TEST_DOMAIN_NAME != $OWNCLOUD_DOMAIN_NAME ]]; then
- OWNCLOUD_DOMAIN_NAME=
- dialog --title "Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50
- fi
- fi
- done
- save_configuration_file
- fi
-
- if [[ $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_FULL" ]]; then
- while [ ! $REDMATRIX_DOMAIN_NAME ]
- do
- data=$(tempfile 2>/dev/null)
- trap "rm -f $data" 0 1 2 5 15
- dialog --backtitle "Freedombone Configuration" \
- --title "RedMatrix Configuration" \
- --form "\nPlease enter your RedMatrix details:" 11 55 3 \
- "Domain:" 1 1 "$(grep 'REDMATRIX_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 1 16 25 30 \
- 2> $data
- sel=$?
- case $sel in
- 1) exit 0;;
- 255) exit 0;;
- esac
- REDMATRIX_DOMAIN_NAME=$(cat $data | sed -n 1p)
- if [ $REDMATRIX_DOMAIN_NAME ]; then
- TEST_DOMAIN_NAME=$REDMATRIX_DOMAIN_NAME
- validate_domain_name
- if [[ $TEST_DOMAIN_NAME != $REDMATRIX_DOMAIN_NAME ]]; then
- REDMATRIX_DOMAIN_NAME=
- dialog --title "Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50
- fi
- fi
- done
- save_configuration_file
- fi
-
- if [[ $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_FULL" ]]; then
- while [ ! $MICROBLOG_DOMAIN_NAME ]
- do
- data=$(tempfile 2>/dev/null)
- trap "rm -f $data" 0 1 2 5 15
- dialog --backtitle "Freedombone Configuration" \
- --title "Microblog Configuration" \
- --form "\nPlease enter your Microblog details:" 11 55 3 \
- "Domain:" 1 1 "$(grep 'MICROBLOG_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 1 16 25 30 \
- 2> $data
- sel=$?
- case $sel in
- 1) exit 0;;
- 255) exit 0;;
- esac
- MICROBLOG_DOMAIN_NAME=$(cat $data | sed -n 1p)
- if [ $MICROBLOG_DOMAIN_NAME ]; then
- if [[ $MICROBLOG_DOMAIN_NAME == "$REDMATRIX_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
- fi
- fi
- done
- save_configuration_file
- fi
-
- if [ ! $DEFAULT_DOMAIN_NAME ]; then
- while [ ! $DEFAULT_DOMAIN_NAME ]
- do
- data=$(tempfile 2>/dev/null)
- trap "rm -f $data" 0 1 2 5 15
- dialog --backtitle "Freedombone Configuration" \
- --inputbox "Which domain name should your email/XMPP/IRC/VoIP 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 0;;
- 255) exit 0;;
- esac
- done
- save_configuration_file
- fi
-
- while [ ! $MY_EMAIL_ADDRESS ]
- 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
-
- 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 0;;
- 255) exit 0;;
- esac
- done
-
- save_configuration_file
-
- # delete the temporary configuration file
- if [ -f temp.cfg ]; then
- shred -zu temp.cfg
- fi
- }
-
- function show_result {
- clear
- echo ''
- echo "Configuration filename: $CONFIGURATION_FILE"
- echo ''
- echo 'Contents:'
- echo ''
- cat $CONFIGURATION_FILE
- echo ''
- }
-
- function read_configuration {
- if [ ! $CONFIGURATION_FILE ]; then
- CONFIGURATION_FILE='freedombone.cfg'
- fi
-
- if [ -f $CONFIGURATION_FILE ]; then
- 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 "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 "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 "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 "REDMATRIX_DOMAIN_NAME" $CONFIGURATION_FILE; then
- REDMATRIX_DOMAIN_NAME=$(grep "REDMATRIX_DOMAIN_NAME" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
- fi
- if grep -q "OWNCLOUD_DOMAIN_NAME" $CONFIGURATION_FILE; then
- OWNCLOUD_DOMAIN_NAME=$(grep "OWNCLOUD_DOMAIN_NAME" $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 "FULLBLOG_DOMAIN_NAME" $CONFIGURATION_FILE; then
- FULLBLOG_DOMAIN_NAME=$(grep "FULLBLOG_DOMAIN_NAME" $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
- fi
- }
-
- read_configuration
- interactive_configuration
- show_result
- exit 0
|