Added: directory/daemon/trunk/plugin/src/main/java/org/apache/directory/daemon/installers/nsis/NsisInstallerCommand.java URL: http://svn.apache.org/viewvc/directory/daemon/trunk/plugin/src/main/java/org/apache/directory/daemon/installers/nsis/NsisInstallerCommand.java?view=auto&rev=564117 ============================================================================== --- directory/daemon/trunk/plugin/src/main/java/org/apache/directory/daemon/installers/nsis/NsisInstallerCommand.java (added) +++ directory/daemon/trunk/plugin/src/main/java/org/apache/directory/daemon/installers/nsis/NsisInstallerCommand.java Wed Aug 8 23:45:35 2007 @@ -0,0 +1,364 @@ +/* + * 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. + * + */ +package org.apache.directory.daemon.installers.nsis; + +import org.apache.directory.daemon.installers.MojoCommand; +import org.apache.directory.daemon.installers.ServiceInstallersMojo; +import org.apache.directory.daemon.installers.MojoHelperUtils; +import org.apache.maven.plugin.logging.Log; +import org.apache.maven.plugin.MojoFailureException; +import org.apache.maven.plugin.MojoExecutionException; +import org.apache.maven.artifact.Artifact; +import org.apache.tools.ant.taskdefs.Execute; +import org.apache.tools.ant.taskdefs.Touch; +import org.apache.tools.ant.Project; +import org.codehaus.plexus.util.Os; +import org.codehaus.plexus.util.FileUtils; + +import java.util.Properties; +import java.util.List; +import java.io.File; +import java.io.IOException; +import java.io.InputStream; +import java.net.URL; + +/** + * Nullsoft INstaller System (NSIS) Installer command for Windows installers + * + * @author Apache Directory Project + * @version $Rev: 434414 $ + */ +public class NsisInstallerCommand extends MojoCommand +{ + private final Properties filterProperties = new Properties( System.getProperties() ); + private final NsisTarget target; + private final File nsisConfigurationFile; + private final Log log; + + private File nsisCompiler; + + + public NsisInstallerCommand( ServiceInstallersMojo mymojo, NsisTarget target ) throws MojoFailureException + { + super( mymojo ); + this.target = target; + this.log = mymojo.getLog(); + File imagesDir = target.getLayout().getBaseDirectory().getParentFile(); + nsisConfigurationFile = new File( imagesDir, target.getId() + ".nsi" ); + initializeFiltering(); + } + + + public Properties getFilterProperties() + { + return filterProperties; + } + + + /** + * Performs the following: + *
    + *
  1. Bail if target is not for windows
  2. + *
  3. Filter and copy project supplied .nsi file into place if it has been specified and exists
  4. + *
  5. If no .nsi file exists filter and deposite into place bundled nsis template & copy wrapper executables
  6. + *
  7. Bail if we cannot find the nsis compiler executable
  8. + *
  9. Execute nsis compiler it on the .nsi file
  10. + *
