Пример #1
0
        void OnHosts(string data)
        {
            HostsDatabase.Clear(false);

            foreach (var entry in data.Split('|'))
            {
                var param = entry.Split('/');
                if (param.Length == 4)
                {
                    HostsDatabase.Add(false,
                                      param[0].Unescape(EscapeLanguage.Xml),
                                      param[1].Unescape(EscapeLanguage.Xml),
                                      param[2].Unescape(EscapeLanguage.Xml),
                                      param[3] == "1");
                }
            }

            HostsDatabase.Save();
            EventCallbackSystem.InvokeCallback("HostsListUpdated", true);

            HostsDatabase.Lock();
            int numberOfHosts = HostsDatabase.Hosts.Count();

            HostsDatabase.Unlock();
            Logger.Log(LogType.Debug, "Received {0} hosts from server.", numberOfHosts.FormatNumber());
        }
Пример #2
0
        void OnRemoveDomain(string data)
        {
            if (HostsDatabase.Remove(false, data.Unescape(EscapeLanguage.Xml)))
            {
                HostsDatabase.Save();
                EventCallbackSystem.InvokeCallback("HostsListUpdated", true);

                Logger.Log(LogType.Debug,
                           "Removed domain {0}",
                           data.Unescape(EscapeLanguage.Xml));
            }
        }
Пример #3
0
 void OnRemoveDomain(UserClient client, string data)
 {
     if (HostsDatabase.Remove(false, data.Unescape(EscapeLanguage.Xml)))
     {
         HostsDatabase.Save();
         Logger.Log(LogType.Debug, "Removed domain {0}", data.Unescape(EscapeLanguage.Xml));
         BroadcastPacket("remove-domain {0}\n", data);
     }
     else
     {
         Logger.Log(LogType.Warning, "OnRemoveDomain from {0}: Domain '{1}' not found. [Action ignored]", client.NetworkClient.IP, data.Unescape(EscapeLanguage.Xml));
     }
 }
Пример #4
0
        void OnLogin(UserClient client, string data)
        {
            string server_keydata = string.Empty;

            if (!ServerConfiguration.GetValue("keydata", out server_keydata))
            {
                client.Disconnect("Server keydata is missing...");
                return;
            }

            if (data.Length != server_keydata.Length ||
                string.Compare(data, server_keydata) != 0)
            {
                IPLock.AddLock(client.NetworkClient.IP);
                client.Disconnect("Client keydata is invalid");
                return;
            }

            client.IsAuthorized = true;
            client.NetworkClient.Send("logedin\n");
            Logger.Log(LogType.Debug, "{0} successfully authorized.", client.NetworkClient.IP);

            // send hosts list and shit
            var sb = new StringBuilder();

            sb.Append("hosts ");
            int i = 0;

            HostsDatabase.Lock();
            foreach (var host in HostsDatabase.Hosts)
            {
                if (i++ > 0)
                {
                    sb.Append('|');
                }

                sb.AppendFormat(
                    "{0}/{1}/{2}/{3}",
                    host.Name.Escape(EscapeLanguage.Xml),
                    host.IP.Escape(EscapeLanguage.Xml),
                    host.Description.Escape(EscapeLanguage.Xml),
                    host.Hidden ? "1" : "0");
            }
            HostsDatabase.Unlock();
            sb.Append('\n');

            client.NetworkClient.Send(sb.ToString()); // host list
        }
Пример #5
0
 private void addNewHostToolStripMenuItem_Click(object sender, EventArgs e)
 {
     using (var dlg = new AddEditHostDlg())
     {
         if (dlg.ShowDialog() == DialogResult.OK)
         {
             if (dlg.LocalDomain)
             {
                 HostsDatabase.Add(true, dlg.DomainName, dlg.IPAddress, dlg.Description, dlg.HiddenDomain);
                 HostsDatabase.Save();
                 EventCallbackSystem.InvokeCallback("HostsListUpdated", true);
             }
             else
             {
                 _client.SendAddDomain(dlg.DomainName, dlg.IPAddress, dlg.Description, dlg.HiddenDomain);
             }
         }
     }
 }
