Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
59 commits
Select commit Hold shift + click to select a range
d0dc150
Android: checks if the app has permission to read and write to device…
KangLin Jan 2, 2019
3c6fcb9
Android: set root path default to external storge
KangLin Jan 2, 2019
471227c
Android: Use submodul
KangLin Jan 3, 2019
08e6b1d
Modify README.md
KangLin Jan 3, 2019
6e9dcf7
Add system tray icon
KangLin Jan 4, 2019
94e9ef8
Modify AndroidManifest.xml
KangLin Jan 9, 2019
6442806
Andorid: QFtpServerCommandLine add init permissions
KangLin Jan 10, 2019
12e1de7
Android: Add notificationn
KangLin Jan 13, 2019
4caeac9
Update QtAndroidUtils
KangLin Jan 30, 2019
e352920
Add error string
KangLin Jan 31, 2019
f63e8d5
1. FIX: Screen wake
KangLin Feb 11, 2019
aeea36c
Merge branch 'master' of github.com:KangLin/QFtpServer
KangLin Feb 11, 2019
5a4df6c
Use env->FindClass replace env.findClass for support less then qt 5.12.0
KangLin Apr 25, 2019
5cdc2b7
Merge branch 'master' of github.com:KangLin/QFtpServer
KangLin Oct 16, 2019
62960b3
Add ci
KangLin Dec 10, 2019
a3c5f2c
Merge branch 'master' of https://github.com/sashoalm/QFtpServer
KangLin Dec 11, 2019
8e24588
Modify AndroidManifest.xml
KangLin Dec 11, 2019
ef79a7d
Merge branch 'master' of github.com:KangLin/QFtpServer
KangLin Dec 11, 2019
5ea0868
Modify ci
KangLin Dec 11, 2019
e06aeb2
Modify android api
KangLin Dec 11, 2019
fefa48f
Modify build.sh
KangLin Dec 12, 2019
1959920
Merge branch 'master' of github.com:KangLin/QFtpServer
KangLin Dec 12, 2019
13a7971
CI: add upload
KangLin Dec 16, 2019
407f157
Merge branch 'master' of github.com:KangLin/QFtpServer
KangLin Dec 16, 2019
0d22463
Add tag.sh
KangLin Dec 17, 2019
6f265a1
Release v1.1.2
KangLin Dec 17, 2019
dfe8eb9
Release v1.1.3
KangLin Dec 17, 2019
8de62c8
Modify download qt
KangLin Feb 28, 2020
fe1d99d
Merge branch 'master' of github.com:KangLin/QFtpServer
KangLin Feb 28, 2020
59bef17
Add background thread to process
KangLin Apr 4, 2021
e4a8c7b
Merge branch 'thread' into android
KangLin Apr 4, 2021
91a3b57
Modify ci
KangLin Apr 4, 2021
caad69c
Modify QFtpServer/android/AndroidManifest.xmll
KangLin Apr 4, 2021
30ce6c0
Modify disable lock screen
KangLin Apr 4, 2021
cf329de
Release v2.0.0
KangLin Apr 5, 2021
5699757
Modify tag.sh
KangLin Apr 5, 2021
adcb44e
Release v2.0.1
KangLin Apr 5, 2021
7ae93e0
Support Qt6
KangLin Jan 17, 2022
2556580
Add CMake
KangLin Jan 17, 2022
481474d
Test in Qt4
KangLin Jan 17, 2022
448b1c5
CMake: add certificates.qrc
KangLin Jan 17, 2022
d006fad
CI: add github action
KangLin Jun 27, 2022
a5a52b8
Fix install head files
KangLin Dec 22, 2025
505bc68
CMake: modify cmake_minimum_required
KangLin Dec 23, 2025
d5d01fe
Add CFilter
KangLin Dec 24, 2025
79c8976
Rename FtpServer to CFtpServer
KangLin Dec 25, 2025
ffeb5cb
Modify member variable names
KangLin Dec 25, 2025
df02c1b
Add CFtpServer::Listening
KangLin Dec 25, 2025
ba1ac34
Add debug information
KangLin Dec 25, 2025
281d81d
Modify README.md
KangLin Dec 25, 2025
b3dbd78
Modify Listening() default parameter
KangLin Dec 26, 2025
707fdfd
Modify CMakeLists.txt to delete uninstall runtime target
KangLin Dec 26, 2025
409d2e5
Modify CMakeLists.txt to change directory
KangLin Dec 26, 2025
92925fc
CMake: fix build error in android
KangLin Dec 27, 2025
84e4016
CMake: modify build error
KangLin Dec 30, 2025
a7202a0
CMake: init QT_LIBRARIES
KangLin Dec 31, 2025
9079642
CMake: modify QFtpServerLibConfig.cmake.in
KangLin Dec 31, 2025
11a6dbd
CMake: modify version
KangLin Jan 13, 2026
4e98ea4
CMake: fix qt library
KangLin Jan 13, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
225 changes: 225 additions & 0 deletions .github/workflows/android.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,225 @@
name: android

