/** * hermes antispam proxy * Copyright (C) 2006, 2007 Juan José Gutiérrez de Quevedo * * 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; version 2 of the License * * 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., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * * @author Juan José Gutiérrez de Quevedo */ #ifndef CONFIGFILE_H #define CONFIGFILE_H #include "hermes.h" #include #include #include #include #include "Utils.h" using namespace std; class Configfile { private: static string parseAsString(string); static bool parseAsBool(string); static long parseAsInt(string); static list parseAsList(string); int uid; int gid; bool background; string chroot; bool drop_privileges; string user; string group; string pid_file; int listening_port; string bind_to; string server_host; int server_port; string database_file; bool greylist; bool throttle; int throttling_time; int number_of_unimplemented_commands_allowed; bool allow_data_before_banner; list dns_blacklist_domains; int dns_blacklist_percentage; list dns_whitelist_domains; int dns_whitelist_percentage; bool add_status_header; int banner_delay_time; int initial_expiry; int initial_blacklist; int whitelist_expiry; bool submit_stats; bool submit_stats_ssl; string submit_stats_username; string submit_stats_password; int log_level; string file_logger_filename; bool keep_file_locked; int log_rotation_frequency; string rotate_filename; bool clean_db; bool outgoing_ssl; bool incoming_ssl; string private_key_file; string certificate_file; string dhparams_file; bool add_headers; string hostname; bool whitelisted_disables_everything; bool reject_no_reverse_resolution; bool check_helo_against_reverse; bool query_spf; bool return_temp_error_on_reject; public: Configfile(); void parse(string); void validateConfig(); int getUid(); int getGid(); bool& getBackground(); string& getChroot(); bool& getDropPrivileges(); string& getUser(); string& getGroup(); string& getPidFile(); int& getListeningPort(); string& getBindTo(); string& getServerHost(); int& getServerPort(); string& getDatabaseFile(); bool& getGreylist(); bool& getThrottle(); int& getThrottlingTime(); int& getNumberOfUnimplementedCommandsAllowed(); bool& getAllowDataBeforeBanner(); list& getDnsBlacklistDomains(); int& getDnsBlacklistPercentage(); list& getDnsWhitelistDomains(); int& getDnsWhitelistPercentage(); bool& getAddStatusHeader(); int& getBannerDelayTime(); int& getInitialExpiry(); int& getInitialBlacklist(); int& getWhitelistExpiry(); bool& getSubmitStats(); bool& getSubmitStatsSsl(); string& getSubmitStatsUsername(); string& getSubmitStatsPassword(); int& getLogLevel(); string& getFileLoggerFilename(); bool& getKeepFileLocked(); int& getLogRotationFrequency(); string& getRotateFilename(); bool& getCleanDb(); bool& getOutgoingSsl(); bool& getIncomingSsl(); string& getPrivateKeyFile(); string& getCertificateFile(); string& getDhparamsFile(); bool& getAddHeaders(); string& getHostname(); bool& getWhitelistedDisablesEverything(); bool& getRejectNoReverseResolution(); bool& getCheckHeloAgainstReverse(); bool& getQuerySpf(); bool& getReturnTempErrorOnReject(); }; #endif //CONFIGFILE_H