From 5c92c84a8536ccf200d50d2798d752be8bfeff4b Mon Sep 17 00:00:00 2001 From: Askaholic Date: Tue, 17 Oct 2023 15:20:37 -0400 Subject: [PATCH] Issue/#977 Remove IRC password functionality (#978) * Remove IRC password functionality * Remove note about IRC error message from doc --- DEVELOPMENT.md | 1 - server/lobbyconnection.py | 33 +++++++-------------------------- 2 files changed, 7 insertions(+), 27 deletions(-) diff --git a/DEVELOPMENT.md b/DEVELOPMENT.md index 851d3e1ce..032041085 100644 --- a/DEVELOPMENT.md +++ b/DEVELOPMENT.md @@ -87,7 +87,6 @@ WARNING GEO_IP_LICENSE_KEY not set! Unable to download GeoIP database! WARNING Unable to connect to RabbitMQ. Is it running? ConnectionError: [Errno 111] Connect call failed ('127.0.0.1', 5672) WARNING Not connected to RabbitMQ, unable to declare exchange. -ERROR Failure updating NickServ password for test ``` **Note:** *The pipenv scripts are NOT meant for production deployment. For diff --git a/server/lobbyconnection.py b/server/lobbyconnection.py index daac46045..b2fd49aa8 100644 --- a/server/lobbyconnection.py +++ b/server/lobbyconnection.py @@ -5,19 +5,16 @@ import asyncio import contextlib import json -import os import random import urllib.parse import urllib.request -from binascii import hexlify from datetime import datetime from functools import wraps -from hashlib import md5 from typing import Optional import aiohttp from sqlalchemy import and_, func, select -from sqlalchemy.exc import DBAPIError, OperationalError, ProgrammingError +from sqlalchemy.exc import DBAPIError import server.metrics as metrics from server.db import FAFDatabase @@ -511,14 +508,16 @@ async def command_auth(self, message): username = row.login - new_irc_password = hexlify(os.urandom(16)).decode() + # DEPRECATED: IRC passwords are handled outside of the lobby server. + # This message remains here for backwards compatibility, but the data + # sent is meaningless and can be ignored by clients. await self.send({ "command": "irc_password", - "password": new_irc_password + "password": "deprecated" }) await self.on_player_login( - player_id, username, new_irc_password, unique_id, auth_method + player_id, username, unique_id, auth_method ) async def command_hello(self, message): @@ -543,14 +542,13 @@ async def command_hello(self, message): ) await self.on_player_login( - player_id, username, password, unique_id, "password" + player_id, username, unique_id, "password" ) async def on_player_login( self, player_id: int, username: str, - password: str, unique_id: str, method: str ): @@ -582,7 +580,6 @@ async def on_player_login( last_login=func.now() ) ) - await self.update_irc_password(conn, username, password) self.player = Player( login=username, @@ -679,22 +676,6 @@ async def on_player_login( await self.send_game_list() - async def update_irc_password(self, conn, login, password): - # Since the password is hashed on the client, what we get at this point - # is really md5(md5(sha256(password))). This is entirely insane. - temp = md5(password.encode()).hexdigest() - irc_pass = "md5:" + md5(temp.encode()).hexdigest() - - try: - await conn.execute( - "UPDATE anope.anope_db_NickCore " - "SET pass = :passwd WHERE display = :display", - passwd=irc_pass, - display=login - ) - except (OperationalError, ProgrammingError): - self._logger.error("Failure updating NickServ password for %s", login) - async def command_restore_game_session(self, message): assert self.player is not None