File size: 2,152 Bytes
f120063
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
/**
 * SSXMOD Cookie 管理器
 * 负责生成和定时刷新 ssxmod_itna 和 ssxmod_itna2 Cookie
 */

const { generateCookies } = require('./cookie-generator');
const { logger } = require('./logger');

// 全局 Cookie 存储
let currentCookies = {
    ssxmod_itna: '',
    ssxmod_itna2: '',
    timestamp: 0
};

// 刷新间隔 (15分钟)
const REFRESH_INTERVAL = 15 * 60 * 1000;

// 定时器引用
let refreshTimer = null;

/**
 * 刷新 SSXMOD Cookie
 */
function refreshCookies() {
    try {
        const result = generateCookies();
        currentCookies = {
            ssxmod_itna: result.ssxmod_itna,
            ssxmod_itna2: result.ssxmod_itna2,
            timestamp: result.timestamp
        };
        logger.info(`SSXMOD Cookie 已刷新`, 'SSXMOD');
    } catch (error) {
        logger.error('SSXMOD Cookie 刷新失败', 'SSXMOD', '', error.message);
    }
}

/**
 * 初始化 SSXMOD 管理器
 * 启动时生成一次 Cookie,并设置定时刷新
 */
function initSsxmodManager() {
    // 立即生成一次
    refreshCookies();

    // 设置定时刷新 (每15分钟)
    if (refreshTimer) {
        clearInterval(refreshTimer);
    }
    refreshTimer = setInterval(refreshCookies, REFRESH_INTERVAL);

    logger.info(`SSXMOD 管理器已启动,刷新间隔: ${REFRESH_INTERVAL / 1000 / 60} 分钟`, 'SSXMOD');
}

/**
 * 获取当前 ssxmod_itna
 * @returns {string} ssxmod_itna 值
 */
function getSsxmodItna() {
    return currentCookies.ssxmod_itna;
}

/**
 * 获取当前 ssxmod_itna2
 * @returns {string} ssxmod_itna2 值
 */
function getSsxmodItna2() {
    return currentCookies.ssxmod_itna2;
}

/**
 * 获取完整的 Cookie 对象
 * @returns {Object} 包含 ssxmod_itna 和 ssxmod_itna2 的对象
 */
function getCookies() {
    return { ...currentCookies };
}

/**
 * 停止定时刷新
 */
function stopRefresh() {
    if (refreshTimer) {
        clearInterval(refreshTimer);
        refreshTimer = null;
        logger.info('SSXMOD 定时刷新已停止', 'SSXMOD');
    }
}

module.exports = {
    initSsxmodManager,
    getSsxmodItna,
    getSsxmodItna2,
    getCookies,
    refreshCookies,
    stopRefresh
};