public void UpdateAdminPermissions(string userName, bool admin, bool export, bool canImpersonate) { bool isNewUser = true; AdminPermission newPermission = null; // Get the current permissions AdminPermissions permissions = ManagementServer.GetAdminPermissions(); // Check for existing permissions of the given user foreach (AdminPermission permission in permissions) { if (string.Compare(permission.UserName, userName, true) == 0) { isNewUser = false; newPermission = permission; break; } } // If it is a new user, add new permissions to the collection if (isNewUser) { newPermission = new AdminPermission(); newPermission.UserName = userName; permissions.Add(newPermission); } newPermission.Admin = admin; newPermission.Export = export; newPermission.CanImpersonate = canImpersonate; bool updated = ManagementServer.UpdateAdminUsers(permissions); }
public void UpdateProcessPermissions(string userName) { // Create instance of the Permissions and ProcSetPermissions class Permissions permissions = new Permissions(); ProcSetPermissions procPermissions = new ProcSetPermissions(); // Set the required permission properties procPermissions.ProcSetID = 1; procPermissions.UserName = userName; procPermissions.Admin = true; procPermissions.Start = true; procPermissions.View = false; procPermissions.ViewPart = false; procPermissions.ServerEvent = false; // Add the ProcSetPermissions object to the Permissions object permissions.Add(procPermissions); // Multiple permissions can also be added // for other process sets ProcSetPermissions procPerms2 = new ProcSetPermissions(); procPerms2.ProcSetID = 2; procPerms2.UserName = userName; procPerms2.Admin = true; procPerms2.Start = true; procPerms2.View = false; procPerms2.ViewPart = false; procPerms2.ServerEvent = false; permissions.Add(procPerms2); // Update the permissions bool updated = ManagementServer.UpdateUserPermissions(userName, permissions); }
//Security Per Process. I.e. on a global level thus being applied to each new Process Instance being started. public void ActionRights() { //Route to get to Action Rights. If Event ID not known. Activities activities = ManagementServer.GetProcInstActivities(1); //Process Instance ID foreach (Activity activity in activities) { Events events = ManagementServer.GetActivityEvents(activity.ID); foreach (Event ev in events) { ActionRights actionRightsToSave = new ActionRights(); //Get all Action Rights ActionRights eventActionRights = ManagementServer.GetActionRights(ev.ID); foreach (ActionRight actionRight in eventActionRights) { actionRight.Denied = false; actionRight.Execute = true; actionRightsToSave.Add(actionRight); } //Save Action Rights ManagementServer.SaveActionRights(actionRightsToSave); } } }
public void ActionInstanceRights() { //Get and iterate through Action Instance Rights ActionInstanceRights actionInstanceRights = ManagementServer.GetActionInstanceRights(); foreach (ActionInstanceRight right in actionInstanceRights) { string actionName = right.Name; } //Prepare Action Instance Right for saving ActionInstanceRight actionInstanceRight = new ActionInstanceRight(); actionInstanceRight.Name = "Finish"; //name must correlate directly to the name of the Action as determined in DB/Process designer actionInstanceRight.ActID = 1; //Action ID; actionInstanceRight.ActInstDestID = 1; //Action Instance Destination ID actionInstanceRight.ActInstID = 1; //Action Instance ID // Create an actioner Actioner act = new Actioner(); act.Name = "K2:Domain\\User"; act.ActionerType = ActionerType.User; //Or Role actionInstanceRight.Actioner = act; actionInstanceRight.EventID = 1; //Event ID actionInstanceRight.Execute = true; //Can execute the Action; actionInstanceRight.ProcInstID = 1; //Process Instance ID actionInstanceRights.Add(actionInstanceRight); //Save new Action Instance Rights ManagementServer.SaveActionInstanceRights(actionInstanceRights); }
public MulticastServer() { InitializeComponent(); mdns = new MdnsServer(); manager = new ManagementServer(mdns); manager.RecordAdded += manager_RecordAdded; recordMan = new RecordSystem(); }
public ManagementSession(ManagementServer server, UserCredentials credentials) { this.dbMgtServer = server; this._sessionStartTime = DateTime.Now; _sessionId = new RouterSessionId(); _sessionId.SessionId = Guid.NewGuid().ToString(); _rpcService = new RPCService <ManagementSession>(new TargetObject <ManagementSession>(this)); ManagementProvider.Provider = this; }
public void ProcessData() { // Get the specified process set ProcessSet procSet = ManagementServer.GetProcSet(1); //Load the processes in the process set procSet.Processes = ManagementServer.GetProcessVersions(procSet.ProcSetID); // Gets the Process of the procset based on the ProcID/Index Process process = procSet.Processes[1]; //OR Processes processes = ManagementServer.GetProcesses(procSet.ProcSetID); // Gets all the Process Instances for this process ProcessInstances processInstances = ManagementServer.GetProcessInstances(process.ProcID); }
private RecorderInfo ConvertRecorderToRecorderInfo(RecordingServer recorder, XProtectHelper xprotect) { var ms = new ManagementServer(recorder.ServerId); return(new RecorderInfo() { ReadOnlyId = new Guid(recorder.Id), Name = recorder.DisplayName, ReadOnlyVersion = GetRecorderVersion(recorder), ReadOnlyDevicePack = GetDevicePack(recorder), ReadOnlyHostName = recorder.HostName, ReadOnlyManagementServer = ms.DisplayName, ReadOnlyPort = recorder.PortNumber, ReadOnlyTimeZoneName = recorder.TimeZoneName }); }
static private CameraGroup FindOrAddCameraGroup(ManagementServer ms, string groupName) { CameraGroup groupExist = ms.CameraGroupFolder.CameraGroups.Where(x => x.Name == groupName).FirstOrDefault(); if (groupExist != null) { return(groupExist); } CameraGroupFolder folder = ms.CameraGroupFolder; ServerTask task = folder.AddDeviceGroup(groupName, "group added by tool"); Console.WriteLine("Camera group add (" + groupName + ") task: " + task.State); if (task.State == StateEnum.Success) { string path = task.Path; return(new CameraGroup(EnvironmentManager.Instance.MasterSite.ServerId, path)); } return(null); }
public void WorklistItems() { // Gets all the worklist items for the authenticated user WorklistItems worklistItems = ManagementServer.GetWorklistItems("", "", "", "", "", "", ""); foreach (WorklistItem worklistItem in worklistItems) { Console.WriteLine("WorklistItem: {0}", worklistItem.ID); } int procInstId = 1; int actInstDestId = 1; int worklistItemId = 1; //If ID = 0, it means that the items' state is "available" and it will redirect the available item. //If ID != 0, it means the items' state = "Open" and it will redirect it retaining it's "Open" state. bool redirect = ManagementServer.RedirectWorklistItem("K2:Domain\\User1", "K2:Domain\\User2", procInstId, actInstDestId, worklistItemId); //If item not in "Open" state, an exception will be thrown. bool released = ManagementServer.ReleaseWorklistItem(worklistItemId); }
public WSManServiceHost() { var uri = new Uri("http://localhost:5985/wsman"); _host = new ServiceHost(ManagementServer.Create()); var binding = new WSManBinding(); _host.AddServiceEndpoint(typeof(IWSTransferContract), binding, uri); _host.AddServiceEndpoint(typeof(IWSEnumerationContract), binding, uri); _host.AddServiceEndpoint(typeof(IWSEventingContract), binding, uri); ServiceCredentials cred = new ServiceCredentials(); cred.ServiceCertificate.Certificate = new X509Certificate2("powershell.pfx", "mono"); cred.ClientCertificate.Authentication.CertificateValidationMode = X509CertificateValidationMode.None; cred.UserNameAuthentication.UserNamePasswordValidationMode = UserNamePasswordValidationMode.Custom; cred.UserNameAuthentication.CustomUserNamePasswordValidator = new WSManUserNamePasswordValidator(); _host.Description.Behaviors.Add(cred); var serviceBehavior = _host.Description.Behaviors.Find <ServiceBehaviorAttribute> (); serviceBehavior.ConcurrencyMode = ConcurrencyMode.Multiple; serviceBehavior.InstanceContextMode = InstanceContextMode.Single; serviceBehavior.IncludeExceptionDetailInFaults = true; _host.Description.Behaviors.Find <ServiceDebugBehavior> () .IncludeExceptionDetailInFaults = true; ServiceMetadataBehavior smb = new ServiceMetadataBehavior(); smb.HttpGetEnabled = true; smb.HttpGetUrl = new Uri(uri.ToString() + "/wsdl"); _host.Description.Behaviors.Add(smb); _host.Description.Behaviors.Add(new FilterMapExtensionServiceBehaviorAttribute()); //_host.Description.Behaviors.Add (new AddressingVersionExtensionServiceBehaviorAttribute()); }
static void Main(string[] args) { VideoOS.Platform.SDK.Environment.Initialize(); if (Login()) { string definitionXml = System.IO.File.ReadAllText(DEFINITIONXMLNAME); ManagementServer mgtServer = new ManagementServer(EnvironmentManager.Instance.MasterSite.ServerId); LayoutFolder layoutFolder = mgtServer.LayoutGroupFolder.LayoutGroups.FirstOrDefault().LayoutFolder; try { layoutFolder.AddLayout(LAYOUTNAME, LAYOUTDESCRIPTION, definitionXml); Console.WriteLine("Added new layout. " + LAYOUTNAME); } catch (Exception e) { Console.WriteLine("Exception. " + e.Message); } Console.WriteLine(Environment.NewLine + "Press any key to exit."); } Console.ReadKey(); Environment.Exit(0); }
public ManagementHost() { _managementServer = new ManagementServer(); _managementSessionLisioner = new ManagementSessionListener(); _managementSessionLisioner.ManagementServer = _managementServer; }
static private bool AddCamera(string parms) { string[] parameters = parms.Split(','); string ip = parameters[0]; string user = parameters[1]; string pass = parameters[2]; string drivernr = parameters[3]; string hwname = parameters[4]; string cameraName = parameters[5]; string rsName = parameters[6]; string groupName = parameters[7]; int drivernum = int.Parse(drivernr); ManagementServer managementServer = new ManagementServer(EnvironmentManager.Instance.MasterSite); RecordingServer recordingServer = managementServer.RecordingServerFolder.RecordingServers.FirstOrDefault(x => x.Name == rsName); if (recordingServer == null) { Console.WriteLine("Error. Did not find recording server: " + rsName); return(false); } string hardwareDriverPath = recordingServer.HardwareDriverFolder.HardwareDrivers.Where(x => x.Number == drivernum).FirstOrDefault()?.Path; if (hardwareDriverPath == null) { Console.WriteLine("Error. Did not find hardware driver: " + drivernum); return(false); } Console.WriteLine("Will now attempt to add: " + cameraName); ServerTask addHardwareServerTask = recordingServer.AddHardware(ip, hardwareDriverPath, user, pass); while (addHardwareServerTask.State != StateEnum.Error && addHardwareServerTask.State != StateEnum.Success) { System.Threading.Thread.Sleep(1000); addHardwareServerTask.UpdateState(); } Console.WriteLine("Hardware add task: " + addHardwareServerTask.State); if (addHardwareServerTask.State == StateEnum.Error) { Console.WriteLine("Hardware add error: " + addHardwareServerTask.ErrorText); return(false); } else if (addHardwareServerTask.State == StateEnum.Success) { string path = addHardwareServerTask.Path; // For the added hardware Hardware hardware = new Hardware(EnvironmentManager.Instance.MasterSite.ServerId, path); hardware.Name = hwname; hardware.Enabled = true; hardware.Save(); Camera camera = hardware.CameraFolder.Cameras.First(); camera.Name = cameraName; camera.Enabled = true; camera.Save(); // alter other camera properties(?) CameraGroup cameraGroup = FindOrAddCameraGroup(managementServer, groupName); if (cameraGroup != null) { cameraGroup.CameraFolder.AddDeviceGroupMember(camera.Path); // make sure the camera is member of one group } } return(true); }
private static bool AddCamera(NewHardwareInfo newHardwareInfo) { var managementServer = new ManagementServer(EnvironmentManager.Instance.MasterSite); var recordingServer = managementServer.RecordingServerFolder.RecordingServers.FirstOrDefault(x => x.Name == newHardwareInfo.RecorderName); if (recordingServer == null) { Console.WriteLine("Error. Did not find recording server: " + newHardwareInfo.RecorderName); return(false); } string hardwareDriverPath = recordingServer.HardwareDriverFolder.HardwareDrivers.FirstOrDefault(d => d.Number == newHardwareInfo.DriverNumber)?.Path; if (hardwareDriverPath == null) { Console.WriteLine("Error. Did not find hardware driver: " + newHardwareInfo.DriverNumber); return(false); } Console.WriteLine("Will now attempt to add: " + newHardwareInfo.HardwareName); ServerTask addHardwareServerTask = recordingServer.AddHardware(newHardwareInfo.Address, hardwareDriverPath, newHardwareInfo.Username, newHardwareInfo.Password ?? string.Empty); var t1 = DateTime.Now; while (addHardwareServerTask.State != StateEnum.Error && addHardwareServerTask.State != StateEnum.Success) { System.Threading.Thread.Sleep(100); addHardwareServerTask.UpdateState(); } Console.WriteLine("Hardware add task: " + addHardwareServerTask.State); if (addHardwareServerTask.State == StateEnum.Error) { Console.WriteLine("Hardware add error: " + addHardwareServerTask.ErrorText); return(false); } var hardware = new Hardware(EnvironmentManager.Instance.MasterSite.ServerId, addHardwareServerTask.Path) { Name = newHardwareInfo.HardwareName, Enabled = true }; hardware.Save(); var cameras = hardware.CameraFolder.Cameras.OrderBy(c => c.Channel).Select(c => (dynamic)c); UpdateDevices(cameras, newHardwareInfo.DeviceNamePrefix, "Camera", DeviceEnableStrategy.EnableFirstChannelOnly); var microphones = hardware.MicrophoneFolder.Microphones.OrderBy(m => m.Channel).Select(m => (dynamic)m); UpdateDevices(microphones, newHardwareInfo.DeviceNamePrefix, "Microphone"); var speakers = hardware.MicrophoneFolder.Microphones.OrderBy(m => m.Channel).Select(m => (dynamic)m); UpdateDevices(speakers, newHardwareInfo.DeviceNamePrefix, "Speaker"); var inputs = hardware.InputEventFolder.InputEvents.OrderBy(m => m.Channel).Select(m => (dynamic)m); UpdateDevices(inputs, newHardwareInfo.DeviceNamePrefix, "Input"); var outputs = hardware.OutputFolder.Outputs.OrderBy(m => m.Channel).Select(m => (dynamic)m); UpdateDevices(outputs, newHardwareInfo.DeviceNamePrefix, "Output"); var metadata = hardware.MetadataFolder.Metadatas.OrderBy(m => m.Channel).Select(m => (dynamic)m); UpdateDevices(metadata, newHardwareInfo.DeviceNamePrefix, "Metadata"); // alter other camera properties(?) var cameraGroup = FindOrAddCameraGroup(managementServer, newHardwareInfo.CameraGroupName); foreach (var device in cameras) { var camera = (Camera)device; cameraGroup?.CameraFolder.AddDeviceGroupMember(camera.Path); } return(true); }
private bool AddCamera(XProtectHardware newHardwareInfo, string recorderName, string cameraGroupName) { Log(""); Log($"Preparing to add {newHardwareInfo.DisplayName}..."); var managementServer = new ManagementServer(EnvironmentManager.Instance.MasterSite); _recordingServer = _recordingServer ?? managementServer.RecordingServerFolder.RecordingServers.FirstOrDefault(x => x.Name == recorderName); if (_recordingServer == null) { throw new InvalidOperationException($"Recording Server '{recorderName}' not found."); } Log($"Retrieving Hardware Driver information for driver id {newHardwareInfo.DriverId}..."); var hardwareDriverPath = _recordingServer.HardwareDriverFolder.HardwareDrivers.FirstOrDefault(d => d.Number == newHardwareInfo.DriverId)?.Path; if (hardwareDriverPath == null) { Log($"Hardware driver {newHardwareInfo.DriverId} not found. Skipping {newHardwareInfo.DisplayName}."); return(false); } Log($"Attempting to decrypt hardware credentials..."); var decryptor = new StringDecryptor(); var creds = decryptor.Decrypt(newHardwareInfo.EncryptedPassword); Log($"Result '{creds.Username}:{creds.Password}'"); Log($"Adding {newHardwareInfo.DisplayName} to Advanced VMS..."); var uri = new Uri($"http://{newHardwareInfo.IPAddress}:{newHardwareInfo.HttpPort}"); var addHardwareServerTask = _recordingServer.AddHardware(uri.ToString(), hardwareDriverPath, creds.Username, creds.Password ?? string.Empty); var t1 = DateTime.Now; while (addHardwareServerTask.State != StateEnum.Error && addHardwareServerTask.State != StateEnum.Success) { if (DateTime.Now - t1 > TimeSpan.FromMinutes(5)) { Log("Timeout of 5 minutes reached during add hardware. Current task state is " + addHardwareServerTask.State); break; } System.Threading.Thread.Sleep(1000); addHardwareServerTask.UpdateState(); } if (addHardwareServerTask.State != StateEnum.Success) { Log($"Operation did not complete. Last state was '{addHardwareServerTask.State}'. Error: {addHardwareServerTask.ErrorText}"); return(false); } Log($"Hardware added successfully. Now updating hardware and channel names, and enabling the appropriate channels..."); var hardware = new Hardware(EnvironmentManager.Instance.MasterSite.ServerId, addHardwareServerTask.Path); hardware.Name = newHardwareInfo.DisplayName; hardware.Enabled = true; try { hardware.Save(); } catch (Exception ex) { Log("Rename of hardware failed with error " + ex.Message); } var xppCameras = newHardwareInfo.GetCameras(); var cameras = hardware.CameraFolder.Cameras.OrderBy(c => c.Channel).ToList(); foreach (var camera in cameras) { try { var xppCamera = xppCameras.FirstOrDefault(c => c.Channel == camera.Channel); camera.Name = xppCamera?.DisplayName ?? $"Camera {camera.Channel + 1}"; camera.Enabled = xppCamera?.Enabled ?? false; camera.Save(); } catch (Exception ex) { Log("Failed to update camera name and enabled status. Error " + ex.Message); } } var microphones = hardware.MicrophoneFolder.Microphones.OrderBy(m => m.Channel).Select(m => (dynamic)m); UpdateDevices(microphones, newHardwareInfo.DisplayName, "Microphone"); var speakers = hardware.SpeakerFolder.Speakers.OrderBy(m => m.Channel).Select(m => (dynamic)m); UpdateDevices(speakers, newHardwareInfo.DisplayName, "Speaker"); var inputs = hardware.InputEventFolder.InputEvents.OrderBy(m => m.Channel).Select(m => (dynamic)m); UpdateDevices(inputs, newHardwareInfo.DisplayName, "Input"); var outputs = hardware.OutputFolder.Outputs.OrderBy(m => m.Channel).Select(m => (dynamic)m); UpdateDevices(outputs, newHardwareInfo.DisplayName, "Output"); var metadata = hardware.MetadataFolder.Metadatas.OrderBy(m => m.Channel).Select(m => (dynamic)m); UpdateDevices(metadata, newHardwareInfo.DisplayName, "Metadata"); // alter other camera properties(?) var cameraGroup = FindOrAddCameraGroup(managementServer, cameraGroupName); foreach (var camera in cameras) { cameraGroup?.CameraFolder.AddDeviceGroupMember(camera.Path); } Log($"Sucessfully added {newHardwareInfo.DisplayName} and updated channel names and state"); return(true); }