Add installation.py for generating config.

This commit is contained in:
Ceda EI 2019-05-17 12:58:07 +05:30
parent 6ba6a9436b
commit c5be1882f8
1 changed files with 63 additions and 0 deletions

63
installation.py Executable file
View File

@ -0,0 +1,63 @@
#!/usr/bin/env python3
import bcrypt
import json
def get_number(prompt):
while True:
try:
num = int(input(prompt))
return num
except ValueError:
print("Not a number!\n")
def get_boolean(prompt, default):
string = input(prompt).lower()
if string in ["y", "yes", "true", "t", "1"]:
return True
elif string in ["n", "no", "false", "f", "0"]:
return False
return default
config = {}
# Master password
print("""
Enter master password. Master password is the password you provide to your bus
factor. When the master password is entered, The Long Night will send messages
to you via all the configured mediums. If you do not respond within 2 days
(configurable), The Long Night will add the supplied key as an authorized key
for the user it is running as.
""")
password = input("> ").encode()
config["password"] = bcrypt.hashpw(password, bcrypt.gensalt()).decode()
print("\nEnter number of days to wait before adding the ssh key\n")
config["days"] = get_number("> ")
# SSH key
print("\nEnter ssh key to add\n")
config["ssh_key"] = input("> ")
print("\nConfiguring mediums for contact when the master password is entered.")
# Telegram
print("\nDo you want to enable Telegram messages?\n")
config["telegram"] = {}
tg_enable = get_boolean("Y/n ", True)
config["telegram"]["enabled"] = tg_enable
if tg_enable:
print("\nEnter bot token\n")
config["telegram"]["bot_token"] = input("> ")
print("\nEnter userid\n")
config["telegram"]["user_id"] = get_number("> ")
print("\nStoring config.")
with open('config.json', 'w') as f:
json.dump(config, f)
print("Stored config.")