From f6c36f4ea7add3895ff6e6ecf39fb1842a54de97 Mon Sep 17 00:00:00 2001
From: Chris Ridd <chris.ridd@forgerock.com>
Date: Wed, 19 Aug 2015 09:43:33 +0000
Subject: [PATCH] CR-7872 OPENDJ-2238 Add support for FreeBSD to init script

---
 opendj-server-legacy/src/main/java/org/opends/server/tools/CreateRCScript.java |  124 +++++++++++++++++++++++++++++++---------
 1 files changed, 95 insertions(+), 29 deletions(-)

diff --git a/opendj-server-legacy/src/main/java/org/opends/server/tools/CreateRCScript.java b/opendj-server-legacy/src/main/java/org/opends/server/tools/CreateRCScript.java
index 83f1787..38b639d 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/tools/CreateRCScript.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/tools/CreateRCScript.java
@@ -201,6 +201,7 @@
       javaHomeDir = System.getenv(SetupUtils.OPENDJ_JAVA_HOME);
     }
 
+    boolean isFreeBSD = OperatingSystem.getOperatingSystem() == OperatingSystem.FREEBSD;
 
     String suString = "";
     String EscQuote1 = "\"";
@@ -220,7 +221,8 @@
           suCmd = "/bin/su";
         }
       }
-      suString = suCmd + " " + userName.getValue() + " -c ";
+      String asMeFlag = isFreeBSD ? " -m " : " ";
+      suString = suCmd + asMeFlag + userName.getValue() + " -c ";
       EscQuote1 = "";
       EscQuote2 = "\"";
     }
@@ -240,10 +242,27 @@
         w.println("# " + headerLine);
       }
 
-      w.println("# chkconfig: 345 95 5");
-      w.println("# description: Control the " +
-          SHORT_NAME + " Directory Server");
-      w.println();
+      if (isFreeBSD) {
+        w.println("# PROVIDE: opendj");
+        w.println("# REQUIRE: LOGIN");
+        w.println("# KEYWORD: shutdown");
+        w.println();
+        w.println(". /etc/rc.subr");
+        w.println("name=\"opendj\"");
+        w.println("rcvar=opendj_enable");
+        w.println();
+        w.println("start_cmd=\"${name}_start\"");
+        w.println("stop_cmd=\"${name}_stop\"");
+        w.println("restart_cmd=\"${name}_restart\"");
+        w.println("status_cmd=\"${name}_status\"");
+        w.println();
+        w.println("load_rc_config ${name}");
+        w.println(": ${opendj_enable:=no}");
+        w.println(": ${opendj_msg=\"OpenDJ not started.\"}");
+      } else {
+        w.println("# chkconfig: 345 95 5");
+        w.println("# description: Control the " + SHORT_NAME + " Directory Server");
+      }
       w.println();
 
       w.println("# Set the path to the " + SHORT_NAME + " instance to manage");
@@ -269,30 +288,77 @@
         w.println();
       }
 
