Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Empty file modified services/bin/m01-intelligence.js
100644 → 100755
Empty file.
10 changes: 10 additions & 0 deletions services/bin/nsfocus-rsas-v6-0r04f04sp09.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
#!/usr/bin/env node

import { fileURLToPath } from "node:url";
import { runServiceMain } from "@chaitin-ai/octobus-sdk";

import { service } from "../nsfocus__rsas_v6-0r04f04sp09/src/service.js";

runServiceMain(service, {
entryFile: fileURLToPath(new URL("../nsfocus__rsas_v6-0r04f04sp09/bin/nsfocus-rsas-v6-0r04f04sp09.js", import.meta.url)),
});
4 changes: 4 additions & 0 deletions services/bin/octobus-tentacles.js
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,10 @@ const services = {
entryFile: "../nsfocus__nips_v5-6-r11/bin/nsfocus-nips-v5-6-r11.js",
serviceModule: "../nsfocus__nips_v5-6-r11/src/service.js",
},
"nsfocus-rsas-v6-0r04f04sp09": {
entryFile: "../nsfocus__rsas_v6-0r04f04sp09/bin/nsfocus-rsas-v6-0r04f04sp09.js",
serviceModule: "../nsfocus__rsas_v6-0r04f04sp09/src/service.js",
},
"owasp-dependency-track-sca-v5-0": {
entryFile: "../owasp__dependency-track-sca_v5-0/bin/owasp-dependency-track-sca-v5-0.js",
serviceModule: "../owasp__dependency-track-sca_v5-0/src/service.js",
Expand Down
Empty file modified services/m01__intelligence/bin/m01-intelligence.js
100644 → 100755
Empty file.
99 changes: 99 additions & 0 deletions services/nsfocus__rsas_v6-0r04f04sp09/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
# NSFOCUS RSAS V6.0R04F04SP09

OctoBus package for the NSFOCUS RSAS (Remote Security Assessment System,
绿盟网络安全漏洞扫描系统) V6.0R04F04SP09 REST API.

## Authentication

RSAS authenticates with a username/password pair passed as URL query
parameters (`?username=...&password=...`). Provide them through the secret
binding (`user`/`username` + `password`); every request also sends
`format=json` and `curr_lang` (default `cn`).

## Configuration

| Binding | Location | Description |
| --- | --- | --- |
| `host` | config | Base URL with scheme, e.g. `https://10.65.193.127` |
| `user` / `username` | secret (or config) | Login username |
| `password` | secret | Login password |
| `currLang` | config | Response language `cn` (default) or `en` |
| `timeoutMs` | config | HTTP timeout in ms (default 30000) |
| `skipTlsVerify` | config | Skip TLS verification for self-signed device certs |
| `headers` | config | Extra HTTP headers |

## RPCs

All responses carry the RSAS envelope fields `ret_code`, `ret_msg`, `data`
(as a `google.protobuf.Value`) and the transport `http_status`. Task-creation
RPCs additionally surface `task_id`. Download RPCs return `BinaryResponse`
with base64 body plus content metadata.

### Task lifecycle
- `CreateTask` — `POST /api/task/create` (config.xml payload)
- `CreateVulnTask` — `POST /api/task/vul/create`
- `CreateBaselineTask` — `POST /api/task/baseline/create`
- `CreatePwdTask` — `POST /api/task/pwd/create`
- `CreateWebTask` — `POST /api/task/web/create`
- `CreateOfflineTask` — `POST /api/task/offline/create`
- `CreateDockerTask` — `POST /api/task/docker/create`
- `CreateCodeauditTask` — `POST /api/task/codeaudit/create`
- `CreateHostAssetsTask` — `POST /api/task/hostassets/create`
- `CreateWebAssetsTask` — `POST /api/task/webassets/create`
- `GetTaskStatus` — `GET /api/task/status/{task_id}`
- `PauseTask` / `ResumeTask` / `StopTask` / `DeleteTask` — `POST /api/task/{action}/{task_id}`
- `BatchDeleteTasks` — `POST /api/task/batch_delete`
- `ListTasks` — `GET /api/task/list`
- `ListActiveTasks` — `GET /api/task/active_list`
- `GetTaskResult` — `GET /api/report/task/{task_id}`
- `CreateAuthInfo` — `POST /api/authinfo/create`
- `LoginVerify` — `POST /api/auth/login_verify`

### Templates and dictionaries
- `ListSysvulnTemplate` — `GET /api/template/sysvuln/list`
- `ListWebvulnTemplate` — `GET /api/template/webvuln/list`
- `ListBaselineTemplate` — `GET /api/template/baseline/list`
- `GetBaselineParams` — `GET /api/template/baseline/params`
- `ListCodeauditTemplate` — `GET /api/template/codeaudit/list`
- `ListAssetTemplate` — `GET /api/template/asset/list`
- `CreateBaselineTemplate` — `POST /api/template/baseline/create`
- `ListUserpwd` — `GET /api/userpwd/list`
- `CreateUserpwd` — `POST /api/userpwd/create`

### System and audit
- `GetSystemStatus` — `GET /api/system/status`
- `GetLogInfo` — `GET /api/log/getlogInfo`

### Reports
- `ListReportTemplate` — `GET /api/report/template/list`
- `GenerateReport` — `POST /api/generate_report/`
- `GetReportProgress` — `GET /api/get_report_progress/report_id/{report_id}`
- `DownloadReport` — `GET /api/download_report/report_id/{report_id}/report_type/{report_type}`
- `DeleteReports` — `POST /api/delete_reports`

### Agent
- `GetAgentMethodConfig` / `SetAgentMethodConfig` — `/api/agent/agent_method_config`
- `GetAgentAuth` — `GET /api/agent/get_agent_auth`
- `GetAgentPackageUrl` — `GET /api/agent/get_agentpackage_url`
- `DownloadAgent` — `GET /api/agent/download/{linux|windows}`

## Error mapping

| Condition | gRPC status |
| --- | --- |
| Missing required argument | `INVALID_ARGUMENT` |
| HTTP 401 / 403 | `PERMISSION_DENIED` |
| HTTP 404 / 405 | `INVALID_ARGUMENT` |
| HTTP 429 (rate limit) | `RESOURCE_EXHAUSTED` |
| HTTP 5xx / network failure | `UNAVAILABLE` |
| Non-JSON or empty body | `UNKNOWN` |

RSAS applies its own rate limits (600 req/min globally; 300 req/min for task
status and report progress; 150 req/min for other interfaces), returning HTTP
429 when exceeded.

## Testing

```
npm test -- --service-dir nsfocus__rsas_v6-0r04f04sp09
```
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#!/usr/bin/env node
import { runServiceMain } from '@chaitin-ai/octobus-sdk';

import { service } from '../src/service.js';

runServiceMain(service);
78 changes: 78 additions & 0 deletions services/nsfocus__rsas_v6-0r04f04sp09/config.schema.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"additionalProperties": true,
"properties": {
"host": {
"type": "string",
"description": "NSFOCUS RSAS base URL with http(s) scheme, e.g. https://10.65.193.127."
},
"restBaseUrl": {
"type": "string",
"description": "Alias for host."
},
"baseUrl": {
"type": "string",
"description": "Alias for host."
},
"rest_base_url": {
"type": "string",
"description": "Alias for host."
},
"base_url": {
"type": "string",
"description": "Alias for host."
},
"user": {
"type": "string",
"description": "Login username. Prefer secret.user for persistent credentials."
},
"username": {
"type": "string",
"description": "Alias for user."
},
"currLang": {
"type": "string",
"enum": ["cn", "en"],
"default": "cn",
"description": "Response language (RSAS curr_lang parameter)."
},
"curr_lang": {
"type": "string",
"description": "Alias for currLang."
},
"timeoutMs": {
"type": "integer",
"minimum": 1,
"default": 30000,
"description": "HTTP timeout in milliseconds. RSAS scan-result and report calls can be slow."
},
"timeout_ms": {
"type": "integer",
"minimum": 1,
"description": "Alias for timeoutMs."
},
"skipTlsVerify": {
"type": "boolean",
"default": false,
"description": "Skip TLS certificate verification for private deployments with self-signed certs."
},
"tlsInsecureSkipVerify": {
"type": "boolean",
"default": false,
"description": "Legacy alias for skipTlsVerify."
},
"insecureSkipVerify": {
"type": "boolean",
"default": false,
"description": "Alias for skipTlsVerify."
},
"headers": {
"type": "object",
"additionalProperties": {
"type": "string"
},
"description": "Optional additional HTTP headers."
}
}
}
13 changes: 13 additions & 0 deletions services/nsfocus__rsas_v6-0r04f04sp09/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{
"name": "nsfocus-rsas-v6-0r04f04sp09",
"version": "0.0.0",
"private": true,
"type": "module",
"bin": {
"nsfocus-rsas-v6-0r04f04sp09": "bin/nsfocus-rsas-v6-0r04f04sp09.js"
},
"dependencies": {
"@chaitin-ai/octobus-sdk": "^0.6.0",
"undici": "^7.16.0"
}
}
Loading
Loading