You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by dr...@apache.org on 2015/03/14 03:54:31 UTC

[12/12] directory-kerberos git commit: WIP: Rework KDC service wrapper & installation package

WIP: Rework KDC service wrapper & installation package


Project: http://git-wip-us.apache.org/repos/asf/directory-kerberos/repo
Commit: http://git-wip-us.apache.org/repos/asf/directory-kerberos/commit/097d43c4
Tree: http://git-wip-us.apache.org/repos/asf/directory-kerberos/tree/097d43c4
Diff: http://git-wip-us.apache.org/repos/asf/directory-kerberos/diff/097d43c4

Branch: refs/heads/master
Commit: 097d43c42a99e191528d2dc3ed5fa9cb18cb0877
Parents: f2846bc
Author: Drankye <dr...@gmail.com>
Authored: Sat Mar 14 10:35:43 2015 +0800
Committer: Drankye <dr...@gmail.com>
Committed: Sat Mar 14 10:35:43 2015 +0800

----------------------------------------------------------------------
 kdc-tool/kinit/kinit-dist/bin/kinit.sh          |   19 -
 kdc-tool/kinit/pom.xml                          |   31 +-
 kdc-tool/pom.xml                                |    1 +
 kerby-dist/kdc-dist/README.txt                  |   54 +
 kerby-dist/kdc-dist/bin/start-kdc.sh            |    2 +
 kerby-dist/kdc-dist/pom.xml                     |   36 +
 kerby-dist/kdc-dist/scripts/ReadMe.txt          |   34 +
 kerby-dist/kdc-dist/scripts/cluster.gv          |   22 +
 kerby-dist/kdc-dist/scripts/commandCondition.gv |  103 +
 kerby-dist/kdc-dist/scripts/decryptor.gv        |   20 +
 .../kdc-dist/scripts/equinox/equinoxShutdown.gv |    5 +
 kerby-dist/kdc-dist/scripts/groovy/ReadMe.txt   |    1 +
 .../kdc-dist/scripts/groovy/helloworld.gv       |   13 +
 .../kdc-dist/scripts/linearRestartDelay.gv      |   11 +
 kerby-dist/kdc-dist/scripts/mapNetworkDrive.gv  |   12 +
 kerby-dist/kdc-dist/scripts/maxDuration.gv      |   52 +
 kerby-dist/kdc-dist/scripts/maxStartup.gv       |   60 +
 kerby-dist/kdc-dist/scripts/nutch/ReadMe.txt    |    5 +
 kerby-dist/kdc-dist/scripts/nutch/nutch_base.gv |  187 +
 .../kdc-dist/scripts/nutch/nutch_crawl.gv       |    8 +
 .../kdc-dist/scripts/nutch/nutch_recrawl.gv     |  110 +
 kerby-dist/kdc-dist/scripts/nutch/nutch_solr.gv |   53 +
 kerby-dist/kdc-dist/scripts/sendMail.gv         |   84 +
 kerby-dist/kdc-dist/scripts/setenv.gv           |   42 +
 kerby-dist/kdc-dist/scripts/snmpTrap.gv         |   56 +
 kerby-dist/kdc-dist/scripts/threadDump.gv       |   13 +
 kerby-dist/kdc-dist/scripts/timeCondition.gv    |   82 +
 kerby-dist/kdc-dist/scripts/trayColor.gv        |   48 +
 kerby-dist/kdc-dist/scripts/trayMessage.gv      |   29 +
 .../kdc-dist/scripts/vfsCommandCondition.gv     |   99 +
 .../kdc-dist/scripts/wso2/wso2_shutdown.gv      |   13 +
 kerby-dist/pom.xml                              |   36 +
 kerby-dist/tool-dist/bin/kinit.sh               |    3 +
 kerby-dist/tool-dist/pom.xml                    |   36 +
 kerby-kdc/kerby-kdc-dist/LICENSE.txt            |  504 --
 kerby-kdc/kerby-kdc-dist/README.txt             |   54 -
 kerby-kdc/kerby-kdc-dist/bat/genConfig.bat      |    7 -
 kerby-kdc/kerby-kdc-dist/bat/installService.bat |    6 -
 kerby-kdc/kerby-kdc-dist/bat/queryService.bat   |    5 -
 kerby-kdc/kerby-kdc-dist/bat/runConsole.bat     |    4 -
 kerby-kdc/kerby-kdc-dist/bat/runConsoleW.bat    |    3 -
 kerby-kdc/kerby-kdc-dist/bat/runHelloWorld.bat  |    7 -
 .../bat/runServicesManagerClient.bat            |    2 -
 .../bat/runServicesManagerServer.bat            |    3 -
 kerby-kdc/kerby-kdc-dist/bat/setenv.bat         |   27 -
 kerby-kdc/kerby-kdc-dist/bat/startService.bat   |    6 -
 kerby-kdc/kerby-kdc-dist/bat/stopService.bat    |    6 -
 kerby-kdc/kerby-kdc-dist/bat/systemTrayIcon.bat |    6 -
 kerby-kdc/kerby-kdc-dist/bat/sytemTrayIconW.bat |    2 -
 .../kerby-kdc-dist/bat/uninstallService.bat     |    4 -
 kerby-kdc/kerby-kdc-dist/bat/wrapper.bat        |    3 -
 kerby-kdc/kerby-kdc-dist/bat/wrapperW.bat       |    1 -
 kerby-kdc/kerby-kdc-dist/bin/genConfig.sh       |   37 -
 kerby-kdc/kerby-kdc-dist/bin/installDaemon.sh   |   35 -
 .../kerby-kdc-dist/bin/installDaemonNoPriv.sh   |   35 -
 kerby-kdc/kerby-kdc-dist/bin/kerbykdc.sh        |   18 -
 kerby-kdc/kerby-kdc-dist/bin/queryDaemon.sh     |   37 -
 kerby-kdc/kerby-kdc-dist/bin/runConsole.sh      |   35 -
 kerby-kdc/kerby-kdc-dist/bin/runHelloWorld.sh   |   25 -
 kerby-kdc/kerby-kdc-dist/bin/setenv.sh          |   57 -
 kerby-kdc/kerby-kdc-dist/bin/startDaemon.sh     |   35 -
 .../kerby-kdc-dist/bin/startDaemonNoPriv.sh     |   35 -
 kerby-kdc/kerby-kdc-dist/bin/stopDaemon.sh      |   35 -
 .../kerby-kdc-dist/bin/stopDaemonNoPriv.sh      |   35 -
 kerby-kdc/kerby-kdc-dist/bin/systemTrayIcon.sh  |   35 -
 kerby-kdc/kerby-kdc-dist/bin/uninstallDaemon.sh |   37 -
 .../kerby-kdc-dist/bin/uninstallDaemonNoPriv.sh |   35 -
 kerby-kdc/kerby-kdc-dist/bin/wrapper.sh         |    7 -
 kerby-kdc/kerby-kdc-dist/build/MANIFEST.MF      |   50 -
 kerby-kdc/kerby-kdc-dist/build/ReadMe.txt       |   15 -
 .../build/abeille/ConsoleForm.xml               | 4527 ------------------
 .../kerby-kdc-dist/build/abeille/ReadMe.txt     |    4 -
 .../kerby-kdc-dist/build/abeille/WSForm.xml     | 1642 -------
 .../build/abeille/srvmgr_install_dialog.xml     |  771 ---
 .../build/abeille/srvmgr_newHostDialog.xml      |  725 ---
 .../abeille/srvmgr_reload_console_dialog.xml    |  734 ---
 .../build/abeille/srvmgr_uninstall_dialog.xml   |  508 --
 .../build/abeille/srvmgr_window.xml             | 1354 ------
 .../build/gradle/ahessian/build.gradle          |   18 -
 .../kerby-kdc-dist/build/gradle/build.gradle    |   70 -
 .../gradle/gradle/wrapper/gradle-wrapper.jar    |  Bin 12597 -> 0 bytes
 .../gradle/wrapper/gradle-wrapper.properties    |    7 -
 .../kerby-kdc-dist/build/gradle/gradlew.bat     |   87 -
 .../kerby-kdc-dist/build/gradle/gradlew.sh      |  168 -
 .../build/gradle/hessian4/build.gradle          |   16 -
 .../kerby-kdc-dist/build/gradle/readMe.txt      |   25 -
 .../kerby-kdc-dist/build/gradle/settings.gradle |    2 -
 .../build/gradle/srvmgr/build.gradle            |   32 -
 .../build/gradle/wrapper-app/build.gradle       |   38 -
 .../build/gradle/wrapper/build.gradle           |   54 -
 kerby-kdc/kerby-kdc-dist/build/ws/ReadMe.txt    |    4 -
 .../kerby-kdc-dist/build/ws/genKeyStore.bat     |    1 -
 kerby-kdc/kerby-kdc-dist/build/ws/jaxb.keys     |  Bin 1289 -> 0 bytes
 kerby-kdc/kerby-kdc-dist/build/ws/sign.bat      |    1 -
 kerby-kdc/kerby-kdc-dist/conf/wrapper.conf      |  308 --
 .../kerby-kdc-dist/conf/wrapper.javaws.conf     |    1 -
 kerby-kdc/kerby-kdc-dist/conf/wrapper.stop.conf |   24 -
 kerby-kdc/kerby-kdc-dist/lib/core/ReadMe.txt    |   23 -
 .../lib/core/commons/commons-cli-2-SNAPSHOT.jar |  Bin 702066 -> 0 bytes
 .../core/commons/commons-collections-3.2.jar    |  Bin 571259 -> 0 bytes
 .../core/commons/commons-configuration-1.8.jar  |  Bin 354491 -> 0 bytes
 .../lib/core/commons/commons-io-1.3.1.jar       |  Bin 83613 -> 0 bytes
 .../lib/core/commons/commons-lang-2.4.jar       |  Bin 261809 -> 0 bytes
 .../lib/core/commons/commons-logging-1.1.jar    |  Bin 52915 -> 0 bytes
 .../lib/core/commons/commons-vfs2-2.0.jar       |  Bin 415578 -> 0 bytes
 .../lib/core/groovy/groovy-all-1.8.6.jar        |  Bin 6167392 -> 0 bytes
 .../kerby-kdc-dist/lib/core/jna/jna-3.4.1.jar   |  Bin 1907070 -> 0 bytes
 .../lib/core/jna/platform-3.4.1.jar             |  Bin 916366 -> 0 bytes
 .../lib/core/netty/netty-3.6.6.Final.jar        |  Bin 1206119 -> 0 bytes
 .../lib/core/regex/jrexx-1.1.1.jar              |  Bin 100722 -> 0 bytes
 .../kerby-kdc-dist/lib/core/yajsw/ahessian.jar  |  Bin 226847 -> 0 bytes
 .../kerby-kdc-dist/lib/extended/ReadMe.txt      |   25 -
 .../lib/extended/abeille/formsrt.jar            |  Bin 454530 -> 0 bytes
 .../lib/extended/commons/commons-codec-1.3.jar  |  Bin 46725 -> 0 bytes
 .../commons/commons-httpclient-3.0.1.jar        |  Bin 279781 -> 0 bytes
 .../lib/extended/commons/commons-net-1.4.1.jar  |  Bin 180792 -> 0 bytes
 .../glazedlists/commons-beanutils-1.8.2.jar     |  Bin 231891 -> 0 bytes
 .../glazedlists/glazedlists-1.8.0_java15.jar    |  Bin 838393 -> 0 bytes
 .../lib/extended/jgoodies/forms-1.2.0.jar       |  Bin 108132 -> 0 bytes
 .../lib/extended/quartz/quartz-1.8.0.jar        |  Bin 444283 -> 0 bytes
 .../lib/extended/velocity/velocity-1.7.jar      |  Bin 449505 -> 0 bytes
 .../vfs-webdav/jackrabbit-webdav-1.5.6.jar      |  Bin 3378270 -> 0 bytes
 .../lib/extended/vfs-webdav/slf4j-api-1.5.0.jar |  Bin 16591 -> 0 bytes
 .../extended/vfs-webdav/slf4j-jdk14-1.5.0.jar   |  Bin 8641 -> 0 bytes
 .../lib/extended/vfs-webdav/xercesImpl.jar      |  Bin 1229289 -> 0 bytes
 .../lib/extended/yajsw/hessian4.jar             |  Bin 262007 -> 0 bytes
 .../lib/extended/yajsw/srvmgr.jar               |  Bin 85249 -> 0 bytes
 kerby-kdc/kerby-kdc-dist/lib/groovy/ReadMe.txt  |   11 -
 .../lib/groovy/joda/joda-time-1.6.jar           |  Bin 534827 -> 0 bytes
 .../lib/groovy/mail/activation.jar              |  Bin 56290 -> 0 bytes
 .../kerby-kdc-dist/lib/groovy/mail/mail.jar     |  Bin 371264 -> 0 bytes
 .../kerby-kdc-dist/lib/groovy/snmp/SNMP4J.jar   |  Bin 370448 -> 0 bytes
 kerby-kdc/kerby-kdc-dist/scripts/ReadMe.txt     |   34 -
 kerby-kdc/kerby-kdc-dist/scripts/cluster.gv     |   22 -
 .../kerby-kdc-dist/scripts/commandCondition.gv  |  103 -
 kerby-kdc/kerby-kdc-dist/scripts/decryptor.gv   |   20 -
 .../scripts/equinox/equinoxShutdown.gv          |    5 -
 .../kerby-kdc-dist/scripts/groovy/ReadMe.txt    |    1 -
 .../kerby-kdc-dist/scripts/groovy/helloworld.gv |   13 -
 .../scripts/linearRestartDelay.gv               |   11 -
 .../kerby-kdc-dist/scripts/mapNetworkDrive.gv   |   12 -
 kerby-kdc/kerby-kdc-dist/scripts/maxDuration.gv |   52 -
 kerby-kdc/kerby-kdc-dist/scripts/maxStartup.gv  |   60 -
 .../kerby-kdc-dist/scripts/nutch/ReadMe.txt     |    5 -
 .../kerby-kdc-dist/scripts/nutch/nutch_base.gv  |  187 -
 .../kerby-kdc-dist/scripts/nutch/nutch_crawl.gv |    8 -
 .../scripts/nutch/nutch_recrawl.gv              |  110 -
 .../kerby-kdc-dist/scripts/nutch/nutch_solr.gv  |   53 -
 kerby-kdc/kerby-kdc-dist/scripts/sendMail.gv    |   84 -
 kerby-kdc/kerby-kdc-dist/scripts/setenv.gv      |   42 -
 kerby-kdc/kerby-kdc-dist/scripts/snmpTrap.gv    |   56 -
 kerby-kdc/kerby-kdc-dist/scripts/threadDump.gv  |   13 -
 .../kerby-kdc-dist/scripts/timeCondition.gv     |   82 -
 kerby-kdc/kerby-kdc-dist/scripts/trayColor.gv   |   48 -
 kerby-kdc/kerby-kdc-dist/scripts/trayMessage.gv |   29 -
 .../scripts/vfsCommandCondition.gv              |   99 -
 .../scripts/wso2/wso2_shutdown.gv               |   13 -
 kerby-kdc/kerby-kdc-dist/templates/daemon.vm    |   67 -
 .../kerby-kdc-dist/templates/launchd.plist.vm   |   19 -
 kerby-kdc/kerby-kdc-dist/webapps/ReadMe.txt     |   24 -
 .../webapps/yajsw/serviceManagerClient.conf     |   10 -
 .../webapps/yajsw/serviceManagerClient.jnlp     |   28 -
 .../webapps/yajsw/serviceManagerServer.conf     |   31 -
 .../webapps/yajsw/serviceManagerServer.jnlp     |   28 -
 .../kerby-kdc-dist/webapps/yajsw/wrapper.conf   |   41 -
 .../kerby-kdc-dist/webapps/yajsw/wrapperWS.jar  |  Bin 62173 -> 0 bytes
 .../kerby-kdc-dist/webapps/yajsw/yajsw.jnlp     |   28 -
 kerby-kdc/kerby-kdc-dist/wrapper.jar            |  Bin 830979 -> 0 bytes
 kerby-kdc/kerby-kdc-dist/wrapperApp.jar         |  Bin 43989 -> 0 bytes
 kerby-kdc/kerby-kdc-dist/yajsw.policy.txt       |    4 -
 kerby-kdc/pom.xml                               |   29 -
 pom.xml                                         |    1 +
 172 files changed, 1332 insertions(+), 13948 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/097d43c4/kdc-tool/kinit/kinit-dist/bin/kinit.sh
