Skip to content

Commit 20c702f

Browse files
committed
Plugins: Add Ftp server
1 parent 726a0cb commit 20c702f

63 files changed

Lines changed: 1574 additions & 155 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/vcpkg.yml

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
# Author: Kang Lin<kl222@126.com>
2+
3+
name: vcpkg
4+
5+
on:
6+
push:
7+
pull_request:
8+
9+
jobs:
10+
vcpkg:
11+
strategy:
12+
matrix:
13+
include:
14+
- CMAKE_GENERATOR_PLATFORM: x64
15+
VCPKG_TARGET_TRIPLET: x64-windows
16+
VCPKG_PLATFORM_TOOLSET: v143
17+
os: windows-2022
18+
19+
env:
20+
VCPKGGITCOMMITID: de46587b4beaa638743916fe5674825cecfb48b3
21+
VCPKG_TARGET_TRIPLET: ${{matrix.VCPKG_TARGET_TRIPLET}}
22+
VCPKG_DEFAULT_TRIPLET: ${{matrix.VCPKG_TARGET_TRIPLET}}
23+
VCPKG_PLATFORM_TOOLSET: ${{matrix.VCPKG_PLATFORM_TOOLSET}}
24+
VCPKG_INSTALLED_DIR: ${{github.workspace}}\.cache\install
25+
RabbitRemoteControl_VERSION: v0.0.36
26+
BUILD_DIR: ${{github.workspace}}\build
27+
SOURCE_DIR: ${{github.workspace}}\.cache\source
28+
TOOLS_DIR: ${{github.workspace}}\.cache\tools
29+
INSTALL_DIR: ${{github.workspace}}\.cache\install
30+
VCPKG_MANIFEST_FEATURES: "freerdp;vnc;terminal;filetransfer;qt"
31+
32+
runs-on: ${{matrix.os}}
33+
steps:
34+
- name: Checkout Repository
35+
uses: actions/checkout@v3
36+
with:
37+
submodules: true
38+
fetch-depth: 0
39+
40+
- name: Make directories
41+
run: |
42+
cmake -E make_directory ${{env.BUILD_DIR}}
43+
cmake -E make_directory ${{env.SOURCE_DIR}}
44+
cmake -E make_directory ${{env.TOOLS_DIR}}
45+
cmake -E make_directory ${{env.INSTALL_DIR}}
46+
47+
- name: run-vcpkg
48+
uses: lukka/run-vcpkg@v11
49+
with:
50+
vcpkgGitCommitId: ${{env.VCPKGGITCOMMITID}}
51+
vcpkgDirectory: ${{env.SOURCE_DIR}}/vcpkg
52+
53+
- name: RabbitCommon
54+
working-directory: ${{env.SOURCE_DIR}}
55+
run: git clone https://github.com/KangLin/RabbitCommon.git
56+
57+
- name: Build RabbitRemoteControl
58+
working-directory: ${{env.BUILD_DIR}}
59+
shell: cmd
60+
env:
61+
RabbitCommon_ROOT: ${{env.SOURCE_DIR}}/RabbitCommon
62+
run: |
63+
cmake ${{github.workspace}} ^
64+
-A ${{matrix.CMAKE_GENERATOR_PLATFORM}} ^
65+
-T ${{matrix.VCPKG_PLATFORM_TOOLSET}} ^
66+
-DCMARK_SHARED=OFF ^
67+
-DCMARK_TESTS=OFF ^
68+
-DCMARK_STATIC=ON ^
69+
-DWITH_CMARK=OFF ^
70+
-DWITH_CMARK_GFM=ON ^
71+
-DWITH_WebEngineWidgets=ON ^
72+
-DRABBIT_ENABLE_INSTALL_DEPENDENT=ON ^
73+
-DRABBIT_ENABLE_INSTALL_QT=ON ^
74+
-DRABBIT_ENABLE_INSTALL_TO_BUILD_PATH=ON ^
75+
-DCMAKE_BUILD_TYPE=Release ^
76+
-DCMAKE_INSTALL_PREFIX=${{env.BUILD_DIR}}/install ^
77+
-DCMAKE_PREFIX_PATH=${{env.INSTALL_DIR}} ^
78+
-DCMAKE_TOOLCHAIN_FILE=${{env.VCPKG_ROOT}}/scripts/buildsystems/vcpkg.cmake ^
79+
-DVCPKG_VERBOSE=ON ^
80+
-DVCPKG_TARGET_TRIPLET=${{matrix.VCPKG_TARGET_TRIPLET}} ^
81+
-DX_VCPKG_APPLOCAL_DEPS_INSTALL=ON ^
82+
-DVCPKG_APPLOCAL_DEPS=ON ^
83+
-DVCPKG_TRACE_FIND_PACKAGE=ON ^
84+
-DBUILD_QUIWidget=OFF ^
85+
-DBUILD_APP=ON ^
86+
-DBUILD_FREERDP=ON ^
87+
-DPCAP_ROOT=${{env.INSTALL_DIR}}/npcap ^
88+
-DPacket_ROOT=${{env.INSTALL_DIR}}/npcap ^
89+
-DINSTALL_QTKEYCHAIN=ON
90+
cmake --build . --config Release

