blacklist.h

来自「linux可以运行程序源码」· C头文件 代码 · 共 92 行

H
92
字号
/* Copyright (C) 2002-2005 RealVNC Ltd.  All Rights Reserved. *  * This is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. *  * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. *  * You should have received a copy of the GNU General Public License * along with this software; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, * USA. *///// Blacklist.h - Handling of black-listed entities.// Just keeps a table mapping strings to timing information, including// how many times the entry has been black-listed and when to next// put it on probation (e.g. allow a connection in from the host, and// re-blacklist it if that fails). //#ifndef __RFB_BLACKLIST_H__#define __RFB_BLACKLIST_H__#include <string.h>#include <time.h>#include <map>#include <rfb/Configuration.h>#include <rfb/util.h>namespace rfb {  //  // -=- Blacklist handler  //  // Parameters include a threshold after which to blacklist the named  // host, and a timeout after which to re-consider them.  //  // Threshold means that isBlackmarked can be called that number of times  // before it will return true.  //  // Timeout means that after that many seconds, the next call to isBlackmarked  // will return false.  At the same time, the timeout is doubled, so that the  // next calls will fail, until the timeout expires again or clearBlackmark is  // called.  //  // When clearBlackMark is called, the corresponding entry is completely  // removed, causing the next isBlackmarked call to return false.  // KNOWN BUG:  Client can keep making rejected requests, thus increasing  // their timeout.  If client does this for 30 years, timeout may wrap round  // to a very small value again.  // THIS CLASS IS NOT THREAD-SAFE!  class Blacklist {  public:    Blacklist();    ~Blacklist();    bool isBlackmarked(const char* name);    void clearBlackmark(const char* name);    static IntParameter threshold;    static IntParameter initialTimeout;  protected:    struct ltStr {      bool operator()(const char* s1, const char* s2) const {        return strcmp(s1, s2) < 0;      };    };    struct BlacklistInfo {      int marks;      time_t blockUntil;      unsigned int blockTimeout;    };    typedef std::map<const char*,BlacklistInfo,ltStr> BlacklistMap;    BlacklistMap blm;  };}#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?