ddmaster 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.js ADDED
@@ -0,0 +1,3 @@
1
+ const lib = require('./testserverlist');
2
+
3
+ module.exports = lib.getAllDDNetServersIPv4WithPorts;
package/package.json ADDED
@@ -0,0 +1,15 @@
1
+ {
2
+ "name": "ddmaster",
3
+ "version": "1.0.0",
4
+ "description": "",
5
+ "main": "index.js",
6
+ "scripts": {
7
+ "test": "echo \"Error: no test specified\" && exit 1"
8
+ },
9
+ "keywords": [
10
+ "DDNet"
11
+ ],
12
+ "author": "",
13
+ "license": "MIT",
14
+ "type": "commonjs"
15
+ }
@@ -0,0 +1,59 @@
1
+ async function getDDNetServers() {
2
+ try {
3
+ const response = await fetch('https://master1.ddnet.org/ddnet/15/servers.json');
4
+ if (!response.ok) {
5
+ throw new Error(`Ошибка при запросе: ${response.status}`);
6
+ }
7
+ const data = await response.json();
8
+
9
+ const targetNick = 'tee';
10
+ let found = false;
11
+ data.servers.forEach(server => {
12
+ server.info.clients.forEach(player => {
13
+ if (player.name.includes(targetNick)) {
14
+ console.log(`\nНашёл ${targetNick} на сервере ${server.info.name} (${server.addresses[0]}), карта: ${server.info.map.name}`);
15
+ found = true;
16
+ }
17
+ });
18
+ });
19
+ if (!found) {
20
+ console.log(`\nИгрок ${targetNick} не найден.`);
21
+ }
22
+ } catch (error) {
23
+ console.error('Ошибка:', error);
24
+ }
25
+ }
26
+
27
+ async function getAllDDNetServersIPv4WithPorts() {
28
+ try {
29
+ const response = await fetch('https://master1.ddnet.org/ddnet/15/servers.json');
30
+ if (!response.ok) throw new Error(`Ошибка при запросе: ${response.status}`);
31
+
32
+ const { servers } = await response.json();
33
+ const ipv4WithPorts = [];
34
+
35
+ for (const server of servers) {
36
+ server.addresses.forEach(addr => {
37
+ // ищем только IPv4 с портом
38
+ const match = addr.match(/(\d{1,3}(\.\d{1,3}){3}:\d+)/);
39
+ if (match) ipv4WithPorts.push(match[1]);
40
+ });
41
+ }
42
+
43
+ // убираем дубли
44
+ return [...new Set(ipv4WithPorts)];
45
+ } catch (err) {
46
+ console.error('Ошибка:', err.message);
47
+ return [];
48
+ }
49
+ }
50
+
51
+ // Использование:
52
+ const fs = require('fs');
53
+
54
+ if (require.main === module) getAllDDNetServersIPv4WithPorts().then(addresses => {
55
+ fs.writeFileSync('servers.json', JSON.stringify(addresses, null, 2), 'utf-8');
56
+ console.log('Список серверов сохранён в servers.txt');
57
+ });
58
+
59
+ module.exports = { getAllDDNetServersIPv4WithPorts }