Skip to content

Commit f449cd7

Browse files
author
frank
committed
Bug 12771 - management-server.log displays ipmi related credentials in plain text
status 12771: resolved fixed
1 parent adaea57 commit f449cd7

5 files changed

Lines changed: 92 additions & 35 deletions

File tree

server/src/com/cloud/baremetal/BareMetalDiscoverer.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,8 @@
5454
import com.cloud.utils.component.Inject;
5555
import com.cloud.utils.exception.CloudRuntimeException;
5656
import com.cloud.utils.script.Script;
57+
import com.cloud.utils.script.Script2;
58+
import com.cloud.utils.script.Script2.ParamType;
5759
import com.cloud.vm.VMInstanceVO;
5860
import com.cloud.vm.VirtualMachine.State;
5961
import com.cloud.vm.dao.VMInstanceDao;
@@ -127,14 +129,14 @@ public Map<? extends ServerResource, Map<String, String>> find(long dcId, Long p
127129
+ injectScript);
128130
}
129131

130-
final Script command = new Script(scriptPath, s_logger);
132+
final Script2 command = new Script2(scriptPath, s_logger);
131133
command.add("ping");
132134
command.add("hostname="+ipmiIp);
133135
command.add("usrname="+username);
134-
command.add("password="+password);
136+
command.add("password="+password, ParamType.PASSWORD);
135137
final String result = command.execute();
136138
if (result != null) {
137-
s_logger.warn(String.format("Can not set up ipmi connection(ip=%1$s, username=%2$s, password=%3$s, args) because %4$s", ipmiIp, username, password, result));
139+
s_logger.warn(String.format("Can not set up ipmi connection(ip=%1$s, username=%2$s, password=%3$s, args) because %4$s", ipmiIp, username, "******", result));
138140
return null;
139141
}
140142

