Skip to content

Commit 51c8e7a

Browse files
committed
Merge remote-tracking branch 'giteaofficial/main'
* giteaofficial/main: [skip ci] Updated translations via Crowdin Use `strings.Cut` for GIT_PROTOCOL value (go-gitea#20638) Fix the admin mailer config display (go-gitea#20633) Use correct page size for link header pagination (go-gitea#20546) Fix package upload for files >32mb (go-gitea#20622) Add info about Wire 2 when Git over SSH (go-gitea#20619) Enable Wire 2 for Internal SSH Server (go-gitea#20616)
2 parents 93acb7e + 7baa7cb commit 51c8e7a

File tree

11 files changed

+296
-17
lines changed

11 files changed

+296
-17
lines changed

custom/conf/app.example.ini

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -632,6 +632,7 @@ ROUTER = console
632632
;GC_ARGS =
633633
;;
634634
;; If use git wire protocol version 2 when git version >= 2.18, default is true, set to false when you always want git wire protocol version 1
635+
;; To enable this for Git over SSH when using a OpenSSH server, add `AcceptEnv GIT_PROTOCOL` to your sshd_config file.
635636
;ENABLE_AUTO_GIT_WIRE_PROTOCOL = true
636637
;;
637638
;; Respond to pushes to a non-default branch with a URL for creating a Pull Request (if the repository has them enabled)

docs/content/doc/advanced/config-cheat-sheet.en-us.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -964,7 +964,8 @@ Default templates for project boards:
964964
- `COMMITS_RANGE_SIZE`: **50**: Set the default commits range size
965965
- `BRANCHES_RANGE_SIZE`: **20**: Set the default branches range size
966966
- `GC_ARGS`: **\<empty\>**: Arguments for command `git gc`, e.g. `--aggressive --auto`. See more on http://git-scm.com/docs/git-gc/
967-
- `ENABLE_AUTO_GIT_WIRE_PROTOCOL`: **true**: If use Git wire protocol version 2 when Git version >= 2.18, default is true, set to false when you always want Git wire protocol version 1
967+
- `ENABLE_AUTO_GIT_WIRE_PROTOCOL`: **true**: If use Git wire protocol version 2 when Git version >= 2.18, default is true, set to false when you always want Git wire protocol version 1.
968+
To enable this for Git over SSH when using a OpenSSH server, add `AcceptEnv GIT_PROTOCOL` to your sshd_config file.
968969
- `PULL_REQUEST_PUSH_MESSAGE`: **true**: Respond to pushes to a non-default branch with a URL for creating a Pull Request (if the repository has them enabled)
969970
- `VERBOSE_PUSH`: **true**: Print status information about pushes as they are being processed.
970971
- `VERBOSE_PUSH_DELAY`: **5s**: Only print verbose information if push takes longer than this delay.
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
// Copyright 2022 The Gitea Authors. All rights reserved.
2+
// Use of this source code is governed by a MIT-style
3+
// license that can be found in the LICENSE file.
4+
5+
package packages
6+
7+
import (
8+
"fmt"
9+
"io"
10+
"strings"
11+
"testing"
12+
13+
"github.com/stretchr/testify/assert"
14+
)
15+
16+
func TestHashedBuffer(t *testing.T) {
17+
cases := []struct {
18+
MaxMemorySize int
19+
Data string
20+
HashMD5 string
21+
HashSHA1 string
22+
HashSHA256 string
23+
HashSHA512 string
24+
}{
25+
{5, "test", "098f6bcd4621d373cade4e832627b4f6", "a94a8fe5ccb19ba61c4c0873d391e987982fbbd3", "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08", "ee26b0dd4af7e749aa1a8ee3c10ae9923f618980772e473f8819a5d4940e0db27ac185f8a0e1d5f84f88bc887fd67b143732c304cc5fa9ad8e6f57f50028a8ff"},
26+
{5, "testtest", "05a671c66aefea124cc08b76ea6d30bb", "51abb9636078defbf888d8457a7c76f85c8f114c", "37268335dd6931045bdcdf92623ff819a64244b53d0e746d438797349d4da578", "125d6d03b32c84d492747f79cf0bf6e179d287f341384eb5d6d3197525ad6be8e6df0116032935698f99a09e265073d1d6c32c274591bf1d0a20ad67cba921bc"},
27+
}
28+
29+
for _, c := range cases {
30+
buf, err := CreateHashedBufferFromReader(strings.NewReader(c.Data), c.MaxMemorySize)
31+
assert.NoError(t, err)
32+
33+
assert.EqualValues(t, len(c.Data), buf.Size())
34+
35+
data, err := io.ReadAll(buf)
36+
assert.NoError(t, err)
37+
assert.Equal(t, c.Data, string(data))
38+
39+
hashMD5, hashSHA1, hashSHA256, hashSHA512 := buf.Sums()
40+
assert.Equal(t, c.HashMD5, fmt.Sprintf("%x", hashMD5))
41+
assert.Equal(t, c.HashSHA1, fmt.Sprintf("%x", hashSHA1))
42+
assert.Equal(t, c.HashSHA256, fmt.Sprintf("%x", hashSHA256))
43+
assert.Equal(t, c.HashSHA512, fmt.Sprintf("%x", hashSHA512))
44+
45+
assert.NoError(t, buf.Close())
46+
}
47+
}

modules/ssh/ssh.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,11 +75,20 @@ func sessionHandler(session ssh.Session) {
7575
ctx, cancel := context.WithCancel(session.Context())
7676
defer cancel()
7777

78+
gitProtocol := ""
79+
for _, env := range session.Environ() {
80+
if strings.HasPrefix(env, "GIT_PROTOCOL=") {
81+
_, gitProtocol, _ = strings.Cut(env, "=")
82+
break
83+
}
84+
}
85+
7886
cmd := exec.CommandContext(ctx, setting.AppPath, args...)
7987
cmd.Env = append(
8088
os.Environ(),
8189
"SSH_ORIGINAL_COMMAND="+command,
8290
"SKIP_MINWINSVC=1",
91+
"GIT_PROTOCOL="+gitProtocol,
8392
)
8493

8594
stdout, err := cmd.StdoutPipe()

modules/util/filebuffer/file_backed_buffer.go

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -103,35 +103,45 @@ func (b *FileBackedBuffer) Size() int64 {
103103
return b.size
104104
}
105105

106-
func (b *FileBackedBuffer) switchToReader() {
106+
func (b *FileBackedBuffer) switchToReader() error {
107107
if b.reader != nil {
108-
return
108+
return nil
109109
}
110110

111111
if b.file != nil {
112+
if _, err := b.file.Seek(0, io.SeekStart); err != nil {
113+
return err
114+
}
112115
b.reader = b.file
113116
} else {
114117
b.reader = bytes.NewReader(b.buffer.Bytes())
115118
}
119+
return nil
116120
}
117121

118122
// Read implements io.Reader
119123
func (b *FileBackedBuffer) Read(p []byte) (int, error) {
120-
b.switchToReader()
124+
if err := b.switchToReader(); err != nil {
125+
return 0, err
126+
}
121127

122128
return b.reader.Read(p)
123129
}
124130

125131
// ReadAt implements io.ReaderAt
126132
func (b *FileBackedBuffer) ReadAt(p []byte, off int64) (int, error) {
127-
b.switchToReader()
133+
if err := b.switchToReader(); err != nil {
134+
return 0, err
135+
}
128136

129137
return b.reader.ReadAt(p, off)
130138
}
131139

132140
// Seek implements io.Seeker
133141
func (b *FileBackedBuffer) Seek(offset int64, whence int) (int64, error) {
134-
b.switchToReader()
142+
if err := b.switchToReader(); err != nil {
143+
return 0, err
144+
}
135145

136146
return b.reader.Seek(offset, whence)
137147
}
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
// Copyright 2022 The Gitea Authors. All rights reserved.
2+
// Use of this source code is governed by a MIT-style
3+
// license that can be found in the LICENSE file.
4+
5+
package filebuffer
6+
7+
import (
8+
"io"
9+
"strings"
10+
"testing"
11+
12+
"github.com/stretchr/testify/assert"
13+
)
14+
15+
func TestFileBackedBuffer(t *testing.T) {
16+
cases := []struct {
17+
MaxMemorySize int
18+
Data string
19+
}{
20+
{5, "test"},
21+
{5, "testtest"},
22+
}
23+
24+
for _, c := range cases {
25+
buf, err := CreateFromReader(strings.NewReader(c.Data), c.MaxMemorySize)
26+
assert.NoError(t, err)
27+
28+
assert.EqualValues(t, len(c.Data), buf.Size())
29+
30+
data, err := io.ReadAll(buf)
31+
assert.NoError(t, err)
32+
assert.Equal(t, c.Data, string(data))
33+
34+
assert.NoError(t, buf.Close())
35+
}
36+
}

options/locale/locale_en-US.ini

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2796,16 +2796,19 @@ config.queue_length = Queue Length
27962796
config.deliver_timeout = Deliver Timeout
27972797
config.skip_tls_verify = Skip TLS Verification
27982798

2799-
config.mailer_config = SMTP Mailer Configuration
2799+
config.mailer_config = Mailer Configuration
28002800
config.mailer_enabled = Enabled
2801-
config.mailer_disable_helo = Disable HELO
2801+
config.mailer_enable_helo = Enable HELO
28022802
config.mailer_name = Name
2803-
config.mailer_host = Host
2803+
config.mailer_protocol = Protocol
2804+
config.mailer_smtp_addr = SMTP Addr
2805+
config.mailer_smtp_port = SMTP Port
28042806
config.mailer_user = User
28052807
config.mailer_use_sendmail = Use Sendmail
28062808
config.mailer_sendmail_path = Sendmail Path
28072809
config.mailer_sendmail_args = Extra Arguments to Sendmail
28082810
config.mailer_sendmail_timeout = Sendmail Timeout
2811+
config.mailer_use_dummy = Dummy
28092812
config.test_email_placeholder = Email (e.g. test@example.com)
28102813
config.send_test_mail = Send Testing Email
28112814
config.test_mail_failed = Failed to send a testing email to '%s': %v

options/locale/locale_nl-NL.ini

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1293,11 +1293,13 @@ issues.previous=Vorige
12931293
issues.next=Volgende
12941294
issues.open_title=Open
12951295
issues.closed_title=Gesloten
1296+
issues.draft_title=Concept
12961297
issues.num_comments=%d opmerkingen
12971298
issues.commented_at=`reageerde <a href="#%s">%s</a>`
12981299
issues.delete_comment_confirm=Weet u zeker dat u deze reactie wilt verwijderen?
12991300
issues.context.copy_link=Link kopiëren
13001301
issues.context.quote_reply=Citeer antwoord
1302+
issues.context.reference_issue=Verwijs in nieuw issue
13011303
issues.context.edit=Bewerken
13021304
issues.context.delete=Verwijder
13031305
issues.no_content=Er is nog geen inhoud.
@@ -1323,6 +1325,7 @@ issues.re_request_review=Opnieuw aanvragen review
13231325
issues.is_stale=Er zijn wijzigingen aangebracht in deze PR sinds deze beoordeling
13241326
issues.remove_request_review=Verwijder beoordelingsverzoek
13251327
issues.remove_request_review_block=Kan beoordelingsverzoek niet verwijderen
1328+
issues.dismiss_review=Beoordeling afwijzen
13261329
issues.sign_in_require_desc=<a href="%s">Log in</a> om deel te nemen aan deze discussie.
13271330
issues.edit=Bewerken
13281331
issues.cancel=Annuleren
@@ -1366,13 +1369,21 @@ issues.lock.reason=Reden voor vergrendeling
13661369
issues.lock.title=Vergrendel gesprek over dit probleem.
13671370
issues.unlock.title=Ontgrendel gesprek over dit probleem.
13681371
issues.comment_on_locked=Je kunt geen commentaar geven op een vergrendeld probleem.
1372+
issues.delete=Verwijderen
1373+
issues.delete.title=Deze issue verwijderen?
1374+
issues.delete.text=Wilt u deze issue echt verwijderen? (Dit is permanent en verwijdert alle inhoud. Overweeg om deze issue te sluiten, als u liever deze als archief wilt bijhouden)
13691375
issues.tracker=Tijdregistratie
1376+
issues.start_tracking_short=Start timer
13701377
issues.start_tracking=Start tijdregistratie
13711378
issues.start_tracking_history=`%s is begonnen`
13721379
issues.tracker_auto_close=Timer wordt automatisch gestopt wanneer dit probleem wordt gesloten
1380+
issues.tracking_already_started=`Je houd al tijd bij voor <a href="%s">een ander issue</a>!`
1381+
issues.stop_tracking=Stop timer
13731382
issues.stop_tracking_history=`gestopt met werken aan %s`
1383+
issues.cancel_tracking=Weggooien
13741384
issues.cancel_tracking_history=`tijd bijhouden geannuleerd: %s`
13751385
issues.add_time=Tijd handmatig toevoegen
1386+
issues.del_time=Verwijder deze tijdlog
13761387
issues.add_time_short=Timer toevoegen
13771388
issues.add_time_cancel=Annuleren
13781389
issues.add_time_history=`heeft besteedde tijd toegevoegd: %s`
@@ -1395,10 +1406,13 @@ issues.due_date_form_remove=Verwijder
13951406
issues.due_date_not_writer=Je hebt schrijftoegang in deze repository nodig om de deadline van een kwestie aan te passen.
13961407
issues.due_date_not_set=Geen vervaldatum ingesteld.
13971408
issues.due_date_added=heeft %[2]s de deadline %[1]s toegevoegd
1409+
issues.due_date_modified=de vervaldatum van %[2]s is gewijzigd naar %[1]s[3]s
13981410
issues.due_date_remove=heeft %[2]s de deadline %[1]s verwijderd
13991411
issues.due_date_overdue=Over tijd
14001412
issues.due_date_invalid=De deadline is ongeldig of buiten bereik. Gebruik het formaat 'jjjj-mm-dd'.
14011413
issues.dependency.title=Afhankelijkheden
1414+
issues.dependency.issue_no_dependencies=Geen afhankelijkheden ingesteld.
1415+
issues.dependency.pr_no_dependencies=Geen afhankelijkheden ingesteld.
14021416
issues.dependency.add=Voeg afhankelijkheid toe…
14031417
issues.dependency.cancel=Annuleer
14041418
issues.dependency.remove=Verwijder
@@ -1579,6 +1593,8 @@ pulls.auto_merge_has_pending_schedule=%[1]s heeft deze pull-verzoek automatisch
15791593
pulls.auto_merge_cancel_schedule=Automatisch samenvoegen annuleren
15801594
15811595
1596+
pulls.delete.title=Deze pull-verzoek verwijderen?
1597+
pulls.delete.text=Weet je zeker dat je deze pull-verzoek wilt verwijderen? (Dit zal alle inhoud permanent verwijderen. Overweeg om het te sluiten als je het gearchiveerd wilt houden)
15821598
15831599
milestones.new=Nieuwe mijlpaal
15841600
milestones.closed=%s werd gesloten
@@ -1624,6 +1640,7 @@ signing.wont_sign.commitssigned=De samenvoeging wordt niet ondertekend omdat all
16241640
signing.wont_sign.approved=De samenvoeging wordt niet ondertekend omdat de PR niet is goedgekeurd
16251641
signing.wont_sign.not_signed_in=U bent niet ingelogd
16261642
1643+
ext_wiki=Toegang tot Externe Wiki
16271644
ext_wiki.desc=Koppelen aan een externe wiki.
16281645
16291646
wiki=Wiki
@@ -1648,6 +1665,7 @@ wiki.page_already_exists=Er bestaat al een wiki-pagina met deze naam.
16481665
wiki.reserved_page=De wiki-paginanaam '%s' is gereserveerd.
16491666
wiki.pages=Pagina’s
16501667
wiki.last_updated=Laatst bijgewerkt: %s
1668+
wiki.page_name_desc=Voer een naam in voor deze Wiki pagina. Sommige speciale namen zijn: 'Home', '_Sidebar' en '_Footer'.
16511669
16521670
activity=Activiteit
16531671
activity.period.filter_label=Periode:
@@ -1679,6 +1697,7 @@ activity.closed_issues_count_1=Gesloten problemen
16791697
activity.closed_issues_count_n=Gesloten problemen
16801698
activity.title.issues_1=%d Probleem
16811699
activity.title.issues_n=%d Problemen
1700+
activity.title.issues_closed_from=%s gesloten van %s
16821701
activity.title.issues_created_by=%s gemaakt door %s
16831702
activity.closed_issue_label=Gesloten
16841703
activity.new_issues_count_1=Nieuw probleem
@@ -1716,7 +1735,11 @@ activity.git_stats_deletion_n=%d verwijderingen
17161735
17171736
search=Zoek
17181737
search.search_repo=Zoek repository
1738+
search.fuzzy=Vergelijkbaar
1739+
search.match=Overeenkomst
17191740
search.results=Zoek resultaat voor "%s" in <a href="%s">%s</a>
1741+
search.code_no_results=Geen broncode gevonden die aan uw zoekterm voldoet.
1742+
search.code_search_unavailable=Er is momenteel geen code zoekfunctie beschikbaar. Neem contact op met uw sitebeheerder.
17201743
17211744
settings=Instellingen
17221745
settings.desc=In de instellingen kan je de instellingen van de repository aanpassen
@@ -1734,11 +1757,14 @@ settings.mirror_settings=Kopie Settings
17341757
settings.mirror_settings.direction=Richting
17351758
settings.mirror_settings.direction.pull=Pull
17361759
settings.mirror_settings.direction.push=Push
1760+
settings.mirror_settings.last_update=Laatst bijgewerkt
17371761
settings.mirror_settings.push_mirror.none=Geen spiegels geconfigureerd
1762+
settings.mirror_settings.push_mirror.add=Voeg Push Mirror toe
17381763
settings.sync_mirror=Synchroniseer
17391764
settings.mirror_sync_in_progress=Mirror-synchronisatie is momenteel bezig - kom later terug.
17401765
settings.site=Website
17411766
settings.update_settings=Instellingen bewerken
1767+
settings.branches.update_default_branch=Standaard branch bijwerken
17421768
settings.advanced_settings=Geavanceerde opties
17431769
settings.wiki_desc=Repository-wiki inschakelen
17441770
settings.use_internal_wiki=Ingebouwde wiki gebruiken

0 commit comments

Comments
 (0)