1*1c60b9acSAndroid Build Coastguard Worker# raw-proxy plugin 2*1c60b9acSAndroid Build Coastguard Worker 3*1c60b9acSAndroid Build Coastguard Worker## Enabling for build 4*1c60b9acSAndroid Build Coastguard Worker 5*1c60b9acSAndroid Build Coastguard Worker``` 6*1c60b9acSAndroid Build Coastguard Worker$ cmake .. -DLWS_ROLE_RAW_PROXY=1 7*1c60b9acSAndroid Build Coastguard Worker``` 8*1c60b9acSAndroid Build Coastguard Worker 9*1c60b9acSAndroid Build Coastguard Worker## configuration pvo 10*1c60b9acSAndroid Build Coastguard Worker 11*1c60b9acSAndroid Build Coastguard Worker|pvo|value meaning| 12*1c60b9acSAndroid Build Coastguard Worker|---|---| 13*1c60b9acSAndroid Build Coastguard Worker|onward|The onward proxy destination, in the form `ipv4:addr[:port]`| 14*1c60b9acSAndroid Build Coastguard Worker 15*1c60b9acSAndroid Build Coastguard Worker## Note for vhost selection 16*1c60b9acSAndroid Build Coastguard Worker 17*1c60b9acSAndroid Build Coastguard WorkerNotice that since it proxies the packets "raw", there's no SNI or Host: 18*1c60b9acSAndroid Build Coastguard Workerheader to resolve amongst multiple vhosts on the same listen port. So the 19*1c60b9acSAndroid Build Coastguard Workervhost you associate with this protocol must be alone on its own port. 20*1c60b9acSAndroid Build Coastguard Worker 21*1c60b9acSAndroid Build Coastguard WorkerIt's also possible to apply this or other role + protocols as a fallback after 22*1c60b9acSAndroid Build Coastguard Workerhttp[s] processing rejected the first packet from an incoming connection. 23*1c60b9acSAndroid Build Coastguard WorkerSee `./READMEs/README-http-fallback.md` 24*1c60b9acSAndroid Build Coastguard Worker 25*1c60b9acSAndroid Build Coastguard Worker## Note for packet size 26*1c60b9acSAndroid Build Coastguard Worker 27*1c60b9acSAndroid Build Coastguard WorkerFor throughput, since often one side is localhost that can handle larger 28*1c60b9acSAndroid Build Coastguard Workerpackets easily, you should create the context used with this plugin with 29*1c60b9acSAndroid Build Coastguard Worker 30*1c60b9acSAndroid Build Coastguard Worker``` 31*1c60b9acSAndroid Build Coastguard Worker info.pt_serv_buf_size = 8192; 32*1c60b9acSAndroid Build Coastguard Worker``` 33*1c60b9acSAndroid Build Coastguard Worker 34*1c60b9acSAndroid Build Coastguard Workerlwsws already does this. 35*1c60b9acSAndroid Build Coastguard Worker 36*1c60b9acSAndroid Build Coastguard Worker## Using with C 37*1c60b9acSAndroid Build Coastguard Worker 38*1c60b9acSAndroid Build Coastguard WorkerSee the minimal example `./minimal-example/raw/minimal-raw-proxy` for 39*1c60b9acSAndroid Build Coastguard Workera working example of a vhost that accepts connections and then 40*1c60b9acSAndroid Build Coastguard Workerproxies them using this plugin. The example is almost all boilerplate 41*1c60b9acSAndroid Build Coastguard Workerfor setting up the context and the pvo. 42*1c60b9acSAndroid Build Coastguard Worker 43*1c60b9acSAndroid Build Coastguard Worker## Using with lwsws 44*1c60b9acSAndroid Build Coastguard Worker 45*1c60b9acSAndroid Build Coastguard WorkerFor a usage where the plugin "owns" the whole vhost, you should enable the 46*1c60b9acSAndroid Build Coastguard Workerplugin protocol on the vhost as usual, and specify the "onward" pvo with: 47*1c60b9acSAndroid Build Coastguard Worker 48*1c60b9acSAndroid Build Coastguard Worker``` 49*1c60b9acSAndroid Build Coastguard Worker "ws-protocols": [{ 50*1c60b9acSAndroid Build Coastguard Worker "raw-proxy": { 51*1c60b9acSAndroid Build Coastguard Worker "status": "ok", 52*1c60b9acSAndroid Build Coastguard Worker "onward": "ipv4:remote.address.com:port" 53*1c60b9acSAndroid Build Coastguard Worker } 54*1c60b9acSAndroid Build Coastguard Worker }], 55*1c60b9acSAndroid Build Coastguard Worker``` 56*1c60b9acSAndroid Build Coastguard Worker 57*1c60b9acSAndroid Build Coastguard Workerand then define the vhost with: 58*1c60b9acSAndroid Build Coastguard Worker 59*1c60b9acSAndroid Build Coastguard Worker``` 60*1c60b9acSAndroid Build Coastguard Worker "apply-listen-accept": "1", 61*1c60b9acSAndroid Build Coastguard Worker "listen-accept-role": "raw-proxy", 62*1c60b9acSAndroid Build Coastguard Worker "listen-accept-protocol": "raw-proxy" 63*1c60b9acSAndroid Build Coastguard Worker``` 64*1c60b9acSAndroid Build Coastguard Worker 65*1c60b9acSAndroid Build Coastguard Workerwhich tells it to apply the role and protocol as soon as a connection is 66*1c60b9acSAndroid Build Coastguard Workeraccepted on the vhost. 67