diff --git a/pom.xml b/pom.xml
index 3f3a189..6ee5d1f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
org.springframework.boot
spring-boot-starter-parent
- 3.1.2
+ 3.4.0
ru.ldeloff
@@ -15,10 +15,6 @@
ServerMonitorBot
17
- 9.16.0
- ${database.url}
- ${database.username}
- ${database.password}
ru.ldeloff.servermonitorbot.ServerMonitorBotApplication
@@ -26,7 +22,6 @@
org.springframework.boot
spring-boot-starter
-
org.projectlombok
lombok
@@ -45,26 +40,13 @@
org.telegram
telegrambots
- 6.8.0
+ 6.9.7.1
com.jcraft
jsch
0.1.55
-
- org.springframework.boot
- spring-boot-starter-data-jpa
-
-
- org.postgresql
- postgresql
-
-
- org.flywaydb
- flyway-core
- ${flyway.version}
-
@@ -80,32 +62,6 @@
-
-
- org.flywaydb
- flyway-maven-plugin
- ${flyway.version}
-
-
- migrate
- deploy
-
- migrate
-
-
-
-
- ${database.url}
- ${database.username}
- ${database.password}
-
- classpath:db/migration
-
-
-
-
- org.springframework.boot
- spring-boot-maven-plugin
diff --git a/src/main/java/ru/ldeloff/servermonitorbot/ServerMonitorBotApplication.java b/src/main/java/ru/ldeloff/servermonitorbot/ServerMonitorBotApplication.java
index ea862b9..49a7a39 100644
--- a/src/main/java/ru/ldeloff/servermonitorbot/ServerMonitorBotApplication.java
+++ b/src/main/java/ru/ldeloff/servermonitorbot/ServerMonitorBotApplication.java
@@ -3,10 +3,12 @@ package ru.ldeloff.servermonitorbot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
-import ru.ldeloff.servermonitorbot.config.SshConfig;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import ru.ldeloff.servermonitorbot.model.server.SshServers;
@SpringBootApplication
-@EnableConfigurationProperties(SshConfig.class)
+@EnableScheduling
+@EnableConfigurationProperties(SshServers.class)
public class ServerMonitorBotApplication {
public static void main(String[] args) {
diff --git a/src/main/java/ru/ldeloff/servermonitorbot/service/command/CommandTemplate.java b/src/main/java/ru/ldeloff/servermonitorbot/commands/CommandTemplate.java
similarity index 56%
rename from src/main/java/ru/ldeloff/servermonitorbot/service/command/CommandTemplate.java
rename to src/main/java/ru/ldeloff/servermonitorbot/commands/CommandTemplate.java
index 901602d..2753e03 100644
--- a/src/main/java/ru/ldeloff/servermonitorbot/service/command/CommandTemplate.java
+++ b/src/main/java/ru/ldeloff/servermonitorbot/commands/CommandTemplate.java
@@ -1,4 +1,4 @@
-package ru.ldeloff.servermonitorbot.service.command;
+package ru.ldeloff.servermonitorbot.commands;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
@@ -6,15 +6,13 @@ import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
import org.telegram.telegrambots.meta.api.methods.send.SendMessage;
import org.telegram.telegrambots.meta.api.objects.Update;
-import org.telegram.telegrambots.meta.exceptions.TelegramApiException;
-import ru.ldeloff.servermonitorbot.controller.TelegramBotController;
-import ru.ldeloff.servermonitorbot.model.SshServer;
-import ru.ldeloff.servermonitorbot.model.User;
-import ru.ldeloff.servermonitorbot.service.role.RoleService;
-import ru.ldeloff.servermonitorbot.service.ssh.SshService;
-import ru.ldeloff.servermonitorbot.service.user.UserService;
-import ru.ldeloff.servermonitorbot.utils.SshServerUtils;
-import ru.ldeloff.servermonitorbot.utils.ui.ServerListButtons;
+import ru.ldeloff.servermonitorbot.model.user.Role;
+import ru.ldeloff.servermonitorbot.model.server.SshServer;
+import ru.ldeloff.servermonitorbot.service.MessagingService;
+import ru.ldeloff.servermonitorbot.util.UpdateUtil;
+import ru.ldeloff.servermonitorbot.model.user.User;
+import ru.ldeloff.servermonitorbot.service.SshService;
+import ru.ldeloff.servermonitorbot.view.ServerListButtons;
import java.util.Arrays;
import java.util.List;
@@ -23,31 +21,32 @@ import java.util.Objects;
@Slf4j
@RequiredArgsConstructor
public abstract class CommandTemplate {
- private final UserService userService;
- private final RoleService roleService;
+
+ private final UpdateUtil updateUtil;
private final ServerListButtons serverListButtons;
- private final SshService sshService;
+ public final SshService sshService;
+ private final MessagingService messagingService;
@Getter
@Setter
- private long expectedRole = 1L;
+ private List expectedRole = List.of(Role.ADMIN);
@Getter
@Setter
private String name;
- public boolean execute(Update update, TelegramBotController bot) {
+ public boolean execute(Update update) {
if (!isExecute(update)) {
return false;
}
- User user = getUser(update);
- String message = getMessage(update);
+ User user = updateUtil.getUser(update);
+ String message = updateUtil.getMessage(update);
SendMessage answer = new SendMessage();
answer.setChatId(user.getTelegramId());
answer.setText(message);
- if (!isAuth(update)) {
+ if (!updateUtil.roleChecker(update, expectedRole)) {
logNotAuth(user, message);
- sendMessage(actionForNotAuth(user, answer), bot);
+ messagingService.send(actionForNotAuth(user, answer));
return true;
}
@@ -55,11 +54,11 @@ public abstract class CommandTemplate {
switch (type) {
case "aggregate":
logSuccess(user, message);
- sendMessage(executeAggregate(user, answer), bot);
+ messagingService.send(executeAggregate(user, answer));
return true;
case "command":
logSuccess(user, message);
- sendMessage(executeCommand(user, answer), bot);
+ messagingService.send(executeCommand(user, answer));
return true;
default:
return false;
@@ -72,7 +71,7 @@ public abstract class CommandTemplate {
if (update.getMessage().hasText()) {
String messageText = update.getMessage().getText();
if (Objects.equals(messageText, name)) {
- log.debug("Команда " + messageText + " будет выполнена");
+ log.debug("Команда {} будет выполнена", messageText);
return true;
}
}
@@ -80,7 +79,7 @@ public abstract class CommandTemplate {
String [] tags = update.getCallbackQuery().getData().split(":");
if (tags.length > 1) {
if (Objects.equals(tags[0], name)) {
- log.debug("Команда " + tags[0] + " будет выполнена");
+ log.debug("Команда {} будет выполнена", tags[0]);
return true;
}
} else {
@@ -106,19 +105,17 @@ public abstract class CommandTemplate {
}
return "error";
}
- private boolean isAuth(Update update) {
- User user = getUser(update);
- return user.getRole().getId() <= expectedRole;
- }
+
// Методы при верных условиях
void logSuccess(User user, String message) {
- log.info("Получена команда '" + message + "' от " + user.getLogin()
- + " (" + user.getTelegramId() + "). OK");
+ log.info("Получена команда '{}' от {} ({}). OK", message, user.getLogin(), user.getTelegramId());
}
- SendMessage executeAggregate(User user, SendMessage message) {
+
+ public SendMessage executeAggregate(User user, SendMessage message) {
return serverListButtons.uiForm(message);
}
+
SendMessage executeCommand(User user, SendMessage message) {
String [] tags = Arrays.stream(message.getText().split(":"))
.map(String::trim)
@@ -132,7 +129,7 @@ public abstract class CommandTemplate {
return message;
}
private String executeCommandAllHost() {
- List servers = SshServerUtils.filterGoodServers(sshService.getSshServers());
+ List servers = sshService.getHealthSshServers();
StringBuilder response = new StringBuilder();
servers.forEach(server -> response.append(executeCommandSpecificHost(server.getName())).append("\n"));
return response.toString();
@@ -149,44 +146,4 @@ public abstract class CommandTemplate {
+ ") недостаточно прав для выполнения этой команды");
return message;
}
-
- // Общее
- // TODO: вынести в UpdateUtils
- User getUser(Update update) {
- long id = -1L;
- String login = null;
- if (update.hasMessage()) {
- id = update.getMessage().getChat().getId();
- login = update.getMessage().getChat().getUserName();
- } else if (update.hasCallbackQuery()) {
- id = update.getCallbackQuery().getMessage().getChat().getId();
- login = update.getCallbackQuery().getMessage().getChat().getUserName();
- }
- User user = userService.getByTelegramId(id);
- if (user == null) {
- user = new User();
- user.setTelegramId(id);
- user.setRole(roleService.findRoleById(3L));
- }
- user.setLogin(login);
- return user;
- }
- String getMessage(Update update) {
- if (update.hasMessage()) {
- return update.getMessage().getText();
- } else if (update.hasCallbackQuery()) {
- return update.getCallbackQuery().getData();
- }
- return "";
- }
-
- // TODO: вынести
- public static void sendMessage(SendMessage message, TelegramBotController bot) {
- try {
- bot.execute(message);
- } catch (TelegramApiException e) {
- e.printStackTrace();
- log.warn(e.getMessage());
- }
- }
}
diff --git a/src/main/java/ru/ldeloff/servermonitorbot/commands/cpu/temp/service/CpuTemp.java b/src/main/java/ru/ldeloff/servermonitorbot/commands/cpu/temp/service/CpuTemp.java
new file mode 100644
index 0000000..80df2c1
--- /dev/null
+++ b/src/main/java/ru/ldeloff/servermonitorbot/commands/cpu/temp/service/CpuTemp.java
@@ -0,0 +1,49 @@
+package ru.ldeloff.servermonitorbot.commands.cpu.temp.service;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import ru.ldeloff.servermonitorbot.commands.CommandTemplate;
+import ru.ldeloff.servermonitorbot.service.MessagingService;
+import ru.ldeloff.servermonitorbot.util.UpdateUtil;
+import ru.ldeloff.servermonitorbot.model.SshCommand;
+import ru.ldeloff.servermonitorbot.model.server.SshServer;
+import ru.ldeloff.servermonitorbot.service.SshService;
+import ru.ldeloff.servermonitorbot.view.ServerListButtons;
+
+import java.util.Objects;
+import java.util.Optional;
+
+@Service
+@Slf4j
+public class CpuTemp extends CommandTemplate {
+
+ public CpuTemp(UpdateUtil updateUtil, ServerListButtons serverListButtons, SshService sshService, MessagingService messagingService) {
+ super(updateUtil, serverListButtons, sshService, messagingService);
+ setName("CPU.temp");
+ }
+
+ @Override
+ public String executeCommandSpecificHost(String serverName) {
+ try {
+ Optional server = sshService.getAllSshServers()
+ .stream()
+ .filter(x -> x.getName().equals(serverName))
+ .findFirst();
+ if (server.isPresent()) {
+ SshCommand result = sshService.execute(new SshCommand("cat /sys/class/thermal/thermal_zone0/temp", 100, server.get()));
+ return server.get().getName() + ": \n" +
+ (Objects.isNull(result.getResponse()) ? "ошибка при выполнении команды" :
+ String.format("%.1f",
+ Double.parseDouble(result.getResponse().replaceAll("\n", ""))/1000))
+ + "°C";
+ } else {
+ log.error("Ошибка при выполнении команды 'CPUtemp'. Искомый сервер ({}) не найден", serverName);
+ return null;
+ }
+ } catch (NumberFormatException e) {
+ log.error("Ошибка при выполнении команды 'CPUtemp'" ,e.getMessage());
+ return "Сервер " + serverName + " не поддерживает команду 'CPUtemp'";
+ }
+
+ }
+}
diff --git a/src/main/java/ru/ldeloff/servermonitorbot/service/command/MdadmStatusCommand.java b/src/main/java/ru/ldeloff/servermonitorbot/commands/hdd/mdadm/service/MdadmStatus.java
similarity index 76%
rename from src/main/java/ru/ldeloff/servermonitorbot/service/command/MdadmStatusCommand.java
rename to src/main/java/ru/ldeloff/servermonitorbot/commands/hdd/mdadm/service/MdadmStatus.java
index 6c68d88..d00974f 100644
--- a/src/main/java/ru/ldeloff/servermonitorbot/service/command/MdadmStatusCommand.java
+++ b/src/main/java/ru/ldeloff/servermonitorbot/commands/hdd/mdadm/service/MdadmStatus.java
@@ -1,28 +1,29 @@
-package ru.ldeloff.servermonitorbot.service.command;
+package ru.ldeloff.servermonitorbot.commands.hdd.mdadm.service;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
+import ru.ldeloff.servermonitorbot.commands.CommandTemplate;
+import ru.ldeloff.servermonitorbot.service.MessagingService;
+import ru.ldeloff.servermonitorbot.util.UpdateUtil;
import ru.ldeloff.servermonitorbot.model.SshCommand;
-import ru.ldeloff.servermonitorbot.model.SshServer;
-import ru.ldeloff.servermonitorbot.service.role.RoleService;
-import ru.ldeloff.servermonitorbot.service.ssh.SshService;
-import ru.ldeloff.servermonitorbot.service.user.UserService;
-import ru.ldeloff.servermonitorbot.utils.ui.ServerListButtons;
+import ru.ldeloff.servermonitorbot.model.server.SshServer;
+import ru.ldeloff.servermonitorbot.service.SshService;
+import ru.ldeloff.servermonitorbot.view.ServerListButtons;
import java.util.*;
@Service
@Slf4j
-public class MdadmStatusCommand extends CommandTemplate {
- final SshService sshService;
- public MdadmStatusCommand(UserService userService, RoleService roleService, SshService sshService, ServerListButtons serverListButtons) {
- super(userService, roleService, serverListButtons, sshService);
- this.sshService = sshService;
+public class MdadmStatus extends CommandTemplate {
+
+ public MdadmStatus(UpdateUtil updateUtil, ServerListButtons serverListButtons, SshService sshService, MessagingService messagingService) {
+ super(updateUtil, serverListButtons, sshService, messagingService);
setName("MDADM");
}
+
@Override
public String executeCommandSpecificHost(String serverName) {
- Optional server = sshService.getSshServers()
+ Optional server = sshService.getAllSshServers()
.stream()
.filter(x -> x.getName().equals(serverName))
.findFirst();
@@ -40,10 +41,11 @@ public class MdadmStatusCommand extends CommandTemplate {
});
return server.get().getName() + ": \n" + result;
} else {
- log.error("Ошибка при выполнении команды 'mdadm'. Искомый сервер (" + serverName + ") не найден");
+ log.error("Ошибка при выполнении команды 'mdadm'. Искомый сервер ({}) не найден", serverName);
return null;
}
}
+
private List parseRaidNames(SshCommand result) {
List names = new ArrayList<>();
Arrays.stream(result.getResponse().split("\n"))
@@ -53,6 +55,7 @@ public class MdadmStatusCommand extends CommandTemplate {
.forEach(names::add);
return names;
}
+
private List parseHddState(SshCommand result) {
List names = new ArrayList<>();
names.add("Number Name State");
diff --git a/src/main/java/ru/ldeloff/servermonitorbot/service/command/HddTempCommand.java b/src/main/java/ru/ldeloff/servermonitorbot/commands/hdd/temp/service/HddTemp.java
similarity index 57%
rename from src/main/java/ru/ldeloff/servermonitorbot/service/command/HddTempCommand.java
rename to src/main/java/ru/ldeloff/servermonitorbot/commands/hdd/temp/service/HddTemp.java
index c628b4b..a92e8b9 100644
--- a/src/main/java/ru/ldeloff/servermonitorbot/service/command/HddTempCommand.java
+++ b/src/main/java/ru/ldeloff/servermonitorbot/commands/hdd/temp/service/HddTemp.java
@@ -1,29 +1,29 @@
-package ru.ldeloff.servermonitorbot.service.command;
+package ru.ldeloff.servermonitorbot.commands.hdd.temp.service;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
+import ru.ldeloff.servermonitorbot.commands.CommandTemplate;
+import ru.ldeloff.servermonitorbot.service.MessagingService;
+import ru.ldeloff.servermonitorbot.util.UpdateUtil;
import ru.ldeloff.servermonitorbot.model.SshCommand;
-import ru.ldeloff.servermonitorbot.model.SshServer;
-import ru.ldeloff.servermonitorbot.service.role.RoleService;
-import ru.ldeloff.servermonitorbot.service.ssh.SshService;
-import ru.ldeloff.servermonitorbot.service.user.UserService;
-import ru.ldeloff.servermonitorbot.utils.ui.ServerListButtons;
+import ru.ldeloff.servermonitorbot.model.server.SshServer;
+import ru.ldeloff.servermonitorbot.service.SshService;
+import ru.ldeloff.servermonitorbot.view.ServerListButtons;
import java.util.Objects;
import java.util.Optional;
@Service
@Slf4j
-public class HddTempCommand extends CommandTemplate {
- final SshService sshService;
- public HddTempCommand(UserService userService, RoleService roleService, SshService sshService, ServerListButtons serverListButtons) {
- super(userService, roleService, serverListButtons, sshService);
- this.sshService = sshService;
+public class HddTemp extends CommandTemplate {
+ public HddTemp(UpdateUtil updateUtil, ServerListButtons serverListButtons, SshService sshService, MessagingService messagingService) {
+ super(updateUtil, serverListButtons, sshService, messagingService);
setName("HDD.temp");
}
+
@Override
public String executeCommandSpecificHost(String serverName) {
- Optional server = sshService.getSshServers()
+ Optional server = sshService.getAllSshServers()
.stream()
.filter(x -> x.getName().equals(serverName))
.findFirst();
diff --git a/src/main/java/ru/ldeloff/servermonitorbot/commands/statuschecker/scheduler/CheckSessionStatusScheduler.java b/src/main/java/ru/ldeloff/servermonitorbot/commands/statuschecker/scheduler/CheckSessionStatusScheduler.java
new file mode 100644
index 0000000..bca5cad
--- /dev/null
+++ b/src/main/java/ru/ldeloff/servermonitorbot/commands/statuschecker/scheduler/CheckSessionStatusScheduler.java
@@ -0,0 +1,18 @@
+package ru.ldeloff.servermonitorbot.commands.statuschecker.scheduler;
+
+import lombok.RequiredArgsConstructor;
+import org.springframework.scheduling.annotation.Scheduled;
+import org.springframework.stereotype.Service;
+import ru.ldeloff.servermonitorbot.service.SshService;
+
+@Service
+@RequiredArgsConstructor
+public class CheckSessionStatusScheduler {
+
+ private final SshService sshService;
+
+ @Scheduled(fixedRateString = "${ssh.checkConnectionDelay}")
+ public void updateSessionStatusCheck() {
+ sshService.updateConnection();
+ }
+}
diff --git a/src/main/java/ru/ldeloff/servermonitorbot/commands/statuschecker/service/CheckSessionStatus.java b/src/main/java/ru/ldeloff/servermonitorbot/commands/statuschecker/service/CheckSessionStatus.java
new file mode 100644
index 0000000..e2fc9d4
--- /dev/null
+++ b/src/main/java/ru/ldeloff/servermonitorbot/commands/statuschecker/service/CheckSessionStatus.java
@@ -0,0 +1,28 @@
+package ru.ldeloff.servermonitorbot.commands.statuschecker.service;
+
+import org.springframework.stereotype.Service;
+import org.telegram.telegrambots.meta.api.methods.send.SendMessage;
+import ru.ldeloff.servermonitorbot.commands.CommandTemplate;
+import ru.ldeloff.servermonitorbot.service.MessagingService;
+import ru.ldeloff.servermonitorbot.util.UpdateUtil;
+import ru.ldeloff.servermonitorbot.model.user.User;
+import ru.ldeloff.servermonitorbot.service.SshService;
+import ru.ldeloff.servermonitorbot.view.ServerListButtons;
+
+@Service
+public class CheckSessionStatus extends CommandTemplate {
+
+ public CheckSessionStatus(UpdateUtil updateUtil, ServerListButtons serverListButtons, SshService sshService, MessagingService messagingService) {
+ super(updateUtil, serverListButtons, sshService, messagingService);
+ setName("Статус");
+ }
+
+ public SendMessage executeAggregate(User user, SendMessage message) {
+ return super.sshService.getStatusSessions(message);
+ }
+
+ @Override
+ public String executeCommandSpecificHost(String serverName) {
+ return null;
+ }
+}
diff --git a/src/main/java/ru/ldeloff/servermonitorbot/service/command/UnameCommand.java b/src/main/java/ru/ldeloff/servermonitorbot/commands/uname/service/Uname.java
similarity index 51%
rename from src/main/java/ru/ldeloff/servermonitorbot/service/command/UnameCommand.java
rename to src/main/java/ru/ldeloff/servermonitorbot/commands/uname/service/Uname.java
index 48b6ee5..2aef92b 100644
--- a/src/main/java/ru/ldeloff/servermonitorbot/service/command/UnameCommand.java
+++ b/src/main/java/ru/ldeloff/servermonitorbot/commands/uname/service/Uname.java
@@ -1,29 +1,30 @@
-package ru.ldeloff.servermonitorbot.service.command;
+package ru.ldeloff.servermonitorbot.commands.uname.service;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
+import ru.ldeloff.servermonitorbot.commands.CommandTemplate;
+import ru.ldeloff.servermonitorbot.service.MessagingService;
+import ru.ldeloff.servermonitorbot.util.UpdateUtil;
import ru.ldeloff.servermonitorbot.model.SshCommand;
-import ru.ldeloff.servermonitorbot.model.SshServer;
-import ru.ldeloff.servermonitorbot.service.role.RoleService;
-import ru.ldeloff.servermonitorbot.service.ssh.SshService;
-import ru.ldeloff.servermonitorbot.service.user.UserService;
-import ru.ldeloff.servermonitorbot.utils.ui.ServerListButtons;
+import ru.ldeloff.servermonitorbot.model.server.SshServer;
+import ru.ldeloff.servermonitorbot.service.SshService;
+import ru.ldeloff.servermonitorbot.view.ServerListButtons;
import java.util.Objects;
import java.util.Optional;
@Service
@Slf4j
-public class UnameCommand extends CommandTemplate {
- final SshService sshService;
- public UnameCommand(UserService userService, RoleService roleService, SshService sshService, ServerListButtons serverListButtons) {
- super(userService, roleService, serverListButtons, sshService);
- this.sshService = sshService;
+public class Uname extends CommandTemplate {
+
+ public Uname(UpdateUtil updateUtil, ServerListButtons serverListButtons, SshService sshService, MessagingService messagingService) {
+ super(updateUtil, serverListButtons, sshService, messagingService);
setName("uname");
}
+
@Override
public String executeCommandSpecificHost(String serverName) {
- Optional server = sshService.getSshServers()
+ Optional server = sshService.getAllSshServers()
.stream()
.filter(x -> x.getName().equals(serverName))
.findFirst();
@@ -32,7 +33,7 @@ public class UnameCommand extends CommandTemplate {
return server.get().getName() + ": " +
(Objects.isNull(result.getResponse()) ? "ошибка при выполнении команды" : result.getResponse());
} else {
- log.error("Ошибка при выполнении команды 'uname'. Искомый сервер (" + serverName + ") не найден");
+ log.error("Ошибка при выполнении команды 'uname'. Искомый сервер ({}) не найден", serverName);
return null;
}
}
diff --git a/src/main/java/ru/ldeloff/servermonitorbot/config/UserConfig.java b/src/main/java/ru/ldeloff/servermonitorbot/config/UserConfig.java
index 9c9e51d..5384d12 100644
--- a/src/main/java/ru/ldeloff/servermonitorbot/config/UserConfig.java
+++ b/src/main/java/ru/ldeloff/servermonitorbot/config/UserConfig.java
@@ -2,16 +2,37 @@ package ru.ldeloff.servermonitorbot.config;
import lombok.Getter;
import lombok.Setter;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.properties.ConfigurationProperties;
-import org.springframework.context.annotation.Configuration;
-import ru.ldeloff.servermonitorbot.model.dto.InitUserDto;
+import org.springframework.stereotype.Component;
+import ru.ldeloff.servermonitorbot.model.user.User;
+import ru.ldeloff.servermonitorbot.service.RoleService;
import java.util.List;
-@Configuration
+@Component
@ConfigurationProperties(prefix = "bot")
@Getter
@Setter
public class UserConfig {
- private List users;
+
+ private List users;
+
+ @Autowired
+ private RoleService roleService;
+
+ @Getter
+ @Setter
+ public static class UserProperty {
+ private Long telegramId;
+ private String role;
+ }
+
+ public List getUsers() {
+ return users.stream().map(user -> new User()
+ .setTelegramId(user.getTelegramId())
+ .setRole(roleService.findRoleByName(user.getRole()))
+ ).toList();
+ }
+
}
diff --git a/src/main/java/ru/ldeloff/servermonitorbot/controller/TelegramBotController.java b/src/main/java/ru/ldeloff/servermonitorbot/controller/TelegramBotController.java
index a1d8793..fafea88 100644
--- a/src/main/java/ru/ldeloff/servermonitorbot/controller/TelegramBotController.java
+++ b/src/main/java/ru/ldeloff/servermonitorbot/controller/TelegramBotController.java
@@ -6,24 +6,28 @@ import org.telegram.telegrambots.bots.TelegramLongPollingBot;
import org.telegram.telegrambots.meta.api.objects.Message;
import org.telegram.telegrambots.meta.api.objects.Update;
import ru.ldeloff.servermonitorbot.model.TelegramBot;
-import ru.ldeloff.servermonitorbot.repository.SshRepository;
-import ru.ldeloff.servermonitorbot.service.command.CommandTemplate;
-import ru.ldeloff.servermonitorbot.service.command.SwitchToMainMenu;
+import ru.ldeloff.servermonitorbot.service.SshService;
+import ru.ldeloff.servermonitorbot.commands.CommandTemplate;
+import ru.ldeloff.servermonitorbot.view.SwitchToMainMenu;
import java.util.Map;
@Service
@RequiredArgsConstructor
public class TelegramBotController extends TelegramLongPollingBot {
+
private final Map commands;
- final TelegramBot telegramBot;
- final SshRepository sshRepository;
- final SwitchToMainMenu switchToMainMenu;
+
+ private final TelegramBot telegramBot;
+ private final SwitchToMainMenu switchToMainMenu;
+ private final SshService sshService;
+
+
@Override
public void onUpdateReceived(Update update) {
boolean result = false;
for (Map.Entry entry : commands.entrySet()) {
- result = entry.getValue().execute(update, this);
+ result = entry.getValue().execute(update);
if (result) {
break;
}
@@ -34,20 +38,23 @@ public class TelegramBotController extends TelegramLongPollingBot {
message.setText("Not found");
}
update.setMessage(message);
- switchToMainMenu.execute(update, this);
+ switchToMainMenu.execute(update);
}
}
+
@Override
public String getBotUsername() {
return telegramBot.getBotUsername();
}
+
@Override
public String getBotToken() {
return telegramBot.getBotToken();
}
+
@Override
public void onClosing() {
super.onClosing();
- sshRepository.disconnectSessions();
+ sshService.disconnectAllConnections();
}
}
diff --git a/src/main/java/ru/ldeloff/servermonitorbot/init/AddCommands.java b/src/main/java/ru/ldeloff/servermonitorbot/init/AddCommands.java
deleted file mode 100644
index c623a79..0000000
--- a/src/main/java/ru/ldeloff/servermonitorbot/init/AddCommands.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package ru.ldeloff.servermonitorbot.init;
-
-public class AddCommands {
- public static void fillCommandTable() {
-
- }
-}
diff --git a/src/main/java/ru/ldeloff/servermonitorbot/init/AddUsers.java b/src/main/java/ru/ldeloff/servermonitorbot/init/AddUsers.java
index 560d72e..7d31eef 100644
--- a/src/main/java/ru/ldeloff/servermonitorbot/init/AddUsers.java
+++ b/src/main/java/ru/ldeloff/servermonitorbot/init/AddUsers.java
@@ -1,34 +1,26 @@
package ru.ldeloff.servermonitorbot.init;
-import org.springframework.beans.factory.annotation.Autowired;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
import ru.ldeloff.servermonitorbot.config.UserConfig;
-import ru.ldeloff.servermonitorbot.mapper.UserMapper;
-import ru.ldeloff.servermonitorbot.model.User;
-import ru.ldeloff.servermonitorbot.model.dto.InitUserDto;
-import ru.ldeloff.servermonitorbot.service.user.UserService;
-
-import java.util.List;
+import ru.ldeloff.servermonitorbot.service.UserService;
+@Slf4j
@Component
+@RequiredArgsConstructor
+@Order(2)
public class AddUsers implements ApplicationRunner {
- final List initUsers;
- final UserService userService;
- final UserMapper userMapper;
- @Autowired
- public AddUsers(UserConfig userConfig, UserService userService, UserMapper userMapper) {
- this.initUsers = userConfig.getUsers();
- this.userService = userService;
- this.userMapper = userMapper;
- }
+ final UserConfig userConfig;
+ final UserService userService;
@Override
- public void run(ApplicationArguments args) throws Exception {
- initUsers.forEach(initUserDto -> {
- User user = userService.saveOrUpdateUser(userMapper.dtoToUser(initUserDto));
- });
+ public void run(ApplicationArguments args) {
+ userConfig.getUsers().forEach(userService::saveOrUpdateUser);
+ log.info("Загружены и обновлены пользователи");
}
}
diff --git a/src/main/java/ru/ldeloff/servermonitorbot/init/ReloadNotification.java b/src/main/java/ru/ldeloff/servermonitorbot/init/ReloadNotification.java
new file mode 100644
index 0000000..d3ca38c
--- /dev/null
+++ b/src/main/java/ru/ldeloff/servermonitorbot/init/ReloadNotification.java
@@ -0,0 +1,33 @@
+package ru.ldeloff.servermonitorbot.init;
+
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.boot.ApplicationArguments;
+import org.springframework.boot.ApplicationRunner;
+import org.springframework.core.annotation.Order;
+import org.springframework.stereotype.Component;
+import org.telegram.telegrambots.meta.api.methods.send.SendMessage;
+import ru.ldeloff.servermonitorbot.service.MessagingService;
+import ru.ldeloff.servermonitorbot.service.UserService;
+import ru.ldeloff.servermonitorbot.view.TelegramBotKeyboard;
+
+@Slf4j
+@Component
+@RequiredArgsConstructor
+@Order(3)
+public class ReloadNotification implements ApplicationRunner {
+
+ private final TelegramBotKeyboard telegramBotKeyboard;
+ private final MessagingService messagingService;
+ private final UserService userService;
+
+ @Override
+ public void run(ApplicationArguments args) {
+ userService.getAllUsers().forEach(user -> {
+ SendMessage sendMessage = new SendMessage();
+ sendMessage.setChatId(user.getTelegramId());
+ sendMessage.setText("Бот перезапущен");
+ messagingService.send(telegramBotKeyboard.uiForm(sendMessage));
+ });
+ }
+}
diff --git a/src/main/java/ru/ldeloff/servermonitorbot/init/SshConnect.java b/src/main/java/ru/ldeloff/servermonitorbot/init/SshConnect.java
index d429b0e..ebd4ebf 100644
--- a/src/main/java/ru/ldeloff/servermonitorbot/init/SshConnect.java
+++ b/src/main/java/ru/ldeloff/servermonitorbot/init/SshConnect.java
@@ -1,20 +1,21 @@
package ru.ldeloff.servermonitorbot.init;
+import lombok.RequiredArgsConstructor;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
-import ru.ldeloff.servermonitorbot.repository.SshRepository;
+import ru.ldeloff.servermonitorbot.service.SshService;
@Component
+@RequiredArgsConstructor
+@Order(4)
public class SshConnect implements ApplicationRunner {
- final SshRepository sshRepository;
- public SshConnect(SshRepository sshRepository) {
- this.sshRepository = sshRepository;
- }
+ final SshService sshService;
@Override
- public void run(ApplicationArguments args) throws Exception {
- sshRepository.connectToAllServer();
+ public void run(ApplicationArguments args) {
+ sshService.updateConnection();
}
}
diff --git a/src/main/java/ru/ldeloff/servermonitorbot/init/StartBot.java b/src/main/java/ru/ldeloff/servermonitorbot/init/StartBot.java
index f5298a5..1fa2244 100644
--- a/src/main/java/ru/ldeloff/servermonitorbot/init/StartBot.java
+++ b/src/main/java/ru/ldeloff/servermonitorbot/init/StartBot.java
@@ -1,53 +1,33 @@
package ru.ldeloff.servermonitorbot.init;
import lombok.NoArgsConstructor;
+import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.ApplicationArguments;
import org.springframework.boot.ApplicationRunner;
+import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
import org.telegram.telegrambots.meta.TelegramBotsApi;
-import org.telegram.telegrambots.meta.api.methods.send.SendMessage;
import org.telegram.telegrambots.meta.exceptions.TelegramApiException;
import org.telegram.telegrambots.updatesreceivers.DefaultBotSession;
import ru.ldeloff.servermonitorbot.controller.TelegramBotController;
-import ru.ldeloff.servermonitorbot.model.User;
-import ru.ldeloff.servermonitorbot.service.command.CommandTemplate;
-import ru.ldeloff.servermonitorbot.service.user.UserService;
-import ru.ldeloff.servermonitorbot.utils.ui.TelegramBotKeyboard;
-import static ru.ldeloff.servermonitorbot.init.AddCommands.fillCommandTable;
@Slf4j
@Component
-@NoArgsConstructor
+@RequiredArgsConstructor
+@Order(1)
public class StartBot implements ApplicationRunner {
- private TelegramBotController telegramBot;
- private TelegramBotKeyboard telegramBotKeyboard;
- private UserService userService;
+ private final TelegramBotController telegramBot;
- @Autowired
- public StartBot(TelegramBotController telegramBot, TelegramBotKeyboard telegramBotKeyboard, UserService userService) {
- this.telegramBot = telegramBot;
- this.telegramBotKeyboard = telegramBotKeyboard;
- this.userService = userService;
- }
@Override
public void run(ApplicationArguments args) {
try {
- fillCommandTable();
TelegramBotsApi botsApi = new TelegramBotsApi(DefaultBotSession.class);
botsApi.registerBot(telegramBot);
- userService.getAllUsers().forEach(this::SendInitMessage);
log.info("Бот запущен");
} catch (TelegramApiException e) {
log.error(e.getMessage());
}
}
- private void SendInitMessage(User user) {
- SendMessage answer = new SendMessage();
- answer.setChatId(user.getTelegramId());
- answer.setText("Бот перезапущен");
- CommandTemplate.sendMessage(telegramBotKeyboard.uiForm(answer), telegramBot);
- }
}
diff --git a/src/main/java/ru/ldeloff/servermonitorbot/mapper/UserMapper.java b/src/main/java/ru/ldeloff/servermonitorbot/mapper/UserMapper.java
deleted file mode 100644
index aa7811a..0000000
--- a/src/main/java/ru/ldeloff/servermonitorbot/mapper/UserMapper.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package ru.ldeloff.servermonitorbot.mapper;
-
-import org.springframework.stereotype.Component;
-import ru.ldeloff.servermonitorbot.model.User;
-import ru.ldeloff.servermonitorbot.model.dto.InitUserDto;
-import ru.ldeloff.servermonitorbot.service.role.RoleService;
-
-@Component
-public class UserMapper {
- final RoleService roleService;
-
- public UserMapper(RoleService roleService) {
- this.roleService = roleService;
- }
-
- public User dtoToUser(InitUserDto initUserDto) {
- User user = new User();
- user.setTelegramId(initUserDto.getTelegramId());
- user.setRole(roleService.findRoleByName(initUserDto.getRole()));
- return user;
- }
-}
diff --git a/src/main/java/ru/ldeloff/servermonitorbot/model/CommandList.java b/src/main/java/ru/ldeloff/servermonitorbot/model/CommandList.java
deleted file mode 100644
index 0a0ac20..0000000
--- a/src/main/java/ru/ldeloff/servermonitorbot/model/CommandList.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package ru.ldeloff.servermonitorbot.model;
-
-
-import jakarta.annotation.PostConstruct;
-import lombok.Getter;
-import lombok.RequiredArgsConstructor;
-import org.springframework.stereotype.Component;
-import ru.ldeloff.servermonitorbot.service.command.CommandTemplate;
-import ru.ldeloff.servermonitorbot.utils.CommandUtil;
-
-import java.util.HashMap;
-import java.util.Map;
-
-@Component
-@RequiredArgsConstructor
-public class CommandList {
- private final Map services;
- @Getter
- private HashMap commands;
- @PostConstruct
- private void setCommands() {
- commands = new HashMap<>();
- for (Map.Entry entry : services.entrySet()) {
- commands.put(entry.getValue().getName(), entry.getValue().getExpectedRole());
- }
- CommandUtil.setCommands(commands);
- }
-}
diff --git a/src/main/java/ru/ldeloff/servermonitorbot/model/Role.java b/src/main/java/ru/ldeloff/servermonitorbot/model/Role.java
deleted file mode 100644
index d6f800d..0000000
--- a/src/main/java/ru/ldeloff/servermonitorbot/model/Role.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package ru.ldeloff.servermonitorbot.model;
-
-import jakarta.persistence.*;
-import lombok.Data;
-
-@Entity
-@Data
-@Table(name = "roles")
-public class Role {
- @Id
- @Column(name = "id")
- @GeneratedValue(strategy = GenerationType.IDENTITY)
- private long id;
-
- @Column(name = "name")
- private String name;
-}
diff --git a/src/main/java/ru/ldeloff/servermonitorbot/model/SshCommand.java b/src/main/java/ru/ldeloff/servermonitorbot/model/SshCommand.java
index 2f9ae10..8ddf3f2 100644
--- a/src/main/java/ru/ldeloff/servermonitorbot/model/SshCommand.java
+++ b/src/main/java/ru/ldeloff/servermonitorbot/model/SshCommand.java
@@ -4,6 +4,7 @@ import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotNull;
import lombok.Getter;
import lombok.Setter;
+import ru.ldeloff.servermonitorbot.model.server.SshServer;
@Getter
@Setter
diff --git a/src/main/java/ru/ldeloff/servermonitorbot/model/User.java b/src/main/java/ru/ldeloff/servermonitorbot/model/User.java
deleted file mode 100644
index a32c391..0000000
--- a/src/main/java/ru/ldeloff/servermonitorbot/model/User.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package ru.ldeloff.servermonitorbot.model;
-
-import jakarta.persistence.*;
-import lombok.Data;
-
-@Entity
-@Data
-@Table(name = "users")
-public class User {
- @Id
- @Column(name = "id")
- @GeneratedValue(strategy = GenerationType.IDENTITY)
- private Long id;
-
- @Column(name = "telegram_id")
- private Long telegramId;
-
- @ManyToOne
- @JoinColumn(name = "role_id")
- private Role role;
-
- @Transient
- private String login;
-}
diff --git a/src/main/java/ru/ldeloff/servermonitorbot/model/dto/InitUserDto.java b/src/main/java/ru/ldeloff/servermonitorbot/model/dto/InitUserDto.java
deleted file mode 100644
index a18efdf..0000000
--- a/src/main/java/ru/ldeloff/servermonitorbot/model/dto/InitUserDto.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package ru.ldeloff.servermonitorbot.model.dto;
-
-import jakarta.validation.constraints.NotNull;
-import lombok.Data;
-import org.springframework.stereotype.Component;
-
-@Data
-@Component
-public class InitUserDto {
- @NotNull
- private long telegramId;
- @NotNull
- private String role;
-}
diff --git a/src/main/java/ru/ldeloff/servermonitorbot/model/server/ServerStatus.java b/src/main/java/ru/ldeloff/servermonitorbot/model/server/ServerStatus.java
new file mode 100644
index 0000000..b4b91f2
--- /dev/null
+++ b/src/main/java/ru/ldeloff/servermonitorbot/model/server/ServerStatus.java
@@ -0,0 +1,7 @@
+package ru.ldeloff.servermonitorbot.model.server;
+
+public enum ServerStatus {
+ ONLINE,
+ OFFLINE,
+ CONNECTION_LOST
+}
diff --git a/src/main/java/ru/ldeloff/servermonitorbot/model/SshServer.java b/src/main/java/ru/ldeloff/servermonitorbot/model/server/SshServer.java
similarity index 84%
rename from src/main/java/ru/ldeloff/servermonitorbot/model/SshServer.java
rename to src/main/java/ru/ldeloff/servermonitorbot/model/server/SshServer.java
index 9600225..39b11ba 100644
--- a/src/main/java/ru/ldeloff/servermonitorbot/model/SshServer.java
+++ b/src/main/java/ru/ldeloff/servermonitorbot/model/server/SshServer.java
@@ -1,4 +1,4 @@
-package ru.ldeloff.servermonitorbot.model;
+package ru.ldeloff.servermonitorbot.model.server;
import com.jcraft.jsch.Session;
import jakarta.validation.constraints.NotNull;
@@ -21,4 +21,5 @@ public class SshServer {
@NotNull
private String password;
private Session session;
+ private ServerStatus status;
}
diff --git a/src/main/java/ru/ldeloff/servermonitorbot/config/SshConfig.java b/src/main/java/ru/ldeloff/servermonitorbot/model/server/SshServers.java
similarity index 66%
rename from src/main/java/ru/ldeloff/servermonitorbot/config/SshConfig.java
rename to src/main/java/ru/ldeloff/servermonitorbot/model/server/SshServers.java
index bac7aed..31bbd50 100644
--- a/src/main/java/ru/ldeloff/servermonitorbot/config/SshConfig.java
+++ b/src/main/java/ru/ldeloff/servermonitorbot/model/server/SshServers.java
@@ -1,11 +1,9 @@
-package ru.ldeloff.servermonitorbot.config;
+package ru.ldeloff.servermonitorbot.model.server;
import lombok.Getter;
-import lombok.RequiredArgsConstructor;
import lombok.Setter;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
-import ru.ldeloff.servermonitorbot.model.SshServer;
import java.util.List;
@@ -13,6 +11,6 @@ import java.util.List;
@ConfigurationProperties(prefix = "ssh")
@Getter
@Setter
-public class SshConfig {
+public class SshServers {
private List servers;
}
diff --git a/src/main/java/ru/ldeloff/servermonitorbot/model/user/Role.java b/src/main/java/ru/ldeloff/servermonitorbot/model/user/Role.java
new file mode 100644
index 0000000..a304148
--- /dev/null
+++ b/src/main/java/ru/ldeloff/servermonitorbot/model/user/Role.java
@@ -0,0 +1,7 @@
+package ru.ldeloff.servermonitorbot.model.user;
+
+public enum Role {
+ ADMIN,
+ USER,
+ ANONYMOUS
+}
diff --git a/src/main/java/ru/ldeloff/servermonitorbot/model/user/User.java b/src/main/java/ru/ldeloff/servermonitorbot/model/user/User.java
new file mode 100644
index 0000000..eb6af47
--- /dev/null
+++ b/src/main/java/ru/ldeloff/servermonitorbot/model/user/User.java
@@ -0,0 +1,12 @@
+package ru.ldeloff.servermonitorbot.model.user;
+
+import lombok.Data;
+import lombok.experimental.Accessors;
+
+@Data
+@Accessors(chain = true)
+public class User {
+ private Long telegramId;
+ private Role role;
+ private String login;
+}
diff --git a/src/main/java/ru/ldeloff/servermonitorbot/model/user/Users.java b/src/main/java/ru/ldeloff/servermonitorbot/model/user/Users.java
new file mode 100644
index 0000000..442dab5
--- /dev/null
+++ b/src/main/java/ru/ldeloff/servermonitorbot/model/user/Users.java
@@ -0,0 +1,13 @@
+package ru.ldeloff.servermonitorbot.model.user;
+
+import lombok.Getter;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Getter
+@Component
+public class Users {
+ private final List users = new ArrayList<>();
+}
diff --git a/src/main/java/ru/ldeloff/servermonitorbot/repository/RoleRepository.java b/src/main/java/ru/ldeloff/servermonitorbot/repository/RoleRepository.java
deleted file mode 100644
index 4bb81ec..0000000
--- a/src/main/java/ru/ldeloff/servermonitorbot/repository/RoleRepository.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package ru.ldeloff.servermonitorbot.repository;
-
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.stereotype.Repository;
-import ru.ldeloff.servermonitorbot.model.Role;
-
-import java.util.Optional;
-
-@Repository
-public interface RoleRepository extends JpaRepository {
- Optional findRoleByName(String name);
- Optional findRoleById(Long id);
-}
diff --git a/src/main/java/ru/ldeloff/servermonitorbot/repository/SshRepository.java b/src/main/java/ru/ldeloff/servermonitorbot/repository/SshRepository.java
index c2821d4..7b43f07 100644
--- a/src/main/java/ru/ldeloff/servermonitorbot/repository/SshRepository.java
+++ b/src/main/java/ru/ldeloff/servermonitorbot/repository/SshRepository.java
@@ -1,16 +1,12 @@
package ru.ldeloff.servermonitorbot.repository;
import com.jcraft.jsch.JSchException;
-import com.jcraft.jsch.Session;
-import org.telegram.telegrambots.meta.api.methods.send.SendMessage;
-import ru.ldeloff.servermonitorbot.model.SshServer;
-
-import java.util.List;
+import ru.ldeloff.servermonitorbot.model.server.SshServer;
public interface SshRepository {
- void connectToAllServer();
- Session connectToServer(SshServer sshServer) throws JSchException;
- void disconnectSessions();
- String getStatusSessions();
- List getSshServers();
+
+ void connect(SshServer sshServer) throws JSchException;
+
+ void disconnect(SshServer sshServer);
+
}
diff --git a/src/main/java/ru/ldeloff/servermonitorbot/repository/SshRepositoryImpl.java b/src/main/java/ru/ldeloff/servermonitorbot/repository/SshRepositoryImpl.java
index ec028ab..548d66f 100644
--- a/src/main/java/ru/ldeloff/servermonitorbot/repository/SshRepositoryImpl.java
+++ b/src/main/java/ru/ldeloff/servermonitorbot/repository/SshRepositoryImpl.java
@@ -3,106 +3,35 @@ package ru.ldeloff.servermonitorbot.repository;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
+import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Repository;
-import org.telegram.telegrambots.meta.api.methods.send.SendMessage;
-import ru.ldeloff.servermonitorbot.config.SshConfig;
-import ru.ldeloff.servermonitorbot.model.SshServer;
+import ru.ldeloff.servermonitorbot.model.server.SshServer;
-import java.util.*;
-
-@Slf4j
@Repository
+@RequiredArgsConstructor
public class SshRepositoryImpl implements SshRepository {
- private final List sshServers;
-
@Value("${ssh.timeout:5000}")
private int TIMEOUT;
- @Autowired
- public SshRepositoryImpl(SshConfig sshConfig) {
- this.sshServers = sshConfig.getServers();
- }
-
- private Set sessions = new HashSet<>();
-
@Override
- public void connectToAllServer() {
- sshServers.forEach(sshServer -> {
- try {
- Session session = connectToServer(sshServer);
- sshServer.setSession(session);
- log.info("Успешно подключён к " + sshServer.getHost());
- } catch (JSchException e) {
- log.warn("Не удалось соединиться с " + sshServer.getHost() + ": " + e.getMessage());
- }
- });
- }
-
- @Override
- public Session connectToServer(SshServer sshServer) throws JSchException {
+ public void connect(SshServer sshServer) throws JSchException {
Session session = new JSch().getSession(sshServer.getUser(),
sshServer.getHost(),
sshServer.getPort());
session.setPassword(sshServer.getPassword());
session.setConfig("StrictHostKeyChecking", "no");
session.setTimeout(TIMEOUT);
+
session.connect();
- sessions.add(session);
- return session;
+
+ sshServer.setSession(session);
}
@Override
- public void disconnectSessions() {
- if (!sessions.isEmpty()) {
- sessions.forEach(Session::disconnect);
- sessions.forEach(sessions::remove);
- }
- }
-
- @Override
- public String getStatusSessions() {
- StringBuilder text = new StringBuilder("Статус соединения (может выполняться долго): \n");
- sshServers.forEach(server -> {
- text.append(server.getName())
- .append(": ")
- .append(checkStatusServer(server))
- .append("\n");
- });
- return String.valueOf(text);
- }
-
- @Override
- public List getSshServers() {
- return sshServers;
- }
-
- private String checkStatusServer(SshServer server) {
- if (Objects.isNull(server.getSession())) {
- try {
- connectToServer(server);
- return "OK";
- } catch (JSchException e) {
- log.warn("Не удалось соединиться с " + server.getHost() + ": " + e.getMessage());
- return "нет соединения";
- }
- }
-
- if (server.getSession().isConnected()) {
- return "OK";
- } else {
- try {
- connectToServer(server);
- return "OK";
- } catch (JSchException e) {
- log.warn("Не удалось соединиться с " + server.getHost() + ": " + e.getMessage());
- return "потеряно соединение";
- }
- }
-
+ public void disconnect(SshServer sshServer) {
+ sshServer.getSession().disconnect();
}
}
diff --git a/src/main/java/ru/ldeloff/servermonitorbot/repository/UserRepository.java b/src/main/java/ru/ldeloff/servermonitorbot/repository/UserRepository.java
deleted file mode 100644
index e4a1462..0000000
--- a/src/main/java/ru/ldeloff/servermonitorbot/repository/UserRepository.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package ru.ldeloff.servermonitorbot.repository;
-
-import jakarta.validation.constraints.NotNull;
-import org.springframework.data.domain.Example;
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.stereotype.Repository;
-import ru.ldeloff.servermonitorbot.model.User;
-
-import java.util.List;
-
-@Repository
-public interface UserRepository extends JpaRepository {
- User getByTelegramId(long id);
- @NotNull List findAll();
-}
diff --git a/src/main/java/ru/ldeloff/servermonitorbot/service/MessagingService.java b/src/main/java/ru/ldeloff/servermonitorbot/service/MessagingService.java
new file mode 100644
index 0000000..f9f6d9b
--- /dev/null
+++ b/src/main/java/ru/ldeloff/servermonitorbot/service/MessagingService.java
@@ -0,0 +1,11 @@
+package ru.ldeloff.servermonitorbot.service;
+
+import org.telegram.telegrambots.meta.api.methods.send.SendMessage;
+
+public interface MessagingService {
+ void sendMessageToAll(String message);
+
+ void sendMessageToAdmins(String message);
+
+ void send(SendMessage message);
+}
diff --git a/src/main/java/ru/ldeloff/servermonitorbot/service/MessagingServiceImpl.java b/src/main/java/ru/ldeloff/servermonitorbot/service/MessagingServiceImpl.java
new file mode 100644
index 0000000..a7ad461
--- /dev/null
+++ b/src/main/java/ru/ldeloff/servermonitorbot/service/MessagingServiceImpl.java
@@ -0,0 +1,48 @@
+package ru.ldeloff.servermonitorbot.service;
+
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.context.ApplicationContext;
+import org.springframework.stereotype.Service;
+import org.telegram.telegrambots.meta.api.methods.send.SendMessage;
+import org.telegram.telegrambots.meta.exceptions.TelegramApiException;
+import ru.ldeloff.servermonitorbot.controller.TelegramBotController;
+
+
+@Slf4j
+@Service
+@RequiredArgsConstructor
+public class MessagingServiceImpl implements MessagingService {
+
+ private final UserService userService;
+ private final ApplicationContext applicationContext;
+
+ @Override
+ public void sendMessageToAll(String message) {
+ userService.getAllUsers().forEach(user -> {
+ SendMessage sendMessage = new SendMessage();
+ sendMessage.setChatId(user.getTelegramId());
+ sendMessage.setText(message);
+ send(sendMessage);
+ });
+ }
+
+ @Override
+ public void sendMessageToAdmins(String message) {
+ userService.getAllAdmins().forEach(user -> {
+ SendMessage sendMessage = new SendMessage();
+ sendMessage.setChatId(user.getTelegramId());
+ sendMessage.setText(message);
+ send(sendMessage);
+ });
+ }
+
+ @Override
+ public void send(SendMessage message) {
+ try {
+ applicationContext.getBean(TelegramBotController.class).execute(message);
+ } catch (TelegramApiException e) {
+ log.warn("Ошибка при отправке сообщения", e.getMessage());
+ }
+ }
+}
diff --git a/src/main/java/ru/ldeloff/servermonitorbot/service/RoleService.java b/src/main/java/ru/ldeloff/servermonitorbot/service/RoleService.java
new file mode 100644
index 0000000..6cd1d70
--- /dev/null
+++ b/src/main/java/ru/ldeloff/servermonitorbot/service/RoleService.java
@@ -0,0 +1,7 @@
+package ru.ldeloff.servermonitorbot.service;
+
+import ru.ldeloff.servermonitorbot.model.user.Role;
+
+public interface RoleService {
+ Role findRoleByName(String name);
+}
diff --git a/src/main/java/ru/ldeloff/servermonitorbot/service/RoleServiceImpl.java b/src/main/java/ru/ldeloff/servermonitorbot/service/RoleServiceImpl.java
new file mode 100644
index 0000000..407d0ce
--- /dev/null
+++ b/src/main/java/ru/ldeloff/servermonitorbot/service/RoleServiceImpl.java
@@ -0,0 +1,14 @@
+package ru.ldeloff.servermonitorbot.service;
+
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import ru.ldeloff.servermonitorbot.model.user.Role;
+
+@Service
+@RequiredArgsConstructor
+public class RoleServiceImpl implements RoleService {
+ @Override
+ public Role findRoleByName(String name) {
+ return Role.valueOf(name);
+ }
+}
diff --git a/src/main/java/ru/ldeloff/servermonitorbot/service/ssh/SshService.java b/src/main/java/ru/ldeloff/servermonitorbot/service/SshService.java
similarity index 56%
rename from src/main/java/ru/ldeloff/servermonitorbot/service/ssh/SshService.java
rename to src/main/java/ru/ldeloff/servermonitorbot/service/SshService.java
index 6af73f6..3231fb0 100644
--- a/src/main/java/ru/ldeloff/servermonitorbot/service/ssh/SshService.java
+++ b/src/main/java/ru/ldeloff/servermonitorbot/service/SshService.java
@@ -1,16 +1,25 @@
-package ru.ldeloff.servermonitorbot.service.ssh;
+package ru.ldeloff.servermonitorbot.service;
import org.telegram.telegrambots.meta.api.methods.send.SendMessage;
import ru.ldeloff.servermonitorbot.model.SshCommand;
-import ru.ldeloff.servermonitorbot.model.SshServer;
+import ru.ldeloff.servermonitorbot.model.server.SshServer;
import java.util.List;
public interface SshService {
+
+ void updateConnection();
+
+ void disconnectAllConnections();
+
SendMessage getStatusSessions(SendMessage update);
- List getSshServers();
+ List getAllSshServers();
+
+ List getHealthSshServers();
+
SshCommand execute(SshCommand sshCommand);
+
List execute(List sshCommands);
}
diff --git a/src/main/java/ru/ldeloff/servermonitorbot/service/SshServiceImpl.java b/src/main/java/ru/ldeloff/servermonitorbot/service/SshServiceImpl.java
new file mode 100644
index 0000000..cda3154
--- /dev/null
+++ b/src/main/java/ru/ldeloff/servermonitorbot/service/SshServiceImpl.java
@@ -0,0 +1,146 @@
+package ru.ldeloff.servermonitorbot.service;
+
+import com.jcraft.jsch.ChannelExec;
+import com.jcraft.jsch.JSchException;
+import com.jcraft.jsch.Session;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import org.telegram.telegrambots.meta.api.methods.send.SendMessage;
+import ru.ldeloff.servermonitorbot.model.server.ServerStatus;
+import ru.ldeloff.servermonitorbot.model.server.SshServers;
+import ru.ldeloff.servermonitorbot.model.SshCommand;
+import ru.ldeloff.servermonitorbot.model.server.SshServer;
+import ru.ldeloff.servermonitorbot.repository.SshRepository;
+
+import java.io.ByteArrayOutputStream;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+
+@Service
+@Slf4j
+@RequiredArgsConstructor
+public class SshServiceImpl implements SshService {
+
+ private final SshServers sshServers;
+ private final SshRepository sshRepository;
+ private final MessagingService messagingService;
+
+ @Override
+ public void updateConnection() {
+ sshServers.getServers().forEach(sshServer -> {
+ try {
+ sshRepository.connect(sshServer);
+ updateServerStatus(sshServer, ServerStatus.ONLINE);
+ log.info("Успешно подключён к {}", sshServer.getHost());
+ } catch (JSchException e) {
+ if (sshServer.getStatus() == null) {
+ updateServerStatus(sshServer, ServerStatus.OFFLINE);
+ }
+ if (sshServer.getStatus() == ServerStatus.ONLINE) {
+ updateServerStatus(sshServer, ServerStatus.CONNECTION_LOST);
+ }
+ log.warn("Не удалось соединиться с {}: {}", sshServer.getHost(), e.getMessage());
+ }
+ });
+ }
+
+ @Override
+ public void disconnectAllConnections() {
+ sshServers.getServers().forEach(sshRepository::disconnect);
+ }
+
+ @Override
+ public SendMessage getStatusSessions(SendMessage message) {
+ StringBuilder text = new StringBuilder("Статус соединения (может выполняться долго): \n");
+ sshServers.getServers().forEach(server -> text.append(server.getName())
+ .append(": ")
+ .append(checkStatusServer(server))
+ .append("\n"));
+ message.setText(text.toString());
+ return message;
+ }
+
+ private String checkStatusServer(SshServer server) {
+ if (Objects.isNull(server.getSession())) {
+ return "нет соединения";
+ }
+
+ if (server.getSession().isConnected()) {
+ return "OK";
+ } else {
+ return "потеряно соединение";
+ }
+
+ }
+
+ private boolean checkHealth(SshServer server) {
+ if (Objects.isNull(server.getSession())) {
+ return false;
+ }
+
+ return server.getSession().isConnected();
+ }
+
+ @Override
+ public List getAllSshServers() {
+ return sshServers.getServers();
+ }
+
+ @Override
+ public List getHealthSshServers() {
+ return sshServers.getServers().stream().filter(this::checkHealth).toList();
+ }
+
+ @Override
+ public SshCommand execute(SshCommand sshCommand) {
+ List sshCommands = new ArrayList<>();
+ sshCommands.add(sshCommand);
+ return execute(sshCommands).get(0);
+ }
+
+ @Override
+ public List execute(List sshCommands) {
+ Session session = sshCommands.get(0).getSshServer().getSession(); // подразумевается, что в листе с командами сервер один и тот же
+ ChannelExec channel = null;
+ try {
+ channel = (ChannelExec) session.openChannel("exec");
+ ChannelExec finalChannel = channel;
+
+ sshCommands.forEach(command -> {
+ try {
+ finalChannel.setCommand(command.getCommand());
+ ByteArrayOutputStream responseStream = new ByteArrayOutputStream();
+ finalChannel.setOutputStream(responseStream);
+ finalChannel.connect();
+ while (finalChannel.isConnected()) {
+ Thread.sleep(command.getTimeout());
+ }
+ String responseString = new String(responseStream.toByteArray());
+ command.setResponse(responseString);
+ } catch (JSchException | InterruptedException e) {
+ log.warn(e.getMessage());
+ throw new RuntimeException(e);
+ }
+ });
+ } catch (JSchException e) {
+ log.warn(e.getMessage());
+ throw new RuntimeException(e);
+ } finally {
+ if (channel != null) {
+ channel.disconnect();
+ }
+ }
+ return sshCommands;
+ }
+
+ public void updateServerStatus(SshServer server, ServerStatus newStatus) {
+ ServerStatus oldStatus = server.getStatus();
+ if (oldStatus != newStatus) {
+ server.setStatus(newStatus);
+ messagingService.sendMessageToAdmins("Server status changed for " + server.getName() +
+ ": " + oldStatus + " -> " + newStatus);
+ }
+ }
+}
diff --git a/src/main/java/ru/ldeloff/servermonitorbot/service/UserService.java b/src/main/java/ru/ldeloff/servermonitorbot/service/UserService.java
new file mode 100644
index 0000000..566ac80
--- /dev/null
+++ b/src/main/java/ru/ldeloff/servermonitorbot/service/UserService.java
@@ -0,0 +1,16 @@
+package ru.ldeloff.servermonitorbot.service;
+
+import ru.ldeloff.servermonitorbot.model.user.User;
+
+import java.util.List;
+
+public interface UserService {
+
+ void saveOrUpdateUser(User user);
+
+ User getByTelegramId(Long id);
+
+ List getAllUsers();
+
+ List getAllAdmins();
+}
diff --git a/src/main/java/ru/ldeloff/servermonitorbot/service/UserServiceImpl.java b/src/main/java/ru/ldeloff/servermonitorbot/service/UserServiceImpl.java
new file mode 100644
index 0000000..380dcd1
--- /dev/null
+++ b/src/main/java/ru/ldeloff/servermonitorbot/service/UserServiceImpl.java
@@ -0,0 +1,42 @@
+package ru.ldeloff.servermonitorbot.service;
+
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import ru.ldeloff.servermonitorbot.model.user.Role;
+import ru.ldeloff.servermonitorbot.model.user.User;
+import ru.ldeloff.servermonitorbot.model.user.Users;
+
+import java.util.List;
+
+@Slf4j
+@Service
+@RequiredArgsConstructor
+public class UserServiceImpl implements UserService {
+
+ private final Users users;
+
+ @Override
+ public void saveOrUpdateUser(User user) {
+ if (getByTelegramId(user.getTelegramId()) == null) {
+ users.getUsers().add(user);
+ }
+ }
+
+ @Override
+ public User getByTelegramId(Long telegramId) {
+ return users.getUsers().stream()
+ .filter(user -> user.getTelegramId().equals(telegramId))
+ .findFirst()
+ .orElse(null);
+ }
+
+ @Override
+ public List getAllUsers() {return users.getUsers(); }
+
+ @Override
+ public List getAllAdmins() {
+ return users.getUsers().stream().filter(user -> user.getRole().equals(Role.ADMIN)).toList();
+ }
+
+}
diff --git a/src/main/java/ru/ldeloff/servermonitorbot/service/command/CpuTempCommand.java b/src/main/java/ru/ldeloff/servermonitorbot/service/command/CpuTempCommand.java
deleted file mode 100644
index 251cd9f..0000000
--- a/src/main/java/ru/ldeloff/servermonitorbot/service/command/CpuTempCommand.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package ru.ldeloff.servermonitorbot.service.command;
-
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
-import ru.ldeloff.servermonitorbot.model.SshCommand;
-import ru.ldeloff.servermonitorbot.model.SshServer;
-import ru.ldeloff.servermonitorbot.service.role.RoleService;
-import ru.ldeloff.servermonitorbot.service.ssh.SshService;
-import ru.ldeloff.servermonitorbot.service.user.UserService;
-import ru.ldeloff.servermonitorbot.utils.ui.ServerListButtons;
-
-import java.util.Objects;
-import java.util.Optional;
-
-@Service
-@Slf4j
-public class CpuTempCommand extends CommandTemplate {
- final SshService sshService;
- public CpuTempCommand(UserService userService, RoleService roleService, SshService sshService, ServerListButtons serverListButtons) {
- super(userService, roleService, serverListButtons, sshService);
- this.sshService = sshService;
- setName("CPU.temp");
- }
-
- @Override
- public String executeCommandSpecificHost(String serverName) {
- Optional server = sshService.getSshServers()
- .stream()
- .filter(x -> x.getName().equals(serverName))
- .findFirst();
- if (server.isPresent()) {
- SshCommand result = sshService.execute(new SshCommand("cat /sys/class/thermal/thermal_zone0/temp", 100, server.get()));
- return server.get().getName() + ": \n" +
- (Objects.isNull(result.getResponse()) ? "ошибка при выполнении команды" :
- String.format("%.1f",
- Double.parseDouble(result.getResponse().replaceAll("\n", ""))/1000))
- + "°C";
- } else {
- log.error("Ошибка при выполнении команды 'CPUtemp'. Искомый сервер (" + serverName + ") не найден");
- return null;
- }
- }
-}
diff --git a/src/main/java/ru/ldeloff/servermonitorbot/service/command/FirstUseCommand.java b/src/main/java/ru/ldeloff/servermonitorbot/service/command/FirstUseCommand.java
deleted file mode 100644
index a617133..0000000
--- a/src/main/java/ru/ldeloff/servermonitorbot/service/command/FirstUseCommand.java
+++ /dev/null
@@ -1,37 +0,0 @@
-package ru.ldeloff.servermonitorbot.service.command;
-
-import org.springframework.stereotype.Service;
-import org.telegram.telegrambots.meta.api.methods.send.SendMessage;
-import org.telegram.telegrambots.meta.api.objects.Update;
-import ru.ldeloff.servermonitorbot.model.User;
-import ru.ldeloff.servermonitorbot.service.role.RoleService;
-import ru.ldeloff.servermonitorbot.service.ssh.SshService;
-import ru.ldeloff.servermonitorbot.service.user.UserService;
-import ru.ldeloff.servermonitorbot.utils.ui.ServerListButtons;
-import ru.ldeloff.servermonitorbot.utils.ui.TelegramBotKeyboard;
-
-@Service
-public class FirstUseCommand extends CommandTemplate {
- final TelegramBotKeyboard telegramBotKeyboard;
-
- public FirstUseCommand(UserService userService,
- RoleService roleService,
- SshService sshService,
- ServerListButtons serverListButtons,
- TelegramBotKeyboard telegramBotKeyboard) {
- super(userService, roleService, serverListButtons, sshService);
- this.telegramBotKeyboard = telegramBotKeyboard;
- setName("/start");
- }
-
- @Override
- public SendMessage executeAggregate(User user, SendMessage message) {
- message.setText("Добро пожаловать " + user.getLogin() + "!");
- return telegramBotKeyboard.uiForm(message);
- }
-
- @Override
- public String executeCommandSpecificHost(String serverName) {
- return null;
- }
-}
diff --git a/src/main/java/ru/ldeloff/servermonitorbot/service/command/GetStatusSessions.java b/src/main/java/ru/ldeloff/servermonitorbot/service/command/GetStatusSessions.java
deleted file mode 100644
index 9e31dec..0000000
--- a/src/main/java/ru/ldeloff/servermonitorbot/service/command/GetStatusSessions.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package ru.ldeloff.servermonitorbot.service.command;
-
-import org.springframework.stereotype.Service;
-import org.telegram.telegrambots.meta.api.methods.send.SendMessage;
-import ru.ldeloff.servermonitorbot.model.User;
-import ru.ldeloff.servermonitorbot.service.role.RoleService;
-import ru.ldeloff.servermonitorbot.service.ssh.SshService;
-import ru.ldeloff.servermonitorbot.service.user.UserService;
-import ru.ldeloff.servermonitorbot.utils.ui.ServerListButtons;
-
-@Service
-public class GetStatusSessions extends CommandTemplate {
- final SshService sshService;
- public GetStatusSessions(UserService userService, RoleService roleService, SshService sshService, ServerListButtons serverListButtons) {
- super(userService, roleService, serverListButtons, sshService);
- this.sshService = sshService;
- setName("Статус");
- }
- @Override
- public SendMessage executeAggregate(User user, SendMessage message) {
- return sshService.getStatusSessions(message);
- }
- @Override
- public String executeCommandSpecificHost(String serverName) {
- return null;
- }
-}
diff --git a/src/main/java/ru/ldeloff/servermonitorbot/service/command/SwitchToMainMenu.java b/src/main/java/ru/ldeloff/servermonitorbot/service/command/SwitchToMainMenu.java
deleted file mode 100644
index 423f48e..0000000
--- a/src/main/java/ru/ldeloff/servermonitorbot/service/command/SwitchToMainMenu.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package ru.ldeloff.servermonitorbot.service.command;
-
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
-import org.telegram.telegrambots.meta.api.methods.send.SendMessage;
-import org.telegram.telegrambots.meta.api.objects.Update;
-import ru.ldeloff.servermonitorbot.controller.TelegramBotController;
-import ru.ldeloff.servermonitorbot.model.User;
-import ru.ldeloff.servermonitorbot.service.role.RoleService;
-import ru.ldeloff.servermonitorbot.service.ssh.SshService;
-import ru.ldeloff.servermonitorbot.service.user.UserService;
-import ru.ldeloff.servermonitorbot.utils.ui.ServerListButtons;
-import ru.ldeloff.servermonitorbot.utils.ui.TelegramBotKeyboard;
-
-@Service
-@Slf4j
-public class SwitchToMainMenu extends CommandTemplate {
- final TelegramBotKeyboard telegramBotKeyboard;
-
- public SwitchToMainMenu(UserService userService,
- RoleService roleService,
- SshService sshService,
- ServerListButtons serverListButtons,
- TelegramBotKeyboard telegramBotKeyboard) {
- super(userService, roleService, serverListButtons, sshService);
- this.telegramBotKeyboard = telegramBotKeyboard;
- setName("Not found");
- }
- @Override
- public String executeCommandSpecificHost(String serverName) {
- return null;
- }
-
- @Override
- void logSuccess(User user, String message) {
- log.warn("Получена несуществующая команда '" + message + "' от " + user.getLogin()
- + " (" + user.getTelegramId() + "). OK");
- }
- @Override
- SendMessage executeAggregate(User user, SendMessage message) {
- SendMessage answer = new SendMessage();
- answer.setChatId(user.getTelegramId());
- answer.setText("Неверная команда. Попробуем сначала.");
- return telegramBotKeyboard.uiForm(answer);
- }
-
-}
diff --git a/src/main/java/ru/ldeloff/servermonitorbot/service/role/RoleService.java b/src/main/java/ru/ldeloff/servermonitorbot/service/role/RoleService.java
deleted file mode 100644
index b26d5e1..0000000
--- a/src/main/java/ru/ldeloff/servermonitorbot/service/role/RoleService.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package ru.ldeloff.servermonitorbot.service.role;
-
-import ru.ldeloff.servermonitorbot.model.Role;
-
-public interface RoleService {
- Role findRoleByName(String name);
-
- Role findRoleById(Long id);
-}
diff --git a/src/main/java/ru/ldeloff/servermonitorbot/service/role/RoleServiceImpl.java b/src/main/java/ru/ldeloff/servermonitorbot/service/role/RoleServiceImpl.java
deleted file mode 100644
index 6cf52a8..0000000
--- a/src/main/java/ru/ldeloff/servermonitorbot/service/role/RoleServiceImpl.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package ru.ldeloff.servermonitorbot.service.role;
-
-import lombok.RequiredArgsConstructor;
-import org.springframework.stereotype.Service;
-import ru.ldeloff.servermonitorbot.model.Role;
-import ru.ldeloff.servermonitorbot.repository.RoleRepository;
-
-import java.util.Locale;
-import java.util.Optional;
-
-@Service
-@RequiredArgsConstructor
-public class RoleServiceImpl implements RoleService {
- private final RoleRepository roleRepository;
-
- @Override
- public Role findRoleByName(String name) {
- Optional role = roleRepository.findRoleByName(name.toUpperCase(Locale.ROOT));
- //noinspection OptionalGetWithoutIsPresent
- return role.orElseGet(() -> roleRepository.findRoleByName("ANONYMOUS").get());
- }
-
- @Override
- public Role findRoleById(Long id) {
- Optional role = roleRepository.findRoleById(id);
- return role.orElseGet(() -> roleRepository.findRoleByName("ANONYMOUS").get());
- }
-}
diff --git a/src/main/java/ru/ldeloff/servermonitorbot/service/ssh/SshServiceImpl.java b/src/main/java/ru/ldeloff/servermonitorbot/service/ssh/SshServiceImpl.java
deleted file mode 100644
index 04e4778..0000000
--- a/src/main/java/ru/ldeloff/servermonitorbot/service/ssh/SshServiceImpl.java
+++ /dev/null
@@ -1,74 +0,0 @@
-package ru.ldeloff.servermonitorbot.service.ssh;
-
-import com.jcraft.jsch.ChannelExec;
-import com.jcraft.jsch.JSchException;
-import com.jcraft.jsch.Session;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
-import org.telegram.telegrambots.meta.api.methods.send.SendMessage;
-import ru.ldeloff.servermonitorbot.model.SshCommand;
-import ru.ldeloff.servermonitorbot.model.SshServer;
-import ru.ldeloff.servermonitorbot.repository.SshRepository;
-
-import java.io.ByteArrayOutputStream;
-import java.util.ArrayList;
-import java.util.List;
-
-@Service
-@Slf4j
-@RequiredArgsConstructor
-public class SshServiceImpl implements SshService {
- final SshRepository sshRepository;
- @Override
- public SendMessage getStatusSessions(SendMessage message) {
- message.setText(sshRepository.getStatusSessions());
- return message;
- }
- @Override
- public List getSshServers() {
- return sshRepository.getSshServers();
- }
-
- @Override
- public SshCommand execute(SshCommand sshCommand) {
- List sshCommands = new ArrayList<>();
- sshCommands.add(sshCommand);
- return execute(sshCommands).get(0);
- }
-
- @Override
- public List execute(List sshCommands) {
- Session session = sshCommands.get(0).getSshServer().getSession(); // подразумевается, что в листе с командами сервер один и тот же
- ChannelExec channel = null;
- try {
- channel = (ChannelExec) session.openChannel("exec");
- ChannelExec finalChannel = channel;
-
- sshCommands.forEach(command -> {
- try {
- finalChannel.setCommand(command.getCommand());
- ByteArrayOutputStream responseStream = new ByteArrayOutputStream();
- finalChannel.setOutputStream(responseStream);
- finalChannel.connect();
- while (finalChannel.isConnected()) {
- Thread.sleep(command.getTimeout());
- }
- String responseString = new String(responseStream.toByteArray());
- command.setResponse(responseString);
- } catch (JSchException | InterruptedException e) {
- log.warn(e.getMessage());
- throw new RuntimeException(e);
- }
- });
- } catch (JSchException e) {
- log.warn(e.getMessage());
- throw new RuntimeException(e);
- } finally {
- if (channel != null) {
- channel.disconnect();
- }
- }
- return sshCommands;
- }
-}
diff --git a/src/main/java/ru/ldeloff/servermonitorbot/service/user/UserService.java b/src/main/java/ru/ldeloff/servermonitorbot/service/user/UserService.java
deleted file mode 100644
index fa789e0..0000000
--- a/src/main/java/ru/ldeloff/servermonitorbot/service/user/UserService.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package ru.ldeloff.servermonitorbot.service.user;
-
-import ru.ldeloff.servermonitorbot.model.User;
-
-import java.util.List;
-
-public interface UserService {
- User saveOrUpdateUser(User user);
-
- User getByTelegramId(Long id);
-
- List getAllUsers();
-}
diff --git a/src/main/java/ru/ldeloff/servermonitorbot/service/user/UserServiceImpl.java b/src/main/java/ru/ldeloff/servermonitorbot/service/user/UserServiceImpl.java
deleted file mode 100644
index 43345ed..0000000
--- a/src/main/java/ru/ldeloff/servermonitorbot/service/user/UserServiceImpl.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package ru.ldeloff.servermonitorbot.service.user;
-
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Service;
-import ru.ldeloff.servermonitorbot.model.User;
-import ru.ldeloff.servermonitorbot.repository.UserRepository;
-
-import java.util.List;
-
-@Service
-@RequiredArgsConstructor
-@Slf4j
-public class UserServiceImpl implements UserService {
-
- final UserRepository userRepository;
-
- @Override
- public User saveOrUpdateUser(User user) {
- User existUser = userRepository.getByTelegramId(user.getTelegramId());
- if (existUser != null) {
- user.setId(existUser.getId());
- }
- return userRepository.save(user);
- }
-
- @Override
- public User getByTelegramId(Long id) {
- return userRepository.getByTelegramId(id);
- }
-
- @Override
- public List getAllUsers() {return userRepository.findAll(); }
-}
diff --git a/src/main/java/ru/ldeloff/servermonitorbot/util/UpdateUtil.java b/src/main/java/ru/ldeloff/servermonitorbot/util/UpdateUtil.java
new file mode 100644
index 0000000..a4cd7bb
--- /dev/null
+++ b/src/main/java/ru/ldeloff/servermonitorbot/util/UpdateUtil.java
@@ -0,0 +1,51 @@
+package ru.ldeloff.servermonitorbot.util;
+
+import lombok.RequiredArgsConstructor;
+import org.springframework.stereotype.Service;
+import org.telegram.telegrambots.meta.api.objects.Update;
+import ru.ldeloff.servermonitorbot.model.user.Role;
+import ru.ldeloff.servermonitorbot.model.user.User;
+import ru.ldeloff.servermonitorbot.service.UserService;
+
+import java.util.List;
+
+@Service
+@RequiredArgsConstructor
+public class UpdateUtil {
+
+ private final UserService userService;
+
+ public User getUser(Update update) {
+ long id = -1L;
+ String login = null;
+ if (update.hasMessage()) {
+ id = update.getMessage().getChat().getId();
+ login = update.getMessage().getChat().getUserName();
+ } else if (update.hasCallbackQuery()) {
+ id = update.getCallbackQuery().getMessage().getChatId();
+ login = update.getCallbackQuery().getFrom().getUserName();
+ }
+ User user = userService.getByTelegramId(id);
+ if (user == null) {
+ user = new User();
+ user.setTelegramId(id);
+ user.setRole(Role.ANONYMOUS);
+ }
+ user.setLogin(login);
+ return user;
+ }
+
+ public String getMessage(Update update) {
+ if (update.hasMessage()) {
+ return update.getMessage().getText();
+ } else if (update.hasCallbackQuery()) {
+ return update.getCallbackQuery().getData();
+ }
+ return "";
+ }
+
+ public boolean roleChecker(Update update, List expectedRoles) {
+ User user = getUser(update);
+ return expectedRoles.contains(user.getRole());
+ }
+}
diff --git a/src/main/java/ru/ldeloff/servermonitorbot/utils/CommandUtil.java b/src/main/java/ru/ldeloff/servermonitorbot/utils/CommandUtil.java
deleted file mode 100644
index c2cf560..0000000
--- a/src/main/java/ru/ldeloff/servermonitorbot/utils/CommandUtil.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package ru.ldeloff.servermonitorbot.utils;
-
-import lombok.Getter;
-import lombok.Setter;
-import lombok.experimental.UtilityClass;
-
-import java.util.HashMap;
-
-@UtilityClass
-public class CommandUtil {
-
- @Setter
- @Getter
- private HashMap commands;
-}
diff --git a/src/main/java/ru/ldeloff/servermonitorbot/utils/RoleChecker.java b/src/main/java/ru/ldeloff/servermonitorbot/utils/RoleChecker.java
deleted file mode 100644
index 7b5a00a..0000000
--- a/src/main/java/ru/ldeloff/servermonitorbot/utils/RoleChecker.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package ru.ldeloff.servermonitorbot.utils;
-
-import lombok.RequiredArgsConstructor;
-import org.springframework.stereotype.Component;
-import org.telegram.telegrambots.meta.api.methods.send.SendMessage;
-import ru.ldeloff.servermonitorbot.model.Role;
-import ru.ldeloff.servermonitorbot.model.User;
-import ru.ldeloff.servermonitorbot.service.user.UserService;
-
-@RequiredArgsConstructor
-@Component
-public class RoleChecker {
- final UserService userService;
- public Role getRole(SendMessage sendMessage) {
- String chatId = sendMessage.getChatId();
- User user = userService.getByTelegramId(Long.parseLong(chatId));
- return user.getRole();
- }
-}
diff --git a/src/main/java/ru/ldeloff/servermonitorbot/utils/SshServerUtils.java b/src/main/java/ru/ldeloff/servermonitorbot/utils/SshServerUtils.java
deleted file mode 100644
index 4db77ca..0000000
--- a/src/main/java/ru/ldeloff/servermonitorbot/utils/SshServerUtils.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package ru.ldeloff.servermonitorbot.utils;
-
-import ru.ldeloff.servermonitorbot.model.SshServer;
-
-import java.util.List;
-import java.util.Objects;
-
-public class SshServerUtils {
- public static List filterGoodServers(List sshServers) {
- List goodSshServers = sshServers.stream()
- .filter(Objects::nonNull)
- .filter(server -> Objects.nonNull(server.getSession()))
- .filter(server -> server.getSession().isConnected())
- .toList();
- return goodSshServers;
- }
-}
diff --git a/src/main/java/ru/ldeloff/servermonitorbot/view/FirstUseCommand.java b/src/main/java/ru/ldeloff/servermonitorbot/view/FirstUseCommand.java
new file mode 100644
index 0000000..0a6d48d
--- /dev/null
+++ b/src/main/java/ru/ldeloff/servermonitorbot/view/FirstUseCommand.java
@@ -0,0 +1,33 @@
+package ru.ldeloff.servermonitorbot.view;
+
+import org.springframework.stereotype.Service;
+import org.telegram.telegrambots.meta.api.methods.send.SendMessage;
+import ru.ldeloff.servermonitorbot.commands.CommandTemplate;
+import ru.ldeloff.servermonitorbot.service.MessagingService;
+import ru.ldeloff.servermonitorbot.util.UpdateUtil;
+import ru.ldeloff.servermonitorbot.model.user.User;
+import ru.ldeloff.servermonitorbot.service.SshService;
+
+@Service
+public class FirstUseCommand extends CommandTemplate {
+
+ private final TelegramBotKeyboard telegramBotKeyboard;
+
+ public FirstUseCommand(UpdateUtil updateUtil, ServerListButtons serverListButtons, SshService sshService, TelegramBotKeyboard telegramBotKeyboard, MessagingService messagingService) {
+ super(updateUtil, serverListButtons, sshService, messagingService);
+ this.telegramBotKeyboard = telegramBotKeyboard;
+ setName("/start");
+ }
+
+
+ @Override
+ public SendMessage executeAggregate(User user, SendMessage message) {
+ message.setText("Добро пожаловать " + user.getLogin() + "!");
+ return telegramBotKeyboard.uiForm(message);
+ }
+
+ @Override
+ public String executeCommandSpecificHost(String serverName) {
+ return null;
+ }
+}
diff --git a/src/main/java/ru/ldeloff/servermonitorbot/utils/ui/ServerListButtons.java b/src/main/java/ru/ldeloff/servermonitorbot/view/ServerListButtons.java
similarity index 86%
rename from src/main/java/ru/ldeloff/servermonitorbot/utils/ui/ServerListButtons.java
rename to src/main/java/ru/ldeloff/servermonitorbot/view/ServerListButtons.java
index 3af0f41..aeb70b7 100644
--- a/src/main/java/ru/ldeloff/servermonitorbot/utils/ui/ServerListButtons.java
+++ b/src/main/java/ru/ldeloff/servermonitorbot/view/ServerListButtons.java
@@ -1,14 +1,11 @@
-package ru.ldeloff.servermonitorbot.utils.ui;
+package ru.ldeloff.servermonitorbot.view;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;
import org.telegram.telegrambots.meta.api.methods.send.SendMessage;
import org.telegram.telegrambots.meta.api.objects.replykeyboard.InlineKeyboardMarkup;
import org.telegram.telegrambots.meta.api.objects.replykeyboard.buttons.InlineKeyboardButton;
-import ru.ldeloff.servermonitorbot.model.Role;
-import ru.ldeloff.servermonitorbot.service.ssh.SshService;
-import ru.ldeloff.servermonitorbot.utils.RoleChecker;
-import ru.ldeloff.servermonitorbot.utils.ui.UiFormer;
+import ru.ldeloff.servermonitorbot.service.SshService;
import java.util.ArrayList;
import java.util.List;
@@ -25,7 +22,7 @@ public class ServerListButtons implements UiFormer {
List> keyboard = new ArrayList<>();
InlineKeyboardMarkup inlineKeyboardMarkup = new InlineKeyboardMarkup();
- sshService.getSshServers().forEach(sshServer -> {
+ sshService.getAllSshServers().forEach(sshServer -> {
if (Objects.nonNull(sshServer.getSession())) {
if (sshServer.getSession().isConnected()) {
List keyboardRow = new ArrayList<>();
diff --git a/src/main/java/ru/ldeloff/servermonitorbot/view/SwitchToMainMenu.java b/src/main/java/ru/ldeloff/servermonitorbot/view/SwitchToMainMenu.java
new file mode 100644
index 0000000..bbd5d59
--- /dev/null
+++ b/src/main/java/ru/ldeloff/servermonitorbot/view/SwitchToMainMenu.java
@@ -0,0 +1,37 @@
+package ru.ldeloff.servermonitorbot.view;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import org.telegram.telegrambots.meta.api.methods.send.SendMessage;
+import ru.ldeloff.servermonitorbot.commands.CommandTemplate;
+import ru.ldeloff.servermonitorbot.service.MessagingService;
+import ru.ldeloff.servermonitorbot.util.UpdateUtil;
+import ru.ldeloff.servermonitorbot.model.user.User;
+import ru.ldeloff.servermonitorbot.service.SshService;
+
+@Service
+@Slf4j
+public class SwitchToMainMenu extends CommandTemplate {
+
+ private final TelegramBotKeyboard telegramBotKeyboard;
+
+ public SwitchToMainMenu(UpdateUtil updateUtil, ServerListButtons serverListButtons, SshService sshService, TelegramBotKeyboard telegramBotKeyboard, MessagingService messagingService) {
+ super(updateUtil, serverListButtons, sshService, messagingService);
+ this.telegramBotKeyboard = telegramBotKeyboard;
+ setName("Not found");
+ }
+
+ @Override
+ public String executeCommandSpecificHost(String serverName) {
+ return null;
+ }
+
+ @Override
+ public SendMessage executeAggregate(User user, SendMessage message) {
+ SendMessage answer = new SendMessage();
+ answer.setChatId(user.getTelegramId());
+ answer.setText("Неверная команда. Попробуем сначала.");
+ return telegramBotKeyboard.uiForm(answer);
+ }
+
+}
diff --git a/src/main/java/ru/ldeloff/servermonitorbot/utils/ui/TelegramBotKeyboard.java b/src/main/java/ru/ldeloff/servermonitorbot/view/TelegramBotKeyboard.java
similarity index 51%
rename from src/main/java/ru/ldeloff/servermonitorbot/utils/ui/TelegramBotKeyboard.java
rename to src/main/java/ru/ldeloff/servermonitorbot/view/TelegramBotKeyboard.java
index 0aec83b..89ac91d 100644
--- a/src/main/java/ru/ldeloff/servermonitorbot/utils/ui/TelegramBotKeyboard.java
+++ b/src/main/java/ru/ldeloff/servermonitorbot/view/TelegramBotKeyboard.java
@@ -1,61 +1,68 @@
-package ru.ldeloff.servermonitorbot.utils.ui;
+package ru.ldeloff.servermonitorbot.view;
import lombok.RequiredArgsConstructor;
+import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Component;
import org.telegram.telegrambots.meta.api.methods.send.SendMessage;
import org.telegram.telegrambots.meta.api.objects.replykeyboard.ReplyKeyboardMarkup;
import org.telegram.telegrambots.meta.api.objects.replykeyboard.buttons.KeyboardButton;
import org.telegram.telegrambots.meta.api.objects.replykeyboard.buttons.KeyboardRow;
-import ru.ldeloff.servermonitorbot.model.CommandList;
-import ru.ldeloff.servermonitorbot.model.Role;
-import ru.ldeloff.servermonitorbot.service.command.CommandTemplate;
-import ru.ldeloff.servermonitorbot.utils.CommandUtil;
-import ru.ldeloff.servermonitorbot.utils.RoleChecker;
+import ru.ldeloff.servermonitorbot.model.user.Role;
+import ru.ldeloff.servermonitorbot.model.user.User;
+import ru.ldeloff.servermonitorbot.service.UserService;
+import ru.ldeloff.servermonitorbot.commands.CommandTemplate;
import java.util.ArrayList;
-import java.util.HashMap;
+import java.util.List;
import java.util.Map;
+import static ru.ldeloff.servermonitorbot.model.user.Role.ADMIN;
+import static ru.ldeloff.servermonitorbot.model.user.Role.USER;
+
@Component
@RequiredArgsConstructor
public class TelegramBotKeyboard implements UiFormer {
- private final RoleChecker roleChecker;
+
+ private final UserService userService;
+ private final ApplicationContext applicationContext;
+
@Override
public SendMessage uiForm(SendMessage message) {
ReplyKeyboardMarkup replyKeyboardMarkup = new ReplyKeyboardMarkup();
replyKeyboardMarkup.setResizeKeyboard(true);
replyKeyboardMarkup.setOneTimeKeyboard(false);
- ArrayList keyboardRows = formKeyboard(
- roleChecker.getRole(message).getId());
+ String chatId = message.getChatId();
+ User user = userService.getByTelegramId(Long.parseLong(chatId));
+ ArrayList keyboardRows = formKeyboard(user);
replyKeyboardMarkup.setKeyboard(keyboardRows);
message.setReplyMarkup(replyKeyboardMarkup);
return message;
}
- private ArrayList formKeyboard(long role) {
- HashMap commands = CommandUtil.getCommands();
- if (role < 3) {
- commands.remove("/start");
- commands.remove("Not found");
- }
+ private ArrayList formKeyboard(User user) {
+ Role role = user.getRole();
+ Map commands = applicationContext.getBeansOfType(CommandTemplate.class);
+ commands.remove("firstUseCommand");
+ commands.remove("switchToMainMenu");
+
int buttonOnLine = 3;
ArrayList keyboardRows = new ArrayList<>();
KeyboardRow keyboardRow = new KeyboardRow();
- for (Map.Entry entry : commands.entrySet()) {
- if (role <= entry.getValue()) {
- keyboardRow.add(new KeyboardButton(entry.getKey()));
+ for (Map.Entry entry : commands.entrySet()) {
+ if (entry.getValue().getExpectedRole().contains(role)) {
+ keyboardRow.add(new KeyboardButton(entry.getValue().getName()));
}
if (keyboardRow.size()>=buttonOnLine) {
keyboardRows.add(keyboardRow);
keyboardRow = new KeyboardRow();
}
}
- if (keyboardRow.size() > 0) {
+ if (!keyboardRow.isEmpty()) {
keyboardRows.add(keyboardRow);
}
return keyboardRows;
diff --git a/src/main/java/ru/ldeloff/servermonitorbot/utils/ui/UiFormer.java b/src/main/java/ru/ldeloff/servermonitorbot/view/UiFormer.java
similarity index 75%
rename from src/main/java/ru/ldeloff/servermonitorbot/utils/ui/UiFormer.java
rename to src/main/java/ru/ldeloff/servermonitorbot/view/UiFormer.java
index c847293..0ba554a 100644
--- a/src/main/java/ru/ldeloff/servermonitorbot/utils/ui/UiFormer.java
+++ b/src/main/java/ru/ldeloff/servermonitorbot/view/UiFormer.java
@@ -1,4 +1,4 @@
-package ru.ldeloff.servermonitorbot.utils.ui;
+package ru.ldeloff.servermonitorbot.view;
import org.telegram.telegrambots.meta.api.methods.send.SendMessage;
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 721da82..2facf7b 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -1,15 +1,6 @@
spring:
application:
name: ServerMonitorBot
- datasource:
- url: jdbc:postgresql://db:5432/servermonitorbot
- username: servermonitorbot
- password: servermonitorbot
- jpa:
- hibernate:
- ddl-auto: none
- flyway:
- locations: classpath:db/migration
bot:
name: "ServerMonitorBot"
token: "token"
@@ -17,6 +8,7 @@ bot:
- telegramId: 123456789
role: admin
ssh:
+ checkConnectionDelay: 300000
timeout: 5000
servers:
-
diff --git a/src/main/resources/db/migration/V001__create_table_users.sql b/src/main/resources/db/migration/V001__create_table_users.sql
deleted file mode 100644
index 058d3f4..0000000
--- a/src/main/resources/db/migration/V001__create_table_users.sql
+++ /dev/null
@@ -1,15 +0,0 @@
---changeset L_DelOff:create_table_users rollbackSplitStatements:true
---comment: Создание таблицы пользователей
-CREATE TABLE users
-(
- id SERIAL PRIMARY KEY,
- login VARCHAR(128),
- id_role integer
-);
-
-COMMENT ON TABLE users IS 'Пользователи';
-COMMENT ON COLUMN users.id IS 'Идентификатор пользователя';
-COMMENT ON COLUMN users.login IS 'Логин пользователя';
-COMMENT ON COLUMN users.id_role IS 'Ссылка на роль пользователя';
-
---rollback DROP TABLE users;
\ No newline at end of file
diff --git a/src/main/resources/db/migration/V002__create_table_roles.sql b/src/main/resources/db/migration/V002__create_table_roles.sql
deleted file mode 100644
index 76c5559..0000000
--- a/src/main/resources/db/migration/V002__create_table_roles.sql
+++ /dev/null
@@ -1,13 +0,0 @@
---changeset L_DelOff:create_table_roles rollbackSplitStatements:true
---comment: Создание таблицы ролей
-CREATE TABLE roles
-(
- id SERIAL PRIMARY KEY,
- role VARCHAR(128)
-);
-
-COMMENT ON TABLE roles IS 'Пользователи';
-COMMENT ON COLUMN roles.id IS 'Идентификатор пользователя';
-COMMENT ON COLUMN roles.role IS 'Логин пользователя';
-
---rollback DROP TABLE roles;
\ No newline at end of file
diff --git a/src/main/resources/db/migration/V003__add_FK_users_to_roles.sql b/src/main/resources/db/migration/V003__add_FK_users_to_roles.sql
deleted file mode 100644
index 6225766..0000000
--- a/src/main/resources/db/migration/V003__add_FK_users_to_roles.sql
+++ /dev/null
@@ -1,2 +0,0 @@
-ALTER TABLE users
-ADD COLUMN role_id INT NOT NULL REFERENCES roles(id);
\ No newline at end of file
diff --git a/src/main/resources/db/migration/V004__add_roles.sql b/src/main/resources/db/migration/V004__add_roles.sql
deleted file mode 100644
index 65c0cbf..0000000
--- a/src/main/resources/db/migration/V004__add_roles.sql
+++ /dev/null
@@ -1,2 +0,0 @@
-INSERT INTO roles (id, role) VALUES (1, 'ADMIN');
-INSERT INTO roles (id, role) VALUES (2, 'USER');
\ No newline at end of file
diff --git a/src/main/resources/db/migration/V005__add_anonymous_role.sql b/src/main/resources/db/migration/V005__add_anonymous_role.sql
deleted file mode 100644
index ba5a19a..0000000
--- a/src/main/resources/db/migration/V005__add_anonymous_role.sql
+++ /dev/null
@@ -1 +0,0 @@
-INSERT INTO roles (id, role) VALUES (3, 'ANONYMOUS');
\ No newline at end of file
diff --git a/src/main/resources/db/migration/V006__refactor_users_table.sql b/src/main/resources/db/migration/V006__refactor_users_table.sql
deleted file mode 100644
index 4a51d65..0000000
--- a/src/main/resources/db/migration/V006__refactor_users_table.sql
+++ /dev/null
@@ -1,9 +0,0 @@
-ALTER TABLE users
- DROP COLUMN login;
-
-ALTER TABLE users
- ADD COLUMN telegram_id INTEGER UNIQUE;
- COMMENT ON COLUMN users.telegram_id IS 'Telegram ID пользователя';
-
-ALTER TABLE users
- DROP COLUMN id_role;
\ No newline at end of file
diff --git a/src/main/resources/db/migration/V007__refactor_roles_table.sql b/src/main/resources/db/migration/V007__refactor_roles_table.sql
deleted file mode 100644
index c39ec05..0000000
--- a/src/main/resources/db/migration/V007__refactor_roles_table.sql
+++ /dev/null
@@ -1,6 +0,0 @@
-ALTER TABLE roles
- DROP COLUMN role;
-
-ALTER TABLE roles
- ADD COLUMN name VARCHAR(128);
-COMMENT ON COLUMN roles.name IS 'Имя роли';
\ No newline at end of file
diff --git a/src/main/resources/db/migration/V008__add_roles.sql b/src/main/resources/db/migration/V008__add_roles.sql
deleted file mode 100644
index cdce579..0000000
--- a/src/main/resources/db/migration/V008__add_roles.sql
+++ /dev/null
@@ -1,4 +0,0 @@
-TRUNCATE TABLE roles CASCADE;
-INSERT INTO roles (id, name) VALUES (1, 'ADMIN');
-INSERT INTO roles (id, name) VALUES (2, 'USER');
-INSERT INTO roles (id, name) VALUES (3, 'ANONYMOUS');
\ No newline at end of file