diff --git a/main.go b/main.go index edf76cd..7bcc7a2 100644 --- a/main.go +++ b/main.go @@ -14,6 +14,7 @@ func main() { port := parser.Int("p", "port", &argparse.Options{Default: 8040}) logFolder := parser.String("l", "logs-folder", &argparse.Options{Default: "logs"}) configFolder := parser.String("c", "config-folder", &argparse.Options{Default: "config"}) + wwwFolder := parser.String("w", "www-folder", &argparse.Options{Default: "www"}) err := parser.Parse(os.Args) if err != nil { @@ -23,6 +24,6 @@ func main() { return } - webserver := miniws.NewWebServer(*port, *logFolder, *configFolder) + webserver := miniws.NewWebServer(*port, *logFolder, *configFolder, *wwwFolder) webserver.Run() } diff --git a/miniws/webserver.go b/miniws/webserver.go index f31e8de..4c92213 100644 --- a/miniws/webserver.go +++ b/miniws/webserver.go @@ -22,18 +22,20 @@ type WebServer struct { logger *Logger port int configFolder string + wwwFolder string ipFilter []string userAgentFilter []string ipFilterMode FilterMode userAgentFilterMode FilterMode } -func NewWebServer(port_ int, logFolder_, configFolder_ string) *WebServer { +func NewWebServer(port_ int, logFolder_, configFolder_, wwwFolder_ string) *WebServer { return &WebServer{ logger: NewLogger(logFolder_), port: port_, configFolder: configFolder_, + wwwFolder: wwwFolder_, ipFilter: make([]string, 0), userAgentFilter: make([]string, 0), ipFilterMode: FILTER_MODE_BLACKLIST, @@ -43,6 +45,11 @@ func NewWebServer(port_ int, logFolder_, configFolder_ string) *WebServer { func (ws *WebServer) Run() { + _, err := os.Stat(ws.wwwFolder) + if errors.Is(err, os.ErrNotExist) { + log.Fatalln("Fatal: www folder " + ws.wwwFolder + " does not exist") + } + ws.ipFilterMode, ws.ipFilter = ws.parseFilterPanics(FILENAME_IPFILTER) ws.userAgentFilterMode, ws.userAgentFilter = ws.parseFilterPanics(FILENAME_USERAGENTFILTER) @@ -146,7 +153,7 @@ func (ws *WebServer) get(writer http.ResponseWriter, req *http.Request) { return } - fetchedData, fetchErr := ws.fetchFileContents(req.URL.Path) + fetchedData, fetchErr := ws.fetchFileContents(ensureSlashSuffix(ws.wwwFolder) + req.URL.Path) sentBytes := 0