private void Awake()
 {
     if (current == null)
     {
         current = this;
     }
     else
     {
         Destroy(this);
     }
 }//make this a singleton
Beispiel #2
0
        /*嘉明*/
        public List <DoorClick> GetListByJson()
        {
            List <DoorClick> doorClickList = new List <DoorClick>();

            try
            {
                string       path = AppDomain.CurrentDomain.BaseDirectory + "Data\\DeviceData\\中山嘉明电厂\\门禁\\门禁事件.json";
                StreamReader sr   = new StreamReader(path, Encoding.Default);
                string       line;
                string       jsonobj = "";
                while ((line = sr.ReadLine()) != null)
                {
                    jsonobj = jsonobj + line.ToString();
                }
                DoorEvents doorEvents = JsonConvert.DeserializeObject <DoorEvents>(jsonobj);
                doorClickList = doorEvents.data.list;
            }
            catch (Exception ex)
            {
                Log.Error("DoorClickService.GetListByJson:" + ex.ToString());
            }
            return(doorClickList);
        }
Beispiel #3
0
        private static bool Prefix(DoorVariant __instance, ReferenceHub ply, byte colliderId)
        {
            try
            {
                InteractingDoorEventArgs ev = new(Player.Get(ply), __instance, false);
                bool bypassDenied           = false;
                bool allowInteracting       = false;

                if (__instance.ActiveLocks != 0)
                {
                    DoorLockMode mode = DoorLockUtils.GetMode((DoorLockReason)__instance.ActiveLocks);
                    if ((!mode.HasFlagFast(DoorLockMode.CanClose) ||
                         !mode.HasFlagFast(DoorLockMode.CanOpen)) &&
                        (!mode.HasFlagFast(DoorLockMode.ScpOverride) ||
                         ply.characterClassManager.CurRole.team != 0) &&
                        (mode == DoorLockMode.FullLock ||
                         (__instance.TargetState &&
                          !mode.HasFlagFast(DoorLockMode.CanClose)) ||
                         (!__instance.TargetState &&
                          !mode.HasFlagFast(DoorLockMode.CanOpen))))
                    {
                        /*
                         * __instance.LockBypassDenied(ply, colliderId);
                         * return false;
                         */
                        //>EXILED
                        ev.IsAllowed = false;
                        bypassDenied = true;
                        //<EXILED
                    }
                }

                if (!bypassDenied && (allowInteracting = __instance.AllowInteracting(ply, colliderId)))
                {
                    if (ply.characterClassManager.CurClass == RoleType.Scp079 || __instance.RequiredPermissions.CheckPermissions(ply.inventory.CurInstance, ply))
                    {
                        /*
                         * __instance.NetworkTargetState = !__instance.TargetState;
                         * __instance._triggerPlayer = ply;
                         */
                        //>EXILED
                        ev.IsAllowed = true;
                        //<EXILED
                    }
                    else
                    {
                        /*
                         * __instance.PermissionsDenied(ply, colliderId);
                         * DoorEvents.TriggerAction(__instance, DoorAction.AccessDenied, ply);
                         */
                        //>EXILED
                        ev.IsAllowed = false;
                        //<EXILED
                    }
                }

                //>EXILED
                Handlers.Player.OnInteractingDoor(ev);

                if (ev.IsAllowed && allowInteracting)
                {
                    __instance.NetworkTargetState = !__instance.TargetState;
                    __instance._triggerPlayer     = ply;
                }
                else if (bypassDenied)
                {
                    __instance.LockBypassDenied(ply, colliderId);
                }
                // Don't call the RPC if the door is still moving
                else if (allowInteracting)
                {
                    // To avoid breaking their API, call the access denied event
                    // when our event prevents the door from opening
                    __instance.PermissionsDenied(ply, colliderId);
                    DoorEvents.TriggerAction(__instance, DoorAction.AccessDenied, ply);
                }
                //<EXILED

                return(false);
            }
            catch (Exception ex)
            {
                Log.Error($"{typeof(InteractingDoor).FullName}.{nameof(Prefix)}:\n{ex}");
                return(true);
            }
        }
        private static bool Prefix(DoorVariant __instance, ReferenceHub ply, byte colliderId)
        {
            try
            {
                if (!NetworkServer.active)
                {
                    Debug.LogWarning("[Server] function 'System.Void Interactables.Interobjects.DoorUtils.DoorVariant::ServerInteract(ReferenceHub,System.Byte)' called on client");
                    return(false);
                }
                if (__instance.ActiveLocks > 0)
                {
                    DoorLockMode mode = DoorLockUtils.GetMode((DoorLockReason)__instance.ActiveLocks);
                    if ((!mode.HasFlagFast(DoorLockMode.CanClose) || !mode.HasFlagFast(DoorLockMode.CanOpen)) && (!mode.HasFlagFast(DoorLockMode.ScpOverride) || ply.characterClassManager.CurRole.team != Team.SCP) && (mode == DoorLockMode.FullLock || (__instance.TargetState && !mode.HasFlagFast(DoorLockMode.CanClose)) || (!__instance.TargetState && !mode.HasFlagFast(DoorLockMode.CanOpen))))
                    {
                        __instance.LockBypassDenied(ply, colliderId);
                        return(false);
                    }
                }
                if (__instance.AllowInteracting(ply, colliderId))
                {
                    var player     = ply.GetPlayer();
                    var flag       = __instance.RequiredPermissions.CheckPermissions(player.VanillaInventory.curItem, ply);
                    var cardaccess = false;
                    var item       = player.ItemInHand;

                    if (item != null && item.ItemCategory == ItemCategory.Keycard)
                    {
                        EventHandler.Get.Player.InvokePlayerItemUseEvent(player, item, Api.Events.SynapseEventArguments.ItemInteractState.Finalizing, ref flag);
                    }

                    if (flag)
                    {
                        cardaccess = true;
                    }
                    else if (Server.Get.Configs.SynapseConfiguration.RemoteKeyCard)
                    {
                        foreach (var item2 in player.Inventory.Items.Where(x => x != item && x.ItemCategory == ItemCategory.Keycard))
                        {
                            var allowcard = __instance.RequiredPermissions.CheckPermissions(item2.ItemType, ply);

                            EventHandler.Get.Player.InvokePlayerItemUseEvent(player, item2, Api.Events.SynapseEventArguments.ItemInteractState.Finalizing, ref allowcard);

                            if (allowcard)
                            {
                                cardaccess = true;
                                break;
                            }
                        }
                    }

                    EventHandler.Get.Map.InvokeDoorInteractEvent(player, __instance.GetDoor(), ref cardaccess);

                    if (ply.characterClassManager.CurClass == RoleType.Scp079 || cardaccess)
                    {
                        __instance.NetworkTargetState = !__instance.TargetState;
                        __instance._triggerPlayer     = ply;
                        return(false);
                    }
                    __instance.PermissionsDenied(ply, colliderId);
                    DoorEvents.TriggerAction(__instance, DoorAction.AccessDenied, ply);
                }

                return(false);
            }
            catch (Exception e)
            {
                Logger.Get.Error($"Synapse-Event: DoorInteract failed!!\n{e}");
                return(true);
            }
        }
