summaryrefslogtreecommitdiff
path: root/debian/openssh-server.smf/method/openssh
diff options
context:
space:
mode:
Diffstat (limited to 'debian/openssh-server.smf/method/openssh')
-rwxr-xr-xdebian/openssh-server.smf/method/openssh52
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 $?