Пример #1
0
 public static void Logout(FritzBoxSession session)
 {
     HttpGetRaw(loginUrl + "?sid=" + session.SessionID + "&logout=1");
 }
Пример #2
0
    static void Main(string[] args)
    {
        bool   startCapture     = false;
        bool   showExtcapDlts   = false;
        bool   showExtcapConfig = false;
        string fifo             = string.Empty;
        string username         = string.Empty;
        string password         = string.Empty;
        string ifaceorminor     = string.Empty;
        int    snaplen          = 1600;

        for (int i = 0; i < args.Length; i++)
        {
            if (args[i] == "--extcap-version")
            {
                PrintExtcapVersion();
                return;
            }
            if (args[i] == "--extcap-interfaces")
            {
                PrintExtcapInterfaces();
                return;
            }

            if (args[i] == "--capture")
            {
                startCapture = true;
            }
            if (args[i] == "--extcap-dlts")
            {
                showExtcapDlts = true;
            }
            if (args[i] == "--extcap-config")
            {
                showExtcapConfig = true;
            }

            if (i + 1 < args.Length)
            {
                if (args[i] == "--extcap-interface")
                {
                    i += 1;
                }
                if (args[i] == "--fifo")
                {
                    fifo = args[i += 1];
                }
                if (args[i] == "--username")
                {
                    username = args[i += 1];
                }
                if (args[i] == "--password")
                {
                    password = args[i += 1];
                }
                if (args[i] == "--ifaceorminor")
                {
                    ifaceorminor = args[i += 1];
                }
                if (args[i] == "--snaplen")
                {
                    snaplen = int.Parse(args[i += 1]);
                }
            }
        }

        if (showExtcapDlts)
        {
            PrintExtcapDlts(string.Empty);
            return;
        }
        if (showExtcapConfig)
        {
            PrintExtcapConfig(string.Empty);
            return;
        }

        if (startCapture && fifo.Length != 0 && ifaceorminor.Length != 0)
        {
            var fifoHandle = Win32.CreateFile(fifo, 0x40000000, 0, IntPtr.Zero, 3, 0, IntPtr.Zero);

            using (var file = new FileStream(fifoHandle, FileAccess.Write))
            {
                var session = FritzBoxSession.Login(username, password);

                try
                {
                    using (Stream stream = session.Capture(ifaceorminor, snaplen))
                    {
                        stream.CopyTo(file, snaplen);
                    }
                }
                finally
                {
                    FritzBoxSession.Logout(session);
                }
            }
        }
    }