Завершение обновления безопасности.

v++
This commit is contained in:
2025-02-21 01:57:15 +03:00
parent 49f0a56c4f
commit 8701c8ba36
23 changed files with 230 additions and 41 deletions

24
.idea/workspace.xml generated
View File

@@ -7,7 +7,29 @@
</component> </component>
<component name="ChangeListManager"> <component name="ChangeListManager">
<list default="true" id="e42177c3-2328-4b27-8a01-35779b2beb99" name="Default Changelist" comment=""> <list default="true" id="e42177c3-2328-4b27-8a01-35779b2beb99" name="Default Changelist" comment="">
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/ComponentsServerProperties.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/ComponentsServerProperties.java" afterDir="false" /> <change afterPath="$PROJECT_DIR$/src/_VisualDVM/Passes/All/GetDVMPackageCredetials.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/Common/MachinesDatabase.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/DVM/PackageCredentials/DVMPackageCredentials.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/DVM/PackageCredentials/DVMPackagesCredentialsDBTable.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/Visualizer_2.exe" beforeDir="false" afterPath="$PROJECT_DIR$/Visualizer_2.exe" afterDir="false" />
<change beforePath="$PROJECT_DIR$/properties" beforeDir="false" afterPath="$PROJECT_DIR$/properties" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/ComponentsServer/ComponentsServer.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/ComponentsServer/ComponentsServer.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/Constants.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Constants.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/Global.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Global.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/NormalProperties.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/NormalProperties.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/Passes/All/PauseDVMPackage.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Passes/All/PauseDVMPackage.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/Passes/All/ResumeDVMPackage.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Passes/All/ResumeDVMPackage.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/Passes/All/StartSelectedDVMConfigurations.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Passes/All/StartSelectedDVMConfigurations.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/Passes/PassCode.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Passes/PassCode.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/Passes/SSH/RepositoryServerSSHPass.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Passes/SSH/RepositoryServerSSHPass.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/Passes/Server/ShutdownServerPass.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Passes/Server/ShutdownServerPass.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/Passes/Server/StartServerPass.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Passes/Server/StartServerPass.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/Repository/Server/ServerCode.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Repository/Server/ServerCode.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/Common/MachineProcess/MachineProcess.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/Common/MachineProcess/MachineProcess.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/Common/TestingServer.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/Common/TestingServer.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/Common/TestsDatabase.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/Common/TestsDatabase.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/DVM/DVMPackage/DVMPackage.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/DVM/DVMPackage/DVMPackage.java" afterDir="false" />
</list> </list>
<option name="SHOW_DIALOG" value="false" /> <option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" /> <option name="HIGHLIGHT_CONFLICTS" value="true" />

Binary file not shown.

View File

