示例#1
0
        static void Main(string[] args)
        {
            NetFirewall nfw = new NetFirewall();

            ColorConsole cc = new ColorConsole();

            try
            {
                if (nfw.IsFirewallEnabled)
                {
                    nfw.AuthorizeApplication("NetworkMonitor", Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "NetworkMonitor.App.exe"));
                }
                else
                {
                    cc.TextColor(Color.Blue);
                    Console.WriteLine("未检测到Windows防火墙在运行。如果安装有其它的防火墙,请将该程序加入例外列表中");
                }

                cc.TextColor(Color.Green);
                Console.WriteLine("输入要监控的IP地址:");

                string bindingip = Console.ReadLine();

                string[] bindingAddress;

                if (bindingip.Contains(":"))
                {
                    bindingAddress = bindingip.Split(new char[] { ':' });
                }
                else
                {
                    bindingAddress = new string[] { bindingip };
                }

                NetProvider m_provider;
                RawSocket m_socket;

                m_provider = new NetProvider(bindingAddress[0]);

                if (1 == bindingAddress.Length)
                {
                    m_socket = new RawSocket(AddressFamily.InterNetwork, m_provider);
                }
                else
                {
                    m_socket = new RawSocket(AddressFamily.InterNetwork, m_provider, Convert.ToInt32(bindingAddress[1]));
                }

                m_socket.Start(bindingAddress[0]);
            }
            catch (Exception eX)
            {
                Console.WriteLine(eX.Message);
            }

            Console.ReadLine();
        }
示例#2
0
 protected override void PostRestart(Exception reason)
 {
     ColorConsole.WriteLineBlue("Cordinator{0}'s PostRestart called because: {1} ", Self.Path.Name, reason.Message);
     base.PostRestart(reason);
 }
示例#3
0
 protected override void PreRestart(Exception reason, object message)
 {
     ColorConsole.WriteLineWhite("Cordinator{0}'s PreRestart called because: {1} ", Self.Path.Name, reason.Message);
     base.PreRestart(reason, message);
 }
示例#4
0
 protected override void PostRestart(Exception reason)
 {
     ColorConsole.WriteLineYellow($"{ ActorClassName } PostRestart because: { reason }");
     base.PostRestart(reason);
 }
示例#5
0
 protected override void PostStop()
 {
     ColorConsole.WriteLineYellow($"{ ActorClassName } PostStop");
 }
示例#6
0
 private static void ShellOnWritePrompt(object sender, EventArgs eventArgs)
 {
     ColorConsole.Write("[ ".Green(), DateTime.Now.ToLongTimeString(), " ]-> ".Green());
 }
示例#7
0
 public void Demo()
 {
     ColorConsole.WriteInfo("Inside method DEMO. Thread ID : " + Thread.CurrentThread.ManagedThreadId);
     Thread.Sleep(1000);
     Console.WriteLine("Thread execution completed.");
 }
示例#8
0
 protected override void PostStop()
 {
     ColorConsole.WriteWhite("PlaybackStatisticsActor PostStop");
 }
 protected override void PreRestart(Exception reason, object message)
 {
     ColorConsole.WriteLineCyan("UserCoordinatorActor PreRestart because: " + reason);
 }
 protected override void PostStop()
 {
     ColorConsole.WriteLineCyan("UserCoordinatorActor PostStop");
 }
 protected override void PreStart()
 {
     ColorConsole.WriteLineCyan("UserCoordinatorActor PreStart");
 }
示例#12
0
 public void TestGetColor(ColorStyle style, ConsoleColor expected)
 {
     Assert.That(ColorConsole.GetColor(style), Is.EqualTo(expected));
 }
 protected override void PostRestart(Exception reason)
 {
     ColorConsole.WriteColorLine("PlaybackStatisticsActor PostRestart because: " + reason, ConsoleColor.White);
     base.PostRestart(reason);
 }
 protected override void PreRestart(Exception reason, object message)
 {
     ColorConsole.WriteColorLine("PlaybackStatisticsActor PreRestart because: " + reason, ConsoleColor.White);
     base.PreRestart(reason, message);
 }
        protected override void PostRestart(Exception reason)
        {
            ColorConsole.WriteLineCyan("UserCoordinatorActor PostRestart because: " + reason);

            base.PostRestart(reason);
        }
 protected override void PostStop()
 {
     ColorConsole.WriteColorLine("PlaybackStatisticsActor PostStop", ConsoleColor.White);
 }
