Milestone 5: deliver embedded RDP sessions and lifecycle hardening

This commit is contained in:
Keith Smith
2026-03-03 18:59:26 -07:00
parent 230a401386
commit 36006bd4aa
2941 changed files with 724359 additions and 77 deletions

View File

@@ -0,0 +1,30 @@
#!/bin/bash -xe
SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd)
MANIFEST=com.freerdp.FreeRDP
BUILD_BASE=$(mktemp -d)
if [ $# -gt 0 ]; then
BUILD_BASE=$1
fi
echo "Using $BUILD_BASE as temporary build directory"
REPO=$BUILD_BASE/repo
BUILD=$BUILD_BASE/build
STATE=$BUILD_BASE/state
BUILDER=$(which flatpak-builder)
if [ ! -x "$BUILDER" ]; then
echo "command 'flatpak-builder' could not be found, please install and add to PATH"
exit 1
fi
FLATPAK=$(which flatpak)
if [ ! -x "$FLATPAK" ]; then
echo "command 'flatpak' could not be found, please install and add to PATH"
exit 1
fi
flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo --user
flatpak-builder -v --repo=$REPO --state-dir=$STATE $BUILD $SCRIPT_DIR/$MANIFEST.json --force-clean --user --install-deps-from=flathub
flatpak build-bundle -v $REPO $MANIFEST.flatpak $MANIFEST --runtime-repo=https://flathub.org/repo/flathub.flatpakrepo

View File

@@ -0,0 +1,121 @@
{
"add-build-extensions": {
"org.freedesktop.Platform.ffmpeg-full": {
"add-ld-path": ".",
"directory": "lib/ffmpeg",
"version": "24.08"
},
"org.freedesktop.Platform.openh264": {
"add-ld-path": ".",
"directory": "lib/openh264",
"version": "2.5.1"
}
},
"app-id": "com.freerdp.FreeRDP",
"build-options": {
"cflags": "-O3",
"cxxflags": "-O3"
},
"cleanup": [
"*.a",
"*.la",
"/include",
"/lib/cmake",
"/lib/pkgconfig",
"/sbin",
"/share/doc",
"/share/examples",
"/share/man"
],
"command": "sdl-freerdp",
"finish-args": [
"--device=dri",
"--share=ipc",
"--socket=x11",
"--share=network",
"--socket=pulseaudio",
"--socket=cups",
"--socket=wayland",
"--filesystem=xdg-download",
"--talk-name=com.microsoft.identity.broker1",
"--env=OPENSSL_CONF=/app/share/legacy-openssl.cnf"
],
"modules": [
"modules/openssl.json",
"modules/libusb.json",
"modules/uriparser.json",
"modules/cJSON.json",
"modules/pcsc.json",
"modules/krb5.json",
"modules/opensc.json",
"modules/SDL3.json",
"modules/SDL3_image.json",
"modules/SDL3_ttf.json",
"modules/sso-mib.json",
{
"builddir": true,
"buildsystem": "cmake-ninja",
"cleanup": [],
"config-opts": [
"-DCMAKE_VERBOSE_MAKEFILE=ON",
"-DCMAKE_BUILD_TYPE:STRING=Release",
"-DCMAKE_INSTALL_LIBDIR:PATH=lib",
"-DWITHOUT_FREERDP_3x_DEPRECATED=ON",
"-DWITH_SSO_MIB=ON",
"-DWITH_FREERDP_DEPRECATED_COMMANDLINE=ON",
"-DCHANNEL_TSMF:BOOL=OFF",
"-DCHANNEL_URBDRC:BOOL=ON",
"-DCHANNEL_RDPECAM_CLIENT:BOOL=ON",
"-DBUILD_TESTING:BOOL=OFF",
"-DWITH_MANPAGES:BOOL=OFF",
"-DWITH_KRB5:BOOL=ON",
"-DWITH_PCSC:BOOL=ON",
"-DWITH_SDL_IMAGE_DIALOGS:BOOL=ON",
"-DWITH_INTERNAL_MD4:BOOL=ON",
"-DWITH_INTERNAL_MD5:BOOL=ON",
"-DWITH_INTERNAL_RC4:BOOL=ON",
"-DWITH_PKCS11:BOOL=ON",
"-DWITH_SWSCALE:BOOL=ON",
"-DWITH_SERVER:BOOL=ON",
"-DWITH_SAMPLE:BOOL=ON",
"-DWITH_CUPS:BOOL=ON",
"-DWITH_OPUS:BOOL=ON",
"-DWITH_FUSE:BOOL=OFF",
"-DWITH_FFMPEG:BOOL=ON",
"-DWINPR_UTILS_IMAGE_PNG:BOOL=ON",
"-DWINPR_UTILS_IMAGE_WEBP:BOOL=ON",
"-DWINPR_UTILS_IMAGE_JPEG:BOOL=ON",
"-DWITH_URIPARSER:BOOL=ON",
"-DWITH_DSP_FFMPEG:BOOL=ON",
"-DWITH_OSS:BOOL=OFF",
"-DWITH_WEBVIEW:BOOL=OFF",
"-DWITH_PULSE:BOOL=ON"
],
"name": "freerdp",
"sources": [
{
"path": "../..",
"type": "dir"
}
]
},
{
"build-commands": [
"install -D legacy-openssl.cnf $FLATPAK_DEST/share/legacy-openssl.cnf",
"mkdir -p /app/lib/ffmpeg",
"mkdir -p /app/lib/openh264"
],
"buildsystem": "simple",
"name": "wrapper",
"sources": [
{
"path": "legacy-openssl.cnf",
"type": "file"
}
]
}
],
"runtime": "org.freedesktop.Platform",
"runtime-version": "24.08",
"sdk": "org.freedesktop.Sdk"
}

View File

@@ -0,0 +1,12 @@
[openssl_init]
providers = provider_sect
[provider_sect]
default = default_sect
legacy = legacy_sect
[default_sect]
activate = 1
[legacy_sect]
activate = 1

View File

@@ -0,0 +1,33 @@
{
"builddir": true,
"buildsystem": "cmake-ninja",
"cleanup": [
"/include",
"/lib/*.la",
"/lib/*.a",
"/lib/cmake",
"/share/aclocal",
"/lib/pkgconfig"
],
"config-opts": [
"-DCMAKE_VERBOSE_MAKEFILE=ON",
"-DCMAKE_BUILD_TYPE:STRING=Release",
"-DCMAKE_INSTALL_LIBDIR:PATH=lib"
],
"name": "SDL3",
"sources": [
{
"sha256": "b7e7dc05011b88c69170fe18935487b2559276955e49113f8c1b6b72c9b79c1f",
"type": "archive",
"url":
"https://github.com/libsdl-org/SDL/releases/download/release-3.2.14/SDL3-3.2.14.tar.gz",
"x-checker-data": {
"project-id": 4781,
"stable-only": true,
"type": "anitya",
"url-template":
"https://github.com/libsdl-org/SDL/releases/download/release-${version}/SDL3-${version}.tar.gz"
}
}
]
}

View File

@@ -0,0 +1,33 @@
{
"builddir": true,
"buildsystem": "cmake-ninja",
"cleanup": [
"/include",
"/lib/*.la",
"/lib/*.a",
"/lib/cmake",
"/share/aclocal",
"/lib/pkgconfig"
],
"config-opts": [
"-DCMAKE_VERBOSE_MAKEFILE=ON",
"-DCMAKE_BUILD_TYPE:STRING=Release",
"-DCMAKE_INSTALL_LIBDIR:PATH=lib"
],
"name": "SDL3_image",
"sources": [
{
"sha256": "a725bd6d04261fdda0dd8d950659e1dc15a8065d025275ef460d32ae7dcfc182",
"type": "archive",
"url":
"https://github.com/libsdl-org/SDL_image/releases/download/release-3.2.4/SDL3_image-3.2.4.tar.gz",
"x-checker-data": {
"project-id": 4781,
"stable-only": true,
"type": "anitya",
"url-template":
"https://github.com/libsdl-org/SDL_image/releases/download/release-${version}/SDL3_image-${version}.tar.gz"
}
}
]
}

View File

@@ -0,0 +1,33 @@
{
"builddir": true,
"buildsystem": "cmake-ninja",
"cleanup": [
"/include",
"/lib/*.la",
"/lib/*.a",
"/lib/cmake",
"/share/aclocal",
"/lib/pkgconfig"
],
"config-opts": [
"-DCMAKE_VERBOSE_MAKEFILE=ON",
"-DCMAKE_BUILD_TYPE:STRING=Release",
"-DCMAKE_INSTALL_LIBDIR:PATH=lib"
],
"name": "SDL3_ttf",
"sources": [
{
"sha256": "63547d58d0185c833213885b635a2c0548201cc8f301e6587c0be1a67e1e045d",
"type": "archive",
"url":
"https://github.com/libsdl-org/SDL_ttf/releases/download/release-3.2.2/SDL3_ttf-3.2.2.tar.gz",
"x-checker-data": {
"project-id": 4784,
"stable-only": true,
"type": "anitya",
"url-template":
"https://github.com/libsdl-org/SDL_ttf/releases/download/release-${version}/SDL3_ttf-${version}.tar.gz"
}
}
]
}

View File

@@ -0,0 +1,27 @@
{
"builddir": true,
"buildsystem": "cmake-ninja",
"cleanup": [],
"config-opts": [
"-DCMAKE_VERBOSE_MAKEFILE=ON",
"-DCMAKE_BUILD_TYPE:STRING=Release",
"-DCMAKE_INSTALL_LIBDIR:PATH=lib",
"-DENABLE_CJSON_TEST:BOOL=OFF",
"-DENABLE_CJSON_UTILS:BOOL=OFF"
],
"name": "cjson",
"sources": [
{
"sha256": "3aa806844a03442c00769b83e99970be70fbef03735ff898f4811dd03b9f5ee5",
"type": "archive",
"url": "https://github.com/DaveGamble/cJSON/archive/refs/tags/v1.7.18.tar.gz",
"x-checker-data": {
"project-id": 21330,
"stable-only": true,
"type": "anitya",
"url-template":
"https://github.com/DaveGamble/cJSON/archive/refs/tags/v${version0}.${version1}.${version2}.tar.gz"
}
}
]
}

View File

@@ -0,0 +1,19 @@
{
"buildsystem": "autotools",
"name": "krb5",
"sources": [
{
"sha256": "6a516fd180bdfe11c0c0ad774999e1a66295253390475cbfa88835983cf39559",
"type": "archive",
"url": "https://kerberos.org/dist/krb5/1.22/krb5-1.22-beta1.tar.gz",
"x-checker-data": {
"project-id": 13287,
"stable-only": true,
"type": "anitya",
"url-template":
"https://kerberos.org/dist/krb5/${version0}.${version1}/krb5-${version0}.${version1}.${version2}.tar.gz"
}
}
],
"subdir": "src"
}

View File

@@ -0,0 +1,29 @@
{
"cleanup": [
"/lib/*.la",
"/lib/pkgconfig",
"/include"
],
"config-opts": [
"--disable-static"
],
"name": "libusb",
"post-install": [
"install -Dm644 COPYING /app/share/licenses/libusb/COPYING"
],
"sources": [
{
"sha256": "966bb0d231f94a474eaae2e67da5ec844d3527a1f386456394ff432580634b29",
"type": "archive",
"url":
"https://github.com/libusb/libusb/releases/download/v1.0.28/libusb-1.0.28.tar.bz2",
"x-checker-data": {
"project-id": 13287,
"stable-only": true,
"type": "anitya",
"url-template":
"https://github.com/libusb/libusb/releases/download/v${version}/libusb-${version}.tar.bz2"
}
}
]
}

View File

@@ -0,0 +1,25 @@
{
"buildsystem": "autotools",
"cleanup": [],
"config-opts": [
"--disable-assert",
"--disable-fuzzing",
"--disable-man",
"--disable-strict"
],
"name": "opensc",
"sources": [
{
"sha256": "f16291a031d86e570394762e9f35eaf2fcbc2337a49910f3feae42d54e1688cb",
"type": "archive",
"url": "https://github.com/OpenSC/OpenSC/releases/download/0.26.1/opensc-0.26.1.tar.gz",
"x-checker-data": {
"project-id": 13287,
"stable-only": true,
"type": "anitya",
"url-template":
"https://github.com/OpenSC/OpenSC/releases/download/${version}/opensc-${version}.tar.gz"
}
}
]
}

View File

@@ -0,0 +1,25 @@
{
"build-commands": [
"./config --prefix=/app --openssldir=/app --libdir=lib shared",
"make -j ${FLATPAK_BUILDER_N_JOBS} build_sw",
"make -j ${FLATPAK_BUILDER_N_JOBS} install_sw"
],
"buildsystem": "simple",
"cleanup": [],
"name": "openssl",
"sources": [
{
"sha256": "344d0a79f1a9b08029b0744e2cc401a43f9c90acd1044d09a530b4885a8e9fc0",
"type": "archive",
"url":
"https://github.com/openssl/openssl/releases/download/openssl-3.5.0/openssl-3.5.0.tar.gz",
"x-checker-data": {
"project-id": 13287,
"stable-only": true,
"type": "anitya",
"url-template":
"https://github.com/openssl/openssl/releases/download/openssl-${version}/openssl-${version}.tar.gz"
}
}
]
}

View File

@@ -0,0 +1,29 @@
{
"cleanup": [
"/share/doc",
"/share/man"
],
"config-opts": [
"--disable-libsystemd",
"--enable-pic",
"--disable-libusb",
"--enable-shared",
"--disable-polkit",
"--with-systemdsystemunitdir=/app/lib/systemd/"
],
"name": "pcsc",
"sources": [
{
"sha256": "00b667aa71504ed1d39a48ad377de048c70dbe47229e8c48a3239ab62979c70f",
"type": "archive",
"url": "https://github.com/LudovicRousseau/PCSC/archive/refs/tags/2.3.3.tar.gz",
"x-checker-data": {
"project-id": 2611,
"stable-only": true,
"type": "anitya",
"url-template":
"https://github.com/LudovicRousseau/PCSC/archive/refs/tags/${version0}.${version1}.${version2}"
}
}
]
}

View File

@@ -0,0 +1,32 @@
{
"builddir": true,
"buildsystem": "meson",
"cleanup": [
"/include",
"/lib/pkgconfig",
"/bin"
],
"config-opts": [
"-Ddefault_library=shared",
"-Db_pie=true",
"-Db_lto=true",
"-Ddocumentation=false",
"-Dexamples=false",
"-Dpkgconfig.relocatable=true"
],
"name": "sso-mib",
"sources": [
{
"sha256": "48c39c76e251ff844e7b8d4c2f1a7cea02fef55dfedd5d87ccf777b6d159db25",
"type": "archive",
"url": "https://github.com/siemens/sso-mib/archive/refs/tags/v0.5.0.tar.gz",
"x-checker-data": {
"project-id": 378306,
"stable-only": true,
"type": "anitya",
"url-template":
"https://github.com/siemens/sso-mib/archive/refs/tags/v${version}.tar.gz"
}
}
]
}

View File

@@ -0,0 +1,28 @@
{
"builddir": true,
"buildsystem": "cmake-ninja",
"cleanup": [],
"config-opts": [
"-DCMAKE_VERBOSE_MAKEFILE=ON",
"-DCMAKE_BUILD_TYPE:STRING=Release",
"-DCMAKE_INSTALL_LIBDIR:PATH=lib",
"-DURIPARSER_BUILD_DOCS:BOOL=OFF",
"-DURIPARSER_BUILD_TESTS:BOOL=OFF"
],
"name": "urlparser",
"sources": [
{
"sha256": "1d71c054837ea32a31e462bce5a1af272379ecf511e33448e88100b87ff73b2e",
"type": "archive",
"url":
"https://github.com/uriparser/uriparser/releases/download/uriparser-0.9.8/uriparser-0.9.8.tar.xz",
"x-checker-data": {
"project-id": 10160,
"stable-only": true,
"type": "anitya",
"url-template":
"https://github.com/uriparser/uriparser/releases/download/uriparser-${version0}.${version1}.${version2}/uriparser-${version0}.${version1}.${version2}.tar.xz"
}
}
]
}