From dc5abf2c660ac3b6328c198678f61c2a96398994 Mon Sep 17 00:00:00 2001 From: zzy Date: Tue, 25 Jun 2019 16:46:41 +0800 Subject: [PATCH] readme --- README.md | 203 +++++++----------------------------------------------- 1 file changed, 24 insertions(+), 179 deletions(-) diff --git a/README.md b/README.md index 4530533..d88bd6c 100644 --- a/README.md +++ b/README.md @@ -1,199 +1,44 @@ -# Nestjs Redis +# Nestjs FireWall -Redis component for NestJs. +FireWall guard with black or white list for NestJs. ### Installation **Yarn** ```bash -yarn add nestjs-redis +yarn add nestjs-fire ``` **NPM** ```bash -npm install nestjs-redis --save +npm install nestjs-fire --save ``` ### Getting Started -Let's register the RedisModule in `app.module.ts` ```typescript -import { Module } from '@nestjs/common' -import { RedisModule} from 'nestjs-redis' - -@Module({ - imports: [ - RedisModule.register(options) - ], -}) -export class AppModule {} -``` -With Async -```typescript -import { Module } from '@nestjs/common'; -import { RedisModule} from 'nestjs-redis' - -@Module({ - imports: [ - RedisModule.forRootAsync({ - useFactory: (configService: ConfigService) => configService.get('redis'), // or use async method - //useFactory: async (configService: ConfigService) => configService.get('redis'), - inject:[ConfigService] - }), - ], -}) -export class AppModule {} -``` -And the config file look like this -With single client -```typescript -export default { - host: process.env.REDIS_HOST, - port: parseInt(process.env.REDIS_PORT), - db: parseInt(process.env.REDIS_DB), - password: process.env.REDIS_PASSWORD, - keyPrefix: process.env.REDIS_PRIFIX, -} -``` -With multi client -```typescript -export default [ - { - name:'test1', - host: process.env.REDIS_HOST, - port: parseInt(process.env.REDIS_PORT), - db: parseInt(process.env.REDIS_DB), - password: process.env.REDIS_PASSWORD, - keyPrefix: process.env.REDIS_PRIFIX, - }, - { - name:'test2', - host: process.env.REDIS_HOST, - port: parseInt(process.env.REDIS_PORT), - db: parseInt(process.env.REDIS_DB), - password: process.env.REDIS_PASSWORD, - keyPrefix: process.env.REDIS_PRIFIX, - }, -] -``` -And use in your service -```typescript -import { Injectable } from '@nestjs/common'; -import { RedisService } from 'nestjs-redis'; - -@Injectable() -export class TestService { - constructor( - private readonly redisService: RedisService, - ) { } - async root(): Promise { - const client = await this.redisService.getClient('test') - return true - } -} -``` -Options -```typescript -interface RedisOptions { - /** - * client name. default is a uuid, unique. - */ - name?: string; - port?: number; - host?: string; - /** - * 4 (IPv4) or 6 (IPv6), Defaults to 4. - */ - family?: number; - /** - * Local domain socket path. If set the port, host and family will be ignored. - */ - path?: string; - /** - * TCP KeepAlive on the socket with a X ms delay before start. Set to a non-number value to disable keepAlive. - */ - keepAlive?: number; - connectionName?: string; - /** - * If set, client will send AUTH command with the value of this option when connected. - */ - password?: string; - /** - * Database index to use. - */ - db?: number; - /** - * When a connection is established to the Redis server, the server might still be loading - * the database from disk. While loading, the server not respond to any commands. - * To work around this, when this option is true, ioredis will check the status of the Redis server, - * and when the Redis server is able to process commands, a ready event will be emitted. - */ - enableReadyCheck?: boolean; - keyPrefix?: string; - /** - * When the return value isn't a number, ioredis will stop trying to reconnect. - * Fixed in: https://github.com/DefinitelyTyped/DefinitelyTyped/pull/15858 - */ - retryStrategy?(times: number): number | false; - /** - * By default, all pending commands will be flushed with an error every - * 20 retry attempts. That makes sure commands won't wait forever when - * the connection is down. You can change this behavior by setting - * `maxRetriesPerRequest`. - * - * Set maxRetriesPerRequest to `null` to disable this behavior, and - * every command will wait forever until the connection is alive again - * (which is the default behavior before ioredis v4). - */ - maxRetriesPerRequest?: number | null; - /** - * 1/true means reconnect, 2 means reconnect and resend failed command. Returning false will ignore - * the error and do nothing. - */ - reconnectOnError?(error: Error): boolean | 1 | 2; - /** - * By default, if there is no active connection to the Redis server, commands are added to a queue - * and are executed once the connection is "ready" (when enableReadyCheck is true, "ready" means - * the Redis server has loaded the database from disk, otherwise means the connection to the Redis - * server has been established). If this option is false, when execute the command when the connection - * isn't ready, an error will be returned. - */ - enableOfflineQueue?: boolean; - /** - * The milliseconds before a timeout occurs during the initial connection to the Redis server. - * default: 10000. - */ - connectTimeout?: number; - /** - * After reconnected, if the previous connection was in the subscriber mode, client will auto re-subscribe these channels. - * default: true. - */ - autoResubscribe?: boolean; - /** - * If true, client will resend unfulfilled commands(e.g. block commands) in the previous connection when reconnected. - * default: true. - */ - autoResendUnfulfilledCommands?: boolean; - lazyConnect?: boolean; - tls?: tls.ConnectionOptions; - sentinels?: Array<{ host: string; port: number; }>; - name?: string; - /** - * Enable READONLY mode for the connection. Only available for cluster mode. - * default: false. - */ - readOnly?: boolean; - /** - * If you are using the hiredis parser, it's highly recommended to enable this option. - * Create another instance with dropBufferSupport disabled for other commands that you want to return binary instead of string - */ - dropBufferSupport?: boolean; - /** - * Whether to show a friendly error stack. Will decrease the performance significantly. - */ - showFriendlyErrorStack?: boolean; +import { Controller, Post, Body, Get, Res, Query, Param, UseGuards } from '@nestjs/common' +import { KyappService } from './kyapp.service' +import { Source } from './../../core' +import { IPs, WhiteListGuard, BlackListGuard } from 'nestjs-fire' + +@IPs('127.0.0.1') +OR +@Hosts('www.xxx.com') +@UseGuards(BlackListGuard) +@Controller('') +export class KyappController { + + @IPs('127.0.0.1') + OR + @Hosts('www.xxx.com') + @UseGuards(BlackListGuard) + @Get() + root() { + return xxx + } } ``` That's it! \ No newline at end of file