Example #1
0
 void Timing()
 {
     try
     {
         while (timing)
         {
             Thread.Sleep(1000);
             UpdateAdapterList();
         }
     }
     catch (ArgumentOutOfRangeException e)
     {
         LogCenter.WriteErrorLog(e);
     }
 }
        public void LoadModule(string file)
        {
            FirewallModule mod = null;

            lock (loadedAssemblies)
            {
                if (file.Contains("FirewallModule.dll") || !file.Contains(".dll"))
                {
                    return;
                }
                try
                {
                    if (loadedMods.ContainsValue(file))
                    {
                        return;
                    }
                    Assembly assembly;
                    if (!loadedAssemblies.TryGetValue(file, out assembly))
                    {
                        assembly = Assembly.Load(File.ReadAllBytes(file));
                        loadedAssemblies.Add(file, assembly);
                    }
                    Type[] type = assembly.GetTypes();
                    foreach (Type t in type)
                    {
                        if (typeof(FirewallModule).IsAssignableFrom(t))
                        {
                            mod         = (FirewallModule)Activator.CreateInstance(t);
                            mod.adapter = na;
                            mod.Enabled = false;
                            //mod.ModuleStart();
                            AddModule(mod);
                            loadedMods.Add(mod.MetaData.Name, file);
                        }
                    }
                }
                catch (ArgumentException ae)
                {
                    LogCenter.Instance.Push(mod.MetaData.Name, "Module attempted load twice.");
                    LogCenter.WriteErrorLog(ae);
                }
                catch (Exception e)
                {
                    LogCenter.WriteErrorLog(e);
                }
            }
        }
Example #3
0
        static void OpenNDISDriver()
        {
            if (hNdisapi != IntPtr.Zero)
            {
                LogCenter.Instance.Push("NetworkAdapter-static", "Bad state was found, attempting to open the NDIS Filter Driver while the IntPtr != IntPtr.Zero, continuing");
            }

            hNdisapi = Ndisapi.OpenFilterDriver(Ndisapi.NDISRD_DRIVER_NAME);
            TCP_AdapterList adList = new TCP_AdapterList();

            Ndisapi.GetTcpipBoundAdaptersInfo(hNdisapi, ref adList);
            if (adList.m_nAdapterCount == 0)
            {
                LogCenter.WriteErrorLog(new Exception("No adapters found on this driver interface"));
                return;
            }
            isNdisFilterDriverOpen = true;
        }
Example #4
0
 /// <summary>
 /// Save the general configuration
 /// </summary>
 public void SaveGeneralConfig()
 {
     try
     {
         string folder = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
         folder = folder + Path.DirectorySeparatorChar + "firebwall";
         if (!Directory.Exists(folder))
         {
             Directory.CreateDirectory(folder);
         }
         string          file       = folder + Path.DirectorySeparatorChar + "generalconfig.cfg";
         FileStream      stream     = File.Open(file, FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite);
         BinaryFormatter bFormatter = new BinaryFormatter();
         bFormatter.AssemblyFormat = System.Runtime.Serialization.Formatters.FormatterAssemblyStyle.Simple;
         bFormatter.Serialize(stream, gSettings);
         stream.Close();
     }
     catch (Exception e)
     {
         LogCenter.WriteErrorLog(e);
     }
 }