Пример #6
0
        private void LvLocalHosts_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            if (lvLocalHosts.SelectedItems.Count == 1)
            {
                var entry = lvLocalHosts.SelectedItems[0].Tag as HostEntry;

                using (var dlg = new AddEditHostDlg(entry, true))
                {
                    if (dlg.ShowDialog() == DialogResult.OK)
                    {
                        HostsDatabase.Remove(true, entry.Name);
                        HostsDatabase.Add(true, dlg.DomainName, dlg.IPAddress, dlg.Description, dlg.HiddenDomain);
                        HostsDatabase.Save();

                        EventCallbackSystem.InvokeCallback("HostsListUpdated", true);
                    }
                }
            }
        }
Пример #7
0
        void OnAddDomain(string data)
        {
            var param = data.Split('/');

            if (param.Length == 4)
            {
                HostsDatabase.Add(false,
                                  param[0].Unescape(EscapeLanguage.Xml),
                                  param[1].Unescape(EscapeLanguage.Xml),
                                  param[2].Unescape(EscapeLanguage.Xml),
                                  param[3] == "1");
                HostsDatabase.Save();
                EventCallbackSystem.InvokeCallback("HostsListUpdated", true);

                Logger.Log(LogType.Debug,
                           "Added domain {0} = {1}",
                           param[0].Unescape(EscapeLanguage.Xml),
                           param[1].Unescape(EscapeLanguage.Xml));
            }
        }
Пример #8
0
        void OnAddDomain(UserClient client, string data)
        {
            var param = data.Split('/');

            if (param.Length == 4)
            {
                HostsDatabase.Add(false,
                                  param[0].Unescape(EscapeLanguage.Xml),
                                  param[1].Unescape(EscapeLanguage.Xml),
                                  param[2].Unescape(EscapeLanguage.Xml),
                                  param[3] == "1");
                HostsDatabase.Save();

                Logger.Log(
                    LogType.Debug,
                    "Added domain {0} = {1}",
                    param[0].Unescape(EscapeLanguage.Xml),
                    param[1].Unescape(EscapeLanguage.Xml));

                BroadcastPacket("add-domain {0}\n", data);
            }
        }
Пример #9
0
        private void btnAddEdit_click(object sender, EventArgs e)
        {
            if (!Regex.IsMatch(txtDomainName.Text, GlobalRules.DomainRegex, RegexOptions.IgnoreCase))
            {
                MessageBox.Show(
                    "The domain name does not appear to be valid.",
                    _isEdit ? "Edit domain" : "Add domain",
                    MessageBoxButtons.OK,
                    MessageBoxIcon.Warning);
                return;
            }

            System.Net.IPAddress temp;
            if (!Regex.IsMatch(txtIPAddress.Text, GlobalRules.IPRegex, RegexOptions.IgnoreCase) ||
                !System.Net.IPAddress.TryParse(txtIPAddress.Text, out temp))
            {
                MessageBox.Show(
                    "The IP address field is not a valid IP.",
                    _isEdit ? "Edit domain" : "Add domain",
                    MessageBoxButtons.OK,
                    MessageBoxIcon.Warning);
                return;
            }

            if (!_isEdit &&
                HostsDatabase.Contains(LocalDomain, DomainName))
            {
                MessageBox.Show(
                    "The domain name you entered already exist in the " + (LocalDomain ? "local" : "remote") + " host list.\n" +
                    "Edit existing entry instead of attempting to overwrite.",
                    _isEdit ? "Edit domain" : "Add domain",
                    MessageBoxButtons.OK,
                    MessageBoxIcon.Warning);
                return;
            }

            DialogResult = DialogResult.OK;
        }
Пример #10
0
        private void LvLocalHosts_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                e.Handled = true;
                LvLocalHosts_MouseDoubleClick(sender, null);
            }
            else if (e.KeyCode == Keys.Delete)
            {
                e.Handled = true;

                if (lvLocalHosts.SelectedItems.Count > 0)
                {
                    var str =
                        lvLocalHosts.SelectedItems.Count > 1 ?
                        "Are you sure you wish to delete " + lvLocalHosts.SelectedItems.Count + " local domains?\nThis action cannot be undone." :
                        "Are you sure you wish to delete this local domain?\nThis action cannot be undone.";

                    var res = MessageBox.Show(
                        str,
                        "Confirm remove local domain(s)",
                        MessageBoxButtons.YesNo,
                        MessageBoxIcon.Warning);

                    if (res == DialogResult.Yes)
                    {
                        foreach (ListViewItem lvi in lvLocalHosts.SelectedItems)
                        {
                            // remove manually
                            HostsDatabase.Remove(true, (lvi.Tag as HostEntry).Name);
                        }

                        HostsDatabase.Save();
                        EventCallbackSystem.InvokeCallback("HostsListUpdated", true);
                    }
                }
            }
        }
