2015-01-31 23:31:02 +01:00
#!/bin/bash
#
# .---. . .
# | | |
# |--- .--. .-. .-. .-.| .-. .--.--. |.-. .-. .--. .-.
# | | (.-' (.-' ( | ( )| | | | )( )| | (.-'
# ' ' --' --' -' - -' ' ' -' -' -' ' - --'
#
# Freedom in the Cloud
#
# Interactively creates a configuration file for use with the main
# freedombone command
#
# License
# =======
#
2016-01-02 22:58:27 +01:00
# Copyright (C) 2015-2016 Bob Mottram <bob@robotics.uk.to>
2015-01-31 23:31:02 +01:00
#
# This program is free software: you can redistribute it and/or modify
2016-02-13 23:09:27 +01:00
# it under the terms of the GNU Affero General Public License as published by
2015-01-31 23:31:02 +01:00
# 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
2016-02-13 23:09:27 +01:00
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
2015-01-31 23:31:02 +01:00
#
2016-02-13 23:09:27 +01:00
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
2015-01-31 23:31:02 +01:00
NO_OF_ARGS=$#
2015-11-27 12:42:16 +01:00
PROJECT_NAME='freedombone'
2015-11-29 13:11:18 +01:00
# username created by default within a debian image
2015-11-29 14:20:26 +01:00
GENERIC_IMAGE_USERNAME='fbone'
2015-11-29 13:11:18 +01:00
2015-11-27 17:52:23 +01:00
export TEXTDOMAIN=${PROJECT_NAME}-config
2015-11-27 12:42:16 +01:00
export TEXTDOMAINDIR="/usr/share/locale"
2015-01-31 23:31:02 +01:00
# 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
2015-11-29 15:54:30 +01:00
# file containing new password
IMAGE_PASSWORD_FILE=/root/login.txt
2015-01-31 23:31:02 +01:00
# 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"
2015-03-17 22:22:44 +01:00
VARIANT_DEVELOPER="developer"
2015-07-19 13:06:17 +02:00
VARIANT_MESH="mesh"
2015-09-05 11:46:52 +02:00
VARIANT_MESH_USER="mesh-user"
2015-01-31 23:31:02 +01:00
MY_USERNAME=
2015-02-03 21:52:38 +01:00
DEFAULT_DOMAIN_NAME=
2015-02-15 15:49:32 +01:00
DEFAULT_DOMAIN_CODE=
2015-01-31 23:31:02 +01:00
MY_EMAIL_ADDRESS=
SYSTEM_TYPE=
2015-11-30 15:25:09 +01:00
INSTALLING_ON_BBB="no"
2015-01-31 23:31:02 +01:00
DDNS_PROVIDER=
DDNS_USERNAME=
DDNS_PASSWORD=
MY_NAME=
LOCAL_NETWORK_STATIC_IP_ADDRESS=
ROUTER_IP_ADDRESS=
ENABLE_CJDNS=
2015-06-29 23:31:48 +02:00
ENABLE_BATMAN=
2015-07-21 23:52:58 +02:00
ENABLE_BABEL=
2015-01-31 23:31:02 +01:00
DEBIAN_REPO=
NAMESERVER1=
NAMESERVER2=
WIKI_TITLE=
WIKI_DOMAIN_NAME=
2015-02-15 13:47:10 +01:00
WIKI_CODE=
2015-01-31 23:31:02 +01:00
MY_BLOG_TITLE=
FULLBLOG_DOMAIN_NAME=
2015-02-15 13:47:10 +01:00
FULLBLOG_CODE=
2015-01-31 23:31:02 +01:00
OWNCLOUD_DOMAIN_NAME=
2015-02-15 13:47:10 +01:00
OWNCLOUD_CODE=
2015-09-06 23:36:38 +02:00
HUBZILLA_DOMAIN_NAME=
HUBZILLA_CODE=
2015-01-31 23:31:02 +01:00
MICROBLOG_DOMAIN_NAME=
2015-02-15 13:47:10 +01:00
MICROBLOG_CODE=
2016-02-04 16:16:51 +01:00
MICROBLOG_WELCOME_MESSAGE=$"<h1>Welcome to \$MICROBLOG_DOMAIN_NAME – a federated microblog</h1><p>Another $PROJECT_NAME site</p>"
2016-02-04 16:54:46 +01:00
MICROBLOG_BACKGROUND_IMAGE_URL=
2015-03-17 22:22:44 +01:00
GIT_DOMAIN_NAME=
GIT_CODE=
2015-03-25 21:15:33 +01:00
MEDIAGOBLIN_DOMAIN_NAME=
MEDIAGOBLIN_CODE=
2015-03-22 18:17:33 +01:00
USB_DRIVE=/dev/sdb1
2015-06-13 13:00:11 +02:00
HWRNG_TYPE=
2015-07-02 00:00:46 +02:00
ENABLE_SOCIAL_KEY_MANAGEMENT=
2015-07-26 15:09:17 +02:00
ESSID='mesh'
2015-08-18 13:02:50 +02:00
BATMAN_CELLID='any'
2015-07-26 15:09:17 +02:00
WIFI_CHANNEL=
2015-01-31 23:31:02 +01:00
CONFIGURATION_FILE=
2015-08-15 10:30:51 +02:00
DH_KEYLENGTH=
2015-11-30 15:30:51 +01:00
MINIMAL_INSTALL="yes"
2015-12-03 16:27:14 +01:00
DEFAULT_LANGUAGE='en_GB.UTF-8'
2015-12-30 22:31:05 +01:00
ONION_ONLY="no"
2016-02-02 15:01:27 +01:00
SELECTED_USERNAME=
2015-01-31 23:31:02 +01:00
2016-02-01 11:05:29 +01:00
# Mirrors settings
FRIENDS_MIRRORS_SERVER=
FRIENDS_MIRRORS_SSH_PORT=2222
FRIENDS_MIRRORS_PASSWORD=
MY_MIRRORS_PASSWORD=
2016-01-31 14:31:40 +01:00
2016-02-24 10:18:53 +01:00
VALID_CODE=
2015-01-31 23:31:02 +01:00
function show_help {
2015-09-29 13:06:02 +02:00
echo ''
2015-12-08 17:22:48 +01:00
echo $"${PROJECT_NAME}-config -f [config filename] -m [min password length]"
2015-09-29 13:06:02 +02:00
echo ''
2015-11-27 13:31:28 +01:00
echo $'Creates an inventory of remote backup locations'
2015-09-29 13:06:02 +02:00
echo ''
echo ''
2015-11-27 13:31:28 +01:00
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'
2015-12-30 22:51:26 +01:00
echo $' -o --onion [yes|no] Whether to only create .onion sites'
2015-11-30 15:25:09 +01:00
echo $' --minimal [yes|no] For minimalistic "consumer grade" installs'
2015-09-29 13:06:02 +02:00
echo ''
exit 0
2015-01-31 23:31:02 +01:00
}
2016-02-24 10:18:53 +01:00
function validate_freedns_code {
freedns_code="$1"
if [[ "$freedns_code" == *"."* || "$freedns_code" == "http"* || "$freedns_code" == *"wget "* || "$freedns_code" == *" "* ]]; then
echo $'Only the code between ? and = should be entered'
VALID_CODE=
fi
if [ ${#freedns_code} -lt 30 ]; then
echo $'Freedns code is too short. Did you enter the entire code?'
VALID_CODE=
fi
VALID_CODE='yes'
}
2015-01-31 23:31:02 +01:00
# Get the commandline options
while [[ $# > 1 ]]
do
2015-09-29 13:06:02 +02:00
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"
;;
2015-11-30 15:25:09 +01:00
--minimal)
shift
MINIMAL_INSTALL="$1"
;;
2015-12-30 22:51:26 +01:00
-o|--onion)
shift
ONION_ONLY="$1"
;;
2015-09-29 13:06:02 +02:00
*)
# unknown option
;;
esac
2015-01-31 23:31:02 +01:00
shift
done
function save_configuration_file {
2015-09-29 13:06:02 +02:00
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
if [ $DEFAULT_DOMAIN_CODE ]; then
echo "DEFAULT_DOMAIN_CODE=$DEFAULT_DOMAIN_CODE" >> $CONFIGURATION_FILE
fi
echo "SYSTEM_TYPE=$SYSTEM_TYPE" >> $CONFIGURATION_FILE
echo "INSTALLING_ON_BBB=$INSTALLING_ON_BBB" >> $CONFIGURATION_FILE
echo "USB_DRIVE=$USB_DRIVE" >> $CONFIGURATION_FILE
echo "DDNS_PROVIDER=$DDNS_PROVIDER" >> $CONFIGURATION_FILE
echo "DDNS_USERNAME=$DDNS_USERNAME" >> $CONFIGURATION_FILE
echo "DDNS_PASSWORD=$DDNS_PASSWORD" >> $CONFIGURATION_FILE
2015-12-03 16:27:14 +01:00
echo "DEFAULT_LANGUAGE=$DEFAULT_LANGUAGE" >> $CONFIGURATION_FILE
2015-12-01 21:18:36 +01:00
if [ "$MY_NAME" ]; then
2015-09-29 13:06:02 +02:00
echo "MY_NAME=$MY_NAME" >> $CONFIGURATION_FILE
fi
echo "MY_EMAIL_ADDRESS=$MY_EMAIL_ADDRESS" >> $CONFIGURATION_FILE
2015-11-29 16:28:12 +01:00
if [ $LOCAL_NETWORK_STATIC_IP_ADDRESS ]; then
echo "LOCAL_NETWORK_STATIC_IP_ADDRESS=$LOCAL_NETWORK_STATIC_IP_ADDRESS" >> $CONFIGURATION_FILE
echo "ROUTER_IP_ADDRESS=$ROUTER_IP_ADDRESS" >> $CONFIGURATION_FILE
fi
2015-09-29 13:06:02 +02:00
if [ $ENABLE_CJDNS ]; then
echo "ENABLE_CJDNS=$ENABLE_CJDNS" >> $CONFIGURATION_FILE
fi
if [ $ENABLE_BATMAN ]; then
echo "ENABLE_BATMAN=$ENABLE_BATMAN" >> $CONFIGURATION_FILE
fi
if [ $ENABLE_BABEL ]; then
echo "ENABLE_BABEL=$ENABLE_BABEL" >> $CONFIGURATION_FILE
fi
echo "DEBIAN_REPO=$DEBIAN_REPO" >> $CONFIGURATION_FILE
2015-12-30 23:59:09 +01:00
if [ $NAMESERVER1 ]; then
echo "NAMESERVER1=$NAMESERVER1" >> $CONFIGURATION_FILE
fi
if [ $NAMESERVER2 ]; then
echo "NAMESERVER2=$NAMESERVER2" >> $CONFIGURATION_FILE
fi
2016-01-05 11:02:40 +01:00
if [ "$WIKI_TITLE" ]; then
2015-09-29 13:06:02 +02:00
echo "WIKI_TITLE=$WIKI_TITLE" >> $CONFIGURATION_FILE
fi
if [ $WIKI_DOMAIN_NAME ]; then
echo "WIKI_DOMAIN_NAME=$WIKI_DOMAIN_NAME" >> $CONFIGURATION_FILE
fi
if [ $WIKI_CODE ]; then
echo "WIKI_CODE=$WIKI_CODE" >> $CONFIGURATION_FILE
fi
2016-01-05 11:02:40 +01:00
if [ "$MY_BLOG_TITLE" ]; then
2015-09-29 13:06:02 +02:00
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 [ $FULLBLOG_CODE ]; then
echo "FULLBLOG_CODE=$FULLBLOG_CODE" >> $CONFIGURATION_FILE
fi
if [ $OWNCLOUD_DOMAIN_NAME ]; then
echo "OWNCLOUD_DOMAIN_NAME=$OWNCLOUD_DOMAIN_NAME" >> $CONFIGURATION_FILE
fi
if [ $OWNCLOUD_CODE ]; then
echo "OWNCLOUD_CODE=$OWNCLOUD_CODE" >> $CONFIGURATION_FILE
fi
if [ $HUBZILLA_DOMAIN_NAME ]; then
echo "HUBZILLA_DOMAIN_NAME=$HUBZILLA_DOMAIN_NAME" >> $CONFIGURATION_FILE
fi
if [ $HUBZILLA_CODE ]; then
echo "HUBZILLA_CODE=$HUBZILLA_CODE" >> $CONFIGURATION_FILE
fi
if [ $MICROBLOG_DOMAIN_NAME ]; then
echo "MICROBLOG_DOMAIN_NAME=$MICROBLOG_DOMAIN_NAME" >> $CONFIGURATION_FILE
fi
if [ $MICROBLOG_CODE ]; then
echo "MICROBLOG_CODE=$MICROBLOG_CODE" >> $CONFIGURATION_FILE
fi
2016-02-17 12:51:05 +01:00
if [ ${#MICROBLOG_WELCOME_MESSAGE} -gt 1 ]; then
2016-02-04 16:16:51 +01:00
echo "MICROBLOG_WELCOME_MESSAGE=$MICROBLOG_WELCOME_MESSAGE" >> $CONFIGURATION_FILE
fi
2016-02-04 16:54:46 +01:00
if [ $MICROBLOG_BACKGROUND_IMAGE_URL ]; then
echo "MICROBLOG_BACKGROUND_IMAGE_URL=$MICROBLOG_BACKGROUND_IMAGE_URL" >> $CONFIGURATION_FILE
fi
2015-09-29 13:06:02 +02:00
if [ $GIT_DOMAIN_NAME ]; then
echo "GIT_DOMAIN_NAME=$GIT_DOMAIN_NAME" >> $CONFIGURATION_FILE
fi
if [ $GIT_CODE ]; then
echo "GIT_CODE=$GIT_CODE" >> $CONFIGURATION_FILE
fi
if [ $MEDIAGOBLIN_DOMAIN_NAME ]; then
echo "MEDIAGOBLIN_DOMAIN_NAME=$MEDIAGOBLIN_DOMAIN_NAME" >> $CONFIGURATION_FILE
fi
if [ $MEDIAGOBLIN_CODE ]; then
echo "MEDIAGOBLIN_CODE=$MEDIAGOBLIN_CODE" >> $CONFIGURATION_FILE
fi
if [ $HWRNG_TYPE ]; then
echo "HWRNG_TYPE=$HWRNG_TYPE" >> $CONFIGURATION_FILE
fi
if [ $ENABLE_SOCIAL_KEY_MANAGEMENT ]; then
echo "ENABLE_SOCIAL_KEY_MANAGEMENT=$ENABLE_SOCIAL_KEY_MANAGEMENT" >> $CONFIGURATION_FILE
fi
if [ $ESSID ]; then
echo "ESSID=$ESSID" >> $CONFIGURATION_FILE
fi
if [ $BATMAN_CELLID ]; then
echo "BATMAN_CELLID=$BATMAN_CELLID" >> $CONFIGURATION_FILE
fi
if [ $WIFI_CHANNEL ]; then
echo "WIFI_CHANNEL=$WIFI_CHANNEL" >> $CONFIGURATION_FILE
fi
if [ $DH_KEYLENGTH ]; then
echo "DH_KEYLENGTH=$DH_KEYLENGTH" >> $CONFIGURATION_FILE
fi
2015-12-30 22:31:05 +01:00
echo "ONION_ONLY=$ONION_ONLY" >> $CONFIGURATION_FILE
2016-01-31 14:31:40 +01:00
2016-02-01 11:05:29 +01:00
if [ $FRIENDS_MIRRORS_SERVER ]; then
echo "FRIENDS_MIRRORS_SERVER=$FRIENDS_MIRRORS_SERVER" >> $CONFIGURATION_FILE
2016-01-31 14:31:40 +01:00
fi
2016-02-01 11:05:29 +01:00
if [ $FRIENDS_MIRRORS_SSH_PORT ]; then
echo "FRIENDS_MIRRORS_SSH_PORT=$FRIENDS_MIRRORS_SSH_PORT" >> $CONFIGURATION_FILE
2016-01-31 14:31:40 +01:00
fi
2016-02-01 11:05:29 +01:00
if [ $FRIENDS_MIRRORS_PASSWORD ]; then
echo "FRIENDS_MIRRORS_PASSWORD=$FRIENDS_MIRRORS_PASSWORD" >> $CONFIGURATION_FILE
2016-01-31 14:31:40 +01:00
fi
2015-01-31 23:31:02 +01:00
}
# test a domain name to see if it's valid
function validate_domain_name {
2015-09-29 13:06:02 +02:00
# 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
2015-01-31 23:31:02 +01:00
}
2015-07-03 20:19:36 +02:00
function interactive_gpg_from_remote {
2015-09-29 13:06:02 +02:00
REMOTE_SERVERS_LIST=/home/$MY_USERNAME/keyshareservers.txt
# get a list of remote servers
2015-12-08 17:22:48 +01:00
${PROJECT_NAME}-remote -u $MY_USERNAME -l $REMOTE_SERVERS_LIST -t "Remote server"
2015-09-29 13:06:02 +02:00
if [ ! -f $REMOTE_SERVERS_LIST ]; then
2015-11-27 13:31:28 +01:00
dialog --title $"Encryption keys" --msgbox $'Error obtaining server list' 6 70
2015-09-29 13:06:02 +02:00
return 1
fi
# check the number of entries in the file
no_of_servers=$(cat $REMOTE_SERVERS_LIST | wc -l)
if (( no_of_servers < 3 )); then
2015-11-27 13:31:28 +01:00
dialog --title $"Encryption keys" \
--msgbox $'There must be at least three servers to recover the key' 6 70
2015-09-29 13:06:02 +02:00
return 2
fi
# try to recover the key from the servers
apt-get -y install libgfshare-bin gnupg
2015-12-08 17:22:48 +01:00
${PROJECT_NAME}-recoverkey -u $MY_USERNAME -l $REMOTE_SERVERS_LIST
2015-09-29 13:06:02 +02:00
if [ ! "$?" = "0" ]; then
2015-11-27 13:31:28 +01:00
dialog --title $"Encryption keys" --msgbox $'Your key could not be recovered' 6 70
2015-09-29 13:06:02 +02:00
return 3
fi
2015-11-27 13:31:28 +01:00
dialog --title $"Encryption keys" --msgbox $'Your key has been recovered' 6 70
2015-09-29 13:06:02 +02:00
return 0
2015-07-03 20:19:36 +02:00
}
2015-07-04 00:29:43 +02:00
function reconstruct_key {
if [ ! -d /home/$MY_USERNAME/.gnupg_fragments ]; then
return
fi
cd /home/$MY_USERNAME/.gnupg_fragments
2015-07-04 18:32:25 +02:00
no_of_shares=$(ls -afq keyshare.asc.* | wc -l)
if (( no_of_shares < 4 )); then
2015-11-27 13:31:28 +01:00
dialog --title $"Encryption keys" --msgbox $'Not enough fragments to reconstruct the key' 6 70
2015-07-04 00:29:43 +02:00
exit 7348
fi
2015-07-04 00:49:44 +02:00
apt-get -y install libgfshare-bin gnupg
2015-07-04 00:29:43 +02:00
gfcombine /home/$MY_USERNAME/.gnupg_fragments/keyshare*
if [ ! "$?" = "0" ]; then
2015-11-27 13:31:28 +01:00
dialog --title $"Encryption keys" --msgbox $'Unable to reconstruct the key' 6 70
2015-07-04 00:29:43 +02:00
exit 7348
fi
KEYS_FILE=/home/$MY_USERNAME/.gnupg_fragments/keyshare.asc
if [ ! -f $KEYS_FILE ]; then
2015-11-27 13:31:28 +01:00
dialog --title $"Encryption keys" --msgbox $'Unable to reconstruct the key' 6 70
2015-07-04 00:29:43 +02:00
fi
su -c "gpg --allow-secret-key-import --import $KEYS_FILE" - $MY_USERNAME
if [ ! "$?" = "0" ]; then
2015-11-27 13:31:28 +01:00
echo $'Unable to import gpg key'
2015-07-04 00:29:43 +02:00
shred -zu $KEYS_FILE
rm -rf /home/$MY_USERNAME/.tempgnupg
exit 9654
fi
2015-07-04 00:33:12 +02:00
shred -zu $KEYS_FILE
2015-07-04 00:29:43 +02:00
2015-11-27 13:31:28 +01:00
dialog --title $"Encryption keys" --msgbox $'Key has been reconstructed' 6 70
2015-07-04 00:29:43 +02:00
}
2015-07-03 20:19:36 +02:00
function interactive_gpg_from_usb {
2015-11-27 13:31:28 +01:00
dialog --title $"Encryption keys" \
--msgbox $'Plug in a USB drive containing a copy of your full key or key fragment' 6 70
2015-06-29 23:31:48 +02:00
2015-09-29 13:06:02 +02:00
HOME_DIR=/home/$MY_USERNAME
GPG_LOADING="yes"
SSH_IMPORTED="no"
GPG_CTR=0
while [[ $GPG_LOADING == "yes" ]]
do
if [[ $INSTALLING_ON_BBB == "yes" ]]; then
GPG_USB_DRIVE='/dev/sda1'
if [ ! -b $GPG_USB_DRIVE ]; then
if (( GPG_CTR > 0 )); then
reconstruct_key
return 0
fi
2015-11-27 13:31:28 +01:00
dialog --title $"Encryption keys" --msgbox $'No USB drive found' 6 30
2015-09-29 13:06:02 +02:00
exit 739836
fi
else
GPG_USB_DRIVE='/dev/sdb1'
if [ ! -b $GPG_USB_DRIVE ]; then
GPG_USB_DRIVE='/dev/sdc1'
if [ ! -b $GPG_USB_DRIVE ]; then
GPG_USB_DRIVE='/dev/sdd1'
if [ ! -b $GPG_USB_DRIVE ]; then
if (( GPG_CTR > 0 )); then
reconstruct_key
return 0
fi
2015-11-27 13:31:28 +01:00
dialog --title $"Encryption keys" --msgbox $'No USB drive found' 6 30
2015-09-29 13:06:02 +02:00
exit 27852
fi
fi
fi
fi
GPG_USB_MOUNT='/mnt/usb'
umount -f $GPG_USB_MOUNT
if [ ! -d $GPG_USB_MOUNT ]; then
mkdir -p $GPG_USB_MOUNT
fi
if [ -f /dev/mapper/encrypted_usb ]; then
rm -rf /dev/mapper/encrypted_usb
fi
cryptsetup luksClose encrypted_usb
cryptsetup luksOpen $GPG_USB_DRIVE encrypted_usb
if [ "$?" = "0" ]; then
GPG_USB_DRIVE=/dev/mapper/encrypted_usb
fi
mount $GPG_USB_DRIVE $GPG_USB_MOUNT
if [ ! "$?" = "0" ]; then
if (( GPG_CTR > 0 )); then
rm -rf $GPG_USB_MOUNT
reconstruct_key
return 0
fi
2015-11-27 13:31:28 +01:00
dialog --title $"Encryption keys" \
--msgbox $"There was a problem mounting the USB drive to $GPG_USB_MOUNT" 6 70
2015-09-29 13:06:02 +02:00
rm -rf $GPG_USB_MOUNT
exit 74393
fi
if [ ! -d $GPG_USB_MOUNT/.gnupg ]; then
if [ ! -d $GPG_USB_MOUNT/.gnupg_fragments ]; then
if (( GPG_CTR > 0 )); then
umount -f $GPG_USB_MOUNT
rm -rf $GPG_USB_MOUNT
reconstruct_key
return 0
fi
2015-11-27 13:31:28 +01:00
dialog --title $"Encryption keys" \
--msgbox $"The directory $GPG_USB_MOUNT/.gnupg or $GPG_USB_MOUNT/.gnupg_fragments was not found" 6 70
2015-09-29 13:06:02 +02:00
umount -f $GPG_USB_MOUNT
rm -rf $GPG_USB_MOUNT
exit 723814
fi
fi
if [ -d $GPG_USB_MOUNT/.gnupg ]; then
if [ ! -d $HOME_DIR/.gnupg ]; then
mkdir $HOME_DIR/.gnupg
fi
cp -r $GPG_USB_MOUNT/.gnupg/* $HOME_DIR/.gnupg
GPG_LOADING="no"
2015-11-27 13:31:28 +01:00
dialog --title $"Encryption keys" \
--msgbox $"GPG Keyring loaded to $HOME_DIR" 6 70
2015-09-29 13:06:02 +02:00
else
if [ ! -d $HOME_DIR/.gnupg_fragments ]; then
mkdir $HOME_DIR/.gnupg_fragments
fi
cp -r $GPG_USB_MOUNT/.gnupg_fragments/* $HOME_DIR/.gnupg_fragments
fi
if [[ $SSH_IMPORTED == "no" ]]; then
if [ -d $GPG_USB_MOUNT/.ssh ]; then
if [ ! -d $HOME_DIR/.ssh ]; then
mkdir $HOME_DIR/.ssh
fi
cp $GPG_USB_MOUNT/.ssh/* $HOME_DIR/.ssh
2015-11-27 13:31:28 +01:00
dialog --title $"Encryption keys" \
--msgbox $"ssh keys imported" 6 70
2015-09-29 13:06:02 +02:00
SSH_IMPORTED="yes"
fi
fi
umount -f $GPG_USB_MOUNT
rm -rf $GPG_USB_MOUNT
if [[ $GPG_LOADING == "yes" ]]; then
2015-11-27 13:31:28 +01:00
dialog --title $"Encryption keys" \
--msgbox $"Now remove the USB drive. Insert the next drive containing a key fragment, or select Ok to finish" 6 70
2015-09-29 13:06:02 +02:00
fi
GPG_CTR=$((GPG_CTR + 1))
done
2015-06-29 23:31:48 +02:00
}
2015-07-03 20:19:36 +02:00
function interactive_gpg {
2015-09-29 13:06:02 +02:00
GPG_CONFIGURED="no"
while [[ $GPG_CONFIGURED != "yes" ]]
do
GPG_CONFIGURED="yes"
data=$(tempfile 2>/dev/null)
trap "rm -f $data" 0 1 2 5 15
2015-11-27 13:31:28 +01:00
dialog --backtitle $"Freedombone Configuration" \
--radiolist $"GPG/PGP keys for your system:" 13 70 3 \
1 $"Generate new keys (new user)" on \
2 $"Import keys from USB drive/s" off \
3 $"Retrieve keys from friends servers" off 2> $data
2015-09-29 13:06:02 +02:00
sel=$?
case $sel in
1) exit 1;;
255) exit 2;;
esac
case $(cat $data) in
2015-11-29 14:14:15 +01:00
1) if [ -d /home/$MY_USERNAME/.gnupg ]; then
2015-11-29 14:20:26 +01:00
rm -rf /home/$MY_USERNAME/.gnupg
fi
break;;
2015-09-29 13:06:02 +02:00
2) interactive_gpg_from_usb
2015-11-29 14:14:15 +01:00
break;;
2015-09-29 13:06:02 +02:00
3) interactive_gpg_from_remote
if [ ! "$?" = "0" ]; then
GPG_CONFIGURED="no"
fi;;
esac
done
2015-07-03 20:19:36 +02:00
}
2016-01-31 14:31:40 +01:00
function set_main_repo {
data=$(tempfile 2>/dev/null)
trap "rm -f $data" 0 1 2 5 15
dialog --backtitle $"Freedombone Control Panel" \
2016-02-01 11:05:29 +01:00
--title $"Main Repository (Mirrors)" \
2016-02-19 18:07:09 +01:00
--form $"If you don't know what this means then just select Ok.\n\nIf you don't wish to use the default repositories they can be obtained from mirrored repos on another ${PROJECT_NAME} system.\n\nThe repositories are for applications which are not yet packaged for Debian." 18 65 4 \
2016-02-01 11:05:29 +01:00
$"URL:" 1 1 "$FRIENDS_MIRRORS_SERVER" 1 18 40 18 \
$"SSH Port:" 2 1 "$FRIENDS_MIRRORS_SSH_PORT" 2 18 10 10000 \
$"Password:" 3 1 "$FRIENDS_MIRRORS_PASSWORD" 3 18 40 10000 \
2016-01-31 14:31:40 +01:00
2> $data
sel=$?
case $sel in
1) return;;
255) return;;
esac
2016-02-01 11:05:29 +01:00
new_mirrors_url=$(cat $data | sed -n 1p)
new_mirrors_ssh_port=$(cat $data | sed -n 2p)
new_mirrors_password=$(cat $data | sed -n 3p)
2016-01-31 14:31:40 +01:00
2016-02-01 11:05:29 +01:00
if [ ${#new_mirrors_url} -lt 2 ]; then
2016-01-31 14:31:40 +01:00
return
fi
2016-02-01 11:05:29 +01:00
if [ ${#new_mirrors_ssh_port} -lt 1 ]; then
2016-01-31 14:31:40 +01:00
return
fi
2016-02-01 11:05:29 +01:00
if [ ${#new_mirrors_password} -lt 10 ]; then
2016-01-31 14:31:40 +01:00
dialog --title $"Main Repository" \
2016-02-01 11:05:29 +01:00
--msgbox $'Mirrors password was too short. Should be at least 10 characters.' 6 40
2016-01-31 14:31:40 +01:00
return
fi
2016-02-01 11:05:29 +01:00
if [[ $new_mirrors_url == *"."* ]]; then
FRIENDS_MIRRORS_SERVER=$new_mirrors_url
FRIENDS_MIRRORS_SSH_PORT=$new_mirrors_ssh_port
FRIENDS_MIRRORS_PASSWORD=$new_mirrors_password
2016-01-31 14:31:40 +01:00
dialog --title $"Main Repository" \
2016-02-01 11:05:29 +01:00
--msgbox $"Main repository set to $FRIENDS_MIRRORS_SERVER" 6 60
2016-01-31 14:31:40 +01:00
fi
}
2015-12-03 16:27:14 +01:00
function interactive_select_language {
data=$(tempfile 2>/dev/null)
trap "rm -f $data" 0 1 2 5 15
dialog --backtitle $"Freedombone Configuration" \
--radiolist $"Select your language:" 12 40 4 \
1 $"English" on \
2 $"French" off \
3 $"German" off \
4 $"Spanish" off 2> $data
sel=$?
case $sel in
1) exit 1;;
255) exit 1;;
esac
case $(cat $data) in
1) DEFAULT_LANGUAGE='en_GB.UTF-8';;
2) DEFAULT_LANGUAGE='fr_FR.UTF-8';;
3) DEFAULT_LANGUAGE='de_DE.UTF-8';;
3) DEFAULT_LANGUAGE='es_ES.UTF-8';;
esac
save_configuration_file
update-locale LANG=${DEFAULT_LANGUAGE}
update-locale LANGUAGE=${DEFAULT_LANGUAGE}
update-locale LC_MESSAGES=${DEFAULT_LANGUAGE}
update-locale LC_ALL=${DEFAULT_LANGUAGE}
update-locale LC_CTYPE=${DEFAULT_LANGUAGE}
}
2016-02-02 14:57:16 +01:00
function select_user {
SELECTED_USERNAME=
users_array=($(ls /home))
delete=(mirrors git)
for del in ${delete[@]}
do
users_array=(${users_array[@]/$del})
done
i=0
W=()
name=()
for u in ${users_array[@]}
do
i=$((i+1))
W+=($i "$u")
name+=("$u")
done
user_index=$(dialog --backtitle $"Freedombone Configuration" --title $"Select User" --menu $"Select one of the following:" 24 40 17 "${W[@]}" 3>&2 2>&1 1>&3)
if [ $? -eq 0 ]; then
SELECTED_USERNAME="${name[$((user_index-1))]}"
fi
}
2015-01-31 23:31:02 +01:00
function interactive_configuration {
2015-09-29 13:06:02 +02:00
# 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
2015-12-03 16:27:14 +01:00
interactive_select_language
2015-11-27 13:31:28 +01:00
FREEDNS_MESSAGE=$"Please enter the FreeDNS code for this domain.\n\nThe code can be found by going to https://freedns.afraid.org, selecting 'Dynamic DNS' and then opening 'Wget example'. The code will consist of letters and numbers and be between the ? and = characters."
2015-09-29 13:06:02 +02:00
2015-12-30 23:59:09 +01:00
if [[ $ONION_ONLY == "no" ]]; then
INITIAL_MESSAGE=$"Welcome to the Freedombone interactive installer. Communications freedom is only a short time away.\n\nEnsure that you have your domain and dynamic DNS settings ready.\n\nFor more information please visit $FREEDOMBONE_WEBSITE or send a Bitmessage to $FREEDOMBONE_BITMESSAGE"
else
INITIAL_MESSAGE=$"Welcome to the Freedombone interactive installer. Communications freedom is only a short time away.\n\nWeb sites created will only be viewable within a Tor browser.\n\nFor more information please visit $FREEDOMBONE_WEBSITE or send a Bitmessage to $FREEDOMBONE_BITMESSAGE"
fi
dialog --title $"Freedombone" --msgbox "$INITIAL_MESSAGE" 15 50
2015-09-29 13:06:02 +02:00
data=$(tempfile 2>/dev/null)
trap "rm -f $data" 0 1 2 5 15
2015-11-27 13:31:28 +01:00
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
2015-09-29 13:06:02 +02:00
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
2016-01-31 14:31:40 +01:00
if [[ $SYSTEM_TYPE != "$VARIANT_MESH" && $SYSTEM_TYPE != "$VARIANT_MESH_USER" ]]; then
set_main_repo
save_configuration_file
fi
2015-09-29 13:06:02 +02:00
if [[ $SYSTEM_TYPE == "$VARIANT_MESH" || $SYSTEM_TYPE == "$VARIANT_MESH_USER" ]]; then
ENABLE_BATMAN="yes"
ENABLE_CJDNS="no"
ENABLE_BABEL="no"
#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
2015-11-27 13:31:28 +01:00
dialog --backtitle $"Freedombone Configuration" \
--inputbox $"Wireless Mesh ESSID\n\nIf you press enter the default will be '$ESSID'" 10 40 "$(grep 'ESSID' temp.cfg | awk -F '=' '{print $2}')" 2> $data
2015-09-29 13:06:02 +02:00
sel=$?
case $sel in
0) ESSID=$(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
2015-11-27 13:31:28 +01:00
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
2015-09-29 13:06:02 +02:00
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
2015-11-27 13:31:28 +01:00
dialog --backtitle $"Freedombone Configuration" \
--radiolist $"Wifi Channel (spaced to be non-overlapping):" 11 50 4 \
2015-09-29 13:06:02 +02:00
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
2015-12-08 17:22:48 +01:00
${PROJECT_NAME}-client --essid $ESSID --channel $WIFI_CHANNEL
2015-09-29 13:06:02 +02:00
if [ "$?" = "0" ]; then
clear
echo ".---. . . "
echo "| | | "
echo "|--- .--. .-. .-. .-.| .-. .--.--. |.-. .-. .--. .-. "
echo "| | (.-' (.-' ( | ( )| | | | )( )| | (.-' "
echo "' ' --' --' -' - -' ' ' -' -' -' ' - --'"
echo ''
2015-11-27 13:31:28 +01:00
echo $'Your system is now ready for connection to the mesh network'
2015-09-29 13:06:02 +02:00
echo ''
2015-11-27 13:31:28 +01:00
echo $'To connect to the network open a terminal and type:'
2015-09-29 13:06:02 +02:00
echo ''
echo ' meshweb'
echo ''
2015-11-27 13:31:28 +01:00
echo $'To disconnect from the mesh and return to the internet type:'
2015-09-29 13:06:02 +02:00
echo ''
echo ' sudo batman stop'
echo ''
2015-11-27 13:31:28 +01:00
echo $'To turn your system into a dedicated mesh peer you could add'
echo $'the meshweb command to your startup applications'
2015-09-29 13:06:02 +02:00
echo ''
touch /tmp/meshuserdevice
exit 0
else
2015-11-27 13:31:28 +01:00
echo $'Failed to fully install the mesh networking system'
2015-09-29 13:06:02 +02:00
exit 74589
fi
fi
2015-11-29 14:20:26 +01:00
if [ -d /home/$GENERIC_IMAGE_USERNAME ]; then
2015-11-29 16:28:12 +01:00
if [ ! -f $IMAGE_PASSWORD_FILE ]; then
echo 'Cannot find the password file for the admin user'
exit 62753
fi
2015-11-29 13:11:18 +01:00
# when installing from an image which comes with a known default user account
2016-02-02 15:01:27 +01:00
SELECTED_USERNAME=
while [ ! $SELECTED_USERNAME ]
2015-11-29 13:11:18 +01:00
do
2016-02-02 15:01:27 +01:00
if [ ! $SELECTED_USERNAME ]; then
SELECTED_USERNAME=$(grep 'MY_USERNAME' temp.cfg | awk -F '=' '{print $2}')
2015-11-29 13:11:18 +01:00
fi
data=$(tempfile 2>/dev/null)
trap "rm -f $data" 0 1 2 5 15
dialog --backtitle $"Freedombone Configuration" \
--title $"Username" \
2016-02-02 15:01:27 +01:00
--inputbox $"Set your username for the system\n\nYour username should not contain any spaces" 12 60 "$SELECTED_USERNAME" 2> $data
2015-11-29 13:11:18 +01:00
sel=$?
case $sel in
0) possible_username=$(cat $data)
2016-02-02 15:01:27 +01:00
SELECTED_USERNAME=
2015-11-29 13:11:18 +01:00
if [[ $possible_username != *' '* && $possible_username != *'/'* && $possible_username != *'\'* && $possible_username != *'*'* ]]; then
if [ $possible_username ]; then
if [ ${#possible_username} -gt 1 ]; then
2015-11-29 14:20:26 +01:00
if [[ $possible_username != $GENERIC_IMAGE_USERNAME ]]; then
2015-11-29 13:11:18 +01:00
MY_USERNAME=$(cat $data)
2015-12-02 18:30:44 +01:00
useradd -m -s /bin/bash $MY_USERNAME
2015-12-02 18:37:48 +01:00
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
2015-11-29 13:11:18 +01:00
fi
fi
fi
fi
;;
1) exit 1;;
255) exit 1;;
esac
done
2015-09-29 13:06:02 +02:00
else
2015-11-30 16:56:07 +01:00
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)
2015-11-29 13:11:18 +01:00
else
2015-11-30 16:56:07 +01:00
# 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
2016-02-02 14:57:16 +01:00
select_user
2016-02-02 15:01:27 +01:00
if [ ! $SELECTED_USERNAME ]; then
echo $'No username selected'
exit 72589
fi
MY_USERNAME="$SELECTED_USERNAME"
2015-11-30 16:56:07 +01:00
fi
2015-11-29 13:11:18 +01:00
fi
2015-09-29 13:06:02 +02:00
fi
if [ ! $MY_USERNAME ]; then
2015-11-27 13:31:28 +01:00
echo $'No user account was selected'
2015-09-29 13:06:02 +02:00
exit 64398
fi
if [[ $MY_USERNAME == '-f' ]]; then
2015-11-27 13:31:28 +01:00
echo $'No user account was selected'
2015-09-29 13:06:02 +02:00
exit 8347
fi
2015-11-30 16:57:36 +01:00
if [[ $MY_USERNAME == 'debian' || $MY_USERNAME == 'fbone' ]]; then
echo $"Don't use the default user account"
2015-09-29 13:06:02 +02:00
exit 9341
fi
if [ ! -d /home/$MY_USERNAME ]; then
2015-11-27 13:31:28 +01:00
echo $"The directory /home/$MY_USERNAME does not exist"
2015-09-29 13:06:02 +02:00
exit 6437
fi
save_configuration_file
2015-11-30 15:25:09 +01:00
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
2015-09-29 13:06:02 +02:00
fi
2015-11-30 15:25:09 +01:00
if [[ $MINIMAL_INSTALL == "no" ]]; then
if [[ $SYSTEM_TYPE != "$VARIANT_MESH" ]]; then
interactive_gpg
2015-09-29 13:06:02 +02:00
2015-11-30 15:25:09 +01:00
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
2015-09-29 13:06:02 +02:00
data=$(tempfile 2>/dev/null)
trap "rm -f $data" 0 1 2 5 15
2015-11-30 15:25:09 +01:00
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
2015-09-29 13:06:02 +02:00
else
2015-11-30 15:25:09 +01:00
HWRNG_TYPE="beaglebone"
2015-09-29 13:06:02 +02:00
fi
2015-11-30 15:25:09 +01:00
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
2015-09-29 13:06:02 +02:00
sel=$?
case $sel in
2015-11-30 15:25:09 +01:00
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';;
2015-09-29 13:06:02 +02:00
255) exit 1;;
esac
save_configuration_file
2015-11-30 15:25:09 +01:00
else
DEBIAN_REPO='ftp.de.debian.org'
2015-09-29 13:06:02 +02:00
fi
2015-12-30 23:59:09 +01:00
if [[ $MINIMAL_INSTALL == "no" && $ONION_ONLY == "no" ]]; then
2015-11-30 15:25:09 +01:00
data=$(tempfile 2>/dev/null)
trap "rm -f $data" 0 1 2 5 15
2015-11-27 13:31:28 +01:00
dialog --backtitle $"Freedombone Configuration" \
2015-11-30 15:25:09 +01:00
--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
2015-09-29 13:06:02 +02:00
sel=$?
case $sel in
1) exit 1;;
255) exit 1;;
esac
case $(cat $data) in
2015-11-30 15:25:09 +01:00
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'
2015-09-29 13:06:02 +02:00
;;
2015-11-30 15:25:09 +01:00
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'
;;
2015-09-29 13:06:02 +02:00
255) exit 1;;
esac
2015-11-30 15:25:09 +01:00
save_configuration_file
2015-09-29 13:06:02 +02:00
else
2015-11-30 15:25:09 +01:00
# as defaults for a minimal install process these settings are debatable
NAMESERVER1='85.214.73.63'
NAMESERVER2='213.73.91.35'
2015-09-29 13:06:02 +02:00
fi
2015-12-30 23:59:09 +01:00
if [[ $SYSTEM_TYPE != "$VARIANT_MESH" && $ONION_ONLY == "no" ]]; then
2015-09-29 13:06:02 +02:00
data=$(tempfile 2>/dev/null)
trap "rm -f $data" 0 1 2 5 15
2015-11-27 13:31:28 +01:00
dialog --backtitle $"Freedombone Configuration" \
--radiolist $"Choose Dynamic DNS provider:" 15 40 14 \
2015-09-29 13:06:02 +02:00
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
2015-12-01 10:49:03 +01:00
valid_ddns_username=
while [ ! $valid_ddns_username ]
2015-09-29 13:06:02 +02:00
do
data=$(tempfile 2>/dev/null)
trap "rm -f $data" 0 1 2 5 15
2015-11-27 13:31:28 +01:00
dialog --backtitle $"Freedombone Configuration" \
--inputbox $"Dynamic DNS provider username" 10 30 "$(grep 'DDNS_USERNAME' temp.cfg | awk -F '=' '{print $2}')" 2> $data
2015-09-29 13:06:02 +02:00
sel=$?
case $sel in
2015-12-01 10:49:03 +01:00
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
;;
2015-09-29 13:06:02 +02:00
1) exit 1;;
255) exit 1;;
esac
done
save_configuration_file
2015-12-01 10:49:03 +01:00
valid_ddns_password=
while [ ! $valid_ddns_password ]
2015-09-29 13:06:02 +02:00
do
data=$(tempfile 2>/dev/null)
trap "rm -f $data" 0 1 2 5 15
2015-11-27 13:31:28 +01:00
dialog --backtitle $"Freedombone Configuration" \
2015-09-29 13:06:02 +02:00
--clear \
--insecure \
2015-11-27 13:31:28 +01:00
--passwordbox $"Dynamic DNS provider password" 10 30 "$(grep 'DDNS_PASSWORD' temp.cfg | awk -F '=' '{print $2}')" 2> $data
2015-09-29 13:06:02 +02:00
sel=$?
case $sel in
2015-12-01 10:49:03 +01:00
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
;;
2015-09-29 13:06:02 +02:00
1) exit 1;;
255) exit 1;;
esac
if [ ${#DDNS_PASSWORD} -lt $MINIMUM_PASSWORD_LENGTH ]; then
2015-11-27 13:31:28 +01:00
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
2015-09-29 13:06:02 +02:00
DDNS_PASSWORD=""
fi
done
save_configuration_file
fi
if [[ $SYSTEM_TYPE != "$VARIANT_MESH" ]]; then
2015-12-01 10:25:05 +01:00
valid_name=
while [ ! $valid_name ]
2015-09-29 13:06:02 +02:00
do
data=$(tempfile 2>/dev/null)
trap "rm -f $data" 0 1 2 5 15
2015-11-27 13:31:28 +01:00
dialog --backtitle $"Freedombone Configuration" \
--inputbox $"Your full name (or nick)" 10 30 "$(grep 'MY_NAME' temp.cfg | awk -F '=' '{print $2}')" 2> $data
2015-09-29 13:06:02 +02:00
sel=$?
case $sel in
2015-12-01 10:25:05 +01:00
0) possible_name=$(cat $data)
if [ "$possible_name" ]; then
if [ ${#possible_name} -gt 1 ]; then
valid_name="$possible_name"
MY_NAME="$possible_name"
2015-12-01 10:49:03 +01:00
break;
2015-12-01 10:25:05 +01:00
fi
fi
;;
2015-09-29 13:06:02 +02:00
1) exit 1;;
255) exit 1;;
esac
done
save_configuration_file
fi
2015-12-30 23:59:09 +01:00
if [[ $MINIMAL_INSTALL == "no" && $ONION_ONLY == "no" ]]; then
2015-11-30 15:25:09 +01:00
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
2015-11-29 16:28:12 +01:00
2015-11-30 15:25:09 +01:00
if [[ $SET_STATIC_IP == "yes" ]]; then
2015-11-29 16:28:12 +01:00
if [ ! $LOCAL_NETWORK_STATIC_IP_ADDRESS ]; then
2015-11-30 15:25:09 +01:00
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
2015-11-29 16:28:12 +01:00
fi
if [ ! $ROUTER_IP_ADDRESS ]; then
2015-11-30 15:25:09 +01:00
ROUTER_IP_ADDRESS=$(grep 'ROUTER_IP_ADDRESS' temp.cfg | awk -F '=' '{print $2}')
if [ ! $ROUTER_IP_ADDRESS ]; then
ROUTER_IP_ADDRESS='192.168..'
fi
2015-11-29 16:28:12 +01:00
fi
2015-11-30 15:25:09 +01:00
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
2015-09-29 13:06:02 +02:00
fi
fi
if [[ $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_FULL" ]]; then
2015-12-30 22:51:26 +01:00
if [[ $ONION_ONLY != "no" ]]; then
WIKI_TITLE='My Wiki'
2016-01-04 13:06:15 +01:00
WIKI_DOMAIN_NAME='wiki.local'
2015-12-30 22:51:26 +01:00
else
WIKI_DETAILS_COMPLETE=
while [ ! $WIKI_DETAILS_COMPLETE ]
do
data=$(tempfile 2>/dev/null)
trap "rm -f $data" 0 1 2 5 15
2015-09-29 13:06:02 +02:00
2015-12-30 22:51:26 +01:00
if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then
dialog --backtitle $"Freedombone Configuration" \
--title $"Wiki Configuration" \
--form $"\nPlease enter your wiki details:" 11 55 4 \
2016-02-24 10:05:54 +01:00
$"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 \
2015-12-30 22:51:26 +01:00
2> $data
2015-09-29 13:06:02 +02:00
else
2015-12-30 22:51:26 +01:00
dialog --backtitle $"Freedombone Configuration" \
--title $"Wiki Configuration" \
--form $"\nPlease enter your wiki details:" 11 55 3 \
2016-02-24 10:05:54 +01:00
$"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 \
2015-12-30 22:51:26 +01:00
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)
2016-02-24 10:18:53 +01:00
validate_freedns_code "$WIKI_CODE"
if [ ! $VALID_CODE ]; then
2015-12-30 22:51:26 +01:00
WIKI_DOMAIN_NAME=
2016-02-23 10:19:24 +01:00
fi
2015-09-29 13:06:02 +02:00
fi
fi
fi
2015-12-30 22:51:26 +01:00
if [ $WIKI_DOMAIN_NAME ]; then
WIKI_DETAILS_COMPLETE="yes"
fi
done
fi
2015-09-29 13:06:02 +02:00
save_configuration_file
fi
if [[ $SYSTEM_TYPE == "$VARIANT_WRITER" || $SYSTEM_TYPE == "$VARIANT_FULL" ]]; then
2015-12-30 22:51:26 +01:00
if [[ $ONION_ONLY != "no" ]]; then
MY_BLOG_TITLE='My Blog'
2016-01-04 13:06:15 +01:00
FULLBLOG_DOMAIN_NAME='blog.local'
2015-12-30 22:51:26 +01:00
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 \
2016-02-24 10:05:54 +01:00
$"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 \
2015-12-30 22:51:26 +01:00
2> $data
2015-09-29 13:06:02 +02:00
else
2015-12-30 22:51:26 +01:00
dialog --backtitle $"Freedombone Configuration" \
--title $"Blog Configuration" \
--form $"\nPlease enter your blog details:" 11 55 3 \
2016-02-24 10:05:54 +01:00
$"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 \
2015-12-30 22:51:26 +01:00
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)
2016-02-24 10:18:53 +01:00
validate_freedns_code "$FULLBLOG_CODE"
if [ ! $VALID_CODE ]; then
2015-12-30 22:51:26 +01:00
FULLBLOG_DOMAIN_NAME=
2016-02-23 10:19:24 +01:00
fi
2015-09-29 13:06:02 +02:00
fi
fi
fi
2015-12-30 22:51:26 +01:00
if [ $FULLBLOG_DOMAIN_NAME ]; then
FULLBLOG_DETAILS_COMPLETE="yes"
fi
done
fi
2015-09-29 13:06:02 +02:00
save_configuration_file
fi
if [[ $SYSTEM_TYPE == "$VARIANT_CLOUD" || $SYSTEM_TYPE == "$VARIANT_FULL" ]]; then
2015-12-30 22:51:26 +01:00
if [[ $ONION_ONLY != "no" ]]; then
2016-01-04 13:06:15 +01:00
OWNCLOUD_DOMAIN_NAME='owncloud.local'
2015-12-30 22:51:26 +01:00
else
OWNCLOUD_DETAILS_COMPLETE=
while [ ! $OWNCLOUD_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 $"Owncloud Configuration" \
--form $"\nPlease enter your Owncloud details:" 11 55 3 \
2016-02-24 10:05:54 +01:00
$"Domain:" 1 1 "$(grep 'OWNCLOUD_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 1 16 33 40 \
$"Code:" 2 1 "$(grep 'OWNCLOUD_CODE' temp.cfg | awk -F '=' '{print $2}')" 2 16 33 255 \
2015-12-30 22:51:26 +01:00
2> $data
2015-09-29 13:06:02 +02:00
else
2015-12-30 22:51:26 +01:00
dialog --backtitle $"Freedombone Configuration" \
--title $"Owncloud Configuration" \
--form $"\nPlease enter your Owncloud details:" 11 55 3 \
2016-02-24 10:05:54 +01:00
$"Domain:" 1 1 "$(grep 'OWNCLOUD_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 1 16 33 40 \
2015-12-30 22:51:26 +01:00
2> $data
fi
sel=$?
case $sel in
1) exit 1;;
255) exit 1;;
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
else
if [[ $DDNS_PROVIDER == "default@freedns.afraid.org" ]]; then
OWNCLOUD_CODE=$(cat $data | sed -n 2p)
2016-02-24 10:18:53 +01:00
validate_freedns_code "$OWNCLOUD_CODE"
if [ ! $VALID_CODE ]; then
2015-12-30 22:51:26 +01:00
OWNCLOUD_DOMAIN_NAME=
2016-02-23 10:19:24 +01:00
fi
2015-09-29 13:06:02 +02:00
fi
fi
fi
2015-12-30 22:51:26 +01:00
if [ $OWNCLOUD_DOMAIN_NAME ]; then
OWNCLOUD_DETAILS_COMPLETE="yes"
fi
done
fi
2015-09-29 13:06:02 +02:00
save_configuration_file
fi
if [[ $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_FULL" ]]; then
2015-12-30 22:51:26 +01:00
if [[ $ONION_ONLY != "no" ]]; then
2016-01-04 13:06:15 +01:00
HUBZILLA_DOMAIN_NAME='hubzilla.local'
2015-12-30 22:51:26 +01:00
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 \
2016-02-24 10:05:54 +01:00
$"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 \
2015-12-30 22:51:26 +01:00
2> $data
2015-09-29 13:06:02 +02:00
else
2015-12-30 22:51:26 +01:00
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 \
2016-02-24 10:05:54 +01:00
$"Domain:" 1 1 "$(grep 'HUBZILLA_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 1 16 33 40 \
2015-12-30 22:51:26 +01:00
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)
2016-02-24 10:18:53 +01:00
validate_freedns_code "$HUBZILLA_CODE"
if [ ! $VALID_CODE ]; then
2016-02-23 10:19:24 +01:00
HUBZILLA_DOMAIN_NAME=
fi
2015-09-29 13:06:02 +02:00
fi
fi
fi
2015-12-30 22:51:26 +01:00
if [ $HUBZILLA_DOMAIN_NAME ]; then
HUBZILLA_DETAILS_COMPLETE="yes"
fi
done
fi
2015-09-29 13:06:02 +02:00
save_configuration_file
fi
if [[ $SYSTEM_TYPE == "$VARIANT_SOCIAL" || $SYSTEM_TYPE == "$VARIANT_FULL" ]]; then
2015-12-30 22:51:26 +01:00
if [[ $ONION_ONLY != "no" ]]; then
2016-01-04 13:06:15 +01:00
MICROBLOG_DOMAIN_NAME='microblog.local'
2015-12-30 22:51:26 +01:00
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" \
2016-02-04 16:54:46 +01:00
--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 \
2016-02-24 10:05:54 +01:00
$"Domain:" 1 1 "$(grep 'MICROBLOG_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 1 25 33 40 \
2016-02-23 10:03:18 +01:00
$"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 \
2016-02-24 10:05:54 +01:00
$"Code:" 4 1 "$(grep 'MICROBLOG_CODE' temp.cfg | awk -F '=' '{print $2}')" 4 25 33 255 \
2015-12-30 22:51:26 +01:00
2> $data
2015-09-29 13:06:02 +02:00
else
2015-12-30 22:51:26 +01:00
dialog --backtitle $"Freedombone Configuration" \
--title $"Microblog Configuration" \
2016-02-04 16:54:46 +01:00
--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 \
2016-02-24 10:05:54 +01:00
$"Domain:" 1 1 "$(grep 'MICROBLOG_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 1 25 33 40 \
2016-02-23 10:03:18 +01:00
$"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 \
2015-12-30 22:51:26 +01:00
2> $data
fi
sel=$?
case $sel in
1) exit 1;;
255) exit 1;;
esac
MICROBLOG_DOMAIN_NAME=$(cat $data | sed -n 1p)
2016-02-04 16:16:51 +01:00
welcome_msg=$(cat $data | sed -n 2p)
if [ ${#welcome_msg} -gt 1 ]; then
MICROBLOG_WELCOME_MESSAGE=$welcome_msg
2016-02-04 16:54:46 +01:00
fi
2016-02-23 10:19:24 +01:00
img_url=$(cat $data | sed -n 3p)
2016-02-04 16:54:46 +01:00
if [ ${#img_url} -gt 1 ]; then
MICROBLOG_BACKGROUND_IMAGE_URL=$img_url
2016-02-04 16:16:51 +01:00
fi
2015-12-30 22:51:26 +01:00
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
2016-02-04 16:54:46 +01:00
MICROBLOG_CODE=$(cat $data | sed -n 4p)
2016-02-24 10:18:53 +01:00
validate_freedns_code "$MICROBLOG_CODE"
if [ ! $VALID_CODE ]; then
2016-02-23 10:19:24 +01:00
MICROBLOG_DOMAIN_NAME=
fi
2015-09-29 13:06:02 +02:00
fi
fi
fi
2015-12-30 22:51:26 +01:00
if [ $MICROBLOG_DOMAIN_NAME ]; then
MICROBLOG_DETAILS_COMPLETE="yes"
fi
done
fi
2015-09-29 13:06:02 +02:00
save_configuration_file
fi
if [[ $SYSTEM_TYPE == "$VARIANT_DEVELOPER" || $SYSTEM_TYPE == "$VARIANT_FULL" ]]; then
2015-12-30 22:51:26 +01:00
if [[ $ONION_ONLY != "no" ]]; then
2016-01-04 13:06:15 +01:00
GIT_DOMAIN_NAME='git.local'
2015-12-30 22:51:26 +01:00
else
DEVELOPER_DETAILS_COMPLETE=
while [ ! $DEVELOPER_DETAILS_COMPLETE ]
do
data=$(tempfile 2>/dev/null)
trap "rm -f $data" 0 1 2 5 15
2015-09-29 13:06:02 +02:00
2015-12-30 22:51:26 +01:00
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 \
2016-02-24 10:05:54 +01:00
$"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 \
2015-12-30 22:51:26 +01:00
2> $data
2015-09-29 13:06:02 +02:00
else
2015-12-30 22:51:26 +01:00
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 \
2016-02-24 10:05:54 +01:00
$"Domain:" 1 1 "$(grep 'GIT_DOMAIN_NAME' temp.cfg | awk -F '=' '{print $2}')" 1 16 33 40 \
2015-12-30 22:51:26 +01:00
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)
2016-02-24 10:18:53 +01:00
validate_freedns_code "$GIT_CODE"
if [ ! $VALID_CODE ]; then
2015-12-30 22:51:26 +01:00
GIT_DOMAIN_NAME=
2016-02-23 10:19:24 +01:00
fi
2015-09-29 13:06:02 +02:00
fi
fi
2015-12-30 22:51:26 +01:00
else
DEVELOPER_DETAILS_COMPLETE="yes"
2015-09-29 13:06:02 +02:00
fi
2015-12-30 22:51:26 +01:00
if [ $GIT_DOMAIN_NAME ]; then
DEVELOPER_DETAILS_COMPLETE="yes"
fi
done
fi
2015-09-29 13:06:02 +02:00
save_configuration_file
fi
if [[ $SYSTEM_TYPE != "$VARIANT_MESH" ]]; then
2015-12-30 22:51:26 +01:00
if [[ $ONION_ONLY != "no" ]]; then
2016-01-04 13:06:15 +01:00
DEFAULT_DOMAIN_NAME="${PROJECT_NAME}.local"
2015-12-30 22:51:26 +01:00
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/VoIP be associated with?" 11 55 3 \
2016-02-24 10:05:54 +01:00
$"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 \
2015-12-30 22:51:26 +01:00
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
2016-02-24 10:18:53 +01:00
validate_freedns_code "$DEFAULT_DOMAIN_CODE"
if [ ! $VALID_CODE ]; then
2016-02-23 10:19:24 +01:00
DEFAULT_DOMAIN_NAME=
fi
2015-12-30 22:51:26 +01:00
fi
else
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 1;;
255) exit 1;;
esac
fi
2015-09-29 13:06:02 +02:00
if [ $DEFAULT_DOMAIN_NAME ]; then
2015-12-30 22:51:26 +01:00
TEST_DOMAIN_NAME=$DEFAULT_DOMAIN_NAME
validate_domain_name
if [[ $TEST_DOMAIN_NAME != $DEFAULT_DOMAIN_NAME ]]; then
2015-09-29 13:06:02 +02:00
DEFAULT_DOMAIN_NAME=
2015-12-30 22:51:26 +01:00
dialog --title $"Domain name validation" --msgbox "$TEST_DOMAIN_NAME" 15 50
else
DEFAULT_DOMAIN_DETAILS_COMPLETE="yes"
2015-09-29 13:06:02 +02:00
fi
fi
2015-12-30 22:51:26 +01:00
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
2015-11-27 13:31:28 +01:00
dialog --backtitle $"Freedombone Configuration" \
2015-12-30 22:51:26 +01:00
--inputbox $"Your email address" 10 30 "$EMAIL_ADDRESS" 2> $data
2015-09-29 13:06:02 +02:00
sel=$?
case $sel in
2015-12-30 22:51:26 +01:00
0) MY_EMAIL_ADDRESS=$(cat $data);;
2015-09-29 13:06:02 +02:00
1) exit 1;;
255) exit 1;;
esac
2015-12-30 22:51:26 +01:00
done
fi
2015-09-29 13:06:02 +02:00
save_configuration_file
fi
# delete the temporary configuration file
if [ -f temp.cfg ]; then
shred -zu temp.cfg
fi
2015-01-31 23:31:02 +01:00
}
function show_result {
2016-01-05 10:13:27 +01:00
#clear
2015-09-29 13:06:02 +02:00
echo ''
2015-11-27 13:31:28 +01:00
echo -n $"Configuration filename:"
echo " $CONFIGURATION_FILE"
2015-09-29 13:06:02 +02:00
echo ''
2015-11-27 13:31:28 +01:00
echo $'Contents:'
2015-09-29 13:06:02 +02:00
echo ''
cat $CONFIGURATION_FILE
echo ''
2015-01-31 23:31:02 +01:00
}
2015-02-03 22:30:53 +01:00
function read_configuration {
2015-09-29 13:06:02 +02:00
if [ ! $CONFIGURATION_FILE ]; then
CONFIGURATION_FILE='freedombone.cfg'
fi
if [ -f $CONFIGURATION_FILE ]; then
2016-02-01 11:05:29 +01:00
if grep -q "FRIENDS_MIRRORS_SERVER" $CONFIGURATION_FILE; then
FRIENDS_MIRRORS_SERVER=$(grep "FRIENDS_MIRRORS_SERVER" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
2016-01-31 14:31:40 +01:00
fi
2016-02-01 11:05:29 +01:00
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}')
2016-01-31 14:31:40 +01:00
fi
2016-02-01 11:05:29 +01:00
if grep -q "FRIENDS_MIRRORS_PASSWORD" $CONFIGURATION_FILE; then
FRIENDS_MIRRORS_PASSWORD=$(grep "FRIENDS_MIRRORS_PASSWORD" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
2016-01-31 14:31:40 +01:00
fi
2015-09-29 13:06:02 +02:00
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
2016-02-04 16:16:51 +01:00
if grep -q "MICROBLOG_WELCOME_MESSAGE" $CONFIGURATION_FILE; then
MICROBLOG_WELCOME_MESSAGE=$(grep "MICROBLOG_WELCOME_MESSAGE" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
fi
2016-02-04 16:54:46 +01:00
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
2015-09-29 13:06:02 +02:00
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 "OWNCLOUD_DOMAIN_NAME" $CONFIGURATION_FILE; then
OWNCLOUD_DOMAIN_NAME=$(grep "OWNCLOUD_DOMAIN_NAME" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
fi
if grep -q "OWNCLOUD_CODE" $CONFIGURATION_FILE; then
OWNCLOUD_CODE=$(grep "OWNCLOUD_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 "ESSID" $CONFIGURATION_FILE; then
ESSID=$(grep "ESSID" $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
2015-12-30 22:51:26 +01:00
if grep -q "ONION_ONLY" $CONFIGURATION_FILE; then
ONION_ONLY=$(grep "ONION_ONLY" $CONFIGURATION_FILE | awk -F '=' '{print $2}')
fi
2015-09-29 13:06:02 +02:00
fi
2015-02-03 22:30:53 +01:00
}
read_configuration
2015-01-31 23:31:02 +01:00
interactive_configuration
show_result
exit 0