|
|
@@ -10,6 +10,8 @@ import ( |
|
|
|
"fmt" |
|
|
|
"net" |
|
|
|
"net/http" |
|
|
|
"os" |
|
|
|
"strings" |
|
|
|
|
|
|
|
"code.gitea.io/gitea/modules/httplib" |
|
|
|
"code.gitea.io/gitea/modules/json" |
|
|
@@ -18,13 +20,14 @@ import ( |
|
|
|
"code.gitea.io/gitea/modules/setting" |
|
|
|
) |
|
|
|
|
|
|
|
func newRequest(ctx context.Context, url, method string) *httplib.Request { |
|
|
|
func newRequest(ctx context.Context, url, method, sourceIP string) *httplib.Request { |
|
|
|
if setting.InternalToken == "" { |
|
|
|
log.Fatal(`The INTERNAL_TOKEN setting is missing from the configuration file: %q. |
|
|
|
Ensure you are running in the correct environment or set the correct configuration file with -c.`, setting.CustomConf) |
|
|
|
} |
|
|
|
return httplib.NewRequest(url, method). |
|
|
|
SetContext(ctx). |
|
|
|
Header("X-Real-IP", sourceIP). |
|
|
|
Header("Authorization", fmt.Sprintf("Bearer %s", setting.InternalToken)) |
|
|
|
} |
|
|
|
|
|
|
@@ -42,8 +45,16 @@ func decodeJSONError(resp *http.Response) *Response { |
|
|
|
return &res |
|
|
|
} |
|
|
|
|
|
|
|
func getClientIP() string { |
|
|
|
sshConnEnv := strings.TrimSpace(os.Getenv("SSH_CONNECTION")) |
|
|
|
if len(sshConnEnv) == 0 { |
|
|
|
return "127.0.0.1" |
|
|
|
} |
|
|
|
return strings.Fields(sshConnEnv)[0] |
|
|
|
} |
|
|
|
|
|
|
|
func newInternalRequest(ctx context.Context, url, method string) *httplib.Request { |
|
|
|
req := newRequest(ctx, url, method).SetTLSClientConfig(&tls.Config{ |
|
|
|
req := newRequest(ctx, url, method, getClientIP()).SetTLSClientConfig(&tls.Config{ |
|
|
|
InsecureSkipVerify: true, |
|
|
|
ServerName: setting.Domain, |
|
|
|
}) |