Esempio n. 1
0
        public override void CheckPermission()
        {
            if (config.Instance.Site.NeedLogin && ctx.viewer.IsLogin == false)
            {
                echoRedirect(lang("exPlsLogin"), t2(new MainController().Login) + "?returnUrl=" + ctx.url.EncodeUrl);
                return;
            }

            if (config.Instance.Site.BannedIp.Length > 0)
            {
                if (IpUtil.IsAllowedIp(ctx.Ip, config.Instance.Site.BannedIp) == false)
                {
                    echo(config.Instance.Site.BannedIpInfo);
                    return;
                }
            }

            if (ctx.owner.obj is Site)
            {
                checkSitePermission();
            }

            else if (ctx.owner.obj is User)
            {
                checkSpacePermission();
            }

            else if (ctx.owner.obj is Group)
            {
                checkGroupPermission();
            }
        }
Esempio n. 2
0
        public void LocalIpTest()
        {
            var ip = IpUtil.GetLocalIp();

            _output.WriteLine("Local Ip: " + ip);
            Assert.False(string.IsNullOrEmpty(ip));
        }
        /// <summary>
        /// 添加日志
        /// </summary>
        /// <param name="userInfo">用户信息</param>
        /// <param name="loginStatus">动作</param>
        public static void AddLog(BaseUserInfo userInfo, string loginStatus)
        {
            var systemCode    = userInfo.SystemCode;
            var ipAddress     = userInfo.IpAddress;
            var ipAddressName = IpUtil.GetInstance().FindName(userInfo.IpAddress);
            var macAddress    = userInfo.MacAddress;

            AddLog(systemCode, userInfo, ipAddress, ipAddressName, macAddress, loginStatus);
        }
Esempio n. 4
0
 public void testIpWildResult()
 {
     Assert.AreEqual(IpUtil.GetIpWild("97.65.164.215", 0), "97.65.164.215");
     Assert.AreEqual(IpUtil.GetIpWild("97.65.164.215", 5), "97.65.164.215");
     Assert.AreEqual(IpUtil.GetIpWild("97.65.164.215", 1), "97.65.164.*");
     Assert.AreEqual(IpUtil.GetIpWild("97.65.164.215", 2), "97.65.*.*");
     Assert.AreEqual(IpUtil.GetIpWild("97.65.164.215", 3), "97.*.*.*");
     Assert.AreEqual(IpUtil.GetIpWild("97.65.164.215", 4), "*.*.*.*");
 }
Esempio n. 5
0
        public void LocalIpListTest()
        {
            var ipList = IpUtil.GetLocalIpAddressList();

            foreach (var ip in ipList)
            {
                _output.WriteLine("Local Ip: " + ip);
            }
            Assert.NotNull(ipList);
        }
Esempio n. 6
0
        private void DeviceFound(Device dev)
        {
            var ip       = IpUtil.GetIpFromHost(dev.Hostname);
            var ipString = ip == null ? "" : ip.ToString();
            var yd       = new YeelightData {
                Id = dev.Id, IpAddress = ipString, Name = dev.Name
            };

            _controlService.AddDevice(yd).ConfigureAwait(false);
        }
Esempio n. 7
0
        private void SendUdpUnicast(byte[] data)
        {
            if (!_sending)
            {
                return;
            }
            var ep = IpUtil.Parse(IpAddress, 60222);

            _sender.SendTo(data, ep);
        }
Esempio n. 8
0
 public GlimmrData(SystemData sd)
 {
     Tag = "Glimmr";
     Name ??= Tag;
     LastSeen    = DateTime.Now.ToString(CultureInfo.InvariantCulture);
     LeftCount   = sd.LeftCount;
     RightCount  = sd.RightCount;
     TopCount    = sd.TopCount;
     BottomCount = sd.BottomCount;
     IpAddress   = IpUtil.GetLocalIpAddress();
     Id          = sd.CheckDeviceVariables();
 }
