got the changes to itself done to return the middleware function,
and for most routes i updated them
still TODO the more complex routes, and change them to the refactored schema checking
paramConverter,csrf,numFiles,blockBypassCheck,dnsblCheck,makePostController);//mod post has token instead of captcha
makePostController.paramConverter,csrf,numFiles,blockBypassCheck,dnsblCheck,makePostController.controller);//mod post has token instead of captcha
//post actions
router.post('/board/:board/actions',geoAndTor,torPreBypassCheck,processIp,useSession,sessionRefresh,Boards.exists,calcPerms,banCheck,paramConverter,verifyCaptcha,actionController);//public, with captcha
router.post('/board/:board/actions',geoAndTor,torPreBypassCheck,processIp,useSession,sessionRefresh,Boards.exists,calcPerms,banCheck,actionController.paramConverter,verifyCaptcha,actionController.controller);//public, with captcha
router.post('/global/deleteboard',useSession,sessionRefresh,csrf,paramConverter,calcPerms,isLoggedIn,hasPerms(Math.min(config.get.deleteBoardPermLevel,1)),deleteBoardController);//delete board from global management panel
router.post('/global/addnews',useSession,sessionRefresh,csrf,calcPerms,isLoggedIn,hasPerms(0),paramConverter,addNewsController);//add new newspost
router.post('/global/editnews',useSession,sessionRefresh,csrf,calcPerms,isLoggedIn,hasPerms(0),paramConverter,editNewsController);//add new newspost
router.post('/global/deleteboard',useSession,sessionRefresh,csrf,deleteBoardController.paramConverter,calcPerms,isLoggedIn,hasPerms(Math.min(config.get.deleteBoardPermLevel,1)),deleteBoardController.controller);//delete board from global management panel
router.post('/global/addnews',useSession,sessionRefresh,csrf,calcPerms,isLoggedIn,hasPerms(0),addNewsController.paramConverter,addNewsController.controller);//add new newspost
router.post('/global/editnews',useSession,sessionRefresh,csrf,calcPerms,isLoggedIn,hasPerms(0),editNewsController.paramConverter,editNewsController.controller);//add new newspost
errors.push(`Min thread message length must be 0-${globalLimits.fieldLength.message} and not more than "Max Thread Message Length" (currently ${res.locals.board.settings.maxThreadMessageLength})`);
errors.push(`Min reply message length must be 0-${globalLimits.fieldLength.message} and not more than "Max Reply Message Length" (currently ${res.locals.board.settings.maxReplyMessageLength})`);
errors.push(`Max thread message length must be 0-${globalLimits.fieldLength.message} and not less than "Min Thread Message Length" (currently ${res.locals.board.settings.minThreadMessageLength})`);
errors.push(`Max reply message length must be 0-${globalLimits.fieldLength.message} and not less than "Min Reply Message Length" (currently ${res.locals.board.settings.minReplyMessageLength})`);
errors.push(`Min thread message length must be 0-${globalLimits.fieldLength.message} and not more than "Max Thread Message Length" (currently ${res.locals.board.settings.maxThreadMessageLength})`);
errors.push(`Min reply message length must be 0-${globalLimits.fieldLength.message} and not more than "Max Reply Message Length" (currently ${res.locals.board.settings.maxReplyMessageLength})`);
errors.push(`Max thread message length must be 0-${globalLimits.fieldLength.message} and not less than "Min Thread Message Length" (currently ${res.locals.board.settings.minThreadMessageLength})`);
errors.push(`Max reply message length must be 0-${globalLimits.fieldLength.message} and not less than "Min Reply Message Length" (currently ${res.locals.board.settings.minReplyMessageLength})`);
{result:numberBody(req.body.captcha_options_generate_limit,1),expected:true,error:'Captcha options generate limit must be a number > 0'},
{result:numberBody(req.body.captcha_options_grid_size,2,6),expected:true,error:'Captcha options grid size must be a number from 2-6'},
{result:numberBody(req.body.captcha_options_image_size,50,500),expected:true,error:'Captcha options image size must be a number from 50-500'},
{result:numberBody(req.body.captcha_options_grid_icon_y_offset,0,50),expected:true,error:'Captcha options icon y offset must be a number from 0-50'},
{result:numberBody(req.body.captcha_options_num_distorts_min,0,10),expected:true,error:'Captcha options min distorts must be a number from 0-10'},
{result:numberBody(req.body.captcha_options_num_distorts_max,0,10),expected:true,error:'Captcha options max distorts must be a number from 0-10'},
{result:minmaxBody(req.body.captcha_options_num_distorts_min,req.body.captcha_options_num_distorts_max),expected:true,error:'Captcha options distorts min must be less than max'},
{result:numberBody(req.body.captcha_options_distortion,0,50),expected:true,error:'Captcha options distortion must be a number from 0-50'},
{result:numberBody(req.body.video_thumb_percentage,0,100),expected:true,error:'Video thumbnail percentage must be a number from 1-100'},
{result:numberBody(req.body.default_ban_duration),expected:true,error:'Invalid default ban duration'},
{result:numberBody(req.body.quote_limit),expected:true,error:'Quote limit must be a number'},
{result:numberBody(req.body.preview_replies),expected:true,error:'Preview replies must be a number'},
{result:numberBody(req.body.sticky_preview_replies),expected:true,error:'Sticky preview replies must be a number'},
{result:numberBody(req.body.early_404_fraction),expected:true,error:'Early 404 fraction must be a number'},
{result:numberBody(req.body.early_404_replies),expected:true,error:'Early 404 fraction must be a number'},
{result:numberBody(req.body.max_recent_news),expected:true,error:'Max recent news must be a number'},
{result:lengthBody(req.body.space_file_name_replacement,1,1),expected:false,error:'Space file name replacement must be 1 character'},
{result:lengthBody(req.body.highlight_options_language_subset,0,10000),expected:false,error:'Highlight options language subset must not exceed 10000 characters'},
{result:lengthBody(req.body.highlight_options_threshold),expected:false,error:'Highlight options threshold must be a number'},
{result:numberBody(req.body.global_limits_thread_limit_min),expected:true,error:'Global thread limit minimum must be a number'},
{result:numberBody(req.body.global_limits_thread_limit_max),expected:true,error:'Global thread limit maximum must be a number'},
{result:minmaxBody(req.body.global_limits_thread_limit_min,req.body.global_limits_thread_limit_max),expected:true,error:'Global thread limit min must be less than max'},
{result:numberBody(req.body.global_limits_reply_limit_min),expected:true,error:'Global reply limit minimum must be a number'},
{result:numberBody(req.body.global_limits_reply_limit_max),expected:true,error:'Global reply limit maximum must be a number'},
{result:minmaxBody(req.body.global_limits_reply_limit_min,req.body.global_limits_reply_limit_max),expected:true,error:'Global reply limit min must be less than max'},
{result:numberBody(req.body.global_limits_bump_limit_min),expected:true,error:'Global bump limit minimum must be a number'},
{result:numberBody(req.body.global_limits_bump_limit_max),expected:true,error:'Global bump limit minimum must be a number'},
{result:minmaxBody(req.body.global_limits_bump_limit_min,req.body.global_limits_bump_limit_max),expected:true,error:'Global bump limit min must be less than max'},
{result:numberBody(req.body.global_limits_post_files_max),expected:true,error:'Post files max must be a number'},
{result:numberBody(req.body.global_limits_post_files_size_max),expected:true,error:'Post files size must be a number'},
{result:numberBody(req.body.global_limits_banner_files_width,1),expected:true,error:'Banner files height must be a number > 0'},
{result:numberBody(req.body.global_limits_banner_files_height,1),expected:true,error:'Banner files width must be a number > 0'},
{result:numberBody(req.body.global_limits_banner_files_size_max),expected:true,error:'Banner files size must be a number'},
{result:numberBody(req.body.global_limits_banner_files_max),expected:true,error:'Banner files max must be a number'},
{result:numberBody(req.body.global_limits_banner_files_total),expected:true,error:'Banner files total must be a number'},
{result:numberBody(req.body.global_limits_flag_files_size_max),expected:true,error:'Flag files size must be a number'},
{result:numberBody(req.body.global_limits_flag_files_max),expected:true,error:'Flag files max must be a number'},
{result:numberBody(req.body.global_limits_flag_files_total),expected:true,error:'Flag files total must be a number'},
{result:numberBody(req.body.global_limits_field_length_name),expected:true,error:'Global limit name field length must be a number'},
{result:numberBody(req.body.global_limits_field_length_email),expected:true,error:'Global limit email field length must be a number'},
{result:numberBody(req.body.global_limits_field_length_subject),expected:true,error:'Global limit subject field length must be a number'},
{result:numberBody(req.body.global_limits_field_length_postpassword),expected:true,error:'Global limit postpassword field length must be a number'},
{result:numberBody(req.body.global_limits_field_length_message),expected:true,error:'Global limit message field length must be a number'},
{result:numberBody(req.body.global_limits_field_length_report_reason),expected:true,error:'Global limit report reason field length must be a number'},
{result:numberBody(req.body.global_limits_field_length_ban_reason),expected:true,error:'Global limit ban reason field length must be a number'},
{result:numberBody(req.body.global_limits_field_length_log_message),expected:true,error:'Global limit log message field length must be a number'},
{result:numberBody(req.body.global_limits_field_length_uri),expected:true,error:'Global limit board uri field length must be a number'},
{result:numberBody(req.body.global_limits_field_length_boardname),expected:true,error:'Global limit board name field length must be a number'},
{result:numberBody(req.body.global_limits_field_length_description),expected:true,error:'Global limit board description field length must be a number'},
{result:numberBody(req.body.global_limits_multi_input_posts_anon),expected:true,error:'Multi input anon limit must be a number'},
{result:numberBody(req.body.global_limits_multi_input_posts_staff),expected:true,error:'Multi input staff limit must be a number'},
{result:numberBody(req.body.global_limits_custom_css_max),expected:true,error:'Custom css max must be a number'},
{result:lengthBody(req.body.global_limits_custom_css_filters,0,10000),expected:false,error:'Custom css filters must not exceed 10000 characters'},
{result:numberBody(req.body.global_limits_custom_pages_max),expected:true,error:'Custom pages max must be a number'},
{result:numberBody(req.body.global_limits_custom_pages_max_length),expected:true,error:'Custom pages max length must be a number'},
{result:numberBody(req.body.board_defaults_lock_mode,0,2),expected:true,error:'Board default lock mode must be a number from 0-2'},
{result:numberBody(req.body.board_defaults_file_r9k_mode,0,2),expected:true,error:'Board default file r9k mode must be a number from 0-2'},
{result:numberBody(req.body.board_defaults_message_r9k_mode,0,2),expected:true,error:'Board default message r9k mode must be a number from 0-2'},
{result:numberBody(req.body.board_defaults_captcha_mode,0,2),expected:true,error:'Board default captcha mode must be a number from 0-2'},
{result:numberBody(req.body.board_defaults_tph_trigger),expected:true,error:'Board default tph trigger must be a number'},
{result:numberBody(req.body.board_defaults_pph_trigger),expected:true,error:'Board default pph trigger must be a number'},
{result:numberBody(req.body.board_defaults_pph_trigger_action,0,4),expected:true,error:'Board default pph trigger action must be a number from 0-4'},
{result:numberBody(req.body.board_defaults_tph_trigger_action,0,4),expected:true,error:'Board default tph trigger action must be a number from 0-4'},
{result:numberBody(req.body.board_defaults_captcha_reset,0,2),expected:true,error:'Board defaults captcha reset must be a number from 0-2'},
{result:numberBody(req.body.board_defaults_lock_reset,0,2),expected:true,error:'Board defaults lock reset must be a number from 0-2'},
{result:numberBodyVariable(req.body.board_defaults_reply_limit,req.body.global_limits_reply_limit_min,globalLimits.replyLimit.min,req.body.global_limits_reply_limit_max,globalLimits.replyLimit.max),expected:true,error:`Board defaults reply limit must be within global limits`},
{result:numberBodyVariable(req.body.board_defaults_thread_limit,req.body.global_limits_thread_limit_min,globalLimits.threadLimit.min,req.body.global_limits_thread_limit_max,globalLimits.threadLimit.max),expected:true,error:`Board defaults thread limit must be within global limits`},
{result:numberBodyVariable(req.body.board_defaults_bump_limit,req.body.global_limits_bump_limit_min,globalLimits.bumpLimit.min,req.body.global_limits_bump_limit_max,globalLimits.bumpLimit.max),expected:true,error:`Board defaults bump limit must be within global limits`},
{result:numberBodyVariable(req.body.board_defaults_max_files,0,0,req.body.global_limits_post_files_max,globalLimits.postFiles.max),expected:true,error:`Board defaults max files must be within global limits`},
{result:numberBodyVariable(req.body.board_defaults_max_thread_message_length,0,0,req.body.global_limits_field_length_message,globalLimits.fieldLength.message),expected:true,error:`Board defaults max thread message length must be within global limits`},
{result:numberBodyVariable(req.body.board_defaults_max_reply_message_length,0,0,req.body.global_limits_field_length_message,globalLimits.fieldLength.message),expected:true,error:`Board defaults max reply message length must be within global limits`},
{result:numberBody(req.body.board_defaults_min_thread_message_length),expected:true,error:'Board defaults min thread message length must be a number'},
{result:numberBody(req.body.board_defaults_min_reply_message_length),expected:true,error:'Board defaults min reply message length must be a number'},
{result:minmaxBody(req.body.board_defaults_min_thread_message_length,req.body.board_defaults_max_thread_message_length),expected:true,error:'Board defaults thread message length min must be less than max'},
{result:minmaxBody(req.body.board_defaults_min_reply_message_length,req.body.board_defaults_max_reply_message_length),expected:true,error:'Board defaults reply message length min must be less than max'},
{result:numberBody(req.body.board_defaults_filter_mode,0,2),expected:true,error:'Board defaults filter most must be a number from 0-2'},
{result:numberBody(req.body.board_defaults_filter_ban_duration),expected:true,error:'Board defaults filter ban duration must be a number'},
{result:lengthBody(req.body.webring_following,0,10000),expected:false,error:'Webring following list must not exceed 10000 characters'},
{result:lengthBody(req.body.webring_blacklist,0,10000),expected:false,error:'Webring blacklist must not exceed 10000 characters'},
{result:lengthBody(req.body.webring_logos,0,10000),expected:false,error:'Webring logos list must not exceed 10000 characters'},
{result:numberBody(req.body.captcha_options_generate_limit,1),expected:true,error:'Captcha options generate limit must be a number > 0'},
{result:numberBody(req.body.captcha_options_grid_size,2,6),expected:true,error:'Captcha options grid size must be a number from 2-6'},
{result:numberBody(req.body.captcha_options_image_size,50,500),expected:true,error:'Captcha options image size must be a number from 50-500'},
{result:numberBody(req.body.captcha_options_grid_icon_y_offset,0,50),expected:true,error:'Captcha options icon y offset must be a number from 0-50'},
{result:numberBody(req.body.captcha_options_num_distorts_min,0,10),expected:true,error:'Captcha options min distorts must be a number from 0-10'},
{result:numberBody(req.body.captcha_options_num_distorts_max,0,10),expected:true,error:'Captcha options max distorts must be a number from 0-10'},
{result:minmaxBody(req.body.captcha_options_num_distorts_min,req.body.captcha_options_num_distorts_max),expected:true,error:'Captcha options distorts min must be less than max'},
{result:numberBody(req.body.captcha_options_distortion,0,50),expected:true,error:'Captcha options distortion must be a number from 0-50'},
{result:numberBody(req.body.video_thumb_percentage,0,100),expected:true,error:'Video thumbnail percentage must be a number from 1-100'},
{result:numberBody(req.body.default_ban_duration),expected:true,error:'Invalid default ban duration'},
{result:numberBody(req.body.quote_limit),expected:true,error:'Quote limit must be a number'},
{result:numberBody(req.body.preview_replies),expected:true,error:'Preview replies must be a number'},
{result:numberBody(req.body.sticky_preview_replies),expected:true,error:'Sticky preview replies must be a number'},
{result:numberBody(req.body.early_404_fraction),expected:true,error:'Early 404 fraction must be a number'},
{result:numberBody(req.body.early_404_replies),expected:true,error:'Early 404 fraction must be a number'},
{result:numberBody(req.body.max_recent_news),expected:true,error:'Max recent news must be a number'},
{result:lengthBody(req.body.space_file_name_replacement,1,1),expected:false,error:'Space file name replacement must be 1 character'},
{result:lengthBody(req.body.highlight_options_language_subset,0,10000),expected:false,error:'Highlight options language subset must not exceed 10000 characters'},
{result:lengthBody(req.body.highlight_options_threshold),expected:false,error:'Highlight options threshold must be a number'},
{result:numberBody(req.body.global_limits_thread_limit_min),expected:true,error:'Global thread limit minimum must be a number'},
{result:numberBody(req.body.global_limits_thread_limit_max),expected:true,error:'Global thread limit maximum must be a number'},
{result:minmaxBody(req.body.global_limits_thread_limit_min,req.body.global_limits_thread_limit_max),expected:true,error:'Global thread limit min must be less than max'},
{result:numberBody(req.body.global_limits_reply_limit_min),expected:true,error:'Global reply limit minimum must be a number'},
{result:numberBody(req.body.global_limits_reply_limit_max),expected:true,error:'Global reply limit maximum must be a number'},
{result:minmaxBody(req.body.global_limits_reply_limit_min,req.body.global_limits_reply_limit_max),expected:true,error:'Global reply limit min must be less than max'},
{result:numberBody(req.body.global_limits_bump_limit_min),expected:true,error:'Global bump limit minimum must be a number'},
{result:numberBody(req.body.global_limits_bump_limit_max),expected:true,error:'Global bump limit minimum must be a number'},
{result:minmaxBody(req.body.global_limits_bump_limit_min,req.body.global_limits_bump_limit_max),expected:true,error:'Global bump limit min must be less than max'},
{result:numberBody(req.body.global_limits_post_files_max),expected:true,error:'Post files max must be a number'},
{result:numberBody(req.body.global_limits_post_files_size_max),expected:true,error:'Post files size must be a number'},
{result:numberBody(req.body.global_limits_banner_files_width,1),expected:true,error:'Banner files height must be a number > 0'},
{result:numberBody(req.body.global_limits_banner_files_height,1),expected:true,error:'Banner files width must be a number > 0'},
{result:numberBody(req.body.global_limits_banner_files_size_max),expected:true,error:'Banner files size must be a number'},
{result:numberBody(req.body.global_limits_banner_files_max),expected:true,error:'Banner files max must be a number'},
{result:numberBody(req.body.global_limits_banner_files_total),expected:true,error:'Banner files total must be a number'},
{result:numberBody(req.body.global_limits_flag_files_size_max),expected:true,error:'Flag files size must be a number'},
{result:numberBody(req.body.global_limits_flag_files_max),expected:true,error:'Flag files max must be a number'},
{result:numberBody(req.body.global_limits_flag_files_total),expected:true,error:'Flag files total must be a number'},
{result:numberBody(req.body.global_limits_field_length_name),expected:true,error:'Global limit name field length must be a number'},
{result:numberBody(req.body.global_limits_field_length_email),expected:true,error:'Global limit email field length must be a number'},
{result:numberBody(req.body.global_limits_field_length_subject),expected:true,error:'Global limit subject field length must be a number'},
{result:numberBody(req.body.global_limits_field_length_postpassword),expected:true,error:'Global limit postpassword field length must be a number'},
{result:numberBody(req.body.global_limits_field_length_message),expected:true,error:'Global limit message field length must be a number'},
{result:numberBody(req.body.global_limits_field_length_report_reason),expected:true,error:'Global limit report reason field length must be a number'},
{result:numberBody(req.body.global_limits_field_length_ban_reason),expected:true,error:'Global limit ban reason field length must be a number'},
{result:numberBody(req.body.global_limits_field_length_log_message),expected:true,error:'Global limit log message field length must be a number'},
{result:numberBody(req.body.global_limits_field_length_uri),expected:true,error:'Global limit board uri field length must be a number'},
{result:numberBody(req.body.global_limits_field_length_boardname),expected:true,error:'Global limit board name field length must be a number'},
{result:numberBody(req.body.global_limits_field_length_description),expected:true,error:'Global limit board description field length must be a number'},
{result:numberBody(req.body.global_limits_multi_input_posts_anon),expected:true,error:'Multi input anon limit must be a number'},
{result:numberBody(req.body.global_limits_multi_input_posts_staff),expected:true,error:'Multi input staff limit must be a number'},
{result:numberBody(req.body.global_limits_custom_css_max),expected:true,error:'Custom css max must be a number'},
{result:lengthBody(req.body.global_limits_custom_css_filters,0,10000),expected:false,error:'Custom css filters must not exceed 10000 characters'},
{result:numberBody(req.body.global_limits_custom_pages_max),expected:true,error:'Custom pages max must be a number'},
{result:numberBody(req.body.global_limits_custom_pages_max_length),expected:true,error:'Custom pages max length must be a number'},
{result:numberBody(req.body.board_defaults_lock_mode,0,2),expected:true,error:'Board default lock mode must be a number from 0-2'},
{result:numberBody(req.body.board_defaults_file_r9k_mode,0,2),expected:true,error:'Board default file r9k mode must be a number from 0-2'},
{result:numberBody(req.body.board_defaults_message_r9k_mode,0,2),expected:true,error:'Board default message r9k mode must be a number from 0-2'},
{result:numberBody(req.body.board_defaults_captcha_mode,0,2),expected:true,error:'Board default captcha mode must be a number from 0-2'},
{result:numberBody(req.body.board_defaults_tph_trigger),expected:true,error:'Board default tph trigger must be a number'},
{result:numberBody(req.body.board_defaults_pph_trigger),expected:true,error:'Board default pph trigger must be a number'},
{result:numberBody(req.body.board_defaults_pph_trigger_action,0,4),expected:true,error:'Board default pph trigger action must be a number from 0-4'},
{result:numberBody(req.body.board_defaults_tph_trigger_action,0,4),expected:true,error:'Board default tph trigger action must be a number from 0-4'},
{result:numberBody(req.body.board_defaults_captcha_reset,0,2),expected:true,error:'Board defaults captcha reset must be a number from 0-2'},
{result:numberBody(req.body.board_defaults_lock_reset,0,2),expected:true,error:'Board defaults lock reset must be a number from 0-2'},
{result:numberBodyVariable(req.body.board_defaults_reply_limit,req.body.global_limits_reply_limit_min,globalLimits.replyLimit.min,req.body.global_limits_reply_limit_max,globalLimits.replyLimit.max),expected:true,error:`Board defaults reply limit must be within global limits`},
{result:numberBodyVariable(req.body.board_defaults_thread_limit,req.body.global_limits_thread_limit_min,globalLimits.threadLimit.min,req.body.global_limits_thread_limit_max,globalLimits.threadLimit.max),expected:true,error:`Board defaults thread limit must be within global limits`},
{result:numberBodyVariable(req.body.board_defaults_bump_limit,req.body.global_limits_bump_limit_min,globalLimits.bumpLimit.min,req.body.global_limits_bump_limit_max,globalLimits.bumpLimit.max),expected:true,error:`Board defaults bump limit must be within global limits`},
{result:numberBodyVariable(req.body.board_defaults_max_files,0,0,req.body.global_limits_post_files_max,globalLimits.postFiles.max),expected:true,error:`Board defaults max files must be within global limits`},
{result:numberBodyVariable(req.body.board_defaults_max_thread_message_length,0,0,req.body.global_limits_field_length_message,globalLimits.fieldLength.message),expected:true,error:`Board defaults max thread message length must be within global limits`},
{result:numberBodyVariable(req.body.board_defaults_max_reply_message_length,0,0,req.body.global_limits_field_length_message,globalLimits.fieldLength.message),expected:true,error:`Board defaults max reply message length must be within global limits`},
{result:numberBody(req.body.board_defaults_min_thread_message_length),expected:true,error:'Board defaults min thread message length must be a number'},
{result:numberBody(req.body.board_defaults_min_reply_message_length),expected:true,error:'Board defaults min reply message length must be a number'},
{result:minmaxBody(req.body.board_defaults_min_thread_message_length,req.body.board_defaults_max_thread_message_length),expected:true,error:'Board defaults thread message length min must be less than max'},
{result:minmaxBody(req.body.board_defaults_min_reply_message_length,req.body.board_defaults_max_reply_message_length),expected:true,error:'Board defaults reply message length min must be less than max'},
{result:numberBody(req.body.board_defaults_filter_mode,0,2),expected:true,error:'Board defaults filter most must be a number from 0-2'},
{result:numberBody(req.body.board_defaults_filter_ban_duration),expected:true,error:'Board defaults filter ban duration must be a number'},
{result:lengthBody(req.body.webring_following,0,10000),expected:false,error:'Webring following list must not exceed 10000 characters'},
{result:lengthBody(req.body.webring_blacklist,0,10000),expected:false,error:'Webring blacklist must not exceed 10000 characters'},
{result:lengthBody(req.body.webring_logos,0,10000),expected:false,error:'Webring logos list must not exceed 10000 characters'},
errors.push(`Too many files. Max files per post ${res.locals.board.settings.maxFiles<globalLimits.postFiles.max?'on this board ':''}is ${res.locals.board.settings.maxFiles}`);
}
// check file, subject and message enforcement according to board settings
errors.push(`Too many files. Max files per post ${res.locals.board.settings.maxFiles<globalLimits.postFiles.max?'on this board ':''}is ${res.locals.board.settings.maxFiles}`);
}
// check file, subject and message enforcement according to board settings
//todo: separate these into a schema/set for differ ent routes and inject it before the controller, to prevent checkign a bunch of other shit for every post