Пример #1
0
 public DocumentServiceHelper(
     IDaoFactory daoFactory,
     FileShareLink fileShareLink,
     UserManager userManager,
     AuthContext authContext,
     FileSecurity fileSecurity,
     SetupInfo setupInfo,
     FileUtility fileUtility,
     MachinePseudoKeys machinePseudoKeys,
     Global global,
     DocumentServiceConnector documentServiceConnector,
     LockerManager lockerManager,
     IServiceProvider serviceProvider)
 {
     DaoFactory               = daoFactory;
     FileShareLink            = fileShareLink;
     UserManager              = userManager;
     AuthContext              = authContext;
     FileSecurity             = fileSecurity;
     SetupInfo                = setupInfo;
     FileUtility              = fileUtility;
     MachinePseudoKeys        = machinePseudoKeys;
     Global                   = global;
     DocumentServiceConnector = documentServiceConnector;
     LockerManager            = lockerManager;
     ServiceProvider          = serviceProvider;
 }
Пример #2
0
 public void AddNotification(LockerManager from, Notification notification)
 {
     if (!Notifications.ContainsKey(from))
     {
         Notifications[from] = new List <Notification>();
     }
     Notifications[from].Add(notification);
 }
        public void PickUpBox_When_BoxNumberIsNotValid_Should_ThrowException()
        {
            LockerManager lockerMgr = new LockerManager();

            lockerMgr.PlaceBox(new Box());
            Exception ex = Assert.Throws <Exception>(() => lockerMgr.PickUpBox(String.Empty));

            Assert.Equal("Box number is not valid", ex.Message);
        }
        public void PickUpBox_When_BoxNotAvailable_Should_ThrowException()
        {
            LockerManager lockerMgr = new LockerManager();

            lockerMgr.PlaceBox(new Box());
            Exception ex = Assert.Throws <Exception>(() => lockerMgr.PickUpBox(Guid.NewGuid().ToString()));

            Assert.Equal("Box is not available", ex.Message);
        }
        public void PlaceBox_When_SlotOfBoxSizeNotAvailable_Should_PlaceBoxAtHigherSizeSlotAvailable()
        {
            LockerManager lockerMgr = new LockerManager();

            Assert.Equal(4, lockerMgr.SlotsAvailable);
            lockerMgr.PlaceBox(new Box(Size.Small));
            lockerMgr.PlaceBox(new Box(Size.Medium));
            lockerMgr.PlaceBox(new Box(Size.Large));
            Assert.Equal(1, lockerMgr.SlotsAvailable);
            Assert.Equal(3, lockerMgr.SlotsOccupied);
            lockerMgr.PlaceBox(new Box(Size.Small));
            Assert.Equal(4, lockerMgr.SlotsOccupied);
        }
        public void PickUpBox_When_BoxNumberIsValid_Should_ReturnBoxAndAddEmptySlotBackToAvailableSlotsBucket()
        {
            LockerManager lockerMgr = new LockerManager();
            Box           box       = new Box();
            string        boxNumber = box.ID;

            lockerMgr.PlaceBox(box);
            Assert.Equal(3, lockerMgr.SlotsAvailable);
            Assert.Equal(1, lockerMgr.SlotsOccupied);
            Assert.Equal(boxNumber, lockerMgr.PickUpBox(boxNumber).ID);
            Assert.Equal(4, lockerMgr.SlotsAvailable);
            Assert.Equal(0, lockerMgr.SlotsOccupied);
        }
 /// <summary>
 ///   Initialization information for gateway service.
 ///</summary>
 public TestGatewayService(MemberInfo memberInfo)
 {
     MemberInfo    = memberInfo;
     HttpHandler   = new HttpHandlerHelper(MemberInfo.UriString);
     TokenResponse = ServiceInvoke.InitAsync(MemberInfo, HttpHandler);
     if (TokenResponse.StatusCode == 200)
     {
         LockerManager = new LockerManager(MemberInfo.ConfigurationPath);
     }
     if (LockerManager != null)
     {
         ScannerInit = ScannerServiceHelper.Start(LockerManager);
     }
 }
        public void PlaceBox_When_NoAvailableSlots_Should_ThrowException()
        {
            LockerManager lockerMgr = new LockerManager();

            Assert.Equal(4, lockerMgr.SlotsAvailable);
            lockerMgr.PlaceBox(new Box(Size.Small));
            lockerMgr.PlaceBox(new Box(Size.Medium));
            lockerMgr.PlaceBox(new Box(Size.Large));
            lockerMgr.PlaceBox(new Box(Size.ExtraLarge));
            Assert.Equal(0, lockerMgr.SlotsAvailable);
            Assert.Equal(4, lockerMgr.SlotsOccupied);
            Exception ex = Assert.Throws <Exception>(() => lockerMgr.PlaceBox(new Box(Size.Small)));

            Assert.Equal("No slots available", ex.Message);
        }
 /// <summary>
 /// Start socket client by connecting and registering event.
 /// </summary>
 /// <returns>
 ///  Gets the sucess result with bool type true.
 /// </returns>
 public static bool Start(LockerManager _lockerManager)
 {
     try
     {
         _client = new SocketClientInvoke(_lockerManager.LockerConfiguration.Socket.Server, _lockerManager.LockerConfiguration.Socket.Port);
         _client.Connect();
         _lockerManager.RegisterScannerEvent(SendDataOnSocket);
         return(true);
     }
     catch (Exception ex)
     {
         Log.Error("[Scanner Service Helper][Start]" + "[" + ex + "]");
         return(false);
     }
 }
