Example #1
0
        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);
        }
Example #2
0
        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);
        }
Example #3
0
        //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);
                }
            }
        }
Example #4
0
        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);
        }
Example #5
0
        public MulticastServer()
        {
            InitializeComponent();

            mdns                 = new MdnsServer();
            manager              = new ManagementServer(mdns);
            manager.RecordAdded += manager_RecordAdded;
            recordMan            = new RecordSystem();
        }
Example #6
0
 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;
 }
Example #7
0
        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);
        }
Example #10
0
        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);
        }
Example #11
0
        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());
        }
Example #12
0
        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);
        }
Example #13
0
 public ManagementHost()
 {
     _managementServer          = new ManagementServer();
     _managementSessionLisioner = new ManagementSessionListener();
     _managementSessionLisioner.ManagementServer = _managementServer;
 }
Example #14
0
        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);
        }