#! /bin/bash
# Copyright (c) 2013-2018 VMware Inc
# All rights reserved
#
# Author: mrm@vmware.com
#
spool_path=/var/spool/snmp
SNMP_PID="/var/run/vmware/snmpd.pid"
snmpd="/opt/vmware/bin/snmpd"
DEF_PORT=171
prog=$(basename $snmpd)
SNMP_CONF_FILE=/etc/vmware/snmp/snmp.xml
tag="vmware-snmpd"

. /lib/lsb/init-functions

umount_ramdisk() {
  if [ -d ${spool_path} ]; then
     umount ${spool_path}
     if [ $? != 0 ]; then
       logger -s -t ${tag} -p daemon.err "ERROR: umount ${spool_path} failed, err=$!"
     fi
     rm -rf ${spool_path}
  fi
  return 0
}

get_port() {
  if [ ! -f ${SNMP_CONF_FILE} ]; then
   port=${DEF_PORT}
  else
    port=$(awk -vRS="</port>" '{gsub(/.*<port.*>/,"");print}' ${SNMP_CONF_FILE} | head -1)
    if [ "${port}" == "" ]; then
       port=${DEF_PORT}
    else
       if [[ $1 =~ ^[0-9]+$ ]]; then
         ok=1
       else
          port=${DEF_PORT}
       fi
    fi
  fi
  return ${port}
}

fw_close() {
  fw_status
  if [ $? = 0 ]; then
    return 0
  fi
  get_port
  port=$?
  /sbin/iptables -D INPUT -p udp --dport ${port} -j ACCEPT
  return $?
}

fw_status() {
  get_port
  port=$?
  val=$(/sbin/iptables -S INPUT | grep ${port} | grep udp)
  if [ "${val}" == "" ]; then
     return 0
  else
     return 1
  fi
}

# main
fw_close
if [ $? != 0 ]; then
   logger -s -t ${tag} -p daemon.err "WARNING: close firewall port for failed, err=$!"
fi
umount_ramdisk
exit 0