Пример #10
0
 public GameController(LockerManager lockerManager,
                       ILogger <GameController> logger,
                       IGameService gameService,
                       IUserService userService,
                       GetBetsRequestBuilder getBetsRequestBuilder,
                       SpinRequestBuilder spinRequestBuilder,
                       BonusGameRequestBuilder bonusGameRequestBuilder)
 {
     this.lockerManager           = lockerManager;
     this.logger                  = logger;
     this.gameService             = gameService;
     this.userService             = userService;
     this.getBetsRequestBuilder   = getBetsRequestBuilder;
     this.spinRequestBuilder      = spinRequestBuilder;
     this.bonusGameRequestBuilder = bonusGameRequestBuilder;
 }
Пример #11
0
        private void buttonConfigLocker_Click(object sender, EventArgs e)
        {
            string configurationPath = txtConfigurationFile.Text;

            // Socket Scanner
            Task.Run(() => StartSocketListener());

            _lockerManager = new LockerManager(configurationPath);
            if (_lockerManager != null)
            {
                _isConfigured     = true;
                btnSubmit.Enabled = true;
            }
            var hcStatus = _lockerManager.PortHealthCheckStatus();

            bStatusCOM1.BackColor = hcStatus["locker"] ? System.Drawing.Color.LimeGreen : System.Drawing.Color.Salmon;
            bStatusCOM1.Text      = "locker";
            bStatusCOM2.BackColor = hcStatus["detection"] ? System.Drawing.Color.LimeGreen : System.Drawing.Color.Salmon;
            bStatusCOM2.Text      = "detection";
            bStatusCOM4.BackColor = hcStatus["scanner"] ? System.Drawing.Color.LimeGreen : System.Drawing.Color.Salmon;
            bStatusCOM4.Text      = "scanner";
        }
