diff --git a/log.log b/log.log index db4a72d..ad2f498 100644 --- a/log.log +++ b/log.log @@ -1,60 +1,104 @@ -13.02.25 18:7:16 I --------------------------------------------- -13.02.25 18:7:16 I jNet Server -13.02.25 18:7:16 I Version: 1 (Thu Feb 13 09:04:35 CET 2025) -13.02.25 18:7:16 I --------------------------------------------- -13.02.25 18:7:16 I -13.02.25 18:7:16 I Loading config ... -13.02.25 18:7:16 I successfully -13.02.25 18:7:16 D Debug mode on -13.02.25 18:7:16 I Connecting to a selected database ... -13.02.25 18:7:16 I successfully -13.02.25 18:7:16 I Loading user list ... -13.02.25 18:7:16 I load 2 user(s) -13.02.25 18:7:16 I Loading map list ... -13.02.25 18:7:16 I load 6 map(s) -13.02.25 18:7:16 I Loading object list ... -13.02.25 18:7:17 I load 8 object(s) -13.02.25 18:7:17 I Loading object type ... -13.02.25 18:7:17 I load 12 type(s) -13.02.25 18:7:17 I Loading SNMP profile ... -13.02.25 18:7:17 I load 2 profile(s) -13.02.25 18:7:17 I Loading events ... -13.02.25 18:7:17 I load 30 event(s) -13.02.25 18:7:17 I Ping probe start -13.02.25 18:7:17 I Server is ready and listening on port 1225 -13.02.25 18:7:49 D -> Message type: 1 -13.02.25 18:7:49 I Authorization request send (kubernetes.docker.internal) -13.02.25 18:7:49 D <- Message type: 3 -13.02.25 18:7:49 D -> Message type: 4 -13.02.25 18:7:49 I User: michal logged in (kubernetes.docker.internal) -13.02.25 18:7:49 D <- Message type: 5 -13.02.25 18:7:49 D <- Message type: 9 -13.02.25 18:7:49 D <- For all. Message type: 7 -13.02.25 18:7:49 D <- Message type: 13 -13.02.25 18:7:49 D <- Message type: 8 -13.02.25 18:7:49 D <- Message type: 8 -13.02.25 18:7:49 D <- Message type: 8 -13.02.25 18:7:49 D <- Message type: 8 -13.02.25 18:7:49 D <- Message type: 8 -13.02.25 18:7:49 D <- Message type: 8 -13.02.25 18:7:49 D <- Message type: 8 -13.02.25 18:7:49 D <- Message type: 8 -13.02.25 18:7:49 D <- Message type: 8 -13.02.25 18:7:49 D <- Message type: 8 -13.02.25 18:7:49 D <- Message type: 8 -13.02.25 18:7:49 D <- Message type: 8 -13.02.25 18:7:49 D <- Message type: 11 -13.02.25 18:7:49 D <- Message type: 11 -13.02.25 18:7:49 D <- Message type: 100 -13.02.25 18:7:49 D <- Message type: 100 -13.02.25 18:7:49 D <- Message type: 100 -13.02.25 18:7:49 D <- Message type: 100 -13.02.25 18:7:49 D <- Message type: 100 -13.02.25 18:7:49 D <- Message type: 100 -13.02.25 18:7:49 D <- Message type: 14 -13.02.25 18:7:49 D <- Message type: 110 -13.02.25 18:7:49 D <- Message type: 107 -13.02.25 18:7:49 D <- Message type: 107 -13.02.25 18:8:31 D -> Message type: 105 -13.02.25 18:8:31 D <- For all. Message type: 105 -13.02.25 18:8:31 D <- For all. Message type: 108 +13.02.25 20:29:14 I --------------------------------------------- +13.02.25 20:29:14 I jNet Server +13.02.25 20:29:14 I Version: 1 (Thu Feb 13 09:04:35 CET 2025) +13.02.25 20:29:14 I --------------------------------------------- +13.02.25 20:29:14 I +13.02.25 20:29:14 I Loading config ... +13.02.25 20:29:15 I successfully +13.02.25 20:29:15 D Debug mode on +13.02.25 20:29:15 I Connecting to a selected database ... +13.02.25 20:29:15 I successfully +13.02.25 20:29:15 I Loading user list ... +13.02.25 20:29:15 I load 2 user(s) +13.02.25 20:29:15 I Loading map list ... +13.02.25 20:29:15 I load 6 map(s) +13.02.25 20:29:15 I Loading object type ... +13.02.25 20:29:15 I load 12 type(s) +13.02.25 20:29:15 I Loading SNMP profile ... +13.02.25 20:29:15 I load 2 profile(s) +13.02.25 20:29:15 I Loading events ... +13.02.25 20:29:15 I load 35 event(s) +13.02.25 20:29:16 I Ping probe start +13.02.25 20:29:16 I Server is ready and listening on port 1225 +13.02.25 20:29:16 D -> Message type: 1 +13.02.25 20:29:16 I Authorization request send (kubernetes.docker.internal) +13.02.25 20:29:16 D <- Message type: 3 +13.02.25 20:29:16 D -> Message type: 4 +13.02.25 20:29:16 I User: michal logged in (kubernetes.docker.internal) +13.02.25 20:29:16 D <- Message type: 5 +13.02.25 20:29:16 D <- Message type: 9 +13.02.25 20:29:16 D <- For all. Message type: 7 +13.02.25 20:29:16 D <- Message type: 13 +13.02.25 20:29:16 D <- Message type: 8 +13.02.25 20:29:16 D <- Message type: 8 +13.02.25 20:29:16 D <- Message type: 8 +13.02.25 20:29:16 D <- Message type: 8 +13.02.25 20:29:16 D <- Message type: 8 +13.02.25 20:29:16 D <- Message type: 8 +13.02.25 20:29:16 D <- Message type: 8 +13.02.25 20:29:16 D <- Message type: 8 +13.02.25 20:29:16 D <- Message type: 8 +13.02.25 20:29:16 D <- Message type: 8 +13.02.25 20:29:16 D <- Message type: 8 +13.02.25 20:29:16 D <- Message type: 8 +13.02.25 20:29:16 D <- Message type: 11 +13.02.25 20:29:16 D <- Message type: 11 +13.02.25 20:29:16 D <- Message type: 100 +13.02.25 20:29:16 D <- Message type: 100 +13.02.25 20:29:16 D <- Message type: 100 +13.02.25 20:29:16 D <- Message type: 100 +13.02.25 20:29:16 D <- Message type: 100 +13.02.25 20:29:16 D <- Message type: 100 +13.02.25 20:29:16 D <- Message type: 110 +13.02.25 20:29:16 D <- Message type: 107 +13.02.25 20:29:16 D <- Message type: 107 +13.02.25 20:29:19 I Client disconnected +13.02.25 20:29:21 D -> Message type: 1 +13.02.25 20:29:21 I Authorization request send (kubernetes.docker.internal) +13.02.25 20:29:21 D <- Message type: 3 +13.02.25 20:29:21 D -> Message type: 4 +13.02.25 20:29:21 I User: michal logged in (kubernetes.docker.internal) +13.02.25 20:29:21 D <- Message type: 5 +13.02.25 20:29:21 D <- Message type: 9 +13.02.25 20:29:21 D <- For all. Message type: 7 +13.02.25 20:29:21 D <- Message type: 13 +13.02.25 20:29:21 D <- Message type: 8 +13.02.25 20:29:21 D <- Message type: 8 +13.02.25 20:29:21 D <- Message type: 8 +13.02.25 20:29:21 D <- Message type: 8 +13.02.25 20:29:21 D <- Message type: 8 +13.02.25 20:29:21 D <- Message type: 8 +13.02.25 20:29:21 D <- Message type: 8 +13.02.25 20:29:21 D <- Message type: 8 +13.02.25 20:29:21 D <- Message type: 8 +13.02.25 20:29:21 D <- Message type: 8 +13.02.25 20:29:21 D <- Message type: 8 +13.02.25 20:29:21 D <- Message type: 8 +13.02.25 20:29:21 D <- Message type: 11 +13.02.25 20:29:21 D <- Message type: 11 +13.02.25 20:29:21 D <- Message type: 100 +13.02.25 20:29:21 D <- Message type: 100 +13.02.25 20:29:21 D <- Message type: 100 +13.02.25 20:29:21 D <- Message type: 100 +13.02.25 20:29:21 D <- Message type: 100 +13.02.25 20:29:21 D <- Message type: 100 +13.02.25 20:29:21 D <- Message type: 110 +13.02.25 20:29:21 D <- Message type: 107 +13.02.25 20:29:21 D <- Message type: 107 +13.02.25 20:29:48 D -> Message type: 102 +13.02.25 20:29:48 D <- For all. Message type: 106 +13.02.25 20:29:51 D -> Message type: 102 +13.02.25 20:29:51 D <- For all. Message type: 106 +13.02.25 20:29:52 D -> Message type: 102 +13.02.25 20:29:52 D <- For all. Message type: 106 +13.02.25 20:29:53 D -> Message type: 102 +13.02.25 20:29:53 D <- For all. Message type: 106 +13.02.25 20:29:56 D -> Message type: 102 +13.02.25 20:29:56 D <- For all. Message type: 106 +13.02.25 20:29:57 D -> Message type: 102 +13.02.25 20:29:57 D <- For all. Message type: 106 +13.02.25 20:29:59 D -> Message type: 102 +13.02.25 20:29:59 D <- For all. Message type: 106 +13.02.25 20:30:38 D -> Message type: 105 +13.02.25 20:30:38 D <- For all. Message type: 105 +13.02.25 20:30:38 D <- For all. Message type: 108 diff --git a/src/jnet/server/Database.java b/src/jnet/server/Database.java index a6f505c..8b00c58 100644 --- a/src/jnet/server/Database.java +++ b/src/jnet/server/Database.java @@ -164,7 +164,8 @@ public class Database { Map m = new Map( rs.getInt("id"), rs.getString("name"), - rs.getBoolean("locked")); + rs.getBoolean("locked"), + getMapObject(rs.getInt("id"))); list.add(m); } rs.close(); diff --git a/src/jnet/server/Server.java b/src/jnet/server/Server.java index 0bdda30..c3c4ae9 100644 --- a/src/jnet/server/Server.java +++ b/src/jnet/server/Server.java @@ -31,13 +31,13 @@ public class Server { public static PropertiesManager config; public static List maps = new ArrayList<>(); - public static ArrayList mapObject= new ArrayList<>(); - public static ArrayList onlineClients = new ArrayList<>(); - public static ArrayList objectType = new ArrayList<>(); - public static ArrayList snmpProfile = new ArrayList<>(); - public static ArrayList snmpProbe = new ArrayList<>(); - public static ArrayList users = new ArrayList<>(); - public static ArrayList events = new ArrayList<>(); + //public static ArrayList mapObject= new ArrayList<>(); + public static List onlineClients = new ArrayList<>(); + public static List objectType = new ArrayList<>(); + public static List snmpProfile = new ArrayList<>(); + public static List snmpProbe = new ArrayList<>(); + public static List users = new ArrayList<>(); + public static List events = new ArrayList<>(); public static void main(String[] args) { @@ -101,10 +101,6 @@ public class Server { maps = Database.getMapList(); LogFile.printInfo(" load " + maps.size() + " map(s)"); - LogFile.printInfo("Loading object list ..."); - mapObject = Database.getAllMapObject(); - LogFile.printInfo(" load " + mapObject.size() + " object(s)"); - LogFile.printInfo("Loading object type ..."); objectType = Database.getObjectType(); LogFile.printInfo(" load " + objectType.size() + " type(s)"); diff --git a/src/jnet/server/ServerMessageParser.java b/src/jnet/server/ServerMessageParser.java index 9d2886a..a78c7a6 100644 --- a/src/jnet/server/ServerMessageParser.java +++ b/src/jnet/server/ServerMessageParser.java @@ -34,7 +34,6 @@ public class ServerMessageParser { LogFile.printDebug("-> Message type: " + msg.getType()); ListIterator iteratorMap = Server.maps.listIterator(); - ListIterator iteratorMapObject = Server.mapObject.listIterator(); switch (msg.getType()) { @@ -98,8 +97,6 @@ public class ServerMessageParser { for (Map i : Server.maps) { send(new Message(Message.MAP, i)); } - // odeslat seznam objektu - send(Message.OBJECT_LIST, Server.mapObject); // odeslat seznam udalosti send(new Message(Message.EVENT_LIST, Server.events)); // odeslat seznam snmp profilů @@ -148,7 +145,11 @@ public class ServerMessageParser { case Message.ADD_OBJECT: MapObject mo = Database.addMapObject((MapObject) msg.getMsg()); // pridat do seznamu - Server.mapObject.add(mo); + for (Map map : Server.maps) { + if (map.getId() == mo.getMap()) { + map.getObjects().add(mo); + } + } // odesle všem novy objekt sendAll(new Message(Message.ADD_OBJECT, mo)); // prida event a odesle ho @@ -162,17 +163,18 @@ public class ServerMessageParser { break; case Message.REMOVE_OBJECT: - while (iteratorMapObject.hasNext()) { - MapObject obj = iteratorMapObject.next(); - if (obj.getId() == (int) msg.getMsg()) { + for (Map map : Server.maps) { + for (MapObject object : map.getObjects()) { + if (object.getId() == (int) msg.getMsg()) { // odebere z databaze - Database.removeObject(obj.getId()); + Database.removeObject(object.getId()); // odesle informaci o odebrani objektu klientum - sendAll(new Message(Message.REMOVE_OBJECT, obj.getId())); + sendAll(new Message(Message.REMOVE_OBJECT, object.getId())); // odebere ze seznamu - iteratorMapObject.remove(); + map.getObjects().remove(object); break; } + } } break; @@ -209,18 +211,19 @@ public class ServerMessageParser { // zmenit v databázi Database.objectMove(data[0], data[1], data[2]); // zmenit v seznamu - while (iteratorMapObject.hasNext()) { - MapObject obj = iteratorMapObject.next(); - if (obj.getId() == data[0]) { + for (Map mapa : Server.maps) { + for (MapObject object : mapa.getObjects()) { + if (object.getId() == data[0]) { // zmenit pozici - obj.setX(data[1]); - obj.setY(data[2]); + object.setX(data[1]); + object.setY(data[2]); // zapsat zmenu do databaze Database.objectMove(data[0], data[1], data[2]); // preposlat zmenu klientum - sendAll(new Message(Message.UPDATE_OBJECT, obj)); + sendAll(new Message(Message.UPDATE_OBJECT, object)); break; } + } } break; case Message.UPDATE_OBJECT: @@ -228,11 +231,14 @@ public class ServerMessageParser { // zmenit v databazi Database.updateObject(mo_u); // zmenit v seznamu - while (iteratorMapObject.hasNext()) { - if (iteratorMapObject.next().getId() == mo_u.getId()) { - iteratorMapObject.set(mo_u); + for (Map m : Server.maps) { + for (int i = 0; i < m.getObjects().size(); i++) { + if (m.getObjects().get(i).getId() == mo_u.getId()) { + m.getObjects().set(i, mo_u); break; } + + } } // preposlat zmenu klientum sendAll(new Message(Message.UPDATE_OBJECT, mo_u)); diff --git a/src/jnet/server/probe/NettyPing.java b/src/jnet/server/probe/NettyPing.java index 5b5cab1..f21b618 100644 --- a/src/jnet/server/probe/NettyPing.java +++ b/src/jnet/server/probe/NettyPing.java @@ -8,6 +8,7 @@ import java.io.InputStreamReader; import java.util.concurrent.TimeUnit; import jnet.lib.LogFile; import jnet.lib.Status; +import jnet.lib.object.Map; import jnet.lib.object.MapObject; import jnet.server.Server; @@ -21,9 +22,12 @@ public class NettyPing extends Thread { @Override public void run() { LogFile.printInfo("Ping probe start"); - for (MapObject mapObject : Server.mapObject) { - schedulePing(mapObject); + for (Map map : Server.maps) { + for (MapObject mapObject : map.getObjects()) { + schedulePing(mapObject); + } } + } private static void schedulePing(MapObject object) { @@ -39,7 +43,7 @@ public class NettyPing extends Thread { private static void pingHost(MapObject object) { try { String command = System.getProperty("os.name").startsWith("Windows") - ? "ping -n 1 -w " + String.valueOf((Server.config.getInt("ping_timeout")*1000)) + " " + object.getIp() // Timeout 2000 ms (Windows) + ? "ping -n 1 -w " + String.valueOf((Server.config.getInt("ping_timeout") * 1000)) + " " + object.getIp() // Timeout 2000 ms (Windows) : "ping -c 1 -W " + String.valueOf(Server.config.getInt("ping_timeout")) + " " + object.getIp(); // Timeout 2 sec (Linux) Process process = Runtime.getRuntime().exec(command); diff --git a/src/jnet/server/probe/Ping.java b/src/jnet/server/probe/Ping.java index 28aeac6..447f0dc 100644 --- a/src/jnet/server/probe/Ping.java +++ b/src/jnet/server/probe/Ping.java @@ -10,6 +10,7 @@ import jnet.lib.LogFile; import jnet.lib.Message; import jnet.lib.Status; import jnet.lib.object.Event; +import jnet.lib.object.Map; import jnet.lib.object.MapObject; import jnet.server.Database; import jnet.server.Server; @@ -41,7 +42,8 @@ public class Ping extends Thread { // Naplánování periodického provádění kontrol scheduledExecutorService.scheduleAtFixedRate(() -> { - for (MapObject mo : Server.mapObject) { + for (Map map : Server.maps) { + for (MapObject mo : map.getObjects()) { if (mo.isActive()) { // Vytvoření úkolu pro pingování každé IP adresy executorService.submit(() -> { @@ -59,6 +61,8 @@ public class Ping extends Thread { } } + } + }, 0, PERIOD, TimeUnit.SECONDS); }