From a705051cfcb9e8b2bb28ee0e4122f486ef4a5edd Mon Sep 17 00:00:00 2001 From: Maxim Mamontov Date: Sun, 23 Nov 2014 11:47:03 +0200 Subject: [PATCH] Added --server-info parameter for sgconf. --- projects/sgconf/Makefile | 1 + projects/sgconf/info.cpp | 60 ++++++++++++++++++++++++++++++++++++++++ projects/sgconf/info.h | 34 +++++++++++++++++++++++ projects/sgconf/main.cpp | 2 ++ 4 files changed, 97 insertions(+) create mode 100644 projects/sgconf/info.cpp create mode 100644 projects/sgconf/info.h diff --git a/projects/sgconf/Makefile b/projects/sgconf/Makefile index 52a70ae8..803035df 100644 --- a/projects/sgconf/Makefile +++ b/projects/sgconf/Makefile @@ -15,6 +15,7 @@ SRCS = ./main.cpp \ ./users.cpp \ ./services.cpp \ ./corps.cpp \ + ./info.cpp \ ./xml.cpp STGLIBS = srvconf \ diff --git a/projects/sgconf/info.cpp b/projects/sgconf/info.cpp new file mode 100644 index 00000000..0e98d3dc --- /dev/null +++ b/projects/sgconf/info.cpp @@ -0,0 +1,60 @@ +#include "info.h" + +#include "api_action.h" +#include "options.h" +#include "config.h" + +#include "stg/servconf.h" + +#include +#include +#include + +#include + +namespace +{ + +void PrintInfo(const STG::SERVER_INFO::INFO& info) +{ + std::cout << "Server version: '" << info.version << "'\n" + << "Number of tariffs: " << info.tariffNum << "\n" + << "Tariff subsystem version: " << info.tariffType << "\n" + << "Number of users: " << info.usersNum << "\n" + << "UName: '" << info.uname << "\n" + << "Number of directions: " << info.dirNum << "\n" + << "Dirs:\n"; + for (size_t i = 0; i < info.dirName.size(); ++i) + std::cout << "\t - '" << info.dirName[i] << "'\n"; +} + +void InfoCallback(bool result, const std::string & reason, const STG::SERVER_INFO::INFO & info, void * /*data*/) +{ +if (!result) + { + std::cerr << "Failed to get server info. Reason: '" << reason << "'." << std::endl; + return; + } +PrintInfo(info); +} + +bool InfoFunction(const SGCONF::CONFIG & config, + const std::string& /*arg*/, + const std::map & /*options*/) +{ +STG::SERVCONF proto(config.server.data(), + config.port.data(), + config.localAddress.data(), + config.localPort.data(), + config.userName.data(), + config.userPass.data()); +return proto.ServerInfo(InfoCallback, NULL) == STG::st_ok; +} + +} + +void SGCONF::AppendServerInfoBlock(COMMANDS & commands, OPTION_BLOCKS & blocks) +{ +blocks.Add("Server info") + .Add("server-info", SGCONF::MakeAPIAction(commands, InfoFunction), "\tget server info"); +} diff --git a/projects/sgconf/info.h b/projects/sgconf/info.h new file mode 100644 index 00000000..86e4a9ec --- /dev/null +++ b/projects/sgconf/info.h @@ -0,0 +1,34 @@ +/* + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/* + * Author : Maxim Mamontov + */ + +#ifndef __STG_SGCONF_SERVER_INFO_H__ +#define __STG_SGCONF_SERVER_INFO_H__ + +namespace SGCONF +{ + +class OPTION_BLOCKS; +class COMMANDS; + +void AppendServerInfoBlock(COMMANDS & commands, OPTION_BLOCKS & blocks); + +} + +#endif diff --git a/projects/sgconf/main.cpp b/projects/sgconf/main.cpp index 97e46d1b..97908195 100644 --- a/projects/sgconf/main.cpp +++ b/projects/sgconf/main.cpp @@ -25,6 +25,7 @@ #include "users.h" #include "services.h" #include "corps.h" +#include "info.h" #include "api_action.h" #include "options.h" @@ -259,6 +260,7 @@ SGCONF::OPTION_BLOCK & block = blocks.Add("Connection options") blocks.Add("Debug options") .Add("show-config", SGCONF::MakeParamAction(config.showConfig), "\tshow config and exit"); SGCONF::AppendXMLOptionBlock(commands, blocks); +SGCONF::AppendServerInfoBlock(commands, blocks); SGCONF::AppendAdminsOptionBlock(commands, blocks); SGCONF::AppendTariffsOptionBlock(commands, blocks); SGCONF::AppendUsersOptionBlock(commands, blocks); -- 2.44.2