@@ -1,8 +1,9 @@
{ {
"Email": "vmk-post@yandex.ru", "Email": "vmk-post@yandex.ru",
"Name": "M", "Name": "M",
"ServerUserPassword": "mprit_2011",
"Workspace": "E:\\Tests", "Workspace": "E:\\Tests",
"ProjectsSearchDirectory": "E:\\BUG\\JAC", "ProjectsSearchDirectory": "E:\\Tests\\Downloads",
"VisualiserPath": "C:\\Users\\misha\\Downloads", "VisualiserPath": "C:\\Users\\misha\\Downloads",
"Sapfor_FPath": "E:\\_sapfor_x64\\Components\\Sapfor_F", "Sapfor_FPath": "E:\\_sapfor_x64\\Components\\Sapfor_F",
"Visualizer_2Path": "C:\\Users\\misha\\Documents", "Visualizer_2Path": "C:\\Users\\misha\\Documents",
@@ -26,7 +27,7 @@
"AutoCheckTesting": true, "AutoCheckTesting": true,
"EmailOnTestingProgress": true, "EmailOnTestingProgress": true,
"lastMachineId": 13, "lastMachineId": 13,
"lastUserId": 24, "lastUserId": 34,
"lastCompilerId": 52, "lastCompilerId": 52,
"RegisterOn": false, "RegisterOn": false,
"SpacesOn": false, "SpacesOn": false,

View File

@@ -48,7 +48,7 @@ public class ComponentsServer extends RepositoryServer<BugReportsDatabase> {
Arrays.asList(new Pair<>(new Machine("titan", Arrays.asList(new Pair<>(new Machine("titan",
"dvmh.keldysh.ru", "dvmh.keldysh.ru",
22, MachineType.Server), 22, MachineType.Server),
new User("dvmuser1", "mprit_2011")) new User("dvmuser1", "mprit_2011")) // todo с этим паролем что-то сделать.
)); ));
//- //-
protected Thread backUp = new Thread(() -> { protected Thread backUp = new Thread(() -> {

View File

@@ -3,7 +3,7 @@ import Common.Utils.Vector_;
import java.util.Vector; import java.util.Vector;
public class Constants { public class Constants {
public static final int version = 1179; public static final int version = 1181;
public static final int planner_version = 10; public static final int planner_version = 10;
public static final int testingMaxKernels = 64; //вообще говоря, это параметр машины. public static final int testingMaxKernels = 64; //вообще говоря, это параметр машины.
//-- //--
@@ -44,13 +44,13 @@ public class Constants {
public static final String SMTPHost = "smtp.mail.ru"; public static final String SMTPHost = "smtp.mail.ru";
public static final int SMTPPort = 465; public static final int SMTPPort = 465;
public static final int MailSocketPort = 465; public static final int MailSocketPort = 465;
public static final int ComponentsServerPort = 7996;// 7995; //7796 отладочный порт
public static final int TestingServerPort = 7998; public static final int ComponentsServerPort = 7995; //7795
public static final int TestingServerPort = 7998; //7998
public static final int SocketTimeout = 0; public static final int SocketTimeout = 0;
//- //-
public static final String ServerAddress = "alex-freenas.ddns.net"; public static final String ServerAddress = "alex-freenas.ddns.net";
public static final String ServerUserName = "testuser"; public static final String ServerUserName = "testuser";
public static final String ServerUserPasword = "mprit_2011";
public static final int ServerUserSHHPort = 2000; public static final int ServerUserSHHPort = 2000;
//-- //--
public static final String package_json = "package_json"; public static final String package_json = "package_json";

View File

@@ -94,7 +94,6 @@ public class Global {
Utils_.CheckDirectory(KeysDirectory = new File(Utils_.getHomeDirectory(), Constants.KeyDirectoryName)); Utils_.CheckDirectory(KeysDirectory = new File(Utils_.getHomeDirectory(), Constants.KeyDirectoryName));
} }
public static void CheckTestingSystemDirectories() { public static void CheckTestingSystemDirectories() {
Utils_.CheckDirectory(ComponentsDirectory = new File(Utils_.getHomeDirectory(), Constants.ComponentsDirectoryName));
Utils_.CheckAndCleanDirectory(TempDirectory = new File(Utils_.getHomeDirectory(), Constants.TempDirectoryName)); Utils_.CheckAndCleanDirectory(TempDirectory = new File(Utils_.getHomeDirectory(), Constants.TempDirectoryName));
Utils_.CheckDirectory(DataDirectory = new File(Utils_.getHomeDirectory(), Constants.DataDirectoryName)); Utils_.CheckDirectory(DataDirectory = new File(Utils_.getHomeDirectory(), Constants.DataDirectoryName));
//- //-

View File

@@ -13,6 +13,8 @@ public class NormalProperties extends VisualDVMProperties {
public String Email = ""; public String Email = "";
@Expose @Expose
public String Name = ""; public String Name = "";
@Expose
public String ServerUserPassword="";
//---> //--->
@Expose @Expose
public String Workspace = ""; public String Workspace = "";

View File

@@ -0,0 +1,16 @@
package _VisualDVM.Passes.All;
import _VisualDVM.Passes.Server.TestingServerPass;
import _VisualDVM.Repository.Server.ServerCode;
import _VisualDVM.TestingSystem.DVM.DVMPackage.DVMPackage;
import _VisualDVM.TestingSystem.DVM.PackageCredentials.DVMPackageCredentials;
public class GetDVMPackageCredetials extends TestingServerPass<DVMPackageCredentials> {
@Override
protected boolean canStart(Object... args) throws Exception {
target = null;
return SendRequest(ServerCode.GetDVMPackageCredentials, "", ((DVMPackage)args[0]).id);
}
@Override
protected void performDone() throws Exception {
target = (DVMPackageCredentials) request.server_response.object;
}
}

View File

@@ -2,8 +2,10 @@ package _VisualDVM.Passes.All;
import _VisualDVM.Constants; import _VisualDVM.Constants;
import _VisualDVM.Global; import _VisualDVM.Global;
import _VisualDVM.GlobalData.RemoteFile.RemoteFile; import _VisualDVM.GlobalData.RemoteFile.RemoteFile;
import _VisualDVM.Passes.PassCode;
import _VisualDVM.Passes.SSH.ConnectionPass; import _VisualDVM.Passes.SSH.ConnectionPass;
import _VisualDVM.TestingSystem.DVM.DVMPackage.DVMPackage; import _VisualDVM.TestingSystem.DVM.DVMPackage.DVMPackage;
import _VisualDVM.TestingSystem.DVM.PackageCredentials.DVMPackageCredentials;
import java.util.Date; import java.util.Date;
public class PauseDVMPackage extends ConnectionPass<DVMPackage> { public class PauseDVMPackage extends ConnectionPass<DVMPackage> {
@@ -20,7 +22,10 @@ public class PauseDVMPackage extends ConnectionPass<DVMPackage> {
if (!Global.testingServer.db.dvmPackages.getUI().CheckCurrent(Log)) if (!Global.testingServer.db.dvmPackages.getUI().CheckCurrent(Log))
return false; return false;
target = Global.testingServer.db.dvmPackages.getUI().getCurrent(); target = Global.testingServer.db.dvmPackages.getUI().getCurrent();
switch (target.state){ if (!Global.mainModule.getAccount().CheckAuthorship(target.sender_address, Log))
return false;
//--
switch (target.state) {
case CompilationExecution: case CompilationExecution:
case RunningExecution: case RunningExecution:
break; break;
@@ -28,20 +33,25 @@ public class PauseDVMPackage extends ConnectionPass<DVMPackage> {
Log.Writeln_("Возможно поставить на паузу только пакет в состоянии [компиляция] или [запуск]"); Log.Writeln_("Возможно поставить на паузу только пакет в состоянии [компиляция] или [запуск]");
return false; return false;
} }
machine =target.getMachine(); GetDVMPackageCredetials pass_ = (GetDVMPackageCredetials) Global.mainModule.getPass(PassCode.GetDVMPackageCredetials);
if (pass_.Do(target)) {
DVMPackageCredentials credentials = pass_.target;
machine = target.getMachine();
user = target.getUser(); user = target.getUser();
return Global.mainModule.getAccount().CheckAuthorship(target.sender_address,Log); user.password = credentials.userPassword;
return true;
}
return false;
} }
@Override @Override
protected void ServerAction() throws Exception { protected void ServerAction() throws Exception {
RemoteFile packageRemoteWorkspace = new RemoteFile( RemoteFile packageRemoteWorkspace = new RemoteFile(
target.user_workspace+ "/tests", String.valueOf(target.id), true); target.user_workspace + "/tests", String.valueOf(target.id), true);
if (user.connection.Exists(packageRemoteWorkspace)){ if (user.connection.Exists(packageRemoteWorkspace)) {
try { try {
RemoteFile pauseFile = new RemoteFile(packageRemoteWorkspace, Constants.pause); RemoteFile pauseFile = new RemoteFile(packageRemoteWorkspace, Constants.pause);
user.connection.writeToFile("pause at "+new Date(), pauseFile); user.connection.writeToFile("pause at " + new Date(), pauseFile);
} } catch (Exception ex) {
catch (Exception ex){
ex.printStackTrace(); ex.printStackTrace();
} }
} }

View File

@@ -2,8 +2,10 @@ package _VisualDVM.Passes.All;
import _VisualDVM.Constants; import _VisualDVM.Constants;
import _VisualDVM.Global; import _VisualDVM.Global;
import _VisualDVM.GlobalData.RemoteFile.RemoteFile; import _VisualDVM.GlobalData.RemoteFile.RemoteFile;
import _VisualDVM.Passes.PassCode;
import _VisualDVM.Passes.SSH.ConnectionPass; import _VisualDVM.Passes.SSH.ConnectionPass;
import _VisualDVM.TestingSystem.DVM.DVMPackage.DVMPackage; import _VisualDVM.TestingSystem.DVM.DVMPackage.DVMPackage;
import _VisualDVM.TestingSystem.DVM.PackageCredentials.DVMPackageCredentials;
public class ResumeDVMPackage extends ConnectionPass<DVMPackage> { public class ResumeDVMPackage extends ConnectionPass<DVMPackage> {
@Override @Override
public String getIconPath() { public String getIconPath() {
@@ -18,6 +20,8 @@ public class ResumeDVMPackage extends ConnectionPass<DVMPackage> {
if (!Global.testingServer.db.dvmPackages.getUI().CheckCurrent(Log)) if (!Global.testingServer.db.dvmPackages.getUI().CheckCurrent(Log))
return false; return false;
target = Global.testingServer.db.dvmPackages.getUI().getCurrent(); target = Global.testingServer.db.dvmPackages.getUI().getCurrent();
if (!Global.mainModule.getAccount().CheckAuthorship(target.sender_address, Log))
return false;
switch (target.state) { switch (target.state) {
case Paused: case Paused:
break; break;
@@ -25,9 +29,15 @@ public class ResumeDVMPackage extends ConnectionPass<DVMPackage> {
Log.Writeln_("Возможно возобновить только пакет в состоянии [пауза]"); Log.Writeln_("Возможно возобновить только пакет в состоянии [пауза]");
return false; return false;
} }
GetDVMPackageCredetials pass_ = (GetDVMPackageCredetials) Global.mainModule.getPass(PassCode.GetDVMPackageCredetials);
if (pass_.Do(target)) {
DVMPackageCredentials credentials = pass_.target;
machine = target.getMachine(); machine = target.getMachine();
user = target.getUser(); user = target.getUser();
return Global.mainModule.getAccount().CheckAuthorship(target.sender_address,Log); user.password = credentials.userPassword;
return true;
}
return false;
} }
@Override @Override
protected void ServerAction() throws Exception { protected void ServerAction() throws Exception {

View File

@@ -10,6 +10,8 @@ import _VisualDVM.GlobalData.User.User;
import _VisualDVM.GlobalData.User.UserState; import _VisualDVM.GlobalData.User.UserState;
import _VisualDVM.Passes.PassCode; import _VisualDVM.Passes.PassCode;
import _VisualDVM.Passes.Server.PublishServerObject; import _VisualDVM.Passes.Server.PublishServerObject;
import _VisualDVM.Repository.Server.SafeServerExchangeUnit;
import _VisualDVM.Repository.Server.ServerCode;
import _VisualDVM.TestingSystem.Common.TestingServer; import _VisualDVM.TestingSystem.Common.TestingServer;
import _VisualDVM.TestingSystem.DVM.DVMConfiguration.DVMConfiguration; import _VisualDVM.TestingSystem.DVM.DVMConfiguration.DVMConfiguration;
import _VisualDVM.TestingSystem.DVM.DVMPackage.DVMPackage; import _VisualDVM.TestingSystem.DVM.DVMPackage.DVMPackage;
@@ -24,17 +26,26 @@ public class StartSelectedDVMConfigurations extends PublishServerObject<TestingS
return "/Common/icons/BlueStart.png"; return "/Common/icons/BlueStart.png";
} }
//-- //--
Machine machine;
User user;
Compiler compiler;
//--
@Override @Override
protected boolean canStart(Object... args) throws Exception { protected boolean canStart(Object... args) throws Exception {
//--
machine =null;
user= null;
compiler =null;
//--
if (!Global.mainModule.getAccount().CheckRegistered(Log)) { if (!Global.mainModule.getAccount().CheckRegistered(Log)) {
return false; return false;
} }
if (!MainModule_.instance.getDb().CheckCurrent(Log, Machine.class, User.class, Compiler.class)) if (!MainModule_.instance.getDb().CheckCurrent(Log, Machine.class, User.class, Compiler.class))
return false; return false;
//-- //--
Machine machine = MainModule_.instance.getDb().getTable(Machine.class).getUI().getCurrent(); machine = MainModule_.instance.getDb().getTable(Machine.class).getUI().getCurrent();
User user = MainModule_.instance.getDb().getTable(User.class).getUI().getCurrent(); user = MainModule_.instance.getDb().getTable(User.class).getUI().getCurrent();
Compiler compiler = MainModule_.instance.getDb().getTable(Compiler.class).getUI().getCurrent(); compiler = MainModule_.instance.getDb().getTable(Compiler.class).getUI().getCurrent();
//-- //--
if (!machine.type.equals(MachineType.Server)) { if (!machine.type.equals(MachineType.Server)) {
Log.Writeln_("Тестирование поддерживается только на одиночном удалённом сервере."); Log.Writeln_("Тестирование поддерживается только на одиночном удалённом сервере.");
@@ -71,4 +82,9 @@ public class StartSelectedDVMConfigurations extends PublishServerObject<TestingS
} }
return UI.Question("Будет запущено " + target.tasksCount + " задач. Продолжить"); return UI.Question("Будет запущено " + target.tasksCount + " задач. Продолжить");
} }
@Override
protected void ServerAction() throws Exception {
Command(new SafeServerExchangeUnit(ServerCode.PublishObject, user.password, target));
pk = server_response.object;
}
} }

View File

@@ -353,12 +353,15 @@ public enum PassCode implements PassCode_ {
SynchronizeCredentials, SynchronizeCredentials,
PublishUserAccount, PublishUserAccount,
EditUserAccount, EditUserAccount,
DeleteUserAccount DeleteUserAccount,
GetDVMPackageCredetials
; ;
//-- //--
@Override @Override
public String getDescription() { public String getDescription() {
switch (this) { switch (this) {
case GetDVMPackageCredetials:
return "Получение входных данных пакета тестирования DVM";
case PublishUserAccount: case PublishUserAccount:
return "Добавление учётной записи"; return "Добавление учётной записи";
case EditUserAccount: case EditUserAccount:

View File

@@ -24,12 +24,22 @@ public abstract class RepositoryServerSSHPass<S extends RepositoryServer> extend
} }
protected abstract S getServer(); protected abstract S getServer();
@Override @Override
protected boolean canStart(Object... args) throws Exception {
if (!Global.mainModule.getAccount().CheckAdmin(Log))
return false;
if (Global.normalProperties.ServerUserPassword.isEmpty()){
Log.Writeln_("Не задан пароль");
return false;
}
return true;
}
@Override
public void Connect() throws Exception { public void Connect() throws Exception {
userHome = null; userHome = null;
serverHome = null; serverHome = null;
//-- //--
machine = new Machine("alex", Constants.ServerAddress, Constants.ServerUserSHHPort, MachineType.Server); machine = new Machine("alex", Constants.ServerAddress, Constants.ServerUserSHHPort, MachineType.Server);
user = new User(Constants.ServerUserName, Constants.ServerUserPasword); user = new User(Constants.ServerUserName, Global.normalProperties.ServerUserPassword); //в пропертиес. пусть админ пользуется.
super.Connect(); super.Connect();
//-- //--
userHome = new RemoteFile(user.connection.sftpChannel.getHome(), true); userHome = new RemoteFile(user.connection.sftpChannel.getHome(), true);

View File

@@ -9,7 +9,7 @@ public abstract class ShutdownServerPass<S extends RepositoryServer> extends Rep
@Override @Override
protected boolean canStart(Object... args) throws Exception { protected boolean canStart(Object... args) throws Exception {
if (getServer().PingFromClient()) { if (getServer().PingFromClient()) {
return true; return super.canStart();
} else { } else {
Log.Writeln_("Сервер уже неактивен!"); Log.Writeln_("Сервер уже неактивен!");
return false; return false;

View File

@@ -12,7 +12,7 @@ public abstract class StartServerPass<S extends RepositoryServer> extends Reposi
Log.Writeln_("Сервер уже активен!"); Log.Writeln_("Сервер уже активен!");
return false; return false;
} }
return true; return super.canStart();
} }
@Override @Override
protected void ServerAction() throws Exception { protected void ServerAction() throws Exception {

View File

@@ -67,9 +67,12 @@ public enum ServerCode {
GetUserAccountByEmail, GetUserAccountByEmail,
EditUserAccount, EditUserAccount,
PublishUserAccount, PublishUserAccount,
DeleteUserAccount; DeleteUserAccount,
GetDVMPackageCredentials;
public String getDescription(){ public String getDescription(){
switch (this){ switch (this){
case GetDVMPackageCredentials:
return "Получение входных данных пакета тестирования DVM на сервере";
case DeleteUserAccount: case DeleteUserAccount:
return "Удаление учётной записи на сервере"; return "Удаление учётной записи на сервере";
case PublishUserAccount: case PublishUserAccount:

View File

@@ -4,6 +4,7 @@ import Common.Database.Objects.DBObject;
import Common.Utils.Utils_; import Common.Utils.Utils_;
import _VisualDVM.*; import _VisualDVM.*;
import _VisualDVM.TestingSystem.DVM.DVMPackage.DVMPackage; import _VisualDVM.TestingSystem.DVM.DVMPackage.DVMPackage;
import _VisualDVM.TestingSystem.DVM.PackageCredentials.DVMPackageCredentials;
import org.apache.commons.io.FileUtils; import org.apache.commons.io.FileUtils;
import java.io.File; import java.io.File;
@@ -23,14 +24,16 @@ public class MachineProcess extends DBObject {
public MachineProcess(MachineProcess p) { public MachineProcess(MachineProcess p) {
SynchronizeFields(p); SynchronizeFields(p);
} }
public MachineProcess(DVMPackage p) { public MachineProcess(DVMPackage p, DVMPackageCredentials credentials) {
machineAddress = p.machine_address; machineAddress = p.machine_address;
machinePort = p.machine_port; machinePort = p.machine_port;
userName = p.user_name; userName = p.user_name;
userPassword = p.user_password;
userWorkspace = p.user_workspace; userWorkspace = p.user_workspace;
testingSystemRoot = Utils_.getHomePath(); testingSystemRoot = Utils_.getHomePath();
serverName = Global.testingServer.name; serverName = Global.testingServer.name;
//-->>
userPassword = credentials.userPassword;
//-->>
id = Utils_.getDateName(machineAddress + "_" + machinePort + "_" + userName); id = Utils_.getDateName(machineAddress + "_" + machinePort + "_" + userName);
} }
@Override @Override
@@ -94,7 +97,7 @@ public class MachineProcess extends DBObject {
//копирование визуализатора //копирование визуализатора
File src = new File(Utils_.getHomeDirectory(), "TestingSystem.jar"); File src = new File(Utils_.getHomeDirectory(), "TestingSystem.jar");
File supervisor = new File(workspace, "VisualSapfor.jar"); File supervisor = new File(workspace, "VisualSapfor.jar");
FileUtils.copyFile(src, supervisor); FileUtils.copyFile(src, supervisor); //? можно ли символическую ссылку?
//создание настроек //создание настроек
VisualDVMProperties properties = new VisualDVMProperties(); VisualDVMProperties properties = new VisualDVMProperties();
properties.Mode = Mode.MachineQueue; properties.Mode = Mode.MachineQueue;

View File

@@ -0,0 +1,23 @@
package _VisualDVM.TestingSystem.Common;
import Common.Database.SQLITE.SQLiteDatabase;
import Common.Passes.PassCode_;
import _VisualDVM.GlobalData.Machine.MachinesDBTable;
import _VisualDVM.GlobalData.User.UsersDBTable;
import _VisualDVM.TestingSystem.DVM.PackageCredentials.DVMPackageCredentials;
import _VisualDVM.TestingSystem.DVM.PackageCredentials.DVMPackagesCredentialsDBTable;
import java.nio.file.Paths;
public class MachinesDatabase extends SQLiteDatabase {
DVMPackagesCredentialsDBTable dvmPackagesCredentials;
public MachinesDatabase() {
super(Paths.get(System.getProperty("user.dir"), "Data", "machines.sqlite").toFile());
}
@Override
protected void initAllTables() throws Exception {
addTable(dvmPackagesCredentials = new DVMPackagesCredentialsDBTable());
}
@Override
public PassCode_ getSynchronizePassCode() {
return null;
}
}

View File

@@ -30,6 +30,7 @@ import _VisualDVM.TestingSystem.DVM.DVMConfiguration.DVMConfiguration;
import _VisualDVM.TestingSystem.DVM.DVMPackage.DVMPackage; import _VisualDVM.TestingSystem.DVM.DVMPackage.DVMPackage;
import _VisualDVM.TestingSystem.DVM.DVMSettings.DVMSettings; import _VisualDVM.TestingSystem.DVM.DVMSettings.DVMSettings;
import _VisualDVM.TestingSystem.DVM.DVMTestingChecker; import _VisualDVM.TestingSystem.DVM.DVMTestingChecker;
import _VisualDVM.TestingSystem.DVM.PackageCredentials.DVMPackageCredentials;
import _VisualDVM.TestingSystem.SAPFOR.Json.SapforPackage_json; import _VisualDVM.TestingSystem.SAPFOR.Json.SapforPackage_json;
import _VisualDVM.TestingSystem.SAPFOR.Json.SapforVersion_json; import _VisualDVM.TestingSystem.SAPFOR.Json.SapforVersion_json;
import _VisualDVM.TestingSystem.SAPFOR.SapforConfiguration.SapforConfiguration; import _VisualDVM.TestingSystem.SAPFOR.SapforConfiguration.SapforConfiguration;
@@ -58,7 +59,9 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
public String name = "?"; public String name = "?";
DVMTestingChecker dvmTestingChecker = new DVMTestingChecker(); DVMTestingChecker dvmTestingChecker = new DVMTestingChecker();
SapforTestingPlanner sapforTestingPlanner = new SapforTestingPlanner(); SapforTestingPlanner sapforTestingPlanner = new SapforTestingPlanner();
//-- //-->
MachinesDatabase machines_db;
//-->
protected Thread testingThread = new Thread(() -> { protected Thread testingThread = new Thread(() -> {
while (true) { while (true) {
dvmTestingChecker.Perform(); dvmTestingChecker.Perform();
@@ -70,6 +73,15 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
super(TestsDatabase.class); super(TestsDatabase.class);
name = Utils_.getDateName("testingServer"); name = Utils_.getDateName("testingServer");
} }
@Override
public void StartAction() throws Exception {
try {
machines_db = new MachinesDatabase();
machines_db.Activate();
} catch (Exception ex) {
ex.printStackTrace();
}
}
public static void TimerOn() { public static void TimerOn() {
checkTimer = new Timer(Global.normalProperties.CheckTestingIntervalSeconds * 1000, e -> { checkTimer = new Timer(Global.normalProperties.CheckTestingIntervalSeconds * 1000, e -> {
Global.mainModule.getPass(PassCode.ActualizePackages).Do(); Global.mainModule.getPass(PassCode.ActualizePackages).Do();
@@ -103,6 +115,10 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
dvmPackage.saveJson(); dvmPackage.saveJson();
dvmPackage.package_json = null; // объект больше не нужен. dvmPackage.package_json = null; // объект больше не нужен.
//-- //--
//Занести учетные данные пакета в базу о машинах. это основной поток, нить не нужна. арг это пароль
DVMPackageCredentials credentials = new DVMPackageCredentials(dvmPackage, request.arg);
machines_db.Insert(credentials);
//--
} else if (object instanceof SapforPackage) { } else if (object instanceof SapforPackage) {
((SapforPackage) object).init(); ((SapforPackage) object).init();
} }
@@ -205,6 +221,11 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
DVMPackage dvmPackage = (DVMPackage) object; DVMPackage dvmPackage = (DVMPackage) object;
File workspace = dvmPackage.getLocalWorkspace(); File workspace = dvmPackage.getLocalWorkspace();
Utils_.forceDeleteWithCheck(workspace); Utils_.forceDeleteWithCheck(workspace);
//--
DVMPackageCredentials credentials = machines_db.dvmPackagesCredentials.getForPackageId(dvmPackage.id);
if (credentials != null)
machines_db.Delete(credentials);
//--
} else if (object instanceof SapforPackage) { } else if (object instanceof SapforPackage) {
SapforPackage sapforPackage = (SapforPackage) object; SapforPackage sapforPackage = (SapforPackage) object;
//-- //--
@@ -495,11 +516,15 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
if (dvmPackage.state.isActive()) { if (dvmPackage.state.isActive()) {
//- //-
if (!machinesProcesses.hasProcessForPackage(dvmPackage)) { if (!machinesProcesses.hasProcessForPackage(dvmPackage)) {
MachineProcess new_process = new MachineProcess(dvmPackage); DVMPackageCredentials credentials = machines_db.dvmPackagesCredentials.getForPackageId(dvmPackage.id);
if (credentials != null) {
MachineProcess new_process = new MachineProcess(dvmPackage, credentials);
//получить пароль.
processes_to_start.put(new_process.getUniqueKey(), new_process); processes_to_start.put(new_process.getUniqueKey(), new_process);
} }
} }
} }
}
//запуск. //запуск.
for (MachineProcess process : processes_to_start.values()) { for (MachineProcess process : processes_to_start.values()) {
process.Start(); process.Start();
@@ -569,7 +594,7 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
UserAccount account = new UserAccount(); UserAccount account = new UserAccount();
account.name = "server"; account.name = "server";
account.email = Constants.MailAddress; account.email = Constants.MailAddress;
account.role= AccountRole.Admin; account.role = AccountRole.Admin;
//- //-
int sapforId = Integer.parseInt(request.arg); int sapforId = Integer.parseInt(request.arg);
if (!db.serverSapfors.containsKey(sapforId)) { if (!db.serverSapfors.containsKey(sapforId)) {
@@ -758,10 +783,22 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
} }
} }
} }
void GetDVMPackageCredentials() throws Exception {
int package_id = (int) request.object;
if (!db.dvmPackages.containsKey(package_id))
throw new RepositoryRefuseException("Не найден пакет с ключом " + Utils_.Brackets(package_id));
DVMPackageCredentials res = machines_db.dvmPackagesCredentials.getForPackageId(package_id);
if (res == null)
throw new RepositoryRefuseException("Не найдено учетных данных для пакета " + Utils_.Brackets(package_id));
response.object = res;
}
//-- //--
@Override @Override
protected void Session() throws Exception { protected void Session() throws Exception {
switch (code) { switch (code) {
case GetDVMPackageCredentials:
GetDVMPackageCredentials();
break;
case PerformAutoSapforTesting: case PerformAutoSapforTesting:
PerformAutoSapforTesting(); PerformAutoSapforTesting();
break; break;

View File

@@ -258,7 +258,7 @@ public class TestsDatabase extends SQLiteDatabase {
case ConnectionError: case ConnectionError:
break; break;
default: default:
if (dvmPackage.getMachine().getURL().equals(arg)) if (dvmPackage.getMachineURL().equals(arg))
machinePackages.add(dvmPackage); machinePackages.add(dvmPackage);
break; break;
} }

View File

@@ -16,6 +16,7 @@ import _VisualDVM.TestingSystem.Common.TestingPackage.TestingPackage;
import _VisualDVM.TestingSystem.DVM.DVMConfiguration.DVMConfiguration; import _VisualDVM.TestingSystem.DVM.DVMConfiguration.DVMConfiguration;
import _VisualDVM.TestingSystem.DVM.DVMSettings.DVMSettings; import _VisualDVM.TestingSystem.DVM.DVMSettings.DVMSettings;
import _VisualDVM.TestingSystem.DVM.DVMTasks.DVMCompilationTask; import _VisualDVM.TestingSystem.DVM.DVMTasks.DVMCompilationTask;
import com.sun.org.glassfish.gmbal.Description;
import java.io.File; import java.io.File;
import java.util.Vector; import java.util.Vector;
@@ -26,7 +27,6 @@ public class DVMPackage extends TestingPackage<DVMPackage_json> {
public int machine_port = 22; public int machine_port = 22;
//--- //---
public String user_name = ""; public String user_name = "";
public String user_password;
public String user_workspace; public String user_workspace;
//--- //---
public DVMPackage() { public DVMPackage() {
@@ -47,7 +47,6 @@ public class DVMPackage extends TestingPackage<DVMPackage_json> {
machine_port = machine.port; machine_port = machine.port;
//- //-
user_name = user.login; user_name = user.login;
user_password = user.password;
user_workspace = user.workspace; user_workspace = user.workspace;
//- //-
drv = compiler.call_command; drv = compiler.call_command;
@@ -99,16 +98,18 @@ public class DVMPackage extends TestingPackage<DVMPackage_json> {
machine_port = tasksPackage.machine_port; machine_port = tasksPackage.machine_port;
user_name = tasksPackage.user_name; user_name = tasksPackage.user_name;
user_workspace = tasksPackage.user_workspace; user_workspace = tasksPackage.user_workspace;
user_password = tasksPackage.user_password;
} }
public Machine getMachine() { public Machine getMachine() {
return new Machine(machine_name, machine_address, machine_port, MachineType.Server); return new Machine(machine_name, machine_address, machine_port, MachineType.Server);
} }
public User getUser() { public User getUser() {
return new User(user_name, user_password, user_workspace); return new User(user_name, "", user_workspace);
} }
@Override @Override
public void checkFinishState() throws Exception { public void checkFinishState() throws Exception {
} }
public String getMachineURL(){
return machine_address + ":" + machine_port;
}
} }

View File

@@ -0,0 +1,18 @@
package _VisualDVM.TestingSystem.DVM.PackageCredentials;
import Common.CommonConstants;
import Common.Database.Objects.iDBObject;
import _VisualDVM.GlobalData.Machine.Machine;
import _VisualDVM.GlobalData.Machine.MachineType;
import _VisualDVM.GlobalData.User.User;
import _VisualDVM.TestingSystem.DVM.DVMPackage.DVMPackage;
public class DVMPackageCredentials extends iDBObject {
public int dvmpackage_id = CommonConstants.Nan;
public String userPassword = "";
//---->>
public DVMPackageCredentials() {
}
public DVMPackageCredentials(DVMPackage dvmPackage, String password_in) {
dvmpackage_id = dvmPackage.id;
userPassword = password_in;
}
}

View File

@@ -0,0 +1,15 @@
package _VisualDVM.TestingSystem.DVM.PackageCredentials;
import Common.Database.Tables.iDBTable;
import _VisualDVM.TestingSystem.DVM.DVMPackage.DVMPackage;
public class DVMPackagesCredentialsDBTable extends iDBTable<DVMPackageCredentials> {
public DVMPackagesCredentialsDBTable() {
super(DVMPackageCredentials.class);
}
public DVMPackageCredentials getForPackageId(int dvmPackage_id){
for (DVMPackageCredentials dvmPackageCredentials: Data.values()){
if (dvmPackageCredentials.dvmpackage_id==dvmPackage_id)
return dvmPackageCredentials;
}
return null;
}
}