#!/bin/bash # Copyright: 2023 Virtuozzo International GmbH # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # http://www.apache.org/licenses/LICENSE-2.0 # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. inherit default os envinfo; include output net virtuozzo vzexec; $PROGRAM 'sed'; $PROGRAM 'grep'; DESCRIPTION="Jem configuration module"; VERSION="1"; DEFAULT_ACTION="Usage"; function doUsage() { showUsageMessage; } function checkParams() { local params=($*) local result="" for p in ${params[*]} ; do eval "[[ -z \"\$$p\" ]] && { result=\"$p $result\";}" done [[ -z "$result" ]] && return 0; echo $result; return 1; } function onModLoadCallback() { log "Preload callback"; local temp=`getopt -o c: -l ctid: -- "$@" 2>/dev/null`; [[ $? != 0 ]] && die -q "Terminating..."; eval set -- "$temp"; while true ; do case "$1" in -c | --ctid) shift; CTID=$1 vzexecSetCTID ${CTID} shift; ;; --) shift; break; ;; esac; done; for arg do UNKNOWN_ARG+=("$arg") ; done log "${UNKNOWN_ARG[*]}" return 0 } function doSetTechEmail(){ local techemail="${1}"; [[ -n "${META_FILE}" ]] && [[ -e "${META_FILE}" ]] && { if $GREP -q "PLATFORM_TECHMAIL_RECEPIENT=$techemail" ${META_FILE} ; then $SED -c -i "s/\(PLATFORM_TECHMAIL_RECEPIENT *= *\).*/\1$PLATFORM_TECHMAIL_RECEPIENT/" ${META_FILE}; else echo -e "\nPLATFORM_TECHMAIL_RECEPIENT=$PLATFORM_TECHMAIL_RECEPIENT" >> ${META_FILE}; $SED -i -re '/^$/d' ${META_FILE}; fi; } } function doExtIpChanged(){ inherit $extipchange_module_inherit ; inherit sendmailextip ; SendmailExtIp ; ipChanged ; writeJSONResponseOut "result=>0" "message=>Ok" } function doIpChanged() { local vzcomment='# Auto-generated hostname. Please do not remove this comment.' local requiredParqams=("CTID") local msg=$(checkParams ${requiredParqams[@]}) [[ ! -z "${msg}" ]] && { writeJSONResponseErr "result=>4099" "message=>Missing param $msg" ; return 99; } isContainerRunning $CTID || { writeJSONResponseOut "result=>0" "message=>Ok" return 0 } #remove line after "VZMarker" vzexecRun 'sed -i -re "/'$vzcomment'/{N;d}" /etc/hosts' #get new ip address vzexecRun 'ip r get 8.8.8.8 | sed -rne "/src/s/(.*)src\ (.*)/\2/p"' newIp=$(vzexecGetLastStdOut) #get hosname vzexecRun 'hostname -f' fullHostname=$(vzexecGetLastStdOut) vzexecRun 'hostname -s' shortHostname=$(vzexecGetLastStdOut) newHostsLine="$vzcomment\n$newIp $fullHostname $shortHostname\n" echo -e $newHostsLine >> "/vz/root/${CTID}/etc/hosts" #cleanup empty lines :) vzexecRun 'sed -i -e "/^$/d" /etc/hosts' writeJSONResponseOut "result=>0" "message=>Ok" } function doOption(){ OPTION_ENABLED=0; while [ "$1" != "" ]; do case $1 in -o| --option ) shift MANAGE_OPTION=$( tr '[:lower:]' '[:upper:]' <<< $1 ) ;; -e| --enable ) OPTION_ENABLED=1 ;; -d| --disable ) OPTION_ENABLED=0 ;; esac shift done [ -z "$MANAGE_OPTION" ] && { writeJSONResponseErr "result=>4099" "message=>Missing param" ; return 99; } [[ -n "${META_FILE}" ]] && [[ -e "${META_FILE}" ]] && { if $GREP -q "${MANAGE_OPTION}_ENABLED" ${META_FILE} ; then $SED -i -re "s/${MANAGE_OPTION}_ENABLED=([0-9]+)/${MANAGE_OPTION}_ENABLED=${OPTION_ENABLED}/g" ${META_FILE}; else echo -e "\n${MANAGE_OPTION}_ENABLED=${OPTION_ENABLED}" >> ${META_FILE}; $SED -i -re '/^$/d' ${META_FILE}; fi; } || { writeJSONResponseErr "result=>4080" "message=>Error: No metadata found!" ; return 80; } if [ "x$MANAGE_OPTION" == "xSENDMAIL" ]; then inherit sendmailextip ; SendmailExtIp ; fi writeJSONResponseOut "result=>0" "message=>Option ${MANAGE_OPTION} configured successfully" return 0; } function describeOption(){ echo "Set/unset provided option" } function describeOptionParameters(){ echo "--option