Skip to content

Commit 6fcd119

Browse files
committed
Raw protocol adds four modes TCP Client, TCP Server, UDP Send, UDP Receive
Signed-off-by: xiaoming <2014500726@smail.xtu.edu.cn>
1 parent 0452c61 commit 6fcd119

15 files changed

+435
-104
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ en-US:
99
- Improve the log file path setting option
1010
- Add TFTP server configuration to settings
1111
- Add terminal recording video feature
12+
- Raw protocol adds four modes TCP Client, TCP Server, UDP Send, UDP Receive
1213
- Add view own log window for quardCRT self debug
1314

1415
zh-CN:
@@ -18,6 +19,7 @@ zh-CN:
1819
- 改进记录日志文件路径设置选项
1920
- 增加TFTP服务器配置到设置中
2021
- 增加终端录制视频功能
22+
- Raw协议增加四种模式TCP Client、TCP Server、UDP Send、UDP Receive
2123
- 增加查看自身log窗口,用于quardCRT自身debug
2224

2325
## [[V0.5.1](https://github.com/QQxiaoming/quardCRT/releases/tag/V0.5.1)] - 2024-09-26

docs/changelog.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
- Improve the log file path setting option
1010
- Add TFTP server configuration to settings
1111
- Add terminal recording video feature
12+
- Raw protocol adds four modes TCP Client, TCP Server, UDP Send, UDP Receive
1213
- Add view own log window for quardCRT self debug
1314

1415
## [[V0.5.1](https://github.com/QQxiaoming/quardCRT/releases/tag/V0.5.1)] - 2024-09-26

docs/index.rst

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -115,9 +115,8 @@ Install from store
115115
:alt: Microsoft Store
116116

117117
- .. image:: https://www.spark-app.store/assets/favicon-96x96-BB0Q9LsV.png
118-
:target: spk://store/development/quardcrt
118+
:target: https://spk-resolv.spark-app.store/?spk=spk://store/development/quardcrt
119119
:alt: Spark Store
120-
Spark Store
121120

122121
----------------------------------
123122
Donate

lang/quardCRT_zh_CN.ts

Lines changed: 128 additions & 77 deletions
Large diffs are not rendered by default.

