diff --git a/DreamTown/cgi-bin/dreamtown_config.py b/DreamTown/cgi-bin/dreamtown_config.py index cbe5d20..b0098a5 100644 --- a/DreamTown/cgi-bin/dreamtown_config.py +++ b/DreamTown/cgi-bin/dreamtown_config.py @@ -102,17 +102,30 @@ except: pass try: c.execute(""" - CREATE TABLE harvestList( + CREATE TABLE containerList( Name TEXT(12), HarvestableTemplateId int, LastHarvest int, ContainerName TEXT(128), - Harvestables TEXT(8024), AreaId int ); """) except: pass +try: + c.execute(""" + CREATE TABLE harvestablesList( + Name TEXT(12), + ItemTemplateId int, + UpdateTime int, + SlotIndex int, + HarvestableName TEXT(128), + AreaId int, + ParentContainerName TEXT(128) + ); + """) +except: + pass try: c.execute(""" CREATE TABLE rubishList( diff --git a/DreamTown/cgi-bin/harvestable/addContainer b/DreamTown/cgi-bin/harvestable/addContainer index f50693f..4787a55 100644 --- a/DreamTown/cgi-bin/harvestable/addContainer +++ b/DreamTown/cgi-bin/harvestable/addContainer @@ -39,9 +39,13 @@ def TryAdd(): rows = cur.fetchone() username = rows[0] - - c.execute('DELETE from harvestList where Name=? and AreaId=? and containerName=?',(username,AreaId,ContainerName)) - c.execute('INSERT INTO harvestList VAlUES (?,?,NULL,?,NULL,?)',(username,HarvestableTemplateId,ContainerName,AreaId)) + cur = c.execute('SELECT COUNT(1) from containerList where Name=? and AreaId=? and containerName=?',(username,AreaId,ContainerName)) + rows = cur.fetchone() + count = rows[0] + if count == 0: + c.execute('INSERT INTO containerList VAlUES (?,?,NULL,?,?)',(username,HarvestableTemplateId,ContainerName,AreaId)) + else: + c.execute('UPDATE containerList SET HarvestableTemplateId=? where Name=? and AreaId=? and ContainerName=?',(HarvestableTemplateId,username,AreaId,ContainerName)) try: diff --git a/DreamTown/cgi-bin/harvestable/addHarvestable b/DreamTown/cgi-bin/harvestable/addHarvestable new file mode 100644 index 0000000..7f6514e --- /dev/null +++ b/DreamTown/cgi-bin/harvestable/addHarvestable @@ -0,0 +1,58 @@ +#!/usr/bin/python3 +from dreamtown_config import * +import sys +import binascii +import os +import json +import sqlite3 +import hashlib + +print("Content-Type: application/json") +print("") +method = os.environ["REQUEST_METHOD"] +if method != "POST": + print("Expected POST") + os._exit() + + +content_len = int(os.environ["CONTENT_LENGTH"]) +post = sys.stdin.read(content_len) +jsonData = json.loads(post) +result = {"status":SUCCESS} + +def TryAdd(): + ContainerName = jsonData['containerName'] + ItemTemplateId = jsonData['itemTemplateId'] + UpdateTime = jsonData['updateTime'] + Index = jsonData['index'] + HarvestableName = jsonData['harvestableName'] + AreaId = jsonData['areaId'] + authToken = jsonData['authToken'] + + c = db.cursor() + cur = c.execute('SELECT COUNT(1) from users WHERE LastSession=?',(authToken,)) + rows = cur.fetchone() + count = rows[0] + if count == 0: + result['status'] = USER_DOES_NOT_EXIST + return 0 + + #Find Username + cur = c.execute('SELECT Name from users WHERE LastSession=?',(authToken,)) + rows = cur.fetchone() + username = rows[0] + + c.execute('DELETE from harvestablesList where Name=? and HarvestableName=? and AreaId=? and ParentContainerName=?',(username,HarvestableName,AreaId,ContainerName)) + c.execute('INSERT INTO harvestablesList VAlUES (?,?,?,?,?,?,?)',(username,ItemTemplateId,UpdateTime,Index,HarvestableName,AreaId,ContainerName)) + + +try: + db = sqlite3.connect(SQLLITE_DB_PATH) + TryAdd() + db.commit() + db.close() +except Exception as e: + print(e) + os._exit() + +print(json.dumps(result)) \ No newline at end of file diff --git a/DreamTown/cgi-bin/harvestable/get b/DreamTown/cgi-bin/harvestable/get index c6dfe4a..b08ba91 100644 --- a/DreamTown/cgi-bin/harvestable/get +++ b/DreamTown/cgi-bin/harvestable/get @@ -37,14 +37,30 @@ def TryGet(): rows = cur.fetchone() username = rows[0] - cur = c.execute('SELECT HarvestableTemplateId,LastHarvest,ContainerName, Harvestables,AreaId from harvestList WHERE Name=?',(username,)) + + cur = c.execute('SELECT HarvestableTemplateId,LastHarvest,ContainerName,AreaId from containerList WHERE Name=?',(username,)) rows = cur.fetchall() - harvestList = [] + containerList = [] for row in rows: - containers = {'harvestableTemplateId':row[0], 'lastHarvest':row[1], 'containerName':row[2], 'harvestables':json.loads(row[3]), 'areaId':row[4]} - harvestList.append(containers) - result['containers'] = harvestList + harvestableTemplateId=row[0] + lastHarvest=row[1] + containerName=row[2] + areaId=row[3] + + cur = c.execute('SELECT ItemTemplateId,UpdateTime,SlotIndex,HarvestableName from harvestablesList WHERE Name=? AND ParentContainerName=? AND AreaId=?',(username,containerName,areaId)) + rows2 = cur.fetchall() + harvestablesList = [] + for row2 in rows2: + harvestable = {'itemTemplateId':row2[0],'updateTime':row2[1],'index':row2[2],'harvestableName':row2[3]} + harvestablesList.append(harvestable) + + + containers = {'harvestableTemplateId':harvestableTemplateId, 'lastHarvest':lastHarvest, 'containerName':containerName, 'harvestables':harvestablesList, 'areaId':areaId} + containerList.append(containers) + + + result['containers'] = containerList diff --git a/DreamTown/cgi-bin/harvestable/remove b/DreamTown/cgi-bin/harvestable/remove new file mode 100644 index 0000000..754b0f5 --- /dev/null +++ b/DreamTown/cgi-bin/harvestable/remove @@ -0,0 +1,57 @@ +#!/usr/bin/python3 +from dreamtown_config import * +import sys +import binascii +import os +import json +import sqlite3 +import math +import time +import hashlib + +print("Content-Type: application/json") +print("") +method = os.environ["REQUEST_METHOD"] +if method != "POST": + print("Expected POST") + os._exit() + + +content_len = int(os.environ["CONTENT_LENGTH"]) +post = sys.stdin.read(content_len) +jsonData = json.loads(post) +result = {"status":SUCCESS} + +def TryAdd(): + ContainerName = jsonData['containerName'] + UpdateTime = jsonData['updateTime'] + HarvestableName = jsonData['harvestableName'] + AreaId = jsonData['areaId'] + authToken = jsonData['authToken'] + + c = db.cursor() + cur = c.execute('SELECT COUNT(1) from users WHERE LastSession=?',(authToken,)) + rows = cur.fetchone() + count = rows[0] + if count == 0: + result['status'] = USER_DOES_NOT_EXIST + return 0 + + #Find Username + cur = c.execute('SELECT Name from users WHERE LastSession=?',(authToken,)) + rows = cur.fetchone() + username = rows[0] + + c.execute('DELETE from harvestablesList where Name=? and HarvestableName=? and AreaId=? and ParentContainerName=?',(username,HarvestableName,AreaId,ContainerName)) + c.execute('UPDATE containerList SET LastHarvest=? WHERE Name=? AND ContainerName=? AND AreaId=?',(math.floor(time.time()),username,ContainerName,AreaId)) + +try: + db = sqlite3.connect(SQLLITE_DB_PATH) + TryAdd() + db.commit() + db.close() +except Exception as e: + print(e) + os._exit() + +print(json.dumps(result)) \ No newline at end of file diff --git a/DreamTown/cgi-bin/harvestable/save b/DreamTown/cgi-bin/harvestable/save index ec36ad3..4bee36c 100644 --- a/DreamTown/cgi-bin/harvestable/save +++ b/DreamTown/cgi-bin/harvestable/save @@ -46,8 +46,8 @@ def TrySave(): harvestablesEncoded = json.dumps(harvestables) - c.execute('DELETE from harvestList where Name=? and AreaId=? and containerName=?',(username,areaId,containerName)) - c.execute('INSERT INTO harvestList VAlUES (?,?,?,?,?,?)',(username,harvestableTemplateId,lastHarvest,containerName,harvestablesEncoded,areaId)) + c.execute('DELETE from containerList where Name=? and AreaId=? and containerName=?',(username,areaId,containerName)) + c.execute('INSERT INTO containerList VAlUES (?,?,?,?,?,?)',(username,harvestableTemplateId,lastHarvest,containerName,harvestablesEncoded,areaId)) try: