3 Commits

Author SHA1 Message Date
b01eb60eeb security fixes
Some checks failed
Build and push image / deploy (push) Has been cancelled
2025-04-04 08:35:10 +01:00
306b237b01 security fixes 2025-04-04 08:21:10 +01:00
a7cb857c00 security fixes 2025-04-04 08:20:24 +01:00
10 changed files with 4765 additions and 12518 deletions

View File

@@ -1,4 +1,4 @@
FROM python:3.13-slim-bullseye FROM python:3.13-slim-bookworm
COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/ COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/
ENV PYTHONFAULTHANDLER=1 \ ENV PYTHONFAULTHANDLER=1 \
@@ -19,7 +19,7 @@ COPY . /src/
COPY pyproject.toml /src COPY pyproject.toml /src
COPY uv.lock /src COPY uv.lock /src
RUN echo "deb http://ftp.uk.debian.org/debian bullseye non-free non-free-firmware" > /etc/apt/sources.list.d/non-free.list RUN echo "deb http://ftp.uk.debian.org/debian bookworm non-free non-free-firmware" > /etc/apt/sources.list.d/non-free.list
RUN apt update \ RUN apt update \

17219
frontend/package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -11,38 +11,38 @@
"@fortawesome/fontawesome-svg-core": "^6.1.2", "@fortawesome/fontawesome-svg-core": "^6.1.2",
"@fortawesome/free-solid-svg-icons": "^6.1.2", "@fortawesome/free-solid-svg-icons": "^6.1.2",
"@fortawesome/vue-fontawesome": "^3.0.1", "@fortawesome/vue-fontawesome": "^3.0.1",
"axios": "1.8.2", "axios": "^1.8.4",
"bootstrap": "^5.2.0", "bootstrap": "^5.2.0",
"hammerjs": "^2.0.8", "hammerjs": "^2.0.8",
"jwt-decode": "^3.1.2", "jwt-decode": "^4.0.0",
"pdfvuer": "^2.0.1", "pdfvuer": "^2.0.1",
"reveal.js": "^4.3.1", "reveal.js": "^5.2.1",
"timeago.js": "^4.0.2", "timeago.js": "^4.0.2",
"vue": "^3.2.13", "vue": "^3.5.13",
"vue-router": "^4.0.3", "vue-router": "^4.0.3",
"vue-toast-notification": "3.0", "vue-toast-notification": "3.0",
"vuejs-paginate-next": "^1.0.2", "vuejs-paginate-next": "^1.0.2",
"vuex": "^4.0.0", "vuex": "^4.0.0",
"webpack": "5.94.0" "webpack": "^5.98.0"
}, },
"devDependencies": { "devDependencies": {
"@babel/core": "^7.12.16", "@babel/core": "^7.26.10",
"@babel/eslint-parser": "^7.12.16", "@babel/eslint-parser": "^7.12.16",
"@vue/cli-plugin-babel": "~5.0.0", "@vue/cli-plugin-babel": "^5.0.8",
"@vue/cli-plugin-eslint": "~5.0.0", "@vue/cli-plugin-eslint": "^5.0.8",
"@vue/cli-plugin-router": "~5.0.0", "@vue/cli-plugin-router": "^5.0.0",
"@vue/cli-plugin-vuex": "~5.0.0", "@vue/cli-plugin-vuex": "^5.0.0",
"@vue/cli-service": "~5.0.0", "@vue/cli-service": "^5.0.8",
"eslint": "^7.32.0", "eslint": "^9.23.0",
"eslint-plugin-vue": "^8.0.3", "eslint-plugin-vue": "^10.0.0",
"jshint": "^2.13.5", "jshint": "^2.13.5",
"mini-css-extract-plugin": "^2.6.1", "mini-css-extract-plugin": "^2.9.2",
"terser-webpack-plugin": "^5.3.6", "style-loader": "^4.0.0",
"webpack-bundle-analyzer": "^4.6.1", "terser-webpack-plugin": "^5.3.14",
"webpack-cli": "^4.10.0", "vue-loader": "^17.4.2",
"webpack-bundle-tracker": "^1.6.0", "webpack-bundle-analyzer": "^4.10.2",
"style-loader": "^3.3.1", "webpack-bundle-tracker": "^3.1.1",
"vue-loader": "^17.0.0" "webpack-cli": "^6.0.1"
}, },
"eslintConfig": { "eslintConfig": {
"root": true, "root": true,

View File

@@ -1,7 +1,7 @@
import axios from "axios"; import axios from "axios";
import router from "@/router"; import router from "@/router";
import store from "@/store"; import store from "@/store";
import jwtDecode from "jwt-decode"; import { jwtDecode } from "jwt-decode";
async function get_access_token() { async function get_access_token() {
let access = jwtDecode(store.state.jwt.access) let access = jwtDecode(store.state.jwt.access)

View File

@@ -23,9 +23,7 @@
</div> </div>
</div> </div>
<div class="row"> <div class="row">
<caption>
<h2>Reading History</h2> <h2>Reading History</h2>
</caption>
</div> </div>
<div class="row"> <div class="row">
<table class="table table-striped table-bordered"> <table class="table table-striped table-bordered">

View File

@@ -23,7 +23,6 @@
</div> </div>
</div> </div>
<div class="row"> <div class="row">
<caption>
<h2>Recent Comics - <a :href="'/feed/' + this.feed_id + '/'">Feed</a></h2> <h2>Recent Comics - <a :href="'/feed/' + this.feed_id + '/'">Feed</a></h2>
Mark selected issues as: Mark selected issues as:
<select class="form-select-sm" name="func" id="func_selector" @change="this.performFunction()" v-model="func_selected"> <select class="form-select-sm" name="func" id="func_selector" @change="this.performFunction()" v-model="func_selected">
@@ -31,7 +30,6 @@
<option value="mark_read">Read</option> <option value="mark_read">Read</option>
<option value="mark_unread">Un-Read</option> <option value="mark_unread">Un-Read</option>
</select> </select>
</caption>
</div> </div>
<div class="row"> <div class="row">
<table class="table table-striped table-bordered"> <table class="table table-striped table-bordered">

View File

@@ -1,6 +1,6 @@
import { createStore } from 'vuex' import { createStore } from 'vuex'
import axios from 'axios' import axios from 'axios'
import jwtDecode from 'jwt-decode' import { jwtDecode } from "jwt-decode";
import {useToast} from "vue-toast-notification"; import {useToast} from "vue-toast-notification";
import router from "@/router"; import router from "@/router";
import api from "@/api"; import api from "@/api";

View File

@@ -45,7 +45,8 @@ module.exports = () => {
plugins: [ plugins: [
new VueLoaderPlugin(), new VueLoaderPlugin(),
new BundleTracker({ new BundleTracker({
filename: './webpack-stats.json', filename: 'webpack-stats.json',
path: path.resolve(__dirname, './'),
publicPath: 'http://localhost:8080/' publicPath: 'http://localhost:8080/'
}), }),
new webpack.DefinePlugin({ new webpack.DefinePlugin({

View File

@@ -46,7 +46,8 @@ module.exports = (env = {}) => {
plugins: [ plugins: [
new VueLoaderPlugin(), new VueLoaderPlugin(),
new BundleTracker({ new BundleTracker({
filename: './webpack-stats.json', filename: 'webpack-stats.json',
path: path.resolve(__dirname, './'),
publicPath: '/static/bundles/', publicPath: '/static/bundles/',
integrity: true integrity: true
}), }),

View File

@@ -1,6 +1,6 @@
[project] [project]
name = "cbwebreader" name = "cbwebreader"
version = "1.1.2" version = "1.1.3"
description = "CBR/Z Web Reader" description = "CBR/Z Web Reader"
readme = "README.md" readme = "README.md"
requires-python = ">=3.13" requires-python = ">=3.13"