add api-prefix flag for nginx path redirect

This commit is contained in:
ZhaoYuh 2022-05-18 16:13:24 +08:00
parent a080c85cbc
commit c5ef9697fd
3 changed files with 8 additions and 0 deletions

View file

@ -1,3 +1,4 @@
# ![](https://raw.githubusercontent.com/yudai/gotty/master/resources/favicon.png) GoTTY - Share your terminal as a web application
[![GitHub release](http://img.shields.io/github/release/yudai/gotty.svg?style=flat-square)][release]
@ -51,6 +52,7 @@ By default, GoTTY starts a web server at port 8080. Open the URL on your web bro
--port value, -p value Port number to liten (default: "8080") [$GOTTY_PORT]
--permit-write, -w Permit clients to write to the TTY (BE CAREFUL) [$GOTTY_PERMIT_WRITE]
--credential value, -c value Credential for Basic Authentication (ex: user:pass, default disabled) [$GOTTY_CREDENTIAL]
--api-prefix Add a prefix string for service [$GOTTY_API_PREFIX]
--random-url, -r Add a random string to the URL [$GOTTY_RANDOM_URL]
--random-url-length value Random URL length (default: 8) [$GOTTY_RANDOM_URL_LENGTH]
--tls, -t Enable TLS/SSL [$GOTTY_TLS]

View file

@ -10,6 +10,7 @@ type Options struct {
PermitWrite bool `hcl:"permit_write" flagName:"permit-write" flagSName:"w" flagDescribe:"Permit clients to write to the TTY (BE CAREFUL)" default:"false"`
EnableBasicAuth bool `hcl:"enable_basic_auth" default:"false"`
Credential string `hcl:"credential" flagName:"credential" flagSName:"c" flagDescribe:"Credential for Basic Authentication (ex: user:pass, default disabled)" default:""`
ApiPrefix string `hcl:"api_prefix" flagName:"api-prefix" flagDescribe:"Add a string to the URL" default:""`
EnableRandomUrl bool `hcl:"enable_random_url" flagName:"random-url" flagSName:"r" flagDescribe:"Add a random string to the URL" default:"false"`
RandomUrlLength int `hcl:"random_url_length" flagName:"random-url-length" flagDescribe:"Random URL length" default:"8"`
EnableTLS bool `hcl:"enable_tls" flagName:"tls" flagSName:"t" flagDescribe:"Enable TLS/SSL" default:"false"`

View file

@ -4,12 +4,14 @@ import (
"context"
"crypto/tls"
"crypto/x509"
"fmt"
"html/template"
"io/ioutil"
"log"
"net"
"net/http"
"regexp"
"strings"
noesctmpl "text/template"
"time"
@ -96,6 +98,9 @@ func (server *Server) Run(ctx context.Context, options ...RunOption) error {
counter := newCounter(time.Duration(server.options.Timeout) * time.Second)
path := "/"
if strings.TrimSpace(server.options.ApiPrefix) != "" {
path = fmt.Sprintf(`/%s/`, strings.TrimSpace(server.options.ApiPrefix))
}
if server.options.EnableRandomUrl {
path = "/" + randomstring.Generate(server.options.RandomUrlLength) + "/"
}