option is noe --login to enable immediate login, otherwise logs in at first https-access; also works without cryptoki-library; closes #34

master
Marc Wäckerlin 14 years ago
parent 108f66b43e
commit 0870f9e4e4
  1. 1
      swisssurfer/configure.in
  2. 1
      swisssurfer/src/browser.hxx
  3. 8
      swisssurfer/src/main.cxx
  4. 1
      swisssurfer/src/qmake.pro.in
  5. 176
      swisssurfer/src/smartcardauth.hxx
  6. 66
      swisssurfer/src/swisssurfer_de.ts
  7. 66
      swisssurfer/src/swisssurfer_en.ts
  8. 66
      swisssurfer/src/swisssurfer_fr.ts
  9. 66
      swisssurfer/src/swisssurfer_it.ts

@ -91,7 +91,6 @@ AC_SUBST(LRELEASE)
AC_CHECK_PROGS([LUPDATE], [lupdate-qt4 lupdate-mac lupdate]) AC_CHECK_PROGS([LUPDATE], [lupdate-qt4 lupdate-mac lupdate])
test -n "$LUPDATE" || AC_MSG_ERROR([lupdate for Qt 4 not found!]) test -n "$LUPDATE" || AC_MSG_ERROR([lupdate for Qt 4 not found!])
AC_SUBST(LUPDATE) AC_SUBST(LUPDATE)
QMAKE_OPTIONS=
AC_ARG_ENABLE(static-plugins, AC_ARG_ENABLE(static-plugins,
[AS_HELP_STRING([--enable-static-plugins], [AS_HELP_STRING([--enable-static-plugins],
[links the image plugins statically])], [links the image plugins statically])],

@ -420,6 +420,7 @@ class Browser: public QMainWindow, protected Ui::Browser {
void load(QUrl page, QWebView* view=0) { void load(QUrl page, QWebView* view=0) {
LOG<<page.toString(); LOG<<page.toString();
statusBar()->showMessage(tr("Checking: %1").arg(page.toString())); statusBar()->showMessage(tr("Checking: %1").arg(page.toString()));
if (page.scheme()=="https") _scAuth.login();
if (!check(page)) { if (!check(page)) {
LOG<<"########## BLACK LISTED IGNORED ##########"; LOG<<"########## BLACK LISTED IGNORED ##########";
statusBar()->showMessage(tr("Forbidden: %1").arg(page.toString())); statusBar()->showMessage(tr("Forbidden: %1").arg(page.toString()));

@ -239,7 +239,7 @@ int main(int argv, char** argc) try {
QStringList urls; QStringList urls;
QString actlib; QString actlib;
bool silent(false); bool silent(false);
bool login(true); bool login(false);
Settings::MimeTypes mimetypes; Settings::MimeTypes mimetypes;
QStringList args(app.arguments()); QStringList args(app.arguments());
std::auto_ptr<QSettings> settings std::auto_ptr<QSettings> settings
@ -253,7 +253,7 @@ int main(int argv, char** argc) try {
" -k, --kiosk no url bar\n" " -k, --kiosk no url bar\n"
" if you sepcify -k and -s, -k must be first\n" " if you sepcify -k and -s, -k must be first\n"
" -n, --no-settings don't load or store any settings\n" " -n, --no-settings don't load or store any settings\n"
" --no-login don't ask for smartcard password\n" " --login ask for smartcard password at startup\n"
" -l, --lib <file> path to file libengine_act.so\n" " -l, --lib <file> path to file libengine_act.so\n"
" -s, --settings <file>\n" " -s, --settings <file>\n"
" load settings from <file>\n" " load settings from <file>\n"
@ -279,8 +279,8 @@ int main(int argv, char** argc) try {
settings.reset(); settings.reset();
} else if ((*it=="-n" || *it=="--no-settings")) { } else if ((*it=="-n" || *it=="--no-settings")) {
settings.reset(); settings.reset();
} else if (*it=="--no-settings") { } else if (*it=="--login") {
login = false; login = true;
} else if ((*it=="-l" || *it=="--lib") && ++it!=args.end()) { } else if ((*it=="-l" || *it=="--lib") && ++it!=args.end()) {
actlib = *it; actlib = *it;
} else if ((*it=="-s" || *it=="--settings") && ++it!=args.end()) { } else if ((*it=="-s" || *it=="--settings") && ++it!=args.end()) {

@ -3,6 +3,7 @@ CONFIG += no_keywords
QMAKE_LIBS += -lproxyface -lcryptoki++ -lssl -lcrypto QMAKE_LIBS += -lproxyface -lcryptoki++ -lssl -lcrypto
unix { unix {
CONFIG += debug
} }
macx { macx {
QMAKE_INCDIR += /opt/local/include QMAKE_INCDIR += /opt/local/include

@ -25,12 +25,16 @@ class CryptokiEngine: public QObject, public openssl::Engine {
public: public:
CryptokiEngine(std::string lib, QWidget* p): CryptokiEngine(std::string lib):
_cryptoki(lib), _parent(p) { _cryptoki(lib) {
OPENSSL_LOG("log"); OPENSSL_LOG("log");
} }
operator bool() { operator bool() {
OPENSSL_LOG("Status of CryptokiEngine: "
<<(_privateKey.get()
?"privateKey defined, ":"privateKey undefined")
<<(_cert.get()?"cert defined":"cert undefined"));
return _privateKey.get() && _cert.get(); return _privateKey.get() && _cert.get();
} }
@ -39,6 +43,7 @@ class CryptokiEngine: public QObject, public openssl::Engine {
} }
void cert(cryptoki::Object privateKey, std::auto_ptr<openssl::X509> c) { void cert(cryptoki::Object privateKey, std::auto_ptr<openssl::X509> c) {
OPENSSL_LOG("log");
_cert = c; _cert = c;
_privateKey = std::auto_ptr<cryptoki::Object> _privateKey = std::auto_ptr<cryptoki::Object>
(new cryptoki::Object(privateKey)); (new cryptoki::Object(privateKey));
@ -79,72 +84,11 @@ class CryptokiEngine: public QObject, public openssl::Engine {
} }
virtual std::string rsaSign(const std::string& in, unsigned int type) { virtual std::string rsaSign(const std::string& in, unsigned int type) {
std::string inModded(in);
OPENSSL_LOG("log"); OPENSSL_LOG("log");
OPENSSL_LOG("type="<<type); OPENSSL_LOG("type="<<type<<"; size="<<in.size());
// CK_MECHANISM_TYPE mech(0); if (type != NID_md5_sha1) throw std::runtime_error("wrong sign type");
// switch (type) { if (in.size() != 36) throw std::runtime_error("wrong msg size to sign");
// case NID_idea_ecb: mech=CKM_IDEA_ECB; break; return _privateKey->sign(in, CKM_RSA_PKCS);
// default: throw("unknown key mechanism");
// }
// //------------------------------------------------------------ PKCS11_sign
// int sigsize(openssl::BigNum(_modulus).size());
// {
// int ssl = ((type == NID_md5_sha1) ? 1 : 0);
// unsigned char *encoded = NULL;
// if (ssl) {
// OPENSSL_LOG("It's SSL");
// if((inModded.size() != 36) /* SHA1 + MD5 */ ||
// ((inModded.size() + RSA_PKCS1_PADDING_SIZE) > sigsize)) {
// throw std::runtime_error("the size is wrong");
// }
// } else {
// OPENSSL_LOG("It's not SSL");
// ASN1_TYPE parameter;
// parameter.type = V_ASN1_NULL;
// parameter.value.ptr = 0;
// X509_ALGOR algor;
// algor.algorithm = OBJ_nid2obj(type);
// algor.parameter = &parameter;
// ASN1_STRING digest;
// digest.data = (unsigned char *)inModded.data();
// digest.length = inModded.size();
// X509_SIG sig;
// sig.algor = &algor;
// sig.digest = &digest;
// int size (i2d_X509_SIG(&sig, 0));
// if (!algor.algorithm) throw std::runtime_error("algor wrong nid");
// if (!algor.algorithm->length)
// throw std::runtime_error("algor length");
// if (size) throw std::runtime_error("digest size");
// if (size + RSA_PKCS1_PADDING_SIZE < sigsize)
// throw std::runtime_error("incompatible size");
// unsigned char* buf(new unsigned char[size]);
// i2d_X509_SIG(&sig, &buf);
// inModded.assign((char*)buf, size);
// delete[] buf;
// }
// }
// //------------------------------------------------- PKCS11_private_encrypt
// {
// char padding(RSA_PKCS1_PADDING);
// if ((inModded.size() + RSA_PKCS1_PADDING_SIZE) > sigsize)
// throw std::runtime_error("the size is wrong");
// }
// //-----------------------------------------------------------------------
// if (in!=inModded)
// OPENSSL_LOG("changed input"<<std::endl
// <<"from:"<<std::endl
// <<crypto::readable(in)<<std::endl
// <<"to:"<<std::endl
// <<crypto::readable(inModded));
return _privateKey->sign(inModded, CKM_RSA_PKCS);
} }
private: private:
@ -155,16 +99,63 @@ class CryptokiEngine: public QObject, public openssl::Engine {
std::auto_ptr<cryptoki::Object> _privateKey; std::auto_ptr<cryptoki::Object> _privateKey;
std::auto_ptr<openssl::X509> _cert; std::auto_ptr<openssl::X509> _cert;
};
class SmartCardAuth: public QObject {
Q_OBJECT;
public: public:
void login() { SmartCardAuth(const QString& lib, QWidget* p=0, bool loginAtStart=true):
_reg(e(lib)), _parent(p) {
qDebug()<<__PRETTY_FUNCTION__;
if (loginAtStart) login();
//assert(connect(e(), SIGNAL(certRequired()), SLOT(login())));
}
private Q_SLOTS:
void extendedContextInitialization(ssl_ctx_st* ctx, QSslSocket* socket) {
qDebug()<<__PRETTY_FUNCTION__;
SSL_CTX_set_client_cert_cb(ctx, SmartCardAuth::clientCert);
}
private:
static int clientCert(SSL* ssl, X509 **x509, EVP_PKEY **pkey) {
qDebug()<<__PRETTY_FUNCTION__;
if (!e() || !*e()) return 0; // no certificate found
qDebug()<<"*** A "<<__PRETTY_FUNCTION__;
*x509 = e()->cert().lowLevelCopy();
qDebug()<<"*** B "<<__PRETTY_FUNCTION__;
*pkey = e()->privkey();
qDebug()<<"*** C "<<__PRETTY_FUNCTION__;
return 1;
}
static CryptokiEngine* e(const QString& lib = QString()) try {
static CryptokiEngine* _e(new CryptokiEngine(lib.toStdString()));
return _e;
} catch (...) {
return 0;
}
private:
openssl::RegisterEngine _reg;
//std::map<ssl_ctx_st*, QSslSocket*> sockets;
public:
void login(bool force=false) {
QMutexLocker lock(&_mutex); QMutexLocker lock(&_mutex);
if (!e() || (!force && *e())) return; // already logged in
try { try {
QList<CertInfo> authcerts; QList<CertInfo> authcerts;
QList<CertInfo> allcerts; QList<CertInfo> allcerts;
QSslConfiguration sslConfig(QSslConfiguration::defaultConfiguration()); QSslConfiguration sslConfig(QSslConfiguration::defaultConfiguration());
QList<QSslCertificate> cacerts(sslConfig.caCertificates()); QList<QSslCertificate> cacerts(sslConfig.caCertificates());
_slots = _cryptoki.slotList(); _slots = e()->cryptoki().slotList();
for (cryptoki::SlotList::iterator slot(_slots.begin()); for (cryptoki::SlotList::iterator slot(_slots.begin());
slot!=_slots.end(); ++slot) { slot!=_slots.end(); ++slot) {
_session = _session =
@ -218,7 +209,7 @@ class CryptokiEngine: public QObject, public openssl::Engine {
c.id)); c.id));
if (keys.size()==1) { if (keys.size()==1) {
OPENSSL_LOG("**** found one private key"); OPENSSL_LOG("**** found one private key");
cert(keys[0], e()->cert(keys[0],
std::auto_ptr<openssl::X509> std::auto_ptr<openssl::X509>
(new openssl::X509(c.data))); (new openssl::X509(c.data)));
sslConfig.setCaCertificates(cacerts); sslConfig.setCaCertificates(cacerts);
@ -255,51 +246,6 @@ class CryptokiEngine: public QObject, public openssl::Engine {
cryptoki::SlotList _slots; cryptoki::SlotList _slots;
std::auto_ptr<cryptoki::Session> _session; std::auto_ptr<cryptoki::Session> _session;
QMutex _mutex; QMutex _mutex;
std::auto_ptr<PinEntry> _pinEntry;
};
class SmartCardAuth: public QObject {
Q_OBJECT;
public:
SmartCardAuth(const QString& lib, QWidget* p=0, bool login=true):
_reg(e(lib, p)) {
qDebug()<<__PRETTY_FUNCTION__;
if (login) e()->login();
//assert(connect(e(), SIGNAL(certRequired()), SLOT(login())));
}
private Q_SLOTS:
void extendedContextInitialization(ssl_ctx_st* ctx, QSslSocket* socket) {
qDebug()<<__PRETTY_FUNCTION__;
SSL_CTX_set_client_cert_cb(ctx, clientCert);
}
private:
static int clientCert(SSL* ssl, X509 **x509, EVP_PKEY **pkey) {
qDebug()<<__PRETTY_FUNCTION__;
if (!*e()) return 0; // no certificate found
qDebug()<<"*** A "<<__PRETTY_FUNCTION__;
*x509 = e()->cert().lowLevelCopy();
qDebug()<<"*** B "<<__PRETTY_FUNCTION__;
*pkey = e()->privkey();
qDebug()<<"*** C "<<__PRETTY_FUNCTION__;
return 1;
}
static CryptokiEngine* e(const QString& lib = QString(), QWidget* p = 0) {
static CryptokiEngine* _e(new CryptokiEngine(lib.toStdString(), p));
return _e;
}
private:
openssl::RegisterEngine _reg;
//std::map<ssl_ctx_st*, QSslSocket*> sockets;
}; };

@ -232,82 +232,82 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="434"/> <location filename="browser.hxx" line="435"/>
<source>Reading: %1</source> <source>Reading: %1</source>
<oldsource>Reading: %1%</oldsource> <oldsource>Reading: %1%</oldsource>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="449"/> <location filename="browser.hxx" line="450"/>
<source>Zoom: %1%</source> <source>Zoom: %1%</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="436"/> <location filename="browser.hxx" line="437"/>
<source>Illegal URL: %1</source> <source>Illegal URL: %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="500"/> <location filename="browser.hxx" line="501"/>
<source>Print Document</source> <source>Print Document</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="521"/> <location filename="browser.hxx" line="522"/>
<source>%1 - %2</source> <source>%1 - %2</source>
<oldsource>Back to %1 - %2</oldsource> <oldsource>Back to %1 - %2</oldsource>
<comment>statusbar actionBack_hovered %1=url %2=title</comment> <comment>statusbar actionBack_hovered %1=url %2=title</comment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="659"/> <location filename="browser.hxx" line="660"/>
<source>Info: %1</source> <source>Info: %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="672"/> <location filename="browser.hxx" line="673"/>
<source>done.</source> <source>done.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="672"/> <location filename="browser.hxx" line="673"/>
<source>page load error.</source> <source>page load error.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="925"/> <location filename="browser.hxx" line="926"/>
<source>%1</source> <source>%1</source>
<comment>statusbar for hovered link %1=url</comment> <comment>statusbar for hovered link %1=url</comment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="425"/> <location filename="browser.hxx" line="426"/>
<source>Forbidden: %1</source> <source>Forbidden: %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="426"/> <location filename="browser.hxx" line="427"/>
<source>Access Denied</source> <source>Access Denied</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="427"/> <location filename="browser.hxx" line="428"/>
<source>&lt;p&gt;Access denied due to security considerations.&lt;/p&gt;&lt;p&gt;You are not allowed to connect to %1.</source> <source>&lt;p&gt;Access denied due to security considerations.&lt;/p&gt;&lt;p&gt;You are not allowed to connect to %1.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="540"/> <location filename="browser.hxx" line="541"/>
<source>%1 - %2</source> <source>%1 - %2</source>
<comment>statusbar actionForward_hovered %1=url %2=title</comment> <comment>statusbar actionForward_hovered %1=url %2=title</comment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="604"/> <location filename="browser.hxx" line="605"/>
<source>About</source> <source>About</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="605"/> <location filename="browser.hxx" line="606"/>
<source>SwissSurfer %1 (%2) <source>SwissSurfer %1 (%2)
%3 %3
@ -321,22 +321,22 @@ Compiled: qt-%5</oldsource>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="654"/> <location filename="browser.hxx" line="655"/>
<source>%1</source> <source>%1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="1035"/> <location filename="browser.hxx" line="1036"/>
<source>Save File As ...</source> <source>Save File As ...</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="1090"/> <location filename="browser.hxx" line="1091"/>
<source>authentication required</source> <source>authentication required</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="1102"/> <location filename="browser.hxx" line="1103"/>
<source>ssl error</source> <source>ssl error</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -541,12 +541,12 @@ p, li { white-space: pre-wrap; }
<context> <context>
<name>QMessageBox</name> <name>QMessageBox</name>
<message> <message>
<location filename="smartcardauth.hxx" line="230"/> <location filename="smartcardauth.hxx" line="221"/>
<source>Wrong PIN</source> <source>Wrong PIN</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="smartcardauth.hxx" line="231"/> <location filename="smartcardauth.hxx" line="222"/>
<source>Authentication failed, please try again.</source> <source>Authentication failed, please try again.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -561,7 +561,7 @@ Options:
-k, --kiosk no url bar -k, --kiosk no url bar
if you sepcify -k and -s, -k must be first if you sepcify -k and -s, -k must be first
-n, --no-settings don&apos;t load or store any settings -n, --no-settings don&apos;t load or store any settings
--no-login don&apos;t ask for smartcard password --login ask for smartcard password at startup
-l, --lib &lt;file&gt; path to file libengine_act.so -l, --lib &lt;file&gt; path to file libengine_act.so
-s, --settings &lt;file&gt; -s, --settings &lt;file&gt;
load settings from &lt;file&gt; load settings from &lt;file&gt;
@ -577,6 +577,28 @@ Environment:
PROXY_PORT proxy port number (actual: %3) PROXY_PORT proxy port number (actual: %3)
PROXY_HOST proxy host name (actual: %4) PROXY_HOST proxy host name (actual: %4)
</source> </source>
<oldsource>Usage: %1 [OPTIONS...] [&lt;url&gt; ...]
Options:
-h, --help show this help text
-k, --kiosk no url bar
if you sepcify -k and -s, -k must be first
-n, --no-settings don&apos;t load or store any settings
--no-login don&apos;t ask for smartcard password
-l, --lib &lt;file&gt; path to file libengine_act.so
-s, --settings &lt;file&gt;
load settings from &lt;file&gt;
if you sepcify -k and -s, -k must be first
-c, --cert &lt;file&gt; load local client certificate from &lt;file&gt;
-y, --key &lt;file&gt; load local certificate key from &lt;file&gt;
-m, --mime &lt;mime&gt; &lt;ext&gt; &lt;tool&gt;
start &lt;tool&gt; for mimetype &lt;mime&gt;
&lt;url&gt; optional full URL
Environment:
LANGUAGE &quot;de&quot;, &quot;en&quot;, ... (actual: %5)
PROXY_TYPE &quot;http&quot; or &quot;socks&quot; or &quot;&quot; (actual: %2)
PROXY_PORT proxy port number (actual: %3)
PROXY_HOST proxy host name (actual: %4)
</oldsource>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>

@ -232,82 +232,82 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="434"/> <location filename="browser.hxx" line="435"/>
<source>Reading: %1</source> <source>Reading: %1</source>
<oldsource>Reading: %1%</oldsource> <oldsource>Reading: %1%</oldsource>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="449"/> <location filename="browser.hxx" line="450"/>
<source>Zoom: %1%</source> <source>Zoom: %1%</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="436"/> <location filename="browser.hxx" line="437"/>
<source>Illegal URL: %1</source> <source>Illegal URL: %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="500"/> <location filename="browser.hxx" line="501"/>
<source>Print Document</source> <source>Print Document</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="521"/> <location filename="browser.hxx" line="522"/>
<source>%1 - %2</source> <source>%1 - %2</source>
<oldsource>Back to %1 - %2</oldsource> <oldsource>Back to %1 - %2</oldsource>
<comment>statusbar actionBack_hovered %1=url %2=title</comment> <comment>statusbar actionBack_hovered %1=url %2=title</comment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="659"/> <location filename="browser.hxx" line="660"/>
<source>Info: %1</source> <source>Info: %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="672"/> <location filename="browser.hxx" line="673"/>
<source>done.</source> <source>done.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="672"/> <location filename="browser.hxx" line="673"/>
<source>page load error.</source> <source>page load error.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="925"/> <location filename="browser.hxx" line="926"/>
<source>%1</source> <source>%1</source>
<comment>statusbar for hovered link %1=url</comment> <comment>statusbar for hovered link %1=url</comment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="425"/> <location filename="browser.hxx" line="426"/>
<source>Forbidden: %1</source> <source>Forbidden: %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="426"/> <location filename="browser.hxx" line="427"/>
<source>Access Denied</source> <source>Access Denied</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="427"/> <location filename="browser.hxx" line="428"/>
<source>&lt;p&gt;Access denied due to security considerations.&lt;/p&gt;&lt;p&gt;You are not allowed to connect to %1.</source> <source>&lt;p&gt;Access denied due to security considerations.&lt;/p&gt;&lt;p&gt;You are not allowed to connect to %1.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="540"/> <location filename="browser.hxx" line="541"/>
<source>%1 - %2</source> <source>%1 - %2</source>
<comment>statusbar actionForward_hovered %1=url %2=title</comment> <comment>statusbar actionForward_hovered %1=url %2=title</comment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="604"/> <location filename="browser.hxx" line="605"/>
<source>About</source> <source>About</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="605"/> <location filename="browser.hxx" line="606"/>
<source>SwissSurfer %1 (%2) <source>SwissSurfer %1 (%2)
%3 %3
@ -321,22 +321,22 @@ Compiled: qt-%5</oldsource>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="654"/> <location filename="browser.hxx" line="655"/>
<source>%1</source> <source>%1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="1035"/> <location filename="browser.hxx" line="1036"/>
<source>Save File As ...</source> <source>Save File As ...</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="1090"/> <location filename="browser.hxx" line="1091"/>
<source>authentication required</source> <source>authentication required</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="1102"/> <location filename="browser.hxx" line="1103"/>
<source>ssl error</source> <source>ssl error</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -541,12 +541,12 @@ p, li { white-space: pre-wrap; }
<context> <context>
<name>QMessageBox</name> <name>QMessageBox</name>
<message> <message>
<location filename="smartcardauth.hxx" line="230"/> <location filename="smartcardauth.hxx" line="221"/>
<source>Wrong PIN</source> <source>Wrong PIN</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="smartcardauth.hxx" line="231"/> <location filename="smartcardauth.hxx" line="222"/>
<source>Authentication failed, please try again.</source> <source>Authentication failed, please try again.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -561,7 +561,7 @@ Options:
-k, --kiosk no url bar -k, --kiosk no url bar
if you sepcify -k and -s, -k must be first if you sepcify -k and -s, -k must be first
-n, --no-settings don&apos;t load or store any settings -n, --no-settings don&apos;t load or store any settings
--no-login don&apos;t ask for smartcard password --login ask for smartcard password at startup
-l, --lib &lt;file&gt; path to file libengine_act.so -l, --lib &lt;file&gt; path to file libengine_act.so
-s, --settings &lt;file&gt; -s, --settings &lt;file&gt;
load settings from &lt;file&gt; load settings from &lt;file&gt;
@ -577,6 +577,28 @@ Environment:
PROXY_PORT proxy port number (actual: %3) PROXY_PORT proxy port number (actual: %3)
PROXY_HOST proxy host name (actual: %4) PROXY_HOST proxy host name (actual: %4)
</source> </source>
<oldsource>Usage: %1 [OPTIONS...] [&lt;url&gt; ...]
Options:
-h, --help show this help text
-k, --kiosk no url bar
if you sepcify -k and -s, -k must be first
-n, --no-settings don&apos;t load or store any settings
--no-login don&apos;t ask for smartcard password
-l, --lib &lt;file&gt; path to file libengine_act.so
-s, --settings &lt;file&gt;
load settings from &lt;file&gt;
if you sepcify -k and -s, -k must be first
-c, --cert &lt;file&gt; load local client certificate from &lt;file&gt;
-y, --key &lt;file&gt; load local certificate key from &lt;file&gt;
-m, --mime &lt;mime&gt; &lt;ext&gt; &lt;tool&gt;
start &lt;tool&gt; for mimetype &lt;mime&gt;
&lt;url&gt; optional full URL
Environment:
LANGUAGE &quot;de&quot;, &quot;en&quot;, ... (actual: %5)
PROXY_TYPE &quot;http&quot; or &quot;socks&quot; or &quot;&quot; (actual: %2)
PROXY_PORT proxy port number (actual: %3)
PROXY_HOST proxy host name (actual: %4)
</oldsource>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>

@ -232,82 +232,82 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="434"/> <location filename="browser.hxx" line="435"/>
<source>Reading: %1</source> <source>Reading: %1</source>
<oldsource>Reading: %1%</oldsource> <oldsource>Reading: %1%</oldsource>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="449"/> <location filename="browser.hxx" line="450"/>
<source>Zoom: %1%</source> <source>Zoom: %1%</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="436"/> <location filename="browser.hxx" line="437"/>
<source>Illegal URL: %1</source> <source>Illegal URL: %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="500"/> <location filename="browser.hxx" line="501"/>
<source>Print Document</source> <source>Print Document</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="521"/> <location filename="browser.hxx" line="522"/>
<source>%1 - %2</source> <source>%1 - %2</source>
<oldsource>Back to %1 - %2</oldsource> <oldsource>Back to %1 - %2</oldsource>
<comment>statusbar actionBack_hovered %1=url %2=title</comment> <comment>statusbar actionBack_hovered %1=url %2=title</comment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="659"/> <location filename="browser.hxx" line="660"/>
<source>Info: %1</source> <source>Info: %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="672"/> <location filename="browser.hxx" line="673"/>
<source>done.</source> <source>done.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="672"/> <location filename="browser.hxx" line="673"/>
<source>page load error.</source> <source>page load error.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="925"/> <location filename="browser.hxx" line="926"/>
<source>%1</source> <source>%1</source>
<comment>statusbar for hovered link %1=url</comment> <comment>statusbar for hovered link %1=url</comment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="425"/> <location filename="browser.hxx" line="426"/>
<source>Forbidden: %1</source> <source>Forbidden: %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="426"/> <location filename="browser.hxx" line="427"/>
<source>Access Denied</source> <source>Access Denied</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="427"/> <location filename="browser.hxx" line="428"/>
<source>&lt;p&gt;Access denied due to security considerations.&lt;/p&gt;&lt;p&gt;You are not allowed to connect to %1.</source> <source>&lt;p&gt;Access denied due to security considerations.&lt;/p&gt;&lt;p&gt;You are not allowed to connect to %1.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="540"/> <location filename="browser.hxx" line="541"/>
<source>%1 - %2</source> <source>%1 - %2</source>
<comment>statusbar actionForward_hovered %1=url %2=title</comment> <comment>statusbar actionForward_hovered %1=url %2=title</comment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="604"/> <location filename="browser.hxx" line="605"/>
<source>About</source> <source>About</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="605"/> <location filename="browser.hxx" line="606"/>
<source>SwissSurfer %1 (%2) <source>SwissSurfer %1 (%2)
%3 %3
@ -321,22 +321,22 @@ Compiled: qt-%5</oldsource>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="654"/> <location filename="browser.hxx" line="655"/>
<source>%1</source> <source>%1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="1035"/> <location filename="browser.hxx" line="1036"/>
<source>Save File As ...</source> <source>Save File As ...</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="1090"/> <location filename="browser.hxx" line="1091"/>
<source>authentication required</source> <source>authentication required</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="1102"/> <location filename="browser.hxx" line="1103"/>
<source>ssl error</source> <source>ssl error</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -541,12 +541,12 @@ p, li { white-space: pre-wrap; }
<context> <context>
<name>QMessageBox</name> <name>QMessageBox</name>
<message> <message>
<location filename="smartcardauth.hxx" line="230"/> <location filename="smartcardauth.hxx" line="221"/>
<source>Wrong PIN</source> <source>Wrong PIN</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="smartcardauth.hxx" line="231"/> <location filename="smartcardauth.hxx" line="222"/>
<source>Authentication failed, please try again.</source> <source>Authentication failed, please try again.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -561,7 +561,7 @@ Options:
-k, --kiosk no url bar -k, --kiosk no url bar
if you sepcify -k and -s, -k must be first if you sepcify -k and -s, -k must be first
-n, --no-settings don&apos;t load or store any settings -n, --no-settings don&apos;t load or store any settings
--no-login don&apos;t ask for smartcard password --login ask for smartcard password at startup
-l, --lib &lt;file&gt; path to file libengine_act.so -l, --lib &lt;file&gt; path to file libengine_act.so
-s, --settings &lt;file&gt; -s, --settings &lt;file&gt;
load settings from &lt;file&gt; load settings from &lt;file&gt;
@ -577,6 +577,28 @@ Environment:
PROXY_PORT proxy port number (actual: %3) PROXY_PORT proxy port number (actual: %3)
PROXY_HOST proxy host name (actual: %4) PROXY_HOST proxy host name (actual: %4)
</source> </source>
<oldsource>Usage: %1 [OPTIONS...] [&lt;url&gt; ...]
Options:
-h, --help show this help text
-k, --kiosk no url bar
if you sepcify -k and -s, -k must be first
-n, --no-settings don&apos;t load or store any settings
--no-login don&apos;t ask for smartcard password
-l, --lib &lt;file&gt; path to file libengine_act.so
-s, --settings &lt;file&gt;
load settings from &lt;file&gt;
if you sepcify -k and -s, -k must be first
-c, --cert &lt;file&gt; load local client certificate from &lt;file&gt;
-y, --key &lt;file&gt; load local certificate key from &lt;file&gt;
-m, --mime &lt;mime&gt; &lt;ext&gt; &lt;tool&gt;
start &lt;tool&gt; for mimetype &lt;mime&gt;
&lt;url&gt; optional full URL
Environment:
LANGUAGE &quot;de&quot;, &quot;en&quot;, ... (actual: %5)
PROXY_TYPE &quot;http&quot; or &quot;socks&quot; or &quot;&quot; (actual: %2)
PROXY_PORT proxy port number (actual: %3)
PROXY_HOST proxy host name (actual: %4)
</oldsource>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>

@ -232,82 +232,82 @@
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="434"/> <location filename="browser.hxx" line="435"/>
<source>Reading: %1</source> <source>Reading: %1</source>
<oldsource>Reading: %1%</oldsource> <oldsource>Reading: %1%</oldsource>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="449"/> <location filename="browser.hxx" line="450"/>
<source>Zoom: %1%</source> <source>Zoom: %1%</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="436"/> <location filename="browser.hxx" line="437"/>
<source>Illegal URL: %1</source> <source>Illegal URL: %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="500"/> <location filename="browser.hxx" line="501"/>
<source>Print Document</source> <source>Print Document</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="521"/> <location filename="browser.hxx" line="522"/>
<source>%1 - %2</source> <source>%1 - %2</source>
<oldsource>Back to %1 - %2</oldsource> <oldsource>Back to %1 - %2</oldsource>
<comment>statusbar actionBack_hovered %1=url %2=title</comment> <comment>statusbar actionBack_hovered %1=url %2=title</comment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="659"/> <location filename="browser.hxx" line="660"/>
<source>Info: %1</source> <source>Info: %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="672"/> <location filename="browser.hxx" line="673"/>
<source>done.</source> <source>done.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="672"/> <location filename="browser.hxx" line="673"/>
<source>page load error.</source> <source>page load error.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="925"/> <location filename="browser.hxx" line="926"/>
<source>%1</source> <source>%1</source>
<comment>statusbar for hovered link %1=url</comment> <comment>statusbar for hovered link %1=url</comment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="425"/> <location filename="browser.hxx" line="426"/>
<source>Forbidden: %1</source> <source>Forbidden: %1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="426"/> <location filename="browser.hxx" line="427"/>
<source>Access Denied</source> <source>Access Denied</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="427"/> <location filename="browser.hxx" line="428"/>
<source>&lt;p&gt;Access denied due to security considerations.&lt;/p&gt;&lt;p&gt;You are not allowed to connect to %1.</source> <source>&lt;p&gt;Access denied due to security considerations.&lt;/p&gt;&lt;p&gt;You are not allowed to connect to %1.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="540"/> <location filename="browser.hxx" line="541"/>
<source>%1 - %2</source> <source>%1 - %2</source>
<comment>statusbar actionForward_hovered %1=url %2=title</comment> <comment>statusbar actionForward_hovered %1=url %2=title</comment>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="604"/> <location filename="browser.hxx" line="605"/>
<source>About</source> <source>About</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="605"/> <location filename="browser.hxx" line="606"/>
<source>SwissSurfer %1 (%2) <source>SwissSurfer %1 (%2)
%3 %3
@ -321,22 +321,22 @@ Compiled: qt-%5</oldsource>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="654"/> <location filename="browser.hxx" line="655"/>
<source>%1</source> <source>%1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="1035"/> <location filename="browser.hxx" line="1036"/>
<source>Save File As ...</source> <source>Save File As ...</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="1090"/> <location filename="browser.hxx" line="1091"/>
<source>authentication required</source> <source>authentication required</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="browser.hxx" line="1102"/> <location filename="browser.hxx" line="1103"/>
<source>ssl error</source> <source>ssl error</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -541,12 +541,12 @@ p, li { white-space: pre-wrap; }
<context> <context>
<name>QMessageBox</name> <name>QMessageBox</name>
<message> <message>
<location filename="smartcardauth.hxx" line="230"/> <location filename="smartcardauth.hxx" line="221"/>
<source>Wrong PIN</source> <source>Wrong PIN</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>
<location filename="smartcardauth.hxx" line="231"/> <location filename="smartcardauth.hxx" line="222"/>
<source>Authentication failed, please try again.</source> <source>Authentication failed, please try again.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
@ -561,7 +561,7 @@ Options:
-k, --kiosk no url bar -k, --kiosk no url bar
if you sepcify -k and -s, -k must be first if you sepcify -k and -s, -k must be first
-n, --no-settings don&apos;t load or store any settings -n, --no-settings don&apos;t load or store any settings
--no-login don&apos;t ask for smartcard password --login ask for smartcard password at startup
-l, --lib &lt;file&gt; path to file libengine_act.so -l, --lib &lt;file&gt; path to file libengine_act.so
-s, --settings &lt;file&gt; -s, --settings &lt;file&gt;
load settings from &lt;file&gt; load settings from &lt;file&gt;
@ -577,6 +577,28 @@ Environment:
PROXY_PORT proxy port number (actual: %3) PROXY_PORT proxy port number (actual: %3)
PROXY_HOST proxy host name (actual: %4) PROXY_HOST proxy host name (actual: %4)
</source> </source>
<oldsource>Usage: %1 [OPTIONS...] [&lt;url&gt; ...]
Options:
-h, --help show this help text
-k, --kiosk no url bar
if you sepcify -k and -s, -k must be first
-n, --no-settings don&apos;t load or store any settings
--no-login don&apos;t ask for smartcard password
-l, --lib &lt;file&gt; path to file libengine_act.so
-s, --settings &lt;file&gt;
load settings from &lt;file&gt;
if you sepcify -k and -s, -k must be first
-c, --cert &lt;file&gt; load local client certificate from &lt;file&gt;
-y, --key &lt;file&gt; load local certificate key from &lt;file&gt;
-m, --mime &lt;mime&gt; &lt;ext&gt; &lt;tool&gt;
start &lt;tool&gt; for mimetype &lt;mime&gt;
&lt;url&gt; optional full URL
Environment:
LANGUAGE &quot;de&quot;, &quot;en&quot;, ... (actual: %5)
PROXY_TYPE &quot;http&quot; or &quot;socks&quot; or &quot;&quot; (actual: %2)
PROXY_PORT proxy port number (actual: %3)
PROXY_HOST proxy host name (actual: %4)
</oldsource>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message> <message>

Loading…
Cancel
Save