diff options
Diffstat (limited to 'debian/openssh-server.smf/method/openssh')
-rwxr-xr-x | debian/openssh-server.smf/method/openssh | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/debian/openssh-server.smf/method/openssh b/debian/openssh-server.smf/method/openssh new file mode 100755 index 0000000..bb75217 --- /dev/null +++ b/debian/openssh-server.smf/method/openssh @@ -0,0 +1,52 @@ +#!/bin/sh + +have_ips=no +if [ -e /lib/svc/share/ipf_include.sh ]; then + . /lib/svc/share/ipf_include.sh + have_ips=yes +fi + +. /lib/svc/share/smf_include.sh + +create_ipf_rules() +{ + FMRI=$1 + ipf_file=`fmri_to_file ${FMRI} $IPF_SUFFIX` + policy=`get_policy ${FMRI}` + + # + # Get port from /etc/ssh/sshd_config + # + tports=`grep "^Port" /etc/ssh/sshd_config 2>/dev/null | \ + awk '{print $2}'` + + echo "# $FMRI" >$ipf_file + for port in $tports; do + generate_rules $FMRI $policy "tcp" "any" $port $ipf_file + done +} + +case $1 in +'ipfilter') + if [ $have_ips = yes ]; then + create_ipf_rules $2 + else + echo "WARNING: $0: ipfilter is not available" >&2 + fi + ;; + +'start') + if [ ! -d /var/run/sshd ]; then + mkdir /var/run/sshd + chmod 0755 /var/run/sshd + fi + /usr/sbin/sshd + ;; + +*) + echo "Usage: $0 { start | restart }" + exit 1 + ;; +esac + +exit $? |