/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package be.neutrinet.ispng.vpn.api;
import be.neutrinet.ispng.vpn.ClientError;
import be.neutrinet.ispng.vpn.IPAddress;
import be.neutrinet.ispng.vpn.IPAddresses;
import org.apache.log4j.Logger;
import org.restlet.ext.jackson.JacksonRepresentation;
import org.restlet.representation.Representation;
import org.restlet.resource.Get;
import org.restlet.resource.Put;
import java.sql.SQLException;
import java.util.Map;
/**
* @author wannes
*/
public class AddressPool extends ResourceBase {
@Put
public Representation addAddressesToPool(Map<String, Object> data) {
int version = (int) data.get("version");
String subnet = (String) data.get("subnet");
String purpose = data.get("purpose").toString();
if (purpose == null) purpose = IPAddress.Purpose.CLIENT_ASSIGN;
int v6prefix = 64;
if (data.containsKey("v6prefix")) v6prefix = (int) data.get("v6prefix");
try {
switch (version) {
case 4:
IPAddresses.addv4SubnetToPool(subnet, purpose);
return DEFAULT_SUCCESS;
case 6:
IPAddresses.addv6SubnetToPool(subnet, purpose, v6prefix);
return DEFAULT_SUCCESS;
default:
return new JacksonRepresentation(new ClientError("ILLEGAL_INPUT"));
}
} catch (NumberFormatException ex) {
return new JacksonRepresentation(new ClientError("ILLEGAL_INPUT", ex));
}
}
@Get
public Representation getAddressPool() {
try {
return new JacksonRepresentation(IPAddresses.dao.queryForAll());
} catch (SQLException ex) {
Logger.getLogger(getClass()).error("Failed to get address pool details", ex);
}
return error();
}
}