diff --git a/src/main/java/ru/ldeloff/servermonitorbot/controller/TelegramBotController.java b/src/main/java/ru/ldeloff/servermonitorbot/controller/TelegramBotController.java index f324553..b71dff5 100644 --- a/src/main/java/ru/ldeloff/servermonitorbot/controller/TelegramBotController.java +++ b/src/main/java/ru/ldeloff/servermonitorbot/controller/TelegramBotController.java @@ -5,8 +5,10 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.telegram.telegrambots.bots.TelegramLongPollingBot; import org.telegram.telegrambots.meta.api.objects.Update; +import ru.ldeloff.servermonitorbot.model.Command; 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.FirstUseCommand; import ru.ldeloff.servermonitorbot.service.command.GetStatusSessions; import ru.ldeloff.servermonitorbot.service.command.SwitchToMainMenu; @@ -19,13 +21,15 @@ import ru.ldeloff.servermonitorbot.service.command.mdadm.MdadmStatusCommand; import ru.ldeloff.servermonitorbot.service.command.uname.UnameAggregateCommand; import ru.ldeloff.servermonitorbot.service.command.uname.UnameCommand; +import java.util.Map; + @Service @Slf4j @RequiredArgsConstructor public class TelegramBotController extends TelegramLongPollingBot { + //private final Map commands; final TelegramBot telegramBot; final SshRepository sshRepository; - final FirstUseCommand firstUseCommand; final GetStatusSessions getStatusSessions; final UnameAggregateCommand unameAggregateCommand; diff --git a/src/main/java/ru/ldeloff/servermonitorbot/init/AddCommands.java b/src/main/java/ru/ldeloff/servermonitorbot/init/AddCommands.java new file mode 100644 index 0000000..c623a79 --- /dev/null +++ b/src/main/java/ru/ldeloff/servermonitorbot/init/AddCommands.java @@ -0,0 +1,7 @@ +package ru.ldeloff.servermonitorbot.init; + +public class AddCommands { + public static void fillCommandTable() { + + } +} diff --git a/src/main/java/ru/ldeloff/servermonitorbot/init/StartBot.java b/src/main/java/ru/ldeloff/servermonitorbot/init/StartBot.java index ec24ba4..9b3f7a8 100644 --- a/src/main/java/ru/ldeloff/servermonitorbot/init/StartBot.java +++ b/src/main/java/ru/ldeloff/servermonitorbot/init/StartBot.java @@ -15,6 +15,8 @@ import ru.ldeloff.servermonitorbot.model.User; import ru.ldeloff.servermonitorbot.service.command.CommandTemplate; import ru.ldeloff.servermonitorbot.service.user.UserService; +import static ru.ldeloff.servermonitorbot.init.AddCommands.fillCommandTable; + @Slf4j @Component @NoArgsConstructor @@ -31,12 +33,12 @@ public class StartBot implements ApplicationRunner { @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) { - //e.printStackTrace(); log.error(e.getMessage()); } } diff --git a/src/main/java/ru/ldeloff/servermonitorbot/model/Command.java b/src/main/java/ru/ldeloff/servermonitorbot/model/Command.java index 936f89b..40961ed 100644 --- a/src/main/java/ru/ldeloff/servermonitorbot/model/Command.java +++ b/src/main/java/ru/ldeloff/servermonitorbot/model/Command.java @@ -1,25 +1,19 @@ package ru.ldeloff.servermonitorbot.model; -import jakarta.validation.constraints.Min; -import jakarta.validation.constraints.NotNull; -import lombok.Getter; -import lombok.Setter; - -@Getter -@Setter +import jakarta.persistence.*; +import lombok.Data; +@Entity +@Data +@Table(name = "commands") public class Command { - @NotNull - private String command; - @NotNull - @Min(100) - private int timeout; - @NotNull - private SshServer sshServer; - private String response; + @Id + @Column(name = "id") + @GeneratedValue(strategy = GenerationType.IDENTITY) + private long id; - public Command(String command, int timeout, SshServer sshServer) { - this.command = command; - this.timeout = timeout; - this.sshServer = sshServer; - } + @Column(name = "name") + private String name; + + @Column(name = "level") + private int level; } diff --git a/src/main/java/ru/ldeloff/servermonitorbot/model/SshCommand.java b/src/main/java/ru/ldeloff/servermonitorbot/model/SshCommand.java new file mode 100644 index 0000000..2f9ae10 --- /dev/null +++ b/src/main/java/ru/ldeloff/servermonitorbot/model/SshCommand.java @@ -0,0 +1,25 @@ +package ru.ldeloff.servermonitorbot.model; + +import jakarta.validation.constraints.Min; +import jakarta.validation.constraints.NotNull; +import lombok.Getter; +import lombok.Setter; + +@Getter +@Setter +public class SshCommand { + @NotNull + private String command; + @NotNull + @Min(100) + private int timeout; + @NotNull + private SshServer sshServer; + private String response; + + public SshCommand(String command, int timeout, SshServer sshServer) { + this.command = command; + this.timeout = timeout; + this.sshServer = sshServer; + } +} diff --git a/src/main/java/ru/ldeloff/servermonitorbot/repository/CommandRepository.java b/src/main/java/ru/ldeloff/servermonitorbot/repository/CommandRepository.java new file mode 100644 index 0000000..f33822f --- /dev/null +++ b/src/main/java/ru/ldeloff/servermonitorbot/repository/CommandRepository.java @@ -0,0 +1,13 @@ +package ru.ldeloff.servermonitorbot.repository; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Repository; +import ru.ldeloff.servermonitorbot.model.Command; + +import java.util.Optional; + +@Repository +public interface CommandRepository extends JpaRepository { + Optional findCommandByName(String name); + Optional findCommandById(Long id); +} diff --git a/src/main/java/ru/ldeloff/servermonitorbot/service/command/CommandService.java b/src/main/java/ru/ldeloff/servermonitorbot/service/command/CommandService.java new file mode 100644 index 0000000..c61fa7f --- /dev/null +++ b/src/main/java/ru/ldeloff/servermonitorbot/service/command/CommandService.java @@ -0,0 +1,4 @@ +package ru.ldeloff.servermonitorbot.service.command; + +public interface CommandService { +} diff --git a/src/main/java/ru/ldeloff/servermonitorbot/service/command/CommandServiceImpl.java b/src/main/java/ru/ldeloff/servermonitorbot/service/command/CommandServiceImpl.java new file mode 100644 index 0000000..60c9799 --- /dev/null +++ b/src/main/java/ru/ldeloff/servermonitorbot/service/command/CommandServiceImpl.java @@ -0,0 +1,8 @@ +package ru.ldeloff.servermonitorbot.service.command; + +import org.jvnet.hk2.annotations.Service; + +@Service +public class CommandServiceImpl implements CommandService { + +} diff --git a/src/main/java/ru/ldeloff/servermonitorbot/service/command/cputemp/CpuTempAggregateCommand.java b/src/main/java/ru/ldeloff/servermonitorbot/service/command/cputemp/CpuTempAggregateCommand.java index 90d2eb2..68c3857 100644 --- a/src/main/java/ru/ldeloff/servermonitorbot/service/command/cputemp/CpuTempAggregateCommand.java +++ b/src/main/java/ru/ldeloff/servermonitorbot/service/command/cputemp/CpuTempAggregateCommand.java @@ -6,7 +6,7 @@ import ru.ldeloff.servermonitorbot.model.User; import ru.ldeloff.servermonitorbot.service.command.CommandTemplate; import ru.ldeloff.servermonitorbot.service.role.RoleService; import ru.ldeloff.servermonitorbot.service.user.UserService; -import ru.ldeloff.servermonitorbot.utils.ui.uname.ServerListButtons; +import ru.ldeloff.servermonitorbot.utils.ui.ServerListButtons; @Service public class CpuTempAggregateCommand extends CommandTemplate { diff --git a/src/main/java/ru/ldeloff/servermonitorbot/service/command/cputemp/CpuTempCommand.java b/src/main/java/ru/ldeloff/servermonitorbot/service/command/cputemp/CpuTempCommand.java index fb046c1..7d3047c 100644 --- a/src/main/java/ru/ldeloff/servermonitorbot/service/command/cputemp/CpuTempCommand.java +++ b/src/main/java/ru/ldeloff/servermonitorbot/service/command/cputemp/CpuTempCommand.java @@ -3,7 +3,7 @@ package ru.ldeloff.servermonitorbot.service.command.cputemp; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.telegram.telegrambots.meta.api.methods.send.SendMessage; -import ru.ldeloff.servermonitorbot.model.Command; +import ru.ldeloff.servermonitorbot.model.SshCommand; import ru.ldeloff.servermonitorbot.model.SshServer; import ru.ldeloff.servermonitorbot.model.User; import ru.ldeloff.servermonitorbot.service.command.CommandTemplate; @@ -53,7 +53,7 @@ public class CpuTempCommand extends CommandTemplate { .filter(x -> x.getName().equals(serverName)) .findFirst(); if (server.isPresent()) { - Command result = sshService.execute(new Command("cat /sys/class/thermal/thermal_zone0/temp", 100, server.get())); + 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", diff --git a/src/main/java/ru/ldeloff/servermonitorbot/service/command/hddtemp/HddTempAggregateCommand.java b/src/main/java/ru/ldeloff/servermonitorbot/service/command/hddtemp/HddTempAggregateCommand.java index 1f0ea18..3c9f7ed 100644 --- a/src/main/java/ru/ldeloff/servermonitorbot/service/command/hddtemp/HddTempAggregateCommand.java +++ b/src/main/java/ru/ldeloff/servermonitorbot/service/command/hddtemp/HddTempAggregateCommand.java @@ -6,7 +6,7 @@ import ru.ldeloff.servermonitorbot.model.User; import ru.ldeloff.servermonitorbot.service.command.CommandTemplate; import ru.ldeloff.servermonitorbot.service.role.RoleService; import ru.ldeloff.servermonitorbot.service.user.UserService; -import ru.ldeloff.servermonitorbot.utils.ui.uname.ServerListButtons; +import ru.ldeloff.servermonitorbot.utils.ui.ServerListButtons; @Service public class HddTempAggregateCommand extends CommandTemplate { diff --git a/src/main/java/ru/ldeloff/servermonitorbot/service/command/hddtemp/HddTempCommand.java b/src/main/java/ru/ldeloff/servermonitorbot/service/command/hddtemp/HddTempCommand.java index 48793cc..d42e1cd 100644 --- a/src/main/java/ru/ldeloff/servermonitorbot/service/command/hddtemp/HddTempCommand.java +++ b/src/main/java/ru/ldeloff/servermonitorbot/service/command/hddtemp/HddTempCommand.java @@ -3,7 +3,7 @@ package ru.ldeloff.servermonitorbot.service.command.hddtemp; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.telegram.telegrambots.meta.api.methods.send.SendMessage; -import ru.ldeloff.servermonitorbot.model.Command; +import ru.ldeloff.servermonitorbot.model.SshCommand; import ru.ldeloff.servermonitorbot.model.SshServer; import ru.ldeloff.servermonitorbot.model.User; import ru.ldeloff.servermonitorbot.service.command.CommandTemplate; @@ -53,7 +53,7 @@ public class HddTempCommand extends CommandTemplate { .filter(x -> x.getName().equals(serverName)) .findFirst(); if (server.isPresent()) { - Command result = sshService.execute(new Command("hddtemp /dev/sd*", 500, server.get())); + SshCommand result = sshService.execute(new SshCommand("hddtemp /dev/sd*", 500, server.get())); return server.get().getName() + ": \n" + (Objects.isNull(result.getResponse()) ? "ошибка при выполнении команды" : result.getResponse()); } else { diff --git a/src/main/java/ru/ldeloff/servermonitorbot/service/command/mdadm/MdadmStatusAggregateCommand.java b/src/main/java/ru/ldeloff/servermonitorbot/service/command/mdadm/MdadmStatusAggregateCommand.java index feb6c7a..d3abf52 100644 --- a/src/main/java/ru/ldeloff/servermonitorbot/service/command/mdadm/MdadmStatusAggregateCommand.java +++ b/src/main/java/ru/ldeloff/servermonitorbot/service/command/mdadm/MdadmStatusAggregateCommand.java @@ -6,7 +6,7 @@ import ru.ldeloff.servermonitorbot.model.User; import ru.ldeloff.servermonitorbot.service.command.CommandTemplate; import ru.ldeloff.servermonitorbot.service.role.RoleService; import ru.ldeloff.servermonitorbot.service.user.UserService; -import ru.ldeloff.servermonitorbot.utils.ui.uname.ServerListButtons; +import ru.ldeloff.servermonitorbot.utils.ui.ServerListButtons; @Service public class MdadmStatusAggregateCommand extends CommandTemplate { diff --git a/src/main/java/ru/ldeloff/servermonitorbot/service/command/mdadm/MdadmStatusCommand.java b/src/main/java/ru/ldeloff/servermonitorbot/service/command/mdadm/MdadmStatusCommand.java index 0aca9f9..7da3b7f 100644 --- a/src/main/java/ru/ldeloff/servermonitorbot/service/command/mdadm/MdadmStatusCommand.java +++ b/src/main/java/ru/ldeloff/servermonitorbot/service/command/mdadm/MdadmStatusCommand.java @@ -3,7 +3,7 @@ package ru.ldeloff.servermonitorbot.service.command.mdadm; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.telegram.telegrambots.meta.api.methods.send.SendMessage; -import ru.ldeloff.servermonitorbot.model.Command; +import ru.ldeloff.servermonitorbot.model.SshCommand; import ru.ldeloff.servermonitorbot.model.SshServer; import ru.ldeloff.servermonitorbot.model.User; import ru.ldeloff.servermonitorbot.service.command.CommandTemplate; @@ -13,9 +13,6 @@ import ru.ldeloff.servermonitorbot.service.user.UserService; import ru.ldeloff.servermonitorbot.utils.SshServerUtils; import java.util.*; -import java.util.regex.Matcher; -import java.util.regex.Pattern; -import java.util.stream.Collectors; @Service @Slf4j @@ -56,14 +53,14 @@ public class MdadmStatusCommand extends CommandTemplate { .findFirst(); if (server.isPresent()) { // узнаю скок рейдов - Command commandRaid = sshService.execute(new Command("mdadm --detail --scan", 500, server.get())); - List raidNames = parseRaidNames(commandRaid); + SshCommand sshCommandRaid = sshService.execute(new SshCommand("mdadm --detail --scan", 500, server.get())); + List raidNames = parseRaidNames(sshCommandRaid); // Для каждого рейда надо выяснить статус StringBuilder result = new StringBuilder(); raidNames.forEach(raid -> { result.append(raid).append(":\n"); - Command commandHdd = sshService.execute(new Command("mdadm --detail " + raid, 500, server.get())); - List hdds = parseHddState(commandHdd); + SshCommand sshCommandHdd = sshService.execute(new SshCommand("mdadm --detail " + raid, 500, server.get())); + List hdds = parseHddState(sshCommandHdd); hdds.forEach(hdd -> result.append(hdd).append("\n")); }); return server.get().getName() + ": \n" + result; @@ -72,7 +69,7 @@ public class MdadmStatusCommand extends CommandTemplate { return null; } } - private List parseRaidNames(Command result) { + private List parseRaidNames(SshCommand result) { List names = new ArrayList<>(); Arrays.stream(result.getResponse().split("\n")) .map(line -> line.split(" ")) @@ -82,7 +79,7 @@ public class MdadmStatusCommand extends CommandTemplate { return names; } - private List parseHddState(Command result) { + 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/uname/UnameAggregateCommand.java b/src/main/java/ru/ldeloff/servermonitorbot/service/command/uname/UnameAggregateCommand.java index 2ac594e..74bdbff 100644 --- a/src/main/java/ru/ldeloff/servermonitorbot/service/command/uname/UnameAggregateCommand.java +++ b/src/main/java/ru/ldeloff/servermonitorbot/service/command/uname/UnameAggregateCommand.java @@ -6,7 +6,7 @@ import ru.ldeloff.servermonitorbot.model.User; import ru.ldeloff.servermonitorbot.service.command.CommandTemplate; import ru.ldeloff.servermonitorbot.service.role.RoleService; import ru.ldeloff.servermonitorbot.service.user.UserService; -import ru.ldeloff.servermonitorbot.utils.ui.uname.ServerListButtons; +import ru.ldeloff.servermonitorbot.utils.ui.ServerListButtons; @Service public class UnameAggregateCommand extends CommandTemplate { diff --git a/src/main/java/ru/ldeloff/servermonitorbot/service/command/uname/UnameCommand.java b/src/main/java/ru/ldeloff/servermonitorbot/service/command/uname/UnameCommand.java index 94e3b73..a81f937 100644 --- a/src/main/java/ru/ldeloff/servermonitorbot/service/command/uname/UnameCommand.java +++ b/src/main/java/ru/ldeloff/servermonitorbot/service/command/uname/UnameCommand.java @@ -3,7 +3,7 @@ package ru.ldeloff.servermonitorbot.service.command.uname; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.telegram.telegrambots.meta.api.methods.send.SendMessage; -import ru.ldeloff.servermonitorbot.model.Command; +import ru.ldeloff.servermonitorbot.model.SshCommand; import ru.ldeloff.servermonitorbot.model.SshServer; import ru.ldeloff.servermonitorbot.model.User; import ru.ldeloff.servermonitorbot.service.command.CommandTemplate; @@ -52,7 +52,7 @@ public class UnameCommand extends CommandTemplate { .filter(x -> x.getName().equals(serverName)) .findFirst(); if (server.isPresent()) { - Command result = sshService.execute(new Command("uname -a", 100, server.get())); + SshCommand result = sshService.execute(new SshCommand("uname -a", 100, server.get())); return server.get().getName() + ": " + (Objects.isNull(result.getResponse()) ? "ошибка при выполнении команды" : result.getResponse()); } else { diff --git a/src/main/java/ru/ldeloff/servermonitorbot/service/ssh/SshService.java b/src/main/java/ru/ldeloff/servermonitorbot/service/ssh/SshService.java index 126e358..6af73f6 100644 --- a/src/main/java/ru/ldeloff/servermonitorbot/service/ssh/SshService.java +++ b/src/main/java/ru/ldeloff/servermonitorbot/service/ssh/SshService.java @@ -2,7 +2,7 @@ package ru.ldeloff.servermonitorbot.service.ssh; import org.telegram.telegrambots.meta.api.methods.send.SendMessage; -import ru.ldeloff.servermonitorbot.model.Command; +import ru.ldeloff.servermonitorbot.model.SshCommand; import ru.ldeloff.servermonitorbot.model.SshServer; import java.util.List; @@ -11,6 +11,6 @@ public interface SshService { SendMessage getStatusSessions(SendMessage update); List getSshServers(); - Command execute(Command command); - List execute(List commands); + SshCommand execute(SshCommand sshCommand); + List execute(List sshCommands); } diff --git a/src/main/java/ru/ldeloff/servermonitorbot/service/ssh/SshServiceImpl.java b/src/main/java/ru/ldeloff/servermonitorbot/service/ssh/SshServiceImpl.java index f5ebec4..04e4778 100644 --- a/src/main/java/ru/ldeloff/servermonitorbot/service/ssh/SshServiceImpl.java +++ b/src/main/java/ru/ldeloff/servermonitorbot/service/ssh/SshServiceImpl.java @@ -7,7 +7,7 @@ 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.Command; +import ru.ldeloff.servermonitorbot.model.SshCommand; import ru.ldeloff.servermonitorbot.model.SshServer; import ru.ldeloff.servermonitorbot.repository.SshRepository; @@ -31,21 +31,21 @@ public class SshServiceImpl implements SshService { } @Override - public Command execute(Command command) { - List commands = new ArrayList<>(); - commands.add(command); - return execute(commands).get(0); + public SshCommand execute(SshCommand sshCommand) { + List sshCommands = new ArrayList<>(); + sshCommands.add(sshCommand); + return execute(sshCommands).get(0); } @Override - public List execute(List commands) { - Session session = commands.get(0).getSshServer().getSession(); // подразумевается, что в листе с командами сервер один и тот же + public List execute(List sshCommands) { + Session session = sshCommands.get(0).getSshServer().getSession(); // подразумевается, что в листе с командами сервер один и тот же ChannelExec channel = null; try { channel = (ChannelExec) session.openChannel("exec"); ChannelExec finalChannel = channel; - commands.forEach(command -> { + sshCommands.forEach(command -> { try { finalChannel.setCommand(command.getCommand()); ByteArrayOutputStream responseStream = new ByteArrayOutputStream(); @@ -69,6 +69,6 @@ public class SshServiceImpl implements SshService { channel.disconnect(); } } - return commands; + return sshCommands; } } diff --git a/src/main/java/ru/ldeloff/servermonitorbot/utils/RoleChecker.java b/src/main/java/ru/ldeloff/servermonitorbot/utils/RoleChecker.java new file mode 100644 index 0000000..7b5a00a --- /dev/null +++ b/src/main/java/ru/ldeloff/servermonitorbot/utils/RoleChecker.java @@ -0,0 +1,19 @@ +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/ui/uname/ServerListButtons.java b/src/main/java/ru/ldeloff/servermonitorbot/utils/ui/ServerListButtons.java similarity index 93% rename from src/main/java/ru/ldeloff/servermonitorbot/utils/ui/uname/ServerListButtons.java rename to src/main/java/ru/ldeloff/servermonitorbot/utils/ui/ServerListButtons.java index c6d0b4e..3af0f41 100644 --- a/src/main/java/ru/ldeloff/servermonitorbot/utils/ui/uname/ServerListButtons.java +++ b/src/main/java/ru/ldeloff/servermonitorbot/utils/ui/ServerListButtons.java @@ -1,11 +1,13 @@ -package ru.ldeloff.servermonitorbot.utils.ui.uname; +package ru.ldeloff.servermonitorbot.utils.ui; 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 java.util.ArrayList; @@ -21,7 +23,6 @@ public class ServerListButtons implements UiFormer { @Override public SendMessage uiForm(SendMessage message) { List> keyboard = new ArrayList<>(); - InlineKeyboardMarkup inlineKeyboardMarkup = new InlineKeyboardMarkup(); sshService.getSshServers().forEach(sshServer -> { diff --git a/src/main/java/ru/ldeloff/servermonitorbot/utils/ui/TelegramBotKeyboard.java b/src/main/java/ru/ldeloff/servermonitorbot/utils/ui/TelegramBotKeyboard.java index 15004cb..d431d73 100644 --- a/src/main/java/ru/ldeloff/servermonitorbot/utils/ui/TelegramBotKeyboard.java +++ b/src/main/java/ru/ldeloff/servermonitorbot/utils/ui/TelegramBotKeyboard.java @@ -1,25 +1,33 @@ package ru.ldeloff.servermonitorbot.utils.ui; +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.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.Role; +import ru.ldeloff.servermonitorbot.utils.RoleChecker; import java.util.ArrayList; @Component +@RequiredArgsConstructor public class TelegramBotKeyboard implements UiFormer { private final String STATUS = "Статус"; private final String UNAME = "uname"; private final String CPU_TEMP = "CPU.temp"; private final String HDD_TEMP = "HDD.temp"; private final String MDADM = "MDADM"; + private final RoleChecker roleChecker; @Override public SendMessage uiForm(SendMessage message) { + + Role role = roleChecker.getRole(message); + ReplyKeyboardMarkup replyKeyboardMarkup = new ReplyKeyboardMarkup(); replyKeyboardMarkup.setResizeKeyboard(true); replyKeyboardMarkup.setOneTimeKeyboard(false); diff --git a/src/main/resources/db/migration/V009__create_table_commands.sql b/src/main/resources/db/migration/V009__create_table_commands.sql new file mode 100644 index 0000000..db5ec4a --- /dev/null +++ b/src/main/resources/db/migration/V009__create_table_commands.sql @@ -0,0 +1,11 @@ +CREATE TABLE commands +( + id SERIAL PRIMARY KEY, + name VARCHAR(128), + level integer +); + +COMMENT ON TABLE commands IS 'Команды'; +COMMENT ON COLUMN commands.id IS 'ID'; +COMMENT ON COLUMN commands.name IS 'Имя команды'; +COMMENT ON COLUMN commands.level IS 'Уровень доступа'; \ No newline at end of file