script/fmt now runs golines -m 77 after gofmt, repeating golines until it changes nothing, since one pass can leave a line the next splits. script/fmt-check fails when either would change a file. script/bootstrap installs golines v0.13.0 with go install, pinned to its commit, and checks the installed version with go version -m. The tree is reformatted. The longer lines this makes are fixed by hand: nolint directives moved onto their own line above the statement, one string split, and 20 functions over funlen's 80 lines shortened or split, RunWAF and limitPercentages among them. Model: opus-5-5
This commit is contained in:
1 parent
63e58e326b
commit
7f8a59de04
118 files changed
+9447
-2670
No files matched your search
@@ -106,26 +106,58 @@ var mastodonFormFields = []mastodonBodyField{
|
||||
{http.MethodPost, "/api/v1/admin/domain_blocks", "private_comment="},
|
||||
{http.MethodPost, "/api/v1/admin/domain_blocks", "public_comment="},
|
||||
{http.MethodPost, "/api/v1/admin/ip_blocks", mastodonComment},
|
||||
{http.MethodPost, "/admin/domain_blocks", "domain_block[private_comment]="},
|
||||
{http.MethodPost, "/admin/domain_blocks", "domain_block[public_comment]="},
|
||||
{
|
||||
http.MethodPost,
|
||||
"/admin/domain_blocks",
|
||||
"domain_block[private_comment]=",
|
||||
},
|
||||
{
|
||||
http.MethodPost,
|
||||
"/admin/domain_blocks",
|
||||
"domain_block[public_comment]=",
|
||||
},
|
||||
{http.MethodPost, "/admin/ip_blocks", "ip_block[comment]="},
|
||||
{http.MethodPost, mastodonRules, "rule[text]="},
|
||||
{http.MethodPost, mastodonRules, "rule[hint]="},
|
||||
{http.MethodPost, "/admin/announcements", "announcement[text]="},
|
||||
{http.MethodPost, mastodonBranding, "form_admin_settings[site_title]="},
|
||||
{http.MethodPost, mastodonBranding, "form_admin_settings[site_short_description]="},
|
||||
{
|
||||
http.MethodPost,
|
||||
mastodonBranding,
|
||||
"form_admin_settings[site_short_description]=",
|
||||
},
|
||||
{
|
||||
http.MethodPost, "/admin/settings/about",
|
||||
"form_admin_settings[site_extended_description]=",
|
||||
},
|
||||
{http.MethodPost, "/filters", "custom_filter[title]="},
|
||||
{http.MethodPost, "/filters", "custom_filter[keywords_attributes][0][keyword]="},
|
||||
{http.MethodPost, "/settings/applications", "doorkeeper_application[name]="},
|
||||
{http.MethodPost, "/settings/applications", "doorkeeper_application[website]="},
|
||||
{
|
||||
http.MethodPost,
|
||||
"/filters",
|
||||
"custom_filter[keywords_attributes][0][keyword]=",
|
||||
},
|
||||
{
|
||||
http.MethodPost,
|
||||
"/settings/applications",
|
||||
"doorkeeper_application[name]=",
|
||||
},
|
||||
{
|
||||
http.MethodPost,
|
||||
"/settings/applications",
|
||||
"doorkeeper_application[website]=",
|
||||
},
|
||||
{http.MethodPost, "/settings/aliases", "account_alias[acct]="},
|
||||
{http.MethodPost, "/settings/migration", "account_migration[acct]="},
|
||||
{http.MethodPost, mastodonAccount, "user[invite_request_attributes][text]="},
|
||||
{http.MethodPost, "/admin/accounts/1/action", "admin_account_action[text]="},
|
||||
{
|
||||
http.MethodPost,
|
||||
mastodonAccount,
|
||||
"user[invite_request_attributes][text]=",
|
||||
},
|
||||
{
|
||||
http.MethodPost,
|
||||
"/admin/accounts/1/action",
|
||||
"admin_account_action[text]=",
|
||||
},
|
||||
{http.MethodPost, "/admin/report_notes", "report_note[content]="},
|
||||
{
|
||||
http.MethodPost, "/admin/account_moderation_notes",
|
||||
@@ -149,12 +181,20 @@ var mastodonPasswordForms = []mastodonBodyField{
|
||||
{http.MethodPost, mastodonAccount, mastodonPassword},
|
||||
{http.MethodPost, mastodonAccount, "user[password_confirmation]="},
|
||||
{http.MethodPost, mastodonAccount, "user[current_password]="},
|
||||
{http.MethodPost, "/settings/migration", "account_migration[current_password]="},
|
||||
{
|
||||
http.MethodPost,
|
||||
"/settings/migration",
|
||||
"account_migration[current_password]=",
|
||||
},
|
||||
{
|
||||
http.MethodPost, "/settings/migration/redirect",
|
||||
"form_redirect[current_password]=",
|
||||
},
|
||||
{http.MethodPost, "/settings/delete", "form_delete_confirmation[password]="},
|
||||
{
|
||||
http.MethodPost,
|
||||
"/settings/delete",
|
||||
"form_delete_confirmation[password]=",
|
||||
},
|
||||
{http.MethodPost, mastodonSignUp, passwordField},
|
||||
}
|
||||
|
||||
@@ -181,12 +221,28 @@ var mastodonJSONFields = []mastodonBodyField{
|
||||
},
|
||||
{http.MethodPatch, mastodonEditor, `{"display_name":%s}`},
|
||||
{http.MethodPatch, mastodonEditor, `{"note":%s}`},
|
||||
{http.MethodPatch, mastodonEditor, `{"fields_attributes":[{"name":%s}]}`},
|
||||
{http.MethodPatch, mastodonEditor, `{"fields_attributes":[{"value":%s}]}`},
|
||||
{
|
||||
http.MethodPatch,
|
||||
mastodonEditor,
|
||||
`{"fields_attributes":[{"name":%s}]}`,
|
||||
},
|
||||
{
|
||||
http.MethodPatch,
|
||||
mastodonEditor,
|
||||
`{"fields_attributes":[{"value":%s}]}`,
|
||||
},
|
||||
{http.MethodPatch, mastodonProfile, `{"display_name":%s}`},
|
||||
{http.MethodPatch, mastodonProfile, `{"note":%s}`},
|
||||
{http.MethodPatch, mastodonProfile, `{"fields_attributes":[{"name":%s}]}`},
|
||||
{http.MethodPatch, mastodonProfile, `{"fields_attributes":[{"value":%s}]}`},
|
||||
{
|
||||
http.MethodPatch,
|
||||
mastodonProfile,
|
||||
`{"fields_attributes":[{"name":%s}]}`,
|
||||
},
|
||||
{
|
||||
http.MethodPatch,
|
||||
mastodonProfile,
|
||||
`{"fields_attributes":[{"value":%s}]}`,
|
||||
},
|
||||
{http.MethodPost, mastodonReports, `{"comment":%s}`},
|
||||
{http.MethodPost, "/api/v1/accounts/1/note", `{"comment":%s}`},
|
||||
{http.MethodPost, mastodonSignUp, `{"reason":%s}`},
|
||||
@@ -195,8 +251,16 @@ var mastodonJSONFields = []mastodonBodyField{
|
||||
{http.MethodPost, mastodonInbox, `{"object":{"summary":%s}}`},
|
||||
{http.MethodPost, mastodonInbox, `{"object":{"summaryMap":{"en":%s}}}`},
|
||||
{http.MethodPost, "/ap/users/1/inbox", `{"object":{"name":%s}}`},
|
||||
{http.MethodPost, mastodonInbox, `{"object":{"attachment":[{"name":%s}]}}`},
|
||||
{http.MethodPost, mastodonInbox, `{"object":{"attachment":[{"value":%s}]}}`},
|
||||
{
|
||||
http.MethodPost,
|
||||
mastodonInbox,
|
||||
`{"object":{"attachment":[{"name":%s}]}}`,
|
||||
},
|
||||
{
|
||||
http.MethodPost,
|
||||
mastodonInbox,
|
||||
`{"object":{"attachment":[{"value":%s}]}}`,
|
||||
},
|
||||
{http.MethodPost, mastodonInbox, `{"object":{"oneOf":[{"name":%s}]}}`},
|
||||
{http.MethodPost, mastodonInbox, `{"object":{"anyOf":[{"name":%s}]}}`},
|
||||
}
|
||||
@@ -239,7 +303,12 @@ func mastodonJSON(t *testing.T, sent mastodonBodyField, value string) int {
|
||||
}
|
||||
|
||||
r := request{sent.method, sent.target, []string{jsonBody}}
|
||||
got, _ := inspectBody(t, readingBodies(t), r, fmt.Sprintf(sent.field, quoted))
|
||||
got, _ := inspectBody(
|
||||
t,
|
||||
readingBodies(t),
|
||||
r,
|
||||
fmt.Sprintf(sent.field, quoted),
|
||||
)
|
||||
|
||||
return got.Score
|
||||
}
|
||||
@@ -270,7 +339,11 @@ func mastodonScores(
|
||||
}
|
||||
|
||||
for _, sent := range slices.Concat(mastodonFormFields, mastodonStatusForms) {
|
||||
scores[fmt.Sprintf("%v with %s", sent, value)] = mastodonForm(t, sent, value)
|
||||
scores[fmt.Sprintf("%v with %s", sent, value)] = mastodonForm(
|
||||
t,
|
||||
sent,
|
||||
value,
|
||||
)
|
||||
}
|
||||
|
||||
unescaped, err := url.QueryUnescape(value)
|
||||
@@ -279,7 +352,11 @@ func mastodonScores(
|
||||
}
|
||||
|
||||
for _, sent := range slices.Concat(mastodonJSONFields, mastodonStatusJSON) {
|
||||
scores[fmt.Sprintf("%v with %q", sent, unescaped)] = mastodonJSON(t, sent, unescaped)
|
||||
scores[fmt.Sprintf("%v with %q", sent, unescaped)] = mastodonJSON(
|
||||
t,
|
||||
sent,
|
||||
unescaped,
|
||||
)
|
||||
}
|
||||
|
||||
return scores
|
||||
@@ -316,8 +393,11 @@ func TestMastodonPasswordsPass(t *testing.T) {
|
||||
t.Run("JSON", func(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
r := request{mastodonPasswordJSON.method, mastodonPasswordJSON.target,
|
||||
[]string{jsonBody}}
|
||||
r := request{
|
||||
mastodonPasswordJSON.method,
|
||||
mastodonPasswordJSON.target,
|
||||
[]string{jsonBody},
|
||||
}
|
||||
|
||||
wantRandomPasswordsPass(t, r, "password")
|
||||
wantPasswordAttacksPass(t, r, "password")
|
||||
@@ -332,8 +412,16 @@ func TestMastodonPasswordConfirmationPasses(t *testing.T) {
|
||||
|
||||
wantPasswordFieldsPass(t, []passwordFields{
|
||||
{"/auth/challenge", formData, challenge},
|
||||
{"/settings/two_factor_authentication/otp_authentication", formData, challenge},
|
||||
{"/settings/two_factor_authentication_methods/disable", formData, challenge},
|
||||
{
|
||||
"/settings/two_factor_authentication/otp_authentication",
|
||||
formData,
|
||||
challenge,
|
||||
},
|
||||
{
|
||||
"/settings/two_factor_authentication_methods/disable",
|
||||
formData,
|
||||
challenge,
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
@@ -508,7 +596,11 @@ func TestMastodonReportKeysPassByNameOnReportsOnly(t *testing.T) {
|
||||
{mastodonReport, "false"},
|
||||
{mastodonForwardedReport, "remote.example"},
|
||||
} {
|
||||
report := mastodonBodyField{http.MethodPost, mastodonReports, sent.body}
|
||||
report := mastodonBodyField{
|
||||
http.MethodPost,
|
||||
mastodonReports,
|
||||
sent.body,
|
||||
}
|
||||
if got := mastodonJSON(t, report, sent.value); got >= mastodonThreshold {
|
||||
t.Errorf("%v refused: %d", report, got)
|
||||
}
|
||||
@@ -572,12 +664,20 @@ func TestMastodonUsernamesAndHashtagsSkipOnlyTwoRules(t *testing.T) {
|
||||
}
|
||||
|
||||
// Elsewhere both keep the two rules.
|
||||
signIn := mastodonBodyField{http.MethodPost, mastodonSignIn, mastodonUsername.field}
|
||||
signIn := mastodonBodyField{
|
||||
http.MethodPost,
|
||||
mastodonSignIn,
|
||||
mastodonUsername.field,
|
||||
}
|
||||
if mastodonForm(t, signIn, "python3") < mastodonThreshold {
|
||||
t.Errorf("%v let through", signIn)
|
||||
}
|
||||
|
||||
statuses := mastodonBodyField{http.MethodPost, mastodonStatuses, mastodonHashtag.field}
|
||||
statuses := mastodonBodyField{
|
||||
http.MethodPost,
|
||||
mastodonStatuses,
|
||||
mastodonHashtag.field,
|
||||
}
|
||||
if mastodonJSON(t, statuses, "python3") < mastodonThreshold {
|
||||
t.Errorf("%v let through", statuses)
|
||||
}
|
||||
@@ -617,7 +717,11 @@ func TestMastodonEmailAddressesSkipThreeRules(t *testing.T) {
|
||||
// Elsewhere the address keeps every rule.
|
||||
for _, target := range []string{"/oauth/authorize", "/authorize", "/x/auth"} {
|
||||
sent := mastodonBodyField{http.MethodPost, target, mastodonEmail}
|
||||
if mastodonForm(t, sent, "python3%40example.com") < mastodonThreshold {
|
||||
if mastodonForm(
|
||||
t,
|
||||
sent,
|
||||
"python3%40example.com",
|
||||
) < mastodonThreshold {
|
||||
t.Errorf("%v let through", sent)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user