feat: add Fiber HTTPS server with embedded static files

This commit is contained in:
2026-03-01 03:03:15 +08:00
parent 044a8aa166
commit 4ebc9226ed
4 changed files with 262 additions and 0 deletions

34
internal/server/net.go Normal file
View File

@@ -0,0 +1,34 @@
package server
import (
"crypto/rand"
"encoding/hex"
"fmt"
"log/slog"
"net"
)
// GetLANIP returns the first non-loopback IPv4 address.
func GetLANIP() (string, error) {
addrs, err := net.InterfaceAddrs()
if err != nil {
return "", err
}
for _, addr := range addrs {
if ipNet, ok := addr.(*net.IPNet); ok && !ipNet.IP.IsLoopback() && ipNet.IP.To4() != nil {
return ipNet.IP.String(), nil
}
}
return "", fmt.Errorf("no LAN IP found")
}
// GenerateToken creates a cryptographically random token for WS auth.
func GenerateToken() string {
b := make([]byte, 16)
if _, err := rand.Read(b); err != nil {
slog.Error("failed to generate token", "error", err)
// Fallback to a less secure but functional token
return "voicepaste-fallback-token"
}
return hex.EncodeToString(b)
}