schema update and api /v1/schema

This commit is contained in:
yusing 2025-01-06 00:49:29 +08:00
parent 6034908a95
commit 29f85db022
4 changed files with 29 additions and 16 deletions

View file

@ -50,6 +50,9 @@ COPY config.example.yml /app/config/config.yml
# copy certs
COPY --from=builder /etc/ssl/certs /etc/ssl/certs
# copy schema
COPY schema /app/schema
ENV DOCKER_HOST=unix:///var/run/docker.sock
ENV GODOXY_DEBUG=0

View file

@ -37,6 +37,7 @@ func NewHandler() http.Handler {
mux.HandleFunc("PUT", "/v1/file/{filename...}", auth.RequireAuth(v1.SetFileContent))
mux.HandleFunc("GET", "/v1/stats", v1.Stats)
mux.HandleFunc("GET", "/v1/stats/ws", v1.StatsWS)
mux.HandleFunc("GET", "/v1/schema/{filename...}", v1.GetSchemaFile)
return mux
}

View file

@ -64,3 +64,16 @@ func SetFileContent(w http.ResponseWriter, r *http.Request) {
}
w.WriteHeader(http.StatusOK)
}
func GetSchemaFile(w http.ResponseWriter, r *http.Request) {
filename := r.PathValue("filename")
if filename == "" {
U.RespondError(w, U.ErrMissingKey("filename"), http.StatusBadRequest)
}
content, err := os.ReadFile(path.Join(common.SchemaBasePath, filename))
if err != nil {
U.HandleErr(w, r, err)
return
}
U.WriteBody(w, content)
}

View file

@ -121,6 +121,7 @@
},
"load_balance": {
"type": "object",
"additionalProperties": false,
"properties": {
"link": {
"type": "string",
@ -149,6 +150,7 @@
},
"healthcheck": {
"type": "object",
"additionalProperties": false,
"properties": {
"disable": {
"type": "boolean",
@ -203,7 +205,8 @@
"then": {
"properties": {
"port": {
"markdownDescription": "Proxy port from **0** to **65535**",
"title": "Proxy port",
"markdownDescription": "From **0** to **65535**",
"oneOf": [
{
"type": "string",
@ -218,21 +221,14 @@
]
},
"path_patterns": {
"oneOf": [
{
"type": "array",
"markdownDescription": "A list of [path patterns](https://pkg.go.dev/net/http#hdr-Patterns-ServeMux)",
"items": {
"type": "string",
"pattern": "^(?:([A-Z]+) )?(?:([a-zA-Z0-9.-]+)\\/)?(\\/[^\\s]*)$",
"patternErrorMessage": "invalid path pattern"
}
},
{
"type": "null",
"description": "No proxy path"
}
]
"title": "Path patterns",
"type": "array",
"markdownDescription": "See https://pkg.go.dev/net/http#hdr-Patterns-ServeMux",
"items": {
"type": "string",
"pattern": "^(?:([A-Z]+) )?(?:([a-zA-Z0-9.-]+)\\/)?(\\/[^\\s]*)$",
"patternErrorMessage": "invalid path pattern"
}
},
"middlewares": {
"type": "object"