Initial commit

This commit is contained in:
Rayhan Hanaputra
2025-10-10 22:18:06 +07:00
committed by GitHub
commit ea02892f14
1246 changed files with 289342 additions and 0 deletions
@@ -0,0 +1,59 @@
from typing import Optional, Any
from blacksheep.server.controllers import Controller
from blacksheep.messages import Request, Response
from blacksheep.utils import join_fragments
from blacksheep.server.templating import view
from datetime import datetime
from passlib.hash import pbkdf2_sha256 as sha256
class TemplatingNotConfiguredException(Exception):
def __init__(self) -> None:
super().__init__(
"Server side HTML templating is not configured. Configure templating using "
"the function `use_templates` from blacksheep.server.templating."
)
class Struct:
def __init__(self, **entries):
self.__dict__.update(entries)
class BaseController(Controller):
model: dict = {}
session: dict = {}
async def on_request(self, request: Request):
if 'login' in request.session:
if request.session['login']:
def get_copy():
now = datetime.now()
return "{} {}".format(now.year, "Gemastik")
self.model = {"session" : request.session, "copy" : get_copy}
self.session = request.session
@classmethod
def route(cls):
cls_name = cls.class_name()
if cls_name.lower() != "index":
return join_fragments(cls_name.lower())
def view(
self, name: Optional[str] = None, model: Optional[Any] = None, **kwargs
) -> Response:
final_model = {}
if name is None:
name = self.get_default_view_name()
if self.templates is None:
raise TemplatingNotConfiguredException()
if self.model:
final_model = { **self.model }
if model:
final_model = {**model, **final_model}
return view(self.templates, self.full_view_name(name), final_model, **kwargs)
@@ -0,0 +1,4 @@
from .auth import *
from .dashboard import *
@@ -0,0 +1,72 @@
from .BaseController import BaseController
from blacksheep.server.controllers import get, post
from blacksheep.messages import Request
from blacksheep.server.bindings import FromForm
from blacksheep.server.responses import redirect
from guardpost.asynchronous.authentication import Identity
from passlib.hash import pbkdf2_sha256 as sha256
from models import Users
from dataclasses import dataclass
@dataclass
class LoginForm:
username: str
password: str
@dataclass
class RegisterUser:
username: str
password: str
class Auth(BaseController):
@get('/')
async def index(self):
return redirect('/auth/login')
@get('/login')
async def login_page(self, user: Identity):
if user:
return redirect("/dashboard")
return self.view()
@post('/login')
async def login_action(self, request: Request, data: FromForm[LoginForm], bs_message):
getUser = Users.objects.filter(username=data.value.username).first()
if not getUser:
bs_message.add("Wrong Username or Password", "error")
return redirect('/auth/login')
if sha256.verify(data.value.password, getUser.password):
request.session.update({
"id" : str(getUser.id),
"username" : getUser.username,
"login" : True,
})
return redirect("/dashboard")
bs_message.add("Wrong Username or Password", "error")
return redirect("/auth/login")
@get('/register')
async def register_page(self, user: Identity):
if user:
return redirect("/dashboard")
return self.view()
@post('/register')
async def register_action(self, data: FromForm[RegisterUser], bs_message):
getUser = Users.objects.filter(username=data.value.username).first()
if getUser:
bs_message.add("Username already used, please use other username", "error")
return redirect("/auth/register")
user = Users(username=data.value.username, password=sha256.encrypt(data.value.password))
user.save()
bs_message.add("Success register", "success")
return redirect("/auth/login")
@@ -0,0 +1,54 @@
import subprocess, zlib, gzip, json, urllib.request
from dataclasses import dataclass
from urllib.parse import urlparse
from .BaseController import BaseController
from blacksheep.server.controllers import get, post
from blacksheep.server.authorization import auth
from guardpost.asynchronous.authentication import Identity
from blacksheep import FromFiles, Response, Content
from datetime import datetime
from models import *
class Dashboard(BaseController):
@auth()
@get()
async def index(self, user: Identity):
return self.view()
@auth()
@get('/sample')
async def sample_google(self):
return Response(200, content=Content(b"text/plain", b'\x00\x00\x1f\x8b\x08\x00 $\x00e\x02\xff\x016\x00\xc9\xffx\x9c\xabV*(\xca/\xcbLI-R\xb2RP*OO-Q\xd2QP*-\xca\x01q3JJ\n\x8a\xad\xf4\xf5\xd3\xf3\xf3\xd3sR\xf5\x92\xf3s\x95j\x01\x93\x10\x103\x00bQS6\x00\x00\x00'))
@auth()
@post('/fetch_by_file')
async def fetch_by_file(self, file: FromFiles):
try:
provider = {b"\x00\x00": "wget", b"\x00\x01" : "curl", b"\x00\x02": "python"}
f = file.value[0]
flags = f.data[:2]
data = json.loads(zlib.decompress(gzip.decompress(f.data[2:])))
if data["provider"] != provider[flags]:
return str("Available provider : {wget, curl, python}")
if urlparse(data["url"]).scheme in ["file", "ftp" ]:
return str("You cannot use this scheme!!")
if urlparse(data["url"]).hostname in ["localhost", "127.0.0.1"]:
return str("Cannot fetch localhost / 127.0.0.1")
if data["provider"] == "curl":
return subprocess.check_output(["curl", data["url"]]).decode()
if data["provider"] == "wget":
return subprocess.check_output(["wget", data["url"], "-O", "-"]).decode()
if data["provider"] == "python":
return urllib.request.urlopen(data["url"]).read()
except Exception as e:
print(e)
return str("Unknown Error")