Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

SNFServerConfig.hpp 3.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. // \file SNFServerConfig.hpp
  2. //
  3. // Copyright (C) 2012 ARM Research Labs, LLC.
  4. // See www.armresearch.com for the copyright terms.
  5. //
  6. // This file defines the SNFServerConfig interface.
  7. //
  8. // $Id$
  9. //
  10. ///////////////////////////////////////////////////////////////////////////////////////////////////
  11. #ifndef SNFServerConfighpp_included
  12. #define SNFServerConfighpp_included
  13. #include <string>
  14. #include "UtilityConfig.hpp"
  15. #include "PostfixIntegrate.hpp"
  16. #include "SendmailIntegrate.hpp"
  17. /// Class to manage the SNFServer configuration.
  18. //
  19. // This class creates/maintains the sniffer configuration file, and
  20. // integrates/unintegrates with MTAs.
  21. //
  22. //////////////////////////////////////////////////////////////////////////////////////////////////////////
  23. class SNFServerConfig : public UtilityConfig {
  24. public:
  25. /// Command specified.
  26. enum CommandEnum {
  27. SetupRepairCommand, ///< Setup or repair the configuration.
  28. UpdateCredentialsCommand, ///< Update the credentials.
  29. IntegrateWithPostfixCommand, ///< Integrate with postfix.
  30. IntegrateWithSendmailCommand, ///< Integrate with sendmail.
  31. IntegrateWithNoneCommand, ///< Unintegrate with all supported MTAs.
  32. StartSnifferCommand, ///< Start the Sniffer.
  33. StopSnifferCommand, ///< Stop the Sniffer.
  34. NoCommand, ///< No command specified.
  35. UnknownCommand ///< Unknown.
  36. };
  37. /// Display usage.
  38. //
  39. // \param[in] Version is the SNFServer version.
  40. //
  41. void DisplayHelp(std::string Version);
  42. /// Get the command-line input parameters for SNFServer.
  43. //
  44. // \param[in] argc is the number of parameters.
  45. //
  46. // \param[in] argv is the parameters.
  47. //
  48. // \returns true if all the required command line parameters are
  49. // present and there are no unknown command-line parameters, false
  50. // otherwise.
  51. //
  52. bool GetCommandLineInput(int argc, char* argv[]);
  53. /// Execute the command specified by the command-line parameters.
  54. //
  55. void ExecuteCommand(void);
  56. /// Save the state of all files that might be changed, except the
  57. /// config file.
  58. //
  59. void SaveFileState(void); // OBSOLETE.
  60. private:
  61. PostfixIntegrate Postfix; ///< Postfix integration object.
  62. SendmailIntegrate Sendmail; ///< Sendmail integration object.
  63. /// Unintegrate with MTAs.
  64. //
  65. // Unintegrate with all MTAs except the specified MTA.
  66. //
  67. // \param[in] Except is the MTA to not integrate with. The
  68. // acceptable values are:
  69. //
  70. // <ol>
  71. // <li> "postfix" </li>
  72. // <li> "sendmail" </li>
  73. // <li> "" </li>
  74. // </ol>
  75. //
  76. // The default value is "", which specifies unintegration with all
  77. // MTAs.
  78. //
  79. void UnintegrateWithAllExcept(std::string Except = "");
  80. CommandEnum Command; ///< Specified command.
  81. static const std::string DefaultConfigFile; ///< Default config file.
  82. static const std::string SampleConfigFile; ///< Sample config file.
  83. static const std::string SampleIdentityFile; ///< Sample identity file.
  84. static const std::string ApplicationName; ///< Application name.
  85. };
  86. #endif