src/mainwindow.cpp

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -927,7 +927,7 @@ CentralWidget::CentralWidget(QString dir, StartupUIMode mode, QLocale lang, bool
927927
} else if(type == "localshell") {
928928
startLocalShellSession(findCurrentFocusGroup(),-1);
929929
} else if(type == "raw") {
930-
startRawSocketSession(findCurrentFocusGroup(),-1,hostname,port.toInt());
930+
startRawSocketSession(findCurrentFocusGroup(),-1,hostname,port.toInt(),0);
931931
} else if(type == "namepipe") {
932932
startNamePipeSession(findCurrentFocusGroup(),-1,hostname);
933933
} else if(type == "ssh") {
@@ -2571,7 +2571,7 @@ void CentralWidget::onPluginRequestLocalShellConnect(QString command, QString wo
25712571
}
25722572

25732573
void CentralWidget::onPluginRequestRawSocketConnect(QString host, int port) {
2574-
startRawSocketSession(findCurrentFocusGroup(),-1,host,port);
2574+
startRawSocketSession(findCurrentFocusGroup(),-1,host,port,0);
25752575
}
25762576

25772577
void CentralWidget::onPluginRequestNamePipeConnect(QString namePipe) {
@@ -4120,7 +4120,7 @@ void CentralWidget::connectSessionFromSessionManager(QString name)
41204120
startLocalShellSession(findCurrentFocusGroup(),-1,data.LocalShellData.command,globalOptionsWindow->getNewTabWorkPath(),current_name);
41214121
break;
41224122
case QuickConnectWindow::Raw:
4123-
startRawSocketSession(findCurrentFocusGroup(),-1,data.RawData.hostname,data.RawData.port, current_name);
4123+
startRawSocketSession(findCurrentFocusGroup(),-1,data.RawData.hostname,data.RawData.port,data.RawData.mode,current_name);
41244124
break;
41254125
case QuickConnectWindow::NamePipe:
41264126
startNamePipeSession(findCurrentFocusGroup(),-1,data.NamePipeData.pipeName, current_name);
@@ -4247,7 +4247,7 @@ QString CentralWidget::startSerialSession(MainWidgetGroup *group, int groupIndex
42474247
return name;
42484248
}
42494249

4250-
QString CentralWidget::startRawSocketSession(MainWidgetGroup *group, int groupIndex, QString hostname, quint16 port, QString name)
4250+
QString CentralWidget::startRawSocketSession(MainWidgetGroup *group, int groupIndex, QString hostname, quint16 port, int mode, QString name)
42514251
{
42524252
SessionsWindow *sessionsWindow = new SessionsWindow(SessionsWindow::RawSocket,this);
42534253
setGlobalOptions(sessionsWindow);
@@ -4260,7 +4260,7 @@ QString CentralWidget::startRawSocketSession(MainWidgetGroup *group, int groupIn
42604260
checkSessionName(name);
42614261
}
42624262
sessionsWindow->setName(name);
4263-
sessionsWindow->startRawSocketSession(hostname,port);
4263+
sessionsWindow->startRawSocketSession(hostname,port,mode);
42644264
sessionList.push_back(sessionsWindow);
42654265
connect(sessionsWindow, &SessionsWindow::titleChanged, this, [=](int title,const QString& newTitle){
42664266
if(title == 0 || title == 2) {
@@ -4586,7 +4586,7 @@ void CentralWidget::startSession(MainWidgetGroup *group, int groupIndex, QuickCo
45864586
} else if(data.type == QuickConnectWindow::Raw) {
45874587
QString name = data.RawData.hostname;
45884588
if(data.openInTab) {
4589-
name = startRawSocketSession(group,groupIndex,name,data.RawData.port);
4589+
name = startRawSocketSession(group,groupIndex,name,data.RawData.port,data.RawData.mode);
45904590
} else {
45914591
checkSessionName(name);
45924592
}
@@ -4837,6 +4837,7 @@ void CentralWidget::sessionWindow2InfoData(SessionsWindow *sessionsWindow, Quick
48374837
case QuickConnectWindow::Raw:
48384838
data.RawData.hostname = sessionsWindow->getHostname();
48394839
data.RawData.port = sessionsWindow->getPort();
4840+
data.RawData.mode = sessionsWindow->getRawMode();
48404841
break;
48414842
case QuickConnectWindow::NamePipe:
48424843
data.NamePipeData.pipeName = sessionsWindow->getPipeName();
@@ -4883,6 +4884,7 @@ int CentralWidget::setting2InfoData(GlobalSetting *settings, QuickConnectWindow:
48834884
case QuickConnectWindow::Raw:
48844885
data.RawData.hostname = settings->value("hostname").toString();
48854886
data.RawData.port = settings->value("port").toInt();
4887+
data.RawData.mode = settings->value("mode").toInt();
48864888
break;
48874889
case QuickConnectWindow::NamePipe:
48884890
data.NamePipeData.pipeName = settings->value("pipeName").toString();
@@ -4941,6 +4943,7 @@ void CentralWidget::infoData2Setting(GlobalSetting *settings,const QuickConnectW
49414943
case QuickConnectWindow::Raw:
49424944
settings->setValue("hostname",data.RawData.hostname);
49434945
settings->setValue("port",data.RawData.port);
4946+
settings->setValue("mode",data.RawData.mode);
49444947
break;
49454948
case QuickConnectWindow::NamePipe:
49464949
settings->setValue("pipeName",data.NamePipeData.pipeName);
@@ -5380,10 +5383,11 @@ int CentralWidget::se_sessionConnect(const QString &cmd,int id) {
53805383
return 0;
53815384
}
53825385
} else if(args[i] == "-raw") {
5383-
if(i+2 < args.size()) {
5386+
if(i+3 < args.size()) {
53845387
QString hostname = args[i+1];
53855388
quint16 port = args[i+2].toUShort();
5386-
startRawSocketSession(findCurrentFocusGroup(),-1,hostname,port);
5389+
int mode = args[i+3].toInt();
5390+
startRawSocketSession(findCurrentFocusGroup(),-1,hostname,port,mode);
53875391
return 0;
53885392
}
53895393
} else if(args[i] == "-namepipe") {

src/mainwindow.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ class CentralWidget : public QMainWindow
211211
#if defined(Q_OS_WIN)
212212
QString startWslSession(MainWidgetGroup *group, int groupIndex, const QString &command = QString(), const QString &workingDirectory = QDir::homePath(), QString name = QString());
213213
#endif
214-
QString startRawSocketSession(MainWidgetGroup *group, int groupIndex, QString hostname, quint16 port, QString name = QString());
214+
QString startRawSocketSession(MainWidgetGroup *group, int groupIndex, QString hostname, quint16 port, int mode, QString name = QString());
215215
QString startNamePipeSession(MainWidgetGroup *group, int groupIndex, QString namePipe, QString name = QString());
216216
QString startSSH2Session(MainWidgetGroup *group, int groupIndex,
217217
QString hostname, quint16 port, QString username, QString password, QString name = QString());

src/quickconnectwindow/quickconnectwindow.cpp

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,7 @@ void QuickConnectWindow::comboBoxProtocolChanged(int index)
8080
case Telnet: {
8181
ui->labelHostname->setText(tr("Hostname"));
8282
ui->labelPort->setText(tr("Port"));
83+
ui->labelWebSocket->setText(tr("WebSocket"));
8384
ui->comboBoxHostname->setVisible(false);
8485
ui->pushButtonRefresh->setVisible(false);
8586
ui->lineEditHostname->setVisible(true);
@@ -88,6 +89,7 @@ void QuickConnectWindow::comboBoxProtocolChanged(int index)
8889
ui->spinBoxPort->setToolTip("");
8990
ui->labelWebSocket->setVisible(true);
9091
ui->comboBoxWebSocket->setVisible(true);
92+
ui->comboBoxRawMode->setVisible(false);
9193
ui->labelDataBits->setVisible(false);
9294
ui->comboBoxDataBits->setVisible(false);
9395
ui->labelParity->setVisible(false);
@@ -121,6 +123,7 @@ void QuickConnectWindow::comboBoxProtocolChanged(int index)
121123
ui->labelPort->setVisible(true);
122124
ui->spinBoxPort->setVisible(true);
123125
ui->spinBoxPort->setToolTip(tr("e.g. 110, 300, 600, 1200, 2400, \n4800, 9600, 14400, 19200, 38400, \n56000, 57600, 115200, 128000, 256000, \n460800, 921600"));
126+
ui->comboBoxRawMode->setVisible(false);
124127
ui->labelWebSocket->setVisible(false);
125128
ui->comboBoxWebSocket->setVisible(false);
126129
ui->labelDataBits->setVisible(true);
@@ -164,6 +167,7 @@ void QuickConnectWindow::comboBoxProtocolChanged(int index)
164167
ui->spinBoxPort->setVisible(false);
165168
ui->spinBoxPort->setToolTip("");
166169
ui->labelWebSocket->setVisible(false);
170+
ui->comboBoxRawMode->setVisible(false);
167171
ui->comboBoxWebSocket->setVisible(false);
168172
ui->labelDataBits->setVisible(false);
169173
ui->comboBoxDataBits->setVisible(false);
@@ -180,6 +184,7 @@ void QuickConnectWindow::comboBoxProtocolChanged(int index)
180184
case Raw: {
181185
ui->labelHostname->setText(tr("Hostname"));
182186
ui->labelPort->setText(tr("Port"));
187+
ui->labelWebSocket->setText(tr("Mode"));
183188
ui->comboBoxHostname->setVisible(false);
184189
ui->pushButtonRefresh->setVisible(false);
185190
ui->lineEditHostname->setVisible(true);
@@ -190,7 +195,8 @@ void QuickConnectWindow::comboBoxProtocolChanged(int index)
190195
ui->labelPort->setVisible(true);
191196
ui->spinBoxPort->setVisible(true);
192197
ui->spinBoxPort->setToolTip("");
193-
ui->labelWebSocket->setVisible(false);
198+
ui->labelWebSocket->setVisible(true);
199+
ui->comboBoxRawMode->setVisible(true);
194200
ui->comboBoxWebSocket->setVisible(false);
195201
ui->labelDataBits->setVisible(false);
196202
ui->comboBoxDataBits->setVisible(false);
@@ -205,6 +211,7 @@ void QuickConnectWindow::comboBoxProtocolChanged(int index)
205211
ui->spinBoxPort->setMinimum(0);
206212
ui->spinBoxPort->setMaximum(65535);
207213
ui->spinBoxPort->setValue(8080);
214+
ui->comboBoxRawMode->setCurrentIndex(0);
208215
break;
209216
}
210217
case NamePipe:{
@@ -219,6 +226,7 @@ void QuickConnectWindow::comboBoxProtocolChanged(int index)
219226
ui->labelPort->setVisible(false);
220227
ui->spinBoxPort->setVisible(false);
221228
ui->spinBoxPort->setToolTip("");
229+
ui->comboBoxRawMode->setVisible(false);
222230
ui->labelWebSocket->setVisible(false);
223231
ui->comboBoxWebSocket->setVisible(false);
224232
ui->labelDataBits->setVisible(false);
@@ -251,6 +259,7 @@ void QuickConnectWindow::comboBoxProtocolChanged(int index)
251259
ui->spinBoxPort->setVisible(true);
252260
ui->spinBoxPort->setToolTip("");
253261
ui->labelWebSocket->setVisible(false);
262+
ui->comboBoxRawMode->setVisible(false);
254263
ui->comboBoxWebSocket->setVisible(false);
255264
ui->labelDataBits->setVisible(false);
256265
ui->comboBoxDataBits->setVisible(false);
@@ -281,6 +290,7 @@ void QuickConnectWindow::comboBoxProtocolChanged(int index)
281290
ui->labelWebSocket->setVisible(false);
282291
ui->labelUsername->setVisible(false);
283292
ui->lineEditUsername->setVisible(false);
293+
ui->comboBoxRawMode->setVisible(false);
284294
ui->comboBoxWebSocket->setVisible(false);
285295
ui->labelDataBits->setVisible(false);
286296
ui->comboBoxDataBits->setVisible(false);
@@ -332,6 +342,7 @@ void QuickConnectWindow::buttonBoxAccepted(void)
332342
case Raw:
333343
data.RawData.hostname = ui->lineEditHostname->text();
334344
data.RawData.port = ui->spinBoxPort->value();
345+
data.RawData.mode = ui->comboBoxRawMode->currentIndex();
335346
emit this->sendQuickConnectData(data);
336347
break;
337348
case NamePipe:
@@ -399,6 +410,7 @@ void QuickConnectWindow::setQuickConnectData(QuickConnectData data)
399410
case Raw:
400411
ui->lineEditHostname->setText(data.RawData.hostname);
401412
ui->spinBoxPort->setValue(data.RawData.port);
413+
ui->comboBoxRawMode->setCurrentIndex(data.RawData.mode);
402414
break;
403415
case NamePipe:
404416
ui->lineEditHostname->setText(data.NamePipeData.pipeName);

src/quickconnectwindow/quickconnectwindow.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ class QuickConnectWindow : public QDialog
6767
struct {
6868
QString hostname;
6969
int port;
70+
int mode;
7071
}RawData;
7172
struct {
7273
QString pipeName;

src/quickconnectwindow/quickconnectwindow.ui

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,30 @@
173173
</item>
174174
</widget>
175175
</item>
176+
<item>
177+
<widget class="QComboBox" name="comboBoxRawMode">
178+
<item>
179+
<property name="text">
180+
<string>TCP Client</string>
181+
</property>
182+
</item>
183+
<item>
184+
<property name="text">
185+
<string>TCP Server</string>
186+
</property>
187+
</item>
188+
<item>
189+
<property name="text">
190+
<string>UDP Send</string>
191+
</property>
192+
</item>
193+
<item>
194+
<property name="text">
195+
<string>UDP Recv</string>
196+
</property>
197+
</item>
198+
</widget>
199+
</item>
176200
</layout>
177201
</item>
178202
<item>
@@ -332,7 +356,7 @@
332356
<item>
333357
<spacer name="verticalSpacer">
334358
<property name="orientation">
335-
<enum>Qt::Vertical</enum>
359+
<enum>Qt::Orientation::Vertical</enum>
336360
</property>
337361
<property name="sizeHint" stdset="0">
338362
<size>
@@ -372,10 +396,10 @@
372396
<item>
373397
<widget class="QDialogButtonBox" name="buttonBox">
374398
<property name="orientation">
375-
<enum>Qt::Horizontal</enum>
399+
<enum>Qt::Orientation::Horizontal</enum>
376400
</property>
377401
<property name="standardButtons">
378-
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set>
402+
<set>QDialogButtonBox::StandardButton::Cancel|QDialogButtonBox::StandardButton::Ok</set>
379403
</property>
380404
</widget>
381405
</item>

src/scriptengine/pyrun.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -256,8 +256,8 @@ PyRun::PyRun(QObject *parent)
256256
resultList->append(QString::number(centralWidget->se_sessionGetLogging(id)));
257257
} else if (cmd == "sessionConnect") {
258258
int id = cmdList.at(1).toInt();
259-
QString cmd = cmdList.at(2);
260-
centralWidget->se_sessionConnect(cmd,id);
259+
QString ccmd = cmdList.at(2);
260+
centralWidget->se_sessionConnect(ccmd,id);
261261
} else if (cmd == "sessionDisconnect") {
262262
int id = cmdList.at(1).toInt();
263263
centralWidget->se_sessionDisconnect(id);

src/sessionoptions/sessionoptionsrawproperties.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ SessionOptionsRawProperties::SessionOptionsRawProperties(QWidget *parent) :
2525
ui(new Ui::SessionOptionsRawProperties)
2626
{
2727
ui->setupUi(this);
28+
ui->lineEditReadOnlyRawMode->setVisible(true);
2829
}
2930

3031
SessionOptionsRawProperties::~SessionOptionsRawProperties()

src/sessionoptions/sessionoptionsrawproperties.ui

Lines changed: 42 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,15 +68,55 @@
6868
</property>
6969
</widget>
7070
</item>
71+
<item>
72+
<widget class="QLabel" name="label_3">
73+
<property name="sizePolicy">
74+
<sizepolicy hsizetype="Fixed" vsizetype="Fixed">
75+
<horstretch>0</horstretch>
76+
<verstretch>0</verstretch>
77+
</sizepolicy>
78+
</property>
79+
<property name="text">
80+
<string>Mode</string>
81+
</property>
82+
</widget>
83+
</item>
84+
<item>
85+
<widget class="QComboBox" name="comboBoxRawMode">
86+
<item>
87+
<property name="text">
88+
<string>TCP Client</string>
89+
</property>
90+
</item>
91+
<item>
92+
<property name="text">
93+
<string>TCP Server</string>
94+
</property>
95+
</item>
96+
<item>
97+
<property name="text">
98+
<string>UDP Send</string>
99+
</property>
100+
</item>
101+
<item>
102+
<property name="text">
103+
<string>UDP Recv</string>
104+
</property>
105+
</item>
106+
</widget>
107+
</item>
108+
<item>
109+
<widget class="QLineEdit" name="lineEditReadOnlyRawMode"/>
110+
</item>
71111
</layout>
72112
</item>
73113
<item>
74114
<spacer name="verticalSpacer">
75115
<property name="orientation">
76-
<enum>Qt::Vertical</enum>
116+
<enum>Qt::Orientation::Vertical</enum>
77117
</property>
78118
<property name="sizeType">
79-
<enum>QSizePolicy::MinimumExpanding</enum>
119+
<enum>QSizePolicy::Policy::MinimumExpanding</enum>
80120
</property>
81121
<property name="sizeHint" stdset="0">
82122
<size>

src/sessionoptions/sessionoptionswindow.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,7 @@ void SessionOptionsWindow::setSessionProperties(QString name, QuickConnectWindow
234234
case QuickConnectWindow::Raw:
235235
sessionOptionsRawProperties->ui->lineEditHostname->setText(data.RawData.hostname);
236236
sessionOptionsRawProperties->ui->spinBoxPort->setValue(data.RawData.port);
237+
sessionOptionsRawProperties->ui->comboBoxRawMode->setCurrentIndex(data.RawData.mode);
237238
break;
238239
case QuickConnectWindow::NamePipe:
239240
sessionOptionsNamePipeProperties->ui->lineEditPipeName->setText(data.NamePipeData.pipeName);
@@ -357,6 +358,7 @@ void SessionOptionsWindow::setReadOnly(bool enable) {
357358

358359
sessionOptionsRawProperties->ui->lineEditHostname->setReadOnly(enable);
359360
sessionOptionsRawProperties->ui->spinBoxPort->setReadOnly(enable);
361+
comboxSetReadOnly(sessionOptionsRawProperties->ui->comboBoxRawMode, sessionOptionsRawProperties->ui->lineEditReadOnlyRawMode);
360362

361363
sessionOptionsNamePipeProperties->ui->lineEditPipeName->setReadOnly(enable);
362364

@@ -398,6 +400,7 @@ void SessionOptionsWindow::buttonBoxAccepted(void)
398400
case QuickConnectWindow::Raw:
399401
data.RawData.hostname = sessionOptionsRawProperties->ui->lineEditHostname->text();
400402
data.RawData.port = sessionOptionsRawProperties->ui->spinBoxPort->value();
403+
data.RawData.mode = sessionOptionsRawProperties->ui->comboBoxRawMode->currentIndex();
401404
break;
402405
case QuickConnectWindow::NamePipe:
403406
data.NamePipeData.pipeName = sessionOptionsNamePipeProperties->ui->lineEditPipeName->text();

0 commit comments

Comments
 (0)