{"id":46126107,"url":"https://github.com/elvatis/openclaw-ispconfig","last_synced_at":"2026-05-17T13:01:35.328Z","repository":{"id":340132547,"uuid":"1164661421","full_name":"elvatis/openclaw-ispconfig","owner":"elvatis","description":"OpenClaw plugin: Manage ISPConfig hosting, sites, DNS, mail, and databases via natural language","archived":false,"fork":false,"pushed_at":"2026-03-30T17:01:37.000Z","size":177,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-30T19:04:41.200Z","etag":null,"topics":["ai","dns","elvatis","hosting","ispconfig","mail","openclaw","plugin"],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/elvatis.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":"ROADMAP-v1.md","authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-23T10:43:54.000Z","updated_at":"2026-03-30T17:01:59.000Z","dependencies_parsed_at":null,"dependency_job_id":"436218a4-2942-4e9d-b09f-2a29c48c2932","html_url":"https://github.com/elvatis/openclaw-ispconfig","commit_stats":null,"previous_names":["homeofe/openclaw-ispconfig","elvatis/openclaw-ispconfig"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/elvatis/openclaw-ispconfig","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elvatis%2Fopenclaw-ispconfig","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elvatis%2Fopenclaw-ispconfig/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elvatis%2Fopenclaw-ispconfig/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elvatis%2Fopenclaw-ispconfig/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/elvatis","download_url":"https://codeload.github.com/elvatis/openclaw-ispconfig/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/elvatis%2Fopenclaw-ispconfig/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33136118,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-17T09:28:26.183Z","status":"ssl_error","status_checked_at":"2026-05-17T09:27:52.702Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","dns","elvatis","hosting","ispconfig","mail","openclaw","plugin"],"created_at":"2026-03-02T02:16:25.350Z","updated_at":"2026-05-17T13:01:35.319Z","avatar_url":"https://github.com/elvatis.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# @elvatis_com/openclaw-ispconfig\n\n**Current version:** 1.0.0\n\nOpenClaw plugin for full ISPConfig server management via the Remote JSON API.\n\n## Features\n\n- Session-based API client with auto-reconnect\n- **292 tools** covering the entire ISPConfig Remote API\n- Full CRUD for: Clients, Sites, DNS, Mail, Databases, FTP, Shell, Cron, WebDAV, OpenVZ\n- Advanced: Spam filters, mail policies, fetchmail, relay domains, APS packages, system config\n- `/ispconfig` chat command for quick help and tool reference\n- Safety guards via `readOnly` and `allowedOperations`\n- Live integration tests against a real ISPConfig host\n\n## ISPConfig API format\n\nThis plugin uses the JSON endpoint format:\n\n- URL: `https://server:8080/remote/json.php?method_name`\n- Method is passed as query string, not in JSON body\n- Body format:\n  - login: `{ \"username\": \"...\", \"password\": \"...\" }`\n  - normal calls: `{ \"session_id\": \"...\", ...params }`\n  - logout: `{ \"session_id\": \"...\" }`\n\n## Installation\n\n### ClawHub\n\n```bash\nclawhub install openclaw-ispconfig\n```\n\n### npm\n\n```bash\nnpm install @elvatis_com/openclaw-ispconfig\n```\n\n## ISPConfig setup\n\n1. In ISPConfig, create a Remote User.\n2. Grant required API permissions.\n3. Copy endpoint URL and credentials.\n4. Configure plugin in OpenClaw.\n\n## Configuration\n\n`openclaw.plugin.json` config keys:\n\n- `apiUrl` (required): ISPConfig JSON API URL\n- `username` (required): remote user\n- `password` (required, secret): remote password\n- `serverId` (default `1`): default server id\n- `defaultServerIp` (optional): fallback IP for provisioning DNS A record\n- `readOnly` (default `false`): block write tools\n- `allowedOperations` (default `[]`): whitelist of tool names\n- `verifySsl` (default `true`): TLS certificate verification\n\n## Chat Command\n\n### `/ispconfig`\n\nType `/ispconfig` in any connected chat to display the full list of available tools, the plugin version, and the connected ISPConfig hostname (credentials are never shown).\n\nExample output:\n\n```\n🖥️ ISPConfig Plugin\nVersion 0.4.0 | Connected to isp.elvatis.com\n\n📋 Read (17)\n• isp_system_info - Server-Info\n• isp_client_list - Alle Clients\n...\n\n✏️ Write (20+)\n• isp_client_add / _update / _delete - Clients\n...\n\n🚀 Provisioning\n• isp_provision_site - Domain + DNS + Mail + DB in einem Schritt\n```\n\n## OpenClaw Plugin API\n\nThis plugin uses the modern OpenClaw Plugin API (`api.*`) instead of the legacy `(runtime, config)` registration pattern.\n\nThe entry point exports a default plugin object with a `register(api)` function:\n\n```ts\nexport default {\n  manifest: pluginManifest,\n  register(api: PluginApi): void {\n    // Register tools\n    api.registerTool({ name, description, parameters, execute });\n\n    // Register chat commands\n    api.registerCommand({ name, description, usage, handler });\n  },\n};\n```\n\nKey API methods used:\n\n- `api.registerTool({ name, description, parameters, execute })` - exposes an AI-callable tool with JSON Schema parameters\n- `api.registerCommand({ name, description, usage, handler })` - registers a `/command` for chat\n- `api.pluginConfig` - typed plugin configuration from `openclaw.json`\n- `api.logger` - structured logger (info, warn, error)\n\n## Tools\n\n### Read tools (22)\n\n- `isp_system_info` - params: none\n- `isp_methods_list` - params: none\n- `isp_client_list` - params: optional filter fields\n- `isp_client_get` - params: `client_id`\n- `isp_sites_list` - params: optional filters accepted by `sites_web_domain_get`\n- `isp_site_get` - params: `primary_id` (or `site_id`, `domain_id`)\n- `isp_domains_list` - params: none\n- `isp_dns_zone_list` - params: user-related filter params\n- `isp_dns_zone_get` - params: `primary_id` (or `zone_id`)\n- `isp_dns_record_list` - params: `zone_id`\n- `isp_mail_domain_list` - params: optional filters\n- `isp_mail_user_list` - params: optional filters\n- `isp_mail_alias_list` - params: optional filters\n- `isp_mail_forward_list` - params: optional filters\n- `isp_db_list` - params: user-related filters\n- `isp_db_get` - params: `primary_id`\n- `isp_db_user_get` - params: `primary_id`\n- `isp_ftp_user_get` - params: `primary_id`\n- `isp_shell_user_get` - params: `primary_id`\n- `isp_ssl_status` - params: none\n- `isp_quota_check` - params: `client_id`\n- `isp_cron_list` - params: optional filters\n\n### Write tools (42)\n\n- `isp_client_add` - params: ISPConfig `client_add` payload\n- `isp_client_update` - params: `client_id`, `params` object with fields to update\n- `isp_client_delete` - params: `client_id`\n- `isp_site_add` - params: ISPConfig `sites_web_domain_add` payload\n- `isp_site_update` - params: `client_id`, `primary_id`, `params` object with fields to update\n- `isp_site_delete` - params: `primary_id`\n- `isp_domain_add` - alias for `isp_site_add`\n- `isp_dns_zone_add` - params: ISPConfig `dns_zone_add` payload\n- `isp_dns_zone_update` - params: `client_id`, `primary_id`, `params` (ns, mbox, refresh, retry, expire, minimum, ttl, active)\n- `isp_dns_zone_delete` - params: `primary_id`\n- `isp_dns_record_add` - params: include `type` (`A`, `AAAA`, `MX`, `TXT`, `CNAME`, `SRV`, `CAA`, `NS`, `PTR`) and matching payload\n- `isp_dns_record_update` - params: `type`, `primary_id`, `params` object with fields to update\n- `isp_dns_record_delete` - params: include `type` and matching delete payload\n- `isp_mail_domain_add` - params: ISPConfig `mail_domain_add` payload\n- `isp_mail_domain_update` - params: `client_id`, `primary_id`, `params` object with fields to update\n- `isp_mail_domain_delete` - params: `primary_id`\n- `isp_mail_user_add` - params: ISPConfig `mail_user_add` payload\n- `isp_mail_user_update` - params: `client_id`, `primary_id`, `params` (password, quota, etc.)\n- `isp_mail_user_delete` - params: `primary_id`\n- `isp_mail_alias_add` - params: ISPConfig `mail_alias_add` payload\n- `isp_mail_alias_update` - params: `client_id`, `primary_id`, `params` object with fields to update\n- `isp_mail_alias_delete` - params: `primary_id`\n- `isp_mail_forward_add` - params: ISPConfig `mail_forward_add` payload\n- `isp_mail_forward_update` - params: `client_id`, `primary_id`, `params` object with fields to update\n- `isp_mail_forward_delete` - params: `primary_id`\n- `isp_db_add` - params: ISPConfig `sites_database_add` payload\n- `isp_db_update` - params: `client_id`, `primary_id`, `params` object with fields to update\n- `isp_db_delete` - params: `primary_id`\n- `isp_db_user_add` - params: ISPConfig `sites_database_user_add` payload\n- `isp_db_user_update` - params: `client_id`, `primary_id`, `params` object with fields to update\n- `isp_db_user_delete` - params: `primary_id`\n- `isp_shell_user_add` - params: ISPConfig `sites_shell_user_add` payload\n- `isp_shell_user_update` - params: `client_id`, `primary_id`, `params` object with fields to update\n- `isp_shell_user_delete` - params: `primary_id`\n- `isp_ftp_user_add` - params: ISPConfig `sites_ftp_user_add` payload\n- `isp_ftp_user_update` - params: `client_id`, `primary_id`, `params` object with fields to update\n- `isp_ftp_user_delete` - params: `primary_id`\n- `isp_cron_add` - params: ISPConfig `sites_cron_add` payload\n- `isp_cron_update` - params: `client_id`, `primary_id`, `params` object with fields to update\n- `isp_cron_delete` - params: `primary_id`\n- `isp_backup_list` - params: none (returns skipped if API method unavailable)\n\n### Provisioning tool (1)\n\n- `isp_provision_site`\n- Required params:\n  - `domain`\n  - `clientName`\n  - `clientEmail`\n- Optional params:\n  - `serverIp`\n  - `createMail` (default `true`)\n  - `createDb` (default `true`)\n  - `serverId` (default from config)\n\nWorkflow:\n\n1. Create client\n2. Create site with SSL and Let's Encrypt enabled\n3. Create DNS zone\n4. Add DNS records (`A`, `CNAME`, SPF TXT, DMARC TXT)\n5. Optionally create mail domain and `info@` + `admin@` mailboxes\n6. Optionally create DB user and database\n7. Ensure SSL flags are enabled on the site\n\n**Total: 292 tools** covering the entire ISPConfig Remote API.\n\n## Safety\n\n- `readOnly=true` blocks all write and provisioning tools\n- `allowedOperations=[...]` allows only named tools\n\n## Development\n\n```bash\nnpm run build\nnpm test\n```\n\nFor live tests, provide environment variables:\n\n- `ISPCONFIG_API_URL`\n- `ISPCONFIG_USER`\n- `ISPCONFIG_PASS`\n\n## Shared Template\n\nFor automation that creates GitHub issues, use `src/templates/github-issue-helper.ts`.\nIt provides `isValidIssueRepoSlug()`, `resolveIssueRepo()`, and `buildGhIssueCreateCommand()`.\n\n## Changelog\n\nSee [CHANGELOG.md](CHANGELOG.md) for the full history.\n\n### 1.0.0 (2026-03-17)\n\n**Full ISPConfig API coverage: 292 tools.**\n\n- **Phase 1 (Core):** Clients, Server, Web Domain backups, Quota/Traffic, Monitoring (+32)\n- **Phase 2 (DNS):** All DNS record types (DNAME, DS, HINFO, LOC, NAPTR, RP, SSHFP, TLSA, ALIAS), slaves, templates, DNSSEC (+54)\n- **Phase 3 (Mail):** Alias domains, catchall, mailing lists, filters, fetchmail, transport, relay, spam (+66)\n- **Phase 4 (Web):** VHost aliases/subdomains, web folders, WebDAV (+29)\n- **Phase 5 (System):** Config, APS packages, domain registry, permissions (+25)\n- **Phase 6 (OpenVZ):** Templates, IPs, VMs with full lifecycle (+22)\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felvatis%2Fopenclaw-ispconfig","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Felvatis%2Fopenclaw-ispconfig","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Felvatis%2Fopenclaw-ispconfig/lists"}