Esempio n. 1
0
        void Save()
        {
            XmlData scoreFile=new XmlData(highscorePath, true);
            XmlNode root=scoreFile.AddRoot("xml");

            foreach(KeyValuePair<string, int> pair in userHighscore)
            {
                XmlNode score=scoreFile.AddElement(root, "Score");
                scoreFile.AddAttribute(score, "name", pair.Key);
                scoreFile.AddAttribute(score, "value", pair.Value);
            }

            scoreFile.Save();
        }
Esempio n. 2
0
        public static void Main(string[] args)
        {
            //Console
            Console.WriteLine("Initializing sensor...");

            //Load config
            XmlData config;

            try
            {
                config=new XmlData("sensor.xml");
            }
            catch(Exception e)
            {
                Console.WriteLine("Konfiguration konnte nicht gelesen werden.");
                Console.WriteLine(e.ToString());
                return;
            }

            bool miscCheckCertificates=Convert.ToBoolean(config.GetElementAsString("xml.misc.checkcertificates"));

            if(miscCheckCertificates==false)
            {
                //Disable certificate check
                ServicePointManager.ServerCertificateValidationCallback=delegate
                {
                    return true;
                };
            }

            bool verbose=Convert.ToBoolean(config.GetElementAsString("xml.misc.verbose"));

            string apiToken=config.GetElementAsString("xml.api.token");
            string apiUrl=config.GetElementAsString("xml.api.url");

            //EAPI Setup
            EAPI eAPI=new EAPI(apiUrl, apiToken);

            #region Network scan
            Console.WriteLine("Scan network...");

            //Scan network
            Dictionary<string, List<NetworkEntry>> networkScans=new Dictionary<string, List<NetworkEntry>>();
            List<XmlNode> networkSegments=config.GetElements("xml.network.segment");

            foreach(XmlNode node in networkSegments)
            {
                bool active=Convert.ToBoolean(node["active"].InnerText);
                if(!active) continue;

                string key=node.Attributes["key"].Value;
                Console.WriteLine("Scan network segment {0}...", key);

                //IP Ranges
                List<string> segmentIPRanges=new List<string>();
                foreach(XmlNode childNode in node.ChildNodes)
                {
                    if(childNode.LocalName=="iprange") segmentIPRanges.Add(childNode.InnerText);
                }

                //Scan ranges
                List<NetworkEntry> entries=new List<NetworkEntry>();

                foreach(string segmentIPRange in segmentIPRanges)
                {
                    NetworkScanner scanner=new NetworkScanner();

                    List<NetworkEntry> segmentEntries=scanner.GetNetworkInformation(segmentIPRange);
                    Console.WriteLine("Detected network devices in segment {0}/{1}: {2}", key, segmentIPRange, segmentEntries.Count);

                    if(verbose)
                    {
                        foreach(NetworkEntry networkEntry in segmentEntries)
                        {
                            Console.WriteLine("Detected network device: {0} / {1} ({2}, {3} ms)", networkEntry.IP, networkEntry.Hostname, networkEntry.Up?"online":"offline", networkEntry.RoundtripTime);
                        }
                    }

                    entries.AddRange(segmentEntries);
                }

                networkScans.Add(key, entries);
            }
            #endregion

            #region Detection
            Console.WriteLine("Start detection...");

            //Entity Detection
            int countEntities=0;

            bool entityDetection=Convert.ToBoolean(config.GetElementAsString("xml.detection.entity.active"));

            if(entityDetection)
            {
                Console.WriteLine("Start entity detection...");

                string sensorType=config.GetElementAsString("xml.detection.entity.sensortype");
                string networkSegment=config.GetElementAsString("xml.detection.entity.networksegment");
                int minimumCount=Convert.ToInt32(config.GetElementAsString("xml.detection.entity.minimumcount"));
                TimeSpan minimumTime=new TimeSpan(0, 0, Convert.ToInt32(config.GetElementAsString("xml.detection.entity.minimumtime")));

                long significantTimeAsLong=Convert.ToInt64(config.GetElementAsString("xml.detection.entity.significanttime"));
                DateTime significantTime=new DateTime(significantTimeAsLong);

                if(sensorType=="network")
                {
                    Console.WriteLine("Start entity detection with sensor type network...");

                    if(networkScans.ContainsKey(networkSegment))
                    {
                        List<NetworkEntry> segmentEntries=networkScans[networkSegment];

                        //Check if minimum count is reached
                        if(segmentEntries.Count>minimumCount)
                        {
                            if(significantTimeAsLong==0)
                            {
                                significantTime=DateTime.Now;
                                config.WriteElement("xml.detection.entity.significanttime", significantTime.Ticks.ToString());
                            }

                            //Check if minimum time is reached
                            if(DateTime.Now>significantTime+minimumTime)
                            {
                                countEntities=segmentEntries.Count;
                            }
                        }
                        else
                        {
                            config.WriteElement("xml.detection.entity.significanttime", "0");
                        }
                    }
                    else
                    {
                        Console.WriteLine("Network segment for detection not found.");
                    }
                }
            }
            #endregion

            #region API
            Console.WriteLine("Transfer sensor data to API...");

            //Write Network informations into API Database
            int countDevices=0;

            foreach(KeyValuePair<string, List<NetworkEntry>> pair in networkScans)
            {
                countDevices+=pair.Value.Count;
                eAPI.SetStatus(pair.Key, pair.Value.Count);
            }

            eAPI.SetStatus("devices", countDevices);

            //Write Entites
            eAPI.SetStatus("entities", countEntities);
            #endregion

            //set last run
            config.WriteElement("xml.misc.lastrun", DateTime.Now.Ticks.ToString());
            config.Save();
        }
