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.
<br><br>&nbsp; <a href="http://www.voip-info.org/wiki/index.php?page=Asterisk+func+db">http://www.voip-info.org/wiki/index.php?page=Asterisk+func+db</a><br>&nbsp; <a href="http://www.the-asterisk-book.com/unstable/funktionen-db.html">
http://www.the-asterisk-book.com/unstable/funktionen-db.html</a><br><br>Also consider allowing emergency number dialing to bypass authentication, if applicable.<br><br>-jr<br><br><div class="gmail_quote">On Dec 1, 2007 5:32 PM, Tilghman Lesher &lt;
<a href="mailto:tilghman@mail.jeffandtilghman.com">tilghman@mail.jeffandtilghman.com</a>&gt; wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="Ih2E3d">On Saturday 01 December 2007 18:09:27 Steve Johnson wrote:<br>&gt; Hi List,<br>&gt;<br>&gt; We have a remote asterisk SIP phone at the cottage.<br>&gt;<br>&gt; I&#39;d like it to have minimal privileges when it first registers with
<br>&gt; Asterisk. Ideally it should be in a restricted context. &nbsp;Dialing any<br>&gt; number would intercept the call and tell the person to log on. &nbsp;This<br>&gt; way, if the phone was stolen or someone got into the cottage, we
<br>&gt; wouldn&#39;t have a bunch of surprise charges on our phone bill... :-)<br>&gt;<br>&gt; Once the phone has been authenticated, it should go into a context<br>&gt; with normal privileges. &nbsp;After a couple of days of non-use, it should
<br>&gt; auto-logout to the restricted context.<br>&gt;<br>&gt; How can I change the sip context of a phone on the fly, based on<br>&gt; authentication login?<br><br></div>I wouldn&#39;t. &nbsp;I&#39;d do authentication on the fly, using a database of some kind.
<br><br>extensions.conf:<br>[sip-phones]<br>exten =&gt; _X.,1,Set(lastlogin=${ODBC_LOGIN(${CUT(CHANNEL,-,1)})})<br>; Logins expire after 86400 sec = 24 hours<br>exten =&gt; _X.,n,GosubIf($[0${lastlogin} + 86400 &lt; ${EPOCH}]?restricted,s,1)
<br>exten =&gt; _X.,n,Dial(Zap/g1/${EXTEN})<br><br>[restricted]<br>; VMAuthenticate terminates the call if authentication fails.<br>exten =&gt; s,1,VMAuthenticate<br>exten =&gt; s,n,Set(ODBC_LOGIN(${CUT(CHANNEL,-,1)})=${EPOCH})
<br>exten =&gt; s,n,Set(lastlogin=${EPOCH})<br>exten =&gt; s,n,Return<br><br>func_odbc.conf:<br>[LOGIN]<br>dsn=asterisk<br>read=SELECT lastlogin FROM logins WHERE channel=&#39;${ARG1}&#39;<br>write=UPDATE logins SET lastlogin=${VAL1} WHERE channel=&#39;${ARG1}&#39;
<br><br>logins.sql:<br>CREATE TABLE logins (<br> &nbsp; &nbsp; &nbsp; &nbsp;channel CHAR(50) PRIMARY KEY,<br> &nbsp; &nbsp; &nbsp; &nbsp;lastlogin INTEGER,<br>);<br>INSERT INTO logins VALUES (&#39;SIP/100&#39;,0);<br>INSERT INTO logins VALUES (&#39;SIP/101&#39;, 0);
<br>INSERT INTO logins VALUES (&#39;SIP/102&#39;, 0);<br><br></blockquote></div><br clear="all"><br>-- <br>Grover Beach, California, USA<br><a href="http://blog.joshrichards.org">http://blog.joshrichards.org</a> &nbsp; &nbsp;<a href="mailto:josh.t.richards@gmail.com">
josh.t.richards@gmail.com</a> &nbsp; &nbsp;+1 (805) 471-6923<br><br><a href="http://www.linkedin.com/in/joshrichards">http://www.linkedin.com/in/joshrichards</a><br>Supporting these causes: <a href="http://Kiva.org">Kiva.org</a> &amp; 
RoomToRead.org<br>