core: allow stateless UA

This commit is contained in:
undefined committed 2021-10-13 01:37:41 +08:00
1 parent f46b1134d6
commit a5b5ae49d4
3 files changed
+14 -3

No files matched your search

+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "hydrooj", "name": "hydrooj",
"version": "2.39.19", "version": "2.39.20",
"bin": "bin/hydrooj.js", "bin": "bin/hydrooj.js",
"main": "src/loader", "main": "src/loader",
"module": "src/loader", "module": "src/loader",
+9
View File
@@ -154,6 +154,14 @@ DomainUserSetting(
Setting('setting_storage', 'level', 0, 'number', 'level', null, FLAG_HIDDEN | FLAG_DISABLED), Setting('setting_storage', 'level', 0, 'number', 'level', null, FLAG_HIDDEN | FLAG_DISABLED),
); );
const ignoreUA = [
'bingbot',
'Gatus',
'Googlebot',
'Uptime',
'YandexBot',
].join('\n');
SystemSetting( SystemSetting(
Setting('setting_file', 'file.endPoint', 'http://127.0.0.1:9000', 'text', 'file.endPoint', 'Storage engine endPoint'), Setting('setting_file', 'file.endPoint', 'http://127.0.0.1:9000', 'text', 'file.endPoint', 'Storage engine endPoint'),
Setting('setting_file', 'file.accessKey', null, 'text', 'file.accessKey', 'Storage engine accessKey'), Setting('setting_file', 'file.accessKey', null, 'text', 'file.accessKey', 'Storage engine accessKey'),
@@ -182,6 +190,7 @@ SystemSetting(
Setting('setting_server', 'server.language', 'zh_CN', langRange, 'server.language', 'Default display language'), Setting('setting_server', 'server.language', 'zh_CN', langRange, 'server.language', 'Default display language'),
Setting('setting_server', 'server.login', true, 'boolean', 'server.login', 'Allow builtin-login', FLAG_PRO), Setting('setting_server', 'server.login', true, 'boolean', 'server.login', 'Allow builtin-login', FLAG_PRO),
Setting('setting_server', 'server.message', true, 'boolean', 'server.message', 'Allow users send messages'), Setting('setting_server', 'server.message', true, 'boolean', 'server.message', 'Allow users send messages'),
Setting('setting_server', 'server.ignoreUA', ignoreUA, 'textarea', 'server.ignoreUA', 'ignoredUA'),
Setting('setting_limits', 'limit.problem_files_max', 100, 'number', 'limit.problem_files_max', 'Max files per problem'), Setting('setting_limits', 'limit.problem_files_max', 100, 'number', 'limit.problem_files_max', 'Max files per problem'),
Setting('setting_limits', 'limit.problem_files_size_max', 128 * 1024 * 1024, 'number', 'limit.problem_files_size_max', 'Max files size per problem'), Setting('setting_limits', 'limit.problem_files_size_max', 128 * 1024 * 1024, 'number', 'limit.problem_files_size_max', 'Max files size per problem'),
Setting('setting_limits', 'limit.user_files', 100, 'number', 'limit.user_files', 'Max files for user'), Setting('setting_limits', 'limit.user_files', 100, 'number', 'limit.user_files', 'Max files for user'),
+4 -2
View File
@@ -620,16 +620,18 @@ export class Handler extends HandlerCommon {
} }
async saveCookie() { async saveCookie() {
const ua = this.request.headers['user-agent'] || '';
if (!this.session.uid && system.get('server.ignoreUA').split('\n').filter((i) => i && ua.includes(i)).length) return;
const expireSeconds = this.session.save const expireSeconds = this.session.save
? system.get('session.saved_expire_seconds') ? system.get('session.saved_expire_seconds')
: system.get('session.unsaved_expire_seconds'); : system.get('session.unsaved_expire_seconds');
const $update = { const $update = {
updateIp: this.request.ip, updateIp: this.request.ip,
updateUa: this.request.headers['user-agent'] || '', updateUa: ua,
}; };
const $create = { const $create = {
createIp: this.request.ip, createIp: this.request.ip,
createUa: this.request.headers['user-agent'] || '', createUa: ua,
createHost: this.request.host, createHost: this.request.host,
}; };
if (this.session._id) { if (this.session._id) {