Пример #12
0
        public File <T> GetParams <T>(File <T> file, bool lastVersion, FileShare linkRight, bool rightToRename, bool rightToEdit, bool editPossible, bool tryEdit, bool tryCoauth, out Configuration <T> configuration)
        {
            if (file == null)
            {
                throw new FileNotFoundException(FilesCommonResource.ErrorMassage_FileNotFound);
            }
            if (!string.IsNullOrEmpty(file.Error))
            {
                throw new Exception(file.Error);
            }

            var rightToReview  = rightToEdit;
            var reviewPossible = editPossible;

            var rightToFillForms  = rightToEdit;
            var fillFormsPossible = editPossible;

            var rightToComment  = rightToEdit;
            var commentPossible = editPossible;

            var rightModifyFilter = rightToEdit;

            if (linkRight == FileShare.Restrict && UserManager.GetUsers(AuthContext.CurrentAccount.ID).IsVisitor(UserManager))
            {
                rightToEdit      = false;
                rightToReview    = false;
                rightToFillForms = false;
                rightToComment   = false;
            }

            var fileSecurity = FileSecurity;

            rightToEdit = rightToEdit &&
                          (linkRight == FileShare.ReadWrite || linkRight == FileShare.CustomFilter ||
                           fileSecurity.CanEdit(file) || fileSecurity.CanCustomFilterEdit(file));
            if (editPossible && !rightToEdit)
            {
                editPossible = false;
            }

            rightModifyFilter = rightModifyFilter &&
                                (linkRight == FileShare.ReadWrite ||
                                 fileSecurity.CanEdit(file));

            rightToRename = rightToRename && rightToEdit && fileSecurity.CanEdit(file);

            rightToReview = rightToReview &&
                            (linkRight == FileShare.Review || linkRight == FileShare.ReadWrite ||
                             fileSecurity.CanReview(file));
            if (reviewPossible && !rightToReview)
            {
                reviewPossible = false;
            }

            rightToFillForms = rightToFillForms &&
                               (linkRight == FileShare.FillForms || linkRight == FileShare.Review || linkRight == FileShare.ReadWrite ||
                                fileSecurity.CanFillForms(file));
            if (fillFormsPossible && !rightToFillForms)
            {
                fillFormsPossible = false;
            }

            rightToComment = rightToComment &&
                             (linkRight == FileShare.Comment || linkRight == FileShare.Review || linkRight == FileShare.ReadWrite ||
                              fileSecurity.CanComment(file));
            if (commentPossible && !rightToComment)
            {
                commentPossible = false;
            }

            if (linkRight == FileShare.Restrict &&
                !(editPossible || reviewPossible || fillFormsPossible || commentPossible) &&
                !fileSecurity.CanRead(file))
            {
                throw new SecurityException(FilesCommonResource.ErrorMassage_SecurityException_ReadFile);
            }

            if (file.RootFolderType == FolderType.TRASH)
            {
                throw new Exception(FilesCommonResource.ErrorMassage_ViewTrashItem);
            }

            if (file.ContentLength > SetupInfo.AvailableFileSize)
            {
                throw new Exception(string.Format(FilesCommonResource.ErrorMassage_FileSizeEdit, FileSizeComment.FilesSizeToString(SetupInfo.AvailableFileSize)));
            }

            string strError = null;

            if ((editPossible || reviewPossible || fillFormsPossible || commentPossible) &&
                LockerManager.FileLockedForMe(file.ID))
            {
                if (tryEdit)
                {
                    strError = FilesCommonResource.ErrorMassage_LockedFile;
                }
                rightToRename    = false;
                rightToEdit      = editPossible = false;
                rightToReview    = reviewPossible = false;
                rightToFillForms = fillFormsPossible = false;
                rightToComment   = commentPossible = false;
            }

            if (editPossible &&
                !FileUtility.CanWebEdit(file.Title))
            {
                rightToEdit = editPossible = false;
            }

            if (file.Encrypted &&
                file.RootFolderType != FolderType.Privacy)
            {
                rightToEdit      = editPossible = false;
                rightToReview    = reviewPossible = false;
                rightToFillForms = fillFormsPossible = false;
                rightToComment   = commentPossible = false;
            }


            if (!editPossible && !FileUtility.CanWebView(file.Title))
            {
                throw new Exception(string.Format("{0} ({1})", FilesCommonResource.ErrorMassage_NotSupportedFormat, FileUtility.GetFileExtension(file.Title)));
            }

            if (reviewPossible &&
                !FileUtility.CanWebReview(file.Title))
            {
                rightToReview = reviewPossible = false;
            }

            if (fillFormsPossible &&
                !FileUtility.CanWebRestrictedEditing(file.Title))
            {
                rightToFillForms = fillFormsPossible = false;
            }

            if (commentPossible &&
                !FileUtility.CanWebComment(file.Title))
            {
                rightToComment = commentPossible = false;
            }

            var rightChangeHistory = rightToEdit && !file.Encrypted;

            if (FileTracker.IsEditing(file.ID))
            {
                rightChangeHistory = false;

                bool coauth;
                if ((editPossible || reviewPossible || fillFormsPossible || commentPossible) &&
                    tryCoauth &&
                    (!(coauth = FileUtility.CanCoAuhtoring(file.Title)) || FileTracker.IsEditingAlone(file.ID)))
                {
                    if (tryEdit)
                    {
                        var editingBy = FileTracker.GetEditingBy(file.ID).FirstOrDefault();
                        strError = string.Format(!coauth
                                                     ? FilesCommonResource.ErrorMassage_EditingCoauth
                                                     : FilesCommonResource.ErrorMassage_EditingMobile,
                                                 Global.GetUserName(editingBy, true));
                    }
                    rightToEdit = editPossible = reviewPossible = fillFormsPossible = commentPossible = false;
                }
            }

            var fileStable = file;

            if (lastVersion && file.Forcesave != ForcesaveType.None && tryEdit)
            {
                var fileDao = DaoFactory.GetFileDao <T>();
                fileStable = fileDao.GetFileStable(file.ID, file.Version);
            }

            var docKey    = GetDocKey(fileStable);
            var modeWrite = (editPossible || reviewPossible || fillFormsPossible || commentPossible) && tryEdit;

            configuration = new Configuration <T>(file, ServiceProvider)
            {
                Document =
                {
                    Key         = docKey,
                    Permissions =
                    {
                        Edit          = rightToEdit && lastVersion,
                        Rename        = rightToRename && lastVersion && !file.ProviderEntry,
                        Review        = rightToReview && lastVersion,
                        FillForms     = rightToFillForms && lastVersion,
                        Comment       = rightToComment && lastVersion,
                        ChangeHistory = rightChangeHistory,
                        ModifyFilter  = rightModifyFilter
                    }
                },
                EditorConfig =
                {
                    ModeWrite = modeWrite,
                },
                ErrorMessage = strError,
            };

            if (!lastVersion)
            {
                configuration.Document.Title += string.Format(" ({0})", file.CreateOnString);
            }

            return(file);
        }