+ */ + public void execute() throws MojoExecutionException, MojoFailureException + { + // ------------------------------------------------------------------- + // Step 1 & 4: do some error checking first for compiler and OS + // ------------------------------------------------------------------- + + if ( !target.getOsFamily().equals( "windows" ) ) + { + throw new MojoFailureException( "NSIS installer can only be targeted for windows platforms!" ); + } + + // @todo this should really be a parameter taken from the user's settings + // because the compiler may be installed in different places and is specific + if ( !target.getNsisCompiler().exists() ) + { + throw new MojoFailureException( "Cannot find NSIS compiler: " + target.getNsisCompiler() ); + } + else + { + this.nsisCompiler = target.getNsisCompiler(); + } + + // ------------------------------------------------------------------- + // Step 2 & 3: copy nsis file and filter + // ------------------------------------------------------------------- + + // check first to see if the default install.iss file is present in src/main/installers + File projectNsisFile = new File( mymojo.getSourceDirectory(), "install.nsi" ); + if ( target.getNsisConfigurationFile() != null && target.getNsisConfigurationFile().exists() ) + { + try + { + MojoHelperUtils.copyAsciiFile( mymojo, filterProperties, target.getNsisConfigurationFile(), + nsisConfigurationFile, true ); + } + catch ( IOException e ) + { + throw new MojoFailureException( "Failed to filter and copy project provided " + + target.getNsisConfigurationFile() + " to " + nsisConfigurationFile); + } + } + else if ( projectNsisFile.exists() ) + { + try + { + MojoHelperUtils.copyAsciiFile( mymojo, filterProperties, projectNsisFile, nsisConfigurationFile, true ); + } + catch ( IOException e ) + { + throw new MojoFailureException( "Failed to filter and copy project provided " + projectNsisFile + + " to " + nsisConfigurationFile); + } + } + else + { + InputStream in = getClass().getResourceAsStream( "install.iss" ); + URL resource = getClass().getResource( "install.iss" ); + try + { + MojoHelperUtils.copyAsciiFile( mymojo, filterProperties, in, nsisConfigurationFile, true ); + } + catch ( IOException e ) + { + throw new MojoFailureException( "Failed to filter and copy bundled " + resource + " to " + + nsisConfigurationFile); + } + } + + // ------------------------------------------------------------------- + // 3: copy native files + // ------------------------------------------------------------------- + + // now copy over the Prunsrv and Prunmgr executables renaming them to the mymojo.getApplicationName() + w for mgr + if ( target.getOsFamily().equals( "windows" )) + { + File executableTarget = new File( target.getLayout().getBinDirectory(), + target.getApplication().getName() + ".exe" ); + File override = new File( mymojo.getSourceDirectory(), target.getWrapperExecutablePath() ); + if ( override.exists() ) + { + mymojo.getLog().info( "Using native launcher supplied by project: " + override.getAbsolutePath() ); + try + { + FileUtils.copyFile( override, executableTarget ); + } + catch ( IOException e ) + { + throw new MojoFailureException( "Failed to copy project supplied native launcher executable override " + + override.getAbsolutePath() + " into position " + executableTarget.getAbsolutePath() ); + } + } + else + { + try + { + MojoHelperUtils.copyBinaryFile( getClass().getResourceAsStream( "../wrapper/bin/wrapper-windows-x86-32.exe" ), executableTarget ); + MojoHelperUtils.copyBinaryFile( getClass().getResourceAsStream( "../wrapper/lib/wrapper-windows-x86-32.dll" ), + new File( target.getLayout().getLibDirectory(), "wrapper.dll" ) + ); + } + catch ( IOException e ) + { + throw new MojoFailureException( "Failed to copy native launcher executable file " + + getClass().getResource( "../wrapper/bin/wrapper-windows-x86-32.exe" ) + " into position " + executableTarget.getAbsolutePath() ); + } + } + + } + + processPackagedFiles( target, target.getPackagedFiles() ); + + Execute task = new Execute(); + System.out.println( "nsisCompiler = " + nsisCompiler); + System.out.println( "nsisConfigurationFile = " + nsisConfigurationFile); + String[] cmd = new String[] + { nsisCompiler.getAbsolutePath(), nsisConfigurationFile.getAbsolutePath() }; + task.setCommandline( cmd ); + task.setSpawn( true ); + task.setWorkingDirectory( target.getLayout().getBaseDirectory() ); + try + { + task.execute(); + } + catch ( IOException e ) + { + throw new MojoFailureException( "Failed while trying to execute " + nsisCompiler.getAbsolutePath() + ": " + + e.getMessage() ); + } + + if ( task.getExitValue() != 0 ) + { + throw new MojoFailureException( nsisCompiler.getAbsolutePath() + + " execution resulted in a non-zero exit value: " + task.getExitValue() ); + } + } + + + private void initializeFiltering() throws MojoFailureException + { + filterProperties.putAll( mymojo.getProject().getProperties() ); + filterProperties.put( "app", target.getApplication().getName() ); + + char firstChar = target.getApplication().getName().charAt( 0 ); + firstChar = Character.toUpperCase( firstChar ); + filterProperties.put( "app.displayname", firstChar + target.getApplication().getName().substring( 1 ) ); + + if ( target.getApplication().getVersion() != null ) + { + filterProperties.put( "app.version", target.getApplication().getVersion() ); + } + else + { + filterProperties.put( "app.version", "1.0" ); + } + + // ------------------------------------------------------------------- + // WARNING: hard code values just to for testing + // ------------------------------------------------------------------- + + // @todo use the list of committers and add multiple authors to nsis + if ( target.getApplication().getAuthors().isEmpty() ) + { + filterProperties.put( "app.author", "Apache Software Foundation" ); + } + else + { + filterProperties.put( "app.author", target.getApplication().getAuthors().get( 0 ) ); + } + + if ( target.getFinalName() != null ) + { + filterProperties.put( "app.final.name", target.getFinalName() ); + } + else + { + String finalName = target.getApplication().getName() + "-" + target.getApplication().getVersion() + + "-win32-setup.exe"; + filterProperties.put( "app.final.name", finalName ); + } + + filterProperties.put( "app.email", target.getApplication().getEmail() ); + filterProperties.put( "app.url", target.getApplication().getUrl() ); + filterProperties.put( "app.java.version", target.getApplication().getMinimumJavaVersion() ); + filterProperties.put( "app.license", target.getLayout().getLicenseFile().getPath() ); + filterProperties.put( "app.license.name", target.getLayout().getLicenseFile().getName() ); + filterProperties.put( "app.company.name", target.getCompanyName() ); + filterProperties.put( "app.description", target.getApplication().getDescription() ); + filterProperties.put( "app.copyright.year", target.getCopyrightYear() ); + + if ( !target.getLayout().getReadmeFile().exists() ) + { + touchFile( target.getLayout().getReadmeFile() ); + } + filterProperties.put( "app.readme", target.getLayout().getReadmeFile().getPath() ); + filterProperties.put( "app.readme.name", target.getLayout().getReadmeFile().getName() ); + filterProperties.put( "app.icon", target.getLayout().getLogoIconFile().getPath() ); + filterProperties.put( "app.icon.name", target.getLayout().getLogoIconFile().getName() ); + filterProperties.put( "image.basedir", target.getLayout().getBaseDirectory().getPath() ); + filterProperties.put( "app.lib.jars", getApplicationLibraryJars() ); + filterProperties.put( "installer.output.directory", target.getLayout().getBaseDirectory().getParent() ); + + if ( target.getDocsDirectory() != null ) + { + filterProperties.put( "docs.directive", getDocsDirective() ); + } + else + { + filterProperties.put( "docs.directive", "" ); + } + + if ( target.getSourcesDirectory() != null ) + { + filterProperties.put( "sources.directive", getSourcesDirective() ); + } + else + { + filterProperties.put( "sources.directive", "" ); + } + + File noticeFile = new File( target.getLayout().getBaseDirectory(), "NOTICE.txt" ); + if ( noticeFile.exists() ) + { + filterProperties.put( "notice.file", "Source: {#SourceBase}\\NOTICE.txt; DestDir: " + + "{app}\\; Flags: ignoreversion recursesubdirs createallsubdirs" ); + } + else + { + filterProperties.put( "notice.file", "" ); + } + } + + + private String getSourcesDirective() + { + StringBuffer buf = new StringBuffer(); + buf.append( "Source: {#SourceBase}\\" ).append( target.getSourcesTargetPath() ); + buf.append( "\\*; DestDir: {app}\\" ).append( target.getSourcesTargetPath() ); + buf.append( "\\; Flags: ignoreversion recursesubdirs createallsubdirs" ); + return buf.toString(); + } + + + private String getDocsDirective() + { + StringBuffer buf = new StringBuffer(); + buf.append( "Source: {#SourceBase}\\" ).append( target.getDocsTargetPath() ); + buf.append( "\\*; DestDir: {app}\\" ).append( target.getDocsTargetPath() ); + buf.append( "\\; Flags: ignoreversion recursesubdirs createallsubdirs" ); + return buf.toString(); + } + + + private String getApplicationLibraryJars() throws MojoFailureException + { + StringBuffer buf = new StringBuffer(); + List artifacts = target.getLibArtifacts(); + + for ( int ii = 0; ii < artifacts.size(); ii++ ) + { + // "Source: {#SourceBase}\lib\${artifact.file.name}; DestDir: {app}; DestName: ${app.file.name}" + buf.append( "Source: {#SourceBase}\\lib\\" ); + File artifact = ( (Artifact) artifacts.get( ii ) ).getFile(); + buf.append( artifact.getName() ); + buf.append( "; DestDir: {app}\\lib; DestName: " ); + buf.append( artifact.getName() ); + buf.append( "\n" ); + } + + return buf.toString(); + } + + + static void touchFile( File file ) + { + Touch touch = new Touch(); + touch.setProject( new Project() ); + touch.setFile( file ); + touch.execute(); + } +} Added: directory/daemon/trunk/plugin/src/main/java/org/apache/directory/daemon/installers/nsis/NsisTarget.java URL: http://svn.apache.org/viewvc/directory/daemon/trunk/plugin/src/main/java/org/apache/directory/daemon/installers/nsis/NsisTarget.java?view=auto&rev=564117 ============================================================================== --- directory/daemon/trunk/plugin/src/main/java/org/apache/directory/daemon/installers/nsis/NsisTarget.java (added) +++ directory/daemon/trunk/plugin/src/main/java/org/apache/directory/daemon/installers/nsis/NsisTarget.java Wed Aug 8 23:45:35 2007 @@ -0,0 +1,84 @@ +/* + * 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. + * + */ +package org.apache.directory.daemon.installers.nsis; + +import org.apache.directory.daemon.installers.Target; + +import java.io.File; +import java.util.Calendar; + +/** + * A Nullsoft Installer System (NSIS) installer for the Windows platform + * + * @author Apache Directory Project + * @version $Rev: 434414 $ + */ +public class NsisTarget extends Target +{ + private String wrapperExecutablePath = "src/main/installers/wrapper/bin/wrapper-windows-x86-32.exe"; + private File nsisCompiler = new File( "/usr/local/share/nsis/makensis" ); + private File NsisConfigurationFile; + + + public NsisTarget() + { + Calendar cal = Calendar.getInstance(); + cal.setTimeInMillis( System.currentTimeMillis() ); + setCopyrightYear( String.valueOf( cal.get( Calendar.YEAR ) ) ); + } + + + public void setNsisCompiler( File nsisCompiler) + { + this.nsisCompiler = nsisCompiler; + } + + + public File getNsisCompiler() + { + return nsisCompiler; + } + + + public void setNsisConfigurationFile( File nsisConfigurationFile ) + { + this.NsisConfigurationFile = nsisConfigurationFile; + } + + + public File getNsisConfigurationFile() + { + return NsisConfigurationFile; + } + + + public void setWrapperExecutablePath( String wrapperExecutablePath) + { + this.wrapperExecutablePath = wrapperExecutablePath; + } + + + public String getWrapperExecutablePath() + { + return wrapperExecutablePath; + } + + +} Added: directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/bin/wrapper-linux-ppc-64 URL: http://svn.apache.org/viewvc/directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/bin/wrapper-linux-ppc-64?view=auto&rev=564117 ============================================================================== Binary file - no diff available. Propchange: directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/bin/wrapper-linux-ppc-64 ------------------------------------------------------------------------------ svn:executable = * Propchange: directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/bin/wrapper-linux-ppc-64 ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/bin/wrapper-linux-x86-32 URL: http://svn.apache.org/viewvc/directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/bin/wrapper-linux-x86-32?view=auto&rev=564117 ============================================================================== Binary file - no diff available. Propchange: directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/bin/wrapper-linux-x86-32 ------------------------------------------------------------------------------ svn:executable = * Propchange: directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/bin/wrapper-linux-x86-32 ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/bin/wrapper-linux-x86-64 URL: http://svn.apache.org/viewvc/directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/bin/wrapper-linux-x86-64?view=auto&rev=564117 ============================================================================== Binary file - no diff available. Propchange: directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/bin/wrapper-linux-x86-64 ------------------------------------------------------------------------------ svn:executable = * Propchange: directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/bin/wrapper-linux-x86-64 ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/bin/wrapper-macosx-ppc-32 URL: http://svn.apache.org/viewvc/directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/bin/wrapper-macosx-ppc-32?view=auto&rev=564117 ============================================================================== Binary file - no diff available. Propchange: directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/bin/wrapper-macosx-ppc-32 ------------------------------------------------------------------------------ svn:executable = * Propchange: directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/bin/wrapper-macosx-ppc-32 ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/bin/wrapper-macosx-universal-32 URL: http://svn.apache.org/viewvc/directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/bin/wrapper-macosx-universal-32?view=auto&rev=564117 ============================================================================== Binary file - no diff available. Propchange: directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/bin/wrapper-macosx-universal-32 ------------------------------------------------------------------------------ svn:executable = * Propchange: directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/bin/wrapper-macosx-universal-32 ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/bin/wrapper-solaris-sparc-32 URL: http://svn.apache.org/viewvc/directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/bin/wrapper-solaris-sparc-32?view=auto&rev=564117 ============================================================================== Binary file - no diff available. Propchange: directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/bin/wrapper-solaris-sparc-32 ------------------------------------------------------------------------------ svn:executable = * Propchange: directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/bin/wrapper-solaris-sparc-32 ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/bin/wrapper-solaris-sparc-64 URL: http://svn.apache.org/viewvc/directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/bin/wrapper-solaris-sparc-64?view=auto&rev=564117 ============================================================================== Binary file - no diff available. Propchange: directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/bin/wrapper-solaris-sparc-64 ------------------------------------------------------------------------------ svn:executable = * Propchange: directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/bin/wrapper-solaris-sparc-64 ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/bin/wrapper-solaris-x86-32 URL: http://svn.apache.org/viewvc/directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/bin/wrapper-solaris-x86-32?view=auto&rev=564117 ============================================================================== Binary file - no diff available. Propchange: directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/bin/wrapper-solaris-x86-32 ------------------------------------------------------------------------------ svn:executable = * Propchange: directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/bin/wrapper-solaris-x86-32 ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/bin/wrapper-windows-x86-32.exe URL: http://svn.apache.org/viewvc/directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/bin/wrapper-windows-x86-32.exe?view=auto&rev=564117 ============================================================================== Binary file - no diff available. Propchange: directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/bin/wrapper-windows-x86-32.exe ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/conf/apacheds.conf URL: http://svn.apache.org/viewvc/directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/conf/apacheds.conf?view=auto&rev=564117 ============================================================================== --- directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/conf/apacheds.conf (added) +++ directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/conf/apacheds.conf Wed Aug 8 23:45:35 2007 @@ -0,0 +1,2 @@ +bootstrap.start.class=org.apache.ldap.server.Service +bootstrap.stop.class=org.apache.ldap.server.Service Added: directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/conf/wrapper.conf URL: http://svn.apache.org/viewvc/directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/conf/wrapper.conf?view=auto&rev=564117 ============================================================================== --- directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/conf/wrapper.conf (added) +++ directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/conf/wrapper.conf Wed Aug 8 23:45:35 2007 @@ -0,0 +1,100 @@ +#******************************************************************** +# TestWrapper Properties +# +# NOTE - Please use src/conf/apacheds.conf.in as a template for your +# own application rather than the values used for the +# TestWrapper sample. +#******************************************************************** +# Java Application +wrapper.java.command=%JAVA_HOME%/bin/java + +# Java Main class. This class must implement the WrapperListener interface +# or guarantee that the WrapperManager class is initialized. Helper +# classes are provided to do this for you. See the Integration section +# of the documentation for details. +#wrapper.java.mainclass=org.tanukisoftware.wrapper.WrapperSimpleApp +wrapper.java.mainclass=org.apache.directory.daemon.TanukiBootstrapper + +wrapper.java.classpath.1=%APACHEDS_HOME%/bin/bootstrapper.jar +wrapper.java.classpath.2=%APACHEDS_HOME%/lib/wrapper.jar + +# Java Library Path (location of Wrapper.DLL or libwrapper.so) +wrapper.java.library.path.1=%APACHEDS_HOME%/lib + +# Java Additional Parameters +#wrapper.java.additional.1= + +# Initial Java Heap Size (in MB) +wrapper.java.initmemory=384 + +# Maximum Java Heap Size (in MB) +wrapper.java.maxmemory=384 + +# Application parameters. Add parameters as needed starting from 1 +wrapper.app.parameter.1=org.apache.directory.daemon.MainBootstrapper +wrapper.app.parameter.2=%APACHEDS_HOME% +wrapper.app.parameter.3=start + +#******************************************************************** +# Wrapper Logging Properties +#******************************************************************** +# Format of output for the console. (See docs for formats) +wrapper.console.format=PM + +# Log Level for console output. (See docs for log levels) +wrapper.console.loglevel=INFO + +# Log file to use for wrapper output logging. +wrapper.logfile=%APACHEDS_HOME%/var/log/wrapper.log + +# Format of output for the log file. (See docs for formats) +wrapper.logfile.format=LPTM + +# Log Level for log file output. (See docs for log levels) +wrapper.logfile.loglevel=INFO + +# Maximum size that the log file will be allowed to grow to before +# the log is rolled. Size is specified in bytes. The default value +# of 0, disables log rolling. May abbreviate with the 'k' (kb) or +# 'm' (mb) suffix. For example: 10m = 10 megabytes. +wrapper.logfile.maxsize=0 + +# Maximum number of rolled log files which will be allowed before old +# files are deleted. The default value of 0 implies no limit. +wrapper.logfile.maxfiles=0 + +# Log Level for sys/event log output. (See docs for log levels) +wrapper.syslog.loglevel=NONE + +#******************************************************************** +# Wrapper Windows Properties +#******************************************************************** +# Title to use when running as a console +wrapper.console.title=Test Wrapper Sample Application + +#******************************************************************** +# Wrapper Windows NT/2000/XP Service Properties +#******************************************************************** +# WARNING - Do not modify any of these properties when an application +# using this configuration file has been installed as a service. +# Please uninstall the service before modifying this section. The +# service can then be reinstalled. + +# Name of the service +wrapper.ntservice.name=apacheds + +# Display name of the service +wrapper.ntservice.displayname=Apache Directory Server + +# Description of the service +wrapper.ntservice.description=Test Wrapper Sample Application Description + +# Service dependencies. Add dependencies as needed starting from 1 +wrapper.ntservice.dependency.1= + +# Mode in which the service is installed. AUTO_START or DEMAND_START +wrapper.ntservice.starttype=AUTO_START + +# Allow the service to interact with the desktop. +wrapper.ntservice.interactive=false + Added: directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/lib/libwrapper-linux-ppc-64.so URL: http://svn.apache.org/viewvc/directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/lib/libwrapper-linux-ppc-64.so?view=auto&rev=564117 ============================================================================== Binary file - no diff available. Propchange: directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/lib/libwrapper-linux-ppc-64.so ------------------------------------------------------------------------------ svn:executable = * Propchange: directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/lib/libwrapper-linux-ppc-64.so ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/lib/libwrapper-linux-x86-32.so URL: http://svn.apache.org/viewvc/directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/lib/libwrapper-linux-x86-32.so?view=auto&rev=564117 ============================================================================== Binary file - no diff available. Propchange: directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/lib/libwrapper-linux-x86-32.so ------------------------------------------------------------------------------ svn:executable = * Propchange: directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/lib/libwrapper-linux-x86-32.so ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/lib/libwrapper-linux-x86-64.so URL: http://svn.apache.org/viewvc/directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/lib/libwrapper-linux-x86-64.so?view=auto&rev=564117 ============================================================================== Binary file - no diff available. Propchange: directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/lib/libwrapper-linux-x86-64.so ------------------------------------------------------------------------------ svn:executable = * Propchange: directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/lib/libwrapper-linux-x86-64.so ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/lib/libwrapper-macosx-ppc-32.jnilib URL: http://svn.apache.org/viewvc/directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/lib/libwrapper-macosx-ppc-32.jnilib?view=auto&rev=564117 ============================================================================== Binary file - no diff available. Propchange: directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/lib/libwrapper-macosx-ppc-32.jnilib ------------------------------------------------------------------------------ svn:executable = * Propchange: directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/lib/libwrapper-macosx-ppc-32.jnilib ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/lib/libwrapper-macosx-universal-32.jnilib URL: http://svn.apache.org/viewvc/directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/lib/libwrapper-macosx-universal-32.jnilib?view=auto&rev=564117 ============================================================================== Binary file - no diff available. Propchange: directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/lib/libwrapper-macosx-universal-32.jnilib ------------------------------------------------------------------------------ svn:executable = * Propchange: directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/lib/libwrapper-macosx-universal-32.jnilib ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/lib/libwrapper-solaris-sparc-32.so URL: http://svn.apache.org/viewvc/directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/lib/libwrapper-solaris-sparc-32.so?view=auto&rev=564117 ============================================================================== Binary file - no diff available. Propchange: directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/lib/libwrapper-solaris-sparc-32.so ------------------------------------------------------------------------------ svn:executable = * Propchange: directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/lib/libwrapper-solaris-sparc-32.so ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/lib/libwrapper-solaris-sparc-64.so URL: http://svn.apache.org/viewvc/directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/lib/libwrapper-solaris-sparc-64.so?view=auto&rev=564117 ============================================================================== Binary file - no diff available. Propchange: directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/lib/libwrapper-solaris-sparc-64.so ------------------------------------------------------------------------------ svn:executable = * Propchange: directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/lib/libwrapper-solaris-sparc-64.so ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/lib/libwrapper-solaris-x86-32.so URL: http://svn.apache.org/viewvc/directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/lib/libwrapper-solaris-x86-32.so?view=auto&rev=564117 ============================================================================== Binary file - no diff available. Propchange: directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/lib/libwrapper-solaris-x86-32.so ------------------------------------------------------------------------------ svn:executable = * Propchange: directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/lib/libwrapper-solaris-x86-32.so ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/lib/wrapper-windows-x86-32.dll URL: http://svn.apache.org/viewvc/directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/lib/wrapper-windows-x86-32.dll?view=auto&rev=564117 ============================================================================== Binary file - no diff available. Propchange: directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/lib/wrapper-windows-x86-32.dll ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/lib/wrapper.jar URL: http://svn.apache.org/viewvc/directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/lib/wrapper.jar?view=auto&rev=564117 ============================================================================== Binary file - no diff available. Propchange: directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/lib/wrapper.jar ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/lib/wrappertest.jar URL: http://svn.apache.org/viewvc/directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/lib/wrappertest.jar?view=auto&rev=564117 ============================================================================== Binary file - no diff available. Propchange: directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/lib/wrappertest.jar ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/src/App.bat.in URL: http://svn.apache.org/viewvc/directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/src/App.bat.in?view=auto&rev=564117 ============================================================================== --- directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/src/App.bat.in (added) +++ directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/src/App.bat.in Wed Aug 8 23:45:35 2007 @@ -0,0 +1,55 @@ +@echo off +setlocal + +rem Copyright (c) 1999, 2006 Tanuki Software Inc. +rem +rem Java Service Wrapper general startup script +rem + +rem +rem Resolve the real path of the wrapper.exe +rem For non NT systems, the _REALPATH and _WRAPPER_CONF values +rem can be hard-coded below and the following test removed. +rem +if "%OS%"=="Windows_NT" goto nt +echo This script only works with NT-based versions of Windows. +goto :eof + +:nt +rem +rem Find the application home. +rem +rem %~dp0 is location of current script under NT +set _REALPATH=%~dp0 + +rem Decide on the wrapper binary. +set _WRAPPER_BASE=wrapper +set _WRAPPER_EXE=%_REALPATH%%_WRAPPER_BASE%-windows-x86-32.exe +if exist "%_WRAPPER_EXE%" goto conf +set _WRAPPER_EXE=%_REALPATH%%_WRAPPER_BASE%-windows-x86-64.exe +if exist "%_WRAPPER_EXE%" goto conf +set _WRAPPER_EXE=%_REALPATH%%_WRAPPER_BASE%.exe +if exist "%_WRAPPER_EXE%" goto conf +echo Unable to locate a Wrapper executable using any of the following names: +echo %_REALPATH%%_WRAPPER_BASE%-windows-x86-32.exe +echo %_REALPATH%%_WRAPPER_BASE%-windows-x86-64.exe +echo %_REALPATH%%_WRAPPER_BASE%.exe +pause +goto :eof + +rem +rem Find the apacheds.conf +rem +:conf +set _WRAPPER_CONF="%~f1" +if not %_WRAPPER_CONF%=="" goto startup +set _WRAPPER_CONF="%_REALPATH%..\conf\apacheds.conf" + +rem +rem Start the Wrapper +rem +:startup +"%_WRAPPER_EXE%" -c %_WRAPPER_CONF% +if not errorlevel 1 goto :eof +pause + Added: directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/src/AppCommand.bat.in URL: http://svn.apache.org/viewvc/directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/src/AppCommand.bat.in?view=auto&rev=564117 ============================================================================== --- directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/src/AppCommand.bat.in (added) +++ directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/src/AppCommand.bat.in Wed Aug 8 23:45:35 2007 @@ -0,0 +1,97 @@ +@echo off +setlocal + +rem Copyright (c) 1999, 2006 Tanuki Software Inc. +rem +rem Java Service Wrapper command based script +rem + +if "%OS%"=="Windows_NT" goto nt +echo This script only works with NT-based versions of Windows. +goto :eof + +:nt +rem +rem Find the application home. +rem +rem %~dp0 is location of current script under NT +set _REALPATH=%~dp0 + +rem Decide on the wrapper binary. +set _WRAPPER_BASE=wrapper +set _WRAPPER_EXE=%_REALPATH%%_WRAPPER_BASE%-windows-x86-32.exe +if exist "%_WRAPPER_EXE%" goto validate +set _WRAPPER_EXE=%_REALPATH%%_WRAPPER_BASE%-windows-x86-64.exe +if exist "%_WRAPPER_EXE%" goto validate +set _WRAPPER_EXE=%_REALPATH%%_WRAPPER_BASE%.exe +if exist "%_WRAPPER_EXE%" goto validate +echo Unable to locate a Wrapper executable using any of the following names: +echo %_REALPATH%%_WRAPPER_BASE%-windows-x86-32.exe +echo %_REALPATH%%_WRAPPER_BASE%-windows-x86-64.exe +echo %_REALPATH%%_WRAPPER_BASE%.exe +pause +goto :eof + +:validate +rem Find the requested command. +for /F %%v in ('echo %1^|findstr "^console$ ^start$ ^pause$ ^resume$ ^stop$ ^restart$ ^install$ ^remove"') do call :exec set COMMAND=%%v + +if "%COMMAND%" == "" ( + echo Usage: %0 { console : start : pause : resume : stop : restart : install : remove } + pause + goto :eof +) else ( + shift +) + +rem +rem Find the apacheds.conf +rem +:conf +set _WRAPPER_CONF="%_REALPATH%..\conf\apacheds.conf" + +rem +rem Run the application. +rem At runtime, the current directory will be that of wrapper.exe +rem +call :%COMMAND% +if errorlevel 1 pause +goto :eof + +:console +"%_WRAPPER_EXE%" -c %_WRAPPER_CONF% +goto :eof + +:start +"%_WRAPPER_EXE%" -t %_WRAPPER_CONF% +goto :eof + +:pause +"%_WRAPPER_EXE%" -a %_WRAPPER_CONF% +goto :eof + +:resume +"%_WRAPPER_EXE%" -e %_WRAPPER_CONF% +goto :eof + +:stop +"%_WRAPPER_EXE%" -p %_WRAPPER_CONF% +goto :eof + +:install +"%_WRAPPER_EXE%" -i %_WRAPPER_CONF% +goto :eof + +:remove +"%_WRAPPER_EXE%" -r %_WRAPPER_CONF% +goto :eof + +:restart +call :stop +call :start +goto :eof + +:exec +%* +goto :eof + Added: directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/src/AppNoWrapper.bat.in URL: http://svn.apache.org/viewvc/directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/src/AppNoWrapper.bat.in?view=auto&rev=564117 ============================================================================== --- directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/src/AppNoWrapper.bat.in (added) +++ directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/src/AppNoWrapper.bat.in Wed Aug 8 23:45:35 2007 @@ -0,0 +1,12 @@ +rem Copyright (c) 1999, 2006 Tanuki Software Inc. +rem +rem This script is an example of how to run your application without the Wrapper, but with the +rem Wrapper helper classes. You can obtain the actual command generated by the wrapper for +rem your application by running the Wrapper with the wrapper.java.command.loglevel=INFO +rem property set. +rem +rem The wrapper.key property MUST be removed from the resulting command or it will fail to +rem run correctly. +rem +java -Xms16m -Xmx64m -Djava.library.path="../lib" -Djava.class.path="../lib/wrapper.jar;../lib/wrappertest.jar" -Dwrapper.native_library="wrapper" -Dwrapper.debug="TRUE" org.tanukisoftware.wrapper.test.Main + Added: directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/src/InstallApp-NT.bat.in URL: http://svn.apache.org/viewvc/directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/src/InstallApp-NT.bat.in?view=auto&rev=564117 ============================================================================== --- directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/src/InstallApp-NT.bat.in (added) +++ directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/src/InstallApp-NT.bat.in Wed Aug 8 23:45:35 2007 @@ -0,0 +1,50 @@ +@echo off +setlocal + +rem Copyright (c) 1999, 2006 Tanuki Software Inc. +rem +rem Java Service Wrapper general NT service install script +rem + +if "%OS%"=="Windows_NT" goto nt +echo This script only works with NT-based versions of Windows. +goto :eof + +:nt +rem +rem Find the application home. +rem +rem %~dp0 is location of current script under NT +set _REALPATH=%~dp0 + +rem Decide on the wrapper binary. +set _WRAPPER_BASE=wrapper +set _WRAPPER_EXE=%_REALPATH%%_WRAPPER_BASE%-windows-x86-32.exe +if exist "%_WRAPPER_EXE%" goto conf +set _WRAPPER_EXE=%_REALPATH%%_WRAPPER_BASE%-windows-x86-64.exe +if exist "%_WRAPPER_EXE%" goto conf +set _WRAPPER_EXE=%_REALPATH%%_WRAPPER_BASE%.exe +if exist "%_WRAPPER_EXE%" goto conf +echo Unable to locate a Wrapper executable using any of the following names: +echo %_REALPATH%%_WRAPPER_BASE%-windows-x86-32.exe +echo %_REALPATH%%_WRAPPER_BASE%-windows-x86-64.exe +echo %_REALPATH%%_WRAPPER_BASE%.exe +pause +goto :eof + +rem +rem Find the apacheds.conf +rem +:conf +set _WRAPPER_CONF="%~f1" +if not %_WRAPPER_CONF%=="" goto startup +set _WRAPPER_CONF="%_REALPATH%..\conf\apacheds.conf" + +rem +rem Install the Wrapper as an NT service. +rem +:startup +"%_WRAPPER_EXE%" -i %_WRAPPER_CONF% +if not errorlevel 1 goto :eof +pause + Added: directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/src/PauseApp-NT.bat.in URL: http://svn.apache.org/viewvc/directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/src/PauseApp-NT.bat.in?view=auto&rev=564117 ============================================================================== --- directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/src/PauseApp-NT.bat.in (added) +++ directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/src/PauseApp-NT.bat.in Wed Aug 8 23:45:35 2007 @@ -0,0 +1,50 @@ +@echo off +setlocal + +rem Copyright (c) 1999, 2006 Tanuki Software Inc. +rem +rem Java Service Wrapper general NT service start script +rem + +if "%OS%"=="Windows_NT" goto nt +echo This script only works with NT-based versions of Windows. +goto :eof + +:nt +rem +rem Find the application home. +rem +rem %~dp0 is location of current script under NT +set _REALPATH=%~dp0 + +rem Decide on the wrapper binary. +set _WRAPPER_BASE=wrapper +set _WRAPPER_EXE=%_REALPATH%%_WRAPPER_BASE%-windows-x86-32.exe +if exist "%_WRAPPER_EXE%" goto conf +set _WRAPPER_EXE=%_REALPATH%%_WRAPPER_BASE%-windows-x86-64.exe +if exist "%_WRAPPER_EXE%" goto conf +set _WRAPPER_EXE=%_REALPATH%%_WRAPPER_BASE%.exe +if exist "%_WRAPPER_EXE%" goto conf +echo Unable to locate a Wrapper executable using any of the following names: +echo %_REALPATH%%_WRAPPER_BASE%-windows-x86-32.exe +echo %_REALPATH%%_WRAPPER_BASE%-windows-x86-64.exe +echo %_REALPATH%%_WRAPPER_BASE%.exe +pause +goto :eof + +rem +rem Find the apacheds.conf +rem +:conf +set _WRAPPER_CONF="%~f1" +if not %_WRAPPER_CONF%=="" goto startup +set _WRAPPER_CONF="%_REALPATH%..\conf\apacheds.conf" + +rem +rem Start the Wrapper NT service. +rem +:startup +"%_WRAPPER_EXE%" -a %_WRAPPER_CONF% +if not errorlevel 1 goto :eof +pause + Added: directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/src/ResumeApp-NT.bat.in URL: http://svn.apache.org/viewvc/directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/src/ResumeApp-NT.bat.in?view=auto&rev=564117 ============================================================================== --- directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/src/ResumeApp-NT.bat.in (added) +++ directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/src/ResumeApp-NT.bat.in Wed Aug 8 23:45:35 2007 @@ -0,0 +1,50 @@ +@echo off +setlocal + +rem Copyright (c) 1999, 2006 Tanuki Software Inc. +rem +rem Java Service Wrapper general NT service start script +rem + +if "%OS%"=="Windows_NT" goto nt +echo This script only works with NT-based versions of Windows. +goto :eof + +:nt +rem +rem Find the application home. +rem +rem %~dp0 is location of current script under NT +set _REALPATH=%~dp0 + +rem Decide on the wrapper binary. +set _WRAPPER_BASE=wrapper +set _WRAPPER_EXE=%_REALPATH%%_WRAPPER_BASE%-windows-x86-32.exe +if exist "%_WRAPPER_EXE%" goto conf +set _WRAPPER_EXE=%_REALPATH%%_WRAPPER_BASE%-windows-x86-64.exe +if exist "%_WRAPPER_EXE%" goto conf +set _WRAPPER_EXE=%_REALPATH%%_WRAPPER_BASE%.exe +if exist "%_WRAPPER_EXE%" goto conf +echo Unable to locate a Wrapper executable using any of the following names: +echo %_REALPATH%%_WRAPPER_BASE%-windows-x86-32.exe +echo %_REALPATH%%_WRAPPER_BASE%-windows-x86-64.exe +echo %_REALPATH%%_WRAPPER_BASE%.exe +pause +goto :eof + +rem +rem Find the apacheds.conf +rem +:conf +set _WRAPPER_CONF="%~f1" +if not %_WRAPPER_CONF%=="" goto startup +set _WRAPPER_CONF="%_REALPATH%..\conf\apacheds.conf" + +rem +rem Start the Wrapper NT service. +rem +:startup +"%_WRAPPER_EXE%" -e %_WRAPPER_CONF% +if not errorlevel 1 goto :eof +pause + Added: directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/src/SimpleApp.bat.in URL: http://svn.apache.org/viewvc/directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/src/SimpleApp.bat.in?view=auto&rev=564117 ============================================================================== --- directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/src/SimpleApp.bat.in (added) +++ directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/src/SimpleApp.bat.in Wed Aug 8 23:45:35 2007 @@ -0,0 +1,15 @@ +@echo off + +rem Copyright (c) 1999, 2006 Tanuki Software Inc. + +set _WRAPPER_CONF="%~f1" +if not %_WRAPPER_CONF%=="" goto startup +set _WRAPPER_CONF="@app.home@\conf\apacheds.conf" + +:startup +"@app.home@\bin\wrapper.exe" -c %_WRAPPER_CONF% +if not errorlevel 1 goto end +pause + +:end +set _WRAPPER_CONF= Added: directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/src/SimpleInstallApp-NT.bat.in URL: http://svn.apache.org/viewvc/directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/src/SimpleInstallApp-NT.bat.in?view=auto&rev=564117 ============================================================================== --- directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/src/SimpleInstallApp-NT.bat.in (added) +++ directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/src/SimpleInstallApp-NT.bat.in Wed Aug 8 23:45:35 2007 @@ -0,0 +1,15 @@ +@echo off + +rem Copyright (c) 1999, 2006 Tanuki Software Inc. + +set _WRAPPER_CONF="%~f1" +if not %_WRAPPER_CONF%=="" goto startup +set _WRAPPER_CONF="@app.home@\conf\apacheds.conf" + +:startup +"@app.home@\bin\wrapper.exe" -i %_WRAPPER_CONF% +if not errorlevel 1 goto end +pause + +:end +set _WRAPPER_CONF= Added: directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/src/SimpleUninstallApp-NT.bat.in URL: http://svn.apache.org/viewvc/directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/src/SimpleUninstallApp-NT.bat.in?view=auto&rev=564117 ============================================================================== --- directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/src/SimpleUninstallApp-NT.bat.in (added) +++ directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/src/SimpleUninstallApp-NT.bat.in Wed Aug 8 23:45:35 2007 @@ -0,0 +1,15 @@ +@echo off + +rem Copyright (c) 1999, 2006 Tanuki Software Inc. + +set _WRAPPER_CONF="%~f1" +if not %_WRAPPER_CONF%=="" goto startup +set _WRAPPER_CONF="@app.home@\conf\apacheds.conf" + +:startup +"@app.home@\bin\wrapper.exe" -r %_WRAPPER_CONF% +if not errorlevel 1 goto end +pause + +:end +set _WRAPPER_CONF= Added: directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/src/StartApp-NT.bat.in URL: http://svn.apache.org/viewvc/directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/src/StartApp-NT.bat.in?view=auto&rev=564117 ============================================================================== --- directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/src/StartApp-NT.bat.in (added) +++ directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/src/StartApp-NT.bat.in Wed Aug 8 23:45:35 2007 @@ -0,0 +1,50 @@ +@echo off +setlocal + +rem Copyright (c) 1999, 2006 Tanuki Software Inc. +rem +rem Java Service Wrapper general NT service start script +rem + +if "%OS%"=="Windows_NT" goto nt +echo This script only works with NT-based versions of Windows. +goto :eof + +:nt +rem +rem Find the application home. +rem +rem %~dp0 is location of current script under NT +set _REALPATH=%~dp0 + +rem Decide on the wrapper binary. +set _WRAPPER_BASE=wrapper +set _WRAPPER_EXE=%_REALPATH%%_WRAPPER_BASE%-windows-x86-32.exe +if exist "%_WRAPPER_EXE%" goto conf +set _WRAPPER_EXE=%_REALPATH%%_WRAPPER_BASE%-windows-x86-64.exe +if exist "%_WRAPPER_EXE%" goto conf +set _WRAPPER_EXE=%_REALPATH%%_WRAPPER_BASE%.exe +if exist "%_WRAPPER_EXE%" goto conf +echo Unable to locate a Wrapper executable using any of the following names: +echo %_REALPATH%%_WRAPPER_BASE%-windows-x86-32.exe +echo %_REALPATH%%_WRAPPER_BASE%-windows-x86-64.exe +echo %_REALPATH%%_WRAPPER_BASE%.exe +pause +goto :eof + +rem +rem Find the apacheds.conf +rem +:conf +set _WRAPPER_CONF="%~f1" +if not %_WRAPPER_CONF%=="" goto startup +set _WRAPPER_CONF="%_REALPATH%..\conf\apacheds.conf" + +rem +rem Start the Wrapper NT service. +rem +:startup +"%_WRAPPER_EXE%" -t %_WRAPPER_CONF% +if not errorlevel 1 goto :eof +pause + Added: directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/src/StopApp-NT.bat.in URL: http://svn.apache.org/viewvc/directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/src/StopApp-NT.bat.in?view=auto&rev=564117 ============================================================================== --- directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/src/StopApp-NT.bat.in (added) +++ directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/src/StopApp-NT.bat.in Wed Aug 8 23:45:35 2007 @@ -0,0 +1,50 @@ +@echo off +setlocal + +rem Copyright (c) 1999, 2006 Tanuki Software Inc. +rem +rem Java Service Wrapper general NT service stop script +rem + +if "%OS%"=="Windows_NT" goto nt +echo This script only works with NT-based versions of Windows. +goto :eof + +:nt +rem +rem Find the application home. +rem +rem %~dp0 is location of current script under NT +set _REALPATH=%~dp0 + +rem Decide on the wrapper binary. +set _WRAPPER_BASE=wrapper +set _WRAPPER_EXE=%_REALPATH%%_WRAPPER_BASE%-windows-x86-32.exe +if exist "%_WRAPPER_EXE%" goto conf +set _WRAPPER_EXE=%_REALPATH%%_WRAPPER_BASE%-windows-x86-64.exe +if exist "%_WRAPPER_EXE%" goto conf +set _WRAPPER_EXE=%_REALPATH%%_WRAPPER_BASE%.exe +if exist "%_WRAPPER_EXE%" goto conf +echo Unable to locate a Wrapper executable using any of the following names: +echo %_REALPATH%%_WRAPPER_BASE%-windows-x86-32.exe +echo %_REALPATH%%_WRAPPER_BASE%-windows-x86-64.exe +echo %_REALPATH%%_WRAPPER_BASE%.exe +pause +goto :eof + +rem +rem Find the apacheds.conf +rem +:conf +set _WRAPPER_CONF="%~f1" +if not %_WRAPPER_CONF%=="" goto startup +set _WRAPPER_CONF="%_REALPATH%..\conf\apacheds.conf" + +rem +rem Stop the Wrapper NT service. +rem +:startup +"%_WRAPPER_EXE%" -p %_WRAPPER_CONF% +if not errorlevel 1 goto :eof +pause + Added: directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/src/UninstallApp-NT.bat.in URL: http://svn.apache.org/viewvc/directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/src/UninstallApp-NT.bat.in?view=auto&rev=564117 ============================================================================== --- directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/src/UninstallApp-NT.bat.in (added) +++ directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/src/UninstallApp-NT.bat.in Wed Aug 8 23:45:35 2007 @@ -0,0 +1,50 @@ +@echo off +setlocal + +rem Copyright (c) 1999, 2006 Tanuki Software Inc. +rem +rem Java Service Wrapper general NT service uninstall script +rem + +if "%OS%"=="Windows_NT" goto nt +echo This script only works with NT-based versions of Windows. +goto :eof + +:nt +rem +rem Find the application home. +rem +rem %~dp0 is location of current script under NT +set _REALPATH=%~dp0 + +rem Decide on the wrapper binary. +set _WRAPPER_BASE=wrapper +set _WRAPPER_EXE=%_REALPATH%%_WRAPPER_BASE%-windows-x86-32.exe +if exist "%_WRAPPER_EXE%" goto conf +set _WRAPPER_EXE=%_REALPATH%%_WRAPPER_BASE%-windows-x86-64.exe +if exist "%_WRAPPER_EXE%" goto conf +set _WRAPPER_EXE=%_REALPATH%%_WRAPPER_BASE%.exe +if exist "%_WRAPPER_EXE%" goto conf +echo Unable to locate a Wrapper executable using any of the following names: +echo %_REALPATH%%_WRAPPER_BASE%-windows-x86-32.exe +echo %_REALPATH%%_WRAPPER_BASE%-windows-x86-64.exe +echo %_REALPATH%%_WRAPPER_BASE%.exe +pause +goto :eof + +rem +rem Find the apacheds.conf +rem +:conf +set _WRAPPER_CONF="%~f1" +if not %_WRAPPER_CONF%=="" goto startup +set _WRAPPER_CONF="%_REALPATH%..\conf\apacheds.conf" + +rem +rem Uninstall the Wrapper as an NT service. +rem +:startup +"%_WRAPPER_EXE%" -r %_WRAPPER_CONF% +if not errorlevel 1 goto :eof +pause + Added: directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/src/sh.script.in URL: http://svn.apache.org/viewvc/directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/src/sh.script.in?view=auto&rev=564117 ============================================================================== --- directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/src/sh.script.in (added) +++ directory/daemon/trunk/plugin/src/main/resources/org/apache/directory/daemon/installers/wrapper/src/sh.script.in Wed Aug 8 23:45:35 2007 @@ -0,0 +1,574 @@ +#! /bin/sh +# +# Shell script to start/stop Apache Directory Server +# If you want to change apacheds service settings please modify the apacheds.conf +# file for the instance you wish to change. +# chkconfig: 2345 91 35 +# description: This script starts and stops @app.long.name@ +# + +# Instances + +INSTANCE="$2" +. /etc/sysconfig/apacheds + +#INSTANCE_HOME="/var/lib/apacheds" + +# Application +APP_NAME="@app@" +export APACHEDS_HOME +APP_LONG_NAME="Apache Directory Server - $INSTANCE" + + +# Wrapper +WRAPPER_CMD="/opt/@app@-@app.version@/bin/apacheds" +WRAPPER_CONF="/opt/@app@-@app.version@/conf/apacheds.conf" + +# Priority at which to run the wrapper. See "man nice" for valid priorities. +# nice is only used if a priority is specified. +PRIORITY= + +# Location of the pid file. +PIDDIR="/var/run/apacheds/$INSTANCE" + +# If uncommented, causes the Wrapper to be shutdown using an anchor file. +# When launched with the 'start' command, it will also ignore all INT and +# TERM signals. +#IGNORE_SIGNALS=true + +# If specified, the Wrapper will be run as the specified user. +# IMPORTANT - Make sure that the user has the required privileges to write +# the PID file and wrapper.log files. Failure to be able to write the log +# file will cause the Wrapper to exit without any way to write out an error +# message. +# NOTE - This will set the user which is used to run the Wrapper as well as +# the JVM and is not useful in situations where a privileged resource or +# port needs to be allocated prior to the user being changed. +RUN_AS_USER=$APP_NAME + +# Do not modify anything beyond this point +#----------------------------------------------------------------------------- + +# Get the fully qualified path to the script +case $0 in + /*) + SCRIPT="$0" + ;; + *) + PWD=`pwd` + SCRIPT="$PWD/$0" + ;; +esac + +# Resolve the true real path without any sym links. +CHANGED=true +while [ "X$CHANGED" != "X" ] +do + # Change spaces to ":" so the tokens can be parsed. + SAFESCRIPT=`echo $SCRIPT | sed -e 's; ;:;g'` + # Get the real path to this script, resolving any symbolic links + TOKENS=`echo $SAFESCRIPT | sed -e 's;/; ;g'` + REALPATH= + for C in $TOKENS; do + # Change any ":" in the token back to a space. + C=`echo $C | sed -e 's;:; ;g'` + REALPATH="$REALPATH/$C" + # If REALPATH is a sym link, resolve it. Loop for nested links. + while [ -h "$REALPATH" ] ; do + LS="`ls -ld "$REALPATH"`" + LINK="`expr "$LS" : '.*-> \(.*\)$'`" + if expr "$LINK" : '/.*' > /dev/null; then + # LINK is absolute. + REALPATH="$LINK" + else + # LINK is relative. + REALPATH="`dirname "$REALPATH"`""/$LINK" + fi + done + done + + if [ "$REALPATH" = "$SCRIPT" ] + then + CHANGED="" + else + SCRIPT="$REALPATH" + fi +done + +# Change the current directory to the location of the script +cd "`dirname "$REALPATH"`" +REALDIR=`pwd` + +# If the PIDDIR is relative, set its value relative to the full REALPATH to avoid problems if +# the working directory is later changed. +FIRST_CHAR=`echo $PIDDIR | cut -c1,1` +if [ "$FIRST_CHAR" != "/" ] +then + PIDDIR=$REALDIR/$PIDDIR +fi +# Same test for WRAPPER_CMD +FIRST_CHAR=`echo $WRAPPER_CMD | cut -c1,1` +if [ "$FIRST_CHAR" != "/" ] +then + WRAPPER_CMD=$REALDIR/$WRAPPER_CMD +fi +# Same test for WRAPPER_CONF +FIRST_CHAR=`echo $WRAPPER_CONF | cut -c1,1` +if [ "$FIRST_CHAR" != "/" ] +then + WRAPPER_CONF=$REALDIR/$WRAPPER_CONF +fi + +# Process ID +ANCHORFILE="$PIDDIR/$INSTANCE.anchor" +PIDFILE="$PIDDIR/$INSTANCE.pid" +LOCKDIR="/var/lock/subsys" +LOCKFILE="$LOCKDIR/$INSTANCE" +pid="" + +# Resolve the location of the 'ps' command +PSEXE="/usr/bin/ps" +if [ ! -x "$PSEXE" ] +then + PSEXE="/bin/ps" + if [ ! -x "$PSEXE" ] + then + echo "Unable to locate 'ps'." + echo "Please report this message along with the location of the command on your system." + exit 1 + fi +fi + +# Resolve the os +DIST_OS=`uname -s | tr [:upper:] [:lower:] | tr -d [:blank:]` +case "$DIST_OS" in + 'sunos') + DIST_OS="solaris" + ;; + 'hp-ux' | 'hp-ux64') + DIST_OS="hpux" + ;; + 'darwin') + DIST_OS="macosx" + ;; + 'unix_sv') + DIST_OS="unixware" + ;; +esac + +# Resolve the architecture +DIST_ARCH=`uname -p | tr [:upper:] [:lower:] | tr -d [:blank:]` +if [ "$DIST_ARCH" = "unknown" ] +then + DIST_ARCH=`uname -m | tr [:upper:] [:lower:] | tr -d [:blank:]` +fi +case "$DIST_ARCH" in + 'amd64' | 'athlon' | 'ia32' | 'ia64' | 'i386' | 'i486' | 'i586' | 'i686' | 'x86_64') + DIST_ARCH="x86" + ;; + 'ip27') + DIST_ARCH="mips" + ;; + 'power' | 'powerpc' | 'power_pc' | 'ppc64') + DIST_ARCH="ppc" + ;; + 'pa_risc' | 'pa-risc') + DIST_ARCH="parisc" + ;; + 'sun4u' | 'sparcv9') + DIST_ARCH="sparc" + ;; + '9000/800') + DIST_ARCH="parisc" + ;; +esac + +outputFile() { + if [ -f "$1" ] + then + echo " $1 (Found but not executable.)"; + else + echo " $1" + fi +} + +# Decide on the wrapper binary to use. +# If a 32-bit wrapper binary exists then it will work on 32 or 64 bit +# platforms, if the 64-bit binary exists then the distribution most +# likely wants to use long names. Otherwise, look for the default. +# For macosx, we also want to look for universal binaries. +WRAPPER_TEST_CMD="$WRAPPER_CMD-$DIST_OS-$DIST_ARCH-32" +if [ -x "$WRAPPER_TEST_CMD" ] +then + WRAPPER_CMD="$WRAPPER_TEST_CMD" +else + if [ "$DIST_OS" = "macosx" ] + then + WRAPPER_TEST_CMD="$WRAPPER_CMD-$DIST_OS-universal-32" + if [ -x "$WRAPPER_TEST_CMD" ] + then + WRAPPER_CMD="$WRAPPER_TEST_CMD" + else + WRAPPER_TEST_CMD="$WRAPPER_CMD-$DIST_OS-$DIST_ARCH-64" + if [ -x "$WRAPPER_TEST_CMD" ] + then + WRAPPER_CMD="$WRAPPER_TEST_CMD" + else + WRAPPER_TEST_CMD="$WRAPPER_CMD-$DIST_OS-universal-64" + if [ -x "$WRAPPER_TEST_CMD" ] + then + WRAPPER_CMD="$WRAPPER_TEST_CMD" + else + if [ ! -x "$WRAPPER_CMD" ] + then + echo "Unable to locate any of the following binaries:" + outputFile "$WRAPPER_CMD-$DIST_OS-$DIST_ARCH-32" + outputFile "$WRAPPER_CMD-$DIST_OS-universal-32" + outputFile "$WRAPPER_CMD-$DIST_OS-$DIST_ARCH-64" + outputFile "$WRAPPER_CMD-$DIST_OS-universal-64" + outputFile "$WRAPPER_CMD" + exit 1 + fi + fi + fi + fi + else + WRAPPER_TEST_CMD="$WRAPPER_CMD-$DIST_OS-$DIST_ARCH-64" + if [ -x "$WRAPPER_TEST_CMD" ] + then + WRAPPER_CMD="$WRAPPER_TEST_CMD" + else + if [ ! -x "$WRAPPER_CMD" ] + then + echo "Unable to locate any of the following binaries:" + outputFile "$WRAPPER_CMD-$DIST_OS-$DIST_ARCH-32" + outputFile "$WRAPPER_CMD-$DIST_OS-$DIST_ARCH-64" + outputFile "$WRAPPER_CMD" + exit 1 + fi + fi + fi +fi + +# Build the nice clause +if [ "X$PRIORITY" = "X" ] +then + CMDNICE="" +else + CMDNICE="nice -$PRIORITY" +fi + +# Build the anchor file clause. +if [ "X$IGNORE_SIGNALS" = "X" ] +then + ANCHORPROP= + IGNOREPROP= +else + ANCHORPROP=wrapper.anchorfile=\"$ANCHORFILE\" + IGNOREPROP=wrapper.ignore_signals=TRUE +fi + +# Build the lock file clause. Only create a lock file if the lock directory exists on this platform. +LOCKPROP= +if [ -d $LOCKDIR ] +then + if [ -w $LOCKDIR ] + then + LOCKPROP=wrapper.lockfile=\"$LOCKFILE\" + fi +fi + +checkUser() { + # $1 touchLock flag + # $2 command + # $3 instance + + # Check the configured user. If necessary rerun this script as the desired user. + if [ "X$RUN_AS_USER" != "X" ] + then + # Resolve the location of the 'id' command + IDEXE="/usr/xpg4/bin/id" + if [ ! -x "$IDEXE" ] + then + IDEXE="/usr/bin/id" + if [ ! -x "$IDEXE" ] + then + echo "Unable to locate 'id'." + echo "Please report this message along with the location of the command on your system." + exit 1 + fi + fi + + if [ "`$IDEXE -u -n`" = "$RUN_AS_USER" ] + then + # Already running as the configured user. Avoid password prompts by not calling su. + RUN_AS_USER="" + fi + fi + if [ "X$RUN_AS_USER" != "X" ] + then + # If LOCKPROP and $RUN_AS_USER are defined then the new user will most likely not be + # able to create the lock file. The Wrapper will be able to update this file once it + # is created but will not be able to delete it on shutdown. If $2 is defined then + # the lock file should be created for the current command + if [ "X$LOCKPROP" != "X" ] + then + if [ "X$1" != "X" ] + then + # Resolve the primary group + RUN_AS_GROUP=`groups $RUN_AS_USER | awk '{print $3}' | tail -1` + if [ "X$RUN_AS_GROUP" = "X" ] + then + RUN_AS_GROUP=$RUN_AS_USER + fi + touch $LOCKFILE + chown $RUN_AS_USER:$RUN_AS_GROUP $LOCKFILE + fi + fi + + # Still want to change users, recurse. This means that the user will only be + # prompted for a password once. Variables shifted by 1 + su -m $RUN_AS_USER -c "\"$REALPATH\" $2 $3" + + # Now that we are the original user again, we may need to clean up the lock file. + if [ "X$LOCKPROP" != "X" ] + then + getpid + if [ "X$pid" = "X" ] + then + # Wrapper is not running so make sure the lock file is deleted. + if [ -f "$LOCKFILE" ] + then + rm "$LOCKFILE" + fi + fi + fi + + exit 0 + fi +} + +getpid() { + if [ -f "$PIDFILE" ] + then + if [ -r "$PIDFILE" ] + then + pid=`cat "$PIDFILE"` + if [ "X$pid" != "X" ] + then + # It is possible that 'a' process with the pid exists but that it is not the + # correct process. This can happen in a number of cases, but the most + # common is during system startup after an unclean shutdown. + # The ps statement below looks for the specific wrapper command running as + # the pid. If it is not found then the pid file is considered to be stale. + pidtest=`$PSEXE -p $pid -o args | grep "$WRAPPER_CMD" | tail -1` + if [ "X$pidtest" = "X" ] + then + # This is a stale pid file. + rm -f "$PIDFILE" + echo "Removed stale pid file: $PIDFILE" + pid="" + fi + fi + else + echo "Cannot read $PIDFILE." + exit 1 + fi + fi +} + +testpid() { + pid=`$PSEXE -p $pid | grep $pid | grep -v grep | awk '{print $1}' | tail -1` + if [ "X$pid" = "X" ] + then + # Process is gone so remove the pid file. + rm -f "$PIDFILE" + pid="" + fi +} + +usage() { + echo "Please enter an instance name..." + echo "Usage: $0 " + echo " Available Commands: " + echo " console - Run in interactive mode with log output to the console." + echo " Press CTRL-C to stop." + echo " start - Run the instance in the background" + echo " stop - Stop the running instance" + echo " restart - Restart the instance if it is already running," + echo " or start if it wasn't already running" + echo " status - Display the status of the instance (running or stopped)" + echo " dump - Request a JVM dump of the running process" +} + +console() { + echo "Running $APP_LONG_NAME..." + getpid + if [ "X$pid" = "X" ] + then + # The string passed to eval must handles spaces in paths correctly. + COMMAND_LINE="$CMDNICE \"$WRAPPER_CMD\" \"$WRAPPER_CONF\" set.INSTANCE_HOME=\"$INSTANCE_HOME\" set.INSTANCE=\"$INSTANCE\" wrapper.syslog.ident=$APP_NAME wrapper.pidfile=\"$PIDFILE\" $ANCHORPROP $LOCKPROP wrapper.debug=true" + eval $COMMAND_LINE + else + echo "$APP_LONG_NAME is already running." + exit 1 + fi +} + +start() { + echo "Starting $APP_LONG_NAME..." + getpid + if [ "X$pid" = "X" ] + then + # The string passed to eval must handles spaces in paths correctly. + COMMAND_LINE="$CMDNICE \"$WRAPPER_CMD\" \"$WRAPPER_CONF\" set.INSTANCE_HOME=$INSTANCE_HOME set.INSTANCE=$INSTANCE wrapper.syslog.ident=$APP_NAME wrapper.pidfile=\"$PIDFILE\" wrapper.daemonize=TRUE $ANCHORPROP $IGNOREPROP $LOCKPROP" + eval $COMMAND_LINE + else + echo "$APP_LONG_NAME is already running." + exit 1 + fi + + +} + +stopit() { + echo "Stopping $APP_LONG_NAME..." + getpid + if [ "X$pid" = "X" ] + then + echo "$APP_LONG_NAME was not running." + else + if [ "X$IGNORE_SIGNALS" = "X" ] + then + # Running so try to stop it. + kill $pid + if [ $? -ne 0 ] + then + # An explanation for the failure should have been given + echo "Unable to stop $APP_LONG_NAME." + exit 1 + fi + else + rm -f "$ANCHORFILE" + if [ -f "$ANCHORFILE" ] + then + # An explanation for the failure should have been given + echo "Unable to stop $APP_LONG_NAME." + exit 1 + fi + fi + + # We can not predict how long it will take for the wrapper to + # actually stop as it depends on settings in apacheds.conf. + # Loop until it does. + savepid=$pid + CNT=0 + TOTCNT=0 + while [ "X$pid" != "X" ] + do + # Show a waiting message every 5 seconds. + if [ "$CNT" -lt "5" ] + then + CNT=`expr $CNT + 1` + else + echo "Waiting for $APP_LONG_NAME to exit..." + CNT=0 + fi + TOTCNT=`expr $TOTCNT + 1` + + sleep 1 + + testpid + done + + pid=$savepid + testpid + if [ "X$pid" != "X" ] + then + echo "Failed to stop $APP_LONG_NAME." + exit 1 + else + echo "Stopped $APP_LONG_NAME." + fi + fi +} + +status() { + getpid + if [ "X$pid" = "X" ] + then + echo "$APP_LONG_NAME is not running." + exit 1 + else + echo "$APP_LONG_NAME is running ($pid)." + exit 0 + fi +} + +dump() { + echo "Dumping $APP_LONG_NAME..." + getpid + if [ "X$pid" = "X" ] + then + echo "$APP_LONG_NAME was not running." + + else + kill -3 $pid + + if [ $? -ne 0 ] + then + echo "Failed to dump $APP_LONG_NAME." + exit 1 + else + echo "Dumped $APP_LONG_NAME." + fi + fi +} + +# Make sure they entered an instance name +if [ "x"$2 = "x" ] +then + usage + exit 1 +fi + +case "$1" in + + 'console') + checkUser touchlock $1 $INSTANCE + console + ;; + + 'start') + checkUser touchlock $1 $INSTANCE + start + ;; + + 'stop') + checkUser "" $1 $INSTANCE + stopit + ;; + + 'restart') + checkUser touchlock $1 $INSTANCE + stopit + start + ;; + + 'status') + checkUser "" $1 $INSTANCE + status + ;; + + 'dump') + checkUser "" $1 $INSTANCE + dump + ;; + + *) + echo "Usage: $0 { console | start | stop | restart | status | dump } " + exit 1 + ;; +esac + +exit 0