tdaq-develop-2025-02-12
LogbookSupervisor.h
1 #ifndef _ots_LogbookSupervisor_h
2 #define _ots_LogbookSupervisor_h
3 
4 #include "otsdaq/CoreSupervisors/CoreSupervisorBase.h"
5 
6 // clang-format off
7 namespace ots
8 {
12 class LogbookSupervisor : public CoreSupervisorBase
13 {
14  public:
15  XDAQ_INSTANTIATOR();
16  LogbookSupervisor (xdaq::ApplicationStub* s);
17  virtual ~LogbookSupervisor (void);
18 
19  void init (void);
20  void destroy (void);
21 
22  virtual void defaultPage (xgi::Input* in, xgi::Output* out) override;
23  virtual void request (const std::string& requestType,
24  cgicc::Cgicc& cgiIn,
25  HttpXmlDocument& xmlOut,
26  const WebUsers::RequestUserInfo& userInfo) override;
27  virtual void nonXmlRequest (const std::string& requestType,
28  cgicc::Cgicc& cgiIn,
29  std::ostream& out,
30  const WebUsers::RequestUserInfo& userInfo) override;
31 
32  virtual void setSupervisorPropertyDefaults (void) override;
33  virtual void forceSupervisorPropertyValues (void) override;
34 
36  xoap::MessageReference MakeSystemLogEntry (xoap::MessageReference msg);
37 
38  private:
39  bool validateCategoryName (std::string& category);
40  std::string getActiveCategory (void);
41  void setActiveCategory (std::string category = "");
42  void createCategory (std::string category,
43  std::string creator,
44  HttpXmlDocument* xmldoc = 0);
45  void removeCategory (std::string category,
46  std::string remover,
47  HttpXmlDocument* xmldoc = 0);
48  void getCategories (HttpXmlDocument* xmldoc = 0, std::ostringstream* out = 0);
49  void webUserSetActiveCategory (std::string category, HttpXmlDocument* xmldoc = 0);
50  void refreshLogbook (time_t date,
51  uint32_t duration,
52  HttpXmlDocument* xmldoc = 0,
53  std::ostringstream* out = 0,
54  std::string category = "");
55  void cleanUpPreviews (void);
56  void savePostPreview (std::string& subject,
57  std::string& text,
58  const std::vector<cgicc::FormFile>& files,
59  std::string creator,
60  HttpXmlDocument* xmldoc = 0);
61  void escapeLogbookEntry (std::string& entry);
62  std::string validateUploadFileType (const std::string fileType);
63  void movePreviewEntry (std::string previewNumber,
64  bool approve,
65  HttpXmlDocument* xmldoc = 0);
66  void hideLogbookEntry (const std::string& entryId,
67  bool hide,
68  const std::string& hider);
69 
70  enum
71  {
72  CATEGORY_NAME_MIN_LENTH = 3,
73  CATEGORY_NAME_MAX_LENTH = 300,
74  LOGBOOK_PREVIEW_EXPIRATION_TIME = 60 * 20,
75  };
76  std::vector<std::string> allowedFileUploadTypes_, matchingFileUploadTypes_;
77 
78  std::string activeCategory_;
79  unsigned int mostRecentDayIndex_;
80 };
81 } // namespace ots
82 // clang-format on
83 
84 #endif
xoap::MessageReference MakeSystemLogEntry(xoap::MessageReference msg)
External Supervisor XOAP handlers.
virtual void request(const std::string &requestType, cgicc::Cgicc &cgiIn, HttpXmlDocument &xmlOut, const WebUsers::RequestUserInfo &userInfo) override
virtual void forceSupervisorPropertyValues(void) override
override to force supervisor property values (and ignore user settings)
virtual void setSupervisorPropertyDefaults(void) override
override to control supervisor specific defaults
virtual void nonXmlRequest(const std::string &requestType, cgicc::Cgicc &cgiIn, std::ostream &out, const WebUsers::RequestUserInfo &userInfo) override