示例#17
0
 private void HandleLogEntryMessage(LogEntryMessage msg)
 {
     File.AppendAllText(_logFileName, $"{ msg }\r\n");
     ColorConsole.WriteLineYellow($"Message logged for LoggerActor '{ msg.AppId }'.");
 }
示例#18
0
        protected override void PostRestart(Exception reason)
        {
            ColorConsole.WriteWhite($"PlaybackStatisticsActor PostRestart because: {reason.Message}");

            base.PostRestart(reason);
        }
示例#19
0
 protected override void PreStart()
 {
     ColorConsole.WriteLineYellow($"{ ActorClassName }: Log file = { _logFileName }.");
 }
示例#20
0
 private static void ShellOnShellCommandNotFound(object sender, CommandNotFoundEventArgs e)
 {
     ColorConsole.WriteLine($"Command not found: ".Red(), e.Input.White());
 }
 protected override void PreRestart(Exception reason, object message)
 {
     ColorConsole.WriteLineWhite("WorkerActor for Coordinator {0} called PreReStart because: {1}", Context.Parent.Path.Name, reason.Message);
     Self.Tell(_myJob);
     base.PreRestart(reason, message);
 }
示例#22
0
 protected override void PreStart()
 {
     ColorConsole.WriteLineYellow($"{ ActorClassName } PreStart on { Environment.MachineName }");
 }
 protected override void PostRestart(Exception reason)
 {
     ColorConsole.WriteLineWhite("WorkerActor for Coordinator {0} called PostRestart because: {1}", Context.Parent.Path.Name, reason.Message);
     base.PostRestart(reason);
 }
