Skip to content

Commit c01ad82

Browse files
committed
Only show Followers that current user can access (go-gitea#20220)
Users who are following or being followed by a user should only be displayed if the viewing user can see them. Signed-off-by: Andrew Thornton <[email protected]>
2 parents 395a08c + 6efbe49 commit c01ad82

File tree

393 files changed

+5021
-4223
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

393 files changed

+5021
-4223
lines changed

Makefile

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ else
1717
DIST := dist
1818
DIST_DIRS := $(DIST)/binaries $(DIST)/release
1919
IMPORT := code.gitea.io/gitea
20-
export GO111MODULE=on
2120

2221
GO ?= go
2322
SHASUM ?= shasum -a 256
@@ -363,7 +362,7 @@ test\#%:
363362
coverage:
364363
grep '^\(mode: .*\)\|\(.*:[0-9]\+\.[0-9]\+,[0-9]\+\.[0-9]\+ [0-9]\+ [0-9]\+\)$$' coverage.out > coverage-bodged.out
365364
grep '^\(mode: .*\)\|\(.*:[0-9]\+\.[0-9]\+,[0-9]\+\.[0-9]\+ [0-9]\+ [0-9]\+\)$$' integration.coverage.out > integration.coverage-bodged.out
366-
GO111MODULE=on $(GO) run build/gocovmerge.go integration.coverage-bodged.out coverage-bodged.out > coverage.all || (echo "gocovmerge failed"; echo "integration.coverage.out"; cat integration.coverage.out; echo "coverage.out"; cat coverage.out; exit 1)
365+
$(GO) run build/gocovmerge.go integration.coverage-bodged.out coverage-bodged.out > coverage.all || (echo "gocovmerge failed"; echo "integration.coverage.out"; cat integration.coverage.out; echo "coverage.out"; cat coverage.out; exit 1)
367366

368367
.PHONY: unit-test-coverage
369368
unit-test-coverage:
@@ -754,11 +753,11 @@ update-translations:
754753

755754
.PHONY: generate-license
756755
generate-license:
757-
GO111MODULE=on $(GO) run build/generate-licenses.go
756+
$(GO) run build/generate-licenses.go
758757

759758
.PHONY: generate-gitignore
760759
generate-gitignore:
761-
GO111MODULE=on $(GO) run build/generate-gitignores.go
760+
$(GO) run build/generate-gitignores.go
762761

763762
.PHONY: generate-images
764763
generate-images: | node_modules

SECURITY.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,12 @@ Please **DO NOT** file a public issue, instead send your report privately to `se
1111

1212
Due to the sensitive nature of security information, you can use below GPG public key encrypt your mail body.
1313

14-
The PGP key is valid until June 24, 2024.
15-
Key ID: 6FCD2D5B
16-
Key Type: RSA
17-
Expires: 6/24/2024
18-
Key Size: 4096/4096
19-
Fingerprint: 3DE0 3D1E 144A 7F06 9359 99DC AAFD 2381 6FCD 2D5B
14+
The PGP key is valid until June 24, 2024.
15+
Key ID: 6FCD2D5B
16+
Key Type: RSA
17+
Expires: 6/24/2024
18+
Key Size: 4096/4096
19+
Fingerprint: 3DE0 3D1E 144A 7F06 9359 99DC AAFD 2381 6FCD 2D5B
2020
UserID: Gitea Security <[email protected]>
2121

2222
```

cmd/admin_auth_ldap.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,10 @@ var (
3434
Name: "not-active",
3535
Usage: "Deactivate the authentication source.",
3636
},
37+
cli.BoolFlag{
38+
Name: "active",
39+
Usage: "Activate the authentication source.",
40+
},
3741
cli.StringFlag{
3842
Name: "security-protocol",
3943
Usage: "Security protocol name.",
@@ -117,6 +121,10 @@ var (
117121
Name: "synchronize-users",
118122
Usage: "Enable user synchronization.",
119123
},
124+
cli.BoolFlag{
125+
Name: "disable-synchronize-users",
126+
Usage: "Disable user synchronization.",
127+
},
120128
cli.UintFlag{
121129
Name: "page-size",
122130
Usage: "Search page size.",
@@ -183,9 +191,15 @@ func parseAuthSource(c *cli.Context, authSource *auth.Source) {
183191
if c.IsSet("not-active") {
184192
authSource.IsActive = !c.Bool("not-active")
185193
}
194+
if c.IsSet("active") {
195+
authSource.IsActive = c.Bool("active")
196+
}
186197
if c.IsSet("synchronize-users") {
187198
authSource.IsSyncEnabled = c.Bool("synchronize-users")
188199
}
200+
if c.IsSet("disable-synchronize-users") {
201+
authSource.IsSyncEnabled = !c.Bool("disable-synchronize-users")
202+
}
189203
}
190204

191205
// parseLdapConfig assigns values on config according to command line flags.

cmd/admin_auth_ldap_test.go

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -858,6 +858,36 @@ func TestUpdateLdapBindDn(t *testing.T) {
858858
},
859859
errMsg: "Invalid authentication type. expected: LDAP (via BindDN), actual: OAuth2",
860860
},
861+
// case 24
862+
{
863+
args: []string{
864+
"ldap-test",
865+
"--id", "24",
866+
"--name", "ldap (via Bind DN) flip 'active' and 'user sync' attributes",
867+
"--active",
868+
"--disable-synchronize-users",
869+
},
870+
id: 24,
871+
existingAuthSource: &auth.Source{
872+
Type: auth.LDAP,
873+
IsActive: false,
874+
IsSyncEnabled: true,
875+
Cfg: &ldap.Source{
876+
Name: "ldap (via Bind DN) flip 'active' and 'user sync' attributes",
877+
Enabled: true,
878+
},
879+
},
880+
authSource: &auth.Source{
881+
Type: auth.LDAP,
882+
Name: "ldap (via Bind DN) flip 'active' and 'user sync' attributes",
883+
IsActive: true,
884+
IsSyncEnabled: false,
885+
Cfg: &ldap.Source{
886+
Name: "ldap (via Bind DN) flip 'active' and 'user sync' attributes",
887+
Enabled: true,
888+
},
889+
},
890+
},
861891
}
862892

863893
for n, c := range cases {
@@ -1221,6 +1251,33 @@ func TestUpdateLdapSimpleAuth(t *testing.T) {
12211251
},
12221252
errMsg: "Invalid authentication type. expected: LDAP (simple auth), actual: PAM",
12231253
},
1254+
// case 20
1255+
{
1256+
args: []string{
1257+
"ldap-test",
1258+
"--id", "20",
1259+
"--name", "ldap (simple auth) flip 'active' attribute",
1260+
"--active",
1261+
},
1262+
id: 20,
1263+
existingAuthSource: &auth.Source{
1264+
Type: auth.DLDAP,
1265+
IsActive: false,
1266+
Cfg: &ldap.Source{
1267+
Name: "ldap (simple auth) flip 'active' attribute",
1268+
Enabled: true,
1269+
},
1270+
},
1271+
authSource: &auth.Source{
1272+
Type: auth.DLDAP,
1273+
Name: "ldap (simple auth) flip 'active' attribute",
1274+
IsActive: true,
1275+
Cfg: &ldap.Source{
1276+
Name: "ldap (simple auth) flip 'active' attribute",
1277+
Enabled: true,
1278+
},
1279+
},
1280+
},
12241281
}
12251282

