From f35aec42671e4ddab5ef37d8a52fb14c64fa93f0 Mon Sep 17 00:00:00 2001 From: Eric Bower Date: Thu, 26 Oct 2023 19:30:20 -0400 Subject: [PATCH 1/5] feat: docs site --- .github/workflows/docs.yml | 27 + .gitignore | 2 + Makefile | 21 + README.md | 418 +---- deploy/gcloud.md | 48 +- docs/cmd/ssg.go | 94 ++ docs/posts/advanced.md | 81 + docs/posts/cheatsheet.md | 121 ++ docs/posts/cli.md | 125 ++ docs/posts/faq.md | 26 + docs/posts/forwarding-types.md | 124 ++ docs/posts/getting-started.md | 155 ++ docs/posts/home.md | 6 + docs/posts/how-it-works.md | 78 + docs/posts/sitemap.md | 6 + docs/public/.gitkeep | 1 + docs/sish-diagrams.excalidraw | 2509 ++++++++++++++++++++++++++++++ docs/static/favicon-16x16.png | Bin 0 -> 485 bytes docs/static/favicon-32x32.png | Bin 0 -> 1136 bytes docs/static/hiw-port-forward.png | Bin 0 -> 50752 bytes docs/static/hiw-sish-private.png | Bin 0 -> 78106 bytes docs/static/hiw-sish-public.png | Bin 0 -> 71154 bytes docs/static/hiw-vpn.png | Bin 0 -> 60448 bytes docs/static/main.css | 90 ++ docs/tmpl/base.layout.tmpl | 21 + docs/tmpl/footer.partial.tmpl | 5 + docs/tmpl/home.page.tmpl | 61 + docs/tmpl/nav.partial.tmpl | 18 + docs/tmpl/post.page.tmpl | 62 + docs/tmpl/sitemap.page.tmpl | 22 + docs/tmpl/toc.partial.tmpl | 14 + go.mod | 11 +- go.sum | 15 + 33 files changed, 3736 insertions(+), 425 deletions(-) create mode 100644 .github/workflows/docs.yml create mode 100644 Makefile create mode 100644 docs/cmd/ssg.go create mode 100644 docs/posts/advanced.md create mode 100644 docs/posts/cheatsheet.md create mode 100644 docs/posts/cli.md create mode 100644 docs/posts/faq.md create mode 100644 docs/posts/forwarding-types.md create mode 100644 docs/posts/getting-started.md create mode 100644 docs/posts/home.md create mode 100644 docs/posts/how-it-works.md create mode 100644 docs/posts/sitemap.md create mode 100644 docs/public/.gitkeep create mode 100644 docs/sish-diagrams.excalidraw create mode 100644 docs/static/favicon-16x16.png create mode 100644 docs/static/favicon-32x32.png create mode 100644 docs/static/hiw-port-forward.png create mode 100644 docs/static/hiw-sish-private.png create mode 100644 docs/static/hiw-sish-public.png create mode 100644 docs/static/hiw-vpn.png create mode 100644 docs/static/main.css create mode 100644 docs/tmpl/base.layout.tmpl create mode 100644 docs/tmpl/footer.partial.tmpl create mode 100644 docs/tmpl/home.page.tmpl create mode 100644 docs/tmpl/nav.partial.tmpl create mode 100644 docs/tmpl/post.page.tmpl create mode 100644 docs/tmpl/sitemap.page.tmpl create mode 100644 docs/tmpl/toc.partial.tmpl diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml new file mode 100644 index 0000000..cefb898 --- /dev/null +++ b/.github/workflows/docs.yml @@ -0,0 +1,27 @@ +name: docs +on: + push: + branches: + - main +jobs: + docs: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Set outputs + id: vars + run: echo "sha_short=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT + - uses: actions/setup-go@v4 + with: + go-version: '1.21' + - name: build docs site + run: make ssg + - name: publish to pgs + uses: picosh/pgs-action@v3 + with: + user: hey + key: ${{ secrets.PRIVATE_KEY }} + src: './public/' + project: "sish-${{ steps.vars.outputs.sha_short }}" + promote: "sish-prod" + retain: "sish-" diff --git a/.gitignore b/.gitignore index ec1f2e3..90fce30 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,5 @@ deploy/ dist/ sish __debug_bin +docs/public/* +!docs/public/.gitkeep diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..8b36002 --- /dev/null +++ b/Makefile @@ -0,0 +1,21 @@ +clean: + rm -rf ./docs/public/* + echo "" > ./docs/public/.gitkeep +.PHONY: clean + +ssg: + go run ./docs/cmd + cp ./docs/static/* ./docs/public +.PHONY: ssg + +docs: ssg + rsync -vr ./docs/public/ hey@pgs.sh:/sish-local +.PHONY: docs + +docs-prod: ssg + rsync -vr ./docs/public/ hey@pgs.sh:/sish-prod +.PHONY: docs-prod + +dev: + go run main.go --http-address localhost:3000 --domain testing.ssi.sh +.PHONY: dev diff --git a/README.md b/README.md index 812321f..629fc1b 100644 --- a/README.md +++ b/README.md @@ -2,425 +2,35 @@ An open source serveo/ngrok alternative. -## Deploy +[Read the docs.](https://docs.ssi.sh) -Builds are made automatically for each commit to the repo and are pushed to Dockerhub. Builds are tagged using a commit sha, -branch name, tag, latest if released on main. You can find a list [here](https://hub.docker.com/r/antoniomika/sish/tags). -Each release builds separate `sish` binaries that can be downloaded from [here](https://github.com/antoniomika/sish/releases) for various OS/archs. Feel free to either use the automated binaries or to build your own. If you submit a PR, images are -not built by default and will require a retag from a maintainer to be built. +## dev -1. Pull the Docker image - - `docker pull antoniomika/sish:latest` -2. Run the image - - - ```bash - docker run -itd --name sish \ - -v ~/sish/ssl:/ssl \ - -v ~/sish/keys:/keys \ - -v ~/sish/pubkeys:/pubkeys \ - --net=host antoniomika/sish:latest \ - --ssh-address=:22 \ - --http-address=:80 \ - --https-address=:443 \ - --https=true \ - --https-certificate-directory=/ssl \ - --authentication-keys-directory=/pubkeys \ - --private-keys-directory=/keys \ - --bind-random-ports=false - ``` - -3. SSH to your host to communicate with sish - - `ssh -p 2222 -R 80:localhost:8080 ssi.sh` - -## Docker Compose - -You can also use Docker Compose to setup your sish instance. This includes taking -care of SSL via Let's Encrypt for you. This uses the -[adferrand/dnsrobocert](https://github.com/adferrand/dnsrobocert) container to handle issuing wildcard -certifications over DNS. For more information on how to use this, head to that link above. Generally, you -can deploy your service like so: +Clone the `sish` repo: ```bash -docker-compose -f deploy/docker-compose.yml up -d +git clone git@github.com:antoniomika/sish.git +cd sish ``` -The domain and DNS auth info in `deploy/docker-compose.yml` and `deploy/le-config.yml` should be updated -to reflect your needs. You will also need to create a symlink that points to your domain's -Let's Encrypt certificates like: +Add your SSH public key: ```bash -ln -s /etc/letsencrypt/live//fullchain.pem deploy/ssl/.crt -ln -s /etc/letsencrypt/live//privkey.pem deploy/ssl/.key +cp ~/.ssh/id_ed25519.pub ./deploy/pubkeys ``` -Careful: the symlinks need to point to `/etc/letsencrypt`, not a relative path. The symlinks will -not resolve on the host filesystem, but they will resolve inside of the sish container because it mounts -the letsencrypt files in /etc/letsencrypt, _not_ ./letsencrypt. - -I use these files in my deployment of `ssi.sh` and have included them here for consistency. - -## Google Cloud Platform - -There is a tutorial for creating an instance in Google Cloud Platform -with sish fully setup that can be found [here](https://github.com/antoniomika/sish/blob/main/deploy/gcloud.md). -It can be accessed through [Google Cloud Shell](https://cloud.google.com/shell). - -[![Open in Cloud Shell](https://gstatic.com/cloudssh/images/open-btn.svg)](https://ssh.cloud.google.com/cloudshell/editor?shellonly=true&cloudshell_git_repo=https%3A%2F%2Fgithub.com%2Fantoniomika%2Fsish&cloudshell_git_branch=main&cloudshell_tutorial=deploy%2Fgcloud.md) - -## How it works - -SSH can normally forward local and remote ports. This service implements -an SSH server that only handles forwarding and nothing else. The service supports -multiplexing connections over HTTP/HTTPS with WebSocket support. Just assign a -remote port as port `80` to proxy HTTP traffic and `443` to proxy HTTPS traffic. -If you use any other remote port, the server will listen to the port for TCP connections, -but only if that port is available. - -You can choose your own subdomain instead of relying on a randomly assigned one -by setting the `--bind-random-subdomains` option to `false` and then selecting a -subdomain by prepending it to the remote port specifier: - -`ssh -p 2222 -R foo:80:localhost:8080 ssi.sh` - -If the selected subdomain is not taken, it will be assigned to your connection. - -## Supported forwarding types - -### HTTP forwarding - -sish can forward any number of HTTP connections through SSH. It also provides logging the connections -to the connected client that has forwarded the connection and a web interface to see full request and -responses made to each forwarded connection. Each webinterface can be unique to the forwarded connection or -use a unified access token. To make use of HTTP forwarding, ports `[80, 443]` are used to tell sish that a -HTTP connection is being forwarded and that HTTP virtualhosting should be defined for the service. For -example, let's say I'm -developing a HTTP webservice on my laptop at port `8080` that uses websockets and I want to show one of my -coworkers who is not near me. I can forward the connection like so: +Run the binary: ```bash -ssh -R hereiam:80:localhost:8080 ssi.sh +go run main.go --http-address localhost:3000 --domain testing.ssi.sh ``` -And then share the link `https://hereiam.ssi.sh` with my coworker. They should be able to access the service -seamlessly over HTTPS, with full websocket support working fine. Let's say `hereiam.ssi.sh` isn't available, -then sish will generate a random subdomain and give that to me. - -### TCP forwarding - -Any TCP based service can be used with sish for TCP and alias forwarding. TCP forwarding -will establish a remote port on the server that you deploy sish to and will forward all connections -to that port through the SSH connection and to your local device. For example, if I was to run -a SSH server on my laptop with port `22` and want to be able to access it from anywhere at `ssi.sh:2222`, -I can use an SSH command on my laptop like so to forward the connection: - -```bash -ssh -R 2222:localhost:22 ssi.sh -``` - -I can use the forwarded connection to then access my laptop from anywhere: - -```bash -ssh -p 2222 ssi.sh -``` - -### SNI forwarding - -Sometimes, you may have multiple TCP services running on the same port. -If these services support [SNI](https://en.wikipedia.org/wiki/Server_Name_Indication), you can have sish -route TLS connections to different backends based on the SNI name provided. For example, I have two webservices -(servers) and I want to offload TLS to each without sish offloading SSL. This can be achieved by disabling sish's -internal HTTPS service (you won't be able to use the service console for this however). Then, I can start a ssh -connection from each server like so: - -From server A - -```bash -ssh -R servera.example.com:443:localhost:443 ssi.sh sni-proxy=true -``` - -From server B - -```bash -ssh -R serverb.example.com:443:localhost:443 ssi.sh sni-proxy=true -``` - -As long as server{a,b}.example.com points to where sish is hosted and a user can bind those hosts, TLS connections to -servera.example.com:443 will be forwarded to server A and TLS connections to serverb.example.com:443 will -be forwarded to server B. It is then up to each server to complete the TLS handshake and the subsequent request. - -### TCP alias forwarding - -Let's say instead I don't want the service to be accessible by the rest of the world, you can then use a TCP -alias. A TCP alias is a type of forwarded TCP connection that only exists inside of sish. You can gain access -to the alias by using SSH with the `-W` flag, which will forwarding the SSH process' stdin/stdout to the -fowarded TCP connection. In combination with authentication, this will guarantee your remote service is safe -from the rest of the world because you need to login to sish before you can access it. Changing the example -above for this would mean running the following command on my laptop: - -```bash -ssh -R mylaptop:22:localhost:22 ssi.sh -``` - -sish won't publish port 22 or 2222 to the rest of the world anymore, instead it'll retain a pointer saying -that TCP connections made from within SSH after a user has authenticated to `mylaptop:22` should be -forwarded to the forwarded TCP tunnel. Then I can use the forwarded connection access my laptop from -anywhere using: - -```bash -ssh -o ProxyCommand="ssh -W %h:%p ssi.sh" mylaptop -``` +We have an alias `make dev` for running the binary. -Shorthand for which is this with newer SSH versions: +SSH to your host to communicate with sish: ```bash -ssh -J ssi.sh mylaptop -``` - -You can also use TCP aliases with any port you would like. If for example you wanted to use an alias -with port `80` or `443` (default to a HTTP tunnel), provide the command `tcp-alias=true` to the ssh command: - -```bash -ssh -R service:80:localhost:80 ssi.sh tcp-alias=true -``` - -Aliases can be accessed on a different computer using SSH local forwards also. For the above, I could use: - -```bash -ssh -L 80:service:80 ssi.sh -``` - -to then access the forwarded server service at `localhost:80` on the client side of the computer I am on. - -## Authentication - -If you want to use this service privately, it supports both public key and password -authentication. To enable authentication, set `--authentication=true` as one of your CLI -options and be sure to configure `--authentication-password` or `--authentication-keys-directory` to your -liking. The directory provided by `--authentication-keys-directory` is watched for changes and will reload -the authorized keys automatically. The authorized cert index is regenerated on directory -modification, so removed public keys will also automatically be removed. Files in this -directory can either be single key per file, or multiple keys per file separated by newlines, -similar to `authorized_keys`. Password auth can be disabled by setting `--authentication-password=""` as a -CLI option. - -One of my favorite ways of using this for authentication is like so: - -```bash -sish@sish0:~/sish/pubkeys# curl https://github.com/antoniomika.keys > antoniomika -``` - -This will load my public keys from GitHub, place them in the directory that sish is watching, -and then load the pubkey. As soon as this command is run, I can SSH normally and it will authorize me. - -## Custom domains - -sish supports allowing users to bring custom domains to the service, but SSH key auth is required to be -enabled. To use this feature, you must setup TXT and CNAME/A records for the domain/subdomain you would -like to use for your forwarded connection. The CNAME/A record must point to the domain or IP that is hosting -sish. The TXT record must be be a `key=val` string that looks like: - -```text -sish=SSHKEYFINGERPRINT -``` - -Where `SSHKEYFINGERPRINT` is the fingerprint of the key used for logging into the server. You can set -multiple TXT records and sish will check all of them to ensure at least one is a match. You can retrieve -your key fingerprint by running: - -```bash -ssh-keygen -lf ~/.ssh/id_rsa | awk '{print $2}' -``` - -If you trust the users connecting to sish and would like to allow any domain to be used with sish -(bypassing verification), there are a few added flags to aid in this. This is especially useful when -adding multiple wildcard certificates to sish in order to not need to automatically provision Let's -Encrypt certs. To disable verfication, set `--bind-any-host=true`, which will allow and subdomain/domain -combination to be used. To only allow subdomains of a certain subset of domains, you can set `--bind-hosts` -to a comma separated list of domains that are allowed to be bound. - -To add certficates for sish to use, configure the `--https-certificate-directory` flag to point to a dir -that is accessible by sish. In the directory, sish will look for a combination of files that look like -`name.crt` and `name.key`. `name` can be arbitrary in either case, it just needs to be unique to the cert -and key pair to allow them to be loaded into sish. - -## Load balancing - -sish can load balance any type of forwarded connection, but this needs to be enabled when starting sish -using the `--http-load-balancer`, -`--tcp-load-balancer`, and `--alias-load-balancer` flags. Let's say you have a few edge nodes -(raspberry pis) that are running a service internally but you want to be able to balance load across these -devices from the outside world. By enabling load balancing in sish, this happens automatically when a -device with the same forwarded TCP port, alias, or HTTP subdomain connects to sish. Connections will then be -evenly distributed to whatever nodes are connected to sish that match the forwarded connection. - -## Whitelisting IPs - -Whitelisting IP ranges or countries is also possible. Whole CIDR ranges can be -specified with the `--whitelisted-ips` option that accepts a comma-separated -string like "192.30.252.0/22,185.199.108.0/22". If you want to whitelist a single -IP, use the `/32` range. - -To whitelist countries, use `--whitelisted-countries` with a comma-separated -string of countries in ISO format (for example, "pt" for Portugal). You'll also -need to set `--geodb` to `true`. - -## DNS Setup - -To use sish, you need to add a wildcard DNS record that is used for multiplexed subdomains. -Adding an `A` record with `*` as the subdomain to the IP address of your server is the simplest way to achieve this configuration. - -## Notes - -1. This is by no means production ready in any way. This was hacked together and solves a fairly specific -use case. - - You can help it get production ready by submitting PRs/reviewing code/writing tests/etc -2. This is a fairly simple implementation, I've intentionally cut corners in some places to make it easier -to write. -3. If you have any questions or comments, feel free to reach out via email -[me@antoniomika.me](mailto:me@antoniomika.me) -or on [freenode IRC #sish](https://kiwiirc.com/client/chat.freenode.net:6697/#sish) - -## Upgrading to v2.0 - -v2 introduces only a few breaking changes, namely around authentication. v2 enables authentication by default. If you were -an authenticated instance before, be sure to set `--authentication` accordingly. v2 also brings support for multiple -SSH host private keys, which allows you to use different encryption schemes. This changed the `--private-key-location` to -`--private-keys-directory`. Keys generated or previously used in sish will work as normal, just be sure to update this -argument if it was changed from the default. - -## Upgrading to v1.0 - -There are numerous breaking changes in sish between pre-1.0 and post-1.0 versions. The largest changes are -found in the mapping of command flags and configuration params. Those have changed drastically, but it should be easy -to find the new counterpart. The other change is SSH keys that are supported for host key auth. sish -continues to support most modern keys, but by default if a host key is not found, it will create an OpenSSH -ED25519 key to use. Previous versions of sish would aes encrypt the pem block of this private key, but we -have since moved to using the native -[OpenSSH private key format](https://github.com/openssh/openssh-portable/blob/master/sshkey.c) to allow for -easy interop between OpenSSH tools. For this reason, you will either have to manually convert an AES -encrypted key or generate a new one. - -## CLI Flags - -```text -sish is a command line utility that implements an SSH server that can handle HTTP(S)/WS(S)/TCP multiplexing, forwarding and load balancing. -It can handle multiple vhosting and reverse tunneling endpoints for a large number of clients. - -Usage: - sish [flags] - -Flags: - --admin-console Enable the admin console accessible at http(s)://domain/_sish/console?x-authorization=admin-console-token - -j, --admin-console-token string The token to use for admin console access if it's enabled - --alias-load-balancer Enable the alias load balancer (multiple clients can bind the same alias) - --append-user-to-subdomain Append the SSH user to the subdomain. This is useful in multitenant environments - --append-user-to-subdomain-separator string The token to use for separating username and subdomain selection in a virtualhost (default "-") - --authentication Require authentication for the SSH service (default true) - --authentication-key-request-timeout duration Duration to wait for a response from the authentication key request (default 5s) - --authentication-key-request-url string A url to validate public keys for public key authentication. - sish will make an HTTP POST request to this URL with a JSON body containing an - OpenSSH 'authorized key' formatted public key, username, - and ip address. E.g.: - {"auth_key": string, "user": string, "remote_addr": string} - A response with status code 200 indicates approval of the auth key - -k, --authentication-keys-directory string Directory where public keys for public key authentication are stored. - sish will watch this directory and automatically load new keys and remove keys - from the authentication list (default "deploy/pubkeys/") - --authentication-keys-directory-watch-interval duration The interval to poll for filesystem changes for SSH keys (default 200ms) - -u, --authentication-password string Password to use for SSH server password authentication - --banned-aliases string A comma separated list of banned aliases that users are unable to bind - -o, --banned-countries string A comma separated list of banned countries. Applies to HTTP, TCP, and SSH connections - -x, --banned-ips string A comma separated list of banned ips that are unable to access the service. Applies to HTTP, TCP, and SSH connections - -b, --banned-subdomains string A comma separated list of banned subdomains that users are unable to bind (default "localhost") - --bind-any-host Allow binding any host when accepting an HTTP listener - --bind-hosts string A comma separated list of other hosts a user can bind. Requested hosts should be subdomains of a host in this list - --bind-http-auth Allow binding http auth on a forwarded host (default true) - --bind-http-path Allow binding specific paths on a forwarded host (default true) - --bind-random-aliases Force bound alias tunnels to use random aliases instead of user provided ones (default true) - --bind-random-aliases-length int The length of the random alias to generate if a alias is unavailable or if random aliases are enforced (default 3) - --bind-random-ports Force TCP tunnels to bind a random port, where the kernel will randomly assign it (default true) - --bind-random-subdomains Force bound HTTP tunnels to use random subdomains instead of user provided ones (default true) - --bind-random-subdomains-length int The length of the random subdomain to generate if a subdomain is unavailable or if random subdomains are enforced (default 3) - --bind-root-domain Allow binding the root domain when accepting an HTTP listener - --bind-wildcards Allow binding wildcards when accepting an HTTP listener - --cleanup-unauthed Cleanup unauthed SSH connections after a set timeout (default true) - --cleanup-unauthed-timeout duration Duration to wait before cleaning up an unauthed connection (default 5s) - --cleanup-unbound Cleanup unbound (unforwarded) SSH connections after a set timeout - --cleanup-unbound-timeout duration Duration to wait before cleaning up an unbound (unforwarded) connection (default 5s) - -c, --config string Config file (default "config.yml") - --debug Enable debugging information - --debug-interval duration Duration to wait between each debug loop output if debug is true (default 2s) - -d, --domain string The root domain for HTTP(S) multiplexing that will be appended to subdomains (default "ssi.sh") - --force-all-https Redirect all requests to the https server - --force-https Allow indiviual binds to request for https to be enforced - --force-requested-aliases Force the aliases used to be the one that is requested. Will fail the bind if it exists already - --force-requested-ports Force the ports used to be the one that is requested. Will fail the bind if it exists already - --force-requested-subdomains Force the subdomains used to be the one that is requested. Will fail the bind if it exists already - --force-tcp-address Force the address used for the TCP interface to be the one defined by --tcp-address - --geodb Use a geodb to verify country IP address association for IP filtering - -h, --help help for sish - -i, --http-address string The address to listen for HTTP connections (default "localhost:80") - --http-load-balancer Enable the HTTP load balancer (multiple clients can bind the same domain) - --http-port-override int The port to use for http command output. This does not affect ports used for connecting, it's for cosmetic use only - --http-request-port-override int The port to use for http requests. Will default to 80, then http-port-override. Otherwise will use this value - --https Listen for HTTPS connections. Requires a correct --https-certificate-directory - -t, --https-address string The address to listen for HTTPS connections (default "localhost:443") - -s, --https-certificate-directory string The directory containing HTTPS certificate files (name.crt and name.key). There can be many crt/key pairs (default "deploy/ssl/") - --https-certificate-directory-watch-interval duration The interval to poll for filesystem changes for HTTPS certificates (default 200ms) - --https-ondemand-certificate Enable retrieving certificates on demand via Let's Encrypt - --https-ondemand-certificate-accept-terms Accept the Let's Encrypt terms - --https-ondemand-certificate-email string The email to use with Let's Encrypt for cert notifications. Can be left blank - --https-port-override int The port to use for https command output. This does not affect ports used for connecting, it's for cosmetic use only - --https-request-port-override int The port to use for https requests. Will default to 443, then https-port-override. Otherwise will use this value - --idle-connection Enable connection idle timeouts for reads and writes (default true) - --idle-connection-timeout duration Duration to wait for activity before closing a connection for all reads and writes (default 5s) - --load-templates Load HTML templates. This is required for admin/service consoles (default true) - --load-templates-directory string The directory and glob parameter for templates that should be loaded (default "templates/*") - --localhost-as-all Enable forcing localhost to mean all interfaces for tcp listeners (default true) - --log-to-client Enable logging HTTP and TCP requests to the client - --log-to-file Enable writing log output to file, specified by log-to-file-path - --log-to-file-compress Enable compressing log output files - --log-to-file-max-age int The maxium number of days to store log output in a file (default 28) - --log-to-file-max-backups int The maxium number of rotated logs files to keep (default 3) - --log-to-file-max-size int The maximum size of outputed log files in megabytes (default 500) - --log-to-file-path string The file to write log output to (default "/tmp/sish.log") - --log-to-stdout Enable writing log output to stdout (default true) - --ping-client Send ping requests to the underlying SSH client. - This is useful to ensure that SSH connections are kept open or close cleanly (default true) - --ping-client-interval duration Duration representing an interval to ping a client to ensure it is up (default 5s) - --ping-client-timeout duration Duration to wait for activity before closing a connection after sending a ping to a client (default 5s) - -n, --port-bind-range string Ports or port ranges that sish will allow to be bound when a user attempts to use TCP forwarding (default "0,1024-65535") - -p, --private-key-passphrase string Passphrase to use to encrypt the server private key (default "S3Cr3tP4$$phrAsE") - -l, --private-keys-directory string The location of other SSH server private keys. sish will add these as valid auth methods for SSH. Note, these need to be unencrypted OR use the private-key-passphrase (default "deploy/keys") - --proxy-protocol Use the proxy-protocol while proxying connections in order to pass-on IP address and port information - --proxy-protocol-listener Use the proxy-protocol to resolve ip addresses from user connections - --proxy-protocol-policy string What to do with the proxy protocol header. Can be use, ignore, reject, or require (default "use") - --proxy-protocol-timeout duration The duration to wait for the proxy proto header (default 200ms) - --proxy-protocol-use-timeout Use a timeout for the proxy-protocol read - -q, --proxy-protocol-version string What version of the proxy protocol to use. Can either be 1, 2, or userdefined. - If userdefined, the user needs to add a command to SSH called proxyproto=version (ie proxyproto=1) (default "1") - --redirect-root Redirect the root domain to the location defined in --redirect-root-location (default true) - -r, --redirect-root-location string The location to redirect requests to the root domain - to instead of responding with a 404 (default "https://github.com/antoniomika/sish") - --rewrite-host-header Force rewrite the host header if the user provides host-header=host.com (default true) - --service-console Enable the service console for each service and send the info to connected clients - --service-console-max-content-length int The max content length before we stop reading the response body (default -1) - -m, --service-console-token string The token to use for service console access. Auto generated if empty for each connected tunnel - --sni-load-balancer Enable the SNI load balancer (multiple clients can bind the same SNI domain/port) - --sni-proxy Enable the use of SNI proxying - --sni-proxy-https Enable the use of SNI proxying on the HTTPS port - -a, --ssh-address string The address to listen for SSH connections (default "localhost:2222") - --strip-http-path Strip the http path from the forward (default true) - --tcp-address string The address to listen for TCP connections - --tcp-aliases Enable the use of TCP aliasing - --tcp-aliases-allowed-users any Enable setting allowed users to access tcp aliases. - Can provide tcp-aliases-allowed-users in the ssh command set to a comma separated list of ssh fingerprints that can access an alias. - Provide any for all. - --tcp-load-balancer Enable the TCP load balancer (multiple clients can bind the same port) - --time-format string The time format to use for both HTTP and general log messages (default "2006/01/02 - 15:04:05") - --verify-dns Verify DNS information for hosts and ensure it matches a connecting users sha256 key fingerprint (default true) - --verify-ssl Verify SSL certificates made on proxied HTTP connections (default true) - -v, --version version for sish - -y, --whitelisted-countries string A comma separated list of whitelisted countries. Applies to HTTP, TCP, and SSH connections - -w, --whitelisted-ips string A comma separated list of whitelisted ips. Applies to HTTP, TCP, and SSH connections +ssh -p 2222 -R 80:localhost:8080 testing.ssi.sh ``` +> The `testing.ssi.sh` DNS record points to `localhost` so anyone can use it for +> development diff --git a/deploy/gcloud.md b/deploy/gcloud.md index 82cc9bd..6358a5c 100644 --- a/deploy/gcloud.md +++ b/deploy/gcloud.md @@ -1,20 +1,23 @@ # sish installation -sish is an open source serveo/ngrok alternative that can be used to open a tunnel -to localhost that is accessible to the open internet using only SSH. sish implements -an SSH server that can handle multiplexing of HTTP(S), TCP, and TCP Aliasing +sish is an open source serveo/ngrok alternative that can be used to open a +tunnel to localhost that is accessible to the open internet using only SSH. sish +implements an SSH server that can handle multiplexing of HTTP(S), TCP, and TCP +Aliasing ([more about this can be found in the README](https://github.com/antoniomika/sish/blob/main/README.md)) This tutorial will teach you how to: -* Setup an instance in Google Cloud using the [free tier](https://cloud.google.com/free) -* Add and modify authentication for users -* Access sish from a remote computer +- Setup an instance in Google Cloud using the + [free tier](https://cloud.google.com/free) +- Add and modify authentication for users +- Access sish from a remote computer ## Project selection -You first need to select a project to host the resources created in this tutorial. -I'd suggest creating a new project at this time where your sish instance will live. +You first need to select a project to host the resources created in this +tutorial. I'd suggest creating a new project at this time where your sish +instance will live. ## Access Google Cloud Shell @@ -23,14 +26,18 @@ I'd suggest creating a new project at this time where your sish instance will li ## Create the instance running the container -Here is a command to create the instance running the sish container. This will start the container -on a hardened [Container Optimized OS](https://cloud.google.com/container-optimized-os/docs) and start -the service. This is just a starting command that runs sish on port `2222`, `80`, and `443`. If you -accept the [Let's Encrypt TOS](https://letsencrypt.org/repository/), you can enable automatic SSL cert loading. -This command does *NOT* include authentication and it is up to you to properly tune these parameters based on -the documentation [here](https://github.com/antoniomika/sish#cli-flags). Make sure to update `YOURDOMAIN` -to the actual domain you own. You will also need to setup the DNS records as described below. Also feel free -to change the `--zone` used for these commands. +Here is a command to create the instance running the sish container. This will +start the container on a hardened +[Container Optimized OS](https://cloud.google.com/container-optimized-os/docs) +and start the service. This is just a starting command that runs sish on port +`2222`, `80`, and `443`. If you accept the +[Let's Encrypt TOS](https://letsencrypt.org/repository/), you can enable +automatic SSL cert loading. This command does _NOT_ include authentication and +it is up to you to properly tune these parameters based on the documentation +[here](https://github.com/antoniomika/sish#cli-flags). Make sure to update +`YOURDOMAIN` to the actual domain you own. You will also need to setup the DNS +records as described below. Also feel free to change the `--zone` used for these +commands. ```bash gcloud compute instances create-with-container sish \ @@ -82,8 +89,8 @@ gcloud compute firewall-rules create allow-all-tcp-sish \ Get the external IP address of your machine and create two DNS records -* An `A` record for YOURDOMAIN pointing it to the output below -* An `A` record for *.YOURDOMAIN pointing it to the output below +- An `A` record for YOURDOMAIN pointing it to the output below +- An `A` record for *.YOURDOMAIN pointing it to the output below ```bash gcloud compute instances describe sish \ @@ -91,8 +98,9 @@ gcloud compute instances describe sish \ --format='get(networkInterfaces[0].accessConfigs[0].natIP)' ``` -To confirm that the DNS records were created appropriately, you can run: -`dig @1.1.1.1 abcxyz.YOURDOMAIN` and `dig @1.1.1.1 YOURDOMAIN`. Both should get an answer with `status: NOERROR`. +To confirm that the DNS records were created appropriately, you can run:\ +`dig @1.1.1.1 abcxyz.YOURDOMAIN` and `dig @1.1.1.1 YOURDOMAIN`. Both should get +an answer with `status: NOERROR`. ## Using sish diff --git a/docs/cmd/ssg.go b/docs/cmd/ssg.go new file mode 100644 index 0000000..02f4e5f --- /dev/null +++ b/docs/cmd/ssg.go @@ -0,0 +1,94 @@ +package main + +import ( + "github.com/picosh/pdocs" +) + +func main() { + pager := pdocs.Pager("./docs/posts") + sitemap := []*pdocs.Sitemap{ + {Text: "Home", Href: "/", Page: pager("home.md")}, + {Text: "Sitemap", Href: "/sitemap", Page: pager("sitemap.md")}, + { + Text: "Getting Started", + Href: "/getting-started", + Page: pager("getting-started.md"), + Tag: "Help", + Children: []*pdocs.Sitemap{ + {Text: "Managed"}, + {Text: "DNS"}, + {Text: "Docker Compose"}, + {Text: "Docker"}, + {Text: "Google Cloud Platform"}, + {Text: "Authentication"}, + }, + }, + { + Text: "How it Works", + Href: "/how-it-works", + Page: pager("how-it-works.md"), + Tag: "Help", + Children: []*pdocs.Sitemap{ + {Text: "Port Forward"}, + {Text: "Traditional VPN"}, + {Text: "sish Public"}, + {Text: "sish Private"}, + {Text: "Additional Details"}, + }, + }, + { + Text: "Forwarding Types", + Href: "/forwarding-types", + Page: pager("forwarding-types.md"), + Tag: "Help", + Children: []*pdocs.Sitemap{ + {Text: "HTTP"}, + {Text: "TCP"}, + {Text: "TCP Alias"}, + {Text: "SNI"}, + }, + }, + { + Text: "Cheatsheet", + Href: "/cheatsheet", + Page: pager("cheatsheet.md"), + Tag: "Help", + Children: []*pdocs.Sitemap{ + {Text: "Remote forward SSH tunnels"}, + {Text: "Local forward SSH tunnels"}, + {Text: "HTTPS public access"}, + {Text: "HTTPS private access"}, + {Text: "Websocket"}, + {Text: "TCP public access"}, + {Text: "TCP private access"}, + }, + }, + {Text: "CLI", Href: "/cli", Page: pager("cli.md"), Tag: "CLI"}, + { + Text: "Advanced", + Href: "/advanced", + Page: pager("advanced.md"), + Children: []*pdocs.Sitemap{ + {Text: "Choose your own subdomain"}, + {Text: "Websocket Support"}, + {Text: "Allowlist IPs"}, + {Text: "Custom Domains"}, + {Text: "Load Balancing"}, + }, + Tag: "Help", + }, + {Text: "FAQ", Href: "/faq", Page: pager("faq.md"), Tag: "Help"}, + } + + config := &pdocs.DocConfig{ + Sitemap: sitemap, + Out: "./docs/public", + Tmpl: "./docs/tmpl", + PageTmpl: "post.page.tmpl", + } + + err := config.GenSite() + if err != nil { + panic(err) + } +} diff --git a/docs/posts/advanced.md b/docs/posts/advanced.md new file mode 100644 index 0000000..5428e2d --- /dev/null +++ b/docs/posts/advanced.md @@ -0,0 +1,81 @@ +--- +title: Advanced +description: How to customize sish +keywords: [sish, advanced, custom, domains, load, balancing, allowlist, ip] +--- + +# Choose your own subdomain + +You can choose your own subdomain instead of relying on a randomly assigned one +by setting the `--bind-random-subdomains` option to `false` and then selecting a +subdomain by prepending it to the remote port specifier: + +`ssh -p 2222 -R foo:80:localhost:8080 tuns.sh` + +If the selected subdomain is not taken, it will be assigned to your connection. + +# Websocket Support + +The service supports multiplexing connections over HTTP/HTTPS with WebSocket +support. Just assign a remote port as port `80` to proxy HTTP traffic and `443` +to proxy HTTPS traffic. If you use any other remote port, the server will listen +to the port for TCP connections, but only if that port is available. + +# Allowlist IPs + +Whitelisting IP ranges or countries is also possible. Whole CIDR ranges can be +specified with the `--whitelisted-ips` option that accepts a comma-separated +string like "192.30.252.0/22,185.199.108.0/22". If you want to whitelist a +single IP, use the `/32` range. + +To whitelist countries, use `--whitelisted-countries` with a comma-separated +string of countries in ISO format (for example, "pt" for Portugal). You'll also +need to set `--geodb` to `true`. + +# Custom domains + +sish supports allowing users to bring custom domains to the service, but SSH key +auth is required to be enabled. To use this feature, you must setup TXT and +CNAME/A records for the domain/subdomain you would like to use for your +forwarded connection. The CNAME/A record must point to the domain or IP that is +hosting sish. The TXT record must be be a `key=val` string that looks like: + +```text +sish=SSHKEYFINGERPRINT +``` + +Where `SSHKEYFINGERPRINT` is the fingerprint of the key used for logging into +the server. You can set multiple TXT records and sish will check all of them to +ensure at least one is a match. You can retrieve your key fingerprint by +running: + +```bash +ssh-keygen -lf ~/.ssh/id_rsa | awk '{print $2}' +``` + +If you trust the users connecting to sish and would like to allow any domain to +be used with sish (bypassing verification), there are a few added flags to aid +in this. This is especially useful when adding multiple wildcard certificates to +sish in order to not need to automatically provision Let's Encrypt certs. To +disable verfication, set `--bind-any-host=true`, which will allow and +subdomain/domain combination to be used. To only allow subdomains of a certain +subset of domains, you can set `--bind-hosts` to a comma separated list of +domains that are allowed to be bound. + +To add certficates for sish to use, configure the +`--https-certificate-directory` flag to point to a dir that is accessible by +sish. In the directory, sish will look for a combination of files that look like +`name.crt` and `name.key`. `name` can be arbitrary in either case, it just needs +to be unique to the cert and key pair to allow them to be loaded into sish. + +# Load balancing + +sish can load balance any type of forwarded connection, but this needs to be +enabled when starting sish using the `--http-load-balancer`, +`--tcp-load-balancer`, and `--alias-load-balancer` flags. Let's say you have a +few edge nodes (raspberry pis) that are running a service internally but you +want to be able to balance load across these devices from the outside world. By +enabling load balancing in sish, this happens automatically when a device with +the same forwarded TCP port, alias, or HTTP subdomain connects to sish. +Connections will then be evenly distributed to whatever nodes are connected to +sish that match the forwarded connection. diff --git a/docs/posts/cheatsheet.md b/docs/posts/cheatsheet.md new file mode 100644 index 0000000..1091997 --- /dev/null +++ b/docs/posts/cheatsheet.md @@ -0,0 +1,121 @@ +--- +title: Cheatsheet +description: sish usage reference +keywords: [sish, reference, cheatsheet] +--- + +[More info about forwarding types](/forwarding-types) + +# Remote forward SSH tunnels + +Full example: + +```bash +ssh -R subdomain:80:localhost:3000 tuns.sh +# |__| +# remote forward + +ssh -R subdomain:80:localhost:3000 tuns.sh +# |_________| +# subdomain.tuns.sh + +ssh -R subdomain:80:localhost:3000 tuns.sh +# |______________| +# local web server +``` + +Dropping the subdomain: + +```bash +ssh -R 80:localhost:3000 tuns.sh +# |__| +# autogenerated.tuns.sh +# access local server over http (443 for https) + +ssh -R 80:localhost:3000 tuns.sh +# |______________| +# local web server over http +``` + +# Local forward SSH tunnels + +Given remote forward to `subdomain.tuns.sh:80` + +```bash +ssh -L 3000:subdomain:80 tuns.sh +# |__| +# local forward + +ssh -L 3000:subdomain:80 tuns.sh +# |____| +# access tunnel at localhost:3000 + +ssh -L 3000:subdomain:80 tuns.sh +# |____________| +# subdomain.tuns.sh:80 +``` + +# HTTPS public access + +[More info](/forwarding-types#http) + +- Eric has a web server running on `localhost:3000` +- Eric wants to share with anyone +- Tony wants to access it + +Eric sets up remote forward: + +```bash +ssh -R 80:localhost:3000 tuns.sh +``` + +# HTTPS private access + +- Eric has a web server running on `localhost:3000` +- Eric only wants to share with Tony +- Tony wants to access it + +Tony provides Eric with pubkey fingerprint: + +```bash +ssh-keygen -lf ~/.ssh/id_ed25519 +256 SHA256:4vNGm4xvuVxYbaIE5JX1KgTgncaF3x3w2lk+JMLOfd8 your_email@example.com (ED25519) +``` + +Eric sets up remote forward using Tony's fingerprint: + +```bash +ssh -R private:3000:localhost:3000 tuns.sh tcp-aliases-allowed-users=SHA256:4vNGm4xvuVxYbaIE5JX1KgTgncaF3x3w2lk+JMLOfd8 +``` + +Tony sets up local forward: + +```bash +ssh -L 3000:private:3000 tuns.sh +``` + +Tony can access site at `http://localhost:3000` + +# Websocket + +Same method as [HTTPS public access](/cheatsheet#https-public-access). + +# TCP public access + +Expose SSH to the world + +```bash +ssh -R 2222:localhost:22 tuns.sh +``` + +I can use the forwarded connection to then access my laptop from anywhere: + +```bash +ssh -p 2222 tuns.sh +``` + +# TCP private access + +For example if you want to use `netcat` to send files between computers. + +[Setup a TCP alias](/forwarding-types#tcp-alias) diff --git a/docs/posts/cli.md b/docs/posts/cli.md new file mode 100644 index 0000000..e01ba82 --- /dev/null +++ b/docs/posts/cli.md @@ -0,0 +1,125 @@ +--- +title: CLI +description: How use sish's CLI +keywords: [sish, cli] +--- + +```text +sish is a command line utility that implements an SSH server that can handle HTTP(S)/WS(S)/TCP multiplexing, forwarding and load balancing. +It can handle multiple vhosting and reverse tunneling endpoints for a large number of clients. + +Usage: + sish [flags] + +Flags: + --admin-console Enable the admin console accessible at http(s)://domain/_sish/console?x-authorization=admin-console-token + -j, --admin-console-token string The token to use for admin console access if it's enabled + --alias-load-balancer Enable the alias load balancer (multiple clients can bind the same alias) + --append-user-to-subdomain Append the SSH user to the subdomain. This is useful in multitenant environments + --append-user-to-subdomain-separator string The token to use for separating username and subdomain selection in a virtualhost (default "-") + --authentication Require authentication for the SSH service (default true) + --authentication-key-request-timeout duration Duration to wait for a response from the authentication key request (default 5s) + --authentication-key-request-url string A url to validate public keys for public key authentication. + sish will make an HTTP POST request to this URL with a JSON body containing an + OpenSSH 'authorized key' formatted public key, username, + and ip address. E.g.: + {"auth_key": string, "user": string, "remote_addr": string} + A response with status code 200 indicates approval of the auth key + -k, --authentication-keys-directory string Directory where public keys for public key authentication are stored. + sish will watch this directory and automatically load new keys and remove keys + from the authentication list (default "deploy/pubkeys/") + --authentication-keys-directory-watch-interval duration The interval to poll for filesystem changes for SSH keys (default 200ms) + -u, --authentication-password string Password to use for SSH server password authentication + --banned-aliases string A comma separated list of banned aliases that users are unable to bind + -o, --banned-countries string A comma separated list of banned countries. Applies to HTTP, TCP, and SSH connections + -x, --banned-ips string A comma separated list of banned ips that are unable to access the service. Applies to HTTP, TCP, and SSH connections + -b, --banned-subdomains string A comma separated list of banned subdomains that users are unable to bind (default "localhost") + --bind-any-host Allow binding any host when accepting an HTTP listener + --bind-hosts string A comma separated list of other hosts a user can bind. Requested hosts should be subdomains of a host in this list + --bind-http-auth Allow binding http auth on a forwarded host (default true) + --bind-http-path Allow binding specific paths on a forwarded host (default true) + --bind-random-aliases Force bound alias tunnels to use random aliases instead of user provided ones (default true) + --bind-random-aliases-length int The length of the random alias to generate if a alias is unavailable or if random aliases are enforced (default 3) + --bind-random-ports Force TCP tunnels to bind a random port, where the kernel will randomly assign it (default true) + --bind-random-subdomains Force bound HTTP tunnels to use random subdomains instead of user provided ones (default true) + --bind-random-subdomains-length int The length of the random subdomain to generate if a subdomain is unavailable or if random subdomains are enforced (default 3) + --bind-root-domain Allow binding the root domain when accepting an HTTP listener + --bind-wildcards Allow binding wildcards when accepting an HTTP listener + --cleanup-unauthed Cleanup unauthed SSH connections after a set timeout (default true) + --cleanup-unauthed-timeout duration Duration to wait before cleaning up an unauthed connection (default 5s) + --cleanup-unbound Cleanup unbound (unforwarded) SSH connections after a set timeout + --cleanup-unbound-timeout duration Duration to wait before cleaning up an unbound (unforwarded) connection (default 5s) + -c, --config string Config file (default "config.yml") + --debug Enable debugging information + --debug-interval duration Duration to wait between each debug loop output if debug is true (default 2s) + -d, --domain string The root domain for HTTP(S) multiplexing that will be appended to subdomains (default "ssi.sh") + --force-all-https Redirect all requests to the https server + --force-https Allow indiviual binds to request for https to be enforced + --force-requested-aliases Force the aliases used to be the one that is requested. Will fail the bind if it exists already + --force-requested-ports Force the ports used to be the one that is requested. Will fail the bind if it exists already + --force-requested-subdomains Force the subdomains used to be the one that is requested. Will fail the bind if it exists already + --force-tcp-address Force the address used for the TCP interface to be the one defined by --tcp-address + --geodb Use a geodb to verify country IP address association for IP filtering + -h, --help help for sish + -i, --http-address string The address to listen for HTTP connections (default "localhost:80") + --http-load-balancer Enable the HTTP load balancer (multiple clients can bind the same domain) + --http-port-override int The port to use for http command output. This does not affect ports used for connecting, it's for cosmetic use only + --http-request-port-override int The port to use for http requests. Will default to 80, then http-port-override. Otherwise will use this value + --https Listen for HTTPS connections. Requires a correct --https-certificate-directory + -t, --https-address string The address to listen for HTTPS connections (default "localhost:443") + -s, --https-certificate-directory string The directory containing HTTPS certificate files (name.crt and name.key). There can be many crt/key pairs (default "deploy/ssl/") + --https-certificate-directory-watch-interval duration The interval to poll for filesystem changes for HTTPS certificates (default 200ms) + --https-ondemand-certificate Enable retrieving certificates on demand via Let's Encrypt + --https-ondemand-certificate-accept-terms Accept the Let's Encrypt terms + --https-ondemand-certificate-email string The email to use with Let's Encrypt for cert notifications. Can be left blank + --https-port-override int The port to use for https command output. This does not affect ports used for connecting, it's for cosmetic use only + --https-request-port-override int The port to use for https requests. Will default to 443, then https-port-override. Otherwise will use this value + --idle-connection Enable connection idle timeouts for reads and writes (default true) + --idle-connection-timeout duration Duration to wait for activity before closing a connection for all reads and writes (default 5s) + --load-templates Load HTML templates. This is required for admin/service consoles (default true) + --load-templates-directory string The directory and glob parameter for templates that should be loaded (default "templates/*") + --localhost-as-all Enable forcing localhost to mean all interfaces for tcp listeners (default true) + --log-to-client Enable logging HTTP and TCP requests to the client + --log-to-file Enable writing log output to file, specified by log-to-file-path + --log-to-file-compress Enable compressing log output files + --log-to-file-max-age int The maxium number of days to store log output in a file (default 28) + --log-to-file-max-backups int The maxium number of rotated logs files to keep (default 3) + --log-to-file-max-size int The maximum size of outputed log files in megabytes (default 500) + --log-to-file-path string The file to write log output to (default "/tmp/sish.log") + --log-to-stdout Enable writing log output to stdout (default true) + --ping-client Send ping requests to the underlying SSH client. + This is useful to ensure that SSH connections are kept open or close cleanly (default true) + --ping-client-interval duration Duration representing an interval to ping a client to ensure it is up (default 5s) + --ping-client-timeout duration Duration to wait for activity before closing a connection after sending a ping to a client (default 5s) + -n, --port-bind-range string Ports or port ranges that sish will allow to be bound when a user attempts to use TCP forwarding (default "0,1024-65535") + -p, --private-key-passphrase string Passphrase to use to encrypt the server private key (default "S3Cr3tP4$$phrAsE") + -l, --private-keys-directory string The location of other SSH server private keys. sish will add these as valid auth methods for SSH. Note, these need to be unencrypted OR use the private-key-passphrase (default "deploy/keys") + --proxy-protocol Use the proxy-protocol while proxying connections in order to pass-on IP address and port information + --proxy-protocol-listener Use the proxy-protocol to resolve ip addresses from user connections + --proxy-protocol-policy string What to do with the proxy protocol header. Can be use, ignore, reject, or require (default "use") + --proxy-protocol-timeout duration The duration to wait for the proxy proto header (default 200ms) + --proxy-protocol-use-timeout Use a timeout for the proxy-protocol read + -q, --proxy-protocol-version string What version of the proxy protocol to use. Can either be 1, 2, or userdefined. + If userdefined, the user needs to add a command to SSH called proxyproto=version (ie proxyproto=1) (default "1") + --redirect-root Redirect the root domain to the location defined in --redirect-root-location (default true) + -r, --redirect-root-location string The location to redirect requests to the root domain + to instead of responding with a 404 (default "https://github.com/antoniomika/sish") + --rewrite-host-header Force rewrite the host header if the user provides host-header=host.com (default true) + --service-console Enable the service console for each service and send the info to connected clients + --service-console-max-content-length int The max content length before we stop reading the response body (default -1) + -m, --service-console-token string The token to use for service console access. Auto generated if empty for each connected tunnel + --sni-load-balancer Enable the SNI load balancer (multiple clients can bind the same SNI domain/port) + --sni-proxy Enable the use of SNI proxying + --sni-proxy-https Enable the use of SNI proxying on the HTTPS port + -a, --ssh-address string The address to listen for SSH connections (default "localhost:2222") + --strip-http-path Strip the http path from the forward (default true) + --tcp-address string The address to listen for TCP connections + --tcp-aliases Enable the use of TCP aliasing + --tcp-load-balancer Enable the TCP load balancer (multiple clients can bind the same port) + --time-format string The time format to use for both HTTP and general log messages (default "2006/01/02 - 15:04:05") + --verify-dns Verify DNS information for hosts and ensure it matches a connecting users sha256 key fingerprint (default true) + --verify-ssl Verify SSL certificates made on proxied HTTP connections (default true) + -v, --version version for sish + -y, --whitelisted-countries string A comma separated list of whitelisted countries. Applies to HTTP, TCP, and SSH connections + -w, --whitelisted-ips string A comma separated list of whitelisted ips. Applies to HTTP, TCP, and SSH connections +``` diff --git a/docs/posts/faq.md b/docs/posts/faq.md new file mode 100644 index 0000000..9c787be --- /dev/null +++ b/docs/posts/faq.md @@ -0,0 +1,26 @@ +--- +title: FAQ +description: Frequently asked questions for sish +keywords: [sish, faq] +--- + +# Where can I find latest releases? + +Builds are made automatically for each commit to the repo and are pushed to +Dockerhub. Builds are tagged using a commit sha, branch name, tag, `latest` if +released on `main`. + +- [Image Registry](https://hub.docker.com/r/antoniomika/sish/tags) +- [OS/arch binaries](https://github.com/antoniomika/sish/releases) + +# How does sish compare to ngrok? + +The goals are similar, but the underlying tech is different. With `sish` the +end-user doesn't need to install any cli tool in order to use it. We are simply +leveraging SSH to make the connections that the `ngrok` cli would use. + +# Who can I contact with questions? + +If you have any questions or comments, feel free to reach out via email +[me@antoniomika.me](mailto:me@antoniomika.me) or on libera IRC +[#sish](https://web.libera.chat/#sish) diff --git a/docs/posts/forwarding-types.md b/docs/posts/forwarding-types.md new file mode 100644 index 0000000..62999e1 --- /dev/null +++ b/docs/posts/forwarding-types.md @@ -0,0 +1,124 @@ +--- +title: Forwarding Types +description: The various forwarding types sish supports +keywords: [sish, forwarding, types, http, tcp, sni, alias] +--- + +# HTTP + +sish can forward any number of HTTP connections through SSH. It also provides +logging the connections to the connected client that has forwarded the +connection and a web interface to see full request and responses made to each +forwarded connection. Each webinterface can be unique to the forwarded +connection or use a unified access token. To make use of HTTP forwarding, ports +`[80, 443]` are used to tell sish that a HTTP connection is being forwarded and +that HTTP virtualhosting should be defined for the service. For example, let's +say I'm developing a HTTP webservice on my laptop at port `8080` that uses +websockets and I want to show one of my coworkers who is not near me. I can +forward the connection like so: + +```bash +ssh -R hereiam:80:localhost:8080 tuns.sh +``` + +And then share the link `https://hereiam.tuns.sh` with my coworker. They should +be able to access the service seamlessly over HTTPS, with full websocket support +working fine. Let's say `hereiam.tuns.sh` isn't available, then sish will +generate a random subdomain and give that to me. + +# TCP + +Any TCP based service can be used with sish for TCP and alias forwarding. TCP +forwarding will establish a remote port on the server that you deploy sish to +and will forward all connections to that port through the SSH connection and to +your local device. For example, if I was to run a SSH server on my laptop with +port `22` and want to be able to access it from anywhere at `tuns.sh:2222`, I +can use an SSH command on my laptop like so to forward the connection: + +```bash +ssh -R 2222:localhost:22 tuns.sh +``` + +I can use the forwarded connection to then access my laptop from anywhere: + +```bash +ssh -p 2222 tuns.sh +``` + +# TCP Alias + +Let's say instead I don't want the service to be accessible by the rest of the +world, you can then use a TCP alias. A TCP alias is a type of forwarded TCP +connection that only exists inside of sish. You can gain access to the alias by +using SSH with the `-W` flag, which will forwarding the SSH process' +stdin/stdout to the fowarded TCP connection. In combination with authentication, +this will guarantee your remote service is safe from the rest of the world +because you need to login to sish before you can access it. Changing the example +above for this would mean running the following command on my laptop: + +```bash +ssh -R mylaptop:22:localhost:22 tuns.sh +``` + +sish won't publish port 22 or 2222 to the rest of the world anymore, instead +it'll retain a pointer saying that TCP connections made from within SSH after a +user has authenticated to `mylaptop:22` should be forwarded to the forwarded TCP +tunnel. Then I can use the forwarded connection access my laptop from anywhere +using: + +```bash +ssh -o ProxyCommand="ssh -W %h:%p tuns.sh" mylaptop +``` + +Shorthand for which is this with newer SSH versions: + +```bash +ssh -J tuns.sh mylaptop +``` + +You can also use TCP aliases with any port you would like. If for example you +wanted to use an alias with port `80` or `443` (default to a HTTP tunnel), +provide the command `tcp-alias=true` to the ssh command: + +```bash +ssh -R service:80:localhost:80 tuns.sh tcp-alias=true +``` + +Aliases can be accessed on a different computer using SSH local forwards also. +For the above, I could use: + +```bash +ssh -L 80:service:80 tuns.sh +``` + +to then access the forwarded server service at `localhost:80` on the client side +of the computer I am on. + +# SNI + +Sometimes, you may have multiple TCP services running on the same port. If these +services support [SNI](https://en.wikipedia.org/wiki/Server_Name_Indication), +you can have sish route TLS connections to different backends based on the SNI +name provided. For example, I have two webservices (servers) and I want to +offload TLS to each without sish offloading SSL. This can be achieved by +disabling sish's internal HTTPS service (you won't be able to use the service +console for this however). Then, I can start a ssh connection from each server +like so: + +From server A + +```bash +ssh -R servera.example.com:443:localhost:443 tuns.sh sni-proxy=true +``` + +From server B + +```bash +ssh -R serverb.example.com:443:localhost:443 tuns.sh sni-proxy=true +``` + +As long as server{a,b}.example.com points to where sish is hosted and a user can +bind those hosts, TLS connections to servera.example.com:443 will be forwarded +to server A and TLS connections to serverb.example.com:443 will be forwarded to +server B. It is then up to each server to complete the TLS handshake and the +subsequent request. diff --git a/docs/posts/getting-started.md b/docs/posts/getting-started.md new file mode 100644 index 0000000..2046f63 --- /dev/null +++ b/docs/posts/getting-started.md @@ -0,0 +1,155 @@ +--- +title: Getting Started +description: Learn how to use sish +keywords: [sish, guide, getting, started, how] +--- + +We have a managed service and **three** officially supported self-hosting +deployments for `sish`. + +Here are the guides related to self-hosting `sish`. + +# Managed + +The easiest way to get started with using sish is to use our managed service at +[tuns.sh](https://tuns.sh). This service manages `sish` for you so you don't +have to go through the process of setting `sish` up yourself. + +# DNS + +To use sish, you need to add a wildcard DNS record that is used for multiplexed +subdomains. Adding an `A` record with `*` as the subdomain to the IP address of +your server is the simplest way to achieve this configuration. + +For the purposes of our guides, we will use `tuns.sh` as our domain. + +# Docker Compose + +You can use Docker Compose to setup your sish instance. This includes taking +care of SSL via Let's Encrypt for you. This uses the +[adferrand/dnsrobocert](https://github.com/adferrand/dnsrobocert) container to +handle issuing wildcard certifications over DNS. For more information on how to +use this, head to that link above. + +We use +[sish/deploy](https://github.com/antoniomika/sish/tree/4ed42082289f6da8a9f873ed8110963290ea4ce9/deploy) +in our deployment of `tuns.sh` and are using them for this guide. + +Clone the `sish` repo: + +```bash +git clone git@github.com:antoniomika/sish.git +``` + +Then copy the `sish/deploy` folder: + +```bash +cp -R sish/deploy ~/sish +``` + +Edit `~/sish/docker-compose.yml` and `~/sish/le-config.yml` file with your +domain and DNS auth info. + +Then, create a symlink that points to your domain's Let's Encrypt certificates +like: + +```bash +ln -s /etc/letsencrypt/live//fullchain.pem deploy/ssl/.crt +ln -s /etc/letsencrypt/live//privkey.pem deploy/ssl/.key +``` + +> Careful: the symlinks need to point to `/etc/letsencrypt`, not a relative +> path. The symlinks will not resolve on the host filesystem, but they will +> resolve inside of the sish container because it mounts the letsencrypt files +> in /etc/letsencrypt, _not_ ./letsencrypt. + +Finally, you can deploy your service like so: + +```bash +docker-compose -f deploy/docker-compose.yml up -d +``` + +SSH to your host to communicate with sish + +```bash +ssh -p 2222 -R 80:localhost:8080 tuns.sh +``` + +# Docker + +[Find our latest releases.](/releases) + +Pull the Docker image + +```bash +docker pull antoniomika/sish:latest +``` + +Create folders to host your keys + +```bash +mkdir -p ~/sish/ssl ~/sish/keys ~/sish/pubkeys +``` + +Copy your public keys to `pubkeys` + +```bash +cp ~/.ssh/id_ed25519.pub ~/sish/pubkeys +``` + +Run the image + +```bash +docker run -itd --name sish \ + -v ~/sish/ssl:/ssl \ + -v ~/sish/keys:/keys \ + -v ~/sish/pubkeys:/pubkeys \ + --net=host antoniomika/sish:latest \ + --ssh-address=:2222 \ + --http-address=:80 \ + --https-address=:443 \ + --https=true \ + --https-certificate-directory=/ssl \ + --authentication-keys-directory=/pubkeys \ + --private-keys-directory=/keys \ + --bind-random-ports=false \ + --domain=tuns.sh +``` + +SSH to your host to communicate with sish + +```bash +ssh -p 2222 -R 80:localhost:8080 tuns.sh +``` + +# Google Cloud Platform + +There is a tutorial for creating an instance in Google Cloud Platform with sish +fully setup that can be found +[here](https://github.com/antoniomika/sish/blob/main/deploy/gcloud.md). It can +be accessed through [Google Cloud Shell](https://cloud.google.com/shell). + +[![Open in Cloud Shell](https://gstatic.com/cloudssh/images/open-btn.svg)](https://ssh.cloud.google.com/cloudshell/editor?shellonly=true&cloudshell_git_repo=https%3A%2F%2Fgithub.com%2Fantoniomika%2Fsish&cloudshell_git_branch=main&cloudshell_tutorial=deploy%2Fgcloud.md) + +# Authentication + +If you want to use this service privately, it supports both public key and +password authentication. To enable authentication, set `--authentication=true` +as one of your CLI options and be sure to configure `--authentication-password` +or `--authentication-keys-directory` to your liking. The directory provided by +`--authentication-keys-directory` is watched for changes and will reload the +authorized keys automatically. The authorized cert index is regenerated on +directory modification, so removed public keys will also automatically be +removed. Files in this directory can either be single key per file, or multiple +keys per file separated by newlines, similar to `authorized_keys`. Password auth +can be disabled by setting `--authentication-password=""` as a CLI option. + +One of my favorite ways of using this for authentication is like so: + +```bash +sish@sish0:~/sish/pubkeys# curl https://github.com/antoniomika.keys > antoniomika +``` + +This will load my public keys from GitHub, place them in the directory that sish +is watching, and then load the pubkey. As soon as this command is run, I can SSH +normally and it will authorize me. diff --git a/docs/posts/home.md b/docs/posts/home.md new file mode 100644 index 0000000..5cd4fc3 --- /dev/null +++ b/docs/posts/home.md @@ -0,0 +1,6 @@ +--- +title: sish +description: something something darkside +slug: index +template: home.page.tmpl +--- diff --git a/docs/posts/how-it-works.md b/docs/posts/how-it-works.md new file mode 100644 index 0000000..4999de7 --- /dev/null +++ b/docs/posts/how-it-works.md @@ -0,0 +1,78 @@ +--- +title: How it works +description: Technical details for sish +keywords: [sish, how, works] +--- + +SSH can normally forward local and remote ports. This service implements an SSH +server that only handles forwarding and nothing else. + +But let's first take a step back and illustrate some basic examples of how +things work without `sish`. Let's start with a simple port forward: + +# Port Forward + +Here Eric has a web server hosted on its `localhost:3000`. Eric has to forward +its localhost connection to Tony in order for him to access the web server. + +
+ hiw-port-forward +
+ +This is manual, arduous, and sometimes difficult to get to work properly because +of firewalls. So many people opt to setup a VPN that both Eric and Tony can +connect to. + +# Traditional VPN + +Now both Eric and Tony connect to the VPN service and then Tony can access +Eric's web server via Eric's VPN IP. + +
+ hiw-vpn +
+ +Great! But this requires both Eric and Tony to connect to the VPN service. What +if Eric wants to share the web server with multiple users that are **not** +connected to the VPN? Sometimes it isn't feasible or appropriate to have +everyone connect to your VPN. + +# sish Public + +Enter `sish`. Using just SSH and a `sish` service, Eric can create an SSH remote +port forward to connect to `sish` which will automatically create a public URL +that **anyone** can access. + +
+ hiw-sish-public +
+ +Very nice! Tony doesn't have to worry about firewall issues, setting up and +connecting to a VPN, and anyone else can also access the web server via URL. +This is the real power of leveraging `sish`. + +But what if we want the web server to be private so only Tony can access the web +server using `sish`? + +# sish Private + +In this example both Eric and Tony setup an SSH tunnel to `sish`: + +- Eric sets up a remote port forward tunnel +- Tony sets up a local port forward tunnel + +
+ hiw-sish-private +
+ +> NOTE: The remote tunnel command needs to include `tcp-aliases-allowed` with +> Tony's pubkey fingerprint + +```bash +ssh -R private:3000:localhost:3000 tuns.sh tcp-aliases-allowed-users=SHA256:4vNGm4xvuVxYbaIE5JX1KgTgncaF3x3w2lk+JMLOfd8 +``` + +This creates a private connection between Eric and Tony that allows Tony to +access Eric's local web server without anyone else having access to it! + +[Learn more](/cheatsheet#https-private-access) diff --git a/docs/posts/sitemap.md b/docs/posts/sitemap.md new file mode 100644 index 0000000..2a26f2c --- /dev/null +++ b/docs/posts/sitemap.md @@ -0,0 +1,6 @@ +--- +title: sitemap +description: sish doc sitemap +slug: sitemap +template: sitemap.page.tmpl +--- diff --git a/docs/public/.gitkeep b/docs/public/.gitkeep new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/docs/public/.gitkeep @@ -0,0 +1 @@ + diff --git a/docs/sish-diagrams.excalidraw b/docs/sish-diagrams.excalidraw new file mode 100644 index 0000000..7b65a52 --- /dev/null +++ b/docs/sish-diagrams.excalidraw @@ -0,0 +1,2509 @@ +{ + "type": "excalidraw", + "version": 2, + "source": "https://excalidraw.com", + "elements": [ + { + "type": "rectangle", + "version": 141, + "versionNonce": 1531914054, + "isDeleted": false, + "id": "m2e7OmKnDf26QMoCTrglU", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 279, + "y": 224, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 200, + "height": 128, + "seed": 1092983517, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "shWooKlNmJWjvzj5CEEt4" + }, + { + "id": "uqlLaGrvswKk44sT962fN", + "type": "arrow" + } + ], + "updated": 1706040903384, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 77, + "versionNonce": 571365402, + "isDeleted": false, + "id": "shWooKlNmJWjvzj5CEEt4", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 360.75, + "y": 275.5, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 36.5, + "height": 25, + "seed": 2030755741, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1706040903384, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "Eric", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "m2e7OmKnDf26QMoCTrglU", + "originalText": "Eric", + "lineHeight": 1.25, + "baseline": 18 + }, + { + "type": "rectangle", + "version": 221, + "versionNonce": 246828678, + "isDeleted": false, + "id": "NpiOCUpneDstuARV_87Yv", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 845, + "y": 224, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 200, + "height": 128, + "seed": 741693181, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "ScXH63ztqop3QHhvcfmjs" + } + ], + "updated": 1706040903384, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 162, + "versionNonce": 427836634, + "isDeleted": false, + "id": "ScXH63ztqop3QHhvcfmjs", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 922.0583324432373, + "y": 275.5, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 45.88333511352539, + "height": 25, + "seed": 684420957, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1706040903384, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "Tony", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "NpiOCUpneDstuARV_87Yv", + "originalText": "Tony", + "lineHeight": 1.25, + "baseline": 18 + }, + { + "type": "line", + "version": 176, + "versionNonce": 1899400646, + "isDeleted": false, + "id": "KucwJ3g8lALjVEbmP-FWM", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 504, + "y": 94, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 0, + "height": 436, + "seed": 1937898557, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1706040903384, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 436 + ] + ] + }, + { + "type": "line", + "version": 327, + "versionNonce": 1301715354, + "isDeleted": false, + "id": "US-fRQc--Px3EPsRAat4I", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 821.0428421211119, + "y": 93.53795454005709, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 0, + "height": 436, + "seed": 303909011, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1706040903384, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 436 + ] + ] + }, + { + "type": "text", + "version": 143, + "versionNonce": 1877796102, + "isDeleted": false, + "id": "kLvI9iqjURCUenKIHkYMR", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 625, + "y": 273, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 82.63333129882812, + "height": 25, + "seed": 242220696, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1706040903384, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "Internet", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Internet", + "lineHeight": 1.25, + "baseline": 18 + }, + { + "type": "text", + "version": 160, + "versionNonce": 2105824858, + "isDeleted": false, + "id": "vn6_3WpC_XL4JPESdi6R2", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 551, + "y": 12, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 235.56666564941406, + "height": 45, + "seed": 14665448, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1706040903384, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "Port Forward", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Port Forward", + "lineHeight": 1.25, + "baseline": 32 + }, + { + "type": "text", + "version": 156, + "versionNonce": 1280726086, + "isDeleted": false, + "id": "q4qincULKxSnf_35KiPdz", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 307, + "y": 370, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 147.86666870117188, + "height": 25, + "seed": 2039073176, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1706040903384, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "localhost:3000", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "localhost:3000", + "lineHeight": 1.25, + "baseline": 18 + }, + { + "type": "arrow", + "version": 167, + "versionNonce": 169638682, + "isDeleted": false, + "id": "sPImFlQg7nMup5LVFsvx2", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 863, + "y": 350, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 398, + "height": 58, + "seed": 1480813288, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1706040903384, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + -186, + 53 + ], + [ + -398, + -5 + ] + ] + }, + { + "type": "arrow", + "version": 183, + "versionNonce": 273668998, + "isDeleted": false, + "id": "uqlLaGrvswKk44sT962fN", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 468, + "y": 224, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 389, + "height": 55, + "seed": 327255272, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1706040903384, + "link": null, + "locked": false, + "startBinding": { + "elementId": "m2e7OmKnDf26QMoCTrglU", + "focus": -0.4633121308496138, + "gap": 1 + }, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 197, + -50 + ], + [ + 389, + 5 + ] + ] + }, + { + "type": "rectangle", + "version": 302, + "versionNonce": 1104283610, + "isDeleted": false, + "id": "Jb4hBafoNfhuyzx3C7X0f", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 268, + "y": 877.6247665819944, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 200, + "height": 128, + "seed": 2029527960, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "rxnAonrTb687XY7DKaNhr" + }, + { + "id": "JCdPOcFdRv7rFPjNv9phb", + "type": "arrow" + } + ], + "updated": 1706040903384, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 236, + "versionNonce": 35027654, + "isDeleted": false, + "id": "rxnAonrTb687XY7DKaNhr", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 349.75, + "y": 929.1247665819944, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 36.5, + "height": 25, + "seed": 39841944, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1706040903384, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "Eric", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "Jb4hBafoNfhuyzx3C7X0f", + "originalText": "Eric", + "lineHeight": 1.25, + "baseline": 18 + }, + { + "type": "rectangle", + "version": 380, + "versionNonce": 750255258, + "isDeleted": false, + "id": "upyJFVrZGTRkwpRO1NHC1", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 834, + "y": 877.6247665819944, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 200, + "height": 128, + "seed": 122035608, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "sHkgU4jRwa9yoC-L7y_EY" + } + ], + "updated": 1706040903384, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 321, + "versionNonce": 407319046, + "isDeleted": false, + "id": "sHkgU4jRwa9yoC-L7y_EY", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 911.0583324432373, + "y": 929.1247665819944, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 45.88333511352539, + "height": 25, + "seed": 1222552216, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1706040903384, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "Tony", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "upyJFVrZGTRkwpRO1NHC1", + "originalText": "Tony", + "lineHeight": 1.25, + "baseline": 18 + }, + { + "type": "line", + "version": 335, + "versionNonce": 1484872026, + "isDeleted": false, + "id": "-RWiCxCxQwvc3BeO0bRsT", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 493, + "y": 747.6247665819944, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 0, + "height": 436, + "seed": 1105041304, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1706040903384, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 436 + ] + ] + }, + { + "type": "line", + "version": 486, + "versionNonce": 1843331398, + "isDeleted": false, + "id": "ZlVQ9V_47VYRqT_RSBHN_", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 810.0428421211118, + "y": 747.1627211220516, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 0, + "height": 436, + "seed": 1987503256, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1706040903384, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 436 + ] + ] + }, + { + "type": "text", + "version": 302, + "versionNonce": 612441626, + "isDeleted": false, + "id": "MWLHYCb82aJSkLghGI2WT", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 614, + "y": 926.6247665819944, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 82.63333129882812, + "height": 25, + "seed": 1147048344, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1706040903384, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "Internet", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Internet", + "lineHeight": 1.25, + "baseline": 18 + }, + { + "type": "text", + "version": 315, + "versionNonce": 909830278, + "isDeleted": false, + "id": "lp7Z4yOszfLewPlQqXLUT", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 296, + "y": 1023.6247665819944, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 147.86666870117188, + "height": 25, + "seed": 1114180504, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1706040903384, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "localhost:3000", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "localhost:3000", + "lineHeight": 1.25, + "baseline": 18 + }, + { + "type": "rectangle", + "version": 155, + "versionNonce": 229264090, + "isDeleted": false, + "id": "i4rJWU_NkHUtihxaEEdO2", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 583, + "y": 652, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 149, + "height": 88, + "seed": 264339176, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "2PrQu288_j3Uk2tfWzgw5" + }, + { + "id": "fKAIBMuh-xZhWDud4Icjh", + "type": "arrow" + }, + { + "id": "JnuFJgy4RlZePkl-cuatQ", + "type": "arrow" + } + ], + "updated": 1706040903384, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 109, + "versionNonce": 823650246, + "isDeleted": false, + "id": "2PrQu288_j3Uk2tfWzgw5", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 639.283332824707, + "y": 683.5, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 36.43333435058594, + "height": 25, + "seed": 330632936, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1706040903384, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "VPN", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "i4rJWU_NkHUtihxaEEdO2", + "originalText": "VPN", + "lineHeight": 1.25, + "baseline": 18 + }, + { + "type": "arrow", + "version": 223, + "versionNonce": 2056249242, + "isDeleted": false, + "id": "JCdPOcFdRv7rFPjNv9phb", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 453, + "y": 877, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 134, + "height": 139, + "seed": 1799068136, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1706040903384, + "link": null, + "locked": false, + "startBinding": { + "elementId": "Jb4hBafoNfhuyzx3C7X0f", + "focus": 0.14038446689859166, + "gap": 1 + }, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 134, + -139 + ] + ] + }, + { + "type": "arrow", + "version": 134, + "versionNonce": 512950022, + "isDeleted": false, + "id": "h-IQQP7ZeTbAWoCMlFAxP", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 841, + "y": 884, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 112, + "height": 147, + "seed": 202715624, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1706040903384, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + -112, + -147 + ] + ] + }, + { + "type": "text", + "version": 250, + "versionNonce": 124050522, + "isDeleted": false, + "id": "frAfUkiqr6rORkQ0faEdH", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 5.546292725028556, + "x": 394, + "y": 813, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 100.83333587646484, + "height": 25, + "seed": 1403373032, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1706040903384, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "192.168.1.3", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "192.168.1.3", + "lineHeight": 1.25, + "baseline": 18 + }, + { + "type": "text", + "version": 372, + "versionNonce": 858336838, + "isDeleted": false, + "id": "p5DJQYDdSIPc0T-IuveZ_", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0.8960553845713379, + "x": 806.7365813931264, + "y": 807.1811456333146, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 100.01667022705078, + "height": 25, + "seed": 1175482600, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1706040903384, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "192.168.1.4", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "192.168.1.4", + "lineHeight": 1.25, + "baseline": 18 + }, + { + "type": "arrow", + "version": 254, + "versionNonce": 1375486234, + "isDeleted": false, + "id": "fKAIBMuh-xZhWDud4Icjh", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 598, + "y": 742, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 136, + "height": 141, + "seed": 507265000, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1706040903384, + "link": null, + "locked": false, + "startBinding": { + "elementId": "i4rJWU_NkHUtihxaEEdO2", + "focus": 0.12939321345179972, + "gap": 2 + }, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + -136, + 141 + ] + ] + }, + { + "type": "arrow", + "version": 243, + "versionNonce": 196572550, + "isDeleted": false, + "id": "JnuFJgy4RlZePkl-cuatQ", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 722, + "y": 741, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 114, + "height": 151, + "seed": 560920984, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1706040903384, + "link": null, + "locked": false, + "startBinding": { + "elementId": "i4rJWU_NkHUtihxaEEdO2", + "focus": -0.2833912268297931, + "gap": 1 + }, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 114, + 151 + ] + ] + }, + { + "type": "text", + "version": 332, + "versionNonce": 1170804186, + "isDeleted": false, + "id": "lv0UTocJqMobwO4tF9XqG", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 617.216667175293, + "y": 578.5, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 65.5999984741211, + "height": 45, + "seed": 43817704, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1706040903384, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "VPN", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "VPN", + "lineHeight": 1.25, + "baseline": 32 + }, + { + "type": "rectangle", + "version": 540, + "versionNonce": 561697990, + "isDeleted": false, + "id": "5DUgB__uuI9H67DUsx7RU", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 191.01779413652372, + "y": 1606.4032631448385, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 200, + "height": 128, + "seed": 647536280, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "83nNHtwYmMBGXjifaEqJQ" + }, + { + "id": "-wOk4ZictzlKfYTxihewP", + "type": "arrow" + } + ], + "updated": 1706040903384, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 470, + "versionNonce": 1742619290, + "isDeleted": false, + "id": "83nNHtwYmMBGXjifaEqJQ", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 272.7677941365237, + "y": 1657.9032631448385, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 36.5, + "height": 25, + "seed": 1010371480, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1706040903384, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "Eric", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "5DUgB__uuI9H67DUsx7RU", + "originalText": "Eric", + "lineHeight": 1.25, + "baseline": 18 + }, + { + "type": "rectangle", + "version": 608, + "versionNonce": 1041255430, + "isDeleted": false, + "id": "daPAi7CPTae5lf9IsgQDs", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 841.5844767984399, + "y": 1609.0877902730758, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 200, + "height": 128, + "seed": 2101598360, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "vsT5Ud72rYdfS82glQKi7" + } + ], + "updated": 1706040903384, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 547, + "versionNonce": 586080090, + "isDeleted": false, + "id": "vsT5Ud72rYdfS82glQKi7", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 918.6428092416772, + "y": 1660.5877902730758, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 45.88333511352539, + "height": 25, + "seed": 1298990488, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1706040903384, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "Tony", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "daPAi7CPTae5lf9IsgQDs", + "originalText": "Tony", + "lineHeight": 1.25, + "baseline": 18 + }, + { + "type": "line", + "version": 635, + "versionNonce": 1869929286, + "isDeleted": false, + "id": "MupmNEl7FcG2zpMVkhIzu", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 480.00000000000006, + "y": 1500.0199256645815, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 5.684341886080802e-14, + "height": 374.97835559084024, + "seed": 2045285016, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1706040903384, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + -5.684341886080802e-14, + 374.97835559084024 + ] + ] + }, + { + "type": "line", + "version": 600, + "versionNonce": 323871770, + "isDeleted": false, + "id": "OTHHwi5xnzG0bbPlBNRFV", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 797.0428421211118, + "y": 1439.5205774241476, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 0, + "height": 436, + "seed": 157974424, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1706040903384, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 436 + ] + ] + }, + { + "type": "text", + "version": 416, + "versionNonce": 2080735878, + "isDeleted": false, + "id": "ceW6fF4ej0HaltAHEgSay", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 601, + "y": 1618.9826228840905, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 82.63333129882812, + "height": 25, + "seed": 203869336, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1706040903384, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "Internet", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Internet", + "lineHeight": 1.25, + "baseline": 18 + }, + { + "type": "text", + "version": 549, + "versionNonce": 1391349978, + "isDeleted": false, + "id": "XjHMdKcC_gnwhrzOV33qx", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 219.01779413652372, + "y": 1752.4032631448385, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 147.86666870117188, + "height": 25, + "seed": 1808890264, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1706040903384, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "localhost:3000", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "localhost:3000", + "lineHeight": 1.25, + "baseline": 18 + }, + { + "type": "rectangle", + "version": 272, + "versionNonce": 1451180486, + "isDeleted": false, + "id": "rkv0Fw5cMej8JIsUWWlHN", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 570, + "y": 1344.357856302096, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 149, + "height": 88, + "seed": 138539928, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "VtDjHpMkIeKf6VUMioK1T" + }, + { + "id": "u4Dj-bCeA_YJLIMAUIOYe", + "type": "arrow" + } + ], + "updated": 1706040903384, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 227, + "versionNonce": 1164125594, + "isDeleted": false, + "id": "VtDjHpMkIeKf6VUMioK1T", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 626.5, + "y": 1375.857856302096, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 36, + "height": 25, + "seed": 670023832, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1706040903384, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "sish", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "rkv0Fw5cMej8JIsUWWlHN", + "originalText": "sish", + "lineHeight": 1.25, + "baseline": 18 + }, + { + "type": "arrow", + "version": 1015, + "versionNonce": 301930758, + "isDeleted": false, + "id": "-wOk4ZictzlKfYTxihewP", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 375.5698818507873, + "y": 1604.4888141245106, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 194.49275163453723, + "height": 178.06832433708996, + "seed": 173796760, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1706040903384, + "link": null, + "locked": false, + "startBinding": { + "elementId": "5DUgB__uuI9H67DUsx7RU", + "focus": 0.07391216951731348, + "gap": 1.914449020327993 + }, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 194.49275163453723, + -178.06832433708996 + ] + ] + }, + { + "type": "text", + "version": 889, + "versionNonce": 1675584090, + "isDeleted": false, + "id": "tqDbOe7rW8gEgwURv6zUL", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 5.546292725028556, + "x": 298.26255508758027, + "y": 1485.9307154488276, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 298.2833251953125, + "height": 20, + "seed": 901736344, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1706040903384, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "ssh -R eric:80:localhost:3000 tuns.sh", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "ssh -R eric:80:localhost:3000 tuns.sh", + "lineHeight": 1.25, + "baseline": 15 + }, + { + "type": "arrow", + "version": 735, + "versionNonce": 1442973766, + "isDeleted": false, + "id": "vLExBjcipxyfdXYAzteey", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 581.0626334853246, + "y": 1430.4204897874204, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 197.0291809774697, + "height": 182.3423484040925, + "seed": 1712087448, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1706040903384, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + -197.0291809774697, + 182.3423484040925 + ] + ] + }, + { + "type": "text", + "version": 513, + "versionNonce": 154535706, + "isDeleted": false, + "id": "aCwZtpo1tGWj9ceraemm2", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 560.386101270985, + "y": 1271.8318688777474, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 174.6666717529297, + "height": 45, + "seed": 249748376, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1706040903384, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "sish public", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "sish public", + "lineHeight": 1.25, + "baseline": 32 + }, + { + "type": "rectangle", + "version": 515, + "versionNonce": 1382354822, + "isDeleted": false, + "id": "B3C8biN6B0fyA0TGv3IYd", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 545.5, + "y": 1474, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 202.00000000000003, + "height": 88, + "seed": 1860782824, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "49m37PT7xqPv0wh4dWOaj" + }, + { + "id": "u4Dj-bCeA_YJLIMAUIOYe", + "type": "arrow" + } + ], + "updated": 1706040903384, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 552, + "versionNonce": 1037702106, + "isDeleted": false, + "id": "49m37PT7xqPv0wh4dWOaj", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 553.2083358764648, + "y": 1505.5, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 186.5833282470703, + "height": 25, + "seed": 1951378920, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1706040903384, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "https://eric.tuns.sh", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "B3C8biN6B0fyA0TGv3IYd", + "originalText": "https://eric.tuns.sh", + "lineHeight": 1.25, + "baseline": 18 + }, + { + "type": "arrow", + "version": 82, + "versionNonce": 862269126, + "isDeleted": false, + "id": "u4Dj-bCeA_YJLIMAUIOYe", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 646, + "y": 1472, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 0, + "height": 39.204711549874446, + "seed": 1583996056, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1706040903384, + "link": null, + "locked": false, + "startBinding": { + "elementId": "B3C8biN6B0fyA0TGv3IYd", + "focus": -0.00495049504950495, + "gap": 2 + }, + "endBinding": { + "elementId": "rkv0Fw5cMej8JIsUWWlHN", + "focus": -0.020134228187919462, + "gap": 1 + }, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 0, + -39.204711549874446 + ] + ] + }, + { + "type": "arrow", + "version": 186, + "versionNonce": 64915610, + "isDeleted": false, + "id": "RGCfSY3mBor7ePEoTk_om", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 844.6880304373697, + "y": 1619.1753867166083, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 102.36471714419258, + "height": 59.10029699871939, + "seed": 1093780456, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1706040903384, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + -102.36471714419258, + -59.10029699871939 + ] + ] + }, + { + "type": "rectangle", + "version": 617, + "versionNonce": 362767878, + "isDeleted": false, + "id": "_WIhPq2GycKkOz9pisQHG", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 205.93512266003427, + "y": 2323.635467122728, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 200, + "height": 128, + "seed": 2054044648, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "1XzaZqdRT9ImtH5H2YYke" + }, + { + "id": "oxyXCci2iQlkIXyRulnIT", + "type": "arrow" + } + ], + "updated": 1706040903384, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 547, + "versionNonce": 586573146, + "isDeleted": false, + "id": "1XzaZqdRT9ImtH5H2YYke", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 287.68512266003427, + "y": 2375.135467122728, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 36.5, + "height": 25, + "seed": 68058856, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1706040903384, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "Eric", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "_WIhPq2GycKkOz9pisQHG", + "originalText": "Eric", + "lineHeight": 1.25, + "baseline": 18 + }, + { + "type": "rectangle", + "version": 797, + "versionNonce": 2047915334, + "isDeleted": false, + "id": "UOs--hxhnyjHXKmxPa800", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 927.6047233444946, + "y": 2323.3459816753143, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 200, + "height": 128, + "seed": 380527080, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "Gtn6YzNCMdMfCJz2dVk_4" + } + ], + "updated": 1706040903384, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 726, + "versionNonce": 1953802778, + "isDeleted": false, + "id": "Gtn6YzNCMdMfCJz2dVk_4", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 1004.6630557877319, + "y": 2374.8459816753143, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 45.88333511352539, + "height": 25, + "seed": 827974888, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1706040903384, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "Tony", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "UOs--hxhnyjHXKmxPa800", + "originalText": "Tony", + "lineHeight": 1.25, + "baseline": 18 + }, + { + "type": "line", + "version": 712, + "versionNonce": 974527622, + "isDeleted": false, + "id": "Cj4QdQNmUhEIhyPclQzqE", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 494.9173285235106, + "y": 2217.252129642471, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 5.684341886080802e-14, + "height": 374.97835559084024, + "seed": 295503848, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1706040903384, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + -5.684341886080802e-14, + 374.97835559084024 + ] + ] + }, + { + "type": "line", + "version": 722, + "versionNonce": 793532122, + "isDeleted": false, + "id": "TaFMEFlJHXQqaa3sDuaRK", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 811.9601706446224, + "y": 2218.0617751307095, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 0, + "height": 374.6910062713282, + "seed": 1669581544, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1706040903384, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": null, + "points": [ + [ + 0, + 0 + ], + [ + 0, + 374.6910062713282 + ] + ] + }, + { + "type": "text", + "version": 493, + "versionNonce": 2070715334, + "isDeleted": false, + "id": "F9j7eJxUe9tyd3ChYsmbR", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 615.9173285235106, + "y": 2336.2148268619803, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 82.63333129882812, + "height": 25, + "seed": 1905929704, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1706040903384, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "Internet", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "Internet", + "lineHeight": 1.25, + "baseline": 18 + }, + { + "type": "text", + "version": 626, + "versionNonce": 873491354, + "isDeleted": false, + "id": "xOB2MKC79q8aakX0ARDcq", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 233.93512266003427, + "y": 2469.635467122728, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 147.86666870117188, + "height": 25, + "seed": 1424765160, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1706040903384, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "localhost:3000", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "localhost:3000", + "lineHeight": 1.25, + "baseline": 18 + }, + { + "type": "rectangle", + "version": 350, + "versionNonce": 607204102, + "isDeleted": false, + "id": "2sVpIhgQmUULdktPT-keI", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 584.9173285235106, + "y": 2061.5900602799857, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 149, + "height": 88, + "seed": 621138920, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 3 + }, + "boundElements": [ + { + "type": "text", + "id": "JGmhR_EdmoUelsnMCqGb0" + } + ], + "updated": 1706040903384, + "link": null, + "locked": false + }, + { + "type": "text", + "version": 304, + "versionNonce": 1492379738, + "isDeleted": false, + "id": "JGmhR_EdmoUelsnMCqGb0", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 641.4173285235106, + "y": 2093.0900602799857, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 36, + "height": 25, + "seed": 670242536, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1706040903384, + "link": null, + "locked": false, + "fontSize": 20, + "fontFamily": 1, + "text": "sish", + "textAlign": "center", + "verticalAlign": "middle", + "containerId": "2sVpIhgQmUULdktPT-keI", + "originalText": "sish", + "lineHeight": 1.25, + "baseline": 18 + }, + { + "type": "arrow", + "version": 1208, + "versionNonce": 1323360838, + "isDeleted": false, + "id": "oxyXCci2iQlkIXyRulnIT", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 390.487210374298, + "y": 2321.7210181024, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 194.49275163453723, + "height": 178.06832433708996, + "seed": 37747176, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1706040903384, + "link": null, + "locked": false, + "startBinding": { + "elementId": "_WIhPq2GycKkOz9pisQHG", + "focus": 0.07391216951731483, + "gap": 1.914449020327993 + }, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 194.49275163453723, + -178.06832433708996 + ] + ] + }, + { + "type": "text", + "version": 1099, + "versionNonce": 902417690, + "isDeleted": false, + "id": "zaxOsNIpjhRRjYGz9HnSn", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 5.546292725028556, + "x": 287.730177745384, + "y": 2190.5710288539813, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 326.20001220703125, + "height": 20, + "seed": 1727560936, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1706040903384, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "ssh -R private:80:localhost:3000 tuns.sh", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "ssh -R private:80:localhost:3000 tuns.sh", + "lineHeight": 1.25, + "baseline": 15 + }, + { + "type": "arrow", + "version": 812, + "versionNonce": 1045997958, + "isDeleted": false, + "id": "9rbg4NLBpc3gIIlous3Ab", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 595.9799620088352, + "y": 2147.65269376531, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 197.0291809774697, + "height": 182.3423484040925, + "seed": 1202233320, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1706040903384, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + -197.0291809774697, + 182.3423484040925 + ] + ] + }, + { + "type": "text", + "version": 698, + "versionNonce": 1879382490, + "isDeleted": false, + "id": "mk_lt_LL_jCNnju8ADYB2", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0, + "x": 546.083052524957, + "y": 1990.0380854312884, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 206.76666259765625, + "height": 45, + "seed": 73163496, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [], + "updated": 1706040903384, + "link": null, + "locked": false, + "fontSize": 36, + "fontFamily": 1, + "text": "sish private", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "sish private", + "lineHeight": 1.25, + "baseline": 32 + }, + { + "type": "arrow", + "version": 213, + "versionNonce": 1372948678, + "isDeleted": false, + "id": "66aIT0LOev9HWvK53MeVk", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 722.9510820385176, + "y": 2148.906882259468, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 208.43869118937562, + "height": 188.95843967634983, + "seed": 720979688, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1706040903384, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + 208.43869118937562, + 188.95843967634983 + ] + ] + }, + { + "type": "arrow", + "version": 442, + "versionNonce": 112774810, + "isDeleted": false, + "id": "8y_xmHLO8FRlEwGY2zhSK", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "angle": 0, + "x": 937.2606398109486, + "y": 2324.1655684159623, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 205.5434445915696, + "height": 183.05078676170433, + "seed": 355303656, + "groupIds": [], + "frameId": null, + "roundness": { + "type": 2 + }, + "boundElements": [], + "updated": 1706040903384, + "link": null, + "locked": false, + "startBinding": null, + "endBinding": null, + "lastCommittedPoint": null, + "startArrowhead": null, + "endArrowhead": "arrow", + "points": [ + [ + 0, + 0 + ], + [ + -205.5434445915696, + -183.05078676170433 + ] + ] + }, + { + "type": "text", + "version": 1146, + "versionNonce": 2029289478, + "isDeleted": false, + "id": "BTZo9M4vx2WA6lWjopI-q", + "fillStyle": "solid", + "strokeWidth": 2, + "strokeStyle": "solid", + "roughness": 1, + "opacity": 100, + "angle": 0.7615596990965523, + "x": 723.9356114057408, + "y": 2198.7263791168, + "strokeColor": "#1e1e1e", + "backgroundColor": "transparent", + "width": 250.61666870117188, + "height": 20, + "seed": 42427800, + "groupIds": [], + "frameId": null, + "roundness": null, + "boundElements": [ + { + "id": "8y_xmHLO8FRlEwGY2zhSK", + "type": "arrow" + } + ], + "updated": 1706040903384, + "link": null, + "locked": false, + "fontSize": 16, + "fontFamily": 1, + "text": "ssh -L 3000:private:80 tuns.sh", + "textAlign": "left", + "verticalAlign": "top", + "containerId": null, + "originalText": "ssh -L 3000:private:80 tuns.sh", + "lineHeight": 1.25, + "baseline": 15 + } + ], + "appState": { + "gridSize": null, + "viewBackgroundColor": "#f5faff" + }, + "files": {} +} \ No newline at end of file diff --git a/docs/static/favicon-16x16.png b/docs/static/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..9775c56aa7d061bd62fadfa96e017fcb3b813b66 GIT binary patch literal 485 zcmV^B_9*-y#3NV|^h(sc< z14yyiY|w7E5s$|iK(1sm83aN25h!wSujq6-7z_q58jUy{4%qMa2!%qhTCGozC%|Mf zL9f^2S4pH)D%nM;RD#Fjfz4(UL7o7`ViBoS3g`0~tyT-sXq4>}B%jYClga!JxLhu% zR;x%RlU!7<*SRO@bebJC8V!WQVaVn32SnuHbULBgY$6Z{aE$SI3|bStUJtESi{*03 zu@nl07(jN{>osPx87M+57UR5>|GsCd)e6~c7H+qjT{#>MIGs+ggG!}>`FxIGFo^5* zis^I;zu*5D9YMO?E_6B_H?dqU!(=jj))0UM!{HD6D00000NkvXXu0mjfkSfsE literal 0 HcmV?d00001 diff --git a/docs/static/favicon-32x32.png b/docs/static/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..eb91b354a410043c0f93667fdf06dc62375a9c8a GIT binary patch literal 1136 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
+{{end}} diff --git a/docs/tmpl/home.page.tmpl b/docs/tmpl/home.page.tmpl new file mode 100644 index 0000000..a92e925 --- /dev/null +++ b/docs/tmpl/home.page.tmpl @@ -0,0 +1,61 @@ +{{template "base" .}} + +{{define "title"}}{{.Data.Title}}{{end}} + +{{define "meta"}} +{{end}} + +{{define "attrs"}}class="container"{{end}} + +{{define "body"}} +{{template "nav" .}} + +
+
+ + +
+
+

+ Tunnels to localhost using SSH +

+

Using SSH tunnels, we can forward requests to your localhost from https, wss, and tcp.

+
+ +
+

+ Self-hosted ngrok alternative +

+

With docker it is easier than ever to deploy sish to your own VM.

+
+ +
+

+ Fully managed service tuns.sh +

+

We also manage an instance of sish so users don't have to worry about managing it.

+
+
+ + +
+ +
+ + {{template "footer" .}} +
+{{end}} diff --git a/docs/tmpl/nav.partial.tmpl b/docs/tmpl/nav.partial.tmpl new file mode 100644 index 0000000..21937ac --- /dev/null +++ b/docs/tmpl/nav.partial.tmpl @@ -0,0 +1,18 @@ +{{define "nav"}} + +{{end}} diff --git a/docs/tmpl/post.page.tmpl b/docs/tmpl/post.page.tmpl new file mode 100644 index 0000000..730b11b --- /dev/null +++ b/docs/tmpl/post.page.tmpl @@ -0,0 +1,62 @@ +{{template "base" .}} + +{{define "title"}}{{.Data.Title}}{{end}} + +{{define "meta"}}{{end}} + +{{define "attrs"}}class="container-sm"{{end}} + +{{define "body"}} +{{template "nav" .}} + +
+

{{.Data.Title}}

+

{{.Data.Description}}

+ +
+ +
+ {{.Data.Html}} +
+ +
+ {{if .Prev}} +
+
+
<< PREV
+ {{.Prev.Text}} +
+
+ {{end}} + + {{if .Next}} +
+
+
+ NEXT >> +
+ {{.Next.Text}} +
+
+ {{end}} +
+
+ +
+{{range .Sitemap -}} +
+ {{- if (and $.Prev (eq $.Prev.GenHref .GenHref)) -}} + {{.Text}} + {{- else if (and $.Next (eq $.Next.GenHref .GenHref)) -}} + {{.Text}} + {{- else if (eq $.Href .GenHref) -}} + {{.Text}} + {{- else -}} + {{.Text}} + {{- end -}} +
+{{- end}} +
+ +{{template "footer" .}} +{{end}} diff --git a/docs/tmpl/sitemap.page.tmpl b/docs/tmpl/sitemap.page.tmpl new file mode 100644 index 0000000..c8f0748 --- /dev/null +++ b/docs/tmpl/sitemap.page.tmpl @@ -0,0 +1,22 @@ +{{template "base" .}} + +{{define "title"}}{{.Data.Title}}{{end}} + +{{define "meta"}}{{end}} + +{{define "attrs"}}class="container-sm"{{end}} + +{{define "body"}} +{{template "nav" .}} + +
+

{{.Data.Title}}

+

{{.Data.Description}}

+ +
+ + {{template "toc" .}} +
+ +{{template "footer" .}} +{{end}} diff --git a/docs/tmpl/toc.partial.tmpl b/docs/tmpl/toc.partial.tmpl new file mode 100644 index 0000000..9170376 --- /dev/null +++ b/docs/tmpl/toc.partial.tmpl @@ -0,0 +1,14 @@ +{{define "toc"}} +
+ {{range $key, $value := .SitemapByTag}} +
+

{{$key}}

+ +
+ {{end}} +
+{{end}} diff --git a/go.mod b/go.mod index 40d2db2..e62632f 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,8 @@ module github.com/antoniomika/sish -go 1.21 +go 1.21.5 + +toolchain go1.21.6 require ( github.com/ScaleFT/sshkeys v1.2.0 @@ -12,6 +14,7 @@ require ( github.com/jpillora/ipfilter v1.2.9 github.com/logrusorgru/aurora v2.0.3+incompatible github.com/mikesmitty/edkey v0.0.0-20170222072505-3356ea4e686a + github.com/picosh/pdocs v0.0.0-20240122053603-749f8ca95244 github.com/pires/go-proxyproto v0.7.0 github.com/radovskyb/watcher v1.0.7 github.com/sirupsen/logrus v1.9.3 @@ -24,10 +27,12 @@ require ( require ( github.com/HdrHistogram/hdrhistogram-go v1.1.2 // indirect + github.com/alecthomas/chroma v0.10.0 // indirect github.com/bytedance/sonic v1.10.2 // indirect github.com/chenzhuoyu/base64x v0.0.0-20230717121745-296ad89f973d // indirect github.com/chenzhuoyu/iasm v0.9.1 // indirect github.com/dchest/bcrypt_pbkdf v0.0.0-20150205184540-83f37f9c154a // indirect + github.com/dlclark/regexp2 v1.4.0 // indirect github.com/gabriel-vasile/mimetype v1.4.3 // indirect github.com/gin-contrib/sse v0.1.0 // indirect github.com/go-playground/locales v0.14.1 // indirect @@ -61,7 +66,11 @@ require ( github.com/tomasen/realip v0.0.0-20180522021738-f0c99a92ddce // indirect github.com/twitchyliquid64/golang-asm v0.15.1 // indirect github.com/ugorji/go/codec v1.2.12 // indirect + github.com/yuin/goldmark v1.6.0 // indirect + github.com/yuin/goldmark-highlighting v0.0.0-20220208100518-594be1970594 // indirect + github.com/yuin/goldmark-meta v1.1.0 // indirect github.com/zeebo/blake3 v0.2.3 // indirect + go.abhg.dev/goldmark/anchor v0.1.1 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.26.0 // indirect golang.org/x/arch v0.7.0 // indirect diff --git a/go.sum b/go.sum index 3737492..f4eaf59 100644 --- a/go.sum +++ b/go.sum @@ -6,6 +6,8 @@ github.com/HdrHistogram/hdrhistogram-go v1.1.2/go.mod h1:yDgFjdqOqDEKOvasDdhWNXY github.com/ScaleFT/sshkeys v1.2.0 h1:5BRp6rTVIhJzXT3VcUQrKgXR8zWA3sOsNeuyW15WUA8= github.com/ScaleFT/sshkeys v1.2.0/go.mod h1:gxOHeajFfvGQh/fxlC8oOKBe23xnnJTif00IFFbiT+o= github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= +github.com/alecthomas/chroma v0.10.0 h1:7XDcGkCQopCNKjZHfYrNLraA+M7e0fMiJ/Mfikbfjek= +github.com/alecthomas/chroma v0.10.0/go.mod h1:jtJATyUxlIORhUOFNA9NZDWGAQ8wpxQQqNSB4rjA/1s= github.com/antoniomika/oxy v1.1.1-0.20210804032133-5924ea01c950 h1:AZcTu5Wwh+MJqW+m4eA+Bv9H9VV4xedv+lElnCfM1k0= github.com/antoniomika/oxy v1.1.1-0.20210804032133-5924ea01c950/go.mod h1:pJou3S+yPP9m4CrgeBtKj/4gl31Kbte2j5JS1iP0WVc= github.com/antoniomika/syncmap v1.0.0 h1:iFSfbQFQOvHZILFZF+hqWosO0no+W9+uF4y2VEyMKWU= @@ -31,6 +33,8 @@ github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dchest/bcrypt_pbkdf v0.0.0-20150205184540-83f37f9c154a h1:saTgr5tMLFnmy/yg3qDTft4rE5DY2uJ/cCxCe3q0XTU= github.com/dchest/bcrypt_pbkdf v0.0.0-20150205184540-83f37f9c154a/go.mod h1:Bw9BbhOJVNR+t0jCqx2GC6zv0TGBsShs56Y3gfSCvl0= +github.com/dlclark/regexp2 v1.4.0 h1:F1rxgk7p4uKjwIQxBs9oAXe5CqrXlCduYEJvrF4u93E= +github.com/dlclark/regexp2 v1.4.0/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc= github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= @@ -119,6 +123,8 @@ github.com/pelletier/go-toml/v2 v2.1.1/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdU github.com/phuslu/iploc v1.0.20230201/go.mod h1:gsgExGWldwv1AEzZm+Ki9/vGfyjkL33pbSr9HGpt2Xg= github.com/phuslu/iploc v1.0.20231229 h1:zZVEFTAJu7tQIKssTPtUomSqjpBjI32t44q37Zu3S7E= github.com/phuslu/iploc v1.0.20231229/go.mod h1:gsgExGWldwv1AEzZm+Ki9/vGfyjkL33pbSr9HGpt2Xg= +github.com/picosh/pdocs v0.0.0-20240122053603-749f8ca95244 h1:XMmcHS9/Je4ngtVy4+Dih4+1ohPtukPCOWgX+R3NYBk= +github.com/picosh/pdocs v0.0.0-20240122053603-749f8ca95244/go.mod h1:rh8n5EosoD8svAbVPUEuXWfcWBsGj3GPeG/8D/0Az3c= github.com/pires/go-proxyproto v0.7.0 h1:IukmRewDQFWC7kfnb66CSomk2q/seBuilHBYFwyq0Hs= github.com/pires/go-proxyproto v0.7.0/go.mod h1:Vz/1JPY/OACxWGQNIRY2BeyDmpoaWmEP40O9LbuiFR4= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= @@ -173,12 +179,21 @@ github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2 github.com/ugorji/go/codec v1.2.12 h1:9LC83zGrHhuUA9l16C9AHXAqEV/2wBQ4nkvumAE65EE= github.com/ugorji/go/codec v1.2.12/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= github.com/vulcand/predicate v1.1.0/go.mod h1:mlccC5IRBoc2cIFmCB8ZM62I3VDb6p2GXESMHa3CnZg= +github.com/yuin/goldmark v1.4.5/go.mod h1:rmuwmfZ0+bvzB24eSC//bk1R1Zp3hM0OXYv/G2LIilg= +github.com/yuin/goldmark v1.6.0 h1:boZcn2GTjpsynOsC0iJHnBWa4Bi0qzfJjthwauItG68= +github.com/yuin/goldmark v1.6.0/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +github.com/yuin/goldmark-highlighting v0.0.0-20220208100518-594be1970594 h1:yHfZyN55+5dp1wG7wDKv8HQ044moxkyGq12KFFMFDxg= +github.com/yuin/goldmark-highlighting v0.0.0-20220208100518-594be1970594/go.mod h1:U9ihbh+1ZN7fR5Se3daSPoz1CGF9IYtSvWwVQtnzGHU= +github.com/yuin/goldmark-meta v1.1.0 h1:pWw+JLHGZe8Rk0EGsMVssiNb/AaPMHfSRszZeUeiOUc= +github.com/yuin/goldmark-meta v1.1.0/go.mod h1:U4spWENafuA7Zyg+Lj5RqK/MF+ovMYtBvXi1lBb2VP0= github.com/zeebo/assert v1.1.0 h1:hU1L1vLTHsnO8x8c9KAR5GmM5QscxHg5RNU5z5qbUWY= github.com/zeebo/assert v1.1.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0= github.com/zeebo/blake3 v0.2.3 h1:TFoLXsjeXqRNFxSbk35Dk4YtszE/MQQGK10BH4ptoTg= github.com/zeebo/blake3 v0.2.3/go.mod h1:mjJjZpnsyIVtVgTOSpJ9vmRE4wgDeyt2HU3qXvvKCaQ= github.com/zeebo/pcg v1.0.1 h1:lyqfGeWiv4ahac6ttHs+I5hwtH/+1mrhlCtVNQM2kHo= github.com/zeebo/pcg v1.0.1/go.mod h1:09F0S9iiKrwn9rlI5yjLkmrug154/YRW6KnnXVDM/l4= +go.abhg.dev/goldmark/anchor v0.1.1 h1:NUH3hAzhfeymRqZKOkSoFReZlEAmfXBZlbXEzpD2Qgc= +go.abhg.dev/goldmark/anchor v0.1.1/go.mod h1:zYKiaHXTdugwVJRZqInVdmNGQRM3ZRJ6AGBC7xP7its= go.uber.org/goleak v1.2.0 h1:xqgm/S+aQvhWFTtR0XK3Jvg7z8kGV8P4X14IzwN3Eqk= go.uber.org/goleak v1.2.0/go.mod h1:XJYK+MuIchqpmGmUSAzotztawfKvYLUIgg7guXrwVUo= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= From 0ee9ce4865f238ec1b13fe5784f2783113b4f0b6 Mon Sep 17 00:00:00 2001 From: Eric Bower Date: Fri, 26 Jan 2024 09:32:46 -0500 Subject: [PATCH 2/5] docs: copy --- docs/posts/how-it-works.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/posts/how-it-works.md b/docs/posts/how-it-works.md index 4999de7..014c7bc 100644 --- a/docs/posts/how-it-works.md +++ b/docs/posts/how-it-works.md @@ -65,7 +65,7 @@ In this example both Eric and Tony setup an SSH tunnel to `sish`: hiw-sish-private -> NOTE: The remote tunnel command needs to include `tcp-aliases-allowed` with +> NOTE: The remote tunnel command needs to include `tcp-aliases-allowed-users` with > Tony's pubkey fingerprint ```bash From daf20bc5d0068d606798904f18913e141304ca74 Mon Sep 17 00:00:00 2001 From: Eric Bower Date: Mon, 29 Jan 2024 09:41:16 -0500 Subject: [PATCH 3/5] chore(docs): update cli post --- docs/posts/cli.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/posts/cli.md b/docs/posts/cli.md index e01ba82..56ffee3 100644 --- a/docs/posts/cli.md +++ b/docs/posts/cli.md @@ -4,6 +4,7 @@ description: How use sish's CLI keywords: [sish, cli] --- +```text ```text sish is a command line utility that implements an SSH server that can handle HTTP(S)/WS(S)/TCP multiplexing, forwarding and load balancing. It can handle multiple vhosting and reverse tunneling endpoints for a large number of clients. @@ -115,6 +116,9 @@ Flags: --strip-http-path Strip the http path from the forward (default true) --tcp-address string The address to listen for TCP connections --tcp-aliases Enable the use of TCP aliasing + --tcp-aliases-allowed-users any Enable setting allowed users to access tcp aliases. + Can provide tcp-aliases-allowed-users in the ssh command set to a comma separated list of ssh fingerprints that can access an alias. + Provide any for all. --tcp-load-balancer Enable the TCP load balancer (multiple clients can bind the same port) --time-format string The time format to use for both HTTP and general log messages (default "2006/01/02 - 15:04:05") --verify-dns Verify DNS information for hosts and ensure it matches a connecting users sha256 key fingerprint (default true) @@ -123,3 +127,4 @@ Flags: -y, --whitelisted-countries string A comma separated list of whitelisted countries. Applies to HTTP, TCP, and SSH connections -w, --whitelisted-ips string A comma separated list of whitelisted ips. Applies to HTTP, TCP, and SSH connections ``` +``` From 52fcf5dfc25b2b1abcf4f22861529efacaf4ce1f Mon Sep 17 00:00:00 2001 From: Eric Bower Date: Mon, 29 Jan 2024 09:45:49 -0500 Subject: [PATCH 4/5] revert --- go.mod | 11 +---------- go.sum | 15 --------------- 2 files changed, 1 insertion(+), 25 deletions(-) diff --git a/go.mod b/go.mod index e62632f..40d2db2 100644 --- a/go.mod +++ b/go.mod @@ -1,8 +1,6 @@ module github.com/antoniomika/sish -go 1.21.5 - -toolchain go1.21.6 +go 1.21 require ( github.com/ScaleFT/sshkeys v1.2.0 @@ -14,7 +12,6 @@ require ( github.com/jpillora/ipfilter v1.2.9 github.com/logrusorgru/aurora v2.0.3+incompatible github.com/mikesmitty/edkey v0.0.0-20170222072505-3356ea4e686a - github.com/picosh/pdocs v0.0.0-20240122053603-749f8ca95244 github.com/pires/go-proxyproto v0.7.0 github.com/radovskyb/watcher v1.0.7 github.com/sirupsen/logrus v1.9.3 @@ -27,12 +24,10 @@ require ( require ( github.com/HdrHistogram/hdrhistogram-go v1.1.2 // indirect - github.com/alecthomas/chroma v0.10.0 // indirect github.com/bytedance/sonic v1.10.2 // indirect github.com/chenzhuoyu/base64x v0.0.0-20230717121745-296ad89f973d // indirect github.com/chenzhuoyu/iasm v0.9.1 // indirect github.com/dchest/bcrypt_pbkdf v0.0.0-20150205184540-83f37f9c154a // indirect - github.com/dlclark/regexp2 v1.4.0 // indirect github.com/gabriel-vasile/mimetype v1.4.3 // indirect github.com/gin-contrib/sse v0.1.0 // indirect github.com/go-playground/locales v0.14.1 // indirect @@ -66,11 +61,7 @@ require ( github.com/tomasen/realip v0.0.0-20180522021738-f0c99a92ddce // indirect github.com/twitchyliquid64/golang-asm v0.15.1 // indirect github.com/ugorji/go/codec v1.2.12 // indirect - github.com/yuin/goldmark v1.6.0 // indirect - github.com/yuin/goldmark-highlighting v0.0.0-20220208100518-594be1970594 // indirect - github.com/yuin/goldmark-meta v1.1.0 // indirect github.com/zeebo/blake3 v0.2.3 // indirect - go.abhg.dev/goldmark/anchor v0.1.1 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.26.0 // indirect golang.org/x/arch v0.7.0 // indirect diff --git a/go.sum b/go.sum index f4eaf59..3737492 100644 --- a/go.sum +++ b/go.sum @@ -6,8 +6,6 @@ github.com/HdrHistogram/hdrhistogram-go v1.1.2/go.mod h1:yDgFjdqOqDEKOvasDdhWNXY github.com/ScaleFT/sshkeys v1.2.0 h1:5BRp6rTVIhJzXT3VcUQrKgXR8zWA3sOsNeuyW15WUA8= github.com/ScaleFT/sshkeys v1.2.0/go.mod h1:gxOHeajFfvGQh/fxlC8oOKBe23xnnJTif00IFFbiT+o= github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= -github.com/alecthomas/chroma v0.10.0 h1:7XDcGkCQopCNKjZHfYrNLraA+M7e0fMiJ/Mfikbfjek= -github.com/alecthomas/chroma v0.10.0/go.mod h1:jtJATyUxlIORhUOFNA9NZDWGAQ8wpxQQqNSB4rjA/1s= github.com/antoniomika/oxy v1.1.1-0.20210804032133-5924ea01c950 h1:AZcTu5Wwh+MJqW+m4eA+Bv9H9VV4xedv+lElnCfM1k0= github.com/antoniomika/oxy v1.1.1-0.20210804032133-5924ea01c950/go.mod h1:pJou3S+yPP9m4CrgeBtKj/4gl31Kbte2j5JS1iP0WVc= github.com/antoniomika/syncmap v1.0.0 h1:iFSfbQFQOvHZILFZF+hqWosO0no+W9+uF4y2VEyMKWU= @@ -33,8 +31,6 @@ github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dchest/bcrypt_pbkdf v0.0.0-20150205184540-83f37f9c154a h1:saTgr5tMLFnmy/yg3qDTft4rE5DY2uJ/cCxCe3q0XTU= github.com/dchest/bcrypt_pbkdf v0.0.0-20150205184540-83f37f9c154a/go.mod h1:Bw9BbhOJVNR+t0jCqx2GC6zv0TGBsShs56Y3gfSCvl0= -github.com/dlclark/regexp2 v1.4.0 h1:F1rxgk7p4uKjwIQxBs9oAXe5CqrXlCduYEJvrF4u93E= -github.com/dlclark/regexp2 v1.4.0/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc= github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= @@ -123,8 +119,6 @@ github.com/pelletier/go-toml/v2 v2.1.1/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdU github.com/phuslu/iploc v1.0.20230201/go.mod h1:gsgExGWldwv1AEzZm+Ki9/vGfyjkL33pbSr9HGpt2Xg= github.com/phuslu/iploc v1.0.20231229 h1:zZVEFTAJu7tQIKssTPtUomSqjpBjI32t44q37Zu3S7E= github.com/phuslu/iploc v1.0.20231229/go.mod h1:gsgExGWldwv1AEzZm+Ki9/vGfyjkL33pbSr9HGpt2Xg= -github.com/picosh/pdocs v0.0.0-20240122053603-749f8ca95244 h1:XMmcHS9/Je4ngtVy4+Dih4+1ohPtukPCOWgX+R3NYBk= -github.com/picosh/pdocs v0.0.0-20240122053603-749f8ca95244/go.mod h1:rh8n5EosoD8svAbVPUEuXWfcWBsGj3GPeG/8D/0Az3c= github.com/pires/go-proxyproto v0.7.0 h1:IukmRewDQFWC7kfnb66CSomk2q/seBuilHBYFwyq0Hs= github.com/pires/go-proxyproto v0.7.0/go.mod h1:Vz/1JPY/OACxWGQNIRY2BeyDmpoaWmEP40O9LbuiFR4= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= @@ -179,21 +173,12 @@ github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2 github.com/ugorji/go/codec v1.2.12 h1:9LC83zGrHhuUA9l16C9AHXAqEV/2wBQ4nkvumAE65EE= github.com/ugorji/go/codec v1.2.12/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= github.com/vulcand/predicate v1.1.0/go.mod h1:mlccC5IRBoc2cIFmCB8ZM62I3VDb6p2GXESMHa3CnZg= -github.com/yuin/goldmark v1.4.5/go.mod h1:rmuwmfZ0+bvzB24eSC//bk1R1Zp3hM0OXYv/G2LIilg= -github.com/yuin/goldmark v1.6.0 h1:boZcn2GTjpsynOsC0iJHnBWa4Bi0qzfJjthwauItG68= -github.com/yuin/goldmark v1.6.0/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -github.com/yuin/goldmark-highlighting v0.0.0-20220208100518-594be1970594 h1:yHfZyN55+5dp1wG7wDKv8HQ044moxkyGq12KFFMFDxg= -github.com/yuin/goldmark-highlighting v0.0.0-20220208100518-594be1970594/go.mod h1:U9ihbh+1ZN7fR5Se3daSPoz1CGF9IYtSvWwVQtnzGHU= -github.com/yuin/goldmark-meta v1.1.0 h1:pWw+JLHGZe8Rk0EGsMVssiNb/AaPMHfSRszZeUeiOUc= -github.com/yuin/goldmark-meta v1.1.0/go.mod h1:U4spWENafuA7Zyg+Lj5RqK/MF+ovMYtBvXi1lBb2VP0= github.com/zeebo/assert v1.1.0 h1:hU1L1vLTHsnO8x8c9KAR5GmM5QscxHg5RNU5z5qbUWY= github.com/zeebo/assert v1.1.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0= github.com/zeebo/blake3 v0.2.3 h1:TFoLXsjeXqRNFxSbk35Dk4YtszE/MQQGK10BH4ptoTg= github.com/zeebo/blake3 v0.2.3/go.mod h1:mjJjZpnsyIVtVgTOSpJ9vmRE4wgDeyt2HU3qXvvKCaQ= github.com/zeebo/pcg v1.0.1 h1:lyqfGeWiv4ahac6ttHs+I5hwtH/+1mrhlCtVNQM2kHo= github.com/zeebo/pcg v1.0.1/go.mod h1:09F0S9iiKrwn9rlI5yjLkmrug154/YRW6KnnXVDM/l4= -go.abhg.dev/goldmark/anchor v0.1.1 h1:NUH3hAzhfeymRqZKOkSoFReZlEAmfXBZlbXEzpD2Qgc= -go.abhg.dev/goldmark/anchor v0.1.1/go.mod h1:zYKiaHXTdugwVJRZqInVdmNGQRM3ZRJ6AGBC7xP7its= go.uber.org/goleak v1.2.0 h1:xqgm/S+aQvhWFTtR0XK3Jvg7z8kGV8P4X14IzwN3Eqk= go.uber.org/goleak v1.2.0/go.mod h1:XJYK+MuIchqpmGmUSAzotztawfKvYLUIgg7guXrwVUo= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= From 534e3cf3c754d62e090515f2fd0edd7468f2b922 Mon Sep 17 00:00:00 2001 From: Eric Bower Date: Mon, 29 Jan 2024 09:57:26 -0500 Subject: [PATCH 5/5] chore: go.mod --- go.mod | 7 +++++++ go.sum | 15 +++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/go.mod b/go.mod index 40d2db2..ffcd97a 100644 --- a/go.mod +++ b/go.mod @@ -12,6 +12,7 @@ require ( github.com/jpillora/ipfilter v1.2.9 github.com/logrusorgru/aurora v2.0.3+incompatible github.com/mikesmitty/edkey v0.0.0-20170222072505-3356ea4e686a + github.com/picosh/pdocs v0.0.0-20240122053603-749f8ca95244 github.com/pires/go-proxyproto v0.7.0 github.com/radovskyb/watcher v1.0.7 github.com/sirupsen/logrus v1.9.3 @@ -24,10 +25,12 @@ require ( require ( github.com/HdrHistogram/hdrhistogram-go v1.1.2 // indirect + github.com/alecthomas/chroma v0.10.0 // indirect github.com/bytedance/sonic v1.10.2 // indirect github.com/chenzhuoyu/base64x v0.0.0-20230717121745-296ad89f973d // indirect github.com/chenzhuoyu/iasm v0.9.1 // indirect github.com/dchest/bcrypt_pbkdf v0.0.0-20150205184540-83f37f9c154a // indirect + github.com/dlclark/regexp2 v1.4.0 // indirect github.com/gabriel-vasile/mimetype v1.4.3 // indirect github.com/gin-contrib/sse v0.1.0 // indirect github.com/go-playground/locales v0.14.1 // indirect @@ -61,7 +64,11 @@ require ( github.com/tomasen/realip v0.0.0-20180522021738-f0c99a92ddce // indirect github.com/twitchyliquid64/golang-asm v0.15.1 // indirect github.com/ugorji/go/codec v1.2.12 // indirect + github.com/yuin/goldmark v1.6.0 // indirect + github.com/yuin/goldmark-highlighting v0.0.0-20220208100518-594be1970594 // indirect + github.com/yuin/goldmark-meta v1.1.0 // indirect github.com/zeebo/blake3 v0.2.3 // indirect + go.abhg.dev/goldmark/anchor v0.1.1 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.26.0 // indirect golang.org/x/arch v0.7.0 // indirect diff --git a/go.sum b/go.sum index 3737492..f4eaf59 100644 --- a/go.sum +++ b/go.sum @@ -6,6 +6,8 @@ github.com/HdrHistogram/hdrhistogram-go v1.1.2/go.mod h1:yDgFjdqOqDEKOvasDdhWNXY github.com/ScaleFT/sshkeys v1.2.0 h1:5BRp6rTVIhJzXT3VcUQrKgXR8zWA3sOsNeuyW15WUA8= github.com/ScaleFT/sshkeys v1.2.0/go.mod h1:gxOHeajFfvGQh/fxlC8oOKBe23xnnJTif00IFFbiT+o= github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= +github.com/alecthomas/chroma v0.10.0 h1:7XDcGkCQopCNKjZHfYrNLraA+M7e0fMiJ/Mfikbfjek= +github.com/alecthomas/chroma v0.10.0/go.mod h1:jtJATyUxlIORhUOFNA9NZDWGAQ8wpxQQqNSB4rjA/1s= github.com/antoniomika/oxy v1.1.1-0.20210804032133-5924ea01c950 h1:AZcTu5Wwh+MJqW+m4eA+Bv9H9VV4xedv+lElnCfM1k0= github.com/antoniomika/oxy v1.1.1-0.20210804032133-5924ea01c950/go.mod h1:pJou3S+yPP9m4CrgeBtKj/4gl31Kbte2j5JS1iP0WVc= github.com/antoniomika/syncmap v1.0.0 h1:iFSfbQFQOvHZILFZF+hqWosO0no+W9+uF4y2VEyMKWU= @@ -31,6 +33,8 @@ github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1 github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dchest/bcrypt_pbkdf v0.0.0-20150205184540-83f37f9c154a h1:saTgr5tMLFnmy/yg3qDTft4rE5DY2uJ/cCxCe3q0XTU= github.com/dchest/bcrypt_pbkdf v0.0.0-20150205184540-83f37f9c154a/go.mod h1:Bw9BbhOJVNR+t0jCqx2GC6zv0TGBsShs56Y3gfSCvl0= +github.com/dlclark/regexp2 v1.4.0 h1:F1rxgk7p4uKjwIQxBs9oAXe5CqrXlCduYEJvrF4u93E= +github.com/dlclark/regexp2 v1.4.0/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc= github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= @@ -119,6 +123,8 @@ github.com/pelletier/go-toml/v2 v2.1.1/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdU github.com/phuslu/iploc v1.0.20230201/go.mod h1:gsgExGWldwv1AEzZm+Ki9/vGfyjkL33pbSr9HGpt2Xg= github.com/phuslu/iploc v1.0.20231229 h1:zZVEFTAJu7tQIKssTPtUomSqjpBjI32t44q37Zu3S7E= github.com/phuslu/iploc v1.0.20231229/go.mod h1:gsgExGWldwv1AEzZm+Ki9/vGfyjkL33pbSr9HGpt2Xg= +github.com/picosh/pdocs v0.0.0-20240122053603-749f8ca95244 h1:XMmcHS9/Je4ngtVy4+Dih4+1ohPtukPCOWgX+R3NYBk= +github.com/picosh/pdocs v0.0.0-20240122053603-749f8ca95244/go.mod h1:rh8n5EosoD8svAbVPUEuXWfcWBsGj3GPeG/8D/0Az3c= github.com/pires/go-proxyproto v0.7.0 h1:IukmRewDQFWC7kfnb66CSomk2q/seBuilHBYFwyq0Hs= github.com/pires/go-proxyproto v0.7.0/go.mod h1:Vz/1JPY/OACxWGQNIRY2BeyDmpoaWmEP40O9LbuiFR4= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= @@ -173,12 +179,21 @@ github.com/twitchyliquid64/golang-asm v0.15.1/go.mod h1:a1lVb/DtPvCB8fslRZhAngC2 github.com/ugorji/go/codec v1.2.12 h1:9LC83zGrHhuUA9l16C9AHXAqEV/2wBQ4nkvumAE65EE= github.com/ugorji/go/codec v1.2.12/go.mod h1:UNopzCgEMSXjBc6AOMqYvWC1ktqTAfzJZUZgYf6w6lg= github.com/vulcand/predicate v1.1.0/go.mod h1:mlccC5IRBoc2cIFmCB8ZM62I3VDb6p2GXESMHa3CnZg= +github.com/yuin/goldmark v1.4.5/go.mod h1:rmuwmfZ0+bvzB24eSC//bk1R1Zp3hM0OXYv/G2LIilg= +github.com/yuin/goldmark v1.6.0 h1:boZcn2GTjpsynOsC0iJHnBWa4Bi0qzfJjthwauItG68= +github.com/yuin/goldmark v1.6.0/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +github.com/yuin/goldmark-highlighting v0.0.0-20220208100518-594be1970594 h1:yHfZyN55+5dp1wG7wDKv8HQ044moxkyGq12KFFMFDxg= +github.com/yuin/goldmark-highlighting v0.0.0-20220208100518-594be1970594/go.mod h1:U9ihbh+1ZN7fR5Se3daSPoz1CGF9IYtSvWwVQtnzGHU= +github.com/yuin/goldmark-meta v1.1.0 h1:pWw+JLHGZe8Rk0EGsMVssiNb/AaPMHfSRszZeUeiOUc= +github.com/yuin/goldmark-meta v1.1.0/go.mod h1:U4spWENafuA7Zyg+Lj5RqK/MF+ovMYtBvXi1lBb2VP0= github.com/zeebo/assert v1.1.0 h1:hU1L1vLTHsnO8x8c9KAR5GmM5QscxHg5RNU5z5qbUWY= github.com/zeebo/assert v1.1.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0= github.com/zeebo/blake3 v0.2.3 h1:TFoLXsjeXqRNFxSbk35Dk4YtszE/MQQGK10BH4ptoTg= github.com/zeebo/blake3 v0.2.3/go.mod h1:mjJjZpnsyIVtVgTOSpJ9vmRE4wgDeyt2HU3qXvvKCaQ= github.com/zeebo/pcg v1.0.1 h1:lyqfGeWiv4ahac6ttHs+I5hwtH/+1mrhlCtVNQM2kHo= github.com/zeebo/pcg v1.0.1/go.mod h1:09F0S9iiKrwn9rlI5yjLkmrug154/YRW6KnnXVDM/l4= +go.abhg.dev/goldmark/anchor v0.1.1 h1:NUH3hAzhfeymRqZKOkSoFReZlEAmfXBZlbXEzpD2Qgc= +go.abhg.dev/goldmark/anchor v0.1.1/go.mod h1:zYKiaHXTdugwVJRZqInVdmNGQRM3ZRJ6AGBC7xP7its= go.uber.org/goleak v1.2.0 h1:xqgm/S+aQvhWFTtR0XK3Jvg7z8kGV8P4X14IzwN3Eqk= go.uber.org/goleak v1.2.0/go.mod h1:XJYK+MuIchqpmGmUSAzotztawfKvYLUIgg7guXrwVUo= go.uber.org/multierr v1.11.0 h1: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 ML<6ly$L#L>2OSv|6aWAK literal 0 HcmV?d00001 diff --git a/docs/static/main.css b/docs/static/main.css new file mode 100644 index 0000000..1f12965 --- /dev/null +++ b/docs/static/main.css @@ -0,0 +1,90 @@ +.sitemap { + column-count: 2; +} + +.hiw { + background-color: #282a36; +} + +.link-alt-adj, +.link-alt-adj:visited, +.link-alt-adj:visited:hover, +.link-alt-adj:hover { + color: var(--link-color); + text-decoration: none; +} + +.link-alt-adj:visited:hover, +.link-alt-adj:hover { + text-decoration: underline; +} + +.link-alt-hover, +.link-alt-hover:visited, +.link-alt-hover:visited:hover, +.link-alt-hover:hover { + color: var(--hover); + text-decoration: none; +} + +.link-alt-hover:visited:hover, +.link-alt-hover:hover { + text-decoration: underline; +} + +.link-alt, +.link-alt:visited, +.link-alt:visited:hover, +.link-alt:hover { + color: var(--white); + text-decoration: none; +} + +.link-alt:visited:hover, +.link-alt:hover { + text-decoration: underline; +} + +.hero { + padding: 5rem 0; +} + +.features { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(225px, 1fr)); + gap: 1rem; +} + +.features h3 { + border: none; +} + +.mk-nav { + padding: 1rem; +} + +.text-hdr { + color: var(--hover); +} + +.text-underline-hdr { + border-bottom: 3px solid var(--hover); + padding-bottom: 3px; +} + +.current { + background-color: var(--blockquote-bg) !important; + border-right: 5px solid var(--blockquote); +} + +.current a { + color: var(--white); +} + +.current-page a { + color: var(--white); +} + +.pager { + min-width: 150px; +} diff --git a/docs/tmpl/base.layout.tmpl b/docs/tmpl/base.layout.tmpl new file mode 100644 index 0000000..41c1e2f --- /dev/null +++ b/docs/tmpl/base.layout.tmpl @@ -0,0 +1,21 @@ +{{define "base"}} + + + + {{template "title" .}} + + + + + + + + + {{template "meta" .}} + + + + {{template "body" .}} + + +{{end}} diff --git a/docs/tmpl/footer.partial.tmpl b/docs/tmpl/footer.partial.tmpl new file mode 100644 index 0000000..7361903 --- /dev/null +++ b/docs/tmpl/footer.partial.tmpl @@ -0,0 +1,5 @@ +{{define "footer"}} +