-      w.println("# Determine what action should be performed on the server");
-      w.println("case \"${1}\" in");
-      w.println("start)");
-      w.println("  " + suString + "\"${INSTALL_ROOT}/bin/start-ds"+
-          EscQuote1 + " --quiet" + EscQuote2);
-      w.println("  exit ${?}");
-      w.println("  ;;");
-      w.println("stop)");
-      w.println("  " + suString + "\"${INSTALL_ROOT}/bin/stop-ds"+
-          EscQuote1 + " --quiet" + EscQuote2);
-      w.println("  exit ${?}");
-      w.println("  ;;");
-      w.println("restart)");
-      w.println("  " + suString + "\"${INSTALL_ROOT}/bin/stop-ds"+
-          EscQuote1 + " --restart --quiet" + EscQuote2);
-      w.println("  exit ${?}");
-      w.println("  ;;");
-      w.println("*)");
-      w.println("  echo \"Usage:  $0 { start | stop | restart }\"");
-      w.println("  exit 1");
-      w.println("  ;;");
-      w.println("esac");
-      w.println();
-
+      if (isFreeBSD) {
+        w.println("if [ \"x${opendj_java_home}\" != \"x\" ]; then");
+        w.println("  OPENDJ_JAVA_HOME=\"${opendj_java_home}\"");
+        w.println("  export OPENDJ_JAVA_HOME");
+        w.println("fi");
+        w.println("if [ \"x${opendj_java_args}\" != \"x\" ]; then");
+        w.println("  OPENDJ_JAVA_ARGS=\"${opendj_java_args}\"");
+        w.println("  export OPENDJ_JAVA_ARGS");
+        w.println("fi");
+        w.println("if [ \"x${opendj_install_root}\" != \"x\" ]; then");
+        w.println("  INSTALL_ROOT=\"${opendj_install_root}\"");
+        w.println("  export INSTALL_ROOT");
+        w.println("fi");
+        w.println();
+        w.println("opendj_chdir=\"${INSTALL_ROOT}\"");
+        w.println("extra_commands=\"status\"");
+        w.println();
+        w.println("opendj_start()");
+        w.println("{");
+        w.println("  if [ -n \"$rc_quiet\" ]; then");
+        w.println("    " + suString + "\"${INSTALL_ROOT}/bin/start-ds" + EscQuote2);
+        w.println("  else");
+        w.println("    " + suString + "\"${INSTALL_ROOT}/bin/start-ds" + EscQuote1 + " --quiet" + EscQuote2);
+        w.println("  fi");
+        w.println("}");
+        w.println("opendj_stop()");
+        w.println("{");
+        w.println("  if [ -n \"$rc_quiet\" ]; then");
+        w.println("    " + suString + "\"${INSTALL_ROOT}/bin/stop-ds" + EscQuote2);
+        w.println("  else");
+        w.println("    " + suString + "\"${INSTALL_ROOT}/bin/stop-ds" + EscQuote1 + " --quiet" + EscQuote2);
+        w.println("  fi");
+        w.println("}");
+        w.println("opendj_restart()");
+        w.println("{");
+        w.println("  if [ -n \"$rc_quiet\" ]; then");
+        w.println("    " + suString + "\"${INSTALL_ROOT}/bin/stop-ds" + EscQuote1 + " --restart" + EscQuote2);
+        w.println("  else");
+        w.println("    " + suString + "\"${INSTALL_ROOT}/bin/stop-ds" + EscQuote1 + " --restart --quiet" + EscQuote2);
+        w.println("  fi");
+        w.println("}");
+        w.println("opendj_status()");
+        w.println("{");
+        w.println("    " + suString + "\"${INSTALL_ROOT}/bin/status" + EscQuote2);
+        w.println("}");
+        w.println();
+        w.println("pidfile=\"${INSTALL_ROOT}/logs/server.pid\"");
+        w.println();
+        w.println("run_rc_command \"$1\"");
+      } else {
+        w.println("# Determine what action should be performed on the server");
+        w.println("case \"${1}\" in");
+        w.println("start)");
+        w.println("  " + suString + "\"${INSTALL_ROOT}/bin/start-ds" + EscQuote1 + " --quiet" + EscQuote2);
+        w.println("  exit ${?}");
+        w.println("  ;;");
+        w.println("stop)");
+        w.println("  " + suString + "\"${INSTALL_ROOT}/bin/stop-ds" + EscQuote1 + " --quiet" + EscQuote2);
+        w.println("  exit ${?}");
+        w.println("  ;;");
+        w.println("restart)");
+        w.println("  " + suString + "\"${INSTALL_ROOT}/bin/stop-ds" + EscQuote1 + " --restart --quiet" + EscQuote2);
+        w.println("  exit ${?}");
+        w.println("  ;;");
+        w.println("*)");
+        w.println("  echo \"Usage:  $0 { start | stop | restart }\"");
+        w.println("  exit 1");
+        w.println("  ;;");
+        w.println("esac");
+        w.println();
+      }
       w.close();
 
       FilePermission.setPermissions(f, FilePermission.decodeUNIXMode("755"));

--
Gitblit v1.10.0