00001 #ifndef _ots_Utilities_RemoteWebUsers_h
00002 #define _ots_Utilities_RemoteWebUsers_h
00003
00004
00005 #include "otsdaq-core/WebUsersUtilities/WebUsers.h"
00006 #include "otsdaq-core/SOAPUtilities/SOAPMessenger.h"
00007 #include "otsdaq-core/ConfigurationDataFormats/ConfigurationGroupKey.h"
00008
00009 #include <string>
00010 #include <iostream>
00011
00012 namespace ots
00013 {
00014
00015 class AllSupervisorInfo;
00016 class HttpXmlDocument;
00017
00018
00019
00020
00021 class RemoteWebUsers : public SOAPMessenger
00022 {
00023 public:
00024 RemoteWebUsers(xdaq::Application *application);
00025
00026
00027
00028 bool xmlRequestToGateway(
00029 cgicc::Cgicc& cgi,
00030 std::ostringstream* out,
00031 HttpXmlDocument* xmldoc,
00032 const AllSupervisorInfo& allSupervisorInfo,
00033 WebUsers::RequestUserInfo& userInfo);
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051 std::string getActiveUserList (XDAQ_CONST_CALL xdaq::ApplicationDescriptor* supervisorDescriptor);
00052 void sendSystemMessage (XDAQ_CONST_CALL xdaq::ApplicationDescriptor* supervisorDescriptor, const std::string &toUser, const std::string& msg);
00053 void makeSystemLogbookEntry (XDAQ_CONST_CALL xdaq::ApplicationDescriptor* supervisorDescriptor, const std::string &entryText);
00054 std::pair<std::string , ConfigurationGroupKey> getLastConfigGroup (XDAQ_CONST_CALL xdaq::ApplicationDescriptor* supervisorDescriptor, const std::string &actionOfLastGroup, std::string &actionTimeString);
00055
00056
00057 private:
00058 bool cookieCodeIsActiveForRequest(
00059 XDAQ_CONST_CALL xdaq::ApplicationDescriptor* supervisorDescriptor,
00060 std::string& cookieCode,
00061 uint8_t* userPermissions = 0,
00062 std::string ip = "0",
00063 bool refreshCookie = true,
00064 std::string* userWithLock = 0);
00065
00066 bool getUserInfoForCookie(
00067 XDAQ_CONST_CALL xdaq::ApplicationDescriptor* supervisorDescriptor,
00068 std::string& cookieCode,
00069 std::string* userName,
00070 std::string* displayName = 0,
00071 uint64_t* activeSessionIndex = 0);
00072
00073
00074
00075 std::string ActiveUserList_;
00076 time_t ActiveUserLastUpdateTime_;
00077 enum
00078 {
00079 ACTIVE_USERS_UPDATE_THRESHOLD = 10,
00080 };
00081
00082 std::string tmpUserWithLock_, tmpUserGroups_, tmpUsername_;
00083
00084 };
00085
00086
00087 }
00088
00089 #endif