Public-flip audit: URL refresh + minor scrubs
Repository URLs, version strings, and example creds normalized for the public git.sulkta.com endpoint. No code-behavior change. Audit-applied by the public-flip rolling-audit pass — see kayos/openclaw-workspace memory/2026-05-27 logs for the campaign context.
This commit is contained in:
parent
44ce76cb44
commit
99ee5f1a9a
12 changed files with 79 additions and 67 deletions
33
README.md
33
README.md
|
|
@ -1,11 +1,11 @@
|
|||
# ispconfig-py
|
||||
|
||||
Python SDK for the ISPConfig remote SOAP API. Internal tooling for the Sulkta
|
||||
Coop — wraps the panel's SOAP surface so we stop writing throw-away PHP
|
||||
scripts every time we need to touch a site, zone, or mailbox.
|
||||
Python SDK for the ISPConfig remote SOAP API. Wraps the panel's SOAP surface
|
||||
so you stop writing throw-away PHP scripts every time you need to touch a
|
||||
site, zone, or mailbox.
|
||||
|
||||
v0.2 covers the **full remote API** — every method exposed by ISPConfig's
|
||||
`remote/index.php`, 312 of them as of Rackham 2026-04-22. The hand-audited
|
||||
v0.2 covers the full remote API — every method exposed by ISPConfig's
|
||||
`remote/index.php`, 312 of them as of ISPConfig 3.2.11. The hand-audited
|
||||
helpers (stable names, param-order fixes, convenience wrappers) sit on top
|
||||
of auto-generated wrappers that mirror the PHP surface 1:1.
|
||||
|
||||
|
|
@ -32,8 +32,8 @@ from ispconfig import ISPConfigClient
|
|||
|
||||
with ISPConfigClient(
|
||||
"https://panel.example.com:8080/remote/index.php",
|
||||
username="kayos",
|
||||
password="hunter2",
|
||||
username="admin",
|
||||
password="...",
|
||||
) as c:
|
||||
site = c.sites.web_domain_get(156)
|
||||
print(site["domain"], site["php"])
|
||||
|
|
@ -112,7 +112,7 @@ c.databases.user_update(client_id=5, primary_id=42, params={"database_password":
|
|||
#### `clients`
|
||||
|
||||
```python
|
||||
cli = c.clients.get_by_username("jacob")
|
||||
cli = c.clients.get_by_username("alice")
|
||||
groupid = c.clients.get_groupid(cli["client_id"])
|
||||
ids = c.clients.get_all()
|
||||
```
|
||||
|
|
@ -120,8 +120,8 @@ ids = c.clients.get_all()
|
|||
### Auto-generated (full surface, v0.2)
|
||||
|
||||
Wrappers mirror the PHP method names 1:1. Param shapes come from PHPDoc where
|
||||
available and default to `Any` otherwise. Verified to wire up against Rackham
|
||||
2026-04-22 but not yet battle-tested in production use — file issues if you
|
||||
available and default to `Any` otherwise. Verified to wire up against
|
||||
ISPConfig 3.2.11 but not exercised in every code path — file issues if you
|
||||
hit one.
|
||||
|
||||
| Module | Class | Methods |
|
||||
|
|
@ -191,8 +191,7 @@ funcs = c.list_functions()
|
|||
of older documentation and PHP snippets floating around, ISPConfig 3.2.11+
|
||||
wants the origin **without** a trailing dot: `dns_zone_get_id("example.com")`
|
||||
works, `dns_zone_get_id("example.com.")` raises `no_domain_found`. Our
|
||||
wrapper strips a trailing dot for you so either call works. Verified
|
||||
against Rackham 2026-04-22.
|
||||
wrapper strips a trailing dot for you so either call works.
|
||||
- **`mail_user_get` with a filter dict returns inconsistent shapes.** If the
|
||||
filter matches multiple rows you get an array; exactly-one match returns a
|
||||
bare map. Our `mail.user_get(filter_dict)` always normalizes to a list.
|
||||
|
|
@ -249,7 +248,7 @@ To run the live smoke test against a real panel:
|
|||
|
||||
```bash
|
||||
export ISPCONFIG_TEST_URL="https://panel.example.com:8080/remote/index.php"
|
||||
export ISPCONFIG_TEST_USER="kayos"
|
||||
export ISPCONFIG_TEST_USER="admin"
|
||||
export ISPCONFIG_TEST_PASS="..."
|
||||
export ISPCONFIG_TEST_VERIFY_SSL=0 # for self-signed certs
|
||||
pytest tests/test_smoke.py
|
||||
|
|
@ -261,14 +260,14 @@ require admin privileges skip gracefully with a documented reason.
|
|||
|
||||
## Regenerating for newer ISPConfig versions
|
||||
|
||||
When ISPConfig ships a new version on Rackham (or another panel), resync:
|
||||
When ISPConfig ships a new version, resync against its PHP sources:
|
||||
|
||||
```bash
|
||||
# 1. Pull fresh PHP sources from the panel (sudo required; ask Cobb for creds):
|
||||
# 1. Pull fresh PHP sources from the panel host (sudo required):
|
||||
mkdir -p /tmp/ispconfig-php-src
|
||||
ssh rackham "sudo tar -cz -C /usr/local/ispconfig/interface/lib/classes/remote.d ." \
|
||||
ssh PANEL_HOST "sudo tar -cz -C /usr/local/ispconfig/interface/lib/classes/remote.d ." \
|
||||
| tar -xz -C /tmp/ispconfig-php-src/
|
||||
ssh rackham "sudo cat /usr/local/ispconfig/interface/lib/classes/remoting.inc.php" \
|
||||
ssh PANEL_HOST "sudo cat /usr/local/ispconfig/interface/lib/classes/remoting.inc.php" \
|
||||
> /tmp/ispconfig-php-src/remoting.inc.php
|
||||
|
||||
# 2. Re-extract the method inventory:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue