Skip to content

Commit

Permalink
Implement an app rejection list (#2515)
Browse files Browse the repository at this point in the history
Co-authored-by: Alexandre Aubin <alex.aubin@mailoo.org>
Co-authored-by: OniriCorpe <oniricorpe@yunohost.org>
  • Loading branch information
3 people authored Aug 17, 2024
1 parent 6b6ded9 commit 71800d2
Show file tree
Hide file tree
Showing 3 changed files with 334 additions and 45 deletions.
212 changes: 212 additions & 0 deletions rejectedlist.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,212 @@
[sillytavern]
name = "SillyTavern"
description = "LLM Frontend for power users"
upstream = "https://github.com/SillyTavern/SillyTavern"
website = "https://sillytavern.app/"
reason = "Based on a LLM"

[e621-image-hosting]
name = "e621 image hosting"
description = "An Imageboard with a heavy focus on tagging and searchability"
upstream = "https://github.com/e621ng/e621ng"
website = ""
reason = "Docker-compose mess"

[photo-sphere-viewer]
name = "Photo Sphere Viewer"
description = "A JavaScript library to display 360° sphere panoramas. Very customizable."
upstream = "https://github.com/mistic100/Photo-Sphere-Viewer"
website = "https://photo-sphere-viewer.js.org/"
reason = "Just a library, can be integrated in a My Webapp"

[minecraft-bedrock-server]
name = "Minecraft Bedrock Server"
description = "This allows you to host your own world server on Minecraft Bedrock Edition."
upstream = "https://github.com/TheRemote/MinecraftBedrockServer"
website = "https://jamesachambers.com/minecraft-bedrock-edition-ubuntu-dedicated-server-guide/"
reason = "MineCraft is not free, whatever its flavour"

[kirbycms]
name = "KirbyCMS"
description = "Kirby: the CMS that adapts to any project, loved by developers and editors alike."
upstream = "https://github.com/getkirby/kirby"
website = "https://getkirby.com/"
reason = "Not free"

[coolify]
name = "Coolify"
description = "Alternative à Vercel"
upstream = "https://github.com/coollabsio/coolify"
website = "https://coolify.io/"
reason = "Does not make sense to integrate in YunoHost, and most likely incompatible anyways"

[chatmail]
name = "chatmail"
description = "Deltachat server"
upstream = "https://github.com/deltachat/chatmail"
website = "https://delta.chat/en/2023-12-13-chatmail"
reason = "YunoHost already integrates a mail server"

[stalwart-mail-server]
name = "Stalwart Mail Server"
description = "Modern All-in-One Mail Server (IMAP, JMAP, SMTP) written in Rust."
upstream = "https://github.com/stalwartlabs/mail-server"
website = "https://stalw.art"
reason = "YunoHost already integrates a mail server"

[retronas]
name = "RetroNAS"
description = "It allows you to store ROMs and sync to different consoles with networking connecting."
upstream = "https://github.com/retronas/retronas"
website = ""
reason = "Big scary security warning in the app's README"

[quakejs]
name = "QuakeJS"
description = "QuakeJS allows you to play Quake III Arena Multiplayer on Web Browser using JavaScript."
upstream = "https://github.com/inolen/quakejs"
website = "http://www.quakejs.com/"
reason = "Unmaintained project"

[speckle-server]
name = "Speckle Server"
description = "Data infrastructure for the AEC industry."
upstream = "https://github.com/specklesystems/speckle-server"
website = "https://speckle.systems/"
reason = "Too niche of a use case, and no Docker-less install options"

[graphite]
name = "Graphite"
description = "Création non destructive d'image"
upstream = "https://github.com/GraphiteEditor/Graphite"
website = "https://graphite.rs/"
reason = "No self-hosting documentation"

[affine]
name = "Affine"
description = "Wiki, écriture de document, Mindmap, Moodboard, un melting polt d'outil pour créer divers document."
upstream = "https://github.com/toeverything/AFFiNE"
website = "https://affine.pro/"
reason = "Unclear license and too big of a framework"


[authentik]
name = "authentik"
description = "Replace Active Directory, Okta and Auth0. Supports OIDC, SAML, LDAP, SCIM, Radius, and Proxy."
upstream = "https://github.com/goauthentik/authentik"
website = "https://goauthentik.io/"
reason = "YunoHost already integrates a SSO, it will conflict."

[mirlo]
name = "Mirlo"
description = "Mirlo provides a user-friendly space to help musicians sell music, manage subscriptions, and share w"
upstream = "https://github.com/funmusicplace/mirlo/"
website = ""
reason = "Too big of a Docker-compose mess"

[h5p]
name = "H5P"
description = "This collection of tools aim to creates interactive exercices for learning purposes."
upstream = "https://github.com/h5p"
website = "https://h5p.org/"
reason = "The tools are spread across too many repos, making packaging difficult"

[gophish]
name = "Gophish"
description = "Phishing toolkit for security awareness training and penetration testers"
upstream = "https://github.com/gophish/gophish"
website = "https://getgophish.com"
reason = "Too niche of a use case"

[pdftochat]
name = "PDFTOCHAT"
description = "Chat with your PDFs in seconds. Powered by Together AI and Pinecone."
upstream = "https://github.com/Nutlope/pdftochat"
website = "https://www.pdftochat.com/"
reason = "whatthefuck.gif, also AI"

[jam]
name = "Jam"
description = "With Jam you can create audio rooms that can be used for panel discussions, jam sessions, ..."
upstream = "https://github.com/jam-systems/jam"
website = "https://jam.systems/"
reason = "Unmaintained"

[bluesky-pds]
name = "Bluesky PDS"
description = "Personal Data Server for Bluesky, federated social network based on the AT protocol."
upstream = "https://github.com/bluesky-social/pds"
website = "https://bsky.social/about"
reason = "One of the principles at the heart of the YunoHost project is to be a modest counterweight to GAFAM and surveillance capitalism, [...] [not to] provide a ready-to-use tool to our users to be part of it directly"

[anysync]
name = "AnySync"
description = "Allows sync between devices for Aytype."
upstream = "https://github.com/anyproto/any-sync"
website = "https://anytype.io/"
reason = "Clients are not totally free"

[dub]
name = "dub"
description = "Open-source link management infrastructure."
upstream = "https://github.com/dubinc/dub"
website = "https://dub.co"
reason = "Tracking system, against YunoHost core values"

[maybe]
name = "Maybe"
description = "The OS for your personal finances"
upstream = "https://github.com/maybe-finance/maybe"
website = "https://hello.maybe.co"
reason = "Surely not ready for self-hosting"

[osclass]
name = "Osclass"
description = "Classifieds website"
upstream = "https://github.com/osclass/Osclass"
website = "https://osclass-classifieds.com"
reason = "Unmaintained"

[opentalk]
name = "OpenTalk"
description = "German developed, modern, conferencing tool running in browser alone."
upstream = "https://gitlab.opencode.de/opentalk"
website = "https://opentalk.eu/en"
reason = "Looks unpackageable"

[verdaccio]
name = "Verdaccio"
description = "Locally managed backup & proxy for npm package registry."
upstream = "https://github.com/verdaccio/verdaccio"
website = "https://verdaccio.org/"
reason = "Too niche of a use case"

[tabula]
name = "Tabula"
description = "Extract tables from PDF; single executable .jar on 127.0.0.1.\r\rComparable to Excalibur, I think."
upstream = "https://github.com/tabulapdf/tabula"
website = "https://tabula.technology/"
reason = "Unmaintained"

[llamafile]
name = "Llamafile"
description = "Single file LLMs from Mozilla Innovation Projects, that will run locally on any available processors"
upstream = "https://github.com/Mozilla-Ocho/llamafile"
website = "https://hacks.mozilla.org/2023/11/introducing-llamafile/"
reason = "Not packageable as is, it is a binary tool for other apps"


[fastchat]
name = "FastChat"
description = "- open platform for LLM chatbots incl training, evaluating, & serving via openai-compatible APIs."
upstream = "https://github.com/lm-sys/FastChat"
website = "https://chat.lmsys.org/"
reason = "YunoHost packagers do not wish to promote AI, and training AIs is not lean"

[slidge]
name = "Slidge"
description = "XMPP (puppeteer) gateway library to other instant messenger platforms/protocols."
upstream = "https://sr.ht/~nicoco/slidge/sources"
website = "https://sr.ht/~nicoco/slidge/"
reason = "This is only a library, so not packageable as is"

18 changes: 18 additions & 0 deletions store/app.py
Original file line number Diff line number Diff line change
Expand Up @@ -364,6 +364,24 @@ def add_to_wishlist():
),
)

rejectedlist_rawtoml = repo.get_contents(
"rejectedlist.toml", ref=repo.default_branch
)
rejectedlist_rawtoml = rejectedlist_rawtoml.decoded_content.decode()
rejectedlist = tomlkit.loads(rejectedlist_rawtoml)

for rejectedslug, rejectedinfo in rejectedlist.items():
if upstream.strip("/ ") in rejectedinfo["upstream"]:
return render_template(
"wishlist_add.html",
csrf_token=csrf_token,
successmsg=None,
errormsg=_(
"We're sorry, but this app is listed among the already declined apps. The specified reason is:<br /><q>%(reason)s</q>",
reason=rejectedinfo["reason"],
),
)

app_catalog = get_catalog()["apps"]

if slug in app_catalog:
Expand Down
Loading

0 comments on commit 71800d2

Please sign in to comment.