Exemple #1
0
        /// <summary>
        /// Send data to client.
        /// </summary>
        /// <param name="data">Data array to send.</param>
        /// <exception cref="Exception">Thrown if destination is null or destinationPort is 0.</exception>
        /// <exception cref="ArgumentException">Thrown on fatal error (contact support).</exception>
        /// <exception cref="OverflowException">Thrown if data array length is greater than Int32.MaxValue.</exception>
        /// <exception cref="Sys.IO.IOException">Thrown on IO error.</exception>
        /// <exception cref="Exception">Thrown if TCP Status is not ESTABLISHED.</exception>
        public void Send(byte[] data)
        {
            if ((StateMachine.destination == null) || (StateMachine.destinationPort == 0))
            {
                throw new InvalidOperationException("Must establish a default remote host by calling Connect() before using this Send() overload");
            }
            if (StateMachine.Status != Status.ESTABLISHED)
            {
                throw new Exception("Client must be connected before sending data.");
            }
            if (data.Length > 536)
            {
                var chunks = ArrayHelper.ArraySplit(data, 536);

                for (int i = 0; i < chunks.Length; i++)
                {
                    var packet = new TCPPacket(StateMachine.source, StateMachine.destination, (ushort)StateMachine.localPort, (ushort)StateMachine.destinationPort, StateMachine.SequenceNumber, StateMachine.AckNumber, 20, i == chunks.Length - 2 ? (byte)(Flags.PSH | Flags.ACK) : (byte)(Flags.ACK), 0xFAF0, 0, chunks[i]);
                    OutgoingBuffer.AddPacket(packet);
                    NetworkStack.Update();

                    StateMachine.SequenceNumber += (uint)chunks[i].Length;
                }
            }
            else
            {
                var packet = new TCPPacket(StateMachine.source, StateMachine.destination, (ushort)StateMachine.localPort, (ushort)StateMachine.destinationPort, StateMachine.SequenceNumber, StateMachine.AckNumber, 20, (byte)(Flags.PSH | Flags.ACK), 0xFAF0, 0, data);
                OutgoingBuffer.AddPacket(packet);
                NetworkStack.Update();

                StateMachine.SequenceNumber += (uint)data.Length;
            }
            StateMachine.WaitingAck = true;
        }
Exemple #2
0
        /// <summary>
        /// Send data to client.
        /// </summary>
        /// <param name="data">Data array to send.</param>
        /// <exception cref="Exception">Thrown if destination is null or destinationPort is 0.</exception>
        /// <exception cref="ArgumentException">Thrown on fatal error (contact support).</exception>
        /// <exception cref="OverflowException">Thrown if data array length is greater than Int32.MaxValue.</exception>
        /// <exception cref="Sys.IO.IOException">Thrown on IO error.</exception>
        /// <exception cref="Exception">Thrown if TCP Status is not ESTABLISHED.</exception>
        public void Send(byte[] data)
        {
            if ((StateMachine.RemoteEndPoint.Address == null) || (StateMachine.RemoteEndPoint.Port == 0))
            {
                throw new InvalidOperationException("Must establish a default remote host by calling Connect() before using this Send() overload");
            }
            if (StateMachine.Status != Status.ESTABLISHED)
            {
                throw new Exception("Client must be connected before sending data.");
            }
            if (data.Length > 536)
            {
                var chunks = ArrayHelper.ArraySplit(data, 536);

                for (int i = 0; i < chunks.Length; i++)
                {
                    var packet = new TCPPacket(StateMachine.LocalEndPoint.Address, StateMachine.RemoteEndPoint.Address, StateMachine.LocalEndPoint.Port, StateMachine.RemoteEndPoint.Port, StateMachine.TCB.SndNxt, StateMachine.TCB.RcvNxt, 20, i == chunks.Length - 2 ? (byte)(Flags.PSH | Flags.ACK) : (byte)(Flags.ACK), StateMachine.TCB.SndWnd, 0, chunks[i]);
                    OutgoingBuffer.AddPacket(packet);
                    NetworkStack.Update();

                    StateMachine.TCB.SndNxt += (uint)chunks[i].Length;
                }
            }
            else
            {
                var packet = new TCPPacket(StateMachine.LocalEndPoint.Address, StateMachine.RemoteEndPoint.Address, StateMachine.LocalEndPoint.Port, StateMachine.RemoteEndPoint.Port, StateMachine.TCB.SndNxt, StateMachine.TCB.RcvNxt, 20, (byte)(Flags.PSH | Flags.ACK), StateMachine.TCB.SndWnd, 0, data);
                OutgoingBuffer.AddPacket(packet);
                NetworkStack.Update();

                StateMachine.TCB.SndNxt += (uint)data.Length;
            }
        }
