From a8e06655dfc2dd4b567b4c6e4aed76a2f9781d43 Mon Sep 17 00:00:00 2001 From: Nikiroy78 <35032449+Nikiroy78@users.noreply.github.com> Date: Thu, 22 Apr 2021 19:00:03 +0300 Subject: [PATCH] Add files via upload --- Procfile | 1 + SQLEasy.py | 228 ++++++++++++ database.db | Bin 0 -> 102400 bytes mailclient.py | 53 +++ requirements.txt | 1 + server.py | 766 +++++++++++++++++++++++++++++++++++++++ static/button.js | 58 +++ static/icon.ico | Bin 0 -> 70649 bytes static/script.js | 23 ++ static/scripts.js | 23 ++ static/scripts/button.js | 9 + static/source_test_20.js | 81 +++++ static/sources/icon.ico | Bin 0 -> 70649 bytes 13 files changed, 1243 insertions(+) create mode 100644 Procfile create mode 100644 SQLEasy.py create mode 100644 database.db create mode 100644 mailclient.py create mode 100644 requirements.txt create mode 100644 server.py create mode 100644 static/button.js create mode 100644 static/icon.ico create mode 100644 static/script.js create mode 100644 static/scripts.js create mode 100644 static/scripts/button.js create mode 100644 static/source_test_20.js create mode 100644 static/sources/icon.ico diff --git a/Procfile b/Procfile new file mode 100644 index 0000000..d4e632c --- /dev/null +++ b/Procfile @@ -0,0 +1 @@ +worker: python server.py $PORT \ No newline at end of file diff --git a/SQLEasy.py b/SQLEasy.py new file mode 100644 index 0000000..f61de44 --- /dev/null +++ b/SQLEasy.py @@ -0,0 +1,228 @@ +import sqlite3 + + +class SQLiteEasyException(Exception): + pass + + +def compareKey(DBlist, key, type_of_key=lambda x: x, hideIndex=True): + if not(type(DBlist) is list): + raise SQLiteEasyException(f"function compareKey need List object, unsupported type: {type(DBlist)}") + + if len(DBlist) > 0: + if key not in DBlist[0]: + raise SQLiteEasyException(f"key '{key}' not founded.") + DB_Dictonary = dict() + for BD in sorted(DBlist, key=lambda List: List[key]): + comparedBD = dict() + for Key in BD: + if not(Key == key) and hideIndex: + comparedBD[Key] = BD[Key] + elif not hideIndex: + comparedBD[Key] = BD[Key] + DB_Dictonary[type_of_key(BD[key])] = comparedBD + + return DB_Dictonary + + +def autoselectID_fromNew_item(DATABASE, TABLE, ID_KEY): + TABLE_DATA = DATABASE.getBase(TABLE) + TABLE_DATA = compareKey(TABLE_DATA, ID_KEY) + TABLE_DATA = [ID for ID in TABLE_DATA] + INDEX = 0 + for DATA_INDEX in TABLE_DATA: + if INDEX == DATA_INDEX: + INDEX += 1 + else: + return INDEX + return INDEX + + +class database: + def dict_factory(self, cursor, row): + dictDB = {} + for idx, col in enumerate(cursor.description): + dictDB[col[0]] = row[idx] + return dictDB + + def encodeSQLiteType(self, objectum, all_as_str=False): + if type(objectum) is str: + return "'%s'" % objectum.replace("'", "[SQLEasy_symbol:']") + elif objectum is None and all_as_str: + return "''" + elif objectum is None: + return 'NULL' + elif type(objectum) is bool and objectum and all_as_str: + return "'TRUE'" + elif type(objectum) is bool and objectum: + return 'TRUE' + elif type(objectum) is bool and not(objectum) and all_as_str: + return "'FALSE'" + elif type(objectum) is bool and not(objectum): + return 'FALSE' + elif all_as_str and True in [type(objectum) is int, type(objectum) is float]: + return "'%s'" % objectum + elif not(all_as_str) and True in [type(objectum) is int, type(objectum) is float]: + return objectum + else: + raise SQLiteEasyException(f"Unsupported type: {type(objectum)}") + + def __init__(self, PATH, DatabaseName=None): + self.ConnectedFile = sqlite3.connect(PATH, check_same_thread=False) + self.databaseChoosed = DatabaseName + self.ConnectedFile.row_factory = self.dict_factory + self.act_commit = True + + def toggleCommit(self, value=None): + if value in (False, True): + self.act_commit = value + else: + if self.act_commit: + self.act_commit = False + else: + self.act_commit = True + + def commit(self): + self.ConnectedFile.commit() + + def getBase(self, DatabaseName=None, elementsFromDB='*'): + elementsFromDB = str(elementsFromDB) + if DatabaseName is None and self.databaseChoosed is None: + raise SQLiteEasyException("Database is not choosed") + elif DatabaseName is None and not(self.databaseChoosed is None): + dbCursore = self.ConnectedFile.cursor() + dbCursore.execute(f"select {elementsFromDB} from {self.databaseChoosed}") + result = dbCursore.fetchall() + else: + dbCursore = self.ConnectedFile.cursor() + dbCursore.execute(f"select {elementsFromDB} from {DatabaseName}") + self.databaseChoosed = DatabaseName + result = dbCursore.fetchall() + + for rowID in range(len(result)): + row = result[rowID] + for cellKey in row: + if type(row[cellKey]) is str: + result[rowID][cellKey] = row[cellKey].replace('[SQLEasy_symbol:']', "'") + return result + + def pop(self, key, value, DatabaseName=None): + if type(value) is str: + # value = f"'%s'" % value.replace('\'', '\\\'') + value = f"'%s'" % value.replace("'", '[SQLEasy_symbol:']') + if DatabaseName is None and not(self.databaseChoosed is None): + DatabaseName = self.databaseChoosed + elif DatabaseName is None: + raise SQLiteEasyException("Database is not choosed") + dbCursore = self.ConnectedFile.cursor() + dbCursore.execute('DELETE FROM %s\n\nWHERE %s == %s;' % (DatabaseName, key, value)) + if self.act_commit: + self.ConnectedFile.commit() + + def setItem(self, key, newValue, indexKey, value, DatabaseName=None): + newValue = self.encodeSQLiteType(newValue) + value = self.encodeSQLiteType(value) + if DatabaseName is None and not(self.databaseChoosed is None): + DatabaseName = self.databaseChoosed + elif DatabaseName is None: + raise SQLiteEasyException("Database is not choosed") + dbCursore = self.ConnectedFile.cursor() + if value is None: + dbCursore.execute('UPDATE %s SET %s = %s WHERE %s is NULL;' % (DatabaseName, key, newValue, indexKey)) + else: + dbCursore.execute('UPDATE %s SET %s = %s WHERE %s = %s;' % (DatabaseName, key, newValue, indexKey, value)) + if self.act_commit: + self.ConnectedFile.commit() + + def add(self, values, DatabaseName=None): + if DatabaseName is None and not(self.databaseChoosed is None): + DatabaseName = self.databaseChoosed + elif DatabaseName is None: + raise SQLiteEasyException("Database is not choosed") + if DatabaseName is None and not(self.databaseChoosed is None): + DatabaseName = self.databaseChoosed + elif DatabaseName is None: + raise SQLiteEasyException("Database is not choosed") + + keys = [str(key) for key in values] + values = [self.encodeSQLiteType(values[key], all_as_str=True) for key in values] + + dbCursore = self.ConnectedFile.cursor() + try: + dbCursore.execute('INSERT INTO %s (%s) VALUES (%s)' % (DatabaseName, ', '.join(keys), ', '.join(values))) + except: + dbCursore.execute('INSERT OR IGNORE INTO %s (%s) VALUES (%s)' % (DatabaseName, ', '.join(keys), ', '.join(values))) + if self.act_commit: + self.ConnectedFile.commit() + + def uploadFiles(self, binary, DatabaseName=None): # Uwaga! Может работать с ошибками. + if not(type(binary) is bytes or type(binary) is bytearray): + raise SQLiteEasyException('You can upload only byte or bytearray types!!') + dbCursore = self.ConnectedFile.cursor() + binary = sqlite3.Binary(binary) + + if DatabaseName is None and not(self.databaseChoosed is None): + DatabaseName = self.databaseChoosed + elif DatabaseName is None: + raise SQLiteEasyException("Database is not choosed") + if DatabaseName is None and not(self.databaseChoosed is None): + DatabaseName = self.databaseChoosed + elif DatabaseName is None: + raise SQLiteEasyException("Database is not choosed") + # (!) Дописать + + def chooseDataBase(self, DatabaseName): + self.getBase(DatabaseName) + self.databaseChoosed = DatabaseName + + def currentIndex(self, key, value, DatabaseName=None): + if DatabaseName is None and not(self.databaseChoosed is None): + DatabaseName = self.databaseChoosed + elif DatabaseName is None: + raise SQLiteEasyException("Database is not choosed") + + DB = self.getBase(DatabaseName) + + ID = 0 + for Dictonary in sorted(DB, key=lambda dictonary: dictonary[key]): + if Dictonary[key] == value: + return ID + ID += 1 + + def currentValue(self, key, value, DatabaseName=None): + if DatabaseName is None and not(self.databaseChoosed is None): + DatabaseName = self.databaseChoosed + elif DatabaseName is None: + raise SQLiteEasyException("Database is not choosed") + + DB = self.getBase(DatabaseName) + + for Dictonary in sorted(DB, key=lambda dictonary: dictonary[key]): + if Dictonary[key] == value: + return Dictonary + + def createColumn(self, columnName, tableName, DatabaseName=None): + return # (!) Не реализовано!! + + def getTables(self): + dbCursore = self.ConnectedFile.cursor() + dbCursore.execute('SELECT name from sqlite_master where type= "table"') + return [item['name'] for item in dbCursore.fetchall()] + + def getDict(self): + dictonary = dict() + tables = self.getTables() + for table in tables: + dictonary[table] = self.getBase(table) + return dictonary + + def execute(self, req): + dbCursore = self.ConnectedFile.cursor() + dbCursore.execute(req) + if self.act_commit: + self.ConnectedFile.commit() + return dbCursore.fetchall() + + +def formingTable(dictonary, path): + pass # В разработке \ No newline at end of file diff --git a/database.db b/database.db new file mode 100644 index 0000000000000000000000000000000000000000..bc79f8ece45b841d6ea400873fe7d3444e2e23a4 GIT binary patch literal 102400 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 SfB*y_009U<00LKmz<&TnUwjz= literal 0 HcmV?d00001 diff --git a/mailclient.py b/mailclient.py new file mode 100644 index 0000000..adee0e2 --- /dev/null +++ b/mailclient.py @@ -0,0 +1,53 @@ +import smtplib as smtp + + +class output: + def __init__(self): + self.debug = False + + def toggleDebug(self, flag=None): + if flag is None: + if self.debug: + self.debug = False + else: + self.debug = True + else: + self.debug = flag + + def printf(self, *args, sep=' ', end='\n', file=None): + if self.debug: + if file is None: + print(*args, sep=sep, end=end) + else: + print(*args, sep=sep, end=end, file=file) + + +output_tool = output() +smtp.print = output_tool.printf + + +class mail: + def __init__(self, email, password): + self.email = email + self.password = password + + def set_smtp_server(self, url): + smtp.SMTP_SSL(url) + self.SMTP_SERVER = url + + def send(self, subject, email_text, to_mail): + message = 'From: {}\nTo: {}\nSubject: {}\n\n{}'.format(self.email, + to_mail, + subject, + email_text) + server = smtp.SMTP_SSL(self.SMTP_SERVER) + server.set_debuglevel(1) + server.ehlo(self.email) + server.login(self.email, self.password) + server.auth_plain() + server.sendmail( + self.email, + to_mail, + message.encode('utf-8') + ) + server.quit() \ No newline at end of file diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..8ab6294 --- /dev/null +++ b/requirements.txt @@ -0,0 +1 @@ +flask \ No newline at end of file diff --git a/server.py b/server.py new file mode 100644 index 0000000..938f131 --- /dev/null +++ b/server.py @@ -0,0 +1,766 @@ +from flask import Flask, render_template, request, redirect, url_for, flash, make_response +import SQLEasy, random, mailclient, traceback, json, time, socket + +database = SQLEasy.database('database.db') + +app = Flask(__name__) + +HOST = '127.0.0.1' +HOST = socket.gethostbyname(socket.gethostname()) +PORT = 8080 + +EMAIL = '' # Введите сюда свой адрес электронной почты +EMAIL_PASSWORD = '' # Введите сюда свой пароль от электронной почты +# Рекомендуется использовать сервера Яндекса: smtp.yandex.ru +SMTP_SERVER = 'smtp.yandex.ru' # Укажите свой SMTP сервер (смотрите по сервису, обычно SMTP сервера находятся по адресу smtp.sevise.org, например: smtp.google.com) +mailObject = mailclient.mail(EMAIL, EMAIL_PASSWORD) +mailObject.set_smtp_server(SMTP_SERVER) + +file_content = '''var type = "auth"; + +function timeConverter(UNIX_timestamp){ + var a = new Date(UNIX_timestamp * 1000); + var months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']; + var year = a.getFullYear(); + var month = months[a.getMonth()]; + var date = a.getDate(); + var hour = a.getHours(); + var min = a.getMinutes(); + var sec = a.getSeconds(); + var time = date + ' ' + month + ' ' + year + ' ' + hour + ':' + min + ':' + sec ; + return time; +} + +function buton_regAuth(){ + if(type == "auth") type = "reg"; + else type = "auth"; + if(type == "auth") document.getElementById("authwin").innerHTML = "
\n

