vnoření mapObject zpet do map

NettyPing
Michal 2025-02-13 20:34:43 +01:00
parent ca6161b505
commit 758ce624ef
6 changed files with 150 additions and 95 deletions

164
log.log
View File

@ -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

View File

@ -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();

View File

@ -31,13 +31,13 @@ public class Server {
public static PropertiesManager config;
public static List<Map> maps = new ArrayList<>();
public static ArrayList<MapObject> mapObject= new ArrayList<>();
public static ArrayList<OnlineClients> onlineClients = new ArrayList<>();
public static ArrayList<ObjectType> objectType = new ArrayList<>();
public static ArrayList<SnmpProfile> snmpProfile = new ArrayList<>();
public static ArrayList<SnmpProbe> snmpProbe = new ArrayList<>();
public static ArrayList<User> users = new ArrayList<>();
public static ArrayList<Event> events = new ArrayList<>();
//public static ArrayList<MapObject> mapObject= new ArrayList<>();
public static List<OnlineClients> onlineClients = new ArrayList<>();
public static List<ObjectType> objectType = new ArrayList<>();
public static List<SnmpProfile> snmpProfile = new ArrayList<>();
public static List<SnmpProbe> snmpProbe = new ArrayList<>();
public static List<User> users = new ArrayList<>();
public static List<Event> 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)");

View File

@ -34,7 +34,6 @@ public class ServerMessageParser {
LogFile.printDebug("-> Message type: " + msg.getType());
ListIterator<Map> iteratorMap = Server.maps.listIterator();
ListIterator<MapObject> 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,18 +163,19 @@ 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;
case Message.MAP_REMOVE:
@ -209,30 +211,34 @@ 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:
MapObject mo_u = (MapObject) msg.getMsg();
// 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));

View File

@ -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,11 +22,14 @@ public class NettyPing extends Thread {
@Override
public void run() {
LogFile.printInfo("Ping probe start");
for (MapObject mapObject : Server.mapObject) {
for (Map map : Server.maps) {
for (MapObject mapObject : map.getObjects()) {
schedulePing(mapObject);
}
}
}
private static void schedulePing(MapObject object) {
TIMER.newTimeout(new TimerTask() {
@Override
@ -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);

View File

@ -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);
}