промежуточный.безопасность на стороне сервера. Утром доделаю на стороне клиента

This commit is contained in:
2025-02-14 02:09:55 +03:00
parent 05b49a842e
commit a86a5b1e6b
8 changed files with 96 additions and 58 deletions

View File

@@ -2,11 +2,13 @@ package _VisualDVM.Repository;
import Common.Database.Database;
import Common.Database.Objects.DBObject;
import Common.Database.Objects.riDBObject;
import Common.Database.RepositoryRefuseException;
import Common.Utils.InterruptThread;
import Common.Utils.Utils_;
import _VisualDVM.Constants;
import _VisualDVM.Passes.Server.RepositoryPass;
import _VisualDVM.Repository.Server.DiagnosticSignalHandler;
import _VisualDVM.Repository.Server.SafeServerExchangeUnit;
import _VisualDVM.Repository.Server.ServerCode;
import _VisualDVM.Repository.Server.ServerExchangeUnit_2021;
import _VisualDVM.Utils;
@@ -81,7 +83,8 @@ public abstract class RepositoryServer<D extends Database> {
}
//-DVMTestingChecker
public abstract int getPort();
protected abstract void SafeSession() throws Exception;
protected void Session() throws Exception {};
protected void UnsafeSession() throws Exception {}
protected void startAdditionalThreads() {
}
public void ActivateDB() {
@@ -181,50 +184,67 @@ public abstract class RepositoryServer<D extends Database> {
Print("Ожидание команды от клиента...");
Object transport = in.readObject();
Print("Команда прочитана.");
//-->
if (transport instanceof ServerExchangeUnit_2021) {
request = (ServerExchangeUnit_2021) transport;
response = null;
Print("клиент_2021: <- " + (request.codeName));
response = new ServerExchangeUnit_2021(ServerCode.OK);
Print("клиент: <- " + (request.codeName));
//--
try {
code = request.getCode();
response = new ServerExchangeUnit_2021(ServerCode.OK);
switch (code) {
case Ping:
Ping();
break;
case ReceiveFile:
ReceiveFile();
break;
case Email:
Email();
break;
case EditObject:
EditObject();
break;
case GetObjectCopyByPK:
GetObjectCopyByPK();
break;
case GetObjectsCopiesByPK:
GetObjectsCopiesByPK();
break;
case PublishObject:
PublishObject();
break;
case PublishObjects:
PublishObjects();
break;
case DeleteObjectByPK:
DeleteObjectByPK();
break;
case DeleteObjectsByPK:
DeleteObjectsByPK();
break;
case CloneObjectByPK:
CloneObject();
break;
default:
SafeSession();
break;
//--
if (transport instanceof SafeServerExchangeUnit){
SafeServerExchangeUnit safe_request= (SafeServerExchangeUnit) transport;
if (safe_request.version!=Constants.version){
//версия не совпала. не даем работать.
throw new RepositoryRefuseException("Версия клиента не совпадает с версией сервера!");
}
//БЕЗОПАСНАЯ СЕССИЯ
switch (code) {
case EditObject:
EditObject();
break;
case GetObjectCopyByPK:
GetObjectCopyByPK();
break;
case GetObjectsCopiesByPK:
GetObjectsCopiesByPK();
break;
case PublishObject:
PublishObject();
break;
case PublishObjects:
PublishObjects();
break;
case DeleteObjectByPK:
DeleteObjectByPK();
break;
case DeleteObjectsByPK:
DeleteObjectsByPK();
break;
case CloneObjectByPK:
CloneObject();
break;
default:
Session();
break;
}
}else {
//ОПАСНАЯ СЕССИЯ
switch (code){
case Ping:
Ping();
break;
case ReceiveFile:
ReceiveFile();
break;
case Email:
Email();
break;
default:
UnsafeSession();
break;
}
}
} catch (Exception ex) {
response = new ServerExchangeUnit_2021(ServerCode.FAIL, "Исключение сервера", ex);