120 lines · 4.1 KB · Go
RawDownload
// Copyright 2020 The Gitea Authors. All rights reserved.// SPDX-License-Identifier: MIT package private import (	"context"	"fmt"	"io"	"net/http"	"net/url"	"strconv"	"time" 	"forgejo.org/modules/setting") // Shutdown calls the internal shutdown functionfunc 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 functionfunc 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 functionfunc 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 calltype FlushOptions struct {	Timeout     time.Duration	NonBlocking bool} // FlushQueues calls the internal flush-queues functionfunc 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 loggingfunc 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 loggingfunc 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 filesfunc 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 loggingfunc 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 calltype LoggerOptions struct {	Logger string	Writer string	Mode   string	Config map[string]any} // AddLogger adds a loggerfunc 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 loggerfunc 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 instancefunc 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}