diff --git a/index.js b/index.js index 1e001ab..7600ef4 100644 --- a/index.js +++ b/index.js @@ -9,7 +9,7 @@ const isLocalIP = require('./utils/isLocalIP.js'); const { reportedIPs, loadReportedIPs, saveReportedIPs, isIPReportedRecently, markIPAsReported } = require('./services/cache.js'); const log = require('./utils/log.js'); const axios = require('./services/axios.js'); -const serverAddress = require('./services/serverAddress.js'); +const serverAddress = require('./services/fetchServerIP.js'); const config = require('./config.js'); const { version } = require('./package.json'); const { UFW_LOG_FILE, ABUSEIPDB_API_KEY, SERVER_ID, GITHUB_REPO } = config.MAIN; diff --git a/services/fetchServerIP.js b/services/fetchServerIP.js new file mode 100644 index 0000000..af23c45 --- /dev/null +++ b/services/fetchServerIP.js @@ -0,0 +1,40 @@ +const { networkInterfaces } = require('node:os'); +const axios = require('./axios.js'); +const isLocalIP = require('../utils/isLocalIP.js'); +const { REFRESHING_IP_ADDRESS } = require('../config.js').MAIN; + +const ipAddrList = new Set(); + +const fetchIPv4Address = async () => { + try { + const { data } = await axios.get('https://api.sefinek.net/api/v2/ip'); + if (data?.success && data?.message) ipAddrList.add(data.message); + } catch (err) { + console.warn('Error fetching IPv4 address:', err.message); + } +}; + +const fetchIPv6Address = () => { + try { + Object.values(networkInterfaces()).flat().forEach(({ address, internal }) => { + if (!internal && address && !isLocalIP(address)) ipAddrList.add(address); + }); + } catch (err) { + console.warn('Error fetching IPv6 address:', err.message); + } +}; + +const fetchServerIPs = async () => { + ipAddrList.clear(); + await fetchIPv4Address(); + fetchIPv6Address(); +}; + +(async () => { + await fetchServerIPs(); + setInterval(fetchServerIPs, REFRESHING_IP_ADDRESS); + + // console.debug(ipAddrList); +})(); + +module.exports = () => Array.from(ipAddrList); \ No newline at end of file diff --git a/services/serverAddress.js b/services/serverAddress.js deleted file mode 100644 index cae1c01..0000000 --- a/services/serverAddress.js +++ /dev/null @@ -1,41 +0,0 @@ -const os = require('node:os'); -const axios = require('./axios.js'); -const isLocalIP = require('../utils/isLocalIP.js'); -const { REFRESHING_IP_ADDRESS } = require('../config.js').MAIN; - -const ipAddressList = new Set(); - -const fetchIPv4Address = async () => { - try { - const { data } = await axios.get('https://api.sefinek.net/api/v2/ip'); - if (data?.success && data?.message) ipAddressList.add(data.message); - } catch (err) { - console.warn('Error fetching IPv4 address:', err.message); - } -}; - -const fetchIPv6Address = () => { - const networkInterfaces = os.networkInterfaces(); - - Object.values(networkInterfaces).forEach(interfaces => { - interfaces.forEach(details => { - const ip = details.address; - if (!details.internal && ip && !isLocalIP(ip)) ipAddressList.add(ip); - }); - }); -}; - -const fetchIPAddress = async () => { - ipAddressList.clear(); - await fetchIPv4Address(); - fetchIPv6Address(); -}; - -(async () => { - await fetchIPAddress(); - setInterval(fetchIPAddress, REFRESHING_IP_ADDRESS); - - // console.debug(ipAddressList); -})(); - -module.exports = () => Array.from(ipAddressList); \ No newline at end of file