xref: /aosp_15_r20/external/libwebsockets/plugins/raw-proxy/README.md (revision 1c60b9aca93fdbc9b5f19b2d2194c91294b22281)
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