コード例 #1
0
ファイル: smsc_cgw.c プロジェクト: frese/mbuni
static struct cgwop *msg_to_cgwop(PrivData *privdata, Msg *msg, int trn)
{
    struct cgwop *cgwop;
    Octstr *sender, *udh, *dta;

    cgwop = cgwop_create(CGW_OP_MSG, trn);

    if (cgwop == NULL) return NULL;

    if (!octstr_check_range(msg->sms.sender, 0, octstr_len(msg->sms.sender), gw_isdigit))
    {
        /* If alphanumeric, simply prefix sender with '$' char */
        sender = octstr_create("$");
        octstr_append(sender, msg->sms.sender);
    } else sender = octstr_duplicate(msg->sms.sender);

    cgwop_add(cgwop, octstr_imm("app"), privdata->appname);
    cgwop_add(cgwop, octstr_imm("from"), sender);
    cgwop_add(cgwop, octstr_imm("to"), msg->sms.receiver);

    /* If delivery reports are asked, ask for them by adding a nrq:anything field */
    if (DLR_IS_ENABLED_DEVICE(msg->sms.dlr_mask))
        cgwop_add(cgwop, octstr_imm("nrq"), octstr_imm("true"));

    octstr_destroy(sender);

    if (octstr_len(msg->sms.udhdata))
    {
        udh = octstr_duplicate(msg->sms.udhdata);
        octstr_binary_to_hex(udh, 1);
        cgwop_add(cgwop, octstr_imm("udh"), udh);
        octstr_destroy(udh);

        dta = octstr_duplicate(msg->sms.msgdata);
        octstr_binary_to_hex(dta, 1);
        cgwop_add(cgwop, octstr_imm("msg"), dta);
        cgwop_add(cgwop, octstr_imm("type"), octstr_imm("bin"));
        octstr_destroy(dta);
    } else
    {
        cgwop_add(cgwop, octstr_imm("msg"), cgw_encode_msg(msg->sms.msgdata));
    }

    return cgwop;
}
コード例 #2
0
ファイル: mtbatch.c プロジェクト: Jayriq/kannel-gateway
static unsigned long run_batch(void)
{
    Octstr *no;
    unsigned long linerr = 0;
    unsigned long lineno = 0;

    while ((no = gwlist_consume(lines)) != NULL) {
        if (octstr_check_range(no, 0, 256, gw_isdigit)) {
            Msg *msg;
        
            lineno++;

            msg = msg_create(sms);

            msg->sms.smsc_id = smsc_id ? octstr_duplicate(smsc_id) : NULL;
            msg->sms.service = service ? octstr_duplicate(service) : NULL;
            msg->sms.sms_type = mt_push;
            msg->sms.sender = octstr_duplicate(from);
            msg->sms.receiver = octstr_duplicate(no);
            msg->sms.account = account ? octstr_duplicate(account) : NULL;
            msg->sms.msgdata = content ? octstr_duplicate(content) : octstr_create("");
            msg->sms.dlr_mask = dlr_mask;
            msg->sms.dlr_url = octstr_duplicate(dlr_url);
            msg->sms.udhdata = octstr_create("");
            msg->sms.coding = DC_7BIT;

            if (send_message(msg) < 0) {
                linerr++;
                info(0,"Failed to send message at line <%ld> for receiver `%s' to bearerbox.",
                      lineno, octstr_get_cstr(no));
                msg_destroy(msg);
            }
        }
        else {
            linerr++;
            error(0, "Receiver `%s' at line <%ld> contains non-digit characters, discarded!",
                  octstr_get_cstr(no), lineno);
        }
        octstr_destroy(no);
    }
    info(0,"mtbatch has processed %ld messages with %ld errors.", lineno, linerr);
    return lineno;
} 
コード例 #3
0
ファイル: smsc_oisd.c プロジェクト: coffeecoco/kannel-redis
static int parm_valid_address(Octstr *value)
{
    return octstr_check_range(value, 0, octstr_len(value), isphonedigit);
}