summaryrefslogtreecommitdiff
path: root/client
diff options
context:
space:
mode:
authorAlex <b0ris@b0ris-satellite.localdomain>2011-11-02 00:44:21 +0200
committerAlex <b0ris@b0ris-satellite.localdomain>2011-11-02 00:44:21 +0200
commitd4feb36aac09cb7d1d66cb069bb438daaea68705 (patch)
treee3222c2da2d438af7cc3695133fcb49cfca0a0d1 /client
parent0b167475b3d838bc0a71d30e0356ccff2d819d8f (diff)
Resource files w certs. Fix static proxy labels and order. Panel label alignment
Diffstat (limited to 'client')
-rw-r--r--client/Config.cpp21
-rw-r--r--client/Config.h9
-rw-r--r--client/Dialog.cpp32
-rw-r--r--client/ca.crt19
-rw-r--r--client/client.crt61
-rw-r--r--client/client.key10
-rw-r--r--client/client.pro8
-rw-r--r--client/client.qrc7
-rw-r--r--client/config/static_proxy_list.cfg5
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;