X-Git-Url: https://code.citadel.org/?p=citadel.git;a=blobdiff_plain;f=webcit%2Fdav_main.c;h=7586dbc97e8f3f690bec2d924d0e4cc4c48a102c;hp=31cbfafffe1399af58ecc6876a1404b7515c2374;hb=c6aec42f213ec284e34648f3d69bcf927dccddb1;hpb=7beff529e758f6f0706e733901824c63bcac6d19 diff --git a/webcit/dav_main.c b/webcit/dav_main.c index 31cbfafff..7586dbc97 100644 --- a/webcit/dav_main.c +++ b/webcit/dav_main.c @@ -1,3 +1,4 @@ + /* * Entry point for GroupDAV functions * @@ -30,11 +31,8 @@ HashList *DavNamespaces = NULL; * */ void dav_common_headers(void) { - hprintf( - "Server: %s / %s\r\n" - "Connection: close\r\n", - PACKAGE_STRING, ChrPtr(WC->serv_info->serv_software) - ); + hprintf("Server: %s / %s\r\n" "Connection: close\r\n", PACKAGE_STRING, ChrPtr(WC->serv_info->serv_software) + ); } @@ -48,8 +46,8 @@ void euid_escapize(char *target, const char *source) { strcpy(target, ""); len = strlen(source); - for (i=0; ilogged_in ); + syslog(LOG_DEBUG, "dav_main() called, logged_in=%d", WCC->logged_in); StrBufUnescape(WCC->Hdr->HR.ReqLine, 0); StrBufStripSlashes(WCC->Hdr->HR.ReqLine, 0); @@ -114,8 +111,8 @@ void dav_main(void) StrBufTrim(WCC->Hdr->HR.dav_ifmatch); if (ChrPtr(WCC->Hdr->HR.dav_ifmatch)[0] == '\"') { StrBufCutLeft(WCC->Hdr->HR.dav_ifmatch, 1); - len --; - for (i=0; iHdr->HR.dav_ifmatch)[i] == '\"') { StrBufCutAt(WCC->Hdr->HR.dav_ifmatch, i, NULL); len = StrLength(WCC->Hdr->HR.dav_ifmatch); @@ -127,61 +124,59 @@ void dav_main(void) } } - switch (WCC->Hdr->HR.eReqType) - { - /* - * The OPTIONS method is not required by GroupDAV but it will be - * needed for future implementations of other DAV-based protocols. - */ + switch (WCC->Hdr->HR.eReqType) { + /* + * The OPTIONS method is not required by GroupDAV but it will be + * needed for future implementations of other DAV-based protocols. + */ case eOPTIONS: dav_options(); break; - /* - * The PROPFIND method is basically used to list all objects in a - * room, or to list all relevant rooms on the server. - */ + /* + * The PROPFIND method is basically used to list all objects in a + * room, or to list all relevant rooms on the server. + */ case ePROPFIND: dav_propfind(); break; - /* - * The GET method is used for fetching individual items. - */ + /* + * The GET method is used for fetching individual items. + */ case eGET: dav_get(); break; - - /* - * The PUT method is used to add or modify items. - */ + + /* + * The PUT method is used to add or modify items. + */ case ePUT: dav_put(); break; - - /* - * The DELETE method kills, maims, and destroys. - */ + + /* + * The DELETE method kills, maims, and destroys. + */ case eDELETE: dav_delete(); break; - /* - * The REPORT method tells us that Mike Shaver is a self-righteous asshole. - */ + /* + * The REPORT method tells us that Mike Shaver is a self-righteous asshole. + */ case eREPORT: dav_report(); break; default: - /* - * Couldn't find what we were looking for. Die in a car fire. - */ + /* + * Couldn't find what we were looking for. Die in a car fire. + */ hprintf("HTTP/1.1 501 Method not implemented\r\n"); dav_common_headers(); hprintf("Content-Type: text/plain\r\n"); - wc_printf("GroupDAV method \"%s\" is not implemented.\r\n", - ReqStrs[WCC->Hdr->HR.eReqType]); + wc_printf("GroupDAV method \"%s\" is not implemented.\r\n", ReqStrs[WCC->Hdr->HR.eReqType]); end_burst(); } } @@ -189,33 +184,30 @@ void dav_main(void) /* * Output our host prefix for globally absolute URL's. - */ + */ void dav_identify_host(void) { wc_printf("%s", ChrPtr(site_prefix)); } -void tmplput_dav_HOSTNAME(StrBuf *Target, WCTemplputParams *TP) -{ +void tmplput_dav_HOSTNAME(StrBuf * Target, WCTemplputParams * TP) { StrBufAppendPrintf(Target, "%s", ChrPtr(site_prefix)); } /* * Output our host prefix for globally absolute URL's. - */ + */ void dav_identify_hosthdr(void) { hprintf("%s", ChrPtr(site_prefix)); } -void Header_HandleIfMatch(StrBuf *Line, ParsedHttpHdrs *hdr) -{ +void Header_HandleIfMatch(StrBuf * Line, ParsedHttpHdrs * hdr) { hdr->HR.dav_ifmatch = Line; } - -void Header_HandleDepth(StrBuf *Line, ParsedHttpHdrs *hdr) -{ + +void Header_HandleDepth(StrBuf * Line, ParsedHttpHdrs * hdr) { if (!strcasecmp(ChrPtr(Line), "infinity")) { hdr->HR.dav_depth = 32767; } @@ -228,34 +220,27 @@ void Header_HandleDepth(StrBuf *Line, ParsedHttpHdrs *hdr) } -int Conditional_DAV_DEPTH(StrBuf *Target, WCTemplputParams *TP) -{ +int Conditional_DAV_DEPTH(StrBuf * Target, WCTemplputParams * TP) { return WC->Hdr->HR.dav_depth == GetTemplateTokenNumber(Target, TP, 2, 0); } -void RegisterDAVNamespace(const char * UrlString, - long UrlSLen, - const char *DisplayName, - long dslen, - WebcitHandlerFunc F, - WebcitRESTDispatchID RID, - long Flags) -{ +void RegisterDAVNamespace(const char *UrlString, + long UrlSLen, + const char *DisplayName, long dslen, WebcitHandlerFunc F, WebcitRESTDispatchID RID, long Flags) { void *vHandler; /* first put it in... */ - WebcitAddUrlHandler(UrlString, UrlSLen, DisplayName, dslen, F, Flags|PARSE_REST_URL); + WebcitAddUrlHandler(UrlString, UrlSLen, DisplayName, dslen, F, Flags | PARSE_REST_URL); /* get it out again... */ GetHash(HandlerHash, UrlString, UrlSLen, &vHandler); - ((WebcitHandler*)vHandler)->RID = RID; + ((WebcitHandler *) vHandler)->RID = RID; /* and keep a copy of it, so we can compare it later */ Put(DavNamespaces, UrlString, UrlSLen, vHandler, reference_free_handler); } -int Conditional_DAV_NS(StrBuf *Target, WCTemplputParams *TP) -{ +int Conditional_DAV_NS(StrBuf * Target, WCTemplputParams * TP) { wcsession *WCC = WC; void *vHandler; const char *NS; @@ -267,8 +252,7 @@ int Conditional_DAV_NS(StrBuf *Target, WCTemplputParams *TP) } -int Conditional_DAV_NSCURRENT(StrBuf *Target, WCTemplputParams *TP) -{ +int Conditional_DAV_NSCURRENT(StrBuf * Target, WCTemplputParams * TP) { wcsession *WCC = WC; void *vHandler; @@ -277,13 +261,12 @@ int Conditional_DAV_NSCURRENT(StrBuf *Target, WCTemplputParams *TP) } -void tmplput_DAV_NAMESPACE(StrBuf *Target, WCTemplputParams *TP) -{ +void tmplput_DAV_NAMESPACE(StrBuf * Target, WCTemplputParams * TP) { wcsession *WCC = WC; if (TP->Filter.ContextType == CTX_DAVNS) { WebcitHandler *H; - H = (WebcitHandler*) CTX(CTX_DAVNS); + H = (WebcitHandler *) CTX(CTX_DAVNS); if (H != NULL) StrBufAppendTemplate(Target, TP, H->Name, 0); } @@ -293,15 +276,14 @@ void tmplput_DAV_NAMESPACE(StrBuf *Target, WCTemplputParams *TP) } -int GroupdavDispatchREST(RESTDispatchID WhichAction, int IgnoreFloor) -{ +int GroupdavDispatchREST(RESTDispatchID WhichAction, int IgnoreFloor) { wcsession *WCC = WC; void *vDir; - - switch(WhichAction){ + + switch (WhichAction) { case ExistsID: GetHash(WCC->Directory, IKEY(WCC->ThisRoom->nRoomNameParts + 1), &vDir); - return locate_message_by_uid(ChrPtr((StrBuf*)vDir)) != -1; + return locate_message_by_uid(ChrPtr((StrBuf *) vDir)) != -1; /* TODO: remember euid */ case PutID: case DeleteID: @@ -313,45 +295,32 @@ int GroupdavDispatchREST(RESTDispatchID WhichAction, int IgnoreFloor) } -void -ServerStartModule_DAV -(void) -{ +void ServerStartModule_DAV(void) { DavNamespaces = NewHash(1, NULL); } -void -ServerShutdownModule_DAV -(void) -{ +void ServerShutdownModule_DAV(void) { DeleteHash(&DavNamespaces); } -void -InitModule_GROUPDAV -(void) -{ +void InitModule_GROUPDAV(void) { RegisterCTX(CTX_DAVNS); - RegisterDAVNamespace(HKEY("groupdav"), HKEY("GroupDAV"), - dav_main, GroupdavDispatchREST, - XHTTP_COMMANDS|COOKIEUNNEEDED|FORCE_SESSIONCLOSE - ); + RegisterDAVNamespace(HKEY("groupdav"), HKEY("GroupDAV"), + dav_main, GroupdavDispatchREST, XHTTP_COMMANDS | COOKIEUNNEEDED | FORCE_SESSIONCLOSE); RegisterNamespace("DAV:HOSTNAME", 0, 0, tmplput_dav_HOSTNAME, NULL, CTX_NONE); - RegisterConditional("COND:DAV:NS", 0, Conditional_DAV_NS, CTX_NONE); + RegisterConditional("COND:DAV:NS", 0, Conditional_DAV_NS, CTX_NONE); - RegisterIterator("DAV:NS", 0, DavNamespaces, NULL, - NULL, NULL, CTX_DAVNS, CTX_NONE, IT_NOFLAG - ); + RegisterIterator("DAV:NS", 0, DavNamespaces, NULL, NULL, NULL, CTX_DAVNS, CTX_NONE, IT_NOFLAG); - RegisterConditional("COND:DAV:NSCURRENT", 0, Conditional_DAV_NSCURRENT, CTX_DAVNS); + RegisterConditional("COND:DAV:NSCURRENT", 0, Conditional_DAV_NSCURRENT, CTX_DAVNS); RegisterNamespace("DAV:NAMESPACE", 0, 1, tmplput_DAV_NAMESPACE, NULL, CTX_NONE); RegisterHeaderHandler(HKEY("IF-MATCH"), Header_HandleIfMatch); RegisterHeaderHandler(HKEY("DEPTH"), Header_HandleDepth); - RegisterConditional("COND:DAV:DEPTH", 1, Conditional_DAV_DEPTH, CTX_NONE); + RegisterConditional("COND:DAV:DEPTH", 1, Conditional_DAV_DEPTH, CTX_NONE); }