mirror of
https://github.com/barronwaffles/dwc_network_server_emulator.git
synced 2026-08-20 17:45:23 -05:00
Merge remote-tracking branch 'upstream/master'
This commit is contained in:
@@ -31,7 +31,7 @@ class GamespyDatabase(object):
|
||||
# but I'm not good with databases and I'm not 100% positive that, for instance, that all
|
||||
# user id's will be ints, or all passwords will be ints, etc, despite not seeing any
|
||||
# evidence yet to say otherwise as far as Nintendo DS games go.
|
||||
q = "CREATE TABLE users (profileid INT, userid TEXT, password TEXT, gsbrcd TEXT, email TEXT, uniquenick TEXT, pid TEXT, lon TEXT, lat TEXT, loc TEXT, firstname TEXT, lastname TEXT, stat TEXT, partnerid TEXT, console INT, csnum TEXT, cfc TEXT, bssid TEXT, devname TEXT, birth TEXT, gameid TEXT, enabled INT)"
|
||||
q = "CREATE TABLE users (profileid INT, userid TEXT, password TEXT, gsbrcd TEXT, email TEXT, uniquenick TEXT, pid TEXT, lon TEXT, lat TEXT, loc TEXT, firstname TEXT, lastname TEXT, stat TEXT, partnerid TEXT, console INT, csnum TEXT, cfc TEXT, bssid TEXT, devname TEXT, birth TEXT, gameid TEXT, enabled INT, zipcode TEXT, aim TEXT)"
|
||||
logger.log(-1, q)
|
||||
c.execute(q)
|
||||
|
||||
@@ -171,6 +171,8 @@ class GamespyDatabase(object):
|
||||
stat = ""
|
||||
partnerid = ""
|
||||
enabled = 1
|
||||
zipcode = ""
|
||||
aim = ""
|
||||
|
||||
# Hash password before entering it into the database.
|
||||
# For now I'm using a very simple MD5 hash.
|
||||
@@ -179,12 +181,12 @@ class GamespyDatabase(object):
|
||||
md5.update(password)
|
||||
password = md5.hexdigest()
|
||||
|
||||
q = "INSERT INTO users VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"
|
||||
q2 = q.replace("?", "%s") % (profileid, str(userid), password, gsbrcd, email, uniquenick, pid, lon, lat, loc, firstname, lastname, stat, partnerid, console, csnum, cfc, bssid, devname, birth, gameid, enabled)
|
||||
q = "INSERT INTO users VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"
|
||||
q2 = q.replace("?", "%s") % (profileid, str(userid), password, gsbrcd, email, uniquenick, pid, lon, lat, loc, firstname, lastname, stat, partnerid, console, csnum, cfc, bssid, devname, birth, gameid, enabled, zipcode, aim)
|
||||
logger.log(-1, q2)
|
||||
|
||||
c = self.conn.cursor()
|
||||
c.execute(q, [profileid, str(userid), password, gsbrcd, email, uniquenick, pid, lon, lat, loc, firstname, lastname, stat, partnerid, console, csnum, cfc, bssid, devname, birth, gameid, enabled])
|
||||
c.execute(q, [profileid, str(userid), password, gsbrcd, email, uniquenick, pid, lon, lat, loc, firstname, lastname, stat, partnerid, console, csnum, cfc, bssid, devname, birth, gameid, enabled, zipcode, aim])
|
||||
c.close()
|
||||
|
||||
self.conn.commit()
|
||||
@@ -207,13 +209,17 @@ class GamespyDatabase(object):
|
||||
bssid = ""
|
||||
devname = ""
|
||||
birth = ""
|
||||
zipcode = ""
|
||||
aim = ""
|
||||
|
||||
q = "INSERT INTO users VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"
|
||||
q2 = q.replace("?", "%s") % (profileid, str(userid), password, gsbrcd, email, uniquenick, pid, lon, lat, loc, firstname, lastname, stat, partnerid, console, csnum, cfc, bssid, devname, birth, gameid)
|
||||
enabled = 1
|
||||
|
||||
q = "INSERT INTO users VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"
|
||||
q2 = q.replace("?", "%s") % (profileid, str(userid), password, gsbrcd, email, uniquenick, pid, lon, lat, loc, firstname, lastname, stat, partnerid, console, csnum, cfc, bssid, devname, birth, gameid, enabled, zipcode, aim)
|
||||
logger.log(-1, q2)
|
||||
|
||||
c = self.conn.cursor()
|
||||
c.execute(q, [profileid, str(userid), password, gsbrcd, email, uniquenick, pid, lon, lat, loc, firstname, lastname, stat, partnerid, console, csnum, cfc, bssid, devname, birth, gameid])
|
||||
c.execute(q, [profileid, str(userid), password, gsbrcd, email, uniquenick, pid, lon, lat, loc, firstname, lastname, stat, partnerid, console, csnum, cfc, bssid, devname, birth, gameid, enabled, zipcode, aim])
|
||||
c.close()
|
||||
|
||||
self.conn.commit()
|
||||
|
||||
@@ -126,11 +126,22 @@ class NintendoNasHTTPServerHandler(BaseHTTPServer.BaseHTTPRequestHandler):
|
||||
num = int(post["num"])
|
||||
offset = int(post["offset"])
|
||||
|
||||
attr1 = None
|
||||
if "attr1" in post:
|
||||
attr1 = post["attr1"]
|
||||
attr2 = None
|
||||
if "attr2" in post:
|
||||
attr2 = post["attr2"]
|
||||
attr3 = None
|
||||
if "attr3" in post:
|
||||
attr3 = post["attr3"]
|
||||
|
||||
if os.path.exists(dlcpath):
|
||||
# Look for a list file first.
|
||||
# If the list file exists, send the entire thing back to the client.
|
||||
if os.path.isfile(dlcpath + "/_list.txt"):
|
||||
ret = open(dlcpath + "/_list.txt", "rb").read()
|
||||
ret = self.filter_list(ret, attr1, attr2, attr3)
|
||||
|
||||
if action == "contents":
|
||||
# Get only the base filename just in case there is a path involved somewhere in the filename string.
|
||||
@@ -173,6 +184,39 @@ class NintendoNasHTTPServerHandler(BaseHTTPServer.BaseHTTPRequestHandler):
|
||||
# nas(wii).nintendowifi.net has a URL query-like format but does not use encoding for special characters
|
||||
return "&".join("{!s}={!s}".format(k, v) for k, v in dict.items())
|
||||
|
||||
def filter_list(self, data, attr1 = None, attr2 = None, attr3 = None):
|
||||
if attr1 == None and attr2 == None and attr3 == None:
|
||||
# Nothing to filter, just return the input data
|
||||
return data
|
||||
|
||||
# Filter the list based on the attribute fields
|
||||
output = ""
|
||||
|
||||
for line in data.split('\n'):
|
||||
s = line.split('\t')
|
||||
|
||||
data = {}
|
||||
data['filename'] = s[0]
|
||||
data['desc'] = s[1]
|
||||
data['attr1'] = s[2]
|
||||
data['attr2'] = s[3]
|
||||
data['attr3'] = s[4]
|
||||
data['filesize'] = s[5]
|
||||
|
||||
matched = True
|
||||
if attr1 != None and data['attr1'] != attr1:
|
||||
matched = False
|
||||
if attr2 != None and data['attr2'] != attr2:
|
||||
matched = False
|
||||
if attr3 != None and data['attr3'] != attr3:
|
||||
matched = False
|
||||
|
||||
if matched == True:
|
||||
output += line + '\r\n'
|
||||
|
||||
|
||||
return output
|
||||
|
||||
if __name__ == "__main__":
|
||||
nas = NintendoNasServer()
|
||||
nas.start()
|
||||
|
||||
Reference in New Issue
Block a user