mirror of
https://git.sr.ht/~tsileo/microblog.pub
synced 2024-12-22 05:04:27 +00:00
Move stuff arround
This commit is contained in:
parent
922c9bebb2
commit
cd2ae3d7b0
12 changed files with 112 additions and 121 deletions
20
app.py
20
app.py
|
@ -38,16 +38,16 @@ import blueprints.well_known
|
||||||
import config
|
import config
|
||||||
from activitypub import Box
|
from activitypub import Box
|
||||||
from activitypub import embed_collection
|
from activitypub import embed_collection
|
||||||
from app_utils import MY_PERSON
|
from core.shared import MY_PERSON
|
||||||
from app_utils import _add_answers_to_question
|
from core.shared import _add_answers_to_question
|
||||||
from app_utils import _build_thread
|
from core.shared import _build_thread
|
||||||
from app_utils import _get_ip
|
from core.shared import _get_ip
|
||||||
from app_utils import back
|
from core.shared import back
|
||||||
from app_utils import csrf
|
from core.shared import csrf
|
||||||
from app_utils import login_required
|
from core.shared import login_required
|
||||||
from app_utils import noindex
|
from core.shared import noindex
|
||||||
from app_utils import paginated_query
|
from core.shared import paginated_query
|
||||||
from app_utils import post_to_outbox
|
from core.shared import post_to_outbox
|
||||||
from blueprints.api import _api_required
|
from blueprints.api import _api_required
|
||||||
from config import ADMIN_API_KEY
|
from config import ADMIN_API_KEY
|
||||||
from config import BLACKLIST
|
from config import BLACKLIST
|
||||||
|
|
|
@ -20,15 +20,15 @@ from u2flib_server import u2f
|
||||||
|
|
||||||
import config
|
import config
|
||||||
from activitypub import Box
|
from activitypub import Box
|
||||||
from app_utils import MY_PERSON
|
from core.shared import MY_PERSON
|
||||||
from app_utils import _build_thread
|
from core.shared import _build_thread
|
||||||
from app_utils import _Response
|
from core.shared import _Response
|
||||||
from app_utils import csrf
|
from core.shared import csrf
|
||||||
from app_utils import login_required
|
from core.shared import login_required
|
||||||
from app_utils import noindex
|
from core.shared import noindex
|
||||||
from app_utils import p
|
from core.shared import p
|
||||||
from app_utils import paginated_query
|
from core.shared import paginated_query
|
||||||
from app_utils import post_to_outbox
|
from core.shared import post_to_outbox
|
||||||
from config import DB
|
from config import DB
|
||||||
from config import ID
|
from config import ID
|
||||||
from config import PASS
|
from config import PASS
|
||||||
|
|
|
@ -26,11 +26,11 @@ from werkzeug.utils import secure_filename
|
||||||
import activitypub
|
import activitypub
|
||||||
import config
|
import config
|
||||||
from activitypub import Box
|
from activitypub import Box
|
||||||
from app_utils import MY_PERSON
|
from core.shared import MY_PERSON
|
||||||
from app_utils import _Response
|
from core.shared import _Response
|
||||||
from app_utils import back
|
from core.shared import back
|
||||||
from app_utils import csrf
|
from core.shared import csrf
|
||||||
from app_utils import post_to_outbox
|
from core.shared import post_to_outbox
|
||||||
from config import BASE_URL
|
from config import BASE_URL
|
||||||
from config import DB
|
from config import DB
|
||||||
from config import DEBUG_MODE
|
from config import DEBUG_MODE
|
||||||
|
|
|
@ -16,8 +16,8 @@ from flask import session
|
||||||
from flask import url_for
|
from flask import url_for
|
||||||
from itsdangerous import BadSignature
|
from itsdangerous import BadSignature
|
||||||
|
|
||||||
from app_utils import _get_ip
|
from core.shared import _get_ip
|
||||||
from app_utils import login_required
|
from core.shared import login_required
|
||||||
from config import DB
|
from config import DB
|
||||||
from config import JWT
|
from config import JWT
|
||||||
|
|
||||||
|
|
|
@ -13,15 +13,15 @@ from little_boxes.errors import NotAnActivityError
|
||||||
from little_boxes.httpsig import HTTPSigAuth
|
from little_boxes.httpsig import HTTPSigAuth
|
||||||
from requests.exceptions import HTTPError
|
from requests.exceptions import HTTPError
|
||||||
|
|
||||||
import activity_gc
|
from core import gc
|
||||||
import activitypub
|
import activitypub
|
||||||
import config
|
import config
|
||||||
from activitypub import Box
|
from activitypub import Box
|
||||||
from app_utils import MY_PERSON
|
from core.shared import MY_PERSON
|
||||||
from app_utils import _add_answers_to_question
|
from core.shared import _add_answers_to_question
|
||||||
from app_utils import back
|
from core.shared import back
|
||||||
from app_utils import p
|
from core.shared import p
|
||||||
from app_utils import post_to_outbox
|
from core.shared import post_to_outbox
|
||||||
from config import DB
|
from config import DB
|
||||||
from core.notifications import set_inbox_flags
|
from core.notifications import set_inbox_flags
|
||||||
from tasks import Tasks
|
from tasks import Tasks
|
||||||
|
@ -457,7 +457,7 @@ def task_fetch_remote_question():
|
||||||
def task_cleanup():
|
def task_cleanup():
|
||||||
task = p.parse(flask.request)
|
task = p.parse(flask.request)
|
||||||
app.logger.info(f"task={task!r}")
|
app.logger.info(f"task={task!r}")
|
||||||
activity_gc.perform()
|
gc.perform()
|
||||||
return ""
|
return ""
|
||||||
|
|
||||||
|
|
||||||
|
|
85
config.py
85
config.py
|
@ -4,7 +4,6 @@ import subprocess
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from enum import Enum
|
from enum import Enum
|
||||||
|
|
||||||
import pymongo
|
|
||||||
import yaml
|
import yaml
|
||||||
from itsdangerous import JSONWebSignatureSerializer
|
from itsdangerous import JSONWebSignatureSerializer
|
||||||
from little_boxes import strtobool
|
from little_boxes import strtobool
|
||||||
|
@ -16,8 +15,6 @@ from utils.key import KEY_DIR
|
||||||
from utils.key import get_key
|
from utils.key import get_key
|
||||||
from utils.key import get_secret_key
|
from utils.key import get_secret_key
|
||||||
from utils.media import MediaCache
|
from utils.media import MediaCache
|
||||||
from utils.meta import MetaKey
|
|
||||||
from utils.meta import _meta
|
|
||||||
|
|
||||||
|
|
||||||
class ThemeStyle(Enum):
|
class ThemeStyle(Enum):
|
||||||
|
@ -33,16 +30,6 @@ DEFAULT_THEME_PRIMARY_COLOR = {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
def noop():
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
CUSTOM_CACHE_HOOKS = False
|
|
||||||
try:
|
|
||||||
from cache_hooks import purge as custom_cache_purge_hook
|
|
||||||
except ModuleNotFoundError:
|
|
||||||
custom_cache_purge_hook = noop
|
|
||||||
|
|
||||||
VERSION = (
|
VERSION = (
|
||||||
subprocess.check_output(["git", "describe", "--always"]).split()[0].decode("utf-8")
|
subprocess.check_output(["git", "describe", "--always"]).split()[0].decode("utf-8")
|
||||||
)
|
)
|
||||||
|
@ -108,78 +95,6 @@ GRIDFS = mongo_client[f"{DB_NAME}_gridfs"]
|
||||||
MEDIA_CACHE = MediaCache(GRIDFS, USER_AGENT)
|
MEDIA_CACHE = MediaCache(GRIDFS, USER_AGENT)
|
||||||
|
|
||||||
|
|
||||||
def create_indexes():
|
|
||||||
if "trash" not in DB.collection_names():
|
|
||||||
DB.create_collection("trash", capped=True, size=50 << 20) # 50 MB
|
|
||||||
|
|
||||||
DB.command("compact", "activities")
|
|
||||||
DB.activities.create_index([(_meta(MetaKey.NOTIFICATION), pymongo.ASCENDING)])
|
|
||||||
DB.activities.create_index(
|
|
||||||
[(_meta(MetaKey.NOTIFICATION_UNREAD), pymongo.ASCENDING)]
|
|
||||||
)
|
|
||||||
DB.activities.create_index([("remote_id", pymongo.ASCENDING)])
|
|
||||||
DB.activities.create_index([("activity.object.id", pymongo.ASCENDING)])
|
|
||||||
DB.activities.create_index([("meta.thread_root_parent", pymongo.ASCENDING)])
|
|
||||||
DB.activities.create_index(
|
|
||||||
[
|
|
||||||
("meta.thread_root_parent", pymongo.ASCENDING),
|
|
||||||
("meta.deleted", pymongo.ASCENDING),
|
|
||||||
]
|
|
||||||
)
|
|
||||||
DB.activities.create_index(
|
|
||||||
[("activity.object.id", pymongo.ASCENDING), ("meta.deleted", pymongo.ASCENDING)]
|
|
||||||
)
|
|
||||||
DB.cache2.create_index(
|
|
||||||
[
|
|
||||||
("path", pymongo.ASCENDING),
|
|
||||||
("type", pymongo.ASCENDING),
|
|
||||||
("arg", pymongo.ASCENDING),
|
|
||||||
]
|
|
||||||
)
|
|
||||||
DB.cache2.create_index("date", expireAfterSeconds=3600 * 12)
|
|
||||||
|
|
||||||
# Index for the block query
|
|
||||||
DB.activities.create_index(
|
|
||||||
[
|
|
||||||
("box", pymongo.ASCENDING),
|
|
||||||
("type", pymongo.ASCENDING),
|
|
||||||
("meta.undo", pymongo.ASCENDING),
|
|
||||||
]
|
|
||||||
)
|
|
||||||
|
|
||||||
# Index for count queries
|
|
||||||
DB.activities.create_index(
|
|
||||||
[
|
|
||||||
("box", pymongo.ASCENDING),
|
|
||||||
("type", pymongo.ASCENDING),
|
|
||||||
("meta.undo", pymongo.ASCENDING),
|
|
||||||
("meta.deleted", pymongo.ASCENDING),
|
|
||||||
]
|
|
||||||
)
|
|
||||||
|
|
||||||
DB.activities.create_index([("box", pymongo.ASCENDING)])
|
|
||||||
|
|
||||||
# Outbox query
|
|
||||||
DB.activities.create_index(
|
|
||||||
[
|
|
||||||
("box", pymongo.ASCENDING),
|
|
||||||
("type", pymongo.ASCENDING),
|
|
||||||
("meta.undo", pymongo.ASCENDING),
|
|
||||||
("meta.deleted", pymongo.ASCENDING),
|
|
||||||
("meta.public", pymongo.ASCENDING),
|
|
||||||
]
|
|
||||||
)
|
|
||||||
|
|
||||||
DB.activities.create_index(
|
|
||||||
[
|
|
||||||
("type", pymongo.ASCENDING),
|
|
||||||
("activity.object.type", pymongo.ASCENDING),
|
|
||||||
("activity.object.inReplyTo", pymongo.ASCENDING),
|
|
||||||
("meta.deleted", pymongo.ASCENDING),
|
|
||||||
]
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def _drop_db():
|
def _drop_db():
|
||||||
if not DEBUG_MODE:
|
if not DEBUG_MODE:
|
||||||
return
|
return
|
||||||
|
|
76
core/indexes.py
Normal file
76
core/indexes.py
Normal file
|
@ -0,0 +1,76 @@
|
||||||
|
import pymongo
|
||||||
|
from config import DB
|
||||||
|
from utils.meta import _meta
|
||||||
|
from utils.meta import MetaKey
|
||||||
|
|
||||||
|
|
||||||
|
def create_indexes():
|
||||||
|
if "trash" not in DB.collection_names():
|
||||||
|
DB.create_collection("trash", capped=True, size=50 << 20) # 50 MB
|
||||||
|
|
||||||
|
DB.command("compact", "activities")
|
||||||
|
DB.activities.create_index([(_meta(MetaKey.NOTIFICATION), pymongo.ASCENDING)])
|
||||||
|
DB.activities.create_index(
|
||||||
|
[(_meta(MetaKey.NOTIFICATION_UNREAD), pymongo.ASCENDING)]
|
||||||
|
)
|
||||||
|
DB.activities.create_index([("remote_id", pymongo.ASCENDING)])
|
||||||
|
DB.activities.create_index([("activity.object.id", pymongo.ASCENDING)])
|
||||||
|
DB.activities.create_index([("meta.thread_root_parent", pymongo.ASCENDING)])
|
||||||
|
DB.activities.create_index(
|
||||||
|
[
|
||||||
|
("meta.thread_root_parent", pymongo.ASCENDING),
|
||||||
|
("meta.deleted", pymongo.ASCENDING),
|
||||||
|
]
|
||||||
|
)
|
||||||
|
DB.activities.create_index(
|
||||||
|
[("activity.object.id", pymongo.ASCENDING), ("meta.deleted", pymongo.ASCENDING)]
|
||||||
|
)
|
||||||
|
DB.cache2.create_index(
|
||||||
|
[
|
||||||
|
("path", pymongo.ASCENDING),
|
||||||
|
("type", pymongo.ASCENDING),
|
||||||
|
("arg", pymongo.ASCENDING),
|
||||||
|
]
|
||||||
|
)
|
||||||
|
DB.cache2.create_index("date", expireAfterSeconds=3600 * 12)
|
||||||
|
|
||||||
|
# Index for the block query
|
||||||
|
DB.activities.create_index(
|
||||||
|
[
|
||||||
|
("box", pymongo.ASCENDING),
|
||||||
|
("type", pymongo.ASCENDING),
|
||||||
|
("meta.undo", pymongo.ASCENDING),
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
# Index for count queries
|
||||||
|
DB.activities.create_index(
|
||||||
|
[
|
||||||
|
("box", pymongo.ASCENDING),
|
||||||
|
("type", pymongo.ASCENDING),
|
||||||
|
("meta.undo", pymongo.ASCENDING),
|
||||||
|
("meta.deleted", pymongo.ASCENDING),
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
DB.activities.create_index([("box", pymongo.ASCENDING)])
|
||||||
|
|
||||||
|
# Outbox query
|
||||||
|
DB.activities.create_index(
|
||||||
|
[
|
||||||
|
("box", pymongo.ASCENDING),
|
||||||
|
("type", pymongo.ASCENDING),
|
||||||
|
("meta.undo", pymongo.ASCENDING),
|
||||||
|
("meta.deleted", pymongo.ASCENDING),
|
||||||
|
("meta.public", pymongo.ASCENDING),
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
DB.activities.create_index(
|
||||||
|
[
|
||||||
|
("type", pymongo.ASCENDING),
|
||||||
|
("activity.object.type", pymongo.ASCENDING),
|
||||||
|
("activity.object.inReplyTo", pymongo.ASCENDING),
|
||||||
|
("meta.deleted", pymongo.ASCENDING),
|
||||||
|
]
|
||||||
|
)
|
|
@ -7,7 +7,7 @@ services:
|
||||||
ports:
|
ports:
|
||||||
- "27017:27017"
|
- "27017:27017"
|
||||||
poussetaches:
|
poussetaches:
|
||||||
image: "poussetaches:latest"
|
image: "poussetaches/poussetaches:latest"
|
||||||
volumes:
|
volumes:
|
||||||
- "${DATA_DIR}/poussetaches:/app/poussetaches_data"
|
- "${DATA_DIR}/poussetaches:/app/poussetaches_data"
|
||||||
environment:
|
environment:
|
||||||
|
|
4
run.sh
4
run.sh
|
@ -1,4 +1,4 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
python -c "import logging; logging.basicConfig(level=logging.DEBUG); import migrations; migrations.perform()"
|
python -c "import logging; logging.basicConfig(level=logging.DEBUG); from core import migrations; migrations.perform()"
|
||||||
python -c "import config; config.create_indexes()"
|
python -c "from core import indexes; indexes.create_indexes()"
|
||||||
gunicorn -t 600 -w 5 -b 0.0.0.0:5005 --log-level debug app:app
|
gunicorn -t 600 -w 5 -b 0.0.0.0:5005 --log-level debug app:app
|
||||||
|
|
Loading…
Reference in a new issue