示例#1
0
 private void StartWCFService()
 {
     try
     {
         wcfService = new WCF.WCFService();
         sHost      = new ServiceHost(wcfService);
         wcfService.MessageReceived += new EventHandler <WCF.CustomEventArgs>(wcfService_MessageReceived);
         sHost.Open();
     }
     catch (Exception ex)
     {
         logging.AddToLog("Error starting WCF service: " + ex.Message, true);
     }
 }
 private void StartWCFService()
 {
     try
     {
         wcfService = new WCF.WCFService();
         sHost = new ServiceHost(wcfService);
         wcfService.MessageReceived += new EventHandler<WCF.CustomEventArgs>(wcfService_MessageReceived);
         sHost.Open();
     }
     catch (Exception ex)
     {
         logging.AddToLog("Error starting WCF service: " + ex.Message, true);
     }
 }
        /// <summary>
        /// OnStart: Put startup code here
        ///  - Start threads, get inital data, etc.
        /// </summary>
        /// <param name="args"></param>
        protected override void OnStart(string[] args)
        {
            //#if (DEBUG)
            //            Debugger.Launch(); //<-- Simple form to debug a web services
            //#endif

            try
            {
                IPHostEntry ipEntry = Dns.GetHostByName(Common.ComputerName);
                IPAddress[] addr = ipEntry.AddressList;
                _computerIP = addr[0].ToString();

                System.IO.FileInfo file = new System.IO.FileInfo(Common.ApiPath + "/Logs/");
                file.Directory.Create();
                if (osae.GetObjectPropertyValue("SYSTEM", "Prune Logs").Value == "TRUE")
                {
                    string[] files = Directory.GetFiles(Common.ApiPath + "/Logs/");
                    foreach (string f in files)
                        File.Delete(f);
                }
                string[] stores = Directory.GetFiles(Common.ApiPath, "*.store", SearchOption.AllDirectories);
                foreach (string f in stores)
                    File.Delete(f);
            }
            catch (Exception ex)
            {
                logging.AddToLog("Error getting registry settings and/or deleting logs: " + ex.Message, true);
            }

            logging.AddToLog("OnStart", true);

            logging.AddToLog("Removing orphaned methods", true);

            try
            {
                using (MySqlConnection connection = new MySqlConnection(Common.ConnectionString))
                {
                    connection.Open();
                    MySqlCommand command = new MySqlCommand();
                    command.Connection = connection;
                    command.CommandText = "SET sql_safe_updates=0; DELETE FROM osae_method_queue;";
                    osae.RunQuery(command);
                }
            }
            catch (Exception ex)
            {
                logging.AddToLog("Error clearing method queue details: \r\n" + ex.Message, true);
            }

            logging.AddToLog("Creating Computer object", true);
            if (osae.GetObjectByName(osae.ComputerName) == null)
            {
                OSAEObject obj = osae.GetObjectByAddress(_computerIP);
                if (obj == null)
                {
                    osae.ObjectAdd(osae.ComputerName, osae.ComputerName, "COMPUTER", _computerIP, "", true);
                    osae.ObjectPropertySet(osae.ComputerName, "Host Name", osae.ComputerName);
                }
                else if (obj.Type == "COMPUTER")
                {
                    osae.ObjectUpdate(obj.Name, osae.ComputerName, obj.Description, "COMPUTER", _computerIP, obj.Container, obj.Enabled);
                    osae.ObjectPropertySet(osae.ComputerName, "Host Name", osae.ComputerName);
                }
                else
                {
                    osae.ObjectAdd(osae.ComputerName + "." + _computerIP, osae.ComputerName, "COMPUTER", _computerIP, "", true);
                    osae.ObjectPropertySet(osae.ComputerName + "." + _computerIP, "Host Name", osae.ComputerName);
                }
            }
            else
            {
                OSAEObject obj = osae.GetObjectByName(osae.ComputerName);
                osae.ObjectUpdate(obj.Name, obj.Name, obj.Description, "COMPUTER", _computerIP, obj.Container, obj.Enabled);
                osae.ObjectPropertySet(obj.Name, "Host Name", osae.ComputerName);
            }

            try
            {
                logging.AddToLog("Creating Service object", true);
                OSAEObject svcobj = osae.GetObjectByName("SERVICE-" + osae.ComputerName);
                if (svcobj == null)
                    osae.ObjectAdd("SERVICE-" + osae.ComputerName, "SERVICE-" + osae.ComputerName, "SERVICE", "", "SYSTEM", true);
                osae.ObjectStateSet("SERVICE-" + osae.ComputerName, "ON");
            }
            catch (Exception ex)
            {
                logging.AddToLog("Error creating service object - " + ex.Message, true);
            }

            try
            {
                serviceHost.Open();
            }
            catch (Exception ex)
            {
                logging.AddToLog("Error starting RESTful web service: " + ex.Message, true);
            }

            wcfService = new WCF.WCFService();
            sHost = new ServiceHost(wcfService);
            wcfService.MessageReceived += new EventHandler<WCF.CustomEventArgs>(wcfService_MessageReceived);
            try
            {
                sHost.Open();
            }
            catch (Exception ex)
            {
                logging.AddToLog("Error starting WCF service: " + ex.Message, true);
            }

            Thread QueryCommandQueueThread = new Thread(new ThreadStart(QueryCommandQueue));
            QueryCommandQueueThread.Start();

            updates.Interval = 86400000;
            updates.Enabled = true;
            updates.Elapsed += new ElapsedEventHandler(getPluginUpdates_tick);

            Thread loadPluginsThread = new Thread(new ThreadStart(LoadPlugins));
            loadPluginsThread.Start();

            //checkPlugins.Interval = 60000;
            //checkPlugins.Enabled = true;
            //checkPlugins.Elapsed += new ElapsedEventHandler(checkPlugins_tick);

            Thread updateThread = new Thread(() => getPluginUpdates());
            updateThread.Start();
        }
        /// <summary>
        /// OnStart: Put startup code here
        ///  - Start threads, get inital data, etc.
        /// </summary>
        /// <param name="args"></param>
        protected override void OnStart(string[] args)
        {
            //#if (DEBUG)
            //    Debugger.Launch(); //<-- Simple form to debug a web services
            //#endif

            try
            {
                osae.APIpath = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetModules()[0].FullyQualifiedName);
                IPHostEntry ipEntry = Dns.GetHostByName(osae.ComputerName);
                IPAddress[] addr    = ipEntry.AddressList;
                _computerIP = addr[0].ToString();

                System.IO.FileInfo file = new System.IO.FileInfo(osae.APIpath + "/Logs/");
                file.Directory.Create();
                if (osae.GetObjectPropertyValue("SYSTEM", "Prune Logs").Value == "TRUE")
                {
                    string[] files = Directory.GetFiles(osae.APIpath + "/Logs/");
                    foreach (string f in files)
                    {
                        File.Delete(f);
                    }
                }
                string[] stores = Directory.GetFiles(osae.APIpath, "*.store", SearchOption.AllDirectories);
                foreach (string f in stores)
                {
                    File.Delete(f);
                }
            }
            catch (Exception ex)
            {
                osae.AddToLog("Error getting registry settings and/or deleting logs: " + ex.Message, true);
            }

            osae.AddToLog("OnStart", true);
            osae.AddToLog("Removing orphaned methods", true);

            try
            {
                MySqlConnection connection = new MySqlConnection("SERVER=" + osae.DBConnection + ";" +
                                                                 "DATABASE=" + osae.DBName + ";" +
                                                                 "PORT=" + osae.DBPort + ";" +
                                                                 "UID=" + osae.DBUsername + ";" +
                                                                 "PASSWORD="******";");
                connection.Open();
                MySqlCommand command = new MySqlCommand();
                command.Connection  = connection;
                command.CommandText = "SET sql_safe_updates=0; DELETE FROM osae_method_queue;";
                osae.RunQuery(command);
                connection.Close();
            }
            catch (Exception ex)
            {
                osae.AddToLog("Error clearing method queue", true);
            }

            osae.AddToLog("Creating Computer object", true);
            if (osae.GetObjectByName(osae.ComputerName) == null)
            {
                OSAEObject obj = osae.GetObjectByAddress(_computerIP);
                if (obj == null)
                {
                    osae.ObjectAdd(osae.ComputerName, osae.ComputerName, "COMPUTER", _computerIP, "", true);
                    osae.ObjectPropertySet(osae.ComputerName, "Host Name", osae.ComputerName);
                }
                else if (obj.Type == "COMPUTER")
                {
                    osae.ObjectUpdate(obj.Name, osae.ComputerName, obj.Description, "COMPUTER", _computerIP, obj.Container, obj.Enabled);
                    osae.ObjectPropertySet(osae.ComputerName, "Host Name", osae.ComputerName);
                }
                else
                {
                    osae.ObjectAdd(osae.ComputerName + "." + _computerIP, osae.ComputerName, "COMPUTER", _computerIP, "", true);
                    osae.ObjectPropertySet(osae.ComputerName + "." + _computerIP, "Host Name", osae.ComputerName);
                }
            }
            else
            {
                OSAEObject obj = osae.GetObjectByName(osae.ComputerName);
                osae.ObjectUpdate(obj.Name, obj.Name, obj.Description, "COMPUTER", _computerIP, obj.Container, obj.Enabled);
                osae.ObjectPropertySet(obj.Name, "Host Name", osae.ComputerName);
            }

            try
            {
                osae.AddToLog("Creating Service object", true);
                OSAEObject svcobj = osae.GetObjectByName("SERVICE-" + osae.ComputerName);
                if (svcobj == null)
                {
                    osae.ObjectAdd("SERVICE-" + osae.ComputerName, "SERVICE-" + osae.ComputerName, "SERVICE", "", "SYSTEM", true);
                }
                osae.ObjectStateSet("SERVICE-" + osae.ComputerName, "ON");
            }
            catch (Exception ex)
            {
                osae.AddToLog("Error creating service object - " + ex.Message, true);
            }

            try
            {
                serviceHost.Open();
            }
            catch (Exception ex)
            {
                osae.AddToLog("Error starting RESTful web service: " + ex.Message, true);
            }

            wcfService = new WCF.WCFService();
            sHost      = new ServiceHost(wcfService);
            wcfService.MessageReceived += new EventHandler <WCF.CustomEventArgs>(wcfService_MessageReceived);
            try
            {
                sHost.Open();
            }
            catch (Exception ex)
            {
                osae.AddToLog("Error starting WCF service: " + ex.Message, true);
            }

            Thread QueryCommandQueueThread = new Thread(new ThreadStart(QueryCommandQueue));

            QueryCommandQueueThread.Start();

            updates.Interval = 86400000;
            updates.Enabled  = true;
            updates.Elapsed += new ElapsedEventHandler(getPluginUpdates_tick);

            Thread loadPluginsThread = new Thread(new ThreadStart(LoadPlugins));

            loadPluginsThread.Start();

            checkPlugins.Interval = 60000;
            checkPlugins.Enabled  = true;
            checkPlugins.Elapsed += new ElapsedEventHandler(checkPlugins_tick);

            Thread updateThread = new Thread(() => getPluginUpdates());

            updateThread.Start();
        }