Exemple #3
0
        /// <summary>
        /// Connect to client.
        /// </summary>
        /// <param name="dest">Destination address.</param>
        /// <param name="destPort">Destination port.</param>
        /// <exception cref="Exception">Thrown if TCP Status is not CLOSED.</exception>
        public void Connect(Address dest, int destPort, int timeout = 5000)
        {
            if (StateMachine.Status != Status.CLOSED)
            {
                throw new Exception("Client must be closed before setting a new connection.");
            }

            StateMachine.destination     = dest;
            StateMachine.destinationPort = destPort;

            StateMachine.source = IPConfig.FindNetwork(dest);

            //Generate Random Sequence Number
            var rnd = new Random();

            StateMachine.SequenceNumber = (uint)((rnd.Next(0, Int32.MaxValue)) << 32) | (uint)(rnd.Next(0, Int32.MaxValue));

            // Flags=0x02 -> Syn
            var packet = new TCPPacket(StateMachine.source, StateMachine.destination, (ushort)StateMachine.localPort, (ushort)destPort, StateMachine.SequenceNumber, 0, 20, (byte)Flags.SYN, 0xFAF0, 0);

            OutgoingBuffer.AddPacket(packet);
            NetworkStack.Update();

            StateMachine.Status = Status.SYN_SENT;

            if (StateMachine.WaitStatus(Status.ESTABLISHED, timeout) == false)
            {
                throw new Exception("Failed to open TCP connection!");
            }
        }
Exemple #4
0
        /// <summary>
        /// Close connection.
        /// </summary>
        /// <exception cref="ArgumentOutOfRangeException">Thrown on fatal error (contact support).</exception>
        /// <exception cref="Exception">Thrown if TCP Status is CLOSED.</exception>
        public void Close()
        {
            if (StateMachine.Status == Status.CLOSED)
            {
                throw new Exception("Client already closed.");
            }
            if (StateMachine.Status == Status.ESTABLISHED)
            {
                var packet = new TCPPacket(StateMachine.source, StateMachine.destination, (ushort)StateMachine.localPort, (ushort)StateMachine.destinationPort, StateMachine.SequenceNumber, StateMachine.AckNumber, 20, (byte)(Flags.FIN | Flags.ACK), 0xFAF0, 0);
                OutgoingBuffer.AddPacket(packet);
                NetworkStack.Update();

                StateMachine.SequenceNumber++;

                StateMachine.Status = Status.FIN_WAIT1;

                if (StateMachine.WaitStatus(Status.CLOSED, 5000) == false)
                {
                    throw new Exception("Failed to close TCP connection!");
                }
            }

            if (clients.ContainsKey((uint)StateMachine.localPort))
            {
                clients.Remove((uint)StateMachine.localPort);
            }
        }
Exemple #5
0
        private static void Main()
        {
            var app          = new App(new AppProps());
            var networkStack = new NetworkStack(app, "ExampleNetwork", new StackProps());

            var pipelineStack = new PipelineStack(app, "ExamplePipeline", new PipelineStackProps
            {
                GitHubSecretName = "github.com/roberthodgen",
                ApiImageTag      = apiImageTag,
                ApiStackName     = apiStackName,
                GitHubOwner      = gitHubOwner,
                GitHubRepo       = gitHubRepo,
            });

            new IntegrationTestStack(app, "ExampleIntegrationTests", new IntegrationTestStackProps
            {
                GitHubOwner = gitHubOwner,
                GitHubRepo  = gitHubRepo,
            });

            new ApiStack(app, apiStackName, new ApiStackProps
            {
                Vpc         = networkStack.Vpc,
                Repository  = pipelineStack.EcrRepository,
                ApiImageTag = apiImageTag,
            });

            app.Synth();
        }
