Implement load/save/check config file and account setup
parent
353dfb90e9
commit
0913f6d2ce
@ -1 +1,2 @@
|
||||
venv/
|
||||
__pycache__/
|
||||
|
@ -0,0 +1,58 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
|
||||
import json
|
||||
import appdirs
|
||||
import os
|
||||
import validators
|
||||
from pathlib import Path
|
||||
|
||||
appname = "NotePostCLI"
|
||||
appauthor = "Netsyms Technologies"
|
||||
|
||||
CONFIG_FOLDER = appdirs.user_config_dir(appname, appauthor)
|
||||
CONFIG_FILE = CONFIG_FOLDER + "/settings.json"
|
||||
|
||||
config = {}
|
||||
|
||||
|
||||
def checkconfig():
|
||||
config_path = Path(CONFIG_FILE)
|
||||
if config_path.is_file():
|
||||
try:
|
||||
# Attempt to read and parse the config file
|
||||
with open(CONFIG_FILE, 'r') as config_file:
|
||||
confjson = json.load(config_file)
|
||||
if "url" not in confjson:
|
||||
return False
|
||||
if "username" not in confjson:
|
||||
return False
|
||||
if "password" not in confjson:
|
||||
return False
|
||||
return True
|
||||
except Exception:
|
||||
return False
|
||||
else:
|
||||
return False
|
||||
|
||||
|
||||
def loadconfig():
|
||||
global config
|
||||
with open(CONFIG_FILE, 'r') as config_file:
|
||||
config = json.load(config_file)
|
||||
|
||||
|
||||
def saveconfig():
|
||||
global config
|
||||
jsonstring = json.dumps(config, sort_keys=True, indent=4)
|
||||
if not os.path.exists(CONFIG_FOLDER):
|
||||
os.makedirs(CONFIG_FOLDER)
|
||||
with open(CONFIG_FILE, 'w') as config_file:
|
||||
config_file.write(jsonstring)
|
||||
# Protect from other users who might want to peek at our credentials
|
||||
os.chmod(CONFIG_FILE, 0o600)
|
||||
|
||||
|
||||
def getconfig():
|
||||
global config
|
||||
return config
|
@ -1,55 +1,75 @@
|
||||
#!/usr/bin/env python3
|
||||
from os import read
|
||||
|
||||
import i18n
|
||||
import validators
|
||||
import json
|
||||
import requests
|
||||
from pathlib import Path
|
||||
from config import *
|
||||
from getpass import getpass
|
||||
|
||||
CONFIG_FILE = "~/.config/notepostcli.json"
|
||||
|
||||
|
||||
def checkconfig():
|
||||
config_path = Path(CONFIG_FILE)
|
||||
if config_path.is_file():
|
||||
try:
|
||||
# Attempt to read and parse the config file
|
||||
config_file = open(CONFIG_FILE, 'r')
|
||||
json.load(config_file)
|
||||
return True
|
||||
except Exception:
|
||||
return False
|
||||
else:
|
||||
return False
|
||||
|
||||
|
||||
def firstsetup():
|
||||
def firstsetup(url = "", username = ""):
|
||||
config = getconfig()
|
||||
# Get URL
|
||||
while True:
|
||||
url = input(i18n.t("Server URL: "))
|
||||
if url != "":
|
||||
url = input(i18n.t("Server URL") + " (" + url + "): ") or url
|
||||
else:
|
||||
url = input(i18n.t("Server URL") + ": ")
|
||||
if validators.url(url):
|
||||
break
|
||||
else:
|
||||
print(i18n.t("That doesn't look right, try again."))
|
||||
# Get username
|
||||
while True:
|
||||
username = input(i18n.t("Username: "))
|
||||
if username != "":
|
||||
username = input(i18n.t("Username") + " (" + username + "): ") or username
|
||||
else:
|
||||
username = input(i18n.t("Username") + ": ")
|
||||
if username != "":
|
||||
break
|
||||
# Get password
|
||||
while True:
|
||||
password = getpass(i18n.t("Password: "))
|
||||
password = getpass(i18n.t("Password") + ": ")
|
||||
if password != "":
|
||||
break
|
||||
|
||||
r = requests.post(url + "/api/ping", data = {"username": username, "password": password})
|
||||
print(r.json())
|
||||
try:
|
||||
r = requests.post(url + "/api/ping", auth=(username, password))
|
||||
except:
|
||||
print(i18n.t("Could not connect to the server. Try again."))
|
||||
firstsetup()
|
||||
return
|
||||
|
||||
if r.status_code == 401:
|
||||
print(i18n.t("Login incorrect, try again."))
|
||||
firstsetup(url)
|
||||
return
|
||||
|
||||
try:
|
||||
resp = r.json()
|
||||
if resp["status"] == "ERROR":
|
||||
print(resp["msg"])
|
||||
firstsetup(url, username)
|
||||
return
|
||||
config["url"] = url
|
||||
config["username"] = username
|
||||
config["password"] = password
|
||||
saveconfig()
|
||||
return
|
||||
except ValueError:
|
||||
print(i18n.t("Login incorrect, try again."))
|
||||
firstsetup(url, username)
|
||||
return
|
||||
|
||||
|
||||
def main():
|
||||
if not checkconfig():
|
||||
print(i18n.t("No valid settings file found, running setup wizard."))
|
||||
firstsetup()
|
||||
|
||||
else:
|
||||
loadconfig()
|
||||
print(getconfig())
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
|
Loading…
Reference in New Issue