Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Error upgrading from 5.7.0 to 6.0.5 #234

Closed
Kristieb opened this issue Feb 13, 2023 · 6 comments
Closed

Error upgrading from 5.7.0 to 6.0.5 #234

Kristieb opened this issue Feb 13, 2023 · 6 comments
Assignees
Labels

Comments

@Kristieb
Copy link

I'm having troubles upgrading from 5.7.0 to 6.0.5.

Looks like the new version is having trouble reading some of the configuration values.

There is a message saying the Certificate configuration is invalid. When I click on Certificate information I can see the following:

java.lang.ArrayIndexOutOfBoundsException: Index 16 out of bounds for length 16
1.: com.helger.commons.text.util.TextVariableHelper._nextCharConsiderMasking(TextVariableHelper.java:69)
2.: com.helger.commons.text.util.TextVariableHelper._findStartOfVarName(TextVariableHelper.java:135)
3.: com.helger.commons.text.util.TextVariableHelper.splitByVariables(TextVariableHelper.java:175)
4.: com.helger.commons.text.util.TextVariableHelper.forEachTextAndVariable(TextVariableHelper.java:270)
5.: com.helger.commons.text.util.TextVariableHelper.getWithReplacedVariables(TextVariableHelper.java:309)
6.: com.helger.config.Config._getWithVariablesReplacedRecursive(Config.java:257)
7.: com.helger.config.Config.lambda$_getWithVariablesReplacedRecursive$2(Config.java:247)
8.: com.helger.commons.text.util.TextVariableHelper.lambda$getWithReplacedVariables$0(TextVariableHelper.java:310)
9.: com.helger.commons.text.util.TextVariableHelper.forEachTextAndVariable(TextVariableHelper.java:287)
10.: com.helger.commons.text.util.TextVariableHelper.getWithReplacedVariables(TextVariableHelper.java:309)
11.: com.helger.config.Config._getWithVariablesReplacedRecursive(Config.java:257)
12.: com.helger.config.Config.getValue(Config.java:275)
13.: com.helger.config.Config.getValue(Config.java:48)
14.: com.helger.commons.traits.IGetterByKeyTrait.getConvertedValue(IGetterByKeyTrait.java:289)
15.: com.helger.commons.traits.IGetterByKeyTrait.getAsString(IGetterByKeyTrait.java:390)
16.: com.helger.config.fallback.ConfigWithFallback.getAsStringOrFallback(ConfigWithFallback.java:114)
17.: com.helger.pd.client.PDClientConfiguration.getKeyStorePassword(PDClientConfiguration.java:210)
18.: com.helger.pd.client.PDClientConfiguration.loadKeyStore(PDClientConfiguration.java:219)
19.: com.helger.phoss.smp.ui.secure.PageSecureCertificateInformation.fillContent(PageSecureCertificateInformation.java:349)
20.: com.helger.phoss.smp.ui.secure.PageSecureCertificateInformation.fillContent(PageSecureCertificateInformation.java:65)
21.: com.helger.photon.uicore.page.AbstractWebPage.getContent(AbstractWebPage.java:162)
22.: com.helger.photon.bootstrap4.uictrls.ext.BootstrapPageRenderer.getPageContent(BootstrapPageRenderer.java:133)
23.: com.helger.photon.bootstrap4.uictrls.ext.BootstrapPageRenderer.getPageContent(BootstrapPageRenderer.java:160)
24.: com.helger.phoss.smp.ui.secure.SMPRendererSecure.getContent(SMPRendererSecure.java:227)
25.: com.helger.phoss.smp.ui.SMPLayoutHTMLProvider.fillBody(SMPLayoutHTMLProvider.java:70)
26.: com.helger.photon.core.html.AbstractSWECHTMLProvider.fillHeadAndBody(AbstractSWECHTMLProvider.java:106)
27.: com.helger.photon.core.html.AbstractHTMLProvider.createHTML(AbstractHTMLProvider.java:164)
28.: com.helger.photon.app.html.PhotonHTMLHelper.createHTMLResponse(PhotonHTMLHelper.java:117)
29.: com.helger.photon.core.servlet.AbstractApplicationXServletHandler.handleRequest(AbstractApplicationXServletHandler.java:101)
30.: com.helger.phoss.smp.servlet.SMPApplicationXServletHandler.handleRequest(SMPApplicationXServletHandler.java:81)
31.: com.helger.xservlet.handler.simple.XServletHandlerToSimpleHandler.onRequest(XServletHandlerToSimpleHandler.java:245)
32.: com.helger.xservlet.AbstractXServlet._invokeHandler(AbstractXServlet.java:345)
33.: com.helger.xservlet.AbstractXServlet.service(AbstractXServlet.java:533)
34.: javax.servlet.http.HttpServlet.service(HttpServlet.java:779)
35.: com.helger.xservlet.AbstractXServlet.service(AbstractXServlet.java:587)
36.: org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227)
37.: org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
38.: org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
39.: org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
40.: org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
41.: com.helger.web.servlets.scope.AbstractScopeAwareFilter.doHttpFilter(AbstractScopeAwareFilter.java:81)
42.: com.helger.servlet.filter.AbstractHttpServletFilter.doFilter(AbstractHttpServletFilter.java:66)
43.: org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
44.: org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
45.: com.helger.xservlet.AbstractXFilter.doHttpFilter(AbstractXFilter.java:189)
46.: com.helger.servlet.filter.AbstractHttpServletFilter.doFilter(AbstractHttpServletFilter.java:66)
47.: org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
48.: org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
49.: com.helger.servlet.filter.CharacterEncodingFilter.doHttpFilter(CharacterEncodingFilter.java:187)
50.: com.helger.servlet.filter.AbstractHttpServletFilter.doFilter(AbstractHttpServletFilter.java:66)
51.: org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189)
52.: org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162)
53.: org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:177)
54.: org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97)
55.: org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:541)
56.: org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:135)
57.: org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
58.: org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:687)
59.: org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78)
60.: org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:360)
61.: org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399)
62.: org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
63.: org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:891)
64.: org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1784)
65.: org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
66.: org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
67.: org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
68.: org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
69.: java.base/java.lang.Thread.run(Thread.java:829)

