亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
99久精品国产| 亚洲国产精品传媒在线观看| 国产精品超碰97尤物18| 国产成人在线看| 国产精品毛片a∨一区二区三区| 国产成人精品免费| 中文字幕高清一区| 99精品桃花视频在线观看| 一区二区三区四区精品在线视频| 色先锋久久av资源部| 亚洲国产成人91porn| 欧美三级乱人伦电影| 日韩va欧美va亚洲va久久| 日韩一级二级三级| 国产高清精品久久久久| 亚洲视频一区二区在线| 欧美情侣在线播放| 久久成人av少妇免费| 中文字幕精品—区二区四季| 色综合久久天天综合网| 日本中文字幕不卡| 国产亚洲制服色| 欧美伊人精品成人久久综合97| 亚洲成人av在线电影| 久久久久久一二三区| 91尤物视频在线观看| 爽爽淫人综合网网站| 久久精品这里都是精品| 色呦呦日韩精品| 日本不卡一二三区黄网| 国产精品久久久久久久久久免费看| 91在线小视频| 中文字幕日韩一区| 亚洲女人****多毛耸耸8| 成人美女视频在线看| 精品久久免费看| 成人午夜短视频| 亚洲bt欧美bt精品| 亚洲国产精品精华液2区45| 91美女蜜桃在线| 国产一区二区伦理片| 一区二区三区中文字幕精品精品| 精品乱码亚洲一区二区不卡| 色婷婷一区二区| 紧缚奴在线一区二区三区| 亚洲精品高清在线观看| 久久久久99精品一区| 欧美精品1区2区| 91视频精品在这里| 国产麻豆成人传媒免费观看| 午夜精品一区二区三区免费视频| 国产网红主播福利一区二区| 91麻豆精品国产91久久久更新时间| 成人性生交大片免费看中文| 亚洲午夜免费电影| 久久精品夜夜夜夜久久| 99久久精品免费看国产免费软件| 免费人成在线不卡| 亚洲人精品一区| 久久夜色精品一区| 3751色影院一区二区三区| 色综合久久久久网| 成人在线视频一区| 国产一区二区三区香蕉| 日本伊人色综合网| 丝袜美腿亚洲综合| 亚洲香蕉伊在人在线观| 伊人色综合久久天天人手人婷| 中文字幕精品一区二区精品绿巨人 | 亚洲图片另类小说| 欧美国产欧美综合| 久久久久久久久久久电影| 日韩欧美色综合| 正在播放一区二区| 91麻豆精品国产无毒不卡在线观看 | 91网站最新网址| 亚洲欧美怡红院| 国产欧美一区二区精品性| 欧美tickling网站挠脚心| 欧美日本国产视频| 欧美日韩国产系列| 69成人精品免费视频| 欧美男男青年gay1069videost| 欧美中文字幕一二三区视频| 色欧美日韩亚洲| 色婷婷国产精品综合在线观看| av电影在线不卡| 91免费看片在线观看| 91美女片黄在线观看| 欧美性一区二区| 欧美精品久久99| 欧美一区二区三区人| 精品久久久久久久久久久院品网 | 欧美三级电影在线看| 欧美日韩在线亚洲一区蜜芽| 欧美偷拍一区二区| 91视频你懂的| 欧美日韩视频在线一区二区| 久久精品视频一区二区| 国产亚洲欧美一区在线观看| 日本一区二区成人在线| 1024精品合集| 亚洲va欧美va人人爽| 日韩高清欧美激情| 国产综合成人久久大片91| 成人性视频免费网站| 欧美影视一区在线| 日韩欧美精品三级| 中文字幕av一区二区三区| 亚洲美女电影在线| 日韩福利视频导航| 成人高清在线视频| 欧美三级日韩三级国产三级| 日韩你懂的在线播放| 欧美激情艳妇裸体舞| 亚洲第一综合色| 国产精品77777竹菊影视小说| 99久久综合色| 欧美一区二区私人影院日本| 久久久九九九九| 亚洲一区二区三区视频在线播放 | 性做久久久久久久久| 国产呦萝稀缺另类资源| 91美女在线观看| 久久综合色鬼综合色| 一二三四社区欧美黄| 精品一区二区av| 91麻豆国产自产在线观看| 精品日韩在线观看| 一级日本不卡的影视| 国产白丝精品91爽爽久久| 欧美日本一道本在线视频| 日本一区二区久久| 久热成人在线视频| 在线免费观看日本欧美| 久久你懂得1024| 天天免费综合色| 91亚洲精品乱码久久久久久蜜桃| 欧美一区二区视频观看视频| 综合久久一区二区三区| 国产麻豆一精品一av一免费 | 欧洲日韩一区二区三区| 久久精品一区二区三区不卡 | 日韩精品每日更新| 91猫先生在线| 国产片一区二区三区| 久久精品久久99精品久久| 欧美综合在线视频| 亚洲免费观看高清完整| 国产馆精品极品| 精品国产一二三| 蜜臀av一区二区在线免费观看| 色综合久久中文综合久久97| 国产精品人妖ts系列视频| 国内精品国产成人国产三级粉色| 欧美私模裸体表演在线观看| 亚洲人成电影网站色mp4| 国产乱码字幕精品高清av | xfplay精品久久| 午夜av电影一区| 欧美日韩黄色一区二区| 一区二区三区在线观看视频| 成人99免费视频| 国产精品嫩草99a| 国产成人高清在线| 久久久噜噜噜久久中文字幕色伊伊 | 欧美吻胸吃奶大尺度电影 | 99免费精品在线观看| 久久九九国产精品| 国产一区二区三区免费播放| 91精品国产麻豆| 日韩在线卡一卡二| 欧美另类z0zxhd电影| 午夜精品福利一区二区三区av | 国产乱码字幕精品高清av| 2014亚洲片线观看视频免费| 精彩视频一区二区| 久久精品在这里| 成人午夜电影网站| 国产精品国产三级国产aⅴ无密码| 成人黄色大片在线观看| 中文字幕一区二区三区不卡在线 | 综合av第一页| 99久久99久久精品免费看蜜桃| 亚洲欧美日韩成人高清在线一区| 色香蕉久久蜜桃| 亚洲mv大片欧洲mv大片精品| 91精品久久久久久蜜臀| 麻豆精品新av中文字幕| 亚洲精品中文在线影院| 中文字幕中文字幕一区二区| 欧美大片一区二区三区| 久草在线在线精品观看| 日韩女优制服丝袜电影| 精品亚洲aⅴ乱码一区二区三区| 日韩欧美电影在线| 国产99久久久久久免费看农村| 国产精品美女久久福利网站| 色老头久久综合| 日产欧产美韩系列久久99|