[asterisk-users] Requiring a login to a phone

Tilghman Lesher tilghman at mail.jeffandtilghman.com
Sat Dec 1 19:32:14 CST 2007


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);

-- 
Tilghman



More information about the asterisk-users mailing list