diff options
| author | tjpcc <tjp@ctrl-c.club> | 2023-10-30 13:02:06 -0600 |
|---|---|---|
| committer | tjpcc <tjp@ctrl-c.club> | 2023-10-30 13:02:37 -0600 |
| commit | 0b57acaa2d31038f858c7ad6722db43409c1b0a1 (patch) | |
| tree | bb421b984cbfc01a540da6e20251f1d642db829d /parse.go | |
| parent | deb9bd75511c790d151449b020093f54515bb19f (diff) | |
Add support for spartan protocolspartan
spartan server definitions are very similar to gemini.
The major changes are:
* no "servertls" directives
* no "autoatom" modifier (to be fixed)
* no "git" directives (to be fixed)
Fixes #15
Diffstat (limited to 'parse.go')
| -rw-r--r-- | parse.go | 25 |
1 files changed, 25 insertions, 0 deletions
@@ -109,6 +109,12 @@ func Parse(input io.ReadCloser) (*Configuration, error) { return nil, err } servers = append(servers, s) + case "spartan": + s, err := parseSpartanServer(line, buf) + if err != nil { + return nil, err + } + servers = append(servers, s) } } @@ -221,6 +227,20 @@ func parseGeminiServer(line string, buf *bufio.Reader) (Server, error) { return server, nil } +func parseSpartanServer(line string, buf *bufio.Reader) (Server, error) { + server := Server{Type: "spartan"} + + 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') @@ -241,6 +261,9 @@ func parseServerDirectives(server *Server, buf *bufio.Reader) error { case "host": server.Hostnames = append(server.Hostnames, parseHost(rest)...) case "servertls": + if server.Type == "spartan" { + return errors.New("servertls directive not allowed in spartan server") + } if server.TLS != nil { return fmt.Errorf("duplicate servertls directives in %s server", server.Type) } @@ -523,6 +546,8 @@ func parseServerLine(server *Server, line string) error { defaultPort = "79" case "gemini": defaultPort = "1965" + case "spartan": + defaultPort = "300" default: return errors.New("invalid server") } |