on: [push]

jobs:
use_install_qt:
name: use install qt android_${{matrix.os}}-qt${{matrix.qt_version}}-${{matrix.VCPKG_TARGET_TRIPLET}}-${{matrix.BUILD_TYPE}}

strategy:
matrix:
BUILD_TYPE: [Release]
ANDROID_ABI: [armeabi-v7a, x86]
ANDROID_PLATFORM: [android-28]
os: [Ubuntu-18.04]
qt_version: [5.12.12]
include:
- VCPKG_TARGET_TRIPLET: arm-android
qt_arch: android_armv7
ANDROID_ABI: armeabi-v7a

- VCPKG_TARGET_TRIPLET: x86-android
qt_arch: android_x86
ANDROID_ABI: x86

runs-on: ${{ matrix.os }}

env:
SOURCE_DIR: ${{github.workspace}}/.cache/source
TOOSL_DIR: ${{github.workspace}}/.cache/tools
INSTALL_DIR: ${{github.workspace}}/.cache/install
QFtpServer_VERSION: v0.0.18
VCPKGGITCOMMITID: faed44dfa013088fe1910908a8a65887622f412f
qt_modules: qtwebengine

steps:
- uses: actions/checkout@v2
with:
fetch-depth: 0

- uses: snickerbockers/submodules-init@v4

- name: make directory
run: |
cmake -E make_directory ${{env.SOURCE_DIR}}
cmake -E make_directory ${{env.TOOSL_DIR}}
cmake -E make_directory ${{env.INSTALL_DIR}}

- name: Cache Qt
id: cache-qt
uses: actions/cache@v1 # not v2!
with:
path: ${{env.TOOSL_DIR}}/qt
key: android_${{matrix.os}}-qt${{matrix.qt_version}}-${{matrix.VCPKG_TARGET_TRIPLET}}-${{matrix.BUILD_TYPE}}-2021-11-03

- name: Install Qt
# You may pin to the exact commit or the version.
# uses: jurplel/install-qt-action@a962fb91949c8e846a3e4a944d50e7ef5cc3a28a
uses: jurplel/install-qt-action@v2.14.0
with:
# Directory to install Qt
dir: ${{env.TOOSL_DIR}}/qt # optional
# Version of Qt to install
version: ${{matrix.qt_version}} # optional, default is 5.15.2
# Host platform
#host: linux # optional
# Target platform for build
target: android # optional, default is desktop
# Architecture for Windows/Android
arch: ${{matrix.qt_arch}} # optional
# Whether or not to install Qt dependencies on Linux
#install-deps: true # optional, default is true
# Additional Qt modules to install
modules: ${{env.qt_modules}} # optional
# Force a Qt mirror in case the default is not working
#mirror: # optional
# Whether or not to actually download Qt
cached: ${{ steps.cache-qt.outputs.cache-hit }} # optional, default is false
# Whether or not to automatically run setup-python to find a valid python version.
#setup-python: false # optional, default is true
# Qt tools to download--specify comma-separated argument lists which are themselves separated by spaces: <tool_name>,<tool_version>,<tool_arch>
#tools: # optional
# Whether or not to actually install Qt or just the tools from the tools argument
#tools-only: false # optional, default is false
# Version of aqtinstall to use in case of issues
#aqtversion: # optional, default is ==0.10.0
# Version of py7zr to use in case of issues
#py7zrversion: # optional, default is ==0.11.0
# Any extra arguments to append to the back
#extra: # optional

