first commit

This commit is contained in:
Pandawa24Jam Digital Printing 2025-01-02 16:13:38 +07:00
commit 75f12b6daf
4 changed files with 120 additions and 0 deletions

4
.gitignore vendored Normal file
View File

@ -0,0 +1,4 @@
node_modules/
.env
test/
package-lock.json

1
README.md Normal file
View File

@ -0,0 +1 @@
NodeJs - 22.12.0

100
index.js Normal file
View File

@ -0,0 +1,100 @@
const speedTest = require('speedtest-net');
const axios = require('axios');
async function runSpeedTest(serverId) {
const options = {
serverId,
acceptLicense: true,
acceptGdpr: true,
};
try {
console.log(`Testing speed with server ID: ${serverId}, please wait...`);
const result = await speedTest(options);
// Format hasil
const output = {
timestamp: new Date().toISOString(),
ping: {
jitter: result.ping.jitter,
latency: result.ping.latency,
},
download: {
bandwidth: result.download.bandwidth,
bytes: result.download.bytes,
elapsed: result.download.elapsed,
},
upload: {
bandwidth: result.upload.bandwidth,
bytes: result.upload.bytes,
elapsed: result.upload.elapsed,
},
packetLoss: result.packetLoss,
isp: result.isp,
interface: {
internalIp: result.interface.internalIp,
name: result.interface.name,
macAddr: result.interface.macAddr,
isVpn: result.interface.isVpn,
externalIp: result.interface.externalIp,
},
server: {
id: result.server.id,
name: result.server.name,
location: result.server.location,
country: result.server.country,
host: result.server.host,
port: result.server.port,
ip: result.server.ip,
},
result: {
id: result.result.id,
url: result.result.url,
},
};
console.log('Test complete. Result:');
console.log(JSON.stringify(output, null, 2));
return output;
} catch (error) {
console.error(`Error running speed test with server ID: ${serverId}:`, error.message);
throw error;
}
}
async function sendResultToServer(result) {
const url = 'https://raspberry.pandawa24jam.com/wbhkraspberry';
const headers = {
'Content-Type': 'application/json',
'author': 'vedeom',
};
try {
console.log('Sending result to server...');
const response = await axios.post(url, result, { headers });
console.log('Result successfully sent. Server response:');
console.log(response.data);
} catch (error) {
console.error('Failed to send result to server:', error.message);
}
}
(async () => {
try {
// Coba server pertama
const primaryServerId = 39296; // Gunadarma University
const result = await runSpeedTest(primaryServerId);
await sendResultToServer(result);
} catch (primaryError) {
console.warn('Primary server failed. Attempting backup server...');
// Jika server pertama gagal, coba server kedua
const backupServerId = 13039; // Server kedua
try {
const result = await runSpeedTest(backupServerId);
await sendResultToServer(result);
} catch (backupError) {
console.error('Backup server also failed. Please check your internet connection or server configurations.');
}
}
})();

15
package.json Normal file
View File

@ -0,0 +1,15 @@
{
"name": "speedtest-client",
"version": "1.0.0",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"description": "",
"dependencies": {
"axios": "^1.7.9"
}
}