mirror of
https://gitlab.com/crafty-controller/crafty-4.git
synced 2024-08-30 18:23:09 +00:00
Create text file in config folder with init creds
This commit is contained in:
parent
ec4bcda31e
commit
91e62c647e
@ -6,6 +6,8 @@ import json
|
|||||||
import tempfile
|
import tempfile
|
||||||
import time
|
import time
|
||||||
import uuid
|
import uuid
|
||||||
|
import random
|
||||||
|
import array
|
||||||
import string
|
import string
|
||||||
import base64
|
import base64
|
||||||
import socket
|
import socket
|
||||||
@ -361,6 +363,123 @@ class Helpers:
|
|||||||
|
|
||||||
return result_of_check == 0
|
return result_of_check == 0
|
||||||
|
|
||||||
|
def create_pass(self):
|
||||||
|
# maximum length of password needed
|
||||||
|
# this can be changed to suit your password length
|
||||||
|
max_len = 12
|
||||||
|
|
||||||
|
# declare arrays of the character that we need in out password
|
||||||
|
# Represented as chars to enable easy string concatenation
|
||||||
|
digits = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]
|
||||||
|
locase = [
|
||||||
|
"a",
|
||||||
|
"b",
|
||||||
|
"c",
|
||||||
|
"d",
|
||||||
|
"e",
|
||||||
|
"f",
|
||||||
|
"g",
|
||||||
|
"h",
|
||||||
|
"i",
|
||||||
|
"j",
|
||||||
|
"k",
|
||||||
|
"m",
|
||||||
|
"n",
|
||||||
|
"o",
|
||||||
|
"p",
|
||||||
|
"q",
|
||||||
|
"r",
|
||||||
|
"s",
|
||||||
|
"t",
|
||||||
|
"u",
|
||||||
|
"v",
|
||||||
|
"w",
|
||||||
|
"x",
|
||||||
|
"y",
|
||||||
|
"z",
|
||||||
|
]
|
||||||
|
|
||||||
|
upcase = [
|
||||||
|
"A",
|
||||||
|
"B",
|
||||||
|
"C",
|
||||||
|
"D",
|
||||||
|
"E",
|
||||||
|
"F",
|
||||||
|
"G",
|
||||||
|
"H",
|
||||||
|
"I",
|
||||||
|
"J",
|
||||||
|
"K",
|
||||||
|
"M",
|
||||||
|
"N",
|
||||||
|
"O",
|
||||||
|
"P",
|
||||||
|
"Q",
|
||||||
|
"R",
|
||||||
|
"S",
|
||||||
|
"T",
|
||||||
|
"U",
|
||||||
|
"V",
|
||||||
|
"W",
|
||||||
|
"X",
|
||||||
|
"Y",
|
||||||
|
"Z",
|
||||||
|
]
|
||||||
|
|
||||||
|
symbols = [
|
||||||
|
"@",
|
||||||
|
"#",
|
||||||
|
"$",
|
||||||
|
"%",
|
||||||
|
"=",
|
||||||
|
":",
|
||||||
|
"?",
|
||||||
|
".",
|
||||||
|
"/",
|
||||||
|
"|",
|
||||||
|
"~",
|
||||||
|
"*",
|
||||||
|
"(",
|
||||||
|
")",
|
||||||
|
]
|
||||||
|
|
||||||
|
# combines all the character arrays above to form one array
|
||||||
|
combo = digits + upcase + locase + symbols
|
||||||
|
|
||||||
|
# randomly select at least one character from each character set above
|
||||||
|
rand_digit = random.choice(digits)
|
||||||
|
rand_upper = random.choice(upcase)
|
||||||
|
rand_lower = random.choice(locase)
|
||||||
|
rand_symbol = random.choice(symbols)
|
||||||
|
|
||||||
|
# combine the character randomly selected above
|
||||||
|
# at this stage, the password contains only 4 characters but
|
||||||
|
# we want a 12-character password
|
||||||
|
temp_pass = rand_digit + rand_upper + rand_lower + rand_symbol
|
||||||
|
|
||||||
|
# now that we are sure we have at least one character from each
|
||||||
|
# set of characters, we fill the rest of
|
||||||
|
# the password length by selecting randomly from the combined
|
||||||
|
# list of character above.
|
||||||
|
for x in range(max_len - 4):
|
||||||
|
temp_pass = temp_pass + random.choice(combo)
|
||||||
|
|
||||||
|
# convert temporary password into array and shuffle to
|
||||||
|
# prevent it from having a consistent pattern
|
||||||
|
# where the beginning of the password is predictable
|
||||||
|
temp_pass_list = array.array("u", temp_pass)
|
||||||
|
random.shuffle(temp_pass_list)
|
||||||
|
|
||||||
|
# traverse the temporary password array and append the chars
|
||||||
|
# to form the password
|
||||||
|
password = ""
|
||||||
|
for x in temp_pass_list:
|
||||||
|
password = password + x
|
||||||
|
|
||||||
|
# print out password
|
||||||
|
return password
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def cmdparse(cmd_in):
|
def cmdparse(cmd_in):
|
||||||
# Parse a string into arguments
|
# Parse a string into arguments
|
||||||
|
@ -14,13 +14,13 @@ class DatabaseBuilder:
|
|||||||
self.management_helper = management_helper
|
self.management_helper = management_helper
|
||||||
self.users_helper = users_helper
|
self.users_helper = users_helper
|
||||||
|
|
||||||
def default_settings(self):
|
def default_settings(self, password="crafty"):
|
||||||
logger.info("Fresh Install Detected - Creating Default Settings")
|
logger.info("Fresh Install Detected - Creating Default Settings")
|
||||||
Console.info("Fresh Install Detected - Creating Default Settings")
|
Console.info("Fresh Install Detected - Creating Default Settings")
|
||||||
default_data = self.helper.find_default_password()
|
default_data = self.helper.find_default_password()
|
||||||
|
|
||||||
username = default_data.get("username", "admin")
|
username = default_data.get("username", "admin")
|
||||||
password = default_data.get("password", "crafty")
|
password = default_data.get("password", password)
|
||||||
|
|
||||||
self.users_helper.add_user(
|
self.users_helper.add_user(
|
||||||
username=username,
|
username=username,
|
||||||
|
41
main.py
41
main.py
@ -144,6 +144,18 @@ if __name__ == "__main__":
|
|||||||
installer = DatabaseBuilder(database, helper, user_helper, management_helper)
|
installer = DatabaseBuilder(database, helper, user_helper, management_helper)
|
||||||
FRESH_INSTALL = installer.is_fresh_install()
|
FRESH_INSTALL = installer.is_fresh_install()
|
||||||
|
|
||||||
|
if getattr(sys, "frozen", False):
|
||||||
|
app_path = os.path.dirname(sys.executable)
|
||||||
|
RUN_MODE = "Frozen/executable"
|
||||||
|
else:
|
||||||
|
try:
|
||||||
|
app_full_path = os.path.realpath(__file__)
|
||||||
|
app_path = os.path.dirname(app_full_path)
|
||||||
|
RUN_MODE = "Non-interactive (e.g. 'python main.py')"
|
||||||
|
except NameError:
|
||||||
|
app_path = os.getcwd()
|
||||||
|
RUN_MODE = "Interactive"
|
||||||
|
|
||||||
if FRESH_INSTALL:
|
if FRESH_INSTALL:
|
||||||
Console.debug("Fresh install detected")
|
Console.debug("Fresh install detected")
|
||||||
Console.warning(
|
Console.warning(
|
||||||
@ -152,7 +164,14 @@ if __name__ == "__main__":
|
|||||||
f"through your router/firewall if you would like to be able "
|
f"through your router/firewall if you would like to be able "
|
||||||
f"to access Crafty remotely."
|
f"to access Crafty remotely."
|
||||||
)
|
)
|
||||||
installer.default_settings()
|
password = helper.create_pass()
|
||||||
|
installer.default_settings(password)
|
||||||
|
with open(
|
||||||
|
os.path.join(app_path, "app", "config", "default-creds.txt"),
|
||||||
|
"w",
|
||||||
|
encoding="utf-8",
|
||||||
|
) as f:
|
||||||
|
f.write(json.dumps({"username": "admin", "password": password}, indent=4))
|
||||||
else:
|
else:
|
||||||
Console.debug("Existing install detected")
|
Console.debug("Existing install detected")
|
||||||
Console.info("Checking for reset secret flag")
|
Console.info("Checking for reset secret flag")
|
||||||
@ -227,22 +246,10 @@ if __name__ == "__main__":
|
|||||||
|
|
||||||
internet_check_thread = Thread(target=internet_check, name="internet_check")
|
internet_check_thread = Thread(target=internet_check, name="internet_check")
|
||||||
|
|
||||||
def controller_setup():
|
def controller_setup(application_path, running_mode):
|
||||||
if not controller.check_system_user():
|
if not controller.check_system_user():
|
||||||
controller.add_system_user()
|
controller.add_system_user()
|
||||||
|
|
||||||
if getattr(sys, "frozen", False):
|
|
||||||
application_path = os.path.dirname(sys.executable)
|
|
||||||
running_mode = "Frozen/executable"
|
|
||||||
else:
|
|
||||||
try:
|
|
||||||
app_full_path = os.path.realpath(__file__)
|
|
||||||
application_path = os.path.dirname(app_full_path)
|
|
||||||
running_mode = "Non-interactive (e.g. 'python main.py')"
|
|
||||||
except NameError:
|
|
||||||
application_path = os.getcwd()
|
|
||||||
running_mode = "Interactive"
|
|
||||||
|
|
||||||
controller.set_project_root(application_path)
|
controller.set_project_root(application_path)
|
||||||
master_server_dir = controller.management.get_master_server_dir()
|
master_server_dir = controller.management.get_master_server_dir()
|
||||||
if master_server_dir == "":
|
if master_server_dir == "":
|
||||||
@ -262,7 +269,11 @@ if __name__ == "__main__":
|
|||||||
helper, tasks_manager, migration_manager, controller, import3
|
helper, tasks_manager, migration_manager, controller, import3
|
||||||
)
|
)
|
||||||
|
|
||||||
controller_setup_thread = Thread(target=controller_setup, name="controller_setup")
|
controller_setup_thread = Thread(
|
||||||
|
target=controller_setup,
|
||||||
|
name="controller_setup",
|
||||||
|
args=[RUN_MODE, app_path],
|
||||||
|
)
|
||||||
|
|
||||||
def setup_starter():
|
def setup_starter():
|
||||||
if not args.daemon:
|
if not args.daemon:
|
||||||
|
Loading…
Reference in New Issue
Block a user