Final changes, introducing sample database dump and username-pass initialisation for mysql
This commit is contained in:
parent
c8264cf347
commit
80e00e0f41
6 changed files with 178 additions and 14 deletions
Binary file not shown.
79
dbdump.sql
Normal file
79
dbdump.sql
Normal file
|
@ -0,0 +1,79 @@
|
|||
-- MySQL dump 10.13 Distrib 5.7.39, for Win64 (x86_64)
|
||||
--
|
||||
-- Host: localhost Database: labyrinth
|
||||
-- ------------------------------------------------------
|
||||
-- Server version 5.7.39-log
|
||||
|
||||
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
|
||||
/*!40101 SET NAMES utf8 */;
|
||||
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
|
||||
/*!40103 SET TIME_ZONE='+00:00' */;
|
||||
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
|
||||
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
|
||||
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
|
||||
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
|
||||
|
||||
--
|
||||
-- Table structure for table `player_details`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `player_details`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8 */;
|
||||
CREATE TABLE `player_details` (
|
||||
`gamerid` char(4) NOT NULL,
|
||||
`username` varchar(32) NOT NULL,
|
||||
`email` varchar(32) NOT NULL,
|
||||
`password` varchar(32) NOT NULL,
|
||||
PRIMARY KEY (`gamerid`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Dumping data for table `player_details`
|
||||
--
|
||||
|
||||
LOCK TABLES `player_details` WRITE;
|
||||
/*!40000 ALTER TABLE `player_details` DISABLE KEYS */;
|
||||
INSERT INTO `player_details` VALUES ('1AB3','ABC_123','abc@gmail.com','Q0FCXzMyMQ=='),('2BC4','DEF_456','def@gmail.com','RkVEXzY1NA=='),('3CD5','GHI_789','mb8717@boysmgp.onmicrosoft.com','SUhHXzk4Nw=='),('4DE6','JKL_100','mb11859@boysmgp.onmicrosoft.com','TEtKXzAwMQ==');
|
||||
/*!40000 ALTER TABLE `player_details` ENABLE KEYS */;
|
||||
UNLOCK TABLES;
|
||||
|
||||
--
|
||||
-- Table structure for table `scores`
|
||||
--
|
||||
|
||||
DROP TABLE IF EXISTS `scores`;
|
||||
/*!40101 SET @saved_cs_client = @@character_set_client */;
|
||||
/*!40101 SET character_set_client = utf8 */;
|
||||
CREATE TABLE `scores` (
|
||||
`gamerid` char(4) NOT NULL,
|
||||
`highscore` int(11) DEFAULT NULL,
|
||||
`lastplayed` date DEFAULT NULL,
|
||||
`timesplayed` int(11) DEFAULT NULL,
|
||||
PRIMARY KEY (`gamerid`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||
/*!40101 SET character_set_client = @saved_cs_client */;
|
||||
|
||||
--
|
||||
-- Dumping data for table `scores`
|
||||
--
|
||||
|
||||
LOCK TABLES `scores` WRITE;
|
||||
/*!40000 ALTER TABLE `scores` DISABLE KEYS */;
|
||||
INSERT INTO `scores` VALUES ('1AB3',85012,'2022-11-02',3),('2BC4',90012,'2022-11-12',2),('4DE6',90120,'2022-10-24',5);
|
||||
/*!40000 ALTER TABLE `scores` ENABLE KEYS */;
|
||||
UNLOCK TABLES;
|
||||
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
|
||||
|
||||
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
|
||||
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
|
||||
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
|
||||
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
|
||||
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
|
||||
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
|
||||
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
|
||||
|
||||
-- Dump completed on 2022-11-17 18:35:12
|
|
@ -1,8 +1,10 @@
|
|||
import curses
|
||||
import os
|
||||
import pickle
|
||||
import random
|
||||
import re
|
||||
import string
|
||||
import sys
|
||||
from base64 import b64decode, b64encode
|
||||
from time import sleep
|
||||
|
||||
|
@ -17,6 +19,15 @@ U = gamerid = None
|
|||
quitting = False
|
||||
|
||||
sql = con = None
|
||||
with open("credentials.pickle", "rb") as f:
|
||||
try:
|
||||
while True:
|
||||
d = pickle.load(f)
|
||||
if d["credtype"] == "mysql":
|
||||
MYSQL_USERNAME = d["user"]
|
||||
MYSQL_PASSWORD = d["pass"]
|
||||
except EOFError:
|
||||
pass
|
||||
|
||||
|
||||
def get(
|
||||
|
@ -39,14 +50,19 @@ def post(
|
|||
|
||||
def databaseinit(): # Creates database if it doesn't exist
|
||||
try:
|
||||
tempsql = mysql.connector.connect(host="localhost", user="root", passwd="root")
|
||||
tempsql = mysql.connector.connect(
|
||||
host="localhost", user=MYSQL_USERNAME, passwd=MYSQL_PASSWORD
|
||||
)
|
||||
tempcon = tempsql.cursor()
|
||||
tempcon.execute("CREATE DATABASE IF NOT EXISTS labyrinth")
|
||||
tempsql.commit()
|
||||
|
||||
global sql, con
|
||||
sql = mysql.connector.connect(
|
||||
host="localhost", user="root", passwd="root", database="labyrinth"
|
||||
host="localhost",
|
||||
user=MYSQL_USERNAME,
|
||||
passwd=MYSQL_PASSWORD,
|
||||
database="labyrinth",
|
||||
)
|
||||
con = sql.cursor()
|
||||
return True
|
||||
|
@ -54,8 +70,8 @@ def databaseinit(): # Creates database if it doesn't exist
|
|||
mysql.connector.errors.ProgrammingError,
|
||||
mysql.connector.errors.DatabaseError,
|
||||
):
|
||||
print("Invalid password/username.")
|
||||
return False
|
||||
print("Invalid MySQL password/username.")
|
||||
sys.exit()
|
||||
|
||||
|
||||
def tableinit():
|
||||
|
@ -780,7 +796,7 @@ def leaderboard(screen):
|
|||
screen.addstr(sy, 50, str(i[2]))
|
||||
screen.addstr(sy, 70, str(i[3]))
|
||||
sy += 1
|
||||
screen.addstr(y - 1, x - 35, "Press esc to return to main menu.")
|
||||
screen.addstr(y - 2, x - 35, "Press esc to return to main menu.")
|
||||
while True:
|
||||
key = screen.getch()
|
||||
if key == 27:
|
||||
|
|
|
@ -26,12 +26,9 @@ def about(screen):
|
|||
screen.addstr(
|
||||
11,
|
||||
5,
|
||||
"This game makes use of the 'curses' module which runs on any operating system in the native terminal without"
|
||||
)
|
||||
screen.addstr(
|
||||
12, 5,
|
||||
"use of any other external modules."
|
||||
"This game makes use of the 'curses' module which runs on any operating system in the native terminal without",
|
||||
)
|
||||
screen.addstr(12, 5, "use of any other external modules.")
|
||||
screen.addstr(
|
||||
13,
|
||||
5,
|
||||
|
|
|
@ -19,9 +19,9 @@ def save(screen, maze, coords):
|
|||
names[i] = names[i].replace(".maze", "")
|
||||
for i in range(len(names)):
|
||||
for j in range(len(names) - i - 1):
|
||||
if int(names[j].split('_')[1]) > int(names[j + 1].split('_')[1]):
|
||||
if int(names[j].split("_")[1]) > int(names[j + 1].split("_")[1]):
|
||||
names[j], names[j + 1] = names[j + 1], names[j]
|
||||
num = int(names[-1].split('_')[1]) + 1
|
||||
num = int(names[-1].split("_")[1]) + 1
|
||||
if not name:
|
||||
name = "default"
|
||||
filename = f"maze_{str(num)}_{name}.maze"
|
||||
|
|
74
starter.py
74
starter.py
|
@ -1,3 +1,75 @@
|
|||
from maze.modules import bruh
|
||||
import os
|
||||
import pickle
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
import mysql.connector
|
||||
|
||||
from maze.modules import bruh
|
||||
from maze.modules.PlayerBase_func import databaseinit
|
||||
|
||||
with open("credentials.pickle", "rb") as f:
|
||||
try:
|
||||
while True:
|
||||
d = pickle.load(f)
|
||||
if d["credtype"] == "mysql":
|
||||
user = d["user"]
|
||||
password = d["pass"]
|
||||
break
|
||||
except EOFError:
|
||||
user = password = None
|
||||
|
||||
|
||||
def getcreds():
|
||||
if user and password:
|
||||
return user, password
|
||||
else:
|
||||
print(
|
||||
"""MySQL username or password not initialised. Defaulting to 'root' and ''.
|
||||
Run 'python starter.py initsql' to initialise credentials of your choice. """
|
||||
)
|
||||
with open("credentials.pickle", "rb+") as f:
|
||||
try:
|
||||
while True:
|
||||
pos = f.tell()
|
||||
d = pickle.load(f)
|
||||
if d["credtype"] == "mysql":
|
||||
d["user"] = "root"
|
||||
d["pass"] = ""
|
||||
f.seek(pos)
|
||||
pickle.dump(d, f)
|
||||
except EOFError:
|
||||
pass
|
||||
return None, None
|
||||
|
||||
|
||||
if len(sys.argv) == 1:
|
||||
getcreds()
|
||||
bruh()
|
||||
sys.exit()
|
||||
else:
|
||||
if sys.argv[1] == "dumpsample":
|
||||
getcreds()
|
||||
databaseinit()
|
||||
subprocess.call(
|
||||
f"mysql -u root --password=root -D labyrinth < {os.path.abspath('dbdump.sql')}",
|
||||
shell=True,
|
||||
stdout=subprocess.DEVNULL,
|
||||
stderr=subprocess.DEVNULL,
|
||||
)
|
||||
elif sys.argv[1] == "initsql":
|
||||
user = input("Enter MySQL username: ")
|
||||
password = input("Enter MySQL password: ")
|
||||
with open("credentials.pickle", "rb+") as f:
|
||||
try:
|
||||
while True:
|
||||
pos = f.tell()
|
||||
d = pickle.load(f)
|
||||
if d["credtype"] == "mysql":
|
||||
d["user"] = user
|
||||
d["pass"] = password
|
||||
f.seek(pos)
|
||||
pickle.dump(d, f)
|
||||
except EOFError:
|
||||
pass
|
||||
print("Successfully set.")
|
||||
|
|
Loading…
Reference in a new issue