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

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

?? server.y

?? 手機短消息服務的服務器和客戶端
?? Y
?? 第 1 頁 / 共 3 頁
字號:
%{/*========================================================== * Program : server.y                      Project : smslink * Author  : Philippe Andersson. * Date    : 02/12/99 * Version : 0.35b * Notice  : (c) Les Ateliers du Heron, 1998 for Scitex Europe, S.A. * Comment : Parser module for SMS server * * Modification History : * - 0.01a (19/08/98) : Initial release. * - 0.02a (21/08/98) : Implemented "variable" assignment and *   individual clearing. * - 0.03a (21/08/98) : Added support for prompt. * - 0.04a (21/08/98) : Added dequoting for strings. * - 0.05a (22/08/98) : Added detailed help handling and individ. *   show for items. Also implemented a separate exit function. * - 0.06a (24/08/98) : Completed help system. Also stuffed the *   conclude() function a bit. * - 0.10a (27/08/98) : Merged the parser module into the main *   sms_serv program. Moved yyerror () to server.l. * - 0.11a (01/09/98) : Completed output migration to socket *   (printf's to sprintf's). * - 0.12a (01/09/98) : Start implementing restricted access *   to non-sharable resources (modems) through semaphores. * - 0.13a (03/09/98) : Completed implementation of crit. *   sections through semaphores and shared memory. * - 0.14a (06/09/98) : Inserted #ifdef's to have it compile *   under RedHat (GNU Libc 6). Also implemented minimal validation *   on message parameters (presence checking). * - 0.15a (24/09/98) : Changed [LF] to [CR][LF] in messages *   sent through the socket. * - 0.16a (27/09/98) : Added positive acknowledgement for *   variable setting ("Ok") for error checking on client side. *   Improved some help messages in give_help(). * - 0.17a (01/10/98) : Added logging detail (variable setting). * - 0.18a (19/10/98) : Changed 'struct modem_def' to 'struct *   gsms_def' and 'modemsdef' to 'gsmdevices'. Cosmetics. * - 0.20a (20/10/98) : Merge the 'spit.c' source into this. *   Implement the actual SMS sending code. * - 0.21a (20/10/98) : Implemented 'devicelist' command. * - 0.22a (21/10/98) : Added a signal trap for SIGPIPE, in *   order to avoid getting locked GSM modules when a client *   dies or quits unexpectedly (in the critical section). * ++++ Switched to Beta ++++ * - 0.23b (21/10/98) : Added deslashdot() function to clean *   phone numbers before sending them to the GSM. * - 0.24b (22/10/98) : Improved SIGPIPE handling by adding *   'instance_is_set' variable telling whether the value of *   'instance' should be considered relevant. * - 0.25b (23/10/98) : Added handling for 'user' parameter, *   and improved checking on phone number validity. 'user' *   parameter also be made required. Corrected timeout values *   in PIN / PUK transmission, and a bug in CSCA-related sprintf *   format. * - 0.26b (05/11/98) : Corrected an inconsistency in the error *   message related to catching SIGPIPE signal. * - 0.27b (13/12/98) : Moved to sigaction() signal handling. *   Added handler for SIGTERM in crit. section. Included *   handling of new member "owner" in struct gsms_def. * - 0.28b (14/12/98) : Corrected a boundary-checking bug in the *   search for a free GSM instance loop. * - 0.29b (16/05/99) : Added "uptime" command. * - 0.30b (18/05/99) : Refined the uptime display. Solved a *   bug related to the buffer length in "help" command. * - 0.31b (06/06/99) : Added "days" counter to uptime display. *   Adapted on-line help accordingly. Also added a command to  *   turn off notification for incoming SMS messages in send_sms(). * - 0.32b (28/06/99) : In send_sms(), moved the AT+CNMI command *   after the PIN check routine. PIN-Activated SIM is required *   for AT+CNMI. * - 0.33b (29/06/99) : Moved 3 functions over to stuff.c and *   made them public (misc. string handling functions). * - 0.34b (20/09/99) : Improved the "show" command to also *   display the current length of the message string. * - 0.35b (02/12/99) : Improved default SMSC handling in *   send_sms(). Now takes its default value from the configuration *   file only (/etc/gsmdevices). Adapted on-line help accordingly. *   Added "aclist" command and related help. Cosmetics. *========================================================*//* must be defined before the usual includes (stdlib.h) */#define RAND_MAX	9999   /* max val. for random PIN */#include <stdio.h>#include <stdlib.h>                  /* for errno & div() */#ifdef LINUX_LC6#  include <errno.h>#endif                                /* #ifdef LINUX_LC6 */#include <strings.h>#include <signal.h>#include <time.h>                       /* for difftime() */#include <math.h>                            /* for log() */#include <netinet/in.h>                    /* for ntohl() */#include <termios.h>         /* for baudrates definitions */#include <dial/modems.h>           /* requires 'libmodem' */#include "sms_serv.h"#define min(a, b)  ( a < b ? a : b )/*-------------------------------------External variables *//* for lex & yacc/bison */extern int errno;extern int yyleng;extern char *yytext;extern char myinput[];extern char *myinputptr;          /* cur. pos. in myinput */extern char *myinputlim;                   /* end of data *//* program specific */extern int csfd;                      /* client socket FD */extern char *buffer;    /* scratch space for C/S dialogue */extern struct symbols symbols;extern int ngsmdevs;       /* num. configured GSM devices *//*---------------------------------------Global variables */char *paramname = NULL;char *idname = NULL;/* char *buffer = NULL; */int i;int instance;int instance_is_set = FALSE;int vtype;/*------------------------------------For the help system *//* Be carefull to match the defines here with the array below */#define H_HELP		0#define H_CLEAR		1#define H_SET		2#define H_SEND		3#define H_QUIT		4#define H_EXIT		5#define H_BYE		6#define H_SHOW		7#define H_STATS		8#define H_DEVLIST	9#define H_UPTIME        10#define H_ACLIST        11#define H_MAX		12            /* keeps (last + 1) */char *help_topics[(H_MAX + 1)] = {"help",                                  "clear",		                  "set",		                  "send",			          "quit",			          "exit",			          "bye",			          "show",			          "stats",			          "devicelist",			          "uptime",				  "aclist",			          NULL};/*----------------------------Local Function declarations */int shiftleft (char *, int);int dequote (char *);int deslashdot (char *);int give_help (char *);int help_lookup (char *);int load_help ();void free_help ();void print_device_list ();void print_access_list ();void compute_uptime ();int validate_msg_param (struct symbols *);int send_sms (struct gsms_def *);void sms_send_wrapper ();void unlock_gsm ();void conclude ();/*========================================================*/%}%union {  char *string;          /* string buffer for token value */}/* commands */%token T_HELP%token T_CLEAR%token T_SEND%token T_DEVLIST%token T_ACLIST%token T_UPTIME%token T_SET%token T_QUIT%token T_STATS%token T_SHOW/* others */%token T_PARAM%token <string> T_TEXT%token <string> T_PHNUM%token T_NAME%type <string> value%%statement:	single_command	|	param_command	|	assignment	|	/* allow empty input */	;single_command:	T_HELP		{				sprintf (buffer, "\r\nSMS Server Help\r\n"				        "===============\r\n"				        "he | help [command] : displays help\r\n"				        "set item = value    : sets message parameters\r\n"				        "clear [item]        : clears item (all items)\r\n"				        "send                : sends SMS\r\n");				tellsock (csfd, buffer);				sprintf (buffer, "dl | devicelist     : lists configured GSM devices\r\n"					"acl | aclist        : dumps the registered ACL's to screen\r\n"					"ut | uptime         : displays server uptime\r\n"				        "quit | exit | bye   : closes connection and exits\r\n"				        "stats               : displays server stats\r\n"				        "sh | show [item]    : displays item (all items)\r\n\r\n");				tellsock (csfd, buffer);				}	|	T_CLEAR		{				strcpy (symbols.smsc, DEFAULTSMSC);				symbols.destgsm[0] = '\0';				symbols.user[0] = '\0';				symbols.message[0] = '\0';				sprintf (buffer, "All items cleared...\r\n");				tellsock (csfd, buffer);				}	|	T_SEND		{				if (validate_msg_param (&symbols))				  sms_send_wrapper ();				else {				  sprintf (buffer, "ERROR: Not all required items are filled in.\r\n");				  tellsock (csfd, buffer);				}				}	|	T_DEVLIST	{				print_device_list ();				}	|	T_ACLIST	{				print_access_list ();				}	|	T_UPTIME	{				compute_uptime ();				}	|	T_STATS		{				sprintf (buffer, "Statistics are not implemented yet.\r\n");				tellsock (csfd, buffer);				}	|	T_SHOW		{				sprintf (buffer, "\r\nCurrent settings:\r\n"); 				tellsock (csfd, buffer);				sprintf (buffer, "smsc = [%s]\r\n", symbols.smsc);				tellsock (csfd, buffer);				sprintf (buffer, "user = [%s]\r\n", symbols.user);				tellsock (csfd, buffer);				sprintf (buffer, "dest = [%s]\r\n", symbols.destgsm);				tellsock (csfd, buffer);				sprintf (buffer, "msg  = [%s] - Length: %d\r\n\r\n", 				         symbols.message, strlen (symbols.message));				tellsock (csfd, buffer);				}	|	T_QUIT		{ conclude (); }	;param_command:  T_HELP parameter				{				give_help (paramname);				free (paramname);				paramname = NULL;				}	|	T_SHOW parameter				{				if (strcmp (paramname, "msg") == 0) {				  free (paramname);				  paramname = (char *) malloc (8 * sizeof (char));				  strcpy (paramname, "message");				}				  				if (strcmp (paramname, "smsc") == 0) {				  sprintf (buffer, "smsc = [%s]\r\n", symbols.smsc);				  tellsock (csfd, buffer);				}				else if (strcmp (paramname, "user") == 0) {				  sprintf (buffer, "user = [%s]\r\n", symbols.user);				  tellsock (csfd, buffer);				}				else if (strcmp (paramname, "dest") == 0) {				  sprintf (buffer, "dest = [%s]\r\n", symbols.destgsm);				  tellsock (csfd, buffer);				}				else if (strcmp (paramname, "message") == 0) {				  sprintf (buffer, "msg  = [%s] - Length: %d\r\n", 				           symbols.message, strlen (symbols.message));				  tellsock (csfd, buffer);				}				else {				  sprintf (buffer, "ERROR: unknown item <%s>\r\n", paramname);				  tellsock (csfd, buffer);				}				free (paramname);				paramname = NULL;				}	|	T_CLEAR parameter				{				if (strcmp (paramname, "msg") == 0) {				  free (paramname);				  paramname = (char *) malloc (8 * sizeof (char));				  strcpy (paramname, "message");				}				  				if (strcmp (paramname, "smsc") == 0) {				  strcpy (symbols.smsc, DEFAULTSMSC);				}				else if (strcmp (paramname, "user") == 0) {				  symbols.user[0] = '\0';				}				else if (strcmp (paramname, "dest") == 0) {				  symbols.destgsm[0] = '\0';				}				else if (strcmp (paramname, "message") == 0) {				  symbols.message[0] = '\0';				}				else {				  sprintf (buffer, "ERROR: unknown item <%s>\r\n", paramname);				  tellsock (csfd, buffer);				}				free (paramname);				paramname = NULL;				}	;assignment:	T_SET variable '=' value				{				if (strcmp (idname, "msg") == 0) {				  free (idname);				  idname = (char *) malloc (8 * sizeof (char));				  strcpy (idname, "message");				}				  				if (strcmp (idname, "smsc") == 0) {				  /* Assign smsc */				  if (strlen ($4) > MAXPHNUMLEN) {				    strncpy (symbols.smsc, $4, MAXPHNUMLEN);				    symbols.smsc[MAXPHNUMLEN] = '\0';				    sprintf (buffer, "WARNING: max. smsc length is %d, value now truncated\r\n",				           MAXPHNUMLEN);			            tellsock (csfd, buffer);				  }				  else				    strcpy (symbols.smsc, $4);				  sprintf (buffer, "Ok\r\n");				  tellsock (csfd, buffer);                                  syslog ((FACILITY | LOG_NOTICE),				         "got new smsc <%s>.", symbols.smsc);				}								else if (strcmp (idname, "user") == 0) {				  /* Assign user */				  if (strlen ($4) > MAXUIDLEN) {				    strncpy (symbols.user, $4, MAXUIDLEN);				    symbols.user[MAXUIDLEN] = '\0';				    sprintf (buffer, "WARNING: max. sender ID length is %d, value now truncated\r\n",				           MAXUIDLEN);			            tellsock (csfd, buffer);				  }				  else				    strcpy (symbols.user, $4);				  sprintf (buffer, "Ok\r\n");				  tellsock (csfd, buffer);                                  syslog ((FACILITY | LOG_NOTICE),				         "sender ID is [%s].", symbols.user);				}								else if (strcmp (idname, "dest") == 0) {				  /* Check whether we have a T_PHNUM */				  if (vtype != T_PHNUM) {				    sprintf (buffer, "Expected a phone number\r\n");				    tellsock (csfd, buffer);				  }				  else {				    /* Assign dest */				    if (strlen ($4) > MAXPHNUMLEN) {				      strncpy (symbols.destgsm, $4, MAXPHNUMLEN);				      symbols.destgsm[MAXPHNUMLEN] = '\0';				      sprintf (buffer, "WARNING: max. dest length is %d, value now truncated\r\n",				             MAXPHNUMLEN);			              tellsock (csfd, buffer);				    }				    else {				      strcpy (symbols.destgsm, $4);				    }				    sprintf (buffer, "Ok\r\n");				    tellsock (csfd, buffer);                                    syslog ((FACILITY | LOG_NOTICE),				           "got destgsm <%s>.", symbols.destgsm);			          }				}								else if (strcmp (idname, "message") == 0) {				  /* Assign message */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久成人18免费观看| 欧美日韩亚洲国产综合| 91麻豆视频网站| 欧美一区二区三区四区高清| 中文字幕欧美区| 免费成人在线播放| 91视频在线观看免费| 337p日本欧洲亚洲大胆精品| 亚洲欧美电影一区二区| 国产一级精品在线| 欧美乱熟臀69xxxxxx| 亚洲欧美影音先锋| 韩国欧美国产1区| 欧美一区二区三级| 亚洲综合成人在线| 91蜜桃免费观看视频| 国产亚洲精品7777| 免费在线观看精品| 欧美精品在欧美一区二区少妇| 中文字幕永久在线不卡| 国产河南妇女毛片精品久久久| 欧美一区二区三区四区久久| 亚洲国产成人精品视频| 一本久道中文字幕精品亚洲嫩| 国产精品卡一卡二卡三| 国产99一区视频免费| 久久亚洲精精品中文字幕早川悠里| 日本麻豆一区二区三区视频| 欧美性xxxxxxxx| 夜夜亚洲天天久久| 欧洲一区二区av| 亚洲午夜精品网| 欧美性大战久久久| 亚洲成人免费视频| 欧美精品一二三区| 男人的天堂久久精品| 欧美年轻男男videosbes| 亚洲第一福利一区| 欧美日韩一区二区三区四区| 亚洲国产日韩一级| 欧美色综合影院| 青椒成人免费视频| 久久久久久久久99精品| 成人一区二区三区中文字幕| 国产精品成人一区二区艾草| 91麻豆6部合集magnet| 亚洲精品写真福利| 在线播放中文字幕一区| 日产欧产美韩系列久久99| 日韩精品在线网站| 国产成a人亚洲| 国产精品―色哟哟| 欧美亚州韩日在线看免费版国语版| 亚洲国产成人高清精品| 欧美一区二区久久| 国产精品一卡二| 中文字幕一区av| 欧美另类变人与禽xxxxx| 麻豆91在线观看| 亚洲国产高清在线| 欧美午夜视频网站| 韩国一区二区在线观看| 中文字幕一区三区| 欧美久久高跟鞋激| 粉嫩久久99精品久久久久久夜| 亚洲欧美日韩国产综合在线| 欧美精品久久天天躁| 国产一区二区三区四| 亚洲精品日韩专区silk| 欧美一级国产精品| av电影在线观看不卡| 日韩av中文字幕一区二区| 久久精品亚洲麻豆av一区二区| 91在线观看一区二区| 日本aⅴ精品一区二区三区| 国产欧美一区二区精品仙草咪| 色综合久久久久综合| 毛片av中文字幕一区二区| 国产精品国产三级国产普通话99| 欧美精品日韩一本| 色综合天天做天天爱| 久草中文综合在线| 亚洲一区二区av电影| 国产精品毛片久久久久久久| 日韩一级欧美一级| 一本大道av伊人久久综合| 国产一区二区伦理片| 亚洲成a人片在线不卡一二三区| 国产欧美一二三区| 欧美一级淫片007| 欧美私人免费视频| 成人一区在线看| 国产在线精品一区二区不卡了 | 国产三级欧美三级日产三级99| 一本一本大道香蕉久在线精品| 国产乱妇无码大片在线观看| 日韩精品欧美精品| 亚洲国产一区二区三区| 中文字幕一区av| 国产精品乱人伦一区二区| 精品久久久久一区| 欧美一区二视频| 欧美色老头old∨ideo| 91麻豆国产精品久久| 岛国一区二区三区| 国产高清不卡二三区| 国产又粗又猛又爽又黄91精品| 日韩不卡一区二区三区| 性久久久久久久| 亚洲成人在线观看视频| 亚洲香蕉伊在人在线观| 亚洲自拍都市欧美小说| 亚洲在线视频免费观看| 亚洲精品国产一区二区三区四区在线 | 一本久道中文字幕精品亚洲嫩| 成人动漫av在线| 成人av在线资源网| 北条麻妃国产九九精品视频| 成人av小说网| 成人午夜在线播放| 99久久久久久99| 色婷婷国产精品综合在线观看| 99精品视频在线免费观看| voyeur盗摄精品| 色欧美88888久久久久久影院| 色8久久人人97超碰香蕉987| 色婷婷综合久久久中文一区二区| 色妞www精品视频| 在线观看日韩高清av| 欧美精品黑人性xxxx| 日韩精品一区二区三区蜜臀 | 欧美高清视频一二三区| 欧美一二三区在线观看| xf在线a精品一区二区视频网站| 久久久亚洲欧洲日产国码αv| 久久九九久久九九| 亚洲欧美日韩国产中文在线| 亚洲韩国一区二区三区| 日本欧美久久久久免费播放网| 国内精品伊人久久久久影院对白| 国产精品18久久久久| 99re这里都是精品| 欧美美女直播网站| 国产日本欧洲亚洲| 亚洲国产裸拍裸体视频在线观看乱了 | 粉嫩av亚洲一区二区图片| 91女厕偷拍女厕偷拍高清| 欧美视频在线播放| 26uuu精品一区二区| 1000部国产精品成人观看| 视频一区欧美精品| 国产成人免费在线视频| 欧美日韩国产综合久久| 久久精品视频在线免费观看| 亚洲精品国产一区二区三区四区在线| 舔着乳尖日韩一区| 本田岬高潮一区二区三区| 911精品产国品一二三产区| 国产日韩精品一区二区三区| 亚洲欧美一区二区不卡| 久久国产综合精品| 在线一区二区三区四区五区 | 宅男噜噜噜66一区二区66| 国产日韩欧美高清在线| 免费一级片91| 色噜噜狠狠色综合中国| 精品国产91亚洲一区二区三区婷婷| 中文字幕一区二区在线观看| 另类调教123区| 欧美在线999| 国产精品私人影院| 老司机精品视频线观看86| 在线国产电影不卡| 国产精品网站在线| 经典三级在线一区| 欧美一区二区性放荡片| 一二三区精品视频| 成人av免费在线| 久久精品日韩一区二区三区| 日韩经典中文字幕一区| 日本韩国一区二区三区| 国产精品色哟哟| 懂色av一区二区三区蜜臀| 精品国一区二区三区| 免费在线观看日韩欧美| 欧美男生操女生| 亚洲电影一级黄| 欧美丝袜第三区| 日韩理论片中文av| 91在线小视频| 国产精品成人网| 99久久精品情趣| 亚洲婷婷综合色高清在线| 成人av动漫网站| 日本一区二区三区四区| 国产91高潮流白浆在线麻豆| 欧美电视剧在线看免费| 九色综合狠狠综合久久| 精品国内片67194| 狠狠v欧美v日韩v亚洲ⅴ|