[ 
https://issues.apache.org/jira/browse/DIRSERVER-2175?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15726213#comment-15726213
 ] 

Stan R commented on DIRSERVER-2175:
-----------------------------------

Ahh whoops, sorry everyone. If someone with higher powers could please edit my 
description. s/\/noformat/noformat/

> apacheds.sh startup script: support for more shells
> ---------------------------------------------------
>
>                 Key: DIRSERVER-2175
>                 URL: https://issues.apache.org/jira/browse/DIRSERVER-2175
>             Project: Directory ApacheDS
>          Issue Type: Improvement
>    Affects Versions: 2.0.0-M23
>         Environment: Linux, Busybox Ash shell
>            Reporter: Stan R
>            Priority: Trivial
>         Attachments: apacheds.sh.patch
>
>
> Attempting to start ApacheDS via the apacheds.sh startup script with a shell 
> other than bash, such as busybox Ash shell, results in the following error:
> {noformat}
> $ sh apacheds.sh run
> apacheds.sh: line 113: syntax error: unexpected "(" (expecting ")")
> {/noformat}
> The offending line 113 (and 1 previous) for reference:
> {noformat}
> # Build the classpath (http://stackoverflow.com/a/4729899/516433)
> CLASSPATH=$(JARS=("$ADS_HOME"/lib/*.jar); IFS=:; echo "${JARS[*]}")
> {/noformat}
> Analyzing the offending line reveals that the classpath is built using a 
> bash-specific syntax/feature for arrays -- functionality not found in other 
> shells. Following the helpful link on line 112 to stackoverflow for further 
> explanation reveals that while the manual classpath creation methodology via 
> bash arrays used to be the "best" available, it is now deprecated. According 
> to the stackoverflow page, building the classpath manually is no longer a 
> necessity as of at least 2012; the classpath can now contain wildcards, and 
> Java will kindly resolve the wildcards on its own. Further investigation of 
> the classpath wildcard resolution functionality reveals that the feature has 
> been present in Java 1.7 since release 1 (I downloaded the first release and 
> looked at the manpage "java.1") in 2011.
> Since ApacheDS requires Java 1.7 as a prerequisite, and the wildcard 
> classpath resolution functionality is present in all versions of Java 1.7 and 
> up, I propose eliminating the bash-only manual classpath creation, and 
> instead take advantage of the 5-year-old enhancement present in Java, so that 
> other shells may be supported when executing the apacheds.sh script.
> The largest benefit to supporting shells other than bash, is for situations 
> in which ApacheDS is deployed in minimalized container environments for 
> security reasons, where attempts are made to reduce potential attack surface 
> by removing all unnecessary features, libraries, and software. To this end, 
> bash is a prime candidate for removal as a dependency (see shellshock).
> Given the above, changing line 113 to the following allows the script to be 
> executed, and ApacheDS to be launched, without error in busybox's ash shell 
> and bash shell (and perhaps others):
> {noformat}
> CLASSPATH="$ADS_HOME/lib/*"
> {/noformat}
> I will attempt to attach a patchfile if I can.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to