+ Реализовано: просмотр параметров сервера и возможность редактирования
This commit is contained in:
Alexander Zhirov 2023-06-04 21:50:36 +03:00
parent 69ab43a4ec
commit 7a71bb7e01
13 changed files with 247 additions and 63 deletions

View file

@ -19,6 +19,7 @@ import structures;
import requests.numbers;
import requests.sms;
import requests.ussd;
import requests.server;
static ServerInfo serverInfo;
@ -223,6 +224,12 @@ void postReq(HTTPServerRequest req, HTTPServerResponse res) {
case "delussd":
sendDelUSSD(req, res);
break;
case "serverinfo":
getServerInfo(req, res);
break;
case "writeserverinfo":
sendWriteServerInfo(req, res);
break;
default:
res.redirect("/");
}

30
source/requests/server.d Normal file
View file

@ -0,0 +1,30 @@
module requests.server;
import vibe.vibe;
import response;
import structures;
import sql;
import singlog;
import std.regex;
// Получить информацию о сервере
void getServerInfo(HTTPServerRequest req, HTTPServerResponse res) {
auto dataServer = sqlGetServerInfo();
render!("server.dt", dataServer)(res);
}
void sendWriteServerInfo(HTTPServerRequest req, HTTPServerResponse res) {
ServerDB server = deserializeJson!ServerDB(req.json);
if (!server.external_number.matchFirst(regex(r"^\+7\d{10}$", "g"))) {
res.send(true, "Внешний номер не соответствует формату +7XXXXXXXXXX");
return;
}
if (!sqlUpdateServerInfo(server)) {
res.send(true, "Не удалось записать параметры сервера");
return;
}
res.send();
}

View file

@ -6,11 +6,9 @@ import structures;
import std.conv;
/*
Запросы для таблицы номеров телефонов
*/
/***********************************************************
Запросы для таблицы номеров телефонов
***********************************************************/
GroupDB[] sqlGetListGroups() {
GroupDB[] groups;
@ -207,11 +205,9 @@ bool sqlInsertNumber(NumberDB number) {
return true;
}
/*
Запросы для таблицы SMS
*/
/***********************************************************
Запросы для таблицы SMS
***********************************************************/
SMSDB[] sqlGetSMSNumbers() {
SMSDB[] numbers;
@ -306,11 +302,9 @@ bool sqlDeleteSMS(int idsms) {
return true;
}
/*
Запросы для таблицы USSD
*/
/***********************************************************
Запросы для таблицы USSD
***********************************************************/
USSDDB[] sqlGetUSSDNumbers() {
USSDDB[] numbers;
@ -408,3 +402,53 @@ bool sqlDeleteUSSD(int idussd) {
}
return true;
}
/***********************************************************
Запросы для таблицы информации о сервере
***********************************************************/
ServerDB sqlGetServerInfo() {
ServerDB server;
try {
auto queryResult = pgsql.sql(
"select
case when da_transparent_mode then 1 else 0 end da_transparent_mode,
da_internal_number,
da_external_number,
case when da_external_number_on then 1 else 0 end da_external_number_on
from da_server
where da_id = 1"
);
foreach (row; queryResult) {
server.transparent_mode = row["da_transparent_mode"].to!int.to!bool;
server.internal_number = row["da_internal_number"];
server.external_number = row["da_external_number"];
server.external_number_on = row["da_external_number_on"].to!int.to!bool;
}
} catch (Exception e) {
log.e("Не удалось выполнить запрос к БД. " ~ e.msg);
}
return server;
}
bool sqlUpdateServerInfo(ServerDB server) {
try {
pgsql.sql(
"update da_server set
da_transparent_mode = ?,
da_internal_number = ?,
da_external_number = ?,
da_external_number_on = ?
where da_id = 1",
server.transparent_mode,
server.internal_number,
server.external_number,
server.external_number_on
);
} catch (Exception e) {
log.e("Ошибка обновления параметров сервера в БД. " ~ e.msg);
return false;
}
return true;
}

View file

@ -53,3 +53,10 @@ struct USSDDB {
string type_comment;
string text;
}
struct ServerDB {
bool transparent_mode;
string internal_number;
string external_number;
bool external_number_on;
}

View file

@ -1,3 +1,3 @@
module version_;
enum dasterVersion = "v0.0.6";
enum dasterVersion = "v0.0.8";