Рефактор
Hedgehog_server_CI/ServerMonitorBot/pipeline/head This commit looks good Details
Hedgehog_server_CI/ServerMonitorBot/pipeline/pr-master This commit looks good Details

pull/39/head
L_DelOff 2024-01-21 15:38:00 +03:00
parent 39c2d6e6fc
commit c3711bb571
22 changed files with 149 additions and 56 deletions

View File

@ -5,8 +5,10 @@ import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.telegram.telegrambots.bots.TelegramLongPollingBot; import org.telegram.telegrambots.bots.TelegramLongPollingBot;
import org.telegram.telegrambots.meta.api.objects.Update; import org.telegram.telegrambots.meta.api.objects.Update;
import ru.ldeloff.servermonitorbot.model.Command;
import ru.ldeloff.servermonitorbot.model.TelegramBot; import ru.ldeloff.servermonitorbot.model.TelegramBot;
import ru.ldeloff.servermonitorbot.repository.SshRepository; 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.FirstUseCommand;
import ru.ldeloff.servermonitorbot.service.command.GetStatusSessions; import ru.ldeloff.servermonitorbot.service.command.GetStatusSessions;
import ru.ldeloff.servermonitorbot.service.command.SwitchToMainMenu; 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.UnameAggregateCommand;
import ru.ldeloff.servermonitorbot.service.command.uname.UnameCommand; import ru.ldeloff.servermonitorbot.service.command.uname.UnameCommand;
import java.util.Map;
@Service @Service
@Slf4j @Slf4j
@RequiredArgsConstructor @RequiredArgsConstructor
public class TelegramBotController extends TelegramLongPollingBot { public class TelegramBotController extends TelegramLongPollingBot {
//private final Map<String, CommandTemplate> commands;
final TelegramBot telegramBot; final TelegramBot telegramBot;
final SshRepository sshRepository; final SshRepository sshRepository;
final FirstUseCommand firstUseCommand; final FirstUseCommand firstUseCommand;
final GetStatusSessions getStatusSessions; final GetStatusSessions getStatusSessions;
final UnameAggregateCommand unameAggregateCommand; final UnameAggregateCommand unameAggregateCommand;

View File

@ -0,0 +1,7 @@
package ru.ldeloff.servermonitorbot.init;
public class AddCommands {
public static void fillCommandTable() {
}
}

View File

@ -15,6 +15,8 @@ import ru.ldeloff.servermonitorbot.model.User;
import ru.ldeloff.servermonitorbot.service.command.CommandTemplate; import ru.ldeloff.servermonitorbot.service.command.CommandTemplate;
import ru.ldeloff.servermonitorbot.service.user.UserService; import ru.ldeloff.servermonitorbot.service.user.UserService;
import static ru.ldeloff.servermonitorbot.init.AddCommands.fillCommandTable;
@Slf4j @Slf4j
@Component @Component
@NoArgsConstructor @NoArgsConstructor
@ -31,12 +33,12 @@ public class StartBot implements ApplicationRunner {
@Override @Override
public void run(ApplicationArguments args) { public void run(ApplicationArguments args) {
try { try {
fillCommandTable();
TelegramBotsApi botsApi = new TelegramBotsApi(DefaultBotSession.class); TelegramBotsApi botsApi = new TelegramBotsApi(DefaultBotSession.class);
botsApi.registerBot(telegramBot); botsApi.registerBot(telegramBot);
userService.getAllUsers().forEach(this::SendInitMessage); userService.getAllUsers().forEach(this::SendInitMessage);
log.info("Бот запущен"); log.info("Бот запущен");
} catch (TelegramApiException e) { } catch (TelegramApiException e) {
//e.printStackTrace();
log.error(e.getMessage()); log.error(e.getMessage());
} }
} }

View File

@ -1,25 +1,19 @@
package ru.ldeloff.servermonitorbot.model; package ru.ldeloff.servermonitorbot.model;
import jakarta.validation.constraints.Min; import jakarta.persistence.*;
import jakarta.validation.constraints.NotNull; import lombok.Data;
import lombok.Getter; @Entity
import lombok.Setter; @Data
@Table(name = "commands")
@Getter
@Setter
public class Command { public class Command {
@NotNull @Id
private String command; @Column(name = "id")
@NotNull @GeneratedValue(strategy = GenerationType.IDENTITY)
@Min(100) private long id;
private int timeout;
@NotNull
private SshServer sshServer;
private String response;
public Command(String command, int timeout, SshServer sshServer) { @Column(name = "name")
this.command = command; private String name;
this.timeout = timeout;
this.sshServer = sshServer; @Column(name = "level")
} private int level;
} }

View File

@ -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;
}
}

View File

@ -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<Command, Long> {
Optional<Command> findCommandByName(String name);
Optional<Command> findCommandById(Long id);
}

View File

@ -0,0 +1,4 @@
package ru.ldeloff.servermonitorbot.service.command;
public interface CommandService {
}

View File

@ -0,0 +1,8 @@
package ru.ldeloff.servermonitorbot.service.command;
import org.jvnet.hk2.annotations.Service;
@Service
public class CommandServiceImpl implements CommandService {
}

View File

@ -6,7 +6,7 @@ import ru.ldeloff.servermonitorbot.model.User;
import ru.ldeloff.servermonitorbot.service.command.CommandTemplate; import ru.ldeloff.servermonitorbot.service.command.CommandTemplate;
import ru.ldeloff.servermonitorbot.service.role.RoleService; import ru.ldeloff.servermonitorbot.service.role.RoleService;
import ru.ldeloff.servermonitorbot.service.user.UserService; import ru.ldeloff.servermonitorbot.service.user.UserService;
import ru.ldeloff.servermonitorbot.utils.ui.uname.ServerListButtons; import ru.ldeloff.servermonitorbot.utils.ui.ServerListButtons;
@Service @Service
public class CpuTempAggregateCommand extends CommandTemplate { public class CpuTempAggregateCommand extends CommandTemplate {

View File

@ -3,7 +3,7 @@ package ru.ldeloff.servermonitorbot.service.command.cputemp;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.telegram.telegrambots.meta.api.methods.send.SendMessage; 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.SshServer;
import ru.ldeloff.servermonitorbot.model.User; import ru.ldeloff.servermonitorbot.model.User;
import ru.ldeloff.servermonitorbot.service.command.CommandTemplate; import ru.ldeloff.servermonitorbot.service.command.CommandTemplate;
@ -53,7 +53,7 @@ public class CpuTempCommand extends CommandTemplate {
.filter(x -> x.getName().equals(serverName)) .filter(x -> x.getName().equals(serverName))
.findFirst(); .findFirst();
if (server.isPresent()) { 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" + return server.get().getName() + ": \n" +
(Objects.isNull(result.getResponse()) ? "ошибка при выполнении команды" : (Objects.isNull(result.getResponse()) ? "ошибка при выполнении команды" :
String.format("%.1f", String.format("%.1f",

View File

@ -6,7 +6,7 @@ import ru.ldeloff.servermonitorbot.model.User;
import ru.ldeloff.servermonitorbot.service.command.CommandTemplate; import ru.ldeloff.servermonitorbot.service.command.CommandTemplate;
import ru.ldeloff.servermonitorbot.service.role.RoleService; import ru.ldeloff.servermonitorbot.service.role.RoleService;
import ru.ldeloff.servermonitorbot.service.user.UserService; import ru.ldeloff.servermonitorbot.service.user.UserService;
import ru.ldeloff.servermonitorbot.utils.ui.uname.ServerListButtons; import ru.ldeloff.servermonitorbot.utils.ui.ServerListButtons;
@Service @Service
public class HddTempAggregateCommand extends CommandTemplate { public class HddTempAggregateCommand extends CommandTemplate {

View File

@ -3,7 +3,7 @@ package ru.ldeloff.servermonitorbot.service.command.hddtemp;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.telegram.telegrambots.meta.api.methods.send.SendMessage; 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.SshServer;
import ru.ldeloff.servermonitorbot.model.User; import ru.ldeloff.servermonitorbot.model.User;
import ru.ldeloff.servermonitorbot.service.command.CommandTemplate; import ru.ldeloff.servermonitorbot.service.command.CommandTemplate;
@ -53,7 +53,7 @@ public class HddTempCommand extends CommandTemplate {
.filter(x -> x.getName().equals(serverName)) .filter(x -> x.getName().equals(serverName))
.findFirst(); .findFirst();
if (server.isPresent()) { 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" + return server.get().getName() + ": \n" +
(Objects.isNull(result.getResponse()) ? "ошибка при выполнении команды" : result.getResponse()); (Objects.isNull(result.getResponse()) ? "ошибка при выполнении команды" : result.getResponse());
} else { } else {

View File

@ -6,7 +6,7 @@ import ru.ldeloff.servermonitorbot.model.User;
import ru.ldeloff.servermonitorbot.service.command.CommandTemplate; import ru.ldeloff.servermonitorbot.service.command.CommandTemplate;
import ru.ldeloff.servermonitorbot.service.role.RoleService; import ru.ldeloff.servermonitorbot.service.role.RoleService;
import ru.ldeloff.servermonitorbot.service.user.UserService; import ru.ldeloff.servermonitorbot.service.user.UserService;
import ru.ldeloff.servermonitorbot.utils.ui.uname.ServerListButtons; import ru.ldeloff.servermonitorbot.utils.ui.ServerListButtons;
@Service @Service
public class MdadmStatusAggregateCommand extends CommandTemplate { public class MdadmStatusAggregateCommand extends CommandTemplate {

View File

@ -3,7 +3,7 @@ package ru.ldeloff.servermonitorbot.service.command.mdadm;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.telegram.telegrambots.meta.api.methods.send.SendMessage; 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.SshServer;
import ru.ldeloff.servermonitorbot.model.User; import ru.ldeloff.servermonitorbot.model.User;
import ru.ldeloff.servermonitorbot.service.command.CommandTemplate; 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 ru.ldeloff.servermonitorbot.utils.SshServerUtils;
import java.util.*; import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
@Service @Service
@Slf4j @Slf4j
@ -56,14 +53,14 @@ public class MdadmStatusCommand extends CommandTemplate {
.findFirst(); .findFirst();
if (server.isPresent()) { if (server.isPresent()) {
// узнаю скок рейдов // узнаю скок рейдов
Command commandRaid = sshService.execute(new Command("mdadm --detail --scan", 500, server.get())); SshCommand sshCommandRaid = sshService.execute(new SshCommand("mdadm --detail --scan", 500, server.get()));
List<String> raidNames = parseRaidNames(commandRaid); List<String> raidNames = parseRaidNames(sshCommandRaid);
// Для каждого рейда надо выяснить статус // Для каждого рейда надо выяснить статус
StringBuilder result = new StringBuilder(); StringBuilder result = new StringBuilder();
raidNames.forEach(raid -> { raidNames.forEach(raid -> {
result.append(raid).append(":\n"); result.append(raid).append(":\n");
Command commandHdd = sshService.execute(new Command("mdadm --detail " + raid, 500, server.get())); SshCommand sshCommandHdd = sshService.execute(new SshCommand("mdadm --detail " + raid, 500, server.get()));
List<String> hdds = parseHddState(commandHdd); List<String> hdds = parseHddState(sshCommandHdd);
hdds.forEach(hdd -> result.append(hdd).append("\n")); hdds.forEach(hdd -> result.append(hdd).append("\n"));
}); });
return server.get().getName() + ": \n" + result; return server.get().getName() + ": \n" + result;
@ -72,7 +69,7 @@ public class MdadmStatusCommand extends CommandTemplate {
return null; return null;
} }
} }
private List<String> parseRaidNames(Command result) { private List<String> parseRaidNames(SshCommand result) {
List<String> names = new ArrayList<>(); List<String> names = new ArrayList<>();
Arrays.stream(result.getResponse().split("\n")) Arrays.stream(result.getResponse().split("\n"))
.map(line -> line.split(" ")) .map(line -> line.split(" "))
@ -82,7 +79,7 @@ public class MdadmStatusCommand extends CommandTemplate {
return names; return names;
} }
private List<String> parseHddState(Command result) { private List<String> parseHddState(SshCommand result) {
List<String> names = new ArrayList<>(); List<String> names = new ArrayList<>();
names.add("Number Name State"); names.add("Number Name State");

View File

@ -6,7 +6,7 @@ import ru.ldeloff.servermonitorbot.model.User;
import ru.ldeloff.servermonitorbot.service.command.CommandTemplate; import ru.ldeloff.servermonitorbot.service.command.CommandTemplate;
import ru.ldeloff.servermonitorbot.service.role.RoleService; import ru.ldeloff.servermonitorbot.service.role.RoleService;
import ru.ldeloff.servermonitorbot.service.user.UserService; import ru.ldeloff.servermonitorbot.service.user.UserService;
import ru.ldeloff.servermonitorbot.utils.ui.uname.ServerListButtons; import ru.ldeloff.servermonitorbot.utils.ui.ServerListButtons;
@Service @Service
public class UnameAggregateCommand extends CommandTemplate { public class UnameAggregateCommand extends CommandTemplate {

View File

@ -3,7 +3,7 @@ package ru.ldeloff.servermonitorbot.service.command.uname;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.telegram.telegrambots.meta.api.methods.send.SendMessage; 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.SshServer;
import ru.ldeloff.servermonitorbot.model.User; import ru.ldeloff.servermonitorbot.model.User;
import ru.ldeloff.servermonitorbot.service.command.CommandTemplate; import ru.ldeloff.servermonitorbot.service.command.CommandTemplate;
@ -52,7 +52,7 @@ public class UnameCommand extends CommandTemplate {
.filter(x -> x.getName().equals(serverName)) .filter(x -> x.getName().equals(serverName))
.findFirst(); .findFirst();
if (server.isPresent()) { 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() + ": " + return server.get().getName() + ": " +
(Objects.isNull(result.getResponse()) ? "ошибка при выполнении команды" : result.getResponse()); (Objects.isNull(result.getResponse()) ? "ошибка при выполнении команды" : result.getResponse());
} else { } else {

View File

@ -2,7 +2,7 @@ package ru.ldeloff.servermonitorbot.service.ssh;
import org.telegram.telegrambots.meta.api.methods.send.SendMessage; 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.SshServer;
import java.util.List; import java.util.List;
@ -11,6 +11,6 @@ public interface SshService {
SendMessage getStatusSessions(SendMessage update); SendMessage getStatusSessions(SendMessage update);
List<SshServer> getSshServers(); List<SshServer> getSshServers();
Command execute(Command command); SshCommand execute(SshCommand sshCommand);
List<Command> execute(List<Command> commands); List<SshCommand> execute(List<SshCommand> sshCommands);
} }

View File

@ -7,7 +7,7 @@ import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.telegram.telegrambots.meta.api.methods.send.SendMessage; 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.SshServer;
import ru.ldeloff.servermonitorbot.repository.SshRepository; import ru.ldeloff.servermonitorbot.repository.SshRepository;
@ -31,21 +31,21 @@ public class SshServiceImpl implements SshService {
} }
@Override @Override
public Command execute(Command command) { public SshCommand execute(SshCommand sshCommand) {
List<Command> commands = new ArrayList<>(); List<SshCommand> sshCommands = new ArrayList<>();
commands.add(command); sshCommands.add(sshCommand);
return execute(commands).get(0); return execute(sshCommands).get(0);
} }
@Override @Override
public List<Command> execute(List<Command> commands) { public List<SshCommand> execute(List<SshCommand> sshCommands) {
Session session = commands.get(0).getSshServer().getSession(); // подразумевается, что в листе с командами сервер один и тот же Session session = sshCommands.get(0).getSshServer().getSession(); // подразумевается, что в листе с командами сервер один и тот же
ChannelExec channel = null; ChannelExec channel = null;
try { try {
channel = (ChannelExec) session.openChannel("exec"); channel = (ChannelExec) session.openChannel("exec");
ChannelExec finalChannel = channel; ChannelExec finalChannel = channel;
commands.forEach(command -> { sshCommands.forEach(command -> {
try { try {
finalChannel.setCommand(command.getCommand()); finalChannel.setCommand(command.getCommand());
ByteArrayOutputStream responseStream = new ByteArrayOutputStream(); ByteArrayOutputStream responseStream = new ByteArrayOutputStream();
@ -69,6 +69,6 @@ public class SshServiceImpl implements SshService {
channel.disconnect(); channel.disconnect();
} }
} }
return commands; return sshCommands;
} }
} }

View File

@ -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();
}
}

View File

@ -1,11 +1,13 @@
package ru.ldeloff.servermonitorbot.utils.ui.uname; package ru.ldeloff.servermonitorbot.utils.ui;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.telegram.telegrambots.meta.api.methods.send.SendMessage; 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.InlineKeyboardMarkup;
import org.telegram.telegrambots.meta.api.objects.replykeyboard.buttons.InlineKeyboardButton; 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.service.ssh.SshService;
import ru.ldeloff.servermonitorbot.utils.RoleChecker;
import ru.ldeloff.servermonitorbot.utils.ui.UiFormer; import ru.ldeloff.servermonitorbot.utils.ui.UiFormer;
import java.util.ArrayList; import java.util.ArrayList;
@ -21,7 +23,6 @@ public class ServerListButtons implements UiFormer {
@Override @Override
public SendMessage uiForm(SendMessage message) { public SendMessage uiForm(SendMessage message) {
List<List<InlineKeyboardButton>> keyboard = new ArrayList<>(); List<List<InlineKeyboardButton>> keyboard = new ArrayList<>();
InlineKeyboardMarkup inlineKeyboardMarkup = new InlineKeyboardMarkup(); InlineKeyboardMarkup inlineKeyboardMarkup = new InlineKeyboardMarkup();
sshService.getSshServers().forEach(sshServer -> { sshService.getSshServers().forEach(sshServer -> {

View File

@ -1,25 +1,33 @@
package ru.ldeloff.servermonitorbot.utils.ui; package ru.ldeloff.servermonitorbot.utils.ui;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.telegram.telegrambots.meta.api.methods.send.SendMessage; 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.ReplyKeyboardMarkup;
import org.telegram.telegrambots.meta.api.objects.replykeyboard.buttons.KeyboardButton; import org.telegram.telegrambots.meta.api.objects.replykeyboard.buttons.KeyboardButton;
import org.telegram.telegrambots.meta.api.objects.replykeyboard.buttons.KeyboardRow; 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; import java.util.ArrayList;
@Component @Component
@RequiredArgsConstructor
public class TelegramBotKeyboard implements UiFormer { public class TelegramBotKeyboard implements UiFormer {
private final String STATUS = "Статус"; private final String STATUS = "Статус";
private final String UNAME = "uname"; private final String UNAME = "uname";
private final String CPU_TEMP = "CPU.temp"; private final String CPU_TEMP = "CPU.temp";
private final String HDD_TEMP = "HDD.temp"; private final String HDD_TEMP = "HDD.temp";
private final String MDADM = "MDADM"; private final String MDADM = "MDADM";
private final RoleChecker roleChecker;
@Override @Override
public SendMessage uiForm(SendMessage message) { public SendMessage uiForm(SendMessage message) {
Role role = roleChecker.getRole(message);
ReplyKeyboardMarkup replyKeyboardMarkup = new ReplyKeyboardMarkup(); ReplyKeyboardMarkup replyKeyboardMarkup = new ReplyKeyboardMarkup();
replyKeyboardMarkup.setResizeKeyboard(true); replyKeyboardMarkup.setResizeKeyboard(true);
replyKeyboardMarkup.setOneTimeKeyboard(false); replyKeyboardMarkup.setOneTimeKeyboard(false);

View File

@ -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 'Уровень доступа';