diff options
author | Mike Buland <eichlan@xagasoft.com> | 2011-05-17 04:18:13 +0000 |
---|---|---|
committer | Mike Buland <eichlan@xagasoft.com> | 2011-05-17 04:18:13 +0000 |
commit | 6aefa6632023c99c5b91bae0e099df94fa69d890 (patch) | |
tree | 6ac83b347cc70dca827c887f0046924dabec042d /src | |
parent | efcbdb7a0347b4399cbabacf3cbea432eeafb17b (diff) | |
download | libgats-6aefa6632023c99c5b91bae0e099df94fa69d890.tar.gz libgats-6aefa6632023c99c5b91bae0e099df94fa69d890.tar.bz2 libgats-6aefa6632023c99c5b91bae0e099df94fa69d890.tar.xz libgats-6aefa6632023c99c5b91bae0e099df94fa69d890.zip |
GatsCon now supports proxying, and way better than qtbenc ever did. Not only
does it proxy, but you can inject your own messages going to the client or host.
Pretty slick, really. Next up, reading and creating files.
Diffstat (limited to 'src')
-rw-r--r-- | src/gatscon/clientthread.cpp | 2 | ||||
-rw-r--r-- | src/gatscon/clientwidget.cpp | 17 | ||||
-rw-r--r-- | src/gatscon/clientwidget.h | 2 | ||||
-rw-r--r-- | src/gatscon/mainwnd.cpp | 25 | ||||
-rw-r--r-- | src/gatscon/proxythread.cpp | 108 | ||||
-rw-r--r-- | src/gatscon/proxythread.h | 60 | ||||
-rw-r--r-- | src/gatscon/proxywidget.cpp | 115 | ||||
-rw-r--r-- | src/gatscon/proxywidget.h | 30 | ||||
-rw-r--r-- | src/gatscon/proxywidget.ui | 181 | ||||
-rw-r--r-- | src/gatscon/setupproxydlg.cpp | 27 | ||||
-rw-r--r-- | src/gatscon/setupproxydlg.h | 18 | ||||
-rw-r--r-- | src/gatscon/setupproxydlg.ui | 112 |
12 files changed, 682 insertions, 15 deletions
diff --git a/src/gatscon/clientthread.cpp b/src/gatscon/clientthread.cpp index b1dc4d0..4c7b72a 100644 --- a/src/gatscon/clientthread.cpp +++ b/src/gatscon/clientthread.cpp | |||
@@ -30,7 +30,7 @@ void ClientThread::run() | |||
30 | { | 30 | { |
31 | Gats::Object *pObj = gsCli.readObject(); | 31 | Gats::Object *pObj = gsCli.readObject(); |
32 | if( pObj == NULL ) | 32 | if( pObj == NULL ) |
33 | break; | 33 | continue; |
34 | 34 | ||
35 | emit recv( pObj ); | 35 | emit recv( pObj ); |
36 | } | 36 | } |
diff --git a/src/gatscon/clientwidget.cpp b/src/gatscon/clientwidget.cpp index 6039035..0ea04a3 100644 --- a/src/gatscon/clientwidget.cpp +++ b/src/gatscon/clientwidget.cpp | |||
@@ -1,5 +1,4 @@ | |||
1 | #include "clientwidget.h" | 1 | #include "clientwidget.h" |
2 | #include "connectdlg.h" | ||
3 | #include "clientthread.h" | 2 | #include "clientthread.h" |
4 | 3 | ||
5 | #include "gatstotree.h" | 4 | #include "gatstotree.h" |
@@ -11,23 +10,17 @@ | |||
11 | 10 | ||
12 | using namespace Bu; | 11 | using namespace Bu; |
13 | 12 | ||
14 | ClientWidget::ClientWidget( QWidget *pParent ) : | 13 | ClientWidget::ClientWidget( QWidget *pParent, const QByteArray &baHost, |
14 | int iPort ) : | ||
15 | QWidget( pParent ) | 15 | QWidget( pParent ) |
16 | { | 16 | { |
17 | setupUi( this ); | 17 | setupUi( this ); |
18 | 18 | ||
19 | { | 19 | pCli = new ClientThread( this, baHost, iPort ); |
20 | ConnectDlg dlg( this ); | ||
21 | dlg.exec(); | ||
22 | |||
23 | sio << "Connect: " << dlg.getHostname().constData() << ":" | ||
24 | << dlg.getPort() << sio.nl; | ||
25 | |||
26 | pCli = new ClientThread( this, dlg.getHostname(), dlg.getPort() ); | ||
27 | } | ||
28 | pCli->start(); | ||
29 | connect( pCli, SIGNAL(recv( Gats::Object *)), | 20 | connect( pCli, SIGNAL(recv( Gats::Object *)), |
30 | this, SLOT(recv(Gats::Object *)), Qt::QueuedConnection ); | 21 | this, SLOT(recv(Gats::Object *)), Qt::QueuedConnection ); |
22 | |||
23 | pCli->start(); | ||
31 | } | 24 | } |
32 | 25 | ||
33 | ClientWidget::~ClientWidget() | 26 | ClientWidget::~ClientWidget() |
diff --git a/src/gatscon/clientwidget.h b/src/gatscon/clientwidget.h index 21fb1b7..9ce2798 100644 --- a/src/gatscon/clientwidget.h +++ b/src/gatscon/clientwidget.h | |||
@@ -12,7 +12,7 @@ class ClientWidget : public QWidget, protected Ui::ClientWidget | |||
12 | { | 12 | { |
13 | Q_OBJECT; | 13 | Q_OBJECT; |
14 | public: | 14 | public: |
15 | ClientWidget( QWidget *pParent=NULL ); | 15 | ClientWidget( QWidget *pParent, const QByteArray &baHost, int iPort ); |
16 | virtual ~ClientWidget(); | 16 | virtual ~ClientWidget(); |
17 | 17 | ||
18 | public slots: | 18 | public slots: |
diff --git a/src/gatscon/mainwnd.cpp b/src/gatscon/mainwnd.cpp index c86e1c2..f20a531 100644 --- a/src/gatscon/mainwnd.cpp +++ b/src/gatscon/mainwnd.cpp | |||
@@ -1,5 +1,10 @@ | |||
1 | #include "mainwnd.h" | 1 | #include "mainwnd.h" |
2 | |||
2 | #include "clientwidget.h" | 3 | #include "clientwidget.h" |
4 | #include "proxywidget.h" | ||
5 | |||
6 | #include "connectdlg.h" | ||
7 | #include "setupproxydlg.h" | ||
3 | 8 | ||
4 | MainWnd::MainWnd() | 9 | MainWnd::MainWnd() |
5 | { | 10 | { |
@@ -12,11 +17,29 @@ MainWnd::~MainWnd() | |||
12 | 17 | ||
13 | void MainWnd::connect() | 18 | void MainWnd::connect() |
14 | { | 19 | { |
15 | setCentralWidget( new ClientWidget( this ) ); | 20 | ConnectDlg dlg( this ); |
21 | if( dlg.exec() == QDialog::Accepted ) | ||
22 | { | ||
23 | setCentralWidget( | ||
24 | new ClientWidget( | ||
25 | this, dlg.getHostname(), dlg.getPort() | ||
26 | ) | ||
27 | ); | ||
28 | } | ||
16 | } | 29 | } |
17 | 30 | ||
18 | void MainWnd::proxy() | 31 | void MainWnd::proxy() |
19 | { | 32 | { |
33 | SetupProxyDlg dlg( this ); | ||
34 | |||
35 | if( dlg.exec() == QDialog::Accepted ) | ||
36 | { | ||
37 | setCentralWidget( | ||
38 | new ProxyWidget( | ||
39 | this, dlg.getPortIn(), dlg.getHostOut(), dlg.getPortOut() | ||
40 | ) | ||
41 | ); | ||
42 | } | ||
20 | } | 43 | } |
21 | 44 | ||
22 | void MainWnd::open() | 45 | void MainWnd::open() |
diff --git a/src/gatscon/proxythread.cpp b/src/gatscon/proxythread.cpp new file mode 100644 index 0000000..574b56b --- /dev/null +++ b/src/gatscon/proxythread.cpp | |||
@@ -0,0 +1,108 @@ | |||
1 | #include "proxythread.h" | ||
2 | |||
3 | #include <gats/types.h> | ||
4 | |||
5 | #include <bu/tcpsocket.h> | ||
6 | #include <bu/tcpserversocket.h> | ||
7 | #include <bu/sio.h> | ||
8 | #include <bu/membuf.h> | ||
9 | |||
10 | using namespace Bu; | ||
11 | |||
12 | ProxyThread::ProxyThread( QObject *pParent, int iPortIn, | ||
13 | const QByteArray &baHostOut, int iPortOut ) : | ||
14 | QThread( pParent ), | ||
15 | pHost( NULL ), | ||
16 | iPortIn( iPortIn ), | ||
17 | baHostOut( baHostOut ), | ||
18 | iPortOut( iPortOut ), | ||
19 | gsCli( ssCli ) | ||
20 | { | ||
21 | pHost = new ProxyHostThread( pParent, this ); | ||
22 | } | ||
23 | |||
24 | ProxyThread::~ProxyThread() | ||
25 | { | ||
26 | } | ||
27 | |||
28 | void ProxyThread::send( Gats::Object *pObj ) | ||
29 | { | ||
30 | MemBuf bg; | ||
31 | Gats::GatsStream gs( bg ); | ||
32 | gs.writeObject( pObj ); | ||
33 | ssCli.write( bg.getString().getStr(), bg.getString().getSize() ); | ||
34 | } | ||
35 | |||
36 | void ProxyThread::run() | ||
37 | { | ||
38 | int iSockIn; | ||
39 | |||
40 | { | ||
41 | TcpServerSocket tsIn( iPortIn ); | ||
42 | do | ||
43 | { | ||
44 | iSockIn = tsIn.accept( 5 ); | ||
45 | } while( iSockIn < 0 ); | ||
46 | } | ||
47 | |||
48 | emit gotConnection(); | ||
49 | |||
50 | ssCli.setStream( new TcpSocket( iSockIn ) ); | ||
51 | ssCli.setBlocking( true ); | ||
52 | |||
53 | pHost->setStream( | ||
54 | new TcpSocket( baHostOut.constData(), iPortOut ) | ||
55 | ); | ||
56 | |||
57 | pHost->start(); | ||
58 | |||
59 | while( !ssCli.isEos() ) | ||
60 | { | ||
61 | Gats::Object *pObj = gsCli.readObject(); | ||
62 | if( pObj == NULL ) | ||
63 | continue; | ||
64 | |||
65 | pHost->send( pObj ); | ||
66 | emit recv( pObj ); | ||
67 | } | ||
68 | |||
69 | } | ||
70 | |||
71 | ProxyHostThread::ProxyHostThread( QObject *pParent, ProxyThread *pClient ) : | ||
72 | QThread( pParent ), | ||
73 | pClient( pClient ), | ||
74 | ssHst(), | ||
75 | gsHst( ssHst ) | ||
76 | { | ||
77 | } | ||
78 | |||
79 | ProxyHostThread::~ProxyHostThread() | ||
80 | { | ||
81 | } | ||
82 | |||
83 | void ProxyHostThread::send( Gats::Object *pObj ) | ||
84 | { | ||
85 | MemBuf bg; | ||
86 | Gats::GatsStream gs( bg ); | ||
87 | gs.writeObject( pObj ); | ||
88 | ssHst.write( bg.getString().getStr(), bg.getString().getSize() ); | ||
89 | } | ||
90 | |||
91 | void ProxyHostThread::setStream( Bu::Stream *pStr ) | ||
92 | { | ||
93 | ssHst.setStream( pStr ); | ||
94 | } | ||
95 | |||
96 | void ProxyHostThread::run() | ||
97 | { | ||
98 | while( !ssHst.isEos() ) | ||
99 | { | ||
100 | Gats::Object *pObj = gsHst.readObject(); | ||
101 | if( pObj == NULL ) | ||
102 | continue; | ||
103 | |||
104 | pClient->send( pObj ); | ||
105 | emit recv( pObj ); | ||
106 | } | ||
107 | } | ||
108 | |||
diff --git a/src/gatscon/proxythread.h b/src/gatscon/proxythread.h new file mode 100644 index 0000000..df75046 --- /dev/null +++ b/src/gatscon/proxythread.h | |||
@@ -0,0 +1,60 @@ | |||
1 | #ifndef PROXY_THREAD_H | ||
2 | #define PROXY_THREAD_H | ||
3 | |||
4 | #include <QThread> | ||
5 | |||
6 | #include <bu/streamstack.h> | ||
7 | #include <gats/gatsstream.h> | ||
8 | |||
9 | class ProxyThread : public QThread | ||
10 | { | ||
11 | Q_OBJECT; | ||
12 | public: | ||
13 | ProxyThread( QObject *pParent, int iPortIn, const QByteArray &baHostOut, | ||
14 | int iPortOut ); | ||
15 | virtual ~ProxyThread(); | ||
16 | |||
17 | class ProxyHostThread *pHost; | ||
18 | |||
19 | void send( Gats::Object *pObj ); | ||
20 | |||
21 | signals: | ||
22 | void recv( Gats::Object *pObj ); | ||
23 | void gotConnection(); | ||
24 | |||
25 | protected: | ||
26 | virtual void run(); | ||
27 | |||
28 | private: | ||
29 | int iPortIn; | ||
30 | QByteArray baHostOut; | ||
31 | int iPortOut; | ||
32 | |||
33 | Bu::StreamStack ssCli; | ||
34 | Gats::GatsStream gsCli; | ||
35 | }; | ||
36 | |||
37 | class ProxyHostThread : public QThread | ||
38 | { | ||
39 | Q_OBJECT; | ||
40 | public: | ||
41 | ProxyHostThread( QObject *pParent, ProxyThread *pClient ); | ||
42 | virtual ~ProxyHostThread(); | ||
43 | |||
44 | void send( Gats::Object *pObj ); | ||
45 | |||
46 | void setStream( Bu::Stream *pStr ); | ||
47 | |||
48 | signals: | ||
49 | void recv( Gats::Object *pObj ); | ||
50 | |||
51 | protected: | ||
52 | virtual void run(); | ||
53 | |||
54 | private: | ||
55 | ProxyThread *pClient; | ||
56 | Bu::StreamStack ssHst; | ||
57 | Gats::GatsStream gsHst; | ||
58 | }; | ||
59 | |||
60 | #endif | ||
diff --git a/src/gatscon/proxywidget.cpp b/src/gatscon/proxywidget.cpp new file mode 100644 index 0000000..28bd1fc --- /dev/null +++ b/src/gatscon/proxywidget.cpp | |||
@@ -0,0 +1,115 @@ | |||
1 | #include "proxywidget.h" | ||
2 | #include "proxythread.h" | ||
3 | |||
4 | #include "gatstotree.h" | ||
5 | |||
6 | #include <QMessageBox> | ||
7 | |||
8 | #include <gats/types.h> | ||
9 | #include <bu/sio.h> | ||
10 | |||
11 | using namespace Bu; | ||
12 | |||
13 | ProxyWidget::ProxyWidget( QWidget *pParent, int iPortIn, | ||
14 | const QByteArray baHost, int iPortOut ) : | ||
15 | QWidget( pParent ), | ||
16 | pPrx( NULL ) | ||
17 | { | ||
18 | setupUi( this ); | ||
19 | |||
20 | pPrx = new ProxyThread( this, iPortIn, baHost, iPortOut ); | ||
21 | |||
22 | connect( pPrx, SIGNAL(gotConnection()), | ||
23 | this, SLOT(gotConnection()), Qt::QueuedConnection ); | ||
24 | connect( pPrx, SIGNAL(recv( Gats::Object *)), | ||
25 | this, SLOT(clientRecv(Gats::Object *)), Qt::QueuedConnection ); | ||
26 | connect( pPrx->pHost, SIGNAL(recv( Gats::Object *)), | ||
27 | this, SLOT(hostRecv(Gats::Object *)), Qt::QueuedConnection ); | ||
28 | |||
29 | pPrx->start(); | ||
30 | } | ||
31 | |||
32 | ProxyWidget::~ProxyWidget() | ||
33 | { | ||
34 | } | ||
35 | |||
36 | void ProxyWidget::sendToClient() | ||
37 | { | ||
38 | try | ||
39 | { | ||
40 | Gats::Object *pObj = Gats::Object::strToGats( | ||
41 | leGats->text().toAscii().constData() | ||
42 | ); | ||
43 | sio << "Send: " << *pObj << sio.nl; | ||
44 | QTreeWidgetItem *pIt = new QTreeWidgetItem( | ||
45 | twHistory->invisibleRootItem() | ||
46 | ); | ||
47 | pIt->setText( 0, "proxy -> client" ); | ||
48 | gatsToTree( pIt, pObj ); | ||
49 | pPrx->send( pObj ); | ||
50 | delete pObj; | ||
51 | |||
52 | leGats->setText(""); | ||
53 | leGats->setFocus(); | ||
54 | } | ||
55 | catch( Bu::ExceptionBase &e ) | ||
56 | { | ||
57 | QMessageBox::critical( this, "GatsCon - Error", e.what() ); | ||
58 | } | ||
59 | } | ||
60 | |||
61 | void ProxyWidget::sendToServer() | ||
62 | { | ||
63 | try | ||
64 | { | ||
65 | Gats::Object *pObj = Gats::Object::strToGats( | ||
66 | leGats->text().toAscii().constData() | ||
67 | ); | ||
68 | sio << "Send: " << *pObj << sio.nl; | ||
69 | QTreeWidgetItem *pIt = new QTreeWidgetItem( | ||
70 | twHistory->invisibleRootItem() | ||
71 | ); | ||
72 | pIt->setText( 0, "proxy -> host" ); | ||
73 | gatsToTree( pIt, pObj ); | ||
74 | pPrx->pHost->send( pObj ); | ||
75 | delete pObj; | ||
76 | |||
77 | leGats->setText(""); | ||
78 | leGats->setFocus(); | ||
79 | } | ||
80 | catch( Bu::ExceptionBase &e ) | ||
81 | { | ||
82 | QMessageBox::critical( this, "GatsCon - Error", e.what() ); | ||
83 | } | ||
84 | } | ||
85 | |||
86 | void ProxyWidget::clientRecv( Gats::Object *pObj ) | ||
87 | { | ||
88 | sio << "Recv: " << *pObj << sio.nl; | ||
89 | |||
90 | QTreeWidgetItem *pIt = new QTreeWidgetItem( | ||
91 | twHistory->invisibleRootItem() | ||
92 | ); | ||
93 | pIt->setText( 0, "client -> host" ); | ||
94 | gatsToTree( pIt, pObj ); | ||
95 | delete pObj; | ||
96 | } | ||
97 | |||
98 | void ProxyWidget::hostRecv( Gats::Object *pObj ) | ||
99 | { | ||
100 | sio << "Recv: " << *pObj << sio.nl; | ||
101 | |||
102 | QTreeWidgetItem *pIt = new QTreeWidgetItem( | ||
103 | twHistory->invisibleRootItem() | ||
104 | ); | ||
105 | pIt->setText( 0, "host -> client" ); | ||
106 | gatsToTree( pIt, pObj ); | ||
107 | delete pObj; | ||
108 | } | ||
109 | |||
110 | void ProxyWidget::gotConnection() | ||
111 | { | ||
112 | lwConnect->stop(); | ||
113 | swRoot->setCurrentIndex( 1 ); | ||
114 | } | ||
115 | |||
diff --git a/src/gatscon/proxywidget.h b/src/gatscon/proxywidget.h new file mode 100644 index 0000000..0ef1fd4 --- /dev/null +++ b/src/gatscon/proxywidget.h | |||
@@ -0,0 +1,30 @@ | |||
1 | #ifndef PROXY_WIDGET_H | ||
2 | #define PROXY_WIDGET_H | ||
3 | |||
4 | #include "ui_proxywidget.h" | ||
5 | |||
6 | namespace Gats | ||
7 | { | ||
8 | class Object; | ||
9 | }; | ||
10 | |||
11 | class ProxyWidget : public QWidget, protected Ui::ProxyWidget | ||
12 | { | ||
13 | Q_OBJECT; | ||
14 | public: | ||
15 | ProxyWidget( QWidget *pParent, int iPortIn, const QByteArray baHost, | ||
16 | int iPortOut ); | ||
17 | virtual ~ProxyWidget(); | ||
18 | |||
19 | public slots: | ||
20 | void sendToClient(); | ||
21 | void sendToServer(); | ||
22 | void clientRecv( Gats::Object *pObj ); | ||
23 | void hostRecv( Gats::Object *pObj ); | ||
24 | void gotConnection(); | ||
25 | |||
26 | private: | ||
27 | class ProxyThread *pPrx; | ||
28 | }; | ||
29 | |||
30 | #endif | ||
diff --git a/src/gatscon/proxywidget.ui b/src/gatscon/proxywidget.ui new file mode 100644 index 0000000..995fc73 --- /dev/null +++ b/src/gatscon/proxywidget.ui | |||
@@ -0,0 +1,181 @@ | |||
1 | <?xml version="1.0" encoding="UTF-8"?> | ||
2 | <ui version="4.0"> | ||
3 | <class>ProxyWidget</class> | ||
4 | <widget class="QWidget" name="ProxyWidget"> | ||
5 | <property name="geometry"> | ||
6 | <rect> | ||
7 | <x>0</x> | ||
8 | <y>0</y> | ||
9 | <width>338</width> | ||
10 | <height>300</height> | ||
11 | </rect> | ||
12 | </property> | ||
13 | <property name="windowTitle"> | ||
14 | <string>Form</string> | ||
15 | </property> | ||
16 | <layout class="QVBoxLayout" name="verticalLayout_2"> | ||
17 | <property name="margin"> | ||
18 | <number>0</number> | ||
19 | </property> | ||
20 | <item> | ||
21 | <widget class="QStackedWidget" name="swRoot"> | ||
22 | <property name="currentIndex"> | ||
23 | <number>0</number> | ||
24 | </property> | ||
25 | <widget class="QWidget" name="page"> | ||
26 | <layout class="QVBoxLayout" name="verticalLayout_4"> | ||
27 | <item> | ||
28 | <spacer name="verticalSpacer"> | ||
29 | <property name="orientation"> | ||
30 | <enum>Qt::Vertical</enum> | ||
31 | </property> | ||
32 | <property name="sizeHint" stdset="0"> | ||
33 | <size> | ||
34 | <width>20</width> | ||
35 | <height>40</height> | ||
36 | </size> | ||
37 | </property> | ||
38 | </spacer> | ||
39 | </item> | ||
40 | <item> | ||
41 | <widget class="QLabel" name="label_2"> | ||
42 | <property name="text"> | ||
43 | <string>Listening for connections...</string> | ||
44 | </property> | ||
45 | <property name="alignment"> | ||
46 | <set>Qt::AlignCenter</set> | ||
47 | </property> | ||
48 | </widget> | ||
49 | </item> | ||
50 | <item> | ||
51 | <widget class="LoadingWidget" name="lwConnect" native="true"> | ||
52 | <property name="minimumSize"> | ||
53 | <size> | ||
54 | <width>0</width> | ||
55 | <height>50</height> | ||
56 | </size> | ||
57 | </property> | ||
58 | </widget> | ||
59 | </item> | ||
60 | <item> | ||
61 | <spacer name="verticalSpacer_2"> | ||
62 | <property name="orientation"> | ||
63 | <enum>Qt::Vertical</enum> | ||
64 | </property> | ||
65 | <property name="sizeHint" stdset="0"> | ||
66 | <size> | ||
67 | <width>20</width> | ||
68 | <height>40</height> | ||
69 | </size> | ||
70 | </property> | ||
71 | </spacer> | ||
72 | </item> | ||
73 | </layout> | ||
74 | </widget> | ||
75 | <widget class="QWidget" name="page_2"> | ||
76 | <layout class="QVBoxLayout" name="verticalLayout_3"> | ||
77 | <item> | ||
78 | <widget class="QTreeWidget" name="twHistory"> | ||
79 | <column> | ||
80 | <property name="text"> | ||
81 | <string>Name</string> | ||
82 | </property> | ||
83 | </column> | ||
84 | <column> | ||
85 | <property name="text"> | ||
86 | <string>Type</string> | ||
87 | </property> | ||
88 | </column> | ||
89 | <column> | ||
90 | <property name="text"> | ||
91 | <string>Value</string> | ||
92 | </property> | ||
93 | </column> | ||
94 | </widget> | ||
95 | </item> | ||
96 | <item> | ||
97 | <layout class="QHBoxLayout" name="horizontalLayout"> | ||
98 | <item> | ||
99 | <widget class="QLabel" name="label"> | ||
100 | <property name="text"> | ||
101 | <string>Gats:</string> | ||
102 | </property> | ||
103 | </widget> | ||
104 | </item> | ||
105 | <item> | ||
106 | <widget class="QLineEdit" name="leGats"/> | ||
107 | </item> | ||
108 | <item> | ||
109 | <layout class="QVBoxLayout" name="verticalLayout"> | ||
110 | <item> | ||
111 | <widget class="QPushButton" name="pushButton"> | ||
112 | <property name="text"> | ||
113 | <string>Send to Client</string> | ||
114 | </property> | ||
115 | </widget> | ||
116 | </item> | ||
117 | <item> | ||
118 | <widget class="QPushButton" name="pushButton_2"> | ||
119 | <property name="text"> | ||
120 | <string>Send to Server</string> | ||
121 | </property> | ||
122 | </widget> | ||
123 | </item> | ||
124 | </layout> | ||
125 | </item> | ||
126 | </layout> | ||
127 | </item> | ||
128 | </layout> | ||
129 | </widget> | ||
130 | </widget> | ||
131 | </item> | ||
132 | </layout> | ||
133 | </widget> | ||
134 | <customwidgets> | ||
135 | <customwidget> | ||
136 | <class>LoadingWidget</class> | ||
137 | <extends>QWidget</extends> | ||
138 | <header>loadingwidget.h</header> | ||
139 | <container>1</container> | ||
140 | </customwidget> | ||
141 | </customwidgets> | ||
142 | <resources/> | ||
143 | <connections> | ||
144 | <connection> | ||
145 | <sender>pushButton</sender> | ||
146 | <signal>clicked()</signal> | ||
147 | <receiver>ProxyWidget</receiver> | ||
148 | <slot>sendToClient()</slot> | ||
149 | <hints> | ||
150 | <hint type="sourcelabel"> | ||
151 | <x>280</x> | ||
152 | <y>258</y> | ||
153 | </hint> | ||
154 | <hint type="destinationlabel"> | ||
155 | <x>392</x> | ||
156 | <y>223</y> | ||
157 | </hint> | ||
158 | </hints> | ||
159 | </connection> | ||
160 | <connection> | ||
161 | <sender>pushButton_2</sender> | ||
162 | <signal>clicked()</signal> | ||
163 | <receiver>ProxyWidget</receiver> | ||
164 | <slot>sendToServer()</slot> | ||
165 | <hints> | ||
166 | <hint type="sourcelabel"> | ||
167 | <x>306</x> | ||
168 | <y>284</y> | ||
169 | </hint> | ||
170 | <hint type="destinationlabel"> | ||
171 | <x>199</x> | ||
172 | <y>340</y> | ||
173 | </hint> | ||
174 | </hints> | ||
175 | </connection> | ||
176 | </connections> | ||
177 | <slots> | ||
178 | <slot>sendToClient()</slot> | ||
179 | <slot>sendToServer()</slot> | ||
180 | </slots> | ||
181 | </ui> | ||
diff --git a/src/gatscon/setupproxydlg.cpp b/src/gatscon/setupproxydlg.cpp new file mode 100644 index 0000000..7c7a873 --- /dev/null +++ b/src/gatscon/setupproxydlg.cpp | |||
@@ -0,0 +1,27 @@ | |||
1 | #include "setupproxydlg.h" | ||
2 | |||
3 | SetupProxyDlg::SetupProxyDlg( QWidget *pParent ) : | ||
4 | QDialog( pParent ) | ||
5 | { | ||
6 | setupUi( this ); | ||
7 | } | ||
8 | |||
9 | SetupProxyDlg::~SetupProxyDlg() | ||
10 | { | ||
11 | } | ||
12 | |||
13 | int SetupProxyDlg::getPortIn() const | ||
14 | { | ||
15 | return sbPortIn->value(); | ||
16 | } | ||
17 | |||
18 | QByteArray SetupProxyDlg::getHostOut() const | ||
19 | { | ||
20 | return leHostOut->text().toAscii(); | ||
21 | } | ||
22 | |||
23 | int SetupProxyDlg::getPortOut() const | ||
24 | { | ||
25 | return sbPortOut->value(); | ||
26 | } | ||
27 | |||
diff --git a/src/gatscon/setupproxydlg.h b/src/gatscon/setupproxydlg.h new file mode 100644 index 0000000..6cc31bd --- /dev/null +++ b/src/gatscon/setupproxydlg.h | |||
@@ -0,0 +1,18 @@ | |||
1 | #ifndef SETUP_PROXY_DLG_H | ||
2 | #define SETUP_PROXY_DLG_H | ||
3 | |||
4 | #include "ui_setupproxydlg.h" | ||
5 | |||
6 | class SetupProxyDlg : public QDialog, protected Ui::SetupProxyDlg | ||
7 | { | ||
8 | Q_OBJECT; | ||
9 | public: | ||
10 | SetupProxyDlg( QWidget *pParent=NULL ); | ||
11 | virtual ~SetupProxyDlg(); | ||
12 | |||
13 | int getPortIn() const; | ||
14 | QByteArray getHostOut() const; | ||
15 | int getPortOut() const; | ||
16 | }; | ||
17 | |||
18 | #endif | ||
diff --git a/src/gatscon/setupproxydlg.ui b/src/gatscon/setupproxydlg.ui new file mode 100644 index 0000000..8482193 --- /dev/null +++ b/src/gatscon/setupproxydlg.ui | |||
@@ -0,0 +1,112 @@ | |||
1 | <?xml version="1.0" encoding="UTF-8"?> | ||
2 | <ui version="4.0"> | ||
3 | <class>SetupProxyDlg</class> | ||
4 | <widget class="QDialog" name="SetupProxyDlg"> | ||
5 | <property name="geometry"> | ||
6 | <rect> | ||
7 | <x>0</x> | ||
8 | <y>0</y> | ||
9 | <width>359</width> | ||
10 | <height>122</height> | ||
11 | </rect> | ||
12 | </property> | ||
13 | <property name="windowTitle"> | ||
14 | <string>GatsCon - Setup Proxy</string> | ||
15 | </property> | ||
16 | <layout class="QVBoxLayout" name="verticalLayout"> | ||
17 | <item> | ||
18 | <layout class="QFormLayout" name="formLayout"> | ||
19 | <item row="0" column="0"> | ||
20 | <widget class="QLabel" name="label_2"> | ||
21 | <property name="text"> | ||
22 | <string>Listening port:</string> | ||
23 | </property> | ||
24 | </widget> | ||
25 | </item> | ||
26 | <item row="0" column="1"> | ||
27 | <widget class="QSpinBox" name="sbPortIn"> | ||
28 | <property name="minimum"> | ||
29 | <number>1</number> | ||
30 | </property> | ||
31 | <property name="maximum"> | ||
32 | <number>32767</number> | ||
33 | </property> | ||
34 | </widget> | ||
35 | </item> | ||
36 | <item row="1" column="0"> | ||
37 | <widget class="QLabel" name="label_3"> | ||
38 | <property name="text"> | ||
39 | <string>Target host:</string> | ||
40 | </property> | ||
41 | </widget> | ||
42 | </item> | ||
43 | <item row="1" column="1"> | ||
44 | <widget class="QLineEdit" name="leHostOut"/> | ||
45 | </item> | ||
46 | <item row="2" column="0"> | ||
47 | <widget class="QLabel" name="label_4"> | ||
48 | <property name="text"> | ||
49 | <string>Target port:</string> | ||
50 | </property> | ||
51 | </widget> | ||
52 | </item> | ||
53 | <item row="2" column="1"> | ||
54 | <widget class="QSpinBox" name="sbPortOut"> | ||
55 | <property name="minimum"> | ||
56 | <number>1</number> | ||
57 | </property> | ||
58 | <property name="maximum"> | ||
59 | <number>32767</number> | ||
60 | </property> | ||
61 | </widget> | ||
62 | </item> | ||
63 | </layout> | ||
64 | </item> | ||
65 | <item> | ||
66 | <widget class="QDialogButtonBox" name="buttonBox"> | ||
67 | <property name="orientation"> | ||
68 | <enum>Qt::Horizontal</enum> | ||
69 | </property> | ||
70 | <property name="standardButtons"> | ||
71 | <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> | ||
72 | </property> | ||
73 | </widget> | ||
74 | </item> | ||
75 | </layout> | ||
76 | </widget> | ||
77 | <resources/> | ||
78 | <connections> | ||
79 | <connection> | ||
80 | <sender>buttonBox</sender> | ||
81 | <signal>accepted()</signal> | ||
82 | <receiver>SetupProxyDlg</receiver> | ||
83 | <slot>accept()</slot> | ||
84 | <hints> | ||
85 | <hint type="sourcelabel"> | ||
86 | <x>248</x> | ||
87 | <y>254</y> | ||
88 | </hint> | ||
89 | <hint type="destinationlabel"> | ||
90 | <x>157</x> | ||
91 | <y>274</y> | ||
92 | </hint> | ||
93 | </hints> | ||
94 | </connection> | ||
95 | <connection> | ||
96 | <sender>buttonBox</sender> | ||
97 | <signal>rejected()</signal> | ||
98 | <receiver>SetupProxyDlg</receiver> | ||
99 | <slot>reject()</slot> | ||
100 | <hints> | ||
101 | <hint type="sourcelabel"> | ||
102 | <x>316</x> | ||
103 | <y>260</y> | ||
104 | </hint> | ||
105 | <hint type="destinationlabel"> | ||
106 | <x>286</x> | ||
107 | <y>274</y> | ||
108 | </hint> | ||
109 | </hints> | ||
110 | </connection> | ||
111 | </connections> | ||
112 | </ui> | ||