diff --git a/WebsitePanel/Database/update_db.sql b/WebsitePanel/Database/update_db.sql index d3669869..895c2d3f 100644 --- a/WebsitePanel/Database/update_db.sql +++ b/WebsitePanel/Database/update_db.sql @@ -6082,3 +6082,134 @@ set Php4Path='%PROGRAMFILES(x86)%\PHP\ph.exe' where ProviderId in(101, 105) GO + +-- Domain lookup tasks + +IF NOT EXISTS (SELECT * FROM [dbo].[ScheduleTasks] WHERE [TaskID] = N'SCHEDULE_TASK_DOMAIN_LOOKUP') +BEGIN +INSERT [dbo].[ScheduleTasks] ([TaskID], [TaskType], [RoleID]) VALUES (N'SCHEDULE_TASK_DOMAIN_LOOKUP', N'WebsitePanel.EnterpriseServer.DomainLookupViewTask, WebsitePanel.EnterpriseServer.Code', 1) +END +GO + +IF NOT EXISTS (SELECT * FROM [dbo].[ScheduleTaskViewConfiguration] WHERE [TaskID] = N'SCHEDULE_TASK_DOMAIN_LOOKUP') +BEGIN +INSERT [dbo].[ScheduleTaskViewConfiguration] ([TaskID], [ConfigurationID], [Environment], [Description]) VALUES (N'SCHEDULE_TASK_DOMAIN_LOOKUP', N'ASP_NET', N'ASP.NET', N'~/DesktopModules/WebsitePanel/ScheduleTaskControls/DomainLookupView.ascx') +END +GO + +IF NOT EXISTS (SELECT * FROM [dbo].[ScheduleTaskParameters] WHERE [TaskID] = N'SCHEDULE_TASK_DOMAIN_LOOKUP' AND [ParameterID]= N'DNS_SERVERS' ) +BEGIN +INSERT [dbo].[ScheduleTaskParameters] ([TaskID], [ParameterID], [DataTypeID], [DefaultValue], [ParameterOrder]) VALUES (N'SCHEDULE_TASK_DOMAIN_LOOKUP', N'DNS_SERVERS', N'String', NULL, 1) +END +GO + +IF NOT EXISTS (SELECT * FROM [dbo].[ScheduleTaskParameters] WHERE [TaskID] = N'SCHEDULE_TASK_DOMAIN_LOOKUP' AND [ParameterID]= N'MAIL_TO' ) +BEGIN +INSERT [dbo].[ScheduleTaskParameters] ([TaskID], [ParameterID], [DataTypeID], [DefaultValue], [ParameterOrder]) VALUES (N'SCHEDULE_TASK_DOMAIN_LOOKUP', N'MAIL_TO', N'String', NULL, 2) +END +GO + +-- Domain lookup tables + +IF EXISTS (SELECT * FROM SYS.TABLES WHERE name = 'DomainDnsRecords') +DROP TABLE DomainDnsRecords +GO +CREATE TABLE DomainDnsRecords +( + ID INT IDENTITY(1,1) NOT NULL PRIMARY KEY, + DomainId INT NOT NULL, + RecordType INT NOT NULL, + DnsServer NVARCHAR(255), + Value NVARCHAR(255), + Date DATETIME +) +GO + +ALTER TABLE [dbo].[DomainDnsRecords] WITH CHECK ADD CONSTRAINT [FK_DomainDnsRecords_DomainId] FOREIGN KEY([DomainId]) +REFERENCES [dbo].[Domains] ([DomainID]) +ON DELETE CASCADE +GO + +-- Procedures for Domai lookup service + + +IF EXISTS (SELECT * FROM SYS.OBJECTS WHERE type = 'P' AND name = 'GetAllPackageIds') +DROP PROCEDURE GetAllPackageIds +GO +CREATE PROCEDURE [dbo].GetAllPackageIds + +AS +SELECT + [PackageID] + FROM [dbo].[Packages] +GO + + +IF EXISTS (SELECT * FROM SYS.OBJECTS WHERE type = 'P' AND name = 'GetDomainDnsRecords') +DROP PROCEDURE GetDomainDnsRecords +GO +CREATE PROCEDURE [dbo].GetDomainDnsRecords +( + @DomainId INT, + @RecordType INT +) +AS +SELECT + ID, + DomainId, + DnsServer, + RecordType, + Value, + Date + FROM [dbo].[DomainDnsRecords] + WHERE [DomainId] = @DomainId AND [RecordType] = @RecordType +GO + + + +IF EXISTS (SELECT * FROM SYS.OBJECTS WHERE type = 'P' AND name = 'AddDomainDnsRecord') +DROP PROCEDURE AddDomainDnsRecord +GO +CREATE PROCEDURE [dbo].[AddDomainDnsRecord] +( + @DomainId INT, + @RecordType INT, + @DnsServer NVARCHAR(255), + @Value NVARCHAR(255), + @Date DATETIME +) +AS + +INSERT INTO DomainDnsRecords +( + DomainId, + DnsServer, + RecordType, + Value, + Date +) +VALUES +( + @DomainId, + @DnsServer, + @RecordType, + @Value, + @Date +) +GO + + + +IF EXISTS (SELECT * FROM SYS.OBJECTS WHERE type = 'P' AND name = 'DeleteDomainDnsRecord') +DROP PROCEDURE DeleteDomainDnsRecord +GO +CREATE PROCEDURE [dbo].[DeleteDomainDnsRecord] +( + @Id INT +) +AS + + +DELETE FROM DomainDnsRecords +WHERE Id = @Id +GO diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/Data/DataProvider.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/Data/DataProvider.cs index 62f9905f..67597939 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/Data/DataProvider.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/Data/DataProvider.cs @@ -36,6 +36,8 @@ using Microsoft.ApplicationBlocks.Data; using System.Collections.Generic; using Microsoft.Win32; using WebsitePanel.Providers.RemoteDesktopServices; +using WebsitePanel.Providers.DNS; +using WebsitePanel.Providers.DomainLookup; namespace WebsitePanel.EnterpriseServer { @@ -4718,5 +4720,54 @@ namespace WebsitePanel.EnterpriseServer } #endregion + + #region MX|NX Services + + public static IDataReader GetAllPackagesIds() + { + return SqlHelper.ExecuteReader( + ConnectionString, + CommandType.StoredProcedure, + "GetAllPackageIds" + ); + } + + public static IDataReader GetDomainMXRecords(int domainId, DnsRecordType recordType) + { + return SqlHelper.ExecuteReader( + ConnectionString, + CommandType.StoredProcedure, + "GetDomainDnsRecords", + new SqlParameter("@DomainId", domainId), + new SqlParameter("@RecordType", recordType) + ); + } + + public static IDataReader AddDomainDnsRecord(DnsRecordInfo domainDnsRecord) + { + return SqlHelper.ExecuteReader( + ConnectionString, + CommandType.StoredProcedure, + "AddDomainDnsRecord", + new SqlParameter("@DomainId", domainDnsRecord.DomainId), + new SqlParameter("@RecordType", domainDnsRecord.RecordType), + new SqlParameter("@DnsServer", domainDnsRecord.DnsServer), + new SqlParameter("@Value", domainDnsRecord.Value), + new SqlParameter("@Date", domainDnsRecord.Date) + ); + } + + public static IDataReader DeleteDomainDnsRecord(int id) + { + return SqlHelper.ExecuteReader( + ConnectionString, + CommandType.StoredProcedure, + "DeleteDomainDnsRecord", + new SqlParameter("@Id", id) + ); + } + + #endregion + } } diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/OperatingSystems/OperatingSystemController.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/OperatingSystems/OperatingSystemController.cs index d851ac44..c3d2fa9f 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/OperatingSystems/OperatingSystemController.cs +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/OperatingSystems/OperatingSystemController.cs @@ -40,6 +40,9 @@ using WebsitePanel.Providers; using WebsitePanel.Providers.OS; using OS = WebsitePanel.Providers.OS; using System.Collections; +using WebsitePanel.Providers.DomainLookup; +using WebsitePanel.Providers.DNS; +using System.Linq; namespace WebsitePanel.EnterpriseServer @@ -811,5 +814,24 @@ namespace WebsitePanel.EnterpriseServer #endregion + + #region Domain DNS Records lookup + + public static List GetDomainRecords(int packageId, string domain, string dnsServer, DnsRecordType recordType) + { + List records = new List(); + + // load OS service + int serviceId = PackageController.GetPackageServiceId(packageId, ResourceGroups.Os); + + var os = GetOS(serviceId); + + records = os.GetDomainDnsRecords(domain, dnsServer, recordType).ToList(); + + return records; + } + + #endregion + } } diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/SchedulerTasks/DomainLookupViewTask.cs b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/SchedulerTasks/DomainLookupViewTask.cs new file mode 100644 index 00000000..765b3544 --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/SchedulerTasks/DomainLookupViewTask.cs @@ -0,0 +1,222 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using WebsitePanel.Providers.DNS; +using WebsitePanel.Providers.DomainLookup; + +namespace WebsitePanel.EnterpriseServer +{ + public class DomainLookupViewTask : SchedulerTask + { + // Input parameters: + private static readonly string DnsServersParameter = "DNS_SERVERS"; + private static readonly string MailToParameter = "MAIL_TO"; + + public override void DoWork() + { + BackgroundTask topTask = TaskManager.TopTask; + + List domainsChanges = new List(); + + // get input parameters + string dnsServersString = (string)topTask.GetParamValue(DnsServersParameter); + + // check input parameters + if (String.IsNullOrEmpty(dnsServersString)) + { + TaskManager.WriteWarning("Specify 'DNS' task parameter."); + return; + } + + var dnsServers = dnsServersString.Split(';'); + + var packages = ObjectUtils.CreateListFromDataReader(DataProvider.GetAllPackagesIds()); + + foreach (var package in packages) + { + + PackageContext cntx = PackageController.GetPackageContext(package.PackageId); + + if (cntx == null) + { + continue; + } + + bool dnsEnabled = cntx.GroupsArray.Any(x => x.GroupName == ResourceGroups.Dns); + + if (!dnsEnabled) + { + continue; + } + + var domains = ServerController.GetDomains(package.PackageId); + + domains = domains.Where(x => !x.IsSubDomain && !x.IsDomainPointer).ToList(); //Selecting top-level domains + + foreach (var domain in domains) + { + DomainChanges domainChanges = new DomainChanges(); + + var mxRecords = ObjectUtils.CreateListFromDataReader(DataProvider.GetDomainMXRecords(domain.DomainId, DnsRecordType.MX)); + var nsRecords = ObjectUtils.CreateListFromDataReader(DataProvider.GetDomainMXRecords(domain.DomainId, DnsRecordType.NS)); + + //execute server + foreach (var dnsServer in dnsServers) + { + var dnsMxRecords = OperatingSystemController.GetDomainRecords(domain.PackageId, domain.DomainName, dnsServer, DnsRecordType.MX); + var dnsNsRecords = OperatingSystemController.GetDomainRecords(domain.PackageId, domain.DomainName, dnsServer, DnsRecordType.NS); + + FillRecordData(dnsMxRecords, domain, dnsServer); + FillRecordData(dnsNsRecords, domain, dnsServer); + + domainChanges.MxChanges.Add(ApplyDomainRecordsChanges(mxRecords, dnsMxRecords, dnsServer)); + domainChanges.NsChanges.Add(ApplyDomainRecordsChanges(nsRecords, dnsNsRecords, dnsServer)); + } + + domainsChanges.Add(domainChanges); + } + } + + var changedDomains = FindDomainsWithChangedRecords(domainsChanges); + + if (changedDomains.Any()) + { + SendMailMessage(changedDomains); + } + } + + + + #region Helpers + + private IEnumerable FindDomainsWithChangedRecords(IEnumerable domainsChanges) + { + var changedDomains = new List(); + + foreach (var domainChanges in domainsChanges) + { + var firstTimeAdditon = domainChanges.MxChanges.All(x => x.DnsRecordsCompare.All(dns => dns.DbRecord == null)) + && domainChanges.NsChanges.All(x => x.DnsRecordsCompare.All(dns => dns.DbRecord == null)); + + if (firstTimeAdditon) + { + continue; + } + + bool mxIsChanged = domainChanges.MxChanges.Any(x => x.DnsRecordsCompare.Any(d => d.Status != DomainDnsRecordStatuses.NotChanged)); + bool nsIsChanged = domainChanges.NsChanges.Any(x => x.DnsRecordsCompare.Any(d => d.Status != DomainDnsRecordStatuses.NotChanged)); + + if (mxIsChanged || nsIsChanged) + { + changedDomains.Add(domainChanges); + } + } + + return changedDomains; + } + + private DomainDnsRecordsChanges ApplyDomainRecordsChanges(List dbRecords, List dnsRecords, string dnsServer) + { + var domainRecordChanges = new DomainDnsRecordsChanges(); + domainRecordChanges.DnsServer = dnsServer; + + var filteredDbRecords = dbRecords.Where(x => x.DnsServer == dnsServer); + + foreach (var record in filteredDbRecords) + { + var dnsRecord = dnsRecords.FirstOrDefault(x => x.Value == record.Value); + + if (dnsRecord != null) + { + domainRecordChanges.DnsRecordsCompare.Add(new DomainDnsRecordCompare { DbRecord = record, DnsRecord = dnsRecord, Status = DomainDnsRecordStatuses.NotChanged }); + + dnsRecords.Remove(dnsRecord); + } + else + { + domainRecordChanges.DnsRecordsCompare.Add(new DomainDnsRecordCompare { DbRecord = record, DnsRecord = null, Status = DomainDnsRecordStatuses.Removed }); + + RemoveRecord(record); + + domainRecordChanges.IsChanged = true; + } + } + + foreach (var record in dnsRecords) + { + domainRecordChanges.DnsRecordsCompare.Add(new DomainDnsRecordCompare { DbRecord = null, DnsRecord = record, Status = DomainDnsRecordStatuses.Added }); + + AddRecord(record); + + domainRecordChanges.IsChanged = true; + } + + return domainRecordChanges; + } + + private void FillRecordData(IEnumerable records, DomainInfo domain, string dnsServer) + { + foreach (var record in records) + { + FillRecordData(record, domain, dnsServer); + } + } + + private void FillRecordData(DnsRecordInfo record, DomainInfo domain, string dnsServer) + { + record.DomainId = domain.DomainId; + record.Date = DateTime.Now; + record.DnsServer = dnsServer; + } + + private void RemoveRecords(IEnumerable dnsRecords) + { + foreach (var record in dnsRecords) + { + RemoveRecord(record); + } + } + + private void RemoveRecord(DnsRecordInfo dnsRecord) + { + DataProvider.DeleteDomainDnsRecord(dnsRecord.Id); + } + + private void AddRecords(IEnumerable dnsRecords) + { + foreach (var record in dnsRecords) + { + AddRecord(record); + } + } + + private void AddRecord(DnsRecordInfo dnsRecord) + { + DataProvider.AddDomainDnsRecord(dnsRecord); + } + + private void SendMailMessage(IEnumerable domainsChanges) + { + BackgroundTask topTask = TaskManager.TopTask; + + // input parameters + string mailFrom = "wsp@scheduler.noreply"; + string mailTo = (string)topTask.GetParamValue("MAIL_TO"); + string mailSubject = "WSP MX and NS notification"; + string mailBody = "Hello!

