Simplify port handling and discourage listening on a port.

This commit is contained in:
FireMasterK 2021-09-10 01:28:04 +05:30
parent f3ef98fbfe
commit 590b3e3efa
No known key found for this signature in database
GPG Key ID: 49451E4482CC5BCD
1 changed files with 38 additions and 8 deletions

46
main.go
View File

@ -219,22 +219,52 @@ func getBestThumbnail(path string) (newpath string) {
return strings.Replace(path, "maxres.jpg", "mqdefault.jpg", 1)
}
// exists returns whether the given file or directory exists
func exists(path string) (bool, error) {
_, err := os.Stat(path)
if err == nil {
return true, nil
}
if os.IsNotExist(err) {
return false, nil
}
return false, err
}
func main() {
socket := "socket" + string(os.PathSeparator) + "http-proxy.sock"
syscall.Unlink(socket)
listener, err := net.Listen("unix", socket)
env_port := os.Getenv("PORT")
port := "8080"
if env_port != "" {
port = env_port
}
srv := &http.Server{
ReadTimeout: 5 * time.Second,
WriteTimeout: 10 * time.Second,
Addr: ":8080",
Addr: ":" + port,
Handler: &requesthandler{},
}
exists, err := exists("socket/")
if err != nil {
fmt.Println("Failed to bind to UDS, falling back to TCP/IP")
fmt.Println(err.Error())
srv.ListenAndServe()
} else {
log.Panicln(err)
}
if env_port == "" && exists {
socket := "socket" + string(os.PathSeparator) + "http-proxy.sock"
syscall.Unlink(socket)
listener, err := net.Listen("unix", socket)
if err != nil {
log.Panicln(err)
}
defer listener.Close()
srv.Serve(listener)
} else {
fmt.Println("WARNING: You are listening on a HTTP Socket, you are strongly recommended to use a Unix Domain Socket when running a public instance for performance reasons.")
srv.ListenAndServe()
}
}