public LogForm(ShadowsocksController controller, string filename)
        {
            this.controller = controller;
            this.filename = filename;
            InitializeComponent();
            Icon = Icon.FromHandle(Resources.ssw128.GetHicon());

            LogViewerConfig config = controller.GetConfigurationCopy().logViewer;
            if (config == null)
            {
                config = new LogViewerConfig();
            }
            else
            {
                topMostTrigger = config.topMost;
                wrapTextTrigger = config.wrapText;
                toolbarTrigger = config.toolbarShown;
                LogMessageTextBox.BackColor = config.GetBackgroundColor();
                LogMessageTextBox.ForeColor = config.GetTextColor();
                LogMessageTextBox.Font = config.GetFont();
            }

            controller.TrafficChanged += controller_TrafficChanged;

            UpdateTexts();
        }
        public Configuration()
        {
            version               = UpdateChecker.Version;
            strategy              = "";
            index                 = 0;
            global                = false;
            enabled               = false;
            shareOverLan          = false;
            firstRun              = true;
            localPort             = 1080;
            portableMode          = true;
            showPluginOutput      = false;
            pacUrl                = "";
            useOnlinePac          = false;
            secureLocalPac        = true;
            regeneratePacOnUpdate = true;
            autoCheckUpdate       = false;
            checkPreRelease       = false;
            skippedUpdateVersion  = "";
            isVerboseLogging      = false;

            // hidden options
            isIPv6Enabled       = false;
            generateLegacyUrl   = false;
            geositeUrl          = "";
            geositeSha256sumUrl = "";
            geositeDirectGroups = new List <string>()
            {
                "private",
                "cn",
                "geolocation-!cn@cn",
            };
            geositeProxiedGroups = new List <string>()
            {
                "geolocation-!cn",
            };
            geositePreferDirect = false;
            userAgent           = "ShadowsocksWindows/$version";

            logViewer = new LogViewerConfig();
            proxy     = new ForwardProxyConfig();
            hotkey    = new HotkeyConfig();

            firstRunOnNewVersion = false;

            configs            = new List <Server>();
            onlineConfigSource = new List <string>();
        }
        public Configuration()
        {
            version                = UpdateChecker.Version;
            strategy               = "";
            index                  = 0;
            global                 = false;
            enabled                = false;
            shareOverLan           = false;
            firstRun               = true;
            localPort              = 1080;
            portableMode           = true;
            showPluginOutput       = false;
            pacUrl                 = "";
            useOnlinePac           = false;
            secureLocalPac         = true;
            regeneratePacOnUpdate  = true;
            availabilityStatistics = false;
            autoCheckUpdate        = false;
            checkPreRelease        = false;
            isVerboseLogging       = false;

            // hidden options
            isIPv6Enabled        = false;
            generateLegacyUrl    = false;
            geositeUrl           = "";
            geositeGroup         = "geolocation-!cn";
            geositeBlacklistMode = true;
            userAgent            = "ShadowsocksWindows/$version";

            logViewer = new LogViewerConfig();
            proxy     = new ProxyConfig();
            hotkey    = new HotkeyConfig();

            firstRunOnNewVersion = false;

            configs            = new List <Server>();
            onlineConfigSource = new List <string>();
        }
 public void SaveLogViewerConfig(LogViewerConfig newConfig)
 {
     _config.logViewer = newConfig;
     Configuration.Save(_config);
 }
        private void LogForm_Load(object sender, EventArgs e)
        {
            InitContent();

            timer = new Timer();
            timer.Interval = 300;
            timer.Tick += Timer_Tick;
            timer.Start();

            LogViewerConfig config = controller.GetConfigurationCopy().logViewer;
            if (config == null)
                config = new LogViewerConfig();
            Height = config.height;
            Width = config.width;
            Top = config.GetBestTop();
            Left = config.GetBestLeft();
            if(config.maximized) {
                WindowState = FormWindowState.Maximized;
            }

            topMostTriggerLock = true;
            TopMost = TopMostMenuItem.Checked = TopMostCheckBox.Checked = topMostTrigger;
            topMostTriggerLock = false;

            wrapTextTriggerLock = true;
            LogMessageTextBox.WordWrap = WrapTextMenuItem.Checked = WrapTextCheckBox.Checked = wrapTextTrigger;
            wrapTextTriggerLock = false;

            ToolbarFlowLayoutPanel.Visible = ShowToolbarMenuItem.Checked = toolbarTrigger;
        }
 private void LogForm_FormClosing(object sender, FormClosingEventArgs e)
 {
     timer.Stop();
     controller.TrafficChanged -= controller_TrafficChanged;
     LogViewerConfig config = controller.GetConfigurationCopy().logViewer;
     if (config == null)
         config = new LogViewerConfig();
     config.topMost = topMostTrigger;
     config.wrapText = wrapTextTrigger;
     config.toolbarShown = toolbarTrigger;
     config.SetFont(LogMessageTextBox.Font);
     config.SetBackgroundColor(LogMessageTextBox.BackColor);
     config.SetTextColor(LogMessageTextBox.ForeColor);
     if(!(config.maximized = WindowState == FormWindowState.Maximized)) {
         config.top = Top;
         config.left = Left;
         config.height = Height;
         config.width = Width;
     }
     controller.SaveLogViewerConfig(config);
 }
        public void FixConfiguration()
        {
            if (localPort == 0)
            {
                localPort = 1080;
            }
            if (keepVisitTime == 0)
            {
                keepVisitTime = 180;
            }
            if (portMap == null)
            {
                portMap = new Dictionary <string, object>();
            }
            if (token == null)
            {
                token = new Dictionary <string, string>();
            }
            if (connect_timeout == 0)
            {
                connect_timeout = 10;
                reconnectTimes  = 2;
                TTL             = 180;
                keepVisitTime   = 180;
            }
            if (localAuthPassword == null || localAuthPassword.Length < 16)
            {
                localAuthPassword = randString(20);
            }

            Dictionary <string, int> id = new Dictionary <string, int>();

            if (index < 0 || index >= configs.Count)
            {
                index = 0;
            }
            foreach (Server server in configs)
            {
                if (id.ContainsKey(server.id))
                {
                    byte[] new_id = new byte[16];
                    Util.Utils.RandBytes(new_id, new_id.Length);
                    server.id = BitConverter.ToString(new_id).Replace("-", "");
                }
                else
                {
                    id[server.id] = 0;
                }
            }
            bool type_err = false;

            foreach (KeyValuePair <string, object> pair in portMap)
            {
                if (pair.Value.GetType() != typeof(PortMapConfig))
                {
                    type_err = true;
                }
            }
            if (type_err)
            {
                Dictionary <string, object> new_portMap = new Dictionary <string, object>();
                foreach (KeyValuePair <string, object> pair in portMap)
                {
                    if (pair.Value.GetType() != typeof(PortMapConfig))
                    {
                        PortMapConfig pm;
                        Type          type = typeof(PortMapConfig);
                        object        obj  = Activator.CreateInstance(type);
                        System.Reflection.FieldInfo[] field = null;
                        field = type.GetFields(System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.Public);
                        pm    = new PortMapConfig();
                        foreach (System.Reflection.FieldInfo fi in field)
                        {
                            if (((SimpleJson.JsonObject)pair.Value).ContainsKey(fi.Name))
                            {
                                if (fi.FieldType == typeof(int))
                                {
                                    int val = (int)(Int64)((SimpleJson.JsonObject)pair.Value)[fi.Name];
                                    fi.SetValue(pm, val);
                                }
                                else
                                {
                                    fi.SetValue(pm, ((SimpleJson.JsonObject)pair.Value)[fi.Name]);
                                }
                            }
                        }
                        new_portMap[pair.Key] = pm;
                    }
                    else
                    {
                        new_portMap[pair.Key] = pair.Value;
                    }
                }
                portMap = new_portMap;
            }


            if (logViewer == null)
            {
                logViewer = new LogViewerConfig();
            }
            else
            {
                logViewer.FixConfiguration();
            }
        }
Exemple #8
0
 private void LogForm_FormClosing(object sender, FormClosingEventArgs e)
 {
     timer.Stop();
     LogViewerConfig config = controller.GetConfigurationCopy().logViewer;
     if (config == null)
         config = new LogViewerConfig();
     config.topMost = topMostTrigger;
     config.wrapText = wrapTextTrigger;
     config.toolbarShown = toolbarTrigger;
     config.SetFont(LogMessageTextBox.Font);
     config.SetBackgroundColor(LogMessageTextBox.BackColor);
     config.SetTextColor(LogMessageTextBox.ForeColor);
     controller.SaveLogViewerConfig(config);
 }