From 35542d3dee6c37bd343dfccc43451ab9789070af Mon Sep 17 00:00:00 2001 From: FullGreaM Date: Sun, 1 Aug 2021 17:22:55 +0300 Subject: [PATCH] Up-date readme.md --- README.md | 243 +++++++++++++++++++++++++++++++++++++++++++++++- server.py | 13 ++- server_tools.py | 37 ++++++++ 3 files changed, 291 insertions(+), 2 deletions(-) create mode 100644 server_tools.py diff --git a/README.md b/README.md index a3341d8..0a257f4 100644 --- a/README.md +++ b/README.md @@ -1 +1,242 @@ -# SQLEasy_server \ No newline at end of file +# SQLEasy server +It is documentation from SQLEasy server... +## Configuration +SQLEasy server must been configurated from correct work in your server. +### SQLEasy server GUI +this is GUI version of SQLEasy server, after start, you can edit custom settings and write your data: host, port, etc. +// Here pictures :) +### SQLEasy server lite +Lite version (console version) configure in command panel (terminal from Linux version and console from win32 version): +```bash +Enter login from command panel: Admin +Enter password from command panel: ***** +You use httpS protocol? (Y/n): n +Enter host: http://localhost +Enter port (default: 8080): 8080 +Want you save server errors in error logs? (Y/n): Y +Want you show detalis server errors in resonse (may be usefull from your projects, what no see error logs in server)? (Y/n): Y +Make directory "error logs"... +Creating database.... +Creating config.cfg... +Starting server http://localhost:8080... +===================================== +``` +Ps: in first step you can choose language +```bash +=============== +CHOOSE LANGUAGE +=============== +1. [EN] English/English +2. [RU] Russian/Русский +3. [PL] Polen/Polski +=============== +Enter code: 1 +``` +You can choose language later. +## Administration +From administrating your server, you can use tools in http://localhost:8080/panel. Here located panel from administration server. +Use your login and password: +// Pin photos... +You locating in command panel! Greatings! +// Pin photos... +You can choose language... +// Pin photo... +## API +You must use POST requests from using SQLEasy server API. +Requests you must send in next adress: **http://hostport:8080/api/method** +Ps. hostport it's your domain (localhost, 127.0.0.1, mysite.org, etc.) +From works you need **token**. Token can give in **http://hostport:8080/panel/tokens**. Token must been configurated from your protect. +### Errors in API +Codes: +100 - SQL Error, errors in SQL script +**Example: ** +```json +{ + "error": { + "code": 100, + "description": "syntax error" + } +} +``` +2** - API errors +200 - Syntax error, bad request. +**Example:** +```json +{ + "unparse_value": "blablabla, invalid value!" +} +``` +```json +{ + "error": { + "code": 200, + "description": "Invalid request" + } +} +``` +210 - Token is null or not founded in request. +**Example:** +```json +{ + "key": null +} +``` +```json +{ + "error": { + "code": 210, + "description": "Token is null or not founded in request" + } +} +``` +211 - Invalid token +**Example:** +```json +{ + "key": "Invalid token :)" +} +``` +```json +{ + "error": { + "code": 211, + "description": "Invalid token" + } +} +``` +212 - Access denied +**Example:** +```json +{ + "key": "9883bc5f0da8e41f", + "Request": "SELECT * FROM passwords" +} +``` +```json +{ + "error": { + "code": 212, + "description": "Access denied" + } +} +``` +213 - Time of access is ended +**Example:** +```json +{ + "key": "9883bc5f0da8e41f", + "Request": "SELECT * FROM tables" +} +``` +```json +{ + "error": { + "code": 213, + "description": "Time of access is ended" + } +} +``` +214 - Token has been removed +Ps. If token has been removed 14 days ago (You can recovery this token). +**Example:** +```json +{ + "key": "9883bc5f0da8e41f", + "Request": "SELECT * FROM tables" +} +``` +```json +{ + "error": { + "code": 214, + "description": "Token has been removed" + } +} +``` +220 - Only for read. +**Example:** +```json +{ + "key": "9883bc5f0da8e41f", + "Request": "INSERT table (ID, name) WHERE (2, \"Rzekow\")" +} +``` +```json +{ + "error": { + "code": 220, + "description": "Only for read" + } +} +``` +300 - Unknown error +Ps. errors in server, information about this errors sends in **/path/to/projectFolder/error logs/12_12_2021 12_12_00GMT.log** +**Example:** +```json +{ + "key": "9883bc5f0da8e41f", + "Request": "INSERT table (ID, name) WHERE (2, \"Rzekow\")" +} +``` +```json +{ + "error": { + "code": 300, + "description": "Unknown error", + "detalis": "Traceback:\nblablabla python error" + } +} +``` +### Execute +Example of server url: **http://mywebsite.org/api/Response** +This method execute your SQL code in your server. +request body: +```json +{ + "key": "mykey", + "Request": "SELECT * FROM table" +} +``` +Request: +```json +{ + "response": [ + { + "ID": 0, + "name": "Grzegorz" + }, + { + "ID": 1, + "name": "Hanz" + } + ] +} +``` +### fileExecute +Example of server url: **http://mywebsite.org/api/fileExecute** +This method execute your SQL code from file in your server. +request example: +```python +import requests, getpass +response = requests.post( + 'http://mywebsite.org/api/Response', + data={"key": getpass.getpass('Enter your API key: ')}, + file=open('/path/to/file.file', 'rb') +) +print(response.json()) +``` +output.log +```python +{ + 'response': [ + { + 'ID': 0, + 'name': 'Grzegorz' + }, + { + 'ID': 1, + 'name': 'Hanz' + } + ] +} +``` \ No newline at end of file diff --git a/server.py b/server.py index 713eed4..dde8233 100644 --- a/server.py +++ b/server.py @@ -1,7 +1,18 @@ from Flask import flask +import server_tools, getpass +server_tools.init( + server_tools.pyOut('Enter username: '), + server_tools.pyOut('Enter password: ', 3, getpass.getpass) +) + app = flask(__name__) @app.route('/panel') def panel(): - return '''''' # Вставить код... + return ''' +''' # Вставить код... + +@app.route('/server_api/') +def server_api(method): + diff --git a/server_tools.py b/server_tools.py new file mode 100644 index 0000000..19583e2 --- /dev/null +++ b/server_tools.py @@ -0,0 +1,37 @@ +import random, sys + +login = None +password = None + + +def pyOut(TEXT, border=3, out=input): + content = out(TEXT) + if content and len(content) >= border: + return content + else: + print('invalid inputed information') + sys.exit(0) + + + +def init(l, p): + global login, password + login = l + password = p + + +def genTk(length=16, dictonary='1234567890abcdef'): + token = '' + for _ in range(length): + token += dictonary[random.randint(0, len(dictonary) - 1)] + return token + + +class server_api: + def oauth(login, password, **kw): + + + +methods = { + 'oauth': server_api.oauth +}