more model and form improvement

add a few missing field to paramconverter
make dnsbl cache time divided since it takes the time format
make redis print when it gets a message if debuglogs are on
merge-requests/218/head
Thomas Lynch 3 years ago
parent d4ff40d715
commit 849882a066
  1. 2
      helpers/checks/dnsbl.js
  2. 2
      helpers/paramconverter.js
  3. 65
      models/forms/changeglobalsettings.js
  4. 17
      models/pages/globalmanage/settings.js
  5. 1
      redis.js

@ -17,7 +17,7 @@ module.exports = async (req, res, next) => {
if (isBlacklisted === null) { //not cached
const dnsblResp = await batch(ip, dnsbl.blacklists);
isBlacklisted = dnsblResp.some(r => r.listed === true);
await cache.set(`blacklisted:${ip}`, isBlacklisted, dnsbl.cacheTime);
await cache.set(`blacklisted:${ip}`, isBlacklisted, dnsbl.cacheTime/1000);
}
if (isBlacklisted) {
deleteTempFiles(req).catch(e => console.error);

@ -13,7 +13,7 @@ const { ObjectId } = require(__dirname+'/../db/db.js')
'captcha_options_num_distorts_min', 'captcha_options_num_distorts_max', 'captcha_options_distortion', 'flood_timers_same_content_same_ip',
'flood_timers_same_content_any_ip', 'flood_timers_any_content_same_ip', 'block_bypass_expire_after_uses', 'ip_hash_perm_level',
'delete_board_perm_level', 'rate_limit_cost_captcha', 'rate_limit_cost_board_settings', 'rate_limit_cost_edit_post', 'overboard_limit', 'overboard_catalog_limit',
'lock_wait', 'prune_modlogs', 'thumb_size', 'video_thumb_percentage', 'quote_limit', 'preview_replies', 'sticky_preview_replies',
'lock_wait', 'prune_modlogs', 'prune_ips', 'thumb_size', 'video_thumb_percentage', 'quote_limit', 'preview_replies', 'sticky_preview_replies',
'early_404_fraction', 'early_404_replies', 'max_recent_news', 'highlight_options_threshold', 'global_limits_thread_limit_min', 'global_limits_thread_limit_max',
'global_limits_reply_limit_min', 'global_limits_reply_limit_max', 'global_limits_bump_limit_min', 'global_limits_bump_limit_max', 'global_limits_post_files_max',
'global_limits_post_files_size_max', 'global_limits_banner_files_width', 'global_limits_banner_files_height', 'global_limits_banner_files_max',

@ -73,42 +73,37 @@ module.exports = async (req, res, next) => {
},
overboardLimit: numberSetting(req.body.overboard_limit, oldSettings.overboardLimit),
overboardCatalogLimit: numberSetting(req.body.overboard_catalog_limit, oldSettings.overboardCatalogLimit),
/*
cacheTemplates: booleanSetting(req.body.cache_templates, oldSettings.cacheTemplates),
debugLogs: booleanSetting(req.body.debug_logs, oldSettings.debugLogs),
lockWait: numberSetting(req.body.lock_wait, oldSettings.lockWait),
pruneModlogs: numberSetting(req.body.prune_modlogs, oldSettings.pruneModlogs),
pruneIps: booleanSetting(req.body.prune_ips, oldSettings.pruneIps),
pruneIps: numberSetting(req.body.prune_ips, oldSettings.pruneIps),
enableWebring: booleanSetting(req.body.enable_webring, oldSettings.enableWebring),
enableUserBoardCreation: booleanSetting(req.body.enable_user_board_creation, oldSettings.enableUserBoardCreation),
enableUserAccountCreation: booleanSetting(req.body.enable_user_account_creation, oldSettings.enableUserAccountCreation),
thumbExtension: trimSetting(req.body.thumb_extension, oldSettings.thumbExtension),
animatedGifThumbnails: booleanSetting(req.body.animated_gif_thumbnails, oldSettings.animatedGifThumbnails),
audioThumbnails: booleanSetting(req.body.audio_thumbnails, oldSettings.audioThumbnails),
ffmpegGifThumbnails: booleanSetting(req.body.ffmpeg_gif_thumbnails, oldSettings.ffmpegGifThumbnails),
thumbSize: numberSetting(req.body.thumb_size, oldSettings.thumbSize),
videoThumbPercentage: numberSetting(req.body.video_thumb_percentage, oldSettings.videoThumbPercentage),
otherMimeTypes: arraySetting(req.body.other_mime_types, oldSettings.otherMimeTypes),
checkRealMimeTypes: booleanSetting(req.body.check_real_mime_types, oldSettings.checkRealMimeTypes),
allowMimeNoMatch: booleanSetting(req.body.allow_mime_no_match, oldSettings.allowMimeNoMatch),
defaultBanDuration: numberSetting(req.body.default_ban_duration, oldSettings.defaultBanDuration),
quoteLimit: numberSetting(req.body.quote_limit, oldSettings.quoteLimit),
strictFiltering: booleanSetting(req.body.strict_filtering, oldSettings.strictFiltering),
previewReplies: numberSetting(req.body.preview_replies, oldSettings.previewReplies),
stickyPreviewReplies: numberSetting(req.body.sticky_preview_replies, oldSettings.stickyPreviewReplies),
early404Fraction: numberSetting(req.body.early_404_fraction, oldSettings.early404Fraction),
early404Replies: numberSetting(req.body.early_404_replies, oldSettings.early404Replies),
maxRecentNews: numberSetting(req.body.max_recent_news, oldSettings.maxRecentNews),
filterFileNames: booleanSetting(req.body.filter_file_names, oldSettings.filterFileNames),
spaceFileNameReplacement: trimSetting(req.body.space_file_name_replacement, oldSettings.spaceFileNameReplacement),
highlightOptions: {
languageSubset: arraySetting(req.body.highlight_options_language_subset, oldSettings.highlightOptions.languageSubset),
threshold: numberSetting(req.body.highlight_options_threshold, oldSettings.highlightOptions.threshold),
},
themes: arraySetting(req.body.themes, oldSettings.themes),
codeThemes: arraySetting(req.body.code_themes, oldSettings.codeThemes),
globalLimits: {
...oldSettings.globalLimits,
customCss: {
enabled: booleanSetting(req.body.global_limits_custom_css_enabled, oldSettings.globalLimits.customCss.enabled),
max: numberSetting(req.body.global_limits_custom_css_max, oldSettings.globalLimits.customCss.max),
strict: booleanSetting(req.body.global_limits_custom_css_strict, oldSettings.globalLimits.customCss.strict),
filters: arraySetting(req.body.global_limits_custom_css_filters, oldSettings.globalLimits.customCss.filters),
},
},
boardDefaults: {
...oldSettings.boardDefaults,
theme: trimSetting(req.body.board_defaults_theme, oldSettings.boardDefaults.theme),
codeTheme: trimSetting(req.body.board_defaults_code_theme, oldSettings.boardDefaults.codeTheme),
}
/*
globalLimits: {
threadLimit: {
min: numberSetting(req.body.global_limits_thread_limit_min, oldSettings.globalLimits.threadLimit.min),
max: numberSetting(req.body.global_limits_thread_limit_max, oldSettings.globalLimits.threadLimit.max),
@ -156,17 +151,29 @@ module.exports = async (req, res, next) => {
staff: numberSetting(req.body.global_limits_multi_input_posts_staff, oldSettings.globalLimits.multiInputs.posts.staff),
},
},
customCss: {
enabled: booleanSetting(req.body.global_limits_custom_css_enabled, oldSettings.globalLimits.customCss.enabled),
max: numberSetting(req.body.global_limits_custom_css_max, oldSettings.globalLimits.customCss.max),
strict: booleanSetting(req.body.global_limits_custom_css_strict, oldSettings.globalLimits.customCss.strict),
filters: arraySetting(req.body.global_limits_custom_css_filters, oldSettings.globalLimits.customCss.filters),
},
customPages: {
max: numberSetting(req.body.global_limits_custom_pages_max, oldSettings.globalLimits.customPages.max),
maxLength: numberSetting(req.body.global_limits_custom_pages_max_length, oldSettings.globalLimits.customPages.maxLength),
}
},
animatedGifThumbnails: booleanSetting(req.body.animated_gif_thumbnails, oldSettings.animatedGifThumbnails),
audioThumbnails: booleanSetting(req.body.audio_thumbnails, oldSettings.audioThumbnails),
ffmpegGifThumbnails: booleanSetting(req.body.ffmpeg_gif_thumbnails, oldSettings.ffmpegGifThumbnails),
thumbSize: numberSetting(req.body.thumb_size, oldSettings.thumbSize),
videoThumbPercentage: numberSetting(req.body.video_thumb_percentage, oldSettings.videoThumbPercentage),
otherMimeTypes: arraySetting(req.body.other_mime_types, oldSettings.otherMimeTypes),
checkRealMimeTypes: booleanSetting(req.body.check_real_mime_types, oldSettings.checkRealMimeTypes),
allowMimeNoMatch: booleanSetting(req.body.allow_mime_no_match, oldSettings.allowMimeNoMatch),
defaultBanDuration: numberSetting(req.body.default_ban_duration, oldSettings.defaultBanDuration),
quoteLimit: numberSetting(req.body.quote_limit, oldSettings.quoteLimit),
strictFiltering: booleanSetting(req.body.strict_filtering, oldSettings.strictFiltering),
previewReplies: numberSetting(req.body.preview_replies, oldSettings.previewReplies),
stickyPreviewReplies: numberSetting(req.body.sticky_preview_replies, oldSettings.stickyPreviewReplies),
early404Fraction: numberSetting(req.body.early_404_fraction, oldSettings.early404Fraction),
early404Replies: numberSetting(req.body.early_404_replies, oldSettings.early404Replies),
maxRecentNews: numberSetting(req.body.max_recent_news, oldSettings.maxRecentNews),
filterFileNames: booleanSetting(req.body.filter_file_names, oldSettings.filterFileNames),
spaceFileNameReplacement: trimSetting(req.body.space_file_name_replacement, oldSettings.spaceFileNameReplacement),
frontendScriptDefault: {
embedsEnabled: booleanSetting(req.body.frontend_script_default_embeds_enabled, oldSettings.frontendScriptDefault.embedsEnabled),
heightUnlimit: booleanSetting(req.body.frontend_script_default_height_unlimit, oldSettings.frontendScriptDefault.heightUnlimit),
@ -190,8 +197,6 @@ module.exports = async (req, res, next) => {
showYous: booleanSetting(req.body.frontend_script_default_show_yous, oldSettings.frontendScriptDefault.showYous),
},
boardDefaults: {
theme: trimSetting(req.body.board_defaults_theme, oldSettings.boardDefaults.theme),
codeTheme: trimSetting(req.body.board_defaults_code_theme, oldSettings.boardDefaults.codeTheme),
sfw: booleanSetting(req.body.board_defaults_sfw, oldSettings.boardDefaults.sfw),
lockMode: numberSetting(req.body.board_defaults_lock_mode, oldSettings.boardDefaults.lockMode),
fileR9KMode: numberSetting(req.body.board_defaults_file_r9k_mode, oldSettings.boardDefaults.fileR9KMode),

@ -1,25 +1,22 @@
'use strict';
const cache = require(__dirname+'/../../../redis.js');
const cache = require(__dirname+'/../../../redis.js')
, { themes, codeThemes } = require(__dirname+'/../../../helpers/themes.js')
, { countryNamesMap, countryCodes } = require(__dirname+'/../../../helpers/countries.js');
module.exports = async (req, res, next) => {
let settings = await cache.get('globalsettings');
if (!settings) {
settings = {
captchaMode: 0,
filters: [],
filterMode: 0,
filterBanDuration: 0,
}
cache.setnx('globalsettings', settings);
}
res
.set('Cache-Control', 'private, max-age=5')
.render('globalmanagesettings', {
csrf: req.csrfToken(),
settings,
countryNamesMap,
countryCodes,
themes,
codeThemes,
});
}

@ -29,6 +29,7 @@ module.exports = {
}
});
subscriber.on("message", (channel, message) => {
secrets.debugLogs && console.log(`Subscriber message from channel ${channel}`);
const data = JSON.parse(message);
messageCallbacks[channel].forEach(cb => {
cb(data);

Loading…
Cancel
Save