public int GetAllCos() { if (ZimbraValues.zimbraValues.COSes.Count > 0) // already got 'em return 0; lastError = ""; WebServiceClient client = new WebServiceClient { Url = ZimbraValues.GetZimbraValues().Url, WSServiceType = WebServiceClient.ServiceType.Traditional }; StringBuilder sb = new StringBuilder(); XmlWriterSettings settings = new XmlWriterSettings(); settings.OmitXmlDeclaration = true; using (XmlWriter writer = XmlWriter.Create(sb, settings)) { writer.WriteStartDocument(); writer.WriteStartElement("soap", "Envelope", "http://www.w3.org/2003/05/soap-envelope"); WriteHeader(writer, true, true, false); // body writer.WriteStartElement("Body", "http://www.w3.org/2003/05/soap-envelope"); writer.WriteStartElement("GetAllCosRequest", "urn:zimbraAdmin"); writer.WriteEndElement(); // GetAllCosRequest writer.WriteEndElement(); // soap body // end body writer.WriteEndElement(); // soap envelope writer.WriteEndDocument(); } string rsp = ""; WriteSoapLog(sb.ToString(),true); client.InvokeService(sb.ToString(), out rsp); WriteSoapLog(rsp.ToString(),false); if (client.status == 0) { ParseGetAllCos(rsp); } else { string soapReason = ParseSoapFault(client.errResponseMessage); if (soapReason.Length > 0) lastError = soapReason; else lastError = client.exceptionMessage; } return client.status; }
public int CreateTag(string tag, string color, out string tagID) { tagID = ""; lastError = ""; int retval = 0; WebServiceClient client = new WebServiceClient { Url = ZimbraValues.GetZimbraValues().Url, WSServiceType = WebServiceClient.ServiceType.Traditional }; StringBuilder sb = new StringBuilder(); XmlWriterSettings settings = new XmlWriterSettings(); settings.OmitXmlDeclaration = true; using (XmlWriter writer = XmlWriter.Create(sb, settings)) { writer.WriteStartDocument(); writer.WriteStartElement("soap", "Envelope", "http://www.w3.org/2003/05/soap-envelope"); WriteHeader(writer, true, true, true); writer.WriteStartElement("Body", "http://www.w3.org/2003/05/soap-envelope"); CreateTagRequest(writer, tag, color, -1); writer.WriteEndElement(); // soap body writer.WriteEndElement(); // soap envelope writer.WriteEndDocument(); } string rsp = ""; WriteSoapLog(sb.ToString(),true); client.InvokeService(sb.ToString(), out rsp); WriteSoapLog(rsp.ToString(),false); retval = client.status; if (client.status == 0) { ParseCreateTag(rsp, out tagID); // get the id } else { string soapReason = ParseSoapFault(client.errResponseMessage); if (soapReason.Length > 0) lastError = soapReason; else lastError = client.exceptionMessage; } return retval; }
public int GetAccount(string accountname) { int retval = 0; lastError = ""; WebServiceClient client = new WebServiceClient { Url = ZimbraValues.GetZimbraValues().Url, WSServiceType = WebServiceClient.ServiceType.Traditional }; StringBuilder sb = new StringBuilder(); XmlWriterSettings settings = new XmlWriterSettings(); settings.OmitXmlDeclaration = true; using (XmlWriter writer = XmlWriter.Create(sb, settings)) { writer.WriteStartDocument(); writer.WriteStartElement("soap", "Envelope", "http://www.w3.org/2003/05/soap-envelope"); WriteHeader(writer, true, true, false); // body writer.WriteStartElement("Body", "http://www.w3.org/2003/05/soap-envelope"); writer.WriteStartElement("GetAccountRequest", "urn:zimbraAdmin"); WriteAccountBy(writer, accountname); writer.WriteEndElement(); // GetAccountRequest writer.WriteEndElement(); // soap body // end body writer.WriteEndElement(); // soap envelope writer.WriteEndDocument(); } string rsp = ""; WriteSoapLog(sb.ToString(),true); client.InvokeService(sb.ToString(), out rsp); WriteSoapLog(rsp.ToString(),false); retval = client.status; if (client.status == 0) { if (ParseGetAccount(rsp) == 0) // length of name is 0 -- this is bad retval = ACCOUNT_NO_NAME; } else { string soapReason = ParseSoapFault(client.errResponseMessage); if (soapReason.Length > 0) lastError = soapReason; else lastError = client.exceptionMessage; } return retval; }
public int CreateAccount(string accountname, string displayname, string givenname, string sn, string zfp, string defaultpw, bool mustChangePW, string cosid) { int retval = 0; lastError = ""; if (displayname.Length == 0) { displayname = accountname.Substring(0, accountname.IndexOf("@")); } string zimbraForeignPrincipal = (zfp.Length > 0) ? zfp : "ad:" + displayname; WebServiceClient client = new WebServiceClient { Url = ZimbraValues.GetZimbraValues().Url, WSServiceType = WebServiceClient.ServiceType.Traditional }; StringBuilder sb = new StringBuilder(); XmlWriterSettings settings = new XmlWriterSettings(); settings.OmitXmlDeclaration = true; using (XmlWriter writer = XmlWriter.Create(sb, settings)) { writer.WriteStartDocument(); writer.WriteStartElement("soap", "Envelope", "http://www.w3.org/2003/05/soap-envelope"); WriteHeader(writer, true, true, false); // body writer.WriteStartElement("Body", "http://www.w3.org/2003/05/soap-envelope"); writer.WriteStartElement("CreateAccountRequest", "urn:zimbraAdmin"); WriteNVPair(writer, "name", accountname); WriteNVPair(writer, "password", defaultpw); WriteAttrNVPair(writer, "a", "n", "displayName", displayname); if (givenname.Length > 0) { WriteAttrNVPair(writer, "a", "n", "givenName", givenname); } if (sn.Length > 0) { WriteAttrNVPair(writer, "a", "n", "sn", sn); } WriteAttrNVPair(writer, "a", "n", "zimbraForeignPrincipal", zimbraForeignPrincipal); WriteAttrNVPair(writer, "a", "n", "zimbraCOSId", cosid); if (mustChangePW) { WriteAttrNVPair(writer, "a", "n", "zimbraPasswordMustChange", "TRUE"); } writer.WriteEndElement(); // CreateAccountRequest writer.WriteEndElement(); // soap body // end body writer.WriteEndElement(); // soap envelope writer.WriteEndDocument(); } string rsp = ""; WriteSoapLog(sb.ToString(),true); client.InvokeService(sb.ToString(), out rsp); WriteSoapLog(rsp.ToString(),false); retval = client.status; if (client.status == 0) { if (ParseCreateAccount(rsp) == 0) // length of name is 0 -- this is bad retval = ACCOUNT_CREATE_FAILED; } else { string soapReason = ParseSoapFault(client.errResponseMessage); if (soapReason.Length > 0) lastError = soapReason; else lastError = client.exceptionMessage; } return retval; }
public int CreateContacts(List<Dictionary<string, string> > lContacts, string folderPath = "") { lastError = ""; // Create in Contacts unless another folder was desired string folderId = "7"; if (folderPath.Length > 0) { folderId = FindFolder(folderPath); if (folderId.Length == 0) return CONTACT_CREATE_FAILED_FLDR; } // ////// WebServiceClient client = new WebServiceClient { Url = ZimbraValues.GetZimbraValues().Url, WSServiceType = WebServiceClient.ServiceType.Traditional }; int retval = 0; StringBuilder sb = new StringBuilder(); XmlWriterSettings settings = new XmlWriterSettings(); settings.OmitXmlDeclaration = true; using (XmlWriter writer = XmlWriter.Create(sb, settings)) { writer.WriteStartDocument(); writer.WriteStartElement("soap", "Envelope", "http://www.w3.org/2003/05/soap-envelope"); WriteHeader(writer, true, true, true); writer.WriteStartElement("Body", "http://www.w3.org/2003/05/soap-envelope"); writer.WriteStartElement("BatchRequest", "urn:zimbra"); for (int i = 0; i < lContacts.Count; i++) { Dictionary<string, string> contact = lContacts[i]; CreateContactRequest(writer, contact, folderId, i); } writer.WriteEndElement(); // BatchRequest writer.WriteEndElement(); // soap body writer.WriteEndElement(); // soap envelope writer.WriteEndDocument(); } string rsp = ""; WriteSoapLog(sb.ToString(),true); client.InvokeService(sb.ToString(), out rsp); WriteSoapLog(rsp.ToString(),false); retval = client.status; return retval; }
public int AddRules(Dictionary<string, string> rules) { lastError = ""; WebServiceClient client = new WebServiceClient { Url = ZimbraValues.GetZimbraValues().Url, WSServiceType = WebServiceClient.ServiceType.Traditional }; int retval = 0; StringBuilder sb = new StringBuilder(); XmlWriterSettings settings = new XmlWriterSettings(); settings.OmitXmlDeclaration = true; using (XmlWriter writer = XmlWriter.Create(sb, settings)) { writer.WriteStartDocument(); writer.WriteStartElement("soap", "Envelope", "http://www.w3.org/2003/05/soap-envelope"); WriteHeader(writer, true, true, true); writer.WriteStartElement("Body", "http://www.w3.org/2003/05/soap-envelope"); SetModifyFilterRulesRequest(writer, rules); writer.WriteEndElement(); // soap body writer.WriteEndElement(); // soap envelope writer.WriteEndDocument(); } string rsp = ""; WriteSoapLog(sb.ToString(),true); client.InvokeService(sb.ToString(), out rsp); WriteSoapLog(rsp.ToString(),false); retval = client.status; return retval; }
public int AddTask(Dictionary<string, string> appt, string folderPath = "") { lastError = ""; // Create in Tasks unless another folder was desired string folderId = "15"; if (folderPath.Length > 0) { folderId = FindFolder(folderPath); if (folderId.Length == 0) return TASK_CREATE_FAILED_FLDR; } // ////// WebServiceClient client = new WebServiceClient { Url = ZimbraValues.GetZimbraValues().Url, WSServiceType = WebServiceClient.ServiceType.Traditional }; int retval = 0; StringBuilder sb = new StringBuilder(); XmlWriterSettings settings = new XmlWriterSettings(); settings.OmitXmlDeclaration = true; using (XmlWriter writer = XmlWriter.Create(sb, settings)) { writer.WriteStartDocument(); writer.WriteStartElement("soap", "Envelope", "http://www.w3.org/2003/05/soap-envelope"); WriteHeader(writer, true, true, true); writer.WriteStartElement("Body", "http://www.w3.org/2003/05/soap-envelope"); SetTaskRequest(writer, appt, folderId); writer.WriteEndElement(); // soap body writer.WriteEndElement(); // soap envelope writer.WriteEndDocument(); } string rsp = ""; WriteSoapLog(sb.ToString(),true); client.InvokeService(sb.ToString(), out rsp); WriteSoapLog(rsp.ToString(),false); retval = client.status; return retval; }
public int AddOOO(string OOOInfo, bool isServer) { lastError = ""; if (OOOInfo.Length == 0) { return OOO_NO_TEXT; } bool isOOOEnabled = OOOInfo.Substring(0, 1) == "1"; if ((!isOOOEnabled) && (OOOInfo.Length == 2)) // 0: { return 0; // it's ok -- just no need to do anything } WebServiceClient client = new WebServiceClient { Url = ZimbraValues.GetZimbraValues().Url, WSServiceType = WebServiceClient.ServiceType.Traditional }; int retval = 0; StringBuilder sb = new StringBuilder(); XmlWriterSettings settings = new XmlWriterSettings(); settings.OmitXmlDeclaration = true; using (XmlWriter writer = XmlWriter.Create(sb, settings)) { writer.WriteStartDocument(); writer.WriteStartElement("soap", "Envelope", "http://www.w3.org/2003/05/soap-envelope"); WriteHeader(writer, true, true, isServer); writer.WriteStartElement("Body", "http://www.w3.org/2003/05/soap-envelope"); SetModifyPrefsRequest(writer, isOOOEnabled, OOOInfo); writer.WriteEndElement(); // soap body writer.WriteEndElement(); // soap envelope writer.WriteEndDocument(); } string rsp = ""; WriteSoapLog(sb.ToString(),true); client.InvokeService(sb.ToString(), out rsp); WriteSoapLog(rsp.ToString(),false); retval = client.status; return retval; }
public int AddMessages(List<Dictionary<string, string> > lMessages) { int retval = 0; lastError = ""; string uploadInfo = ""; System.Type type = typeof (ZimbraMessage); FieldInfo[] myFields = type.GetFields(BindingFlags.Public | BindingFlags.Instance); WebServiceClient client = new WebServiceClient { Url = ZimbraValues.GetZimbraValues().Url, WSServiceType = WebServiceClient.ServiceType.Traditional }; StringBuilder sb = new StringBuilder(); XmlWriterSettings settings = new XmlWriterSettings(); settings.OmitXmlDeclaration = true; using (XmlWriter writer = XmlWriter.Create(sb, settings)) { writer.WriteStartDocument(); writer.WriteStartElement("soap", "Envelope", "http://www.w3.org/2003/05/soap-envelope"); WriteHeader(writer, true, true, true); writer.WriteStartElement("Body", "http://www.w3.org/2003/05/soap-envelope"); writer.WriteStartElement("BatchRequest", "urn:zimbra"); for (int i = 0; i < lMessages.Count; i++) { Dictionary<string, string> message = lMessages[i]; ZimbraMessage zm = new ZimbraMessage("", "", "", "", ""); for (int j = 0; j < myFields.Length; j++) // use reflection to set ZimbraMessage object values { string nam = (string)myFields[j].Name; if (nam == "folderId") myFields[j].SetValue(zm, FindFolder(message[nam])); else myFields[j].SetValue(zm, message[nam]); } bool isInline = false; if (message["wstrmimeBuffer"].Length > 0) { // } else { FileInfo f = new FileInfo(zm.filePath); isInline = (f.Length < INLINE_LIMIT); } if (isInline) uploadInfo = zm.filePath; else { Log.debug("Begin UploadFile"); string tmp = message["wstrmimeBuffer"]; retval = UploadFile(zm.filePath, tmp, "", "", STRING_MODE, out uploadInfo); Log.debug("End UploadFile"); } if (retval == 0) AddMsgRequest(writer, uploadInfo, zm, isInline, -1); File.Delete(zm.filePath); } writer.WriteEndElement(); // BatchRequest writer.WriteEndElement(); // soap body writer.WriteEndElement(); // soap envelope writer.WriteEndDocument(); } string rsp = ""; WriteSoapLog(sb.ToString(),true); client.InvokeService(sb.ToString(), out rsp); WriteSoapLog(rsp.ToString(),false); retval = client.status; return retval; }
public int AddMessage(Dictionary<string, string> message) { lastError = ""; string uploadInfo = ""; int retval = 0; ZimbraMessage zm = new ZimbraMessage("", "", "", "", ""); System.Type type = typeof (ZimbraMessage); FieldInfo[] myFields = type.GetFields(BindingFlags.Public | BindingFlags.Instance); for (int i = 0; i < myFields.Length; i++) // use reflection to set ZimbraMessage object values { string nam = (string)myFields[i].Name; if (nam == "folderId") myFields[i].SetValue(zm, FindFolder(message[nam])); else myFields[i].SetValue(zm, message[nam]); } bool isInline = false; if (message["wstrmimeBuffer"].Length > 0) { // } else { FileInfo f = new FileInfo(zm.filePath);// use a try/catch? isInline = (f.Length < INLINE_LIMIT); } if (isInline) uploadInfo = zm.filePath; else { //Log.debug("Begin UploadFile"); string tmp = message["wstrmimeBuffer"]; retval = UploadFile(zm.filePath, tmp, "", "", STRING_MODE, out uploadInfo); //Log.debug("End UploadFile"); } if (retval == 0) { WebServiceClient client = new WebServiceClient { Url = ZimbraValues.GetZimbraValues().Url, WSServiceType = WebServiceClient.ServiceType.Traditional }; StringBuilder sb = new StringBuilder(); XmlWriterSettings settings = new XmlWriterSettings(); settings.OmitXmlDeclaration = true; using (XmlWriter writer = XmlWriter.Create(sb, settings)) { writer.WriteStartDocument(); writer.WriteStartElement("soap", "Envelope", "http://www.w3.org/2003/05/soap-envelope"); WriteHeader(writer, true, true, true); writer.WriteStartElement("Body", "http://www.w3.org/2003/05/soap-envelope"); AddMsgRequest(writer, uploadInfo, zm, isInline, -1); writer.WriteEndElement(); // soap body writer.WriteEndElement(); // soap envelope writer.WriteEndDocument(); } string rsp = ""; WriteSoapLog(sb.ToString(),true); client.InvokeService(sb.ToString(), out rsp); WriteSoapLog(rsp.ToString(),false); retval = client.status; if (client.status == 0) { string mID = ""; ParseAddMsg(rsp, out mID); // get the id } else { string soapReason = ParseSoapFault(client.errResponseMessage); string errMsg = (soapReason.IndexOf("upload ID: null") != -1) // FBS bug 75159 -- 6/7/12 ? "Unable to upload file. Please check server message size limits (Global Settings General Information and MTA)." : soapReason; if (soapReason.Length > 0) { lastError = soapReason; Log.err("Error on message", message["Subject"], "--", errMsg); } else { lastError = client.exceptionMessage; } } } //File.Delete(zm.filePath); return retval; }
public int AddAppointment(Dictionary<string, string> appt, string folderPath = "") { lastError = ""; // Create in Calendar unless another folder was desired string folderId = "10"; if (folderPath.Length > 0) { folderId = FindFolder(folderPath); if (folderId.Length == 0) return APPT_CREATE_FAILED_FLDR; } // ////// WebServiceClient client = new WebServiceClient { Url = ZimbraValues.GetZimbraValues().Url, WSServiceType = WebServiceClient.ServiceType.Traditional }; int retval = 0; StringBuilder sb = new StringBuilder(); XmlWriterSettings settings = new XmlWriterSettings(); settings.OmitXmlDeclaration = true; using (XmlWriter writer = XmlWriter.Create(sb, settings)) { writer.WriteStartDocument(); writer.WriteStartElement("soap", "Envelope", "http://www.w3.org/2003/05/soap-envelope"); WriteHeader(writer, true, true, true); writer.WriteStartElement("Body", "http://www.w3.org/2003/05/soap-envelope"); SetAppointmentRequest(writer, appt, folderId); writer.WriteEndElement(); // soap body writer.WriteEndElement(); // soap envelope writer.WriteEndDocument(); } string rsp = ""; WriteSoapLog(sb.ToString(),true); client.InvokeService(sb.ToString(), out rsp); WriteSoapLog(rsp.ToString(),false); retval = client.status; if (client.status != 0) { string soapReason = ParseSoapFault(client.errResponseMessage); if (soapReason.Length > 0) { lastError = soapReason; Log.err("Error on appointment", appt["su"], "--", soapReason); } } return retval; }
// // API methods ///////// public int Logon(string hostname, string port, string username, string password, bool isSecure, bool isAdmin) { if (ZimbraValues.GetZimbraValues().AuthToken.Length > 0) return 0; // already logged on lastError = ""; // FBS Bug 73394 -- 4/26/12 -- rewrite this section string mode = isSecure ? "https://" : "http://"; string svc = isAdmin ? "/service/admin/soap" : "/service/soap"; string urn = isAdmin ? "urn:zimbraAdmin" : "urn:zimbraAccount"; ZimbraValues.GetZimbraValues().Url = mode + hostname + ":" + port + svc; // end Bug 73394 WebServiceClient client = new WebServiceClient { Url = ZimbraValues.GetZimbraValues().Url, WSServiceType = WebServiceClient.ServiceType.Traditional }; StringBuilder sb = new StringBuilder(); XmlWriterSettings settings = new XmlWriterSettings(); settings.OmitXmlDeclaration = true; using (XmlWriter writer = XmlWriter.Create(sb, settings)) { writer.WriteStartDocument(); writer.WriteStartElement("soap", "Envelope", "http://www.w3.org/2003/05/soap-envelope"); WriteHeader(writer, false, false, false); // body writer.WriteStartElement("Body", "http://www.w3.org/2003/05/soap-envelope"); writer.WriteStartElement("AuthRequest", urn); if (isAdmin) WriteNVPair(writer, "name", username); else WriteAccountBy(writer, username); WriteNVPair(writer, "password", password); writer.WriteEndElement(); // AuthRequest writer.WriteEndElement(); // soap body // end body writer.WriteEndElement(); // soap envelope writer.WriteEndDocument(); } string rsp = ""; WriteSoapLog(sb.ToString(),true); client.InvokeService(sb.ToString(), out rsp); WriteSoapLog(rsp.ToString(),false); if (client.status == 0) { ParseLogon(rsp, isAdmin); ZimbraValues.GetZimbraValues().HostName = hostname; ZimbraValues.GetZimbraValues().Port = port; } else { string soapReason = ParseSoapFault(client.errResponseMessage); if (soapReason.Length > 0) lastError = soapReason; else lastError = client.exceptionMessage; } return client.status; }