diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 86dc5c50d3..01ca27e133 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -21,13 +21,13 @@ jobs: fetch-depth: 0 - name: Set up QEMU - uses: docker/setup-qemu-action@v1 + uses: docker/setup-qemu-action@v2 - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v1 + uses: docker/setup-buildx-action@v2 - name: Login to Docker Hub - uses: docker/login-action@v1 + uses: docker/login-action@v2 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} @@ -43,7 +43,7 @@ jobs: type=raw,value=latest - name: Build and push Docker images - uses: docker/build-push-action@v2 + uses: docker/build-push-action@v3 with: context: . file: ./Dockerfile diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index e062057a00..225615aa72 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -69,7 +69,7 @@ jobs: - 6379:6379 mongo: - image: 'mongo:3.6' + image: 'mongo:3.7' ports: # Maps port 27017 on service container to the host - 27017:27017 diff --git a/CHANGELOG.md b/CHANGELOG.md index 57f2822f2d..636fe4278b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,20 @@ +#### v2.4.1 (2022-08-14) + +##### Chores + +* **deps:** + * update docker/build-push-action action to v3 (bfd6318c) + * update docker/login-action action to v2 (3d68accf) + * update docker/setup-buildx-action action to v2 (371ac032) +* incrementing version number - v2.4.0 (4834cde3) +* update changelog for v2.4.0 (c4714ff7) +* incrementing version number - v2.3.1 (d2425942) +* incrementing version number - v2.3.0 (046ea120) + +##### Bug Fixes + +* return at least one in sizeCalculation (#10832) (15ca460c) + #### v2.4.0 (2022-08-10) ##### Chores diff --git a/install/package.json b/install/package.json index 8f66b4dace..34bf121a4e 100644 --- a/install/package.json +++ b/install/package.json @@ -2,7 +2,7 @@ "name": "nodebb", "license": "GPL-3.0", "description": "NodeBB Forum", - "version": "2.4.0", + "version": "2.4.1", "homepage": "http://www.nodebb.org", "repository": { "type": "git", @@ -29,8 +29,8 @@ }, "dependencies": { "@adactive/bootstrap-tagsinput": "0.8.2", - "@isaacs/ttlcache": "^1.2.0", - "ace-builds": "1.8.1", + "@isaacs/ttlcache": "1.2.0", + "ace-builds": "1.9.5", "archiver": "5.3.1", "async": "3.2.4", "autoprefixer": "10.4.8", @@ -78,7 +78,7 @@ "less": "4.1.3", "lodash": "4.17.21", "logrotate-stream": "0.2.8", - "lru-cache": "7.13.1", + "lru-cache": "7.13.2", "material-design-lite": "1.3.0", "mime": "3.0.0", "mkdirp": "1.0.4", @@ -102,9 +102,9 @@ "nodebb-theme-slick": "2.0.2", "nodebb-theme-vanilla": "12.1.18", "nodebb-widget-essentials": "6.0.0", - "nodemailer": "6.7.7", + "nodemailer": "6.7.8", "nprogress": "0.2.0", - "passport": "0.5.2", + "passport": "0.6.0", "passport-http-bearer": "1.0.1", "passport-local": "1.0.0", "pg": "8.7.3", @@ -150,7 +150,7 @@ "@commitlint/cli": "17.0.3", "@commitlint/config-angular": "17.0.3", "coveralls": "3.1.1", - "eslint": "8.21.0", + "eslint": "8.22.0", "eslint-config-nodebb": "0.1.1", "eslint-plugin-import": "2.26.0", "grunt": "1.5.3", diff --git a/public/language/ar/admin/advanced/cache.json b/public/language/ar/admin/advanced/cache.json index ff03a9e430..77ff9a4387 100644 --- a/public/language/ar/admin/advanced/cache.json +++ b/public/language/ar/admin/advanced/cache.json @@ -1,5 +1,8 @@ { "post-cache": "التخزين المؤقت للمشاركات", + "group-cache": "Group Cache", + "local-cache": "Local Cache", + "object-cache": "Object Cache", "percent-full": "1% كاملة", "post-cache-size": "حجم التخزين المؤقت للمشاركات", "items-in-cache": "العناصر في التخزين المؤقت" diff --git a/public/language/bg/admin/advanced/cache.json b/public/language/bg/admin/advanced/cache.json index 54e6983f5a..d4627e3e30 100644 --- a/public/language/bg/admin/advanced/cache.json +++ b/public/language/bg/admin/advanced/cache.json @@ -1,5 +1,8 @@ { "post-cache": "Кеш за публикации", + "group-cache": "Кеш за групи", + "local-cache": "Локален кеш", + "object-cache": "Кеш за обекти", "percent-full": "Запълненост: %1%", "post-cache-size": "Размер на кеша за публикации", "items-in-cache": "Елементи в кеша" diff --git a/public/language/bn/admin/advanced/cache.json b/public/language/bn/admin/advanced/cache.json index 2fd7984883..0148c2d889 100644 --- a/public/language/bn/admin/advanced/cache.json +++ b/public/language/bn/admin/advanced/cache.json @@ -1,5 +1,8 @@ { "post-cache": "Post Cache", + "group-cache": "Group Cache", + "local-cache": "Local Cache", + "object-cache": "Object Cache", "percent-full": "%1% Full", "post-cache-size": "Post Cache Size", "items-in-cache": "Items in Cache" diff --git a/public/language/cs/admin/advanced/cache.json b/public/language/cs/admin/advanced/cache.json index 27fc2042e6..193dd5c2f0 100644 --- a/public/language/cs/admin/advanced/cache.json +++ b/public/language/cs/admin/advanced/cache.json @@ -1,5 +1,8 @@ { "post-cache": "Mezipaměť příspěvku", + "group-cache": "Group Cache", + "local-cache": "Local Cache", + "object-cache": "Object Cache", "percent-full": "%1% plný", "post-cache-size": "Velikost mezipaměti příspěvku", "items-in-cache": "Položek v mezipaměti" diff --git a/public/language/da/admin/advanced/cache.json b/public/language/da/admin/advanced/cache.json index 6f4512e562..ff4a3382b0 100644 --- a/public/language/da/admin/advanced/cache.json +++ b/public/language/da/admin/advanced/cache.json @@ -1,5 +1,8 @@ { "post-cache": "Indlægs Cache", + "group-cache": "Group Cache", + "local-cache": "Local Cache", + "object-cache": "Object Cache", "percent-full": "%1% Fuld", "post-cache-size": "Indlægs Cache Størrelse", "items-in-cache": "Ting i Cache" diff --git a/public/language/de/admin/advanced/cache.json b/public/language/de/admin/advanced/cache.json index ae8d88c8b7..e5c0e8fdfd 100644 --- a/public/language/de/admin/advanced/cache.json +++ b/public/language/de/admin/advanced/cache.json @@ -1,5 +1,8 @@ { "post-cache": "Post-Cache", + "group-cache": "Group Cache", + "local-cache": "Local Cache", + "object-cache": "Object Cache", "percent-full": "%1% Voll", "post-cache-size": "Post-Cache-Größe", "items-in-cache": "Elemente im Cache" diff --git a/public/language/el/admin/advanced/cache.json b/public/language/el/admin/advanced/cache.json index 5d06a37508..4a2c76fc94 100644 --- a/public/language/el/admin/advanced/cache.json +++ b/public/language/el/admin/advanced/cache.json @@ -1,5 +1,8 @@ { "post-cache": "Προσωρινή μνήμη ανάρτησης", + "group-cache": "Group Cache", + "local-cache": "Local Cache", + "object-cache": "Object Cache", "percent-full": "%1% Πλήρες", "post-cache-size": "Μέγεθος προσωρινής μνήμης ανάρτησης", "items-in-cache": "Αντικείμενα στην προσωρινή μνήμη" diff --git a/public/language/en-GB/admin/advanced/cache.json b/public/language/en-GB/admin/advanced/cache.json index 2fd7984883..0148c2d889 100644 --- a/public/language/en-GB/admin/advanced/cache.json +++ b/public/language/en-GB/admin/advanced/cache.json @@ -1,5 +1,8 @@ { "post-cache": "Post Cache", + "group-cache": "Group Cache", + "local-cache": "Local Cache", + "object-cache": "Object Cache", "percent-full": "%1% Full", "post-cache-size": "Post Cache Size", "items-in-cache": "Items in Cache" diff --git a/public/language/en-US/admin/advanced/cache.json b/public/language/en-US/admin/advanced/cache.json index 2fd7984883..0148c2d889 100644 --- a/public/language/en-US/admin/advanced/cache.json +++ b/public/language/en-US/admin/advanced/cache.json @@ -1,5 +1,8 @@ { "post-cache": "Post Cache", + "group-cache": "Group Cache", + "local-cache": "Local Cache", + "object-cache": "Object Cache", "percent-full": "%1% Full", "post-cache-size": "Post Cache Size", "items-in-cache": "Items in Cache" diff --git a/public/language/en-x-pirate/admin/advanced/cache.json b/public/language/en-x-pirate/admin/advanced/cache.json index 2fd7984883..0148c2d889 100644 --- a/public/language/en-x-pirate/admin/advanced/cache.json +++ b/public/language/en-x-pirate/admin/advanced/cache.json @@ -1,5 +1,8 @@ { "post-cache": "Post Cache", + "group-cache": "Group Cache", + "local-cache": "Local Cache", + "object-cache": "Object Cache", "percent-full": "%1% Full", "post-cache-size": "Post Cache Size", "items-in-cache": "Items in Cache" diff --git a/public/language/es/admin/advanced/cache.json b/public/language/es/admin/advanced/cache.json index 6390513a64..be68806428 100644 --- a/public/language/es/admin/advanced/cache.json +++ b/public/language/es/admin/advanced/cache.json @@ -1,5 +1,8 @@ { "post-cache": "Publicar Cache", + "group-cache": "Group Cache", + "local-cache": "Local Cache", + "object-cache": "Object Cache", "percent-full": "%1% Completo", "post-cache-size": "Tamaño de cache del post", "items-in-cache": "Artículos en cache" diff --git a/public/language/et/admin/advanced/cache.json b/public/language/et/admin/advanced/cache.json index 8b90a4b431..f132ef4845 100644 --- a/public/language/et/admin/advanced/cache.json +++ b/public/language/et/admin/advanced/cache.json @@ -1,5 +1,8 @@ { "post-cache": "Postituste vahemälu", + "group-cache": "Group Cache", + "local-cache": "Local Cache", + "object-cache": "Object Cache", "percent-full": "%1% Täis", "post-cache-size": "Postituse vahemälu suurus", "items-in-cache": "Esemed vahemälus" diff --git a/public/language/fa-IR/admin/advanced/cache.json b/public/language/fa-IR/admin/advanced/cache.json index d85c528aae..7e2280f2bb 100644 --- a/public/language/fa-IR/admin/advanced/cache.json +++ b/public/language/fa-IR/admin/advanced/cache.json @@ -1,5 +1,8 @@ { "post-cache": "کش دیدگاه ", + "group-cache": "Group Cache", + "local-cache": "Local Cache", + "object-cache": "Object Cache", "percent-full": "%1% تمام شده", "post-cache-size": "سایز کش دیدگاه", "items-in-cache": "موارد موجود در کش" diff --git a/public/language/fi/admin/advanced/cache.json b/public/language/fi/admin/advanced/cache.json index 629720debf..54a656b600 100644 --- a/public/language/fi/admin/advanced/cache.json +++ b/public/language/fi/admin/advanced/cache.json @@ -1,5 +1,8 @@ { "post-cache": "Viestivälimuisti", + "group-cache": "Group Cache", + "local-cache": "Local Cache", + "object-cache": "Object Cache", "percent-full": "%1% Täynnä", "post-cache-size": "Viestivälimuistin koko", "items-in-cache": "Asioita välimuistissa" diff --git a/public/language/fr/admin/advanced/cache.json b/public/language/fr/admin/advanced/cache.json index dacc862d51..6dd4647282 100644 --- a/public/language/fr/admin/advanced/cache.json +++ b/public/language/fr/admin/advanced/cache.json @@ -1,5 +1,8 @@ { "post-cache": "Cache des messages", + "group-cache": "Group Cache", + "local-cache": "Local Cache", + "object-cache": "Object Cache", "percent-full": "Plein à %1%", "post-cache-size": "Taille du cache des messages", "items-in-cache": "Objets en cache" diff --git a/public/language/gl/admin/advanced/cache.json b/public/language/gl/admin/advanced/cache.json index 2fd7984883..0148c2d889 100644 --- a/public/language/gl/admin/advanced/cache.json +++ b/public/language/gl/admin/advanced/cache.json @@ -1,5 +1,8 @@ { "post-cache": "Post Cache", + "group-cache": "Group Cache", + "local-cache": "Local Cache", + "object-cache": "Object Cache", "percent-full": "%1% Full", "post-cache-size": "Post Cache Size", "items-in-cache": "Items in Cache" diff --git a/public/language/he/admin/advanced/cache.json b/public/language/he/admin/advanced/cache.json index 04ceceaa68..35a5167de9 100644 --- a/public/language/he/admin/advanced/cache.json +++ b/public/language/he/admin/advanced/cache.json @@ -1,5 +1,8 @@ { "post-cache": "מטמון פוסטים", + "group-cache": "Group Cache", + "local-cache": "Local Cache", + "object-cache": "Object Cache", "percent-full": "%1% Full", "post-cache-size": "גודל מטמון פוסטים", "items-in-cache": "פריטים במטמון" diff --git a/public/language/he/language.json b/public/language/he/language.json index 4e56641628..2c12710abf 100644 --- a/public/language/he/language.json +++ b/public/language/he/language.json @@ -1,5 +1,5 @@ { - "name": "אנגלית (בריטניה/קנדה)", + "name": "עברית (ישראל)", "code": "he", "dir": "rtl" } \ No newline at end of file diff --git a/public/language/hr/admin/advanced/cache.json b/public/language/hr/admin/advanced/cache.json index 1cb6d611ce..34f7f2575a 100644 --- a/public/language/hr/admin/advanced/cache.json +++ b/public/language/hr/admin/advanced/cache.json @@ -1,5 +1,8 @@ { "post-cache": "Objava predmemorija", + "group-cache": "Group Cache", + "local-cache": "Local Cache", + "object-cache": "Object Cache", "percent-full": "%1% Puno", "post-cache-size": "Veličina predmemorije objave", "items-in-cache": "Artikli u predmemoriji" diff --git a/public/language/hu/admin/advanced/cache.json b/public/language/hu/admin/advanced/cache.json index 448f1d093d..0bb92bb8e4 100644 --- a/public/language/hu/admin/advanced/cache.json +++ b/public/language/hu/admin/advanced/cache.json @@ -1,5 +1,8 @@ { "post-cache": "Hozzászólás gyorsítótár", + "group-cache": "Group Cache", + "local-cache": "Local Cache", + "object-cache": "Object Cache", "percent-full": "%1% Tele", "post-cache-size": "Hozzászólás gyorsítótáras mérete", "items-in-cache": "Elemek a gyorsítótárban" diff --git a/public/language/id/admin/advanced/cache.json b/public/language/id/admin/advanced/cache.json index 0e2366b9ad..edbb7f87ba 100644 --- a/public/language/id/admin/advanced/cache.json +++ b/public/language/id/admin/advanced/cache.json @@ -1,5 +1,8 @@ { "post-cache": "Cache Kiriman", + "group-cache": "Group Cache", + "local-cache": "Local Cache", + "object-cache": "Object Cache", "percent-full": "%1% Penuh", "post-cache-size": "Ukuran Cache Kiriman", "items-in-cache": "Item di Cache" diff --git a/public/language/it/admin/advanced/cache.json b/public/language/it/admin/advanced/cache.json index dbd2a41961..7c8764cd6c 100644 --- a/public/language/it/admin/advanced/cache.json +++ b/public/language/it/admin/advanced/cache.json @@ -1,5 +1,8 @@ { "post-cache": "Cache Post", + "group-cache": "Group Cache", + "local-cache": "Local Cache", + "object-cache": "Object Cache", "percent-full": "%1% Pieno", "post-cache-size": "Dimensione Cache dei Post", "items-in-cache": "Elementi nella Cache" diff --git a/public/language/ja/admin/advanced/cache.json b/public/language/ja/admin/advanced/cache.json index f757b411ad..bd02037b88 100644 --- a/public/language/ja/admin/advanced/cache.json +++ b/public/language/ja/admin/advanced/cache.json @@ -1,5 +1,8 @@ { "post-cache": "投稿キャッシュ", + "group-cache": "Group Cache", + "local-cache": "Local Cache", + "object-cache": "Object Cache", "percent-full": "%1% がフル", "post-cache-size": "投稿キャッシュのサイズ", "items-in-cache": "キャッシュ内のアイテム" diff --git a/public/language/ko/admin/advanced/cache.json b/public/language/ko/admin/advanced/cache.json index 80e6518376..f623193863 100644 --- a/public/language/ko/admin/advanced/cache.json +++ b/public/language/ko/admin/advanced/cache.json @@ -1,5 +1,8 @@ { "post-cache": "포스트 캐시", + "group-cache": "Group Cache", + "local-cache": "Local Cache", + "object-cache": "Object Cache", "percent-full": "%1%꽉참", "post-cache-size": "포스트 캐시 크기", "items-in-cache": "캐시된 항목들" diff --git a/public/language/lt/admin/advanced/cache.json b/public/language/lt/admin/advanced/cache.json index 2fd7984883..0148c2d889 100644 --- a/public/language/lt/admin/advanced/cache.json +++ b/public/language/lt/admin/advanced/cache.json @@ -1,5 +1,8 @@ { "post-cache": "Post Cache", + "group-cache": "Group Cache", + "local-cache": "Local Cache", + "object-cache": "Object Cache", "percent-full": "%1% Full", "post-cache-size": "Post Cache Size", "items-in-cache": "Items in Cache" diff --git a/public/language/lv/admin/advanced/cache.json b/public/language/lv/admin/advanced/cache.json index 7e59a8aea7..2e083938b5 100644 --- a/public/language/lv/admin/advanced/cache.json +++ b/public/language/lv/admin/advanced/cache.json @@ -1,5 +1,8 @@ { "post-cache": "Rakstu kešatmiņa", + "group-cache": "Group Cache", + "local-cache": "Local Cache", + "object-cache": "Object Cache", "percent-full": "%1% Aizņemts", "post-cache-size": "Rakstu kešatmiņas lielums", "items-in-cache": "Rakstu skaits kešatmiņā" diff --git a/public/language/ms/admin/advanced/cache.json b/public/language/ms/admin/advanced/cache.json index 2fd7984883..0148c2d889 100644 --- a/public/language/ms/admin/advanced/cache.json +++ b/public/language/ms/admin/advanced/cache.json @@ -1,5 +1,8 @@ { "post-cache": "Post Cache", + "group-cache": "Group Cache", + "local-cache": "Local Cache", + "object-cache": "Object Cache", "percent-full": "%1% Full", "post-cache-size": "Post Cache Size", "items-in-cache": "Items in Cache" diff --git a/public/language/nb/admin/advanced/cache.json b/public/language/nb/admin/advanced/cache.json index fea789ab96..f75eabe4cd 100644 --- a/public/language/nb/admin/advanced/cache.json +++ b/public/language/nb/admin/advanced/cache.json @@ -1,5 +1,8 @@ { "post-cache": "Post-buffer", + "group-cache": "Group Cache", + "local-cache": "Local Cache", + "object-cache": "Object Cache", "percent-full": "%1%full ", "post-cache-size": "Post-buffer størrelse", "items-in-cache": "Element i buffer" diff --git a/public/language/nl/admin/advanced/cache.json b/public/language/nl/admin/advanced/cache.json index 6cd668fe6b..67cef0c6b5 100644 --- a/public/language/nl/admin/advanced/cache.json +++ b/public/language/nl/admin/advanced/cache.json @@ -1,5 +1,8 @@ { "post-cache": "Onderwerpcache", + "group-cache": "Group Cache", + "local-cache": "Local Cache", + "object-cache": "Object Cache", "percent-full": "%1%vol", "post-cache-size": "Onderwerpcache grootte", "items-in-cache": "Items in cache" diff --git a/public/language/pl/admin/advanced/cache.json b/public/language/pl/admin/advanced/cache.json index 5c2469a7da..57dbfddd78 100644 --- a/public/language/pl/admin/advanced/cache.json +++ b/public/language/pl/admin/advanced/cache.json @@ -1,5 +1,8 @@ { "post-cache": "Pamięć podręczna postów", + "group-cache": "Group Cache", + "local-cache": "Local Cache", + "object-cache": "Object Cache", "percent-full": "%1%", "post-cache-size": "Rozmiar pamięci podręcznej postów", "items-in-cache": "Elementów w pamięci podręcznej" diff --git a/public/language/pt-BR/admin/advanced/cache.json b/public/language/pt-BR/admin/advanced/cache.json index 71cde357a4..ab005b8a1e 100644 --- a/public/language/pt-BR/admin/advanced/cache.json +++ b/public/language/pt-BR/admin/advanced/cache.json @@ -1,5 +1,8 @@ { "post-cache": "Cache de Posts", + "group-cache": "Group Cache", + "local-cache": "Local Cache", + "object-cache": "Object Cache", "percent-full": "%1% Cheio", "post-cache-size": "Tamanho do Cache de Posts", "items-in-cache": "Itens no Cache" diff --git a/public/language/pt-PT/admin/advanced/cache.json b/public/language/pt-PT/admin/advanced/cache.json index 684ce7831a..86d9da7df3 100644 --- a/public/language/pt-PT/admin/advanced/cache.json +++ b/public/language/pt-PT/admin/advanced/cache.json @@ -1,5 +1,8 @@ { "post-cache": "Cache de Publicações", + "group-cache": "Group Cache", + "local-cache": "Local Cache", + "object-cache": "Object Cache", "percent-full": "%1% Cheio", "post-cache-size": "Tamanho da Cache de Publicações", "items-in-cache": "Itens em Cache" diff --git a/public/language/ro/admin/advanced/cache.json b/public/language/ro/admin/advanced/cache.json index 2fd7984883..0148c2d889 100644 --- a/public/language/ro/admin/advanced/cache.json +++ b/public/language/ro/admin/advanced/cache.json @@ -1,5 +1,8 @@ { "post-cache": "Post Cache", + "group-cache": "Group Cache", + "local-cache": "Local Cache", + "object-cache": "Object Cache", "percent-full": "%1% Full", "post-cache-size": "Post Cache Size", "items-in-cache": "Items in Cache" diff --git a/public/language/ru/admin/advanced/cache.json b/public/language/ru/admin/advanced/cache.json index 23db351585..42f134ea42 100644 --- a/public/language/ru/admin/advanced/cache.json +++ b/public/language/ru/admin/advanced/cache.json @@ -1,5 +1,8 @@ { "post-cache": "Кэш сообщений", + "group-cache": "Group Cache", + "local-cache": "Local Cache", + "object-cache": "Object Cache", "percent-full": "Заполнен на%1%", "post-cache-size": "Размер кэша сообщений", "items-in-cache": "Закешировано элементов" diff --git a/public/language/rw/admin/advanced/cache.json b/public/language/rw/admin/advanced/cache.json index 2fd7984883..0148c2d889 100644 --- a/public/language/rw/admin/advanced/cache.json +++ b/public/language/rw/admin/advanced/cache.json @@ -1,5 +1,8 @@ { "post-cache": "Post Cache", + "group-cache": "Group Cache", + "local-cache": "Local Cache", + "object-cache": "Object Cache", "percent-full": "%1% Full", "post-cache-size": "Post Cache Size", "items-in-cache": "Items in Cache" diff --git a/public/language/sc/admin/advanced/cache.json b/public/language/sc/admin/advanced/cache.json index 2fd7984883..0148c2d889 100644 --- a/public/language/sc/admin/advanced/cache.json +++ b/public/language/sc/admin/advanced/cache.json @@ -1,5 +1,8 @@ { "post-cache": "Post Cache", + "group-cache": "Group Cache", + "local-cache": "Local Cache", + "object-cache": "Object Cache", "percent-full": "%1% Full", "post-cache-size": "Post Cache Size", "items-in-cache": "Items in Cache" diff --git a/public/language/sk/admin/advanced/cache.json b/public/language/sk/admin/advanced/cache.json index 4148012c38..8790e8de60 100644 --- a/public/language/sk/admin/advanced/cache.json +++ b/public/language/sk/admin/advanced/cache.json @@ -1,5 +1,8 @@ { "post-cache": "Vyrovnávacia pamäť príspevku", + "group-cache": "Group Cache", + "local-cache": "Local Cache", + "object-cache": "Object Cache", "percent-full": "%1% plné", "post-cache-size": "Veľkosť vyrovnávacej pamäti príspevku", "items-in-cache": "Položky vo vyrovnávacej pamäti" diff --git a/public/language/sl/admin/advanced/cache.json b/public/language/sl/admin/advanced/cache.json index a6c69b5944..f286253a5f 100644 --- a/public/language/sl/admin/advanced/cache.json +++ b/public/language/sl/admin/advanced/cache.json @@ -1,5 +1,8 @@ { "post-cache": "Predpomnilnik objav", + "group-cache": "Group Cache", + "local-cache": "Local Cache", + "object-cache": "Object Cache", "percent-full": "%1%Zasedeno", "post-cache-size": "Velikost predpomnilnika objav", "items-in-cache": "Elementi v predpomnilniku" diff --git a/public/language/sq-AL/admin/advanced/cache.json b/public/language/sq-AL/admin/advanced/cache.json index 09ac0af108..371a397b8b 100644 --- a/public/language/sq-AL/admin/advanced/cache.json +++ b/public/language/sq-AL/admin/advanced/cache.json @@ -1,5 +1,8 @@ { "post-cache": "Post Cache", + "group-cache": "Group Cache", + "local-cache": "Local Cache", + "object-cache": "Object Cache", "percent-full": "%1% Plot ", "post-cache-size": "Post Cache Size", "items-in-cache": "Items in Cache" diff --git a/public/language/sr/admin/advanced/cache.json b/public/language/sr/admin/advanced/cache.json index 2fd7984883..0148c2d889 100644 --- a/public/language/sr/admin/advanced/cache.json +++ b/public/language/sr/admin/advanced/cache.json @@ -1,5 +1,8 @@ { "post-cache": "Post Cache", + "group-cache": "Group Cache", + "local-cache": "Local Cache", + "object-cache": "Object Cache", "percent-full": "%1% Full", "post-cache-size": "Post Cache Size", "items-in-cache": "Items in Cache" diff --git a/public/language/sv/admin/advanced/cache.json b/public/language/sv/admin/advanced/cache.json index 5be0b1378b..ebdd17c2dc 100644 --- a/public/language/sv/admin/advanced/cache.json +++ b/public/language/sv/admin/advanced/cache.json @@ -1,5 +1,8 @@ { "post-cache": "Inläggscache", + "group-cache": "Group Cache", + "local-cache": "Local Cache", + "object-cache": "Object Cache", "percent-full": "%1% Full", "post-cache-size": "Storlek på inläggscache", "items-in-cache": "Föremål i cache" diff --git a/public/language/th/admin/advanced/cache.json b/public/language/th/admin/advanced/cache.json index 1c226d0039..c751c880b0 100644 --- a/public/language/th/admin/advanced/cache.json +++ b/public/language/th/admin/advanced/cache.json @@ -1,5 +1,8 @@ { "post-cache": "แคชข้อความ", + "group-cache": "Group Cache", + "local-cache": "Local Cache", + "object-cache": "Object Cache", "percent-full": "เต็ม %1%", "post-cache-size": "ขนาดแคชของข้อความ", "items-in-cache": "รายการที่ถูกแคช" diff --git a/public/language/tr/admin/advanced/cache.json b/public/language/tr/admin/advanced/cache.json index 23973b20d7..a3f3620c89 100644 --- a/public/language/tr/admin/advanced/cache.json +++ b/public/language/tr/admin/advanced/cache.json @@ -1,5 +1,8 @@ { "post-cache": "İleti Önbelleği", + "group-cache": "Group Cache", + "local-cache": "Local Cache", + "object-cache": "Object Cache", "percent-full": "%1% Tam", "post-cache-size": "İleti Önbellek Boyutu", "items-in-cache": "Önbellekteki Öğeler" diff --git a/public/language/uk/admin/advanced/cache.json b/public/language/uk/admin/advanced/cache.json index 000509c20f..db008a7eab 100644 --- a/public/language/uk/admin/advanced/cache.json +++ b/public/language/uk/admin/advanced/cache.json @@ -1,5 +1,8 @@ { "post-cache": "Кеш постів", + "group-cache": "Group Cache", + "local-cache": "Local Cache", + "object-cache": "Object Cache", "percent-full": "Заповнений на %1%", "post-cache-size": "Розмір кешу постів", "items-in-cache": "Елементів у кеші" diff --git a/public/language/vi/admin/advanced/cache.json b/public/language/vi/admin/advanced/cache.json index f1bad79df9..8a17c99086 100644 --- a/public/language/vi/admin/advanced/cache.json +++ b/public/language/vi/admin/advanced/cache.json @@ -1,5 +1,8 @@ { "post-cache": "Bộ nhớ đệm bài viết", + "group-cache": "Group Cache", + "local-cache": "Local Cache", + "object-cache": "Object Cache", "percent-full": "%1% Đầy", "post-cache-size": "Kích thước cache bài viết", "items-in-cache": "Thành phần trong Cache" diff --git a/public/language/zh-CN/admin/advanced/cache.json b/public/language/zh-CN/admin/advanced/cache.json index 7ec075ef8c..e829207158 100644 --- a/public/language/zh-CN/admin/advanced/cache.json +++ b/public/language/zh-CN/admin/advanced/cache.json @@ -1,5 +1,8 @@ { "post-cache": "帖子缓存", + "group-cache": "Group Cache", + "local-cache": "Local Cache", + "object-cache": "Object Cache", "percent-full": "%1% 容量", "post-cache-size": "帖子缓存大小", "items-in-cache": "缓存中的条目数量" diff --git a/public/language/zh-TW/admin/advanced/cache.json b/public/language/zh-TW/admin/advanced/cache.json index 7f1b68055f..02f2586f57 100644 --- a/public/language/zh-TW/admin/advanced/cache.json +++ b/public/language/zh-TW/admin/advanced/cache.json @@ -1,5 +1,8 @@ { "post-cache": "貼文快取", + "group-cache": "Group Cache", + "local-cache": "Local Cache", + "object-cache": "Object Cache", "percent-full": "%1% 容量", "post-cache-size": "貼文快取大小", "items-in-cache": "快取中的項目數量" diff --git a/public/src/modules/helpers.common.js b/public/src/modules/helpers.common.js index 706c44c6fa..25907fb446 100644 --- a/public/src/modules/helpers.common.js +++ b/public/src/modules/helpers.common.js @@ -196,7 +196,7 @@ module.exports = function (utils, Benchpress, relative_path) { function renderEvents(events) { return events.reduce((html, event) => { - html += `
  • + html += `
  • @@ -216,7 +216,7 @@ module.exports = function (utils, Benchpress, relative_path) { html += ``; if (this.privileges.isAdminOrMod) { - html += ` `; + html += ` `; } return html; diff --git a/src/cache/lru.js b/src/cache/lru.js index d0a92c46d5..3434e0773b 100644 --- a/src/cache/lru.js +++ b/src/cache/lru.js @@ -37,12 +37,15 @@ module.exports = function (opts) { cache.enabled = opts.hasOwnProperty('enabled') ? opts.enabled : true; const cacheSet = lruCache.set; - // backwards compatibility + // expose properties while keeping backwards compatibility const propertyMap = new Map([ ['length', 'calculatedSize'], + ['calculatedSize', 'calculatedSize'], ['max', 'max'], ['maxSize', 'maxSize'], ['itemCount', 'size'], + ['size', 'size'], + ['ttl', 'ttl'], ]); propertyMap.forEach((lruProp, cacheProp) => { Object.defineProperty(cache, cacheProp, { diff --git a/src/cache/ttl.js b/src/cache/ttl.js index 3b9d3fee77..be7e795616 100644 --- a/src/cache/ttl.js +++ b/src/cache/ttl.js @@ -13,6 +13,23 @@ module.exports = function (opts) { cache.enabled = opts.hasOwnProperty('enabled') ? opts.enabled : true; const cacheSet = ttlCache.set; + // expose properties + const propertyMap = new Map([ + ['max', 'max'], + ['itemCount', 'size'], + ['size', 'size'], + ['ttl', 'ttl'], + ]); + propertyMap.forEach((ttlProp, cacheProp) => { + Object.defineProperty(cache, cacheProp, { + get: function () { + return ttlCache[ttlProp]; + }, + configurable: true, + enumerable: true, + }); + }); + cache.set = function (key, value, ttl) { if (!cache.enabled) { return; @@ -90,5 +107,13 @@ module.exports = function (opts) { return unCachedKeys; }; + cache.dump = function () { + return Array.from(ttlCache.entries()); + }; + + cache.peek = function (key) { + return ttlCache.get(key, { updateAgeOnGet: false }); + }; + return cache; }; diff --git a/src/controllers/admin/cache.js b/src/controllers/admin/cache.js index 67c9864ae5..6d5c385a22 100644 --- a/src/controllers/admin/cache.js +++ b/src/controllers/admin/cache.js @@ -3,8 +3,9 @@ const cacheController = module.exports; const utils = require('../../utils'); +const plugins = require('../../plugins'); -cacheController.get = function (req, res) { +cacheController.get = async function (req, res) { const postCache = require('../../posts/cache'); const groupCache = require('../../groups').cache; const { objectCache } = require('../../database'); @@ -23,29 +24,33 @@ cacheController.get = function (req, res) { misses: utils.addCommas(String(cache.misses)), hitRatio: ((cache.hits / (cache.hits + cache.misses) || 0)).toFixed(4), enabled: cache.enabled, + ttl: cache.ttl, }; } - - const data = { - postCache: getInfo(postCache), - groupCache: getInfo(groupCache), - localCache: getInfo(localCache), + let caches = { + post: postCache, + group: groupCache, + local: localCache, }; - if (objectCache) { - data.objectCache = getInfo(objectCache); + caches.object = objectCache; + } + caches = await plugins.hooks.fire('filter:admin.cache.get', caches); + for (const [key, value] of Object.entries(caches)) { + caches[key] = getInfo(value); } - res.render('admin/advanced/cache', data); + res.render('admin/advanced/cache', { caches }); }; -cacheController.dump = function (req, res, next) { - const caches = { +cacheController.dump = async function (req, res, next) { + let caches = { post: require('../../posts/cache'), object: require('../../database').objectCache, group: require('../../groups').cache, local: require('../../cache'), }; + caches = await plugins.hooks.fire('filter:admin.cache.get', caches); if (!caches[req.query.name]) { return next(); } diff --git a/src/controllers/authentication.js b/src/controllers/authentication.js index b97b0ca8c2..7b8af8e885 100644 --- a/src/controllers/authentication.js +++ b/src/controllers/authentication.js @@ -351,7 +351,7 @@ authenticationController.doLogin = async function (req, uid) { } } - await loginAsync({ uid: uid }); + await loginAsync({ uid: uid }, { keepSessionInfo: true }); await authenticationController.onSuccessfulLogin(req, uid); }; @@ -459,6 +459,7 @@ authenticationController.localLogin = async function (req, username, password, n }; const destroyAsync = util.promisify((req, callback) => req.session.destroy(callback)); +const logoutAsync = util.promisify((req, callback) => req.logout(callback)); authenticationController.logout = async function (req, res, next) { if (!req.loggedIn || !req.sessionID) { @@ -470,7 +471,7 @@ authenticationController.logout = async function (req, res, next) { try { await user.auth.revokeSession(sessionID, uid); - req.logout(); + await logoutAsync(); await destroyAsync(req); res.clearCookie(nconf.get('sessionKey'), meta.configs.cookie.get()); diff --git a/src/middleware/header.js b/src/middleware/header.js index f5722508b0..1086318d57 100644 --- a/src/middleware/header.js +++ b/src/middleware/header.js @@ -41,8 +41,10 @@ middleware.buildHeader = helpers.try(async (req, res, next) => { ]); if (!canLoginIfBanned && req.loggedIn) { - req.logout(); - return res.redirect('/'); + req.logout(() => { + res.redirect('/'); + }); + return; } res.locals.config = config; diff --git a/src/middleware/user.js b/src/middleware/user.js index 827e1e204a..db3a97ef08 100644 --- a/src/middleware/user.js +++ b/src/middleware/user.js @@ -35,7 +35,7 @@ module.exports = function (middleware) { async function authenticate(req, res) { async function finishLogin(req, user) { const loginAsync = util.promisify(req.login).bind(req); - await loginAsync(user); + await loginAsync(user, { keepSessionInfo: true }); await controllers.authentication.onSuccessfulLogin(req, user.uid); req.uid = user.uid; req.loggedIn = req.uid > 0; diff --git a/src/posts/cache.js b/src/posts/cache.js index 888fba6424..7f4711d0cd 100644 --- a/src/posts/cache.js +++ b/src/posts/cache.js @@ -6,7 +6,7 @@ const meta = require('../meta'); module.exports = cacheCreate({ name: 'post', maxSize: meta.config.postCacheSize, - sizeCalculation: function (n) { return n.length; }, + sizeCalculation: function (n) { return n.length || 1; }, ttl: 0, enabled: global.env === 'production', }); diff --git a/src/posts/index.js b/src/posts/index.js index 7b6d3ac787..196ebfc65a 100644 --- a/src/posts/index.js +++ b/src/posts/index.js @@ -93,7 +93,7 @@ Posts.getPostIndices = async function (posts, uid) { }; Posts.modifyPostByPrivilege = function (post, privileges) { - if (post.deleted && !(post.selfPost || privileges['posts:view_deleted'])) { + if (post && post.deleted && !(post.selfPost || privileges['posts:view_deleted'])) { post.content = '[[topic:post_is_deleted]]'; if (post.user) { post.user.signature = ''; diff --git a/src/routes/authentication.js b/src/routes/authentication.js index b2b4f0bf6d..b3f9bcba40 100644 --- a/src/routes/authentication.js +++ b/src/routes/authentication.js @@ -139,7 +139,7 @@ Auth.reloadRoutes = async function (params) { })(req, res, next); }, Auth.middleware.validateAuth, (req, res, next) => { async.waterfall([ - async.apply(req.login.bind(req), res.locals.user), + async.apply(req.login.bind(req), res.locals.user, { keepSessionInfo: true }), async.apply(controllers.authentication.onSuccessfulLogin, req, req.uid), ], (err) => { if (err) { diff --git a/src/socket.io/admin/cache.js b/src/socket.io/admin/cache.js index 9188ac8f5b..1d382720f5 100644 --- a/src/socket.io/admin/cache.js +++ b/src/socket.io/admin/cache.js @@ -3,26 +3,30 @@ const SocketCache = module.exports; const db = require('../../database'); +const plugins = require('../../plugins'); SocketCache.clear = async function (socket, data) { - if (data.name === 'post') { - require('../../posts/cache').reset(); - } else if (data.name === 'object' && db.objectCache) { - db.objectCache.reset(); - } else if (data.name === 'group') { - require('../../groups').cache.reset(); - } else if (data.name === 'local') { - require('../../cache').reset(); + let caches = { + post: require('../../posts/cache'), + object: db.objectCache, + group: require('../../groups').cache, + local: require('../../cache'), + }; + caches = await plugins.hooks.fire('filter:admin.cache.get', caches); + if (!caches[data.name]) { + return; } + caches[data.name].reset(); }; SocketCache.toggle = async function (socket, data) { - const caches = { + let caches = { post: require('../../posts/cache'), object: db.objectCache, group: require('../../groups').cache, local: require('../../cache'), }; + caches = await plugins.hooks.fire('filter:admin.cache.get', caches); if (!caches[data.name]) { return; } diff --git a/src/views/admin/advanced/cache.tpl b/src/views/admin/advanced/cache.tpl index 3ac75a0d38..c5a2dc2143 100644 --- a/src/views/admin/advanced/cache.tpl +++ b/src/views/admin/advanced/cache.tpl @@ -2,118 +2,43 @@
    + {{{each caches}}}
    -
    [[admin/advanced/cache:post-cache]]
    +
    [[admin/advanced/cache:{@key}-cache]]
    -
    +
    - {postCache.length} / {postCache.maxSize}
    + {{{if ../length}}}{../length}{{{else}}}{../itemCount}{{{end}}} / {{{if ../max}}}{../max}{{{else}}}{../maxSize}{{{end}}}
    -
    - [[admin/advanced/cache:percent-full, {postCache.percentFull}]] +
    + [[admin/advanced/cache:percent-full, {../percentFull}]]
    - {postCache.hits}
    - {postCache.misses}
    - {postCache.hitRatio}
    - + {../hits}
    + {../misses}
    + {../hitRatio}
    + {{{if ../ttl}}} {../ttl}
    {{{end}}} + {{{if (@key == "post")}}}
    -
    - - -
    -
    -
    - - -
    -
    -
    Object Cache
    -
    -
    - -
    - {objectCache.itemCount} / {objectCache.max}
    -
    -
    - [[admin/advanced/cache:percent-full, {objectCache.percentFull}]] -
    -
    - - {objectCache.hits}
    - {objectCache.misses}
    - {objectCache.hitRatio}
    - - -
    -
    -
    - - -
    -
    -
    Group Cache
    -
    -
    - -
    - {groupCache.itemCount} / {groupCache.max}
    - -
    -
    - [[admin/advanced/cache:percent-full, {groupCache.percentFull}]] -
    -
    - - {groupCache.hits}
    - {groupCache.misses}
    - {groupCache.hitRatio}
    - - -
    -
    -
    - -
    -
    -
    Local Cache
    -
    -
    - -
    - {localCache.itemCount} / {localCache.max}
    - -
    -
    - [[admin/advanced/cache:percent-full, {localCache.percentFull}]] -
    -
    - - {localCache.hits}
    - {localCache.misses}
    - {localCache.hitRatio}
    - - + {{{end}}} + +
    + {{{end}}} +