- name: run-vcpkg
uses: lukka/run-vcpkg@v7.4
with:
# Indicates whether to only setup vcpkg (i.e. installing it and setting the environment variables VCPKG_ROOT, RUNVCPK_VCPKG_ROOT), without installing any port.
#setupOnly: # optional
#vcpkgGitURL: https://github.com/KangLin/vcpkg.git
vcpkgGitCommitId: ${{env.VCPKGGITCOMMITID}}
vcpkgDirectory: ${{ runner.workspace }}/vcpkg/
# Since the cache must be invalidated when content of the vcpkg.json file changes, let's
# compute its hash and append this to the computed cache's key.
appendedCacheKey: android_${{matrix.os}}-qt${{matrix.qt_version}}-${{matrix.VCPKG_TARGET_TRIPLET}}-${{matrix.BUILD_TYPE}}-${{env.VCPKGGITCOMMITID}}
additionalCachedPaths: $VCPKG_ROOT/installed
vcpkgTriplet: '${{ matrix.VCPKG_TARGET_TRIPLET }}'
vcpkgArguments: 'zlib openssl'

- name: Cache installed
uses: actions/cache@v2
id: cache-installed
with:
path: |
${{env.INSTALL_DIR}}
key: cache-installed-android_${{matrix.os}}-qt${{matrix.qt_version}}-${{matrix.VCPKG_TARGET_TRIPLET}}-${{matrix.BUILD_TYPE}}

- name: build log4qt
working-directory: ${{env.SOURCE_DIR}}
env:
QT_ROOT: ${{env.Qt5_Dir}}
run: |
if [ ! -d ${{env.INSTALL_DIR}}/lib/cmake/Log4Qt ]; then
git clone -b v1.5.1 "https://github.com/MEONMedical/Log4Qt.git"
cd Log4Qt
cmake -E make_directory build
cd build
cmake .. -DCMAKE_BUILD_TYPE=${{matrix.BUILD_TYPE}} \
-DQt5_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5 \
-DQt5Core_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Core \
-DQt5Network_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Network \
-DQt5Concurrent_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Concurrent \
-DQt5Test_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Test \
-DCMAKE_INSTALL_PREFIX=${{env.INSTALL_DIR}} \
-DCMAKE_PREFIX_PATH=${{env.QT_ROOT}} \
-DCMAKE_TOOLCHAIN_FILE=${{env.VCPKG_ROOT}}/scripts/buildsystems/vcpkg.cmake \
-DVCPKG_CHAINLOAD_TOOLCHAIN_FILE=$ANDROID_NDK_HOME/build/cmake/android.toolchain.cmake \
-DANDROID_ABI=${{matrix.ANDROID_ABI}} \
-DANDROID_PLATFORM=${{matrix.ANDROID_PLATFORM}}
cmake --build . --config ${{matrix.BUILD_TYPE}}
cmake --build . --config ${{matrix.BUILD_TYPE}} --target install/strip
fi
- name: git clone RabbitCommon
working-directory: ${{env.SOURCE_DIR}}
run: git clone https://github.com/KangLin/RabbitCommon.git

- name: build QFtpServer
env:
RabbitCommon_DIR: ${{env.SOURCE_DIR}}/RabbitCommon
QT_ROOT: ${{env.Qt5_Dir}}
STOREPASS: ${{secrets.STOREPASS}}
run: |
cmake -E make_directory ${{github.workspace}}/build
cd ${{github.workspace}}/build
cmake ${{github.workspace}} \
-DCMARK_SHARED=OFF \
-DCMARK_TESTS=OFF \
-DCMARK_STATIC=ON \
-DBUILD_FREERDP=ON \
-DLog4Qt_DIR=${{env.INSTALL_DIR}}/lib/cmake/Log4Qt \
-DCMAKE_BUILD_TYPE=${{matrix.BUILD_TYPE}} \
-DQT_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5 \
-DQt5_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5 \
-DQt5Core_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Core \
-DQt5Gui_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Gui \
-DQt5Widgets_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Widgets \
-DQt5Xml_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Xml \
-DQt5Sql_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Sql \
-DQt5Positioning_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Positioning \
-DQt5Network_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Network \
-DQt5Multimedia_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Multimedia \
-DQt5LinguistTools_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5LinguistTools \
-DQt5Qml_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Qml \
-DQt5Quick_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Quick \
-DQt5QuickWidgets_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5QuickWidgets \
-DQt5AndroidExtras_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5AndroidExtras \
-DQt5Concurrent_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Concurrent \
-DQt5Test_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5Test \
-DQt5WebEngineWidgets_DIR=${{env.QT_ROOT}}/lib/cmake/Qt5WebEngineWidgets \
-DCMAKE_INSTALL_PREFIX=${{env.INSTALL_DIR}} \
-DCMAKE_PREFIX_PATH="${{env.QT_ROOT}}:${{env.INSTALL_DIR}}" \
-DCMAKE_TOOLCHAIN_FILE=${{env.VCPKG_ROOT}}/scripts/buildsystems/vcpkg.cmake \
-DVCPKG_CHAINLOAD_TOOLCHAIN_FILE=$ANDROID_NDK_HOME/build/cmake/android.toolchain.cmake \
-DANDROID_ABI=${{matrix.ANDROID_ABI}} \
-DANDROID_PLATFORM=${{matrix.ANDROID_PLATFORM}}
cmake --build . --config ${{ matrix.BUILD_TYPE }}
cmake --build . --config ${{ matrix.BUILD_TYPE }} --target install-runtime
cmake --build . --config ${{ matrix.BUILD_TYPE }} --target APK

