mirror of
https://github.com/go-gitea/gitea.git
synced 2025-08-14 00:02:41 -04:00
Compare commits
No commits in common. "64cc691b7f5977915b686bdf85e4c6ffe9692a35" and "e4f200e616e79cdea7f1c50b5dbb3f3ed2fe84db" have entirely different histories.
64cc691b7f
...
e4f200e616
@ -390,7 +390,7 @@ func IterateLFSMetaObjectsForRepo(ctx context.Context, repoID int64, f func(cont
|
|||||||
|
|
||||||
for {
|
for {
|
||||||
beans := make([]*CountLFSMetaObject, 0, batchSize)
|
beans := make([]*CountLFSMetaObject, 0, batchSize)
|
||||||
sess := engine.Table("lfs_meta_object").Select("`lfs_meta_object`.*, COUNT(`l1`.oid) AS `count`").
|
sess := engine.Select("`lfs_meta_object`.*, COUNT(`l1`.oid) AS `count`").
|
||||||
Join("INNER", "`lfs_meta_object` AS l1", "`lfs_meta_object`.oid = `l1`.oid").
|
Join("INNER", "`lfs_meta_object` AS l1", "`lfs_meta_object`.oid = `l1`.oid").
|
||||||
Where("`lfs_meta_object`.repository_id = ?", repoID)
|
Where("`lfs_meta_object`.repository_id = ?", repoID)
|
||||||
if !opts.OlderThan.IsZero() {
|
if !opts.OlderThan.IsZero() {
|
||||||
|
@ -473,17 +473,6 @@ func (ctx *Context) JSON(status int, content interface{}) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func removeSessionCookieHeader(w http.ResponseWriter) {
|
|
||||||
cookies := w.Header()["Set-Cookie"]
|
|
||||||
w.Header().Del("Set-Cookie")
|
|
||||||
for _, cookie := range cookies {
|
|
||||||
if strings.HasPrefix(cookie, setting.SessionConfig.CookieName+"=") {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
w.Header().Add("Set-Cookie", cookie)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Redirect redirects the request
|
// Redirect redirects the request
|
||||||
func (ctx *Context) Redirect(location string, status ...int) {
|
func (ctx *Context) Redirect(location string, status ...int) {
|
||||||
code := http.StatusSeeOther
|
code := http.StatusSeeOther
|
||||||
@ -491,15 +480,6 @@ func (ctx *Context) Redirect(location string, status ...int) {
|
|||||||
code = status[0]
|
code = status[0]
|
||||||
}
|
}
|
||||||
|
|
||||||
if strings.Contains(location, "://") || strings.HasPrefix(location, "//") {
|
|
||||||
// Some browsers (Safari) have buggy behavior for Cookie + Cache + External Redirection, eg: /my-path => https://other/path
|
|
||||||
// 1. the first request to "/my-path" contains cookie
|
|
||||||
// 2. some time later, the request to "/my-path" doesn't contain cookie (caused by Prevent web tracking)
|
|
||||||
// 3. Gitea's Sessioner doesn't see the session cookie, so it generates a new session id, and returns it to browser
|
|
||||||
// 4. then the browser accepts the empty session, then the user is logged out
|
|
||||||
// So in this case, we should remove the session cookie from the response header
|
|
||||||
removeSessionCookieHeader(ctx.Resp)
|
|
||||||
}
|
|
||||||
http.Redirect(ctx.Resp, ctx.Req, location, code)
|
http.Redirect(ctx.Resp, ctx.Req, location, code)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,24 +0,0 @@
|
|||||||
// Copyright 2023 The Gitea Authors. All rights reserved.
|
|
||||||
// SPDX-License-Identifier: MIT
|
|
||||||
|
|
||||||
package context
|
|
||||||
|
|
||||||
import (
|
|
||||||
"net/http"
|
|
||||||
"net/http/httptest"
|
|
||||||
"testing"
|
|
||||||
|
|
||||||
"code.gitea.io/gitea/modules/setting"
|
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
|
||||||
)
|
|
||||||
|
|
||||||
func TestRemoveSessionCookieHeader(t *testing.T) {
|
|
||||||
w := httptest.NewRecorder()
|
|
||||||
w.Header().Add("Set-Cookie", (&http.Cookie{Name: setting.SessionConfig.CookieName, Value: "foo"}).String())
|
|
||||||
w.Header().Add("Set-Cookie", (&http.Cookie{Name: "other", Value: "bar"}).String())
|
|
||||||
assert.Len(t, w.Header().Values("Set-Cookie"), 2)
|
|
||||||
removeSessionCookieHeader(w)
|
|
||||||
assert.Len(t, w.Header().Values("Set-Cookie"), 1)
|
|
||||||
assert.Contains(t, "other=bar", w.Header().Get("Set-Cookie"))
|
|
||||||
}
|
|
@ -4,7 +4,6 @@
|
|||||||
package setting
|
package setting
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
|
||||||
"net"
|
"net"
|
||||||
"net/mail"
|
"net/mail"
|
||||||
"strings"
|
"strings"
|
||||||
@ -199,7 +198,7 @@ func loadMailerFrom(rootCfg ConfigProvider) {
|
|||||||
ips := tryResolveAddr(MailService.SMTPAddr)
|
ips := tryResolveAddr(MailService.SMTPAddr)
|
||||||
if MailService.Protocol == "smtp" {
|
if MailService.Protocol == "smtp" {
|
||||||
for _, ip := range ips {
|
for _, ip := range ips {
|
||||||
if !ip.IP.IsLoopback() {
|
if !ip.IsLoopback() {
|
||||||
log.Warn("connecting over insecure SMTP protocol to non-local address is not recommended")
|
log.Warn("connecting over insecure SMTP protocol to non-local address is not recommended")
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
@ -259,21 +258,20 @@ func loadNotifyMailFrom(rootCfg ConfigProvider) {
|
|||||||
log.Info("Notify Mail Service Enabled")
|
log.Info("Notify Mail Service Enabled")
|
||||||
}
|
}
|
||||||
|
|
||||||
func tryResolveAddr(addr string) []net.IPAddr {
|
func tryResolveAddr(addr string) []net.IP {
|
||||||
if strings.HasPrefix(addr, "[") && strings.HasSuffix(addr, "]") {
|
if strings.HasPrefix(addr, "[") && strings.HasSuffix(addr, "]") {
|
||||||
addr = addr[1 : len(addr)-1]
|
addr = addr[1 : len(addr)-1]
|
||||||
}
|
}
|
||||||
ip := net.ParseIP(addr)
|
ip := net.ParseIP(addr)
|
||||||
if ip != nil {
|
if ip != nil {
|
||||||
return []net.IPAddr{{IP: ip}}
|
ips := make([]net.IP, 1)
|
||||||
|
ips[0] = ip
|
||||||
|
return ips
|
||||||
}
|
}
|
||||||
|
ips, err := net.LookupIP(addr)
|
||||||
ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
|
|
||||||
defer cancel()
|
|
||||||
ips, err := net.DefaultResolver.LookupIPAddr(ctx, addr)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Warn("could not look up mailer.SMTP_ADDR: %v", err)
|
log.Warn("could not look up mailer.SMTP_ADDR: %v", err)
|
||||||
return nil
|
return make([]net.IP, 0)
|
||||||
}
|
}
|
||||||
return ips
|
return ips
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user