appleby-proxy-mcp 1.0.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +3 -0
- package/index.js +8 -6
- package/package.json +1 -1
package/AGENTS.md
CHANGED
|
@@ -102,6 +102,9 @@ npm test
|
|
|
102
102
|
|
|
103
103
|
## Releases
|
|
104
104
|
|
|
105
|
+
- **1.0.1** — `proxy_create_proxy_host` says public hosts need the shared Cloudflare real-IP
|
|
106
|
+
include; access-list tools drop `expand: proxy_hosts` (NPM 2.16 answers 500 — use
|
|
107
|
+
`proxy_host_count`).
|
|
105
108
|
- **1.0.0** — first release: 43 tools for NPM 2.16 (proxy, redirection and 404 hosts, streams,
|
|
106
109
|
certificates, access lists, default site, log viewer, audit log).
|
|
107
110
|
|
package/index.js
CHANGED
|
@@ -7,7 +7,7 @@ import { readFileSync, writeFileSync, existsSync } from "fs";
|
|
|
7
7
|
import { join } from "path";
|
|
8
8
|
import { homedir } from "os";
|
|
9
9
|
|
|
10
|
-
const VERSION = "1.0.
|
|
10
|
+
const VERSION = "1.0.1";
|
|
11
11
|
|
|
12
12
|
// --- Interactive setup ---
|
|
13
13
|
|
|
@@ -224,7 +224,7 @@ server.tool("proxy_get_proxy_host", "Get one proxy host, including its advanced_
|
|
|
224
224
|
return { content: text(res) };
|
|
225
225
|
});
|
|
226
226
|
|
|
227
|
-
server.tool("proxy_create_proxy_host", "Create a proxy host. NPM writes and reloads nginx immediately; a config nginx rejects is saved as <id>.conf.err and the host goes offline (meta.nginx_online=false) — check the response's meta. For a Forta-gated host on *.appleby.cloud, put `set $forta_client_id \"<client_id>\"; include /data/nginx/custom/forta-gate.conf;` in advanced_config and use a DNS-01 certificate", {
|
|
227
|
+
server.tool("proxy_create_proxy_host", "Create a proxy host. NPM writes and reloads nginx immediately; a config nginx rejects is saved as <id>.conf.err and the host goes offline (meta.nginx_online=false) — check the response's meta. A public host behind Cloudflare needs `include /data/nginx/custom/cloudflare-real-ip.conf;` in advanced_config, or its logs show Cloudflare's edge instead of the client (never add it to a LAN-only host that authorises by IP). For a Forta-gated host on *.appleby.cloud, put `set $forta_client_id \"<client_id>\"; include /data/nginx/custom/forta-gate.conf;` in advanced_config and use a DNS-01 certificate", {
|
|
228
228
|
domain_names: domainNames,
|
|
229
229
|
...proxyHostFields,
|
|
230
230
|
}, async (args) => {
|
|
@@ -455,8 +455,10 @@ const accessListFields = {
|
|
|
455
455
|
.describe("IP rules, in order. Replaces the list"),
|
|
456
456
|
};
|
|
457
457
|
|
|
458
|
-
|
|
459
|
-
|
|
458
|
+
// NPM 2.16 answers 500 to expand=proxy_hosts on access lists; proxy_host_count
|
|
459
|
+
// in the plain response says the same thing.
|
|
460
|
+
server.tool("proxy_list_access_lists", "List NPM access lists (IP allow/deny + basic auth) with proxy_host_count. Passwords are redacted. For appleby.cloud SSO, prefer the Forta gate (see proxy_create_proxy_host) over basic auth", {
|
|
461
|
+
expand: expand(["owner", "items", "clients"]),
|
|
460
462
|
}, async ({ expand: e }) => {
|
|
461
463
|
const res = await npm("GET", "nginx/access-lists", expandParam(e));
|
|
462
464
|
return { content: text(res) };
|
|
@@ -464,7 +466,7 @@ server.tool("proxy_list_access_lists", "List NPM access lists (IP allow/deny + b
|
|
|
464
466
|
|
|
465
467
|
server.tool("proxy_get_access_list", "Get one access list", {
|
|
466
468
|
id,
|
|
467
|
-
expand: expand(["owner", "items", "clients"
|
|
469
|
+
expand: expand(["owner", "items", "clients"]),
|
|
468
470
|
}, async ({ id: listId, expand: e }) => {
|
|
469
471
|
const res = await npm("GET", `nginx/access-lists/${listId}`, expandParam(e));
|
|
470
472
|
return { content: text(res) };
|
|
@@ -483,7 +485,7 @@ server.tool("proxy_update_access_list", "Update an access list. Only the fields
|
|
|
483
485
|
return { content: text(res) };
|
|
484
486
|
});
|
|
485
487
|
|
|
486
|
-
server.tool("proxy_delete_access_list", "Delete an access list. Hosts using it become public. Check
|
|
488
|
+
server.tool("proxy_delete_access_list", "Delete an access list. Hosts using it become public. Check its proxy_host_count (proxy_list_access_lists) first", { id }, async ({ id: listId }) => {
|
|
487
489
|
const res = await npm("DELETE", `nginx/access-lists/${listId}`);
|
|
488
490
|
return { content: text(res) };
|
|
489
491
|
});
|