public string Send(string computerName, int portNumber, ScriptExecutionCommand command, string encriptionKey, string encriptionSalt) { var endpoint = "tcp://{0}:{1}".FormatString(computerName, portNumber); var json = JsonConvert.SerializeObject(command); var encryptedJson = EncryptionHelper.Encrypt(json, encriptionKey, encriptionSalt); using (var context = NetMQContext.Create()) { using (var socket = context.CreateRequestSocket()) { Log.Info("Connecting to {0} on port {1}...", computerName, portNumber); socket.Connect(endpoint); Log.Info("Sending command..."); socket.Send(encryptedJson, Encoding.UTF8); Log.Info("Waiting for results..."); var encryptedReply = socket.ReceiveString(Encoding.UTF8); Log.Success("Results received"); var reply = EncryptionHelper.Decrypt(encryptedReply, encriptionKey, encriptionSalt); return(reply); } } }
private string ExecuteScriptRemotely(string scriptBody, ScriptType scriptType, string computerName, int portNumber, string targetKey) { var command = new ScriptExecutionCommand { ScriptBody = scriptBody, ScriptType = scriptType.GetName(), CommandTime = DateTime.UtcNow }; var encriptionKey = targetKey; var encriptionSalt = DomainContext.ServerKey; return(_targetCommandSender.Send(computerName, portNumber, command, encriptionKey, encriptionSalt)); }