Exemplo n.º 1
0
 /// <summary>
 /// 客户端白名单数据操作实体赋值
 /// </summary>
 /// <param name="whitelist"></param>
 /// <param name="reader"></param>
 /// <param name="prefix"></param>
 public static void SetClientWhitelistStoreSelectFields(ClientWhitelist whitelist, DbDataReader reader, string prefix)
 {
     whitelist.ID              = (Guid)reader[string.Format("{0}id", prefix)];
     whitelist.SystemName      = reader[string.Format("{0}systemname", prefix)].ToString();
     whitelist.SystemSecret    = reader[string.Format("{0}systemsecret", prefix)].ToString();
     whitelist.SignatureExpire = (int)reader[string.Format("{0}signatureexpire", prefix)];
     whitelist.CreateTime      = (DateTime)reader[string.Format("{0}createtime", prefix)];
     whitelist.ModifyTime      = (DateTime)reader[string.Format("{0}modifytime", prefix)];
 }
Exemplo n.º 2
0
        /// <summary>
        /// 根据系统名称查询客户端白名单
        /// </summary>
        /// <param name="systemName"></param>
        /// <returns></returns>
        public async Task <ClientWhitelist> QueryBySystemName(string systemName)
        {
            ClientWhitelist result = null;
            await DBTransactionHelper.SqlTransactionWorkAsync(DBTypes.SqlServer, true, false, _dbConnectionFactory.CreateReadForWhitelistPolicy(), async (conn, transaction) =>
            {
                SqlTransaction sqlTran = null;
                if (transaction != null)
                {
                    sqlTran = (SqlTransaction)transaction;
                }

                using (SqlCommand commond = new SqlCommand()
                {
                    Connection = (SqlConnection)conn,
                    CommandType = CommandType.Text,
                    CommandText = string.Format(@"select {0} from [ClientWhiteList] where [systemname]=@systemname", StoreHelper.GetClientWhitelistStoreSelectFields(string.Empty)),
                    Transaction = sqlTran
                })
                {
                    var parameter = new SqlParameter("@systemname", SqlDbType.NVarChar, 500)
                    {
                        Value = systemName
                    };
                    commond.Parameters.Add(parameter);
                    commond.Prepare();
                    SqlDataReader reader = null;

                    using (reader = await commond.ExecuteReaderAsync())
                    {
                        if (await reader.ReadAsync())
                        {
                            result = new ClientWhitelist();
                            StoreHelper.SetClientWhitelistStoreSelectFields(result, reader, string.Empty);
                        }

                        reader.Close();
                    }
                }
            });

            return(result);
        }
Exemplo n.º 3
0
 public void FindWhitelist(string whitelist)
 {
     ClientWhitelist.FirstOrDefault(c => c.Whitelist == whitelist);
 }
Exemplo n.º 4
0
 public void RemoveWhitelists(string whitelist)
 {
     ClientWhitelist.RemoveAll(c => c.Whitelist == whitelist);
 }
Exemplo n.º 5
0
 public virtual void RemoveAllWhitelists()
 {
     ClientWhitelist.Clear();
 }
Exemplo n.º 6
0
 public virtual void AddWhitelist(string whitelist)
 {
     ClientWhitelist.Add(new ReRouteRateLimitRuleClientWhitelist(whitelist));
 }