Авторизация

\n

e-mail:

\n

password:

\n

\n
\n " + else document.getElementById("authwin").innerHTML = "
\n

Регистрация

\n

e-mail:

\n

повторите e-mail:

\n

password:

\n

повторите password:

\n

\n
\n " +} + +function confirmation_mail(mail_adress) { + var codeConfirmation = "
\n
\n

Введите код

\n

\n

Если письмо не пришло, то проверьте папку \"Спам\", проверьте ваш чёрный список на наличие почтового адреса бота, проверьте правильность введённых данных при регистрации.

\n

\n
\n
" + + var GET_Request = new XMLHttpRequest(); + GET_Request.open("GET", "http://127.0.0.1:8080/api/confirmation/start?email=" + mail_adress, true); + GET_Request.onload = function (){ + var content = GET_Request.responseText; + document.getElementById("authwin").innerHTML = codeConfirmation; + } + GET_Request.send(null); +} + +function get_cookies(){ + var cookie_f = document.cookie; + var cookies = cookie_f.split('; '); + // alert(cookie_f); + var returnCookie = {}; + + cookies.forEach(function(item, i, cookies) { + console.log(item); + ItemArray = item.split('='); + console.log(ItemArray); + console.log(ItemArray[0]); + console.log(ItemArray[1]); + returnCookie[ItemArray[0]] = ItemArray[1]; + }); + console.log(returnCookie) + + return returnCookie; +} + +function update(){ + var cookies = get_cookies(); + var xhr = new XMLHttpRequest(); + + xhr.open('GET', "http://127.0.0.1:8080/api/user/get_pages?autogroup=1&token=" + cookies.token, false); + // alert('ok'); + + xhr.send(); + if (xhr.status != 200) { + var ok = 'ok'; + } else { + var values = JSON.parse(xhr.responseText); + // alert(xhr.responseText); + var groups = values.response; + var retV = ''; + groups.forEach(function(group, i, groups) { + var item = ''; + var clocker = 0; + group.forEach(function(cellContent, i, group) { + clocker += 1; + item += `
${cellContent.title}
Создано:
${timeConverter(cellContent.created)}
Отредактирован:
${timeConverter(cellContent.edited)}
\n`; + }); + retV += `
${item}
\n`; + }); + retV += "
Добавить страницу
\n
Выйти
"; + document.getElementById("field").innerHTML = retV; + } +}''' + +for codePath in ('static/button.js', 'static/script.js', 'static/scripts.js', 'static/source_test_20.js', 'static/scripts/button.js'): + content = file_content + + content = content.replace('127.0.0.1:8080', f"{HOST}:{PORT}") + + jsCodeObj = open(codePath, 'wt', encoding='utf-8') + jsCodeObj.write(content) + jsCodeObj.close() + + +def formatMail(mail): + servise = mail.split('@')[-1] + domain = mail.split('@')[0] + if servise in ('ya.ru', 'yandex.ru', 'yandex.by', 'yandex.ua', 'yandex.kz'): + servise = 'yandex.ru' + elif servise in ('mail.ru', 'inbox.ru', 'internet.ru', 'bk.ru', 'list.ru'): + servise = 'mail.ru' + + return f"{domain}@{servise}" + + +def genToken(LEN=32): + TOKEN = '' + for _ in range(LEN): + TOKEN += '0123456789abcdef'[random.randint(0, 15)] + return TOKEN + + +def checkToken(TOKEN): + if not(TOKEN): + return False + data = database.getBase('auths') + data = [DATA['token'] for DATA in data] + if not(TOKEN in data): + return False + + data = SQLEasy.compareKey(database.getBase('auths'), 'token')[TOKEN] + return bool(data['active']) + + +def checkMail(MAIL): + MAIL = formatMail(MAIL) + if not(MAIL): + return False + data = database.getBase('Users') + data = [formatMail(DATA['email']) for DATA in data] + + return MAIL in data + + +def checkPassword(PASS): + if not(PASS): + return False + data = database.getBase('Users') + data = [DATA['password'] for DATA in data] + + return PASS in data + + +def getUserData(TOKEN): + UserID = SQLEasy.compareKey(database.getBase('auths'), 'token')[TOKEN]['UserID'] + return SQLEasy.compareKey(database.getBase('Users'), 'ID', hideIndex=False)[UserID] + + +def validData_check(MAIL, PASSWORD): + userData = SQLEasy.compareKey(database.getBase('Users'), 'email')[MAIL] + return userData['password'] == PASSWORD + + +@app.route('/') +def index(): + if not(checkToken(request.cookies.get('token'))): + errorCode = '' + if request.args.get('error', default=False): + errorCode = '
Ошибка: %s
' % request.args.get('error') + + retPage = ''' + + Блокнот онлайн + + + + + + + + + ERROM_MSG +
+
+

Авторизация

+

e-mail:

+

password:

+

+
+ +
+ +''' + retPage = retPage.replace('ERROM_MSG', errorCode) + return retPage + else: + return redirect("/note/menu", code=302) + + +@app.route('/logout') +def logout(): + res = redirect("/", code=302) + res.set_cookie('token', 'NULL', max_age=1) + return res + +@app.route('/note/id/') +def pageView(PageID): + if checkToken(request.cookies.get('token')): + try: + PageID = int(PageID) + except: + return redirect("/", code=302) + pageData = SQLEasy.compareKey(database.getBase('Pages'), 'ID', hideIndex=False)[PageID] + title = pageData['title'] + content = pageData['content'] + + if getUserData(request.cookies.get('token'))['ID'] != pageData['ownerID']: + return redirect("/?error=Отказано в доступе.", code=302) + + if request.args.get('act') != 'edit': + HTMLcontent = ''' + + NOTETITLE + + + + + + +

NOTETITLE

+
+
+ NOTECONTENT +
+

+ +

+ +
+

+
+ +''' + HTMLcontent = HTMLcontent.replace('HOSTPORTION', f"{HOST}:{PORT}") + HTMLcontent = HTMLcontent.replace('NOTETITLE', title) + HTMLcontent = HTMLcontent.replace('NOTECONTENT', content) + return HTMLcontent + else: + HTMLcontent = ''' + + NOTETITLE + + + + + + +

Редактирование NOTECONTENT

+
+
+

Заголовок: + + +

+

Содержание:

+

+

+
+
+ +''' + HTMLcontent = HTMLcontent.replace('HOSTPORTION', f"{HOST}:{PORT}") + HTMLcontent = HTMLcontent.replace('NOTETITLE', title) + HTMLcontent = HTMLcontent.replace('PAGE_ID', str(PageID)) + HTMLcontent = HTMLcontent.replace('NOTECONTENT', content) + return HTMLcontent + else: + return redirect("/", code=302) + +@app.route('/note/') +def main_menu(menu_ind): + if not(checkToken(request.cookies.get('token'))): + return redirect("/", code=302) + + if menu_ind == 'menu': + HTMLcontent = ''' + + Главная страница + + + + + + + + +

Ваши заметки

+
+
+
Добавить страницу
+
+
+ + +''' + HTMLcontent = HTMLcontent.replace('HOSTPORTION', f"{HOST}:{PORT}") + return HTMLcontent + elif menu_ind == 'add': + HTMLcontent = ''' + + Новая запись + + + + + + +

Создать заметку

+
+
+

Заголовок: + +

+

Содержание:

+

+

+
+
+ +''' + HTMLcontent = HTMLcontent.replace('HOSTPORTION', f"{HOST}:{PORT}") + return HTMLcontent + +@app.route('/file_api//') +def file_api(method): + print('METHOD:', method) + + if not checkToken(request.cookies.get('token')): + return redirect("/?error=Для использования файлового API нужно авторизоваться.", code=302) + + if method == 'add': + userObj = SQLEasy.compareKey(database.getBase('auths'), 'token')[request.cookies.get('token')]['UserID'] + userObj = SQLEasy.compareKey(database.getBase('Users'), 'ID', hideIndex=False)[userObj] + + title = request.args.get('title') + if len(title) < 3: + return redirect("/note/add", code=302) + color = request.args.get('color') + if len(color) < 3: + return redirect("/note/add", code=302) + content = request.args.get('content') + if len(content) == 0: + return redirect("/note/add", code=302) + + newID = SQLEasy.autoselectID_fromNew_item(database, 'Pages', 'ID') + database.add({ + 'ID': newID, + 'ownerID': userObj['ID'], + 'title': title, + 'content': content, + 'color': f"#{color}", + 'created': int(time.time()), + 'edited': int(time.time()) + }, 'Pages') + return redirect("/note/id/%s" % newID, code=302) + if method == 'edit': + print('FUCK1488!!!') + try: + noteID = int(request.args.get('id')) + except: + return redirect("/", code=302) + + userObj = SQLEasy.compareKey(database.getBase('auths'), 'token')[request.cookies.get('token')]['UserID'] + userObj = SQLEasy.compareKey(database.getBase('Users'), 'ID', hideIndex=False)[userObj] + + title = request.args.get('title') + if len(title) < 3: + return redirect("/note/id/%s" % noteID, code=302) + color = request.args.get('color') + if len(color) < 3: + return redirect("/note/id/%s" % noteID, code=302) + content = request.args.get('content') + if len(content) == 0: + return redirect("/note/id/%s" % noteID, code=302) + + database.setItem( + 'title', + title, + 'ID', + noteID, + DatabaseName='Pages' + ) + database.setItem( + 'content', + content, + 'ID', + noteID, + DatabaseName='Pages' + ) + database.setItem( + 'color', + f"#{color}", + 'ID', + noteID, + DatabaseName='Pages' + ) + database.setItem( + 'edited', + int(time.time()), + 'ID', + noteID, + DatabaseName='Pages' + ) + + return redirect("/note/id/%s" % noteID, code=302) + +@app.route('/oauth/') +def oauth(method): + if method == 'auth': + email = request.args.get('email', default=None) + if email is None: + return redirect("/?error=Не введён адрес электронной почты.", code=302) + if not checkMail(email): + return redirect("/?error=Неверный адрес электронной почты или пароль.", code=302) + email = formatMail(email) + + password = request.args.get('password', default=None) + if password is None: + return redirect("/?error=Не введён пароль", code=302) + if len(password) < 8: + return redirect("/?error=Поле \"Пароль\" должно содержать не менее 8 символов!", code=302) + if not checkPassword(password): + return redirect("/?error=Неверный адрес электронной почты или пароль.", code=302) + if not validData_check(email, password): + return redirect("/?error=Неверный адрес электронной почты или пароль.", code=302) + + while True: + token = genToken() + if token not in [item['token'] for item in database.getBase('auths')]: + break + + database.add({ + 'token': token, + 'UserID': SQLEasy.compareKey(database.getBase('Users'), 'email')[email]['ID'], + 'active': 1 + }, 'auths') + + res = redirect("/", code=302) + res.set_cookie('token', token, max_age=60*60*24*365*2) + + return res + elif method == 'register': + email = request.args.get('email', default=None) + if email is None: + return redirect("/?error=Не введён адрес электронной почты.", code=302) + + foward_email = request.args.get('fowardemail', default=None) + if email != foward_email: + print({"foward_email": foward_email, "email": email}) + return redirect("/?error=Адреса почтовых ящиков не совпадают.", code=302) + del foward_email + + if email in SQLEasy.compareKey(database.getBase('Users'), 'email'): + return redirect("/?error=Этот ящик уже зарегистрирован.", code=302) + + password = request.args.get('password', default=None) + if password is None: + return redirect("/?error=Не введён пароль", code=302) + if len(password) < 8: + return redirect("/?error=Поле \"Пароль\" должно содержать не менее 8 символов!", code=302) + + foward_password = request.args.get('fowardpassword', default=None) + if password != foward_password: + return redirect("/?error=Пароли не совподают.", code=302) + del foward_password + + database.add({ + 'ID': SQLEasy.autoselectID_fromNew_item(database, 'Users', 'ID'), + 'email': formatMail(email), + 'password': password, + 'verif_code': genToken(8).upper(), + 'mail_confirm': 0 + }, 'Users') + return redirect("/oauth/confirmation?mail=%s" % formatMail(email), code=302) + elif method == 'confirmation': + mail = request.args.get('mail', default=None) + finish_code = request.args.get('finish_code', default=None) + if mail is None and finish_code is None: + return redirect("/?error=Не задан ни почтовый ящик, ни код подтверждения при передаче параметров oauth/confirmation", code=302) + + if mail: + codeHTML = ''' + + Подтвердите почтовый адрес + + + + + + + + +
+
+

Подтвердите почтовый адрес

+

На ваш почтовый адрес: MAIL_ADRES придёт код активации.

+

Письмо придёт от адреса: BOT_MAIL_ADRES лучше сразу добавьте его в белый список.

+ +
+
+ +''' + + codeHTML = codeHTML.replace('HOSTPORTION', f"{HOST}:{PORT}") + codeHTML = codeHTML.replace('BOT_MAIL_ADRES', EMAIL) + codeHTML = codeHTML.replace('MAIL_ADRES', mail) + + return codeHTML + if finish_code: + finish_code = finish_code.upper() + + if finish_code not in [code for code in SQLEasy.compareKey(database.getBase('Users'), 'verif_code')]: + return redirect("/?error=Неверный код подтверждения.", code=302) + else: + userObj = SQLEasy.compareKey(database.getBase('Users'), 'verif_code')[finish_code] + database.setItem( + 'mail_confirm', + 1, + 'ID', + userObj['ID'], + DatabaseName='Users' + ) + + token = genToken() + database.add({ + 'token': token, + 'UserID': userObj['ID'], + 'active': 1 + }, 'auths') + + res = redirect("/", code=302) + res.set_cookie('token', token, max_age=60*60*24*365*2) + + return res + + return redirect("/?error=Неизвестный ранее метод oauth", code=302) + +@app.route('/api//') +def API(method_group, method): + if method_group == 'user': + if method == 'get_pages': + token = request.args.get('token', default=None) + autogroup = bool(request.args.get('autogroup', default=False)) + if not checkToken(token): + return '{"error": "invalid token"}' + session = SQLEasy.compareKey(database.getBase('auths'), 'token')[token] + userID = session['UserID'] + del session + userData = SQLEasy.compareKey(database.getBase('Users'), 'ID', hideIndex=False)[userID] + mypages = list() + + for page in database.getBase('Pages'): + if page['ownerID'] == userData['ID']: + mypages.append(page) + ret_mypages = mypages.copy() + if autogroup: + ret_mypages = list() + + MaxIndex = len(mypages) - 1 + Index = 0 + for page in mypages: + pageGr = list() + for _ in range(6): + if Index <= MaxIndex: + pageGr.append(mypages[Index]) + Index += 1 + ret_mypages.append(pageGr) + return json.dumps({ + "response": ret_mypages + }, indent="\t", ensure_ascii=False) + + if method_group == 'confirmation': + if method == 'start': + email = request.args.get('email', default=None) + code = 1 + warn_text = 'null' + if email is None: + return '{"error": "email address has been missed"}' + if email not in [mail for mail in SQLEasy.compareKey(database.getBase('Users'), 'email')]: + return '{"error": "this email not founded"}' + if SQLEasy.compareKey(database.getBase('Users'), 'email')[email]['mail_confirm']: + return '{"error": "this email was been activated"}' + if SQLEasy.compareKey(database.getBase('Users'), 'email')[email]['sended']: + code = 2 + warn_text = '"Message was been sended, please, check your mailbox"' + + verificationCode = SQLEasy.compareKey(database.getBase('Users'), 'email')[email]['verif_code'] + try: + mailObject.send('Код подтверждения', f"Код подтверждения: {verificationCode}", str(email)) + print('sended to %s' % email) + database.setItem( + 'sended', + 1, + 'email', + email, + DatabaseName='Users' + ) + return '{"response": 1, "warning": %s}' % warn_text + except Exception as exc: + print('FAILED:\n %s' % traceback.format_exc()) + return '{"error": "failed send message"}' + + return '{"error": "unknown method"}' + return '{"error": "unknown method group"}' + +@app.route('/index.') +def trueINDEX(jap): + return redirect("/", code=302) + +@app.route('/index') +def trueINDEX_noRasz(): + return redirect("/", code=302) + + + +if __name__ == '__main__': + app.run(port=PORT, host=HOST) # Сменить хост \ No newline at end of file diff --git a/static/button.js b/static/button.js new file mode 100644 index 0000000..efcaa44 --- /dev/null +++ b/static/button.js @@ -0,0 +1,58 @@ +var type = "auth"; +function buton_regAuth(){ + if(type == "auth") type = "reg"; + else type = "auth"; + if(type == "auth") document.getElementById("authwin").innerHTML = "
\n

Авторизация

\n

e-mail:

\n

password:

\n

\n
\n " + else document.getElementById("authwin").innerHTML = "
\n

Регистрация

\n

e-mail:

\n

повторите e-mail:

\n

password:

\n

повторите password:

\n

\n
\n " +} + +function confirmation_mail(mail_adress) { + var codeConfirmation = "
\n
\n

Введите код

\n

\n

Если письмо не пришло, то проверьте папку \"Спам\", проверьте ваш чёрный список на наличие почтового адреса бота, проверьте правильность введённых данных при регистрации.

\n

\n
\n
" + + var GET_Request = new XMLHttpRequest(); + GET_Request.open("GET", "http://127.0.0.1:8080/api/confirmation/start?email=" + mail_adress, true); + GET_Request.onload = function (){ + var content = GET_Request.responseText; + document.getElementById("authwin").innerHTML = codeConfirmation; + } + GET_Request.send(null); +} + +function get_cookies(){ + var cookie_f = document.cookie; + cookies = cookie_f.split('; '); + returnCookie = {}; + + cookies.forEach(function(item, i, cookies) { + ItemArray = item.split('='); + returnCookie[ItemArray[0]] = returnCookie[ItemArray[1]]; + }); + + return returnCookie; +} + +function update(){ + var cookies = get_cookies(); + var xhr = new XMLHttpRequest(); + + xhr.open('GET', "http://127.0.0.1:8080/api/user/get_pages?autogroup=1&token=" + + cookies.token, false); + + xhr.send(); + if (xhr.status != 200) { + var ok = 'ok'; + } else { + var values = JSON.parse(xhr.responseText); + var groups = values.response; + var retV = ''; + groups.forEach(function(group, i, groups) { + var item = ''; + group.forEach(function(cellContent, i, group) { + item += `
${cellContent.title}
\n`; + }); + retV += `
${item}
\n`; + }); + document.getElementById("field").innerHTML = retV; + + } +} \ No newline at end of file diff --git a/static/icon.ico b/static/icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..aa0133f4232fce30161bfebf5e6eb111d2695e66 GIT binary patch literal 70649 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 literal 0 HcmV?d00001 diff --git a/static/script.js b/static/script.js new file mode 100644 index 0000000..a045157 --- /dev/null +++ b/static/script.js @@ -0,0 +1,23 @@ +var type = "auth"; +function buton_regAuth(){ + if(type == "auth") type = "reg"; + else type = "auth"; + if(type == "auth") document.getElementById("authwin").innerHTML = "
\n

Авторизация

\n

e-mail:

\n

password:

\n

\n
\n " + else document.getElementById("authwin").innerHTML = "
\n

Регистрация

\n

e-mail:

\n

повторите e-mail:

\n

password:

\n

повторите password:

\n

\n
\n " +} + +function confirmation_mail(mail_adress) { + var codeConfirmation = "
\n
\n

Введите код

\n

\n

Если письмо не пришло, то проверьте папку \"Спам\", проверьте ваш чёрный список на наличие почтового адреса бота, проверьте правильность введённых данных при регистрации.

\n

\n
\n
" + + var GET_Request = new XMLHttpRequest(); + GET_Request.open("GET", "http://127.0.0.1:8080/api/confirmation/start?email=" + mail_adress, true); + GET_Request.onload = function (){ + var content = GET_Request.responseText; + document.getElementById("authwin").innerHTML = codeConfirmation; + } + GET_Request.send(null); + + +} + +function off_pass(){} \ No newline at end of file diff --git a/static/scripts.js b/static/scripts.js new file mode 100644 index 0000000..a045157 --- /dev/null +++ b/static/scripts.js @@ -0,0 +1,23 @@ +var type = "auth"; +function buton_regAuth(){ + if(type == "auth") type = "reg"; + else type = "auth"; + if(type == "auth") document.getElementById("authwin").innerHTML = "
\n

Авторизация

\n

e-mail:

\n

password:

\n

\n
\n " + else document.getElementById("authwin").innerHTML = "
\n

Регистрация

\n

e-mail:

\n

повторите e-mail:

\n

password:

\n

повторите password:

\n

\n
\n " +} + +function confirmation_mail(mail_adress) { + var codeConfirmation = "
\n
\n

Введите код

\n

\n

Если письмо не пришло, то проверьте папку \"Спам\", проверьте ваш чёрный список на наличие почтового адреса бота, проверьте правильность введённых данных при регистрации.

\n

\n
\n
" + + var GET_Request = new XMLHttpRequest(); + GET_Request.open("GET", "http://127.0.0.1:8080/api/confirmation/start?email=" + mail_adress, true); + GET_Request.onload = function (){ + var content = GET_Request.responseText; + document.getElementById("authwin").innerHTML = codeConfirmation; + } + GET_Request.send(null); + + +} + +function off_pass(){} \ No newline at end of file diff --git a/static/scripts/button.js b/static/scripts/button.js new file mode 100644 index 0000000..18837b2 --- /dev/null +++ b/static/scripts/button.js @@ -0,0 +1,9 @@ +var type = "auth"; +function buton_regAuth(){ + console.log("Poszel nahui") + if(type == "auth") type = "reg"; + else type = "auth"; + + if(type == "auth") document.getElementById("authwin").innerHTML = "
\n

Авторизация

\n

e-mail:

\n

password:

\n

\n
\n " + else document.getElementById("authwin").innerHTML = "
\n

Регистрация

\n

e-mail:

\n

повторите e-mail:

\n

password:

\n

повторите password:

\n

\n
\n " +} \ No newline at end of file diff --git a/static/source_test_20.js b/static/source_test_20.js new file mode 100644 index 0000000..67433d1 --- /dev/null +++ b/static/source_test_20.js @@ -0,0 +1,81 @@ +var type = "auth"; + +function timeConverter(UNIX_timestamp){ + var a = new Date(UNIX_timestamp * 1000); + var months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']; + var year = a.getFullYear(); + var month = months[a.getMonth()]; + var date = a.getDate(); + var hour = a.getHours(); + var min = a.getMinutes(); + var sec = a.getSeconds(); + var time = date + ' ' + month + ' ' + year + ' ' + hour + ':' + min + ':' + sec ; + return time; +} + +function buton_regAuth(){ + if(type == "auth") type = "reg"; + else type = "auth"; + if(type == "auth") document.getElementById("authwin").innerHTML = "
\n

Авторизация

\n

e-mail:

\n

password:

\n

\n
\n " + else document.getElementById("authwin").innerHTML = "
\n

Регистрация

\n

e-mail:

\n

повторите e-mail:

\n

password:

\n

повторите password:

\n

\n
\n " +} + +function confirmation_mail(mail_adress) { + var codeConfirmation = "
\n
\n

Введите код

\n

\n

Если письмо не пришло, то проверьте папку \"Спам\", проверьте ваш чёрный список на наличие почтового адреса бота, проверьте правильность введённых данных при регистрации.

\n

\n
\n
" + + var GET_Request = new XMLHttpRequest(); + GET_Request.open("GET", "http://127.0.0.1:8080/api/confirmation/start?email=" + mail_adress, true); + GET_Request.onload = function (){ + var content = GET_Request.responseText; + document.getElementById("authwin").innerHTML = codeConfirmation; + } + GET_Request.send(null); +} + +function get_cookies(){ + var cookie_f = document.cookie; + var cookies = cookie_f.split('; '); + // alert(cookie_f); + var returnCookie = {}; + + cookies.forEach(function(item, i, cookies) { + console.log(item); + ItemArray = item.split('='); + console.log(ItemArray); + console.log(ItemArray[0]); + console.log(ItemArray[1]); + returnCookie[ItemArray[0]] = ItemArray[1]; + }); + console.log(returnCookie) + + return returnCookie; +} + +function update(){ + var cookies = get_cookies(); + var xhr = new XMLHttpRequest(); + + xhr.open('GET', "http://127.0.0.1:8080/api/user/get_pages?autogroup=1&token=" + cookies.token, false); + // alert('ok'); + + xhr.send(); + if (xhr.status != 200) { + var ok = 'ok'; + } else { + var values = JSON.parse(xhr.responseText); + // alert(xhr.responseText); + var groups = values.response; + var retV = ''; + groups.forEach(function(group, i, groups) { + var item = ''; + var clocker = 0; + group.forEach(function(cellContent, i, group) { + clocker += 1; + item += `
${cellContent.title}
Создано:
${timeConverter(cellContent.created)}
Отредактирован:
${timeConverter(cellContent.edited)}
\n`; + }); + retV += `
${item}
\n`; + }); + retV += "
Добавить страницу
\n
Выйти
"; + document.getElementById("field").innerHTML = retV; + } +} \ No newline at end of file diff --git a/static/sources/icon.ico b/static/sources/icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..aa0133f4232fce30161bfebf5e6eb111d2695e66 GIT binary patch literal 70649 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 literal 0 HcmV?d00001