static void Main(string[] args) { if (args.Length > 0) { OSAE.OSAE osacl = new OSAE.OSAE("OSACL"); string pattern = osacl.MatchPattern(args[0]); osacl.AddToLog("Processing command: " + args[0] + ", Pattern: " + pattern, true); if (pattern != "") { osacl.MethodQueueAdd("Script Processor", "NAMED SCRIPT", pattern, ""); } } else { ServiceBase.Run(new ClientService()); } }
/// <summary> /// Adds a message to the log /// </summary> /// <param name="audit"></param> /// <param name="alwaysLog"></param> public void AddToLog(string audit, bool alwaysLog) { try { OSAE osae = new OSAE(string.Empty); if (osae.GetObjectPropertyValue("SYSTEM", "Debug").Value == "TRUE" || alwaysLog) { lock (logLocker) { string filePath = Common.ApiPath + "/Logs/" + callingProcess + ".log"; System.IO.FileInfo file = new System.IO.FileInfo(filePath); file.Directory.Create(); StreamWriter sw = File.AppendText(filePath); sw.WriteLine(System.DateTime.Now.ToString("MM/dd/yyyy hh:mm:ss.fff tt") + " - " + audit); sw.Close(); if (osae.GetObjectPropertyValue("SYSTEM", "Prune Logs").Value == "TRUE") { if (file.Length > 1000000) file.Delete(); } } } } catch (Exception ex) { lock (logLocker) { string filePath = Common.ApiPath + "/Logs/" + callingProcess + ".log"; System.IO.FileInfo file = new System.IO.FileInfo(filePath); file.Directory.Create(); StreamWriter sw = File.AppendText(filePath); sw.WriteLine(System.DateTime.Now.ToString("MM/dd/yyyy hh:mm:ss.fff tt") + " - LOGGING ERROR: " + ex.Message + " - " + ex.InnerException); sw.Close(); if (file.Length > 1000000) file.Delete(); } } }
static void Main(string[] args) { if (args.Length > 0) { OSAE.OSAE osacl = new OSAE.OSAE("OSACL"); string pattern = osacl.MatchPattern(args[0]); osacl.AddToLog("Processing command: " + args[0] + ", Pattern: " + pattern, true); if (pattern != "") osacl.MethodQueueAdd("Script Processor", "NAMED SCRIPT", pattern, ""); } else { ServiceBase.Run(new ClientService()); } }
/// <summary> /// Add an entry to the degug table /// </summary> /// <param name="entry">String to add to the debug table</param> public void DebugLogAdd(string entry) { try { using (MySqlCommand command = new MySqlCommand()) { OSAE osae = new OSAE(string.Empty); command.CommandText = "CALL osae_sp_debug_log_add (@Entry,@Process)"; command.Parameters.AddWithValue("@Entry", entry); command.Parameters.AddWithValue("@Process", callingProcess); osae.RunQuery(command); } } catch { // Not a lot we can do if it fails here } }
/// <summary> /// Deletes everything from the event_log table /// </summary> public void EventLogClear() { using (MySqlCommand command = new MySqlCommand()) { command.CommandText = "CALL osae_sp_event_log_clear"; try { OSAE osae = new OSAE(string.Empty); osae.RunQuery(command); } catch (Exception ex) { AddToLog("API - EventLogClear error: " + command.CommandText + " - error: " + ex.Message, true); } } }
/// <summary> /// Add an entry to the event log table /// </summary> /// <param name="objectName">Object Name</param> /// <param name="eventName">Event Name</param> public void EventLogAdd(string objectName, string eventName, string parameter1 = null, string parameter2 = null) { using (MySqlCommand command = new MySqlCommand()) { OSAE osae = new OSAE(string.Empty); command.CommandText = "CALL osae_sp_event_log_add (@ObjectName, @EventName, @FromObject, @DebugInfo, @Param1, @Param2)"; command.Parameters.AddWithValue("@ObjectName", objectName); command.Parameters.AddWithValue("@EventName", eventName); command.Parameters.AddWithValue("@FromObject", osae.GetPluginName(callingProcess, Common.ComputerName)); command.Parameters.AddWithValue("@DebugInfo", null); command.Parameters.AddWithValue("@Param1", parameter1); command.Parameters.AddWithValue("@Param2", parameter2); try { osae.RunQuery(command); } catch (Exception ex) { AddToLog("API - EventLogAdd error: " + command.CommandText + " - error: " + ex.Message, true); } } }
private void updateObjectCoordsStateImg(OSAE.OSAEObject obj, string state, string X, string Y) { OSAEObjectPropertyManager.ObjectPropertySet(obj.Name, state + " X", X, "GUI"); OSAEObjectPropertyManager.ObjectPropertySet(obj.Name, state + " Y", Y, "GUI"); obj.Property(state + " X").Value = X; obj.Property(state + " Y").Value = Y; }
private void LoadControl(OSAE.OSAEObject obj) { this.Dispatcher.Invoke((Action)(() => { String sStateMatch = ""; #region CONTROL STATE IMAGE if (obj.Type == "CONTROL STATE IMAGE") { StateImage stateImageControl = new StateImage(obj); foreach (OSAE.OSAEObjectProperty p in obj.Properties) { try { if (p.Value.ToLower() == stateImageControl.CurState.ToLower()) { sStateMatch = p.Name.Substring(0, p.Name.LastIndexOf(' ')); } } catch (Exception ex) { Log.Error("Error finding object ", ex); return; } } try { int dZ = Int32.Parse(obj.Property("ZOrder").Value); stateImageControl.MouseRightButtonDown += new MouseButtonEventHandler(State_Image_MouseRightButtonDown); stateImageControl.Location.X = Double.Parse(obj.Property(sStateMatch + " X").Value); stateImageControl.Location.Y = Double.Parse(obj.Property(sStateMatch + " Y").Value); double dOpacity = Convert.ToDouble(stateImageControl.LightLevel) / 100.00; //Opacity is new and unknow in 044 stateImageControl.Opacity = dOpacity; canGUI.Children.Add(stateImageControl); Canvas.SetLeft(stateImageControl, stateImageControl.Location.X); Canvas.SetTop(stateImageControl, stateImageControl.Location.Y); Canvas.SetZIndex(stateImageControl, dZ); stateImages.Add(stateImageControl); controlTypes.Add(typeof(StateImage)); stateImageControl.PreviewMouseMove += new MouseEventHandler(DragSource_PreviewMouseMove); } catch (Exception ex) { this.Log.Error("Error updating screenObject", ex); return; } } #endregion #region CONTROL PROPERTY LABEL else if (obj.Type == "CONTROL PROPERTY LABEL") { this.Log.Debug("Loading PropertyLabelControl: " + obj.Name); try { PropertyLabel pl = new PropertyLabel(obj); pl.MouseRightButtonDown += new MouseButtonEventHandler(Property_Label_MouseRightButtonDown); canGUI.Children.Add(pl); int dZ = Int32.Parse(obj.Property("ZOrder").Value); pl.Location.X = Double.Parse(obj.Property("X").Value); pl.Location.Y = Double.Parse(obj.Property("Y").Value); Canvas.SetLeft(pl, pl.Location.X); Canvas.SetTop(pl, pl.Location.Y); Canvas.SetZIndex(pl, dZ); propLabels.Add(pl); controlTypes.Add(typeof(PropertyLabel)); pl.PreviewMouseMove += new MouseEventHandler(DragSource_PreviewMouseMove); } catch (Exception ex) { this.Log.Error("Error updating PropertyLabelControl", ex); return; } } #endregion #region CONTROL STATIC LABEL else if (obj.Type == "CONTROL STATIC LABEL") { this.Log.Debug("Loading PropertyLabelControl: " + obj.Name); try { OSAE.UI.Controls.StaticLabel sl = new OSAE.UI.Controls.StaticLabel(obj); canGUI.Children.Add(sl); int dZ = Int32.Parse(obj.Property("ZOrder").Value); sl.Location.X = Double.Parse(obj.Property("X").Value); sl.Location.Y = Double.Parse(obj.Property("Y").Value); Canvas.SetLeft(sl, sl.Location.X); Canvas.SetTop(sl, sl.Location.Y); Canvas.SetZIndex(sl, dZ); staticLabels.Add(sl); controlTypes.Add(typeof(OSAE.UI.Controls.StaticLabel)); sl.PreviewMouseMove += new MouseEventHandler(DragSource_PreviewMouseMove); } catch (Exception ex) { this.Log.Error("Error updating PropertyLabelControl", ex); return; } } #endregion #region CONTROL TIMER LABEL else if (obj.Type == "CONTROL TIMER LABEL") { this.Log.Debug("Loading PropertyTimerControl: " + obj.Name); try { OSAE.UI.Controls.TimerLabel tl = new OSAE.UI.Controls.TimerLabel(obj); tl.MouseRightButtonDown += new MouseButtonEventHandler(Timer_Label_MouseRightButtonDown); canGUI.Children.Add(tl); int dZ = Int32.Parse(obj.Property("ZOrder").Value); tl.Location.X = Double.Parse(obj.Property("X").Value); tl.Location.Y = Double.Parse(obj.Property("Y").Value); Canvas.SetLeft(tl, tl.Location.X); Canvas.SetTop(tl, tl.Location.Y); Canvas.SetZIndex(tl, dZ); timerLabels.Add(tl); controlTypes.Add(typeof(OSAE.UI.Controls.TimerLabel)); tl.PreviewMouseMove += new MouseEventHandler(DragSource_PreviewMouseMove); } catch (Exception ex) { this.Log.Error("Error updating PropertyTimerControl", ex); return; } } #endregion #region CONTROL CLICK IMAGE else if (obj.Type == "CONTROL CLICK IMAGE") { try { ClickImage ClickImageControl = new ClickImage(obj); ClickImageControl.MouseRightButtonDown += new MouseButtonEventHandler(Click_Image_MouseRightButtonDown); canGUI.Children.Add(ClickImageControl); OSAE.OSAEObjectProperty pZOrder = obj.Property("ZOrder"); OSAE.OSAEObjectProperty pX = obj.Property("X"); OSAE.OSAEObjectProperty pY = obj.Property("Y"); Double dX = Convert.ToDouble(pX.Value); Canvas.SetLeft(ClickImageControl, dX); Double dY = Convert.ToDouble(pY.Value); Canvas.SetTop(ClickImageControl, dY); int dZ = Convert.ToInt32(pZOrder.Value); Canvas.SetZIndex(ClickImageControl, dZ); ClickImageControl.Location.X = dX; ClickImageControl.Location.Y = dY; clickImages.Add(ClickImageControl); controlTypes.Add(typeof(ClickImage)); ClickImageControl.PreviewMouseMove += new MouseEventHandler(DragSource_PreviewMouseMove); } catch (MySqlException myerror) { MessageBox.Show("GUI Error Load Click Image: " + myerror.Message); } } #endregion #region CONTROL NAVIGATION IMAGE else if (obj.Type == "CONTROL NAVIGATION IMAGE") { try { NavigationImage navImageControl = new NavigationImage(obj.Property("Screen").Value, obj); navImageControl.MouseLeftButtonUp += new MouseButtonEventHandler(Navigaton_Image_MouseLeftButtonUp); navImageControl.MouseRightButtonDown += new MouseButtonEventHandler(Navigaton_Image_MouseRightButtonDown); canGUI.Children.Add(navImageControl); OSAE.OSAEObjectProperty pZOrder = obj.Property("ZOrder"); OSAE.OSAEObjectProperty pX = obj.Property("X"); OSAE.OSAEObjectProperty pY = obj.Property("Y"); Double dX = Convert.ToDouble(pX.Value); Canvas.SetLeft(navImageControl, dX); Double dY = Convert.ToDouble(pY.Value); Canvas.SetTop(navImageControl, dY); int dZ = Convert.ToInt32(pZOrder.Value); Canvas.SetZIndex(navImageControl, dZ); navImageControl.Location.X = dX; navImageControl.Location.Y = dY; navImages.Add(navImageControl); controlTypes.Add(typeof(NavigationImage)); navImageControl.PreviewMouseMove += new MouseEventHandler(DragSource_PreviewMouseMove); } catch (MySqlException myerror) { MessageBox.Show("GUI Error Load Navigation Image: " + myerror.Message); } } #endregion #region CONTROL CAMERA VIEWER else if (obj.Type == "CONTROL CAMERA VIEWER") { try { string stream = OSAEObjectPropertyManager.GetObjectPropertyValue(obj.Property("Object Name").Value, "Stream Address").Value; VideoStreamViewer vsv = new VideoStreamViewer(stream, obj); canGUI.Children.Add(vsv); OSAE.OSAEObjectProperty pZOrder = obj.Property("ZOrder"); OSAE.OSAEObjectProperty pX = obj.Property("X"); OSAE.OSAEObjectProperty pY = obj.Property("Y"); Double dX = Convert.ToDouble(pX.Value); Canvas.SetLeft(vsv, dX); Double dY = Convert.ToDouble(pY.Value); Canvas.SetTop(vsv, dY); int dZ = Convert.ToInt32(pZOrder.Value); Canvas.SetZIndex(vsv, dZ); vsv.Location.X = dX; vsv.Location.Y = dY; cameraViewers.Add(vsv); controlTypes.Add(typeof(VideoStreamViewer)); vsv.PreviewMouseMove += new MouseEventHandler(DragSource_PreviewMouseMove); } catch (MySqlException myerror) { MessageBox.Show("GUI Error Load Camera Viewer: " + myerror.Message); } } #endregion #region USER CONTROL else if (obj.BaseType == "USER CONTROL") { string sUCType = obj.Property("Control Type").Value; sUCType = sUCType.Replace("USER CONTROL ", ""); OSAE.Types.AvailablePlugin selectedPlugin = GlobalUserControls.OSAEUserControls.AvailablePlugins.Find(sUCType); selectedPlugin.Instance.InitializeMainCtrl(obj); UserControl ucC = new UserControl(); dynamic uc = new UserControl(); uc = selectedPlugin.Instance.mainCtrl; uc.MouseRightButtonDown += new MouseButtonEventHandler(UserControl_MouseRightButtonDown); canGUI.Children.Add(uc); OSAE.OSAEObjectProperty pZOrder = obj.Property("ZOrder"); OSAE.OSAEObjectProperty pX = obj.Property("X"); OSAE.OSAEObjectProperty pY = obj.Property("Y"); Double dX = Convert.ToDouble(pX.Value); Canvas.SetLeft(uc, dX); Double dY = Convert.ToDouble(pY.Value); Canvas.SetTop(uc, dY); int dZ = Convert.ToInt32(pZOrder.Value); Canvas.SetZIndex(uc, dZ); uc.Location.X = dX; uc.Location.Y = dY; userControls.Add(uc); //controlTypes.Add(uc.GetType()); controlTypes.Add(typeof(UserControl)); uc.PreviewMouseMove += new MouseEventHandler(DragSource_PreviewMouseMove); } #endregion #region CONTROL BROWSER else if (obj.Type == "CONTROL BROWSER") { this.Log.Debug("Loading BrowserControl: " + obj.Name); try { OSAE.UI.Controls.BrowserFrame bf = new OSAE.UI.Controls.BrowserFrame(obj); bf.MouseRightButtonDown += new MouseButtonEventHandler(Broswer_Control_MouseRightButtonDown); //OSAE.UI.Controls.StaticLabel sl = new OSAE.UI.Controls.StaticLabel(obj); canGUI.Children.Add(bf); int dZ = Int32.Parse(obj.Property("ZOrder").Value); bf.Location.X = Double.Parse(obj.Property("X").Value); bf.Location.Y = Double.Parse(obj.Property("Y").Value); bf.Width = Double.Parse(obj.Property("Width").Value); bf.Height = Double.Parse(obj.Property("Height").Value); Canvas.SetLeft(bf, bf.Location.X); Canvas.SetTop(bf, bf.Location.Y); Canvas.SetZIndex(bf, dZ); browserFrames.Add(bf); controlTypes.Add(typeof(OSAE.UI.Controls.BrowserFrame)); // bf.PreviewMouseMove += new MouseEventHandler(DragSource_PreviewMouseMove); } catch (Exception ex) { this.Log.Error("Error updating BrowserControl", ex); return; } } #endregion })); }
private void LoadControl(OSAE.OSAEObject obj) { this.Dispatcher.Invoke((Action)(() => { String sStateMatch = ""; #region CONTROL STATE IMAGE if (obj.Type == "CONTROL STATE IMAGE") { StateImage stateImageControl = new StateImage(obj); foreach (OSAE.OSAEObjectProperty p in obj.Properties) { if (p.Value.ToLower() == stateImageControl.CurState.ToLower()) { sStateMatch = p.Name.Substring(0, p.Name.LastIndexOf(' ')); } } int dZ = Int32.Parse(obj.Property("ZOrder").Value); stateImageControl.Location.X = Double.Parse(obj.Property(sStateMatch + " X").Value); stateImageControl.Location.Y = Double.Parse(obj.Property(sStateMatch + " Y").Value); canGUI.Children.Add(stateImageControl); Canvas.SetLeft(stateImageControl, stateImageControl.Location.X); Canvas.SetTop(stateImageControl, stateImageControl.Location.Y); Canvas.SetZIndex(stateImageControl, dZ); stateImages.Add(stateImageControl); controlTypes.Add(typeof(StateImage)); stateImageControl.PreviewMouseMove += new MouseEventHandler(DragSource_PreviewMouseMove); } #endregion #region CONTROL PROPERTY LABEL else if (obj.Type == "CONTROL PROPERTY LABEL") { logging.AddToLog("Loading PropertyLabelControl: " + obj.Name, false); PropertyLabel pl = new PropertyLabel(obj); canGUI.Children.Add(pl); int dZ = Int32.Parse(obj.Property("ZOrder").Value); pl.Location.X = Double.Parse(obj.Property("X").Value); pl.Location.Y = Double.Parse(obj.Property("Y").Value); Canvas.SetLeft(pl, pl.Location.X); Canvas.SetTop(pl, pl.Location.Y); Canvas.SetZIndex(pl, dZ); propLabels.Add(pl); controlTypes.Add(typeof(PropertyLabel)); pl.PreviewMouseMove += new MouseEventHandler(DragSource_PreviewMouseMove); } #endregion #region CONTROL STATIC LABEL else if (obj.Type == "CONTROL STATIC LABEL") { logging.AddToLog("Loading PropertyLabelControl: " + obj.Name, false); OSAE.UI.Controls.StaticLabel sl = new OSAE.UI.Controls.StaticLabel(obj); canGUI.Children.Add(sl); int dZ = Int32.Parse(obj.Property("ZOrder").Value); sl.Location.X = Double.Parse(obj.Property("X").Value); sl.Location.Y = Double.Parse(obj.Property("Y").Value); Canvas.SetLeft(sl, sl.Location.X); Canvas.SetTop(sl, sl.Location.Y); Canvas.SetZIndex(sl, dZ); staticLabels.Add(sl); controlTypes.Add(typeof(OSAE.UI.Controls.StaticLabel)); sl.PreviewMouseMove += new MouseEventHandler(DragSource_PreviewMouseMove); } #endregion #region CONTROL TIMER LABEL else if (obj.Type == "CONTROL TIMER LABEL") { logging.AddToLog("Loading PropertyLabelControl: " + obj.Name, false); OSAE.UI.Controls.TimerLabel tl = new OSAE.UI.Controls.TimerLabel(obj); canGUI.Children.Add(tl); int dZ = Int32.Parse(obj.Property("ZOrder").Value); tl.Location.X = Double.Parse(obj.Property("X").Value); tl.Location.Y = Double.Parse(obj.Property("Y").Value); Canvas.SetLeft(tl, tl.Location.X); Canvas.SetTop(tl, tl.Location.Y); Canvas.SetZIndex(tl, dZ); timerLabels.Add(tl); controlTypes.Add(typeof(OSAE.UI.Controls.TimerLabel)); tl.PreviewMouseMove += new MouseEventHandler(DragSource_PreviewMouseMove); } #endregion #region CONTROL METHOD IMAGE else if (obj.Type == "CONTROL METHOD IMAGE") { try { MethodImage methodImageControl = new MethodImage(obj); canGUI.Children.Add(methodImageControl); OSAE.OSAEObjectProperty pZOrder = obj.Property("ZOrder"); OSAE.OSAEObjectProperty pX = obj.Property("X"); OSAE.OSAEObjectProperty pY = obj.Property("Y"); Double dX = Convert.ToDouble(pX.Value); Canvas.SetLeft(methodImageControl, dX); Double dY = Convert.ToDouble(pY.Value); Canvas.SetTop(methodImageControl, dY); int dZ = Convert.ToInt32(pZOrder.Value); Canvas.SetZIndex(methodImageControl, dZ); methodImageControl.Location.X = dX; methodImageControl.Location.Y = dY; methodImages.Add(methodImageControl); controlTypes.Add(typeof(MethodImage)); methodImageControl.PreviewMouseMove += new MouseEventHandler(DragSource_PreviewMouseMove); } catch (MySqlException myerror) { MessageBox.Show("GUI Error Load Navigation Image: " + myerror.Message); } } #endregion #region CONTROL NAVIGATION IMAGE else if (obj.Type == "CONTROL NAVIGATION IMAGE") { try { NavigationImage navImageControl = new NavigationImage(obj.Property("Screen").Value, obj); navImageControl.MouseLeftButtonUp += new MouseButtonEventHandler(Navigaton_Image_MouseLeftButtonUp); canGUI.Children.Add(navImageControl); OSAE.OSAEObjectProperty pZOrder = obj.Property("ZOrder"); OSAE.OSAEObjectProperty pX = obj.Property("X"); OSAE.OSAEObjectProperty pY = obj.Property("Y"); Double dX = Convert.ToDouble(pX.Value); Canvas.SetLeft(navImageControl, dX); Double dY = Convert.ToDouble(pY.Value); Canvas.SetTop(navImageControl, dY); int dZ = Convert.ToInt32(pZOrder.Value); Canvas.SetZIndex(navImageControl, dZ); navImageControl.Location.X = dX; navImageControl.Location.Y = dY; navImages.Add(navImageControl); controlTypes.Add(typeof(NavigationImage)); navImageControl.PreviewMouseMove += new MouseEventHandler(DragSource_PreviewMouseMove); } catch (MySqlException myerror) { MessageBox.Show("GUI Error Load Navigation Image: " + myerror.Message); } } #endregion #region CONTROL CAMERA VIEWER else if (obj.Type == "CONTROL CAMERA VIEWER") { try { string stream = OSAEObjectPropertyManager.GetObjectPropertyValue(obj.Property("Object Name").Value, "Stream Address").Value; VideoStreamViewer vsv = new VideoStreamViewer(stream, obj); canGUI.Children.Add(vsv); OSAE.OSAEObjectProperty pZOrder = obj.Property("ZOrder"); OSAE.OSAEObjectProperty pX = obj.Property("X"); OSAE.OSAEObjectProperty pY = obj.Property("Y"); Double dX = Convert.ToDouble(pX.Value); Canvas.SetLeft(vsv, dX); Double dY = Convert.ToDouble(pY.Value); Canvas.SetTop(vsv, dY); int dZ = Convert.ToInt32(pZOrder.Value); Canvas.SetZIndex(vsv, dZ); vsv.Location.X = dX; vsv.Location.Y = dY; cameraViewers.Add(vsv); controlTypes.Add(typeof(VideoStreamViewer)); vsv.PreviewMouseMove += new MouseEventHandler(DragSource_PreviewMouseMove); } catch (MySqlException myerror) { MessageBox.Show("GUI Error Load Camera Viewer: " + myerror.Message); } } #endregion #region USER CONTROL else if (obj.Type == "USER CONTROL") { string sUCType = obj.Property("Control Type").Value; if (sUCType == "USER CONTROL WEATHER") { Weather wc = new Weather(obj); canGUI.Children.Add(wc); OSAE.OSAEObjectProperty pZOrder = obj.Property("ZOrder"); OSAE.OSAEObjectProperty pX = obj.Property("X"); OSAE.OSAEObjectProperty pY = obj.Property("Y"); Double dX = Convert.ToDouble(pX.Value); Canvas.SetLeft(wc, dX); Double dY = Convert.ToDouble(pY.Value); Canvas.SetTop(wc, dY); int dZ = Convert.ToInt32(pZOrder.Value); Canvas.SetZIndex(wc, dZ); wc.Location.X = dX; wc.Location.Y = dY; userControls.Add(wc); controlTypes.Add(typeof(Weather)); wc.PreviewMouseMove += new MouseEventHandler(DragSource_PreviewMouseMove); } } #endregion })); }
/// <summary> /// This method is involked to initialize the actual UserControl screen before displaying. /// NO alteration or additions are required. /// This must be implemented. /// </summary> public abstract void InitializeMainCtrl(OSAE.OSAEObject obj);
private void Window_Loaded(object sender, RoutedEventArgs e) { //imgUpdate.Source = (ImageSource)FindResource("upgrade.png"); // Test the connection to the DB is valid before we start else the UI will // hang when it tries to connect if (!Common.TestConnection()) { MessageBox.Show("The OSA DB could not be contacted, Please ensure the correct address is specified and the DB is available"); return; } // don't initialise this until we know we can get a connection osae = new OSAE("Manager_WPF"); loadPlugins(); if (connectToService()) { Thread thread = new Thread(() => messageHost(WCFServiceReference.OSAEWCFMessageType.CONNECT, "connected")); thread.Start(); } try { myService.ServiceName = "OSAE"; string svcStatus = myService.Status.ToString(); if (svcStatus == "Running") { lbl_isRunning.Content = "RUNNING"; btnService.Content = "Stop"; } else if (svcStatus == "Stopped") { lbl_isRunning.Content = "STOPPED"; btnService.Content = "Start"; } } catch { try { myService.ServiceName = "OSAE Client"; string svcStatus = myService.Status.ToString(); if (svcStatus == "Running") { lbl_isRunning.Content = "RUNNING"; btnService.Content = "Stop"; } else if (svcStatus == "Stopped") { lbl_isRunning.Content = "STOPPED"; btnService.Content = "Start"; } } catch { lbl_isRunning.Content = "NOT INSTALLED"; btnService.IsEnabled = false; } } Clock.Interval = 1000; Clock.Elapsed += new System.Timers.ElapsedEventHandler(CheckService); Clock.Start(); //dgLocalPlugins.SelectedIndex = 0; }
private void updateObjectCoords(OSAE.OSAEObject obj, string X, string Y) { OSAEObjectPropertyManager.ObjectPropertySet(obj.Name, "X", X, gCurrentUser); OSAEObjectPropertyManager.ObjectPropertySet(obj.Name, "Y", Y, gCurrentUser); obj.Property("X").Value = X; obj.Property("Y").Value = Y; }
public static bool InstallPlugin(string PluginPackagePath, ref string ErrorText) { OSAE osae = new OSAE("Plugin Installer"); Logging logging = new Logging("Plugin Installer"); string exePath = Path.GetDirectoryName(Application.ExecutablePath); if (Directory.Exists(exePath + "/tempDir/")) { Directory.Delete(exePath + "/tempDir/", true); } PluginDescription desc = new PluginDescription(); string tempfolder = exePath + "/tempDir/"; string zipFileName = Path.GetFullPath(PluginPackagePath); string DescPath = null; bool NoError = true; FastZip fastZip = new FastZip(); //try //{ fastZip.ExtractZip(zipFileName, tempfolder, null); // find all included plugin descriptions and install the plugins List<string> osapdFiles = new List<string>(); List<string> sqlFiles = new List<string>(); string[] pluginFile = Directory.GetFiles(tempfolder, "*.osapd", SearchOption.TopDirectoryOnly); osapdFiles.AddRange(pluginFile); string[] sqlFile = Directory.GetFiles(tempfolder, "*.sql", SearchOption.TopDirectoryOnly); sqlFiles.AddRange(sqlFile); if (osapdFiles.Count == 0) { MessageBox.Show("No plugin description files found."); return false; } if (osapdFiles.Count > 1) { MessageBox.Show("More than one plugin description file found."); return false; } if (osapdFiles.Count == 1) { DescPath = osapdFiles[0]; } if (!string.IsNullOrEmpty(DescPath)) { desc.Deserialize(DescPath); //NoError = desc.VerifyInstall(ref ErrorText); //uninstall previous plugin and delete the folder bool u = UninstallPlugin(desc); // get the plugin folder path string pluginFolder = desc.Path; if (!string.IsNullOrEmpty(pluginFolder)) //only extract valid plugins { //Directory.CreateDirectory(exePath + "/Plugins/" + pluginFolder); string[] files = System.IO.Directory.GetFiles(tempfolder); // Copy the files and overwrite destination files if they already exist. //foreach (string s in files) //{ // string fileName = System.IO.Path.GetFileName(s); // if (desc.AdditionalAssemblies.Contains(fileName)) // { // string destFile = System.IO.Path.Combine(exePath + "/", fileName); // System.IO.File.Copy(s, destFile, true); // } //} string ConnectionString = string.Format("Uid={0};Pwd={1};Server={2};Port={3};Database={4};allow user variables=true", osae.DBUsername, osae.DBPassword, osae.DBConnection, osae.DBPort, osae.DBName); MySql.Data.MySqlClient.MySqlConnection connection = new MySql.Data.MySqlClient.MySqlConnection(ConnectionString); connection.Open(); foreach (string s in sqlFile) { try { MySql.Data.MySqlClient.MySqlScript script = new MySql.Data.MySqlClient.MySqlScript(connection,File.ReadAllText(s)); script.Execute(); } catch (Exception ex) { logging.AddToLog("Error running sql script: " + s + " | " + ex.Message, true); } } System.IO.Directory.Move(tempfolder, exePath + "/Plugins/" + pluginFolder); //Check if we are running a x64 bit architecture (This is a silly way to do it since I am not sure if every 64 bit machine has this directory...) bool is64bit = Environment.Is64BitOperatingSystem; //Do a check for any x64 assemblies, and prompt the user to install them if they are running a 64 bit machine if (is64bit && (desc.x64Assemblies.Count > 0)) { /* x64 assemblies generally have the same name as their x32 counterparts when referenced by the OSA app * however they are packaged as "filename.ext.x64" so we will replace the 32bit file which is installed by * default with the 64bit versioin with the same filename.ext */ if (MessageBox.Show( "You are running an x64 architecture and this plugin has specific assemblies built for 64bit machines." + " It is highly recommended that you install the 64bit versions to ensure proper compatibility", "Install 64bit Assemblies?", MessageBoxButtons.YesNo) == DialogResult.Yes) { //Install the 64bit assemblies over the 32 bit ones... string[] x64files = System.IO.Directory.GetFiles(exePath + "/Plugins/" + pluginFolder, "*.x64"); foreach (string str in x64files) { string destFile = System.IO.Path.Combine(exePath + "/Plugins/" + pluginFolder + "/", System.IO.Path.GetFileNameWithoutExtension(str)); //Copy it to the new destination overwriting the old file if it exists System.IO.File.Copy(str, destFile, true); } } } //Delete all the files with .x64 extensions since they aren't needed anymore string[] delfiles = System.IO.Directory.GetFiles(exePath + "/Plugins/" + pluginFolder, "*.x64"); foreach (string str in delfiles) System.IO.File.Delete(str); logging.AddToLog("Sending message to service to load plugin.", true); using (MySql.Data.MySqlClient.MySqlCommand command = new MySql.Data.MySqlClient.MySqlCommand()) { command.CommandText = "CALL osae_sp_method_queue_add (@pobject,@pmethod,@pparameter1,@pparameter2,@pfromobject,@pdebuginfo);"; command.Parameters.AddWithValue("@pobject", "SERVICE-" + osae.ComputerName); command.Parameters.AddWithValue("@pmethod", "LOAD PLUGIN"); command.Parameters.AddWithValue("@pparameter1", ""); command.Parameters.AddWithValue("@pparameter2", ""); command.Parameters.AddWithValue("@pfromobject", ""); command.Parameters.AddWithValue("@pdebuginfo", ""); try { osae.RunQuery(command); } catch (Exception ex) { logging.AddToLog("Error adding LOAD PLUGIN method: " + command.CommandText + " - error: " + ex.Message, true); } } } } //} //catch (Exception ex) //{ // MessageBox.Show("catch: " + ex.Message); // return false; //} if (Directory.Exists(exePath + "/tempDir/")) { deleteFolder(exePath + "/tempDir/"); } osae.MethodQueueAdd("SERVICE-" + osae.ComputerName, "RELOAD PLUGINS", "", ""); return NoError; }