示例#1
0
 bool initialized () const
 {
    return
    (
       disposition() != XPCCUT_DISPOSITION_ABORTED &&
       disposition() != XPCCUT_DISPOSITION_DNT
    );
 }
示例#2
0
文件: headers.hpp 项目: mtaneda/acqua
 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;
 }
示例#3
0
 //! 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;
 }
示例#4
0
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;
}
示例#8
0
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;
}
示例#9
0
 //! 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;
 }