|
|
@@ -11,7 +11,8 @@ import org.glassfish.grizzly.http.server.Request; |
|
|
|
import org.glassfish.jersey.server.ContainerRequest; |
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
|
|
|
|
import static bubble.ApiConstants.getRemoteAddr; |
|
|
|
import static bubble.service.device.FlexRouterService.pingFlexRouter; |
|
|
|
import static org.cobbzilla.util.json.JsonUtil.COMPACT_MAPPER; |
|
|
|
import static org.cobbzilla.util.json.JsonUtil.json; |
|
|
|
import static org.cobbzilla.wizard.resources.ResourceUtil.invalidEx; |
|
|
|
import static org.cobbzilla.wizard.resources.ResourceUtil.userPrincipal; |
|
|
@@ -28,33 +29,21 @@ public class FlexRoutersResource extends AccountOwnedResource<FlexRouter, FlexRo |
|
|
|
return !caller.admin(); |
|
|
|
} |
|
|
|
|
|
|
|
@Override protected FlexRouter findAlternate(Request req, ContainerRequest ctx, FlexRouter request) { |
|
|
|
final String remoteAddr = getRemoteAddr(req); |
|
|
|
return getDao().findByAccountAndIp(account.getUuid(), remoteAddr); |
|
|
|
} |
|
|
|
|
|
|
|
@Override protected FlexRouter setReferences(ContainerRequest ctx, Request req, Account caller, FlexRouter router) { |
|
|
|
|
|
|
|
if (!router.hasProxyPort()) { |
|
|
|
log.error("setReferences: no proxy port provided"); |
|
|
|
throw invalidEx("err.proxyPort.required"); |
|
|
|
} |
|
|
|
if (!router.hasProxyPort()) throw invalidEx("err.proxyPort.required"); |
|
|
|
router.setPort(router.getProxy_port()); |
|
|
|
|
|
|
|
final String ip = router.getIp(); |
|
|
|
final Device device = deviceService.findDeviceByIp(ip); |
|
|
|
if (device == null) { |
|
|
|
log.error("setReferences: device not found: "+ip); |
|
|
|
throw invalidEx("err.device.notFound"); |
|
|
|
} |
|
|
|
log.info("setReferences: found device with ip="+ip+": "+device.getUuid()); |
|
|
|
|
|
|
|
// todo: send verification request to IP |
|
|
|
if (device == null) throw invalidEx("err.device.notFound"); |
|
|
|
|
|
|
|
if (!router.hasAuthToken()) { |
|
|
|
log.error("setReferences: no auth_token provided"); |
|
|
|
if (pingFlexRouter(router).inactive()) { |
|
|
|
log.info("setReferences: router not active: "+json(router, COMPACT_MAPPER)); |
|
|
|
throw invalidEx("err.token.required"); |
|
|
|
} |
|
|
|
|
|
|
|
if (!router.hasAuthToken()) throw invalidEx("err.token.required"); |
|
|
|
router.setToken(router.getAuth_token()); |
|
|
|
|
|
|
|
log.info("setReferences: FlexRouter=\n"+json(router)+"\n"); |
|
|
|