示例#24
0
 protected override void PreRestart(Exception reason, object message)
 {
     ColorConsole.WriteLineYellow($"{ ActorClassName } PreRestart because: { reason }");
     base.PreRestart(reason, message);
 }
 protected override void PostStop()
 {
     ColorConsole.WriteLineRed("WorkerActor for Coordinator {0} stopped.", Context.Parent.Path.Name);
 }
        public Task Run(CancellationToken cancellationToken)
        {
            const string MusicOnHold = "local_stream://moh";

            const string AgentEndPoint = "user/1003";

            const string RingTone = "tone_stream://%(400,200,400,450);%(400,2000,400,450);loops=-1"; // uk ring

            const string DialTone = "tone_stream://%(10000,0,350,440)";

            const string RecordingPath = "/var/tmp/";

            listener = new OutboundListener(8084);

            listener.Channels.Subscribe(
                async channel =>
            {
                try
                {
                    channel.BridgedChannels.Subscribe(
                        async bridgedChannel =>
                    {
                        ColorConsole.WriteLine("New Bridged Channel  [{0}]".Fmt(bridgedChannel.UUID).DarkGreen());

                        bridgedChannel.HangupCallBack =
                            (e) =>
                            ColorConsole.WriteLine(
                                "Hangup Detected on B-Leg {0} {1}".Fmt(
                                    e.Headers[HeaderNames.CallerUniqueId],
                                    e.Headers[HeaderNames.HangupCause]).Red());

                        ColorConsole.WriteLine("Enabling feature codes on the B-Leg: ".DarkGreen());
                        ColorConsole.WriteLine("Press ".DarkGreen(), "#1".Yellow(), " to Play to both Legs".DarkGreen());
                        ColorConsole.WriteLine("Press ".DarkGreen(), "#2".Yellow(), " to Play to A Leg".DarkGreen());
                        ColorConsole.WriteLine("Press ".DarkGreen(), "#3".Yellow(), " to Play to B Leg".DarkGreen());
                        ColorConsole.WriteLine("Press ".DarkGreen(), "#7".Yellow(), " to Start Recording".DarkGreen());
                        ColorConsole.WriteLine("Press ".DarkGreen(), "#8".Yellow(), " to Stop Recording".DarkGreen());
                        ColorConsole.WriteLine("Press ".DarkGreen(), "#4".Yellow(), " to Pause Recording".DarkGreen());
                        ColorConsole.WriteLine("Press ".DarkGreen(), "#5".Yellow(), " to Resume Recording".DarkGreen());
                        ColorConsole.WriteLine("Press ".DarkGreen(), "#9".Yellow(), " for attended transfer".DarkGreen());

                        await channel.SetChannelVariable("RECORD_STEREO", "true");
                        var recordingPath = RecordingPath + channel.UUID + ".wav";

                        bridgedChannel.FeatureCodes("#").Subscribe(
                            async x =>
                        {
                            try
                            {
                                ColorConsole.WriteLine("Detected Feature Code: ".DarkYellow(), x);
                                switch (x)
                                {
                                case "#1":
                                    await channel.Play("ivr/ivr-welcome_to_freeswitch.wav", Leg.Both);
                                    break;

                                case "#2":
                                    await channel.Play("ivr/ivr-welcome_to_freeswitch.wav", Leg.ALeg);
                                    break;

                                case "#3":
                                    await channel.Play("ivr/ivr-welcome_to_freeswitch.wav", Leg.BLeg);
                                    break;

                                case "#4":
                                    ColorConsole.WriteLine("Mask recording".Yellow());
                                    await channel.MaskRecording();
                                    await channel.Play("ivr/ivr-recording_paused.wav", Leg.BLeg);
                                    break;

                                case "#5":
                                    ColorConsole.WriteLine("Unmask recording".Yellow());
                                    await channel.UnmaskRecording();
                                    await channel.Play("ivr/ivr-begin_recording.wav", Leg.BLeg);
                                    break;

                                case "#8":
                                    ColorConsole.WriteLine("Stop recording".Yellow());
                                    await channel.StopRecording();
                                    await channel.Play("ivr/ivr-recording_stopped.wav", Leg.Both);
                                    break;

                                case "#7":
                                    ColorConsole.WriteLine("Start recording".Yellow());
                                    await channel.StartRecording(recordingPath);
                                    await channel.Play("ivr/ivr-begin_recording.wav", Leg.Both);
                                    break;

                                case "#9":
                                    ColorConsole.WriteLine("Attended x-fer".Yellow());
                                    await
                                    Task.WhenAll(
                                        channel.Play("ivr/ivr-call_being_transferred.wav"),
                                        bridgedChannel.Play("misc/transfer1.wav"));

                                    var holdMusic = await channel.PlayUntilCancelled(MusicOnHold);

                                    var digits =
                                        await
                                        bridgedChannel.Read(
                                            new ReadOptions
                                    {
                                        MinDigits   = 3,
                                        MaxDigits   = 4,
                                        Prompt      = DialTone,
                                        TimeoutMs   = 30000,
                                        Terminators = "#"
                                    });

                                    if (digits.Result != ReadResultStatus.Success || digits.Digits.Length != 4)
                                    {
                                        holdMusic.Dispose();
                                    }
                                    else
                                    {
                                        await bridgedChannel.SetChannelVariable("recording_follow_attxfer", "true");
                                        await bridgedChannel.SetChannelVariable("origination_cancel_key", "#");
                                        await bridgedChannel.SetChannelVariable("transfer_ringback", RingTone);

                                        var xfer = await bridgedChannel.AttendedTransfer("user/{0}".Fmt(digits));
                                        holdMusic.Dispose();

                                        ColorConsole.WriteLine(
                                            "Xfer ".Yellow(),
                                            xfer.Status.ToString().DarkYellow(),
                                            " ",
                                            xfer.HangupCause.GetValueOrDefault().ToString());


                                        if (xfer.Status != AttendedTransferResultStatus.Failed)
                                        {
                                            await channel.Play("misc/transfer2.wav", Leg.Both);
                                        }
                                        else
                                        {
                                            if (xfer.HangupCause == HangupCause.CallRejected)
                                            {
                                                await bridgedChannel.Play("ivr/ivr-call_rejected.wav");
                                            }
                                            else if (xfer.HangupCause == HangupCause.NoUserResponse ||
                                                     xfer.HangupCause == HangupCause.NoAnswer)
                                            {
                                                await bridgedChannel.Play("ivr/ivr-no_user_response.wav");
                                            }
                                            else if (xfer.HangupCause == HangupCause.UserBusy)
                                            {
                                                await bridgedChannel.Play("ivr/ivr-user_busy.wav");
                                            }
                                            else
                                            {
                                                await
                                                bridgedChannel.Play(
                                                    "ivr/ivr-call_cannot_be_completed_as_dialed.wav");
                                            }
                                        }
                                    }

                                    break;
                                }
                            }
                            catch (OperationCanceledException ex)
                            {
                                ColorConsole.WriteLine("TaskCancelled - shutting down\r\n{0}".Fmt(ex.ToString()).OnRed());
                                ColorConsole.WriteLine("Channel {0} is {1}".Fmt(channel.UUID, channel.Answered).OnRed());
                            }
                        });
                    });

                    channel.HangupCallBack = (e) =>
                    {
                        ColorConsole.WriteLine("Hangup Detected on A-Leg {0} {1}".Fmt(e.Headers[HeaderNames.CallerUniqueId], e.Headers[HeaderNames.HangupCause]).Red());
                        ColorConsole.WriteLine("Aleg bridge {0}".Fmt(channel.GetVariable("last_bridge_hangup_cause")).OnRed());
                    };

                    await channel.Answer();

                    var queueHoldMusic = await channel.PlayUntilCancelled(MusicOnHold);

                    await Task.Delay(5000);

                    await channel.Play(new[]
                    {
                        "ivr/ivr-you_are_number.wav",
                        123456.ToFileString(),
                        "ivr/ivr-in_line.wav"
                    });

                    await Task.Delay(5000);

                    queueHoldMusic.Dispose();

                    var bridgeOptions = new BridgeOptions()
                    {
                        UUID              = Guid.NewGuid().ToString(),
                        IgnoreEarlyMedia  = true,
                        RingBack          = RingTone,
                        ContinueOnFail    = true,
                        HangupAfterBridge = true,
                        TimeoutSeconds    = 10,
                        CallerIdName      = channel.GetVariable("effective_caller_id_name"),
                        CallerIdNumber    =
                            channel.GetVariable("effective_caller_id_number"),
                    };


                    await channel.SetChannelVariable(
                        "transfer_ringback",
                        "tone_stream://%(400,200,400,450);%(400,2000,400,450);loops=-1");


                    await channel.BridgeTo(AgentEndPoint, bridgeOptions, (e) => ColorConsole.WriteLine("Bridge Progress Ringing...".DarkGreen()));

                    if (!channel.IsBridged)
                    {
                        ColorConsole.WriteLine("Bridge Failed - {0}".Fmt(channel.GetVariable("last_bridge_hangup_cause")).Red());
                        await channel.Play("ivr/ivr-call_rejected.wav");
                        await channel.Hangup(HangupCause.NormalTemporaryFailure);
                    }
                }
                catch (OperationCanceledException ex)
                {
                    ColorConsole.WriteLine("TaskCancelled - shutting down\r\n{0}".Fmt(ex.ToString()).OnRed());
                    ColorConsole.WriteLine("Channel {0} is {1}".Fmt(channel.UUID, channel.Answered).OnRed());
                }
            });

            listener.Start();

            Console.WriteLine("Listener started. Press [Enter] to stop");
            Console.ReadLine();

            return(Task.FromResult(0));
        }
