Files
T
Juan DenisandClaude Opus 4.8 2a060c518d refactor(ftp): extract FTP backend into serverkit-ftp builtin extension
Plan 47 Phase 2. The FTP blueprint + service move out of core into
builtin-extensions/serverkit-ftp/backend/ (entry_point ftp:ftp_bp, url_prefix
unchanged). Core no longer registers /api/v1/ftp or imports ftp_service — a
fresh panel that never touches FTP loads none of it. Already in
CONVERTED_BUILTIN_SLUGS, so upgrades re-acquire the backend automatically.

Acceptance (tests/test_ftp_extraction.py): uninstalled = no /api/v1/ftp routes +
app.services.ftp_service gone; installed = blueprint hot-loads and /ftp/status
responds; uninstall removes it.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-14 22:15:07 -04:00

40 lines
1.5 KiB
JSON

{
"name": "serverkit-ftp",
"display_name": "FTP Server",
"version": "1.0.0",
"description": "FTP server management (vsftpd/proftpd) with install, users, config and logs, as a tab in the Files group.",
"author": "ServerKit",
"license": "MIT",
"category": "utility",
"homepage": "https://github.com/jhd3197/ServerKit",
"permissions": ["shell", "filesystem"],
"entry_point": "ftp:ftp_bp",
"url_prefix": "/api/v1/ftp",
"icon": "<rect x=\"16\" y=\"16\" width=\"6\" height=\"6\" rx=\"1\"/><rect x=\"2\" y=\"16\" width=\"6\" height=\"6\" rx=\"1\"/><rect x=\"9\" y=\"2\" width=\"6\" height=\"6\" rx=\"1\"/><path d=\"M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3\"/><path d=\"M12 12V8\"/>",
"contributions": {
"tabs": [
{
"group": "files",
"to": "/ftp",
"label": "FTP Server",
"icon": "<rect x=\"16\" y=\"16\" width=\"6\" height=\"6\" rx=\"1\"/><rect x=\"2\" y=\"16\" width=\"6\" height=\"6\" rx=\"1\"/><rect x=\"9\" y=\"2\" width=\"6\" height=\"6\" rx=\"1\"/><path d=\"M5 16v-3a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v3\"/><path d=\"M12 12V8\"/>"
}
],
"routes": [
{ "path": "ftp", "component": "FtpServerPage", "group": "files" },
{ "path": "ftp/:tab", "component": "FtpServerPage", "group": "files" }
],
"page_titles": {
"/ftp": "FTP Server"
},
"command_palette": [
{
"label": "FTP Server",
"path": "/ftp",
"category": "Pages",
"keywords": "sftp upload vsftpd proftpd transfer"
}
]
}
}