private void ChainStart(DLAgent agent) { string pipeName = Guid.NewGuid().ToString().Replace("-", string.Empty); PipeSecurity ps = new PipeSecurity(); ps.AddAccessRule(new PipeAccessRule("Users", PipeAccessRights.FullControl, System.Security.AccessControl.AccessControlType.Allow)); aPipeServer = new NamedPipeServerStream(pipeName, PipeDirection.InOut, 10, PipeTransmissionMode.Message, PipeOptions.WriteThrough, 1024, 1024, ps); string command = "\"" + Application.ExecutablePath + "\"" + ' ' + "breaked" + ' ' + pipeName; ProcessUtility.CreateProcessBreakFromJob(command); DLTask task = new DLTask { Request = this, Agent = agent }; string sTask = JsonConvert.SerializeObject(task); aPipeServer.WaitForConnection(); BinaryWriter bw = new BinaryWriter(aPipeServer); bw.Write(sTask); if (aPipeServer != null) { aPipeServer.WaitForPipeDrain(); } }
public DLReply Ask() { Filename = System.Net.WebUtility.UrlDecode(Filename); AskDL askDL = new AskDL(this); askDL.ShowDialog(); if (askDL.DialogResult == DialogResult.OK) { switch (askDL.RetAgent) { case DLAgent.Default: break; case DLAgent.Thunder: case DLAgent.EagleGet: { string pipeName = Guid.NewGuid().ToString().Replace("-", string.Empty); PipeSecurity ps = new PipeSecurity(); ps.AddAccessRule(new PipeAccessRule("Users", PipeAccessRights.FullControl, System.Security.AccessControl.AccessControlType.Allow)); aPipeServer = new NamedPipeServerStream(pipeName, PipeDirection.InOut, 10, PipeTransmissionMode.Message, PipeOptions.WriteThrough, 1024, 1024, ps); string command = "\"" + Application.ExecutablePath + "\"" + ' ' + "breaked" + ' ' + pipeName; ProcessUtility.CreateProcessBreakFromJob(command); DLTask task = new DLTask { Request = this, Agent = askDL.RetAgent }; string sTask = JsonConvert.SerializeObject(task); aPipeServer.WaitForConnection(); BinaryWriter bw = new BinaryWriter(aPipeServer); bw.Write(sTask); } break; default: break; } } if (aPipeServer != null) { aPipeServer.WaitForPipeDrain(); } return(new DLReply(askDL.RetAgent)); }
static void Main(string[] args) { if (args.Length > 0) { switch (args[0].ToLower()) { case "breaked": { NamedPipeClientStream aPipeClient = new NamedPipeClientStream(args[1]); BinaryReader br = new BinaryReader(aPipeClient); aPipeClient.Connect(5000); string sTask = br.ReadString(); aPipeClient.Close(); DLTask dt = JsonConvert.DeserializeObject <DLTask>(sTask); dt.Perform(); break; } default: { Web_ext_Message msg = GetMsg(); DLRequest req = msg.Dispatch(); DLReply reply = req.Process(); SendMsg(reply); break; } } } else { Application.EnableVisualStyles(); DBG dbg = new DBG(); DLRequest r = new DLRequest(); r.RequestType = "Download"; r.ContentLength = "1G"; dbg.ShowDialog(); CheckInstallation(); } }
static void Main(string[] args) { Application.EnableVisualStyles(); if (args.Length > 0) { switch(args[0].ToLower()) { case "breaked": { NamedPipeClientStream aPipeClient = new NamedPipeClientStream(args[1]); BinaryReader br = new BinaryReader(aPipeClient); aPipeClient.Connect(5000); string sTask = br.ReadString(); aPipeClient.Close(); DLTask dt = JsonConvert.DeserializeObject<DLTask>(sTask); dt.Perform(); break; } case "fix": { string thunderexe = args[1]; string thunderagentdll = args[2]; string thunderagent64bit = thunderagentdll.ToLower().Replace("thunderagent.dll", "thunderagent64.dll"); Stack<string> tpaths = new Stack<string>(thunderexe.Split('\\')); tpaths.Pop(); if (tpaths.Peek().ToLower() == "program") tpaths.Pop(); string thunderroot = string.Join("\\", tpaths.Reverse())+"\\"; string version = FileVersionInfo.GetVersionInfo(thunderexe).FileVersion.Replace(',','.'); if (Environment.Is64BitOperatingSystem && Environment.Is64BitProcess) { Registry.SetValue(@"HKEY_LOCAL_MACHINE\Software\Wow6432Node\Thunder Network\ThunderOem\thunder_backwnd", "dir", thunderroot, RegistryValueKind.String); Registry.SetValue(@"HKEY_LOCAL_MACHINE\Software\Wow6432Node\Thunder Network\ThunderOem\thunder_backwnd", "Path", thunderexe, RegistryValueKind.String); Registry.SetValue(@"HKEY_LOCAL_MACHINE\Software\Wow6432Node\Thunder Network\ThunderOem\thunder_backwnd", "instdir", thunderroot, RegistryValueKind.String); Registry.SetValue(@"HKEY_LOCAL_MACHINE\Software\Wow6432Node\Thunder Network\ThunderOem\thunder_backwnd", "Version", version, RegistryValueKind.String); } else { Registry.SetValue(@"HKEY_LOCAL_MACHINE\Software\Thunder Network\ThunderOem\thunder_backwnd", "dir", thunderroot, RegistryValueKind.String); Registry.SetValue(@"HKEY_LOCAL_MACHINE\Software\Thunder Network\ThunderOem\thunder_backwnd", "Path", thunderexe, RegistryValueKind.String); Registry.SetValue(@"HKEY_LOCAL_MACHINE\Software\Thunder Network\ThunderOem\thunder_backwnd", "instdir", thunderroot, RegistryValueKind.String); Registry.SetValue(@"HKEY_LOCAL_MACHINE\Software\Thunder Network\ThunderOem\thunder_backwnd", "Version", version, RegistryValueKind.String); } Process.Start("regsvr32", "/s \"" + thunderagentdll + "\""); if (Environment.Is64BitOperatingSystem && File.Exists(thunderagent64bit)) { Process.Start("regsvr32", "/s \"" + thunderagent64bit + "\""); } else { MessageBox.Show((IWin32Window)null,Strings.This_copy_of_Thunder_supports_32_bit_only); } break; } default: { Web_ext_Message msg = GetMsg(); DLRequest req = msg.Dispatch(); DLReply reply = req.Process(); SendMsg(reply); break; } } } else { DMThunder dM = new DMThunder { Url = "http://baidu.com/index.html", PostData = new PostInfo() }; dM.Fire(); WelcomeDialog dialog = new WelcomeDialog(); dialog.ShowDialog(); } }