<?php
include_once('./_common.php');

if ($is_guest) {
    alert('판매자센터만 이용가능합니다.', APMS_PARTNER_URL . '/login.php');
}

if ($is_admin !== 'super') {
    alert('최고관리자만 실행할 수 있습니다.', APMS_PARTNER_URL);
}

@set_time_limit(0);

$table = $g5['apms_vpn_server_log'];

$dry_run = isset($_GET['dry_run']) ? (int)$_GET['dry_run'] : 1; // 기본은 dry-run
$apply = isset($_GET['apply']) ? (int)$_GET['apply'] : 0;
if ($apply === 1) {
    $dry_run = 0;
}

header('Content-Type: text/plain; charset=utf-8');

echo "=== VPN Server Registration Audit Log Table Migration ===\n";
echo "time    : " . G5_TIME_YMDHIS . "\n";
echo "table   : {$table}\n";
echo "dry_run : {$dry_run}\n";
echo "apply   : {$apply}\n";

$exists_row = sql_fetch("show tables like '{$table}'", false);
$already_exists = is_array($exists_row) && count($exists_row) > 0;
echo "exists  : " . ($already_exists ? 'yes' : 'no') . "\n";

$create_sql = "
    CREATE TABLE IF NOT EXISTS `{$table}` (
      `log_no` int(11) NOT NULL AUTO_INCREMENT,
      `vs_ip` varchar(64) NOT NULL DEFAULT '',
      `vs_hostname` varchar(255) NOT NULL DEFAULT '',
      `pt_id_attempted` varchar(255) NOT NULL DEFAULT '' COMMENT '등록을 시도한 mb_id (인증 실패해도 기록)',
      `previous_pt_id` varchar(255) NOT NULL DEFAULT '' COMMENT '소유권 이전이 발생한 경우 이전 판매자',
      `result` varchar(30) NOT NULL DEFAULT '' COMMENT 'success/invalid_credentials/not_approved_seller/...',
      `message` varchar(255) NOT NULL DEFAULT '',
      `request_ip` varchar(64) NOT NULL DEFAULT '' COMMENT '요청을 보낸 소스 IP (REMOTE_ADDR)',
      `vs_key_prefix` varchar(16) NOT NULL DEFAULT '' COMMENT '발급된 토큰 앞 8자리(상관관계 추적용, 전체 토큰은 기록하지 않음)',
      `grade` varchar(20) NOT NULL DEFAULT '' COMMENT '시도 시점에 보고된 자동측정 등급(BASIC~MAX)',
      `grade_score` int(11) NOT NULL DEFAULT '0',
      `recommended_vpn_id_count` int(11) NOT NULL DEFAULT '0',
      `current_vpn_id_count` int(11) NOT NULL DEFAULT '0',
      `metrics_json` text COMMENT '시도 시점의 CPU/메모리/네트워크 진단 스냅샷(JSON)',
      `created_at` datetime NOT NULL,
      PRIMARY KEY (`log_no`),
      KEY `pt_id_attempted` (`pt_id_attempted`),
      KEY `vs_ip_hostname` (`vs_ip`,`vs_hostname`),
      KEY `created_at` (`created_at`)
    ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
";

echo "\n--- SQL to run ---\n{$create_sql}\n";

if ($dry_run === 1 || $apply !== 1) {
    echo "\n[DRY-RUN] 테이블이 생성되지 않았습니다.\n";
    echo "\n실행 가이드:\n";
    echo "1) 우선 dry-run 확인 (기본): ?dry_run=1\n";
    echo "2) 실제 적용: ?apply=1\n";
    exit;
}

sql_query($create_sql);

$exists_after = sql_fetch("show tables like '{$table}'", false);
$ok = is_array($exists_after) && count($exists_after) > 0;

echo "\nresult: " . ($ok ? 'OK - table ready' : 'FAILED') . "\n";
