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

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

?? accessctrl.c

?? 手機短消息服務的服務器和客戶端
?? C
字號:
/*========================================================== * Program : accessctrl.c                  Project : smslink * Authors : Philipp Klaus <pklaus@access.ch>. *           Philippe Andersson. * Date    : 11/02/99 * Version : 0.03b * Comment : Handling routines for /etc/gsmaccess ACL. * * Modification History : * - 0.01b (27/01/99) : Initial release. * - 0.02b (06/02/99) : Introduced a boolean to bypass use of *   the ACL system. When the ACCESSFILE is not present, the *   check function always return SUCCESS. Cosmetics. * - 0.03b (11/02/99) : Complete rewrite. Start implementing *   ACL's through "access:network/mask" entries stored in a *   linked list. *========================================================*/#include <stdio.h>#include <stdlib.h>#include <string.h>#include <ctype.h>#include <math.h>                            /* for pow() */#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <dial/modems.h>#include <dial/mdmerrno.h>#include "sms_serv.h"/*========================================================*//**********           GLOBAL VARIABLES             ********//*========================================================*/int use_acl = TRUE;/*========================================================*//**********               FUNCTIONS                ********//*========================================================*/void acl_list_init (acl_list *list){  list->head = NULL;  list->tail = NULL;}                                     /* acl_list_init () *//*========================================================*/int empty_acl_list (acl_list list){  return (list.head == NULL);}                                    /* empty_acl_list () *//*========================================================*/void acl_list_insert (acl_list *list, int action, struct in_addr network,                      unsigned long no_mask){  /* WARNING : the order of the elements IS relevent - has to   * be the same as in the access file => avoid inserting at   * list head. Do it at the tail. */    struct acl_item *element;  /* alloc memory for new element */  element = (struct acl_item *) malloc (sizeof (struct acl_item));  if (!element)    syserr ("sms_serv: can't malloc() for new ACL entry");    /* initialize fields for new element */  element->action = action;  element->network.s_addr = network.s_addr;  element->nomask = no_mask;    /* chain it in the list */  if (empty_acl_list (*list)) {    list->head = element;    list->tail = element;    element->next = NULL;    element->prev = NULL;  }  else {    element->next = NULL;    element->prev = list->tail;    list->tail->next = element;    list->tail = element;  }}                                   /* acl_list_insert () *//*========================================================*/void free_acl_list (acl_list *list){  struct acl_item *cursor;  if (!empty_acl_list (*list)) {    /* hop to element before last */    cursor = list->tail->prev;    /* now go back and clean behind */    while (cursor != NULL) {      free (cursor->next);      cursor->next = NULL;      list->tail = cursor;      cursor = cursor->prev;    }                           /* while (cursor != NULL) */  }                           /* if (!empty_acl_list (... */  /* now clean last element and reset header */  free (list->head);  list->head = NULL;  list->tail = NULL;}                                     /* free_acl_list () *//*========================================================*/#ifdef INCL_DEBUG_CODEvoid print_acl_list (acl_list list){  struct acl_item *cursor;  if (!empty_acl_list (list)) {    cursor = list.head;    fprintf (stdout, "%-5s : [%s] / %d\n",             (cursor->action == ACL_ALLOW) ? "ALLOW" : "DENY", 	    inet_ntoa (cursor->network),            cursor->nomask);    while (cursor->next != NULL) {      cursor = cursor->next;      fprintf (stdout, "%-5s : [%s] / %d\n",               (cursor->action == ACL_ALLOW) ? "ALLOW" : "DENY", 	      inet_ntoa (cursor->network),              cursor->nomask);    }  }  else {    fprintf (stdout, "sms_serv: empty 'ACL' list.\n");  }}                                    /* print_acl_list () */#endif/*========================================================*/int read_acl (acl_list *list) {	  FILE *aclfile;  char *buffer;  int counter = 0;                 /* valid entries count */  int act_char;  int action;  struct in_addr netorip;  int netmask;                       /* as read form file */  unsigned long nomask;  char *ptr, *pptr, *err;	  /*------------------------------------- Initializations */  buffer = mdmalloc (BUFFSIZE);  if (!buffer) {    mdmerrno = -EMDMEM;    return (FAILURE);  }  /* Open input file */  if ((aclfile = fopen (ACCESSFILE, "r")) == NULL) {    use_acl = FALSE;    syslog ((FACILITY | LOG_WARNING), "access control is DISABLED.");    return (SUCCESS);  }  /*------------------------------------ File upload loop */  while ((fgets (buffer, BUFFSIZE, aclfile) != NULL) && (counter < MAXACLS)) {    buffer[strlen (buffer) - 1] = '\0';    /* ignore blank lines and comments */    if (buffer[0] == '#' || buffer[0] == '\0' || buffer[0] == '\n')      continue;    /* parse the line we read - silently ignore invalid ones */#ifdef INCL_DEBUG_CODE   fprintf (stderr, "now parsing : [%s]\n", buffer);#endif    /*.......................................action (int) */    if ((ptr = strchr (buffer, ':')) == NULL)      continue;    *ptr = '\0';    act_char = toupper (buffer[0]);    switch (act_char) {      case 'Y':        action = ACL_ALLOW;	break;      case 'N':        action = ACL_DENY;	break;      default:        continue;    } /* switch () */    ptr++;    /*................................net. or IP (char *) */    if ((pptr = strchr (ptr, '/')) == NULL)      continue;    *pptr = '\0';        if ((strlen (ptr) < 7) || (strlen (ptr) > 15))      continue;        /* convert dotted quad to struct in_addr */    if (!inet_aton (ptr, &netorip)) {#ifdef INCL_DEBUG_CODE      fprintf (stderr, "conversion to s_addr failed for [%s]\n", ptr);#endif      continue;    }          ptr = pptr + 1;    /*......................................netmask (int) */    netmask = strtol (ptr, &err, 10);    if ((*ptr == '\0') || (*err != '\0'))      continue;        if ((netmask < 0) || (netmask > 32))      continue;          /* invert the mask value */    netmask = (32 - netmask);        /* build the mask itself (avoiding overflow) */    if (netmask < 32)      nomask = (pow (2, netmask) - 1);    else      nomask = (unsigned long) 4294967295;    /* now create entry in the list */    acl_list_insert (list, action, netorip, htonl (nomask));        counter++;  }                                    /* while (fgets... */  syslog ((FACILITY | LOG_NOTICE), "successfully loaded %d ACL entries.",         counter);#ifdef INCL_DEBUG_CODE  print_acl_list (*list);#endif  mdmfree (buffer);  return (SUCCESS);}                                          /* read_acl () *//*========================================================*/int check_acl (struct in_addr *address, acl_list list) {  int rule;  struct acl_item *cursor;  if (use_acl) {    if (!empty_acl_list (list)) {      cursor = list.head;      rule = 1;      if ((cursor->network.s_addr | cursor->nomask) ==         (address->s_addr | cursor->nomask)) {        /* we have a match */	if (cursor->action == ACL_DENY) {#ifdef INCL_DEBUG_CODE	  fprintf (stderr, "access denied - rule #%d\n", rule);#endif          return (FAILURE);	}	else {#ifdef INCL_DEBUG_CODE	  fprintf (stderr, "access granted - rule #%d\n", rule);#endif          return (SUCCESS);	}      }      while (cursor->next != NULL) {        cursor = cursor->next;	rule++;        if ((cursor->network.s_addr | cursor->nomask) ==           (address->s_addr | cursor->nomask)) {          /* we have a match */	  if (cursor->action == ACL_DENY) {#ifdef INCL_DEBUG_CODE	    fprintf (stderr, "access denied - rule #%d\n", rule);#endif            return (FAILURE);	  }	  else {#ifdef INCL_DEBUG_CODE	    fprintf (stderr, "access granted - rule #%d\n", rule);#endif            return (SUCCESS);	  }        }      }                                     /* while (... */      /* when nothing matches, defaults to DENY */#ifdef INCL_DEBUG_CODE      fprintf (stderr, "no match found - default deny\n");#endif      return (FAILURE);    }    else {                                  /* empty list */#ifdef INCL_DEBUG_CODE      fprintf (stderr, "empty list - default deny\n");#endif      return (FAILURE);    }  }  else                         /* access control disabled */    return (SUCCESS);}                                         /* check_acl () *//*========================================================*//*========================================================== * EOF : accessctrl.c *===================*/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91在线观看免费视频| 成人精品免费网站| 亚洲国产日韩在线一区模特| 国产精品理伦片| 综合精品久久久| 中文字幕日本乱码精品影院| 亚洲国产精品成人久久综合一区| 久久亚洲私人国产精品va媚药| 日韩一区二区三区视频在线观看| 日韩一区二区三区观看| 337p粉嫩大胆色噜噜噜噜亚洲| 欧美成人在线直播| 久久久久久9999| **性色生活片久久毛片| 亚洲精品国产第一综合99久久| 亚洲精品亚洲人成人网在线播放| 亚洲小少妇裸体bbw| 日韩av电影免费观看高清完整版| 久久精品国产99国产精品| 国产一区二区h| 成人午夜av电影| 色婷婷国产精品综合在线观看| 欧美性感一类影片在线播放| 日韩精品综合一本久道在线视频| 精品国产乱码久久久久久浪潮| 精品国产区一区| 亚洲视频资源在线| 日精品一区二区| 国产91露脸合集magnet| 91丨九色丨国产丨porny| 91精品国产综合久久久久久久| 精品盗摄一区二区三区| 亚洲男帅同性gay1069| 日韩电影一二三区| 99视频有精品| 欧美一二三区在线观看| 亚洲人成网站在线| 极品少妇一区二区| 91黄色免费网站| 国产亲近乱来精品视频| 亚洲国产精品久久人人爱| 国产麻豆精品95视频| 欧美亚洲国产一区在线观看网站| 国产日韩在线不卡| 午夜成人免费视频| 91小视频免费观看| 久久久蜜臀国产一区二区| 首页欧美精品中文字幕| 91在线国产福利| 欧美激情艳妇裸体舞| 欧美a级一区二区| 欧美日韩在线综合| 中文字幕一区二区三区精华液| 国产一区二区女| 日韩欧美色电影| 日韩制服丝袜av| 欧洲中文字幕精品| 国产精品久久三| 成人av免费网站| 日本一区二区免费在线观看视频 | 欧美日韩色综合| 国产精品高清亚洲| 国产成人自拍高清视频在线免费播放 | 亚洲综合在线视频| 99久久精品免费观看| 国产欧美一区二区在线观看| 捆绑调教一区二区三区| 欧美一区二区三区在线观看| 亚洲大片精品永久免费| 欧美色窝79yyyycom| 亚洲另类色综合网站| 99国产精品99久久久久久| 国产精品另类一区| 成人午夜视频在线观看| 国产精品国产三级国产aⅴ中文 | 日韩视频国产视频| 日韩高清一区二区| 日韩一区二区三区av| 免费美女久久99| 欧美成人精精品一区二区频| 久久精品国产色蜜蜜麻豆| 精品乱码亚洲一区二区不卡| 精品综合久久久久久8888| 精品国产免费久久| 国产精品一二三四| 亚洲同性同志一二三专区| 色88888久久久久久影院野外| 亚洲精品中文在线影院| 欧美精品精品一区| 久久av资源站| 欧美激情中文字幕一区二区| 99久久精品国产网站| 一区2区3区在线看| 欧美电影免费提供在线观看| 国产激情精品久久久第一区二区| 国产精品亲子伦对白| 在线看一区二区| 麻豆成人av在线| 国产精品蜜臀av| 欧美日韩成人一区二区| 精品一区精品二区高清| 亚洲午夜羞羞片| 日本伦理一区二区| 久久综合狠狠综合久久综合88| 精品久久一区二区| 极品美女销魂一区二区三区免费| 国产欧美一区二区精品仙草咪| 不卡av在线免费观看| 亚洲电影欧美电影有声小说| 精品剧情v国产在线观看在线| eeuss鲁片一区二区三区| 亚洲电影在线播放| 久久综合狠狠综合久久综合88| 99国内精品久久| 久久国产夜色精品鲁鲁99| 亚洲天天做日日做天天谢日日欢 | 日韩美女久久久| 欧美丰满少妇xxxbbb| 国产成人综合亚洲91猫咪| 性做久久久久久免费观看 | av在线不卡免费看| 青青草原综合久久大伊人精品| 国产精品久久久久永久免费观看 | 欧美日韩在线三级| 国产不卡高清在线观看视频| 日韩国产欧美一区二区三区| 综合在线观看色| 久久综合久久综合亚洲| 欧美在线999| 成人午夜在线视频| 国产一区999| 久久国产精品露脸对白| 亚洲第一成年网| 亚洲激情男女视频| 亚洲婷婷国产精品电影人久久| 久久精品人人做人人综合| 制服丝袜中文字幕一区| 欧美日韩一区在线观看| 91麻豆国产精品久久| 成人国产精品视频| 国产成人精品一区二区三区网站观看| 蜜臀久久99精品久久久久久9 | 不卡的电影网站| 韩国av一区二区| 久久国产视频网| 日韩国产精品久久| 日韩精品亚洲专区| 午夜精品一区二区三区三上悠亚| 亚洲男人天堂av网| 一区二区三区日本| 亚洲一区二区在线观看视频| 亚洲美女精品一区| 国产精品久久夜| 亚洲欧洲国产日本综合| 亚洲色图欧美激情| 亚洲国产视频一区二区| 亚洲18女电影在线观看| 日日骚欧美日韩| 久久精品国产精品亚洲精品| 极品美女销魂一区二区三区| 国产精品白丝av| 不卡视频免费播放| 91成人网在线| 欧美一区二区三区四区久久| 日韩一级片在线观看| 久久免费电影网| 国产精品亲子乱子伦xxxx裸| 亚洲欧美日韩系列| 亚洲国产欧美在线| 久久99久久精品| 成人国产亚洲欧美成人综合网| 色国产精品一区在线观看| 欧美日韩免费高清一区色橹橹| 91精品在线一区二区| 精品乱人伦小说| 亚洲天堂免费在线观看视频| 亚洲成人综合视频| 国产主播一区二区三区| 色哟哟一区二区三区| 337p亚洲精品色噜噜噜| 国产色爱av资源综合区| 亚洲九九爱视频| 久久99国产精品成人| 99在线精品观看| 日韩视频永久免费| 中文字幕一区不卡| 久久精品国产精品亚洲精品| 丰满白嫩尤物一区二区| 欧美人与禽zozo性伦| 国产欧美日韩中文久久| 亚洲午夜一区二区| 福利一区二区在线观看| 欧美日韩中字一区| 国产精品成人一区二区艾草| 日韩电影免费在线| 91视频一区二区| 国产亚洲成aⅴ人片在线观看 | 国产精品视频九色porn| 亚洲成人一区二区| 91在线观看美女|