Esempio n. 9
0
 public LifxData(LightBulb b)
 {
     if (b == null)
     {
         throw new ArgumentException("Invalid bulb data.");
     }
     HostName         = b.HostName;
     IpAddress        = IpUtil.GetIpFromHost(HostName).ToString();
     Id               = b.MacAddressName;
     Service          = b.Service;
     Port             = (int)b.Port;
     MacAddress       = b.MacAddress;
     MacAddressString = b.MacAddressName;
 }
Esempio n. 10
0
        public void BandByUtil()
        {
            List <String> list = new List <String>();

            list.Add("88.88.99.99");
            list.Add("192.168.3.2-192.168.3.250");
            list.Add("66.66.66.*");
            list.Add("55.55.*.*");
            list.Add("44.*.*.*");
            list.Add("33.168.10.*-33.168.90.*");
            list.Add("unknow");

            Assert.IsFalse(IpUtil.IsAllowedIp("88.88.99.99", list));
            Assert.IsTrue(IpUtil.IsAllowedIp("88.88.99.100", list));

            Assert.IsFalse(IpUtil.IsAllowedIp("192.168.3.2", list));
            Assert.IsFalse(IpUtil.IsAllowedIp("192.168.3.250", list));
            Assert.IsTrue(IpUtil.IsAllowedIp("192.168.3.1", list));
            Assert.IsTrue(IpUtil.IsAllowedIp("192.168.3.251", list));

            Assert.IsFalse(IpUtil.IsAllowedIp("66.66.66.1", list));
            Assert.IsFalse(IpUtil.IsAllowedIp("66.66.66.2", list));
            Assert.IsFalse(IpUtil.IsAllowedIp("66.66.66.254", list));
            Assert.IsFalse(IpUtil.IsAllowedIp("66.66.66.255", list));

            Assert.IsFalse(IpUtil.IsAllowedIp("55.55.33.33", list));
            Assert.IsFalse(IpUtil.IsAllowedIp("55.55.99.99", list));
            Assert.IsTrue(IpUtil.IsAllowedIp("55.56.33.33", list));

            Assert.IsFalse(IpUtil.IsAllowedIp("44.55.33.33", list));
            Assert.IsFalse(IpUtil.IsAllowedIp("44.99.33.33", list));
            Assert.IsTrue(IpUtil.IsAllowedIp("45.99.33.33", list));

            Assert.IsFalse(IpUtil.IsAllowedIp("33.168.10.1", list));
            Assert.IsFalse(IpUtil.IsAllowedIp("33.168.10.2", list));
            Assert.IsFalse(IpUtil.IsAllowedIp("33.168.10.255", list));
            Assert.IsFalse(IpUtil.IsAllowedIp("33.168.90.1", list));
            Assert.IsFalse(IpUtil.IsAllowedIp("33.168.90.2", list));
            Assert.IsFalse(IpUtil.IsAllowedIp("33.168.90.255", list));

            Assert.IsFalse(IpUtil.IsAllowedIp("", list));
            Assert.IsFalse(IpUtil.IsAllowedIp("unknow", list));
            Assert.IsFalse(IpUtil.IsAllowedIp("abc", list));
            Assert.IsFalse(IpUtil.IsAllowedIp("-", list));

            Assert.IsTrue(IpUtil.IsAllowedIp("68.81.101.87", list));
            Assert.IsTrue(IpUtil.IsAllowedIp("71.85.125.152", list));
            Assert.IsTrue(IpUtil.IsAllowedIp("85.114.137.152", list));
        }
