#!/bin/bash # NextCloudPi software configuration # # Copyleft 2017 by Ignacio Nunez Hernanz # GPL licensed (see end of file) * Use at your own risk! # # Usage: # sudo ncp-config # # More at https://ownyourbits.com/2017/03/13/nextcloudpi-gets-nextcloudpi-config/ # BINDIR=/usr/local/bin/ncp source /usr/local/etc/library.sh { ncpversion="$(cat /usr/local/etc/ncp-version)" chlogfile=/usr/local/etc/ncp-changelog # ask for update if outdated ncp-test-updates 2>/dev/null && { [[ -f "$chlogfile" ]] && changelog=$( head -4 "$chlogfile" ) latest_ver="$(cat /var/run/.ncp-latest-version 2>/dev/null)" whiptail --backtitle "$backtitle $ncpversion" \ --title "NextCloudPi update available" \ --clear --yesno "Update to $latest_ver?\n\n$changelog" \ 15 70 [[ $? -eq $dialog_ok ]] && ncp-update } function generate_list() { local dir="$1" unset list for item in "$dir"/*; do # directories [[ -d "$item" ]] && { local dir="$( basename "$item" )" list+=(" $dir" "") continue } [[ "$item" =~ ".sh" ]] || continue # regular ncp_apps local app="$( basename "$item" .sh )" local cfg="$cfgdir/$app".cfg [[ -f "$cfg" ]] && local desc=$( jq -r .description "$cfg" ) || local desc="No description." is_active_app "$app" "$dir" && local on="*" || local on=" " list+=( "$on $app" "$desc" ) done } function config_menu() { local dir="$1" local backtitle="NextCloudPi configuration ver. " local ncpversion="$(cat /usr/local/etc/ncp-version )" local cfgdir=/usr/local/etc/ncp-config.d local dialog_ok=0 local desc cfg ncp_app while true; do # menu items generate_list "$dir" # launch the selection menu [[ "$dir" == "$BINDIR" ]] && local cancel_btn="Finish" || local cancel_btn="Back" ncp_app=$( whiptail --backtitle "$backtitle $ncpversion" \ --title "NextCloudPi Configuration Tool (ncp-config)" \ --cancel-button $cancel_btn --ok-button Select \ --menu "Select ncp-app to configure or activate:" 20 105 10 \ "${list[@]}" \ 3>&1 1>&2 2>&3 ) [[ $? -ne $dialog_ok ]] || [[ "$ncp_app" == "" ]] && { [[ "$dir" == "$BINDIR" ]] && return 0 dir="$(dirname "$dir")" continue } # remove * and spaces ncp_app=$( sed 's=*\| ==g' <<< "$ncp_app" ) # directory selection [[ -d "$dir/$ncp_app" ]] && { dir="$dir/$ncp_app" config_menu "$dir" return } # launch selected ncp_app info_app "$ncp_app" || continue configure_app "$ncp_app" && \ run_app "$ncp_app" echo "Done. Press any key..." read -r done } if [[ ${EUID} -ne 0 ]]; then printf "Must be run as root. Try 'sudo $( basename "$0" )'\n" exit 1 fi config_menu "$BINDIR" exit $? } # force to read the whole thing into memory, as its contents might change in update.sh # License # # This script is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This script is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this script; if not, write to the # Free Software Foundation, Inc., 59 Temple Place, Suite 330, # Boston, MA 02111-1307 USA