Пример #13
0
        public static bool Prefix(PlayerInteract __instance, int lockerId, int chamberNumber)
        {
            if (!__instance._playerInteractRateLimit.CanExecute(true) || (__instance._hc.CufferId > 0 && !__instance.CanDisarmedInteract))
            {
                return(false);
            }
            LockerManager singleton = LockerManager.singleton;

            if (lockerId < 0 || lockerId >= singleton.lockers.Length)
            {
                return(false);
            }
            if (!__instance.ChckDis(singleton.lockers[lockerId].gameObject.position) || !singleton.lockers[lockerId].supportsStandarizedAnimation)
            {
                return(false);
            }
            if (chamberNumber < 0 || chamberNumber >= singleton.lockers[lockerId].chambers.Length)
            {
                return(false);
            }
            if (singleton.lockers[lockerId].chambers[chamberNumber].doorAnimator == null)
            {
                return(false);
            }
            if (!singleton.lockers[lockerId].chambers[chamberNumber].CooldownAtZero())
            {
                return(false);
            }
            singleton.lockers[lockerId].chambers[chamberNumber].SetCooldown();
            string accessToken = singleton.lockers[lockerId].chambers[chamberNumber].accessToken;
            Item   itemByID    = __instance._inv.GetItemByID(__instance._inv.curItem);
            bool   allow       = string.IsNullOrEmpty(accessToken) || (itemByID != null && itemByID.permissions.Contains(accessToken)) || __instance._sr.BypassMode;

            Events.InvokeLockerInteract(__instance.gameObject, singleton.lockers[lockerId], lockerId, ref allow);
            if (allow)
            {
                bool flag = ((int)singleton.openLockers[lockerId] & 1 << chamberNumber) != 1 << chamberNumber;
                singleton.ModifyOpen(lockerId, chamberNumber, flag);
                singleton.RpcDoSound(lockerId, chamberNumber, flag);
                bool state = true;
                for (int i = 0; i < singleton.lockers[lockerId].chambers.Length; i++)
                {
                    if (((int)singleton.openLockers[lockerId] & 1 << i) == 1 << i)
                    {
                        state = false;
                        break;
                    }
                }
                singleton.lockers[lockerId].LockPickups(state);
                if (!string.IsNullOrEmpty(accessToken))
                {
                    singleton.RpcChangeMaterial(lockerId, chamberNumber, false);
                }
            }
            else
            {
                singleton.RpcChangeMaterial(lockerId, chamberNumber, true);
            }
            __instance.OnInteract();
            return(false);
        }
        public void LockerManager_When_DefaultConstructor_Should_NumberOfLockersBeFour()
        {
            LockerManager lockerMgr = new LockerManager();

            Assert.Equal(4, lockerMgr.NumberOfLockers);
        }
