|
|
|
/*! @file
|
|
|
|
|
|
|
|
@id $Id: main.cxx 15 2010-06-03 14:17:27Z marc $
|
|
|
|
|
|
|
|
Build für Windoof:
|
|
|
|
<code>QMAKESPEC=$(pwd)/mkspecs/mingw-g++ qmake-qt4 && make release</code>
|
|
|
|
*/
|
|
|
|
// 1 2 3 4 5 6 7 8
|
|
|
|
// 45678901234567890123456789012345678901234567890123456789012345678901234567890
|
|
|
|
|
|
|
|
#include <QtGui/QApplication>
|
|
|
|
#include <QtCore/QTranslator>
|
|
|
|
#include <QtCore/QTextCodec>
|
|
|
|
#include <QtCore/QLocale>
|
|
|
|
#include <QtCore/QProcess>
|
|
|
|
#include <QtCore/QFileInfo>
|
|
|
|
#include <QtNetwork/QNetworkProxy>
|
|
|
|
|
|
|
|
#include <smartcardauth.hxx>
|
|
|
|
#include <QtNetwork/QSslConfiguration>
|
|
|
|
#include <QtNetwork/QSslCertificate>
|
|
|
|
#include <QtNetwork/QSslKey>
|
|
|
|
|
|
|
|
#include <browser.hxx>
|
|
|
|
#include <iostream>
|
|
|
|
#include <sstream>
|
|
|
|
|
|
|
|
|
|
|
|
const QByteArray SWISSSIGN_GOLD_CA_G2
|
|
|
|
("-----BEGIN CERTIFICATE-----\n"
|
|
|
|
"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\n"
|
|
|
|
"-----END CERTIFICATE-----\n");
|
|
|
|
const QByteArray SWISSSIGN_PLATINUM_CA_G2
|
|
|
|
("-----BEGIN CERTIFICATE-----\n"
|
|
|
|
"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\n"
|
|
|
|
"-----END CERTIFICATE-----\n");
|
|
|
|
const QByteArray SWISSSIGN_SILVER_CA_G2
|
|
|
|
("-----BEGIN CERTIFICATE-----\n"
|
|
|
|
"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\n"
|
|
|
|
"-----END CERTIFICATE-----\n");
|
|
|
|
|
|
|
|
void notrace(QtMsgType, const char*) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
int main(int argv, char** argc) try {
|
|
|
|
SmartCardAuth scardauth;
|
|
|
|
// qInstallMsgHandler(notrace);
|
|
|
|
// std::cout.rdbuf((new std::stringstream)->rdbuf());
|
|
|
|
// std::cerr.rdbuf((new std::stringstream)->rdbuf());
|
|
|
|
// std::clog.rdbuf((new std::stringstream)->rdbuf());
|
|
|
|
//............................................................................
|
|
|
|
QSslConfiguration sslConfig(QSslConfiguration::defaultConfiguration());
|
|
|
|
QList<QSslCertificate> certs(sslConfig.caCertificates());
|
|
|
|
certs.push_back(QSslCertificate(SWISSSIGN_GOLD_CA_G2));
|
|
|
|
certs.push_back(QSslCertificate(SWISSSIGN_SILVER_CA_G2));
|
|
|
|
certs.push_back(QSslCertificate(SWISSSIGN_PLATINUM_CA_G2));
|
|
|
|
sslConfig.setCaCertificates(certs);
|
|
|
|
//............................................................................
|
|
|
|
QStringList l(QProcess::systemEnvironment());
|
|
|
|
QMap<QString, QString> env;
|
|
|
|
for (QStringList::iterator it(l.begin()); it!=l.end(); ++it) {
|
|
|
|
QStringList v(it->split('='));
|
|
|
|
QString key(*v.begin());
|
|
|
|
QString value((v.pop_front(), v.join("=")));
|
|
|
|
env.insert(key, value);
|
|
|
|
qDebug()<<"env:"<<key<<"="<<value;
|
|
|
|
}
|
|
|
|
//............................................................................
|
|
|
|
QTextCodec* utf8(QTextCodec::codecForName("UTF-8"));
|
|
|
|
QTextCodec::setCodecForCStrings(utf8);
|
|
|
|
QTextCodec::setCodecForLocale(utf8);
|
|
|
|
QTextCodec::setCodecForTr(utf8);
|
|
|
|
QApplication app(argv, argc);
|
|
|
|
QTranslator qtTranslator;
|
|
|
|
if (env.contains("LANGUAGE")) QLocale::setDefault(env["LANGUAGE"]);
|
|
|
|
qtTranslator.load(":/language/qt_" + QLocale::system().name());
|
|
|
|
app.installTranslator(&qtTranslator);
|
|
|
|
QTranslator appTranslator;
|
|
|
|
appTranslator.load(":/language/swisssurfer_"+ QLocale::system().name());
|
|
|
|
app.installTranslator(&appTranslator);
|
|
|
|
//............................................................................
|
|
|
|
QNetworkProxy::setApplicationProxy
|
|
|
|
(QNetworkProxy
|
|
|
|
((env["PROXY_TYPE"]=="http"
|
|
|
|
? QNetworkProxy::HttpProxy
|
|
|
|
: (env["PROXY_TYPE"]=="socks"
|
|
|
|
? QNetworkProxy::Socks5Proxy
|
|
|
|
: QNetworkProxy::NoProxy)),
|
|
|
|
env["PROXY_HOST"], env["PROXY_PORT"].toInt()));
|
|
|
|
qDebug()<<"***************************************************************";
|
|
|
|
qDebug()<<"Start - Proxy:"
|
|
|
|
<<(QNetworkProxy::applicationProxy().type()==QNetworkProxy::NoProxy
|
|
|
|
? "No Proxy"
|
|
|
|
: (QNetworkProxy::applicationProxy().type()
|
|
|
|
==QNetworkProxy::Socks5Proxy ? "socks" : "http"))
|
|
|
|
<<"Hostname"<<QNetworkProxy::applicationProxy().hostName()
|
|
|
|
<<"Port"<<QNetworkProxy::applicationProxy().port();
|
|
|
|
qDebug()<<"***************************************************************";
|
|
|
|
//----------------------------------------------------------------------------
|
|
|
|
QStringList urls;
|
|
|
|
bool silent(false);
|
|
|
|
bool proxydetection(true);
|
|
|
|
QStringList args(app.arguments());
|
|
|
|
for (QStringList::iterator it(args.begin()); ++it!=args.end();)
|
|
|
|
if (*it=="-h" || *it=="--help" || *it=="-help" || *it=="/?") {
|
|
|
|
std::cout<<QObject::trUtf8
|
|
|
|
("Usage: %1 [OPTIONS...] [<url> ...]\n"
|
|
|
|
"Options:\n"
|
|
|
|
" -h, --help show this help text\n"
|
|
|
|
" -k, --kiosk no url bar\n"
|
|
|
|
" -p, --no-proxy no proxy detection\n"
|
|
|
|
" -c, --cert <file> load local client certificate from <file>\n"
|
|
|
|
" -y, --key <file> load local certificate key from <file>\n"
|
|
|
|
" <url> optional full URL\n"
|
|
|
|
"Environment:\n"
|
|
|
|
" LANGUAGE \"de\", \"en\", ... (actual: %5)\n"
|
|
|
|
" PROXY_TYPE \"http\" or \"socks\" or \"\" (actual: %2)\n"
|
|
|
|
" PROXY_PORT proxy port number (actual: %3)\n"
|
|
|
|
" PROXY_HOST proxy host name (actual: %4)\n")
|
|
|
|
.arg(QFileInfo(argc[0]).fileName())
|
|
|
|
.arg(env["PROXY_TYPE"]).arg(env["PROXY_PORT"]).arg(env["PROXY_HOST"])
|
|
|
|
.arg(env["LANGUAGE"])
|
|
|
|
.toStdString()
|
|
|
|
<<std::endl;
|
|
|
|
return 0;
|
|
|
|
} else if ((*it=="-k" || *it=="--kiosk")) {
|
|
|
|
silent=true;
|
|
|
|
} else if ((*it=="-p" || *it=="--no-proxy")) {
|
|
|
|
proxydetection = false;
|
|
|
|
} else if ((*it=="-c" || *it=="--cert") && ++it!=args.end()) {
|
|
|
|
QFile file(*it);
|
|
|
|
file.open(QIODevice::ReadOnly);
|
|
|
|
QSslCertificate::QSslCertificate c(&file);
|
|
|
|
if (c.isNull()) {
|
|
|
|
std::cerr<<QObject::trUtf8("Cannot read PEM certificate from file: %1")
|
|
|
|
.arg(*it).toStdString()<<std::endl;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
sslConfig.setLocalCertificate(c);
|
|
|
|
file.close();
|
|
|
|
std::cout<<QObject::trUtf8("Read PEM certificates from file: %1")
|
|
|
|
.arg(*it).toStdString()<<std::endl;
|
|
|
|
} else if ((*it=="-y" || *it=="--key") && ++it!=args.end()) {
|
|
|
|
QFile file(*it);
|
|
|
|
file.open(QIODevice::ReadOnly);
|
|
|
|
QSslKey k(&file, QSsl::Rsa);
|
|
|
|
if (k.isNull()) {
|
|
|
|
std::cerr<<QObject::trUtf8("Cannot read PEM RSA key from file: %1")
|
|
|
|
.arg(*it).toStdString()<<std::endl;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
sslConfig.setPrivateKey(k);
|
|
|
|
std::cout<<QObject::trUtf8("Read private key from file: %1")
|
|
|
|
.arg(*it).toStdString()<<std::endl;
|
|
|
|
} else if (it!=args.end()) {
|
|
|
|
urls<<*it;
|
|
|
|
} else {
|
|
|
|
std::cout<<QObject::trUtf8("Too few arguments.\nTry: %1 --help")
|
|
|
|
.arg(QFileInfo(argc[0]).fileName()).toStdString()<<std::endl;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
sslConfig.setPeerVerifyMode(QSslSocket::VerifyPeer);
|
|
|
|
sslConfig.setOpenSslHook(&scardauth);
|
|
|
|
QSslConfiguration::setDefaultConfiguration(sslConfig);
|
|
|
|
//............................................................................
|
|
|
|
if (urls.size()==0) urls<<QObject::trUtf8("http://swisssign.com");
|
|
|
|
for (QStringList::iterator it(urls.begin()); it!=urls.end(); ++it)
|
|
|
|
(new Browser(*it, silent, proxydetection))->show();
|
|
|
|
return app.exec();
|
|
|
|
} catch (std::exception& x) {
|
|
|
|
std::cerr<<"**** Error: "<<x.what()<<std::endl;
|
|
|
|
return 1;
|
|
|
|
} catch (...) {
|
|
|
|
// unexpected exception - just terminate
|
|
|
|
std::cerr<<"**** Error"<<std::endl;
|
|
|
|
return 1;
|
|
|
|
}
|