コード例 #1
0
void USOAPFault::encode(UString& response)
{
   U_TRACE(0, "USOAPFault::encode(%.*S)", U_STRING_TO_TRACE(response))

   UString code = getFaultCode();

   response.setBuffer(1000U + code.size() + faultReason.size() + detail.size());

   response.snprintf("<?xml version='1.0' ?>"
                     "<soap:Envelope xmlns:soap=\"http://www.w3.org/2003/05/soap-envelope\">"
                        "<soap:Body>"
                           "<soap:Fault>"
                              "<soap:Code>"
                                 "<soap:Value>soap:%.*s</soap:Value>"
                              "</soap:Code>"
                              "<soap:Reason>"
                                 "<soap:Text xml:lang=\"en-US\">%.*s</soap:Text>"
                              "</soap:Reason>"
                              "<soap:Detail>%.*s</soap:Detail>"
                           "</soap:Fault>"
                        "</soap:Body>"
                     "</soap:Envelope>",
                     U_STRING_TO_TRACE(code),
                     U_STRING_TO_TRACE(faultReason),
                     U_STRING_TO_TRACE(detail));
}
コード例 #2
0
ファイル: OtpAuthToken.cpp プロジェクト: fast01/ULib
void OtpAuthToken::add(const UString& name_, const UString& value_)
{
   U_TRACE(5, "OtpAuthToken::add(%.*S,%.*S)", U_STRING_TO_TRACE(name_), U_STRING_TO_TRACE(value_))

   hp.push_back(name_);
   hp.push_back(value_);
}
コード例 #3
0
ファイル: test_rdb.cpp プロジェクト: fast01/ULib
static int print(UStringRep* key, UStringRep* data)
{
   U_TRACE(5, "::print(%.*S,%.*S)", U_STRING_TO_TRACE(*key), U_STRING_TO_TRACE(*data))

   cout << UString(key) << "->" << UString(data) << endl;

   return 1;
}
コード例 #4
0
UString USOAPParser::processMessage(const UString& msg, URPCObject& object, bool& bContainsFault)
{
   U_TRACE(0, "USOAPParser::processMessage(%.*S,%p,%p,%b)", U_STRING_TO_TRACE(msg), &object, &bContainsFault)

   U_INTERNAL_ASSERT(msg)

   UString retval;

   clearData();

   if (U_STRING_FIND(msg, 0, "http://schemas.xmlsoap.org/soap/envelope/") != U_NOT_FOUND)
      {
      zero();

      bContainsFault = true;

      (void) retval.assign(U_CONSTANT_TO_PARAM("<?xml version=\"1.0\" ?>"
                                               "<env:Envelope xmlns:env=\"http://schemas.xmlsoap.org/soap/envelope/\">"
                                                  "<env:Header>"
                                                   "<env:Upgrade>"
                                                      "<env:SupportedEnvelope qname=\"ns1:Envelope\" xmlns:ns1=\"http://www.w3.org/2003/05/soap-envelope\"/>"
                                                   "</env:Upgrade>"
                                                  "</env:Header>"
                                                  "<env:Body>"
                                                   "<env:Fault>"
                                                      "<faultcode>env:VersionMismatch</faultcode>"
                                                      "<faultstring>Version Mismatch</faultstring>"
                                                   "</env:Fault>"
                                                  "</env:Body>"
                                               "</env:Envelope>"));
      }
   else if (parse(msg))
      {
      U_ASSERT(envelope.methodName != *UString::str_fault)

      retval = object.processMessage(envelope, bContainsFault);
      }
   else
      {
      int line = ::XML_GetCurrentLineNumber(m_parser),
          coln = ::XML_GetCurrentColumnNumber(m_parser);

      object.setFailed();

      URPCMethod::pFault->getFaultReason() = UXMLParser::getErrorMessage();

      U_INTERNAL_DUMP("UXMLParser: %.*S (%d,%d) ", U_STRING_TO_TRACE(URPCMethod::pFault->getFaultReason()), line, coln)

      URPCMethod::pFault->setDetail("The fault occurred near position (line: %d col: %d) within the message", line, coln);

      bContainsFault = true;
      retval         = URPCMethod::encoder->encodeFault(URPCMethod::pFault);
      }

   U_RETURN_STRING(retval);
}
コード例 #5
0
HttpOtpPostLogin::HttpOtpPostLogin(const char* buf, unsigned len, const UString& user_field,
                                   const UString& pin_field, const UString& token_field, const UString& passwd_field,
                                   const UString& cf_field, HttpHeader& header)
{
   U_TRACE(5, "HttpOtpPostLogin::HttpOtpPostLogin(%.*S,%u,%.*S,%.*S,%.*S,%.*S,%p)", len, buf, len,
                     U_STRING_TO_TRACE(user_field), U_STRING_TO_TRACE(pin_field), U_STRING_TO_TRACE(token_field),
                     U_STRING_TO_TRACE(passwd_field), U_STRING_TO_TRACE(cf_field), &header)

   HttpField* f = header.find(U_STRING_FROM_CONSTANT("Content-Type"));

   U_INTERNAL_ASSERT_POINTER(f)

   U_INTERNAL_ASSERT(f->value.find("application/x-www-form-urlencoded") != unsigned(-1))

   buffer.assign(buf, len);

   (void) U_VEC_SPLIT(vec, buffer, "=&"); // "user=stefano+casazza&pin=12345&token=autorizzativo"

   unsigned i = 0;

   while (i < vec.size())
      {
      if (vec[i] == user_field)
         {
         U_STR_RESERVE(user, 64);

         Url::decode(vec[i+1], user);
         }
      else if (vec[i] == pin_field)
         {
         U_STR_RESERVE(pin, 64);

         Url::decode(vec[i+1], pin);
         }
      else if (vec[i] == token_field)
         {
         U_STR_RESERVE(token, 64);

         Url::decode(vec[i+1], token);
         }
      else if (vec[i] == passwd_field)
         {
         U_STR_RESERVE(passwd, 64);

         Url::decode(vec[i+1], passwd);
         }
      else if (vec[i] == cf_field)
         {
         U_STR_RESERVE(cf, 64);

         Url::decode(vec[i+1], cf);
         }

      i += 2;
      }
}
コード例 #6
0
ファイル: HttpLocation.cpp プロジェクト: alepharchives/ULib
void HttpLocation::stringify(UString& field)
{
   U_TRACE(5, "HttpLocation::stringify(%.*S)", U_STRING_TO_TRACE(field))

   field += name;
   field.append(U_CONSTANT_TO_PARAM(": "));
   field += url;
   field.append(U_CONSTANT_TO_PARAM("\r\n"));

   U_INTERNAL_DUMP("field = %.*S", U_STRING_TO_TRACE(field))
}
コード例 #7
0
ファイル: PEC_report_virus.cpp プロジェクト: prejr-dev/ULib
    static bool reportEntry(const UString& elem)
    {
        U_TRACE(5, "Application::reportEntry(%.*S)", U_STRING_TO_TRACE(elem))

        UString tmp(U_CAPACITY);

        UXMLEscape::encode(elem, tmp);

        (void) sprintf(buffer, form, U_STRING_TO_TRACE(tmp));

        std::cout << buffer;

        U_RETURN(false);
    }
