diff options
author | a1012112796 <1012112796@qq.com> | 2021-05-22 05:37:16 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-05-21 17:37:16 -0400 |
commit | fec832402625d856aba0cc2fbdec9e773469ad87 (patch) | |
tree | c752057af4d939c7a7d61d6e5817cd68da39af57 /modules/private | |
parent | 35b0c8aa7d97f18431db1b9079bee8ad51faf2cb (diff) | |
download | gitea-fec832402625d856aba0cc2fbdec9e773469ad87.tar.gz gitea-fec832402625d856aba0cc2fbdec9e773469ad87.zip |
add a new internal hook to save ssh log (#15787)
* add a new internal hook to save ssh log
as title, when a ssh error ocure like #15785.
only when switch ``RUN_MODE`` to dev can we
found which error is ocure. But this way is
not a good idea for production envirment.
this changes try save ssh error mesage to the
log file like other log by a new internal hook.
I think it's usefull for find error message
in production envirment. Thanks.
Signed-off-by: a1012112796 <1012112796@qq.com>
* rename and fix nit
* Update modules/private/hook.go
Co-authored-by: silverwind <me@silverwind.io>
Co-authored-by: techknowlogick <matti@mdranta.net>
Co-authored-by: silverwind <me@silverwind.io>
Co-authored-by: techknowlogick <techknowlogick@gitea.io>
Diffstat (limited to 'modules/private')
-rw-r--r-- | modules/private/hook.go | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/modules/private/hook.go b/modules/private/hook.go index 178500f736..cb8fe25708 100644 --- a/modules/private/hook.go +++ b/modules/private/hook.go @@ -5,6 +5,7 @@ package private import ( + "encoding/json" "fmt" "net/http" "net/url" @@ -57,6 +58,12 @@ type HookOptions struct { IsDeployKey bool } +// SSHLogOption ssh log options +type SSHLogOption struct { + IsError bool + Message string +} + // HookPostReceiveResult represents an individual result from PostReceive type HookPostReceiveResult struct { Results []HookPostReceiveBranchResult @@ -146,3 +153,27 @@ func SetDefaultBranch(ownerName, repoName, branch string) error { } return nil } + +// SSHLog sends ssh error log response +func SSHLog(isErr bool, msg string) error { + reqURL := setting.LocalURL + "api/internal/ssh/log" + req := newInternalRequest(reqURL, "POST") + req = req.Header("Content-Type", "application/json") + + jsonBytes, _ := json.Marshal(&SSHLogOption{ + IsError: isErr, + Message: msg, + }) + req.Body(jsonBytes) + + req.SetTimeout(60*time.Second, 60*time.Second) + resp, err := req.Response() + if err != nil { + return fmt.Errorf("unable to contact gitea: %v", err) + } + defer resp.Body.Close() + if resp.StatusCode != http.StatusOK { + return fmt.Errorf("Error returned from gitea: %v", decodeJSONError(resp).Err) + } + return nil +} |