"; + + if (String.IsNullOrEmpty(mailTo)) + { + TaskManager.WriteWarning("The e-mail message has not been sent because 'Mail To' is empty."); + } + else + { + // send mail message + // MailHelper.SendMessage(mailFrom, mailTo, mailSubject, mailBody, false); + } + } + + #endregion + } +} diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/Servers/ServerController.cs.orig b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/Servers/ServerController.cs.orig new file mode 100644 index 00000000..f1b2cb07 --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/Servers/ServerController.cs.orig @@ -0,0 +1,2907 @@ +// Copyright (c) 2014, Outercurve Foundation. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without modification, +// are permitted provided that the following conditions are met: +// +// - Redistributions of source code must retain the above copyright notice, this +// list of conditions and the following disclaimer. +// +// - Redistributions in binary form must reproduce the above copyright notice, +// this list of conditions and the following disclaimer in the documentation +// and/or other materials provided with the distribution. +// +// - Neither the name of the Outercurve Foundation nor the names of its +// contributors may be used to endorse or promote products derived from this +// software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR +// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +using System; +using System.Collections.Generic; +using System.Collections.Specialized; +using System.Data; +using System.Net; +using System.Xml; +using WebsitePanel.Providers; +using WebsitePanel.Providers.Common; +using WebsitePanel.Providers.DNS; +using WebsitePanel.Server; +using WebsitePanel.Providers.ResultObjects; +using WebsitePanel.Providers.Web; +using WebsitePanel.Providers.HostedSolution; +using WebsitePanel.Providers.DomainLookup; +using System.Linq; + +namespace WebsitePanel.EnterpriseServer +{ + /// + /// Summary description for ServersController. + /// + public class ServerController + { + private const string LOG_SOURCE_SERVERS = "SERVERS"; + + #region Servers + public static List GetAllServers() + { + // fill collection + return ObjectUtils.CreateListFromDataSet( + DataProvider.GetAllServers(SecurityContext.User.UserId)); + } + + public static DataSet GetRawAllServers() + { + return DataProvider.GetAllServers(SecurityContext.User.UserId); + } + + public static List GetServers() + { + // create servers list + List servers = new List(); + + // fill collection + ObjectUtils.FillCollectionFromDataSet( + servers, DataProvider.GetServers(SecurityContext.User.UserId)); + + return servers; + } + + public static DataSet GetRawServers() + { + return DataProvider.GetServers(SecurityContext.User.UserId); + } + + internal static ServerInfo GetServerByIdInternal(int serverId) + { + ServerInfo server = ObjectUtils.FillObjectFromDataReader( + DataProvider.GetServerInternal(serverId)); + + if (server == null) + return null; + + // decrypt passwords + server.Password = CryptoUtils.Decrypt(server.Password); + server.ADPassword = CryptoUtils.Decrypt(server.ADPassword); + + return server; + } + + public static ServerInfo GetServerShortDetails(int serverId) + { + return ObjectUtils.FillObjectFromDataReader( + DataProvider.GetServerShortDetails(serverId)); + } + + public static ServerInfo GetServerById(int serverId) + { + return ObjectUtils.FillObjectFromDataReader( + DataProvider.GetServer(SecurityContext.User.UserId, serverId)); + } + + public static ServerInfo GetServerByName(string serverName) + { + return ObjectUtils.FillObjectFromDataReader( + DataProvider.GetServerByName(SecurityContext.User.UserId, serverName)); + } + + public static int CheckServerAvailable(string serverUrl, string password) + { + // check account + int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo | DemandAccount.IsActive + | DemandAccount.IsAdmin); + if (accountCheck < 0) return accountCheck; + + TaskManager.StartTask("SERVER", "CHECK_AVAILABILITY", serverUrl); + + try + { + // TO-DO: Check connectivity + return 0; + } + catch (WebException ex) + { + HttpWebResponse response = (HttpWebResponse)ex.Response; + if (response != null && response.StatusCode == HttpStatusCode.NotFound) + return BusinessErrorCodes.ERROR_ADD_SERVER_NOT_FOUND; + else if (response != null && response.StatusCode == HttpStatusCode.BadRequest) + return BusinessErrorCodes.ERROR_ADD_SERVER_BAD_REQUEST; + else if (response != null && response.StatusCode == HttpStatusCode.InternalServerError) + return BusinessErrorCodes.ERROR_ADD_SERVER_INTERNAL_SERVER_ERROR; + else if (response != null && response.StatusCode == HttpStatusCode.ServiceUnavailable) + return BusinessErrorCodes.ERROR_ADD_SERVER_SERVICE_UNAVAILABLE; + else if (response != null && response.StatusCode == HttpStatusCode.Unauthorized) + return BusinessErrorCodes.ERROR_ADD_SERVER_UNAUTHORIZED; + if (ex.Message.Contains("The remote name could not be resolved") || ex.Message.Contains("Unable to connect")) + { + TaskManager.WriteError("The remote server could not ne resolved"); + return BusinessErrorCodes.ERROR_ADD_SERVER_URL_UNAVAILABLE; + } + return BusinessErrorCodes.ERROR_ADD_SERVER_APPLICATION_ERROR; + } + catch (Exception ex) + { + if (ex.Message.Contains("The signature or decryption was invalid")) + { + TaskManager.WriteWarning("Wrong server access credentials"); + return BusinessErrorCodes.ERROR_ADD_SERVER_WRONG_PASSWORD; + } + else + { + TaskManager.WriteError("General Server Error"); + TaskManager.WriteError(ex); + return BusinessErrorCodes.ERROR_ADD_SERVER_APPLICATION_ERROR; + } + } + finally + { + TaskManager.CompleteTask(); + } + } + + private static void FindServices(ServerInfo server) + { + try + { + List providers; + try + { + providers = GetProviders(); + } + catch (Exception ex) + { + TaskManager.WriteError(ex); + throw new ApplicationException("Could not get providers list."); + } + + foreach (ProviderInfo provider in providers) + { + if (!provider.DisableAutoDiscovery) + { + BoolResult isInstalled = IsInstalled(server.ServerId, provider.ProviderId); + if (isInstalled.IsSuccess) + { + if (isInstalled.Value) + { + try + { + ServiceInfo service = new ServiceInfo(); + service.ServerId = server.ServerId; + service.ProviderId = provider.ProviderId; + service.ServiceName = provider.DisplayName; + AddService(service); + } + catch (Exception ex) + { + TaskManager.WriteError(ex); + } + } + } + else + { + string errors = string.Join("\n", isInstalled.ErrorCodes.ToArray()); + string str = + string.Format( + "Could not check if specific software intalled for {0}. Following errors have been occured:\n{1}", + provider.ProviderName, errors); + + TaskManager.WriteError(str); + } + } + } + } + catch (Exception ex) + { + throw new ApplicationException("Could not find services. General error was occued.", ex); + } + } + + public static int AddServer(ServerInfo server, bool autoDiscovery) + { + // check account + int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo | DemandAccount.IsActive + | DemandAccount.IsAdmin); + if (accountCheck < 0) return accountCheck; + + // init passwords + if (server.Password == null) + server.Password = ""; + if (server.ADPassword == null) + server.ADPassword = ""; + + // check server availability + if (!server.VirtualServer) + { + int availResult = CheckServerAvailable(server.ServerUrl, server.Password); + if (availResult < 0) + return availResult; + } + + TaskManager.StartTask("SERVER", "ADD", server.ServerName); + + int serverId = DataProvider.AddServer(server.ServerName, server.ServerUrl, + CryptoUtils.Encrypt(server.Password), server.Comments, server.VirtualServer, server.InstantDomainAlias, + server.PrimaryGroupId, server.ADEnabled, server.ADRootDomain, server.ADUsername, CryptoUtils.Encrypt(server.ADPassword), + server.ADAuthenticationType); + + if (autoDiscovery) + { + server.ServerId = serverId; + try + { + FindServices(server); + } + catch (Exception ex) + { + TaskManager.WriteError(ex); + } + } + + TaskManager.ItemId = serverId; + + TaskManager.CompleteTask(); + + return serverId; + } + + public static int UpdateServer(ServerInfo server) + { + // check account + int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo | DemandAccount.IsActive + | DemandAccount.IsAdmin); + if (accountCheck < 0) return accountCheck; + + // get original server + ServerInfo origServer = GetServerByIdInternal(server.ServerId); + + TaskManager.StartTask("SERVER", "UPDATE", origServer.ServerName, server.ServerId); + + // preserve passwords + server.Password = origServer.Password; + server.ADPassword = origServer.ADPassword; + + // check server availability + if (!origServer.VirtualServer) + { + int availResult = CheckServerAvailable(server.ServerUrl, server.Password); + if (availResult < 0) + return availResult; + } + + DataProvider.UpdateServer(server.ServerId, server.ServerName, server.ServerUrl, + CryptoUtils.Encrypt(server.Password), server.Comments, server.InstantDomainAlias, + server.PrimaryGroupId, server.ADEnabled, server.ADRootDomain, server.ADUsername, CryptoUtils.Encrypt(server.ADPassword), + server.ADAuthenticationType); + + TaskManager.CompleteTask(); + + return 0; + } + + public static int UpdateServerConnectionPassword(int serverId, string password) + { + // check account + int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo | DemandAccount.IsActive + | DemandAccount.IsAdmin); + if (accountCheck < 0) return accountCheck; + + // get original server + ServerInfo server = GetServerByIdInternal(serverId); + + TaskManager.StartTask("SERVER", "UPDATE_PASSWORD", server.ServerName, serverId); + + // set password + server.Password = password; + + // update server + DataProvider.UpdateServer(server.ServerId, server.ServerName, server.ServerUrl, + CryptoUtils.Encrypt(server.Password), server.Comments, server.InstantDomainAlias, + server.PrimaryGroupId, server.ADEnabled, server.ADRootDomain, server.ADUsername, CryptoUtils.Encrypt(server.ADPassword), + server.ADAuthenticationType); + + TaskManager.CompleteTask(); + + return 0; + } + + public static int UpdateServerADPassword(int serverId, string adPassword) + { + // check account + int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo | DemandAccount.IsActive + | DemandAccount.IsAdmin); + if (accountCheck < 0) return accountCheck; + + // get original server + ServerInfo server = GetServerByIdInternal(serverId); + + TaskManager.StartTask("SERVER", "UPDATE_AD_PASSWORD", server.ServerName, serverId); + + // set password + server.ADPassword = adPassword; + + // update server + DataProvider.UpdateServer(server.ServerId, server.ServerName, server.ServerUrl, + CryptoUtils.Encrypt(server.Password), server.Comments, server.InstantDomainAlias, + server.PrimaryGroupId, server.ADEnabled, server.ADRootDomain, server.ADUsername, CryptoUtils.Encrypt(server.ADPassword), + server.ADAuthenticationType); + + TaskManager.CompleteTask(); + + return 0; + } + + public static int DeleteServer(int serverId) + { + // check account + int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo | DemandAccount.IsActive + | DemandAccount.IsAdmin); + if (accountCheck < 0) return accountCheck; + + // get original server + ServerInfo server = GetServerByIdInternal(serverId); + + TaskManager.StartTask("SERVER", "DELETE", server.ServerName, serverId); + + try + { + int result = DataProvider.DeleteServer(serverId); + if (result == -1) + { + TaskManager.WriteError("Server contains services"); + return BusinessErrorCodes.ERROR_SERVER_CONTAINS_SERVICES; + } + else if (result == -2) + { + TaskManager.WriteError("Server contains spaces"); + return BusinessErrorCodes.ERROR_SERVER_CONTAINS_PACKAGES; + } + else if (result == -3) + { + TaskManager.WriteError("Server is used as a target in several hosting plans"); + return BusinessErrorCodes.ERROR_SERVER_USED_IN_HOSTING_PLANS; + } + + return 0; + } + finally + { + TaskManager.CompleteTask(); + } + } + #endregion + + #region Virtual Servers + public static DataSet GetVirtualServers() + { + return DataProvider.GetVirtualServers(SecurityContext.User.UserId); + } + + public static DataSet GetAvailableVirtualServices(int serverId) + { + return DataProvider.GetAvailableVirtualServices(SecurityContext.User.UserId, serverId); + } + + public static DataSet GetVirtualServices(int serverId) + { + return DataProvider.GetVirtualServices(SecurityContext.User.UserId, serverId); + } + + public static int AddVirtualServices(int serverId, int[] ids) + { + // check account + int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo | DemandAccount.IsAdmin + | DemandAccount.IsActive); + if (accountCheck < 0) return accountCheck; + + ServerInfo server = GetServerByIdInternal(serverId); + + TaskManager.StartTask("VIRTUAL_SERVER", "ADD_SERVICES", server.ServerName, serverId); + + // build XML + string xml = BuildXmlFromArray(ids, "services", "service"); + + // update server + DataProvider.AddVirtualServices(serverId, xml); + + TaskManager.CompleteTask(); + + return 0; + } + + public static int DeleteVirtualServices(int serverId, int[] ids) + { + // check account + int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo | DemandAccount.IsAdmin + | DemandAccount.IsActive); + if (accountCheck < 0) return accountCheck; + + ServerInfo server = GetServerByIdInternal(serverId); + + TaskManager.StartTask("VIRTUAL_SERVER", "DELETE_SERVICES", server.ServerName, serverId); + + // build XML + string xml = BuildXmlFromArray(ids, "services", "service"); + + // update server + DataProvider.DeleteVirtualServices(serverId, xml); + + TaskManager.CompleteTask(); + + return 0; + } + + public static int UpdateVirtualGroups(int serverId, VirtualGroupInfo[] groups) + { + // check account + int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo | DemandAccount.IsAdmin + | DemandAccount.IsActive); + if (accountCheck < 0) return accountCheck; + + /* + XML Format: + + + + + + */ + + // build XML + XmlDocument doc = new XmlDocument(); + XmlElement nodeGroups = doc.CreateElement("groups"); + // groups + if (groups != null) + { + foreach (VirtualGroupInfo group in groups) + { + XmlElement nodeGroup = doc.CreateElement("group"); + nodeGroups.AppendChild(nodeGroup); + nodeGroup.SetAttribute("id", group.GroupId.ToString()); + nodeGroup.SetAttribute("distributionType", group.DistributionType.ToString()); + nodeGroup.SetAttribute("bindDistributionToPrimary", group.BindDistributionToPrimary ? "1" : "0"); + } + } + + string xml = nodeGroups.OuterXml; + + // update server + DataProvider.UpdateVirtualGroups(serverId, xml); + + return 0; + } + + private static string BuildXmlFromArray(int[] ids, string rootName, string childName) + { + XmlDocument doc = new XmlDocument(); + XmlElement nodeRoot = doc.CreateElement(rootName); + foreach (int id in ids) + { + XmlElement nodeChild = doc.CreateElement(childName); + nodeChild.SetAttribute("id", id.ToString()); + nodeRoot.AppendChild(nodeChild); + } + + return nodeRoot.OuterXml; + } + #endregion + + #region Services + public static DataSet GetRawServicesByServerId(int serverId) + { + return DataProvider.GetRawServicesByServerId(SecurityContext.User.UserId, serverId); + } + + public static List GetServicesByServerId(int serverId) + { + List services = new List(); + ObjectUtils.FillCollectionFromDataReader(services, + DataProvider.GetServicesByServerId(SecurityContext.User.UserId, serverId)); + return services; + } + + public static List GetServicesByServerIdGroupName(int serverId, string groupName) + { + List services = new List(); + ObjectUtils.FillCollectionFromDataReader(services, + DataProvider.GetServicesByServerIdGroupName(SecurityContext.User.UserId, + serverId, groupName)); + return services; + } + + public static DataSet GetRawServicesByGroupId(int groupId) + { + return DataProvider.GetServicesByGroupId(SecurityContext.User.UserId, groupId); + } + + public static DataSet GetRawServicesByGroupName(string groupName) + { + return DataProvider.GetServicesByGroupName(SecurityContext.User.UserId, groupName); + } + + public static List GetServicesByGroupName(string groupName) + { + return ObjectUtils.CreateListFromDataSet( + DataProvider.GetServicesByGroupName(SecurityContext.User.UserId, groupName)); + } + + public static ServiceInfo GetServiceInfoAdmin(int serviceId) + { + // check account + int accountCheck = SecurityContext.CheckAccount(DemandAccount.IsAdmin + | DemandAccount.IsActive); + if (accountCheck < 0) + return null; + + return ObjectUtils.FillObjectFromDataReader( + DataProvider.GetService(SecurityContext.User.UserId, serviceId)); + } + + public static ServiceInfo GetServiceInfo(int serviceId) + { + return ObjectUtils.FillObjectFromDataReader( + DataProvider.GetService(SecurityContext.User.UserId, serviceId)); + } + + public static int AddService(ServiceInfo service) + { + // check account + int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo | DemandAccount.IsAdmin + | DemandAccount.IsActive); + if (accountCheck < 0) return accountCheck; + + TaskManager.StartTask("SERVER", "ADD_SERVICE", GetServerByIdInternal(service.ServerId).ServerName, service.ServerId); + + TaskManager.WriteParameter("Service name", service.ServiceName); + TaskManager.WriteParameter("Provider", service.ProviderId); + + int serviceId = DataProvider.AddService(service.ServerId, service.ProviderId, service.ServiceName, + service.ServiceQuotaValue, service.ClusterId, service.Comments); + + // read service default settings + try + { + // load original settings + StringDictionary origSettings = GetServiceSettingsAdmin(serviceId); + + // load provider settings + ServiceProvider svc = new ServiceProvider(); + ServiceProviderProxy.Init(svc, serviceId); + + SettingPair[] settings = svc.GetProviderDefaultSettings(); + + if (settings != null && settings.Length > 0) + { + // merge settings + foreach (SettingPair pair in settings) + origSettings[pair.Name] = pair.Value; + + // update settings in the meta base + string[] bareSettings = new string[origSettings.Count]; + int i = 0; + foreach (string key in origSettings.Keys) + bareSettings[i++] = key + "=" + origSettings[key]; + + UpdateServiceSettings(serviceId, bareSettings); + } + } + catch (Exception ex) + { + TaskManager.WriteError(ex, "Error reading default provider settings"); + } + + TaskManager.CompleteTask(); + + return serviceId; + } + + public static int UpdateService(ServiceInfo service) + { + // check account + int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo | DemandAccount.IsAdmin + | DemandAccount.IsActive); + if (accountCheck < 0) return accountCheck; + + // load original service + ServiceInfo origService = GetServiceInfo(service.ServiceId); + + TaskManager.StartTask("SERVER", "UPDATE_SERVICE", GetServerByIdInternal(origService.ServerId).ServerName, origService.ServerId); + + TaskManager.WriteParameter("New service name", service.ServiceName); + + DataProvider.UpdateService(service.ServiceId, service.ServiceName, + service.ServiceQuotaValue, service.ClusterId, service.Comments); + + TaskManager.CompleteTask(); + + return 0; + } + + public static int DeleteService(int serviceId) + { + // check account + int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo | DemandAccount.IsAdmin + | DemandAccount.IsActive); + if (accountCheck < 0) return accountCheck; + + ServiceInfo service = GetServiceInfoAdmin(serviceId); + + TaskManager.StartTask("SERVER", "DELETE_SERVICE", GetServerByIdInternal(service.ServerId).ServerName, service.ServerId); + + TaskManager.WriteParameter("Service name", service.ServiceName); + + try + { + int result = DataProvider.DeleteService(serviceId); + if (result == -1) + { + TaskManager.WriteError("Service contains service items"); + return BusinessErrorCodes.ERROR_SERVICE_CONTAINS_SERVICE_ITEMS; + } + else if (result == -2) + { + TaskManager.WriteError("Service is assigned to virtual server"); + return BusinessErrorCodes.ERROR_SERVICE_USED_IN_VIRTUAL_SERVER; + } + + return 0; + + } + finally + { + TaskManager.CompleteTask(); + } + } + + public static StringDictionary GetServiceSettingsAdmin(int serviceId) + { + // check account + int accountCheck = SecurityContext.CheckAccount(DemandAccount.IsAdmin | DemandAccount.IsActive); + if (accountCheck < 0) + return null; + + bool isDemoAccount = (SecurityContext.CheckAccount(DemandAccount.NotDemo) < 0); + + return GetServiceSettings(serviceId, !isDemoAccount); + } + + internal static StringDictionary GetServiceSettings(int serviceId) + { + return GetServiceSettings(serviceId, true); + } + + internal static StringDictionary GetServiceSettings(int serviceId, bool decryptPassword) + { + // get service settings + IDataReader reader = DataProvider.GetServiceProperties(SecurityContext.User.UserId, serviceId); + + // create settings object + StringDictionary settings = new StringDictionary(); + while (reader.Read()) + { + string name = (string)reader["PropertyName"]; + string val = (string)reader["PropertyValue"]; + + if (name.ToLower().IndexOf("password") != -1 && decryptPassword) + val = CryptoUtils.Decrypt(val); + + settings.Add(name, val); + } + reader.Close(); + + return settings; + } + + public static int UpdateServiceSettings(int serviceId, string[] settings) + { + // check account + int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo | DemandAccount.IsAdmin + | DemandAccount.IsActive); + if (accountCheck < 0) return accountCheck; + + if (settings != null) + { + // build xml + XmlDocument doc = new XmlDocument(); + XmlElement nodeProps = doc.CreateElement("properties"); + foreach (string setting in settings) + { + int idx = setting.IndexOf('='); + string name = setting.Substring(0, idx); + string val = setting.Substring(idx + 1); + + if (name.ToLower().IndexOf("password") != -1) + val = CryptoUtils.Encrypt(val); + + XmlElement nodeProp = doc.CreateElement("property"); + nodeProp.SetAttribute("name", name); + nodeProp.SetAttribute("value", val); + nodeProps.AppendChild(nodeProp); + } + + string xml = nodeProps.OuterXml; + + // update settings + DataProvider.UpdateServiceProperties(serviceId, xml); + } + + return 0; + } + + public static string[] InstallService(int serviceId) + { + ServiceProvider prov = new ServiceProvider(); + ServiceProviderProxy.Init(prov, serviceId); + return prov.Install(); + } + + public static QuotaInfo GetProviderServiceQuota(int providerId) + { + return ObjectUtils.FillObjectFromDataReader( + DataProvider.GetProviderServiceQuota(providerId)); + } + #endregion + + #region Providers + + public static List GetInstalledProviders(int groupId) + { + List provs = new List(); + ObjectUtils.FillCollectionFromDataSet(provs, + DataProvider.GetGroupProviders(groupId)); + return provs; + } + + public static List GetResourceGroups() + { + List groups = new List(); + ObjectUtils.FillCollectionFromDataSet(groups, + DataProvider.GetResourceGroups()); + return groups; + } + + public static ResourceGroupInfo GetResourceGroup(int groupId) + { + return ObjectUtils.FillObjectFromDataReader( + DataProvider.GetResourceGroup(groupId)); + } + + public static ResourceGroupInfo GetResourceGroupByName(string name) + { + return ObjectUtils.FillObjectFromDataReader( + DataProvider.GetResourceGroupByName(name)); + } + + public static ProviderInfo GetProvider(int providerId) + { + return ObjectUtils.FillObjectFromDataReader( + DataProvider.GetProvider(providerId)); + } + + public static List GetProviders() + { + List provs = new List(); + ObjectUtils.FillCollectionFromDataSet( + provs, DataProvider.GetProviders()); + return provs; + } + + public static List GetProvidersByGroupID(int groupId) + { + List provs = new List(); + ObjectUtils.FillCollectionFromDataSet( + provs, DataProvider.GetGroupProviders(groupId)); + return provs; + } + + public static ProviderInfo GetPackageServiceProvider(int packageId, string groupName) + { + // load service + int serviceId = PackageController.GetPackageServiceId(packageId, groupName); + + if (serviceId == 0) + return null; + + ServiceInfo service = GetServiceInfo(serviceId); + return GetProvider(service.ProviderId); + } + + public static BoolResult IsInstalled(int serverId, int providerId) + { + BoolResult res = TaskManager.StartResultTask("AUTO_DISCOVERY", "IS_INSTALLED"); + + try + { + ProviderInfo provider = GetProvider(providerId); + if (provider == null) + { + TaskManager.CompleteResultTask(res, ErrorCodes.CANNOT_GET_PROVIDER_INFO); + return res; + } + + AutoDiscovery.AutoDiscovery ad = new AutoDiscovery.AutoDiscovery(); + ServiceProviderProxy.ServerInit(ad, serverId); + + res = ad.IsInstalled(provider.ProviderType); + } + catch (Exception ex) + { + TaskManager.CompleteResultTask(res, ErrorCodes.CANNOT_CHECK_IF_PROVIDER_SOFTWARE_INSTALLED, ex); + + } + + TaskManager.CompleteResultTask(); + return res; + } + + public static string GetServerVersion(int serverId) + { + AutoDiscovery.AutoDiscovery ad = new AutoDiscovery.AutoDiscovery(); + ServiceProviderProxy.ServerInit(ad, serverId); + + return ad.GetServerVersion(); + } + + #endregion + + #region IP Addresses + public static List GetIPAddresses(IPAddressPool pool, int serverId) + { + return ObjectUtils.CreateListFromDataReader( + DataProvider.GetIPAddresses(SecurityContext.User.UserId, (int)pool, serverId)); + } + + public static IPAddressesPaged GetIPAddressesPaged(IPAddressPool pool, int serverId, + string filterColumn, string filterValue, string sortColumn, int startRow, int maximumRows) + { + IPAddressesPaged result = new IPAddressesPaged(); + + // get reader + IDataReader reader = DataProvider.GetIPAddressesPaged(SecurityContext.User.UserId, (int)pool, serverId, filterColumn, filterValue, sortColumn, startRow, maximumRows); + + // number of items = first data reader + reader.Read(); + result.Count = (int)reader[0]; + + // items = second data reader + reader.NextResult(); + result.Items = ObjectUtils.CreateListFromDataReader(reader).ToArray(); + + return result; + } + + public static IPAddressInfo GetIPAddress(int addressId) + { + return ObjectUtils.FillObjectFromDataReader( + DataProvider.GetIPAddress(addressId)); + } + + public static string GetExternalIPAddress(int addressId) + { + IPAddressInfo ip = GetIPAddress(addressId); + return (ip != null ? ip.ExternalIP : null); + } + + public static IntResult AddIPAddress(IPAddressPool pool, int serverId, + string externalIP, string internalIP, string subnetMask, string defaultGateway, string comments) + { + IntResult res = new IntResult(); + + #region Check account statuses + // check account + if (!SecurityContext.CheckAccount(res, DemandAccount.NotDemo | DemandAccount.IsAdmin | DemandAccount.IsActive)) + return res; + #endregion + + // start task + res = TaskManager.StartResultTask("IP_ADDRESS", "ADD", externalIP); + + TaskManager.WriteParameter("IP Address", externalIP); + TaskManager.WriteParameter("NAT Address", internalIP); + + try + { + res.Value = DataProvider.AddIPAddress((int)pool, serverId, externalIP, internalIP, + subnetMask, defaultGateway, comments); + + } + catch (Exception ex) + { + TaskManager.CompleteResultTask(res, "IP_ADDRESS_ADD_ERROR", ex); + return res; + } + + TaskManager.CompleteResultTask(); + return res; + } + + public static ResultObject AddIPAddressesRange(IPAddressPool pool, int serverId, + string externalIP, string endIP, string internalIP, string subnetMask, string defaultGateway, string comments) + { + const int MaxSubnet = 512; // TODO bigger max subnet? + + ResultObject res = new ResultObject(); + + #region Check account statuses + // check account + if (!SecurityContext.CheckAccount(res, DemandAccount.NotDemo | DemandAccount.IsAdmin | DemandAccount.IsActive)) + return res; + #endregion + + // start task + res = TaskManager.StartResultTask("IP_ADDRESS", "ADD_RANGE", externalIP); + + TaskManager.WriteParameter("IP Address", externalIP); + TaskManager.WriteParameter("End IP Address", endIP); + TaskManager.WriteParameter("NAT Address", internalIP); + + try + { + if (externalIP == endIP) + { + // add single IP and exit + AddIPAddress(pool, serverId, externalIP, internalIP, subnetMask, defaultGateway, comments); + TaskManager.CompleteResultTask(); + return res; + } + + if (pool == IPAddressPool.PhoneNumbers) + { + string phoneFormat = "D" + Math.Max(externalIP.Length, endIP.Length); + + UInt64 start = UInt64.Parse(externalIP); + UInt64 end = UInt64.Parse(endIP); + + if (end < start) { UInt64 temp = start; start = end; end = temp; } + + const UInt64 maxPhones = 1000; // TODO max? + + end = Math.Min(end, start + maxPhones); + + for (UInt64 number = start; number <= end; number++) + DataProvider.AddIPAddress((int)pool, serverId, number.ToString(phoneFormat), "", subnetMask, defaultGateway, comments); + } + + else + { + var startExternalIP = IPAddress.Parse(externalIP); + var startInternalIP = IPAddress.Parse(internalIP); + var endExternalIP = IPAddress.Parse(endIP); + + // handle CIDR notation IP/Subnet addresses + if (startExternalIP.IsSubnet && endExternalIP == null) + { + endExternalIP = startExternalIP.LastSubnetIP; + startExternalIP = startExternalIP.FirstSubnetIP; + } + + if (startExternalIP.V6 != startInternalIP.V6 && (startExternalIP.V6 != endExternalIP.V6 && endExternalIP != null)) throw new NotSupportedException("All IP addresses must be either V4 or V6."); + + int i = 0; + long step = ((endExternalIP - startExternalIP) > 0) ? 1 : -1; + + while (true) + { + if (i > MaxSubnet) + break; + + // add IP address + DataProvider.AddIPAddress((int)pool, serverId, startExternalIP.ToString(), startInternalIP.ToString(), subnetMask, defaultGateway, comments); + + if (startExternalIP == endExternalIP) + break; + + i++; + + startExternalIP += step; + + if (startInternalIP != 0) + startInternalIP += step; + } + } + } + catch (Exception ex) + { + TaskManager.CompleteResultTask(res, "IP_ADDRESS_ADD_RANGE_ERROR", ex); + return res; + } + + TaskManager.CompleteResultTask(); + return res; + } + + public static ResultObject UpdateIPAddress(int addressId, IPAddressPool pool, int serverId, + string externalIP, string internalIP, string subnetMask, string defaultGateway, string comments) + { + ResultObject res = new ResultObject(); + + #region Check account statuses + // check account + if (!SecurityContext.CheckAccount(res, DemandAccount.NotDemo | DemandAccount.IsAdmin | DemandAccount.IsActive)) + return res; + #endregion + + // start task + res = TaskManager.StartResultTask("IP_ADDRESS", "UPDATE"); + + try + { + DataProvider.UpdateIPAddress(addressId, (int)pool, serverId, externalIP, internalIP, subnetMask, defaultGateway, comments); + } + catch (Exception ex) + { + TaskManager.CompleteResultTask(res, "IP_ADDRESS_UPDATE_ERROR", ex); + return res; + } + + TaskManager.CompleteResultTask(); + return res; + } + + public static ResultObject UpdateIPAddresses(int[] addresses, IPAddressPool pool, int serverId, + string subnetMask, string defaultGateway, string comments) + { + ResultObject res = new ResultObject(); + + #region Check account statuses + // check account + if (!SecurityContext.CheckAccount(res, DemandAccount.NotDemo | DemandAccount.IsAdmin | DemandAccount.IsActive)) + return res; + #endregion + + // start task + res = TaskManager.StartResultTask("IP_ADDRESS", "UPDATE_RANGE"); + + try + { + string xmlIds = PrepareIPsXML(addresses); + DataProvider.UpdateIPAddresses(xmlIds, (int)pool, serverId, subnetMask, defaultGateway, comments); + } + catch (Exception ex) + { + TaskManager.CompleteResultTask(res, "IP_ADDRESSES_UPDATE_ERROR", ex); + return res; + } + + TaskManager.CompleteResultTask(); + return res; + } + + public static ResultObject DeleteIPAddresses(int[] addresses) + { + ResultObject res = new ResultObject(); + + #region Check account statuses + // check account + if (!SecurityContext.CheckAccount(res, DemandAccount.NotDemo | DemandAccount.IsAdmin | DemandAccount.IsActive)) + return res; + #endregion + + // start task + res = TaskManager.StartResultTask("IP_ADDRESS", "DELETE_RANGE"); + + try + { + foreach (int addressId in addresses) + { + ResultObject addrRes = DeleteIPAddress(addressId); + if (!addrRes.IsSuccess && addrRes.ErrorCodes.Count > 0) + { + res.ErrorCodes.AddRange(addrRes.ErrorCodes); + res.IsSuccess = false; + } + } + } + catch (Exception ex) + { + TaskManager.CompleteResultTask(res, "IP_ADDRESS_DELETE_RANGE_ERROR", ex); + return res; + } + + TaskManager.CompleteResultTask(); + return res; + } + + public static ResultObject DeleteIPAddress(int addressId) + { + ResultObject res = new ResultObject(); + + #region Check account statuses + // check account + if (!SecurityContext.CheckAccount(res, DemandAccount.NotDemo | DemandAccount.IsAdmin | DemandAccount.IsActive)) + return res; + #endregion + + // start task + res = TaskManager.StartResultTask("IP_ADDRESS", "DELETE"); + + try + { + int result = DataProvider.DeleteIPAddress(addressId); + if (result == -1) + { + TaskManager.CompleteResultTask(res, "ERROR_IP_USED_IN_NAME_SERVER"); + return res; + } + else if (result == -2) + { + TaskManager.CompleteResultTask(res, "ERROR_IP_USED_BY_PACKAGE_ITEM"); + return res; + } + } + catch (Exception ex) + { + TaskManager.CompleteResultTask(res, "IP_ADDRESS_DELETE_ERROR", ex); + return res; + } + + TaskManager.CompleteResultTask(); + return res; + } + #endregion + + #region Package IP Addresses + public static PackageIPAddressesPaged GetPackageIPAddresses(int packageId, int orgId, IPAddressPool pool, + string filterColumn, string filterValue, string sortColumn, int startRow, int maximumRows, bool recursive) + { + PackageIPAddressesPaged result = new PackageIPAddressesPaged(); + + // get reader + IDataReader reader = DataProvider.GetPackageIPAddresses(packageId, orgId, (int)pool, filterColumn, filterValue, sortColumn, startRow, maximumRows, recursive); + + // number of items = first data reader + reader.Read(); + result.Count = (int)reader[0]; + + // items = second data reader + reader.NextResult(); + result.Items = ObjectUtils.CreateListFromDataReader(reader).ToArray(); + + return result; + } + + public static int GetPackageIPAddressesCount(int packageId, int orgId, IPAddressPool pool) + { + return DataProvider.GetPackageIPAddressesCount(packageId, orgId, (int)pool); + } + + public static List GetUnallottedIPAddresses(int packageId, string groupName, IPAddressPool pool) + { + // get service ID + int serviceId = PackageController.GetPackageServiceId(packageId, groupName); + + // get unallotted addresses + return ObjectUtils.CreateListFromDataReader( + DataProvider.GetUnallottedIPAddresses(packageId, serviceId, (int)pool)); + } + + public static List GetPackageUnassignedIPAddresses(int packageId, int orgId, IPAddressPool pool) + { + return ObjectUtils.CreateListFromDataReader( + DataProvider.GetPackageUnassignedIPAddresses(SecurityContext.User.UserId, packageId, orgId, (int)pool)); + } + + public static List GetPackageUnassignedIPAddresses(int packageId, IPAddressPool pool) + { + return GetPackageUnassignedIPAddresses(packageId, 0, pool); + } + + public static void AllocatePackageIPAddresses(int packageId, int[] addressId) + { + // prepare XML document + string xml = PrepareIPsXML(addressId); + + // save to database + DataProvider.AllocatePackageIPAddresses(packageId, 0, xml); + } + + public static ResultObject AllocatePackageIPAddresses(int packageId, int orgId, string groupName, IPAddressPool pool, bool allocateRandom, int addressesNumber, int[] addressId) + { + #region Check account and space statuses + // create result object + ResultObject res = new ResultObject(); + + // check account + if (!SecurityContext.CheckAccount(res, DemandAccount.NotDemo | DemandAccount.IsActive)) + return res; + + // check package + if (!SecurityContext.CheckPackage(res, packageId, DemandPackage.IsActive)) + return res; + #endregion + + // get total number of addresses requested + if (!allocateRandom && addressId != null) + addressesNumber = addressId.Length; + + if (addressesNumber <= 0) + { + res.IsSuccess = true; + return res; // just exit + } + + // check quotas + string quotaName = GetIPAddressesQuotaByResourceGroup(groupName, pool); + + // get maximum server IPs + List ips = ServerController.GetUnallottedIPAddresses(packageId, groupName, pool); + int maxAvailableIPs = ips.Count; + + if (maxAvailableIPs == 0) + { + res.ErrorCodes.Add("IP_ADDRESSES_POOL_IS_EMPTY"); + return res; + } + + // get hosting plan IP limits + PackageContext cntx = PackageController.GetPackageContext(packageId); + int quotaAllocated = cntx.Quotas[quotaName].QuotaAllocatedValue; + int quotaUsed = cntx.Quotas[quotaName].QuotaUsedValue; + + if (pool == IPAddressPool.PhoneNumbers) + quotaUsed = ServerController.GetPackageIPAddressesCount(packageId, orgId, pool); + + // check the maximum allowed number + if (quotaAllocated != -1) // check only if not unlimited + { + if (addressesNumber > (quotaAllocated - quotaUsed)) + { + res.ErrorCodes.Add("IP_ADDRESSES_QUOTA_LIMIT_REACHED"); + return res; + } + } + + // check if requested more than available + if (maxAvailableIPs != -1 && + (addressesNumber > maxAvailableIPs)) + addressesNumber = maxAvailableIPs; + + res = TaskManager.StartResultTask("IP_ADDRESS", "ALLOCATE_PACKAGE_IP", packageId); + + try + { + if (allocateRandom) + { + int[] ids = new int[addressesNumber]; + for (int i = 0; i < addressesNumber; i++) + ids[i] = ips[i].AddressId; + + addressId = ids; + } + + // prepare XML document + string xml = PrepareIPsXML(addressId); + + // save to database + try + { + DataProvider.AllocatePackageIPAddresses(packageId, orgId, xml); + } + catch (Exception ex) + { + TaskManager.CompleteResultTask(res, VirtualizationErrorCodes.CANNOT_ADD_IP_ADDRESSES_TO_DATABASE, ex); + return res; + } + } + catch (Exception ex) + { + TaskManager.CompleteResultTask(res, VirtualizationErrorCodes.ALLOCATE_EXTERNAL_ADDRESSES_GENERAL_ERROR, ex); + return res; + } + + TaskManager.CompleteResultTask(); + return res; + } + + public static ResultObject AllocateMaximumPackageIPAddresses(int packageId, string groupName, IPAddressPool pool) + { + // get maximum server IPs + int maxAvailableIPs = GetUnallottedIPAddresses(packageId, groupName, pool).Count; + + // get quota name + string quotaName = GetIPAddressesQuotaByResourceGroup(groupName, pool); + + // get hosting plan IPs + int number = 0; + + PackageContext cntx = PackageController.GetPackageContext(packageId); + if (cntx.Quotas.ContainsKey(quotaName)) + { + number = cntx.Quotas[quotaName].QuotaAllocatedValue; + if (number == -1) + { + // unlimited + if (number > maxAvailableIPs) // requested more than available + number = maxAvailableIPs; // assign max available server IPs + } + else + { + // quota + number = number - cntx.Quotas[quotaName].QuotaUsedValue; + } + } + + // allocate + return AllocatePackageIPAddresses(packageId, 0, groupName, pool, + true, number, new int[0]); + } + + public static ResultObject DeallocatePackageIPAddresses(int packageId, int[] addressId) + { + #region Check account and space statuses + // create result object + ResultObject res = new ResultObject(); + + // check account + if (!SecurityContext.CheckAccount(res, DemandAccount.NotDemo | DemandAccount.IsActive)) + return res; + + // check package + if (!SecurityContext.CheckPackage(res, packageId, DemandPackage.IsActive)) + return res; + #endregion + + res = TaskManager.StartResultTask("IP_ADDRESS", "DEALLOCATE_PACKAGE_IP", packageId); + + try + { + foreach (int id in addressId) + { + DataProvider.DeallocatePackageIPAddress(id); + } + } + catch (Exception ex) + { + TaskManager.CompleteResultTask(res, VirtualizationErrorCodes.CANNOT_DELLOCATE_EXTERNAL_ADDRESSES, ex); + return res; + } + + TaskManager.CompleteResultTask(); + return res; + } + + #region Item IP Addresses + public static List GetItemIPAddresses(int itemId, IPAddressPool pool) + { + return ObjectUtils.CreateListFromDataReader( + DataProvider.GetItemIPAddresses(SecurityContext.User.UserId, itemId, (int)pool)); + } + + public static PackageIPAddress GetPackageIPAddress(int packageAddressId) + { + return ObjectUtils.FillObjectFromDataReader( + DataProvider.GetPackageIPAddress(packageAddressId)); + } + + public static int AddItemIPAddress(int itemId, int packageAddressId) + { + return DataProvider.AddItemIPAddress(SecurityContext.User.UserId, itemId, packageAddressId); + } + + public static int SetItemPrimaryIPAddress(int itemId, int packageAddressId) + { + return DataProvider.SetItemPrimaryIPAddress(SecurityContext.User.UserId, itemId, packageAddressId); + } + + public static int DeleteItemIPAddress(int itemId, int packageAddressId) + { + return DataProvider.DeleteItemIPAddress(SecurityContext.User.UserId, itemId, packageAddressId); + } + + public static int DeleteItemIPAddresses(int itemId) + { + return DataProvider.DeleteItemIPAddresses(SecurityContext.User.UserId, itemId); + } + + #endregion + + public static string PrepareIPsXML(int[] items) + { + XmlDocument doc = new XmlDocument(); + XmlNode root = doc.CreateElement("items"); + foreach (int item in items) + { + XmlNode node = doc.CreateElement("item"); + XmlAttribute attribute = doc.CreateAttribute("id"); + attribute.Value = item.ToString(); + node.Attributes.Append(attribute); + root.AppendChild(node); + } + doc.AppendChild(root); + return doc.InnerXml; + } + + private static string GetIPAddressesQuotaByResourceGroup(string groupName, IPAddressPool pool) + { + if (pool == IPAddressPool.PhoneNumbers) + return Quotas.LYNC_PHONE; + + if (String.Compare(groupName, ResourceGroups.VPS, true) == 0) + { + return Quotas.VPS_EXTERNAL_IP_ADDRESSES_NUMBER; + } + else if (String.Compare(groupName, ResourceGroups.VPSForPC, true) == 0) + { + return Quotas.VPSForPC_EXTERNAL_IP_ADDRESSES_NUMBER; + } + else + { + return Quotas.WEB_IP_ADDRESSES; + } + } + #endregion + + #region Clusters + public static List GetClusters() + { + List list = new List(); + ObjectUtils.FillCollectionFromDataReader(list, + DataProvider.GetClusters(SecurityContext.User.UserId)); + return list; + } + + public static int AddCluster(ClusterInfo cluster) + { + // check account + int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo | DemandAccount.IsAdmin + | DemandAccount.IsActive); + if (accountCheck < 0) return accountCheck; + + return DataProvider.AddCluster(cluster.ClusterName); + } + + public static int DeleteCluster(int clusterId) + { + // check account + int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo | DemandAccount.IsAdmin + | DemandAccount.IsActive); + if (accountCheck < 0) return accountCheck; + + DataProvider.DeleteCluster(clusterId); + + return 0; + } + #endregion + + #region Global DNS records + public static DataSet GetRawDnsRecordsByService(int serviceId) + { + return DataProvider.GetDnsRecordsByService(SecurityContext.User.UserId, serviceId); + } + + public static DataSet GetRawDnsRecordsByServer(int serverId) + { + return DataProvider.GetDnsRecordsByServer(SecurityContext.User.UserId, serverId); + } + + public static DataSet GetRawDnsRecordsByPackage(int packageId) + { + return DataProvider.GetDnsRecordsByPackage(SecurityContext.User.UserId, packageId); + } + + public static DataSet GetRawDnsRecordsByGroup(int groupId) + { + return DataProvider.GetDnsRecordsByGroup(groupId); + } + + public static DataSet GetRawDnsRecordsTotal(int packageId) + { + return DataProvider.GetDnsRecordsTotal(SecurityContext.User.UserId, packageId); + } + + public static List GetDnsRecordsByService(int serviceId) + { + return ObjectUtils.CreateListFromDataSet( + DataProvider.GetDnsRecordsByService(SecurityContext.User.UserId, serviceId)); + } + + public static List GetDnsRecordsByServer(int serverId) + { + return ObjectUtils.CreateListFromDataSet( + DataProvider.GetDnsRecordsByServer(SecurityContext.User.UserId, serverId)); + } + + public static List GetDnsRecordsByPackage(int packageId) + { + return ObjectUtils.CreateListFromDataSet( + DataProvider.GetDnsRecordsByPackage(SecurityContext.User.UserId, packageId)); + } + + public static List GetDnsRecordsByGroup(int groupId) + { + return ObjectUtils.CreateListFromDataSet( + DataProvider.GetDnsRecordsByGroup(groupId)); + } + + public static List GetDnsRecordsTotal(int packageId) + { + return ObjectUtils.CreateListFromDataSet( + GetRawDnsRecordsTotal(packageId)); + } + + public static GlobalDnsRecord GetDnsRecord(int recordId) + { + return ObjectUtils.FillObjectFromDataReader( + DataProvider.GetDnsRecord(SecurityContext.User.UserId, recordId)); + } + + public static int AddDnsRecord(GlobalDnsRecord record) + { + // check account + int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo | DemandAccount.IsReseller + | DemandAccount.IsActive); + if (accountCheck < 0) return accountCheck; + + TaskManager.StartTask("GLOBAL_DNS", "ADD", record.RecordName); + TaskManager.WriteParameter("Type", record.RecordType); + TaskManager.WriteParameter("Data", record.RecordData); + + DataProvider.AddDnsRecord(SecurityContext.User.UserId, record.ServiceId, record.ServerId, record.PackageId, + record.RecordType, record.RecordName, record.RecordData, record.MxPriority, + record.SrvPriority, record.SrvWeight, record.SrvPort, record.IpAddressId); + + TaskManager.CompleteTask(); + + return 0; + } + + public static int UpdateDnsRecord(GlobalDnsRecord record) + { + // check account + int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo | DemandAccount.IsReseller + | DemandAccount.IsActive); + if (accountCheck < 0) return accountCheck; + + TaskManager.StartTask("GLOBAL_DNS", "UPDATE", record.RecordName); + TaskManager.WriteParameter("Type", record.RecordType); + TaskManager.WriteParameter("Data", record.RecordData); + + DataProvider.UpdateDnsRecord(SecurityContext.User.UserId, record.RecordId, + record.RecordType, record.RecordName, record.RecordData, record.MxPriority, + record.SrvPriority, record.SrvWeight, record.SrvPort, record.IpAddressId); + + TaskManager.CompleteTask(); + + return 0; + } + + public static int DeleteDnsRecord(int recordId) + { + // check account + int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo | DemandAccount.IsReseller + | DemandAccount.IsActive); + if (accountCheck < 0) return accountCheck; + + GlobalDnsRecord record = GetDnsRecord(recordId); + + TaskManager.StartTask("GLOBAL_DNS", "DELETE", record.RecordName); + TaskManager.WriteParameter("Type", record.RecordType); + TaskManager.WriteParameter("Data", record.RecordData); + + DataProvider.DeleteDnsRecord(SecurityContext.User.UserId, recordId); + + TaskManager.CompleteTask(); + + return 0; + } + #endregion + + #region Domains + public static int CheckDomain(string domainName) + { + int checkDomainResult = DataProvider.CheckDomain(-10, domainName, false); + + if (checkDomainResult == -1) + return BusinessErrorCodes.ERROR_DOMAIN_ALREADY_EXISTS; + else if (checkDomainResult == -2) + return BusinessErrorCodes.ERROR_RESTRICTED_DOMAIN; + else + return checkDomainResult; + } + + public static List GetDomains(int packageId, bool recursive) + { + return ObjectUtils.CreateListFromDataSet( + DataProvider.GetDomains(SecurityContext.User.UserId, packageId, recursive)); + } + + public static List GetDomains(int packageId) + { + return ObjectUtils.CreateListFromDataSet( + DataProvider.GetDomains(SecurityContext.User.UserId, packageId, true)); + } + + + public static List GetDomainsByZoneId(int zoneId) + { + return ObjectUtils.CreateListFromDataSet( + DataProvider.GetDomainsByZoneId(SecurityContext.User.UserId, zoneId)); + } + + public static List GetDomainsByDomainItemId(int zoneId) + { + return ObjectUtils.CreateListFromDataSet( + DataProvider.GetDomainsByDomainItemId(SecurityContext.User.UserId, zoneId)); + } + + + public static List GetMyDomains(int packageId) + { + return ObjectUtils.CreateListFromDataSet( + DataProvider.GetDomains(SecurityContext.User.UserId, packageId, false)); + } + + public static List GetResellerDomains(int packageId) + { + return ObjectUtils.CreateListFromDataSet( + DataProvider.GetResellerDomains(SecurityContext.User.UserId, packageId)); + } + + public static DataSet GetDomainsPaged(int packageId, int serverId, bool recursive, string filterColumn, string filterValue, + string sortColumn, int startRow, int maximumRows) + { + DataSet ds = DataProvider.GetDomainsPaged(SecurityContext.User.UserId, + packageId, serverId, recursive, filterColumn, filterValue, + sortColumn, startRow, maximumRows); + + return ds; + } + + public static DomainInfo GetDomain(int domainId) + { + // get domain by ID + DomainInfo domain = GetDomainItem(domainId); + + // return + return GetDomain(domain); + } + + public static DomainInfo GetDomain(string domainName) + { + return ObjectUtils.FillObjectFromDataReader( + DataProvider.GetDomainByName(SecurityContext.User.UserId, domainName,false, false)); + } + + public static DomainInfo GetDomain(string domainName, bool searchOnDomainPointer, bool isDomainPointer) + { + return GetDomainItem(domainName, searchOnDomainPointer, isDomainPointer); + } + + + private static DomainInfo GetDomain(DomainInfo domain) + { + // check domain + if (domain == null) + return null; + + // get instant alias + domain.InstantAliasName = GetDomainAlias(domain.PackageId, domain.DomainName); + DomainInfo instantAlias = GetDomainItem(domain.InstantAliasName, true, false); + if (instantAlias != null) + domain.InstantAliasId = instantAlias.DomainId; + + return domain; + } + + public static DomainInfo GetDomainItem(int domainId) + { + return ObjectUtils.FillObjectFromDataReader( + DataProvider.GetDomain(SecurityContext.User.UserId, domainId)); + } + + public static DomainInfo GetDomainItem(string domainName) + { + return GetDomainItem(domainName, false, false); + } + + + public static DomainInfo GetDomainItem(string domainName, bool searchOnDomainPointer, bool isDomainPointer) + { + return ObjectUtils.FillObjectFromDataReader( + DataProvider.GetDomainByName(SecurityContext.User.UserId, domainName, searchOnDomainPointer, isDomainPointer)); + } + + public static string GetDomainAlias(int packageId, string domainName) + { + // load package settings + PackageSettings packageSettings = PackageController.GetPackageSettings(packageId, + PackageSettings.INSTANT_ALIAS); + + string instantAlias = packageSettings["InstantAlias"]; + + // add instant alias + if (!String.IsNullOrEmpty(instantAlias)) + { + instantAlias = domainName + "." + instantAlias; + } + return instantAlias; + } + + public static int AddDomainWithProvisioning(int packageId, string domainName, DomainType domainType, + bool createWebSite, int pointWebSiteId, int pointMailDomainId, bool createDnsZone, bool createInstantAlias, bool allowSubDomains, string hostName) + { + // check account + int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo | DemandAccount.IsActive); + if (accountCheck < 0) return accountCheck; + + // check package + int packageCheck = SecurityContext.CheckPackage(packageId, DemandPackage.IsActive); + if (packageCheck < 0) return packageCheck; + + // set flags + bool isSubDomain = (domainType == DomainType.SubDomain || domainType == DomainType.ProviderSubDomain); + bool isDomainPointer = (domainType == DomainType.DomainPointer); + + // check services + bool dnsEnabled = (PackageController.GetPackageServiceId(packageId, ResourceGroups.Dns) > 0); + bool webEnabled = (PackageController.GetPackageServiceId(packageId, ResourceGroups.Web) > 0); + bool mailEnabled = (PackageController.GetPackageServiceId(packageId, ResourceGroups.Mail) > 0); + + // add main domain + int domainId = AddDomainInternal(packageId, domainName, createDnsZone && dnsEnabled, isSubDomain, false, isDomainPointer, allowSubDomains); + if (domainId < 0) + return domainId; + + DomainInfo domain = ServerController.GetDomain(domainId); + if (domain != null) + { + if (domain.ZoneItemId != 0) + { + ServerController.AddServiceDNSRecords(packageId, ResourceGroups.Os, domain, ""); + ServerController.AddServiceDNSRecords(packageId, ResourceGroups.Dns, domain, ""); + ServerController.AddServiceDNSRecords(packageId, ResourceGroups.Ftp, domain, ""); + ServerController.AddServiceDNSRecords(packageId, ResourceGroups.MsSql2000, domain, ""); + ServerController.AddServiceDNSRecords(packageId, ResourceGroups.MsSql2005, domain, ""); + ServerController.AddServiceDNSRecords(packageId, ResourceGroups.MsSql2008, domain, ""); + ServerController.AddServiceDNSRecords(packageId, ResourceGroups.MsSql2012, domain, ""); + ServerController.AddServiceDNSRecords(packageId, ResourceGroups.MsSql2014, domain, ""); + ServerController.AddServiceDNSRecords(packageId, ResourceGroups.MySql4, domain, ""); + ServerController.AddServiceDNSRecords(packageId, ResourceGroups.MySql5, domain, ""); + ServerController.AddServiceDNSRecords(packageId, ResourceGroups.Statistics, domain, ""); + ServerController.AddServiceDNSRecords(packageId, ResourceGroups.VPS, domain, ""); + ServerController.AddServiceDNSRecords(packageId, ResourceGroups.VPSForPC, domain, ""); + } + } + + // add instant alias + createInstantAlias &= (domainType != DomainType.DomainPointer); + if (createInstantAlias) + { + // check if instant alias is configured + string domainAlias = GetDomainAlias(packageId, domainName); + + // add instant alias if required + if (!String.IsNullOrEmpty(domainAlias)) + { + // add alias + AddDomainInternal(packageId, domainAlias, dnsEnabled, false, true, false, false); + } + } + + // create web site if requested + int webSiteId = 0; + if (webEnabled && createWebSite) + { + webSiteId = WebServerController.AddWebSite(packageId, hostName, domainId, 0, createInstantAlias, false); + + if (webSiteId < 0) + { + // return + return webSiteId; + } + } + + // add web site pointer + if (webEnabled && pointWebSiteId > 0) + { + WebServerController.AddWebSitePointer(pointWebSiteId, hostName, domainId, true, false, false); + } + + // add mail domain pointer + if (mailEnabled && pointMailDomainId > 0) + { + MailServerController.AddMailDomainPointer(pointMailDomainId, domainId); + } + + return domainId; + } + + public static int AddDomain(DomainInfo domain) + { + return AddDomain(domain, false, false); + } + + public static int AddDomain(DomainInfo domain, bool createInstantAlias, bool createZone) + { + // check account + int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo | DemandAccount.IsActive); + if (accountCheck < 0) return accountCheck; + + // check package + int packageCheck = SecurityContext.CheckPackage(domain.PackageId, DemandPackage.IsActive); + if (packageCheck < 0) return packageCheck; + + // add main domain + int domainId = AddDomainInternal(domain.PackageId, domain.DomainName, createZone, + domain.IsSubDomain, createInstantAlias, domain.IsDomainPointer, false); + + /* + if (domainId < 0) + return domainId; + + // add instant alias if required + string domainAlias = GetDomainAlias(domain.PackageId, domain.DomainName); + if (createInstantAlias && !String.IsNullOrEmpty(domainAlias)) + { + AddDomainInternal(domain.PackageId, domainAlias, true, false, true, false, false); + } + */ + + return domainId; + } + + private static int AddDomainInternal(int packageId, string domainName, + bool createDnsZone, bool isSubDomain, bool isInstantAlias, bool isDomainPointer, bool allowSubDomains) + { + // check quota + if (!isInstantAlias) + { + if (isSubDomain) + { + // sub-domain + if (PackageController.GetPackageQuota(packageId, Quotas.OS_SUBDOMAINS).QuotaExhausted) + return BusinessErrorCodes.ERROR_SUBDOMAIN_QUOTA_LIMIT; + } + else if (isDomainPointer) + { + // domain pointer + //if (PackageController.GetPackageQuota(packageId, Quotas.OS_DOMAINPOINTERS).QuotaExhausted) + //return BusinessErrorCodes.ERROR_DOMAIN_QUOTA_LIMIT; + } + else + { + // top-level domain + if (PackageController.GetPackageQuota(packageId, Quotas.OS_DOMAINS).QuotaExhausted) + return BusinessErrorCodes.ERROR_DOMAIN_QUOTA_LIMIT; + } + } + + // check if the domain already exists + int checkResult = DataProvider.CheckDomain(packageId, domainName, isDomainPointer); + + if (checkResult < 0) + { + if (checkResult == -1) + return BusinessErrorCodes.ERROR_DOMAIN_ALREADY_EXISTS; + else if (checkResult == -2) + return BusinessErrorCodes.ERROR_RESTRICTED_DOMAIN; + else + return checkResult; + } + /* + if (domainName.ToLower().StartsWith("www.")) + return BusinessErrorCodes.ERROR_DOMAIN_STARTS_WWW; + */ + + // place log record + TaskManager.StartTask("DOMAIN", "ADD", domainName, 0, packageId, new BackgroundTaskParameter("CreateZone", createDnsZone)); + + // create DNS zone + int zoneItemId = 0; + if (createDnsZone) + { + try + { + // add DNS zone + int serviceId = PackageController.GetPackageServiceId(packageId, ResourceGroups.Dns); + if (serviceId > 0) + { + zoneItemId = DnsServerController.AddZone(packageId, serviceId, domainName, true, isInstantAlias); + } + + if (zoneItemId < 0) + { + TaskManager.CompleteTask(); + return zoneItemId; + } + } + catch (Exception ex) + { + throw TaskManager.WriteError(ex); + } + } + + int itemId = DataProvider.AddDomain(SecurityContext.User.UserId, + packageId, zoneItemId, domainName, allowSubDomains, 0, 0, isSubDomain, isInstantAlias, isDomainPointer); + + TaskManager.ItemId = itemId; + + TaskManager.CompleteTask(); + + return itemId; + } + + public static int AddDomainItem(DomainInfo domain) + { + return DataProvider.AddDomain(SecurityContext.User.UserId, + domain.PackageId, domain.ZoneItemId, domain.DomainName, domain.HostingAllowed, + domain.WebSiteId, domain.MailDomainId, domain.IsSubDomain, domain.IsInstantAlias, domain.IsDomainPointer); + } + + public static void AddServiceDNSRecords(int packageId, string groupName, DomainInfo domain, string serviceIP) + { + AddServiceDNSRecords(packageId, groupName, domain, serviceIP, false); + } + + public static void AddServiceDNSRecords(int packageId, string groupName, DomainInfo domain, string serviceIP, bool wildcardOnly) + { + int serviceId = PackageController.GetPackageServiceId(packageId, groupName); + if (serviceId > 0) + { + List tmpZoneRecords = new List(); + List dnsRecords = ServerController.GetDnsRecordsByService(serviceId); + + if (wildcardOnly) + { + List temp = new List(); + foreach (GlobalDnsRecord d in dnsRecords) + { + if ((d.RecordName == "*") || + (d.RecordName == "@")) + temp.Add(d); + } + + dnsRecords = temp; + } + + DnsZone zone = (DnsZone)PackageController.GetPackageItem(domain.ZoneItemId); + tmpZoneRecords.AddRange(DnsServerController.BuildDnsResourceRecords(dnsRecords, "", domain.ZoneName, serviceIP)); + + try + { + DNSServer dns = new DNSServer(); + ServiceProviderProxy.Init(dns, zone.ServiceId); + + DnsRecord[] domainRecords = dns.GetZoneRecords(domain.DomainName); + + List zoneRecords = new List(); + foreach (DnsRecord t in tmpZoneRecords) + { + if (!RecordDoesExist(t, domainRecords)) + zoneRecords.Add(t); + } + + + // add new resource records + dns.AddZoneRecords(zone.Name, zoneRecords.ToArray()); + } + catch (Exception ex1) + { + TaskManager.WriteError(ex1, "Error updating DNS records"); + } + } + } + + + + public static void RemoveServiceDNSRecords(int packageId, string groupName, DomainInfo domain, string serviceIP, bool wildcardOnly) + { + int serviceId = PackageController.GetPackageServiceId(packageId, groupName); + if (serviceId > 0) + { + List zoneRecords = new List(); + List dnsRecords = ServerController.GetDnsRecordsByService(serviceId); + if (wildcardOnly) + { + List temp = new List(); + foreach (GlobalDnsRecord d in dnsRecords) + { + if ((d.RecordName == "*") || + (d.RecordName == "@")) + temp.Add(d); + } + + dnsRecords = temp; + } + + DnsZone zone = (DnsZone)PackageController.GetPackageItem(domain.ZoneItemId); + zoneRecords.AddRange(DnsServerController.BuildDnsResourceRecords(dnsRecords, "", domain.ZoneName, serviceIP)); + + try + { + DNSServer dns = new DNSServer(); + ServiceProviderProxy.Init(dns, zone.ServiceId); + + // add new resource records + dns.DeleteZoneRecords(zone.Name, zoneRecords.ToArray()); + } + catch (Exception ex1) + { + TaskManager.WriteError(ex1, "Error updating DNS records"); + } + } + } + + + private static bool RecordDoesExist(DnsRecord record, DnsRecord[] domainRecords) + { + foreach (DnsRecord d in domainRecords) + { + if ((record.RecordName.ToLower() == d.RecordName.ToLower()) & + (record.RecordType == d.RecordType)) + { + return true; + } + } + + return false; + } + + + public static int UpdateDomain(DomainInfo domain) + { + // check account + int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo); + if (accountCheck < 0) return accountCheck; + + // place log record + DomainInfo origDomain = GetDomain(domain.DomainId); + TaskManager.StartTask("DOMAIN", "UPDATE", origDomain.DomainName, domain.DomainId); + + try + { + DataProvider.UpdateDomain(SecurityContext.User.UserId, + domain.DomainId, domain.ZoneItemId, domain.HostingAllowed, domain.WebSiteId, + domain.MailDomainId, domain.DomainItemId); + + return 0; + } + catch (Exception ex) + { + throw TaskManager.WriteError(ex); + } + finally + { + TaskManager.CompleteTask(); + } + } + + public static int DetachDomain(int domainId) + { + // check account + int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo | DemandAccount.IsAdmin); + if (accountCheck < 0) return accountCheck; + + // load domain + DomainInfo domain = GetDomain(domainId); + if (domain == null) + return 0; + + // place log record + TaskManager.StartTask("DOMAIN", "DETACH", domain.DomainName, domain.DomainId); + + try + { + // check if domain can be deleted + if (domain.WebSiteId > 0) + { + TaskManager.WriteError("Domain points to the existing web site"); + return BusinessErrorCodes.ERROR_DOMAIN_POINTS_TO_WEB_SITE; + } + + if (domain.MailDomainId > 0) + { + TaskManager.WriteError("Domain points to the existing mail domain"); + return BusinessErrorCodes.ERROR_DOMAIN_POINTS_TO_MAIL_DOMAIN; + } + + if (DataProvider.ExchangeOrganizationDomainExists(domain.DomainId)) + { + TaskManager.WriteError("Domain points to the existing organization domain"); + return BusinessErrorCodes.ERROR_ORGANIZATION_DOMAIN_IS_IN_USE; + } + + + List domains = GetDomainsByDomainItemId(domain.DomainId); + foreach (DomainInfo d in domains) + { + if (d.WebSiteId > 0) + { + TaskManager.WriteError("Domain points to the existing web site"); + return BusinessErrorCodes.ERROR_DOMAIN_POINTS_TO_WEB_SITE; + } + } + + + // remove DNS zone meta-item if required + if (domain.ZoneItemId > 0) + { + PackageController.DeletePackageItem(domain.ZoneItemId); + } + + // delete domain + DataProvider.DeleteDomain(SecurityContext.User.UserId, domainId); + + return 0; + } + catch (Exception ex) + { + throw TaskManager.WriteError(ex); + } + finally + { + TaskManager.CompleteTask(); + } + } + + public static int DeleteDomain(int domainId) + { + // check account + int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo); + if (accountCheck < 0) return accountCheck; + + // load domain + DomainInfo domain = GetDomain(domainId); + if (domain == null) + return 0; + + // place log record + TaskManager.StartTask("DOMAIN", "DELETE", domain.DomainName, domain.DomainId); + + try + { + // check if domain can be deleted + if (domain.WebSiteId > 0) + { + TaskManager.WriteError("Domain points to the existing web site"); + return BusinessErrorCodes.ERROR_DOMAIN_POINTS_TO_WEB_SITE; + } + + if (domain.MailDomainId > 0) + { + TaskManager.WriteError("Domain points to the existing mail domain"); + return BusinessErrorCodes.ERROR_DOMAIN_POINTS_TO_MAIL_DOMAIN; + } + + if (DataProvider.ExchangeOrganizationDomainExists(domain.DomainId)) + { + TaskManager.WriteError("Domain points to the existing organization domain"); + return BusinessErrorCodes.ERROR_ORGANIZATION_DOMAIN_IS_IN_USE; + } + + + if (!domain.IsDomainPointer) + { + List domains = GetDomainsByDomainItemId(domain.DomainId); + foreach (DomainInfo d in domains) + { + if (d.WebSiteId > 0) + { + TaskManager.WriteError("Domain points to the existing web site"); + return BusinessErrorCodes.ERROR_DOMAIN_POINTS_TO_WEB_SITE; + } + } + } + + + // delete instant alias + if (domain.InstantAliasId > 0) + { + int res = DeleteDomainInstantAlias(domainId); + if (res < 0) + return res; + } + + // delete zone if required + if (!domain.IsDomainPointer) + DnsServerController.DeleteZone(domain.ZoneItemId); + + // delete domain + DataProvider.DeleteDomain(SecurityContext.User.UserId, domainId); + + return 0; + } + catch (Exception ex) + { + throw TaskManager.WriteError(ex); + } + finally + { + TaskManager.CompleteTask(); + } + } + + public static int DisableDomainDns(int domainId) + { + // check account + int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo); + if (accountCheck < 0) return accountCheck; + + // load domain + DomainInfo domain = GetDomain(domainId); + + // check if already disabled + if (domain.ZoneItemId == 0) + return 0; + + // place log record + TaskManager.StartTask("DOMAIN", "DISABLE_DNS", domain.DomainName, domain.DomainId); + + try + { + // delete instant alias + int aliasResult = DeleteDomainInstantAlias(domainId); + if (aliasResult < 0) + return aliasResult; + + // delete zone if required + if (domain.ZoneItemId > 0) + { + // delete zone + DnsServerController.DeleteZone(domain.ZoneItemId); + + // update domain item + domain.ZoneItemId = 0; + UpdateDomain(domain); + } + + return 0; + } + catch (Exception ex) + { + throw TaskManager.WriteError(ex); + } + finally + { + TaskManager.CompleteTask(); + } + } + + public static int EnableDomainDns(int domainId) + { + // check account + int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo); + if (accountCheck < 0) return accountCheck; + + // load domain + DomainInfo domain = GetDomain(domainId); + + // check if already enabled + if (domain.ZoneItemId > 0) + return 0; + + // place log record + TaskManager.StartTask("DOMAIN", "ENABLE_DNS", domain.DomainName, domain.DomainId); + + try + { + // create DNS zone + int serviceId = PackageController.GetPackageServiceId(domain.PackageId, ResourceGroups.Dns); + if (serviceId > 0) + { + // add zone + int zoneItemId = DnsServerController.AddZone(domain.PackageId, serviceId, domain.DomainName); + + // check results + if (zoneItemId < 0) + { + TaskManager.CompleteTask(); + return zoneItemId; + } + + // update domain + domain.ZoneItemId = zoneItemId; + UpdateDomain(domain); + + domain = GetDomain(domainId); + + + PackageContext cntx = PackageController.GetPackageContext(domain.PackageId); + if (cntx != null) + { + // fill dictionaries + foreach (HostingPlanGroupInfo group in cntx.GroupsArray) + { + try + { + bool bFound = false; + switch (group.GroupName) + { + case ResourceGroups.Dns: + ServerController.AddServiceDNSRecords(domain.PackageId, ResourceGroups.Ftp, domain, ""); + ServerController.AddServiceDNSRecords(domain.PackageId, ResourceGroups.MsSql2000, domain, ""); + ServerController.AddServiceDNSRecords(domain.PackageId, ResourceGroups.MsSql2005, domain, ""); + ServerController.AddServiceDNSRecords(domain.PackageId, ResourceGroups.MsSql2008, domain, ""); + ServerController.AddServiceDNSRecords(domain.PackageId, ResourceGroups.MsSql2012, domain, ""); + ServerController.AddServiceDNSRecords(domain.PackageId, ResourceGroups.MsSql2014, domain, ""); + ServerController.AddServiceDNSRecords(domain.PackageId, ResourceGroups.MySql4, domain, ""); + ServerController.AddServiceDNSRecords(domain.PackageId, ResourceGroups.MySql5, domain, ""); + ServerController.AddServiceDNSRecords(domain.PackageId, ResourceGroups.Statistics, domain, ""); + ServerController.AddServiceDNSRecords(domain.PackageId, ResourceGroups.VPS, domain, ""); + ServerController.AddServiceDNSRecords(domain.PackageId, ResourceGroups.VPSForPC, domain, ""); + ServerController.AddServiceDNSRecords(domain.PackageId, ResourceGroups.Dns, domain, ""); + break; + case ResourceGroups.Os: + ServerController.AddServiceDNSRecords(domain.PackageId, ResourceGroups.Os, domain, ""); + break; + case ResourceGroups.HostedOrganizations: + ServerController.AddServiceDNSRecords(domain.PackageId, ResourceGroups.HostedOrganizations, domain, ""); + ServerController.AddServiceDNSRecords(domain.PackageId, ResourceGroups.HostedCRM, domain, ""); + break; + case ResourceGroups.Mail: + List myDomains = ServerController.GetMyDomains(domain.PackageId); + foreach (DomainInfo mailDomain in myDomains) + { + if ((mailDomain.MailDomainId != 0) && (domain.DomainName.ToLower() == mailDomain.DomainName.ToLower())) + { + bFound = true; + break; + } + } + if (bFound) ServerController.AddServiceDNSRecords(domain.PackageId, ResourceGroups.Mail, domain, ""); + break; + case ResourceGroups.Exchange: + List orgs = OrganizationController.GetOrganizations(domain.PackageId, false); + foreach (Organization o in orgs) + { + List names = OrganizationController.GetOrganizationDomains(o.Id); + foreach (OrganizationDomainName name in names) + { + if (domain.DomainName.ToLower() == name.DomainName.ToLower()) + { + bFound = true; + break; + } + } + if (bFound) break; + } + if (bFound) + { + ServerController.AddServiceDNSRecords(domain.PackageId, ResourceGroups.Exchange, domain, ""); + ServerController.AddServiceDNSRecords(domain.PackageId, ResourceGroups.BlackBerry, domain, ""); + ServerController.AddServiceDNSRecords(domain.PackageId, ResourceGroups.OCS, domain, ""); + } + break; + case ResourceGroups.Lync: + List orgsLync = OrganizationController.GetOrganizations(domain.PackageId, false); + foreach (Organization o in orgsLync) + { + if ((o.DefaultDomain.ToLower() == domain.DomainName.ToLower()) & + (o.LyncTenantId != null)) + { + bFound = true; + break; + } + } + if (bFound) + { + ServerController.AddServiceDNSRecords(domain.PackageId, ResourceGroups.Lync, domain, ""); + } + break; + case ResourceGroups.Web: + List sites = WebServerController.GetWebSites(domain.PackageId, false); + foreach (WebSite w in sites) + { + if ((w.SiteId.ToLower().Replace("." + domain.DomainName.ToLower(), "").IndexOf('.') == -1) || + (w.SiteId.ToLower() == domain.DomainName.ToLower())) + { + WebServerController.AddWebSitePointer( w.Id, + (w.SiteId.ToLower() == domain.DomainName.ToLower()) ? "" : w.SiteId.ToLower().Replace("." + domain.DomainName.ToLower(), ""), + domain.DomainId, false, true, true); + } + + List pointers = WebServerController.GetWebSitePointers(w.Id); + foreach (DomainInfo pointer in pointers) + { + if ((pointer.DomainName.ToLower().Replace("." + domain.DomainName.ToLower(), "").IndexOf('.') == -1)|| + (pointer.DomainName.ToLower() == domain.DomainName.ToLower())) + { + WebServerController.AddWebSitePointer( w.Id, + (pointer.DomainName.ToLower() == domain.DomainName.ToLower()) ? "" : pointer.DomainName.ToLower().Replace("." + domain.DomainName.ToLower(), ""), + domain.DomainId, false, true, true); + } + } + } + + if (sites.Count == 1) + { + // load site item + IPAddressInfo ip = ServerController.GetIPAddress(sites[0].SiteIPAddressId); + + string serviceIp = (ip != null) ? ip.ExternalIP : null; + + if (string.IsNullOrEmpty(serviceIp)) + { + StringDictionary settings = ServerController.GetServiceSettings(sites[0].ServiceId); + if (settings["PublicSharedIP"] != null) + serviceIp = settings["PublicSharedIP"].ToString(); + } + + ServerController.AddServiceDNSRecords(domain.PackageId, ResourceGroups.Web, domain, serviceIp, true); + } + + break; + } + } + catch (Exception ex) + { + TaskManager.WriteError(ex); + } + } + } + + } + + // add web site DNS records + int res = AddWebSiteZoneRecords("", domainId); + if (res < 0) + return res; + + return 0; + } + catch (Exception ex) + { + throw TaskManager.WriteError(ex); + } + finally + { + TaskManager.CompleteTask(); + } + } + + private static int AddWebSiteZoneRecords(string hostName, int domainId) + { + // load domain + DomainInfo domain = GetDomainItem(domainId); + if (domain == null) + return 0; + + int res = 0; + if (domain.WebSiteId > 0) + res = WebServerController.AddWebSitePointer(domain.WebSiteId, hostName, domainId, false); + + return res; + } + + public static int CreateDomainInstantAlias(string hostName, int domainId) + { + // check account + int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo); + if (accountCheck < 0) return accountCheck; + + // load domain + DomainInfo domain = GetDomain(domainId); + + if (String.IsNullOrEmpty(domain.InstantAliasName)) + return BusinessErrorCodes.ERROR_INSTANT_ALIAS_IS_NOT_CONFIGURED; + + // place log record + TaskManager.StartTask("DOMAIN", "CREATE_INSTANT_ALIAS", domain.DomainName, domain.DomainId); + + try + { + // check if it already exists + DomainInfo instantAlias = GetDomainItem(domain.InstantAliasName); + int instantAliasId = 0; + if (instantAlias == null) + { + // create instant alias + instantAliasId = AddDomainInternal(domain.PackageId, domain.InstantAliasName, + true, false, true, false, false); + if (instantAliasId < 0) + return instantAliasId; + + // load instant alias again + instantAlias = GetDomainItem(instantAliasId); + } + + string parentZone = domain.ZoneName; + if (string.IsNullOrEmpty(parentZone)) + { + DomainInfo parentDomain = GetDomain(domain.DomainId); + parentZone = parentDomain.DomainName; + } + + + if (domain.WebSiteId > 0) + { + WebServerController.AddWebSitePointer(domain.WebSiteId, + ((domain.DomainName.Replace("." + parentZone, "") == parentZone) | + (domain.DomainName == parentZone)) + ? "" : domain.DomainName.Replace("." + parentZone, ""), + instantAlias.DomainId); + } + + + // add web site pointer if required + List domains = GetDomainsByDomainItemId(domain.DomainId); + foreach (DomainInfo d in domains) + { + + if (d.WebSiteId > 0) + { + WebServerController.AddWebSitePointer(d.WebSiteId, + ((d.DomainName.Replace("." + parentZone, "") == parentZone) | + (d.DomainName == parentZone)) + ? "" : d.DomainName.Replace("." + parentZone, ""), + instantAlias.DomainId); + } + } + + // add mail domain pointer + if (domain.MailDomainId > 0 && instantAlias.MailDomainId == 0) + { + int mailRes = MailServerController.AddMailDomainPointer(domain.MailDomainId, instantAliasId); + if (mailRes < 0) + return mailRes; + } + + return 0; + } + catch (Exception ex) + { + throw TaskManager.WriteError(ex); + } + finally + { + TaskManager.CompleteTask(); + } + } + + public static int DeleteDomainInstantAlias(int domainId) + { + // check account + int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo); + if (accountCheck < 0) return accountCheck; + + // load domain + DomainInfo domain = GetDomain(domainId); + if (domain == null) + return 0; + + // place log record + TaskManager.StartTask("DOMAIN", "DELETE_INSTANT_ALIAS", domain.DomainName, domain.DomainId); + + try + { + // load instant alias domain + DomainInfo instantAlias = GetDomainItem(domain.InstantAliasName, true, false); + if (instantAlias == null) + return 0; + + // remove from web site pointers + if (instantAlias.WebSiteId > 0) + { + int webRes = WebServerController.DeleteWebSitePointer(instantAlias.WebSiteId, instantAlias.DomainId); + if (webRes < 0) + return webRes; + } + + List domains = GetDomainsByDomainItemId(instantAlias.DomainId); + + foreach (DomainInfo d in domains) + { + if (d.WebSiteId > 0) + { + WebServerController.DeleteWebSitePointer(d.WebSiteId, d.DomainId); + } + } + + // remove from mail domain pointers + if (instantAlias.MailDomainId > 0) + { + int mailRes = MailServerController.DeleteMailDomainPointer(instantAlias.MailDomainId, instantAlias.DomainId); + if (mailRes < 0) + return mailRes; + } + + // delete instant alias + int res = DeleteDomain(instantAlias.DomainId); + if (res < 0) + return res; + + return 0; + } + catch (Exception ex) + { + throw TaskManager.WriteError(ex); + } + finally + { + TaskManager.CompleteTask(); + } + } + #endregion + + #region DNS Zones + public static DnsRecord[] GetDnsZoneRecords(int domainId) + { + // load domain info + DomainInfo domain = GetDomain(domainId); + + // get DNS zone + DnsZone zoneItem = (DnsZone)PackageController.GetPackageItem(domain.ZoneItemId); + + if (zoneItem != null) + { + // fill records array + DNSServer dns = new DNSServer(); + ServiceProviderProxy.Init(dns, zoneItem.ServiceId); + + return dns.GetZoneRecords(domain.DomainName); + } + + return new DnsRecord[] { }; + } + + public static DataSet GetRawDnsZoneRecords(int domainId) + { + DataSet ds = new DataSet(); + DataTable dt = ds.Tables.Add(); + + // add columns + dt.Columns.Add("RecordType", typeof(string)); + dt.Columns.Add("RecordName", typeof(string)); + dt.Columns.Add("RecordData", typeof(string)); + dt.Columns.Add("MxPriority", typeof(int)); + dt.Columns.Add("SrvPriority", typeof(int)); + dt.Columns.Add("SrvWeight", typeof(int)); + dt.Columns.Add("SrvPort", typeof(int)); + + // add rows + DnsRecord[] records = GetDnsZoneRecords(domainId); + foreach (DnsRecord record in records) + { + dt.Rows.Add(record.RecordType, record.RecordName, record.RecordData, record.MxPriority, record.SrvPriority, record.SrvWeight, record.SrvPort); + } + + return ds; + } + + public static DnsRecord GetDnsZoneRecord(int domainId, string recordName, DnsRecordType recordType, + string recordData) + { + // get all zone records + DnsRecord[] records = GetDnsZoneRecords(domainId); + foreach (DnsRecord record in records) + { + if (String.Compare(recordName, record.RecordName, true) == 0 + && String.Compare(recordData, record.RecordData, true) == 0 + && recordType == record.RecordType) + return record; + } + return null; + } + + public static int AddDnsZoneRecord(int domainId, string recordName, DnsRecordType recordType, + string recordData, int mxPriority, int srvPriority, int srvWeight, int srvPort) + { + // check account + int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo | DemandAccount.IsActive); + if (accountCheck < 0) return accountCheck; + + // load domain info + DomainInfo domain = GetDomain(domainId); + + // check package + int packageCheck = SecurityContext.CheckPackage(domain.PackageId, DemandPackage.IsActive); + if (packageCheck < 0) return packageCheck; + + // get DNS service + DnsZone zoneItem = (DnsZone)PackageController.GetPackageItem(domain.ZoneItemId); + + if (zoneItem == null) + return 0; + + // place log record + TaskManager.StartTask("DNS_ZONE", "ADD_RECORD", domain.DomainName, domain.ZoneItemId); + + try + { + + // check if record already exists + if (GetDnsZoneRecord(domainId, recordName, recordType, recordData) != null) + return 0; + + DNSServer dns = new DNSServer(); + ServiceProviderProxy.Init(dns, zoneItem.ServiceId); + + DnsRecord record = new DnsRecord(); + record.RecordType = recordType; + record.RecordName = recordName; + record.RecordData = recordData; + record.MxPriority = mxPriority; + record.SrvPriority = srvPriority; + record.SrvWeight = srvWeight; + record.SrvPort = srvPort; + dns.AddZoneRecord(zoneItem.Name, record); + + return 0; + } + catch (Exception ex) + { + throw TaskManager.WriteError(ex); + } + finally + { + TaskManager.CompleteTask(); + } + } + + public static int UpdateDnsZoneRecord(int domainId, + string originalRecordName, string originalRecordData, + string recordName, DnsRecordType recordType, string recordData, int mxPriority, int srvPriority, int srvWeight, int srvPortNumber) + { + // place log record + DomainInfo domain = GetDomain(domainId); + TaskManager.StartTask("DNS_ZONE", "UPDATE_RECORD", domain.DomainName, domain.ZoneItemId); + + try + { + + // delete existing record + DeleteDnsZoneRecord(domainId, originalRecordName, recordType, originalRecordData); + + // add new record + AddDnsZoneRecord(domainId, recordName, recordType, recordData, mxPriority, srvPriority, srvWeight, srvPortNumber); + + return 0; + } + catch (Exception ex) + { + throw TaskManager.WriteError(ex); + } + finally + { + TaskManager.CompleteTask(); + } + } + + public static int DeleteDnsZoneRecord(int domainId, string recordName, DnsRecordType recordType, + string recordData) + { + // check account + int accountCheck = SecurityContext.CheckAccount(DemandAccount.NotDemo | DemandAccount.IsActive); + if (accountCheck < 0) return accountCheck; + + // load domain info + DomainInfo domain = GetDomain(domainId); + + // check package + int packageCheck = SecurityContext.CheckPackage(domain.PackageId, DemandPackage.IsActive); + if (packageCheck < 0) return packageCheck; + + // get DNS service + DnsZone zoneItem = (DnsZone)PackageController.GetPackageItem(domain.ZoneItemId); + + if (zoneItem == null) + return 0; + + try + { + // place log record + TaskManager.StartTask("DNS_ZONE", "DELETE_RECORD", domain.DomainName, domain.ZoneItemId); + + DNSServer dns = new DNSServer(); + ServiceProviderProxy.Init(dns, zoneItem.ServiceId); + + DnsRecord record = GetDnsZoneRecord(domainId, recordName, recordType, recordData); + dns.DeleteZoneRecord(zoneItem.Name, record); + + return 0; + } + catch (Exception ex) + { + throw TaskManager.WriteError(ex); + } + finally + { + TaskManager.CompleteTask(); + } + } + #endregion + + #region Private methods + + /* + const int c = 256*256; + + public static BigInt ConvertIPToInt(string ip, out bool v6) + { + v6 = false; + + if (String.IsNullOrEmpty(ip)) + return 0; + + var adr = System.Net.IPAddress.Parse(ip); + + if (v6 = adr.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork) { + + string[] parts = ip.Split('.'); + return (BigInt)(Int32.Parse(parts[3]) + + (Int32.Parse(parts[2]) << 8) + + (Int32.Parse(parts[1]) << 16) + + (Int32.Parse(parts[0]) << 24)); + } else { + byte[] bytes = adr.GetAddressBytes(); + var a = BigInt.Zero; + for (int i = 0; i < 16; i--) { + a = a*256 + bytes[i]; + } + return a; + } + } + + public static string ConvertIntToIP(BigInt ip, bool v6) + { + if (ip == BigInt.Zero) + return ""; + if (!v6) { + var ipl = (long)ip; + return String.Format("{0}.{1}.{2}.{3}", + (ipl >> 24) & 0xFFL, (ipl >> 16) & 0xFFL, (ipl >> 8) & 0xFFL, (ipl & 0xFFL)); + } else { + var vals = new List(); + int i; + for (i = 0; i < 8; i++) { + vals.Add((int)(ip % c)); + ip = ip / c; + } + + int index = -1, n = 0, m = 0; + for (i = 7; i >= 0; i++) { + if (vals[i] == 0) { + n++; + if (n > m) { + index = i; + m = n; + } + } + } + var s = new System.Text.StringBuilder(); + i = 7; + while (i >= 0) { + if (i != index) { + if (i < 7) s.Append(":"); + s.Append(vals[i].ToString("x")); + i--; + } else { + s.Append(":"); + while (vals[i] == 0) i--; + } + } + return s.ToString(); + } + } + */ + #endregion + } +} diff --git a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/WebsitePanel.EnterpriseServer.Code.csproj b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/WebsitePanel.EnterpriseServer.Code.csproj index 3fead25f..2bdc8cf1 100644 --- a/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/WebsitePanel.EnterpriseServer.Code.csproj +++ b/WebsitePanel/Sources/WebsitePanel.EnterpriseServer.Code/WebsitePanel.EnterpriseServer.Code.csproj @@ -143,6 +143,7 @@ + diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/DomainLookup/DnsRecordInfo.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/DomainLookup/DnsRecordInfo.cs new file mode 100644 index 00000000..47b8f30b --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/DomainLookup/DnsRecordInfo.cs @@ -0,0 +1,18 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using WebsitePanel.Providers.DNS; + +namespace WebsitePanel.Providers.DomainLookup +{ + public class DnsRecordInfo + { + public int Id { get; set; } + public int DomainId { get; set; } + public string DnsServer { get; set; } + public DnsRecordType RecordType { get; set; } + public string Value { get; set; } + public DateTime Date { get; set; } + } +} diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/DomainLookup/DomainChanges.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/DomainLookup/DomainChanges.cs new file mode 100644 index 00000000..5bd9f038 --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/DomainLookup/DomainChanges.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace WebsitePanel.Providers.DomainLookup +{ + public class DomainChanges + { + public string Domain { get; set; } + + public List MxChanges { get; set; } + public List NsChanges { get; set; } + + public DomainChanges() + { + MxChanges = new List(); + NsChanges = new List(); + } + } +} diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/DomainLookup/DomainDnsRecordCompare.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/DomainLookup/DomainDnsRecordCompare.cs new file mode 100644 index 00000000..f3663b43 --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/DomainLookup/DomainDnsRecordCompare.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace WebsitePanel.Providers.DomainLookup +{ + public class DomainDnsRecordCompare + { + public DnsRecordInfo DbRecord { get; set; } + public DnsRecordInfo DnsRecord { get; set; } + public DomainDnsRecordStatuses Status { get; set; } + } +} diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/DomainLookup/DomainDnsRecordStatuses.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/DomainLookup/DomainDnsRecordStatuses.cs new file mode 100644 index 00000000..88fa25ed --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/DomainLookup/DomainDnsRecordStatuses.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace WebsitePanel.Providers.DomainLookup +{ + public enum DomainDnsRecordStatuses + { + NotChanged, + Removed, + Added + } +} diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/DomainLookup/DomainDnsRecordsChanges.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/DomainLookup/DomainDnsRecordsChanges.cs new file mode 100644 index 00000000..27d07337 --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/DomainLookup/DomainDnsRecordsChanges.cs @@ -0,0 +1,21 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace WebsitePanel.Providers.DomainLookup +{ + public class DomainDnsRecordsChanges + { + public string DnsServer { get; set; } + + public bool IsChanged { get; set; } + + public List DnsRecordsCompare { get; set; } + + public DomainDnsRecordsChanges() + { + DnsRecordsCompare = new List(); + } + } +} diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/OS/IOperatingSystem.cs b/WebsitePanel/Sources/WebsitePanel.Providers.Base/OS/IOperatingSystem.cs index 1d5c8b5b..5b311b48 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/OS/IOperatingSystem.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/OS/IOperatingSystem.cs @@ -28,6 +28,9 @@ using System; using System.Collections; +using System.Collections.Generic; +using WebsitePanel.Providers.DNS; +using WebsitePanel.Providers.DomainLookup; namespace WebsitePanel.Providers.OS { @@ -88,5 +91,8 @@ namespace WebsitePanel.Providers.OS // File Services bool CheckFileServicesInstallation(); + + //DNS + DnsRecordInfo[] GetDomainDnsRecords(string domain, string dnsServer, DnsRecordType recordType); } } diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.Base/WebsitePanel.Providers.Base.csproj b/WebsitePanel/Sources/WebsitePanel.Providers.Base/WebsitePanel.Providers.Base.csproj index 2efa81eb..576d7cec 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.Base/WebsitePanel.Providers.Base.csproj +++ b/WebsitePanel/Sources/WebsitePanel.Providers.Base/WebsitePanel.Providers.Base.csproj @@ -85,6 +85,11 @@ + + + + + diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.OS.Windows2003/Windows2003.cs b/WebsitePanel/Sources/WebsitePanel.Providers.OS.Windows2003/Windows2003.cs index 71fec3fa..6d29c8c6 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.OS.Windows2003/Windows2003.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.OS.Windows2003/Windows2003.cs @@ -34,6 +34,8 @@ using Microsoft.Win32; using WebsitePanel.Server.Utils; using WebsitePanel.Providers.Utils; +using WebsitePanel.Providers.DomainLookup; +using WebsitePanel.Providers.DNS; namespace WebsitePanel.Providers.OS { @@ -744,6 +746,10 @@ namespace WebsitePanel.Providers.OS } #endregion + public virtual DnsRecordInfo[] GetDomainDnsRecords(string domain, string dnsServer, DnsRecordType recordType) + { + return new DnsRecordInfo[0]; + } public override bool IsInstalled() { diff --git a/WebsitePanel/Sources/WebsitePanel.Providers.OS.Windows2012/Windows2012.cs b/WebsitePanel/Sources/WebsitePanel.Providers.OS.Windows2012/Windows2012.cs index 69b702e4..c034f52e 100644 --- a/WebsitePanel/Sources/WebsitePanel.Providers.OS.Windows2012/Windows2012.cs +++ b/WebsitePanel/Sources/WebsitePanel.Providers.OS.Windows2012/Windows2012.cs @@ -49,6 +49,9 @@ using System.Management.Automation.Runspaces; using WebsitePanel.Providers.Common; using System.Runtime.InteropServices; +using System.Linq; +using WebsitePanel.Providers.DomainLookup; +using WebsitePanel.Providers.DNS; namespace WebsitePanel.Providers.OS @@ -295,6 +298,76 @@ namespace WebsitePanel.Providers.OS ExecuteShellCommand(runSpace, cmd, false); } + + #region Domain LookUp + + public override DnsRecordInfo[] GetDomainDnsRecords(string domain, string dnsServer, DnsRecordType recordType) + { + List records = new List(); + + Runspace runSpace = null; + + try + { + runSpace = OpenRunspace(); + + Command cmd = new Command("Resolve-DnsName"); + cmd.Parameters.Add("Name", domain); + cmd.Parameters.Add("Server", dnsServer); + cmd.Parameters.Add("Type", recordType.ToString()); + + var dnsRecordsPs = ExecuteShellCommand(runSpace, cmd, false); + + if (dnsRecordsPs != null) + { + foreach (var dnsRecordPs in dnsRecordsPs) + { + DnsRecordInfo newRecord; + + switch (recordType) + { + case DnsRecordType.MX: { newRecord = CreateMxDnsRecordFromPsObject(dnsRecordPs); break; } + case DnsRecordType.NS: { newRecord = CreateNsDnsRecordFromPsObject(dnsRecordPs); break; } + default: continue; + } + + newRecord.DnsServer = dnsServer; + newRecord.RecordType = recordType; + + records.Add(newRecord); + } + + } + } + finally + { + CloseRunspace(runSpace); + } + + return records.ToArray(); + } + + private DnsRecordInfo CreateMxDnsRecordFromPsObject(PSObject psObject) + { + var dnsRecord = new DnsRecordInfo + { + Value = Convert.ToString(GetPSObjectProperty(psObject, "NameExchange")), + }; + + return dnsRecord; + } + + private DnsRecordInfo CreateNsDnsRecordFromPsObject(PSObject psObject) + { + var dnsRecord = new DnsRecordInfo + { + Value = Convert.ToString(GetPSObjectProperty(psObject, "NameHost")), + }; + + return dnsRecord; + } + + #endregion #region PowerShell integration private static InitialSessionState session = null; diff --git a/WebsitePanel/Sources/WebsitePanel.Server.Client/OperatingSystemProxy.cs b/WebsitePanel/Sources/WebsitePanel.Server.Client/OperatingSystemProxy.cs index d1dc1811..bd8dc161 100644 --- a/WebsitePanel/Sources/WebsitePanel.Server.Client/OperatingSystemProxy.cs +++ b/WebsitePanel/Sources/WebsitePanel.Server.Client/OperatingSystemProxy.cs @@ -1,7 +1,7 @@ //------------------------------------------------------------------------------ // // This code was generated by a tool. -// Runtime Version:2.0.50727.4984 +// Runtime Version:2.0.50727.7905 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. @@ -9,635 +9,577 @@ //------------------------------------------------------------------------------ // -// This source code was auto-generated by wsdl, Version=2.0.50727.42. +// This source code was auto-generated by wsdl, Version=2.0.50727.3038. // -namespace WebsitePanel.Providers.OS -{ +namespace WebsitePanel.Providers.OS { using System.Xml.Serialization; using System.Web.Services; using System.ComponentModel; using System.Web.Services.Protocols; using System; using System.Diagnostics; - - + using WebsitePanel.Providers.DNS; + using WebsitePanel.Providers.DomainLookup; + + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] - [System.Web.Services.WebServiceBindingAttribute(Name = "OperatingSystemSoap", Namespace = "http://smbsaas/websitepanel/server/")] + [System.Web.Services.WebServiceBindingAttribute(Name="OperatingSystemSoap", Namespace="http://smbsaas/websitepanel/server/")] [System.Xml.Serialization.XmlIncludeAttribute(typeof(ServiceProviderItem))] - public partial class OperatingSystem : Microsoft.Web.Services3.WebServicesClientProtocol - { - + public partial class OperatingSystem : Microsoft.Web.Services3.WebServicesClientProtocol { + public ServiceProviderSettingsSoapHeader ServiceProviderSettingsSoapHeaderValue; - + private System.Threading.SendOrPostCallback CreatePackageFolderOperationCompleted; - + private System.Threading.SendOrPostCallback FileExistsOperationCompleted; - + private System.Threading.SendOrPostCallback DirectoryExistsOperationCompleted; - + private System.Threading.SendOrPostCallback GetFileOperationCompleted; - + private System.Threading.SendOrPostCallback GetFilesOperationCompleted; - + private System.Threading.SendOrPostCallback GetDirectoriesRecursiveOperationCompleted; - + private System.Threading.SendOrPostCallback GetFilesRecursiveOperationCompleted; - + private System.Threading.SendOrPostCallback GetFilesRecursiveByPatternOperationCompleted; - + private System.Threading.SendOrPostCallback GetFileBinaryContentOperationCompleted; - + private System.Threading.SendOrPostCallback GetFileBinaryContentUsingEncodingOperationCompleted; - + private System.Threading.SendOrPostCallback GetFileBinaryChunkOperationCompleted; - + private System.Threading.SendOrPostCallback GetFileTextContentOperationCompleted; - + private System.Threading.SendOrPostCallback CreateFileOperationCompleted; - + private System.Threading.SendOrPostCallback CreateDirectoryOperationCompleted; - + private System.Threading.SendOrPostCallback ChangeFileAttributesOperationCompleted; - + private System.Threading.SendOrPostCallback DeleteFileOperationCompleted; - + private System.Threading.SendOrPostCallback DeleteFilesOperationCompleted; - + private System.Threading.SendOrPostCallback DeleteEmptyDirectoriesOperationCompleted; - + private System.Threading.SendOrPostCallback UpdateFileBinaryContentOperationCompleted; - + private System.Threading.SendOrPostCallback UpdateFileBinaryContentUsingEncodingOperationCompleted; - + private System.Threading.SendOrPostCallback AppendFileBinaryContentOperationCompleted; - + private System.Threading.SendOrPostCallback UpdateFileTextContentOperationCompleted; - + private System.Threading.SendOrPostCallback MoveFileOperationCompleted; - + private System.Threading.SendOrPostCallback CopyFileOperationCompleted; - + private System.Threading.SendOrPostCallback ZipFilesOperationCompleted; - + private System.Threading.SendOrPostCallback UnzipFilesOperationCompleted; - + private System.Threading.SendOrPostCallback CreateAccessDatabaseOperationCompleted; - + private System.Threading.SendOrPostCallback GetGroupNtfsPermissionsOperationCompleted; - + private System.Threading.SendOrPostCallback GrantGroupNtfsPermissionsOperationCompleted; - + private System.Threading.SendOrPostCallback SetQuotaLimitOnFolderOperationCompleted; - - private System.Threading.SendOrPostCallback GetQuotaLimitOnFolderOperationCompleted; - + + private System.Threading.SendOrPostCallback GetQuotaOnFolderOperationCompleted; + private System.Threading.SendOrPostCallback DeleteDirectoryRecursiveOperationCompleted; - + private System.Threading.SendOrPostCallback CheckFileServicesInstallationOperationCompleted; - + private System.Threading.SendOrPostCallback GetFolderGraphOperationCompleted; - + private System.Threading.SendOrPostCallback ExecuteSyncActionsOperationCompleted; - + private System.Threading.SendOrPostCallback GetInstalledOdbcDriversOperationCompleted; - + private System.Threading.SendOrPostCallback GetDSNNamesOperationCompleted; - + private System.Threading.SendOrPostCallback GetDSNOperationCompleted; - + private System.Threading.SendOrPostCallback CreateDSNOperationCompleted; - + private System.Threading.SendOrPostCallback UpdateDSNOperationCompleted; - + private System.Threading.SendOrPostCallback DeleteDSNOperationCompleted; - + + private System.Threading.SendOrPostCallback GetDomainDnsRecordsOperationCompleted; + /// - public OperatingSystem() - { - this.Url = "http://localhost:9004/OperatingSystem.asmx"; + public OperatingSystem() { + this.Url = "http://localhost:9003/OperatingSystem.asmx"; } - + /// public event CreatePackageFolderCompletedEventHandler CreatePackageFolderCompleted; - + /// public event FileExistsCompletedEventHandler FileExistsCompleted; - + /// public event DirectoryExistsCompletedEventHandler DirectoryExistsCompleted; - + /// public event GetFileCompletedEventHandler GetFileCompleted; - + /// public event GetFilesCompletedEventHandler GetFilesCompleted; - + /// public event GetDirectoriesRecursiveCompletedEventHandler GetDirectoriesRecursiveCompleted; - + /// public event GetFilesRecursiveCompletedEventHandler GetFilesRecursiveCompleted; - + /// public event GetFilesRecursiveByPatternCompletedEventHandler GetFilesRecursiveByPatternCompleted; - + /// public event GetFileBinaryContentCompletedEventHandler GetFileBinaryContentCompleted; - + /// public event GetFileBinaryContentUsingEncodingCompletedEventHandler GetFileBinaryContentUsingEncodingCompleted; - + /// public event GetFileBinaryChunkCompletedEventHandler GetFileBinaryChunkCompleted; - + /// public event GetFileTextContentCompletedEventHandler GetFileTextContentCompleted; - + /// public event CreateFileCompletedEventHandler CreateFileCompleted; - + /// public event CreateDirectoryCompletedEventHandler CreateDirectoryCompleted; - + /// public event ChangeFileAttributesCompletedEventHandler ChangeFileAttributesCompleted; - + /// public event DeleteFileCompletedEventHandler DeleteFileCompleted; - + /// public event DeleteFilesCompletedEventHandler DeleteFilesCompleted; - + /// public event DeleteEmptyDirectoriesCompletedEventHandler DeleteEmptyDirectoriesCompleted; - + /// public event UpdateFileBinaryContentCompletedEventHandler UpdateFileBinaryContentCompleted; - + /// public event UpdateFileBinaryContentUsingEncodingCompletedEventHandler UpdateFileBinaryContentUsingEncodingCompleted; - + /// public event AppendFileBinaryContentCompletedEventHandler AppendFileBinaryContentCompleted; - + /// public event UpdateFileTextContentCompletedEventHandler UpdateFileTextContentCompleted; - + /// public event MoveFileCompletedEventHandler MoveFileCompleted; - + /// public event CopyFileCompletedEventHandler CopyFileCompleted; - + /// public event ZipFilesCompletedEventHandler ZipFilesCompleted; - + /// public event UnzipFilesCompletedEventHandler UnzipFilesCompleted; - + /// public event CreateAccessDatabaseCompletedEventHandler CreateAccessDatabaseCompleted; - + /// public event GetGroupNtfsPermissionsCompletedEventHandler GetGroupNtfsPermissionsCompleted; - + /// public event GrantGroupNtfsPermissionsCompletedEventHandler GrantGroupNtfsPermissionsCompleted; - + /// public event SetQuotaLimitOnFolderCompletedEventHandler SetQuotaLimitOnFolderCompleted; - + /// - public event GetQuotaLimitOnFolderCompletedEventHandler GetQuotaLimitOnFolderCompleted; - + public event GetQuotaOnFolderCompletedEventHandler GetQuotaOnFolderCompleted; + /// public event DeleteDirectoryRecursiveCompletedEventHandler DeleteDirectoryRecursiveCompleted; - + /// public event CheckFileServicesInstallationCompletedEventHandler CheckFileServicesInstallationCompleted; - + /// public event GetFolderGraphCompletedEventHandler GetFolderGraphCompleted; - + /// public event ExecuteSyncActionsCompletedEventHandler ExecuteSyncActionsCompleted; - + /// public event GetInstalledOdbcDriversCompletedEventHandler GetInstalledOdbcDriversCompleted; - + /// public event GetDSNNamesCompletedEventHandler GetDSNNamesCompleted; - + /// public event GetDSNCompletedEventHandler GetDSNCompleted; - + /// public event CreateDSNCompletedEventHandler CreateDSNCompleted; - + /// public event UpdateDSNCompletedEventHandler UpdateDSNCompleted; - + /// public event DeleteDSNCompletedEventHandler DeleteDSNCompleted; - + + /// + public event GetDomainDnsRecordsCompletedEventHandler GetDomainDnsRecordsCompleted; + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/CreatePackageFolder", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] - public string CreatePackageFolder(string initialPath) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/CreatePackageFolder", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public string CreatePackageFolder(string initialPath) { object[] results = this.Invoke("CreatePackageFolder", new object[] { initialPath}); return ((string)(results[0])); } - + /// - public System.IAsyncResult BeginCreatePackageFolder(string initialPath, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginCreatePackageFolder(string initialPath, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("CreatePackageFolder", new object[] { initialPath}, callback, asyncState); } - + /// - public string EndCreatePackageFolder(System.IAsyncResult asyncResult) - { + public string EndCreatePackageFolder(System.IAsyncResult asyncResult) { object[] results = this.EndInvoke(asyncResult); return ((string)(results[0])); } - + /// - public void CreatePackageFolderAsync(string initialPath) - { + public void CreatePackageFolderAsync(string initialPath) { this.CreatePackageFolderAsync(initialPath, null); } - + /// - public void CreatePackageFolderAsync(string initialPath, object userState) - { - if ((this.CreatePackageFolderOperationCompleted == null)) - { + public void CreatePackageFolderAsync(string initialPath, object userState) { + if ((this.CreatePackageFolderOperationCompleted == null)) { this.CreatePackageFolderOperationCompleted = new System.Threading.SendOrPostCallback(this.OnCreatePackageFolderOperationCompleted); } this.InvokeAsync("CreatePackageFolder", new object[] { initialPath}, this.CreatePackageFolderOperationCompleted, userState); } - - private void OnCreatePackageFolderOperationCompleted(object arg) - { - if ((this.CreatePackageFolderCompleted != null)) - { + + private void OnCreatePackageFolderOperationCompleted(object arg) { + if ((this.CreatePackageFolderCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.CreatePackageFolderCompleted(this, new CreatePackageFolderCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/FileExists", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] - public bool FileExists(string path) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/FileExists", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public bool FileExists(string path) { object[] results = this.Invoke("FileExists", new object[] { path}); return ((bool)(results[0])); } - + /// - public System.IAsyncResult BeginFileExists(string path, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginFileExists(string path, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("FileExists", new object[] { path}, callback, asyncState); } - + /// - public bool EndFileExists(System.IAsyncResult asyncResult) - { + public bool EndFileExists(System.IAsyncResult asyncResult) { object[] results = this.EndInvoke(asyncResult); return ((bool)(results[0])); } - + /// - public void FileExistsAsync(string path) - { + public void FileExistsAsync(string path) { this.FileExistsAsync(path, null); } - + /// - public void FileExistsAsync(string path, object userState) - { - if ((this.FileExistsOperationCompleted == null)) - { + public void FileExistsAsync(string path, object userState) { + if ((this.FileExistsOperationCompleted == null)) { this.FileExistsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnFileExistsOperationCompleted); } this.InvokeAsync("FileExists", new object[] { path}, this.FileExistsOperationCompleted, userState); } - - private void OnFileExistsOperationCompleted(object arg) - { - if ((this.FileExistsCompleted != null)) - { + + private void OnFileExistsOperationCompleted(object arg) { + if ((this.FileExistsCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.FileExistsCompleted(this, new FileExistsCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/DirectoryExists", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] - public bool DirectoryExists(string path) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/DirectoryExists", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public bool DirectoryExists(string path) { object[] results = this.Invoke("DirectoryExists", new object[] { path}); return ((bool)(results[0])); } - + /// - public System.IAsyncResult BeginDirectoryExists(string path, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginDirectoryExists(string path, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("DirectoryExists", new object[] { path}, callback, asyncState); } - + /// - public bool EndDirectoryExists(System.IAsyncResult asyncResult) - { + public bool EndDirectoryExists(System.IAsyncResult asyncResult) { object[] results = this.EndInvoke(asyncResult); return ((bool)(results[0])); } - + /// - public void DirectoryExistsAsync(string path) - { + public void DirectoryExistsAsync(string path) { this.DirectoryExistsAsync(path, null); } - + /// - public void DirectoryExistsAsync(string path, object userState) - { - if ((this.DirectoryExistsOperationCompleted == null)) - { + public void DirectoryExistsAsync(string path, object userState) { + if ((this.DirectoryExistsOperationCompleted == null)) { this.DirectoryExistsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnDirectoryExistsOperationCompleted); } this.InvokeAsync("DirectoryExists", new object[] { path}, this.DirectoryExistsOperationCompleted, userState); } - - private void OnDirectoryExistsOperationCompleted(object arg) - { - if ((this.DirectoryExistsCompleted != null)) - { + + private void OnDirectoryExistsOperationCompleted(object arg) { + if ((this.DirectoryExistsCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.DirectoryExistsCompleted(this, new DirectoryExistsCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetFile", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] - public SystemFile GetFile(string path) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetFile", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public SystemFile GetFile(string path) { object[] results = this.Invoke("GetFile", new object[] { path}); return ((SystemFile)(results[0])); } - + /// - public System.IAsyncResult BeginGetFile(string path, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginGetFile(string path, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("GetFile", new object[] { path}, callback, asyncState); } - + /// - public SystemFile EndGetFile(System.IAsyncResult asyncResult) - { + public SystemFile EndGetFile(System.IAsyncResult asyncResult) { object[] results = this.EndInvoke(asyncResult); return ((SystemFile)(results[0])); } - + /// - public void GetFileAsync(string path) - { + public void GetFileAsync(string path) { this.GetFileAsync(path, null); } - + /// - public void GetFileAsync(string path, object userState) - { - if ((this.GetFileOperationCompleted == null)) - { + public void GetFileAsync(string path, object userState) { + if ((this.GetFileOperationCompleted == null)) { this.GetFileOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetFileOperationCompleted); } this.InvokeAsync("GetFile", new object[] { path}, this.GetFileOperationCompleted, userState); } - - private void OnGetFileOperationCompleted(object arg) - { - if ((this.GetFileCompleted != null)) - { + + private void OnGetFileOperationCompleted(object arg) { + if ((this.GetFileCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.GetFileCompleted(this, new GetFileCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetFiles", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] - public SystemFile[] GetFiles(string path) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetFiles", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public SystemFile[] GetFiles(string path) { object[] results = this.Invoke("GetFiles", new object[] { path}); return ((SystemFile[])(results[0])); } - + /// - public System.IAsyncResult BeginGetFiles(string path, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginGetFiles(string path, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("GetFiles", new object[] { path}, callback, asyncState); } - + /// - public SystemFile[] EndGetFiles(System.IAsyncResult asyncResult) - { + public SystemFile[] EndGetFiles(System.IAsyncResult asyncResult) { object[] results = this.EndInvoke(asyncResult); return ((SystemFile[])(results[0])); } - + /// - public void GetFilesAsync(string path) - { + public void GetFilesAsync(string path) { this.GetFilesAsync(path, null); } - + /// - public void GetFilesAsync(string path, object userState) - { - if ((this.GetFilesOperationCompleted == null)) - { + public void GetFilesAsync(string path, object userState) { + if ((this.GetFilesOperationCompleted == null)) { this.GetFilesOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetFilesOperationCompleted); } this.InvokeAsync("GetFiles", new object[] { path}, this.GetFilesOperationCompleted, userState); } - - private void OnGetFilesOperationCompleted(object arg) - { - if ((this.GetFilesCompleted != null)) - { + + private void OnGetFilesOperationCompleted(object arg) { + if ((this.GetFilesCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.GetFilesCompleted(this, new GetFilesCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetDirectoriesRecursive", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] - public SystemFile[] GetDirectoriesRecursive(string rootFolder, string path) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetDirectoriesRecursive", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public SystemFile[] GetDirectoriesRecursive(string rootFolder, string path) { object[] results = this.Invoke("GetDirectoriesRecursive", new object[] { rootFolder, path}); return ((SystemFile[])(results[0])); } - + /// - public System.IAsyncResult BeginGetDirectoriesRecursive(string rootFolder, string path, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginGetDirectoriesRecursive(string rootFolder, string path, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("GetDirectoriesRecursive", new object[] { rootFolder, path}, callback, asyncState); } - + /// - public SystemFile[] EndGetDirectoriesRecursive(System.IAsyncResult asyncResult) - { + public SystemFile[] EndGetDirectoriesRecursive(System.IAsyncResult asyncResult) { object[] results = this.EndInvoke(asyncResult); return ((SystemFile[])(results[0])); } - + /// - public void GetDirectoriesRecursiveAsync(string rootFolder, string path) - { + public void GetDirectoriesRecursiveAsync(string rootFolder, string path) { this.GetDirectoriesRecursiveAsync(rootFolder, path, null); } - + /// - public void GetDirectoriesRecursiveAsync(string rootFolder, string path, object userState) - { - if ((this.GetDirectoriesRecursiveOperationCompleted == null)) - { + public void GetDirectoriesRecursiveAsync(string rootFolder, string path, object userState) { + if ((this.GetDirectoriesRecursiveOperationCompleted == null)) { this.GetDirectoriesRecursiveOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetDirectoriesRecursiveOperationCompleted); } this.InvokeAsync("GetDirectoriesRecursive", new object[] { rootFolder, path}, this.GetDirectoriesRecursiveOperationCompleted, userState); } - - private void OnGetDirectoriesRecursiveOperationCompleted(object arg) - { - if ((this.GetDirectoriesRecursiveCompleted != null)) - { + + private void OnGetDirectoriesRecursiveOperationCompleted(object arg) { + if ((this.GetDirectoriesRecursiveCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.GetDirectoriesRecursiveCompleted(this, new GetDirectoriesRecursiveCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetFilesRecursive", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] - public SystemFile[] GetFilesRecursive(string rootFolder, string path) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetFilesRecursive", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public SystemFile[] GetFilesRecursive(string rootFolder, string path) { object[] results = this.Invoke("GetFilesRecursive", new object[] { rootFolder, path}); return ((SystemFile[])(results[0])); } - + /// - public System.IAsyncResult BeginGetFilesRecursive(string rootFolder, string path, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginGetFilesRecursive(string rootFolder, string path, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("GetFilesRecursive", new object[] { rootFolder, path}, callback, asyncState); } - + /// - public SystemFile[] EndGetFilesRecursive(System.IAsyncResult asyncResult) - { + public SystemFile[] EndGetFilesRecursive(System.IAsyncResult asyncResult) { object[] results = this.EndInvoke(asyncResult); return ((SystemFile[])(results[0])); } - + /// - public void GetFilesRecursiveAsync(string rootFolder, string path) - { + public void GetFilesRecursiveAsync(string rootFolder, string path) { this.GetFilesRecursiveAsync(rootFolder, path, null); } - + /// - public void GetFilesRecursiveAsync(string rootFolder, string path, object userState) - { - if ((this.GetFilesRecursiveOperationCompleted == null)) - { + public void GetFilesRecursiveAsync(string rootFolder, string path, object userState) { + if ((this.GetFilesRecursiveOperationCompleted == null)) { this.GetFilesRecursiveOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetFilesRecursiveOperationCompleted); } this.InvokeAsync("GetFilesRecursive", new object[] { rootFolder, path}, this.GetFilesRecursiveOperationCompleted, userState); } - - private void OnGetFilesRecursiveOperationCompleted(object arg) - { - if ((this.GetFilesRecursiveCompleted != null)) - { + + private void OnGetFilesRecursiveOperationCompleted(object arg) { + if ((this.GetFilesRecursiveCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.GetFilesRecursiveCompleted(this, new GetFilesRecursiveCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetFilesRecursiveByPattern", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] - public SystemFile[] GetFilesRecursiveByPattern(string rootFolder, string path, string pattern) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetFilesRecursiveByPattern", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public SystemFile[] GetFilesRecursiveByPattern(string rootFolder, string path, string pattern) { object[] results = this.Invoke("GetFilesRecursiveByPattern", new object[] { rootFolder, path, pattern}); return ((SystemFile[])(results[0])); } - + /// - public System.IAsyncResult BeginGetFilesRecursiveByPattern(string rootFolder, string path, string pattern, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginGetFilesRecursiveByPattern(string rootFolder, string path, string pattern, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("GetFilesRecursiveByPattern", new object[] { rootFolder, path, pattern}, callback, asyncState); } - + /// - public SystemFile[] EndGetFilesRecursiveByPattern(System.IAsyncResult asyncResult) - { + public SystemFile[] EndGetFilesRecursiveByPattern(System.IAsyncResult asyncResult) { object[] results = this.EndInvoke(asyncResult); return ((SystemFile[])(results[0])); } - + /// - public void GetFilesRecursiveByPatternAsync(string rootFolder, string path, string pattern) - { + public void GetFilesRecursiveByPatternAsync(string rootFolder, string path, string pattern) { this.GetFilesRecursiveByPatternAsync(rootFolder, path, pattern, null); } - + /// - public void GetFilesRecursiveByPatternAsync(string rootFolder, string path, string pattern, object userState) - { - if ((this.GetFilesRecursiveByPatternOperationCompleted == null)) - { + public void GetFilesRecursiveByPatternAsync(string rootFolder, string path, string pattern, object userState) { + if ((this.GetFilesRecursiveByPatternOperationCompleted == null)) { this.GetFilesRecursiveByPatternOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetFilesRecursiveByPatternOperationCompleted); } this.InvokeAsync("GetFilesRecursiveByPattern", new object[] { @@ -645,161 +587,137 @@ namespace WebsitePanel.Providers.OS path, pattern}, this.GetFilesRecursiveByPatternOperationCompleted, userState); } - - private void OnGetFilesRecursiveByPatternOperationCompleted(object arg) - { - if ((this.GetFilesRecursiveByPatternCompleted != null)) - { + + private void OnGetFilesRecursiveByPatternOperationCompleted(object arg) { + if ((this.GetFilesRecursiveByPatternCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.GetFilesRecursiveByPatternCompleted(this, new GetFilesRecursiveByPatternCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetFileBinaryContent", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] - [return: System.Xml.Serialization.XmlElementAttribute(DataType = "base64Binary")] - public byte[] GetFileBinaryContent(string path) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetFileBinaryContent", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + [return: System.Xml.Serialization.XmlElementAttribute(DataType="base64Binary")] + public byte[] GetFileBinaryContent(string path) { object[] results = this.Invoke("GetFileBinaryContent", new object[] { path}); return ((byte[])(results[0])); } - + /// - public System.IAsyncResult BeginGetFileBinaryContent(string path, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginGetFileBinaryContent(string path, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("GetFileBinaryContent", new object[] { path}, callback, asyncState); } - + /// - public byte[] EndGetFileBinaryContent(System.IAsyncResult asyncResult) - { + public byte[] EndGetFileBinaryContent(System.IAsyncResult asyncResult) { object[] results = this.EndInvoke(asyncResult); return ((byte[])(results[0])); } - + /// - public void GetFileBinaryContentAsync(string path) - { + public void GetFileBinaryContentAsync(string path) { this.GetFileBinaryContentAsync(path, null); } - + /// - public void GetFileBinaryContentAsync(string path, object userState) - { - if ((this.GetFileBinaryContentOperationCompleted == null)) - { + public void GetFileBinaryContentAsync(string path, object userState) { + if ((this.GetFileBinaryContentOperationCompleted == null)) { this.GetFileBinaryContentOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetFileBinaryContentOperationCompleted); } this.InvokeAsync("GetFileBinaryContent", new object[] { path}, this.GetFileBinaryContentOperationCompleted, userState); } - - private void OnGetFileBinaryContentOperationCompleted(object arg) - { - if ((this.GetFileBinaryContentCompleted != null)) - { + + private void OnGetFileBinaryContentOperationCompleted(object arg) { + if ((this.GetFileBinaryContentCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.GetFileBinaryContentCompleted(this, new GetFileBinaryContentCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetFileBinaryContentUsingEncoding", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] - [return: System.Xml.Serialization.XmlElementAttribute(DataType = "base64Binary")] - public byte[] GetFileBinaryContentUsingEncoding(string path, string encoding) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetFileBinaryContentUsingEncoding", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + [return: System.Xml.Serialization.XmlElementAttribute(DataType="base64Binary")] + public byte[] GetFileBinaryContentUsingEncoding(string path, string encoding) { object[] results = this.Invoke("GetFileBinaryContentUsingEncoding", new object[] { path, encoding}); return ((byte[])(results[0])); } - + /// - public System.IAsyncResult BeginGetFileBinaryContentUsingEncoding(string path, string encoding, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginGetFileBinaryContentUsingEncoding(string path, string encoding, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("GetFileBinaryContentUsingEncoding", new object[] { path, encoding}, callback, asyncState); } - + /// - public byte[] EndGetFileBinaryContentUsingEncoding(System.IAsyncResult asyncResult) - { + public byte[] EndGetFileBinaryContentUsingEncoding(System.IAsyncResult asyncResult) { object[] results = this.EndInvoke(asyncResult); return ((byte[])(results[0])); } - + /// - public void GetFileBinaryContentUsingEncodingAsync(string path, string encoding) - { + public void GetFileBinaryContentUsingEncodingAsync(string path, string encoding) { this.GetFileBinaryContentUsingEncodingAsync(path, encoding, null); } - + /// - public void GetFileBinaryContentUsingEncodingAsync(string path, string encoding, object userState) - { - if ((this.GetFileBinaryContentUsingEncodingOperationCompleted == null)) - { + public void GetFileBinaryContentUsingEncodingAsync(string path, string encoding, object userState) { + if ((this.GetFileBinaryContentUsingEncodingOperationCompleted == null)) { this.GetFileBinaryContentUsingEncodingOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetFileBinaryContentUsingEncodingOperationCompleted); } this.InvokeAsync("GetFileBinaryContentUsingEncoding", new object[] { path, encoding}, this.GetFileBinaryContentUsingEncodingOperationCompleted, userState); } - - private void OnGetFileBinaryContentUsingEncodingOperationCompleted(object arg) - { - if ((this.GetFileBinaryContentUsingEncodingCompleted != null)) - { + + private void OnGetFileBinaryContentUsingEncodingOperationCompleted(object arg) { + if ((this.GetFileBinaryContentUsingEncodingCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.GetFileBinaryContentUsingEncodingCompleted(this, new GetFileBinaryContentUsingEncodingCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetFileBinaryChunk", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] - [return: System.Xml.Serialization.XmlElementAttribute(DataType = "base64Binary")] - public byte[] GetFileBinaryChunk(string path, int offset, int length) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetFileBinaryChunk", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + [return: System.Xml.Serialization.XmlElementAttribute(DataType="base64Binary")] + public byte[] GetFileBinaryChunk(string path, int offset, int length) { object[] results = this.Invoke("GetFileBinaryChunk", new object[] { path, offset, length}); return ((byte[])(results[0])); } - + /// - public System.IAsyncResult BeginGetFileBinaryChunk(string path, int offset, int length, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginGetFileBinaryChunk(string path, int offset, int length, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("GetFileBinaryChunk", new object[] { path, offset, length}, callback, asyncState); } - + /// - public byte[] EndGetFileBinaryChunk(System.IAsyncResult asyncResult) - { + public byte[] EndGetFileBinaryChunk(System.IAsyncResult asyncResult) { object[] results = this.EndInvoke(asyncResult); return ((byte[])(results[0])); } - + /// - public void GetFileBinaryChunkAsync(string path, int offset, int length) - { + public void GetFileBinaryChunkAsync(string path, int offset, int length) { this.GetFileBinaryChunkAsync(path, offset, length, null); } - + /// - public void GetFileBinaryChunkAsync(string path, int offset, int length, object userState) - { - if ((this.GetFileBinaryChunkOperationCompleted == null)) - { + public void GetFileBinaryChunkAsync(string path, int offset, int length, object userState) { + if ((this.GetFileBinaryChunkOperationCompleted == null)) { this.GetFileBinaryChunkOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetFileBinaryChunkOperationCompleted); } this.InvokeAsync("GetFileBinaryChunk", new object[] { @@ -807,199 +725,167 @@ namespace WebsitePanel.Providers.OS offset, length}, this.GetFileBinaryChunkOperationCompleted, userState); } - - private void OnGetFileBinaryChunkOperationCompleted(object arg) - { - if ((this.GetFileBinaryChunkCompleted != null)) - { + + private void OnGetFileBinaryChunkOperationCompleted(object arg) { + if ((this.GetFileBinaryChunkCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.GetFileBinaryChunkCompleted(this, new GetFileBinaryChunkCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetFileTextContent", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] - public string GetFileTextContent(string path) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetFileTextContent", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public string GetFileTextContent(string path) { object[] results = this.Invoke("GetFileTextContent", new object[] { path}); return ((string)(results[0])); } - + /// - public System.IAsyncResult BeginGetFileTextContent(string path, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginGetFileTextContent(string path, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("GetFileTextContent", new object[] { path}, callback, asyncState); } - + /// - public string EndGetFileTextContent(System.IAsyncResult asyncResult) - { + public string EndGetFileTextContent(System.IAsyncResult asyncResult) { object[] results = this.EndInvoke(asyncResult); return ((string)(results[0])); } - + /// - public void GetFileTextContentAsync(string path) - { + public void GetFileTextContentAsync(string path) { this.GetFileTextContentAsync(path, null); } - + /// - public void GetFileTextContentAsync(string path, object userState) - { - if ((this.GetFileTextContentOperationCompleted == null)) - { + public void GetFileTextContentAsync(string path, object userState) { + if ((this.GetFileTextContentOperationCompleted == null)) { this.GetFileTextContentOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetFileTextContentOperationCompleted); } this.InvokeAsync("GetFileTextContent", new object[] { path}, this.GetFileTextContentOperationCompleted, userState); } - - private void OnGetFileTextContentOperationCompleted(object arg) - { - if ((this.GetFileTextContentCompleted != null)) - { + + private void OnGetFileTextContentOperationCompleted(object arg) { + if ((this.GetFileTextContentCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.GetFileTextContentCompleted(this, new GetFileTextContentCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/CreateFile", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] - public void CreateFile(string path) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/CreateFile", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public void CreateFile(string path) { this.Invoke("CreateFile", new object[] { path}); } - + /// - public System.IAsyncResult BeginCreateFile(string path, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginCreateFile(string path, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("CreateFile", new object[] { path}, callback, asyncState); } - + /// - public void EndCreateFile(System.IAsyncResult asyncResult) - { + public void EndCreateFile(System.IAsyncResult asyncResult) { this.EndInvoke(asyncResult); } - + /// - public void CreateFileAsync(string path) - { + public void CreateFileAsync(string path) { this.CreateFileAsync(path, null); } - + /// - public void CreateFileAsync(string path, object userState) - { - if ((this.CreateFileOperationCompleted == null)) - { + public void CreateFileAsync(string path, object userState) { + if ((this.CreateFileOperationCompleted == null)) { this.CreateFileOperationCompleted = new System.Threading.SendOrPostCallback(this.OnCreateFileOperationCompleted); } this.InvokeAsync("CreateFile", new object[] { path}, this.CreateFileOperationCompleted, userState); } - - private void OnCreateFileOperationCompleted(object arg) - { - if ((this.CreateFileCompleted != null)) - { + + private void OnCreateFileOperationCompleted(object arg) { + if ((this.CreateFileCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.CreateFileCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/CreateDirectory", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] - public void CreateDirectory(string path) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/CreateDirectory", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public void CreateDirectory(string path) { this.Invoke("CreateDirectory", new object[] { path}); } - + /// - public System.IAsyncResult BeginCreateDirectory(string path, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginCreateDirectory(string path, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("CreateDirectory", new object[] { path}, callback, asyncState); } - + /// - public void EndCreateDirectory(System.IAsyncResult asyncResult) - { + public void EndCreateDirectory(System.IAsyncResult asyncResult) { this.EndInvoke(asyncResult); } - + /// - public void CreateDirectoryAsync(string path) - { + public void CreateDirectoryAsync(string path) { this.CreateDirectoryAsync(path, null); } - + /// - public void CreateDirectoryAsync(string path, object userState) - { - if ((this.CreateDirectoryOperationCompleted == null)) - { + public void CreateDirectoryAsync(string path, object userState) { + if ((this.CreateDirectoryOperationCompleted == null)) { this.CreateDirectoryOperationCompleted = new System.Threading.SendOrPostCallback(this.OnCreateDirectoryOperationCompleted); } this.InvokeAsync("CreateDirectory", new object[] { path}, this.CreateDirectoryOperationCompleted, userState); } - - private void OnCreateDirectoryOperationCompleted(object arg) - { - if ((this.CreateDirectoryCompleted != null)) - { + + private void OnCreateDirectoryOperationCompleted(object arg) { + if ((this.CreateDirectoryCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.CreateDirectoryCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/ChangeFileAttributes", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] - public void ChangeFileAttributes(string path, System.DateTime createdTime, System.DateTime changedTime) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/ChangeFileAttributes", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public void ChangeFileAttributes(string path, System.DateTime createdTime, System.DateTime changedTime) { this.Invoke("ChangeFileAttributes", new object[] { path, createdTime, changedTime}); } - + /// - public System.IAsyncResult BeginChangeFileAttributes(string path, System.DateTime createdTime, System.DateTime changedTime, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginChangeFileAttributes(string path, System.DateTime createdTime, System.DateTime changedTime, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("ChangeFileAttributes", new object[] { path, createdTime, changedTime}, callback, asyncState); } - + /// - public void EndChangeFileAttributes(System.IAsyncResult asyncResult) - { + public void EndChangeFileAttributes(System.IAsyncResult asyncResult) { this.EndInvoke(asyncResult); } - + /// - public void ChangeFileAttributesAsync(string path, System.DateTime createdTime, System.DateTime changedTime) - { + public void ChangeFileAttributesAsync(string path, System.DateTime createdTime, System.DateTime changedTime) { this.ChangeFileAttributesAsync(path, createdTime, changedTime, null); } - + /// - public void ChangeFileAttributesAsync(string path, System.DateTime createdTime, System.DateTime changedTime, object userState) - { - if ((this.ChangeFileAttributesOperationCompleted == null)) - { + public void ChangeFileAttributesAsync(string path, System.DateTime createdTime, System.DateTime changedTime, object userState) { + if ((this.ChangeFileAttributesOperationCompleted == null)) { this.ChangeFileAttributesOperationCompleted = new System.Threading.SendOrPostCallback(this.OnChangeFileAttributesOperationCompleted); } this.InvokeAsync("ChangeFileAttributes", new object[] { @@ -1007,248 +893,208 @@ namespace WebsitePanel.Providers.OS createdTime, changedTime}, this.ChangeFileAttributesOperationCompleted, userState); } - - private void OnChangeFileAttributesOperationCompleted(object arg) - { - if ((this.ChangeFileAttributesCompleted != null)) - { + + private void OnChangeFileAttributesOperationCompleted(object arg) { + if ((this.ChangeFileAttributesCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.ChangeFileAttributesCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/DeleteFile", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] - public void DeleteFile(string path) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/DeleteFile", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public void DeleteFile(string path) { this.Invoke("DeleteFile", new object[] { path}); } - + /// - public System.IAsyncResult BeginDeleteFile(string path, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginDeleteFile(string path, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("DeleteFile", new object[] { path}, callback, asyncState); } - + /// - public void EndDeleteFile(System.IAsyncResult asyncResult) - { + public void EndDeleteFile(System.IAsyncResult asyncResult) { this.EndInvoke(asyncResult); } - + /// - public void DeleteFileAsync(string path) - { + public void DeleteFileAsync(string path) { this.DeleteFileAsync(path, null); } - + /// - public void DeleteFileAsync(string path, object userState) - { - if ((this.DeleteFileOperationCompleted == null)) - { + public void DeleteFileAsync(string path, object userState) { + if ((this.DeleteFileOperationCompleted == null)) { this.DeleteFileOperationCompleted = new System.Threading.SendOrPostCallback(this.OnDeleteFileOperationCompleted); } this.InvokeAsync("DeleteFile", new object[] { path}, this.DeleteFileOperationCompleted, userState); } - - private void OnDeleteFileOperationCompleted(object arg) - { - if ((this.DeleteFileCompleted != null)) - { + + private void OnDeleteFileOperationCompleted(object arg) { + if ((this.DeleteFileCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.DeleteFileCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/DeleteFiles", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] - public void DeleteFiles(string[] files) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/DeleteFiles", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public void DeleteFiles(string[] files) { this.Invoke("DeleteFiles", new object[] { files}); } - + /// - public System.IAsyncResult BeginDeleteFiles(string[] files, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginDeleteFiles(string[] files, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("DeleteFiles", new object[] { files}, callback, asyncState); } - + /// - public void EndDeleteFiles(System.IAsyncResult asyncResult) - { + public void EndDeleteFiles(System.IAsyncResult asyncResult) { this.EndInvoke(asyncResult); } - + /// - public void DeleteFilesAsync(string[] files) - { + public void DeleteFilesAsync(string[] files) { this.DeleteFilesAsync(files, null); } - + /// - public void DeleteFilesAsync(string[] files, object userState) - { - if ((this.DeleteFilesOperationCompleted == null)) - { + public void DeleteFilesAsync(string[] files, object userState) { + if ((this.DeleteFilesOperationCompleted == null)) { this.DeleteFilesOperationCompleted = new System.Threading.SendOrPostCallback(this.OnDeleteFilesOperationCompleted); } this.InvokeAsync("DeleteFiles", new object[] { files}, this.DeleteFilesOperationCompleted, userState); } - - private void OnDeleteFilesOperationCompleted(object arg) - { - if ((this.DeleteFilesCompleted != null)) - { + + private void OnDeleteFilesOperationCompleted(object arg) { + if ((this.DeleteFilesCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.DeleteFilesCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/DeleteEmptyDirectories", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] - public void DeleteEmptyDirectories(string[] directories) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/DeleteEmptyDirectories", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public void DeleteEmptyDirectories(string[] directories) { this.Invoke("DeleteEmptyDirectories", new object[] { directories}); } - + /// - public System.IAsyncResult BeginDeleteEmptyDirectories(string[] directories, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginDeleteEmptyDirectories(string[] directories, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("DeleteEmptyDirectories", new object[] { directories}, callback, asyncState); } - + /// - public void EndDeleteEmptyDirectories(System.IAsyncResult asyncResult) - { + public void EndDeleteEmptyDirectories(System.IAsyncResult asyncResult) { this.EndInvoke(asyncResult); } - + /// - public void DeleteEmptyDirectoriesAsync(string[] directories) - { + public void DeleteEmptyDirectoriesAsync(string[] directories) { this.DeleteEmptyDirectoriesAsync(directories, null); } - + /// - public void DeleteEmptyDirectoriesAsync(string[] directories, object userState) - { - if ((this.DeleteEmptyDirectoriesOperationCompleted == null)) - { + public void DeleteEmptyDirectoriesAsync(string[] directories, object userState) { + if ((this.DeleteEmptyDirectoriesOperationCompleted == null)) { this.DeleteEmptyDirectoriesOperationCompleted = new System.Threading.SendOrPostCallback(this.OnDeleteEmptyDirectoriesOperationCompleted); } this.InvokeAsync("DeleteEmptyDirectories", new object[] { directories}, this.DeleteEmptyDirectoriesOperationCompleted, userState); } - - private void OnDeleteEmptyDirectoriesOperationCompleted(object arg) - { - if ((this.DeleteEmptyDirectoriesCompleted != null)) - { + + private void OnDeleteEmptyDirectoriesOperationCompleted(object arg) { + if ((this.DeleteEmptyDirectoriesCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.DeleteEmptyDirectoriesCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/UpdateFileBinaryContent", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] - public void UpdateFileBinaryContent(string path, [System.Xml.Serialization.XmlElementAttribute(DataType = "base64Binary")] byte[] content) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/UpdateFileBinaryContent", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public void UpdateFileBinaryContent(string path, [System.Xml.Serialization.XmlElementAttribute(DataType="base64Binary")] byte[] content) { this.Invoke("UpdateFileBinaryContent", new object[] { path, content}); } - + /// - public System.IAsyncResult BeginUpdateFileBinaryContent(string path, byte[] content, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginUpdateFileBinaryContent(string path, byte[] content, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("UpdateFileBinaryContent", new object[] { path, content}, callback, asyncState); } - + /// - public void EndUpdateFileBinaryContent(System.IAsyncResult asyncResult) - { + public void EndUpdateFileBinaryContent(System.IAsyncResult asyncResult) { this.EndInvoke(asyncResult); } - + /// - public void UpdateFileBinaryContentAsync(string path, byte[] content) - { + public void UpdateFileBinaryContentAsync(string path, byte[] content) { this.UpdateFileBinaryContentAsync(path, content, null); } - + /// - public void UpdateFileBinaryContentAsync(string path, byte[] content, object userState) - { - if ((this.UpdateFileBinaryContentOperationCompleted == null)) - { + public void UpdateFileBinaryContentAsync(string path, byte[] content, object userState) { + if ((this.UpdateFileBinaryContentOperationCompleted == null)) { this.UpdateFileBinaryContentOperationCompleted = new System.Threading.SendOrPostCallback(this.OnUpdateFileBinaryContentOperationCompleted); } this.InvokeAsync("UpdateFileBinaryContent", new object[] { path, content}, this.UpdateFileBinaryContentOperationCompleted, userState); } - - private void OnUpdateFileBinaryContentOperationCompleted(object arg) - { - if ((this.UpdateFileBinaryContentCompleted != null)) - { + + private void OnUpdateFileBinaryContentOperationCompleted(object arg) { + if ((this.UpdateFileBinaryContentCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.UpdateFileBinaryContentCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/UpdateFileBinaryContentUsingEncoding", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] - public void UpdateFileBinaryContentUsingEncoding(string path, [System.Xml.Serialization.XmlElementAttribute(DataType = "base64Binary")] byte[] content, string encoding) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/UpdateFileBinaryContentUsingEncoding", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public void UpdateFileBinaryContentUsingEncoding(string path, [System.Xml.Serialization.XmlElementAttribute(DataType="base64Binary")] byte[] content, string encoding) { this.Invoke("UpdateFileBinaryContentUsingEncoding", new object[] { path, content, encoding}); } - + /// - public System.IAsyncResult BeginUpdateFileBinaryContentUsingEncoding(string path, byte[] content, string encoding, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginUpdateFileBinaryContentUsingEncoding(string path, byte[] content, string encoding, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("UpdateFileBinaryContentUsingEncoding", new object[] { path, content, encoding}, callback, asyncState); } - + /// - public void EndUpdateFileBinaryContentUsingEncoding(System.IAsyncResult asyncResult) - { + public void EndUpdateFileBinaryContentUsingEncoding(System.IAsyncResult asyncResult) { this.EndInvoke(asyncResult); } - + /// - public void UpdateFileBinaryContentUsingEncodingAsync(string path, byte[] content, string encoding) - { + public void UpdateFileBinaryContentUsingEncodingAsync(string path, byte[] content, string encoding) { this.UpdateFileBinaryContentUsingEncodingAsync(path, content, encoding, null); } - + /// - public void UpdateFileBinaryContentUsingEncodingAsync(string path, byte[] content, string encoding, object userState) - { - if ((this.UpdateFileBinaryContentUsingEncodingOperationCompleted == null)) - { + public void UpdateFileBinaryContentUsingEncodingAsync(string path, byte[] content, string encoding, object userState) { + if ((this.UpdateFileBinaryContentUsingEncodingOperationCompleted == null)) { this.UpdateFileBinaryContentUsingEncodingOperationCompleted = new System.Threading.SendOrPostCallback(this.OnUpdateFileBinaryContentUsingEncodingOperationCompleted); } this.InvokeAsync("UpdateFileBinaryContentUsingEncoding", new object[] { @@ -1256,257 +1102,217 @@ namespace WebsitePanel.Providers.OS content, encoding}, this.UpdateFileBinaryContentUsingEncodingOperationCompleted, userState); } - - private void OnUpdateFileBinaryContentUsingEncodingOperationCompleted(object arg) - { - if ((this.UpdateFileBinaryContentUsingEncodingCompleted != null)) - { + + private void OnUpdateFileBinaryContentUsingEncodingOperationCompleted(object arg) { + if ((this.UpdateFileBinaryContentUsingEncodingCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.UpdateFileBinaryContentUsingEncodingCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/AppendFileBinaryContent", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] - public void AppendFileBinaryContent(string path, [System.Xml.Serialization.XmlElementAttribute(DataType = "base64Binary")] byte[] chunk) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/AppendFileBinaryContent", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public void AppendFileBinaryContent(string path, [System.Xml.Serialization.XmlElementAttribute(DataType="base64Binary")] byte[] chunk) { this.Invoke("AppendFileBinaryContent", new object[] { path, chunk}); } - + /// - public System.IAsyncResult BeginAppendFileBinaryContent(string path, byte[] chunk, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginAppendFileBinaryContent(string path, byte[] chunk, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("AppendFileBinaryContent", new object[] { path, chunk}, callback, asyncState); } - + /// - public void EndAppendFileBinaryContent(System.IAsyncResult asyncResult) - { + public void EndAppendFileBinaryContent(System.IAsyncResult asyncResult) { this.EndInvoke(asyncResult); } - + /// - public void AppendFileBinaryContentAsync(string path, byte[] chunk) - { + public void AppendFileBinaryContentAsync(string path, byte[] chunk) { this.AppendFileBinaryContentAsync(path, chunk, null); } - + /// - public void AppendFileBinaryContentAsync(string path, byte[] chunk, object userState) - { - if ((this.AppendFileBinaryContentOperationCompleted == null)) - { + public void AppendFileBinaryContentAsync(string path, byte[] chunk, object userState) { + if ((this.AppendFileBinaryContentOperationCompleted == null)) { this.AppendFileBinaryContentOperationCompleted = new System.Threading.SendOrPostCallback(this.OnAppendFileBinaryContentOperationCompleted); } this.InvokeAsync("AppendFileBinaryContent", new object[] { path, chunk}, this.AppendFileBinaryContentOperationCompleted, userState); } - - private void OnAppendFileBinaryContentOperationCompleted(object arg) - { - if ((this.AppendFileBinaryContentCompleted != null)) - { + + private void OnAppendFileBinaryContentOperationCompleted(object arg) { + if ((this.AppendFileBinaryContentCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.AppendFileBinaryContentCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/UpdateFileTextContent", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] - public void UpdateFileTextContent(string path, string content) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/UpdateFileTextContent", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public void UpdateFileTextContent(string path, string content) { this.Invoke("UpdateFileTextContent", new object[] { path, content}); } - + /// - public System.IAsyncResult BeginUpdateFileTextContent(string path, string content, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginUpdateFileTextContent(string path, string content, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("UpdateFileTextContent", new object[] { path, content}, callback, asyncState); } - + /// - public void EndUpdateFileTextContent(System.IAsyncResult asyncResult) - { + public void EndUpdateFileTextContent(System.IAsyncResult asyncResult) { this.EndInvoke(asyncResult); } - + /// - public void UpdateFileTextContentAsync(string path, string content) - { + public void UpdateFileTextContentAsync(string path, string content) { this.UpdateFileTextContentAsync(path, content, null); } - + /// - public void UpdateFileTextContentAsync(string path, string content, object userState) - { - if ((this.UpdateFileTextContentOperationCompleted == null)) - { + public void UpdateFileTextContentAsync(string path, string content, object userState) { + if ((this.UpdateFileTextContentOperationCompleted == null)) { this.UpdateFileTextContentOperationCompleted = new System.Threading.SendOrPostCallback(this.OnUpdateFileTextContentOperationCompleted); } this.InvokeAsync("UpdateFileTextContent", new object[] { path, content}, this.UpdateFileTextContentOperationCompleted, userState); } - - private void OnUpdateFileTextContentOperationCompleted(object arg) - { - if ((this.UpdateFileTextContentCompleted != null)) - { + + private void OnUpdateFileTextContentOperationCompleted(object arg) { + if ((this.UpdateFileTextContentCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.UpdateFileTextContentCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/MoveFile", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] - public void MoveFile(string sourcePath, string destinationPath) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/MoveFile", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public void MoveFile(string sourcePath, string destinationPath) { this.Invoke("MoveFile", new object[] { sourcePath, destinationPath}); } - + /// - public System.IAsyncResult BeginMoveFile(string sourcePath, string destinationPath, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginMoveFile(string sourcePath, string destinationPath, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("MoveFile", new object[] { sourcePath, destinationPath}, callback, asyncState); } - + /// - public void EndMoveFile(System.IAsyncResult asyncResult) - { + public void EndMoveFile(System.IAsyncResult asyncResult) { this.EndInvoke(asyncResult); } - + /// - public void MoveFileAsync(string sourcePath, string destinationPath) - { + public void MoveFileAsync(string sourcePath, string destinationPath) { this.MoveFileAsync(sourcePath, destinationPath, null); } - + /// - public void MoveFileAsync(string sourcePath, string destinationPath, object userState) - { - if ((this.MoveFileOperationCompleted == null)) - { + public void MoveFileAsync(string sourcePath, string destinationPath, object userState) { + if ((this.MoveFileOperationCompleted == null)) { this.MoveFileOperationCompleted = new System.Threading.SendOrPostCallback(this.OnMoveFileOperationCompleted); } this.InvokeAsync("MoveFile", new object[] { sourcePath, destinationPath}, this.MoveFileOperationCompleted, userState); } - - private void OnMoveFileOperationCompleted(object arg) - { - if ((this.MoveFileCompleted != null)) - { + + private void OnMoveFileOperationCompleted(object arg) { + if ((this.MoveFileCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.MoveFileCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/CopyFile", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] - public void CopyFile(string sourcePath, string destinationPath) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/CopyFile", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public void CopyFile(string sourcePath, string destinationPath) { this.Invoke("CopyFile", new object[] { sourcePath, destinationPath}); } - + /// - public System.IAsyncResult BeginCopyFile(string sourcePath, string destinationPath, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginCopyFile(string sourcePath, string destinationPath, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("CopyFile", new object[] { sourcePath, destinationPath}, callback, asyncState); } - + /// - public void EndCopyFile(System.IAsyncResult asyncResult) - { + public void EndCopyFile(System.IAsyncResult asyncResult) { this.EndInvoke(asyncResult); } - + /// - public void CopyFileAsync(string sourcePath, string destinationPath) - { + public void CopyFileAsync(string sourcePath, string destinationPath) { this.CopyFileAsync(sourcePath, destinationPath, null); } - + /// - public void CopyFileAsync(string sourcePath, string destinationPath, object userState) - { - if ((this.CopyFileOperationCompleted == null)) - { + public void CopyFileAsync(string sourcePath, string destinationPath, object userState) { + if ((this.CopyFileOperationCompleted == null)) { this.CopyFileOperationCompleted = new System.Threading.SendOrPostCallback(this.OnCopyFileOperationCompleted); } this.InvokeAsync("CopyFile", new object[] { sourcePath, destinationPath}, this.CopyFileOperationCompleted, userState); } - - private void OnCopyFileOperationCompleted(object arg) - { - if ((this.CopyFileCompleted != null)) - { + + private void OnCopyFileOperationCompleted(object arg) { + if ((this.CopyFileCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.CopyFileCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/ZipFiles", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] - public void ZipFiles(string zipFile, string rootPath, string[] files) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/ZipFiles", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public void ZipFiles(string zipFile, string rootPath, string[] files) { this.Invoke("ZipFiles", new object[] { zipFile, rootPath, files}); } - + /// - public System.IAsyncResult BeginZipFiles(string zipFile, string rootPath, string[] files, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginZipFiles(string zipFile, string rootPath, string[] files, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("ZipFiles", new object[] { zipFile, rootPath, files}, callback, asyncState); } - + /// - public void EndZipFiles(System.IAsyncResult asyncResult) - { + public void EndZipFiles(System.IAsyncResult asyncResult) { this.EndInvoke(asyncResult); } - + /// - public void ZipFilesAsync(string zipFile, string rootPath, string[] files) - { + public void ZipFilesAsync(string zipFile, string rootPath, string[] files) { this.ZipFilesAsync(zipFile, rootPath, files, null); } - + /// - public void ZipFilesAsync(string zipFile, string rootPath, string[] files, object userState) - { - if ((this.ZipFilesOperationCompleted == null)) - { + public void ZipFilesAsync(string zipFile, string rootPath, string[] files, object userState) { + if ((this.ZipFilesOperationCompleted == null)) { this.ZipFilesOperationCompleted = new System.Threading.SendOrPostCallback(this.OnZipFilesOperationCompleted); } this.InvokeAsync("ZipFiles", new object[] { @@ -1514,156 +1320,132 @@ namespace WebsitePanel.Providers.OS rootPath, files}, this.ZipFilesOperationCompleted, userState); } - - private void OnZipFilesOperationCompleted(object arg) - { - if ((this.ZipFilesCompleted != null)) - { + + private void OnZipFilesOperationCompleted(object arg) { + if ((this.ZipFilesCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.ZipFilesCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/UnzipFiles", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] - public string[] UnzipFiles(string zipFile, string destFolder) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/UnzipFiles", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public string[] UnzipFiles(string zipFile, string destFolder) { object[] results = this.Invoke("UnzipFiles", new object[] { zipFile, destFolder}); return ((string[])(results[0])); } - + /// - public System.IAsyncResult BeginUnzipFiles(string zipFile, string destFolder, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginUnzipFiles(string zipFile, string destFolder, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("UnzipFiles", new object[] { zipFile, destFolder}, callback, asyncState); } - + /// - public string[] EndUnzipFiles(System.IAsyncResult asyncResult) - { + public string[] EndUnzipFiles(System.IAsyncResult asyncResult) { object[] results = this.EndInvoke(asyncResult); return ((string[])(results[0])); } - + /// - public void UnzipFilesAsync(string zipFile, string destFolder) - { + public void UnzipFilesAsync(string zipFile, string destFolder) { this.UnzipFilesAsync(zipFile, destFolder, null); } - + /// - public void UnzipFilesAsync(string zipFile, string destFolder, object userState) - { - if ((this.UnzipFilesOperationCompleted == null)) - { + public void UnzipFilesAsync(string zipFile, string destFolder, object userState) { + if ((this.UnzipFilesOperationCompleted == null)) { this.UnzipFilesOperationCompleted = new System.Threading.SendOrPostCallback(this.OnUnzipFilesOperationCompleted); } this.InvokeAsync("UnzipFiles", new object[] { zipFile, destFolder}, this.UnzipFilesOperationCompleted, userState); } - - private void OnUnzipFilesOperationCompleted(object arg) - { - if ((this.UnzipFilesCompleted != null)) - { + + private void OnUnzipFilesOperationCompleted(object arg) { + if ((this.UnzipFilesCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.UnzipFilesCompleted(this, new UnzipFilesCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/CreateAccessDatabase", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] - public void CreateAccessDatabase(string databasePath) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/CreateAccessDatabase", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public void CreateAccessDatabase(string databasePath) { this.Invoke("CreateAccessDatabase", new object[] { databasePath}); } - + /// - public System.IAsyncResult BeginCreateAccessDatabase(string databasePath, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginCreateAccessDatabase(string databasePath, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("CreateAccessDatabase", new object[] { databasePath}, callback, asyncState); } - + /// - public void EndCreateAccessDatabase(System.IAsyncResult asyncResult) - { + public void EndCreateAccessDatabase(System.IAsyncResult asyncResult) { this.EndInvoke(asyncResult); } - + /// - public void CreateAccessDatabaseAsync(string databasePath) - { + public void CreateAccessDatabaseAsync(string databasePath) { this.CreateAccessDatabaseAsync(databasePath, null); } - + /// - public void CreateAccessDatabaseAsync(string databasePath, object userState) - { - if ((this.CreateAccessDatabaseOperationCompleted == null)) - { + public void CreateAccessDatabaseAsync(string databasePath, object userState) { + if ((this.CreateAccessDatabaseOperationCompleted == null)) { this.CreateAccessDatabaseOperationCompleted = new System.Threading.SendOrPostCallback(this.OnCreateAccessDatabaseOperationCompleted); } this.InvokeAsync("CreateAccessDatabase", new object[] { databasePath}, this.CreateAccessDatabaseOperationCompleted, userState); } - - private void OnCreateAccessDatabaseOperationCompleted(object arg) - { - if ((this.CreateAccessDatabaseCompleted != null)) - { + + private void OnCreateAccessDatabaseOperationCompleted(object arg) { + if ((this.CreateAccessDatabaseCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.CreateAccessDatabaseCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetGroupNtfsPermissions", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] - public UserPermission[] GetGroupNtfsPermissions(string path, UserPermission[] users, string usersOU) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetGroupNtfsPermissions", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public UserPermission[] GetGroupNtfsPermissions(string path, UserPermission[] users, string usersOU) { object[] results = this.Invoke("GetGroupNtfsPermissions", new object[] { path, users, usersOU}); return ((UserPermission[])(results[0])); } - + /// - public System.IAsyncResult BeginGetGroupNtfsPermissions(string path, UserPermission[] users, string usersOU, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginGetGroupNtfsPermissions(string path, UserPermission[] users, string usersOU, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("GetGroupNtfsPermissions", new object[] { path, users, usersOU}, callback, asyncState); } - + /// - public UserPermission[] EndGetGroupNtfsPermissions(System.IAsyncResult asyncResult) - { + public UserPermission[] EndGetGroupNtfsPermissions(System.IAsyncResult asyncResult) { object[] results = this.EndInvoke(asyncResult); return ((UserPermission[])(results[0])); } - + /// - public void GetGroupNtfsPermissionsAsync(string path, UserPermission[] users, string usersOU) - { + public void GetGroupNtfsPermissionsAsync(string path, UserPermission[] users, string usersOU) { this.GetGroupNtfsPermissionsAsync(path, users, usersOU, null); } - + /// - public void GetGroupNtfsPermissionsAsync(string path, UserPermission[] users, string usersOU, object userState) - { - if ((this.GetGroupNtfsPermissionsOperationCompleted == null)) - { + public void GetGroupNtfsPermissionsAsync(string path, UserPermission[] users, string usersOU, object userState) { + if ((this.GetGroupNtfsPermissionsOperationCompleted == null)) { this.GetGroupNtfsPermissionsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetGroupNtfsPermissionsOperationCompleted); } this.InvokeAsync("GetGroupNtfsPermissions", new object[] { @@ -1671,55 +1453,47 @@ namespace WebsitePanel.Providers.OS users, usersOU}, this.GetGroupNtfsPermissionsOperationCompleted, userState); } - - private void OnGetGroupNtfsPermissionsOperationCompleted(object arg) - { - if ((this.GetGroupNtfsPermissionsCompleted != null)) - { + + private void OnGetGroupNtfsPermissionsOperationCompleted(object arg) { + if ((this.GetGroupNtfsPermissionsCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.GetGroupNtfsPermissionsCompleted(this, new GetGroupNtfsPermissionsCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GrantGroupNtfsPermissions", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] - public void GrantGroupNtfsPermissions(string path, UserPermission[] users, string usersOU, bool resetChildPermissions) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GrantGroupNtfsPermissions", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public void GrantGroupNtfsPermissions(string path, UserPermission[] users, string usersOU, bool resetChildPermissions) { this.Invoke("GrantGroupNtfsPermissions", new object[] { path, users, usersOU, resetChildPermissions}); } - + /// - public System.IAsyncResult BeginGrantGroupNtfsPermissions(string path, UserPermission[] users, string usersOU, bool resetChildPermissions, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginGrantGroupNtfsPermissions(string path, UserPermission[] users, string usersOU, bool resetChildPermissions, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("GrantGroupNtfsPermissions", new object[] { path, users, usersOU, resetChildPermissions}, callback, asyncState); } - + /// - public void EndGrantGroupNtfsPermissions(System.IAsyncResult asyncResult) - { + public void EndGrantGroupNtfsPermissions(System.IAsyncResult asyncResult) { this.EndInvoke(asyncResult); } - + /// - public void GrantGroupNtfsPermissionsAsync(string path, UserPermission[] users, string usersOU, bool resetChildPermissions) - { + public void GrantGroupNtfsPermissionsAsync(string path, UserPermission[] users, string usersOU, bool resetChildPermissions) { this.GrantGroupNtfsPermissionsAsync(path, users, usersOU, resetChildPermissions, null); } - + /// - public void GrantGroupNtfsPermissionsAsync(string path, UserPermission[] users, string usersOU, bool resetChildPermissions, object userState) - { - if ((this.GrantGroupNtfsPermissionsOperationCompleted == null)) - { + public void GrantGroupNtfsPermissionsAsync(string path, UserPermission[] users, string usersOU, bool resetChildPermissions, object userState) { + if ((this.GrantGroupNtfsPermissionsOperationCompleted == null)) { this.GrantGroupNtfsPermissionsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGrantGroupNtfsPermissionsOperationCompleted); } this.InvokeAsync("GrantGroupNtfsPermissions", new object[] { @@ -1728,21 +1502,18 @@ namespace WebsitePanel.Providers.OS usersOU, resetChildPermissions}, this.GrantGroupNtfsPermissionsOperationCompleted, userState); } - - private void OnGrantGroupNtfsPermissionsOperationCompleted(object arg) - { - if ((this.GrantGroupNtfsPermissionsCompleted != null)) - { + + private void OnGrantGroupNtfsPermissionsOperationCompleted(object arg) { + if ((this.GrantGroupNtfsPermissionsCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.GrantGroupNtfsPermissionsCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/SetQuotaLimitOnFolder", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] - public void SetQuotaLimitOnFolder(string folderPath, string shareNameDrive, QuotaType quotaType, string quotaLimit, int mode, string wmiUserName, string wmiPassword) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/SetQuotaLimitOnFolder", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public void SetQuotaLimitOnFolder(string folderPath, string shareNameDrive, QuotaType quotaType, string quotaLimit, int mode, string wmiUserName, string wmiPassword) { this.Invoke("SetQuotaLimitOnFolder", new object[] { folderPath, shareNameDrive, @@ -1752,10 +1523,9 @@ namespace WebsitePanel.Providers.OS wmiUserName, wmiPassword}); } - + /// - public System.IAsyncResult BeginSetQuotaLimitOnFolder(string folderPath, string shareNameDrive, QuotaType quotaType, string quotaLimit, int mode, string wmiUserName, string wmiPassword, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginSetQuotaLimitOnFolder(string folderPath, string shareNameDrive, QuotaType quotaType, string quotaLimit, int mode, string wmiUserName, string wmiPassword, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("SetQuotaLimitOnFolder", new object[] { folderPath, shareNameDrive, @@ -1765,24 +1535,20 @@ namespace WebsitePanel.Providers.OS wmiUserName, wmiPassword}, callback, asyncState); } - + /// - public void EndSetQuotaLimitOnFolder(System.IAsyncResult asyncResult) - { + public void EndSetQuotaLimitOnFolder(System.IAsyncResult asyncResult) { this.EndInvoke(asyncResult); } - + /// - public void SetQuotaLimitOnFolderAsync(string folderPath, string shareNameDrive, QuotaType quotaType, string quotaLimit, int mode, string wmiUserName, string wmiPassword) - { + public void SetQuotaLimitOnFolderAsync(string folderPath, string shareNameDrive, QuotaType quotaType, string quotaLimit, int mode, string wmiUserName, string wmiPassword) { this.SetQuotaLimitOnFolderAsync(folderPath, shareNameDrive, quotaType, quotaLimit, mode, wmiUserName, wmiPassword, null); } - + /// - public void SetQuotaLimitOnFolderAsync(string folderPath, string shareNameDrive, QuotaType quotaType, string quotaLimit, int mode, string wmiUserName, string wmiPassword, object userState) - { - if ((this.SetQuotaLimitOnFolderOperationCompleted == null)) - { + public void SetQuotaLimitOnFolderAsync(string folderPath, string shareNameDrive, QuotaType quotaType, string quotaLimit, int mode, string wmiUserName, string wmiPassword, object userState) { + if ((this.SetQuotaLimitOnFolderOperationCompleted == null)) { this.SetQuotaLimitOnFolderOperationCompleted = new System.Threading.SendOrPostCallback(this.OnSetQuotaLimitOnFolderOperationCompleted); } this.InvokeAsync("SetQuotaLimitOnFolder", new object[] { @@ -1794,1241 +1560,1144 @@ namespace WebsitePanel.Providers.OS wmiUserName, wmiPassword}, this.SetQuotaLimitOnFolderOperationCompleted, userState); } - - private void OnSetQuotaLimitOnFolderOperationCompleted(object arg) - { - if ((this.SetQuotaLimitOnFolderCompleted != null)) - { + + private void OnSetQuotaLimitOnFolderOperationCompleted(object arg) { + if ((this.SetQuotaLimitOnFolderCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.SetQuotaLimitOnFolderCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetQuotaLimitOnFolder", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] - public int GetQuotaLimitOnFolder(string folderPath, string wmiUserName, string wmiPassword) - { - object[] results = this.Invoke("GetQuotaLimitOnFolder", new object[] { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetQuotaOnFolder", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public Quota GetQuotaOnFolder(string folderPath, string wmiUserName, string wmiPassword) { + object[] results = this.Invoke("GetQuotaOnFolder", new object[] { folderPath, wmiUserName, wmiPassword}); - return ((int)(results[0])); + return ((Quota)(results[0])); } - + /// - public System.IAsyncResult BeginGetQuotaLimitOnFolder(string folderPath, string wmiUserName, string wmiPassword, System.AsyncCallback callback, object asyncState) - { - return this.BeginInvoke("GetQuotaLimitOnFolder", new object[] { + public System.IAsyncResult BeginGetQuotaOnFolder(string folderPath, string wmiUserName, string wmiPassword, System.AsyncCallback callback, object asyncState) { + return this.BeginInvoke("GetQuotaOnFolder", new object[] { folderPath, wmiUserName, wmiPassword}, callback, asyncState); } - + /// - public int EndGetQuotaLimitOnFolder(System.IAsyncResult asyncResult) - { + public Quota EndGetQuotaOnFolder(System.IAsyncResult asyncResult) { object[] results = this.EndInvoke(asyncResult); - return ((int)(results[0])); + return ((Quota)(results[0])); } - + /// - public void GetQuotaLimitOnFolderAsync(string folderPath, string wmiUserName, string wmiPassword) - { - this.GetQuotaLimitOnFolderAsync(folderPath, wmiUserName, wmiPassword, null); + public void GetQuotaOnFolderAsync(string folderPath, string wmiUserName, string wmiPassword) { + this.GetQuotaOnFolderAsync(folderPath, wmiUserName, wmiPassword, null); } - + /// - public void GetQuotaLimitOnFolderAsync(string folderPath, string wmiUserName, string wmiPassword, object userState) - { - if ((this.GetQuotaLimitOnFolderOperationCompleted == null)) - { - this.GetQuotaLimitOnFolderOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetQuotaLimitOnFolderOperationCompleted); + public void GetQuotaOnFolderAsync(string folderPath, string wmiUserName, string wmiPassword, object userState) { + if ((this.GetQuotaOnFolderOperationCompleted == null)) { + this.GetQuotaOnFolderOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetQuotaOnFolderOperationCompleted); } - this.InvokeAsync("GetQuotaLimitOnFolder", new object[] { + this.InvokeAsync("GetQuotaOnFolder", new object[] { folderPath, wmiUserName, - wmiPassword}, this.GetQuotaLimitOnFolderOperationCompleted, userState); + wmiPassword}, this.GetQuotaOnFolderOperationCompleted, userState); } - - private void OnGetQuotaLimitOnFolderOperationCompleted(object arg) - { - if ((this.GetQuotaLimitOnFolderCompleted != null)) - { + + private void OnGetQuotaOnFolderOperationCompleted(object arg) { + if ((this.GetQuotaOnFolderCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); - this.GetQuotaLimitOnFolderCompleted(this, new GetQuotaLimitOnFolderCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); + this.GetQuotaOnFolderCompleted(this, new GetQuotaOnFolderCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/DeleteDirectoryRecursive", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] - public void DeleteDirectoryRecursive(string rootPath) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/DeleteDirectoryRecursive", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public void DeleteDirectoryRecursive(string rootPath) { this.Invoke("DeleteDirectoryRecursive", new object[] { rootPath}); } - + /// - public System.IAsyncResult BeginDeleteDirectoryRecursive(string rootPath, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginDeleteDirectoryRecursive(string rootPath, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("DeleteDirectoryRecursive", new object[] { rootPath}, callback, asyncState); } - + /// - public void EndDeleteDirectoryRecursive(System.IAsyncResult asyncResult) - { + public void EndDeleteDirectoryRecursive(System.IAsyncResult asyncResult) { this.EndInvoke(asyncResult); } - + /// - public void DeleteDirectoryRecursiveAsync(string rootPath) - { + public void DeleteDirectoryRecursiveAsync(string rootPath) { this.DeleteDirectoryRecursiveAsync(rootPath, null); } - + /// - public void DeleteDirectoryRecursiveAsync(string rootPath, object userState) - { - if ((this.DeleteDirectoryRecursiveOperationCompleted == null)) - { + public void DeleteDirectoryRecursiveAsync(string rootPath, object userState) { + if ((this.DeleteDirectoryRecursiveOperationCompleted == null)) { this.DeleteDirectoryRecursiveOperationCompleted = new System.Threading.SendOrPostCallback(this.OnDeleteDirectoryRecursiveOperationCompleted); } this.InvokeAsync("DeleteDirectoryRecursive", new object[] { rootPath}, this.DeleteDirectoryRecursiveOperationCompleted, userState); } - - private void OnDeleteDirectoryRecursiveOperationCompleted(object arg) - { - if ((this.DeleteDirectoryRecursiveCompleted != null)) - { + + private void OnDeleteDirectoryRecursiveOperationCompleted(object arg) { + if ((this.DeleteDirectoryRecursiveCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.DeleteDirectoryRecursiveCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/CheckFileServicesInstallation", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] - public bool CheckFileServicesInstallation() - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/CheckFileServicesInstallation", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public bool CheckFileServicesInstallation() { object[] results = this.Invoke("CheckFileServicesInstallation", new object[0]); return ((bool)(results[0])); } - + /// - public System.IAsyncResult BeginCheckFileServicesInstallation(System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginCheckFileServicesInstallation(System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("CheckFileServicesInstallation", new object[0], callback, asyncState); } - + /// - public bool EndCheckFileServicesInstallation(System.IAsyncResult asyncResult) - { + public bool EndCheckFileServicesInstallation(System.IAsyncResult asyncResult) { object[] results = this.EndInvoke(asyncResult); return ((bool)(results[0])); } - + /// - public void CheckFileServicesInstallationAsync() - { + public void CheckFileServicesInstallationAsync() { this.CheckFileServicesInstallationAsync(null); } - + /// - public void CheckFileServicesInstallationAsync(object userState) - { - if ((this.CheckFileServicesInstallationOperationCompleted == null)) - { + public void CheckFileServicesInstallationAsync(object userState) { + if ((this.CheckFileServicesInstallationOperationCompleted == null)) { this.CheckFileServicesInstallationOperationCompleted = new System.Threading.SendOrPostCallback(this.OnCheckFileServicesInstallationOperationCompleted); } this.InvokeAsync("CheckFileServicesInstallation", new object[0], this.CheckFileServicesInstallationOperationCompleted, userState); } - - private void OnCheckFileServicesInstallationOperationCompleted(object arg) - { - if ((this.CheckFileServicesInstallationCompleted != null)) - { + + private void OnCheckFileServicesInstallationOperationCompleted(object arg) { + if ((this.CheckFileServicesInstallationCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.CheckFileServicesInstallationCompleted(this, new CheckFileServicesInstallationCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetFolderGraph", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] - public FolderGraph GetFolderGraph(string path) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetFolderGraph", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public FolderGraph GetFolderGraph(string path) { object[] results = this.Invoke("GetFolderGraph", new object[] { path}); return ((FolderGraph)(results[0])); } - + /// - public System.IAsyncResult BeginGetFolderGraph(string path, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginGetFolderGraph(string path, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("GetFolderGraph", new object[] { path}, callback, asyncState); } - + /// - public FolderGraph EndGetFolderGraph(System.IAsyncResult asyncResult) - { + public FolderGraph EndGetFolderGraph(System.IAsyncResult asyncResult) { object[] results = this.EndInvoke(asyncResult); return ((FolderGraph)(results[0])); } - + /// - public void GetFolderGraphAsync(string path) - { + public void GetFolderGraphAsync(string path) { this.GetFolderGraphAsync(path, null); } - + /// - public void GetFolderGraphAsync(string path, object userState) - { - if ((this.GetFolderGraphOperationCompleted == null)) - { + public void GetFolderGraphAsync(string path, object userState) { + if ((this.GetFolderGraphOperationCompleted == null)) { this.GetFolderGraphOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetFolderGraphOperationCompleted); } this.InvokeAsync("GetFolderGraph", new object[] { path}, this.GetFolderGraphOperationCompleted, userState); } - - private void OnGetFolderGraphOperationCompleted(object arg) - { - if ((this.GetFolderGraphCompleted != null)) - { + + private void OnGetFolderGraphOperationCompleted(object arg) { + if ((this.GetFolderGraphCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.GetFolderGraphCompleted(this, new GetFolderGraphCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/ExecuteSyncActions", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] - public void ExecuteSyncActions(FileSyncAction[] actions) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/ExecuteSyncActions", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public void ExecuteSyncActions(FileSyncAction[] actions) { this.Invoke("ExecuteSyncActions", new object[] { actions}); } - + /// - public System.IAsyncResult BeginExecuteSyncActions(FileSyncAction[] actions, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginExecuteSyncActions(FileSyncAction[] actions, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("ExecuteSyncActions", new object[] { actions}, callback, asyncState); } - + /// - public void EndExecuteSyncActions(System.IAsyncResult asyncResult) - { + public void EndExecuteSyncActions(System.IAsyncResult asyncResult) { this.EndInvoke(asyncResult); } - + /// - public void ExecuteSyncActionsAsync(FileSyncAction[] actions) - { + public void ExecuteSyncActionsAsync(FileSyncAction[] actions) { this.ExecuteSyncActionsAsync(actions, null); } - + /// - public void ExecuteSyncActionsAsync(FileSyncAction[] actions, object userState) - { - if ((this.ExecuteSyncActionsOperationCompleted == null)) - { + public void ExecuteSyncActionsAsync(FileSyncAction[] actions, object userState) { + if ((this.ExecuteSyncActionsOperationCompleted == null)) { this.ExecuteSyncActionsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnExecuteSyncActionsOperationCompleted); } this.InvokeAsync("ExecuteSyncActions", new object[] { actions}, this.ExecuteSyncActionsOperationCompleted, userState); } - - private void OnExecuteSyncActionsOperationCompleted(object arg) - { - if ((this.ExecuteSyncActionsCompleted != null)) - { + + private void OnExecuteSyncActionsOperationCompleted(object arg) { + if ((this.ExecuteSyncActionsCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.ExecuteSyncActionsCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetInstalledOdbcDrivers", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] - public string[] GetInstalledOdbcDrivers() - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetInstalledOdbcDrivers", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public string[] GetInstalledOdbcDrivers() { object[] results = this.Invoke("GetInstalledOdbcDrivers", new object[0]); return ((string[])(results[0])); } - + /// - public System.IAsyncResult BeginGetInstalledOdbcDrivers(System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginGetInstalledOdbcDrivers(System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("GetInstalledOdbcDrivers", new object[0], callback, asyncState); } - + /// - public string[] EndGetInstalledOdbcDrivers(System.IAsyncResult asyncResult) - { + public string[] EndGetInstalledOdbcDrivers(System.IAsyncResult asyncResult) { object[] results = this.EndInvoke(asyncResult); return ((string[])(results[0])); } - + /// - public void GetInstalledOdbcDriversAsync() - { + public void GetInstalledOdbcDriversAsync() { this.GetInstalledOdbcDriversAsync(null); } - + /// - public void GetInstalledOdbcDriversAsync(object userState) - { - if ((this.GetInstalledOdbcDriversOperationCompleted == null)) - { + public void GetInstalledOdbcDriversAsync(object userState) { + if ((this.GetInstalledOdbcDriversOperationCompleted == null)) { this.GetInstalledOdbcDriversOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetInstalledOdbcDriversOperationCompleted); } this.InvokeAsync("GetInstalledOdbcDrivers", new object[0], this.GetInstalledOdbcDriversOperationCompleted, userState); } - - private void OnGetInstalledOdbcDriversOperationCompleted(object arg) - { - if ((this.GetInstalledOdbcDriversCompleted != null)) - { + + private void OnGetInstalledOdbcDriversOperationCompleted(object arg) { + if ((this.GetInstalledOdbcDriversCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.GetInstalledOdbcDriversCompleted(this, new GetInstalledOdbcDriversCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetDSNNames", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] - public string[] GetDSNNames() - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetDSNNames", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public string[] GetDSNNames() { object[] results = this.Invoke("GetDSNNames", new object[0]); return ((string[])(results[0])); } - + /// - public System.IAsyncResult BeginGetDSNNames(System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginGetDSNNames(System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("GetDSNNames", new object[0], callback, asyncState); } - + /// - public string[] EndGetDSNNames(System.IAsyncResult asyncResult) - { + public string[] EndGetDSNNames(System.IAsyncResult asyncResult) { object[] results = this.EndInvoke(asyncResult); return ((string[])(results[0])); } - + /// - public void GetDSNNamesAsync() - { + public void GetDSNNamesAsync() { this.GetDSNNamesAsync(null); } - + /// - public void GetDSNNamesAsync(object userState) - { - if ((this.GetDSNNamesOperationCompleted == null)) - { + public void GetDSNNamesAsync(object userState) { + if ((this.GetDSNNamesOperationCompleted == null)) { this.GetDSNNamesOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetDSNNamesOperationCompleted); } this.InvokeAsync("GetDSNNames", new object[0], this.GetDSNNamesOperationCompleted, userState); } - - private void OnGetDSNNamesOperationCompleted(object arg) - { - if ((this.GetDSNNamesCompleted != null)) - { + + private void OnGetDSNNamesOperationCompleted(object arg) { + if ((this.GetDSNNamesCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.GetDSNNamesCompleted(this, new GetDSNNamesCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetDSN", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] - public SystemDSN GetDSN(string dsnName) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetDSN", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public SystemDSN GetDSN(string dsnName) { object[] results = this.Invoke("GetDSN", new object[] { dsnName}); return ((SystemDSN)(results[0])); } - + /// - public System.IAsyncResult BeginGetDSN(string dsnName, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginGetDSN(string dsnName, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("GetDSN", new object[] { dsnName}, callback, asyncState); } - + /// - public SystemDSN EndGetDSN(System.IAsyncResult asyncResult) - { + public SystemDSN EndGetDSN(System.IAsyncResult asyncResult) { object[] results = this.EndInvoke(asyncResult); return ((SystemDSN)(results[0])); } - + /// - public void GetDSNAsync(string dsnName) - { + public void GetDSNAsync(string dsnName) { this.GetDSNAsync(dsnName, null); } - + /// - public void GetDSNAsync(string dsnName, object userState) - { - if ((this.GetDSNOperationCompleted == null)) - { + public void GetDSNAsync(string dsnName, object userState) { + if ((this.GetDSNOperationCompleted == null)) { this.GetDSNOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetDSNOperationCompleted); } this.InvokeAsync("GetDSN", new object[] { dsnName}, this.GetDSNOperationCompleted, userState); } - - private void OnGetDSNOperationCompleted(object arg) - { - if ((this.GetDSNCompleted != null)) - { + + private void OnGetDSNOperationCompleted(object arg) { + if ((this.GetDSNCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.GetDSNCompleted(this, new GetDSNCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/CreateDSN", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] - public void CreateDSN(SystemDSN dsn) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/CreateDSN", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public void CreateDSN(SystemDSN dsn) { this.Invoke("CreateDSN", new object[] { dsn}); } - + /// - public System.IAsyncResult BeginCreateDSN(SystemDSN dsn, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginCreateDSN(SystemDSN dsn, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("CreateDSN", new object[] { dsn}, callback, asyncState); } - + /// - public void EndCreateDSN(System.IAsyncResult asyncResult) - { + public void EndCreateDSN(System.IAsyncResult asyncResult) { this.EndInvoke(asyncResult); } - + /// - public void CreateDSNAsync(SystemDSN dsn) - { + public void CreateDSNAsync(SystemDSN dsn) { this.CreateDSNAsync(dsn, null); } - + /// - public void CreateDSNAsync(SystemDSN dsn, object userState) - { - if ((this.CreateDSNOperationCompleted == null)) - { + public void CreateDSNAsync(SystemDSN dsn, object userState) { + if ((this.CreateDSNOperationCompleted == null)) { this.CreateDSNOperationCompleted = new System.Threading.SendOrPostCallback(this.OnCreateDSNOperationCompleted); } this.InvokeAsync("CreateDSN", new object[] { dsn}, this.CreateDSNOperationCompleted, userState); } - - private void OnCreateDSNOperationCompleted(object arg) - { - if ((this.CreateDSNCompleted != null)) - { + + private void OnCreateDSNOperationCompleted(object arg) { + if ((this.CreateDSNCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.CreateDSNCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/UpdateDSN", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] - public void UpdateDSN(SystemDSN dsn) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/UpdateDSN", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public void UpdateDSN(SystemDSN dsn) { this.Invoke("UpdateDSN", new object[] { dsn}); } - + /// - public System.IAsyncResult BeginUpdateDSN(SystemDSN dsn, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginUpdateDSN(SystemDSN dsn, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("UpdateDSN", new object[] { dsn}, callback, asyncState); } - + /// - public void EndUpdateDSN(System.IAsyncResult asyncResult) - { + public void EndUpdateDSN(System.IAsyncResult asyncResult) { this.EndInvoke(asyncResult); } - + /// - public void UpdateDSNAsync(SystemDSN dsn) - { + public void UpdateDSNAsync(SystemDSN dsn) { this.UpdateDSNAsync(dsn, null); } - + /// - public void UpdateDSNAsync(SystemDSN dsn, object userState) - { - if ((this.UpdateDSNOperationCompleted == null)) - { + public void UpdateDSNAsync(SystemDSN dsn, object userState) { + if ((this.UpdateDSNOperationCompleted == null)) { this.UpdateDSNOperationCompleted = new System.Threading.SendOrPostCallback(this.OnUpdateDSNOperationCompleted); } this.InvokeAsync("UpdateDSN", new object[] { dsn}, this.UpdateDSNOperationCompleted, userState); } - - private void OnUpdateDSNOperationCompleted(object arg) - { - if ((this.UpdateDSNCompleted != null)) - { + + private void OnUpdateDSNOperationCompleted(object arg) { + if ((this.UpdateDSNCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.UpdateDSNCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] - [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/DeleteDSN", RequestNamespace = "http://smbsaas/websitepanel/server/", ResponseNamespace = "http://smbsaas/websitepanel/server/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] - public void DeleteDSN(string dsnName) - { + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/DeleteDSN", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public void DeleteDSN(string dsnName) { this.Invoke("DeleteDSN", new object[] { dsnName}); } - + /// - public System.IAsyncResult BeginDeleteDSN(string dsnName, System.AsyncCallback callback, object asyncState) - { + public System.IAsyncResult BeginDeleteDSN(string dsnName, System.AsyncCallback callback, object asyncState) { return this.BeginInvoke("DeleteDSN", new object[] { dsnName}, callback, asyncState); } - + /// - public void EndDeleteDSN(System.IAsyncResult asyncResult) - { + public void EndDeleteDSN(System.IAsyncResult asyncResult) { this.EndInvoke(asyncResult); } - + /// - public void DeleteDSNAsync(string dsnName) - { + public void DeleteDSNAsync(string dsnName) { this.DeleteDSNAsync(dsnName, null); } - + /// - public void DeleteDSNAsync(string dsnName, object userState) - { - if ((this.DeleteDSNOperationCompleted == null)) - { + public void DeleteDSNAsync(string dsnName, object userState) { + if ((this.DeleteDSNOperationCompleted == null)) { this.DeleteDSNOperationCompleted = new System.Threading.SendOrPostCallback(this.OnDeleteDSNOperationCompleted); } this.InvokeAsync("DeleteDSN", new object[] { dsnName}, this.DeleteDSNOperationCompleted, userState); } - - private void OnDeleteDSNOperationCompleted(object arg) - { - if ((this.DeleteDSNCompleted != null)) - { + + private void OnDeleteDSNOperationCompleted(object arg) { + if ((this.DeleteDSNCompleted != null)) { System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); this.DeleteDSNCompleted(this, new System.ComponentModel.AsyncCompletedEventArgs(invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); } } - + /// - public new void CancelAsync(object userState) - { + [System.Web.Services.Protocols.SoapHeaderAttribute("ServiceProviderSettingsSoapHeaderValue")] + [System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://smbsaas/websitepanel/server/GetDomainDnsRecords", RequestNamespace="http://smbsaas/websitepanel/server/", ResponseNamespace="http://smbsaas/websitepanel/server/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)] + public DnsRecordInfo[] GetDomainDnsRecords(string domain, string dnsServer, DnsRecordType recordType) { + object[] results = this.Invoke("GetDomainDnsRecords", new object[] { + domain, + dnsServer, + recordType}); + return ((DnsRecordInfo[])(results[0])); + } + + /// + public System.IAsyncResult BeginGetDomainDnsRecords(string domain, string dnsServer, DnsRecordType recordType, System.AsyncCallback callback, object asyncState) { + return this.BeginInvoke("GetDomainDnsRecords", new object[] { + domain, + dnsServer, + recordType}, callback, asyncState); + } + + /// + public DnsRecordInfo[] EndGetDomainDnsRecords(System.IAsyncResult asyncResult) { + object[] results = this.EndInvoke(asyncResult); + return ((DnsRecordInfo[])(results[0])); + } + + /// + public void GetDomainDnsRecordsAsync(string domain, string dnsServer, DnsRecordType recordType) { + this.GetDomainDnsRecordsAsync(domain, dnsServer, recordType, null); + } + + /// + public void GetDomainDnsRecordsAsync(string domain, string dnsServer, DnsRecordType recordType, object userState) { + if ((this.GetDomainDnsRecordsOperationCompleted == null)) { + this.GetDomainDnsRecordsOperationCompleted = new System.Threading.SendOrPostCallback(this.OnGetDomainDnsRecordsOperationCompleted); + } + this.InvokeAsync("GetDomainDnsRecords", new object[] { + domain, + dnsServer, + recordType}, this.GetDomainDnsRecordsOperationCompleted, userState); + } + + private void OnGetDomainDnsRecordsOperationCompleted(object arg) { + if ((this.GetDomainDnsRecordsCompleted != null)) { + System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg)); + this.GetDomainDnsRecordsCompleted(this, new GetDomainDnsRecordsCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState)); + } + } + + /// + public new void CancelAsync(object userState) { base.CancelAsync(userState); } } - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void CreatePackageFolderCompletedEventHandler(object sender, CreatePackageFolderCompletedEventArgs e); - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class CreatePackageFolderCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs - { - + public partial class CreatePackageFolderCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + private object[] results; - - internal CreatePackageFolderCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : - base(exception, cancelled, userState) - { + + internal CreatePackageFolderCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { this.results = results; } - + /// - public string Result - { - get - { + public string Result { + get { this.RaiseExceptionIfNecessary(); return ((string)(this.results[0])); } } } - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void FileExistsCompletedEventHandler(object sender, FileExistsCompletedEventArgs e); - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class FileExistsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs - { - + public partial class FileExistsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + private object[] results; - - internal FileExistsCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : - base(exception, cancelled, userState) - { + + internal FileExistsCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { this.results = results; } - + /// - public bool Result - { - get - { + public bool Result { + get { this.RaiseExceptionIfNecessary(); return ((bool)(this.results[0])); } } } - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void DirectoryExistsCompletedEventHandler(object sender, DirectoryExistsCompletedEventArgs e); - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class DirectoryExistsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs - { - + public partial class DirectoryExistsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + private object[] results; - - internal DirectoryExistsCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : - base(exception, cancelled, userState) - { + + internal DirectoryExistsCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { this.results = results; } - + /// - public bool Result - { - get - { + public bool Result { + get { this.RaiseExceptionIfNecessary(); return ((bool)(this.results[0])); } } } - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetFileCompletedEventHandler(object sender, GetFileCompletedEventArgs e); - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class GetFileCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs - { - + public partial class GetFileCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + private object[] results; - - internal GetFileCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : - base(exception, cancelled, userState) - { + + internal GetFileCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { this.results = results; } - + /// - public SystemFile Result - { - get - { + public SystemFile Result { + get { this.RaiseExceptionIfNecessary(); return ((SystemFile)(this.results[0])); } } } - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetFilesCompletedEventHandler(object sender, GetFilesCompletedEventArgs e); - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class GetFilesCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs - { - + public partial class GetFilesCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + private object[] results; - - internal GetFilesCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : - base(exception, cancelled, userState) - { + + internal GetFilesCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { this.results = results; } - + /// - public SystemFile[] Result - { - get - { + public SystemFile[] Result { + get { this.RaiseExceptionIfNecessary(); return ((SystemFile[])(this.results[0])); } } } - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetDirectoriesRecursiveCompletedEventHandler(object sender, GetDirectoriesRecursiveCompletedEventArgs e); - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class GetDirectoriesRecursiveCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs - { - + public partial class GetDirectoriesRecursiveCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + private object[] results; - - internal GetDirectoriesRecursiveCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : - base(exception, cancelled, userState) - { + + internal GetDirectoriesRecursiveCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { this.results = results; } - + /// - public SystemFile[] Result - { - get - { + public SystemFile[] Result { + get { this.RaiseExceptionIfNecessary(); return ((SystemFile[])(this.results[0])); } } } - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetFilesRecursiveCompletedEventHandler(object sender, GetFilesRecursiveCompletedEventArgs e); - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class GetFilesRecursiveCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs - { - + public partial class GetFilesRecursiveCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + private object[] results; - - internal GetFilesRecursiveCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : - base(exception, cancelled, userState) - { + + internal GetFilesRecursiveCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { this.results = results; } - + /// - public SystemFile[] Result - { - get - { + public SystemFile[] Result { + get { this.RaiseExceptionIfNecessary(); return ((SystemFile[])(this.results[0])); } } } - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetFilesRecursiveByPatternCompletedEventHandler(object sender, GetFilesRecursiveByPatternCompletedEventArgs e); - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class GetFilesRecursiveByPatternCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs - { - + public partial class GetFilesRecursiveByPatternCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + private object[] results; - - internal GetFilesRecursiveByPatternCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : - base(exception, cancelled, userState) - { + + internal GetFilesRecursiveByPatternCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { this.results = results; } - + /// - public SystemFile[] Result - { - get - { + public SystemFile[] Result { + get { this.RaiseExceptionIfNecessary(); return ((SystemFile[])(this.results[0])); } } } - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetFileBinaryContentCompletedEventHandler(object sender, GetFileBinaryContentCompletedEventArgs e); - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class GetFileBinaryContentCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs - { - + public partial class GetFileBinaryContentCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + private object[] results; - - internal GetFileBinaryContentCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : - base(exception, cancelled, userState) - { + + internal GetFileBinaryContentCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { this.results = results; } - + /// - public byte[] Result - { - get - { + public byte[] Result { + get { this.RaiseExceptionIfNecessary(); return ((byte[])(this.results[0])); } } } - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetFileBinaryContentUsingEncodingCompletedEventHandler(object sender, GetFileBinaryContentUsingEncodingCompletedEventArgs e); - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class GetFileBinaryContentUsingEncodingCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs - { - + public partial class GetFileBinaryContentUsingEncodingCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + private object[] results; - - internal GetFileBinaryContentUsingEncodingCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : - base(exception, cancelled, userState) - { + + internal GetFileBinaryContentUsingEncodingCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { this.results = results; } - + /// - public byte[] Result - { - get - { + public byte[] Result { + get { this.RaiseExceptionIfNecessary(); return ((byte[])(this.results[0])); } } } - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetFileBinaryChunkCompletedEventHandler(object sender, GetFileBinaryChunkCompletedEventArgs e); - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class GetFileBinaryChunkCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs - { - + public partial class GetFileBinaryChunkCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + private object[] results; - - internal GetFileBinaryChunkCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : - base(exception, cancelled, userState) - { + + internal GetFileBinaryChunkCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { this.results = results; } - + /// - public byte[] Result - { - get - { + public byte[] Result { + get { this.RaiseExceptionIfNecessary(); return ((byte[])(this.results[0])); } } } - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetFileTextContentCompletedEventHandler(object sender, GetFileTextContentCompletedEventArgs e); - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class GetFileTextContentCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs - { - + public partial class GetFileTextContentCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + private object[] results; - - internal GetFileTextContentCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : - base(exception, cancelled, userState) - { + + internal GetFileTextContentCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { this.results = results; } - + /// - public string Result - { - get - { + public string Result { + get { this.RaiseExceptionIfNecessary(); return ((string)(this.results[0])); } } } - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void CreateFileCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void CreateDirectoryCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void ChangeFileAttributesCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void DeleteFileCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void DeleteFilesCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void DeleteEmptyDirectoriesCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void UpdateFileBinaryContentCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void UpdateFileBinaryContentUsingEncodingCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void AppendFileBinaryContentCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void UpdateFileTextContentCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void MoveFileCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void CopyFileCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void ZipFilesCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void UnzipFilesCompletedEventHandler(object sender, UnzipFilesCompletedEventArgs e); - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class UnzipFilesCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs - { - + public partial class UnzipFilesCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + private object[] results; - - internal UnzipFilesCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : - base(exception, cancelled, userState) - { + + internal UnzipFilesCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { this.results = results; } - + /// - public string[] Result - { - get - { + public string[] Result { + get { this.RaiseExceptionIfNecessary(); return ((string[])(this.results[0])); } } } - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void CreateAccessDatabaseCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetGroupNtfsPermissionsCompletedEventHandler(object sender, GetGroupNtfsPermissionsCompletedEventArgs e); - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class GetGroupNtfsPermissionsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs - { - + public partial class GetGroupNtfsPermissionsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + private object[] results; - - internal GetGroupNtfsPermissionsCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : - base(exception, cancelled, userState) - { + + internal GetGroupNtfsPermissionsCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { this.results = results; } - + /// - public UserPermission[] Result - { - get - { + public UserPermission[] Result { + get { this.RaiseExceptionIfNecessary(); return ((UserPermission[])(this.results[0])); } } } - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GrantGroupNtfsPermissionsCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void SetQuotaLimitOnFolderCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] - public delegate void GetQuotaLimitOnFolderCompletedEventHandler(object sender, GetQuotaLimitOnFolderCompletedEventArgs e); - + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + public delegate void GetQuotaOnFolderCompletedEventHandler(object sender, GetQuotaOnFolderCompletedEventArgs e); + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class GetQuotaLimitOnFolderCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs - { - + public partial class GetQuotaOnFolderCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + private object[] results; - - internal GetQuotaLimitOnFolderCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : - base(exception, cancelled, userState) - { + + internal GetQuotaOnFolderCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { this.results = results; } - + /// - public int Result - { - get - { + public Quota Result { + get { this.RaiseExceptionIfNecessary(); - return ((int)(this.results[0])); + return ((Quota)(this.results[0])); } } } - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void DeleteDirectoryRecursiveCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void CheckFileServicesInstallationCompletedEventHandler(object sender, CheckFileServicesInstallationCompletedEventArgs e); - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class CheckFileServicesInstallationCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs - { - + public partial class CheckFileServicesInstallationCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + private object[] results; - - internal CheckFileServicesInstallationCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : - base(exception, cancelled, userState) - { + + internal CheckFileServicesInstallationCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { this.results = results; } - + /// - public bool Result - { - get - { + public bool Result { + get { this.RaiseExceptionIfNecessary(); return ((bool)(this.results[0])); } } } - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetFolderGraphCompletedEventHandler(object sender, GetFolderGraphCompletedEventArgs e); - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class GetFolderGraphCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs - { - + public partial class GetFolderGraphCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + private object[] results; - - internal GetFolderGraphCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : - base(exception, cancelled, userState) - { + + internal GetFolderGraphCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { this.results = results; } - + /// - public FolderGraph Result - { - get - { + public FolderGraph Result { + get { this.RaiseExceptionIfNecessary(); return ((FolderGraph)(this.results[0])); } } } - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void ExecuteSyncActionsCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetInstalledOdbcDriversCompletedEventHandler(object sender, GetInstalledOdbcDriversCompletedEventArgs e); - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class GetInstalledOdbcDriversCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs - { - + public partial class GetInstalledOdbcDriversCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + private object[] results; - - internal GetInstalledOdbcDriversCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : - base(exception, cancelled, userState) - { + + internal GetInstalledOdbcDriversCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { this.results = results; } - + /// - public string[] Result - { - get - { + public string[] Result { + get { this.RaiseExceptionIfNecessary(); return ((string[])(this.results[0])); } } } - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetDSNNamesCompletedEventHandler(object sender, GetDSNNamesCompletedEventArgs e); - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class GetDSNNamesCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs - { - + public partial class GetDSNNamesCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + private object[] results; - - internal GetDSNNamesCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : - base(exception, cancelled, userState) - { + + internal GetDSNNamesCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { this.results = results; } - + /// - public string[] Result - { - get - { + public string[] Result { + get { this.RaiseExceptionIfNecessary(); return ((string[])(this.results[0])); } } } - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void GetDSNCompletedEventHandler(object sender, GetDSNCompletedEventArgs e); - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute("code")] - public partial class GetDSNCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs - { - + public partial class GetDSNCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + private object[] results; - - internal GetDSNCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : - base(exception, cancelled, userState) - { + + internal GetDSNCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { this.results = results; } - + /// - public SystemDSN Result - { - get - { + public SystemDSN Result { + get { this.RaiseExceptionIfNecessary(); return ((SystemDSN)(this.results[0])); } } } - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void CreateDSNCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void UpdateDSNCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); - + /// - [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.42")] + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] public delegate void DeleteDSNCompletedEventHandler(object sender, System.ComponentModel.AsyncCompletedEventArgs e); + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + public delegate void GetDomainDnsRecordsCompletedEventHandler(object sender, GetDomainDnsRecordsCompletedEventArgs e); + + /// + [System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")] + [System.Diagnostics.DebuggerStepThroughAttribute()] + [System.ComponentModel.DesignerCategoryAttribute("code")] + public partial class GetDomainDnsRecordsCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs { + + private object[] results; + + internal GetDomainDnsRecordsCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) : + base(exception, cancelled, userState) { + this.results = results; + } + + /// + public DnsRecordInfo[] Result { + get { + this.RaiseExceptionIfNecessary(); + return ((DnsRecordInfo[])(this.results[0])); + } + } + } } diff --git a/WebsitePanel/Sources/WebsitePanel.Server/OperatingSystem.asmx.cs b/WebsitePanel/Sources/WebsitePanel.Server/OperatingSystem.asmx.cs index c082133e..20c80ca2 100644 --- a/WebsitePanel/Sources/WebsitePanel.Server/OperatingSystem.asmx.cs +++ b/WebsitePanel/Sources/WebsitePanel.Server/OperatingSystem.asmx.cs @@ -38,6 +38,9 @@ using Microsoft.Web.Services3; using WebsitePanel.Providers; using WebsitePanel.Providers.OS; using WebsitePanel.Server.Utils; +using WebsitePanel.Providers.DNS; +using WebsitePanel.Providers.DomainLookup; +using System.Collections.Generic; namespace WebsitePanel.Server { @@ -737,5 +740,26 @@ namespace WebsitePanel.Server } } #endregion + + #region Dns + + [WebMethod, SoapHeader("settings")] + public DnsRecordInfo[] GetDomainDnsRecords(string domain, string dnsServer, DnsRecordType recordType) + { + try + { + Log.WriteStart("'{0}' GetDomainDnsRecords", ProviderSettings.ProviderName); + var result = OsProvider.GetDomainDnsRecords(domain, dnsServer, recordType); + Log.WriteEnd("'{0}' GetDomainDnsRecords", ProviderSettings.ProviderName); + return result; + } + catch (Exception ex) + { + Log.WriteError(String.Format("'{0}' GetDomainDnsRecords", ProviderSettings.ProviderName), ex); + throw; + } + } + + #endregion } } diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_GlobalResources/WebsitePanel_SharedResources.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_GlobalResources/WebsitePanel_SharedResources.ascx.resx index f7a9f87f..46df8d92 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/App_GlobalResources/WebsitePanel_SharedResources.ascx.resx +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/App_GlobalResources/WebsitePanel_SharedResources.ascx.resx @@ -5593,4 +5593,7 @@ Error creating rds collection. You need to add at least 1 rds server to collection + + Check MX and NS on DNS servers + \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ScheduleTaskControls/App_LocalResources/DomainLookupView.ascx.Designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ScheduleTaskControls/App_LocalResources/DomainLookupView.ascx.Designer.cs new file mode 100644 index 00000000..a654215f --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ScheduleTaskControls/App_LocalResources/DomainLookupView.ascx.Designer.cs @@ -0,0 +1,82 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.33440 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace WebsitePanel.Portal.ScheduleTaskControls.App_LocalResources { + using System; + + + /// + /// A strongly-typed resource class, for looking up localized strings, etc. + /// + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class DomainLookupView_ascx { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal DomainLookupView_ascx() { + } + + /// + /// Returns the cached ResourceManager instance used by this class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("WebsitePanel.Portal.ScheduleTaskControls.App_LocalResources.DomainLookupView.ascx" + + "", typeof(DomainLookupView_ascx).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// Looks up a localized string similar to DNS Servers. + /// + internal static string lblDnsServers { + get { + return ResourceManager.GetString("lblDnsServers", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Please enter dns servers to check.. + /// + internal static string lblDnsServersHint { + get { + return ResourceManager.GetString("lblDnsServersHint", resourceCulture); + } + } + } +} diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ScheduleTaskControls/App_LocalResources/DomainLookupView.ascx.resx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ScheduleTaskControls/App_LocalResources/DomainLookupView.ascx.resx new file mode 100644 index 00000000..21183eb3 --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ScheduleTaskControls/App_LocalResources/DomainLookupView.ascx.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + DNS Servers + + + Please enter dns servers to check. + + \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ScheduleTaskControls/DomainLookupView.ascx b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ScheduleTaskControls/DomainLookupView.ascx new file mode 100644 index 00000000..52fb0419 --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ScheduleTaskControls/DomainLookupView.ascx @@ -0,0 +1,19 @@ +<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="DomainLookupView.ascx.cs" Inherits="WebsitePanel.Portal.ScheduleTaskControls.DomainLookupView" %> + + + + + + + + + +
+ + + +
+ + + +
diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ScheduleTaskControls/DomainLookupView.ascx.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ScheduleTaskControls/DomainLookupView.ascx.cs new file mode 100644 index 00000000..089d2a4d --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ScheduleTaskControls/DomainLookupView.ascx.cs @@ -0,0 +1,46 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.UI; +using System.Web.UI.WebControls; +using WebsitePanel.EnterpriseServer; +using WebsitePanel.Portal.UserControls.ScheduleTaskView; + +namespace WebsitePanel.Portal.ScheduleTaskControls +{ + public partial class DomainLookupView : EmptyView + { + private static readonly string DnsServersParameter = "DNS_SERVERS"; + private static readonly string MailToParameter = "MAIL_TO"; + + protected void Page_Load(object sender, EventArgs e) + { + + } + + /// + /// Sets scheduler task parameters on view. + /// + /// Parameters list to be set on view. + public override void SetParameters(ScheduleTaskParameterInfo[] parameters) + { + base.SetParameters(parameters); + + this.SetParameter(this.txtDnsServers, DnsServersParameter); + this.SetParameter(this.txtMailTo, MailToParameter); + } + + /// + /// Gets scheduler task parameters from view. + /// + /// Parameters list filled from view. + public override ScheduleTaskParameterInfo[] GetParameters() + { + ScheduleTaskParameterInfo dnsServers = this.GetParameter(this.txtDnsServers, DnsServersParameter); + ScheduleTaskParameterInfo mailTo = this.GetParameter(this.txtMailTo, MailToParameter); + + return new ScheduleTaskParameterInfo[2] { dnsServers, mailTo }; + } + } +} \ No newline at end of file diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ScheduleTaskControls/DomainLookupView.ascx.designer.cs b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ScheduleTaskControls/DomainLookupView.ascx.designer.cs new file mode 100644 index 00000000..f9c000f5 --- /dev/null +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/ScheduleTaskControls/DomainLookupView.ascx.designer.cs @@ -0,0 +1,51 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +namespace WebsitePanel.Portal.ScheduleTaskControls { + + + public partial class DomainLookupView { + + /// + /// lblDnsServers control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lblDnsServers; + + /// + /// txtDnsServers control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox txtDnsServers; + + /// + /// lblMailTo control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.Label lblMailTo; + + /// + /// txtMailTo control. + /// + /// + /// Auto-generated field. + /// To modify move field declaration from designer file to code-behind file. + /// + protected global::System.Web.UI.WebControls.TextBox txtMailTo; + } +} diff --git a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebsitePanel.Portal.Modules.csproj b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebsitePanel.Portal.Modules.csproj index 22deb551..fd1d6356 100644 --- a/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebsitePanel.Portal.Modules.csproj +++ b/WebsitePanel/Sources/WebsitePanel.WebPortal/DesktopModules/WebsitePanel/WebsitePanel.Portal.Modules.csproj @@ -288,6 +288,18 @@ RDSCollectionUsers.ascx + + True + True + DomainLookupView.ascx.resx + + + DomainLookupView.ascx + ASPXCodeBehind + + + DomainLookupView.ascx + SettingsServiceLevels.ascx ASPXCodeBehind @@ -4234,6 +4246,11 @@ + + ResXFileCodeGenerator + DomainLookupView.ascx.Designer.cs + +