示例#27
0
 public UserActor()
 {
     Console.WriteLine("Creating a UserActor");
     ColorConsole.WriteLineCyan("Setting initial behavior to stopped");
     _behavior = new Behavior(Stopped);
 }
示例#28
0
 protected override void PostStop()
 {
     ColorConsole.WriteLineRed("Cordinator{0}'s stopped.", Self.Path.Name);
 }
示例#29
0
        private void CompileCU(bool console, string resourceFile, CodeCompileUnit cu)
        {
            CSharpCodeProvider p       = new CSharpCodeProvider();
            ICodeCompiler      cc      = p.CreateCompiler();
            CompilerParameters options = new CompilerParameters();

            options.ReferencedAssemblies.Add(genData.ZipDllName);
            // required
            options.ReferencedAssemblies.Add("System.dll");
            if (genData.IsService)
            {
                //options.ReferencedAssemblies.Add("System.Configuration.dll");
                options.ReferencedAssemblies.Add("System.Configuration.Install.dll");
                options.ReferencedAssemblies.Add("System.ServiceProcess.dll");
            }
            if (!console)
            {
                options.ReferencedAssemblies.Add("System.Windows.Forms.dll");
            }
            options.GenerateExecutable = true;
            options.OutputAssembly     = OutDirMan.MakeOutFileName(genData.ExeFileName);
            options.CompilerOptions   += "/res:\"" + resourceFile + "\"";
            if (!console)
            {
                options.CompilerOptions += " /target:winexe";
            }
            if (genData.XPlatform != null)
            {
                options.CompilerOptions += " /platform:" + genData.XPlatform;                 //"x86";
            }
            if (genData.IconFile != null)
            {
                options.CompilerOptions += MakeIconArg(true);
            }
            if (genData.LicenseResourceFile != null)
            {
                options.CompilerOptions += MakeLicArg(true);
            }
            if ((genData.OtherCompOptions != null) && (genData.OtherCompOptions.Length > 0))
            {
                options.CompilerOptions += " " + genData.OtherCompOptions;
            }
            CompilerResults cr = cc.CompileAssemblyFromDom(options, cu);

            if (cr.Errors.Count > 0)
            {
                StringBuilder sb = new StringBuilder();
                Logger.Log("\r\n# NetzStarter compilation errors:\r\n");
                foreach (CompilerError err in cr.Errors)
                {
                    string t = err.ErrorNumber + " " + err.ErrorText + " " + err.FileName + " L:" + err.Line + " C:" + err.Column;
                    sb.Append(t).Append(Environment.NewLine);
                    Logger.Log("  " + t);
                }
                sb.Append(Environment.NewLine);
                sb.Append(((CodeSnippetCompileUnit)cu).Value);
                if (sb.Length > 0)
                {
                    try
                    {
                        string errFile = "error.txt";
                        sb.Append(Environment.NewLine).Append(".NETZ Version: ").Append(System.Reflection.Assembly.GetExecutingAssembly().FullName);
                        sb.Append(Environment.NewLine).Append(".NET  Version: ").Append(Environment.Version.ToString());
                        sb.Append(Environment.NewLine).Append(netz.InputParser.GetInnerTemplatesFingerPrint(this.genData.CompressProviderDLL));
                        sb.Append(Environment.NewLine).Append(Environment.StackTrace);
                        sb.Append(Environment.NewLine).Append(DateTime.Now.ToString());
                        sb.Append(Environment.NewLine);

                        Utils.WriteTextFile(errFile, sb.ToString());
                        Logger.Log(string.Empty);
                        errFile = OutDirMan.MakeOutFileName("error.txt");
                        ColorConsole c = null;
                        try
                        {
                            c = new ColorConsole();
                            c.SetColor(ColorConsole.FOREGROUND_RED | ColorConsole.FOREGROUND_INTENSITY);
                        }
                        catch {}

                        Logger.Log("! Please email the error file: " + errFile);
                        Logger.Log("! To: " + Help.EMAIL);



                        Logger.Log(string.Empty);
                        Logger.Log("! To help locate better the errors add the -v option to");
                        Logger.Log("! your current netz command-line and email also the screen output!");
                        Logger.Log("! No support is provided for custom startup and compress templates!");
                        Logger.Log("! Check http://madebits.com/netz/ for more help on how to report a bug!");

                        try
                        {
                            if (c != null)
                            {
                                c.Reset();
                            }
                        }
                        catch {}
                    }
                    catch {}
                }
            }
        }
		private void CompileCU(bool console, string resourceFile, CodeCompileUnit cu)
		{
			CSharpCodeProvider p = new CSharpCodeProvider();
			ICodeCompiler cc = p.CreateCompiler();
			CompilerParameters options = new CompilerParameters();
			options.ReferencedAssemblies.Add(genData.ZipDllName);
			// required
			options.ReferencedAssemblies.Add("System.dll");
			if(genData.IsService)
			{
				//options.ReferencedAssemblies.Add("System.Configuration.dll");
				options.ReferencedAssemblies.Add("System.Configuration.Install.dll");
				options.ReferencedAssemblies.Add("System.ServiceProcess.dll");
			}
			if(!console)
			{
				options.ReferencedAssemblies.Add("System.Windows.Forms.dll");
			}
			options.GenerateExecutable = true;
			options.OutputAssembly = OutDirMan.MakeOutFileName(genData.ExeFileName);
			options.CompilerOptions += "/res:\"" + resourceFile + "\"";
			if(!console)
			{
				options.CompilerOptions += " /target:winexe";
			}
			if(genData.XPlatform !=  null)
			{
				options.CompilerOptions += " /platform:" + genData.XPlatform; //"x86";
			}
			if(genData.IconFile != null)
			{
				options.CompilerOptions += MakeIconArg(true);
			}
			if(genData.LicenseResourceFile != null)
			{
				options.CompilerOptions += MakeLicArg(true);
			}
			if((genData.OtherCompOptions != null) && (genData.OtherCompOptions.Length > 0))
			{
				options.CompilerOptions += " " +  genData.OtherCompOptions;
			}
			CompilerResults cr = cc.CompileAssemblyFromDom(options, cu);
			if(cr.Errors.Count > 0)
			{
				StringBuilder sb = new StringBuilder();
				Logger.Log("\r\n# NetzStarter compilation errors:\r\n");
				foreach(CompilerError err in cr.Errors)
				{
					string t = err.ErrorNumber + " " + err.ErrorText + " " + err.FileName + " L:" + err.Line + " C:" + err.Column;
					sb.Append(t).Append(Environment.NewLine);
					Logger.Log("  " + t);
				}
				sb.Append(Environment.NewLine);
				sb.Append(((CodeSnippetCompileUnit)cu).Value);
				if(sb.Length > 0)
				{
					try
					{
						string errFile = "error.txt";
						sb.Append(Environment.NewLine).Append(".NETZ Version: ").Append(System.Reflection.Assembly.GetExecutingAssembly().FullName);
						sb.Append(Environment.NewLine).Append(".NET  Version: ").Append(Environment.Version.ToString());
						sb.Append(Environment.NewLine).Append(netz.InputParser.GetInnerTemplatesFingerPrint(this.genData.CompressProviderDLL));
						sb.Append(Environment.NewLine).Append(Environment.StackTrace);
						sb.Append(Environment.NewLine).Append(DateTime.Now.ToString());
						sb.Append(Environment.NewLine);

						Utils.WriteTextFile(errFile, sb.ToString());
						Logger.Log(string.Empty);
						errFile = OutDirMan.MakeOutFileName("error.txt");
						ColorConsole c = null;
						try
						{
							c = new ColorConsole();
							c.SetColor(ColorConsole.FOREGROUND_RED | ColorConsole.FOREGROUND_INTENSITY);
						}
						catch{}

						Logger.Log("! Please email the error file: " + errFile);
						Logger.Log("! To: " + Help.EMAIL);

						

						Logger.Log(string.Empty);
						Logger.Log("! To help locate better the errors add the -v option to");
						Logger.Log("! your current netz command-line and email also the screen output!");
						Logger.Log("! No support is provided for custom startup and compress templates!");
						Logger.Log("! Check http://madebits.com/netz/ for more help on how to report a bug!");

						try
						{
							if(c != null) c.Reset();
						}
						catch{}
						//TODO send email
					}
					catch{}
				}
			}
		}
示例#31
0
 protected override void PreStart()
 {
     ColorConsole.WriteWhite("PlaybackStatisticsActor PreStart");
 }
示例#32
0
 public NetProvider(string bindingip)
     : base(bindingip)
 {
     m_ColorConsole = new ColorConsole();
 }
 protected override void PreStart()
 {
     ColorConsole.WriteColorLine("PlaybackStatisticsActor PreStart", ConsoleColor.White);
 }