view ui/sslconnection_curl.h @ 1371:23df332b2a4c

(issue179) Read install signature timestamp from config This also changes the way the sigDt is propgated to the MainWindow. It no longer uses the settings but hands it over as a parameter directly.
author Andre Heinecke <andre.heinecke@intevation.de>
date Mon, 24 Nov 2014 15:48:49 +0100
parents 2a1aa9df8f11
children
line wrap: on
line source
#ifndef UI_SSLCONNECTION_CURL_H
#define UI_SSLCONNECTION_CURL_H
/* Copyright (C) 2014 by Bundesamt für Sicherheit in der Informationstechnik
 * Software engineering by Intevation GmbH
 *
 * This file is Free Software under the GNU GPL (v>=2)
 * and comes with ABSOLUTELY NO WARRANTY!
 * See LICENSE.txt for details.
 */

/**
 * @file sslconnection_curl.h
 * @brief SSLConnection utilizing libcurl for http.
 */

#include "sslconnection.h"

#include <curl/curl.h>

#include <QDateTime>
#include <QTemporaryFile>

class QSaveFile;

/** @brief SSLConnection implementation using LibCURL
*
* This class uses a modified version of the curl library to
* speak the HTTP with the downloader server. Provides
* Proxy support.
*/
class SSLConnectionCurl : public SSLConnection
{
public:
    SSLConnectionCurl(const QString& url,
            const QByteArray& certificate = QByteArray());

    ~SSLConnectionCurl();

    int connect();

    QDateTime getLastModifiedHeader(const QString &resource);

    bool downloadFile(const QString &resource, const QString &filename,
                      size_t maxSize);

    void setProxy(const QUrl &proxyUrl);

    void setCiphersuites(int ciphers[]);

private:
    CURL *mCurl;
    QTemporaryFile mCertFile;
    char mErrBuf[CURL_ERROR_SIZE + 1];

};

/** @brief Internal write function for curl */
size_t write_data(void *ptr, size_t size, size_t nmemb, QSaveFile *fp);

#endif // UI_SSLCONNECTION_CURL_H

http://wald.intevation.org/projects/trustbridge/