----------------------------------------------------------------------
diff --git a/kdc-tool/kinit/kinit-dist/bin/kinit.sh b/kdc-tool/kinit/kinit-dist/bin/kinit.sh
deleted file mode 100644
index ac0754a..0000000
--- a/kdc-tool/kinit/kinit-dist/bin/kinit.sh
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/bin/bash
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements.  See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership.  The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License.  You may obtain a copy of the License at
-#
-#   http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied.  See the License for the
-# specific language governing permissions and limitations
-# under the License.
-confdir=/etc/kerby/krb/conf
-java -jar ../kinit/kinit-1.0-SNAPSHOT-jar-with-dependencies.jar ${confdir} $@

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/097d43c4/kdc-tool/kinit/pom.xml
----------------------------------------------------------------------
diff --git a/kdc-tool/kinit/pom.xml b/kdc-tool/kinit/pom.xml
index 97d806a..2c49764 100644
--- a/kdc-tool/kinit/pom.xml
+++ b/kdc-tool/kinit/pom.xml
@@ -45,34 +45,5 @@
       <scope>test</scope>
     </dependency>
   </dependencies>
-
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-assembly-plugin</artifactId>
-        <version>2.2</version>
-        <executions>
-          <execution>
-            <id>dist</id>
-            <phase>package</phase>
-            <goals>
-              <goal>single</goal>
-            </goals>
-            <configuration>
-              <archive>
-                <manifest>
-                  <mainClass>org.apache.kerby.kerberos.tool.Kinit</mainClass>
-                </manifest>
-              </archive>
-              <descriptorRefs>
-                <descriptorRef>jar-with-dependencies</descriptorRef>
-              </descriptorRefs>
-              <outputDirectory>kinit-dist/kinit</outputDirectory>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-    </plugins>
-  </build>
+  
 </project>

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/097d43c4/kdc-tool/pom.xml
----------------------------------------------------------------------
diff --git a/kdc-tool/pom.xml b/kdc-tool/pom.xml
index da3cb47..6f75fd4 100644
--- a/kdc-tool/pom.xml
+++ b/kdc-tool/pom.xml
@@ -30,4 +30,5 @@
     <module>kinit</module>
     <module>token-tool</module>
   </modules>