Beispiel #5
0
        public DataDoor GetPageByCondition(DoorSearchArgs args)
        {
            //时间要传格林尼治时间
            DataDoor data = new DataDoor();

            try
            {
                DoorSearchArgs arg = args;
                arg.eventType = "198914";
                DateTime now = DateTime.Now;
                if (args == null)
                {
                    arg                = new DoorSearchArgs();
                    arg.startTime      = now.AddMonths(-1).ToString("yyyy-MM-dd HH:mm:ss");
                    arg.endTime        = now.ToString("yyyy-MM-dd HH:mm:ss");
                    arg.pageNo         = 1;
                    arg.pageSize       = 100;
                    arg.doorIndexCodes = null;
                    arg.personIds      = null;
                    arg.eventType      = "198914";
                }
                else
                {
                    if (string.IsNullOrEmpty(arg.startTime) || string.IsNullOrEmpty(arg.endTime))
                    {
                        arg.startTime = now.AddMonths(-1).ToString("yyyy-MM-dd HH:mm:ss");
                        arg.endTime   = now.ToString("yyyy-MM-dd HH:mm:ss");
                    }
                    if (arg.pageSize == 0)
                    {
                        arg.pageSize = 1000000;
                    }
                    if (arg.pageNo == 0)
                    {
                        arg.pageNo = 1;
                    }
                    if (string.IsNullOrEmpty(arg.eventType))
                    {
                        arg.eventType = "198914";
                    }
                }

                DateTime startTimeT;
                DateTime endTimeT;
                DateTime.TryParse(arg.startTime, out startTimeT);
                DateTime.TryParse(arg.endTime, out endTimeT);

                //对接部分:暂时注释
                ////DoorEvents doorEvents = getDoorEvents(arg.startTime.ToString("yyyy-MM-ddTHH:mm:sszzz"), arg.endTime.ToString("yyyy-MM-ddTHH:mm:sszzz"), arg.pageNo.ToString(), arg.pageSize.ToString(), arg.eventType, arg.personIds, arg.doorIndexCodes,arg.personName);
                DoorEvents doorEvents = getDoorEvents(startTimeT.ToString("yyyy-MM-ddTHH:mm:sszzz"), endTimeT.ToString("yyyy-MM-ddTHH:mm:sszzz"), arg.pageNo.ToString(), arg.pageSize.ToString(), arg.eventType, arg.personIds, arg.doorIndexCodes, arg.personName);
                if (doorEvents != null && doorEvents.data != null)
                {
                    data = doorEvents.data;
                }

                if (data.list == null)//从数据库获取
                {
                    //PageInfo<DoorClick> page = db.DoorClicks.GetPageByCondition(arg.startTime, arg.endTime, arg.eventType, arg.personIds, arg.doorIndexCodes,arg.personName, arg.pageNo, arg.pageSize);
                    PageInfo <DoorClick> page = db.DoorClicks.GetPageByCondition(startTimeT, endTimeT, arg.eventType, arg.personIds, arg.doorIndexCodes, arg.personName, arg.pageNo, arg.pageSize);
                    data.total     = page.total;
                    data.totalPage = page.totalPage;
                    data.list      = page.data;
                    data.pageNo    = page.pageIndex;
                    data.pageSize  = page.pageSize;
                }
            }
            catch (Exception ex)
            {
                Log.Error("DoorClickService.GetListByCondition:" + ex.ToString());
            }

            return(data);
        }