コード例 #8
0
void HttpRequestHeader::stringify(UString& field)
{
   U_TRACE(5, "HttpRequestHeader::stringify(%.*S)", U_STRING_TO_TRACE(field))

   field += method;
   field.append(U_CONSTANT_TO_PARAM(" "));
   field += url;
   field.append(U_CONSTANT_TO_PARAM(" "));
   field += httpver;
   field.append(U_CONSTANT_TO_PARAM("\r\n"));

   HttpHeader::stringify(field);

   U_INTERNAL_DUMP("field = %.*S", U_STRING_TO_TRACE(field))
}
コード例 #9
0
void HttpResponseHeader::stringify(UString& field)
{
   U_TRACE(5, "HttpResponseHeader::stringify(%.*S)", U_STRING_TO_TRACE(field))

   field += httpver;
   field.append(U_CONSTANT_TO_PARAM(" "));
   field += status;
   field.append(U_CONSTANT_TO_PARAM(" "));
   field += reason;
   field.append(U_CONSTANT_TO_PARAM("\r\n"));

   HttpHeader::stringify(field);

   U_INTERNAL_DUMP("field = %.*S", U_STRING_TO_TRACE(field))
}
コード例 #10
0
ファイル: production.cpp プロジェクト: fast01/ULib
   void run(int argc, char* argv[], char* env[])
      {
      U_TRACE(5, "Application::run(%d,%p,%p)", argc, argv, env)

      Action::run(argc, argv, env);

      // read stdin and scanf

      Action::processInputData(5);

      // --------------------------------------------------------------------------------------------------------------
      // configuration parameters
      // --------------------------------------------------------------------------------------------------------------
      // ARCHIVE_TEMPLATE                    printf form to output request of archive
      // ELECTRONIC_ARCHIVATION_SERVICE_URL  url to do request of archive
      // --------------------------------------------------------------------------------------------------------------

      UString arch_tmpl = UFile::contentOf(cfg[U_STRING_FROM_CONSTANT("ARCHIVE_TEMPLATE")]),
              url       =                  cfg[U_STRING_FROM_CONSTANT("ELECTRONIC_ARCHIVATION_SERVICE_URL")];

      UString body(arch_tmpl.size() + request_decoded.size() + (u__strlen(uid, __PRETTY_FUNCTION__) * 3) + 100U);

      body.snprintf(arch_tmpl.data(), uid, uid, uid, U_STRING_TO_TRACE(request_decoded));

      bool ok = Action::sendHttpPostRequest(url, body, "multipart/form-data; boundary=4MYWPDUi9kH5-ipE_f6CiZXFFn4SaQQOj", "OK") && Action::sendEmail();

      Action::writeToSTDOUT(ok, true);
      }
