#!/bin/sh IP_HOSTNAME="calm" IP_INTERFACE="" # Internet123 ADMIN_PASSWORD="f8f0122a2be339e334e0250b3ae0b835699f3c8cd96f1b16474e6c0593b32648" PASSWORD_SECRET="" if [[ -f /etc/calm/.server_settings ]] then . /etc/calm/.server_settings fi INTERFACES=($(ls -1 /sys/class/net | grep -v 'lo')) if [[ -z "${IP_INTERFACE}" ]] then IP_INTERFACE=${INTERFACES[0]} fi # Default to the current IP on the interface if there is one IP_PREFIX=$(ip a show dev ${IP_INTERFACE} | grep 'inet ' | awk '{print $2}') IP_ADDRESS=$(echo ${IP_PREFIX} | cut -d '/' -f 1) IP_NETMASK=$(ipcalc -m ${IP_PREFIX} | sed -e 's|NETMASK=||g') IP_GATEWAY=$(ip r s | grep default | awk '{print $3}') IP_DNS=$(cat /etc/resolv.conf | grep '^nameserver' | awk '{print $2}') if [[ -z "${IP_ADDRESS}" ]] then IP_ADDRESS="10.2.0.2" fi if [[ -z "${IP_NETMASK}" ]] then IP_NETMASK="255.255.255.0" fi if [[ -z "${IP_GATEWAY}" ]] then IP_GATEWAY="10.2.0.1" fi if [[ -z "${IP_DNS}" ]] then IP_DNS="10.2.0.1" fi CONFIRM="" while [[ "${CONFIRM}" != "y" ]] do echo -n "Hostname [${IP_HOSTNAME}]: " read -e -i "${IP_HOSTNAME}" IP_HOSTNAME echo -n "Network Interface [${IP_INTERFACE}]: (${INTERFACES[@]}): " read -e -i "${IP_INTERFACE}" IP_INTERFACE echo -n "IP Address [${IP_ADDRESS}]: " read -e -i "${IP_ADDRESS}" IP_ADDRESS echo -n "IP Netmask [${IP_NETMASK}]: " read -e -i "${IP_NETMASK}" IP_NETMASK echo -n "IP Gateway [${IP_GATEWAY}]: " read -e -i "${IP_GATEWAY}" IP_GATEWAY echo -n "DNS Servers (space-separate for multiple) [${IP_DNS}]: " read -e -i "${IP_DNS}" IP_DNS echo -e "" echo -e "Setup Information Summary: " echo -e "" echo -e "Hostname : \\e[01;36m$IP_HOSTNAME \\e[00m" echo -e "Network Interface: \\e[01;36m$IP_INTERFACE \\e[00m" echo -e " IP : \\e[01;36m$IP_ADDRESS \\e[00m" echo -e " Netmask : \\e[01;36m$IP_NETMASK \\e[00m" echo -e " Gateway : \\e[01;36m$IP_GATEWAY \\e[00m" echo -e " DNS : \\e[01;36m$IP_DNS \\e[00m" echo -e "" echo -n "Is the above configuration correct? (y/n): " read CONFIRM done if [[ -z "${PASSWORD_SECRET}" ]] then PASSWORD_SECRET=$(pwgen -N 1 -s 96) fi echo -n "Would you like to set/change the root/admin password? (y/n): " read CONFIRM while [[ "${CONFIRM}" == "y" ]] do echo -n "Password: " read -s PASS_1 echo "" echo -n "Confirm: " read -s PASS_2 if [[ "${PASS_1}" != "${PASS_2}" ]] then echo "Passwords dont match" else echo -n "${PASS_1}" | passwd root --stdin ADMIN_PASSWORD=$(echo -n "${PASS_1}" | shasum -a 256 | awk '{print $1}') CONFIRM=n echo "Password changed successfully" fi done #echo -n "Would you like to initialise dedicated storage? (y/n): " #read CONFIRM #if [[ "${CONFIRM}" == "y" ]] #then # echo "Please enter the main storage device (eg /dev/sdb): " # read -e -i "${SLOW_DISK}" SLOW_DISK # # echo "Do you have an SSD disk to act as a cache? (y/n): " # read CONFIRM # # if [[ "${CONFIRM}" == "y" ]] # then # echo "Please enter the SSD storage device (eg /dev/sdc): " # read -e -i "${SSD_DISK}" SSD_DISK # fi #fi BASE_URL="http://${IP_ADDRESS}:80" sed -i -e "s|#*\(password_secret =\).*$|\1 ${PASSWORD_SECRET}|" /etc/calm/server/server.conf sed -i -e "s|#*\(root_password_sha2 =\).*$|\1 ${ADMIN_PASSWORD}|" /etc/calm/server/server.conf sed -i -e "s|#*\(rest_listen_uri =\).*$|\1 ${BASE_URL}\/api\/|" /etc/calm/server/server.conf sed -i -e "s|#*\(rest_transport_uri =\).*$|\1 ${BASE_URL}\/api\/|" /etc/calm/server/server.conf sed -i -e "s|#*\(web_listen_uri =\).*$|\1 ${BASE_URL}\/|" /etc/calm/server/server.conf # Preserve UUID UUID_LINE=$(cat /etc/sysconfig/network-scripts/ifcfg-${IP_INTERFACE} 2>/dev/null | grep UUID 2>/dev/null) if [[ -z "${UUID_LINE}" ]] then UUID_LINE=$(echo "UUID=$(uuidgen)") fi for iface in ${INTERFACES[@]} do if [[ -f /etc/sysconfig/network-scripts/ifcfg-${iface} ]] then mv /etc/sysconfig/network-scripts/ifcfg-${iface} /etc/sysconfig/network-scripts/ifcfg-${iface}.old fi done cat </etc/sysconfig/network-scripts/ifcfg-${IP_INTERFACE} TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=static DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=${IP_INTERFACE} ${UUID_LINE} DEVICE=${IP_INTERFACE} ONBOOT=yes IPADDR=${IP_ADDRESS} NETMASK=${IP_NETMASK} GATEWAY=${IP_GATEWAY} EOF COUNT=1 for ADDR in ${IP_DNS} do echo "DNS${COUNT}=${ADDR}" >> /etc/sysconfig/network-scripts/ifcfg-${IP_INTERFACE} COUNT=$((COUNT+1)) done # Save the settings for future reference for var in IP_INTERFACE IP_ADDRESS IP_NETMASK IP_GATEWAY IP_DNS PASSWORD_SECRET ADMIN_PASSWORD do echo "${var}=\"$(eval echo \$${var})\"" done > /etc/calm/.server_settings echo -n 'Restarting Services... ' systemctl restart network systemctl restart calm-server tail -f /var/log/calm-server/server.log | grep -m 1 "Started Web Interface at" > /dev/null echo 'Done!' echo "" echo "Setup is now complete" echo "You can access the user interface by browsing to http://${IP_ADDRESS}/"