1 Commits

Author SHA1 Message Date
dependabot[bot]
0465d0a1cd Bump cryptography from 46.0.3 to 46.0.5
Bumps [cryptography](https://github.com/pyca/cryptography) from 46.0.3 to 46.0.5.
- [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pyca/cryptography/compare/46.0.3...46.0.5)

---
updated-dependencies:
- dependency-name: cryptography
  dependency-version: 46.0.5
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-11 02:41:14 +00:00
10 changed files with 3 additions and 91 deletions

3
.gitignore vendored
View File

@@ -214,7 +214,4 @@ __marimo__/
# Streamlit # Streamlit
.streamlit/secrets.toml .streamlit/secrets.toml
slopserver/server_config.env slopserver/server_config.env
test_db.sqlite

View File

@@ -7,7 +7,7 @@ argon2-cffi-bindings==25.1.0
certifi==2025.10.5 certifi==2025.10.5
cffi==2.0.0 cffi==2.0.0
click==8.3.0 click==8.3.0
cryptography==46.0.3 cryptography==46.0.5
dnspython==2.8.0 dnspython==2.8.0
email-validator==2.3.0 email-validator==2.3.0
fastapi==0.119.0 fastapi==0.119.0

View File

@@ -1,7 +1,7 @@
from collections.abc import Iterable from collections.abc import Iterable
from datetime import datetime from datetime import datetime
from urllib.parse import ParseResult from urllib.parse import ParseResult
from sqlalchemy import select, func from sqlalchemy import select
from sqlalchemy.engine import Engine from sqlalchemy.engine import Engine
from sqlalchemy.orm import Session from sqlalchemy.orm import Session
from slopserver.models import Domain, Path, User, Report from slopserver.models import Domain, Path, User, Report
@@ -12,13 +12,6 @@ def select_slop(urls: list[ParseResult], engine: Engine) -> Iterable[Domain]:
rows = session.scalars(query).all() rows = session.scalars(query).all()
return rows return rows
def top_offenders(engine: Engine, limit: int|None = None) -> Iterable[Domain]:
query = select(Domain.domain_name, func.count(Path.id)).join(Path).group_by(Domain.id).order_by(func.count(Path.id).desc())
if limit: query = query.limit(limit)
with Session(engine) as session:
top_offenders = session.execute(query).all()
return top_offenders
def insert_slop(urls: list[ParseResult], engine: Engine, user: User | None = None): def insert_slop(urls: list[ParseResult], engine: Engine, user: User | None = None):
domain_dict: dict[str. set[str]] = dict() domain_dict: dict[str. set[str]] = dict()
for url in urls: for url in urls:

View File

@@ -2,7 +2,7 @@ from pydantic_settings import BaseSettings
class ServerSettings(BaseSettings): class ServerSettings(BaseSettings):
db_url: str = "sqlite+pysqlite:///slopserver/test/test_db.sqlite" db_url: str = "sqlite+pysqlite:///test_db.sqlite"
token_secret: str = "5bcc778a96b090c3ac1d587bb694a060eaf7bdb5832365f91d5078faf1fff210" token_secret: str = "5bcc778a96b090c3ac1d587bb694a060eaf7bdb5832365f91d5078faf1fff210"
altcha_secret: str = "0460de065912d0292df1e7422a5ed2dc362ed56d6bab64fe50b89957463061f3" altcha_secret: str = "0460de065912d0292df1e7422a5ed2dc362ed56d6bab64fe50b89957463061f3"
resend_token: str = "re_NXpjzbqR_KgAbu72PKjYHcquX24WvnN3i" resend_token: str = "re_NXpjzbqR_KgAbu72PKjYHcquX24WvnN3i"

View File

@@ -1,5 +0,0 @@
#!/bin/bash
test_dir=slopserver/test
sqlite3 $test_dir/test_db.sqlite .dump > $1

View File

@@ -1,5 +0,0 @@
#!/bin/bash
test_dir=slopserver/test
cat $test_dir/test_db.sql | sqlite3 $test_dir/test_db.sqlite

View File

@@ -1,5 +0,0 @@
from fastapi import FastAPI
from fastapi.testclient import TestClient
from slopserver.server import app as slopserver_app
client = TestClient(slopserver_app)

View File

@@ -1,18 +0,0 @@
from slopserver.db import *
from slopserver.models import *
from slopserver.settings import settings
from sqlalchemy import create_engine
import unittest
class TestDBFuncs(unittest.TestCase):
test_db_url = settings.db_url
def setUp(self):
self.engine = create_engine(self.test_db_url)
def test_get_top_offenders(self):
items = top_offenders(self.engine)
print(items)
self.assertEqual(items[0][0], "moogle.com")

View File

@@ -1,45 +0,0 @@
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE domain (
id INTEGER NOT NULL,
domain_name VARCHAR NOT NULL,
CONSTRAINT pk_domain PRIMARY KEY (id)
);
INSERT INTO domain VALUES(1,'google.com');
INSERT INTO domain VALUES(2,'moogle.com');
CREATE TABLE user (
id INTEGER NOT NULL,
email VARCHAR NOT NULL,
password_hash VARCHAR NOT NULL,
email_verified BOOLEAN NOT NULL,
CONSTRAINT pk_user PRIMARY KEY (id)
);
INSERT INTO user VALUES(1,'alphauser01','$argon2id$v=19$m=65536,t=3,p=4$3z7uxa3NHl/dKG07RGEvBA$0NOBftJpP+HiR7wfgdwBk2UR9F12YBjrqeqLSyDl47o','True');
CREATE TABLE path (
id INTEGER NOT NULL,
path VARCHAR NOT NULL,
domain_id INTEGER,
CONSTRAINT pk_path PRIMARY KEY (id),
CONSTRAINT fk_path_domain_id_domain FOREIGN KEY(domain_id) REFERENCES domain (id)
);
INSERT INTO path VALUES(1,'/',0);
INSERT INTO path VALUES(2,'/path1',0);
INSERT INTO path VALUES(3,'/path2',1);
INSERT INTO path VALUES(4,'/path3/a',1);
INSERT INTO path VALUES(5,'/path4',1);
INSERT INTO path VALUES(6,'/path2',2);
INSERT INTO path VALUES(7,'/',2);
INSERT INTO path VALUES(8,'/path3',2);
INSERT INTO path VALUES(9,'/path4',2);
CREATE TABLE report (
path_id INTEGER NOT NULL,
user_id INTEGER NOT NULL,
timestamp DATETIME,
CONSTRAINT pk_report PRIMARY KEY (path_id, user_id),
CONSTRAINT fk_report_path_id_path FOREIGN KEY(path_id) REFERENCES path (id),
CONSTRAINT fk_report_user_id_user FOREIGN KEY(user_id) REFERENCES user (id)
);
INSERT INTO report VALUES(2,1,'11-26-2025');
CREATE UNIQUE INDEX ix_domain_domain_name ON domain (domain_name);
CREATE UNIQUE INDEX ix_user_email ON user (email);
COMMIT;