/* * This file is a part of CMSLU -- Content Management System like Unix * and is not publicly distributed * * Copyright (c) 2008-2009, Tomasz Sowa * All rights reserved. * */ #ifndef headerfilecmslucoredata #define headerfilecmslucoredata #include #include #include #include #include "dirs.h" #include "users.h" #include "groups.h" #include "functions.h" #include "lastcontainer.h" #include "mounts.h" #include "rebus.h" #include "loadavg.h" class Data { public: // ----------------------------------------------------------------- // members read from a config file // name of the config file (full path can be) std::string config_file; // log file name, log file name for notifications (sending emails, etc) std::string log_file, log_notify_file; // 1 - minimum // 2 - (default) // 3 - maximum - all logs int log_level; // logging to stdout too bool log_stdout; // how many requests should be logged in the same time // default: 1 int log_request; // fast cgi: socket (unix domain) std::string fcgi_socket; // fast cgi: socket permissions int fcgi_socket_chmod; // fast cgi: owner of the socket std::string fcgi_socket_user; // fast cgi: group of the socket std::string fcgi_socket_group; std::string templates_dir; std::string templates_dir_default; // templates from winix std::string db_database; std::string db_user; std::string db_pass; std::string base_server; std::string base_url_prefix; std::string base_url_static_prefix; std::string base_url_static_ext_prefix; std::string base_url_static_auth_prefix; std::string http_session_id_name; // when the HOST_HTTP environment variable doesn't point into 'base_url' (the part 'http://' and the last slash is removed) // the server will redirect into 'base_url' + 'REQUEST_URI' // it's useful when you want to redirect from 'mydomain.tld' into 'www.mydomain.tld' etc. bool base_url_redirect; // string used in a place where is a user (or group) selected std::string priv_no_user; std::string priv_no_group; // time in seconds when the user will be automatically logged out (iddle time) int session_max_idle; // time in seconds when the user will be automatically logged out (when he selected 'remember me' option) // this time is usually greater than session_max_idle int session_remember_max_idle; // this file is used when the program is starting and ending std::string session_file; // allow the html ouput to be compressed bool compression; // plugins std::vector plugin_file; // the html code is cleaned by our filter bool html_filter; // the url of a new empty item (if there is not the subject too) std::string item_url_empty; // maximum length of a file send by post multipart form // 0 - not used int post_file_max; // directories for static files std::string static_simplefs_dir; std::string static_hashfs_dir; // temporary directory for static content used by the upload function // should be on the same partition as static_simplefs_dir and static_hashfs_dir std::string static_tmp_dir; // default locale: en pl std::string locale_str; // directory with locale files std::string locale_dir; // directory with default locale files (those from winix) std::string locale_dir_default; // below variables are based on the other config variables // base_url_prefix + base_server std::string base_url; // base_url_static_prefix + base_server std::string base_url_static; // additional static server for common content such as ckeditor std::string base_url_static_ext; // base_url_static_auth_prefix + base_server std::string base_url_static_auth; // separator used in html tag std::string title_separator; // end config members // ----------------------------------------------------------------- // false at the beginning bool stdout_is_closed; // true if there was SIGHUP signal volatile bool signal_hup; // contains current directories tree Dirs dirs; // based on base_url // set by SetAdditionalVariables() // without the first part http:// (or https://) or the whole string is empty std::string base_url_http_host; std::string base_url_static_auth_http_host; // call this method after the config file is read void SetAdditionalVariables(); // users Users users; // groups Groups groups; // functions (ls, cat, etc) Functions functions; // for 'last' function LastContainer last; // mount points Mounts mounts; // rebus (captcha) Rebus rebus; // the time when the winix starts time_t system_start; // how many logged users long how_many_logged; // load averages LoadAvg load_avg; Data(); private: void SetHttpHost(const std::string & in, std::string & out); }; extern Data data; #endif