How to use the SDK:
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 "@solo-io/proxy-runtime": "file:/home/yuval/Projects/solo/proxy-assemblyscript" to your dependencies.
run npm install
Just include the @solo-io/proxy-runtime package.
Copy this into assembly/index.ts:
export*from"@solo-io/proxy-runtime/proxy";// this exports the required functions for the proxy to interact with us.import{RootContext,Context,registerRootContext,FilterHeadersStatusValues,stream_context}from"@solo-io/proxy-runtime";classAddHeaderRootextendsRootContext{createContext(context_id: u32): Context{returnnewAddHeader(context_id,this);}}classAddHeaderextendsContext{constructor(context_id: u32,root_context: AddHeaderRoot){super(context_id,root_context);}onResponseHeaders(a: u32,end_of_stream: bool): FilterHeadersStatusValues{constroot_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());}returnFilterHeadersStatusValues.Continue;}}registerRootContext((context_id: u32)=>{returnnewAddHeaderRoot(context_id);},"add_header");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).
Configure envoy with your filter:
- name: envoy.filters.http.wasmconfig:
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.wasmallow_precompiled: false