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

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

?? smsc_cimd.c

?? 主要包括sms網關和wap網關實現說明和源碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* ====================================================================  * The Kannel Software License, Version 1.0  *  * Copyright (c) 2001-2005 Kannel Group   * Copyright (c) 1998-2001 WapIT Ltd.    * All rights reserved.  *  * Redistribution and use in source and binary forms, with or without  * modification, are permitted provided that the following conditions  * are met:  *  * 1. Redistributions of source code must retain the above copyright  *    notice, this list of conditions and the following disclaimer.  *  * 2. Redistributions in binary form must reproduce the above copyright  *    notice, this list of conditions and the following disclaimer in  *    the documentation and/or other materials provided with the  *    distribution.  *  * 3. The end-user documentation included with the redistribution,  *    if any, must include the following acknowledgment:  *       "This product includes software developed by the  *        Kannel Group (http://www.kannel.org/)."  *    Alternately, this acknowledgment may appear in the software itself,  *    if and wherever such third-party acknowledgments normally appear.  *  * 4. The names "Kannel" and "Kannel Group" must not be used to  *    endorse or promote products derived from this software without  *    prior written permission. For written permission, please   *    contact org@kannel.org.  *  * 5. Products derived from this software may not be called "Kannel",  *    nor may "Kannel" appear in their name, without prior written  *    permission of the Kannel Group.  *  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE  * DISCLAIMED.  IN NO EVENT SHALL THE KANNEL GROUP OR ITS CONTRIBUTORS  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,   * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT   * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR   * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,   * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE   * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,   * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  * ====================================================================  *  * This software consists of voluntary contributions made by many  * individuals on behalf of the Kannel Group.  For more information on   * the Kannel Group, please see <http://www.kannel.org/>.  *  * Portions of this software are based upon software originally written at   * WapIT Ltd., Helsinki, Finland for the Kannel project.   */ /****************************************************************************** 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,

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
爽爽淫人综合网网站| 九九久久精品视频| 国产酒店精品激情| 国产欧美精品在线观看| 国产成人在线观看| 精品久久久久99| 色综合天天天天做夜夜夜夜做| 亚洲欧美日韩国产综合| 美日韩一区二区| 狠狠久久亚洲欧美| 成人91在线观看| 丝袜美腿亚洲综合| 国产精品理论片| 亚洲成人先锋电影| 综合av第一页| 国产精品每日更新| 久久综合九色综合97婷婷 | 天天色综合成人网| 日韩欧美国产不卡| 国产老肥熟一区二区三区| 国产三级三级三级精品8ⅰ区| 亚洲精品久久久久久国产精华液| 国产主播一区二区| 国产精品国产三级国产有无不卡| 成人激情文学综合网| 国产精品久久久久久久久果冻传媒| 国产一区不卡在线| 亚洲欧洲国产日本综合| 欧美三级日韩在线| 久久精品99国产精品日本| 91精品久久久久久久91蜜桃 | aaa国产一区| 一区二区三区精品视频在线| 日韩精品一区二区三区中文精品 | 日韩精品一区二区三区在线 | 一区二区三区精品在线| 欧美一区二区三区性视频| 久久国内精品视频| 日韩电影在线一区| 亚洲日本在线a| 中日韩av电影| 亚洲特黄一级片| 国产亚洲制服色| 1024精品合集| 日本不卡高清视频| 精品亚洲国产成人av制服丝袜| 一本久道久久综合中文字幕 | 成人免费在线观看入口| 欧美性猛交xxxx乱大交退制版 | 欧美tickling挠脚心丨vk| 91麻豆精品国产91久久久久久| 欧美猛男gaygay网站| 在线91免费看| 精品欧美久久久| 在线免费不卡视频| 色狠狠一区二区三区香蕉| 蜜臀av国产精品久久久久| 精品剧情在线观看| 日韩免费高清视频| 欧美精品精品一区| 日韩三级伦理片妻子的秘密按摩| 国产中文字幕一区| 日本不卡视频在线观看| 五月激情综合婷婷| 日韩国产精品久久| 国产福利一区二区三区视频| 欧美一区二区三区性视频| 综合久久久久久久| 欧美日韩国产首页在线观看| 日韩欧美一二三区| 欧美国产日韩一二三区| 亚洲一区在线电影| 久久国产三级精品| 成人国产精品免费观看视频| 色av成人天堂桃色av| 91麻豆精品国产无毒不卡在线观看 | 日韩三级电影网址| 国产日韩v精品一区二区| 亚洲精品伦理在线| 韩日av一区二区| 91在线观看高清| 制服丝袜中文字幕亚洲| 中文字幕乱码一区二区免费| 亚洲尤物视频在线| 国产精品夜夜嗨| 欧美日韩高清一区二区不卡| 久久九九久久九九| 一区二区三区不卡视频在线观看| 蜜臀va亚洲va欧美va天堂 | 不卡电影一区二区三区| 欧美日韩精品高清| 国产日产欧美精品一区二区三区| 丝袜脚交一区二区| 不卡电影一区二区三区| 精品久久久久久久久久久久久久久久久| 国产精品女同一区二区三区| 日韩黄色在线观看| 色婷婷久久99综合精品jk白丝| 日韩一区二区电影| 亚洲精品国产一区二区精华液| 国内精品免费**视频| 欧美日韩免费高清一区色橹橹 | 夜夜夜精品看看| 国产东北露脸精品视频| 欧美一级艳片视频免费观看| 亚洲精品精品亚洲| 91亚洲精品乱码久久久久久蜜桃| 精品福利二区三区| 免费人成精品欧美精品| 欧美在线观看你懂的| 国产精品乱码人人做人人爱 | 日韩一卡二卡三卡四卡| 国产精品理论片| 国产福利一区二区| 久久久777精品电影网影网| 免费精品视频在线| 欧美一区二区视频在线观看2022| 亚洲精品日产精品乱码不卡| 91色乱码一区二区三区| 日韩一区日韩二区| 成人aa视频在线观看| 中文字幕在线免费不卡| 99国产精品国产精品毛片| 中文字幕第一区| 国产福利一区二区三区视频| 国产精品色哟哟| 97精品视频在线观看自产线路二| 中文字幕永久在线不卡| 91精品国产综合久久香蕉的特点 | 波波电影院一区二区三区| 欧美亚洲一区二区在线| 中文字幕av一区 二区| av电影在线观看完整版一区二区| 亚洲乱码精品一二三四区日韩在线| 国产亚洲欧美日韩俺去了| 亚洲另类在线制服丝袜| 亚洲国产综合色| 久久精品国产网站| 欧美变态tickling挠脚心| 免费久久99精品国产| 精品国产欧美一区二区| 国产在线精品一区二区三区不卡| 精品99999| 国产精品69久久久久水密桃| 国产日韩欧美综合在线| eeuss国产一区二区三区| 亚洲美女视频一区| 欧美性色黄大片| 亚洲精品五月天| 久久这里只有精品6| 在线亚洲人成电影网站色www| 日本三级亚洲精品| 中文字幕一区三区| 中国av一区二区三区| 成人激情动漫在线观看| 亚洲一二三四久久| 欧美国产欧美亚州国产日韩mv天天看完整| 97国产一区二区| 成人av电影在线观看| 91精品国产色综合久久ai换脸| 亚洲欧洲另类国产综合| 国内一区二区视频| 日韩欧美电影在线| 日韩av一二三| 欧美卡1卡2卡| 亚洲大型综合色站| 欧美卡1卡2卡| 亚洲精品自拍动漫在线| 久久久国际精品| 精品日韩欧美在线| 中文字幕亚洲视频| 国产一区二区三区免费看| 欧美日韩日日夜夜| 性久久久久久久久| 欧美三区在线观看| 午夜精品久久久久久久久久久| 在线观看不卡视频| 亚洲综合一区二区| 欧美日韩一级黄| 日韩精品一二三区| 欧美大黄免费观看| 久久99国产精品麻豆| 欧美精品一区二区三区蜜桃视频 | 久久久蜜桃精品| 国产.精品.日韩.另类.中文.在线.播放| 精品少妇一区二区三区视频免付费| 免费精品视频在线| 久久精品视频一区二区三区| 国产91清纯白嫩初高中在线观看 | 欧美一区二区在线视频| 激情综合色综合久久综合| 久久久综合九色合综国产精品| 成人av免费在线播放| 亚洲国产精品久久久久秋霞影院 | 国产精品久久久久一区二区三区共 | 欧美mv日韩mv亚洲| 国产精品三级av| 六月婷婷色综合| 91视频免费观看| 亚洲国产欧美另类丝袜|