0.1.1
This commit is contained in:
1 parent
4a51d910e4
commit
782f0a7751
5 files changed
+56
-38
No files matched your search
@@ -6,7 +6,7 @@ const isLocalIP = require('./services/isLocalIP.js');
|
|||||||
const { reportedIPs, loadReportedIPs, saveReportedIPs, isIPReportedRecently, markIPAsReported } = require('./services/cache.js');
|
const { reportedIPs, loadReportedIPs, saveReportedIPs, isIPReportedRecently, markIPAsReported } = require('./services/cache.js');
|
||||||
const log = require('./utils/log.js');
|
const log = require('./utils/log.js');
|
||||||
const axios = require('./services/axios.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 config = require('./config.js');
|
||||||
const { version } = require('./package.json');
|
const { version } = require('./package.json');
|
||||||
const { UFW_FILE, ABUSEIPDB_API_KEY, SERVER_ID, GITHUB_REPO } = config.MAIN;
|
const { UFW_FILE, ABUSEIPDB_API_KEY, SERVER_ID, GITHUB_REPO } = config.MAIN;
|
||||||
@@ -63,8 +63,8 @@ const processLogLine = async line => {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (srcIp === getServerIP()) {
|
if (serverAddress().includes(srcIp)) {
|
||||||
log(0, 'Ignoring own IP');
|
log(0, `Ignoring own IP address: ${srcIp}`);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Generated
+10
-10
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "ufw-abuseipdb-reporter",
|
"name": "ufw-abuseipdb-reporter",
|
||||||
"version": "0.1.0",
|
"version": "0.1.1",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "ufw-abuseipdb-reporter",
|
"name": "ufw-abuseipdb-reporter",
|
||||||
"version": "0.1.0",
|
"version": "0.1.1",
|
||||||
"license": "GPL-3.0",
|
"license": "GPL-3.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"axios": "^1.7.9",
|
"axios": "^1.7.9",
|
||||||
@@ -14,14 +14,14 @@
|
|||||||
"ipaddr.js": "^2.2.0"
|
"ipaddr.js": "^2.2.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@eslint/js": "^9.17.0",
|
"@eslint/js": "^9.18.0",
|
||||||
"globals": "^15.14.0"
|
"globals": "^15.14.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@eslint/js": {
|
"node_modules/@eslint/js": {
|
||||||
"version": "9.17.0",
|
"version": "9.18.0",
|
||||||
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.17.0.tgz",
|
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.18.0.tgz",
|
||||||
"integrity": "sha512-Sxc4hqcs1kTu0iID3kcZDW3JHq2a77HO9P8CP6YEA/FpH3Ll8UXE2r/86Rz9YJLKme39S9vU5OWNjC6Xl0Cr3w==",
|
"integrity": "sha512-fK6L7rxcq6/z+AaQMtiFTkvbHkBLNlwyRxHpKawP0x3u9+NC6MQTnFW+AdpwC6gfHTW0051cokQgtTN2FqlxQA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
@@ -165,12 +165,12 @@
|
|||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/readdirp": {
|
"node_modules/readdirp": {
|
||||||
"version": "4.0.2",
|
"version": "4.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.1.tgz",
|
||||||
"integrity": "sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==",
|
"integrity": "sha512-h80JrZu/MHUZCyHu5ciuoI0+WxsCxzxJTILn6Fs8rxSnFPh+UVHYfeIxK1nVGugMqkfC4vJcBOYbkfkwYK0+gw==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">= 14.16.0"
|
"node": ">= 14.18.0"
|
||||||
},
|
},
|
||||||
"funding": {
|
"funding": {
|
||||||
"type": "individual",
|
"type": "individual",
|
||||||
|
|||||||
+3
-3
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "ufw-abuseipdb-reporter",
|
"name": "ufw-abuseipdb-reporter",
|
||||||
"version": "0.1.0",
|
"version": "0.1.1",
|
||||||
"description": "",
|
"description": "A tool (with a simple installer) that monitors UFW firewall logs in real time and reports IP addresses to the AbuseIPDB database.",
|
||||||
"keywords": [
|
"keywords": [
|
||||||
"ufw",
|
"ufw",
|
||||||
"abuseipdb"
|
"abuseipdb"
|
||||||
@@ -28,7 +28,7 @@
|
|||||||
"ipaddr.js": "^2.2.0"
|
"ipaddr.js": "^2.2.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@eslint/js": "^9.17.0",
|
"@eslint/js": "^9.18.0",
|
||||||
"globals": "^15.14.0"
|
"globals": "^15.14.0"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -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];
|
||||||
@@ -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;
|
|
||||||
Reference in new issue
Block a user