Changeset 127 in code for trunk/morty.go
- Timestamp:
- Jul 14, 2020, 9:23:59 PM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/morty.go
r126 r127 28 28 "golang.org/x/text/encoding" 29 29 30 "github.com/asciimoo/morty/config" 30 31 "github.com/asciimoo/morty/contenttype" 31 32 ) … … 39 40 const VERSION = "v0.2.0" 40 41 41 var DEBUG = os.Getenv("DEBUG") != "false"42 43 42 var CLIENT *fasthttp.Client = &fasthttp.Client{ 44 43 MaxResponseBodySize: 10 * 1024 * 1024, // 10M … … 46 45 } 47 46 48 var CSS_URL_REGEXP *regexp.Regexp = regexp.MustCompile("url\\((['\"]?)[ \\t\\f]*([\u0009\u0021\u0023-\u0026\u0028\u002a-\u007E]+)(['\"]?)\\)?")47 var cfg *config.Config = config.DefaultConfig 49 48 50 49 var ALLOWED_CONTENTTYPE_FILTER contenttype.Filter = contenttype.NewFilterOr([]contenttype.Filter{ … … 178 177 } 179 178 179 var CSS_URL_REGEXP *regexp.Regexp = regexp.MustCompile("url\\((['\"]?)[ \\t\\f]*([\u0009\u0021\u0023-\u0026\u0028\u002a-\u007E]+)(['\"]?)\\)?") 180 180 181 type Proxy struct { 181 182 Key []byte … … 337 338 requestURIStr := string(requestURI) 338 339 339 if DEBUG{340 if cfg.Debug { 340 341 log.Println("getting", requestURIStr) 341 342 } … … 375 376 ctx.SetStatusCode(resp.StatusCode()) 376 377 ctx.Response.Header.Add("Location", url) 377 if DEBUG{378 if cfg.Debug { 378 379 log.Println("redirect to", string(loc)) 379 380 } … … 470 471 err := HTML_BODY_EXTENSION.Execute(ctx, p) 471 472 if err != nil { 472 if DEBUG{473 if cfg.Debug { 473 474 fmt.Println("failed to inject body extension", err) 474 475 } … … 556 557 out.Write([]byte(uri)) 557 558 startIndex = urlEnd 558 } else if DEBUG{559 } else if cfg.Debug { 559 560 log.Println("cannot proxify css uri:", string(css[urlStart:urlEnd])) 560 561 } … … 677 678 err := HTML_FORM_EXTENSION.Execute(out, HTMLFormExtParam{urlStr, key}) 678 679 if err != nil { 679 if DEBUG{680 if cfg.Debug { 680 681 fmt.Println("failed to inject body extension", err) 681 682 } … … 694 695 err := HTML_BODY_EXTENSION.Execute(out, p) 695 696 if err != nil { 696 if DEBUG{697 if cfg.Debug { 697 698 fmt.Println("failed to inject body extension", err) 698 699 } … … 833 834 if uri, err := rc.ProxifyURI(attrValue); err == nil { 834 835 fmt.Fprintf(out, " %s=\"%s\"", attrName, uri) 835 } else if DEBUG{836 } else if cfg.Debug { 836 837 log.Println("cannot proxify uri:", string(attrValue)) 837 838 } … … 983 984 _, err := hex.Decode(h, hashMsg) 984 985 if err != nil { 985 if DEBUG{986 if cfg.Debug { 986 987 log.Println("hmac error:", err) 987 988 } … … 1011 1012 ctx.Write([]byte(MORTY_HTML_PAGE_START)) 1012 1013 if err != nil { 1013 if DEBUG{1014 if cfg.Debug { 1014 1015 log.Println("error:", err) 1015 1016 } … … 1031 1032 1032 1033 func main() { 1033 default_listen_addr := os.Getenv("MORTY_ADDRESS") 1034 if default_listen_addr == "" { 1035 default_listen_addr = "127.0.0.1:3000" 1036 } 1037 default_key := os.Getenv("MORTY_KEY") 1038 listen := flag.String("listen", default_listen_addr, "Listen address") 1039 key := flag.String("key", default_key, "HMAC url validation key (base64 encoded) - leave blank to disable validation") 1040 ipv6 := flag.Bool("ipv6", false, "Allow IPv6 HTTP requests") 1034 cfg.ListenAddress = *flag.String("listen", cfg.ListenAddress, "Listen address") 1035 cfg.Key = *flag.String("key", cfg.Key, "HMAC url validation key (base64 encoded) - leave blank to disable validation") 1036 cfg.IPV6 = *flag.Bool("ipv6", cfg.IPV6, "Allow IPv6 HTTP requests") 1037 cfg.Debug = *flag.Bool("debug", cfg.Debug, "Debug mode") 1038 cfg.RequestTimeout = *flag.Uint("timeout", cfg.RequestTimeout, "Request timeout") 1041 1039 version := flag.Bool("version", false, "Show version") 1042 1040 requestTimeout := flag.Uint("timeout", 2, "Request timeout") … … 1057 1055 CLIENT.Dial = fasthttpproxy.FasthttpSocksDialer(*socks5) 1058 1056 } 1059 1060 p := &Proxy{RequestTimeout: time.Duration(*requestTimeout) * time.Second} 1061 1062 if *key != "" { 1057 if cfg.IPV6 { 1058 CLIENT.Dial = fasthttp.DialDualStack 1059 } 1060 1061 p := &Proxy{RequestTimeout: time.Duration(cfg.RequestTimeout) * time.Second} 1062 1063 if cfg.Key != "" { 1063 1064 var err error 1064 p.Key, err = base64.StdEncoding.DecodeString( *key)1065 p.Key, err = base64.StdEncoding.DecodeString(cfg.Key) 1065 1066 if err != nil { 1066 1067 log.Fatal("Error parsing -key", err.Error()) … … 1069 1070 } 1070 1071 1071 log.Println("listening on", *listen)1072 1073 if err := fasthttp.ListenAndServe( *listen, p.RequestHandler); err != nil {1072 log.Println("listening on", cfg.ListenAddress) 1073 1074 if err := fasthttp.ListenAndServe(cfg.ListenAddress, p.RequestHandler); err != nil { 1074 1075 log.Fatal("Error in ListenAndServe:", err) 1075 1076 }
Note:
See TracChangeset
for help on using the changeset viewer.