diff --git a/CLI/skoolos.py b/CLI/skoolos.py deleted file mode 100644 index 9477806..0000000 --- a/CLI/skoolos.py +++ /dev/null @@ -1,144 +0,0 @@ -import sys -from urllib.parse import urlparse -import requests -from requests_oauthlib import OAuth2Session -from selenium import webdriver -import os.path -import time -import http.server -import socketserver -from threading import Thread -from werkzeug.urls import url_decode -import pprint -from PyInquirer import prompt, print_json -import json -import os -import argparse -from cryptography.fernet import Fernet - -client_id = r'QeZPBSKqdvWFfBv1VYTSv9iFGz5T9pVJtNUjbEr6' -client_secret = r'0Wl3hAIGY9SvYOqTOLUiLNYa4OlCgZYdno9ZbcgCT7RGQ8x2f1l2HzZHsQ7ijC74A0mrOhhCVeZugqAmOADHIv5fHxaa7GqFNtQr11HX9ySTw3DscKsphCVi5P71mlGY' -redirect_uri = 'http://localhost:8000/callback/' -token_url = 'https://ion.tjhsst.edu/oauth/token/' -scope = ["read"] - - -def main(): - print("") - print("░██████╗██╗░░██╗░█████╗░░█████╗░██╗░░░░░  ░█████╗░░██████╗") - print("██╔════╝██║░██╔╝██╔══██╗██╔══██╗██║░░░░░  ██╔══██╗██╔════╝") - print("╚█████╗░█████═╝░██║░░██║██║░░██║██║░░░░░  ██║░░██║╚█████╗░") - print("░╚═══██╗██╔═██╗░██║░░██║██║░░██║██║░░░░░  ██║░░██║░╚═══██╗") - print("██████╔╝██║░╚██╗╚█████╔╝╚█████╔╝███████╗  ╚█████╔╝██████╔╝") - print("╚═════╝░╚═╝░░╚═╝░╚════╝░░╚════╝░╚══════╝  ░╚════╝░╚═════╝░") - print("") - - if not os.path.exists(".profile"): - input("Welcome to SkoolOS. Press any key to create an account") - authenticate() - else: - file = open('key.key', 'rb') - key = file.read() # The key will be type bytes - file.close() - f = Fernet(key) - file = open('.profile', 'rb') - p = file.read() # The key will be type bytes - file.close() - - - # while True: - # pass - -def authenticate(): - oauth = OAuth2Session(client_id=client_id, redirect_uri=redirect_uri, scope=scope) - authorization_url, state = oauth.authorization_url("https://ion.tjhsst.edu/oauth/authorize/") - - cdir = os.getcwd() - #Linux: chromdriver-linux - #Macos: chromdriver-mac - #Windows: chromdriver.exe - if('CLI' in os.getcwd()): - path = os.path.join(os.getcwd(), '../','chromedriver-mac') - else: - path = os.path.join(os.getcwd(), 'chromedriver-mac') - - browser = webdriver.Chrome(path) - web_dir = os.path.join(os.path.dirname(__file__), 'oauth') - print(web_dir) - os.chdir(web_dir) - if os.path.exists("index.html"): - os.remove("index.html") - - template = open("template.html", "r") - index = open("index.html", "w") - for line in template: - index.write(line.replace('AUTH_URL', authorization_url)) - template.close() - index.close() - - server = Thread(target=create_server) - server.daemon = True - server.start() - - browser.get("localhost:8000/") - - while "http://localhost:8000/callback/?code" not in browser.current_url: - time.sleep(0.25) - - url = browser.current_url - gets = url_decode(url.replace("http://localhost:8000/callback/?", "")) - while "http://localhost:8000/callback/?code" not in browser.current_url: - time.sleep(0.25) - - url = browser.current_url - gets = url_decode(url.replace("http://localhost:8000/callback/?", "")) - code = gets.get("code") - if state == gets.get("state"): - state = gets.get("state") - print("states good") - browser.quit() - - #print(code) - print(state) - - payload = {'grant_type': 'authorization_code', 'code': code, 'redirect_uri': redirect_uri, 'client_id': client_id, - 'client_secret': client_secret, 'csrfmiddlewaretoken': state} - token = requests.post("https://ion.tjhsst.edu/oauth/token/", data=payload).json() - #print(token) - headers = {'Authorization': f"Bearer {token['access_token']}"} - - # And finally get the user's profile! - profile = requests.get("https://ion.tjhsst.edu/api/profile", headers=headers).json() - - pprint.pprint(profile) - username = profile['ion_username'] - email = profile['tj_email'] - first_name = profile['first_name'] - last_name = profile['last_name'] - - os.chdir(cdir) - # key = Fernet.generate_key() - # file = open('key.key', 'wb') - # file.write(key) # The key is type bytes still - # file.close() - # p = str(profile).encode() - # f = Fernet(key) - # encrypted = f.encrypt(p) - - # profileFile = open(".profile", "wb") - # #profileFile.write(profile.text()) - # profileFile.write(encrypted) - # profileFile.close() - - sys.exit - - -def create_server(): - port = 8000 - handler = http.server.SimpleHTTPRequestHandler - httpd = socketserver.TCPServer(("", port), handler) - print("serving at port:" + str(port)) - httpd.serve_forever() - -if __name__ == "__main__": - main() diff --git a/skoolos.py b/skoolos.py index 2dd9b68..f335dfe 100644 --- a/skoolos.py +++ b/skoolos.py @@ -62,7 +62,6 @@ def main(): teacherCLI(USER, PWD) - # while True: # pass def studentCLI(user, password): @@ -212,7 +211,6 @@ def teacherCLI(user, password): #print("Assignments: " + n) b = False if(not os.path.isdir(teacher.username + "/" + course + "/" + n)): - nlist.remove(n) b = False if(b): tlist.append(n) @@ -231,6 +229,9 @@ def teacherCLI(user, password): }, ] ass = prompt(questions)['assignment'] + apath = teacher.username + "/" + course + "/" + ass + + teacher.addAssignment(apath, course, due) def getUser(ion_user, password, utype):