// ////////////////////////////////////////////////////////////////////////////////////////
// //Document Ready
// ////////////////////////////////////////////////////////////////////////////////////////
function execDocReady() {
var pluginGroups = [
[
"../reference/lightblue4/docs/lib/slimScroll/jquery.slimscroll.min.js",
"../reference/jquery-plugins/multiple-select-1.5.2/dist/multiple-select-bluelight.css",
"../reference/jquery-plugins/multiple-select-1.5.2/dist/multiple-select.min.js"
],
[
"../reference/lightblue4/docs/lib/widgster/widgster.js",
"../reference/lightblue4/docs/lib/parsleyjs/dist/parsley.min.js",
"../reference/lightblue4/docs/lib/parsleyjs/dist/i18n/ko.js"
],
[
"../reference/jquery-plugins/dataTables-1.10.16/media/css/jquery.dataTables_lightblue4.css",
"../reference/jquery-plugins/dataTables-1.10.16/extensions/Responsive/css/responsive.dataTables_lightblue4.css",
"../reference/jquery-plugins/dataTables-1.10.16/extensions/Select/css/select.dataTables_lightblue4.css",
"../reference/jquery-plugins/dataTables-1.10.16/media/js/jquery.dataTables.min.js",
"../reference/jquery-plugins/dataTables-1.10.16/extensions/Responsive/js/dataTables.responsive.min.js",
"../reference/jquery-plugins/dataTables-1.10.16/extensions/Select/js/dataTables.select.min.js",
"../reference/jquery-plugins/dataTables-1.10.16/extensions/RowGroup/js/dataTables.rowsGroup.min.js",
"../reference/jquery-plugins/dataTables-1.10.16/extensions/Buttons/js/dataTables.buttons.min.js",
"../reference/jquery-plugins/dataTables-1.10.16/extensions/Buttons/js/buttons.html5.js",
"../reference/jquery-plugins/dataTables-1.10.16/extensions/Buttons/js/buttons.print.js",
"../reference/jquery-plugins/dataTables-1.10.16/extensions/Buttons/js/jszip.min.js",
"../reference/jquery-plugins/dataTables-1.10.16/extensions/Buttons/js/pdfmake.min.js",
"../reference/jquery-plugins/dataTables-1.10.16/extensions/Buttons/js/vfs_fonts.js"
],
["../arms/js/common/table_new.js"]
];
loadPluginGroupsParallelAndSequential(pluginGroups)
.then(function () {
console.log("모든 플러그인 로드 완료");
//좌측 메뉴
setSideMenu("sidebar_menu_security", "sidebar_menu_security_smtp");
$(".widget").widgster();
$("#mail_history_table").trigger($.Event("init.mail_history"));
var accessTokenString;
(function getAccessToken() {
$.ajax({
url: "/auth-admin/token",
success: function (token) {
accessTokenString = token.accessTokenString;
},
error: function (e) {
console.error("Error:", e);
}
});
})();
var smtpProvider = {
gmail: { server: "smtp.gmail.com", port: "587" },
office365: { server: "smtp.office365.com", port: "587" },
naver: { server: "smtp.naver.com", port: "465" },
daum: { server: "smtp.daum.net", port: "465" }
};
$("#smtpProvider").multipleSelect({
onClick: function (view) {
var selectedProvider = smtpProvider[view.value];
if (!smtpProvider.hasOwnProperty(view.value)) {
selectedProvider = {};
}
$("#host").val(selectedProvider.server);
$("#port").val(selectedProvider.port);
}
});
$("#btn_sync_mail_info").on("click", function () {
$.ajax({
url: "/auth-user/api/arms/report/mail-sender/getNodesWithoutRoot.do",
type: "GET",
contentType: "application/json",
success: function (data) {
console.log("[ mail report :: get sender info ] :: ->", data.result);
if (data.result.length <= 0) {
jError("등록된 메일 정보가 없습니다.");
}
},
error: function (e) {
console.error("Error:", e);
jError("발신 메일 정보 조회 오류 발생.");
}
});
});
var realmInfo;
(function getSMTPConfig() {
$.ajax({
url: "/auth-admin/realms/master",
type: "GET",
success: function (data) {
realmInfo = data;
var serverConfig = data.smtpServer;
var serverConfigField = Object.keys(serverConfig);
if (serverConfigField.length > 0) {
var $smtpForm = $("#smtp_form");
serverConfigField.forEach(function (field) {
$smtpForm.find("[name='" + field + "']").val(serverConfig[field]);
});
}
jSuccess("메일 정보 조회에 성공했습니다.");
},
error: function (e) {
console.error("Error:", e);
jError("메일 정보 조회에 실패했습니다.");
}
});
})();
$("#btn_test_connection").on("click", function () {
var smtpConfig = Object.fromEntries(new FormData(document.getElementById("smtp_form")));
smtpConfig.port = parseInt(smtpConfig.port || 25);
smtpConfig.from = smtpConfig.user;
smtpConfig.ssl = true;
smtpConfig.starttls = false;
smtpConfig.auth = true;
$.ajax({
url: "/auth-admin/realms/master",
type: "POST",
contentType: "application/json;charset=utf-8",
data: JSON.stringify({ smtpServer: smtpConfig }),
success: function () {
jSuccess("메일 연동에 성공했습니다.");
},
error: function (e) {
console.error("Error:", e);
jError("메일 연동 실패, 입력하신 정보를 확인해주세요.");
}
});
});
$("#smtp_form").on("submit", function (event) {
var smtpConfig = Object.fromEntries(new FormData(event.target));
smtpConfig.port = smtpConfig.port || "25";
smtpConfig.from = smtpConfig.user;
smtpConfig.ssl = true;
smtpConfig.starttls = false;
smtpConfig.auth = true;
var request = $.extend(true, {}, realmInfo, { smtpServer: smtpConfig });
delete request.defaultSignatureAlgorithm;
delete request.oauth2DeviceCodeLifespan;
delete request.oauth2DevicePollingInterval;
delete request.passwordCredentialGrantAllowed;
delete request.privateKey;
delete request.publicKey;
delete request.certificate;
delete request.codeSecret;
delete request.roles;
delete request.groups;
delete request.defaultRole;
delete request.defaultGroups;
delete request.passwordPolicy;
delete request.users;
delete request.federatedUsers;
delete request.scopeMappings;
delete request.clientScopeMappings;
delete request.clients;
delete request.clientScopes;
delete request.defaultDefaultClientScopes;
delete request.defaultOptionalClientScopes;
delete request.userFederationProviders;
delete request.userFederationMappers;
delete request.eventsExpiration;
delete request.protocolMappers;
delete request.components;
delete request.defaultLocale;
delete request.authenticationFlows;
delete request.authenticatorConfig;
delete request.requiredActions;
delete request.keycloakVersion;
delete request.social;
delete request.updateProfileOnInitialSocialLogin;
delete request.socialProviders;
delete request.applicationScopeMappings;
delete request.applications;
delete request.oauthClients;
delete request.clientTemplates;
delete request.clientProfiles;
delete request.clientPolicies;
delete request.webAuthnPolicyAttestationConveyancePreference;
delete request.webAuthnPolicyAuthenticatorAttachment;
delete request.webAuthnPolicyRequireResidentKey;
delete request.webAuthnPolicyUserVerificationRequirement;
$.ajax({
url: "/auth-admin/realms/smtp/master",
type: "POST",
dataType: "json",
contentType: "application/json;charset=utf-8",
data: JSON.stringify(request),
success: function () {
jSuccess("메일 정보 저장에 성공했습니다.");
},
error: function (e) {
console.error("Error:", e);
jError("메일 정보 저장 실패, 입력하신 정보를 확인해주세요.");
}
});
return false;
});
})
.catch(function (e) {
console.error("플러그인 로드 중 오류 발생");
console.error(e);
});
}
+(function ($) {
"use strict";
var columnList = [
{
name: "sender",
title: "발신자",
data: "sender",
render: function (data) {
return ![null, undefined, ""].includes(data)
? "" + data + ""
: "N/A";
}
},
{
name: "receiver",
title: "수신자",
data: "receiver",
render: function (data) {
return ![null, undefined, ""].includes(data)
? "" + data + ""
: "N/A";
}
},
{
name: "subject",
title: "제목",
data: "subject",
render: function (data) {
return ![null, undefined, ""].includes(data)
? "" + data + ""
: "N/A";
}
},
{
name: "send_date",
title: "발송일시",
data: "send_date",
render: function (data) {
return ![null, undefined, ""].includes(data)
? "" + data + ""
: "N/A";
}
},
{
name: "send_date",
title: "성공여부",
data: "send_date",
render: function (data) {
return ![null, undefined, ""].includes(data)
? "" + data + ""
: "N/A";
}
}
];
$(document).on("init.mail_history", function (event) {
$(event.target).table({
columns: columnList,
data: [],
dom: "Blfrtip",
buttons: [
{
extend: "excel",
charset: "UTF-8",
bom: true,
className: "btn btn-default btn-sm margin-bottom"
}
],
drawCallback: function () {
$("[data-mh='mail_setting']").matchHeight();
}
});
});
})(jQuery);