示例#1
0
        public ClientManager(string clientId, ProxyConfig proxyConfig)
        {
            this.clientId = clientId;
            clientOut     = new ClientOut(proxyConfig.targetIP, proxyConfig.targetPort, clientId);
            clientOut.ApplicationMessageReceived += onOutMessageReceived;
            clientOut.Connected += onConnected;

            clientIn = new ClientIn(proxyConfig.ownIP, proxyConfig.ownPort, clientId + "_fake");
            clientIn.ApplicationMessageReceived += onInMessageReceived;
            clientIn.Connected += onConnected;
        }
示例#2
0
        public Broker(ProxyConfig proxyConfig)
        {
            db  = new EzDatabase();
            wss = new WSServer(proxyConfig.ownIP);
            wss.Start();
            this.proxyConfig = proxyConfig;
            // Start a MQTT server.
            optionsBuilder = new MqttServerOptionsBuilder()
                             .WithConnectionBacklog(100)
                             .WithDefaultEndpointPort(proxyConfig.ownPort)
                             .WithDefaultEndpointBoundIPAddress(System.Net.IPAddress.Parse(proxyConfig.ownIP))
                             .WithApplicationMessageInterceptor(HandleMessage)
                             .WithSubscriptionInterceptor(HandleMessage)
                             .Build();

            mqttServer = new MqttFactory().CreateMqttServer();
            mqttServer.ClientConnected += MqttServer_ClientConnected;
        }
示例#3
0
        static void Main(string[] args)
        {
            /*args[0] = Dns.GetHostEntry(Dns.GetHostName())
             *  .AddressList
             *  .First(x => x.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
             *  .ToString();
             */
            List <String> arg = new List <string>();

            for (int i = 0; i < args.Length; i++)
            {
                arg.Add(args[0]);
            }
            if (arg.Count == 1)
            {
                arg.Add("1883");
                arg.Add("127.0.0.1");
                arg.Add("1883");
                arg.Add("80");
            }
            else if (arg.Count == 2)
            {
                arg.Add("127.0.0.1");
                arg.Add("1883");
                arg.Add("80");
            }
            else if (arg.Count == 4)
            {
                //do nothing everything is fine
            }
            else
            {
                Console.WriteLine("Usage:");
                Console.WriteLine("Minimal form (TargetPort: 1883, Proxy: 127.0.0.1:1883, Web|REST: 80)");
                Console.WriteLine("./MQTT-Proxy.exe <targetIP>");
                Console.WriteLine("Short form (Proxy will be: 127.0.0.1:1883, Web|REST: 80)");
                Console.WriteLine("./MQTT-Proxy.exe <targetIP> <targetPort>");
                Console.WriteLine("Full form");
                Console.WriteLine("./MQTT-Proxy.exe <targetIP> <targetPort> <ownIP> <ownPort> <Web|RESTPort>");
#if !DEBUG
                Console.WriteLine("Press any key to exit.");
                Console.ReadKey();
                return;
#endif
                //"String targetIP, int targetPort, String ownIP, int ownPort, WebRESTPort"
                arg.Add("192.169.178.120");
                arg.Add("1883");
                arg.Add("127.0.0.1");
                arg.Add("1883");
                arg.Add("80");
            }
            Console.WriteLine("Broker: " + arg[0] + ":" + arg[1]);
            Console.WriteLine("WebUI: " + arg[0] + ":" + int.Parse(arg[4]));

            ProxyConfig proxyConfig = new ProxyConfig(arg[0], int.Parse(arg[1]), arg[2], int.Parse(arg[3]));
            var         broker      = new Broker(proxyConfig);
            broker.Start();
            //DUMMY Data!!

            Random rnd = new Random();
            for (int i = 0; i < 10; i++)
            {
                MqttApplicationMessage msg = new MqttApplicationMessage();
                msg.QualityOfServiceLevel = MQTTnet.Protocol.MqttQualityOfServiceLevel.AtMostOnce;
                msg.Payload = Encoding.UTF8.GetBytes("Test" + rnd.Next(0, 1000));
                msg.Topic   = "Data/Test";
                msg.Retain  = false;
                if (i == 0)
                {
                    string clientId = "clientId";
                    Broker.db.messageList.Add(new MQTTProxyMessage(msg, clientId, MessageState.Intercepted));
                    Broker.clientManagers.Add(clientId, new ClientManager(clientId, proxyConfig));
                }
                else
                {
                    string clientId = "clientId" + rnd.Next(0, 1000);
                    Broker.db.messageList.Add(new MQTTProxyMessage(msg, clientId, MessageState.Intercepted));
                    Broker.clientManagers.Add(clientId, new ClientManager(clientId, proxyConfig));
                }
            }

            //END DUMMY Data!!

            var rest = new RestServer
            {
                Host         = arg[2],
                Port         = arg[4],
                PublicFolder = new PublicFolder("public"),
            };
            rest.Start();

            Console.WriteLine("Press any key to exit.");
            Console.ReadKey();
            return;
        }