Beispiel #6
0
        /// <summary>
        /// 获取门禁事件列表(海康接口)
        /// </summary>
        public DoorEvents getDoorEvents(string startTime, string endTime, string pageNo, string pageSize, string eventType /*必要(事件类型)*/, string[] personIds, string[] doorIndexCodes, string personName)
        {
            DoorEvents doorEvents = new DoorEvents();

            try
            {
                //注意时间转化
                DateTime dt = DateTime.Now;
                Log.Info("当前时间-普通格式:{0}", dt.ToString("yyyy-MM-dd HH:mm:ss"));
                Log.Info("当前时间-UTC格式:{0}", dt.ToString("yyyy-MM-ddTHH:mm:sszzz"));
                // "{\"startTime\": \"2020-05-16T13:00:00.000+08:00\",\"endTime\": \"2020-05-18T12:00:00.000+08:00\",\"pageNo\": \"1\",\"pageSize\": \"100\",\"eventType\": \"198914\"}";
                string where = "";

                if (!string.IsNullOrEmpty(startTime))
                {
                    where += "\"startTime\": \"" + startTime + "\",";
                }
                if (!string.IsNullOrEmpty(endTime))
                {
                    where += "\"endTime\": \"" + endTime + "\",";
                }
                if (!string.IsNullOrEmpty(pageNo))
                {
                    where += "\"pageNo\": \"" + pageNo + "\",";
                }
                if (!string.IsNullOrEmpty(pageSize))
                {
                    where += "\"pageSize\": \"" + pageSize + "\",";
                }
                if (!string.IsNullOrEmpty(eventType))
                {
                    where += "\"eventType\": \"" + eventType + "\",";
                }
                if (!string.IsNullOrEmpty(personName))
                {
                    personName = personName.Replace("/", "").Replace("<", "").Replace(">", "").Replace("\"", "").Replace("|", "");
                    where     += "\"personName\": \"" + personName + "\",";
                }

                //"doorIndexCodes": ["1f276203e5234bdca08f7d99e1097bba","3f9512ec067248dfa0679cf4a1634800"]
                if (personIds != null && personIds.Length != 0)
                {
                    string personIdss = "";
                    foreach (string personId in personIds)
                    {
                        personIdss += "\"" + personId + "\",";
                    }
                    personIdss = personIdss.Substring(0, personIdss.Length - 1);
                    where     += "\"personIds\": [" + personIdss + "],";
                }
                where = where.Substring(0, where.Length - 1);
                string body = "{" + where + "}";
                string uri  = "/artemis/api/acs/v1/door/events";
                Log.Info("DoorClickService.getDoorEvents: url=" + uri);
                Log.Info("DoorClickService.getDoorEvents: body=" + body);
                string obj = getString(body, uri);
                doorEvents = JsonConvert.DeserializeObject <DoorEvents>(obj);
            }
            catch (Exception ex)
            {
                Log.Error("DevService.getDoorEvents:" + ex.ToString());
            }
            return(doorEvents);
        }
Beispiel #7
0
 public void Awake()
 {
     current = this;
 }