[asterisk-users] Requiring a login to a phone

Josh Richards josh.t.richards at gmail.com
Sat Dec 1 21:55:26 CST 2007


For such a simple application I'd use AstDB to avoid having to hassle with
an external database (and also means this sort of dialplan will work even on
embedded/slimmed Asterisk boxes that may not have db modules
loaded/available).   In any case, what Tilghman said is what I'd suggest as
well.

  http://www.voip-info.org/wiki/index.php?page=Asterisk+func+db
  http://www.the-asterisk-book.com/unstable/funktionen-db.html

Also consider allowing emergency number dialing to bypass authentication, if
applicable.

-jr

On Dec 1, 2007 5:32 PM, Tilghman Lesher <tilghman at mail.jeffandtilghman.com>
wrote:

> On Saturday 01 December 2007 18:09:27 Steve Johnson wrote:
> > Hi List,
> >
> > We have a remote asterisk SIP phone at the cottage.
> >
> > I'd like it to have minimal privileges when it first registers with
> > Asterisk. Ideally it should be in a restricted context.  Dialing any
> > number would intercept the call and tell the person to log on.  This
> > way, if the phone was stolen or someone got into the cottage, we
> > wouldn't have a bunch of surprise charges on our phone bill... :-)
> >
> > Once the phone has been authenticated, it should go into a context
> > with normal privileges.  After a couple of days of non-use, it should
> > auto-logout to the restricted context.
> >
> > How can I change the sip context of a phone on the fly, based on
> > authentication login?
>
> I wouldn't.  I'd do authentication on the fly, using a database of some
> kind.
>
> extensions.conf:
> [sip-phones]
> exten => _X.,1,Set(lastlogin=${ODBC_LOGIN(${CUT(CHANNEL,-,1)})})
> ; Logins expire after 86400 sec = 24 hours
> exten => _X.,n,GosubIf($[0${lastlogin} + 86400 < ${EPOCH}]?restricted,s,1)
> exten => _X.,n,Dial(Zap/g1/${EXTEN})
>
> [restricted]
> ; VMAuthenticate terminates the call if authentication fails.
> exten => s,1,VMAuthenticate
> exten => s,n,Set(ODBC_LOGIN(${CUT(CHANNEL,-,1)})=${EPOCH})
> exten => s,n,Set(lastlogin=${EPOCH})
> exten => s,n,Return
>
> func_odbc.conf:
> [LOGIN]
> dsn=asterisk
> read=SELECT lastlogin FROM logins WHERE channel='${ARG1}'
> write=UPDATE logins SET lastlogin=${VAL1} WHERE channel='${ARG1}'
>
> logins.sql:
> CREATE TABLE logins (
>        channel CHAR(50) PRIMARY KEY,
>        lastlogin INTEGER,
> );
> INSERT INTO logins VALUES ('SIP/100',0);
> INSERT INTO logins VALUES ('SIP/101', 0);
> INSERT INTO logins VALUES ('SIP/102', 0);
>
>

-- 
Grover Beach, California, USA
http://blog.joshrichards.org    josh.t.richards at gmail.com    +1 (805)
471-6923

http://www.linkedin.com/in/joshrichards
Supporting these causes: Kiva.org & RoomToRead.org
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.digium.com/pipermail/asterisk-users/attachments/20071201/4d27e1d6/attachment.htm 


More information about the asterisk-users mailing list