Skip to content

Commit 384bce1

Browse files
committed
update without decrypt doesn't work
1 parent 5fcadbc commit 384bce1

2 files changed

Lines changed: 61 additions & 13 deletions

File tree

engine/schema/resources/META-INF/db/schema-41100to41110.sql

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -91,15 +91,3 @@ INSERT IGNORE INTO `cloud`.`guest_os_hypervisor` (uuid,hypervisor_type, hypervis
9191
-- XCP-NG 7.4
9292
INSERT IGNORE INTO `cloud`.`hypervisor_capabilities`(uuid, hypervisor_type, hypervisor_version, max_guests_limit, max_data_volumes_limit, storage_motion_supported) values (UUID(), 'XenServer', 'XCP-ng 7.4.0', 500, 13, 1);
9393
INSERT IGNORE INTO `cloud`.`guest_os_hypervisor` (uuid,hypervisor_type, hypervisor_version, guest_os_name, guest_os_id, created, is_user_defined) SELECT UUID(),'Xenserver', 'XCP-ng 7.4.0', guest_os_name, guest_os_id, utc_timestamp(), 0 FROM `cloud`.`guest_os_hypervisor` WHERE hypervisor_type='Xenserver' AND hypervisor_version='7.4.0';
94-
95-
UPDATE `cloud`.`configuration` SET `category`='Advanced' WHERE `name`='ldap.basedn';
96-
UPDATE `cloud`.`configuration` SET `category`='Advanced' WHERE `name`='ldap.bind.principal';
97-
UPDATE `cloud`.`configuration` SET `category`='Advanced' WHERE `name`='ldap.email.attribute';
98-
UPDATE `cloud`.`configuration` SET `category`='Advanced' WHERE `name`='ldap.firstname.attribute';
99-
UPDATE `cloud`.`configuration` SET `category`='Advanced' WHERE `name`='ldap.group.object';
100-
UPDATE `cloud`.`configuration` SET `category`='Advanced' WHERE `name`='ldap.group.user.uniquemember';
101-
UPDATE `cloud`.`configuration` SET `category`='Advanced' WHERE `name`='ldap.lastname.attribute';
102-
UPDATE `cloud`.`configuration` SET `category`='Advanced' WHERE `name`='ldap.search.group.principle';
103-
UPDATE `cloud`.`configuration` SET `category`='Advanced' WHERE `name`='ldap.truststore';
104-
UPDATE `cloud`.`configuration` SET `category`='Advanced' WHERE `name`='ldap.user.object';
105-
UPDATE `cloud`.`configuration` SET `category`='Advanced' WHERE `name`='ldap.username.attribute';

engine/schema/src/com/cloud/upgrade/dao/Upgrade41100to41110.java

Lines changed: 61 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919

2020
package com.cloud.upgrade.dao;
2121

22-
import java.io.InputStream;
22+
import java.io.*;
2323
import java.sql.Connection;
2424
import java.sql.PreparedStatement;
2525
import java.sql.ResultSet;
@@ -29,6 +29,7 @@
2929
import java.util.Map;
3030
import java.util.Set;
3131

32+
import com.cloud.utils.crypt.*;
3233
import org.apache.log4j.Logger;
3334

3435
import com.cloud.hypervisor.Hypervisor;
@@ -66,6 +67,65 @@ public InputStream[] getPrepareScripts() {
6667
@Override
6768
public void performDataMigration(Connection conn) {
6869
updateSystemVmTemplates(conn);
70+
markUnnecessarySecureConfigsAsUnsecure(conn);
71+
}
72+
73+
private void markUnnecessarySecureConfigsAsUnsecure(Connection conn) {
74+
String[] unsecureItems = new String[] {
75+
"ldap.basedn",
76+
"ldap.bind.principal",
77+
"ldap.email.attribute",
78+
"ldap.firstname.attribute",
79+
"ldap.group.object",
80+
"ldap.group.user.uniquemember",
81+
"ldap.lastname.attribute",
82+
"ldap.search.group.principle",
83+
"ldap.truststore",
84+
"ldap.user.object",
85+
"ldap.username.attribute"
86+
};
87+
88+
for (String name : unsecureItems) {
89+
uncrypt(conn, name);
90+
}
91+
}
92+
93+
/**
94+
* if encrypted, decrypt the ldap hostname and port and then update as they are not encrypted now.
95+
*/
96+
private void uncrypt(Connection conn, String name)
97+
{
98+
String value = null;
99+
try (
100+
PreparedStatement prepSelStmt = conn.prepareStatement("SELECT conf.category,conf.value FROM `cloud`.`configuration` conf WHERE conf.name= ?");
101+
) {
102+
prepSelStmt.setString(1,name);
103+
try (
104+
ResultSet resultSet = prepSelStmt.executeQuery();
105+
) {
106+
if (resultSet.next()) {
107+
if ("Secure".equals(resultSet.getString(1))) {
108+
value = DBEncryptionUtil.decrypt(resultSet.getString(2));
109+
try (
110+
PreparedStatement prepUpdStmt= conn.prepareStatement("UPDATE `cloud`.`configuration` set category = 'Advanced', value = ? where name is ?" );
111+
) {
112+
prepUpdStmt.setString(1, value);
113+
prepUpdStmt.setString(2, name);
114+
prepUpdStmt.execute();
115+
} catch (SQLException e) {
116+
if (LOG.isInfoEnabled()) {
117+
LOG.info("failed to update configuration item '"+name+"' with value '"+value+"'");
118+
if (LOG.isDebugEnabled()) {
119+
LOG.debug("");
120+
}
121+
}
122+
}
123+
}
124+
}
125+
}
126+
} catch (SQLException e) {
127+
throw new CloudRuntimeException("failed to update configuration item '"+name+"' with value '"+value+"'", e);
128+
}
69129
}
70130

71131
@SuppressWarnings("serial")

0 commit comments

Comments
 (0)