fhq-server  v0.2.33
Documentation for fhq-server. FreeHackQuest is an open source platform for competitions of computer security.
model_lxd_orchestra.h
Go to the documentation of this file.
1 #ifndef MODEL_LXD_CONTAINER
2 #define MODEL_LXD_CONTAINER
3 
4 #include <string>
5 #include <curl/curl.h>
6 #include <QFile>
7 #include <json.hpp>
8 
9 
10 struct ServiceConfig {
11  std::string name;
12  std::string type;
13  std::string game;
14  std::string author;
15  std::string version;
16  std::string port_proto;
17 
19  bool start;
20  bool build;
21 
22  explicit ServiceConfig(nlohmann::json jsonConfig);
23 };
24 
25 
26 class LXDContainer {
27 public:
28  explicit LXDContainer(const std::string &name_of_container);
29  std::string get_name() const;
30  std::string get_IPv4() const;
31  std::string get_port();
32  std::string get_error() const;
33  std::string get_result() const;
34  std::string full_name() const;
35 
36  bool get_state(nlohmann::json &jsonState);
37  std::string get_status();
38  bool create();
39  bool start();
40  bool stop();
41  bool remove();
42  bool read_file(const std::string &sPath, std::string &sRawData);
43  bool push_file(const std::string &sPath, const std::string &sRawData);
44  bool open_port(const std::string &sPort, const std::string &sProto);
45  bool open_port(const int &nPort, const std::string &sProto);
46  bool exec(const std::string &sCommand);
47 
48  static std::vector<std::string> split(const std::string &str);
49 
50 
51 private:
52  std::string name;
53  std::string status;
54  std::string IPv4;
55  const std::string prefix = "fhq-";
56  // TODO ADD nErrorCode
57  std::string m_sError;
58  int m_nError;
59  std::string m_sResult;
60  std::string m_sPort;
61  std::string m_sProtoPort;
62  const std::string TAG = "EmployOrchestraContainer";
63 };
64 
65 
66 class ServiceLXD {
67 public:
68  explicit ServiceLXD(const ServiceConfig &reqService);
69 
70  bool create_container();
71  bool build();
72  bool start();
73  bool stop();
74 
75  std::string get_error();
76  LXDContainer *get_container();
77 
78 private:
81 
82  std::string m_sName;
83  std::string m_sError;
84  int m_nError = 500;
85  std::string m_sResult;
86  const std::string TAG = "EmployOrchestraService";
87 };
88 
89 #endif // MODEL_LXD_CONTAINER
90 
bool build
Definition: model_lxd_orchestra.h:20
LXDContainer * m_Container
Definition: model_lxd_orchestra.h:80
std::string author
Definition: model_lxd_orchestra.h:14
std::string m_sProtoPort
Definition: model_lxd_orchestra.h:61
ServiceConfig m_configService
Definition: model_lxd_orchestra.h:79
std::string port_proto
Definition: model_lxd_orchestra.h:16
std::string name
Definition: model_lxd_orchestra.h:11
std::string m_sName
Definition: model_lxd_orchestra.h:82
std::string name
Definition: model_lxd_orchestra.h:52
Definition: model_lxd_orchestra.h:10
std::string IPv4
Definition: model_lxd_orchestra.h:54
int port_number
Definition: model_lxd_orchestra.h:18
std::string m_sPort
Definition: model_lxd_orchestra.h:60
bool start
Definition: model_lxd_orchestra.h:19
std::string version
Definition: model_lxd_orchestra.h:15
std::string m_sError
Definition: model_lxd_orchestra.h:83
std::string m_sError
Definition: model_lxd_orchestra.h:57
std::string type
Definition: model_lxd_orchestra.h:12
Definition: model_lxd_orchestra.h:26
ServiceConfig(nlohmann::json jsonConfig)
Definition: model_lxd_orchestra.cpp:13
std::string game
Definition: model_lxd_orchestra.h:13
Definition: model_lxd_orchestra.h:66
std::string status
Definition: model_lxd_orchestra.h:53
int m_nError
Definition: model_lxd_orchestra.h:58
std::string m_sResult
Definition: model_lxd_orchestra.h:59
std::string m_sResult
Definition: model_lxd_orchestra.h:85