- name: Package
if: ${{matrix.BUILD_TYPE == 'Release'}}
working-directory: ${{env.INSTALL_DIR}}
env:
QT_ROOT: ${{env.Qt5_Dir}}
RabbitCommon_DIR: ${{env.SOURCE_DIR}}/RabbitCommon
run: |
APK_FILE=`find . -name "install-release-signed.apk"`
APK_NAME=QFtpServer_${{matrix.ANDROID_ABI}}_${QFtpServer_VERSION}.apk
mv -f ${APK_FILE} ${APK_NAME}
APK_FILE=${APK_NAME}
cp ${{github.workspace}}/Update/update_android.xml .
MD5=`md5sum ${APK_FILE} | awk '{print $1}'`
echo "MD5:${MD5}"
sed -i "s/<VERSION>.*</<VERSION>${QFtpServer_VERSION}</g" update_android.xml
sed -i "s/<INFO>.*</<INFO>Release rabbit remote control ${QFtpServer_VERSION}</g" update_android.xml
sed -i "s/<TIME>.*</<TIME>`date`</g" update_android.xml
sed -i "s/<ARCHITECTURE>.*</<ARCHITECTURE>${BUILD_ARCH}</g" update_android.xml
sed -i "s/<MD5SUM>.*</<MD5SUM>${MD5}</g" update_android.xml
sed -i "s:<URL>.*<:<URL>https\://github.com/KangLin/QFtpServer/releases/download/${QFtpServer_VERSION}/${APK_NAME}<:g" update_android.xml
sed -i "s/<MIN_UPDATE_VERSION>.*</<MIN_UPDATE_VERSION>${QFtpServer_VERSION}</g" update_android.xml

- name: update
if: ${{ matrix.BUILD_TYPE == 'Release' }}
uses: actions/upload-artifact@v2
with:
name: QFtpServer_Android_${{matrix.ANDROID_ABI}}_${{env.QFtpServer_VERSION}}
path: |
${{env.INSTALL_DIR}}/QFtpServer_${{matrix.ANDROID_ABI}}_${{env.QFtpServer_VERSION}}.apk

- name: Upload To Github Release
if: ${{matrix.ANDROID_ABI=='armeabi-v7a' && matrix.BUILD_TYPE == 'Release' && startsWith(github.ref, 'refs/tags/') }}
uses: softprops/action-gh-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
prerelease: true
files: |
${{env.INSTALL_DIR}}/QFtpServer_${{matrix.ANDROID_ABI}}_${{env.QFtpServer_VERSION}}.apk
${{env.INSTALL_DIR}}/update_android.xml
119 changes: 119 additions & 0 deletions .github/workflows/mingw.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
name: mingw

on: [push]

jobs:
build:
name: build

strategy:
matrix:
os: [windows-latest]
# Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
BUILD_TYPE: [Release, Debug]

defaults:
run:
shell: cmd

runs-on: ${{ matrix.os }}
env:
BUILD_TYPE: ${{ matrix.BUILD_TYPE }}
SOURCE_DIR: ${{github.workspace}}\.cache\source
TOOSL_DIR: ${{github.workspace}}\.cache\tools
INSTALL_DIR: ${{github.workspace}}\.cache\install_mingw_2022_02_15
QFtpServer_VERSION: v0.0.18

