From 782f0a77512ae58b15a9369271c4ae30d8122e7e Mon Sep 17 00:00:00 2001 From: Sefinek Date: Sat, 18 Jan 2025 04:42:41 +0100 Subject: [PATCH] 0.1.1 --- index.js | 6 +++--- package-lock.json | 20 ++++++++++---------- package.json | 6 +++--- services/serverAddress.js | 40 +++++++++++++++++++++++++++++++++++++++ services/serverIp.js | 22 --------------------- 5 files changed, 56 insertions(+), 38 deletions(-) create mode 100644 services/serverAddress.js delete mode 100644 services/serverIp.js diff --git a/index.js b/index.js index 3372e0b..be75d98 100644 --- a/index.js +++ b/index.js @@ -6,7 +6,7 @@ const isLocalIP = require('./services/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 getServerIP = require('./services/serverIp.js'); +const serverAddress = require('./services/serverAddress.js'); const config = require('./config.js'); const { version } = require('./package.json'); const { UFW_FILE, ABUSEIPDB_API_KEY, SERVER_ID, GITHUB_REPO } = config.MAIN; @@ -63,8 +63,8 @@ const processLogLine = async line => { return; } - if (srcIp === getServerIP()) { - log(0, 'Ignoring own IP'); + if (serverAddress().includes(srcIp)) { + log(0, `Ignoring own IP address: ${srcIp}`); return; } diff --git a/package-lock.json b/package-lock.json index a73791d..a0b417d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "ufw-abuseipdb-reporter", - "version": "0.1.0", + "version": "0.1.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "ufw-abuseipdb-reporter", - "version": "0.1.0", + "version": "0.1.1", "license": "GPL-3.0", "dependencies": { "axios": "^1.7.9", @@ -14,14 +14,14 @@ "ipaddr.js": "^2.2.0" }, "devDependencies": { - "@eslint/js": "^9.17.0", + "@eslint/js": "^9.18.0", "globals": "^15.14.0" } }, "node_modules/@eslint/js": { - "version": "9.17.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.17.0.tgz", - "integrity": "sha512-Sxc4hqcs1kTu0iID3kcZDW3JHq2a77HO9P8CP6YEA/FpH3Ll8UXE2r/86Rz9YJLKme39S9vU5OWNjC6Xl0Cr3w==", + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.18.0.tgz", + "integrity": "sha512-fK6L7rxcq6/z+AaQMtiFTkvbHkBLNlwyRxHpKawP0x3u9+NC6MQTnFW+AdpwC6gfHTW0051cokQgtTN2FqlxQA==", "dev": true, "license": "MIT", "engines": { @@ -165,12 +165,12 @@ "license": "MIT" }, "node_modules/readdirp": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.2.tgz", - "integrity": "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.1.tgz", + "integrity": "sha512-h80JrZu/MHUZCyHu5ciuoI0+WxsCxzxJTILn6Fs8rxSnFPh+UVHYfeIxK1nVGugMqkfC4vJcBOYbkfkwYK0+gw==", "license": "MIT", "engines": { - "node": ">= 14.16.0" + "node": ">= 14.18.0" }, "funding": { "type": "individual", diff --git a/package.json b/package.json index e34f6e5..00fda1b 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "ufw-abuseipdb-reporter", - "version": "0.1.0", - "description": "", + "version": "0.1.1", + "description": "A tool (with a simple installer) that monitors UFW firewall logs in real time and reports IP addresses to the AbuseIPDB database.", "keywords": [ "ufw", "abuseipdb" @@ -28,7 +28,7 @@ "ipaddr.js": "^2.2.0" }, "devDependencies": { - "@eslint/js": "^9.17.0", + "@eslint/js": "^9.18.0", "globals": "^15.14.0" } } diff --git a/services/serverAddress.js b/services/serverAddress.js new file mode 100644 index 0000000..8e5a53d --- /dev/null +++ b/services/serverAddress.js @@ -0,0 +1,40 @@ +const os = require('node:os'); +const axios = require('./axios.js'); +const isLocalIP = require('./isLocalIP.js'); + +let ipAddressList = []; + +const fetchIPv4Address = async () => { + try { + const { data } = await axios.get('https://api.sefinek.net/api/v2/ip'); + if (data?.success && data?.message) ipAddressList.push(data.message); + } catch (err) { + console.warn('Error fetching IPv4 address:', err.message); + } +}; + +const fetchIPv6Address = () => { + const networkInterfaces = os.networkInterfaces(); + + for (const interfaces of Object.values(networkInterfaces)) { + for (const details of interfaces) { + const ip = details.address; + if (!details.internal && ip && !isLocalIP(ip)) ipAddressList.push(ip); + } + } +}; + +const fetchIPAddress = async () => { + ipAddressList = []; + await fetchIPv4Address(); + fetchIPv6Address(); +}; + +(async () => { + await fetchIPAddress(); + setInterval(fetchIPAddress, 25 * 1000); + + console.log(ipAddressList); +})(); + +module.exports = () => [...ipAddressList]; \ No newline at end of file diff --git a/services/serverIp.js b/services/serverIp.js deleted file mode 100644 index 6a08bf0..0000000 --- a/services/serverIp.js +++ /dev/null @@ -1,22 +0,0 @@ -const axios = require('./axios.js'); - -let address = null; - -const fetchIPAddress = async () => { - if (address) return; - - try { - const { data } = await axios.get('https://api.sefinek.net/api/v2/ip'); - if (data?.success && data?.message) { - address = data.message; - } else { - setTimeout(fetchIPAddress, 20 * 1000); - } - } catch { - setTimeout(fetchIPAddress, 25 * 1000); - } -}; - -(async () => fetchIPAddress())(); - -module.exports = () => address; \ No newline at end of file