First slice of multi-catalog ("taps") support. Today the App Center browses one
catalog (get.libreportal.org). This adds an ordered list of catalog sources and
teaches the browse scan to merge them.
- New scripts/catalog/catalog_sources.sh — the source list in its OWN file
($configs_dir/catalog/sources.json). Source #1 is ALWAYS the official catalog,
synthesized live from CFG_RELEASE_BASE_URL/CHANNEL (can't be edited/removed,
always pinned on top). Extra sources are stored as a small JSON array and are
UNVERIFIED (trust=community). Helpers: catalogSourcesJson / catalogEnabledSources
(priority order) / catalogSourceAdd|Remove|Toggle|List / catalogFetchCommunityIndex.
- webui_registry_scan.sh now walks catalogEnabledSources: the OFFICIAL source is
still signature-verified (lpFetchIndexInto, unchanged trust path); third-party
sources are fetched unverified. Apps are merged by slug into one card carrying a
sources[] array in priority order (highest first = default). Trust/verified are
taken from the SOURCE, never the artifact's self-claim, so a community index
can't promote itself to "official". Icons still mirror same-origin from the
official index only. registry_catalog.json gains top-level sources[] + per-app
sources[]; the old source{} object + signed/serial are kept for back-compat.
- New `libreportal catalog source list|add|remove|enable|disable` + `catalog
refresh` CLI (dynamic-routed). Mutations go through the task system (cliTaskRun
"…" "catalog"), never a new mutating API.
Scope firewall: this governs APP BROWSE + ADD only. LibrePortal's own updates and
hotfixes still resolve from the official CFG_RELEASE_BASE_URL alone — lpFetchIndex
is untouched, so a third-party catalog can never become a system-update channel.
Next: `app add --source`, then the WebUI (domains-style block source manager +
Add-dialog source picker with the Official badge / unverified warning).
Signed-off-by: librelad <librelad@digitalangels.vip>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
40 lines
1.4 KiB
Bash
Executable File
40 lines
1.4 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# This file is auto-generated by generate_arrays.sh
|
|
# Do not edit manually - run './scripts/source/files/generate_arrays.sh run' to regenerate
|
|
|
|
source_scripts=(
|
|
"source/artifacts.sh"
|
|
"source/fetch.sh"
|
|
"source/files/arrays/files_app.sh"
|
|
"source/files/arrays/files_backup.sh"
|
|
"source/files/arrays/files_catalog.sh"
|
|
"source/files/arrays/files_checks.sh"
|
|
"source/files/arrays/files_cli.sh"
|
|
"source/files/arrays/files_config.sh"
|
|
"source/files/arrays/files_crontab.sh"
|
|
"source/files/arrays/files_database.sh"
|
|
"source/files/arrays/files_docker.sh"
|
|
"source/files/arrays/files_function.sh"
|
|
"source/files/arrays/files_install.sh"
|
|
"source/files/arrays/files_instance.sh"
|
|
"source/files/arrays/files_logs.sh"
|
|
"source/files/arrays/files_menu.sh"
|
|
"source/files/arrays/files_migrate.sh"
|
|
"source/files/arrays/files_network.sh"
|
|
"source/files/arrays/files_os.sh"
|
|
"source/files/arrays/files_peer.sh"
|
|
"source/files/arrays/files_restore.sh"
|
|
"source/files/arrays/files_setup.sh"
|
|
"source/files/arrays/files_source.sh"
|
|
"source/files/arrays/files_ssh.sh"
|
|
"source/files/arrays/files_start.sh"
|
|
"source/files/arrays/files_task.sh"
|
|
"source/files/arrays/files_update.sh"
|
|
"source/files/arrays/files_webui.sh"
|
|
"source/files/arrays/function_manifest.sh"
|
|
"source/files/generate_function_manifest.sh"
|
|
"source/verify.sh"
|
|
|
|
)
|