Skip to content

Commit 7922431

Browse files
authored
Merge branch 'main' into fix-api-user-teams
2 parents b6ddc2a + 6d31814 commit 7922431

File tree

13 files changed

+61
-20
lines changed

13 files changed

+61
-20
lines changed

models/asymkey/gpg_key.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,15 @@ func (key *GPGKey) AfterLoad(session *xorm.Session) {
6363
}
6464
}
6565

66+
// PaddedKeyID show KeyID padded to 16 characters
67+
func (key *GPGKey) PaddedKeyID() string {
68+
if len(key.KeyID) > 15 {
69+
return key.KeyID
70+
}
71+
zeros := "0000000000000000"
72+
return zeros[0:16-len(key.KeyID)] + key.KeyID
73+
}
74+
6675
// ListGPGKeys returns a list of public keys belongs to given user.
6776
func ListGPGKeys(ctx context.Context, uid int64, listOptions db.ListOptions) ([]*GPGKey, error) {
6877
sess := db.GetEngine(ctx).Table(&GPGKey{}).Where("owner_id=? AND primary_key_id=''", uid)

modules/graceful/manager.go

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,12 @@ const (
2424
stateTerminate
2525
)
2626

27-
// There are three places that could inherit sockets:
27+
// There are some places that could inherit sockets:
2828
//
2929
// * HTTP or HTTPS main listener
30+
// * HTTP or HTTPS install listener
3031
// * HTTP redirection fallback
31-
// * SSH
32+
// * Builtin SSH listener
3233
//
3334
// If you add an additional place you must increment this number
3435
// and add a function to call manager.InformCleanup if it's not going to be used
@@ -305,8 +306,9 @@ func (g *Manager) setState(st state) {
305306
g.state = st
306307
}
307308

308-
// InformCleanup tells the cleanup wait group that we have either taken a listener
309-
// or will not be taking a listener
309+
// InformCleanup tells the cleanup wait group that we have either taken a listener or will not be taking a listener.
310+
// At the moment the total number of servers (numberOfServersToCreate) are pre-defined as a const before global init,
311+
// so this function MUST be called if a server is not used.
310312
func (g *Manager) InformCleanup() {
311313
g.createServerWaitGroup.Done()
312314
}

modules/graceful/manager_windows.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -114,9 +114,9 @@ func (g *Manager) start() {
114114
// Execute makes Manager implement svc.Handler
115115
func (g *Manager) Execute(args []string, changes <-chan svc.ChangeRequest, status chan<- svc.Status) (svcSpecificEC bool, exitCode uint32) {
116116
if setting.StartupTimeout > 0 {
117-
status <- svc.Status{State: svc.StartPending}
118-
} else {
119117
status <- svc.Status{State: svc.StartPending, WaitHint: uint32(setting.StartupTimeout / time.Millisecond)}
118+
} else {
119+
status <- svc.Status{State: svc.StartPending}
120120
}
121121

122122
log.Trace("Awaiting server start-up")

modules/ssh/init.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import (
1818

1919
func Init() error {
2020
if setting.SSH.Disabled {
21+
builtinUnused()
2122
return nil
2223
}
2324

modules/templates/helper.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -453,6 +453,7 @@ func NewFuncMap() []template.FuncMap {
453453
}
454454
return items
455455
},
456+
"HasPrefix": strings.HasPrefix,
456457
}}
457458
}
458459

options/locale/locale_pt-BR.ini

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1797,6 +1797,7 @@ settings.tracker_issue_style=Formato de número do issue tracker externo
17971797
settings.tracker_issue_style.numeric=Numérico
17981798
settings.tracker_issue_style.alphanumeric=Alfanumérico
17991799
settings.tracker_issue_style.regexp=Expressão Regular
1800+
settings.tracker_issue_style.regexp_pattern=Padrão de expressão regular
18001801
settings.tracker_url_format_desc=Use os espaços reservados <code>{user}</code>, <code>{repo}</code> e <code>{index}</code> para o nome de usuário, nome do repositório e o índice de problemas.
18011802
settings.enable_timetracker=Habilitar Cronômetro
18021803
settings.allow_only_contributors_to_track_time=Permitir que apenas os colaboradores acompanhem o contador de tempo
@@ -2771,6 +2772,7 @@ config.mailer_config=Configuração de Envio de E-mail
27712772
config.mailer_enabled=Habilitado
27722773
config.mailer_name=Nome
27732774
config.mailer_protocol=Protocolo
2775+
config.mailer_smtp_addr=Addr SMTP
27742776
config.mailer_smtp_port=Porta SMTP
27752777
config.mailer_user=Usuário
27762778
config.mailer_use_sendmail=Usar o Sendmail

routers/api/v1/user/gpg_key.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ package user
77
import (
88
"fmt"
99
"net/http"
10+
"strings"
1011

1112
asymkey_model "code.gitea.io/gitea/models/asymkey"
1213
"code.gitea.io/gitea/models/db"
@@ -177,6 +178,12 @@ func VerifyUserGPGKey(ctx *context.APIContext) {
177178
token := asymkey_model.VerificationToken(ctx.Doer, 1)
178179
lastToken := asymkey_model.VerificationToken(ctx.Doer, 0)
179180

181+
form.KeyID = strings.TrimLeft(form.KeyID, "0")
182+
if form.KeyID == "" {
183+
ctx.NotFound()
184+
return
185+
}
186+
180187
_, err := asymkey_model.VerifyGPGKey(ctx.Doer.ID, form.KeyID, token, form.Signature)
181188
if err != nil && asymkey_model.IsErrGPGInvalidTokenSignature(err) {
182189
_, err = asymkey_model.VerifyGPGKey(ctx.Doer.ID, form.KeyID, lastToken, form.Signature)

services/migrations/dump.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -560,6 +560,10 @@ func (g *RepositoryDumper) Finish() error {
560560

561561
// DumpRepository dump repository according MigrateOptions to a local directory
562562
func DumpRepository(ctx context.Context, baseDir, ownerName string, opts base.MigrateOptions) error {
563+
doer, err := user_model.GetAdminUser()
564+
if err != nil {
565+
return err
566+
}
563567
downloader, err := newDownloader(ctx, ownerName, opts)
564568
if err != nil {
565569
return err
@@ -569,7 +573,7 @@ func DumpRepository(ctx context.Context, baseDir, ownerName string, opts base.Mi
569573
return err
570574
}
571575

572-
if err := migrateRepository(downloader, uploader, opts, nil); err != nil {
576+
if err := migrateRepository(doer, downloader, uploader, opts, nil); err != nil {
573577
if err1 := uploader.Rollback(); err1 != nil {
574578
log.Error("rollback failed: %v", err1)
575579
}
@@ -641,7 +645,7 @@ func RestoreRepository(ctx context.Context, baseDir, ownerName, repoName string,
641645
return err
642646
}
643647

644-
if err = migrateRepository(downloader, uploader, migrateOpts, nil); err != nil {
648+
if err = migrateRepository(doer, downloader, uploader, migrateOpts, nil); err != nil {
645649
if err1 := uploader.Rollback(); err1 != nil {
646650
log.Error("rollback failed: %v", err1)
647651
}

services/migrations/gitea_uploader_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ func TestGiteaUploadRepo(t *testing.T) {
4646
uploader = NewGiteaLocalUploader(graceful.GetManager().HammerContext(), user, user.Name, repoName)
4747
)
4848

49-
err := migrateRepository(downloader, uploader, base.MigrateOptions{
49+
err := migrateRepository(user, downloader, uploader, base.MigrateOptions{
5050
CloneAddr: "https://github.com/go-xorm/builder",
5151
RepoName: repoName,
5252
AuthUsername: "",

services/migrations/migrate.go

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ func MigrateRepository(ctx context.Context, doer *user_model.User, ownerName str
128128
uploader := NewGiteaLocalUploader(ctx, doer, ownerName, opts.RepoName)
129129
uploader.gitServiceType = opts.GitServiceType
130130

131-
if err := migrateRepository(downloader, uploader, opts, messenger); err != nil {
131+
if err := migrateRepository(doer, downloader, uploader, opts, messenger); err != nil {
132132
if err1 := uploader.Rollback(); err1 != nil {
133133
log.Error("rollback failed: %v", err1)
134134
}
@@ -177,7 +177,7 @@ func newDownloader(ctx context.Context, ownerName string, opts base.MigrateOptio
177177
// migrateRepository will download information and then upload it to Uploader, this is a simple
178178
// process for small repository. For a big repository, save all the data to disk
179179
// before upload is better
180-
func migrateRepository(downloader base.Downloader, uploader base.Uploader, opts base.MigrateOptions, messenger base.Messenger) error {
180+
func migrateRepository(doer *user_model.User, downloader base.Downloader, uploader base.Uploader, opts base.MigrateOptions, messenger base.Messenger) error {
181181
if messenger == nil {
182182
messenger = base.NilMessenger
183183
}
@@ -198,6 +198,21 @@ func migrateRepository(downloader base.Downloader, uploader base.Uploader, opts
198198
return err
199199
}
200200

201+
// If the downloader is not a RepositoryRestorer then we need to recheck the CloneURL
202+
if _, ok := downloader.(*RepositoryRestorer); !ok {
203+
// Now the clone URL can be rewritten by the downloader so we must recheck
204+
if err := IsMigrateURLAllowed(repo.CloneURL, doer); err != nil {
205+
return err
206+
}
207+
208+
// And so can the original URL too so again we must recheck
209+
if repo.OriginalURL != "" {
210+
if err := IsMigrateURLAllowed(repo.OriginalURL, doer); err != nil {
211+
return err
212+
}
213+
}
214+
}
215+
201216
log.Trace("migrating git data from %s", repo.CloneURL)
202217
messenger("repo.migrate.migrating_git")
203218
if err = uploader.CreateRepo(repo, opts); err != nil {

templates/repo/commit_page.tmpl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,7 @@
222222
{{.Verification.SigningSSHKey.Fingerprint}}
223223
{{else}}
224224
<span class="ui text mr-3">{{.locale.Tr "repo.commits.gpg_key_id"}}:</span>
225-
{{.Verification.SigningKey.KeyID}}
225+
{{.Verification.SigningKey.PaddedKeyID}}
226226
{{end}}
227227
{{else}}
228228
{{svg "octicon-shield-lock" 16 "mr-3"}}
@@ -231,7 +231,7 @@
231231
{{.Verification.SigningSSHKey.Fingerprint}}
232232
{{else}}
233233
<span class="ui text mr-3 tooltip" data-content="{{.locale.Tr "gpg.default_key"}}">{{.locale.Tr "repo.commits.gpg_key_id"}}:</span>
234-
{{.Verification.SigningKey.KeyID}}
234+
{{.Verification.SigningKey.PaddedKeyID}}
235235
{{end}}
236236
{{end}}
237237
{{else if .Verification.Warning}}
@@ -241,14 +241,14 @@
241241
{{.Verification.SigningSSHKey.Fingerprint}}
242242
{{else}}
243243
<span class="ui text mr-3">{{.locale.Tr "repo.commits.gpg_key_id"}}:</span>
244-
{{.Verification.SigningKey.KeyID}}
244+
{{.Verification.SigningKey.PaddedKeyID}}
245245
{{end}}
246246
{{else}}
247247
{{if .Verification.SigningKey}}
248248
{{if ne .Verification.SigningKey.KeyID ""}}
249249
{{svg "octicon-shield" 16 "mr-3"}}
250250
<span class="ui text mr-3">{{.locale.Tr "repo.commits.gpg_key_id"}}:</span>
251-
{{.Verification.SigningKey.KeyID}}
251+
{{.Verification.SigningKey.PaddedKeyID}}
252252
{{end}}
253253
{{end}}
254254
{{if .Verification.SigningSSHKey}}

templates/repo/header.tmpl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@
206206
{{end}}
207207

208208
{{if or (.Permission.CanRead $.UnitTypeWiki) (.Permission.CanRead $.UnitTypeExternalWiki)}}
209-
<a class="{{if .PageIsWiki}}active{{end}} item" href="{{.RepoLink}}/wiki" {{if (.Permission.CanRead $.UnitTypeExternalWiki)}} target="_blank" rel="noopener noreferrer" {{end}}>
209+
<a class="{{if .PageIsWiki}}active{{end}} item" href="{{.RepoLink}}/wiki" {{if and (.Permission.CanRead $.UnitTypeExternalWiki) (not (HasPrefix ((.Repository.MustGetUnit $.UnitTypeExternalWiki).ExternalWikiConfig.ExternalWikiURL) (.Repository.HTMLURL)))}} target="_blank" rel="noopener noreferrer" {{end}}>
210210
{{svg "octicon-book"}} {{.locale.Tr "repo.wiki"}}
211211
</a>
212212
{{end}}

templates/user/settings/keys_gpg.tmpl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
<input readonly="" value="{{.TokenToSign}}">
2323
<div class="help">
2424
<p>{{.locale.Tr "settings.gpg_token_help"}}</p>
25-
<p><code>{{$.locale.Tr "settings.gpg_token_code" .TokenToSign .KeyID}}</code></p>
25+
<p><code>{{$.locale.Tr "settings.gpg_token_code" .TokenToSign .PaddedKeyID}}</code></p>
2626
</div>
2727
</div>
2828
<div class="field">
@@ -64,8 +64,8 @@
6464
<span class="tooltip" data-content="{{$.locale.Tr "settings.gpg_key_matched_identities_long"}}">{{svg "octicon-mail"}} {{$.locale.Tr "settings.gpg_key_matched_identities"}} {{range .Emails}}<strong>{{.Email}} </strong>{{end}}</span>
6565
{{end}}
6666
<div class="print meta">
67-
<b>{{$.locale.Tr "settings.key_id"}}:</b> {{.KeyID}}
68-
<b>{{$.locale.Tr "settings.subkeys"}}:</b> {{range .SubsKey}} {{.KeyID}} {{end}}
67+
<b>{{$.locale.Tr "settings.key_id"}}:</b> {{.PaddedKeyID}}
68+
<b>{{$.locale.Tr "settings.subkeys"}}:</b> {{range .SubsKey}} {{.PaddedKeyID}} {{end}}
6969
</div>
7070
<div class="activity meta">
7171
<i>{{$.locale.Tr "settings.add_on"}} <span>{{.AddedUnix.FormatShort}}</span></i>
@@ -87,7 +87,7 @@
8787
<input readonly="" value="{{$.TokenToSign}}">
8888
<div class="help">
8989
<p>{{$.locale.Tr "settings.gpg_token_help"}}</p>
90-
<p><code>{{$.locale.Tr "settings.gpg_token_code" $.TokenToSign .KeyID}}</code></p>
90+
<p><code>{{$.locale.Tr "settings.gpg_token_code" $.TokenToSign .PaddedKeyID}}</code></p>
9191
</div>
9292
<br>
9393
</div>

0 commit comments

Comments
 (0)