| 1 | // SPDX-License-Identifier: GPL-3.0-or-later |
| 2 | // |
| 3 | // Storage and netdata.conf loaders for the netdata_configured_* |
| 4 | // globals. Compile-time defaults come from build/config.h via the |
| 5 | // libnetdata.h chain. |
| 6 | |
| 7 | #include "../libnetdata.h" |
| 8 | |
| 9 | const char *netdata_configured_hostname = NULL; |
| 10 | const char *netdata_configured_user_config_dir = CONFIG_DIR; |
| 11 | const char *netdata_configured_stock_config_dir = LIBCONFIG_DIR; |
| 12 | const char *netdata_configured_stock_data_dir = STOCK_DATA_DIR; |
| 13 | const char *netdata_configured_log_dir = LOG_DIR; |
| 14 | const char *netdata_configured_primary_plugins_dir = PLUGINS_DIR; |
| 15 | const char *netdata_configured_web_dir = WEB_DIR; |
| 16 | const char *netdata_configured_cache_dir = CACHE_DIR; |
| 17 | const char *netdata_configured_varlib_dir = VARLIB_DIR; |
| 18 | const char *netdata_configured_cloud_dir = VARLIB_DIR "/cloud.d"; |
| 19 | const char *netdata_configured_home_dir = VARLIB_DIR; |
| 20 | const char *netdata_configured_host_prefix = NULL; |
| 21 | |
| 22 | // ---------------------------------------------------------------------------- |
| 23 | // netdata.conf loaders |
| 24 | |
| 25 | static const char *get_varlib_subdir_from_config(const char *prefix, const char *dir) { |
| 26 | char filename[FILENAME_MAX + 1]; |
| 27 | snprintfz(filename, FILENAME_MAX, "%s/%s", prefix, dir); |
| 28 | return inicfg_get_path(&netdata_config, CONFIG_SECTION_DIRECTORIES, dir, filename); |
| 29 | } |
| 30 | |
| 31 | void nd_runtime_paths_load_directories_from_inicfg(void) { |
| 32 | FUNCTION_RUN_ONCE(); |
| 33 | |
| 34 | netdata_configured_user_config_dir = inicfg_get_path(&netdata_config, CONFIG_SECTION_DIRECTORIES, "config", netdata_configured_user_config_dir); |
| 35 | netdata_configured_stock_config_dir = inicfg_get_path(&netdata_config, CONFIG_SECTION_DIRECTORIES, "stock config", netdata_configured_stock_config_dir); |
| 36 | netdata_configured_stock_data_dir = inicfg_get_path(&netdata_config, CONFIG_SECTION_DIRECTORIES, "stock data", netdata_configured_stock_data_dir); |
| 37 | netdata_configured_log_dir = inicfg_get_path(&netdata_config, CONFIG_SECTION_DIRECTORIES, "log", netdata_configured_log_dir); |
| 38 | netdata_configured_web_dir = inicfg_get_path(&netdata_config, CONFIG_SECTION_DIRECTORIES, "web", netdata_configured_web_dir); |
| 39 | netdata_configured_cache_dir = inicfg_get_path(&netdata_config, CONFIG_SECTION_DIRECTORIES, "cache", netdata_configured_cache_dir); |
| 40 | netdata_configured_varlib_dir = inicfg_get_path(&netdata_config, CONFIG_SECTION_DIRECTORIES, "lib", netdata_configured_varlib_dir); |
| 41 | netdata_configured_cloud_dir = get_varlib_subdir_from_config(netdata_configured_varlib_dir, "cloud.d"); |
| 42 | } |
| 43 | |
| 44 | void nd_runtime_paths_load_hostname_from_inicfg(void) { |
| 45 | FUNCTION_RUN_ONCE(); |
| 46 | |
| 47 | netdata_configured_host_prefix = inicfg_get(&netdata_config, CONFIG_SECTION_GLOBAL, "host access prefix", ""); |
| 48 | (void) verify_netdata_host_prefix(true); |
| 49 | |
| 50 | char buf[HOST_NAME_MAX * 4 + 1] = ""; |
| 51 | if (!os_hostname(buf, sizeof(buf), netdata_configured_host_prefix)) |
| 52 | netdata_log_error("Cannot get machine hostname."); |
| 53 | |
| 54 | netdata_configured_hostname = inicfg_get(&netdata_config, CONFIG_SECTION_GLOBAL, "hostname", buf); |
| 55 | netdata_log_debug(D_OPTIONS, "hostname set to '%s'", netdata_configured_hostname); |
| 56 | } |