Dear Zimbra,
Zimra full version info: Release 6.0.8_GA_2661.RHEL5_64_20100824100342 CentOS5_64 NETWORK edition.
We have client application that adds appointments to Zimbra calendar, and tries to keep in sync. This is done with "helper" user account, not Zimbra admin.
This works fine, except when user deletes appointment on their calendar. When that happens, the client application does not know it was deleted, and gets "service.PERM_DENIED" when trying to find the appointment by its ID.
We cannot assume permission denied means appointment does not exist, as permission denied can happen for other reasons. Please let me know of solution, or workaround, for this, or if this is not issue in Zimra 7.
Thank you,
Ray
Login Request with helper user account, not Zimbra administration:
Login Response:Code:<?xml version="1.0" encoding="UTF-8"?> <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:zimbra="urn:zimbra" xmlns:zaccount="urn:zimbraAccount" xmlns:zmail="urn:zimbraMail" xmlns:zadmin="urn:zimbraAdmin"> <soap:Header> <context xmlns="urn:zimbraSoap"> <nonotify/> <noqualify/> </context> </soap:Header> <soap:Body> <zaccount:AuthRequest> <account by="name">advisor-admin</account> <password>...</password> </zaccount:AuthRequest> </soap:Body> </soap:Envelope>
Create Appointment Request:Code:<?xml version="1.0" encoding="UTF-8"?> <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"> <soap:Header> <context xmlns="urn:zimbra"> <change token="6849"/> </context> </soap:Header> <soap:Body> <AuthResponse xmlns="urn:zimbraAccount"> <authToken>0_52cb...</authToken> <lifetime>119999</lifetime> <skin>beach</skin> </AuthResponse> </soap:Body> </soap:Envelope>
Create Appointment Response:Code:<?xml version="1.0" encoding="UTF-8"?> <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:zimbra="urn:zimbra" xmlns:zaccount="urn:zimbraAccount" xmlns:zmail="urn:zimbraMail" xmlns:zadmin="urn:zimbraAdmin"> <soap:Header> <zimbra:context xmlns="urn:zimbraSoap"> <zaccount:authToken>0_52cb...</zaccount:authToken> <nonotify/> <noqualify/> </zimbra:context> </soap:Header> <soap:Body> <zmail:CreateAppointmentRequest> <m l="262"> <su>SOAP Appointment</su> <inv> <comp name="Test A 04-05 15 min" status="CONF" fb="B" fba="B" url="https://www.egr.msu.edu/test/adcalendar/"> <s d="20110405T140000Z"/> <e d="20110405T141500Z"/> <desc>Notes that show when appointment is opened.</desc> </comp> </inv> </m> </zmail:CreateAppointmentRequest> </soap:Body> </soap:Envelope>
Get Appointment While Alive Request:Code:<?xml version="1.0" encoding="UTF-8"?> <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"> <soap:Header> <context xmlns="urn:zimbra"> <change token="6849"/> </context> </soap:Header> <soap:Body> <CreateAppointmentResponse xmlns="urn:zimbraMail" apptId="468" calItemId="468" invId="468-467"/> </soap:Body> </soap:Envelope>
Get Appointment While Alive Response:Code:<?xml version="1.0" encoding="UTF-8"?> <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:zimbra="urn:zimbra" xmlns:zaccount="urn:zimbraAccount" xmlns:zmail="urn:zimbraMail" xmlns:zadmin="urn:zimbraAdmin"> <soap:Header> <zimbra:context xmlns="urn:zimbraSoap"> <zaccount:authToken>0_52cb...</zaccount:authToken> <nonotify/> <noqualify/> </zimbra:context> </soap:Header> <soap:Body> <zmail:GetAppointmentRequest id="e583b35d-c01d-49cd-85eb-d98380d7ca48:468-467"/> </soap:Body> </soap:Envelope>
Get Appointment after deleted Request (this is same as prior request):Code:<?xml version="1.0" encoding="UTF-8"?> <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"> <soap:Header> <context xmlns="urn:zimbra"> <change token="6849"/> </context> </soap:Header> <soap:Body> <GetAppointmentResponse xmlns="urn:zimbraMail"> <appt d="1303137671000" id="468" l="10" rev="8159" s="0" uid="a7e9c6b1-c6bd-4bdf-ae08-ea4bd1983302"> <inv compNum="0" id="467" seq="0" type="appt"> <comp apptId="468" calItemId="468" class="PUB" compNum="0" d="1303137671000" fb="B" fba="B" isOrg="1" loc="" method="PUBLISH" name="Test A 04-05 15 min" noBlob="1" rsvp="0" seq="0" status="CONF" transp="O" uid="a7e9c6b1-c6bd-4bdf-ae08-ea4bd1983302" url="https://www.egr.msu.edu/test/adcalendar/" x_uid="a7e9c6b1-c6bd-4bdf-ae08-ea4bd1983302"> <desc>Notes that show when appointment is opened.</desc> <s d="20110405T140000Z"/> <e d="20110405T141500Z"/> </comp> </inv> <replies/> </appt> </GetAppointmentResponse> </soap:Body> </soap:Envelope>
Get Appointment after deleted Response:Code:<?xml version="1.0" encoding="UTF-8"?> <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:zimbra="urn:zimbra" xmlns:zaccount="urn:zimbraAccount" xmlns:zmail="urn:zimbraMail" xmlns:zadmin="urn:zimbraAdmin"> <soap:Header> <zimbra:context xmlns="urn:zimbraSoap"> <zaccount:authToken>0_52cb...</zaccount:authToken> <nonotify/> <noqualify/> </zimbra:context> </soap:Header> <soap:Body> <zmail:GetAppointmentRequest id="e583b35d-c01d-49cd-85eb-d98380d7ca48:468-467"/> </soap:Body> </soap:Envelope>
Code:<?xml version="1.0" encoding="UTF-8"?> <soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope"> <soap:Header> <context xmlns="urn:zimbra"> <change token="6849"/> </context> </soap:Header> <soap:Body> <soap:Fault> <soap:Code> <soap:Value>soap:Sender</soap:Value> </soap:Code> <soap:Reason> <soap:Text>permission denied: you do not have sufficient permissions</soap:Text> </soap:Reason> <soap:Detail> <Error xmlns="urn:zimbra"> <Code>service.PERM_DENIED</Code> <Trace>com.zimbra.common.service.ServiceException: permission denied: you do not have sufficient permissions ExceptionId:btpool0-12://carmen.egr.msu.edu/service/soap:1303137671960:86b812c87f8f0cc9 Code:service.PERM_DENIED at com.zimbra.common.service.ServiceException.PERM_DENIED(ServiceException.java:278) at com.zimbra.cs.mailbox.Mailbox.checkAccess(Mailbox.java:1911) at com.zimbra.cs.mailbox.Mailbox.getItemById(Mailbox.java:1923) at com.zimbra.cs.mailbox.Mailbox.getCalendarItemById(Mailbox.java:3139) at com.zimbra.cs.service.mail.GetCalendarItem.handle(GetCalendarItem.java:64) at com.zimbra.soap.SoapEngine.dispatchRequest(SoapEngine.java:420) at com.zimbra.soap.DocumentHandler.proxyRequest(DocumentHandler.java:491) at com.zimbra.cs.service.mail.MailDocumentHandler.proxyRequest(MailDocumentHandler.java:142) at com.zimbra.cs.service.mail.MailDocumentHandler.proxyRequest(MailDocumentHandler.java:124) at com.zimbra.cs.service.mail.MailDocumentHandler.proxyIfNecessary(MailDocumentHandler.java:79) at com.zimbra.soap.SoapEngine.dispatchRequest(SoapEngine.java:411) at com.zimbra.soap.SoapEngine.dispatch(SoapEngine.java:274) at com.zimbra.soap.SoapEngine.dispatch(SoapEngine.java:158) at com.zimbra.soap.SoapServlet.doWork(SoapServlet.java:291) at com.zimbra.soap.SoapServlet.doPost(SoapServlet.java:212) at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) at com.zimbra.cs.servlet.ZimbraServlet.service(ZimbraServlet.java:181) at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166) at com.zimbra.cs.servlet.SetHeaderFilter.doFilter(SetHeaderFilter.java:79) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) at org.mortbay.servlet.UserAgentFilter.doFilter(UserAgentFilter.java:81) at org.mortbay.servlet.GzipFilter.doFilter(GzipFilter.java:155) at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388) at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418) at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230) at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) at org.mortbay.jetty.handler.rewrite.RewriteHandler.handle(RewriteHandler.java:230) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) at org.mortbay.jetty.handler.DebugHandler.handle(DebugHandler.java:77) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) at org.mortbay.jetty.Server.handle(Server.java:326) at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:543) at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:939) at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:755) at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218) at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:405) at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:413) at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:451) </Trace> </Error> </soap:Detail> </soap:Fault> </soap:Body> </soap:Envelope>


LinkBack URL
About LinkBacks

