@higress/proxy-runtime

0.0.1 • Public • Published

Forked from @solo-io/proxy-runtime

How to use the SDK:

Local development

Clone this repo to somewhere on disk.

Create a new project:

npm install --save-dev assemblyscript
npx asinit .

add --use abort=abort_proc_exit to the asc in packages.json. for example:

    "asbuild:debug": "asc assembly/index.ts -b build/untouched.wasm --use abort=abort_proc_exit -t build/untouched.wat --sourceMap http://127.0.0.1:8081/build/untouched.wasm.map --debug",
    "asbuild:release": "asc assembly/index.ts -b build/optimized.wasm --use abort=abort_proc_exit -t build/optimized.wat --sourceMap --optimize",

Add "@higress-group/proxy-runtime": "file:/home/yuval/Projects/higress/proxy-assemblyscript" to your dependencies. run npm install

using NPM

Just include the @higress-group/proxy-runtime package.

Hello, World

Code

Copy this into assembly/index.ts:

export * from "@higress-group/proxy-runtime/proxy"; // this exports the required functions for the proxy to interact with us.
import { RootContext, Context, registerRootContext, FilterHeadersStatusValues, stream_context } from "@higress-group/proxy-runtime";

class AddHeaderRoot extends RootContext {
  createContext(context_id: u32): Context {
    return new AddHeader(context_id, this);
  }
}

class AddHeader extends Context {
  constructor(context_id: u32, root_context: AddHeaderRoot) {
    super(context_id, root_context);
  }
  onResponseHeaders(a: u32, end_of_stream: bool): FilterHeadersStatusValues {
    const root_context = this.root_context;
    if (root_context.getConfiguration() == "") {
      stream_context.headers.response.add("hello", "world!");
    } else {
      stream_context.headers.response.add("hello", root_context.getConfiguration());
    }
    return FilterHeadersStatusValues.Continue;
  }
}

registerRootContext((context_id: u32) => { return new AddHeaderRoot(context_id); }, "add_header");

build

To build, simply run:

npm run asbuild

build results will be in the build folder. untouched.wasm and optimized.wasm are the compiled file that we will use (you only need one of them, if unsure use optimized.wasm).

Run

Configure envoy with your filter:

          - name: envoy.filters.http.wasm
            config:
              config:
                name: "add_header"
                root_id: "add_header"
                configuration: "what ever you want"
                vm_config:
                  vm_id: "my_vm_id"
                  runtime: "envoy.wasm.runtime.v8"
                  code:
                    local:
                      filename: /PATH/TO/CODE/build/optimized.wasm
                  allow_precompiled: false

/@higress/proxy-runtime/

    Package Sidebar

    Install

    npm i @higress/proxy-runtime

    Weekly Downloads

    0

    Version

    0.0.1

    License

    Apache-2.0

    Unpacked Size

    73.6 kB

    Total Files

    12

    Last publish

    Collaborators

    • hazel0928
    • heimanba