Chuyển đến nội dung

Tài liệu tham khảo SDK backend cho plugin ​

Mã plugin backend chạy trong sandbox JavaScript của Ogma và nhận đối tượng sdk từ ứng dụng chủ.

Để tìm hiểu đầy đủ định dạng gói plugin, trường manifest, quyền và ví dụ, bắt đầu với hướng dẫn hệ thống plugin.

Điểm vào ​

Plugin backend cung cấp hàm init:

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

Ogma gọi init(sdk) khi plugin được bật.

Namespace chính ​

NamespaceMục đích
sdk.consoleGhi thông điệp vào bộ đệm nhật ký của plugin.
sdk.metaĐọc siêu dữ liệu và đường dẫn dữ liệu của plugin.
sdk.eventsĐăng ký callback cho các sự kiện Ogma.
sdk.requestsTruy vấn lịch sử HTTP và dữ liệu yêu cầu.
sdk.findingsTruy vấn hoặc tạo phát hiện khi quyền cho phép.
sdk.scopeĐọc thông tin phạm vi đang hoạt động.
sdk.storageLưu bền vững trạng thái plugin dưới dạng khóa/giá trị.
sdk.fsThao tác tệp trong thư mục dữ liệu riêng của plugin.
sdk.pathHàm hỗ trợ tạo đường dẫn trong thư mục dữ liệu plugin.
sdk.apiCung cấp hàm xử lý backend cho frontend của plugin.

Ghi nhật ký ​

js
sdk.console.log("message")
sdk.console.warn("warning")
sdk.console.error("error")

Thông điệp xuất hiện trong giao diện nhật ký của plugin. Giữ nhật ký ngắn gọn và tránh ghi dữ liệu bí mật.

Siêu dữ liệu ​

js
sdk.meta.id()
sdk.meta.packageId()
sdk.meta.version()
sdk.meta.path()

Dùng sdk.meta.path() cho dữ liệu riêng của plugin. Không mặc định rằng mã plugin chạy trong sandbox có thể truy cập đường dẫn bất kỳ trong hệ thống tệp.

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")

Sự kiện ​

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")
})

Callback cần chạy nhanh. Công việc kéo dài nên được thực hiện thông qua thao tác rõ ràng của người dùng hoặc hàm xử lý API backend.

Hàm xử lý cầu nối frontend ​

Plugin backend có thể cung cấp hàm xử lý cho các bảng frontend của plugin:

js
sdk.api.register("ping", async function(input) {
  return { ok: true, input: input };
});

Frontend gọi hàm xử lý thông qua SDK frontend của Ogma. Xem tài liệu tham khảo SDK frontend.

Yêu cầu bảo mật ​

  • Coi lưu lượng HTTP, phát hiện, nhật ký và bản xuất là dữ liệu nhạy cảm.
  • Chỉ yêu cầu các quyền plugin của bạn cần.
  • Không bao giờ ghi thông tin đăng nhập, cookie, bearer token hoặc lưu lượng riêng tư vào nhật ký theo mặc định.
  • Đảm bảo hoạt động của plugin rõ ràng và dễ hiểu đối với người dùng.

Phần mềm độc quyền. Bảo lưu mọi quyền.