diff --git a/bubble-server/src/main/java/bubble/dao/device/FlexRouterDAO.java b/bubble-server/src/main/java/bubble/dao/device/FlexRouterDAO.java index 3827b0ab..217fab64 100644 --- a/bubble-server/src/main/java/bubble/dao/device/FlexRouterDAO.java +++ b/bubble-server/src/main/java/bubble/dao/device/FlexRouterDAO.java @@ -18,4 +18,8 @@ public class FlexRouterDAO extends AccountOwnedEntityDAO { isNotNull("token")))); } + public FlexRouter findByAccountAndIp(String accountUuid, String ip) { + return findByUniqueFields("account", accountUuid, "ip", ip); + } + } diff --git a/bubble-server/src/main/java/bubble/model/device/FlexRouter.java b/bubble-server/src/main/java/bubble/model/device/FlexRouter.java index da3981f6..37a28526 100644 --- a/bubble-server/src/main/java/bubble/model/device/FlexRouter.java +++ b/bubble-server/src/main/java/bubble/model/device/FlexRouter.java @@ -10,6 +10,7 @@ import lombok.ToString; import lombok.experimental.Accessors; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.map.SingletonMap; +import org.cobbzilla.util.collection.ArrayUtil; import org.cobbzilla.wizard.model.Identifiable; import org.cobbzilla.wizard.model.IdentifiableBase; import org.cobbzilla.wizard.model.entityconfig.EntityFieldMode; @@ -32,8 +33,8 @@ import static org.cobbzilla.util.reflect.ReflectionUtil.copy; @ECIndexes({ @ECIndex(unique=true, of={"account", "ip"}) }) public class FlexRouter extends IdentifiableBase implements HasAccountNoName { - public static final String[] CREATE_FIELDS = { "ip", "enabled" }; - public static final String[] UPDATE_FIELDS = { "enabled" }; + public static final String[] UPDATE_FIELDS = { "enabled", "active" }; + public static final String[] CREATE_FIELDS = ArrayUtil.append(UPDATE_FIELDS, "ip"); public FlexRouter (FlexRouter other) { copy(this, other, CREATE_FIELDS); } @@ -75,10 +76,11 @@ public class FlexRouter extends IdentifiableBase implements HasAccountNoName { @JsonIgnore @Getter @Setter private String token; public boolean hasToken () { return !empty(token); } - @Transient @Getter @Setter private String serverToken; + // used for sending the token, we never send it back + @Transient @Getter @Setter private String auth_token; + public boolean hasAuthToken () { return !empty(auth_token); } public String pingUrl() { return "http://" + getIp() + ":" + getPort() + "/ping"; } - public String pingObject() { return json(new SingletonMap("token", getToken())); } } diff --git a/bubble-server/src/main/java/bubble/resources/account/AccountOwnedResource.java b/bubble-server/src/main/java/bubble/resources/account/AccountOwnedResource.java index bae25fc1..148fd7b0 100644 --- a/bubble-server/src/main/java/bubble/resources/account/AccountOwnedResource.java +++ b/bubble-server/src/main/java/bubble/resources/account/AccountOwnedResource.java @@ -91,16 +91,26 @@ public class AccountOwnedResource populate(ContainerRequest ctx, List entities) { for (E e : entities) populate(ctx, e); @@ -110,14 +120,15 @@ public class AccountOwnedResource { @@ -34,29 +27,22 @@ public class FlexRoutersResource extends AccountOwnedResource