Compare commits
85 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
8662bfe619
|
|||
|
f978c96265
|
|||
|
000bd789b1
|
|||
|
cd2545934e
|
|||
|
efa23f6b50
|
|||
|
5083bedf57
|
|||
|
a621e58db8
|
|||
|
fa41eb1b02
|
|||
|
5f3b4b7ddb
|
|||
|
0d09c9701d
|
|||
|
17e46ed0b2
|
|||
|
5931143564
|
|||
|
36f9cac0af
|
|||
|
eea479b3df
|
|||
|
d38aeda6c0
|
|||
|
2e0f3849be
|
|||
|
ef4f0f3e18
|
|||
|
259b3fb58d
|
|||
|
54aae72e28
|
|||
|
fbcae78456
|
|||
|
364da38f3c
|
|||
|
6992aa696c
|
|||
|
f02f631820
|
|||
|
d5d8c4d07a
|
|||
|
6fc26bb6af
|
|||
|
5556e8d890
|
|||
|
a03da0f8bb
|
|||
|
86540bfa0d
|
|||
|
fb2d36d84c
|
|||
|
6c5606174a
|
|||
|
76bbf76666
|
|||
|
04c2cff8d9
|
|||
|
776a92fae1
|
|||
|
ca3a30982f
|
|||
|
7052b0be80
|
|||
|
81d27b0799
|
|||
|
15f2c3d10f
|
|||
|
42bd5acf03
|
|||
|
d869da8d07
|
|||
|
da53ae19bd
|
|||
|
07c85079f4
|
|||
|
ecbf52b25f
|
|||
|
a64a31eb2d
|
|||
|
138cbd029a
|
|||
|
9916fee478
|
|||
|
417dc096ff
|
|||
|
161d8dbd2a
|
|||
|
1f0e1bd229
|
|||
|
b596f32d66
|
|||
|
89dfb7169f
|
|||
|
cb001018ba
|
|||
|
3f0a310f5f
|
|||
|
f449e4f8ba
|
|||
|
58808e0a7c
|
|||
|
a765fb904d
|
|||
|
a05570365d
|
|||
|
014f5b3cc2
|
|||
|
ab881ca709
|
|||
|
08b4631032
|
|||
|
4aa5ff1e2c
|
|||
|
c02a887992
|
|||
|
592ee09793
|
|||
|
93c8e4a50a
|
|||
|
53fa8e4a1e
|
|||
|
23fa27fa7d
|
|||
|
ec45bb4a1f
|
|||
|
d760a491c4
|
|||
|
3bc9492a90
|
|||
|
716a2a1e34
|
|||
|
dca16b890d
|
|||
|
610108d860
|
|||
|
3f26865ea8
|
|||
|
494e255282
|
|||
|
63bb811bb0
|
|||
|
18cc340519
|
|||
|
ac2c16f81e
|
|||
|
678c32893e
|
|||
|
bff921c878
|
|||
|
b998801c40
|
|||
|
504957b611
|
|||
|
e47dd436a0
|
|||
|
447f895865
|
|||
|
c4ff05da64
|
|||
|
e917219c28
|
|||
|
b3a9e45e8e
|
42
.gitea/workflows/deploy_doublecmd.yaml
Normal file
42
.gitea/workflows/deploy_doublecmd.yaml
Normal file
@@ -0,0 +1,42 @@
|
||||
name: com.angoosh.doublecmd deploy
|
||||
run-name: ${{ gitea.actor }}
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
paths:
|
||||
- com.angoosh.doublecmd/**
|
||||
jobs:
|
||||
flatpak:
|
||||
name: "Flatpak"
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: bilelmoussaoui/flatpak-github-actions:gnome-44
|
||||
options: --privileged
|
||||
|
||||
steps:
|
||||
- run: sudo dnf install -y nodejs
|
||||
- name: "Check out repo code"
|
||||
uses: actions/checkout@v4
|
||||
- name: Import GPG key
|
||||
uses: crazy-max/ghaction-import-gpg@v6
|
||||
with:
|
||||
gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }}
|
||||
passphrase: ${{ secrets.GPG_PRIVATE_KEY_PASS }}
|
||||
|
||||
- name: "Build"
|
||||
uses: flatpak/flatpak-github-actions/flatpak-builder@v6
|
||||
with:
|
||||
bundle: doublecmd.flatpak
|
||||
manifest-path: com.angoosh.doublecmd/com.angoosh.doublecmd.yml
|
||||
cache-key: flatpak-builder-${{ gitea.sha }}
|
||||
gpg-sign: kaplanantonin@gmail.com
|
||||
|
||||
- name: Push flatpak to repo
|
||||
run: |
|
||||
git clone https://github.com/flatpak/flat-manager.git
|
||||
export REPO_TOKEN=${{ secrets.FLATMAN_API_TOKEN }}
|
||||
export FLATMAN_URL=$(./flat-manager/flat-manager-client create https://flatpak.angoosh.com stable)
|
||||
echo $REPO_TOKEN
|
||||
echo $FLATMAN_URL
|
||||
./flat-manager/flat-manager-client push --commit $FLATMAN_URL repo
|
||||
./flat-manager/flat-manager-client publish $FLATMAN_URL
|
||||
45
.gitea/workflows/deploy_rdpconnect.yaml
Normal file
45
.gitea/workflows/deploy_rdpconnect.yaml
Normal file
@@ -0,0 +1,45 @@
|
||||
name: com.angoosh.RDPConnect deploy
|
||||
run-name: ${{ gitea.actor }}
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
paths:
|
||||
- com.angoosh.RDPConnect/**
|
||||
jobs:
|
||||
flatpak:
|
||||
name: "Flatpak"
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: bilelmoussaoui/flatpak-github-actions:gnome-44
|
||||
options: --privileged
|
||||
|
||||
steps:
|
||||
- run: sudo dnf install -y nodejs
|
||||
- name: "Check out repo code"
|
||||
uses: actions/checkout@v4
|
||||
- name: Import GPG key
|
||||
uses: crazy-max/ghaction-import-gpg@v6
|
||||
with:
|
||||
gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }}
|
||||
passphrase: ${{ secrets.GPG_PRIVATE_KEY_PASS }}
|
||||
|
||||
- name: "Build"
|
||||
uses: flatpak/flatpak-github-actions/flatpak-builder@v6
|
||||
with:
|
||||
build-bundle: false
|
||||
upload-artifact: false
|
||||
cache: false
|
||||
restore-cache: false
|
||||
manifest-path: com.angoosh.RDPConnect/com.angoosh.RDPConnect.yml
|
||||
cache-key: flatpak-builder-${{ gitea.sha }}
|
||||
gpg-sign: kaplanantonin@gmail.com
|
||||
|
||||
- name: Push flatpak to repo
|
||||
run: |
|
||||
git clone https://github.com/flatpak/flat-manager.git
|
||||
export REPO_TOKEN=${{ secrets.FLATMAN_API_TOKEN }}
|
||||
export FLATMAN_URL=$(./flat-manager/flat-manager-client create https://flatpak.angoosh.com stable)
|
||||
echo $REPO_TOKEN
|
||||
echo $FLATMAN_URL
|
||||
./flat-manager/flat-manager-client push --commit $FLATMAN_URL repo
|
||||
./flat-manager/flat-manager-client publish $FLATMAN_URL
|
||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,2 +1,3 @@
|
||||
#Ignore all repo directories
|
||||
.flatpak-builder/
|
||||
com.angoosh.RDPConnect/testing.py
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
#!/bin/bash
|
||||
flatpak-builder --gpg-sign=kaplanantonin@gmail.com --force-clean --user --install-deps-from=flathub --repo=../repo --install builddir com.angoosh.RDPConnect.yml
|
||||
#flatpak build-bundle repo RDPConnect.flatpak com.angoosh.RDPConnect --runtime-repo=https://flathub.org/repo/flathub.flatpakrepo
|
||||
####flatpak build-bundle repo RDPConnect.flatpak com.angoosh.RDPConnect --runtime-repo=https://flathub.org/repo/flathub.flatpakrepo
|
||||
|
||||
@@ -43,30 +43,30 @@
|
||||
<url type="vcs-browser">https://gitea.farmdash.org/angoosh/Flatpaks/src/branch/main/com.angoosh.RDPConnect</url>
|
||||
|
||||
<releases>
|
||||
<release version="1.0.1" date="2024-11-20">
|
||||
<url type="details">https://gitea.farmdash.org/angoosh/Flatpaks/commits/branch/main</url>
|
||||
<description>
|
||||
<p>Changed directory permissions from home to xdg-config</p>
|
||||
</description>
|
||||
</release>
|
||||
<release version="1.0.2" date="2024-11-20">
|
||||
<url type="details">https://gitea.farmdash.org/angoosh/Flatpaks/commit/85ea660c7e11d0c65c8aef23fcf76853882975cf</url>
|
||||
<description>
|
||||
<p>Password is now encrypted</p>
|
||||
</description>
|
||||
</release>
|
||||
<release version="1.0.3" date="2024-11-20">
|
||||
<url type="details">https://gitea.farmdash.org/angoosh/Flatpaks/commit/2093a21ecfa86c20f15b9b44897d1c7bebfafd79</url>
|
||||
<description>
|
||||
<p>Cropped screenshot and made background invisible</p>
|
||||
</description>
|
||||
</release>
|
||||
<release version="1.1.0" date="2024-11-22">
|
||||
<url type="details">https://gitea.farmdash.org/angoosh/Flatpaks/commit/2093a21ecfa86c20f15b9b44897d1c7bebfafd79</url>
|
||||
<url type="details">https://gitea.farmdash.org/angoosh/Flatpaks/src/tag/1.1.0</url>
|
||||
<description>
|
||||
<p>Created about section, borgar menu, settings menu and we have easy settings for the rdp connection now</p>
|
||||
</description>
|
||||
</release>
|
||||
<release version="1.2.0" date="2025-02-19">
|
||||
<url type="details">https://gitea.farmdash.org/angoosh/Flatpaks/src/tag/1.2.0</url>
|
||||
<description>
|
||||
<p>Updated to newest FreeRDP which seems to fix issues with hanging / freezing</p>
|
||||
</description>
|
||||
</release>
|
||||
<release version="1.3.0" date="2025-09-16">
|
||||
<url type="details">https://gitea.farmdash.org/angoosh/Flatpaks/src/tag/1.3.0</url>
|
||||
<description>
|
||||
<p>Changed pasword storage from file to system keyring. Still using file for compatibility. Added connection history menu.</p>
|
||||
</description>
|
||||
</release>
|
||||
<release version="1.3.1" date="2025-09-16">
|
||||
<url type="details">https://gitea.farmdash.org/angoosh/Flatpaks/src/tag/1.3.1</url>
|
||||
<description>
|
||||
<p>History menu now shows only unique entries, no duplicates</p>
|
||||
</description>
|
||||
</release>
|
||||
</releases>
|
||||
|
||||
<screenshots>
|
||||
|
||||
@@ -1,10 +1,7 @@
|
||||
id: com.angoosh.RDPConnect
|
||||
runtime: org.gnome.Platform
|
||||
#runtime: org.freedesktop.Platform
|
||||
runtime-version: '47'
|
||||
#runtime-version: '23.08'
|
||||
sdk: org.gnome.Sdk
|
||||
#sdk: org.freedesktop.Sdk
|
||||
command: rdpconnect
|
||||
|
||||
build-options:
|
||||
@@ -31,30 +28,33 @@ finish-args:
|
||||
- --socket=pulseaudio
|
||||
- --socket=cups
|
||||
- --filesystem=xdg-config
|
||||
- --filesystem=xdg-download
|
||||
- --socket=pcsc
|
||||
# - --socket=system-bus
|
||||
- --socket=session-bus
|
||||
# - --talk-name=org.freedesktop.Flatpak
|
||||
|
||||
add-build-extensions:
|
||||
org.freedesktop.Platform.ffmpeg-full:
|
||||
- directory: lib/ffmpeg
|
||||
version: 23.08
|
||||
version: 24.08
|
||||
add-ld-path: .
|
||||
org.freedesktop.Platform.openh264:
|
||||
- directory: lib/openh264
|
||||
version: 2.4.1
|
||||
add-ld-path: .
|
||||
|
||||
|
||||
modules:
|
||||
- modules/openssl.json
|
||||
- modules/libusb.json
|
||||
- modules/uriparser.json
|
||||
- modules/SDL2_ttf.json
|
||||
- modules/SDL2_image.json
|
||||
- modules/cJSON.json
|
||||
- modules/xprop.json
|
||||
- modules/pcsc.json
|
||||
- modules/krb5.json
|
||||
- modules/uriparser.json
|
||||
- modules/pkcs11-helper.json
|
||||
- modules/opensc.json
|
||||
- modules/krb5.json
|
||||
- modules/freerdp.json
|
||||
|
||||
- name: python
|
||||
@@ -69,7 +69,7 @@ modules:
|
||||
build-args:
|
||||
- --share=network
|
||||
build-commands:
|
||||
- pip3 install PyGObject cryptography
|
||||
- pip3 install PyGObject cryptography keyring
|
||||
|
||||
- name: rdpconnect
|
||||
buildsystem: simple
|
||||
|
||||
@@ -18,13 +18,15 @@ from cryptography.fernet import Fernet
|
||||
gi.require_version('Gtk', '4.0')
|
||||
gi.require_version('Adw', '1')
|
||||
from gi.repository import Gtk, Adw, Gdk, Gio
|
||||
import keyring
|
||||
|
||||
APPID = "com.angoosh.RDPConnect"
|
||||
HOMEDIR = os.path.expanduser('~')
|
||||
|
||||
VERSION = "1.1.0"
|
||||
VERSION = "1.3.1"
|
||||
|
||||
conn_info = {}
|
||||
hist_info = {}
|
||||
settings = {}
|
||||
settings["extra_params"] = {}
|
||||
fernet = ""
|
||||
@@ -45,18 +47,30 @@ def load_keys():
|
||||
fernet = Fernet(cryptoKey)
|
||||
|
||||
def load_config():
|
||||
global conn_info, settings
|
||||
global conn_info, settings, hist_info
|
||||
loaded_json = ""
|
||||
try:
|
||||
with open(HOMEDIR+"/.config/rdpconnect/connection.json", "r") as connection_file:
|
||||
for line in connection_file:
|
||||
with open(HOMEDIR+"/.config/rdpconnect/history.json", "r") as history_file:
|
||||
for line in history_file:
|
||||
loaded_json += line
|
||||
|
||||
conn_info = json.loads(loaded_json)
|
||||
hist_info = json.loads(loaded_json)
|
||||
last_conn = hist_info[max(hist_info)]
|
||||
conn_info["user"] = last_conn.split('@')[0]
|
||||
conn_info["ip"] = last_conn.split('@')[1]
|
||||
conn_info["passwd"] = keyring.get_password("com.angoosh.RDPConnect", last_conn)
|
||||
|
||||
conn_info["passwd"] = fernet.decrypt(str.encode(conn_info["passwd"])).decode()
|
||||
except:
|
||||
print("[WARN] FILE: "+HOMEDIR+"/.config/rdpconnect/connection.json doesn't exist")
|
||||
try:
|
||||
with open(HOMEDIR+"/.config/rdpconnect/connection.json", "r") as connection_file:
|
||||
for line in connection_file:
|
||||
loaded_json += line
|
||||
|
||||
conn_info = json.loads(loaded_json)
|
||||
|
||||
conn_info["passwd"] = fernet.decrypt(str.encode(conn_info["passwd"])).decode()
|
||||
except:
|
||||
print("[WARN] FILE: "+HOMEDIR+"/.config/rdpconnect/connection.json doesn't exist")
|
||||
|
||||
loaded_json = ""
|
||||
try:
|
||||
@@ -68,6 +82,50 @@ def load_config():
|
||||
except:
|
||||
print("[WARN] FILE: "+HOMEDIR+"/.config/rdpconnect/settings.json doesn't exist")
|
||||
|
||||
class HistoryWindow(Gtk.Window):
|
||||
global hist_info, conn_info, app
|
||||
def __init__(self, **kargs):
|
||||
super().__init__(**kargs, title='History')
|
||||
|
||||
self.set_default_size(100, 300)
|
||||
|
||||
self.scroll = Gtk.ScrolledWindow()
|
||||
self.scroll.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC)
|
||||
|
||||
self.grid = Gtk.Grid()
|
||||
|
||||
self.scroll.set_child(self.grid)
|
||||
|
||||
index = 0
|
||||
for i in hist_info:
|
||||
self.addRow(hist_info[i], index)
|
||||
index += 1
|
||||
|
||||
self.set_child(self.scroll)
|
||||
|
||||
self.show()
|
||||
|
||||
def addRow(self, entry, index):
|
||||
b = Gtk.Button(label=entry)
|
||||
b.connect("clicked", self.apply_contents)
|
||||
|
||||
self.grid.attach(b, 0, index, 1, 1)
|
||||
|
||||
def apply_contents(self, button):
|
||||
conn_info["user"] = button.get_label().split('@')[0]
|
||||
conn_info["ip"] = button.get_label().split('@')[1]
|
||||
|
||||
app.ip.get_buffer().set_text(str(conn_info["ip"]), len(conn_info["ip"]))
|
||||
app.user.get_buffer().set_text(str(conn_info["user"]), len(conn_info["user"]))
|
||||
|
||||
try:
|
||||
conn_info["passwd"] = keyring.get_password("com.angoosh.RDPConnect", button.get_label())
|
||||
app.passwd.get_buffer().set_text(str(conn_info["passwd"]), len(conn_info["passwd"]))
|
||||
except:
|
||||
pass
|
||||
|
||||
self.destroy()
|
||||
|
||||
class PreferencesWindow(Gtk.Window):
|
||||
global settings
|
||||
def __init__(self, **kwargs):
|
||||
@@ -97,13 +155,13 @@ class PreferencesWindow(Gtk.Window):
|
||||
except:
|
||||
pass
|
||||
try:
|
||||
self.mic.set_state(settings["extra_params"]["microphone"])
|
||||
self.mic.set_active(settings["extra_params"]["microphone"])
|
||||
self.mic.set_state(settings["extra_params"]["microphone:sys:alsa"])
|
||||
self.mic.set_active(settings["extra_params"]["microphone:sys:alsa"])
|
||||
except:
|
||||
pass
|
||||
try:
|
||||
self.sound.set_state(settings["extra_params"]["sound"])
|
||||
self.sound.set_active(settings["extra_params"]["sound"])
|
||||
self.sound.set_state(settings["extra_params"]["sound:sys:alsa"])
|
||||
self.sound.set_active(settings["extra_params"]["sound:sys:alsa"])
|
||||
except:
|
||||
pass
|
||||
try:
|
||||
@@ -156,15 +214,15 @@ class PreferencesWindow(Gtk.Window):
|
||||
|
||||
def microphone(self, app, state):
|
||||
if state:
|
||||
settings["extra_params"]["microphone"] = True
|
||||
settings["extra_params"]["microphone:sys:alsa"] = True
|
||||
else:
|
||||
settings["extra_params"]["microphone"] = False
|
||||
settings["extra_params"]["microphone:sys:alsa"] = False
|
||||
|
||||
def sound(self, app, state):
|
||||
if state:
|
||||
settings["extra_params"]["sound"] = True
|
||||
settings["extra_params"]["sound:sys:alsa"] = True
|
||||
else:
|
||||
settings["extra_params"]["sound"] = False
|
||||
settings["extra_params"]["sound:sys:alsa"] = False
|
||||
|
||||
def xfree(self, app, state):
|
||||
if state:
|
||||
@@ -186,6 +244,7 @@ class PreferencesWindow(Gtk.Window):
|
||||
|
||||
|
||||
class MyApp(Adw.Application):
|
||||
global hist_info
|
||||
def __init__(self, **kwargs):
|
||||
super().__init__(**kwargs)
|
||||
self.connect('activate', self.on_activate)
|
||||
@@ -245,6 +304,10 @@ class MyApp(Adw.Application):
|
||||
action.connect('activate', self.on_about)
|
||||
self.add_action(action)
|
||||
|
||||
action = Gio.SimpleAction(name='history')
|
||||
action.connect('activate', self.on_history)
|
||||
self.add_action(action)
|
||||
|
||||
def on_about(self, action, param):
|
||||
about_dialog = Gtk.AboutDialog(transient_for=self.win, modal=True)
|
||||
about_dialog.set_copyright("Antonin Kaplan")
|
||||
@@ -258,17 +321,36 @@ class MyApp(Adw.Application):
|
||||
def on_preferences(self, action, param):
|
||||
PreferencesWindow()
|
||||
|
||||
def on_history(self, action, param):
|
||||
HistoryWindow()
|
||||
|
||||
def saveConnConf(self):
|
||||
if settings["save_conn"]:
|
||||
password = conn_info["passwd"]
|
||||
conn_info["passwd"] = fernet.encrypt(password.encode()).decode("utf-8")
|
||||
useratip = conn_info["user"] + "@" + conn_info["ip"]
|
||||
|
||||
print("Saving connection config to "+HOMEDIR+"/.config/rdpconnect/connection.json")
|
||||
with open(HOMEDIR+"/.config/rdpconnect/connection.json", "w") as connection_file:
|
||||
js = json.dumps(conn_info, sort_keys=True, indent=4, separators=(',', ': '))
|
||||
connection_file.write(js)
|
||||
new_conn = 1
|
||||
for i in hist_info:
|
||||
if hist_info[i] == useratip:
|
||||
new_conn = 0
|
||||
if new_conn == 1:
|
||||
with open(HOMEDIR+"/.config/rdpconnect/history.json", "w") as hist_file:
|
||||
hist_id = str(int(max(hist_info, default=0)) + 1)
|
||||
hist_info[hist_id] = useratip
|
||||
js = json.dumps(hist_info, sort_keys=True, indent=4, separators=(',', ': '))
|
||||
hist_file.write(js)
|
||||
|
||||
conn_info["passwd"] = password
|
||||
try:
|
||||
keyring.set_password("com.angoosh.RDPConnect", useratip, password)
|
||||
except:
|
||||
conn_info["passwd"] = fernet.encrypt(password.encode()).decode("utf-8")
|
||||
|
||||
print("Saving connection config to "+HOMEDIR+"/.config/rdpconnect/connection.json")
|
||||
with open(HOMEDIR+"/.config/rdpconnect/connection.json", "w") as connection_file:
|
||||
js = json.dumps(conn_info, sort_keys=True, indent=4, separators=(',', ': '))
|
||||
connection_file.write(js)
|
||||
|
||||
conn_info["passwd"] = password
|
||||
else:
|
||||
with open(HOMEDIR+"/.config/rdpconnect/connection.json", "w") as connection_file:
|
||||
connection_file.write("")
|
||||
@@ -306,9 +388,11 @@ class MyApp(Adw.Application):
|
||||
print(extra_params)
|
||||
|
||||
try:
|
||||
subprocess.Popen([settings["rdp_bin"], "/v:"+str(conn_info["ip"]), "/u:"+str(conn_info["user"]), "/p:"+str(conn_info["passwd"])]+extra_params)
|
||||
print("Running", settings["rdp_bin"])
|
||||
subprocess.run([settings["rdp_bin"], "/cert:ignore", "/v:"+str(conn_info["ip"]), "/u:"+str(conn_info["user"]), "/p:"+str(conn_info["passwd"])]+extra_params)
|
||||
except:
|
||||
subprocess.Popen(["sdl-freerdp", "/v:"+str(conn_info["ip"]), "/u:"+str(conn_info["user"]), "/p:"+str(conn_info["passwd"])]+extra_params)
|
||||
print("Running sdl-freerdp")
|
||||
subprocess.run(["sdl-freerdp", "/cert:ignore", "/v:"+str(conn_info["ip"]), "/u:"+str(conn_info["user"]), "/p:"+str(conn_info["passwd"])]+extra_params)
|
||||
|
||||
if not os.path.isdir(HOMEDIR+"/.config/rdpconnect"):
|
||||
os.makedirs(HOMEDIR+"/.config/rdpconnect")
|
||||
|
||||
@@ -2,9 +2,13 @@
|
||||
<interface>
|
||||
<menu id='app-menu'>
|
||||
<section>
|
||||
<item>
|
||||
<attribute name='label'>History</attribute>
|
||||
<attribute name='action'>app.history</attribute>
|
||||
</item>
|
||||
<item>
|
||||
<attribute name='label'>Preferences</attribute>
|
||||
<attribute name='action'>app.preferences</attribute>
|
||||
<attribute name='action'>app.preferences</attribute>
|
||||
</item>
|
||||
<item>
|
||||
<attribute name='label'>About</attribute>
|
||||
|
||||
31
com.angoosh.RDPConnect/modules/SDL2_image.json
Normal file
31
com.angoosh.RDPConnect/modules/SDL2_image.json
Normal file
@@ -0,0 +1,31 @@
|
||||
{
|
||||
"name": "SDL2_image",
|
||||
"buildsystem": "cmake-ninja",
|
||||
"builddir": true,
|
||||
"config-opts": [
|
||||
"-DCMAKE_VERBOSE_MAKEFILE=ON",
|
||||
"-DCMAKE_BUILD_TYPE:STRING=Release",
|
||||
"-DCMAKE_INSTALL_LIBDIR:PATH=lib"
|
||||
],
|
||||
"sources": [
|
||||
{
|
||||
"type": "archive",
|
||||
"url": "https://github.com/libsdl-org/SDL_image/releases/download/release-2.8.4/SDL2_image-2.8.4.tar.gz",
|
||||
"sha256": "f7c06a8783952cfe960adccdd3d8472b63ab31475b4390d10cfdcc1aea61238f",
|
||||
"x-checker-data": {
|
||||
"type": "anitya",
|
||||
"project-id": 4781,
|
||||
"stable-only": true,
|
||||
"url-template": "https://github.com/libsdl-org/SDL_image/releases/download/release-${version0}.${version1}.${version2}/SDL2_image-${version0}.${version1}.${version2}.tar.gz"
|
||||
}
|
||||
}
|
||||
],
|
||||
"cleanup": [
|
||||
"/include",
|
||||
"/lib/*.la",
|
||||
"/lib/*.a",
|
||||
"/lib/cmake",
|
||||
"/share/aclocal",
|
||||
"/lib/pkgconfig"
|
||||
]
|
||||
}
|
||||
31
com.angoosh.RDPConnect/modules/SDL2_ttf.json
Normal file
31
com.angoosh.RDPConnect/modules/SDL2_ttf.json
Normal file
@@ -0,0 +1,31 @@
|
||||
{
|
||||
"name": "SDL2_ttf",
|
||||
"buildsystem": "cmake-ninja",
|
||||
"builddir": true,
|
||||
"config-opts": [
|
||||
"-DCMAKE_VERBOSE_MAKEFILE=ON",
|
||||
"-DCMAKE_BUILD_TYPE:STRING=Release",
|
||||
"-DCMAKE_INSTALL_LIBDIR:PATH=lib"
|
||||
],
|
||||
"sources": [
|
||||
{
|
||||
"type": "archive",
|
||||
"url": "https://github.com/libsdl-org/SDL_ttf/releases/download/release-2.24.0/SDL2_ttf-2.24.0.tar.gz",
|
||||
"sha256": "0b2bf1e7b6568adbdbc9bb924643f79d9dedafe061fa1ed687d1d9ac4e453bfd",
|
||||
"x-checker-data": {
|
||||
"type": "anitya",
|
||||
"project-id": 4784,
|
||||
"stable-only": true,
|
||||
"url-template": "https://github.com/libsdl-org/SDL_ttf/releases/download/release-${version0}.${version1}.${version2}/SDL2_ttf-${version0}.${version1}.${version2}.tar.gz"
|
||||
}
|
||||
}
|
||||
],
|
||||
"cleanup": [
|
||||
"/include",
|
||||
"/lib/*.la",
|
||||
"/lib/*.a",
|
||||
"/lib/cmake",
|
||||
"/share/aclocal",
|
||||
"/lib/pkgconfig"
|
||||
]
|
||||
}
|
||||
@@ -1,19 +1,25 @@
|
||||
{
|
||||
"name": "cjson",
|
||||
"buildsystem": "cmake-ninja",
|
||||
"cleanup": [],
|
||||
"config-opts": [
|
||||
"-Wno-error",
|
||||
"-DCMAKE_VERBOSE_MAKEFILE=ON",
|
||||
"-DCMAKE_BUILD_TYPE:STRING=Release",
|
||||
"-DCMAKE_INSTALL_LIBDIR:PATH=lib"
|
||||
],
|
||||
"sources": [
|
||||
{
|
||||
"type": "git",
|
||||
"url": "https://github.com/DaveGamble/cJSON.git",
|
||||
"tag": "v1.7.17",
|
||||
"commit": "87d8f0961a01bf09bef98ff89bae9fdec42181ee"
|
||||
}
|
||||
]
|
||||
"name": "cjson",
|
||||
"buildsystem": "cmake-ninja",
|
||||
"builddir": true,
|
||||
"cleanup": [],
|
||||
"config-opts": [
|
||||
"-DCMAKE_VERBOSE_MAKEFILE=ON",
|
||||
"-DCMAKE_BUILD_TYPE:STRING=Release",
|
||||
"-DCMAKE_INSTALL_LIBDIR:PATH=lib",
|
||||
"-DWITH_PULSE:BOOL=ON"
|
||||
],
|
||||
"sources": [
|
||||
{
|
||||
"type": "archive",
|
||||
"url": "https://github.com/DaveGamble/cJSON/archive/refs/tags/v1.7.18.tar.gz",
|
||||
"sha256": "3aa806844a03442c00769b83e99970be70fbef03735ff898f4811dd03b9f5ee5",
|
||||
"x-checker-data": {
|
||||
"type": "anitya",
|
||||
"project-id": 21330,
|
||||
"stable-only": true,
|
||||
"url-template": "https://github.com/DaveGamble/cJSON/archive/refs/tags/v${version0}.${version1}.${version2}.tar.gz"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -5,42 +5,50 @@
|
||||
"cleanup": [],
|
||||
"config-opts": [
|
||||
"-DCMAKE_VERBOSE_MAKEFILE=ON",
|
||||
"-DCMAKE_BUILD_TYPE:STRING=Release",
|
||||
"-DCMAKE_INSTALL_LIBDIR:PATH=lib",
|
||||
"-DWITH_FREERDP_DEPRECATED_COMMANDLINE=ON",
|
||||
"-DCHANNEL_TSMF:BOOL=OFF",
|
||||
"-DCHANNEL_URBDRC: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",
|
||||
"-DWITH_WINPR_UTILS_IMAGE_PNG:BOOL=ON",
|
||||
"-DWITH_WINPR_UTILS_IMAGE_WEBP:BOOL=ON",
|
||||
"-DWITH_WINPR_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"
|
||||
"-DCMAKE_BUILD_TYPE:STRING=RelWithDebInfo",
|
||||
"-DCMAKE_INSTALL_LIBDIR:PATH=lib",
|
||||
"-DCHANNEL_TSMF:BOOL=OFF",
|
||||
"-DCHANNEL_URBDRC:BOOL=ON",
|
||||
"-DBUILD_TESTING:BOOL=OFF",
|
||||
"-DWITH_MANPAGES:BOOL=OFF",
|
||||
"-DWITH_WAYLAND:BOOL=ON",
|
||||
"-DWITH_FUSE:BOOL=OFF",
|
||||
"-DWITH_PCSC:BOOL=ON",
|
||||
"-DWITH_PKCS11:BOOL=ON",
|
||||
"-DWITH_SWSCALE:BOOL=ON",
|
||||
"-DWITH_SERVER:BOOL=ON",
|
||||
"-DWITH_SAMPLE:BOOL=ON",
|
||||
"-DWITH_CUPS:BOOL=ON",
|
||||
"-DWITH_SSE2:BOOL=ON",
|
||||
"-DWITH_NEON:BOOL=ON",
|
||||
"-DWITH_FFMPEG:BOOL=ON",
|
||||
"-DWITH_VERBOSE_WINPR_ASSERT:BOOL=OFF",
|
||||
"-DWITH_DSP_FFMPEG:BOOL=ON",
|
||||
"-DWITH_FAAC:BOOL=OFF",
|
||||
"-DWITH_INTERNAL_MD4:BOOL=ON",
|
||||
"-DWITH_INTERNAL_MD5:BOOL=ON",
|
||||
"-DWITH_INTERNAL_RC4:BOOL=ON",
|
||||
"-DWINPR_UTILS_IMAGE_PNG:BOOL=ON",
|
||||
"-DWINPR_UTILS_IMAGE_WEBP:BOOL=ON",
|
||||
"-DWINPR_UTILS_IMAGE_JPEG:BOOL=ON",
|
||||
"-DWITH_FAAD2:BOOL=OFF",
|
||||
"-DWITH_OSS:BOOL=OFF",
|
||||
"-DWITH_SDL_IMAGE_DIALOGS:BOOL=ON",
|
||||
"-DWITH_WEBVIEW:BOOL=OFF",
|
||||
"-DWITH_PULSE:BOOL=ON"
|
||||
],
|
||||
"sources": [
|
||||
{
|
||||
"type": "git",
|
||||
"url": "https://github.com/FreeRDP/FreeRDP.git",
|
||||
"tag": "3.9.0",
|
||||
"commit": "4ae5b6c25452211f01f370d3e6e481553e72778a"
|
||||
"tag": "3.12.0",
|
||||
"commit": "060e50d9ea722822c7b69d7a588f6c21b4e2512f",
|
||||
"x-checker-data": {
|
||||
"type": "anitya",
|
||||
"project-id": 10442,
|
||||
"stable-only": true,
|
||||
"url-template": "https://github.com/FreeRDP/FreeRDP/releases/tag/${version0}.${version1}.${version2}"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -1,12 +1,18 @@
|
||||
{
|
||||
"name": "krb5",
|
||||
"buildsystem": "autotools",
|
||||
"subdir": "src",
|
||||
"sources": [
|
||||
{
|
||||
"type": "archive",
|
||||
"url": "https://kerberos.org/dist/krb5/1.21/krb5-1.21.2.tar.gz",
|
||||
"sha256": "9560941a9d843c0243a71b17a7ac6fe31c7cebb5bce3983db79e52ae7e850491"
|
||||
}
|
||||
]
|
||||
"name": "krb5",
|
||||
"buildsystem": "autotools",
|
||||
"subdir": "src",
|
||||
"sources": [
|
||||
{
|
||||
"type": "archive",
|
||||
"url": "https://kerberos.org/dist/krb5/1.21/krb5-1.21.3.tar.gz",
|
||||
"sha256": "b7a4cd5ead67fb08b980b21abd150ff7217e85ea320c9ed0c6dadd304840ad35",
|
||||
"x-checker-data": {
|
||||
"type": "anitya",
|
||||
"project-id": 13287,
|
||||
"stable-only": true,
|
||||
"url-template": "https://kerberos.org/dist/krb5/${version0}.${version1}/krb5-${version0}.${version1}.${version2}.tar.gz"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,22 +1,19 @@
|
||||
{
|
||||
"name": "libusb",
|
||||
"config-opts": [
|
||||
"--disable-static"
|
||||
],
|
||||
"cleanup": [
|
||||
"/lib/*.la",
|
||||
"/lib/pkgconfig",
|
||||
"/include"
|
||||
],
|
||||
"sources": [
|
||||
{
|
||||
"type": "archive",
|
||||
"url":
|
||||
"https://github.com/libusb/libusb/releases/download/v1.0.27/libusb-1.0.27.tar.bz2",
|
||||
"sha256": "ffaa41d741a8a3bee244ac8e54a72ea05bf2879663c098c82fc5757853441575"
|
||||
}
|
||||
],
|
||||
"post-install": [
|
||||
"install -Dm644 COPYING /app/share/licenses/libusb/COPYING"
|
||||
]
|
||||
"name": "libusb",
|
||||
"config-opts": [ "--disable-static" ],
|
||||
"cleanup": [
|
||||
"/lib/*.la",
|
||||
"/lib/pkgconfig",
|
||||
"/include"
|
||||
],
|
||||
"sources": [
|
||||
{
|
||||
"type": "archive",
|
||||
"url": "https://github.com/libusb/libusb/releases/download/v1.0.27/libusb-1.0.27.tar.bz2",
|
||||
"sha256": "ffaa41d741a8a3bee244ac8e54a72ea05bf2879663c098c82fc5757853441575"
|
||||
}
|
||||
],
|
||||
"post-install": [
|
||||
"install -Dm644 COPYING ${FLATPAK_DEST}/share/licenses/libusb/COPYING"
|
||||
]
|
||||
}
|
||||
|
||||
@@ -1,15 +1,25 @@
|
||||
{
|
||||
"name": "opensc",
|
||||
"buildsystem": "autotools",
|
||||
"cleanup": [],
|
||||
"config-opts": [
|
||||
"CFLAGS=-Wno-error"
|
||||
],
|
||||
"sources": [
|
||||
{
|
||||
"type": "archive",
|
||||
"url": "https://github.com/OpenSC/OpenSC/releases/download/0.25.0/opensc-0.25.0.tar.gz",
|
||||
"sha256": "e6d7b66e2a508a377ac9d67aa463025d3c54277227be10bd08872e3407d6622f"
|
||||
}
|
||||
]
|
||||
"name": "opensc",
|
||||
"buildsystem": "autotools",
|
||||
"cleanup": [
|
||||
],
|
||||
"config-opts": [
|
||||
"--disable-assert",
|
||||
"--disable-fuzzing",
|
||||
"--disable-man",
|
||||
"--disable-strict"
|
||||
],
|
||||
"sources": [
|
||||
{
|
||||
"type": "archive",
|
||||
"url": "https://github.com/OpenSC/OpenSC/releases/download/0.25.1/opensc-0.25.1.tar.gz",
|
||||
"sha256": "23cbaae8bd7c8eb589b68c0a961dfb0d02007bea3165a3fc5efe2621d549b37b",
|
||||
"x-checker-data": {
|
||||
"type": "anitya",
|
||||
"project-id": 13287,
|
||||
"stable-only": true,
|
||||
"url-template": "https://github.com/OpenSC/OpenSC/tags/${version0}.${version1}.${version2}"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,23 +1,29 @@
|
||||
{
|
||||
"name": "pcsc",
|
||||
"config-opts": [
|
||||
"--disable-libsystemd",
|
||||
"--enable-pic",
|
||||
"--disable-libusb",
|
||||
"--disable-polkit",
|
||||
"--enable-shared",
|
||||
"--with-systemdsystemunitdir=/app/lib/systemd/"
|
||||
],
|
||||
"sources": [
|
||||
{
|
||||
"type": "git",
|
||||
"url": "https://github.com/LudovicRousseau/PCSC.git",
|
||||
"tag": "2.0.3",
|
||||
"commit": "c4e7f6f9c6fe56fafd3f13c31fcc4f670ad6d022"
|
||||
}
|
||||
],
|
||||
"cleanup": [
|
||||
"/share/doc",
|
||||
"/share/man"
|
||||
]
|
||||
"name": "pcsc",
|
||||
"config-opts": [
|
||||
"--disable-libsystemd",
|
||||
"--enable-pic",
|
||||
"--disable-libusb",
|
||||
"--enable-shared",
|
||||
"--disable-polkit",
|
||||
"--with-systemdsystemunitdir=/app/lib/systemd/"
|
||||
],
|
||||
"sources": [
|
||||
{
|
||||
"type": "git",
|
||||
"url": "https://github.com/LudovicRousseau/PCSC.git",
|
||||
"tag": "2.3.0",
|
||||
"commit": "a2c25c5fa25b5e2400fe6a002ea2263069ebd94f",
|
||||
"x-checker-data": {
|
||||
"type": "anitya",
|
||||
"project-id": 2611,
|
||||
"stable-only": true,
|
||||
"url-template": "https://github.com/LudovicRousseau/PCSC/tags/${version0}.${version1}.${version2}"
|
||||
}
|
||||
}
|
||||
],
|
||||
"cleanup": [
|
||||
"/share/doc",
|
||||
"/share/man"
|
||||
]
|
||||
}
|
||||
24
com.angoosh.RDPConnect/modules/pkcs11-helper.json
Normal file
24
com.angoosh.RDPConnect/modules/pkcs11-helper.json
Normal file
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"name": "pkcs11-helper",
|
||||
"buildsystem": "autotools",
|
||||
"sources": [
|
||||
{
|
||||
"type": "archive",
|
||||
"url": "https://github.com/OpenSC/pkcs11-helper/archive/refs/tags/pkcs11-helper-1.30.0.tar.gz",
|
||||
"sha256": "076c9f664812a45f2da25efc157338b0b8bb1949117f0144050fec176b6fdf78",
|
||||
"x-checker-data": {
|
||||
"type": "anitya",
|
||||
"project-id": 91990,
|
||||
"stable-only": true,
|
||||
"url-template": "https://github.com/OpenSC/pkcs11-helper/archive/refs/tags/pkcs11-helper-$version.tar.gz"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "script",
|
||||
"dest-filename": "autogen.sh",
|
||||
"commands": [
|
||||
"autoreconf -vfi"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,23 +1,26 @@
|
||||
{
|
||||
"name": "uriparser",
|
||||
"buildsystem": "cmake-ninja",
|
||||
"cleanup": [
|
||||
],
|
||||
"config-opts": [
|
||||
"name": "urlparser",
|
||||
"buildsystem": "cmake-ninja",
|
||||
"builddir": true,
|
||||
"cleanup": [],
|
||||
"config-opts": [
|
||||
"-DCMAKE_VERBOSE_MAKEFILE=ON",
|
||||
"-DCMAKE_BUILD_TYPE:STRING=Release",
|
||||
"-DCMAKE_INSTALL_LIBDIR:PATH=lib",
|
||||
"-DURIPARSER_BUILD_TESTS:BOOL=OFF",
|
||||
"-DURIPARSER_BUILD_DOCS:BOOL=OFF",
|
||||
"-DURIPARSER_BUILD_TOOLS:BOOL=OFF",
|
||||
"-DURIPARSER_BUILD_WCHAR_T:BOOL=OFF"
|
||||
],
|
||||
"sources": [
|
||||
"-DURIPARSER_BUILD_TESTS:BOOL=OFF"
|
||||
],
|
||||
"sources": [
|
||||
{
|
||||
"type": "git",
|
||||
"url": "https://github.com/uriparser/uriparser.git",
|
||||
"tag": "uriparser-0.9.7",
|
||||
"commit": "634b678fa858abf1d1ebc0634e96e9e29596e92a"
|
||||
"type": "archive",
|
||||
"url": "https://github.com/uriparser/uriparser/releases/download/uriparser-0.9.8/uriparser-0.9.8.tar.xz",
|
||||
"sha256": "1d71c054837ea32a31e462bce5a1af272379ecf511e33448e88100b87ff73b2e",
|
||||
"x-checker-data": {
|
||||
"type": "anitya",
|
||||
"project-id": 10160,
|
||||
"stable-only": true,
|
||||
"url-template": "https://github.com/uriparser/uriparser/releases/download/uriparser-${version0}.${version1}.${version2}/uriparser-${version0}.${version1}.${version2}.tar.xz"
|
||||
}
|
||||
}
|
||||
]
|
||||
]
|
||||
}
|
||||
@@ -1,14 +1,20 @@
|
||||
{
|
||||
"name": "xprop",
|
||||
"sources": [
|
||||
{
|
||||
"type": "archive",
|
||||
"url": "https://xorg.freedesktop.org/releases/individual/app/xprop-1.2.7.tar.xz",
|
||||
"sha256": "4436e3148bb91a162406230d9f736a49ca8b50b74790015dc15d78d6ce8e825f"
|
||||
}
|
||||
],
|
||||
"cleanup": [
|
||||
"/share/doc",
|
||||
"/share/man"
|
||||
]
|
||||
"name": "xprop",
|
||||
"sources": [
|
||||
{
|
||||
"type": "archive",
|
||||
"url": "https://xorg.freedesktop.org/releases/individual/app/xprop-1.2.8.tar.xz",
|
||||
"sha256": "d689e2adb7ef7b439f6469b51cda8a7daefc83243854c2a3b8f84d0f029d67ee",
|
||||
"x-checker-data": {
|
||||
"type": "anitya",
|
||||
"project-id": 14958,
|
||||
"stable-only": true,
|
||||
"url-template": "https://xorg.freedesktop.org/releases/individual/app/xprop-${version0}.${version1}.${version2}.tar.xz"
|
||||
}
|
||||
}
|
||||
],
|
||||
"cleanup": [
|
||||
"/share/doc",
|
||||
"/share/man"
|
||||
]
|
||||
}
|
||||
@@ -1,3 +1,3 @@
|
||||
#!/bin/bash
|
||||
flatpak build-update-repo --generate-static-deltas ../repo
|
||||
rsync -av repo/ angoosh@10.0.69.69:/mnt/angoosh/flatpak/repo/
|
||||
rsync -av ../repo/ angoosh@10.0.69.69:/mnt/angoosh/flatpak/repo/
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
[core]
|
||||
repo_version=1
|
||||
mode=archive-z2
|
||||
indexed-deltas=true
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user