コード例 #11
0
bool USOAPParser::parse(const UString& msg)
{
   U_TRACE(0, "USOAPParser::parse(%.*S)", U_STRING_TO_TRACE(msg))

   initParser();

   if (UXMLParser::parse(msg))
      {
      // If we succeeded, get the name of the method being called. This of course assumes only
      // one method in the body, and that there are no objects outside of the serialization root.
      // This method will need an override if this assumption is invalid

      U_INTERNAL_ASSERT_POINTER(body)

      method              = body->childAt(0);
      envelope.methodName = method->elem()->getAccessorName();

      // load the parameters for the method to execute

      UString param;

      for (uint32_t i = 0, num_arguments = method->numChild(); i < num_arguments; ++i)
         {
         param = method->childAt(i)->elem()->getValue();

         // check if parameter optional

         if (param) envelope.arg->push_back(param);
         }

      U_RETURN(true);
      }

   U_RETURN(false);
}
コード例 #12
0
ファイル: update.cpp プロジェクト: fast01/ULib
   static void buildFilenameListFrom(UVector<UString>& vec, const UString& arg)
      {
      U_TRACE(5, "Application::buildFilenameListFrom(%p,%.*S)", &vec, U_STRING_TO_TRACE(arg))

      uint32_t pos;
      UTokenizer t(arg);
      UString dir, filename, filter;

      while (t.next(filename, ','))
         {
         if (filename.find_first_of("?*", 0, 2) == U_NOT_FOUND) vec.push(filename);
         else
            {
            pos = filename.find_last_of('/');

            U_INTERNAL_DUMP("pos = %u", pos)

            if (pos == U_NOT_FOUND)
               {
               UDirWalk dirwalk(0, U_STRING_TO_PARAM(filename));

               (void) dirwalk.walk(vec);
               }
            else
               {
               dir    = filename.substr(0U, pos);
               filter = filename.substr(pos + 1);

               UDirWalk dirwalk(dir, U_STRING_TO_PARAM(filter));

               (void) dirwalk.walk(vec);
               }
            }
         }
      }
