플러그인 백엔드 SDK 참조
백엔드 플러그인 코드는 Ogma의 JavaScript 샌드박스에서 실행되며 호스트 애플리케이션으로부터 sdk 객체를 받습니다.
전체 플러그인 패키지 형식, 매니페스트 필드, 권한 및 예제는 플러그인 시스템 가이드부터 확인하세요.
진입점
백엔드 플러그인은 init 함수를 제공합니다.
js
async function init(sdk) {
sdk.console.log("plugin started");
}Ogma는 플러그인이 활성화될 때 init(sdk)를 호출합니다.
주요 네임스페이스
| 네임스페이스 | 용도 |
|---|---|
sdk.console | 플러그인 로그 버퍼에 메시지를 기록합니다. |
sdk.meta | 플러그인 메타데이터와 데이터 경로를 읽습니다. |
sdk.events | Ogma 이벤트의 콜백을 등록합니다. |
sdk.requests | HTTP 기록과 요청 데이터를 조회합니다. |
sdk.findings | 권한이 허용하는 경우 발견 사항을 조회하거나 생성합니다. |
sdk.scope | 현재 활성화된 점검 범위 정보를 읽습니다. |
sdk.storage | 플러그인 상태를 키/값 형태로 영구 저장합니다. |
sdk.fs | 플러그인 전용 데이터 디렉터리에서 파일 작업을 수행합니다. |
sdk.path | 플러그인 데이터 디렉터리 내 경로를 구성하는 도우미입니다. |
sdk.api | 백엔드 핸들러를 플러그인 프런트엔드에 제공합니다. |
로깅
js
sdk.console.log("message")
sdk.console.warn("warning")
sdk.console.error("error")메시지는 플러그인 로그 UI에 표시됩니다. 로그는 간결하게 작성하고 비밀 정보를 기록하지 마세요.
메타데이터
js
sdk.meta.id()
sdk.meta.packageId()
sdk.meta.version()
sdk.meta.path()플러그인별 데이터에는 sdk.meta.path()를 사용하세요. 샌드박스에서 실행되는 플러그인 코드가 임의의 파일 시스템 경로에 접근할 수 있다고 가정하지 마세요.
js
sdk.storage.set("key", "value")
sdk.storage.get("key")
sdk.storage.keys()
sdk.storage.delete("key")
sdk.storage.clear()js
sdk.fs.readFile("relative/file.txt")
sdk.fs.writeFile("relative/file.txt", "text")
sdk.fs.appendFile("relative/file.txt", "more")
sdk.fs.exists("relative/file.txt")
sdk.fs.existsSync("relative/file.txt")
sdk.fs.mkdir("relative/dir")
sdk.path.join("a", "b", "c")이벤트
js
sdk.events.onInterceptRequest(function(req) {
return req
})
sdk.events.onInterceptResponse(function(req, res) {
sdk.console.log(res.getCode())
})
sdk.events.onProjectChange(function() {
sdk.console.log("project changed")
})콜백은 빠르게 처리되어야 합니다. 오래 걸리는 작업은 사용자의 명시적인 동작이나 백엔드 API 핸들러를 통해 실행하도록 분리하세요.
프런트엔드 브리지 핸들러
백엔드 플러그인은 프런트엔드 플러그인 패널에서 사용할 핸들러를 제공할 수 있습니다.
js
sdk.api.register("ping", async function(input) {
return { ok: true, input: input };
});프런트엔드는 Ogma 프런트엔드 SDK를 통해 핸들러를 호출합니다. 프런트엔드 SDK 참조를 확인하세요.
보안 준수 사항
- HTTP 트래픽, 발견 사항, 로그 및 내보낸 데이터를 민감한 정보로 취급하세요.
- 플러그인에 필요한 권한만 요청하세요.
- 기본 동작으로 자격 증명, 쿠키, bearer 토큰 또는 비공개 트래픽을 로그에 기록하지 마세요.
- 사용자가 플러그인의 동작을 명확히 이해할 수 있도록 하세요.