[Serusers] Newbie : SER and sipsak

Dragos CHIRIAC dragos at pattco.ro
Tue Jan 11 03:07:26 CET 2005


Hello,

The three hours are over, and I had to redo the job. Sorry for not answering
so late, but i wanted to thank you.
I came to the same problem again. I modified the code to verify "Digest" to
"DIGEST"

It passed the problem after changing the line like
if ((begin=strstr(auth, "DIGEST"))==NULL) {

but it started to error like :

error: authorization failed
request already contains (Proxy-) Authorization, but received 40[1|7], see
above

I had to manually modify the code like:

/*              if (!password) */
                        password = "VS56sNZxs";

At the beginning of the MD5 hashing to bypass the problem. (I hadcoded the
password. The password looks like the one i gave you, with some undisclosed
modifications, it is not my proxy after all)
Now it works. ????
 I do not have to time to see why after changing that i have to hardcode the
password,  it just works like this and I integrated with nagios, I am very
pleased that i solved the damn problem after all.


About Case sensitive/insensitive
As far as I know there is a implementation of POSIX.2 regular expressions in
the glibc 3.+. And another older implementation that glibc have had for many
years.

Code should like (with posix regex-es):

#include <regex.h> << this is the library

......
const char *regex="(([D][I][G][E][S][T]))";

 if (firsttime) {
    if ( regcomp(&r,regex,REG_EXTENDED|REG_ICASE) ) { << here is the
I(gnore)CASE Flag
      fprintf(stderr,"Error compiling regular expression for parsing\n");
      exit(1);
    }
    firsttime=0;
}

if (regexec(&r,message,10,pm,REG_NOTBOL)!=0) {
  return(NULL);
}

Something like that should match even dIgeSt :).
I am not a C programmer (not even a programmer), and this code is out of my
stomach, and a copypaste from google.
Maybe you will put regexes on all other matches. Mostly i saw that you use
strstr to check the existence of a string. Regexes can do more. I do not
guarantee that the code works (i can actually bet that it won't), but is an
idea that it can be done. Some googleing should do the job ;). I bet it can
be done easier.
I am not very good at programming as i said, but maybe it helps. If i was
good at it I would modify it myself, but I am very busy and I do not have
the time to properly learn C or another language.

(If you use regexes I wolud greatly enjoy my name at the thanks section,
maybe i get a raise :P ... i would really need it)

Thank you again for your software and your support.
I wish you a happy new year and good archevements in the following year.
And I am sorry for answering so late. But later is better than never.

Dragos Chiriac
dragos at pattco.ro


---------------
Hello Dragos,

I guess it is too late, the three hours are over, but you should read the
sipsak homepage: please contact me directly with questions about sipsak,
because I do not have the time any more to read the iptel mailing lists all
over (not to think about real time).

I do not understand your first problem report. If you resend the output of
sipsak with -vvv I will take a look at output. BTW -f does not help you
because with that parameter you can only load a SIP request from the given
file, no options.

The 401 from below has simply the problem that the word 'Digest' is in
capital
letters and sipsak searches only for Digest with the first character as
capital. Unfortunately this is not easy to fix, as there are no
case-insensitive string search methods in glibc available (AFAIK).

Greetings
  Nils




More information about the sr-users mailing list