generated from justuser-31/mrl_v1_license
Доработки, разработка call2api
This commit is contained in:
parent
4aeb1c1bc9
commit
1e5693d3da
@ -1,19 +1,85 @@
|
|||||||
|
from typing import Optional
|
||||||
|
|
||||||
import requests
|
import requests
|
||||||
|
|
||||||
url = "http://127.0.0.1:8000/create_account" # Replace with actual endpoint URL
|
|
||||||
|
|
||||||
payload = {
|
def create_account(
|
||||||
'token': 'test',
|
api_url: str, api_token: str, username: str, password: str, drive_quota: int
|
||||||
'username': 'test',
|
) -> dict:
|
||||||
'password': 'test',
|
"""
|
||||||
'drive_quota': '1024' # in MB
|
Call the create account API endpoint.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
api_url: Base URL of the API server (e.g., 'http://localhost:8000')
|
||||||
|
api_token: Security token for API authentication
|
||||||
|
username: Username for the new account
|
||||||
|
password: Password for the new account
|
||||||
|
drive_quota: Storage quota in MB
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
Dictionary with 'status_code' and 'message' keys
|
||||||
|
"""
|
||||||
|
url = f"{api_url.rstrip('/')}/create_account"
|
||||||
|
data = {
|
||||||
|
"token": api_token,
|
||||||
|
"username": username,
|
||||||
|
"password": password,
|
||||||
|
"drive_quota": str(drive_quota),
|
||||||
}
|
}
|
||||||
|
|
||||||
headers = {
|
try:
|
||||||
'Content-Type': 'application/x-www-form-urlencoded'
|
response = requests.post(url, data=data)
|
||||||
}
|
return {"status_code": response.status_code, "message": response.text}
|
||||||
|
except requests.RequestException as e:
|
||||||
|
return {"status_code": -1, "message": f"Request failed: {str(e)}"}
|
||||||
|
|
||||||
response = requests.post(url, data=payload, headers=headers)
|
|
||||||
|
|
||||||
print("Status Code:", response.status_code)
|
def set_quota(api_url: str, api_token: str, username: str, drive_quota: int) -> dict:
|
||||||
print("Response Text:", response.text)
|
"""
|
||||||
|
Call the set quota API endpoint.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
api_url: Base URL of the API server (e.g., 'http://localhost:8000')
|
||||||
|
api_token: Security token for API authentication
|
||||||
|
username: Username whose quota should be updated
|
||||||
|
drive_quota: New storage quota in MB
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
Dictionary with 'status_code' and 'message' keys
|
||||||
|
"""
|
||||||
|
url = f"{api_url.rstrip('/')}/set_quota"
|
||||||
|
data = {"token": api_token, "username": username, "drive_quota": str(drive_quota)}
|
||||||
|
|
||||||
|
try:
|
||||||
|
response = requests.post(url, data=data)
|
||||||
|
return {"status_code": response.status_code, "message": response.text}
|
||||||
|
except requests.RequestException as e:
|
||||||
|
return {"status_code": -1, "message": f"Request failed: {str(e)}"}
|
||||||
|
|
||||||
|
|
||||||
|
def delete_account(api_url: str, api_token: str, username: str) -> dict:
|
||||||
|
"""
|
||||||
|
Call the delete account API endpoint.
|
||||||
|
|
||||||
|
Args:
|
||||||
|
api_url: Base URL of the API server (e.g., 'http://localhost:8000')
|
||||||
|
api_token: Security token for API authentication
|
||||||
|
username: Username of the account to delete
|
||||||
|
|
||||||
|
Returns:
|
||||||
|
Dictionary with 'status_code' and 'message' keys
|
||||||
|
"""
|
||||||
|
url = f"{api_url.rstrip('/')}/delete_account"
|
||||||
|
data = {"token": api_token, "username": username}
|
||||||
|
|
||||||
|
try:
|
||||||
|
response = requests.post(url, data=data)
|
||||||
|
return {"status_code": response.status_code, "message": response.text}
|
||||||
|
except requests.RequestException as e:
|
||||||
|
return {"status_code": -1, "message": f"Request failed: {str(e)}"}
|
||||||
|
|
||||||
|
|
||||||
|
# print(set_quota("http://127.0.0.1:8000", "test", "test", 1000))
|
||||||
|
# print(delete_account("http://127.0.0.1:8000", "test", "test"))
|
||||||
|
# print(create_account("http://proxy.del.pw:50020", "test", "test", "test", 100))
|
||||||
|
print(create_account("http://proxy.del.pw:50020", "test", "ritmas", "ritmas", 100))
|
||||||
|
|||||||
17
handlers.py
17
handlers.py
@ -112,6 +112,7 @@ class FileServerHandler(BaseHTTPRequestHandler):
|
|||||||
self.send_html(content)
|
self.send_html(content)
|
||||||
|
|
||||||
def handle_login_page(self):
|
def handle_login_page(self):
|
||||||
|
cursor = database.DB_CONN.cursor()
|
||||||
if self.path == "/login" and self.command == "POST":
|
if self.path == "/login" and self.command == "POST":
|
||||||
content_length = int(self.headers.get("Content-Length", 0))
|
content_length = int(self.headers.get("Content-Length", 0))
|
||||||
post_data = self.rfile.read(content_length).decode("utf-8")
|
post_data = self.rfile.read(content_length).decode("utf-8")
|
||||||
@ -119,7 +120,6 @@ class FileServerHandler(BaseHTTPRequestHandler):
|
|||||||
username = params.get("username", [""])[0]
|
username = params.get("username", [""])[0]
|
||||||
password = params.get("password", [""])[0]
|
password = params.get("password", [""])[0]
|
||||||
|
|
||||||
cursor = database.DB_CONN.cursor()
|
|
||||||
cursor.execute(
|
cursor.execute(
|
||||||
"SELECT password_hash FROM users WHERE username = ?", (username,)
|
"SELECT password_hash FROM users WHERE username = ?", (username,)
|
||||||
)
|
)
|
||||||
@ -146,10 +146,16 @@ class FileServerHandler(BaseHTTPRequestHandler):
|
|||||||
self.send_html(content, 401)
|
self.send_html(content, 401)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
# Check if user already authorized
|
||||||
username = self.get_session_user()
|
username = self.get_session_user()
|
||||||
if username:
|
if username:
|
||||||
|
# Check if user really exist
|
||||||
|
cursor.execute("SELECT username FROM users WHERE username = ?", (username,))
|
||||||
|
username_row = cursor.fetchone()
|
||||||
|
if username_row:
|
||||||
self.send_redirect("/files")
|
self.send_redirect("/files")
|
||||||
return
|
return
|
||||||
|
|
||||||
content = self.render_login_form()
|
content = self.render_login_form()
|
||||||
self.send_html(content)
|
self.send_html(content)
|
||||||
|
|
||||||
@ -191,6 +197,13 @@ class FileServerHandler(BaseHTTPRequestHandler):
|
|||||||
|
|
||||||
used_mb = get_user_used_space(username)
|
used_mb = get_user_used_space(username)
|
||||||
cursor = database.DB_CONN.cursor()
|
cursor = database.DB_CONN.cursor()
|
||||||
|
cursor.execute("SELECT quota_mb FROM users WHERE username = ?", (username,))
|
||||||
|
available_mb_row = cursor.fetchone()
|
||||||
|
# If user not authorized
|
||||||
|
if not available_mb_row:
|
||||||
|
self.send_redirect("/login")
|
||||||
|
return
|
||||||
|
available_mb = available_mb_row[0]
|
||||||
cursor.execute(
|
cursor.execute(
|
||||||
"UPDATE users SET used_mb = ? WHERE username = ?", (used_mb, username)
|
"UPDATE users SET used_mb = ? WHERE username = ?", (used_mb, username)
|
||||||
)
|
)
|
||||||
@ -230,7 +243,7 @@ class FileServerHandler(BaseHTTPRequestHandler):
|
|||||||
<h1><a href="/">SimpliestFS</a></h1>
|
<h1><a href="/">SimpliestFS</a></h1>
|
||||||
<h2>My Files</h2>
|
<h2>My Files</h2>
|
||||||
<div class="quota-info">
|
<div class="quota-info">
|
||||||
Quota: {CONFIG["storage"]["default_quota_mb"]} MB | Used: {used_mb:.2f} MB
|
Quota: {available_mb} MB | Used: {used_mb:.2f} MB
|
||||||
</div>
|
</div>
|
||||||
<form method="POST" enctype="multipart/form-data" action="/upload">
|
<form method="POST" enctype="multipart/form-data" action="/upload">
|
||||||
<input type="file" name="file" required>
|
<input type="file" name="file" required>
|
||||||
|
|||||||
2
requirements.txt
Normal file
2
requirements.txt
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
PyYAML
|
||||||
|
requests
|
||||||
Loading…
Reference in New Issue
Block a user