/** * BIOS Baseline 비교 JavaScript * backend/static/js/bios_baseline.js */ // 전역 변수 let baselines = []; let comparisonResults = []; let showDiffOnly = true; // ======================================== // 초기화 // ======================================== document.addEventListener('DOMContentLoaded', () => { loadBaselines(); // IP 입력 카운트 업데이트 document.getElementById('ip-addresses').addEventListener('input', updateIPCount); // Baseline 생성 폼 제출 document.getElementById('create-baseline-form').addEventListener('submit', handleCreateBaseline); }); // ======================================== // Baseline 관리 // ======================================== async function loadBaselines() { try { const res = await fetch('/bios-baseline/api/baselines'); const data = await res.json(); if (data.success) { baselines = data.baselines; renderBaselineSelect(); } } catch (e) { console.error('Baseline 로드 실패:', e); } } function renderBaselineSelect() { const select = document.getElementById('baseline-select'); select.innerHTML = ''; baselines.forEach(baseline => { const option = document.createElement('option'); option.value = baseline.id; option.textContent = `${baseline.name} (${baseline.server_model})`; select.appendChild(option); }); } function showBaselineManageModal() { const modal = new bootstrap.Modal(document.getElementById('baseline-manage-modal')); modal.show(); loadBaselineList(); } async function loadBaselineList() { const container = document.getElementById('baseline-list'); container.innerHTML = '
${baseline.server_model} ${baseline.server_type ? `${baseline.server_type}` : ''}
${baseline.description || '설명 없음'}
${baseline.total_settings}개 설정 ${new Date(baseline.created_at).toLocaleDateString()}
총 서버
평균 일치율
불일치 항목
완전 일치
Baseline: ${baseline.name} (${baseline.server_model}) 총 설정: ${baseline.total_settings}개
결과가 없습니다
'; return; } let html = '| 항목 | 기준값 (Baseline) | 실제값 (Server) |
|---|---|---|
|
${diff.display_name ? `${diff.display_name} ${diff.setting_name}` : ` ${diff.setting_name}`}
|
${diff.expected} | ${diff.actual} |