Esempio n. 11
0
        /// <summary>
        ///     Use this for sending color data to the panel
        /// </summary>
        /// <param name="n"></param>
        /// <param name="cs"></param>
        public NanoleafDevice(NanoleafData n, ColorService cs) : base(cs)
        {
            _brightness = -1;
            _targets    = new Dictionary <int, int>();
            _data       = n;
            Id          = _data.Id;
            var streamMode     = n.Type is "NL29" or "NL42" ? 2 : 1;
            var controlService = cs.ControlService;
            var host           = n.IpAddress;

            try {
                var ip = IpUtil.GetIpFromHost(n.IpAddress);
                if (ip != null)
                {
                    host = ip.ToString();
                }
                else
                {
                    if (host.Contains(".local"))
                    {
                        host = host.Replace(".local", "");
                        ip   = IpUtil.GetIpFromHost(host);
                    }
                }

                if (ip != null)
                {
                    host = ip.ToString();
                }
            } catch (Exception) {
                //ignored
            }

            try {
                Log.Debug("Creating nano client: " + host);
                _nanoleafClient = new NanoleafClient(host, n.Token);
                Log.Debug("Nano client created.");
                _streamingClient = new NanoleafStreamingClient(host, streamMode, controlService.UdpClient);
            } catch (Exception e) {
                Log.Debug("Exception creating client..." + e.Message);
            }

            _frameWatch = new Stopwatch();
            SetData();
            controlService.RefreshSystemEvent += SetData;
            _disposed = false;
            cs.ColorSendEventAsync += SetColors;
        }
Esempio n. 12
0
        public sealed override void RefreshSystem()
        {
            var sd = DataUtil.GetSystemData();

            _devMode  = sd.DeviceMode;
            _hostName = _sd.DeviceName;
            _discovery?.Dispose();
            var address = new List <IPAddress> {
                IPAddress.Parse(IpUtil.GetLocalIpAddress())
            };
            var service = new ServiceProfile(_hostName, "_glimmr._tcp", 21324, address);

            service.AddProperty("mac", sd.DeviceId);
            _discovery = new ServiceDiscovery();
            _discovery.Advertise(service);
        }
Esempio n. 13
0
 public SystemData(bool setDefaults = false)
 {
     if (setDefaults)
     {
         RecId           = 1;
         DevType         = "DreamScreen4K";
         CamWidth        = 1920;
         CamHeight       = 1080;
         CamType         = 1;
         ScaleFactor     = .5f;
         CaptureMode     = 2;
         MinBrightness   = 255;
         SaturationBoost = 0;
         DsIp            = IpUtil.GetLocalIpAddress();
         AudioThreshold  = .01f;
         DefaultSet      = true;
     }
 }
        /// <summary>
        /// 用户退出
        /// </summary>
        /// <param name="openId">信令</param>
        /// <param name="systemCode">系统编码</param>
        /// <param name="ipAddress">IP地址</param>
        /// <param name="macAddress">MAC地址</param>
        /// <returns>影响行数</returns>
        public bool SignOut(string openId, string systemCode = "Base", string ipAddress = null, string macAddress = null)
        {
            var result = 0;

            // 应该进行一次日志记录
            // 从缓存读取、效率高
            if (!string.IsNullOrWhiteSpace(openId))
            {
                var userEntity = BaseUserManager.GetEntityByOpenIdByCache(openId);
                if (userEntity != null && userEntity.Id > 0)
                {
                    var ipAddressName = string.Empty;
                    if (!string.IsNullOrEmpty(ipAddress))
                    {
                        ipAddressName = IpUtil.GetInstance().FindName(ipAddress);
                    }

                    BaseLogonLogManager.AddLog(systemCode, userEntity, ipAddress, ipAddressName, macAddress, Status.SignOut.ToDescription(), 0, 1);

                    // 是否更新访问日期信息
                    if (!BaseSystemInfo.UpdateVisit)
                    {
                        return(result > 0);
                    }
                    // 最后一次登录时间
                    var sql = "UPDATE " + BaseUserLogonEntity.CurrentTableName + " SET " + BaseUserLogonEntity.FieldPreviousVisitTime + " = " + BaseUserLogonEntity.FieldLastVisitTime;
                    //Troy.Cui 2020-02-29用户退出时也强制OpenId重新生成,和登录时一样强制生成OpenId
                    sql += " , " + BaseUserLogonEntity.FieldOpenId + " = '" + Guid.NewGuid().ToString("N") + "'";
                    sql += ", " + BaseUserLogonEntity.FieldOpenIdTimeoutTime + " = " + DbHelper.GetDbNow();
                    sql += " , " + BaseUserLogonEntity.FieldUserOnline + " = 0 "
                           + " , " + BaseUserLogonEntity.FieldLastVisitTime + " = " + DbHelper.GetDbNow();
                    sql += "  WHERE " + BaseUserLogonEntity.FieldUserId + " = " + DbHelper.GetParameter(BaseUserEntity.FieldId);

                    var dbParameters = new List <IDbDataParameter>
                    {
                        DbHelper.MakeParameter(BaseUserEntity.FieldId, userEntity.Id)
                    };
                    result = ExecuteNonQuery(sql, dbParameters.ToArray());
                }
            }

            return(result > 0);
        }
