Page 1 of 1

Could not open files with name containing apostrophe

PostPosted:Thu Jun 15, 2017 4:01 am
by spywong
I am using OpenKM version 6.3.2.

I uploaded a file with name containing apostrophe (e.g. jack's doc2.txt), the file could be uploaded successfully.
However, when I try to open it or delete it, the system gives the following errors.
Code: Select all
OKM-009015(GetGroups): Path not exist
OKM-009015(GetAllGroups): Path not exist
I found the following erros in catalina.out.
Code: Select all
2017-06-15 11:54:22,309 [http-bio-0.0.0.0-8080-exec-9] WARN  com.openkm.servlet.frontend.PropertyGroupServlet- /okm:root/backup/jack's doc2.txt
com.openkm.core.PathNotFoundException: /okm:root/backup/jack's doc2.txt
        at com.openkm.dao.NodeBaseDAO.calculateUuidFromPath(NodeBaseDAO.java:264)
        at com.openkm.dao.NodeBaseDAO.calculateUuidFromPath(NodeBaseDAO.java:232)
        at com.openkm.dao.NodeBaseDAO.getUuidFromPath(NodeBaseDAO.java:122)
        at com.openkm.module.db.DbPropertyGroupModule.getGroups(DbPropertyGroupModule.java:187)
        at com.openkm.api.OKMPropertyGroup.getGroups(OKMPropertyGroup.java:94)
        at com.openkm.servlet.frontend.PropertyGroupServlet.getGroups(PropertyGroupServlet.java:175)
        at sun.reflect.GeneratedMethodAccessor462.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:569)
        at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:208)
        at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:248)
        at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:646)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
        at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:311)
        at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:116)
        at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
        at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
        at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:101)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
        at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:113)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
        at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
        at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:45)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
        at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:182)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
        at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
        at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:173)
        at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
        at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
        at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:313)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)
May I know how to handle this kind of files or is there any way to prohibit client to upload the file with name containing special characters?

Thank you.

Re: Could not open files with name containing apostrophe

PostPosted:Sat Jun 17, 2017 8:55 am
by jllort
Two things to do:
1- Must upgrade names ( are into OKM_NODE_BASE table, can update from Administration > Database query ). I suggest remove ' or change by ' what seems is for what is looking for.
Here some database description what might help you https://docs.openkm.com/kcenter/view/ok ... ption.html
2- Later, upgrade to latest OpenKM version where this kind of issue are solved

Re: Could not open files with name containing apostrophe

PostPosted:Mon Jun 19, 2017 1:54 am
by spywong
jllort wrote: Sat Jun 17, 2017 8:55 am Two things to do:
1- Must upgrade names ( are into OKM_NODE_BASE table, can update from Administration > Database query ). I suggest remove ' or change by ' what seems is for what is looking for.
Here some database description what might help you https://docs.openkm.com/kcenter/view/ok ... ption.html
2- Later, upgrade to latest OpenKM version where this kind of issue are solved
Thanks for your advice.