Example #5
0
        /*
         * Method called once per run, used to check log paths to
         * clean up any old logs.  Called from MainWindow.cs - Load().
         *
         * Logs are retained for however long the user requests (default is 5 days)
         */
        public static void cleanLogs()
        {
            if (OptionsDisplay.gSettings == null)
            {
                OptionsDisplay.LoadGeneralConfig();
            }

            try
            {
                //
                // first clean up the /Log/ folder
                //
                string folder = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
                folder = folder + Path.DirectorySeparatorChar + "firebwall";
                if (!Directory.Exists(folder))
                {
                    Directory.CreateDirectory(folder);
                }
                folder = folder + Path.DirectorySeparatorChar + "Log";
                if (!Directory.Exists(folder))
                {
                    Directory.CreateDirectory(folder);
                }
                string filepath = folder;

                if (Directory.Exists(filepath))
                {
                    // grab all the logs in the directory
                    string[] files = Directory.GetFiles(filepath);

                    // iterate through them all looking for any that are old (>5)
                    foreach (string s in files)
                    {
                        // grab the log date from file path name and
                        // convert to DateTime for day check
                        string logdate = s.Substring(s.LastIndexOf("_") + 1,
                                                     (s.LastIndexOf(".") - s.LastIndexOf("_")) - 1);

                        DateTimeFormatInfo dtfi = new DateTimeFormatInfo();
                        dtfi.ShortDatePattern = "MM-dd-yyyy";
                        dtfi.DateSeparator    = "-";
                        DateTime logDate = Convert.ToDateTime(logdate, dtfi);

                        // if it's old, get rid of it
                        if ((DateTime.Now - logDate).Days > OptionsDisplay.gSettings.max_logs)
                        {
                            if (isFileLocked(new FileInfo(s)))
                            {
                                continue;
                            }

                            File.Delete(s);
                        }
                    }
                }

                //
                // Now clean up the pcap logs folder
                //
                folder = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
                folder = folder + Path.DirectorySeparatorChar + "firebwall";
                if (!Directory.Exists(folder))
                {
                    Directory.CreateDirectory(folder);
                }
                folder = folder + Path.DirectorySeparatorChar + "pcapLogs";
                if (!Directory.Exists(folder))
                {
                    Directory.CreateDirectory(folder);
                }
                filepath = folder;

                if (Directory.Exists(filepath))
                {
                    string[] files = Directory.GetFiles(filepath);

                    if (files.Length > OptionsDisplay.gSettings.max_pcap_logs)
                    {
                        // hack off the number of files found in Settings (default should be 25), starting
                        // from the oldest
                        for (int i = 0; i < (files.Length - OptionsDisplay.gSettings.max_pcap_logs); ++i)
                        {
                            // if it's not accessible, skip it for next time
                            if (isFileLocked(new FileInfo(files[i])))
                            {
                                continue;
                            }

                            File.Delete(files[i]);
                        }
                    }
                }
            }
            catch (Exception e)
            {
                LogCenter.WriteErrorLog(e);
            }
        }
        private void MainWindow_Load(object sender, EventArgs e)
        {
            ColorScheme.SetColorScheme(this);
            //optionsTab.ItemSize = new Size((this.Width / 4) - 6, optionsTab.ItemSize.Height);
            System.Reflection.Assembly target = System.Reflection.Assembly.GetExecutingAssembly();
            this.Icon    = new System.Drawing.Icon(target.GetManifestResourceStream("PassThru.Resources.newIcon.ico"));
            LogCenter.ti = new TrayIcon();
            Program.uc   = new UpdateChecker();
            Program.uc.Updater();
            PassThru.Tabs.DownloadCenter.Instance.Width  = 800;
            PassThru.Tabs.DownloadCenter.Instance.Height = 600;
            PassThru.Tabs.DownloadCenter.Instance.Show();
            PassThru.Tabs.DownloadCenter.Instance.Hide();
            // call the log purger
            LogCenter.cleanLogs();

            log      = new Tabs.LogDisplay();
            log.Dock = DockStyle.Fill;
            ColorScheme.SetColorScheme(log);
            LogCenter.PushLogEvent += new LogCenter.NewLogEvent(log.Instance_PushLogEvent);
            splitContainer1.Panel2.Controls.Add(log);

            // load up the adapter control handler
            ac = new AdapterControl();
            ColorScheme.SetColorScheme(ac);
            ac.Dock = DockStyle.Fill;
            //tabPage3.Controls.Add(ac);

            // load up the options tab handler
            od = new OptionsDisplay();
            ColorScheme.SetColorScheme(od);
            od.Dock = DockStyle.Fill;
            //tabPage2.Controls.Add(od);

            // load up the options tab handler
            help = new Help();
            ColorScheme.SetColorScheme(help);
            help.Dock = DockStyle.Fill;
            //tabPage4.Controls.Add(help);

            ColorScheme.ThemeChanged += new System.Threading.ThreadStart(ColorScheme_ThemeChanged);

            switch (LanguageConfig.GetCurrentLanguage())
            {
            case LanguageConfig.Language.NONE:
            case LanguageConfig.Language.ENGLISH:
                tabPage1.Text = "Log";
                tabPage2.Text = "Options";
                tabPage3.Text = "Adapters";
                break;

            case LanguageConfig.Language.CHINESE:
                tabPage1.Text = "登录";
                tabPage2.Text = "选项";
                tabPage3.Text = "适配器";
                break;

            case LanguageConfig.Language.GERMAN:
                tabPage1.Text = "Log";
                tabPage2.Text = "Optionen";
                tabPage3.Text = "Adapter";
                break;

            case LanguageConfig.Language.RUSSIAN:
                tabPage1.Text = "журнал";
                tabPage2.Text = "опции";
                tabPage3.Text = "Адаптеры";
                break;

            case LanguageConfig.Language.SPANISH:
                tabPage1.Text = "log";
                tabPage2.Text = "opciones";
                tabPage3.Text = "adaptadores";
                break;

            case LanguageConfig.Language.PORTUGUESE:
                tabPage1.Text = "Entrar";
                tabPage2.Text = "opções";
                tabPage3.Text = "adaptadores";
                break;
            }
            MainWindow_Resize(null, null);
            if (TrayIcon.StartMinimized)
            {
                this.WindowState = FormWindowState.Minimized;
            }
            ColorScheme_ThemeChanged();
        }