Exemple #1
0
        static void AddHostsItem(NetAddress address, HostAliases aliases, string comment)
        {
            if (aliases.Count == 0)
            {
                throw new HostNotSpecifiedException();
            }

            // Remove duplicates
            foreach (HostName host in aliases)
            {
                var lines = Hosts.FindAll(item => item.Valid && item.IP.Type == address.Type && item.Aliases.Contains(host));
                foreach (var line in lines)
                {
                    if (line.Aliases.Count == 1)
                    {
                        Hosts.Remove(line);
                        Console.WriteLine("[REMOVED] {0} {1}", line.IP.ToString(), line.Aliases.ToString());
                    }
                    else
                    {
                        line.Aliases.Remove(host);
                        Console.WriteLine("[UPDATED] {0} {1}", line.IP.ToString(), line.Aliases.ToString());
                    }
                }
            }

            // New host
            var new_item = new HostsItem(address, aliases, comment == null ? "" : comment.Trim());

            Hosts.Add(new_item);
            Console.WriteLine("[ADDED] {0} {1}", new_item.IP.ToString(), new_item.Aliases.ToString());
        }
Exemple #2
0
        static void RunAddMode()
        {
            if (ArgsQueue.Count == 0)
            {
                throw new HostNotSpecifiedException();
            }
            HostAliases aliases   = new HostAliases();
            NetAddress  address   = new NetAddress("127.0.0.1");
            string      comment   = "";
            bool        inComment = false;

            while (ArgsQueue.Count > 0)
            {
                string arg = ArgsQueue.Dequeue();
                if (inComment)
                {
                    comment += arg + " ";
                    continue;
                }
                if (arg.Length > 0 && arg[0] == '#')
                {
                    inComment = true;
                    comment   = (arg.Length > 1) ? (arg.Substring(1) + " ") : "";
                    continue;
                }
                arg = arg.ToLower();
                NetAddress TestAddress = NetAddress.TryCreate(arg);
                if (TestAddress != null)
                {
                    address = TestAddress;
                    continue;
                }
                HostName TestHostName = HostName.TryCreate(arg);
                if (TestHostName != null)
                {
                    aliases.Add(TestHostName);
                    continue;
                }
                throw new Exception(String.Format("Unknown argument '{0}'", arg));
            }

            HostsItem line = new HostsItem(address, aliases, comment);

            Hosts.Add(line);
            Console.WriteLine("[ADDED] {0} {1}", line.IP.ToString(), line.Aliases.ToString());
        }