public override void DoWork() { // Input parameters: // - SERVER_NAME // - EXECUTABLE_PATH BackgroundTask topTask = TaskManager.TopTask; // get input parameters string serverName = (string)topTask.GetParamValue("SERVER_NAME"); string execPath = (string)topTask.GetParamValue("EXECUTABLE_PATH"); string execParams = (string)topTask.GetParamValue("EXECUTABLE_PARAMS"); if (execParams == null) execParams = ""; // check input parameters if (String.IsNullOrEmpty(serverName)) { TaskManager.WriteWarning("Specify 'Server Name' task parameter"); return; } if (String.IsNullOrEmpty(execPath)) { TaskManager.WriteWarning("Specify 'Executable Path' task parameter"); return; } // find server by name ServerInfo server = ServerController.GetServerByName(serverName); if (server == null) { TaskManager.WriteWarning(String.Format("Server with the name '{0}' was not found", serverName)); return; } // execute system command WindowsServer winServer = new WindowsServer(); ServiceProviderProxy.ServerInit(winServer, server.ServerId); TaskManager.Write(winServer.ExecuteSystemCommand(execPath, execParams)); }
public override void DoWork() { // Input parameters: // - FILE_PATH // - FTP_SERVER // - FTP_USERNAME // - FTP_PASSWORD // - FTP_FOLDER BackgroundTask topTask = TaskManager.TopTask; // get input parameters string filePath = (string)topTask.GetParamValue("FILE_PATH"); string ftpServer = (string)topTask.GetParamValue("FTP_SERVER"); string ftpUsername = (string)topTask.GetParamValue("FTP_USERNAME"); string ftpPassword = (string)topTask.GetParamValue("FTP_PASSWORD"); string ftpFolder = (string)topTask.GetParamValue("FTP_FOLDER"); // check input parameters if (String.IsNullOrEmpty(filePath)) { TaskManager.WriteWarning("Specify 'File' task parameter"); return; } if (String.IsNullOrEmpty(ftpServer)) { TaskManager.WriteWarning("Specify 'FTP Server' task parameter"); return; } // substitute parameters DateTime d = DateTime.Now; string date = d.ToString("yyyyMMdd"); string time = d.ToString("HHmm"); filePath = Utils.ReplaceStringVariable(filePath, "date", date); filePath = Utils.ReplaceStringVariable(filePath, "time", time); // build FTP command file StringBuilder sb = new StringBuilder(); StringWriter writer = new StringWriter(sb); // FTP server writer.WriteLine("open " + ftpServer); // check if anonymous mode if (String.IsNullOrEmpty(ftpUsername)) { ftpUsername = "******"; ftpPassword = "******"; } // FTP username/password writer.WriteLine(ftpUsername); writer.WriteLine(ftpPassword); // check if we need to change remote folder if (!String.IsNullOrEmpty(ftpFolder)) { writer.WriteLine("cd " + ftpFolder.Replace("\\", "/")); } // file to send writer.WriteLine("binary"); writer.WriteLine("put " + FilesController.GetFullPackagePath(topTask.PackageId, filePath)); // bye writer.WriteLine("bye"); string cmdBatch = sb.ToString(); // create temp file in user space string cmdPath = Utils.GetRandomString(10) + ".txt"; string fullCmdPath = FilesController.GetFullPackagePath(topTask.PackageId, cmdPath); // upload batch FilesController.UpdateFileBinaryContent(topTask.PackageId, cmdPath, Encoding.UTF8.GetBytes(cmdBatch)); // execute system command // load OS service int serviceId = PackageController.GetPackageServiceId(topTask.PackageId, ResourceGroups.Os); // load service ServiceInfo service = ServerController.GetServiceInfo(serviceId); if (service == null) return; WindowsServer winServer = new WindowsServer(); ServiceProviderProxy.ServerInit(winServer, service.ServerId); TaskManager.Write(winServer.ExecuteSystemCommand("ftp.exe", "-s:" + fullCmdPath)); // delete batch file FilesController.DeleteFiles(topTask.PackageId, new string[] { cmdPath }); }
public List<DnsRecordInfo> GetDomainDnsRecords(WindowsServer winServer, string domain, string dnsServer, DnsRecordType recordType, int pause) { Thread.Sleep(pause); //nslookup -type=mx google.com 195.46.39.39 var command = "nslookup"; var args = string.Format("-type={0} {1} {2}", recordType, domain, dnsServer); // execute system command var raw = string.Empty; int triesCount = 0; do { raw = winServer.ExecuteSystemCommand(command, args); } while (raw.ToLowerInvariant().Contains(DnsTimeOutMessage) && ++triesCount < DnsTimeOutRetryCount); //timeout check if (raw.ToLowerInvariant().Contains(DnsTimeOutMessage)) { return null; } var records = ParseNsLookupResult(raw, dnsServer, recordType); return records.ToList(); }