[PATCH] Support for MO parameters on 'generic' HTTP SMSC - Secondrevision

Vincent CHAVANIS vincent at telemaque.fr
Fri Sep 7 10:51:46 CEST 2007


Hi alejandro,

I'm wondering why this condition has been changed

if (user == NULL || pass == NULL) {
user = octstr_create("");
pass = octstr_create("");
}

into:

if (user == NULL && pass == NULL) {
user = octstr_create("");
pass = octstr_create("");
}

I think that we need to check both of these values.
if user = blah and password = NULL
we will do octstr_compare with password and this is not safe.

Vincent.

--
Telemaque - 06560 SOPHIA-ANTIPOLIS - (FR)
Service Technique/Reseau - NOC
Developpement SMS/MMS/Kiosques
http://www.telemaque.fr/
vincent at telemaque.fr
Tel : +33 4 92 90 99 84 (fax 9142)
----- Original Message ----- 
From: "Alejandro Guerrieri" <alejandro.guerrieri at gmail.com>
To: "Alexander Malysh" <amalysh at kannel.org>
Cc: <devel at kannel.org>
Sent: Thursday, September 06, 2007 10:31 PM
Subject: Re: [PATCH] Support for MO parameters on 'generic' HTTP SMSC - 
Secondrevision


> Done,
> Done,
>
> New version of the patch, using generic_receive_sms() instead of
> kannel_receive_sms()
>
> http://www.magicom-bcn.net/kannel/full-mo-http-params-20070906.patch
>
> Regards,
>
> Alejandro
>
> On 9/6/07, Alexander Malysh <amalysh at kannel.org> wrote:
>> Hi,
>>
>> please doesn't change kannel http mode. Please define new MO function for
>> generic HTTP mode instead.
>>
>> Alejandro Guerrieri wrote:
>>
>> > Hi,
>> >
>> > I've improved my patch and added extra flexibility. Now it's possible
>> > to implement full clickatell functionality (including DLR's) by
>> > properly configure the 'generic' http smsc.
>> >
>> > The patch is available here:
>> >
>> > http://magicom-bcn.net/kannel/full-mo-http-params-20070905.patch
>> >
>> > The patch allows for this new parameters on config:
>> >
>> > * This parameters allows to rename the proper MO parameters to
>> > whatever you like:
>> >
>> > mo-from
>> > mo-to
>> > mo-text
>> > mo-udh
>> > mo-account
>> > mo-binfo
>> > mo-dlr-url
>> > mo-dlr-mid
>> > mo-flash
>> > mo-mclass
>> > mo-mwi
>> > mo-coding
>> > mo-validity
>> > mo-deferred
>> > mo-dlr-mask
>> > mo-dlr-stat -> this special one allows you to rename the message_id
>> > being returned by an external dlr confirmation, such as clickatell's
>> > "status" parameter.
>> >
>> > For example, setting mo-from = whatever, then the "from" parameter
>> > will be renamed "whatever".
>> >
>> > * This allows you to rename the return string the http generic smsc
>> > returns:
>> >
>> > mo-ret-accepted
>> > mo-ret-denied
>> > mo-ret-unknown-dlr
>> > mo-ret-missing-args
>> > mo-ret-udh-mismatch
>> > mo-ret-udh-long
>> > mo-ret-auth-failed
>> > mo-ret-dlr-accepted
>> > mo-ret-dlr-denied
>> >
>> > For example, the mo-ret-accpeted allows you to change the "Sent." text
>> > you get for anything else.
>> >
>> > Now comes the "new" features:
>> >
>> > id-from-reply -> When you send an MT message to an external http smsc
>> > and you ask for a DLR, kannel "invents" a message_id. This parameters
>> > allows you to get that message id from the external source,
>> > effectively enabling the use of DLR's with clickatell. You must fill
>> > this field with the text expected _before_ the message_id. In the case
>> > of clickatell that's "ID:". So, if you get "ID:12345678" the
>> > message_id will be "12345678".
>> >
>> > err-from-reply -> Same thing but for error id's.
>> >
>> > This 3 parameters allows you to map different external statuses to
>> > kannel dlr statuses:
>> >
>> > dlr-success-regex -> maps to DLR_SUCCESS (0x08)
>> > dlr-permfail-regex -> maps to DLR_BUFFERED (0x04)
>> > dlr-tempfail-regex -> maps to DLR_FAILED (0x02)
>> >
>> > So, to implement clickatell's connectivity for MT and DLR's, you just
>> > need to configure like this:
>> >
>> > group = smsc
>> > smsc = http
>> > system-type = generic
>> > smsc-id = clicka
>> > allowed-smsc-id = clicka
>> > port = 15000
>> > send-url =
>> > "https://api.clickatell.com/http/sendmsg?to=%p&from=%P&text=%b&api_id=NNNNNN&user=XXXXXX&password=PPPPPP&callback=3&deliv_ack=3&req_feat=8192"
>> > status-success-regex = "ID" status-permfail-regex = "ERR"
>> > status-tempfail-regex = "TEMP"
>> > mo-dlr-mid = apiMsgId
>> > mo-dlr-stat = status
>> > id-from-reply = "ID:"
>> > err-from-reply = "ERR:"
>> > dlr-success-regex ="(004|008)"
>> > dlr-permfail-regex = "(001|005|006|007|009|010)"
>> > dlr-tempfail-regex ="(002|003|011)"
>> >
>> > I'll explain a little more:
>> >
>> > send-url points to the clickatell http api. A few parameters are
>> > hardcoded, like api_id, user/pass, etc.
>> > status-*-regex (current kannel functionality) is used to detect
>> > whether the message was accepted by clickatell's api.
>> >
>> > mo-dlr-* is used to map the DLR parameters to kannel's own.
>> >
>> > id/err-from-reply is used to fetch the message/error id on MT from
>> > clickatell's http response. This is mandatory for DLR's only.
>> >
>> > dlr-*-regex is used to map the different possible responses to
>> > different kannel DLR status. So, if kannel responds with "004" or
>> > "008" a DLR Success will be sent (0x08 for Kannel).
>> >
>> > I don't have  a two-way account for clickatell, so I couldn't test the
>> > MO part, but it should be as simple as to map the proper parameters by
>> > configuring mo-* parameters and maybe mapping some mo-ret-* strings
>> > also.
>> >
>> > Last by not least, the goal of this patch wasn't to replace the
>> > clickatell interface, but to provide a generic mean to implement other
>> > SMSC's without writing source code and recompiling. The clickatell
>> > example was just that, an example of the capabilities being added.
>> >
>> > I'd happily try to model other http smsc's (even extending the patch
>> > to accomodate extra flexibility), just drop me a line in private and
>> > send me docs about it.
>> >
>> > Regards,
>>
>> --
>> Thanks,
>> Alex
>>
>>
>>
>
>
> -- 
> Alejandro Guerrieri
> Magicom
> http://www.magicom-bcn.net/
> LinkedIn: http://www.linkedin.com/in/aguerrieri
>
> 





More information about the devel mailing list