+
 </project>

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/097d43c4/kerby-dist/kdc-dist/README.txt
----------------------------------------------------------------------
diff --git a/kerby-dist/kdc-dist/README.txt b/kerby-dist/kdc-dist/README.txt
new file mode 100644
index 0000000..48a5486
--- /dev/null
+++ b/kerby-dist/kdc-dist/README.txt
@@ -0,0 +1,54 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+How to install kerby-server?
+
+1. Set the absolute path of the directory:kerby-dist\kerby-server in kerby-dist\conf\wrapper.conf:
+Change the value of wrapper.working.dir.(in the line 28)
+e.g. 
+wrapper.working.dir=C:\\Users\\hazel\\workspace\\directory-kerberos\\kerby-dist\\target\\
+or
+wrapper.working.dir=/home/hazel/workspace/directory-kerberos/kerby-dist/target
+
+2.Every time you want to reinstall, just run:
+mvn install
+
+3.Then you can run or manage the service via the following scripts.
+On windows:
+bat/runConsole.bat,
+bat/installService.bat,
+bat/startService.bat,
+bat/stopService.bat,
+bat/uninstallService.bat in Windows.
+
+On Linux:
+bin/genConfig.sh
+bin/installDaemonNoPriv.sh
+bin/installDaemon.sh
+bin/queryDaemon.sh
+bin/runConsole.sh
+bin/runHelloWorld.sh
+bin/setenv.sh
+bin/startDaemonNoPriv.sh
+bin/startDaemon.sh
+bin/stopDaemonNoPriv.sh
+bin/stopDaemon.sh
+bin/systemTrayIcon.sh
+bin/uninstallDaemonNoPriv.sh
+bin/uninstallDaemon.sh
+bin/wrapper.sh
+

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/097d43c4/kerby-dist/kdc-dist/bin/start-kdc.sh
----------------------------------------------------------------------
diff --git a/kerby-dist/kdc-dist/bin/start-kdc.sh b/kerby-dist/kdc-dist/bin/start-kdc.sh
new file mode 100644
index 0000000..9e6ce7c
--- /dev/null
+++ b/kerby-dist/kdc-dist/bin/start-kdc.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+java -jar ../kerby-kdc/kerby-kdc-1.0-SNAPSHOT-jar-with-dependencies.jar $@
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/097d43c4/kerby-dist/kdc-dist/pom.xml
----------------------------------------------------------------------
diff --git a/kerby-dist/kdc-dist/pom.xml b/kerby-dist/kdc-dist/pom.xml
new file mode 100644
index 0000000..fa6be02
--- /dev/null
+++ b/kerby-dist/kdc-dist/pom.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License. See accompanying LICENSE file.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.apache.kerby</groupId>
+    <artifactId>kerby-dist</artifactId>
+    <version>1.0-SNAPSHOT</version>
+  </parent>
+
+  <artifactId>kdc-dist</artifactId>
+  <name>KDC Dist</name>
+  <description>KDC Dist Project</description>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.kerby</groupId>
+      <artifactId>kerby-kerb</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+  </dependencies>
+
+</project>

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/097d43c4/kerby-dist/kdc-dist/scripts/ReadMe.txt
----------------------------------------------------------------------
diff --git a/kerby-dist/kdc-dist/scripts/ReadMe.txt b/kerby-dist/kdc-dist/scripts/ReadMe.txt
new file mode 100644
index 0000000..a1e1a00
--- /dev/null
+++ b/kerby-dist/kdc-dist/scripts/ReadMe.txt
@@ -0,0 +1,34 @@
+The following are scripts implementing diverse "extra" functionality for YAJSW.
+For more details please check the script file and the project documentation.
+
+
+Groovy scripts executed as trigger actions (eg if a text matches application console output, or on state changes):
+
+sendMail.gv
+trayMessage.gv
+trayColor.gv
+snmpTrap.gv
+
+Groovy scripts executed as conditions (eg script checks condition cyclically and starts/stops application accordingly)
+
+timeCondition.gv
+fileCondition.gv
+commandCondition.gv
+
+Groovy script executed on MSCS cluster change
+
+cluster.gv
+
+Groovy script for calculating the delay on application restart
+
+linearRestartDelay.gv
+
+Groovy script executed within the application process before the application is started (generally to map network forlders before a service is started)
+
+mapNetworkDrive.gv
+
+Groovy script for monitoring the application
+
+maxStartup.gv
+maxDuration.gv
+

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/097d43c4/kerby-dist/kdc-dist/scripts/cluster.gv
----------------------------------------------------------------------
diff --git a/kerby-dist/kdc-dist/scripts/cluster.gv b/kerby-dist/kdc-dist/scripts/cluster.gv
new file mode 100644
index 0000000..77fad19
--- /dev/null
+++ b/kerby-dist/kdc-dist/scripts/cluster.gv
@@ -0,0 +1,22 @@
+/*
+ * Sample for Cluster aware script 
+ * 
+ * Starts the process if current node is active
+ * Stops the process otherwise
+ * 
+ * Arguments: -
+ * 
+ * Configuration Example:
+ * 
+ * wrapper.windows.cluster.script=scripts/cluster.gv
+ * 
+ * current cluster information may be accessed by:
+ *
+ * process.cluster.activeNode: returns as string the current active node for the first group found
+ * process.cluster.groupInfo: returns a Map<String, String> with <group-name, current-node-of-group>
+ */
+ 
+if (System.getenv("COMPUTERNAME").equals(process.cluster.activeNode))
+    process.start()
+else
+    process.stop()
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/097d43c4/kerby-dist/kdc-dist/scripts/commandCondition.gv
----------------------------------------------------------------------
diff --git a/kerby-dist/kdc-dist/scripts/commandCondition.gv b/kerby-dist/kdc-dist/scripts/commandCondition.gv
new file mode 100644
index 0000000..36a387e
--- /dev/null
+++ b/kerby-dist/kdc-dist/scripts/commandCondition.gv
@@ -0,0 +1,103 @@
+/*
+ * Condition Script for implementing the wrapper.commandfile option
+ * 
+ * On first call the application is started
+ * With each call the script check for the existance of a command file
+ * This is a text file with one command per line
+ * All commands in the file are executed and the file is deleted
+ * The following commands are supported:
+ * 
+ * START 	      : start the application if it is not running
+ * STOP  	      : stop the applicaiton if it is running
+ * RESTART 	    : restart the application if it is running
+ * DUMP  	      : request a thread dump
+ * SHUTDOWN     : stop the wrapper and the application
+ * STATE <file> : writes the current state of the application to the given file
+ * STARTDUMP    : start of cyclic thread dump
+ * STOPDUMP     : stop of cyclic thread dump
+ * 
+ * Arguments: 
+ * - fileName
+ * 
+ * Example Configuration:
+ * 
+ * wrapper.condition.script=scripts/commandCondition.gv 
+ * wrapper.condition.script.args=cmd.txt 
+ * wrapper.condition.cycle=1 
+ */
+
+// on first call file is bound
+// set the file and start the process
+if (callCount == 0)
+{
+	file = new File(this.args[0])
+	process.start()
+	// at start no cyclic thread dump
+	nextDumpTime = -1
+	// uncomment to start cyclic thread dump on start
+	// nextDumpTime = System.currentTimeMillis()
+}
+
+// execute a command
+doCommand = { cmd ->
+	logger.info("executing file command "+cmd);
+	if ("START".equals(cmd))
+		process.start();
+	else if ("STOP".equals(cmd))
+		process.stop();
+	else if ("RESTART".equals(cmd))
+		process.restart();
+	else if ("DUMP".equals(cmd))
+		process.threadDump();
+	else if ("STARTDUMP".equals(cmd))
+	  	nextDumpTime = System.currentTimeMillis()
+	else if ("STOPDUMP".equals(cmd))
+	  	nextDumpTime = -1
+	else if ("SHUTDOWN".equals(cmd))
+	{
+		process.stop();
+		shutdown = true;
+	}
+	else if (cmd.startsWith("STATE "))
+	{
+		String fName = cmd.substring(6)
+		writer = new File(fName).newWriter(false) // no append
+		writer.write(process.getStringState())
+		writer.close()
+	}
+	else
+		logger.info("unknown command");
+}
+
+if (file.exists())
+// do the file
+try
+{
+	shutdown = false;
+	logger.info("command file found")
+	file.eachLine {cmd -> doCommand(cmd)}
+	file.delete();
+	logger.info("command file deleted")
+	if (shutdown)
+	{
+		Thread.sleep(5000)
+		Runtime.getRuntime().halt(0);
+	}
+}
+catch (Exception ex)
+{
+	logger.info("Error executing command file "+ex.getMessage())
+}
+
+try
+{
+if (nextDumpTime != -1 && nextDumpTime <= System.currentTimeMillis()) 
+	{ 
+		doCommand("DUMP")
+		nextDumpTime = System.currentTimeMillis()+30000 
+	}
+}
+catch (Exception ex)
+{
+	logger.info("Error executing cyclic thread dump "+ex.getMessage())
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/097d43c4/kerby-dist/kdc-dist/scripts/decryptor.gv
----------------------------------------------------------------------
diff --git a/kerby-dist/kdc-dist/scripts/decryptor.gv b/kerby-dist/kdc-dist/scripts/decryptor.gv
new file mode 100644
index 0000000..cf9f058
--- /dev/null
+++ b/kerby-dist/kdc-dist/scripts/decryptor.gv
@@ -0,0 +1,20 @@
+/*
+ * In-Configurtion Script for encrypting configuration data
+ * 
+ * Dependency: http://www.jasypt.org/
+ *             Download jasypt-*.jar to <yajsw>/lib/groovy/jasypt/
+ * 
+ * Example Configuration:
+ * # definition of the In-Configuration script
+ * wrapper.config.script.decryptor = scripts/decryptor.gv
+ * # invocation of the script
+ * wrapper.java.additional.15 = ${decryptor.invoke('decrypt'\, 'aplasdfjlk')} 
+ */
+import org.jasypt.util.text.*
+
+public String decrypt(String text)
+{
+   textEncryptor = new BasicTextEncryptor();
+   textEncryptor.setPassword('asdfasdf');
+   return textEncryptor.decrypt(textEncryptor.encrypt(text));
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/097d43c4/kerby-dist/kdc-dist/scripts/equinox/equinoxShutdown.gv
----------------------------------------------------------------------
diff --git a/kerby-dist/kdc-dist/scripts/equinox/equinoxShutdown.gv b/kerby-dist/kdc-dist/scripts/equinox/equinoxShutdown.gv
new file mode 100644
index 0000000..70aae9a
--- /dev/null
+++ b/kerby-dist/kdc-dist/scripts/equinox/equinoxShutdown.gv
@@ -0,0 +1,5 @@
+import org.eclipse.core.runtime.adaptor.EclipseStarter;
+
+println 'calling EclipseStarter.shutdown'
+EclipseStarter.shutdown()
+println 'shutdown terminated'
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/097d43c4/kerby-dist/kdc-dist/scripts/groovy/ReadMe.txt
----------------------------------------------------------------------
diff --git a/kerby-dist/kdc-dist/scripts/groovy/ReadMe.txt b/kerby-dist/kdc-dist/scripts/groovy/ReadMe.txt
new file mode 100644
index 0000000..caf5193
--- /dev/null
+++ b/kerby-dist/kdc-dist/scripts/groovy/ReadMe.txt
@@ -0,0 +1 @@
+Sample groovy script used in conf/sample/wrapper.groovy_helloworld.conf showing how groovy scripts are wrapped
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/097d43c4/kerby-dist/kdc-dist/scripts/groovy/helloworld.gv
----------------------------------------------------------------------
diff --git a/kerby-dist/kdc-dist/scripts/groovy/helloworld.gv b/kerby-dist/kdc-dist/scripts/groovy/helloworld.gv
new file mode 100644
index 0000000..139715d
--- /dev/null
+++ b/kerby-dist/kdc-dist/scripts/groovy/helloworld.gv
@@ -0,0 +1,13 @@
+/*
+ * Sample script to test wrapping of a groovy script
+ * Just loops forever and prints to file and console
+ */
+writer=new File("FileWrite.out").newWriter()
+
+while (true)
+{
+	println "hello world"
+	writer.writeLine("hello world")
+	writer.flush()
+	Thread.sleep(1000);
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/097d43c4/kerby-dist/kdc-dist/scripts/linearRestartDelay.gv
----------------------------------------------------------------------
diff --git a/kerby-dist/kdc-dist/scripts/linearRestartDelay.gv b/kerby-dist/kdc-dist/scripts/linearRestartDelay.gv
new file mode 100644
index 0000000..cc98475
--- /dev/null
+++ b/kerby-dist/kdc-dist/scripts/linearRestartDelay.gv
@@ -0,0 +1,11 @@
+/*
+ * Script which increases the delay on each restart
+ * Input argument is the delay in seconds
+ *
+ * Configuration Example:
+ * 
+ * wrapper.restart.delay.script=scripts/linearRestartDelay.gv
+ * wrapper.restart.delay.script.args=10
+ */
+  return count*Long.parseLong(args[0])
+

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/097d43c4/kerby-dist/kdc-dist/scripts/mapNetworkDrive.gv
----------------------------------------------------------------------
diff --git a/kerby-dist/kdc-dist/scripts/mapNetworkDrive.gv b/kerby-dist/kdc-dist/scripts/mapNetworkDrive.gv
new file mode 100644
index 0000000..b46a6f4
--- /dev/null
+++ b/kerby-dist/kdc-dist/scripts/mapNetworkDrive.gv
@@ -0,0 +1,12 @@
+/*
+ * Sample script for mapping a network before an application starts on windows
+ * 
+ * Arguments: -
+ * 
+ * Configuration Example:
+ * 
+ * wrapper.app.pre.script=scripts/mapNetworkDrive.gv
+ *
+ */
+
+'net use k: \\\\myserver\\$c'.execute().text
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/097d43c4/kerby-dist/kdc-dist/scripts/maxDuration.gv
----------------------------------------------------------------------
diff --git a/kerby-dist/kdc-dist/scripts/maxDuration.gv b/kerby-dist/kdc-dist/scripts/maxDuration.gv
new file mode 100644
index 0000000..b633be9
--- /dev/null
+++ b/kerby-dist/kdc-dist/scripts/maxDuration.gv
@@ -0,0 +1,52 @@
+/*
+ * Script for checking that an application does not run
+ * longer than a max duration
+ * 
+ * An instance of the script is invoked on startup of the application
+ * Another instance is invoked when the application returns to idle state
+ * 
+ * On first call a timer is set. We are using a timer implementation from the netty framework.
+ * The timer is stored in the context map so that it can be retrieved when the application terminates.
+ * 
+ * Arguments: 
+ * - maximal duration in seconds
+ * 
+ * Example Configuration:
+ * 
+ * wrapper.script.RUN = scripts/maxDuration.gv
+ * wrapper.script.RUN.args = ${1*60*60} // 1 hour
+ * wrapper.script.IDLE = scripts/maxDuration.gv
+ *
+ */
+
+import org.jboss.netty.util.*
+import java.util.concurrent.TimeUnit
+
+
+// on first call create a timer task
+if (callCount == 0 && process.isOSProcessRunning())
+{
+	Timer timer = new HashedWheelTimer();
+	final myProcess = process;
+	TimerTask task = 
+	{ Object[] timeout ->
+			if (myProcess.isOSProcessRunning())
+			{
+				System.out.println("Script maxDuration.gv: application running too long -> stopping");
+				myProcess.stop();
+			}
+	} as TimerTask;
+		long duration = Long.parseLong(args[0])
+		Timeout timeout = timer.newTimeout(task, duration, TimeUnit.SECONDS)
+		context.put("timeout", timeout);
+		System.out.println("Script maxDuration.gv: timeout set")
+}
+else if (!process.isOSProcessRunning())
+{
+	Timeout timeout = context.remove("timeout");
+	if (timeout != null && !timeout.isExpired())
+		timeout.cancel();
+	System.out.println("Script maxDuration.gv: timeout removed")
+}
+
+

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/097d43c4/kerby-dist/kdc-dist/scripts/maxStartup.gv
----------------------------------------------------------------------
diff --git a/kerby-dist/kdc-dist/scripts/maxStartup.gv b/kerby-dist/kdc-dist/scripts/maxStartup.gv
new file mode 100644
index 0000000..338dad7
--- /dev/null
+++ b/kerby-dist/kdc-dist/scripts/maxStartup.gv
@@ -0,0 +1,60 @@
+/*
+ * Script for checking that an application reports that it is up and running 
+ * within a timeout after it is in state running.
+ *
+ * The application reports that it is up by logging a text to the console
+ * The logged text is defined as a filter trigger.
+ * 
+ * An instance of the script is invoked on startup of the application
+ * Another instance is invoked when the expected text has been printed to the console
+ * 
+ * If we have been invoked by a text match (line == null) a timer is set. We are using a timer implementation from the netty framework.
+ * The timer is stored in the context map so that it can be retrieved when the application terminates.
+ * 
+ * Arguments: 
+ * - maximal duration in seconds
+ * 
+ * Example Configuration:
+ * 
+ * wrapper.script.RUN = scripts/maxStartup.gv
+ * wrapper.script.RUN.args = ${2*60} // 2 minutes
+ * wrapper.filter.trigger.systemStarted=System started
+ * wrapper.filter.script.systemStarted=scripts/maxStartup.gv
+ *
+ */
+
+import org.jboss.netty.util.*
+import java.util.concurrent.TimeUnit
+
+println "maxStartup.gv invoked: $line"
+
+	Timeout timeout = context.remove("timeout");
+// if a timeout has been set: remove it.
+	if (timeout != null && !timeout.isExpired())
+	{
+		timeout.cancel();
+		println "Script maxStartup.gv: timeout removed"
+		}
+
+// if we are not invoked by a trigger
+if (line == null || "".equals(line))
+{
+	Timer timer = new HashedWheelTimer();
+	final myProcess = process;
+	TimerTask task = 
+	{ Object[] tt ->
+			if (myProcess.isOSProcessRunning())
+			{
+			println "Script maxStartup.gv: took too long to startup -> restart"
+				myProcess.restart();
+			}
+	} as TimerTask;
+		long duration = Long.parseLong(args[0])
+		timeout = timer.newTimeout(task, duration, TimeUnit.SECONDS)
+		context.put("timeout", timeout);
+		println "Script maxStartup.gv: timeout set"
+}
+// else: nothing to do: timeout has already been removed
+
+
+

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/097d43c4/kerby-dist/kdc-dist/scripts/nutch/ReadMe.txt
----------------------------------------------------------------------
diff --git a/kerby-dist/kdc-dist/scripts/nutch/ReadMe.txt b/kerby-dist/kdc-dist/scripts/nutch/ReadMe.txt
new file mode 100644
index 0000000..9169d5c
--- /dev/null
+++ b/kerby-dist/kdc-dist/scripts/nutch/ReadMe.txt
@@ -0,0 +1,5 @@
+Sample Scripts showing how YAJSW can be used to run a workflow of applications.
+This example implements web crawl for nutch/solr.
+For further details refer to nutch_recrawl.gv.
+
+Refer also to conf/samples/luceneNutch for the configuration files for wrapping these scripts.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/097d43c4/kerby-dist/kdc-dist/scripts/nutch/nutch_base.gv
----------------------------------------------------------------------
diff --git a/kerby-dist/kdc-dist/scripts/nutch/nutch_base.gv b/kerby-dist/kdc-dist/scripts/nutch/nutch_base.gv
new file mode 100644
index 0000000..fb54709
--- /dev/null
+++ b/kerby-dist/kdc-dist/scripts/nutch/nutch_base.gv
@@ -0,0 +1,187 @@
+/*
+*
+* Base script for running nutch
+* Sets global properties
+* Defines execNutch for executing nutch in a sub-process
+* Diverse shell functions
+*/
+
+
+import org.rzo.yajsw.groovy.*
+
+// properties
+//NUTCH_HOME = "."
+crawl_dir = "$NUTCH_HOME/crawl_dir"
+//CATALINA_HOME = "."
+depth = 5
+threads = 50
+adddays = 7
+//rank = 10000 // Comment this statement if you don't want to set topN value
+safe = true
+urls = "urls"
+
+
+//
+steps=10
+try
+{
+if (rank instanceof Integer)
+	topN="--topN $rank"
+else
+  topN=""
+}
+catch (Exception ex)
+{
+	topN = ""
+}
+
+// nutch command -> main class
+getMainClass = { COMMAND ->
+if (COMMAND.equals("crawl"))
+  return "org.apache.nutch.crawl.Crawl"
+else if (COMMAND.equals("inject"))
+   return "org.apache.nutch.crawl.Injector"
+else if (COMMAND.equals("generate"))
+   return "org.apache.nutch.crawl.Generator"
+else if (COMMAND.equals("freegen"))
+   return "org.apache.nutch.tools.FreeGenerator"
+else if (COMMAND.equals("fetch"))
+   return "org.apache.nutch.fetcher.Fetcher"
+else if (COMMAND.equals("fetch2"))
+   return "org.apache.nutch.fetcher.Fetcher2"
+else if (COMMAND.equals("parse"))
+   return "org.apache.nutch.parse.ParseSegment"
+else if (COMMAND.equals("readdb"))
+   return "org.apache.nutch.crawl.CrawlDbReader"
+else if (COMMAND.equals("convdb"))
+   return "org.apache.nutch.tools.compat.CrawlDbConverter"
+else if (COMMAND.equals("mergedb"))
+   return "org.apache.nutch.crawl.CrawlDbMerger"
+else if (COMMAND.equals("readlinkdb"))
+   return "org.apache.nutch.crawl.LinkDbReader"
+else if (COMMAND.equals("readseg"))
+   return "org.apache.nutch.segment.SegmentReader"
+else if (COMMAND.equals("segread"))
+{
+	echo "[DEPRECATED] Command 'segread' is deprecated, use 'readseg' instead."
+   return "org.apache.nutch.segment.SegmentReader"
+}
+else if (COMMAND.equals("mergesegs"))
+   return "org.apache.nutch.segment.SegmentMerger"
+else if (COMMAND.equals("updatedb"))
+   return "org.apache.nutch.crawl.CrawlDb"
+else if (COMMAND.equals("invertlinks"))
+   return "org.apache.nutch.crawl.LinkDb"
+else if (COMMAND.equals("mergelinkdb"))
+   return "org.apache.nutch.crawl.LinkDbMerger"
+else if (COMMAND.equals("index"))
+   return "org.apache.nutch.indexer.Indexer"
+else if (COMMAND.equals("solrindex"))
+   return "org.apache.nutch.indexer.solr.SolrIndexer"
+else if (COMMAND.equals("dedup"))
+   return "org.apache.nutch.indexer.DeleteDuplicates"
+else if (COMMAND.equals("solrdedup"))
+   return "org.apache.nutch.indexer.solr.SolrDeleteDuplicates"
+else if (COMMAND.equals("merge"))
+   return "org.apache.nutch.indexer.IndexMerger"
+else if (COMMAND.equals("plugin"))
+   return "org.apache.nutch.plugin.PluginRepository"
+else if (COMMAND.equals("server"))
+   return 'org.apache.nutch.searcher.DistributedSearch$Server'
+   else
+	   return null
+}
+
+// run nutch set exit code into err
+err = 0
+execNutch = { args ->
+	    println "exec nutch $args"
+		builder = new WrapperBuilder()
+		// get full path to conf file
+		builder."wrapper.config" = new File("conf/wrapper.nutch.conf").getCanonicalPath()
+		// set the java application args starting with args[1]
+		args.eachWithIndex {arg, i -> if (i>0) builder."wrapper.app.parameter.$i" = arg}
+		// working dir of nutch
+		builder."NUTCH_HOME" = NUTCH_HOME
+		// get the main class depending on the nutch command in args[0]
+		builder."wrapper.java.app.mainclass" = getMainClass(args[0])
+		process = builder.process();
+		process.start()
+		process.waitFor()
+		err = process.exitCode
+		println "nutch terminated with exit code $err"
+		return err
+		}
+
+// echo command
+echo = {println it}
+
+// tomcat service
+builder = new WrapperBuilder()
+builder."wrapper.config" = "conf/wrapper.nutch_tomcat.conf"
+builder."CATALINA_HOME" = CATALINA_HOME
+tomcat = builder.service()
+// install if not already installed
+if (!tomcat.isInstalled())
+	tomcat.install()
+
+// some sh commands implemented in groovy
+delClos = { file ->
+		println "del ${file.getCanonicalPath()} ${file.isDirectory()}"
+		if (file.isDirectory())
+		{
+			file.eachDir {delClos(it)}
+			file.eachFile {if (!it.delete()) println "error deleting $it"}
+		}
+		else
+			if (!file.delete()) println "error deleting $file"
+}
+// rm -rf
+rm_rf = { file -> 
+		println "rm -rf $file"
+		removeSelf = true
+		if (file.endsWith("*"))
+		{
+			file = file.replace( "*", "")
+			removeSelf = false
+		}
+		delClos(new File(file))
+		if (removeSelf)
+		{
+			new File(file).delete()
+		}
+}
+// mv
+mvSingle = {from, to -> println "mv $from $to"; if (!from.renameTo(new File(to, from.getName()))) println "error moving $from -> $to"}
+mv = {from , to ->
+    println "mv $from $to"
+    moveDir = false
+    if (from.endsWith( "*"))
+    {
+    	from = from.replace("*", "")
+    	moveDir = true
+    }
+    from = new File(from)
+    to = new File(to)
+	success = false
+     if (moveDir)
+			{
+        from.eachFile(){mvSingle( it, to)}
+        from.eachDir(){mvSingle (it, to)}
+			}
+			else
+				mvSingle (from, to)
+}
+
+//`ls -d crawl/segments/* | tail -1`
+lastSegment = {dir = "$it"; files = new File(dir).list(); return "$dir/${files[files.length-1]}"}
+
+// touch
+touch = {
+		file = new File(it)
+	if (file.exists())
+		file.setLastModified(System.currentTimeMillis())
+	else
+		println "touch error: file does not exist ${file.getCanonicalPath()}"
+}
+

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/097d43c4/kerby-dist/kdc-dist/scripts/nutch/nutch_crawl.gv
----------------------------------------------------------------------
diff --git a/kerby-dist/kdc-dist/scripts/nutch/nutch_crawl.gv b/kerby-dist/kdc-dist/scripts/nutch/nutch_crawl.gv
new file mode 100644
index 0000000..6d22f13
--- /dev/null
+++ b/kerby-dist/kdc-dist/scripts/nutch/nutch_crawl.gv
@@ -0,0 +1,8 @@
+// basic initializations
+evaluate(new File("scripts/nutch_base.gv"))
+
+// start the script
+// bin/nutch crawl urls -dir crawl -depth 3 -topN 50
+echo "----- crawl -----"
+execNutch (["crawl", "$urls", "-dir", "${crawl_dir}", "-depth", "$depth"])
+echo "----- done -----"

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/097d43c4/kerby-dist/kdc-dist/scripts/nutch/nutch_recrawl.gv
----------------------------------------------------------------------
diff --git a/kerby-dist/kdc-dist/scripts/nutch/nutch_recrawl.gv b/kerby-dist/kdc-dist/scripts/nutch/nutch_recrawl.gv
new file mode 100644
index 0000000..2449d6e
--- /dev/null
+++ b/kerby-dist/kdc-dist/scripts/nutch/nutch_recrawl.gv
@@ -0,0 +1,110 @@
+/*  
+Original script:
+http://www.adick.at/2008-10-15,recrawl-script-for-nutch/
+
+*/
+// basic initializations
+evaluate(new File("scripts/nutch_base.gv"))
+try
+{
+// start the script
+echo "----- Inject (Step 1 of $steps) -----"
+execNutch (["inject", "${crawl_dir}/crawldb", "urls"])
+
+echo "----- Generate, Fetch, Parse, Update (Step 2 of $steps) -----"
+for(i=0; i <depth; i++)
+{
+        echo "--- Beginning crawl at depth ${i + 1} of ${depth} ---"
+        execNutch(["generate", "$crawl_dir/crawldb", "$crawl_dir/segments", "-adddays", "$adddays"])
+        if (err != 0)
+        {
+         echo "runbot: Stopping at depth ${i +1}. No more URLs to fetch."
+          break
+        }
+         segment=lastSegment( "$crawl_dir/segments/")
+         execNutch (["fetch", "$segment", "-threads ${threads}"])
+         if (err != 0)
+         {
+         echo "runbot: fetch $segment at depth ${depth} failed. Deleting it."
+         rm_rf("$segment")
+         continue
+         }
+        echo "--- Parsing Segment $segment ---"
+        execNutch (["parse", "$segment"])
+        execNutch (["updatedb", "$crawl_dir/crawldb", "$segment"])
+}
+         
+echo "----- Stopping Tomcat (Step 3 of $steps) -----"
+tomcat.stop()
+
+echo "----- Merge Segments (Step 4 of $steps) -----"
+rm_rf("$crawl_dir/MERGEDsegments")
+execNutch (["mergesegs", "$crawl_dir/MERGEDsegments", "-dir", "$crawl_dir/segments/"])
+println "err $err"
+if (err == 0)
+{
+          if (!safe)
+            rm_rf ("$crawl_dir/segments/*")
+           else
+         {
+            new File("$crawl_dir/FETCHEDsegments").mkdir()
+            mv ("$crawl_dir/segments/*", "$crawl_dir/FETCHEDsegments")
+         }
+          mv ("$crawl_dir/MERGEDsegments/*", "$crawl_dir/segments")
+          rm_rf ("$crawl_dir/MERGEDsegments")
+      }
+else
+{
+	      println "error in merge -> abort"
+          System.exit(err)
+}
+
+echo "----- Invert Links (Step 5 of $steps) -----"
+execNutch (["invertlinks", "$crawl_dir/linkdb", "$crawl_dir/segments/*"])
+
+echo "----- Index (Step 6 of $steps) -----"
+rm_rf("$crawl_dir/NEWindexes")
+rm_rf ("$crawl_dir/OLDindexes")
+execNutch (["index", "$crawl_dir/NEWindexes", "$crawl_dir/crawldb", "$crawl_dir/linkdb", "$crawl_dir/segments/*"])
+
+echo "----- Dedup (Step 7 of $steps) -----"
+execNutch (["dedup", "$crawl_dir/NEWindexes"])
+         
+echo "----- Merge Indexes (Step 8 of $steps) -----"
+execNutch (["merge", "$crawl_dir/MERGEDindexes", "$crawl_dir/NEWindexes"])
+// in nutch-site, hadoop.tmp.dir points to crawl/tmp
+rm_rf ("$crawl_dir/tmp/*")
+// replace indexes with indexes_merged
+file = new File("$crawl_dir/OLDindexes")
+if (!file.exists()) file.mkdir()
+mv ("$crawl_dir/index/*", "$crawl_dir/OLDindexes")
+mv ("$crawl_dir/MERGEDindexes/*", "$crawl_dir/index")
+// clean up old indexes directories
+if(!safe)
+         {
+         rm_rf ("$crawl_dir/NEWindexes")
+         rm_rf ("$crawl_dir/OLDindexes")
+         }
+         
+echo "----- Reloading index on the search site (Step 9 of $steps) -----"
+ if(safe)
+         {
+        touch ("${CATALINA_HOME}/webapps/ROOT/WEB-INF/web.xml")
+        echo "Done!"
+         }
+      else
+         {
+        echo "runbot: Can not reload index in safe mode."
+        echo "runbot: Please reload it manually using the following command:"
+        echo "runbot: touch ${CATALINA_HOME}/webapps/ROOT/WEB-INF/web.xml"
+         }
+
+echo "----- Restarting Tomcat (Step 10 of $steps) -----"
+tomcat.stop()
+tomcat.start()
+echo "runbot: FINISHED: Crawl completed!"
+}
+catch (Throwable ex)
+{
+	ex.printStackTrace()
+}

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/097d43c4/kerby-dist/kdc-dist/scripts/nutch/nutch_solr.gv
----------------------------------------------------------------------
diff --git a/kerby-dist/kdc-dist/scripts/nutch/nutch_solr.gv b/kerby-dist/kdc-dist/scripts/nutch/nutch_solr.gv
new file mode 100644
index 0000000..c79d076
--- /dev/null
+++ b/kerby-dist/kdc-dist/scripts/nutch/nutch_solr.gv
@@ -0,0 +1,53 @@
+/*  
+Original script:
+http://www.lucidimagination.com/blog/2009/03/09/nutch-solr/
+
+
+*/
+// basic initializations
+evaluate(new File("scripts/nutch_base.gv"))
+
+solr_url = "http://127.0.0.1:8983/solr/"
+steps = 4
+
+try
+{
+// start the script
+echo "----- Inject (Step 1 of $steps) -----"
+execNutch (["inject", "${crawl_dir}/crawldb", "urls"])
+
+echo "----- Generate, Fetch, Parse, Update (Step 2 of $steps) -----"
+for(i=0; i <depth; i++)
+{
+        echo "--- Beginning crawl at depth ${i + 1} of ${depth} ---"
+        execNutch(["generate", "$crawl_dir/crawldb", "$crawl_dir/segments", "-adddays", "$adddays"])
+        if (err != 0)
+        {
+         echo "runbot: Stopping at depth ${i +1}. No more URLs to fetch."
+          break
+        }
+         segment=lastSegment( "$crawl_dir/segments/")
+         execNutch (["fetch", "$segment", "-threads ${threads}", "-noParsing"])
+         if (err != 0)
+         {
+         echo "runbot: fetch $segment at depth ${depth} failed. Deleting it."
+         rm_rf("$segment")
+         continue
+         }
+        echo "--- Parsing Segment $segment ---"
+        execNutch (["parse", "$segment"])
+        execNutch (["updatedb", "$crawl_dir/crawldb", "$segment", "-filter", "-normalize"])
+}
+
+echo "----- Invert Links (Step 3 of $steps) -----"
+execNutch (["invertlinks", "$crawl_dir/linkdb", "$crawl_dir/segments/*"])
+
+echo "----- index all content from all segments to Solr (Step 4 of $steps) -----"
+execNutch (["solrindex", "$solr_url", "$crawl_dir/crawldb", "$crawl_dir/linkdb", "$crawl_dir/segments/*"])
+
+echo "runbot: FINISHED: Crawl completed!"
+}
+catch (Throwable ex)
+{
+	ex.printStackTrace()
+}

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/097d43c4/kerby-dist/kdc-dist/scripts/sendMail.gv
----------------------------------------------------------------------
diff --git a/kerby-dist/kdc-dist/scripts/sendMail.gv b/kerby-dist/kdc-dist/scripts/sendMail.gv
new file mode 100644
index 0000000..2c6c0ab
--- /dev/null
+++ b/kerby-dist/kdc-dist/scripts/sendMail.gv
@@ -0,0 +1,84 @@
+/*
+ * Script for sending an email.
+ * 
+ * Arguments: 
+ * - toMail
+ * - subject
+ * - message
+ * 
+ * Example Configuration:
+ * 
+ * wrapper.filter.trigger.exception.mail=Exception
+ * wrapper.filter.script.exception.mail=scripts/sendMail.gv
+ * wrapper.filter.script.exception.mail.args=mailto@me.com, YAJSW exception, exception found in console output please check the log file
+ */
+import javax.mail.*
+import javax.mail.internet.*
+
+port = 25
+
+mailHost='smtp.mailhost.net' // set your mail provider  
+mailFrom='me@mailhost.net'   // set your mail from
+
+mailUser=null                // set your user if you require authentication
+mailPassword=null            // set your password if you require authentication
+useSSL=false             		 // set to true to use SSL
+  
+
+if (this.args == null || this.args.length != 3)
+{
+	logger.info("error in script sendMail.gv missing arguments. check configuration")
+	return;
+}
+
+mailTo=this.args[0]
+
+subject=this.args[1]
+message=this.args[2]
+
+logger.info("sending mail to " +mailTo)
+
+try
+{
+props = new Properties()
+props.put('mail.smtp.host', mailHost)
+props.put('mail.smtp.port', port.toString())
+
+if (mailPassword != null)
+{
+	props.put('mail.smtp.user', mailUser); 
+	props.put('mail.smtp.password', mailPassword) 
+	props.put('mail.smtp.auth', 'true') 
+	mailSession = Session.getDefaultInstance(props, 
+		new javax.mail.Authenticator() 
+		{ protected PasswordAuthentication getPasswordAuthentication() 
+			{ return new PasswordAuthentication(mailUser, mailPassword); 
+			} 
+		})
+}
+else
+	mailSession = Session.getDefaultInstance(props, null)
+
+
+// Construct the message
+msg = new MimeMessage(mailSession)
+msg.from = new InternetAddress(mailFrom)
+msg.addRecipient(Message.RecipientType.TO, new InternetAddress(mailTo))
+msg.subject = subject
+msg.text = message
+
+// Send the message
+if (useSSL)
+	SMTPSSLTransport.send(msg)
+else
+	Transport.send(msg)
+
+logger.info("mail sent " +mailTo)
+}
+catch (Exception ex)
+{
+logger.throwing("sendMail.gv", "run", ex)
+}
+
+
+

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/097d43c4/kerby-dist/kdc-dist/scripts/setenv.gv
----------------------------------------------------------------------
diff --git a/kerby-dist/kdc-dist/scripts/setenv.gv b/kerby-dist/kdc-dist/scripts/setenv.gv
new file mode 100644
index 0000000..51b7435
--- /dev/null
+++ b/kerby-dist/kdc-dist/scripts/setenv.gv
@@ -0,0 +1,42 @@
+/*
+ * Script for setting an OS environment variable on Windows.
+ * This can be called within the wrapped application to set environment variables
+ *
+ * Arguments: 
+ * - none
+ * 
+ * Example Configuration:
+ * 
+ * wrapper.app.pre.script = setenv.gv
+ * 
+ * to define the variables and their values edit the vars map in the script
+ * note: System.getenv() will not return values set by this script. This script is invoked after the java launcher initialized the environment properties.
+ */
+
+import com.sun.jna.Native;
+import com.sun.jna.win32.StdCallLibrary;
+import com.sun.jna.win32.W32APIOptions;
+
+// set the variables in the following map
+def vars = ['testvar1':'testval1', 'testvar2':'testval2']
+
+println "setting environment variables"
+
+
+public interface Kernel32 extends StdCallLibrary 
+{
+	Kernel32 INSTANCE = (Kernel32) Native.loadLibrary("kernel32", Kernel32.class, W32APIOptions.UNICODE_OPTIONS);
+
+	boolean SetEnvironmentVariable(String lpName, String lpValue);
+}
+
+vars.each
+{
+	var = it.key
+	value = it.value
+	println "setting $var = $value"
+	Kernel32.INSTANCE.SetEnvironmentVariable(var, value)
+}
+
+println "done setting environment variables"
+

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/097d43c4/kerby-dist/kdc-dist/scripts/snmpTrap.gv
----------------------------------------------------------------------
diff --git a/kerby-dist/kdc-dist/scripts/snmpTrap.gv b/kerby-dist/kdc-dist/scripts/snmpTrap.gv
new file mode 100644
index 0000000..3978168
--- /dev/null
+++ b/kerby-dist/kdc-dist/scripts/snmpTrap.gv
@@ -0,0 +1,56 @@
+/*
+ * Script for sending SNMP traps
+ * 
+ * arguments:
+ * - ip address of the NMS
+ * - id the OID of the trap is: 1.3.6.1.2.1.1.1.id
+ * - message of the trap
+ * 
+ * required libs:
+ * - snmp4j
+ * 
+ * Example Configuration:
+ * 
+ * wrapper.filter.script = scripts/snmpTrap.gv
+ * wrapper.filter.script.args = 192.168.0.1, 1, out of memory exception 
+ */
+
+import java.io.IOException;
+
+import org.snmp4j.*
+import org.snmp4j.smi.*
+import org.snmp4j.transport.*
+
+if (this.args == null || this.args.length != 3)
+{
+	logger.info("error in script snmpTrap.gv missing arguments. check configuration")
+	return;
+}
+
+
+nmsIp = this.args[0];
+id = this.args[1];
+msg = this.args[2];
+
+target = new CommunityTarget();
+port = 162;
+targetAddress = GenericAddress.parse("udp:"+nmsIp+"/"+port);
+target.setAddress(targetAddress);
+target.setTimeout(5000);
+target.setRetries(1);
+target.setCommunity(new OctetString("Public"));
+transport = new DefaultUdpTransportMapping();
+snmp = new Snmp(transport);
+v = new OctetString(msg);
+oid = new OID([1, 3, 6, 1, 2, 1, 1, 1, id] as int[]);
+vb = new VariableBinding(oid, v);
+p = new PDUv1();
+p.add(vb);
+snmp.trap(p, target);
+
+logger.info("sent trap to nmsIp: "+ id + " "+msg)
+
+
+
+
+

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/097d43c4/kerby-dist/kdc-dist/scripts/threadDump.gv
----------------------------------------------------------------------
diff --git a/kerby-dist/kdc-dist/scripts/threadDump.gv b/kerby-dist/kdc-dist/scripts/threadDump.gv
new file mode 100644
index 0000000..00f2a93
--- /dev/null
+++ b/kerby-dist/kdc-dist/scripts/threadDump.gv
@@ -0,0 +1,13 @@
+/*
+ * Script for executing a thread dump.
+ * This can be set as a shutdown hook in the application 
+ *
+ * Arguments: 
+ * - none
+ * 
+ * Example Configuration:
+ * 
+ * wrapper.app.shutdown.script = threadDump.gv
+ */
+println "Thead Dump YAJSW shutdown hook"
+new org.rzo.yajsw.action.ThreadDumpImpl5().execute(null, null, System.out, null)
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/097d43c4/kerby-dist/kdc-dist/scripts/timeCondition.gv
----------------------------------------------------------------------
diff --git a/kerby-dist/kdc-dist/scripts/timeCondition.gv b/kerby-dist/kdc-dist/scripts/timeCondition.gv
new file mode 100644
index 0000000..95e4a67
--- /dev/null
+++ b/kerby-dist/kdc-dist/scripts/timeCondition.gv
@@ -0,0 +1,82 @@
+/*
+ * Condition Script to check that the application is running during an interval
+ * 
+ * Starts the process if it is not running
+ * Stops the process outside of the interval
+ * 
+ * Arguments: 
+ * - interval begin 
+ * - interval end
+ * 
+ * Time format <hh>[:<mm>[:<ss>]]
+ * Example: 25 -> 1:00 next day
+ * Example: 3, 1 -> 3:00 -> 1:00 next day
+ * 
+ * Configuration Example:
+ * 
+ * wrapper.condition.script=scripts/timeCondition.gv
+ * wrapper.condition.script.args=13,13:50
+ */
+
+import org.joda.time.*
+
+if (this.args == null || this.args.length != 2)
+{
+	println "error in script timeCondition.gv missing arguments. check configuration"
+	return;
+}
+
+
+getTime = { strTime ->
+			hours = 0
+			minutes = 0
+			seconds = 0
+			try
+			{
+				times = strTime.split(":")
+				hours = Integer.parseInt(times[0])
+				minutes = Integer.parseInt(times[1])
+				seconds = Integer.parseInt(times[2])
+			}
+			catch (Exception ex){}
+			now = new DateTime();
+			result = now.withTime(0, 0, 0, 0)
+			result = result.plusHours(hours)
+			result = result.plusMinutes(minutes)
+			result = result.plusSeconds(seconds)
+			return result
+        }
+
+createInterval = { ->
+	begin = getTime(args[0])
+	end   = getTime(args[1])
+	if (end.isBefore(begin))
+	   end = end.plusDays(1)
+	interval = new Interval(begin, end);
+	return interval;
+	
+}
+
+getInterval = { ->
+// on first call intervall is not bound 
+		if (callCount == 0 || interval.isAfterNow())
+			{
+				return createInterval()
+			}
+			else
+				return interval
+}
+
+
+processState = process.getStringState()
+
+if (getInterval().containsNow() && "IDLE".equals(processState))
+{
+	println "starting process"
+	process.start();
+}
+else if (!getInterval().containsNow() && !"IDLE".equals(processState))
+{
+	println "stopping process"
+	process.stop();
+}

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/097d43c4/kerby-dist/kdc-dist/scripts/trayColor.gv
----------------------------------------------------------------------
diff --git a/kerby-dist/kdc-dist/scripts/trayColor.gv b/kerby-dist/kdc-dist/scripts/trayColor.gv
new file mode 100644
index 0000000..1a25d60
--- /dev/null
+++ b/kerby-dist/kdc-dist/scripts/trayColor.gv
@@ -0,0 +1,48 @@
+/*
+ * Script for changing the status color on the system tray icon.
+ * 
+ * Arguments: 
+ * - color [RED|YELLOW|GREEN|BLUE|BLACK|CYAN|GRAY|MAGENTA|ORANGE|PINK|NULL]
+ * 
+ * Example Configuration:
+ * 
+ * wrapper.filter.trigger.nok.tray=not OK
+ * wrapper.filter.script.nok.tray=scripts/trayColor.gv
+ * wrapper.filter.script.nok.tray.args=RED
+ * wrapper.filter.trigger.ok.tray=OK
+ * wrapper.filter.script.ok.tray=scripts/trayColor.gv
+ * wrapper.filter.script.ok.tray.args=NULL
+ */
+ 
+ import java.awt.Color
+ 
+if (this.args == null || this.args.length != 1)
+{
+	println "error in script trayMessage.gv missing arguments. check configuration"
+	return;
+}
+
+color = null;
+ if (args[0].equals('RED'))
+ 		color = Color.RED
+else  if (args[0].equals('NULL'))
+ 		color = null
+else if (args[0].equals('GREEN'))
+ 		color = Color.GREEN
+else  if (args[0].equals('BLUE'))
+ 		color = Color.BLUE
+else  if (args[0].equals('BLACK'))
+ 		color = Color.BLACK
+else  if (args[0].equals('CYAN'))
+ 		color = Color.CYAN
+else  if (args[0].equals('GRAY'))
+ 		color = Color.GRAY
+else  if (args[0].equals('MAGENTA'))
+ 		color = Color.MAGENTA
+else  if (args[0].equals('ORANGE'))
+ 		color = Color.ORANGE
+else  if (args[0].equals('PINK'))
+ 		color = Color.PINK
+ 		
+   
+ process.getTrayIcon().setUserColor(color)
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/097d43c4/kerby-dist/kdc-dist/scripts/trayMessage.gv
----------------------------------------------------------------------
diff --git a/kerby-dist/kdc-dist/scripts/trayMessage.gv b/kerby-dist/kdc-dist/scripts/trayMessage.gv
new file mode 100644
index 0000000..808f4be
--- /dev/null
+++ b/kerby-dist/kdc-dist/scripts/trayMessage.gv
@@ -0,0 +1,29 @@
+/*
+ * Script for displaying a system tray message.
+ * 
+ * Arguments: 
+ * - toMail
+ * - subject
+ * - message
+ * 
+ * Example Configuration:
+ * 
+ * wrapper.filter.trigger.exception.tray=Exception
+ * wrapper.filter.script.exception.tray=scripts/trayMessage.gv
+ * wrapper.filter.script.exception.tray.args=Exception
+ */
+
+if (this.args == null || this.args.length != 1)
+{
+	println "error in script trayMessage.gv: missing arguments. check configuration"
+	return;
+}
+
+if (process == null || process.getTrayIcon() == null)
+{
+	println "error in script trayMessage.gv: no process or process not configured for tray icon"
+	return; 
+}
+
+ 
+ process.getTrayIcon().error(this.args[0], "$line")
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/097d43c4/kerby-dist/kdc-dist/scripts/vfsCommandCondition.gv
----------------------------------------------------------------------
diff --git a/kerby-dist/kdc-dist/scripts/vfsCommandCondition.gv b/kerby-dist/kdc-dist/scripts/vfsCommandCondition.gv
new file mode 100644
index 0000000..248f347
--- /dev/null
+++ b/kerby-dist/kdc-dist/scripts/vfsCommandCondition.gv
@@ -0,0 +1,99 @@
+/*
+ * Condition Script for implementing the wrapper.commandfile option
+ * Command file can be any VFS supported text file.
+ * This allows for remote control of a server farm.
+ *
+ * On first call the application is started
+ * With each call the script checks for update of the command file
+ * This is a text file with one command per line
+ * All commands in the file are executed
+ * The following commands are supported:
+ * 
+ * START 	: start the application if it is not running
+ * STOP  	: stop the applicaiton if it is running
+ * RESTART 	: restart the application if it is running
+ * DUMP  	: request a thread dump
+ * SHUTDOWN : stop the wrapper and the application
+ * STATE <file> : writes the current state of the application to the given file on the local hd
+ * 
+ * Arguments: 
+ * - fileName
+ * 
+ * Example Configuration:
+ * 
+ * wrapper.condition.script=scripts/vfsCommandCondition.gv 
+ * wrapper.condition.script.args=http://localhost/cmd.txt 
+ * wrapper.condition.cycle=1 
+ */
+ 
+import org.apache.commons.vfs2.VFS
+import org.apache.commons.vfs2.FileObject;
+
+// on first call file is bound
+// set the file and start the process
+if (callCount == 0)
+{
+	process.start()
+	
+	file = VFS.getManager().resolveFile(args[0]) 
+	lastmodified = 0 
+	if (file != null && file.exists()) 
+		lastmodified = file.getContent().getLastModifiedTime() 
+
+}
+
+
+// execute a command
+doCommand = { cmd ->
+	logger.info("executing file command "+cmd);
+	if ("START".equals(cmd))
+		process.start();
+	else if ("STOP".equals(cmd))
+		process.stop();
+	else if ("RESTART".equals(cmd))
+		process.restart();
+	else if ("DUMP".equals(cmd))
+		process.threadDump();
+	else if ("SHUTDOWN".equals(cmd))
+	{
+		process.stop();
+		shutdown = true;
+	}
+	else if (cmd.startsWith("STATE "))
+	{
+		String fName = cmd.substring(6)
+		writer = new File(fName).newWriter(false) // no append
+		writer.write(process.getStringState())
+		writer.close()
+	}
+	else
+		logger.info("unknown command");
+}
+
+	VFS.getManager().getFilesCache().close()
+	file = VFS.getManager().resolveFile(args[0]) 
+	
+if (file != null && file.exists() && lastmodified < file.getContent().getLastModifiedTime())
+// do the file
+try
+{
+	lastmodified = file.getContent().getLastModifiedTime() 
+	shutdown = false;
+	logger.info("new command file found " + file)
+	instream = new BufferedReader(new InputStreamReader(file.getContent().getInputStream()))
+	for (s = instream.readLine(); s != null; s = instream.readLine())
+	  doCommand(s)
+	instream.close()
+	
+	if (shutdown)
+	{
+		Thread.sleep(5000)
+		Runtime.getRuntime().halt(0);
+	}
+}
+catch (Exception ex)
+{
+	logger.info("Error executing command file "+ex.getMessage())
+	if (instream != null)
+	  instream.close()
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/097d43c4/kerby-dist/kdc-dist/scripts/wso2/wso2_shutdown.gv
----------------------------------------------------------------------
diff --git a/kerby-dist/kdc-dist/scripts/wso2/wso2_shutdown.gv b/kerby-dist/kdc-dist/scripts/wso2/wso2_shutdown.gv
new file mode 100644
index 0000000..89af56a
--- /dev/null
+++ b/kerby-dist/kdc-dist/scripts/wso2/wso2_shutdown.gv
@@ -0,0 +1,13 @@
+import javax.management.*
+
+servers = MBeanServerFactory.findMBeanServer(null)
+beanName = "org.wso2.carbon:type=ServerAdmin"
+println 'executing wso2 shutdown script'
+servers.each(){
+	try{
+		new GroovyMBean(it, beanName).shutdownGracefully(); 
+		println 'shutdownGracefully invoked, waiting for wso2 shutdown'; 
+		Thread.sleep(20000); 
+		return;
+		} 
+		catch (Exception ex){ex.printStackTrace()}}

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/097d43c4/kerby-dist/pom.xml
----------------------------------------------------------------------
diff --git a/kerby-dist/pom.xml b/kerby-dist/pom.xml
new file mode 100644
index 0000000..df20508
--- /dev/null
+++ b/kerby-dist/pom.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License. See accompanying LICENSE file.
+-->
+<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xmlns="http://maven.apache.org/POM/4.0.0"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.apache.kerby</groupId>
+    <artifactId>kerby-all</artifactId>
+    <version>1.0-SNAPSHOT</version>
+  </parent>
+
+  <artifactId>kerby-dist</artifactId>
+  <name>Kerby KDC Distribution</name>
+  <description>Kerby KDC Distribution</description>
+  <packaging>pom</packaging>
+
+  <modules>
+    <module>kdc-dist</module>
+    <module>tool-dist</module>
+  </modules>
+
+</project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/097d43c4/kerby-dist/tool-dist/bin/kinit.sh
----------------------------------------------------------------------
diff --git a/kerby-dist/tool-dist/bin/kinit.sh b/kerby-dist/tool-dist/bin/kinit.sh
new file mode 100644
index 0000000..c82b91c
--- /dev/null
+++ b/kerby-dist/tool-dist/bin/kinit.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+confdir=/etc/kerby/krb/conf
+java -jar ../kinit/kinit-1.0-SNAPSHOT-jar-with-dependencies.jar ${confdir} $@

http://git-wip-us.apache.org/repos/asf/directory-kerberos/blob/097d43c4/kerby-dist/tool-dist/pom.xml
----------------------------------------------------------------------
diff --git a/kerby-dist/tool-dist/pom.xml b/kerby-dist/tool-dist/pom.xml
new file mode 100644
index 0000000..d90e4d6
--- /dev/null
+++ b/kerby-dist/tool-dist/pom.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License. See accompanying LICENSE file.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <parent>
+    <groupId>org.apache.kerby</groupId>
+    <artifactId>kerby-dist</artifactId>
+    <version>1.0-SNAPSHOT</version>
+  </parent>
+
+  <artifactId>tool-dist</artifactId>
+  <name>Tool Dist</name>
+  <description>Tool Dist Project</description>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.kerby</groupId>
+      <artifactId>kerby-kerb</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+  </dependencies>
+
+</project>