přepsani switch na map
parent
419312f3fc
commit
a80d4198e2
|
|
@ -6,7 +6,9 @@ import io.netty.channel.group.DefaultChannelGroup;
|
||||||
import io.netty.util.concurrent.GlobalEventExecutor;
|
import io.netty.util.concurrent.GlobalEventExecutor;
|
||||||
import java.lang.management.ManagementFactory;
|
import java.lang.management.ManagementFactory;
|
||||||
import java.net.InetSocketAddress;
|
import java.net.InetSocketAddress;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.ListIterator;
|
import java.util.ListIterator;
|
||||||
|
import java.util.function.Consumer;
|
||||||
import jnet.lib.LogFile;
|
import jnet.lib.LogFile;
|
||||||
import jnet.lib.Message;
|
import jnet.lib.Message;
|
||||||
import jnet.lib.PasswordHashing;
|
import jnet.lib.PasswordHashing;
|
||||||
|
|
@ -25,300 +27,330 @@ public class ServerMessageParser {
|
||||||
private static final ChannelGroup channels = new DefaultChannelGroup(
|
private static final ChannelGroup channels = new DefaultChannelGroup(
|
||||||
"containers", GlobalEventExecutor.INSTANCE);
|
"containers", GlobalEventExecutor.INSTANCE);
|
||||||
|
|
||||||
|
private static final java.util.Map<Integer, Consumer<Message>> handlers = new HashMap<>();
|
||||||
|
|
||||||
public ServerMessageParser(Channel currentClient) {
|
public ServerMessageParser(Channel currentClient) {
|
||||||
this.currentClient = currentClient;
|
this.currentClient = currentClient;
|
||||||
|
|
||||||
|
// Inicializace mapy typu zprávy na odpovídající metody
|
||||||
|
handlers.put(Message.CLIENT_VERSION, this::handleClientVersion);
|
||||||
|
handlers.put(Message.AUTH, this::handleAuth);
|
||||||
|
handlers.put(Message.RESTART, this::handleRestart);
|
||||||
|
handlers.put(Message.UPTIME, this::handleUptime);
|
||||||
|
handlers.put(Message.NEW_OBJECT_TYPE, this::handleNewObjectType);
|
||||||
|
handlers.put(Message.SET_MAP_LOCK, this::handleSetMapLock);
|
||||||
|
handlers.put(Message.ADD_OBJECT, this::handleAddObject);
|
||||||
|
handlers.put(Message.REMOVE_OBJECT, this::handleRemoveObject);
|
||||||
|
handlers.put(Message.MAP_REMOVE, this::handleMapRemove);
|
||||||
|
handlers.put(Message.MAP_ADD, this::handleMapAdd);
|
||||||
|
handlers.put(Message.OBJECT_MOVE, this::handleObjectMove);
|
||||||
|
handlers.put(Message.UPDATE_OBJECT, this::handleUpdateObject);
|
||||||
|
handlers.put(Message.DELETE_LOG, this::handleDeleteLog);
|
||||||
|
handlers.put(Message.USER, this::handleUser);
|
||||||
|
handlers.put(Message.USER_EDIT, this::handleUserEdit);
|
||||||
|
handlers.put(Message.SERVER_CONFIG, this::handleServerConfig);
|
||||||
|
handlers.put(Message.SNMP_OBJECT_INFO, this::handleSnmpObjectInfo);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void parse(Message msg) {
|
public void parse(Message msg) {
|
||||||
|
|
||||||
LogFile.printDebug("-> Message type: " + msg.getType());
|
LogFile.printDebug("-> Message type: " + msg.getType());
|
||||||
|
|
||||||
ListIterator<Map> iteratorMap = Server.maps.listIterator();
|
Consumer<Message> handler = handlers.get(msg.getType());
|
||||||
|
if (handler != null) {
|
||||||
|
handler.accept(msg);
|
||||||
|
} else {
|
||||||
|
LogFile.printErr("Neznamy typ zpravy");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void handleClientVersion(Message msg) {
|
||||||
|
int client_version = (int) msg.getMsg();
|
||||||
|
if (client_version < Server.MINIMAL_CLIENT_VERSION) {
|
||||||
|
LogFile.printInfo("Outdated client. Sent update request (" + ((InetSocketAddress) currentClient.remoteAddress()).getHostName() + ")");
|
||||||
|
send(new Message(Message.UPDATE, null));
|
||||||
|
} else {
|
||||||
|
LogFile.printInfo("Authorization request send (" + ((InetSocketAddress) currentClient.remoteAddress()).getHostName() + ")");
|
||||||
|
// oodeslat pozadavek na autorizacni udaje
|
||||||
|
send(new Message(Message.AUTH_REQUEST, null));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
switch (msg.getType()) {
|
private void handleAuth(Message msg) {
|
||||||
|
String[] userData = (String[]) msg.getMsg();
|
||||||
|
String username = userData[0];
|
||||||
|
String password = userData[1];
|
||||||
|
int platform = Integer.parseInt(userData[2]);
|
||||||
|
|
||||||
case Message.CLIENT_VERSION:
|
User u = Database.getUserInfo(username);
|
||||||
int client_version = (int) msg.getMsg();
|
|
||||||
if (client_version < Server.MINIMAL_CLIENT_VERSION) {
|
if (PasswordHashing.verify(password, u.getPassword())) {
|
||||||
LogFile.printInfo("Outdated client. Sent update request (" + ((InetSocketAddress) currentClient.remoteAddress()).getHostName() + ")");
|
LogFile.printInfo("User: " + username + " logged in (" + ((InetSocketAddress) currentClient.remoteAddress()).getAddress().getHostName() + ")");
|
||||||
send(new Message(Message.UPDATE, null));
|
// odeslat informaci uzivateli o jeho uspesnem prihlaseni
|
||||||
} else {
|
send(new Message(Message.AUTH_SUCEFULL, null));
|
||||||
LogFile.printInfo("Authorization request send (" + ((InetSocketAddress) currentClient.remoteAddress()).getHostName() + ")");
|
// pridani uzivatele mezi pripojene kanaly
|
||||||
// oodeslat pozadavek na autorizacni udaje
|
channels.add(currentClient);
|
||||||
send(new Message(Message.AUTH_REQUEST, null));
|
// vložit uživatele na seznam online uživatelů
|
||||||
|
InetSocketAddress socketAddress = (InetSocketAddress) currentClient.remoteAddress();
|
||||||
|
String clientIp = socketAddress.getAddress().getHostAddress();
|
||||||
|
String clientPort = String.valueOf(socketAddress.getPort());
|
||||||
|
Server.onlineClients.add(new OnlineClients(
|
||||||
|
String.valueOf(u.getId()),
|
||||||
|
u.getUsername(),
|
||||||
|
clientIp,
|
||||||
|
clientPort,
|
||||||
|
platform));
|
||||||
|
// odeslat informace o prihlasenem uzivateli, opravneni atd
|
||||||
|
send(new Message(Message.USER_INFO, u));
|
||||||
|
// odeslat vsem nový seznam pripojenych klientu
|
||||||
|
sendAll(new Message(Message.ONLINE_CLIENTS, Server.onlineClients));
|
||||||
|
// odeslat nastaveni serveru
|
||||||
|
ServerConfig sc = new ServerConfig(
|
||||||
|
Server.config.getInt("ping_repeat"),
|
||||||
|
Server.config.getInt("ping_attempt"),
|
||||||
|
Server.config.getInt("ping_timeout"),
|
||||||
|
Server.config.getInt("instability_attempt"),
|
||||||
|
Server.config.getInt("instability_limit"));
|
||||||
|
send(new Message(Message.SERVER_CONFIG, sc));
|
||||||
|
// odeslat typy objektu
|
||||||
|
for (ObjectType ot : Server.objectType) {
|
||||||
|
send(new Message(Message.OBJECT_TYPE, ot));
|
||||||
|
}
|
||||||
|
// odesila seznam uzivatelu
|
||||||
|
for (User us : Server.users) {
|
||||||
|
send(new Message(Message.USER, us));
|
||||||
|
}
|
||||||
|
// odeslat seznam map
|
||||||
|
for (Map i : Server.maps) {
|
||||||
|
send(new Message(Message.MAP, i));
|
||||||
|
}
|
||||||
|
// odeslat seznam udalosti
|
||||||
|
send(new Message(Message.EVENT_LIST, Server.events));
|
||||||
|
// odeslat seznam snmp profilů
|
||||||
|
for (SnmpProfile i : Server.snmpProfile) {
|
||||||
|
send(new Message(Message.SNMP_PROFILE, i));
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
LogFile.printInfo("Authorization failed (ser: " + username + " )");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void handleRestart(Message msg) {
|
||||||
|
LogFile.printInfo("Prijat pozadavek na restart serveru");
|
||||||
|
Server.restartServer();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void handleUptime(Message msg) {
|
||||||
|
long uptime = ManagementFactory.getRuntimeMXBean().getUptime();
|
||||||
|
send(Message.UPTIME, uptime);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void handleNewObjectType(Message msg) {
|
||||||
|
ObjectType not = (ObjectType) msg.getMsg();
|
||||||
|
int id = Database.addObjectType(not);
|
||||||
|
not.setId(id);
|
||||||
|
Server.objectType.add(not);
|
||||||
|
sendAll(new Message(Message.OBJECT_TYPE, not));
|
||||||
|
}
|
||||||
|
|
||||||
|
private void handleSetMapLock(Message msg) {
|
||||||
|
int[] data_lock = (int[]) msg.getMsg();
|
||||||
|
for (Map map : Server.maps) {
|
||||||
|
if (map.getId() == data_lock[0]) {
|
||||||
|
map.setLock((data_lock[1] == 1));
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// upravit informaci v databazi
|
||||||
|
Database.mapLock(data_lock[1], data_lock[0]);
|
||||||
|
// odeslani informace ostatnim
|
||||||
|
sendAll(new Message(Message.SET_MAP_LOCK, data_lock));
|
||||||
|
}
|
||||||
|
|
||||||
|
private void handleAddObject(Message msg) {
|
||||||
|
MapObject mo = Database.addMapObject((MapObject) msg.getMsg());
|
||||||
|
// pridat do seznamu
|
||||||
|
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
|
||||||
|
Event event = Database.addEvent(mo.getId(), "Přidáno", Event.TYPE_INFO);
|
||||||
|
sendAll(new Message(Message.EVENT_NEW, event));
|
||||||
|
// pokud je object vypnuty prida log
|
||||||
|
if (!mo.isActive()) {
|
||||||
|
Event event_disable = Database.addEvent(mo.getId(), "Ping vypnut", Event.TYPE_PING_OFF);
|
||||||
|
sendAll(new Message(Message.EVENT_NEW, event_disable));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void handleRemoveObject(Message msg) {
|
||||||
|
for (Map map : Server.maps) {
|
||||||
|
for (MapObject object : map.getObjects()) {
|
||||||
|
if (object.getId() == (int) msg.getMsg()) {
|
||||||
|
// odebere z databaze
|
||||||
|
Database.removeObject(object.getId());
|
||||||
|
// odesle informaci o odebrani objektu klientum
|
||||||
|
sendAll(new Message(Message.REMOVE_OBJECT, object.getId()));
|
||||||
|
// odebere ze seznamu
|
||||||
|
map.getObjects().remove(object);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void handleMapRemove(Message msg) {
|
||||||
|
for (Map map : Server.maps) {
|
||||||
|
if (map.getId() == (int) msg.getMsg()) {
|
||||||
|
// odebere z databaze
|
||||||
|
Database.removeMap(map.getId());
|
||||||
|
// odesle informaci o odebrani objektu klientum
|
||||||
|
sendAll(new Message(Message.MAP_REMOVE, map.getId()));
|
||||||
|
// odebere ze seznamu
|
||||||
|
Server.maps.remove(map);
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
case Message.AUTH:
|
private void handleMapAdd(Message msg) {
|
||||||
String[] userData = (String[]) msg.getMsg();
|
Map map = new Map((String) msg.getMsg());
|
||||||
String username = userData[0];
|
// přidání mapy do databaze
|
||||||
String password = userData[1];
|
map.setId(Database.addMap(map.getName()));
|
||||||
int platform = Integer.parseInt(userData[2]);
|
//odeslání mapy klientum
|
||||||
|
send(new Message(Message.MAP, map));
|
||||||
|
// pridani mapy do seznamu
|
||||||
|
Server.maps.add(map);
|
||||||
|
}
|
||||||
|
|
||||||
User u = Database.getUserInfo(username);
|
private void handleObjectMove(Message msg) {
|
||||||
|
int[] data = (int[]) msg.getMsg();
|
||||||
if (PasswordHashing.verify(password, u.getPassword())) {
|
// 0 = obj id
|
||||||
LogFile.printInfo("User: " + username + " logged in (" + ((InetSocketAddress) currentClient.remoteAddress()).getAddress().getHostName() + ")");
|
// 2 = x
|
||||||
// odeslat informaci uzivateli o jeho uspesnem prihlaseni
|
// 2 = y
|
||||||
send(new Message(Message.AUTH_SUCEFULL, null));
|
// zmenit v databázi
|
||||||
// pridani uzivatele mezi pripojene kanaly
|
Database.objectMove(data[0], data[1], data[2]);
|
||||||
channels.add(currentClient);
|
// zmenit v seznamu
|
||||||
// vložit uživatele na seznam online uživatelů
|
for (Map mapa : Server.maps) {
|
||||||
InetSocketAddress socketAddress = (InetSocketAddress) currentClient.remoteAddress();
|
for (MapObject object : mapa.getObjects()) {
|
||||||
String clientIp = socketAddress.getAddress().getHostAddress();
|
if (object.getId() == data[0]) {
|
||||||
String clientPort = String.valueOf(socketAddress.getPort());
|
// zmenit pozici
|
||||||
Server.onlineClients.add(new OnlineClients(
|
object.setX(data[1]);
|
||||||
String.valueOf(u.getId()),
|
object.setY(data[2]);
|
||||||
u.getUsername(),
|
// zapsat zmenu do databaze
|
||||||
clientIp,
|
Database.objectMove(data[0], data[1], data[2]);
|
||||||
clientPort,
|
// preposlat zmenu klientum
|
||||||
platform));
|
sendAll(new Message(Message.UPDATE_OBJECT, object));
|
||||||
// odeslat informace o prihlasenem uzivateli, opravneni atd
|
break;
|
||||||
send(new Message(Message.USER_INFO, u));
|
|
||||||
// odeslat vsem nový seznam pripojenych klientu
|
|
||||||
sendAll(new Message(Message.ONLINE_CLIENTS, Server.onlineClients));
|
|
||||||
// odeslat nastaveni serveru
|
|
||||||
ServerConfig sc = new ServerConfig(
|
|
||||||
Server.config.getInt("ping_repeat"),
|
|
||||||
Server.config.getInt("ping_attempt"),
|
|
||||||
Server.config.getInt("ping_timeout"),
|
|
||||||
Server.config.getInt("instability_attempt"),
|
|
||||||
Server.config.getInt("instability_limit"));
|
|
||||||
send(new Message(Message.SERVER_CONFIG, sc));
|
|
||||||
// odeslat typy objektu
|
|
||||||
for (ObjectType ot : Server.objectType) {
|
|
||||||
send(new Message(Message.OBJECT_TYPE, ot));
|
|
||||||
}
|
|
||||||
// odesila seznam uzivatelu
|
|
||||||
for (User us : Server.users) {
|
|
||||||
send(new Message(Message.USER, us));
|
|
||||||
}
|
|
||||||
// odeslat seznam map
|
|
||||||
for (Map i : Server.maps) {
|
|
||||||
send(new Message(Message.MAP, i));
|
|
||||||
}
|
|
||||||
// odeslat seznam udalosti
|
|
||||||
send(new Message(Message.EVENT_LIST, Server.events));
|
|
||||||
// odeslat seznam snmp profilů
|
|
||||||
for (SnmpProfile i : Server.snmpProfile) {
|
|
||||||
send(new Message(Message.SNMP_PROFILE, i));
|
|
||||||
}
|
|
||||||
|
|
||||||
} else {
|
|
||||||
LogFile.printInfo("Authorization failed (ser: " + username + " )");
|
|
||||||
}
|
}
|
||||||
break;
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
case Message.RESTART:
|
private void handleUpdateObject(Message msg) {
|
||||||
LogFile.printInfo("Prijat pozadavek na restart serveru");
|
MapObject mo_u = (MapObject) msg.getMsg();
|
||||||
Server.restartServer();
|
// zmenit v databazi
|
||||||
break;
|
Database.updateObject(mo_u);
|
||||||
|
// zmenit v seznamu
|
||||||
case Message.UPTIME:
|
for (Map m : Server.maps) {
|
||||||
long uptime = ManagementFactory.getRuntimeMXBean().getUptime();
|
for (int i = 0; i < m.getObjects().size(); i++) {
|
||||||
send(Message.UPTIME, uptime);
|
if (m.getObjects().get(i).getId() == mo_u.getId()) {
|
||||||
break;
|
// pokud je object vypnuty a dřív nebyl prida log
|
||||||
|
if (!mo_u.isActive() && m.getObjects().get(i).isActive()) {
|
||||||
case Message.NEW_OBJECT_TYPE:
|
Event event_disable = Database.addEvent(mo_u.getId(), "Ping vypnut", Event.TYPE_PING_OFF);
|
||||||
ObjectType not = (ObjectType) msg.getMsg();
|
sendAll(new Message(Message.EVENT_NEW, event_disable));
|
||||||
int id = Database.addObjectType(not);
|
|
||||||
not.setId(id);
|
|
||||||
Server.objectType.add(not);
|
|
||||||
sendAll(new Message(Message.OBJECT_TYPE, not));
|
|
||||||
break;
|
|
||||||
|
|
||||||
case Message.SET_MAP_LOCK:
|
|
||||||
int[] data_lock = (int[]) msg.getMsg();
|
|
||||||
while (iteratorMap.hasNext()) {
|
|
||||||
Map map = iteratorMap.next();
|
|
||||||
if (map.getId() == data_lock[0]) {
|
|
||||||
map.setLock((data_lock[1] == 1));
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
// pokud je object zapnutý a dřív nebyl prida log
|
||||||
// upravit informaci v databazi
|
if (mo_u.isActive() && !m.getObjects().get(i).isActive()) {
|
||||||
Database.mapLock(data_lock[1], data_lock[0]);
|
Event event_disable = Database.addEvent(mo_u.getId(), "Ping zapnut", Event.TYPE_PING_OFF);
|
||||||
// odeslani informace ostatnim
|
sendAll(new Message(Message.EVENT_NEW, event_disable));
|
||||||
sendAll(new Message(Message.SET_MAP_LOCK, data_lock));
|
|
||||||
break;
|
|
||||||
|
|
||||||
case Message.ADD_OBJECT:
|
|
||||||
MapObject mo = Database.addMapObject((MapObject) msg.getMsg());
|
|
||||||
// pridat do seznamu
|
|
||||||
for (Map map : Server.maps) {
|
|
||||||
if (map.getId() == mo.getMap()) {
|
|
||||||
map.getObjects().add(mo);
|
|
||||||
}
|
}
|
||||||
|
// zmeni objekt v seznamu
|
||||||
|
m.getObjects().set(i, mo_u);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
// odesle všem novy objekt
|
|
||||||
sendAll(new Message(Message.ADD_OBJECT, mo));
|
|
||||||
// prida event a odesle ho
|
|
||||||
Event event = Database.addEvent(mo.getId(), "Přidáno", Event.TYPE_INFO);
|
|
||||||
sendAll(new Message(Message.EVENT_NEW, event));
|
|
||||||
// pokud je object vypnuty prida log
|
|
||||||
if (!mo.isActive()) {
|
|
||||||
Event event_disable = Database.addEvent(mo.getId(), "Ping vypnut", Event.TYPE_PING_OFF);
|
|
||||||
sendAll(new Message(Message.EVENT_NEW, event_disable));
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case Message.REMOVE_OBJECT:
|
}
|
||||||
for (Map map : Server.maps) {
|
|
||||||
for (MapObject object : map.getObjects()) {
|
|
||||||
if (object.getId() == (int) msg.getMsg()) {
|
|
||||||
// odebere z databaze
|
|
||||||
Database.removeObject(object.getId());
|
|
||||||
// odesle informaci o odebrani objektu klientum
|
|
||||||
sendAll(new Message(Message.REMOVE_OBJECT, object.getId()));
|
|
||||||
// odebere ze seznamu
|
|
||||||
map.getObjects().remove(object);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case Message.MAP_REMOVE:
|
|
||||||
while (iteratorMap.hasNext()) {
|
|
||||||
Map map = iteratorMap.next();
|
|
||||||
if (map.getId() == (int) msg.getMsg()) {
|
|
||||||
// odebere z databaze
|
|
||||||
Database.removeMap(map.getId());
|
|
||||||
// odesle informaci o odebrani objektu klientum
|
|
||||||
sendAll(new Message(Message.MAP_REMOVE, map.getId()));
|
|
||||||
// odebere ze seznamu
|
|
||||||
iteratorMap.remove();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
|
|
||||||
case Message.MAP_ADD:
|
|
||||||
Map map = new Map((String) msg.getMsg());
|
|
||||||
// přidání mapy do databaze
|
|
||||||
map.setId(Database.addMap(map.getName()));
|
|
||||||
//odeslání mapy klientum
|
|
||||||
send(new Message(Message.MAP, map));
|
|
||||||
// pridani mapy do seznamu
|
|
||||||
iteratorMap.add(map);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case Message.OBJECT_MOVE:
|
|
||||||
int[] data = (int[]) msg.getMsg();
|
|
||||||
// 0 = obj id
|
|
||||||
// 2 = x
|
|
||||||
// 2 = y
|
|
||||||
// zmenit v databázi
|
|
||||||
Database.objectMove(data[0], data[1], data[2]);
|
|
||||||
// zmenit v seznamu
|
|
||||||
for (Map mapa : Server.maps) {
|
|
||||||
for (MapObject object : mapa.getObjects()) {
|
|
||||||
if (object.getId() == data[0]) {
|
|
||||||
// zmenit pozici
|
|
||||||
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, object));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case Message.UPDATE_OBJECT:
|
|
||||||
MapObject mo_u = (MapObject) msg.getMsg();
|
|
||||||
// zmenit v databazi
|
|
||||||
Database.updateObject(mo_u);
|
|
||||||
// zmenit v seznamu
|
|
||||||
for (Map m : Server.maps) {
|
|
||||||
for (int i = 0; i < m.getObjects().size(); i++) {
|
|
||||||
if (m.getObjects().get(i).getId() == mo_u.getId()) {
|
|
||||||
// pokud je object vypnuty a dřív nebyl prida log
|
|
||||||
if (!mo_u.isActive() && m.getObjects().get(i).isActive()) {
|
|
||||||
Event event_disable = Database.addEvent(mo_u.getId(), "Ping vypnut", Event.TYPE_PING_OFF);
|
|
||||||
sendAll(new Message(Message.EVENT_NEW, event_disable));
|
|
||||||
}
|
|
||||||
// pokud je object zapnutý a dřív nebyl prida log
|
|
||||||
if (mo_u.isActive() && !m.getObjects().get(i).isActive()) {
|
|
||||||
Event event_disable = Database.addEvent(mo_u.getId(), "Ping zapnut", Event.TYPE_PING_OFF);
|
|
||||||
sendAll(new Message(Message.EVENT_NEW, event_disable));
|
|
||||||
}
|
|
||||||
// zmeni objekt v seznamu
|
|
||||||
m.getObjects().set(i, mo_u);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// preposlat zmenu klientum
|
|
||||||
sendAll(new Message(Message.UPDATE_OBJECT, mo_u));
|
|
||||||
break;
|
|
||||||
|
|
||||||
case Message.DELETE_LOG:
|
|
||||||
int objId = (int) msg.getMsg();
|
|
||||||
// vymaže logy v databazi
|
|
||||||
Database.deleteObjectLog(objId);
|
|
||||||
// vymaze logy v listu
|
|
||||||
ListIterator<Event> iterator = Server.events.listIterator();
|
|
||||||
while (iterator.hasNext()) {
|
|
||||||
if (iterator.next().getObject() == objId) {
|
|
||||||
iterator.remove();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
sendAll(new Message(Message.DELETE_LOG, objId));
|
|
||||||
break;
|
|
||||||
|
|
||||||
case Message.USER:
|
|
||||||
User user = (User) msg.getMsg();
|
|
||||||
user.setPassword(PasswordHashing.hash(user.getPassword()));
|
|
||||||
//pridáni do databáze a nastaveni id
|
|
||||||
user.setId(Database.addUser(user));
|
|
||||||
// přidání do seznamu
|
|
||||||
Server.users.add(user);
|
|
||||||
// odeslat klientum nového uživatele
|
|
||||||
send(new Message(Message.USER, user));
|
|
||||||
break;
|
|
||||||
|
|
||||||
case Message.USER_EDIT:
|
|
||||||
User ue = (User) msg.getMsg();
|
|
||||||
// upraveni v databázi
|
|
||||||
Database.editUser(ue);
|
|
||||||
// zmenit v seznamu
|
|
||||||
ListIterator<User> iteratorUser = Server.users.listIterator();
|
|
||||||
while (iteratorUser.hasNext()) {
|
|
||||||
User next = iteratorUser.next();
|
|
||||||
if (next.getId() == ue.getId()) {
|
|
||||||
iteratorUser.set(ue);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
// preposlat zmenu klientum
|
|
||||||
sendAll(new Message(Message.USER_EDIT, ue));
|
|
||||||
break;
|
|
||||||
|
|
||||||
case Message.SERVER_CONFIG:
|
|
||||||
ServerConfig sc = (ServerConfig) msg.getMsg();
|
|
||||||
// ulozeni
|
|
||||||
Server.config.setInt("ping_repeat", sc.getPingRepeat());
|
|
||||||
Server.config.setInt("ping_attempt", sc.getPingAttempt());
|
|
||||||
Server.config.setInt("ping_timeout", sc.getPingTimeout());
|
|
||||||
Server.config.setInt("instability_attempt", sc.getInstabilityAttempt());
|
|
||||||
Server.config.setInt("instability_limit", sc.getInstabilityLimit());
|
|
||||||
Server.config.save();
|
|
||||||
//odeslani vsem
|
|
||||||
sendAll(Message.SERVER_CONFIG, sc);
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
|
||||||
LogFile.printErr("Neznamy typ zpravy");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// preposlat zmenu klientum
|
||||||
|
sendAll(new Message(Message.UPDATE_OBJECT, mo_u));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void handleDeleteLog(Message msg) {
|
||||||
|
int objId = (int) msg.getMsg();
|
||||||
|
// vymaže logy v databazi
|
||||||
|
Database.deleteObjectLog(objId);
|
||||||
|
// vymaze logy v listu
|
||||||
|
ListIterator<Event> iterator = Server.events.listIterator();
|
||||||
|
while (iterator.hasNext()) {
|
||||||
|
if (iterator.next().getObject() == objId) {
|
||||||
|
iterator.remove();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
sendAll(new Message(Message.DELETE_LOG, objId));
|
||||||
|
}
|
||||||
|
|
||||||
|
private void handleUser(Message msg) {
|
||||||
|
User user = (User) msg.getMsg();
|
||||||
|
user.setPassword(PasswordHashing.hash(user.getPassword()));
|
||||||
|
//pridáni do databáze a nastaveni id
|
||||||
|
user.setId(Database.addUser(user));
|
||||||
|
// přidání do seznamu
|
||||||
|
Server.users.add(user);
|
||||||
|
// odeslat klientum nového uživatele
|
||||||
|
send(new Message(Message.USER, user));
|
||||||
|
}
|
||||||
|
|
||||||
|
private void handleUserEdit(Message msg) {
|
||||||
|
User ue = (User) msg.getMsg();
|
||||||
|
// upraveni v databázi
|
||||||
|
Database.editUser(ue);
|
||||||
|
// zmenit v seznamu
|
||||||
|
ListIterator<User> iteratorUser = Server.users.listIterator();
|
||||||
|
while (iteratorUser.hasNext()) {
|
||||||
|
User next = iteratorUser.next();
|
||||||
|
if (next.getId() == ue.getId()) {
|
||||||
|
iteratorUser.set(ue);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
// preposlat zmenu klientum
|
||||||
|
sendAll(new Message(Message.USER_EDIT, ue));
|
||||||
|
}
|
||||||
|
|
||||||
|
private void handleServerConfig(Message msg) {
|
||||||
|
ServerConfig sc = (ServerConfig) msg.getMsg();
|
||||||
|
// ulozeni
|
||||||
|
Server.config.setInt("ping_repeat", sc.getPingRepeat());
|
||||||
|
Server.config.setInt("ping_attempt", sc.getPingAttempt());
|
||||||
|
Server.config.setInt("ping_timeout", sc.getPingTimeout());
|
||||||
|
Server.config.setInt("instability_attempt", sc.getInstabilityAttempt());
|
||||||
|
Server.config.setInt("instability_limit", sc.getInstabilityLimit());
|
||||||
|
Server.config.save();
|
||||||
|
//odeslani vsem
|
||||||
|
sendAll(Message.SERVER_CONFIG, sc);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void handleSnmpObjectInfo(Message msg) {
|
||||||
|
Object[] msg_object = (Object[]) msg.getMsg();
|
||||||
|
String frameName = (String) msg_object[0];
|
||||||
|
int objId = (int) msg_object[1];
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* @param message
|
||||||
|
*/
|
||||||
|
|
||||||
public void send(Message message) {
|
public void send(Message message) {
|
||||||
currentClient.writeAndFlush(message);
|
currentClient.writeAndFlush(message);
|
||||||
LogFile.printDebug("<- Message type: " + message.getType());
|
LogFile.printDebug("<- Message type: " + message.getType());
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue