summaryrefslogtreecommitdiffstats
path: root/modules/private
diff options
context:
space:
mode:
authora1012112796 <1012112796@qq.com>2021-05-22 05:37:16 +0800
committerGitHub <noreply@github.com>2021-05-21 17:37:16 -0400
commitfec832402625d856aba0cc2fbdec9e773469ad87 (patch)
treec752057af4d939c7a7d61d6e5817cd68da39af57 /modules/private
parent35b0c8aa7d97f18431db1b9079bee8ad51faf2cb (diff)
downloadgitea-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.go31
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
+}