This commit is contained in:
		| @@ -19,65 +19,24 @@ | ||||
| # | ||||
| ####################################################################### | ||||
|  | ||||
| SUBDIRS = src | ||||
| DIST_SUBDIRS = src linux | ||||
| SUBDIRS = src $(TARGET_OS) | ||||
|  | ||||
| DIST_SUBDIRS = src linux windows | ||||
|  | ||||
| EXTRA_DIST = $(JAVAFILES) \ | ||||
|              make_test.sh \ | ||||
|              run_test.sh | ||||
|  | ||||
| ROOT = ../ | ||||
|  | ||||
| LIBDIR = $(ROOT)/$(LIB) | ||||
|  | ||||
| JAVAROOT = . | ||||
| JAVAC= javac | ||||
|  | ||||
| MODULE_NAME = CasaJaasSupport | ||||
| MODULE_EXT = jar | ||||
|  | ||||
| JAVAFILES = src/com/novell/casa/jaas/CasaLoginModule.java \ | ||||
| 	src/com/novell/casa/jaas/CasaPrincipal.java | ||||
|  | ||||
| BUILDDIR = build | ||||
|  | ||||
| CLASSES = $(addprefix $(BUILDDIR)/, $(JAVAFILES:%.java=%.class)) | ||||
|  | ||||
| LIBS = | ||||
| CLASSPATH = $(LIBDIR)/java/CasaAuthToken.jar:$(LIBS) | ||||
|  | ||||
| CUR_DIR := $(shell pwd) | ||||
|  | ||||
| all: $(BUILDDIR)/$(MODULE_NAME).$(MODULE_EXT) | ||||
|  | ||||
| $(BUILDDIR)/%.class: %.java | ||||
| 	@echo [======== Compiling $@ ========] | ||||
| 	$(JAVAC) -g -sourcepath src -classpath $(CLASSPATH) -d $(BUILDDIR)/classes $< | ||||
|  | ||||
| $(BUILDDIR)/$(MODULE_NAME).$(MODULE_EXT): $(BUILDDIR) $(CLASSES) | ||||
| 	@echo [======== Jarring $@ ========] | ||||
| 	jar cvf $(BUILDDIR)/$(MODULE_NAME).$(MODULE_EXT) -C $(BUILDDIR)/classes . | ||||
| 	cp $(BUILDDIR)/$(MODULE_NAME).$(MODULE_EXT) $(LIBDIR)/java/ | ||||
|  | ||||
| $(BUILDDIR): | ||||
| 	[ -d $(BUILDDIR) ] || mkdir -p $(BUILDDIR) | ||||
| 	[ -d $(BUILDDIR)/classes ] || mkdir -p $(BUILDDIR)/classes | ||||
| 	[ -d $(LIBDIR) ] || mkdir -p $(LIBDIR) | ||||
| 	[ -d $(LIBDIR)/java ] || mkdir -p $(LIBDIR)/java | ||||
|  | ||||
| install-exec-local: | ||||
|  | ||||
| uninstall-local: | ||||
|  | ||||
| #installcheck-local: install | ||||
| .PHONY: package package-clean package-install package-uninstall | ||||
| package package-clean package-install package-uninstall: | ||||
| 	$(MAKE) -C $(TARGET_OS) $@ | ||||
|  | ||||
| clean-local: | ||||
| 	if [ -d $(BUILDDIR) ]; then  rm -rf $(BUILDDIR); fi | ||||
| 	if [ -f $(LIBDIR)/java/$(MODULE_NAME).$(MODULE_EXT) ]; then  rm -f $(LIBDIR)/java/$(MODULE_NAME).$(MODULE_EXT); fi | ||||
|  | ||||
| distclean-local: | ||||
| 	if [ -d lib ]; then  rm -rf lib; fi | ||||
|  | ||||
| maintainer-clean-local: | ||||
| 	rm -f Makefile.in | ||||
| 	rm -f Makefile | ||||
|  | ||||
|   | ||||
| @@ -29,10 +29,57 @@ CFILES = | ||||
| EXTRA_DIST = client_keystore_setup.sh \ | ||||
| 		crypto.properties | ||||
|  | ||||
| .PHONY: package package-clean package-install package-uninstall | ||||
| package package-clean package-install package-uninstall: | ||||
| 	$(MAKE) -C $(TARGET_OS) $@ | ||||
|  | ||||
| ROOT = ../.. | ||||
|  | ||||
| LIBDIR = $(ROOT)/$(LIB) | ||||
|  | ||||
| JAVAC= javac | ||||
|  | ||||
| MODULE_NAME = CasaJaasSupport | ||||
| MODULE_EXT = jar | ||||
|  | ||||
| JAVAFILES = ../src/com/novell/casa/jaas/CasaLoginModule.java \ | ||||
| 	../src/com/novell/casa/jaas/CasaPrincipal.java | ||||
|  | ||||
| BUILDDIR = ../build | ||||
|  | ||||
| CLASSES = $(addprefix $(BUILDDIR)/, $(JAVAFILES:%.java=%.class)) | ||||
|  | ||||
| LIBS = | ||||
| CLASSPATH = $(LIBDIR)/java/CasaAuthToken.jar:$(LIBS) | ||||
|  | ||||
| all: $(BUILDDIR)/$(MODULE_NAME).$(MODULE_EXT) | ||||
|  | ||||
| $(BUILDDIR)/%.class: %.java | ||||
| 	@echo [======== Compiling $@ ========] | ||||
| 	$(JAVAC) -g -sourcepath ../src -classpath $(CLASSPATH) -d $(BUILDDIR)/classes $< | ||||
|  | ||||
| $(BUILDDIR)/$(MODULE_NAME).$(MODULE_EXT): $(BUILDDIR) $(CLASSES) | ||||
| 	@echo [======== Jarring $@ ========] | ||||
| 	jar cvf $(BUILDDIR)/$(MODULE_NAME).$(MODULE_EXT) -C $(BUILDDIR)/classes . | ||||
| 	cp $(BUILDDIR)/$(MODULE_NAME).$(MODULE_EXT) $(LIBDIR)/java/ | ||||
|  | ||||
| $(BUILDDIR): | ||||
| 	[ -d $(BUILDDIR) ] || mkdir -p $(BUILDDIR) | ||||
| 	[ -d $(BUILDDIR)/classes ] || mkdir -p $(BUILDDIR)/classes | ||||
| 	[ -d $(LIBDIR) ] || mkdir -p $(LIBDIR) | ||||
| 	[ -d $(LIBDIR)/java ] || mkdir -p $(LIBDIR)/java | ||||
|  | ||||
| install-exec-local: | ||||
|  | ||||
| uninstall-local: | ||||
|  | ||||
| #installcheck-local: install | ||||
|  | ||||
| clean-local: | ||||
| 	if [ -d $(BUILDDIR) ]; then  rm -rf $(BUILDDIR); fi | ||||
| 	if [ -f $(LIBDIR)/java/$(MODULE_NAME).$(MODULE_EXT) ]; then  rm -f $(LIBDIR)/java/$(MODULE_NAME).$(MODULE_EXT); fi | ||||
|  | ||||
| distclean-local: | ||||
|  | ||||
| maintainer-clean-local: | ||||
| 	rm -f Makefile.in | ||||
| 	rm -f Makefile | ||||
|  | ||||
|  | ||||
|   | ||||
							
								
								
									
										81
									
								
								CASA-auth-token/server-java/Jaas/windows/Makefile.am
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										81
									
								
								CASA-auth-token/server-java/Jaas/windows/Makefile.am
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,81 @@ | ||||
| ####################################################################### | ||||
| # | ||||
| #  Copyright (C) 2006 Novell, Inc. | ||||
| # | ||||
| #  This program is free software; you can redistribute it and/or | ||||
| #  modify it under the terms of the GNU General Public | ||||
| #  License as published by the Free Software Foundation; either | ||||
| #  version 2 of the License, or (at your option) any later version. | ||||
| # | ||||
| #  This program is distributed in the hope that it will be useful, | ||||
| #  but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
| #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
| #  General Public License for more details. | ||||
| # | ||||
| #  You should have received a copy of the GNU General Public | ||||
| #  License along with this program; if not, write to the Free | ||||
| #  Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||||
| # | ||||
| # | ||||
| ####################################################################### | ||||
|  | ||||
| SUBDIRS =  | ||||
| DIST_SUBDIRS =  | ||||
|  | ||||
| EXTRA_DIST =  | ||||
|  | ||||
| ROOT = ../.. | ||||
| LIB = lib | ||||
|  | ||||
| LIBDIR = $(ROOT)/$(LIB) | ||||
|  | ||||
| JAVAC= javac | ||||
|  | ||||
| MODULE_NAME = CasaJaasSupport | ||||
| MODULE_EXT = jar | ||||
|  | ||||
| JAVAFILES = ../src/com/novell/casa/jaas/CasaLoginModule.java \ | ||||
| 	../src/com/novell/casa/jaas/CasaPrincipal.java | ||||
|  | ||||
| BUILDDIR = ../build | ||||
|  | ||||
| CLASSES = $(addprefix $(BUILDDIR)/, $(JAVAFILES:%.java=%.class)) | ||||
|  | ||||
| LIBS = | ||||
| CLASSPATH = $(LIBDIR)/java/CasaAuthToken.jar;$(LIBS) | ||||
|  | ||||
| CUR_DIR := $(shell pwd) | ||||
|  | ||||
| all: $(BUILDDIR)/$(MODULE_NAME).$(MODULE_EXT) | ||||
|  | ||||
| $(BUILDDIR)/%.class: %.java | ||||
| 	@echo [======== Compiling $@ ========] | ||||
| 	$(JAVAC) -g -sourcepath ../src -classpath "$(CLASSPATH)" -d $(BUILDDIR)/classes $< | ||||
|  | ||||
| $(BUILDDIR)/$(MODULE_NAME).$(MODULE_EXT): $(BUILDDIR) $(CLASSES) | ||||
| 	@echo [======== Jarring $@ ========] | ||||
| 	jar cvf $(BUILDDIR)/$(MODULE_NAME).$(MODULE_EXT) -C $(BUILDDIR)/classes . | ||||
| 	cp $(BUILDDIR)/$(MODULE_NAME).$(MODULE_EXT) $(LIBDIR)/java/ | ||||
|  | ||||
| $(BUILDDIR): | ||||
| 	[ -d $(BUILDDIR) ] || mkdir -p $(BUILDDIR) | ||||
| 	[ -d $(BUILDDIR)/classes ] || mkdir -p $(BUILDDIR)/classes | ||||
| 	[ -d $(LIBDIR) ] || mkdir -p $(LIBDIR) | ||||
| 	[ -d $(LIBDIR)/java ] || mkdir -p $(LIBDIR)/java | ||||
|  | ||||
| install-exec-local: | ||||
|  | ||||
| uninstall-local: | ||||
|  | ||||
| #installcheck-local: install | ||||
|  | ||||
| clean-local: | ||||
| 	if [ -d $(BUILDDIR) ]; then  rm -rf $(BUILDDIR); fi | ||||
| 	if [ -f $(LIBDIR)/java/$(MODULE_NAME).$(MODULE_EXT) ]; then  rm -f $(LIBDIR)/java/$(MODULE_NAME).$(MODULE_EXT); fi | ||||
|  | ||||
| distclean-local: | ||||
|  | ||||
| maintainer-clean-local: | ||||
| 	rm -f Makefile.in | ||||
| 	rm -f Makefile | ||||
|  | ||||
| @@ -0,0 +1,6 @@ | ||||
| org.apache.ws.security.crypto.provider=org.apache.ws.security.components.crypto.Merlin | ||||
| org.apache.ws.security.crypto.merlin.keystore.type=jks | ||||
| org.apache.ws.security.crypto.merlin.keystore.password=secret | ||||
| org.apache.ws.security.crypto.merlin.keystore.alias=signingCert | ||||
| org.apache.ws.security.crypto.merlin.alias.password=secret | ||||
| org.apache.ws.security.crypto.merlin.file=/etc/CASA/authtoken/keys/client/jks-store | ||||
| @@ -36,10 +36,183 @@ EXTRA_DIST = CasaAuthtokenSvcD \ | ||||
| 		CasaIdenTokenSettingsEditor.sh \ | ||||
| 		CasaSvcSettingsEditor.sh | ||||
|  | ||||
| .PHONY: package package-clean package-install package-uninstall | ||||
| package package-clean package-install package-uninstall: | ||||
| 	$(MAKE) -C $(TARGET_OS) $@ | ||||
| ROOT = ../.. | ||||
|  | ||||
| LIBDIR = $(ROOT)/$(LIB) | ||||
|  | ||||
| IDENT_ABSTRACTION_DIR = /usr/share/java/identity-abstraction | ||||
| AXIS_JARS_DIR = ../external | ||||
|  | ||||
| MANIFEST_DIR = ../manifest | ||||
|  | ||||
| JAVAC= javac | ||||
|  | ||||
| WEBAPP_NAME = CasaAuthTokenSvc | ||||
| WEBAPP_EXT = war | ||||
| MODULE_NAME = CasaAuthToken | ||||
| MODULE_EXT = jar | ||||
| AUTH_TOKEN_SETTINGS_EDITOR_MODULE_NAME = CasaAuthTokenSettingsEditor | ||||
| IDEN_TOKEN_SETTINGS_EDITOR_MODULE_NAME = CasaIdenTokenSettingsEditor | ||||
| SVC_SETTINGS_EDITOR_MODULE_NAME = CasaSvcSettingsEditor | ||||
| AUTH_POLICY_EDITOR_MODULE_NAME = CasaAuthPolicyEditor | ||||
|  | ||||
| JAVAFILES = ../src/com/novell/casa/authtoksvc/ProtoDefs.java \ | ||||
| 	../src/com/novell/casa/authtoksvc/AuthMechConfig.java \ | ||||
| 	../src/com/novell/casa/authtoksvc/SvcConfig.java \ | ||||
| 	../src/com/novell/casa/authtoksvc/IdenTokenConfig.java \ | ||||
| 	../src/com/novell/casa/authtoksvc/AuthTokenConfig.java \ | ||||
| 	../src/com/novell/casa/authtoksvc/EnabledSvcsConfig.java \ | ||||
| 	../src/com/novell/casa/authtoksvc/AuthMechanism.java \ | ||||
| 	../src/com/novell/casa/authtoksvc/WSSecurity.java \ | ||||
| 	../src/com/novell/casa/authtoksvc/SessionToken.java \ | ||||
| 	../src/com/novell/casa/authtoksvc/Authenticate.java \ | ||||
| 	../src/com/novell/casa/authtoksvc/RpcMethod.java \ | ||||
| 	../src/com/novell/casa/authtoksvc/Rpc.java \ | ||||
| 	../src/com/novell/casa/authtoksvc/GetAuthPolicy.java \ | ||||
| 	../src/com/novell/casa/authtoksvc/Base64Coder.java \ | ||||
| 	../src/com/novell/casa/authtoksvc/AuthReqMsg.java \ | ||||
| 	../src/com/novell/casa/authtoksvc/AuthRespMsg.java \ | ||||
| 	../src/com/novell/casa/authtoksvc/IdentityToken.java \ | ||||
| 	../src/com/novell/casa/authtoksvc/CasaIdentityToken.java \ | ||||
| 	../src/com/novell/casa/authtoksvc/AuthToken.java \ | ||||
| 	../src/com/novell/casa/authtoksvc/GetAuthPolicyReqMsg.java \ | ||||
| 	../src/com/novell/casa/authtoksvc/GetAuthPolicyRespMsg.java \ | ||||
| 	../src/com/novell/casa/authtoksvc/GetAuthToken.java \ | ||||
| 	../src/com/novell/casa/authtoksvc/GetAuthTokReqMsg.java \ | ||||
| 	../src/com/novell/casa/authtoksvc/GetAuthTokRespMsg.java \ | ||||
| 	../src/com/novell/casa/authtoksvc/Krb5Authenticate.java \ | ||||
| 	../src/com/novell/casa/authtoksvc/PwdAuthenticate.java \ | ||||
| 	../src/com/novell/casa/authtoksvc/IVerifySetting.java \ | ||||
| 	../src/com/novell/casa/authtoksvc/SettingsFileUtil.java \ | ||||
| 	../src/com/novell/casa/authtoksvc/SettingsFileSAXHandler.java \ | ||||
| 	../src/com/novell/casa/authtoksvc/AuthPolicyEditor.java \ | ||||
| 	../src/com/novell/casa/authtoksvc/AuthTokenSettingsEditor.java \ | ||||
| 	../src/com/novell/casa/authtoksvc/IdenTokenSettingsEditor.java \ | ||||
| 	../src/com/novell/casa/authtoksvc/SvcSettingsEditor.java | ||||
|  | ||||
| BUILDDIR = ../build | ||||
|  | ||||
| AUTHTOKEN_FILES = -C $(BUILDDIR)/webapp/WEB-INF/classes com | ||||
|  | ||||
| AUTH_TOKEN_SETTINGS_EDITOR_FILES = -C $(BUILDDIR)/webapp/WEB-INF/classes com/novell/casa/authtoksvc/IVerifySetting.class \ | ||||
| 	-C $(BUILDDIR)/webapp/WEB-INF/classes com/novell/casa/authtoksvc/SettingsFileUtil.class \ | ||||
| 	-C $(BUILDDIR)/webapp/WEB-INF/classes com/novell/casa/authtoksvc/AuthTokenSettingsEditor.class \ | ||||
| 	-C $(BUILDDIR)/webapp/WEB-INF/classes com/novell/casa/authtoksvc/AuthTokenConfig.class | ||||
|  | ||||
| IDEN_TOKEN_SETTINGS_EDITOR_FILES = -C $(BUILDDIR)/webapp/WEB-INF/classes com/novell/casa/authtoksvc/IVerifySetting.class \ | ||||
| 	-C $(BUILDDIR)/webapp/WEB-INF/classes com/novell/casa/authtoksvc/SettingsFileUtil.class \ | ||||
| 	-C $(BUILDDIR)/webapp/WEB-INF/classes com/novell/casa/authtoksvc/IdenTokenSettingsEditor.class \ | ||||
| 	-C $(BUILDDIR)/webapp/WEB-INF/classes com/novell/casa/authtoksvc/IdenTokenConfig.class | ||||
|  | ||||
| SVC_SETTINGS_EDITOR_FILES = -C $(BUILDDIR)/webapp/WEB-INF/classes com/novell/casa/authtoksvc/IVerifySetting.class \ | ||||
| 	-C $(BUILDDIR)/webapp/WEB-INF/classes com/novell/casa/authtoksvc/SettingsFileUtil.class \ | ||||
| 	-C $(BUILDDIR)/webapp/WEB-INF/classes com/novell/casa/authtoksvc/SvcSettingsEditor.class \ | ||||
| 	-C $(BUILDDIR)/webapp/WEB-INF/classes com/novell/casa/authtoksvc/SvcConfig.class | ||||
|  | ||||
| AUTH_POLICY_EDITOR_FILES = -C $(BUILDDIR)/webapp/WEB-INF/classes com/novell/casa/authtoksvc/AuthPolicyEditor.class | ||||
|  | ||||
| WEBAPP = $(WEBAPP_NAME).$(WEBAPP_EXT) | ||||
|  | ||||
| AUTH_TOKEN_SETTINGS_EDITOR = $(AUTH_TOKEN_SETTINGS_EDITOR_MODULE_NAME).$(MODULE_EXT) | ||||
|  | ||||
| IDEN_TOKEN_SETTINGS_EDITOR = $(IDEN_TOKEN_SETTINGS_EDITOR_MODULE_NAME).$(MODULE_EXT) | ||||
|  | ||||
| SVC_SETTINGS_EDITOR = $(SVC_SETTINGS_EDITOR_MODULE_NAME).$(MODULE_EXT) | ||||
|  | ||||
| AUTH_POLICY_EDITOR = $(AUTH_POLICY_EDITOR_MODULE_NAME).$(MODULE_EXT) | ||||
|  | ||||
| CLASSES = $(addprefix $(BUILDDIR)/, $(JAVAFILES:%.java=%.class)) | ||||
|  | ||||
| #AXIS_LIBS = $(AXIS_JARS_DIR)/axis.jar:$(AXIS_JARS_DIR)/axis-ant.jar:$(AXIS_JARS_DIR)/commons-discovery-0.2.jar:$(AXIS_JARS_DIR)/commons-logging-1.0.4.jar:$(AXIS_JARS_DIR)/commons-logging-api.jar:$(AXIS_JARS_DIR)/jaxrpc.jar:$(AXIS_JARS_DIR)/log4j-1.2.8.jar:$(AXIS_JARS_DIR)/saaj.jar:$(AXIS_JARS_DIR)/wsdl4j-1.5.1.jar:$(AXIS_JARS_DIR)/wss4j-1.5.0.jar:$(AXIS_JARS_DIR)/xalan.jar:$(AXIS_JARS_DIR)/xercesImpl.jar:$(AXIS_JARS_DIR)/xml-apis.jar:$(AXIS_JARS_DIR)/xmlsec-1.2.1.jar | ||||
| AXIS_LIBS = $(AXIS_JARS_DIR)/axis.jar:$(AXIS_JARS_DIR)/saaj.jar:$(AXIS_JARS_DIR)/wss4j-1.5.0.jar:$(AXIS_JARS_DIR)/xmlsec-1.2.1.jar | ||||
| #AXIS_LIBS = $(AXIS_JARS_DIR)/wss4j-1.5.0.jar | ||||
|  | ||||
| LIBS = /usr/share/java/servletapi5.jar:/usr/share/java/xerces-j2.jar | ||||
| CLASSPATH = $(AXIS_LIBS):$(IDENT_ABSTRACTION_DIR)/identity-abstraction.jar:$(LIBS) | ||||
|  | ||||
| CUR_DIR := $(shell pwd) | ||||
|  | ||||
| all: $(BUILDDIR)/$(WEBAPP) $(BUILDDIR)/$(MODULE_NAME).$(MODULE_EXT) $(BUILDDIR)/$(AUTH_TOKEN_SETTINGS_EDITOR) $(BUILDDIR)/$(IDEN_TOKEN_SETTINGS_EDITOR) $(BUILDDIR)/$(SVC_SETTINGS_EDITOR) $(BUILDDIR)/$(AUTH_POLICY_EDITOR) | ||||
|  | ||||
| $(BUILDDIR)/%.class: %.java | ||||
| 	@echo [======== Compiling $@ ========] | ||||
| 	$(JAVAC) -g -sourcepath ../src -classpath $(CLASSPATH) -d $(BUILDDIR)/webapp/WEB-INF/classes $< | ||||
|  | ||||
| # The following two lines may need to be added below before we jar-up the war for builds where there is no identity-abstraction install | ||||
| #	cp $(IDENT_ABSTRACTION_DIR)/*.jar $(BUILDDIR)/webapp/WEB-INF/lib/ | ||||
| #	rm $(BUILDDIR)/webapp/WEB-INF/lib/identity-abstraction.jar | ||||
|  | ||||
| $(BUILDDIR)/$(WEBAPP): $(BUILDDIR) $(CLASSES) | ||||
| 	@echo [======== Creating Webapp $@ ========] | ||||
| 	cp ../web.xml $(BUILDDIR)/webapp/WEB-INF/web.xml | ||||
| 	cp ../templates/svc.settings $(BUILDDIR)/webapp/WEB-INF/conf/svc.settings | ||||
| 	cp ../templates/authtoken.settings $(BUILDDIR)/webapp/WEB-INF/conf/authtoken.settings | ||||
| 	cp ../templates/identoken.settings $(BUILDDIR)/webapp/WEB-INF/conf/identoken.settings | ||||
| 	cp ../linux/crypto.properties $(BUILDDIR)/webapp/WEB-INF/classes/crypto.properties | ||||
| 	cp ../src/com/novell/casa/authtoksvc/Krb5_mechanism.settings $(BUILDDIR)/webapp/WEB-INF/conf/installed_auth_mechanisms/Krb5Authenticate/mechanism.settings | ||||
| 	cp ../src/com/novell/casa/authtoksvc/Pwd_mechanism.settings $(BUILDDIR)/webapp/WEB-INF/conf/installed_auth_mechanisms/PwdAuthenticate/mechanism.settings | ||||
| 	cp $(AXIS_JARS_DIR)/*.jar $(BUILDDIR)/webapp/WEB-INF/lib/ | ||||
| 	ls $(BUILDDIR)/webapp/WEB-INF/lib/ | ||||
| 	jar cvf $(BUILDDIR)/$(WEBAPP) -C $(BUILDDIR)/webapp . | ||||
| 	cp $(BUILDDIR)/$(WEBAPP) $(LIBDIR)/java/ | ||||
|  | ||||
| $(BUILDDIR)/$(MODULE_NAME).$(MODULE_EXT): $(BUILDDIR) $(CLASSES) | ||||
| 	@echo [======== Jarring $@ ========] | ||||
| 	jar cvf $(BUILDDIR)/$(MODULE_NAME).$(MODULE_EXT) $(AUTHTOKEN_FILES) | ||||
| 	cp $(BUILDDIR)/$(MODULE_NAME).$(MODULE_EXT) $(LIBDIR)/java/ | ||||
|  | ||||
| $(BUILDDIR)/$(AUTH_TOKEN_SETTINGS_EDITOR): $(BUILDDIR) $(CLASSES) | ||||
| 	@echo [======== Jarring $@ ========] | ||||
| 	jar cvmf $(MANIFEST_DIR)/AuthTokenSettingsEditor.txt $(BUILDDIR)/$(AUTH_TOKEN_SETTINGS_EDITOR) $(AUTH_TOKEN_SETTINGS_EDITOR_FILES) | ||||
| 	cp $(BUILDDIR)/$(AUTH_TOKEN_SETTINGS_EDITOR) $(LIBDIR)/java/ | ||||
|  | ||||
| $(BUILDDIR)/$(IDEN_TOKEN_SETTINGS_EDITOR): $(BUILDDIR) $(CLASSES) | ||||
| 	@echo [======== Jarring $@ ========] | ||||
| 	jar cvmf $(MANIFEST_DIR)/IdenTokenSettingsEditor.txt $(BUILDDIR)/$(IDEN_TOKEN_SETTINGS_EDITOR) $(IDEN_TOKEN_SETTINGS_EDITOR_FILES) | ||||
| 	cp $(BUILDDIR)/$(IDEN_TOKEN_SETTINGS_EDITOR) $(LIBDIR)/java/ | ||||
|  | ||||
| $(BUILDDIR)/$(SVC_SETTINGS_EDITOR): $(BUILDDIR) $(CLASSES) | ||||
| 	@echo [======== Jarring $@ ========] | ||||
| 	jar cvmf $(MANIFEST_DIR)/SvcSettingsEditor.txt $(BUILDDIR)/$(SVC_SETTINGS_EDITOR) $(SVC_SETTINGS_EDITOR_FILES) | ||||
| 	cp $(BUILDDIR)/$(SVC_SETTINGS_EDITOR) $(LIBDIR)/java/ | ||||
|  | ||||
| $(BUILDDIR)/$(AUTH_POLICY_EDITOR): $(BUILDDIR) $(CLASSES) | ||||
| 	@echo [======== Jarring $@ ========] | ||||
| 	jar cvmf $(MANIFEST_DIR)/AuthPolicyEditor.txt $(BUILDDIR)/$(AUTH_POLICY_EDITOR) $(AUTH_POLICY_EDITOR_FILES) | ||||
| 	cp $(BUILDDIR)/$(AUTH_POLICY_EDITOR) $(LIBDIR)/java/ | ||||
|  | ||||
| $(BUILDDIR): | ||||
| 	[ -d $(BUILDDIR) ] || mkdir -p $(BUILDDIR) | ||||
| 	[ -d $(BUILDDIR)/webapp ] || mkdir -p $(BUILDDIR)/webapp | ||||
| 	[ -d $(BUILDDIR)/webapp/WEB-INF ] || mkdir -p $(BUILDDIR)/webapp/WEB-INF | ||||
| 	[ -d $(BUILDDIR)/webapp/WEB-INF/classes ] || mkdir -p $(BUILDDIR)/webapp/WEB-INF/classes | ||||
| 	[ -d $(BUILDDIR)/webapp/WEB-INF/lib ] || mkdir -p $(BUILDDIR)/webapp/WEB-INF/lib | ||||
| 	[ -d $(BUILDDIR)/webapp/WEB-INF/conf ] || mkdir -p $(BUILDDIR)/webapp/WEB-INF/conf | ||||
| 	[ -d $(BUILDDIR)/webapp/WEB-INF/conf/enabled_services ] || mkdir -p $(BUILDDIR)/webapp/WEB-INF/conf/enabled_services | ||||
| 	[ -d $(BUILDDIR)/webapp/WEB-INF/conf/auth_mechanisms ] || mkdir -p $(BUILDDIR)/webapp/WEB-INF/conf/auth_mechanisms | ||||
| 	[ -d $(BUILDDIR)/webapp/WEB-INF/conf/installed_auth_mechanisms ] || mkdir -p $(BUILDDIR)/webapp/WEB-INF/conf/installed_auth_mechanisms | ||||
| 	[ -d $(BUILDDIR)/webapp/WEB-INF/conf/installed_auth_mechanisms/Krb5Authenticate ] || mkdir -p $(BUILDDIR)/webapp/WEB-INF/conf/installed_auth_mechanisms/Krb5Authenticate | ||||
| 	[ -d $(BUILDDIR)/webapp/WEB-INF/conf/installed_auth_mechanisms/PwdAuthenticate ] || mkdir -p $(BUILDDIR)/webapp/WEB-INF/conf/installed_auth_mechanisms/PwdAuthenticate | ||||
| 	[ -d $(LIBDIR) ] || mkdir -p $(LIBDIR) | ||||
| 	[ -d $(LIBDIR)/java ] || mkdir -p $(LIBDIR)/java | ||||
|  | ||||
| install-exec-local: | ||||
|  | ||||
| uninstall-local: | ||||
|  | ||||
| #installcheck-local: install | ||||
|  | ||||
| clean-local: | ||||
| 	if [ -d $(BUILDDIR) ]; then  rm -rf $(BUILDDIR); fi | ||||
| 	if [ -f $(LIBDIR)/java/$(MODULE_NAME).$(MODULE_EXT) ]; then  rm -f $(LIBDIR)/java/$(MODULE_NAME).$(MODULE_EXT); fi | ||||
| 	if [ -f $(LIBDIR)/java/$(WEBAPP) ]; then  rm -f $(LIBDIR)/java/$(WEBAPP); fi | ||||
|  | ||||
| distclean-local: | ||||
|  | ||||
| maintainer-clean-local: | ||||
| 	rm -f Makefile.in | ||||
| 	rm -f Makefile | ||||
|  | ||||
|  | ||||
|  | ||||
|  | ||||
|   | ||||
| @@ -20,9 +20,9 @@ | ||||
| # | ||||
| ####################################################################### | ||||
|  | ||||
| SUBDIRS = | ||||
| SUBDIRS = $(TARGET_OS) | ||||
|  | ||||
| DIST_SUBDIRS = Catalina linux | ||||
| DIST_SUBDIRS = Catalina linux windows | ||||
|  | ||||
| CFILES = | ||||
|  | ||||
|   | ||||
| @@ -0,0 +1,37 @@ | ||||
| ####################################################################### | ||||
| # | ||||
| #  Copyright (C) 2006 Novell, Inc. | ||||
| # | ||||
| #  This program is free software; you can redistribute it and/or | ||||
| #  modify it under the terms of the GNU General Public | ||||
| #  License as published by the Free Software Foundation; either | ||||
| #  version 2 of the License, or (at your option) any later version. | ||||
| # | ||||
| #  This program is distributed in the hope that it will be useful, | ||||
| #  but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
| #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
| #  General Public License for more details. | ||||
| # | ||||
| #  You should have received a copy of the GNU General Public | ||||
| #  License along with this program; if not, write to the Free | ||||
| #  Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||||
| # | ||||
| #  Author: Greg Richardson <grichardson@novell.com> | ||||
| # | ||||
| ####################################################################### | ||||
|  | ||||
| SUBDIRS = | ||||
|  | ||||
| DIST_SUBDIRS = | ||||
|  | ||||
| CFILES = | ||||
|  | ||||
| EXTRA_DIST = server-sun.xml | ||||
|  | ||||
| .PHONY: package package-clean package-install package-uninstall | ||||
| package package-clean package-install package-uninstall: | ||||
| 	$(MAKE) -C $(TARGET_OS) $@ | ||||
|  | ||||
| maintainer-clean-local: | ||||
| 	rm -f Makefile.in | ||||
|  | ||||
| @@ -0,0 +1,382 @@ | ||||
| <!-- Example Server Configuration File --> | ||||
| <!-- Note that component elements are nested corresponding to their | ||||
|      parent-child relationships with each other --> | ||||
|  | ||||
| <!-- A "Server" is a singleton element that represents the entire JVM, | ||||
|      which may contain one or more "Service" instances.  The Server | ||||
|      listens for a shutdown command on the indicated port. | ||||
|  | ||||
|      Note:  A "Server" is not itself a "Container", so you may not | ||||
|      define subcomponents such as "Valves" or "Loggers" at this level. | ||||
|  --> | ||||
|  | ||||
| <Server port="8005" shutdown="SHUTDOWN"> | ||||
|  | ||||
|   <!-- Comment these entries out to disable JMX MBeans support used for the  | ||||
|        administration web application --> | ||||
|   <Listener className="org.apache.catalina.core.AprLifecycleListener" /> | ||||
|   <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" /> | ||||
|   <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" /> | ||||
|   <Listener className="org.apache.catalina.storeconfig.StoreConfigLifecycleListener"/> | ||||
|  | ||||
|   <!-- Global JNDI resources --> | ||||
|   <GlobalNamingResources> | ||||
|  | ||||
|     <!-- Test entry for demonstration purposes --> | ||||
|     <Environment name="simpleValue" type="java.lang.Integer" value="30"/> | ||||
|  | ||||
|     <!-- Editable user database that can also be used by | ||||
|          UserDatabaseRealm to authenticate users --> | ||||
|     <Resource name="UserDatabase" auth="Container" | ||||
|               type="org.apache.catalina.UserDatabase" | ||||
|        description="User database that can be updated and saved" | ||||
|            factory="org.apache.catalina.users.MemoryUserDatabaseFactory" | ||||
|           pathname="conf/tomcat-users.xml" /> | ||||
|  | ||||
|   </GlobalNamingResources> | ||||
|  | ||||
|   <!-- A "Service" is a collection of one or more "Connectors" that share | ||||
|        a single "Container" (and therefore the web applications visible | ||||
|        within that Container).  Normally, that Container is an "Engine", | ||||
|        but this is not required. | ||||
|  | ||||
|        Note:  A "Service" is not itself a "Container", so you may not | ||||
|        define subcomponents such as "Valves" or "Loggers" at this level. | ||||
|    --> | ||||
|  | ||||
|   <!-- Define the Tomcat Stand-Alone Service --> | ||||
|   <Service name="Catalina"> | ||||
|  | ||||
|     <!-- A "Connector" represents an endpoint by which requests are received | ||||
|          and responses are returned.  Each Connector passes requests on to the | ||||
|          associated "Container" (normally an Engine) for processing. | ||||
|  | ||||
|          By default, a non-SSL HTTP/1.1 Connector is established on port 8080. | ||||
|          You can also enable an SSL HTTP/1.1 Connector on port 8443 by | ||||
|          following the instructions below and uncommenting the second Connector | ||||
|          entry.  SSL support requires the following steps (see the SSL Config | ||||
|          HOWTO in the Tomcat 5 documentation bundle for more detailed | ||||
|          instructions): | ||||
|          * If your JDK version 1.3 or prior, download and install JSSE 1.0.2 or | ||||
|            later, and put the JAR files into "$JAVA_HOME/jre/lib/ext". | ||||
|          * Execute: | ||||
|              %JAVA_HOME%\bin\keytool -genkey -alias tomcat -keyalg RSA (Windows) | ||||
|              $JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA  (Unix) | ||||
|            with a password value of "changeit" for both the certificate and | ||||
|            the keystore itself. | ||||
|  | ||||
|          By default, DNS lookups are enabled when a web application calls | ||||
|          request.getRemoteHost().  This can have an adverse impact on | ||||
|          performance, so you can disable it by setting the | ||||
|          "enableLookups" attribute to "false".  When DNS lookups are disabled, | ||||
|          request.getRemoteHost() will return the String version of the | ||||
|          IP address of the remote client. | ||||
|     --> | ||||
|  | ||||
|     <!-- Define a non-SSL HTTP/1.1 Connector on port 8080 --> | ||||
|     <Connector port="8080" maxHttpHeaderSize="8192" | ||||
|                maxThreads="150" minSpareThreads="25" maxSpareThreads="75" | ||||
|                enableLookups="false" redirectPort="8443" acceptCount="100" | ||||
|                connectionTimeout="20000" disableUploadTimeout="true" /> | ||||
|     <!-- Note : To disable connection timeouts, set connectionTimeout value | ||||
|      to 0 --> | ||||
| 	 | ||||
| 	<!-- Note : To use gzip compression you could set the following properties : | ||||
| 	 | ||||
| 			   compression="on"  | ||||
| 			   compressionMinSize="2048"  | ||||
| 			   noCompressionUserAgents="gozilla, traviata"  | ||||
| 			   compressableMimeType="text/html,text/xml" | ||||
| 	--> | ||||
|  | ||||
|     <!-- Define a SSL HTTP/1.1 Connector on port 8443 --> | ||||
|     <!-- | ||||
|     <Connector port="8443" maxHttpHeaderSize="8192" | ||||
|                maxThreads="150" minSpareThreads="25" maxSpareThreads="75" | ||||
|                enableLookups="false" disableUploadTimeout="true" | ||||
|                acceptCount="100" scheme="https" secure="true" | ||||
|                clientAuth="false" sslProtocol="TLS" /> | ||||
|     --> | ||||
|  | ||||
|     <!-- Define an AJP 1.3 Connector on port 8009 --> | ||||
|     <Connector port="8009"  | ||||
|                enableLookups="false" redirectPort="8443" protocol="AJP/1.3" /> | ||||
|  | ||||
|     <!-- Define a Proxied HTTP/1.1 Connector on port 8082 --> | ||||
|     <!-- See proxy documentation for more information about using this. --> | ||||
|     <!-- | ||||
|     <Connector port="8082"  | ||||
|                maxThreads="150" minSpareThreads="25" maxSpareThreads="75" | ||||
|                enableLookups="false" acceptCount="100" connectionTimeout="20000" | ||||
|                proxyPort="80" disableUploadTimeout="true" /> | ||||
|     --> | ||||
|  | ||||
|     <!-- Define a SSL Coyote HTTP/1.1 Connector on port 2645 --> | ||||
|     <Connector port="2645"  | ||||
|                maxThreads="150" minSpareThreads="25" maxSpareThreads="75" | ||||
|                enableLookups="false" disableUploadTimeout="true" | ||||
|                acceptCount="100" debug="0" scheme="https" secure="true" | ||||
|                clientAuth="false" sslProtocol="TLS" | ||||
|                keystoreFile="ATS_INSTALL_DIRats\etc\keys\server\jks-store" | ||||
|                keystorePass="secret" algorithm="SunX509" /> | ||||
|  | ||||
|     <!-- Define a Coyote/JK2 AJP 1.3 Connector on port 8009 | ||||
|     <Connector port="8009"  | ||||
|                enableLookups="false" redirectPort="8443" debug="0" | ||||
|                protocol="AJP/1.3" /> | ||||
|     --> | ||||
|  | ||||
|     <!-- An Engine represents the entry point (within Catalina) that processes | ||||
|          every request.  The Engine implementation for Tomcat stand alone | ||||
|          analyzes the HTTP headers included with the request, and passes them | ||||
|          on to the appropriate Host (virtual host). --> | ||||
|  | ||||
|     <!-- You should set jvmRoute to support load-balancing via AJP ie : | ||||
|     <Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm1">          | ||||
|     -->  | ||||
|           | ||||
|     <!-- Define the top level container in our container hierarchy --> | ||||
|     <Engine name="Catalina" defaultHost="localhost"> | ||||
|  | ||||
|       <!-- The request dumper valve dumps useful debugging information about | ||||
|            the request headers and cookies that were received, and the response | ||||
|            headers and cookies that were sent, for all requests received by | ||||
|            this instance of Tomcat.  If you care only about requests to a | ||||
|            particular virtual host, or a particular application, nest this | ||||
|            element inside the corresponding <Host> or <Context> entry instead. | ||||
|  | ||||
|            For a similar mechanism that is portable to all Servlet 2.4 | ||||
|            containers, check out the "RequestDumperFilter" Filter in the | ||||
|            example application (the source for this filter may be found in | ||||
|            "$CATALINA_HOME/webapps/examples/WEB-INF/classes/filters"). | ||||
|  | ||||
|            Request dumping is disabled by default.  Uncomment the following | ||||
|            element to enable it. --> | ||||
|       <!-- | ||||
|       <Valve className="org.apache.catalina.valves.RequestDumperValve"/> | ||||
|       --> | ||||
|  | ||||
|       <!-- Because this Realm is here, an instance will be shared globally --> | ||||
|  | ||||
|       <!-- This Realm uses the UserDatabase configured in the global JNDI | ||||
|            resources under the key "UserDatabase".  Any edits | ||||
|            that are performed against this UserDatabase are immediately | ||||
|            available for use by the Realm.  --> | ||||
|       <Realm className="org.apache.catalina.realm.UserDatabaseRealm" | ||||
|              resourceName="UserDatabase"/> | ||||
|  | ||||
|       <!-- Comment out the old realm but leave here for now in case we | ||||
|            need to go back quickly --> | ||||
|       <!-- | ||||
|       <Realm className="org.apache.catalina.realm.MemoryRealm" /> | ||||
|       --> | ||||
|  | ||||
|       <!-- Replace the above Realm with one of the following to get a Realm | ||||
|            stored in a database and accessed via JDBC --> | ||||
|  | ||||
|       <!-- | ||||
|       <Realm  className="org.apache.catalina.realm.JDBCRealm" | ||||
|              driverName="org.gjt.mm.mysql.Driver" | ||||
|           connectionURL="jdbc:mysql://localhost/authority" | ||||
|          connectionName="test" connectionPassword="test" | ||||
|               userTable="users" userNameCol="user_name" userCredCol="user_pass" | ||||
|           userRoleTable="user_roles" roleNameCol="role_name" /> | ||||
|       --> | ||||
|  | ||||
|       <!-- | ||||
|       <Realm  className="org.apache.catalina.realm.JDBCRealm" | ||||
|              driverName="oracle.jdbc.driver.OracleDriver" | ||||
|           connectionURL="jdbc:oracle:thin:@ntserver:1521:ORCL" | ||||
|          connectionName="scott" connectionPassword="tiger" | ||||
|               userTable="users" userNameCol="user_name" userCredCol="user_pass" | ||||
|           userRoleTable="user_roles" roleNameCol="role_name" /> | ||||
|       --> | ||||
|  | ||||
|       <!-- | ||||
|       <Realm  className="org.apache.catalina.realm.JDBCRealm" | ||||
|              driverName="sun.jdbc.odbc.JdbcOdbcDriver" | ||||
|           connectionURL="jdbc:odbc:CATALINA" | ||||
|               userTable="users" userNameCol="user_name" userCredCol="user_pass" | ||||
|           userRoleTable="user_roles" roleNameCol="role_name" /> | ||||
|       --> | ||||
|  | ||||
|       <!-- Define the default virtual host | ||||
|            Note: XML Schema validation will not work with Xerces 2.2. | ||||
|        --> | ||||
|       <Host name="localhost" appBase="webapps" | ||||
|        unpackWARs="true" autoDeploy="true" | ||||
|        xmlValidation="false" xmlNamespaceAware="false"> | ||||
|  | ||||
|         <!-- Defines a cluster for this node, | ||||
|              By defining this element, means that every manager will be changed. | ||||
|              So when running a cluster, only make sure that you have webapps in there | ||||
|              that need to be clustered and remove the other ones. | ||||
|              A cluster has the following parameters: | ||||
|  | ||||
|              className = the fully qualified name of the cluster class | ||||
|  | ||||
|              clusterName = a descriptive name for your cluster, can be anything | ||||
|  | ||||
|              mcastAddr = the multicast address, has to be the same for all the nodes | ||||
|  | ||||
|              mcastPort = the multicast port, has to be the same for all the nodes | ||||
|               | ||||
|              mcastBindAddress = bind the multicast socket to a specific address | ||||
|               | ||||
|              mcastTTL = the multicast TTL if you want to limit your broadcast | ||||
|               | ||||
|              mcastSoTimeout = the multicast readtimeout  | ||||
|  | ||||
|              mcastFrequency = the number of milliseconds in between sending a "I'm alive" heartbeat | ||||
|  | ||||
|              mcastDropTime = the number a milliseconds before a node is considered "dead" if no heartbeat is received | ||||
|  | ||||
|              tcpThreadCount = the number of threads to handle incoming replication requests, optimal would be the same amount of threads as nodes  | ||||
|  | ||||
|              tcpListenAddress = the listen address (bind address) for TCP cluster request on this host,  | ||||
|                                 in case of multiple ethernet cards. | ||||
|                                 auto means that address becomes | ||||
|                                 InetAddress.getLocalHost().getHostAddress() | ||||
|  | ||||
|              tcpListenPort = the tcp listen port | ||||
|  | ||||
|              tcpSelectorTimeout = the timeout (ms) for the Selector.select() method in case the OS | ||||
|                                   has a wakup bug in java.nio. Set to 0 for no timeout | ||||
|  | ||||
|              printToScreen = true means that managers will also print to std.out | ||||
|  | ||||
|              expireSessionsOnShutdown = true means that  | ||||
|  | ||||
|              useDirtyFlag = true means that we only replicate a session after setAttribute,removeAttribute has been called. | ||||
|                             false means to replicate the session after each request. | ||||
|                             false means that replication would work for the following piece of code: (only for SimpleTcpReplicationManager) | ||||
|                             <% | ||||
|                             HashMap map = (HashMap)session.getAttribute("map"); | ||||
|                             map.put("key","value"); | ||||
|                             %> | ||||
|              replicationMode = can be either 'pooled', 'synchronous' or 'asynchronous'. | ||||
|                                * Pooled means that the replication happens using several sockets in a synchronous way. Ie, the data gets replicated, then the request return. This is the same as the 'synchronous' setting except it uses a pool of sockets, hence it is multithreaded. This is the fastest and safest configuration. To use this, also increase the nr of tcp threads that you have dealing with replication. | ||||
|                                * Synchronous means that the thread that executes the request, is also the | ||||
|                                thread the replicates the data to the other nodes, and will not return until all | ||||
|                                nodes have received the information. | ||||
|                                * Asynchronous means that there is a specific 'sender' thread for each cluster node, | ||||
|                                so the request thread will queue the replication request into a "smart" queue, | ||||
|                                and then return to the client. | ||||
|                                The "smart" queue is a queue where when a session is added to the queue, and the same session | ||||
|                                already exists in the queue from a previous request, that session will be replaced | ||||
|                                in the queue instead of replicating two requests. This almost never happens, unless there is a  | ||||
|                                large network delay. | ||||
|         -->              | ||||
|         <!-- | ||||
|             When configuring for clustering, you also add in a valve to catch all the requests | ||||
|             coming in, at the end of the request, the session may or may not be replicated. | ||||
|             A session is replicated if and only if all the conditions are met: | ||||
|             1. useDirtyFlag is true or setAttribute or removeAttribute has been called AND | ||||
|             2. a session exists (has been created) | ||||
|             3. the request is not trapped by the "filter" attribute | ||||
|  | ||||
|             The filter attribute is to filter out requests that could not modify the session, | ||||
|             hence we don't replicate the session after the end of this request. | ||||
|             The filter is negative, ie, anything you put in the filter, you mean to filter out, | ||||
|             ie, no replication will be done on requests that match one of the filters. | ||||
|             The filter attribute is delimited by ;, so you can't escape out ; even if you wanted to. | ||||
|  | ||||
|             filter=".*\.gif;.*\.js;" means that we will not replicate the session after requests with the URI | ||||
|             ending with .gif and .js are intercepted. | ||||
|              | ||||
|             The deployer element can be used to deploy apps cluster wide. | ||||
|             Currently the deployment only deploys/undeploys to working members in the cluster | ||||
|             so no WARs are copied upons startup of a broken node. | ||||
|             The deployer watches a directory (watchDir) for WAR files when watchEnabled="true" | ||||
|             When a new war file is added the war gets deployed to the local instance, | ||||
|             and then deployed to the other instances in the cluster. | ||||
|             When a war file is deleted from the watchDir the war is undeployed locally  | ||||
|             and cluster wide | ||||
|         --> | ||||
|          | ||||
|         <!-- | ||||
|         <Cluster className="org.apache.catalina.cluster.tcp.SimpleTcpCluster" | ||||
|                  managerClassName="org.apache.catalina.cluster.session.DeltaManager" | ||||
|                  expireSessionsOnShutdown="false" | ||||
|                  useDirtyFlag="true" | ||||
|                  notifyListenersOnReplication="true"> | ||||
|  | ||||
|             <Membership  | ||||
|                 className="org.apache.catalina.cluster.mcast.McastService" | ||||
|                 mcastAddr="228.0.0.4" | ||||
|                 mcastPort="45564" | ||||
|                 mcastFrequency="500" | ||||
|                 mcastDropTime="3000"/> | ||||
|  | ||||
|             <Receiver  | ||||
|                 className="org.apache.catalina.cluster.tcp.ReplicationListener" | ||||
|                 tcpListenAddress="auto" | ||||
|                 tcpListenPort="4001" | ||||
|                 tcpSelectorTimeout="100" | ||||
|                 tcpThreadCount="6"/> | ||||
|  | ||||
|             <Sender | ||||
|                 className="org.apache.catalina.cluster.tcp.ReplicationTransmitter" | ||||
|                 replicationMode="pooled" | ||||
|                 ackTimeout="15000" | ||||
|                 waitForAck="true"/> | ||||
|  | ||||
|             <Valve className="org.apache.catalina.cluster.tcp.ReplicationValve" | ||||
|                    filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/> | ||||
|                     | ||||
|             <Deployer className="org.apache.catalina.cluster.deploy.FarmWarDeployer" | ||||
|                       tempDir="/tmp/war-temp/" | ||||
|                       deployDir="/tmp/war-deploy/" | ||||
|                       watchDir="/tmp/war-listen/" | ||||
|                       watchEnabled="false"/> | ||||
|                        | ||||
|             <ClusterListener className="org.apache.catalina.cluster.session.ClusterSessionListener"/> | ||||
|         </Cluster> | ||||
|         -->         | ||||
|  | ||||
|  | ||||
|  | ||||
|         <!-- Normally, users must authenticate themselves to each web app | ||||
|              individually.  Uncomment the following entry if you would like | ||||
|              a user to be authenticated the first time they encounter a | ||||
|              resource protected by a security constraint, and then have that | ||||
|              user identity maintained across *all* web applications contained | ||||
|              in this virtual host. --> | ||||
|         <!-- | ||||
|         <Valve className="org.apache.catalina.authenticator.SingleSignOn" /> | ||||
|         --> | ||||
|  | ||||
|         <!-- Access log processes all requests for this virtual host.  By | ||||
|              default, log files are created in the "logs" directory relative to | ||||
|              $CATALINA_HOME.  If you wish, you can specify a different | ||||
|              directory with the "directory" attribute.  Specify either a relative | ||||
|              (to $CATALINA_HOME) or absolute path to the desired directory. | ||||
|         --> | ||||
|         <!-- | ||||
|         <Valve className="org.apache.catalina.valves.AccessLogValve" | ||||
|                  directory="logs"  prefix="localhost_access_log." suffix=".txt" | ||||
|                  pattern="common" resolveHosts="false"/> | ||||
|         --> | ||||
|  | ||||
|         <!-- Access log processes all requests for this virtual host.  By | ||||
|              default, log files are created in the "logs" directory relative to | ||||
|              $CATALINA_HOME.  If you wish, you can specify a different | ||||
|              directory with the "directory" attribute.  Specify either a relative | ||||
|              (to $CATALINA_HOME) or absolute path to the desired directory. | ||||
|              This access log implementation is optimized for maximum performance, | ||||
|              but is hardcoded to support only the "common" and "combined" patterns. | ||||
|         --> | ||||
|         <!-- | ||||
|         <Valve className="org.apache.catalina.valves.FastCommonAccessLogValve" | ||||
|                  directory="logs"  prefix="localhost_access_log." suffix=".txt" | ||||
|                  pattern="common" resolveHosts="false"/> | ||||
|         --> | ||||
|  | ||||
|       </Host> | ||||
|  | ||||
|     </Engine> | ||||
|  | ||||
|   </Service> | ||||
|  | ||||
| </Server> | ||||
|  | ||||
							
								
								
									
										209
									
								
								CASA-auth-token/server-java/Svc/windows/Makefile.am
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										209
									
								
								CASA-auth-token/server-java/Svc/windows/Makefile.am
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,209 @@ | ||||
| ####################################################################### | ||||
| # | ||||
| #  Copyright (C) 2006 Novell, Inc. | ||||
| # | ||||
| #  This program is free software; you can redistribute it and/or | ||||
| #  modify it under the terms of the GNU General Public | ||||
| #  License as published by the Free Software Foundation; either | ||||
| #  version 2 of the License, or (at your option) any later version. | ||||
| # | ||||
| #  This program is distributed in the hope that it will be useful, | ||||
| #  but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
| #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
| #  General Public License for more details. | ||||
| # | ||||
| #  You should have received a copy of the GNU General Public | ||||
| #  License along with this program; if not, write to the Free | ||||
| #  Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||||
| # | ||||
| #  Author: Greg Richardson <grichardson@novell.com> | ||||
| # | ||||
| ####################################################################### | ||||
|  | ||||
| SUBDIRS = | ||||
|  | ||||
| DIST_SUBDIRS = | ||||
|  | ||||
| CFILES = | ||||
|  | ||||
| EXTRA_DIST = crypto.properties | ||||
|  | ||||
| ROOT = ../.. | ||||
|  | ||||
| LIBDIR = $(ROOT)/$(LIB) | ||||
|  | ||||
| IDENT_ABSTRACTION_DIR = $(BANDIT_DIR) | ||||
| #AXIS_JARS_DIR = $(PWD)/external | ||||
| AXIS_JARS_DIR = ../external | ||||
|  | ||||
|  | ||||
| MANIFEST_DIR = ../manifest | ||||
|  | ||||
| JAVAC= javac | ||||
|  | ||||
| WEBAPP_NAME = CasaAuthTokenSvc | ||||
| WEBAPP_EXT = war | ||||
| MODULE_NAME = CasaAuthToken | ||||
| MODULE_EXT = jar | ||||
| AUTH_TOKEN_SETTINGS_EDITOR_MODULE_NAME = CasaAuthTokenSettingsEditor | ||||
| IDEN_TOKEN_SETTINGS_EDITOR_MODULE_NAME = CasaIdenTokenSettingsEditor | ||||
| SVC_SETTINGS_EDITOR_MODULE_NAME = CasaSvcSettingsEditor | ||||
| AUTH_POLICY_EDITOR_MODULE_NAME = CasaAuthPolicyEditor | ||||
|  | ||||
| JAVAFILES = ../src/com/novell/casa/authtoksvc/ProtoDefs.java \ | ||||
| 	../src/com/novell/casa/authtoksvc/AuthMechConfig.java \ | ||||
| 	../src/com/novell/casa/authtoksvc/SvcConfig.java \ | ||||
| 	../src/com/novell/casa/authtoksvc/IdenTokenConfig.java \ | ||||
| 	../src/com/novell/casa/authtoksvc/AuthTokenConfig.java \ | ||||
| 	../src/com/novell/casa/authtoksvc/EnabledSvcsConfig.java \ | ||||
| 	../src/com/novell/casa/authtoksvc/AuthMechanism.java \ | ||||
| 	../src/com/novell/casa/authtoksvc/WSSecurity.java \ | ||||
| 	../src/com/novell/casa/authtoksvc/SessionToken.java \ | ||||
| 	../src/com/novell/casa/authtoksvc/Authenticate.java \ | ||||
| 	../src/com/novell/casa/authtoksvc/RpcMethod.java \ | ||||
| 	../src/com/novell/casa/authtoksvc/Rpc.java \ | ||||
| 	../src/com/novell/casa/authtoksvc/GetAuthPolicy.java \ | ||||
| 	../src/com/novell/casa/authtoksvc/Base64Coder.java \ | ||||
| 	../src/com/novell/casa/authtoksvc/AuthReqMsg.java \ | ||||
| 	../src/com/novell/casa/authtoksvc/AuthRespMsg.java \ | ||||
| 	../src/com/novell/casa/authtoksvc/IdentityToken.java \ | ||||
| 	../src/com/novell/casa/authtoksvc/CasaIdentityToken.java \ | ||||
| 	../src/com/novell/casa/authtoksvc/AuthToken.java \ | ||||
| 	../src/com/novell/casa/authtoksvc/GetAuthPolicyReqMsg.java \ | ||||
| 	../src/com/novell/casa/authtoksvc/GetAuthPolicyRespMsg.java \ | ||||
| 	../src/com/novell/casa/authtoksvc/GetAuthToken.java \ | ||||
| 	../src/com/novell/casa/authtoksvc/GetAuthTokReqMsg.java \ | ||||
| 	../src/com/novell/casa/authtoksvc/GetAuthTokRespMsg.java \ | ||||
| 	../src/com/novell/casa/authtoksvc/Krb5Authenticate.java \ | ||||
| 	../src/com/novell/casa/authtoksvc/PwdAuthenticate.java \ | ||||
| 	../src/com/novell/casa/authtoksvc/IVerifySetting.java \ | ||||
| 	../src/com/novell/casa/authtoksvc/SettingsFileUtil.java \ | ||||
| 	../src/com/novell/casa/authtoksvc/SettingsFileSAXHandler.java \ | ||||
| 	../src/com/novell/casa/authtoksvc/AuthPolicyEditor.java \ | ||||
| 	../src/com/novell/casa/authtoksvc/AuthTokenSettingsEditor.java \ | ||||
| 	../src/com/novell/casa/authtoksvc/IdenTokenSettingsEditor.java \ | ||||
| 	../src/com/novell/casa/authtoksvc/SvcSettingsEditor.java | ||||
|  | ||||
| BUILDDIR = ../build | ||||
|  | ||||
| AUTHTOKEN_FILES = -C $(BUILDDIR)/webapp/WEB-INF/classes com | ||||
|  | ||||
| AUTH_TOKEN_SETTINGS_EDITOR_FILES = -C $(BUILDDIR)/webapp/WEB-INF/classes com/novell/casa/authtoksvc/IVerifySetting.class \ | ||||
| 	-C $(BUILDDIR)/webapp/WEB-INF/classes com/novell/casa/authtoksvc/SettingsFileUtil.class \ | ||||
| 	-C $(BUILDDIR)/webapp/WEB-INF/classes com/novell/casa/authtoksvc/AuthTokenSettingsEditor.class \ | ||||
| 	-C $(BUILDDIR)/webapp/WEB-INF/classes com/novell/casa/authtoksvc/AuthTokenConfig.class | ||||
|  | ||||
| IDEN_TOKEN_SETTINGS_EDITOR_FILES = -C $(BUILDDIR)/webapp/WEB-INF/classes com/novell/casa/authtoksvc/IVerifySetting.class \ | ||||
| 	-C $(BUILDDIR)/webapp/WEB-INF/classes com/novell/casa/authtoksvc/SettingsFileUtil.class \ | ||||
| 	-C $(BUILDDIR)/webapp/WEB-INF/classes com/novell/casa/authtoksvc/IdenTokenSettingsEditor.class \ | ||||
| 	-C $(BUILDDIR)/webapp/WEB-INF/classes com/novell/casa/authtoksvc/IdenTokenConfig.class | ||||
|  | ||||
| SVC_SETTINGS_EDITOR_FILES = -C $(BUILDDIR)/webapp/WEB-INF/classes com/novell/casa/authtoksvc/IVerifySetting.class \ | ||||
| 	-C $(BUILDDIR)/webapp/WEB-INF/classes com/novell/casa/authtoksvc/SettingsFileUtil.class \ | ||||
| 	-C $(BUILDDIR)/webapp/WEB-INF/classes com/novell/casa/authtoksvc/SvcSettingsEditor.class \ | ||||
| 	-C $(BUILDDIR)/webapp/WEB-INF/classes com/novell/casa/authtoksvc/SvcConfig.class | ||||
|  | ||||
| AUTH_POLICY_EDITOR_FILES = -C $(BUILDDIR)/webapp/WEB-INF/classes com/novell/casa/authtoksvc/AuthPolicyEditor.class | ||||
|  | ||||
| WEBAPP = $(WEBAPP_NAME).$(WEBAPP_EXT) | ||||
|  | ||||
| AUTH_TOKEN_SETTINGS_EDITOR = $(AUTH_TOKEN_SETTINGS_EDITOR_MODULE_NAME).$(MODULE_EXT) | ||||
|  | ||||
| IDEN_TOKEN_SETTINGS_EDITOR = $(IDEN_TOKEN_SETTINGS_EDITOR_MODULE_NAME).$(MODULE_EXT) | ||||
|  | ||||
| SVC_SETTINGS_EDITOR = $(SVC_SETTINGS_EDITOR_MODULE_NAME).$(MODULE_EXT) | ||||
|  | ||||
| AUTH_POLICY_EDITOR = $(AUTH_POLICY_EDITOR_MODULE_NAME).$(MODULE_EXT) | ||||
|  | ||||
| CLASSES = $(addprefix $(BUILDDIR)/, $(JAVAFILES:%.java=%.class)) | ||||
|  | ||||
| #AXIS_LIBS = $(AXIS_JARS_DIR)/axis.jar:$(AXIS_JARS_DIR)/axis-ant.jar:$(AXIS_JARS_DIR)/commons-discovery-0.2.jar:$(AXIS_JARS_DIR)/commons-logging-1.0.4.jar:$(AXIS_JARS_DIR)/commons-logging-api.jar:$(AXIS_JARS_DIR)/jaxrpc.jar:$(AXIS_JARS_DIR)/log4j-1.2.8.jar:$(AXIS_JARS_DIR)/saaj.jar:$(AXIS_JARS_DIR)/wsdl4j-1.5.1.jar:$(AXIS_JARS_DIR)/wss4j-1.5.0.jar:$(AXIS_JARS_DIR)/xalan.jar:$(AXIS_JARS_DIR)/xercesImpl.jar:$(AXIS_JARS_DIR)/xml-apis.jar:$(AXIS_JARS_DIR)/xmlsec-1.2.1.jar | ||||
| AXIS_LIBS = $(AXIS_JARS_DIR)/axis.jar;$(AXIS_JARS_DIR)/saaj.jar;$(AXIS_JARS_DIR)/wss4j-1.5.0.jar;$(AXIS_JARS_DIR)/xml-apis.jar;$(AXIS_JARS_DIR)/xmlsec-1.2.1.jar;$(AXIS_JARS_DIR)/xercesImpl.jar | ||||
| #AXIS_LIBS = $(AXIS_JARS_DIR)/wss4j-1.5.0.jar | ||||
|  | ||||
| LIBS = $(TOMCAT_DIR)/servlet-api.jar | ||||
| CLASSPATH = $(AXIS_LIBS);$(IDENT_ABSTRACTION_DIR)/identity-abstraction.jar;$(IDENT_ABSTRACTION_DIR)/bandit-util.jar;$(LIBS) | ||||
|  | ||||
| CUR_DIR := $(shell pwd) | ||||
|  | ||||
| all: $(BUILDDIR)/$(WEBAPP) $(BUILDDIR)/$(MODULE_NAME).$(MODULE_EXT) $(BUILDDIR)/$(AUTH_TOKEN_SETTINGS_EDITOR) $(BUILDDIR)/$(IDEN_TOKEN_SETTINGS_EDITOR) $(BUILDDIR)/$(SVC_SETTINGS_EDITOR) $(BUILDDIR)/$(AUTH_POLICY_EDITOR) | ||||
|  | ||||
| $(BUILDDIR)/%.class: %.java | ||||
| 	@echo [======== Compiling $@ ========] | ||||
| 	$(JAVAC) -g -sourcepath ../src -classpath "$(CLASSPATH)" -d $(BUILDDIR)/webapp/WEB-INF/classes $< | ||||
|  | ||||
| # The following two lines may need to be added below before we jar-up the war for builds where there is no identity-abstraction install | ||||
| #	cp $(IDENT_ABSTRACTION_DIR)/*.jar $(BUILDDIR)/webapp/WEB-INF/lib/ | ||||
| #	rm $(BUILDDIR)/webapp/WEB-INF/lib/identity-abstraction.jar | ||||
|  | ||||
| $(BUILDDIR)/$(WEBAPP): $(BUILDDIR) $(CLASSES) | ||||
| 	@echo [======== Creating Webapp $@ ========] | ||||
| 	cp ../web.xml $(BUILDDIR)/webapp/WEB-INF/web.xml | ||||
| 	cp ../templates/svc.settings $(BUILDDIR)/webapp/WEB-INF/conf/svc.settings | ||||
| 	cp ../templates/authtoken.settings $(BUILDDIR)/webapp/WEB-INF/conf/authtoken.settings | ||||
| 	cp ../templates/identoken.settings $(BUILDDIR)/webapp/WEB-INF/conf/identoken.settings | ||||
| 	cp ../windows/crypto.properties $(BUILDDIR)/webapp/WEB-INF/classes/crypto.properties | ||||
| 	cp ../src/com/novell/casa/authtoksvc/Krb5_mechanism.settings $(BUILDDIR)/webapp/WEB-INF/conf/installed_auth_mechanisms/Krb5Authenticate/mechanism.settings | ||||
| 	cp ../src/com/novell/casa/authtoksvc/Pwd_mechanism.settings $(BUILDDIR)/webapp/WEB-INF/conf/installed_auth_mechanisms/PwdAuthenticate/mechanism.settings | ||||
| 	cp $(AXIS_JARS_DIR)/*.jar $(BUILDDIR)/webapp/WEB-INF/lib/ | ||||
| 	ls $(BUILDDIR)/webapp/WEB-INF/lib/ | ||||
| 	jar cvf $(BUILDDIR)/$(WEBAPP) -C $(BUILDDIR)/webapp . | ||||
| 	echo "LIBDIR = $(LIBDIR)" | ||||
| 	cp $(BUILDDIR)/$(WEBAPP) $(LIBDIR)/java/ | ||||
|  | ||||
| $(BUILDDIR)/$(MODULE_NAME).$(MODULE_EXT): $(BUILDDIR) $(CLASSES) | ||||
| 	@echo [======== Jarring $@ ========] | ||||
| 	jar cvf $(BUILDDIR)/$(MODULE_NAME).$(MODULE_EXT) $(AUTHTOKEN_FILES) | ||||
| 	cp $(BUILDDIR)/$(MODULE_NAME).$(MODULE_EXT) $(LIBDIR)/java/ | ||||
|  | ||||
| $(BUILDDIR)/$(AUTH_TOKEN_SETTINGS_EDITOR): $(BUILDDIR) $(CLASSES) | ||||
| 	@echo [======== Jarring $@ ========] | ||||
| 	jar cvmf $(MANIFEST_DIR)/AuthTokenSettingsEditor.txt $(BUILDDIR)/$(AUTH_TOKEN_SETTINGS_EDITOR) $(AUTH_TOKEN_SETTINGS_EDITOR_FILES) | ||||
| 	cp $(BUILDDIR)/$(AUTH_TOKEN_SETTINGS_EDITOR) $(LIBDIR)/java/ | ||||
|  | ||||
| $(BUILDDIR)/$(IDEN_TOKEN_SETTINGS_EDITOR): $(BUILDDIR) $(CLASSES) | ||||
| 	@echo [======== Jarring $@ ========] | ||||
| 	jar cvmf $(MANIFEST_DIR)/IdenTokenSettingsEditor.txt $(BUILDDIR)/$(IDEN_TOKEN_SETTINGS_EDITOR) $(IDEN_TOKEN_SETTINGS_EDITOR_FILES) | ||||
| 	cp $(BUILDDIR)/$(IDEN_TOKEN_SETTINGS_EDITOR) $(LIBDIR)/java/ | ||||
|  | ||||
| $(BUILDDIR)/$(SVC_SETTINGS_EDITOR): $(BUILDDIR) $(CLASSES) | ||||
| 	@echo [======== Jarring $@ ========] | ||||
| 	jar cvmf $(MANIFEST_DIR)/SvcSettingsEditor.txt $(BUILDDIR)/$(SVC_SETTINGS_EDITOR) $(SVC_SETTINGS_EDITOR_FILES) | ||||
| 	cp $(BUILDDIR)/$(SVC_SETTINGS_EDITOR) $(LIBDIR)/java/ | ||||
|  | ||||
| $(BUILDDIR)/$(AUTH_POLICY_EDITOR): $(BUILDDIR) $(CLASSES) | ||||
| 	@echo [======== Jarring $@ ========] | ||||
| 	jar cvmf $(MANIFEST_DIR)/AuthPolicyEditor.txt $(BUILDDIR)/$(AUTH_POLICY_EDITOR) $(AUTH_POLICY_EDITOR_FILES) | ||||
| 	cp $(BUILDDIR)/$(AUTH_POLICY_EDITOR) $(LIBDIR)/java/ | ||||
|  | ||||
| $(BUILDDIR): | ||||
| 	[ -d $(BUILDDIR) ] || mkdir -p $(BUILDDIR) | ||||
| 	[ -d $(BUILDDIR)/webapp ] || mkdir -p $(BUILDDIR)/webapp | ||||
| 	[ -d $(BUILDDIR)/webapp/WEB-INF ] || mkdir -p $(BUILDDIR)/webapp/WEB-INF | ||||
| 	[ -d $(BUILDDIR)/webapp/WEB-INF/classes ] || mkdir -p $(BUILDDIR)/webapp/WEB-INF/classes | ||||
| 	[ -d $(BUILDDIR)/webapp/WEB-INF/lib ] || mkdir -p $(BUILDDIR)/webapp/WEB-INF/lib | ||||
| 	[ -d $(BUILDDIR)/webapp/WEB-INF/conf ] || mkdir -p $(BUILDDIR)/webapp/WEB-INF/conf | ||||
| 	[ -d $(BUILDDIR)/webapp/WEB-INF/conf/enabled_services ] || mkdir -p $(BUILDDIR)/webapp/WEB-INF/conf/enabled_services | ||||
| 	[ -d $(BUILDDIR)/webapp/WEB-INF/conf/auth_mechanisms ] || mkdir -p $(BUILDDIR)/webapp/WEB-INF/conf/auth_mechanisms | ||||
| 	[ -d $(BUILDDIR)/webapp/WEB-INF/conf/installed_auth_mechanisms ] || mkdir -p $(BUILDDIR)/webapp/WEB-INF/conf/installed_auth_mechanisms | ||||
| 	[ -d $(BUILDDIR)/webapp/WEB-INF/conf/installed_auth_mechanisms/Krb5Authenticate ] || mkdir -p $(BUILDDIR)/webapp/WEB-INF/conf/installed_auth_mechanisms/Krb5Authenticate | ||||
| 	[ -d $(BUILDDIR)/webapp/WEB-INF/conf/installed_auth_mechanisms/PwdAuthenticate ] || mkdir -p $(BUILDDIR)/webapp/WEB-INF/conf/installed_auth_mechanisms/PwdAuthenticate | ||||
| 	[ -d $(LIBDIR) ] || mkdir -p $(LIBDIR) | ||||
| 	[ -d $(LIBDIR)/java ] || mkdir -p $(LIBDIR)/java | ||||
|  | ||||
| install-exec-local: | ||||
|  | ||||
| uninstall-local: | ||||
|  | ||||
| #installcheck-local: install | ||||
|  | ||||
| clean-local: | ||||
| 	if [ -d $(BUILDDIR) ]; then  rm -rf $(BUILDDIR); fi | ||||
| 	if [ -f $(LIBDIR)/java/$(MODULE_NAME).$(MODULE_EXT) ]; then  rm -f $(LIBDIR)/java/$(MODULE_NAME).$(MODULE_EXT); fi | ||||
| 	if [ -f $(LIBDIR)/java/$(WEBAPP) ]; then  rm -f $(LIBDIR)/java/$(WEBAPP); fi | ||||
|  | ||||
| distclean-local: | ||||
|  | ||||
| maintainer-clean-local: | ||||
| 	rm -f Makefile.in | ||||
| 	rm -f Makefile | ||||
| @@ -0,0 +1,6 @@ | ||||
| org.apache.ws.security.crypto.provider=org.apache.ws.security.components.crypto.Merlin | ||||
| org.apache.ws.security.crypto.merlin.keystore.type=jks | ||||
| org.apache.ws.security.crypto.merlin.keystore.password=secret | ||||
| org.apache.ws.security.crypto.merlin.keystore.alias=signingKey | ||||
| org.apache.ws.security.crypto.merlin.alias.password=secret | ||||
| org.apache.ws.security.crypto.merlin.file=ATS_INSTALL_DIRats\etc\keys\server\jks-store | ||||
| @@ -265,6 +265,13 @@ Makefile | ||||
| package/Makefile | ||||
| package/linux/Makefile | ||||
| package/linux/CASA_auth_token_svc.spec | ||||
| package/windows/Makefile | ||||
| package/windows/ClientKeystoreSetup/Makefile | ||||
| package/windows/InitConfigFile/Makefile | ||||
| package/windows/MungeCryptoPropertiesFilePath/Makefile | ||||
| package/windows/ServerKeystoreSetup/Makefile | ||||
| package/windows/UpdateWarFile/Makefile | ||||
| package/windows/server-java_msi/Makefile | ||||
| Svc/Makefile | ||||
| Svc/external/Makefile | ||||
| Svc/src/Makefile | ||||
| @@ -277,9 +284,11 @@ Svc/tomcat5/conf/Makefile | ||||
| Svc/tomcat5/conf/Catalina/Makefile | ||||
| Svc/tomcat5/conf/Catalina/localhost/Makefile | ||||
| Svc/tomcat5/conf/linux/Makefile | ||||
| Svc/tomcat5/conf/windows/Makefile | ||||
| Svc/linux/Makefile | ||||
| Svc/templates/Makefile | ||||
| Svc/manifest/Makefile | ||||
| Svc/windows/Makefile | ||||
| Jaas/Makefile | ||||
| Jaas/src/Makefile | ||||
| Jaas/src/com/Makefile | ||||
| @@ -288,5 +297,6 @@ Jaas/src/com/novell/casa/Makefile | ||||
| Jaas/src/com/novell/casa/jaas/Makefile | ||||
| Jaas/src/com/novell/casa/jaas/sample/Makefile | ||||
| Jaas/linux/Makefile | ||||
| Jaas/windows/Makefile | ||||
| ]) | ||||
|  | ||||
|   | ||||
| @@ -20,9 +20,9 @@ | ||||
| # | ||||
| ####################################################################### | ||||
|  | ||||
| SUBDIRS = linux | ||||
| SUBDIRS = $(TARGET_OS) | ||||
|  | ||||
| DIST_SUBDIRS = linux | ||||
| DIST_SUBDIRS = linux windows | ||||
|  | ||||
| EXTRA_DIST = | ||||
|  | ||||
|   | ||||
| @@ -0,0 +1,47 @@ | ||||
| <Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||||
|   <PropertyGroup> | ||||
|     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> | ||||
|     <Platform Condition=" '$(Platform)' == '' ">x86</Platform> | ||||
|     <ProductVersion>8.0.50727</ProductVersion> | ||||
|     <SchemaVersion>2.0</SchemaVersion> | ||||
|     <ProjectGuid>{89D5D921-A2E6-4ED9-A724-8C7DAAC09AC5}</ProjectGuid> | ||||
|     <OutputType>Exe</OutputType> | ||||
|     <RootNamespace>ClientKeystoreSetup</RootNamespace> | ||||
|     <AssemblyName>ClientKeystoreSetup</AssemblyName> | ||||
|     <WarningLevel>4</WarningLevel> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' "> | ||||
|     <DebugSymbols>true</DebugSymbols> | ||||
|     <DebugType>full</DebugType> | ||||
|     <Optimize>false</Optimize> | ||||
|     <OutputPath>bin\Debug\</OutputPath> | ||||
|     <DefineConstants>DEBUG;TRACE</DefineConstants> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' "> | ||||
|     <DebugType>pdbonly</DebugType> | ||||
|     <Optimize>true</Optimize> | ||||
|     <OutputPath>bin\Release\</OutputPath> | ||||
|     <DefineConstants>TRACE</DefineConstants> | ||||
|   </PropertyGroup> | ||||
|   <ItemGroup> | ||||
|     <Reference Include="System" /> | ||||
|     <Reference Include="System.Data" /> | ||||
|     <Reference Include="System.Xml" /> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <Compile Include="Program.jsl" /> | ||||
|     <Compile Include="Properties\AssemblyInfo.jsl" /> | ||||
|   </ItemGroup> | ||||
|   <Import Project="$(MSBuildBinPath)\Microsoft.VisualJSharp.targets" /> | ||||
|   <!-- To modify your build process, add your task inside one of the targets below and uncomment it.  | ||||
|        Other similar extension points exist, see Microsoft.Common.targets. | ||||
|   <Target Name="BeforeBuild"> | ||||
|   </Target> | ||||
|   <Target Name="AfterBuild"> | ||||
|   </Target> | ||||
|   --> | ||||
|   <PropertyGroup> | ||||
|     <PostBuildEvent> | ||||
|     </PostBuildEvent> | ||||
|   </PropertyGroup> | ||||
| </Project> | ||||
| @@ -0,0 +1,69 @@ | ||||
| ####################################################################### | ||||
| # | ||||
| #  Copyright (C) 2004 Novell, Inc. | ||||
| # | ||||
| #  This program is free software; you can redistribute it and/or | ||||
| #  modify it under the terms of the GNU General Public | ||||
| #  License as published by the Free Software Foundation; either | ||||
| #  version 2 of the License, or (at your option) any later version. | ||||
| # | ||||
| #  This program is distributed in the hope that it will be useful, | ||||
| #  but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
| #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
| #  General Public License for more details. | ||||
| # | ||||
| #  You should have received a copy of the GNU General Public | ||||
| #  License along with this program; if not, write to the Free | ||||
| #  Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||||
| # | ||||
| #  Author: Greg Richardson <grichardson@novell.com> | ||||
| # | ||||
| ####################################################################### | ||||
|  | ||||
| SUBDIRS = | ||||
|  | ||||
| DIST_SUBDIRS = | ||||
|  | ||||
| EXTRA_DIST = ClientKeyStoreSetup.vjsproj Program.jsl | ||||
|  | ||||
| if DEBUG | ||||
| TARGET_CFG = Debug | ||||
| else | ||||
| TARGET_CFG = Release | ||||
| endif | ||||
|  | ||||
| PACKAGE = ClientKeystoreSetup | ||||
| TARGET_FILE = $(PACKAGE).exe | ||||
| LOG_FILE = $(PACKAGE).log | ||||
|  | ||||
| .PHONY: package package-clean package-install package-uninstall devenv | ||||
|  | ||||
| package: $(TARGET_FILE) | ||||
|  | ||||
| devenv: | ||||
| 	@if ! test -x "$(VSINSTALLDIR)/Common7/IDE/devenv.exe"; then echo "Error: Microsoft Visual Studio .NET is currently required to build MSI and MSM packages"; exit 1; fi | ||||
|  | ||||
| $(TARGET_FILE): devenv | ||||
| 	@rm -f $(LOG_FILE) $@ | ||||
| 	@CMD='"$(VSINSTALLDIR)/Common7/IDE/devenv.exe" ../server-java_msi/server-java_msi.sln /build $(TARGET_CFG) /project $(PACKAGE) /out $(LOG_FILE)'; \ | ||||
| 	echo $$CMD; \ | ||||
| 	if eval $$CMD; then \ | ||||
| 		ls -l bin/$(TARGET_CFG)/$(TARGET_FILE); \ | ||||
| 	else \ | ||||
| 		grep -a "ERROR:" $(LOG_FILE); \ | ||||
| 	fi | ||||
| 	 | ||||
| package-clean clean-local: | ||||
| 	rm -rf  Release/* Release Debug/* Debug*/Release */Debug *.log *.suo | ||||
|  | ||||
| clean: | ||||
| 	rm -rf  Release/* Release Debug/* Debug */Release */Debug *.log *.suo | ||||
|  | ||||
| distclean-local: package-clean | ||||
| 	rm -f Makefile | ||||
|  | ||||
| maintainer-clean-local: | ||||
| 	rm -f Makefile.in | ||||
|  | ||||
|  | ||||
|  | ||||
| @@ -0,0 +1,373 @@ | ||||
| /*********************************************************************** | ||||
|  *  | ||||
|  *  Copyright (C) 2006 Novell, Inc. All Rights Reserved. | ||||
|  * | ||||
|  *  This library is free software; you can redistribute it and/or | ||||
|  *  modify it under the terms of the GNU Lesser General Public | ||||
|  *  License as published by the Free Software Foundation; version 2.1 | ||||
|  *  of the License. | ||||
|  * | ||||
|  *  This library is distributed in the hope that it will be useful, | ||||
|  *  but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *  Library Lesser General Public License for more details. | ||||
|  * | ||||
|  *  You should have received a copy of the GNU Lesser General Public | ||||
|  *  License along with this library; if not, Novell, Inc. | ||||
|  *  | ||||
|  *  To contact Novell about this file by physical or electronic mail,  | ||||
|  *  you may find current contact information at www.novell.com. | ||||
|  *  | ||||
|  *  Author: Juan Carlos Luciani <jluciani@novell.com> | ||||
|  *   | ||||
|  ***********************************************************************/ | ||||
|  | ||||
| package ClientKeystoreSetup; | ||||
|  | ||||
| //       $KEYTOOL_PATH -import -noprompt -keystore /etc/CASA/authtoken/keys/client/jks-store -alias signingCert -storepass secret -keypass secret -file /etc/CASA/authtoken/keys/casaatsdSigningCert | ||||
|  | ||||
|  | ||||
| import java.io.*; | ||||
| import java.util.*; | ||||
|  | ||||
| public class Program | ||||
| { | ||||
| 	final static int ERROR_NO_ERROR = 0; | ||||
| 	final static int ERROR_EXEC_FAILED = -1; | ||||
| 	final static int ERROR_INVALID_NUMBER_OF_PARAMS = -2; | ||||
| 	final static int ERROR_BAD_INSTALL_DIR_PARAM = -3; | ||||
| 	final static int ERROR_MISSING_INSTALL_DIR = -4; | ||||
| 	final static int ERROR_INSTALL_DIR_NOT_A_DIR = -5; | ||||
| 	final static int ERROR_BAD_PROPERTY_FILE_PARAM = -6; | ||||
| 	final static int ERROR_MISSING_PROPERTIES_FILE = -7; | ||||
| 	final static int ERROR_UNABLE_TO_READ_PROPERTIES = -8; | ||||
| 	final static int ERROR_UNKNOWN_PARAM = -9; | ||||
| 	final static int ERROR_MISSING_INSTALL_DIR_PARAM = -10; | ||||
| 	final static int ERROR_REQUIRED_VALUE_MISSING = -11; | ||||
| 	final static int ERROR_EXEC_INTERRUPTED = -12; | ||||
|  | ||||
| 	final static String INSTALL_DIR = "installdir="; | ||||
| 	final static String PROPERTY_FILE = "propertyfile="; | ||||
|  | ||||
| 	String sInstallDir; | ||||
| 	Properties properties; | ||||
|  | ||||
| 	// debug stuff | ||||
| 	File file; | ||||
| 	FileWriter fw; | ||||
|  | ||||
| 	public static void main(String[] args) | ||||
| 	{ | ||||
| 		Program p = new Program(args); | ||||
| 		p = null; | ||||
| 	} | ||||
|  | ||||
| 	Program(String[] args) | ||||
| 	{ | ||||
| 		int rc; | ||||
|  | ||||
| 		try | ||||
| 		{ | ||||
| 			// DEBUG STUFF | ||||
| 			file = new File("c:\\test4.log"); | ||||
| 			fw = new FileWriter(file); | ||||
|  | ||||
| 			log("Here we go again: " + args.length); | ||||
| 			for (int i = 0; i < args.length; i++) | ||||
| 			{ | ||||
| 				log("Arg " + i + " = " + args[i] + "\r\n"); | ||||
| 			} | ||||
| 			// DEBUG STUFF | ||||
|  | ||||
| 			// Process the input params | ||||
| 			if (ERROR_NO_ERROR == (rc = processArgs(args))) | ||||
| 			{ | ||||
| 				// Make sure we got everything we need | ||||
| 				if (ERROR_NO_ERROR == (rc = findRequiredValues())) | ||||
| 				{ | ||||
| 					// Make sure the client keystore has been created | ||||
| 					rc = createClientKeystore(); | ||||
| 				} | ||||
| 			} | ||||
|  | ||||
| 			// DEBUG STUFF | ||||
| 			log(rc); | ||||
| 			fw.flush(); | ||||
| 			fw.close(); | ||||
| 			// DEBUG STUFF | ||||
| 		} | ||||
| 		catch (IOException e) | ||||
| 		{ | ||||
| 			rc = -54;//ERROR_IO_EXCEPTION; | ||||
| 		} | ||||
| 		System.exit(rc); | ||||
| 	} | ||||
|  | ||||
| 	int processArgs(String[] args) | ||||
| 	{ | ||||
| 		String sProperties; | ||||
| 		File fileInstallDir = null; | ||||
| 		File fileProperties = null; | ||||
| 		FileInputStream fisProperties = null; | ||||
| 		int i; | ||||
|  | ||||
| 		// Validate the number of parameters | ||||
| 		if (args.length < 2) | ||||
| 		{ | ||||
| 			return ERROR_INVALID_NUMBER_OF_PARAMS; | ||||
| 		} | ||||
|  | ||||
| 		for (i = 0; i < args.length; i++) | ||||
| 		{ | ||||
| 			// is this the install dir param? | ||||
| 			if (args[i].startsWith(INSTALL_DIR)) | ||||
| 			{ | ||||
| 				// Make sure it is more the the param tag | ||||
| 				if (args[i].length() <= INSTALL_DIR.length()) | ||||
| 				{ | ||||
| 					return ERROR_BAD_INSTALL_DIR_PARAM; | ||||
| 				} | ||||
|  | ||||
| 				sInstallDir = args[i].substring(INSTALL_DIR.length()).trim(); | ||||
| 				fileInstallDir = new File(sInstallDir); | ||||
|  | ||||
| 				// Make sure the install dir can be found | ||||
| 				if (!fileInstallDir.exists()) | ||||
| 				{ | ||||
| 					return ERROR_MISSING_INSTALL_DIR; | ||||
| 				} | ||||
|  | ||||
| 				// Make sure the install dir is a directory | ||||
| 				if (!fileInstallDir.isDirectory()) | ||||
| 				{ | ||||
| 					return ERROR_INSTALL_DIR_NOT_A_DIR; | ||||
| 				} | ||||
| 			} | ||||
|  | ||||
| 			// is this the properties file param? | ||||
| 			else if (args[i].startsWith(PROPERTY_FILE)) | ||||
| 			{ | ||||
| 				// Make sure it is more the the param tag | ||||
| 				if (args[i].length() <= PROPERTY_FILE.length()) | ||||
| 				{ | ||||
| 					return ERROR_BAD_PROPERTY_FILE_PARAM; | ||||
| 				} | ||||
|  | ||||
| 				sProperties = args[i].substring(PROPERTY_FILE.length()).trim(); | ||||
| 				fileProperties = new File(sProperties); | ||||
|  | ||||
| 				// Make sure the properties file can be found | ||||
| 				if (!fileProperties.exists()) | ||||
| 				{ | ||||
| 					return ERROR_MISSING_PROPERTIES_FILE; | ||||
| 				} | ||||
|  | ||||
| 				// Read the properties | ||||
| 				try | ||||
| 				{ | ||||
| 					fisProperties = new FileInputStream(fileProperties); | ||||
| 					properties = new Properties(); | ||||
| 					properties.load(fisProperties); | ||||
| 				} | ||||
| 				catch (IOException ioe) | ||||
| 				{ | ||||
| 					return ERROR_UNABLE_TO_READ_PROPERTIES; | ||||
| 				} | ||||
| 			} | ||||
|  | ||||
| 			// Unknown parameter | ||||
| 			else | ||||
| 			{ | ||||
| 				log(ERROR_UNKNOWN_PARAM, args[i]); | ||||
| 				return ERROR_UNKNOWN_PARAM; | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 		// Make sure we got an install dir | ||||
| 		if (null == fileInstallDir) | ||||
| 		{ | ||||
| 			return ERROR_MISSING_INSTALL_DIR_PARAM; | ||||
| 		} | ||||
|  | ||||
| 		return ERROR_NO_ERROR; | ||||
| 	} | ||||
|  | ||||
| 	int findRequiredValues() | ||||
| 	{ | ||||
| 		String[] rgsRequired = {  | ||||
| 			"ATS_JAVA_HOME"}; | ||||
| 		int i; | ||||
| 		String sValue; | ||||
|  | ||||
| 		for (i = 0; i < rgsRequired.length; i++) | ||||
| 		{ | ||||
| 			log("look for required value: " + rgsRequired[i]); | ||||
|  | ||||
| 			if (!properties.containsKey(rgsRequired[i])) | ||||
| 			{ | ||||
| 				log("look for required value in envirement: " + rgsRequired[i]); | ||||
| 				if (null == (sValue = System.getProperty(rgsRequired[i]))) | ||||
| 				{ | ||||
| 					log("unable to find required value in envirement: " + rgsRequired[i]); | ||||
| 					return ERROR_REQUIRED_VALUE_MISSING; | ||||
| 				} | ||||
| 				log("found required value in envirement: " + rgsRequired[i] + "  =  " + sValue); | ||||
| 				properties.put(rgsRequired[i], sValue); | ||||
| 			} | ||||
| 			log("found required value: " + rgsRequired[i] + "  =  " + properties.get(rgsRequired[i])); | ||||
| 		} | ||||
| 		return ERROR_NO_ERROR; | ||||
| 	} | ||||
|  | ||||
|  | ||||
| 	int createClientKeystore() | ||||
| 	{ | ||||
| 		int rc; | ||||
| 		String sKeytool = properties.get("ATS_JAVA_HOME") + "\\bin\\keytool.exe"; | ||||
|  | ||||
| 		log("keytool = " + sKeytool); | ||||
|  | ||||
| 		// Do not do anything if the server keystore has already been created | ||||
| 		if (keyStoreAlreadyExists()) | ||||
| 		{ | ||||
| 			return ERROR_NO_ERROR; | ||||
| 		} | ||||
|  | ||||
| 		// Import the servers certificate in the client keystore | ||||
| 		rc = invokeCommand(sKeytool + " -import -noprompt -keystore " + | ||||
| 			sInstallDir + "ats\\etc\\keys\\client\\jks-store -alias signingCert -storepass secret -keypass secret -file " +  | ||||
| 			sInstallDir + "ats\\etc\\keys\\casaatsdSigningCert"); | ||||
|  | ||||
| 		return rc; | ||||
| 	} | ||||
|  | ||||
| 	boolean keyStoreAlreadyExists() | ||||
| 	{ | ||||
| 		File fileKeystore = new File(sInstallDir + "ats\\etc\\keys\\client\\jks-store"); | ||||
|  | ||||
| 		// Why is this always returning true?  exists() also always returns true. | ||||
| 		// log("keystore (" + sInstallDir + "ats\\etc\\keys\\client\\jks-store" + ") already exists = " + (file.isFile())); | ||||
| 		//		return (file.isFile()); | ||||
|  | ||||
| 		File fileParent = fileKeystore.getParentFile(); | ||||
| 		String[] rgChildren = fileParent.list(); | ||||
| 		if (null != rgChildren) | ||||
| 		{ | ||||
| 			for (int i = 0; i < rgChildren.length; i++) | ||||
| 			{ | ||||
| 				log("child " + i + " = " + rgChildren[i]); | ||||
| 				if ("jks-store".equals(rgChildren[i])) | ||||
| 				{ | ||||
| 					return true; | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 		return false; | ||||
| 	} | ||||
|  | ||||
| 	int invokeCommand(String sCommand) | ||||
| 	{ | ||||
| 		Process p; | ||||
| 		int rc; | ||||
|  | ||||
| 		log("invoke command: " + sCommand); | ||||
| 		Runtime runtime = Runtime.getRuntime(); | ||||
|  | ||||
| 		try | ||||
| 		{ | ||||
| 			p = runtime.exec(sCommand); | ||||
| 			try | ||||
| 			{ | ||||
| 				rc = p.waitFor(); | ||||
| 				log("invoke command return code: " + rc); | ||||
| 			} | ||||
| 			catch (InterruptedException ie) | ||||
| 			{ | ||||
| 				log(ERROR_EXEC_INTERRUPTED, sCommand); | ||||
| 				return ERROR_EXEC_INTERRUPTED; | ||||
| 			} | ||||
| 		} | ||||
| 		catch (IOException e) | ||||
| 		{ | ||||
| 			log("Ioexception"); | ||||
| 			return ERROR_EXEC_FAILED; | ||||
| 		} | ||||
|  | ||||
| 		return ERROR_NO_ERROR; | ||||
| 	} | ||||
|  | ||||
| 	void log(int err) | ||||
| 	{ | ||||
| 		log(err, null); | ||||
| 	} | ||||
|  | ||||
| 	void log(int err, String s) | ||||
| 	{ | ||||
| 		String sMessage = ""; | ||||
|  | ||||
| 		switch (err) | ||||
| 		{ | ||||
| 			case ERROR_NO_ERROR: | ||||
| 				sMessage = "No error"; | ||||
| 				break; | ||||
| 			case ERROR_EXEC_FAILED: | ||||
| 				sMessage = "Execute command failed "; | ||||
| 				break; | ||||
| 			case ERROR_INVALID_NUMBER_OF_PARAMS: | ||||
| 				sMessage = "Invalid number of params"; | ||||
| 				break; | ||||
| 			case ERROR_BAD_INSTALL_DIR_PARAM: | ||||
| 				sMessage = "Install dir parameter is bad"; | ||||
| 				break; | ||||
| 			case ERROR_MISSING_INSTALL_DIR: | ||||
| 				sMessage = "Missing install dir"; | ||||
| 				break; | ||||
| 			case ERROR_INSTALL_DIR_NOT_A_DIR: | ||||
| 				sMessage = "Install dir is not a dir"; | ||||
| 				break; | ||||
| 			case ERROR_BAD_PROPERTY_FILE_PARAM: | ||||
| 				sMessage = "Invalid porperty file parameter"; | ||||
| 				break; | ||||
| 			case ERROR_MISSING_PROPERTIES_FILE: | ||||
| 				sMessage = "Property file not found"; | ||||
| 				break; | ||||
| 			case ERROR_UNABLE_TO_READ_PROPERTIES: | ||||
| 				sMessage = "Unable to read property file"; | ||||
| 				break; | ||||
| 			case ERROR_UNKNOWN_PARAM: | ||||
| 				sMessage = "Unknown parameter: "; | ||||
| 				break; | ||||
| 			case ERROR_MISSING_INSTALL_DIR_PARAM: | ||||
| 				sMessage = "Install dir parameter is missing"; | ||||
| 				break; | ||||
| 			case ERROR_REQUIRED_VALUE_MISSING: | ||||
| 				sMessage = "Required value is missing "; | ||||
| 				break; | ||||
| 			case ERROR_EXEC_INTERRUPTED: | ||||
| 				sMessage = "Execution iinterrupted: "; | ||||
| 				break; | ||||
| 			default: | ||||
| 				sMessage = "Unknown error"; | ||||
| 				break; | ||||
| 		} | ||||
|  | ||||
| 		if (null != s) | ||||
| 		{ | ||||
| 			sMessage = sMessage + s; | ||||
| 		} | ||||
| 		log(sMessage); | ||||
| 	} | ||||
|  | ||||
| 	void log(String s) | ||||
| 	{ | ||||
| 		try | ||||
| 		{ | ||||
| 			fw.write(this.getClass().getName() + ": " + s + "\r\n"); | ||||
| 		} | ||||
| 		catch (IOException ioe) | ||||
| 		{ | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| } | ||||
| @@ -0,0 +1,36 @@ | ||||
| import System.Reflection.*; | ||||
| import System.Runtime.CompilerServices.*; | ||||
| import System.Runtime.InteropServices.*; | ||||
|  | ||||
| // | ||||
| // General Information about an assembly is controlled through the following  | ||||
| // set of attributes. Change these attribute values to modify the information | ||||
| // associated with an assembly. | ||||
| // | ||||
|  | ||||
| /** @assembly AssemblyTitle("ClientKeystoreSetup") */ | ||||
| /** @assembly AssemblyDescription("") */ | ||||
| /** @assembly AssemblyCompany("Novell") */ | ||||
| /** @assembly AssemblyProduct("ClientKeystoreSetup") */ | ||||
| /** @assembly AssemblyCopyright("Copyright © Novell 2006") */ | ||||
| /** @assembly AssemblyTrademark("") */ | ||||
| /** @assembly AssemblyCulture("") */ | ||||
|  | ||||
|  | ||||
| // The ComVisible attribute controls accessibility of an individual type | ||||
| // or member, or of all types within this assembly, from COM.  To access | ||||
| // a type or member in this assembly from COM, set the ComVisible attribute | ||||
| // on that type or member to true. | ||||
| /** @assembly ComVisible(false) */ | ||||
|  | ||||
|  | ||||
| // | ||||
| // Version information for an assembly consists of the following four values: | ||||
| // | ||||
| //      Major Version | ||||
| //      Minor Version  | ||||
| //      Build Number | ||||
| //      Revision | ||||
| // | ||||
|  | ||||
| /** @assembly AssemblyVersion("1.0.0.0") */ | ||||
| @@ -0,0 +1,47 @@ | ||||
| <Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||||
|   <PropertyGroup> | ||||
|     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> | ||||
|     <Platform Condition=" '$(Platform)' == '' ">x86</Platform> | ||||
|     <ProductVersion>8.0.50727</ProductVersion> | ||||
|     <SchemaVersion>2.0</SchemaVersion> | ||||
|     <ProjectGuid>{E3528B18-D4A0-4604-B2C5-8EE36E094A40}</ProjectGuid> | ||||
|     <OutputType>Exe</OutputType> | ||||
|     <RootNamespace>InitConfigFile</RootNamespace> | ||||
|     <AssemblyName>InitConfigFile</AssemblyName> | ||||
|     <WarningLevel>4</WarningLevel> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' "> | ||||
|     <DebugSymbols>true</DebugSymbols> | ||||
|     <DebugType>full</DebugType> | ||||
|     <Optimize>false</Optimize> | ||||
|     <OutputPath>bin\Debug\</OutputPath> | ||||
|     <DefineConstants>DEBUG;TRACE</DefineConstants> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' "> | ||||
|     <DebugType>pdbonly</DebugType> | ||||
|     <Optimize>true</Optimize> | ||||
|     <OutputPath>bin\Release\</OutputPath> | ||||
|     <DefineConstants>TRACE</DefineConstants> | ||||
|   </PropertyGroup> | ||||
|   <ItemGroup> | ||||
|     <Reference Include="System" /> | ||||
|     <Reference Include="System.Data" /> | ||||
|     <Reference Include="System.Xml" /> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <Compile Include="Program.jsl" /> | ||||
|     <Compile Include="Properties\AssemblyInfo.jsl" /> | ||||
|   </ItemGroup> | ||||
|   <Import Project="$(MSBuildBinPath)\Microsoft.VisualJSharp.targets" /> | ||||
|   <!-- To modify your build process, add your task inside one of the targets below and uncomment it.  | ||||
|        Other similar extension points exist, see Microsoft.Common.targets. | ||||
|   <Target Name="BeforeBuild"> | ||||
|   </Target> | ||||
|   <Target Name="AfterBuild"> | ||||
|   </Target> | ||||
|   --> | ||||
|   <PropertyGroup> | ||||
|     <PostBuildEvent> | ||||
|     </PostBuildEvent> | ||||
|   </PropertyGroup> | ||||
| </Project> | ||||
| @@ -0,0 +1,69 @@ | ||||
| ####################################################################### | ||||
| # | ||||
| #  Copyright (C) 2004 Novell, Inc. | ||||
| # | ||||
| #  This program is free software; you can redistribute it and/or | ||||
| #  modify it under the terms of the GNU General Public | ||||
| #  License as published by the Free Software Foundation; either | ||||
| #  version 2 of the License, or (at your option) any later version. | ||||
| # | ||||
| #  This program is distributed in the hope that it will be useful, | ||||
| #  but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
| #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
| #  General Public License for more details. | ||||
| # | ||||
| #  You should have received a copy of the GNU General Public | ||||
| #  License along with this program; if not, write to the Free | ||||
| #  Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||||
| # | ||||
| #  Author: Greg Richardson <grichardson@novell.com> | ||||
| # | ||||
| ####################################################################### | ||||
|  | ||||
| SUBDIRS = | ||||
|  | ||||
| DIST_SUBDIRS = | ||||
|  | ||||
| EXTRA_DIST = InitConfigFile.vjsproj Program.jsl | ||||
|  | ||||
| if DEBUG | ||||
| TARGET_CFG = Debug | ||||
| else | ||||
| TARGET_CFG = Release | ||||
| endif | ||||
|  | ||||
| PACKAGE = InitConfigFile | ||||
| TARGET_FILE = $(PACKAGE).exe | ||||
| LOG_FILE = $(PACKAGE).log | ||||
|  | ||||
| .PHONY: package package-clean package-install package-uninstall devenv | ||||
|  | ||||
| package: $(TARGET_FILE) | ||||
|  | ||||
| devenv: | ||||
| 	@if ! test -x "$(VSINSTALLDIR)/Common7/IDE/devenv.exe"; then echo "Error: Microsoft Visual Studio .NET is currently required to build MSI and MSM packages"; exit 1; fi | ||||
|  | ||||
| $(TARGET_FILE): devenv | ||||
| 	@rm -f $(LOG_FILE) $@ | ||||
| 	@CMD='"$(VSINSTALLDIR)/Common7/IDE/devenv.exe" ../server-java_msi/server-java_msi.sln /build $(TARGET_CFG) /project $(PACKAGE) /out $(LOG_FILE)'; \ | ||||
| 	echo $$CMD; \ | ||||
| 	if eval $$CMD; then \ | ||||
| 		ls -l bin/$(TARGET_CFG)/$(TARGET_FILE); \ | ||||
| 	else \ | ||||
| 		grep -a "ERROR:" $(LOG_FILE); \ | ||||
| 	fi | ||||
| 	 | ||||
| package-clean clean-local: | ||||
| 	rm -rf  Release/* Release Debug/* Debug*/Release */Debug *.log *.suo | ||||
|  | ||||
| clean: | ||||
| 	rm -rf  Release/* Release Debug/* Debug */Release */Debug *.log *.suo | ||||
|  | ||||
| distclean-local: package-clean | ||||
| 	rm -f Makefile | ||||
|  | ||||
| maintainer-clean-local: | ||||
| 	rm -f Makefile.in | ||||
|  | ||||
|  | ||||
|  | ||||
| @@ -0,0 +1,442 @@ | ||||
| /*********************************************************************** | ||||
|  *  | ||||
|  *  Copyright (C) 2006 Novell, Inc. All Rights Reserved. | ||||
|  * | ||||
|  *  This library is free software; you can redistribute it and/or | ||||
|  *  modify it under the terms of the GNU Lesser General Public | ||||
|  *  License as published by the Free Software Foundation; version 2.1 | ||||
|  *  of the License. | ||||
|  * | ||||
|  *  This library is distributed in the hope that it will be useful, | ||||
|  *  but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *  Library Lesser General Public License for more details. | ||||
|  * | ||||
|  *  You should have received a copy of the GNU Lesser General Public | ||||
|  *  License along with this library; if not, Novell, Inc. | ||||
|  *  | ||||
|  *  To contact Novell about this file by physical or electronic mail,  | ||||
|  *  you may find current contact information at www.novell.com. | ||||
|  *  | ||||
|  *  Author: Juan Carlos Luciani <jluciani@novell.com> | ||||
|  *   | ||||
|  ***********************************************************************/ | ||||
|  | ||||
| package InitConfigFile; | ||||
|  | ||||
| import java.io.*; | ||||
| import java.util.*; | ||||
|  | ||||
| /** | ||||
|  * Summary description for Program | ||||
|  */ | ||||
| public class Program | ||||
| { | ||||
| 	final static int ERROR_NO_ERROR						= 0; | ||||
| 	final static int ERROR_INVALID_NUMBER_OF_PARAMS		= -1; | ||||
| 	final static int ERROR_MISSING_TEMPLATE				= -3; | ||||
| 	final static int ERROR_MISSING_TEMPLATE_FILE		= -8; | ||||
| 	final static int ERROR_OUTPUT_PROPERTY_MISSING		= -9; | ||||
| 	final static int ERROR_OUTPUT_COPY_FAILED			= -12; | ||||
| 	final static int ERROR_IO_EXCEPTION					= -13; | ||||
| 	final static int ERROR_MISSING_PROPERTIES			= -15; | ||||
| 	final static int ERROR_UNABLE_TO_READ_PROPERTIES	= -16; | ||||
| 	final static int ERROR_PROPERTIES_FILE_IS_EMPTY		= -17; | ||||
| 	final static int ERROR_MISSING_INSTALL_DIR			= -18; | ||||
| 	final static int ERROR_INSTALL_DIR_NOT_A_DIR		= -19; | ||||
| 	final static int ERROR_BAD_INSTALL_DIR_PARAM		= -20; | ||||
| 	final static int ERROR_BAD_PROPERTY_FILE_PARAM		= -21; | ||||
| 	final static int ERROR_MISSING_PROPERTIES_FILE		= -22; | ||||
| 	final static int ERROR_MISSING_INSTALL_DIR_PARAM	= -23; | ||||
| 	final static int ERROR_MISSING_PROPERTY_FILE_PARAM	= -24; | ||||
| 	final static int ERROR_BAD_TEMPLATE_FILE_PARAM		= -25; | ||||
| 	final static int ERROR_BAD_OUTPUT_FILE_PARAM		= -26; | ||||
| 	final static int ERROR_MISSING_TEMPLATE_FILE_PARAM	= -27; | ||||
| 	final static int ERROR_MISSING_OUTPUT_FILE_PARAM	= -28; | ||||
| 	final static int ERROR_BAD_PROPERTY_PARAM			= -29; | ||||
|  | ||||
| 	final static String TEMPLATE_FILE_PARAM		= "template="; | ||||
| 	final static String OUTPUT_FILE_PARAM		= "output="; | ||||
| 	final static String INSTALL_DIR_PARAM		= "ATS_INSTALL_DIR="; | ||||
| 	final static String INSTALL_DIR_PROPERTY	= "ATS_INSTALL_DIR"; | ||||
| 	final static String PROPERTY_FILE_PARAM		= "propertyfile="; | ||||
|  | ||||
| 	Properties		properties; | ||||
| 	File			fileProperties; | ||||
| 	FileInputStream	fisProperties; | ||||
| 	File			fileTemplate; | ||||
| 	File			fileOutput; | ||||
| 	File			file; | ||||
| 	FileWriter		fw; | ||||
| 	String[]		rgsSearchFor; | ||||
| 	String[]		rgsReplaceWith; | ||||
| 	String			sInstallDir; | ||||
| 	String			sTemplate; | ||||
| 	String			sOutput; | ||||
|  | ||||
| 	public static void main(String[] args) | ||||
| 	{ | ||||
| 		Program p = new Program(args); | ||||
| 	} | ||||
|  | ||||
| 	Program(String[] args) | ||||
| 	{ | ||||
| 		int rc = ERROR_NO_ERROR; | ||||
|  | ||||
| 		properties = new Properties(); | ||||
| 		fileProperties = null; | ||||
| 		fisProperties = null; | ||||
| 		fileTemplate = null; | ||||
| 		fileOutput = null; | ||||
|  | ||||
| 		try | ||||
| 		{ | ||||
| 			file = new File("c:\\test.log"); | ||||
| 			fw = new FileWriter(file); | ||||
|  | ||||
| 			log("Here we go: " + args.length); | ||||
| 			for (int i = 0; i < args.length; i++) | ||||
| 			{ | ||||
| 				log("Arg " + i + " = " + args[i]); | ||||
| 			} | ||||
|  | ||||
| 			// Process the arguments | ||||
| 			if (ERROR_NO_ERROR == (rc = processArgs(args))) | ||||
| 			{ | ||||
| 				// Process the properties | ||||
| 				if (ERROR_NO_ERROR == (rc = processProperties())) | ||||
| 				{ | ||||
| 					rc = createOutputFile(); | ||||
| 				} | ||||
| 			} | ||||
|  | ||||
| 		} | ||||
| 		catch (IOException e) | ||||
| 		{ | ||||
| 			rc = ERROR_IO_EXCEPTION; | ||||
| 		} | ||||
| 		finally | ||||
| 		{ | ||||
| 			try | ||||
| 			{ | ||||
| 				log("return code = " + rc); | ||||
| 				fw.flush(); | ||||
| 				fw.close(); | ||||
| 			} | ||||
| 			catch (Exception e1) | ||||
| 			{ | ||||
| 			} | ||||
| 		} | ||||
| 		System.exit(rc); | ||||
| 	} | ||||
|  | ||||
| 	int processArgs(String[] args) | ||||
| 	{ | ||||
| 		String sProperties; | ||||
| 		File fileInstallDir = null; | ||||
| 		int i; | ||||
| 		int iEquals; | ||||
| 		String sKey; | ||||
| 		String sValue; | ||||
|  | ||||
| 		// Validate the number of parameters | ||||
| 		if (args.length < 3) | ||||
| 		{ | ||||
| 			return ERROR_INVALID_NUMBER_OF_PARAMS; | ||||
| 		} | ||||
|  | ||||
| 		for (i = 0; i < args.length; i++) | ||||
| 		{ | ||||
| 			log("arg[" + i + "] = " +args[i]); | ||||
|  | ||||
| 			// is this the install dir param? | ||||
| 			if (args[i].startsWith(INSTALL_DIR_PARAM)) | ||||
| 			{ | ||||
| 				// Make sure it is more the the param tag | ||||
| 				if (args[i].length() <= INSTALL_DIR_PARAM.length()) | ||||
| 				{ | ||||
| 					return ERROR_BAD_INSTALL_DIR_PARAM; | ||||
| 				} | ||||
|  | ||||
| 				sInstallDir = args[i].substring(INSTALL_DIR_PARAM.length()).trim(); | ||||
| 				fileInstallDir = new File(sInstallDir); | ||||
|  | ||||
| 				// Make sure the install dir can be found | ||||
| 				if (!fileInstallDir.exists()) | ||||
| 				{ | ||||
| 					return ERROR_MISSING_INSTALL_DIR; | ||||
| 				} | ||||
|  | ||||
| 				// Make sure the install dir is a directory | ||||
| 				if (!fileInstallDir.isDirectory()) | ||||
| 				{ | ||||
| 					return ERROR_INSTALL_DIR_NOT_A_DIR; | ||||
| 				} | ||||
|  | ||||
| 				properties.setProperty(INSTALL_DIR_PROPERTY, sInstallDir); | ||||
| 			} | ||||
|  | ||||
| 			// is this the properties file param? | ||||
| 			else if (args[i].startsWith(PROPERTY_FILE_PARAM)) | ||||
| 			{ | ||||
| 				// Make sure it is more than the param tag | ||||
| 				if (args[i].length() <= PROPERTY_FILE_PARAM.length()) | ||||
| 				{ | ||||
| 					return ERROR_BAD_PROPERTY_FILE_PARAM; | ||||
| 				} | ||||
|  | ||||
| 				sProperties = args[i].substring(PROPERTY_FILE_PARAM.length()).trim(); | ||||
| 				fileProperties = new File(sProperties); | ||||
|  | ||||
| 				// Make sure the properties file can be found | ||||
| 				if (!fileProperties.exists()) | ||||
| 				{ | ||||
| 					return ERROR_MISSING_PROPERTIES_FILE; | ||||
| 				} | ||||
|  | ||||
| 				// Read the properties | ||||
| 				try | ||||
| 				{ | ||||
| 					fisProperties = new FileInputStream(fileProperties); | ||||
| 					properties.load(fisProperties); | ||||
| 				} | ||||
| 				catch (IOException ioe) | ||||
| 				{ | ||||
| 					return ERROR_UNABLE_TO_READ_PROPERTIES; | ||||
| 				} | ||||
| 			} | ||||
|  | ||||
| 			else if (args[i].startsWith(TEMPLATE_FILE_PARAM)) | ||||
| 			{ | ||||
| 				// Make sure it is more than the param tag | ||||
| 				if (args[i].length() <= TEMPLATE_FILE_PARAM.length()) | ||||
| 				{ | ||||
| 					return ERROR_BAD_TEMPLATE_FILE_PARAM; | ||||
| 				} | ||||
|  | ||||
| 				sTemplate = args[i].substring(TEMPLATE_FILE_PARAM.length()).trim(); | ||||
| 				fileTemplate = new File(sTemplate); | ||||
|  | ||||
| 				// Make sure the template file can be found | ||||
| 				if (!fileTemplate.exists()) | ||||
| 				{ | ||||
| 					log(ERROR_MISSING_TEMPLATE_FILE, sTemplate); | ||||
| 					return ERROR_MISSING_TEMPLATE_FILE; | ||||
| 				} | ||||
| 			} | ||||
|  | ||||
| 			else if (args[i].startsWith(OUTPUT_FILE_PARAM)) | ||||
| 			{ | ||||
| 				// Make sure it is more than the param tag | ||||
| 				if (args[i].length() <= OUTPUT_FILE_PARAM.length()) | ||||
| 				{ | ||||
| 					return ERROR_BAD_OUTPUT_FILE_PARAM; | ||||
| 				} | ||||
|  | ||||
| 				sOutput = args[i].substring(OUTPUT_FILE_PARAM.length()).trim(); | ||||
| 				fileOutput = new File(sOutput); | ||||
| 			} | ||||
|  | ||||
| 			// Handle additional parameters | ||||
| 			else | ||||
| 			{ | ||||
| 				if (-1 == (iEquals = args[i].indexOf("=")) || | ||||
| 					0 == iEquals || | ||||
| 					args[i].length() == iEquals) | ||||
| 				{ | ||||
| 					return ERROR_BAD_PROPERTY_PARAM; | ||||
| 				} | ||||
| 				sKey = args[i].substring(0, iEquals); | ||||
| 				sValue = args[i].substring(iEquals + 1); | ||||
| 				properties.setProperty(sKey, sValue); | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 		// Make sure we got an install dir | ||||
| 		if (null == fileInstallDir) | ||||
| 		{ | ||||
| 			return ERROR_MISSING_INSTALL_DIR_PARAM; | ||||
| 		} | ||||
|  | ||||
| 		// Make sure we got a template file | ||||
| 		if (null == fileTemplate) | ||||
| 		{ | ||||
| 			return ERROR_MISSING_TEMPLATE_FILE_PARAM; | ||||
| 		} | ||||
|  | ||||
| 		// Make sure we got an output file | ||||
| 		if (null == fileOutput) | ||||
| 		{ | ||||
| 			return ERROR_MISSING_OUTPUT_FILE_PARAM; | ||||
| 		} | ||||
|  | ||||
| 		// Note: the properties file parameter is optional | ||||
|  | ||||
| 		return ERROR_NO_ERROR; | ||||
| 	} | ||||
|  | ||||
| 	int processProperties() | ||||
| 	{ | ||||
| 		try | ||||
| 		{ | ||||
| 			Enumeration e; | ||||
| 			String sKey; | ||||
| 			String sValue; | ||||
| 			int i = 0; | ||||
|  | ||||
| 			e = properties.propertyNames(); | ||||
|  | ||||
| 			rgsSearchFor = new String[properties.size()]; | ||||
| 			rgsReplaceWith = new String[properties.size()]; | ||||
|  | ||||
| 			while (e.hasMoreElements()) | ||||
| 			{ | ||||
| 				sKey = (String)e.nextElement(); | ||||
| 				sValue = (String)properties.get(sKey); | ||||
|  | ||||
| 				log("Property key = " + sKey + "  Value = " + sValue); | ||||
|  | ||||
| 				rgsSearchFor[i] = sKey; | ||||
| 				rgsReplaceWith[i] = sValue; | ||||
| 				i++; | ||||
| 			} | ||||
| 		} | ||||
| 		catch (Exception ex1) | ||||
| 		{ | ||||
| 			return -111; | ||||
| 		} | ||||
|  | ||||
| 		return ERROR_NO_ERROR; | ||||
| 	} | ||||
|  | ||||
| 	int createOutputFile() | ||||
| 	{ | ||||
| 		LineNumberReader lnr = null; | ||||
| 		FileWriter fwOutput = null; | ||||
| 		String sLineTemplate; | ||||
| 		String sLineOutput; | ||||
| 		int iSearchFor; | ||||
| 		int i; | ||||
|  | ||||
| 		try | ||||
| 		{ | ||||
| 			// Open the files | ||||
| 			lnr = new LineNumberReader(new FileReader(fileTemplate)); | ||||
| 		} | ||||
| 		catch (Exception e) | ||||
| 		{ | ||||
| 			return -40; | ||||
| 		} | ||||
|  | ||||
| 		try | ||||
| 		{ | ||||
| 			fwOutput = new FileWriter(fileOutput); | ||||
| 		} | ||||
| 		catch (Exception e) | ||||
| 		{ | ||||
| 			return -41; | ||||
| 		} | ||||
| 		try | ||||
| 		{ | ||||
| 			// For each line of text in the template file... | ||||
| 			while (null != (sLineTemplate = lnr.readLine())) | ||||
| 			{ | ||||
| 				sLineOutput = sLineTemplate; | ||||
| 				log("<-- " + sLineOutput); | ||||
|  | ||||
| 				// For each term to be replaced... | ||||
| 				for (i = 0; i < rgsSearchFor.length; i++) | ||||
| 				{ | ||||
| 					log("searching for " + rgsSearchFor[i]); | ||||
| 					// Replace all instances of the term on the line | ||||
| 					while (-1 != (iSearchFor = sLineOutput.indexOf(rgsSearchFor[i]))) | ||||
| 					{ | ||||
| 						log("replacing " + rgsSearchFor[i] + " at position " + iSearchFor + " with " + rgsReplaceWith[i]); | ||||
| 						sLineOutput = sLineOutput.substring(0, iSearchFor) + rgsReplaceWith[i] + | ||||
| 								sLineOutput.substring(iSearchFor + rgsSearchFor[i].length()); | ||||
| 					} | ||||
| 				} | ||||
| 				try | ||||
| 				{ | ||||
| 					fwOutput.write(sLineOutput + "\r\n"); | ||||
| 					log("--> " + sLineOutput); | ||||
| 				} | ||||
| 				catch (Exception e) | ||||
| 				{ | ||||
| 					return -42; | ||||
| 				} | ||||
| 			} | ||||
|  | ||||
| 			// Clean up | ||||
| 			fwOutput.flush(); | ||||
| 			fwOutput.close(); | ||||
| 			lnr.close(); | ||||
| 		} | ||||
| 		catch (Exception e) | ||||
| 		{ | ||||
| 			return ERROR_OUTPUT_COPY_FAILED; | ||||
| 		} | ||||
| 		return ERROR_NO_ERROR; | ||||
| 	} | ||||
|  | ||||
| 	void log(int err) | ||||
| 	{ | ||||
| 		log(err, null); | ||||
| 	} | ||||
|  | ||||
| 	void log(int err, String s) | ||||
| 	{ | ||||
| 		String sMessage = ""; | ||||
|  | ||||
| 		switch (err) | ||||
| 		{ | ||||
| 			case ERROR_NO_ERROR: | ||||
| 				sMessage = "No error"; | ||||
| 				break; | ||||
| 			case ERROR_INVALID_NUMBER_OF_PARAMS: | ||||
| 				sMessage = "Invalid number of parameters: 4 expected"; | ||||
| 				break; | ||||
| 			case ERROR_MISSING_TEMPLATE: | ||||
| 				sMessage = "Template file not found"; | ||||
| 				break; | ||||
| //			case ERROR_TEMPLATE_PROPERTY_MISSING: | ||||
| //				sMessage = "Template file parameter missing"; | ||||
| //				break; | ||||
| 			case ERROR_OUTPUT_PROPERTY_MISSING: | ||||
| 				sMessage = "Output file parameter missing"; | ||||
| 				break; | ||||
| 			case ERROR_OUTPUT_COPY_FAILED: | ||||
| 				sMessage = "Unable to create output file"; | ||||
| 				break; | ||||
| 			case ERROR_IO_EXCEPTION: | ||||
| 				sMessage = "IOException"; | ||||
| 				break; | ||||
| 			case ERROR_MISSING_PROPERTIES: | ||||
| 				sMessage = "Properties file not found"; | ||||
| 				break; | ||||
| 			case ERROR_UNABLE_TO_READ_PROPERTIES: | ||||
| 				sMessage = "Unable to read properties file"; | ||||
| 				break; | ||||
| 			default: | ||||
| 				sMessage = "Unknown error: " + err; | ||||
| 				break; | ||||
| 		} | ||||
|  | ||||
| 		if (null != s) | ||||
| 		{ | ||||
| 			sMessage = sMessage + s; | ||||
| 		} | ||||
| 		log(sMessage); | ||||
| 	} | ||||
|  | ||||
| 	void log(String s) | ||||
| 	{ | ||||
| 		try | ||||
| 		{ | ||||
| 			fw.write(this.getClass().getName() + ": " + s + "\r\n"); | ||||
| 		} | ||||
| 		catch (IOException ioe) | ||||
| 		{ | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
| @@ -0,0 +1,36 @@ | ||||
| import System.Reflection.*; | ||||
| import System.Runtime.CompilerServices.*; | ||||
| import System.Runtime.InteropServices.*; | ||||
|  | ||||
| // | ||||
| // General Information about an assembly is controlled through the following  | ||||
| // set of attributes. Change these attribute values to modify the information | ||||
| // associated with an assembly. | ||||
| // | ||||
|  | ||||
| /** @assembly AssemblyTitle("InitConfigFile") */ | ||||
| /** @assembly AssemblyDescription("") */ | ||||
| /** @assembly AssemblyCompany("Novell") */ | ||||
| /** @assembly AssemblyProduct("InitConfigFile") */ | ||||
| /** @assembly AssemblyCopyright("Copyright © Novell 2006") */ | ||||
| /** @assembly AssemblyTrademark("") */ | ||||
| /** @assembly AssemblyCulture("") */ | ||||
|  | ||||
|  | ||||
| // The ComVisible attribute controls accessibility of an individual type | ||||
| // or member, or of all types within this assembly, from COM.  To access | ||||
| // a type or member in this assembly from COM, set the ComVisible attribute | ||||
| // on that type or member to true. | ||||
| /** @assembly ComVisible(false) */ | ||||
|  | ||||
|  | ||||
| // | ||||
| // Version information for an assembly consists of the following four values: | ||||
| // | ||||
| //      Major Version | ||||
| //      Minor Version  | ||||
| //      Build Number | ||||
| //      Revision | ||||
| // | ||||
|  | ||||
| /** @assembly AssemblyVersion("1.0.0.0") */ | ||||
							
								
								
									
										44
									
								
								CASA-auth-token/server-java/package/windows/Makefile.am
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								CASA-auth-token/server-java/package/windows/Makefile.am
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,44 @@ | ||||
| ####################################################################### | ||||
| # | ||||
| #  Copyright (C) 2006 Novell, Inc. | ||||
| # | ||||
| #  This program is free software; you can redistribute it and/or | ||||
| #  modify it under the terms of the GNU General Public | ||||
| #  License as published by the Free Software Foundation; either | ||||
| #  version 2 of the License, or (at your option) any later version. | ||||
| # | ||||
| #  This program is distributed in the hope that it will be useful, | ||||
| #  but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
| #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
| #  General Public License for more details. | ||||
| # | ||||
| #  You should have received a copy of the GNU General Public | ||||
| #  License along with this program; if not, write to the Free | ||||
| #  Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||||
| # | ||||
| #  Author: Greg Richardson <grichardson@novell.com> | ||||
| # | ||||
| ####################################################################### | ||||
|  | ||||
| SUBDIRS = ClientKeystoreSetup InitConfigFile MungeCryptoPropertiesFilePath ServerKeystoreSetup UpdateWarFile server-java_msi | ||||
|  | ||||
| DIST_SUBDIRS = ClientKeystoreSetup InitConfigFile MungeCryptoPropertiesFilePath ServerKeystoreSetup UpdateWarFile server-java_msi | ||||
|  | ||||
| EXTRA_DIST = | ||||
|  | ||||
| .PHONY: package package-clean package-install package-uninstall | ||||
| package package-clean package-install package-uninstall: | ||||
| 	$(MAKE) -C ClientKeystoreSetup  $@ | ||||
| 	$(MAKE) -C InitConfigFile  $@ | ||||
| 	$(MAKE) -C MungeCryptoPropertiesFilePath $@ | ||||
| 	$(MAKE) -C ServerKeystoreSetup $@ | ||||
| 	$(MAKE) -C UpdateWarFile $@ | ||||
| 	$(MAKE) -C server-java_msi $@ | ||||
|  | ||||
| clean-local: | ||||
| 	if [ -d lib ]; then  rm -rf lib; fi | ||||
|  | ||||
| maintainer-clean-local: | ||||
| 	rm -f Makefile.in | ||||
| 	rm -f Makefile | ||||
|  | ||||
| @@ -0,0 +1,69 @@ | ||||
| ####################################################################### | ||||
| # | ||||
| #  Copyright (C) 2004 Novell, Inc. | ||||
| # | ||||
| #  This program is free software; you can redistribute it and/or | ||||
| #  modify it under the terms of the GNU General Public | ||||
| #  License as published by the Free Software Foundation; either | ||||
| #  version 2 of the License, or (at your option) any later version. | ||||
| # | ||||
| #  This program is distributed in the hope that it will be useful, | ||||
| #  but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
| #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
| #  General Public License for more details. | ||||
| # | ||||
| #  You should have received a copy of the GNU General Public | ||||
| #  License along with this program; if not, write to the Free | ||||
| #  Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||||
| # | ||||
| #  Author: Greg Richardson <grichardson@novell.com> | ||||
| # | ||||
| ####################################################################### | ||||
|  | ||||
| SUBDIRS = | ||||
|  | ||||
| DIST_SUBDIRS = | ||||
|  | ||||
| EXTRA_DIST = MungeCryptoPropertiesFilePath.vjsproj Program.jsl | ||||
|  | ||||
| if DEBUG | ||||
| TARGET_CFG = Debug | ||||
| else | ||||
| TARGET_CFG = Release | ||||
| endif | ||||
|  | ||||
| PACKAGE = MungeCryptoPropertiesFilePath | ||||
| TARGET_FILE = $(PACKAGE).exe | ||||
| LOG_FILE = $(PACKAGE).log | ||||
|  | ||||
| .PHONY: package package-clean package-install package-uninstall devenv | ||||
|  | ||||
| package: $(TARGET_FILE) | ||||
|  | ||||
| devenv: | ||||
| 	@if ! test -x "$(VSINSTALLDIR)/Common7/IDE/devenv.exe"; then echo "Error: Microsoft Visual Studio .NET is currently required to build MSI and MSM packages"; exit 1; fi | ||||
|  | ||||
| $(TARGET_FILE): devenv | ||||
| 	@rm -f $(LOG_FILE) $@ | ||||
| 	@CMD='"$(VSINSTALLDIR)/Common7/IDE/devenv.exe" ../server-java_msi/server-java_msi.sln /build $(TARGET_CFG) /project $(PACKAGE) /out $(LOG_FILE)'; \ | ||||
| 	echo $$CMD; \ | ||||
| 	if eval $$CMD; then \ | ||||
| 		ls -l bin/$(TARGET_CFG)/$(TARGET_FILE); \ | ||||
| 	else \ | ||||
| 		grep -a "ERROR:" $(LOG_FILE); \ | ||||
| 	fi | ||||
| 	 | ||||
| package-clean clean-local: | ||||
| 	rm -rf  Release/* Release Debug/* Debug*/Release */Debug *.log *.suo | ||||
|  | ||||
| clean: | ||||
| 	rm -rf  Release/* Release Debug/* Debug */Release */Debug *.log *.suo | ||||
|  | ||||
| distclean-local: package-clean | ||||
| 	rm -f Makefile | ||||
|  | ||||
| maintainer-clean-local: | ||||
| 	rm -f Makefile.in | ||||
|  | ||||
|  | ||||
|  | ||||
| @@ -0,0 +1,43 @@ | ||||
| <Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||||
|   <PropertyGroup> | ||||
|     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> | ||||
|     <Platform Condition=" '$(Platform)' == '' ">x86</Platform> | ||||
|     <ProductVersion>8.0.50727</ProductVersion> | ||||
|     <SchemaVersion>2.0</SchemaVersion> | ||||
|     <ProjectGuid>{75D8742F-4778-4978-9032-ED9649BA402D}</ProjectGuid> | ||||
|     <OutputType>Exe</OutputType> | ||||
|     <RootNamespace>MungeCryptoPropertiesFilePath</RootNamespace> | ||||
|     <AssemblyName>MungeCryptoPropertiesFilePath</AssemblyName> | ||||
|     <WarningLevel>4</WarningLevel> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' "> | ||||
|     <DebugSymbols>true</DebugSymbols> | ||||
|     <DebugType>full</DebugType> | ||||
|     <Optimize>false</Optimize> | ||||
|     <OutputPath>bin\Debug\</OutputPath> | ||||
|     <DefineConstants>DEBUG;TRACE</DefineConstants> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' "> | ||||
|     <DebugType>pdbonly</DebugType> | ||||
|     <Optimize>true</Optimize> | ||||
|     <OutputPath>bin\Release\</OutputPath> | ||||
|     <DefineConstants>TRACE</DefineConstants> | ||||
|   </PropertyGroup> | ||||
|   <ItemGroup> | ||||
|     <Reference Include="System" /> | ||||
|     <Reference Include="System.Data" /> | ||||
|     <Reference Include="System.Xml" /> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <Compile Include="Program.jsl" /> | ||||
|     <Compile Include="Properties\AssemblyInfo.jsl" /> | ||||
|   </ItemGroup> | ||||
|   <Import Project="$(MSBuildBinPath)\Microsoft.VisualJSharp.targets" /> | ||||
|   <!-- To modify your build process, add your task inside one of the targets below and uncomment it.  | ||||
|        Other similar extension points exist, see Microsoft.Common.targets. | ||||
|   <Target Name="BeforeBuild"> | ||||
|   </Target> | ||||
|   <Target Name="AfterBuild"> | ||||
|   </Target> | ||||
|   --> | ||||
| </Project> | ||||
| @@ -0,0 +1,312 @@ | ||||
| /*********************************************************************** | ||||
|  *  | ||||
|  *  Copyright (C) 2006 Novell, Inc. All Rights Reserved. | ||||
|  * | ||||
|  *  This library is free software; you can redistribute it and/or | ||||
|  *  modify it under the terms of the GNU Lesser General Public | ||||
|  *  License as published by the Free Software Foundation; version 2.1 | ||||
|  *  of the License. | ||||
|  * | ||||
|  *  This library is distributed in the hope that it will be useful, | ||||
|  *  but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *  Library Lesser General Public License for more details. | ||||
|  * | ||||
|  *  You should have received a copy of the GNU Lesser General Public | ||||
|  *  License along with this library; if not, Novell, Inc. | ||||
|  *  | ||||
|  *  To contact Novell about this file by physical or electronic mail,  | ||||
|  *  you may find current contact information at www.novell.com. | ||||
|  *  | ||||
|  *  Author: Juan Carlos Luciani <jluciani@novell.com> | ||||
|  *   | ||||
|  ***********************************************************************/ | ||||
|  | ||||
| package MungeCryptoPropertiesFilePath; | ||||
|  | ||||
| import java.io.*; | ||||
| import java.util.*; | ||||
|  | ||||
| /** | ||||
|  * Summary description for Program | ||||
|  */ | ||||
| public class Program | ||||
| { | ||||
| 	final static int ERROR_NO_ERROR						= 0; | ||||
| 	final static int ERROR_INVALID_NUMBER_OF_PARAMS		= -1; | ||||
| 	final static int ERROR_MISSING_INPUT_FILE			= -2; | ||||
| 	final static int ERROR_OUTPUT_COPY_FAILED			= -3; | ||||
| 	final static int ERROR_IO_EXCEPTION					= -4; | ||||
| 	final static int ERROR_BAD_INPUT_FILE_PARAM			= -5; | ||||
| 	final static int ERROR_BAD_OUTPUT_FILE_PARAM		= -6; | ||||
| 	final static int ERROR_MISSING_INPUT_FILE_PARAM		= -7; | ||||
| 	final static int ERROR_MISSING_OUTPUT_FILE_PARAM	= -8; | ||||
| 	final static int ERROR_CANNOT_READ_FILE				= -9; | ||||
| 	final static int ERROR_CANNOT_CREATE_FILE			= -10; | ||||
|  | ||||
| 	final static String INPUT_FILE_PARAM	= "input="; | ||||
| 	final static String OUTPUT_FILE_PARAM	= "output="; | ||||
| 	final static String FILE_KEY			= "org.apache.ws.security.crypto.merlin.file="; | ||||
|  | ||||
| 	File			fileInput; | ||||
| 	File			fileOutput; | ||||
| 	File			file; | ||||
| 	FileWriter		fw; | ||||
| 	String			sInput; | ||||
| 	String			sOutput; | ||||
|  | ||||
| 	public static void main(String[] args) | ||||
| 	{ | ||||
| 		Program p = new Program(args); | ||||
| 	} | ||||
|  | ||||
| 	Program(String[] args) | ||||
| 	{ | ||||
| 		int rc = ERROR_NO_ERROR; | ||||
|  | ||||
| 		fileInput = null; | ||||
| 		fileOutput = null; | ||||
|  | ||||
| 		try | ||||
| 		{ | ||||
| 			file = new File("c:\\test5.log"); | ||||
| 			fw = new FileWriter(file); | ||||
|  | ||||
| 			log("Here we go: " + args.length); | ||||
| 			for (int i = 0; i < args.length; i++) | ||||
| 			{ | ||||
| 				log("Arg " + i + " = " + args[i]); | ||||
| 			} | ||||
|  | ||||
| 			// Process the arguments | ||||
| 			if (ERROR_NO_ERROR == (rc = processArgs(args))) | ||||
| 			{ | ||||
| 				// Process the file | ||||
| 				rc = createOutputFile(); | ||||
| 			} | ||||
|  | ||||
| 		} | ||||
| 		catch (IOException e) | ||||
| 		{ | ||||
| 			rc = ERROR_IO_EXCEPTION; | ||||
| 		} | ||||
| 		finally | ||||
| 		{ | ||||
| 			try | ||||
| 			{ | ||||
| 				log("return code = " + rc); | ||||
| 				fw.flush(); | ||||
| 				fw.close(); | ||||
| 			} | ||||
| 			catch (Exception e1) | ||||
| 			{ | ||||
| 			} | ||||
| 		} | ||||
| 		System.exit(rc); | ||||
| 	} | ||||
|  | ||||
| 	int processArgs(String[] args) | ||||
| 	{ | ||||
| 		int i; | ||||
|  | ||||
| 		// Validate the number of parameters | ||||
| 		if (args.length != 2) | ||||
| 		{ | ||||
| 			return ERROR_INVALID_NUMBER_OF_PARAMS; | ||||
| 		} | ||||
|  | ||||
| 		for (i = 0; i < args.length; i++) | ||||
| 		{ | ||||
| 			log("arg[" + i + "] = " +args[i]); | ||||
|  | ||||
| 			if (args[i].startsWith(INPUT_FILE_PARAM)) | ||||
| 			{ | ||||
| 				// Make sure it is more than the param tag | ||||
| 				if (args[i].length() <= INPUT_FILE_PARAM.length()) | ||||
| 				{ | ||||
| 					return ERROR_BAD_INPUT_FILE_PARAM; | ||||
| 				} | ||||
|  | ||||
| 				sInput = args[i].substring(INPUT_FILE_PARAM.length()).trim(); | ||||
| 				fileInput = new File(sInput); | ||||
|  | ||||
| 				// Make sure the input file can be found | ||||
| 				if (!fileInput.exists()) | ||||
| 				{ | ||||
| 					log(ERROR_MISSING_INPUT_FILE, sInput); | ||||
| 					return ERROR_MISSING_INPUT_FILE; | ||||
| 				} | ||||
| 			} | ||||
|  | ||||
| 			else if (args[i].startsWith(OUTPUT_FILE_PARAM)) | ||||
| 			{ | ||||
| 				// Make sure it is more than the param tag | ||||
| 				if (args[i].length() <= OUTPUT_FILE_PARAM.length()) | ||||
| 				{ | ||||
| 					return ERROR_BAD_OUTPUT_FILE_PARAM; | ||||
| 				} | ||||
|  | ||||
| 				sOutput = args[i].substring(OUTPUT_FILE_PARAM.length()).trim(); | ||||
| 				fileOutput = new File(sOutput); | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 		// Make sure we got an input file | ||||
| 		if (null == fileInput) | ||||
| 		{ | ||||
| 			return ERROR_MISSING_INPUT_FILE_PARAM; | ||||
| 		} | ||||
|  | ||||
| 		// Make sure we got an output file | ||||
| 		if (null == fileOutput) | ||||
| 		{ | ||||
| 			return ERROR_MISSING_OUTPUT_FILE_PARAM; | ||||
| 		} | ||||
|  | ||||
| 		return ERROR_NO_ERROR; | ||||
| 	} | ||||
|  | ||||
| 	int createOutputFile() | ||||
| 	{ | ||||
| 		LineNumberReader lnr = null; | ||||
| 		FileWriter fwOutput = null; | ||||
| 		String sLineTemplate; | ||||
| 		String sLineOutput; | ||||
| 		int iSearchFor; | ||||
|  | ||||
| 		try | ||||
| 		{ | ||||
| 			// Open the file | ||||
| 			lnr = new LineNumberReader(new FileReader(fileInput)); | ||||
| 		} | ||||
| 		catch (Exception e) | ||||
| 		{ | ||||
| 			return ERROR_CANNOT_READ_FILE; | ||||
| 		} | ||||
|  | ||||
| 		try | ||||
| 		{ | ||||
| 			fwOutput = new FileWriter(fileOutput); | ||||
| 		} | ||||
| 		catch (Exception e) | ||||
| 		{ | ||||
| 			return ERROR_CANNOT_CREATE_FILE; | ||||
| 		} | ||||
| 		try | ||||
| 		{ | ||||
| 			// For each line of text in the template file... | ||||
| 			while (null != (sLineTemplate = lnr.readLine())) | ||||
| 			{ | ||||
| 				sLineOutput = sLineTemplate; | ||||
| 				log("<-- " + sLineOutput); | ||||
|  | ||||
| 				if (sLineOutput.trim().startsWith(FILE_KEY)) | ||||
| 				{ | ||||
| 					// Replace all instances of the line separator on the line | ||||
| 					while (-1 != (iSearchFor = sLineOutput.indexOf("\\"))) | ||||
| 					{ | ||||
| 						log("replacing \\ at position " + iSearchFor + " with //"); | ||||
| 						sLineOutput = sLineOutput.substring(0, iSearchFor) + "//" + | ||||
| 								sLineOutput.substring(iSearchFor + 1); | ||||
| 					} | ||||
| 				} | ||||
| 				try | ||||
| 				{ | ||||
| 					fwOutput.write(sLineOutput + "\r\n"); | ||||
| 					log("--> " + sLineOutput); | ||||
| 				} | ||||
| 				catch (Exception e) | ||||
| 				{ | ||||
| 					return -42; | ||||
| 				} | ||||
| 			} | ||||
|  | ||||
| 			// Clean up | ||||
| 			fwOutput.flush(); | ||||
| 			fwOutput.close(); | ||||
| 			lnr.close(); | ||||
| 		} | ||||
| 		catch (Exception e) | ||||
| 		{ | ||||
| 			return ERROR_OUTPUT_COPY_FAILED; | ||||
| 		} | ||||
| 		return ERROR_NO_ERROR; | ||||
| 	} | ||||
|  | ||||
| 	void log(int err) | ||||
| 	{ | ||||
| 		log(err, null); | ||||
| 	} | ||||
|  | ||||
| 	void log(int err, String s) | ||||
| 	{ | ||||
| 		String sMessage = ""; | ||||
|  | ||||
| 		switch (err) | ||||
| 		{ | ||||
| 			case ERROR_NO_ERROR: | ||||
| 				sMessage = "No error"; | ||||
| 				break; | ||||
| 			case ERROR_INVALID_NUMBER_OF_PARAMS: | ||||
| 				sMessage = "Invalid number of parameters: 2 expected"; | ||||
| 				break; | ||||
|  | ||||
| 			case ERROR_MISSING_INPUT_FILE: | ||||
| 				sMessage = "Invalid number of parameters: 2 expected"; | ||||
| 				break; | ||||
|  | ||||
| 			case ERROR_OUTPUT_COPY_FAILED: | ||||
| 				sMessage = "Unable to create output file"; | ||||
| 				break; | ||||
|  | ||||
| 			case ERROR_IO_EXCEPTION: | ||||
| 				sMessage = "IOException"; | ||||
| 				break; | ||||
|  | ||||
| 			case ERROR_BAD_INPUT_FILE_PARAM: | ||||
| 				sMessage = "Invalid input file parameter"; | ||||
| 				break; | ||||
|  | ||||
| 			case ERROR_BAD_OUTPUT_FILE_PARAM: | ||||
| 				sMessage = "Invalid output file parameter"; | ||||
| 				break; | ||||
|  | ||||
| 			case ERROR_MISSING_INPUT_FILE_PARAM: | ||||
| 				sMessage = "Missing input file parameter"; | ||||
| 				break; | ||||
|  | ||||
| 			case ERROR_MISSING_OUTPUT_FILE_PARAM: | ||||
| 				sMessage = "Missing output file parameter"; | ||||
| 				break; | ||||
|  | ||||
| 			case ERROR_CANNOT_READ_FILE: | ||||
| 				sMessage = "Cannot read file"; | ||||
| 				break; | ||||
|  | ||||
| 			case ERROR_CANNOT_CREATE_FILE: | ||||
| 				sMessage = "Cannot create file"; | ||||
| 				break; | ||||
|  | ||||
| 			default: | ||||
| 				sMessage = "Unknown error: " + err; | ||||
| 				break; | ||||
| 		} | ||||
|  | ||||
| 		if (null != s) | ||||
| 		{ | ||||
| 			sMessage = sMessage + s; | ||||
| 		} | ||||
| 		log(sMessage); | ||||
| 	} | ||||
|  | ||||
| 	void log(String s) | ||||
| 	{ | ||||
| 		try | ||||
| 		{ | ||||
| 			fw.write(this.getClass().getName() + ": " + s + "\r\n"); | ||||
| 		} | ||||
| 		catch (IOException ioe) | ||||
| 		{ | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
| @@ -0,0 +1,36 @@ | ||||
| import System.Reflection.*; | ||||
| import System.Runtime.CompilerServices.*; | ||||
| import System.Runtime.InteropServices.*; | ||||
|  | ||||
| // | ||||
| // General Information about an assembly is controlled through the following  | ||||
| // set of attributes. Change these attribute values to modify the information | ||||
| // associated with an assembly. | ||||
| // | ||||
|  | ||||
| /** @assembly AssemblyTitle("MungeCryptoPropertiesFilePath") */ | ||||
| /** @assembly AssemblyDescription("") */ | ||||
| /** @assembly AssemblyCompany("Novell") */ | ||||
| /** @assembly AssemblyProduct("MungeCryptoPropertiesFilePath") */ | ||||
| /** @assembly AssemblyCopyright("Copyright © Novell 2007") */ | ||||
| /** @assembly AssemblyTrademark("") */ | ||||
| /** @assembly AssemblyCulture("") */ | ||||
|  | ||||
|  | ||||
| // The ComVisible attribute controls accessibility of an individual type | ||||
| // or member, or of all types within this assembly, from COM.  To access | ||||
| // a type or member in this assembly from COM, set the ComVisible attribute | ||||
| // on that type or member to true. | ||||
| /** @assembly ComVisible(false) */ | ||||
|  | ||||
|  | ||||
| // | ||||
| // Version information for an assembly consists of the following four values: | ||||
| // | ||||
| //      Major Version | ||||
| //      Minor Version  | ||||
| //      Build Number | ||||
| //      Revision | ||||
| // | ||||
|  | ||||
| /** @assembly AssemblyVersion("1.0.0.0") */ | ||||
| @@ -0,0 +1,69 @@ | ||||
| ####################################################################### | ||||
| # | ||||
| #  Copyright (C) 2004 Novell, Inc. | ||||
| # | ||||
| #  This program is free software; you can redistribute it and/or | ||||
| #  modify it under the terms of the GNU General Public | ||||
| #  License as published by the Free Software Foundation; either | ||||
| #  version 2 of the License, or (at your option) any later version. | ||||
| # | ||||
| #  This program is distributed in the hope that it will be useful, | ||||
| #  but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
| #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
| #  General Public License for more details. | ||||
| # | ||||
| #  You should have received a copy of the GNU General Public | ||||
| #  License along with this program; if not, write to the Free | ||||
| #  Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||||
| # | ||||
| #  Author: Greg Richardson <grichardson@novell.com> | ||||
| # | ||||
| ####################################################################### | ||||
|  | ||||
| SUBDIRS = | ||||
|  | ||||
| DIST_SUBDIRS = | ||||
|  | ||||
| EXTRA_DIST = ServerKeystoreSetup.vjsproj Program.jsl | ||||
|  | ||||
| if DEBUG | ||||
| TARGET_CFG = Debug | ||||
| else | ||||
| TARGET_CFG = Release | ||||
| endif | ||||
|  | ||||
| PACKAGE = ServerKeystoreSetup | ||||
| TARGET_FILE = $(PACKAGE).exe | ||||
| LOG_FILE = $(PACKAGE).log | ||||
|  | ||||
| .PHONY: package package-clean package-install package-uninstall devenv | ||||
|  | ||||
| package: $(TARGET_FILE) | ||||
|  | ||||
| devenv: | ||||
| 	@if ! test -x "$(VSINSTALLDIR)/Common7/IDE/devenv.exe"; then echo "Error: Microsoft Visual Studio .NET is currently required to build MSI and MSM packages"; exit 1; fi | ||||
|  | ||||
| $(TARGET_FILE): devenv | ||||
| 	@rm -f $(LOG_FILE) $@ | ||||
| 	@CMD='"$(VSINSTALLDIR)/Common7/IDE/devenv.exe" ../server-java_msi/server-java_msi.sln /build $(TARGET_CFG) /project $(PACKAGE) /out $(LOG_FILE)'; \ | ||||
| 	echo $$CMD; \ | ||||
| 	if eval $$CMD; then \ | ||||
| 		ls -l bin/$(TARGET_CFG)/$(TARGET_FILE); \ | ||||
| 	else \ | ||||
| 		grep -a "ERROR:" $(LOG_FILE); \ | ||||
| 	fi | ||||
| 	 | ||||
| package-clean clean-local: | ||||
| 	rm -rf  Release/* Release Debug/* Debug*/Release */Debug *.log *.suo | ||||
|  | ||||
| clean: | ||||
| 	rm -rf  Release/* Release Debug/* Debug */Release */Debug *.log *.suo | ||||
|  | ||||
| distclean-local: package-clean | ||||
| 	rm -f Makefile | ||||
|  | ||||
| maintainer-clean-local: | ||||
| 	rm -f Makefile.in | ||||
|  | ||||
|  | ||||
|  | ||||
| @@ -0,0 +1,388 @@ | ||||
| /*********************************************************************** | ||||
|  *  | ||||
|  *  Copyright (C) 2006 Novell, Inc. All Rights Reserved. | ||||
|  * | ||||
|  *  This library is free software; you can redistribute it and/or | ||||
|  *  modify it under the terms of the GNU Lesser General Public | ||||
|  *  License as published by the Free Software Foundation; version 2.1 | ||||
|  *  of the License. | ||||
|  * | ||||
|  *  This library is distributed in the hope that it will be useful, | ||||
|  *  but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *  Library Lesser General Public License for more details. | ||||
|  * | ||||
|  *  You should have received a copy of the GNU Lesser General Public | ||||
|  *  License along with this library; if not, Novell, Inc. | ||||
|  *  | ||||
|  *  To contact Novell about this file by physical or electronic mail,  | ||||
|  *  you may find current contact information at www.novell.com. | ||||
|  *  | ||||
|  *  Author: Juan Carlos Luciani <jluciani@novell.com> | ||||
|  *   | ||||
|  ***********************************************************************/ | ||||
|  | ||||
| package ServerKeystoreSetup; | ||||
|  | ||||
| import java.io.*; | ||||
| import java.util.*; | ||||
|  | ||||
| public class Program | ||||
| { | ||||
| 	final static int ERROR_NO_ERROR						= 0; | ||||
| 	final static int ERROR_EXEC_FAILED					= -1; | ||||
| 	final static int ERROR_INVALID_NUMBER_OF_PARAMS		= -2; | ||||
| 	final static int ERROR_BAD_INSTALL_DIR_PARAM		= -3; | ||||
| 	final static int ERROR_MISSING_INSTALL_DIR			= -4; | ||||
| 	final static int ERROR_INSTALL_DIR_NOT_A_DIR		= -5; | ||||
| 	final static int ERROR_BAD_PROPERTY_FILE_PARAM		= -6; | ||||
| 	final static int ERROR_MISSING_PROPERTIES_FILE		= -7; | ||||
| 	final static int ERROR_UNABLE_TO_READ_PROPERTIES	= -8; | ||||
| 	final static int ERROR_UNKNOWN_PARAM				= -9; | ||||
| 	final static int ERROR_MISSING_INSTALL_DIR_PARAM	= -10; | ||||
| 	final static int ERROR_REQUIRED_VALUE_MISSING		= -11; | ||||
| 	final static int ERROR_EXEC_INTERRUPTED				= -12; | ||||
| //	final static int ERROR_MISSING_INSTALL_DIR = -4; | ||||
| //	final static int ERROR_MISSING_INSTALL_DIR = -4; | ||||
| //	final static int ERROR_MISSING_INSTALL_DIR = -4; | ||||
| //	final static int ERROR_MISSING_INSTALL_DIR = -4; | ||||
|  | ||||
| 	final static String INSTALL_DIR						= "installdir="; | ||||
| 	final static String PROPERTY_FILE					= "propertyfile="; | ||||
|  | ||||
| 	String		sInstallDir; | ||||
| 	Properties	properties; | ||||
|  | ||||
| 	// debug stuff | ||||
| 	File file; | ||||
| 	FileWriter fw; | ||||
|  | ||||
| 	public static void main(String[] args) | ||||
| 	{ | ||||
| 		Program p = new Program(args); | ||||
| 		p = null; | ||||
| 	} | ||||
|  | ||||
| 	Program(String[] args) | ||||
| 	{ | ||||
| 		int rc; | ||||
|  | ||||
| 		try | ||||
| 		{ | ||||
| 			// DEBUG STUFF | ||||
| 			file = new File("c:\\test2.log"); | ||||
| 			fw = new FileWriter(file); | ||||
|  | ||||
| 			log("Here we go again: " + args.length); | ||||
| 			for (int i = 0; i < args.length; i++) | ||||
| 			{ | ||||
| 				log("Arg " + i + " = " + args[i] + "\r\n"); | ||||
| 			} | ||||
| 			// DEBUG STUFF | ||||
|  | ||||
| 			// Process the input params | ||||
| 			if (ERROR_NO_ERROR == (rc = processArgs(args))) | ||||
| 			{ | ||||
| 				// Make sure we got everything we need | ||||
| 				if (ERROR_NO_ERROR == (rc = findRequiredValues())) | ||||
| 				{ | ||||
| 					// Make sure the server keystore has been created | ||||
| 					rc = createServerKeystore(); | ||||
| 				} | ||||
| 			} | ||||
|  | ||||
| 			// DEBUG STUFF | ||||
| 			log(rc); | ||||
| 			fw.flush(); | ||||
| 			fw.close(); | ||||
| 			// DEBUG STUFF | ||||
| 		} | ||||
| 		catch (IOException e) | ||||
| 		{ | ||||
| 			rc = -54;//ERROR_IO_EXCEPTION; | ||||
| 		} | ||||
| 		System.exit(rc); | ||||
| 	} | ||||
|  | ||||
| 	int processArgs(String[] args) | ||||
| 	{ | ||||
| 		String sProperties; | ||||
| 		File fileInstallDir = null; | ||||
| 		File fileProperties = null; | ||||
| 		FileInputStream fisProperties = null; | ||||
| 		int i; | ||||
|  | ||||
| 		// Validate the number of parameters | ||||
| 		if (args.length < 2) | ||||
| 		{ | ||||
| 			return ERROR_INVALID_NUMBER_OF_PARAMS; | ||||
| 		} | ||||
|  | ||||
| 		for (i = 0; i < args.length; i++) | ||||
| 		{ | ||||
| 			// is this the install dir param? | ||||
| 			if (args[i].startsWith(INSTALL_DIR)) | ||||
| 			{ | ||||
| 				// Make sure it is more the the param tag | ||||
| 				if (args[i].length() <= INSTALL_DIR.length()) | ||||
| 				{ | ||||
| 					return ERROR_BAD_INSTALL_DIR_PARAM; | ||||
| 				} | ||||
|  | ||||
| 				sInstallDir = args[i].substring(INSTALL_DIR.length()).trim(); | ||||
| 				fileInstallDir = new File(sInstallDir); | ||||
|  | ||||
| 				// Make sure the install dir can be found | ||||
| 				if (!fileInstallDir.exists()) | ||||
| 				{ | ||||
| 					return ERROR_MISSING_INSTALL_DIR; | ||||
| 				} | ||||
|  | ||||
| 				// Make sure the install dir is a directory | ||||
| 				if (!fileInstallDir.isDirectory()) | ||||
| 				{ | ||||
| 					return ERROR_INSTALL_DIR_NOT_A_DIR; | ||||
| 				} | ||||
| 			} | ||||
|  | ||||
| 			// is this the properties file param? | ||||
| 			else if (args[i].startsWith(PROPERTY_FILE)) | ||||
| 			{ | ||||
| 				// Make sure it is more the the param tag | ||||
| 				if (args[i].length() <= PROPERTY_FILE.length()) | ||||
| 				{ | ||||
| 					return ERROR_BAD_PROPERTY_FILE_PARAM; | ||||
| 				} | ||||
|  | ||||
| 				sProperties = args[i].substring(PROPERTY_FILE.length()).trim(); | ||||
| 				fileProperties = new File(sProperties); | ||||
|  | ||||
| 				// Make sure the properties file can be found | ||||
| 				if (!fileProperties.exists()) | ||||
| 				{ | ||||
| 					return ERROR_MISSING_PROPERTIES_FILE; | ||||
| 				} | ||||
|  | ||||
| 				// Read the properties | ||||
| 				try | ||||
| 				{ | ||||
| 					fisProperties = new FileInputStream(fileProperties); | ||||
| 					properties = new Properties(); | ||||
| 					properties.load(fisProperties); | ||||
| 				} | ||||
| 				catch (IOException ioe) | ||||
| 				{ | ||||
| 					return ERROR_UNABLE_TO_READ_PROPERTIES; | ||||
| 				} | ||||
| 			} | ||||
|  | ||||
| 			// Unknown parameter | ||||
| 			else | ||||
| 			{ | ||||
| 				log(ERROR_UNKNOWN_PARAM, args[i]); | ||||
| 				return ERROR_UNKNOWN_PARAM; | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 		// Make sure we got an install dir | ||||
| 		if (null == fileInstallDir) | ||||
| 		{ | ||||
| 			return ERROR_MISSING_INSTALL_DIR_PARAM; | ||||
| 		} | ||||
|  | ||||
| 		return ERROR_NO_ERROR; | ||||
| 	} | ||||
|  | ||||
| 	int findRequiredValues() | ||||
| 	{ | ||||
| 		String[] rgsRequired = {  | ||||
| 			"ATS_JAVA_HOME",  | ||||
| 			"COMPUTERNAME"}; | ||||
| 		int i; | ||||
| 		String sValue; | ||||
|  | ||||
| 		for (i = 0; i < rgsRequired.length; i++) | ||||
| 		{ | ||||
| 			log("look for required value: " + rgsRequired[i]); | ||||
|  | ||||
| 			if (!properties.containsKey(rgsRequired[i])) | ||||
| 			{ | ||||
| 				log("look for required value in envirement: " + rgsRequired[i]); | ||||
| 				if (null == (sValue = System.getProperty(rgsRequired[i]))) | ||||
| 				{ | ||||
| 					log("unable to find required value in envirement: " + rgsRequired[i]); | ||||
| 					return ERROR_REQUIRED_VALUE_MISSING; | ||||
| 				} | ||||
| 				log("found required value in envirement: " + rgsRequired[i] + "  =  " + sValue); | ||||
| 				properties.put(rgsRequired[i], sValue); | ||||
| 			} | ||||
| 			log("found required value: " + rgsRequired[i] + "  =  " + properties.get(rgsRequired[i])); | ||||
| 		} | ||||
| 		return ERROR_NO_ERROR; | ||||
| 	} | ||||
|  | ||||
|  | ||||
| 	int createServerKeystore() | ||||
| 	{ | ||||
| 		int rc; | ||||
| 		String sKeytool = properties.get("ATS_JAVA_HOME") + "\\bin\\keytool.exe"; | ||||
| 		String sHost = (String)properties.get("COMPUTERNAME"); | ||||
|  | ||||
| 		log("keytool = " + sKeytool); | ||||
| 		log("host = " + sHost); | ||||
|  | ||||
| 		// Do not do anything if the server keystore has already been created | ||||
| 		if (keyStoreAlreadyExists()) | ||||
| 		{ | ||||
| 			return ERROR_NO_ERROR; | ||||
| 		} | ||||
|  | ||||
| 		// Create the server keystore with the key that will be used for signing tokens | ||||
| 		if (ERROR_NO_ERROR == (rc =invokeCommand(sKeytool + " -genkey -alias signingKey -keystore " +  | ||||
| 			sInstallDir + "ats\\etc\\keys\\server\\jks-store -dname \"cn=casaatsd@" + sHost + | ||||
| 			"\" -validity 3600 -keypass secret -storepass secret"))) | ||||
| 		{ | ||||
| 			// Export self-signed certificate for the signing key | ||||
| 			if (ERROR_NO_ERROR == (rc = invokeCommand(sKeytool + " -export -keystore " + | ||||
| 				sInstallDir + "ats\\etc\\keys\\server\\jks-store -alias signingKey -storepass secret -keypass secret -file " + | ||||
| 				sInstallDir + "ats\\etc\\keys\\casaatsdSigningCert"))) | ||||
| 			{ | ||||
| 				// Create a key for Tomcat to do SSL communications | ||||
| 				rc = invokeCommand(sKeytool + " -genkey -alias tomcat -keyalg RSA -keystore " + | ||||
| 					sInstallDir + "ats\\etc\\keys\\server\\jks-store -dname \"cn=" + | ||||
| 					sHost + "\" -validity 3600 -keypass secret -storepass secret"); | ||||
| 			} | ||||
| 		} | ||||
| 		return rc; | ||||
| 	} | ||||
|  | ||||
| 	boolean keyStoreAlreadyExists() | ||||
| 	{ | ||||
| 		File fileKeystore = new File(sInstallDir + "ats\\etc\\keys\\server\\jks-store"); | ||||
|  | ||||
| 		// Why is this always returning true?  exists() also always returns true. | ||||
| 		// log("keystore (" + sInstallDir + "ats\\etc\\keys\\server\\jks-store" + ") already exists = " + (file.isFile())); | ||||
| 		//		return (file.isFile()); | ||||
|  | ||||
| 		File fileParent = fileKeystore.getParentFile(); | ||||
| 		String[] rgChildren = fileParent.list(); | ||||
| 		if (null != rgChildren) | ||||
| 		{ | ||||
| 			for (int i = 0; i < rgChildren.length; i++) | ||||
| 			{ | ||||
| 				log("child " + i + " = " + rgChildren[i]); | ||||
| 				if ("jks-store".equals(rgChildren[i])) | ||||
| 				{ | ||||
| 					return true; | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
|  		return false; | ||||
| 	} | ||||
|  | ||||
| 	int invokeCommand(String sCommand) | ||||
| 	{ | ||||
| 		Process p; | ||||
| 		int rc; | ||||
|  | ||||
| 		log("invoke command: "  + sCommand); | ||||
| 		Runtime runtime = Runtime.getRuntime(); | ||||
|  | ||||
| 		try | ||||
| 		{ | ||||
| 			p = runtime.exec(sCommand); | ||||
| 			try | ||||
| 			{ | ||||
| 				rc = p.waitFor(); | ||||
| 				log("invoke command return code: " + rc); | ||||
| 			} | ||||
| 			catch (InterruptedException ie) | ||||
| 			{ | ||||
| 				log(ERROR_EXEC_INTERRUPTED, sCommand); | ||||
| 				return ERROR_EXEC_INTERRUPTED; | ||||
| 			} | ||||
| 		} | ||||
| 		catch (IOException e) | ||||
| 		{ | ||||
| 			log("Ioexception"); | ||||
| 			return ERROR_EXEC_FAILED; | ||||
| 		} | ||||
| 		 | ||||
| 		return ERROR_NO_ERROR; | ||||
| 	} | ||||
|  | ||||
| 	void log(int err) | ||||
| 	{ | ||||
| 		log(err, null); | ||||
| 	} | ||||
|  | ||||
| 	void log(int err, String s) | ||||
| 	{ | ||||
| 		String sMessage = ""; | ||||
|  | ||||
| 		switch (err) | ||||
| 		{ | ||||
| 			case ERROR_NO_ERROR: | ||||
| 				sMessage = "No error"; | ||||
| 				break; | ||||
| 			case ERROR_EXEC_FAILED: | ||||
| 				sMessage = "Execute command failed "; | ||||
| 				break; | ||||
| 			case ERROR_INVALID_NUMBER_OF_PARAMS: | ||||
| 				sMessage = "Invalid number of params"; | ||||
| 				break; | ||||
| 			case ERROR_BAD_INSTALL_DIR_PARAM: | ||||
| 				sMessage = "Install dir parameter is bad"; | ||||
| 				break; | ||||
| 			case ERROR_MISSING_INSTALL_DIR: | ||||
| 				sMessage = "Missing install dir"; | ||||
| 				break; | ||||
| 			case ERROR_INSTALL_DIR_NOT_A_DIR: | ||||
| 				sMessage = "Install dir is not a dir"; | ||||
| 				break; | ||||
| 			case ERROR_BAD_PROPERTY_FILE_PARAM: | ||||
| 				sMessage = "Invalid porperty file parameter"; | ||||
| 				break; | ||||
| 			case ERROR_MISSING_PROPERTIES_FILE: | ||||
| 				sMessage = "Property file not found"; | ||||
| 				break; | ||||
| 			case ERROR_UNABLE_TO_READ_PROPERTIES: | ||||
| 				sMessage = "Unable to read property file"; | ||||
| 				break; | ||||
| 			case ERROR_UNKNOWN_PARAM: | ||||
| 				sMessage = "Unknown parameter: "; | ||||
| 				break; | ||||
| 			case ERROR_MISSING_INSTALL_DIR_PARAM: | ||||
| 				sMessage = "Install dir parameter is missing"; | ||||
| 				break; | ||||
| 			case ERROR_REQUIRED_VALUE_MISSING: | ||||
| 				sMessage = "Required value is missing "; | ||||
| 				break; | ||||
| 			case ERROR_EXEC_INTERRUPTED: | ||||
| 				sMessage = "Execution iinterrupted: "; | ||||
| 				break; | ||||
| 			default: | ||||
| 				sMessage = "Unknown error"; | ||||
| 				break; | ||||
| 		} | ||||
|  | ||||
| 		if (null != s) | ||||
| 		{ | ||||
| 			sMessage = sMessage + s; | ||||
| 		} | ||||
| 		log(sMessage); | ||||
| 	} | ||||
|  | ||||
| 	void log(String s) | ||||
| 	{ | ||||
| 		try | ||||
| 		{ | ||||
| 			fw.write(this.getClass().getName() + ": " + s + "\r\n"); | ||||
| 		} | ||||
| 		catch (IOException ioe) | ||||
| 		{ | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| } | ||||
| @@ -0,0 +1,36 @@ | ||||
| import System.Reflection.*; | ||||
| import System.Runtime.CompilerServices.*; | ||||
| import System.Runtime.InteropServices.*; | ||||
|  | ||||
| // | ||||
| // General Information about an assembly is controlled through the following  | ||||
| // set of attributes. Change these attribute values to modify the information | ||||
| // associated with an assembly. | ||||
| // | ||||
|  | ||||
| /** @assembly AssemblyTitle("ServerKeystoreSetup") */ | ||||
| /** @assembly AssemblyDescription("") */ | ||||
| /** @assembly AssemblyCompany("Novell") */ | ||||
| /** @assembly AssemblyProduct("ServerKeystoreSetup") */ | ||||
| /** @assembly AssemblyCopyright("Copyright © Novell 2006") */ | ||||
| /** @assembly AssemblyTrademark("") */ | ||||
| /** @assembly AssemblyCulture("") */ | ||||
|  | ||||
|  | ||||
| // The ComVisible attribute controls accessibility of an individual type | ||||
| // or member, or of all types within this assembly, from COM.  To access | ||||
| // a type or member in this assembly from COM, set the ComVisible attribute | ||||
| // on that type or member to true. | ||||
| /** @assembly ComVisible(false) */ | ||||
|  | ||||
|  | ||||
| // | ||||
| // Version information for an assembly consists of the following four values: | ||||
| // | ||||
| //      Major Version | ||||
| //      Minor Version  | ||||
| //      Build Number | ||||
| //      Revision | ||||
| // | ||||
|  | ||||
| /** @assembly AssemblyVersion("1.0.0.0") */ | ||||
| @@ -0,0 +1,47 @@ | ||||
| <Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||||
|   <PropertyGroup> | ||||
|     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> | ||||
|     <Platform Condition=" '$(Platform)' == '' ">x86</Platform> | ||||
|     <ProductVersion>8.0.50727</ProductVersion> | ||||
|     <SchemaVersion>2.0</SchemaVersion> | ||||
|     <ProjectGuid>{BAF8BCFB-1C97-4CA7-B03E-E588A67B21E0}</ProjectGuid> | ||||
|     <OutputType>Exe</OutputType> | ||||
|     <RootNamespace>ServerKeystoreSetup</RootNamespace> | ||||
|     <AssemblyName>ServerKeystoreSetup</AssemblyName> | ||||
|     <WarningLevel>4</WarningLevel> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' "> | ||||
|     <DebugSymbols>true</DebugSymbols> | ||||
|     <DebugType>full</DebugType> | ||||
|     <Optimize>false</Optimize> | ||||
|     <OutputPath>bin\Debug\</OutputPath> | ||||
|     <DefineConstants>DEBUG;TRACE</DefineConstants> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' "> | ||||
|     <DebugType>pdbonly</DebugType> | ||||
|     <Optimize>true</Optimize> | ||||
|     <OutputPath>bin\Release\</OutputPath> | ||||
|     <DefineConstants>TRACE</DefineConstants> | ||||
|   </PropertyGroup> | ||||
|   <ItemGroup> | ||||
|     <Reference Include="System" /> | ||||
|     <Reference Include="System.Data" /> | ||||
|     <Reference Include="System.Xml" /> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <Compile Include="Program.jsl" /> | ||||
|     <Compile Include="Properties\AssemblyInfo.jsl" /> | ||||
|   </ItemGroup> | ||||
|   <Import Project="$(MSBuildBinPath)\Microsoft.VisualJSharp.targets" /> | ||||
|   <!-- To modify your build process, add your task inside one of the targets below and uncomment it.  | ||||
|        Other similar extension points exist, see Microsoft.Common.targets. | ||||
|   <Target Name="BeforeBuild"> | ||||
|   </Target> | ||||
|   <Target Name="AfterBuild"> | ||||
|   </Target> | ||||
|   --> | ||||
|   <PropertyGroup> | ||||
|     <PostBuildEvent> | ||||
|     </PostBuildEvent> | ||||
|   </PropertyGroup> | ||||
| </Project> | ||||
| @@ -0,0 +1,69 @@ | ||||
| ####################################################################### | ||||
| # | ||||
| #  Copyright (C) 2004 Novell, Inc. | ||||
| # | ||||
| #  This program is free software; you can redistribute it and/or | ||||
| #  modify it under the terms of the GNU General Public | ||||
| #  License as published by the Free Software Foundation; either | ||||
| #  version 2 of the License, or (at your option) any later version. | ||||
| # | ||||
| #  This program is distributed in the hope that it will be useful, | ||||
| #  but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
| #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
| #  General Public License for more details. | ||||
| # | ||||
| #  You should have received a copy of the GNU General Public | ||||
| #  License along with this program; if not, write to the Free | ||||
| #  Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||||
| # | ||||
| #  Author: Greg Richardson <grichardson@novell.com> | ||||
| # | ||||
| ####################################################################### | ||||
|  | ||||
| SUBDIRS = | ||||
|  | ||||
| DIST_SUBDIRS = | ||||
|  | ||||
| EXTRA_DIST = UpdateWarFile.vjsproj Program.jsl | ||||
|  | ||||
| if DEBUG | ||||
| TARGET_CFG = Debug | ||||
| else | ||||
| TARGET_CFG = Release | ||||
| endif | ||||
|  | ||||
| PACKAGE = UpdateWarFile | ||||
| TARGET_FILE = $(PACKAGE).exe | ||||
| LOG_FILE = $(PACKAGE).log | ||||
|  | ||||
| .PHONY: package package-clean package-install package-uninstall devenv | ||||
|  | ||||
| package: $(TARGET_FILE) | ||||
|  | ||||
| devenv: | ||||
| 	@if ! test -x "$(VSINSTALLDIR)/Common7/IDE/devenv.exe"; then echo "Error: Microsoft Visual Studio .NET is currently required to build MSI and MSM packages"; exit 1; fi | ||||
|  | ||||
| $(TARGET_FILE): devenv | ||||
| 	@rm -f $(LOG_FILE) $@ | ||||
| 	@CMD='"$(VSINSTALLDIR)/Common7/IDE/devenv.exe" ../server-java_msi/server-java_msi.sln /build $(TARGET_CFG) /project $(PACKAGE) /out $(LOG_FILE)'; \ | ||||
| 	echo $$CMD; \ | ||||
| 	if eval $$CMD; then \ | ||||
| 		ls -l bin/$(TARGET_CFG)/$(TARGET_FILE); \ | ||||
| 	else \ | ||||
| 		grep -a "ERROR:" $(LOG_FILE); \ | ||||
| 	fi | ||||
| 	 | ||||
| package-clean clean-local: | ||||
| 	rm -rf  Release/* Release Debug/* Debug*/Release */Debug *.log *.suo | ||||
|  | ||||
| clean: | ||||
| 	rm -rf  Release/* Release Debug/* Debug */Release */Debug *.log *.suo | ||||
|  | ||||
| distclean-local: package-clean | ||||
| 	rm -f Makefile | ||||
|  | ||||
| maintainer-clean-local: | ||||
| 	rm -f Makefile.in | ||||
|  | ||||
|  | ||||
|  | ||||
| @@ -0,0 +1,417 @@ | ||||
| /*********************************************************************** | ||||
|  *  | ||||
|  *  Copyright (C) 2006 Novell, Inc. All Rights Reserved. | ||||
|  * | ||||
|  *  This library is free software; you can redistribute it and/or | ||||
|  *  modify it under the terms of the GNU Lesser General Public | ||||
|  *  License as published by the Free Software Foundation; version 2.1 | ||||
|  *  of the License. | ||||
|  * | ||||
|  *  This library is distributed in the hope that it will be useful, | ||||
|  *  but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
|  *  Library Lesser General Public License for more details. | ||||
|  * | ||||
|  *  You should have received a copy of the GNU Lesser General Public | ||||
|  *  License along with this library; if not, Novell, Inc. | ||||
|  *  | ||||
|  *  To contact Novell about this file by physical or electronic mail,  | ||||
|  *  you may find current contact information at www.novell.com. | ||||
|  *  | ||||
|  *  Author: Juan Carlos Luciani <jluciani@novell.com> | ||||
|  *   | ||||
|  ***********************************************************************/ | ||||
|  | ||||
| package UpdateWarFile; | ||||
|  | ||||
| import java.lang.Throwable; | ||||
| import java.lang.NullPointerException; | ||||
| import com.zerog.ia.api.pub.*; | ||||
| import java.util.*; | ||||
| import java.net.*; | ||||
| import java.io.*; | ||||
| import java.util.zip.*; | ||||
| import java.util.jar.*; | ||||
|  | ||||
| /** | ||||
|  * Summary description for Program | ||||
|  */ | ||||
| public class Program | ||||
| { | ||||
| 	final static String INSTALL_DIR_PARAM = "ATS_INSTALL_DIR="; | ||||
|  | ||||
| 	final static int ERROR_NO_ERROR						= 0; | ||||
| 	final static int ERROR_IO_EXCEPTION					= -1; | ||||
| 	final static int ERROR_INVALID_NUMBER_OF_PARAMS		= -2; | ||||
| 	final static int ERROR_BAD_INSTALL_DIR_PARAM		= -3; | ||||
| 	final static int ERROR_MISSING_INSTALL_DIR			= -4; | ||||
| 	final static int ERROR_INSTALL_DIR_NOT_A_DIR		= -5; | ||||
| 	final static int ERROR_MISSING_INSTALL_DIR_PARAM	= -6; | ||||
| 	final static int ERROR_WAR_TEMPLATE_FILE_MISSING	= -7; | ||||
| 	final static int ERROR_NEW_JAR_CANNOT_BE_REPLACED	= -8; | ||||
| 	final static int ERROR_JAR_COPY_FAILED				= -9; | ||||
| 	final static int ERROR_CREATE_WAR_FILE_FAILED		= -10; | ||||
| 	final static int ERROR_CREATE_WAR_FOS_FAILED		= -11; | ||||
| 	final static int ERROR_OPEN_JAR_TEMPLATE_FAILED		= -12; | ||||
| 	final static int ERROR_JOS_FLUSH_FAILED				= -13; | ||||
| 	final static int ERROR_ADD_FILE_TO_JAR_FAILED		= -14; | ||||
| 	final static int ERROR_JOS_CLOSE_FAILED				= -15; | ||||
| 	final static int ERROR_FOS_CLOSE_FAILED				= -16;  | ||||
| 	final static int ERROR_JFTEMPLATE_CLOSE_FAILED		= -17; | ||||
|  | ||||
| 	String			sInstallDir; | ||||
| 	File			file; | ||||
| 	FileWriter		fw; | ||||
|  | ||||
| 	public static void main(String[] args) | ||||
| 	{ | ||||
| 		Program p = new Program(args); | ||||
| 	} | ||||
|  | ||||
| 	Program(String[] args) | ||||
| 	{ | ||||
| 		int rc = ERROR_NO_ERROR; | ||||
|  | ||||
| 		sInstallDir = null; | ||||
|  | ||||
| 		try | ||||
| 		{ | ||||
| 			file = new File("c:\\test3.log"); | ||||
| 			fw = new FileWriter(file); | ||||
|  | ||||
| 			log("Here we go: " + args.length); | ||||
| 			for (int i = 0; i < args.length; i++) | ||||
| 			{ | ||||
| 				log("Arg " + i + " = " + args[i]); | ||||
| 			} | ||||
|  | ||||
| 			// Process the arguments | ||||
| 			if (ERROR_NO_ERROR == (rc = processArgs(args))) | ||||
| 			{ | ||||
| 				// Create the modified war file | ||||
| 				rc = createWarFile(); | ||||
| 			} | ||||
| 		} | ||||
| 		catch (IOException e) | ||||
| 		{ | ||||
| 			rc = ERROR_IO_EXCEPTION; | ||||
| 		} | ||||
| 		finally | ||||
| 		{ | ||||
| 			try | ||||
| 			{ | ||||
| 				log("return code = " + rc); | ||||
| 				fw.flush(); | ||||
| 				fw.close(); | ||||
| 			} | ||||
| 			catch (Exception e1) | ||||
| 			{ | ||||
| 			} | ||||
| 		} | ||||
| 		System.exit(rc); | ||||
| 	} | ||||
|  | ||||
| 	int processArgs(String[] args) | ||||
| 	{ | ||||
| 		File fileInstallDir = null; | ||||
| 		int i; | ||||
|  | ||||
| 		// Validate the number of parameters | ||||
| 		if (args.length != 1) | ||||
| 		{ | ||||
| 			return ERROR_INVALID_NUMBER_OF_PARAMS; | ||||
| 		} | ||||
|  | ||||
| 		for (i = 0; i < args.length; i++) | ||||
| 		{ | ||||
| 			log("arg[" + i + "] = " + args[i]); | ||||
|  | ||||
| 			// is this the install dir param? | ||||
| 			if (args[i].startsWith(INSTALL_DIR_PARAM)) | ||||
| 			{ | ||||
| 				// Make sure it is more than the param tag | ||||
| 				if (args[i].length() <= INSTALL_DIR_PARAM.length()) | ||||
| 				{ | ||||
| 					return ERROR_BAD_INSTALL_DIR_PARAM; | ||||
| 				} | ||||
|  | ||||
| 				sInstallDir = args[i].substring(INSTALL_DIR_PARAM.length()).trim(); | ||||
| 				fileInstallDir = new File(sInstallDir); | ||||
|  | ||||
| 				// Make sure the install dir can be found | ||||
| 				if (!fileInstallDir.exists()) | ||||
| 				{ | ||||
| 					return ERROR_MISSING_INSTALL_DIR; | ||||
| 				} | ||||
|  | ||||
| 				// Make sure the install dir is a directory | ||||
| 				if (!fileInstallDir.isDirectory()) | ||||
| 				{ | ||||
| 					return ERROR_INSTALL_DIR_NOT_A_DIR; | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 		// Make sure we got an install dir | ||||
| 		if (null == fileInstallDir) | ||||
| 		{ | ||||
| 			return ERROR_MISSING_INSTALL_DIR_PARAM; | ||||
| 		} | ||||
|  | ||||
| 		return ERROR_NO_ERROR; | ||||
| 	} | ||||
|  | ||||
| 	int createWarFile() | ||||
| 	{ | ||||
| 		String				sWarTemplate	= sInstallDir + "ats\\etc\\svc\\templates\\CasaAuthTokenSvc.war"; | ||||
| 		String				sWarNew			= sInstallDir + "ats\\catalinabase\\webapps\\CasaAuthTokenSvc.war"; | ||||
| 		File				fileWarTemplate	= new File(sWarTemplate);; | ||||
| 		File				fileWarNew		= new File(sWarNew); | ||||
| 		FileOutputStream	fosWarNew		= null; | ||||
| 		ZipOutputStream		josWarNew		= null; | ||||
| 		ZipFile             jfTemplate		= null; | ||||
| 		int					rc				= ERROR_NO_ERROR; | ||||
| 		 | ||||
| 		// Ensure that the war template exists | ||||
| 		log("looking for war template: " + sWarTemplate); | ||||
| 		if (!fileWarTemplate.exists()) | ||||
| 		{ | ||||
| 			rc = ERROR_WAR_TEMPLATE_FILE_MISSING; | ||||
| 		} | ||||
|  | ||||
| 		if (rc == ERROR_NO_ERROR) | ||||
| 		{ | ||||
| 			// Ensure that the new jar name does not exist | ||||
| 			if (fileWarNew.exists()) | ||||
| 			{ | ||||
| 				log("war file already exists: " + sWarNew); | ||||
| 				if (!fileWarNew.delete()) | ||||
| 				{ | ||||
| 					log("could not delete war file: " + sWarNew); | ||||
| 					rc = ERROR_NEW_JAR_CANNOT_BE_REPLACED; | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| 			 | ||||
| 		if (rc == ERROR_NO_ERROR) | ||||
| 		{ | ||||
| 			// Create/open the new jar | ||||
| 			try | ||||
| 			{ | ||||
| 				log("create new war file output stream: " + sWarNew); | ||||
| 				fosWarNew = new FileOutputStream(fileWarNew); | ||||
| 				josWarNew = new ZipOutputStream(fosWarNew); | ||||
| 			} | ||||
| 			catch (IOException ioe0) | ||||
| 			{ | ||||
| 				log(ioe0.toString()); | ||||
| 				rc = ERROR_CREATE_WAR_FOS_FAILED; | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 		if (rc == ERROR_NO_ERROR) | ||||
| 		{ | ||||
| 			// Open the old jar | ||||
| 			try | ||||
| 			{ | ||||
| 				jfTemplate = new ZipFile(sWarTemplate); | ||||
| 			} | ||||
| 			catch (IOException ioe1) | ||||
| 			{ | ||||
| 				rc = ERROR_OPEN_JAR_TEMPLATE_FAILED; | ||||
| 			} | ||||
| 		} | ||||
| 			 | ||||
| 		if (rc == ERROR_NO_ERROR) | ||||
| 		{ | ||||
| 			// Transfer the files | ||||
| 			rc = moveFilesFromJarToJar(josWarNew, jfTemplate); | ||||
| 		} | ||||
| 			 | ||||
| 		// Add the files | ||||
| 		if (rc == ERROR_NO_ERROR) | ||||
| 		{ | ||||
| 			int i; | ||||
| 			String [] rgsFilesToAdd = new String[1]; | ||||
| 			rgsFilesToAdd[0] = sInstallDir + "ats\\etc\\svc\\templates\\crypto.properties"; | ||||
| 			String [] rgsNames = new String[1]; | ||||
| 			rgsNames[0] = "WEB-INF/classes/crypto.properties"; | ||||
| 			for (i = 0; i < rgsFilesToAdd.length; i++) | ||||
| 			{ | ||||
| 				log("Adding file: " + rgsFilesToAdd[i] + " with name " + rgsNames[i]); | ||||
| 				rc = addFileToJar(rgsFilesToAdd[i], rgsNames[i], josWarNew); | ||||
| 			} | ||||
| 		} | ||||
| 			 | ||||
| 		// Close up | ||||
| 		if (null != josWarNew) | ||||
| 		{ | ||||
| 			try | ||||
| 			{ | ||||
| 				josWarNew.flush(); | ||||
| 			} | ||||
| 			catch (IOException ioe2) | ||||
| 			{ | ||||
| 				rc = ERROR_JOS_FLUSH_FAILED; | ||||
| 			} | ||||
| 			try | ||||
| 			{ | ||||
| 				josWarNew.close(); | ||||
| 			} | ||||
| 			catch (IOException ioe3) | ||||
| 			{ | ||||
| 				rc = ERROR_JOS_CLOSE_FAILED; | ||||
| 			} | ||||
| 			try | ||||
| 			{ | ||||
| 				fosWarNew.close(); | ||||
| 			} | ||||
| 			catch (IOException ioe4) | ||||
| 			{ | ||||
| 				rc = ERROR_FOS_CLOSE_FAILED; | ||||
| 			} | ||||
| 		} | ||||
| 		if (null != jfTemplate) | ||||
| 		{ | ||||
| 			try | ||||
| 			{ | ||||
| 				jfTemplate.close(); | ||||
| 			} | ||||
| 			catch (IOException ioe5) | ||||
| 			{ | ||||
| 				rc = ERROR_JFTEMPLATE_CLOSE_FAILED; | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 		return rc; | ||||
| 	} | ||||
|  | ||||
| 	int moveFilesFromJarToJar(ZipOutputStream josDst, ZipFile jfSrc) | ||||
| 	{ | ||||
| 		int rc = ERROR_NO_ERROR; | ||||
| 		try | ||||
| 		{ | ||||
| 			Enumeration         entries = jfSrc.entries(); | ||||
| 			ZipEntry            jeLoop; | ||||
| 			InputStream         isLoop; | ||||
| 			ZipEntry            zeIndex; | ||||
| 			int                 bRead; | ||||
| 			byte []             b = new byte[4096]; | ||||
| 		 | ||||
| 			while (entries.hasMoreElements()) | ||||
| 			{ | ||||
| 				jeLoop = (ZipEntry)entries.nextElement(); | ||||
|  | ||||
| 				// Skip WEB-INF/classes/cypto.properties | ||||
| 				if (jeLoop.getName().equalsIgnoreCase("WEB-INF/classes/crypto.properties")) | ||||
| 				{ | ||||
| 					log("skipping: " + "WEB-INF/classes/crypto.properties"); | ||||
| 					continue; | ||||
| 				} | ||||
| 				 | ||||
| 				// Move the rest of the files over | ||||
| 				else | ||||
| 				{ | ||||
| 					log("Transferring jar file: " + jeLoop.getName()); | ||||
|  | ||||
| 					// Create the input stream | ||||
| 					isLoop = jfSrc.getInputStream(jeLoop); | ||||
| 					 | ||||
| 					// Set up the output stream | ||||
| 					zeIndex = new ZipEntry(jeLoop.getName()); | ||||
| 					josDst.putNextEntry( zeIndex); | ||||
| 					 | ||||
| 					// Transfer the file contents | ||||
| 					while (-1 != (bRead = isLoop.read(b))) | ||||
| 					{ | ||||
| 						josDst.write(b, 0, bRead); | ||||
| 					} | ||||
| 					 | ||||
| 					// all done | ||||
| 					josDst.closeEntry(); | ||||
| 					isLoop.close(); | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| 		catch (Exception e) | ||||
| 		{ | ||||
| 			rc = ERROR_JAR_COPY_FAILED; | ||||
| 		} | ||||
| 		return rc; | ||||
| 	} | ||||
|  | ||||
| 	int addFileToJar(String sFilename, String sName, ZipOutputStream josJarNew) | ||||
| 	{ | ||||
| 		FileInputStream fis; | ||||
| 		ZipEntry je; | ||||
| 		int bRead; | ||||
| 		byte [] b = new byte[4096]; | ||||
| 		int rc = ERROR_NO_ERROR; | ||||
| 		 | ||||
| 		try | ||||
| 		{ | ||||
| 			// Create the input stream | ||||
| 			fis = new FileInputStream(sFilename); | ||||
| 			 | ||||
| 			// Set up the output stream | ||||
| 			je = new ZipEntry(sName); | ||||
| 			josJarNew.putNextEntry(je); | ||||
| 			 | ||||
| 			// Tansfer the contents of the file | ||||
| 			while (-1 != (bRead = fis.read(b))) | ||||
| 			{ | ||||
| 				josJarNew.write(b, 0, bRead); | ||||
| 			} | ||||
| 			 | ||||
| 			// All done | ||||
| 			fis.close(); | ||||
| 			josJarNew.closeEntry(); | ||||
| 		} | ||||
| 		catch (Exception e) | ||||
| 		{ | ||||
| 			log(e.toString()); | ||||
| 			rc = ERROR_ADD_FILE_TO_JAR_FAILED; | ||||
| 		} | ||||
| 		return rc; | ||||
| 	} | ||||
|  | ||||
| 	void log(int err) | ||||
| 	{ | ||||
| 		log(err, null); | ||||
| 	} | ||||
|  | ||||
| 	void log(int err, String s) | ||||
| 	{ | ||||
| 		String sMessage = ""; | ||||
|  | ||||
| 		switch (err) | ||||
| 		{ | ||||
| 			case ERROR_NO_ERROR: | ||||
| 				sMessage = "No error"; | ||||
| 				break; | ||||
| 			case ERROR_INVALID_NUMBER_OF_PARAMS: | ||||
| 				sMessage = "Invalid number of parameters: 4 expected"; | ||||
| 				break; | ||||
| 			default: | ||||
| 				sMessage = "Unknown error: " + err; | ||||
| 				break; | ||||
| 		} | ||||
|  | ||||
| 		if (null != s) | ||||
| 		{ | ||||
| 			sMessage = sMessage + s; | ||||
| 		} | ||||
| 		log(sMessage); | ||||
| 	} | ||||
|  | ||||
| 	void log(String s) | ||||
| 	{ | ||||
| 		try | ||||
| 		{ | ||||
| 			fw.write(this.getClass().getName() + ": " + s + "\r\n"); | ||||
| 		} | ||||
| 		catch (IOException ioe) | ||||
| 		{ | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
| @@ -0,0 +1,36 @@ | ||||
| import System.Reflection.*; | ||||
| import System.Runtime.CompilerServices.*; | ||||
| import System.Runtime.InteropServices.*; | ||||
|  | ||||
| // | ||||
| // General Information about an assembly is controlled through the following  | ||||
| // set of attributes. Change these attribute values to modify the information | ||||
| // associated with an assembly. | ||||
| // | ||||
|  | ||||
| /** @assembly AssemblyTitle("UpdateWarFile") */ | ||||
| /** @assembly AssemblyDescription("") */ | ||||
| /** @assembly AssemblyCompany("Novell") */ | ||||
| /** @assembly AssemblyProduct("UpdateWarFile") */ | ||||
| /** @assembly AssemblyCopyright("Copyright © Novell 2006") */ | ||||
| /** @assembly AssemblyTrademark("") */ | ||||
| /** @assembly AssemblyCulture("") */ | ||||
|  | ||||
|  | ||||
| // The ComVisible attribute controls accessibility of an individual type | ||||
| // or member, or of all types within this assembly, from COM.  To access | ||||
| // a type or member in this assembly from COM, set the ComVisible attribute | ||||
| // on that type or member to true. | ||||
| /** @assembly ComVisible(false) */ | ||||
|  | ||||
|  | ||||
| // | ||||
| // Version information for an assembly consists of the following four values: | ||||
| // | ||||
| //      Major Version | ||||
| //      Minor Version  | ||||
| //      Build Number | ||||
| //      Revision | ||||
| // | ||||
|  | ||||
| /** @assembly AssemblyVersion("1.0.0.0") */ | ||||
| @@ -0,0 +1,47 @@ | ||||
| <Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||||
|   <PropertyGroup> | ||||
|     <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> | ||||
|     <Platform Condition=" '$(Platform)' == '' ">x86</Platform> | ||||
|     <ProductVersion>8.0.50727</ProductVersion> | ||||
|     <SchemaVersion>2.0</SchemaVersion> | ||||
|     <ProjectGuid>{38A7408E-9446-4DEA-9F76-2A901AE5F16B}</ProjectGuid> | ||||
|     <OutputType>Exe</OutputType> | ||||
|     <RootNamespace>UpdateWarFile</RootNamespace> | ||||
|     <AssemblyName>UpdateWarFile</AssemblyName> | ||||
|     <WarningLevel>4</WarningLevel> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' "> | ||||
|     <DebugSymbols>true</DebugSymbols> | ||||
|     <DebugType>full</DebugType> | ||||
|     <Optimize>false</Optimize> | ||||
|     <OutputPath>bin\Debug\</OutputPath> | ||||
|     <DefineConstants>DEBUG;TRACE</DefineConstants> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' "> | ||||
|     <DebugType>pdbonly</DebugType> | ||||
|     <Optimize>true</Optimize> | ||||
|     <OutputPath>bin\Release\</OutputPath> | ||||
|     <DefineConstants>TRACE</DefineConstants> | ||||
|   </PropertyGroup> | ||||
|   <ItemGroup> | ||||
|     <Reference Include="System" /> | ||||
|     <Reference Include="System.Data" /> | ||||
|     <Reference Include="System.Xml" /> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <Compile Include="Program.jsl" /> | ||||
|     <Compile Include="Properties\AssemblyInfo.jsl" /> | ||||
|   </ItemGroup> | ||||
|   <Import Project="$(MSBuildBinPath)\Microsoft.VisualJSharp.targets" /> | ||||
|   <!-- To modify your build process, add your task inside one of the targets below and uncomment it.  | ||||
|        Other similar extension points exist, see Microsoft.Common.targets. | ||||
|   <Target Name="BeforeBuild"> | ||||
|   </Target> | ||||
|   <Target Name="AfterBuild"> | ||||
|   </Target> | ||||
|   --> | ||||
|   <PropertyGroup> | ||||
|     <PostBuildEvent> | ||||
|     </PostBuildEvent> | ||||
|   </PropertyGroup> | ||||
| </Project> | ||||
| @@ -0,0 +1,69 @@ | ||||
| ####################################################################### | ||||
| # | ||||
| #  Copyright (C) 2004 Novell, Inc. | ||||
| # | ||||
| #  This program is free software; you can redistribute it and/or | ||||
| #  modify it under the terms of the GNU General Public | ||||
| #  License as published by the Free Software Foundation; either | ||||
| #  version 2 of the License, or (at your option) any later version. | ||||
| # | ||||
| #  This program is distributed in the hope that it will be useful, | ||||
| #  but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
| #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
| #  General Public License for more details. | ||||
| # | ||||
| #  You should have received a copy of the GNU General Public | ||||
| #  License along with this program; if not, write to the Free | ||||
| #  Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||||
| # | ||||
| #  Author: Greg Richardson <grichardson@novell.com> | ||||
| # | ||||
| ####################################################################### | ||||
|  | ||||
| SUBDIRS = | ||||
|  | ||||
| DIST_SUBDIRS = | ||||
|  | ||||
| EXTRA_DIST = server-java_msi.vdproj | ||||
|  | ||||
| if DEBUG | ||||
| TARGET_CFG = Debug | ||||
| else | ||||
| TARGET_CFG = Release | ||||
| endif | ||||
|  | ||||
| PACKAGE = server-java_msi | ||||
| TARGET_FILE = $(PACKAGE).msi | ||||
| LOG_FILE = $(PACKAGE).log | ||||
|  | ||||
| .PHONY: package package-clean package-install package-uninstall devenv | ||||
|  | ||||
| package: $(TARGET_FILE) | ||||
|  | ||||
| devenv: | ||||
| 	@if ! test -x "$(VSINSTALLDIR)/Common7/IDE/devenv.exe"; then echo "Error: Microsoft Visual Studio .NET is currently required to build MSI and MSM packages"; exit 1; fi | ||||
|  | ||||
| $(TARGET_FILE): devenv | ||||
| 	@rm -f $(LOG_FILE) $@ | ||||
| 	@CMD='"$(VSINSTALLDIR)/Common7/IDE/devenv.exe" server-java_msi.sln /build $(TARGET_CFG) /project $(PACKAGE) /out $(LOG_FILE)'; \ | ||||
| 	echo $$CMD; \ | ||||
| 	if eval $$CMD; then \ | ||||
| 		ls -l $(TARGET_CFG)/$(TARGET_FILE); \ | ||||
| 	else \ | ||||
| 		grep -a "ERROR:" $(LOG_FILE); \ | ||||
| 	fi | ||||
| 	 | ||||
| package-clean clean-local: | ||||
| 	rm -rf  Release/* Release Debug/* Debug*/Release */Debug *.log *.suo | ||||
|  | ||||
| clean: | ||||
| 	rm -rf  Release/* Release Debug/* Debug */Release */Debug *.log *.suo | ||||
|  | ||||
| distclean-local: package-clean | ||||
| 	rm -f Makefile  | ||||
|  | ||||
| maintainer-clean-local: | ||||
| 	rm -f Makefile.in | ||||
|  | ||||
|  | ||||
|  | ||||
| @@ -0,0 +1,20 @@ | ||||
|  | ||||
| Microsoft Visual Studio Solution File, Format Version 9.00 | ||||
| # Visual Studio 2005 | ||||
| Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "server-java_msi", "package\windows\server-java_msi\server-java_msi.vdproj", "{90300F7B-A68F-403B-A5A5-E36580054EFF}" | ||||
| EndProject | ||||
| Global | ||||
| 	GlobalSection(SolutionConfigurationPlatforms) = preSolution | ||||
| 		Debug|x86 = Debug|x86 | ||||
| 		Release|x86 = Release|x86 | ||||
| 	EndGlobalSection | ||||
| 	GlobalSection(ProjectConfigurationPlatforms) = postSolution | ||||
| 		{90300F7B-A68F-403B-A5A5-E36580054EFF}.Debug|x86.ActiveCfg = Debug | ||||
| 		{90300F7B-A68F-403B-A5A5-E36580054EFF}.Debug|x86.Build.0 = Debug | ||||
| 		{90300F7B-A68F-403B-A5A5-E36580054EFF}.Release|x86.ActiveCfg = Release | ||||
| 		{90300F7B-A68F-403B-A5A5-E36580054EFF}.Release|x86.Build.0 = Release | ||||
| 	EndGlobalSection | ||||
| 	GlobalSection(SolutionProperties) = preSolution | ||||
| 		HideSolutionNode = FALSE | ||||
| 	EndGlobalSection | ||||
| EndGlobal | ||||
| @@ -0,0 +1,50 @@ | ||||
|  | ||||
| Microsoft Visual Studio Solution File, Format Version 9.00 | ||||
| # Visual Studio 2005 | ||||
| Project("{E6FDF86B-F3D1-11D4-8576-0002A516ECE8}") = "UpdateWarFile", "..\UpdateWarFile\UpdateWarFile.vjsproj", "{38A7408E-9446-4DEA-9F76-2A901AE5F16B}" | ||||
| EndProject | ||||
| Project("{E6FDF86B-F3D1-11D4-8576-0002A516ECE8}") = "ClientKeystoreSetup", "..\ClientKeystoreSetup\ClientKeystoreSetup.vjsproj", "{89D5D921-A2E6-4ED9-A724-8C7DAAC09AC5}" | ||||
| EndProject | ||||
| Project("{54435603-DBB4-11D2-8724-00A0C9A8B90C}") = "server-java_msi", "server-java_msi.vdproj", "{124289E1-BD76-485B-A779-C2372332D538}" | ||||
| EndProject | ||||
| Project("{E6FDF86B-F3D1-11D4-8576-0002A516ECE8}") = "InitConfigFile", "..\InitConfigFile\InitConfigFile.vjsproj", "{E3528B18-D4A0-4604-B2C5-8EE36E094A40}" | ||||
| EndProject | ||||
| Project("{E6FDF86B-F3D1-11D4-8576-0002A516ECE8}") = "ServerKeystoreSetup", "..\ServerKeystoreSetup\ServerKeystoreSetup.vjsproj", "{BAF8BCFB-1C97-4CA7-B03E-E588A67B21E0}" | ||||
| EndProject | ||||
| Project("{E6FDF86B-F3D1-11D4-8576-0002A516ECE8}") = "MungeCryptoPropertiesFilePath", "..\MungeCryptoPropertiesFilePath\MungeCryptoPropertiesFilePath.vjsproj", "{75D8742F-4778-4978-9032-ED9649BA402D}" | ||||
| EndProject | ||||
| Global | ||||
| 	GlobalSection(SolutionConfigurationPlatforms) = preSolution | ||||
| 		Debug|x86 = Debug|x86 | ||||
| 		Release|x86 = Release|x86 | ||||
| 	EndGlobalSection | ||||
| 	GlobalSection(ProjectConfigurationPlatforms) = postSolution | ||||
| 		{38A7408E-9446-4DEA-9F76-2A901AE5F16B}.Debug|x86.ActiveCfg = Debug|x86 | ||||
| 		{38A7408E-9446-4DEA-9F76-2A901AE5F16B}.Debug|x86.Build.0 = Debug|x86 | ||||
| 		{38A7408E-9446-4DEA-9F76-2A901AE5F16B}.Release|x86.ActiveCfg = Release|x86 | ||||
| 		{38A7408E-9446-4DEA-9F76-2A901AE5F16B}.Release|x86.Build.0 = Release|x86 | ||||
| 		{89D5D921-A2E6-4ED9-A724-8C7DAAC09AC5}.Debug|x86.ActiveCfg = Debug|x86 | ||||
| 		{89D5D921-A2E6-4ED9-A724-8C7DAAC09AC5}.Debug|x86.Build.0 = Debug|x86 | ||||
| 		{89D5D921-A2E6-4ED9-A724-8C7DAAC09AC5}.Release|x86.ActiveCfg = Release|x86 | ||||
| 		{89D5D921-A2E6-4ED9-A724-8C7DAAC09AC5}.Release|x86.Build.0 = Release|x86 | ||||
| 		{124289E1-BD76-485B-A779-C2372332D538}.Debug|x86.ActiveCfg = Debug | ||||
| 		{124289E1-BD76-485B-A779-C2372332D538}.Debug|x86.Build.0 = Debug | ||||
| 		{124289E1-BD76-485B-A779-C2372332D538}.Release|x86.ActiveCfg = Release | ||||
| 		{124289E1-BD76-485B-A779-C2372332D538}.Release|x86.Build.0 = Release | ||||
| 		{E3528B18-D4A0-4604-B2C5-8EE36E094A40}.Debug|x86.ActiveCfg = Debug|x86 | ||||
| 		{E3528B18-D4A0-4604-B2C5-8EE36E094A40}.Debug|x86.Build.0 = Debug|x86 | ||||
| 		{E3528B18-D4A0-4604-B2C5-8EE36E094A40}.Release|x86.ActiveCfg = Release|x86 | ||||
| 		{E3528B18-D4A0-4604-B2C5-8EE36E094A40}.Release|x86.Build.0 = Release|x86 | ||||
| 		{BAF8BCFB-1C97-4CA7-B03E-E588A67B21E0}.Debug|x86.ActiveCfg = Debug|x86 | ||||
| 		{BAF8BCFB-1C97-4CA7-B03E-E588A67B21E0}.Debug|x86.Build.0 = Debug|x86 | ||||
| 		{BAF8BCFB-1C97-4CA7-B03E-E588A67B21E0}.Release|x86.ActiveCfg = Release|x86 | ||||
| 		{BAF8BCFB-1C97-4CA7-B03E-E588A67B21E0}.Release|x86.Build.0 = Release|x86 | ||||
| 		{75D8742F-4778-4978-9032-ED9649BA402D}.Debug|x86.ActiveCfg = Debug|x86 | ||||
| 		{75D8742F-4778-4978-9032-ED9649BA402D}.Debug|x86.Build.0 = Debug|x86 | ||||
| 		{75D8742F-4778-4978-9032-ED9649BA402D}.Release|x86.ActiveCfg = Release|x86 | ||||
| 		{75D8742F-4778-4978-9032-ED9649BA402D}.Release|x86.Build.0 = Release|x86 | ||||
| 	EndGlobalSection | ||||
| 	GlobalSection(SolutionProperties) = preSolution | ||||
| 		HideSolutionNode = FALSE | ||||
| 	EndGlobalSection | ||||
| EndGlobal | ||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
		Reference in New Issue
	
	Block a user