亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? l7-classify.cpp

?? linux下的l7源代碼
?? CPP
字號:
/*  Functions and classes which keep track of and use regexes to classify streams  of application data.    By Ethan Sommer <sommere@users.sf.net> and Matthew Strait   <quadong@users.sf.net>, (C) 2006-2007  http://l7-filter.sf.net   This program 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.  http://www.gnu.org/licenses/gpl.txt*/using namespace std;#include <iostream>#include <fstream>#include <vector>#include <string>#include <sstream>#include <stdio.h>#include <stdlib.h>#include <errno.h>#include <signal.h>#include <dirent.h>#define MAX_SUBDIRS 128#define MAX_FN_LEN 256string l7dir = "/etc/l7-protocols";// by default, take the whole thing.// The second two are derivable from the first. They're here for convenience.unsigned int markmask = 0xffffffff; // the mask itselfunsigned int maskfirstbit = 0; // how far from the LSB does our region start?unsigned int masknbits = 32;#include "l7-classify.h"#include "l7-queue.h"#include "l7-parse-patterns.h"#include "util.h"l7_pattern::l7_pattern(string name, string pattern_string, int eflags,   int cflags, int mark){  this->name = name;  this->pattern_string = pattern_string;  this->eflags = eflags;  this->cflags = cflags;  this->mark = mark;  char *preprocessed = pre_process(pattern_string.c_str());    int rc = regcomp(&preg, preprocessed, cflags);  if (rc != 0){    cerr << "error compiling " << name << " -- " << pattern_string << endl;    exit(1);  }}int l7_pattern::hex2dec(char c) {  switch (c){    case '0' ... '9':      return c - '0';    case 'a' ... 'f':      return c - 'a' + 10;    case 'A' ... 'F':      return c - 'A' + 10;    default:      cerr << "Bad hex digit, " << c << ", in regular expression!" << endl;      exit(1);  }}char * l7_pattern::pre_process(const char * s) {  char * result = (char *)malloc(strlen(s) + 1);  int sindex = 0, rindex = 0;  while( sindex < strlen(s) ) {    if( sindex + 3 < strlen(s) && s[sindex] == '\\' && s[sindex+1] == 'x' && 	isxdigit(s[sindex + 2]) && isxdigit(s[sindex + 3]) ){      result[rindex] = hex2dec(s[sindex + 2])*16 + hex2dec(s[sindex + 3]);      switch ( result[rindex] ) {        case '$':        case '(':        case ')':        case '*':        case '+':        case '.':        case '?':        case '[':        case ']':        case '^':        case '|':        case '{':        case '}':        case '\\':          cerr << "Warning: regexp contains a regexp control character, "               << result[rindex] << ", in hex (\\x" << s[sindex + 2]                << s[sindex+3] << ".\nI recommend that you write this as "               << result[rindex] << " or \\" << result[rindex]                << " depending on what you meant.\n";          break;        case '\0':          cerr << "Warning: null (\\x00) in layer7 regexp. "               << "A null terminates the regexp string!\n";	  break;        default:          break;      }      sindex += 3; /* 4 total */    }    else      result[rindex] = s[sindex];    sindex++;     rindex++;  }  result[rindex] = '\0';  return result;}bool l7_pattern::matches(char *buffer) {    int rc = regexec(&preg, buffer, 0, NULL, eflags);  if(rc == 0)	return true;  else		return false;}string l7_pattern::getName() {  return name;}int l7_pattern::getMark() {  return mark;}static char ** readl7dir(string dirname){  DIR * scratchdir;  struct dirent ** namelist;  char ** subdirs = (char **)malloc(MAX_SUBDIRS * sizeof(char *));  int n, d = 1;  subdirs[0] = "";  n = scandir(dirname.c_str(), &namelist, 0, alphasort);  if (n < 0){      perror("scandir");      cerr << "Couldn't open " << dirname << endl;      exit(1);  }  else{    while(n--){      char fulldirname[MAX_FN_LEN];      snprintf(fulldirname, MAX_FN_LEN, "%s/%s", dirname.c_str(),                namelist[n]->d_name);      if((scratchdir = opendir(fulldirname)) != NULL)      {        closedir(scratchdir);        if(!strcmp(namelist[n]->d_name, ".") ||            !strcmp(namelist[n]->d_name, ".."))          /* do nothing */ ;        else{          subdirs[d] = (char *)malloc(strlen(namelist[n]->d_name) + 1);          strcpy(subdirs[d], namelist[n]->d_name);          d++;          if(d >= MAX_SUBDIRS - 1)          {            cerr << "Too many subdirectories, skipping the rest!\n";            break;          }        }      }      free(namelist[n]);    }    free(namelist);  }    subdirs[d] = NULL;  return subdirs;}static string findpatternfile(string protocol){  char filename[MAX_FN_LEN];  char ** subdirs;  int n = 0;  subdirs = readl7dir(l7dir);  while(subdirs[n] != NULL){    int c = snprintf(filename, MAX_FN_LEN, "%s/%s/%s.pat", l7dir.c_str(),                      subdirs[n], protocol.c_str());    if(c > MAX_FN_LEN){      cerr << "Filename beginning with " << filename << " is too long!\n";      exit(1);    }    ifstream test(filename);    /* read in the pattern from the file */    if(test.is_open()){      test.close();      string answer = filename;      return answer;    }    n++;  }  cerr << "Couldn't find a pattern definition file for " << protocol << endl;  exit(1);}// Loads in the configuration filel7_classify::l7_classify(string filename){  string line;  int nrules = 0;  int discussedbitusage = 0;  ifstream conf(filename.c_str());  l7printf(2, "Attempting to read configuration from %s\n", filename.c_str());  if(!conf.is_open()){    cerr << "Could not read from " << filename << endl;    exit(1);  }  while(getline(conf, line)){    stringstream sline;    string proto, patternfile;    int mk;    bool nothingbutspaces = true;    // Lines starting with # are comments    if(line[0] == '#') continue;    // blank lines are ignored    for(unsigned int i = 0; i < line.size(); i++)      if(!isspace(line[i])) nothingbutspaces = false;    if(nothingbutspaces) continue;      sline << line;    if(!(sline >> proto) || !(sline >> mk)){      cerr << "Ignoring line because it isn't in the format 'protocol mark':"           << line << endl;      continue;    }    if(mk <= 1 || mk >= (markmask >> maskfirstbit) ){      cerr << "Ignoring line because the mark is not in the range 3-"           << (markmask >> maskfirstbit) << ":\n" << line << endl;      if(!discussedbitusage){        cerr << "Your mask allows me to use " << masknbits              << " bits, and the values 0, 1 and 2 have special meanings.\n";        discussedbitusage = 1;      }      continue;    }    patternfile = findpatternfile(proto);    if(add_pattern_from_file(patternfile, mk)){      nrules++;      if(markmask == 0xffffffff)        l7printf(0, "Added: %s\tmark=%d\n", proto.c_str(), mk);      else        l7printf(0, "Added: %s\tGiven mark=%d\t"                    "Actual mark (after applying mask)=%#08x\n",                    proto.c_str(), mk, (mk << maskfirstbit));    }  }  if(nrules < 1){    cerr << "No valid rules, exiting.\n";    exit(1);  }}l7_classify::~l7_classify() {}// Returns 1 on sucess, 0 on failureint l7_classify::add_pattern_from_file(string filename, int mark) {  int eflags, cflags;  string pattern = "";  l7printf(2, "Attempting to load pattern from %s\n", filename.c_str());  if(!parse_pattern_file(cflags, eflags, pattern, filename)){    cerr << "Failed to parse pattern file " << filename << endl;    return 0;  }  l7printf(2, "pattern='%s'\n", pattern.c_str());  l7printf(2, "eflags=%d cflags=%d\n", eflags, cflags);  l7_pattern *l7p=new l7_pattern(basename(filename),pattern,eflags,cflags,mark);  patterns.push_back(l7p);  return 1;}int l7_classify::classify(char * buffer) {  list<l7_pattern *>::iterator current = patterns.begin();  while (current != patterns.end()) {    l7printf(3, "checking against %s\n", (*current)->getName().c_str());    if((*current)->matches(buffer)){      l7printf(1, "matched %s\n", (*current)->getName().c_str());      return (*current)->getMark();    }    current++;  }  l7printf(3, "No match yet\n");  return NO_MATCH_YET;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品视频yy9299一区| 国产欧美中文在线| 国产亚洲精品久| 国产超碰在线一区| 中文字幕国产一区| 欧美日韩的一区二区| 欧美区在线观看| 精品一区二区三区的国产在线播放| 亚洲影院免费观看| 国产精品亚洲一区二区三区在线| 欧美日韩一二区| 国产精品丝袜一区| 国产一区二区三区视频在线播放| 欧美午夜电影一区| 中文字幕在线一区| 国产黄色精品网站| 日韩精品影音先锋| 日本中文在线一区| 欧美视频完全免费看| 亚洲男人的天堂一区二区| 国产成人精品亚洲午夜麻豆| 欧美不卡一区二区三区| 美女精品自拍一二三四| 欧美日韩国产首页| 亚洲不卡在线观看| 91电影在线观看| 亚洲日本在线a| av在线不卡免费看| 中文字幕国产一区二区| 国产精品99久久久久久似苏梦涵| 久久亚洲欧美国产精品乐播| 精品一区二区三区在线观看国产| 欧美电影在线免费观看| 日韩精品亚洲一区| 8x8x8国产精品| 日本91福利区| 日韩亚洲欧美一区二区三区| 美女久久久精品| 精品国产乱码久久久久久老虎| 蜜臂av日日欢夜夜爽一区| 欧美一区二区三区小说| 麻豆精品视频在线观看免费| 欧美第一区第二区| 激情欧美一区二区| 国产喷白浆一区二区三区| 成人一区二区三区视频在线观看| 中文字幕 久热精品 视频在线 | 亚洲一区二区在线免费观看视频| av综合在线播放| 亚洲欧美视频在线观看| 欧美在线观看视频一区二区三区| 午夜精品福利一区二区三区蜜桃| 欧美一级在线免费| 国产精品亚洲一区二区三区妖精| 欧美国产成人精品| 欧美视频一区二区| 寂寞少妇一区二区三区| 中文字幕亚洲一区二区av在线 | 精品成人一区二区| 成人精品一区二区三区四区 | 欧美日韩一本到| 麻豆成人免费电影| 国产精品久久久久7777按摩| 日本道精品一区二区三区| 日韩高清不卡一区二区三区| 国产女同互慰高潮91漫画| 色一情一伦一子一伦一区| 亚洲成人自拍偷拍| 国产日韩欧美高清在线| 欧美视频一二三区| 成人午夜又粗又硬又大| 亚洲第一搞黄网站| 欧美激情一二三区| 日韩一区二区三区精品视频| 成人app下载| 免费成人性网站| 中文字幕一区二区三区不卡 | 欧美图区在线视频| 国产一区二区三区精品欧美日韩一区二区三区 | 丁香婷婷综合色啪| 午夜日韩在线观看| 国产精品国产三级国产有无不卡| 欧美日韩精品高清| 91在线视频官网| 国产一区二区中文字幕| 亚洲va国产天堂va久久en| 欧美国产国产综合| 欧美大白屁股肥臀xxxxxx| 色综合久久中文综合久久牛| 久久国产精品99久久久久久老狼 | 美女网站在线免费欧美精品| 一二三区精品视频| 中文字幕av一区 二区| 欧美白人最猛性xxxxx69交| 色婷婷激情一区二区三区| 国产精品系列在线观看| 蜜臂av日日欢夜夜爽一区| 午夜视频在线观看一区二区| 亚洲精品伦理在线| 亚洲视频中文字幕| 中文字幕免费观看一区| www精品美女久久久tv| 91精品国产色综合久久久蜜香臀| 9久草视频在线视频精品| 国产成人精品免费视频网站| 国内精品久久久久影院薰衣草 | 亚洲综合在线观看视频| 中文字幕高清一区| 欧美精品一区二区三区蜜桃视频| 91精品国产一区二区三区 | 亚洲另类在线制服丝袜| 中文字幕免费一区| 国产精品大尺度| 国产精品剧情在线亚洲| 国产精品入口麻豆原神| 国产精品伦一区二区三级视频| 国产欧美一区二区精品忘忧草| 欧美精品一区二区久久久| 精品国产sm最大网站| 日韩精品综合一本久道在线视频| 日韩一级视频免费观看在线| 欧美一区二区美女| 欧美大片一区二区| 国产拍揄自揄精品视频麻豆| 国产精品素人一区二区| 1024成人网色www| 亚洲综合色丁香婷婷六月图片| 亚洲国产一区视频| 视频在线在亚洲| 精久久久久久久久久久| 国产成人夜色高潮福利影视| 波多野结衣亚洲一区| 99精品视频在线播放观看| 日本精品一区二区三区高清 | 麻豆一区二区三区| 国产又黄又大久久| 不卡av在线网| 欧美日韩国产片| 精品嫩草影院久久| 中文字幕一区二区日韩精品绯色| 亚洲国产日产av| 久久国产精品99久久人人澡| 岛国一区二区三区| 欧美色图天堂网| 欧美精品一区二区久久久| 国产精品国产三级国产专播品爱网| 亚洲午夜羞羞片| 国产一区二区在线观看免费| 色综合天天天天做夜夜夜夜做| 欧美久久久久久蜜桃| 欧美激情一区三区| 五月激情综合婷婷| 成人一区二区三区中文字幕| 欧美日韩高清一区二区不卡| 久久综合色鬼综合色| 亚洲精品成人少妇| 国内外成人在线| 欧美在线你懂得| 国产亚洲欧美日韩俺去了| 亚洲一区二区高清| 国产精品小仙女| 在线看不卡av| 欧美极品美女视频| 日韩电影在线一区二区三区| 99re这里只有精品首页| 日韩欧美电影一区| 亚洲专区一二三| 懂色一区二区三区免费观看| 日韩欧美你懂的| 一区二区三区不卡视频在线观看| 国内精品免费**视频| 欧美精品久久久久久久久老牛影院| 中文字幕一区二区5566日韩| 国产九色sp调教91| 欧美一区二区观看视频| 国产精品免费视频网站| 蜜臀av性久久久久蜜臀av麻豆| 日本国产一区二区| 国产精品成人免费在线| 久久成人麻豆午夜电影| 欧美丝袜丝nylons| 亚洲精品成人少妇| 91麻豆精品在线观看| 中文字幕 久热精品 视频在线| 国产呦精品一区二区三区网站| 3d成人h动漫网站入口| 亚洲午夜私人影院| 色综合久久99| 亚洲精品综合在线| 97精品国产露脸对白| 国产精品久久久久久久裸模| 国产丶欧美丶日本不卡视频| 91精品国产综合久久久蜜臀粉嫩 | 欧美一区二区视频在线观看| 午夜精品免费在线观看| 在线观看网站黄不卡| 亚洲一区在线免费观看| 在线中文字幕一区| 亚洲成人综合网站| 欧美一区二区视频在线观看2022|