<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to Examples</title><link>https://sourceforge.net/p/libreacs/wiki/Examples/</link><description>Recent changes to Examples</description><atom:link href="https://sourceforge.net/p/libreacs/wiki/Examples/feed" rel="self"/><language>en</language><lastBuildDate>Tue, 14 Apr 2015 04:55:09 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/libreacs/wiki/Examples/feed" rel="self" type="application/rss+xml"/><item><title>Examples modified by Peter Lambrechtsen</title><link>https://sourceforge.net/p/libreacs/wiki/Examples/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v2
+++ v3
@@ -2,6 +2,15 @@
 =

 First for the "Default" script you should determine what sort of request was sent:
+
+    // Default Authentication type
+    var xAuthType = '0';
+
+    // Serial Number
+    var xSerNum = cpe.Inform.DeviceId.SerialNumber;
+
+    // Logging support.  Literal to prefix logger output
+    var xLogPrefix = "\n&amp;gt;&amp;gt;&amp;gt;&amp;gt;" + xSerNum.substring(5,10) + " ";

     //First print the device information
     call("1-PrintDeviceInfo");
@@ -15,13 +24,19 @@
         switch ( sEvent )
         {
             case '0 BOOTSTRAP':
-                call("2-DoBootStrap");
+                logger('&amp;gt;&amp;gt;&amp;gt;&amp;gt; Bootstrap - Call 2-Configure &amp;lt;&amp;lt;&amp;lt;&amp;lt;');
+                call("2-Configure");
+                break;

             case '1 BOOT':
-                call("3-DoBoot");
+                logger('&amp;gt;&amp;gt;&amp;gt;&amp;gt; Boot - Call 2-Configure &amp;lt;&amp;lt;&amp;lt;&amp;lt;');
+                call("2-Configure");
+                break;

             case '2 PERIODIC':
-                call("4-DoPeriodic");
+                logger('&amp;gt;&amp;gt;&amp;gt;&amp;gt; Periodic - Call 2-Configure &amp;lt;&amp;lt;&amp;lt;&amp;lt;');
+                call("2-Configure");
+                break;

             case '3 SCHEDULED':
                 break;
@@ -33,7 +48,9 @@
                 break;

             case '6 CONNECTION REQUEST':
-                call("5-DoConnectionRequest");
+                logger('&amp;gt;&amp;gt;&amp;gt;&amp;gt; Connection Request - Call 2-Configure &amp;lt;&amp;lt;&amp;lt;&amp;lt;');
+                call("2-Configure");
+                break;

             case '7 TRANSFER COMPLETE':
                 break;
@@ -48,6 +65,105 @@

 Now that you have created a script above, you can create a sub-script that is called and name them "1-DoBootStrap" or similar. I personally numbered them so the order as displayed inside ACS on the left hand side is shown in the order that the scripts are executed, otherwise they are ordered alphabetically.

+Now create using the above examples two script 1-PrintDeviceInfo and 2-Configure. Using the below Examples:
+
+1-PrintDeviceInfo
+
+    // Device
+    xMessage = xLogPrefix + ' DeviceId:';
+    xMessage += xLogPrefix + '    Manufacturer:  ' + cpe.Inform.DeviceId.Manufacturer;
+    xMessage += xLogPrefix + '    OUI:           ' + cpe.Inform.DeviceId.OUI;
+    xMessage += xLogPrefix + '    ProductClass:  ' + cpe.Inform.DeviceId.ProductClass;
+    xMessage += xLogPrefix + '    SerialNumber:  ' + cpe.Inform.DeviceId.SerialNumber;
+    xMessage += xLogPrefix + ' Misc:';
+    xMessage += xLogPrefix + '    MaxEnvelopes:  ' + cpe.Inform.MaxEnvelopes;
+    xMessage += xLogPrefix + '    RetryCount:    ' + cpe.Inform.RetryCount;
+    xMessage += xLogPrefix + '    CurrentTime:   ' + cpe.Inform.CurrentTime;
+        
+    // ------------------------------------------------------------------------------
+    // Events
+    xMessage += xLogPrefix + ' Events:';
+    for (i = 0; i &amp;lt;= cpe.Inform.Event.length - 1; i++)
+        xMessage += xLogPrefix + '    ' + cpe.Inform.Event[i].EventCode + ' [' + cpe.Inform.Event[i].CommandKey + ']';
+    
+    // ------------------------------------------------------------------------------
+    // Parameters
+    xMessage += xLogPrefix + ' Params:';
+    
+    for (i = 0; i &amp;lt;= cpe.Inform.ParameterList.length - 1; i++) {
+        xMessage += xLogPrefix + '    ' + cpe.Inform.ParameterList[i].Name + '=' + cpe.Inform.ParameterList[i].Value;
+        if (cpe.Inform.ParameterList[i].Name == "InternetGatewayDevice.ManagementServer.ConnectionRequestURL") {
+            ConnURL=cpe.Inform.ParameterList[i].Value;
+            xMessage += xLogPrefix + '    ConURL:   ' + ConnURL;
+        }
+    }
+    xMessage += xLogPrefix;
+    logger(xMessage);
+
+2-Configure
+
+    // Retrieve the periodic inform interval from the Default device profile in the database
+    try {
+        var dsDevice = db.Query("SELECT informinterval FROM DeviceProfileBean WHERE name='Default'")
+    } catch (e) {
+        // Error reading database
+        logger('Exception : ' + e.message)
+    }
+
+    // PeriodicInformInterval
+    var xTr98_PeriodicInform = dsDevice[0].informinterval;
+
+    // ------------------------------------------------------------------------------
+    // Set the string prefix for the parameters to be configured
+    var xTr98Prefix = 'InternetGatewayDevice.ManagementServer.';
+    var xTr98Params = new Array();
+    var c = '0';
+
+    xTr98Params[c++] = { name: xTr98Prefix + 'Username', value: 'ACSUsername' };
+    xTr98Params[c++] = { name: xTr98Prefix + 'Password', value: 'ACSPassword' };
+    xTr98Params[c++] = { name: xTr98Prefix + 'ConnectionRequestUsername', value: 'CRUsername' };
+    xTr98Params[c++] = { name: xTr98Prefix + 'ConnectionRequestPassword', value: 'CRPassword' };
+    xTr98Params[c++] = { name: xTr98Prefix + 'PeriodicInformInterval', value: xTr98_PeriodicInform };
+
+    // ------------------------------------------------------------------------------
+    // Set the values
+
+    xMessage = xLogPrefix + 'Sending xTr98Params ' + xTr98Params.length;
+    for (ic = 0; ic &amp;lt;= xTr98Params.length - 1; ic++) {
+        xMessage += xLogPrefix + xTr98Params[ic].name + ': ' + xTr98Params[ic].value;
+    }
+    logger(xMessage);
+
+    // ------------------------------------------------------------------------------
+    // Set the values
+    xSuccess = cpe.SetParameterValues(xTr98Params, "CommandKey");
+
+
+    // ------------------------------------------------------------------------------
+    //Check if successfully updated
+    if (xSuccess == 0) {
+    
+        // ------------------------------------------------------------------------------
+        //  Update HostsBean with the TR98 Parameters so that they can be viewed in GUI
+        var xHbDbUpdString;
+        xHbDbUpdString = 'UPDATE HostsBean SET customerid="' + xSerNum + '"';
+        xHbDbUpdString += ',username="' + xTr98_AcsUsername + '"';
+        xHbDbUpdString += ',password="' + xTr98_AcsPassword + '"';
+        xHbDbUpdString += ',conrequser="' + xTr98_CrUsername + '"';
+        xHbDbUpdString += ',conreqpass="' + xTr98_CrPassword + '"';
+        xHbDbUpdString += ',authtype="' + xAuthType + '"';
+        xHbDbUpdString += ' WHERE serialno="' + xSerNum + '"';
+    
+        try {
+            var rs = db.Update(xHbDbUpdString);
+        } catch (e) {
+    
+            // HostsBean database update failed
+            logger('Exception : ' + e.message)
+        }
+    }
+
+
 Script Library
 =

&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Peter Lambrechtsen</dc:creator><pubDate>Tue, 14 Apr 2015 04:55:09 -0000</pubDate><guid>https://sourceforge.net75a5efbd66cce3d75631dbd1763d51eb98fd7119</guid></item><item><title>Examples modified by Peter Lambrechtsen</title><link>https://sourceforge.net/p/libreacs/wiki/Examples/</link><description>&lt;div class="markdown_content"&gt;&lt;pre&gt;--- v1
+++ v2
@@ -3,6 +3,8 @@

 First for the "Default" script you should determine what sort of request was sent:

+    //First print the device information
+    call("1-PrintDeviceInfo");
     var sEvent;
     var sCommandKey;
     for( i=0; i&amp;lt;=cpe.Inform.Event.length-1; i++ )
@@ -13,13 +15,13 @@
         switch ( sEvent )
         {
             case '0 BOOTSTRAP':
-                call("1-DoBootStrap");
+                call("2-DoBootStrap");

             case '1 BOOT':
-                call("2-DoBoot");
+                call("3-DoBoot");

             case '2 PERIODIC':
-                call("3-DoPeriodic");
+                call("4-DoPeriodic");

             case '3 SCHEDULED':
                 break;
@@ -31,7 +33,7 @@
                 break;

             case '6 CONNECTION REQUEST':
-                call("4-DoConnectionRequest");
+                call("5-DoConnectionRequest");

             case '7 TRANSFER COMPLETE':
                 break;
@@ -51,5 +53,6 @@

 Below are some example scripts:

+[Print Device Information](Example-PrintDeviceInfo) - Example script showing printing all the device information received in the initial request.
 [Check Object and Add Object](Example-VoiceProfile) - Check for a Voice Profile and add Voice Profile Object if if it doesn't then call external script to set TR104 Parameters.
 [SetParameterValues using Array](Example-SetTR104) - Set the TR-104 Voice Profile creating an array then using SetParameterValues
&lt;/pre&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Peter Lambrechtsen</dc:creator><pubDate>Tue, 29 Jul 2014 03:05:33 -0000</pubDate><guid>https://sourceforge.netf69079ecc3280e3c67be889fdb14031568bb685c</guid></item><item><title>Examples modified by Peter Lambrechtsen</title><link>https://sourceforge.net/p/libreacs/wiki/Examples/</link><description>&lt;div class="markdown_content"&gt;&lt;h1 id="example-script"&gt;Example Script&lt;/h1&gt;
&lt;p&gt;First for the "Default" script you should determine what sort of request was sent:&lt;/p&gt;
&lt;div class="codehilite"&gt;&lt;pre&gt;&lt;span class="n"&gt;var&lt;/span&gt; &lt;span class="n"&gt;sEvent&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="n"&gt;var&lt;/span&gt; &lt;span class="n"&gt;sCommandKey&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;=&lt;/span&gt;&lt;span class="n"&gt;cpe&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Inform&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;length&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;sEvent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;cpe&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Inform&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Event&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;EventCode&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;sCommandKey&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;cpe&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Inform&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Event&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;CommandKey&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="k"&gt;switch&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="n"&gt;sEvent&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="n"&gt;BOOTSTRAP&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;:
            &lt;span class="n"&gt;call&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"1-DoBootStrap"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

        &lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="n"&gt;BOOT&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;:
            &lt;span class="n"&gt;call&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"2-DoBoot"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

        &lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="n"&gt;PERIODIC&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;:
            &lt;span class="n"&gt;call&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"3-DoPeriodic"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

        &lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="n"&gt;SCHEDULED&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;:
            &lt;span class="k"&gt;break&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

        &lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt; &lt;span class="n"&gt;VALUE&lt;/span&gt; &lt;span class="n"&gt;CHANGE&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;:
            &lt;span class="k"&gt;break&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

        &lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt; &lt;span class="n"&gt;KICKED&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;:
            &lt;span class="k"&gt;break&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

        &lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt; &lt;span class="n"&gt;CONNECTION&lt;/span&gt; &lt;span class="n"&gt;REQUEST&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;:
            &lt;span class="n"&gt;call&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"4-DoConnectionRequest"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

        &lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt; &lt;span class="n"&gt;TRANSFER&lt;/span&gt; &lt;span class="n"&gt;COMPLETE&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;:
            &lt;span class="k"&gt;break&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

        &lt;span class="k"&gt;case&lt;/span&gt; &lt;span class="err"&gt;'&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt; &lt;span class="n"&gt;DIAGNOSTICS&lt;/span&gt; &lt;span class="n"&gt;COMPLETE&lt;/span&gt;&lt;span class="err"&gt;'&lt;/span&gt;:
            &lt;span class="k"&gt;break&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;h1 id="subroutine-scripts"&gt;Subroutine scripts&lt;/h1&gt;
&lt;p&gt;Now that you have created a script above, you can create a sub-script that is called and name them "1-DoBootStrap" or similar. I personally numbered them so the order as displayed inside ACS on the left hand side is shown in the order that the scripts are executed, otherwise they are ordered alphabetically.&lt;/p&gt;
&lt;h1 id="script-library"&gt;Script Library&lt;/h1&gt;
&lt;p&gt;Below are some example scripts:&lt;/p&gt;
&lt;p&gt;&lt;a class="" href="/p/libreacs/wiki/Example-VoiceProfile"&gt;Check Object and Add Object&lt;/a&gt; - Check for a Voice Profile and add Voice Profile Object if if it doesn't then call external script to set TR104 Parameters.&lt;br /&gt;
&lt;a class="" href="/p/libreacs/wiki/Example-SetTR104"&gt;SetParameterValues using Array&lt;/a&gt; - Set the TR-104 Voice Profile creating an array then using SetParameterValues&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Peter Lambrechtsen</dc:creator><pubDate>Thu, 10 Jul 2014 10:13:42 -0000</pubDate><guid>https://sourceforge.net1704f06f37ee7f9d14dbb8644da03515424c8c1b</guid></item></channel></rss>