Bugs item #2901127, was opened at 2009-11-20 08:14
Message generated for change (Tracker Item Submitted) made by ttrask01
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=743020&aid=2901127&group_…
Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: None
Group: ver 1.5.x
Status: Open
Resolution: None
Priority: 5
Private: No
Submitted By: Ted Trask (ttrask01)
Assigned to: Nobody/Anonymous (nobody)
Summary: Kamctl cannot add user to dbtext
Initial Comment:
Running kamailio 1.5.2 on alpine linux. Same problem applies to 1.5.3.
"kamctl add user password" fails with result:
email_address cannot be empty or null
\E[37;31mERROR: introducing the new user 'user' to the database failed
The kamctl script does not accept an email-address on the command line, showing usage (too many command-line parameters).
The problem is in the database definition. Here is the 'subscriber' definition for the various DB types:
scripts/db_berkeley/kamailio/subscriber:id(int) username(str) domain(str) password(str) email_address(str) ha1(str) ha1b(str) rpid(str)
scripts/postgres/auth_db-create.sql: email_address VARCHAR(64) DEFAULT '' NOT NULL,
scripts/mysql/auth_db-create.sql: email_address VARCHAR(64) DEFAULT '' NOT NULL,
scripts/oracle/auth_db-create.sql: email_address VARCHAR2(64) DEFAULT '',
scripts/dbtext/kamailio/subscriber:id(int,auto) username(string) domain(string) password(string) email_address(string) ha1(string) ha1b(string) rpid(string,null)
Ok, all of the databases have the email_address column, most saying non-null and default to "". The problem comes because kamctl doesn't take a parameter for email_address and tries to set it to null. For postgres it works just fine, because there's a default defined. Not true for dbtext. It says non-null, but doesn't define a default.
Further, it appears the dbtext does not differentiate between "" and null. So, if we remove the non-null restriction, it will allow it to be set to null, which is actually "", which is what the default should be!
So, to make this as clear as mud, the one line in scripts/dbtext/kamailio/subscriber (/usr/share/kamailio/dbtext/kamailio/subscriber on my device) should be changed from:
id(int,auto) username(string) domain(string) password(string) email_address(string) ha1(string) ha1b(string) rpid(string,null)
to (adding the word 'null' in the email_address column definition):
id(int,auto) username(string) domain(string) password(string) email_address(string,null) ha1(string) ha1b(string) rpid(string,null)
And that should fix the problem.
Ted Trask
----------------------------------------------------------------------
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=743020&aid=2901127&group_…
Hi All,
Has anyone else noticed the significant inaccuracy of the timeout in the
dialog module?
We are using:
modparam("dialog", "timeout_avp", "$avp(i:10)")
However, the actual call is torn down a NUMBER of seconds past the timeout
supplied. In some instances, for long calls, it is out by 30seconds or
more....? For shorter calls it is accurate with a second or so.
Anyone have any input, ideas?
Cheers
Jason
Hi All,
I have updated the pkg/kamailio/debian-lenny packaging files to work with 3.0.0-rc2. Patch is attached if someone would like to look over it and commit it.
Cheers,
Jonas
Jan,
On Tuesday 17 November 2009, you wrote:
> On Tue, Nov 17, 2009 at 4:13 PM, Alex Hermann <alex(a)speakup.nl> wrote:
> > Hello,
> >
> > Why is the nonce expiry checked in post_auth instead of pre_auth? Now the
> > expiry is checked after the username/password is checked against the DB.
> > That seems a bit odd.
> >
> > I moved the check to check_nonce (which is called from pre_auth) and it
> > seems to work fine. Did I miss something? Security issue?
>
> There are two major reasons for this:
>
> The server sends back stale=true in digest credentials if the nonce
> has expired, but only if the credentials are otherwise valid (i.e. the
> username and the password are correct). The parameter stale=true
> indicates to the user agent that there is no need to ask the user for
> username and password again, it can just generate a new authorization
> header with ca> ched username and password and a new nonce string from
> the server.
The server can just as well generate a stale=true response immediately,
independent of the credentials check. If later on a non-expired nonce
arrives, it can do the credentials check and send a response without
stale=true if necessary.
> The second reason is that we need to accept credentials with old nonce
> string for ACK and CANCEL requests. Those two requests cannot be
> challenged (There is no reply for ACK and CANCEL must have the same
> CSeq as the request being canceled), thus we cannot ask the user agent
> to resubmit them again with a new nonce.
This reason is invalid because of the following existing code in pre_auth:
if ((_m->REQ_METHOD == METHOD_ACK) || (_m->REQ_METHOD == METHOD_CANCEL))
return AUTHORIZED;
--
Met vriendelijke groet,
Alex Hermann
SpeakUp BV
T: 088-SPEAKUP (088-7732587)
F: 088-7732588
Hello,
Why is the nonce expiry checked in post_auth instead of pre_auth? Now the
expiry is checked after the username/password is checked against the DB. That
seems a bit odd.
I moved the check to check_nonce (which is called from pre_auth) and it seems
to work fine. Did I miss something? Security issue?
--
Greetings,
Alex Hermann