{"version":3,"sources":["components/dashboardSub/MonthBillGraphBar.jsx","components/img/menu/loading.gif","components/dataState/LoadingSpninner.js","components/css/securityevent.module.css","components/dashboardSub/MonthBill.jsx","redux/menu/MenuType.js","redux/menu/ActionMenu.js","components/Aside.js","utils/userManager.js","userConfig.js","components/useDetectOutsideClick.js","redux/monitoring/ReducerMonitoring.js","redux/monitoring/ReducerMonitoringModal.js","redux/monitoring/ReducerMontiroingIssue.js","redux/monitoring/ReducerMonitoringModalIssue.js","redux/monitoring/ReducerMonitoringPannel.js","redux/monitoringSetting/ReducerMonitoringSetting.js","redux/board/boardType.js","redux/board/ReducerBoard.js","redux/datepicker/ActionDatepicker.js","redux/datepicker/ReducerDatepicker.js","redux/chart/ActionChart.js","redux/chart/ReducerChart.js","redux/nameserver/ActionRecord.js","redux/nameserver/ActionNameServer.js","redux/nameserver/ReducerNameServer.js","redux/nameserver/ActionRecordSetting.js","redux/nameserver/ReducerRecordSetting.js","redux/supportcenter/SupportType.js","redux/supportcenter/ReducerSupportCenter.js","redux/supportcenter/ReducerInquiryList.js","redux/monitoring/ReducerMonitoringModalData.js","redux/monitoringSetting/ActionModalState.js","redux/monitoringSetting/ReducerModalState.js","redux/monitoringSetting/ReducerTag.js","redux/monitoringSetting/ReducerScan.js","redux/monitoringSetting/ActionRegister.js","redux/monitoringSetting/ReducerRegister.js","redux/monitoringSetting/ActionDelete.js","redux/monitoringSetting/ReducerDelete.js","redux/traffic/TrafficType.js","redux/traffic/ReducerTraffic.js","redux/nameserver/ReducerRecord.js","redux/fileupload/FileUploadType.js","redux/fileupload/ReducerFileUplad.js","redux/dashboard/ReducerTopWriting.js","redux/dashboard/ReducerMonitoringCurrentSituationSetting.js","redux/dashboard/ReducerDashBoardSetting.js","redux/menu/ReducerMenu.js","redux/reporting/ReducerReporting.js","redux/monitoringMailSetting/ReducerMonitoringMailSetting.js","redux/store.js","components/dataState/TableNoData.js","components/error/Page404.js","components/error/Page401.js","components/error/ErrorHandler.js","components/common/BasicMapTable.jsx","components/common/BasicMapTableItem.jsx","components/modal/BaseTableModal.js","components/modal/DashboardSettingModal.js","components/img/popup/popup_dns_atk_notice.png","components/Popup.js","components/HeaderMenu.js","components/monitoring/dashboard/MonitoringAllIssueItem.jsx","components/common/MonitoringMapPageTable.jsx","components/monitoring/dashboard/MonitoringAllissue.jsx","components/common/MonitoringMapTable.jsx","components/monitoring/dashboard/MonitoringIssueItem.jsx","components/monitoring/dashboard/MonitoringCurrentIssue.jsx","components/monitoring/dashboard/MonitoringIssue.jsx","redux/traffic/ActionTraffic.js","components/traffic/TrafficDetailGraph.js","components/traffic/TrafficDashBoardContainer.js","components/dashboardSub/TopWritingItems.jsx","components/dashboardSub/NoticeTopWriting.jsx","components/dashboardSub/NotificationTopWriting.jsx","components/modal/MonitoringCurrentSituationSetting.js","components/dashboardSub/GnexonMonitoring.jsx","redux/board/ActionBoard.js","components/dashboardSub/SecurityTopWriting.jsx","components/DashBoard.js","components/monitoring/LiveMonitoringItem.jsx","components/monitoring/LiveMonitoringList.jsx","components/monitoring/LiveMonitoringTableItem.jsx","components/monitoring/LiveMonitoringTableList.jsx","components/monitoring/LiveMonitoringStatePannel.jsx","components/useValidator.js","components/modal/TagAddModal.js","components/modal/TagDelModal.js","components/monitoring/LiveMonitorTagSetting.jsx","components/error/MonitoringError.js","components/monitoring/LiveMonitoring.jsx","redux/fileupload/ActionFileUpload.js","components/date/dateFormat.js","components/reporting/ReportingItem.jsx","components/reporting/ReportingServerItem.jsx","components/reporting/ReportingSedingStatus.jsx","components/modal/ReportingServerModal.js","components/reporting/Reporting.js","components/datepicker/DateRangePickerCompnent.js","components/traffic/TrafficTVmode.js","components/traffic/TrafficBandWidth.js","components/traffic/TrafficAccount.js","components/traffic/TrafficFooterData.js","components/selectOptionValue/SelectValue.js","components/traffic/Traffic.js","components/Notice.js","components/Security.js","components/Footer.js","redux/monitoringSetting/ActionStateChange.js","components/monitoringSetting/SettingTopBar.jsx","components/common/SettingMapTable.jsx","components/monitoringSetting/SettingOff.jsx","components/monitoringSetting/port/SettingPortItem.jsx","components/monitoringSetting/port/SettingPortTable.jsx","components/monitoringSetting/resource/SettingResourceItem.jsx","components/monitoringSetting/resource/SettingResourceTable.jsx","components/monitoringSetting/web/SettingWebItem.jsx","components/monitoringSetting/web/SettingWebTable.jsx","components/monitoringSetting/SettingList.jsx","components/monitoringSetting/MonitoringSetting.jsx","components/nameserver/NameServerTopBar.jsx","components/nameserver/RecordItem.jsx","components/nameserver/RecordTable.jsx","components/nameserver/DnsRecordAdd.jsx","components/nameserver/NameServerAddress.jsx","components/modal/DomainDeleteModal.js","components/modal/DomainAddModal.js","components/nameserver/NameServerManaged.jsx","components/securityEvent/DateSelect.jsx","components/securityEvent/DropboxFilter.jsx","components/securityEvent/SecEventFilter.jsx","components/securityEvent/SecEventTable.jsx","components/dataState/DivNoData.js","components/chart/SecEventChart.js","components/securityEvent/SecEventGraph.jsx","components/securityEvent/SecurityEvent.jsx","services/apiService.js","components/home.js","utils/jsonUtils.js","components/error/Page403.js","utils/protectedRoute.js","redux/supportcenter/ActionInquiryList.js","redux/supportcenter/ActionSupportCenter.js","components/supportcenter/SupportCenterComment.jsx","components/supportcenter/SupportCenterDetail.jsx","components/dataState/TableLoading.js","components/selectOptionValue/FormText.js","components/supportcenter/TextAreaForm.jsx","components/common/SupportCenterMapTable.jsx","components/supportcenter/visit/ReservaionDetail.jsx","components/supportcenter/visit/Visitors.jsx","components/supportcenter/visit/ReservationCreate.jsx","components/supportcenter/visit/ReservationItem.jsx","components/supportcenter/visit/ReservationTable.jsx","components/modal/AdminAddModal.js","redux/supportcenter/ActionAdmin.js","components/img/sc_info_bnr.png","components/supportcenter/SupportInquiry.jsx","components/supportcenter/SupportInquiryItem.jsx","components/supportcenter/SupportInquiryList.jsx","components/supportcenter/SupportCenter.jsx","components/chart/CpuChart.js","components/chart/MemoryChart.js","components/chart/StorageChart.js","components/chart/TrafficChart.js","components/datepicker/DatePickerToggleComponent.js","components/monitoring/MonitoringModalIssueItem.jsx","components/monitoring/MonitoringModalIssueTable.jsx","components/modal/MonitoringPortModal.js","components/modal/MonitoringWebModal.js","components/modal/MonitoringModal.js","components/modal/DomainModiModal.js","components/modal/monitoringSetting/port/PortScanModalItem.js","components/modal/monitoringSetting/port/PortScanModalTable.js","components/modal/monitoringSetting/resource/ResourceScanModalItem.js","components/modal/monitoringSetting/resource/ResourceScanModal.js","components/modal/monitoringSetting/resource/ResourceScanModalTable.js","components/modal/monitoringSetting/web/WebScanModalTable.js","components/modal/TrafficModal.js","components/modal/WorkModal.js","components/img/port/monitoring-set-port01.jpg","components/img/port/monitoring-set-port02.jpg","components/img/port/monitoring-set-port03.jpg","components/img/port/monitoring-set-port05.jpg","components/img/port/monitoring-set-port06.jpg","components/img/port/monitoring-set-port07.jpg","components/img/agent/redhat_1.jpg","components/img/agent/redhat_3.jpg","components/img/agent/redhat_4.jpg","components/img/agent/windows_1.jpg","components/img/agent/windows_2.jpg","components/img/agent/windows_2-1.jpg","components/img/agent/windows_3.jpg","components/img/agent/windows_4.jpg","components/img/web/monitoring-set-web01.jpg","components/img/web/monitoring-set-web02.jpg","components/img/web/monitoring-set-web04.jpg","components/img/web/monitoring-set-web05.jpg","components/img/web/monitoring-set-web06.jpg","components/img/web/monitoring-set-web07.jpg","components/img/nms/monitoring-set-nms01.jpg","components/img/nms/monitoring-set-nms02.jpg","components/img/nms/monitoring-set-nms03.jpg","components/img/nms/monitoring-set-nms04.jpg","components/img/nms/monitoring-set-nms05.jpg","components/img/nms/monitoring-set-nms06.jpg","components/modal/MonitoringSetHowModal.js","components/img/agent/redhat_2.jpg","components/img/manual/dashboard.jpg","components/img/manual/monitoring01.jpg","components/img/manual/monitoring02.jpg","components/img/manual/reporting.jpg","components/img/manual/traffic01.jpg","components/img/manual/traffic02.jpg","components/img/manual/traffic03.jpg","components/img/manual/dns.jpg","components/modal/HcManualModal.js","components/monitoringMailSetting/MonitoringMailSettingItem.jsx","components/modal/monitoringMailSetting/ManagerAddModal.js","components/modal/monitoringMailSetting/ManagerModiModal.js","components/monitoringMailSetting/MonitoringMailSetting.jsx","components/MainContainer.js","components/Layout.js","locales/ko/Lang.js","locales/en/Lang.js","locales/ch/Lang.js","locales/index.js","i18n.js","components/callback.js","components/outCallback.js","components/silentRenew.js","App.js","index.js","redux/dashboard/ReducerDashboardBill.js"],"names":["MonthBillGraphBar","idc","aws","ncp","monthPreValue","checkboxState","calculateAgoPrice","pricePercent","tooltip","calculateDate","newDate","Date","setDate","setMonth","getMonth","className","totalPrice","toLocaleString","find","f","name","checked","style","height","LoadingSpninner","marginTop","src","loadingImg","alt","module","exports","MonthBill","props","dispatch","useDispatch","useState","loading","setLoading","user","useSelector","state","oidc","totalPrice1","totalPrice2","setIdc","setAws","setNcp","useEffect","SummaryBillAction","disabled","options","setOptions","updateOption","optionName","sumPrice","prevOptions","map","option","handleCheckboxChange","updatedOptions","filter","length","isTotalPriceZero","alert","checkedClassName","checkedLength","Promise","all","billAction","getSummaryBill","then","idcResponse","awsResponse","ncpResponse","idcData","payload","data","invoice","awsData","ncpData","catch","finally","serviceTypePrice","serviceType","month","key","eval","serviceTypeTotalPrice","maxPrice","Math","max","id","profile","type","onChange","toUpperCase","every","class","MENU_DATA_REQUEST","MENU_DATA_SUCCESS","MENU_DATA_ERROR","MENU_CACHE_HIT","cache","Aside","asideToggle","menu","menus","error","openMenus","setOpenMenus","openSubMenus","setOpenSubMenus","currentUrl","setCurrentUrl","window","location","href","parentId","site","a","cacheKey","axios","get","process","params","response","console","log","message","fetchMenuData","newOpenSubMenus","forEach","subMenu","some","subMenu2","includes","menuLink","menuName","menuList","goToLink","link","event","stopPropagation","display","xmlns","width","viewBox","fill","cx","cy","r","stroke","d","isOpen","isOn","isMenuOpen","onClick","e","target","menuTarget","translate","menuIcon","no","prev","newState","isSubOpen","isSubOn","isSubMenuOpen","subMenuName","isActive","userManager","createUserManager","authority","client_id","redirect_uri","response_type","post_logout_redirect_uri","client_secret","scope","silent_redirect_uri","filterProtocolClaims","loadUserInfo","useDetectOutsideClick","el","initialState","setIsActive","current","contains","addEventListener","removeEventListener","action","getMonitorings","createAsyncThunk","rejectWithValue","count","url","next","errorPayLoad","status","getMonitoringTagGroup","getInitMonitorings","getStatusMonitorings","onCount","getSearchMonitorings","searchText","monitoringList","createSlice","MonitoringList","list","totalCount","totalPage","nowPage","hasMore","TagGroup","reducers","listClear","ml","extraReducers","builder","addCase","pending","fulfilled","rejected","actions","monitoringModalAction","getMonitoringModal","monitoring","ip","getMonitoringTags","getMonitoringServersTag","setMonitoringTags","post","code","setUnTag","setPickTag","monitoringModal","ModalLoading","ModalData","ModalError","TagAddModalState","TagDelModalState","TaggedServers","ServersTag","monitoringModalClose","tagAddModalOnOff","tagDelModalOnOff","reset","monitoringIssueAction","getDashBoardCurrentIssues","getDashBoardAllIssues","monitoringIssue","currentIssue","issueLoading","issueData","issueError","allIssue","allIssueLoading","allIssueData","allIssueError","monitoringModalIssueAction","getModalIssues","page","serverIdx","monitoringModalIssue","IssueLoading","IssueData","IssueError","issueDataReset","pannelAction","getMonitoringPannel","Response","monitoringPannel","pannelLoading","pannelData","pannelError","settingAction","getSettings","getPorts","getResources","getWebs","getLogs","hostid","monitoringSetting","hostData","portData","resourceData","web","changeLog","resourceCheckvalue","REPORT_DATA_REQUEST","REPORT_DATA_SUCCESS","REPORT_DATA_ERROR","NOTICE_DATA_REQUEST","NOTICE_DATA_SUCCESS","NOTICE_DATA_ERROR","SEC_DATA_REQUEST","SEC_DATA_SUCCESS","SEC_DATA_ERROR","SEC_EVENT_REQUEST","SEC_EVENT_SUCCESS","SEC_EVENT_ERROR","REPORTING_MODAL_STATE","reportloading","reportdata","reportModal","reporterror","noticeloading","noticedata","noticeerror","securityloading","securitydata","securityerror","currentPage","seceventloading","seceventdata","seceventerror","ReducerBoard","SET_DATE","SET_DATE_WEEK","dateChange","date","initState","week","startDate","addWeeks","endDate","addDays","oneDay","FETCH_CPU_POSTS_REQUEST","FETCH_CPU_POSTS_SUCCESS","FETCH_CPU_POSTS_ERROR","FETCH_MEMORY_POSTS_REQUEST","FETCH_MEMORY_POSTS_SUCCESS","FETCH_MEMORY_POSTS_ERROR","FETCH_STORAGE_POSTS_REQUEST","FETCH_STORAGE_POSTS_SUCCESS","FETCH_STORAGE_POSTS_ERROR","FETCH_TRAFFIC_POSTS_REQUEST","FETCH_TRAFFIC_POSTS_SUCCESS","FETCH_TRAFFIC_POSTS_ERROR","FETCH_SECEVENT_POSTS_REQUEST","FETCH_SECEVENT_POSTS_SUCCESS","FETCH_SECEVENT_POSTS_ERROR","fetchChartCpuDataFailure","fetchChartMemoryDataFailure","fetchChartStorageDataFailure","fetchChartTrafficDataFailure","fetchChartSecEventDataFailure","cpu","chartLoading","chartData","chartError","memory","storage","traffic","secevent","FETCH_RECORD_POSTS_REQUEST","FETCH_RECORD_POSTS_SUCCESS","FETCH_RECORD_POSTS_ERROR","fetchRecordFailure","getRecordData","domain","FETCH_POSTS_REQUEST","FETCH_POSTS_SUCCESS","FETCH_POSTS_ERROR","DOMAIN_ADD_MODAL","DOMAIN_DELETE_MODAL","domainAdd","domainDelete","getDnsData","setDomainState","domainName","headers","request","DnsLoading","DnsData","DnsError","DomainAdd","DomainDelete","RECORD_DATE_SET","RECORD_DATE_CLEAR","record","INQUIRY_LIST_REQUEST","INQUIRY_LIST_SUCCESS","INQUIRY_LIST_ERROR","INQUIRY_DETAIL_REQUEST","INQUIRY_DETAIL_SUCCESS","INQUIRY_DETAIL_ERROR","IP_ADDRESS_REQUEST","IP_ADDRESS_SUCCESS","IP_ADDRESS_ERROR","SUPPORT_SET_REQUEST","SUPPORT_SET_SUCCESS","SUPPORT_SET_ERROR","WORK_GET_REQUEST","WORK_GET_SUCCESS","WORK_GET_ERROR","WORK_SET_REQUEST","WORK_SET_SUCCESS","WORK_SET_ERROR","WORK_DETAIL_REQUEST","WORK_DETAIL_SUCCESS","WORK_DETAIL_ERROR","WORK_REQUEST_MODAL","MODAL_INDEX_DATA","VISITRESERVATIONS_REQUEST","VISITRESERVATIONS_SUCCESS","VISITRESERVATIONS_ERROR","ADMIN_INFO_REQUEST","ADMIN_INFO_SUCCESS","ADMIN_INFO_ERROR","supportLoading","supportData","supportError","workLoading","workData","workError","setSuccessInquiryData","setSuccessData","workDetailLoading","workDetailData","workDetailError","workModal","workIdx","visitReservationsLoading","visitReservationsData","visitReservationsError","inquiryLoading","inquiryData","inquiryError","detailLoading","detailData","detailError","adminInfoLoading","adminInfoData","adminInfoError","monitoringModalDataAction","getWeb","getPort","monitoringModalData","webLoading","webData","webError","port","portLoading","portError","PORT_MODAL_STATE","RESOURCE_MODAL_STATE","WEB_MODAL_STATE","WEB_HOST_MODAL_STATE","DOC_MODAL_STATE","portModalState","resourceModalState","webModalState","docModalState","portState","resoureState","webState","host","docState","getTag","hostId","deleteTag","thunkAPI","delete","tag","tagLoading","tagData","tagError","scanAction","getPortScan","getSinglePortScan","getResourceScan","getWebScan","value","t","hostName","split","scanReducer","portScanData","resourceScanData","webScanData","portScanReset","resourceScanReset","webScanReset","FETCH_PORT_POST_REQUEST","FETCH_PORT_POST_SUCCESS","fetchPortRegisterRequest","fetchPortRegisterSuccess","registerLoading","FETCH_RESOURCE_POST_REQUEST","FETCH_RESOURCE_POST_SUCCESS","FETCH_WEB_POST_REQUEST","FETCH_WEB_POST_SUCCESS","fetchPortDeleteSuccess","deletePortLoading","deleteResourceLoading","deleteWebLoading","TRAFFIC_IP_REQUEST","TRAFFIC_IP_SUCCESS","TRAFFIC_IP_ERROR","TRAFFIC_FULLDATA_REQUEST","TRAFFIC_FULLDATA_SUCCESS","TRAFFIC_FULLDATA_ERROR","TRAFFIC_FULLDATA_REQUEST1","TRAFFIC_FULLDATA_SUCCESS1","TRAFFIC_FULLDATA_ERROR1","TRAFFIC_FULLDATA_REQUEST2","TRAFFIC_FULLDATA_SUCCESS2","TRAFFIC_FULLDATA_ERROR2","TRAFFIC_FULLDATA_REQUEST3","TRAFFIC_FULLDATA_SUCCESS3","TRAFFIC_FULLDATA_ERROR3","TRAFFIC_ALLDATA_REQUEST","TRAFFIC_ALLDATA_SUCCESS","TRAFFIC_ALLDATA_ERROR","TRAFFIC_ACCOUNT_MODAL","TRAFFIC_CACHE_IP","trafficIPLoading","trafficIPData","trafficIPError","trafficFullDataLoading","trafficFullData","trafficFullDataError","trafficFullDataLoading1","trafficFullData1","trafficFullDataError1","trafficFullDataLoading2","trafficFullData2","trafficFullDataError2","trafficFullDataLoading3","trafficFullData3","trafficFullDataError3","trafficAllDataLoading","trafficAllData","trafficAllDataError","accountModal","trafficCache","recordLoading","recordData","recordError","GET_FILE_REQUEST","GET_FILE_SUCCESS","GET_FILE_ERROR","SET_FILE_REQUEST","SET_FILE_SUCCESS","SET_FILE_ERROR","getFileLoading","getFileData","getFileError","setFileLoading","setFileData","setFileError","dashboardAction","getNoticeTopWriting","getSeucirtyTopWriting","getNotificationTopWriting","getNewNotification","getReadNotification","deepLink","dashboardTopWriting","notice","Loading","Data","Error","notification","newNotification","mcsAction","getMonitoringCurrentSituationSetting","setMonitoringCurrentSituationSetting","ReducerMonitoringCurrentSituationSetting","Amonitoring","Bmonitoring","Cmonitoring","Dmonitoring","Tmonitoring","ReducerDashBoardSetting","Menu","title","MenuUpdateTime","isMenuChanged","SetMenu","SetMenuUpdateTime","ReducerMenu","getBasicReportingServer","getBasicReporitngScheduleDisabled","putBasicReporitngScheduleDisabled","put","isDisabled","putBasicReportingServerScheduleKey","reporting","ReportingServer","ReportingScheduleDisabled","getAlertMailList","selectStatus","postAlertMail","postData","setCheckItems","handleReportingModalState","deleteAlertMail","putAlertMail","handleReportingModiModalState","mailSetting","mailList","mailStateCount","regCount","unRegCount","mailPost","postLoading","monitoringInfos","persistConfig","whitelist","combineReducers","ReducerDatepicker","actionType","ReducerMonitoring","ReducerMonitoringModal","ReducerChart","ReducerNameServer","ReducerRecordSetting","ReducerMonitoringIssue","ReducerSupportCenter","ReducerInquiryList","ReducerTraffic","ReducerMonitoringModalIssue","ReducerMonitoringSetting","ReducerModalState","ReducerScan","ReducerRegister","ReducerDelete","ReducerRecord","ReducerFileUpload","ReducerMonitoringPannel","ReducerMonitoringModalData","ReducerTopWriting","ReducerTag","ReducerDashboardBill","ReducerReporting","ReducerMonitoringMailSetting","mcs","dashboard","oidcReducer","persistedReducer","persistReducer","store","configureStore","reducer","middleware","thunk","createOidcMiddleware","persistor","persistStore","TableNoData","cSpan","rSpan","useTranslation","colSpan","rowSpan","textAlign","Page404","Page401","errorCode","removeUser","signinRedirect","ErrorHandler","memo","BasicMapTable","TableItem","checkItems","handleSingleCheck","nameServer","domainState","optionType","checkboxDisabled","setCheckBoxDisabled","downloadOnClick","handleDeleteOnClick","handleModifyOnClick","loadingHeight","padding","idx","BasicMapTableItem","mm","tagName","BaseTableModal","addHandleModal","slotComponent","headerArray","add","allCheckboxView","idArray","m","push","handleAllCheck","i","DashboardSettingModal","upTime","selected","setSelected","dashboardMenu","Popup","popupimg","HeaderMenu","setLogOutChecked","handleSupportCenterShow","handleMeneClick","menuOnOff","handleFullScreen","handleSideClick","toggleLogin","consoleDropdownRef","useRef","logonDropdownRef","notificationMenuRef","isActiveConsole","setIsActiveConsole","isActiveLogon","setIsActiveLogon","notificationMenu","setNotificationMenu","popupView","setPopupView","popupCloseOneDay","localStorage","getItem","previewPop","modalView","setModalView","dashboardSetting","setDashboardSetting","setTimeout","pathname","toLowerCase","displayNoneStyle","displayBlockStyle","i18n","moment","locale","language","preventDefault","document","body","overflow","lineHeight","background","borderColor","marginRight","enter","ref","confirm","purge","signoutRedirect","id_token_hint","id_token","clear","close","signOut","open","role","handleNotificationRead","description","rel","expires","setHours","getHours","setItem","MonitoringAllIssueItem","down","downTime","format","up","MonitoringMapPageTable","MonitoringItem","numberState","index","MonitoringAllissue","setData","dataLoading","setDataLoading","slice","pageCount","pageRangeDisplayed","forcePage","marginPagesDisplayed","previousLabel","nextLabel","previousClassName","nextClassName","activeClassName","onPageChange","selectedPage","MonitoringMapTable","MonitoringCurrentIssueItem","b","_d","duration","diff","_data","years","months","days","hours","minutes","seconds","dateDiff","MonitoringCurrentIssue","setHeight","clientHeight","MonitoringIssueItem","MonitoringIssue","showIssueMenu","setShowIssueMenu","showAllIssueMenu","setShowAllIssueMenu","initialized","setInitialized","intervalId","setInterval","clearInterval","getTrafficFullData","number","interfaceIdx","REQUEST","SUCCESS","ERROR","undefined","Array","isArray","create","withCredentials","join","res","getTrafficAllData","trafficAccountModal","TrafficDetailGraph","clickIp","tmp","subInterfaceIndx","unit","setUnit","totalData","totalDateTime","inTotalBytes","outTotalBytes","inTotalBps","outTotalBps","bandUnit","trafficUnit","isMounted","Object","keys","trafficDateTime","inMaxBps","outMaxBps","BpsFillData","labels","datasets","backgroundColor","pointBackgroundColor","pointBorderColor","label","borderWidth","lineTension","BytesFillData","strokeColor","pointColor","time","floor","maintainAspectRatio","tooltips","enabled","mode","position","intersect","yAlign","callbacks","labelColor","item","chart","datasetIndex","annotation","annotations","scaleID","hover","scales","xAxes","scaleLabel","tooltipFormat","displayFormats","hour","day","gridLines","zeroLineColor","color","ticks","beginAtZero","callback","val","values","checkIdx","yAxes","labelString","fontFamily","fontSize","min","TrafficDashBoardContainer","tagAddModalHandle","firstServerIdx","prevData","clickIpSelect","TopWritingItems","regdate","regDate","subject","NoticeTopWriting","NotificationTopWriting","MonitoringCurrentSituationSetting","monitoringType","selectData","searchRef","tagGroup","setTagGroup","setCheckboxDisabled","isTrafficType","_","groupBy","group","handleSearch","onSubmit","placeholder","info","serverTagData","Type","onPercent","setOnPercent","onPercentAnimation","setOnPercentAnimation","downPercent","setDownPercent","downPercentAnimation","setDownPercentAnimation","nonRegisteredPercent","setNonRegisteredPercent","nonRegisteredAnimation","setNonRegisteredAnimation","allSelcet","setAllSelect","setOnCount","downCount","setDownCount","nonRegisteredCount","setNonRegisteredCount","isDarkMode","setIsDarkMode","viewTag","setViewTag","isLoading","setIsLoading","animationInit","chain","g","prevPercent","tagGroupLength","reduce","total","isAllSelected","pannelResponse","x","round","downStyle","onRegStyle","nonRegStyle","Fragment","searchData","selectTable","btIdx","pageSize","eqip","risk","ipState","ipName","boardType","SecurityTopWriting","DashBoard","view","setView","setMonitoringType","menuItems","setMenu","setServerTagDate","viewMenu","handle","GnexonMonitoring","LiveMonitoringItem","hostStatus","hostID","diskUsageRate","memoryUsageRate","cpuUsageRate","nowInTraffic","nowOutTraffic","ipAddress","raidState","ports","resources","LiveMonitoringList","LiveMonitoringTableItem","tags","setTags","viewService","setviewService","services","setServices","portAndStorage","TaggingIds","pickedTag","picked","foundResource","resource","monitorName","array","concat","displayNone","taggingId","updatedTags","LiveMonitoringTableList","tableSwitch","LiveMonitoringStatePannel","setStatusSort","statusSort","setDonwCount","TotalCount","setTotalCount","isMobile","handleStatusData","nextValue","useValidator","customMessage","customValidator","show","setShow","validator","SimpleReactValidator","messages","validators","showMessages","TagAddModal","showValidationMessage","tagNameValue","setTagName","deleteHostId","required","allValid","hostIds","TagDelModal","tagDelModalHandle","tagInfo","servers","setServers","selectedTagName","setSelectedTagName","update","showTaggedServers","accumulator","currentValue","parseInt","LiveMonitorTagSetting","MonitoringError","data-name","transform","strokeWidth","y2","LiveMonitoring","tgData","useCookies","cookies","setCookie","MviewState","ulSwitch","setulSwitch","setTableSwitch","handleTagSearch","path","breakLabel","pageData","getFile","createElement","setAttribute","appendChild","click","remove","dateFormat","onlyDaydateFormat","ReportingItem","reportTitle","reportType","reportStatus","reportDownloadUrl","aria-hidden","ReportingServerItem","checkedItem","ReportingSedingStatus","isButton","toggleReporting","renderStatus","ReportingServerModal","serverLoading","serverError","scheduleLoading","fetchReportingData","chked","isAllCheckDisabled","newDisabledState","actionMessage","Reporting","DateRangePickerCompnent","initDisabledDate","visible","setVisible","setTmp","cstate","setcState","defineds","startOfWeek","endOfWeek","startOfLastWeek","endOfLastWeek","startOfToday","startOfDay","endOfToday","endOfDay","startOfYesterday","endOfYesterday","startOfMonth","endOfMonth","startOfLastMonth","addMonths","endOfLastMonth","staticRangeHandler","range","isSelected","definedRange","this","isSameDay","defaultRange","selection","editableDateInputs","moveRangeOnFirstSelection","ranges","direction","scroll","zhCN","enUS","ko","dateDisplayFormat","staticRanges","inputRanges","minDate","maxDate","rangeColors","TrafficTVmode","setTvmodeActive","tvmodeActive","darkOn","closedStyle","transition","isDark","MultiGraphFunc","autoFocus","noOptionsMessage","loadingMessage","theme","borderRadius","colors","primary25","primary","components","IndicatorSeparator","tabSelectsValue","handleIpClick","TrafficBandWidth","trafficBandRankDatas","bandAvgTraffic","rank","maxTime","maxBps","TrafficAccount","chargeActive","totalTraffic","TrafficFooterData","trafficDailyDatas","날짜","trafficDate","IN최대값","IN최대시간","inMaxTime","OUT최대값","OUT최대시간","outMaxTime","IN총트래픽","inTotalTraffic","OUT총트래픽","outTotalTraffic","filename","dnsTTLoptions","recordOptions","idcText","visitTypeText","visitType","inquiryBoardType","inquiryWorkDoneType","dnsCustomStyles","provided","border","boxShadow","control","minHeight","indicatorsContainer","valueContainer","recordCustomStyles","input","margin","indicatorSeparator","topCustomStyles","Traffic","setChargeActive","subInterface","setSubInterface","setClickIp","setSubInterfaceIndx","setStartDate","setEndDate","checkStartDate","checkEndDate","getTrafficIP","toggleTrafficCharge","IpOnchange","subInterfaces","top","left","zIndex","styles","selectOption","isClearable","interfaceID","Notice","totalCountPage","ClickData","setClickData","setPage","nowIndex","setNowIndex","prevIndex","setPrevIndex","nextIndex","setNextIndex","showOn","setShowOn","handleViewPrevClick","prevArr","handleViewNextClick","p","nextArr","tmpPage","addPage","changeCount","getAllPageIndex","handleListClick","postNumber","writer","hit","dangerouslySetInnerHTML","__html","contents","NoticeView","Security","Footer","ScrollY","setScrollY","BtnStatus","setBtnStatus","handleFollow","pageYOffset","to","scrollTo","behavior","FETCH_PORT_POSTS_REQUEST","fetchSettingResourceRequest","putSettingPort","monitorStatus","config","putSettingResource","putSettingWeb","putData","checkValue","httptestid","itemId","lastCheckDateTime","monitorType","rule","triggerId","triggerStatus","SettingTopBar","selectHost","setSelectHost","setState","useLocation","hangleServerStateChange","putSettingServerState","hangleServerAllStateChange","alertTxt","h","putSettingAllServerState","selectedOption","s","defaultInputValue","handleTagDelete","htmlFor","SettingMapTable","SettingItem","deleteLoading","handleChange","setInputs","inputs","zabbixData","SettingOff","SettingPortItem","getPortDelete","SettingPortTable","aria-disabled","SettingResourceItem","inputValue","setInputValue","newValue","replace","curruntInputs","changeData","getResourceDelete","SettingResourceTable","selectValue","result","putSettingResourceCheckValue","SettingWebItem","checkUrl","responseCode","webDelete","SettingWebTable","webHostModalState","SettingList","tabState","setTabState","handleTabState","MonitoringSetting","selectHostid","NameServerTopBar","handleModal","RecordItem","handleModionClick","recordType","recordModalDataSet","handleDelonClick","subDomain","Action","RecordType","SubDomain","Domain","Content","recordValue","Priority","priority","prevContent","TTL","ttl","patch","deleteRecordData","RecordTable","handleDomainDeleteModal","DnsRecordAdd","selectTTL","setSelectTTL","selectReg","setSelectReg","ruleText","ruleTextSet","selectType","setSelectType","valueAsNumber","focus","helpers","testRegex","indexOf","isSearchable","readOnly","numeric","classNamePrefix","recordParameter","setDnsRecord","NameServerAddress","text","onCopy","DomainDeleteModal","selectDomain","domainInput","setDomainInput","deleteDomain","DomainAddModal","setDomain","NameServerManaged","DateSelect","stDate","setStDate","standardDate","setStandardDate","startInput","endInput","today","getDate","sminDate","date_select_text","date_select","toISOString","defaultValue","selectedStartDate","selectedEndDate","newStartDate","newEndDate","nStartDate","DropboxFilter","select_box","baseStyles","isFocused","SecEventFilter","selectedOptions","setSelectedOptions","setRisk","setIpState","setIpName","apiserverUrl","formattedOptions","equipIps","equipTypes","serverName","isMulti","filter_bottom","date_container","search_total_container","search","search_button","eqIpValues","setEqIpf","setStartDatef","setEndDatef","setRiskf","setIpStatef","setIpNamef","search_total","SecEventTable","setSelectedPage","handlePageClick","eqIp","seId","seCreatedAt","seEqIp","seSoIp","seDeIp","event_mail","htmlString","innerWidth","innerHeight","newWindow","write","openNewWindow","workhistory","seName","seRisk","onPage","DivNoData","SecEventChart","getSecEventData","hoverBackgroundColor","hoverborderColor","responsive","stepSize","tooltipItem","yLabel","titleFontSize","titleFontColor","bodyFontColor","displayColors","SecEventGraph","SecurityEvent","setEqIp","sec_event_top","sec_event_middle","sec_event_bottom","getDoughnutsFromApi","Home","doughnutData","setDoughnutData","apiService","doughnuts","auth_time","getDoughnuts","JSON","stringify","Page403","ProtectedRoute","getInquiryData","getSeacrhInquiry","searchType","searchBoardType","workDone","getIpAddress","setSupportData","boardKind","suiIdx","files","inquiryFormResult","formData","FormData","append","Subject","Name","Email","Phone","getWorkData","workRequestModal","getVisitReservations","SupportCenterComment","attchFiles","j","downloadUrl","fileName","fileIdx","SupportCenterDetail","getInquiryDetailData","phone","email","fileDownloadUrl","comments","TableLoading","SupportFormText","AccountFormText","TextAreaForm","radioState","selectState","selectContentState","setselectState","setSelectContentState","setValue","file","setFile","setMessage","textRef","fileRef","vaildFileType","size","fileTypes","fileDownloadLink","fileName1","link1","fileName2","link2","onSumbit","resize","accept","marginLeft","SupportCenterMapTable","Items","handleReservationDetail","ReservaionDetail","findReservation","handleModiReservation","colspan","Idc","VisitType","responseDate","ResponseDate","Visitors","Company","Contact","Contents","onVisitorCreate","handleAddClick","onVisitorDelete","visitorInputs","ReservationCreate","visitShowOnClick","setModiShowOn","Idx","Regdate","setVisitorInputs","BoardSubClass","BoardClass","nextId","validatorSubmit","showValidationSubmitMessage","setChecked","BoardKind","RegDate","defaultIdcSelect","defaultVisitReason","splice","handleChecked","visitReservationData","modiVisitReservation","setVisitReservation","ReservationItem","visitors","ReservationTable","setFindReservation","detailRef","modishowOn","setMode","activePage","setActivePage","Search","v","boardClass","boardSubClass","company","contact","scrollIntoView","AdminAddModal","handleAdminAddModal","CellPhone","inputChange","handleSubmit","admin","setAdmin","for","SupportInquiry","adminModalView","setAdminModalView","setRadioState","visitShow","setVisit","handdleRadioButton","cellPhone","radioNumber","customStyles","outline","workConfirmApprove","selectTitle","items","handleInputChange","infoBnr","ipfIp","authDate","workingDate","workSpec","workCost","isAppApplication","wrIdx","isWork","SupportInquiryItem","setDetailOn","workStatus","SupportInquiryList","askShowOn","detailOn","setSearchType","handleCalendar","SupportCenter","setAskShowOn","displayBlock","CpuChart","getCPUData","clock","Number","value_avg","toFixed","layout","bottom","MemoryChart","getMemoryData","StorageChart","getStorageData","percentage","pointRadius","TrafficChart","interfaceId","getTrafficData","DatePickerToggleComponent","MonitoringModalIssueItem","downDate","upDate","triggerDescription","MonitoringModalIssueTable","MonitoringPortModal","MonitoringWebModal","MonitoringModal","showModal","setShowModal","ModalClose","DomainModiModal","handleModalModi","recordState","setRecordState","substr","preRecord","PrevContent","modifyRecordData","PortScanModalItem","checkBox","registered","PortScanModalTable","handlePortState","refTableHeight","getPortRegister","ResourceScanModalItem","ResourceScanModal","scanModels","ResourceScanModalTable","handleResourceState","agents","osType","getResourceRegister","WebScanModalTable","handleWebState","test","maxWidth","maxlength","CheckValue","Url","WebRegister","TrafficModal","handleTrafficModal","WorkModal","handleWorkModal","workConfirm","workConfirmResult","setWorkData","workChargeName","workChargeEmail","workChargePhone","workChargeMobile","workEngineerName","MonitoringSetHowModal","handleMonitoringSetHowModal","port1","port2","port3","port4","port5","port6","web1","web2","web4","web5","web6","web7","cent1","cent3","cent4","windows1","windows2","windows4","windows3","windows5","nms1","nms2","nms3","nms4","nms5","nms6","HcManualModal","handleHcManualModal","monitoring1","monitoring2","traffic01","traffic02","traffic03","dns","MonitoringMailSettingItem","alertAssignee","zaaName","zaaEmail","ManagerAddModal","errors","updatedData","updatedErrors","trim","HostId","toString","SuiIdx","AlertAssignees","ManagerModiModal","zaaIdx","prevInputs","MonitoringMailSetting","isModalView","setIsModalView","isModiModalView","setIsModiModalView","setSelectStatus","modiSelectedData","setModiSelectedData","handleStatusSelect","handleSelectDelete","MainContainer","isPlaying","userMenual","setUserMenual","setTitle","setServiceInfo","serviceInfo","loc","HeaderFunc","setCanAccess","fetchData","pathName","exact","component","MonitoringMailSettingList","render","Layout","useFullScreenHandle","isLoadingUser","setMenuOnOff","logOutChecked","setAsideToggle","useAnimate","start","opacity","end","play","expired","getUser","defaults","common","access_token","Lang","대시보드","모니터링","실시간모니터링","모니터링설정변경","리포팅","트래픽","네임서버관리","공지사항","보안뉴스","바로가기","지원센터","로그아웃","계정관리","로그아웃하시겠습니까","안녕하세요","님","모니터링이슈","현재이슈","이슈","다운시간","지속시간","이벤트","모든이슈","업시간상태","리스트뷰","카드뷰","정상","비정상","전체","미등록","개","검색","상태","호스트","확인","모니터링서버없음","관리자문의","로딩중","데이터가없습니다","번호","포트","마지막체크시간","웹","도메인","리소스","체크","체크값","기간설정","그래프기간설정","이슈이력","서비스","년","개월","시간","분","초","일","이슈발생시각","이슈종료시각","모니터링셋팅바로가기","IP를선택하세요","IP조회중","IP없음","모든서버의모니터링을켜시겠습니까","모든서버의모니터링을끄시겠습니까","해당서버의모니터링을켜고끌수있습니다","전체서버의모니터링을켜고끌수있습니다","이미가동상태입니다","이미중지상태입니다","중지되었습니다","가동되었습니다","삭제되었습니다","변경될체크값을설정해주세요","저장","변경이력","포트설정","포트추가","포트상태","체크시간","변경","가동","중지","이름","규칙","및","추가","선택창","변경되었습니다","태그를등록할서버를선택해주세요","태그를입력하지않았거나10자를초과하였습니다","모니터링포트스캔","포트스캔","단일포트스캔","등록여부","등록됨","등록가능","등록할포트를하나이상선택해주세요","스캔할포트를입력해주세요","스캔중","리소스스캔","대상","등록할리소스를하나이상선택해주세요","응답코드","컨텐츠확인","컨텐츠확인문구","체크값입력문구","체크값입력","모니터링URL입력","스캔하기","스캔할url를입력해주세요","URL입력후스캔이필요합니다","url이정확하지않습니다","체크값이없거나20자를초과했습니다","스캔되었습니다","등록되었습니다","레코드","설정","관리","도메인추가","첫번째네임서버","두번째네임서버","서브도메인","우선순위","주소","IP주소레코드값","상태설정","레코드타입","MX레코드","텍스트TXT","별칭CNAME","유의사항","유의사항1","유의사항2","유의사항3","URL복사","IP복사","삭제","수정","필수값","숫자만","텍스트","별칭","선택하세요","해당레코드타입은삭제할수없습니다","ip형식이아닙니다","해당레코드타입은수정할수없습니다","타입","순위","도메인삭제","사이트입력","본인소유의도메인주소를입력해주세요","도메인형식이아닙니다","버튼비활성화시기술문의","필수값을모두입력해주세요","도메인을먼저선택해주세요","수정되었습니다","데이터를가져오는중문제가발생했습니다","잘못된요청으로문제가발생했습니다","로그인정보가만료되었습니다다시로그인해주세요","트래픽비교","트래픽확인","트래픽요금산정","트래픽상세","데이터","대역종량제","트래픽종량제","기간별트래픽송신합계","기간별대역폭송신Top5","사용량","트래픽요금산정평균값","트래픽요금기준안내","트래픽현황","적용","IP주소5개까지조회가능합니다","사용중인아이피가없습니다","날짜선택","기술문의","서버운영에필요한기술에대한문의를시도하세요","결제지출증빙문의","세금계산서현금영수증결제방법변경등에관한문의를시도하세요","영업문의","서버운영에필요한견적에대한문의를시도하세요","작업의뢰서확인","서버IP","문의내용","파일첨부","문의하기","나의문의내역","승인일","작업일","작업내용","비용","작업승인","작업","완료","유형","제목","처리상태","비고","상세보기","답변","답변자","처리내역","작업의뢰서","요청하신작업중고객님의승인이필요한작업리스트","담당자","올바른형식의파일이아닙니다","파일크기는3MB를넘을수없습니다","카드자동결제","첨부파일","호센서비스호스팅신청서CMS","호센서비스호스팅신청서PDF","문의등록완료되었습니다","서버IP를선택해주세요","문의내용을선택해주세요","문의글을작성해주세요","올바른파일형식이아니거나파일크기가3MB이하여만업로드가능합니다","기타문의","시스템작업의뢰서","작업의뢰인","성명","이메일","전화번호","핸드폰번호","작업의뢰정보","작업서버IP","작업일시","작업비용VAT포함","작업세부사항","안내사항","작업의뢰서폼1번","작업의뢰서폼2번","작업의뢰서폼3번","작업의뢰서폼4번","작업의뢰서폼5번","작업승인하기","승인하시겠습니까","승인완료했습니다","승인요청","승인완료","작업중","작성일","작성자","리포트타입","생성일","다운로드","이전글","다음글","목록","생성중","CDP백업복구폼","OS재설치폼","방화벽룰셋폼","인버스도메인폼","CDP백업신청폼","CMS신청폼","카드자동결제신청폼","세금계산서발행신청폼","현금영수증발행신청폼","선택","서버정보","도메인이름","네임서버주소","등록일","도메인명","SRV레코드","변경내역","사용자","모니터링결과없음","모니터링리소스스캔","대쉬보드","결제증빙문의","localeKo","en","localeEn","zh","localeCh","use","LanguageDetector","initReactI18next","init","debug","detection","order","caches","Callback","history","useHistory","successCallback","storedValue","errorCallback","clearStaleState","OutCallback","SilentRenewComponent","processSilentRenew","App","baseUrl","getElementsByTagName","getAttribute","CookiesProvider","basename","CallbackPage","ReactDOM","getElementById","InvoiceType","currentDate","currentYear","getFullYear","currentMonth","invoiceTypeNum","Year","Month","hostingBill"],"mappings":"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","file":"static/js/main.43ec0c75.chunk.js","sourcesContent":["import React, { useState } from 'react';\r\n\r\nconst MonthBillGraphBar = ({ idc, aws, ncp, monthPreValue, checkboxState, calculateAgoPrice, pricePercent, tooltip }) => {\r\n const calculateDate = () => {\r\n const newDate = new Date();\r\n newDate.setDate(1);\r\n newDate.setMonth(newDate.getMonth() - monthPreValue);\r\n return newDate.getMonth() + 1;\r\n };\r\n return (\r\n <>\r\n {tooltip ? (\r\n
\r\n

{calculateDate()}월

\r\n
\r\n add_circle\r\n
\r\n

\r\n IDC\r\n {idc.totalPrice.toLocaleString()}원\r\n

\r\n

\r\n AWS\r\n {aws.totalPrice.toLocaleString()}원\r\n

\r\n

\r\n NCP\r\n {ncp.totalPrice.toLocaleString()}원\r\n

\r\n
\r\n
\r\n
\r\n ) : (\r\n

{calculateDate()}월

\r\n )}\r\n
\r\n {checkboxState.find((f) => f.name === 'idc').checked && (\r\n
\r\n
\r\n
\r\n )}\r\n {checkboxState.find((f) => f.name === 'aws').checked && (\r\n
\r\n
\r\n
\r\n )}\r\n {checkboxState.find((f) => f.name === 'ncp').checked && (\r\n
\r\n
\r\n
\r\n )}\r\n
\r\n

{calculateAgoPrice(monthPreValue)}

\r\n \r\n );\r\n};\r\n\r\nexport default MonthBillGraphBar;\r\n","export default __webpack_public_path__ + \"static/media/loading.5bc7372e.gif\";","import React from 'react';\r\nimport loadingImg from '../img/menu/loading.gif';\r\n\r\nconst LoadingSpninner = ({ height }) => (\r\n
\r\n
\r\n {/* \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n L\r\n \r\n \r\n */}\r\n 로딩중입니다\r\n
\r\n
\r\n);\r\n\r\nexport default LoadingSpninner;\r\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"sec_event_top\":\"securityevent_sec_event_top__b-9P2\",\"sec_event_middle\":\"securityevent_sec_event_middle__hIiE0\",\"sec_event_bottom\":\"securityevent_sec_event_bottom__1nGtc\",\"dropbox\":\"securityevent_dropbox__2B9Bq\",\"filter_bottom\":\"securityevent_filter_bottom__3RfOl\",\"select_box\":\"securityevent_select_box__gwoRN\",\"search\":\"securityevent_search__L7iEI\",\"search_button\":\"securityevent_search_button__2nNse\",\"on\":\"securityevent_on__2cLxC\",\"search_total_container\":\"securityevent_search_total_container__NTEE_\",\"search_total\":\"securityevent_search_total__Ns-vU\",\"date_container\":\"securityevent_date_container__3V1Jq\",\"date\":\"securityevent_date__QzcwI\",\"date_select\":\"securityevent_date_select__1onmG\",\"date_select_text\":\"securityevent_date_select_text__3lXcl\",\"date_select_div\":\"securityevent_date_select_div__1Y17m\",\"event_mail\":\"securityevent_event_mail__JqGeV\",\"onPage\":\"securityevent_onPage__3ngfP\"};","import React, { useEffect, useState } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport LoadingSpninner from '../dataState/LoadingSpninner';\r\nimport { billAction } from '../../redux/dashboard/ReducerDashboardBill';\r\nimport MonthBillGraphBar from './MonthBillGraphBar';\r\n\r\nconst MonthBill = (props) => {\r\n const dispatch = useDispatch();\r\n const [loading, setLoading] = useState(true);\r\n\r\n const user = useSelector((state) => state.oidc.user);\r\n\r\n const [idc, setIdc] = useState({\r\n totalPrice: 0,\r\n totalPrice1: 0,\r\n totalPrice2: 0,\r\n });\r\n const [aws, setAws] = useState({\r\n totalPrice: 0,\r\n totalPrice1: 0,\r\n totalPrice2: 0,\r\n });\r\n const [ncp, setNcp] = useState({\r\n totalPrice: 0,\r\n totalPrice1: 0,\r\n totalPrice2: 0,\r\n });\r\n\r\n useEffect(() => {\r\n SummaryBillAction();\r\n }, [dispatch]);\r\n\r\n const [options, setOptions] = useState([\r\n \r\n { name: 'idc', disabled: false, checked: false },\r\n { name: 'aws', disabled: false, checked: false },\r\n { name: 'ncp', disabled: false, checked: false },\r\n ]);\r\n\r\n useEffect(() => {\r\n const updateOption = (optionName, totalPrice, totalPrice1, totalPrice2) => {\r\n const sumPrice = totalPrice + totalPrice1 + totalPrice2;\r\n setOptions((prevOptions) =>\r\n prevOptions.map((option) =>\r\n option.name === optionName ? { ...option, disabled: sumPrice === 0, checked: sumPrice !== 0 } : option\r\n )\r\n );\r\n };\r\n\r\n updateOption('idc', idc.totalPrice, idc.totalPrice1, idc.totalPrice2);\r\n updateOption('aws', aws.totalPrice, aws.totalPrice1, aws.totalPrice2);\r\n updateOption('ncp', ncp.totalPrice, ncp.totalPrice1, ncp.totalPrice2);\r\n }, [idc, aws, ncp]);\r\n\r\n const handleCheckboxChange = (name) => {\r\n const updatedOptions = options.map((option) => (option.name === name ? { ...option, checked: !option.checked } : option));\r\n const hasSelectedOption = updatedOptions.filter((f) => !f.disabled && f.checked).length;\r\n if (hasSelectedOption < 1 && !isTotalPriceZero()) {\r\n return alert('최소 한가지 옵션은 선택되어야 합니다.');\r\n }\r\n\r\n setOptions(updatedOptions);\r\n };\r\n\r\n const checkedClassName = () => {\r\n const checkedLength = options.filter((f) => f.checked === true).length;\r\n return checkedLength === 3 ? 'rowgraph-area three' : checkedLength === 2 ? 'rowgraph-area two' : 'rowgraph-area';\r\n };\r\n\r\n const SummaryBillAction = () => {\r\n setLoading(true);\r\n Promise.all([\r\n dispatch(billAction.getSummaryBill('idc')),\r\n dispatch(billAction.getSummaryBill('aws')),\r\n dispatch(billAction.getSummaryBill('ncp')),\r\n ])\r\n .then(([idcResponse, awsResponse, ncpResponse]) => {\r\n const idcData = idcResponse.payload.data.data.invoice;\r\n const awsData = awsResponse.payload.data.data.invoice;\r\n const ncpData = ncpResponse.payload.data.data.invoice;\r\n if (idcData != null) {\r\n setIdc(idcData);\r\n }\r\n if (awsData != null) {\r\n setAws(awsData);\r\n }\r\n\r\n if (ncpData != null) {\r\n setNcp(ncpData);\r\n }\r\n })\r\n .catch(() => {\r\n setLoading(false);\r\n })\r\n .finally(() => {\r\n setLoading(false);\r\n });\r\n };\r\n\r\n const serviceTypePrice = (serviceType, month) => {\r\n const key = `${serviceType}.totalPrice${month === 0 ? '' : month}`;\r\n return options.find((option) => option.name === serviceType).checked ? eval(key) : 0;\r\n };\r\n\r\n const calculateAgoPrice = (month) => {\r\n return serviceTypeTotalPrice(month).toLocaleString();\r\n };\r\n\r\n const serviceTypeTotalPrice = (month) => {\r\n return serviceTypePrice('idc', month) + serviceTypePrice('aws', month) + serviceTypePrice('ncp', month);\r\n };\r\n\r\n const pricePercent = (serviceType, month) => {\r\n const maxPrice = Math.max(serviceTypePrice('idc', month), serviceTypePrice('aws', month), serviceTypePrice('ncp', month));\r\n if (maxPrice === 0) {\r\n return 0;\r\n }\r\n return (serviceTypePrice(serviceType, month) / maxPrice) * 100;\r\n };\r\n\r\n const isTotalPriceZero = () => {\r\n return serviceTypeTotalPrice(0) + serviceTypeTotalPrice(1) + serviceTypeTotalPrice(2) === 0;\r\n };\r\n\r\n return (\r\n
\r\n
\r\n

\r\n

{user.profile.name}

님의 요금 요약정보\r\n

\r\n {loading ? (\r\n \r\n ) : (\r\n <>\r\n
\r\n
\r\n {options.map((option) => (\r\n

\r\n handleCheckboxChange(option.name)}\r\n />\r\n \r\n

\r\n ))}\r\n
\r\n

\r\n * 3개월 동안 요금 변동 추이를 확인하실 수 있습니다. 각 서비스별 조회 및 통합 조회가 가능합니다.\r\n

\r\n
\r\n {options.every((option) => option.disabled) ? (\r\n

※ 확인할 수 있는 요금 요약정보가 없습니다.

\r\n ) : (\r\n
    \r\n
  • \r\n \r\n
  • \r\n
  • \r\n \r\n
  • \r\n
  • \r\n \r\n
  • \r\n
\r\n )}\r\n
\r\n
\r\n \r\n )}\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default MonthBill;\r\n","export const MENU_DATA_REQUEST = 'MENU_DATA_REQUEST';\r\nexport const MENU_DATA_SUCCESS = 'MENU_DATA_SUCCESS';\r\nexport const MENU_DATA_ERROR = 'MENU_DATA_ERROR';\r\nexport const MENU_CACHE_HIT = 'MENU_CACHE_HIT';","import axios from 'axios';\r\nimport {\r\n MENU_DATA_REQUEST,\r\n MENU_DATA_SUCCESS,\r\n MENU_DATA_ERROR,\r\n MENU_CACHE_HIT,\r\n} from './MenuType';\r\n\r\nconst cache = {}; \r\n\r\nexport const fetchMenuData = (parentId = null, site = 'CS') => async (dispatch) => {\r\n const cacheKey = `${parentId}-${site}`; \r\n\r\n if (cache[cacheKey]) {\r\n dispatch({\r\n type: MENU_CACHE_HIT,\r\n payload: cache[cacheKey],\r\n });\r\n return;\r\n }\r\n\r\n dispatch({ type: MENU_DATA_REQUEST });\r\n\r\n try {\r\n const response = await axios.get(\r\n `${process.env.REACT_APP_REQUEST_API_URL}Menu/GetMenus`,\r\n {\r\n params: {\r\n parentId: parentId,\r\n site: site, \r\n },\r\n }\r\n );\r\n console.log(\"Response Data:\", response.data);\r\n console.log(\"Response Object:\", response);\r\n cache[cacheKey] = response.data; \r\n\r\n dispatch({\r\n type: MENU_DATA_SUCCESS,\r\n payload: response.data,\r\n });\r\n } catch (error) {\r\n dispatch({\r\n type: MENU_DATA_ERROR,\r\n error: error.message || '�޴� �����͸� �ҷ����� �� �����߽��ϴ�.',\r\n });\r\n }\r\n};\r\n","import React, { useEffect, useState } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { fetchMenuData } from '../redux/menu/ActionMenu';\r\n\r\nconst Aside = ({ asideToggle }) => {\r\n const dispatch = useDispatch();\r\n const { loading, error, data: menus } = useSelector((state) => state.menu);\r\n\r\n const [openMenus, setOpenMenus] = useState({});\r\n const [openSubMenus, setOpenSubMenus] = useState({});\r\n const [currentUrl, setCurrentUrl] = useState(\"\");\r\n\r\n useEffect(() => {\r\n setCurrentUrl(window.location.href);\r\n }, []);\r\n\r\n useEffect(() => {\r\n dispatch(fetchMenuData());\r\n }, [dispatch]);\r\n\r\n useEffect(() => {\r\n if (menus.length > 0) {\r\n const newOpenSubMenus = {};\r\n\r\n menus.forEach((menu) => {\r\n if (menu.subMenu) {\r\n menu.subMenu.forEach((subMenu) => {\r\n const isOn = subMenu.subMenu?.some(subMenu2 =>\r\n currentUrl.includes(subMenu2.menuLink)\r\n );\r\n if (isOn) {\r\n newOpenSubMenus[subMenu.menuName] = true;\r\n }\r\n });\r\n }\r\n });\r\n\r\n setOpenSubMenus(newOpenSubMenus);\r\n }\r\n }, [menus, currentUrl]);\r\n const toggleMenu = (menuName) => {\r\n setOpenMenus((prev) => {\r\n const newState = { ...prev };\r\n\r\n if (newState[menuName]) {\r\n newState[menuName] = false;\r\n } else {\r\n newState[menuName] = true;\r\n }\r\n\r\n return newState;\r\n });\r\n };\r\n\r\n const toggleSubMenu = (subMenuName) => {\r\n setOpenSubMenus((prev) => {\r\n const newState = { ...prev };\r\n\r\n if (newState[subMenuName]) {\r\n newState[subMenuName] = false;\r\n } else {\r\n newState[subMenuName] = true;\r\n }\r\n\r\n return newState;\r\n });\r\n };\r\n const goToLink = (link, event) => {\r\n event.stopPropagation();\r\n if (link) {\r\n window.location.href = link;\r\n }\r\n };\r\n \r\n\r\nconst renderMenu = (menuList) => {\r\n return (\r\n
\r\n {menuList.map((menu) => {\r\n const isOpen = openMenus[menu.menuName] || false;\r\n\r\n const isOn = menu.subMenu?.some(subMenu =>\r\n subMenu.menuLink === currentUrl || \r\n subMenu.subMenu?.some(subMenu2 => currentUrl.includes(subMenu2.menuLink))\r\n );\r\n\r\n const isMenuOpen = isOpen || isOn;\r\n\r\n return menu.subMenu == null || menu.subMenu.length < 1 ? (\r\n
goToLink(menu.menuLink, e)}\r\n >\r\n
\r\n \r\n {menu.menuIcon}\r\n

{menu.menuName}

\r\n
\r\n
\r\n
\r\n ) : (\r\n
\r\n
toggleMenu(menu.menuName)}\r\n >\r\n
\r\n {menu.menuIcon}\r\n

{menu.menuName}

\r\n
\r\n arrow_drop_down\r\n
\r\n
\r\n
\r\n {subMenu.subMenu.map((subMenu2) => {\r\n const isActive = currentUrl === subMenu2.menuLink ? \"active on\" : \"\";\r\n return (\r\n

\r\n \r\n {subMenu2.menuName}\r\n \r\n

\r\n );\r\n })}\r\n
\r\n \r\n ) : (\r\n
  • goToLink(subMenu.menuLink, e)}>\r\n

    \r\n - {subMenu.menuName}\r\n

    \r\n
  • \r\n );\r\n })}\r\n \r\n \r\n );\r\n })}\r\n
    \r\n );\r\n};\r\n\r\n\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default Aside;","import { createUserManager } from 'redux-oidc';\r\nimport { userConfig, devConfig, realConfig, userManagerConfig } from '../userConfig';\r\n\r\nconst userManager = createUserManager(userConfig);\r\n\r\nexport default userManager;\r\n","import userManager from './utils/userManager';\r\n\r\n// 빌드 환경에 따른 User Config 분기\r\nexport const userConfig = {\r\n authority: process.env.REACT_APP_AUTHORITY,\r\n client_id: process.env.REACT_APP_CLIENT_ID,\r\n redirect_uri: process.env.REACT_APP_REDIRECT_URI,\r\n response_type: process.env.REACT_APP_RESPONSE_TYPE,\r\n post_logout_redirect_uri: process.env.REACT_APP_POST_LOGOUT_REDIRECT_URI,\r\n client_secret: process.env.REACT_APP_CLIENT_SECRET,\r\n scope: process.env.REACT_APP_SCOPE,\r\n silent_redirect_uri: process.env.REACT_APP_SILENT_REDIRECT_URI,\r\n filterProtocolClaims: true,\r\n loadUserInfo: true,\r\n};\r\n\r\n// 로컬 -> id9.hmaster.co.kr\r\nexport const devConfig = {\r\n authority: 'https://id9.hmaster.co.kr',\r\n client_id: 'HostingConsoleLocalhost',\r\n redirect_uri: 'https://localhost:44303/signin-oidc',\r\n response_type: 'code',\r\n post_logout_redirect_uri: 'https://localhost:44303/signout-oidc',\r\n client_secret: 'FekpXAWy5ZpzlDrbFC6yIK7b',\r\n scope: 'openid profile csApi offline_access',\r\n silent_redirect_uri: 'https://localhost:44303/silent_renew/silent_renew.html',\r\n filterProtocolClaims: true,\r\n loadUserInfo: true,\r\n};\r\n\r\n// 로컬 -> login.cs.hostcenter.co.kr\r\nexport const realConfig = {\r\n authority: 'https://login.cs.hostcenter.co.kr',\r\n client_id: 'HostingConsoleLocalhost',\r\n redirect_uri: 'https://localhost:44303/signin-oidc',\r\n response_type: 'code',\r\n post_logout_redirect_uri: 'https://localhost:44303/signout-oidc',\r\n client_secret: 'FekpXAWy5ZpzlDrbFC6yIK7b',\r\n scope: 'openid profile csApi offline_access',\r\n silent_redirect_uri: 'https://localhost:44303/silent_renew/silent_renew.html',\r\n automaticSilentRenew: true,\r\n accessTokenExpiringNotificationTime: 10,\r\n};\r\nexport const userManagerConfig = {\r\n authority: 'https://localhost:5001',\r\n client_id: 'HostingConsoleLocalhost',\r\n redirect_uri: 'https://localhost:44303/signin-oidc',\r\n response_type: 'code',\r\n post_logout_redirect_uri: 'https://localhost:44303/signout-oidc',\r\n\r\n client_secret: 'FekpXAWy5ZpzlDrbFC6yIK7b',\r\n scope: 'openid profile csApi offline_access',\r\n silent_redirect_uri: 'https://localhost:44303/silent_renew/silent_renew.html',\r\n filterProtocolClaims: true,\r\n automaticSilentRenew: true,\r\n accessTokenExpiringNotificationTime: 10,\r\n loadUserInfo: true,\r\n};\r\n","import { useState, useEffect } from 'react';\r\n\r\nexport const useDetectOutsideClick = (el, initialState) => {\r\n const [isActive, setIsActive] = useState(initialState);\r\n\r\n useEffect(() => {\r\n const onClick = (e) => {\r\n if (el.current !== null && !el.current.contains(e.target)) {\r\n setIsActive(!isActive);\r\n }\r\n };\r\n if (isActive) {\r\n window.addEventListener('click', onClick);\r\n }\r\n\r\n return () => {\r\n window.removeEventListener('click', onClick);\r\n };\r\n }, [isActive, el]);\r\n\r\n return [isActive, setIsActive];\r\n};\r\n","import axios from 'axios';\r\nimport { createAsyncThunk, createSlice } from '@reduxjs/toolkit';\r\n\r\nconst initState = {\r\n MonitoringList: {\r\n loading: false,\r\n data: {\r\n list: [],\r\n totalCount: 0,\r\n totalPage: 1,\r\n nowPage: 1,\r\n count: {\r\n prev: 0,\r\n next: 20,\r\n },\r\n hasMore: true,\r\n },\r\n error: null,\r\n },\r\n TagGroup :[]\r\n};\r\n\r\nexport const action = {\r\n getMonitorings: createAsyncThunk('GET/MONITORING', async (data, { rejectWithValue }) => {\r\n const { count, state } = data;\r\n const url = state\r\n ? `${process.env.REACT_APP_REQUEST_API_URL}Monitoring?page=${count.prev}&pageSize=${count.next}&selectStatus=${state}`\r\n : `${process.env.REACT_APP_REQUEST_API_URL}Monitoring?page=${count.prev}&pageSize=${count.next}`;\r\n\r\n return await axios\r\n .get(url)\r\n .then((response) => response.data)\r\n .catch((error) => {\r\n const errorPayLoad = {};\r\n errorPayLoad['message'] = error.response.data;\r\n errorPayLoad['status'] = error.response.status;\r\n return rejectWithValue(errorPayLoad);\r\n });\r\n }),\r\n getMonitoringTagGroup: createAsyncThunk('GET/MONITORINGTAGGROUP', async (data, { rejectWithValue }) => {\r\n return await axios\r\n .get(`${process.env.REACT_APP_REQUEST_API_URL}Monitoring/GetTagGroup`)\r\n .then((response) => response.data)\r\n .catch((error) => {\r\n const errorPayLoad = {};\r\n errorPayLoad['message'] = error.response.data;\r\n errorPayLoad['status'] = error.response.status;\r\n return rejectWithValue(errorPayLoad);\r\n });\r\n }),\r\n getInitMonitorings: createAsyncThunk('GET/INITMONITORING', async (data, { rejectWithValue }) => {\r\n const { count, state } = data;\r\n const url = state\r\n ? `${process.env.REACT_APP_REQUEST_API_URL}Monitoring?pageSize=${count}&selectStatus=${state}`\r\n : `${process.env.REACT_APP_REQUEST_API_URL}Monitoring`;\r\n\r\n return await axios\r\n .get(url)\r\n .then((response) => response.data)\r\n .catch((error) => {\r\n const errorPayLoad = {};\r\n errorPayLoad['message'] = error.response.data;\r\n errorPayLoad['status'] = error.response.status;\r\n return rejectWithValue(errorPayLoad);\r\n });\r\n }),\r\n getStatusMonitorings: createAsyncThunk('GET/STATUSMONITORING', async (data, { rejectWithValue }) => {\r\n const { count, status, onCount } = data;\r\n return await axios\r\n .get(\r\n `${process.env.REACT_APP_REQUEST_API_URL}Monitoring?page=${count.prev}&pageSize=${count.next}&selectStatus=${status}&count=${onCount}`\r\n )\r\n .then((response) => response.data)\r\n .catch((error) => {\r\n const errorPayLoad = {};\r\n errorPayLoad['message'] = error.response.data;\r\n errorPayLoad['status'] = error.response.status;\r\n return rejectWithValue(errorPayLoad);\r\n });\r\n }),\r\n getSearchMonitorings: createAsyncThunk('GET/SEARCHMONITORING', async (data, { rejectWithValue }) => {\r\n const { count, searchText } = data;\r\n return await axios\r\n .get(`${process.env.REACT_APP_REQUEST_API_URL}Monitoring?page=${count.prev}&pageSize=${count.next}&searchText=${searchText}`)\r\n .then((response) => response.data)\r\n .catch((error) => {\r\n const errorPayLoad = {};\r\n errorPayLoad['message'] = error.response.data;\r\n errorPayLoad['status'] = error.response.status;\r\n return rejectWithValue(errorPayLoad);\r\n });\r\n }),\r\n};\r\n\r\nconst monitoringList = createSlice({\r\n name: 'monitoringList',\r\n initialState: initState,\r\n reducers: {\r\n listClear: (state) => {\r\n const ml = state.MonitoringList;\r\n ml.loading = true;\r\n ml.data.list = [];\r\n },\r\n },\r\n extraReducers: (builder) => {\r\n builder\r\n .addCase(action.getMonitorings.pending, (state) => {\r\n const ml = state.MonitoringList;\r\n ml.loading = true;\r\n ml.data.hasMore = true;\r\n })\r\n .addCase(action.getMonitorings.fulfilled, (state, action) => {\r\n state.MonitoringList = {\r\n loading: false,\r\n data: {\r\n list: action.payload.data,\r\n count: { prev: action.payload.nowPage, next: 20 },\r\n hasMore: action.payload.totalCount <= action.payload.data.length ? false : true,\r\n totalCount: action.payload.totalCount,\r\n totalPage: action.payload.totalPage,\r\n nowPage: action.payload.nowPage,\r\n },\r\n };\r\n })\r\n .addCase(action.getMonitorings.rejected, (state, action) => {\r\n const ml = state.MonitoringList;\r\n ml.loading = false;\r\n ml.error = action.payload;\r\n ml.data.list = [];\r\n })\r\n .addCase(action.getMonitoringTagGroup.pending, (state) => {\r\n })\r\n .addCase(action.getMonitoringTagGroup.fulfilled, (state, action) => {\r\n state.TagGroup =action.payload.data;\r\n })\r\n .addCase(action.getMonitoringTagGroup.rejected, (state, action) => {\r\n })\r\n .addCase(action.getInitMonitorings.pending, (state) => {\r\n const ml = state.MonitoringList;\r\n ml.loading = true;\r\n ml.data.list = [];\r\n ml.data.hasMore = true;\r\n })\r\n .addCase(action.getInitMonitorings.fulfilled, (state, action) => {\r\n const ml = state.MonitoringList;\r\n ml.loading = false;\r\n ml.data.list = action.payload.data;\r\n ml.data.count = { prev: action.payload.nowPage, next: 20 };\r\n ml.data.hasMore = action.payload.totalCount <= state.MonitoringList.data.list.length ? false : true;\r\n ml.data.totalCount = action.payload.totalCount;\r\n ml.data.totalPage = action.payload.totalPage;\r\n ml.data.nowPage = action.payload.nowPage;\r\n })\r\n .addCase(action.getInitMonitorings.rejected, (state, action) => {\r\n const ml = state.MonitoringList;\r\n ml.loading = false;\r\n ml.error = action.payload;\r\n ml.data.list = [];\r\n })\r\n .addCase(action.getStatusMonitorings.pending, (state) => {\r\n const ml = state.MonitoringList;\r\n ml.loading = true;\r\n ml.data.hasMore = true;\r\n })\r\n .addCase(action.getStatusMonitorings.fulfilled, (state, action) => {\r\n state.MonitoringList.loading = false;\r\n state.MonitoringList = {\r\n loading: false,\r\n data: {\r\n list: action.payload.data,\r\n count: { prev: action.payload.nowPage, next: 20 },\r\n hasMore: action.payload.totalCount <= action.payload.data.length ? false : true,\r\n totalCount: action.payload.totalCount,\r\n totalPage: action.payload.totalPage,\r\n nowPage: action.payload.nowPage,\r\n },\r\n };\r\n })\r\n .addCase(action.getStatusMonitorings.rejected, (state, action) => {\r\n const ml = state.MonitoringList;\r\n ml.loading = false;\r\n ml.error = action.payload;\r\n ml.data.list = [];\r\n })\r\n .addCase(action.getSearchMonitorings.pending, (state) => {\r\n const ml = state.MonitoringList;\r\n ml.loading = true;\r\n ml.data.hasMore = true;\r\n })\r\n .addCase(action.getSearchMonitorings.fulfilled, (state, action) => {\r\n const ml = state.MonitoringList;\r\n ml.loading = false;\r\n ml.data.list = action.payload.data;\r\n ml.data.count = { prev: action.payload.nowPage, next: 20 };\r\n ml.data.hasMore = action.payload.totalCount <= action.payload.data.length ? false : true;\r\n ml.data.totalCount = action.payload.totalCount;\r\n ml.data.totalPage = action.payload.totalPage;\r\n ml.data.nowPage = action.payload.nowPage;\r\n });\r\n },\r\n});\r\nexport const { listClear } = monitoringList.actions;\r\nexport default monitoringList.reducer;\r\n","import axios from 'axios';\r\nimport { createAsyncThunk, createSlice } from '@reduxjs/toolkit';\r\nimport { action } from './ReducerMonitoring';\r\n\r\nconst initState = {\r\n ModalLoading: false,\r\n ModalData: null,\r\n ModalError: null,\r\n TagAddModalState: false,\r\n TagDelModalState: false,\r\n TaggedServers: {\r\n data: [],\r\n loading: false,\r\n error: false,\r\n },\r\n ServersTag: {\r\n data: [],\r\n loading: false,\r\n error: false,\r\n },\r\n};\r\n\r\nexport const monitoringModalAction = {\r\n getMonitoringModal: createAsyncThunk('GET/MONITORINGMODAL', async (data, { rejectWithValue }) => {\r\n const { monitoring, ip } = data;\r\n if (monitoring == null) {\r\n return await axios\r\n .get(`${process.env.REACT_APP_REQUEST_API_URL}Monitoring?searchText=${ip}`)\r\n .then((response) => response.data.data[0])\r\n .catch((error) => {\r\n const errorPayLoad = {};\r\n errorPayLoad['message'] = error.response.data;\r\n errorPayLoad['status'] = error.response.status;\r\n return rejectWithValue(errorPayLoad);\r\n });\r\n } else {\r\n return monitoring;\r\n }\r\n }),\r\n getMonitoringTags: createAsyncThunk('GET/MONITORINGTAGS', async (data, { rejectWithValue }) => {\r\n return await axios\r\n .get(`${process.env.REACT_APP_REQUEST_API_URL}Monitoring/TaggedServers?searchText=${data}`)\r\n .then((response) => response.data.data)\r\n .catch((error) => {\r\n const errorPayLoad = {};\r\n errorPayLoad['message'] = error.response.data;\r\n errorPayLoad['status'] = error.response.status;\r\n return rejectWithValue(errorPayLoad);\r\n });\r\n }),\r\n getMonitoringServersTag: createAsyncThunk('GET/MONITORINGSERVERSTAG', async (data, { rejectWithValue }) => {\r\n return await axios\r\n .get(`${process.env.REACT_APP_REQUEST_API_URL}Monitoring/ServerTagged?searchText=${data}`)\r\n .then((response) => response.data.data)\r\n .catch((error) => {\r\n const errorPayLoad = {};\r\n errorPayLoad['message'] = error.response.data;\r\n errorPayLoad['status'] = error.response.status;\r\n return rejectWithValue(errorPayLoad);\r\n });\r\n }),\r\n setMonitoringTags: createAsyncThunk('SET/MONITORINGTAGS', async (data, { rejectWithValue, dispatch }) => {\r\n return await axios\r\n .post(`${process.env.REACT_APP_REQUEST_API_URL}Monitoring/Tags`, data)\r\n .then((response) => {\r\n if (response.data.code === 200) {\r\n dispatch(action.getInitMonitorings({ count: 20, state: '정상' }));\r\n }\r\n alert(response.data.data);\r\n })\r\n .catch((error) => {\r\n const errorPayLoad = {};\r\n errorPayLoad['message'] = error.response.data;\r\n errorPayLoad['status'] = error.response.status;\r\n return rejectWithValue(errorPayLoad);\r\n });\r\n }),\r\n setUnTag: createAsyncThunk('SET/UNTAG', async (data, { rejectWithValue, dispatch }) => {\r\n return await axios\r\n .post(`${process.env.REACT_APP_REQUEST_API_URL}Monitoring/UnServerTag`, data)\r\n .then((response) => {\r\n //dispatch(monitoringModalAction.getMonitoringTags());\r\n //dispatch(action.getInitMonitorings({count : 20,state:'정상'}));\r\n alert(response.data.data);\r\n return response;\r\n })\r\n .catch((error) => {\r\n const errorPayLoad = {};\r\n errorPayLoad['message'] = error.response.data;\r\n errorPayLoad['status'] = error.response.status;\r\n return rejectWithValue(errorPayLoad);\r\n });\r\n }),\r\n setPickTag: createAsyncThunk('SET/PICKTAG', async (data, { rejectWithValue, dispatch }) => {\r\n return await axios\r\n .post(`${process.env.REACT_APP_REQUEST_API_URL}Monitoring/PickedTag`, data)\r\n .then((response) => {\r\n //dispatch(monitoringModalAction.getMonitoringTags());\r\n //dispatch(action.getInitMonitorings({count : 20,state:'정상'}));\r\n alert(response.data.data);\r\n return response;\r\n })\r\n .catch((error) => {\r\n const errorPayLoad = {};\r\n errorPayLoad['message'] = error.response.data;\r\n errorPayLoad['status'] = error.response.status;\r\n return rejectWithValue(errorPayLoad);\r\n });\r\n }),\r\n};\r\n\r\nconst monitoringModal = createSlice({\r\n name: 'monitoringModal',\r\n initialState: initState,\r\n reducers: {\r\n monitoringModalClose: (state) => {\r\n state.ModalLoading = false;\r\n state.ModalData = null;\r\n },\r\n tagAddModalOnOff: (state) => {\r\n state.TagAddModalState = !state.TagAddModalState;\r\n },\r\n tagDelModalOnOff: (state) => {\r\n state.TagDelModalState = !state.TagDelModalState;\r\n },\r\n reset: (state) => {\r\n state.ServersTag.data = [];\r\n },\r\n },\r\n extraReducers: (builder) => {\r\n builder\r\n .addCase(monitoringModalAction.getMonitoringModal.pending, (state) => {\r\n state.ModalLoading = true;\r\n })\r\n .addCase(monitoringModalAction.getMonitoringModal.fulfilled, (state, action) => {\r\n state.ModalLoading = false;\r\n state.ModalData = action.payload;\r\n })\r\n .addCase(monitoringModalAction.getMonitoringModal.rejected, (state, action) => {\r\n state.ModalLoading = false;\r\n state.ModalError = action.payload;\r\n })\r\n .addCase(monitoringModalAction.setMonitoringTags.pending, (state) => {\r\n state.ModalLoading = true;\r\n })\r\n .addCase(monitoringModalAction.setMonitoringTags.fulfilled, (state, action) => {\r\n state.ModalLoading = false;\r\n state.TagAddModalState = false;\r\n state.ModalData = action.payload;\r\n })\r\n .addCase(monitoringModalAction.setMonitoringTags.rejected, (state, action) => {\r\n state.ModalLoading = false;\r\n state.ModalError = action.payload;\r\n })\r\n .addCase(monitoringModalAction.getMonitoringTags.pending, (state) => {\r\n state.TaggedServers.loading = true;\r\n })\r\n .addCase(monitoringModalAction.getMonitoringTags.fulfilled, (state, action) => {\r\n state.TaggedServers.loading = false;\r\n state.TaggedServers.data = action.payload;\r\n })\r\n .addCase(monitoringModalAction.getMonitoringTags.rejected, (state, action) => {\r\n state.TaggedServers.loading = false;\r\n //state.TaggedServers.error = action.payload;\r\n })\r\n .addCase(monitoringModalAction.getMonitoringServersTag.pending, (state) => {\r\n state.ServersTag.loading = true;\r\n })\r\n .addCase(monitoringModalAction.getMonitoringServersTag.fulfilled, (state, action) => {\r\n state.ServersTag.loading = false;\r\n state.ServersTag.data = action.payload;\r\n })\r\n .addCase(monitoringModalAction.getMonitoringServersTag.rejected, (state, action) => {\r\n state.ServersTag.loading = false;\r\n //state.TaggedServers.error = action.payload;\r\n });\r\n },\r\n});\r\n\r\nexport const { monitoringModalClose, tagAddModalOnOff, tagDelModalOnOff, reset } = monitoringModal.actions;\r\nexport default monitoringModal.reducer;\r\n","import { createAsyncThunk, createSlice } from '@reduxjs/toolkit';\r\nimport axios from 'axios';\r\n\r\nconst initState = {\r\n currentIssue: {\r\n issueLoading: false,\r\n issueData: null,\r\n issueError: null,\r\n },\r\n allIssue: {\r\n allIssueLoading: false,\r\n allIssueData: null,\r\n allIssueError: null,\r\n },\r\n};\r\n\r\nexport const monitoringIssueAction = {\r\n getDashBoardCurrentIssues: createAsyncThunk('GET/DASHBOARDCURRENTISSUE', async (state, { rejectWithValue }) => {\r\n return await axios\r\n .get(`${process.env.REACT_APP_REQUEST_API_URL}Monitoring/MonitoringCurruntIssue`)\r\n .then((response) => response.data.data)\r\n .catch((error) => {\r\n const errorPayLoad = {};\r\n\r\n errorPayLoad['message'] = error.response.data;\r\n errorPayLoad['status'] = error.response.status;\r\n return rejectWithValue(errorPayLoad);\r\n });\r\n }),\r\n getDashBoardAllIssues: createAsyncThunk('GET/DASHBOARDALLISSUE', async (data, { rejectWithValue }) => {\r\n return await axios\r\n .get(`${process.env.REACT_APP_REQUEST_API_URL}Monitoring/MonitoringAllIssue?page=${data}`)\r\n .then((response) => response.data)\r\n .catch((error) => {\r\n const errorPayLoad = {};\r\n\r\n errorPayLoad['message'] = error.response.data;\r\n errorPayLoad['status'] = error.response.status;\r\n return rejectWithValue(errorPayLoad);\r\n });\r\n }),\r\n};\r\n\r\nconst monitoringIssue = createSlice({\r\n name: 'monitoringIssue',\r\n initialState: initState,\r\n reducers: {},\r\n extraReducers: (builder) => {\r\n builder\r\n .addCase(monitoringIssueAction.getDashBoardCurrentIssues.pending, (state) => {\r\n state.currentIssue.issueLoading = true;\r\n })\r\n .addCase(monitoringIssueAction.getDashBoardCurrentIssues.fulfilled, (state, action) => {\r\n state.currentIssue.issueLoading =false;\r\n state.currentIssue.issueData = action.payload;\r\n state.currentIssue.issueError = null;\r\n })\r\n .addCase(monitoringIssueAction.getDashBoardCurrentIssues.rejected,(state,action)=>{\r\n state.currentIssue.issueLoading= false;\r\n state.currentIssue.issueError = action.payload;\r\n\r\n })\r\n .addCase(monitoringIssueAction.getDashBoardAllIssues.pending,(state)=>{\r\n state.allIssue.allIssueLoading = true;\r\n })\r\n .addCase(monitoringIssueAction.getDashBoardAllIssues.fulfilled,(state,action)=>{\r\n state.allIssue.allIssueLoading = false;\r\n state.allIssue.allIssueData = action.payload;\r\n state.allIssue.allIssueError = null;\r\n })\r\n .addCase(monitoringIssueAction.getDashBoardAllIssues.rejected,(state,action)=>{\r\n state.allIssue.allIssueLoading = false;\r\n state.allIssue.allIssueData = null;\r\n state.allIssue.allIssueError = action.payload;\r\n })\r\n },\r\n});\r\n\r\nexport default monitoringIssue.reducer;","import { createAsyncThunk, createSlice } from '@reduxjs/toolkit';\r\nimport axios from 'axios';\r\n\r\nconst initState = {\r\n IssueLoading: false,\r\n IssueData: null,\r\n IssueError: null,\r\n};\r\n\r\nexport const monitoringModalIssueAction = {\r\n getModalIssues: createAsyncThunk('GET/MODALISSUE', async (data, { rejectWithValue }) => {\r\n const { page, serverIdx } = data;\r\n return await axios\r\n .get(`${process.env.REACT_APP_REQUEST_API_URL}Monitoring/IssueList/${serverIdx}?page=${page}`)\r\n .then((response) => {\r\n if (response.data.code === 101) {\r\n const errorPayLoad = {};\r\n errorPayLoad['message'] = response.data.message;\r\n errorPayLoad['status'] = response.data.code;\r\n return rejectWithValue(errorPayLoad);\r\n }\r\n return response.data;\r\n })\r\n .catch((error) => {\r\n const errorPayLoad = {};\r\n errorPayLoad['message'] = error.data.message;\r\n errorPayLoad['status'] = error.data.code;\r\n return rejectWithValue(errorPayLoad);\r\n });\r\n }),\r\n};\r\n\r\nconst monitoringModalIssue = createSlice({\r\n name :'monitoringModalIssue',\r\n initialState : initState,\r\n reducers :{\r\n issueDataReset : (state) =>{\r\n state.IssueLoading =false;\r\n state.IssueData = null;\r\n state.IssueError =null;\r\n }\r\n },\r\n extraReducers : (builder) => {\r\n builder\r\n .addCase(monitoringModalIssueAction.getModalIssues.pending,(state)=>{\r\n state.IssueLoading=true;\r\n })\r\n .addCase(monitoringModalIssueAction.getModalIssues.fulfilled,(state,action)=>{\r\n state.IssueLoading =false;\r\n state.IssueData = action.payload;\r\n })\r\n .addCase(monitoringModalIssueAction.getModalIssues.rejected,(state,action)=>{\r\n state.IssueLoading = false;\r\n state.IssueError = action.payload;\r\n })\r\n }\r\n})\r\n\r\nexport const { issueDataReset } = monitoringModalIssue.actions;\r\nexport default monitoringModalIssue.reducer;\r\n","import axios from 'axios';\r\nimport { createAsyncThunk, createSlice } from '@reduxjs/toolkit';\r\n\r\nconst initState = {\r\n pannelLoading: false,\r\n pannelData: null,\r\n pannelError: null,\r\n};\r\n\r\nexport const pannelAction ={\r\n getMonitoringPannel : createAsyncThunk('GET/MONITORINGPANNEL', async (data, { rejectWithValue }) => {\r\n const url = data\r\n ?`${process.env.REACT_APP_REQUEST_API_URL}Monitoring/MonitoringPannel?hostId=${data}`\r\n :`${process.env.REACT_APP_REQUEST_API_URL}Monitoring/MonitoringPannel`\r\n\r\n return await axios\r\n .get(url)\r\n .then((Response)=>Response.data.data)\r\n .catch((error) => {\r\n const errorPayLoad = {};\r\n errorPayLoad['message'] = error.response.data;\r\n errorPayLoad['status'] = error.response.status;\r\n return rejectWithValue(errorPayLoad);\r\n });\r\n })\r\n}\r\n\r\nconst monitoringPannel = createSlice({\r\n name : 'monitoringPannel',\r\n initialState: initState,\r\n reducers : {},\r\n extraReducers : (builder) =>{\r\n builder\r\n .addCase(pannelAction.getMonitoringPannel.pending,(state)=>{\r\n state.pannelLoading = true ;\r\n })\r\n .addCase(pannelAction.getMonitoringPannel.fulfilled, (state,action)=> {\r\n state.pannelLoading = true;\r\n state.pannelData = action.payload;\r\n })\r\n .addCase(pannelAction.getMonitoringPannel.rejected , (state,action) =>{\r\n state.pannelLoading = false;\r\n state.pannelError = action.payload;\r\n })\r\n }\r\n});\r\n\r\n\r\nexport default monitoringPannel.reducer;","import axios from 'axios';\r\nimport { createAsyncThunk, createSlice } from '@reduxjs/toolkit';\r\nconst initState = {\r\n hostData: {\r\n loading: false,\r\n data: null,\r\n error: null,\r\n },\r\n portData: {\r\n loading: false,\r\n data: null,\r\n error: null,\r\n },\r\n resourceData: {\r\n loading: false,\r\n data: null,\r\n error: null,\r\n },\r\n web: {\r\n loading: false,\r\n data: null,\r\n error: null,\r\n },\r\n changeLog: {\r\n loading: false,\r\n data: null,\r\n error: null,\r\n },\r\n};\r\n\r\nexport const settingAction = {\r\n getSettings: createAsyncThunk('GET/SETTING', async (state, { rejectWithValue }) => {\r\n return await axios\r\n .get(`${process.env.REACT_APP_REQUEST_API_URL}Monitoring/SettingList`)\r\n .then((response) => response.data)\r\n .catch((error) => {});\r\n }),\r\n getPorts: createAsyncThunk('GET/PORT', async (id, { rejectWithValue }) => {\r\n return await axios\r\n .get(`${process.env.REACT_APP_REQUEST_API_URL}Monitoring/Port/${id}`)\r\n .then((response) => response.data.data)\r\n .catch((error) => {\r\n const errorPayLoad = {};\r\n errorPayLoad['message'] = error.response.data;\r\n errorPayLoad['status'] = error.response.status;\r\n return rejectWithValue(errorPayLoad);\r\n });\r\n }),\r\n getResources: createAsyncThunk('GET/RESOURCE', async (id, { rejectWithValue }) => {\r\n return await axios\r\n .get(`${process.env.REACT_APP_REQUEST_API_URL}Monitoring/Resource/${id}`)\r\n .then((response) => response.data.data)\r\n .catch((error) => {\r\n const errorPayLoad = {};\r\n errorPayLoad['message'] = error.response.data;\r\n errorPayLoad['status'] = error.response.status;\r\n return rejectWithValue(errorPayLoad);\r\n });\r\n }),\r\n getWebs: createAsyncThunk('GET/WEB', async (id, { rejectWithValue }) => {\r\n return await axios\r\n .get(`${process.env.REACT_APP_REQUEST_API_URL}Monitoring/Web/${id}`)\r\n .then((response) => response.data.data)\r\n .catch((error) => {\r\n const errorPayLoad = {};\r\n errorPayLoad['message'] = error.response.data;\r\n errorPayLoad['status'] = error.response.status;\r\n return rejectWithValue(errorPayLoad);\r\n });\r\n }),\r\n getLogs: createAsyncThunk('GET/LOG', async (data, { rejectWithValue }) => {\r\n const { hostid, page } = data;\r\n return await axios\r\n .get(`${process.env.REACT_APP_REQUEST_API_URL}Monitoring/SettingChangeLog/${hostid}?page=${page}`)\r\n .then((response) => response.data.data)\r\n .catch((error) => {\r\n const errorPayLoad = {};\r\n errorPayLoad['message'] = error.response.data;\r\n errorPayLoad['status'] = error.response.status;\r\n return rejectWithValue(errorPayLoad);\r\n });\r\n }),\r\n};\r\n\r\nconst monitoringSetting = createSlice({\r\n name: 'monitoringSetting',\r\n initialState: initState,\r\n reducers: {\r\n resourceCheckvalue: (state, action) => {\r\n state.resourceData.loading = false;\r\n state.resourceData.error = action.payload;\r\n },\r\n },\r\n extraReducers: (builder) => {\r\n builder\r\n .addCase(settingAction.getSettings.pending, (state) => {\r\n state.hostData.loading = true;\r\n state.hostData.data = null;\r\n })\r\n .addCase(settingAction.getSettings.fulfilled, (state, action) => {\r\n state.hostData.loading = false;\r\n state.hostData.data = action.payload;\r\n })\r\n .addCase(settingAction.getSettings.rejected, (state, action) => {\r\n state.hostData.loading = false;\r\n state.hostData.data = null;\r\n state.hostData.error = action.payload;\r\n })\r\n .addCase(settingAction.getPorts.pending, (state) => {\r\n state.portData.loading = true;\r\n })\r\n .addCase(settingAction.getPorts.fulfilled, (state, action) => {\r\n state.portData.loading = false;\r\n state.portData.data = action.payload;\r\n state.portData.error = null;\r\n })\r\n .addCase(settingAction.getPorts.rejected, (state, action) => {\r\n state.portData.loading = false;\r\n state.portData.data = null;\r\n state.portData.error = action.payload;\r\n })\r\n .addCase(settingAction.getResources.pending, (state) => {\r\n state.resourceData.loading = true;\r\n })\r\n .addCase(settingAction.getResources.fulfilled, (state, action) => {\r\n state.resourceData.loading = false;\r\n state.resourceData.data = action.payload;\r\n state.resourceData.error = null;\r\n })\r\n .addCase(settingAction.getResources.rejected, (state, action) => {\r\n state.resourceData.loading = false;\r\n state.resourceData.error = action.payload;\r\n state.resourceData.data = null;\r\n })\r\n .addCase(settingAction.getWebs.pending, (state) => {\r\n state.web.loading = true;\r\n })\r\n .addCase(settingAction.getWebs.fulfilled, (state, action) => {\r\n state.web.loading = false;\r\n state.web.data = action.payload;\r\n state.web.error = null;\r\n })\r\n .addCase(settingAction.getWebs.rejected, (state, action) => {\r\n state.web.loading = false;\r\n state.web.data = null;\r\n state.web.error = action.payload;\r\n })\r\n .addCase(settingAction.getLogs.pending, (state) => {\r\n state.changeLog.loading = true;\r\n })\r\n .addCase(settingAction.getLogs.fulfilled, (state, action) => {\r\n state.changeLog.loading = false;\r\n state.changeLog.data = action.payload;\r\n state.changeLog.error = null;\r\n })\r\n .addCase(settingAction.getLogs.rejected, (state, action) => {\r\n state.changeLog.loading = false;\r\n state.changeLog.error = action.payload;\r\n state.changeLog.data = null;\r\n });\r\n },\r\n});\r\n\r\nexport default monitoringSetting.reducer;\r\n","export const REPORT_DATA_REQUEST = 'REPORT_DATA_REQUEST';\r\nexport const REPORT_DATA_SUCCESS = 'REPORT_DATA_SUCCESS';\r\nexport const REPORT_DATA_ERROR = 'REPORT_DATA_ERROR';\r\n\r\nexport const NOTICE_DATA_REQUEST = 'NOTICE_DATA_REQUEST';\r\nexport const NOTICE_DATA_SUCCESS = 'NOTICE_DATA_SUCCESS';\r\nexport const NOTICE_DATA_ERROR = 'NOTICE_DATA_ERROR';\r\n\r\nexport const SEC_DATA_REQUEST = 'SEC_DATA_REQUEST';\r\nexport const SEC_DATA_SUCCESS = 'SEC_DATA_SUCCESS';\r\nexport const SEC_DATA_ERROR = 'SEC_DATA_ERROR';\r\n\r\nexport const SEC_EVENT_REQUEST = 'SEC_EVENT_REQUEST';\r\nexport const SEC_EVENT_SUCCESS = 'SEC_EVENT_SUCCESS';\r\nexport const SEC_EVENT_ERROR = 'SEC_EVENT_ERROR';\r\n\r\nexport const REPORTING_MODAL_STATE = 'REPORTING_MODAL_STATE';\r\n\r\nexport const reportingModalState = (state) => {\r\n return {\r\n type: REPORTING_MODAL_STATE,\r\n state,\r\n };\r\n};\r\n","import {\r\n REPORT_DATA_REQUEST,\r\n REPORT_DATA_SUCCESS,\r\n REPORT_DATA_ERROR,\r\n NOTICE_DATA_REQUEST,\r\n NOTICE_DATA_SUCCESS,\r\n NOTICE_DATA_ERROR,\r\n SEC_DATA_REQUEST,\r\n SEC_DATA_SUCCESS,\r\n SEC_DATA_ERROR,\r\n SEC_EVENT_REQUEST,\r\n SEC_EVENT_SUCCESS,\r\n SEC_EVENT_ERROR,\r\n REPORTING_MODAL_STATE,\r\n} from './boardType';\r\n\r\nconst initialState = {\r\n reportloading: false,\r\n reportdata: [],\r\n reportModal: false,\r\n reporterror: null,\r\n noticeloading: false,\r\n noticedata: [],\r\n noticeerror: null,\r\n securityloading: false,\r\n securitydata: [],\r\n securityerror: null,\r\n currentPage: 1,\r\n seceventloading:false,\r\n seceventdata:[],\r\n seceventerror:null,\r\n\r\n};\r\n\r\nfunction ReducerBoard(state = initialState, action) {\r\n switch (action.type) {\r\n case REPORT_DATA_REQUEST: {\r\n return {\r\n ...state,\r\n reportloading: true,\r\n };\r\n }\r\n case REPORT_DATA_SUCCESS: {\r\n return {\r\n ...state,\r\n reportloading: false,\r\n reportdata: action.payload,\r\n };\r\n }\r\n case REPORT_DATA_ERROR: {\r\n return {\r\n ...state,\r\n reportloading: false,\r\n reporterror: action.payload,\r\n };\r\n }\r\n case NOTICE_DATA_REQUEST: {\r\n return {\r\n ...state,\r\n noticeloading: true,\r\n };\r\n }\r\n case NOTICE_DATA_SUCCESS: {\r\n return {\r\n ...state,\r\n noticeloading: false,\r\n noticedata: action.payload,\r\n };\r\n }\r\n case NOTICE_DATA_ERROR: {\r\n return {\r\n ...state,\r\n noticeloading: false,\r\n noticeerror: action.payload,\r\n };\r\n }\r\n case SEC_DATA_REQUEST: {\r\n return {\r\n ...state,\r\n securityloading: true,\r\n };\r\n }\r\n case SEC_DATA_SUCCESS: {\r\n return {\r\n ...state,\r\n securityloading: false,\r\n securitydata: action.payload,\r\n };\r\n }\r\n case SEC_DATA_ERROR: {\r\n return {\r\n ...state,\r\n securityloading: false,\r\n securityerror: action.payload,\r\n };\r\n }\r\n case SEC_EVENT_REQUEST: {\r\n return {\r\n ...state,\r\n seceventloading: true,\r\n };\r\n }\r\n case SEC_EVENT_SUCCESS: {\r\n return {\r\n ...state,\r\n seceventloading: false,\r\n seceventdata: action.payload,\r\n };\r\n }\r\n case SEC_EVENT_ERROR: {\r\n return {\r\n ...state,\r\n seceventloading: false,\r\n seceventerror: action.payload,\r\n };\r\n }\r\n case REPORTING_MODAL_STATE:\r\n return {\r\n ...state,\r\n reportModal: !action.state,\r\n };\r\n default:\r\n return state;\r\n }\r\n}\r\n\r\nexport default ReducerBoard;\r\n","export const SET_DATE = 'SET_DATE';\r\nexport const SET_DATE_WEEK = 'SET_DATE_WEEK';\r\n\r\nexport const dateChange = (date) => {\r\n return {\r\n type: SET_DATE,\r\n date,\r\n };\r\n};\r\n\r\nexport const dateChangeWeek = (date) => {\r\n return {\r\n type: SET_DATE_WEEK,\r\n date,\r\n };\r\n};\r\n","import * as actionType from './ActionDatepicker';\r\nimport { addDays, addMonths, addWeeks } from 'date-fns';\r\n\r\nconst initState = {\r\n week: {\r\n startDate: addWeeks(new Date(), -1),\r\n endDate: addDays(new Date(), 0),\r\n key: 'selection',\r\n },\r\n oneDay: {\r\n startDate: addDays(new Date(), 0),\r\n endDate: addDays(new Date(), 0),\r\n key: 'selection',\r\n },\r\n};\r\n\r\nexport default function (state = initState, action) {\r\n switch (action.type) {\r\n case actionType.SET_DATE:\r\n return {\r\n ...state,\r\n oneDay: {\r\n ...state.oneDay,\r\n startDate: action.date[0].startDate,\r\n endDate: action.date[0].endDate,\r\n },\r\n };\r\n case actionType.SET_DATE_WEEK:\r\n return {\r\n ...state,\r\n week: {\r\n ...state.week,\r\n startDate: action.date[0].startDate,\r\n endDate: action.date[0].endDate,\r\n },\r\n };\r\n default:\r\n return state;\r\n }\r\n}\r\n","import axios from 'axios';\r\nimport moment from 'moment';\r\nexport const FETCH_CPU_POSTS_REQUEST = 'cpuChart/FETCH_POSTS_REQUEST';\r\nexport const FETCH_CPU_POSTS_SUCCESS = 'cpuChart/FETCH_POSTS_SUCCESS';\r\nexport const FETCH_CPU_POSTS_ERROR = 'cpuChart/FETCH_POSTS_ERROR';\r\n\r\nexport const FETCH_MEMORY_POSTS_REQUEST = 'memoryChart/FETCH_POSTS_REQUEST';\r\nexport const FETCH_MEMORY_POSTS_SUCCESS = 'memoryChart/FETCH_POSTS_SUCCESS';\r\nexport const FETCH_MEMORY_POSTS_ERROR = 'memoryChart/FETCH_POSTS_ERROR';\r\n\r\nexport const FETCH_STORAGE_POSTS_REQUEST = 'storageChart/FETCH_POSTS_REQUEST';\r\nexport const FETCH_STORAGE_POSTS_SUCCESS = 'storageChart/FETCH_POSTS_SUCCESS';\r\nexport const FETCH_STORAGE_POSTS_ERROR = 'storageChart/FETCH_POSTS_ERROR';\r\n\r\nexport const FETCH_TRAFFIC_POSTS_REQUEST = 'trafficChart/FETCH_POSTS_REQUEST';\r\nexport const FETCH_TRAFFIC_POSTS_SUCCESS = 'trafficChart/FETCH_POSTS_SUCCESS';\r\nexport const FETCH_TRAFFIC_POSTS_ERROR = 'trafficChart/FETCH_POSTS_ERROR';\r\n\r\nexport const FETCH_SECEVENT_POSTS_REQUEST = 'SecEventChart/FETCH_POSTS_REQUEST';\r\nexport const FETCH_SECEVENT_POSTS_SUCCESS = 'SecEventChart/FETCH_POSTS_SUCCESS';\r\nexport const FETCH_SECEVENT_POSTS_ERROR = 'SecEventChart/FETCH_POSTS_ERROR';\r\n\r\n\r\nconst fetchChartCpuDataRequest = () => {\r\n return {\r\n type: FETCH_CPU_POSTS_REQUEST,\r\n };\r\n};\r\n\r\nconst fetchChartCpuDataSuccess = (data) => {\r\n return {\r\n type: FETCH_CPU_POSTS_SUCCESS,\r\n payload: data,\r\n };\r\n};\r\n\r\nconst fetchChartCpuDataFailure = (error) => {\r\n return {\r\n type: FETCH_CPU_POSTS_ERROR,\r\n payload: error,\r\n };\r\n};\r\n\r\nconst fetchChartMemoryDataRequest = () => {\r\n return {\r\n type: FETCH_MEMORY_POSTS_REQUEST,\r\n };\r\n};\r\n\r\nconst fetchChartMemoryDataSuccess = (data) => {\r\n return {\r\n type: FETCH_MEMORY_POSTS_SUCCESS,\r\n payload: data,\r\n };\r\n};\r\n\r\nconst fetchChartMemoryDataFailure = (error) => {\r\n return {\r\n type: FETCH_MEMORY_POSTS_ERROR,\r\n payload: error,\r\n };\r\n};\r\n\r\nconst fetchChartStorageDataRequest = () => {\r\n return {\r\n type: FETCH_STORAGE_POSTS_REQUEST,\r\n };\r\n};\r\n\r\nconst fetchChartStorageDataSuccess = (data) => {\r\n return {\r\n type: FETCH_STORAGE_POSTS_SUCCESS,\r\n payload: data,\r\n };\r\n};\r\n\r\nconst fetchChartStorageDataFailure = (error) => {\r\n return {\r\n type: FETCH_STORAGE_POSTS_ERROR,\r\n payload: error,\r\n };\r\n};\r\n\r\nconst fetchChartTrafficDataRequest = () => {\r\n return {\r\n type: FETCH_TRAFFIC_POSTS_REQUEST,\r\n };\r\n};\r\n\r\nconst fetchChartTrafficDataSuccess = (data) => {\r\n return {\r\n type: FETCH_TRAFFIC_POSTS_SUCCESS,\r\n payload: data,\r\n };\r\n};\r\n\r\nconst fetchChartTrafficDataFailure = (error) => {\r\n return {\r\n type: FETCH_TRAFFIC_POSTS_ERROR,\r\n payload: error,\r\n };\r\n};\r\nconst fetchChartSecEventDataRequest = () => {\r\n return {\r\n type: FETCH_SECEVENT_POSTS_REQUEST,\r\n };\r\n};\r\n\r\nconst fetchChartSecEventDataSuccess = (data) => {\r\n return { \r\n type: FETCH_SECEVENT_POSTS_SUCCESS,\r\n payload: data,\r\n };\r\n};\r\n\r\nconst fetchChartSecEventDataFailure = (error) => {\r\n return {\r\n type: FETCH_SECEVENT_POSTS_ERROR,\r\n payload: error,\r\n };\r\n};\r\n\r\n\r\nexport const getCPUData = (state, hostId) => async (dispatch) => {\r\n dispatch(fetchChartCpuDataRequest());\r\n let startDate = moment(state.startDate).format('YYYY-MM-DD 00:00:00');\r\n let endDate = moment(state.endDate).format('YYYY-MM-DD 23:59:00');\r\n\r\n await axios\r\n .get(`${process.env.REACT_APP_REQUEST_API_URL}Monitoring/Cpu/${hostId}?startDate=${startDate}&endDate=${endDate}`)\r\n .then((response) => {\r\n if (response.data.code === 101) {\r\n const errorPayLoad = {};\r\n errorPayLoad['message'] = response.data.message;\r\n errorPayLoad['status'] = response.data.code;\r\n return dispatch(fetchChartCpuDataFailure(errorPayLoad));\r\n }\r\n dispatch(fetchChartCpuDataSuccess(response.data.data));\r\n })\r\n .catch((error) => {\r\n const errorPayLoad = {};\r\n\r\n errorPayLoad['message'] = error.response.data;\r\n errorPayLoad['status'] = error.response.status;\r\n dispatch(fetchChartCpuDataFailure(errorPayLoad));\r\n });\r\n};\r\n\r\nexport const getMemoryData = (state, hostId) => async (dispatch) => {\r\n dispatch(fetchChartMemoryDataRequest());\r\n let startDate = moment(state.startDate).format('YYYY-MM-DD 00:00:00');\r\n let endDate = moment(state.endDate).format('YYYY-MM-DD 23:59:00');\r\n await axios\r\n .get(`${process.env.REACT_APP_REQUEST_API_URL}Monitoring/Memory/${hostId}?startDate=${startDate}&endDate=${endDate}`)\r\n .then((response) => {\r\n if (response.data.code === 101) {\r\n const errorPayLoad = {};\r\n errorPayLoad['message'] = response.data.message;\r\n errorPayLoad['status'] = response.data.code;\r\n return dispatch(fetchChartMemoryDataFailure(errorPayLoad));\r\n }\r\n dispatch(fetchChartMemoryDataSuccess(response.data.data));\r\n })\r\n .catch((error) => {\r\n const errorPayLoad = {};\r\n errorPayLoad['message'] = error.response.data;\r\n errorPayLoad['status'] = error.response.status;\r\n dispatch(fetchChartMemoryDataFailure(errorPayLoad));\r\n });\r\n};\r\n\r\nexport const getStorageData = (state, hostId) => async (dispatch) => {\r\n dispatch(fetchChartStorageDataRequest());\r\n let startDate = moment(state.startDate).format('YYYY-MM-DD 00:00:00');\r\n let endDate = moment(state.endDate).format('YYYY-MM-DD 23:59:00');\r\n await axios\r\n .get(`${process.env.REACT_APP_REQUEST_API_URL}Monitoring/Storage/${hostId}?startDate=${startDate}&endDate=${endDate}`)\r\n .then((response) => {\r\n if (response.data.code === 101) {\r\n const errorPayLoad = {};\r\n errorPayLoad['message'] = response.data.message;\r\n errorPayLoad['status'] = response.data.code;\r\n return dispatch(fetchChartStorageDataFailure(errorPayLoad));\r\n }\r\n dispatch(fetchChartStorageDataSuccess(response.data.data));\r\n })\r\n .catch((error) => {\r\n const errorPayLoad = {};\r\n errorPayLoad['message'] = error.response.data;\r\n errorPayLoad['status'] = error.response.status;\r\n dispatch(fetchChartStorageDataFailure(errorPayLoad));\r\n });\r\n};\r\n\r\nexport const getTrafficData = (state, interfaceId) => async (dispatch) => {\r\n dispatch(fetchChartTrafficDataRequest());\r\n let startDate = moment(state.startDate).format('YYYY-MM-DD');\r\n let endDate = moment(state.endDate).format('YYYY-MM-DD');\r\n await axios\r\n .get(`${process.env.REACT_APP_REQUEST_API_URL}Traffic/FullData?serverIdxs=${interfaceId}&startDate=${startDate}&endDate=${endDate}`)\r\n .then((response) => {\r\n if (response.data.code === 101) {\r\n const errorPayLoad = {};\r\n errorPayLoad['message'] = response.data.message;\r\n errorPayLoad['status'] = response.data.code;\r\n return dispatch(fetchChartTrafficDataFailure(errorPayLoad));\r\n }\r\n dispatch(fetchChartTrafficDataSuccess(response.data.data));\r\n })\r\n .catch((error) => {\r\n const errorPayLoad = {};\r\n errorPayLoad['message'] = error.response.data;\r\n errorPayLoad['status'] = error.response.status;\r\n dispatch(fetchChartTrafficDataFailure(errorPayLoad));\r\n });\r\n};\r\n\r\nexport const getSecEventData = ( eqip, startDate, endDate, risk, ipState, ipName) => async (dispatch) => {\r\n dispatch(fetchChartSecEventDataRequest());\r\n await axios\r\n .get(`${process.env.REACT_APP_REQUEST_API_URL}SecurityEvent/FullData?startDate=${startDate}&endDate=${endDate}&eqIp=${eqip}&risk=${risk}&IPstate=${ipState}&eventName=${ipName}`)\r\n .then((response) => {\r\n if (response.data.code === 101) {\r\n const errorPayLoad = {};\r\n errorPayLoad['message'] = response.data.message;\r\n errorPayLoad['status'] = response.data.code;\r\n return dispatch(fetchChartSecEventDataFailure(errorPayLoad));\r\n }\r\n dispatch(fetchChartSecEventDataSuccess(response.data.data));\r\n })\r\n .catch((error) => {\r\n const errorPayLoad = {};\r\n errorPayLoad['message'] = error.response.data;\r\n errorPayLoad['status'] = error.response.status;\r\n dispatch(fetchChartSecEventDataFailure(errorPayLoad));\r\n });\r\n};","import * as actionType from '../chart/ActionChart';\r\nconst initState = {\r\n cpu: {\r\n chartLoading: false,\r\n chartData: null,\r\n chartError: null,\r\n },\r\n memory: {\r\n chartLoading: false,\r\n chartData: null,\r\n chartError: null,\r\n },\r\n storage: {\r\n chartLoading: false,\r\n chartData: null,\r\n chartError: null,\r\n },\r\n traffic: {\r\n chartLoading: false,\r\n chartData: null,\r\n chartError: null,\r\n },\r\n secevent: {\r\n chartLoading: false,\r\n chartData: null,\r\n chartError: null\r\n },\r\n \r\n};\r\n\r\nexport default function (state = initState, action) {\r\n switch (action.type) {\r\n case actionType.FETCH_CPU_POSTS_REQUEST:\r\n return {\r\n ...state,\r\n cpu: {\r\n ...state.cpu,\r\n chartLoading: true,\r\n chartData: null,\r\n chartError: null,\r\n },\r\n };\r\n case actionType.FETCH_CPU_POSTS_SUCCESS:\r\n return {\r\n ...state,\r\n cpu: {\r\n ...state.cpu,\r\n chartLoading: false,\r\n chartData: action.payload,\r\n chartError: null,\r\n },\r\n };\r\n case actionType.FETCH_CPU_POSTS_ERROR:\r\n return {\r\n ...state,\r\n cpu: {\r\n ...state.cpu,\r\n chartLoading: false,\r\n chartError: action.payload,\r\n chartData: null,\r\n },\r\n };\r\n case actionType.FETCH_MEMORY_POSTS_REQUEST:\r\n return {\r\n ...state,\r\n memory: {\r\n chartLoading: true,\r\n chartData: null,\r\n chartError: null,\r\n },\r\n };\r\n case actionType.FETCH_MEMORY_POSTS_SUCCESS:\r\n return {\r\n ...state,\r\n memory: {\r\n chartLoading: false,\r\n chartData: action.payload,\r\n chartError: null,\r\n },\r\n };\r\n case actionType.FETCH_MEMORY_POSTS_ERROR:\r\n return {\r\n ...state,\r\n memory: {\r\n chartLoading: false,\r\n chartError: action.payload,\r\n chartData: null,\r\n },\r\n };\r\n case actionType.FETCH_STORAGE_POSTS_REQUEST:\r\n return {\r\n ...state,\r\n storage: {\r\n chartLoading: true,\r\n chartData: null,\r\n chartError: null,\r\n },\r\n };\r\n case actionType.FETCH_STORAGE_POSTS_SUCCESS:\r\n return {\r\n ...state,\r\n storage: {\r\n chartLoading: false,\r\n chartData: action.payload,\r\n chartError: null,\r\n },\r\n };\r\n case actionType.FETCH_STORAGE_POSTS_ERROR:\r\n return {\r\n ...state,\r\n storage: {\r\n chartLoading: false,\r\n chartError: action.payload,\r\n chartData: null,\r\n },\r\n };\r\n case actionType.FETCH_TRAFFIC_POSTS_REQUEST:\r\n return {\r\n ...state,\r\n traffic: {\r\n chartLoading: true,\r\n chartError: null,\r\n chartData: null,\r\n },\r\n };\r\n case actionType.FETCH_TRAFFIC_POSTS_SUCCESS:\r\n return {\r\n ...state,\r\n traffic: {\r\n ...state.traffic,\r\n chartLoading: false,\r\n chartData: action.payload,\r\n chartError: null,\r\n },\r\n };\r\n case actionType.FETCH_TRAFFIC_POSTS_ERROR:\r\n return {\r\n ...state,\r\n traffic: {\r\n chartLoading: false,\r\n chartError: action.payload,\r\n chartData: null,\r\n },\r\n };\r\n case actionType.FETCH_SECEVENT_POSTS_REQUEST:\r\n return {\r\n ...state,\r\n secevent: {\r\n chartLoading: true,\r\n chartError: null,\r\n chartData: null,\r\n },\r\n };\r\n case actionType.FETCH_SECEVENT_POSTS_SUCCESS:\r\n return {\r\n ...state,\r\n secevent: {\r\n ...state.secevent,\r\n chartLoading: false,\r\n chartData: action.payload,\r\n chartError: null,\r\n },\r\n };\r\n case actionType.FETCH_SECEVENT_POSTS_ERROR:\r\n return {\r\n ...state,\r\n secevent: {\r\n chartLoading: false,\r\n chartError: action.payload,\r\n chartData: null,\r\n },\r\n };\r\n default:\r\n return state;\r\n }\r\n}\r\n","import axios from 'axios';\r\nexport const FETCH_RECORD_POSTS_REQUEST = 'record/FETCH_RECORD_POSTS_REQUEST';\r\nexport const FETCH_RECORD_POSTS_SUCCESS = 'record/FETCH_RECORD_POSTS_SUCCESS';\r\nexport const FETCH_RECORD_POSTS_ERROR = 'record/FETCH_RECORD_POSTS_ERROR';\r\nconst fetchRecordRequest = () => {\r\n return {\r\n type: FETCH_RECORD_POSTS_REQUEST,\r\n };\r\n};\r\n\r\nconst fetchRecordSuccess = (data) => {\r\n return {\r\n type: FETCH_RECORD_POSTS_SUCCESS,\r\n payload: data,\r\n };\r\n};\r\nconst fetchRecordFailure = (error) => {\r\n return {\r\n type: FETCH_RECORD_POSTS_ERROR,\r\n payload: error,\r\n };\r\n};\r\n\r\nexport const getRecordData = (domain) => async (dispatch) => {\r\n dispatch(fetchRecordRequest());\r\n await axios\r\n .get(`${process.env.REACT_APP_REQUEST_API_URL}DNS/Record/${domain}`)\r\n .then((response) => {\r\n if (response.data.code === 200) {\r\n return dispatch(fetchRecordSuccess(response.data.data));\r\n }\r\n const errorPayLoad = {};\r\n errorPayLoad['message'] = response.data.message;\r\n errorPayLoad['status'] = response.data.code;\r\n dispatch(fetchRecordFailure(errorPayLoad));\r\n })\r\n .catch((error) => {\r\n const errorPayLoad = {};\r\n console.log(error.response);\r\n errorPayLoad['message'] = error.response.data;\r\n errorPayLoad['status'] = error.response.status;\r\n dispatch(fetchRecordFailure(errorPayLoad));\r\n\r\n //dispatch(fetchDnsFailure(error.status));\r\n });\r\n};\r\n\r\nexport const deleteRecordData = (domain, t) => async (dispatch) => {\r\n let subDomain = domain.subDomain.length === 0 ? domain.domainName : `${domain.subDomain}.${domain.domainName}`;\r\n const data = {\r\n Action: 'delete',\r\n RecordType: domain.recordType,\r\n SubDomain: subDomain,\r\n Domain: domain.domainName,\r\n Content: domain.recordValue,\r\n Priority: domain.priority,\r\n prevContent : domain.recordValue,\r\n TTL: domain.ttl,\r\n };\r\n await axios\r\n .patch(`${process.env.REACT_APP_REQUEST_API_URL}DNS/Record`, data)\r\n .then((response) => {\r\n if (response.data.code === 200) {\r\n dispatch(getRecordData(domain.domainName.slice(0, -1)));\r\n return alert(t('삭제되었습니다'));\r\n }\r\n return alert(response.data.message);\r\n })\r\n .catch((error) => {\r\n if (error.response) {\r\n // 요청이 이루어졌으며 서버가 2xx의 범위를 벗어나는 상태 코드로 응답했습니다.\r\n console.log('response', error.response.status);\r\n console.log('response', error.response.headers);\r\n } else if (error.request) {\r\n // 요청이 이루어 졌으나 응답을 받지 못했습니다.\r\n // `error.request`는 브라우저의 XMLHttpRequest 인스턴스 또는\r\n // Node.js의 http.ClientRequest 인스턴스입니다.\r\n console.log('request', error.request);\r\n } else {\r\n // 오류를 발생시킨 요청을 설정하는 중에 문제가 발생했습니다.\r\n console.log('Error', error.message);\r\n }\r\n console.log(error.config);\r\n //dispatch(fetchDnsFailure(error.status));\r\n });\r\n};\r\n\r\nexport const modifyRecordData = (record, preRecord, t, handleModalModi) => async (dispatch) => {\r\n let subDomain = record.subDomain.length === 0 ? record.domainName : `${record.subDomain}.${record.domainName}`;\r\n const data = {\r\n Action: 'modify',\r\n RecordType: record.recordType,\r\n SubDomain: subDomain,\r\n Domain: record.domainName,\r\n Content: record.recordType === 'TXT' ? record.recordValue : record.recordValue.toLowerCase(),\r\n PrevContent: preRecord.recordValue,\r\n Priority: record.priority,\r\n TTL: record.ttl,\r\n };\r\n await axios\r\n .patch(`${process.env.REACT_APP_REQUEST_API_URL}DNS/Record`, data)\r\n .then((response) => {\r\n if (response.data.code === 200) {\r\n dispatch(getRecordData(record.domainName.slice(0, -1)));\r\n dispatch(handleModalModi);\r\n return alert(t('수정되었습니다'));\r\n }\r\n return alert(response.data.message);\r\n })\r\n .catch((error) => {\r\n if (error.response) {\r\n // 요청이 이루어졌으며 서버가 2xx의 범위를 벗어나는 상태 코드로 응답했습니다.\r\n console.log('response', error.response.status);\r\n console.log('response', error.response.headers);\r\n } else if (error.request) {\r\n // 요청이 이루어 졌으나 응답을 받지 못했습니다.\r\n // `error.request`는 브라우저의 XMLHttpRequest 인스턴스 또는\r\n // Node.js의 http.ClientRequest 인스턴스입니다.\r\n console.log('request', error.request);\r\n } else {\r\n // 오류를 발생시킨 요청을 설정하는 중에 문제가 발생했습니다.\r\n console.log('Error', error.message);\r\n }\r\n console.log(error.config);\r\n //dispatch(fetchDnsFailure(error.status));\r\n });\r\n};\r\n\r\nexport const setDnsRecord = (recordParameter, domainState, t) => async (dispatch) => {\r\n let subDomain = recordParameter.data.SubDomain.length === 0 ? domainState : recordParameter.data.SubDomain + '.' + domainState;\r\n const record = {\r\n ...recordParameter.data,\r\n Content: recordParameter.data.RecordType.value === 'TXT' ? recordParameter.data.Content : recordParameter.data.Content.toLowerCase(),\r\n SubDomain: subDomain,\r\n RecordType: recordParameter.data.RecordType.value,\r\n };\r\n await axios\r\n .post(`${process.env.REACT_APP_REQUEST_API_URL}DNS/Record`, record)\r\n .then((response) => {\r\n if (response.data.code === 200) {\r\n dispatch(getRecordData(domainState));\r\n return alert(t('등록되었습니다'));\r\n }\r\n return alert(response.data.message);\r\n })\r\n .catch((error) => {\r\n if (error.response) {\r\n // 요청이 이루어졌으며 서버가 2xx의 범위를 벗어나는 상태 코드로 응답했습니다.\r\n console.log('response', error.response.status);\r\n console.log('response', error.response.headers);\r\n } else if (error.request) {\r\n // 요청이 이루어 졌으나 응답을 받지 못했습니다.\r\n // `error.request`는 브라우저의 XMLHttpRequest 인스턴스 또는\r\n // Node.js의 http.ClientRequest 인스턴스입니다.\r\n console.log('request', error.request);\r\n } else {\r\n // 오류를 발생시킨 요청을 설정하는 중에 문제가 발생했습니다.\r\n console.log('Error', error.message);\r\n }\r\n console.log(error.config);\r\n //dispatch(fetchDnsFailure(error.status));\r\n });\r\n};\r\n","import axios from 'axios';\r\nimport { getRecordData } from './ActionRecord';\r\nexport const FETCH_POSTS_REQUEST = 'dns/FETCH_POSTS_REQUEST';\r\nexport const FETCH_POSTS_SUCCESS = 'dns/FETCH_POSTS_SUCCESS';\r\nexport const FETCH_POSTS_ERROR = 'dns/FETCH_POSTS_ERROR';\r\n\r\nexport const DOMAIN_ADD_MODAL = 'dns/DOMAIN_ADD_MODAL';\r\n\r\nexport const DOMAIN_DELETE_MODAL = 'dns/DOMAIN_DELETE_MODAL';\r\n\r\nexport const FETCH_DOMAIN_DELETE_REQUEST = 'dns/FETCH_DOMAIN_DELETE_REQUEST';\r\n\r\nexport const FETCH_POSTS_SUCCESS_ADD = 'dns/FETCH_POSTS_SUCCESS_ADD';\r\n\r\nconst fetchDnsRequest = () => {\r\n return {\r\n type: FETCH_POSTS_REQUEST,\r\n };\r\n};\r\n\r\nconst fetchDnsSuccess = (data) => {\r\n return {\r\n type: FETCH_POSTS_SUCCESS,\r\n payload: data,\r\n };\r\n};\r\nconst fetchDnsFailure = (error) => {\r\n return {\r\n type: FETCH_POSTS_ERROR,\r\n payload: error,\r\n };\r\n};\r\n\r\nexport const domainAdd = (state) => {\r\n return {\r\n type: DOMAIN_ADD_MODAL,\r\n state,\r\n };\r\n};\r\n\r\nexport const domainDelete = (state, domain) => {\r\n return {\r\n type: DOMAIN_DELETE_MODAL,\r\n state,\r\n };\r\n};\r\n\r\nconst fetchDnsDeleteRequest = () => {\r\n return {\r\n type: FETCH_DOMAIN_DELETE_REQUEST,\r\n };\r\n};\r\n\r\nexport const getDnsData = (setDomainState, state, searchText) => async (dispatch) => {\r\n dispatch(fetchDnsRequest());\r\n await axios\r\n .get(`${process.env.REACT_APP_REQUEST_API_URL}DNS?searchText=${searchText}`)\r\n .then((response) => {\r\n dispatch(fetchDnsSuccess(response.data));\r\n if (response.data.data.length !== 0 && state) {\r\n setDomainState(response.data.data[0].domainName);\r\n dispatch(getRecordData(response.data.data[0].domainName));\r\n }\r\n })\r\n .catch((error) => {\r\n if (error.response) {\r\n // 요청이 이루어졌으며 서버가 2xx의 범위를 벗어나는 상태 코드로 응답했습니다.\r\n console.log('response', error.response.status);\r\n console.log('response', error.response.headers);\r\n } else if (error.request) {\r\n // 요청이 이루어 졌으나 응답을 받지 못했습니다.\r\n // `error.request`는 브라우저의 XMLHttpRequest 인스턴스 또는\r\n // Node.js의 http.ClientRequest 인스턴스입니다.\r\n console.log('request', error.request);\r\n } else {\r\n // 오류를 발생시킨 요청을 설정하는 중에 문제가 발생했습니다.\r\n console.log('Error', error.message);\r\n }\r\n //console.log(error.config);\r\n //dispatch(fetchDnsFailure(error.status));\r\n });\r\n};\r\n\r\nexport const setDomain = (domain, t, setDomainState) => async (dispatch) => {\r\n await axios\r\n .post(`${process.env.REACT_APP_REQUEST_API_URL}DNS/Domain`, domain.data)\r\n .then((response) => {\r\n if (response.data.code === 200) {\r\n dispatch(getDnsData(setDomainState, false));\r\n setDomainState(domain.data.domain);\r\n dispatch(domainAdd(true));\r\n dispatch(getRecordData(domain.data.domain));\r\n return alert(t('등록되었습니다'));\r\n }\r\n return alert(response.data.message);\r\n })\r\n .catch((error) => {\r\n if (error.response) {\r\n // 요청이 이루어졌으며 서버가 2xx의 범위를 벗어나는 상태 코드로 응답했습니다.\r\n console.log('response', error.response.status);\r\n console.log('response', error.response.headers);\r\n } else if (error.request) {\r\n // 요청이 이루어 졌으나 응답을 받지 못했습니다.\r\n // `error.request`는 브라우저의 XMLHttpRequest 인스턴스 또는\r\n // Node.js의 http.ClientRequest 인스턴스입니다.\r\n console.log('request', error.request);\r\n } else {\r\n // 오류를 발생시킨 요청을 설정하는 중에 문제가 발생했습니다.\r\n console.log('Error', error.message);\r\n }\r\n console.log(error.config);\r\n //dispatch(fetchDnsFailure(error.status));\r\n });\r\n};\r\n\r\nexport const deleteDomain = (domainName, t, setDomainState) => async (dispatch) => {\r\n await axios\r\n .delete(`${process.env.REACT_APP_REQUEST_API_URL}DNS/Domain/${domainName}`)\r\n .then((response) => {\r\n if (response.data.code === 200) {\r\n dispatch(getDnsData(setDomainState, false));\r\n setDomainState(null);\r\n dispatch(domainDelete(true));\r\n return alert(t('삭제되었습니다'));\r\n }\r\n return alert(response.data.message);\r\n })\r\n .catch((error) => {\r\n if (error.response) {\r\n // 요청이 이루어졌으며 서버가 2xx의 범위를 벗어나는 상태 코드로 응답했습니다.\r\n console.log('response', error.response.status);\r\n console.log('response', error.response.headers);\r\n } else if (error.request) {\r\n // 요청이 이루어 졌으나 응답을 받지 못했습니다.\r\n // `error.request`는 브라우저의 XMLHttpRequest 인스턴스 또는\r\n // Node.js의 http.ClientRequest 인스턴스입니다.\r\n console.log('request', error.request);\r\n } else {\r\n // 오류를 발생시킨 요청을 설정하는 중에 문제가 발생했습니다.\r\n console.log('Error', error.message);\r\n }\r\n console.log(error.config);\r\n });\r\n};\r\n\r\n// export const getDomainSearchData = (domainName) => async (dispatch) => {\r\n// dispatch(fetchDnsRequest());\r\n// await axios\r\n// .get(`${process.env.REACT_APP_REQUEST_API_URL}DNS/2405?searchText=${domainName}`)\r\n// .then((response) => {\r\n// dispatch(fetchDnsSuccess(response.data.data));\r\n// })\r\n// .catch((error) => {\r\n// dispatch(fetchDnsFailure(error.status));\r\n// });\r\n// };\r\n","import * as actionType from './ActionNameServer';\r\n\r\nconst initState = {\r\n DnsLoading: false,\r\n DnsData: null,\r\n DnsError: null,\r\n DomainAdd: false,\r\n DomainDelete: false,\r\n};\r\n\r\nexport default function (state = initState, action) {\r\n switch (action.type) {\r\n case actionType.FETCH_POSTS_REQUEST:\r\n return {\r\n ...state,\r\n DnsLoading: true,\r\n DnsData: null,\r\n DnsError: null,\r\n };\r\n case actionType.FETCH_POSTS_SUCCESS:\r\n return {\r\n ...state,\r\n DnsLoading: false,\r\n DnsData: action.payload,\r\n DnsError: null,\r\n };\r\n case actionType.FETCH_POSTS_ERROR:\r\n return {\r\n ...state,\r\n DnsLoading: false,\r\n DnsError: action.payload,\r\n DnsData: null,\r\n };\r\n case actionType.DOMAIN_ADD_MODAL:\r\n return {\r\n ...state,\r\n DomainAdd: !action.state,\r\n };\r\n case actionType.DOMAIN_DELETE_MODAL:\r\n return {\r\n ...state,\r\n DomainDelete: !action.state,\r\n };\r\n default:\r\n return state;\r\n }\r\n}\r\n","export const RECORD_DATE_SET = 'RECORD_DATA_SET';\r\nexport const RECORD_DATE_CLEAR = 'RECORD_DATA_CLEAR';\r\nexport const FETCH_POSTS_REQUEST = 'record/FETCH_POSTS_REQUEST';\r\nexport const FETCH_POSTS_SUCCESS = 'record/FETCH_POSTS_SUCCESS';\r\nexport const FETCH_POSTS_ERROR = 'record/FETCH_POSTS_ERROR';\r\n\r\nconst fetchRecordRequest = () => {\r\n return {\r\n type: FETCH_POSTS_REQUEST,\r\n };\r\n};\r\n\r\nconst fetchRecordSuccess = (data) => {\r\n return {\r\n type: FETCH_POSTS_SUCCESS,\r\n payload: data,\r\n };\r\n};\r\n\r\nconst fetchRecordFailure = (error) => {\r\n return {\r\n type: FETCH_POSTS_ERROR,\r\n payload: error,\r\n };\r\n};\r\n\r\nexport const recordModalDataSet = (record) => {\r\n return {\r\n type: RECORD_DATE_SET,\r\n record,\r\n };\r\n};\r\n\r\nexport const recordModalDataClear = () => {\r\n return {\r\n type: RECORD_DATE_CLEAR,\r\n };\r\n};\r\n\r\nexport const getRecords = () => async (dispatch) => {\r\n dispatch(fetchRecordRequest());\r\n try {\r\n const response = ''; //await DnsAPI.getDnsData(id);\r\n dispatch(fetchRecordSuccess(response));\r\n } catch (e) {\r\n dispatch(fetchRecordFailure(e));\r\n }\r\n};\r\n","import * as actionType from './ActionRecordSetting';\r\n\r\nconst initState = {\r\n display: false,\r\n record: {},\r\n};\r\n\r\nexport default function (state = initState, action) {\r\n switch (action.type) {\r\n case actionType.RECORD_DATE_SET:\r\n return {\r\n ...state,\r\n display: true,\r\n record: action.record,\r\n };\r\n case actionType.RECORD_DATE_CLEAR:\r\n return {\r\n ...state,\r\n display: false,\r\n record: {},\r\n };\r\n default:\r\n return state;\r\n }\r\n}\r\n","export const INQUIRY_LIST_REQUEST = 'INQUIRY_LIST_REQUEST';\r\nexport const INQUIRY_LIST_SUCCESS = 'INQUIRY_LIST_SUCCESS';\r\nexport const INQUIRY_LIST_ERROR = 'INQUIRY_LIST_ERROR';\r\n\r\nexport const INQUIRY_DETAIL_REQUEST = 'INQUIRY_DETAIL_REQUEST';\r\nexport const INQUIRY_DETAIL_SUCCESS = 'INQUIRY_DETAIL_SUCCESS';\r\nexport const INQUIRY_DETAIL_ERROR = 'INQUIRY_DETAIL_ERROR';\r\n\r\nexport const INQUIRY_OPEN_MODAL = 'INQUIRY_OPEN_MODAL';\r\nexport const INQUIRY_SEND_MODAL = 'INQUIRY_SEND_MODAL';\r\n\r\nexport const IP_ADDRESS_REQUEST = 'IP_ADDRESS_REQUEST';\r\nexport const IP_ADDRESS_SUCCESS = 'IP_ADDRESS_SUCCESS';\r\nexport const IP_ADDRESS_ERROR = 'IP_ADDRESS_ERROR';\r\n\r\nexport const SUPPORT_SET_REQUEST = 'SUPPORT_SET_REQUEST';\r\nexport const SUPPORT_SET_SUCCESS = 'SUPPORT_SET_SUCCESS';\r\nexport const SUPPORT_SET_ERROR = 'SUPPORT_SET_ERROR';\r\n\r\nexport const WORK_GET_REQUEST = 'WORK_GET_REQUEST';\r\nexport const WORK_GET_SUCCESS = 'WORK_GET_SUCCESS';\r\nexport const WORK_GET_ERROR = 'WORK_GET_ERROR';\r\n\r\nexport const WORK_SET_REQUEST = 'WORK_SET_REQUEST';\r\nexport const WORK_SET_SUCCESS = 'WORK_SET_SUCCESS';\r\nexport const WORK_SET_ERROR = 'WORK_SET_ERROR';\r\n\r\nexport const WORK_DETAIL_REQUEST = 'WORK_DETAIL_REQUEST';\r\nexport const WORK_DETAIL_SUCCESS = 'WORK_DETAIL_SUCCESS';\r\nexport const WORK_DETAIL_ERROR = 'WORK_DETAIL_ERROR';\r\n\r\nexport const WORK_REQUEST_MODAL = 'WORK_REQUEST_MODAL';\r\nexport const MODAL_INDEX_DATA = 'MODAL_INDEX_DATA';\r\n\r\nexport const VISITRESERVATIONS_REQUEST = 'VISITRESERVATIONS_REQUEST';\r\nexport const VISITRESERVATIONS_SUCCESS = 'VISITRESERVATIONS_SUCCESS';\r\nexport const VISITRESERVATIONS_ERROR = 'VISITRESERVATIONS_ERROR';\r\n\r\nexport const ADMIN_INFO_REQUEST = 'ADMIN_INFO_REQUEST';\r\nexport const ADMIN_INFO_SUCCESS = 'ADMIN_INFO_SUCCESS';\r\nexport const ADMIN_INFO_ERROR = 'ADMIN_INFO_ERROR';\r\n","import {\r\n SUPPORT_SET_REQUEST,\r\n SUPPORT_SET_SUCCESS,\r\n SUPPORT_SET_ERROR,\r\n IP_ADDRESS_REQUEST,\r\n IP_ADDRESS_SUCCESS,\r\n IP_ADDRESS_ERROR,\r\n WORK_GET_REQUEST,\r\n WORK_GET_SUCCESS,\r\n WORK_GET_ERROR,\r\n WORK_SET_REQUEST,\r\n WORK_SET_SUCCESS,\r\n WORK_SET_ERROR,\r\n WORK_DETAIL_REQUEST,\r\n WORK_DETAIL_SUCCESS,\r\n WORK_DETAIL_ERROR,\r\n WORK_REQUEST_MODAL,\r\n MODAL_INDEX_DATA,\r\n VISITRESERVATIONS_REQUEST,\r\n VISITRESERVATIONS_SUCCESS,\r\n VISITRESERVATIONS_ERROR,\r\n} from './SupportType';\r\n\r\nconst initState = {\r\n supportLoading: false,\r\n supportData: [],\r\n supportError: null,\r\n workLoading: false,\r\n workData: [],\r\n workError: null,\r\n setSuccessInquiryData: null,\r\n setSuccessData: null,\r\n workDetailLoading: false,\r\n workDetailData: null,\r\n workDetailError: null,\r\n workModal: false,\r\n workIdx: null,\r\n visitReservationsLoading: false,\r\n visitReservationsData: null,\r\n visitReservationsError: null,\r\n};\r\n\r\nexport default function (state = initState, action) {\r\n switch (action.type) {\r\n case SUPPORT_SET_REQUEST:\r\n return {\r\n ...state,\r\n supportLoading: true,\r\n };\r\n case SUPPORT_SET_SUCCESS:\r\n return {\r\n ...state,\r\n supportLoading: false,\r\n setSuccessInquiryData: action.payload,\r\n };\r\n case SUPPORT_SET_ERROR:\r\n return {\r\n ...state,\r\n supportLoading: false,\r\n supportError: action.payload,\r\n };\r\n case IP_ADDRESS_REQUEST:\r\n return {\r\n ...state,\r\n supportLoading: true,\r\n };\r\n case IP_ADDRESS_SUCCESS:\r\n return {\r\n ...state,\r\n supportLoading: false,\r\n supportData: action.payload,\r\n };\r\n case IP_ADDRESS_ERROR:\r\n return {\r\n ...state,\r\n supportLoading: false,\r\n supportError: action.payload,\r\n };\r\n case WORK_GET_REQUEST:\r\n return {\r\n ...state,\r\n workLoading: true,\r\n };\r\n case WORK_GET_SUCCESS:\r\n return {\r\n ...state,\r\n workLoading: false,\r\n workData: action.payload,\r\n };\r\n case WORK_GET_ERROR:\r\n return {\r\n ...state,\r\n workLoading: false,\r\n workError: action.payload,\r\n };\r\n case WORK_SET_REQUEST:\r\n return {\r\n ...state,\r\n workLoading: true,\r\n };\r\n case WORK_SET_SUCCESS:\r\n return {\r\n ...state,\r\n workLoading: false,\r\n setSuccessData: action.payload,\r\n };\r\n case WORK_SET_ERROR:\r\n return {\r\n ...state,\r\n workLoading: false,\r\n workError: action.payload,\r\n };\r\n case WORK_DETAIL_REQUEST:\r\n return {\r\n ...state,\r\n workDetailLoading: true,\r\n };\r\n case WORK_DETAIL_SUCCESS:\r\n return {\r\n ...state,\r\n workDetailLoading: false,\r\n workDetailData: action.payload,\r\n };\r\n case WORK_DETAIL_ERROR:\r\n return {\r\n ...state,\r\n workDetailLoading: false,\r\n workDetailData: action.payload,\r\n };\r\n case WORK_REQUEST_MODAL:\r\n return {\r\n ...state,\r\n workModal: !action.state,\r\n workIdx: action.id,\r\n };\r\n case MODAL_INDEX_DATA:\r\n return {\r\n ...state,\r\n workIdx: action.state,\r\n };\r\n case VISITRESERVATIONS_REQUEST:\r\n return {\r\n ...state,\r\n visitReservationsLoading: true,\r\n };\r\n case VISITRESERVATIONS_SUCCESS:\r\n return {\r\n ...state,\r\n visitReservationsLoading: false,\r\n visitReservationsData: action.payload,\r\n };\r\n case VISITRESERVATIONS_ERROR:\r\n return {\r\n ...state,\r\n visitReservationsLoading: false,\r\n visitReservationsError: action.payload,\r\n };\r\n default:\r\n return state;\r\n }\r\n}\r\n","import {\r\n INQUIRY_LIST_REQUEST,\r\n INQUIRY_LIST_SUCCESS,\r\n INQUIRY_LIST_ERROR,\r\n INQUIRY_DETAIL_REQUEST,\r\n INQUIRY_DETAIL_SUCCESS,\r\n INQUIRY_DETAIL_ERROR,\r\n ADMIN_INFO_REQUEST,\r\n ADMIN_INFO_SUCCESS,\r\n ADMIN_INFO_ERROR,\r\n} from './SupportType';\r\n\r\nconst initState = {\r\n inquiryLoading: false,\r\n inquiryData: [],\r\n inquiryError: null,\r\n detailLoading: false,\r\n detailData: [],\r\n detailError: null,\r\n adminInfoLoading: false,\r\n adminInfoData: null,\r\n adminInfoError: null,\r\n};\r\n\r\nexport default function (state = initState, action) {\r\n switch (action.type) {\r\n case INQUIRY_LIST_REQUEST:\r\n return {\r\n ...state,\r\n inquiryLoading: true,\r\n };\r\n case INQUIRY_LIST_SUCCESS:\r\n return {\r\n ...state,\r\n inquiryLoading: false,\r\n inquiryData: action.payload,\r\n };\r\n case INQUIRY_LIST_ERROR:\r\n return {\r\n ...state,\r\n inquiryLoading: false,\r\n inquiryError: action.payload,\r\n };\r\n case INQUIRY_DETAIL_REQUEST:\r\n return {\r\n ...state,\r\n detailLoading: true,\r\n };\r\n case INQUIRY_DETAIL_SUCCESS:\r\n return {\r\n ...state,\r\n detailLoading: false,\r\n detailData: action.payload,\r\n };\r\n case INQUIRY_DETAIL_ERROR:\r\n return {\r\n ...state,\r\n detailLoading: false,\r\n detailError: action.payload,\r\n };\r\n\r\n case ADMIN_INFO_REQUEST:\r\n return {\r\n ...state,\r\n adminInfoLoading: true,\r\n };\r\n case ADMIN_INFO_SUCCESS:\r\n return {\r\n ...state,\r\n adminInfoLoading: false,\r\n adminInfoData: action.payload,\r\n };\r\n case ADMIN_INFO_ERROR:\r\n return {\r\n ...state,\r\n adminInfoLoading: false,\r\n adminInfoData: action.payload,\r\n };\r\n default:\r\n return state;\r\n }\r\n}\r\n","import { createAsyncThunk, createSlice } from '@reduxjs/toolkit';\r\nimport axios from 'axios';\r\n\r\nconst initState = {\r\n web: {\r\n webLoading: false,\r\n webData: null,\r\n webError: null,\r\n },\r\n port: {\r\n portLoading: false,\r\n portData: null,\r\n portError: null,\r\n },\r\n};\r\n\r\nexport const monitoringModalDataAction = {\r\n getWeb: createAsyncThunk('GET/MONITORINGMODALWEB', async (id, { rejectWithValue }) => {\r\n return await axios\r\n .get(`${process.env.REACT_APP_REQUEST_API_URL}Monitoring/MonitoringWeb?hostid=${id}`)\r\n .then((response) => response.data.data)\r\n .catch((error) => {\r\n const errorPayLoad = {};\r\n errorPayLoad['message'] = error.response.data;\r\n errorPayLoad['status'] = error.response.status;\r\n return rejectWithValue(errorPayLoad);\r\n });\r\n }),\r\n getPort: createAsyncThunk('GET/MONITORINGMODALPORT', async (id, { rejectWithValue }) => {\r\n return await axios\r\n .get(`${process.env.REACT_APP_REQUEST_API_URL}Monitoring/MonitoringPort?hostid=${id}`)\r\n .then((response) => response.data.data)\r\n .catch((error) => {\r\n const errorPayLoad = {};\r\n errorPayLoad['message'] = error.response.data;\r\n errorPayLoad['status'] = error.response.status;\r\n return rejectWithValue(errorPayLoad);\r\n });\r\n }),\r\n};\r\nconst monitoringModalData = createSlice({\r\n name: 'monitoringModalData',\r\n initialState: initState,\r\n reducers: {},\r\n extraReducers: (builder) => {\r\n builder\r\n .addCase(monitoringModalDataAction.getWeb.pending, (state) => {\r\n state.web.webLoading = true;\r\n state.web.webData = null;\r\n state.web.webError = null;\r\n })\r\n .addCase(monitoringModalDataAction.getWeb.fulfilled, (state, action) => {\r\n state.web.webLoading = false;\r\n state.web.webData = action.payload;\r\n state.web.webError = null;\r\n })\r\n .addCase(monitoringModalDataAction.getWeb.rejected, (state, action) => {\r\n state.web.webLoading = false;\r\n state.web.webData = null;\r\n state.web.webError = action.payload;\r\n })\r\n .addCase(monitoringModalDataAction.getPort.pending, (state) => {\r\n state.port.portLoading = true;\r\n state.port.portData = null;\r\n state.port.portError = null;\r\n })\r\n .addCase(monitoringModalDataAction.getPort.fulfilled, (state, action) => {\r\n state.port.portLoading = false;\r\n state.port.portData = action.payload;\r\n state.port.portError = null;\r\n })\r\n .addCase(monitoringModalDataAction.getPort.rejected, (state, action) => {\r\n state.port.portLoading = false;\r\n state.port.portData = null;\r\n state.port.portError = action.payload;\r\n });\r\n },\r\n});\r\nexport default monitoringModalData.reducer;\r\n","export const PORT_MODAL_STATE = 'portModal/PORT_MODAL_STATE';\r\nexport const RESOURCE_MODAL_STATE = 'resourceModal/PORT_MODAL_STATE';\r\nexport const WEB_MODAL_STATE = 'webModal/WEB_MODAL_STATE';\r\nexport const WEB_HOST_MODAL_STATE = 'webModal/WEB_HOST_MODAL_STATE';\r\nexport const DOC_MODAL_STATE = 'docModal/DOC_MODAL_STATE';\r\n\r\n\r\nexport const portModalState = (state) => {\r\n return {\r\n type: PORT_MODAL_STATE,\r\n state,\r\n };\r\n};\r\n\r\nexport const resourceModalState = (state) => {\r\n return {\r\n type: RESOURCE_MODAL_STATE,\r\n state,\r\n };\r\n};\r\n\r\nexport const webModalState = (state) => {\r\n return {\r\n type: WEB_MODAL_STATE,\r\n state,\r\n };\r\n};\r\n\r\nexport const webHostModalState = (data) => {\r\n return {\r\n type: WEB_HOST_MODAL_STATE,\r\n data,\r\n };\r\n};\r\n\r\nexport const docModalState = (state) => {\r\n return {\r\n type: DOC_MODAL_STATE,\r\n state,\r\n };\r\n};","import * as actionType from './ActionModalState';\r\n\r\nconst initState = {\r\n portState: false,\r\n resoureState: false,\r\n webState: false,\r\n host: null,\r\n docState : false,\r\n};\r\n\r\nexport default function (state = initState, action) {\r\n switch (action.type) {\r\n case actionType.PORT_MODAL_STATE:\r\n return {\r\n ...state,\r\n portState: !action.state,\r\n };\r\n case actionType.RESOURCE_MODAL_STATE:\r\n return {\r\n ...state,\r\n resoureState: !action.state,\r\n };\r\n case actionType.WEB_MODAL_STATE:\r\n return {\r\n ...state,\r\n webState: !action.state,\r\n };\r\n case actionType.WEB_HOST_MODAL_STATE:\r\n return {\r\n ...state,\r\n host: action.data,\r\n };\r\n case actionType.DOC_MODAL_STATE:\r\n return {\r\n ...state,\r\n docState: !action.state,\r\n };\r\n default:\r\n return state;\r\n }\r\n}\r\n","import axios from 'axios';\r\nimport { createAsyncThunk, createSlice } from '@reduxjs/toolkit';\r\n\r\nconst initState = {\r\n tagLoading: false,\r\n tagData: null,\r\n tagError: null,\r\n};\r\n\r\nexport const action = {\r\n getTag: createAsyncThunk('GET/TAG', async (hostId, { rejectWithValue }) => {\r\n return await axios\r\n .get(`${process.env.REACT_APP_REQUEST_API_URL}Monitoring/Tag/${hostId}`)\r\n .then((response) => response.data.data)\r\n .catch((error) => {\r\n const errorPayLoad = {};\r\n errorPayLoad['message'] = error.response.data;\r\n errorPayLoad['status'] = error.response.status;\r\n return rejectWithValue(errorPayLoad);\r\n });\r\n }),\r\n deleteTag: createAsyncThunk('DELETE/TAG', async (hostId, thunkAPI) => {\r\n return await axios\r\n .delete(`${process.env.REACT_APP_REQUEST_API_URL}Monitoring/Tag/${hostId}`)\r\n .then((response) => {\r\n if (response.data.code === 200) {\r\n thunkAPI.dispatch(action.getTag(hostId));\r\n return alert('삭제되었습니다.');\r\n }\r\n return alert(response.data.data);\r\n })\r\n .catch((error) => {\r\n const errorPayLoad = {};\r\n errorPayLoad['message'] = error.response.data;\r\n errorPayLoad['status'] = error.response.status;\r\n return alert('오류가 발생했습니다.' + error.response.data);\r\n });\r\n }),\r\n};\r\n\r\nconst tag = createSlice({\r\n name: 'tag',\r\n initialState: initState,\r\n reducers: {},\r\n extraReducers: (builder) => {\r\n builder\r\n .addCase(action.getTag.pending, (state) => {\r\n state.tagLoading = true;\r\n })\r\n .addCase(action.getTag.fulfilled, (state, action) => {\r\n state.tagLoading = false;\r\n state.tagData = action.payload;\r\n state.tagError = null;\r\n })\r\n .addCase(action.getTag.rejected, (state, action) => {\r\n state.tagLoading = false;\r\n state.tagError = action.payload;\r\n })\r\n .addCase(action.deleteTag.pending, (state) => {\r\n state.tagLoading = true;\r\n })\r\n .addCase(action.deleteTag.fulfilled, (state, action) => {\r\n state.tagLoading = false;\r\n })\r\n .addCase(action.deleteTag.rejected, (state, action) => {\r\n state.tagLoading = false;\r\n });\r\n },\r\n});\r\n\r\nexport default tag.reducer;\r\n","import { createAsyncThunk, createSlice } from '@reduxjs/toolkit';\r\nimport axios from 'axios';\r\nconst initState = {\r\n portScanData: {\r\n loading: false,\r\n data: null,\r\n error: null,\r\n },\r\n resourceScanData: {\r\n loading: false,\r\n data: null,\r\n error: null,\r\n },\r\n webScanData: {\r\n loading: false,\r\n data: null,\r\n error: null,\r\n },\r\n};\r\n\r\nexport const scanAction = {\r\n getPortScan: createAsyncThunk('GET/PORTSCAN', async (hostId, { rejectWithValue }) => {\r\n return await axios\r\n .get(`${process.env.REACT_APP_REQUEST_API_URL}Monitoring/PortScan/${hostId}`)\r\n .then((response) => response.data.data)\r\n .catch((error) => {\r\n const errorPayLoad = {};\r\n errorPayLoad['message'] = error.response.data;\r\n errorPayLoad['status'] = error.response.status;\r\n return rejectWithValue(errorPayLoad);\r\n });\r\n }),\r\n getSinglePortScan: createAsyncThunk('GET/SINGLEPORTSCAN', async (data, { rejectWithValue }) => {\r\n const { hostId, port } = data;\r\n return await axios\r\n .get(`${process.env.REACT_APP_REQUEST_API_URL}Monitoring/SinglePortScan/${hostId}?port=${port}`)\r\n .then((response) => response.data.data)\r\n .catch((error) => {\r\n const errorPayLoad = {};\r\n errorPayLoad['message'] = error.response.data;\r\n errorPayLoad['status'] = error.response.status;\r\n return rejectWithValue(errorPayLoad);\r\n });\r\n }),\r\n getResourceScan: createAsyncThunk('GET/RESOURCESCAN', async (hostId, { rejectWithValue }) => {\r\n return await axios\r\n .get(`${process.env.REACT_APP_REQUEST_API_URL}Monitoring/ResourceScan/${hostId}`)\r\n .then((response) => response.data.data)\r\n .catch((error) => {\r\n const errorPayLoad = {};\r\n errorPayLoad['message'] = error.response.data;\r\n errorPayLoad['status'] = error.response.status;\r\n return rejectWithValue(errorPayLoad);\r\n });\r\n }),\r\n getWebScan: createAsyncThunk('GET/WEBSCAN', async (data, { rejectWithValue }) => {\r\n const { host, value, t } = data;\r\n let ip = host.hostName.split('_')[0];\r\n return await axios\r\n .get(`${process.env.REACT_APP_REQUEST_API_URL}Monitoring/WebScan/${ip}?url=${value}`)\r\n .then((response) => {\r\n if (response.data.code === 200) {\r\n alert(t('스캔되었습니다'));\r\n return response.data.data;\r\n }\r\n return alert(response.data.message);\r\n })\r\n .catch((error) => {\r\n const errorPayLoad = {};\r\n errorPayLoad['message'] = error.response.data;\r\n errorPayLoad['status'] = error.response.status;\r\n return rejectWithValue(errorPayLoad);\r\n });\r\n }),\r\n};\r\n\r\nconst scanReducer = createSlice({\r\n name: 'scanReducer',\r\n initialState: initState,\r\n reducers: {\r\n portScanReset: (state) => {\r\n state.portScanData.loading = false;\r\n state.portScanData.data = null;\r\n state.portScanData.error = null;\r\n },\r\n resourceScanReset: (state) => {\r\n state.resourceScanData.loading = false;\r\n state.resourceScanData.data = null;\r\n state.resourceScanData.error = null;\r\n },\r\n webScanReset: (state) => {\r\n state.webScanData.loading = false;\r\n state.webScanData.data = null;\r\n state.webScanData.error = null;\r\n },\r\n },\r\n extraReducers: (builder) => {\r\n builder\r\n .addCase(scanAction.getPortScan.pending, (state) => {\r\n state.portScanData.loading = true;\r\n })\r\n .addCase(scanAction.getPortScan.fulfilled, (state, action) => {\r\n state.portScanData.loading = false;\r\n state.portScanData.data = action.payload;\r\n state.portScanData.error = null;\r\n })\r\n .addCase(scanAction.getPortScan.rejected, (state, action) => {\r\n state.portScanData.loading = false;\r\n state.portScanData.data = null;\r\n state.portScanData.error = action.payload;\r\n })\r\n .addCase(scanAction.getSinglePortScan.pending, (state) => {\r\n state.portScanData.loading = true;\r\n })\r\n .addCase(scanAction.getSinglePortScan.fulfilled, (state, action) => {\r\n state.portScanData.loading = false;\r\n state.portScanData.data = action.payload;\r\n state.portScanData.error = null;\r\n })\r\n .addCase(scanAction.getSinglePortScan.rejected, (state, action) => {\r\n state.portScanData.loading = false;\r\n state.portScanData.data = null;\r\n state.portScanData.error = action.payload;\r\n })\r\n .addCase(scanAction.getResourceScan.pending, (state) => {\r\n state.resourceScanData.loading = true;\r\n })\r\n .addCase(scanAction.getResourceScan.fulfilled, (state, action) => {\r\n state.resourceScanData.loading = false;\r\n state.resourceScanData.data = action.payload;\r\n state.resourceScanData.error = null;\r\n })\r\n .addCase(scanAction.getResourceScan.rejected, (state, action) => {\r\n state.resourceScanData.loading = false;\r\n state.resourceScanData.data = null;\r\n state.resourceScanData.error = action.payload;\r\n })\r\n .addCase(scanAction.getWebScan.pending, (state) => {\r\n state.webScanData.loading = true;\r\n })\r\n .addCase(scanAction.getWebScan.fulfilled, (state, action) => {\r\n state.webScanData.loading = false;\r\n state.webScanData.data = action.payload;\r\n state.webScanData.error = null;\r\n })\r\n .addCase(scanAction.getWebScan.rejected, (state, action) => {\r\n state.webScanData.loading = false;\r\n state.webScanData.data = null;\r\n state.webScanData.error = action.payload;\r\n });\r\n },\r\n});\r\nexport const { portScanReset, resourceScanReset, webScanReset } = scanReducer.actions;\r\nexport default scanReducer.reducer;\r\n","import axios from 'axios';\r\nimport { settingAction } from './ReducerMonitoringSetting';\r\nimport { scanAction } from './ReducerScan';\r\nimport { action } from './ReducerTag';\r\n\r\nexport const FETCH_PORT_POST_REQUEST = 'register/FETCH_PORT_POST_REQUEST';\r\nexport const FETCH_PORT_POST_SUCCESS = 'register/FETCH_PORT_POST_SUCCESS';\r\nexport const FETCH_PORT_POST_ERROR = 'register/FETCH_PORT_POST_ERROR';\r\nexport const FETCH_TAG_POST_ERROR = 'register/FETCH_TAG_POST_ERROR';\r\n\r\nconst fetchPortRegisterRequest = () => {\r\n return {\r\n type: FETCH_PORT_POST_REQUEST,\r\n };\r\n};\r\n\r\nconst fetchPortRegisterSuccess = (data) => {\r\n return {\r\n type: FETCH_PORT_POST_SUCCESS,\r\n payload: data,\r\n };\r\n};\r\n\r\nconst fetchPortRegisterFailure = (error) => {\r\n return {\r\n type: FETCH_PORT_POST_ERROR,\r\n payload: error,\r\n };\r\n};\r\n\r\nconst fetchTagRegisterRequest = () => {\r\n return {\r\n type: FETCH_PORT_POST_REQUEST,\r\n };\r\n};\r\n\r\nconst fetchTagRegisterSuccess = (data) => {\r\n return {\r\n type: FETCH_PORT_POST_SUCCESS,\r\n payload: data,\r\n };\r\n};\r\n\r\nconst fetchTagRegisterFailure = (error) => {\r\n return {\r\n type: FETCH_PORT_POST_ERROR,\r\n payload: error,\r\n };\r\n};\r\n\r\nexport const getPortRegister = (hostId, ports, t) => async (dispatch) => {\r\n dispatch(fetchPortRegisterRequest());\r\n await axios\r\n .post(`${process.env.REACT_APP_REQUEST_API_URL}Monitoring/PortRegister/${hostId}`, ports)\r\n .then((response) => {\r\n dispatch(fetchPortRegisterSuccess());\r\n if (response.data.code === 200) {\r\n dispatch(scanAction.getPortScan(hostId));\r\n dispatch(settingAction.getPorts(hostId));\r\n return alert(t('등록되었습니다.'));\r\n }\r\n return alert(response.data.message);\r\n })\r\n .catch((error) => {\r\n if (error.response) {\r\n // 요청이 이루어졌으며 서버가 2xx의 범위를 벗어나는 상태 코드로 응답했습니다.\r\n console.log('response', error.response.status);\r\n console.log('response', error.response.headers);\r\n } else if (error.request) {\r\n // 요청이 이루어 졌으나 응답을 받지 못했습니다.\r\n // `error.request`는 브라우저의 XMLHttpRequest 인스턴스 또는\r\n // Node.js의 http.ClientRequest 인스턴스입니다.\r\n console.log('request', error.request);\r\n } else {\r\n // 오류를 발생시킨 요청을 설정하는 중에 문제가 발생했습니다.\r\n console.log('Error', error.message);\r\n }\r\n console.log(error.config);\r\n //dispatch(fetchDnsFailure(error.status));\r\n });\r\n};\r\n\r\nexport const getResourceRegister = (hostId, agents, osType) => async (dispatch) => {\r\n dispatch(fetchPortRegisterRequest());\r\n let type = 'Windows';\r\n if (osType === '리눅스') {\r\n type = 'Linux';\r\n }\r\n await axios\r\n .post(`${process.env.REACT_APP_REQUEST_API_URL}Monitoring/AgentRegister/${hostId}?osType=${type}`, agents)\r\n .then((response) => {\r\n dispatch(fetchPortRegisterSuccess());\r\n if (response.data.code === 200) {\r\n dispatch(scanAction.getResourceScan(hostId));\r\n dispatch(settingAction.getResources(hostId));\r\n return alert('등록되었습니다.');\r\n }\r\n return alert(response.data.message);\r\n })\r\n .catch((error) => {\r\n if (error.response) {\r\n // 요청이 이루어졌으며 서버가 2xx의 범위를 벗어나는 상태 코드로 응답했습니다.\r\n console.log('response', error.response.status);\r\n console.log('response', error.response.headers);\r\n } else if (error.request) {\r\n // 요청이 이루어 졌으나 응답을 받지 못했습니다.\r\n // `error.request`는 브라우저의 XMLHttpRequest 인스턴스 또는\r\n // Node.js의 http.ClientRequest 인스턴스입니다.\r\n console.log('request', error.request);\r\n } else {\r\n // 오류를 발생시킨 요청을 설정하는 중에 문제가 발생했습니다.\r\n console.log('Error', error.message);\r\n }\r\n console.log(error.config);\r\n //dispatch(fetchDnsFailure(error.status));\r\n });\r\n};\r\n\r\nexport const WebRegister = (host, url, checkValue, t) => async (dispatch) => {\r\n dispatch(fetchPortRegisterRequest());\r\n\r\n const data = { hostId: host.hostid, CheckValue: checkValue, Url: url };\r\n\r\n await axios\r\n .post(`${process.env.REACT_APP_REQUEST_API_URL}Monitoring/WebRegister`, data)\r\n .then((response) => {\r\n dispatch(fetchPortRegisterSuccess());\r\n if (response.data.code === 200) {\r\n dispatch(settingAction.getWebs(host.hostid));\r\n return alert(t('등록되었습니다'));\r\n }\r\n return alert(response.data.message);\r\n })\r\n .catch((error) => {\r\n if (error.response) {\r\n // 요청이 이루어졌으며 서버가 2xx의 범위를 벗어나는 상태 코드로 응답했습니다.\r\n console.log('response', error.response.status);\r\n console.log('response', error.response.headers);\r\n } else if (error.request) {\r\n // 요청이 이루어 졌으나 응답을 받지 못했습니다.\r\n // `error.request`는 브라우저의 XMLHttpRequest 인스턴스 또는\r\n // Node.js의 http.ClientRequest 인스턴스입니다.\r\n console.log('request', error.request);\r\n } else {\r\n // 오류를 발생시킨 요청을 설정하는 중에 문제가 발생했습니다.\r\n console.log('Error', error.message);\r\n }\r\n console.log(error.config);\r\n //dispatch(fetchDnsFailure(error.status));\r\n });\r\n};\r\n\r\nexport const tagRegister = (hostId, tagName) => async (dispatch) => {\r\n dispatch(fetchTagRegisterRequest());\r\n await axios\r\n .post(`${process.env.REACT_APP_REQUEST_API_URL}Monitoring/Tag/${hostId}?tagName=${tagName}`)\r\n .then((response) => {\r\n dispatch(fetchTagRegisterSuccess());\r\n if (response.data.code === 200) {\r\n dispatch(action.getTag(hostId));\r\n return alert('등록되었습니다.');\r\n }\r\n return alert(response.data.message);\r\n })\r\n .catch((error) => {\r\n if (error.response) {\r\n // 요청이 이루어졌으며 서버가 2xx의 범위를 벗어나는 상태 코드로 응답했습니다.\r\n console.log('response', error.response.status);\r\n console.log('response', error.response.headers);\r\n } else if (error.request) {\r\n // 요청이 이루어 졌으나 응답을 받지 못했습니다.\r\n // `error.request`는 브라우저의 XMLHttpRequest 인스턴스 또는\r\n // Node.js의 http.ClientRequest 인스턴스입니다.\r\n console.log('request', error.request);\r\n } else {\r\n // 오류를 발생시킨 요청을 설정하는 중에 문제가 발생했습니다.\r\n console.log('Error', error.message);\r\n }\r\n console.log(error.config);\r\n //dispatch(fetchDnsFailure(error.status));\r\n });\r\n};\r\n","import * as actionType from './ActionRegister';\r\n\r\nconst initState = {\r\n registerLoading: false,\r\n};\r\n\r\nexport default function (state = initState, action) {\r\n switch (action.type) {\r\n case actionType.FETCH_PORT_POST_REQUEST:\r\n return {\r\n ...state,\r\n registerLoading: true,\r\n };\r\n case actionType.FETCH_PORT_POST_SUCCESS:\r\n return {\r\n ...state,\r\n registerLoading: false,\r\n };\r\n default:\r\n return state;\r\n }\r\n}\r\n","import axios from 'axios';\r\nimport { settingAction } from './ReducerMonitoringSetting';\r\n\r\nexport const FETCH_PORT_POST_REQUEST = 'delete/FETCH_PORT_POST_REQUEST';\r\nexport const FETCH_PORT_POST_SUCCESS = 'delete/FETCH_PORT_POST_SUCCESS';\r\nexport const FETCH_PORT_POST_ERROR = 'delete/FETCH_PORT_POST_ERROR';\r\n\r\nexport const FETCH_RESOURCE_POST_REQUEST = 'delete/FETCH_RESOURCE_POST_REQUEST';\r\nexport const FETCH_RESOURCE_POST_SUCCESS = 'delete/FETCH_RESOURCE_POST_SUCCESS';\r\nexport const FETCH_RESOURCE_POST_ERROR = 'delete/FETCH_RESOURCE_POST_ERROR';\r\n\r\nexport const FETCH_WEB_POST_REQUEST = 'delete/FETCH_WEB_POST_REQUEST';\r\nexport const FETCH_WEB_POST_SUCCESS = 'delete/FETCH_WEB_POST_SUCCESS';\r\nexport const FETCH_WEB_POST_ERROR = 'delete/FETCH_WEB_POST_ERROR';\r\n\r\nconst fetchPortDeleteRequest = () => {\r\n return {\r\n type: FETCH_PORT_POST_REQUEST,\r\n };\r\n};\r\n\r\nconst fetchPortDeleteSuccess = (data) => {\r\n return {\r\n type: FETCH_PORT_POST_SUCCESS,\r\n payload: data,\r\n };\r\n};\r\n\r\nconst fetchPortDeleteFailure = (error) => {\r\n return {\r\n type: FETCH_PORT_POST_ERROR,\r\n payload: error,\r\n };\r\n};\r\n\r\nconst fetchResourceDeleteRequest = () => {\r\n return {\r\n type: FETCH_RESOURCE_POST_REQUEST,\r\n };\r\n};\r\n\r\nconst fetchResourceDeleteSuccess = (data) => {\r\n return {\r\n type: FETCH_RESOURCE_POST_SUCCESS,\r\n payload: data,\r\n };\r\n};\r\n\r\nconst fetchResourceDeleteFailure = (error) => {\r\n return {\r\n type: FETCH_RESOURCE_POST_ERROR,\r\n payload: error,\r\n };\r\n};\r\n\r\nconst fetchWebDeleteRequest = () => {\r\n return {\r\n type: FETCH_WEB_POST_REQUEST,\r\n };\r\n};\r\n\r\nconst fetchWebDeleteSuccess = (data) => {\r\n return {\r\n type: FETCH_WEB_POST_SUCCESS,\r\n payload: data,\r\n };\r\n};\r\n\r\nconst fetchWebDeleteFailure = (error) => {\r\n return {\r\n type: FETCH_WEB_POST_ERROR,\r\n payload: error,\r\n };\r\n};\r\n\r\nexport const getPortDelete = (itemId, hostId, t) => async (dispatch) => {\r\n dispatch(fetchPortDeleteRequest());\r\n await axios\r\n .delete(`${process.env.REACT_APP_REQUEST_API_URL}Monitoring/Port/${itemId}?type=port`)\r\n .then((response) => {\r\n dispatch(fetchPortDeleteSuccess());\r\n if (response.data.code === 200) {\r\n dispatch(settingAction.getPorts(hostId));\r\n return alert(t('삭제되었습니다'));\r\n }\r\n return alert(response.data.message);\r\n })\r\n .catch((error) => {\r\n dispatch(fetchPortDeleteSuccess());\r\n if (error.response) {\r\n // 요청이 이루어졌으며 서버가 2xx의 범위를 벗어나는 상태 코드로 응답했습니다.\r\n console.log('response', error.response.status);\r\n console.log('response', error.response.headers);\r\n } else if (error.request) {\r\n // 요청이 이루어 졌으나 응답을 받지 못했습니다.\r\n // `error.request`는 브라우저의 XMLHttpRequest 인스턴스 또는\r\n // Node.js의 http.ClientRequest 인스턴스입니다.\r\n console.log('request', error.request);\r\n } else {\r\n // 오류를 발생시킨 요청을 설정하는 중에 문제가 발생했습니다.\r\n console.log('Error', error.message);\r\n }\r\n console.log(error.config);\r\n //dispatch(fetchDnsFailure(error.status));\r\n });\r\n};\r\n\r\nexport const getResourceDelete = (itemId, hostId, t) => async (dispatch) => {\r\n dispatch(fetchResourceDeleteRequest());\r\n await axios\r\n .delete(`${process.env.REACT_APP_REQUEST_API_URL}Monitoring/Port/${itemId}?type=resource`)\r\n .then((response) => {\r\n dispatch(fetchResourceDeleteSuccess());\r\n if (response.data.code === 200) {\r\n dispatch(settingAction.getResources(hostId));\r\n return alert(t('삭제되었습니다'));\r\n }\r\n return alert(response.data.message);\r\n })\r\n .catch((error) => {\r\n if (error.response) {\r\n // 요청이 이루어졌으며 서버가 2xx의 범위를 벗어나는 상태 코드로 응답했습니다.\r\n console.log('response', error.response.status);\r\n console.log('response', error.response.headers);\r\n } else if (error.request) {\r\n // 요청이 이루어 졌으나 응답을 받지 못했습니다.\r\n // `error.request`는 브라우저의 XMLHttpRequest 인스턴스 또는\r\n // Node.js의 http.ClientRequest 인스턴스입니다.\r\n console.log('request', error.request);\r\n } else {\r\n // 오류를 발생시킨 요청을 설정하는 중에 문제가 발생했습니다.\r\n console.log('Error', error.message);\r\n }\r\n console.log(error.config);\r\n //dispatch(fetchDnsFailure(error.status));\r\n });\r\n};\r\n\r\nexport const webDelete = (webData, hostId, t) => async (dispatch) => {\r\n dispatch(fetchWebDeleteRequest());\r\n await axios\r\n .delete(`${process.env.REACT_APP_REQUEST_API_URL}Monitoring/Web/${hostId}`, { data: webData })\r\n .then((response) => {\r\n dispatch(fetchWebDeleteSuccess());\r\n if (response.data.code === 200) {\r\n dispatch(settingAction.getWebs(hostId));\r\n return alert(t('삭제되었습니다'));\r\n }\r\n return alert(response.data.message);\r\n })\r\n .catch((error) => {\r\n if (error.response) {\r\n // 요청이 이루어졌으며 서버가 2xx의 범위를 벗어나는 상태 코드로 응답했습니다.\r\n console.log('response', error.response.status);\r\n console.log('response', error.response.headers);\r\n } else if (error.request) {\r\n // 요청이 이루어 졌으나 응답을 받지 못했습니다.\r\n // `error.request`는 브라우저의 XMLHttpRequest 인스턴스 또는\r\n // Node.js의 http.ClientRequest 인스턴스입니다.\r\n console.log('request', error.request);\r\n } else {\r\n // 오류를 발생시킨 요청을 설정하는 중에 문제가 발생했습니다.\r\n console.log('Error', error.message);\r\n }\r\n console.log(error.config);\r\n //dispatch(fetchDnsFailure(error.status));\r\n });\r\n};\r\n","import * as actionType from './ActionDelete';\r\n\r\nconst initState = {\r\n deletePortLoading: false,\r\n deleteResourceLoading: false,\r\n deleteWebLoading: false,\r\n};\r\n\r\nexport default function (state = initState, action) {\r\n switch (action.type) {\r\n case actionType.FETCH_PORT_POST_REQUEST:\r\n return {\r\n ...state,\r\n deletePortLoading: true,\r\n };\r\n case actionType.FETCH_PORT_POST_SUCCESS:\r\n return {\r\n ...state,\r\n deletePortLoading: false,\r\n };\r\n\r\n case actionType.FETCH_RESOURCE_POST_REQUEST:\r\n return {\r\n ...state,\r\n deleteResourceLoading: true,\r\n };\r\n case actionType.FETCH_RESOURCE_POST_SUCCESS:\r\n return {\r\n ...state,\r\n deleteResourceLoading: false,\r\n };\r\n\r\n case actionType.FETCH_WEB_POST_REQUEST:\r\n return {\r\n ...state,\r\n deleteWebLoading: true,\r\n };\r\n case actionType.FETCH_WEB_POST_SUCCESS:\r\n return {\r\n ...state,\r\n deleteWebLoading: false,\r\n };\r\n default:\r\n return state;\r\n }\r\n}\r\n","export const TRAFFIC_IP_REQUEST = 'TRAFFIC_IP_REQUEST';\r\nexport const TRAFFIC_IP_SUCCESS = 'TRAFFIC_IP_SUCCESS';\r\nexport const TRAFFIC_IP_ERROR = 'TRAFFIC_IP_ERROR';\r\n\r\nexport const TRAFFIC_FULLDATA_REQUEST = 'TRAFFIC_FULLDATA_REQUEST';\r\nexport const TRAFFIC_FULLDATA_SUCCESS = 'TRAFFIC_FULLDATA_SUCCESS';\r\nexport const TRAFFIC_FULLDATA_ERROR = 'TRAFFIC_FULLDATA_ERROR';\r\nexport const TRAFFIC_FULLDATA_REQUEST1 = 'TRAFFIC_FULLDATA_REQUEST1';\r\nexport const TRAFFIC_FULLDATA_SUCCESS1 = 'TRAFFIC_FULLDATA_SUCCESS1';\r\nexport const TRAFFIC_FULLDATA_ERROR1 = 'TRAFFIC_FULLDATA_ERROR1';\r\nexport const TRAFFIC_FULLDATA_REQUEST2 = 'TRAFFIC_FULLDATA_REQUEST2';\r\nexport const TRAFFIC_FULLDATA_SUCCESS2 = 'TRAFFIC_FULLDATA_SUCCESS2';\r\nexport const TRAFFIC_FULLDATA_ERROR2 = 'TRAFFIC_FULLDATA_ERROR2';\r\nexport const TRAFFIC_FULLDATA_REQUEST3 = 'TRAFFIC_FULLDATA_REQUEST3';\r\nexport const TRAFFIC_FULLDATA_SUCCESS3 = 'TRAFFIC_FULLDATA_SUCCESS3';\r\nexport const TRAFFIC_FULLDATA_ERROR3 = 'TRAFFIC_FULLDATA_ERROR3';\r\n\r\nexport const TRAFFIC_ALLDATA_REQUEST = 'TRAFFIC_ALLDATA_REQUEST';\r\nexport const TRAFFIC_ALLDATA_SUCCESS = 'TRAFFIC_ALLDATA_SUCCESS';\r\nexport const TRAFFIC_ALLDATA_ERROR = 'TRAFFIC_ALLDATA_ERROR';\r\n\r\nexport const TRAFFIC_ACCOUNT_MODAL = 'TRAFFIC_ACCOUNT_MODAL';\r\nexport const TRAFFIC_CACHE_IP = 'TRAFFIC_CACHE_IP';\r\n","import {\r\n TRAFFIC_IP_REQUEST,\r\n TRAFFIC_IP_SUCCESS,\r\n TRAFFIC_IP_ERROR,\r\n TRAFFIC_FULLDATA_REQUEST,\r\n TRAFFIC_FULLDATA_SUCCESS,\r\n TRAFFIC_FULLDATA_ERROR,\r\n TRAFFIC_FULLDATA_REQUEST1,\r\n TRAFFIC_FULLDATA_SUCCESS1,\r\n TRAFFIC_FULLDATA_ERROR1,\r\n TRAFFIC_FULLDATA_REQUEST2,\r\n TRAFFIC_FULLDATA_SUCCESS2,\r\n TRAFFIC_FULLDATA_ERROR2,\r\n TRAFFIC_FULLDATA_REQUEST3,\r\n TRAFFIC_FULLDATA_SUCCESS3,\r\n TRAFFIC_FULLDATA_ERROR3,\r\n TRAFFIC_ALLDATA_REQUEST,\r\n TRAFFIC_ALLDATA_SUCCESS,\r\n TRAFFIC_ALLDATA_ERROR,\r\n TRAFFIC_ACCOUNT_MODAL,\r\n TRAFFIC_CACHE_IP,\r\n} from './TrafficType';\r\n\r\nconst initState = {\r\n trafficIPLoading: false,\r\n trafficIPData: null,\r\n trafficIPError: null,\r\n trafficFullDataLoading: false,\r\n trafficFullData: null,\r\n trafficFullDataError: null,\r\n trafficFullDataLoading1: false,\r\n trafficFullData1: null,\r\n trafficFullDataError1: null,\r\n trafficFullDataLoading2: false,\r\n trafficFullData2: null,\r\n trafficFullDataError2: null,\r\n trafficFullDataLoading3: false,\r\n trafficFullData3: null,\r\n trafficFullDataError3: null,\r\n trafficAllDataLoading: false,\r\n trafficAllData: null,\r\n trafficAllDataError: null,\r\n accountModal: false,\r\n trafficCache: null,\r\n};\r\n\r\nexport default function (state = initState, action) {\r\n switch (action.type) {\r\n case TRAFFIC_IP_REQUEST:\r\n return {\r\n ...state,\r\n trafficIPLoading: true,\r\n trafficFullData1: null,\r\n trafficFullData2: null,\r\n trafficFullData3: null,\r\n };\r\n case TRAFFIC_IP_SUCCESS:\r\n return {\r\n ...state,\r\n trafficIPLoading: false,\r\n trafficIPData: action.payload,\r\n };\r\n case TRAFFIC_IP_ERROR:\r\n return {\r\n ...state,\r\n trafficIPLoading: false,\r\n trafficIPError: action.payload,\r\n };\r\n case TRAFFIC_FULLDATA_REQUEST:\r\n return {\r\n ...state,\r\n trafficFullDataLoading: true,\r\n trafficFullData: null,\r\n };\r\n case TRAFFIC_FULLDATA_SUCCESS:\r\n return {\r\n ...state,\r\n trafficFullDataLoading: false,\r\n trafficFullData: action.payload,\r\n };\r\n case TRAFFIC_FULLDATA_ERROR:\r\n return {\r\n ...state,\r\n trafficFullDataLoading: false,\r\n trafficFullDataError: action.payload,\r\n };\r\n case TRAFFIC_FULLDATA_REQUEST1:\r\n return {\r\n ...state,\r\n trafficFullDataLoading1: true,\r\n };\r\n case TRAFFIC_FULLDATA_SUCCESS1:\r\n return {\r\n ...state,\r\n trafficFullDataLoading1: false,\r\n trafficFullData1: action.payload,\r\n };\r\n case TRAFFIC_FULLDATA_ERROR1:\r\n return {\r\n ...state,\r\n trafficFullDataLoading1: false,\r\n trafficFullDataError1: action.payload,\r\n };\r\n case TRAFFIC_FULLDATA_REQUEST2:\r\n return {\r\n ...state,\r\n trafficFullDataLoading2: true,\r\n };\r\n case TRAFFIC_FULLDATA_SUCCESS2:\r\n return {\r\n ...state,\r\n trafficFullDataLoading2: false,\r\n trafficFullData2: action.payload,\r\n };\r\n case TRAFFIC_FULLDATA_ERROR2:\r\n return {\r\n ...state,\r\n trafficFullDataLoading2: false,\r\n trafficFullDataError2: action.payload,\r\n };\r\n case TRAFFIC_FULLDATA_REQUEST3:\r\n return {\r\n ...state,\r\n trafficFullDataLoading3: true,\r\n };\r\n case TRAFFIC_FULLDATA_SUCCESS3:\r\n return {\r\n ...state,\r\n trafficFullDataLoading3: false,\r\n trafficFullData3: action.payload,\r\n };\r\n case TRAFFIC_FULLDATA_ERROR3:\r\n return {\r\n ...state,\r\n trafficFullDataLoading3: false,\r\n trafficFullDataError3: action.payload,\r\n };\r\n case TRAFFIC_ALLDATA_REQUEST:\r\n return {\r\n ...state,\r\n trafficAllDataLoading: true,\r\n trafficAllData: null,\r\n };\r\n case TRAFFIC_ALLDATA_SUCCESS:\r\n return {\r\n ...state,\r\n trafficAllDataLoading: false,\r\n trafficAllData: action.payload,\r\n };\r\n case TRAFFIC_ALLDATA_ERROR:\r\n return {\r\n ...state,\r\n trafficAllDataLoading: false,\r\n trafficAllDataError: action.payload,\r\n };\r\n case TRAFFIC_ACCOUNT_MODAL:\r\n return {\r\n ...state,\r\n accountModal: !action.state,\r\n };\r\n case TRAFFIC_CACHE_IP:\r\n return {\r\n ...state,\r\n trafficCache: action.state,\r\n };\r\n default:\r\n return { ...state };\r\n }\r\n}\r\n","import * as actionType from './ActionRecord';\r\n\r\nconst initState = {\r\n recordLoading: false,\r\n recordData: null,\r\n recordError: null,\r\n};\r\n\r\nexport default function (state = initState, action) {\r\n switch (action.type) {\r\n case actionType.FETCH_RECORD_POSTS_REQUEST:\r\n return {\r\n ...state,\r\n recordLoading: true,\r\n recordError: null,\r\n };\r\n case actionType.FETCH_RECORD_POSTS_SUCCESS:\r\n return {\r\n ...state,\r\n recordLoading: false,\r\n recordData: action.payload,\r\n recordError: null,\r\n };\r\n case actionType.FETCH_RECORD_POSTS_ERROR:\r\n return {\r\n ...state,\r\n recordLoading: false,\r\n recordError: action.payload,\r\n recordData: null,\r\n };\r\n default:\r\n return state;\r\n }\r\n}\r\n","export const GET_FILE_REQUEST = 'GET_FILE_REQUEST';\r\nexport const GET_FILE_SUCCESS = 'GET_FILE_SUCCESS';\r\nexport const GET_FILE_ERROR = 'GET_FILE_ERROR';\r\n\r\nexport const SET_FILE_REQUEST = 'SET_FILE_REQUEST';\r\nexport const SET_FILE_SUCCESS = 'SET_FILE_SUCCESS';\r\nexport const SET_FILE_ERROR = 'SET_FILE_ERROR';\r\n","import { GET_FILE_REQUEST, GET_FILE_SUCCESS, GET_FILE_ERROR, SET_FILE_REQUEST, SET_FILE_SUCCESS, SET_FILE_ERROR } from './FileUploadType';\r\n\r\nconst initState = {\r\n getFileLoading: false,\r\n getFileData: false,\r\n getFileError: null,\r\n setFileLoading: false,\r\n setFileData: [],\r\n setFileError: null,\r\n};\r\n\r\nexport default function (state = initState, action) {\r\n switch (action.type) {\r\n case GET_FILE_REQUEST:\r\n return {\r\n ...state,\r\n getFileLoading: true,\r\n };\r\n case GET_FILE_SUCCESS:\r\n return {\r\n ...state,\r\n getFileLoading: false,\r\n getFileData: action.payload,\r\n };\r\n case GET_FILE_ERROR:\r\n return {\r\n ...state,\r\n getFileLoading: false,\r\n getFileError: action.payload,\r\n };\r\n case SET_FILE_REQUEST:\r\n return {\r\n ...state,\r\n setFileLoading: true,\r\n };\r\n case SET_FILE_SUCCESS:\r\n return {\r\n ...state,\r\n setFileLoading: false,\r\n setFileData: action.payload,\r\n };\r\n case SET_FILE_ERROR:\r\n return {\r\n ...state,\r\n setFileLoading: false,\r\n setFileError: action.payload,\r\n };\r\n default:\r\n return state;\r\n }\r\n}\r\n","import axios from 'axios';\r\nimport { createAsyncThunk, createSlice } from '@reduxjs/toolkit';\r\nconst initState = {\r\n notice: {\r\n Loading: false,\r\n Data: null,\r\n Error: null,\r\n },\r\n notification: {\r\n Loading: false,\r\n Data: null,\r\n Error: null,\r\n },\r\n newNotification: {\r\n Loading: false,\r\n Data: [],\r\n Error: null,\r\n },\r\n};\r\n\r\nexport const dashboardAction = {\r\n getNoticeTopWriting: createAsyncThunk('GET/NOTICETOPWRITING', async (state, { rejectWithValue }) => {\r\n return await axios\r\n .get(`${process.env.REACT_APP_REQUEST_API_URL}Board/Notice?page=${1}&pageSize=${3}`)\r\n .then((response) => response.data.data)\r\n .catch((error) => {\r\n const errorPayLoad = {};\r\n\r\n errorPayLoad['message'] = error.response.data;\r\n errorPayLoad['status'] = error.response.status;\r\n return rejectWithValue(errorPayLoad);\r\n });\r\n }),\r\n getSeucirtyTopWriting: createAsyncThunk('GET/SECURITYTOPWRITING', async (state, { rejectWithValue }) => {\r\n return await axios\r\n .get(`${process.env.REACT_APP_REQUEST_API_URL}Board/Notice?page=${1}&pageSize=${3}`)\r\n .then((response) => response.data.data)\r\n .catch((error) => {\r\n const errorPayLoad = {};\r\n\r\n errorPayLoad['message'] = error.response.data;\r\n errorPayLoad['status'] = error.response.status;\r\n return rejectWithValue(errorPayLoad);\r\n });\r\n }),\r\n getNotificationTopWriting: createAsyncThunk('GET/NOTIFICATION', async (state, { rejectWithValue }) => {\r\n return await axios\r\n .get(`${process.env.REACT_APP_REQUEST_API_URL}Notification?top=3`)\r\n .then((response) => response.data.data)\r\n .catch((error) => {\r\n const errorPayLoad = {};\r\n\r\n errorPayLoad['message'] = error.response.data;\r\n errorPayLoad['status'] = error.response.status;\r\n return rejectWithValue(errorPayLoad);\r\n });\r\n }),\r\n getNewNotification: createAsyncThunk('GET/NEWNOTIFICATION', async (state, { rejectWithValue }) => {\r\n return await axios\r\n .get(`${process.env.REACT_APP_REQUEST_API_URL}Notification/new?top=3`)\r\n .then((response) => response.data.data)\r\n .catch((error) => {\r\n const errorPayLoad = {};\r\n\r\n errorPayLoad['message'] = error.response.data;\r\n errorPayLoad['status'] = error.response.status;\r\n return rejectWithValue(errorPayLoad);\r\n });\r\n }),\r\n getReadNotification: createAsyncThunk('GET/READNOTIFICATION', async (id, thunkAPI) => {\r\n return await axios\r\n .get(`${process.env.REACT_APP_REQUEST_API_URL}Notification/${id}`)\r\n .then((response) => {\r\n if (response.data.data.deepLink != null && response.data.data.deepLink.length > 0) {\r\n thunkAPI.dispatch(dashboardAction.getNewNotification());\r\n window.location.href = response.data.data.deepLink;\r\n } else {\r\n thunkAPI.dispatch(dashboardAction.getNewNotification());\r\n }\r\n })\r\n .catch((error) => {});\r\n }),\r\n};\r\n\r\nconst dashboardTopWriting = createSlice({\r\n name: 'dashboardTopWriting',\r\n initialState: initState,\r\n reducers: {},\r\n extraReducers: (builder) => {\r\n builder\r\n .addCase(dashboardAction.getNoticeTopWriting.pending, (state) => {\r\n state.notice.Loading = true;\r\n })\r\n .addCase(dashboardAction.getNoticeTopWriting.fulfilled, (state, action) => {\r\n state.notice.Loading = false;\r\n state.notice.Data = action.payload;\r\n state.notice.Error = null;\r\n })\r\n .addCase(dashboardAction.getNoticeTopWriting.rejected, (state, action) => {\r\n state.notice.Loading = false;\r\n state.notice.Error = action.payload;\r\n })\r\n .addCase(dashboardAction.getNotificationTopWriting.pending, (state) => {\r\n state.notification.Loading = true;\r\n })\r\n .addCase(dashboardAction.getNotificationTopWriting.fulfilled, (state, action) => {\r\n state.notification.Loading = false;\r\n state.notification.Data = action.payload;\r\n state.notification.Error = null;\r\n })\r\n .addCase(dashboardAction.getNotificationTopWriting.rejected, (state, action) => {\r\n state.notification.Loading = false;\r\n state.notification.Error = action.payload;\r\n })\r\n .addCase(dashboardAction.getNewNotification.pending, (state) => {\r\n state.newNotification.Loading = true;\r\n })\r\n .addCase(dashboardAction.getNewNotification.fulfilled, (state, action) => {\r\n state.newNotification.Loading = false;\r\n state.newNotification.Data = action.payload;\r\n state.newNotification.Error = null;\r\n })\r\n .addCase(dashboardAction.getNewNotification.rejected, (state, action) => {\r\n state.newNotification.Loading = false;\r\n state.newNotification.Error = action.payload;\r\n });\r\n },\r\n});\r\n\r\nexport default dashboardTopWriting.reducer;\r\n","import axios from 'axios';\r\nimport { createAsyncThunk, createSlice } from '@reduxjs/toolkit';\r\n\r\nconst initState = {\r\n loading: true,\r\n error: null,\r\n Amonitoring: [],\r\n Bmonitoring: [],\r\n Cmonitoring: [],\r\n Dmonitoring: [],\r\n Tmonitoring: [],\r\n};\r\n\r\nexport const mcsAction = {\r\n getMonitoringCurrentSituationSetting: createAsyncThunk('GET/MONITORINGCURRENTSITUATIONSETTING', async (type, { rejectWithValue }) => {\r\n return await axios\r\n .get(`${process.env.REACT_APP_REQUEST_API_URL}Monitoring/MonitoringCurrentSituationSetting${type ? '?type=' + type : ''}`)\r\n .then((response) => ({\r\n type: type,\r\n response: response.data,\r\n }))\r\n .catch((error) => {\r\n const errorPayLoad = {};\r\n errorPayLoad['message'] = error.response.data;\r\n errorPayLoad['status'] = error.response.status;\r\n return rejectWithValue(errorPayLoad);\r\n });\r\n }),\r\n setMonitoringCurrentSituationSetting: createAsyncThunk(\r\n 'SET/MONITORINGCURRENTSITUATIONSETTING',\r\n async (data, { rejectWithValue, dispatch }) => {\r\n return await axios\r\n .post(`${process.env.REACT_APP_REQUEST_API_URL}Monitoring/MonitoringCurrentSituationSetting/${data.type}`, data.data)\r\n .then((response) => {\r\n dispatch(mcsAction.getMonitoringCurrentSituationSetting(data.type));\r\n })\r\n .catch((error) => {\r\n const errorPayLoad = {};\r\n errorPayLoad['message'] = error.response.data;\r\n errorPayLoad['status'] = error.response.status;\r\n return rejectWithValue(errorPayLoad);\r\n });\r\n }\r\n ),\r\n};\r\n\r\nconst ReducerMonitoringCurrentSituationSetting = createSlice({\r\n name: 'ReducerMonitoringCurrentSituationSetting',\r\n initialState: initState,\r\n reducers: {},\r\n extraReducers: (builder) => {\r\n builder\r\n .addCase(mcsAction.setMonitoringCurrentSituationSetting.pending, (state) => {\r\n //state.ModalLoading = true;\r\n })\r\n .addCase(mcsAction.setMonitoringCurrentSituationSetting.fulfilled, (state, action) => {\r\n //state.ModalLoading = false;\r\n //state.AMonitoring = action.payload;\r\n })\r\n .addCase(mcsAction.setMonitoringCurrentSituationSetting.rejected, (state, action) => {\r\n // state.ModalLoading = false;\r\n //state.ModalError = action.payload;\r\n })\r\n .addCase(mcsAction.getMonitoringCurrentSituationSetting.pending, (state) => {\r\n state.loading = true;\r\n })\r\n .addCase(mcsAction.getMonitoringCurrentSituationSetting.fulfilled, (state, action) => {\r\n const data = action.payload.response.data;\r\n if (action.payload.type) {\r\n state[`${action.payload.type}monitoring`] = data.filter((f) => f.type === action.payload.type);\r\n } \r\n else {\r\n const types = ['A', 'B', 'C', 'D','T'];\r\n types.forEach((type) => {\r\n state[`${type}monitoring`] = data.filter((f) => f.type === type || f.type === null);\r\n });\r\n }\r\n state.loading = false;\r\n })\r\n .addCase(mcsAction.getMonitoringCurrentSituationSetting.rejected, (state, action) => {\r\n state.error = action.payload;\r\n });\r\n },\r\n});\r\n\r\nexport default ReducerMonitoringCurrentSituationSetting.reducer;\r\n","import { createSlice } from '@reduxjs/toolkit';\r\nimport { PURGE } from 'redux-persist';\r\n\r\nconst initState = {\r\n Menu: [\r\n { hostId: 1, title: '청구요금 요약정보' },\r\n { hostId: 3, title: '실시간 모니터링현황1' },\r\n ],\r\n MenuUpdateTime : 600000,\r\n isMenuChanged : false,\r\n};\r\n\r\nexport const dashboardAction = {};\r\n\r\nconst ReducerDashBoardSetting = createSlice({\r\n name: 'ReducerDashBoardSetting',\r\n initialState: initState,\r\n reducers: {\r\n SetMenu: (state, data) => {\r\n state.Menu = data.payload;\r\n },\r\n SetMenuUpdateTime : (state, data) => {\r\n state.MenuUpdateTime = data.payload\r\n state.isMenuChanged = !state.isMenuChanged;\r\n }\r\n },\r\n});\r\nexport const { SetMenu, SetMenuUpdateTime } = ReducerDashBoardSetting.actions;\r\nexport default ReducerDashBoardSetting.reducer;\r\n","import {\r\n MENU_DATA_REQUEST,\r\n MENU_DATA_SUCCESS,\r\n MENU_DATA_ERROR,\r\n MENU_CACHE_HIT,\r\n} from './MenuType';\r\n\r\nconst initialState = {\r\n loading: false,\r\n error: null,\r\n data: [],\r\n};\r\n\r\nconst ReducerMenu = (state = initialState, action) => {\r\n switch (action.type) {\r\n case MENU_DATA_REQUEST:\r\n return {\r\n ...state,\r\n loading: true,\r\n error: null,\r\n };\r\n case MENU_DATA_SUCCESS:\r\n return {\r\n ...state,\r\n loading: false,\r\n data: action.payload,\r\n };\r\n case MENU_DATA_ERROR:\r\n return {\r\n ...state,\r\n loading: false,\r\n error: action.error,\r\n };\r\n case MENU_CACHE_HIT:\r\n return {\r\n ...state,\r\n loading: false,\r\n data: action.payload,\r\n };\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport default ReducerMenu;\r\n","import axios from 'axios';\r\nimport { createAsyncThunk, createSlice } from '@reduxjs/toolkit';\r\n\r\nconst initState = {\r\n ReportingServer: {\r\n loading: false,\r\n data: [],\r\n error: null,\r\n },\r\n ReportingScheduleDisabled: {\r\n loading: false,\r\n disabled: false,\r\n error: null,\r\n },\r\n};\r\n\r\nexport const action = {\r\n getBasicReportingServer: createAsyncThunk('GET/BASICREPORTINGSERVER', async (data, { rejectWithValue }) => {\r\n return await axios\r\n .get(`${process.env.REACT_APP_REQUEST_API_URL}Reporting/GetBasicReportingServer`)\r\n .then((response) => response.data)\r\n .catch((error) => {\r\n const errorPayLoad = {};\r\n errorPayLoad['message'] = error.response.data;\r\n errorPayLoad['status'] = error.response.status;\r\n return rejectWithValue(errorPayLoad);\r\n });\r\n }),\r\n\r\n getBasicReporitngScheduleDisabled: createAsyncThunk('GET/BASICREPORTINGSCHEDULEDISABLED', async (data, { rejectWithValue }) => {\r\n return await axios\r\n .get(`${process.env.REACT_APP_REQUEST_API_URL}Reporting/GetBasicReporitngScheduleDisabled`)\r\n .then((response) => response.data)\r\n .catch((error) => {\r\n const errorPayLoad = {};\r\n errorPayLoad['message'] = error.response.data;\r\n errorPayLoad['status'] = error.response.status;\r\n return rejectWithValue(errorPayLoad);\r\n });\r\n }),\r\n putBasicReporitngScheduleDisabled: createAsyncThunk('PUT/BASICREPORTINGSCHEDULEDISABLED', async (data, { rejectWithValue }) => {\r\n return await axios\r\n .put(`${process.env.REACT_APP_REQUEST_API_URL}Reporting/PutBasicReportingDisabled`, { isDisabled: data })\r\n .then((response) => response.data)\r\n .catch((error) => {\r\n const errorPayLoad = {};\r\n errorPayLoad['message'] = error.response.data;\r\n errorPayLoad['status'] = error.response.status;\r\n return rejectWithValue(errorPayLoad);\r\n });\r\n }),\r\n putBasicReportingServerScheduleKey: createAsyncThunk(\r\n 'PUT/BASICREPORTINGSERVERSCHEDULEKEY',\r\n async (data, { rejectWithValue, dispatch }) => {\r\n return await axios\r\n .put(`${process.env.REACT_APP_REQUEST_API_URL}Reporting/PutBasicReportingServerScheduleKey`, data)\r\n .then((response) => {\r\n if (response.data.code === 200) {\r\n dispatch(action.getBasicReportingServer());\r\n }\r\n alert(response.data.message);\r\n\r\n return response.data.code;\r\n })\r\n .catch((error) => {\r\n const errorPayLoad = {};\r\n errorPayLoad['message'] = error.response.data;\r\n errorPayLoad['status'] = error.response.status;\r\n return rejectWithValue(errorPayLoad);\r\n });\r\n }\r\n ),\r\n};\r\n\r\nconst reporting = createSlice({\r\n name: 'reporting',\r\n initialState: initState,\r\n reducers: {},\r\n extraReducers: (builder) => {\r\n builder\r\n .addCase(action.getBasicReportingServer.pending, (state) => {\r\n state.ReportingServer.loading = true;\r\n state.ReportingServer.data = [];\r\n })\r\n .addCase(action.getBasicReportingServer.fulfilled, (state, action) => {\r\n state.ReportingServer.loading = false;\r\n state.ReportingServer.data = action.payload.data;\r\n })\r\n .addCase(action.getBasicReportingServer.rejected, (state, action) => {\r\n state.ReportingServer.loading = false;\r\n state.ReportingServer.data = [];\r\n state.ReportingServer.error = action.payload;\r\n })\r\n .addCase(action.getBasicReporitngScheduleDisabled.pending, (state) => {\r\n state.ReportingScheduleDisabled.loading = true;\r\n })\r\n .addCase(action.getBasicReporitngScheduleDisabled.fulfilled, (state, action) => {\r\n state.ReportingScheduleDisabled.loading = false;\r\n state.ReportingScheduleDisabled.disabled = action.payload.data;\r\n })\r\n .addCase(action.getBasicReporitngScheduleDisabled.rejected, (state, action) => {\r\n state.ReportingScheduleDisabled.loading = false;\r\n state.ReportingScheduleDisabled.error = action.payload;\r\n })\r\n .addCase(action.putBasicReporitngScheduleDisabled.pending, (state) => {\r\n state.ReportingScheduleDisabled.loading = true;\r\n })\r\n .addCase(action.putBasicReporitngScheduleDisabled.fulfilled, (state, action) => {\r\n state.ReportingScheduleDisabled.loading = false;\r\n if (action.payload.code !== 200) {\r\n return alert(action.payload.message);\r\n }\r\n state.ReportingScheduleDisabled.disabled = action.payload.data;\r\n })\r\n .addCase(action.putBasicReporitngScheduleDisabled.rejected, (state, action) => {\r\n state.ReportingScheduleDisabled.loading = false;\r\n state.ReportingScheduleDisabled.error = action.payload;\r\n });\r\n },\r\n});\r\n\r\nexport default reporting.reducer;\r\n","import axios from 'axios';\r\nimport { createAsyncThunk, createSlice } from '@reduxjs/toolkit';\r\n\r\nconst initState = {\r\n mailList: {\r\n loading: false,\r\n data: [],\r\n error: null,\r\n },\r\n mailStateCount: {\r\n totalCount: 0,\r\n regCount: 0,\r\n unRegCount: 0,\r\n },\r\n mailPost: {\r\n postLoading: false,\r\n },\r\n};\r\n\r\nexport const action = {\r\n getAlertMailList: createAsyncThunk('GET/ALERTMAILLIST', async (data, { rejectWithValue }) => {\r\n const { searchText, selectStatus } = data;\r\n return await axios\r\n .get(\r\n `${process.env.REACT_APP_REQUEST_API_URL}Monitoring/AlertMailList?page=0&pageSize=200&searchText=${searchText}&selectStatus=${selectStatus}`\r\n )\r\n .then((response) => response.data)\r\n .catch((error) => {\r\n const errorPayLoad = {};\r\n errorPayLoad['message'] = error.response.data;\r\n errorPayLoad['status'] = error.response.status;\r\n return rejectWithValue(errorPayLoad);\r\n });\r\n }),\r\n postAlertMail: createAsyncThunk('POST/ALERTMAIL', async (data, { rejectWithValue, dispatch }) => {\r\n const { postData, setCheckItems, handleReportingModalState } = data;\r\n return await axios\r\n .post(`${process.env.REACT_APP_REQUEST_API_URL}Monitoring/AlertMailRegister`, postData)\r\n .then((response) => {\r\n if (response.data.code === 200) {\r\n dispatch(action.getAlertMailList({ searchText: '' }));\r\n setCheckItems([]);\r\n handleReportingModalState();\r\n }\r\n alert(response.data.message);\r\n\r\n return response.data.code;\r\n })\r\n .catch((error) => {\r\n const errorPayLoad = {};\r\n errorPayLoad['message'] = error.response.data;\r\n errorPayLoad['status'] = error.response.status;\r\n return rejectWithValue(errorPayLoad);\r\n });\r\n }),\r\n deleteAlertMail: createAsyncThunk('DELETE/ALERTMAIL', async (hostId, { rejectWithValue, dispatch }) => {\r\n return await axios\r\n .post(`${process.env.REACT_APP_REQUEST_API_URL}Monitoring/AlertMailDelete`, hostId)\r\n .then((response) => {\r\n if (response.data.code === 200) {\r\n dispatch(action.getAlertMailList({ searchText: '' }));\r\n }\r\n alert(response.data.message);\r\n\r\n return response.data.code;\r\n })\r\n .catch((error) => {\r\n const errorPayLoad = {};\r\n errorPayLoad['message'] = error.response.data;\r\n errorPayLoad['status'] = error.response.status;\r\n return rejectWithValue(errorPayLoad);\r\n });\r\n }),\r\n putAlertMail: createAsyncThunk('PUT/ALERTMAIL', async (data, { rejectWithValue, dispatch }) => {\r\n const { postData, handleReportingModiModalState } = data;\r\n return await axios\r\n .post(`${process.env.REACT_APP_REQUEST_API_URL}Monitoring/AlertMailModify`, postData)\r\n .then((response) => {\r\n console.log(response);\r\n if (response.data.code === 200) {\r\n dispatch(action.getAlertMailList({ searchText: '' }));\r\n handleReportingModiModalState();\r\n }\r\n alert(response.data.message);\r\n\r\n return response.data.code;\r\n })\r\n .catch((error) => {\r\n const errorPayLoad = {};\r\n errorPayLoad['message'] = error.response.data;\r\n errorPayLoad['status'] = error.response.status;\r\n return rejectWithValue(errorPayLoad);\r\n });\r\n }),\r\n};\r\n\r\nconst mailSetting = createSlice({\r\n name: 'mailSetting',\r\n initialState: initState,\r\n reducers: {},\r\n extraReducers: (builder) => {\r\n builder\r\n .addCase(action.getAlertMailList.pending, (state) => {\r\n const ml = state.mailList;\r\n ml.loading = true;\r\n ml.data = [];\r\n })\r\n .addCase(action.getAlertMailList.fulfilled, (state, action) => {\r\n console.log(action.payload);\r\n state.mailList = {\r\n loading: false,\r\n data: action.payload.data.monitoringInfos,\r\n };\r\n state.mailStateCount.totalCount = action.payload.data.totalCount;\r\n state.mailStateCount.regCount = action.payload.data.regCount;\r\n state.mailStateCount.unRegCount = action.payload.data.unRegCount;\r\n })\r\n .addCase(action.getAlertMailList.rejected, (state, action) => {\r\n const ml = state.mailList;\r\n ml.loading = false;\r\n ml.error = action.payload;\r\n ml.data = null;\r\n }).addCase(action.postAlertMail.pending, (state) => {\r\n state.mailPost.loading = true;\r\n }).addCase(action.postAlertMail.fulfilled, (state) => {\r\n state.mailPost.loading = false;\r\n }\r\n ).addCase(action.postAlertMail.rejected, (state) => {\r\n state.mailPost.loading = false;\r\n })\r\n .addCase(action.deleteAlertMail.pending, (state) => {\r\n state.mailPost.loading = true;\r\n })\r\n .addCase(action.deleteAlertMail.fulfilled, (state) => {\r\n state.mailPost.loading = false;\r\n })\r\n .addCase(action.deleteAlertMail.rejected, (state) => {\r\n state.mailPost.loading = false;\r\n })\r\n .addCase(action.putAlertMail.pending, (state) => {\r\n state.mailPost.loading = true;\r\n })\r\n .addCase(action.putAlertMail.fulfilled, (state) => {\r\n state.mailPost.loading = false;\r\n })\r\n .addCase(action.putAlertMail.rejected, (state) => {\r\n state.mailPost.loading = false;\r\n });\r\n },\r\n});\r\nexport default mailSetting.reducer;\r\n","import { combineReducers } from 'redux';\r\nimport thunk from 'redux-thunk';\r\nimport { persistReducer, persistStore } from 'redux-persist';\r\nimport storage from 'redux-persist/lib/storage';\r\nimport { reducer as oidcReducer } from 'redux-oidc';\r\nimport { configureStore } from '@reduxjs/toolkit';\r\nimport createOidcMiddleware from 'redux-oidc';\r\nimport userManager from '../utils/userManager';\r\n\r\nimport ReducerMonitoring from './monitoring/ReducerMonitoring';\r\nimport ReducerMonitoringModal from './monitoring/ReducerMonitoringModal';\r\nimport ReducerMonitoringIssue from './monitoring/ReducerMontiroingIssue';\r\nimport ReducerMonitoringModalIssue from './monitoring/ReducerMonitoringModalIssue';\r\nimport ReducerMonitoringPannel from './monitoring/ReducerMonitoringPannel';\r\nimport ReducerMonitoringSetting from './monitoringSetting/ReducerMonitoringSetting';\r\nimport ReducerBoard from './board/ReducerBoard';\r\nimport ReducerDatepicker from './datepicker/ReducerDatepicker';\r\nimport ReducerChart from './chart/ReducerChart';\r\nimport ReducerNameServer from './nameserver/ReducerNameServer';\r\nimport ReducerRecordSetting from './nameserver/ReducerRecordSetting';\r\nimport ReducerSupportCenter from './supportcenter/ReducerSupportCenter';\r\nimport ReducerInquiryList from './supportcenter/ReducerInquiryList';\r\nimport ReducerMonitoringModalData from './monitoring/ReducerMonitoringModalData';\r\nimport ReducerModalState from './monitoringSetting/ReducerModalState';\r\nimport ReducerTag from './monitoringSetting/ReducerTag';\r\nimport ReducerScan from './monitoringSetting/ReducerScan';\r\nimport ReducerRegister from './monitoringSetting/ReducerRegister';\r\nimport ReducerDelete from './monitoringSetting/ReducerDelete';\r\nimport ReducerTraffic from './traffic/ReducerTraffic';\r\nimport ReducerRecord from './nameserver/ReducerRecord';\r\nimport ReducerFileUpload from './fileupload/ReducerFileUplad';\r\nimport ReducerTopWriting from './dashboard/ReducerTopWriting';\r\nimport ReducerMonitoringCurrentSituationSetting from './dashboard/ReducerMonitoringCurrentSituationSetting';\r\nimport ReducerDashboardBill from './dashboard/ReducerDashboardBill';\r\nimport ReducerDashBoardSetting from './dashboard/ReducerDashBoardSetting';\r\nimport ReducerMenu from './menu/ReducerMenu';\r\nimport ReducerReporting from './reporting/ReducerReporting';\r\nimport ReducerMonitoringMailSetting from './monitoringMailSetting/ReducerMonitoringMailSetting';\r\n\r\nconst persistConfig = {\r\n key: 'root',\r\n storage: storage,\r\n whitelist: ['oidc', 'dashboard', 'menu'],\r\n};\r\n\r\nconst reducers = combineReducers({\r\n ReducerDatepicker,\r\n ReducerBoard,\r\n ReducerMonitoring,\r\n ReducerMonitoringModal,\r\n ReducerChart,\r\n ReducerNameServer,\r\n ReducerRecordSetting,\r\n ReducerMonitoringIssue,\r\n ReducerSupportCenter,\r\n ReducerInquiryList,\r\n ReducerTraffic,\r\n ReducerMonitoringModalIssue,\r\n ReducerMonitoringSetting,\r\n ReducerModalState,\r\n ReducerScan,\r\n ReducerRegister,\r\n ReducerDelete,\r\n ReducerRecord,\r\n ReducerFileUpload,\r\n ReducerMonitoringPannel,\r\n ReducerMonitoringModalData,\r\n ReducerTopWriting,\r\n ReducerTag,\r\n ReducerDashboardBill,\r\n ReducerReporting,\r\n ReducerMonitoringMailSetting,\r\n mcs: ReducerMonitoringCurrentSituationSetting,\r\n dashboard: ReducerDashBoardSetting,\r\n oidc: oidcReducer,\r\n menu: ReducerMenu,\r\n});\r\n\r\nconst persistedReducer = persistReducer(persistConfig, reducers);\r\n\r\nconst store = configureStore({\r\n reducer: persistedReducer,\r\n middleware: [thunk, createOidcMiddleware(userManager)],\r\n});\r\n\r\nconst persistor = persistStore(store);\r\n\r\nexport { store, persistor };\r\n","import React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nconst TableNoData = ({ cSpan, rSpan }) => {\r\n const { t } = useTranslation('Lang');\r\n return (\r\n \r\n \r\n {t('데이터가없습니다')}\r\n \r\n \r\n );\r\n};\r\n\r\nexport default TableNoData;\r\n","import React from 'react';\r\n\r\nconst Page404 = (props) => {\r\n return (\r\n
    \r\n
    \r\n

    404 page not found

    \r\n

    찾을 수 없는 페이지입니다.

    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default Page404;\r\n","import{ useEffect } from 'react';\r\nimport userManager from '../../utils/userManager';\r\n\r\nconst Page401 = ({ errorCode, t }) => {\r\n useEffect(() => {\r\n if (errorCode) {\r\n userManager.removeUser();\r\n userManager.signinRedirect();\r\n }\r\n });\r\n return null;\r\n};\r\n\r\nexport default Page401;\r\n","import React, { memo, useState } from 'react';\r\nimport Page404 from './Page404';\r\nimport Page401 from './Page401';\r\nimport { useTranslation } from 'react-i18next';\r\nconst ErrorHandler = memo(({ error }) => {\r\n const { t } = useTranslation('Lang');\r\n switch (error.status) {\r\n case 500:\r\n return
    데이터를 가져오는 중 문제가 발생했습니다
    ;\r\n case 401:\r\n return ;\r\n case 404:\r\n return t('데이터를가져오는중문제가발생했습니다');\r\n case 400:\r\n return t('잘못된요청으로문제가발생했습니다');\r\n default:\r\n return error.message;\r\n }\r\n});\r\n\r\nexport default ErrorHandler;\r\n","import React from 'react';\r\nimport LoadingSpninner from '../dataState/LoadingSpninner';\r\nimport TableNoData from '../dataState/TableNoData';\r\nimport ErrorHandler from '../error/ErrorHandler';\r\n\r\nconst BasicMapTable = ({\r\n TableItem,\r\n data,\r\n loading,\r\n error,\r\n t,\r\n cSpan,\r\n checkItems,\r\n handleSingleCheck,\r\n registerLoading,\r\n nameServer,\r\n domainState,\r\n height,\r\n optionType,\r\n checkboxDisabled,\r\n setCheckBoxDisabled,\r\n downloadOnClick,\r\n handleDeleteOnClick,\r\n handleModifyOnClick,\r\n}) => {\r\n const loadingHeight = height && (height - 100) / 2;\r\n if (loading && (!data || data.length === 0))\r\n return (\r\n \r\n \r\n \r\n {t('로딩중')}\r\n \r\n \r\n ); // 로딩중이고 데이터 없을때만\r\n\r\n if (error) {\r\n return {{}};\r\n }\r\n if (!data || data.length === 0) return ;\r\n return (\r\n <>\r\n {(loading || registerLoading) && (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n {data.map((d, idx) => (\r\n \r\n ))}\r\n \r\n );\r\n};\r\nexport default BasicMapTable;\r\n","import React from 'react';\r\nimport moment from 'moment';\r\n\r\nconst BasicMapTableItem = ({ optionType, checkItems, data, handleSingleCheck, checkboxDisabled }) => {\r\n const AdditionalRow = () => {\r\n if (optionType === 'Tag') {\r\n return (\r\n <>\r\n {data.hostName}\r\n \r\n
    \r\n {data.tagName}\r\n
    \r\n \r\n \r\n );\r\n } else if (optionType === 'DashBoard') {\r\n return (\r\n <>\r\n {data.title}\r\n \r\n );\r\n }\r\n return <>;\r\n };\r\n\r\n const isChecked = () => {\r\n return checkItems.some((mm) => mm.hostId === data.hostId);\r\n }\r\n const isDisabled = () => {\r\n return checkItems.some((mm) => mm.hostId === data.hostId) ? false : checkboxDisabled;\r\n }\r\n return (\r\n \r\n \r\n handleSingleCheck(e.target.checked, data)}\r\n >\r\n \r\n {AdditionalRow()}\r\n \r\n );\r\n};\r\n\r\nexport default BasicMapTableItem;\r\n","import React from 'react';\r\nimport BasicMapTable from '../common/BasicMapTable';\r\nimport BasicMapTableItem from '../common/BasicMapTableItem';\r\nimport _ from 'lodash';\r\nconst BaseTableModal = ({\r\n title,\r\n addHandleModal,\r\n data,\r\n slotComponent,\r\n headerArray,\r\n checkItems,\r\n setCheckItems,\r\n loading,\r\n add,\r\n t,\r\n optionType,\r\n checkboxDisabled,\r\n allCheckboxView,\r\n}) => {\r\n const handleAllCheck = (checked) => {\r\n if (checked) {\r\n const idArray = [];\r\n if (data.length !== 0) {\r\n data.map((m) => idArray.push(m));\r\n setCheckItems(idArray);\r\n }\r\n } else {\r\n setCheckItems([]);\r\n }\r\n };\r\n\r\n const handleSingleCheck = (checked, el) => {\r\n if (checked) {\r\n setCheckItems([...checkItems, el]);\r\n } else {\r\n setCheckItems(checkItems.filter((f) => f.hostId !== el.hostId));\r\n }\r\n };\r\n\r\n const allChecked = () => {\r\n return checkItems.length === data.length;\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n

    {title}

    \r\n {slotComponent}\r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {headerArray.map((m, i) => (\r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n \r\n
    \r\n {allCheckboxView && (\r\n handleAllCheck(e.target.checked)}\r\n >\r\n )}\r\n {m}
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\nexport default BaseTableModal;\r\n","import React, { useEffect, useState } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport BaseTableModal from './BaseTableModal';\r\nimport { SetMenu, SetMenuUpdateTime } from '../../redux/dashboard/ReducerDashBoardSetting';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nconst DashboardSettingModal = ({ addHandleModal }) => {\r\n const data = useSelector((state) => state.dashboard.Menu);\r\n const upTime = useSelector((state) => state.dashboard.MenuUpdateTime);\r\n const [checkItems, setCheckItems] = useState([\r\n { hostId: 1, title: '청구요금 요약정보' },\r\n { hostId: 2, title: '모니터링 이슈현황' },\r\n { hostId: 3, title: '실시간 모니터링현황 A' },\r\n { hostId: 7, title: '문의 내용 처리 현황' },\r\n { hostId: 8, title: '트래픽 현황' },\r\n { hostId: 9, title: '공지사항' },\r\n ]);\r\n\r\n const { t } = useTranslation('Lang');\r\n const dispatch = useDispatch();\r\n const [selected, setSelected] = useState(upTime);\r\n\r\n useEffect(() => {\r\n setCheckItems(data);\r\n }, [data]);\r\n\r\n const [dashboardMenu] = useState([\r\n { hostId: 1, title: '청구요금 요약정보' },\r\n { hostId: 2, title: '모니터링 이슈현황' },\r\n { hostId: 3, title: '실시간 모니터링현황 A' },\r\n { hostId: 4, title: '실시간 모니터링현황 B' },\r\n { hostId: 5, title: '실시간 모니터링현황 C' },\r\n { hostId: 6, title: '실시간 모니터링현황 D' },\r\n { hostId: 7, title: '문의 내용 처리 현황' },\r\n { hostId: 8, title: '트래픽 현황' },\r\n { hostId: 9, title: '공지사항' },\r\n { hostId: 10, title: '보안뉴스' },\r\n ]);\r\n\r\n const add = () => {\r\n dispatch(SetMenu(checkItems));\r\n dispatch(SetMenuUpdateTime(selected));\r\n addHandleModal();\r\n };\r\n\r\n const handleSelect = (e) => {\r\n setSelected(e.target.value);\r\n };\r\n\r\n return (\r\n \r\n
    \r\n 업데이트 주기\r\n \r\n
    \r\n \r\n }\r\n title={'대시보드 설정'}\r\n loading={false}\r\n headerArray={['구분']}\r\n checkItems={checkItems}\r\n setCheckItems={setCheckItems}\r\n addHandleModal={addHandleModal}\r\n add={add}\r\n t={t}\r\n optionType={'DashBoard'}\r\n >\r\n );\r\n};\r\n\r\nexport default DashboardSettingModal;\r\n","export default __webpack_public_path__ + \"static/media/popup_dns_atk_notice.fe4a50e8.png\";","import React from 'react';\r\nimport popupimg from './img/popup/popup_dns_atk_notice.png';\r\n\r\nconst Popup = (props) => (\r\n <>\r\n \"안내\r\n \r\n);\r\n\r\nexport default Popup;","import React, { useEffect, useRef, useState } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { useTranslation } from 'react-i18next';\r\nimport userManager from '../utils/userManager';\r\nimport moment from 'moment';\r\nimport 'moment/locale/ko';\r\nimport 'moment/locale/zh-cn';\r\nimport { useDetectOutsideClick } from './useDetectOutsideClick';\r\n//import { domainAdd } from '../redux/nameserver/ActionNameServer';\r\nimport { persistor } from '../redux/store';\r\nimport { dashboardAction } from '../redux/dashboard/ReducerTopWriting';\r\nimport DashboardSettingModal from './modal/DashboardSettingModal';\r\nimport Popup from './Popup';\r\n\r\nconst HeaderMenu = ({ setLogOutChecked, handleSupportCenterShow, title, handleMeneClick, menuOnOff, asideToggle, handleFullScreen,handleSideClick }) => {\r\n const dispatch = useDispatch();\r\n const user = useSelector((state) => state.oidc.user);\r\n //const { DomainAdd } = useSelector((state) => state.ReducerNameServer);\r\n const [toggleLogin] = useState(false);\r\n const { t } = useTranslation('Lang');\r\n const consoleDropdownRef = useRef(null);\r\n const logonDropdownRef = useRef(null);\r\n const notificationMenuRef = useRef(null);\r\n //const langDropdownRef = useRef(null);\r\n const [isActiveConsole, setIsActiveConsole] = useDetectOutsideClick(consoleDropdownRef, false);\r\n const [isActiveLogon, setIsActiveLogon] = useDetectOutsideClick(logonDropdownRef, false);\r\n const [notificationMenu, setNotificationMenu] = useDetectOutsideClick(notificationMenuRef, false);\r\n //const [isActiveLang, setIsActiveLang] = useDetectOutsideClick(langDropdownRef, false);\r\n const { Data } = useSelector((state) => state.ReducerTopWriting.newNotification);\r\n const [popupView, setPopupView] = useState(false);\r\n const popupCloseOneDay = localStorage.getItem('popupCloseOneDay');\r\n const [previewPop, setPreviewPop] = useState(null);\r\n const [modalView, setModalView] = useState(false);\r\n const [dashboardSetting, setDashboardSetting] = useState(false);\r\n useEffect(() => {\r\n const handleShowModal = () => {\r\n if (new Date('2024-05-14 11:00:00') > new Date()) {\r\n if (popupCloseOneDay && popupCloseOneDay > new Date()) {\r\n return;\r\n } else {\r\n setPopupView(true);\r\n }\r\n } else {\r\n setPopupView(false);\r\n }\r\n };\r\n\r\n window.setTimeout(handleShowModal, 10);\r\n dispatch(dashboardAction.getNewNotification());\r\n }, [popupCloseOneDay, dispatch]);\r\n\r\n useEffect(() => {\r\n if (window.location.pathname === '/' || window.location.pathname.toLowerCase() === '/dashboard') {\r\n setDashboardSetting(true);\r\n } else {\r\n setDashboardSetting(false);\r\n }\r\n }, [window.location.pathname]);\r\n const toggleConsoleOnClick = () => {\r\n setIsActiveConsole(!isActiveConsole);\r\n };\r\n\r\n const toggleLogonOnClick = () => {\r\n setIsActiveLogon(!isActiveLogon);\r\n };\r\n\r\n const onPopup = () => {\r\n const url = 'preview ';\r\n const width = 1000;\r\n const height = 800;\r\n const left = (window.innerWidth - width) / 2;\r\n const top = (window.innerHeight - height) / 2;\r\n const options = `width=${width},height=${height},top=${top},left=${left},toolbar=no,location=no,status=no`;\r\n const previewPop = window.open(url, 'preview', options);\r\n setPreviewPop(previewPop);\r\n };\r\n //const toggleLangOnClick = () => {\r\n // setIsActiveLang(!isActiveLang);\r\n //};\r\n\r\n //const handleModal = () => {\r\n // dispatch(domainAdd(DomainAdd));\r\n //};\r\n\r\n const displayNoneStyle = {\r\n display: 'none',\r\n };\r\n\r\n const displayBlockStyle = {\r\n display: 'block',\r\n };\r\n const handleNotificationMenu = () => {\r\n setNotificationMenu(!notificationMenu);\r\n };\r\n\r\n const handleNotificationRead = (e, id) => {\r\n e.preventDefault();\r\n dispatch(dashboardAction.getReadNotification(id));\r\n };\r\n\r\n const { i18n } = useTranslation();\r\n moment.locale(i18n.language);\r\n //const changelanguageToKo = (e) => {\r\n // e.preventDefault();\r\n // i18n.changeLanguage('ko-KR');\r\n //};\r\n\r\n //const changelanguageToEn = (e) => {\r\n // e.preventDefault();\r\n // i18n.changeLanguage('en-US');\r\n //};\r\n //const changelanguageToCh = (e) => {\r\n // e.preventDefault();\r\n // i18n.changeLanguage('zh-CN');\r\n //};\r\n\r\n const popupclose = () => {\r\n setPopupView(false);\r\n };\r\n\r\n const popupcloseDay = () => {\r\n let expires = new Date();\r\n expires = expires.setHours(expires.getHours() + 24);\r\n localStorage.setItem('popupCloseOneDay', expires);\r\n setPopupView(false);\r\n };\r\n\r\n function login() {\r\n userManager.signinRedirect();\r\n }\r\n\r\n function signOut(e) {\r\n e.preventDefault();\r\n if (window.confirm(t('로그아웃하시겠습니까'))) {\r\n persistor.purge();\r\n setLogOutChecked(true);\r\n userManager.signoutRedirect({ id_token_hint: user.id_token });\r\n userManager.removeUser();\r\n localStorage.clear();\r\n previewPop.close();\r\n //return;\r\n }\r\n }\r\n\r\n const addHandleModal = (e) => {\r\n if (e) {\r\n e.preventDefault();\r\n }\r\n setModalView(!modalView);\r\n };\r\n\r\n useEffect(() => {\r\n if (!asideToggle) {\r\n document.body.style.overflow = 'hidden'; // asideToggle이 false일 때 overflow hidden\r\n } else {\r\n document.body.style.overflow = 'auto'; // asideToggle이 true일 때 overflow 원래대로\r\n }\r\n \r\n // 클린업 함수: 컴포넌트 언마운트 시 스타일 복구\r\n return () => {\r\n document.body.style.overflow = 'auto';\r\n };\r\n }, [asideToggle]); // asideToggle이 변경될 때마다 실행\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n {menuOnOff && (\r\n \r\n arrow_back\r\n \r\n )}\r\n {!menuOnOff && (\r\n \r\n arrow_forward\r\n \r\n )}\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n

    {title}

    \r\n {dashboardSetting && (\r\n \r\n )}\r\n

    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n 지원센터\r\n

    \r\n
    \r\n {dashboardSetting && (\r\n
    \r\n \r\n 대시보드 전체화면\r\n \r\n
    \r\n )}\r\n {/* 로그인 - START */}\r\n {user ? (\r\n {\r\n toggleLogonOnClick();\r\n }}\r\n >\r\n

    \r\n person\r\n

    \r\n \r\n

    \r\n people\r\n {user.profile.name}\r\n

    \r\n
    \r\n \r\n \r\n window.open(\r\n user.profile.role === 'root'\r\n ? `${process.env.REACT_APP_AUTHORITY}/Account/Info`\r\n : `${process.env.REACT_APP_AUTHORITY}/Admin/Edit`,\r\n '_blank'\r\n )\r\n }\r\n >\r\n {t('계정관리')}\r\n \r\n
    \r\n {/*
    \r\n
    \r\n

    \r\n \r\n {user.profile.name}\r\n {t('님')}\r\n \r\n

    \r\n
    \r\n
    \r\n
    \r\n \r\n
    */}\r\n
    \r\n
    \r\n ) : (\r\n
    \r\n

    {}}>\r\n \r\n {t('로그인')}\r\n

    \r\n
    \r\n
    \r\n

    {t('로그인해주세요')}

    \r\n \r\n
    \r\n
    \r\n
    \r\n )}\r\n {/* 로그인 - END */}\r\n
    \r\n

    \r\n {Data.length !== 0 && }\r\n notifications\r\n

    \r\n {notificationMenu && (\r\n
    \r\n \r\n
    \r\n )}\r\n
    \r\n {\r\n toggleConsoleOnClick();\r\n }}\r\n >\r\n

    \r\n apps\r\n

    \r\n \r\n \r\n \r\n \r\n \r\n \r\n {popupView && (\r\n
    \r\n \r\n
    \r\n

    \r\n 오늘 하루 열지않기\r\n

    \r\n

    \r\n 닫기\r\n

    \r\n
    \r\n
    \r\n )}\r\n {modalView && }\r\n \r\n );\r\n};\r\n\r\nexport default HeaderMenu;\r\n","import moment from 'moment';\r\nimport React, { memo } from 'react';\r\nimport { useDispatch } from 'react-redux';\r\nimport { monitoringModalAction } from '../../../redux/monitoring/ReducerMonitoringModal';\r\n\r\nconst MonitoringAllIssueItem = memo(({ data }) => {\r\n let down = moment(new Date(data.downTime)).format('YYYY-MM-DD / HH:mm:ss');\r\n var up = moment(new Date(data.upTime)).format('YYYY-MM/DD / HH:mm');\r\n const dispatch = useDispatch();\r\n\r\n const handleModal = () => {\r\n dispatch(monitoringModalAction.getMonitoringModal({ ip: data.hostName.split('_')[0] }));\r\n };\r\n\r\n return (\r\n \r\n \r\n {data.hostName} {data.tag}\r\n \r\n {data.description}\r\n {down}\r\n {up === 'Invalid date' ? data.upTime : up} \r\n \r\n

    \r\n 확인\r\n

    \r\n \r\n \r\n );\r\n});\r\n\r\nexport default MonitoringAllIssueItem;\r\n","import React from 'react';\r\nimport LoadingSpninner from '../dataState/LoadingSpninner';\r\nimport TableNoData from '../dataState/TableNoData';\r\nimport ErrorHandler from '../error/ErrorHandler';\r\n\r\nconst MonitoringMapPageTable = ({ MonitoringItem, data, loading, error, t, cSpan, numberState, height }) => {\r\n const loadingHeight = height && (height - 100) / 2;\r\n\r\n if (loading && !data)\r\n return (\r\n \r\n \r\n \r\n {t('로딩중')}...\r\n \r\n \r\n ); // 로딩중이고 데이터 없을때만\r\n\r\n if (error) {\r\n return (\r\n \r\n {}\r\n \r\n );\r\n }\r\n\r\n if (!data || data.data.length === 0) return ;\r\n\r\n let no = numberState && data.totalCount - (data.nowPage - 1) * 10;\r\n return (\r\n <>\r\n {loading && (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n {data.data.map((d, idx) => (\r\n \r\n ))}\r\n \r\n );\r\n};\r\n\r\nexport default MonitoringMapPageTable;\r\n","import React, { memo, useEffect, useState } from 'react';\r\nimport Paginate from 'react-paginate';\r\nimport { useSelector } from 'react-redux';\r\nimport MonitoringAllIssueItem from './MonitoringAllIssueItem';\r\nimport MonitoringMapPageTable from '../../common/MonitoringMapPageTable';\r\nimport LoadingSpninner from '../../dataState/LoadingSpninner';\r\nconst MonitoringAllissue = memo(({ t }) => {\r\n const { allIssueData, allIssueLoading, allIssueError } = useSelector((state) => state.ReducerMonitoringIssue.allIssue);\r\n const [data, setData] = useState(null);\r\n const [dataLoading, setDataLoading] = useState(null);\r\n\r\n const handlePageClick = (selectedPage) => {\r\n setDataLoading(true);\r\n setData({ ...data, data: allIssueData.data.slice(selectedPage.selected * 6, 6 * (selectedPage.selected + 1)) });\r\n setTimeout(() => setDataLoading(null), 100);\r\n };\r\n\r\n useEffect(() => {\r\n allIssueData && setData({ data: allIssueData.data.slice(0, 6) });\r\n }, [allIssueData]);\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {dataLoading && (\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n
    IP/Tag{t('이슈')}{t('다운시간')}{t('업시간상태')}{t('확인')}
    \r\n \r\n
    \r\n
    \r\n {allIssueData && (\r\n '}\r\n previousClassName={'prev'}\r\n nextClassName={'next'}\r\n activeClassName={'active'}\r\n onPageChange={handlePageClick}\r\n />\r\n )}\r\n
    \r\n
    \r\n
    \r\n );\r\n});\r\n\r\nexport default MonitoringAllissue;\r\n","import React from 'react';\r\nimport LoadingSpninner from '../dataState/LoadingSpninner';\r\nimport TableNoData from '../dataState/TableNoData';\r\nimport ErrorHandler from '../error/ErrorHandler';\r\n\r\nconst MonitoringMapTable = ({\r\n MonitoringItem,\r\n data,\r\n loading,\r\n error,\r\n t,\r\n cSpan,\r\n checkItems,\r\n handleSingleCheck,\r\n registerLoading,\r\n hostId,\r\n nameServer,\r\n domainState,\r\n height,\r\n numberState,\r\n}) => {\r\n const loadingHeight = height && (height - 100) / 2;\r\n if (loading && (!data || data.length === 0))\r\n return (\r\n \r\n \r\n \r\n {t('로딩중')}\r\n \r\n \r\n ); // 로딩중이고 데이터 없을때만\r\n\r\n if (error) {\r\n return {{}};\r\n }\r\n if (nameServer) {\r\n if (!domainState) return ;\r\n }\r\n if (!data || data.length === 0) return ;\r\n return (\r\n <>\r\n {(loading || registerLoading) && (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n {data.map((d, idx) => (\r\n \r\n ))}\r\n \r\n );\r\n};\r\n\r\nexport default MonitoringMapTable;\r\n","import moment from 'moment';\r\nimport React, { memo } from 'react';\r\nimport { useDispatch } from 'react-redux';\r\nimport { monitoringModalAction } from '../../../redux/monitoring/ReducerMonitoringModal';\r\n\r\nconst MonitoringCurrentIssueItem = memo(({ data, t }) => {\r\n let down = moment(data.downTime).format('YYYY-MM-DD / HH:mm:ss');\r\n var b = moment(data.downTime)._d;\r\n let t1 = moment.duration(moment(new Date()).diff(b));\r\n let { years, months, days, hours, minutes, seconds } = t1._data;\r\n let dateDiff = '';\r\n if (years !== 0) {\r\n dateDiff += years + t('년') + ' ';\r\n }\r\n if (months !== 0) {\r\n dateDiff += months + t('개월') + ' ';\r\n }\r\n if (days !== 0) {\r\n dateDiff += days + t('일') + ' ';\r\n }\r\n if (hours !== 0) {\r\n dateDiff += hours + t('시간') + ' ';\r\n }\r\n if (minutes !== 0) {\r\n dateDiff += minutes + t('분') + ' ';\r\n }\r\n if (seconds !== 0) {\r\n dateDiff += seconds + t('초');\r\n }\r\n\r\n const dispatch = useDispatch();\r\n \r\n const handleModal = () => {\r\n dispatch(monitoringModalAction.getMonitoringModal({ ip : data.hostName.split('_')[0]}));\r\n };\r\n\r\n return (\r\n \r\n \r\n {data.hostName.split('_')[0]}\r\n {data.tag && ' / ' + data.tag}\r\n \r\n {data.description}\r\n {down}\r\n {dateDiff}\r\n \r\n \r\n {data.status}\r\n \r\n \r\n

    \r\n 확인\r\n

    \r\n \r\n \r\n );\r\n});\r\n\r\nexport default MonitoringCurrentIssueItem;\r\n","import React, { memo, useEffect, useRef, useState } from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport MonitoringMapTable from '../../common/MonitoringMapTable';\r\nimport MonitoringIssueItem from './MonitoringIssueItem';\r\n\r\nconst MonitoringCurrentIssue = memo(({ t }) => {\r\n const { issueData, issueLoading, issueError } = useSelector((state) => state.ReducerMonitoringIssue.currentIssue);\r\n\r\n \r\n\r\n const [height, setHeight] = useState(0);\r\n const ref = useRef(null);\r\n useEffect(() => {\r\n if (ref.current) {\r\n setHeight(ref.current.clientHeight);\r\n }\r\n }, [ref, issueData]);\r\n\r\n \r\n return (\r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    IP/Tag{t('이슈')}{t('다운시간')}{t('지속시간')}{t('상태')}{t('확인')}
    \r\n
    \r\n
    \r\n );\r\n});\r\nexport default MonitoringCurrentIssue;\r\n","import React, { useEffect, useState } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { monitoringIssueAction } from '../../../redux/monitoring/ReducerMontiroingIssue';\r\nimport MonitoringAllissue from './MonitoringAllissue';\r\nimport MonitoringCurrentIssue from './MonitoringCurrentIssue';\r\n\r\nconst MonitoringIssue = (props) => {\r\n const [showIssueMenu, setShowIssueMenu] = useState(true);\r\n const [showAllIssueMenu, setShowAllIssueMenu] = useState(false);\r\n const [initialized, setInitialized] = useState(false);\r\n const { t } = useTranslation('Lang');\r\n const dispatch = useDispatch();\r\n const { upTime, isMenuChanged } = useSelector((state) => state.dashboard);\r\n useEffect(() => {\r\n if (!initialized) {\r\n dispatch(monitoringIssueAction.getDashBoardCurrentIssues());\r\n dispatch(monitoringIssueAction.getDashBoardAllIssues(1));\r\n setInitialized(true);\r\n }\r\n\r\n const intervalId = setInterval(() => {\r\n dispatch(monitoringIssueAction.getDashBoardCurrentIssues());\r\n dispatch(monitoringIssueAction.getDashBoardAllIssues(1));\r\n }, upTime || 60000);\r\n return () => clearInterval(intervalId);\r\n }, [dispatch, initialized, upTime, isMenuChanged]);\r\n\r\n const handleShowMenu = () => {\r\n setShowIssueMenu(true);\r\n setShowAllIssueMenu(false);\r\n };\r\n const handleAllShowMenu = () => {\r\n setShowIssueMenu(false);\r\n setShowAllIssueMenu(true);\r\n };\r\n\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n

    {t('모니터링이슈')}

    \r\n
      \r\n
    • \r\n {t('현재이슈')}\r\n
    • \r\n
    • \r\n {t('모든이슈')}\r\n
    • \r\n
    \r\n
    \r\n
    \r\n {showIssueMenu && }\r\n {showAllIssueMenu && }\r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default MonitoringIssue;\r\n","import axios from 'axios';\r\nimport {\r\n TRAFFIC_IP_REQUEST,\r\n TRAFFIC_IP_SUCCESS,\r\n TRAFFIC_IP_ERROR,\r\n TRAFFIC_FULLDATA_REQUEST,\r\n TRAFFIC_FULLDATA_SUCCESS,\r\n TRAFFIC_FULLDATA_ERROR,\r\n TRAFFIC_FULLDATA_REQUEST1,\r\n TRAFFIC_FULLDATA_SUCCESS1,\r\n TRAFFIC_FULLDATA_ERROR1,\r\n TRAFFIC_FULLDATA_REQUEST2,\r\n TRAFFIC_FULLDATA_SUCCESS2,\r\n TRAFFIC_FULLDATA_ERROR2,\r\n TRAFFIC_FULLDATA_REQUEST3,\r\n TRAFFIC_FULLDATA_SUCCESS3,\r\n TRAFFIC_FULLDATA_ERROR3,\r\n TRAFFIC_ALLDATA_REQUEST,\r\n TRAFFIC_ALLDATA_SUCCESS,\r\n TRAFFIC_ALLDATA_ERROR,\r\n TRAFFIC_ACCOUNT_MODAL,\r\n TRAFFIC_CACHE_IP,\r\n} from './TrafficType';\r\n\r\nexport const getTrafficIP = (tmp, state, setClickIp, setTmp) => async (dispatch) => {\r\n dispatch({\r\n type: TRAFFIC_IP_REQUEST,\r\n });\r\n\r\n try {\r\n return await axios\r\n .create({\r\n withCredentials: false,\r\n headers: {\r\n 'Access-Control-Allow-Origin': '*',\r\n 'Access-Control-Allow-Methods': 'GET,PUT,POST,DELETE,PATCH,OPTIONS',\r\n },\r\n })\r\n .get(process.env.REACT_APP_REQUEST_API_URL + `Traffic`)\r\n .then((res) => {\r\n dispatch({ type: TRAFFIC_IP_SUCCESS, payload: res.data });\r\n if (tmp === 0) {\r\n setClickIp(res.data.data[0].serverIdx);\r\n setTmp(tmp + 1);\r\n }\r\n });\r\n } catch (e) {\r\n dispatch({\r\n type: TRAFFIC_IP_ERROR,\r\n error: e,\r\n });\r\n }\r\n};\r\n\r\n//트래픽 그래프\r\nexport const getTrafficFullData = (id, number, startDate, endDate, interfaceIdx = 0) => async (dispatch) => {\r\n let REQUEST = '';\r\n let SUCCESS = '';\r\n let ERROR = '';\r\n\r\n if (number === 1) {\r\n REQUEST = TRAFFIC_FULLDATA_REQUEST1;\r\n SUCCESS = TRAFFIC_FULLDATA_SUCCESS1;\r\n ERROR = TRAFFIC_FULLDATA_ERROR1;\r\n } else if (number === 2) {\r\n REQUEST = TRAFFIC_FULLDATA_REQUEST2;\r\n SUCCESS = TRAFFIC_FULLDATA_SUCCESS2;\r\n ERROR = TRAFFIC_FULLDATA_ERROR2;\r\n } else if (number === 3) {\r\n REQUEST = TRAFFIC_FULLDATA_REQUEST3;\r\n SUCCESS = TRAFFIC_FULLDATA_SUCCESS3;\r\n ERROR = TRAFFIC_FULLDATA_ERROR3;\r\n } else {\r\n REQUEST = TRAFFIC_FULLDATA_REQUEST;\r\n SUCCESS = TRAFFIC_FULLDATA_SUCCESS;\r\n ERROR = TRAFFIC_FULLDATA_ERROR;\r\n }\r\n\r\n dispatch({\r\n type: REQUEST,\r\n });\r\n\r\n try {\r\n if (startDate === undefined || endDate === undefined) {\r\n startDate = '';\r\n endDate = '';\r\n } else {\r\n }\r\n\r\n if (id) {\r\n if (Array.isArray(id)) {\r\n return await axios\r\n .create({\r\n withCredentials: false,\r\n headers: {\r\n 'Access-Control-Allow-Origin': '*',\r\n 'Access-Control-Allow-Methods': 'GET,PUT,POST,DELETE,PATCH,OPTIONS',\r\n },\r\n })\r\n .get(\r\n process.env.REACT_APP_REQUEST_API_URL +\r\n `Traffic/FullData?${id.map((m, i) => `serverIdxs=${m}`).join('&')}&startDate=${startDate}&endDate=${endDate}`\r\n )\r\n .then((res) => dispatch({ type: SUCCESS, payload: res.data }));\r\n } else {\r\n let url = process.env.REACT_APP_REQUEST_API_URL + `Traffic/FullData?serverIdxs=${id}&startDate=${startDate}&endDate=${endDate}`;\r\n if(interfaceIdx !== 0){\r\n url = process.env.REACT_APP_REQUEST_API_URL + `Traffic/FullData/${id}/${interfaceIdx}?startDate=${startDate}&endDate=${endDate}`;\r\n }\r\n return await axios\r\n .create({\r\n withCredentials: false,\r\n headers: {\r\n 'Access-Control-Allow-Origin': '*',\r\n 'Access-Control-Allow-Methods': 'GET,PUT,POST,DELETE,PATCH,OPTIONS',\r\n },\r\n })\r\n .get(url)\r\n .then((res) => dispatch({ type: SUCCESS, payload: res.data }));\r\n }\r\n } else {\r\n return await axios\r\n .create({\r\n withCredentials: false,\r\n headers: {\r\n 'Access-Control-Allow-Origin': '*',\r\n 'Access-Control-Allow-Methods': 'GET,PUT,POST,DELETE,PATCH,OPTIONS',\r\n },\r\n })\r\n .get(process.env.REACT_APP_REQUEST_API_URL + `Traffic/FullData&startDate=${startDate}&endDate=${endDate}`)\r\n .then((res) => dispatch({ type: SUCCESS, payload: res.data }));\r\n }\r\n } catch (e) {\r\n dispatch({\r\n type: ERROR,\r\n error: e,\r\n });\r\n }\r\n};\r\n\r\nexport const getTrafficAllData = (id, startDate, endDate, interfaceIdx = 0) => async (dispatch) => {\r\n dispatch({\r\n type: TRAFFIC_ALLDATA_REQUEST,\r\n });\r\n\r\n try {\r\n let url = process.env.REACT_APP_REQUEST_API_URL + `Traffic/${id}?startDate=${startDate}&endDate=${endDate}`;\r\n if(interfaceIdx !== 0){\r\n url = process.env.REACT_APP_REQUEST_API_URL + `Traffic/${id}/${interfaceIdx}?startDate=${startDate}&endDate=${endDate}`\r\n }\r\n if (id && startDate && endDate) {\r\n return await axios\r\n .create({\r\n withCredentials: false,\r\n headers: {\r\n 'Access-Control-Allow-Origin': '*',\r\n 'Access-Control-Allow-Methods': 'GET,PUT,POST,DELETE,PATCH,OPTIONS',\r\n },\r\n })\r\n .get(url)\r\n .then((res) => {\r\n dispatch({ type: TRAFFIC_ALLDATA_SUCCESS, payload: res.data });\r\n });\r\n } else {\r\n }\r\n } catch (e) {\r\n dispatch({\r\n type: TRAFFIC_ALLDATA_ERROR,\r\n error: e,\r\n });\r\n }\r\n};\r\n\r\nexport const trafficAccountModal = (state) => {\r\n return {\r\n type: TRAFFIC_ACCOUNT_MODAL,\r\n state,\r\n };\r\n};\r\n\r\nexport const trafficCacheIP = (state) => {\r\n return {\r\n type: TRAFFIC_CACHE_IP,\r\n state,\r\n };\r\n};\r\n","import React, { useEffect, useState } from 'react';\r\nimport { Line } from 'react-chartjs-2';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { getTrafficFullData } from '../../redux/traffic/ActionTraffic';\r\nimport LoadingSpninner from '../dataState/LoadingSpninner';\r\nimport { useTranslation } from 'react-i18next';\r\nimport 'chartjs-plugin-annotation';\r\n\r\nconst TrafficDetailGraph = ({ width, height, clickIp, number,startDate, endDate, tmp, subInterfaceIndx }) => {\r\n const dispatch = useDispatch();\r\n const { trafficFullDataLoading, trafficFullData, trafficFullDataError, } = useSelector((state) => state.ReducerTraffic);\r\n const [unit, setUnit] = useState(\"bps\");\r\n\r\n tmp === undefined ? (tmp = 0) : (tmp = tmp);\r\n let totalData = '';\r\n let totalDateTime = '';\r\n let inTotalBytes = 0;\r\n let outTotalBytes = 0;\r\n let inTotalBps = 0;\r\n let outTotalBps = 0;\r\n let bandUnit = '';\r\n let trafficUnit = '';\r\n let loading = '';\r\n let data = '';\r\n let error = '';\r\n\r\n loading = trafficFullDataLoading;\r\n data = trafficFullData;\r\n error = trafficFullDataError;\r\n\r\n useEffect(() => {\r\n let isMounted = true;\r\n\r\n if (clickIp && isMounted) {\r\n dispatch(getTrafficFullData(clickIp, number, startDate, endDate, subInterfaceIndx));\r\n }\r\n return () => {\r\n isMounted = false;\r\n };\r\n }, [clickIp, number, startDate, endDate, subInterfaceIndx]);\r\n\r\n const { t } = useTranslation('Lang');\r\n\r\n if (data) {\r\n /* Common Data */\r\n totalData = data.data;\r\n if (data.data) {\r\n totalData = Object.keys(totalData).map((key) => totalData[key]);\r\n totalDateTime = totalData.map((i) => i.trafficDateTime);\r\n\r\n /* In/Out TotalBytes */\r\n inTotalBytes = totalData.map((i) => i.inTotalBytes);\r\n outTotalBytes = totalData.map((i) => i.outTotalBytes);\r\n trafficUnit = totalData[0].trafficUnit;\r\n\r\n /* In/Out TotalBps */\r\n inTotalBps = totalData.map((i) => i.inMaxBps);\r\n outTotalBps = totalData.map((i) => i.outMaxBps);\r\n bandUnit = totalData[0].bandUnit;\r\n }\r\n }\r\n\r\n const BpsFillData = {\r\n type: 'lineWithline',\r\n labels: totalDateTime,\r\n datasets: [\r\n {\r\n backgroundColor: 'rgba(54, 240, 15, .2)',\r\n borderColor: 'yellowgreen',\r\n pointBackgroundColor: 'transparent',\r\n pointBorderColor: 'transparent',\r\n label: 'in ',\r\n data: inTotalBps,\r\n borderWidth: 1,\r\n lineTension: 0,\r\n },\r\n {\r\n backgroundColor: 'transparent',\r\n borderColor: 'blue',\r\n pointBackgroundColor: 'transparent',\r\n pointBorderColor: 'transparent',\r\n label: 'out ',\r\n data: outTotalBps,\r\n borderWidth: 1,\r\n lineTension: 0,\r\n type: 'line',\r\n },\r\n ],\r\n };\r\n\r\n const BytesFillData = {\r\n type: 'lineWithline',\r\n labels: totalDateTime,\r\n datasets: [\r\n {\r\n backgroundColor: 'rgba(54, 240, 15, .2)',\r\n borderColor: 'yellowgreen',\r\n pointBackgroundColor: 'transparent',\r\n pointBorderColor: 'transparent',\r\n label: 'in ',\r\n data: inTotalBytes,\r\n borderWidth: 1,\r\n lineTension: 0,\r\n strokeColor: 'rgba(220,20,20,1)',\r\n pointColor: 'rgba(220,20,20,1)',\r\n },\r\n {\r\n backgroundColor: 'transparent',\r\n borderColor: 'blue',\r\n pointBackgroundColor: 'transparent',\r\n pointBorderColor: 'transparent',\r\n label: 'out ',\r\n data: outTotalBytes,\r\n borderWidth: 1,\r\n lineTension: 0,\r\n type: 'line',\r\n strokeColor: 'rgba(220,20,20,1)',\r\n pointColor: 'rgba(220,20,20,1)',\r\n },\r\n ],\r\n };\r\n\r\n /* Loading */\r\n if (loading && !error)\r\n return (\r\n
    \r\n \r\n
    \r\n ); // 로딩중이고 데이터 없을때만\r\n if (error) {\r\n return error.message;\r\n }\r\n\r\n if (data) {\r\n } else {\r\n return
    {t('데이터가없습니다')}
    ;\r\n }\r\n\r\n var time = new Date().setHours(0, 0, 0, 0);\r\n time = Math.floor(time);\r\n\r\n var line = [\r\n {\r\n type: 'line',\r\n mode: 'vertical',\r\n scaleID: 'x-axis-0',\r\n value: time,\r\n borderColor: 'rgba(171,171,171,1)',\r\n borderWidth: 1.2,\r\n },\r\n ];\r\n\r\n const option = {\r\n maintainAspectRatio: false,\r\n tooltips: {\r\n enabled: true,\r\n mode: 'index',\r\n position: 'average',\r\n intersect: false,\r\n yAlign: 'bottom',\r\n callbacks: {\r\n labelColor: function (item, chart) {\r\n if (item.datasetIndex === 0) {\r\n return {\r\n backgroundColor: 'rgba(54, 240, 15, .2)',\r\n };\r\n } else {\r\n return {\r\n backgroundColor: '#4250ff',\r\n };\r\n }\r\n },\r\n label: function (item) {\r\n return `${item.datasetIndex === 0 ? 'in' : 'out'}: ${item.value} ${unit === 'bps' ? trafficUnit : bandUnit}`;\r\n },\r\n },\r\n },\r\n annotation: {\r\n annotations: tmp === 0 || tmp === 1 ? line : [],\r\n },\r\n hover: {\r\n mode: 'nearest',\r\n intersect: true,\r\n },\r\n scales: {\r\n xAxes: [\r\n {\r\n display: true,\r\n scaleLabel: {\r\n display: true,\r\n },\r\n type: 'time',\r\n time: {\r\n tooltipFormat: 'YYYY-MM-DD aHH:mm',\r\n unit: startDate === '' || startDate === endDate ? 'hour' : 'day',\r\n displayFormats: {\r\n hour: 'HH',\r\n day: 'MM-DD',\r\n },\r\n },\r\n gridLines: {\r\n zeroLineColor: '', //'rgba(229,229,229,1)',\r\n color: tmp === 0 || tmp === 1 ? '' : 'rgba(195,195,195,1)', //'rgba(206,206,206,1)'\r\n },\r\n ticks: {\r\n beginAtZero: true,\r\n callback: function (val, i, values) {\r\n var checkIdx = val == '00' ? (checkIdx = i) : 0;\r\n return val == '00' ? (i == checkIdx ? '00' : val) : val;\r\n },\r\n },\r\n },\r\n ],\r\n yAxes: [\r\n {\r\n scaleLabel: {\r\n display: true,\r\n labelString: unit === 'bps' ? trafficUnit : bandUnit,\r\n fontFamily: 'Noto Sans KR',\r\n fontSize: 12,\r\n },\r\n ticks: {\r\n beginAtZero: true,\r\n min: 0,\r\n },\r\n },\r\n ],\r\n },\r\n };\r\n\r\n return (\r\n <>\r\n
      \r\n
    • setUnit('byte')}>\r\n bps\r\n
    • \r\n
    • setUnit('bps')}>\r\n byte\r\n
    • \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default TrafficDetailGraph;\r\n","import React, { useEffect, useState } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport TrafficDashBoard from './TrafficDashBoard';\r\nimport { mcsAction } from '../../redux/dashboard/ReducerMonitoringCurrentSituationSetting';\r\nimport TrafficDetailGraph from './TrafficDetailGraph';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nconst TrafficDashBoardContainer = ({ tagAddModalHandle }) => {\r\n const dispatch = useDispatch();\r\n const { t } = useTranslation('Lang');\r\n const { Tmonitoring } = useSelector((state) => state.mcs);\r\n const [initialized, setInitialized] = useState(false);\r\n const { upTime, isMenuChanged } = useSelector((state) => state.dashboard);\r\n const [loading, setLoading] = useState(false);\r\n const [data, setData] = useState([]);\r\n useEffect(() => {\r\n setLoading(true);\r\n if (!initialized) {\r\n dispatch(mcsAction.getMonitoringCurrentSituationSetting('T')).finally(() => setLoading(false));\r\n setInitialized(true);\r\n }\r\n\r\n const intervalId = setInterval(() => {\r\n dispatch(mcsAction.getMonitoringCurrentSituationSetting('T'));\r\n }, upTime || 60000);\r\n\r\n return () => clearInterval(intervalId);\r\n }, [initialized, upTime, isMenuChanged]);\r\n\r\n useEffect(() => {\r\n if (Tmonitoring.length === 0) return;\r\n const firstServerIdx = Tmonitoring?.[0]?.serverIdx ?? null;\r\n setData((prevData) => {\r\n if (prevData.length === 0) {\r\n return [firstServerIdx];\r\n } else {\r\n return [...prevData];\r\n }\r\n });\r\n }, [Tmonitoring]);\r\n\r\n const clickIpSelect = (m) => {\r\n setData([m.serverIdx]);\r\n };\r\n return (\r\n
    \r\n
    \r\n

    {t('트래픽현황')}

    \r\n
    \r\n tagAddModalHandle('T')}>\r\n settings\r\n \r\n
    \r\n
    \r\n {Tmonitoring.length === 0 ? (\r\n '트래픽 IP를 설정해 주세요.'\r\n ) : (\r\n <>\r\n
    \r\n {Tmonitoring.map((m, i) => (\r\n clickIpSelect(m)}\r\n >\r\n {m.hostName}\r\n \r\n ))}\r\n
    \r\n {/* */}\r\n {data.length > 0 && (\r\n \r\n )}\r\n \r\n )}\r\n
    \r\n
    \r\n
    \r\n\r\n // <>\r\n // \r\n // \r\n );\r\n};\r\n\r\nexport default TrafficDashBoardContainer;\r\n","import React from 'react';\r\nimport moment from 'moment';\r\n\r\nconst TopWritingItems = ({ data,optionType }) => {\r\n let regdate = moment(new Date(data.regDate)).format('YYYY.MM.DD hh:mm');\r\n return (\r\n \r\n \r\n {data.subject}\r\n \r\n {regdate}\r\n \r\n );\r\n};\r\n\r\nexport default TopWritingItems;\r\n","import React, { useEffect, useRef} from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport BasicMapTable from '../common/BasicMapTable';\r\nimport TopWritingItems from './TopWritingItems';\r\nimport { dashboardAction } from '../../redux/dashboard/ReducerTopWriting';\r\n\r\nconst NoticeTopWriting = (props) => {\r\n const dispatch = useDispatch();\r\n const ref = useRef(null);\r\n const { Loading, Data, Error } = useSelector((state) => state.ReducerTopWriting.notice);\r\n const { t } = useTranslation('Lang');\r\n\r\n useEffect(() => {\r\n dispatch(dashboardAction.getNoticeTopWriting());\r\n }, []);\r\n\r\n return (\r\n
    \r\n
    \r\n

    \r\n 공지사항\r\n open_in_new\r\n

    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    제목시간
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default NoticeTopWriting;\r\n","\r\nimport moment from 'moment';\r\nimport React, { useEffect } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport LoadingSpninner from '../dataState/LoadingSpninner';\r\nimport { dashboardAction } from '../../redux/dashboard/ReducerTopWriting';\r\n\r\nconst NotificationTopWriting = (props) => {\r\n const dispatch = useDispatch();\r\n const { Loading, Data, Error } = useSelector((state) => state.ReducerTopWriting.notification);\r\n\r\n useEffect(() => {\r\n dispatch(dashboardAction.getNotificationTopWriting());\r\n }, []);\r\n\r\n return (\r\n
    \r\n
    \r\n

    \r\n 문의 내역 알림 open_in_new\r\n

    \r\n
    \r\n <>{Loading && }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {Data &&\r\n Data.map((d, idx) => (\r\n \r\n \r\n \r\n \r\n \r\n ))}\r\n
     제목시간
    \r\n notifications\r\n {d.deepLink ? {d.title} : d.title}{moment(new Date(d.regDate)).format('YYYY.MM.DD hh:mm')}
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default NotificationTopWriting;\r\n","import React, { useEffect, useRef, useState } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport { monitoringModalAction, reset } from '../../redux/monitoring/ReducerMonitoringModal';\r\nimport { mcsAction } from '../../redux/dashboard/ReducerMonitoringCurrentSituationSetting';\r\nimport _ from 'lodash';\r\nimport BaseTableModal from './BaseTableModal';\r\nconst MonitoringCurrentSituationSetting = ({ tagAddModalHandle, monitoringType }) => {\r\n const { data, loading, error } = useSelector((state) => state.ReducerMonitoringModal.ServersTag);\r\n const { [`${monitoringType}monitoring`]: selectData } = useSelector((state) => state.mcs);\r\n const searchRef = useRef(null);\r\n const { t } = useTranslation('Lang');\r\n const dispatch = useDispatch();\r\n const [checkItems, setCheckItems] = useState(selectData);\r\n const [tagGroup, setTagGroup] = useState([]);\r\n const [headerArray] = useState(['HOST명', '등록된 태그']);\r\n const [checkboxDisabled, setCheckboxDisabled] = useState(false);\r\n\r\n useEffect(() => {\r\n dispatch(monitoringModalAction.getMonitoringServersTag(''));\r\n }, []);\r\n\r\n useEffect(() => {\r\n setCheckboxDisabled(false);\r\n\r\n if (checkItems.length > 4 && isTrafficType()) {\r\n setCheckboxDisabled(true);\r\n }\r\n if (monitoringType === 'T'){\r\n setTagGroup(_.map(_.groupBy(checkItems, 'hostName'), (group) => ({ tagName: group[0].hostName, hostId: group[0].hostId })));\r\n }else{\r\n setTagGroup(_.map(_.groupBy(checkItems, 'tagName'), (group) => ({ tagName: group[0].tagName, hostId: group[0].hostId })));\r\n }\r\n }, [checkItems]);\r\n\r\n const handleSearch = (e) => {\r\n e.preventDefault();\r\n dispatch(reset());\r\n if (loading) {\r\n return alert(t('이미 검색중입니다. 잠시만기달려주세요'));\r\n }\r\n dispatch(monitoringModalAction.getMonitoringServersTag(searchRef.current.value));\r\n };\r\n\r\n const tagAdd = () => {\r\n if (checkItems.length === 0) {\r\n return alert('하나이상 선택하세요.');\r\n }\r\n\r\n if (checkItems.length > 5 && isTrafficType()) {\r\n return alert('트래픽 설정은 5개를 초과할수 없습니다.');\r\n }\r\n dispatch(mcsAction.setMonitoringCurrentSituationSetting({ type: monitoringType, data: checkItems }));\r\n tagAddModalHandle();\r\n };\r\n\r\n const tagDelete = (info) => {\r\n setCheckItems(checkItems.filter((f) => f.tagName !== info.tagName));\r\n };\r\n const title = () => {\r\n return isTrafficType ? '트래픽 설정' : `${monitoringType} 모니터링 현황 설정`;\r\n };\r\n\r\n const isTrafficType = () => {\r\n return monitoringType === 'T' ? true : false;\r\n };\r\n\r\n return (\r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n {tagGroup.length === 0 ? (\r\n 선택안함\r\n ) : (\r\n tagGroup.map((m, i) => (\r\n \r\n {m.tagName}\r\n tagDelete(m)}>\r\n close\r\n \r\n \r\n ))\r\n )}\r\n
    \r\n {isTrafficType() &&

    ※트래픽IP는 최대 5개까지 설정 가능합니다.

    }\r\n \r\n }\r\n allCheckboxView={!isTrafficType()}\r\n checkboxDisabled={checkboxDisabled}\r\n checkItems={checkItems}\r\n setCheckItems={setCheckItems}\r\n addHandleModal={tagAddModalHandle}\r\n add={tagAdd}\r\n t={t}\r\n optionType={'Tag'}\r\n >\r\n );\r\n};\r\n\r\nexport default MonitoringCurrentSituationSetting;\r\n","import React, { useEffect, useState, memo } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { pannelAction } from '../../redux/monitoring/ReducerMonitoringPannel';\r\nimport LoadingSpninner from '../dataState/LoadingSpninner';\r\nimport _ from 'lodash';\r\nimport { mcsAction } from '../../redux/dashboard/ReducerMonitoringCurrentSituationSetting';\r\nimport ErrorHandler from '../error/ErrorHandler';\r\nimport { monitoringModalAction } from '../../redux/monitoring/ReducerMonitoringModal';\r\nconst Popup = memo(({ serverTagData,tagAddModalHandle, Type }) => {\r\n const dispatch = useDispatch();\r\n const [onPercent, setOnPercent] = useState(0);\r\n const [onPercentAnimation, setOnPercentAnimation] = useState(0);\r\n const [downPercent, setDownPercent] = useState(0);\r\n const [downPercentAnimation, setDownPercentAnimation] = useState(0);\r\n\r\n const [nonRegisteredPercent, setNonRegisteredPercent] = useState(0);\r\n const [nonRegisteredAnimation, setNonRegisteredAnimation] = useState(0);\r\n const [allSelcet, setAllSelect] = useState(true);\r\n const { upTime, isMenuChanged } = useSelector((state) => state.dashboard);\r\n\r\n const [onCount, setOnCount] = useState(0);\r\n const [downCount, setDownCount] = useState(0);\r\n const [nonRegisteredCount, setNonRegisteredCount] = useState(0);\r\n const [isDarkMode, setIsDarkMode] = useState(false);\r\n\r\n const [tagGroup, setTagGroup] = useState([]);\r\n const { [`${Type}monitoring`]: data, loading, error } = useSelector((state) => state.mcs);\r\n //const [serverTagData, setServerTagDate] = useState(0);\r\n const [initialized, setInitialized] = useState(false);\r\n const [viewTag, setViewTag] = useState(false);\r\n const [isLoading, setIsLoading] = useState(true);\r\n useEffect(() => {\r\n if (!initialized) {\r\n dispatch(mcsAction.getMonitoringCurrentSituationSetting(Type));\r\n setInitialized(true);\r\n }\r\n\r\n const intervalId = setInterval(() => {\r\n dispatch(mcsAction.getMonitoringCurrentSituationSetting(Type));\r\n }, upTime || 60000);\r\n\r\n return () => {\r\n clearInterval(intervalId);\r\n };\r\n }, [dispatch, initialized, upTime, isMenuChanged]);\r\n\r\n useEffect(() => {\r\n setIsLoading(true);\r\n animationInit();\r\n action();\r\n setTagGroup(\r\n _.chain(data.filter((f) => f.type === Type || f.type === null))\r\n .groupBy('tagName')\r\n .map((g) => ({\r\n tagName: _.get(_.find(g, 'tagName'), 'tagName'),\r\n hostName: g.map((m) => m.hostName),\r\n }))\r\n .value()\r\n );\r\n }, [data]);\r\n\r\n useEffect(() => {\r\n let intervalId;\r\n const makeChart = () => {\r\n intervalId = setInterval(() => {\r\n if (onPercentAnimation < onPercent) {\r\n setOnPercentAnimation((prevPercent) => prevPercent + 1);\r\n } else {\r\n clearInterval(intervalId);\r\n }\r\n }, 10);\r\n\r\n return () => clearInterval(intervalId);\r\n };\r\n makeChart();\r\n return () => clearInterval(intervalId);\r\n }, [onPercentAnimation, onPercent]);\r\n\r\n useEffect(() => {\r\n const tagGroupLength = tagGroup.reduce((total, item) => total + item.hostName.length, 0);\r\n const isAllSelected = serverTagData === tagGroupLength;\r\n console.log('serverTagData :' + serverTagData);\r\n console.log('tagGroupLength : ' + tagGroupLength);\r\n console.log(tagGroup);\r\n setAllSelect(isAllSelected);\r\n }, [tagGroup, serverTagData]);\r\n\r\n useEffect(() => {\r\n let intervalId;\r\n\r\n const makeChart = () => {\r\n intervalId = setInterval(() => {\r\n if (downPercentAnimation < downPercent) {\r\n setDownPercentAnimation((prevPercent) => prevPercent + 1);\r\n } else {\r\n clearInterval(intervalId);\r\n }\r\n }, 10);\r\n\r\n return () => clearInterval(intervalId);\r\n };\r\n makeChart();\r\n return () => clearInterval(intervalId);\r\n }, [downPercentAnimation, downPercent]);\r\n\r\n useEffect(() => {\r\n let intervalId;\r\n\r\n const makeChart = () => {\r\n intervalId = setInterval(() => {\r\n if (nonRegisteredAnimation < nonRegisteredPercent) {\r\n setNonRegisteredAnimation((prevPercent) => prevPercent + 1);\r\n } else {\r\n clearInterval(intervalId);\r\n }\r\n }, 10);\r\n\r\n return () => clearInterval(intervalId);\r\n };\r\n\r\n makeChart();\r\n\r\n return () => clearInterval(intervalId);\r\n }, [nonRegisteredAnimation, nonRegisteredPercent]);\r\n\r\n const action = () => {\r\n dispatch(\r\n pannelAction.getMonitoringPannel(\r\n data.length !== 0\r\n ? data\r\n .filter((f) => f.type === Type)\r\n .map((m) => m.hostId)\r\n .join(',')\r\n : ''\r\n )\r\n )\r\n .then((pannelResponse) => {\r\n const pannelData = pannelResponse.payload;\r\n if (pannelData.status != 403 && pannelData.length !== 0) {\r\n const onCount = pannelData.filter((x) => x === '정상').length;\r\n const downCount = pannelData.filter((x) => x === '비정상').length;\r\n const total = pannelData.length;\r\n\r\n setOnCount(onCount);\r\n setDownCount(downCount);\r\n setNonRegisteredCount(total - (onCount + downCount));\r\n setOnPercent(Math.round((onCount / total) * 100));\r\n setDownPercent(Math.round((downCount / total) * 100));\r\n setNonRegisteredPercent(Math.round(((total - (onCount + downCount)) / total) * 100));\r\n }\r\n })\r\n .finally(() => setIsLoading(false));\r\n };\r\n const handleDarkModel = () => {\r\n setIsDarkMode(!isDarkMode);\r\n };\r\n const viewTagsHandle = () => {\r\n setViewTag(!viewTag);\r\n };\r\n\r\n const displayNone = {\r\n display: 'none',\r\n };\r\n const animationInit = () => {\r\n setOnPercentAnimation(0);\r\n setDownPercentAnimation(0);\r\n setNonRegisteredAnimation(0);\r\n };\r\n const downStyle = {\r\n background: `conic-gradient(#FD4646 0% ${downPercentAnimation}%, #eee ${downPercentAnimation}% 100%)`,\r\n };\r\n\r\n const onRegStyle = {\r\n background: `conic-gradient(#3DE78B 0% ${onPercentAnimation}%, #eee ${onPercentAnimation}% 100%)`,\r\n };\r\n const nonRegStyle = {\r\n background: `conic-gradient(#FEDD33 0% ${nonRegisteredAnimation}%, #eee ${nonRegisteredAnimation}% 100%)`,\r\n };\r\n\r\n if (error) {\r\n return ;\r\n }\r\n\r\n return (\r\n <>\r\n
    \r\n
    \r\n

    \r\n {Type} 모니터링 현황\r\n

    \r\n
    \r\n tagAddModalHandle(Type)}>\r\n settings\r\n \r\n
    \r\n {isLoading ? (\r\n \r\n ) : (\r\n
    \r\n
    \r\n {allSelcet ? (\r\n 전체 태그\r\n ) : (\r\n <>\r\n {tagGroup.slice(0, 3).map((m, i) => (\r\n \r\n {m.tagName}\r\n \r\n {m.hostName.map((host, i) => (\r\n \r\n

    {host}

    \r\n
    \r\n ))}\r\n
    \r\n
    \r\n ))}\r\n {tagGroup.length > 3 && (\r\n
    \r\n
    \r\n viewTagsHandle()}>\r\n add\r\n \r\n
    \r\n\r\n
    \r\n {tagGroup.slice(3).map((m, i) => (\r\n \r\n {m.tagName}\r\n \r\n {m.hostName.map((host, i) => (\r\n \r\n

    {host}

    \r\n
    \r\n ))}\r\n
    \r\n
    \r\n ))}\r\n
    \r\n
    \r\n )}\r\n \r\n )}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    {onPercent}

    \r\n

    {onCount}

    \r\n
    \r\n
    \r\n

    정상

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    {downPercent}

    \r\n

    {downCount}

    \r\n
    \r\n
    \r\n

    비정상

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    {nonRegisteredPercent}

    \r\n

    {nonRegisteredCount}

    \r\n
    \r\n
    \r\n

    미등록

    \r\n
    \r\n
    \r\n
    \r\n )}\r\n
    \r\n
    \r\n \r\n );\r\n});\r\n\r\nexport default Popup;\r\n","import axios from 'axios';\r\nimport {\r\n REPORT_DATA_REQUEST,\r\n REPORT_DATA_SUCCESS,\r\n REPORT_DATA_ERROR,\r\n NOTICE_DATA_REQUEST,\r\n NOTICE_DATA_SUCCESS,\r\n NOTICE_DATA_ERROR,\r\n SEC_DATA_REQUEST,\r\n SEC_DATA_SUCCESS,\r\n SEC_DATA_ERROR,\r\n SEC_EVENT_REQUEST,\r\n SEC_EVENT_SUCCESS,\r\n SEC_EVENT_ERROR,\r\n} from './boardType';\r\n// import { setAuthHeader } from '../utils/axiosHeaders';\r\n\r\n// fetch(Reporting.js)\r\n// export function getData() {\r\n// return (dispatch) => {\r\n// return fetch('https://jsonplaceholder.typicode.com/posts')\r\n// .then((response) => response.json())\r\n// .then((json) => {\r\n// dispatch({ type: 'REPORT_DATA_SUCCESS', payload: json });\r\n// });\r\n// };\r\n// }\r\n\r\nexport const searchData = (page, selectTable, btIdx, pageSize, eqip, startDate, endDate, risk, ipState, ipName) => async (dispatch) => {\r\n var boardType = [];\r\n var url = `${selectTable}?page=${page}&pageSize=${pageSize}`;\r\n switch (selectTable) {\r\n case 'Board/Notice':\r\n boardType.push(NOTICE_DATA_REQUEST);\r\n boardType.push(NOTICE_DATA_SUCCESS);\r\n boardType.push(NOTICE_DATA_ERROR);\r\n break;\r\n case 'Board/Security':\r\n boardType.push(SEC_DATA_REQUEST);\r\n boardType.push(SEC_DATA_SUCCESS);\r\n boardType.push(SEC_DATA_ERROR);\r\n break;\r\n case 'SecurityEvent/SecEvent':\r\n boardType.push(SEC_EVENT_REQUEST);\r\n boardType.push(SEC_EVENT_SUCCESS);\r\n boardType.push(SEC_EVENT_ERROR);\r\n url = `${selectTable}?page=${page}&pageSize=${pageSize}&eqIp=${eqip}&startDate=${startDate}&endDate=${endDate}&risk=${risk}&IPstate=${ipState}&eventName=${ipName}`\r\n break;\r\n default:\r\n boardType.push(REPORT_DATA_REQUEST);\r\n boardType.push(REPORT_DATA_SUCCESS);\r\n boardType.push(REPORT_DATA_ERROR);\r\n break;\r\n }\r\n dispatch({\r\n type: boardType[0],\r\n });\r\n try {\r\n // switch (selectTable) {\r\n // case 'Board/Notice':\r\n // break;\r\n\r\n // default:\r\n // break;\r\n // }\r\n\r\n return await axios\r\n .create({\r\n withCredentials: false,\r\n headers: {\r\n 'Access-Control-Allow-Origin': '*',\r\n 'Access-Control-Allow-Methods': 'GET,PUT,POST,DELETE,PATCH,OPTIONS',\r\n },\r\n })\r\n .get(process.env.REACT_APP_REQUEST_API_URL + url)\r\n .then((res) => dispatch({ type: boardType[1], payload: res.data, page }));\r\n } catch (e) {\r\n dispatch({\r\n type: boardType[2],\r\n error: e,\r\n });\r\n }\r\n};\r\n","import React, { useEffect} from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport BasicMapTable from '../common/BasicMapTable';\r\nimport TopWritingItems from './TopWritingItems';\r\nimport { searchData } from '../../redux/board/ActionBoard';\r\n\r\nconst SecurityTopWriting = (props) => {\r\n const dispatch = useDispatch();\r\n const { securityloading, securitydata, securityerror } = useSelector((state) => state.ReducerBoard);\r\n const { t } = useTranslation('Lang');\r\n\r\n useEffect(() => {\r\n dispatch(searchData(1, 'Board/Security', 0, 3));\r\n }, []);\r\n\r\n return (\r\n
    \r\n
    \r\n

    \r\n 보안뉴스\r\n open_in_new\r\n

    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    제목시간
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default SecurityTopWriting;\r\n","import React, { useEffect, useState } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport MonitoringIssue from './monitoring/dashboard/MonitoringIssue';\r\nimport TrafficDashBoardContainer from './traffic/TrafficDashBoardContainer';\r\nimport NoticeTopWriting from './dashboardSub/NoticeTopWriting';\r\nimport NotificationTopWriting from './dashboardSub/NotificationTopWriting';\r\nimport MonitoringCurrentSituationSetting from './modal/MonitoringCurrentSituationSetting';\r\nimport { reset } from '../redux/monitoring/ReducerMonitoringModal';\r\nimport GnexonMonitoring from './dashboardSub/GnexonMonitoring';\r\nimport MonthBill from './dashboardSub/MonthBill';\r\nimport SecurityTopWriting from './dashboardSub/SecurityTopWriting';\r\nimport { FullScreen } from 'react-full-screen';\r\nimport { monitoringModalAction } from '../redux/monitoring/ReducerMonitoringModal';\r\nconst DashBoard = ({ handleFullScreen }) => {\r\n const dispatch = useDispatch();\r\n const [view, setView] = useState(false);\r\n const [monitoringType, setMonitoringType] = useState('');\r\n const menuItems = useSelector((state) => state.dashboard.Menu);\r\n const [menu, setMenu] = useState([]);\r\n\r\n useEffect(() => {\r\n setMenu(menuItems);\r\n }, [menuItems]);\r\n\r\n const tagAddModalHandle = (type) => {\r\n dispatch(reset());\r\n setMonitoringType(type);\r\n setView(!view);\r\n };\r\n\r\n useEffect(() => {\r\n dispatch(monitoringModalAction.getMonitoringServersTag('')).then((response) => setServerTagDate(response.payload.length));\r\n }, []);\r\n\r\n const viewMenu = (id) => {\r\n return menu.find((f) => f.hostId === id);\r\n };\r\n\r\n const [serverTagData, setServerTagDate] = useState(0);\r\n\r\n return (\r\n \r\n
    \r\n {viewMenu(3) && }\r\n {viewMenu(4) && }\r\n {viewMenu(5) && }\r\n {viewMenu(6) && }\r\n {viewMenu(8) && }\r\n {viewMenu(2) && }\r\n {viewMenu(1) && }\r\n {viewMenu(7) && }\r\n {viewMenu(9) && }\r\n {viewMenu(10) && }\r\n {view && (\r\n \r\n )}\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default DashBoard;\r\n","import React, { memo } from 'react';\r\nimport { useDispatch } from 'react-redux';\r\nimport { monitoringModalAction } from '../../redux/monitoring/ReducerMonitoringModal';\r\n\r\nconst LiveMonitoringItem = memo(\r\n ({\r\n monitoring,\r\n monitoring: {\r\n hostID,\r\n tag,\r\n hostStatus,\r\n diskUsageRate,\r\n memoryUsageRate,\r\n cpuUsageRate,\r\n nowInTraffic,\r\n nowOutTraffic,\r\n ipAddress,\r\n ports,\r\n resources,\r\n raidState,\r\n },\r\n }) => {\r\n const dispatch = useDispatch();\r\n const handleModal = (e) => {\r\n e.preventDefault();\r\n dispatch(monitoringModalAction.getMonitoringModal({ monitoring: monitoring }));\r\n };\r\n return (\r\n
  • \r\n
    \r\n \r\n
    \r\n

    {ipAddress}

    \r\n
    \r\n {/* {tag !== '미적용' &&
    {tag}
    } */}\r\n
    \r\n {/* {ports && ports.map((port) => {port.monitorName})}\r\n {resources && resources.find((resource) => resource.monitorName.includes('Space')) && Storage} */}\r\n
    \r\n
    \r\n
    \r\n
    \r\n

    \r\n IN\r\n {nowInTraffic}\r\n

    \r\n

    \r\n OUT\r\n {nowOutTraffic}\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    CPU

    \r\n {cpuUsageRate !== -1 && cpuUsageRate !== 'Infinity' ? (\r\n
    \r\n

    \r\n {cpuUsageRate}\r\n

    \r\n
    \r\n ) : (\r\n
    \r\n

    데이터가 없습니다.

    \r\n
    \r\n )}\r\n
    \r\n
    \r\n

    Memory

    \r\n {memoryUsageRate !== -1 && memoryUsageRate !== 'Infinity' ? (\r\n
    \r\n

    \r\n {memoryUsageRate}\r\n

    \r\n
    \r\n ) : (\r\n
    \r\n

    데이터가 없습니다.

    \r\n
    \r\n )}\r\n
    \r\n
    \r\n

    Disk

    \r\n {diskUsageRate !== -1 && diskUsageRate !== 'Infinity' ? (\r\n
    \r\n

    \r\n {diskUsageRate}\r\n

    \r\n
    \r\n ) : (\r\n
    \r\n

    데이터가 없습니다.

    \r\n
    \r\n )}\r\n
    \r\n
    \r\n

    Raid

    \r\n {raidState == 0 &&

    UP

    }\r\n {raidState == 1 &&

    DOWN

    }\r\n
    \r\n
    \r\n
  • \r\n );\r\n }\r\n);\r\n\r\nexport default LiveMonitoringItem;\r\n","import React, { memo } from 'react';\r\nimport LiveMonitoringItem from './LiveMonitoringItem';\r\nimport LoadingSpninner from '../dataState/LoadingSpninner';\r\n\r\nconst LiveMonitoringList = memo(({ monitoringList, loading }) => {\r\n return (\r\n
    \r\n {loading ? (\r\n \r\n ) : (\r\n
      \r\n {monitoringList.map((monitoring) => (\r\n \r\n ))}\r\n
    \r\n )}\r\n
    \r\n );\r\n});\r\n\r\nexport default LiveMonitoringList;\r\n","import React, { memo, useState, useEffect } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch } from 'react-redux';\r\nimport { monitoringModalAction } from '../../redux/monitoring/ReducerMonitoringModal';\r\n\r\nconst LiveMonitoringTableItem = memo(\r\n ({\r\n checkItems,\r\n handleSingleCheck,\r\n monitoring,\r\n monitoring: {\r\n hostID,\r\n tag,\r\n hostStatus,\r\n diskUsageRate,\r\n memoryUsageRate,\r\n cpuUsageRate,\r\n nowInTraffic,\r\n nowOutTraffic,\r\n ipAddress,\r\n ports,\r\n resources,\r\n raidState,\r\n },\r\n }) => {\r\n const [tags, setTags] = useState(tag);\r\n const [viewService, setviewService] = useState(false);\r\n const [viewTag, setViewTag] = useState(false);\r\n const [services, setServices] = useState([]);\r\n const dispatch = useDispatch();\r\n const handleModal = (e) => {\r\n e.preventDefault();\r\n dispatch(monitoringModalAction.getMonitoringModal({ monitoring: monitoring }));\r\n };\r\n\r\n useEffect(() => {\r\n portAndStorage();\r\n }, []);\r\n\r\n const { t } = useTranslation('Lang');\r\n\r\n const deleteTag = (tagName, id) => {\r\n if (window.confirm(tagName + ' 태그를 삭제하시겠습니까?')) {\r\n dispatch(monitoringModalAction.setUnTag({ TaggingIds: [id] })).then((response) => {\r\n if (response.payload.data.code === 200) {\r\n setTags(tags.filter((f) => f.id !== id));\r\n }\r\n });\r\n }\r\n };\r\n\r\n const pickedTag = () => {\r\n var pickedTag = tags.find((f) => f.picked === true) || tags[0];\r\n return pickedTag;\r\n };\r\n\r\n const pickTag = (tagName, taggingId, hostId, picked) => {\r\n if (!picked) {\r\n if (window.confirm(tagName + ' 태그를 대표태그명으로 설정하시겠습니까?')) {\r\n dispatch(monitoringModalAction.setPickTag({ hostId: hostId, taggingId: taggingId })).then((response) => {\r\n if (response.payload.data.code === 200) {\r\n const updatedTags = tags.map((tag) => {\r\n if (tag.id === taggingId) {\r\n return { ...tag, picked: true };\r\n } else {\r\n return { ...tag, picked: false };\r\n }\r\n });\r\n setTags(updatedTags);\r\n }\r\n });\r\n }\r\n }\r\n };\r\n\r\n const portAndStorage = () => {\r\n if (resources) {\r\n const foundResource = resources && resources.find((resource) => resource.monitorName.includes('Space'));\r\n var array = [];\r\n array = array.concat(ports);\r\n if (foundResource) {\r\n array.push(foundResource);\r\n }\r\n setServices(array.map((m) => (m.monitorName.includes('Space') ? 'storage' : m.monitorName)));\r\n }\r\n };\r\n\r\n const viewServicesHandle = () => {\r\n setviewService(!viewService);\r\n };\r\n\r\n const viewTagsHandle = () => {\r\n setViewTag(!viewTag);\r\n };\r\n\r\n const displayNone = {\r\n display: 'none',\r\n };\r\n\r\n return (\r\n \r\n \r\n m.ip).includes(ipAddress) ? true : false}\r\n onChange={(e) => handleSingleCheck(e.target.checked, { hostID: hostID, ip: ipAddress })}\r\n >\r\n \r\n \r\n

    \r\n \r\n \r\n

    \r\n {ipAddress}\r\n

    \r\n \r\n \r\n {tags.length !== 0 && (\r\n
    \r\n \r\n {pickedTag().tagName}\r\n deleteTag(pickedTag().tagName, pickedTag().id)}>\r\n close\r\n \r\n \r\n\r\n
    \r\n
    \r\n viewTagsHandle()}>\r\n add\r\n \r\n
    \r\n\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {tags.map((m) => (\r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n
    대표태그명
    \r\n pickTag(m.tagName, m.id, hostID, m.picked)}\r\n >\r\n \r\n \r\n {m.tagName}\r\n deleteTag(m.tagName, m.id)}>\r\n close\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n )}\r\n \r\n \r\n {cpuUsageRate !== -1 && cpuUsageRate !== 'Infinity' ? (\r\n
    \r\n
    \r\n

    {cpuUsageRate}

    \r\n
    \r\n ) : (\r\n
    \r\n

    데이터가 없습니다.

    \r\n
    \r\n )}\r\n \r\n \r\n {memoryUsageRate !== -1 && memoryUsageRate !== 'Infinity' ? (\r\n
    \r\n
    \r\n

    {memoryUsageRate}

    \r\n
    \r\n ) : (\r\n
    \r\n

    데이터가 없습니다.

    \r\n
    \r\n )}\r\n \r\n \r\n {diskUsageRate !== -1 && diskUsageRate !== 'Infinity' ? (\r\n
    \r\n
    \r\n

    {diskUsageRate}

    \r\n
    \r\n ) : (\r\n
    \r\n

    데이터가 없습니다.

    \r\n
    \r\n )}\r\n \r\n \r\n {raidState == 0 &&

    UP

    }\r\n {raidState == 1 &&

    DOWN

    }\r\n \r\n \r\n

    \r\n IN\r\n {nowInTraffic}\r\n

    \r\n

    \r\n OUT\r\n {nowOutTraffic}\r\n

    \r\n \r\n \r\n {services.length !== 0 && (\r\n <>\r\n

    \r\n {services.slice(0, 3).map((port, index) => (\r\n {port}\r\n ))}\r\n

    \r\n\r\n
    \r\n
    \r\n viewServicesHandle()}>\r\n add\r\n \r\n
    \r\n
    \r\n {services.map((port) => (\r\n {port}\r\n ))}\r\n
    \r\n
    \r\n \r\n )}\r\n \r\n {/* \r\n \r\n */}\r\n \r\n );\r\n }\r\n);\r\n\r\nexport default LiveMonitoringTableItem;\r\n","import React, { useState } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport TableNoData from '../dataState/TableNoData';\r\nimport LiveMonitoringTableItem from './LiveMonitoringTableItem';\r\nimport LoadingSpninner from '../dataState/LoadingSpninner';\r\nconst LiveMonitoringTableList = ({ error, monitoringList, tableSwitch, loading, checkItems, setCheckItems }) => {\r\n const { t } = useTranslation('Lang');\r\n const handleAllCheck = (checked) => {\r\n if (checked) {\r\n const idArray = [];\r\n if (monitoringList != null) {\r\n monitoringList.forEach((el) => idArray.push({ hostID: el.hostID, ip: el.ipAddress }));\r\n setCheckItems(idArray);\r\n }\r\n } else {\r\n setCheckItems([]);\r\n }\r\n };\r\n\r\n const handleSingleCheck = (checked, id) => {\r\n if (checked) {\r\n setCheckItems([...checkItems, id]);\r\n } else {\r\n // 체크 해제\r\n setCheckItems(checkItems.filter((el) => el.hostID !== id.hostID));\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {loading ? (\r\n \r\n \r\n \r\n ) : monitoringList.length !== 0 ? (\r\n monitoringList.map((monitoring) => (\r\n \r\n ))\r\n ) : (\r\n \r\n )}\r\n \r\n
    \r\n handleAllCheck(e.target.checked)}>\r\n {t('상태')}{t('호스트')}TagCPUMemoryDiskRaidNetwork TrafficServices
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n );\r\n};\r\nexport default LiveMonitoringTableList;\r\n","import React, { memo, useEffect, useState } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { action, listClear } from '../../redux/monitoring/ReducerMonitoring';\r\nimport { isMobile } from 'react-device-detect';\r\n\r\nconst LiveMonitoringStatePannel = memo(({ setStatusSort, statusSort, loading }) => {\r\n const { pannelData } = useSelector((state) => state.ReducerMonitoringPannel);\r\n const [onCount, setOnCount] = useState(0);\r\n const [downCount, setDonwCount] = useState(0);\r\n const [TotalCount, setTotalCount] = useState(0);\r\n const { t } = useTranslation('Lang');\r\n const dispatch = useDispatch();\r\n const pageSize = isMobile ? 50 : 20;\r\n\r\n useEffect(() => {\r\n pannelData && setOnCount(pannelData.filter((x) => x === '정상').length);\r\n pannelData && setDonwCount(pannelData.filter((x) => x === '비정상').length);\r\n pannelData && setTotalCount(pannelData.length);\r\n }, [pannelData]);\r\n\r\n const handleStatusData = (state, count, nextValue) => {\r\n dispatch(listClear());\r\n if (loading) {\r\n return alert(t('데이터를 받아오는중입니다. 잠시만기달려주세요'));\r\n }\r\n if (state === '전체') {\r\n dispatch(action.getMonitorings({ count: { prev: 0, next: pageSize }, status: '' }));\r\n } else {\r\n dispatch(\r\n action.getStatusMonitorings({\r\n count: { prev: 0, next: nextValue },\r\n status: state,\r\n onCount: count,\r\n })\r\n );\r\n }\r\n setStatusSort(state);\r\n };\r\n return (\r\n
    \r\n
      \r\n
    • handleStatusData('정상', onCount, pageSize)}>\r\n \r\n {t('정상')}\r\n \r\n {onCount}\r\n {t('개')}\r\n \r\n
    • \r\n
    • handleStatusData('비정상', downCount, TotalCount)}>\r\n \r\n {t('비정상')}\r\n \r\n {downCount}\r\n {t('개')}\r\n \r\n
    • \r\n
    • handleStatusData('전체', TotalCount, pageSize)}>\r\n \r\n {t('전체')}\r\n \r\n \r\n {TotalCount}\r\n {t('개')}\r\n \r\n
    • \r\n \r\n handleStatusData('중지', TotalCount - (onCount + downCount), TotalCount, TotalCount)}\r\n >\r\n \r\n {t('미등록')}\r\n \r\n {TotalCount - (onCount + downCount)}\r\n {t('개')}\r\n \r\n \r\n
    \r\n
    \r\n );\r\n});\r\n\r\nexport default LiveMonitoringStatePannel;\r\n","import { useState } from 'react';\r\nimport SimpleReactValidator from 'simple-react-validator';\r\n\r\nconst useValidator = (customMessage = {}, customValidator = {}) => {\r\n const [show, setShow] = useState(false);\r\n const validator = new SimpleReactValidator({\r\n className: 'validation',\r\n messages: customMessage,\r\n validators: customValidator,\r\n });\r\n\r\n if (show) {\r\n validator.showMessages();\r\n }\r\n\r\n return [validator, setShow];\r\n};\r\n\r\nexport default useValidator;\r\n","import React, { useState } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch } from 'react-redux';\r\nimport { monitoringModalAction } from '../../redux/monitoring/ReducerMonitoringModal';\r\nimport useValidator from '../useValidator';\r\n\r\n\r\nconst TagAddModal = ({ tagAddModalHandle, checkItems, setCheckItems }) => {\r\n const dispatch = useDispatch();\r\n const [validator, showValidationMessage] = useValidator();\r\n const [tagNameValue, setTagName] = useState('');\r\n const { t } = useTranslation('Lang');\r\n\r\n const saveTagName = (event) => {\r\n setTagName(event.target.value);\r\n };\r\n\r\n const addTags = (e) => {\r\n e.preventDefault();\r\n if (validator.allValid()) {\r\n dispatch(monitoringModalAction.setMonitoringTags({ hostIds: checkItems.map((m) => m.hostID), tagName: tagNameValue }));\r\n } else {\r\n showValidationMessage(true);\r\n }\r\n };\r\n\r\n const deleteHostId = (value) => {\r\n if(checkItems.length === 1){\r\n return alert('더이상 삭제할수 없습니다.')\r\n }\r\n setCheckItems(checkItems.filter((f) => f.hostID !== value));\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n

    Tag 다중 등록

    \r\n
    \r\n
      \r\n
    • \r\n \r\n 선택 Host\r\n \r\n
      \r\n {checkItems.map((m) => (\r\n \r\n {m.ip}\r\n deleteHostId(m.hostID)}>\r\n close\r\n \r\n \r\n ))}\r\n
      \r\n
    • \r\n
    • \r\n \r\n 등록 태그명\r\n \r\n \r\n
      \r\n {validator.message('tagName', tagNameValue, 'required', {\r\n messages: {\r\n required: t('필수값'),\r\n },\r\n })}\r\n
      \r\n
    • \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default TagAddModal;\r\n","import React, { useEffect, useState } from 'react';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport { monitoringModalAction } from '../../redux/monitoring/ReducerMonitoringModal';\r\nimport { action } from '../../redux/monitoring//ReducerMonitoring';\r\n\r\nconst TagDelModal = ({ tagDelModalHandle }) => {\r\n const dispatch = useDispatch();\r\n const { data, loading, error } = useSelector((state) => state.ReducerMonitoringModal.TaggedServers);\r\n const [servers, setServers] = useState([\r\n {\r\n tagInfo: [],\r\n tag: '',\r\n },\r\n ]);\r\n\r\n const [selectedTagName, setSelectedTagName] = useState([]);\r\n\r\n const [checkItems, setCheckItems] = useState([]);\r\n\r\n useEffect(() => {\r\n dispatch(monitoringModalAction.getMonitoringTags(\"\"));\r\n }, []);\r\n\r\n const showTaggedServers = (tag) => {\r\n if (selectedTagName.includes(tag)) {\r\n const update = selectedTagName.filter((f) => !f.includes(tag));\r\n setSelectedTagName(update);\r\n setServers(data.filter((f) => update.includes(f.tag)));\r\n } else {\r\n setSelectedTagName([...selectedTagName, tag]);\r\n setServers(data.filter((f) => [...selectedTagName, tag].includes(f.tag)));\r\n }\r\n setCheckItems([]);\r\n //setServers(data.filter((f) => selectedTagName.includes(f.tag)));\r\n };\r\n\r\n const handleAllCheck = (checked) => {\r\n if (checked) {\r\n const idArray = [];\r\n if (servers.length !== 0) {\r\n servers.map((m) => m.tagInfo.forEach((el) => idArray.push({ id: el.id })));\r\n setCheckItems(idArray);\r\n }\r\n } else {\r\n setCheckItems([]);\r\n }\r\n };\r\n\r\n const handleSingleCheck = (checked, id) => {\r\n if (checked) {\r\n setCheckItems([...checkItems, id]);\r\n } else {\r\n setCheckItems(checkItems.filter((el) => el.id !== id.id));\r\n }\r\n };\r\n\r\n const handleSubmit = () => {\r\n dispatch(monitoringModalAction.setUnTag({ TaggingIds: checkItems.map((m) => parseInt(m.id)) })).then(() => {\r\n dispatch(monitoringModalAction.getMonitoringTags(\"\"));\r\n dispatch(action.getInitMonitorings({ count: 20, state: '정상' }));\r\n setSelectedTagName([]);\r\n });\r\n };\r\n\r\n const allChecked = () => {\r\n return (\r\n checkItems.length === servers.map((m) => m.tagInfo.length).reduce((accumulator, currentValue) => accumulator + currentValue, 0)\r\n );\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n

    Tag 다중 삭제

    \r\n
    \r\n
      \r\n
    • \r\n \r\n 등록 태그명\r\n \r\n
      \r\n {data.map((m) => (\r\n m.tag).includes(m.tag) ? 'on' : ''}\r\n onClick={() => showTaggedServers(m.tag)}\r\n >\r\n {m.tag}\r\n {m.hostId}\r\n \r\n ))}\r\n
      \r\n
    • \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {selectedTagName.length === 0 ? (\r\n \r\n \r\n \r\n ) : (\r\n data\r\n .filter((f) => selectedTagName.includes(f.tag))\r\n .map((m) =>\r\n m.tagInfo.map((mm) => (\r\n \r\n \r\n \r\n \r\n \r\n ))\r\n )\r\n )}\r\n \r\n
    \r\n handleAllCheck(e.target.checked)}\r\n >\r\n HOST명등록된 태그
    태그를 선택해주세요.
    \r\n mm.id).includes(mm.id) ? true : false}\r\n onChange={(e) => handleSingleCheck(e.target.checked, { id: mm.id })}\r\n >\r\n {mm.hostName}\r\n
    \r\n {mm.tagName}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default TagDelModal;\r\n","import React from 'react';\r\n\r\nimport TagAddModal from '../modal/TagAddModal';\r\nimport TagDelModal from '../modal/TagDelModal';\r\n\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { tagAddModalOnOff, tagDelModalOnOff } from '../../redux/monitoring/ReducerMonitoringModal';\r\nconst LiveMonitorTagSetting = ({ checkItems, setCheckItems }) => {\r\n const dispatch = useDispatch();\r\n const { TagAddModalState, TagDelModalState } = useSelector((state) => state.ReducerMonitoringModal);\r\n\r\n const tagAddModalHandle = () => {\r\n if (checkItems.length === 0) {\r\n return alert('태그를 등록할 서버를 선택해주세요.');\r\n }\r\n dispatch(tagAddModalOnOff());\r\n };\r\n\r\n const tagDelModalHandle = () => {\r\n dispatch(tagDelModalOnOff());\r\n };\r\n return (\r\n <>\r\n
    \r\n \r\n \r\n
    \r\n {TagAddModalState && (\r\n \r\n )}\r\n {TagDelModalState && }\r\n \r\n );\r\n};\r\n\r\nexport default LiveMonitorTagSetting;\r\n","import React from 'react';\r\n\r\nconst MonitoringError = ({ t, message }) => (\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n {message}\r\n
    \r\n {t('관리자문의')}\r\n
    \r\n);\r\n\r\nexport default MonitoringError;\r\n","import React, { memo, useEffect, useRef, useState } from 'react';\r\nimport LiveMonitoringList from './LiveMonitoringList';\r\nimport { useSelector, useDispatch } from 'react-redux';\r\nimport LiveMonitoringTableList from './LiveMonitoringTableList';\r\nimport LiveMonitoringStatePannel from './LiveMonitoringStatePannel';\r\nimport LiveMonitorTagSetting from './LiveMonitorTagSetting';\r\nimport { useTranslation } from 'react-i18next';\r\nimport ErrorHandler from '../error/ErrorHandler';\r\nimport MonitoringError from '../error/MonitoringError';\r\nimport { useCookies } from 'react-cookie';\r\nimport { action, listClear } from '../../redux/monitoring/ReducerMonitoring';\r\nimport { pannelAction } from '../../redux/monitoring/ReducerMonitoringPannel';\r\nimport { settingAction } from '../../redux/monitoringSetting/ReducerMonitoringSetting';\r\nimport { isMobile } from 'react-device-detect';\r\nimport Paginate from 'react-paginate';\r\n\r\nconst LiveMonitoring = memo(() => {\r\n const { data, loading, error } = useSelector((state) => state.ReducerMonitoring.MonitoringList);\r\n const tgData = useSelector((state) => state.ReducerMonitoring.TagGroup);\r\n const { t } = useTranslation('Lang');\r\n const dispatch = useDispatch();\r\n const searchRef = useRef(null);\r\n const [statusSort, setStatusSort] = useState('정상');\r\n const [cookies, setCookie] = useCookies(['MviewState']);\r\n const [ulSwitch, setulSwitch] = useState(cookies.MviewState === 'card' ? true : false);\r\n const [tableSwitch, setTableSwitch] = useState(cookies.MviewState !== 'card' ? true : false);\r\n const pageSize = isMobile ? 50 : 300;\r\n const [checkItems, setCheckItems] = useState([]);\r\n const [viewTag, setViewTag] = useState(false);\r\n\r\n const getMoreData = (pageCount) => {\r\n const pageData = { ...data.count, prev: pageCount.selected, next: pageSize };\r\n dispatch(action.getMonitoringTagGroup());\r\n if (statusSort && statusSort !== '전체') {\r\n dispatch(\r\n action.getStatusMonitorings({\r\n count: pageData,\r\n status: statusSort,\r\n onCount: data.totalCount,\r\n })\r\n );\r\n } else if (searchRef.current.value) {\r\n dispatch(action.getSearchMonitorings({ count: pageData, searchText: searchRef.current.value }));\r\n } else {\r\n dispatch(action.getMonitorings({ count: pageData, state: '' }));\r\n }\r\n };\r\n\r\n const handleSearch = (e) => {\r\n e.preventDefault();\r\n if (loading) {\r\n return alert(t('이미 검색중입니다. 잠시만기달려주세요'));\r\n }\r\n setStatusSort('전체');\r\n dispatch(listClear());\r\n dispatch(action.getSearchMonitorings({ count: { prev: 0, next: pageSize }, searchText: searchRef.current.value }));\r\n };\r\n\r\n const handleTagSearch = (value) => {\r\n if (loading) {\r\n return alert(t('이미 검색중입니다. 잠시만기달려주세요'));\r\n }\r\n setStatusSort('전체');\r\n dispatch(listClear());\r\n dispatch(action.getSearchMonitorings({ count: { prev: 0, next: pageSize }, searchText: value }));\r\n searchRef.current.value = value;\r\n };\r\n\r\n useEffect(() => {\r\n setTimeout(() => dispatch(settingAction.getSettings(), 1000));\r\n dispatch(action.getInitMonitorings({ count: pageSize, state: '정상' }));\r\n dispatch(pannelAction.getMonitoringPannel());\r\n dispatch(action.getMonitoringTagGroup());\r\n }, [dispatch]);\r\n\r\n const handleListSwitch = () => {\r\n setulSwitch(true);\r\n setTableSwitch(false);\r\n setCookie('MviewState', 'card', { path: '/' });\r\n };\r\n\r\n const handleFormSwitch = () => {\r\n setulSwitch(false);\r\n setTableSwitch(true);\r\n setCookie('MviewState', 'table', { path: '/' });\r\n };\r\n const viewTagsHandle = () => {\r\n setViewTag(!viewTag);\r\n };\r\n\r\n const displayNone = {\r\n display: 'none',\r\n };\r\n\r\n return (\r\n <>\r\n
    \r\n
    \r\n
    \r\n
      \r\n
    • \r\n \r\n {t('리스트뷰')}\r\n
    • \r\n
    • \r\n \r\n {t('카드뷰')}\r\n
    • \r\n
    \r\n
    \r\n {data.list && }\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n handleTagSearch('')}\r\n >\r\n 전체\r\n \r\n handleTagSearch('태그없음')}\r\n >\r\n 지정된 태그 없음\r\n \r\n {tgData &&\r\n tgData.slice(0, 3).map((m) => (\r\n handleTagSearch(m)}\r\n >\r\n {m}\r\n \r\n ))}\r\n {tgData.length > 3 && (\r\n <>\r\n
    \r\n
    \r\n viewTagsHandle()}>\r\n add\r\n \r\n
    \r\n
    \r\n
    \r\n {tgData.slice(3).map((m, i) => (\r\n handleTagSearch(m)}\r\n >\r\n {m}\r\n \r\n ))}\r\n
    \r\n \r\n )}\r\n
    \r\n {tableSwitch && }\r\n\r\n {error ? (\r\n } t={t} />\r\n ) : ulSwitch ? (\r\n \r\n ) : (\r\n \r\n )}\r\n
    \r\n '}\r\n previousClassName={'prev'}\r\n nextClassName={'next'}\r\n activeClassName={'active'}\r\n onPageChange={getMoreData}\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n );\r\n});\r\n\r\nexport default LiveMonitoring;\r\n","import axios from 'axios';\r\nimport { GET_FILE_REQUEST, GET_FILE_SUCCESS, GET_FILE_ERROR, SET_FILE_REQUEST, SET_FILE_SUCCESS, SET_FILE_ERROR } from './FileUploadType';\r\n\r\nexport const getFile = (url) => async (dispatch) => {\r\n dispatch({\r\n type: GET_FILE_REQUEST,\r\n });\r\n\r\n try {\r\n return await axios\r\n .create({\r\n withCredentials: false,\r\n headers: {\r\n 'Access-Control-Allow-Origin': '*',\r\n 'Access-Control-Allow-Methods': 'GET,PUT,POST,DELETE,PATCH,OPTIONS',\r\n },\r\n })\r\n .get(url)\r\n .then((res) => {\r\n const link = document.createElement('a');\r\n link.href = res.data;\r\n link.setAttribute('download',res.data);\r\n link.setAttribute('target','_blank');\r\n document.body.appendChild(link);\r\n link.click();\r\n link.remove();\r\n });\r\n } catch (e) {\r\n dispatch({\r\n type: GET_FILE_ERROR,\r\n error: e,\r\n });\r\n }\r\n};\r\n\r\nexport const setFile = (id) => async (dispatch) => {\r\n dispatch({\r\n type: SET_FILE_REQUEST,\r\n });\r\n\r\n try {\r\n return await axios\r\n .create({\r\n withCredentials: false,\r\n headers: {\r\n 'Access-Control-Allow-Origin': '*',\r\n 'Access-Control-Allow-Methods': 'GET,PUT,POST,DELETE,PATCH,OPTIONS',\r\n },\r\n })\r\n .get(process.env.REACT_APP_REQUEST_API_URL + `Board/File/${id}`)\r\n .then((res) => dispatch({ type: SET_FILE_SUCCESS, payload: res.data }));\r\n } catch (e) {\r\n dispatch({\r\n type: SET_FILE_ERROR,\r\n error: e,\r\n });\r\n }\r\n};\r\n","import moment from 'moment';\r\n\r\nexport const dateFormat = (date) => {\r\n return moment(date).format('YYYY-MM-DD HH:mm:ss');\r\n};\r\n\r\nexport const onlyDaydateFormat = (date) => {\r\n return moment(date).format('YYYY-MM-DD');\r\n};\r\n\r\nexport const nowDateFormat = () => {\r\n return moment().format('YYYY-MM-DD');\r\n};\r\n\r\nexport const endDateFormat = (number, date) => {\r\n //ex. moment().add(1,'days').format('YYYY-MM-DD'); //오늘일자로부터 한 달 더하기\r\n //ex. moment().subtract(1,'months').format('YYYY-MM-DD'); //오늘일자로부터 한 달 빼기\r\n return moment().subtract(number, date).format('YYYY-MM-DD');\r\n};\r\n","import React, { memo } from 'react';\r\nconst ReportingItem = memo(({ data, downloadOnClick }) => {\r\n return (\r\n \r\n {data.idx}\r\n {data.reportTitle}\r\n {data.reportType}\r\n {data.reportStatus === '' ? '생성중' : data.reportStatus}\r\n \r\n {data.reportDownloadUrl === '' ? (\r\n ''\r\n ) : (\r\n downloadOnClick(data.reportDownloadUrl)}>\r\n \r\n picture_as_pdf\r\n \r\n \r\n )}\r\n \r\n \r\n );\r\n});\r\n\r\nexport default ReportingItem;\r\n","import React, { memo } from 'react';\r\nconst ReportingServerItem = memo(({ data, checkItems, handleSingleCheck, checkboxDisabled }) => {\r\n return (\r\n \r\n \r\n checkedItem.id === data.id)}\r\n onChange={() => handleSingleCheck({ id: data.id, ip: data.ip })}\r\n disabled={!checkItems.some((checkedItem) => checkedItem.id === data.id) &&checkboxDisabled}\r\n >\r\n \r\n {data.ip}\r\n \r\n );\r\n});\r\n\r\nexport default ReportingServerItem;\r\n","import React from 'react';\r\nconst ReportingSedingStatus = ({ status, isButton, toggleReporting }) => {\r\n const renderStatus = () => {\r\n switch (status) {\r\n case 'pending':\r\n return (\r\n
    \r\n
    \r\n

    리포팅 수신설정 상태

    \r\n \r\n 등록 대기중\r\n \r\n
    \r\n
    \r\n );\r\n case 'false':\r\n return (\r\n
    \r\n
    \r\n

    리포팅 수신설정 상태

    \r\n 발행중\r\n
    \r\n {isButton && (\r\n \r\n )}\r\n
    \r\n );\r\n case 'true':\r\n return (\r\n
    \r\n
    \r\n

    리포팅 수신설정 상태

    \r\n 발행중지\r\n
    \r\n {isButton && (\r\n \r\n )}\r\n
    \r\n );\r\n default:\r\n return (\r\n
    \r\n
    \r\n

    리포팅 수신설정 상태

    \r\n \r\n 알 수 없음\r\n \r\n
    \r\n
    \r\n );\r\n }\r\n };\r\n\r\n return renderStatus();\r\n};\r\n\r\nexport default ReportingSedingStatus;\r\n","import React, { useEffect, useState } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport BasicMapTable from '../common/BasicMapTable';\r\nimport ReportingServerItem from '../reporting/ReportingServerItem';\r\nimport { action, listClear } from '../../redux/reporting/ReducerReporting';\r\nimport ReportingSedingStatus from '../reporting/ReportingSedingStatus';\r\nconst ReportingServerModal = ({ handleReportingModalState }) => {\r\n const [showModal, setShowModal] = useState(0);\r\n\r\n const { loading: serverLoading, data, error: serverError } = useSelector((state) => state.ReducerReporting.ReportingServer);\r\n const {\r\n loading: scheduleLoading,\r\n disabled,\r\n error: scheduleError,\r\n } = useSelector((state) => state.ReducerReporting.ReportingScheduleDisabled);\r\n\r\n const dispatch = useDispatch();\r\n const [checkItems, setCheckItems] = useState([]);\r\n const { t } = useTranslation('Lang');\r\n\r\n useEffect(() => {\r\n const fetchReportingData = async () => {\r\n await dispatch(action.getBasicReportingServer());\r\n await dispatch(action.getBasicReporitngScheduleDisabled());\r\n };\r\n fetchReportingData();\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (data) {\r\n setCheckItems(data.filter((m) => m.chked));\r\n }\r\n }, [data]);\r\n\r\n const toggleReporting = () => {\r\n if (scheduleLoading) {\r\n return alert('로딩 중입니다.');\r\n }\r\n\r\n const newDisabledState = disabled == 'true' ? true : false;\r\n const actionMessage = newDisabledState ? '리포팅을 발행 하시겠습니까?' : '리포팅을 발행 중지 하시겠습니까?';\r\n\r\n if (window.confirm(actionMessage)) {\r\n dispatch(action.putBasicReporitngScheduleDisabled(!newDisabledState));\r\n } else {\r\n alert('변경이 취소되었습니다.');\r\n }\r\n };\r\n\r\n const updateScheduleKey = () => {\r\n if (checkItems.length === 0) {\r\n return alert('선택된 서버가 없습니다.');\r\n }\r\n\r\n if (checkItems.length > 5) {\r\n return alert('최대 5개까지 선택 가능합니다.');\r\n }\r\n\r\n dispatch(action.putBasicReportingServerScheduleKey(checkItems));\r\n };\r\n\r\n const handleAllCheck = (checked) => {\r\n if (checked) {\r\n const idArray = [];\r\n if (data.length !== 0) {\r\n const limitedData = data.slice(0, 5);\r\n limitedData.map((m) => idArray.push({ id: m.id, ip: m.ip }));\r\n setCheckItems(idArray);\r\n }\r\n } else {\r\n setCheckItems([]);\r\n }\r\n };\r\n\r\n const handleSingleCheck = (item) => {\r\n const isSelected = checkItems.some((checkedItem) => checkedItem.id === item.id);\r\n\r\n if (isSelected) {\r\n setCheckItems(checkItems.filter((checkedItem) => checkedItem.id !== item.id));\r\n } else if (checkItems.length < 5) {\r\n setCheckItems([...checkItems, item]);\r\n }\r\n };\r\n const isAllCheckDisabled = checkItems.length >= 5;\r\n\r\n const allChecked = () => {\r\n return checkItems.length === 5;\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n

    베이직 리포팅 설정

    \r\n
    \r\n \r\n
    \r\n
    \r\n

    \r\n 리포팅 서버 설정 *최대 5개까지 등록 가능합니다.\r\n

    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n handleAllCheck(e.target.checked)} />\r\n ip
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default ReportingServerModal;\r\n","// HOC + axios\r\nimport React, { useEffect } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { searchData } from '../../redux/board/ActionBoard';\r\nimport Paginate from 'react-paginate';\r\nimport { getFile } from '../../redux/fileupload/ActionFileUpload';\r\nimport { useTranslation } from 'react-i18next';\r\nimport LoadingSpninner from '../dataState/LoadingSpninner';\r\nimport { onlyDaydateFormat, nowDateFormat, dateFormat, endDateFormat } from '../date/dateFormat';\r\nimport ReportingItem from './ReportingItem';\r\nimport BasicMapTable from '../common/BasicMapTable';\r\nimport ReportingServerModal from '../modal/ReportingServerModal';\r\nimport { reportingModalState } from '../../redux/board/boardType';\r\nimport { action, listClear } from '../../redux/reporting/ReducerReporting';\r\nimport ReportingSedingStatus from './ReportingSedingStatus';\r\nconst Reporting = (props) => {\r\n const dispatch = useDispatch();\r\n const { reportloading, reportdata, reporterror } = useSelector((state) => state.ReducerBoard);\r\n const { t } = useTranslation('Lang');\r\n const { reportModal } = useSelector((state) => state.ReducerBoard);\r\n const {\r\n loading: scheduleLoading,\r\n disabled,\r\n error: scheduleError,\r\n } = useSelector((state) => state.ReducerReporting.ReportingScheduleDisabled);\r\n\r\n useEffect(() => {\r\n dispatch(searchData(1, 'Reporting', 0, 20));\r\n dispatch(action.getBasicReporitngScheduleDisabled());\r\n }, [dispatch]);\r\n\r\n const handleReportingModalState = () => {\r\n dispatch(reportingModalState(reportModal));\r\n };\r\n\r\n const downloadOnClick = (url) => {\r\n if (url != '' && url != null) {\r\n dispatch(getFile(url));\r\n } else {\r\n alert('생성대기 중인 리포트입니다.');\r\n }\r\n };\r\n\r\n const handlePageClick = (selectedPage) => {\r\n dispatch(searchData(selectedPage.selected + 1));\r\n };\r\n\r\n const handleModal = () => {};\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {(disabled || !disabled) && (\r\n \r\n )}\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    번호제목리포트 타입생성일다운로드
    \r\n
    \r\n '}\r\n previousClassName={'prev'}\r\n nextClassName={'next'}\r\n activeClassName={'active'}\r\n onPageChange={handlePageClick}\r\n />\r\n
    \r\n {reportModal && }\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default Reporting;\r\n","import React, { useEffect, useState } from 'react';\r\nimport { DateRangePicker } from 'react-date-range';\r\nimport { ko, enUS, zhCN } from 'date-fns/esm/locale';\r\nimport { addDays, endOfDay, startOfDay, startOfMonth, endOfMonth, addMonths, startOfWeek, endOfWeek, isSameDay } from 'date-fns';\r\nimport './styles.css'; // main style file\r\nimport './default.css'; // theme css file\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { dateChange, dateChangeWeek } from '../../redux/datepicker/ActionDatepicker';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nconst DateRangePickerCompnent = ({ initDisabledDate, visible, setVisible, state, dateChange, tmp, setTmp }) => {\r\n const [cstate, setcState] = useState([state]);\r\n const dispatch = useDispatch();\r\n const { i18n, t } = useTranslation('Lang');\r\n\r\n const onClickDateChange = () => {\r\n if (dateChange === 'dateChangeWeek') {\r\n dispatch(dateChangeWeek(cstate));\r\n setTmp(tmp + 1);\r\n } else {\r\n dispatch(dateChange(cstate));\r\n }\r\n setVisible && setVisible(!visible);\r\n };\r\n const defineds = {\r\n startOfWeek: startOfWeek(new Date()),\r\n endOfWeek: endOfWeek(new Date()),\r\n startOfLastWeek: startOfWeek(addDays(new Date(), -7)),\r\n endOfLastWeek: endOfWeek(addDays(new Date(), -7)),\r\n startOfToday: startOfDay(new Date()),\r\n endOfToday: endOfDay(new Date()),\r\n startOfYesterday: startOfDay(addDays(new Date(), -1)),\r\n endOfYesterday: endOfDay(addDays(new Date(), -1)),\r\n startOfMonth: startOfMonth(new Date()),\r\n endOfMonth: endOfMonth(new Date()),\r\n startOfLastMonth: startOfMonth(addMonths(new Date(), -1)),\r\n endOfLastMonth: endOfMonth(addMonths(new Date(), -1)),\r\n };\r\n\r\n const staticRangeHandler = {\r\n range: {},\r\n isSelected(range) {\r\n const definedRange = this.range();\r\n return isSameDay(range.startDate, definedRange.startDate) && isSameDay(range.endDate, definedRange.endDate);\r\n },\r\n };\r\n\r\n const createStaticRanges = (ranges) => {\r\n return ranges.map((range) => ({ ...staticRangeHandler, ...range }));\r\n };\r\n const defaultRange = createStaticRanges([\r\n {\r\n label: i18n.language === 'zh-CN' ? '今天' : i18n.language === 'en-US' ? 'Today' : '오늘',\r\n range: () => ({\r\n startDate: defineds.startOfToday,\r\n endDate: defineds.endOfToday,\r\n }),\r\n },\r\n {\r\n label: i18n.language === 'zh-CN' ? '昨天' : i18n.language === 'en-US' ? 'yesterday' : '어제',\r\n range: () => ({\r\n startDate: defineds.startOfYesterday,\r\n endDate: defineds.endOfYesterday,\r\n }),\r\n },\r\n\r\n {\r\n label: i18n.language === 'zh-CN' ? '本星期' : i18n.language === 'en-US' ? 'this week' : '이번주',\r\n range: () => ({\r\n startDate: defineds.startOfWeek,\r\n endDate: defineds.endOfWeek,\r\n }),\r\n },\r\n {\r\n label: i18n.language === 'zh-CN' ? '这个月' : i18n.language === 'en-US' ? 'this month' : '이번 달',\r\n range: () => ({\r\n startDate: defineds.startOfMonth,\r\n endDate: defineds.endOfMonth,\r\n }),\r\n },\r\n {\r\n label: i18n.language === 'zh-CN' ? '前一个月' : i18n.language === 'en-US' ? 'Last month' : '저번 달',\r\n range: () => ({\r\n startDate: defineds.startOfLastMonth,\r\n endDate: defineds.endOfLastMonth,\r\n }),\r\n },\r\n ]);\r\n\r\n return (\r\n <>\r\n setcState([item.selection])}\r\n editableDateInputs={false}\r\n moveRangeOnFirstSelection={false}\r\n ranges={cstate}\r\n months={1}\r\n direction=\"vertical\"\r\n scroll={{ enabled: true }}\r\n locale={i18n.language === 'zh-CN' ? zhCN : i18n.language === 'en-US' ? enUS : ko}\r\n dateDisplayFormat=\"yyyy/MM/dd\"\r\n staticRanges={defaultRange}\r\n inputRanges={[]}\r\n minDate={initDisabledDate && addDays(new Date(), initDisabledDate)}\r\n maxDate={addDays(new Date(), 0)}\r\n rangeColors={['var(--primary)']}\r\n />\r\n \r\n \r\n );\r\n};\r\n\r\nexport default DateRangePickerCompnent;\r\n","import React, { useEffect, useState } from 'react';\r\nimport Select, { components } from 'react-select';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { SlideDown } from 'react-slidedown';\r\nimport { getTrafficIP, getTrafficFullData } from '../../redux/traffic/ActionTraffic';\r\nimport 'react-slidedown/lib/slidedown.css';\r\nimport { dateFormat, nowDateFormat, endDateFormat } from '../date/dateFormat';\r\nimport { useTranslation } from 'react-i18next';\r\nimport TrafficDetailGraph from './TrafficDetailGraph';\r\n\r\nconst TrafficTVmode = ({ setTvmodeActive, tvmodeActive, displayBlockStyle, displayNoneStyle }) => {\r\n const dispatch = useDispatch();\r\n const { trafficIPLoading, trafficIPData, trafficIPError } = useSelector((state) => state.ReducerTraffic);\r\n\r\n const startDate = dateFormat();\r\n\r\n useEffect(() => {}, []);\r\n\r\n const [darkOn, setDarkOn] = useState(false);\r\n const { t } = useTranslation('Lang');\r\n\r\n const tvModeOffClick = () => {\r\n setTvmodeActive(!tvmodeActive);\r\n };\r\n\r\n const toggleBackground = () => {\r\n setDarkOn(!darkOn);\r\n };\r\n\r\n const handleIpClick = (e, number) => {\r\n dispatch(getTrafficFullData(e.value, number));\r\n };\r\n\r\n const closedStyle = {\r\n transition: 'none ease .5s 0s',\r\n };\r\n\r\n const isDark = darkOn ? 'tv-container tv-dark' : 'tv-container';\r\n const isClosed = !tvmodeActive ? 'closed' : null;\r\n\r\n const MultiGraphFunc = (number) => {\r\n return (\r\n
    \r\n t('IP없음')}\r\n loadingMessage={() => t('IP조회중')}\r\n theme={theme => ({\r\n ...theme,\r\n borderRadius: 0,\r\n colors: {\r\n ...theme.colors,\r\n primary25: '#d5d3f0',\r\n primary: 'var(--primary)',\r\n },\r\n })}\r\n components={{\r\n IndicatorSeparator: null,\r\n }}\r\n tabSelectsValue={false}\r\n onChange={(e) => handleIpClick(e, number)}\r\n options={\r\n trafficIPData && trafficIPData.data.map(({ serverIdx, ipAddress }) => ({ value: serverIdx, label: ipAddress }))\r\n }\r\n />\r\n \r\n
    \r\n );\r\n };\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n

    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n

    \r\n

    트래픽 비교 모드

    \r\n
    \r\n {startDate}\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n {MultiGraphFunc(1)}\r\n {MultiGraphFunc(2)}\r\n {MultiGraphFunc(3)}\r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default TrafficTVmode;\r\n","import React from 'react';\r\nimport { dateFormat } from '../date/dateFormat';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nconst TrafficBandWidth = ({ trafficBandRankDatas, bandAvgTraffic }) => {\r\n const { t } = useTranslation('Lang');\r\n\r\n function bandWidth() {\r\n return (\r\n trafficBandRankDatas &&\r\n trafficBandRankDatas.map((e, i) => {\r\n return (\r\n \r\n {e.rank}\r\n {dateFormat(e.maxTime)}\r\n \r\n {e.maxBps}\r\n {e.bandUnit}\r\n \r\n \r\n );\r\n })\r\n );\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {bandWidth()}\r\n \r\n \r\n \r\n \r\n \r\n
    no{t('시간')}{t('사용량')}
    {t('트래픽요금산정평균값')}{bandAvgTraffic}
    \r\n );\r\n};\r\n\r\nexport default TrafficBandWidth;\r\n","import React, { useEffect, useState } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { trafficAccountModal } from '../../redux/traffic/ActionTraffic';\r\nimport TrafficBandWidth from './TrafficBandWidth';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nconst TrafficAccount = ({ clickIp, chargeActive, startDate, endDate, trafficAllData }) => {\r\n const dispatch = useDispatch();\r\n const { accountModal } = useSelector((state) => state.ReducerTraffic);\r\n\r\n useEffect(() => {}, [clickIp, trafficAllData, startDate, endDate]);\r\n\r\n const { t } = useTranslation('Lang');\r\n\r\n const OpneModal = () => {\r\n dispatch(trafficAccountModal(accountModal));\r\n };\r\n\r\n const displayNoneStyle = {\r\n display: 'none',\r\n };\r\n\r\n const displayBlockStyle = {\r\n display: 'block',\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n

    {t('기간별트래픽송신합계')}(Bytes)

    \r\n \r\n \r\n {clickIp ? (\r\n \r\n \r\n \r\n \r\n ) : (\r\n \r\n \r\n \r\n )}\r\n \r\n
    \r\n {startDate} ~ {endDate}\r\n {trafficAllData && trafficAllData.data.totalTraffic}
    {t('데이터가없습니다')}
    \r\n

    {t('기간별대역폭송신Top5')}(Bps)

    \r\n \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default TrafficAccount;\r\n","import React, { useEffect, useState } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { getTrafficAllData } from '../../redux/traffic/ActionTraffic';\r\nimport { onlyDaydateFormat, dateFormat } from '../date/dateFormat';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { CSVLink } from 'react-csv';\r\nconst TrafficFooterData = ({ clickIp, startDate, endDate }) => {\r\n const dispatch = useDispatch();\r\n const state = useSelector((state) => state.ReducerDatepicker);\r\n const user = useSelector((state) => state.oidc.user);\r\n const [csvData, setCsvData] = useState([]);\r\n const { trafficAllDataLoading, trafficAllData, trafficAllDataError } = useSelector((state) => state.ReducerTraffic);\r\n useEffect(() => {\r\n dispatch(getTrafficAllData(clickIp, startDate === '' ? onlyDaydateFormat(state.startDate) : startDate, endDate));\r\n trafficAllData && handle();\r\n }, [clickIp, startDate, endDate]);\r\n\r\n const handle = () => {};\r\n\r\n const { t } = useTranslation('Lang');\r\n\r\n function Data() {\r\n return (\r\n trafficAllData &&\r\n trafficAllData.data.trafficDailyDatas.map((e, i) => (\r\n \r\n {onlyDaydateFormat(e.trafficDate)}\r\n {e.inMaxBps}\r\n {dateFormat(e.inMaxTime)}\r\n {e.outMaxBps}\r\n {dateFormat(e.outMaxTime)}\r\n {e.inTotalTraffic}\r\n {e.outTotalTraffic}\r\n \r\n ))\r\n );\r\n }\r\n\r\n return (\r\n
    \r\n

    \r\n [{startDate}~{endDate}]\r\n \r\n

    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {!clickIp ? (\r\n \r\n \r\n \r\n ) : (\r\n Data()\r\n )}\r\n \r\n
    \r\n {t('날짜')}\r\n {t('대역종량제')}{t('트래픽종량제')}
    {t('IN최대값')}{t('IN최대시간')}{t('OUT최대값')}{t('OUT최대시간')}{t('IN총트래픽')}{t('OUT총트래픽')}
    {t('데이터가없습니다')}
    \r\n
    \r\n );\r\n};\r\n\r\nexport default TrafficFooterData;\r\n","export const dnsTTLoptions = (t) => {\r\n return [\r\n // { value: 10, label: '10' + t('초') },\r\n // { value: 600, label: '10' + t('분') },\r\n // { value: 1800, label: '30' + t('분') },\r\n { value: 3600, label: '1' + t('시간') },\r\n { value: 21600, label: '6' + t('시간') },\r\n { value: 86400, label: '1' + t('일') },\r\n ];\r\n};\r\n\r\nexport const recordOptions = (t) => {\r\n return [\r\n { value: 'A', label: t('주소') + '(A)' },\r\n { value: 'MX', label: 'MX' + t('레코드') + '(MX)' },\r\n { value: 'TXT', label: t('텍스트') + '(TXT)' },\r\n { value: 'CNAME', label: t('별칭') + '(CNAME)' },\r\n { value: 'SRV', label: t('SRV') },\r\n ];\r\n};\r\n\r\nexport const IDCOptions = (t) => {\r\n return [\r\n { value: '1', label: '서초IDC' },\r\n { value: '2', label: '분당IDC' },\r\n ];\r\n};\r\n\r\nexport const visitReason = (t) => {\r\n return [\r\n { value: 1, label: '상담' },\r\n { value: 2, label: '회의' },\r\n { value: 3, label: '장비설치' },\r\n { value: 4, label: '장비점검' },\r\n { value: 5, label: '장비교체' },\r\n { value: 6, label: '장비반입' },\r\n { value: 7, label: '장비반출' },\r\n { value: 8, label: '기타업무' },\r\n ];\r\n};\r\nexport const idcText = (idc) => {\r\n switch (idc) {\r\n case 2:\r\n return '분당IDC';\r\n default:\r\n return '서초IDC';\r\n }\r\n};\r\n\r\nexport const visitTypeText = (visitType) => {\r\n switch (visitType) {\r\n case 1:\r\n return '상담';\r\n case 2:\r\n return '회의';\r\n case 3:\r\n return '장비설치';\r\n case 4:\r\n return '장비점검';\r\n case 5:\r\n return '장비교체';\r\n case 6:\r\n return '장비반입';\r\n case 7:\r\n return '장비반출';\r\n default:\r\n return '기타업무';\r\n }\r\n};\r\n\r\nexport const inquiryBoardType = (t) => {\r\n return [\r\n { value: '', label: t('전체') },\r\n { value: 4, label: t('기술문의') },\r\n { value: 14, label: t('결제지출증빙문의') },\r\n { value: 15, label: t('영업문의') },\r\n ];\r\n};\r\n\r\nexport const inquiryWorkDoneType = (t) => {\r\n return [\r\n { value: '', label: t('전체') },\r\n { value: 0, label: t('접수중') },\r\n { value: 1, label: t('처리중') },\r\n { value: 2, label: t('처리완료') },\r\n ];\r\n};\r\n\r\nexport const dnsCustomStyles = {\r\n option: (provided) => ({\r\n ...provided,\r\n border: '0px',\r\n boxShadow: 'none',\r\n }),\r\n control: (provided) => ({\r\n ...provided,\r\n width: 150,\r\n borderRadius: '0px',\r\n minHeight: '32px',\r\n height: '32px',\r\n }),\r\n menu: (provided) => ({\r\n ...provided,\r\n width: 150,\r\n }),\r\n indicatorsContainer: (provided, state) => ({\r\n ...provided,\r\n height: '32px',\r\n }),\r\n valueContainer: (provided, state) => ({\r\n ...provided,\r\n height: '32px',\r\n padding: '0 6px',\r\n }),\r\n};\r\n\r\nexport const recordCustomStyles = {\r\n control: (provided, state) => ({\r\n ...provided,\r\n border: '1px solid #ddd',\r\n background: 'white',\r\n borderColor: '#9e9e9e',\r\n borderRadius: '0px',\r\n minHeight: '32px',\r\n height: '32px',\r\n }),\r\n valueContainer: (provided, state) => ({\r\n ...provided,\r\n height: '32px',\r\n lineHeight: '32px',\r\n padding: '0 6px',\r\n }),\r\n\r\n input: (provided, state) => ({\r\n ...provided,\r\n margin: '0px',\r\n }),\r\n indicatorSeparator: (state) => ({\r\n display: 'none',\r\n }),\r\n indicatorsContainer: (provided, state) => ({\r\n ...provided,\r\n height: '32px',\r\n lineHeight: '32px',\r\n }),\r\n};\r\n\r\nexport const topCustomStyles = {\r\n control: (provided, state) => ({\r\n ...provided,\r\n border: '1px solid #ddd',\r\n background: 'white',\r\n borderColor: '#9e9e9e',\r\n borderRadius: '0px',\r\n minHeight: '25px',\r\n height: '30px',\r\n }),\r\n valueContainer: (provided, state) => ({\r\n ...provided,\r\n height: '30px',\r\n lineHeight: '15px',\r\n padding: '0 6px',\r\n }),\r\n\r\n input: (provided, state) => ({\r\n ...provided,\r\n margin: '0px',\r\n }),\r\n indicatorSeparator: (state) => ({\r\n display: 'none',\r\n }),\r\n indicatorsContainer: (provided, state) => ({\r\n ...provided,\r\n height: '30px',\r\n lineHeight: '30px',\r\n }),\r\n};\r\n\r\nexport const selectBoxCustomStyles = {\r\n control: (provided, state) => ({\r\n ...provided,\r\n border: '1px solid #ddd',\r\n background: 'white',\r\n borderColor: '#9e9e9e',\r\n borderRadius: '0px',\r\n minHeight: '40px',\r\n height: '30px',\r\n minWidth: '70% !important',\r\n width: '100%',\r\n margin: 5,\r\n }),\r\n valueContainer: (provided, state) => ({\r\n ...provided,\r\n height: '30px',\r\n lineHeight: '15px',\r\n padding: '0 6px',\r\n }),\r\n\r\n input: (provided, state) => ({\r\n ...provided,\r\n margin: '0px',\r\n minWidth: '70%',\r\n }),\r\n indicatorSeparator: (state) => ({\r\n display: 'none',\r\n }),\r\n indicatorsContainer: (provided, state) => ({\r\n ...provided,\r\n height: '30px',\r\n lineHeight: '30px',\r\n minWidth: '100% !important',\r\n }),\r\n};\r\n","import React, { useEffect, useState } from 'react';\r\nimport Select from 'react-select';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport DateRangePickerCompnent from '../datepicker/DateRangePickerCompnent';\r\nimport { getTrafficIP, getTrafficAllData } from '../../redux/traffic/ActionTraffic';\r\nimport TrafficTVmode from './TrafficTVmode.js';\r\nimport TrafficAccount from './TrafficAccount';\r\nimport TrafficDetailGraph from './TrafficDetailGraph';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { onlyDaydateFormat } from '../date/dateFormat';\r\nimport TrafficFooterData from './TrafficFooterData';\r\nimport * as selectOption from '../selectOptionValue/SelectValue';\r\n\r\nconst Traffic = (props) => {\r\n const dispatch = useDispatch();\r\n const state = useSelector((state) => state.ReducerDatepicker.week);\r\n const { trafficIPLoading, trafficIPData, trafficIPError, trafficAllDataLoading, trafficAllData, trafficAllDataError } = useSelector(\r\n (state) => state.ReducerTraffic\r\n );\r\n const [chargeActive, setChargeActive] = useState(false);\r\n\r\n const [subInterface, setSubInterface] = useState(null);\r\n const [tvmodeActive, setTvmodeActive] = useState(false);\r\n const [visible, setVisible] = useState(false);\r\n const [clickIp, setClickIp] = useState(null);\r\n const [tmp, setTmp] = useState(0);\r\n const [subInterfaceIndx, setSubInterfaceIndx] = useState(0);\r\n const [startDate, setStartDate] = useState(onlyDaydateFormat(state.startDate));\r\n const [endDate, setEndDate] = useState(onlyDaydateFormat(state.endDate));\r\n const [checkStartDate, setCheckStartDate] = useState(startDate);\r\n const [checkEndDate, setCheckEndDate] = useState(endDate);\r\n const { t } = useTranslation('Lang');\r\n\r\n useEffect(() => {\r\n setTimeout(() => dispatch(getTrafficIP(tmp, state, setClickIp, setTmp), 1));\r\n }, [dispatch]);\r\n\r\n useEffect(() => {\r\n setStartDate(onlyDaydateFormat(state.startDate));\r\n setEndDate(onlyDaydateFormat(state.endDate));\r\n }, [state]);\r\n\r\n const ipNoneStyle = {\r\n position: 'absolute',\r\n top: 0,\r\n left: 0,\r\n display: 'block',\r\n width: '100%',\r\n height: '100%',\r\n background: 'rgba(0, 0, 0, .6)',\r\n zIndex: 332,\r\n };\r\n const ipNoneTextStyle = {\r\n color: 'white',\r\n fontSize: '2em',\r\n textAlign: 'center',\r\n marginTop: '10%',\r\n };\r\n\r\n const displayNoneStyle = {\r\n display: 'none',\r\n };\r\n\r\n const displayBlockStyle = {\r\n display: 'block',\r\n };\r\n\r\n const toggleTrafficCharge = (e) => {\r\n setChargeActive(!chargeActive);\r\n };\r\n\r\n const datePickerOnClick = (e) => {\r\n setVisible(!visible);\r\n };\r\n\r\n const IpOnchange = (e, type) => {\r\n tmp <= 1 ? setTmp(1) : setTmp(tmp + 1);\r\n if (e === null) {\r\n setSubInterfaceIndx(0);\r\n dispatch(\r\n getTrafficAllData(clickIp, startDate === '' ? onlyDaydateFormat(state.startDate) : tmp > 1 ? startDate : endDate, endDate)\r\n );\r\n setSubInterface(trafficIPData.data.find((f) => f.serverIdx === clickIp).subInterfaces);\r\n } else if (type === 'main') {\r\n setClickIp(e.value);\r\n setSubInterfaceIndx(0);\r\n dispatch(\r\n getTrafficAllData(e.value, startDate === '' ? onlyDaydateFormat(state.startDate) : tmp > 1 ? startDate : endDate, endDate)\r\n );\r\n setSubInterface(trafficIPData.data.find((f) => f.serverIdx === e.value).subInterfaces);\r\n } else {\r\n setSubInterfaceIndx(e.value);\r\n dispatch(\r\n getTrafficAllData(\r\n clickIp,\r\n startDate === '' ? onlyDaydateFormat(state.startDate) : tmp > 1 ? startDate : endDate,\r\n endDate,\r\n e.value\r\n )\r\n );\r\n }\r\n };\r\n return (\r\n
    \r\n
    \r\n
    \r\n {t('사용중인아이피가없습니다')}\r\n
    \r\n
    \r\n {trafficIPData && trafficIPData.data.length === 0 ? (\r\n ''\r\n ) : (\r\n \r\n )}\r\n {/* IP 주소 선택 / 검색 */}\r\n
    \r\n
    \r\n t('IP없음')}\r\n loadingMessage={() => t('IP조회중')}\r\n components={{\r\n IndicatorSeparator: null,\r\n }}\r\n tabSelectsValue={false}\r\n options={\r\n trafficIPData && trafficIPData.data.map(({ serverIdx, ipAddress }) => ({ value: serverIdx, label: ipAddress }))\r\n }\r\n value={\r\n trafficIPData &&\r\n trafficIPData.data\r\n .map(({ serverIdx, ipAddress }) => ({ value: serverIdx, label: ipAddress }))\r\n .filter(({ value }) => value === clickIp)\r\n }\r\n onChange={(e) => IpOnchange(e, 'main')}\r\n isLoading={trafficIPLoading}\r\n theme={(theme) => ({\r\n ...theme,\r\n borderRadius: 0,\r\n colors: {\r\n ...theme.colors,\r\n primary25: '#d5d3f0',\r\n primary: 'var(--primary)',\r\n },\r\n })}\r\n />\r\n
    \r\n
    \r\n {subInterface && (\r\n ({ value: interfaceID, label: ipAddress }))}\r\n onChange={(e) => IpOnchange(e, 'sub')}\r\n theme={(theme) => ({\r\n ...theme,\r\n borderRadius: 0,\r\n colors: {\r\n ...theme.colors,\r\n primary25: '#d5d3f0',\r\n primary: 'var(--primary)',\r\n },\r\n })}\r\n >\r\n )}\r\n
    \r\n\r\n \r\n {/* */}\r\n
    \r\n {visible && (\r\n
    \r\n \r\n
    \r\n )}\r\n
      \r\n
    • \r\n {t('트래픽확인')}\r\n
    • \r\n
    • \r\n {t('트래픽요금산정')}\r\n
    • \r\n
    \r\n {/* 트래픽 확인 */}\r\n {!chargeActive && (\r\n
    \r\n
    \r\n
    \r\n
    \r\n

    \r\n {t('트래픽상세')}\r\n \r\n {checkStartDate === startDate && tmp === 1 ? [checkEndDate] : '[' + startDate + '~' + endDate + ']'}\r\n \r\n

    \r\n {!clickIp ? (\r\n
    {t('데이터가없습니다')}
    \r\n ) : (tmp === 1 || tmp === 0) && checkStartDate === startDate ? (\r\n \r\n ) : (\r\n \r\n )}\r\n
    \r\n
    \r\n
    \r\n
    \r\n )}\r\n {/* 트래픽 요금 산정 */}\r\n \r\n {/* 하단 데이터 */}\r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default Traffic;\r\n","import React, { useEffect, useState } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { searchData } from '../redux/board/ActionBoard';\r\nimport Paginate from 'react-paginate';\r\nimport { useTranslation } from 'react-i18next';\r\nimport LoadingSpninner from './dataState/LoadingSpninner';\r\nimport { onlyDaydateFormat } from './date/dateFormat';\r\n\r\nconst Notice = () => {\r\n const dispatch = useDispatch();\r\n const totalData = useSelector((state) => state.ReducerBoard);\r\n const { noticeloading, noticedata, noticeerror } = totalData;\r\n const totalCountPage = !noticedata.totalPage ? 1 : noticedata.totalPage;\r\n const [ClickData, setClickData] = useState('');\r\n const [page, setPage] = useState(1);\r\n const [nowIndex, setNowIndex] = useState(0);\r\n const [prevIndex, setPrevIndex] = useState('');\r\n const [nextIndex, setNextIndex] = useState('');\r\n const [showOn, setShowOn] = useState(false);\r\n\r\n function pathFunc() {\r\n return 'Board/Notice';\r\n }\r\n\r\n useEffect(() => {\r\n dispatch(searchData(page, pathFunc(), 0, 20));\r\n }, []);\r\n\r\n const { t } = useTranslation('Lang');\r\n\r\n function LoadingFunc() {\r\n /* Loading */\r\n if (noticeloading && !noticeerror)\r\n return (\r\n
    \r\n \r\n
    \r\n ); // 로딩중이고 데이터 없을때만\r\n if (noticeerror) {\r\n return noticeerror.message;\r\n }\r\n }\r\n\r\n function NoticeTable() {\r\n if (noticedata) {\r\n if (noticedata.totalCount > 0) {\r\n return noticedata.data.map((e, i) => (\r\n \r\n {e.postNumber}\r\n \r\n getAllPageIndex(e, noticedata.data[i - 1], noticedata.data[i + 1], i)}>{e.subject}\r\n {/* getAllPageIndex(e)}>{e.subject} */}\r\n \r\n {onlyDaydateFormat(e.regDate)}\r\n {e.writer}\r\n \r\n ));\r\n }\r\n } else {\r\n return
    {t('데이터가없습니다')}
    ;\r\n }\r\n }\r\n\r\n function NoticeView(e) {\r\n if (noticedata.totalCount > 0) {\r\n return (\r\n
    \r\n
    \r\n

    {e.subject}

    \r\n
      \r\n
    • \r\n {t('작성자')}\r\n {e.writer}\r\n
    • \r\n
    • \r\n {t('작성일')}\r\n {onlyDaydateFormat(e.regDate)}\r\n
    • \r\n
    • \r\n {t('조회수')}\r\n {e.hit}\r\n
    • \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n                    
    \r\n
    \r\n\r\n \r\n \r\n \r\n
    \r\n );\r\n }\r\n }\r\n\r\n const handlePageClick = (selectedPage) => {\r\n dispatch(searchData(selectedPage.selected + 1, 'Board/Notice', 0, 20));\r\n };\r\n\r\n //ViewPage 이전글\r\n const handleViewPrevClick = (e, i) => {\r\n if (!!e) {\r\n setNowIndex(i - 1);\r\n for (let x = 0; x < i; x++) {\r\n const prevArr = noticedata.data[x];\r\n setClickData((e) => prevArr);\r\n }\r\n }\r\n };\r\n\r\n //ViewPage 다음글\r\n const handleViewNextClick = (e, i, p) => {\r\n if (!!e) {\r\n setNowIndex(i + 1);\r\n for (let x = 19; x > i; x--) {\r\n const nextArr = noticedata.data[x];\r\n setClickData((e) => nextArr);\r\n }\r\n } else {\r\n let tmpPage = addPage(p + 1);\r\n i = 0; // array 0번째로 변경\r\n if (tmpPage > p) {\r\n let changeCount = 0;\r\n var patchResult = dispatch(searchData(tmpPage, 'Board/Notice', 0, 20));\r\n changeCount++;\r\n for (let x = 0; x >= i; x++) {\r\n i++;\r\n if (x === 19) return false;\r\n const nextArr = noticedata.data[x];\r\n setClickData((e) => nextArr);\r\n }\r\n }\r\n }\r\n };\r\n\r\n const addPage = (p) => {\r\n setPage(p);\r\n return p;\r\n };\r\n\r\n const getAllPageIndex = (e, prev, next, i) => {\r\n setClickData(e);\r\n setPrevIndex(prev);\r\n setNextIndex(next);\r\n setNowIndex(i);\r\n setShowOn(true);\r\n };\r\n\r\n const handleListClick = () => {\r\n setShowOn(false);\r\n };\r\n\r\n const displayNoneStyle = {\r\n display: 'none',\r\n };\r\n\r\n const displayBlockStyle = {\r\n display: 'block',\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n {LoadingFunc()}\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {NoticeTable()}\r\n
    {t('번호')}{t('제목')}{t('작성일')}{t('작성자')}
    \r\n
    \r\n
    \r\n '}\r\n previousClassName={'prev'}\r\n nextClassName={'next'}\r\n activeClassName={'on'}\r\n onPageChange={handlePageClick}\r\n />\r\n
    \r\n
    \r\n
    \r\n {NoticeView(ClickData)}\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default Notice;\r\n","import React, { useEffect, useState } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { searchData } from '../redux/board/ActionBoard';\r\nimport Paginate from 'react-paginate';\r\nimport { useTranslation } from 'react-i18next';\r\nimport LoadingSpninner from './dataState/LoadingSpninner';\r\nimport { onlyDaydateFormat } from './date/dateFormat';\r\n\r\nconst Security = (props) => {\r\n const dispatch = useDispatch();\r\n const totalData = useSelector((state) => state.ReducerBoard);\r\n const { securityloading, securitydata, securityerror } = totalData;\r\n const totalCountPage = securitydata.totalPage;\r\n const [ClickData, setClickData] = useState('');\r\n const [page, setPage] = useState(1);\r\n const [nowIndex, setNowIndex] = useState(0);\r\n const [prevIndex, setPrevIndex] = useState('');\r\n const [nextIndex, setNextIndex] = useState('');\r\n const [showOn, setShowOn] = useState(false);\r\n\r\n function pathFunc() {\r\n return 'Board/Security';\r\n }\r\n\r\n useEffect(() => {\r\n dispatch(searchData(page, pathFunc(), 0, 20));\r\n }, []);\r\n\r\n const { t } = useTranslation('Lang');\r\n\r\n function LoadingFunc() {\r\n /* Loading */\r\n if (securityloading && !securityerror)\r\n return (\r\n
    \r\n \r\n
    \r\n ); // 로딩중이고 데이터 없을때만\r\n if (securityerror) {\r\n return securityerror.message;\r\n }\r\n }\r\n\r\n function NoticeTable() {\r\n if (securitydata) {\r\n if (securitydata.totalCount > 0) {\r\n return securitydata.data.map((e, i) => (\r\n \r\n {e.postNumber}\r\n \r\n getAllPageIndex(e, securitydata.data[i - 1], securitydata.data[i + 1], i)}>{e.subject}\r\n {/* getAllPageIndex(e)}>{e.subject} */}\r\n \r\n {onlyDaydateFormat(e.regDate)}\r\n 관리자\r\n \r\n ));\r\n }\r\n } else {\r\n return
    {t('데이터가없습니다')}
    ;\r\n }\r\n }\r\n\r\n function NoticeView(e) {\r\n if (securitydata.totalCount > 0) {\r\n return (\r\n
    \r\n
    \r\n

    {e.subject}

    \r\n
      \r\n
    • \r\n {t('작성자')}\r\n {e.writer}\r\n
    • \r\n
    • \r\n {t('작성일')}\r\n {onlyDaydateFormat(e.regDate)}\r\n
    • \r\n
    • \r\n {t('조회수')}\r\n {e.hit}\r\n
    • \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n                    
    \r\n
    \r\n\r\n \r\n \r\n \r\n
    \r\n );\r\n }\r\n }\r\n\r\n const handlePageClick = (selectedPage) => {\r\n dispatch(searchData(selectedPage.selected + 1, 'Board/Security', 0, 20));\r\n };\r\n\r\n const handleViewPrevClick = (e, i) => {\r\n if (!!e) {\r\n setNowIndex(i - 1);\r\n for (let x = 0; x < i; x++) {\r\n const prevArr = securitydata.data[x];\r\n setClickData((e) => prevArr);\r\n }\r\n }\r\n };\r\n\r\n const handleViewNextClick = (e, i, p) => {\r\n if (!!e) {\r\n setNowIndex(i + 1);\r\n for (let x = 19; x > i; x--) {\r\n const nextArr = securitydata.data[x];\r\n setClickData((e) => nextArr);\r\n }\r\n } else {\r\n let tmpPage = addPage(p + 1);\r\n i = 0; // array 0번째로 변경\r\n if (tmpPage > p) {\r\n let changeCount = 0;\r\n var patchResult = dispatch(searchData(tmpPage, 'Board/Security', 0, 20));\r\n changeCount++;\r\n for (let x = 0; x >= i; x++) {\r\n i++;\r\n if (x === 19) return false;\r\n const nextArr = securitydata.data[x];\r\n setClickData((e) => nextArr);\r\n }\r\n }\r\n }\r\n };\r\n\r\n const addPage = (p) => {\r\n setPage(p);\r\n return p;\r\n };\r\n\r\n const getAllPageIndex = (e, prev, next, i) => {\r\n setClickData(e);\r\n setPrevIndex(prev);\r\n setNextIndex(next);\r\n setNowIndex(i);\r\n setShowOn(true);\r\n };\r\n\r\n const handleListClick = () => {\r\n setShowOn(false);\r\n };\r\n\r\n const displayNoneStyle = {\r\n display: 'none',\r\n };\r\n\r\n const displayBlockStyle = {\r\n display: 'block',\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n {LoadingFunc()}\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {NoticeTable()}\r\n
    {t('번호')}{t('제목')}{t('작성일')}{t('작성자')}
    \r\n
    \r\n
    \r\n '}\r\n previousClassName={'prev'}\r\n nextClassName={'next'}\r\n activeClassName={'on'}\r\n onPageChange={handlePageClick}\r\n />\r\n
    \r\n
    \r\n
    \r\n {NoticeView(ClickData)}\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default Security;\r\n","import React, { useEffect, useState } from 'react';\r\nimport { Link } from 'react-router-dom';\r\n\r\nconst Footer = (props) => {\r\n const [ScrollY, setScrollY] = useState(0);\r\n const [BtnStatus, setBtnStatus] = useState(false);\r\n\r\n const handleFollow = () => {\r\n setScrollY(window.pageYOffset);\r\n if (ScrollY > 200) {\r\n setBtnStatus(true);\r\n } else {\r\n setBtnStatus(false);\r\n }\r\n };\r\n\r\n const handleTop = () => {\r\n window.scrollTo({\r\n top: 0,\r\n behavior: 'smooth',\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n const watch = () => {\r\n window.addEventListener('scroll', handleFollow);\r\n };\r\n watch();\r\n return () => {\r\n window.removeEventListener('scroll', handleFollow);\r\n };\r\n });\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n {BtnStatus && (\r\n
    \r\n expand_less\r\n
    \r\n )}\r\n
    \r\n );\r\n};\r\n\r\nexport default Footer;\r\n","import axios from 'axios';\r\nimport { settingAction } from './ReducerMonitoringSetting';\r\n\r\nexport const FETCH_PORT_POSTS_REQUEST = 'settingChangePort/FETCH_POSTS_REQUEST';\r\nexport const FETCH_RESOURCE_POSTS_REQUEST = 'settingChangeResource/FETCH_RESOURCES_REQUEST';\r\nexport const FETCH_WEB_POSTS_REQUEST = 'settingChangeWeb/FETCH_WEB_REQUEST';\r\nexport const FETCH_SERVER_STATE_POSTS_REQUEST = 'settingChangeServerState/FETCH_SERVER_STATE_REQUEST';\r\n\r\nconst fetchSettingPortRequest = () => {\r\n return {\r\n type: FETCH_PORT_POSTS_REQUEST,\r\n };\r\n};\r\n\r\nconst fetchSettingResourceRequest = () => {\r\n return {\r\n type: FETCH_PORT_POSTS_REQUEST,\r\n };\r\n};\r\n\r\nconst fetchSettingWebRequest = () => {\r\n return {\r\n type: FETCH_WEB_POSTS_REQUEST,\r\n };\r\n};\r\n\r\nconst fetchSettingServerStateRequest = () => {\r\n return {\r\n type: FETCH_SERVER_STATE_POSTS_REQUEST,\r\n };\r\n};\r\n\r\nexport const putSettingPort = (portData, hostId, t) => async (dispatch) => {\r\n dispatch(fetchSettingPortRequest());\r\n await axios\r\n .put(`${process.env.REACT_APP_REQUEST_API_URL}Monitoring/ChangeMoitoringStatus`, portData)\r\n .then((response) => {\r\n if (response.data.code === 200) {\r\n dispatch(settingAction.getPorts(hostId));\r\n return alert(portData.monitorStatus === 'Enabled' ? t('중지되었습니다') : t('가동되었습니다'));\r\n }\r\n return alert('error : ' + response.data.message);\r\n })\r\n .catch((error) => {\r\n if (error.response) {\r\n // 요청이 이루어졌으며 서버가 2xx의 범위를 벗어나는 상태 코드로 응답했습니다.\r\n console.log('response', error.response.status);\r\n console.log('response', error.response.headers);\r\n } else if (error.request) {\r\n // 요청이 이루어 졌으나 응답을 받지 못했습니다.\r\n // `error.request`는 브라우저의 XMLHttpRequest 인스턴스 또는\r\n // Node.js의 http.ClientRequest 인스턴스입니다.\r\n console.log('request', error.request);\r\n } else {\r\n // 오류를 발생시킨 요청을 설정하는 중에 문제가 발생했습니다.\r\n console.log('Error', error.message);\r\n }\r\n console.log(error.config);\r\n //dispatch(fetchDnsFailure(error.status));\r\n });\r\n};\r\n\r\nexport const putSettingResource = (portData, hostId, t) => async (dispatch) => {\r\n dispatch(fetchSettingResourceRequest());\r\n await axios\r\n .put(`${process.env.REACT_APP_REQUEST_API_URL}Monitoring/ChangeMoitoringStatus`, portData)\r\n .then((response) => {\r\n if (response.data.code === 200) {\r\n dispatch(settingAction.getResources(hostId));\r\n return alert(portData.monitorStatus === 'Enabled' ? t('중지되었습니다') : t('가동되었습니다'));\r\n }\r\n return alert('error : ' + response.data.message);\r\n })\r\n .catch((error) => {\r\n if (error.response) {\r\n // 요청이 이루어졌으며 서버가 2xx의 범위를 벗어나는 상태 코드로 응답했습니다.\r\n console.log('response', error.response.status);\r\n console.log('response', error.response.headers);\r\n } else if (error.request) {\r\n // 요청이 이루어 졌으나 응답을 받지 못했습니다.\r\n // `error.request`는 브라우저의 XMLHttpRequest 인스턴스 또는\r\n // Node.js의 http.ClientRequest 인스턴스입니다.\r\n console.log('request', error.request);\r\n } else {\r\n // 오류를 발생시킨 요청을 설정하는 중에 문제가 발생했습니다.\r\n console.log('Error', error.message);\r\n }\r\n console.log(error.config);\r\n //dispatch(fetchDnsFailure(error.status));\r\n });\r\n};\r\n\r\nexport const putSettingResourceCheckValue = (resourceData, hostId, t) => async (dispatch) => {\r\n dispatch(fetchSettingResourceRequest());\r\n await axios\r\n .put(`${process.env.REACT_APP_REQUEST_API_URL}Monitoring/ChangeResourcCheckValue`, resourceData)\r\n .then((response) => {\r\n if (response.data.code === 200) {\r\n dispatch(settingAction.getResources(hostId));\r\n return alert(t('변경되었습니다'));\r\n }\r\n return alert('error : ' + response.data.message);\r\n })\r\n .catch((error) => {\r\n if (error.response) {\r\n // 요청이 이루어졌으며 서버가 2xx의 범위를 벗어나는 상태 코드로 응답했습니다.\r\n console.log('response', error.response.status);\r\n console.log('response', error.response.headers);\r\n } else if (error.request) {\r\n // 요청이 이루어 졌으나 응답을 받지 못했습니다.\r\n // `error.request`는 브라우저의 XMLHttpRequest 인스턴스 또는\r\n // Node.js의 http.ClientRequest 인스턴스입니다.\r\n console.log('request', error.request);\r\n } else {\r\n // 오류를 발생시킨 요청을 설정하는 중에 문제가 발생했습니다.\r\n console.log('Error', error.message);\r\n }\r\n console.log(error.config);\r\n //dispatch(fetchDnsFailure(error.status));\r\n });\r\n};\r\n\r\nexport const putSettingWeb = (webData, hostId, t) => async (dispatch) => {\r\n dispatch(fetchSettingWebRequest());\r\n const putData = {\r\n checkValue: webData.checkValue,\r\n httptestid: webData.httptestid,\r\n itemId: null,\r\n lastCheckDateTime: webData.lastCheckDateTime,\r\n monitorName: webData.domainName,\r\n monitorStatus: webData.status,\r\n monitorType: 'web',\r\n rule: null,\r\n triggerId: webData.triggerId,\r\n triggerStatus: null,\r\n };\r\n await axios\r\n .put(`${process.env.REACT_APP_REQUEST_API_URL}Monitoring/ChangeMoitoringStatus`, putData)\r\n .then((response) => {\r\n if (response.data.code === 200) {\r\n dispatch(settingAction.getWebs(hostId));\r\n return alert(webData.status === 'Enabled' ? t('중지되었습니다') : t('가동되었습니다'));\r\n }\r\n return alert('error : ' + response.data.message);\r\n })\r\n .catch((error) => {\r\n if (error.response) {\r\n // 요청이 이루어졌으며 서버가 2xx의 범위를 벗어나는 상태 코드로 응답했습니다.\r\n console.log('response', error.response.status);\r\n console.log('response', error.response.headers);\r\n } else if (error.request) {\r\n // 요청이 이루어 졌으나 응답을 받지 못했습니다.\r\n // `error.request`는 브라우저의 XMLHttpRequest 인스턴스 또는\r\n // Node.js의 http.ClientRequest 인스턴스입니다.\r\n console.log('request', error.request);\r\n } else {\r\n // 오류를 발생시킨 요청을 설정하는 중에 문제가 발생했습니다.\r\n console.log('Error', error.message);\r\n }\r\n console.log(error.config);\r\n //dispatch(fetchDnsFailure(error.status));\r\n });\r\n};\r\n\r\nexport const putSettingServerState = (hostData, checked, t) => async (dispatch) => {\r\n dispatch(fetchSettingServerStateRequest());\r\n await axios\r\n .put(`${process.env.REACT_APP_REQUEST_API_URL}Monitoring/Server/${checked}`, [hostData.hostid])\r\n .then((response) => {\r\n if (response.data.code === 200) {\r\n dispatch(settingAction.getSettings());\r\n return alert(!checked ? t('중지되었습니다') : t('가동되었습니다'));\r\n }\r\n return alert('error : ' + response.data.message);\r\n })\r\n .catch((error) => {\r\n if (error.response) {\r\n // 요청이 이루어졌으며 서버가 2xx의 범위를 벗어나는 상태 코드로 응답했습니다.\r\n console.log('response', error.response.status);\r\n console.log('response', error.response.headers);\r\n } else if (error.request) {\r\n // 요청이 이루어 졌으나 응답을 받지 못했습니다.\r\n // `error.request`는 브라우저의 XMLHttpRequest 인스턴스 또는\r\n // Node.js의 http.ClientRequest 인스턴스입니다.\r\n console.log('request', error.request);\r\n } else {\r\n // 오류를 발생시킨 요청을 설정하는 중에 문제가 발생했습니다.\r\n console.log('Error', error.message);\r\n }\r\n console.log(error.config);\r\n //dispatch(fetchDnsFailure(error.status));\r\n });\r\n};\r\n\r\nexport const putSettingAllServerState = (hostData, checked, t) => async (dispatch) => {\r\n dispatch(fetchSettingServerStateRequest());\r\n await axios\r\n .put(`${process.env.REACT_APP_REQUEST_API_URL}Monitoring/Server/${checked}`, hostData)\r\n .then((response) => {\r\n if (response.data.code === 200) {\r\n dispatch(settingAction.getSettings());\r\n return alert(!checked ? t('중지되었습니다') : t('가동되었습니다'));\r\n }\r\n return alert('error : ' + response.data.message);\r\n })\r\n .catch((error) => {\r\n if (error.response) {\r\n // 요청이 이루어졌으며 서버가 2xx의 범위를 벗어나는 상태 코드로 응답했습니다.\r\n console.log('response', error.response.status);\r\n console.log('response', error.response.headers);\r\n } else if (error.request) {\r\n // 요청이 이루어 졌으나 응답을 받지 못했습니다.\r\n // `error.request`는 브라우저의 XMLHttpRequest 인스턴스 또는\r\n // Node.js의 http.ClientRequest 인스턴스입니다.\r\n console.log('request', error.request);\r\n } else {\r\n // 오류를 발생시킨 요청을 설정하는 중에 문제가 발생했습니다.\r\n console.log('Error', error.message);\r\n }\r\n console.log(error.config);\r\n //dispatch(fetchDnsFailure(error.status));\r\n });\r\n};\r\n","import React, { useEffect, useRef } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { useLocation } from 'react-router';\r\nimport Select from 'react-select';\r\nimport { tagRegister } from '../../redux/monitoringSetting/ActionRegister';\r\nimport { putSettingServerState } from '../../redux/monitoringSetting/ActionStateChange';\r\nimport * as selectOption from '../selectOptionValue/SelectValue';\r\nimport { docModalState } from '../../redux/monitoringSetting/ActionModalState';\r\nimport { settingAction } from '../../redux/monitoringSetting/ReducerMonitoringSetting';\r\nimport { putSettingAllServerState } from '../../redux/monitoringSetting/ActionStateChange';\r\nimport ReducerTag, { action } from '../../redux/monitoringSetting/ReducerTag';\r\n\r\nconst SettingTopBar = ({ data, selectHost, setSelectHost, loading, setState, state }) => {\r\n const dispatch = useDispatch();\r\n const { t } = useTranslation('Lang');\r\n const ref = useRef();\r\n const location = useLocation(null);\r\n const options = data && data.data.map((d) => ({ value: d.hostid, label: d.hostName.split('_')[0] }));\r\n const { docState } = useSelector((state) => state.ReducerModalState);\r\n const { tagData, tagLoading } = useSelector((state) => state.ReducerTag);\r\n\r\n const hangleServerStateChange = (checked) => {\r\n setState(checked);\r\n dispatch(putSettingServerState(selectHost, checked, t));\r\n };\r\n const handleChange = (selectedOption) => {\r\n dispatch(settingAction.getWebs(selectedOption.value));\r\n dispatch(settingAction.getPorts(selectedOption.value));\r\n dispatch(settingAction.getResources(selectedOption.value));\r\n dispatch(settingAction.getLogs({ page: 1, hostid: selectedOption.value }));\r\n dispatch(action.getTag(selectedOption.value));\r\n const host = data.data.find((s) => s.hostid === selectedOption.value);\r\n let status = host.status === 0 ? true : false;\r\n setState(status);\r\n setSelectHost(host);\r\n };\r\n const handleDocState = () => {\r\n dispatch(docModalState(docState));\r\n };\r\n const hangleServerAllStateChange = (checked) => {\r\n const alertTxt = checked ? t('모든서버의모니터링을켜시겠습니까') : t('모든서버의 모니터링을 끄시겠습니까?');\r\n if (window.confirm(alertTxt)) {\r\n const hostid = data && data.data.map((h) => h.hostid);\r\n setState(checked);\r\n dispatch(putSettingAllServerState(hostid, checked, t));\r\n }\r\n };\r\n const handleTagSetting = (e) => {\r\n e.preventDefault();\r\n if (selectHost === null) return alert(t('태그를등록할서버를선택해주세요'));\r\n if (ref.current.value.length > 30 || ref.current.value.length === 0) return alert(t('태그를입력하지않았거나30자를초과하였습니다'));\r\n dispatch(tagRegister(selectHost.hostid, ref.current.value));\r\n ref.current.value = '';\r\n };\r\n\r\n const handleTagDelete = () => {\r\n if (tagLoading) {\r\n return alert('이미 삭제중입니다.');\r\n }\r\n dispatch(action.deleteTag(selectHost.hostid));\r\n };\r\n return (\r\n
    \r\n
    \r\n
    \r\n t('IP조회중')}\r\n noOptionsMessage={() => t('IP없음')}\r\n isLoading={loading}\r\n defaultInputValue={location.state ? location.state.ip : ''}\r\n theme={(theme) => ({\r\n ...theme,\r\n borderRadius: 0,\r\n colors: {\r\n ...theme.colors,\r\n primary25: '#d5d3f0',\r\n primary: 'var(--primary)',\r\n },\r\n })}\r\n />\r\n
    \r\n {selectHost && tagData && (\r\n
    \r\n
      \r\n
    • handleTagDelete()}>\r\n {tagData}\r\n clear\r\n
    • \r\n
    \r\n
    \r\n )}\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n {}\r\n
    \r\n {selectHost && (\r\n
    \r\n
    \r\n hangleServerStateChange(e.target.checked)}\r\n />\r\n \r\n {/*

    ※ {t('해당서버의모니터링을켜고끌수있습니다')}

    */}\r\n
    \r\n
    \r\n 태그 등록\r\n \r\n \r\n
    \r\n
    \r\n )}\r\n
    \r\n );\r\n};\r\n\r\nexport default SettingTopBar;\r\n","import React from 'react';\r\nimport LoadingSpninner from '../dataState/LoadingSpninner';\r\nimport TableNoData from '../dataState/TableNoData';\r\nimport ErrorHandler from '../error/ErrorHandler';\r\n\r\nconst SettingMapTable = ({\r\n SettingItem,\r\n data,\r\n loading,\r\n error,\r\n t,\r\n deleteLoading,\r\n handleChange,\r\n setInputs,\r\n inputs,\r\n selectHost,\r\n cSpan,\r\n height,\r\n}) => {\r\n const loadingHeight = height && (height - 100) / 2;\r\n if (loading && (!data || data.zabbixData.length === 0))\r\n return (\r\n \r\n \r\n \r\n {t('로딩중')}...\r\n \r\n \r\n ); // 로딩중이고 데이터 없을때만\r\n if (error) {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n );\r\n }\r\n if (!selectHost) return ;\r\n if (!data || data.zabbixData.length === 0) return ;\r\n return (\r\n <>\r\n {(loading || deleteLoading) && (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n {data.zabbixData.map((d) => (\r\n \r\n ))}\r\n \r\n );\r\n};\r\n\r\nexport default SettingMapTable;\r\n","import React from 'react';\r\n\r\nconst SettingOff = ({ t }) => (\r\n
    \r\n {t('현재 모니터링이 Off상태입니다')}\r\n
    \r\n {t('상태를 변경하시려면 모니터링을 on상태로 변경해주시기 바랍니다')}\r\n
    \r\n);\r\n\r\nexport default SettingOff;\r\n","import React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\nimport { getPortDelete } from '../../../redux/monitoringSetting/ActionDelete';\r\nimport { putSettingPort } from '../../../redux/monitoringSetting/ActionStateChange';\r\nimport moment from 'moment';\r\n\r\nconst SettingPortItem = ({ data, t, hostId }) => {\r\n const dispatch = useDispatch();\r\n const handleRunState = () => {\r\n if (data.monitorStatus === 'Enabled') {\r\n return alert(t('이미가동상태입니다'));\r\n }\r\n dispatch(putSettingPort(data, hostId, t));\r\n };\r\n\r\n const handleStopState = () => {\r\n if (data.monitorStatus === 'Disabled') {\r\n return alert(t('이미중지상태입니다'));\r\n }\r\n dispatch(putSettingPort(data, hostId, t));\r\n };\r\n\r\n const handleDelete = () => {\r\n dispatch(getPortDelete(data.itemId, hostId, t));\r\n };\r\n\r\n return (\r\n \r\n {data.monitorName}\r\n {t(data.triggerStatus)}\r\n {data.lastCheckDateTime !== '1970-01-01T09:00:00+09:00' && moment(data.lastCheckDateTime).format('LLL')}\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default SettingPortItem;\r\n","import React, { useEffect, useRef, useState } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { portModalState } from '../../../redux/monitoringSetting/ActionModalState';\r\nimport SettingMapTable from '../../common/SettingMapTable';\r\nimport SettingOff from '../SettingOff';\r\nimport SettingPortItem from './SettingPortItem';\r\n\r\nconst SettingPortTable = ({ selectHost, status, state }) => {\r\n const { data, loading, error } = useSelector((state) => state.ReducerMonitoringSetting.portData);\r\n const { portState } = useSelector((state) => state.ReducerModalState);\r\n const { deletePortLoading } = useSelector((state) => state.ReducerDelete);\r\n const dispatch = useDispatch();\r\n const { t } = useTranslation('Lang');\r\n const [height, setHeight] = useState(0);\r\n const ref = useRef(null);\r\n\r\n useEffect(() => {\r\n setHeight(ref.current.clientHeight);\r\n }, [ref, data]);\r\n\r\n const handlePortState = () => {\r\n if (!selectHost) return alert(t('IP를선택하세요'));\r\n dispatch(portModalState(portState));\r\n };\r\n return (\r\n
    \r\n {selectHost && (status === 1 || state === false) && }\r\n

    {t('포트설정')}

    \r\n {data && (\r\n \r\n )}\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n \r\n }\r\n \r\n
    {t('포트')}{t('포트상태')}{t('체크시간')}{t('변경')}
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default SettingPortTable;\r\n","import React, { useState } from 'react';\r\nimport { useDispatch } from 'react-redux';\r\nimport { getResourceDelete } from '../../../redux/monitoringSetting/ActionDelete';\r\nimport { putSettingResource } from '../../../redux/monitoringSetting/ActionStateChange';\r\nimport moment from 'moment';\r\n\r\nconst SettingResourceItem = ({ data, t, hostId, setInputs, inputs }) => {\r\n const dispatch = useDispatch();\r\n const [inputValue, setInputValue] = useState(data.checkValue);\r\n const handleRunState = () => {\r\n if (data.monitorStatus === 'Enabled') {\r\n return alert(t('이미가동상태입니다'));\r\n }\r\n dispatch(putSettingResource(data, hostId,t));\r\n };\r\n\r\n const handleStopState = () => {\r\n if (data.monitorStatus === 'Disabled') {\r\n return alert(t('이미중지상태입니다'));\r\n }\r\n dispatch(putSettingResource(data, hostId,t));\r\n };\r\n\r\n const handleDelete = () => {\r\n dispatch(getResourceDelete(data.itemId, hostId,t));\r\n };\r\n const handleChange = (value, triggerId) => {\r\n const newValue = value.replace(/[^0-9]/g, '');\r\n setInputValue(newValue);\r\n const curruntInputs = inputs.filter((s) => s.triggerId !== triggerId);\r\n const changeData = {\r\n ...data,\r\n checkValue: newValue,\r\n };\r\n setInputs(curruntInputs.concat(changeData));\r\n };\r\n return (\r\n \r\n {data.monitorName}\r\n {data.rule}\r\n \r\n handleChange(e.target.value, data.triggerId)} />\r\n \r\n {data.lastCheckDateTime !== '1970-01-01T09:00:00+09:00' && moment(data.lastCheckDateTime).format('LLL')}\r\n \r\n
      \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n );\r\n};\r\n\r\nexport default SettingResourceItem;\r\n","import React, { useEffect, useRef, useState } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { resourceModalState } from '../../../redux/monitoringSetting/ActionModalState';\r\nimport { putSettingResourceCheckValue } from '../../../redux/monitoringSetting/ActionStateChange';\r\nimport SettingMapTable from '../../common/SettingMapTable';\r\nimport SettingOff from '../SettingOff';\r\nimport SettingResourceItem from './SettingResourceItem';\r\n\r\nconst SettingResourceTable = ({ selectHost, status, state }) => {\r\n const { data, loading, error } = useSelector((state) => state.ReducerMonitoringSetting.resourceData);\r\n const { resoureState } = useSelector((state) => state.ReducerModalState);\r\n const { deleteResourceLoading } = useSelector((state) => state.ReducerDelete);\r\n const [inputs, setInputs] = useState(data && data.zabbixData);\r\n const dispatch = useDispatch();\r\n const { t } = useTranslation('Lang');\r\n\r\n const handleResourceState = () => {\r\n if (!selectHost) return alert(t('IP를선택하세요'));\r\n dispatch(resourceModalState(resoureState));\r\n };\r\n\r\n const [height, setHeight] = useState(0);\r\n const ref = useRef(null);\r\n\r\n useEffect(() => {\r\n setHeight(ref.current.clientHeight);\r\n }, [ref, data]);\r\n\r\n const handleChange = (e) => {\r\n e.preventDefault();\r\n const selectValue = inputs.reduce(\r\n (result, item) =>\r\n data.zabbixData.some((el) => el.triggerId === item.triggerId && el.checkValue !== item.checkValue)\r\n ? [...result, item]\r\n : result,\r\n []\r\n );\r\n if (selectValue.length === 0) {\r\n return alert(t('변경될체크값을설정해주세요'));\r\n }\r\n dispatch(putSettingResourceCheckValue(selectValue, data.hostId, t));\r\n };\r\n return (\r\n
    \r\n {selectHost && (status === 1 || state === false) && }\r\n

    \r\n Agent {t('중지')} {t('및')} {t('삭제')}\r\n

    \r\n {data && (\r\n \r\n )}*서버에 Agent가 설치되어 있어야 스캔이 가능합니다. 먼저 지원센터에서 Agent 설치 요청을 해주시기 바랍니다.\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n \r\n }\r\n \r\n
    {t('이름')}{t('규칙')}{t('체크값')}{t('체크시간')}{t('변경')}
    \r\n
    \r\n {selectHost && data && (\r\n
    \r\n \r\n
    \r\n )}\r\n
    \r\n );\r\n};\r\n\r\nexport default SettingResourceTable;\r\n","import React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\nimport { webDelete } from '../../../redux/monitoringSetting/ActionDelete';\r\nimport { putSettingWeb } from '../../../redux/monitoringSetting/ActionStateChange';\r\nconst SettingWebItem = ({ data, t, hostId }) => {\r\n const dispatch = useDispatch();\r\n const handleRunState = () => {\r\n if (data.monitorStatus === 'Enabled') {\r\n return alert(t('이미가동상태입니다'));\r\n }\r\n dispatch(putSettingWeb(data, hostId,t));\r\n };\r\n\r\n const handleStopState = () => {\r\n if (data.monitorStatus === 'Disabled') {\r\n return alert(t('이미중지상태입니다'));\r\n }\r\n dispatch(putSettingWeb(data, hostId,t));\r\n };\r\n\r\n const handleDelete = () => {\r\n dispatch(webDelete(data, hostId,t));\r\n };\r\n\r\n return (\r\n \r\n {data.checkUrl}\r\n {data.checkValue}\r\n {data.responseCode}\r\n \r\n
      \r\n \r\n \r\n \r\n
    \r\n \r\n \r\n );\r\n};\r\n\r\nexport default SettingWebItem;\r\n","import React, { useEffect, useRef, useState } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { webHostModalState, webModalState } from '../../../redux/monitoringSetting/ActionModalState';\r\nimport SettingMapTable from '../../common/SettingMapTable';\r\nimport SettingOff from '../SettingOff';\r\nimport SettingWebItem from './SettingWebItem';\r\n\r\nconst SettingWebTable = ({ selectHost, status, state }) => {\r\n const { data, loading, error } = useSelector((state) => state.ReducerMonitoringSetting.web);\r\n const { t } = useTranslation('Lang');\r\n const { webState } = useSelector((state) => state.ReducerModalState);\r\n const { deleteWebLoading } = useSelector((state) => state.ReducerDelete);\r\n const dispatch = useDispatch();\r\n\r\n const handleWebState = () => {\r\n if (!selectHost) return alert(t('IP를선택하세요'));\r\n dispatch(webModalState(webState));\r\n dispatch(webHostModalState(selectHost));\r\n };\r\n\r\n const [height, setHeight] = useState(0);\r\n const ref = useRef(null);\r\n\r\n useEffect(() => {\r\n setHeight(ref.current.clientHeight);\r\n }, [ref, data]);\r\n return (\r\n
    \r\n {selectHost && (status === 1 || state === false) && }\r\n

    \r\n Web {t('중지')} {t('및')} {t('삭제')}\r\n

    \r\n {data && (\r\n \r\n )}\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    URL{t('체크값')}{t('응답코드')}{t('변경')}
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default SettingWebTable;\r\n","import React, { useState } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport SettingPortTable from './port/SettingPortTable';\r\nimport SettingResourceTable from './resource/SettingResourceTable';\r\nimport SettingWebTable from './web/SettingWebTable';\r\n\r\nconst SettingList = ({ selectHost, status, state }) => {\r\n const [tabState, setTabState] = useState(1);\r\n const { t } = useTranslation('Lang');\r\n const handleTabState = (idx) => {\r\n setTabState(idx);\r\n };\r\n return (\r\n <>\r\n
      \r\n
    • handleTabState(1)}>\r\n {t('포트')}\r\n
    • \r\n
    • handleTabState(2)}>\r\n {t('리소스')}\r\n
    • \r\n
    • handleTabState(3)}>\r\n {t('웹')}\r\n
    • \r\n
    \r\n {tabState === 1 && }\r\n {tabState === 2 && }\r\n {tabState === 3 && }\r\n \r\n );\r\n};\r\n\r\nexport default SettingList;\r\n","import React, { useEffect, useState } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport SettingTopBar from './SettingTopBar';\r\nimport SettingList from './SettingList';\r\nimport { useLocation } from 'react-router';\r\nimport ErrorHandler from '../error/ErrorHandler';\r\nimport { docModalState } from '../../redux/monitoringSetting/ActionModalState';\r\nimport { settingAction } from '../../redux/monitoringSetting/ReducerMonitoringSetting';\r\n\r\nconst MonitoringSetting = (props) => {\r\n const location = useLocation(null);\r\n const { data, loading, error } = useSelector((state) => state.ReducerMonitoringSetting.hostData);\r\n const [selectHost, setSelectHost] = useState(null);\r\n const [state, setState] = useState(true);\r\n const { t } = useTranslation('Lang');\r\n const dispatch = useDispatch();\r\n const selectHostid = selectHost && selectHost.hostid;\r\n const status = selectHostid && data && data.data.find((s) => s.hostid === selectHostid).status;\r\n\r\n useEffect(() => {\r\n setTimeout(() => dispatch(settingAction.getSettings(), 1000));\r\n if (location.state != null) {\r\n setSelectHost(location.state.hostid);\r\n setState(location.state.status === 0 ? false : true);\r\n }\r\n }, [dispatch, location.state]);\r\n\r\n if (error) return ;\r\n return (\r\n <>\r\n
    \r\n \r\n \r\n
    \r\n \r\n );\r\n};\r\nexport default MonitoringSetting;\r\n","import React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch } from 'react-redux';\r\nimport Select from 'react-select';\r\nimport { getRecordData } from '../../redux/nameserver/ActionRecord';\r\nimport * as selectOption from '../selectOptionValue/SelectValue';\r\n\r\nconst NameServerTopBar = ({ DnsData, handleModal, setDomainState, DnsLoading, domainState, handleSearch, searchRef}) => {\r\n const dispatch = useDispatch();\r\n const { t } = useTranslation('Lang');\r\n\r\n const options = DnsData && DnsData.data.map((d) => ({ value: d.domainName, label: d.domainName }));\r\n\r\n const handleChange = (selectedOption) => {\r\n dispatch(getRecordData(selectedOption.value));\r\n setDomainState(selectedOption.value);\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n t('IP조회중')}\r\n noOptionsMessage={() => t('IP없음')}\r\n isLoading={DnsLoading}\r\n value={DnsData && options.filter(({ value }) => value === domainState)}\r\n theme={(theme) => ({\r\n ...theme,\r\n borderRadius: 0,\r\n colors: {\r\n ...theme.colors,\r\n primary25: '#d5d3f0',\r\n primary: 'var(--primary)',\r\n },\r\n })}\r\n />\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default NameServerTopBar;\r\n","import React from 'react';\r\nimport { useDispatch } from 'react-redux';\r\nimport { deleteRecordData } from '../../redux/nameserver/ActionRecord';\r\nimport { recordModalDataSet } from '../../redux/nameserver/ActionRecordSetting';\r\n\r\nconst RecordItem = ({ data, t, idx, no }) => {\r\n const dispatch = useDispatch();\r\n const handleModionClick = (record) => {\r\n if (data.recordType === 'SOA' || data.recordType === 'NS') {\r\n return alert(t('해당레코드타입은수정할수없습니다'));\r\n }\r\n dispatch(recordModalDataSet(record));\r\n };\r\n\r\n const handleDelonClick = () => {\r\n if (data.recordType === 'SOA' || data.recordType === 'NS') {\r\n return alert(t('해당레코드타입은삭제할수없습니다'));\r\n }\r\n if (window.confirm(t('레코드를 삭제하시겠습니까'))) {\r\n dispatch(deleteRecordData(data, t));\r\n }\r\n };\r\n let ttl = 0;\r\n switch (data.ttl) {\r\n case 10:\r\n ttl = `10${'초'}`;\r\n break;\r\n case 300:\r\n ttl = `5${'분'}`;\r\n break;\r\n case 600:\r\n ttl = `10${'분'}`;\r\n break;\r\n case 1800:\r\n ttl = `30${'분'}`;\r\n break;\r\n case 3600:\r\n ttl = `1${t('시간')}`;\r\n break;\r\n case 21600:\r\n ttl = `6${t('시간')}`;\r\n break;\r\n case 86400:\r\n ttl = `1${t('일')}`;\r\n break;\r\n default:\r\n ttl = '0';\r\n break;\r\n }\r\n return (\r\n \r\n {idx + 1}\r\n {data.subDomain}\r\n \r\n {data.recordType} {`${data.recordType === 'MX' ? '/ ' + data.priority : ''}`}\r\n \r\n {data.recordValue}\r\n {ttl}\r\n \r\n {\r\n handleModionClick(data);\r\n }}\r\n >\r\n {t('수정')}\r\n \r\n {\r\n handleDelonClick();\r\n }}\r\n >\r\n {t('삭제')}\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default RecordItem;\r\n","import React, { useEffect, useRef, useState } from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport MonitoringMapTable from '../common/MonitoringMapTable';\r\nimport RecordItem from './RecordItem';\r\n\r\nconst RecordTable = ({ t, domainState, handleDomainDeleteModal }) => {\r\n const { recordData, recordLoading, recordError } = useSelector((state) => state.ReducerRecord);\r\n const [height, setHeight] = useState(0);\r\n const ref = useRef(null);\r\n\r\n useEffect(() => {\r\n setHeight(ref.current.clientHeight);\r\n }, [ref, recordData]);\r\n\r\n return (\r\n
    \r\n

    \r\n DNS {t('레코드')} {t('관리')}\r\n

    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    {t('번호')}{t('서브도메인')}\r\n {t('타입')} / {t('순위')}\r\n {t('IP주소레코드값')}TTL{t('상태설정')}
    \r\n
    \r\n
    \r\n

    {t('레코드타입')}

    \r\n

    {t('주소(A)')}

    \r\n

    {t('MX레코드')}

    \r\n

    {t('텍스트TXT')}

    \r\n

    {t('별칭CNAME')}

    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default RecordTable;\r\n","import React, { memo, useEffect, useRef, useState } from 'react';\r\nimport Select from 'react-select';\r\nimport * as selectOption from '../selectOptionValue/SelectValue';\r\nimport { useDispatch } from 'react-redux';\r\nimport { setDnsRecord } from '../../redux/nameserver/ActionRecord';\r\nimport useValidator from '../useValidator';\r\n\r\nconst DnsRecordAdd = memo(({ t, domainState }) => {\r\n const [validator, showValidationMessage] = useValidator();\r\n const dispatch = useDispatch();\r\n const [inputs, setInputs] = useState({\r\n data: {\r\n Action: '',\r\n RecordType: '',\r\n SubDomain: '',\r\n Domain: '',\r\n Content: '',\r\n Priority: '',\r\n TTL: 86400,\r\n },\r\n });\r\n const [selectTTL, setSelectTTL] = useState(null);\r\n const [selectReg, setSelectReg] = useState({});\r\n const [ruleText, ruleTextSet] = useState('required');\r\n const [selectType, setSelectType] = useState(null);\r\n const ref = useRef(null);\r\n\r\n useEffect(() => {\r\n setInputs({\r\n ...inputs,\r\n data: {\r\n ...inputs.data,\r\n Domain: domainState,\r\n Action: '',\r\n RecordType: '',\r\n SubDomain: '',\r\n Content: '',\r\n Priority: 0,\r\n TTL: 86400,\r\n },\r\n });\r\n setSelectType(null);\r\n }, [domainState]);\r\n\r\n const onChange = (e) => {\r\n const { value, name } = e.target;\r\n if ([name] == 'Priority') {\r\n setInputs({\r\n ...inputs,\r\n data: { ...inputs.data, [name]: e.target.valueAsNumber },\r\n });\r\n } else {\r\n setInputs({\r\n ...inputs,\r\n data: { ...inputs.data, [name]: value },\r\n });\r\n }\r\n };\r\n\r\n const handleRecordChange = (selectedOption) => {\r\n let a = 0;\r\n if (selectedOption.value === 'MX' || selectedOption.value === 'SRV') {\r\n ref.current.focus();\r\n a = 0;\r\n }\r\n\r\n setSelectType(selectedOption.value);\r\n if (selectedOption.value === 'A') {\r\n ruleTextSet('required|ip');\r\n setSelectReg({\r\n ...selectReg,\r\n ip: {\r\n message: t('ip형식이아닙니다'),\r\n rule: (val, params, validator) => {\r\n return (\r\n validator.helpers.testRegex(\r\n val,\r\n /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/\r\n ) && params.indexOf(val) === -1\r\n );\r\n },\r\n },\r\n });\r\n } else if (selectedOption.value === 'TXT') {\r\n ruleTextSet('required');\r\n } else if (selectedOption.value === 'SRV') {\r\n //srv 필요\r\n } else {\r\n ruleTextSet('required|domain');\r\n setSelectReg({\r\n ...selectReg,\r\n domain: {\r\n message: t('도메인형식이아닙니다'),\r\n rule: (val, params, validator) => {\r\n return (\r\n validator.helpers.testRegex(\r\n val.toLowerCase(),\r\n /(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\\.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]/g\r\n ) && params.indexOf(val) === -1\r\n );\r\n },\r\n required: true,\r\n },\r\n });\r\n }\r\n setInputs({\r\n ...inputs,\r\n data: { ...inputs.data, RecordType: selectedOption, Priority: a },\r\n });\r\n };\r\n\r\n const handleTTLChange = (selectedOption) => {\r\n setInputs({\r\n ...inputs,\r\n data: { ...inputs.data, TTL: selectedOption.value },\r\n });\r\n setSelectTTL(selectedOption.value);\r\n };\r\n\r\n const handleSumbit = (e) => {\r\n e.preventDefault();\r\n\r\n if (!domainState) {\r\n alert(t('도메인을먼저선택해주세요'));\r\n } else if (validator.allValid()) {\r\n dispatch(setDnsRecord(inputs, domainState, t));\r\n } else {\r\n alert(t('필수값을모두입력해주세요'));\r\n showValidationMessage(true);\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n {domainState && (\r\n
    \r\n

    \r\n DNS {t('레코드')} {t('추가')}\r\n

    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    {t('레코드타입')}\r\n ({\r\n ...theme,\r\n borderRadius: 0,\r\n colors: {\r\n ...theme.colors,\r\n primary25: '#d5d3f0',\r\n primary: 'var(--primary)',\r\n },\r\n })}\r\n />\r\n {validator.message('RecordType', inputs.data.RecordType, 'required', {\r\n messages: {\r\n required: t('필수값'),\r\n },\r\n })}\r\n\r\n \r\n {(selectType === 'MX' || selectType === 'SRV' ) &&\r\n validator.message('Priority', inputs.data.Priority, 'required|numeric', {\r\n messages: {\r\n required: t('필수값'),\r\n numeric: t('숫자만'),\r\n },\r\n })}\r\n TTL\r\n ({\r\n ...theme,\r\n borderRadius: 0,\r\n colors: {\r\n ...theme.colors,\r\n primary25: '#d5d3f0',\r\n primary: 'var(--primary)',\r\n },\r\n })}\r\n value={\r\n !selectTTL\r\n ? selectOption.dnsTTLoptions(t).filter((s) => s.value === 86400)\r\n : selectOption.dnsTTLoptions(t).filter((s) => s.value === selectTTL)\r\n }\r\n />\r\n
    {t('서브도메인')}\r\n \r\n {`.${domainState}`}\r\n {selectType === 'CNAME' &&\r\n validator.message('SubDomain', inputs.data.SubDomain, 'required|domain', {\r\n messages: {\r\n required: t('필수값'),\r\n },\r\n validators: {\r\n domain: {\r\n message: t('서브도메인형식이아닙니다'),\r\n rule: (val, params, validator) => {\r\n return (\r\n validator.helpers.testRegex(val, /^[a-zA-Z0-9-_*]+[a-zA-Z0-9-._]*$/) &&\r\n params.indexOf(val) === -1\r\n );\r\n },\r\n required: true,\r\n },\r\n },\r\n })}\r\n {selectType !== 'CNAME' &&\r\n validator.message('SubDomain', inputs.data.SubDomain, 'domain|subDomain', {\r\n validators: {\r\n domain: {\r\n message: t('서브도메인형식이아닙니다'),\r\n rule: (val, params, validator) => {\r\n return (\r\n validator.helpers.testRegex(val, /^[a-zA-Z0-9-_*]+[a-zA-Z0-9-._]*$/) &&\r\n params.indexOf(val) === -1\r\n );\r\n },\r\n },\r\n subDomain: {\r\n message: t('도메인은 빼고 입력해주세요.'),\r\n rule: (val, params, validator) => {\r\n return !val.includes(domainState);\r\n },\r\n },\r\n },\r\n })}\r\n IP / {t('레코드')}\r\n \r\n {validator.message('Content', inputs.data.Content, ruleText, {\r\n messages: {\r\n required: t('필수값'),\r\n },\r\n validators: selectReg,\r\n })}\r\n
    \r\n
    \r\n \r\n
    \r\n )}\r\n
    \r\n

    \r\n DNS {t('레코드')} {t('유의사항')}\r\n

    \r\n
    \r\n

    {t('유의사항1')}

    \r\n

    {t('유의사항2')}

    \r\n

    {t('유의사항3')}

    \r\n
    \r\n
    \r\n \r\n );\r\n});\r\n\r\nexport default DnsRecordAdd;\r\n","import React, { memo } from 'react';\r\nimport { CopyToClipboard } from 'react-copy-to-clipboard';\r\nconst NameServerAddress = memo(({ t,user }) => {\r\n return (\r\n
    \r\n
      \r\n \r\n
    • {t('첫번째네임서버')}
    • \r\n
    • \r\n \r\n alert(`${t('URL복사')}`)}>\r\n \r\n \r\n
    • \r\n
    • \r\n \r\n alert(`${t('IP복사')}`)}>\r\n \r\n \r\n
    • \r\n
    \r\n
      \r\n
    • {t('두번째네임서버')}
    • \r\n
    • \r\n \r\n alert(`${t('URL복사')}`)}>\r\n \r\n \r\n
    • \r\n
    • \r\n \r\n alert(`${t('IP복사')}`)}>\r\n \r\n \r\n
    • \r\n
    \r\n
    \r\n );\r\n});\r\n\r\nexport default NameServerAddress;\r\n","import React, { useState } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch } from 'react-redux';\r\nimport { deleteDomain } from '../../redux/nameserver/ActionNameServer';\r\nimport useValidator from '../useValidator';\r\n\r\nconst DomainDeleteModal = ({ handleDomainDeleteModal, selectDomain, setDomainState }) => {\r\n const { t } = useTranslation('Lang');\r\n const [domainInput, setDomainInput] = useState(null);\r\n const [validator, showValidationMessage] = useValidator();\r\n const dispatch = useDispatch();\r\n const handleChange = (e) => {\r\n setDomainInput(e.target.value);\r\n };\r\n\r\n const handleSumbit = (e) => {\r\n e.preventDefault();\r\n if (validator.allValid()) {\r\n if (window.confirm(t('도메인을 정말 삭제하시겠습니까'))) {\r\n dispatch(deleteDomain(selectDomain, t, setDomainState));\r\n }\r\n } else {\r\n showValidationMessage(true);\r\n }\r\n };\r\n return (\r\n
    \r\n
    \r\n

    {t('도메인 삭제')}

    \r\n
    \r\n {t('도메인 주소를 다시 한번 입력하여 주세요')}
    \r\n {t('삭제 된 도메인은 레코드 정보는 확인 불가합니다')}\r\n
    \r\n \r\n
    \r\n {validator.message('domainInput', domainInput, 'required|domain', {\r\n messages: {\r\n required: t('삭제할 도메인을 입력하지 않았습니다'),\r\n },\r\n validators: {\r\n domain: {\r\n message: t('삭제할 도메인과 일치하지 않습니다'),\r\n rule: (val, params, validator) => {\r\n return validator.helpers.testRegex(val, selectDomain) && params.indexOf(val) === -1;\r\n },\r\n required: true,\r\n },\r\n },\r\n })}\r\n
    \r\n\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default DomainDeleteModal;\r\n","import React, { useState } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch } from 'react-redux';\r\nimport { setDomain } from '../../redux/nameserver/ActionNameServer';\r\nimport useValidator from '../useValidator';\r\n\r\nconst DomainAddModal = ({ handleModal, setDomainState }) => {\r\n const [validator, showValidationMessage] = useValidator();\r\n const [inputs, setInputs] = useState({\r\n data: {\r\n domain: '',\r\n ipAddress: '',\r\n },\r\n });\r\n const dispatch = useDispatch();\r\n const { t } = useTranslation('Lang');\r\n const handleChange = (e) => {\r\n const { value, name } = e.target;\r\n setInputs({\r\n ...inputs,\r\n data: { ...inputs.data, [name]: value },\r\n });\r\n };\r\n const handleSave = (e) => {\r\n e.preventDefault();\r\n if (validator.allValid()) {\r\n dispatch(setDomain(inputs, t, setDomainState));\r\n } else {\r\n showValidationMessage(true);\r\n }\r\n };\r\n return (\r\n
    \r\n
    \r\n

    {t('사이트입력')}

    \r\n
    {t('본인소유의도메인주소를입력해주세요')}
    \r\n \r\n
    \r\n {validator.message('DomainAddress', inputs.data.domain, 'required|domain', {\r\n messages: {\r\n required: t('필수값'),\r\n },\r\n validators: {\r\n domain: {\r\n message: t('도메인형식이아닙니다'),\r\n rule: (val, params, validator) => {\r\n return (\r\n validator.helpers.testRegex(\r\n val,\r\n /^(([a-zA-Z]{1})|([a-zA-Z]{1}[a-zA-Z]{1})|([a-zA-Z]{1}[0-9]{1})|([0-9]{1}[a-zA-Z]{1})|([a-zA-Z0-9][a-zA-Z0-9-_]{0,61}[a-zA-Z0-9]))\\.([a-zA-Z]{2,8}|[a-zA-Z0-9-]{2,30}\\.[a-zA-Z]{2,8}|xn--mk1bu44c|xn--t60b56a|xn--3e0b707e)$/\r\n ) && params.indexOf(val) === -1\r\n );\r\n },\r\n required: true,\r\n },\r\n },\r\n })}\r\n
    \r\n \r\n
    \r\n {validator.message('ipAddress', inputs.data.ipAddress, 'required|ip', {\r\n messages: {\r\n required: t('필수값'),\r\n },\r\n validators: {\r\n ip: {\r\n message: t('ip형식이아닙니다'),\r\n rule: (val, params, validator) => {\r\n return (\r\n validator.helpers.testRegex(\r\n val,\r\n /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/\r\n ) && params.indexOf(val) === -1\r\n );\r\n },\r\n },\r\n },\r\n })}\r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n

    ※ {t('버튼비활성화시기술문의')}.

    \r\n
    \r\n
    \r\n );\r\n};\r\nexport default DomainAddModal;\r\n","import React, { memo, useEffect, useState, useRef} from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { domainAdd, getDnsData, domainDelete } from '../../redux/nameserver/ActionNameServer';\r\nimport NameServerTopBar from './NameServerTopBar';\r\nimport RecordTable from './RecordTable';\r\nimport DnsRecordAdd from './DnsRecordAdd';\r\nimport NameServerAddress from './NameServerAddress';\r\nimport ErrorHandler from '../error/ErrorHandler';\r\nimport DomainDeleteModal from '../modal/DomainDeleteModal';\r\nimport DomainAddModal from '../modal/DomainAddModal';\r\n\r\nconst NameServerManaged = memo(() => {\r\n const { DnsData, DnsLoading, DnsError, DomainAdd, DomainDelete } = useSelector((state) => state.ReducerNameServer);\r\n const [domainState, setDomainState] = useState(null);\r\n const dispatch = useDispatch();\r\n const searchRef = useRef(null);\r\n const { t } = useTranslation('Lang');\r\n const user = useSelector((state) => state.oidc.user);\r\n\r\n useEffect(() => {\r\n setTimeout(() => dispatch(getDnsData(setDomainState, true,''), 1000));\r\n }, [dispatch]);\r\n\r\n const handleModal = () => {\r\n dispatch(domainAdd(DomainAdd));\r\n };\r\n const handleSearch = (e) => {\r\n e.preventDefault();\r\n let searchText = searchRef.current.value;\r\n dispatch(getDnsData(setDomainState, true, searchText));\r\n };\r\n\r\n const handleDomainDeleteModal = () => {\r\n if (!domainState) {\r\n return alert('삭제할 도메인을 선택해 주세요');\r\n }\r\n dispatch(domainDelete(DomainDelete));\r\n };\r\n\r\n if (DnsError) return ;\r\n return (\r\n <>\r\n
    \r\n \r\n \r\n \r\n \r\n
    {' '}\r\n {DomainDelete && (\r\n \r\n )}\r\n {DomainAdd && }\r\n \r\n );\r\n});\r\nexport default NameServerManaged;\r\n","import React, { useEffect, useState, useRef } from 'react';\r\nimport styles from '../css/securityevent.module.css';\r\n\r\nconst DateSelect = ({ setStartDate, setEndDate }) => {\r\n const [stDate, setStDate] = useState(new Date()); // 기본값으로 오늘 날짜로 초기화\r\n const [standardDate, setStandardDate] = useState(new Date());\r\n const startInput = useRef(null);\r\n const endInput = useRef(null);\r\n\r\n const today = new Date();\r\n const maxDate = new Date(today);\r\n maxDate.setDate(maxDate.getDate());\r\n\r\n const handleStartDateChange = (event) => {\r\n const selectedStartDate = new Date(event.target.value);\r\n\r\n const selectedEndDate = new Date(endInput.current.value);\r\n\r\n if (selectedStartDate > maxDate) {\r\n const newStartDate = new Date(maxDate);\r\n const newEndDate = new Date(maxDate);\r\n\r\n setStartDate(newStartDate.toISOString().split('T')[0]);\r\n setEndDate(newEndDate.toISOString().split('T')[0]);\r\n\r\n event.target.value = newStartDate.toISOString().split('T')[0];\r\n endInput.current.value = newEndDate.toISOString().split('T')[0];\r\n } else if (selectedStartDate > selectedEndDate) {\r\n const newStartDate = new Date(selectedEndDate);\r\n const newEndDate = new Date(selectedEndDate);\r\n\r\n setStartDate(newStartDate.toISOString().split('T')[0]);\r\n setEndDate(newEndDate.toISOString().split('T')[0]);\r\n\r\n event.target.value = newStartDate.toISOString().split('T')[0];\r\n endInput.current.value = newEndDate.toISOString().split('T')[0];\r\n } else {\r\n setStartDate(event.target.value);\r\n }\r\n };\r\n\r\n const handleEndDateChange = (event) => {\r\n const selectedEndDate = new Date(event.target.value);\r\n const nStartDate = new Date(startInput.current.value);\r\n nStartDate.setHours(0, 0, 0, 0);\r\n\r\n const dateDiff = (selectedEndDate - nStartDate) / (1000 * 60 * 60 * 24);\r\n if (dateDiff >= 90) {\r\n const newStartDate = new Date(selectedEndDate);\r\n newStartDate.setMonth(newStartDate.getMonth() - 3);\r\n setStartDate(newStartDate.toISOString().split('T')[0]);\r\n startInput.current.value = newStartDate.toISOString().split('T')[0]; // 수정된 부분\r\n setStandardDate(selectedEndDate);\r\n } else if (dateDiff < 0) {\r\n // 선택한 종료 날짜가 시작 날짜보다 이전인 경우, 시작 날짜도 해당 날짜로 변경\r\n setStartDate(selectedEndDate.toISOString().split('T')[0]);\r\n startInput.current.value = selectedEndDate.toISOString().split('T')[0]; // 수정된 부분\r\n setStandardDate(selectedEndDate);\r\n } else {\r\n setStandardDate(selectedEndDate);\r\n }\r\n if (selectedEndDate > today) {\r\n setEndDate(today.toISOString().split('T')[0]);\r\n } else {\r\n setEndDate(event.target.value);\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n const sminDate = new Date(standardDate);\r\n sminDate.setMonth(sminDate.getMonth() - 3);\r\n setStDate(sminDate);\r\n }, [standardDate]);\r\n\r\n return (\r\n
    \r\n 날짜\r\n \r\n ~\r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default DateSelect;\r\n","import React, { useEffect, useState } from 'react';\r\nimport styles from '../css/securityevent.module.css'\r\nimport Select from 'react-select';\r\n\r\nconst DropboxFilter = (props) => {\r\n\r\n let options = [];\r\n let placeholder = '';\r\n if (props.name == 'Risk') {\r\n options = [\r\n { value: 'ALL', label: '위험도 전체' },\r\n { value: 'LOW', label: 'LOW' },\r\n { value: 'MIDDLE', label: 'MIDDLE' },\r\n { value: 'HIGH', label: 'HIGH' }\r\n ]\r\n placeholder = '위험도';\r\n } else if (props.name == 'Ip')\r\n {\r\n options = [\r\n { value: 'event', label: '이벤트명' },\r\n { value: 'start', label: '출발지IP' },\r\n { value: 'end', label: '목적지IP' }\r\n ]\r\n placeholder = '이벤트/IP';\r\n }\r\n\r\n const handleSelectChangeRisk = (selected) => {\r\n props.setData(selected);\r\n };\r\n return (\r\n
    \r\n ({\r\n ...baseStyles,\r\n borderColor: state.isFocused ? '#5a4df9' : '#e2e1e1',\r\n height: 40,\r\n width : 160,\r\n fontSize : 10,\r\n }),\r\n }}\r\n />\r\n
    \r\n \r\n\r\n );\r\n\r\n\r\n\r\n};\r\nexport default DropboxFilter;\r\n","import React, { useEffect, useState } from 'react';\r\nimport Select from 'react-select';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport DateSelect from './DateSelect';\r\nimport DropboxFilter from './DropboxFilter';\r\nimport styles from '../css/securityevent.module.css';\r\nimport axios from 'axios';\r\n\r\nconst SecEventFilter = (props) => {\r\n const [options, setOptions] = useState([]);\r\n const [selectedOptions, setSelectedOptions] = useState([]);\r\n const [startDate, setStartDate] = useState([]);\r\n const [endDate, setEndDate] = useState([]);\r\n const [risk, setRisk] = useState([]);\r\n const [ipState, setIpState] = useState([]);\r\n const [ipName, setIpName] = useState([]);\r\n\r\n const apiserverUrl = process.env.REACT_APP_REQUEST_API_URL;\r\n useEffect(() => {\r\n axios\r\n .get(apiserverUrl + 'SecurityEvent/FilterEqIp')\r\n .then((response) => {\r\n // 서버에서 받아온 데이터를 가공하여 options 배열에 넣기\r\n const formattedOptions = response.data.data.map((item) => ({\r\n value: item.equipIps, // value는 서버에서 받아온 값에 따라 변경\r\n label: item.equipIps + ' / ' + item.equipTypes + ' / ' + item.serverName, // label은 서버에서 받아온 값에 따라 변경\r\n }));\r\n setOptions(formattedOptions);\r\n })\r\n .catch((error) => {\r\n // 에러 처리\r\n console.error('Error fetching data:', error);\r\n });\r\n }, []);\r\n\r\n const handleSelectChange = (selected) => {\r\n setSelectedOptions(selected);\r\n };\r\n\r\n const handleSearchChange = (e) => {\r\n const eqIpValues = selectedOptions.map((item) => item.value);\r\n\r\n props.setEqIpf(eqIpValues);\r\n props.setStartDatef(startDate);\r\n props.setEndDatef(endDate);\r\n props.setRiskf(risk);\r\n props.setIpStatef(ipState);\r\n props.setIpNamef(ipName);\r\n };\r\n\r\n return (\r\n <>\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n setIpName(e.target.value)}\r\n placeholder=\"이벤트 명 / IP주소를 입력해주세요\"\r\n />\r\n \r\n

    검색결과 : {props.totalCount}

    \r\n
    \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default SecEventFilter;\r\n","// HOC + axios\r\nimport React, { useEffect,useState } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { searchData } from '../../redux/board/ActionBoard';\r\nimport Paginate from 'react-paginate';\r\nimport { getFile } from '../../redux/fileupload/ActionFileUpload';\r\nimport { useTranslation } from 'react-i18next';\r\nimport LoadingSpninner from '../dataState/LoadingSpninner';\r\nimport SecEventMail from './SecEventMail';\r\nimport styles from '../css/securityevent.module.css'\r\nimport { onlyDaydateFormat, nowDateFormat, dateFormat, endDateFormat } from '../date/dateFormat';\r\nimport moment from 'moment';\r\n\r\nconst SecEventTable = (props) => {\r\n const dispatch = useDispatch();\r\n const totalData = useSelector((state) => state.ReducerBoard);\r\n const { seceventloading, seceventdata, seceventerror } = totalData;\r\n const totalCountPage = seceventdata.totalPage;\r\n const [ClickData, setClickData] = useState('');\r\n const [page, setPage] = useState(1);\r\n const [nowIndex, setNowIndex] = useState(0);\r\n const [prevIndex, setPrevIndex] = useState('');\r\n const [nextIndex, setNextIndex] = useState('');\r\n const [showOn, setShowOn] = useState(false);\r\n const [selectedPage, setSelectedPage] = useState(0); // 선택된 페이지를 상태로 관리\r\n\r\n const [sortBy, setSortBy] = useState('seCreatedAt'); // 발생시간을 기본으로 정렬\r\n const [sortOrder, setSortOrder] = useState('asc'); // 기본적으로 오름차순 정렬\r\n\r\n\r\n function pathFunc() {\r\n return 'SecurityEvent/SecEvent';\r\n }\r\n \r\n const { t } = useTranslation('Lang');\r\n\r\n function LoadingFunc() {\r\n /* Loading */\r\n if (seceventloading && !seceventerror)\r\n return (\r\n
    \r\n \r\n
    \r\n ); // 로딩중이고 데이터 없을때만\r\n if (seceventerror) {\r\n return seceventerror.message;\r\n }\r\n }\r\n\r\n \r\n const openNewWindow = (htmlString) => {\r\n if (!htmlString) {\r\n console.error('HTML 문자열이 null 또는 비어있습니다.');\r\n return;\r\n }\r\n\r\n const width = 900;\r\n const height = 1000;\r\n const left = (window.innerWidth - width) / 2;\r\n const top = (window.innerHeight - height) / 2;\r\n const options = `width=${width},height=${height},top=${top},left=${left},toolbar=no,location=no,status=no`;\r\n\r\n const newWindow = window.open('', '_blank', options);\r\n newWindow.document.write(htmlString);\r\n newWindow.focus(); // 팝업 창에 초점을 맞춥니다.\r\n };\r\n\r\n \r\n useEffect(() => {\r\n props.setTotalCount(seceventdata.totalCount);\r\n },[seceventdata]);\r\n\r\n const handlePageClick = (selectedPage) => {\r\n setPage(selectedPage.selected + 1);\r\n\r\n dispatch(\r\n searchData(\r\n selectedPage.selected + 1,\r\n pathFunc(),\r\n 0,\r\n 10,\r\n props.eqIp,\r\n props.startDate,\r\n props.endDate,\r\n props.risk?.value,\r\n props.ipState?.value,\r\n props.ipName\r\n )\r\n );\r\n };\r\n\r\n useEffect(() => {\r\n // 필터가 변경될 때 페이지를 1로 리셋\r\n setPage(1);\r\n setSelectedPage(0); // 선택된 페이지도 초기화\r\n // 페이지네이션 로직을 실행\r\n handlePageClick({ selected: 0 });\r\n \r\n }, [props.eqIp, props.startDate, props.endDate, props.risk, props.ipState, props.ipName]);\r\n\r\n\r\n const addPage = (p) => {\r\n setPage(p);\r\n return p;\r\n };\r\n\r\n const getAllPageIndex = (e, prev, next, i) => {\r\n setClickData(e);\r\n setPrevIndex(prev);\r\n setNextIndex(next);\r\n setNowIndex(i);\r\n setShowOn(true);\r\n };\r\n\r\n const handleListClick = () => {\r\n setShowOn(false);\r\n };\r\n\r\n const displayNoneStyle = {\r\n display: 'none',\r\n };\r\n\r\n const displayBlockStyle = {\r\n display: 'block',\r\n };\r\n\r\n function NoticeTable() {\r\n if (seceventdata) {\r\n if (seceventdata.totalCount > 0) {\r\n return seceventdata.data.map((e) => (\r\n \r\n {moment(e.seCreatedAt).format(`YYYY-MM-DD A HH:mm:ss`)}\r\n {e.seEqIp}\r\n {e.seSoIp}\r\n {e.seDeIp}\r\n openNewWindow(e.workhistory)}>{e.seName}\r\n {e.seRisk}\r\n \r\n ));\r\n }\r\n } else {\r\n return
    {t('데이터가없습니다')}
    ;\r\n }\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n {LoadingFunc()}\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {NoticeTable()}\r\n
    발생시간장비 IP출발지 IP목적지 IP이벤트 명위험도
    \r\n
    \r\n
    \r\n '}\r\n previousClassName={'prev'}\r\n nextClassName={'next'}\r\n activeClassName={styles.onPage}\r\n onPageChange={(selected) => {\r\n handlePageClick(selected);\r\n setSelectedPage(selected.selected); // 선택된 페이지 업데이트\r\n }}\r\n forcePage={selectedPage} // forcePage prop을 사용하여 페이지네이션 버튼 상태 업데이트\r\n />\r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default SecEventTable;\r\n","import React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nconst DivNoData = (props) => {\r\n const { t } = useTranslation('Lang');\r\n return
    {t('데이터가없습니다')}
    ;\r\n};\r\nexport default DivNoData;\r\n","import React, { useEffect , useMemo} from 'react';\r\nimport { Bar } from 'react-chartjs-2';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { getSecEventData } from '../../redux/chart/ActionChart';\r\nimport DivNoData from '../dataState/DivNoData';\r\nimport LoadingSpninner from '../dataState/LoadingSpninner';\r\nimport ErrorHandler from '../error/ErrorHandler';\r\n\r\nconst SecEventChart = ({ startDate, endDate, eqIp, risk, ipState, ipName}) => {\r\n const { chartData, chartLoading, chartError } = useSelector((state) => state.ReducerChart.secevent);\r\n const dispatch = useDispatch();\r\n \r\n useEffect(() => {\r\n console.log(risk?.value);\r\n console.log(ipState?.value);\r\n dispatch(getSecEventData( eqIp, startDate, endDate, risk?.value, ipState?.value, ipName));\r\n }, [ dispatch, startDate, endDate, eqIp, risk, ipState, ipName]);\r\n\r\n if (chartError)\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n if (chartLoading && !chartData) return ; // 로딩중이고 데이터 없을때만\r\n if (!chartData || chartData.length === 0) return ;\r\n\r\n const data = {\r\n type: 'bar', // 차트 유형을 'bar'로 변경\r\n labels: chartData.map((chart) => chart.label),//getModifiedLabels(chartData, differenceInDays), // 라벨로 'date' 속성 매핑\r\n datasets: [\r\n {\r\n backgroundColor: '#B8B7BB',\r\n hoverBackgroundColor: '#413EF6', // Hover 시 배경색을 변경하려면 여기에 원하는 색상을 설정합니다.\r\n borderColor: '#B8B7BB',\r\n hoverborderColor: '#413EF6', // Hover 시 배경색을 변경하려면 여기에 원하는 색상을 설정합니다.\r\n pointBackgroundColor: 'transparent',\r\n pointBorderColor: 'transparent',\r\n label: '이벤트 발생 횟수',\r\n data: chartData.map((chart) => chart.count), // 데이터로 'count' 속성 매핑\r\n borderWidth: 1,\r\n lineTension: 0,\r\n },\r\n ],\r\n };\r\n\r\n // 바 차트의 옵션\r\n const options = {\r\n maintainAspectRatio: false,\r\n responsive: true, // 반응형 비활성화\r\n\r\n scales: {\r\n yAxes: [\r\n {\r\n ticks: {\r\n beginAtZero: true, // Y축의 값이 0부터 시작하도록 설정\r\n stepSize: 1,\r\n callback: function (value) {\r\n return value; // Y축의 값은 카운트 갯수이므로 변환없이 반환\r\n },\r\n },\r\n scaleLabel: {\r\n display: true,\r\n labelString: 'Count', // Y축의 레이블\r\n },\r\n },\r\n ],\r\n xAxes: [\r\n {\r\n type: 'category', // X축의 데이터 형식을 카테고리로 설정\r\n labels: chartData.map((chart) => chart.label), // 수정된 labels 사용\r\n },\r\n ],\r\n },\r\n tooltips: {\r\n mode: 'index',\r\n callbacks: {\r\n label: function (tooltipItem, data) {\r\n // tooltip 텍스트를 설정합니다. 여기서는 'percent' 데이터를 사용합니다.\r\n return `Count: ${tooltipItem.yLabel}`;\r\n },\r\n },\r\n backgroundColor: 'rgba(0,0,0,0.8)', // hover 배경색을 여기서 설정합니다.\r\n titleFontSize: 14,\r\n titleFontColor: '#FFF',\r\n bodyFontColor: '#FFF',\r\n displayColors: false,\r\n },\r\n };\r\n return
    ;\r\n};\r\n\r\nexport default SecEventChart;\r\n","import React, { useEffect, useState } from 'react';\r\nimport Select from 'react-select';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport SecEventChart from '../chart/SecEventChart';\r\n\r\nconst SecEventGraph = ({startDate, endDate, eqIp, risk, ipState, ipName }) => {\r\n return (\r\n <>\r\n \r\n \r\n );\r\n\r\n\r\n};\r\nexport default SecEventGraph;\r\n","import React, { useEffect, useState } from 'react';\r\nimport SecEventFilter from './SecEventFilter';\r\nimport SecEventTable from './SecEventTable';\r\nimport SecEventGraph from './SecEventGraph';\r\nimport styles from '../css/securityevent.module.css';\r\nimport moment from 'moment';\r\n\r\n\r\nconst SecurityEvent = (props) => {\r\n\r\n const [eqIp, setEqIp] = useState([]);\r\n const [startDate, setStartDate] = useState([]);\r\n const [endDate, setEndDate] = useState([]);\r\n const [risk, setRisk] = useState([null]);\r\n const [ipState, setIpState] = useState([null]);\r\n const [ipName, setIpName] = useState([null]);\r\n const [totalCount, setTotalCount] = useState([0]);\r\n\r\n return (\r\n <>\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n );\r\n\r\n\r\n\r\n};\r\nexport default SecurityEvent;\r\n","import axios from 'axios';\r\n\r\nasync function getDoughnutsFromApi() {\r\n const response = await axios.get('https://api9.hmaster.co.kr:5001/csApi');\r\n return response.data;\r\n}\r\n\r\nexport { getDoughnutsFromApi };\r\n","import React, { useState } from 'react';\r\nimport { useSelector } from 'react-redux';\r\nimport * as apiService from '../services/apiService';\r\nimport { prettifyJson } from '../utils/jsonUtils';\r\n\r\nfunction Home() {\r\n const user = useSelector((state) => state.oidc.user);\r\n const [doughnutData, setDoughnutData] = useState(null);\r\n\r\n async function getDoughnuts() {\r\n const doughnuts = await apiService.getDoughnutsFromApi();\r\n setDoughnutData(doughnuts);\r\n }\r\n\r\n return (\r\n
    \r\n

    {user.profile.name}님 안녕하세요.

    \r\n

    user.auth_time : {user.profile.auth_time}

    \r\n \r\n
    \r\n                {prettifyJson(doughnutData ? doughnutData : 'No doughnuts yet :(')}\r\n            
    \r\n
    \r\n );\r\n}\r\n\r\nexport default Home;\r\n","export const prettifyJson = (value) => {\r\n return JSON.stringify(value, null, 2);\r\n }","import React from 'react';\r\n\r\nconst Page403 = (props) => {\r\n return (\r\n
    \r\n
    \r\n

    403 forbidden

    \r\n

    접근 권한이 없습니다.

    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default Page403;\r\n","import React, { useState, useEffect } from 'react';\r\nimport { Route, Redirect } from 'react-router-dom';\r\nimport { useSelector } from 'react-redux';\r\n\r\nimport Page403 from '../components/error/Page403';\r\nimport userManager from './userManager';\r\nimport { setAuthHeader } from './axiosHeaders';\r\nimport axios from 'axios';\r\nimport { useLocation } from 'react-router-dom/cjs/react-router-dom.min';\r\n\r\nfunction ProtectedRoute({ children, component: Component, path, handleFullScreen, setServiceInfo, ...rest }) {\r\n const user = useSelector((state) => state.oidc.user);\r\n const apiserverUrl = process.env.REACT_APP_REQUEST_API_URL;\r\n\r\n\r\n const fetchData = async () => {\r\n try {\r\n const response = await axios.get(apiserverUrl + 'customer/serviceInfo', { params: { value: 'Security' } });\r\n return response.data == '1';\r\n } catch (error) {\r\n return false;\r\n }\r\n };\r\n\r\n const [canAccess, setCanAccess] = useState(false);\r\n\r\n const location = useLocation();\r\n const [redirecting, setRedirecting] = useState(false);\r\n useEffect(() => {\r\n if (user) {\r\n setAuthHeader();\r\n fetchData().then((result) => {\r\n setServiceInfo(result);\r\n setCanAccess(result);\r\n });\r\n }\r\n }, []);\r\n const signinRedirectAction = () => {\r\n setRedirecting(true);\r\n userManager\r\n .signinRedirect()\r\n .then(() => {\r\n if (window.name === '') {\r\n localStorage.setItem('pvUrl', location.pathname);\r\n }\r\n setRedirecting(false);\r\n })\r\n .catch((error) => {\r\n console.error(error);\r\n setRedirecting(false);\r\n });\r\n };\r\n\r\n if (path == '/SecurityEvent') {\r\n if (!user || user.expired) {\r\n signinRedirectAction();\r\n } else if (user.profile.role === 'root' || user.profile.role === 'all' || user.profile.role === 'server') {\r\n return canAccess ? (\r\n } />\r\n ) : (\r\n } />\r\n );\r\n } else {\r\n return } />;\r\n }\r\n } else {\r\n return !user || user.expired ? (\r\n signinRedirectAction()\r\n ) : user.profile.role === 'root' || user.profile.role === 'all' || user.profile.role === 'server' ? (\r\n }\r\n />\r\n ) : (\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default ProtectedRoute;\r\n","import axios from 'axios';\r\nimport moment from 'moment';\r\nimport {\r\n INQUIRY_LIST_REQUEST,\r\n INQUIRY_LIST_SUCCESS,\r\n INQUIRY_LIST_ERROR,\r\n INQUIRY_DETAIL_REQUEST,\r\n INQUIRY_DETAIL_SUCCESS,\r\n INQUIRY_DETAIL_ERROR,\r\n ADMIN_INFO_REQUEST,\r\n ADMIN_INFO_SUCCESS,\r\n ADMIN_INFO_ERROR,\r\n} from './SupportType';\r\n\r\nexport const getInquiryData = (page, pageSize) => async (dispatch) => {\r\n dispatch({\r\n type: INQUIRY_LIST_REQUEST,\r\n });\r\n\r\n try {\r\n return await axios\r\n .create({\r\n withCredentials: false,\r\n headers: {\r\n 'Access-Control-Allow-Origin': '*',\r\n 'Access-Control-Allow-Methods': 'GET,PUT,POST,DELETE,PATCH,OPTIONS',\r\n },\r\n })\r\n .get(process.env.REACT_APP_REQUEST_API_URL + `Board?page=${page}&pageSize=${pageSize}`)\r\n .then((res) => dispatch({ type: INQUIRY_LIST_SUCCESS, payload: res.data, page }));\r\n } catch (e) {\r\n dispatch({\r\n type: INQUIRY_LIST_ERROR,\r\n error: e,\r\n });\r\n }\r\n};\r\n\r\nexport const getInquiryDetailData = (btIdx) => async (dispatch) => {\r\n dispatch({\r\n type: INQUIRY_DETAIL_REQUEST,\r\n });\r\n\r\n try {\r\n return await axios\r\n .create({\r\n withCredentials: false,\r\n headers: {\r\n 'Access-Control-Allow-Origin': '*',\r\n 'Access-Control-Allow-Methods': 'GET,PUT,POST,DELETE,PATCH,OPTIONS',\r\n },\r\n })\r\n .get(process.env.REACT_APP_REQUEST_API_URL + `Board/Detail/${btIdx}`)\r\n .then((res) => dispatch({ type: INQUIRY_DETAIL_SUCCESS, payload: res.data }));\r\n } catch (e) {\r\n dispatch({\r\n type: INQUIRY_DETAIL_ERROR,\r\n error: e,\r\n });\r\n }\r\n};\r\n\r\nexport const getAdminData = () => async (dispatch) => {\r\n dispatch({\r\n type: ADMIN_INFO_REQUEST,\r\n });\r\n await axios\r\n .get(`${process.env.REACT_APP_REQUEST_API_URL}Admin`)\r\n .then((response) => {\r\n dispatch({ type: ADMIN_INFO_SUCCESS, payload: response.data });\r\n })\r\n .catch((error) => {\r\n if (error.response) {\r\n // 요청이 이루어졌으며 서버가 2xx의 범위를 벗어나는 상태 코드로 응답했습니다.\r\n console.log('response', error.response.status);\r\n console.log('response', error.response.headers);\r\n } else if (error.request) {\r\n // 요청이 이루어 졌으나 응답을 받지 못했습니다.\r\n // `error.request`는 브라우저의 XMLHttpRequest 인스턴스 또는\r\n // Node.js의 http.ClientRequest 인스턴스입니다.\r\n console.log('request', error.request);\r\n } else {\r\n // 오류를 발생시킨 요청을 설정하는 중에 문제가 발생했습니다.\r\n console.log('Error', error.message);\r\n }\r\n //console.log(error.config);\r\n //dispatch(fetchDnsFailure(error.status));\r\n });\r\n};\r\n\r\nexport const getSeacrhInquiry = (page, pageSize, searchText, searchType) => async (dispatch) => {\r\n \r\n dispatch({\r\n type: INQUIRY_LIST_REQUEST,\r\n });\r\n\r\n try {\r\n return await axios\r\n .get(\r\n process.env.REACT_APP_REQUEST_API_URL +\r\n `Board?page=${page}&pageSize=${pageSize}&searchText=${searchText}&searchBoardType=${searchType.searchBoardType}&workDone=${searchType.workDone}&start=${searchType.startDate}&end=${searchType.endDate}`\r\n )\r\n .then((res) => dispatch({ type: INQUIRY_LIST_SUCCESS, payload: res.data, page }));\r\n } catch (e) {\r\n dispatch({\r\n type: INQUIRY_LIST_ERROR,\r\n error: e,\r\n });\r\n }\r\n};\r\n","import axios from 'axios';\r\nimport {\r\n SUPPORT_SET_REQUEST,\r\n SUPPORT_SET_SUCCESS,\r\n SUPPORT_SET_ERROR,\r\n IP_ADDRESS_REQUEST,\r\n IP_ADDRESS_SUCCESS,\r\n IP_ADDRESS_ERROR,\r\n WORK_GET_REQUEST,\r\n WORK_GET_SUCCESS,\r\n WORK_GET_ERROR,\r\n WORK_SET_REQUEST,\r\n WORK_SET_SUCCESS,\r\n WORK_SET_ERROR,\r\n WORK_REQUEST_MODAL,\r\n WORK_DETAIL_REQUEST,\r\n WORK_DETAIL_SUCCESS,\r\n WORK_DETAIL_ERROR,\r\n MODAL_INDEX_DATA,\r\n VISITRESERVATIONS_REQUEST,\r\n VISITRESERVATIONS_SUCCESS,\r\n VISITRESERVATIONS_ERROR,\r\n} from './SupportType';\r\n\r\nexport const getIpAddress = () => async (dispatch) => {\r\n dispatch({\r\n type: IP_ADDRESS_REQUEST,\r\n });\r\n\r\n try {\r\n return await axios\r\n .create({\r\n withCredentials: false,\r\n headers: {\r\n 'Access-Control-Allow-Origin': '*',\r\n 'Access-Control-Allow-Methods': 'GET,PUT,POST,DELETE,PATCH,OPTIONS',\r\n },\r\n })\r\n .get(process.env.REACT_APP_REQUEST_API_URL + `Server/List`)\r\n .then((res) => dispatch({ type: IP_ADDRESS_SUCCESS, payload: res.data }));\r\n } catch (e) {\r\n dispatch({\r\n type: IP_ADDRESS_ERROR,\r\n error: e,\r\n });\r\n }\r\n};\r\n\r\nexport const setSupportData = (boardKind, suiIdx, inputs, contents, files, inquiryFormResult) => async (dispatch) => {\r\n if (suiIdx === undefined && (boardKind === 15 || boardKind === 14)) {\r\n suiIdx = '';\r\n }\r\n\r\n dispatch({\r\n type: SUPPORT_SET_REQUEST,\r\n });\r\n\r\n let formData = new FormData();\r\n formData.append('BoardKind', boardKind);\r\n formData.append('ServerIdx', suiIdx);\r\n formData.append('Subject', inputs.Subject);\r\n formData.append('BoardWriter', inputs.Name);\r\n formData.append('BoardEmail', inputs.Email);\r\n formData.append('BoardPhone', inputs.Phone);\r\n formData.append('Contents', contents);\r\n formData.append('File', files);\r\n\r\n try {\r\n return await axios.post(process.env.REACT_APP_REQUEST_API_URL + `Board`, formData).then((res) => {\r\n if (res.status === 200) {\r\n dispatch({ type: SUPPORT_SET_SUCCESS });\r\n inquiryFormResult();\r\n } else {\r\n dispatch({ type: SUPPORT_SET_ERROR });\r\n }\r\n });\r\n } catch (e) {\r\n dispatch({\r\n type: SUPPORT_SET_ERROR,\r\n error: e,\r\n });\r\n }\r\n};\r\n\r\nexport const getWorkData = (page, pageSize) => async (dispatch) => {\r\n dispatch({\r\n type: WORK_GET_REQUEST,\r\n });\r\n\r\n try {\r\n return await axios\r\n .create({\r\n withCredentials: false,\r\n headers: {\r\n 'Access-Control-Allow-Origin': '*',\r\n 'Access-Control-Allow-Methods': 'GET,PUT,POST,DELETE,PATCH,OPTIONS',\r\n },\r\n })\r\n .get(process.env.REACT_APP_REQUEST_API_URL + `Work/WorkRequest?page=${page}&pageSize=${pageSize}`)\r\n .then((res) => dispatch({ type: WORK_GET_SUCCESS, payload: res.data, page }));\r\n } catch (e) {\r\n dispatch({\r\n type: WORK_GET_ERROR,\r\n error: e,\r\n });\r\n }\r\n};\r\n\r\nexport const setWorkData = (id, workConfirmResult) => async (dispatch) => {\r\n dispatch({\r\n type: WORK_SET_REQUEST,\r\n });\r\n\r\n try {\r\n return await axios\r\n .create({\r\n withCredentials: false,\r\n headers: {\r\n 'Access-Control-Allow-Origin': '*',\r\n 'Access-Control-Allow-Methods': 'GET,PUT,POST,DELETE,PATCH,OPTIONS',\r\n },\r\n })\r\n .put(process.env.REACT_APP_REQUEST_API_URL + `Work/${id}`)\r\n .then((res) => {\r\n if (res.status === 200) {\r\n dispatch({ type: WORK_SET_SUCCESS });\r\n workConfirmResult();\r\n } else {\r\n dispatch({ type: WORK_SET_ERROR });\r\n }\r\n });\r\n } catch (e) {\r\n dispatch({\r\n type: WORK_SET_ERROR,\r\n error: e,\r\n });\r\n }\r\n};\r\n\r\nexport const getWorkDetailData = (id) => async (dispatch) => {\r\n dispatch({\r\n type: WORK_DETAIL_REQUEST,\r\n });\r\n\r\n try {\r\n return await axios\r\n .get(process.env.REACT_APP_REQUEST_API_URL + `Work/WorkRequest/Detail/${id}`)\r\n .then((res) => dispatch({ type: WORK_DETAIL_SUCCESS, payload: res.data }));\r\n } catch (e) {\r\n dispatch({\r\n type: WORK_DETAIL_ERROR,\r\n error: e,\r\n });\r\n }\r\n};\r\n\r\nexport const workRequestModal = (state, id) => {\r\n return {\r\n type: WORK_REQUEST_MODAL,\r\n state,\r\n id,\r\n };\r\n};\r\n\r\nexport const getVisitReservations = (page, pageSize) => async (dispatch) => {\r\n dispatch({\r\n type: VISITRESERVATIONS_REQUEST,\r\n });\r\n const url = `${process.env.REACT_APP_REQUEST_API_URL}Board/Visit?page=${page}&pageSize=${pageSize}`;\r\n await axios\r\n .get(url)\r\n .then((response) => {\r\n dispatch({\r\n type: VISITRESERVATIONS_SUCCESS,\r\n payload: response.data,\r\n });\r\n })\r\n .catch((error) => {\r\n const errorPayLoad = {};\r\n errorPayLoad['message'] = error.response.data;\r\n errorPayLoad['status'] = error.response.status;\r\n dispatch({\r\n type: VISITRESERVATIONS_ERROR,\r\n error: errorPayLoad,\r\n });\r\n });\r\n};\r\n\r\nexport const getVisitReservationsSearch = (page, pageSize, Search) => async (dispatch) => {\r\n dispatch({\r\n type: VISITRESERVATIONS_REQUEST,\r\n });\r\n const url = `${process.env.REACT_APP_REQUEST_API_URL}Board/Visit?page=${page}&pageSize=${pageSize}&searchText=${Search}`;\r\n await axios\r\n .get(url)\r\n .then((response) => {\r\n dispatch({\r\n type: VISITRESERVATIONS_SUCCESS,\r\n payload: response.data,\r\n });\r\n })\r\n .catch((error) => {\r\n const errorPayLoad = {};\r\n errorPayLoad['message'] = error.response.data;\r\n errorPayLoad['status'] = error.response.status;\r\n dispatch({\r\n type: VISITRESERVATIONS_ERROR,\r\n error: errorPayLoad,\r\n });\r\n });\r\n};\r\n\r\nexport const setVisitReservation = (visitReservationData, visitShowOnClick) => async (dispatch) => {\r\n dispatch({\r\n type: VISITRESERVATIONS_REQUEST,\r\n });\r\n await axios\r\n .post(`${process.env.REACT_APP_REQUEST_API_URL}Board/VisitJson`, visitReservationData)\r\n .then((response) => {\r\n if (response.data.code === 200) {\r\n visitShowOnClick(true);\r\n return alert('등록되었습니다');\r\n }\r\n return alert(response.data.message);\r\n })\r\n .catch((error) => {\r\n const errorPayLoad = {};\r\n errorPayLoad['message'] = error.response.data;\r\n errorPayLoad['status'] = error.response.status;\r\n dispatch({\r\n type: VISITRESERVATIONS_ERROR,\r\n error: errorPayLoad,\r\n });\r\n });\r\n};\r\n\r\nexport const modiVisitReservation = (visitReservationData, setModiShowOn) => async (dispatch) => {\r\n dispatch({\r\n type: VISITRESERVATIONS_REQUEST,\r\n });\r\n await axios\r\n .post(`${process.env.REACT_APP_REQUEST_API_URL}Board/Visit/EditJson`, visitReservationData)\r\n .then((response) => {\r\n if (response.data.code === 200) {\r\n dispatch(getVisitReservations(1, 10));\r\n setModiShowOn(false);\r\n return alert('수정되었습니다');\r\n }\r\n return alert(response.data.message);\r\n })\r\n .catch((error) => {\r\n const errorPayLoad = {};\r\n errorPayLoad['message'] = error.response.data;\r\n errorPayLoad['status'] = error.response.status;\r\n dispatch({\r\n type: VISITRESERVATIONS_ERROR,\r\n error: errorPayLoad,\r\n });\r\n });\r\n};\r\n","import React, { useEffect, useState } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { getFile } from '../../redux/fileupload/ActionFileUpload';\r\n\r\nconst SupportCenterComment = ({ data, getFileData }) => {\r\n const { t } = useTranslation('Lang');\r\n const dispatch = useDispatch();\r\n\r\n useEffect(() => {}, [data, getFileData]);\r\n\r\n const downloadOnClick = (url) => {\r\n dispatch(getFile(url));\r\n };\r\n\r\n return (\r\n data !== undefined &&\r\n data &&\r\n data.map((i, x) => {\r\n return (\r\n
    \r\n
    \r\n                        {i.contents == null ? '' : i.contents} 
    \r\n {i.writer == null ? '' : t('담당자') + ': ' + i.writer}\r\n
    \r\n {i.attchFiles.map((m, j) => {\r\n return (\r\n
    \r\n
    {t('첨부파일')}
    \r\n \r\n
    \r\n );\r\n })}\r\n
    \r\n );\r\n })\r\n );\r\n};\r\n\r\nexport default SupportCenterComment;\r\n","import React, { useEffect, useState } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { getFile } from '../../redux/fileupload/ActionFileUpload';\r\nimport { getInquiryDetailData } from '../../redux/supportcenter/ActionInquiryList';\r\nimport { onlyDaydateFormat, nowDateFormat, dateFormat, endDateFormat } from '../date/dateFormat';\r\nimport { useTranslation } from 'react-i18next';\r\nimport SupportCenterComment from './SupportCenterComment';\r\n\r\nconst SupportCenterDetail = ({ btIdx }) => {\r\n const { detailLoading, detailData, detailError } = useSelector((state) => state.ReducerInquiryList);\r\n const { getFileLoading, getFileData, getFileError } = useSelector((state) => state.ReducerFileUpload);\r\n const [fileUrl, setFileUrl] = useState('');\r\n const dispatch = useDispatch();\r\n const { t } = useTranslation('Lang');\r\n const downloadOnClick = (url) => {\r\n if (url != '' && url != null) {\r\n dispatch(getFile(url));\r\n } else {\r\n alert('파일정보가 정확하지않습니다.');\r\n }\r\n };\r\n useEffect(() => {\r\n dispatch(getInquiryDetailData(btIdx));\r\n }, [dispatch]);\r\n return (\r\n
    \r\n
    \r\n

    {detailData.data && detailData.data.subject}

    \r\n

    {dateFormat(detailData.data && detailData.data.regDate)}

    \r\n

    \r\n 작성자 {detailData.data && detailData.data.writer}\r\n

    \r\n

    \r\n 연락처 {detailData.data && detailData.data.phone}\r\n

    \r\n

    \r\n 이메일 {detailData.data && detailData.data.email}\r\n

    \r\n {detailData.data && detailData.data.fileDownloadUrl && (\r\n

    \r\n downloadOnClick(detailData.data.fileDownloadUrl)}>\r\n

    \r\n                                \r\n                                    {t('첨부파일\\n  다운로드')}\r\n                                \r\n                            
    \r\n \r\n

    \r\n )}\r\n
    \r\n\r\n
    \r\n
    \r\n            
    \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default SupportCenterDetail;\r\n","import React from 'react';\r\n\r\nconst TableLoading = ({cSpan,rSpan}) => (\r\n \r\n \r\n
    \r\n \r\n
    \r\n \r\n \r\n );\r\n\r\nexport default TableLoading;","import { useTranslation } from 'react-i18next';\r\n\r\nexport const SupportFormText = (id) => {\r\n const { t } = useTranslation('Lang');\r\n\r\n let text = '';\r\n switch (id) {\r\n case 1: // 1. CDP 백업 복구 요청\r\n text = t('CDP백업복구폼');\r\n return text;\r\n case 2: // 2. OS 재설치 요청\r\n text = t('OS재설치폼');\r\n return text;\r\n case 3: // 3. 방화벽 룰셋 요청\r\n text = t('방화벽룰셋폼');\r\n return text;\r\n case 4: // 4. 인버스 도메인 신청\r\n text = t('인버스도메인폼');\r\n return text;\r\n case 5: // 5. CDP 백업 신청\r\n text = t('CDP백업신청폼');\r\n return text;\r\n default:\r\n return text;\r\n }\r\n};\r\n\r\nexport const AccountFormText = (id) => {\r\n const { t } = useTranslation('Lang');\r\n let text = '';\r\n\r\n switch (id) {\r\n case 1: // CMS 신청\r\n text = t('CMS신청폼');\r\n return text;\r\n case 2: // 카드자동결제 신청\r\n text = t('카드자동결제신청폼');\r\n return text;\r\n case 3: // 세금계산서 발행 신청\r\n text = t('세금계산서발행신청폼');\r\n return text;\r\n case 4: // 현금영수증발행 신청\r\n text = t('현금영수증발행신청폼');\r\n return text;\r\n\r\n default:\r\n return text;\r\n }\r\n};\r\n","import React, { useEffect, useState, useRef } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { getIpAddress, setSupportData } from '../../redux/supportcenter/ActionSupportCenter';\r\nimport FileUpload from '../fileUpload/FileUpload';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { getInquiryData } from '../../redux/supportcenter/ActionInquiryList';\r\n\r\nconst TextAreaForm = ({ props, radioState, selectState, selectContentState, setselectState, setSelectContentState, inputs, setInputs }) => {\r\n const { setSuccessInquiryData, setSuccessData } = useSelector((state) => state.ReducerSupportCenter);\r\n const [value, setValue] = useState([...props]);\r\n const [file, setFile] = useState('');\r\n const [message, setMessage] = useState('');\r\n const textRef = useRef('');\r\n const fileRef = useRef();\r\n\r\n const dispatch = useDispatch();\r\n\r\n useEffect(() => {\r\n setValue(props);\r\n }, [props]);\r\n\r\n const { t } = useTranslation('Lang');\r\n\r\n const textStyle = {\r\n width: '99%',\r\n height: '400px',\r\n margin: '10px auto 0',\r\n border: '1px solid #ddd',\r\n resize: 'none',\r\n };\r\n\r\n const onFileChange = (event) => {\r\n if (vaildFileType(event.target.files[0]) !== true) {\r\n setMessage(t('올바른형식의파일이아닙니다'));\r\n } else {\r\n setMessage('');\r\n setFile(event.target.files[0]);\r\n }\r\n };\r\n\r\n const vaildFileType = (file) => {\r\n if (file.size > 3145728) {\r\n return setMessage(t('파일크기는3MB를넘을수없습니다'));\r\n } else {\r\n return fileTypes.includes(file.type);\r\n }\r\n };\r\n \r\n const fileTypes = ['image/png', 'image/bmp', 'image/jpeg', 'image/jpg', 'application/pdf', 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', 'application/x-zip-compressed', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', 'application/vnd.ms-excel', 'application/vnd.openxmlformats-officedocument.presentationml.presentation','application/vnd.ms-powerpoint','text/csv'];\r\n\r\n const fileFunc = () => {\r\n if (radioState === 4 && selectContentState.value === 4) {\r\n //기술문의 인버스도메인신청\r\n return fileDownloadLink(t('첨부파일'), 'inverse_domain_nuri.doc', 'https://www.nurihosting.com/pds/inverse_domain_nuri.doc');\r\n } else if (radioState === 14 && selectContentState.value === 1) {\r\n //결제,증빙문의 CMS신청\r\n return fileDownloadLink(\r\n t('첨부파일'),\r\n t('호센서비스호스팅신청서CMS'),\r\n 'https://hc.hostcenter.co.kr/download/호센-서버호스팅신청서-cms.doc',\r\n t('호센서비스호스팅신청서PDF'),\r\n 'https://hc.hostcenter.co.kr/download/호센-서버호스팅신청서-cms.pdf'\r\n );\r\n } else if (radioState === 14 && selectContentState.value === 2) {\r\n //결제,증빙문의 카드자동결제신청\r\n return fileDownloadLink(t('바로가기'), t('카드자동결제'), 'https://mypage.hostcenter.co.kr/Cost/PaymentRegular');\r\n }\r\n };\r\n\r\n const fileDownloadLink = (type, fileName1, link1, fileName2, link2) => {\r\n return (\r\n
    \r\n
    {type}
    \r\n \r\n
    \r\n );\r\n };\r\n\r\n const inquiryFormResult = () => {\r\n alert(t('문의등록완료되었습니다'));\r\n dispatch(getIpAddress());\r\n };\r\n\r\n const onSumbit = async (event, boardKind, suiIdx, subject, value, inputs) => {\r\n event.preventDefault();\r\n\r\n if (message === '') {\r\n if (boardKind === 4) {\r\n if (suiIdx === undefined || suiIdx === '') {\r\n suiIdx = '';\r\n //alert(t('서버IP를선택해주세요'));\r\n //return;\r\n }\r\n }\r\n if (boardKind !== 15) {\r\n if (subject === '' || subject === undefined) {\r\n alert('문의내용을선택해주세요');\r\n return;\r\n }\r\n }\r\n if (inputs.Subject === '' || inputs.Subject === undefined) {\r\n return alert('제목을 입력해주세요');\r\n }\r\n\r\n if (inputs.Name === '' || inputs.Name === undefined) {\r\n return alert('이름을 입력해주세요.');\r\n }\r\n\r\n if (inputs.Email === '' || inputs.Email === undefined) {\r\n return alert('이메일을 입력해주세요');\r\n }\r\n\r\n if (inputs.Phone === '' || inputs.Phone === undefined) {\r\n return alert('연락처를 입력해주세요');\r\n }\r\n\r\n if (value === '' || value === undefined) {\r\n alert(t('문의글을작성해주세요'));\r\n return;\r\n } else {\r\n dispatch(setSupportData(boardKind, suiIdx, inputs, value, file, inquiryFormResult));\r\n dispatch(getInquiryData(1, 20));\r\n setFile('');\r\n setselectState('');\r\n setSelectContentState('');\r\n setInputs({ ...inputs, Subject: '' });\r\n setValue('');\r\n textRef.current.value = '';\r\n fileRef.current.value = '';\r\n }\r\n } else {\r\n alert(t('올바른파일형식이아니거나파일크기가3MB이하여만업로드가능합니다'));\r\n return;\r\n }\r\n };\r\n\r\n const pstyle = {\r\n display: \"inline-block\",\r\n color: \"red\",\r\n fontSize:\"12px\",\r\n lineHeight: \"45px\",\r\n marginLeft: \"10px\"\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n {\r\n setValue(event.target.value);\r\n }}\r\n value={value}\r\n >\r\n
    \r\n \r\n \r\n

    ※ .png, .jpeg, .jpg, .pdf, .doc, .docx, .zip, .ppt, .pptx, .xlsx, .xls, .csv의 확장자 파일을 등록하실 수 있습니다.

    \r\n
    \r\n {message}\r\n
    \r\n
    \r\n
    \r\n {fileFunc()}\r\n
    \r\n \r\n onSumbit(\r\n event,\r\n radioState,\r\n selectState.value,\r\n radioState === 15 ? '[NMS]영업문의' : selectContentState.label,\r\n value,\r\n inputs\r\n )\r\n }\r\n >\r\n {t('문의하기')}\r\n \r\n
    \r\n
    \r\n );\r\n};\r\nexport default TextAreaForm;\r\n","import React from 'react';\r\nimport LoadingSpninner from '../dataState/LoadingSpninner';\r\nimport TableNoData from '../dataState/TableNoData';\r\nimport ErrorHandler from '../error/ErrorHandler';\r\n\r\nconst SupportCenterMapTable = ({ data, loading, error, cSpan, height, t, Items, numberState, handleReservationDetail }) => {\r\n const loadingHeight = height && (height - 50) / 2;\r\n if (loading && (!data || data.length === 0))\r\n return (\r\n \r\n \r\n \r\n {t('로딩중')}\r\n \r\n \r\n ); // 로딩중이고 데이터 없을때만\r\n\r\n if (error) {\r\n return {{}};\r\n }\r\n if (!data || data.data.length === 0) return ;\r\n\r\n let no = numberState && data.totalCount - (data.nowPage - 1) * 10;\r\n return (\r\n <>\r\n {loading && (\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n {data.data.map((d, idx) => (\r\n \r\n ))}\r\n \r\n );\r\n};\r\n\r\nexport default SupportCenterMapTable;\r\n","import moment from 'moment';\r\nimport React from 'react';\r\nimport { idcText, visitTypeText } from '../../selectOptionValue/SelectValue';\r\nconst ReservaionDetail = ({ findReservation, handleModiReservation }) => {\r\n const visitResponseDate = () => {\r\n if (findReservation.responseDate !== null) {\r\n return moment(findReservation.ResponseDate).format('LLL');\r\n } else {\r\n return '알수없는 방문예정 일시';\r\n }\r\n };\r\n return (\r\n <>\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {findReservation.Visitors.map((d, idx) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n \r\n \r\n \r\n \r\n
    IDC 센터{idcText(findReservation.Idc)}방문 목적{visitTypeText(findReservation.VisitType)}
    방문예정일\r\n
    {visitResponseDate()}
    \r\n
    방문자명{d.Name}소속업체명{d.Company}연락처{d.Contact}
    상세내용\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default ReservaionDetail;\r\n","import React from 'react';\r\n\r\nconst Visitors = ({ onChange, onVisitorCreate, inputs, handleAddClick, visitorInputs, onVisitorDelete, validator, t }) => {\r\n return (\r\n <>\r\n {inputs &&\r\n inputs.Visitors.map((d, i) => (\r\n \r\n \r\n 방문자명\r\n {i === 0 ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n \r\n onChange(e, i)} value={d.Name} />\r\n {validator.message('Name', d.Name, 'required', {\r\n messages: {\r\n required: t('필수값'),\r\n },\r\n })}\r\n \r\n 소속업체명\r\n \r\n onChange(e, i)} value={d.Company} />\r\n {validator.message('Company', d.Company, 'required', {\r\n messages: {\r\n required: t('필수값'),\r\n },\r\n })}\r\n \r\n 연락처\r\n \r\n onChange(e, i)}\r\n value={d.Contact}\r\n />\r\n {validator.message('Contact', d.Contact, 'required|phone', {\r\n messages: {\r\n required: t('필수값'),\r\n },\r\n validators: {\r\n phone: {\r\n message: t('휴대폰번호의 형식이 맞지않습니다.'),\r\n rule: (val, params, validator) => {\r\n return (\r\n validator.helpers.testRegex(val, /^01([0|1|6|7|8|9])-?([0-9]{3,4})-?([0-9]{4})$/) &&\r\n params.indexOf(val) === -1\r\n );\r\n },\r\n required: true,\r\n },\r\n },\r\n })}\r\n \r\n \r\n ))}\r\n {/* {inputs &&\r\n inputs.Visitors.map((d, index) => (\r\n \r\n \r\n 방문자명\r\n \r\n \r\n {d.Name}\r\n 업체명\r\n {d.Company}\r\n 연락처\r\n {d.Contact}\r\n \r\n ))} */}\r\n \r\n );\r\n};\r\n\r\nexport default Visitors;\r\n","import React, { useEffect, useRef, useState } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport Select from 'react-select';\r\nimport Visitors from './Visitors';\r\nimport * as selectOption from '../../selectOptionValue/SelectValue';\r\nimport useValidator from '../../useValidator';\r\nimport { useDispatch } from 'react-redux';\r\nimport moment from 'moment';\r\nimport { modiVisitReservation, setVisitReservation } from '../../../redux/supportcenter/ActionSupportCenter';\r\nconst ReservationCreate = ({ visitShowOnClick, findReservation, mode, setModiShowOn }) => {\r\n const [visitorInputs, setVisitorInputs] = useState([\r\n {\r\n Idx: 0,\r\n Name: '',\r\n Company: '',\r\n Contact: '',\r\n Regdate: new Date(),\r\n },\r\n ]);\r\n\r\n const [inputs, setInputs] = useState({\r\n BoardSubClass: '',\r\n BoardClass: 0,\r\n Contents: '',\r\n ResponseDate: '',\r\n Visitors: [\r\n {\r\n Idx: 0,\r\n Name: '',\r\n Company: '',\r\n Contact: '',\r\n Regdate: new Date(),\r\n },\r\n ],\r\n });\r\n\r\n const { i18n, t } = useTranslation('Lang');\r\n const nextId = useRef(0);\r\n const [validator, showValidationMessage] = useValidator();\r\n const dispatch = useDispatch();\r\n const [validatorSubmit, showValidationSubmitMessage] = useValidator();\r\n const [checked, setChecked] = useState(false);\r\n const [visible, setVisible] = useState(false);\r\n useEffect(() => {\r\n if (findReservation !== null && mode === 'modify') {\r\n const { BoardClass, BoardKind, BoardSubClass, Contents, Idc, Idx, RegDate, ResponseDate, VisitType, Visitors } =\r\n findReservation;\r\n setInputs({\r\n ...findReservation,\r\n BoardClass,\r\n BoardKind,\r\n BoardSubClass,\r\n Contents,\r\n Idc,\r\n Idx,\r\n RegDate,\r\n ResponseDate,\r\n VisitType,\r\n Visitors,\r\n });\r\n }\r\n }, [findReservation, mode]);\r\n\r\n const onVisitorCreate = () => {\r\n if (!validator.allValid()) {\r\n showValidationMessage(true);\r\n return alert(t('필수값을모두입력해주세요'));\r\n }\r\n if (nextId.current >= 10) {\r\n return alert('더이상 추가할수 없습니다.');\r\n }\r\n setInputs({ ...inputs, Visitors: [...inputs.Visitors.concat(visitorInputs)] });\r\n setVisitorInputs({ ...visitorInputs, Idx: (nextId.current += 1), Name: '', Company: '', Contact: '' });\r\n };\r\n\r\n const handleAddClick = () => {\r\n if (inputs.Visitors.length > 9) {\r\n return alert('방문자는 최대 10명까지 작성 가능합니다.');\r\n }\r\n setInputs({\r\n ...inputs,\r\n Visitors: [\r\n ...inputs.Visitors,\r\n {\r\n Idx: 0,\r\n Name: '',\r\n Company: '',\r\n Contact: '',\r\n Regdate: new Date(),\r\n },\r\n ],\r\n });\r\n };\r\n const onVisitorDelete = (Idx) => {\r\n const list = [...inputs.Visitors];\r\n list.splice(Idx, 1);\r\n setInputs({ ...inputs, Visitors: list });\r\n //setInputList(list);\r\n //setInputs({ ...inputs, Visitors: [...inputs.Visitors.filter((visitor) => visitor.Idx !== Idx)] });\r\n //setVisitorInputs({ ...visitorInputs, idx: (nextId.current -= 1), name: '', company: '', contact: '' });\r\n };\r\n\r\n const onChange = (e, index) => {\r\n const { name, value } = e.target;\r\n const list = [...inputs.Visitors];\r\n list[index][name] = value;\r\n setInputs({ ...inputs, Visitors: list });\r\n //setVisitorInputs({\r\n // ...visitorInputs,\r\n // [name]: value,\r\n //});\r\n };\r\n\r\n const onInputChange = (e) => {\r\n const { name, value } = e.target;\r\n setInputs({\r\n ...inputs,\r\n [name]: value,\r\n });\r\n };\r\n\r\n const handleIDCChange = (selectedOption) => {\r\n setInputs({ ...inputs, BoardSubClass: selectedOption.value });\r\n };\r\n\r\n const handleVisitReasonChange = (selectedOption) => {\r\n setInputs({ ...inputs, BoardClass: selectedOption.value });\r\n };\r\n\r\n const handleChecked = (e) => {\r\n setChecked(e);\r\n };\r\n\r\n const handleSubmit = () => {\r\n if (!validatorSubmit.allValid()) {\r\n showValidationSubmitMessage(true);\r\n return alert(t('필수값을모두입력해주세요'));\r\n }\r\n if (!validator.allValid()) {\r\n showValidationMessage(true);\r\n return alert(t('필수값을모두입력해주세요'));\r\n }\r\n\r\n if (!checked) {\r\n return alert('개인 정보 활용 동의에 체크해 주세요.');\r\n }\r\n if (mode === 'modify') {\r\n dispatch(modiVisitReservation(inputs, setModiShowOn));\r\n } else {\r\n dispatch(setVisitReservation(inputs, visitShowOnClick));\r\n }\r\n };\r\n\r\n const handleCalendar = (value) => {\r\n setInputs({\r\n ...inputs,\r\n ResponseDate: moment(value).format('yyyy-MM-DDTHH:mm:ss'),\r\n });\r\n };\r\n\r\n const defaultVisitReason = (value) => {\r\n if (mode === 'modify') {\r\n return selectOption.visitReason().filter((s) => s.value === value.BoardClass);\r\n }\r\n };\r\n\r\n const defaultIdcSelect = (value) => {\r\n if (mode === 'modify') {\r\n return selectOption.IDCOptions().filter((s) => s.value === value.BoardSubClass);\r\n }\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n

    방문예약 신규등록

    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    IDC 센터\r\n ({\r\n ...theme,\r\n borderRadius: 0,\r\n colors: {\r\n ...theme.colors,\r\n primary25: '#d5d3f0',\r\n primary: 'var(--primary)',\r\n },\r\n })}\r\n />\r\n {validatorSubmit.message('idcSelect', inputs.BoardSubClass, 'required', {\r\n messages: {\r\n required: t('필수값'),\r\n },\r\n })}\r\n 방문 목적\r\n ({\r\n ...theme,\r\n borderRadius: 0,\r\n colors: {\r\n ...theme.colors,\r\n primary25: '#d5d3f0',\r\n primary: 'var(--primary)',\r\n },\r\n })}\r\n />\r\n {validatorSubmit.message('visitReason', inputs.BoardClass, 'required', {\r\n messages: {\r\n required: t('필수값'),\r\n },\r\n })}\r\n
    방문예정일\r\n handleCalendar(e.target.value)}\r\n min={moment(new Date()).format('YYYY-MM-DDThh:mm')}\r\n name=\"visitDate\"\r\n value={inputs.ResponseDate}\r\n />\r\n {validatorSubmit.message('visitDate', inputs.ResponseDate, 'required', {\r\n messages: {\r\n required: t('필수값'),\r\n },\r\n })}\r\n
    상세내용\r\n \r\n {validatorSubmit.message('Contents', inputs.Contents, 'required', {\r\n messages: {\r\n required: t('필수값'),\r\n },\r\n })}\r\n
    \r\n

    * 신속한 방문을 위하여 방문하시는 모든 분의 정보를 입력해 주시기 바랍니다.

    \r\n

    * 외부 관리업체에서 방문 시 외부 관리업체명을 작성하여 주시기 바랍니다.

    \r\n
    \r\n
    \r\n
    \r\n                        호스트센터(주)는 IDC센터 방문 출입을 위해 아래와 같은 개인정보에 대한 수집 및 이용 동의를 받고 있습니다.\r\n                        
    \r\n
    \r\n ㆍ수집 항목 : 성명, 소속업체명, 연락처
    \r\n ㆍ수집 및 이용목적 : IOC 출입, 출입자 이력 권한관리\r\n
    \r\n ㆍ보유 및 이용기간 : 고객정보ㆍ서비스 가입부터 해지 시
    \r\n
    \r\n 방문자 방문 정보, 출입등록 완료 후 90일 이용, 추적관리클 위해 3년간 보유 후 파기
    \r\n

    # 본 동의는 거부하실 수 있으나 거부 시에는 센터 내 방문 및 출입이 제한될 수 있습니다.

    \r\n
    \r\n
    \r\n handleChecked(e.target.checked)} />\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default ReservationCreate;\r\n","import React from 'react';\r\nimport moment from 'moment';\r\nimport { idcText, visitTypeText } from '../../selectOptionValue/SelectValue';\r\nconst ReservationItem = ({ data, t, idx, no, handleReservationDetail }) => {\r\n const visitorFirst = () => {\r\n if (data.visitors.length !== 0) {\r\n return data.visitors[0].name;\r\n } else {\r\n return '방문자 미등록';\r\n }\r\n };\r\n const visitResponseDate = () => {\r\n if (data.responseDate != null) {\r\n return moment(data.responseDate).format('LLL');\r\n } else {\r\n return '알수없는 방문예정 일시';\r\n }\r\n };\r\n return (\r\n \r\n {data.postNumber}\r\n {moment(data.regDate).format('YYYY-MM-DD')}\r\n {idcText(data.idc)}\r\n {visitorFirst()}\r\n {visitResponseDate()}\r\n {visitTypeText(data.visitType)}\r\n \r\n
    handleReservationDetail(data.idx)}>\r\n {t('확인')}\r\n
    \r\n \r\n \r\n );\r\n};\r\n\r\nexport default ReservationItem;\r\n","import React, { useEffect, useRef, useState } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport Paginate from 'react-paginate';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { dateChange } from '../../../redux/datepicker/ActionDatepicker';\r\nimport { getVisitReservations, getVisitReservationsSearch } from '../../../redux/supportcenter/ActionSupportCenter';\r\nimport SupportCenterMapTable from '../../common/SupportCenterMapTable';\r\nimport DateRangePickerCompnent from '../../datepicker/DateRangePickerCompnent';\r\nimport ReservaionDetail from './ReservaionDetail';\r\nimport ReservationCreate from './ReservationCreate';\r\nimport ReservationItem from './ReservationItem';\r\nconst ReservationTable = ({ findReservation, setFindReservation, visitShowOnClick }) => {\r\n const { visitReservationsLoading, visitReservationsData, visitReservationsError } = useSelector((state) => state.ReducerSupportCenter);\r\n const state = useSelector((state) => state.ReducerDatepicker.oneDay);\r\n const dispatch = useDispatch();\r\n const { t } = useTranslation('Lang');\r\n const [height, setHeight] = useState(0);\r\n const ref = useRef(null);\r\n const detailRef = useRef(null);\r\n const searchRef = useRef(null);\r\n const [visible, setVisible] = useState(false);\r\n const [showOn, setShowOn] = useState(false);\r\n const [modishowOn, setModiShowOn] = useState(false);\r\n const [mode, setMode] = useState('create');\r\n const [activePage, setActivePage] = useState(0);\r\n // const [findReservation, setFindReservation] = useState(null);\r\n const scrollToBottom = () => {\r\n setTimeout(() => 3000);\r\n detailRef.current.scrollIntoView({ behavior: 'smooth' });\r\n };\r\n useEffect(\r\n () => {\r\n dispatch(getVisitReservations(1, 10));\r\n setHeight(ref.current.clientHeight);\r\n },\r\n [dispatch, ref]\r\n );\r\n\r\n const handleSearch = (e) => {\r\n e.preventDefault();\r\n if (visitReservationsLoading) {\r\n return alert(t('이미 검색중입니다. 잠시만기달려주세요'));\r\n }\r\n setActivePage(0);\r\n dispatch(getVisitReservationsSearch(1, 10, searchRef.current.value));\r\n };\r\n\r\n const datePickerOnClick = (e) => {\r\n setVisible(!visible);\r\n };\r\n\r\n const handlePageClick = (selectedPage) => {\r\n setActivePage(selectedPage.selected);\r\n dispatch(getVisitReservations(selectedPage.selected + 1, 10));\r\n };\r\n\r\n const handleReservationDetail = (id) => {\r\n const data = visitReservationsData.data.find((v) => v.idx === id);\r\n const { boardClass, boardKind, boardSubClass, contents, idc, idx, regDate, responseDate, visitType, visitors } = data;\r\n setFindReservation({\r\n ...findReservation,\r\n BoardClass: boardClass,\r\n BoardKind: boardKind,\r\n BoardSubClass: boardSubClass,\r\n Contents: contents,\r\n Idc: idc,\r\n Idx: idx,\r\n RegDate: regDate,\r\n ResponseDate: responseDate,\r\n VisitType: visitType,\r\n Visitors: visitors.map((d) => ({ Name: d.name, Company: d.company, Contact: d.contact, RegDate: d.regDate })),\r\n });\r\n setShowOn(true);\r\n setModiShowOn(false);\r\n setTimeout(() => scrollToBottom(), 300);\r\n };\r\n\r\n const handleModiReservation = () => {\r\n setShowOn(false);\r\n setModiShowOn(true);\r\n setMode('modify');\r\n };\r\n return (\r\n <>\r\n
    \r\n

    방문예약 신청 현황

    \r\n
    \r\n {/*
    \r\n \r\n {t('기간설정')}\r\n
    */}\r\n {visible && (\r\n
    \r\n \r\n
    \r\n )}\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    번호신청 일시방문센터성명방문예정 일시방문 목적내역 확인
    \r\n
    \r\n {visitReservationsData && (\r\n '}\r\n previousClassName={'prev'}\r\n nextClassName={'next'}\r\n activeClassName={'on'}\r\n onPageChange={handlePageClick}\r\n />\r\n )}\r\n
    \r\n
    \r\n {showOn && }\r\n
    \r\n {modishowOn && }\r\n \r\n );\r\n};\r\n\r\nexport default ReservationTable;\r\n","import React, { useState } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch } from 'react-redux';\r\nimport { setAdmin } from '../../redux/supportcenter/ActionAdmin';\r\nimport useValidator from '../useValidator';\r\n\r\nconst AdminAddModal = ({ handleAdminAddModal }) => {\r\n const [inputs, setInputs] = useState({\r\n Name: '',\r\n Email: '',\r\n CellPhone: '',\r\n });\r\n const dispatch = useDispatch();\r\n const [validator, showValidationMessage] = useValidator();\r\n const { t } = useTranslation('Lang');\r\n\r\n const inputChange = (e) => {\r\n const { value, name } = e.target;\r\n setInputs({\r\n ...inputs,\r\n [name]: value,\r\n });\r\n };\r\n\r\n const handleSubmit = (e) => {\r\n e.preventDefault();\r\n if (validator.allValid()) {\r\n dispatch(setAdmin(inputs,handleAdminAddModal));\r\n } else {\r\n showValidationMessage(true);\r\n }\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n

    {t('관리자 추가')}

    \r\n
    \r\n

    \r\n {t(\r\n '추가된 관리자에게 부계정을 생성할 수 있는 안내 메일이 발송 됩니다.'\r\n )}\r\n
    \r\n {t(\r\n '콘솔은 서비스 관리 및 지원센터,'\r\n )}\r\n
    \r\n {t(\r\n '마이호센은 요금 관리/납부 및 지원센터를 이용할 수 있습니다.'\r\n )}\r\n

    \r\n
    \r\n
    \r\n inputChange(e)}\r\n />{' '}\r\n
    \r\n {validator.message('Name', inputs.Name, 'required', {\r\n messages: {\r\n required: t('필수값'),\r\n },\r\n })}\r\n
    \r\n inputChange(e)}\r\n />\r\n
    \r\n {validator.message('Email', inputs.Email, 'required|email', {\r\n messages: {\r\n required: t('필수값'),\r\n },\r\n validators: {\r\n email: {\r\n message: t('이메일 형식이 아닙니다.'),\r\n rule: (val, params, validator) => {\r\n return (\r\n validator.helpers.testRegex(\r\n val,\r\n /^[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?\\.)+[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$/\r\n ) && params.indexOf(val) === -1\r\n );\r\n },\r\n required: true,\r\n },\r\n },\r\n })}\r\n
    \r\n inputChange(e)}\r\n />\r\n
    \r\n {validator.message('CellPhone', inputs.CellPhone, 'required|phone', {\r\n messages: {\r\n required: t('필수값'),\r\n },\r\n validators: {\r\n phone: {\r\n message: t('휴대폰번호의 형식이 맞지않습니다.'),\r\n rule: (val, params, validator) => {\r\n return (\r\n validator.helpers.testRegex(val, /^01([0|1|6|7|8|9])-?([0-9]{3,4})-?([0-9]{4})$/) &&\r\n params.indexOf(val) === -1\r\n );\r\n },\r\n required: true,\r\n },\r\n },\r\n })}\r\n
    \r\n
    \r\n
    \r\n

    개인 정보동의

    \r\n
    \r\n                        갸안ㅁㅇ나ㅓㅎㅁㄴ앎ㄶㅇ라\r\n                    
    \r\n

    \r\n \r\n \r\n

    \r\n
    \r\n
    \r\n
    handleSubmit(e)}>\r\n {t('관리자 추가')}\r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\nexport default AdminAddModal;\r\n","import axios from 'axios';\r\n\r\nexport const FETCH_POSTS_REQUEST = 'admin/FETCH_POSTS_REQUEST';\r\nexport const FETCH_POSTS_SUCCESS = 'admin/FETCH_POSTS_SUCCESS';\r\nexport const FETCH_POSTS_ERROR = 'admin/FETCH_POSTS_ERROR';\r\n\r\nconst fetchRequest = () => {\r\n return {\r\n type: FETCH_POSTS_REQUEST,\r\n };\r\n};\r\n\r\nconst fetchSuccess = (data) => {\r\n return {\r\n type: FETCH_POSTS_SUCCESS,\r\n payload: data,\r\n };\r\n};\r\nconst fetchFailure = (error) => {\r\n return {\r\n type: FETCH_POSTS_ERROR,\r\n payload: error,\r\n };\r\n};\r\n\r\nexport const setAdmin = (admin, handleAdminAddModal) => async (dispatch) => {\r\n await axios\r\n .post(`${process.env.REACT_APP_REQUEST_API_URL}Admin/Create`, admin)\r\n .then((response) => {\r\n if (response.status === 200) {\r\n handleAdminAddModal();\r\n return alert('관리자가 추가되었습니다.');\r\n }\r\n return alert('추가에 실패했습니다.');\r\n })\r\n .catch((error) => {\r\n if (error.response) {\r\n // 요청이 이루어졌으며 서버가 2xx의 범위를 벗어나는 상태 코드로 응답했습니다.\r\n console.log('response', error.response.status);\r\n console.log('response', error.response.headers);\r\n } else if (error.request) {\r\n // 요청이 이루어 졌으나 응답을 받지 못했습니다.\r\n // `error.request`는 브라우저의 XMLHttpRequest 인스턴스 또는\r\n // Node.js의 http.ClientRequest 인스턴스입니다.\r\n console.log('request', error.request);\r\n } else {\r\n // 오류를 발생시킨 요청을 설정하는 중에 문제가 발생했습니다.\r\n console.log('Error', error.message);\r\n }\r\n console.log(error.config);\r\n //dispatch(fetchDnsFailure(error.status));\r\n });\r\n};\r\n","export default __webpack_public_path__ + \"static/media/sc_info_bnr.5f66e182.png\";","import React, { useRef, useState, useEffect } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport Select from 'react-select';\r\nimport Paginate from 'react-paginate';\r\nimport { getIpAddress, getWorkData, workRequestModal, getWorkDetailData } from '../../redux/supportcenter/ActionSupportCenter';\r\nimport TableLoading from '../dataState/TableLoading';\r\nimport TableNoData from '../dataState/TableNoData';\r\nimport { SupportFormText, AccountFormText } from '../selectOptionValue/FormText';\r\nimport { onlyDaydateFormat, nowDateFormat, dateFormat, endDateFormat } from '../date/dateFormat';\r\nimport TextAreaForm from './TextAreaForm';\r\nimport { useTranslation } from 'react-i18next';\r\nimport ReservationTable from './visit/ReservationTable';\r\nimport ReservationCreate from './visit/ReservationCreate';\r\nimport { getAdminData } from '../../redux/supportcenter/ActionInquiryList';\r\nimport AdminAddModal from '../modal/AdminAddModal';\r\nimport infoBnr from '../img/sc_info_bnr.png';\r\n\r\nconst SupportInquiry = ({ display, inputs, setInputs, adminInfoData }) => {\r\n const { supportLoading, supportData, supportError, workData } = useSelector((state) => state.ReducerSupportCenter);\r\n const user = useSelector((state) => state.oidc.user);\r\n const [selectState, setselectState] = useState(0);\r\n const [adminModalView, setAdminModalView] = useState(false);\r\n const [selectContentState, setSelectContentState] = useState(0);\r\n const [radioState, setRadioState] = useState(4);\r\n\r\n const [visitShow, setVisit] = useState(true);\r\n const [visitShowDetail, setVisitDetail] = useState(false);\r\n const dispatch = useDispatch();\r\n const { t } = useTranslation('Lang');\r\n\r\n useEffect(() => {\r\n handdleRadioButton(4);\r\n adminInfoData &&\r\n setInputs({ ...inputs, Name: adminInfoData[0].name, Email: adminInfoData[0].email, Phone: adminInfoData[0].cellPhone });\r\n }, [adminInfoData]);\r\n const [findReservation, setFindReservation] = useState({\r\n BoardClass: 0,\r\n BoardKind: 0,\r\n BoardSubClass: '',\r\n Contents: '',\r\n Idc: 0,\r\n Idx: 0,\r\n RegDate: '',\r\n ResponseDate: null,\r\n VisitType: 0,\r\n Visitors: [],\r\n });\r\n const displayNone = {\r\n display: 'none',\r\n };\r\n const handleVisitDetailShow = () => {};\r\n\r\n const handleAdminAddModal = () => {\r\n setAdminModalView(!adminModalView);\r\n };\r\n const handdleRadioButton = (radioNumber) => {\r\n setRadioState(radioNumber);\r\n setselectState('');\r\n setSelectContentState('');\r\n };\r\n\r\n const handleIPChange = (selectedOption) => {\r\n setselectState(selectedOption);\r\n };\r\n\r\n const handleContentChange = (selectedOption) => {\r\n setSelectContentState(selectedOption);\r\n };\r\n\r\n const handlePageClick = (selected) => {\r\n let page = selected.selected + 1;\r\n dispatch(getWorkData(page, 20));\r\n };\r\n\r\n const handleWorkClick = () => {\r\n dispatch(getWorkData(1, 20));\r\n };\r\n\r\n const visitShowOnClick = (state) => {\r\n setVisit(state);\r\n };\r\n\r\n const customStyles = {\r\n control: (provided) => ({\r\n ...provided,\r\n width: '220px',\r\n outline: 'none',\r\n }),\r\n menu: (provided) => ({\r\n ...provided,\r\n position: 'absolute',\r\n left: '70px',\r\n width: '220px',\r\n outline: 'none',\r\n }),\r\n };\r\n\r\n const workConfirmApprove = (event, id) => {\r\n event.preventDefault();\r\n dispatch(workRequestModal(false, id));\r\n };\r\n\r\n const selectTitle = () => {\r\n switch (radioState) {\r\n case 4:\r\n return {\r\n title: t('기술문의'),\r\n items: [\r\n { id: 1, name: t('CDP백업복구요청') },\r\n { id: 2, name: t('OS재설치') },\r\n { id: 3, name: t('방화벽룰셋요청') },\r\n { id: 4, name: t('인버스도메인신청') },\r\n { id: 5, name: t('CDP 백업요청') },\r\n { id: 6, name: t('기타문의') },\r\n ],\r\n };\r\n case 14:\r\n return {\r\n title: t('결제지출증빙문의'),\r\n items: [\r\n { id: 1, name: t('CMS출금신청') },\r\n { id: 2, name: t('카드자동결제신청') },\r\n { id: 3, name: t('세금계산서문의') },\r\n { id: 4, name: t('현금영수증발행신청') },\r\n { id: 5, name: t('기타문의') },\r\n ],\r\n };\r\n case 15:\r\n return {\r\n title: t('영업문의'),\r\n items: [],\r\n };\r\n case 5:\r\n return {\r\n title: t('방문예약'),\r\n };\r\n case 20:\r\n return {\r\n title: t('작업의뢰서확인'),\r\n };\r\n default:\r\n return {\r\n title: t('기술문의'),\r\n };\r\n }\r\n };\r\n\r\n const handleInputChange = (e) => {\r\n const { value, name } = e.target;\r\n setInputs({ ...inputs, [name]: value });\r\n };\r\n\r\n const handleAdminSelectChange = (selectedOption) => {\r\n const admin = adminInfoData.find((s) => s.id === selectedOption.value);\r\n setInputs({ ...inputs, Name: admin.name, Email: admin.email, Phone: admin.cellPhone });\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n

    지원센터 운영시간 안내

    \r\n
    \r\n
    \r\n
      \r\n
    • handdleRadioButton(4)}>\r\n
      \r\n

      \r\n
      \r\n

      {t('기술문의')}

      \r\n

      {t('시스템장애, 시스템 운영 등 기술관련 문의')}

      \r\n
    • \r\n
    • handdleRadioButton(14)}>\r\n
      \r\n

      \r\n
      \r\n

      {t('결제지출증빙문의')}

      \r\n

      {t('세금계산서, 현금영수증, 결제방법 변경 문의')}

      \r\n
    • \r\n\r\n
    • handdleRadioButton(15)}>\r\n
      \r\n

      \r\n
      \r\n

      {t('영업문의')}

      \r\n

      {t('컨설팅, 구매, 비용, 견적 등 영업에 관련된 문의')}

      \r\n
    • \r\n
    • handdleRadioButton(5)}>\r\n
      \r\n

      \r\n
      \r\n

      {t('방문예약')}

      \r\n

      {t('IDC 방문을 위한 방문 예약 및 방문 확인')}

      \r\n
    • \r\n {\r\n handdleRadioButton(20);\r\n handleWorkClick();\r\n }}\r\n >\r\n
      \r\n

      \r\n
      \r\n

      {t('작업의뢰서')}

      \r\n

      {t('요청하신작업중고객님의승인이필요한작업리스트')}

      \r\n \r\n
    \r\n
    \r\n
    \r\n

    {selectTitle().title}

    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {/* {} */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {radioState !== 15 ? (\r\n \r\n ) : (\r\n ''\r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    이름\r\n handleInputChange(e)} />\r\n \r\n ({ value: s.id, label: s.name }))}\r\n value={{ value: inputs.id, label: inputs.Name }}\r\n onChange={handleAdminSelectChange}\r\n isSearchable={false}\r\n theme={(theme) => ({\r\n ...theme,\r\n borderRadius: 0,\r\n colors: {\r\n ...theme.colors,\r\n primary25: '#d5d3f0',\r\n primary: 'var(--primary)',\r\n },\r\n })}\r\n />\r\n 연락처\r\n handleInputChange(e)} />\r\n 이메일\r\n handleInputChange(e)} />\r\n {/* {user.profile.role === 'root' && (\r\n \r\n )} */}\r\n
    \r\n 서버 IP\r\n \r\n ({ value: suiIdx, label: ipfIp }))\r\n }\r\n value={selectState}\r\n onChange={handleIPChange}\r\n isSearchable={false}\r\n theme={(theme) => ({\r\n ...theme,\r\n borderRadius: 0,\r\n colors: {\r\n ...theme.colors,\r\n primary25: '#d5d3f0',\r\n primary: 'var(--primary)',\r\n },\r\n })}\r\n />\r\n \r\n 문의 유형\r\n \r\n ({ value: id, label: name }))\r\n }\r\n value={selectContentState}\r\n onChange={handleContentChange}\r\n isSearchable={false}\r\n theme={(theme) => ({\r\n ...theme,\r\n borderRadius: 0,\r\n colors: {\r\n ...theme.colors,\r\n primary25: '#d5d3f0',\r\n primary: 'var(--primary)',\r\n },\r\n })}\r\n />\r\n
    제목\r\n handleInputChange(e)} value={inputs.Subject}/>\r\n
    \r\n \r\n
    \r\n
    \r\n {/*
    \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n

    {t('서버IP')}

    \r\n ({ value: suiIdx, label: ipfIp }))}\r\n value={selectState}\r\n onChange={handleIPChange}\r\n isSearchable={false}\r\n theme={(theme) => ({\r\n ...theme,\r\n borderRadius: 0,\r\n colors: {\r\n ...theme.colors,\r\n primary25: '#d5d3f0',\r\n primary: 'var(--primary)',\r\n },\r\n })}\r\n />\r\n
    \r\n {radioState !== 15 ? (\r\n
    \r\n

    {t('문의내용')}

    \r\n ({ value: id, label: name }))}\r\n value={selectContentState}\r\n onChange={handleContentChange}\r\n isSearchable={false}\r\n theme={(theme) => ({\r\n ...theme,\r\n borderRadius: 0,\r\n colors: {\r\n ...theme.colors,\r\n primary25: '#d5d3f0',\r\n primary: 'var(--primary)',\r\n },\r\n })}\r\n />\r\n
    \r\n ) : (\r\n ''\r\n )}\r\n
    \r\n \r\n
    \r\n \r\n
    */}\r\n
    \r\n
    \r\n

    {selectTitle().title}

    \r\n
      \r\n
    • visitShowOnClick(true)}>\r\n 방문예약 현황/수정\r\n
    • \r\n
    • visitShowOnClick(false)}>\r\n 방문예약 신규 신청\r\n
    • \r\n
    \r\n
    \r\n {visitShow ? (\r\n \r\n ) : (\r\n \r\n )}\r\n
    \r\n
    \r\n
    \r\n

    {selectTitle().title}

    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {supportLoading ? (\r\n \r\n ) : supportError ? (\r\n supportError\r\n ) : workData.data ? (\r\n workData.data.map((e) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ))\r\n ) : (\r\n \r\n )}\r\n \r\n
    {t('번호')}{t('승인일')}{t('작업일')}{t('IP')}{t('작업내용')}{t('비용')}{t('작업승인')}{t('작업')}
    {e.no}{e.authDate ? onlyDaydateFormat(e.authDate) : ''}{e.workingDate ? onlyDaydateFormat(e.workingDate) : ''}{e.ipAddress}{e.workSpec}{e.workCost}\r\n {\r\n workConfirmApprove(event, e.wrIdx);\r\n }\r\n : (event) => {\r\n workConfirmApprove(event, e.wrIdx);\r\n }\r\n }\r\n >\r\n {e.isAppApplication === false ? t('승인요청') : t('승인완료')}\r\n \r\n {e.isWork === false ? t('작업') : t('완료')}
    \r\n
    \r\n
    \r\n '}\r\n previousClassName={'prev'}\r\n nextClassName={'next'}\r\n activeClassName={'on'}\r\n onPageChange={handlePageClick}\r\n />\r\n
    \r\n
    \r\n {adminModalView && }\r\n
    \r\n );\r\n};\r\n\r\nexport default SupportInquiry;\r\n","import React, { useEffect, useState } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { onlyDaydateFormat, nowDateFormat, dateFormat, endDateFormat } from '../date/dateFormat';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nconst SupportInquiryItem = ({ inquiryData, setDetailOn }) => {\r\n const { t } = useTranslation('Lang');\r\n\r\n const dispatch = useDispatch();\r\n\r\n const boardKind = () => {\r\n switch (inquiryData.boardKind) {\r\n case 4:\r\n return t('기술문의');\r\n case 14:\r\n return t('결제지출증빙문의');\r\n case 15:\r\n return t('영업문의');\r\n default:\r\n return t('기술문의');\r\n }\r\n };\r\n\r\n useEffect(() => {}, [dispatch]);\r\n\r\n const handleInquiryDetail = (e) => {\r\n e.preventDefault();\r\n setDetailOn(inquiryData.idx);\r\n };\r\n\r\n return (\r\n \r\n {inquiryData.postNumber}\r\n {boardKind()}\r\n {dateFormat(inquiryData.regDate)}\r\n {inquiryData.subject}\r\n \r\n \r\n {inquiryData.workStatus}\r\n \r\n \r\n
    \r\n {t('확인')}\r\n
    \r\n \r\n \r\n );\r\n};\r\nexport default SupportInquiryItem;\r\n","import React, { useEffect, useRef, useState } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport Paginate from 'react-paginate';\r\nimport { getInquiryData, getSeacrhInquiry, listDetailModal, listDetailSendModal } from '../../redux/supportcenter/ActionInquiryList';\r\nimport TableLoading from '../dataState/TableLoading';\r\nimport TableNoData from '../dataState/TableNoData';\r\nimport SupportInquiryItem from './SupportInquiryItem';\r\nimport { useTranslation } from 'react-i18next';\r\nimport * as selectOption from '../selectOptionValue/SelectValue';\r\nimport Select from 'react-select';\r\nimport DateRangePickerCompnent from '../datepicker/DateRangePickerCompnent';\r\nimport { dateChange } from '../../redux/datepicker/ActionDatepicker';\r\nimport moment from 'moment';\r\nconst SupportInquiryList = ({ display, askShowOn, setDetailOn, detailOn }) => {\r\n const { inquiryLoading, inquiryData, inquiryError } = useSelector((state) => state.ReducerInquiryList);\r\n const { detailLoading, detailData, detailError } = useSelector((state) => state.ReducerSupportCenter);\r\n const state = useSelector((state) => state.ReducerDatepicker.oneDay);\r\n const searchRef = useRef(null);\r\n const dispatch = useDispatch();\r\n const [visible, setVisible] = useState(false);\r\n const [searchType, setSearchType] = useState({\r\n searchBoardType: '',\r\n workDone: '',\r\n startDate: '',\r\n endDate: '',\r\n });\r\n\r\n useEffect(() => {\r\n dispatch(getInquiryData(1, 20));\r\n }, [detailData, dispatch]);\r\n\r\n const { t } = useTranslation('Lang');\r\n\r\n const handlePageClick = (selected) => {\r\n let page = selected.selected + 1;\r\n if (searchRef.current.value) {\r\n dispatch(getSeacrhInquiry(page, 20, searchRef.current.value, searchType));\r\n } else {\r\n dispatch(getInquiryData(page, 20));\r\n }\r\n };\r\n\r\n const handleDetailExit = (e) => {\r\n e.preventDefault();\r\n setDetailOn(false);\r\n };\r\n\r\n const handleSearch = (e) => {\r\n e.preventDefault();\r\n if (inquiryLoading) {\r\n return alert(t('이미 검색중입니다. 잠시만기달려주세요'));\r\n }\r\n dispatch(getSeacrhInquiry(1, 20, searchRef.current.value, searchType));\r\n };\r\n\r\n const handleSearchBoardTypeChange = (selectedOption) => {\r\n setSearchType({ ...searchType, searchBoardType: selectedOption.value });\r\n };\r\n\r\n const handleSearchWorkDoneTypeChange = (selectedOption) => {\r\n setSearchType({ ...searchType, workDone: selectedOption.value });\r\n };\r\n\r\n const datePickerOnClick = (e) => {\r\n setVisible(!visible);\r\n };\r\n const handleCalendar = (value, type) => {\r\n if (value) {\r\n setSearchType({\r\n ...searchType,\r\n [type]: value ? moment(value).format('yyyy-MM-DD') : '',\r\n });\r\n } else {\r\n setSearchType({\r\n ...searchType,\r\n startDate: '',\r\n endDate: '',\r\n });\r\n }\r\n };\r\n return (\r\n
    \r\n

    {t('나의문의내역')}

    \r\n
    \r\n
    \r\n handleCalendar(e.target.value, 'startDate')}\r\n max={moment(new Date()).format('YYYY-MM-DD')}\r\n name=\"visitDate\"\r\n value={searchType.startDate}\r\n />\r\n ~\r\n handleCalendar(e.target.value, 'endDate')}\r\n max={moment(new Date()).format('YYYY-MM-DD')}\r\n min={searchType.startDate}\r\n name=\"visitDate\"\r\n readOnly={searchType.startDate ? false : true}\r\n value={searchType.endDate}\r\n />\r\n
    \r\n
    \r\n
    \r\n ({\r\n ...theme,\r\n borderRadius: 0,\r\n colors: {\r\n ...theme.colors,\r\n primary25: '#d5d3f0',\r\n primary: 'var(--primary)',\r\n },\r\n })}\r\n />\r\n
    \r\n
    \r\n ({\r\n ...theme,\r\n borderRadius: 0,\r\n colors: {\r\n ...theme.colors,\r\n primary25: '#d5d3f0',\r\n primary: 'var(--primary)',\r\n },\r\n })}\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {inquiryLoading ? (\r\n \r\n ) : inquiryError ? (\r\n inquiryError\r\n ) : inquiryData.totalCount > 0 ? (\r\n inquiryData.data.map((i) => (\r\n \r\n ))\r\n ) : (\r\n \r\n )}\r\n \r\n
    {t('번호')}{t('유형')}{t('시간')}{t('제목')}{t('처리상태')}{t('처리내역')}
    \r\n
    \r\n
    \r\n '}\r\n previousClassName={'prev'}\r\n nextClassName={'next'}\r\n activeClassName={'on'}\r\n onPageChange={handlePageClick}\r\n />\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default SupportInquiryList;\r\n","import { React, useEffect, useState } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { getAdminData } from '../../redux/supportcenter/ActionInquiryList';\r\nimport { getIpAddress } from '../../redux/supportcenter/ActionSupportCenter';\r\nimport SupportCenterDetail from './SupportCenterDetail';\r\nimport SupportInquiry from './SupportInquiry';\r\nimport SupportInquiryList from './SupportInquiryList';\r\n\r\nconst SupportCenter = ({ style, handleSupportCenterShow }) => {\r\n const [askShowOn, setAskShowOn] = useState(true);\r\n const [detailOn, setDetailOn] = useState(false);\r\n const { adminInfoLoading, adminInfoData, adminInfoError } = useSelector((state) => state.ReducerInquiryList);\r\n const { t } = useTranslation('Lang');\r\n const dispatch = useDispatch();\r\n useEffect(() => {\r\n dispatch(getIpAddress());\r\n dispatch(getAdminData());\r\n }, [dispatch]);\r\n\r\n const [inputs, setInputs] = useState({\r\n Subject: '',\r\n Name: '',\r\n Phone: '',\r\n Email: '',\r\n });\r\n\r\n const displayNone = {\r\n display: 'none',\r\n };\r\n const displayBlock = {\r\n display: 'block',\r\n };\r\n\r\n const askOnClick = () => {\r\n setAskShowOn(true);\r\n setDetailOn(false);\r\n };\r\n\r\n const askListOnClick = () => {\r\n setAskShowOn(false);\r\n };\r\n\r\n const handleDetailExit = (e) => {\r\n e.preventDefault();\r\n setDetailOn(false);\r\n };\r\n return (\r\n
    \r\n
    \r\n
    \r\n

    {t('지원센터')}

    \r\n
      \r\n
    • askOnClick()}>\r\n {t('문의하기')}\r\n
    • \r\n
    • askListOnClick()}>\r\n {t('나의 문의내역')}\r\n
    • \r\n
    \r\n {detailOn \r\n ? (
    ) \r\n : (
    \r\n \r\n \r\n
    )}\r\n
    \r\n \r\n {!detailOn \r\n ? () \r\n : ()}\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default SupportCenter;\r\n","import React, { useEffect } from 'react';\r\nimport { Line } from 'react-chartjs-2';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { getCPUData } from '../../redux/chart/ActionChart';\r\nimport DivNoData from '../dataState/DivNoData';\r\nimport LoadingSpninner from '../dataState/LoadingSpninner';\r\nimport ErrorHandler from '../error/ErrorHandler';\r\nimport moment from 'moment';\r\nconst CpuChart = ({ hostId }) => {\r\n const state = useSelector((state) => state.ReducerDatepicker.oneDay);\r\n const { chartData, chartLoading, chartError } = useSelector((state) => state.ReducerChart.cpu);\r\n const dispatch = useDispatch();\r\n\r\n useEffect(() => {\r\n dispatch(getCPUData(state, hostId));\r\n }, [state, hostId, dispatch]);\r\n\r\n if (chartError)\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n if (chartLoading && !chartData) return ; // 로딩중이고 데이터 없을때만\r\n if (!chartData || chartData.length === 0) return ;\r\n const data = {\r\n type: 'lineWithline',\r\n labels: chartData && chartData.map((chart) => chart.clock),\r\n datasets: [\r\n {\r\n backgroundColor: 'rgba(54, 240, 15, .2)',\r\n borderColor: 'yellowgreen',\r\n pointBackgroundColor: 'transparent',\r\n pointBorderColor: 'transparent',\r\n label: 'percent',\r\n data: chartData && chartData.map((chart) => Number(chart.value_avg).toFixed(1)),\r\n borderWidth: 1,\r\n lineTension: 0,\r\n },\r\n ],\r\n };\r\n\r\n const options = {\r\n maintainAspectRatio: false,\r\n tooltips: {\r\n mode: 'index',\r\n intersect: false,\r\n yAlign: 'bottom',\r\n callbacks: {\r\n labelColor: function (item, chart) {\r\n if (item.datasetIndex === 0) {\r\n return {\r\n backgroundColor: 'rgba(54, 240, 15, .2)',\r\n };\r\n }\r\n },\r\n label: function (item, chart) {\r\n return 'percent: ' + item.value + '%';\r\n },\r\n },\r\n },\r\n hover: {\r\n mode: 'nerest',\r\n intersect: true,\r\n },\r\n layout: {\r\n padding: {\r\n top: 40,\r\n bottom: 10,\r\n },\r\n },\r\n scales: {\r\n yAxes: [\r\n {\r\n stepSize: 20,\r\n ticks: {\r\n callback: function (value) {\r\n return value + '%'; // convert it to percentage\r\n },\r\n },\r\n // scaleLabel: {\r\n // display: true,\r\n // labelString: 'Percentage',\r\n // },\r\n },\r\n ],\r\n xAxes: [\r\n {\r\n gridLines: { display: false },\r\n type: 'time',\r\n time: {\r\n tooltipFormat: 'YYYY-MM-DD aHH:mm',\r\n unit: moment(state.endDate).format('YYMMDD') === moment(state.startDate).format('YYMMDD') ? 'hour' : 'day',\r\n displayFormats: {\r\n hour: 'HH',\r\n day: 'MM-DD',\r\n },\r\n },\r\n },\r\n ],\r\n },\r\n };\r\n return ;\r\n};\r\n\r\nexport default CpuChart;\r\n","import React, { useEffect } from 'react';\r\nimport { Line } from 'react-chartjs-2';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { getMemoryData } from '../../redux/chart/ActionChart';\r\nimport DivNoData from '../dataState/DivNoData';\r\nimport LoadingSpninner from '../dataState/LoadingSpninner';\r\nimport ErrorHandler from '../error/ErrorHandler';\r\nimport moment from 'moment';\r\nconst MemoryChart = ({ hostId }) => {\r\n const state = useSelector((state) => state.ReducerDatepicker.oneDay);\r\n const { chartData, chartLoading, chartError } = useSelector((state) => state.ReducerChart.memory);\r\n const dispatch = useDispatch();\r\n const { t } = useTranslation('Lang');\r\n\r\n useEffect(() => {\r\n dispatch(getMemoryData(state, hostId));\r\n }, [state, hostId, dispatch]);\r\n\r\n if (chartError)\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n if (chartLoading && !chartData) return ;\r\n if (!chartData || chartData.length === 0) return ;\r\n\r\n const options = {\r\n maintainAspectRatio: false,\r\n tooltips: {\r\n mode: 'index',\r\n intersect: false,\r\n yAlign: 'bottom',\r\n callbacks: {\r\n labelColor: function (item, chart) {\r\n if (item.datasetIndex === 0) {\r\n return {\r\n backgroundColor: 'rgba(54, 240, 15, .2)',\r\n };\r\n }\r\n },\r\n label: function (item, chart) {\r\n return 'percent: ' + item.value + '%';\r\n },\r\n },\r\n },\r\n hover: {\r\n mode: 'nerest',\r\n intersect: true,\r\n },\r\n layout: {\r\n padding: {\r\n top: 40,\r\n bottom: 10,\r\n },\r\n },\r\n scales: {\r\n yAxes: [\r\n {\r\n ticks: {\r\n stepSize: 20,\r\n callback: function (value) {\r\n return value + '%'; // convert it to percentage\r\n },\r\n },\r\n // scaleLabel: {\r\n // display: true,\r\n // labelString: 'Percentage',\r\n // },\r\n },\r\n ],\r\n xAxes: [\r\n {\r\n gridLines: { display: false },\r\n type: 'time',\r\n time: {\r\n tooltipFormat: 'YYYY-MM-DD aHH:mm',\r\n unit: moment(state.endDate).format('YYMMDD') === moment(state.startDate).format('YYMMDD') ? 'hour' : 'day',\r\n displayFormats: {\r\n hour: 'HH',\r\n day: 'MM-DD',\r\n },\r\n },\r\n ticks: {\r\n callback: function (value) {\r\n return value;\r\n //return new Date(value).toLocaleDateString('ko', { month: 'short', day: 'numeric' });\r\n },\r\n },\r\n },\r\n ],\r\n },\r\n };\r\n\r\n const data = {\r\n labels: chartData && chartData.map((chart) => chart.clock),\r\n datasets: [\r\n {\r\n backgroundColor: 'rgba(54, 240, 15, .2)',\r\n borderColor: 'yellowgreen',\r\n pointBackgroundColor: 'transparent',\r\n pointBorderColor: 'transparent',\r\n label: 'percent',\r\n data: chartData && chartData.map((chart) => chart.value_avg),\r\n borderWidth: 1,\r\n lineTension: 0,\r\n },\r\n ],\r\n };\r\n return ;\r\n};\r\n\r\nexport default MemoryChart;\r\n","import React, { useEffect } from 'react';\r\nimport { Bar, Line } from 'react-chartjs-2';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { getStorageData } from '../../redux/chart/ActionChart';\r\nimport DivNoData from '../dataState/DivNoData';\r\nimport LoadingSpninner from '../dataState/LoadingSpninner';\r\nimport ErrorHandler from '../error/ErrorHandler';\r\nimport moment from 'moment';\r\nconst StorageChart = ({ hostId }) => {\r\n const state = useSelector((state) => state.ReducerDatepicker.oneDay);\r\n const { chartData, chartLoading, chartError } = useSelector((state) => state.ReducerChart.storage);\r\n const dispatch = useDispatch();\r\n\r\n useEffect(() => {\r\n dispatch(getStorageData(state, hostId));\r\n }, [state, hostId, dispatch]);\r\n\r\n if (chartError)\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n if (chartLoading && !chartData) return ; // 로딩중이고 데이터 없을때만\r\n if (!chartData || chartData.length === 0) return ;\r\n\r\n const color = ['#0100FF', '#FF007F', '#5F00FF', '#2FED28', '#FF5E00', '#A566FF', '#00D8FF', '#747474', '#ABF200'];\r\n const options = {\r\n maintainAspectRatio: false,\r\n tooltips: {\r\n mode: 'index',\r\n intersect: false,\r\n yAlign: 'bottom',\r\n callbacks: {\r\n labelColor: function (item, chart) {\r\n return { backgroundColor: color[item.datasetIndex] };\r\n },\r\n label: function (item, chart) {\r\n return chart.datasets[item.datasetIndex].label + ' : ' + item.value + '%';\r\n },\r\n },\r\n },\r\n hover: {\r\n mode: 'nerest',\r\n intersect: true,\r\n },\r\n scales: {\r\n yAxes: [\r\n {\r\n ticks: {\r\n min: 0,\r\n max: 100,\r\n stepSize: 20,\r\n callback: function (value) {\r\n return value + '%'; // convert it to percentage\r\n },\r\n },\r\n // scaleLabel: {\r\n // display: true,\r\n // labelString: 'Percentage',\r\n // },\r\n },\r\n ],\r\n xAxes: [\r\n {\r\n gridLines: { display: false },\r\n type: 'time',\r\n time: {\r\n tooltipFormat: 'YYYY-MM-DD aHH:mm',\r\n unit: moment(state.endDate).format('YYMMDD') === moment(state.startDate).format('YYMMDD') ? 'hour' : 'day',\r\n displayFormats: {\r\n hour: 'HH',\r\n day: 'MM-DD',\r\n },\r\n },\r\n ticks: {\r\n callback: function (value) {\r\n return value;\r\n //return new Date(value).toLocaleDateString('ko', { month: 'short', day: 'numeric' });\r\n },\r\n },\r\n },\r\n ],\r\n },\r\n };\r\n const data = {\r\n type: 'lineWithline',\r\n labels: chartData && chartData[0].percentage.map((percentage) => percentage.clock),\r\n datasets:\r\n chartData &&\r\n chartData.map((chart, index) => {\r\n return {\r\n label: chart.name,\r\n data: chart.percentage.map((val) => (val.value_avg === '0' ? 0 : Number(100 - val.value_avg).toFixed(1))),\r\n borderColor: color[index],\r\n pointRadius: 0,\r\n fill: false,\r\n borderWidth: 1,\r\n lineTension: 0,\r\n };\r\n }),\r\n\r\n // [\r\n // {\r\n // backgroundColor: 'rgba(54, 240, 15, .2)',\r\n // borderColor: 'yellowgreen',\r\n // pointBackgroundColor: 'transparent',\r\n // pointBorderColor: 'transparent',\r\n // label: 'percent',\r\n // data: chartData && chartData.map((chart) => chart),\r\n // borderWidth: 1,\r\n // lineTension: 0,\r\n // },\r\n // ],\r\n };\r\n\r\n return ;\r\n};\r\n\r\nexport default StorageChart;\r\n","import React, { useEffect } from 'react';\r\nimport { Line } from 'react-chartjs-2';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { getTrafficData } from '../../redux/chart/ActionChart';\r\nimport DivNoData from '../dataState/DivNoData';\r\nimport LoadingSpninner from '../dataState/LoadingSpninner';\r\nimport ErrorHandler from '../error/ErrorHandler';\r\nimport moment from 'moment';\r\nconst TrafficChart = ({ serverIdx }) => {\r\n const state = useSelector((state) => state.ReducerDatepicker.oneDay);\r\n const { chartData, chartLoading, chartError } = useSelector((state) => state.ReducerChart.traffic);\r\n const dispatch = useDispatch();\r\n\r\n useEffect(() => {\r\n dispatch(getTrafficData(state, serverIdx));\r\n }, [state, serverIdx, dispatch]);\r\n\r\n if (chartError)\r\n return (\r\n
    \r\n \r\n
    \r\n );\r\n if (chartLoading && !chartData) return ; // 로딩중이고 데이터 없을때만\r\n if (!chartData || chartData.length === 0) return ;\r\n\r\n const data = {\r\n type: 'lineWithline',\r\n labels: chartData && chartData.map((chart) => chart.trafficDateTime),\r\n datasets: [\r\n {\r\n backgroundColor: 'rgba(54, 240, 15, .2)',\r\n borderColor: 'yellowgreen',\r\n pointBackgroundColor: 'transparent',\r\n pointBorderColor: 'transparent',\r\n label: `in`, //(${chartData && chartData[0].bandUnit})\r\n data: chartData && chartData.map((chart) => chart.inMaxBps),\r\n borderWidth: 1,\r\n lineTension: 0,\r\n },\r\n {\r\n backgroundColor: 'transparent',\r\n borderColor: 'blue',\r\n pointBackgroundColor: 'transparent',\r\n pointBorderColor: 'transparent',\r\n label: `out`,\r\n data: chartData && chartData.map((chart) => chart.outMaxBps),\r\n borderWidth: 1,\r\n lineTension: 0,\r\n type: 'line',\r\n },\r\n ],\r\n };\r\n\r\n const options = {\r\n maintainAspectRatio: false,\r\n tooltips: {\r\n mode: 'index',\r\n position: 'average',\r\n intersect: false,\r\n yAlign: 'bottom',\r\n callbacks: {\r\n labelColor: function (item, chart) {\r\n if (item.datasetIndex === 0) {\r\n return {\r\n backgroundColor: 'rgba(54, 240, 15, .2)',\r\n };\r\n } else {\r\n return {\r\n backgroundColor: '#4250ff',\r\n };\r\n }\r\n },\r\n label: function (item, chart) {\r\n if (item.datasetIndex === 0) {\r\n return 'in: ' + item.value + ' ' + `${chartData && chartData[0].bandUnit}`;\r\n } else {\r\n return 'out: ' + item.value + ' ' + `${chartData && chartData[0].bandUnit}`;\r\n }\r\n },\r\n },\r\n },\r\n hover: {\r\n mode: 'nerest',\r\n intersect: true,\r\n },\r\n scales: {\r\n xAxes: [\r\n {\r\n gridLines: { display: false },\r\n type: 'time',\r\n time: {\r\n tooltipFormat: 'YYYY-MM-DD aHH:mm',\r\n unit: moment(state.endDate).format('YYMMDD') === moment(state.startDate).format('YYMMDD') ? 'hour' : 'day',\r\n displayFormats: {\r\n hour: 'HH',\r\n day: 'MM-DD',\r\n },\r\n },\r\n },\r\n ],\r\n yAxes: [\r\n {\r\n scaleLabel: {\r\n display: true,\r\n labelString: chartData && chartData[0].bandUnit,\r\n fontFamily: 'Noto Sans KR',\r\n fontSize: 12,\r\n },\r\n ticks: {\r\n beginAtZero: true,\r\n min: 0,\r\n },\r\n },\r\n ],\r\n },\r\n };\r\n\r\n return ;\r\n};\r\n\r\nexport default TrafficChart;\r\n","import React, { useState } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useSelector } from 'react-redux';\r\nimport DateRangePickerCompnent from '../datepicker/DateRangePickerCompnent';\r\nimport { dateChange } from '../../redux/datepicker/ActionDatepicker';\r\nconst DatePickerToggleComponent = ({ initDisabledDate }) => {\r\n const [visible, setVisible] = useState(false);\r\n const { t } = useTranslation('Lang');\r\n const state = useSelector((state) => state.ReducerDatepicker.oneDay);\r\n const toggleMenu = () => {\r\n setVisible(!visible);\r\n };\r\n return (\r\n
    \r\n

    {t('리소스 체크')}

    \r\n \r\n {visible && (\r\n
    \r\n \r\n
    \r\n )}\r\n
    \r\n );\r\n};\r\n\r\nexport default DatePickerToggleComponent;\r\n","import moment from 'moment';\r\nimport React from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nconst MonitoringModalIssueItem = ({ data, index, no }) => {\r\n const { t } = useTranslation('Lang');\r\n let down = moment(data.downDate).format('YYYY-MM-DD / HH:mm');\r\n let up = data.upDate && moment(data.upDate).format('YYYY-MM-DD / HH:mm');\r\n let t1 = moment.duration(moment(data.upDate).diff(moment(data.downDate)));\r\n let { years, months, days, hours, minutes, seconds } = t1._data;\r\n let dateDiff = '';\r\n if (years !== 0) {\r\n dateDiff += years + t('년') + ' ';\r\n }\r\n if (months !== 0) {\r\n dateDiff += months + t('개월') + ' ';\r\n }\r\n if (days !== 0) {\r\n dateDiff += days + t('일') + ' ';\r\n }\r\n if (hours !== 0) {\r\n dateDiff += hours + t('시간') + ' ';\r\n }\r\n if (minutes !== 0) {\r\n dateDiff += minutes + t('분') + ' ';\r\n }\r\n if (seconds !== 0) {\r\n dateDiff += seconds + t('초');\r\n }\r\n return (\r\n \r\n {no - index}\r\n {data.triggerDescription}\r\n {down && down}\r\n {up && up}\r\n {dateDiff}\r\n \r\n );\r\n};\r\n\r\nexport default MonitoringModalIssueItem;\r\n","import React, { useEffect, useRef, useState } from 'react';\r\nimport Paginate from 'react-paginate';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport MonitoringModalIssueItem from './MonitoringModalIssueItem';\r\nimport MonitoringMapPageTable from '../common/MonitoringMapPageTable';\r\nimport { monitoringModalIssueAction } from '../../redux/monitoring/ReducerMonitoringModalIssue';\r\n\r\nconst MonitoringModalIssueTable = ({ serverIdx, t }) => {\r\n const { IssueData, IssueLoading, IssueError } = useSelector((state) => state.ReducerMonitoringModalIssue);\r\n const dispatch = useDispatch();\r\n const handlePageClick = (selectedPage) => {\r\n dispatch(monitoringModalIssueAction.getModalIssues({ page: selectedPage.selected + 1, serverIdx: serverIdx }));\r\n };\r\n const [height, setHeight] = useState(0);\r\n const ref = useRef(null);\r\n\r\n useEffect(() => {\r\n setHeight(ref.current.clientHeight);\r\n }, [IssueData]);\r\n\r\n useEffect(() => {\r\n dispatch(monitoringModalIssueAction.getModalIssues({ page: 1, serverIdx: serverIdx }));\r\n }, [serverIdx, dispatch]);\r\n\r\n return (\r\n <>\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    {t('번호')}{t('서비스')}{t('이슈발생시각')}{t('이슈종료시각')}{t('지속시간')}
    \r\n
    \r\n {IssueData && (\r\n >'}\r\n previousClassName={'prev'}\r\n nextClassName={'next'}\r\n activeClassName={'active'}\r\n onPageChange={handlePageClick}\r\n />\r\n )}\r\n
    \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default MonitoringModalIssueTable;\r\n","import React from 'react';\r\nimport moment from 'moment';\r\nconst MonitoringPortModal = ({ data, idx, no, t }) => (\r\n \r\n {no - idx}\r\n {data.monitorName}\r\n {t(data.monitorStatus)}\r\n {data.lastCheckDateTime !== '1970-01-01T09:00:00+09:00' && moment(data.lastCheckDateTime).format('LLL')}\r\n \r\n);\r\n\r\nexport default MonitoringPortModal;\r\n","import React from 'react';\r\nimport moment from 'moment';\r\n\r\nconst MonitoringWebModal = ({ data, idx, no, t }) => (\r\n \r\n {no - idx}\r\n {data.domainName}\r\n {t(data.status)}\r\n {data.checkUrl}\r\n {data.checkValue}\r\n {data.lastCheckDateTime !== '1970-01-01T09:00:00+09:00' && moment(data.lastCheckDateTime).format('LLL')}\r\n \r\n);\r\n\r\nexport default MonitoringWebModal;\r\n","import React, { useEffect, useState } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport CpuChart from '../chart/CpuChart';\r\nimport MemoryChart from '../chart/MemoryChart';\r\nimport StorageChart from '../chart/StorageChart';\r\nimport TrafficChart from '../chart/TrafficChart';\r\nimport DatePickerToggleComponent from '../datepicker/DatePickerToggleComponent';\r\nimport MonitoringModalIssueTable from '../monitoring/MonitoringModalIssueTable';\r\nimport MonitoringPortModal from './MonitoringPortModal';\r\nimport MonitoringWebModal from './MonitoringWebModal';\r\nimport { Link } from 'react-router-dom';\r\nimport MonitoringMapTable from '../common/MonitoringMapTable';\r\nimport Select from 'react-select';\r\nimport { settingAction } from '../../redux/monitoringSetting/ReducerMonitoringSetting';\r\nimport { monitoringModalAction, monitoringModalClose, tagAddModalState } from '../../redux/monitoring/ReducerMonitoringModal';\r\nimport { issueDataReset } from '../../redux/monitoring/ReducerMonitoringModalIssue';\r\nimport { monitoringModalDataAction } from '../../redux/monitoring/ReducerMonitoringModalData';\r\nconst MonitoringModal = ({ ModalData, ModalLoading }) => {\r\n const [showModal, setShowModal] = useState(0);\r\n const dispatch = useDispatch();\r\n const { t } = useTranslation('Lang');\r\n const { webLoading, webData, webError } = useSelector((state) => state.ReducerMonitoringModalData.web);\r\n const { portLoading, portData, portError } = useSelector((state) => state.ReducerMonitoringModalData.port);\r\n const { data } = useSelector((state) => state.ReducerMonitoringSetting.hostData);\r\n const options = data && data.data.map((d) => ({ value: d.hostName.split('_')[0], label: d.hostName.split('_')[0] }));\r\n\r\n useEffect(() => {\r\n dispatch(monitoringModalDataAction.getWeb(ModalData.hostID));\r\n dispatch(monitoringModalDataAction.getPort(ModalData.hostID));\r\n setShowModal(Object.keys(ModalData).length);\r\n document.body.style.overflow = 'hidden';\r\n }, [dispatch, ModalData]);\r\n\r\n const handleSettingRedirect = () => {\r\n dispatch(settingAction.getWebs(ModalData.hostID));\r\n dispatch(settingAction.getPorts(ModalData.hostID));\r\n dispatch(settingAction.getResources(ModalData.hostID));\r\n dispatch(settingAction.getLogs({ page: 1, hostid: ModalData.hostID }));\r\n ModalClose();\r\n };\r\n\r\n const ModalClose = () => {\r\n dispatch(issueDataReset());\r\n document.body.style.overflow = 'auto';\r\n dispatch(monitoringModalClose());\r\n };\r\n\r\n const handleChange = (selectedOption) => {\r\n dispatch(monitoringModalAction.getMonitoringModal({ monitoring: null, ip: selectedOption.label }));\r\n };\r\n\r\n return (\r\n
    0 ? 'block' : 'none' }}>\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n t('IP조회중')}\r\n noOptionsMessage={() => t('IP없음')}\r\n isLoading={ModalLoading}\r\n value={{ value: ModalData.ipAddress, label: ModalData.ipAddress }}\r\n theme={(theme) => ({\r\n ...theme,\r\n borderRadius: 0,\r\n colors: {\r\n ...theme.colors,\r\n primary25: '#d5d3f0',\r\n primary: 'var(--primary)',\r\n },\r\n })}\r\n />\r\n
    \r\n
    \r\n
    \r\n \r\n {ModalData.hostStatus === 1 ? t('정상') : ModalData.hostStatus === 2 ? t('비정상') : t('미등록')}\r\n
    \r\n
    \r\n

    \r\n IN\r\n {ModalData.nowInTraffic}\r\n

    \r\n

    \r\n OUT\r\n {ModalData.nowOutTraffic}\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    {t('서비스 포트 체크')}

    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    {t('번호')}{t('포트')}{t('상태')}{t('마지막체크시간')}
    \r\n
    \r\n
    \r\n
    \r\n

    \r\n {t('웹')} URL {t('모니터링')}\r\n

    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    {t('번호')}{t('도메인')}{t('상태')}{t('체크')} URL{t('체크값')}{t('마지막체크시간')}
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n

    CPU {t('사용률 5분 평균')}

    \r\n \r\n
    \r\n
    \r\n

    {t('메모리 사용률')}

    \r\n \r\n
    \r\n
    \r\n

    {t('스토리지 사용률')}

    \r\n \r\n
    \r\n
    \r\n

    traffic

    \r\n \r\n
    \r\n
    \r\n

    {t('이슈이력')}

    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default MonitoringModal;\r\n","import React, { useEffect, useRef, useState } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch } from 'react-redux';\r\nimport Select from 'react-select';\r\nimport { modifyRecordData } from '../../redux/nameserver/ActionRecord';\r\nimport * as selectOption from '../selectOptionValue/SelectValue';\r\nimport useValidator from '../useValidator';\r\nconst DomainModiModal = ({ handleModalModi, record }) => {\r\n const { t } = useTranslation('Lang');\r\n const [validator, showValidationMessage] = useValidator();\r\n const [selectReg, setSelectReg] = useState({});\r\n const [ruleText, ruleTextSet] = useState('required');\r\n const [state, setState] = useState(selectOption.dnsTTLoptions(t).filter((s) => s.value === record.ttl));\r\n const [recordState, setRecordState] = useState(record);\r\n const dispatch = useDispatch();\r\n useEffect(() => {\r\n if (record.recordType === 'A') {\r\n ruleTextSet('required|ip');\r\n setSelectReg({\r\n ...selectReg,\r\n ip: {\r\n message: t('ip형식이아닙니다'),\r\n rule: (val, params, validator) => {\r\n val = val.substr(val.length - 1) === '.' ? val.slice(0, -1) : val;\r\n return (\r\n validator.helpers.testRegex(\r\n val,\r\n /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/\r\n ) && params.indexOf(val) === -1\r\n );\r\n },\r\n },\r\n });\r\n } else if (record.recordType === 'TXT') {\r\n ruleTextSet('required');\r\n } else if (record.recordType === 'SRV') {\r\n //srv 필요\r\n } else {\r\n ruleTextSet('required|domain');\r\n setSelectReg({\r\n ...selectReg,\r\n domain: {\r\n message: t('도메인형식이아닙니다'),\r\n rule: (val, params, validator) => {\r\n val = val.substr(val.length - 1) === '.' ? val.slice(0, -1) : val;\r\n return (\r\n validator.helpers.testRegex(\r\n val.toLowerCase(),\r\n /(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\\.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]/g\r\n ) && params.indexOf(val) === -1\r\n );\r\n },\r\n required: true,\r\n },\r\n });\r\n }\r\n }, [record]);\r\n const handleChange = (selectedOption) => {\r\n setState(selectedOption);\r\n setRecordState({\r\n ...recordState,\r\n ttl: selectedOption.value,\r\n });\r\n };\r\n\r\n const handleInputChange = (value) => {\r\n setRecordState({\r\n ...recordState,\r\n recordValue: value,\r\n });\r\n };\r\n\r\n const handleModify = (e) => {\r\n e.preventDefault();\r\n if (validator.allValid()) {\r\n dispatch(modifyRecordData(recordState, record, t, handleModalModi));\r\n } else {\r\n alert(t('필수값을모두입력해주세요'));\r\n showValidationMessage(true);\r\n }\r\n };\r\n return (\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    {t('서브도메인')}{record.subDomain}
    type{record.recordType}
    \r\n IP{t('주소')} / {t('레코드')}\r\n \r\n handleInputChange(e.target.value)}\r\n />\r\n {validator.message('Content', recordState.recordValue, ruleText, {\r\n messages: {\r\n required: t('필수값'),\r\n },\r\n validators: selectReg,\r\n })}\r\n
    TTL\r\n ({\r\n ...theme,\r\n borderRadius: 0,\r\n colors: {\r\n ...theme.colors,\r\n primary25: '#d5d3f0',\r\n primary: 'var(--primary)',\r\n },\r\n })}\r\n />\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default DomainModiModal;\r\n","import React from 'react';\r\n\r\nconst PortScanModalItem = ({ data, handleSingleCheck, checkItems, t }) => (\r\n \r\n \r\n handleSingleCheck(e.target.checked, data.name)}\r\n />\r\n \r\n {data.name}\r\n {t(data.registered)}\r\n \r\n);\r\n\r\nexport default PortScanModalItem;\r\n","import React, { useRef, useState } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { getPortRegister } from '../../../../redux/monitoringSetting/ActionRegister';\r\nimport { scanAction } from '../../../../redux/monitoringSetting/ReducerScan';\r\nimport MonitoringMapTable from '../../../common/MonitoringMapTable';\r\nimport PortScanModalItem from './PortScanModalItem';\r\n\r\nconst PortScanModalTable = ({ handlePortState }) => {\r\n const { hostId } = useSelector((state) => state.ReducerMonitoringSetting.portData.data);\r\n const { data, loading, error } = useSelector((state) => state.ReducerScan.portScanData);\r\n const { registerLoading } = useSelector((state) => state.ReducerRegister);\r\n const [checkItems, setCheckItems] = useState([]);\r\n const [height, setHeight] = useState(0);\r\n const refTableHeight = useRef(null);\r\n\r\n const ref = useRef();\r\n\r\n const dispatch = useDispatch();\r\n const { t } = useTranslation('Lang');\r\n const handlePortScan = (e) => {\r\n e.preventDefault();\r\n setHeight(refTableHeight.current.clientHeight);\r\n if (loading) return alert(t('스캔중'));\r\n dispatch(scanAction.getPortScan(hostId));\r\n };\r\n\r\n const handleSinglePortScan = (e) => {\r\n e.preventDefault();\r\n if (ref.current.value.length === 0) return alert(t('스캔할포트를입력해주세요'));\r\n setHeight(refTableHeight.current.clientHeight);\r\n dispatch(scanAction.getSinglePortScan({ hostId: hostId, port: ref.current.value }));\r\n };\r\n\r\n const handleSingleCheck = (checked, id) => {\r\n if (checked) {\r\n setCheckItems([...checkItems, id]);\r\n } else {\r\n // 체크 해제\r\n setCheckItems(checkItems.filter((el) => el !== id));\r\n }\r\n };\r\n\r\n const handleAllCheck = (checked) => {\r\n if (checked) {\r\n const idArray = [];\r\n // 전체 체크 박스가 체크 되면 id를 가진 모든 elements를 배열에 넣어주어서,\r\n // 전체 체크 박스 체크\r\n if (data != null) {\r\n data.forEach((el) => !el.checkBox && idArray.push(el.name));\r\n setCheckItems(idArray);\r\n }\r\n }\r\n\r\n // 반대의 경우 전체 체크 박스 체크 삭제\r\n else {\r\n setCheckItems([]);\r\n }\r\n };\r\n\r\n const handleRegister = (e) => {\r\n e.preventDefault();\r\n if (checkItems.length === 0) {\r\n return alert(t('등록할포트를하나이상선택해주세요'));\r\n }\r\n dispatch(getPortRegister(hostId, checkItems, t));\r\n };\r\n return (\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n

    {t('모니터링포트스캔')}

    \r\n
    \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n \r\n }\r\n \r\n
    \r\n handleAllCheck(e.target.checked)} />\r\n {t('포트')}{t('등록여부')}
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default PortScanModalTable;\r\n","import React from 'react';\r\n\r\nconst ResourceScanModalItem = ({ data, handleSingleCheck, checkItems }) => (\r\n \r\n \r\n handleSingleCheck(e.target.checked, data.name)}\r\n />\r\n \r\n {data.name}\r\n {data.registered}\r\n \r\n);\r\n\r\nexport default ResourceScanModalItem;\r\n","import React from 'react';\r\nimport LoadingSpninner from '../../../dataState/LoadingSpninner';\r\nimport TableNoData from '../../../dataState/TableNoData';\r\nimport ErrorHandler from '../../../error/ErrorHandler';\r\nimport ResourceScanModalItem from './ResourceScanModalItem';\r\n\r\nconst ResourceScanModal = ({ data, loading, t, error, hostId, handleSingleCheck, checkItems, registerLoading, height }) => {\r\n const loadingHeight = height && (height - 100) / 2;\r\n if (loading && (!data || !data.scanModels))\r\n return (\r\n \r\n \r\n \r\n {t('로딩중')}\r\n \r\n \r\n ); // 로딩중이고 데이터 없을때만\r\n\r\n if (error) {\r\n return (\r\n \r\n {}\r\n \r\n );\r\n }\r\n if (!data || !data.scanModels) return ;\r\n return (\r\n <>\r\n {(loading || registerLoading) && }\r\n {data.scanModels.map((data) => (\r\n \r\n ))}\r\n \r\n );\r\n};\r\nexport default ResourceScanModal;\r\n","import React, { useRef, useState } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { getResourceRegister } from '../../../../redux/monitoringSetting/ActionRegister';\r\nimport { scanAction } from '../../../../redux/monitoringSetting/ReducerScan';\r\nimport ResourceScanModal from './ResourceScanModal';\r\n\r\nconst ResourceScanModalTable = ({ handleResourceState }) => {\r\n const { hostId } = useSelector((state) => state.ReducerMonitoringSetting.resourceData.data);\r\n const { data, loading, error } = useSelector((state) => state.ReducerScan.resourceScanData);\r\n const [checkItems, setCheckItems] = useState([]);\r\n const dispatch = useDispatch();\r\n const { t } = useTranslation('Lang');\r\n const [height, setHeight] = useState(0);\r\n const refTableHeight = useRef(null);\r\n\r\n const handleResourceScan = (e) => {\r\n e.preventDefault();\r\n setHeight(refTableHeight.current.clientHeight);\r\n if (loading) return alert(t('스캔중'));\r\n dispatch(scanAction.getResourceScan(hostId));\r\n };\r\n\r\n const handleSingleCheck = (checked, id) => {\r\n if (checked) {\r\n setCheckItems([...checkItems, id]);\r\n } else {\r\n // 체크 해제\r\n setCheckItems(checkItems.filter((el) => el !== id));\r\n }\r\n };\r\n\r\n const handleAllCheck = (checked) => {\r\n if (checked) {\r\n const idArray = [];\r\n // 전체 체크 박스가 체크 되면 id를 가진 모든 elements를 배열에 넣어주어서,\r\n // 전체 체크 박스 체크\r\n if (data != null) {\r\n data.scanModels.forEach((el) => !el.checkBox && idArray.push(el.name));\r\n setCheckItems(idArray);\r\n }\r\n }\r\n\r\n // 반대의 경우 전체 체크 박스 체크 삭제\r\n else {\r\n setCheckItems([]);\r\n }\r\n };\r\n\r\n const handleRegister = (e) => {\r\n e.preventDefault();\r\n if (checkItems.length === 0) {\r\n return alert(t('등록할리소스를하나이상선택해주세요'));\r\n }\r\n dispatch(getResourceRegister(hostId, checkItems, data.osType));\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n

    \r\n {t('모니터링')}\r\n {t('리소스스캔')}\r\n

    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n \r\n }\r\n \r\n
    \r\n handleAllCheck(e.target.checked)} />\r\n {t('대상')}{t('등록여부')}
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default ResourceScanModalTable;\r\n","import React, { useRef } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { WebRegister } from '../../../../redux/monitoringSetting/ActionRegister';\r\nimport LoadingSpninner from '../../../dataState/LoadingSpninner';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { scanAction } from '../../../../redux/monitoringSetting/ReducerScan';\r\n\r\nconst WebScanModalTable = ({ handleWebState }) => {\r\n const { host } = useSelector((state) => state.ReducerModalState);\r\n const { data, loading, error } = useSelector((state) => state.ReducerScan.webScanData);\r\n const ref = useRef();\r\n const checkValue = useRef();\r\n const dispatch = useDispatch();\r\n const { t } = useTranslation('Lang');\r\n const webScan = (e) => {\r\n e.preventDefault();\r\n const reg = /(http(s)?:\\/\\/)([a-z0-9\\w]+\\.*)+[a-z0-9]{2,4}/gi;\r\n const regIp =\r\n /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;\r\n if (ref.current.value.length === 0) return alert(t('스캔할url를입력해주세요'));\r\n\r\n if (!reg.test(ref.current.value) && !regIp.test(ref.current.value)) {\r\n return alert(t('url이정확하지않습니다'));\r\n }\r\n if (loading) return alert(t('스캔중'));\r\n dispatch(scanAction.getWebScan({ host, value: ref.current.value, t }));\r\n };\r\n const handleWebRegister = (e) => {\r\n e.preventDefault();\r\n if (!data) {\r\n return alert(t('URL입력후스캔이필요합니다'));\r\n }\r\n if (checkValue.current.value.length === 0 || checkValue.current.value.length > 20) {\r\n return alert(t('체크값이없거나20자를초과했습니다'));\r\n }\r\n dispatch(WebRegister(host, ref.current.value, checkValue.current.value, t));\r\n };\r\n return (\r\n <>\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n {loading && }\r\n

    {t('모니터링')} URL

    \r\n
    \r\n

    1. {t('모니터링URL입력')}

    \r\n \r\n \r\n
    \r\n
    \r\n

    \r\n 2. {t('컨텐츠확인')}\r\n ※ {t('컨텐츠확인문구')}\r\n

    \r\n \r\n
    \r\n
    \r\n

    \r\n 3. {t('체크값입력')}\r\n ※ {t('체크값입력문구')}\r\n

    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n );\r\n};\r\n\r\nexport default WebScanModalTable;\r\n","import React, { useEffect, useState } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\n\r\nconst TrafficModal = ({ handleTrafficModal }) => {\r\n return (\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n

    트래픽 요금산정 기준 상세안내

    \r\n
    \r\n

    트래픽 과금 대상

    \r\n

    - IDC 서버에서 외부로 데이터를 내보내는 트래픽(out)만 과금대상입니다.

    \r\n

    - IDC 외부에서 서버 쪽으로 들어오는 트래픽(in)은 과금대상에 포함되지 않습니다.

    \r\n
    \r\n
    과금기준
    \r\n

    트래픽 종략제, 대역종량제 중 기준치를 초과한 트래픽만 과금대상이며, 두 종량제 중 낮은 초과금액으로 청구됩니다.

    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    대역종량제트래픽종량제
    기본제공10Mbps1,000Gbyte
    초과트래픽 비용1Mbps당 10,000원1Gbyte당 100원
    과금방식(대역평균-기본제공) * 10,000원총 사용량 - 1,000Gbytes
    특이사항일간 최상위 대역 5개 중 상위 2일 제외 후 평균out 트래픽 총 합
    \r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default TrafficModal;\r\n","import React, { useState, useEffect } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport {\r\n getWorkData,\r\n setWorkData,\r\n getWorkDetailData,\r\n} from '../../redux/supportcenter/ActionSupportCenter';\r\nimport { onlyDaydateFormat, nowDateFormat, dateFormat, endDateFormat } from '../date/dateFormat';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nconst WorkModal = ({ handleWorkModal }) => {\r\n const dispatch = useDispatch();\r\n const { t } = useTranslation('Lang');\r\n const { workDetailLoading, workDetailData, workDetailError, workModal, workIdx } = useSelector((state) => state.ReducerSupportCenter);\r\n\r\n useEffect(() => {\r\n workIdx && dispatch(getWorkDetailData(workIdx));\r\n }, [dispatch]);\r\n\r\n const workConfirm = (event, id) => {\r\n event.preventDefault();\r\n if (window.confirm(t('승인하시겠습니까'))) {\r\n dispatch(setWorkData(id, workConfirmResult, workErrorResult));\r\n handleWorkModal();\r\n }\r\n };\r\n\r\n const workConfirmResult = () => {\r\n alert(t('승인완료했습니다'));\r\n dispatch(getWorkData(1, 20));\r\n };\r\n\r\n const workErrorResult = () => {\r\n alert(t('API오류입니다다시시도해주세요'));\r\n dispatch(getWorkData(1, 20));\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n

    {t('시스템작업의뢰서')}

    \r\n
    \r\n
    \r\n

    {t('작업의뢰인')}

    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    {t('성명')}\r\n \r\n {t('이메일')}\r\n \r\n
    {t('전화번호')}\r\n \r\n {t('핸드폰번호')}\r\n \r\n
    \r\n
    \r\n
    \r\n

    {t('작업의뢰정보')}

    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    {t('작업서버IP')}{workDetailData && workDetailData.data.ipAddress}{t('작업일시')}{workDetailData && dateFormat(workDetailData.data.workingDate)}
    {t('담당자')}{workDetailData && workDetailData.data.workEngineerName}{t('작업비용VAT포함')}{workDetailData && workDetailData.data.workCost}
    {t('작업세부사항')}{workDetailData && workDetailData.data.workSpec}
    \r\n
    \r\n
    \r\n

    {t('안내사항')}

    \r\n

    {t('작업의뢰서폼1번')}

    \r\n

    {t('작업의뢰서폼2번')}

    \r\n

    {t('작업의뢰서폼3번')}

    \r\n

    {t('작업의뢰서폼4번')}

    \r\n

    {t('작업의뢰서폼5번')}

    \r\n
    \r\n {workDetailData && \r\n !workDetailData.data.isAppApplication &&\r\n
    \r\n
    \r\n {\r\n workConfirm(e, workDetailData && workDetailData.data.wrIdx);\r\n }}\r\n >\r\n {t('작업승인하기')}\r\n \r\n
    \r\n
    \r\n }\r\n
    \r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default WorkModal;\r\n","export default __webpack_public_path__ + \"static/media/monitoring-set-port01.949ef039.jpg\";","export default __webpack_public_path__ + \"static/media/monitoring-set-port02.e71b6584.jpg\";","export default __webpack_public_path__ + \"static/media/monitoring-set-port03.47887c0f.jpg\";","export default __webpack_public_path__ + \"static/media/monitoring-set-port05.681a2dfa.jpg\";","export default __webpack_public_path__ + \"static/media/monitoring-set-port06.d8654fcb.jpg\";","export default __webpack_public_path__ + \"static/media/monitoring-set-port07.bc400c6e.jpg\";","export default __webpack_public_path__ + \"static/media/redhat_1.28f4691b.jpg\";","export default __webpack_public_path__ + \"static/media/redhat_3.bb15a0ff.jpg\";","export default __webpack_public_path__ + \"static/media/redhat_4.fe8b8009.jpg\";","export default __webpack_public_path__ + \"static/media/windows_1.43b1f739.jpg\";","export default __webpack_public_path__ + \"static/media/windows_2.c4d8b965.jpg\";","export default __webpack_public_path__ + \"static/media/windows_2-1.5b7b82be.jpg\";","export default __webpack_public_path__ + \"static/media/windows_3.6f81c0f2.jpg\";","export default __webpack_public_path__ + \"static/media/windows_4.23320de5.jpg\";","export default __webpack_public_path__ + \"static/media/monitoring-set-web01.1dcbde26.jpg\";","export default __webpack_public_path__ + \"static/media/monitoring-set-web02.6d286e85.jpg\";","export default __webpack_public_path__ + \"static/media/monitoring-set-web04.4a40c1e5.jpg\";","export default __webpack_public_path__ + \"static/media/monitoring-set-web05.b2b3b435.jpg\";","export default __webpack_public_path__ + \"static/media/monitoring-set-web06.1dbff3c6.jpg\";","export default __webpack_public_path__ + \"static/media/monitoring-set-web07.f4ce87f9.jpg\";","export default __webpack_public_path__ + \"static/media/monitoring-set-nms01.ef15fc1b.jpg\";","export default __webpack_public_path__ + \"static/media/monitoring-set-nms02.37ee4879.jpg\";","export default __webpack_public_path__ + \"static/media/monitoring-set-nms03.d58157e8.jpg\";","export default __webpack_public_path__ + \"static/media/monitoring-set-nms04.aec13270.jpg\";","export default __webpack_public_path__ + \"static/media/monitoring-set-nms05.eafcf8eb.jpg\";","export default __webpack_public_path__ + \"static/media/monitoring-set-nms06.de22fb4e.jpg\";","import React, { useState } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport port1 from '../img/port/monitoring-set-port01.jpg';\r\nimport port2 from '../img/port/monitoring-set-port02.jpg';\r\nimport port3 from '../img/port/monitoring-set-port03.jpg';\r\nimport port4 from '../img/port/monitoring-set-port05.jpg';\r\nimport port5 from '../img/port/monitoring-set-port06.jpg';\r\nimport port6 from '../img/port/monitoring-set-port07.jpg';\r\nimport cent1 from '../img/agent/redhat_1.jpg';\r\nimport cent2 from '../img/agent/redhat_2.jpg';\r\nimport cent3 from '../img/agent/redhat_3.jpg';\r\nimport cent4 from '../img/agent/redhat_4.jpg';\r\nimport windows1 from '../img/agent/windows_1.jpg';\r\nimport windows2 from '../img/agent/windows_2.jpg';\r\nimport windows3 from '../img/agent/windows_2-1.jpg';\r\nimport windows4 from '../img/agent/windows_3.jpg';\r\nimport windows5 from '../img/agent/windows_4.jpg';\r\nimport web1 from '../img/web/monitoring-set-web01.jpg';\r\nimport web2 from '../img/web/monitoring-set-web02.jpg';\r\nimport web4 from '../img/web/monitoring-set-web04.jpg';\r\nimport web5 from '../img/web/monitoring-set-web05.jpg';\r\nimport web6 from '../img/web/monitoring-set-web06.jpg';\r\nimport web7 from '../img/web/monitoring-set-web07.jpg';\r\nimport nms1 from '../img/nms/monitoring-set-nms01.jpg';\r\nimport nms2 from '../img/nms/monitoring-set-nms02.jpg';\r\nimport nms3 from '../img/nms/monitoring-set-nms03.jpg';\r\nimport nms4 from '../img/nms/monitoring-set-nms04.jpg';\r\nimport nms5 from '../img/nms/monitoring-set-nms05.jpg';\r\nimport nms6 from '../img/nms/monitoring-set-nms06.jpg';\r\nimport CopyToClipboard from 'react-copy-to-clipboard';\r\n\r\nconst MonitoringSetHowModal = ({ handleMonitoringSetHowModal }) => {\r\n const [tabState, setTabState] = useState(1);\r\n const { t } = useTranslation('Lang');\r\n const handleTabState = (idx) => {\r\n setTabState(idx);\r\n };\r\n return (\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n

    모니터링 설정방법

    \r\n
      \r\n
    • handleTabState(1)}>\r\n {t('포트')}\r\n
    • \r\n
    • handleTabState(2)}>\r\n {t('웹')}\r\n
    • \r\n {/*
    • = 3 && tabState <= 6 ? 'on' : ''}`}>{t('리소스')}
    • \r\n
    • {t('Agent 설정')}
    • */}\r\n
    • handleTabState(3)}>\r\n {t('centOS / redhat')}\r\n
    • \r\n {/*
    • handleTabState(4)}>\r\n {t('debian / ubuntu')}\r\n
    • */}\r\n
    • handleTabState(5)}>\r\n {t('windows')}\r\n
    • \r\n
    • handleTabState(6)}>\r\n {t('NMS 설정')}\r\n
    • \r\n
    • handleTabState(7)}>\r\n {t('FAQ')}\r\n
    • \r\n
    \r\n
    \r\n
    \r\n {tabState === 1 && (\r\n
    \r\n

    포트 모니터링 설정 방법

    \r\n \"포트설정\r\n

    1. NMS 홈페이지 좌측 메뉴의 모니터링 → 모니터링 설정 페이지로 이동합니다.

    \r\n
    \r\n \"포트설정\r\n

    2.  서버 리스트에서 설정할 IP를 선택 후 [포트추가] 버튼을 클릭합니다.

    \r\n
    \r\n \"포트설정\r\n

    \r\n 3. 포트 설정 옆에있는 [스캔] 버튼을 눌러 모든 포트를 스캔 합니다. 10초가량 소요됩니다.\r\n
    \r\n (스캔되지 않거나 TimeOut 에러가 발생한다면, 서버 내,외부 방화벽에서 차단당했을 수 있습니다.)\r\n

    \r\n
    \r\n \"포트설정\r\n

    4. 포트스캔이 완료되면 모니터링에 등록할 포트만 체크 후 [저장] 버튼을 눌러 등록 합니다.

    \r\n
    \r\n \"포트설정\r\n

    5. 등록성공 이라는 팝업이 뜨면 정상적으로 등록된 것 입니다.

    \r\n
    \r\n \"포트설정\r\n

    6. 모니터링 설정으로 돌아가 모니터링이 잘 등록되었는지 확인합니다.

    \r\n
    \r\n
    \r\n )}\r\n {tabState === 2 && (\r\n
    \r\n

    Web 모니터링 설정 방법

    \r\n \"Web\r\n

    1. NMS 홈페이지 좌측 메뉴의 모니터링 -{'>'} 모니터링 설정 페이지로 이동합니다.'

    \r\n
    \r\n \"Web\r\n

    2.  서버 리스트에서 설정할 IP를 선택합니다.

    \r\n
    \r\n \"Web\r\n

    3.  해당 페이지가 나오면, WEB 설정 옆 [추가]버튼을 클릭합니다.

    \r\n
    \r\n \"Web\r\n

    \r\n 4. 모달창의 모니터링 URL 입력 부분에 모니터링을 할 URL을 입력 후 오른쪽 [스캔]버튼을 클릭합니다.\r\n
    ※ 주의사항 : URL에 입력한 도메인과 해당 서버의 IP가 상이하면 등록되지 않습니다.\r\n

    \r\n
    \r\n \"Web\r\n

    \r\n 5. 스캔 시  컨텐츠 확인에  나타난 소스중 일부를 복사하여 체크값 입력에 붙여넣고 [저장]버튼을 클릭합니다.\r\n
    ※ 주의사항 : 해당 페이지의 소스값이 변경되면 모니터링을 다시 등록해야 합니다.\r\n

    \r\n
    \r\n \"Web\r\n

    6. 웹 등록 성공이라는 팝업이 뜨시면 정상적으로 등록된 것 입니다.

    \r\n
    \r\n \"Web\r\n

    7. 좌측 메뉴 모니터링 -{'>'} 모니터링 설정으로 돌아가 WEB모니터링이 잘 등록되었는지 확인합니다.

    \r\n
    \r\n
    \r\n )}\r\n {tabState === 3 && (\r\n
    \r\n

    centOS / redhat

    \r\n

    CentOS 4버전 이하는 지원되지 않습니다.

    \r\n \"cent\r\n

    \r\n 1. Monitoring Repository RPM을 설치합니다.\r\n
    ({' '}\r\n alert(`${t('복사 되었습니다.')}`)}\r\n >\r\n \r\n {' '}\r\n : rpm -ivh http://repo.monitoring.or.kr/centos/repo/monitoring-repo-1.0.0-1.noarch.rpm )\r\n

    \r\n \"cent\r\n

    \r\n 2. Monitoring Agent를 Yum 을 이용하여 설치합니다.\r\n
    ({' '}\r\n alert(`${t('복사 되었습니다.')}`)}>\r\n \r\n {' '}\r\n : yum install monitoring-agent -y )\r\n

    \r\n \"cent\r\n

    \r\n 3. 설치가 완료되면 아래의 명령어로 monitoring-agent를 실행합니다.\r\n
    ({' '}\r\n alert(`${t('복사 되었습니다.')}`)}>\r\n \r\n {' '}\r\n : /etc/init.d/monitoring-agent start )\r\n

    \r\n \"cent\r\n

    \r\n 4. ps 명령어로 정상적으로 데몬이 실행중인지 확인합니다.\r\n
    ({' '}\r\n alert(`${t('복사 되었습니다.')}`)}>\r\n \r\n {' '}\r\n : ps -ef | grep monitoring )\r\n

    \r\n

    설치가 완료되었다면, NMS 설정을 확인하여 모니터링에 추가하시면 됩니다.

    \r\n
    \r\n )}\r\n {tabState === 4 && (\r\n
    \r\n

    debian / ubuntu

    \r\n

    서비스 준비 중입니다.

    \r\n
    \r\n )}\r\n {tabState === 5 && (\r\n
    \r\n

    Windows

    \r\n

    \r\n Windows Monitoring Agent 설치 방법\r\n
    \r\n \r\n Monitorning_Agent.zip\r\n \r\n

    \r\n \"windows\"\r\n

    1. 다운받은 설치파일(ZIP)을 서버에 옮겨 압축을 해제합니다.

    \r\n \"windows\"\r\n

    2. 해제한 폴더 내 setup.bat 파일을 실행하면 DOS창에서 자동으로 설치가 완료됩니다.

    \r\n \"windows\"\r\n \"windows\"\r\n

    3. 설치후 C드라이브 내  Monitoring 폴더와 폴더 내  Agent 파일이 존재하는지 확인합니다.

    \r\n \"windows\"\r\n

    4. Monitoring_Agent가 윈도우 서비스에 정상적으로 등록되었는지 확인합니다.

    \r\n

    설치가 완료되었다면, NMS 설정을 확인하여 모니터링에 추가하시면 됩니다.

    \r\n
    \r\n )}\r\n {tabState === 6 && (\r\n
    \r\n

    NMS 설정

    \r\n \"포트설정\r\n

    1. NMS 홈페이지 좌측 메뉴의 모니터링 → 모니터링 설정 페이지로 이동합니다.

    \r\n \"포트설정\r\n

    2.  서버 리스트에서 설정할 IP를 선택 후 [Agent 추가] 버튼을 클릭합니다.

    \r\n \"포트설정\r\n

    \r\n 3.모니터링 리소스 스캔 옆 [리소스 스캔] 버튼을 클릭하여 스캔합니다.\r\n
    \r\n ※ 주의사항 : TimeOut Error 혹은 Agent 미지원서버입니다 에러 발생시 아래 조치방법을 확인하세요.\r\n
    \r\n ※ 주의사항 : 방화벽상에서 10050포트에 대한 정책이 없으면, 정상적으로 스캔이 되지 않습니다.\r\n
    \r\n

    \r\n \"포트설정\r\n

    \r\n 4. 스캔이 완료되면 등록할 서비스를 선택 후 [저장] 버튼을 클릭합니다.\r\n
    ( Disk 를 선택하실경우 등록하는데 시간이 30초가량 소요됩니다.)\r\n

    \r\n \"포트설정\r\n

    5. 등록성공 이라는 팝업이 뜨면 정상적으로 등록된 것 입니다.

    \r\n \"포트설정\r\n

    6. 아래의 체크값 규칙을 확인하여 수동으로 체크값을 수정할 수 있습니다.

    \r\n \"포트설정\r\n

    7. 좌측 메뉴 모니터링 -{'>'} 모니터링 설정으로 돌아가 해당서버를 선택하여 정상적으로 등록되었는지 확인합니다.

    \r\n

    \r\n

    ※ Agent 스캔 시 에러발생원인과 해결방법은 아래와 같습니다.
    \r\n
    \r\n agent 미지원 서버 & Timeout Error\r\n
    \r\n 1. Agent가 설치되지 않았거나, 실행되지 않은 경우.\r\n
    \r\n 2. 서버 내부 방화벽 혹은 외부 방화벽에서 10050포트가 차단된경우.\r\n
    \r\n 두 가지 모두 정상적인 경우 기술지원팀으로 문의해주십시오. Tel) 02-6925-5044\r\n
    \r\n

    \r\n
    \r\n )}\r\n {tabState === 7 && (\r\n
    \r\n

    FAQ

    \r\n
    \r\n
    \r\n
      \r\n
    • 통합 모니터링 서비스란 어떤 서비스 입니까?
    • \r\n
    \r\n
    \r\n
    \r\n 통합 모니터링 서비스는 서버의 상태를 실시간으로 체크 하는 서비스이며,서버 및 홈페이지에 문제가 발생하면\r\n E-Mail & 유선전화 & SMS(별도) 등으로 고객님께 장애 통보를 해드리는 서비스입니다.또한, 웹페이지를 통해\r\n 프로그램 설치 없이 모니터링이 가능합니다.\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
      \r\n
    • 모니터링 등록의 서버 혹은 포트 갯수 제한이 있나요?
    • \r\n
    \r\n
    \r\n
    \r\n 호스팅 서비스를 이용중인 서버는 무료로 이용 가능하나, IDC 외부 서버는 별도 비용이 필요합니다.\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
      \r\n
    • 외부의 서버도 모니터링이 가능한가요?
    • \r\n
    \r\n
    \r\n
    \r\n 통합 모니터링 서비스는 서버의 상태를 실시간으로 체크 하는 서비스이며,서버 및 홈페이지에 문제가 발생하면\r\n E-Mail & 유선전화 & SMS(별도) 등으로 고객님께 장애 통보를 해드리는 서비스입니다.또한, 웹페이지를 통해\r\n 프로그램 설치 없이 모니터링이 가능합니다.\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
      \r\n
    • 포트 스캔시 서버에는 실행중인데 포트가 스캔 되지 않아요.
    • \r\n
    \r\n
    \r\n
    \r\n 서버 내/외부 방화벽에서 해당 포트에 대한 차단 정책이 있는지 확인해야합니다.방화벽에서 포트를 특정 IP외\r\n 접근이 불가한 상태라면 Monitoring 서버의 IP를 추가해야합니다.Monitoring Server IP 대역: 110.10.81.160/27\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
      \r\n
    • 포트, WEB 모니터링도 서버에 Agent를 설치해야하나요?
    • \r\n
    \r\n
    \r\n
    포트, WEB 모니터링은 서버에 추가적으로 Agent를 설치하지 않아도 됩니다.
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
      \r\n
    • Resource 모니터링은 어떻게 진행해야하나요?
    • \r\n
    \r\n
    \r\n
    \r\n 모니터링할 서버에 추가적인 Agent를 설치하고 모니터링을 등록해야합니다.설치방법은 대시보드 -{'>'} 설정방법 을\r\n 참고해 주시기 바랍니다.합 모니터링 서비스는 서버의 상태를 실시간으로 체크 하는 서비스이며,서버 및 홈페이지에\r\n 문제가 발생하면 E-Mail & 유선전화 & SMS(별도) 등으로 고객님께 장애 통보를 해드리는 서비스입니다.또한,\r\n 웹페이지를 통해 프로그램 설치 없이 모니터링이 가능합니다.\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
      \r\n
    • 모니터링 서버의 IP가 어떻게 되나요?
    • \r\n
    \r\n
    \r\n
    110.10.81.160/27 대역에서 모니터링 되고 있습니다.
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
      \r\n
    • 모니터링 다운시 SMS로 받고싶은데 어떻게 해야하나요?
    • \r\n
    \r\n
    \r\n
    SMS의 경우 별도 비용이 필요한 관계로 기술지원팀으로(02-6925-5044) 연락 주셔야 합니다.
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
      \r\n
    • 모니터링 에이전트 프로그램을 삭제하고싶어요.
    • \r\n
    \r\n
    \r\n
    \r\n 서버 OS환경에 따라 아래와 같이 진행 합니다.\r\n
    \r\n 1) Windows 서버   설치시 같이 있던 Uninstall.bat 파일을 실행 시키시면 삭제됩니다. 이미 Uninstall.bat 파일을\r\n 삭제했다면 아래의 파일을 다운받아 압축해제하시면 됩니다.\r\n
    \r\n → Uninstall.zip\r\n
    \r\n 2) Linux 서버   yum remove monitoring-agent\r\n
    위 명령어를 사용하여 모두 삭제됩니다.\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n )}\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default MonitoringSetHowModal;\r\n","export default \"data:image/jpeg;base64,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JBofh2XX59Js3CKsptZPE2ueItZP2mZXvJRdavdKs9xKtt5FqIbW3yYL25hhktI7qeK1nYG4t0mlSCbbjHmwq4ikK7QVLxllKqQwwKSvZRfVxT8rbky0cmtotuPotrfI9r1v4L6r4f0HU/FN3rNhJoFp4Y8IeIdN1KO1uhb6xP4ykeK10ixfYEOoWP2PVPtxkYKn9nyZ/wBcgb6A/YX8N+H/ABD4n8aR65oWj65HbaFZy2sWr6daajHDM2oxo0kEV5DLHDJsbazAZ25GcHFeK+O/ifY3nwX+GXwl0rXY9aj8P3us+JNcvIdMuNPEF7qbxJp2gvPd21rc6jFo0CzusoWW1jnvJvs00gZjXcfsi/FrwR8Ktf8AFV34z1KfTLXVtHtbOzeK1uL0NPFfJcMhS3QyQqqL945BIxk5xXx/iDh8yxPCXEuGymOKqZhLCSp4OOBm4Yico1ocnsnBqTla7XK3pd6bnwXilhc0xnh9xFhsjp4ypm1fLLYWngJSjjpV3VTSw86Kp1YStrbn5o9zR/bf0TRtD+Knhq00LSdM0Szl8AabPJa6VYWun2sly3iLxRCZ/s9nHFEJHggt4mcruYRgmvi/aT8vZen6fT0r6m/az+JfhD4nfETQtf8ABepNqOmWXgyw0m4nktri2YX8Wt+IL6VBDdAOuy31C2AZQqlwSqrXyvv28g5z2znGKvgChmGF4K4ew+bRrwzOlgeXEwxPMsRCrzzuq3P7/Pbdy1d7l+F2GzTBcA8K4XPIYmlm1DLaUMxhjOf60pqvNuFf2nvuqlbmcm29721IaKKK+tPugooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigD//Z\"","export default __webpack_public_path__ + \"static/media/dashboard.86b9a284.jpg\";","export default __webpack_public_path__ + \"static/media/monitoring01.b59b5721.jpg\";","export default __webpack_public_path__ + \"static/media/monitoring02.2cb9a337.jpg\";","export default __webpack_public_path__ + \"static/media/reporting.0aeb390f.jpg\";","export default __webpack_public_path__ + \"static/media/traffic01.1cb73d47.jpg\";","export default __webpack_public_path__ + \"static/media/traffic02.e9ab2de5.jpg\";","export default __webpack_public_path__ + \"static/media/traffic03.77a92316.jpg\";","export default __webpack_public_path__ + \"static/media/dns.24f03b6c.jpg\";","import React, { useState } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport dashboard from '../img/manual/dashboard.jpg';\r\nimport monitoring1 from '../img/manual/monitoring01.jpg';\r\nimport monitoring2 from '../img/manual/monitoring02.jpg';\r\nimport reporting from '../img/manual/reporting.jpg';\r\nimport traffic01 from '../img/manual/traffic01.jpg';\r\nimport traffic02 from '../img/manual/traffic02.jpg';\r\nimport traffic03 from '../img/manual/traffic03.jpg';\r\nimport dns from '../img/manual/dns.jpg';\r\nimport CopyToClipboard from 'react-copy-to-clipboard';\r\n\r\nconst HcManualModal = ({ handleHcManualModal }) => {\r\n const [tabState, setTabState] = useState(1);\r\n const { t } = useTranslation('Lang');\r\n const handleTabState = (idx) => {\r\n setTabState(idx);\r\n };\r\n return (\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n

    사용자 매뉴얼

    \r\n
      \r\n
    • handleTabState(1)}>\r\n {t('대시보드')}\r\n
    • \r\n
    • handleTabState(2)}>\r\n {t('모니터링')}\r\n
    • \r\n
    • handleTabState(3)}>\r\n {t('트래픽')}\r\n
    • \r\n
    • handleTabState(4)}>\r\n {t('리포팅')}\r\n
    • \r\n
    • handleTabState(5)}>\r\n {t('네임서버 관리')}\r\n
    • \r\n
    \r\n
    \r\n {tabState === 1 && (\r\n
    \r\n

    대시보드

    \r\n \"대시보드\r\n

    \r\n 서버트래픽을 최대 5개까지 합산하여 볼 수 있습니다.
    \r\n 트래픽의 단위를 변경할 수 있습니다.
    \r\n 현재 발생한 모니터링의 내역을 확인 할 수 있습니다.
    \r\n 과거 발생한 모든 모니터링의 내역을 확인 할 수 있습니다.
    \r\n 지원 문의 및 작업요청서를 작성할 수 있으며, 과거 문의 내역을 조회 할 수 있습니다.\r\n

    \r\n
    \r\n )}\r\n {tabState === 2 && (\r\n
    \r\n

    실시간 모니터링

    \r\n \"모니터링\r\n

    \r\n 리스트뷰와 카드뷰를 선택하여 보실 수 있습니다.(마지막으로 본 뷰타입으로 자동 적용되어 다음 로그인 시에도 적용됩니다.)
    \r\n 모니터링 상태별로 확인 할 수 있습니다.
    \r\n IP 또는 Tag 별로 검색하여 원하는 서버만 확인 할 수 있습니다.
    \r\n 상세 모니터링 내역을 확인 할 수 있습니다.\r\n

    \r\n

    모니터링 설정변경

    \r\n \"모니터링\r\n

    \r\n 전체 서버의 모니터링을 켜고 끌 수 있습니다.
    \r\n 모니터링 서버를 선택하고 검색할 수 있습니다.
    \r\n 선택된 서버의 모니터링을 일괄적으로 켜고 끌 수 있습니다.
    \r\n 선택된 서버의 Tag를 지정할 수 있습니다.
    \r\n 유형별로 모니터링을 설정할 수 있습니다.
    \r\n 개별적으로 모니터링의 상태를 변경할 수 있습니다.\r\n

    \r\n
    \r\n )}\r\n {tabState === 3 && (\r\n
    \r\n

    트래픽 상세 그래프

    \r\n \"traffic\r\n

    \r\n 서버간 트래픽을 비교할 수 있습니다.
    \r\n 트래픽을 조회할 서버를 선택하고 검색할 수 있습니다.
    \r\n 트래픽 조회 기간을 설정 할 수 있습니다.
    \r\n 트래픽 요금 산정을 볼 수 있습니다.
    \r\n 그래프 단위를 변경할 수 있습니다.
    \r\n 개별적으로 모니터링의 상태를 확인할 수 있습니다.\r\n

    \r\n

    일일 트래픽 현황

    \r\n \"traffic\r\n

    \r\n 종량제별 일일 트랙픽 현황을 확인할 수 있습니다.
    \r\n

    \r\n

    트래픽 요금 산정

    \r\n \"traffic\r\n

    \r\n 트래픽 추가 요금산정 기준을 확인할 수 있습니다.
    \r\n

    \r\n
    \r\n )}\r\n {tabState === 4 && (\r\n
    \r\n

    리포팅

    \r\n \"reporting\r\n

    \r\n 발행된 리포트를 다운로드 할 수 있습니다.\r\n

    \r\n
    \r\n )}\r\n {tabState === 5 && (\r\n
    \r\n

    DNS 레코드 설정

    \r\n \"DNS\r\n

    \r\n DNS를 설정 할 도메인을 선택 할 수 있습니다.
    \r\n 신규 도메인을 추가 할 수 있습니다.
    \r\n 선택한 도메인을 삭제 할 수 있습니다.
    \r\n DNS 레코드를 수정 할 수 있습니다.
    \r\n DNS 레코드를 추가 할 수 있습니다.
    \r\n

    \r\n
    \r\n )}\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default HcManualModal;\r\n","import React, { memo } from 'react';\r\nconst MonitoringMailSettingItem = memo(({ data, checkItems, handleSingleCheck, handleDeleteOnClick, handleModifyOnClick }) => {\r\n return (\r\n \r\n \r\n mm.hostID).includes(data.hostID) ? true : false}\r\n onChange={(e) =>\r\n handleSingleCheck(e.target.checked, {\r\n hostID: data.hostID,\r\n serverIdx: data.serverIdx,\r\n ipAddress: data.ipAddress,\r\n ip: data.ipAddress,\r\n })\r\n }\r\n >\r\n \r\n {data.ipAddress}\r\n
    {data.tag.length > 0 ? data.tag.slice(0, 3).map((m) => {m.tagName}) : ''}
    \r\n {data.alertAssignee.length > 0 ? data.alertAssignee[0].zaaName : ''}\r\n {data.alertAssignee.length > 0 ? data.alertAssignee[0].zaaEmail : ''}\r\n \r\n {data.alertAssignee.length > 0 ? (\r\n
    \r\n \r\n \r\n
    \r\n ) : (\r\n ''\r\n )}\r\n \r\n \r\n );\r\n});\r\n\r\nexport default MonitoringMailSettingItem;\r\n","import React, { useEffect, useState } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { action, listClear } from '../../../redux/monitoringMailSetting/ReducerMonitoringMailSetting';\r\n\r\nconst ManagerAddModal = ({ checkItems, postLoading, setCheckItems, handleReportingModalState }) => {\r\n const dispatch = useDispatch();\r\n const { t } = useTranslation('Lang');\r\n const [inputs, setInputs] = useState({\r\n data: [\r\n {\r\n name: '',\r\n email: '',\r\n },\r\n {\r\n name: '',\r\n email: '',\r\n },\r\n {\r\n name: '',\r\n email: '',\r\n },\r\n {\r\n name: '',\r\n email: '',\r\n },\r\n {\r\n name: '',\r\n email: '',\r\n },\r\n ],\r\n errors: [],\r\n });\r\n\r\n const onChange = (e, index) => {\r\n const { value, name } = e.target;\r\n\r\n setInputs((prev) => {\r\n const updatedData = [...prev.data];\r\n const updatedErrors = [...prev.errors];\r\n\r\n if (name === 'email') {\r\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\r\n\r\n if (!emailRegex.test(value) && value.trim() !== '') {\r\n updatedErrors[index] = '유효하지 않은 이메일 형식입니다.';\r\n } else {\r\n updatedErrors[index] = null;\r\n }\r\n }\r\n\r\n updatedData[index] = { ...updatedData[index], [name]: value };\r\n\r\n return { ...prev, data: updatedData, errors: updatedErrors };\r\n });\r\n };\r\n\r\n const handleSubmit = (e) => {\r\n e.preventDefault();\r\n\r\n if (postLoading) {\r\n return alert('이미 등록중입니다. 잠시만 기다려주세요.');\r\n }\r\n\r\n if (checkItems.length === 0) {\r\n return alert('선택된 서버가 없습니다. 서버를 선택 후 다시 시도해 주세요.');\r\n }\r\n\r\n if (inputs.errors.length > 0 && inputs.errors.some((item) => item !== null && item !== undefined && item !== 'empty')) {\r\n return alert('담당자의 항목에 잘못된 입력값이 있습니다.');\r\n }\r\n\r\n let postData = checkItems.map((m) => ({\r\n HostId: m.hostID.toString(),\r\n SuiIdx: m.serverIdx.toString(),\r\n AlertAssignees: inputs.data\r\n .filter((m) => m.name.trim() !== '' && m.email.trim() !== '')\r\n .map((mm) => ({ name: mm.name, email: mm.email })),\r\n }));\r\n\r\n dispatch(action.postAlertMail({ postData, setCheckItems, handleReportingModalState }));\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n

    담당자 등록

    \r\n
    \r\n

    선택한 HOST명

    \r\n {checkItems.map((m, idx) => (\r\n
    \r\n {m.ipAddress}\r\n
    \r\n ))}\r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {inputs.data.map((item, index) => (\r\n \r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n
    이름수신주소
    담당자\r\n onChange(e, index)}\r\n placeholder=\"이름을 입력하세요\"\r\n />\r\n \r\n onChange(e, index)}\r\n placeholder=\"이메일을 입력하세요\"\r\n />\r\n {inputs.errors[index] &&

    {inputs.errors[index]}

    }\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n {/*
    \r\n \r\n
    */}\r\n
    \r\n );\r\n};\r\n\r\nexport default ManagerAddModal;\r\n","import React, { useEffect, useState } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { action, listClear } from '../../../redux/monitoringMailSetting/ReducerMonitoringMailSetting';\r\n\r\nconst ManagerModiModal = ({ data, postLoading, handleReportingModiModalState }) => {\r\n const [showModal, setShowModal] = useState(0);\r\n const dispatch = useDispatch();\r\n const { t } = useTranslation('Lang');\r\n\r\n const [inputs, setInputs] = useState({\r\n data: [\r\n {\r\n zaaIdx: 0,\r\n name: '',\r\n email: '',\r\n },\r\n {\r\n zaaIdx: 0,\r\n name: '',\r\n email: '',\r\n },\r\n {\r\n zaaIdx: 0,\r\n name: '',\r\n email: '',\r\n },\r\n {\r\n zaaIdx: 0,\r\n name: '',\r\n email: '',\r\n },\r\n {\r\n zaaIdx: 0,\r\n name: '',\r\n email: '',\r\n },\r\n ],\r\n errors: [],\r\n });\r\n\r\n useEffect(() => {\r\n if (data.alertAssignee && data.alertAssignee.length > 0) {\r\n setInputs((prevInputs) => {\r\n const updatedData = prevInputs.data.map((item, index) => {\r\n if (data.alertAssignee[index]) {\r\n return {\r\n zaaIdx: data.alertAssignee[index].zaaIdx || 0,\r\n name: data.alertAssignee[index].zaaName || '',\r\n email: data.alertAssignee[index].zaaEmail || '',\r\n };\r\n }\r\n return item;\r\n });\r\n return { ...prevInputs, data: updatedData };\r\n });\r\n }\r\n }, [data.alertAssignee]);\r\n\r\n const onChange = (e, index) => {\r\n const { value, name } = e.target;\r\n\r\n setInputs((prev) => {\r\n const updatedData = [...prev.data];\r\n const updatedErrors = [...prev.errors];\r\n\r\n if (name === 'email') {\r\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\r\n if (!emailRegex.test(value) && value.trim() !== '') {\r\n updatedErrors[index] = '유효하지 않은 이메일 형식입니다.';\r\n } else {\r\n updatedErrors[index] = null;\r\n }\r\n }\r\n\r\n updatedData[index] = { ...updatedData[index], [name]: value };\r\n\r\n return { ...prev, data: updatedData, errors: updatedErrors };\r\n });\r\n };\r\n\r\n const handleSubmit = (e) => {\r\n e.preventDefault();\r\n if (postLoading) {\r\n return alert('이미 수정중입니다. 잠시만 기다려주세요.');\r\n }\r\n\r\n if (inputs.errors.length > 0 && inputs.errors.some((item) => item !== null && item !== undefined && item !== 'empty')) {\r\n return alert('담당자의 항목에 잘못된 입력값이 있습니다.');\r\n }\r\n\r\n let postData = [\r\n {\r\n HostId: data.hostID.toString(),\r\n SuiIdx: data.serverIdx.toString(),\r\n AlertAssignees: inputs.data\r\n .filter((m) => m.name.trim() !== '' && m.email.trim() !== '')\r\n .map((mm) => ({ zaaIdx: mm.zaaIdx, name: mm.name, email: mm.email })),\r\n },\r\n ];\r\n dispatch(action.putAlertMail({ postData, handleReportingModiModalState }));\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n

    담당자 수정

    \r\n
    \r\n

    선택한 HOST명

    \r\n
    \r\n {data.ipAddress}\r\n
    \r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {inputs.data.map((item, index) => (\r\n \r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n
    이름수신주소
    담당자\r\n onChange(e, index)}\r\n placeholder=\"이름을 입력하세요\"\r\n />\r\n \r\n onChange(e, index)}\r\n placeholder=\"이메일을 입력하세요\"\r\n />\r\n {inputs.errors[index] &&

    {inputs.errors[index]}

    }\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n {/*
    \r\n \r\n
    */}\r\n
    \r\n );\r\n};\r\n\r\nexport default ManagerModiModal;\r\n","import React, { useEffect, useRef, useState } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { action, listClear } from '../../redux/monitoringMailSetting/ReducerMonitoringMailSetting';\r\nimport BasicMapTable from '../common/BasicMapTable';\r\nimport MonitoringMailSettingItem from './MonitoringMailSettingItem';\r\nimport ManagerAddModal from '../modal/monitoringMailSetting/ManagerAddModal';\r\nimport ManagerModiModal from '../modal/monitoringMailSetting/ManagerModiModal';\r\n\r\nconst MonitoringMailSetting = (props) => {\r\n const { loading, data, error } = useSelector((state) => state.ReducerMonitoringMailSetting.mailList);\r\n const { totalCount, regCount, unRegCount } = useSelector((state) => state.ReducerMonitoringMailSetting.mailStateCount);\r\n const { postLoading } = useSelector((state) => state.ReducerMonitoringMailSetting.mailPost);\r\n const dispatch = useDispatch();\r\n const [isModalView, setIsModalView] = useState(false);\r\n const [isModiModalView, setIsModiModalView] = useState(false);\r\n const [checkItems, setCheckItems] = useState([]);\r\n const [selectStatus, setSelectStatus] = useState('');\r\n const { t } = useTranslation('Lang');\r\n const searchRef = useRef(null);\r\n const [modiSelectedData, setModiSelectedData] = useState(null);\r\n\r\n useEffect(() => {\r\n dispatch(action.getAlertMailList({ searchText: searchRef.current.value }));\r\n }, []);\r\n\r\n const handleAllCheck = (checked) => {\r\n if (checked) {\r\n const idArray = [];\r\n if (data.length !== 0) {\r\n data.map((m) => idArray.push({ hostID: m.hostID, serverIdx: m.serverIdx, ipAddress: m.ipAddress }));\r\n setCheckItems(idArray);\r\n }\r\n } else {\r\n setCheckItems([]);\r\n }\r\n };\r\n\r\n const handleSingleCheck = (checked, el) => {\r\n if (checked) {\r\n setCheckItems([...checkItems, el]);\r\n } else {\r\n setCheckItems(checkItems.filter((f) => f.hostID !== el.hostID));\r\n }\r\n };\r\n\r\n const handleSearch = (e) => {\r\n e.preventDefault();\r\n if (loading) {\r\n return alert(t('이미 검색중입니다. 잠시만기달려주세요'));\r\n }\r\n dispatch(action.getAlertMailList({ searchText: searchRef.current.value }));\r\n };\r\n\r\n const handleReportingModalState = () => {\r\n if (checkItems.length === 0) {\r\n return alert('선택된 서버가 없습니다.');\r\n }\r\n setIsModalView(!isModalView);\r\n };\r\n\r\n const handleReportingModiModalState = () => {\r\n setIsModiModalView(!isModiModalView);\r\n };\r\n\r\n const handleDeleteOnClick = (hostID) => {\r\n if (hostID === undefined) {\r\n return alert('선택된 서버가 없습니다.');\r\n }\r\n\r\n if (window.confirm('삭제하시겠습니까?')) {\r\n dispatch(action.deleteAlertMail([hostID]));\r\n }\r\n };\r\n\r\n const handleModifyOnClick = (data) => {\r\n setModiSelectedData(data);\r\n\r\n setIsModiModalView(!isModiModalView);\r\n };\r\n\r\n const handleSelectDelete = () => {\r\n if (checkItems.length === 0) {\r\n return alert('선택된 서버가 없습니다.');\r\n }\r\n\r\n dispatch(action.deleteAlertMail(checkItems.map((m) => m.hostID)));\r\n };\r\n\r\n const handleStatusSelect = (value) => {\r\n console.log(value);\r\n setSelectStatus(value);\r\n dispatch(action.getAlertMailList({ searchText: searchRef.current.value, selectStatus: value }));\r\n };\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n
      \r\n
    • handleStatusSelect('')}>\r\n \r\n {t('전체')}\r\n\r\n \r\n {totalCount}\r\n {t('개')}\r\n \r\n
    • \r\n
    • handleStatusSelect('등록')}>\r\n \r\n {t('지정')}\r\n \r\n {regCount}\r\n {t('개')}\r\n \r\n
    • \r\n
    • handleStatusSelect('미등록')}>\r\n \r\n {t('미지정')}\r\n \r\n {unRegCount}\r\n {t('개')}\r\n \r\n
    • \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n handleAllCheck(e.target.checked)}\r\n />\r\n host명tag대표 담당자명대표 메일 주소
    \r\n {isModalView && (\r\n \r\n )}\r\n {isModiModalView && (\r\n \r\n )}\r\n
    \r\n
    \r\n );\r\n};\r\n\r\nexport default MonitoringMailSetting;\r\n","import React, { memo, useEffect } from 'react';\r\nimport { Switch, Route, useLocation } from 'react-router-dom';\r\nimport DashBoard from './DashBoard';\r\nimport LiveMonitoring from './monitoring/LiveMonitoring';\r\nimport Reporting from './reporting/Reporting';\r\nimport Traffic from './traffic/Traffic';\r\nimport Notice from './Notice';\r\nimport Security from './Security';\r\nimport Footer from './Footer';\r\nimport MonitoringSetting from './monitoringSetting/MonitoringSetting';\r\nimport NameServerManaged from './nameserver/NameServerManaged';\r\nimport SecurityEvent from './securityEvent/SecurityEvent';\r\nimport Home from './home';\r\nimport PrivateRoute from '../utils/protectedRoute';\r\nimport SupportCenter from './supportcenter/SupportCenter';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport MonitoringModal from './modal/MonitoringModal';\r\nimport DomainModiModal from './modal/DomainModiModal';\r\nimport { recordModalDataClear } from '../redux/nameserver/ActionRecordSetting';\r\nimport PortScanModalTable from './modal/monitoringSetting/port/PortScanModalTable';\r\nimport { docModalState, portModalState, resourceModalState, webModalState } from '../redux/monitoringSetting/ActionModalState';\r\nimport ResourceScanModalTable from './modal/monitoringSetting/resource/ResourceScanModalTable';\r\nimport WebScanModalTable from './modal/monitoringSetting/web/WebScanModalTable';\r\nimport Page404 from './error/Page404';\r\nimport Page403 from './error/Page403';\r\nimport TrafficModal from './modal/TrafficModal';\r\nimport WorkModal from './modal/WorkModal';\r\nimport { trafficAccountModal } from '../redux/traffic/ActionTraffic';\r\nimport { workRequestModal } from '../redux/supportcenter/ActionSupportCenter';\r\nimport MonitoringSetHowModal from './modal/MonitoringSetHowModal';\r\nimport HcManualModal from './modal/HcManualModal';\r\nimport axios from 'axios';\r\nimport { portScanReset, resourceScanReset, webScanReset } from '../redux/monitoringSetting/ReducerScan';\r\nimport { useState } from 'react';\r\nimport MonitoringMailSettingList from './monitoringMailSetting/MonitoringMailSetting';\r\nconst MainContainer = memo(\r\n ({ style, handleSupportCenterShow, isPlaying, userMenual, setUserMenual, setTitle, setServiceInfo, serviceInfo, handleFullScreen }) => {\r\n const dispatch = useDispatch();\r\n const user = useSelector((state) => state.oidc.user);\r\n const { ModalData, ModalLoading /* ModalError*/ } = useSelector((state) => state.ReducerMonitoringModal);\r\n const { record, display } = useSelector((state) => state.ReducerRecordSetting);\r\n const { portState, resoureState, webState, docState } = useSelector((state) => state.ReducerModalState);\r\n const { accountModal } = useSelector((state) => state.ReducerTraffic);\r\n const { workModal } = useSelector((state) => state.ReducerSupportCenter);\r\n\r\n const loc = useLocation();\r\n\r\n useEffect(() => {\r\n setTitle(loc.pathname && HeaderFunc(loc.pathname));\r\n }, [loc.pathname]);\r\n\r\n useEffect(() => {\r\n document.title = HeaderFunc(loc.pathname);\r\n }, [loc.pathname]);\r\n\r\n const [canAccess, setCanAccess] = useState(false);\r\n\r\n useEffect(() => {\r\n if (user) {\r\n fetchData().then((result) => {\r\n setServiceInfo(result);\r\n setCanAccess(result);\r\n });\r\n }\r\n }, []);\r\n\r\n const fetchData = async () => {\r\n try {\r\n const response = await axios.get(process.env.REACT_APP_REQUEST_API_URL + 'customer/serviceInfo', {\r\n params: { value: 'Security' },\r\n });\r\n return response.data == '1';\r\n } catch (error) {\r\n return false;\r\n }\r\n };\r\n\r\n const handleModalModi = () => {\r\n dispatch(recordModalDataClear());\r\n };\r\n const handlePortState = () => {\r\n dispatch(portModalState(portState));\r\n dispatch(portScanReset());\r\n };\r\n\r\n const handleWebState = () => {\r\n dispatch(webModalState(webState));\r\n dispatch(webScanReset());\r\n };\r\n const handleResourceState = () => {\r\n dispatch(resourceModalState(resoureState));\r\n dispatch(resourceScanReset());\r\n };\r\n\r\n const handleTrafficModal = () => {\r\n dispatch(trafficAccountModal(accountModal));\r\n };\r\n\r\n const handleWorkModal = () => {\r\n dispatch(workRequestModal(workModal));\r\n };\r\n const handleDocModal = () => {\r\n dispatch(docModalState(docState));\r\n };\r\n\r\n const handleHcManualModal = () => {\r\n setUserMenual(!userMenual);\r\n };\r\n\r\n const HeaderFunc = (pathName) => {\r\n switch (pathName) {\r\n case '/':\r\n return '대시보드';\r\n case '/DashBoard':\r\n return '대시보드';\r\n case '/LiveMonitoring':\r\n return '실시간 모니터링';\r\n case '/MonitoringSetting':\r\n return '모니터링 설정변경';\r\n case '/MonitoringMailSetting':\r\n return '모니터링 메일설정';\r\n case '/Reporting':\r\n return '리포팅';\r\n case '/Traffic':\r\n return '트래픽';\r\n case '/NameServer':\r\n return '네임서버';\r\n case '/Notice':\r\n return '공지사항';\r\n case '/Security':\r\n return '보안뉴스';\r\n case '/SupportCenter':\r\n return '지원센터';\r\n case '/SecurityEvent':\r\n return '보안이벤트 (BETA)';\r\n default:\r\n return '대시보드';\r\n }\r\n };\r\n return (\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n } />\r\n \r\n } />\r\n \r\n \r\n \r\n
    {isPlaying && }
    \r\n
    \r\n {ModalData && }\r\n {display && }\r\n {portState && }\r\n {webState && }\r\n {resoureState && }\r\n {accountModal && }\r\n {workModal && }\r\n {docState && }\r\n {userMenual && }\r\n
    \r\n
    \r\n
    \r\n );\r\n /*\r\n \r\n \r\n case '/SecurityEvent':\r\n return '보안이벤트';\r\n */\r\n }\r\n);\r\nexport default MainContainer;\r\n","import './css/hcconsole.css';\r\nimport { useLocation } from 'react-router-dom';\r\nimport './css/style.css';\r\nimport React, { useState, useEffect } from 'react';\r\nimport Aside from './Aside';\r\nimport HeaderMenu from './HeaderMenu';\r\nimport MainContainer from './MainContainer';\r\nimport { useAnimate } from 'react-simple-animate';\r\nimport userManager from '../utils/userManager';\r\nimport { useSelector } from 'react-redux';\r\nimport axios from 'axios';\r\nimport { useFullScreenHandle } from 'react-full-screen';\r\nconst Layout = () => {\r\n const [userMenual, setUserMenual] = useState(false);\r\n const handle = useFullScreenHandle();\r\n const user = useSelector((state) => state.oidc.user);\r\n const isLoadingUser = useSelector((state) => state.oidc.isLoadingUser);\r\n const [title, setTitle] = useState('');\r\n const [menuOnOff, setMenuOnOff] = useState(true);\r\n const [serviceInfo, setServiceInfo] = useState(false);\r\n const [logOutChecked, setLogOutChecked] = useState(false);\r\n const [asideToggle, setAsideToggle] = useState(false);\r\n const { play, style, isPlaying } = useAnimate({\r\n start: { display: 'none', opacity: '0' },\r\n end: { display: 'block', opacity: '1' },\r\n });\r\n\r\n const handleSupportCenterShow = () => {\r\n play(!isPlaying);\r\n };\r\n\r\n const handleMeneClick = () => {\r\n setMenuOnOff(!menuOnOff);\r\n };\r\n\r\n const loc = useLocation();\r\n\r\n useEffect(() => {\r\n if (!logOutChecked && (!user || user.expired)) {\r\n signinRedirect();\r\n }\r\n }, [user]);\r\n\r\n const signinRedirect = () => {\r\n userManager\r\n .signinRedirect()\r\n .then(() => {\r\n if (window.name === '') {\r\n localStorage.setItem('pvUrl', window.location.pathname);\r\n }\r\n })\r\n .catch((error) => {\r\n console.error(error);\r\n });\r\n };\r\n\r\n if (isLoadingUser || !user || user.expired) {\r\n return
    ;\r\n }\r\n userManager.getUser().then((user) => {\r\n if (user && !user.expired) {\r\n axios.defaults.headers.common['Authorization'] = 'Bearer ' + user.access_token;\r\n }\r\n });\r\n\r\n const handleSideClick = () => {\r\n console.log(1)\r\n setAsideToggle(!asideToggle);\r\n }\r\n\r\n return (\r\n
    \r\n <>\r\n \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n );\r\n};\r\n\r\nexport default Layout;\r\n","export const Lang = {\r\n /*사이드 메뉴*/\r\n 대시보드: '대시보드',\r\n 모니터링: '모니터링',\r\n 실시간모니터링: '실시간 모니터링',\r\n 모니터링설정변경: '모니터링 설정변경',\r\n 리포팅: '리포팅',\r\n 트래픽: '트래픽',\r\n 네임서버관리: '네임서버 관리',\r\n 공지사항: '공지사항',\r\n 보안뉴스: '보안뉴스',\r\n 바로가기: '바로가기',\r\n '사용자 매뉴얼' : '사용자 매뉴얼',\r\n\r\n /*탑 메뉴*/\r\n 지원센터: '지원센터',\r\n 로그아웃: '로그아웃',\r\n 계정관리: '계정관리',\r\n 로그아웃하시겠습니까: '로그아웃 하시겠습니까?',\r\n 안녕하세요: '안녕하세요',\r\n 님: '님',\r\n\r\n /*대시보드*/\r\n 모니터링이슈: '모니터링이슈',\r\n 현재이슈: '현재이슈',\r\n 이슈: '이슈',\r\n 다운시간: '다운시간',\r\n 지속시간: '지속시간',\r\n 이벤트: '이벤트',\r\n 모든이슈: '모든이슈',\r\n 업시간상태: '업시간,상태',\r\n\r\n /*실시간 모니터링*/\r\n 리스트뷰: '리스트뷰',\r\n 카드뷰: '카드뷰',\r\n 정상: '정상',\r\n 비정상: '비정상',\r\n 전체: '전체',\r\n 미등록: '미등록',\r\n 개: '개',\r\n 검색: '검색',\r\n 상태: '상태',\r\n 호스트: '호스트',\r\n 확인: '확인',\r\n '이미 검색중입니다. 잠시만기달려주세요': '이미 검색중입니다. 잠시만기달려주세요',\r\n 모니터링서버없음: '모니터링 가능한 서버가 없습니다.',\r\n 관리자문의: '관리자에 문의하여주시기 바랍니다.',\r\n 로딩중: '로딩중',\r\n 데이터가없습니다: '데이터가 없습니다.',\r\n\r\n /*실시간 모니터링 모달*/\r\n '서비스 포트 체크': '서비스 포트 체크',\r\n 번호: '번호',\r\n 포트: '포트',\r\n 마지막체크시간: '마지막 체크시간',\r\n 웹: '웹',\r\n 도메인: '도메인',\r\n 리소스: '리소스',\r\n 체크: '체크',\r\n 체크값: '체크값',\r\n '리소스 체크': '리소스 체크',\r\n 기간설정: '기간설정',\r\n 그래프기간설정: '그래프 기간설정',\r\n '사용률 5분 평균': '사용률 5분 평균',\r\n '메모리 사용률': '메모리 사용률',\r\n '스토리지 사용률': '스토리지 사용률',\r\n 이슈이력: '이슈 이력',\r\n 서비스: '서비스',\r\n 년: '년',\r\n 개월: '개월',\r\n 시간: '시간',\r\n 분: '분',\r\n 초: '초',\r\n 일: '일',\r\n 이슈발생시각: '이슈발생시각',\r\n 이슈종료시각: '이슈종료시각',\r\n 모니터링셋팅바로가기: '모니터링 셋팅바로가기',\r\n\r\n /*모니터링 설정변경*/\r\n IP를선택하세요: 'IP를 선택하세요.',\r\n IP조회중: '사용중인 IP를 조회하고 있습니다.',\r\n IP없음: 'IP가 존재하지 않습니다.',\r\n 모든서버의모니터링을켜시겠습니까: '모든서버의 모니터링을 켜시겠습니까?',\r\n 모든서버의모니터링을끄시겠습니까: '모든서버의 모니터링을 끄시겠습니까?',\r\n '현재 모니터링이 Off상태입니다': '현재 모니터링이 Off상태입니다.',\r\n '상태를 변경하시려면 모니터링을 on상태로 변경해주시기 바랍니다': '상태를 변경하시려면 모니터링을 on상태로 변경해주시기 바랍니다.',\r\n 해당서버의모니터링을켜고끌수있습니다: '해당 서버의 모니터링을 켜고 끌 수 있습니다.',\r\n 전체서버의모니터링을켜고끌수있습니다: '전체 서버의 모니터링을 켜고 끌 수 있습니다.',\r\n 이미가동상태입니다: '이미 가동 상태 입니다.',\r\n 이미중지상태입니다: '이미 중지 상태입니다.',\r\n 중지되었습니다: '중지 되었습니다.',\r\n 가동되었습니다: '가동 되었습니다.',\r\n 삭제되었습니다: '삭제 되었습니다.',\r\n 변경될체크값을설정해주세요: '변경될 체크값을 설정해주세요.',\r\n 저장: '저장',\r\n 변경이력: '변경이력',\r\n 포트설정: '포트설정',\r\n 포트추가: '포트추가',\r\n 포트상태: '포트상태',\r\n 체크시간: '체크시간',\r\n 변경: '변경',\r\n 가동: '가동',\r\n 중지: '중지',\r\n 이름: '이름',\r\n 규칙: '규칙',\r\n 및: '및',\r\n 추가: '추가',\r\n 선택창: '선택, 검색 : IP',\r\n 변경되었습니다: '변경 되었습니다.',\r\n 태그를등록할서버를선택해주세요: '태그를 등록할 서버를 선택해주세요!',\r\n 태그를입력하지않았거나10자를초과하였습니다: '태그를 입력하지않았거나 1~10자를 초과하였습니다!',\r\n '모니터링 설정방법': '모니터링 설정방법',\r\n\r\n /*포트스캔 모달*/\r\n 모니터링포트스캔: '모니터링 포트 스캔',\r\n 포트스캔: '포트 스캔',\r\n 단일포트스캔: '단일 포트 스캔',\r\n 등록여부: '등록',\r\n 등록됨: '등록됨',\r\n 등록가능: '등록가능',\r\n 등록할포트를하나이상선택해주세요: '등록할 포트를 하나 이상 선택해 주세요!',\r\n 스캔할포트를입력해주세요: '스캔할 포트를 입력해주세요!',\r\n 스캔중: '이미 스캔 중입니다 잠시만 기다려주세요.\\n스캔은 최대 15초가 소요될 수 있습니다.',\r\n\r\n /*리소스스캔 모달*/\r\n 리소스스캔: '리소스 스캔',\r\n 대상: '대상',\r\n 등록할리소스를하나이상선택해주세요: '등록할 리소스를 하나 이상 선택해주세요!',\r\n\r\n /*웹스캔 모달*/\r\n 응답코드: '응답코드',\r\n 컨텐츠확인: '컨텐츠 확인',\r\n 컨텐츠확인문구: 'EUC-KR로 인코딩 된 웹 페이지는 한글이 체크되지 않습니다.',\r\n 체크값입력문구: '체크값의 글자 수는 20자 이하로 제한됩니다.',\r\n 체크값입력: '체크값 입력',\r\n 모니터링URL입력: '모니터링 URL 입력',\r\n 스캔하기: '스캔하기',\r\n 스캔할url를입력해주세요: '스캔할 url,ip를 입력해주세요',\r\n URL입력후스캔이필요합니다: 'URL,ip 입력후 스캔이 필요합니다.',\r\n url이정확하지않습니다: 'url이 정확하지 않습니다',\r\n 체크값이없거나20자를초과했습니다: '체크 값이 없거나 20자를 초과했습니다.',\r\n 스캔되었습니다: '스캔 되었습니다.',\r\n 등록되었습니다: '등록 되었습니다.',\r\n\r\n /*네임서버 관리*/\r\n 레코드: '레코드',\r\n 설정: '설정',\r\n 관리: '관리',\r\n 도메인추가: '도메인 추가',\r\n 첫번째네임서버: '1차 네임서버',\r\n 두번째네임서버: '2차 네임서버',\r\n 서브도메인: '서브도메인',\r\n 우선순위: '우선순위',\r\n 주소: '주소',\r\n IP주소레코드값: 'IP주소 / 레코드값',\r\n 상태설정: '상태설정',\r\n 레코드타입: '레코드타입',\r\n '주소(A)': '주소(A) : 도메인과 연결시킬 IP를 설정할 때 사용하는 레코드입니다.',\r\n MX레코드: 'MX레코드 : 도메인의 메일 연결 설정을 할 때 사용하는 레코드입니다.',\r\n 텍스트TXT: '텍스트(TXT) : 도메인의 텍스트 정보를 입력함으로 도메인의 정보 확인이 필요할 때 사용하는 레코드입니다.',\r\n 별칭CNAME: '별칭(CNAME) : 본 도메인의 또 다른 별칭으로 도메인을 지정할 수 있습니다.',\r\n 유의사항: '유의사항',\r\n 유의사항1: '주소(A)에는 IP 만 허용되며, 포트번호는 지원하지 않습니다.',\r\n 유의사항2: '별칭(CNAME)에는 도메인 및 서브도메인만 허용합니다.',\r\n 유의사항3: '동일한 서브도메인에 여러개의 항목을 설정할 경우 최근 지정한 TTL값으로 자동 조정됩니다.',\r\n URL복사: 'URL이 복사되었습니다.',\r\n IP복사: 'IP가 복사되었습니다',\r\n 삭제: '삭제',\r\n 수정: '수정',\r\n 필수값: '필수값',\r\n 숫자만: '숫자형식이 아닙니다.',\r\n 텍스트: '텍스트',\r\n 별칭: '별칭',\r\n 선택하세요: '선택하세요',\r\n 해당레코드타입은삭제할수없습니다: '해당 레코드 타입은 삭제할 수 없습니다.',\r\n ip형식이아닙니다: 'ip 형식이 아닙니다.',\r\n 해당레코드타입은수정할수없습니다: '해당레코드타입은수정할수없습니다',\r\n '도메인을 삭제 하시겠습니까': '도메인을 삭제 하시겠습니까?',\r\n 타입: '타입',\r\n 순위: '순위',\r\n 도메인삭제: '도메인삭제',\r\n '레코드를 삭제하시겠습니까': '레코드를 삭제하시겠습니까?',\r\n\r\n /*도메인 추가 모달*/\r\n 사이트입력: '사이트 입력',\r\n 본인소유의도메인주소를입력해주세요: '본인 소유의 도메인 주소를 입력해주세요.',\r\n 도메인형식이아닙니다: '도메인 형식이 아닙니다!',\r\n 버튼비활성화시기술문의: '버튼 비활성화 시 기술문의 (02-6925-5044) \\n또는 지원센터에서 요청 부탁드립니다',\r\n 필수값을모두입력해주세요: '필수값을 모두 입력해주세요!',\r\n 도메인을먼저선택해주세요: '도메인을 먼저 선택해주세요.',\r\n\r\n /*레코드 삭제 모달*/\r\n '도메인 삭제': '도메인 삭제',\r\n '도메인 주소를 다시 한번 입력하여 주세요': '도메인 주소를 다시 한번 입력하여 주세요.',\r\n '삭제 된 도메인은 레코드 정보는 확인 불가합니다': '삭제 된 도메인은 레코드 정보는 확인 불가합니다.',\r\n '삭제할 도메인을 입력하지 않았습니다': '삭제할 도메인을 입력하지 않았습니다.',\r\n '삭제할 도메인과 일치하지 않습니다': '삭제할 도메인과 일치하지 않습니다.',\r\n '도메인을 정말 삭제하시겠습니까':'도메인을 정말 삭제하시겠습니까?',\r\n /*레코드 수정 모달*/\r\n 수정되었습니다: '수정되었습니다.',\r\n\r\n /*에러 알림*/\r\n 데이터를가져오는중문제가발생했습니다: '데이터를 가져오는중 문제가 발생했습니다.',\r\n 잘못된요청으로문제가발생했습니다: '잘못된 요청으로 문제가 발생했습니다.',\r\n 로그인정보가만료되었습니다다시로그인해주세요: '로그인 정보가 만료되었습니다. 다시로그인 해주세요.',\r\n\r\n /*트래픽*/\r\n 트래픽비교: '트래픽 비교',\r\n 트래픽확인: '트래픽 확인',\r\n 트래픽요금산정: '트래픽 요금 산정',\r\n 트래픽상세: '트래픽 상세',\r\n 데이터: '데이터',\r\n 대역종량제: '대역종량제',\r\n 트래픽종량제: '트래픽종량제',\r\n 날짜: '날짜',\r\n IN최대값: 'IN 최대값',\r\n IN최대시간: 'IN 최대시간',\r\n OUT최대값: 'OUT 최대값',\r\n OUT최대시간: 'OUT 최대시간',\r\n IN총트래픽: 'IN 총 트래픽',\r\n OUT총트래픽: 'OUT 총 트래픽',\r\n 기간별트래픽송신합계: '기간별 트래픽 송신 합계',\r\n 기간별대역폭송신Top5: '기간별 대역폭 송신 Top5',\r\n 사용량: '사용량',\r\n 트래픽요금산정평균값: '트래픽 요금 산정 평균값',\r\n 트래픽요금기준안내: '트래픽 요금기준 안내',\r\n 트래픽현황: '트래픽 현황',\r\n 적용: '적용',\r\n IP주소5개까지조회가능합니다: 'IP 주소 5개까지 조회 가능합니다.',\r\n 사용중인아이피가없습니다: '사용중인 아이피가 없습니다.',\r\n 날짜선택: '날짜선택',\r\n /*지원센터*/\r\n 기술문의: '기술문의',\r\n 서버운영에필요한기술에대한문의를시도하세요: '서버 운영에 필요한 기술에 대한 문의를 시도하세요.',\r\n 결제지출증빙문의: '결제/지출증빙문의',\r\n 세금계산서현금영수증결제방법변경등에관한문의를시도하세요: '세금계산서, 현금영수증, 결제방법변경 등에 관한 문의를 시도하세요.',\r\n 영업문의: '영업문의',\r\n 서버운영에필요한견적에대한문의를시도하세요: '서버 운영에 필요한 견적에 대한 문의를 시도하세요.',\r\n 작업의뢰서확인: '작업의뢰서 확인',\r\n 서버IP: '서버 IP',\r\n 문의내용: '문의 내용',\r\n 파일첨부: '파일 첨부',\r\n 문의하기: '문의하기',\r\n 나의문의내역: '나의문의내역',\r\n 승인일: '승인일',\r\n 작업일: '작업일',\r\n 작업내용: '작업내용',\r\n 비용: '비용',\r\n 작업승인: '작업승인',\r\n 작업: '작업',\r\n 완료: '완료',\r\n 유형: '유형',\r\n 제목: '제목',\r\n 처리상태: '처리상태',\r\n 비고: '비고',\r\n 상세보기: '상세보기',\r\n 답변: '답변',\r\n 답변자: '답변자',\r\n 처리내역: '처리내역',\r\n '시스템장애, 시스템 운영 등 기술관련 문의': '시스템장애, 시스템 운영 등 기술관련 문의',\r\n '결제/지출증빙 문의': '결제/지출증빙 문의',\r\n '세금계산서, 현금영수증, 결제방법 변경 문의': '세금계산서, 현금영수증, 결제방법 변경 문의',\r\n '컨설팅, 구매, 비용, 견적 등 영업에 관련된 문의': '컨설팅, 구매, 비용, 견적 등 영업에 관련된 문의',\r\n 작업의뢰서: '작업의뢰서',\r\n 요청하신작업중고객님의승인이필요한작업리스트: '요청하신 작업 중 고객님의 승인이 필요한 작업 리스트',\r\n 담당자: '담당자',\r\n 올바른형식의파일이아닙니다: '올바른 형식의 파일이 아닙니다.',\r\n 파일크기는3MB를넘을수없습니다: '파일 크기는 3MB를 넘을 수 없습니다.',\r\n 카드자동결제: '카드자동결제',\r\n 첨부파일: '첨부파일',\r\n 호센서비스호스팅신청서CMS: '호센-서버호스팅신청서-cms.doc',\r\n 호센서비스호스팅신청서PDF: '호센-서버호스팅신청서-cms.pdf',\r\n 문의등록완료되었습니다: '문의 등록 완료되었습니다.',\r\n 서버IP를선택해주세요: '서버 IP를 선택해주세요.',\r\n 문의내용을선택해주세요: '문의 내용을 선택해주세요.',\r\n 문의글을작성해주세요: '문의 글을 작성해주세요.',\r\n 올바른파일형식이아니거나파일크기가3MB이하여만업로드가능합니다: '올바른 파일형식이 아니거나 파일크기가 3MB이하여만 업로드 가능합니다.',\r\n 기타문의: '기타문의',\r\n 시스템작업의뢰서: '시스템 작업의뢰서',\r\n 작업의뢰인: '작업의뢰인',\r\n 성명: '성명',\r\n 이메일: '이메일',\r\n 전화번호: '전화번호',\r\n 핸드폰번호: '핸드폰번호',\r\n 작업의뢰정보: '작업의뢰정보',\r\n 작업서버IP: '작업서버IP',\r\n 작업일시: '작업일시',\r\n 작업비용VAT포함: '작업비용(VAT포함)',\r\n 작업세부사항: '작업세부사항',\r\n 안내사항: '안내사항',\r\n 작업의뢰서폼1번: '1. 본 작업의뢰서는 호스트센터(주) 지정계좌로 작업비용을 납입함으로서 효력을 발휘합니다.',\r\n 작업의뢰서폼2번: `2. 작업의뢰는 서버의 자료(data)를 모두 백업 받은 이후에 의뢰하여야 하며, 작업 중 데이터 망실에 관하여 작업자나\r\n 회사에서 책임을 지지 않습니다.`,\r\n 작업의뢰서폼3번: '3. 작업 비용 산출은 담당자와 충분한 협의 후 신청하시기 바랍니다.',\r\n 작업의뢰서폼4번: '4. 루트 분실시는 사업자 등록증 사본 혹은 담당자 주민등록증 사본을 발송하셔야 합니다.',\r\n 작업의뢰서폼5번: '5. 작업의뢰 내용을 잘 확인하시고 승인하여 주시기 바랍니다.',\r\n 작업승인하기: '작업 승인하기',\r\n 승인하시겠습니까: '승인하시겠습니까?',\r\n 승인완료했습니다: '승인완료했습니다.',\r\n 승인요청: '승인요청',\r\n 승인완료: '승인완료',\r\n 작업중: '작업중',\r\n /*공지사항,보안뉴스,리포팅*/\r\n 작성일: '작성일',\r\n 작성자: '작성자',\r\n 리포트타입: '리포트 타입',\r\n 생성일: '생성일',\r\n 다운로드: '다운로드',\r\n 이전글: '이전 글',\r\n 다음글: '다음 글',\r\n 목록: '목록',\r\n 생성중: '생성중',\r\n\r\n /*지원센터 신청폼 */\r\n CDP백업복구폼: `\r\n**********************************************************\r\n1 요청일자: \r\n\r\n2 IDC: \r\n\r\n3 업체명: \r\n\r\n4 백업서버명: \r\n\r\n5 아이피: 0.0.0.0\r\n\r\n6*원본경로(예>D:/nuri_2012): \r\n\r\n7 시점(예>06월 07일): \r\n\r\n8*긴급여부(긴급/보통):\r\n\r\n9*원본백업여부(했음/안했음): \r\n\r\n10*덮어쓰기(함/안함):\r\n\r\n11*복구경로(예>D:CDP_backup): \r\n\r\n12 용량: \r\n\r\n13*타입(파일/DB/파티션):\r\n\r\n14 복구후조치사항: \r\n\r\n15 소요시간(분): \r\n\r\n16 기타: \r\n\r\n요청시 주의사항:\r\n\r\n* 백업된 데이터가 있는지 유선상으로 문의하여 확인 후 요청하여 주시기 바랍니다.\r\n\r\n* 원본경로에 덮어쓰기로 요청하실 때는 요청 전에 반드시 원본을 백업하거나 폴더명 변경을 해 두시기 바랍니다.\r\n\r\n* 복구 소요시간은 용량, 파일수, 타깃서버환경 등에 따라 길어질 수 있습니다.\r\n \r\n*********************************************************** `,\r\n OS재설치폼: `\r\nOS재설치 요청서(*:필수항목)\r\n**************************************************************\r\n*1. OS재설치 가능 일시(예: 1945/8/15 오전10시 이후.): \r\n\r\n*2. OS재설치 서버아이피:\r\n\r\n*3. 백업여부:\r\n(백업이 없을 시 OS재설치 진행이 되지 않습니다.) \r\n\r\n*4. 설치할 OS버전 및 기타 설치정보(파티션정보): \r\n\r\n5. OS재설치 사유: \r\n\r\n6. 기타 요청사항: \r\n\r\n◆ 요청 시 주의사항:\r\n\r\n*OS재설치 작업시간은 당사 작업 스케줄에 다라 유동적이며 지연될 수 있습니다.\r\n\r\n오후3시 이후에 접수되는 설치 건은 익일 오전에 설치될 수 있으니 당일 오전 중에 접수를 해주시기 바랍니다.\r\n\r\n*야간 및(오후 4시이후) 주말에 설치를 원하시는 경우 고객님 서비스 형태에 따라 OS설치 비용이 발생할 수 있습니다.\r\n\r\n*OS재설치는 기본적으로 모든 데이터를 포맷하는 방식으로만 진행해 드리오니 고객님 쪽에서\r\n\r\n꼭 백업을 받으시기 바라며, 작업간 발생하는 모든 데이타 망실은 자사에서 책임을 지지 않습니다.\r\n\r\n*데이타 백업이 여의치 않으실 경우 신규 또는 재고 디스크를 구매하여 기존디스크 보존 후\r\n\r\nOS재설치 되는 방식으로 요청을 주시기 바랍니다.\r\n**************************************************************`,\r\n 방화벽룰셋폼: `\r\n방화벽 룰셋을 아래와 같이 요청합니다. \r\n*************************************************************\r\n소스 IP(서버에 접속할 외부의 컴퓨터) : \r\n대상 IP(외부에서 접속할 서버): \r\n프로그램(사용포트) : \r\n정책(allow,reject,deny) : \r\n*************************************************************\r\n `,\r\n 인버스도메인폼: `\r\n<안내>\r\n하단에 있는 인버스 도메인 신청서를 다운로드, 내용작성 후 \r\n사업자등록증과 함께 업로드하여 주시기 바랍니다.\r\n`,\r\n CDP백업신청폼: `\r\nCDP 백업 서비스 신청을 위해 아래 내용을 작성하여 주시기 바랍니다. \r\n-------------------------------------------------------------------\r\nCDP 백업 서비스 신청서\r\n1. 서비스타입: CDP-100G / CDP-3m / CDP-1m \r\n\r\n2. 업체명: \r\n\r\n3. 서버아이피: 0.0.0.0\r\n\r\n4. 서버접속정보: ID PW 접속PORT \r\n\r\n5. 초기백업일자: 2014년 0월 0일 오전 00시 \r\n\r\n6. 백업대상: 예1)전체 예2)전체(F:제외) 예3)전체(/backup 제외) \r\n\r\n7. 백업용량: (백업대상의 총 용량을 합산하여 기입) \r\n\r\n8. 백업주기: hourly 혹은 daily-3am \r\n\r\n9. 보관주기: 7days \r\n\r\n10. 백업결과수신메일: \r\n\r\n11. 기타 특이사항: \r\n\r\n* 서비스타입: \r\n CDP-3m: CDP Ent.라이센스 + 초기구성 + 기술지원 + 관제 + 디스크 무상 제공(500G) = 월 3만원(VAT별도) \r\n CDP-100G: CDP Ent.라이센스 + 초기구성 + 기술지원 + 관제 + 원격백업 100G 무상 제공 = 월 5만원(VAT별도) \r\n\r\n* 백업 용량초과시 안내(CDP-100G 타입만 해당) \r\n- 백업계약용량(기본 100G)이 초과되어도 백업은 되지만 장기간 초과 시 추가요금이 청구됩니다. \r\n- 백업계약용량은 백업서버에 저장되는 용량 기준입니다.(원본의 약 150%) \r\n\r\n* 서버 설정, 하드웨어 및 소프트웨어 변경 등의 문제로 백업이 안될 경우 서비스가 지원이 안될 수 있습니다. \r\n 변경 사항 발생 시 반드시 별도로 알려 주시기 바랍니다. \r\n\r\n* DB 테이블 백업은 지원되지 않으니 별도로 상담하여 주시기 바랍니다. \r\n\r\n* CDP 백업 복구 요청 \r\n- 데이터 혹은 디스크 복구가 필요한 경우, 기술지원>기술문의>장애처리요청>[CDP_백업_복구요청] 템플릿을 선택해서 항목 작성하여 신청해 주시기 바랍니다. \r\n- 파일단위 복구 시 한글파일이름은 utf-8만 지원됩니다.(파티션 복구 시는 무관함) \r\n\r\n* CDP 백업 서비스 해지 \r\n- 별도 해지 절차 참조. \r\n- CDP 백업 서비스 해지 신청서 확인 후, 보관된 고객의 데이터는 즉시 삭제 되며 라이센스가 회수됩니다.`,\r\n CMS신청폼: `\r\n하단 CMS 신청서를 다운로드하여 작성 후 업로드하여 주시기 바랍니다.\r\n`,\r\n 카드자동결제신청폼: `\r\n하단 링크에서 카드 자동결제 신청해주시기 바랍니다.\r\n호스트센터 홈페이지 https://hostcenter.co.kr/ -> 마이페이지 -> 요금관리 -> 자동결제 -> 카드자동결제에서도 신청가능합니다.\r\n`,\r\n 세금계산서발행신청폼: `\r\n* 원하시는 문의 내용을 기재해주시기 바랍니다. (예시. 세금계산서 발행, 세금계산서 분리 발행 등)\r\n- 요청사항:\r\n\r\n* 공급받는 자 정보를 기입하여 주시기 바랍니다.\r\n==========================================\r\n- 사업자등록번호:\r\n- 상호(법인명):\r\n- 대표자명:\r\n- 사업장주소:\r\n- 업태/종목:\r\n- 이메일주소:\r\n==========================================\r\n`,\r\n 현금영수증발행신청폼: `\r\n- 상호 or 성명 :\r\n- 현금영수증 번호: \r\n- 기타 문의 사항:`,\r\n};\r\n","export const Lang = {\r\n 모니터링: 'Monitoring',\r\n 실시간모니터링: 'Live Monitoring',\r\n 모니터링설정변경: 'Monitoring Setting',\r\n 리포팅: 'Reporting',\r\n 트래픽: 'Traffic',\r\n 네임서버관리: 'DNS Management',\r\n 공지사항: 'Notice',\r\n 보안뉴스: 'Security News',\r\n 정상: 'Enabled',\r\n 비정상: 'Disabled',\r\n 전체: 'Total',\r\n 미등록: 'Unregistered',\r\n 개: '',\r\n 검색: 'Search',\r\n 상태: 'State',\r\n 호스트: 'Host',\r\n 확인: 'Detail',\r\n 번호: 'No.',\r\n 마지막체크시간: 'Last Check Time',\r\n 도메인: 'Domain',\r\n 체크: 'Check',\r\n 체크값: 'Check Value',\r\n 그래프기간설정: 'Graph Date Setting',\r\n 선택: 'choose',\r\n 서버정보: 'Server Info',\r\n 변경이력: 'Change history',\r\n 추가: 'Add',\r\n 도메인추가: 'Domain Add',\r\n 도메인이름: 'Domain Name',\r\n 네임서버주소: 'NameServer Address',\r\n 레코드: 'Record',\r\n 설정: 'Setting',\r\n 관리: 'management',\r\n 유의사항: 'Precautions',\r\n 유의사항1: 'Only IP is allowed for Address (A), and port number is not supported.',\r\n 유의사항2: 'Alias ​​(CNAME) only allow domains and subdomains.',\r\n 등록일: 'Registration Date',\r\n 첫번째네임서버: 'First NS',\r\n 두번째네임서버: 'Second NS',\r\n URL복사: 'The URL has been copied.',\r\n 서브도메인: 'Sub Domain',\r\n 도메인명: 'Domain Name',\r\n 레코드타입: 'Record Type',\r\n 우선순위: 'Priority',\r\n 상태설정: 'State Setting',\r\n IP주소레코드값: 'IP Address / Record Value',\r\n '주소(A)': 'Address (A): This record is used to set the IP to connect with the domain.',\r\n MX레코드: 'MX Record: This record is used to set up mail connection for a domain.',\r\n 텍스트TXT:\r\n 'Text (TXT): This record is used when it is necessary to confirm the domain information by entering the text information of the domain.',\r\n 별칭CNAME: 'Alias ​​(CNAME): You can designate a domain as another alias for this domain.',\r\n SRV레코드: 'SRV Record: This record is used to store the location of the service by designating the service type and port number.',\r\n 삭제: 'Delete',\r\n 수정: 'Modify',\r\n 년: 'y',\r\n 개월: 'm',\r\n 시간: 'h',\r\n 분: 'm',\r\n 초: 's',\r\n 일: 'd',\r\n 서비스: 'Service',\r\n 지속시간: 'Duration',\r\n 포트설정: 'PortSetting',\r\n 포트추가: 'PortAdd',\r\n 포트: 'Port',\r\n 포트상태: 'PortState',\r\n 체크시간: 'CheckTime',\r\n 변경: 'StateChange',\r\n 저장: 'Save',\r\n 가동: 'Run',\r\n 중지: 'Stop',\r\n 이름: 'Name',\r\n 규칙: 'Rule',\r\n 및: 'or',\r\n 응답코드: 'ResponseCode',\r\n 변경내역: 'ChangeHistory',\r\n 해당서버의모니터링을켜고끌수있습니다: 'You can turn the monitoring of that server on and off.',\r\n 전체서버의모니터링을켜고끌수있습니다: 'You can turn on/off monitoring of the entire server.',\r\n 모니터링포트스캔: 'Monitoring Port Scan',\r\n 포트스캔: 'Port Scan',\r\n 단일포트스캔: 'Single Port Scan',\r\n 등록여부: 'Enrollment',\r\n 등록됨: 'Enabled',\r\n 등록가능: 'Disable',\r\n 사용자: 'User',\r\n 주소: 'Address',\r\n 선택하세요: 'Select',\r\n 필수값: 'Required',\r\n 이슈이력: 'Issue History',\r\n 이슈발생시각: 'Time of occurrence',\r\n 이슈종료시각: 'End Time',\r\n 이슈: 'Issue',\r\n 이벤트: 'Event',\r\n 다운시간: 'Down Time',\r\n 현재이슈: 'Current Issue',\r\n 모니터링이슈: 'Monitoring Issue',\r\n 모든이슈: 'All Issue',\r\n 선택창: 'Select, Search : IP',\r\n IP조회중: 'You are looking up the IP being used.',\r\n IP없음: 'IP does not exist.',\r\n 모니터링서버없음: 'There are no servers that can be monitored.',\r\n 관리자문의: 'Please contact the manager.',\r\n 모니터링결과없음: 'There are no more results.',\r\n 로딩중: 'Loading',\r\n 데이터가없습니다: 'No data',\r\n 스캔중: 'It is already scanning. Please wait.\\nScanning may take up to 15 seconds.',\r\n 컨텐츠확인: 'Content check',\r\n 컨텐츠확인문구: 'For web pages encoded in EUC-KR, Korean is not checked.',\r\n 체크값입력문구: 'Check value input phrase The number of characters in the check value is limited to 20 characters or less.',\r\n 체크값입력: 'Enter check value',\r\n 모니터링URL입력: 'Enter monitoring url',\r\n 스캔하기: 'Scan',\r\n 모니터링리소스스캔: 'Monitoring Resource Scan',\r\n 리소스스캔: 'Resource Scan',\r\n 대상: 'Resource',\r\n 등록할리소스를하나이상선택해주세요: 'Please select one or more resources to register!',\r\n 등록할포트를하나이상선택해주세요: 'Please select one or more ports to register!',\r\n 스캔할포트를입력해주세요: 'Please enter the port to be scanned!',\r\n 태그를등록할서버를선택해주세요: 'Please select a server to register the tag!',\r\n 태그를입력하지않았거나10자를초과하였습니다: 'You have not entered a tag or exceeded 1-10 characters!',\r\n 사이트입력: 'Site input',\r\n 본인소유의도메인주소를입력해주세요: 'Please enter your own domain address.',\r\n 도메인형식이아닙니다: 'Not domain format!',\r\n 버튼비활성화시기술문의:\r\n 'When the button is deactivated, please contact us for technical inquiries (02-6925-5044) or request from the support center.',\r\n 필수값을모두입력해주세요: 'Please enter all required values!',\r\n 업시간상태: 'Up time, Status',\r\n 도메인을먼저선택해주세요: 'Please select a domain first.',\r\n 텍스트: 'TEXT',\r\n 별칭: 'CNAME',\r\n 바로가기: 'Shortcut',\r\n 안녕하세요: 'Hello',\r\n 로그아웃: 'Log out',\r\n 계정관리: 'Account Management',\r\n 로그아웃하시겠습니까: 'Are you sure you want to log out?',\r\n 모니터링셋팅바로가기: 'Go to monitoring settings',\r\n 스캔할url를입력해주세요: 'Please enter the url to scan',\r\n URL입력후스캔이필요합니다: 'Scanning is required after entering the URL.',\r\n url이정확하지않습니다: 'url is incorrect',\r\n 체크값이없거나20자를초과했습니다: 'No check value or more than 20 characters.',\r\n 스캔되었습니다: 'The scan was successful.',\r\n 등록되었습니다: 'Registration was successful.',\r\n IP를선택하세요: 'Choose your IP.',\r\n 이미가동상태입니다: 'It is already in operation.',\r\n 이미중지상태입니다: 'It is already stopped.',\r\n 중지되었습니다: 'stop was successful.',\r\n 가동되었습니다: 'operation was successful.',\r\n 삭제되었습니다: 'Deletion was successful.',\r\n 변경될체크값을설정해주세요: 'Please set the check value to be changed.',\r\n 변경되었습니다: 'The change was successful.',\r\n 수정되었습니다: 'The fix was successful.',\r\n 해당레코드타입은삭제할수없습니다: 'The record type cannot be deleted.',\r\n ip형식이아닙니다: 'not in ip format',\r\n 숫자만: 'It is not in numeric format.',\r\n 해당레코드타입은수정할수없습니다: 'The record type cannot be edited.',\r\n 데이터를가져오는중문제가발생했습니다: 'There was a problem getting data.',\r\n 잘못된요청으로문제가발생했습니다: 'The problem was caused by a bad request.',\r\n 로그인정보가만료되었습니다다시로그인해주세요: 'Your login information has expired. Please log in again.',\r\n 모든서버의모니터링을켜시겠습니까: '모든서버의 모니터링을 켜시겠습니까?',\r\n 모든서버의모니터링을끄시겠습니까: '모든서버의 모니터링을 끄시겠습니까?',\r\n '현재 모니터링이 Off상태입니다': 'Currently monitoring is off. ',\r\n '상태를 변경하시려면 모니터링을 on상태로 변경해주시기 바랍니다': 'To change the status, please change monitoring to on.',\r\n 대쉬보드: 'Dashboard',\r\n '이미 검색중입니다. 잠시만기달려주세요': '이미 검색중입니다. 잠시만기달려주세요',\r\n 리스트뷰: 'ListView',\r\n 카드뷰: 'CardView',\r\n 웹: 'Web',\r\n 리소스: 'Resource',\r\n 대시보드: 'Dashboard',\r\n '리소스 체크': 'Resource check',\r\n 기간설정: 'Period setting',\r\n '서비스 포트 체크': 'Service port check',\r\n '사용률 5분 평균': '5 minute average of cpu utilization',\r\n '메모리 사용률': 'memory utilization',\r\n '스토리지 사용률': 'Storage Utilization',\r\n '모니터링 중지': 'Monitoring Disabled',\r\n\r\n 순위: 'Priority',\r\n 타입: 'Type',\r\n 도메인삭제: 'Delete Domain',\r\n 님: '',\r\n '모니터링 설정방법': 'Monitroing Setting Guide',\r\n '도메인 삭제': 'Delete Domain',\r\n '도메인 주소를 다시 한번 입력하여 주세요': 'Please re-enter the domain address.',\r\n '삭제 된 도메인은 레코드 정보는 확인 불가합니다': 'For deleted domains, record information cannot be verified.',\r\n '삭제할 도메인을 입력하지 않았습니다': 'You did not enter a domain to delete.',\r\n '삭제할 도메인과 일치하지 않습니다': 'Does not match the domain to be deleted.',\r\n '레코드를 삭제하시겠습니까': 'Are you sure you want to delete the record?',\r\n '도메인을 정말 삭제하시겠습니까': 'Are you sure you want to delete your domain?',\r\n '사용자 매뉴얼' : 'User manual',\r\n\r\n /*트래픽*/\r\n 트래픽비교: '트래픽 비교',\r\n 트래픽확인: '트래픽 확인',\r\n 트래픽요금산정: '트래픽 요금 산정',\r\n 트래픽상세: '트래픽 상세',\r\n 데이터: '데이터',\r\n 대역종량제: '대역종량제',\r\n 트래픽종량제: '트래픽종량제',\r\n 날짜: '날짜',\r\n IN최대값: 'IN 최대값',\r\n IN최대시간: 'IN 최대시간',\r\n OUT최대값: 'OUT 최대값',\r\n OUT최대시간: 'OUT 최대시간',\r\n IN총트래픽: 'IN 총 트래픽',\r\n OUT총트래픽: 'OUT 총 트래픽',\r\n 기간별트래픽송신합계: '기간별 트래픽 송신 합계',\r\n 기간별대역폭송신Top5: '기간별 대역폭 송신 Top5',\r\n 사용량: '사용량',\r\n 트래픽요금산정평균값: '트래픽 요금 산정 평균값',\r\n 트래픽요금기준안내: '트래픽 요금기준 안내',\r\n 트래픽현황: '트래픽 현황',\r\n 적용: 'apply',\r\n IP주소5개까지조회가능합니다: 'IP 주소 5개까지 조회 가능합니다.',\r\n 사용중인아이피가없습니다: '사용중인 아이피가 없습니다.',\r\n 날짜선택: '날짜선택',\r\n /*지원센터*/\r\n 지원센터: 'Support Center',\r\n 기술문의: '기술문의',\r\n 서버운영에필요한기술에대한문의를시도하세요: '서버 운영에 필요한 기술에 대한 문의를 시도하세요.',\r\n 결제지출증빙문의: '결제/지출증빙문의',\r\n 세금계산서현금영수증결제방법변경등에관한문의를시도하세요: '세금계산서, 현금영수증, 결제방법변경 등에 관한 문의를 시도하세요.',\r\n 영업문의: '영업문의',\r\n 서버운영에필요한견적에대한문의를시도하세요: '서버 운영에 필요한 견적에 대한 문의를 시도하세요.',\r\n 작업의뢰서확인: '작업의뢰서 확인',\r\n 서버IP: '서버 IP',\r\n 문의내용: '문의 내용',\r\n 파일첨부: '파일 첨부',\r\n 문의하기: '문의하기',\r\n 나의문의내역: '나의문의내역',\r\n 승인일: '승인일',\r\n 작업일: '작업일',\r\n 작업내용: '작업내용',\r\n 비용: '비용',\r\n 작업승인: '작업승인',\r\n 작업: '작업',\r\n 완료: '완료',\r\n 유형: '유형',\r\n 제목: '제목',\r\n 처리상태: '처리상태',\r\n 비고: '비고',\r\n 상세보기: '상세보기',\r\n 답변: '답변',\r\n 답변자: '답변자',\r\n 처리내역: '처리내역',\r\n '시스템장애, 시스템 운영 등 기술관련 문의': '시스템장애, 시스템 운영 등 기술관련 문의',\r\n '결제/지출증빙 문의': '결제/지출증빙 문의',\r\n '세금계산서, 현금영수증, 결제방법 변경 문의': '세금계산서, 현금영수증, 결제방법 변경 문의',\r\n '컨설팅, 구매, 비용, 견적 등 영업에 관련된 문의': '컨설팅, 구매, 비용, 견적 등 영업에 관련된 문의',\r\n 작업의뢰서: '작업의뢰서',\r\n 요청하신작업중고객님의승인이필요한작업리스트: '요청하신 작업 중 고객님의 승인이 필요한 작업 리스트',\r\n 담당자: '담당자',\r\n 올바른형식의파일이아닙니다: '올바른 형식의 파일이 아닙니다.',\r\n 파일크기는3MB를넘을수없습니다: '파일 크기는 3MB를 넘을 수 없습니다.',\r\n 카드자동결제: '카드자동결제',\r\n 첨부파일: '첨부파일',\r\n 호센서비스호스팅신청서CMS: '호센-서버호스팅신청서-cms.doc',\r\n 호센서비스호스팅신청서PDF: '호센-서버호스팅신청서-cms.pdf',\r\n 문의등록완료되었습니다: '문의 등록 완료되었습니다.',\r\n 서버IP를선택해주세요: '서버 IP를 선택해주세요.',\r\n 문의내용을선택해주세요: '문의 내용을 선택해주세요.',\r\n 문의글을작성해주세요: '문의 글을 작성해주세요.',\r\n 올바른파일형식이아니거나파일크기가3MB이하여만업로드가능합니다: '올바른 파일형식이 아니거나 파일크기가 3MB이하여만 업로드 가능합니다.',\r\n 기타문의: '기타문의',\r\n 시스템작업의뢰서: '시스템 작업의뢰서',\r\n 작업의뢰인: '작업의뢰인',\r\n 성명: '성명',\r\n 이메일: '이메일',\r\n 전화번호: '전화번호',\r\n 핸드폰번호: '핸드폰번호',\r\n 작업의뢰정보: '작업의뢰정보',\r\n 작업서버IP: '작업서버IP',\r\n 작업일시: '작업일시',\r\n 작업비용VAT포함: '작업비용(VAT포함)',\r\n 작업세부사항: '작업세부사항',\r\n 안내사항: '안내사항',\r\n 작업의뢰서폼1번: '1. 본 작업의뢰서는 호스트센터(주) 지정계좌로 작업비용을 납입함으로서 효력을 발휘합니다.',\r\n 작업의뢰서폼2번: `2. 작업의뢰는 서버의 자료(data)를 모두 백업 받은 이후에 의뢰하여야 하며, 작업 중 데이터 망실에 관하여 작업자나\r\n 회사에서 책임을 지지 않습니다.`,\r\n 작업의뢰서폼3번: '3. 작업 비용 산출은 담당자와 충분한 협의 후 신청하시기 바랍니다.',\r\n 작업의뢰서폼4번: '4. 루트 분실시는 사업자 등록증 사본 혹은 담당자 주민등록증 사본을 발송하셔야 합니다.',\r\n 작업의뢰서폼5번: '5. 작업의뢰 내용을 잘 확인하시고 승인하여 주시기 바랍니다.',\r\n 작업승인하기: '작업 승인하기',\r\n 승인하시겠습니까: '승인하시겠습니까?',\r\n 승인완료했습니다: '승인완료했습니다.',\r\n 승인요청: '승인요청',\r\n 승인완료: '승인완료',\r\n 작업중: '작업중',\r\n /*공지사항,보안뉴스,리포팅*/\r\n 작성일: '작성일',\r\n 작성자: '작성자',\r\n 리포트타입: '리포트 타입',\r\n 생성일: '생성일',\r\n 다운로드: '다운로드',\r\n 이전글: '이전 글',\r\n 다음글: '다음 글',\r\n 목록: '목록',\r\n 생성중: '생성중',\r\n\r\n /*지원센터 신청폼 */\r\n CDP백업복구폼: `\r\n**********************************************************\r\n1 요청일자: \r\n\r\n2 IDC: \r\n\r\n3 업체명: \r\n\r\n4 백업서버명: \r\n\r\n5 아이피: 0.0.0.0\r\n\r\n6*원본경로(예>D:/nuri_2012): \r\n\r\n7 시점(예>06월 07일): \r\n\r\n8*긴급여부(긴급/보통):\r\n\r\n9*원본백업여부(했음/안했음): \r\n\r\n10*덮어쓰기(함/안함):\r\n\r\n11*복구경로(예>D:CDP_backup): \r\n\r\n12 용량: \r\n\r\n13*타입(파일/DB/파티션):\r\n\r\n14 복구후조치사항: \r\n\r\n15 소요시간(분): \r\n\r\n16 기타: \r\n\r\n요청시 주의사항:\r\n\r\n* 백업된 데이터가 있는지 유선상으로 문의하여 확인 후 요청하여 주시기 바랍니다.\r\n\r\n* 원본경로에 덮어쓰기로 요청하실 때는 요청 전에 반드시 원본을 백업하거나 폴더명 변경을 해 두시기 바랍니다.\r\n\r\n* 복구 소요시간은 용량, 파일수, 타깃서버환경 등에 따라 길어질 수 있습니다.\r\n \r\n*********************************************************** `,\r\n OS재설치폼: `\r\nOS재설치 요청서(*:필수항목)\r\n**************************************************************\r\n*1. OS재설치 가능 일시(예: 1945/8/15 오전10시 이후.): \r\n\r\n*2. OS재설치 서버아이피:\r\n\r\n*3. 백업여부:\r\n(백업이 없을 시 OS재설치 진행이 되지 않습니다.) \r\n\r\n*4. 설치할 OS버전 및 기타 설치정보(파티션정보): \r\n\r\n5. OS재설치 사유: \r\n\r\n6. 기타 요청사항: \r\n\r\n◆ 요청 시 주의사항:\r\n\r\n*OS재설치 작업시간은 당사 작업 스케줄에 다라 유동적이며 지연될 수 있습니다.\r\n\r\n오후3시 이후에 접수되는 설치 건은 익일 오전에 설치될 수 있으니 당일 오전 중에 접수를 해주시기 바랍니다.\r\n\r\n*야간 및(오후 4시이후) 주말에 설치를 원하시는 경우 고객님 서비스 형태에 따라 OS설치 비용이 발생할 수 있습니다.\r\n\r\n*OS재설치는 기본적으로 모든 데이터를 포맷하는 방식으로만 진행해 드리오니 고객님 쪽에서\r\n\r\n꼭 백업을 받으시기 바라며, 작업간 발생하는 모든 데이타 망실은 자사에서 책임을 지지 않습니다.\r\n\r\n*데이타 백업이 여의치 않으실 경우 신규 또는 재고 디스크를 구매하여 기존디스크 보존 후\r\n\r\nOS재설치 되는 방식으로 요청을 주시기 바랍니다.\r\n**************************************************************`,\r\n 방화벽룰셋폼: `\r\n방화벽 룰셋을 아래와 같이 요청합니다. \r\n*************************************************************\r\n소스 IP(서버에 접속할 외부의 컴퓨터) : \r\n대상 IP(외부에서 접속할 서버): \r\n프로그램(사용포트) : \r\n정책(allow,reject,deny) : \r\n*************************************************************\r\n `,\r\n 인버스도메인폼: `\r\n<안내>\r\n하단에 있는 인버스 도메인 신청서를 다운로드, 내용작성 후 \r\n사업자등록증과 함께 업로드하여 주시기 바랍니다.\r\n`,\r\n CDP백업신청폼: `\r\nCDP 백업 서비스 신청을 위해 아래 내용을 작성하여 주시기 바랍니다. \r\n-------------------------------------------------------------------\r\nCDP 백업 서비스 신청서\r\n1. 서비스타입: CDP-100G / CDP-3m / CDP-1m \r\n\r\n2. 업체명: \r\n\r\n3. 서버아이피: 0.0.0.0\r\n\r\n4. 서버접속정보: ID PW 접속PORT \r\n\r\n5. 초기백업일자: 2014년 0월 0일 오전 00시 \r\n\r\n6. 백업대상: 예1)전체 예2)전체(F:제외) 예3)전체(/backup 제외) \r\n\r\n7. 백업용량: (백업대상의 총 용량을 합산하여 기입) \r\n\r\n8. 백업주기: hourly 혹은 daily-3am \r\n\r\n9. 보관주기: 7days \r\n\r\n10. 백업결과수신메일: \r\n\r\n11. 기타 특이사항: \r\n\r\n* 서비스타입: \r\nCDP-3m: CDP Ent.라이센스 + 초기구성 + 기술지원 + 관제 + 디스크 무상 제공(500G) = 월 3만원(VAT별도) \r\nCDP-100G: CDP Ent.라이센스 + 초기구성 + 기술지원 + 관제 + 원격백업 100G 무상 제공 = 월 5만원(VAT별도) \r\n\r\n* 백업 용량초과시 안내(CDP-100G 타입만 해당) \r\n- 백업계약용량(기본 100G)이 초과되어도 백업은 되지만 장기간 초과 시 추가요금이 청구됩니다. \r\n- 백업계약용량은 백업서버에 저장되는 용량 기준입니다.(원본의 약 150%) \r\n\r\n* 서버 설정, 하드웨어 및 소프트웨어 변경 등의 문제로 백업이 안될 경우 서비스가 지원이 안될 수 있습니다. \r\n변경 사항 발생 시 반드시 별도로 알려 주시기 바랍니다. \r\n\r\n* DB 테이블 백업은 지원되지 않으니 별도로 상담하여 주시기 바랍니다. \r\n\r\n* CDP 백업 복구 요청 \r\n- 데이터 혹은 디스크 복구가 필요한 경우, 기술지원>기술문의>장애처리요청>[CDP_백업_복구요청] 템플릿을 선택해서 항목 작성하여 신청해 주시기 바랍니다. \r\n- 파일단위 복구 시 한글파일이름은 utf-8만 지원됩니다.(파티션 복구 시는 무관함) \r\n\r\n* CDP 백업 서비스 해지 \r\n- 별도 해지 절차 참조. \r\n- CDP 백업 서비스 해지 신청서 확인 후, 보관된 고객의 데이터는 즉시 삭제 되며 라이센스가 회수됩니다.`,\r\n CMS신청폼: `\r\n하단 CMS 신청서를 다운로드하여 작성 후 업로드하여 주시기 바랍니다.\r\n `,\r\n 카드자동결제신청폼: `\r\n하단 링크에서 카드 자동결제 신청해주시기 바랍니다.\r\n호스트센터 홈페이지 https://hostcenter.co.kr/ -> 마이페이지 -> 요금관리 -> 자동결제 -> 카드자동결제에서도 신청가능합니다.\r\n`,\r\n 세금계산서발행신청폼: `\r\n* 원하시는 문의 내용을 기재해주시기 바랍니다. (예시. 세금계산서 발행, 세금계산서 분리 발행 등)\r\n- 요청사항:\r\n\r\n* 공급받는 자 정보를 기입하여 주시기 바랍니다.\r\n==========================================\r\n- 사업자등록번호:\r\n- 상호(법인명):\r\n- 대표자명:\r\n- 사업장주소:\r\n- 업태/종목:\r\n- 이메일주소:\r\n==========================================\r\n`,\r\n 현금영수증발행신청폼: `\r\n- 상호 or 성명 :\r\n- 현금영수증 번호: \r\n- 기타 문의 사항:`,\r\n};\r\n","export const Lang = {\r\n 모니터링: '监控',\r\n 실시간모니터링: '实时监控',\r\n 모니터링설정변경: '监控设置',\r\n 리포팅: '汇报',\r\n 트래픽: '交通',\r\n 네임서버관리: 'DNS 管理',\r\n 공지사항: '注意',\r\n 보안뉴스: '安全新闻',\r\n 정상: '已启用',\r\n 비정상: '残障人士',\r\n 전체: '全部的',\r\n 미등록: '未注册',\r\n 개: '',\r\n 검색: '搜索',\r\n 상태: '状态',\r\n 호스트: '主持人',\r\n 확인: '确认',\r\n 번호: '数字',\r\n 마지막체크시간: '最后检查时间',\r\n 도메인: '领域',\r\n 체크: '查看',\r\n 체크값: '支票值',\r\n 그래프기간설정: '图表日期设定',\r\n 선택: '选择',\r\n 서버정보: '서버정보',\r\n 변경이력: '변경이력',\r\n 추가: '添加',\r\n 도메인추가: '领域 添加',\r\n 도메인이름: '도메인 이름',\r\n 네임서버주소: '네임서버 주소',\r\n 레코드: '레코드',\r\n 설정: '설정',\r\n 관리: 'management',\r\n 유의사항: 'Precautions',\r\n 유의사항1: 'Only IP is allowed for Address (A), and port number is not supported.',\r\n 유의사항2: 'Alias ​​(CNAME) only allow domains and subdomains.',\r\n 등록일: '등록일',\r\n 첫번째네임서버: 'First NameServer',\r\n 두번째네임서버: 'Second NameServer',\r\n URL복사: 'The URL has been copied.',\r\n 서브도메인: '서브도메인',\r\n 도메인명: '도메인명',\r\n 레코드타입: 'Record Type',\r\n 우선순위: 'Priority',\r\n 상태설정: '상태설정',\r\n IP주소레코드값: 'IP주소 / 레코드값',\r\n '주소(A)': 'Address (A): This record is used to set the IP to connect with the domain.',\r\n MX레코드: 'MX레코드 : 도메인의 메일 연결 설정을 할 때 사용하는 레코드입니다.',\r\n 텍스트TXT: '텍스트(TXT) : 도메인의 텍스트 정보를 입력함으로 도메인의 정보 확인이 필요할 때 사용하는 레코드입니다.',\r\n 별칭CNAME: '별칭(CNAME) : 본 도메인의 또 다른 별칭으로 도메인을 지정할 수 있습니다.',\r\n SRV레코드: 'SRV레코드 : 서비스 종류 및 포트번호를 지정함으로서 서비스의 위치를 저장하기 위해 사용하는 레코드입니다.',\r\n 삭제: 'Delete',\r\n 수정: 'Modify',\r\n 년: 'y',\r\n 개월: 'm',\r\n 시간: 'h',\r\n 분: 'm',\r\n 초: 's',\r\n 일: 'd',\r\n 지속시간: 'Duration',\r\n 포트설정: '포트설정',\r\n 포트추가: '포트추가',\r\n 포트: '포트',\r\n 포트상태: '포트상태',\r\n 체크시간: '체크시간',\r\n 변경: '변경',\r\n 저장: '저장',\r\n 가동: '가동',\r\n 중지: '중지',\r\n 이름: '이름',\r\n 규칙: '규칙',\r\n 및: '및',\r\n 응답코드: 'ResponseCode',\r\n 변경내역: 'ChangeHistory',\r\n 해당서버의모니터링을켜고끌수있습니다: '해당 서버의 모니터링을 켜고 끌 수 있습니다.',\r\n 전체서버의모니터링을켜고끌수있습니다: '전체 서버의 모니터링을 켜고 끌 수 있습니다.',\r\n 모니터링포트스캔: 'Monitoring Port Scan',\r\n 포트스캔: '포트 스캔',\r\n 단일포트스캔: 'Single Port Scan',\r\n 등록여부: 'Enrollment',\r\n 등록됨: '등록됨',\r\n 등록가능: '등록가능',\r\n 사용자: '사용자',\r\n 주소: 'Address',\r\n 선택하세요: 'Select',\r\n 필수값: 'Required',\r\n 이슈이력: 'Issue History',\r\n 이슈발생시각: '이슈발생시각',\r\n 이슈종료시각: '이슈종료시각',\r\n 이슈: 'Issue',\r\n 이벤트: 'Event',\r\n 다운시간: 'Down Time',\r\n 현재이슈: 'Current Issue',\r\n 모니터링이슈: 'Monitoring Issue',\r\n 모든이슈: 'All Issue',\r\n 선택창: 'Select, Search : IP',\r\n IP조회중: '사용중인 IP를 조회하고 있습니다.',\r\n IP없음: 'IP가 존재하지 않습니다.',\r\n 모니터링서버없음: '모니터링 가능한 서버가 없습니다.',\r\n 관리자문의: '관리자에 문의하여주시기 바랍니다.',\r\n 모니터링결과없음: '더이상 결과가 없습니다.',\r\n 로딩중: 'Loading',\r\n 데이터가없습니다: 'No data',\r\n 스캔중: 'It is already scanning. Please wait.\\nScanning may take up to 15 seconds.',\r\n 컨텐츠확인문구: 'For web pages encoded in EUC-KR, Korean is not checked.',\r\n 체크값입력문구: 'Check value input phrase The number of characters in the check value is limited to 20 characters or less.',\r\n 체크값입력: 'Enter check value',\r\n 모니터링URL입력: 'Enter monitoring url',\r\n 스캔하기: 'Scan',\r\n 모니터링리소스스캔: 'Monitoring Resource Scan',\r\n 리소스스캔: 'Resource Scan',\r\n 대상: 'Resource',\r\n 등록할리소스를하나이상선택해주세요: 'Please select one or more resources to register!',\r\n 등록할포트를하나이상선택해주세요: 'Please select one or more ports to register!',\r\n 스캔할포트를입력해주세요: 'Please enter the port to be scanned!',\r\n 태그를등록할서버를선택해주세요: 'Please select a server to register the tag!',\r\n 태그를입력하지않았거나10자를초과하였습니다: 'You have not entered a tag or exceeded 1-10 characters!',\r\n 사이트입력: 'Site input',\r\n 본인소유의도메인주소를입력해주세요: 'Please enter your own domain address.',\r\n 도메인형식이아닙니다: 'Not domain format!',\r\n 버튼비활성화시기술문의:\r\n 'When the button is deactivated, please contact us for technical inquiries (02-6925-5044) or request from the support center.',\r\n 필수값을모두입력해주세요: 'Please enter all required values!',\r\n 업시간상태: 'Up time, Status',\r\n 도메인을먼저선택해주세요: 'Please select a domain first.',\r\n 텍스트: 'TEXT',\r\n 별칭: 'CNAME',\r\n 바로가기: 'Shortcut',\r\n 안녕하세요: 'Hello',\r\n 로그아웃: 'Log out',\r\n 계정관리: 'Account Management',\r\n 지원센터: 'SupportCenter',\r\n 로그아웃하시겠습니까: 'Are you sure you want to log out?',\r\n 모니터링셋팅바로가기: 'Go to monitoring settings',\r\n 스캔할url를입력해주세요: 'Please enter the url to scan',\r\n URL입력후스캔이필요합니다: 'Scanning is required after entering the URL.',\r\n url이정확하지않습니다: 'url is incorrect',\r\n 체크값이없거나20자를초과했습니다: 'No check value or more than 20 characters.',\r\n 스캔되었습니다: 'The scan was successful.',\r\n 등록되었습니다: 'Registration was successful.',\r\n IP를선택하세요: 'Choose your IP.',\r\n 이미가동상태입니다: 'It is already in operation.',\r\n 이미중지상태입니다: 'It is already stopped.',\r\n 중지되었습니다: 'stop was successful.',\r\n 가동되었습니다: 'operation was successful.',\r\n 삭제되었습니다: 'Deletion was successful.',\r\n 변경될체크값을설정해주세요: 'Please set the check value to be changed.',\r\n 변경되었습니다: 'The change was successful.',\r\n 수정되었습니다: 'The fix was successful.',\r\n 해당레코드타입은삭제할수없습니다: 'The record type cannot be deleted.',\r\n ip형식이아닙니다: 'not in ip format',\r\n 숫자만: 'It is not in numeric format.',\r\n 해당레코드타입은수정할수없습니다: 'The record type cannot be edited.',\r\n 데이터를가져오는중문제가발생했습니다: 'There was a problem getting data.',\r\n 잘못된요청으로문제가발생했습니다: 'The problem was caused by a bad request.',\r\n 로그인정보가만료되었습니다다시로그인해주세요: 'Your login information has expired. Please log in again.',\r\n 모든서버의모니터링을켜시겠습니까: '모든서버의 모니터링을 켜시겠습니까?',\r\n 모든서버의모니터링을끄시겠습니까: '모든서버의 모니터링을 끄시겠습니까?',\r\n '현재 모니터링이 Off상태입니다': 'Currently monitoring is off.',\r\n '상태를 변경하시려면 모니터링을 on상태로 변경해주시기 바랍니다': 'To change the status, please change monitoring to on.',\r\n 대쉬보드: 'Dashboard',\r\n '이미 검색중입니다. 잠시만기달려주세요': '이미 검색중입니다. 잠시만기달려주세요',\r\n 리스트뷰: 'ListView',\r\n 카드뷰: 'CardView',\r\n 웹: 'Web',\r\n 리소스: 'Resource',\r\n 대시보드: '대시보드',\r\n '리소스 체크': '리소스 체크',\r\n 기간설정: 'Period setting',\r\n '서비스 포트 체크': 'Service port check',\r\n '사용률 5분 평균': '사용률 5분 평균',\r\n '메모리 사용률': '메모리 사용률',\r\n '스토리지 사용률': '스토리지 사용률',\r\n /*트래픽*/\r\n 트래픽비교: '트래픽 비교',\r\n 트래픽확인: '트래픽 확인',\r\n 트래픽요금산정: '트래픽 요금 산정',\r\n 트래픽상세: '트래픽 상세',\r\n 데이터: '데이터',\r\n 대역종량제: '대역종량제',\r\n 트래픽종량제: '트래픽종량제',\r\n 날짜: '날짜',\r\n IN최대값: 'IN 최대값',\r\n IN최대시간: 'IN 최대시간',\r\n OUT최대값: 'OUT 최대값',\r\n OUT최대시간: 'OUT 최대시간',\r\n IN총트래픽: 'IN 총 트래픽',\r\n OUT총트래픽: 'OUT 총 트래픽',\r\n 기간별트래픽송신합계: '기간별 트래픽 송신 합계',\r\n 기간별대역폭송신Top5: '기간별 대역폭 송신 Top5',\r\n 사용량: '사용량',\r\n 트래픽요금산정평균값: '트래픽 요금 산정 평균값',\r\n 트래픽요금기준안내: '트래픽 요금기준 안내',\r\n 트래픽현황: '트래픽 현황',\r\n 적용: '적용',\r\n IP주소5개까지조회가능합니다: 'IP 주소 5개까지 조회 가능합니다.',\r\n 사용중인아이피가없습니다: '사용중인 아이피가 없습니다.',\r\n 날짜선택: '날짜선택',\r\n /*지원센터*/\r\n 기술문의: '기술문의',\r\n 서버운영에필요한기술에대한문의를시도하세요: '서버 운영에 필요한 기술에 대한 문의를 시도하세요.',\r\n 결제증빙문의: '결제/증빙문의',\r\n 세금계산서현금영수증결제방법변경등에관한문의를시도하세요: '세금계산서, 현금영수증, 결제방법변경 등에 관한 문의를 시도하세요.',\r\n 영업문의: '영업문의',\r\n 서버운영에필요한견적에대한문의를시도하세요: '서버 운영에 필요한 견적에 대한 문의를 시도하세요.',\r\n 작업의뢰서확인: '작업의뢰서 확인',\r\n 서버IP: '서버 IP',\r\n 문의내용: '문의 내용',\r\n 파일첨부: '파일 첨부',\r\n 문의하기: '문의하기',\r\n 나의문의내역: '나의문의내역',\r\n 승인일: '승인일',\r\n 작업일: '작업일',\r\n 작업내용: '작업내용',\r\n 비용: '비용',\r\n 작업승인: '작업승인',\r\n 작업: '작업',\r\n 완료: '완료',\r\n 유형: '유형',\r\n 제목: '제목',\r\n 처리상태: '처리상태',\r\n 비고: '비고',\r\n 상세보기: '상세보기',\r\n 답변: '답변',\r\n 답변자: '답변자',\r\n 처리내역: '처리내역',\r\n '시스템장애, 시스템 운영 등 기술관련 문의': '시스템장애, 시스템 운영 등 기술관련 문의',\r\n '결제/지출증빙 문의': '결제/지출증빙 문의',\r\n '세금계산서, 현금영수증, 결제방법 변경 문의': '세금계산서, 현금영수증, 결제방법 변경 문의',\r\n '컨설팅, 구매, 비용, 견적 등 영업에 관련된 문의': '컨설팅, 구매, 비용, 견적 등 영업에 관련된 문의',\r\n 작업의뢰서: '작업의뢰서',\r\n 요청하신작업중고객님의승인이필요한작업리스트: '요청하신 작업 중 고객님의 승인이 필요한 작업 리스트',\r\n 담당자: '담당자',\r\n 올바른형식의파일이아닙니다: '올바른 형식의 파일이 아닙니다.',\r\n 파일크기는3MB를넘을수없습니다: '파일 크기는 3MB를 넘을 수 없습니다.',\r\n 카드자동결제: '카드자동결제',\r\n 첨부파일: '첨부파일',\r\n 호센서비스호스팅신청서CMS: '호센-서버호스팅신청서-cms.doc',\r\n 호센서비스호스팅신청서PDF: '호센-서버호스팅신청서-cms.pdf',\r\n 문의등록완료되었습니다: '문의 등록 완료되었습니다.',\r\n 서버IP를선택해주세요: '서버 IP를 선택해주세요.',\r\n 문의내용을선택해주세요: '문의 내용을 선택해주세요.',\r\n 문의글을작성해주세요: '문의 글을 작성해주세요.',\r\n 올바른파일형식이아니거나파일크기가3MB이하여만업로드가능합니다: '올바른 파일형식이 아니거나 파일크기가 3MB이하여만 업로드 가능합니다.',\r\n 기타문의: '기타문의',\r\n 시스템작업의뢰서: '시스템 작업의뢰서',\r\n 작업의뢰인: '작업의뢰인',\r\n 성명: '성명',\r\n 이메일: '이메일',\r\n 전화번호: '전화번호',\r\n 핸드폰번호: '핸드폰번호',\r\n 작업의뢰정보: '작업의뢰정보',\r\n 작업서버IP: '작업서버IP',\r\n 작업일시: '작업일시',\r\n 작업비용VAT포함: '작업비용(VAT포함)',\r\n 작업세부사항: '작업세부사항',\r\n 안내사항: '안내사항',\r\n 작업의뢰서폼1번: '1. 본 작업의뢰서는 호스트센터(주) 지정계좌로 작업비용을 납입함으로서 효력을 발휘합니다.',\r\n 작업의뢰서폼2번: `2. 작업의뢰는 서버의 자료(data)를 모두 백업 받은 이후에 의뢰하여야 하며, 작업 중 데이터 망실에 관하여 작업자나\r\n 회사에서 책임을 지지 않습니다.`,\r\n 작업의뢰서폼3번: '3. 작업 비용 산출은 담당자와 충분한 협의 후 신청하시기 바랍니다.',\r\n 작업의뢰서폼4번: '4. 루트 분실시는 사업자 등록증 사본 혹은 담당자 주민등록증 사본을 발송하셔야 합니다.',\r\n 작업의뢰서폼5번: '5. 작업의뢰 내용을 잘 확인하시고 승인하여 주시기 바랍니다.',\r\n 작업승인하기: '작업 승인하기',\r\n 승인하시겠습니까: '승인하시겠습니까?',\r\n 승인완료했습니다: '승인완료했습니다.',\r\n 승인요청: '승인요청',\r\n 승인완료: '승인완료',\r\n 작업중: '작업중',\r\n /*공지사항,보안뉴스,리포팅*/\r\n 작성일: '작성일',\r\n 작성자: '작성자',\r\n 리포트타입: '리포트 타입',\r\n 생성일: '생성일',\r\n 다운로드: '다운로드',\r\n 이전글: '이전 글',\r\n 다음글: '다음 글',\r\n 목록: '목록',\r\n 생성중: '생성중',\r\n\r\n /*지원센터 신청폼 */\r\n CDP백업복구폼: `\r\n **********************************************************\r\n 1 요청일자: \r\n \r\n 2 IDC: \r\n \r\n 3 업체명: \r\n \r\n 4 백업서버명: \r\n \r\n 5 아이피: 0.0.0.0\r\n \r\n 6*원본경로(예>D:/nuri_2012): \r\n \r\n 7 시점(예>06월 07일): \r\n \r\n 8*긴급여부(긴급/보통):\r\n \r\n 9*원본백업여부(했음/안했음): \r\n \r\n 10*덮어쓰기(함/안함):\r\n \r\n 11*복구경로(예>D:CDP_backup): \r\n \r\n 12 용량: \r\n \r\n 13*타입(파일/DB/파티션):\r\n \r\n 14 복구후조치사항: \r\n \r\n 15 소요시간(분): \r\n \r\n 16 기타: \r\n \r\n 요청시 주의사항:\r\n \r\n * 백업된 데이터가 있는지 유선상으로 문의하여 확인 후 요청하여 주시기 바랍니다.\r\n \r\n * 원본경로에 덮어쓰기로 요청하실 때는 요청 전에 반드시 원본을 백업하거나 폴더명 변경을 해 두시기 바랍니다.\r\n \r\n * 복구 소요시간은 용량, 파일수, 타깃서버환경 등에 따라 길어질 수 있습니다.\r\n \r\n *********************************************************** `,\r\n OS재설치폼: `\r\n OS재설치 요청서(*:필수항목)\r\n **************************************************************\r\n *1. OS재설치 가능 일시(예: 1945/8/15 오전10시 이후.): \r\n \r\n *2. OS재설치 서버아이피:\r\n \r\n *3. 백업여부:\r\n (백업이 없을 시 OS재설치 진행이 되지 않습니다.) \r\n \r\n *4. 설치할 OS버전 및 기타 설치정보(파티션정보): \r\n \r\n 5. OS재설치 사유: \r\n \r\n 6. 기타 요청사항: \r\n \r\n ◆ 요청 시 주의사항:\r\n \r\n *OS재설치 작업시간은 당사 작업 스케줄에 다라 유동적이며 지연될 수 있습니다.\r\n \r\n 오후3시 이후에 접수되는 설치 건은 익일 오전에 설치될 수 있으니 당일 오전 중에 접수를 해주시기 바랍니다.\r\n \r\n *야간 및(오후 4시이후) 주말에 설치를 원하시는 경우 고객님 서비스 형태에 따라 OS설치 비용이 발생할 수 있습니다.\r\n \r\n *OS재설치는 기본적으로 모든 데이터를 포맷하는 방식으로만 진행해 드리오니 고객님 쪽에서\r\n \r\n 꼭 백업을 받으시기 바라며, 작업간 발생하는 모든 데이타 망실은 자사에서 책임을 지지 않습니다.\r\n \r\n *데이타 백업이 여의치 않으실 경우 신규 또는 재고 디스크를 구매하여 기존디스크 보존 후\r\n \r\n OS재설치 되는 방식으로 요청을 주시기 바랍니다.\r\n **************************************************************`,\r\n 방화벽룰셋폼: `\r\n 방화벽 룰셋을 아래와 같이 요청합니다. \r\n *************************************************************\r\n 소스 IP(서버에 접속할 외부의 컴퓨터) : \r\n 대상 IP(외부에서 접속할 서버): \r\n 프로그램(사용포트) : \r\n 정책(allow,reject,deny) : \r\n *************************************************************\r\n `,\r\n 인버스도메인폼: `\r\n <안내>\r\n 하단에 있는 인버스 도메인 신청서를 다운로드, 내용작성 후 \r\n 사업자등록증과 함께 업로드하여 주시기 바랍니다.\r\n `,\r\n CDP백업신청폼: `\r\n CDP 백업 서비스 신청을 위해 아래 내용을 작성하여 주시기 바랍니다. \r\n -------------------------------------------------------------------\r\n CDP 백업 서비스 신청서\r\n 1. 서비스타입: CDP-100G / CDP-3m / CDP-1m \r\n \r\n 2. 업체명: \r\n \r\n 3. 서버아이피: 0.0.0.0\r\n \r\n 4. 서버접속정보: ID PW 접속PORT \r\n \r\n 5. 초기백업일자: 2014년 0월 0일 오전 00시 \r\n \r\n 6. 백업대상: 예1)전체 예2)전체(F:제외) 예3)전체(/backup 제외) \r\n \r\n 7. 백업용량: (백업대상의 총 용량을 합산하여 기입) \r\n \r\n 8. 백업주기: hourly 혹은 daily-3am \r\n \r\n 9. 보관주기: 7days \r\n \r\n 10. 백업결과수신메일: \r\n \r\n 11. 기타 특이사항: \r\n \r\n * 서비스타입: \r\n CDP-3m: CDP Ent.라이센스 + 초기구성 + 기술지원 + 관제 + 디스크 무상 제공(500G) = 월 3만원(VAT별도) \r\n CDP-100G: CDP Ent.라이센스 + 초기구성 + 기술지원 + 관제 + 원격백업 100G 무상 제공 = 월 5만원(VAT별도) \r\n \r\n * 백업 용량초과시 안내(CDP-100G 타입만 해당) \r\n - 백업계약용량(기본 100G)이 초과되어도 백업은 되지만 장기간 초과 시 추가요금이 청구됩니다. \r\n - 백업계약용량은 백업서버에 저장되는 용량 기준입니다.(원본의 약 150%) \r\n \r\n * 서버 설정, 하드웨어 및 소프트웨어 변경 등의 문제로 백업이 안될 경우 서비스가 지원이 안될 수 있습니다. \r\n 변경 사항 발생 시 반드시 별도로 알려 주시기 바랍니다. \r\n \r\n * DB 테이블 백업은 지원되지 않으니 별도로 상담하여 주시기 바랍니다. \r\n \r\n * CDP 백업 복구 요청 \r\n - 데이터 혹은 디스크 복구가 필요한 경우, 기술지원>기술문의>장애처리요청>[CDP_백업_복구요청] 템플릿을 선택해서 항목 작성하여 신청해 주시기 바랍니다. \r\n - 파일단위 복구 시 한글파일이름은 utf-8만 지원됩니다.(파티션 복구 시는 무관함) \r\n \r\n * CDP 백업 서비스 해지 \r\n - 별도 해지 절차 참조. \r\n - CDP 백업 서비스 해지 신청서 확인 후, 보관된 고객의 데이터는 즉시 삭제 되며 라이센스가 회수됩니다.`,\r\n CMS신청폼: `\r\n 하단 CMS 신청서를 다운로드하여 작성 후 업로드하여 주시기 바랍니다.\r\n `,\r\n 카드자동결제신청폼: `\r\n 하단 링크에서 카드 자동결제 신청하여 주시기 바랍니다.\r\n `,\r\n 세금계산서발행신청폼: `\r\n * 원하시는 문의 내용을 기재해주시기 바랍니다. (예시. 세금계산서 발행, 세금계산서 분리 발행 등)\r\n - 요청사항:\r\n \r\n * 공급받는 자 정보를 기입하여 주시기 바랍니다.\r\n ==========================================\r\n - 사업자등록번호:\r\n - 상호(법인명):\r\n - 대표자명:\r\n - 사업장주소:\r\n - 업태/종목:\r\n - 이메일주소:\r\n ==========================================\r\n `,\r\n 현금영수증발행신청폼: `\r\n - 상호 or 성명 :\r\n - 현금영수증 번호: \r\n - 기타 문의 사항:`,\r\n};\r\n","import * as localeKo from './ko/Lang';\r\nimport * as localeEn from './en/Lang';\r\nimport * as localeCh from './ch/Lang';\r\n\r\nexport const ko = { ...localeKo };\r\nexport const en = { ...localeEn };\r\nexport const zh = { ...localeCh };\r\nexport default { ko, en, zh };\r\n","import i18n from 'i18next';\r\nimport { initReactI18next } from 'react-i18next';\r\nimport { ko, en, zh } from './locales';\r\nimport LanguageDetector from 'i18next-browser-languagedetector';\r\n\r\ni18n.use(LanguageDetector)\r\n .use(initReactI18next)\r\n .init({\r\n resources: { ko, en, zh },\r\n debug: false,\r\n detection: {\r\n order: ['cookie', 'navigator'],\r\n caches: ['cookie'],\r\n },\r\n });\r\n\r\nexport default i18n;\r\n","import React from 'react';\r\nimport { useHistory } from 'react-router-dom';\r\nimport { CallbackComponent } from 'redux-oidc';\r\nimport { setAuthHeader } from '../utils/axiosHeaders';\r\nimport userManager from '../utils/userManager';\r\nimport { useLocation } from 'react-router-dom';\r\n\r\nfunction Callback() {\r\n const location = useLocation();\r\n const history = useHistory();\r\n const successCallback = (user) => {\r\n //setAuthHeader();\r\n\r\n const storedValue = localStorage.getItem('pvUrl');\r\n if (window.name !== '') {\r\n history.push('/' + window.name);\r\n } else if (storedValue) {\r\n history.push(storedValue);\r\n } else {\r\n // 이전 페이지 정보가 없을 경우 대체할 URL로 이동\r\n history.push('/DashBoard');\r\n }\r\n };\r\n const errorCallback = (error) => {\r\n userManager.clearStaleState();\r\n userManager.removeUser();\r\n history.push('/DashBoard');\r\n };\r\n return (\r\n \r\n
    Redirecting...
    \r\n
    \r\n );\r\n}\r\n\r\nexport default Callback;\r\n","import React from 'react';\r\nimport { useHistory } from 'react-router-dom';\r\nimport { SignoutCallbackComponent } from 'redux-oidc';\r\nimport { setAuthHeader } from '../utils/axiosHeaders';\r\nimport userManager from '../utils/userManager';\r\nimport { persistor } from '../redux/store';\r\nfunction OutCallback() {\r\n const history = useHistory();\r\n const successCallback = (user) => {\r\n persistor.purge();\r\n userManager.clearStaleState();\r\n userManager.removeUser();\r\n localStorage.clear();\r\n history.push('/DashBoard');\r\n };\r\n const errorCallback = (error) => {\r\n persistor.purge();\r\n userManager.clearStaleState();\r\n userManager.removeUser();\r\n localStorage.clear();\r\n history.push('/DashBoard');\r\n };\r\n return (\r\n \r\n
    Redirecting...
    \r\n
    \r\n );\r\n}\r\n\r\nexport default OutCallback;\r\n","import React from 'react';\r\nimport { processSilentRenew } from 'redux-oidc';\r\n\r\nexport const SilentRenewComponent = () => {\r\n processSilentRenew();\r\n return
    SilentRenewComponent
    ;\r\n};\r\n","// import React from \"react\";\r\n// import Layout from \"./components/Layout\";\r\n\r\n// const App = (props) => ;\r\n\r\n// export default App;\r\n\r\nimport React, { useEffect } from 'react';\r\nimport Layout from './components/Layout';\r\nimport { Provider } from 'react-redux';\r\nimport { store } from './redux/store';\r\nimport { BrowserRouter, Route, Switch } from 'react-router-dom';\r\nimport { OidcProvider } from 'redux-oidc';\r\n//import userManager, { loadUserFromStorage } from './services/userService';\r\nimport './i18n'; // 다국어 지원 파일\r\nimport { persistor } from './redux/store';\r\nimport { PersistGate } from 'redux-persist/integration/react';\r\nimport { CookiesProvider } from 'react-cookie';\r\nimport userManager from './utils/userManager';\r\nimport CallbackPage from './components/callback';\r\nimport OutCallback from './components/outCallback';\r\nimport { SilentRenewComponent } from './components/silentRenew';\r\n\r\nfunction App() {\r\n useEffect(() => {\r\n //loadUserFromStorage(store);\r\n }, []);\r\n const baseUrl = document.getElementsByTagName('base')[0].getAttribute('href');\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default App;\r\n","// import React from \"react\";\r\n// import ReactDOM from \"react-dom\";\r\n// import { BrowserRouter } from \"react-router-dom\";\r\n// import { Provider } from \"react-redux\";\r\n// import App from \"./App\";\r\n// import store from \"./redux/store\";\r\n// import registerServiceWorker from \"./registerServiceWorker\";\r\n// import './i18n' // 다국어 지원 파일\r\n// const rootElement = document.getElementById(\"root\");\r\n\r\n// ReactDOM.render(\r\n// \r\n// \r\n// \r\n// \r\n// ,\r\n// rootElement\r\n// );\r\n\r\n// registerServiceWorker();\r\n\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\n//import 'milligram/dist/milligram.min.css';\r\nimport App from './App';\r\n\r\nReactDOM.render(, document.getElementById('root'));\r\n","import axios from 'axios';\r\nimport { createAsyncThunk, createSlice } from '@reduxjs/toolkit';\r\n\r\nconst initState = {\r\n hostingBill: {\r\n loading: false,\r\n invoice: null,\r\n },\r\n};\r\n\r\nexport const billAction = {\r\n getSummaryBill: createAsyncThunk('GET/HOSTBILL', async (InvoiceType, { rejectWithValue }) => {\r\n const currentDate = new Date();\r\n const currentYear = currentDate.getFullYear();\r\n const currentMonth = currentDate.getMonth() + 1;\r\n let invoiceTypeNum = 0;\r\n switch (InvoiceType) {\r\n case 'idc':\r\n invoiceTypeNum = 1;\r\n break;\r\n case 'aws':\r\n invoiceTypeNum = 2;\r\n break;\r\n case 'ncp':\r\n invoiceTypeNum = 3;\r\n break;\r\n default:\r\n invoiceTypeNum = 1;\r\n break;\r\n }\r\n return await axios\r\n .post(`${process.env.REACT_APP_REQUEST_API_URL}Cost/Invoice`, {\r\n Year: currentYear,\r\n Month: currentMonth,\r\n InvoiceType: invoiceTypeNum,\r\n })\r\n .catch((error) => {\r\n const errorPayLoad = {};\r\n errorPayLoad['message'] = error.response.data;\r\n errorPayLoad['status'] = error.response.status;\r\n return rejectWithValue(errorPayLoad);\r\n });\r\n }),\r\n};\r\n\r\nconst ReducerDashboardBill = createSlice({\r\n name: 'ReducerDashboardBill',\r\n initialState: initState,\r\n reducers: {},\r\n extraReducers: (builder) => {\r\n builder\r\n .addCase(billAction.getSummaryBill.pending, (state) => {\r\n state.hostingBill.loading = true;\r\n })\r\n .addCase(billAction.getSummaryBill.fulfilled, (state, action) => {\r\n state.hostingBill.loading = false;\r\n state.hostingBill.invoice = action.payload.data;\r\n })\r\n .addCase(billAction.getSummaryBill.rejected, (state, action) => {\r\n state.hostingBill.loading = false;\r\n //state.ModalError = action.payload;\r\n });\r\n },\r\n});\r\n\r\nexport default ReducerDashboardBill.reducer;\r\n"],"sourceRoot":""}