hsadmin email address
This commit is contained in:
parent
9e036e98b7
commit
ab010e0560
@ -0,0 +1,98 @@
|
||||
package de.jalin.ldapadmin.hsadmin;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.Serializable;
|
||||
import java.net.URL;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.apache.xmlrpc.XmlRpcException;
|
||||
import org.apache.xmlrpc.client.XmlRpcClient;
|
||||
import org.apache.xmlrpc.client.XmlRpcClientConfigImpl;
|
||||
|
||||
public class EMailAddressDAO {
|
||||
|
||||
private TicketProvider ticketBox;
|
||||
private XmlRpcClient rpcClient;
|
||||
|
||||
public EMailAddressDAO(final TicketProvider ticketBox) throws IOException {
|
||||
this.ticketBox = ticketBox;
|
||||
final XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl();
|
||||
config.setServerURL(new URL("https://config.hostsharing.net:443/hsar/xmlrpc/hsadmin"));
|
||||
config.setEnabledForExtensions(true);
|
||||
this.rpcClient = new XmlRpcClient();
|
||||
this.rpcClient.setConfig(config);
|
||||
}
|
||||
|
||||
public void assertEMailAddressExists(final String emailAddress, final String target) throws IOException, XmlRpcException, EMailAddressNotFound {
|
||||
final String[] parts = emailAddress.split("@");
|
||||
if (parts.length == 2) {
|
||||
final String localpart = parts[0];
|
||||
final String domain = parts[1];
|
||||
final String pac = ticketBox.getAdminLogin();
|
||||
try {
|
||||
getEMailAddress(pac, localpart, domain);
|
||||
updateEMailAddress(pac, localpart, domain, target);
|
||||
} catch (EMailAddressNotFound e) {
|
||||
createEMailAddress(pac, localpart, domain, target);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private String createEMailAddress(String pac, String localpart, String domain, String target) throws EMailAddressNotFound, XmlRpcException, IOException {
|
||||
final List<Serializable> xmlRpcParamsList = new ArrayList<Serializable>();
|
||||
xmlRpcParamsList.add(pac);
|
||||
xmlRpcParamsList.add(ticketBox.getTicket());
|
||||
final HashMap<String, Serializable> setParamsMap = new HashMap<String, Serializable>();
|
||||
xmlRpcParamsList.add(setParamsMap);
|
||||
setParamsMap.put("localpart", localpart);
|
||||
setParamsMap.put("domain", domain);
|
||||
setParamsMap.put("target", target);
|
||||
final Object[] rpcResult = (Object[])rpcClient.execute("emailaddress.add", xmlRpcParamsList);
|
||||
if (rpcResult.length == 1) {
|
||||
@SuppressWarnings("unchecked")
|
||||
final Map<String, Object> emailAddressMap = (Map<String, Object>) rpcResult[0];
|
||||
return (String) emailAddressMap.get("emailaddress");
|
||||
}
|
||||
throw new EMailAddressNotFound();
|
||||
}
|
||||
|
||||
private String updateEMailAddress(String pac, String localpart, String domain, String target) throws IOException, XmlRpcException, EMailAddressNotFound {
|
||||
final List<Serializable> xmlRpcParamsList = new ArrayList<Serializable>();
|
||||
xmlRpcParamsList.add(pac);
|
||||
xmlRpcParamsList.add(ticketBox.getTicket());
|
||||
final HashMap<String, Serializable> whereParamsMap = new HashMap<String, Serializable>();
|
||||
xmlRpcParamsList.add(whereParamsMap);
|
||||
final HashMap<String, Serializable> setParamsMap = new HashMap<String, Serializable>();
|
||||
xmlRpcParamsList.add(setParamsMap);
|
||||
whereParamsMap.put("localpart", localpart);
|
||||
whereParamsMap.put("domain", domain);
|
||||
setParamsMap.put("target", target);
|
||||
final Object[] rpcResult = (Object[])rpcClient.execute("emailaddress.update", xmlRpcParamsList);
|
||||
if (rpcResult.length == 1) {
|
||||
@SuppressWarnings("unchecked")
|
||||
final Map<String, Object> emailAddressMap = (Map<String, Object>) rpcResult[0];
|
||||
return (String) emailAddressMap.get("emailaddress");
|
||||
}
|
||||
throw new EMailAddressNotFound();
|
||||
}
|
||||
|
||||
private String getEMailAddress(String pac, String localpart, String domain) throws EMailAddressNotFound, IOException, XmlRpcException {
|
||||
final List<Serializable> xmlRpcParamsList = new ArrayList<Serializable>();
|
||||
xmlRpcParamsList.add(pac);
|
||||
xmlRpcParamsList.add(ticketBox.getTicket());
|
||||
final HashMap<String, Serializable> whereParamsMap = new HashMap<String, Serializable>();
|
||||
xmlRpcParamsList.add(whereParamsMap);
|
||||
whereParamsMap.put("localpart", localpart);
|
||||
whereParamsMap.put("domain", domain);
|
||||
final Object[] rpcResult = (Object[])rpcClient.execute("emailaddress.search", xmlRpcParamsList);
|
||||
if (rpcResult.length == 1) {
|
||||
@SuppressWarnings("unchecked")
|
||||
final Map<String, Object> emailAddressMap = (Map<String, Object>) rpcResult[0];
|
||||
return (String) emailAddressMap.get("emailaddress");
|
||||
}
|
||||
throw new EMailAddressNotFound();
|
||||
}
|
||||
}
|
@ -0,0 +1,7 @@
|
||||
package de.jalin.ldapadmin.hsadmin;
|
||||
|
||||
public class EMailAddressNotFound extends Exception {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user