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

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

?? smsc_cimd.c

?? gnu的專業網關smpp協議支持源代碼。
?? C
?? 第 1 頁 / 共 2 頁
字號:
/****************************************************************************** smsc_cimd.c - Nokia SMS Center (CIMD 1.3).* Mikael Gueck for WapIT Ltd.*/#include <errno.h>#include <string.h>#include <stdio.h>#include <unistd.h>#include <stdlib.h>#include <time.h>#include <sys/time.h>#include <sys/types.h>#include <sys/socket.h>#include "smsc.h"#include "smsc_p.h"#include "gwlib/gwlib.h"#include "alt_charsets.h"/******************************************************************************* Static functions*//* do the handshake baby */static int cimd_open_connection(SMSCenter *smsc);/* waits for an ACK message, returns the ACK command number or -1 for error */static int expect_acknowledge(SMSCenter *smsc, int *cmd, int *err);/* sends a general ACK */static int send_acknowledge(SMSCenter *smsc);/* Reconnect to a CIMD server, use an existing structure */static int connect_tcpip(SMSCenter *smsc);static int parse_cimd_to_iso88591(char *from, char *to, int length);static int parse_iso88591_to_cimd(    char *from, char *to, int length, int alt_charset);/******************************************************************************* Open the connection and log in** return 0 if ok, -1 on failure*/static int cimd_open_connection(SMSCenter *smsc){    char *tmpbuff = NULL;    int ret = 0;    int cmd = 0, err = 0;    /* allocate some spare space */    tmpbuff = gw_malloc(10 * 1024);    memset(tmpbuff, 0, 10*1024);    /* connect */    smsc->socket = tcpip_connect_to_server(smsc->cimd_hostname, smsc->cimd_port,	NULL);	/* XXX add interface_name if required */    if (smsc->socket == -1)        goto error;    /* receive protocol string "CIMD rel 1.37\n" */    for (;;) {        ret = smscenter_read_into_buffer(smsc);        if (strstr(smsc->buffer, "CIMD rel 1.37\n") != NULL)            break;        if (ret < 0) goto logout;    }    debug("bb.sms.cimd", 0, "got the server identification tag");    smscenter_remove_from_buffer(smsc, smsc->buflen);    /* send login string */    sprintf(tmpbuff, "%c%s%c%s%c%s%c%s%c%c",            0x02,            "01", 0x09,            smsc->cimd_username, 0x09,            smsc->cimd_password, 0x09,            "11",            0x03, 0x0A);    ret = write_to_socket(smsc->socket, tmpbuff);    if (ret < 0) goto logout;    /* get an acknowledge message */    smsc->cimd_last_spoke = 0;    if (expect_acknowledge(smsc, &cmd, &err) < 1)        goto logout;    debug("bb.sms.cimd", 0, "logged in");    gw_free(tmpbuff);    return 0;logout:    cimd_close(smsc);error:    error(0, "cimd_open: could not open/handshake");    gw_free(tmpbuff);    return -1;}/******************************************************************************* Open the smscenter*/SMSCenter *cimd_open(char *hostname, int port, char *username, char *password){    SMSCenter *smsc = NULL;    int ret = 0;    /* create a SMSCenter structure */    smsc = smscenter_construct();    if (smsc == NULL) goto error;    smsc->type = SMSC_TYPE_CIMD;    smsc->cimd_hostname = gw_strdup(hostname);    smsc->hostname = gw_strdup(hostname); /* Needed by read_into_buffer() */    smsc->cimd_port = port;    smsc->cimd_username = gw_strdup(username);    smsc->cimd_password = gw_strdup(password);    ret = cimd_open_connection(smsc);    if (ret < 0)        goto error;    sprintf(smsc->name, "CIMD:%s:%d:%s", smsc->cimd_hostname,            smsc->cimd_port, smsc->cimd_username);    return smsc;error:    error(0, "cimd_open: could not open!");    smscenter_destruct(smsc);    return NULL;}/******************************************************************************* Re-open the connection and log in** return -1 if failed*/int cimd_reopen(SMSCenter *smsc){    cimd_close(smsc);    if (cimd_open_connection(smsc) < 0) {        error(0, "Failed to re-open the connection!");        return -1;    }    return 0;}/******************************************************************************* Log out and close the socket**/int cimd_close(SMSCenter *smsc){    char *cbuff = NULL;    int sum;    int ret;    if (smsc->socket == -1) {        debug("bb.sms.cimd", 0, "Trying to close cimd while already closed!");        return 0;    }    cbuff = gw_malloc(2 * 1024);    sprintf(cbuff, "%c%s%c%s%c%c", 0x02, "02", 0x09, "11", 0x03, 0x0A);    sum = write_to_socket(smsc->socket, cbuff);    if (sum < 0) goto error;    /* this time we don't block waiting for acknowledge */    recv(smsc->socket, cbuff, 2*1024, 0);    gw_free(cbuff);    ret = close(smsc->socket);    smsc->socket = -1;    return ret;error:    gw_free(cbuff);    return -1;}/******************************************************************************* Check for MO messages, returns as in smsc_submit_smsmessage in smsc.h*/int cimd_pending_smsmessage(SMSCenter *smsc){    char *tmpbuff = NULL, *newline = NULL;    int ret = 0;    time_t thetime = 0;    /* check for input sanity */    if (smsc == NULL)        goto error;    /* we can only query every 5 seconds */    thetime = time(NULL);    if ((smsc->cimd_last_spoke + 5) > thetime) goto no_messages;    smsc->cimd_last_spoke = thetime;    /* allocate some spare space */    tmpbuff = gw_malloc(10 * 1024);    memset(tmpbuff, 0, 10*1024);    sprintf(tmpbuff, "%c%s%c%s%c%c",            0x02,         /* stx */            "05", 0x09,   /* request for message, tab */            "11",         /* dummy chksum */            0x03, 0x0A);  /* etx, lf */    /* send the poll message to determine if we have messages in queue */    ret = write_to_socket(smsc->socket, tmpbuff);    if (ret < 0) {        debug("bb.sms.cimd", 0, "sending poll message failed");        goto error;    }    /* block while waiting for answer that dataset ends to a 0x0A */    for (;;) {        newline = memchr(smsc->buffer, 0x0A, smsc->buflen);        if (newline != NULL) break;        newline = memchr(smsc->buffer, 0x03, smsc->buflen);        if (newline != NULL) break;        ret = smscenter_read_into_buffer(smsc);        if (ret <= 0) {            debug("bb.sms.cimd", 0, "read_into_buffer failed!, ret=%d", ret);            goto error;        }        usleep(500);        /* Reconnect if no results in 30 seconds */        if (time(NULL) > (thetime + 30)) {            error(0, "timeout occurred, maybe the connection was broken?");            /* Reconnect if neccessary, this catches most of them */            /* XXX this is an ugly kludge, but then again,               CIMD 1.3 is an ugly kludge. */            connect_tcpip(smsc);            goto no_messages;        }    }    /* if we got an nck, cut the message out and return 0 */    newline = memchr(smsc->buffer, 0x15, smsc->buflen);    if (newline != NULL) {        newline = memchr(smsc->buffer, 0x0A, smsc->buflen);        if (newline == NULL)            newline = memchr(smsc->buffer, 0x03, smsc->buflen);        smscenter_remove_from_buffer(smsc, newline - smsc->buffer + 1);        goto no_messages;    }    /* miracle of miracles, we got a message */    gw_free(tmpbuff);    return 1;no_messages:    gw_free(tmpbuff);    return 0;error:    debug("bb.sms.cimd", 0, "smscenter_pending_smsmessage: returning error");    gw_free(tmpbuff);    return -1;}/******************************************************************************* Send a MT message, returns as in smsc_submit_smsmessage in smsc.h*/int cimd_submit_msg(SMSCenter *smsc, Msg *msg){    char *tmpbuff = NULL, *tmptext = NULL;    char msgtext[1024];    int ret;    int cmd = 0, err = 0;    /* Fix these by implementing a could-not-send-because-       protocol-does-not-allow in smsc.c or smsgateway.c */    if (octstr_len(msg->sms.msgdata) + octstr_len(msg->sms.udhdata) < 1) {	if (msg->sms.msgdata == NULL)	    msg->sms.msgdata = octstr_create("");	octstr_append_from_hex(msg->sms.msgdata, "20");    }    if (octstr_len(msg->sms.sender) < 1) {        warning(0, "cimd_submit_smsmessage: ignoring message with 0-length field");        goto okay;  /* THIS IS NOT OKAY!!!! XXX */    }    if (octstr_len(msg->sms.receiver) < 1) {        warning(0, "cimd_submit_smsmessage: ignoring message with 0-length field");        goto okay;  /* THIS IS NOT OKAY!!!! XXX */    }    tmpbuff = gw_malloc(10 * 1024);    tmptext = gw_malloc(10 * 1024);    memset(tmpbuff, 0, 10*1024);    memset(tmptext, 0, 10*1024);    memset(msgtext, 0, sizeof(msgtext));    if (octstr_len(msg->sms.udhdata)) {        octstr_get_many_chars(msgtext, msg->sms.udhdata, 0, octstr_len(msg->sms.udhdata));        octstr_get_many_chars(msgtext + octstr_len(msg->sms.udhdata),                              msg->sms.msgdata, 0,                              140 - octstr_len(msg->sms.udhdata));    } else {        octstr_get_many_chars(msgtext, msg->sms.msgdata, 0,                              octstr_len(msg->sms.msgdata));    }    /* XXX parse_iso88591_to_cimd should use Octstr     * directly, or get a char* and a length, instead of using NUL     * terminated strings.     */    parse_iso88591_to_cimd(msgtext, tmptext, 10*1024, smsc->alt_charset);    /* If messages has UDHs, add the magic number 31 to the right spot */    sprintf(tmpbuff, "%c%s%c%s%c%s%c%s%c%s%c%s%c%s%c%c",            0x02,            "03", 0x09,            octstr_get_cstr(msg->sms.receiver), 0x09,            tmptext, 0x09,            "", 0x09,            "", 0x09,            (octstr_len(msg->sms.udhdata)) ? "31" : "", 0x09,            "11", 0x03, 0x0A);    ret = write_to_socket(smsc->socket, tmpbuff);    if (ret < 0) {        debug("bb.sms.cimd", 0, "cimd_submit_smsmessage: socket write error");        goto error;    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久99精品免费观看不卡| 亚洲大型综合色站| 亚洲欧美激情小说另类| 免费人成精品欧美精品 | 精品久久久久久久久久久久久久久 | 欧美一区二区三区在线观看 | 一级做a爱片久久| 国产酒店精品激情| 777奇米四色成人影色区| 亚洲天堂精品视频| 国产91在线观看| 欧美mv日韩mv| 欧美aaaaaa午夜精品| 91国内精品野花午夜精品| 日本一区免费视频| 国产老妇另类xxxxx| 欧美一二三四在线| 日韩精品一卡二卡三卡四卡无卡| 99久久久精品免费观看国产蜜| 久久色在线观看| 麻豆成人91精品二区三区| 欧美色成人综合| 亚洲三级免费观看| 成熟亚洲日本毛茸茸凸凹| 亚洲精品在线网站| 国产一区二区三区精品视频| 日韩欧美在线影院| 日韩电影一区二区三区| 欧美三级韩国三级日本三斤| 一区二区三区四区精品在线视频| www.久久久久久久久| 国产精品网曝门| 国产+成+人+亚洲欧洲自线| 国产欧美久久久精品影院| 国产精品12区| 国产精品无圣光一区二区| a级高清视频欧美日韩| |精品福利一区二区三区| 成人免费毛片a| 亚洲欧洲日产国产综合网| 97久久超碰国产精品电影| 国产精品萝li| 国产激情一区二区三区桃花岛亚洲| 一本大道久久a久久精二百| 欧美mv日韩mv国产| 9色porny自拍视频一区二区| 欧美电影免费观看高清完整版在 | 国内精品国产成人| 亚洲一区二区三区四区中文字幕| 久久丝袜美腿综合| 欧美日韩中字一区| 91免费版pro下载短视频| 麻豆国产一区二区| 亚洲一区二区三区自拍| 欧美国产精品一区二区三区| 日韩欧美一级二级| 欧美裸体bbwbbwbbw| 色域天天综合网| 丁香一区二区三区| 九九九精品视频| 亚洲成人免费在线观看| 亚洲精品高清在线| 日韩美女啊v在线免费观看| 欧美精品一区二区久久久| 91精品国产综合久久久久久| 91麻豆国产福利精品| 成人不卡免费av| 国产一区二区三区日韩| 激情综合亚洲精品| 国内精品久久久久影院薰衣草| 视频在线观看一区二区三区| 亚洲国产一区视频| 一区二区三区欧美在线观看| 国产精品久久久一本精品 | 日韩av高清在线观看| 亚洲电影一级片| 夜夜精品浪潮av一区二区三区| 亚洲一区视频在线观看视频| 国产精品对白交换视频| 国产精品福利在线播放| 国产精品传媒在线| 国产精品色哟哟| 国产精品色在线观看| 国产精品麻豆久久久| 国产精品色呦呦| 亚洲欧美日韩系列| 一区二区在线看| 亚洲最大成人综合| 日韩成人午夜精品| 精品在线一区二区三区| 国产夫妻精品视频| 成人黄色小视频| 色综合av在线| 欧美一区二区视频在线观看2020| 666欧美在线视频| 久久久美女毛片| 综合在线观看色| 亚洲午夜精品在线| 蜜臀精品久久久久久蜜臀| 久久99九九99精品| 99re在线精品| 欧美浪妇xxxx高跟鞋交| 日韩一区二区三区免费看| 久久一夜天堂av一区二区三区| 国产亚洲福利社区一区| 亚洲图片另类小说| 蜜桃视频在线观看一区| 成人综合日日夜夜| 欧美日韩精品一区视频| 欧美精品一区二区久久婷婷| 亚洲女同一区二区| 美女在线观看视频一区二区| 国产91在线观看| 欧美美女黄视频| 中文字幕免费不卡| 日韩国产高清影视| 成人免费毛片片v| 欧美欧美欧美欧美首页| 国产人成亚洲第一网站在线播放 | 国产欧美综合色| 亚洲香肠在线观看| 国产尤物一区二区| 欧美色大人视频| 国产欧美日韩精品一区| 日本系列欧美系列| 91啪在线观看| 久久综合色8888| 亚洲电影一区二区| 99在线精品视频| 欧美va亚洲va| 亚洲国产欧美在线| 不卡视频在线看| 精品久久国产97色综合| 一级日本不卡的影视| 成人av在线看| 日韩女同互慰一区二区| 亚洲福利电影网| 91麻豆福利精品推荐| 国产日韩欧美不卡在线| 看片的网站亚洲| 欧美人与性动xxxx| 一区二区三区在线免费| 国产一区二区91| 日韩一区二区三免费高清| 亚洲午夜电影网| 色欧美日韩亚洲| 国产精品女主播av| 国产精品亚洲一区二区三区在线| 欧美日韩久久一区| 最近日韩中文字幕| 色综合久久久久综合体| 国产亚洲一区字幕| 国产一区在线看| 精品久久久久久久久久久久久久久| 亚洲成人免费在线观看| 在线视频欧美精品| 亚洲精品国产一区二区精华液| 成人免费毛片嘿嘿连载视频| 国产人成亚洲第一网站在线播放| 久久国产精品无码网站| 51精品秘密在线观看| 五月婷婷久久丁香| 91.麻豆视频| 午夜精彩视频在线观看不卡| 91福利区一区二区三区| 亚洲黄色录像片| 欧美综合一区二区三区| 亚洲自拍偷拍av| 欧美亚洲一区三区| 亚洲一级片在线观看| 欧洲一区二区av| 亚洲一区免费视频| 欧美日韩小视频| 热久久国产精品| 久久综合九色综合欧美就去吻| 国产麻豆欧美日韩一区| 久久视频一区二区| 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 午夜精品一区在线观看| 欧美猛男超大videosgay| 天堂影院一区二区| 欧美一区二区视频免费观看| 久久精品国内一区二区三区| 精品福利一区二区三区免费视频| 国产一区视频网站| 一区二区中文视频| 欧美亚州韩日在线看免费版国语版| 亚洲激情自拍偷拍| 欧美一区二区三区四区在线观看| 蜜臀91精品一区二区三区| 久久久久久综合| 色综合久久综合| 天堂蜜桃一区二区三区| 久久一区二区三区四区| 99re66热这里只有精品3直播 | 成人激情免费网站| 最新久久zyz资源站| 精品视频一区三区九区| 狠狠色丁香婷综合久久| 亚洲男同1069视频|