source: nscp/service/settings_client.hpp @ 497b779

0.4.00.4.10.4.2
Last change on this file since 497b779 was 497b779, checked in by Michael Medin <michael@…>, 3 years ago

New settings client (c++ instead of c) which looks pretty sweet :P
Only NRPEServer and CHeckExternalScripts implements it as of yet...

  • Property mode set to 100644
File size: 4.0 KB
Line 
1#pragma once
2
3
4class NSClientT;
5namespace nsclient {
6        class settings_client {
7                NSClient* core_;
8        public:
9                settings_client(NSClient* core) : core_(core) {}
10
11                std::wstring get_source() {
12                        settings_manager::get_core()->get()->get_context();
13                }
14
15                void boot() {
16                        if (!core_->initCore(true)) {
17                                std::wcout << _T("Service *NOT* started!") << std::endl;
18                                return;
19                        }
20                }
21
22                void migrate_from(std::wstring src, std::wstring target, bool def) {
23                        try {
24                                if (def)
25                                        settings_manager::get_core()->update_defaults();
26                                if (!src.empty() && !target.empty()) {
27                                        debug_msg(_T("Migrating ") + src + _T(" to ") + target);
28                                        settings_manager::get_core()->migrate(src, target);
29                                } else {
30                                        debug_msg(_T("Migrating ") + src + _T(" to ") + target);
31                                        settings_manager::get_core()->migrate_from(src);
32                                }
33                                core_->exitCore(true);
34                        } catch (settings_exception e) {
35                                error_msg(_T("Failed to initialize settings: ") + e.getError());
36                        } catch (...) {
37                                error_msg(_T("FATAL ERROR IN SETTINGS SUBSYTEM"));
38                        }
39                }
40                void migrate_to(std::wstring src, std::wstring target, bool def) {
41                        try {
42                                if (def)
43                                        settings_manager::get_core()->update_defaults();
44                                if (!src.empty() && !target.empty()) {
45                                        debug_msg(_T("Migrating ") + src + _T(" to ") + target);
46                                        settings_manager::get_core()->migrate(src, target);
47                                } else {
48                                        debug_msg(_T("Migrating ") + src + _T(" to ") + target);
49                                        settings_manager::get_core()->migrate_to(target);
50                                }
51                                core_->exitCore(true);
52                        } catch (settings_exception e) {
53                                error_msg(_T("Failed to initialize settings: ") + e.getError());
54                        } catch (...) {
55                                error_msg(_T("FATAL ERROR IN SETTINGS SUBSYTEM"));
56                        }
57                }
58
59                void generate(std::wstring target) {
60                        try {
61                                core_->load_all_plugins(NSCAPI::dontStart);
62                                if (target == _T("default") || target.empty()) {
63                                        settings_manager::get_core()->update_defaults();
64                                        settings_manager::get_core()->get()->save();
65                                } else if (target == _T("trac")) {
66                                        settings::string_list s = settings_manager::get_core()->get_reg_sections();
67                                        for (settings::string_list::const_iterator cit = s.begin(); cit != s.end(); ++cit) {
68                                                std::wcout << _T("== ") << (*cit) << _T(" ==") << std::endl;
69                                                settings::string_list k = settings_manager::get_core()->get_reg_keys(*cit);
70                                                bool first = true;
71                                                for (settings::string_list::const_iterator citk = k.begin(); citk != k.end(); ++citk) {
72                                                        settings::settings_core::key_description desc = settings_manager::get_core()->get_registred_key(*cit, *citk);
73                                                        if (!desc.advanced) {
74                                                                if (first)
75                                                                        std::wcout << _T("'''Normal settings'''") << std::endl;
76                                                                first = false;
77                                                                std::wcout << _T("||") << (*citk) << _T("||") << desc.defValue << _T("||") << desc.title << _T(": ") << desc.description << std::endl;
78                                                        }
79                                                }
80                                                first = true;
81                                                for (settings::string_list::const_iterator citk = k.begin(); citk != k.end(); ++citk) {
82                                                        settings::settings_core::key_description desc = settings_manager::get_core()->get_registred_key(*cit, *citk);
83                                                        if (desc.advanced) {
84                                                                if (first)
85                                                                        std::wcout << _T("'''Advanced settings'''") << std::endl;
86                                                                first = false;
87                                                                std::wcout << _T("||") << (*citk) << _T("||") << desc.defValue << _T("||") << desc.title << _T(": ") << desc.description << std::endl;
88                                                        }
89                                                }
90                                        }
91                                } else {
92                                        settings_manager::get_core()->update_defaults();
93                                        settings_manager::get_core()->get()->save_to(target);
94                                }
95                        } catch (settings_exception e) {
96                                error_msg(_T("Failed to initialize settings: ") + e.getError());
97                        } catch (...) {
98                                error_msg(_T("FATAL ERROR IN SETTINGS SUBSYTEM"));
99                        }
100                        core_->exitCore(true);
101                }
102                void error_msg(std::wstring msg) {
103                        core_->reportMessage(NSCAPI::error, __FILEW__, __LINE__, msg.c_str());
104                }
105                void debug_msg(std::wstring msg) {
106                        core_->reportMessage(NSCAPI::debug, __FILEW__, __LINE__, msg.c_str());
107                }
108        };
109}
Note: See TracBrowser for help on using the repository browser.