--- /dev/null
+#!/bin/sh
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of version 2 of the GNU General Public License as
+# published by the Free Software Foundation.
+#
+# This program is distributed in the hope that it would be useful, but
+# WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+#
+# Further, this software is distributed without any warranty that it is
+# free of the rightful claim of any third person regarding infringement
+# or the like. Any license provided herein, whether implied or
+# otherwise, applies only to this software file. Patent licenses, if
+# any, provided herein do not apply to combinations of this program with
+# other software, or any other product whatsoever.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write the Free Software Foundation,
+# Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307, USA.
+#
+
+#######################################################################
+# Initialization:
+
+#. ${OCF_ROOT}/resource.d/heartbeat/.ocf-shellfuncs
+. /usr/lib/ocf/resource.d/heartbeat/.ocf-shellfuncs
+
+#######################################################################
+
+meta_data() {
+ cat <<END
+<?xml version="1.0"?>
+<!DOCTYPE resource-agent SYSTEM "ra-api-1.dtd">
+<resource-agent name="SSLProxy" version="1.0">
+<version>1.0</version>
+
+<longdesc lang="en">
+This is a SSLProxy Resource Agent.
+</longdesc>
+<shortdesc lang="en">SSLProxy resource agent</shortdesc>
+
+<parameters>
+<parameter name="state" unique="1">
+<longdesc lang="en">
+Location to store the resource state in.
+</longdesc>
+<shortdesc lang="en">State file</shortdesc>
+<content type="string" default="" />
+</parameter>
+
+</parameters>
+
+<actions>
+<action name="start" timeout="60" />
+<action name="stop" timeout="60" />
+<action name="monitor" timeout="60" interval="10" depth="0" start-delay="0" />
+<action name="meta-data" timeout="5" />
+</actions>
+</resource-agent>
+END
+}
+
+#######################################################################
+
+sslproxy_usage() {
+ cat <<END
+usage: $0 {start|stop|monitor|meta-data}
+END
+}
+
+###############################
+# Logging Method
+###############################
+outputLog(){
+ MODE=$1
+ shift
+ case $MODE in
+ err) RET=$1; shift;
+ ocf_log $MODE "[$0 ${__OCF_ACTION}] NG;return=$RET" "$@";;
+ esac
+}
+
+###############################
+# kill process
+###############################
+sslproxy_pkill(){
+ pkill -9 sslproxy
+ ocf_log info "kill sslproxy process!"
+ while true
+ do
+ sleep 1
+ isRunning
+ RET=$?
+ if [ $RET -eq 0 ]; then
+ # stop OK
+ ocf_log info "sslproxy process stopped!"
+ return ${OCF_SUCCESS}
+ fi
+ done
+}
+
+###############################
+# Resource Running Check Method
+###############################
+isRunning(){
+ RET=0
+ RET=`ps -ef | grep "/usr/sbin/sslproxy" | grep -v grep | wc -l`
+ return $RET
+}
+
+###############################
+# Get Resource Status Method
+###############################
+sslproxy_status(){
+ T_ID=`/usr/sbin/sslproxyadm status | grep "TargetID" | wc -l`
+ RET=`/usr/sbin/sslproxyadm status | grep "Starting. PID =" | wc -l`
+ if [ $RET -eq 0 ]; then
+ MSG="sslproxy status ERROR!."
+ outputLog err ${OCF_ERR_GENERIC} ${MSG}
+ return ${OCF_ERR_GENERIC}
+ elif [ $RET -lt $T_ID ]; then
+ MSG="sslproxy status ERROR!(Target is insufficient)."
+ outputLog err ${OCF_ERR_GENERIC} ${MSG}
+ return ${OCF_ERR_GENERIC}
+# elif [ $RET -gt $T_ID ]; then
+# MSG="sslproxy status ERROR!(Target_ID exceeds a set value)."
+# outputLog err ${OCF_ERR_GENERIC} ${MSG}
+# return ${OCF_ERR_GENERIC}
+ fi
+ return ${OCF_SUCCESS}
+}
+
+###############################
+# Get Resource Monitor Method
+###############################
+sslproxy_monitor() {
+ isRunning;
+ RET=$?
+ if [ $RET -eq 0 ]; then
+ MSG="sslproxy is not running."
+ outputLog err ${OCF_NOT_RUNNING} ${MSG}
+ return ${OCF_NOT_RUNNING}
+ else
+ # sslproxy is running
+ sslproxy_status
+ if [ $? -eq ${OCF_SUCCESS} ]; then
+ # status OK
+ return ${OCF_SUCCESS}
+ else
+ break
+ fi
+ fi
+ MSG="sslproxy does not work."
+ outputLog err ${OCF_ERR_GENERIC} ${MSG}
+ return ${OCF_ERR_GENERIC}
+}
+
+###############################
+# Resource start Method
+###############################
+sslproxy_start() {
+ ocf_log info "sslproxy is starting ..."
+ sslproxy_monitor
+ RET=$?
+ if [ $RET -eq ${OCF_SUCCESS} ]; then
+ ocf_log info "sslproxy is already running."
+ return $OCF_SUCCESS
+ fi
+ /usr/sbin/sslproxyadm start > /dev/null 2>&1
+ RET=$?
+ if [ $RET -ne 0 ];then
+ MSG="sslproxy start error!."
+ outputLog err ${OCF_ERR_GENERIC} $MSG
+ return ${OCF_ERR_GENERIC}
+ fi
+ while true
+ do
+ isRunning;
+ RET=$?
+ if [ $RET -ne 0 ]; then
+ # sslproxy is running
+ ocf_log info "sslproxy starts."
+ return ${OCF_SUCCESS}
+ fi
+ sleep 1
+ done
+}
+
+###############################
+# Resource stop Method
+###############################
+sslproxy_stop() {
+ ocf_log info "sslproxy is stopping ..."
+ isRunning;
+ RET=$?
+ if [ $RET -eq 0 ]; then
+ ocf_log info "sslproxy stopped."
+ return ${OCF_SUCCESS}
+ fi
+ /usr/sbin/sslproxyadm stop > /dev/null 2>&1
+ count=0
+ while [ $count -le 10 ]
+ do
+ isRunning;
+ RET=$?
+ if [ $RET -eq 0 ]; then
+ ocf_log info "sslproxy stopped."
+ return ${OCF_SUCCESS}
+ fi
+ count=`expr $count + 1`
+ sleep 1
+ done
+
+ sslproxy_pkill
+ RET=$?
+
+ return $RET
+}
+
+case $__OCF_ACTION in
+meta-data) meta_data
+ exit $OCF_SUCCESS ;;
+start) sslproxy_start ;;
+stop) sslproxy_stop ;;
+monitor) sslproxy_monitor ;;
+usage|help) sslproxy_usage
+ exit $OCF_SUCCESS
+ ;;
+*) sslproxy_usage
+ exit $OCF_ERR_UNIMPLEMENTED
+ ;;
+esac
+rc=$?
+ocf_log debug "${OCF_RESOURCE_INSTANCE} $__OCF_ACTION : $rc"
+exit $rc