Files

1340 lines
44 KiB
JavaScript
Raw Permalink Normal View History

2026-04-07 02:04:22 +05:30
var __extends =
(this && this.__extends) ||
(function () {
var extendStatics = function (d, b) {
extendStatics =
Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array &&
function (d, b) {
d.__proto__ = b;
}) ||
function (d, b) {
for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];
};
return extendStatics(d, b);
};
return function (d, b) {
if (typeof b !== 'function' && b !== null) throw new TypeError('Class extends value ' + String(b) + ' is not a constructor or null');
extendStatics(d, b);
function __() {
this.constructor = d;
}
d.prototype = b === null ? Object.create(b) : ((__.prototype = b.prototype), new __());
};
})();
var __awaiter =
(this && this.__awaiter) ||
function (thisArg, _arguments, P, generator) {
function adopt(value) {
return value instanceof P
? value
: new P(function (resolve) {
resolve(value);
});
}
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) {
try {
step(generator.next(value));
} catch (e) {
reject(e);
}
}
function rejected(value) {
try {
step(generator['throw'](value));
} catch (e) {
reject(e);
}
}
function step(result) {
result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
}
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __generator =
(this && this.__generator) ||
function (thisArg, body) {
var _ = {
label: 0,
sent: function () {
if (t[0] & 1) throw t[1];
return t[1];
},
trys: [],
ops: [],
},
f,
y,
t,
g;
return (
(g = { next: verb(0), throw: verb(1), return: verb(2) }),
typeof Symbol === 'function' &&
(g[Symbol.iterator] = function () {
return this;
}),
g
);
function verb(n) {
return function (v) {
return step([n, v]);
};
}
function step(op) {
if (f) throw new TypeError('Generator is already executing.');
while (_)
try {
if (((f = 1), y && (t = op[0] & 2 ? y['return'] : op[0] ? y['throw'] || ((t = y['return']) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done)) return t;
if (((y = 0), t)) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0:
case 1:
t = op;
break;
case 4:
_.label++;
return { value: op[1], done: false };
case 5:
_.label++;
y = op[1];
op = [0];
continue;
case 7:
op = _.ops.pop();
_.trys.pop();
continue;
default:
if (!((t = _.trys), (t = t.length > 0 && t[t.length - 1])) && (op[0] === 6 || op[0] === 2)) {
_ = 0;
continue;
}
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) {
_.label = op[1];
break;
}
if (op[0] === 6 && _.label < t[1]) {
_.label = t[1];
t = op;
break;
}
if (t && _.label < t[2]) {
_.label = t[2];
_.ops.push(op);
break;
}
if (t[2]) _.ops.pop();
_.trys.pop();
continue;
}
op = body.call(thisArg, _);
} catch (e) {
op = [6, e];
y = 0;
} finally {
f = t = 0;
}
if (op[0] & 5) throw op[1];
return { value: op[0] ? op[1] : void 0, done: true };
}
};
var __spreadArray =
(this && this.__spreadArray) ||
function (to, from, pack) {
if (pack || arguments.length === 2)
for (var i = 0, l = from.length, ar; i < l; i++) {
if (ar || !(i in from)) {
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
ar[i] = from[i];
}
}
return to.concat(ar || Array.prototype.slice.call(from));
};
var __importDefault =
(this && this.__importDefault) ||
function (mod) {
return mod && mod.__esModule ? mod : { default: mod };
};
define(['require', 'exports', './snabbdom', './public/public', './panelConfig', './safeConfig', './noticeConfig'], function (
require,
exports,
snabbdom_1,
public_1,
panelConfig_1,
safeConfig_1,
noticeConfig_1
) {
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
exports.Config = void 0;
public_1 = __importDefault(public_1);
panelConfig_1 = __importDefault(panelConfig_1);
safeConfig_1 = __importDefault(safeConfig_1);
noticeConfig_1 = __importDefault(noticeConfig_1);
var panelConfig = new panelConfig_1.default();
var safeConfig = new safeConfig_1.default();
var noticeConfig = new noticeConfig_1.default();
var Config = (function (_super) {
__extends(Config, _super);
function Config() {
var _this = _super.call(this) || this;
_this.Info = {};
_this.configInfo = {};
_this.formInfo = {};
_this.alertListModule = {};
_this.panelSiteList = [];
_this.taskTypeList = [
{ title: 'Website certificate (SSL) expires', value: 'ssl', model: 'site_push' },
{ title: 'Website expiration', value: 'site_endtime', model: 'site_push' },
{ title: 'Panel password validity period', value: 'panel_pwd_endtime', model: 'site_push' },
{ title: 'Panel login alarm', value: 'panel_login', model: 'site_push' },
{ title: 'SSH login alarm', value: 'ssh_login', model: 'site_push' },
{ title: 'SSH login failure alarm', value: 'ssh_login_error', model: 'site_push' },
{ title: 'Panel security alarm', value: 'panel_safe_push', model: 'site_push' },
// { title: 'Panel update reminder', value: 'panel_update', model: 'site_push' },
];
_this.disabledOption = ['site_endtime', 'ssh_login', 'ssh_login_error', 'panel_login', 'panel_pwd_endtime', 'panel_safe_push', 'panel_update'];
_this.apiInfo = {
getConfig: ['config/get_config', lan.public.the],
getCheckTwoStep: ['config/check_two_step', lan.public.the],
getPasswordConfig: ['config/get_password_config', 'Getting the password complexity verification status, please wait...'],
getMenuList: ['config/get_menu_list', 'Getting panel menu bar, please wait...'],
getMessageChannel: ['config/get_msg_configs', 'Getting profile, please wait...'],
getLoginAlarm: ['config/get_login_send', 'Getting login information, please wait...'],
setMsgConfigmail: ['config/set_msg_config&name=mail', 'Setting recipient email'],
setPanelConfig: ['config/setPanel', lan.config.config_save],
};
_this.alertConfigForm = [
{
label: 'Task type',
group: {
type: 'select',
name: 'type',
width: '250px',
value: 'ssl',
class: 'projectBox',
list: _this.taskTypeList,
disabled: false,
change: function (formData, element, that) {
var config = _this.switchPushType(that.config.form, formData);
that.$again_render_form(config);
},
},
},
{
label: 'Website',
group: {
type: 'select',
name: 'site',
width: '250px',
value: '',
list: [],
},
},
{
label: 'Remaining days',
group: {
type: 'number',
name: 'cycle',
width: '70px',
unit: 'Day(s)',
value: 1,
},
},
{
label: 'Cycle',
hide: true,
group: [
{
type: 'number',
name: 'where1',
width: '70px',
value: 30,
unit: 'Minute(s) <div style="display: inline-block; color: #333; margin-left: 30px;">Frequency</div>',
input: function (data, b, c, d, e) {
var $input = $(e.currentTarget);
var num = $input.val();
if (num < 0) {
$input.val(0);
num = 0;
}
var text = ''.concat(num, ' minute').concat(num > 1 ? 's' : '');
$('.condition_tips').find('.minute').text(text);
},
},
{
type: 'number',
name: 'count',
width: '50px',
style: { 'vertical-align': 'initial', 'margin-left': '10px' },
value: 3,
unit: 'Time(s) ',
input: function (data, b, c, d, e) {
var $input = $(e.currentTarget);
var num = $input.val();
if (num < 0) {
$input.val(0);
num = 0;
}
var text = ''.concat(num, ' time').concat(num > 1 ? 's' : '');
$('.condition_tips').find('.time').text(text);
},
},
{
type: 'div',
dispaly: 'block',
class: 'condition_tips',
style: { 'margin-top': '10px', color: '#666' },
content: 'Login failed <span class="time">3 times</span> within <span class="minute">30 minutes</span>',
},
],
},
{
label: 'Interval',
group: {
type: 'number',
name: 'interval',
width: '70px',
value: 600,
unit: 'second(s)<div style="margin-top: 12px;">Monitor the trigger condition again after an interval of <span class="count">600 seconds</span></div>',
input: function (data, b, c, d, e) {
var $input = $(e.currentTarget);
var num = $input.val();
if (num < 0) {
$input.val(0);
num = 0;
}
var text = ''.concat(num, ' second').concat(num > 1 ? 's' : '');
$input.next().find('.count').text(text);
},
},
},
{
label: 'Send times',
group: {
type: 'number',
name: 'push_count',
width: '70px',
value: 1,
unit: 'Time(s)<div style="margin-top: 12px;">After sending <span class="count">1 time</span>, no more alarm messages will be sent, <br />if you want to send multiple times, please fill in more than 2 times.</div>',
input: function (data, b, c, d, e) {
var $input = $(e.currentTarget);
var num = $input.val();
if (num < 0) {
$input.val(0);
num = 0;
}
var text = ''.concat(num, ' time').concat(num > 1 ? 's' : '');
$input.next().find('.count').text(text);
},
},
},
{
label: 'Alarm mode',
group: [],
},
{
label: 'Alarm content',
hide: true,
group: {
type: 'help',
style: { 'margin-top': '6px' },
list: ['panel user change, panel log delete, panel open developer, panel open API'],
},
},
{
label: '',
group: {
type: 'button',
name: 'submitForm',
title: 'Add task',
event: function (formData, element, that) {
that.submit(formData);
},
},
},
];
_this.init();
return _this;
}
Config.prototype.init = function () {
return __awaiter(this, void 0, void 0, function () {
return __generator(this, function (_a) {
this.$apiInit(this.apiInfo);
this.render();
this.event();
return [2];
});
});
};
Config.prototype.render = function () {
var _this = this;
var loadT = this.$load(lan.public.the);
Promise.all([
this.$request('getConfig', false),
this.$request('getCheckTwoStep', { loading: false, msg: false }),
this.$request('getPasswordConfig', { loading: false, msg: false }),
this.$request('getUserInfo', { loading: false, msg: false }),
this.$request('getMessageChannel', { loading: false, msg: false }),
this.$request('getLoginAlarm', { loading: false, msg: false }),
this.$request('getMenuList', { loading: false, msg: false }),
])
.then(function (resArr) {
var configInfo = resArr[0],
twoStep = resArr[1],
pawComplexity = resArr[2],
bindUserInfo = resArr[3],
messageChannelInfo = resArr[4],
loginAlarmInfo = resArr[5],
menuList = resArr[6];
panelConfig.init({ configInfo: configInfo, menuList: menuList, bindUserInfo: bindUserInfo });
safeConfig.init({ configInfo: configInfo, twoStep: twoStep, pawComplexity: pawComplexity });
noticeConfig.init({ messageChannelInfo: messageChannelInfo, loginAlarmInfo: loginAlarmInfo });
})
.catch(function (err) {
console.log(err);
_this.$error(err.msg || 'Server Error');
})
.finally(function () {
loadT.close();
});
};
Config.prototype.event = function () {
var _this = this;
$('#configTab').on('click', '.tabs-item', function (ev) {
var el = $(ev.currentTarget);
var type = el.attr('data-type');
el.addClass('active').siblings().removeClass('active');
$('.configure-box .panel-config').addClass('hide');
if (type === 'allConfig') {
$('.configure-box .panel-config:not(.alert-view-box)').removeClass('hide');
} else {
if (type === 'alertConfig') _this.renderAlertView();
$('.configure-box .panel-config[data-type="' + type + '"]').removeClass('hide');
}
_this.$setCookie('config-tab', type);
});
this.cateClick();
$('input[type="text"]').on('input', function (ev) {
return __awaiter(_this, void 0, void 0, function () {
var el, value, oldValue;
return __generator(this, function (_a) {
el = $(ev.target);
value = el.val();
oldValue = el.attr('value');
value != oldValue ? el.parent().next().removeAttr('disabled') : el.parent().next().attr('disabled', 'disabled');
return [2];
});
});
});
$('.savePanelConfig').click(function () {
return __awaiter(_this, void 0, void 0, function () {
var data, res, href;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
data = this.getInputData();
return [4, this.$request('setPanelConfig', data)];
case 1:
res = _a.sent();
href = '';
if (data.domain) {
href = window.location.protocol + '//' + data.domain + ':' + window.location.port + window.location.pathname;
} else {
href = window.location.protocol + '//' + data.address + ':' + window.location.port + window.location.pathname;
}
res.status && this.$refreshBrowser();
return [2];
}
});
});
});
$('.setPanelPort').click(function () {
return _this.setPanelPortView();
});
$('#addAlertTask').on('click', '.alertInstall', function (ev) {
var _type = $(ev.currentTarget).parent('span').siblings('input').attr('name');
_this.setAlertConfigType(_type);
});
setTimeout(function () {
$.fn.serializeObject = function () {
var hasOwnProperty = Object.prototype.hasOwnProperty;
return this.serializeArray().reduce(function (data, pair) {
if (!hasOwnProperty.call(data, pair.name)) {
data[pair.name] = pair.value;
}
return data;
}, {});
};
}, 300);
panelConfig.event();
safeConfig.event();
noticeConfig.event();
};
Config.prototype.cateClick = function () {
var configTab = this.$getCookie('config-tab') || 'allConfig';
if (!isNaN(Number(configTab))) {
configTab = 'allConfig';
}
$('#configTab .tabs-item[data-type="' + configTab + '"]').trigger('click');
};
Config.prototype.setPanelPortView = function () {
var _this = this;
var $input = $('input[name="port"]');
var port = $input.val();
this.$open({
title: 'Change Panel Port',
area: ['380px', '380px'],
btn: ['Confirm', 'Cancel'],
content: {
data: { port: port, agreement: false },
template: function () {
return (0, snabbdom_1.jsx)(
'div',
{ class: this.$class('pd20 bt-form') },
this.$ul({ className: 'explainDescribeList', style: 'margin-top:0;' }, [
['1. Have a security group server, please release the new port in the security group in advance.', 'red'],
['2. If the panel is inaccessible after modifying the port, change the original port to the SSH command line by using the bt command.', 'red'],
]),
this.$line({ title: 'Port', width: '60px' }, this.$input({ model: 'port', width: '210px' })),
this.$learnMore({
title: (0, snabbdom_1.jsx)(
'span',
null,
'I already understand, ',
this.$link({ title: 'How to release the port?', href: 'https://www.yakpanel.com/forum/d/599-how-to-release-the-yakpanel-port' })
),
model: 'agreement',
id: 'checkPanelPort',
})
);
},
},
yes: function (content) {
return __awaiter(_this, void 0, void 0, function () {
var close, vm, port, data, rdata;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
(close = content.close), (vm = content.vm), (port = parseInt(vm.port));
if (!vm.agreement) return [2, this.$tips({ el: '#checkPanelPort', msg: 'Please tick the one I already know' })];
return [4, this.$verifySubmit(!this.$checkPort(port), 'Please enter correct panel port!')];
case 1:
_a.sent();
data = this.getInputData();
data.port = port;
return [4, this.$request('setPanelConfig', data)];
case 2:
rdata = _a.sent();
if (rdata.status) {
close();
this.$refreshBrowser(''.concat(location.protocol, '//').concat(location.hostname, ':').concat(port).concat(location.pathname));
}
return [2];
}
});
});
},
}).catch(function (err) {});
};
Config.prototype.getInputData = function () {
var data = {};
$('.savePanelConfig').each(function (index, item) {
var $input = $(item).parents('.line').find('input[type="text"]');
var key = $input.attr('name');
var value = $input.val();
data[key] = value;
});
return data;
};
Config.renderFormColumn = function (configInfo) {
for (var key in configInfo) {
if (Object.prototype.hasOwnProperty.call(configInfo, key)) {
var value = configInfo[key].value;
var el = $('input[name="' + key + '"]');
var type = el.attr('type');
if (type === 'checkbox') {
el.prop('checked', value);
} else {
el.val(value);
}
}
}
};
Config.prototype.renderAlertView = function () {
return __awaiter(this, void 0, void 0, function () {
var _this = this;
return __generator(this, function (_a) {
this.alertTaskList();
$('.alert-view-box')
.unbind('click')
.on('click', '.tab-nav-border span', function (ev) {
var el = $(ev.currentTarget),
index = $(el).index();
$(el).addClass('on').siblings().removeClass('on');
$(el).parent().next().find('.tab-block').eq(index).addClass('on').siblings().removeClass('on');
switch (index) {
case 0:
_this.alertTaskList();
break;
case 1:
_this.alertConfigTable();
break;
case 2:
_this.alertLogsTable();
break;
}
});
return [2];
});
});
};
Config.prototype.alertTaskList = function () {
return __awaiter(this, void 0, void 0, function () {
var ChannelMessage, resetChannelMessage, prevArray, _a;
return __generator(this, function (_b) {
switch (_b.label) {
case 0:
return [4, this.$request('getMessageChannel', { loading: false, msg: false })];
case 1:
ChannelMessage = _b.sent();
resetChannelMessage = [];
prevArray = [];
Object.getOwnPropertyNames(ChannelMessage).forEach(function (key) {
var mod = ChannelMessage[key];
key == 'wx_account' ? prevArray.push(mod) : resetChannelMessage.push(mod);
});
this.alertListModule = __spreadArray(__spreadArray([], prevArray, true), resetChannelMessage, true);
_a = this;
return [4, this.$request(['crontab/GetDataList'], { type: 'sites' })];
case 2:
_a.panelSiteList = _b.sent();
return [4, this.addAlertTask()];
case 3:
_b.sent();
this.renderAlarmList();
return [2];
}
});
});
};
Config.prototype.addAlertTask = function () {
return __awaiter(this, void 0, void 0, function () {
var _config;
var _this = this;
return __generator(this, function (_a) {
_config = this.switchPushType(__spreadArray([], this.alertConfigForm, true));
bt_tools.form({
el: '#addAlertTask',
form: _config,
submit: function (formData) {
_this.setAlertConfigTask(formData);
},
});
return [2];
});
});
};
Config.prototype.renderAlarmList = function () {
var _this = this;
$('#alertList').empty();
var alertListTabel = bt_tools.table({
el: '#alertList',
url: '/push?action=get_push_list',
default: 'The alarm list is empty',
autoHeight: true,
height: 320,
dataFilter: function (res) {
$.each(res.site_push, function (index, item) {
item['id'] = index;
});
var data = Object.values(res.site_push || []);
return { data: data };
},
column: [
{
type: 'checkbox',
width: 20,
},
{
fid: 'title',
title: 'Title',
type: 'text',
template: function (row) {
var _title = '';
switch (row.type) {
case 'ssl':
_title = '['.concat(row.project == 'all' ? 'All' : row.project, ']').concat(row.title);
break;
default:
_title = row.title;
break;
}
return '<span>'.concat(_title, '</span>');
},
},
{
fid: 'status',
title: 'Status',
config: {
icon: true,
list: [
[true, 'Normal', 'bt_success', 'glyphicon-play'],
[false, 'Suspend', 'bt_danger', 'glyphicon-pause'],
],
},
type: 'status',
event: function (row) {
return __awaiter(_this, void 0, void 0, function () {
var param, eData, rdata;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
if (row.type == 'ssh_login') return [2, layer.msg('Do not support suspend SSH login alarm, if you want to stop it, please delete it directly.', { icon: 0 })];
(param = {}), (eData = $.extend(true, row, { status: row.status ? false : true }));
param['name'] = row.module_type;
param['id'] = row.id;
param['data'] = JSON.stringify(eData);
return [4, this.$request(['push/set_push_config', 'Setting alarm tasks'], param)];
case 1:
rdata = _a.sent();
if (!rdata.status) return [3, 3];
return [4, this.alertTaskList()];
case 2:
_a.sent();
_a.label = 3;
case 3:
return [2];
}
});
});
},
},
{
title: 'Alarm mode',
type: 'text',
width: 265,
template: function (row) {
var alertMode = row.module.split(','),
_mode = '';
_this.alertListModule.forEach(function (mod) {
if ($.inArray(mod.name, alertMode) >= 0) _mode += mod.title + ',';
});
_mode = _mode.substring(0, _mode.length - 1);
return '<span>' + _mode + '</span>';
},
},
{
fid: 'cycle',
title: 'Alarm condition',
template: function (row) {
switch (row.type) {
case 'ssl':
case 'site_endtime':
case 'panel_pwd_endtime':
return '<span>Less than '
.concat(row.cycle, ' days remaining ')
.concat(typeof row.push_count != 'undefined' ? '(If not processed, it will be resent 1 time the next day for ' + row.push_count + ' days)' : '', '</span>');
case 'ssh_login_error':
return '<span>Triggered by '
.concat(row.count, ' consecutive failed login attempts within ')
.concat(row.cycle, ' minutes, to be detected again after every ')
.concat(row.interval, ' seconds</span>');
case 'panel_update':
return '<span>Send a notification when a new version is detected</span>';
default:
return '--';
}
},
},
{
title: lan.public.operate,
type: 'group',
width: 150,
align: 'right',
group: [
{
title: lan.public.edit,
event: function (row) {
_this.setAlertTaskConfig(row);
},
},
{
title: lan.public.del,
event: function (row) {
return __awaiter(_this, void 0, void 0, function () {
var rdata;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
return [
4,
this.$confirm({
title: 'Delete Alarm Tasks',
msg: 'Delete will no longer alert this task, do you want to continue?',
}),
];
case 1:
_a.sent();
return [4, this.$request(['push/del_push_config', 'Deleting the alarm task'], { name: row.module_type, id: row.id })];
case 2:
rdata = _a.sent();
if (!rdata.status) return [3, 4];
return [4, this.alertTaskList()];
case 3:
_a.sent();
_a.label = 4;
case 4:
return [2];
}
});
});
},
},
],
},
],
tootls: [
{
type: 'batch',
positon: ['left', 'bottom'],
config: {
title: ' Delete',
url: 'push?action=del_push_config',
load: true,
param: function (row) {
return { name: row.module_type, id: row.id };
},
callback: function (that) {
bt.confirm({ title: 'Batch Delete Tasks', msg: 'The batch deletion will not be recovered, does it continue?', icon: 0 }, function (index) {
layer.close(index);
that.start_batch({}, function (list) {
var html = '';
for (var i = 0; i < list.length; i++) {
var item = list[i];
html +=
'<tr><td>' +
(typeof item.project == 'undefined' ? item.title : (item.project == 'all' ? 'All' : item.project) + item.title) +
'</td><td><div style="float:right;"><span style="color:' +
(item.request.status ? '#20a53a' : 'red') +
'">' +
item.request.msg +
'</span></div></td></tr>';
}
alertListTabel.$batch_success_table({ title: 'Batch Delete Tasks', th: 'Task title', html: html });
alertListTabel.$refresh_table_list(true);
});
});
},
},
},
],
});
};
Config.prototype.setAlertTaskConfig = function (row) {
return __awaiter(this, void 0, void 0, function () {
var _config;
var _this = this;
return __generator(this, function (_a) {
_config = this.switchPushType($.extend(true, {}, this.alertConfigForm), row);
_config[0].group.disabled = true;
_config[0].group.unit = '';
_config[8].hide = true;
if (row.type == 'ssh_login_error') {
row.where1 = row.cycle;
}
bt_tools.open({
type: 1,
title: 'Edit Alert Tasks',
area: '540px',
skin: 'panel_alert_task_view',
btn: [lan.public.save, lan.public.cancel],
content: {
class: 'pd15',
data: row,
form: _config,
},
success: function (layers) {
$(layers)
.find('.layui-layer-content')
.css('overflow', window.innerHeight > $(layers).height() ? 'inherit' : 'auto');
$('.alertInstall').click(function (ev) {
var _type = $(ev.currentTarget).parent('span').siblings('input').attr('name');
_this.setAlertConfigType(_type);
});
},
yes: function (formData, index) {
_this.setAlertConfigTask($.extend(true, {}, row, formData), index);
},
});
return [2];
});
});
};
Config.prototype.setAlertConfigTask = function (row, close) {
if (close === void 0) {
close = null;
}
return __awaiter(this, void 0, void 0, function () {
var _configD, eData, pushType, otherType, isCheck, rdata;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
(_configD = {}),
(eData = {}),
(pushType = this.taskTypeList.find(function (el) {
return el.value == row.type;
})),
(otherType = this.disabledOption);
_configD['name'] = typeof row.module_type !== 'undefined' ? row.module_type : pushType.model;
_configD['id'] = row.id ? row.id : $.inArray(row.type, otherType) >= 0 ? row.type : new Date().getTime();
eData['interval'] = 600;
switch (row.type) {
case 'ssl':
case 'site_endtime':
case 'panel_pwd_endtime':
if (row.type == 'ssl') eData['project'] = row.site || 'all';
if (row.cycle == '' || row.cycle < 0) return [2, this.$msg({ icon: 2, msg: 'Remaining days cannot be less than 1', time: 0, closeBtn: 2 })];
eData['cycle'] = Number(row.cycle);
eData['push_count'] = Number(row.push_count);
break;
case 'ssh_login_error':
if (row.where1 == '' || row.where1 <= 0) return [2, this.$msg({ icon: 2, msg: 'Trigger time cannot be less than 1', time: 0, closeBtn: 2 })];
if (row.count == '' || row.count <= 0) return [2, this.$msg({ icon: 2, msg: 'Trigger times cannot be less than 1', time: 0, closeBtn: 2 })];
if (row.interval == '' || row.interval <= 0) return [2, this.$msg({ icon: 2, msg: 'Interval cannot be less than 1', time: 0, closeBtn: 2 })];
eData['cycle'] = Number(row.where1);
eData['count'] = Number(row.count);
eData['interval'] = Number(row.interval);
break;
}
isCheck = [];
$((row.id ? '.panel_alert_task_view ' : '#addAlertTask ') + '.module-check')
.not('.check_disabled')
.each(function () {
if ($(this).find('input').prop('checked')) {
isCheck.push($(this).find('input').prop('name'));
}
});
eData['type'] = row.type;
eData['module'] = isCheck.join();
if (typeof eData['push_count'] != 'undefined' && (eData['push_count'] <= 0 || eData['push_count'] == '')) {
this.$msg({ icon: 2, msg: 'The number of sending cannot be less than 1', time: 0, closeBtn: 2 });
return [2, false];
}
if (!eData['module']) {
this.$msg({ icon: 2, msg: 'Please select an alarm mode', time: 0, closeBtn: 2 });
return [2, false];
}
eData['status'] = typeof row.status !== 'undefined' ? row.status : true;
eData['title'] = $((row.id ? '.panel_alert_task_view ' : '#addAlertTask ') + '.projectBox .bt_select_content').html();
_configD['data'] = JSON.stringify(eData);
return [4, this.$request(['push/set_push_config', 'Setting alarm task, Please wait...'], _configD)];
case 1:
rdata = _a.sent();
if (!rdata.status) return [3, 3];
layer.close(close);
return [4, this.alertTaskList()];
case 2:
_a.sent();
_a.label = 3;
case 3:
return [2];
}
});
});
};
Config.prototype.switchPushType = function (config, formData) {
if (formData === void 0) {
formData = {};
}
var _checklist = [],
isCheckType = [],
siteList = [{ title: 'All Website', value: 'all' }],
accountConfigStatus = false;
if (!formData.type) {
formData.type = 'ssl';
config[1].group.value = 'all';
}
this.panelSiteList['data'].forEach(function (key) {
siteList.push({ title: key.name, value: key.name });
});
this.alertListModule.forEach(function (mod, i) {
if (formData.type != 'ssl' && mod.name == 'sms') return;
if (formData.module) {
isCheckType = formData.module.split(',');
}
if (mod.name === 'wx_account') {
if (!$.isEmptyObject(mod.data) && mod.data.res.is_subscribe && mod.data.res.is_bound) {
accountConfigStatus = true;
}
}
_checklist.push({
type: 'checkbox',
name: mod.name,
class: 'module-check ' + (!mod.setup || $.isEmptyObject(mod.data) ? 'check_disabled' : mod.name == 'wx_account' && !accountConfigStatus ? 'check_disabled' : '') + '',
style: { 'margin-right': '10px' },
disabled: !mod.setup || $.isEmptyObject(mod.data) ? true : mod.name == 'wx_account' && !accountConfigStatus ? true : false,
value: $.inArray(mod.name, isCheckType) >= 0 ? 1 : 0,
title:
(mod.name == 'wx_account' ? '<b style="color: #fc6d26;"> [Recommend]</b>' : '') +
mod.title +
(!mod.setup || $.isEmptyObject(mod.data)
? '<span style="color:red;cursor: pointer;" class="alertInstall"> [Install]</span>'
: mod.name == 'wx_account' && !accountConfigStatus
? ' [<a target="_blank" class="bterror alertInstall">Not set</a>]'
: ''),
event: function (formData, element, thatE) {
thatE.config.form[6].group[i].value = !formData[mod.name] ? 0 : 1;
},
});
});
if (!formData.id) {
var checkActive = _checklist.findIndex(function (ev) {
return !ev.disabled;
});
if (checkActive >= 0) _checklist[checkActive].value = 1;
} else {
if (formData.type == 'ssl') config[1].group.value = formData.project;
}
config[1].hide = true;
config[3].hide = true;
config[4].hide = true;
config[5].hide = false;
delete config[0].group.unit;
switch (formData.type) {
case 'ssl':
config[1].hide = false;
config[2].hide = false;
config[2].group.value = 15;
break;
case 'site_endtime':
config[2].hide = false;
config[2].group.value = 7;
break;
case 'panel_pwd_endtime':
config[2].hide = false;
config[2].group.value = 15;
break;
case 'panel_login':
case 'ssh_login':
case 'panel_safe_push':
case 'panel_update':
config[2].hide = true;
config[5].hide = true;
if (formData.type == 'panel_update') {
config[0].group.unit = '* Send a notification when a new version is detected';
}
break;
case 'ssh_login_error':
config[2].hide = true;
config[3].hide = false;
config[4].hide = false;
config[5].hide = true;
break;
}
config[7].hide = formData.type === 'panel_safe_push' ? false : true;
config[0].group.value = formData.type;
config[1].group.list = siteList;
config[6].group = _checklist;
return config;
};
Config.prototype.setAlertConfigType = function (type) {
return __awaiter(this, void 0, void 0, function () {
var _configData;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
return [4, this.$request('getMessageChannel', { loading: false, msg: false })];
case 1:
_configData = _a.sent();
switch (type) {
case 'mail':
renderMailConfigView(_configData[type]);
break;
case 'dingding':
case 'feishu':
case 'weixin':
renderAlertUrlTypeChannelView(_configData[type]);
break;
case 'tg':
renderTelegramConfigView(_configData[type]);
break;
}
return [2];
}
});
});
};
Config.prototype.alertConfigTable = function () {
return __awaiter(this, void 0, void 0, function () {
var ChannelInfo, html, tbody, prevHTML;
var _this = this;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
return [4, this.$request('getMessageChannel', { loading: false, msg: false })];
case 1:
ChannelInfo = _a.sent();
(html = ''), (tbody = ''), (prevHTML = '');
$('#alertConfig').empty();
Object.getOwnPropertyNames(ChannelInfo).forEach(function (key) {
var item = ChannelInfo[key],
btnGroup = '';
if (item.setup) {
if (item.name != 'sms') {
if (!$.isEmptyObject(item.data)) {
if (item.name == 'mail') btnGroup += '<a class="btlink receiveMail">Recipient</a>&nbsp;|&nbsp;';
btnGroup +=
'<a class="btlink configEdit">' +
lan.public.edit +
'</a>&nbsp;|&nbsp;<a class="btlink alertTest">Test</a>&nbsp;|&nbsp;<a class="btlink uninstall_alert">' +
lan.public.del +
'</a>';
if (item.name == 'wx_account')
btnGroup = '<a class="btlink replaceWx">Bind</a>&nbsp;|&nbsp;<a class="btlink alertTest">Test</a>&nbsp;|&nbsp;<a class="btlink uninstall_alert">' + lan.public.del + '</a>';
} else {
btnGroup = '<a class="btlink configEdit">' + lan.public.set + '</a>';
}
} else {
btnGroup = '<a class="btlink uninstall_alert">' + lan.public.del + '</a>';
}
} else {
btnGroup = '<a class="btlink configEdit">' + lan.public.set + '</a>';
}
var renderHTML = '<tr data-name="'
.concat(item.name, '">\n\t\t\t\t<td style="font-size: 0;">\n\t\t\t\t\t<i class="config-alert-icon alert-icon-')
.concat(item.name, '"></i>\n\t\t\t\t\t<div class="alert-config-content">\n\t\t\t\t\t\t<span style="cursor:pointer" class="')
.concat(item.name === 'wx_account' ? (item.setup ? 'replaceWx' : 'configEdit') : item.name === 'sms' ? '' : 'configEdit', '">')
.concat(item.title, '</span>\n\t\t\t\t\t\t<p>')
.concat(item.ps, '<a class="btlink" target="_blank" href="')
.concat(item.help, '">>>')
.concat(lan.public.help, '</a></p>\n\t\t\t\t\t</div>\n\t\t\t\t</td>\n\t\t\t\t<td>')
.concat(_this.renderAlertModelConfigInfo(item), '</td>\n\t\t\t\t<td>')
.concat(item.version, '</td>\n\t\t\t\t<td style="text-align: right;">')
.concat(btnGroup, '</td>\n\t\t\t</tr>');
item.name === 'wx_account' ? (prevHTML = renderHTML) : (tbody += renderHTML);
});
html =
'<div class="divtable">\n\t\t\t\t\t\t\t<table class="table table-hover" id="panel_menu_tab">\n\t\t\t\t\t\t\t\t<thead>\n\t\t\t\t\t\t\t\t\t<tr><th width="440">Alarm module</th><th>Configuration</th><th width="70">Version</th><th style="text-align: right;">'
.concat(lan.public.operate, '</th></tr>\n\t\t\t\t\t\t\t\t</thead>\n\t\t\t\t\t\t\t\t<tbody>')
.concat(prevHTML + tbody, '</tbody>\n\t\t\t\t\t\t\t</table>\n\t\t\t\t\t\t</div>');
$('#alertConfig').html(html);
this.alertEventBind(ChannelInfo);
return [2];
}
});
});
};
Config.prototype.renderAlertModelConfigInfo = function (mode) {
var _info = '',
noConfig = '<a class="bterror configEdit">Unconfigured</a>',
_data = mode.data,
isEmpty = $.isEmptyObject(_data);
if (mode.setup) {
if (mode.name != 'sms' && mode.name != 'wx_account') {
if (!$.isEmptyObject(_data)) {
switch (mode.name) {
case 'mail':
if (_data.receive[0] == '') {
_info = '<a class="bterror receiveMail">No incoming email set</a>';
} else {
_info = ''.concat(_data.receive.length, ' incoming email has been set up, <a class="btlink receiveMail">Click to view</a>');
}
break;
case 'dingding':
case 'feishu':
case 'weixin':
_info = 'Receiver: ['.concat(isEmpty ? '' : _data.list.default.title, ']');
break;
case 'tg':
_info = 'Receiver: ['.concat(isEmpty ? '' : _data.my_id, ']');
break;
}
} else {
_info = noConfig;
}
} else if (mode.name == 'sms') {
_info = '\u5269\u4F59\u53D1\u9001\u544A\u8B66'.concat(_data.count, '\u6B21');
} else if (mode.name == 'wx_account') {
var boundCheck = '',
res = $.isEmptyObject(_data) ? { is_subscribe: 0, is_bound: 0 } : _data.res;
if (!res.is_subscribe || !res.is_bound) boundCheck = '<a class="bterror replaceWx" style="margin-left:0">未订阅公众号或绑定微信</a>';
if (res.is_subscribe && res.is_bound) boundCheck = '\u5FAE\u4FE1\u8D26\u53F7\u3010'.concat(res.nickname, '\u3011,\u4ECA\u65E5\u5269\u4F59\u53D1\u9001\u6B21\u6570:').concat(res.remaining);
_info = boundCheck;
}
} else {
_info = noConfig;
}
return _info;
};
Config.prototype.alertEventBind = function (info) {
var _this = this;
$('.receiveMail').click(function () {
return __awaiter(_this, void 0, void 0, function () {
var currentItem;
var _this = this;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
return [4, this.$request('getMessageChannel', { loading: false, msg: false })];
case 1:
currentItem = _a.sent();
this.$open({
title: 'Recipient Email',
area: ['335px', '280px'],
btn: [lan.public.save, lan.public.cancel],
skin: 'alert-receive-view',
content:
'<div class="pd15"><textarea name="recipient_textarea" class="bt-input-text mr5" type="text" style="width: 300px; height:150px; line-height:20px"></textarea>\n\t\t\t\t<div class="placeholder c9 reci_tips" style="position: absolute;top: 25px;left: 25px; display:none">Fill in one mailbox per line, e: <br>xxx@163.com<br>xxx@qq.com</div></div>',
success: function () {
var _tips = $('textarea[name=recipient_textarea]');
var msg = '';
if (!$.isEmptyObject(currentItem['mail']['data']['receive'])) {
msg = currentItem['mail']['data']['receive'] ? currentItem['mail']['data']['receive'].join('\n') : '';
}
_tips.html(msg);
if (_tips.val() == '') $('.reci_tips.placeholder').show();
$('.placeholder').click(function () {
$(this).hide().siblings('textarea').focus();
});
_tips.focus(function () {
$('.reci_tips.placeholder').hide();
});
_tips.blur(function () {
_tips.val() == '' ? $('.reci_tips.placeholder').show() : $('.reci_tips.placeholder').hide();
});
},
yes: function (config) {
return __awaiter(_this, void 0, void 0, function () {
var close, reci_, rdata;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
close = config.close;
reci_ = $('textarea[name=recipient_textarea]').val();
return [4, this.$request('setMsgConfigmail', { mails: reci_ })];
case 1:
rdata = _a.sent();
rdata.status && close();
return [2];
}
});
});
},
});
return [2];
}
});
});
});
$('.configEdit').click(function (ev) {
return __awaiter(_this, void 0, void 0, function () {
var _type;
return __generator(this, function (_a) {
_type = $(ev.currentTarget).parents('tr').data('name');
this.setAlertConfigType(_type);
return [2];
});
});
});
$('.alertTest').click(function (ev) {
return __awaiter(_this, void 0, void 0, function () {
var _type;
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
_type = $(ev.currentTarget).parents('tr').data('name');
return [4, this.$request(['config/get_msg_fun', 'Testing Send, Please wait...'], { fun_name: 'push_data', module_name: _type, msg: 'Testing Send' })];
case 1:
_a.sent();
return [2];
}
});
});
});
$('.replaceWx').click(function () {
_this.setAlertConfigType('wx_account');
});
$('.uninstall_alert').click(function (ev) {
return __awaiter(_this, void 0, void 0, function () {
var _type, rdata, _a;
return __generator(this, function (_b) {
switch (_b.label) {
case 0:
_type = $(ev.currentTarget).parents('tr').data('name');
return [
4,
this.$confirm({
title: 'Delete ' + info[_type].title + ' module',
msg: 'After deleting the ' + info[_type].title + ' module, it will not be able to send panel alert messages, should I continue?',
}),
];
case 1:
_b.sent();
return [4, this.$request(['config/uninstall_msg_module&name=' + _type, 'Delete ' + info[_type].title + ' alert module'])];
case 2:
rdata = _b.sent();
_a = rdata.status;
if (!_a) return [3, 4];
return [4, this.alertConfigTable()];
case 3:
_a = _b.sent();
_b.label = 4;
case 4:
_a;
return [2];
}
});
});
});
};
Config.prototype.alertLogsTable = function () {
return __awaiter(this, void 0, void 0, function () {
return __generator(this, function (_a) {
$('#alertLog').empty();
bt_tools.table({
el: '#alertLog',
load: 'Getting the alarm log list',
url: '/push?action=get_push_logs',
default: 'The alarm log is empty',
dataFilter: function (res) {
return { data: res.data };
},
column: [
{
fid: 'log',
title: 'Title',
type: 'text',
},
{
fid: 'addtime',
title: 'Time',
type: 'text',
},
],
tootls: [
{
type: 'page',
positon: ['right', 'bottom'],
pageParam: 'p',
page: 1,
numberParam: 'limit',
number: 20,
numberList: [10, 20, 50, 100, 200],
numberStatus: true,
jump: true,
},
],
});
return [2];
});
});
};
return Config;
})(public_1.default);
exports.Config = Config;
});