#!/bin/bash # # .---. . . # | | | # |--- .--. .-. .-. .-.| .-. .--.--. |.-. .-. .--. .-. # | | (.-' (.-' ( | ( )| | | | )( )| | (.-' # ' ' --' --' -' - -' ' ' -' -' -' ' - --' # # Freedom in the Cloud # # This install script is intended for use with Debian Jessie # # License # ======= # # Copyright (C) 2014-2016 Bob Mottram # # 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 . 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" command_options="menuconfig" fi if [[ $command_options == "menuconfig-onion" ]]; then MINIMAL_INSTALL="yes" ONION_ONLY="yes" command_options="menuconfig" fi if [[ $command_options == "menuconfig" ]]; then interactive_configuration 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" ;; # microblog domain name --microblogdomain) shift MICROBLOG_DOMAIN_NAME="$1" ;; # wiki domain name --wikidomain) shift WIKI_DOMAIN_NAME="$1" ;; # blog domain name --blogdomain) shift FULLBLOG_DOMAIN_NAME="$1" ;; # hubzilla domain name --hubzilladomain) shift HUBZILLA_DOMAIN_NAME="$1" ;; # git hosting domain name --gitdomain) shift GIT_DOMAIN_NAME="$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" ;; # Domain name to use as a TLS time source -t|--time) shift TLS_TIME_SOURCE1="$1" ;; # 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 CJDNS --cjdns) shift ENABLE_CJDNS="yes" ;; # Enable B.A.T.M.A.N --batman) shift ENABLE_BATMAN="yes" ;; # Enable Babel --babel) shift ENABLE_BABEL="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 ;; # Debian repository --repo) shift DEBIAN_REPO=$1 ;; # 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' 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 [[ $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 if [ ! $SYSTEM_TYPE ]; then SYSTEM_TYPE=$'full' 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 ${PROJECT_NAME}-tests if [ ! "$?" = "0" ]; then exit 768252 fi upgrade_installation_from_previous_versions setup_utils setup_email setup_web setup_apps setup_final echo "${PROJECT_NAME} installation is complete" exit 0