--- a/src/server/webdav/davparser.cpp Sat Oct 31 15:01:07 2015 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,162 +0,0 @@ -/* - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. - * - * Copyright 2013 Olaf Wintermann. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - */ - -#include "davparser.h" - -#include "../util/pool.h" -#include "../util/pblock.h" - -#include "saxhandler.h" - -#include <xercesc/sax2/SAX2XMLReader.hpp> -#include <xercesc/sax2/XMLReaderFactory.hpp> -#include <xercesc/sax2/DefaultHandler.hpp> -#include <xercesc/util/XMLString.hpp> -#include <xercesc/framework/MemBufInputSource.hpp> - -XERCES_CPP_NAMESPACE_USE; - -int xcinit = 0; - -PropfindRequest* dav_parse_propfind( - Session *sn, - Request *rq, - char *xml, - size_t len) -{ - if(!xcinit) { - /* TODO: create webdav module init function */ - XMLPlatformUtils::Initialize(); - xcinit = 1; - } - PropfindRequest *davrq = (PropfindRequest*)pool_calloc( - sn->pool, - 1, - sizeof(PropfindRequest)); - davrq->nsmap = xmlnsmap_create(sn->pool); - xmlnsmap_put(davrq->nsmap, (char*)"DAV:"); - davrq->allprop = 0; - davrq->propname = 0; - davrq->prop = 0; - davrq->properties = NULL; - davrq->forbiddenProps = NULL; - davrq->notFoundProps = NULL; - davrq->mgrdata = NULL; - // create xml parser - SAX2XMLReader* parser = XMLReaderFactory::createXMLReader(); - parser->setFeature(XMLUni::fgSAX2CoreNameSpaces, true); - - PropfindHandler handler(davrq, sn->pool); - parser->setContentHandler(&handler); - parser->setErrorHandler(&handler); - - MemBufInputSource source((XMLByte*)xml, (XMLSize_t)len, "wsid"); - try { - parser->parse(source); - } - catch (const XMLException& e) { - printf("XMLException\n"); - - } - catch (const SAXParseException& e) { - printf("SAXParseException\n"); - - } - catch (...) { - printf("davaparser Exception\n"); - } - - delete parser; - - - return davrq; -} - -void dav_free_propfind(PropfindRequest *rq) { - ucx_list_free(rq->forbiddenProps); - ucx_list_free(rq->notFoundProps); - //ucx_dlist_free(rq->properties); // uses pool - sbuf_free(rq->out); -} - -ProppatchRequest* dav_parse_proppatch( - Session *sn, - Request *rq, - char *xml, - size_t len) -{ - if(!xcinit) { - /* TODO: create webdav module init function */ - XMLPlatformUtils::Initialize(); - xcinit = 1; - } - ProppatchRequest *davrq = (ProppatchRequest*)pool_calloc( - sn->pool, - 1, - sizeof(PropfindRequest)); - davrq->nsmap = xmlnsmap_create(sn->pool); - xmlnsmap_put(davrq->nsmap, (char*)"DAV:"); - - - // create xml parser - SAX2XMLReader* parser = XMLReaderFactory::createXMLReader(); - parser->setFeature(XMLUni::fgSAX2CoreNameSpaces, true); - - ProppatchHandler handler(davrq, sn->pool); - parser->setContentHandler(&handler); - parser->setErrorHandler(&handler); - - MemBufInputSource source((XMLByte*)xml, (XMLSize_t)len, "wsid"); - try { - parser->parse(source); - } - catch (const XMLException& e) { - printf("XMLException\n"); - - } - catch (const SAXParseException& e) { - printf("SAXParseException\n"); - - } - catch (...) { - printf("davaparser Exception\n"); - } - - delete parser; - - - return davrq; -} - -void dav_free_proppatch(ProppatchRequest *rq) { - ucx_list_free(rq->removeProps); - ucx_list_free(rq->setProps); - xmlnsmap_free(rq->nsmap); - ucx_map_free(rq->propstat->map); - ucx_list_free(rq->propstat->okprop); -}