Exemple #6
0
        /// <summary>
        /// Received reply.
        /// </summary>

        /// <summary>
        /// Create new instance of the <see cref="ICMPPacket"/> class.
        /// </summary>
        /// <param name="packetData">Packet data.</param>
        /// <exception cref="ArgumentException">Thrown if packetData is invalid.</exception>
        internal static void ICMPHandler(byte[] packetData)
        {
            Global.mDebugger.Send("ICMP Handler called");
            var icmp_packet = new ICMPPacket(packetData);

            switch (icmp_packet.ICMPType)
            {
            case 0:
                var receiver = ICMPClient.GetClient(icmp_packet.SourceIP.Hash);
                if (receiver != null)
                {
                    receiver.ReceiveData(icmp_packet);
                }
                Global.mDebugger.Send("Received ICMP Echo reply from " + icmp_packet.SourceIP.ToString());
                break;

            case 8:
                var request = new ICMPEchoRequest(packetData);
                var reply   = new ICMPEchoReply(request);
                Global.mDebugger.Send("Sending ICMP Echo reply to " + reply.DestinationIP.ToString());
                OutgoingBuffer.AddPacket(reply);
                NetworkStack.Update();
                break;
            }
        }
Exemple #7
0
        public void Send(byte[] data)
        {
            if ((this.destination == null) ||
                (this.destinationPort == 0))
            {
                throw new Exception("Must establish a default remote host by calling Connect() before using this Send() overload");
            }

            Send(data, this.destination, this.destinationPort);
            NetworkStack.Update();

            int _deltaT = 0;
            int second  = 0;

            while (!readytosend)
            {
                if (_deltaT != Cosmos.HAL.RTC.Second)
                {
                    second++;
                    _deltaT = Cosmos.HAL.RTC.Second;
                }

                if (second >= 4)
                {
                    Console.WriteLine("No response in 4 secondes...");
                    break;
                }
            }
            //Console.WriteLine("Done!");
        }