Esempio n. 15
0
        public void StartStream()
        {
            if (Streaming)
            {
                return;
            }
            LogUtil.Write("WLED: Initializing stream.");
            var onObj = new JObject(
                new JProperty("on", true),
                new JProperty("bri", 255)
                );

            SendPost(onObj);
            _stripSender = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
            _stripSender.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
            _stripSender.Blocking        = false;
            _stripSender.EnableBroadcast = false;
            ep        = IpUtil.Parse(IpAddress, port);
            Streaming = true;
            LogUtil.Write("WLED: Streaming started...");
        }
        public override async Task OnActionExecutionAsync(ActionExecutingContext context, ActionExecutionDelegate next)
        {
            string ip = IpUtil.GetClientIp(context.HttpContext);

            if (string.IsNullOrWhiteSpace(ip))
            {
                throw new HopexException($"无法取到来源IP,不允许访问");
            }

            if (_options.IpWhiteList == null || _options.IpWhiteList.Count == 0)
            {
                throw new HopexException("无法读取IP白名单配置");
            }

            if (!_options.IpWhiteList.Contains(ip))
            {
                throw new HopexException($"IP[{ip}]无权范围");
            }

            await next.Invoke();
        }
Esempio n. 17
0
        private void myProxy_Load(object sender, EventArgs e)
        {
            //默认指定ip
            var ipStringArr = IpUtil.GetIpList();

            if (ipStringArr.Length > 0)
            {
                int index = 0;
                for (int i = 0; i < ipStringArr.Length; i++)
                {
                    string t = ipStringArr[i];
                    comboBoxIp.Items.Add(t);
                    if (IpUtil.isIPV4(t))
                    {
                        index = i;
                    }
                }
                comboBoxIp.SelectedIndex = index;
            }
            //默认指定port
            textPort.Text = ConfigurationManager.AppSettings["defaultPort"];
        }
        /// <summary>
        /// 请求日志记录
        /// </summary>
        public async Task InvokeAsync(HttpContext context)
        {
            context.Items["CorrelationId"] = Guid.NewGuid().ToString();

            if (!context.Request.Path.HasValue || !context.Request.Path.Value.Contains("api/", StringComparison.InvariantCultureIgnoreCase))
            {
                await _next(context);

                return;
            }

            var request = await FormatRequest(context.Request);

            var ip              = IpUtil.GetClientIp(context);
            var userId          = context.User?.GetId();
            var packType        = context.Request.GetPackType();
            var converssionType = context.Request.GetConversionCurrency();

            var originalBodyStream = context.Response.Body;

            using (var responseBody = new MemoryStream())
            {
                context.Response.Body = responseBody;

                Stopwatch watch = Stopwatch.StartNew();

                await _next(context);

                var response = await FormatResponse(context.Response);

                await responseBody.CopyToAsync(originalBodyStream);

                watch.Stop();

                Log(ip, userId, packType.ToString(), converssionType, request, response, watch.ElapsedMilliseconds);
            }
        }
