.BANCHO. .FIX. Fixed account randomly restricted/banned at login
This commit is contained in:
parent
c35028c765
commit
9882f1273e
|
@ -89,8 +89,10 @@ def handle(tornadoRequest):
|
||||||
glob.verifiedCache[str(userID)] = 0
|
glob.verifiedCache[str(userID)] = 0
|
||||||
raise exceptions.loginBannedException()
|
raise exceptions.loginBannedException()
|
||||||
|
|
||||||
# Save HWID in db
|
|
||||||
|
# Save HWID in db for multiaccount detection
|
||||||
hwAllowed = userHelper.logHardware(userID, clientData, firstLogin)
|
hwAllowed = userHelper.logHardware(userID, clientData, firstLogin)
|
||||||
|
|
||||||
# This is false only if HWID is empty
|
# This is false only if HWID is empty
|
||||||
# if HWID is banned, we get restricted so there's no
|
# if HWID is banned, we get restricted so there's no
|
||||||
# need to deny bancho access
|
# need to deny bancho access
|
||||||
|
@ -98,7 +100,7 @@ def handle(tornadoRequest):
|
||||||
raise exceptions.haxException()
|
raise exceptions.haxException()
|
||||||
|
|
||||||
# Log user IP
|
# Log user IP
|
||||||
userHelper.IPLog(userID, requestIP)
|
userHelper.logIP(userID, requestIP)
|
||||||
|
|
||||||
# Delete old tokens for that user and generate a new one
|
# Delete old tokens for that user and generate a new one
|
||||||
glob.tokens.deleteOldTokens(userID)
|
glob.tokens.deleteOldTokens(userID)
|
||||||
|
@ -228,7 +230,7 @@ def handle(tornadoRequest):
|
||||||
# User tried to log in from unknown IP
|
# User tried to log in from unknown IP
|
||||||
responseData += serverPackets.needVerification()
|
responseData += serverPackets.needVerification()
|
||||||
except exceptions.haxException:
|
except exceptions.haxException:
|
||||||
# Using oldoldold client, we can't check hw. Force update.
|
# Using oldoldold client, we don't have client data. Force update.
|
||||||
# (we don't use enqueue because we don't have a token since login has failed)
|
# (we don't use enqueue because we don't have a token since login has failed)
|
||||||
err = True
|
err = True
|
||||||
responseData += serverPackets.forceUpdate()
|
responseData += serverPackets.forceUpdate()
|
||||||
|
|
|
@ -280,10 +280,10 @@ def getShowCountry(userID):
|
||||||
return False
|
return False
|
||||||
return generalFunctions.stringToBool(country)
|
return generalFunctions.stringToBool(country)
|
||||||
|
|
||||||
def IPLog(userID, ip):
|
def logIP(userID, ip):
|
||||||
"""
|
"""
|
||||||
Botnet the user
|
User IP log
|
||||||
(log his ip for multiaccount detection)
|
USED FOR MULTIACCOUNT DETECTION
|
||||||
"""
|
"""
|
||||||
glob.db.execute("""INSERT INTO ip_user (userid, ip, occurencies) VALUES (%s, %s, '1')
|
glob.db.execute("""INSERT INTO ip_user (userid, ip, occurencies) VALUES (%s, %s, '1')
|
||||||
ON DUPLICATE KEY UPDATE occurencies = occurencies + 1""", [userID, ip])
|
ON DUPLICATE KEY UPDATE occurencies = occurencies + 1""", [userID, ip])
|
||||||
|
@ -471,8 +471,9 @@ def appendNotes(userID, notes, addNl = True):
|
||||||
def logHardware(userID, hashes, activation = False):
|
def logHardware(userID, hashes, activation = False):
|
||||||
"""
|
"""
|
||||||
Hardware log
|
Hardware log
|
||||||
|
USED FOR MULTIACCOUNT DETECTION
|
||||||
|
|
||||||
Peppy's botnet structure (new line = "|", already split)
|
Peppy's botnet (client data) structure (new line = "|", already split)
|
||||||
[0] osu! version
|
[0] osu! version
|
||||||
[1] plain mac addressed, separated by "."
|
[1] plain mac addressed, separated by "."
|
||||||
[2] mac addresses hash set
|
[2] mac addresses hash set
|
||||||
|
@ -496,7 +497,7 @@ def logHardware(userID, hashes, activation = False):
|
||||||
banned = glob.db.fetchAll("""SELECT users.id as userid, hw_user.occurencies, users.username FROM hw_user
|
banned = glob.db.fetchAll("""SELECT users.id as userid, hw_user.occurencies, users.username FROM hw_user
|
||||||
LEFT JOIN users ON users.id = hw_user.userid
|
LEFT JOIN users ON users.id = hw_user.userid
|
||||||
WHERE hw_user.userid != %(userid)s
|
WHERE hw_user.userid != %(userid)s
|
||||||
AND (IF(%(mac)s!='b4ec3c4334a0249dae95c284ec5983df', hw_user.mac = %(mac)s, 0) OR hw_user.unique_id = %(uid)s OR hw_user.disk_id = %(diskid)s)
|
AND (IF(%(mac)s!='b4ec3c4334a0249dae95c284ec5983df', hw_user.mac = %(mac)s, 1) AND hw_user.unique_id = %(uid)s AND hw_user.disk_id = %(diskid)s)
|
||||||
AND (users.privileges & 3 != 3)""", {
|
AND (users.privileges & 3 != 3)""", {
|
||||||
"userid": userID,
|
"userid": userID,
|
||||||
"mac": hashes[2],
|
"mac": hashes[2],
|
||||||
|
@ -569,7 +570,7 @@ def verifyUser(userID, hashes):
|
||||||
username = getUsername(userID)
|
username = getUsername(userID)
|
||||||
|
|
||||||
# Make sure there are no other accounts activated with this exact mac/unique id/hwid
|
# Make sure there are no other accounts activated with this exact mac/unique id/hwid
|
||||||
match = glob.db.fetchAll("SELECT userid FROM hw_user WHERE (IF(%(mac)s != 'b4ec3c4334a0249dae95c284ec5983df', mac = %(mac)s, 0) OR unique_id = %(uid)s OR disk_id = %(diskid)s) AND userid != %(userid)s AND activated = 1 LIMIT 1", {
|
match = glob.db.fetchAll("SELECT userid FROM hw_user WHERE (IF(%(mac)s != 'b4ec3c4334a0249dae95c284ec5983df', mac = %(mac)s, 1) AND unique_id = %(uid)s AND disk_id = %(diskid)s) AND userid != %(userid)s AND activated = 1 LIMIT 1", {
|
||||||
"mac": hashes[2],
|
"mac": hashes[2],
|
||||||
"uid": hashes[3],
|
"uid": hashes[3],
|
||||||
"diskid": hashes[4],
|
"diskid": hashes[4],
|
||||||
|
|
Loading…
Reference in New Issue
Block a user