I had a look at the updated sample configuration properties and change the properties starting with pdclient to match:
https://github.com/phax/phoss-smp/blob/master/docker/example-config-dir/application.properties

pdclient.keystore.type = ${smp.keystore.type}
pdclient.keystore.path = ${smp.keystore.path}
pdclient.keystore.key.alias = ${smp.keystore.key.alias}
pdclient.keystore.password = ${smp.keystore.password}
pdclient.keystore.key.password = ${smp.keystore.key.password}

However it's still showing the same error above. Everything else seems to be configured correctly still.

@phax phax self-assigned this Feb 13, 2023
@phax phax added the bug label Feb 13, 2023
@phax
Copy link
Owner

phax commented Feb 13, 2023

@Kristieb Can you please send me the source property file that caused that issue? It's clearly a bug "somewhere" in the variable resolution code :-/

@Kristieb
Copy link
Author

Kristieb commented Feb 13, 2023

@phax pasted the content of the application.properties below. Remove the actual passwords.

# Global flags for initializer
# For production debug should be false and production should be true
global.debug = true
global.production = false
global.debugjaxws = false

## Application Configuration
# Type (JKS or PKCS12)
pdclient.keystore.type = ${smp.keystore.type}
# The path should be absolute for docker configuration
# Put the .p12 file in the same directory as this file (depends on the docker config)
pdclient.keystore.path = ${smp.keystore.path}
pdclient.keystore.key.alias = ${smp.keystore.key.alias}

#DO NOT COMMIT THE REAL PASSWORD!
pdclient.keystore.password = ${smp.keystore.password}
pdclient.keystore.key.password = ${smp.keystore.key.password}

## SMP Configuration
# The backend to be used. Can either be "sql" or "xml". Any other value will result in a startup error
smp.backend = xml

## Keystore data

# Type (JKS or PKCS12)
smp.keystore.type = pkcs12
# The path should be absolute for docker configuration
# Put the .p12 file in the same directory as this file (depends on the docker config)
smp.keystore.path = /config/smp-test-complete.p12
smp.keystore.key.alias = smp-test
#DO NOT COMMIT THE REAL PASSWORD!
smp.keystore.password = password
smp.keystore.key.password = password

# This default truststore handles 2010 and 2018 PKIs
#smp.truststore.type     = jks
#smp.truststore.path     = truststore/complete-truststore.jks
#smp.truststore.password = peppol

# Force all paths (links) to be "/" instead of the context path
# This is helpful if the web application runs in a context like "/smp" but is proxied to a root path
smp.forceroot = true

# If this property is specified, it will overwrite the automatically generated URL
# for all cases where absolute URLs are necessary
# This might be helpful when running on a proxied Tomcat behind a web server
smp.publicurl = http://smp-test.payreq.com/

## Write to SML? true or false
sml.enabled=false
# Is an SML needed in the current scenario - show warnings if true
sml.required=true
# The SMP ID also used in the SML!
sml.smpid=PAU000363

# SML connection timeout milliseconds
#sml.connection.timeout.ms = 5000

# SML request timeout milliseconds
#sml.request.timeout.ms = 20000

# Enable PEPPOL Directory integration?
#todo: change to true in prod
smp.directory.integration.enabled=true
smp.directory.hostname=https://test-directory.peppol.eu

# Use PEPPOL identifiers (with all constraints) or simple, unchecked identifiers?
# Possible values are "peppol", "simple" and "bdxr"
smp.identifiertype=peppol

smp.rest.type=peppol
smp.rest.log.exceptions=true

# Central directory where the data should be stored.
# This should be absolute in production.
webapp.datapath = /home/git/conf

# Should all files of the application checked for readability?
# This should only be set to true when datapath is a relative directory inside a production version
webapp.checkfileaccess = false

# Is it a test version? E.g. a separate header is shown
webapp.testversion = true

# Use slow, but fancy dynamic table on the start page?
webapp.startpage.dynamictable = false

# Participant list is enabled by default
webapp.startpage.participants.none = false

# Don't show content of extensions by default on start page
webapp.startpage.extensions.show = false

# The name of the Directory implementation
webapp.directory.name = PEPPOL Directory

# Don't show content of extensions by default in service groups
webapp.servicegroups.extensions.show = false

phax added a commit to phax/ph-commons that referenced this issue Feb 15, 2023
@phax
Copy link
Owner

phax commented Feb 15, 2023

The problem is most likely a solo "$" in one of your passwords.
That is an error in variable resolution code that will be fixed for the next iteration. The only workaround I can current offer is not to use the $ sign in your passwords.
Sorry for the inconvenience caused :(

phax added a commit to phax/ph-commons that referenced this issue Feb 15, 2023
@phax
Copy link
Owner

phax commented Feb 15, 2023

Will be fixed in the 6.0.6 version

@phax phax closed this as completed Feb 15, 2023
@phax
Copy link
Owner

phax commented Feb 15, 2023

@Kristieb
Copy link
Author

Thank you for resolving the issue the certificate is now being picked up.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants