private static async void WebSocketClient_OnOpen() { try { Log.Information("WebSocketClient_OnOpen"); TokenUser user = null; while (user == null) { if (!string.IsNullOrEmpty(PluginConfig.tempjwt)) { user = await global.webSocketClient.Signin(PluginConfig.tempjwt); if (user != null) { if (isService) { PluginConfig.jwt = Base64Encode(PluginConfig.ProtectString(PluginConfig.tempjwt)); PluginConfig.tempjwt = null; Config.Save(); } Log.Information("Signed in as " + user.username); } } else if (PluginConfig.jwt != null && PluginConfig.jwt.Length > 0) { user = await global.webSocketClient.Signin(PluginConfig.UnprotectString(Base64Decode(PluginConfig.jwt))); if (user != null) { Log.Information("Signed in as " + user.username); } } else { Log.Error("Missing jwt from config, close down"); _ = global.webSocketClient.Close(); if (isService) { await manager.StopService(); } if (!isService) { Environment.Exit(0); } return; } } string computername = NativeMethods.GetHostName().ToLower(); string computerfqdn = NativeMethods.GetFQDN().ToLower(); var servers = await global.webSocketClient.Query <unattendedserver>("openrpa", "{'_type':'unattendedserver', 'computername':'" + computername + "', 'computerfqdn':'" + computerfqdn + "'}"); unattendedserver server = servers.FirstOrDefault(); if (servers.Length == 0) { Log.Information("Adding new unattendedserver for " + computerfqdn); server = new unattendedserver() { computername = computername, computerfqdn = computerfqdn, name = computerfqdn }; server = await global.webSocketClient.InsertOne("openrpa", 1, false, server); } //var clients = await global.webSocketClient.Query<unattendedclient>("openrpa", "{'_type':'unattendedclient', 'computername':'" + computername + "', 'computerfqdn':'" + computerfqdn + "'}"); //foreach (var c in clients) sessions.Add(new RobotUserSession(c)); // Log.Information("Loaded " + sessions.Count + " sessions"); // Create listener for robots to connect too PipeSecurity ps = new PipeSecurity(); ps.AddAccessRule(new PipeAccessRule("Users", PipeAccessRights.ReadWrite | PipeAccessRights.CreateNewInstance, System.Security.AccessControl.AccessControlType.Allow)); ps.AddAccessRule(new PipeAccessRule("CREATOR OWNER", PipeAccessRights.FullControl, System.Security.AccessControl.AccessControlType.Allow)); ps.AddAccessRule(new PipeAccessRule("SYSTEM", PipeAccessRights.FullControl, System.Security.AccessControl.AccessControlType.Allow)); pipe = new OpenRPA.NamedPipeWrapper.NamedPipeServer <RPAMessage>("openrpa_service", ps); pipe.ClientConnected += Pipe_ClientConnected; pipe.ClientMessage += Pipe_ClientMessage; pipe.Start(); if (reloadTimer == null) { reloadTimer = new System.Threading.Timer(o => { try { _ = ReloadConfig(); } catch (Exception ex) { Log.Error(ex.ToString()); } }, null, (int)PluginConfig.reloadinterval.TotalMilliseconds, (int)PluginConfig.reloadinterval.TotalMilliseconds); } } catch (Exception ex) { Log.Error(ex.ToString()); } }
private static async void WebSocketClient_OnOpen() { try { InitializeOTEL(); Log.Information("WebSocketClient_OnOpen"); TokenUser user = null; while (user == null) { if (!string.IsNullOrEmpty(PluginConfig.tempjwt)) { user = await global.webSocketClient.Signin(PluginConfig.tempjwt, "RDService", global.version); if (user != null) { if (isService) { PluginConfig.jwt = Base64Encode(PluginConfig.ProtectString(PluginConfig.tempjwt)); PluginConfig.tempjwt = null; PluginConfig.Save(); } Log.Information("Signed in as " + user.username); } } else if (PluginConfig.jwt != null && PluginConfig.jwt.Length > 0) { user = await global.webSocketClient.Signin(PluginConfig.UnprotectString(Base64Decode(PluginConfig.jwt)), "RDService", global.version); if (user != null) { Log.Information("Signed in as " + user.username); } } else { Log.Error("Missing jwt from config, close down"); _ = global.webSocketClient.Close(); if (isService) { await manager.StopService(); } if (!isService) { Environment.Exit(0); } return; } } string computername = NativeMethods.GetHostName().ToLower(); string computerfqdn = NativeMethods.GetFQDN().ToLower(); var servers = await global.webSocketClient.Query <unattendedserver>("openrpa", "{'_type':'unattendedserver', 'computername':'" + computername + "', 'computerfqdn':'" + computerfqdn + "'}"); server = servers.FirstOrDefault(); if (servers.Length == 0) { Log.Information("Adding new unattendedserver for " + computerfqdn); server = new unattendedserver() { computername = computername, computerfqdn = computerfqdn, name = computerfqdn, enabled = true }; server = await global.webSocketClient.InsertOne("openrpa", 1, false, server); } //var clients = await global.webSocketClient.Query<unattendedclient>("openrpa", "{'_type':'unattendedclient', 'computername':'" + computername + "', 'computerfqdn':'" + computerfqdn + "'}"); //foreach (var c in clients) sessions.Add(new RobotUserSession(c)); // Log.Information("Loaded " + sessions.Count + " sessions"); // Create listener for robots to connect too if (global.openflowconfig.supports_watch) { if (string.IsNullOrEmpty(openrpa_watchid)) { // "{'_type':'unattendedclient', 'computername':'" + computername + "', 'computerfqdn':'" + computerfqdn + "'}" // openrpa_watchid = await global.webSocketClient.Watch("openrpa", "[{ '$match': { 'fullDocument._type': {'computername':'" + computername + "', 'computerfqdn':'" + computerfqdn + "'} } }]", onWatchEvent); openrpa_watchid = await global.webSocketClient.Watch("openrpa", "[{ '$match': {'fullDocument.computername':'" + computername + "', 'fullDocument.computerfqdn':'" + computerfqdn + "'} }]", onWatchEvent); // openrpa_watchid = await global.webSocketClient.Watch("openrpa", "[]", onWatchEvent); await ReloadConfig(); } } else { if (reloadTimer == null) { reloadTimer = new System.Timers.Timer(PluginConfig.reloadinterval.TotalMilliseconds); reloadTimer.Elapsed += async(o, e) => { reloadTimer.Stop(); try { await ReloadConfig(); } catch (Exception ex) { Log.Error(ex.ToString()); } reloadTimer.Start(); }; } reloadTimer.Start(); } } catch (Exception ex) { Log.Error(ex.ToString()); } finally { } }