30 lines
913 B
Go
30 lines
913 B
Go
package httpserver
|
|
|
|
import (
|
|
"crypto/tls"
|
|
"errors"
|
|
"fmt"
|
|
"net/http"
|
|
)
|
|
|
|
func StartServer(port string, path string, address string, protocolVer string) (error, int) {
|
|
var httpServer *http.Server
|
|
addressPort := address + ":" + port
|
|
fileServer := http.FileServer(http.Dir(path))
|
|
fmt.Println("Serving HTTP on", address, "port", port, "(http://"+address+":"+port+"/) ...")
|
|
if protocolVer == "2.0" || protocolVer == "2" {
|
|
httpServer = &http.Server{Addr: addressPort, Handler: fileServer, TLSNextProto: make(map[string]func(*http.Server, *tls.Conn, http.Handler))}
|
|
} else {
|
|
httpServer = &http.Server{Addr: addressPort, Handler: fileServer}
|
|
}
|
|
err := httpServer.ListenAndServe()
|
|
if err != nil {
|
|
if err.Error() == "permission denied" || err.Error() == "listen tcp "+addressPort+": bind: permission denied" {
|
|
return errors.New("permission denied"), 1
|
|
} else {
|
|
return err, 1
|
|
}
|
|
}
|
|
return nil, 0
|
|
}
|