コード例 #13
0
ファイル: pkcs10.cpp プロジェクト: wladitavar/ULib
X509_REQ* UPKCS10::readPKCS10(const UString& x, const char* format)
{
   U_TRACE(1, "UPKCS10::readPKCS10(%.*S,%S)", U_STRING_TO_TRACE(x), format)

   BIO* in;
   UString tmp        = x;
   X509_REQ* _request = 0;

   if (format == 0) format = (x.isBinary() ? "DER" : "PEM");

   if (U_STREQ(format, "PEM") &&
       U_STRNCMP(x.data(), "-----BEGIN CERTIFICATE REQUEST-----"))
      {
      unsigned length = x.size();

      UString buffer(length);

      if (UBase64::decode(x.data(), length, buffer) == false) goto next;

      tmp    = buffer;
      format = "DER";
      }

next:
   in = (BIO*) U_SYSCALL(BIO_new_mem_buf, "%p,%d", U_STRING_TO_PARAM(tmp));

   _request = (X509_REQ*) (U_STREQ(format, "PEM") ? U_SYSCALL(PEM_read_bio_X509_REQ, "%p,%p,%p,%p", in, 0, 0, 0)
                                                  : U_SYSCALL(d2i_X509_REQ_bio,      "%p,%p",       in, 0));

   (void) U_SYSCALL(BIO_free, "%p", in);

   U_RETURN_POINTER(_request, X509_REQ);
}
コード例 #14
0
bool UDirWalk::setDirectory(const UString& dir, const char* _filter, uint32_t _filter_len)
{
   U_TRACE(0, "UDirWalk::setDirectory(%.*S,%.*S,%u)", U_STRING_TO_TRACE(dir), _filter_len, _filter, _filter_len)

   pthis->pathlen = dir.size();

   const char* pdir = u_getPathRelativ(dir.data(), &(pthis->pathlen));

   U_INTERNAL_ASSERT_MAJOR(pthis->pathlen, 0)

   U_MEMCPY(pthis->pathname, pdir, pthis->pathlen);

   pthis->pathname[pthis->pathlen] = '\0';

   if (UFile::access(pthis->pathname) == false)
      {
      pthis->pathlen = 0;

      U_RETURN(false);
      }

   setFilter(_filter, _filter_len);

   U_RETURN(true);
}
コード例 #15
0
UXMLAttribute* UXMLElement::getAttribute(const UString& attributeName)
{
   U_TRACE(0, "UXMLElement::getAttribute(%.*S)", U_STRING_TO_TRACE(attributeName))

   uint32_t n = numAttributes(); 

   if (n)
      {
      UXMLAttribute* entry;
      UString szAccessor, szNamespace;

      splitNamespaceAndName(attributeName, szNamespace, szAccessor);

      for (uint32_t i = 0; i < n; ++i)
         {
         entry = attributeAt(i);

         if ((entry->getAccessor() == attributeName) &&
             (szNamespace.empty() || (entry->getNamespaceName() == szNamespace)))
            {
            // We found the attribute

            U_RETURN_POINTER(entry, UXMLAttribute);
            }
         }
      }

   U_RETURN_POINTER(0, UXMLAttribute);
}
コード例 #16
0
ファイル: transform.cpp プロジェクト: stefanocasazza/ULib
bool UTranformInclC14N::execute(UString& data)
{
   U_TRACE(0, "UTranformInclC14N::execute(%.*S)", U_STRING_TO_TRACE(data))

   data = UXML2Document::xmlC14N(data);

   U_RETURN(true);
}
コード例 #17
0
ファイル: hexdump.cpp プロジェクト: alepharchives/ULib
void UHexDump::encode(const unsigned char* s, uint32_t n, UString& buffer)
{
   U_TRACE(0, "UHexDump::encode(%.*S,%u,%.*S)", n, s, n, U_STRING_TO_TRACE(buffer))

   uint32_t pos = u_hexdump_encode(s, n, (unsigned char*)buffer.data());

   buffer.size_adjust(pos);
}
コード例 #18
0
ファイル: tokenizer.cpp プロジェクト: wladitavar/ULib
void UTokenizer::setData(const UString& data)
{
   U_TRACE(0, "UTokenizer::setData(%.*S)", U_STRING_TO_TRACE(data))

   str = data;
   s   = data.data();
   end = s + data.size();
}
コード例 #19
0
ファイル: file_config.cpp プロジェクト: ksengottuvel/ULib
UFileConfig::UFileConfig(const UString& _data, bool _preprocessing) : data(_data)
{
   U_TRACE_REGISTER_OBJECT(0, UFileConfig, "%.*S,%b", U_STRING_TO_TRACE(_data), _preprocessing)

   init();

   preprocessing = _preprocessing;
}
コード例 #20
0
ファイル: url.cpp プロジェクト: ksengottuvel/ULib
void Url::set(const UString& x)
{
   U_TRACE(0, "Url::set(%.*S)", U_STRING_TO_TRACE(x))

   url = x;

   findpos();
}
コード例 #21
0
ファイル: xml2txt.cpp プロジェクト: wladitavar/ULib
UXml2Txt::UXml2Txt(const UString& tag_list, bool _tag_to_exclude, bool _tag_output_also) : taglist(tag_list, "<>, ")
{
   U_TRACE_REGISTER_OBJECT(0, UXml2Txt, "%.*S,%b,%b", U_STRING_TO_TRACE(tag_list), _tag_to_exclude, _tag_output_also)

   tag_to_exclude  = (taglist.empty() == false ? _tag_to_exclude : false);
   tag_output_also = _tag_output_also;

   UXMLParser::initParser(false, 0);
}
コード例 #22
0
ファイル: test_expat.cpp プロジェクト: alepharchives/ULib
static void check(const UString& data)
{
   U_TRACE(5,"check(%.*S)",U_STRING_TO_TRACE(data))

   UXMLParser parser;

   parser.initParser();

   if (parser.parse(data)) cout << "Parser\n";
}
コード例 #23
0
ファイル: entity.cpp プロジェクト: ksengottuvel/ULib
UMimeEntity::UMimeEntity(const UString& _data) : data(_data)
{
   U_TRACE_REGISTER_OBJECT(0, UMimeEntity, "%.*S", U_STRING_TO_TRACE(_data))

   header       = U_NEW(UMimeHeader);
   startHeader  = 0;
   parse_result = false;

   if (parse()) decodeBody();
}
コード例 #24
0
ファイル: hexdump.cpp プロジェクト: alepharchives/ULib
void UHexDump::decode(const char* s, uint32_t n, UString& buffer)
{
   U_TRACE(0, "UHexDump::decode(%.*S,%u,%.*S)", n, s, n, U_STRING_TO_TRACE(buffer))

   U_ASSERT(buffer.capacity() >= n)

   uint32_t pos = u_hexdump_decode(s, n, (unsigned char*)buffer.data());

   buffer.size_adjust(pos);
}
コード例 #25
0
ファイル: base64.cpp プロジェクト: ksengottuvel/ULib
bool UBase64::decodeAll(const char* s, uint32_t n, UString& buffer)
{
   U_TRACE(0, "UBase64::decodeAll(%.*S,%u,%.*S)", n, s, n, U_STRING_TO_TRACE(buffer))

   uint32_t pos = u_base64all_decode(s, n, (unsigned char*)buffer.data());

   buffer.size_adjust(pos);

   U_INTERNAL_DUMP("u_base64_errors = %u buffer(%u) = %#.*S", u_base64_errors, buffer.size(), U_STRING_TO_TRACE(buffer))

   if (pos > 0 &&
       u_base64_errors == 0)
      {
      U_RETURN(true);
      }

   U_INTERNAL_DUMP("buffer(%u) = %#.*S", buffer.size(), U_STRING_TO_TRACE(buffer))

   U_RETURN(false);
}
コード例 #26
0
ファイル: zip.cpp プロジェクト: alepharchives/ULib
UZIP::UZIP(const UString& _content) : content(_content), tmpdir(U_CAPACITY)
{
   U_TRACE_REGISTER_OBJECT(0, UZIP, "%.*S", U_STRING_TO_TRACE(_content))

   npart         = 0;
   file          = 0;
   valid         = U_STRNEQ(_content.data(), U_ZIP_ARCHIVE);
   filenames     = filecontents = 0;
   zippartname   = zippartcontent = 0;
   filenames_len = filecontents_len = 0;
}
コード例 #27
0
void UEscape::encode(const unsigned char* s, uint32_t n, UString& buffer, bool json)
{
   U_TRACE(0, "UEscape::encode(%.*S,%u,%.*S,%b)", n, s, n, U_STRING_TO_TRACE(buffer), json)

   U_ASSERT(buffer.capacity() >= n)

   uint32_t sz  = buffer.size(),
            pos = u_escape_encode(s, n, buffer.c_pointer(sz), buffer.space(), json);

   buffer.size_adjust(sz + pos);
}
コード例 #28
0
void HttpBaWwwAuthenticate::stringify(UString& field)
{
   U_TRACE(5, "HttpBaWwwAuthenticate::stringify(%.*S)", U_STRING_TO_TRACE(field))

   field += name;

   field.append(U_CONSTANT_TO_PARAM(": Basic realm="));

   bool quoted = (realm[0] == '"');

   if (quoted == false) field += '"';

   field += realm;

   if (quoted == false) field += '"';

   field.append(U_CONSTANT_TO_PARAM("\r\n"));

   U_INTERNAL_DUMP("field = %.*S", U_STRING_TO_TRACE(field))
}
コード例 #29
0
ファイル: test_services.cpp プロジェクト: fast01/ULib
int
U_EXPORT main (int argc, char* argv[])
{
   U_ULIB_INIT(argv);

   U_TRACE(5,"main(%d)",argc)

   U_ASSERT_EQUALS( UServices::dosMatchWithOR(U_CONSTANT_TO_PARAM("www.sito1.com"), U_CONSTANT_TO_PARAM("SSI|benchmark|www.sito1.com|www.sito2.com"), FNM_INVERT), false)

   UString buffer(2000);

   u_base64_max_columns = 72;

   UBase64::encode(U_CONSTANT_TO_PARAM(TESTOA), buffer);

   U_INTERNAL_DUMP("buffer = %#.*S", U_STRING_TO_TRACE(buffer))

   U_ASSERT( buffer == U_STRING_FROM_CONSTANT(TESTOB) )

   UBase64::decode( U_CONSTANT_TO_PARAM(TESTOB), buffer);

   U_ASSERT( buffer == U_STRING_FROM_CONSTANT(TESTOA) )

   UString cmd, result1, result2;
   int fd_stderr = U_SYSCALL(open, "%S,%d", "err/services.err", O_WRONLY);

   cmd = U_STRING_FROM_CONSTANT("ls test_services.cpp");
   result1 = UCommand::outputCommand(cmd);

// U_ASSERT( result1 == U_STRING_FROM_CONSTANT("test_services.cpp\n") )

   buffer = UServices::getUUID();
   U_INTERNAL_DUMP("buffer = %#.*S", U_STRING_TO_TRACE(buffer))

   cmd = U_STRING_FROM_CONSTANT("cat test_services.cpp");
   result2 = UCommand::outputCommand(cmd, 0, -1, fd_stderr);

   U_ASSERT( result2.empty() == false )

   cout.write(result2.data(), result2.size());
}
コード例 #30
0
ファイル: archive.cpp プロジェクト: fast01/ULib
   UString getTimeStampToken(const UString& data, const UString& url)
      {
      U_TRACE(5, "Application::getTimeStampToken(%.*S,%.*S)", U_STRING_TO_TRACE(data), U_STRING_TO_TRACE(url))

      UString token;

#  ifdef HAVE_SSL_TS
      token = UTimeStamp::getTimeStampToken(U_HASH_SHA1, data, url);
#  endif

      U_RETURN_STRING(token);
      }