diff options
Diffstat (limited to 'parse.go')
| -rw-r--r-- | parse.go | 26 |
1 files changed, 26 insertions, 0 deletions
@@ -115,6 +115,12 @@ func Parse(input io.ReadCloser) (*Configuration, error) { return nil, err } servers = append(servers, s) + case "nex": + s, err := parseNexServer(line, buf) + if err != nil { + return nil, err + } + servers = append(servers, s) } } @@ -241,6 +247,20 @@ func parseSpartanServer(line string, buf *bufio.Reader) (Server, error) { return server, nil } +func parseNexServer(line string, buf *bufio.Reader) (Server, error) { + server := Server{Type: "nex"} + + if err := parseServerLine(&server, line); err != nil { + return server, err + } + + if err := parseServerDirectives(&server, buf); err != nil { + return server, err + } + + return server, nil +} + func parseServerDirectives(server *Server, buf *bufio.Reader) error { for { line, err := buf.ReadString('\n') @@ -306,6 +326,10 @@ func validateRoute(serverType string, dir *RouteDirective) error { return errors.New("cgi directives only support the 'extendedgophermap' modifier") } + if dir.Type == "git" && serverType != "gemini" && serverType != "gopher" && serverType != "spartan" { + return fmt.Errorf("git directive not allowed in %s server", serverType) + } + if serverType == "finger" && (dir.Modifiers.DirDefault != "" || dir.Modifiers.DirList) { return errors.New("finger servers don't support directory 'with' modifiers") } @@ -558,6 +582,8 @@ func parseServerLine(server *Server, line string) error { defaultPort = "1965" case "spartan": defaultPort = "300" + case "nex": + defaultPort = "1900" default: return errors.New("invalid server") } |
