From: Scott Cantor Date: Thu, 31 May 2007 16:37:25 +0000 (+0000) Subject: CGI parser wasn't being used inside the library. X-Git-Tag: 2.0-alpha1~9 X-Git-Url: http://www.project-moonshot.org/gitweb/?p=shibboleth%2Fcpp-opensaml.git;a=commitdiff_plain;h=a6fbe6c0158138313dc3e18c085f0a52ab45220c CGI parser wasn't being used inside the library. --- diff --git a/saml/Makefile.am b/saml/Makefile.am index 6d59ef0..d371504 100644 --- a/saml/Makefile.am +++ b/saml/Makefile.am @@ -54,7 +54,6 @@ siginclude_HEADERS = \ signature/SignatureProfileValidator.h utilinclude_HEADERS = \ - util/CGIParser.h \ util/CommonDomainCookie.h \ util/SAMLConstants.h @@ -160,7 +159,6 @@ libsaml_la_SOURCES = \ encryption/EncryptedKeyResolver.cpp \ signature/ContentReference.cpp \ signature/SignatureProfileValidator.cpp \ - util/CGIParser.cpp \ util/CommonDomainCookie.cpp \ util/SAMLConstants.cpp diff --git a/saml/util/CGIParser.cpp b/saml/util/CGIParser.cpp deleted file mode 100644 index 666a5b8..0000000 --- a/saml/util/CGIParser.cpp +++ /dev/null @@ -1,124 +0,0 @@ -/* - * Copyright 2001-2007 Internet2 - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * CGIParser.cpp - * - * CGI GET/POST parameter parsing - */ - -#include "internal.h" -#include "util/CGIParser.h" - -#include -#include - -using namespace opensaml; -using namespace xmltooling; -using namespace std; - - -CGIParser::CGIParser(const HTTPRequest& request) -{ - const char* pch=NULL; - if (!strcmp(request.getMethod(),"POST")) - pch=request.getRequestBody(); - else - pch=request.getQueryString(); - size_t cl=pch ? strlen(pch) : 0; - - const URLEncoder* dec = XMLToolingConfig::getConfig().getURLEncoder(); - while (cl && pch) { - char *name; - char *value; - value=fmakeword('&',&cl,&pch); - plustospace(value); - dec->decode(value); - name=makeword(value,'='); - kvp_map.insert(pair(name,value)); - free(name); - } -} - -CGIParser::~CGIParser() -{ - for (multimap::iterator i=kvp_map.begin(); i!=kvp_map.end(); i++) - free(i->second); -} - -pair CGIParser::getParameters(const char* name) const -{ - return kvp_map.equal_range(name); -} - -/* Parsing routines modified from NCSA source. */ -char* CGIParser::makeword(char *line, char stop) -{ - int x = 0,y; - char *word = (char *) malloc(sizeof(char) * (strlen(line) + 1)); - - for(x=0;((line[x]) && (line[x] != stop));x++) - word[x] = line[x]; - - word[x] = '\0'; - if(line[x]) - ++x; - y=0; - - while(line[x]) - line[y++] = line[x++]; - line[y] = '\0'; - return word; -} - -char* CGIParser::fmakeword(char stop, size_t *cl, const char** ppch) -{ - int wsize; - char *word; - int ll; - - wsize = 1024; - ll=0; - word = (char *) malloc(sizeof(char) * (wsize + 1)); - - while(1) - { - word[ll] = *((*ppch)++); - if(ll==wsize-1) - { - word[ll+1] = '\0'; - wsize+=1024; - word = (char *)realloc(word,sizeof(char)*(wsize+1)); - } - --(*cl); - if((word[ll] == stop) || word[ll] == EOF || (!(*cl))) - { - if(word[ll] != stop) - ll++; - word[ll] = '\0'; - return word; - } - ++ll; - } -} - -void CGIParser::plustospace(char *str) -{ - register int x; - - for(x=0;str[x];x++) - if(str[x] == '+') str[x] = ' '; -} diff --git a/saml/util/CGIParser.h b/saml/util/CGIParser.h deleted file mode 100644 index d419a96..0000000 --- a/saml/util/CGIParser.h +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright 2001-2007 Internet2 - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/** - * @file saml/util/CGIParser.h - * - * CGI GET/POST parameter parsing - */ - -#ifndef __saml_cgi_h__ -#define __saml_cgi_h__ - -#include -#include - -namespace opensaml { - - /** - * CGI GET/POST parameter parsing - */ - class SAML_API CGIParser - { - MAKE_NONCOPYABLE(CGIParser); - public: - /** - * Constructor - * - * @param request HTTP request interface - */ - CGIParser(const xmltooling::HTTPRequest& request); - - ~CGIParser(); - - /** Alias for multimap iterator. */ - typedef std::multimap::const_iterator walker; - - /** - * Returns a pair of bounded iterators around the values of a parameter. - * - * @param name name of parameter - * @return a pair of multimap iterators surrounding the matching value(s) - */ - std::pair getParameters(const char* name) const; - - private: - char* fmakeword(char stop, unsigned int *cl, const char** ppch); - char* makeword(char *line, char stop); - void plustospace(char *str); - - std::multimap kvp_map; - }; -}; - -#endif /* __saml_cgi_h__ */