Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/FreeRDP/FreeRDP-WebConnect.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlessandro Pilotti <apilotti@cloudbasesolutions.com>2017-07-10 20:56:29 +0300
committerGitHub <noreply@github.com>2017-07-10 20:56:29 +0300
commitb839677880e768cf12ad17fd9bae76cb0b002637 (patch)
tree5b92152bb788acc849c088180b72f8887405b177
parentfd8be194a3829fdc5ea226dae83edccc4ff5ce86 (diff)
parentf8832812905df4d9f58ddd43c69f598bdfcc7712 (diff)
Merge pull request #165 from c64cosmin/master
Adds project ID, project domain and user domain configuration.
-rw-r--r--wsgate/nova_token_auth.cpp70
-rw-r--r--wsgate/nova_token_auth.hpp7
-rw-r--r--wsgate/wsgate.ini.sample.in5
-rw-r--r--wsgate/wsgateEHS.cpp45
-rw-r--r--wsgate/wsgateEHS.hpp7
5 files changed, 114 insertions, 20 deletions
diff --git a/wsgate/nova_token_auth.cpp b/wsgate/nova_token_auth.cpp
index 7c5cd06..1ab139c 100644
--- a/wsgate/nova_token_auth.cpp
+++ b/wsgate/nova_token_auth.cpp
@@ -40,13 +40,18 @@ private:
std::pair<std::string, std::string> get_auth_token_data_v2(std::string osAuthUrl,
std::string osUserName,
std::string osPassword,
- std::string osTenantName,
+ std::string osProjectName,
std::string osRegion);
std::pair<std::string, std::string> get_auth_token_data_v3(std::string osAuthUrl,
std::string osUserName,
std::string osPassword,
- std::string osTenantName,
+ std::string osProjectName,
+ std::string osProjectId,
+ std::string osProjectDomainName,
+ std::string osUserDomainName,
+ std::string osProjectDomainId,
+ std::string osUserDomainId,
std::string osRegion);
web::json::value get_console_token_data(std::string authToken,
@@ -57,7 +62,12 @@ public:
virtual nova_console_info get_console_info(std::string osAuthUrl,
std::string osUserName,
std::string osPassword,
- std::string osTenantName,
+ std::string osProjectName,
+ std::string osProjectId,
+ std::string osProjectDomainName,
+ std::string osUserDomainName,
+ std::string osProjectDomainId,
+ std::string osUserDomainId,
std::string consoleToken,
std::string keystoneVersion,
std::string osRegion);
@@ -92,7 +102,7 @@ json::value nova_console_token_auth_impl::get_json_from_response(
std::pair<std::string, std::string> nova_console_token_auth_impl::get_auth_token_data_v2(
string osAuthUrl, string osUserName,
- string osPassword, string osTenantName,
+ string osPassword, string osProjectName,
string osRegion)
{
auto jsonRequestBody = json::value::object();
@@ -101,7 +111,7 @@ std::pair<std::string, std::string> nova_console_token_auth_impl::get_auth_token
cred[U("username")] = json::value::string(to_string_t(osUserName));
cred[U("password")] = json::value::string(to_string_t(osPassword));
auth[U("passwordCredentials")] = cred;
- auth[U("tenantName")] = json::value::string(to_string_t(osTenantName));
+ auth[U("tenantName")] = json::value::string(to_string_t(osProjectName));
jsonRequestBody[U("auth")] = auth;
http::http_request request(http::methods::POST);
request.set_request_uri(U("tokens"));
@@ -140,7 +150,10 @@ std::pair<std::string, std::string> nova_console_token_auth_impl::get_auth_token
std::pair<std::string, std::string> nova_console_token_auth_impl::get_auth_token_data_v3(
string osAuthUrl, string osUserName,
- string osPassword, string osTenantName,
+ string osPassword, string osProjectName,
+ string osProjectId,
+ string osProjectDomainName, string osUserDomainName,
+ string osProjectDomainId, string osUserDomainId,
string osRegion)
{
auto jsonRequestBody = json::value::object();
@@ -154,18 +167,37 @@ std::pair<std::string, std::string> nova_console_token_auth_impl::get_auth_token
user[U("name")] = json::value::string(to_string_t(osUserName));
user[U("password")] = json::value::string(to_string_t(osPassword));
- auto domain = json::value::object();
- domain[U("id")] = json::value::string(to_string_t("default"));
-
- user[U("domain")] = domain;
+ auto userDomain = json::value::object();
+ if (!osUserDomainId.empty()){
+ userDomain[U("id")] = json::value::string(to_string_t(osUserDomainId));
+ }
+ else{
+ userDomain[U("name")] = json::value::string(to_string_t(osUserDomainName));
+ }
+ user[U("domain")] = userDomain;
password[U("user")] = user;
identity[U("methods")] = methods;
identity[U("password")] = password;
auto scope = json::value::object();
auto project = json::value::object();
- project[U("name")] = json::value::string(to_string_t(osTenantName));
- project[U("domain")] = domain;
+ if (!osProjectId.empty())
+ {
+ project[U("id")] = json::value::string(to_string_t(osProjectId));
+ }
+ else if (!osProjectName.empty())
+ {
+ project[U("name")] = json::value::string(to_string_t(osProjectName));
+ }
+
+ auto projectDomain = json::value::object();
+ if (!osProjectDomainId.empty()){
+ projectDomain[U("id")] = json::value::string(to_string_t(osProjectDomainId));
+ }
+ else{
+ projectDomain[U("name")] = json::value::string(to_string_t(osProjectDomainName));
+ }
+ project[U("domain")] = projectDomain;
scope[U("project")] = project;
auth[U("identity")] = identity;
@@ -220,7 +252,10 @@ json::value nova_console_token_auth_impl::get_console_token_data(
nova_console_info nova_console_token_auth_impl::get_console_info(
std::string osAuthUrl, std::string osUserName,
- std::string osPassword, std::string osTenantName,
+ std::string osPassword,
+ std::string osProjectName, std::string osProjectId,
+ std::string osProjectDomainName, std::string osUserDomainName,
+ std::string osProjectDomainId, std::string osUserDomainId,
std::string consoleToken, std::string keystoneVersion,
std::string osRegion)
{
@@ -231,14 +266,19 @@ nova_console_info nova_console_token_auth_impl::get_console_info(
std::tie(authToken, novaUrl) = get_auth_token_data_v2(osAuthUrl,
osUserName,
osPassword,
- osTenantName,
+ osProjectName,
osRegion);
}
else if (keystoneVersion == KEYSTONE_V3){
std::tie(authToken, novaUrl) = get_auth_token_data_v3(osAuthUrl,
osUserName,
osPassword,
- osTenantName,
+ osProjectName,
+ osProjectId,
+ osProjectDomainName,
+ osUserDomainName,
+ osProjectDomainId,
+ osUserDomainId,
osRegion);
}
else{
diff --git a/wsgate/nova_token_auth.hpp b/wsgate/nova_token_auth.hpp
index d8f4332..1f6028e 100644
--- a/wsgate/nova_token_auth.hpp
+++ b/wsgate/nova_token_auth.hpp
@@ -68,7 +68,12 @@ namespace wsgate {
virtual nova_console_info get_console_info(std::string osAuthUrl,
std::string osUserName,
std::string osPassword,
- std::string osTenantName,
+ std::string osProjectName,
+ std::string osProjectId,
+ std::string osProjectDomainName,
+ std::string osUserDomainName,
+ std::string osProjectDomainId,
+ std::string osUserDomainId,
std::string consoleToken,
std::string keystoneVersion,
std::string osRegion) = 0;
diff --git a/wsgate/wsgate.ini.sample.in b/wsgate/wsgate.ini.sample.in
index c4a9c93..bcba7b3 100644
--- a/wsgate/wsgate.ini.sample.in
+++ b/wsgate/wsgate.ini.sample.in
@@ -156,6 +156,11 @@ nofullwindowdrag = true
#username = admin
#password = secret
#tenantname = admin
+#projectid = openstack project id
+#projectdomainid = project domain id, if ommited project domain name is used instead
+#userdomainid = user domain id, if ommited user domain name is used instead
+#projectdomainname = project domain name, if ommited "default" is used
+#userdomainname = user domain name, if ommited "default" is used
#region = optional region
[hyperv]
diff --git a/wsgate/wsgateEHS.cpp b/wsgate/wsgateEHS.cpp
index bd75806..581d365 100644
--- a/wsgate/wsgateEHS.cpp
+++ b/wsgate/wsgateEHS.cpp
@@ -286,7 +286,10 @@ namespace wsgate{
nova_console_token_auth* token_auth = nova_console_token_auth_factory::get_instance();
nova_console_info info = token_auth->get_console_info(m_sOpenStackAuthUrl, m_sOpenStackUsername,
- m_sOpenStackPassword, m_sOpenStackTenantName,
+ m_sOpenStackPassword, m_sOpenStackProjectName,
+ m_sOpenStackProjectId,
+ m_sOpenStackProjectDomainName, m_sOpenStackUserDomainName,
+ m_sOpenStackProjectDomainId, m_sOpenStackUserDomainId,
tokenId, m_sOpenStackKeystoneVersion, m_sOpenStackRegion);
log::info << "Host: " << info.host << " Port: " << info.port
@@ -915,9 +918,45 @@ namespace wsgate{
m_sOpenStackPassword.clear();
}
if (pt.get_optional<std::string>("openstack.tenantname")) {
- m_sOpenStackTenantName.assign(pt.get<std::string>("openstack.tenantname"));
+ m_sOpenStackProjectName.assign(pt.get<std::string>("openstack.tenantname"));
} else {
- m_sOpenStackTenantName.clear();
+ m_sOpenStackProjectName.clear();
+ }
+ if (pt.get_optional<std::string>("openstack.projectname")) {
+ m_sOpenStackProjectName.assign(pt.get<std::string>("openstack.projectname"));
+ }
+ else {
+ m_sOpenStackProjectName.clear();
+ }
+ if (pt.get_optional<std::string>("openstack.projectid")) {
+ m_sOpenStackProjectId.assign(pt.get<std::string>("openstack.projectid"));
+ }
+ else {
+ m_sOpenStackProjectId.clear();
+ }
+ if (pt.get_optional<std::string>("openstack.projectdomainname")) {
+ m_sOpenStackProjectDomainName.assign(pt.get<std::string>("openstack.projectdomainname"));
+ }
+ else {
+ m_sOpenStackProjectDomainName.assign("default");
+ }
+ if (pt.get_optional<std::string>("openstack.userdomainname")) {
+ m_sOpenStackUserDomainName.assign(pt.get<std::string>("openstack.userdomainname"));
+ }
+ else {
+ m_sOpenStackUserDomainName.assign("default");
+ }
+ if (pt.get_optional<std::string>("openstack.projectdomainid")) {
+ m_sOpenStackProjectDomainId.assign(pt.get<std::string>("openstack.projectdomainid"));
+ }
+ else {
+ m_sOpenStackProjectDomainId.clear();
+ }
+ if (pt.get_optional<std::string>("openstack.userdomainid")) {
+ m_sOpenStackUserDomainId.assign(pt.get<std::string>("openstack.userdomainid"));
+ }
+ else {
+ m_sOpenStackUserDomainId.clear();
}
if (pt.get_optional<std::string>("openstack.keystoneversion")) {
m_sOpenStackKeystoneVersion.assign(pt.get<std::string>("openstack.keystoneversion"));
diff --git a/wsgate/wsgateEHS.hpp b/wsgate/wsgateEHS.hpp
index 27499e5..bb5aef7 100644
--- a/wsgate/wsgateEHS.hpp
+++ b/wsgate/wsgateEHS.hpp
@@ -114,7 +114,12 @@ namespace wsgate{
string m_sOpenStackAuthUrl;
string m_sOpenStackUsername;
string m_sOpenStackPassword;
- string m_sOpenStackTenantName;
+ string m_sOpenStackProjectName;
+ string m_sOpenStackProjectId;
+ string m_sOpenStackProjectDomainName;
+ string m_sOpenStackUserDomainName;
+ string m_sOpenStackProjectDomainId;
+ string m_sOpenStackUserDomainId;
string m_sOpenStackKeystoneVersion;
string m_sOpenStackRegion;
string m_sHyperVHostUsername;