Re: [PATCH] Support for MO parameters on 'generic' HTTP SMSC -Secondrevision
"Vincent CHAVANIS" <[email protected]>
| Newsgroups | gmane.comp.mobile.kannel.devel |
|---|---|
| Message-ID | <0bea01c8011e$4807da60$9600a8c0@vince> |
Please also cleanup a bit the unused code. This is unusefull IMO. We already have a source changelog on the CVS. (eg. /* user == NULL || pass == NULL ||*/ /* we don't need this anymore */) Vincent. -- Telemaque - 06560 SOPHIA-ANTIPOLIS - (FR) Service Technique/Reseau - NOC Developpement SMS/MMS/Kiosques http://www.telemaque.fr/ [email protected] Tel : +33 4 92 90 99 84 (fax 9142) ----- Original Message ----- From: "Alexander Malysh" <[email protected]> To: <[email protected]> Sent: Thursday, September 27, 2007 5:19 PM Subject: Re: [PATCH] Support for MO parameters on 'generic' HTTP SMSC -Secondrevision > Hi again, > > as I wrote patch looks good but I don't see userguide changes in the > patch :) Please update userguide and I will apply this patch if no > objections there. > > Alejandro Guerrieri wrote: > >> Did anyone reviewed this patch? >> >> On 9/7/07, Alejandro Guerrieri <[email protected]> wrote: >>> The original condition was commented: >>> >>> + if (/*user == NULL || pass == NULL ||*/ /* we don't need this >>> anymore */ >>> + octstr_compare(user, conndata->username) != 0 || >>> + octstr_compare(pass, conndata->password) != 0) { >>> + error(0, "HTTP[%s]: Authorization failure", >>> >>> The piece of code you're referencing it's before the original (now >>> commented) evaluation. The purpose is to truly make user and password >>> optionals. >>> >>> And yes, you're absolutely right, it should be "||" to avoid >>> octstr_compare on an undefined value. >>> >>> Thanks for pointing this out. I've uploaded a new patch here: >>> >>> http://www.magicom-bcn.net/kannel/full-mo-http-params-20070907.patch >>> >>> Regards, >>> >>> Alejandro >>> >>> >>> On 9/7/07, Vincent CHAVANIS <[email protected]> wrote: >>> > 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/ >>> > [email protected] >>> > Tel : +33 4 92 90 99 84 (fax 9142) >>> > ----- Original Message ----- >>> > From: "Alejandro Guerrieri" <[email protected]> >>> > To: "Alexander Malysh" <[email protected]> >>> > Cc: <[email protected]> >>> > 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 <[email protected]> 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 >>> > > >>> > > >>> > >>> > >>> > >>> > >>> >>> >>> -- >>> Alejandro Guerrieri >>> Magicom >>> http://www.magicom-bcn.net/ >>> LinkedIn: http://www.linkedin.com/in/aguerrieri >>> >> >> > > -- > Thanks, > Alex > > >