mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2026-11-08 03:38:23 +00:00
Split the generator data into integration_matrix_data.py and regenerate 027-integration-matrix.md (82x82, 523 wired + 96 upstream edges). Artifact is generated, not hand-edited. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
550 lines
15 KiB
Python
550 lines
15 KiB
Python
# nocheck: file-size: curated edge data table; one obvious home for the
|
||
# matrix's source-of-truth lists, splitting it only adds indirection.
|
||
"""Data tables for the role×role integration matrix generator.
|
||
|
||
Kept as a sibling importable module so the generator entrypoint stays small
|
||
and the curated edge data has one obvious home. The generator reads:
|
||
|
||
* ``WEB_APP`` / ``WEB_SVC``: the entity-name axes (role suffix of every
|
||
``web-app-*`` / ``web-svc-*`` role);
|
||
* ``FRAMEWORK``: top-level ``meta/services.yml`` integration keys mapped to
|
||
the in-axis target entity they wire the role into (the infinito-native,
|
||
group-gated service flags), distinct from the curated upstream edges;
|
||
* ``EDGES``: the curated, web-verified upstream app↔app plugin/integration
|
||
pages, each ``(source, target, url, kind)`` with ``kind`` in
|
||
``{"check", "coin"}``.
|
||
"""
|
||
|
||
from __future__ import annotations
|
||
|
||
# Top-level meta/services.yml integration keys -> the in-axis target entity
|
||
# they wire the role into. Skipped on purpose:
|
||
# ldap/redis/mariadb/database -> svc-db-* (not on the axes).
|
||
FRAMEWORK: dict[str, str] = {
|
||
"sso": "keycloak",
|
||
"matomo": "matomo",
|
||
"prometheus": "prometheus",
|
||
"email": "mailu",
|
||
"dashboard": "dashboard",
|
||
"css": "css",
|
||
"logout": "logout",
|
||
"cdn": "cdn",
|
||
"coturn": "coturn",
|
||
"collabora": "collabora",
|
||
"onlyoffice": "onlyoffice",
|
||
"libretranslate": "libretranslate",
|
||
}
|
||
|
||
# Entity names = role suffix of every web-app-* role.
|
||
WEB_APP: list[str] = [
|
||
"akaunting",
|
||
"baserow",
|
||
"bigbluebutton",
|
||
"bluesky",
|
||
"bookwyrm",
|
||
"bridgy-fed",
|
||
"chess",
|
||
"confluence",
|
||
"dashboard",
|
||
"decidim",
|
||
"discourse",
|
||
"erpnext",
|
||
"espocrm",
|
||
"fediwall",
|
||
"fider",
|
||
"flowise",
|
||
"friendica",
|
||
"funkwhale",
|
||
"fusiondirectory",
|
||
"gitea",
|
||
"gitlab",
|
||
"hugo",
|
||
"jenkins",
|
||
"jira",
|
||
"jitsi",
|
||
"joomla",
|
||
"keycloak",
|
||
"kix",
|
||
"lam",
|
||
"listmonk",
|
||
"littlejs",
|
||
"magento",
|
||
"mailu",
|
||
"mastodon",
|
||
"matomo",
|
||
"matrix",
|
||
"mattermost",
|
||
"mediawiki",
|
||
"mig",
|
||
"minio",
|
||
"mini-qr",
|
||
"mobilizon",
|
||
"moodle",
|
||
"navigator",
|
||
"nextcloud",
|
||
"odoo",
|
||
"opencloud",
|
||
"openproject",
|
||
"opentalk",
|
||
"openwebui",
|
||
"peertube",
|
||
"pgadmin",
|
||
"phpldapadmin",
|
||
"phpmyadmin",
|
||
"pixelfed",
|
||
"postmarks",
|
||
"pretix",
|
||
"prometheus",
|
||
"roulette-wheel",
|
||
"shopware",
|
||
"snipe-it",
|
||
"socialhome",
|
||
"sphinx",
|
||
"suitecrm",
|
||
"taiga",
|
||
"wordpress",
|
||
"xwiki",
|
||
"yourls",
|
||
"zammad",
|
||
]
|
||
WEB_SVC: list[str] = [
|
||
"asset",
|
||
"cdn",
|
||
"collabora",
|
||
"coturn",
|
||
"css",
|
||
"file",
|
||
"html",
|
||
"legal",
|
||
"libretranslate",
|
||
"logout",
|
||
"onlyoffice",
|
||
"simpleicons",
|
||
"xmpp",
|
||
]
|
||
ENTITIES: list[str] = WEB_APP + WEB_SVC
|
||
|
||
# (source, target, url, kind). kind: "check" or "coin".
|
||
# Verified upstream plugin/integration pages.
|
||
EDGES: list[tuple[str, str, str, str]] = [
|
||
# --- Nextcloud integration_* family + office/auth/analytics ---
|
||
(
|
||
"nextcloud",
|
||
"openproject",
|
||
"https://github.com/nextcloud/integration_openproject",
|
||
"check",
|
||
),
|
||
("nextcloud", "gitlab", "https://github.com/nextcloud/integration_gitlab", "check"),
|
||
(
|
||
"nextcloud",
|
||
"discourse",
|
||
"https://github.com/nextcloud/integration_discourse",
|
||
"check",
|
||
),
|
||
(
|
||
"nextcloud",
|
||
"mattermost",
|
||
"https://github.com/nextcloud/integration_mattermost",
|
||
"check",
|
||
),
|
||
("nextcloud", "matrix", "https://github.com/nextcloud/integration_matrix", "check"),
|
||
("nextcloud", "jira", "https://github.com/nextcloud/integration_jira", "check"),
|
||
("nextcloud", "zammad", "https://github.com/nextcloud/integration_zammad", "check"),
|
||
(
|
||
"nextcloud",
|
||
"openwebui",
|
||
"https://github.com/nextcloud/integration_openai",
|
||
"check",
|
||
),
|
||
(
|
||
"nextcloud",
|
||
"flowise",
|
||
"https://github.com/nextcloud/integration_openai",
|
||
"check",
|
||
),
|
||
(
|
||
"nextcloud",
|
||
"mastodon",
|
||
"https://github.com/nextcloud/integration_mastodon",
|
||
"check",
|
||
),
|
||
(
|
||
"nextcloud",
|
||
"peertube",
|
||
"https://github.com/nextcloud/integration_peertube",
|
||
"check",
|
||
),
|
||
("nextcloud", "moodle", "https://github.com/nextcloud/integration_moodle", "check"),
|
||
(
|
||
"nextcloud",
|
||
"suitecrm",
|
||
"https://github.com/eneiluj/integration_suitecrm",
|
||
"check",
|
||
),
|
||
("nextcloud", "bigbluebutton", "https://apps.nextcloud.com/apps/bbb", "check"),
|
||
("nextcloud", "xwiki", "https://apps.nextcloud.com/apps/xwiki", "check"),
|
||
("nextcloud", "collabora", "https://github.com/nextcloud/richdocuments", "check"),
|
||
(
|
||
"nextcloud",
|
||
"onlyoffice",
|
||
"https://github.com/ONLYOFFICE/onlyoffice-nextcloud",
|
||
"check",
|
||
),
|
||
("nextcloud", "keycloak", "https://github.com/nextcloud/user_oidc", "check"),
|
||
("nextcloud", "matomo", "https://apps.nextcloud.com/apps/matomo", "check"),
|
||
# --- Mattermost plugins ---
|
||
(
|
||
"mattermost",
|
||
"gitlab",
|
||
"https://github.com/mattermost/mattermost-plugin-gitlab",
|
||
"check",
|
||
),
|
||
(
|
||
"mattermost",
|
||
"jira",
|
||
"https://github.com/mattermost/mattermost-plugin-jira",
|
||
"check",
|
||
),
|
||
(
|
||
"mattermost",
|
||
"jenkins",
|
||
"https://github.com/mattermost/mattermost-plugin-jenkins",
|
||
"check",
|
||
),
|
||
(
|
||
"mattermost",
|
||
"jitsi",
|
||
"https://github.com/mattermost-community/mattermost-plugin-jitsi",
|
||
"check",
|
||
),
|
||
(
|
||
"mattermost",
|
||
"openwebui",
|
||
"https://github.com/mattermost/mattermost-plugin-agents",
|
||
"check",
|
||
),
|
||
(
|
||
"mattermost",
|
||
"prometheus",
|
||
"https://github.com/cpanato/mattermost-plugin-alertmanager",
|
||
"check",
|
||
),
|
||
(
|
||
"mattermost",
|
||
"keycloak",
|
||
"https://docs.mattermost.com/onboard/sso-saml.html",
|
||
"coin",
|
||
),
|
||
# --- GitLab native integrations ---
|
||
(
|
||
"gitlab",
|
||
"mattermost",
|
||
"https://docs.gitlab.com/user/project/integrations/mattermost_notifications/",
|
||
"check",
|
||
),
|
||
("gitlab", "jira", "https://docs.gitlab.com/integration/jira/", "check"),
|
||
("gitlab", "jenkins", "https://docs.gitlab.com/integration/jenkins/", "check"),
|
||
(
|
||
"gitlab",
|
||
"matrix",
|
||
"https://docs.gitlab.com/user/project/integrations/matrix/",
|
||
"check",
|
||
),
|
||
(
|
||
"gitlab",
|
||
"confluence",
|
||
"https://docs.gitlab.com/user/project/integrations/confluence/",
|
||
"check",
|
||
),
|
||
("gitlab", "keycloak", "https://docs.gitlab.com/integration/saml/", "check"),
|
||
# --- Discourse plugins ---
|
||
(
|
||
"discourse",
|
||
"mattermost",
|
||
"https://github.com/discourse/discourse-chat-integration",
|
||
"check",
|
||
),
|
||
(
|
||
"discourse",
|
||
"matrix",
|
||
"https://github.com/discourse/discourse-chat-integration",
|
||
"check",
|
||
),
|
||
(
|
||
"discourse",
|
||
"prometheus",
|
||
"https://github.com/discourse/discourse-prometheus",
|
||
"check",
|
||
),
|
||
(
|
||
"discourse",
|
||
"bigbluebutton",
|
||
"https://github.com/discourse/discourse-bbb",
|
||
"check",
|
||
),
|
||
("discourse", "jitsi", "https://github.com/discourse/discourse-jitsi", "check"),
|
||
("discourse", "openwebui", "https://github.com/discourse/discourse-ai", "check"),
|
||
(
|
||
"discourse",
|
||
"matomo",
|
||
"https://github.com/discourse/discourse-matomo-analytics",
|
||
"check",
|
||
),
|
||
(
|
||
"discourse",
|
||
"keycloak",
|
||
"https://github.com/discourse/discourse-openid-connect",
|
||
"check",
|
||
),
|
||
(
|
||
"discourse",
|
||
"mastodon",
|
||
"https://github.com/discourse/discourse-activity-pub",
|
||
"check",
|
||
),
|
||
# --- Matrix (Synapse / hookshot / Element) ---
|
||
("matrix", "gitlab", "https://github.com/matrix-org/matrix-hookshot", "check"),
|
||
("matrix", "jira", "https://github.com/matrix-org/matrix-hookshot", "check"),
|
||
(
|
||
"matrix",
|
||
"keycloak",
|
||
"https://matrix-org.github.io/synapse/latest/openid.html",
|
||
"check",
|
||
),
|
||
(
|
||
"matrix",
|
||
"prometheus",
|
||
"https://matrix-org.github.io/synapse/latest/metrics-howto.html",
|
||
"check",
|
||
),
|
||
(
|
||
"matrix",
|
||
"jitsi",
|
||
"https://github.com/element-hq/element-web/blob/develop/docs/jitsi.md",
|
||
"check",
|
||
),
|
||
# --- Moodle plugins ---
|
||
(
|
||
"moodle",
|
||
"bigbluebutton",
|
||
"https://moodle.org/plugins/mod_bigbluebuttonbn",
|
||
"check",
|
||
),
|
||
("moodle", "nextcloud", "https://moodle.org/plugins/repository_owncloud", "check"),
|
||
("moodle", "matrix", "https://docs.moodle.org/en/Matrix", "check"),
|
||
("moodle", "keycloak", "https://moodle.org/plugins/auth_oidc", "check"),
|
||
("moodle", "jitsi", "https://moodle.org/plugins/mod_jitsi", "check"),
|
||
("moodle", "matomo", "https://moodle.org/plugins/tool_webanalytics", "check"),
|
||
("moodle", "openwebui", "https://moodle.org/plugins/aiprovider_openwebui", "check"),
|
||
# --- Jenkins plugins ---
|
||
("jenkins", "gitlab", "https://plugins.jenkins.io/gitlab-plugin", "check"),
|
||
("jenkins", "gitea", "https://plugins.jenkins.io/gitea/", "check"),
|
||
("jenkins", "mattermost", "https://plugins.jenkins.io/mattermost/", "check"),
|
||
("jenkins", "prometheus", "https://plugins.jenkins.io/prometheus", "check"),
|
||
("jenkins", "keycloak", "https://plugins.jenkins.io/oic-auth/", "check"),
|
||
# --- OpenProject ---
|
||
(
|
||
"openproject",
|
||
"nextcloud",
|
||
"https://www.openproject.org/docs/system-admin-guide/integrations/nextcloud/",
|
||
"check",
|
||
),
|
||
(
|
||
"openproject",
|
||
"gitlab",
|
||
"https://www.openproject.org/docs/system-admin-guide/integrations/gitlab-integration/",
|
||
"check",
|
||
),
|
||
(
|
||
"openproject",
|
||
"keycloak",
|
||
"https://www.openproject.org/docs/system-admin-guide/authentication/openid-providers/",
|
||
"coin",
|
||
),
|
||
# --- WordPress plugins ---
|
||
("wordpress", "matomo", "https://wordpress.org/plugins/matomo/", "check"),
|
||
("wordpress", "mastodon", "https://wordpress.org/plugins/activitypub/", "check"),
|
||
("wordpress", "discourse", "https://wordpress.org/plugins/wp-discourse/", "check"),
|
||
(
|
||
"wordpress",
|
||
"keycloak",
|
||
"https://wordpress.org/plugins/daggerhart-openid-connect-generic/",
|
||
"check",
|
||
),
|
||
(
|
||
"wordpress",
|
||
"listmonk",
|
||
"https://wordpress.org/plugins/integration-for-listmonk-mailing-list-and-newsletter-manager/",
|
||
"check",
|
||
),
|
||
(
|
||
"wordpress",
|
||
"bigbluebutton",
|
||
"https://wordpress.org/plugins/video-conferencing-with-bbb/",
|
||
"check",
|
||
),
|
||
(
|
||
"wordpress",
|
||
"peertube",
|
||
"https://wordpress.org/plugins/video-manager-for-peertube/",
|
||
"check",
|
||
),
|
||
# --- MediaWiki extensions ---
|
||
(
|
||
"mediawiki",
|
||
"keycloak",
|
||
"https://www.mediawiki.org/wiki/Extension:OpenID_Connect",
|
||
"check",
|
||
),
|
||
("mediawiki", "matomo", "https://www.mediawiki.org/wiki/Extension:Matomo", "check"),
|
||
(
|
||
"mediawiki",
|
||
"discourse",
|
||
"https://www.mediawiki.org/wiki/Extension:DiscourseSsoConsumer",
|
||
"check",
|
||
),
|
||
(
|
||
"mediawiki",
|
||
"peertube",
|
||
"https://www.mediawiki.org/wiki/Extension:PeerTubeEmbed",
|
||
"check",
|
||
),
|
||
(
|
||
"mediawiki",
|
||
"libretranslate",
|
||
"https://www.mediawiki.org/wiki/Extension:MachineTranslation",
|
||
"check",
|
||
),
|
||
("mediawiki", "minio", "https://www.mediawiki.org/wiki/Extension:AWS", "check"),
|
||
(
|
||
"mediawiki",
|
||
"openwebui",
|
||
"https://www.mediawiki.org/wiki/Extension:AIEditingAssistant",
|
||
"check",
|
||
),
|
||
# --- XWiki extensions ---
|
||
(
|
||
"xwiki",
|
||
"keycloak",
|
||
"https://extensions.xwiki.org/xwiki/bin/view/Extension/OpenID%20Connect/",
|
||
"check",
|
||
),
|
||
(
|
||
"xwiki",
|
||
"matomo",
|
||
"https://extensions.xwiki.org/xwiki/bin/view/Extension/Piwiki%20Integration",
|
||
"check",
|
||
),
|
||
# --- Joomla ---
|
||
(
|
||
"joomla",
|
||
"keycloak",
|
||
"../../roles/web-app-joomla/files/joomla-oidc-plugin/",
|
||
"check",
|
||
),
|
||
(
|
||
"joomla",
|
||
"matomo",
|
||
"https://extensions.joomla.org/extension/itcs-matomo/",
|
||
"check",
|
||
),
|
||
# --- Friendica ---
|
||
("friendica", "matomo", "https://github.com/friendica/friendica-addons", "check"),
|
||
# --- Pretix ---
|
||
(
|
||
"pretix",
|
||
"keycloak",
|
||
"https://docs.pretix.eu/en/latest/admin/installation/index.html",
|
||
"check",
|
||
),
|
||
# --- PeerTube ---
|
||
(
|
||
"peertube",
|
||
"keycloak",
|
||
"https://www.npmjs.com/package/peertube-plugin-auth-openid-connect",
|
||
"check",
|
||
),
|
||
# --- BigBlueButton (Greenlight) ---
|
||
(
|
||
"bigbluebutton",
|
||
"keycloak",
|
||
"https://docs.bigbluebutton.org/greenlight/v3/external-authentication/",
|
||
"check",
|
||
),
|
||
# --- CRM / ERP: auth + email ---
|
||
(
|
||
"zammad",
|
||
"keycloak",
|
||
"https://admin-docs.zammad.org/en/latest/settings/security/third-party/saml.html",
|
||
"check",
|
||
),
|
||
(
|
||
"zammad",
|
||
"mailu",
|
||
"https://admin-docs.zammad.org/en/latest/channels/email/index.html",
|
||
"check",
|
||
),
|
||
("espocrm", "keycloak", "https://docs.espocrm.com/administration/oidc/", "check"),
|
||
(
|
||
"espocrm",
|
||
"mailu",
|
||
"https://docs.espocrm.com/user-guide/imap-smtp-configuration/",
|
||
"check",
|
||
),
|
||
(
|
||
"suitecrm",
|
||
"keycloak",
|
||
"https://docs.suitecrm.com/8.x/admin/configuration/saml/8.7.0-saml-configuration/",
|
||
"check",
|
||
),
|
||
(
|
||
"suitecrm",
|
||
"mailu",
|
||
"https://github.com/SuiteCRM/SuiteCRM",
|
||
"check",
|
||
),
|
||
(
|
||
"odoo",
|
||
"keycloak",
|
||
"https://github.com/OCA/server-auth/tree/16.0/auth_oidc",
|
||
"check",
|
||
),
|
||
(
|
||
"odoo",
|
||
"mailu",
|
||
"https://www.odoo.com/documentation/latest/applications/general/email_communication.html",
|
||
"check",
|
||
),
|
||
(
|
||
"odoo",
|
||
"nextcloud",
|
||
"https://apps.odoo.com/apps/modules/19.0/nextcloud_odoo_integration",
|
||
"coin",
|
||
),
|
||
(
|
||
"erpnext",
|
||
"keycloak",
|
||
"https://docs.frappe.io/framework/user/en/guides/integration/openid_connect_and_frappe_social_login",
|
||
"check",
|
||
),
|
||
(
|
||
"erpnext",
|
||
"mailu",
|
||
"https://docs.frappe.io/erpnext/user/manual/en/setting-up-email-account",
|
||
"check",
|
||
),
|
||
# --- Other SSO-to-Keycloak (covered centrally today via the sso service) ---
|
||
(
|
||
"baserow",
|
||
"keycloak",
|
||
"https://baserow.io/user-docs/configure-openid-connect-for-oauth-2-sso",
|
||
"coin",
|
||
),
|
||
(
|
||
"taiga",
|
||
"keycloak",
|
||
"https://github.com/taigaio/taiga-contrib-oidc-auth",
|
||
"check",
|
||
),
|
||
]
|