Exemple #8
0
        /*
         * Method called to applied the differents options received in the DHCP packet ACK
         **/
        /// <summary>
        /// Apply the new IP configuration received.
        /// </summary>
        /// <param name="Options">DHCPOption class using the packetData from the received dhcp packet.</param>
        /// <param name="message">Enable/Disable the displaying of messages about DHCP applying and conf. Disabled by default.
        /// </param>
        public static void Apply(DHCPOption Options, bool message = false)
        {
            NetworkStack.RemoveAllConfigIP();

            //cf. Roadmap. (have to change this, because some network interfaces are not configured in dhcp mode) [have to be done in 0.5.x]
            foreach (NetworkDevice networkDevice in NetworkDevice.Devices)
            {
                if (message)
                {
                    Console.WriteLine();
                    Console.WriteLine("[DHCP ACK][" + networkDevice.Name + "] Packet received, applying IP configuration...");
                    Console.WriteLine("   IP Address  : " + Options.Address().ToString());
                    Console.WriteLine("   Subnet mask : " + Options.Subnet().ToString());
                    Console.WriteLine("   Gateway     : " + Options.Gateway().ToString());
                    Console.WriteLine("   DNS server  : " + Options.DNS01().ToString());
                }

                Settings settings = new Settings(@"0:\" + networkDevice.Name + ".conf");
                settings.EditValue("ipaddress", Options.Address().ToString());
                settings.EditValue("subnet", Options.Subnet().ToString());
                settings.EditValue("gateway", Options.Gateway().ToString());
                settings.EditValue("dns01", Options.DNS01().ToString());
                settings.EditValue("dhcp_server", Options.Server().ToString());
                settings.PushValues();

                NetworkInit.Enable();

                if (message)
                {
                    Console.WriteLine("[DHCP CONFIG][" + networkDevice.Name + "] IP configuration applied.");
                    Console.WriteLine();
                    DHCPAsked = false;
                }
            }
        }
Exemple #9
0
        public static void Main(string[] args)
        {
            var app = new App();

            var props = new StackProps()
            {
                Env = new Environment()
                {
                    Account = "353697730469",
                    Region  = "us-east-1"
                }
            };

            var network = new NetworkStack(app, "companies", props);

            new FrontendStack(app, "companies", "zro17.com");

            new DatabaseStack(app, "companies", network.GetVpc(), props);

            new SchedulerStack(app, "regulatory-sec-update", 128, new CronOptions()
            {
                Minute = "*/5",
                Hour   = "*",
                Day    = "*",
                Month  = "*",
                Year   = "*"
            }, network.GetVpc(), props);

            new ConsumerStack(app, "regulatory-sec-reader", 128, network.GetVpc(), props);
            new ConsumerStack(app, "regulatory-sec-parser", 128, network.GetVpc(), props);
            new ConsumerStack(app, "calculations-indexes", 128, network.GetVpc(), props);

            app.Synth();
        }
Exemple #10
0
 protected override void BeforeRun()
 {
     try
     {
         using (var xClient = new DHCPClient())
         {
             /** Send a DHCP Discover packet **/
             //This will automatically set the IP config after DHCP response
             NetworkStack.Update();
             int r = xClient.SendDiscoverPacket();
             if (r == -1)
             {
                 Console.WriteLine("Failure while configuring DHCP: timeout");
                 ManualConfig();
             }
             else
             {
                 Console.WriteLine("DHCP Configure: result: " + r);
             }
             xClient.Close();  //don't forget to close!
         }
         ipconfig();
     }
     catch (Exception x)
     {
         Console.WriteLine("err: " + x.Message);
     }
 }
Exemple #11
0
        /// <summary>
        /// Send acknowledgement packet
        /// </summary>
        private void SendEmptyPacket(Flags flag)
        {
            var packet = new TCPPacket(source, destination, (ushort)localPort, (ushort)destinationPort, SequenceNumber, AckNumber, 20, (byte)flag, 0xFAF0, 0);

            OutgoingBuffer.AddPacket(packet);
            NetworkStack.Update();
        }
        /// <summary>
        /// CommandIPConfig without args
        /// </summary>
        public override ReturnInfo Execute()
        {
            if (NetworkStack.ConfigEmpty())
            {
                Console.WriteLine("No network configuration detected! Use ipconfig /help");
            }
            foreach (HAL.Drivers.Network.NetworkDevice device in NetworkConfig.Keys)
            {
                switch (device.CardType)
                {
                case HAL.Drivers.Network.CardType.Ethernet:
                    Console.WriteLine("Ethernet Card : " + device.NameID + " - " + device.Name);
                    break;

                case HAL.Drivers.Network.CardType.Wireless:
                    Console.WriteLine("Wireless Card : " + device.NameID + " - " + device.Name);
                    break;
                }
                Utils.Settings settings = new Utils.Settings(@"0:\System\" + device.Name + ".conf");
                Console.WriteLine("MAC Address          : " + device.MACAddress.ToString());
                Console.WriteLine("IP Address           : " + NetworkConfig.Get(device).IPAddress.ToString());
                Console.WriteLine("Subnet mask          : " + NetworkConfig.Get(device).SubnetMask.ToString());
                Console.WriteLine("Default Gateway      : " + NetworkConfig.Get(device).DefaultGateway.ToString());
                Console.WriteLine("Preferred DNS server : " + settings.GetValue("dns01"));
            }

            return(new ReturnInfo(this, ReturnCode.OK));
        }
Exemple #13
0
        /// <summary>
        /// Send ICMP Echo
        /// </summary>
        public void SendEcho()
        {
            Address         source  = IPConfig.FindNetwork(destination);
            ICMPEchoRequest request = new ICMPEchoRequest(source, destination, 0x0001, 0x50); //this is working

            OutgoingBuffer.AddPacket(request);                                                //Aura doesn't work when this is called.
            NetworkStack.Update();
        }
Exemple #14
0
 /// <summary>
 /// Send a request to apply the new IP configuration
 /// </summary>
 public static void SendRequestPacket(Address RequestedAddress, Address DHCPServerAddress)
 {
     foreach (NetworkDevice networkDevice in NetworkDevice.Devices)
     {
         DHCPRequest dhcp_request = new DHCPRequest(networkDevice.MACAddress, RequestedAddress, DHCPServerAddress);
         OutgoingBuffer.AddPacket(dhcp_request);
         NetworkStack.Update();
     }
 }
Exemple #15
0
        public Network(Helper aHelper)
        {
            iHelper  = aHelper;
            iBoxList = new List <Box>();
            iNetworkChangeWatcher = new NetworkChangeWatcher();

            // create the list of network interfaces
            iInterfaces = new List <NetworkInterface>();

            foreach (NetworkInfoModel i in NetworkInfo.GetAllNetworkInterfaces())
            {
                if (i.OperationalStatus == EOperationalStatus.eUp ||
                    i.OperationalStatus == EOperationalStatus.eUnknown)
                {
                    // don't add 3G network card on iPads/iPhones
                    if (i.Name != "pdp_ip0")
                    {
                        iInterfaces.Add(new NetworkInterface(i));
                    }
                }
            }

            // create separate network stacks for each available interface
            iNetworkStacks = new List <NetworkStack>();

            foreach (NetworkInterface iface in iInterfaces)
            {
                if (iface.Status == NetworkInterface.EStatus.eAvailable)
                {
                    NetworkStack stack = new NetworkStack(aHelper, iface.Info.IPAddress);
                    stack.Boxes.EventRoomAdded   += RoomAddedHandler;
                    stack.Boxes.EventRoomRemoved += RoomRemovedHandler;

                    try
                    {
                        // start the stack
                        UserLog.WriteLine(String.Format("{0}: Linn.Wizard.Network starting stack({1})", DateTime.Now, iface.Info.IPAddress.ToString()));
                        stack.Start();
                        UserLog.WriteLine(String.Format("{0}: Linn.Wizard.Network starting stack({1}) ok", DateTime.Now, iface.Info.IPAddress.ToString()));

                        // success - add it to the list
                        iNetworkStacks.Add(stack);
                    }
                    catch (Exception e)
                    {
                        // failed to start - unhook handlers and ignore
                        UserLog.WriteLine(String.Format("{0}: Linn.Wizard.Network starting stack({1}) failed", DateTime.Now, iface.Info.IPAddress.ToString()));
                        UserLog.WriteLine("Error Message: " + e.Message);
                        UserLog.WriteLine("Error Message: " + e.ToString());

                        stack.Boxes.EventRoomAdded   -= RoomAddedHandler;
                        stack.Boxes.EventRoomRemoved -= RoomRemovedHandler;
                    }
                }
            }
        }
Exemple #16
0
        /// <summary>
        /// Send TCP packet.
        /// </summary>
        private void SendPacket(TCPPacket packet)
        {
            OutgoingBuffer.AddPacket(packet);
            NetworkStack.Update();

            if (packet.SYN || packet.FIN)
            {
                TCB.SndNxt++;
            }
        }
Exemple #17
0
 /// <summary>
 /// Send a request to apply the new IP configuration
 /// </summary>
 /// <returns>time value (-1 = timeout)</returns>
 private int SendRequestPacket(Address RequestedAddress)
 {
     foreach (NetworkDevice networkDevice in NetworkDevice.Devices)
     {
         var dhcp_request = new DHCPRequest(networkDevice.MACAddress, RequestedAddress);
         OutgoingBuffer.AddPacket(dhcp_request);
         NetworkStack.Update();
     }
     return(Receive());
 }
Exemple #18
0
        /// <summary>
        /// Send data to client.
        /// </summary>
        /// <param name="data">Data array to send.</param>
        /// <exception cref="Exception">Thrown if destination is null or destinationPort is 0.</exception>
        /// <exception cref="ArgumentException">Thrown on fatal error (contact support).</exception>
        /// <exception cref="OverflowException">Thrown if data array length is greater than Int32.MaxValue.</exception>
        /// <exception cref="Sys.IO.IOException">Thrown on IO error.</exception>
        public void Send(byte[] data)
        {
            if ((destination == null) || (destinationPort == 0))
            {
                throw new InvalidOperationException("Must establish a default remote host by calling Connect() before using this Send() overload");
            }

            Send(data, destination, destinationPort);
            NetworkStack.Update();
        }
Exemple #19
0
        public void Ask(string url)
        {
            Settings settings = new Settings(@"0:\System\" + NetworkInterfaces.Interface("eth0") + ".conf");
            Address  gateway  = Address.Parse(settings.Get("dns01"));
            Address  source   = Config.FindNetwork(gateway);

            askpacket = new DNSPacketAsk(source, gateway, 0x1234, 0x0100, 1, url);

            OutgoingBuffer.AddPacket(askpacket);
            NetworkStack.Update();
        }
Exemple #20
0
 public static bool Enable(NetworkDevice device, Address ip, Address subnet, Address gw)
 {
     if (device != null)
     {
         var config = new IPConfig(ip, subnet, gw);
         NetworkStack.ConfigIP(device, config);
         Global.mDebugger.Send("Config OK.");
         return(true);
     }
     return(false);
 }
Exemple #21
0
        /// <summary>
        /// Send a packet to find the DHCP server and tell that we want a new IP address
        /// </summary>
        public static void SendDiscoverPacket()
        {
            foreach (NetworkDevice networkDevice in NetworkDevice.Devices)
            {
                DHCPDiscover dhcp_discover = new DHCPDiscover(networkDevice.MACAddress);
                OutgoingBuffer.AddPacket(dhcp_discover);
                NetworkStack.Update();

                DHCPAsked = true;
            }
        }
Exemple #22
0
        /// <summary>
        /// Send DNS Ask for Domain Name string
        /// </summary>
        /// <param name="url">Domain Name string.</param>
        public void SendAsk(string url)
        {
            Address source = IPConfig.FindNetwork(destination);

            queryurl = url;

            var askpacket = new DNSPacketAsk(source, destination, url);

            OutgoingBuffer.AddPacket(askpacket);

            NetworkStack.Update();
        }
        /// <summary>
        /// Send a packet to find the DHCP server and tell that we want a new IP address
        /// </summary>
        public static void SendDiscoverPacket()
        {
            NetworkStack.RemoveAllConfigIP();

            foreach (NetworkDevice networkDevice in NetworkDevice.Devices)
            {
                NetworkInit.Enable(networkDevice, new Network.IPV4.Address(0, 0, 0, 0), new Network.IPV4.Address(0, 0, 0, 0), new Network.IPV4.Address(0, 0, 0, 0));

                DHCPDiscover dhcp_discover = new DHCPDiscover(networkDevice.MACAddress);
                OutgoingBuffer.AddPacket(dhcp_discover);
                NetworkStack.Update();

                DHCPAsked = true;
            }
        }
Exemple #24
0
        /// <summary>
        /// Send a packet to the DHCP server to make the address available again
        /// </summary>
        public void SendReleasePacket()
        {
            foreach (NetworkDevice networkDevice in NetworkDevice.Devices)
            {
                Address source       = IPConfig.FindNetwork(DHCPServerAddress(networkDevice));
                var     dhcp_release = new DHCPRelease(source, DHCPServerAddress(networkDevice), networkDevice.MACAddress);

                OutgoingBuffer.AddPacket(dhcp_release);
                NetworkStack.Update();

                NetworkStack.RemoveAllConfigIP();

                IPConfig.Enable(networkDevice, new Address(0, 0, 0, 0), new Address(0, 0, 0, 0), new Address(0, 0, 0, 0));
            }
            Close();
        }
Exemple #25
0
        /*
         * Method called to applied the differents options received in the DHCP packet ACK
         **/
        /// <summary>
        /// Apply the new IP configuration received.
        /// </summary>
        /// <param name="Options">DHCPOption class using the packetData from the received dhcp packet.</param>
        /// <param name="message">Enable/Disable the displaying of messages about DHCP applying and conf. Disabled by default.
        /// </param>
        public static void Apply(DHCPAck packet, bool message = false)
        {
            NetworkStack.RemoveAllConfigIP();

            //cf. Roadmap. (have to change this, because some network interfaces are not configured in dhcp mode) [have to be done in 0.5.x]
            foreach (NetworkDevice networkDevice in NetworkDevice.Devices)
            {
                if (packet.Client.ToString() == null ||
                    packet.Client.ToString() == null ||
                    packet.Client.ToString() == null ||
                    packet.Client.ToString() == null)
                {
                    CustomConsole.WriteLineError("Parsing DHCP ACK Packet failed, can't apply network configuration.");
                }
                else
                {
                    if (message)
                    {
                        Console.WriteLine();
                        CustomConsole.WriteLineInfo("[DHCP ACK][" + networkDevice.Name + "] Packet received, applying IP configuration...");
                        CustomConsole.WriteLineInfo("   IP Address  : " + packet.Client.ToString());
                        CustomConsole.WriteLineInfo("   Subnet mask : " + packet.Subnet.ToString());
                        CustomConsole.WriteLineInfo("   Gateway     : " + packet.Server.ToString());
                        CustomConsole.WriteLineInfo("   DNS server  : " + packet.DNS.ToString());
                    }

                    Utils.Settings settings = new Utils.Settings(@"0:\System\" + networkDevice.Name + ".conf");
                    settings.EditValue("ipaddress", packet.Client.ToString());
                    settings.EditValue("subnet", packet.Subnet.ToString());
                    settings.EditValue("gateway", packet.Server.ToString());
                    settings.EditValue("dns01", packet.DNS.ToString());
                    settings.EditValue("dhcp_server", packet.Server.ToString());
                    settings.PushValues();

                    NetworkInit.Enable(networkDevice, packet.Client, packet.Subnet, packet.Server, packet.DNS);

                    if (message)
                    {
                        CustomConsole.WriteLineOK("[DHCP CONFIG][" + networkDevice.Name + "] IP configuration applied.");
                        Console.WriteLine();
                        DHCPAsked = false;
                    }
                }
            }

            Kernel.BeforeCommand();
        }
Exemple #26
0
        /// <summary>
        /// c = command, c_SystemInfomation
        /// </summary>
        public static void c_IPConfig(string cmd)
        {
            string[] args = cmd.Split(' ');

            if (args.Length == 1)
            {
                L.List_Translation.Ipconfig();
                return;
            }

            if (args[1] == "/release")
            {
                System.Network.DHCP.Core.SendReleasePacket();
            }
            else if (args[1] == "/set")
            {
                if (args.Length <= 3)
                {
                    Console.WriteLine("Usage : " + args[0] + " /set {interface} {IPv4} {Subnet} -g {Gateway} -d {PrimaryDNS}");
                    //ipconfig /set PCNETII 192.168.1.32 255.255.255.0 -g 192.168.1.254 -d 8.8.8.8
                }
                else
                {
                    if (NetworkInterfaces.Interface(args[2]) != "null")
                    {
                        Utils.Settings settings = new Utils.Settings(@"0:\System\" + NetworkInterfaces.Interface(args[2]) + ".conf");
                        NetworkStack.RemoveAllConfigIP();
                        ApplyIP(args, settings);
                        settings.Push();
                        NetworkInit.Enable();
                    }
                    else
                    {
                        Console.WriteLine("This interface doesn't exists.");
                    }
                }
            }
            else if (args[1] == "/renew")
            {
                System.Network.DHCP.Core.SendDiscoverPacket();
            }
            else
            {
                L.List_Translation.Ipconfig();
            }
        }
Exemple #27
0
        /// <summary>
        /// Send a packet to find the DHCP server and tell that we want a new IP address
        /// </summary>
        /// <returns>time value (-1 = timeout)</returns>
        public int SendDiscoverPacket()
        {
            NetworkStack.RemoveAllConfigIP();

            foreach (NetworkDevice networkDevice in NetworkDevice.Devices)
            {
                IPConfig.Enable(networkDevice, new Address(0, 0, 0, 0), new Address(0, 0, 0, 0), new Address(0, 0, 0, 0));

                var dhcp_discover = new DHCPDiscover(networkDevice.MACAddress);
                OutgoingBuffer.AddPacket(dhcp_discover);
                NetworkStack.Update();

                asked = true;
            }

            return(Receive());
        }
Exemple #28
0
 public bool Send(bool isdata)
 {
     Apps.System.Debugger.debugger.Send("Sending TCP packet...");
     if (isdata)
     {
         TCPPacket packet = new TCPPacket(source, dest, localPort, destPort, data, sequencenumber, acknowledgmentnb, 0x50, Flags, WSValue, 0x0000, false, false);
         OutgoingBuffer.AddPacket(packet);
     }
     else
     {
         TCPPacket packet = new TCPPacket(source, dest, localPort, destPort, data, sequencenumber, acknowledgmentnb, 0x50, Flags, WSValue, 0x0000, true, true);
         OutgoingBuffer.AddPacket(packet);
     }
     NetworkStack.Update();
     Apps.System.Debugger.debugger.Send("Sent!");
     return(true);
 }
Exemple #29
0
        /// <summary>
        /// CommandEcho
        /// </summary>
        /// <param name="arguments">Arguments</param>
        public override ReturnInfo Execute(List <string> arguments)
        {
            if (NetworkStack.ConfigEmpty())
            {
                return(new ReturnInfo(this, ReturnCode.ERROR, "No network configuration detected! Use ipconfig /set."));
            }
            if (arguments.Count == 0)
            {
                return(new ReturnInfo(this, ReturnCode.ERROR_ARG));
            }
            if (arguments[0] == "-l")
            {
                if (arguments.Count <= 1)
                {
                    return(new ReturnInfo(this, ReturnCode.ERROR_ARG));
                }
                int port = Int32.Parse(arguments[1]);
                Console.WriteLine("Listening at " + port + "...");
                new System.Network.IPV4.UDP.UdpClient(port);
                return(new ReturnInfo(this, ReturnCode.OK));
            }
            else if (arguments[0] == "-s")
            {
                if (arguments.Count <= 3)
                {
                    return(new ReturnInfo(this, ReturnCode.ERROR_ARG));
                }
                Address ip = Address.Parse(arguments[1]);

                int port = Int32.Parse(arguments[2]);

                string message = arguments[3];

                var xClient = new System.Network.IPV4.UDP.UdpClient(port);

                xClient.Connect(ip, port);
                xClient.Send(Encoding.ASCII.GetBytes(message));
                xClient.Close();
                return(new ReturnInfo(this, ReturnCode.OK));
            }
            else
            {
                return(new ReturnInfo(this, ReturnCode.ERROR_ARG));
            }
        }
 /// <summary>
 /// Check command availability to avoid unwanted behavior.
 /// </summary>
 /// <param name="command">Command</param>
 private static ReturnInfo CheckCommand(ICommand command)
 {
     if (command.Type == CommandType.Filesystem)
     {
         if (Kernel.ContainsVolumes() == false)
         {
             return(new ReturnInfo(command, ReturnCode.ERROR, "No volume detected!"));
         }
     }
     if (command.Type == CommandType.Network)
     {
         if (NetworkStack.ConfigEmpty())
         {
             return(new ReturnInfo(command, ReturnCode.ERROR, "No network configuration detected! Use ipconfig /set."));
         }
     }
     return(new ReturnInfo(command, ReturnCode.OK));
 }