12261283
for n, c := range cases {

cmd/dump_repo.go

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010
"strings"
1111

1212
"code.gitea.io/gitea/modules/convert"
13+
"code.gitea.io/gitea/modules/git"
1314
"code.gitea.io/gitea/modules/log"
1415
base "code.gitea.io/gitea/modules/migration"
1516
"code.gitea.io/gitea/modules/setting"
@@ -83,6 +84,11 @@ func runDumpRepository(ctx *cli.Context) error {
8384
return err
8485
}
8586

87+
// migrations.GiteaLocalUploader depends on git module
88+
if err := git.InitSimple(context.Background()); err != nil {
89+
return err
90+
}
91+
8692
log.Info("AppPath: %s", setting.AppPath)
8793
log.Info("AppWorkPath: %s", setting.AppWorkPath)
8894
log.Info("Custom path: %s", setting.CustomPath)
@@ -128,7 +134,9 @@ func runDumpRepository(ctx *cli.Context) error {
128134
} else {
129135
units := strings.Split(ctx.String("units"), ",")
130136
for _, unit := range units {
131-
switch strings.ToLower(unit) {
137+
switch strings.ToLower(strings.TrimSpace(unit)) {
138+
case "":
139+
continue
132140
case "wiki":
133141
opts.Uncyclo = true
134142
case "issues":
@@ -145,6 +153,8 @@ func runDumpRepository(ctx *cli.Context) error {
145153
opts.Comments = true
146154
case "pull_requests":
147155
opts.PullRequests = true
156+
default:
157+
return errors.New("invalid unit: " + unit)
148158
}
149159
}
150160
}

cmd/restore_repo.go

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

1112
"code.gitea.io/gitea/modules/log"
1213
"code.gitea.io/gitea/modules/private"
@@ -37,10 +38,10 @@ var CmdRestoreRepository = cli.Command{
3738
Value: "",
3839
Usage: "Restore destination repository name",
3940
},
40-
cli.StringSliceFlag{
41+
cli.StringFlag{
4142
Name: "units",
42-
Value: nil,
43-
Usage: `Which items will be restored, one or more units should be repeated with this flag.
43+
Value: "",
44+
Usage: `Which items will be restored, one or more units should be separated as comma.
4445
wiki, issues, labels, releases, release_assets, milestones, pull_requests, comments are allowed. Empty means all units.`,
4546
},
4647
cli.BoolFlag{
@@ -55,13 +56,16 @@ func runRestoreRepository(c *cli.Context) error {
5556
defer cancel()
5657

5758
setting.LoadFromExisting()
58-
59+
var units []string
60+
if s := c.String("units"); s != "" {
61+
units = strings.Split(s, ",")
62+
}
5963
statusCode, errStr := private.RestoreRepo(
6064
ctx,
6165
c.String("repo_dir"),
6266
c.String("owner_name"),
6367
c.String("repo_name"),
64-
c.StringSlice("units"),
68+
units,
6569
c.Bool("validation"),
6670
)
6771
if statusCode == http.StatusOK {

custom/conf/app.example.ini

Lines changed: 5 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -475,20 +475,6 @@ ENABLE = true
475475
;; Maximum length of oauth2 token/cookie stored on server
476476
;MAX_TOKEN_LENGTH = 32767
477477

478-
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
479-
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
480-
[U2F]
481-
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
482-
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
483-
;;
484-
;; NOTE: THE DEFAULT VALUES HERE WILL NEED TO BE CHANGED
485-
;; Two Factor authentication with security keys
486-
;; https://developers.yubico.com/U2F/App_ID.html
487-
;;
488-
;; DEPRECATED - this only applies to previously registered security keys using the U2F standard
489-
APP_ID = ; e.g. http://localhost:3000/
490-
491-
492478
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
493479
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
494480
[log]
@@ -1097,6 +1083,9 @@ PATH =
10971083
;; Number of items that are displayed in home feed
10981084
;FEED_PAGING_NUM = 20
10991085
;;
1086+
;; Number of items that are displayed in a single subsitemap
1087+
;SITEMAP_PAGING_NUM = 20
1088+
;;
11001089
;; Number of maximum commits displayed in commit graph.
11011090
;GRAPH_MAX_COMMIT_NUM = 100
11021091
;;
@@ -1687,7 +1676,7 @@ PATH =
16871676
;ENABLED = true
16881677
;;
16891678
;; Comma-separated list of allowed file extensions (`.zip`), mime types (`text/plain`) or wildcard type (`image/*`, `audio/*`, `video/*`). Empty value or `*/*` allows all types.
1690-
;ALLOWED_TYPES = .docx,.gif,.gz,.jpeg,.jpg,.mp4,.log,.pdf,.png,.pptx,.txt,.xlsx,.zip
1679+
;ALLOWED_TYPES = .csv,.docx,.fodg,.fodp,.fods,.fodt,.gif,.gz,.jpeg,.jpg,.log,.md,.mov,.mp4,.odf,.odg,.odp,.ods,.odt,.pdf,.png,.pptx,.svg,.tgz,.txt,.webm,.xls,.xlsx,.zip
16911680
;;
16921681
;; Max size of each file. Defaults to 4MB
16931682
;MAX_SIZE = 4
@@ -2124,7 +2113,7 @@ PATH =
21242113
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
21252114
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
21262115
;; The first locale will be used as the default if user browser's language doesn't match any locale in the list.
2127-
;LANGS = en-US,zh-CN,zh-HK,zh-TW,de-DE,fr-FR,nl-NL,lv-LV,ru-RU,uk-UA,ja-JP,es-ES,pt-BR,pt-PT,pl-PL,bg-BG,it-IT,fi-FI,tr-TR,cs-CZ,sr-SP,sv-SE,ko-KR,el-GR,fa-IR,hu-HU,id-ID,ml-IN
2116+
;LANGS = en-US,zh-CN,zh-HK,zh-TW,de-DE,fr-FR,nl-NL,lv-LV,ru-RU,uk-UA,ja-JP,es-ES,pt-BR,pt-PT,pl-PL,bg-BG,it-IT,fi-FI,tr-TR,cs-CZ,sv-SE,ko-KR,el-GR,fa-IR,hu-HU,id-ID,ml-IN
21282117
;NAMES = English,简体中文,繁體中文(香港),繁體中文(台灣),Deutsch,Français,Nederlands,Latviešu,Русский,Українська,日本語,Español,Português do Brasil,Português de Portugal,Polski,Български,Italiano,Suomi,Türkçe,Čeština,Српски,Svenska,한국어,Ελληνικά,فارسی,Magyar nyelv,Bahasa Indonesia,മലയാളം
21292118

21302119
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

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

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,7 @@ The following configuration set `Content-Type: application/vnd.android.package-a
174174
- `MEMBERS_PAGING_NUM`: **20**: Number of members that are shown in organization members.
175175
- `FEED_MAX_COMMIT_NUM`: **5**: Number of maximum commits shown in one activity feed.
176176
- `FEED_PAGING_NUM`: **20**: Number of items that are displayed in home feed.
177+
- `SITEMAP_PAGING_NUM`: **20**: Number of items that are displayed in a single subsitemap.
177178
- `GRAPH_MAX_COMMIT_NUM`: **100**: Number of maximum commits shown in the commit graph.
178179
- `CODE_COMMENT_LINES`: **4**: Number of line of codes shown for a code comment.
179180
- `DEFAULT_THEME`: **auto**: \[auto, gitea, arc-green\]: Set the default theme for the Gitea install.
@@ -741,7 +742,7 @@ Default templates for project boards:
741742
## Issue and pull request attachments (`attachment`)
742743

743744
- `ENABLED`: **true**: Whether issue and pull request attachments are enabled.
744-
- `ALLOWED_TYPES`: **.docx,.gif,.gz,.jpeg,.jpg,mp4,.log,.pdf,.png,.pptx,.txt,.xlsx,.zip**: Comma-separated list of allowed file extensions (`.zip`), mime types (`text/plain`) or wildcard type (`image/*`, `audio/*`, `video/*`). Empty value or `*/*` allows all types.
745+
- `ALLOWED_TYPES`: **.csv,.docx,.fodg,.fodp,.fods,.fodt,.gif,.gz,.jpeg,.jpg,.log,.md,.mov,.mp4,.odf,.odg,.odp,.ods,.odt,.pdf,.png,.pptx,.svg,.tgz,.txt,.webm,.xls,.xlsx,.zip**: Comma-separated list of allowed file extensions (`.zip`), mime types (`text/plain`) or wildcard type (`image/*`, `audio/*`, `video/*`). Empty value or `*/*` allows all types.
745746
- `MAX_SIZE`: **4**: Maximum size (MB).
746747
- `MAX_FILES`: **5**: Maximum number of attachments that can be uploaded at once.
747748
- `STORAGE_TYPE`: **local**: Storage type for attachments, `local` for local disk or `minio` for s3 compatible object storage service, default is `local` or other name defined with `[storage.xxx]`
@@ -998,13 +999,10 @@ Default templates for project boards:
998999

9991000
## i18n (`i18n`)
10001001

1001-
- `LANGS`: **en-US,zh-CN,zh-HK,zh-TW,de-DE,fr-FR,nl-NL,lv-LV,ru-RU,uk-UA,ja-JP,es-ES,pt-BR,pt-PT,pl-PL,bg-BG,it-IT,fi-FI,tr-TR,cs-CZ,sr-SP,sv-SE,ko-KR,el-GR,fa-IR,hu-HU,id-ID,ml-IN**:
1002+
- `LANGS`: **en-US,zh-CN,zh-HK,zh-TW,de-DE,fr-FR,nl-NL,lv-LV,ru-RU,uk-UA,ja-JP,es-ES,pt-BR,pt-PT,pl-PL,bg-BG,it-IT,fi-FI,tr-TR,cs-CZ,sv-SE,ko-KR,el-GR,fa-IR,hu-HU,id-ID,ml-IN**:
10021003
List of locales shown in language selector. The first locale will be used as the default if user browser's language doesn't match any locale in the list.
10031004
- `NAMES`: **English,简体中文,繁體中文(香港),繁體中文(台灣),Deutsch,Français,Nederlands,Latviešu,Русский,Українська,日本語,Español,Português do Brasil,Português de Portugal,Polski,Български,Italiano,Suomi,Türkçe,Čeština,Српски,Svenska,한국어,Ελληνικά,فارسی,Magyar nyelv,Bahasa Indonesia,മലയാളം**: Visible names corresponding to the locales
10041005

1005-
## U2F (`U2F`) **DEPRECATED**
1006-
- `APP_ID`: **`ROOT_URL`**: Declares the facet of the application which is used for authentication of previously registered U2F keys. Requires HTTPS.
1007-
10081006
## Markup (`markup`)
10091007

10101008
- `MERMAID_MAX_SOURCE_CHARACTERS`: **5000**: Set the maximum size of a Mermaid source. (Set to -1 to disable)

docs/content/doc/advanced/customizing-gitea.en-us.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -335,8 +335,8 @@ The list of themes a user can choose from can be configured with the `THEMES` va
335335

336336
To make a custom theme available to all users:
337337

338-
1. Add a CSS file to `$GITEA_PUBLIC/public/css/theme-<theme-name>.css`.
339-
The value of `$GITEA_PUBLIC` of your instance can be queried by calling `gitea help` and looking up the value of "CustomPath".
338+
1. Add a CSS file to `$GITEA_CUSTOM/public/css/theme-<theme-name>.css`.
339+
The value of `$GITEA_CUSTOM` of your instance can be queried by calling `gitea help` and looking up the value of "CustomPath".
340340
2. Add `<theme-name>` to the comma-separated list of setting `THEMES` in `app.ini`
341341

342342
Community themes are listed in [gitea/awesome-gitea#themes](https://gitea.com/gitea/awesome-gitea#themes).

docs/content/doc/developers/oauth2-provider.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,13 +41,13 @@ To use the Authorization Code Grant as a third party application it is required
4141

4242
## Scopes
4343

44-
Currently Gitea does not support scopes (see [#4300](https://github.com/go-gitea/gitea/issues/4300)) and all third party applications will be granted access to all resources of the user and his/her organizations.
44+
Currently Gitea does not support scopes (see [#4300](https://github.com/go-gitea/gitea/issues/4300)) and all third party applications will be granted access to all resources of the user and their organizations.
4545

4646
## Example
4747

4848
**Note:** This example does not use PKCE.
4949

50-
1. Redirect to user to the authorization endpoint in order to get his/her consent for accessing the resources:
50+
1. Redirect to user to the authorization endpoint in order to get their consent for accessing the resources:
5151

5252
```curl
5353
https://[YOUR-GITEA-URL]/login/oauth/authorize?client_id=CLIENT_ID&redirect_uri=REDIRECT_URI& response_type=code&state=STATE

docs/content/doc/developers/oauth2-provider.zh-tw.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ Gitea 支援作為 OAuth2 提供者,能讓第三方程式能在使用者同意
4646
**備註:** 此範例未使用 PKCE。
4747

4848
1. 重新導向使用者到 authorization endpoint 以獲得他同意授權存取資源:
49-
<!-- 1. Redirect to user to the authorization endpoint in order to get his/her consent for accessing the resources: -->
49+
<!-- 1. Redirect to user to the authorization endpoint in order to get their consent for accessing the resources: -->
5050

5151
```curl
5252
https://[YOUR-GITEA-URL]/login/oauth/authorize?client_id=CLIENT_ID&redirect_uri=REDIRECT_URI& response_type=code&state=STATE

docs/content/doc/features/comparison.zh-tw.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ menu:
5050
| 有寫入權限的儲存庫 Token ||||||||
5151
| 內建 Container Registry | [](https://github.com/go-gitea/gitea/issues/2316) |||||||
5252
| 對外部 Git 鏡像 ||||||||
53-
| FIDO U2F (2FA) ||||||||
53+
| FIDO (2FA) ||||||||
5454
| 內建 CI/CD ||||||||
5555
| 子群組: 群組中的群組 ||||||||
5656

go.mod

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ require (
6666
github.com/mattn/go-isatty v0.0.14
6767
github.com/mattn/go-sqlite3 v1.14.12
6868
github.com/mholt/archiver/v3 v3.5.1
69-
github.com/microcosm-cc/bluemonday v1.0.18
69+
github.com/microcosm-cc/bluemonday v1.0.19
7070
github.com/minio/minio-go/v7 v7.0.26
7171
github.com/msteinert/pam v1.0.0
7272
github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646
@@ -93,9 +93,9 @@ require (
9393
go.jolheiser.com/hcaptcha v0.0.4
9494
go.jolheiser.com/pwn v0.0.3
9595
golang.org/x/crypto v0.0.0-20220507011949-2cf3adece122
96-
golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4
96+
golang.org/x/net v0.0.0-20220630215102-69896b714898
9797
golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5
98-
golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6
98+
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a
9999
golang.org/x/text v0.3.7
100100
golang.org/x/tools v0.1.10
101101
gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df

0 commit comments

Comments
 (0)