Esempio n. 19
0
        public void start(int port, String ip, String appName)
        {
            // valid
            if (appName == null || appName.Trim().Length == 0)
            {
                logger.Warn(">>>>>>>>>>>> xxl-job, executor registry config fail, appName is null.");
                return;
            }
            if (XxlJobExecutor.getAdminBizList() == null)
            {
                logger.Warn(">>>>>>>>>>>> xxl-job, executor registry config fail, adminAddresses is null.");
                return;
            }

            // executor address (generate addredd = ip:port)
            String executorAddress;

            if (ip != null && ip.Trim().Length > 0)
            {
                executorAddress = ip.Trim() + (":") + port;
            }
            else
            {
                executorAddress = IpUtil.getIpPort(port);
            }

            registryThread = new Thread(
                () =>
            {
                // registry
                while (!toStop1)
                {
                    try
                    {
                        RegistryParam registryParam = new RegistryParam(RegistryConfig.RegistType.EXECUTOR.ToString(), appName, executorAddress);
                        foreach (AdminBiz adminBiz in XxlJobExecutor.getAdminBizList())
                        {
                            try
                            {
                                Object registry = adminBiz.registry(registryParam);
                                ReturnT <String> registryResult = adminBiz.registry(registryParam);
                                if (registryResult != null && ReturnT <string> .SUCCESS_CODE == registryResult.code)
                                {
                                    registryResult = ReturnT <string> .SUCCESS;
                                    logger.Info(string.Format(">>>>>>>>>>> xxl-job registry success, registryParam:{0}, registryResult:{1}", registryParam, registryResult));
                                    break;
                                }
                                else
                                {
                                    logger.Info(string.Format(">>>>>>>>>>> xxl-job registry fail, registryParam:{0}, registryResult:{1}", registryParam, registryResult));
                                }
                            }
                            catch (Exception e)
                            {
                                logger.Info($">>>>>>>>>>> xxl-job registry error, registryParam:{registryParam}", e);
                            }
                        }
                    }
                    catch (Exception e)
                    {
                        logger.Error(e.Message, e);
                    }

                    Thread.Sleep(RegistryConfig.BEAT_TIMEOUT * 1000);
                }

                // registry remove
                try
                {
                    RegistryParam registryParam = new RegistryParam(RegistryConfig.RegistType.EXECUTOR.ToString(), appName, executorAddress);
                    foreach (AdminBiz adminBiz in XxlJobExecutor.getAdminBizList())
                    {
                        try
                        {
                            ReturnT <String> registryResult = adminBiz.registryRemove(registryParam);
                            if (registryResult != null && ReturnT <string> .SUCCESS_CODE == registryResult.code)
                            {
                                registryResult = ReturnT <string> .SUCCESS;
                                logger.Info(string.Format(">>>>>>>>>>> xxl-job registry-remove success, registryParam:{0}, registryResult:{1}", registryParam, registryResult));
                                break;
                            }
                            else
                            {
                                logger.Info(string.Format(">>>>>>>>>>> xxl-job registry-remove fail, registryParam:{0}, registryResult:{1}", registryParam, registryResult));
                            }
                        }
                        catch (Exception e)
                        {
                            logger.Info(string.Format(">>>>>>>>>>> xxl-job registry-remove error, registryParam:{0}", registryParam), e);
                        }
                    }
                }
                catch (Exception e)
                {
                    logger.Error(e.Message, e);
                }
                logger.Warn(">>>>>>>>>>>> xxl-job, executor registry thread destory.");
            }
                );
            registryThread.IsBackground = (true);
            registryThread.Start();
        }