Exemplo n.º 7
0
        /// <summary>
        /// 修改
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        public async Task Update(ClientWhitelist data)
        {
            await DBTransactionHelper.SqlTransactionWorkAsync(DBTypes.SqlServer, false, false, _dbConnectionFactory.CreateAllForWhitelistPolicy(), async (conn, transaction) =>
            {
                SqlTransaction sqlTran = null;
                if (transaction != null)
                {
                    sqlTran = (SqlTransaction)transaction;
                }
                using (SqlCommand command = new SqlCommand()
                {
                    Connection = (SqlConnection)conn,
                    CommandType = CommandType.Text,
                    Transaction = sqlTran,
                    CommandText = @"UPDATE [dbo].[ClientWhiteList]
                                       SET [systemname] = @systemname ,[systemsecret] = @systemsecret ,[signatureexpire] = @signatureexpire ,[modifytime]=GETUTCDATE()
                                        WHERE id=@id"
                })
                {
                    var parameter = new SqlParameter("@id", SqlDbType.UniqueIdentifier)
                    {
                        Value = data.ID
                    };
                    command.Parameters.Add(parameter);
                    parameter = new SqlParameter("@systemname", SqlDbType.NVarChar, 500)
                    {
                        Value = data.SystemName
                    };
                    command.Parameters.Add(parameter);
                    parameter = new SqlParameter("@systemsecret", SqlDbType.NVarChar, 500)
                    {
                        Value = data.SystemSecret
                    };
                    command.Parameters.Add(parameter);
                    parameter = new SqlParameter("@signatureexpire", SqlDbType.Int)
                    {
                        Value = data.SignatureExpire
                    };
                    command.Parameters.Add(parameter);
                    command.Prepare();


                    try
                    {
                        await command.ExecuteNonQueryAsync();
                    }
                    catch (SqlException ex)
                    {
                        if (ex.Number == 2601)
                        {
                            var fragment = new TextFragment()
                            {
                                Code = TextCodes.ExistClientWhitelistBySystemName,
                                DefaultFormatting = "客户端白名单中存在相同的系统名称\"{0}\"数据",
                                ReplaceParameters = new List <object>()
                                {
                                    data.SystemName
                                }
                            };

                            throw new UtilityException((int)Errors.ExistClientWhitelistBySystemName, fragment);
                        }
                        else
                        {
                            throw;
                        }
                    }
                }
            });
        }
Exemplo n.º 8
0
        /// <summary>
        /// 新增
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        public async Task Add(ClientWhitelist data)
        {
            await DBTransactionHelper.SqlTransactionWorkAsync(DBTypes.SqlServer, false, false, _dbConnectionFactory.CreateAllForWhitelistPolicy(), async (conn, transaction) =>
            {
                SqlTransaction sqlTran = null;
                if (transaction != null)
                {
                    sqlTran = (SqlTransaction)transaction;
                }
                using (SqlCommand command = new SqlCommand()
                {
                    Connection = (SqlConnection)conn,
                    CommandType = CommandType.Text,
                    Transaction = sqlTran,
                })
                {
                    SqlParameter parameter;
                    if (data.ID == Guid.Empty)
                    {
                        command.CommandText = @"INSERT INTO [dbo].[ClientWhiteList] 
                                                    ([id] ,[systemname] ,[systemsecret] ,[signatureexpire] ,[createtime] ,[modifytime]) 
                                                VALUES 
                                                    (default ,@systemname ,@systemsecret ,@signatureexpire , GETUTCDATE() , GETUTCDATE());
                                                select @newid =[id] from [dbo].[ClientWhiteList] where [sequence] = SCOPE_IDENTITY()";
                        parameter           = new SqlParameter("@newid", SqlDbType.UniqueIdentifier)
                        {
                            Direction = ParameterDirection.Output
                        };
                        command.Parameters.Add(parameter);
                    }
                    else
                    {
                        command.CommandText = @"INSERT INTO [dbo].[ClientWhiteList] 
                                                    ([id] ,[systemname] ,[systemsecret] ,[signatureexpire] ,[createtime] ,[modifytime]) 
                                                VALUES 
                                                    (@id ,@systemname ,@systemsecret ,@signatureexpire , GETUTCDATE() , GETUTCDATE())";
                        parameter           = new SqlParameter("@id", SqlDbType.UniqueIdentifier)
                        {
                            Value = data.ID
                        };
                        command.Parameters.Add(parameter);
                    }
                    parameter = new SqlParameter("@systemname", SqlDbType.NVarChar, 500)
                    {
                        Value = data.SystemName
                    };
                    command.Parameters.Add(parameter);
                    parameter = new SqlParameter("@systemsecret", SqlDbType.NVarChar, 500)
                    {
                        Value = data.SystemSecret
                    };
                    command.Parameters.Add(parameter);
                    parameter = new SqlParameter("@signatureexpire", SqlDbType.Int)
                    {
                        Value = data.SignatureExpire
                    };
                    command.Parameters.Add(parameter);

                    command.Prepare();

                    try
                    {
                        await command.ExecuteNonQueryAsync();
                    }
                    catch (SqlException ex)
                    {
                        if (ex.Number == 2601)
                        {
                            var fragment = new TextFragment()
                            {
                                Code = TextCodes.ExistClientWhitelistBySystemName,
                                DefaultFormatting = "客户端白名单中存在相同的系统名称\"{0}\"数据",
                                ReplaceParameters = new List <object>()
                                {
                                    data.SystemName
                                }
                            };

                            throw new UtilityException((int)Errors.ExistClientWhitelistBySystemName, fragment);
                        }
                        else
                        {
                            throw;
                        }
                    }

                    //如果用户未赋值ID则创建成功后返回ID
                    if (data.ID == Guid.Empty)
                    {
                        data.ID = (Guid)command.Parameters["@newid"].Value;
                    }
                    ;
                }
            });
        }