Пример #11
0
        void OnEditDomain(UserClient client, string data)
        {
            var param = data.Split('/');

            if (param.Length == 4)
            {
                var added = !HostsDatabase.Remove(false, param[0].Unescape(EscapeLanguage.Xml));
                HostsDatabase.Add(false,
                                  param[0].Unescape(EscapeLanguage.Xml),
                                  param[1].Unescape(EscapeLanguage.Xml),
                                  param[2].Unescape(EscapeLanguage.Xml),
                                  param[3] == "1");
                HostsDatabase.Save();

                Logger.Log(
                    LogType.Debug,
                    "{0} domain {1} = {2}",
                    added ? "Added" : "Edited",
                    param[0].Unescape(EscapeLanguage.Xml),
                    param[1].Unescape(EscapeLanguage.Xml));

                BroadcastPacket("edit-domain {0}\n", data);
            }
        }
Пример #12
0
        private void RegisterEvents()
        {
            EventCallbackSystem.RegisterCallback <ClientAuthorizedEvent>("ClientAuthorized", () =>
            {
                Logger.Log(LogType.Debug, "Authorized to server.");
            });

            EventCallbackSystem.RegisterCallback <HostsListUpdatedEvent>("HostsListUpdated", (changed) =>
            {
                lvHosts.BeginUpdate();
                lvLocalHosts.BeginUpdate();
                lvHosts.Items.Clear();
                lvLocalHosts.Items.Clear();
                HostsDatabase.Lock();

                var lviList = new List <ListViewItem>(Math.Max(HostsDatabase.Hosts.Count(), HostsDatabase.LocalHosts.Count()));

                foreach (var host in HostsDatabase.Hosts)
                {
                    if ((Configuration.ShowHiddenHosts ||
                         !host.Hidden) &&
                        _searchParameters.Matches(host))
                    {
                        var lvi = new ListViewItem(host.Name);
                        lvi.SubItems.Add(host.IP);
                        lvi.SubItems.Add(host.Description);
                        lvi.Tag = host;
                        //lvHosts.Items.Add(lvi);
                        lviList.Add(lvi);
                    }
                }
                lvHosts.Items.AddRange(lviList.ToArray());
                if (lvHosts.Items.Count < HostsDatabase.Hosts.Count())
                {
                    gbHosts.Text = string.Format(
                        "Domains ({0} of {1})",
                        lvHosts.Items.Count.FormatNumber(),
                        HostsDatabase.Hosts.Count().FormatNumber());
                }
                else
                {
                    gbHosts.Text = string.Format("Domains ({0})", lvHosts.Items.Count.FormatNumber());
                }
                lviList.Clear();

                foreach (var host in HostsDatabase.LocalHosts)
                {
                    if ((Configuration.ShowHiddenHosts ||
                         !host.Hidden) &&
                        _searchParameters.Matches(host))
                    {
                        var lvi = new ListViewItem(host.Name);
                        lvi.SubItems.Add(host.IP);
                        lvi.SubItems.Add(host.Description);
                        lvi.Tag = host;
                        //lvLocalHosts.Items.Add(lvi);
                        lviList.Add(lvi);
                    }
                }
                lvLocalHosts.Items.AddRange(lviList.ToArray());
                if (lvLocalHosts.Items.Count < HostsDatabase.LocalHosts.Count())
                {
                    gbLocalHosts.Text = string.Format(
                        "Local domains ({0} of {1})",
                        lvLocalHosts.Items.Count.FormatNumber(),
                        HostsDatabase.LocalHosts.Count().FormatNumber());
                }
                else
                {
                    gbLocalHosts.Text = string.Format("Local domains ({0})", lvLocalHosts.Items.Count.FormatNumber());
                }

                HostsDatabase.Unlock();
                lvHosts.EndUpdate();
                lvLocalHosts.EndUpdate();
                //Logger.Log(LogType.Debug, "Hosts list updated.");

                UpdateInterface();

                if (changed)      // only synchronize if the hostsdatabase was literally changed - ignore searching
                {
                    _synchronizer.PostSynchronize();
                }
            });
        }