diff options
author | Daniel Baumann <daniel@debian.org> | 2024-10-18 20:33:49 +0200 |
---|---|---|
committer | Daniel Baumann <daniel@debian.org> | 2024-12-12 23:57:56 +0100 |
commit | e68b9d00a6e05b3a941f63ffb696f91e554ac5ec (patch) | |
tree | 97775d6c13b0f416af55314eb6a89ef792474615 /modules/private/manager.go | |
parent | Initial commit. (diff) | |
download | forgejo-e68b9d00a6e05b3a941f63ffb696f91e554ac5ec.tar.xz forgejo-e68b9d00a6e05b3a941f63ffb696f91e554ac5ec.zip |
Adding upstream version 9.0.3.
Signed-off-by: Daniel Baumann <daniel@debian.org>
Diffstat (limited to 'modules/private/manager.go')
-rw-r--r-- | modules/private/manager.go | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/modules/private/manager.go b/modules/private/manager.go new file mode 100644 index 0000000..6055e55 --- /dev/null +++ b/modules/private/manager.go @@ -0,0 +1,120 @@ +// Copyright 2020 The Gitea Authors. All rights reserved. +// SPDX-License-Identifier: MIT + +package private + +import ( + "context" + "fmt" + "io" + "net/http" + "net/url" + "strconv" + "time" + + "code.gitea.io/gitea/modules/setting" +) + +// Shutdown calls the internal shutdown function +func Shutdown(ctx context.Context) ResponseExtra { + reqURL := setting.LocalURL + "api/internal/manager/shutdown" + req := newInternalRequest(ctx, reqURL, "POST") + return requestJSONClientMsg(req, "Shutting down") +} + +// Restart calls the internal restart function +func Restart(ctx context.Context) ResponseExtra { + reqURL := setting.LocalURL + "api/internal/manager/restart" + req := newInternalRequest(ctx, reqURL, "POST") + return requestJSONClientMsg(req, "Restarting") +} + +// ReloadTemplates calls the internal reload-templates function +func ReloadTemplates(ctx context.Context) ResponseExtra { + reqURL := setting.LocalURL + "api/internal/manager/reload-templates" + req := newInternalRequest(ctx, reqURL, "POST") + return requestJSONClientMsg(req, "Reloaded") +} + +// FlushOptions represents the options for the flush call +type FlushOptions struct { + Timeout time.Duration + NonBlocking bool +} + +// FlushQueues calls the internal flush-queues function +func FlushQueues(ctx context.Context, timeout time.Duration, nonBlocking bool) ResponseExtra { + reqURL := setting.LocalURL + "api/internal/manager/flush-queues" + req := newInternalRequest(ctx, reqURL, "POST", FlushOptions{Timeout: timeout, NonBlocking: nonBlocking}) + if timeout > 0 { + req.SetReadWriteTimeout(timeout + 10*time.Second) + } + return requestJSONClientMsg(req, "Flushed") +} + +// PauseLogging pauses logging +func PauseLogging(ctx context.Context) ResponseExtra { + reqURL := setting.LocalURL + "api/internal/manager/pause-logging" + req := newInternalRequest(ctx, reqURL, "POST") + return requestJSONClientMsg(req, "Logging Paused") +} + +// ResumeLogging resumes logging +func ResumeLogging(ctx context.Context) ResponseExtra { + reqURL := setting.LocalURL + "api/internal/manager/resume-logging" + req := newInternalRequest(ctx, reqURL, "POST") + return requestJSONClientMsg(req, "Logging Restarted") +} + +// ReleaseReopenLogging releases and reopens logging files +func ReleaseReopenLogging(ctx context.Context) ResponseExtra { + reqURL := setting.LocalURL + "api/internal/manager/release-and-reopen-logging" + req := newInternalRequest(ctx, reqURL, "POST") + return requestJSONClientMsg(req, "Logging Restarted") +} + +// SetLogSQL sets database logging +func SetLogSQL(ctx context.Context, on bool) ResponseExtra { + reqURL := setting.LocalURL + "api/internal/manager/set-log-sql?on=" + strconv.FormatBool(on) + req := newInternalRequest(ctx, reqURL, "POST") + return requestJSONClientMsg(req, "Log SQL setting set") +} + +// LoggerOptions represents the options for the add logger call +type LoggerOptions struct { + Logger string + Writer string + Mode string + Config map[string]any +} + +// AddLogger adds a logger +func AddLogger(ctx context.Context, logger, writer, mode string, config map[string]any) ResponseExtra { + reqURL := setting.LocalURL + "api/internal/manager/add-logger" + req := newInternalRequest(ctx, reqURL, "POST", LoggerOptions{ + Logger: logger, + Writer: writer, + Mode: mode, + Config: config, + }) + return requestJSONClientMsg(req, "Added") +} + +// RemoveLogger removes a logger +func RemoveLogger(ctx context.Context, logger, writer string) ResponseExtra { + reqURL := setting.LocalURL + fmt.Sprintf("api/internal/manager/remove-logger/%s/%s", url.PathEscape(logger), url.PathEscape(writer)) + req := newInternalRequest(ctx, reqURL, "POST") + return requestJSONClientMsg(req, "Removed") +} + +// Processes return the current processes from this gitea instance +func Processes(ctx context.Context, out io.Writer, flat, noSystem, stacktraces, json bool, cancel string) ResponseExtra { + reqURL := setting.LocalURL + fmt.Sprintf("api/internal/manager/processes?flat=%t&no-system=%t&stacktraces=%t&json=%t&cancel-pid=%s", flat, noSystem, stacktraces, json, url.QueryEscape(cancel)) + + req := newInternalRequest(ctx, reqURL, "GET") + callback := func(resp *http.Response, extra *ResponseExtra) { + _, extra.Error = io.Copy(out, resp.Body) + } + _, extra := requestJSONResp(req, &responseCallback{callback}) + return extra +} |