Esempio n. 3
0
        public void Save(string filename, bool compressed=true)
        {
            XmlData fileData=new XmlData();

            #region Root speichern und Attribute anhängen
            XmlNode root=fileData.AddRoot("map");

            fileData.AddAttribute(root, "version", MapVersion);
            fileData.AddAttribute(root, "orientation", Orientation);

            fileData.AddAttribute(root, "width", Width);
            fileData.AddAttribute(root, "height", Height);

            fileData.AddAttribute(root, "tilewidth", TileWidth);
            fileData.AddAttribute(root, "tileheight", TileHeight);
            #endregion

            #region Properties speichern
            if(Properties.Count>0)
            {
                XmlNode properties=fileData.AddElement(root, "properties");

                foreach(Property prop in Properties)
                {
                    XmlNode propertyXml=fileData.AddElement(properties, "property");
                    fileData.AddAttribute(propertyXml, "name", prop.Name);
                    fileData.AddAttribute(propertyXml, "value", prop.Value);
                }
            }
            #endregion

            #region Tilesets
            foreach(TilesetData tileset in Tilesets)
            {
                XmlNode tilesetXml=fileData.AddElement(root, "tileset");
                fileData.AddAttribute(tilesetXml, "firstgid", tileset.firstgid);
                fileData.AddAttribute(tilesetXml, "name", tileset.name);
                fileData.AddAttribute(tilesetXml, "tilewidth", tileset.tilewidth);
                fileData.AddAttribute(tilesetXml, "tileheight", tileset.tileheight);

                XmlNode imageTag=fileData.AddElement(tilesetXml, "image");
                fileData.AddAttribute(imageTag, "source", tileset.imgsource);

                foreach(Tile tile in tileset.Tiles)
                {
                    XmlNode tileTag=fileData.AddElement(tilesetXml, "tile");
                    fileData.AddAttribute(tileTag, "id", tile.ID);

                    if(tile.Properties.Count>0)
                    {
                        XmlNode properties=fileData.AddElement(tileTag, "properties");

                        foreach(Property prop in tile.Properties)
                        {
                            XmlNode propertyXml=fileData.AddElement(properties, "property");
                            fileData.AddAttribute(propertyXml, "name", prop.Name);
                            fileData.AddAttribute(propertyXml, "value", prop.Value);
                        }
                    }
                }

            }
            #endregion

            #region Layer
            foreach(LayerData layer in Layers)
            {
                XmlNode layerXml=fileData.AddElement(root, "layer");
                fileData.AddAttribute(layerXml, "name", layer.name);
                fileData.AddAttribute(layerXml, "width", layer.width);
                fileData.AddAttribute(layerXml, "height", layer.height);

                XmlNode dataTag=fileData.AddElement(layerXml, "data", ConvertLayerDataToString(layer, compressed));
                fileData.AddAttribute(dataTag, "encoding", "base64");

                if(compressed)
                {
                    fileData.AddAttribute(dataTag, "compression", "gzip");
                }
            }
            #endregion

            #region Objectlayer
            foreach(Objectgroup objGroup in ObjectLayers)
            {
                XmlNode objGroupXml=fileData.AddElement(root, "objectgroup");
                fileData.AddAttribute(objGroupXml, "name", objGroup.Name);
                fileData.AddAttribute(objGroupXml, "width", objGroup.Width);
                fileData.AddAttribute(objGroupXml, "height", objGroup.Height);
                fileData.AddAttribute(objGroupXml, "x", objGroup.X);
                fileData.AddAttribute(objGroupXml, "y", objGroup.Y);

                foreach(Object obj in objGroup.Objects)
                {
                    XmlNode objXml=fileData.AddElement(objGroupXml, "object");
                    fileData.AddAttribute(objXml, "name", obj.Name);
                    fileData.AddAttribute(objXml, "type", obj.Type);
                    fileData.AddAttribute(objXml, "x", obj.X);
                    fileData.AddAttribute(objXml, "y", obj.Y);
                    fileData.AddAttribute(objXml, "width", obj.Width);
                    fileData.AddAttribute(objXml, "height", obj.Height);

                    XmlNode objPropertiesXml=fileData.AddElement(objXml, "properties");

                    foreach(Property objProp in obj.Properties)
                    {
                        XmlNode propertyXml=fileData.AddElement(objPropertiesXml, "property");
                        fileData.AddAttribute(propertyXml, "name", objProp.Name);
                        fileData.AddAttribute(propertyXml, "value", objProp.Value);
                    }
                }
            }
            #endregion

            fileData.Save(filename);
        }