Skip to content

Commit

Permalink
Return results as boolean, accept player ID for perma ban and fix rem…
Browse files Browse the repository at this point in the history
…ove temp/perma ban due to receiving parsed banlogs not raw banlogs
  • Loading branch information
cemathey committed May 21, 2024
1 parent e8d457f commit 897b0a8
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 13 deletions.
8 changes: 4 additions & 4 deletions rcon/commands.py
Original file line number Diff line number Diff line change
Expand Up @@ -649,11 +649,11 @@ def perma_ban(
== SUCCESS
)

def remove_temp_ban(self, ban_log) -> str:
return self._str_request(f"pardontempban {ban_log}", log_info=True)
def remove_temp_ban(self, ban_log) -> bool:
return self._str_request(f"pardontempban {ban_log}", log_info=True) == SUCCESS

def remove_perma_ban(self, ban_log) -> str:
return self._str_request(f"pardonpermaban {ban_log}", log_info=True)
def remove_perma_ban(self, ban_log) -> bool:
return self._str_request(f"pardonpermaban {ban_log}", log_info=True) == SUCCESS

@_escape_params
def add_admin(self, player_id, role, description) -> bool:
Expand Down
29 changes: 20 additions & 9 deletions rcon/rcon.py
Original file line number Diff line number Diff line change
Expand Up @@ -1175,26 +1175,37 @@ def temp_ban(

def remove_temp_ban(
self, ban_log: str | None = None, player_id: str | None = None
) -> str:
"""Remove a temp ban by steam ID or game server ban log"""
) -> bool:
"""Remove a temp ban by player ID or game server ban log"""
with invalidates(Rcon.get_temp_bans):
if ban_log is not None:
return super().remove_temp_ban(ban_log)
else:
# If searching for a steam ID, we can only unban with the properly
# formatted ban log
bans = self.get_temp_bans()
for raw_ban in bans:
ban = self._struct_ban(raw_ban, type_=TEMP_BAN)
for ban in bans:
if player_id == ban[PLAYER_ID]:
return super().remove_temp_ban(ban_log=raw_ban)
return super().remove_temp_ban(ban_log=ban["raw"])

# Only get here if we weren't passed a ban log, steam ID or the steam ID wasn't banned
raise ValueError(f"{player_id} was not banned")
return False

def remove_perma_ban(self, ban_log) -> str:
def remove_perma_ban(
self, ban_log: str | None = None, player_id: str | None = None
) -> bool:
"""Remove a player ban by player ID or game server ban log"""

# TODO: this doesn't remove the blacklist, pending Abus banlist changes
with invalidates(Rcon.get_perma_bans):
return super().remove_perma_ban(ban_log)
if ban_log is not None:
return super().remove_perma_ban(ban_log)
else:
bans = self.get_perma_bans()
for ban in bans:
if player_id == ban[PLAYER_ID]:
return super().remove_perma_ban(ban_log=ban["raw"])

return False

def perma_ban(self, player_name=None, player_id=None, reason="", by="") -> bool:
with invalidates(Rcon.get_players, Rcon.get_perma_bans):
Expand Down

0 comments on commit 897b0a8

Please sign in to comment.