mirror of
https://github.com/Rushilwiz/SkoolOS.git
synced 2025-04-16 02:10:19 -04:00
wow raffu thanks for deleting it
This commit is contained in:
parent
c3f44606e3
commit
e9851c0566
144
CLI/skoolos.py
144
CLI/skoolos.py
|
@ -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()
|
|
Loading…
Reference in New Issue
Block a user