bool initialized () const { return ( disposition() != XPCCUT_DISPOSITION_ABORTED && disposition() != XPCCUT_DISPOSITION_DNT ); }
disposition & operator[](value_type const & name) { auto it = params_.find(name); if (it == params_.end()) it = params_.emplace_hint(params_.begin(), name, disposition()); return it->second; }
//! Move assign native_handle_type &operator=(native_handle_type &&o) noexcept { behaviour = std::move(o.behaviour); _init = std::move(o._init); o.behaviour = disposition(); o._init = 0; return *this; }
int main(int argc, char **argv) { char *streamfile=NULL; FILE *stream=NULL; FILE *content=NULL; size_t len=1024; char data[len]; long offset=0; int bytes=0; int c=0; if(argc != 2) usage(); streamfile = argv[1]; if((stream = fopen(streamfile,"r")) == NULL) usage(); if(!chunked_encoding(stream)){ printf("Transfer-Encoding: chunked - not found in "); printf("\"%s\"\n", streamfile); exit(0); } while(!feof(stream)){ if((bytes=fread(data,1,len,stream)) == 0) break; for(c=0;c<(bytes-1);c++){ if(data[c] == 0x0D && data[c+1] == 0x0A) { data[c]='\0'; offset++; break; } offset++; } content = disposition(data); if(content != NULL) break; fseek(stream,offset,SEEK_SET); } offset--; fseek(stream,offset,SEEK_SET); while(!feof(stream)){ if((bytes=fread(data,1,len,stream)) == 0) break; for(c=0;c<(bytes-4);c++){ if(data[c] == 0x0D && data[c+1] == 0x0A && data[c+2] == 0x0D && data[c+3] == 0x0A ){ offset+=2; fseek(stream,offset,SEEK_SET); extract(stream,content); fclose(stream); break; } offset++; } } return 0; }
void EmailPropertySetter::setAttachment(const QString& s) { QFileInfo fi( s ); QMailMessageContentDisposition disposition(QMailMessageContentDisposition::Attachment); disposition.setFilename( fi.absoluteFilePath().toLatin1() ); QMailMessageContentType type( QMimeType( fi.absoluteFilePath() ).id().toLatin1() ); type.setName(fi.baseName().toLatin1()); QMailMessagePart attachmentPart; attachmentPart.setBody( QMailMessageBody::fromFile(fi.absoluteFilePath(), type, QMailMessageBody::Base64, QMailMessageBody::RequiresEncoding) ); attachmentPart.setContentDisposition(disposition); target.appendPart( attachmentPart ); }
// default method for deciding whether we will handle a request bool DMPlugin::willHandle(HTTPHeader *requestheader, HTTPHeader *docheader) { // match user agent first (quick) if (!(alwaysmatchua || ua_match.match(requestheader->userAgent().toCharArray()))) return false; // then check standard lists (mimetypes & extensions) // mimetypes String mimetype(""); bool matchedmime = false; if (mimelistenabled) { mimetype = docheader->getContentType(); #ifdef DGDEBUG std::cout<<"mimetype: "<<mimetype<<std::endl; #endif if (mimetypelist.findInList(mimetype.toCharArray()) == NULL) { if (!extensionlistenabled) return false; } else matchedmime = true; } if (extensionlistenabled && !matchedmime) { // determine the extension String path(requestheader->decode(requestheader->url())); path.removeWhiteSpace(); path.toLower(); path.removePTP(); path = path.after("/"); path.hexDecode(); path.realPath(); String disposition(docheader->disposition()); String extension; if (disposition.length() > 2) { extension = disposition; while (extension.contains(".")) { extension = extension.after("."); } extension = "." + extension; } else { if (!path.contains("?")) { extension = path; } else { if (mimetype.length() == 0) mimetype = docheader->getContentType(); if (mimetype.contains("application/")) { extension = path; if (extension.contains("?")) { extension = extension.before("?"); } } } } #ifdef DGDEBUG std::cout<<"extension: "<<extension<<std::endl; #endif // check the extension list if (!extension.contains(".") || (extensionlist.findEndsWith(extension.toCharArray()) == NULL)) return matchedmime; } return true; }
// test whether or not a request should be scanned based on sent & received headers int CSPlugin::scanTest(HTTPHeader * requestheader, HTTPHeader * docheader, const char *user, int filtergroup, const char *ip) { char *i; //exceptionvirusmimetypelist String mimetype(docheader->getContentType()); #ifdef DGDEBUG std::cout<<"mimetype: "<<mimetype<<std::endl; #endif i = exceptionvirusmimetypelist.findInList(mimetype.toCharArray()); if (i != NULL) { return DGCS_NOSCAN; // match } String disposition(docheader->disposition()); #ifdef DGDEBUG std::cout<<"disposition: "<<disposition<<std::endl; #endif String url(requestheader->url()); String urld(requestheader->decode(url)); urld.removeWhiteSpace(); urld.toLower(); urld.removePTP(); String domain, tempurl, foundurl, path, extension; unsigned int fl; if (urld.contains("/")) { domain = urld.before("/"); path = "/" + urld.after("/"); path.hexDecode(); path.realPath(); } else { domain = urld; } // don't scan our web server if (((o.fg[filtergroup]->reporting_level == 1) || (o.fg[filtergroup]->reporting_level == 2)) && domain.startsWith(o.fg[filtergroup]->access_denied_domain)) { return DGCS_NOSCAN; } //exceptionvirusextensionlist if (disposition.length() > 2) { extension = disposition; while (extension.contains(".")) { extension = extension.after("."); } extension = "." + extension; } else { if (!path.contains("?")) { extension = path; } else if (mimetype.contains("application/")) { extension = path; if (extension.contains("?")) { extension = extension.before("?"); } } } #ifdef DGDEBUG std::cout<<"extension: "<<extension<<std::endl; #endif if (extension.contains(".")) { i = exceptionvirusextensionlist.findEndsWith(extension.toCharArray()); if (i != NULL) { return DGCS_NOSCAN; // match } } // exceptionvirussitelist tempurl = domain; #ifdef DGDEBUG std::cout<<"domain: "<<domain<<std::endl; #endif while (tempurl.contains(".")) { i = exceptionvirussitelist.findInList(tempurl.toCharArray()); if (i != NULL) { return DGCS_NOSCAN; // exact match } tempurl = tempurl.after("."); // check for being in higher level domains } if (tempurl.length() > 1) { // allows matching of .tld tempurl = "." + tempurl; i = exceptionvirussitelist.findInList(tempurl.toCharArray()); if (i != NULL) { return DGCS_NOSCAN; // exact match } } // exceptionvirusurllist tempurl = domain + path; if (tempurl.endsWith("/")) { tempurl.chop(); // chop off trailing / if any } while (tempurl.before("/").contains(".")) { i = exceptionvirusurllist.findStartsWith(tempurl.toCharArray()); if (i != NULL) { foundurl = i; fl = foundurl.length(); if (tempurl.length() > fl) { unsigned char c = tempurl[fl]; if (c == '/' || c == '?' || c == '&' || c == '=') { return DGCS_NOSCAN; // matches /blah/ or /blah/foo but not /blahfoo } } else { return DGCS_NOSCAN; // exact match } } tempurl = tempurl.after("."); // check for being in higher level domains } #ifdef DGDEBUG std::cout << "URL " << url << " is going to need AV scanning." << std::endl; #endif return DGCS_NEEDSCAN; }
QMailMessage EmailComposerInterface::message() const { QMailMessage mail; if( isEmpty() ) return mail; QList<AttachmentItem*> attachments = m_composer->addAttDialog()->attachedFiles(); QString messageText( m_composer->toPlainText() ); QMailMessageContentType type("text/plain; charset=UTF-8"); if(attachments.isEmpty()) { mail.setBody( QMailMessageBody::fromData( messageText, type, QMailMessageBody::Base64 ) ); } else { QMailMessagePart textPart; textPart.setBody(QMailMessageBody::fromData(messageText.toUtf8(), type, QMailMessageBody::Base64)); mail.setMultipartType(QMailMessagePartContainer::MultipartMixed); mail.appendPart(textPart); foreach (AttachmentItem* current, attachments) { const QContent& doc( current->document() ); QString fileName( doc.fileName() ); QFileInfo fi( fileName ); QString partName( fi.fileName() ); fileName = fi.absoluteFilePath(); QString content( doc.type() ); if (content.isEmpty()) content = QMimeType( fileName ).id(); QMailMessageContentType type( content.toLatin1() ); type.setName( partName.toLatin1() ); QMailMessageContentDisposition disposition( QMailMessageContentDisposition::Attachment ); disposition.setFilename( partName.toLatin1() ); QMailMessagePart part; if ((current->action() != QMailMessage::LinkToAttachments) || (fileName.startsWith(Qtopia::tempDir()))) { // This file is temporary - extract the data and create a part from that QFile dataFile(fileName); if (dataFile.open(QIODevice::ReadOnly)) { QDataStream in(&dataFile); part = QMailMessagePart::fromStream(in, disposition, type, QMailMessageBody::Base64, QMailMessageBody::RequiresEncoding); } else { qWarning() << "Unable to open temporary file:" << fileName; } } else { part = QMailMessagePart::fromFile(fileName, disposition, type, QMailMessageBody::Base64, QMailMessageBody::RequiresEncoding); } mail.appendPart(part); } } mail.setMessageType( QMailMessage::Email ); return mail; }
//! Move construct BOOST_CXX14_CONSTEXPR native_handle_type(native_handle_type &&o) noexcept : behaviour(std::move(o.behaviour)), _init(std::move(o._init)) { o.behaviour = disposition(); o._init = 0; }