| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351 | 
							- #!/bin/bash
 - #
 - # .---.                  .              .
 - # |                      |              |
 - # |--- .--. .-.  .-.  .-.|  .-. .--.--. |.-.  .-. .--.  .-.
 - # |    |   (.-' (.-' (   | (   )|  |  | |   )(   )|  | (.-'
 - # '    '     --'  --'  -' -  -' '  '   -' -'   -' '   -  --'
 - #
 - #                    Freedom in the Cloud
 - #
 - # This install script is intended for use with Debian Jessie
 - #
 - # License
 - # =======
 - #
 - # Copyright (C) 2014-2016 Bob Mottram <bob@freedombone.net>
 - #
 - # This program is free software: you can redistribute it and/or modify
 - # it under the terms of the GNU Affero 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 Affero General Public License for more details.
 - #
 - # 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/>.
 - 
 - NO_OF_ARGS=$#
 - 
 - PROJECT_NAME='freedombone'
 - 
 - export TEXTDOMAIN=$PROJECT_NAME
 - export TEXTDOMAINDIR="/usr/share/locale"
 - 
 - PROJECT_INSTALL_DIR=/usr/local/bin
 - if [ -f /usr/bin/${PROJECT_NAME} ]; then
 -     PROJECT_INSTALL_DIR=/usr/bin
 - fi
 - 
 - source $PROJECT_INSTALL_DIR/${PROJECT_NAME}-vars
 - 
 - UTILS_FILES=/usr/share/${PROJECT_NAME}/utils/${PROJECT_NAME}-utils-*
 - for f in $UTILS_FILES
 - do
 -     source $f
 - done
 - 
 - APP_FILES=/usr/share/${PROJECT_NAME}/apps/${PROJECT_NAME}-app-*
 - for f in $APP_FILES
 - do
 -     source $f
 - done
 - 
 - command_options=$1
 - 
 - if [[ $command_options == "menuconfig-full" ]]; then
 -     MINIMAL_INSTALL="no"
 - fi
 - 
 - if [[ $command_options == "menuconfig-onion" ]]; then
 -     MINIMAL_INSTALL="yes"
 -     ONION_ONLY="yes"
 - fi
 - 
 - if [ ! $CONFIGURATION_FILE ]; then
 -     CONFIGURATION_FILE=$HOME/${PROJECT_NAME}.cfg
 - fi
 - if [ ! $COMPLETION_FILE ]; then
 -     COMPLETION_FILE=$HOME/${PROJECT_NAME}-completed.txt
 - fi
 - 
 - # before the interactive config so that wifi adaptors may be detected
 - setup_wifi_atheros
 - 
 - if [[ $command_options == "menuconfig"* ]]; then
 -     if [[ "$2" == "--reset" ]]; then
 -         if [ -f $CONFIGURATION_FILE ]; then
 -             rm $CONFIGURATION_FILE
 -         fi
 -         if [ -f $COMPLETION_FILE ]; then
 -             rm $COMPLETION_FILE
 -         fi
 -         if [ -f /usr/share/${PROJECT_NAME}/installed.txt ]; then
 -             rm /usr/share/${PROJECT_NAME}/installed.txt
 -         fi
 -         if [ -f /root/removed ]; then
 -             rm /root/removed
 -         fi
 -     fi
 - 
 -     # clear the interactive file which indicates configuration success
 -     interactive_file=$HOME/.${PROJECT_NAME}-interactive
 -     if [ -f $interactive_file ]; then
 -         rm $interactive_file
 -     fi
 - 
 -     interactive_configuration
 - 
 -     # check that the interactive file was created
 -     if [ ! -f $interactive_file ]; then
 -         exit 6393562
 -     fi
 -     rm $interactive_file
 - else
 -     while [[ $# > 1 ]]
 -     do
 -         key="$1"
 - 
 -         case $key in
 -             -h|--help)
 -                 show_help
 -                 ;;
 -             # load a configuration file
 -             -c|--config)
 -                 shift
 -                 CONFIGURATION_FILE="$1"
 -                 INSTALLING_FROM_CONFIGURATION_FILE="yes"
 -                 break
 -                 ;;
 -             # username within /home
 -             -u|--user)
 -                 shift
 -                 MY_USERNAME="$1"
 -                 ;;
 -             # default domain name
 -             -d|--domain)
 -                 shift
 -                 DEFAULT_DOMAIN_NAME="$1"
 -                 ;;
 -             # The type of system
 -             -s|--system)
 -                 shift
 -                 SYSTEM_TYPE="$1"
 -                 ;;
 -             # The dynamic DNS provider
 -             --ddns)
 -                 shift
 -                 DDNS_PROVIDER="$1"
 -                 ;;
 -             # Username for the synamic DNS provider
 -             --ddnsuser)
 -                 shift
 -                 DDNS_USERNAME="$1"
 -                 ;;
 -             # Password for the synamic DNS provider
 -             --ddnspass)
 -                 shift
 -                 DDNS_PASSWORD="$1"
 -                 ;;
 -             # Whether this installation is on a Beaglebone Black
 -             --bbb)
 -                 INSTALLING_ON_BBB="yes"
 -                 ;;
 -             # Static IP address for the system
 -             --ip)
 -                 shift
 -                 LOCAL_NETWORK_STATIC_IP_ADDRESS=$1
 -                 ;;
 -             # IP address for the internet router
 -             --iprouter)
 -                 shift
 -                 ROUTER_IP_ADDRESS=$1
 -                 ;;
 -             # ssh port
 -             --ssh)
 -                 shift
 -                 SSH_PORT=$1
 -                 ;;
 -             # public mailing list name
 -             --list)
 -                 shift
 -                 PUBLIC_MAILING_LIST="$1"
 -                 ;;
 -             # Number of CPU cores
 -             --cores)
 -                 shift
 -                 CPU_CORES=$1
 -                 ;;
 -             # my name
 -             --name)
 -                 shift
 -                 MY_NAME="$1"
 -                 ;;
 -             # my email address
 -             --email)
 -                 shift
 -                 MY_EMAIL_ADDRESS="$1"
 -                 ;;
 -             # USB drive
 -             --usb)
 -                 shift
 -                 USB_DRIVE=$1
 -                 ;;
 -             # Enable B.A.T.M.A.N
 -             --batman)
 -                 shift
 -                 ENABLE_BATMAN="yes"
 -                 ;;
 -             # Mumble server password
 -             --vpass)
 -                 shift
 -                 MUMBLE_SERVER_PASSWORD=$1
 -                 ;;
 -             # Mumble server port
 -             --vport)
 -                 shift
 -                 MUMBLE_PORT=$1
 -                 ;;
 -             # DNS Nameserver 1
 -             --ns1)
 -                 shift
 -                 NAMESERVER1=$1
 -                 ;;
 -             # DNS Nameserver 2
 -             --ns2)
 -                 shift
 -                 NAMESERVER2=$1
 -                 ;;
 -             # DNS Nameserver 3
 -             --ns3)
 -                 shift
 -                 NAMESERVER3=$1
 -                 ;;
 -             # DNS Nameserver 4
 -             --ns4)
 -                 shift
 -                 NAMESERVER4=$1
 -                 ;;
 -             # DNS Nameserver 5
 -             --ns5)
 -                 shift
 -                 NAMESERVER5=$1
 -                 ;;
 -             # DNS Nameserver 6
 -             --ns6)
 -                 shift
 -                 NAMESERVER6=$1
 -                 ;;
 -             # Debian repository
 -             --repo)
 -                 shift
 -                 DEBIAN_REPO=$1
 -                 ;;
 -             # clear the config file
 -             --reset)
 -                 if [ -f $CONFIGURATION_FILE ]; then
 -                     rm $CONFIGURATION_FILE
 -                 fi
 -                 if [ -f $COMPLETION_FILE ]; then
 -                     rm $COMPLETION_FILE
 -                 fi
 -                 ;;
 -             # minimal install
 -             --minimal)
 -                 shift
 -                 MINIMAL_INSTALL=$1
 -                 ;;
 -             *)
 -                 # unknown option
 -                 ;;
 -         esac
 -         shift
 -     done
 - fi
 - 
 - function parse_args {
 -     if [[ $NO_OF_ARGS == 0 ]]; then
 -         echo 'no_of_args = 0'
 -         show_help
 -         exit 0
 -     fi
 - 
 -     read_config_param 'DEFAULT_DOMAIN_NAME'
 -     read_config_param 'MY_USERNAME'
 -     read_config_param 'SYSTEM_TYPE'
 -     read_config_param 'ONION_ONLY'
 -     read_config_param 'DDNS_PROVIDER'
 -     read_config_param 'DDNS_USERNAME'
 -     read_config_param 'DDNS_PASSWORD'
 - 
 -     if [ ! -d /home/$MY_USERNAME ]; then
 -         echo $"There is no user '$MY_USERNAME' on the system. Use 'adduser $MY_USERNAME' to create the user."
 -         exit 1
 -     fi
 -     if [ ! "$DEFAULT_DOMAIN_NAME" ]; then
 -         if [[ $SYSTEM_TYPE != "mesh"* ]]; then
 -             echo 'No default domain specified'
 -             show_help
 -             exit 2
 -         fi
 -     fi
 -     if [ ! $MY_USERNAME ]; then
 -         echo 'No username specified'
 -         show_help
 -         exit 3
 -     fi
 -     if [[ $SYSTEM_TYPE != "mesh"* ]]; then
 -         if [[ "$DDNS_PROVIDER" != 'none' ]]; then
 -             if [[ $ONION_ONLY == "no" ]]; then
 -                 if [ ! $DDNS_USERNAME ]; then
 -                     echo $'Please provide the username for your dynamic DNS provider with the --ddnsuser option'
 -                     exit 7823
 -                 fi
 -                 if [ ! $DDNS_PASSWORD ]; then
 -                     echo $'Please provide the password for your dynamic DNS provider with the --ddnspass option'
 -                     exit 6382
 -                 fi
 -             fi
 -         fi
 -     fi
 - 
 -     if [ ! $SYSTEM_TYPE ]; then
 -         SYSTEM_TYPE=$'full'
 -         write_config_param "SYSTEM_TYPE" "$SYSTEM_TYPE"
 -     fi
 - 
 -     if [[ $(is_valid_variant) == "0" ]]; then
 -         echo $"'$SYSTEM_TYPE' is an unrecognised ${PROJECT_NAME} variant. Possible variants are:"
 -         show_available_variants
 -         exit 367245
 -     fi
 - }
 - 
 - # run some initial tests
 - clear
 - ${PROJECT_NAME}-tests
 - if [ ! "$?" = "0" ]; then
 -     exit 768252
 - fi
 - 
 - clear
 - echo ''
 - echo $'Setting up the base installation'
 - echo ''
 - 
 - export DEBIAN_FRONTEND=noninteractive
 - 
 - upgrade_installation_from_previous_versions
 - setup_utils
 - setup_email
 - setup_web
 - setup_apps $command_options
 - setup_final
 - 
 - echo ''
 - echo "${PROJECT_NAME} installation is complete"
 - 
 - exit 0
 
 
  |