# !/bin/bash - source ./log_helpers if [ "${news_to_ismas_sourced:-1}" = "1" ]; then # include only once readonly news_to_ismas_sourced=${BASH_SOURCE[0]} readonly APISM_DB_PORT=7777 readonly UPDATE_ISMAS_PROGRESS="U0010" readonly UPDATE_SUCCEEDED="U0001" # update finished: 100% readonly UPDATE_ACTIVATED="U0002" # reset TRG readonly UPDATE_ISMAS_ERROR="U0003" # update error # error codes readonly RC_SUCCESS=0 readonly RC_NO_UPDATE_NECESSARY=1 readonly RC_GIT_CLONE_ERROR=2 readonly RC_GIT_PULL_ERROR=3 readonly RC_BACKUP_ERROR=4 readonly RC_HASH_VALUE_ERROR=5 readonly RC_HW_COMPATIBILITY_ERROR=6 readonly RC_COPY_ERROR=7 readonly RC_OPKG_COMMANDS_ERROR=8 readonly RC_CLEANUP_ERROR=9 PERCENT=1 ########################################################################### ########################################################################### update_psa_activated () { PERCENT=$((PERCENT+1)) local params=("U0010" # event $PERCENT $RC_SUCCESS # resultcode "activated" # step "detected WAIT state" # step_result "") # version news_to_ismas ${params[*]} return $? } update_psa_false_alarm () { PERCENT=$((PERCENT+1)) local params=("U0003" $PERCENT $RC_NO_UPDATE_NECESSARY "false_alarm" "$1" "") news_to_ismas ${params[*]} EXITCODE=$((EXITCODE+1)) test $EXITCODE -gt 125 && EXITCODE=125 log_debug "${FUNCNAME[0]}:${LINENO}: EXITCODE=$EXITCODE" return $EXITCODE } update_psa_activated_new_software () { PERCENT=100 local params=("U0010" $PERCENT $RC_SUCCESS "activated_new_software" "" "") news_to_ismas ${params[*]} return $? } ########################################################################### ########################################################################### update_psa_clone_customer_repository () { PERCENT=10 local params=("U0010" # event $PERCENT # percent $RC_SUCCESS # resultcode "clone_customer_repository" # step "git cloned $CUSTOMER_REPOSITORY_PATH" # step_result "") # version news_to_ismas ${params[*]} return $? } update_psa_pull_customer_repository () { PERCENT=10 local params=("U0010" # event $PERCENT # percent 0 # resultcode "pull_customer_repository" # step "git pulled $CUSTOMER_REPOSITORY_PATH" # step_result "") # version news_to_ismas ${params[*]} return $? } update_psa_pull_error () { PERCENT=10 local params=("U0003" $PERCENT $RC_GIT_PULL_ERROR "pull_error" "git failed to pull $CUSTOMER_REPOSITORY_PATH" "") news_to_ismas ${params[*]} EXITCODE=$((EXITCODE+1)) test $EXITCODE -gt 125 && EXITCODE=125 log_debug "${FUNCNAME[0]}:${LINENO}: EXITCODE=$EXITCODE" return $EXITCODE } update_psa_clone_error () { PERCENT=10 local params=("U0003" $PERCENT $RC_GIT_CLONE_ERROR "clone_error" "git failed to clone $CUSTOMER_REPOSITORY_PATH" "") news_to_ismas ${params[*]} EXITCODE=$((EXITCODE+1)) test $EXITCODE -gt 125 && EXITCODE=125 log_debug "${FUNCNAME[0]}:${LINENO}: EXITCODE=$EXITCODE" return $EXITCODE } ########################################################################### ########################################################################### update_psa_backup () { PERCENT=20 local params=("U0010" $PERCENT $RC_SUCCESS "backup" "backup of (hier noch alle dateien angeben)" "") news_to_ismas ${params[*]} return $? } update_psa_backup_error () { PERCENT=20 local params=("U0010" $PERCENT $RC_BACKUP_ERROR "backup_error" "backup of (hier noch alle dateien angeben) failed" "") news_to_ismas ${params[*]} EXITCODE=$((EXITCODE+1)) test $EXITCODE -gt 125 && EXITCODE=125 log_debug "${FUNCNAME[0]}:${LINENO}: EXITCODE=$EXITCODE" return $EXITCODE } ########################################################################### ########################################################################### update_psa_report_changed_file_names () { PERCENT=30 local params=("U0010" $PERCENT $RC_SUCCESS "report_changed_file_names" "changed filenames: [$@]" "") news_to_ismas ${params[*]} return $? } ########################################################################### ########################################################################### update_psa_check_hash () { PERCENT=40 local params=($1 # event $PERCENT $2 # resultcode "check_hash" # step "$3" # step_result "") news_to_ismas ${params[*]} test $2 -eq $RC_SUCCESS && return $? EXITCODE=$((EXITCODE+1)) test $EXITCODE -gt 125 && EXITCODE=125 log_debug "${FUNCNAME[0]}:${LINENO}: EXITCODE=$EXITCODE" return $EXITCODE } ########################################################################### ########################################################################### update_psa_check_hardware_compatibility () { PERCENT=50 local params=($1 # event $PERCENT $2 # resultcode "check_hardware_compatibility" # step "$3" # step_result "") news_to_ismas ${params[*]} test $2 -eq $RC_SUCCESS && return $? EXITCODE=$((EXITCODE+1)) test $EXITCODE -gt 125 && EXITCODE=125 log_debug "${FUNCNAME[0]}:${LINENO}: EXITCODE=$EXITCODE" return $EXITCODE } ########################################################################### ########################################################################### # conf/ini files update_psa_copy_conf_and_ini_files () { PERCENT=60 local params=($1 # event $PERCENT $2 # resultcode "copy_conf_and_ini_files" # step "$3" # step_result "") news_to_ismas ${params[*]} test $2 -eq $RC_SUCCESS && return $? EXITCODE=$((EXITCODE+1)) test $EXITCODE -gt 125 && EXITCODE=125 log_debug "${FUNCNAME[0]}:${LINENO}: EXITCODE=$EXITCODE" return $EXITCODE } ########################################################################### ########################################################################### # exec opkg-commands (dry-run) update_psa_install_opkg_packages_dry_run () { PERCENT=70 # TODO return 0 } ########################################################################### ########################################################################### # exec opkg-commands update_psa_install_opkg_packages () { PERCENT=80 local params=($1 # event $PERCENT $2 # resultcode "install_opkg_packages" # step "$3" # step_result "") news_to_ismas ${params[*]} test $2 -eq $RC_SUCCESS && return $? EXITCODE=$((EXITCODE+1)) test $EXITCODE -gt 125 && EXITCODE=125 log_debug "${FUNCNAME[0]}:${LINENO}: EXITCODE=$EXITCODE" return $EXITCODE } ########################################################################### ########################################################################### # remove backup in case of success update_psa_cleanup () { PERCENT=90 local params=($1 # event $PERCENT $2 # resultcode "cleanup" # step "$3" # step_result "") news_to_ismas ${params[*]} test $2 -eq $RC_SUCCESS && return $? EXITCODE=$((EXITCODE+1)) test $EXITCODE -gt 125 && EXITCODE=125 log_debug "${FUNCNAME[0]}:${LINENO}: EXITCODE=$EXITCODE" return $EXITCODE } ########################################################################### ########################################################################### update_psa_update_succeeded () { PERCENT=100 local params=($1 # event $PERCENT $2 # resultcode "update_succeeded" # step "$3" # step_result "") news_to_ismas ${params[*]} test $2 -eq $RC_SUCCESS && return $? EXITCODE=$((EXITCODE+1)) test $EXITCODE -gt 125 && EXITCODE=125 log_debug "${FUNCNAME[0]}:${LINENO}: EXITCODE=$EXITCODE" return $EXITCODE } ########################################################################### ########################################################################### update_psa_activate_update () { PERCENT=100 local params=($1 # event $PERCENT $2 # resultcode "activate_update" # step "$3" # step_result "") news_to_ismas ${params[*]} test $2 -eq $RC_SUCCESS && return $? EXITCODE=$((EXITCODE+1)) test $EXITCODE -gt 125 && EXITCODE=125 log_debug "${FUNCNAME[0]}:${LINENO}: EXITCODE=$EXITCODE" return $EXITCODE } # only for testing set_updates_available () { local params=("U0099" # event $PERCENT # percent 0 # resultcode "set_updates_available" # step "" # step_result "") # version news_to_ismas ${params[*]} return $? } set_update_active () { reset_update_trigger return $? } ########################################################################### ########################################################################### news_to_ismas () { # $1: EVENT: U0001 update finished: 100% # U0002 reset TRG # U0003 error # U0010 for update process # $2: PERCENT : "only for ISMAS: 0-100%", # $3: RESULTCODE : "only for ISMAS", # 0: Success # 1: no Update nessesary # 2: Backup failed # 3: Package error/ Wrong package # 4: Install Error # $4: STEP : "running step (only for us): update_psa...", # $5: STEP_RESULT : "error and result text", # $6: VERSION : "opkg and conf info; what will be updated" # local func="${FUNCNAME[0]}" local p=("$@") local data="#M=APISM#C=CMD_EVENT#J= { \"REASON\":\"SW_UP\", \"TIMESTAMP\":\"$(date +%Y-%m-%dT%T.000%z)\", \"EVENT_ID\":\"0\", \"EVENT\":\"${p[0]}\", \"EVENTSTATE\":1, \"PARAMETER\": { \"PERCENT\" : ${p[1]}, \"RESULTCODE\" : ${p[2]}, \"STEP\" : \"update_psa_${p[3]}\", \"STEP_RESULT\" : \"${p[4]}\", \"VERSION\" : \"$VERSION\" } }" log_debug "$func:${LINENO}: data=$data" echo $((echo "$data"; sleep 1) | nc localhost $APISM_DB_PORT) } # # send current psa setting to ismas at end of update procedure # current_settings_to_ismas () { local func="${FUNCNAME[0]}" local p=("$@") local data="#M=APISM#C=CMD_SENDVERSION#J= { \"VERSION_INFO\" : { \"CREATED\":\"$(date +%Y-%m-%dT%T)\", \"HASH\":\"$(compute_hash)\" }, \"TARIFF\" : { }, \"HARDWARE\" : { \"DEVICES\" : [ \"PTU5\", \"DC\", \"PRINTER\", \"BNA\" ] }, \"OS\" : { \"$(uname)\": \"$(uname -a)\" }, \"CONFIG\" : { \"PTU5\" : { \"CPU_SERIAL\" : \"$(cat /proc/cpuinfo | grep Serial | sed -E -e 's/.*:\s*(.*)/\1/g')\" }, \"DC\" : { \"VERSION\" : \"$(compute_hash ${DC_PSA_DC_FILE})\", \"MD5SUM\" : \"\" }, \"PRINTER\" : { }, \"BNA\" : { } }, \"SOFTWARE\": { \"RAUC\" : \"$(rauc --version)\", \"OPKG\" : \"$(opkg --version)\", \"ATBQT\" : { \"VERSION\" : \"$(/opt/app/ATBAPP/ATBQT -v | grep Version | sed -E -e 's/.*:\s*(.*)/\1/g')\", \"GIT_DESCRIBE\" : \"$(/opt/app/ATBAPP/ATBQT -v | grep git | sed -E -e 's/.*:\s*(.*)/\1/g')\" }, \"PLUGINS\" : { $(get_plugins) } } }" log_debug "$func:${LINENO}: data=$data EXITCODE=$EXITCODE" echo $((echo "$data"; sleep 1) | nc localhost $APISM_DB_PORT) # if [ $EXITCODE -eq $RC_SUCCESS ]; then update_psa_update_succeeded $UPDATE_SUCCEEDED \ $RC_SUCCESS "psa update succeeded" $VERSION update_psa_update_succeeded $UPDATE_ACTIVATED \ $RC_SUCCESS "psa update activated" $VERSION log_info "$func:${LINENO}: success" # fi } fi