#!/bin/sh # Warning, problems can occur if the device restarts in the middle of this uci-default script # install YANG modules SYSREPOCTL=`which sysrepoctl` MODDIR="/etc/netopeer2/modules" PERMS=600 OWNER=root GROUP=root # array of modules to install MODULES="\ ietf-netconf-acm@2018-02-14.yang ietf-netconf@2013-09-29.yang -e writable-running -e candidate -e rollback-on-error -e validate -e startup -e url -e xpath ietf-netconf-monitoring@2010-10-04.yang ietf-netconf-nmda@2019-01-07.yang -e origin -e with-defaults nc-notifications@2008-07-14.yang notifications@2008-07-14.yang ietf-x509-cert-to-name@2014-12-10.yang ietf-crypto-types@2019-07-02.yang ietf-keystore@2019-07-02.yang -e keystore-supported ietf-truststore@2019-07-02.yang -e truststore-supported -e x509-certificates ietf-tcp-common@2019-07-02.yang -e keepalives-supported ietf-ssh-server@2019-07-02.yang -e local-client-auth-supported ietf-tls-server@2019-07-02.yang -e local-client-auth-supported ietf-netconf-server@2019-07-02.yang -e ssh-listen -e tls-listen -e ssh-call-home -e tls-call-home" # functions INSTALL_MODULE() { local module=`echo "$1" | sed 's/\s.*$//'` $SYSREPOCTL -a -i $MODDIR/$module -s $MODDIR -p $PERMS -o $OWNER -g $GROUP -v2 local rc=$? if [ $rc -ne 0 ]; then exit $rc fi } UPDATE_MODULE() { $SYSREPOCTL -a -U $MODDIR/$1 -s $MODDIR -p $PERMS -o $OWNER -g $GROUP -v2 local rc=$? if [ $rc -ne 0 ]; then exit $rc fi } ENABLE_FEATURE() { $SYSREPOCTL -a -c $1 -e $2 -v2 local rc=$? if [ $rc -ne 0 ]; then exit $rc fi } ENABLE_FEATURES() { # parse sysrepoctl features and add extra space at the end for easier matching local sctl_features="`echo "$SCTL_MODULE" | sed 's/\([^|]*|\)\{6\}\(.*\)/\2/'` " # parse features we want to enable local features=`echo "$1" | sed 's/[^ ]* \(.*\)/\1/'` while [ "${features:0:3}" = "-e " ]; do # skip "-e " features=${features:3} # parse feature local feature=`echo "$features" | sed 's/\([^[:space:]]*\).*/\1/'` # enable feature if not already sctl_feature=`echo "$sctl_features" | grep " ${feature} "` if [ -z "$sctl_feature" ]; then # enable feature ENABLE_FEATURE $name $feature fi # next iteration, skip this feature features=`echo "$features" | sed 's/[^[:space:]]* \(.*\)/\1/'` done } # get current modules SCTL_MODULES=`$SYSREPOCTL -l` IFS=$'\n' for i in $MODULES; do name=`echo "$i" | sed 's/\([^@]*\).*/\1/'` SCTL_MODULE=`echo "$SCTL_MODULES" | grep "^$name \+|[^|]*| I"` if [ -z "$SCTL_MODULE" ]; then # install module INSTALL_MODULE "$i" ENABLE_FEATURES "$i" continue fi sctl_revision=`echo "$SCTL_MODULE" | sed 's/[^|]*| \([^ ]*\).*/\1/'` revision=`echo "$i" | sed 's/[^@]*@\([^\.]*\).*/\1/'` if [ "$sctl_revision" \< "$revision" ]; then # update module without any features file=`echo "$i" | cut -d' ' -f 1` UPDATE_MODULE $file fi ENABLE_FEATURES "$i" done unset IFS exit 0