AccessControlRule::AccessControlRule(const QJsonValueRef &jsonValue) : m_name(), m_description(), m_action( ActionNone ), m_parameters(), m_invertConditions( false ) { if( jsonValue.isObject() ) { QJsonObject json = jsonValue.toObject(); m_name = json["Name"].toString(); m_description = json["Description"].toString(); m_action = static_cast<Action>( json["Action"].toInt() ); m_invertConditions = json["InvertConditions"].toBool(); for( auto parametersValue : json["Parameters"].toArray() ) { QJsonObject parametersObj = parametersValue.toObject(); auto condition = static_cast<Condition>( parametersObj["Condition"].toInt() ); m_parameters[condition].enabled = parametersObj["Enabled"].toBool(); m_parameters[condition].subject = static_cast<Subject>( parametersObj["Subject"].toInt() ); m_parameters[condition].argument = parametersObj["Argument"].toVariant(); } } }
RMUser::RMUser(const QJsonValueRef& json, RedMineManager* manager, QObject* parent): QObject(parent), m_manager(manager) { assert(json.isObject()); QJsonObject obj = json.toObject(); m_id = obj.value("id").toDouble(); m_login = obj.value("login").toString(); m_firstName = obj.value("firstname").toString(); m_lastName = obj.value("lastname").toString(); m_email = obj.value("email").toString(); m_authSourceId = obj.value("auth_source_id").toDouble(); }
RMProject::RMProject(const QJsonValueRef& json, RedMineManager* manager, QObject* parent): QObject(parent), m_manager(manager) { assert(json.isObject()); QJsonObject obj = json.toObject(); m_id = obj.value("id").toDouble(); m_createdOn = jsonDate(obj.value("created_on").toString()); m_updatedOn = jsonDate(obj.value("updated_on").toString()); m_identifier = obj.value("identifier").toString(); m_name = obj.value("name").toString(); m_description = obj.value("description").toString(); auto parentProj = obj.value("parent"); if (parentProj.isObject()) { m_parentProjectId = parentProj.toObject().value("id").toDouble(); } }
void HttpServer::initGlobal(const QString &filepath) { LOG_INFO("Processing filepath [" << filepath << "]"); m_GlobalConfig = Utils::readJson(QDir(filepath).absolutePath()); LOG_INFO(m_GlobalConfig["bindIp"]); LOG_INFO(m_GlobalConfig["bindPort"]); QJsonValueRef loggingValue = m_GlobalConfig["logfile"]; if(loggingValue.isObject()) { QJsonObject logging = loggingValue.toObject(); if(logging["isEnabled"].toBool(true)) { QString filename; if(logging["filename"].isString()) { filename = logging["filename"].toString(); } if(logging["writeFrequency"].isDouble()) { m_LoggingUtils.initializeFile(filename, logging["writeFrequency"].toInt()); } else { m_LoggingUtils.initializeFile(filename); } } } QJsonValueRef httpFilesValue = m_GlobalConfig["httpFiles"]; if(httpFilesValue.isObject()) { QJsonObject httpFiles = httpFilesValue.toObject(); m_ShouldServeFiles = httpFiles["isEnabled"].toBool(false); if(m_ShouldServeFiles) { QString directory = httpFiles["directory"].toString().trimmed(); if(directory == "$QTTP_HOME") { QProcessEnvironment env = QProcessEnvironment::systemEnvironment(); if(env.contains(QTTP_HOME_ENV_VAR)) { m_ServeFilesDirectory = QDir::cleanPath(env.value(QTTP_HOME_ENV_VAR)); m_ServeFilesDirectory = m_ServeFilesDirectory.absoluteFilePath("www"); LOG_DEBUG("Using $QTTP_HOME" << m_ServeFilesDirectory.absolutePath()); } else { m_ServeFilesDirectory = QDir::current().absoluteFilePath("www"); LOG_DEBUG("QTTP_HOME not found, using current directory" << m_ServeFilesDirectory.absolutePath()); } } else if(directory.isEmpty()) { m_ServeFilesDirectory = QDir::current().absoluteFilePath("www"); LOG_DEBUG("Default to using current directory" << m_ServeFilesDirectory.absolutePath()); } else { m_ServeFilesDirectory = QDir::cleanPath(directory); LOG_DEBUG("Using directory in config" << m_ServeFilesDirectory.absolutePath()); } if(!m_ServeFilesDirectory.exists()) { LOG_ERROR("Unable to serve files from invalid directory [" << m_ServeFilesDirectory.absolutePath() << "]"); m_ShouldServeFiles = false; } } } if(m_ShouldServeFiles) { m_FileLookup.populateFiles(m_ServeFilesDirectory); } QJsonObject headers = m_GlobalConfig["defaultHeaders"].toObject(); QStringList keys = headers.keys(); if(!keys.isEmpty()) { Global::DEFAULT_HEADERS.clear(); for(QString key : keys) { QString value = headers.value(key).toString(); Global::DEFAULT_HEADERS.push_back({ key, value }); LOG_DEBUG("Adding default-header [" << key << ", " << value << "]"); } // We'll always force the QttpServer version in here. Global::DEFAULT_HEADERS.push_back({ "Server", QTTP_SERVER_VERSION }); } else { LOG_DEBUG("Did not read headers in config file, using default headers"); } QJsonObject serverConfig = m_GlobalConfig["server"].toObject(); m_SendRequestMetadata = serverConfig["metadata"].toBool(false); m_StrictHttpMethod = serverConfig["strictHttpMethod"].toBool(false); QJsonObject processors = serverConfig["processors"].toObject(); keys = processors.keys(); for(QString key : keys) { bool isEnabled = processors.value(key).toBool(false); LOG_DEBUG("Processor [" << key << "] is " << (isEnabled ? "ENABLED" : "NOT ENABLED")); if(isEnabled) { m_EnabledProcessors.append(key); } } QJsonObject swagger = m_GlobalConfig["swagger"].toObject(); initSwagger(swagger["isEnabled"].toBool(false)); #ifndef ASSIGN_SWAGGER # define ASSIGN_SWAGER(X) m_ServerInfo.X = swagger[#X].toString() #endif ASSIGN_SWAGER(host); ASSIGN_SWAGER(basePath); ASSIGN_SWAGER(version); ASSIGN_SWAGER(title); ASSIGN_SWAGER(description); ASSIGN_SWAGER(termsOfService); QJsonObject company = swagger["company"].toObject(); m_ServerInfo.companyName = company["name"].toString(); m_ServerInfo.companyUrl = company["url"].toString(); QJsonObject contact = swagger["contact"].toObject(); m_ServerInfo.contactEmail = contact["email"].toString(); QJsonObject license = swagger["license"].toObject(); m_ServerInfo.licenseName = license["name"].toString(); m_ServerInfo.licenseUrl = license["url"].toString(); m_ServerInfo.schemes = swagger["schemes"].toArray(); m_ServerInfo.consumes = swagger["consumes"].toArray(); m_ServerInfo.produces = swagger["produces"].toArray(); }