make it sortof work
This commit is contained in:
@@ -108,7 +108,7 @@ namespace OpenRA.Launcher
|
|||||||
string url = args[0];
|
string url = args[0];
|
||||||
string dest = args[1];
|
string dest = args[1];
|
||||||
string pipename = UtilityProgram.GetPipeName();
|
string pipename = UtilityProgram.GetPipeName();
|
||||||
var p = UtilityProgram.Call("--download-url", pipename, url, dest);
|
var p = UtilityProgram.Call("--download-url", pipename, null, url, dest);
|
||||||
Regex r = new Regex(@"(\d{1,3})% (\d+)/(\d+) bytes");
|
Regex r = new Regex(@"(\d{1,3})% (\d+)/(\d+) bytes");
|
||||||
|
|
||||||
NamedPipeClientStream pipe = new NamedPipeClientStream(".", pipename, PipeDirection.In);
|
NamedPipeClientStream pipe = new NamedPipeClientStream(".", pipename, PipeDirection.In);
|
||||||
|
|||||||
@@ -169,13 +169,22 @@ namespace OpenRA.Launcher
|
|||||||
public void httpRequest(string url, string callbackName)
|
public void httpRequest(string url, string callbackName)
|
||||||
{
|
{
|
||||||
string pipename = UtilityProgram.GetPipeName();
|
string pipename = UtilityProgram.GetPipeName();
|
||||||
var p = UtilityProgram.Call("--download-url", pipename, url);
|
|
||||||
var pipe = new NamedPipeClientStream(".", pipename, PipeDirection.In);
|
var pipe = new NamedPipeClientStream(".", pipename, PipeDirection.In);
|
||||||
p.Exited += (_, e) =>
|
|
||||||
|
var p = UtilityProgram.Call("--download-url", pipename,
|
||||||
|
(_, e) =>
|
||||||
{
|
{
|
||||||
|
|
||||||
using (var reader = new StreamReader(pipe))
|
using (var reader = new StreamReader(pipe))
|
||||||
document.InvokeScript(callbackName, new object[] { reader.ReadToEnd() });
|
{
|
||||||
};
|
var data = reader.ReadToEnd();
|
||||||
|
/* debug */
|
||||||
|
MessageBox.Show(
|
||||||
|
string.Format("Finished HTTP Request -- {0},{1} => {2}",
|
||||||
|
url, callbackName, data));
|
||||||
|
document.InvokeScript(callbackName, new object[] { data });
|
||||||
|
}
|
||||||
|
}, url);
|
||||||
|
|
||||||
pipe.Connect();
|
pipe.Connect();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -71,13 +71,19 @@ namespace OpenRA.Launcher
|
|||||||
return arguments.ToString();
|
return arguments.ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Process Call(string command, string pipename, params string[] args)
|
public static Process Call(string command, string pipename, EventHandler onExit, params string[] args)
|
||||||
{
|
{
|
||||||
Process p = new Process();
|
Process p = new Process();
|
||||||
p.StartInfo.FileName = "OpenRA.Utility.exe";
|
p.StartInfo.FileName = "OpenRA.Utility.exe";
|
||||||
p.StartInfo.Arguments = BuildArgs(command, args) + " --pipe=" + pipename;
|
p.StartInfo.Arguments = BuildArgs(command, args) + " --pipe=" + pipename;
|
||||||
p.StartInfo.UseShellExecute = false;
|
p.StartInfo.UseShellExecute = false;
|
||||||
p.StartInfo.CreateNoWindow = true;
|
p.StartInfo.CreateNoWindow = true;
|
||||||
|
|
||||||
|
if (onExit != null)
|
||||||
|
{
|
||||||
|
p.EnableRaisingEvents = true;
|
||||||
|
p.Exited += onExit;
|
||||||
|
}
|
||||||
|
|
||||||
p.Start();
|
p.Start();
|
||||||
|
|
||||||
@@ -87,7 +93,7 @@ namespace OpenRA.Launcher
|
|||||||
public static string CallSimpleResponse(string command, params string[] args)
|
public static string CallSimpleResponse(string command, params string[] args)
|
||||||
{
|
{
|
||||||
string pipename = GetPipeName();
|
string pipename = GetPipeName();
|
||||||
Call(command, pipename, args);
|
Call(command, pipename, null, args);
|
||||||
string responseString;
|
string responseString;
|
||||||
NamedPipeClientStream pipe = new NamedPipeClientStream(".", pipename, PipeDirection.In);
|
NamedPipeClientStream pipe = new NamedPipeClientStream(".", pipename, PipeDirection.In);
|
||||||
pipe.Connect();
|
pipe.Connect();
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ using System.Collections.Generic;
|
|||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Security.Principal;
|
using System.Security.Principal;
|
||||||
using System.IO.Pipes;
|
using System.IO.Pipes;
|
||||||
|
using System.Security.AccessControl;
|
||||||
|
|
||||||
namespace OpenRA.Utility
|
namespace OpenRA.Utility
|
||||||
{
|
{
|
||||||
@@ -56,11 +57,11 @@ namespace OpenRA.Utility
|
|||||||
if (principal.IsInRole(WindowsBuiltInRole.Administrator))
|
if (principal.IsInRole(WindowsBuiltInRole.Administrator))
|
||||||
{
|
{
|
||||||
var ps = new PipeSecurity();
|
var ps = new PipeSecurity();
|
||||||
ps.AddAccessRule(new PipeAccessRule("EVERYONE", (PipeAccessRights)2032031, System.Security.AccessControl.AccessControlType.Allow));
|
ps.AddAccessRule(new PipeAccessRule("EVERYONE", (PipeAccessRights)2032031, AccessControlType.Allow));
|
||||||
pipe = new NamedPipeServerStream(pipename, PipeDirection.Out, 1, PipeTransmissionMode.Byte, PipeOptions.None, 1024, 1024, ps);
|
pipe = new NamedPipeServerStream(pipename, PipeDirection.Out, 1, PipeTransmissionMode.Byte, PipeOptions.None, 1024*1024, 1024*1024, ps);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
pipe = new NamedPipeServerStream(pipename, PipeDirection.Out);
|
pipe = new NamedPipeServerStream(pipename, PipeDirection.Out, 1, PipeTransmissionMode.Byte, PipeOptions.None, 1024*1024,1024*1024,null);
|
||||||
|
|
||||||
pipe.WaitForConnection();
|
pipe.WaitForConnection();
|
||||||
Console.SetOut(new StreamWriter(pipe) { AutoFlush = true });
|
Console.SetOut(new StreamWriter(pipe) { AutoFlush = true });
|
||||||
|
|||||||
Reference in New Issue
Block a user