steps:
- uses: actions/checkout@v2
#with:
#fetch-depth: 0

- name: pacman
env:
PATH: C:\msys64\usr\bin
run: |
C:\msys64\usr\bin\pacman.exe -S --noconfirm mingw-w64-x86_64-cmake ^
mingw-w64-x86_64-make ^
mingw-w64-x86_64-nsis ^
mingw-w64-x86_64-gcc ^
mingw-w64-x86_64-qt5 ^
mingw-w64-x86_64-zlib ^
git base-devel

- name: make_directory
run: |
cmake -E make_directory ${{env.SOURCE_DIR}}
cmake -E make_directory ${{env.TOOSL_DIR}}
cmake -E make_directory ${{env.INSTALL_DIR}}

- name: Cache installed
uses: actions/cache@v2
id: cache-installed
with:
path: |
${{env.INSTALL_DIR}}
key: cache-installed-mingw

- name: git clone RabbitCommon
working-directory: ${{env.SOURCE_DIR}}
run: git clone https://github.com/KangLin/RabbitCommon.git

- name: build log4qt
working-directory: ${{env.SOURCE_DIR}}
env:
MSYSTEM: MINGW64
PATH: C:\msys64\mingw64\bin;C:\msys64\usr\bin
run: |
IF NOT EXIST ${{env.INSTALL_DIR}}\lib\cmake\Log4Qt (
git clone -b v1.5.1 "https://github.com/MEONMedical/Log4Qt.git"
cd Log4Qt
cmake -E make_directory build
cd build
cmake .. -G"MinGW Makefiles" -DCMAKE_BUILD_TYPE=${{matrix.BUILD_TYPE}} ^
-DCMAKE_INSTALL_PREFIX=${{env.INSTALL_DIR}}
cmake --build . --config ${{matrix.BUILD_TYPE}}
cmake --build . --config ${{matrix.BUILD_TYPE}} --target install
)

- name: build QFtpServer
working-directory: ${{github.workspace}}
env:
RabbitCommon_DIR: ${{env.SOURCE_DIR}}/RabbitCommon
#Qt5_Dir: C:\msys64\mingw64
MSYSTEM: MINGW64
PATH: C:\msys64\mingw64\bin;C:\msys64\usr\bin
run: |
cmake -E make_directory build
cd build
cmake .. -G"MinGW Makefiles" ^
-DCMARK_SHARED=OFF ^
-DCMARK_TESTS=OFF ^
-DCMARK_STATIC=ON ^
-DCMAKE_BUILD_TYPE=${{matrix.BUILD_TYPE}} ^
-DCMAKE_INSTALL_PREFIX=${{github.workspace}}/build/install ^
-DLog4Qt_DIR=/lib/cmake/Log4Qt ^
-DCMAKE_PREFIX_PATH=${{env.INSTALL_DIR}}
cmake --build . --config ${{ matrix.BUILD_TYPE }}
cmake --build . --config ${{ matrix.BUILD_TYPE }} --target install-runtime

- name: Package
working-directory: ${{github.workspace}}/build
run: |
cmake --build . --config ${{ matrix.BUILD_TYPE }} --target install-runtime
move /Y install\plugins\*crypto*.dll install\bin
move /Y install\plugins\*ssl*.dll install\bin
copy /Y C:\msys64\mingw64\bin\*.dll install\bin
copy /Y ${{env.INSTALL_DIR}}\bin\*.dll install\bin
copy /Y ${{env.INSTALL_DIR}}\lib\*.dll install\bin
copy /Y ${{env.RUNVCPKG_VCPKG_ROOT}}\installed\${{env.RUNVCPKG_VCPKG_TRIPLET_OUT}}\bin\*.dll install\bin
makensis ${{github.workspace}}/build/Install.nsi
if: ${{ matrix.BUILD_TYPE == 'Release' }}

- name: update
uses: actions/upload-artifact@v2
with:
name: QFtpServer_${{ matrix.os }}_mingw
path: |
${{github.workspace}}/build/QFtpServer_Setup_${{env.QFtpServer_VERSION}}.exe
if: ${{ matrix.BUILD_TYPE == 'Release' }}
Loading