update docs and examples
This commit is contained in:
parent
daa152b376
commit
3502d67b06
187
README.md
187
README.md
|
@ -21,9 +21,12 @@ For Windows, see https://golang.org/dl
|
||||||
All dependencies are included, at the correct version in the `./vendor` directory.
|
All dependencies are included, at the correct version in the `./vendor` directory.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -mod vendor -o telebit-relay-linux ./cmd/telebit-relay/telebit-relay.go
|
go generate ./...
|
||||||
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -mod vendor -o telebit-relay-macos ./cmd/telebit-relay/telebit-relay.go
|
|
||||||
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -mod vendor -o telebit-relay-windows.exe ./cmd/telebit-relay/telebit-relay.go
|
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -mod vendor -o telebit-relay-linux ./cmd/telebit-relay/*.go
|
||||||
|
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -mod vendor -o telebit-relay-macos ./cmd/telebit-relay/*.go
|
||||||
|
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -mod vendor -o telebit-relay-windows-debug.exe ./cmd/telebit-relay/*.go
|
||||||
|
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -mod vendor -ldflags "-H windowsgui" -o telebit-relay-windows.exe ./cmd/telebit-relay/*.go
|
||||||
```
|
```
|
||||||
|
|
||||||
### Configure
|
### Configure
|
||||||
|
@ -35,19 +38,103 @@ See `./telebit-relay --help` for all options, and `examples/relay.env` for their
|
||||||
### Example
|
### Example
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
./telebit-relay --acme-agree=true
|
./telebit-relay --acme-agree=true --auth-url=http://localhost:3010/api
|
||||||
```
|
```
|
||||||
|
|
||||||
Copy `examples/relay.env` as `.env` in the working directory.
|
Copy `examples/relay.env` as `.env` in the working directory.
|
||||||
|
|
||||||
|
## Management Server
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pushd mplexy/
|
||||||
|
|
||||||
|
go generate ./...
|
||||||
|
|
||||||
|
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -mod vendor -o mgmt-server-linux ./mgmt/cmd/mgmt/*.go
|
||||||
|
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -mod vendor -o mgmt-server-macos ./mgmt/cmd/mgmt/*.go
|
||||||
|
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -mod vendor -o mgmt-server-windows-debug.exe ./mgmt/cmd/mgmt/*.go
|
||||||
|
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -mod vendor -ldflags "-H windowsgui" -o mgmt-server-windows.exe ./mgmt/cmd/mgmt/*.go
|
||||||
|
```
|
||||||
|
|
||||||
|
### Example
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./telebit-mgmt --domain devices.example.com --port 3010
|
||||||
|
```
|
||||||
|
|
||||||
|
Copy `examples/mgmt.env` as `.env` in the working directory.
|
||||||
|
|
||||||
|
### Device Management API
|
||||||
|
|
||||||
|
Create a token with the same `SECRET` used with the `mgmt` server,
|
||||||
|
and add a device by its `subdomain`.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
SECRET="xxxxxxxxxxx"
|
||||||
|
TOKEN=$(go run -mod=vendor cmd/signjwt/*.go $SECRET)
|
||||||
|
```
|
||||||
|
|
||||||
|
Authorize a device:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
my_subdomain="xxxx"
|
||||||
|
curl -X POST http://mgmt.example.com:3010/api/devices \
|
||||||
|
-H "Authorization: Bearer ${TOKEN}" \
|
||||||
|
-H "Content-Type: application/json" \
|
||||||
|
-d '{ "slug": "'$my_subdomain'" }'
|
||||||
|
```
|
||||||
|
|
||||||
|
```json
|
||||||
|
{ "shared_key": "ZZZZZZZZ" }
|
||||||
|
```
|
||||||
|
|
||||||
|
Show data of a single device
|
||||||
|
|
||||||
|
```bash
|
||||||
|
my_subdomain="xxxx"
|
||||||
|
curl -L http://mgmt.example.com:3010/api/devices/${my_subdomain} -H "Authorization: Bearer ${TOKEN}"
|
||||||
|
```
|
||||||
|
|
||||||
|
```json
|
||||||
|
{ "subdomain": "sub1", "updated_at": "2020-05-20T12:00:01Z" }
|
||||||
|
```
|
||||||
|
|
||||||
|
Get a list of connected devices:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
curl -L http://mgmt.example.com:3010/api/devices -H "Authorization: Bearer ${TOKEN}"
|
||||||
|
```
|
||||||
|
|
||||||
|
```json
|
||||||
|
[{ "subdomain": "sub1", "updated_at": "2020-05-20T12:00:01Z" }]
|
||||||
|
```
|
||||||
|
|
||||||
|
Get a list of disconnected devices:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
curl -L http://mgmt.example.com:3010/api/devices?inactive=true -H "Authorization: Bearer ${TOKEN}"
|
||||||
|
```
|
||||||
|
|
||||||
|
Deauthorize a device:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
my_subdomain="xxxx"
|
||||||
|
curl -L -X DELETE http://mgmt.example.com:3010/api/devices/${my_subdomain} -H "Authorization: Bearer ${TOKEN}"
|
||||||
|
```
|
||||||
|
|
||||||
## Relay Client
|
## Relay Client
|
||||||
|
|
||||||
All dependencies are included, at the correct version in the `./vendor` directory.
|
All dependencies are included, at the correct version in the `./vendor` directory.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -mod vendor -o telebit-client-linux ./cmd/telebit/telebit.go
|
pushd mplexy/
|
||||||
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -mod vendor -o telebit-client-macos ./cmd/telebit/telebit.go
|
|
||||||
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -mod vendor -o telebit-client-windows.exe ./cmd/telebit/telebit.go
|
go generate ./...
|
||||||
|
|
||||||
|
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -mod vendor -o telebit-client-linux ./cmd/telebit/*.go
|
||||||
|
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -mod vendor -o telebit-client-macos ./cmd/telebit/*.go
|
||||||
|
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -mod vendor -o telebit-client-windows-debug.exe ./cmd/telebit/*.go
|
||||||
|
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -mod vendor -ldflags "-H windowsgui" -o telebit-client-windows.exe ./cmd/telebit/*.go
|
||||||
```
|
```
|
||||||
|
|
||||||
### Configure
|
### Configure
|
||||||
|
@ -59,12 +146,12 @@ See `./telebit-client --help` for all options, and `examples/client.env` for the
|
||||||
### Example
|
### Example
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# For .env
|
./telebit-client --acme-agree=true \
|
||||||
SECRET=abcdef1234567890
|
--relay wss://devices.example.com \
|
||||||
```
|
--app-id test-id --secret ZR2rxYmcKJcmtKgmH9D5Qw \
|
||||||
|
--acme-relay http://mgmt.example.com:3010/api/dns \
|
||||||
```bash
|
--auth-url http://mgmt.example.com:3010/api \
|
||||||
node-tunnel-client $ bin/stunnel.js --locals http://hfc.rootprojects.org:8080,http://test1.hfc.rootprojects.org:8080 --relay wss://localhost.rootprojects.org:8443 --secret abcdef1234567890
|
--locals http://xxx.devices.example.com:8080,https://xxx.devices.example.com:8080
|
||||||
```
|
```
|
||||||
|
|
||||||
## Local Web Application
|
## Local Web Application
|
||||||
|
@ -84,77 +171,3 @@ EOF
|
||||||
|
|
||||||
python3 -m http.server 3000
|
python3 -m http.server 3000
|
||||||
```
|
```
|
||||||
|
|
||||||
### Check Results
|
|
||||||
|
|
||||||
- you should see traffic going to both node-clients hitting the single webserver on the back end.
|
|
||||||
- Browse: https://rvpn.rootprojects.invalid:8443/api/org.rootprojects.rvpn/servers
|
|
||||||
|
|
||||||
```javascript
|
|
||||||
{
|
|
||||||
"type": "servers/GET",
|
|
||||||
"schema": "",
|
|
||||||
"txts": 1490473843,
|
|
||||||
"txid": 8,
|
|
||||||
"error": "ok",
|
|
||||||
"error_description": "",
|
|
||||||
"error_uri": "",
|
|
||||||
"result": {
|
|
||||||
"servers": [{
|
|
||||||
"server_name": "0xc42014a0c0",
|
|
||||||
"server_id": 1,
|
|
||||||
"domains": [{
|
|
||||||
"domain_name": "hfc.rootprojects.org",
|
|
||||||
"server_id": 1,
|
|
||||||
"bytes_in": 4055,
|
|
||||||
"bytes_out": 8119,
|
|
||||||
"requests": 12,
|
|
||||||
"responses": 12,
|
|
||||||
"source_addr": "127.0.0.1:55875"
|
|
||||||
}, {
|
|
||||||
"domain_name": "test1.hfc.rootprojects.org",
|
|
||||||
"server_id": 1,
|
|
||||||
"bytes_in": 0,
|
|
||||||
"bytes_out": 0,
|
|
||||||
"requests": 0,
|
|
||||||
"responses": 0,
|
|
||||||
"source_addr": "127.0.0.1:55875"
|
|
||||||
}],
|
|
||||||
"duration": 182.561747754,
|
|
||||||
"idle": 21.445976033,
|
|
||||||
"bytes_in": 8119,
|
|
||||||
"bytes_out": 4055,
|
|
||||||
"requests": 12,
|
|
||||||
"responses": 12,
|
|
||||||
"source_address": "127.0.0.1:55875"
|
|
||||||
}, {
|
|
||||||
"server_name": "0xc4200ea3c0",
|
|
||||||
"server_id": 2,
|
|
||||||
"domains": [{
|
|
||||||
"domain_name": "hfc.rootprojects.org",
|
|
||||||
"server_id": 2,
|
|
||||||
"bytes_in": 1098,
|
|
||||||
"bytes_out": 62,
|
|
||||||
"requests": 2,
|
|
||||||
"responses": 2,
|
|
||||||
"source_addr": "127.0.0.1:56318"
|
|
||||||
}, {
|
|
||||||
"domain_name": "test1.hfc.rootprojects.org",
|
|
||||||
"server_id": 2,
|
|
||||||
"bytes_in": 0,
|
|
||||||
"bytes_out": 0,
|
|
||||||
"requests": 0,
|
|
||||||
"responses": 0,
|
|
||||||
"source_addr": "127.0.0.1:56318"
|
|
||||||
}],
|
|
||||||
"duration": 65.481814913,
|
|
||||||
"idle": 23.589609269,
|
|
||||||
"bytes_in": 62,
|
|
||||||
"bytes_out": 1098,
|
|
||||||
"requests": 2,
|
|
||||||
"responses": 2,
|
|
||||||
"source_address": "127.0.0.1:56318"
|
|
||||||
}]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
|
@ -1,2 +1,3 @@
|
||||||
SECRET=xxxxyyyyssss8347
|
RELAY=wss://devices.example.com:8443
|
||||||
RELAY=wss://example.com:8443
|
SECRET=xxxxxxxxxxxxxxxx
|
||||||
|
LOCALS=https:xxx.devices.example.com:3000,http:xxx.devices.example.com:3000
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
SECRET=xxxxxxxxxxxxxxxx
|
||||||
|
DUCKDNS_TOKEN=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
|
||||||
|
GODADDY_API_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||||
|
GODADDY_API_SECRET=XXXXXXXXXXXXXXXXXXXXXX
|
|
@ -1,6 +1,8 @@
|
||||||
NICKNAME=server-1
|
NICKNAME=server-1
|
||||||
SECRET=xxxxxxxxxxxxxxxx
|
SECRET=xxxxxxxxxxxxxxxx
|
||||||
ADMIN_HOSTNAME=example.duckdns.org
|
ADMIN_HOSTNAME=devices.example.com
|
||||||
WSS_HOSTNAME=
|
WSS_HOSTNAME=
|
||||||
PORT=443
|
PORT=443
|
||||||
DUCKDNS_TOKEN=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
|
DUCKDNS_TOKEN=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
|
||||||
|
GODADDY_API_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
|
||||||
|
GODADDY_API_SECRET=XXXXXXXXXXXXXXXXXXXXXX
|
||||||
|
|
Loading…
Reference in New Issue