Пример #15
0
        private static bool Prefix(PlayerInteract __instance, byte lockerId, byte chamberNumber)
        {
            try
            {
                if (!__instance._playerInteractRateLimit.CanExecute(true) ||
                    (__instance._hc.CufferId > 0 && !PlayerInteract.CanDisarmedInteract))
                {
                    return(false);
                }

                LockerManager singleton = LockerManager.singleton;

                if (lockerId >= singleton.lockers.Length)
                {
                    return(false);
                }

                if (!__instance.ChckDis(singleton.lockers[lockerId].gameObject.position) ||
                    !singleton.lockers[lockerId].supportsStandarizedAnimation)
                {
                    return(false);
                }

                if (chamberNumber >= singleton.lockers[lockerId].chambers.Length)
                {
                    return(false);
                }

                if (singleton.lockers[lockerId].chambers[chamberNumber].doorAnimator == null)
                {
                    return(false);
                }

                if (!singleton.lockers[lockerId].chambers[chamberNumber].CooldownAtZero())
                {
                    return(false);
                }

                singleton.lockers[lockerId].chambers[chamberNumber].SetCooldown();

                string accessToken = singleton.lockers[lockerId].chambers[chamberNumber].accessToken;
                var    itemById    = __instance._inv.GetItemByID(__instance._inv.curItem);

                var ev = new InteractingLockerEventArgs(
                    API.Features.Player.Get(__instance.gameObject),
                    singleton.lockers[lockerId],
                    singleton.lockers[lockerId].chambers[chamberNumber],
                    lockerId,
                    chamberNumber,
                    string.IsNullOrEmpty(accessToken) || (itemById != null && itemById.permissions.Contains(accessToken)) || __instance._sr.BypassMode);

                Player.OnInteractingLocker(ev);

                if (ev.IsAllowed)
                {
                    bool flag = (singleton.openLockers[lockerId] & 1 << chamberNumber) != 1 << chamberNumber;
                    singleton.ModifyOpen(lockerId, chamberNumber, flag);
                    singleton.RpcDoSound(lockerId, chamberNumber, flag);
                    bool anyOpen = true;
                    for (int i = 0; i < singleton.lockers[lockerId].chambers.Length; i++)
                    {
                        if ((singleton.openLockers[lockerId] & 1 << i) == 1 << i)
                        {
                            anyOpen = false;
                            break;
                        }
                    }

                    singleton.lockers[lockerId].LockPickups(!flag, chamberNumber, anyOpen);
                    if (!string.IsNullOrEmpty(accessToken))
                    {
                        singleton.RpcChangeMaterial(lockerId, chamberNumber, false);
                    }
                }
                else
                {
                    singleton.RpcChangeMaterial(lockerId, chamberNumber, true);
                }

                __instance.OnInteract();

                return(false);
            }
            catch (Exception e)
            {
                Exiled.API.Features.Log.Error($"Exiled.Events.Patches.Events.Player.InteractingLocker:\n{e}");

                return(true);
            }
        }
Пример #16
0
 public void ReleaseLocketManger() => LockerManager = null;
Пример #17
0
 public void SetLocketManger(LockerManager lockerManager) => LockerManager = lockerManager;