123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- // \file SNFMilterConfig.hpp
- //
- // Copyright (C) 2011 ARM Research Labs, LLC.
- // See www.armresearch.com for the copyright terms.
- //
- // This file defines the SNFMilterConfig interface.
- //
- // $Id$
- //
- ///////////////////////////////////////////////////////////////////////////////////////////////////
-
- #ifndef SNFMilterConfighpp_included
- #define SNFMilterConfighpp_included
-
- #include <string>
-
- #include "UtilityConfig.hpp"
- #include "PostfixIntegrate.hpp"
-
- /// Class to manage the SNFMilter configuration.
- //
- // This class creates/maintains the sniffer configuration file, and
- // integrates/unintegrates with MTAs.
- //
- //////////////////////////////////////////////////////////////////////////////////////////////////////////
- class SNFMilterConfig : public UtilityConfig {
-
- public:
-
- /// Command specified.
- enum CommandEnum {
- SetupRepairCommand, ///< Setup or repair the configuration.
- UpdateCredentialsCommand, ///< Update the credentials.
- IntegrateWithPostfixCommand, ///< Integrate with postfix.
- IntegrateWithSendmailCommand, ///< Integrate with sendmail.
- IntegrateWithNoneCommand, ///< Unintegrate with all supported MTAs.
- StartSnifferCommand, ///< Start the Sniffer.
- StopSnifferCommand, ///< Stop the Sniffer.
- NoCommand, ///< No command specified.
- UnknownCommand ///< Unknown.
- };
-
- /// Display usage.
- //
- // \param[in] Version is the SNFMilter version.
- //
- void DisplayHelp(std::string Version);
-
- /// Get the command-line input parameters for SNFMilter.
- //
- // \param[in] argc is the number of parameters.
- //
- // \param[in] argv is the parameters.
- //
- // \returns true if all the required command line parameters are
- // present and there are no unknown command-line parameters, false
- // otherwise.
- //
- bool GetCommandLineInput(int argc, char* argv[]);
-
- /// Load the configuration, creating default configuration if necessary.
- //
- // This method load the configuration specified in the command
- // line, or the default config file. If the config file to load
- // doesn't exit, the config file is created by copying from the
- // sample config file.
- //
- // Side effect: The state of the config file is saved.
- //
- // Side effect: If the config file doesn't exist, a new config
- // file is created.
- //
- void CreateLoadConfig(void);
-
- /// Execute the command specified by the command-line parameters.
- //
- void ExecuteCommand(void);
-
- /// Save the state of all files that might be changed, except the
- /// config file.
- //
- void SaveFileState(void); // OBSOLETE.
-
- /// Execute the command to integrate/unintegrate with the MTAs.
- void DoIntegrationCommand();
-
- private:
-
- /// Load the socket info (file name) from the <platform> section
- /// of the loaded config file.
- void LoadSocketInfo();
-
- /// Setup/repair the directory containing the milter socket.
- //
- // This method ensures that the directore to contain the milter
- // socket exists and has the correct owner and permissions.
- void SetupRepairSocketDir();
-
- PostfixIntegrate Postfix; ///< Postfix integration object.
-
- /// Unintegrate with MTAs.
- //
- // Unintegrate with all MTAs except the specified MTA.
- //
- // \param[in] Except is the MTA to not integrate with. The
- // acceptable values are:
- //
- // <ol>
- // <li> "postfix" </li>
- // <li> "" </li>
- // </ol>
- //
- // The default value is "", which specifies unintegration with all
- // MTAs.
- //
- void UnintegrateWithAllExcept(std::string Except = "");
-
- CommandEnum Command; ///< Specified command.
-
- static const std::string DefaultConfigFile; ///< Default config file.
-
- static const std::string SampleConfigFile; ///< Sample config file.
-
- static const std::string SampleIdentityFile; ///< Sample identity file.
-
- static const std::string ApplicationName; ///< Application name.
-
- std::string SocketFileName;
-
- };
-
- #endif
|