add gemini support

This commit is contained in:
2026-02-16 21:00:04 -05:00
parent 94818e25fe
commit 472e27b1fa
16 changed files with 465 additions and 129 deletions

View File

@@ -2,12 +2,13 @@ package server
import (
"fes/modules/config"
"fes/modules/gemini"
"fes/modules/ui"
"fmt"
"log"
"net/http"
"os"
"path/filepath"
"sync"
)
var Routes map[string]string
@@ -30,10 +31,41 @@ func Start(dir string) {
ui.Log("running root=%s, port=%d.", root, *config.Port)
ui.LogVerbose("start loading directories")
Routes = loadDirs()
http.HandleFunc("/", httpHandler)
ui.Log("Server initialized")
gemini.HandleFunc("/", geminiHandler)
log.Fatal(http.ListenAndServe(fmt.Sprintf("0.0.0.0:%d", *config.Port), nil))
var wg sync.WaitGroup
errs := make(chan error, 2)
wg.Add(2)
go func() {
defer wg.Done()
errs <- http.ListenAndServe(fmt.Sprintf("0.0.0.0:%d", *config.Port), nil)
}()
go func() {
defer wg.Done()
errs <- gemini.ListenAndServeTLS(fmt.Sprintf("0.0.0.0:%d", *config.Port-1035), "cert.pem", "key.pem", nil)
}()
ui.Log("Server initialized")
wg.Wait()
close(errs)
var collected []error
for err := range errs {
if err != nil {
collected = append(collected, err)
}
}
if len(collected) > 0 {
fmt.Printf("errors: %v\n", collected)
return
}
}