/** * \brief Function to treat the ListLocalAccountsServer options * \param userServer the object which encapsulates user information * \param options the object which contains the ListLocalAccountsServer options * \param sqlRequest the sql data base request * \return raises an exception on error */ void processOptions(UserServer userServer, const UMS_Data::ListLocalAccOptions_ptr& options, std::string& sqlRequest) { if (! userServer.isAdmin() && (! options->getUserId().empty() || options->isAdminListOption())) { throw UMSVishnuException(ERRCODE_NO_ADMIN); } if(! options->isAdminListOption()) { addOptionRequest("userid", userServer.getData().getUserId(), sqlRequest); } //The admin option if (! options->getUserId().empty()) { addOptionRequest("users.userid", options->getUserId(), sqlRequest); } if (! options->getMachineId().empty()) { addOptionRequest("machine.machineid", options->getMachineId(), sqlRequest); if (! options->isAdminListOption() && options->getUserId().empty()) { addOptionRequest("users.userid", userServer.getData().getUserId(), sqlRequest); } } }
/** * \brief Function to treat the listSessionServer options * \param userServer the object which encapsulates user information * \param options the object which contains the ListSessionServer options values * \param sqlRequest the sql data base request * \return raises an exception on error */ void processOptions(UserServer userServer, const UMS_Data::ListSessionOptions_ptr& options, std::string& query) { boost::posix_time::ptime pt; bool listAll = options->isAdminListOption(); if (! userServer.isAdmin() && (! options->getUserId().empty() || listAll)) { throw UMSVishnuException (ERRCODE_NO_ADMIN); } if(! options->getMachineId().empty()) { addOptionRequest("clmachine.name", options->getMachineId(), query); } if(! options->getUserId().empty()) { addOptionRequest("users.userid", options->getUserId(), query); } else { if (! listAll) { addOptionRequest("users.userid", userServer.getData().getUserId(), query); } } int status = options->getStatus(); if (status == vishnu::STATUS_UNDEFINED) { status = vishnu::STATUS_ACTIVE; } addIntegerOptionRequest("state", status, query); if (options->getSessionClosePolicy()) { addIntegerOptionRequest("closepolicy", options->getSessionClosePolicy(), query); } if (options->getSessionInactivityDelay() < 0) { throw UMSVishnuException(ERRCODE_INCORRECT_TIMEOUT); } if (options->getSessionInactivityDelay()) { addIntegerOptionRequest("timeout", options->getSessionInactivityDelay(), query); } if (! options->getSessionId().empty()) { addOptionRequest("vsessionid", options->getSessionId(), query); } time_t startDate = static_cast<time_t>(options->getStartDateOption()); if (startDate > 0) { addTimeRequest("creation", vishnu::timeToTimestamp(startDate), query, ">="); } time_t endDate = static_cast<time_t>(options->getEndDateOption()); if (endDate > 0) { addTimeRequest("closure", vishnu::timeToTimestamp(endDate), query, "<="); } }
/** * \brief Function to treat the ListUsersServer options * \param userServer the object which encapsulates user information * \param options The object which encapsulates the information of ListUsersServer options * \param sqlRequest the sql data base request * \return raises an exception on error */ void processOptions(UserServer userServer, const UMS_Data::ListUsersOptions_ptr& options, std::string& sqlRequest) { if(! userServer.isAdmin()) { throw UMSVishnuException (ERRCODE_NO_ADMIN); } std::string userId = options->getUserId(); if(userId.size()!=0) { //To check if the user id is correct checkUserId(options->getUserId()); addOptionRequest("userid", userId, sqlRequest); } std::string authSystemId = options->getAuthSystemId(); if(authSystemId.size()!=0) { //To check if the authSystem identifier is correct checkAuthSystemId(authSystemId); //addOptionRequest("authsystemid", authSystemId, sqlRequest); std::string luserCmd = boost::str(boost::format("SELECT userid " " FROM authsystem, users, authaccount " " WHERE authaccount.authsystem_authsystemid=authsystem.numauthsystemid" " AND authaccount.users_numuserid=users.numuserid" " AND authsystemid='%1%'" " AND authsystem.status!=%2%" " AND users.status!=%2%" " AND authaccount.status!=%2%" ) % mdatabaseInstance->escapeData(authSystemId) % vishnu::STATUS_DELETED); sqlRequest.append(" AND userid IN ("+mdatabaseInstance->escapeData(luserCmd)+")"); } }
/** * \brief Function to treat the ListMachinesServer options * \fn void processOptions(UserServer userServer, * const UMS_Data::ListMachineOptions_ptr& options, * std::string& sqlRequest) * \param userServer the object which encapsulates user information * \param options the object which contains the ListMachinesServer options values * \param sqlRequest the sql data base request * \return raises an exception on error */ void processOptions(UserServer userServer, const UMS_Data::ListMachineOptions_ptr& options, std::string& sqlRequest) { std::string sqlListofMachinesWithJointure = "SELECT machineid, name, site, machine.status, lang, description, userid " " from machine, description, account, users where machine.nummachineid = description.machine_nummachineid " " and account.machine_nummachineid=machine.nummachineid and account.users_numuserid=users.numuserid"; std::string sqlListofMachinesIntial = sqlRequest; size_t userIdSize = options->getUserId().size(); size_t machineIdSize = options->getMachineId().size(); bool isListAll = options->isListAllMachine(); if ((!userServer.isAdmin()) && userIdSize!=0) { UMSVishnuException e (ERRCODE_NO_ADMIN); throw e; } if(!isListAll) { sqlRequest = sqlListofMachinesWithJointure; addOptionRequest("userid", userServer.getData().getUserId(), sqlRequest); } //The admin option if(userIdSize!=0) { //To check if the user id is correct checkUserId(options->getUserId()); sqlRequest = sqlListofMachinesWithJointure; addOptionRequest("userid", options->getUserId(), sqlRequest); } if(machineIdSize!=0) { //To check if the machine id is correct checkMachineId(options->getMachineId()); if(!isListAll && userIdSize==0) { sqlRequest=sqlListofMachinesIntial; } addOptionRequest("machineid", options->getMachineId(), sqlRequest); } }
/** * \brief Function to treat the ListCommandsServer options * \param userServer the object which encapsulates user information * \param options the object which contains the ListCommandsServer options values * \param sqlRequest the sql data base request * \return raises an exception on error */ void processOptions(UserServer userServer, const UMS_Data::ListCmdOptions_ptr& options, std::string& sqlRequest) { boost::posix_time::ptime pt; bool listAll = options->isAdminListOption(); if (! userServer.isAdmin() && (! options->getUserId().empty() || listAll)) { throw UMSVishnuException (ERRCODE_NO_ADMIN); } if(! options->getUserId().empty()) { addOptionRequest("users.numuserid", getNumUser(options->getUserId()), sqlRequest); } else { if(! listAll) { addOptionRequest("userid", userServer.getData().getUserId(), sqlRequest); } } if (! options->getSessionId().empty()) { checkSessionId(options->getSessionId()); addOptionRequest("vsessionid", options->getSessionId(), sqlRequest); } time_t startDate = static_cast<time_t>(options->getStartDateOption()); if (startDate != -1) { pt = boost::posix_time::from_time_t(startDate); std::string startDateStr = boost::posix_time::to_iso_string(pt); addTimeRequest("starttime", startDateStr, sqlRequest, ">="); } time_t endDate = static_cast<time_t>(options->getEndDateOption()); if(endDate!=-1) { pt = boost::posix_time::from_time_t(endDate); std::string endDateStr = boost::posix_time::to_iso_string(pt); addTimeRequest("endtime", endDateStr, sqlRequest, "<="); } }
/** * \brief Function to treat the ListMachinesServer options * \param userServer the object which encapsulates user information * \param options the object which contains the ListMachinesServer options values * \param sqlRequest the sql data base request * \return raises an exception on error */ void processOptions(UserServer userServer, const UMS_Data::ListMachineOptions_ptr& options, std::string& sqlRequest) { std::string sqlJoinLstMachines = boost::str(boost::format("SELECT DISTINCT machineid, address, machine.status, description, userid " " FROM machine, account, users" " WHERE account.machine_nummachineid = machine.nummachineid " " AND account.users_numuserid = users.numuserid " " AND machine.status != %1%" " AND account.status != %1%" " AND users.status != %1%" ) % vishnu::STATUS_DELETED); std::string sqlListofMachinesIntial = sqlRequest; bool isListAll = options->isListAllMachine(); if (! userServer.isAdmin() && ! options->getUserId().empty()) { throw UMSVishnuException (ERRCODE_NO_ADMIN); } if(! isListAll) { sqlRequest = sqlJoinLstMachines; addOptionRequest("userid", userServer.getData().getUserId(), sqlRequest); } //The admin option if (! options->getUserId().empty()) { sqlRequest = sqlJoinLstMachines; addOptionRequest("users.numuserid", getNumUser(options->getUserId()), sqlRequest); } if (! options->getMachineId().empty()) { getNumMachine( options->getMachineId() ); if(! isListAll && options->getUserId().empty()) { sqlRequest = sqlListofMachinesIntial; } addOptionRequest("machineid", options->getMachineId(), sqlRequest); } }
/** * \brief Function to treat the listSessionServer options * \param userServer the object which encapsulates user information * \param options the object which contains the ListSessionServer options values * \param sqlRequest the sql data base request * \return raises an exception on error */ void processOptions(UserServer userServer, const UMS_Data::ListSessionOptions_ptr& options, std::string& sqlRequest) { boost::posix_time::ptime pt; size_t userIdSize = options->getUserId().size(); bool listAll = options->isAdminListOption(); if ((!userServer.isAdmin()) && (userIdSize!=0 || listAll)) { UMSVishnuException e (ERRCODE_NO_ADMIN); throw e; } if(options->getMachineId().size()!=0) { //To check if the name of the machine is correct checkClientMachineName(options->getMachineId()); sqlRequest = "SELECT vsessionid, userid, sessionkey, state, closepolicy, timeout, lastconnect," "creation, closure, authid from vsession, users, clmachine where vsession.users_numuserid=users.numuserid" " and vsession.clmachine_numclmachineid=clmachine.numclmachineid"; addOptionRequest("name", options->getMachineId(), sqlRequest); } if(userIdSize!=0) { //To check if the user id is correct checkUserId(options->getUserId()); addOptionRequest("userid", options->getUserId(), sqlRequest); } else { if(!listAll) { addOptionRequest("userid", userServer.getData().getUserId(), sqlRequest); } } int status = options->getStatus(); if (status == vishnu::STATUS_UNDEFINED) { status = vishnu::STATUS_ACTIVE; } //To check the status value checkStatus(status); addIntegerOptionRequest("state", status, sqlRequest); int closePolicy = options->getSessionClosePolicy(); //To check the closePolicy value checkClosePolicy(closePolicy); if(closePolicy) { addIntegerOptionRequest("closepolicy", closePolicy, sqlRequest); } int timeOut = options->getSessionInactivityDelay(); if(timeOut < 0) { throw UMSVishnuException(ERRCODE_INCORRECT_TIMEOUT); } if(timeOut) { addIntegerOptionRequest("timeout", timeOut, sqlRequest); } if(options->getSessionId().size()!=0) { //To check if the session id is correct checkSessionId(options->getSessionId()); addOptionRequest("vsessionid", options->getSessionId(), sqlRequest); } time_t startDate = static_cast<time_t>(options->getStartDateOption()); if(startDate!=-1) { pt = boost::posix_time::from_time_t(startDate); std::string startDateStr = boost::posix_time::to_iso_string(pt); addTimeRequest("creation", startDateStr, sqlRequest, ">="); } time_t endDate = static_cast<time_t>(options->getEndDateOption()); if(endDate!=-1) { pt = boost::posix_time::from_time_t(endDate); std::string endDateStr = boost::posix_time::to_iso_string(pt); addTimeRequest("closure", endDateStr, sqlRequest, "<="); } }