Exemplo n.º 9
0
        /// <summary>
        /// 分页查询匹配系统名称客户端白名单
        /// </summary>
        /// <param name="page"></param>
        /// <param name="pageSize"></param>
        /// <param name="systemName"></param>
        /// <returns></returns>
        public async Task <QueryResult <ClientWhitelist> > QueryByPage(int page, int pageSize, string systemName)
        {
            QueryResult <ClientWhitelist> result = new QueryResult <ClientWhitelist>();
            await DBTransactionHelper.SqlTransactionWorkAsync(DBTypes.SqlServer, true, false, _dbConnectionFactory.CreateReadForWhitelistPolicy(), async (conn, transaction) =>
            {
                SqlTransaction sqlTran = null;
                if (transaction != null)
                {
                    sqlTran = (SqlTransaction)transaction;
                }

                using (SqlCommand commond = new SqlCommand()
                {
                    Connection = (SqlConnection)conn,
                    CommandType = CommandType.Text,
                    CommandText = string.Format(@"SET @currentpage = @page;
                                                SELECT @count = COUNT(*)
                                                FROM [ClientWhiteList]
                                                WHERE [systemname] LIKE @systemname;
                                                IF @pagesize * @page >= @count
                                                BEGIN
                                                    SET @currentpage = @count / @pagesize;
                                                    IF @count % @pagesize <> 0
                                                    BEGIN
                                                        SET @currentpage = @currentpage + 1;
                                                    END;
                                                    IF @currentpage = 0
                                                        SET @currentpage = 1;
                                                END;
                                                ELSE IF @page < 1
                                                BEGIN
                                                    SET @currentpage = 1;
                                                END;

                                                SELECT {0}
                                                FROM [ClientWhiteList]
                                                WHERE [systemname] LIKE @systemname
                                                ORDER BY sequence OFFSET (@pagesize * (@currentpage - 1)) ROWS FETCH NEXT @pagesize ROWS ONLY;",
                                                StoreHelper.GetClientWhitelistStoreSelectFields(string.Empty)),
                    Transaction = sqlTran
                })
                {
                    var parameter = new SqlParameter("@page", SqlDbType.Int)
                    {
                        Value = page
                    };
                    commond.Parameters.Add(parameter);

                    parameter = new SqlParameter("@pagesize", SqlDbType.Int)
                    {
                        Value = pageSize
                    };
                    commond.Parameters.Add(parameter);

                    parameter = new SqlParameter("@count", SqlDbType.Int)
                    {
                        Direction = ParameterDirection.Output
                    };
                    commond.Parameters.Add(parameter);

                    parameter = new SqlParameter("@currentpage", SqlDbType.Int)
                    {
                        Direction = ParameterDirection.Output
                    };
                    commond.Parameters.Add(parameter);

                    parameter = new SqlParameter("@systemname", SqlDbType.NVarChar, 100)
                    {
                        Value = $"{systemName.ToSqlLike()}%"
                    };
                    commond.Parameters.Add(parameter);

                    commond.Prepare();

                    SqlDataReader reader = null;


                    using (reader = await commond.ExecuteReaderAsync())
                    {
                        while (await reader.ReadAsync())
                        {
                            var clientWhitelist = new ClientWhitelist();
                            StoreHelper.SetClientWhitelistStoreSelectFields(clientWhitelist, reader, string.Empty);

                            result.Results.Add(clientWhitelist);
                        }
                        reader.Close();
                        result.TotalCount  = (int)commond.Parameters["@count"].Value;
                        result.CurrentPage = (int)commond.Parameters["@currentpage"].Value;
                    }
                }
            });

            return(result);
        }
Exemplo n.º 10
0
 public virtual void AddWhitelist(string whitelist)
 {
     ClientWhitelist.Add(new RouteRateLimitRuleClientWhitelist(GlobalConfigurationId, RouteName, whitelist));
 }