Authors.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,3 +44,4 @@ See: https://github.com/KangLin/RabbitRemoteControl/graphs/contributors
4444
- [OPTIONAL] FFMPEG: [https://ffmpeg.org/](https://ffmpeg.org/) Multimedia capabilities required
4545
- [OPTIONAL] qtkeychain: [https://github.com/KangLin/qtkeychain](https://github.com/KangLin/qtkeychain)
4646
- [OPTIONAL] libcurl: [https://curl.se](https://curl.se)
47+
- [OPTIONAL] QFtpServer: https://github.com/sashoalm/QFtpServer

Authors_zh_CN.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,3 +46,4 @@
4646
- [可选] FFMPEG: [https://ffmpeg.org/](https://ffmpeg.org/) 多媒体功能需要
4747
- [可选] qtkeychain: [https://github.com/KangLin/qtkeychain](https://github.com/KangLin/qtkeychain)
4848
- [可选] libcurl: [https://curl.se](https://curl.se)
49+
- [可选] QFtpServer: https://github.com/sashoalm/QFtpServer

Plugins/CMakeLists.txt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,12 @@ if(WITH_QTERMWIDGET)
9696
endif()
9797
endif()
9898

99+
## Server
100+
option(BUILD_FTP_SERVER "Build ftp server" ON)
101+
if(BUILD_FTP_SERVER)
102+
add_subdirectory(FtpServer)
103+
endif()
104+
99105
message(STATUS "BUILD_RABBITVNC: ${BUILD_RABBITVNC}")
100106
message(STATUS "BUILD_TigerVNC: ${BUILD_TigerVNC}")
101107
message(STATUS "BUILD_LibVNCServer: ${BUILD_LibVNCServer}")
@@ -108,3 +114,5 @@ message(STATUS "BUILD_TERMINAL_TELNET: ${BUILD_TERMINAL_TELNET}")
108114
message(STATUS "BUILD_TERMINAL_SSH: ${BUILD_TERMINAL_SSH}")
109115
message(STATUS "BUILD_FILE_TRANSFER: ${BUILD_FILE_TRANSFER}")
110116
message(STATUS "BUILD_WEB_BROWSER: ${BUILD_WEB_BROWSER}; Qt${QT_VERSION_MAJOR}WebEngineWidgets: ${Qt${QT_VERSION_MAJOR}WebEngineWidgets_FOUND}")
117+
118+
message(STATUS "BUILD_FTP_SERVER: ${BUILD_FTP_SERVER}")
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
#include <QLoggingCategory>
2+
#include "BackendFtpServer.h"
3+
4+
static Q_LOGGING_CATEGORY(log, "FtpServer.Backend")
5+
CBackendFtpServer::CBackendFtpServer(COperate *pOperate) : CBackend(pOperate)
6+
{
7+
qDebug(log) << Q_FUNC_INFO;
8+
}
9+
10+
CBackendFtpServer::~CBackendFtpServer()
11+
{
12+
qDebug(log) << Q_FUNC_INFO;
13+
}
14+
15+
int CBackendFtpServer::Start()
16+
{
17+
qDebug(log) << Q_FUNC_INFO;
18+
return 0;
19+
}
20+
21+
int CBackendFtpServer::Stop()
22+
{
23+
qDebug(log) << Q_FUNC_INFO;
24+
return 0;
25+
}
26+
27+
CBackend::OnInitReturnValue CBackendFtpServer::OnInit()
28+
{
29+
qDebug(log) << Q_FUNC_INFO;
30+
return OnInitReturnValue::NotUseOnProcess;
31+
}
32+
33+
int CBackendFtpServer::OnClean()
34+
{
35+
qDebug(log) << Q_FUNC_INFO;
36+
return 0;
37+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
// Copyright Copyright (c) Kang Lin studio, All Rights Reserved
2+
// Author: Kang Lin <kl222@126.com>
3+
4+
#pragma once
5+
6+
#include "Backend.h"
7+
8+
class CBackendFtpServer : public CBackend
9+
{
10+
Q_OBJECT
11+
12+
public:
13+
explicit CBackendFtpServer(COperate *pOperate = nullptr);
14+
~CBackendFtpServer();
15+
16+
public:
17+
virtual int Start() override;
18+
virtual int Stop() override;
19+
20+
protected:
21+
virtual OnInitReturnValue OnInit() override;
22+
virtual int OnClean() override;
23+
};

Plugins/FtpServer/CMakeLists.txt

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
# Author: Kang Lin <kl222@126.com>
2+
3+
project(FtpServer
4+
DESCRIPTION "Ftp service plugin"
5+
)
6+
7+
find_package(QFtpServerLib)
8+
if(NOT QFtpServerLib_FOUND)
9+
return()
10+
endif()
11+
12+
SET(FtpServer_PRIVATE_LIBS Plugin)
13+
SET(SOURCE_FILES
14+
PluginFtpServer.cpp
15+
OperateFtpServer.cpp
16+
BackendFtpServer.cpp
17+
FrmSettings.cpp
18+
ParameterFtpServer.cpp
19+
)
20+
21+
SET(HEADER_FILES
22+
PluginFtpServer.h
23+
OperateFtpServer.h
24+
BackendFtpServer.h
25+
FrmSettings.h
26+
ParameterFtpServer.h
27+
)
28+
29+
SET(RCC_FILES FrmSettings.ui)
30+
if(WITH_GUI)
31+
32+
endif()
33+
34+
ADD_PLUGIN_TARGET(NAME PluginService${PROJECT_NAME}
35+
ISPLUGIN
36+
SOURCE_FILES ${SOURCE_FILES} ${HEADER_FILES} ${RCC_FILES}
37+
PRIVATE_LIBS ${FtpServer_PRIVATE_LIBS}
38+
PRIVATE_INCLUDE_DIRS ${FtpServer_INCLUDE_DIR} ${WinPR_INCLUDE_DIR}
39+
PRIVATE_DEFINITIONS FtpServer_VERSION_MAJOR=${FtpServer_MAJOR}
40+
PRIVATE_OPTIONS ${FtpServer_OPTIONS}
41+
INSTALL_DIR ${PLUGIN_PATH}
42+
OUTPUT_DIR ${CMAKE_BINARY_DIR}/${PLUGIN_PATH}
43+
INSTALL_RPATH ${INSTALL_RPATH}
44+
VERSION ${RabbitRemoteControl_VERSION}
45+
)

Plugins/FtpServer/FrmSettings.cpp

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
#include "FrmSettings.h"
2+
#include "ui_FrmSettings.h"
3+
4+
CFrmSettings::CFrmSettings(QWidget *parent)
5+
: QWidget(parent)
6+
, ui(new Ui::CFrmSettings)
7+
{
8+
ui->setupUi(this);
9+
}
10+
11+
CFrmSettings::~CFrmSettings()
12+
{
13+
delete ui;
14+
}
15+
16+
void CFrmSettings::on_pbCancel_clicked()
17+
{
18+
19+
}
20+
21+
22+
void CFrmSettings::on_pbApply_clicked()
23+
{
24+
25+
}
26+
27+
28+
void CFrmSettings::on_pbStart_clicked()
29+
{
30+
31+
}
32+

Plugins/FtpServer/FrmSettings.h

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
// Copyright Copyright (c) Kang Lin studio, All Rights Reserved
2+
// Author: Kang Lin <kl222@126.com>
3+
4+
#pragma once
5+
6+
#include <QWidget>
7+
8+
namespace Ui {
9+
class CFrmSettings;
10+
}
11+
12+
class CFrmSettings : public QWidget
13+
{
14+
Q_OBJECT
15+
16+
public:
17+
explicit CFrmSettings(QWidget *parent = nullptr);
18+
~CFrmSettings();
19+
20+
private slots:
21+
void on_pbCancel_clicked();
22+
23+
void on_pbApply_clicked();
24+
25+
void on_pbStart_clicked();
26+
27+
private:
28+
Ui::CFrmSettings *ui;
29+
};

0 commit comments

Comments
 (0)