diff --git a/pom.xml b/pom.xml
index a6354af..c297b46 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
com.bwssystems.HABridge
ha-bridge
- 4.5.0rc1
+ 4.5.0rc2
jar
HA Bridge
diff --git a/src/main/java/com/bwssystems/HABridge/BridgeSecurity.java b/src/main/java/com/bwssystems/HABridge/BridgeSecurity.java
index 75a70ef..5b61025 100644
--- a/src/main/java/com/bwssystems/HABridge/BridgeSecurity.java
+++ b/src/main/java/com/bwssystems/HABridge/BridgeSecurity.java
@@ -51,7 +51,8 @@ public class BridgeSecurity {
} catch (IOException e) {
anError = e.getMessage();
}
- log.warn("Cound not get security data, using default security (none): " + anError);
+ if(anError != null)
+ log.warn("Cound not get security data, using default security (none): " + anError);
}
if(theData == null || anError != null) {
diff --git a/src/main/java/com/bwssystems/HABridge/BridgeSettings.java b/src/main/java/com/bwssystems/HABridge/BridgeSettings.java
index 2c8b2e2..6c4d63f 100644
--- a/src/main/java/com/bwssystems/HABridge/BridgeSettings.java
+++ b/src/main/java/com/bwssystems/HABridge/BridgeSettings.java
@@ -186,8 +186,6 @@ public class BridgeSettings extends BackupHandler {
theBridgeSettings.setWebaddress(serverIpOverride);
setupParams(Paths.get(theBridgeSettings.getConfigfile()), ".cfgbk", "habridge.config-");
- setupInternalTestUser();
-
bridgeSecurity.setSecurityData(theBridgeSettings.getSecurityData());
}
@@ -338,9 +336,4 @@ public class BridgeSettings extends BackupHandler {
}
return addressString;
}
- private void setupInternalTestUser() {
- theBridgeSettings.setupInternalTestUser();
- if(theBridgeSettings.isSettingsChanged())
- this.updateConfigFile();
- }
}
diff --git a/src/main/java/com/bwssystems/HABridge/BridgeSettingsDescriptor.java b/src/main/java/com/bwssystems/HABridge/BridgeSettingsDescriptor.java
index 019d7a3..593d08f 100644
--- a/src/main/java/com/bwssystems/HABridge/BridgeSettingsDescriptor.java
+++ b/src/main/java/com/bwssystems/HABridge/BridgeSettingsDescriptor.java
@@ -4,6 +4,7 @@ import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import java.util.Map.Entry;
import java.util.Set;
import java.util.StringTokenizer;
import java.util.UUID;
@@ -14,8 +15,8 @@ import com.bwssystems.HABridge.api.hue.HueErrorResponse;
import com.bwssystems.HABridge.api.hue.WhitelistEntry;
public class BridgeSettingsDescriptor {
- private static final String DEFAULT_INTERNAL_USER = "thehabridgeuser";
- private static final String DEFAULT_USER_DESCRIPTION = "default_test_user";
+ private static final String DEPRACATED_INTERNAL_USER = "thehabridgeuser";
+ private static final String TEST_USER_TYPE = "test_ha_bridge";
private String upnpconfigaddress;
private Integer serverport;
private Integer upnpresponseport;
@@ -403,11 +404,17 @@ public class BridgeSettingsDescriptor {
if (!found) {
return HueErrorResponse.createResponse("1", "/api/" + aUser, "unauthorized user", null, null, null).getTheErrors();
}
+
+ Object anUser = whitelist.remove(DEPRACATED_INTERNAL_USER);
+ if(anUser != null)
+ setSettingsChanged(true);
return null;
}
public void newWhitelistUser(String aUser, String userDescription) {
+ if(aUser.equals(DEPRACATED_INTERNAL_USER))
+ return;
if (whitelist == null) {
whitelist = new HashMap<>();
}
@@ -434,23 +441,22 @@ public class BridgeSettingsDescriptor {
return newUser;
}
+
+ public void removeTestUsers() {
+ if (whitelist != null) {
+ Object anUser = whitelist.remove(DEPRACATED_INTERNAL_USER);
+ if(anUser != null)
+ setSettingsChanged(true);
- public String getInternalTestUser() {
- return DEFAULT_INTERNAL_USER;
- }
-
- public void setupInternalTestUser() {
- boolean found = false;
- if(whitelist != null) {
- for (String key : whitelist.keySet()) {
- if(key.equals(DEFAULT_INTERNAL_USER)) {
- found = true;
- break;
- }
- }
- }
- if(!found) {
- newWhitelistUser(DEFAULT_INTERNAL_USER, DEFAULT_USER_DESCRIPTION);
+ Iterator> it = whitelist.entrySet().iterator();
+ while (it.hasNext()) {
+ Map.Entry pair = it.next();
+ it.remove(); // avoids a ConcurrentModificationException
+ if(pair.getValue().getName().equals(TEST_USER_TYPE)) {
+ whitelist.remove(pair.getKey());
+ setSettingsChanged(true);
+ }
+ }
}
}
}
diff --git a/src/main/java/com/bwssystems/HABridge/HABridge.java b/src/main/java/com/bwssystems/HABridge/HABridge.java
index 2bd2aaa..5f1be45 100644
--- a/src/main/java/com/bwssystems/HABridge/HABridge.java
+++ b/src/main/java/com/bwssystems/HABridge/HABridge.java
@@ -102,6 +102,9 @@ public class HABridge {
}
}
}
+ bridgeSettings.getBridgeSettingsDescriptor().removeTestUsers();
+ if(bridgeSettings.getBridgeSettingsDescriptor().isSettingsChanged())
+ bridgeSettings.updateConfigFile();
log.info("HA Bridge (v" + theVersion.getVersion() + ") exiting....");
System.exit(0);
}
diff --git a/src/main/java/com/bwssystems/HABridge/SystemControl.java b/src/main/java/com/bwssystems/HABridge/SystemControl.java
index f81d977..ef241c7 100644
--- a/src/main/java/com/bwssystems/HABridge/SystemControl.java
+++ b/src/main/java/com/bwssystems/HABridge/SystemControl.java
@@ -78,14 +78,6 @@ public class SystemControl {
return "{\"version\":\"" + version.getVersion() + "\",\"isSecure\":" + bridgeSettings.getBridgeSecurity().isSecure() + "}";
});
- // http://ip_address:port/system/habridge/testuser gets the valid test user for calling the api
- get (SYSTEM_CONTEXT + "/habridge/testuser", (request, response) -> {
- log.debug("Get HA Bridge testuser: " + bridgeSettings.getBridgeSettingsDescriptor().getInternalTestUser());
- response.status(HttpStatus.SC_OK);
- response.type("application/json");
- return "{\"user\":\"" + bridgeSettings.getBridgeSettingsDescriptor().getInternalTestUser() + "\"}";
- });
-
// http://ip_address:port/system/logmsgs gets the log messages for the bridge
get (SYSTEM_CONTEXT + "/logmsgs", (request, response) -> {
log.debug("Get logmsgs.");
diff --git a/src/main/resources/public/scripts/app.js b/src/main/resources/public/scripts/app.js
index 69519ad..686f3d7 100644
--- a/src/main/resources/public/scripts/app.js
+++ b/src/main/resources/public/scripts/app.js
@@ -84,7 +84,6 @@ app.run( async function ($rootScope, $location, Auth, bridgeService) {
Auth.init();
if(Auth.isLoggedIn()) {
bridgeService.loadBridgeSettings();
- bridgeService.getTestUser();
bridgeService.getSecurityInfo();
bridgeService.viewMapTypes();
$location.path("/");
@@ -237,12 +236,25 @@ app.service ('bridgeService', function ($rootScope, $http, $base64, $location, n
};
this.getTestUser = function () {
- return $http.get(this.state.systemsbase + "/habridge/testuser").then(
+ if(self.state.testuser === undefined || self.state.testuser === "") {
+ return $http.put(this.state.systemsbase + "/presslinkbutton").then(
+ function (response) {
+ self.getAUser();
+ },
+ function (error) {
+ self.displayWarn("Cannot get testuser: ", error);
+ }
+ );
+ }
+ };
+
+ this.getAUser = function () {
+ return $http.post(this.state.huebase, "{\"devicetype\":\"test_ha_bridge\"}").then(
function (response) {
- self.state.testuser = response.data.user;
+ self.state.testuser = response.data[0].success.username;
},
function (error) {
- self.displayWarn("Cannot get testuser: ", error);
+ self.displayWarn("Cannot get a user: ", error);
}
);
};
@@ -251,6 +263,7 @@ app.service ('bridgeService', function ($rootScope, $http, $base64, $location, n
return $http.get(this.state.systemsbase + "/securityinfo").then(
function (response) {
self.state.securityInfo = response.data;
+ self.getTestUser();
},
function (error) {
self.displayWarn("Cannot get security info: ", error);