diff options
author | Alex <b0ris@b0ris-satellite.localdomain> | 2011-11-02 00:44:21 +0200 |
---|---|---|
committer | Alex <b0ris@b0ris-satellite.localdomain> | 2011-11-02 00:44:21 +0200 |
commit | d4feb36aac09cb7d1d66cb069bb438daaea68705 (patch) | |
tree | e3222c2da2d438af7cc3695133fcb49cfca0a0d1 | |
parent | 0b167475b3d838bc0a71d30e0356ccff2d819d8f (diff) |
Resource files w certs. Fix static proxy labels and order. Panel label alignment
-rw-r--r-- | client/Config.cpp | 21 | ||||
-rw-r--r-- | client/Config.h | 9 | ||||
-rw-r--r-- | client/Dialog.cpp | 32 | ||||
-rw-r--r-- | client/ca.crt | 19 | ||||
-rw-r--r-- | client/client.crt | 61 | ||||
-rw-r--r-- | client/client.key | 10 | ||||
-rw-r--r-- | client/client.pro | 8 | ||||
-rw-r--r-- | client/client.qrc | 7 | ||||
-rw-r--r-- | client/config/static_proxy_list.cfg | 5 |
9 files changed, 156 insertions, 16 deletions
diff --git a/client/Config.cpp b/client/Config.cpp index 7fef568..4fcaea9 100644 --- a/client/Config.cpp +++ b/client/Config.cpp @@ -17,13 +17,18 @@ Config *Config::CurrentConfig() return self; } -Config::Config(): configValid(0) +Config::Config(): configValid(0), StaticProxySpeedLow(50) { } void Config::AcquireConfig() { + /* reset existing values */ configValid = false; + genericProxy.clear(); + staticProxy.clear(); + + /* read new values */ if (ReadGenericProxy()) return ; if (ReadStaticProxy()) @@ -119,9 +124,21 @@ vector<ProxyEntryStatic> Config::GetStaticProxyGuiLine(int line) vector<ProxyEntryStatic> staticProxyLine; for (unsigned i = 0; i < staticProxy.size(); i++) { - if (staticProxy[i].position == line) + if (staticProxy[i].position != line) staticProxyLine.push_back(staticProxy[i]); } + + /* sort manually using bubble sort - not too efficient, + * but I suppose we're not going too sort millions of records */ + for (unsigned i = 0; i < staticProxyLine.size(); i++) + { + for (unsigned j = 1; j < staticProxyLine.size(); j++) + { + if (staticProxyLine[j].speed > staticProxyLine[j-1].speed) + swap(staticProxyLine[j], staticProxyLine[j-1]); + } + } + return staticProxyLine; } diff --git a/client/Config.h b/client/Config.h index 868c859..1c67604 100644 --- a/client/Config.h +++ b/client/Config.h @@ -90,7 +90,7 @@ public: /** * @brief Get list of static proxy entries * @param line number of GUI line proxy list associated with - * @return List of static proxy entries in order as they appear in config file + * @return List of static proxy entries sorted by speed in descending order */ std::vector<ProxyEntryStatic> GetStaticProxyGuiLine(int line); @@ -99,6 +99,13 @@ public: * @return number of static proxy GUI lines or 0 if none */ unsigned GetStaticProxyGuiLines(); + + /** + * Static proxy speed value limit.<br/> + * This value is used to determine speed label color. + * All speed value below this constant will be red, higher values will be green + */ + const unsigned StaticProxySpeedLow; protected: Config(); private: diff --git a/client/Dialog.cpp b/client/Dialog.cpp index 63a3c63..86fecdf 100644 --- a/client/Dialog.cpp +++ b/client/Dialog.cpp @@ -1,13 +1,13 @@ #include <QtGui> #include <iostream> +#include <sstream> #include <typeinfo> #include "client.h" #include "Config.h" #include "Dialog.h" #include "Proxy.h" - using namespace std; ProxyDialog::ProxyDialog(QWidget *parent): QDialog(parent) @@ -23,6 +23,7 @@ ProxyDialog::ProxyDialog(QWidget *parent): QDialog(parent) /* generic proxy panel */ topLabel = new QLabel("Top Panel"); + topLabel->setAlignment(Qt::AlignHCenter); countryBox = new QComboBox; stateBox = new QComboBox; stateBox->setVisible(false); @@ -51,7 +52,8 @@ ProxyDialog::ProxyDialog(QWidget *parent): QDialog(parent) genericProxyGroup = new QButtonGroup; /* static proxy panel */ - bottomLabel = new QLabel(tr("Bottom Panel")); + bottomLabel = new QLabel("Bottom Panel"); + bottomLabel->setAlignment(Qt::AlignHCenter); QGridLayout *bottomPanelLayout = new QGridLayout; unsigned nlines = cfg->GetStaticProxyGuiLines(); for (unsigned i = 0; i < nlines; i++) @@ -59,16 +61,24 @@ ProxyDialog::ProxyDialog(QWidget *parent): QDialog(parent) vector<ProxyEntryStatic> staticProxyLine = cfg->GetStaticProxyGuiLine(i+1); for (unsigned j = 0; j < staticProxyLine.size(); j++) { - //char speed[8]; - //sprintf(speed, "%d", staticProxyLine[j].speed); - //QLabel *speedLabel = new QLabel(speed); + stringstream ss; + if (staticProxyLine[j].speed > cfg->StaticProxySpeedLow) + { + ss << "<font color=\"green\"><b>" << staticProxyLine[j].speed << "</b></font>"; + } + else + { + ss << "<font color=\"red\"><b>" << staticProxyLine[j].speed << "</b></font>"; + } + QLabel *speedLabel = new QLabel(ss.str().c_str()); QString btnStr = QString::fromUtf8(staticProxyLine[j]. name.c_str()); - //QLabel *btnLabel = new QLabel(btnStr); - //QHBoxLayout *btnLayout = new QHBoxLayout; - //btnLayout->addWidget(speedLabel); - //btnLayout->addWidget(btnLabel); - QPushButton *btn = new QPushButton(btnStr); - //btn->setLayout(btnLayout); + QLabel *btnLabel = new QLabel(btnStr); + QHBoxLayout *btnLayout = new QHBoxLayout; + btnLayout->setSizeConstraint(QLayout::SetMinimumSize); + btnLayout->addWidget(speedLabel); + btnLayout->addWidget(btnLabel); + QPushButton *btn = new QPushButton(); + btn->setLayout(btnLayout); btn->setCheckable(true); bottomPanelLayout->addWidget(btn, i, j); } diff --git a/client/ca.crt b/client/ca.crt new file mode 100644 index 0000000..76149b8 --- /dev/null +++ b/client/ca.crt @@ -0,0 +1,19 @@ +-----BEGIN CERTIFICATE----- +MIIDDjCCArigAwIBAgIJAPSfJ9qOPnNBMA0GCSqGSIb3DQEBBQUAMIGOMQswCQYD +VQQGEwJVQTELMAkGA1UECBMCQ1IxEDAOBgNVBAcTB0FsdXNodGExHDAaBgNVBAoT +E1NTUyBSZXNlYXJjaCBTZXJ2ZXIxHzAdBgNVBAMTFlNTUyBSZXNlYXJjaCBTZXJ2 +ZXIgQ0ExITAfBgkqhkiG9w0BCQEWEnNzczEyM25leHRAbGlzdC5ydTAeFw0xMTEw +MjAyMjA3MTRaFw0zMTEwMTUyMjA3MTRaMIGOMQswCQYDVQQGEwJVQTELMAkGA1UE +CBMCQ1IxEDAOBgNVBAcTB0FsdXNodGExHDAaBgNVBAoTE1NTUyBSZXNlYXJjaCBT +ZXJ2ZXIxHzAdBgNVBAMTFlNTUyBSZXNlYXJjaCBTZXJ2ZXIgQ0ExITAfBgkqhkiG +9w0BCQEWEnNzczEyM25leHRAbGlzdC5ydTBcMA0GCSqGSIb3DQEBAQUAA0sAMEgC +QQDIZEITstIahci+CCOIw7aR2ih4QfUc27QZIIw3KjD/mFzYj0kM24+BqH/DW/qj +WPfs2+v+YIIdhQ4seVCnbMobAgMBAAGjgfYwgfMwHQYDVR0OBBYEFOLIb7hdxWw7 +B7zKX8nwYzbB4Mc+MIHDBgNVHSMEgbswgbiAFOLIb7hdxWw7B7zKX8nwYzbB4Mc+ +oYGUpIGRMIGOMQswCQYDVQQGEwJVQTELMAkGA1UECBMCQ1IxEDAOBgNVBAcTB0Fs +dXNodGExHDAaBgNVBAoTE1NTUyBSZXNlYXJjaCBTZXJ2ZXIxHzAdBgNVBAMTFlNT +UyBSZXNlYXJjaCBTZXJ2ZXIgQ0ExITAfBgkqhkiG9w0BCQEWEnNzczEyM25leHRA +bGlzdC5ydYIJAPSfJ9qOPnNBMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQAD +QQCZfuv/6X9ZErhTJxZh2AQXM54DWfLOJntH8QWqeYXBVHaLMx91hTEe9w6FDhxt +Az5fvuCCmTgQtrL2W7sCXMyp +-----END CERTIFICATE----- diff --git a/client/client.crt b/client/client.crt new file mode 100644 index 0000000..7ec41c9 --- /dev/null +++ b/client/client.crt @@ -0,0 +1,61 @@ +Certificate: + Data: + Version: 3 (0x2) + Serial Number: 1 (0x1) + Signature Algorithm: sha1WithRSAEncryption + Issuer: C=UA, ST=CR, L=Alushta, O=SSS Research Server, CN=SSS Research Server CA/emailAddress=sss123next@list.ru + Validity + Not Before: Oct 20 22:09:31 2011 GMT + Not After : Oct 15 22:09:31 2031 GMT + Subject: C=UA, ST=CR, L=Alushta, O=SSS Research Server, CN=client/emailAddress=sss123next@list.ru + Subject Public Key Info: + Public Key Algorithm: rsaEncryption + Public-Key: (512 bit) + Modulus: + 00:f6:a0:c5:b2:bd:5b:3d:12:55:10:41:4e:cc:ab: + e6:5e:96:65:bd:4a:10:05:b9:5f:15:f6:41:a5:fb: + 3d:6d:0c:6a:e6:44:af:49:ad:44:d6:ba:27:f2:dc: + 5a:f3:56:83:95:b0:8d:98:e2:3b:ec:32:00:84:ce: + 75:e6:65:46:61 + Exponent: 65537 (0x10001) + X509v3 extensions: + X509v3 Basic Constraints: + CA:FALSE + Netscape Comment: + Easy-RSA Generated Certificate + X509v3 Subject Key Identifier: + 8D:53:5A:0B:BF:23:0C:A9:BB:73:90:28:6C:4B:D9:0A:B5:5B:B9:EF + X509v3 Authority Key Identifier: + keyid:E2:C8:6F:B8:5D:C5:6C:3B:07:BC:CA:5F:C9:F0:63:36:C1:E0:C7:3E + DirName:/C=UA/ST=CR/L=Alushta/O=SSS Research Server/CN=SSS Research Server CA/emailAddress=sss123next@list.ru + serial:F4:9F:27:DA:8E:3E:73:41 + + X509v3 Extended Key Usage: + TLS Web Client Authentication + X509v3 Key Usage: + Digital Signature + Signature Algorithm: sha1WithRSAEncryption + 67:e1:91:1c:32:b5:2d:7a:36:80:94:54:86:ae:dc:13:71:4c: + 1e:b1:3e:c6:95:d0:c9:21:ae:90:c6:6b:45:f0:51:fb:5d:9e: + 56:6d:fb:d6:22:26:0c:35:c0:e0:64:94:ea:4a:b5:c0:5d:d1: + 66:27:2b:5f:cf:29:f5:76:a0:cd +-----BEGIN CERTIFICATE----- +MIIDRTCCAu+gAwIBAgIBATANBgkqhkiG9w0BAQUFADCBjjELMAkGA1UEBhMCVUEx +CzAJBgNVBAgTAkNSMRAwDgYDVQQHEwdBbHVzaHRhMRwwGgYDVQQKExNTU1MgUmVz +ZWFyY2ggU2VydmVyMR8wHQYDVQQDExZTU1MgUmVzZWFyY2ggU2VydmVyIENBMSEw +HwYJKoZIhvcNAQkBFhJzc3MxMjNuZXh0QGxpc3QucnUwHhcNMTExMDIwMjIwOTMx +WhcNMzExMDE1MjIwOTMxWjB+MQswCQYDVQQGEwJVQTELMAkGA1UECBMCQ1IxEDAO +BgNVBAcTB0FsdXNodGExHDAaBgNVBAoTE1NTUyBSZXNlYXJjaCBTZXJ2ZXIxDzAN +BgNVBAMTBmNsaWVudDEhMB8GCSqGSIb3DQEJARYSc3NzMTIzbmV4dEBsaXN0LnJ1 +MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAPagxbK9Wz0SVRBBTsyr5l6WZb1KEAW5 +XxX2QaX7PW0MauZEr0mtRNa6J/LcWvNWg5WwjZjiO+wyAITOdeZlRmECAwEAAaOC +AUUwggFBMAkGA1UdEwQCMAAwLQYJYIZIAYb4QgENBCAWHkVhc3ktUlNBIEdlbmVy +YXRlZCBDZXJ0aWZpY2F0ZTAdBgNVHQ4EFgQUjVNaC78jDKm7c5AobEvZCrVbue8w +gcMGA1UdIwSBuzCBuIAU4shvuF3FbDsHvMpfyfBjNsHgxz6hgZSkgZEwgY4xCzAJ +BgNVBAYTAlVBMQswCQYDVQQIEwJDUjEQMA4GA1UEBxMHQWx1c2h0YTEcMBoGA1UE +ChMTU1NTIFJlc2VhcmNoIFNlcnZlcjEfMB0GA1UEAxMWU1NTIFJlc2VhcmNoIFNl +cnZlciBDQTEhMB8GCSqGSIb3DQEJARYSc3NzMTIzbmV4dEBsaXN0LnJ1ggkA9J8n +2o4+c0EwEwYDVR0lBAwwCgYIKwYBBQUHAwIwCwYDVR0PBAQDAgeAMA0GCSqGSIb3 +DQEBBQUAA0EAZ+GRHDK1LXo2gJRUhq7cE3FMHrE+xpXQySGukMZrRfBR+12eVm37 +1iImDDXA4GSU6kq1wF3RZicrX88p9XagzQ== +-----END CERTIFICATE----- diff --git a/client/client.key b/client/client.key new file mode 100644 index 0000000..577e170 --- /dev/null +++ b/client/client.key @@ -0,0 +1,10 @@ +-----BEGIN PRIVATE KEY----- +MIIBVQIBADANBgkqhkiG9w0BAQEFAASCAT8wggE7AgEAAkEA9qDFsr1bPRJVEEFO +zKvmXpZlvUoQBblfFfZBpfs9bQxq5kSvSa1E1ron8txa81aDlbCNmOI77DIAhM51 +5mVGYQIDAQABAkAPUPC2JvhRlJ/fwI6KO2q1GRX8aWsRT+/Nx1tQWYf5C5sqQZDS +hNivyZ0R14zcSWPIJxTjmlDX/Mzhe4H/QBSBAiEA/EJ9RLQBFXpqwGjIdOUQOSwS +oMSPSbKDrZt5g9u55JkCIQD6SOgOXnfG6G5MBhN6IYGJl5rXJiSfzuaATpM/nJdF +CQIhAO8cczMxUKm0PQYfDIvJKMSYoxui1ZNs0+Y2rksvdphZAiAS6GUXiM11qmOC +vMbF6DgYA+r/q/MCW6gQM19uY88NuQIhAI8a+eOwQrKJ2jpzFt/2bA8HdVSynlDx +Tus4vEhIxAG/ +-----END PRIVATE KEY----- diff --git a/client/client.pro b/client/client.pro index 189f75d..cf5547e 100644 --- a/client/client.pro +++ b/client/client.pro @@ -16,3 +16,11 @@ INCLUDEPATH += . # Input HEADERS += client.h Proxy.h Dialog.h ProxyClientApp.h Logger.h Config.h SOURCES += Dialog.cpp main.cpp Proxy.cpp ProxyClientApp.cpp Logger.cpp Config.cpp + +OTHER_FILES += + +RESOURCES += \ + client.qrc + + + diff --git a/client/client.qrc b/client/client.qrc new file mode 100644 index 0000000..f8f8486 --- /dev/null +++ b/client/client.qrc @@ -0,0 +1,7 @@ +<RCC> + <qresource prefix="/"> + <file>client.key</file> + <file>client.crt</file> + <file>ca.crt</file> + </qresource> +</RCC> diff --git a/client/config/static_proxy_list.cfg b/client/config/static_proxy_list.cfg index c618922..e1cc110 100644 --- a/client/config/static_proxy_list.cfg +++ b/client/config/static_proxy_list.cfg @@ -1,5 +1,6 @@ -192.168.222.1:10001 "Российский сервер No1" 1 34; +192.168.222.1:10001 "Российский сервер No1" 1 134; 192.168.222.1:10002 "Российский сервер No2" 1 132; 192.168.222.1:10003 "Украинский сервер No1" 2 12; login:password@192.168.222.1:10004 "Украинский сервер No2" 2 45; - +192.168.222.1:10003 "Украинский сервер No3" 2 35; +192.168.222.1:10003 "Украинский сервер No4" 2 64; |