@@ -180,7 +182,7 @@ public Map<? extends ServerResource, Map<String, String>> find(long dcId, Long p
180182
_dcDao.update(zone.getId(), zone);
181183

182184
s_logger.debug(String.format("Discover Bare Metal host successfully(ip=%1$s, username=%2$s, password=%3%s," +
183-
"cpuNum=%4$s, cpuCapacity-%5$s, memCapacity=%6$s)", ipmiIp, username, password, cpuNum, cpuCapacity, memCapacity));
185+
"cpuNum=%4$s, cpuCapacity-%5$s, memCapacity=%6$s)", ipmiIp, username, "******", cpuNum, cpuCapacity, memCapacity));
184186
return resources;
185187
} catch (Exception e) {
186188
s_logger.warn("Can not set up bare metal agent", e);

server/src/com/cloud/baremetal/BareMetalResourceBase.java

Lines changed: 29 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,8 @@
6363
import com.cloud.utils.exception.CloudRuntimeException;
6464
import com.cloud.utils.script.OutputInterpreter;
6565
import com.cloud.utils.script.Script;
66+
import com.cloud.utils.script.Script2;
67+
import com.cloud.utils.script.Script2.ParamType;
6668
import com.cloud.vm.VirtualMachine;
6769
import com.cloud.vm.VirtualMachine.State;
6870

@@ -83,15 +85,15 @@ public class BareMetalResourceBase implements ServerResource {
8385
protected String _password;
8486
protected String _ip;
8587
protected IAgentControl _agentControl;
86-
protected Script _pingCommand;
87-
protected Script _setPxeBootCommand;
88-
protected Script _setDiskBootCommand;
89-
protected Script _rebootCommand;
90-
protected Script _getStatusCommand;
91-
protected Script _powerOnCommand;
92-
protected Script _powerOffCommand;
93-
protected Script _forcePowerOffCommand;
94-
protected Script _bootOrRebootCommand;
88+
protected Script2 _pingCommand;
89+
protected Script2 _setPxeBootCommand;
90+
protected Script2 _setDiskBootCommand;
91+
protected Script2 _rebootCommand;
92+
protected Script2 _getStatusCommand;
93+
protected Script2 _powerOnCommand;
94+
protected Script2 _powerOffCommand;
95+
protected Script2 _forcePowerOffCommand;
96+
protected Script2 _bootOrRebootCommand;
9597
protected String _vmName;
9698

9799
private void changeVmState(String vmName, VirtualMachine.State state) {
@@ -158,64 +160,64 @@ public boolean configure(String name, Map<String, Object> params) throws Configu
158160
if (scriptPath == null) {
159161
throw new ConfigurationException("Cannot find ping script " + scriptPath);
160162
}
161-
_pingCommand = new Script(scriptPath, s_logger);
163+
_pingCommand = new Script2(scriptPath, s_logger);
162164
_pingCommand.add("ping");
163165
_pingCommand.add("hostname="+_ip);
164166
_pingCommand.add("usrname="+_username);
165-
_pingCommand.add("password="+_password);
167+
_pingCommand.add("password="+_password, ParamType.PASSWORD);
166168

167-
_setPxeBootCommand = new Script(scriptPath, s_logger);
169+
_setPxeBootCommand = new Script2(scriptPath, s_logger);
168170
_setPxeBootCommand.add("boot_dev");
169171
_setPxeBootCommand.add("hostname="+_ip);
170172
_setPxeBootCommand.add("usrname="+_username);
171-
_setPxeBootCommand.add("password="+_password);
173+
_setPxeBootCommand.add("password="+_password, ParamType.PASSWORD);
172174
_setPxeBootCommand.add("dev=pxe");
173175

174-
_setDiskBootCommand = new Script(scriptPath, s_logger);
176+
_setDiskBootCommand = new Script2(scriptPath, s_logger);
175177
_setDiskBootCommand.add("boot_dev");
176178
_setDiskBootCommand.add("hostname="+_ip);
177179
_setDiskBootCommand.add("usrname="+_username);
178-
_setDiskBootCommand.add("password="+_password);
180+
_setDiskBootCommand.add("password="+_password, ParamType.PASSWORD);
179181
_setDiskBootCommand.add("dev=disk");
180182

181-
_rebootCommand = new Script(scriptPath, s_logger);
183+
_rebootCommand = new Script2(scriptPath, s_logger);
182184
_rebootCommand.add("reboot");
183185
_rebootCommand.add("hostname="+_ip);
184186
_rebootCommand.add("usrname="+_username);
185-
_rebootCommand.add("password="+_password);
187+
_rebootCommand.add("password="+_password, ParamType.PASSWORD);
186188

187-
_getStatusCommand = new Script(scriptPath, s_logger);
189+
_getStatusCommand = new Script2(scriptPath, s_logger);
188190
_getStatusCommand.add("ping");
189191
_getStatusCommand.add("hostname="+_ip);
190192
_getStatusCommand.add("usrname="+_username);
191-
_getStatusCommand.add("password="+_password);
193+
_getStatusCommand.add("password="+_password, ParamType.PASSWORD);
192194

193-
_powerOnCommand = new Script(scriptPath, s_logger);
195+
_powerOnCommand = new Script2(scriptPath, s_logger);
194196
_powerOnCommand.add("power");
195197
_powerOnCommand.add("hostname="+_ip);
196198
_powerOnCommand.add("usrname="+_username);
197-
_powerOnCommand.add("password="+_password);
199+
_powerOnCommand.add("password="+_password, ParamType.PASSWORD);
198200
_powerOnCommand.add("action=on");
199201

200-
_powerOffCommand = new Script(scriptPath, s_logger);
202+
_powerOffCommand = new Script2(scriptPath, s_logger);
201203
_powerOffCommand.add("power");
202204
_powerOffCommand.add("hostname="+_ip);
203205
_powerOffCommand.add("usrname="+_username);
204-
_powerOffCommand.add("password="+_password);
206+
_powerOffCommand.add("password="+_password, ParamType.PASSWORD);
205207
_powerOffCommand.add("action=soft");
206208

207-
_forcePowerOffCommand = new Script(scriptPath, s_logger);
209+
_forcePowerOffCommand = new Script2(scriptPath, s_logger);
208210
_forcePowerOffCommand.add("power");
209211
_forcePowerOffCommand.add("hostname=" + _ip);
210212
_forcePowerOffCommand.add("usrname=" + _username);
211-
_forcePowerOffCommand.add("password=" + _password);
213+
_forcePowerOffCommand.add("password=" + _password, ParamType.PASSWORD);
212214
_forcePowerOffCommand.add("action=off");
213215

214-
_bootOrRebootCommand = new Script(scriptPath, s_logger);
216+
_bootOrRebootCommand = new Script2(scriptPath, s_logger);
215217
_bootOrRebootCommand.add("boot_or_reboot");
216218
_bootOrRebootCommand.add("hostname="+_ip);
217219
_bootOrRebootCommand.add("usrname="+_username);
218-
_bootOrRebootCommand.add("password="+_password);
220+
_bootOrRebootCommand.add("password="+_password, ParamType.PASSWORD);
219221

220222
return true;
221223
}

server/src/com/cloud/baremetal/DhcpdResource.java

100644100755
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,11 @@ public boolean configure(String name, Map<String, Object> params) throws Configu
4040
com.trilead.ssh2.Connection sshConnection = null;
4141
try {
4242
super.configure(name, params);
43-
s_logger.debug(String.format("Trying to connect to DHCP server(IP=%1$s, username=%2$s, password=%3$s)", _ip, _username, _password));
43+
s_logger.debug(String.format("Trying to connect to DHCP server(IP=%1$s, username=%2$s, password=%3$s)", _ip, _username, "******"));
4444
sshConnection = SSHCmdHelper.acquireAuthorizedConnection(_ip, _username, _password);
4545
if (sshConnection == null) {
4646
throw new ConfigurationException(
47-
String.format("Cannot connect to DHCP server(IP=%1$s, username=%2$s, password=%3$s", _ip, _username, _password));
47+
String.format("Cannot connect to DHCP server(IP=%1$s, username=%2$s, password=%3$s", _ip, _username, "******"));
4848
}
4949

5050
if (!SSHCmdHelper.sshExecuteCmd(sshConnection, "[ -f '/usr/sbin/dhcpd' ]")) {

server/src/com/cloud/baremetal/PingPxeServerResource.java

100644100755
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,13 +87,13 @@ public boolean configure(String name, Map<String, Object> params) throws Configu
8787

8888
com.trilead.ssh2.Connection sshConnection = new com.trilead.ssh2.Connection(_ip, 22);
8989

90-
s_logger.debug(String.format("Trying to connect to PING PXE server(IP=%1$s, username=%2$s, password=%3$s", _ip, _username, _password));
90+
s_logger.debug(String.format("Trying to connect to PING PXE server(IP=%1$s, username=%2$s, password=%3$s", _ip, _username, "******"));
9191
try {
9292
sshConnection.connect(null, 60000, 60000);
9393
if (!sshConnection.authenticateWithPassword(_username, _password)) {
9494
s_logger.debug("SSH Failed to authenticate");
9595
throw new ConfigurationException(String.format("Cannot connect to PING PXE server(IP=%1$s, username=%2$s, password=%3$s", _ip, _username,
96-
_password));
96+
"******"));
9797
}
9898

9999
String cmd = String.format("[ -f /%1$s/pxelinux.0 ] && [ -f /%2$s/kernel ] && [ -f /%3$s/initrd.gz ] ", _tftpDir, _tftpDir, _tftpDir);
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
package com.cloud.utils.script;
2+
3+
4+
import java.util.HashMap;
5+
import org.apache.log4j.Logger;
6+
7+
8+
public class Script2 extends Script {
9+
HashMap<String, ParamType> _params = new HashMap<String, ParamType>();
10+
11+
public static enum ParamType {
12+
NORMAL,
13+
PASSWORD,
14+
}
15+
16+
public Script2(String command, Logger logger) {
17+
this(command, 0, logger);
18+
}
19+
20+
public Script2(String command, long timeout, Logger logger) {
21+
super(command, timeout, logger);
22+
}
23+
24+
public void add(String param, ParamType type) {
25+
_params.put(param, type);
26+
super.add(param);
27+
}
28+
29+
@Override
30+
public void add(String param) {
31+
add(param, ParamType.NORMAL);
32+
}
33+
34+
private ParamType getType(String cmd) {
35+
return _params.get(cmd);
36+
}
37+
38+
@Override
39+
protected String buildCommandLine(String[] command) {
40+
StringBuilder builder = new StringBuilder();
41+
for (int i = 0; i < command.length; i++) {
42+
String cmd = command[i];
43+
ParamType type = getType(cmd);
44+
if (type == ParamType.PASSWORD) {
45+
builder.append("******").append(" ");
46+
} else {
47+
builder.append(command[i]).append(" ");
48+
}
49+
}
50+
51+
return builder.toString();
52+
}
53+
}

0 commit comments

Comments
 (0)