Startup fix, cookie improvements, #build
Changed - lock creating superuser at startup by @dshoreman - auto validate cookie - API: return cookie validation state for browser extension - Finetuning CSS mobile layout
This commit is contained in:
commit
e8e240c89b
|
@ -5,13 +5,14 @@ if [[ -z "$ELASTIC_USER" ]]; then
|
||||||
export ELASTIC_USER=elastic
|
export ELASTIC_USER=elastic
|
||||||
fi
|
fi
|
||||||
|
|
||||||
ENV_VARS=("TA_USERNAME" "TA_PASSWORD" "ELASTIC_PASSWORD" "ELASTIC_USER")
|
cachedir=/cache
|
||||||
for each in "${ENV_VARS[@]}"; do
|
[[ -d $cachedir ]] || cachedir=.
|
||||||
if ! [[ -v $each ]]; then
|
lockfile=${cachedir}/initsu.lock
|
||||||
echo "missing environment variable $each"
|
|
||||||
exit 1
|
required="Missing required environment variable"
|
||||||
fi
|
[[ -f $lockfile ]] || : "${TA_USERNAME:?$required}"
|
||||||
done
|
: "${TA_PASSWORD:?$required}"
|
||||||
|
: "${ELASTIC_PASSWORD:?$required}"
|
||||||
|
|
||||||
# ugly nginx and uwsgi port overwrite with env vars
|
# ugly nginx and uwsgi port overwrite with env vars
|
||||||
if [[ -n "$TA_PORT" ]]; then
|
if [[ -n "$TA_PORT" ]]; then
|
||||||
|
@ -39,12 +40,27 @@ done
|
||||||
# start python application
|
# start python application
|
||||||
python manage.py makemigrations
|
python manage.py makemigrations
|
||||||
python manage.py migrate
|
python manage.py migrate
|
||||||
export DJANGO_SUPERUSER_PASSWORD=$TA_PASSWORD && \
|
|
||||||
python manage.py createsuperuser --noinput --name "$TA_USERNAME"
|
if [[ -f $lockfile ]]; then
|
||||||
|
echo -e "\e[33;1m[WARNING]\e[0m This is not the first run! Skipping" \
|
||||||
|
"superuser creation.\nTo force it, remove $lockfile"
|
||||||
|
else
|
||||||
|
export DJANGO_SUPERUSER_PASSWORD=$TA_PASSWORD
|
||||||
|
output="$(python manage.py createsuperuser --noinput --name "$TA_USERNAME" 2>&1)"
|
||||||
|
|
||||||
|
case "$output" in
|
||||||
|
*"Superuser created successfully"*)
|
||||||
|
echo "$output" && touch $lockfile ;;
|
||||||
|
*"That name is already taken."*)
|
||||||
|
echo "Superuser already exists. Creation will be skipped on next start."
|
||||||
|
touch $lockfile ;;
|
||||||
|
*) echo "$output" && exit 1
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
|
||||||
python manage.py collectstatic --noinput -c
|
python manage.py collectstatic --noinput -c
|
||||||
nginx &
|
nginx &
|
||||||
celery -A home.tasks worker --loglevel=INFO &
|
celery -A home.tasks worker --loglevel=INFO &
|
||||||
celery -A home beat --loglevel=INFO \
|
celery -A home beat --loglevel=INFO \
|
||||||
-s "${BEAT_SCHEDULE_PATH:-/cache/celerybeat-schedule}" &
|
-s "${BEAT_SCHEDULE_PATH:-${cachedir}/celerybeat-schedule}" &
|
||||||
uwsgi --ini uwsgi.ini
|
uwsgi --ini uwsgi.ini
|
||||||
|
|
|
@ -233,11 +233,14 @@ List of valid task names:
|
||||||
|
|
||||||
|
|
||||||
## Cookie View
|
## Cookie View
|
||||||
Check your youtube cookie settings
|
Check your youtube cookie settings, *status* turns to `true` if cookie has been validated.
|
||||||
GET /api/cookie/
|
GET /api/cookie/
|
||||||
```json
|
```json
|
||||||
{
|
{
|
||||||
"cookie_enabled": true
|
"cookie_enabled": true,
|
||||||
|
"status": true,
|
||||||
|
"validated": <timestamp>,
|
||||||
|
"validated_str": "timestamp"
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
@ -488,9 +488,11 @@ class CookieView(ApiBaseView):
|
||||||
"""handle get request"""
|
"""handle get request"""
|
||||||
# pylint: disable=unused-argument
|
# pylint: disable=unused-argument
|
||||||
config = AppConfig().config
|
config = AppConfig().config
|
||||||
cookie_enabled = config["downloads"]["cookie_import"]
|
valid = RedisArchivist().get_message("cookie:valid")
|
||||||
|
response = {"cookie_enabled": config["downloads"]["cookie_import"]}
|
||||||
|
response.update(valid)
|
||||||
|
|
||||||
return Response({"cookie_enabled": cookie_enabled})
|
return Response(response)
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def post(request):
|
def post(request):
|
||||||
|
|
|
@ -5,6 +5,7 @@ functionality:
|
||||||
"""
|
"""
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
from datetime import datetime
|
||||||
from http import cookiejar
|
from http import cookiejar
|
||||||
from io import StringIO
|
from io import StringIO
|
||||||
|
|
||||||
|
@ -102,6 +103,7 @@ class CookieHandler:
|
||||||
def revoke():
|
def revoke():
|
||||||
"""revoke cookie"""
|
"""revoke cookie"""
|
||||||
RedisArchivist().del_message("cookie")
|
RedisArchivist().del_message("cookie")
|
||||||
|
RedisArchivist().del_message("cookie:valid")
|
||||||
RedisArchivist().set_message(
|
RedisArchivist().set_message(
|
||||||
"config", False, path=".downloads.cookie_import"
|
"config", False, path=".downloads.cookie_import"
|
||||||
)
|
)
|
||||||
|
@ -115,7 +117,8 @@ class CookieHandler:
|
||||||
"extract_flat": True,
|
"extract_flat": True,
|
||||||
}
|
}
|
||||||
validator = YtWrap(obs_request, self.config)
|
validator = YtWrap(obs_request, self.config)
|
||||||
response = validator.extract("LL")
|
response = bool(validator.extract("LL"))
|
||||||
|
self.store_validation(response)
|
||||||
|
|
||||||
# update in redis to avoid expiring
|
# update in redis to avoid expiring
|
||||||
modified = validator.obs["cookiefile"].getvalue()
|
modified = validator.obs["cookiefile"].getvalue()
|
||||||
|
@ -134,4 +137,15 @@ class CookieHandler:
|
||||||
)
|
)
|
||||||
print("cookie validation failed, exiting...")
|
print("cookie validation failed, exiting...")
|
||||||
|
|
||||||
return bool(response)
|
return response
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def store_validation(response):
|
||||||
|
"""remember last validation"""
|
||||||
|
now = datetime.now()
|
||||||
|
message = {
|
||||||
|
"status": response,
|
||||||
|
"validated": int(now.strftime("%s")),
|
||||||
|
"validated_str": now.strftime("%Y-%m-%d %H:%M"),
|
||||||
|
}
|
||||||
|
RedisArchivist().set_message("cookie:valid", message)
|
||||||
|
|
|
@ -9,4 +9,4 @@ requests==2.28.0
|
||||||
ryd-client==0.0.3
|
ryd-client==0.0.3
|
||||||
uWSGI==2.0.20
|
uWSGI==2.0.20
|
||||||
whitenoise==6.2.0
|
whitenoise==6.2.0
|
||||||
yt_dlp==2022.5.18
|
yt_dlp==2022.6.22.1
|
||||||
|
|
|
@ -1086,8 +1086,12 @@ button:hover {
|
||||||
}
|
}
|
||||||
|
|
||||||
/* tablet */
|
/* tablet */
|
||||||
@media screen and (max-width: 1000px) {
|
@media screen and (max-width: 1000px), screen and (max-height: 850px) {
|
||||||
.boxed-content {
|
.boxed-content,
|
||||||
|
.boxed-content.boxed-4,
|
||||||
|
.boxed-content.boxed-5,
|
||||||
|
.boxed-content.boxed-6,
|
||||||
|
.boxed-content.boxed-7 {
|
||||||
width: 90%;
|
width: 90%;
|
||||||
}
|
}
|
||||||
.video-list.grid.grid-3,
|
.video-list.grid.grid-3,
|
||||||
|
|
Loading…
Reference in New Issue