55 lines
1020 B
Go
55 lines
1020 B
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"os"
|
|
"strconv"
|
|
"strings"
|
|
)
|
|
|
|
const (
|
|
defaultAddr = "127.0.0.1:7777"
|
|
defaultMaxSize = 100 << 20 // 100 MiB
|
|
tokenHeader = "X-Open-Token"
|
|
fileNameHeader = "X-Open-Filename"
|
|
pathHeaderField = "X-Open-Host-Path"
|
|
)
|
|
|
|
func envAddr() string {
|
|
if v := os.Getenv("OPEN_PROXY_ADDR"); v != "" {
|
|
return v
|
|
}
|
|
return defaultAddr
|
|
}
|
|
|
|
func envToken() (string, error) {
|
|
if v := os.Getenv("OPEN_PROXY_TOKEN"); v != "" {
|
|
return v, nil
|
|
}
|
|
|
|
path := os.Getenv("OPEN_PROXY_TOKEN_FILE")
|
|
if path == "" {
|
|
return "", nil
|
|
}
|
|
|
|
b, err := os.ReadFile(path)
|
|
if err != nil {
|
|
return "", fmt.Errorf("read OPEN_PROXY_TOKEN_FILE %q: %w", path, err)
|
|
}
|
|
|
|
token := strings.TrimRight(string(b), "\r\n")
|
|
if token == "" {
|
|
return "", fmt.Errorf("OPEN_PROXY_TOKEN_FILE %q is empty", path)
|
|
}
|
|
return token, nil
|
|
}
|
|
|
|
func envMaxSize() int64 {
|
|
if v := os.Getenv("OPEN_PROXY_MAXSIZE"); v != "" {
|
|
if n, err := strconv.ParseInt(v, 10, 64); err == nil && n > 0 {
|
|
return n
|
|
}
|
|
}
|
|
return defaultMaxSize
|
|
}
|