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:
authorCosmin Munteanu <cmunteanu@cloudbasesolutions.com>2017-05-31 15:54:40 +0300
committerCosmin Munteanu <cmunteanu@cloudbasesolutions.com>2017-06-13 12:19:02 +0300
commitf8832812905df4d9f58ddd43c69f598bdfcc7712 (patch)
treee6a4815cc2bfc2a3c911578ab11aeb677b72566b
parentfe4880ae68e153ddffaee73fe73f08e629847a8c (diff)
Domain name and domain id
-rw-r--r--wsgate/nova_token_auth.cpp74
-rw-r--r--wsgate/nova_token_auth.hpp8
-rw-r--r--wsgate/wsgate.ini.sample.in4
-rw-r--r--wsgate/wsgateEHS.cpp38
-rw-r--r--wsgate/wsgateEHS.hpp6
5 files changed, 101 insertions, 29 deletions
diff --git a/wsgate/nova_token_auth.cpp b/wsgate/nova_token_auth.cpp
index 3974ec6..1ab139c 100644
--- a/wsgate/nova_token_auth.cpp
+++ b/wsgate/nova_token_auth.cpp
@@ -40,14 +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 osProjectID,
+ 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,
@@ -58,8 +62,12 @@ public:
virtual nova_console_info get_console_info(std::string osAuthUrl,
std::string osUserName,
std::string osPassword,
- std::string osTenantName,
- std::string osProjectID,
+ 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);
@@ -94,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();
@@ -103,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"));
@@ -142,8 +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 osProjectID,
+ string osPassword, string osProjectName,
+ string osProjectId,
+ string osProjectDomainName, string osUserDomainName,
+ string osProjectDomainId, string osUserDomainId,
string osRegion)
{
auto jsonRequestBody = json::value::object();
@@ -157,25 +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();
- if (!osTenantName.empty())
+ if (!osProjectId.empty())
{
- project[U("name")] = json::value::string(to_string_t(osTenantName));
+ project[U("id")] = json::value::string(to_string_t(osProjectId));
}
- if (!osProjectID.empty())
+ else if (!osProjectName.empty())
{
- project[U("id")] = json::value::string(to_string_t(osProjectID));
+ 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")] = domain;
+ project[U("domain")] = projectDomain;
scope[U("project")] = project;
auth[U("identity")] = identity;
@@ -230,8 +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 osProjectID,
+ 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)
{
@@ -242,15 +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,
- osProjectID,
+ osProjectName,
+ osProjectId,
+ osProjectDomainName,
+ osUserDomainName,
+ osProjectDomainId,
+ osUserDomainId,
osRegion);
}
else{
diff --git a/wsgate/nova_token_auth.hpp b/wsgate/nova_token_auth.hpp
index 5238b01..1f6028e 100644
--- a/wsgate/nova_token_auth.hpp
+++ b/wsgate/nova_token_auth.hpp
@@ -68,8 +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 osProjectID,
+ 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 bc7833c..bcba7b3 100644
--- a/wsgate/wsgate.ini.sample.in
+++ b/wsgate/wsgate.ini.sample.in
@@ -157,6 +157,10 @@ nofullwindowdrag = true
#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 1b77eaa..581d365 100644
--- a/wsgate/wsgateEHS.cpp
+++ b/wsgate/wsgateEHS.cpp
@@ -286,8 +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
@@ -916,9 +918,15 @@ 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"));
@@ -926,6 +934,30 @@ namespace wsgate{
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 cc3cae3..bb5aef7 100644
--- a/wsgate/wsgateEHS.hpp
+++ b/wsgate/wsgateEHS.hpp
@@ -114,8 +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;