본문으로 이동

플러그인 백엔드 SDK 참조 ​

백엔드 플러그인 코드는 Ogma의 JavaScript 샌드박스에서 실행되며 호스트 애플리케이션으로부터 sdk 객체를 받습니다.

전체 플러그인 패키지 형식, 매니페스트 필드, 권한 및 예제는 플러그인 시스템 가이드부터 확인하세요.

진입점 ​

백엔드 플러그인은 init 함수를 제공합니다.

js
async function init(sdk) {
  sdk.console.log("plugin started");
}

Ogma는 플러그인이 활성화될 때 init(sdk)를 호출합니다.

주요 네임스페이스 ​

네임스페이스용도
sdk.console플러그인 로그 버퍼에 메시지를 기록합니다.
sdk.meta플러그인 메타데이터와 데이터 경로를 읽습니다.
sdk.eventsOgma 이벤트의 콜백을 등록합니다.
sdk.requestsHTTP 기록과 요청 데이터를 조회합니다.
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 토큰 또는 비공개 트래픽을 로그에 기록하지 마세요.
  • 사용자가 플러그인의 동작을 명확히 이해할 수 있도록 하세요.

독점 소프트웨어입니다. 모든 권리는 저작권자에게 있습니다.