# HG changeset patch # User Matthew Wild # Date 1599752879 -3600 # Node ID 354dc1e7977ad2330f90ae6cb1d47db8ccabfb4f # Parent e77122025080f3fbbcee249e375d65108682d325 mod_register_apps: Provides a configurable list of XMPP apps diff -r e77122025080 -r 354dc1e7977a mod_register_apps/assets/logos/beagle-im.png Binary file mod_register_apps/assets/logos/beagle-im.png has changed diff -r e77122025080 -r 354dc1e7977a mod_register_apps/assets/logos/conversations.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mod_register_apps/assets/logos/conversations.svg Thu Sep 10 16:47:59 2020 +0100 @@ -0,0 +1,105 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff -r e77122025080 -r 354dc1e7977a mod_register_apps/assets/logos/dino.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mod_register_apps/assets/logos/dino.svg Thu Sep 10 16:47:59 2020 +0100 @@ -0,0 +1,1 @@ + \ No newline at end of file diff -r e77122025080 -r 354dc1e7977a mod_register_apps/assets/logos/gajim.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mod_register_apps/assets/logos/gajim.svg Thu Sep 10 16:47:59 2020 +0100 @@ -0,0 +1,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -r e77122025080 -r 354dc1e7977a mod_register_apps/assets/logos/generic.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mod_register_apps/assets/logos/generic.svg Thu Sep 10 16:47:59 2020 +0100 @@ -0,0 +1,271 @@ + + + +image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff -r e77122025080 -r 354dc1e7977a mod_register_apps/assets/logos/siskin-im.png Binary file mod_register_apps/assets/logos/siskin-im.png has changed diff -r e77122025080 -r 354dc1e7977a mod_register_apps/assets/logos/yaxim.svg --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mod_register_apps/assets/logos/yaxim.svg Thu Sep 10 16:47:59 2020 +0100 @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff -r e77122025080 -r 354dc1e7977a mod_register_apps/copyright --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mod_register_apps/copyright Thu Sep 10 16:47:59 2020 +0100 @@ -0,0 +1,39 @@ +Copyright of the assets included in the assets/ folder: + +generic.svg: + + (C) Matthew Wild 2020 + Distributed under the MIT license of the prosody-modules project. + Derived from the XMPP logo of the XMPP Standards Foundation: + Source: https://en.wikipedia.org/wiki/XMPP#/media/File:XMPP_logo.svg + License (MIT): https://opensource.org/licenses/mit-license.php + +gajim.svg: + + Source: https://dev.gajim.org/gajim/gajim/-/blob/master/gajim/data/icons/hicolor/scalable/apps/org.gajim.Gajim.svg + License (GPLv3): https://dev.gajim.org/gajim/gajim/-/blob/master/COPYING + +dino.svg: + + Source: https://github.com/dino/dino/blob/3a00177a51e48d6bafc1e67bab26bc510e6400d8/main/data/icons/im.dino.Dino.svg + License (GPLv3): https://github.com/dino/dino/blob/3a00177a51e48d6bafc1e67bab26bc510e6400d8/LICENSE + +conversations.svg: + + Source: https://github.com/iNPUTmice/Conversations/blob/master/art/ic_launcher.svg + License (CC-BY-SA 4.0): https://github.com/iNPUTmice/Conversations/blob/master/art/LICENSE + +siskin-im.png: + + Source: https://github.com/tigase/siskin-im/blob/master/SiskinIM%20-%20Share/Assets.xcassets/AppIcon.appiconset/IMG_1607_3-120.png + License (GPLv3): https://github.com/tigase/siskin-im/blob/master/COPYING + +beagle-im.png: + + Source: https://github.com/tigase/beagle-im/blob/master/BeagleIM/Assets.xcassets/AppIcon.appiconset/IMG_0720_256-1.png + License (GPLv3): https://github.com/tigase/beagle-im/blob/master/LICENSE + +yaxim.svg: + + Source: https://github.com/yaxim-org/yaxim/blob/master/asset-graphics/yak/yak-front-grass.svg + License (GPLv3): https://github.com/yaxim-org/yaxim/blob/master/LICENSE.txt diff -r e77122025080 -r 354dc1e7977a mod_register_apps/mod_register_apps.lua --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mod_register_apps/mod_register_apps.lua Thu Sep 10 16:47:59 2020 +0100 @@ -0,0 +1,133 @@ +module:depends("http"); +local http_files = module:depends("http_files"); + +local app_config = module:get_option("site_apps", { + { + name = "Conversations"; + text = [[Conversations is a Jabber/XMPP client for Android 4.0+ smartphones that has been optimized to provide a unique mobile experience.]]; + image = "assets/logos/conversations.svg"; + link = "https://play.google.com/store/apps/details?id=eu.siacs.conversations"; + platforms = { "Android" }; + supports_preauth_uri = true; + magic_link_format = "{app.link!}&referrer={invite.uri}"; + download = { + buttons = { + { + image = "https://play.google.com/intl/en_us/badges/static/images/badges/en_badge_web_generic.png"; + url = "https://play.google.com/store/apps/details?id=eu.siacs.conversations"; + }; + }; + }; + }; + { + name = "yaxim"; + text = [[A lean Jabber/XMPP client for Android. It aims at usability, low overhead and security, and works on low-end Android devices starting with Android 4.0.]]; + image = "assets/logos/yaxim.svg"; + link = "https://play.google.com/store/apps/details?id=org.yaxim.androidclient"; + platforms = { "Android" }; + supports_preauth_uri = true; + magic_link_format = "{app.link!}&referrer={invite.uri}"; + download = { + buttons = { + { + image = "https://play.google.com/intl/en_us/badges/static/images/badges/en_badge_web_generic.png"; + url = "https://play.google.com/store/apps/details?id=org.yaxim.androidclient"; + }; + }; + }; + }; + { + name = "Siskin IM"; + text = [[A lightweight and powerful XMPP client for iPhone and iPad. It provides an easy way to talk and share moments with your friends.]]; + image = "assets/logos/siskin-im.png"; + link = "https://apps.apple.com/us/app/siskin-im/id1153516838"; + platforms = { "iOS" }; + supports_preauth_uri = true; + download = { + buttons = { + { + image = "https://linkmaker.itunes.apple.com/en-us/badge-lrg.svg?releaseDate=2017-05-31&kind=iossoftware&bubble=ios_apps"; + url = "https://apps.apple.com/us/app/siskin-im/id1153516838"; + target = "_blank"; + }; + }; + }; + }; + { + name = "Beagle IM"; + text = [[Beagle IM by Tigase, Inc. is a lightweight and powerful XMPP client for macOS.]]; + image = "assets/logos/beagle-im.png"; + link = "https://apps.apple.com/us/app/beagle-im/id1445349494"; + platforms = { "macOS" }; + download = { + buttons = { + { + text = "Download from Mac App Store"; + url = "https://apps.apple.com/us/app/beagle-im/id1445349494"; + target = "_blank"; + }; + }; + }; + }; + { + name = "Dino"; + text = [[A modern open-source chat client for the desktop. It focuses on providing a clean and reliable Jabber/XMPP experience while having your privacy in mind.]]; + image = "assets/logos/dino.svg"; + link = "https://dino.im/"; + platforms = { "Linux" }; + download = { + text = "Click the button to open the Dino website where you can download and install it on your PC."; + buttons = { + { text = "Download Dino for Linux", url = "https://dino.im/#download", target="_blank" }; + }; + }; + }; + { + name = "Gajim"; + text = [[A fully-featured desktop chat client for Windows and Linux.]]; + image = "assets/logos/gajim.svg"; + link = "https://gajim.org/"; + platforms = { "Windows", "Linux" }; + download = { + buttons = { + { + text = "Download Gajim"; + url = "https://gajim.org/download/"; + target = "_blank"; + }; + }; + }; + }; +}); + +local base_url = module.http_url and module:http_url(); +local function relurl(s) + if s:match("^%w+://") then + return s; + end + return base_url.."/"..s; +end + +local site_apps = module:shared("apps"); + +for _, app_info in ipairs(app_config) do + local app_id = app_info.id or app_info.name:gsub("%W+", "-"):lower(); + app_info.id = app_id; + app_info.image = relurl(app_info.image); + site_apps[app_id] = app_info; + table.insert(site_apps, app_info); +end + +local mime_map = { + png = "image/png"; + svg = "image/svg+xml"; +}; + +module:provides("http", { + route = { + ["GET /assets/*"] = http_files and http_files.serve({ + path = module:get_directory().."/assets"; + mime_map = mime_map; + }); + }; +});