Esempio n. 20
0
 public String GetIp(int hideLength)
 {
     return(IpUtil.GetIpWild(this.Ip, hideLength));
 }
        /// <summary>
        /// 参数检查
        /// </summary>
        /// <param name="context">当前请求上下文</param>
        /// <param name="userInfo">用户信息</param>
        /// <param name="checkLocalIp">检查内网</param>
        /// <param name="permissionCode">权限菜单的Code</param>
        /// <returns></returns>
        public static BaseResult ValidateParameter(HttpContext context, ref BaseUserInfo userInfo, bool checkLocalIp = true, string permissionCode = null)
        {
            var result = new BaseResult();

            // 1:是否是有效的系统编号?
            if (context.Request["systemCode"] == null)
            {
                result.Status        = false;
                result.StatusCode    = Status.ParameterError.ToString();
                result.StatusMessage = "systemCode " + Status.ParameterError.ToDescription();
                return(result);
            }

            var systemCode = context.Request["systemCode"];

            if (!BaseSystemManager.CheckSystemCode(systemCode))
            {
                result.Status        = false;
                result.StatusCode    = Status.ParameterError.ToString();
                result.StatusMessage = "systemCode 不是有效的系统编号";
                return(result);
            }

            var ipAddress = Utils.GetIp();

            // 2016-08-22 已经正常登录的用户,也可以调用验证码函数,这样接口程序更灵活一些,更方便被调用
            if (context.Request["userInfo"] != null)
            {
                // 从当前使用的用户确定当前使用者
                userInfo = BaseUserInfo.Deserialize(context.Request["userInfo"]);
                if (userInfo == null)
                {
                    result.Status        = false;
                    result.StatusCode    = Status.Error.ToString();
                    result.StatusMessage = "userInfo " + Status.Error.ToDescription();
                    return(result);
                }

                // 防止伪造、判断用户的有效性
                if (!ServiceUtil.VerifySignature(userInfo))
                {
                    // LogUtil.WriteLine("userInfo.Signature:" + userInfo.Signature + " GetSignature(userInfo):" + ServiceUtil.GetSignature(userInfo));
                    result.Status        = false;
                    result.StatusCode    = Status.SignatureError.ToString();
                    result.StatusMessage = "userInfo " + Status.SignatureError.ToDescription();
                    return(result);
                }

                // 这里需要是已经登录的用户,不是已经被踢掉的用户
                if (!ValidateOpenId(userInfo.Id, userInfo.OpenId))
                {
                    result.Status        = false;
                    result.StatusCode    = Status.ParameterError.ToString();
                    result.StatusMessage = "OpenId " + Status.ParameterError.ToDescription();
                    return(result);
                }
            }
            else
            {
                // 2016-08-09 吉日嘎拉,必须保证是服务器调用的,外部不允许直接调用,方式被短信轰炸,有安全漏洞。
                // 检查是否为内部ip地址发送出去的手机短信
                // 2016-08-09 宋彪 不仅仅针对短信发送,用户中心接口也要考虑
                if (checkLocalIp)
                {
                    if (!IpUtil.IsLocalIp(ipAddress))
                    {
                        // 不是内网发出的, 也不是信任的ip列表里的,直接给拒绝发送出去
                        result.Status        = false;
                        result.StatusCode    = Status.ErrorIpAddress.ToString();
                        result.StatusMessage = ipAddress + " " + Status.ErrorIpAddress.ToDescription();
                        return(result);
                    }
                }

                // 应用唯一标识
                string appKey;
                if (context.Request["appKey"] == null)
                {
                    result.Status        = false;
                    result.StatusCode    = Status.ParameterError.ToString();
                    result.StatusMessage = "appKey " + Status.ParameterError.ToDescription();
                    return(result);
                }
                else
                {
                    appKey = context.Request["appKey"];
                }

                // 应用的签名密钥
                string appSecret;
                if (context.Request["appSecret"] == null)
                {
                    result.Status        = false;
                    result.StatusCode    = Status.ParameterError.ToString();
                    result.StatusMessage = "appSecret " + Status.ParameterError.ToDescription();
                    return(result);
                }
                else
                {
                    appSecret = context.Request["appSecret"];
                }

                // 检查服务的有效性,是否调用限制到了?是否有相应的权限
                //result = BaseServicesLicenseManager.CheckService(appKey, appSecret, false, 0, 0, systemCode, permissionCode);
                //if (!result.Status)
                //{
                //    return result;
                //}

                // 从接口确定当前调用者
                var userEntity = BaseUserManager.GetEntityByCodeByCache(appKey);
                if (userEntity != null)
                {
                    userInfo = new BaseUserInfo
                    {
                        Id          = userEntity.Id.ToString(),
                        UserId      = userEntity.Id,
                        Code        = userEntity.Code,
                        UserName    = userEntity.UserName,
                        NickName    = userEntity.NickName,
                        RealName    = userEntity.RealName,
                        CompanyId   = userEntity.CompanyId.ToString(),
                        CompanyCode = userEntity.CompanyCode,
                        CompanyName = userEntity.CompanyName,
                        IpAddress   = ipAddress
                    };
                }
            }

            result.Status = true;
            return(result);
        }