Hola a todos,
Por favor su ayuda,
Tengo instalado Zimbra Open Source (zcs-8.8.7_GA_1964.RHEL7_64.20180223145016) en CentOS 7, y quiero saber cómo crear cuentas de Zimbra desde una aplicación de terceros.
He visto en foros que se puede importar jars de Zimbra, pero no sé desde qué ruta se pueden descargar dichos jars.
Por favor si alguien me puede indicar.
Les agradezco de antemano por su ayuda.
import com.zimbra.common.service.ServiceException;
import com.zimbra.cs.service.account.AccountService;
import com.zimbra.cs.service.admin.AdminService;
import com.zimbra.soap.Element;
import com.zimbra.soap.SoapFaultException;
import com.zimbra.soap.SoapHttpTransport;
import com.zimbra.soap.ZimbraSoapContext;
import com.zimbra.common.soap.Element;
import com.zimbra.cs.account.Account;
Ruta para descargar jar de Zimbra
Re: Ruta para descargar jar de Zimbra
Ha sido desde /opt/zimbra/lib/jars
archivos zimbrastore.jar y zimbracommon.jar
import com.zimbra.common.service.ServiceException; //zimbracommon.jar
import com.zimbra.cs.service.account.AccountService; //zimbrastore.jar
import com.zimbra.cs.service.admin.AdminService; //zimbrastore.jar
import com.zimbra.common.soap.Element; //zimbracommon.jar
import com.zimbra.common.soap.SoapFaultException; //zimbracommon.jar
import com.zimbra.common.soap.SoapHttpTransport; //zimbracommon.jar
import com.zimbra.soap.ZimbraSoapContext; //zimbrastore.jar
import com.zimbra.cs.account.Account; //zimbrastore.jar
archivos zimbrastore.jar y zimbracommon.jar
import com.zimbra.common.service.ServiceException; //zimbracommon.jar
import com.zimbra.cs.service.account.AccountService; //zimbrastore.jar
import com.zimbra.cs.service.admin.AdminService; //zimbrastore.jar
import com.zimbra.common.soap.Element; //zimbracommon.jar
import com.zimbra.common.soap.SoapFaultException; //zimbracommon.jar
import com.zimbra.common.soap.SoapHttpTransport; //zimbracommon.jar
import com.zimbra.soap.ZimbraSoapContext; //zimbrastore.jar
import com.zimbra.cs.account.Account; //zimbrastore.jar
Re: Ruta para descargar jar de Zimbra
A continuación código para crear cuenta de usuario de email en Zimbra desde una aplicación en java, por si acaso a alguien le sirva:
importé los jars de a continuación desde el /opt/zimbra/lib/jars
import com.zimbra.common.service.ServiceException; //zimbracommon.jar
import com.zimbra.cs.service.account.AccountService; //zimbrastore.jar
import com.zimbra.cs.service.admin.AdminService; //zimbrastore.jar
import com.zimbra.cs.servlet.ZimbraServlet;
import com.zimbra.common.soap.Element; //zimbracommon.jar //
import com.zimbra.common.soap.SoapFaultException; //zimbracommon.jar //
import com.zimbra.common.soap.SoapHttpTransport; //zimbracommon.jar //
import com.zimbra.soap.ZimbraSoapContext; //zimbrastore.jar
import com.zimbra.cs.account.Account; //zimbrastore.jar
import com.zimbra.cs.account.soap.SoapProvisioning;
import com.zimbra.cs.account.soap.SoapProvisioning.Options;
import java.io.IOException;
import com.zimbra.common.soap.AccountConstants;
import com.zimbra.common.soap.SoapFaultException;
import com.zimbra.cs.account.auth.AuthContext.Protocol;
import java.util.Properties;
import java.io.FileInputStream;
import java.net.URL;
public void createAccount(String cuenta, String passwordCuenta) throws Exception{
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
* PARA QUE PUEDA ACCEDER AL LINK HTTPS
*/
Properties config = new Properties();
URL url = getClass().getResource("/wsaa/properties/wsaa_client.properties"); //archivo donde esta la clave del truststore.jks
URL urlJKS = getClass().getResource("/wsaa/certs/truststore.jks"); //pase a producción cambiar a truststoreProd.jks
config.load(new FileInputStream(url.getPath()));
String keyStorePath = config.getProperty("trustStore",""); //nombre que esta en el archivo wsaa_client.properties hace referencia a la ruta donde esta el truststore.jks
String keyStorePass = config.getProperty("trustStore_password"); //nombre que esta en el archivo wsaa_client.properties hace referencia al password del truststore.jks
keyStorePath = urlJKS.getPath();
System.getProperties().put("javax.net.ssl.trustStore", keyStorePath);
System.getProperties().put("javax.net.ssl.trustStorePassword",keyStorePass);
System.getProperties().put("javax.net.ssl.trustStoreType", "JKS");
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
SoapProvisioning sp = null;
Account createAccount = null;
try {
sp = new SoapProvisioning();
} catch (Exception e) {
e.printStackTrace();
System.out.println("No puede crear SOAP Provisioning"); //faltan jars del Zimbra, version de java del eclipse diferente al de Zimbra
//insertar en una tabla para que por medio de un batch crear despues al usuario
throw e;
}
try {
//https://192.168.248.129:7071/service/admin/soap/
sp.soapSetURI("https://192.168.248.129:7071" + com.zimbra.common.soap.AdminConstants.ADMIN_SERVICE_URI);
sp.soapAdminAuthenticate("admin","123456"); //usuario administrador de Zimbra y clave del administrador
} catch(ServiceException ex) {
ex.printStackTrace();
System.out.println("No puede autenticarse admin en el panel de administracion"); //el certificado del Zimbra ha caducado, hay que reemplazar el certificado en el java
//insertar en una tabla para que por medio de un batch crear despues al usuario
throw ex;
}
try {
System.out.println("Se creara cuenta: " + cuenta.toLowerCase());
createAccount = sp.createAccount(cuenta.toLowerCase(), passwordCuenta, getMap());
} catch(ServiceException se) {
se.printStackTrace();
System.out.println("No pudo crear usuario"); //usuario ya existe en Zimbra ACCOUNT_EXISTS
//email address already exists:
//insertar en una tabla para que por medio de un batch crear despues al usuario, no deberia pasar porque el sistema valida que el usuario sea unico
throw se;
} finally {
}
}
importé los jars de a continuación desde el /opt/zimbra/lib/jars
import com.zimbra.common.service.ServiceException; //zimbracommon.jar
import com.zimbra.cs.service.account.AccountService; //zimbrastore.jar
import com.zimbra.cs.service.admin.AdminService; //zimbrastore.jar
import com.zimbra.cs.servlet.ZimbraServlet;
import com.zimbra.common.soap.Element; //zimbracommon.jar //
import com.zimbra.common.soap.SoapFaultException; //zimbracommon.jar //
import com.zimbra.common.soap.SoapHttpTransport; //zimbracommon.jar //
import com.zimbra.soap.ZimbraSoapContext; //zimbrastore.jar
import com.zimbra.cs.account.Account; //zimbrastore.jar
import com.zimbra.cs.account.soap.SoapProvisioning;
import com.zimbra.cs.account.soap.SoapProvisioning.Options;
import java.io.IOException;
import com.zimbra.common.soap.AccountConstants;
import com.zimbra.common.soap.SoapFaultException;
import com.zimbra.cs.account.auth.AuthContext.Protocol;
import java.util.Properties;
import java.io.FileInputStream;
import java.net.URL;
public void createAccount(String cuenta, String passwordCuenta) throws Exception{
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/**
* PARA QUE PUEDA ACCEDER AL LINK HTTPS
*/
Properties config = new Properties();
URL url = getClass().getResource("/wsaa/properties/wsaa_client.properties"); //archivo donde esta la clave del truststore.jks
URL urlJKS = getClass().getResource("/wsaa/certs/truststore.jks"); //pase a producción cambiar a truststoreProd.jks
config.load(new FileInputStream(url.getPath()));
String keyStorePath = config.getProperty("trustStore",""); //nombre que esta en el archivo wsaa_client.properties hace referencia a la ruta donde esta el truststore.jks
String keyStorePass = config.getProperty("trustStore_password"); //nombre que esta en el archivo wsaa_client.properties hace referencia al password del truststore.jks
keyStorePath = urlJKS.getPath();
System.getProperties().put("javax.net.ssl.trustStore", keyStorePath);
System.getProperties().put("javax.net.ssl.trustStorePassword",keyStorePass);
System.getProperties().put("javax.net.ssl.trustStoreType", "JKS");
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
SoapProvisioning sp = null;
Account createAccount = null;
try {
sp = new SoapProvisioning();
} catch (Exception e) {
e.printStackTrace();
System.out.println("No puede crear SOAP Provisioning"); //faltan jars del Zimbra, version de java del eclipse diferente al de Zimbra
//insertar en una tabla para que por medio de un batch crear despues al usuario
throw e;
}
try {
//https://192.168.248.129:7071/service/admin/soap/
sp.soapSetURI("https://192.168.248.129:7071" + com.zimbra.common.soap.AdminConstants.ADMIN_SERVICE_URI);
sp.soapAdminAuthenticate("admin","123456"); //usuario administrador de Zimbra y clave del administrador
} catch(ServiceException ex) {
ex.printStackTrace();
System.out.println("No puede autenticarse admin en el panel de administracion"); //el certificado del Zimbra ha caducado, hay que reemplazar el certificado en el java
//insertar en una tabla para que por medio de un batch crear despues al usuario
throw ex;
}
try {
System.out.println("Se creara cuenta: " + cuenta.toLowerCase());
createAccount = sp.createAccount(cuenta.toLowerCase(), passwordCuenta, getMap());
} catch(ServiceException se) {
se.printStackTrace();
System.out.println("No pudo crear usuario"); //usuario ya existe en Zimbra ACCOUNT_EXISTS
//email address already exists:
//insertar en una tabla para que por medio de un batch crear despues al usuario, no deberia pasar porque el sistema valida que el usuario sea unico
throw se;
} finally {
}
}