#!/usr/bin/python3
# This file has been added to my Private Server and was not a function in the original DreamTown.
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(1)
	

content_len = int(os.environ["CONTENT_LENGTH"])
post = sys.stdin.read(content_len)
jsonData = json.loads(post)
result = {"status":SUCCESS}


def TryLogin():
	username = jsonData['name'].lower()
	old_password = jsonData['old_password']
	new_password = jsonData['new_password']
	
	#Check User Exists
	c = db.cursor()
	c.execute('SELECT COUNT(1) from users WHERE Name=?',(username,))
	rows = c.fetchone()
	count = rows[0]
	
	if count == 0:
		result['status'] = USER_DOES_NOT_EXIST
		return 0
	#Check Password
	c.execute('SELECT PassHash,Salt from users WHERE Name= ?',(username,))
	
	rows = c.fetchone()

	PassHash = rows[0]
	Salt = rows[1]
	
	SaltedHash = pass_salt_algo(old_password,Salt)	
	if SaltedHash != PassHash:
		result['status'] = INVALID_PASSWORD
		return 0

	NewSaltedHash = pass_salt_algo(new_password,Salt)	

	#Update password 
	result['status'] = SUCCESS
	c.execute('UPDATE users SET PassHash=? WHERE Name=?',(NewSaltedHash,username))
	c.execute('UPDATE users SET LastSession=NULL WHERE Name=?',(username,))
		
db = DbConnect()
TryLogin()
db.commit()
db.close()
print(json.dumps(result))
		

	
