Merge branch 'MarkusRost-testing-patch-51751' into testing

This commit is contained in:
Frisk 2022-10-04 17:48:42 +02:00
commit a0d8665bc3
No known key found for this signature in database
GPG key ID: 213F7C15068AF8AC
2 changed files with 23 additions and 22 deletions

View file

@ -22,7 +22,7 @@ from src.api.util import embed_helper, sanitize_to_url, parse_mediawiki_changes,
# Order results from most drastic first to less drastic last # Order results from most drastic first to less drastic last
abuselog_results = ["degroup", "blockautopromote", "rangeblock", "block", "disallow", "throttle", "warn", "tag", ""] abuselog_results = ["degroup", "blockautopromote", "rangeblock", "block", "disallow", "throttle", "warn", "tag", ""]
abusefilter_results = lambda string, _, default: {"degroup": _("**Removed from privileged groups**"), "blockautopromote": _("Removed autoconfirmed group"), "rangeblock": _("**IP range blocked**"), "block": _("**Blocked user**"), "disallow": _("Disallowed the action"), "throttle": _("Throttled actions"), "warn": _("Warning issued"), "tag": _("Tagged the edit"), "": _("None")}.get(string, default) abusefilter_results = lambda string, _, default: {"degroup": _("**Removed from privileged groups**"), "blockautopromote": _("**Removed autopromoted groups**"), "rangeblock": _("**IP range blocked**"), "block": _("**Blocked user**"), "disallow": _("Disallowed the action"), "throttle": _("Throttled actions"), "warn": _("Warning issued"), "tag": _("Tagged the edit"), "": _("None")}.get(string, default)
abusefilter_actions = lambda string, _, default: {"edit": _("Edit"), "upload": _("Upload"), "move": _("Move"), "stashupload": _("Stash upload"), "delete": _("Deletion"), "createaccount": _("Account creation"), "autocreateaccount": _("Auto account creation")}.get(string, default) abusefilter_actions = lambda string, _, default: {"edit": _("Edit"), "upload": _("Upload"), "move": _("Move"), "stashupload": _("Stash upload"), "delete": _("Deletion"), "createaccount": _("Account creation"), "autocreateaccount": _("Auto account creation")}.get(string, default)
logger = logging.getLogger("extensions.base") logger = logging.getLogger("extensions.base")
@ -40,16 +40,15 @@ def abuselog_action(results):
return action return action
def abuse_filter_format_user(change, settings): def abuse_filter_is_ip(change):
author = change["user"] is_ip = False
if settings.get("hide_ips", False): try:
try: ipaddress.ip_address(change["user"])
ipaddress.ip_address(change["user"]) except ValueError:
except ValueError: pass
pass else:
else: is_ip = True
author = _("Unregistered user") return is_ip
return author
@formatter.embed(event="abuselog") @formatter.embed(event="abuselog")
@ -57,11 +56,13 @@ def embed_abuselog(ctx: Context, change: dict):
results = change["result"].split(",") results = change["result"].split(",")
action = abuselog_action(results) action = abuselog_action(results)
embed = DiscordMessage(ctx.message_type, action, ctx.webhook_url) embed = DiscordMessage(ctx.message_type, action, ctx.webhook_url)
author = abuse_filter_format_user(change, ctx.settings) embed["title"] = sanitize_to_markdown(change["filter"])
embed["title"] = ctx._("{user} triggered \"{abuse_filter}\"").format(user=author, abuse_filter=sanitize_to_markdown(change["filter"])) embed["url"] = ctx.client.create_article_path("Special:AbuseLog/{entry}".format(entry=change["id"]))
embed.add_field(ctx._("Performed"), abusefilter_actions(change["action"], ctx._, change["action"])) embed.add_field(ctx._("Title"), "[{target}]({target_url})".format(target=change.get("title", ctx._("Unknown")),
embed.add_field(ctx._("Title"), sanitize_to_markdown(change.get("title", ctx._("Unknown")))) target_url=clean_link(ctx.client.create_article_path(sanitize_to_url(change.get("title", ctx._("Unknown")))))), inline=True)
embed.add_field(ctx._("Performed"), abusefilter_actions(change["action"], ctx._, change["action"]), inline=True)
embed.add_field(ctx._("Action taken"), ctx._(", ").join([abusefilter_results(result, ctx._, result) for result in results])) embed.add_field(ctx._("Action taken"), ctx._(", ").join([abusefilter_results(result, ctx._, result) for result in results]))
embed_helper(ctx, embed, change, is_anon=abuse_filter_is_ip(change), set_desc=False)
return embed return embed
@ -69,10 +70,10 @@ def embed_abuselog(ctx: Context, change: dict):
def compact_abuselog(ctx: Context, change: dict): def compact_abuselog(ctx: Context, change: dict):
results = change["result"].split(",") results = change["result"].split(",")
action = abuselog_action(results) action = abuselog_action(results)
author_url = clean_link(ctx.client.create_article_path("User:{user}".format(user=change["user"]))) author, author_url = compact_author(ctx, change, is_anon=abuse_filter_is_ip(change))
author = abuse_filter_format_user(change, ctx.settings) message = ctx._("[{author}]({author_url}) triggered *[{abuse_filter}]({details_url})*, performing the action \"{action}\" on *[{target}]({target_url})* - action taken: {result}.").format(
message = ctx._("[{author}]({author_url}) triggered *{abuse_filter}*, performing the action \"{action}\" on *[{target}]({target_url})* - action taken: {result}.").format(
author=author, author_url=author_url, abuse_filter=sanitize_to_markdown(change["filter"]), author=author, author_url=author_url, abuse_filter=sanitize_to_markdown(change["filter"]),
details_url=clean_link(ctx.client.create_article_path("Special:AbuseLog/{entry}".format(entry=change["id"]))),
action=abusefilter_actions(change["action"], ctx._, change["action"]), target=change.get("title", ctx._("Unknown")), action=abusefilter_actions(change["action"], ctx._, change["action"]), target=change.get("title", ctx._("Unknown")),
target_url=clean_link(ctx.client.create_article_path(sanitize_to_url(change.get("title", ctx._("Unknown"))))), target_url=clean_link(ctx.client.create_article_path(sanitize_to_url(change.get("title", ctx._("Unknown"))))),
result=ctx._(", ").join([abusefilter_results(result, ctx._, result) for result in results])) result=ctx._(", ").join([abusefilter_results(result, ctx._, result) for result in results]))

View file

@ -77,12 +77,12 @@ def compact_summary(ctx: Context) -> str:
return " *({})*".format(ctx.parsedcomment) return " *({})*".format(ctx.parsedcomment)
return "" return ""
def compact_author(ctx: Context, change: dict) -> (Optional[str], Optional[str]): def compact_author(ctx: Context, change: dict, is_anon: Optional[bool] = None) -> (Optional[str], Optional[str]):
"""Returns link to the author and the author itself respecting the settings""" """Returns link to the author and the author itself respecting the settings"""
author, author_url = None, None author, author_url = None, None
if ctx.event != "suppressed": if ctx.event != "suppressed":
author_url = clean_link(ctx.client.create_article_path("User:{user}".format(user=sanitize_to_url(change["user"])))) author_url = clean_link(ctx.client.create_article_path("User:{user}".format(user=sanitize_to_url(change["user"]))))
if "anon" in change: if "anon" in change if is_anon is None else is_anon:
if settings.get("hide_ips", False): if settings.get("hide_ips", False):
author = ctx._("Unregistered user") author = ctx._("Unregistered user")
else: else:
@ -92,7 +92,7 @@ def compact_author(ctx: Context, change: dict) -> (Optional[str], Optional[str])
return author, author_url return author, author_url
def embed_helper(ctx: Context, message: DiscordMessage, change: dict, set_user=True, set_edit_meta=True, set_desc=True) -> None: def embed_helper(ctx: Context, message: DiscordMessage, change: dict, set_user=True, set_edit_meta=True, set_desc=True, is_anon: Optional[bool] = None) -> None:
"""Helps in preparing common edit/log fields for events. Passed arguments automatically become saturated with needed data. """Helps in preparing common edit/log fields for events. Passed arguments automatically become saturated with needed data.
All automatic setups can be disabled by setting relevant variable to False All automatic setups can be disabled by setting relevant variable to False
@ -103,7 +103,7 @@ def embed_helper(ctx: Context, message: DiscordMessage, change: dict, set_user=T
setting default description (to ctx.parsedcomment)""" setting default description (to ctx.parsedcomment)"""
if set_user: if set_user:
author = None author = None
if "anon" in change: if "anon" in change if is_anon is None else is_anon:
author_url = ctx.client.create_article_path("Special:Contributions/{user}".format(user=sanitize_to_url(change["user"]))) author_url = ctx.client.create_article_path("Special:Contributions/{user}".format(user=sanitize_to_url(change["user"])))
ip_mapper = ctx.client.get_ipmapper() ip_mapper = ctx.client.get_ipmapper()
logger.debug("current user: {} with cache of IPs: {}".format(change["user"], ip_mapper.keys())) logger.debug("current user: {} with cache of IPs: {}".format(change["user"], ip_mapper.keys()))