|
@@ -30,31 +30,49 @@ import (
|
|
|
"flag"
|
|
|
"fmt"
|
|
|
"log"
|
|
|
+ "os"
|
|
|
|
|
|
httpserver "git.aetherial.dev/aeth/http-proxy/pkg"
|
|
|
"github.com/gin-contrib/cors"
|
|
|
"github.com/gin-gonic/gin"
|
|
|
)
|
|
|
|
|
|
+var licenseMsg = "\n http-wokou Copyright (C) 2024 Russell Hrubesky, ChiralWorks Software LLC\n This program comes with ABSOLUTELY NO WARRANTY; for details type `http-wokou --license`\n This is free software, and you are welcome to redistribute it\n under certain conditions; type `http-wokou --redist` for details.\n\n"
|
|
|
+
|
|
|
+var redistMsg = "\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n"
|
|
|
+
|
|
|
+var licenseMsgLong = "\n GNU GENERAL PUBLIC LICENSE\n Version 3, 29 June 2007\n Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>\n Everyone is permitted to copy and distribute verbatim copies\n of this license document, but changing it is not allowed.\n\n http-wokou, An HTTP Proxying framework for bypassing DNS Security\n Copyright (C) 2024 Russell Hrubesky, ChiralWorks Software LLC\n\n This program is free software: you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation, either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program. If not, see <https://www.gnu.org/licenses/>.\n\n"
|
|
|
+
|
|
|
func main() {
|
|
|
caching := flag.Bool("cache", false, "Supply this argument to turn on caching")
|
|
|
+ licenseInfo := flag.Bool("license", false, "Pass this flag to display license and warantee information.")
|
|
|
+ redistInfo := flag.Bool("redist", false, "Pass this flag to display redistribution information.")
|
|
|
configFile := flag.String("config", ".config", "supply the path to a configuration file for the proxy to use")
|
|
|
flag.Parse()
|
|
|
|
|
|
+ if *licenseInfo {
|
|
|
+ fmt.Println(licenseMsgLong)
|
|
|
+ os.Exit(0)
|
|
|
+ }
|
|
|
+ if *redistInfo {
|
|
|
+ fmt.Println(redistMsg)
|
|
|
+ os.Exit(0)
|
|
|
+ }
|
|
|
+ fmt.Println(licenseMsg)
|
|
|
cfg, err := httpserver.ReadConfig(*configFile)
|
|
|
if err != nil {
|
|
|
log.Fatal("Couldnt read config: ", err)
|
|
|
}
|
|
|
cfg.Caching = *caching
|
|
|
- fmt.Print(cfg.Caching)
|
|
|
|
|
|
e := gin.Default()
|
|
|
+ e.SetTrustedProxies(nil)
|
|
|
config := cors.DefaultConfig()
|
|
|
config.AllowOrigins = cfg.CorsHosts
|
|
|
e.Use(cors.New(config))
|
|
|
rmaps := httpserver.ReadRouteMap(cfg.RouteMapPath)
|
|
|
httpserver.RegisterRoutes(e, cfg, rmaps)
|
|
|
|
|
|
- e.RunTLS(fmt.Sprintf("%s:%v", "0.0.0.0", cfg.HttpsPort), "/etc/letsencrypt/live/void-society.online/fullchain.pem", "/etc/letsencrypt/live/void-society.online/privkey.pem")
|
|
|
+ e.RunTLS(fmt.Sprintf("%s:%v", cfg.ListeningIp, cfg.HttpsPort), cfg.SslPemFile, cfg.SslKeyFile)
|
|
|
|
|
|
}
|