<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://docs.telcobridges.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=10.0.0.157</id>
	<title>TB Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://docs.telcobridges.com/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=10.0.0.157"/>
	<link rel="alternate" type="text/html" href="https://docs.telcobridges.com/wiki/Special:Contributions/10.0.0.157"/>
	<updated>2026-07-27T19:22:53Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.1</generator>
	<entry>
		<id>https://docs.telcobridges.com/w/index.php?title=Toolpack_prerequisite_CentOS4_2-3&amp;diff=669</id>
		<title>Toolpack prerequisite CentOS4 2-3</title>
		<link rel="alternate" type="text/html" href="https://docs.telcobridges.com/w/index.php?title=Toolpack_prerequisite_CentOS4_2-3&amp;diff=669"/>
		<updated>2009-05-27T18:16:16Z</updated>

		<summary type="html">&lt;p&gt;10.0.0.157: /* Toolpack Basic packages */ correct typo zlib-devel instead of zlib-devel2&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page shows the Toolpack 2-3 prerequisites for CentOS 4.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Toolpack Prerequisite ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Toolpack Basic packages ===&lt;br /&gt;
&lt;br /&gt;
The software listed below is required by the host machines.&lt;br /&gt;
&lt;br /&gt;
  yum install gcc&lt;br /&gt;
  yum install zlib-devel&lt;br /&gt;
&lt;br /&gt;
=== Toolpack System Database ===&lt;br /&gt;
&lt;br /&gt;
The Toolpack system database is used by the main host and requires mySQL database server. The &lt;br /&gt;
system database packages are as follows:&lt;br /&gt;
&lt;br /&gt;
  yum install mysql-server&lt;br /&gt;
  yum install mysql-devel&lt;br /&gt;
  yum install openssl&lt;br /&gt;
&lt;br /&gt;
Depending on the CentOS installation, the command paths for the database (i.e. mysql_install_db, mysqladmin, mysql) and system tools (chkconfig, service, etc) may not be included in the active PATH environment variable. MySql is usually installed in /usr/bin and system tools in sbin.&lt;br /&gt;
&lt;br /&gt;
1. start and enable mysql&lt;br /&gt;
&lt;br /&gt;
  chkconfig mysqld on&lt;br /&gt;
  service mysqld start&lt;br /&gt;
&lt;br /&gt;
2. Install the database.&lt;br /&gt;
&lt;br /&gt;
  mysql_install_db&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3. Log onto mysql, create a tbdb user. The &#039;&#039;[DatabaseUsername]&#039;&#039; and &#039;&#039;[DatabasePassword]&#039;&#039; will need to be supplied to the toolpack installer.&lt;br /&gt;
&lt;br /&gt;
  mysql -u root -p&lt;br /&gt;
  CREATE USER &#039;[DatabaseUsername]&#039;@&#039;%&#039; IDENTIFIED BY &#039;[DatabasePassword]&#039;;&lt;br /&gt;
  GRANT ALL PRIVILEGES ON *.* TO &#039;[DatabaseUsername]&#039;@&#039;%&#039; IDENTIFIED BY &#039;[DatabasePassword]&#039;;&lt;br /&gt;
  exit&lt;br /&gt;
&lt;br /&gt;
ex.&lt;br /&gt;
&lt;br /&gt;
  mysql -u root -p&lt;br /&gt;
  CREATE USER &#039;tbdb&#039;@&#039;%&#039; IDENTIFIED BY &#039;tbdbpw&#039;;&lt;br /&gt;
  GRANT ALL PRIVILEGES ON *.* TO &#039;tbdb&#039;@&#039;%&#039; IDENTIFIED BY &#039;tbdbpw&#039;;&lt;br /&gt;
  exit&lt;br /&gt;
&lt;br /&gt;
To verify if the user is created:&lt;br /&gt;
&lt;br /&gt;
  mysql -u root -p&lt;br /&gt;
  SELECT * FROM mysql.user;&lt;br /&gt;
  exit&lt;br /&gt;
&lt;br /&gt;
4. Retrieve the socket path (this command will give the path to the socket file).&lt;br /&gt;
&lt;br /&gt;
  mysql_config --socket&lt;br /&gt;
&lt;br /&gt;
5. Create a symbolic link to the path retrieve using the last command. &lt;br /&gt;
&lt;br /&gt;
  ln -s &amp;lt;PATH TAKEN FROM THE LAST CMD&amp;gt; /tmp/mysql.sock&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
  ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock&lt;br /&gt;
&lt;br /&gt;
6. Set the permission. Select option 7 (Create full privileges) for all database (*) on all hosts (%) for &lt;br /&gt;
the user &#039;&#039;[DatabaseUsername]&#039;&#039; (i.e. tbdb).&lt;br /&gt;
&lt;br /&gt;
  mysql_setpermission&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
7.Install odbc driver and driver manager&lt;br /&gt;
&lt;br /&gt;
  yum install mysql-connector-odbc&lt;br /&gt;
&lt;br /&gt;
7a. For 32 bits sytem:&lt;br /&gt;
&lt;br /&gt;
  wget http://download.distribution.telcobridges.com/3rdparty/prerequisite/bin/linux/mysql-connector-odbc-3.51.27-linux-x86-32bit.tar.gz&lt;br /&gt;
  tar -zxf mysql-connector-odbc-3.51.27-linux-x86-32bit.tar.gz&lt;br /&gt;
  mkdir -p /lib/tb/toolpack/3rdparty/odbc-connector/&lt;br /&gt;
  cp mysql-connector-odbc-3.51.27-linux-x86-32bit/lib/libmyodbc3_r-3.51.27.so /lib/tb/toolpack/3rdparty/odbc-connector/&lt;br /&gt;
&lt;br /&gt;
7b. For 64 bits sytem:&lt;br /&gt;
&lt;br /&gt;
  wget http://download.distribution.telcobridges.com/3rdparty/prerequisite/bin/linux/mysql-connector-odbc-3.51.27-linux-x86-64bit.tar.gz&lt;br /&gt;
  tar -zxf mysql-connector-odbc-3.51.27-linux-x86-64bit.tar.gz&lt;br /&gt;
  mkdir -p /lib/tb/toolpack/3rdparty/odbc-connector/&lt;br /&gt;
  cp mysql-connector-odbc-3.51.27-linux-x86-64bit/lib/libmyodbc3_r-3.51.27.so /lib/tb/toolpack/3rdparty/odbc-connector/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
8. Manually configure the odbc manager. Make sure mysql driver is enable(removing the comments for the mysql driver). Set the Driver as the previous command answer.&lt;br /&gt;
&lt;br /&gt;
  vim /etc/odbcinst.ini &lt;br /&gt;
&lt;br /&gt;
Here is an example:&lt;br /&gt;
&lt;br /&gt;
  # Driver from the MyODBC package&lt;br /&gt;
  # Setup from the unixODBC package&lt;br /&gt;
  [MySQL]&lt;br /&gt;
  Description     = ODBC for MySQL&lt;br /&gt;
  Driver          = /lib/tb/toolpack/3rdparty/odbc-connector/libmyodbc3_r-3.51.27.so&lt;br /&gt;
  Setup           = /usr/lib/libodbcmyS.so&lt;br /&gt;
  FileUsage       = 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
9. Configure mysql to support database replication (Will not interfere if your system do not use it).&lt;br /&gt;
&lt;br /&gt;
  vim /etc/my.cnf&lt;br /&gt;
&lt;br /&gt;
Add 2 new variable in the mysql config file&lt;br /&gt;
&lt;br /&gt;
Add log-bin and server-id. The value of server-id needs to be unique on each host( do not use 0 ).&lt;br /&gt;
&lt;br /&gt;
Make sure it is in the [mysqld] section&lt;br /&gt;
&lt;br /&gt;
  log-bin&lt;br /&gt;
  server-id=&#039;&#039;[UniqueId]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
  [root@TL-CENTOS64-02 tblab]# cat /etc/my.cnf&lt;br /&gt;
  [mysqld]&lt;br /&gt;
  datadir=/var/lib/mysql&lt;br /&gt;
  socket=/var/lib/mysql/mysql.sock&lt;br /&gt;
  user=mysql&lt;br /&gt;
  log-bin&lt;br /&gt;
  server-id=1&lt;br /&gt;
  # Default to using old password format for compatibility with mysql 3.x&lt;br /&gt;
  # clients (those using the mysqlclient10 compatibility package).&lt;br /&gt;
  old_passwords=1&lt;br /&gt;
  &lt;br /&gt;
  [mysqld_safe]&lt;br /&gt;
  log-error=/var/log/mysqld.log&lt;br /&gt;
  pid-file=/var/run/mysqld/mysqld.pid&lt;br /&gt;
  [root@TL-CENTOS64-02 tblab]#&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Reboot the mysql service&lt;br /&gt;
&lt;br /&gt;
 service mysqld restart&lt;br /&gt;
&lt;br /&gt;
=== Toolpack System Web Portal ===&lt;br /&gt;
&lt;br /&gt;
The Toolpack System Web Portal is required in order to host the Toolpack Web Portal. It requires the execution of all following commands:&lt;br /&gt;
&lt;br /&gt;
1. Manually install fcgi:&lt;br /&gt;
&lt;br /&gt;
  wget http://download.distribution.telcobridges.com/3rdparty/prerequisite/src/centos/fcgi-2.4.0.tar.gz&lt;br /&gt;
  tar -xzf fcgi-2.4.0.tar.gz&lt;br /&gt;
  cd fcgi-2.4.0&lt;br /&gt;
  ./configure&lt;br /&gt;
  make&lt;br /&gt;
  make install&lt;br /&gt;
  cd ../&lt;br /&gt;
&lt;br /&gt;
2. Install pcre:&lt;br /&gt;
&lt;br /&gt;
  yum install pcre&lt;br /&gt;
&lt;br /&gt;
3. Install lighttpd:&lt;br /&gt;
&lt;br /&gt;
3a. For 32 bits sytem:&lt;br /&gt;
&lt;br /&gt;
  wget -c http://download.distribution.telcobridges.com/3rdparty/prerequisite/bin/centos/lighttpd-1.4.20-6.el4.i386.rpm&lt;br /&gt;
  wget -c http://download.distribution.telcobridges.com/3rdparty/prerequisite/bin/centos/spawn-fcgi-1.4.20-6.el4.i386.rpm&lt;br /&gt;
  wget -c http://download.distribution.telcobridges.com/3rdparty/prerequisite/bin/centos/lighttpd-fastcgi-1.4.20-6.el4.i386.rpm&lt;br /&gt;
  rpm -ivh lighttpd-1.4.20-6.el4.i386.rpm lighttpd-fastcgi-1.4.20-6.el4.i386.rpm spawn-fcgi-1.4.20-6.el4.i386.rpm&lt;br /&gt;
&lt;br /&gt;
3b. For 64 bits sytem:&lt;br /&gt;
&lt;br /&gt;
  wget -c http://download.distribution.telcobridges.com/3rdparty/prerequisite/bin/centos/lighttpd-1.4.20-6.el4.x86_64.rpm&lt;br /&gt;
  wget -c http://download.distribution.telcobridges.com/3rdparty/prerequisite/bin/centos/spawn-fcgi-1.4.20-6.el4.x86_64.rpm&lt;br /&gt;
  wget -c http://download.distribution.telcobridges.com/3rdparty/prerequisite/bin/centos/lighttpd-fastcgi-1.4.20-6.el4.x86_64.rpm&lt;br /&gt;
  rpm -ivh lighttpd-1.4.20-6.el4.x86_64.rpm lighttpd-fastcgi-1.4.20-6.el4.x86_64.rpm spawn-fcgi-1.4.20-6.el4.x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
4. Install Ruby:&lt;br /&gt;
&lt;br /&gt;
  yum install ruby&lt;br /&gt;
  yum install ruby-devel&lt;br /&gt;
&lt;br /&gt;
6. Manually install rubygems:&lt;br /&gt;
&lt;br /&gt;
  wget http://download.distribution.telcobridges.com/3rdparty/prerequisite/src/centos/rubygems-0.9.0.tgz&lt;br /&gt;
  tar -xzf rubygems-0.9.0.tgz&lt;br /&gt;
  cd rubygems-0.9.0&lt;br /&gt;
  ruby setup.rb&lt;br /&gt;
  cd ../&lt;br /&gt;
&lt;br /&gt;
7. Install gem fcgi:&lt;br /&gt;
&lt;br /&gt;
  gem install fcgi&lt;br /&gt;
&lt;br /&gt;
In case the gem file is corrupted (or the site is unavailable), follow the following guidelines to compile the gem directly:&lt;br /&gt;
  &lt;br /&gt;
   wget http://download.distribution.telcobridges.com/3rdparty/prerequisite/src/centos/ruby-fcgi-0.8.7.tar.gz&lt;br /&gt;
   tar -xzvf ruby-fcgi-0.8.7.tar.gz&lt;br /&gt;
   cd ruby-fcgi-0.8.7&lt;br /&gt;
   ruby install.rb config&lt;br /&gt;
   ruby install.rb setup&lt;br /&gt;
   ruby install.rb install&lt;br /&gt;
   cd ../&lt;br /&gt;
&lt;br /&gt;
8. Install libxml:&lt;br /&gt;
&lt;br /&gt;
  yum install libxml2&lt;br /&gt;
&lt;br /&gt;
Make sure that the firewall enables these following services and ports. Failure to open those ports will render socket communication between the distributed software elements unavailable.&lt;br /&gt;
Service: http (12358/tcp)&lt;br /&gt;
Port: All ports (tcp/udp) enabled for local networks&lt;br /&gt;
&lt;br /&gt;
=== Toolpack Development Prerequisite ===&lt;br /&gt;
The Toolpack System Development prerequisite section is only required for customers that will develop their own application using the Toolpack API:&lt;br /&gt;
&lt;br /&gt;
  yum install gcc-c++&lt;br /&gt;
  yum install libxml2-devel&lt;br /&gt;
  yum install unixODBC-devel&lt;br /&gt;
  yum install zlib-devel&lt;br /&gt;
&lt;br /&gt;
== Validation Guide (Optional) ==&lt;br /&gt;
If you would like to verify your installation go to the [[Toolpack_Installation:Validate_Toolpack_Installation|Toolpack Validation Guide]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Toolpack System installation ==&lt;br /&gt;
&lt;br /&gt;
Now that the prerequisite are installed, now it is time to install the [[toolpack_installer_2-3|Toolpack system]]&lt;/div&gt;</summary>
		<author><name>10.0.0.157</name></author>
	</entry>
	<entry>
		<id>https://docs.telcobridges.com/w/index.php?title=Toolpack_prerequisite_CentOS5_2-3&amp;diff=668</id>
		<title>Toolpack prerequisite CentOS5 2-3</title>
		<link rel="alternate" type="text/html" href="https://docs.telcobridges.com/w/index.php?title=Toolpack_prerequisite_CentOS5_2-3&amp;diff=668"/>
		<updated>2009-05-27T18:15:46Z</updated>

		<summary type="html">&lt;p&gt;10.0.0.157: /* Toolpack Basic packages */ correct typo zlib-devel instead of zlib-devel2&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page shows the Toolpack 2-3 prerequisites for CentOS 5.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Toolpack Prerequisite ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Toolpack Basic packages ===&lt;br /&gt;
&lt;br /&gt;
The software listed below is required by the host machines.&lt;br /&gt;
&lt;br /&gt;
  yum install gcc&lt;br /&gt;
  yum install zlib-devel&lt;br /&gt;
&lt;br /&gt;
=== Toolpack System Database ===&lt;br /&gt;
&lt;br /&gt;
The Toolpack system database is used by the main host and requires mySQL database server. The &lt;br /&gt;
system database packages are as follows:&lt;br /&gt;
&lt;br /&gt;
  yum install mysql-server&lt;br /&gt;
  yum install mysql-devel&lt;br /&gt;
&lt;br /&gt;
Depending on the CentOS installation, the command paths for the database (i.e. mysql_install_db, mysqladmin, mysql) and system tools (chkconfig, service, etc) may not be included in the active PATH environment variable. MySql is usually installed in /usr/bin and system tools in sbin.&lt;br /&gt;
&lt;br /&gt;
1. start and enable mysql&lt;br /&gt;
&lt;br /&gt;
  chkconfig mysqld on&lt;br /&gt;
  service mysqld start&lt;br /&gt;
&lt;br /&gt;
2. Install the database.&lt;br /&gt;
&lt;br /&gt;
  mysql_install_db&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3. Log onto mysql, create a tbdb user. The &#039;&#039;[DatabaseUsername]&#039;&#039; and &#039;&#039;[DatabasePassword]&#039;&#039; will need to be supplied to the toolpack installer.&lt;br /&gt;
&lt;br /&gt;
  mysql -u root -p&lt;br /&gt;
  CREATE USER &#039;[DatabaseUsername]&#039;@&#039;%&#039; IDENTIFIED BY &#039;[DatabasePassword]&#039;;&lt;br /&gt;
  GRANT ALL PRIVILEGES ON *.* TO &#039;[DatabaseUsername]&#039;@&#039;%&#039; IDENTIFIED BY &#039;[DatabasePassword]&#039;;&lt;br /&gt;
  exit&lt;br /&gt;
&lt;br /&gt;
ex.&lt;br /&gt;
&lt;br /&gt;
  mysql -u root -p&lt;br /&gt;
  CREATE USER &#039;tbdb&#039;@&#039;%&#039; IDENTIFIED BY &#039;tbdbpw&#039;;&lt;br /&gt;
  GRANT ALL PRIVILEGES ON *.* TO &#039;tbdb&#039;@&#039;%&#039; IDENTIFIED BY &#039;tbdbpw&#039;;&lt;br /&gt;
  exit&lt;br /&gt;
&lt;br /&gt;
To verify if the user is created:&lt;br /&gt;
&lt;br /&gt;
  mysql -u root -p&lt;br /&gt;
  SELECT * FROM mysql.user;&lt;br /&gt;
  exit&lt;br /&gt;
&lt;br /&gt;
4. Retrieve the socket path (this command will give the path to the socket file).&lt;br /&gt;
&lt;br /&gt;
  mysql_config --socket&lt;br /&gt;
&lt;br /&gt;
5. Create a symbolic link to the path retrieve using the last command. &lt;br /&gt;
&lt;br /&gt;
  ln -s &amp;lt;PATH TAKEN FROM THE LAST CMD&amp;gt; /tmp/mysql.sock&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
  ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock&lt;br /&gt;
&lt;br /&gt;
6. Set the permission. Select option 7 (Create full privileges) for all database (*) on all hosts (%) for &lt;br /&gt;
the user &#039;&#039;[DatabaseUsername]&#039;&#039; (i.e. tbdb).&lt;br /&gt;
&lt;br /&gt;
  mysql_setpermission&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
7.Install odbc driver and driver manager&lt;br /&gt;
&lt;br /&gt;
  yum install mysql-connector-odbc&lt;br /&gt;
&lt;br /&gt;
7a. For 32 bits sytem:&lt;br /&gt;
&lt;br /&gt;
  wget http://download.distribution.telcobridges.com/3rdparty/prerequisite/bin/linux/mysql-connector-odbc-3.51.27-linux-x86-32bit.tar.gz&lt;br /&gt;
  tar -zxf mysql-connector-odbc-3.51.27-linux-x86-32bit.tar.gz&lt;br /&gt;
  mkdir -p /lib/tb/toolpack/3rdparty/odbc-connector/&lt;br /&gt;
  cp mysql-connector-odbc-3.51.27-linux-x86-32bit/lib/libmyodbc3_r-3.51.27.so /lib/tb/toolpack/3rdparty/odbc-connector/&lt;br /&gt;
&lt;br /&gt;
7b. For 64 bits sytem:&lt;br /&gt;
&lt;br /&gt;
  wget http://download.distribution.telcobridges.com/3rdparty/prerequisite/bin/linux/mysql-connector-odbc-3.51.27-linux-x86-64bit.tar.gz&lt;br /&gt;
  tar -zxf mysql-connector-odbc-3.51.27-linux-x86-64bit.tar.gz&lt;br /&gt;
  mkdir -p /lib/tb/toolpack/3rdparty/odbc-connector/&lt;br /&gt;
  cp mysql-connector-odbc-3.51.27-linux-x86-64bit/lib/libmyodbc3_r-3.51.27.so /lib/tb/toolpack/3rdparty/odbc-connector/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
8. Manually configure the odbc manager. Make sure mysql driver is enable(removing the comments for the mysql driver). Set the Driver as the previous command answer.&lt;br /&gt;
&lt;br /&gt;
  vim /etc/odbcinst.ini &lt;br /&gt;
&lt;br /&gt;
Here is an example:&lt;br /&gt;
&lt;br /&gt;
  # Driver from the MyODBC package&lt;br /&gt;
  # Setup from the unixODBC package&lt;br /&gt;
  [MySQL]&lt;br /&gt;
  Description     = ODBC for MySQL&lt;br /&gt;
  Driver          = /lib/tb/toolpack/3rdparty/odbc-connector/libmyodbc3_r-3.51.27.so&lt;br /&gt;
  Setup           = /usr/lib/libodbcmyS.so&lt;br /&gt;
  FileUsage       = 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
9. Configure mysql to support database replication (Will not interfere if your system do not use it).&lt;br /&gt;
&lt;br /&gt;
  vim /etc/my.cnf&lt;br /&gt;
&lt;br /&gt;
Add 2 new variable in the mysql config file&lt;br /&gt;
&lt;br /&gt;
Add log-bin and server-id. The value of server-id needs to be unique on each host( do not use 0 ).&lt;br /&gt;
&lt;br /&gt;
Make sure it is in the [mysqld] section&lt;br /&gt;
&lt;br /&gt;
  log-bin&lt;br /&gt;
  server-id=&#039;&#039;[UniqueId]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
  [root@TL-CENTOS64-02 tblab]# cat /etc/my.cnf&lt;br /&gt;
  [mysqld]&lt;br /&gt;
  datadir=/var/lib/mysql&lt;br /&gt;
  socket=/var/lib/mysql/mysql.sock&lt;br /&gt;
  user=mysql&lt;br /&gt;
  log-bin&lt;br /&gt;
  server-id=1&lt;br /&gt;
  # Default to using old password format for compatibility with mysql 3.x&lt;br /&gt;
  # clients (those using the mysqlclient10 compatibility package).&lt;br /&gt;
  old_passwords=1&lt;br /&gt;
  &lt;br /&gt;
  [mysqld_safe]&lt;br /&gt;
  log-error=/var/log/mysqld.log&lt;br /&gt;
  pid-file=/var/run/mysqld/mysqld.pid&lt;br /&gt;
  [root@TL-CENTOS64-02 tblab]#&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Reboot the mysql service&lt;br /&gt;
&lt;br /&gt;
 service mysqld restart&lt;br /&gt;
&lt;br /&gt;
=== Toolpack System Web Portal ===&lt;br /&gt;
&lt;br /&gt;
The Toolpack System Web Portal is required in order to host the Toolpack Web Portal. It requires the execution of all following commands:&lt;br /&gt;
&lt;br /&gt;
1. Manually install fcgi:&lt;br /&gt;
&lt;br /&gt;
  wget http://download.distribution.telcobridges.com/3rdparty/prerequisite/src/centos/fcgi-2.4.0.tar.gz&lt;br /&gt;
  tar -xzf fcgi-2.4.0.tar.gz&lt;br /&gt;
  cd fcgi-2.4.0&lt;br /&gt;
  ./configure&lt;br /&gt;
  make&lt;br /&gt;
  make install&lt;br /&gt;
  cd ../&lt;br /&gt;
&lt;br /&gt;
2. Install pcre:&lt;br /&gt;
&lt;br /&gt;
  yum install pcre&lt;br /&gt;
&lt;br /&gt;
3. Install lighttpd:&lt;br /&gt;
&lt;br /&gt;
3a. For 32 bits sytem:&lt;br /&gt;
&lt;br /&gt;
  wget -c http://download.distribution.telcobridges.com/3rdparty/prerequisite/bin/centos/lighttpd-1.4.18-1.el5.rf.i386.rpm&lt;br /&gt;
  wget http://download.distribution.telcobridges.com/3rdparty/prerequisite/bin/centos/lighttpd-fastcgi-1.4.18-1.el5.rf.i386.rpm&lt;br /&gt;
  rpm -ivh lighttpd-1.4.18-1.el5.rf.i386.rpm lighttpd-fastcgi-1.4.18-1.el5.rf.i386.rpm&lt;br /&gt;
&lt;br /&gt;
3b. For 64 bits sytem:&lt;br /&gt;
&lt;br /&gt;
  wget -c http://download.distribution.telcobridges.com/3rdparty/prerequisite/bin/centos/lighttpd-1.4.18-1.el5.rf.x86_64.rpm&lt;br /&gt;
  wget http://download.distribution.telcobridges.com/3rdparty/prerequisite/bin/centos/lighttpd-fastcgi-1.4.18-1.el5.rf.x86_64.rpm&lt;br /&gt;
  rpm -ivh lighttpd-1.4.18-1.el5.rf.x86_64.rpm lighttpd-fastcgi-1.4.18-1.el5.rf.x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
4. Install Ruby:&lt;br /&gt;
&lt;br /&gt;
  yum install ruby&lt;br /&gt;
  yum install ruby-devel&lt;br /&gt;
&lt;br /&gt;
6. Manually install rubygems:&lt;br /&gt;
&lt;br /&gt;
  wget http://download.distribution.telcobridges.com/3rdparty/prerequisite/src/centos/rubygems-0.9.0.tgz&lt;br /&gt;
  tar -xzf rubygems-0.9.0.tgz&lt;br /&gt;
  cd rubygems-0.9.0&lt;br /&gt;
  ruby setup.rb&lt;br /&gt;
  cd ../&lt;br /&gt;
&lt;br /&gt;
7. Install gem fcgi:&lt;br /&gt;
&lt;br /&gt;
  gem install fcgi&lt;br /&gt;
&lt;br /&gt;
8. Install libxml:&lt;br /&gt;
&lt;br /&gt;
  yum install libxml2&lt;br /&gt;
&lt;br /&gt;
Make sure that the firewall enables these following services and ports. Failure to open those ports will render socket communication between the distributed software elements unavailable.&lt;br /&gt;
Service: http (12358/tcp)&lt;br /&gt;
Port: All ports (tcp/udp) enabled for local networks&lt;br /&gt;
&lt;br /&gt;
=== Toolpack Stream Server ===&lt;br /&gt;
&lt;br /&gt;
The Tmedia Toolpack Stream Server requires the execution of the following commands:&lt;br /&gt;
&lt;br /&gt;
  yum install libpcap&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Toolpack Development Prerequisite ===&lt;br /&gt;
The Toolpack System Development prerequisite section is only required for customers that will develop their own application using the Toolpack API:&lt;br /&gt;
&lt;br /&gt;
  yum install gcc-c++&lt;br /&gt;
  yum install libxml2-devel&lt;br /&gt;
  yum install libpcap-devel&lt;br /&gt;
  yum install unixODBC-devel&lt;br /&gt;
  yum install zlib-devel&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Validation Guide (Optional) ==&lt;br /&gt;
If you would like to verify your installation go to the [[Toolpack_Installation:Validate_Toolpack_Installation|Toolpack Validation Guide]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Toolpack System installation ==&lt;br /&gt;
&lt;br /&gt;
Now that the prerequisite are installed, now it is time to install the [[toolpack_installer_2-3|Toolpack system]]&lt;/div&gt;</summary>
		<author><name>10.0.0.157</name></author>
	</entry>
	<entry>
		<id>https://docs.telcobridges.com/w/index.php?title=Toolpack_Troubleshooting:Web_Portal&amp;diff=663</id>
		<title>Toolpack Troubleshooting:Web Portal</title>
		<link rel="alternate" type="text/html" href="https://docs.telcobridges.com/w/index.php?title=Toolpack_Troubleshooting:Web_Portal&amp;diff=663"/>
		<updated>2009-05-27T15:26:45Z</updated>

		<summary type="html">&lt;p&gt;10.0.0.157: creation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Cannot access the web portal&lt;br /&gt;
&lt;br /&gt;
== Failed to connect ==&lt;br /&gt;
Verify that the firewall(host and possibly network) enable http/https.&lt;br /&gt;
:Modify the firewall rules to accept incoming http and https request.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Verify lighttpd instance ==&lt;br /&gt;
For Unix host, verify that there is not 2 lighttpd  instance using the same configuration file.&lt;br /&gt;
:If they do, you should close or kill one.&lt;/div&gt;</summary>
		<author><name>10.0.0.157</name></author>
	</entry>
	<entry>
		<id>https://docs.telcobridges.com/w/index.php?title=Toolpack_prerequisite_Debian4_2-3&amp;diff=637</id>
		<title>Toolpack prerequisite Debian4 2-3</title>
		<link rel="alternate" type="text/html" href="https://docs.telcobridges.com/w/index.php?title=Toolpack_prerequisite_Debian4_2-3&amp;diff=637"/>
		<updated>2009-05-25T14:31:51Z</updated>

		<summary type="html">&lt;p&gt;10.0.0.157: /* Toolpack Prerequisite */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page shows the Toolpack 2-3 prerequisites for Debian 4.&lt;br /&gt;
&lt;br /&gt;
== Toolpack Prerequisite ==&lt;br /&gt;
&lt;br /&gt;
WARNING: This prerequisite was not validate yet&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Toolpack Basic packages ===&lt;br /&gt;
&lt;br /&gt;
  apt-get install sysvconfig&lt;br /&gt;
  apt-get install zlib1g-dev&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Toolpack System Database ===&lt;br /&gt;
&lt;br /&gt;
1. Install mysql.&lt;br /&gt;
&lt;br /&gt;
  apt-get install mysql-server&lt;br /&gt;
  apt-get install libmysqlclient15-dev&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Configure mysql&lt;br /&gt;
&lt;br /&gt;
  mysql_install_db&lt;br /&gt;
  service mysql start&lt;br /&gt;
  /usr/bin/mysqladmin -u root password &#039;mysql&#039;&lt;br /&gt;
  mysql -u root -p&lt;br /&gt;
  &lt;br /&gt;
  exit&lt;br /&gt;
&lt;br /&gt;
3. Log onto mysql, create a tbdb user. The &#039;&#039;[DatabaseUsername]&#039;&#039; and &#039;&#039;[DatabasePassword]&#039;&#039; will need to be supplied to the toolpack installer.&lt;br /&gt;
&lt;br /&gt;
  mysql -u root -p&lt;br /&gt;
  CREATE USER &#039;[DatabaseUsername]&#039;@&#039;%&#039; IDENTIFIED BY &#039;[DatabasePassword]&#039;;&lt;br /&gt;
  GRANT ALL PRIVILEGES ON *.* TO &#039;[DatabaseUsername]&#039;@&#039;%&#039; IDENTIFIED BY &#039;[DatabasePassword]&#039;;&lt;br /&gt;
  exit&lt;br /&gt;
&lt;br /&gt;
ex.&lt;br /&gt;
&lt;br /&gt;
  mysql -u root -p&lt;br /&gt;
  CREATE USER &#039;tbdb&#039;@&#039;%&#039; IDENTIFIED BY &#039;tbdbpw&#039;;&lt;br /&gt;
  GRANT ALL PRIVILEGES ON *.* TO &#039;tbdb&#039;@&#039;%&#039; IDENTIFIED BY &#039;tbdbpw&#039;;&lt;br /&gt;
  exit&lt;br /&gt;
&lt;br /&gt;
To verify if the user is created:&lt;br /&gt;
&lt;br /&gt;
  mysql -u root -p&lt;br /&gt;
  SELECT * FROM mysql.user;&lt;br /&gt;
  exit&lt;br /&gt;
&lt;br /&gt;
4. Retrieve the socket path (this command will give the path to the socket file).&lt;br /&gt;
&lt;br /&gt;
  mysql_config --socket&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5. Create a symbolic link to the path retrieve using the last command.&lt;br /&gt;
&lt;br /&gt;
  ln -s &amp;lt;PATH TAKEN FROM THE LAST CMD&amp;gt; /tmp/mysql.sock&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
  ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Set the permission. Select option 7 (Create full privileges) for all database (*) on all hosts (%) for the targeted user.&lt;br /&gt;
&lt;br /&gt;
  mysql_setpermission&lt;br /&gt;
&lt;br /&gt;
Install ODBC&lt;br /&gt;
&lt;br /&gt;
  apt-get install unixodbc&lt;br /&gt;
  apt-get install libmyodbc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Configure ODBC to use the MySQL connector&lt;br /&gt;
&lt;br /&gt;
  sudo odbcinst -i -f /usr/share/libmyodbc/odbcinst.ini -d&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Configure mysql to support database replication (Will not interfere if your system do not use it).&lt;br /&gt;
  vi /etc/mysql/my.cnf&lt;br /&gt;
&lt;br /&gt;
Add 2 new variable in the mysql config file&lt;br /&gt;
&lt;br /&gt;
Add log-bin and server-id. The value of server-id needs to be unique on each host( do not use 0 ).&lt;br /&gt;
&lt;br /&gt;
Make sure it is in the [mysqld] section&lt;br /&gt;
&lt;br /&gt;
  log-bin&lt;br /&gt;
  server-id=&#039;&#039;[UniqueId]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
  # The following can be used as easy to replay backup logs or for replication.&lt;br /&gt;
  server-id              = 1&lt;br /&gt;
  log_bin                = /var/log/mysql/mysql-bin.log&lt;br /&gt;
&lt;br /&gt;
Restart MySQL service&lt;br /&gt;
  service mysqld restart&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Toolpack System Web Portal ===&lt;br /&gt;
&lt;br /&gt;
Install web server packages&lt;br /&gt;
&lt;br /&gt;
  apt-get install libfcgi&lt;br /&gt;
  apt-get install libfcgi-dev&lt;br /&gt;
  apt-get install lighttpd&lt;br /&gt;
  apt-get install ruby irb ri rdoc build-essential &lt;br /&gt;
  apt-get install rubygems&lt;br /&gt;
  apt-get install ruby1.8-dev&lt;br /&gt;
  apt-get install libopenssl-ruby1.8&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install fcgi gem&lt;br /&gt;
&lt;br /&gt;
  gem install fcgi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install libxml2 ( was already installed )&lt;br /&gt;
&lt;br /&gt;
  apt-get install libxml2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Use the UI to prevent lighttpd to start at boot time. ( Remove the &#039;*&#039; besides the lighttpd service )&lt;br /&gt;
&lt;br /&gt;
  sysvconfig&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Stop the lighttpd service&lt;br /&gt;
&lt;br /&gt;
  service lighttpd stop&lt;br /&gt;
&lt;br /&gt;
Firewall seems to be disable by default. But if there is one, it needs to allow:&lt;br /&gt;
&lt;br /&gt;
Service: http (12358/tcp)&lt;br /&gt;
&lt;br /&gt;
Port: All ports (tcp/udp) enabled for local networks&lt;br /&gt;
&lt;br /&gt;
=== Toolpack Stream Server ===&lt;br /&gt;
&lt;br /&gt;
Install pcap0.8 for the stream server&lt;br /&gt;
&lt;br /&gt;
  apt-get install libpcap0.8&lt;br /&gt;
&lt;br /&gt;
=== Toolpack Development Prerequisite ===&lt;br /&gt;
&lt;br /&gt;
Available soon&lt;br /&gt;
&lt;br /&gt;
== Toolpack System installation ==&lt;br /&gt;
&lt;br /&gt;
Now that the prerequisite are installed, now it is time to install the [[toolpack_installer_2-3|Toolpack system]]&lt;/div&gt;</summary>
		<author><name>10.0.0.157</name></author>
	</entry>
	<entry>
		<id>https://docs.telcobridges.com/w/index.php?title=Toolpack_prerequisite_Debian4_2-3&amp;diff=636</id>
		<title>Toolpack prerequisite Debian4 2-3</title>
		<link rel="alternate" type="text/html" href="https://docs.telcobridges.com/w/index.php?title=Toolpack_prerequisite_Debian4_2-3&amp;diff=636"/>
		<updated>2009-05-25T14:30:53Z</updated>

		<summary type="html">&lt;p&gt;10.0.0.157: add database replication&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page shows the Toolpack 2-3 prerequisites for Debian 4.&lt;br /&gt;
&lt;br /&gt;
== Toolpack Prerequisite ==&lt;br /&gt;
&lt;br /&gt;
WARNING: This prerequisite was not validate yet&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Toolpack Basic packages ===&lt;br /&gt;
&lt;br /&gt;
  apt-get install sysvconfig&lt;br /&gt;
  apt-get install zlib1g-dev&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Toolpack System Database ===&lt;br /&gt;
&lt;br /&gt;
1. Install mysql.&lt;br /&gt;
&lt;br /&gt;
  apt-get install mysql-server&lt;br /&gt;
  apt-get install libmysqlclient15-dev&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
2. Configure mysql&lt;br /&gt;
&lt;br /&gt;
  mysql_install_db&lt;br /&gt;
  service mysql start&lt;br /&gt;
  /usr/bin/mysqladmin -u root password &#039;mysql&#039;&lt;br /&gt;
  mysql -u root -p&lt;br /&gt;
  &lt;br /&gt;
  exit&lt;br /&gt;
&lt;br /&gt;
3. Log onto mysql, create a tbdb user. The &#039;&#039;[DatabaseUsername]&#039;&#039; and &#039;&#039;[DatabasePassword]&#039;&#039; will need to be supplied to the toolpack installer.&lt;br /&gt;
&lt;br /&gt;
  mysql -u root -p&lt;br /&gt;
  CREATE USER &#039;[DatabaseUsername]&#039;@&#039;%&#039; IDENTIFIED BY &#039;[DatabasePassword]&#039;;&lt;br /&gt;
  GRANT ALL PRIVILEGES ON *.* TO &#039;[DatabaseUsername]&#039;@&#039;%&#039; IDENTIFIED BY &#039;[DatabasePassword]&#039;;&lt;br /&gt;
  exit&lt;br /&gt;
&lt;br /&gt;
ex.&lt;br /&gt;
&lt;br /&gt;
  mysql -u root -p&lt;br /&gt;
  CREATE USER &#039;tbdb&#039;@&#039;%&#039; IDENTIFIED BY &#039;tbdbpw&#039;;&lt;br /&gt;
  GRANT ALL PRIVILEGES ON *.* TO &#039;tbdb&#039;@&#039;%&#039; IDENTIFIED BY &#039;tbdbpw&#039;;&lt;br /&gt;
  exit&lt;br /&gt;
&lt;br /&gt;
To verify if the user is created:&lt;br /&gt;
&lt;br /&gt;
  mysql -u root -p&lt;br /&gt;
  SELECT * FROM mysql.user;&lt;br /&gt;
  exit&lt;br /&gt;
&lt;br /&gt;
4. Retrieve the socket path (this command will give the path to the socket file).&lt;br /&gt;
&lt;br /&gt;
  mysql_config --socket&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
5. Create a symbolic link to the path retrieve using the last command.&lt;br /&gt;
&lt;br /&gt;
  ln -s &amp;lt;PATH TAKEN FROM THE LAST CMD&amp;gt; /tmp/mysql.sock&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
  ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Set the permission. Select option 7 (Create full privileges) for all database (*) on all hosts (%) for the targeted user.&lt;br /&gt;
&lt;br /&gt;
  mysql_setpermission&lt;br /&gt;
&lt;br /&gt;
Install ODBC&lt;br /&gt;
&lt;br /&gt;
  apt-get install unixodbc&lt;br /&gt;
  apt-get install libmyodbc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Configure ODBC to use the MySQL connector&lt;br /&gt;
&lt;br /&gt;
  sudo odbcinst -i -f /usr/share/libmyodbc/odbcinst.ini -d&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Configure mysql to support database replication (Will not interfere if your system do not use it).&lt;br /&gt;
  vi /etc/mysql/my.cnf&lt;br /&gt;
&lt;br /&gt;
Add 2 new variable in the mysql config file&lt;br /&gt;
&lt;br /&gt;
Add log-bin and server-id. The value of server-id needs to be unique on each host( do not use 0 ).&lt;br /&gt;
&lt;br /&gt;
Make sure it is in the [mysqld] section&lt;br /&gt;
&lt;br /&gt;
  log-bin&lt;br /&gt;
  server-id=&#039;&#039;[UniqueId]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
  # The following can be used as easy to replay backup logs or for replication.&lt;br /&gt;
  server-id              = 1&lt;br /&gt;
  log_bin                = /var/log/mysql/mysql-bin.log&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Toolpack System Web Portal ===&lt;br /&gt;
&lt;br /&gt;
Install web server packages&lt;br /&gt;
&lt;br /&gt;
  apt-get install libfcgi&lt;br /&gt;
  apt-get install libfcgi-dev&lt;br /&gt;
  apt-get install lighttpd&lt;br /&gt;
  apt-get install ruby irb ri rdoc build-essential &lt;br /&gt;
  apt-get install rubygems&lt;br /&gt;
  apt-get install ruby1.8-dev&lt;br /&gt;
  apt-get install libopenssl-ruby1.8&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install fcgi gem&lt;br /&gt;
&lt;br /&gt;
  gem install fcgi&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Install libxml2 ( was already installed )&lt;br /&gt;
&lt;br /&gt;
  apt-get install libxml2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Use the UI to prevent lighttpd to start at boot time. ( Remove the &#039;*&#039; besides the lighttpd service )&lt;br /&gt;
&lt;br /&gt;
  sysvconfig&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Stop the lighttpd service&lt;br /&gt;
&lt;br /&gt;
  service lighttpd stop&lt;br /&gt;
&lt;br /&gt;
Firewall seems to be disable by default. But if there is one, it needs to allow:&lt;br /&gt;
&lt;br /&gt;
Service: http (12358/tcp)&lt;br /&gt;
&lt;br /&gt;
Port: All ports (tcp/udp) enabled for local networks&lt;br /&gt;
&lt;br /&gt;
=== Toolpack Stream Server ===&lt;br /&gt;
&lt;br /&gt;
Install pcap0.8 for the stream server&lt;br /&gt;
&lt;br /&gt;
  apt-get install libpcap0.8&lt;br /&gt;
&lt;br /&gt;
=== Toolpack Development Prerequisite ===&lt;br /&gt;
&lt;br /&gt;
Available soon&lt;br /&gt;
&lt;br /&gt;
== Toolpack System installation ==&lt;br /&gt;
&lt;br /&gt;
Now that the prerequisite are installed, now it is time to install the [[toolpack_installer_2-3|Toolpack system]]&lt;/div&gt;</summary>
		<author><name>10.0.0.157</name></author>
	</entry>
	<entry>
		<id>https://docs.telcobridges.com/w/index.php?title=Toolpack_Installation:toolpack_validate_Debian4_2-3&amp;diff=635</id>
		<title>Toolpack Installation:toolpack validate Debian4 2-3</title>
		<link rel="alternate" type="text/html" href="https://docs.telcobridges.com/w/index.php?title=Toolpack_Installation:toolpack_validate_Debian4_2-3&amp;diff=635"/>
		<updated>2009-05-25T14:24:48Z</updated>

		<summary type="html">&lt;p&gt;10.0.0.157: correction for debian&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;If any of those steps fails, refer to the [[Toolpack_prerequisite_Debian4_2-3|Debian 4 installation guide]]&lt;br /&gt;
&lt;br /&gt;
== apt-get Packages ==&lt;br /&gt;
&lt;br /&gt;
*Validation of the following package on the system using yum:&lt;br /&gt;
  dpkg -l sysvconfig&lt;br /&gt;
  dpkg -l zlib1g-dev&lt;br /&gt;
  dpkg -l mysql-server&lt;br /&gt;
  dpkg -l libmysqlclient15-dev&lt;br /&gt;
  dpkg -l unixodbc&lt;br /&gt;
  dpkg -l libmyodbc&lt;br /&gt;
  dpkg -l libfcgi&lt;br /&gt;
  dpkg -l libfcgi-dev&lt;br /&gt;
  dpkg -l lighttpd&lt;br /&gt;
  dpkg -l ruby irb ri rdoc build-essential &lt;br /&gt;
  dpkg -l rubygems&lt;br /&gt;
  dpkg -l ruby1.8-dev&lt;br /&gt;
  dpkg -l libopenssl-ruby1.8&lt;br /&gt;
  dpkg -l libxml2&lt;br /&gt;
  dpkg -l libpcap0.8&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
 tl-debian64-01:/home/tblab# dpkg -l sysvconfig&lt;br /&gt;
  Desired=Unknown/Install/Remove/Purge/Hold&lt;br /&gt;
  | Status=Not/Installed/Config-files/Unpacked/Failed-config/Half-installed&lt;br /&gt;
  |/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad)&lt;br /&gt;
  ||/ Name                          Version                       Description&lt;br /&gt;
  +++-=============================-=============================-==========================================================================&lt;br /&gt;
  ii  sysvconfig                    0.70                          A text menu based utility for configuring init script links&lt;br /&gt;
 tl-debian64-01:/home/tblab#&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Other Packages Installed ==&lt;br /&gt;
=== gem Installation ===&lt;br /&gt;
*execute the following command:&lt;br /&gt;
  gem list --local&lt;br /&gt;
: Result should contain:&lt;br /&gt;
  *** LOCAL GEMS ***&lt;br /&gt;
  &lt;br /&gt;
  fcgi (0.8.7)&lt;br /&gt;
      FastCGI library for Ruby.&lt;br /&gt;
  &lt;br /&gt;
  sources (0.0.1)&lt;br /&gt;
      This package provides download sources for remote gem installation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ODBC Configuration ==&lt;br /&gt;
&lt;br /&gt;
*Verify odbc config file:&lt;br /&gt;
  cat /etc/odbcinst.ini&lt;br /&gt;
: Result should contain:&lt;br /&gt;
  [MySQL]&lt;br /&gt;
  Description         = MySQL driver&lt;br /&gt;
  Driver              = /usr/lib/odbc/libmyodbc.so&lt;br /&gt;
  Setup               = /usr/lib/odbc/libodbcmyS.so&lt;br /&gt;
  CPTimeout           =&lt;br /&gt;
  CPReuse             =&lt;br /&gt;
  UsageCount          = 2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== MySQL Configuration ==&lt;br /&gt;
*Verify MySQL config file:&lt;br /&gt;
  cat /etc/mysql/my.cnf&lt;br /&gt;
: Result should contain under [mysqld]:&lt;br /&gt;
  # The following can be used as easy to replay backup logs or for replication.&lt;br /&gt;
  server-id              = 1&lt;br /&gt;
  log_bin                = /var/log/mysql/mysql-bin.log&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: server-id value may vary, but server-id needs to be a non-zero value and unique when using more than one host.&lt;br /&gt;
&lt;br /&gt;
*Verify if the server is running&lt;br /&gt;
  service mysqld status&lt;br /&gt;
: Result, should be something like this:&lt;br /&gt;
  /usr/bin/mysqladmin  Ver 8.41 Distrib 5.0.32, for pc-linux-gnu on x86_64&lt;br /&gt;
  Copyright (C) 2000 MySQL AB &amp;amp; MySQL Finland AB &amp;amp; TCX DataKonsult AB&lt;br /&gt;
  This software comes with ABSOLUTELY NO WARRANTY. This is free software,&lt;br /&gt;
  and you are welcome to modify and redistribute it under the GPL license&lt;br /&gt;
  &lt;br /&gt;
  Server version          5.0.32-Debian_7etch8-log&lt;br /&gt;
  Protocol version        10&lt;br /&gt;
  Connection              Localhost via UNIX socket&lt;br /&gt;
  UNIX socket             /var/run/mysqld/mysqld.sock&lt;br /&gt;
  Uptime:                 30 min 49 sec&lt;br /&gt;
  &lt;br /&gt;
  Threads: 1  Questions: 449  Slow queries: 0  Opens: 753  Flush tables: 1  Open tables: 64  Queries per second avg: 0.243.&lt;/div&gt;</summary>
		<author><name>10.0.0.157</name></author>
	</entry>
	<entry>
		<id>https://docs.telcobridges.com/w/index.php?title=Toolpack_Installation:toolpack_validate_CentOS5_2-3&amp;diff=634</id>
		<title>Toolpack Installation:toolpack validate CentOS5 2-3</title>
		<link rel="alternate" type="text/html" href="https://docs.telcobridges.com/w/index.php?title=Toolpack_Installation:toolpack_validate_CentOS5_2-3&amp;diff=634"/>
		<updated>2009-05-25T14:17:09Z</updated>

		<summary type="html">&lt;p&gt;10.0.0.157: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;If any of those steps fails, refer to the [[Toolpack_prerequisite_CentOS5_2-3|CentOS5 installation guide]]&lt;br /&gt;
&lt;br /&gt;
== Yum Packages ==&lt;br /&gt;
&lt;br /&gt;
*Validation of the following package on the system using yum:&lt;br /&gt;
  yum list installed gcc&lt;br /&gt;
  yum list installed zlib-devel2&lt;br /&gt;
  yum list installed mysql-server&lt;br /&gt;
  yum list installed mysql-devel&lt;br /&gt;
  yum list installed mysql-connector-odbc&lt;br /&gt;
  yum list installed pcre&lt;br /&gt;
  yum list installed ruby&lt;br /&gt;
  yum list installed ruby-devel&lt;br /&gt;
  yum list installed libxml2&lt;br /&gt;
  yum list installed libpcap&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
  [root@TL-CENTOS64-02 log]# yum list installed gcc&lt;br /&gt;
  Installed Packages&lt;br /&gt;
  gcc.x86_64                               4.1.2-42.el5           installed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Other Packages Installed ==&lt;br /&gt;
=== gem Installation ===&lt;br /&gt;
*execute the following command:&lt;br /&gt;
  gem list --local&lt;br /&gt;
: Result should contain:&lt;br /&gt;
  *** LOCAL GEMS ***&lt;br /&gt;
  &lt;br /&gt;
  fcgi (0.8.7)&lt;br /&gt;
      FastCGI library for Ruby.&lt;br /&gt;
  &lt;br /&gt;
  sources (0.0.1)&lt;br /&gt;
      This package provides download sources for remote gem installation&lt;br /&gt;
&lt;br /&gt;
=== lighttpd Installation ===&lt;br /&gt;
*execute the following command:&lt;br /&gt;
  rpm -qa | grep lighttpd&lt;br /&gt;
: Result should contain:&lt;br /&gt;
  lighttpd-1.4.18-1.el5.rf&lt;br /&gt;
  lighttpd-fastcgi-1.4.18-1.el5.rf&lt;br /&gt;
&lt;br /&gt;
=== fcgi Installation ===&lt;br /&gt;
*execute the following command:&lt;br /&gt;
  find /usr/local/lib -name \*fcgi\*&lt;br /&gt;
: Result should contain:&lt;br /&gt;
  /usr/local/lib/libfcgi.so.0.0.0&lt;br /&gt;
  /usr/local/lib/libfcgi.so.0&lt;br /&gt;
  /usr/local/lib/libfcgi.so&lt;br /&gt;
  /usr/local/lib/libfcgi.a&lt;br /&gt;
  /usr/local/lib/libfcgi.la&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ODBC Configuration ==&lt;br /&gt;
*Verify that the following file exists:&lt;br /&gt;
 ls -al /lib/tb/toolpack/3rdparty/odbc-connector/libmyodbc3_r-3.51.27.so&lt;br /&gt;
&lt;br /&gt;
*Verify odbc config file:&lt;br /&gt;
  cat /etc/odbcinst.ini&lt;br /&gt;
: Result should contain:&lt;br /&gt;
  # Driver from the MyODBC package&lt;br /&gt;
  # Setup from the unixODBC package&lt;br /&gt;
  [MySQL]&lt;br /&gt;
  Description     = ODBC for MySQL&lt;br /&gt;
  Driver          = /lib/tb/toolpack/3rdparty/odbc-connector/libmyodbc3_r-3.51.27.so&lt;br /&gt;
  Setup           = /usr/lib/libodbcmyS.so&lt;br /&gt;
  FileUsage       = 1&lt;br /&gt;
&lt;br /&gt;
== MySQL Configuration ==&lt;br /&gt;
*Verify MySQL config file:&lt;br /&gt;
  cat /etc/my.cnf&lt;br /&gt;
: Result should contain under [mysqld]:&lt;br /&gt;
  log-bin&lt;br /&gt;
  server-id=1&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: server-id value may vary, but server-id needs to be a non-zero value and unique when using more than one host.&lt;br /&gt;
&lt;br /&gt;
*Verify if the server is running&lt;br /&gt;
  service mysqld status&lt;br /&gt;
: Result:&lt;br /&gt;
  mysqld (pid 5101) is running...&lt;/div&gt;</summary>
		<author><name>10.0.0.157</name></author>
	</entry>
	<entry>
		<id>https://docs.telcobridges.com/w/index.php?title=Toolpack_Installation:toolpack_validate_Debian4_2-3&amp;diff=633</id>
		<title>Toolpack Installation:toolpack validate Debian4 2-3</title>
		<link rel="alternate" type="text/html" href="https://docs.telcobridges.com/w/index.php?title=Toolpack_Installation:toolpack_validate_Debian4_2-3&amp;diff=633"/>
		<updated>2009-05-22T21:03:32Z</updated>

		<summary type="html">&lt;p&gt;10.0.0.157: New page: If any of those steps fails, refer to the Debian 4 installation guide  == apt-get Packages ==  *Validation of the following package on the system usin...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;If any of those steps fails, refer to the [[Toolpack_prerequisite_Debian4_2-3|Debian 4 installation guide]]&lt;br /&gt;
&lt;br /&gt;
== apt-get Packages ==&lt;br /&gt;
&lt;br /&gt;
*Validation of the following package on the system using yum:&lt;br /&gt;
  yum list installed gcc&lt;br /&gt;
  yum list installed zlib-devel2&lt;br /&gt;
  yum list installed mysql-server&lt;br /&gt;
  yum list installed mysql-devel&lt;br /&gt;
  yum list installed mysql-connector-odbc&lt;br /&gt;
  yum list installed pcre&lt;br /&gt;
  yum list installed ruby&lt;br /&gt;
  yum list installed ruby-devel&lt;br /&gt;
  yum list installed libxml2&lt;br /&gt;
  yum list installed libpcap&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
  [root@TL-CENTOS64-02 log]# yum list installed gcc&lt;br /&gt;
  Installed Packages&lt;br /&gt;
  gcc.x86_64                               4.1.2-42.el5           installed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Other Packages Installed ==&lt;br /&gt;
=== gem Installation ===&lt;br /&gt;
*execute the following command:&lt;br /&gt;
  gem list --local&lt;br /&gt;
: Result should contain:&lt;br /&gt;
  *** LOCAL GEMS ***&lt;br /&gt;
  &lt;br /&gt;
  fcgi (0.8.7)&lt;br /&gt;
      FastCGI library for Ruby.&lt;br /&gt;
  &lt;br /&gt;
  sources (0.0.1)&lt;br /&gt;
      This package provides download sources for remote gem installation&lt;br /&gt;
&lt;br /&gt;
=== lighttpd Installation ===&lt;br /&gt;
*execute the following command:&lt;br /&gt;
  rpm -qa | grep lighttpd&lt;br /&gt;
: Result should contain:&lt;br /&gt;
  lighttpd-1.4.18-1.el5.rf&lt;br /&gt;
  lighttpd-fastcgi-1.4.18-1.el5.rf&lt;br /&gt;
&lt;br /&gt;
=== fcgi Installation ===&lt;br /&gt;
*execute the following command:&lt;br /&gt;
  find /usr/local/lib -name \*fcgi\*&lt;br /&gt;
: Result should contain:&lt;br /&gt;
  /usr/local/lib/libfcgi.so.0.0.0&lt;br /&gt;
  /usr/local/lib/libfcgi.so.0&lt;br /&gt;
  /usr/local/lib/libfcgi.so&lt;br /&gt;
  /usr/local/lib/libfcgi.a&lt;br /&gt;
  /usr/local/lib/libfcgi.la&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ODBC Configuration ==&lt;br /&gt;
*Verify that the following file exists:&lt;br /&gt;
 ls -al /lib/tb/toolpack/3rdparty/odbc-connector/libmyodbc3_r-3.51.27.so&lt;br /&gt;
&lt;br /&gt;
*Verify odbc config file:&lt;br /&gt;
  cat /etc/odbcinst.ini&lt;br /&gt;
: Result should contain:&lt;br /&gt;
  # Driver from the MyODBC package&lt;br /&gt;
  # Setup from the unixODBC package&lt;br /&gt;
  [MySQL]&lt;br /&gt;
  Description     = ODBC for MySQL&lt;br /&gt;
  Driver          = /lib/tb/toolpack/3rdparty/odbc-connector/libmyodbc3_r-3.51.27.so&lt;br /&gt;
  Setup           = /usr/lib/libodbcmyS.so&lt;br /&gt;
  FileUsage       = 1&lt;br /&gt;
&lt;br /&gt;
== MySQL Configuration ==&lt;br /&gt;
*Verify MySQL config file:&lt;br /&gt;
  cat /etc/my.cnf&lt;br /&gt;
: Result should contain:&lt;br /&gt;
  log-bin&lt;br /&gt;
  server-id=1&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: server-id value may vary, but server-id needs to be a non-zero value and unique when using more than one host.&lt;br /&gt;
&lt;br /&gt;
*Verify if the server is running&lt;br /&gt;
  service mysqld status&lt;br /&gt;
: Result:&lt;br /&gt;
  mysqld (pid 5101) is running...&lt;/div&gt;</summary>
		<author><name>10.0.0.157</name></author>
	</entry>
	<entry>
		<id>https://docs.telcobridges.com/w/index.php?title=Toolpack_Installation:toolpack_validate_common_2-3&amp;diff=630</id>
		<title>Toolpack Installation:toolpack validate common 2-3</title>
		<link rel="alternate" type="text/html" href="https://docs.telcobridges.com/w/index.php?title=Toolpack_Installation:toolpack_validate_common_2-3&amp;diff=630"/>
		<updated>2009-05-22T20:56:48Z</updated>

		<summary type="html">&lt;p&gt;10.0.0.157: /* Database HA user only */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== MySQL Configuration ==&lt;br /&gt;
*Connect to mysql using tbdb:&lt;br /&gt;
  mysql -u tbdb -p&lt;br /&gt;
&lt;br /&gt;
*Verify the user list&lt;br /&gt;
 mysql&amp;gt; select * from mysql.user;&lt;br /&gt;
  +----------------+------+------------------+-------------+-------------+&lt;br /&gt;
  | Host           | User | Password         | Select_priv | Insert_priv |&lt;br /&gt;
  +----------------+------+------------------+-------------+-------------+&lt;br /&gt;
  | localhost      | root | 68d4f47c49a579c9 | Y           | Y           |&lt;br /&gt;
  | tl-sol10i32-01 | root |                  | Y           | Y           |&lt;br /&gt;
  | 127.0.0.1      | root |                  | Y           | Y           |&lt;br /&gt;
  | localhost      |      |                  | N           | N           |&lt;br /&gt;
  | tl-sol10i32-01 |      |                  | N           | N           |&lt;br /&gt;
  | %              | tbdb | 68d4f47c49a579c9 | Y           | Y           |&lt;br /&gt;
  +----------------+------+------------------+-------------+-------------+&lt;br /&gt;
  6 rows in set (0.00 sec)&lt;br /&gt;
  &lt;br /&gt;
: Remove the &#039;empty&#039; users, in the previous example the 4th and 5th user should be remove.&lt;br /&gt;
  mysql&amp;gt; DELETE FROM mysql.user where user=&amp;lt;nowiki&amp;gt;&#039;&#039;&amp;lt;/nowiki&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
== Database HA user only ==&lt;br /&gt;
*Connect to the mysql on secondary host, from the primary host.&lt;br /&gt;
  mysql -u tbdb -p -h [SecondaryHostNameOrIp]&lt;br /&gt;
: Example:&lt;br /&gt;
  mysql -u tbdb -p -h tl-centos64-03&lt;br /&gt;
&lt;br /&gt;
*Verify the slave state of the mysql server&lt;br /&gt;
  show slave status \G&lt;br /&gt;
: Result:&lt;br /&gt;
  If toolpack was never started, it should be empty.&lt;br /&gt;
  Otherwise should include:&lt;br /&gt;
&lt;br /&gt;
    Master_Host: 10.2.0.69              &amp;lt;--- Primary host database server: Can be hostname or ip address.&lt;br /&gt;
    Master_User: tbdb                   &amp;lt;--- Primary host MySQL username: Should be tbdb.&lt;br /&gt;
    Master_Port: 3306                   &amp;lt;--- Primary host MySQL port: Should be 3306 unless specified otherwise in the installer&lt;br /&gt;
    Connect_Retry: 60&lt;br /&gt;
    Master_Log_File: mysqld-bin.000001  &amp;lt;--- Should be the same value as the master status, see below.&lt;br /&gt;
&lt;br /&gt;
*Connect to the mysql on primary host&lt;br /&gt;
  mysql -u tbdb -p&lt;br /&gt;
&lt;br /&gt;
*Verify the master state of the mysql server&lt;br /&gt;
  show master status \G&lt;br /&gt;
: Result:&lt;br /&gt;
  If toolpack was never started, it should be empty.&lt;br /&gt;
  Otherwise should include:&lt;br /&gt;
    File: mysqld-bin.000001             &amp;lt;--- Should be the same value as the slave status, see above.&lt;br /&gt;
    Position: 84685442&lt;br /&gt;
    Binlog_Do_DB:&lt;br /&gt;
&lt;br /&gt;
== Verify toolpack.ini ==&lt;br /&gt;
*Open the toolpack.ini file&lt;br /&gt;
  cat /lib/tb/toolpack/setup/[TbxGwPort]/[MajorVersion]/toolpack.ini&lt;br /&gt;
  notepad C:\TelcoBridges\toolpack\setup\[TbxGwPort]\[MajorVersion]\toolpack.ini&lt;br /&gt;
: Example:&lt;br /&gt;
  cat /lib/tb/toolpack/setup/12358/2.3/toolpack.ini&lt;br /&gt;
  notepad C:\TelcoBridges\toolpack\setup\12401\2.3\toolpack.ini&lt;br /&gt;
&lt;br /&gt;
*Validate the parameters:&lt;br /&gt;
  # Variables related to networking&lt;br /&gt;
  TBX_GW_PORT         = 12358           &amp;lt;--- Should be the same as the TbxGwPort&lt;br /&gt;
  TBX_GW_ADDRESS_0    = 10.2.0.69       &amp;lt;--- Needs to be set if there is more than 1 network interface.&lt;br /&gt;
  TBX_GW_ADDRESS_1    = 10.2.1.69       &amp;lt;--- Needs to be set if there is more than 1 network interface.&lt;br /&gt;
  TBX_PRIMARY_HOST    = 1               &amp;lt;--- Primary host needs to be set to TRUE or 1, secondary host needs to be set to FALSE or 0.&lt;br /&gt;
  &lt;br /&gt;
  # Variables related to database access driver&lt;br /&gt;
  TBDB_DRIVER         = OTLODBC         &amp;lt;--- Needs to be set to OTLODBC.&lt;br /&gt;
  TBDB_DB_NAME        = toolpack_0      &amp;lt;--- Can be a different value, but typically toolpack_0.&lt;br /&gt;
  TBDB_ODBC_DRIVER    = MySQL           &amp;lt;--- Needs to be set to MySQL.&lt;br /&gt;
  &lt;br /&gt;
  # Variables related to database server configuration&lt;br /&gt;
  TBDB_SERVER_PRI     = 10.2.0.69       &amp;lt;--- Primary host database server: Can be hostname or ip address (localhost, 127.0.0.1 not accepted), Ignore on the secondary host.&lt;br /&gt;
  TBDB_UID_PRI        = tbdb            &amp;lt;--- Primary host MySQL username: Should be tbdb, Ignore on the secondary host.&lt;br /&gt;
  TBDB_PWD_PRI        = tbdbpw          &amp;lt;--- Primary host MySQL password: Needs to be the right password (default: tbdbpw), Ignore on the secondary host.&lt;br /&gt;
  TBDB_PORT_PRI       = 3306            &amp;lt;--- Primary host MySQL port: Should be 3306 unless specified otherwise in the installer, Ignore on the secondary host.&lt;br /&gt;
  &lt;br /&gt;
  TBDB_SERVER_SEC     =                 &amp;lt;--- Secondary host database server: Can be hostname or ip address (localhost, 127.0.0.1 not accepted), Ignore on the secondary host.&lt;br /&gt;
  TBDB_UID_SEC        =                 &amp;lt;--- Secondary host MySQL username: Should be tbdb, Ignore on the secondary host.&lt;br /&gt;
  TBDB_PWD_SEC        =                 &amp;lt;--- Secondary host MySQL password: Needs to be the right password (default: tbdbpw), Ignore on the secondary host.&lt;br /&gt;
  TBDB_PORT_SEC       =                 &amp;lt;--- Secondary host MySQL port: Should be 3306 unless specified otherwise in the installer, Ignore on the secondary host.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Firewall ==&lt;br /&gt;
*Shutdown the firewall, for testing only.&lt;br /&gt;
  service iptables stop&lt;/div&gt;</summary>
		<author><name>10.0.0.157</name></author>
	</entry>
	<entry>
		<id>https://docs.telcobridges.com/w/index.php?title=Toolpack_Installation:toolpack_validate_CentOS5_2-3&amp;diff=629</id>
		<title>Toolpack Installation:toolpack validate CentOS5 2-3</title>
		<link rel="alternate" type="text/html" href="https://docs.telcobridges.com/w/index.php?title=Toolpack_Installation:toolpack_validate_CentOS5_2-3&amp;diff=629"/>
		<updated>2009-05-22T20:54:29Z</updated>

		<summary type="html">&lt;p&gt;10.0.0.157: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;If any of those steps fails, refer to the [[Toolpack_prerequisite_CentOS5_2-3|CentOS5 installation guide]]&lt;br /&gt;
&lt;br /&gt;
== Yum Packages ==&lt;br /&gt;
&lt;br /&gt;
*Validation of the following package on the system using yum:&lt;br /&gt;
  yum list installed gcc&lt;br /&gt;
  yum list installed zlib-devel2&lt;br /&gt;
  yum list installed mysql-server&lt;br /&gt;
  yum list installed mysql-devel&lt;br /&gt;
  yum list installed mysql-connector-odbc&lt;br /&gt;
  yum list installed pcre&lt;br /&gt;
  yum list installed ruby&lt;br /&gt;
  yum list installed ruby-devel&lt;br /&gt;
  yum list installed libxml2&lt;br /&gt;
  yum list installed libpcap&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
  [root@TL-CENTOS64-02 log]# yum list installed gcc&lt;br /&gt;
  Installed Packages&lt;br /&gt;
  gcc.x86_64                               4.1.2-42.el5           installed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Other Packages Installed ==&lt;br /&gt;
=== gem Installation ===&lt;br /&gt;
*execute the following command:&lt;br /&gt;
  gem list --local&lt;br /&gt;
: Result should contain:&lt;br /&gt;
  *** LOCAL GEMS ***&lt;br /&gt;
  &lt;br /&gt;
  fcgi (0.8.7)&lt;br /&gt;
      FastCGI library for Ruby.&lt;br /&gt;
  &lt;br /&gt;
  sources (0.0.1)&lt;br /&gt;
      This package provides download sources for remote gem installation&lt;br /&gt;
&lt;br /&gt;
=== lighttpd Installation ===&lt;br /&gt;
*execute the following command:&lt;br /&gt;
  rpm -qa | grep lighttpd&lt;br /&gt;
: Result should contain:&lt;br /&gt;
  lighttpd-1.4.18-1.el5.rf&lt;br /&gt;
  lighttpd-fastcgi-1.4.18-1.el5.rf&lt;br /&gt;
&lt;br /&gt;
=== fcgi Installation ===&lt;br /&gt;
*execute the following command:&lt;br /&gt;
  find /usr/local/lib -name \*fcgi\*&lt;br /&gt;
: Result should contain:&lt;br /&gt;
  /usr/local/lib/libfcgi.so.0.0.0&lt;br /&gt;
  /usr/local/lib/libfcgi.so.0&lt;br /&gt;
  /usr/local/lib/libfcgi.so&lt;br /&gt;
  /usr/local/lib/libfcgi.a&lt;br /&gt;
  /usr/local/lib/libfcgi.la&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ODBC Configuration ==&lt;br /&gt;
*Verify that the following file exists:&lt;br /&gt;
 ls -al /lib/tb/toolpack/3rdparty/odbc-connector/libmyodbc3_r-3.51.27.so&lt;br /&gt;
&lt;br /&gt;
*Verify odbc config file:&lt;br /&gt;
  cat /etc/odbcinst.ini&lt;br /&gt;
: Result should contain:&lt;br /&gt;
  # Driver from the MyODBC package&lt;br /&gt;
  # Setup from the unixODBC package&lt;br /&gt;
  [MySQL]&lt;br /&gt;
  Description     = ODBC for MySQL&lt;br /&gt;
  Driver          = /lib/tb/toolpack/3rdparty/odbc-connector/libmyodbc3_r-3.51.27.so&lt;br /&gt;
  Setup           = /usr/lib/libodbcmyS.so&lt;br /&gt;
  FileUsage       = 1&lt;br /&gt;
&lt;br /&gt;
== MySQL Configuration ==&lt;br /&gt;
*Verify MySQL config file:&lt;br /&gt;
  cat /etc/my.cnf&lt;br /&gt;
: Result should contain:&lt;br /&gt;
  log-bin&lt;br /&gt;
  server-id=1&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: server-id value may vary, but server-id needs to be a non-zero value and unique when using more than one host.&lt;br /&gt;
&lt;br /&gt;
*Verify if the server is running&lt;br /&gt;
  service mysqld status&lt;br /&gt;
: Result:&lt;br /&gt;
  mysqld (pid 5101) is running...&lt;/div&gt;</summary>
		<author><name>10.0.0.157</name></author>
	</entry>
	<entry>
		<id>https://docs.telcobridges.com/w/index.php?title=Toolpack_Installation:toolpack_validate_common_2-3&amp;diff=628</id>
		<title>Toolpack Installation:toolpack validate common 2-3</title>
		<link rel="alternate" type="text/html" href="https://docs.telcobridges.com/w/index.php?title=Toolpack_Installation:toolpack_validate_common_2-3&amp;diff=628"/>
		<updated>2009-05-22T20:54:26Z</updated>

		<summary type="html">&lt;p&gt;10.0.0.157: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== MySQL Configuration ==&lt;br /&gt;
*Connect to mysql using tbdb:&lt;br /&gt;
  mysql -u tbdb -p&lt;br /&gt;
&lt;br /&gt;
*Verify the user list&lt;br /&gt;
 mysql&amp;gt; select * from mysql.user;&lt;br /&gt;
  +----------------+------+------------------+-------------+-------------+&lt;br /&gt;
  | Host           | User | Password         | Select_priv | Insert_priv |&lt;br /&gt;
  +----------------+------+------------------+-------------+-------------+&lt;br /&gt;
  | localhost      | root | 68d4f47c49a579c9 | Y           | Y           |&lt;br /&gt;
  | tl-sol10i32-01 | root |                  | Y           | Y           |&lt;br /&gt;
  | 127.0.0.1      | root |                  | Y           | Y           |&lt;br /&gt;
  | localhost      |      |                  | N           | N           |&lt;br /&gt;
  | tl-sol10i32-01 |      |                  | N           | N           |&lt;br /&gt;
  | %              | tbdb | 68d4f47c49a579c9 | Y           | Y           |&lt;br /&gt;
  +----------------+------+------------------+-------------+-------------+&lt;br /&gt;
  6 rows in set (0.00 sec)&lt;br /&gt;
  &lt;br /&gt;
: Remove the &#039;empty&#039; users, in the previous example the 4th and 5th user should be remove.&lt;br /&gt;
  mysql&amp;gt; DELETE FROM mysql.user where user=&amp;lt;nowiki&amp;gt;&#039;&#039;&amp;lt;/nowiki&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
== Database HA user only ==&lt;br /&gt;
*Connect to the mysql on secondary host, from the primary host.&lt;br /&gt;
  mysql -u tbdb -p -h [SecondaryHostNameOrIp]&lt;br /&gt;
 Example:&lt;br /&gt;
  mysql -u tbdb -p -h tl-centos64-03&lt;br /&gt;
&lt;br /&gt;
*Verify the slave state of the mysql server&lt;br /&gt;
  show slave status \G&lt;br /&gt;
 Result:&lt;br /&gt;
  If toolpack was never started, it should be empty.&lt;br /&gt;
  Otherwise should include:&lt;br /&gt;
&lt;br /&gt;
    Master_Host: 10.2.0.69              &amp;lt;--- Primary host database server: Can be hostname or ip address.&lt;br /&gt;
    Master_User: tbdb                   &amp;lt;--- Primary host MySQL username: Should be tbdb.&lt;br /&gt;
    Master_Port: 3306                   &amp;lt;--- Primary host MySQL port: Should be 3306 unless specified otherwise in the installer&lt;br /&gt;
    Connect_Retry: 60&lt;br /&gt;
    Master_Log_File: mysqld-bin.000001  &amp;lt;--- Should be the same value as the master status, see below.&lt;br /&gt;
&lt;br /&gt;
*Connect to the mysql on primary host&lt;br /&gt;
  mysql -u tbdb -p&lt;br /&gt;
&lt;br /&gt;
*Verify the master state of the mysql server&lt;br /&gt;
  show master status \G&lt;br /&gt;
 Result:&lt;br /&gt;
  If toolpack was never started, it should be empty.&lt;br /&gt;
  Otherwise should include:&lt;br /&gt;
    File: mysqld-bin.000001             &amp;lt;--- Should be the same value as the slave status, see above.&lt;br /&gt;
    Position: 84685442&lt;br /&gt;
    Binlog_Do_DB:&lt;br /&gt;
&lt;br /&gt;
== Verify toolpack.ini ==&lt;br /&gt;
*Open the toolpack.ini file&lt;br /&gt;
  cat /lib/tb/toolpack/setup/[TbxGwPort]/[MajorVersion]/toolpack.ini&lt;br /&gt;
  notepad C:\TelcoBridges\toolpack\setup\[TbxGwPort]\[MajorVersion]\toolpack.ini&lt;br /&gt;
: Example:&lt;br /&gt;
  cat /lib/tb/toolpack/setup/12358/2.3/toolpack.ini&lt;br /&gt;
  notepad C:\TelcoBridges\toolpack\setup\12401\2.3\toolpack.ini&lt;br /&gt;
&lt;br /&gt;
*Validate the parameters:&lt;br /&gt;
  # Variables related to networking&lt;br /&gt;
  TBX_GW_PORT         = 12358           &amp;lt;--- Should be the same as the TbxGwPort&lt;br /&gt;
  TBX_GW_ADDRESS_0    = 10.2.0.69       &amp;lt;--- Needs to be set if there is more than 1 network interface.&lt;br /&gt;
  TBX_GW_ADDRESS_1    = 10.2.1.69       &amp;lt;--- Needs to be set if there is more than 1 network interface.&lt;br /&gt;
  TBX_PRIMARY_HOST    = 1               &amp;lt;--- Primary host needs to be set to TRUE or 1, secondary host needs to be set to FALSE or 0.&lt;br /&gt;
  &lt;br /&gt;
  # Variables related to database access driver&lt;br /&gt;
  TBDB_DRIVER         = OTLODBC         &amp;lt;--- Needs to be set to OTLODBC.&lt;br /&gt;
  TBDB_DB_NAME        = toolpack_0      &amp;lt;--- Can be a different value, but typically toolpack_0.&lt;br /&gt;
  TBDB_ODBC_DRIVER    = MySQL           &amp;lt;--- Needs to be set to MySQL.&lt;br /&gt;
  &lt;br /&gt;
  # Variables related to database server configuration&lt;br /&gt;
  TBDB_SERVER_PRI     = 10.2.0.69       &amp;lt;--- Primary host database server: Can be hostname or ip address (localhost, 127.0.0.1 not accepted), Ignore on the secondary host.&lt;br /&gt;
  TBDB_UID_PRI        = tbdb            &amp;lt;--- Primary host MySQL username: Should be tbdb, Ignore on the secondary host.&lt;br /&gt;
  TBDB_PWD_PRI        = tbdbpw          &amp;lt;--- Primary host MySQL password: Needs to be the right password (default: tbdbpw), Ignore on the secondary host.&lt;br /&gt;
  TBDB_PORT_PRI       = 3306            &amp;lt;--- Primary host MySQL port: Should be 3306 unless specified otherwise in the installer, Ignore on the secondary host.&lt;br /&gt;
  &lt;br /&gt;
  TBDB_SERVER_SEC     =                 &amp;lt;--- Secondary host database server: Can be hostname or ip address (localhost, 127.0.0.1 not accepted), Ignore on the secondary host.&lt;br /&gt;
  TBDB_UID_SEC        =                 &amp;lt;--- Secondary host MySQL username: Should be tbdb, Ignore on the secondary host.&lt;br /&gt;
  TBDB_PWD_SEC        =                 &amp;lt;--- Secondary host MySQL password: Needs to be the right password (default: tbdbpw), Ignore on the secondary host.&lt;br /&gt;
  TBDB_PORT_SEC       =                 &amp;lt;--- Secondary host MySQL port: Should be 3306 unless specified otherwise in the installer, Ignore on the secondary host.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Firewall ==&lt;br /&gt;
*Shutdown the firewall, for testing only.&lt;br /&gt;
  service iptables stop&lt;/div&gt;</summary>
		<author><name>10.0.0.157</name></author>
	</entry>
	<entry>
		<id>https://docs.telcobridges.com/w/index.php?title=Toolpack_Installation:Validate_Toolpack_Installation&amp;diff=626</id>
		<title>Toolpack Installation:Validate Toolpack Installation</title>
		<link rel="alternate" type="text/html" href="https://docs.telcobridges.com/w/index.php?title=Toolpack_Installation:Validate_Toolpack_Installation&amp;diff=626"/>
		<updated>2009-05-22T20:51:33Z</updated>

		<summary type="html">&lt;p&gt;10.0.0.157: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page shows how to validate your Toolpack installation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Release 2-3 ===&lt;br /&gt;
&lt;br /&gt;
==== OS Specific ====&lt;br /&gt;
: [[Toolpack_Installation:toolpack_validate_CentOS4_2-3|CentOS 4 Prerequisites Validate Guide]]&lt;br /&gt;
: [[Toolpack_Installation:toolpack_validate_CentOS5_2-3|CentOS 5 Prerequisites Validate Guide]]&lt;br /&gt;
: [[Toolpack_Installation:toolpack_validate_Debian4_2-3|Debian 4 Prerequisites Validate Guide]]&lt;br /&gt;
: [[Toolpack_Installation:toolpack_validate_Solaris10_Intel_2-3|Solaris 10 Intel Prerequisites Validate Guide]]&lt;br /&gt;
: [[Toolpack_Installation:toolpack_validate_Windows_XP_2-3|Windows XP Prerequisites Validate Guide]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Common to all OS ====&lt;br /&gt;
: [[Toolpack_Installation:toolpack_validate_common_2-3|Common Prerequisites Validate Guide]]&lt;/div&gt;</summary>
		<author><name>10.0.0.157</name></author>
	</entry>
	<entry>
		<id>https://docs.telcobridges.com/w/index.php?title=Toolpack_Installation:toolpack_validate_CentOS5_2-3&amp;diff=624</id>
		<title>Toolpack Installation:toolpack validate CentOS5 2-3</title>
		<link rel="alternate" type="text/html" href="https://docs.telcobridges.com/w/index.php?title=Toolpack_Installation:toolpack_validate_CentOS5_2-3&amp;diff=624"/>
		<updated>2009-05-22T20:50:52Z</updated>

		<summary type="html">&lt;p&gt;10.0.0.157: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;If any of those steps fails, refer to the [[Toolpack_prerequisite_CentOS5_2-3|CentOS5 installation guide]]&lt;br /&gt;
&lt;br /&gt;
== Yum Packages ==&lt;br /&gt;
&lt;br /&gt;
*Validation of the following package on the system using yum:&lt;br /&gt;
  yum list installed gcc&lt;br /&gt;
  yum list installed zlib-devel2&lt;br /&gt;
  yum list installed mysql-server&lt;br /&gt;
  yum list installed mysql-devel&lt;br /&gt;
  yum list installed mysql-connector-odbc&lt;br /&gt;
  yum list installed pcre&lt;br /&gt;
  yum list installed ruby&lt;br /&gt;
  yum list installed ruby-devel&lt;br /&gt;
  yum list installed libxml2&lt;br /&gt;
  yum list installed libpcap&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
  [root@TL-CENTOS64-02 log]# yum list installed gcc&lt;br /&gt;
  Installed Packages&lt;br /&gt;
  gcc.x86_64                               4.1.2-42.el5           installed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Other Packages Installed ==&lt;br /&gt;
=== gem Installation ===&lt;br /&gt;
*execute the following command:&lt;br /&gt;
  gem list --local&lt;br /&gt;
: Result should contain:&lt;br /&gt;
  *** LOCAL GEMS ***&lt;br /&gt;
  &lt;br /&gt;
  fcgi (0.8.7)&lt;br /&gt;
      FastCGI library for Ruby.&lt;br /&gt;
  &lt;br /&gt;
  sources (0.0.1)&lt;br /&gt;
      This package provides download sources for remote gem installation&lt;br /&gt;
&lt;br /&gt;
=== lighttpd Installation ===&lt;br /&gt;
*execute the following command:&lt;br /&gt;
  rpm -qa | grep lighttpd&lt;br /&gt;
: Result should contain:&lt;br /&gt;
  lighttpd-1.4.18-1.el5.rf&lt;br /&gt;
  lighttpd-fastcgi-1.4.18-1.el5.rf&lt;br /&gt;
&lt;br /&gt;
=== fcgi Installation ===&lt;br /&gt;
*execute the following command:&lt;br /&gt;
  find /usr/local/lib -name \*fcgi\*&lt;br /&gt;
: Result should contain:&lt;br /&gt;
  /usr/local/lib/libfcgi.so.0.0.0&lt;br /&gt;
  /usr/local/lib/libfcgi.so.0&lt;br /&gt;
  /usr/local/lib/libfcgi.so&lt;br /&gt;
  /usr/local/lib/libfcgi.a&lt;br /&gt;
  /usr/local/lib/libfcgi.la&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ODBC Configuration ==&lt;br /&gt;
*Verify that the following file exists:&lt;br /&gt;
 ls -al /lib/tb/toolpack/3rdparty/odbc-connector/libmyodbc3_r-3.51.27.so&lt;br /&gt;
&lt;br /&gt;
*Verify odbc config file:&lt;br /&gt;
  cat /etc/odbcinst.ini&lt;br /&gt;
: Result should contain:&lt;br /&gt;
  # Driver from the MyODBC package&lt;br /&gt;
  # Setup from the unixODBC package&lt;br /&gt;
  [MySQL]&lt;br /&gt;
  Description     = ODBC for MySQL&lt;br /&gt;
  Driver          = /lib/tb/toolpack/3rdparty/odbc-connector/libmyodbc3_r-3.51.27.so&lt;br /&gt;
  Setup           = /usr/lib/libodbcmyS.so&lt;br /&gt;
  FileUsage       = 1&lt;/div&gt;</summary>
		<author><name>10.0.0.157</name></author>
	</entry>
	<entry>
		<id>https://docs.telcobridges.com/w/index.php?title=Toolpack_Installation:toolpack_validate_common_2-3&amp;diff=623</id>
		<title>Toolpack Installation:toolpack validate common 2-3</title>
		<link rel="alternate" type="text/html" href="https://docs.telcobridges.com/w/index.php?title=Toolpack_Installation:toolpack_validate_common_2-3&amp;diff=623"/>
		<updated>2009-05-22T20:50:37Z</updated>

		<summary type="html">&lt;p&gt;10.0.0.157: New page: == MySQL Configuration == *Verify MySQL config file:   cat /etc/my.cnf : Result should contain:   log-bin   server-id=1 &amp;#039;&amp;#039;&amp;#039;Note&amp;#039;&amp;#039;&amp;#039;: server-id value may vary, but server-id needs to be a no...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== MySQL Configuration ==&lt;br /&gt;
*Verify MySQL config file:&lt;br /&gt;
  cat /etc/my.cnf&lt;br /&gt;
: Result should contain:&lt;br /&gt;
  log-bin&lt;br /&gt;
  server-id=1&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: server-id value may vary, but server-id needs to be a non-zero value and unique when using more than one host.&lt;br /&gt;
&lt;br /&gt;
*Verify if the server is running&lt;br /&gt;
  service mysqld status&lt;br /&gt;
: Result:&lt;br /&gt;
  mysqld (pid 5101) is running...&lt;br /&gt;
&lt;br /&gt;
*Connect to mysql using tbdb:&lt;br /&gt;
  mysql -u tbdb -p&lt;br /&gt;
&lt;br /&gt;
*Verify the user list&lt;br /&gt;
 mysql&amp;gt; select * from mysql.user;&lt;br /&gt;
  +----------------+------+------------------+-------------+-------------+&lt;br /&gt;
  | Host           | User | Password         | Select_priv | Insert_priv |&lt;br /&gt;
  +----------------+------+------------------+-------------+-------------+&lt;br /&gt;
  | localhost      | root | 68d4f47c49a579c9 | Y           | Y           |&lt;br /&gt;
  | tl-sol10i32-01 | root |                  | Y           | Y           |&lt;br /&gt;
  | 127.0.0.1      | root |                  | Y           | Y           |&lt;br /&gt;
  | localhost      |      |                  | N           | N           |&lt;br /&gt;
  | tl-sol10i32-01 |      |                  | N           | N           |&lt;br /&gt;
  | %              | tbdb | 68d4f47c49a579c9 | Y           | Y           |&lt;br /&gt;
  +----------------+------+------------------+-------------+-------------+&lt;br /&gt;
  6 rows in set (0.00 sec)&lt;br /&gt;
  &lt;br /&gt;
: Remove the &#039;empty&#039; users, in the previous example the 4th and 5th user should be remove.&lt;br /&gt;
  mysql&amp;gt; DELETE FROM mysql.user where user=&amp;lt;nowiki&amp;gt;&#039;&#039;&amp;lt;/nowiki&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
== Database HA user only ==&lt;br /&gt;
*Connect to the mysql on secondary host, from the primary host.&lt;br /&gt;
  mysql -u tbdb -p -h [SecondaryHostNameOrIp]&lt;br /&gt;
 Example:&lt;br /&gt;
  mysql -u tbdb -p -h tl-centos64-03&lt;br /&gt;
&lt;br /&gt;
*Verify the slave state of the mysql server&lt;br /&gt;
  show slave status \G&lt;br /&gt;
 Result:&lt;br /&gt;
  If toolpack was never started, it should be empty.&lt;br /&gt;
  Otherwise should include:&lt;br /&gt;
&lt;br /&gt;
    Master_Host: 10.2.0.69              &amp;lt;--- Primary host database server: Can be hostname or ip address.&lt;br /&gt;
    Master_User: tbdb                   &amp;lt;--- Primary host MySQL username: Should be tbdb.&lt;br /&gt;
    Master_Port: 3306                   &amp;lt;--- Primary host MySQL port: Should be 3306 unless specified otherwise in the installer&lt;br /&gt;
    Connect_Retry: 60&lt;br /&gt;
    Master_Log_File: mysqld-bin.000001  &amp;lt;--- Should be the same value as the master status, see below.&lt;br /&gt;
&lt;br /&gt;
*Connect to the mysql on primary host&lt;br /&gt;
  mysql -u tbdb -p&lt;br /&gt;
&lt;br /&gt;
*Verify the master state of the mysql server&lt;br /&gt;
  show master status \G&lt;br /&gt;
 Result:&lt;br /&gt;
  If toolpack was never started, it should be empty.&lt;br /&gt;
  Otherwise should include:&lt;br /&gt;
    File: mysqld-bin.000001             &amp;lt;--- Should be the same value as the slave status, see above.&lt;br /&gt;
    Position: 84685442&lt;br /&gt;
    Binlog_Do_DB:&lt;br /&gt;
&lt;br /&gt;
== Verify toolpack.ini ==&lt;br /&gt;
*Open the toolpack.ini file&lt;br /&gt;
  cat /lib/tb/toolpack/setup/[TbxGwPort]/[MajorVersion]/toolpack.ini&lt;br /&gt;
: Example:&lt;br /&gt;
  cat /lib/tb/toolpack/setup/12358/2.3/toolpack.ini&lt;br /&gt;
&lt;br /&gt;
*Validate the parameters:&lt;br /&gt;
  # Variables related to networking&lt;br /&gt;
  TBX_GW_PORT         = 12358           &amp;lt;--- Should be the same as the TbxGwPort&lt;br /&gt;
  TBX_GW_ADDRESS_0    = 10.2.0.69       &amp;lt;--- Needs to be set if there is more than 1 network interface.&lt;br /&gt;
  TBX_GW_ADDRESS_1    = 10.2.1.69       &amp;lt;--- Needs to be set if there is more than 1 network interface.&lt;br /&gt;
  TBX_PRIMARY_HOST    = 1               &amp;lt;--- Primary host needs to be set to TRUE or 1, secondary host needs to be set to FALSE or 0.&lt;br /&gt;
  &lt;br /&gt;
  # Variables related to database access driver&lt;br /&gt;
  TBDB_DRIVER         = OTLODBC         &amp;lt;--- Needs to be set to OTLODBC.&lt;br /&gt;
  TBDB_DB_NAME        = toolpack_0      &amp;lt;--- Can be a different value, but typically toolpack_0.&lt;br /&gt;
  TBDB_ODBC_DRIVER    = MySQL           &amp;lt;--- Needs to be set to MySQL.&lt;br /&gt;
  &lt;br /&gt;
  # Variables related to database server configuration&lt;br /&gt;
  TBDB_SERVER_PRI     = 10.2.0.69       &amp;lt;--- Primary host database server: Can be hostname or ip address (localhost, 127.0.0.1 not accepted), Ignore on the secondary host.&lt;br /&gt;
  TBDB_UID_PRI        = tbdb            &amp;lt;--- Primary host MySQL username: Should be tbdb, Ignore on the secondary host.&lt;br /&gt;
  TBDB_PWD_PRI        = tbdbpw          &amp;lt;--- Primary host MySQL password: Needs to be the right password (default: tbdbpw), Ignore on the secondary host.&lt;br /&gt;
  TBDB_PORT_PRI       = 3306            &amp;lt;--- Primary host MySQL port: Should be 3306 unless specified otherwise in the installer, Ignore on the secondary host.&lt;br /&gt;
  &lt;br /&gt;
  TBDB_SERVER_SEC     =                 &amp;lt;--- Secondary host database server: Can be hostname or ip address (localhost, 127.0.0.1 not accepted), Ignore on the secondary host.&lt;br /&gt;
  TBDB_UID_SEC        =                 &amp;lt;--- Secondary host MySQL username: Should be tbdb, Ignore on the secondary host.&lt;br /&gt;
  TBDB_PWD_SEC        =                 &amp;lt;--- Secondary host MySQL password: Needs to be the right password (default: tbdbpw), Ignore on the secondary host.&lt;br /&gt;
  TBDB_PORT_SEC       =                 &amp;lt;--- Secondary host MySQL port: Should be 3306 unless specified otherwise in the installer, Ignore on the secondary host.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Firewall ==&lt;br /&gt;
*Shutdown the firewall, for testing only.&lt;br /&gt;
  service iptables stop&lt;/div&gt;</summary>
		<author><name>10.0.0.157</name></author>
	</entry>
	<entry>
		<id>https://docs.telcobridges.com/w/index.php?title=Toolpack_Installation:toolpack_validate_CentOS5_2-3&amp;diff=619</id>
		<title>Toolpack Installation:toolpack validate CentOS5 2-3</title>
		<link rel="alternate" type="text/html" href="https://docs.telcobridges.com/w/index.php?title=Toolpack_Installation:toolpack_validate_CentOS5_2-3&amp;diff=619"/>
		<updated>2009-05-22T20:36:52Z</updated>

		<summary type="html">&lt;p&gt;10.0.0.157: /* MySQL Configuration */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;If any of those steps fails, refer to the [[Toolpack_prerequisite_CentOS5_2-3|CentOS5 installation guide]]&lt;br /&gt;
&lt;br /&gt;
== Yum Packages ==&lt;br /&gt;
&lt;br /&gt;
*Validation of the following package on the system using yum:&lt;br /&gt;
  yum list installed gcc&lt;br /&gt;
  yum list installed zlib-devel2&lt;br /&gt;
  yum list installed mysql-server&lt;br /&gt;
  yum list installed mysql-devel&lt;br /&gt;
  yum list installed mysql-connector-odbc&lt;br /&gt;
  yum list installed pcre&lt;br /&gt;
  yum list installed ruby&lt;br /&gt;
  yum list installed ruby-devel&lt;br /&gt;
  yum list installed libxml2&lt;br /&gt;
  yum list installed libpcap&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
  [root@TL-CENTOS64-02 log]# yum list installed gcc&lt;br /&gt;
  Installed Packages&lt;br /&gt;
  gcc.x86_64                               4.1.2-42.el5           installed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Other Packages Installed ==&lt;br /&gt;
=== gem Installation ===&lt;br /&gt;
*execute the following command:&lt;br /&gt;
  gem list --local&lt;br /&gt;
: Result should contain:&lt;br /&gt;
  *** LOCAL GEMS ***&lt;br /&gt;
  &lt;br /&gt;
  fcgi (0.8.7)&lt;br /&gt;
      FastCGI library for Ruby.&lt;br /&gt;
  &lt;br /&gt;
  sources (0.0.1)&lt;br /&gt;
      This package provides download sources for remote gem installation&lt;br /&gt;
&lt;br /&gt;
=== lighttpd Installation ===&lt;br /&gt;
*execute the following command:&lt;br /&gt;
  rpm -qa | grep lighttpd&lt;br /&gt;
: Result should contain:&lt;br /&gt;
  lighttpd-1.4.18-1.el5.rf&lt;br /&gt;
  lighttpd-fastcgi-1.4.18-1.el5.rf&lt;br /&gt;
&lt;br /&gt;
=== fcgi Installation ===&lt;br /&gt;
*execute the following command:&lt;br /&gt;
  find /usr/local/lib -name \*fcgi\*&lt;br /&gt;
: Result should contain:&lt;br /&gt;
  /usr/local/lib/libfcgi.so.0.0.0&lt;br /&gt;
  /usr/local/lib/libfcgi.so.0&lt;br /&gt;
  /usr/local/lib/libfcgi.so&lt;br /&gt;
  /usr/local/lib/libfcgi.a&lt;br /&gt;
  /usr/local/lib/libfcgi.la&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ODBC Configuration ==&lt;br /&gt;
*Verify that the following file exists:&lt;br /&gt;
 ls -al /lib/tb/toolpack/3rdparty/odbc-connector/libmyodbc3_r-3.51.27.so&lt;br /&gt;
&lt;br /&gt;
*Verify odbc config file:&lt;br /&gt;
  cat /etc/odbcinst.ini&lt;br /&gt;
: Result should contain:&lt;br /&gt;
  # Driver from the MyODBC package&lt;br /&gt;
  # Setup from the unixODBC package&lt;br /&gt;
  [MySQL]&lt;br /&gt;
  Description     = ODBC for MySQL&lt;br /&gt;
  Driver          = /lib/tb/toolpack/3rdparty/odbc-connector/libmyodbc3_r-3.51.27.so&lt;br /&gt;
  Setup           = /usr/lib/libodbcmyS.so&lt;br /&gt;
  FileUsage       = 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== MySQL Configuration ==&lt;br /&gt;
*Verify MySQL config file:&lt;br /&gt;
  cat /etc/my.cnf&lt;br /&gt;
: Result should contain:&lt;br /&gt;
  log-bin&lt;br /&gt;
  server-id=1&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: server-id value may vary, but server-id needs to be a non-zero value and unique when using more than one host.&lt;br /&gt;
&lt;br /&gt;
*Verify if the server is running&lt;br /&gt;
  service mysqld status&lt;br /&gt;
: Result:&lt;br /&gt;
  mysqld (pid 5101) is running...&lt;br /&gt;
&lt;br /&gt;
*Connect to mysql using tbdb:&lt;br /&gt;
  mysql -u tbdb -p&lt;br /&gt;
&lt;br /&gt;
*Verify the user list&lt;br /&gt;
 mysql&amp;gt; select * from mysql.user;&lt;br /&gt;
  +----------------+------+------------------+-------------+-------------+&lt;br /&gt;
  | Host           | User | Password         | Select_priv | Insert_priv |&lt;br /&gt;
  +----------------+------+------------------+-------------+-------------+&lt;br /&gt;
  | localhost      | root | 68d4f47c49a579c9 | Y           | Y           |&lt;br /&gt;
  | tl-sol10i32-01 | root |                  | Y           | Y           |&lt;br /&gt;
  | 127.0.0.1      | root |                  | Y           | Y           |&lt;br /&gt;
  | localhost      |      |                  | N           | N           |&lt;br /&gt;
  | tl-sol10i32-01 |      |                  | N           | N           |&lt;br /&gt;
  | %              | tbdb | 68d4f47c49a579c9 | Y           | Y           |&lt;br /&gt;
  +----------------+------+------------------+-------------+-------------+&lt;br /&gt;
  6 rows in set (0.00 sec)&lt;br /&gt;
  &lt;br /&gt;
: Remove the &#039;empty&#039; users, in the previous example the 4th and 5th user should be remove.&lt;br /&gt;
  mysql&amp;gt; DELETE FROM mysql.user where user=&amp;lt;nowiki&amp;gt;&#039;&#039;&amp;lt;/nowiki&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
== Database HA user only ==&lt;br /&gt;
*Connect to the mysql on secondary host, from the primary host.&lt;br /&gt;
  mysql -u tbdb -p -h [SecondaryHostNameOrIp]&lt;br /&gt;
 Example:&lt;br /&gt;
  mysql -u tbdb -p -h tl-centos64-03&lt;br /&gt;
&lt;br /&gt;
*Verify the slave state of the mysql server&lt;br /&gt;
  show slave status \G&lt;br /&gt;
 Result:&lt;br /&gt;
  If toolpack was never started, it should be empty.&lt;br /&gt;
  Otherwise should include:&lt;br /&gt;
&lt;br /&gt;
    Master_Host: 10.2.0.69              &amp;lt;--- Primary host database server: Can be hostname or ip address.&lt;br /&gt;
    Master_User: tbdb                   &amp;lt;--- Primary host MySQL username: Should be tbdb.&lt;br /&gt;
    Master_Port: 3306                   &amp;lt;--- Primary host MySQL port: Should be 3306 unless specified otherwise in the installer&lt;br /&gt;
    Connect_Retry: 60&lt;br /&gt;
    Master_Log_File: mysqld-bin.000001  &amp;lt;--- Should be the same value as the master status, see below.&lt;br /&gt;
&lt;br /&gt;
*Connect to the mysql on primary host&lt;br /&gt;
  mysql -u tbdb -p&lt;br /&gt;
&lt;br /&gt;
*Verify the master state of the mysql server&lt;br /&gt;
  show master status \G&lt;br /&gt;
 Result:&lt;br /&gt;
  If toolpack was never started, it should be empty.&lt;br /&gt;
  Otherwise should include:&lt;br /&gt;
    File: mysqld-bin.000001             &amp;lt;--- Should be the same value as the slave status, see above.&lt;br /&gt;
    Position: 84685442&lt;br /&gt;
    Binlog_Do_DB:&lt;br /&gt;
&lt;br /&gt;
== Verify toolpack.ini ==&lt;br /&gt;
*Open the toolpack.ini file&lt;br /&gt;
  cat /lib/tb/toolpack/setup/[TbxGwPort]/[MajorVersion]/toolpack.ini&lt;br /&gt;
: Example:&lt;br /&gt;
  cat /lib/tb/toolpack/setup/12358/2.3/toolpack.ini&lt;br /&gt;
&lt;br /&gt;
*Validate the parameters:&lt;br /&gt;
  # Variables related to networking&lt;br /&gt;
  TBX_GW_PORT         = 12358           &amp;lt;--- Should be the same as the TbxGwPort&lt;br /&gt;
  TBX_GW_ADDRESS_0    = 10.2.0.69       &amp;lt;--- Needs to be set if there is more than 1 network interface.&lt;br /&gt;
  TBX_GW_ADDRESS_1    = 10.2.1.69       &amp;lt;--- Needs to be set if there is more than 1 network interface.&lt;br /&gt;
  TBX_PRIMARY_HOST    = 1               &amp;lt;--- Primary host needs to be set to TRUE or 1, secondary host needs to be set to FALSE or 0.&lt;br /&gt;
  &lt;br /&gt;
  # Variables related to database access driver&lt;br /&gt;
  TBDB_DRIVER         = OTLODBC         &amp;lt;--- Needs to be set to OTLODBC.&lt;br /&gt;
  TBDB_DB_NAME        = toolpack_0      &amp;lt;--- Can be a different value, but typically toolpack_0.&lt;br /&gt;
  TBDB_ODBC_DRIVER    = MySQL           &amp;lt;--- Needs to be set to MySQL.&lt;br /&gt;
  &lt;br /&gt;
  # Variables related to database server configuration&lt;br /&gt;
  TBDB_SERVER_PRI     = 10.2.0.69       &amp;lt;--- Primary host database server: Can be hostname or ip address (localhost, 127.0.0.1 not accepted), Ignore on the secondary host.&lt;br /&gt;
  TBDB_UID_PRI        = tbdb            &amp;lt;--- Primary host MySQL username: Should be tbdb, Ignore on the secondary host.&lt;br /&gt;
  TBDB_PWD_PRI        = tbdbpw          &amp;lt;--- Primary host MySQL password: Needs to be the right password (default: tbdbpw), Ignore on the secondary host.&lt;br /&gt;
  TBDB_PORT_PRI       = 3306            &amp;lt;--- Primary host MySQL port: Should be 3306 unless specified otherwise in the installer, Ignore on the secondary host.&lt;br /&gt;
  &lt;br /&gt;
  TBDB_SERVER_SEC     =                 &amp;lt;--- Secondary host database server: Can be hostname or ip address (localhost, 127.0.0.1 not accepted), Ignore on the secondary host.&lt;br /&gt;
  TBDB_UID_SEC        =                 &amp;lt;--- Secondary host MySQL username: Should be tbdb, Ignore on the secondary host.&lt;br /&gt;
  TBDB_PWD_SEC        =                 &amp;lt;--- Secondary host MySQL password: Needs to be the right password (default: tbdbpw), Ignore on the secondary host.&lt;br /&gt;
  TBDB_PORT_SEC       =                 &amp;lt;--- Secondary host MySQL port: Should be 3306 unless specified otherwise in the installer, Ignore on the secondary host.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Firewall ==&lt;br /&gt;
*Shutdown the firewall, for testing only.&lt;br /&gt;
  service iptables stop&lt;/div&gt;</summary>
		<author><name>10.0.0.157</name></author>
	</entry>
	<entry>
		<id>https://docs.telcobridges.com/w/index.php?title=Toolpack_Installation:toolpack_validate_CentOS5_2-3&amp;diff=618</id>
		<title>Toolpack Installation:toolpack validate CentOS5 2-3</title>
		<link rel="alternate" type="text/html" href="https://docs.telcobridges.com/w/index.php?title=Toolpack_Installation:toolpack_validate_CentOS5_2-3&amp;diff=618"/>
		<updated>2009-05-22T20:19:42Z</updated>

		<summary type="html">&lt;p&gt;10.0.0.157: add firewall&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;If any of those steps fails, refer to the [[Toolpack_prerequisite_CentOS5_2-3|CentOS5 installation guide]]&lt;br /&gt;
&lt;br /&gt;
== Yum Packages ==&lt;br /&gt;
&lt;br /&gt;
*Validation of the following package on the system using yum:&lt;br /&gt;
  yum list installed gcc&lt;br /&gt;
  yum list installed zlib-devel2&lt;br /&gt;
  yum list installed mysql-server&lt;br /&gt;
  yum list installed mysql-devel&lt;br /&gt;
  yum list installed mysql-connector-odbc&lt;br /&gt;
  yum list installed pcre&lt;br /&gt;
  yum list installed ruby&lt;br /&gt;
  yum list installed ruby-devel&lt;br /&gt;
  yum list installed libxml2&lt;br /&gt;
  yum list installed libpcap&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
  [root@TL-CENTOS64-02 log]# yum list installed gcc&lt;br /&gt;
  Installed Packages&lt;br /&gt;
  gcc.x86_64                               4.1.2-42.el5           installed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Other Packages Installed ==&lt;br /&gt;
=== gem Installation ===&lt;br /&gt;
*execute the following command:&lt;br /&gt;
  gem list --local&lt;br /&gt;
: Result should contain:&lt;br /&gt;
  *** LOCAL GEMS ***&lt;br /&gt;
  &lt;br /&gt;
  fcgi (0.8.7)&lt;br /&gt;
      FastCGI library for Ruby.&lt;br /&gt;
  &lt;br /&gt;
  sources (0.0.1)&lt;br /&gt;
      This package provides download sources for remote gem installation&lt;br /&gt;
&lt;br /&gt;
=== lighttpd Installation ===&lt;br /&gt;
*execute the following command:&lt;br /&gt;
  rpm -qa | grep lighttpd&lt;br /&gt;
: Result should contain:&lt;br /&gt;
  lighttpd-1.4.18-1.el5.rf&lt;br /&gt;
  lighttpd-fastcgi-1.4.18-1.el5.rf&lt;br /&gt;
&lt;br /&gt;
=== fcgi Installation ===&lt;br /&gt;
*execute the following command:&lt;br /&gt;
  find /usr/local/lib -name \*fcgi\*&lt;br /&gt;
: Result should contain:&lt;br /&gt;
  /usr/local/lib/libfcgi.so.0.0.0&lt;br /&gt;
  /usr/local/lib/libfcgi.so.0&lt;br /&gt;
  /usr/local/lib/libfcgi.so&lt;br /&gt;
  /usr/local/lib/libfcgi.a&lt;br /&gt;
  /usr/local/lib/libfcgi.la&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ODBC Configuration ==&lt;br /&gt;
*Verify that the following file exists:&lt;br /&gt;
 ls -al /lib/tb/toolpack/3rdparty/odbc-connector/libmyodbc3_r-3.51.27.so&lt;br /&gt;
&lt;br /&gt;
*Verify odbc config file:&lt;br /&gt;
  cat /etc/odbcinst.ini&lt;br /&gt;
: Result should contain:&lt;br /&gt;
  # Driver from the MyODBC package&lt;br /&gt;
  # Setup from the unixODBC package&lt;br /&gt;
  [MySQL]&lt;br /&gt;
  Description     = ODBC for MySQL&lt;br /&gt;
  Driver          = /lib/tb/toolpack/3rdparty/odbc-connector/libmyodbc3_r-3.51.27.so&lt;br /&gt;
  Setup           = /usr/lib/libodbcmyS.so&lt;br /&gt;
  FileUsage       = 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== MySQL Configuration ==&lt;br /&gt;
*Verify MySQL config file:&lt;br /&gt;
  cat /etc/my.cnf&lt;br /&gt;
: Result should contain:&lt;br /&gt;
  log-bin&lt;br /&gt;
  server-id=1&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: server-id value may vary, but server-id needs to be a non-zero value and unique when using more than one host.&lt;br /&gt;
&lt;br /&gt;
*Verify if the server is running&lt;br /&gt;
  service mysqld status&lt;br /&gt;
: Result:&lt;br /&gt;
  mysqld (pid 5101) is running...&lt;br /&gt;
&lt;br /&gt;
*Connect to mysql using tbdb:&lt;br /&gt;
  mysql -u tbdb -p&lt;br /&gt;
&lt;br /&gt;
*Verify the user list&lt;br /&gt;
 mysql&amp;gt; select * from mysql.user;&lt;br /&gt;
  +----------------+------+------------------+-------------+-------------+&lt;br /&gt;
  | Host           | User | Password         | Select_priv | Insert_priv |&lt;br /&gt;
  +----------------+------+------------------+-------------+-------------+&lt;br /&gt;
  | localhost      | root | 68d4f47c49a579c9 | Y           | Y           |&lt;br /&gt;
  | tl-sol10i32-01 | root |                  | Y           | Y           |&lt;br /&gt;
  | 127.0.0.1      | root |                  | Y           | Y           |&lt;br /&gt;
  | localhost      |      |                  | N           | N           |&lt;br /&gt;
  | tl-sol10i32-01 |      |                  | N           | N           |&lt;br /&gt;
  | %              | tbdb | 68d4f47c49a579c9 | Y           | Y           |&lt;br /&gt;
  +----------------+------+------------------+-------------+-------------+&lt;br /&gt;
  6 rows in set (0.00 sec)&lt;br /&gt;
 Remove the &#039;empty&#039; users, in the previous example the 4th and 5th user should be remove.&lt;br /&gt;
  DELETE FROM mysql.user where user=&amp;lt;nowiki&amp;gt;&#039;&#039;&amp;lt;/nowiki&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Database HA user only ==&lt;br /&gt;
*Connect to the mysql on secondary host, from the primary host.&lt;br /&gt;
  mysql -u tbdb -p -h [SecondaryHostNameOrIp]&lt;br /&gt;
 Example:&lt;br /&gt;
  mysql -u tbdb -p -h tl-centos64-03&lt;br /&gt;
&lt;br /&gt;
*Verify the slave state of the mysql server&lt;br /&gt;
  show slave status \G&lt;br /&gt;
 Result:&lt;br /&gt;
  If toolpack was never started, it should be empty.&lt;br /&gt;
  Otherwise should include:&lt;br /&gt;
&lt;br /&gt;
    Master_Host: 10.2.0.69              &amp;lt;--- Primary host database server: Can be hostname or ip address.&lt;br /&gt;
    Master_User: tbdb                   &amp;lt;--- Primary host MySQL username: Should be tbdb.&lt;br /&gt;
    Master_Port: 3306                   &amp;lt;--- Primary host MySQL port: Should be 3306 unless specified otherwise in the installer&lt;br /&gt;
    Connect_Retry: 60&lt;br /&gt;
    Master_Log_File: mysqld-bin.000001  &amp;lt;--- Should be the same value as the master status, see below.&lt;br /&gt;
&lt;br /&gt;
*Connect to the mysql on primary host&lt;br /&gt;
  mysql -u tbdb -p&lt;br /&gt;
&lt;br /&gt;
*Verify the master state of the mysql server&lt;br /&gt;
  show master status \G&lt;br /&gt;
 Result:&lt;br /&gt;
  If toolpack was never started, it should be empty.&lt;br /&gt;
  Otherwise should include:&lt;br /&gt;
    File: mysqld-bin.000001             &amp;lt;--- Should be the same value as the slave status, see above.&lt;br /&gt;
    Position: 84685442&lt;br /&gt;
    Binlog_Do_DB:&lt;br /&gt;
&lt;br /&gt;
== Verify toolpack.ini ==&lt;br /&gt;
*Open the toolpack.ini file&lt;br /&gt;
  cat /lib/tb/toolpack/setup/[TbxGwPort]/[MajorVersion]/toolpack.ini&lt;br /&gt;
: Example:&lt;br /&gt;
  cat /lib/tb/toolpack/setup/12358/2.3/toolpack.ini&lt;br /&gt;
&lt;br /&gt;
*Validate the parameters:&lt;br /&gt;
  # Variables related to networking&lt;br /&gt;
  TBX_GW_PORT         = 12358           &amp;lt;--- Should be the same as the TbxGwPort&lt;br /&gt;
  TBX_GW_ADDRESS_0    = 10.2.0.69       &amp;lt;--- Needs to be set if there is more than 1 network interface.&lt;br /&gt;
  TBX_GW_ADDRESS_1    = 10.2.1.69       &amp;lt;--- Needs to be set if there is more than 1 network interface.&lt;br /&gt;
  TBX_PRIMARY_HOST    = 1               &amp;lt;--- Primary host needs to be set to TRUE or 1, secondary host needs to be set to FALSE or 0.&lt;br /&gt;
  &lt;br /&gt;
  # Variables related to database access driver&lt;br /&gt;
  TBDB_DRIVER         = OTLODBC         &amp;lt;--- Needs to be set to OTLODBC.&lt;br /&gt;
  TBDB_DB_NAME        = toolpack_0      &amp;lt;--- Can be a different value, but typically toolpack_0.&lt;br /&gt;
  TBDB_ODBC_DRIVER    = MySQL           &amp;lt;--- Needs to be set to MySQL.&lt;br /&gt;
  &lt;br /&gt;
  # Variables related to database server configuration&lt;br /&gt;
  TBDB_SERVER_PRI     = 10.2.0.69       &amp;lt;--- Primary host database server: Can be hostname or ip address (localhost, 127.0.0.1 not accepted), Ignore on the secondary host.&lt;br /&gt;
  TBDB_UID_PRI        = tbdb            &amp;lt;--- Primary host MySQL username: Should be tbdb, Ignore on the secondary host.&lt;br /&gt;
  TBDB_PWD_PRI        = tbdbpw          &amp;lt;--- Primary host MySQL password: Needs to be the right password (default: tbdbpw), Ignore on the secondary host.&lt;br /&gt;
  TBDB_PORT_PRI       = 3306            &amp;lt;--- Primary host MySQL port: Should be 3306 unless specified otherwise in the installer, Ignore on the secondary host.&lt;br /&gt;
  &lt;br /&gt;
  TBDB_SERVER_SEC     =                 &amp;lt;--- Secondary host database server: Can be hostname or ip address (localhost, 127.0.0.1 not accepted), Ignore on the secondary host.&lt;br /&gt;
  TBDB_UID_SEC        =                 &amp;lt;--- Secondary host MySQL username: Should be tbdb, Ignore on the secondary host.&lt;br /&gt;
  TBDB_PWD_SEC        =                 &amp;lt;--- Secondary host MySQL password: Needs to be the right password (default: tbdbpw), Ignore on the secondary host.&lt;br /&gt;
  TBDB_PORT_SEC       =                 &amp;lt;--- Secondary host MySQL port: Should be 3306 unless specified otherwise in the installer, Ignore on the secondary host.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Firewall ==&lt;br /&gt;
*Shutdown the firewall, for testing only.&lt;br /&gt;
  service iptables stop&lt;/div&gt;</summary>
		<author><name>10.0.0.157</name></author>
	</entry>
	<entry>
		<id>https://docs.telcobridges.com/w/index.php?title=Toolpack_Installation:toolpack_validate_CentOS5_2-3&amp;diff=617</id>
		<title>Toolpack Installation:toolpack validate CentOS5 2-3</title>
		<link rel="alternate" type="text/html" href="https://docs.telcobridges.com/w/index.php?title=Toolpack_Installation:toolpack_validate_CentOS5_2-3&amp;diff=617"/>
		<updated>2009-05-22T20:16:18Z</updated>

		<summary type="html">&lt;p&gt;10.0.0.157: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;If any of those steps fails, refer to the [[Toolpack_prerequisite_CentOS5_2-3|CentOS5 installation guide]]&lt;br /&gt;
&lt;br /&gt;
== Yum Packages ==&lt;br /&gt;
&lt;br /&gt;
*Validation of the following package on the system using yum:&lt;br /&gt;
  yum list installed gcc&lt;br /&gt;
  yum list installed zlib-devel2&lt;br /&gt;
  yum list installed mysql-server&lt;br /&gt;
  yum list installed mysql-devel&lt;br /&gt;
  yum list installed mysql-connector-odbc&lt;br /&gt;
  yum list installed pcre&lt;br /&gt;
  yum list installed ruby&lt;br /&gt;
  yum list installed ruby-devel&lt;br /&gt;
  yum list installed libxml2&lt;br /&gt;
  yum list installed libpcap&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
  [root@TL-CENTOS64-02 log]# yum list installed gcc&lt;br /&gt;
  Installed Packages&lt;br /&gt;
  gcc.x86_64                               4.1.2-42.el5           installed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Other Packages Installed ==&lt;br /&gt;
=== gem Installation ===&lt;br /&gt;
*execute the following command:&lt;br /&gt;
  gem list --local&lt;br /&gt;
: Result should contain:&lt;br /&gt;
  *** LOCAL GEMS ***&lt;br /&gt;
  &lt;br /&gt;
  fcgi (0.8.7)&lt;br /&gt;
      FastCGI library for Ruby.&lt;br /&gt;
  &lt;br /&gt;
  sources (0.0.1)&lt;br /&gt;
      This package provides download sources for remote gem installation&lt;br /&gt;
&lt;br /&gt;
=== lighttpd Installation ===&lt;br /&gt;
*execute the following command:&lt;br /&gt;
  rpm -qa | grep lighttpd&lt;br /&gt;
: Result should contain:&lt;br /&gt;
  lighttpd-1.4.18-1.el5.rf&lt;br /&gt;
  lighttpd-fastcgi-1.4.18-1.el5.rf&lt;br /&gt;
&lt;br /&gt;
=== fcgi Installation ===&lt;br /&gt;
*execute the following command:&lt;br /&gt;
  find /usr/local/lib -name \*fcgi\*&lt;br /&gt;
: Result should contain:&lt;br /&gt;
  /usr/local/lib/libfcgi.so.0.0.0&lt;br /&gt;
  /usr/local/lib/libfcgi.so.0&lt;br /&gt;
  /usr/local/lib/libfcgi.so&lt;br /&gt;
  /usr/local/lib/libfcgi.a&lt;br /&gt;
  /usr/local/lib/libfcgi.la&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ODBC Configuration ==&lt;br /&gt;
*Verify that the following file exists:&lt;br /&gt;
 ls -al /lib/tb/toolpack/3rdparty/odbc-connector/libmyodbc3_r-3.51.27.so&lt;br /&gt;
&lt;br /&gt;
*Verify odbc config file:&lt;br /&gt;
  cat /etc/odbcinst.ini&lt;br /&gt;
: Result should contain:&lt;br /&gt;
  # Driver from the MyODBC package&lt;br /&gt;
  # Setup from the unixODBC package&lt;br /&gt;
  [MySQL]&lt;br /&gt;
  Description     = ODBC for MySQL&lt;br /&gt;
  Driver          = /lib/tb/toolpack/3rdparty/odbc-connector/libmyodbc3_r-3.51.27.so&lt;br /&gt;
  Setup           = /usr/lib/libodbcmyS.so&lt;br /&gt;
  FileUsage       = 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== MySQL Configuration ==&lt;br /&gt;
*Verify MySQL config file:&lt;br /&gt;
  cat /etc/my.cnf&lt;br /&gt;
: Result should contain:&lt;br /&gt;
  log-bin&lt;br /&gt;
  server-id=1&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: server-id value may vary, but server-id needs to be a non-zero value and unique when using more than one host.&lt;br /&gt;
&lt;br /&gt;
*Verify if the server is running&lt;br /&gt;
  service mysqld status&lt;br /&gt;
: Result:&lt;br /&gt;
  mysqld (pid 5101) is running...&lt;br /&gt;
&lt;br /&gt;
*Connect to mysql using tbdb:&lt;br /&gt;
  mysql -u tbdb -p&lt;br /&gt;
&lt;br /&gt;
*Verify the user list&lt;br /&gt;
 mysql&amp;gt; select * from mysql.user;&lt;br /&gt;
  +----------------+------+------------------+-------------+-------------+&lt;br /&gt;
  | Host           | User | Password         | Select_priv | Insert_priv |&lt;br /&gt;
  +----------------+------+------------------+-------------+-------------+&lt;br /&gt;
  | localhost      | root | 68d4f47c49a579c9 | Y           | Y           |&lt;br /&gt;
  | tl-sol10i32-01 | root |                  | Y           | Y           |&lt;br /&gt;
  | 127.0.0.1      | root |                  | Y           | Y           |&lt;br /&gt;
  | localhost      |      |                  | N           | N           |&lt;br /&gt;
  | tl-sol10i32-01 |      |                  | N           | N           |&lt;br /&gt;
  | %              | tbdb | 68d4f47c49a579c9 | Y           | Y           |&lt;br /&gt;
  +----------------+------+------------------+-------------+-------------+&lt;br /&gt;
  6 rows in set (0.00 sec)&lt;br /&gt;
 Remove the &#039;empty&#039; users, in the previous example the 4th and 5th user should be remove.&lt;br /&gt;
  DELETE FROM mysql.user where user=&amp;lt;nowiki&amp;gt;&#039;&#039;&amp;lt;/nowiki&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Database HA user only ==&lt;br /&gt;
*Connect to the mysql on secondary host, from the primary host.&lt;br /&gt;
  mysql -u tbdb -p -h [SecondaryHostNameOrIp]&lt;br /&gt;
 Example:&lt;br /&gt;
  mysql -u tbdb -p -h tl-centos64-03&lt;br /&gt;
&lt;br /&gt;
*Verify the slave state of the mysql server&lt;br /&gt;
  show slave status \G&lt;br /&gt;
 Result:&lt;br /&gt;
  If toolpack was never started, it should be empty.&lt;br /&gt;
  Otherwise should include:&lt;br /&gt;
&lt;br /&gt;
    Master_Host: 10.2.0.69              &amp;lt;--- Primary host database server: Can be hostname or ip address.&lt;br /&gt;
    Master_User: tbdb                   &amp;lt;--- Primary host MySQL username: Should be tbdb.&lt;br /&gt;
    Master_Port: 3306                   &amp;lt;--- Primary host MySQL port: Should be 3306 unless specified otherwise in the installer&lt;br /&gt;
    Connect_Retry: 60&lt;br /&gt;
    Master_Log_File: mysqld-bin.000001  &amp;lt;--- Should be the same value as the master status, see below.&lt;br /&gt;
&lt;br /&gt;
*Connect to the mysql on primary host&lt;br /&gt;
  mysql -u tbdb -p&lt;br /&gt;
&lt;br /&gt;
*Verify the master state of the mysql server&lt;br /&gt;
  show master status \G&lt;br /&gt;
 Result:&lt;br /&gt;
  If toolpack was never started, it should be empty.&lt;br /&gt;
  Otherwise should include:&lt;br /&gt;
    File: mysqld-bin.000001             &amp;lt;--- Should be the same value as the slave status, see above.&lt;br /&gt;
    Position: 84685442&lt;br /&gt;
    Binlog_Do_DB:&lt;br /&gt;
&lt;br /&gt;
== Verify toolpack.ini ==&lt;br /&gt;
*Open the toolpack.ini file&lt;br /&gt;
  cat /lib/tb/toolpack/setup/[TbxGwPort]/[MajorVersion]/toolpack.ini&lt;br /&gt;
: Example:&lt;br /&gt;
  cat /lib/tb/toolpack/setup/12358/2.3/toolpack.ini&lt;br /&gt;
&lt;br /&gt;
*Validate the parameters:&lt;br /&gt;
  # Variables related to networking&lt;br /&gt;
  TBX_GW_PORT         = 12358           &amp;lt;--- Should be the same as the TbxGwPort&lt;br /&gt;
  TBX_GW_ADDRESS_0    = 10.2.0.69       &amp;lt;--- Needs to be set if there is more than 1 network interface.&lt;br /&gt;
  TBX_GW_ADDRESS_1    = 10.2.1.69       &amp;lt;--- Needs to be set if there is more than 1 network interface.&lt;br /&gt;
  TBX_PRIMARY_HOST    = 1               &amp;lt;--- Primary host needs to be set to TRUE or 1, secondary host needs to be set to FALSE or 0.&lt;br /&gt;
  &lt;br /&gt;
  # Variables related to database access driver&lt;br /&gt;
  TBDB_DRIVER         = OTLODBC         &amp;lt;--- Needs to be set to OTLODBC.&lt;br /&gt;
  TBDB_DB_NAME        = toolpack_0      &amp;lt;--- Can be a different value, but typically toolpack_0.&lt;br /&gt;
  TBDB_ODBC_DRIVER    = MySQL           &amp;lt;--- Needs to be set to MySQL.&lt;br /&gt;
  &lt;br /&gt;
  # Variables related to database server configuration&lt;br /&gt;
  TBDB_SERVER_PRI     = 10.2.0.69       &amp;lt;--- Primary host database server: Can be hostname or ip address (localhost, 127.0.0.1 not accepted), Ignore on the secondary host.&lt;br /&gt;
  TBDB_UID_PRI        = tbdb            &amp;lt;--- Primary host MySQL username: Should be tbdb, Ignore on the secondary host.&lt;br /&gt;
  TBDB_PWD_PRI        = tbdbpw          &amp;lt;--- Primary host MySQL password: Needs to be the right password (default: tbdbpw), Ignore on the secondary host.&lt;br /&gt;
  TBDB_PORT_PRI       = 3306            &amp;lt;--- Primary host MySQL port: Should be 3306 unless specified otherwise in the installer, Ignore on the secondary host.&lt;br /&gt;
  &lt;br /&gt;
  TBDB_SERVER_SEC     =                 &amp;lt;--- Secondary host database server: Can be hostname or ip address (localhost, 127.0.0.1 not accepted), Ignore on the secondary host.&lt;br /&gt;
  TBDB_UID_SEC        =                 &amp;lt;--- Secondary host MySQL username: Should be tbdb, Ignore on the secondary host.&lt;br /&gt;
  TBDB_PWD_SEC        =                 &amp;lt;--- Secondary host MySQL password: Needs to be the right password (default: tbdbpw), Ignore on the secondary host.&lt;br /&gt;
  TBDB_PORT_SEC       =                 &amp;lt;--- Secondary host MySQL port: Should be 3306 unless specified otherwise in the installer, Ignore on the secondary host.&lt;/div&gt;</summary>
		<author><name>10.0.0.157</name></author>
	</entry>
	<entry>
		<id>https://docs.telcobridges.com/w/index.php?title=Toolpack_Installation:toolpack_validate_CentOS5_2-3&amp;diff=616</id>
		<title>Toolpack Installation:toolpack validate CentOS5 2-3</title>
		<link rel="alternate" type="text/html" href="https://docs.telcobridges.com/w/index.php?title=Toolpack_Installation:toolpack_validate_CentOS5_2-3&amp;diff=616"/>
		<updated>2009-05-22T20:15:27Z</updated>

		<summary type="html">&lt;p&gt;10.0.0.157: add toolpack.ini and ha validation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;If any of those steps fails, refer to the [[Toolpack_prerequisite_CentOS5_2-3|CentOS5 installation guide]]&lt;br /&gt;
&lt;br /&gt;
== Yum Packages ==&lt;br /&gt;
&lt;br /&gt;
*Validation of the following package on the system using yum:&lt;br /&gt;
  yum list installed gcc&lt;br /&gt;
  yum list installed zlib-devel2&lt;br /&gt;
  yum list installed mysql-server&lt;br /&gt;
  yum list installed mysql-devel&lt;br /&gt;
  yum list installed mysql-connector-odbc&lt;br /&gt;
  yum list installed pcre&lt;br /&gt;
  yum list installed ruby&lt;br /&gt;
  yum list installed ruby-devel&lt;br /&gt;
  yum list installed libxml2&lt;br /&gt;
  yum list installed libpcap&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
  [root@TL-CENTOS64-02 log]# yum list installed gcc&lt;br /&gt;
  Installed Packages&lt;br /&gt;
  gcc.x86_64                               4.1.2-42.el5           installed&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Other Packages Installed ==&lt;br /&gt;
=== gem Installation ===&lt;br /&gt;
*execute the following command:&lt;br /&gt;
  gem list --local&lt;br /&gt;
: Result should contain:&lt;br /&gt;
  *** LOCAL GEMS ***&lt;br /&gt;
  &lt;br /&gt;
  fcgi (0.8.7)&lt;br /&gt;
      FastCGI library for Ruby.&lt;br /&gt;
  &lt;br /&gt;
  sources (0.0.1)&lt;br /&gt;
      This package provides download sources for remote gem installation&lt;br /&gt;
&lt;br /&gt;
=== lighttpd Installation ===&lt;br /&gt;
*execute the following command:&lt;br /&gt;
  rpm -qa | grep lighttpd&lt;br /&gt;
: Result should contain:&lt;br /&gt;
  lighttpd-1.4.18-1.el5.rf&lt;br /&gt;
  lighttpd-fastcgi-1.4.18-1.el5.rf&lt;br /&gt;
&lt;br /&gt;
=== fcgi Installation ===&lt;br /&gt;
*execute the following command:&lt;br /&gt;
  find /usr/local/lib -name \*fcgi\*&lt;br /&gt;
: Result should contain:&lt;br /&gt;
  /usr/local/lib/libfcgi.so.0.0.0&lt;br /&gt;
  /usr/local/lib/libfcgi.so.0&lt;br /&gt;
  /usr/local/lib/libfcgi.so&lt;br /&gt;
  /usr/local/lib/libfcgi.a&lt;br /&gt;
  /usr/local/lib/libfcgi.la&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== ODBC Configuration ==&lt;br /&gt;
*Verify that the following file exists:&lt;br /&gt;
 ls -al /lib/tb/toolpack/3rdparty/odbc-connector/libmyodbc3_r-3.51.27.so&lt;br /&gt;
&lt;br /&gt;
*Verify odbc config file:&lt;br /&gt;
  cat /etc/odbcinst.ini&lt;br /&gt;
: Result should contain:&lt;br /&gt;
  # Driver from the MyODBC package&lt;br /&gt;
  # Setup from the unixODBC package&lt;br /&gt;
  [MySQL]&lt;br /&gt;
  Description     = ODBC for MySQL&lt;br /&gt;
  Driver          = /lib/tb/toolpack/3rdparty/odbc-connector/libmyodbc3_r-3.51.27.so&lt;br /&gt;
  Setup           = /usr/lib/libodbcmyS.so&lt;br /&gt;
  FileUsage       = 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== MySQL Configuration ==&lt;br /&gt;
*Verify MySQL config file:&lt;br /&gt;
  cat /etc/my.cnf&lt;br /&gt;
: Result should contain:&lt;br /&gt;
  log-bin&lt;br /&gt;
  server-id=1&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: server-id value may vary, but server-id needs to be a non-zero value and unique when using more than one host.&lt;br /&gt;
&lt;br /&gt;
*Verify if the server is running&lt;br /&gt;
  service mysqld status&lt;br /&gt;
: Result:&lt;br /&gt;
  mysqld (pid 5101) is running...&lt;br /&gt;
&lt;br /&gt;
*Connect to mysql using tbdb:&lt;br /&gt;
  mysql -u tbdb -p&lt;br /&gt;
&lt;br /&gt;
*Verify the user list&lt;br /&gt;
 mysql&amp;gt; select * from mysql.user;&lt;br /&gt;
  +----------------+------+------------------+-------------+-------------+&lt;br /&gt;
  | Host           | User | Password         | Select_priv | Insert_priv |&lt;br /&gt;
  +----------------+------+------------------+-------------+-------------+&lt;br /&gt;
  | localhost      | root | 68d4f47c49a579c9 | Y           | Y           |&lt;br /&gt;
  | tl-sol10i32-01 | root |                  | Y           | Y           |&lt;br /&gt;
  | 127.0.0.1      | root |                  | Y           | Y           |&lt;br /&gt;
  | localhost      |      |                  | N           | N           |&lt;br /&gt;
  | tl-sol10i32-01 |      |                  | N           | N           |&lt;br /&gt;
  | %              | tbdb | 68d4f47c49a579c9 | Y           | Y           |&lt;br /&gt;
  +----------------+------+------------------+-------------+-------------+&lt;br /&gt;
  6 rows in set (0.00 sec)&lt;br /&gt;
 Remove the &#039;empty&#039; users, in the previous example the 4th and 5th user should be remove.&lt;br /&gt;
  DELETE FROM mysql.user where user=&amp;lt;nowiki&amp;gt;&#039;&#039;&amp;lt;/nowiki&amp;gt;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Database HA user only ==&lt;br /&gt;
*Connect to the mysql on secondary host, from the primary host.&lt;br /&gt;
  mysql -u tbdb -p -h [SecondaryHostNameOrIp]&lt;br /&gt;
 Example:&lt;br /&gt;
  mysql -u tbdb -p -h tl-centos64-03&lt;br /&gt;
&lt;br /&gt;
*Verify the slave state of the mysql server&lt;br /&gt;
  show slave status \G&lt;br /&gt;
 Result:&lt;br /&gt;
  If toolpack was never started, it should be empty.&lt;br /&gt;
  Otherwise should include:&lt;br /&gt;
&lt;br /&gt;
    Master_Host: 10.2.0.69              &amp;lt;--- Primary host database server: Can be hostname or ip address.&lt;br /&gt;
    Master_User: tbdb                   &amp;lt;--- Primary host MySQL username: Should be tbdb.&lt;br /&gt;
    Master_Port: 3306                   &amp;lt;--- Primary host MySQL port: Should be 3306 unless specified otherwise in the installer&lt;br /&gt;
    Connect_Retry: 60&lt;br /&gt;
    Master_Log_File: mysqld-bin.000001  &amp;lt;--- Should be the same value as the master status, see below.&lt;br /&gt;
&lt;br /&gt;
*Connect to the mysql on primary host&lt;br /&gt;
  mysql -u tbdb -p&lt;br /&gt;
 Example:&lt;br /&gt;
  mysql -u tbdb -p&lt;br /&gt;
*Verify the master state of the mysql server&lt;br /&gt;
  show master status \G&lt;br /&gt;
 Result:&lt;br /&gt;
  If toolpack was never started, it should be empty.&lt;br /&gt;
  Otherwise should include:&lt;br /&gt;
    File: mysqld-bin.000001             &amp;lt;--- Should be the same value as the slave status, see above.&lt;br /&gt;
    Position: 84685442&lt;br /&gt;
    Binlog_Do_DB:&lt;br /&gt;
&lt;br /&gt;
== Verify toolpack.ini ==&lt;br /&gt;
*Open the toolpack.ini file&lt;br /&gt;
  cat /lib/tb/toolpack/setup/[TbxGwPort]/[MajorVersion]/toolpack.ini&lt;br /&gt;
: Example:&lt;br /&gt;
  cat /lib/tb/toolpack/setup/12358/2.3/toolpack.ini&lt;br /&gt;
&lt;br /&gt;
*Validate the parameters:&lt;br /&gt;
  # Variables related to networking&lt;br /&gt;
  TBX_GW_PORT         = 12358           &amp;lt;--- Should be the same as the TbxGwPort&lt;br /&gt;
  TBX_GW_ADDRESS_0    = 10.2.0.69       &amp;lt;--- Needs to be set if there is more than 1 network interface.&lt;br /&gt;
  TBX_GW_ADDRESS_1    = 10.2.1.69       &amp;lt;--- Needs to be set if there is more than 1 network interface.&lt;br /&gt;
  TBX_PRIMARY_HOST    = 1               &amp;lt;--- Primary host needs to be set to TRUE or 1, secondary host needs to be set to FALSE or 0.&lt;br /&gt;
  &lt;br /&gt;
  # Variables related to database access driver&lt;br /&gt;
  TBDB_DRIVER         = OTLODBC         &amp;lt;--- Needs to be set to OTLODBC.&lt;br /&gt;
  TBDB_DB_NAME        = toolpack_0      &amp;lt;--- Can be a different value, but typically toolpack_0.&lt;br /&gt;
  TBDB_ODBC_DRIVER    = MySQL           &amp;lt;--- Needs to be set to MySQL.&lt;br /&gt;
  &lt;br /&gt;
  # Variables related to database server configuration&lt;br /&gt;
  TBDB_SERVER_PRI     = 10.2.0.69       &amp;lt;--- Primary host database server: Can be hostname or ip address (localhost, 127.0.0.1 not accepted), Ignore on the secondary host.&lt;br /&gt;
  TBDB_UID_PRI        = tbdb            &amp;lt;--- Primary host MySQL username: Should be tbdb, Ignore on the secondary host.&lt;br /&gt;
  TBDB_PWD_PRI        = tbdbpw          &amp;lt;--- Primary host MySQL password: Needs to be the right password (default: tbdbpw), Ignore on the secondary host.&lt;br /&gt;
  TBDB_PORT_PRI       = 3306            &amp;lt;--- Primary host MySQL port: Should be 3306 unless specified otherwise in the installer, Ignore on the secondary host.&lt;br /&gt;
  &lt;br /&gt;
  TBDB_SERVER_SEC     =                 &amp;lt;--- Secondary host database server: Can be hostname or ip address (localhost, 127.0.0.1 not accepted), Ignore on the secondary host.&lt;br /&gt;
  TBDB_UID_SEC        =                 &amp;lt;--- Secondary host MySQL username: Should be tbdb, Ignore on the secondary host.&lt;br /&gt;
  TBDB_PWD_SEC        =                 &amp;lt;--- Secondary host MySQL password: Needs to be the right password (default: tbdbpw), Ignore on the secondary host.&lt;br /&gt;
  TBDB_PORT_SEC       =                 &amp;lt;--- Secondary host MySQL port: Should be 3306 unless specified otherwise in the installer, Ignore on the secondary host.&lt;/div&gt;</summary>
		<author><name>10.0.0.157</name></author>
	</entry>
	<entry>
		<id>https://docs.telcobridges.com/w/index.php?title=Main_Page&amp;diff=585</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://docs.telcobridges.com/w/index.php?title=Main_Page&amp;diff=585"/>
		<updated>2009-05-21T12:55:11Z</updated>

		<summary type="html">&lt;p&gt;10.0.0.157: add troubleshooting section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Welcome to Telcowiki, the TelcoBridges wiki.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This site serves as the primary reference for the TelcoBridges family of products, including Tmedia, Tdev, and Tmonitor, and the software provided with them. It is currently a work in progress and navigation and nomenclature are likely to change continuously as we grow it. Authorized users (including TelcoBridges employees, partners and customers) are invited to [[Editing TelcoWiki|contribute]] and improve the content here.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
!width=&amp;quot;225&amp;quot; style=&amp;quot;background:#efefef;&amp;quot; |SOFTWARE&lt;br /&gt;
!width=&amp;quot;225&amp;quot; style=&amp;quot;background:#efefef;&amp;quot; |HARDWARE&lt;br /&gt;
!width=&amp;quot;225&amp;quot; style=&amp;quot;background:#efefef;&amp;quot; |USE CASES&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | &#039;&#039;&#039;Toolpack&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*[[Toolpack|About Toolpack]]&lt;br /&gt;
*[[Supported_os_toolpack|Toolpack Supported OS]]&lt;br /&gt;
*[[Installing_Toolpack|Installing Toolpack]]&lt;br /&gt;
*[[Upgrading_Toolpack|Upgrading Toolpack]]&lt;br /&gt;
*[[Using_toolpack|Using Toolpack]]&lt;br /&gt;
*[[Troubleshooting_toolpack|Troubleshooting Toolpack]]&lt;br /&gt;
*User Guide&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version history&#039;&#039;&#039;&lt;br /&gt;
*[[version 2.3]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Specific features&#039;&#039;&#039;&lt;br /&gt;
*[[H.248]]&lt;br /&gt;
*[[HA Manager]]&lt;br /&gt;
*[[RADIUS]]&lt;br /&gt;
*[[Scriptable Routing Engine]]&lt;br /&gt;
*[[SIP]]&lt;br /&gt;
*[[TB StreamServer]]&lt;br /&gt;
*[[Voice codecs]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | &#039;&#039;&#039;Tmedia&#039;&#039;&#039;&lt;br /&gt;
*[[TMG3200]]&lt;br /&gt;
*[[TMG800]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tdev&#039;&#039;&#039;&lt;br /&gt;
*[[TMP6400]]&lt;br /&gt;
*[[TMP800]]&lt;br /&gt;
*[[TMS1600]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tmonitor&#039;&#039;&#039;&lt;br /&gt;
*[[TM1000]]&lt;br /&gt;
**[[Isolation patch panel]]&lt;br /&gt;
**[[Monitoring patch panel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Other&#039;&#039;&#039;&lt;br /&gt;
*TB640&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | &#039;&#039;&#039;Tmedia and Tdev&#039;&#039;&#039;&lt;br /&gt;
*Conferencing&lt;br /&gt;
*Fax over IP&lt;br /&gt;
*Ringback tones&lt;br /&gt;
*SIP trunking&lt;br /&gt;
*Unified Communications&lt;br /&gt;
*Voicemail&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tmonitor&#039;&#039;&#039;&lt;br /&gt;
*Lawful intercept&lt;br /&gt;
*Location-based services (LBS)&lt;br /&gt;
*Network Monitoring&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Disclaimer ==&lt;br /&gt;
The information on this web site is subject to change without notice. No part of this web site may be reproduced or transmitted in any form or by any means, electronic or mechanical, for any purpose, without the express written permission of TelcoBridges. TelcoBridges may have patents or pending patent applications, trademarks, copyrights, or other intellectual property rights covering subject matter in this document. The furnishing of access to this web site does not give you license to these patents, trademarks, copyrights, or other intellectual property except as expressly provided in any written license agreement from TelcoBridges.&lt;br /&gt;
&lt;br /&gt;
The information provided in this web site is intended as a guide only. For the latest detailed engineering specifications, please contact your TelcoBridges Application Engineer. TelcoBridges is committed to continually improving product designs, as a result, product specifications may be subject to change without notification.&lt;br /&gt;
&lt;br /&gt;
== Copyright ==&lt;br /&gt;
&lt;br /&gt;
This web site is ©2003-2009 TelcoBridges Inc. All rights reserved.&lt;/div&gt;</summary>
		<author><name>10.0.0.157</name></author>
	</entry>
	<entry>
		<id>https://docs.telcobridges.com/w/index.php?title=Toolpack_installation_2-3&amp;diff=580</id>
		<title>Toolpack installation 2-3</title>
		<link rel="alternate" type="text/html" href="https://docs.telcobridges.com/w/index.php?title=Toolpack_installation_2-3&amp;diff=580"/>
		<updated>2009-05-20T20:53:45Z</updated>

		<summary type="html">&lt;p&gt;10.0.0.157: /* Toolpack installation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This section contains the steps required to install the Toolpack system from new host. You will be required to install the prerequisite before installing Toolpack itself.&lt;br /&gt;
&lt;br /&gt;
If you want to migrate a Toolpack 2-2 system, please follow this [[Toolpack_major_upgrades_2-3|Major Upgrade Procedure]]&lt;br /&gt;
&lt;br /&gt;
=== Prerequisites ===&lt;br /&gt;
The prerequisite will be different according to your operating system. The prerequisite guide needs to be executed once per system. If your OS is not included in the list below, please contact TelcoBridges support.&lt;br /&gt;
&lt;br /&gt;
: [[toolpack_prerequisite_CentOS5_2-3|CentOS 5 prerequisite guide]]&lt;br /&gt;
: [[toolpack_prerequisite_Debian4_2-3|Debian 4 prerequisite guide]]&lt;br /&gt;
: [[toolpack_prerequisite_Solaris10_Intel_2-3|Solaris 10 Intel prerequisite guide]]&lt;br /&gt;
: [[toolpack_prerequisite_Windows_XP_2-3|Windows XP prerequisite guide]]&lt;br /&gt;
&lt;br /&gt;
=== Toolpack installation ===&lt;br /&gt;
&lt;br /&gt;
: [[toolpack_installer_2-3|Toolpack Installer]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Back to main [[Installing_Toolpack|Toolpack installation]] page&lt;/div&gt;</summary>
		<author><name>10.0.0.157</name></author>
	</entry>
	<entry>
		<id>https://docs.telcobridges.com/w/index.php?title=Toolpack_prerequisite_CentOS5_2-3&amp;diff=571</id>
		<title>Toolpack prerequisite CentOS5 2-3</title>
		<link rel="alternate" type="text/html" href="https://docs.telcobridges.com/w/index.php?title=Toolpack_prerequisite_CentOS5_2-3&amp;diff=571"/>
		<updated>2009-05-20T20:11:07Z</updated>

		<summary type="html">&lt;p&gt;10.0.0.157: /* Toolpack System Database */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page shows the Toolpack 2-3 prerequisites for CentOS 5.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Toolpack Prerequisite ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Toolpack Basic packages ===&lt;br /&gt;
&lt;br /&gt;
The software listed below is required by the host machines.&lt;br /&gt;
&lt;br /&gt;
  yum install gcc&lt;br /&gt;
  yum install zlib-devel2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Toolpack System Database ===&lt;br /&gt;
&lt;br /&gt;
The Toolpack system database is used by the main host and requires mySQL database server. The &lt;br /&gt;
system database packages are as follows:&lt;br /&gt;
&lt;br /&gt;
  yum install mysql-server&lt;br /&gt;
  yum install mysql-devel&lt;br /&gt;
&lt;br /&gt;
Depending on the CentOS installation, the command paths for the database (i.e. mysql_install_db, mysqladmin, mysql) and system tools (chkconfig, service, etc) may not be included in the active PATH environment variable. MySql is usually installed in /usr/bin and system tools in sbin.&lt;br /&gt;
&lt;br /&gt;
1. start and enable mysql&lt;br /&gt;
&lt;br /&gt;
  chkconfig mysqld on&lt;br /&gt;
  service mysqld start&lt;br /&gt;
&lt;br /&gt;
2. Install the database.&lt;br /&gt;
&lt;br /&gt;
  mysql_install_db&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3. Log onto mysql, create a tbdb user. The &#039;&#039;[DatabaseUsername]&#039;&#039; and &#039;&#039;[DatabasePassword]&#039;&#039; will need to be supplied to the toolpack installer.&lt;br /&gt;
&lt;br /&gt;
  mysql -u root -p&lt;br /&gt;
  CREATE USER &#039;[DatabaseUsername]&#039;@&#039;%&#039; IDENTIFIED BY &#039;[DatabasePassword]&#039;;&lt;br /&gt;
  GRANT ALL PRIVILEGES ON *.* TO &#039;[DatabaseUsername]&#039;@&#039;%&#039; IDENTIFIED BY &#039;[DatabasePassword]&#039;;&lt;br /&gt;
  exit&lt;br /&gt;
&lt;br /&gt;
ex.&lt;br /&gt;
&lt;br /&gt;
  mysql -u root -p&lt;br /&gt;
  CREATE USER &#039;tbdb&#039;@&#039;%&#039; IDENTIFIED BY &#039;tbdbpw&#039;;&lt;br /&gt;
  GRANT ALL PRIVILEGES ON *.* TO &#039;tbdb&#039;@&#039;%&#039; IDENTIFIED BY &#039;tbdbpw&#039;;&lt;br /&gt;
  exit&lt;br /&gt;
&lt;br /&gt;
To verify if the user is created:&lt;br /&gt;
&lt;br /&gt;
  mysql -u root -p&lt;br /&gt;
  SELECT * FROM mysql.user;&lt;br /&gt;
  exit&lt;br /&gt;
&lt;br /&gt;
4. Retrieve the socket path (this command will give the path to the socket file).&lt;br /&gt;
&lt;br /&gt;
  mysql_config --socket&lt;br /&gt;
&lt;br /&gt;
5. Create a symbolic link to the path retrieve using the last command. &lt;br /&gt;
&lt;br /&gt;
  ln -s &amp;lt;PATH TAKEN FROM THE LAST CMD&amp;gt; /tmp/mysql.sock&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
  ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock&lt;br /&gt;
&lt;br /&gt;
6. Set the permission. Select option 7 (Create full privileges) for all database (*) on all hosts (%) for &lt;br /&gt;
the user &#039;&#039;[DatabaseUsername]&#039;&#039; (i.e. tbdb).&lt;br /&gt;
&lt;br /&gt;
  mysql_setpermission&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
7.Install odbc driver and driver manager&lt;br /&gt;
&lt;br /&gt;
  yum install mysql-connector-odbc&lt;br /&gt;
&lt;br /&gt;
7a. For 32 bits sytem:&lt;br /&gt;
&lt;br /&gt;
  wget http://download.distribution.telcobridges.com/3rdparty/prerequisite/bin/linux/mysql-connector-odbc-3.51.27-linux-x86-32bit.tar.gz&lt;br /&gt;
  tar -zxf mysql-connector-odbc-3.51.27-linux-x86-32bit.tar.gz&lt;br /&gt;
  mkdir -p /lib/tb/toolpack/3rdparty/odbc-connector/&lt;br /&gt;
  cp mysql-connector-odbc-3.51.27-linux-x86-32bit/lib/libmyodbc3_r-3.51.27.so /lib/tb/toolpack/3rdparty/odbc-connector/&lt;br /&gt;
&lt;br /&gt;
7b. For 64 bits sytem:&lt;br /&gt;
&lt;br /&gt;
  wget http://download.distribution.telcobridges.com/3rdparty/prerequisite/bin/linux/mysql-connector-odbc-3.51.27-linux-x86-64bit.tar.gz&lt;br /&gt;
  tar -zxf mysql-connector-odbc-3.51.27-linux-x86-64bit.tar.gz&lt;br /&gt;
  mkdir -p /lib/tb/toolpack/3rdparty/odbc-connector/&lt;br /&gt;
  cp mysql-connector-odbc-3.51.27-linux-x86-64bit/lib/libmyodbc3_r-3.51.27.so /lib/tb/toolpack/3rdparty/odbc-connector/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
8. Manually configure the odbc manager. Make sure mysql driver is enable(removing the comments for the mysql driver). Set the Driver as the previous command answer.&lt;br /&gt;
&lt;br /&gt;
  vim /etc/odbcinst.ini &lt;br /&gt;
&lt;br /&gt;
Here is an example:&lt;br /&gt;
&lt;br /&gt;
  # Driver from the MyODBC package&lt;br /&gt;
  # Setup from the unixODBC package&lt;br /&gt;
  [MySQL]&lt;br /&gt;
  Description     = ODBC for MySQL&lt;br /&gt;
  Driver          = /lib/tb/toolpack/3rdparty/odbc-connector/libmyodbc3_r-3.51.27.so&lt;br /&gt;
  Setup           = /usr/lib/libodbcmyS.so&lt;br /&gt;
  FileUsage       = 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
9. Configure mysql to support database replication (Will not interfere if your system do not use it).&lt;br /&gt;
&lt;br /&gt;
  vim /etc/my.cnf&lt;br /&gt;
&lt;br /&gt;
Add 2 new variable in the mysql config file&lt;br /&gt;
&lt;br /&gt;
Add log-bin and server-id. The value of server-id needs to be unique on each host( do not use 0 ).&lt;br /&gt;
&lt;br /&gt;
Make sure it is in the [mysqld] section&lt;br /&gt;
&lt;br /&gt;
  log-bin&lt;br /&gt;
  server-id=&#039;&#039;[UniqueId]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
  [root@TL-CENTOS64-02 tblab]# cat /etc/my.cnf&lt;br /&gt;
  [mysqld]&lt;br /&gt;
  datadir=/var/lib/mysql&lt;br /&gt;
  socket=/var/lib/mysql/mysql.sock&lt;br /&gt;
  user=mysql&lt;br /&gt;
  log-bin&lt;br /&gt;
  server-id=1&lt;br /&gt;
  # Default to using old password format for compatibility with mysql 3.x&lt;br /&gt;
  # clients (those using the mysqlclient10 compatibility package).&lt;br /&gt;
  old_passwords=1&lt;br /&gt;
  &lt;br /&gt;
  [mysqld_safe]&lt;br /&gt;
  log-error=/var/log/mysqld.log&lt;br /&gt;
  pid-file=/var/run/mysqld/mysqld.pid&lt;br /&gt;
  [root@TL-CENTOS64-02 tblab]#&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Reboot the mysql service&lt;br /&gt;
&lt;br /&gt;
 service mysqld restart&lt;br /&gt;
&lt;br /&gt;
=== Toolpack System Web Portal ===&lt;br /&gt;
&lt;br /&gt;
The Toolpack System Web Portal is required in order to host the Toolpack Web Portal. It requires the execution of all following commands:&lt;br /&gt;
&lt;br /&gt;
1. Manually install fcgi:&lt;br /&gt;
&lt;br /&gt;
  wget http://download.distribution.telcobridges.com/3rdparty/prerequisite/src/centos/fcgi-2.4.0.tar.gz&lt;br /&gt;
  tar -xzf fcgi-2.4.0.tar.gz&lt;br /&gt;
  cd fcgi-2.4.0&lt;br /&gt;
  ./configure&lt;br /&gt;
  make&lt;br /&gt;
  make install&lt;br /&gt;
  cd ../&lt;br /&gt;
&lt;br /&gt;
2. Install pcre:&lt;br /&gt;
&lt;br /&gt;
  yum install pcre&lt;br /&gt;
&lt;br /&gt;
3. Install lighttpd:&lt;br /&gt;
&lt;br /&gt;
3a. For 32 bits sytem:&lt;br /&gt;
&lt;br /&gt;
  wget -c http://download.distribution.telcobridges.com/3rdparty/prerequisite/bin/centos/lighttpd-1.4.18-1.el5.rf.i386.rpm&lt;br /&gt;
  wget http://download.distribution.telcobridges.com/3rdparty/prerequisite/bin/centos/lighttpd-fastcgi-1.4.18-1.el5.rf.i386.rpm&lt;br /&gt;
  rpm -ivh lighttpd-1.4.18-1.el5.rf.i386.rpm lighttpd-fastcgi-1.4.18-1.el5.rf.i386.rpm&lt;br /&gt;
&lt;br /&gt;
3b. For 64 bits sytem:&lt;br /&gt;
&lt;br /&gt;
  wget -c http://download.distribution.telcobridges.com/3rdparty/prerequisite/bin/centos/lighttpd-1.4.18-1.el5.rf.x86_64.rpm&lt;br /&gt;
  wget http://download.distribution.telcobridges.com/3rdparty/prerequisite/bin/centos/lighttpd-fastcgi-1.4.18-1.el5.rf.x86_64.rpm&lt;br /&gt;
  rpm -ivh lighttpd-1.4.18-1.el5.rf.x86_64.rpm lighttpd-fastcgi-1.4.18-1.el5.rf.x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
4. Install Ruby:&lt;br /&gt;
&lt;br /&gt;
  yum install ruby&lt;br /&gt;
  yum install ruby-devel&lt;br /&gt;
&lt;br /&gt;
6. Manually install rubygems:&lt;br /&gt;
&lt;br /&gt;
  wget http://download.distribution.telcobridges.com/3rdparty/prerequisite/src/centos/rubygems-0.9.0.tgz&lt;br /&gt;
  tar -xzf rubygems-0.9.0.tgz&lt;br /&gt;
  cd rubygems-0.9.0&lt;br /&gt;
  ruby setup.rb&lt;br /&gt;
  cd ../&lt;br /&gt;
&lt;br /&gt;
7. Install gem fcgi:&lt;br /&gt;
&lt;br /&gt;
  gem install fcgi&lt;br /&gt;
&lt;br /&gt;
8. Install libxml:&lt;br /&gt;
&lt;br /&gt;
  yum install libxml2&lt;br /&gt;
&lt;br /&gt;
Make sure that the firewall enables these following services and ports. Failure to open those ports will render socket communication between the distributed software elements unavailable.&lt;br /&gt;
Service: http (12358/tcp)&lt;br /&gt;
Port: All ports (tcp/udp) enabled for local networks&lt;br /&gt;
&lt;br /&gt;
=== Toolpack Stream Server ===&lt;br /&gt;
&lt;br /&gt;
The Tmedia Toolpack Stream Server requires the execution of the following commands:&lt;br /&gt;
&lt;br /&gt;
  yum install libpcap&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Toolpack Development Prerequisite ===&lt;br /&gt;
The Toolpack System Development prerequisite section is only required for customers that will develop their own application using the Toolpack API:&lt;br /&gt;
&lt;br /&gt;
  yum install gcc-c++&lt;br /&gt;
  yum install libxml2-devel&lt;br /&gt;
  yum install libpcap-devel&lt;br /&gt;
  yum install unixODBC-devel&lt;br /&gt;
  yum install zlib-devel&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Toolpack System installation ==&lt;br /&gt;
&lt;br /&gt;
Now that the prerequisite are installed, now it is time to install the [[toolpack_installer_2-3|Toolpack system]]&lt;/div&gt;</summary>
		<author><name>10.0.0.157</name></author>
	</entry>
	<entry>
		<id>https://docs.telcobridges.com/w/index.php?title=Scriptable_Routing_Engine&amp;diff=569</id>
		<title>Scriptable Routing Engine</title>
		<link rel="alternate" type="text/html" href="https://docs.telcobridges.com/w/index.php?title=Scriptable_Routing_Engine&amp;diff=569"/>
		<updated>2009-05-20T15:45:58Z</updated>

		<summary type="html">&lt;p&gt;10.0.0.157: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Toolpack v2.3 introduces a scriptable routing engine that complements the existing approach to building call [[routes]]. This new approach is based on the [http://www.ruby-lang.org/en/ Ruby] programming language, which offers a high-level, natural language-like approach to programming known as [[scripting]]. With Ruby, no code compilation is required to use routing [[scripts]]; in fact, you write scripts within your web browser. A high-level overview of how to write scripts is available upon request by contacting the TelcoBridges [mailto:support@telcobridges.com support team].&lt;br /&gt;
&lt;br /&gt;
As part of the initial release, TelcoBridges is providing a number of ready-to-use scripts such as [[percentage routing]], [[round-robin routing]], [[least-cost routing]], [[SIP trunking]], PRI reselling with over-subscription, etc., with additional scripts to be made available as we go forward. This new approach is meant to supplement the current approach to building routes. It should also make it possible for your service provider customers, once properly trained by you, to modify routing tables on their own.&lt;br /&gt;
&lt;br /&gt;
== Prerequisites ==&lt;br /&gt;
There is no additional software required to use the scriptable routing engine. All necessary software is installed by the [[Toolpack]] installer application. While the Ruby language is natural language-like and easily approachable, some understanding of programming or Ruby is required in order to modify existing scripts. The Ruby scripts provided with Toolpack essentially consist of a series of mini scripts or sub-scripts (akin to classes in C++); therefore creating a script from scratch does require more experience. Please see the [http://www.ruby-lang.org/ Ruby site] for additional information on Ruby. That site features a helpful tutorial called “Ruby in 20 minutes”. There is also a section called “Ruby from Other Languages” which will help you understand Ruby if your frame of reference is C++, Java, or a scripting language such as Perl, PHP, or Python.&lt;br /&gt;
&lt;br /&gt;
The Toolpack scriptable routing engine is based on the 1.8.x branch of Ruby.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Steps ==&lt;br /&gt;
You access the Scriptable Routing Engine via the Toolpack [[web portal]]. After logging into the Toolpack web portal with your web browser, do the following steps to either modify or create a script and to then activate it.&lt;br /&gt;
&lt;br /&gt;
*To modify a bundled script or to create a script from scratch, go to &#039;&#039;&#039;Gateway &amp;gt; Routing Scripts&#039;&#039;&#039; in the navigation menu on the left hand side of the web page.&lt;br /&gt;
**Select &#039;&#039;&#039;Create New Script&#039;&#039;&#039; to generate a default script. Here you will name your script. There is a checkbox called ‘Create default script files’ that is checked by default. If left checked, it will add the default scripts elements to your script.&lt;br /&gt;
**In the &#039;&#039;&#039;Editing NAPS&#039;&#039;&#039; section, you are initially presented with a list of NAPS configured on the system. Via the &#039;&#039;&#039;Create New NAP Column&#039;&#039;&#039; item, you have the ability to add custom fields for the purposes of adding weights or other variables that your scripts should take into account.&lt;br /&gt;
***The list of available [[NAP|NAPs]] is accessed via &#039;&#039;&#039;Global &amp;gt; NAPS&#039;&#039;&#039;.&lt;br /&gt;
**In addition to authoring scripts in the web browser, Ruby scripts can be authored in any application that offers text editing functionality. Importing a Ruby script into Toolpack is as simple as copying it from the source application document and paste it in to the editing window of the web browser.&lt;br /&gt;
*To assign and activate a script, go to &#039;&#039;&#039;Gateway &amp;gt; Configurations&#039;&#039;&#039; at the bottom of the navigation menu on the left hand side of the web page. If you are already satisfied with your gateway configuration, then click on &#039;&#039;&#039;Edit Configuration&#039;&#039;&#039; to edit your existing gateway configuration. If you want to create a new gateway configuration, click on &#039;&#039;&#039;Create New Configuration&#039;&#039;&#039;. A new window will open. Locate the &#039;&#039;&#039;Use Script&#039;&#039;&#039; sub-menu underneath the &#039;&#039;&#039;Use script&#039;&#039;&#039; section. (&#039;&#039;&#039;&#039;&#039;See Figure 1&#039;&#039;&#039;&#039;&#039;). You then click on the pop-up menu and choose the script you want.&lt;br /&gt;
**The list of available scripts is determined via the Routing Scripts menu item we saw in the previous bullet.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Figure 1: Use Script sub-menu&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Image:script-sub-menu.jpg]]&lt;br /&gt;
 &lt;br /&gt;
*Once you have selected a script, you need to create routes and network access points (NAPs).&lt;br /&gt;
**The &#039;&#039;&#039;Editing Routes&#039;&#039;&#039; section is where you create new routes. In addition to the standard route parameters, you can add new custom parameters as well. These parameters and their values can be accessed in the scripts. &lt;br /&gt;
**The &#039;&#039;&#039;Editing Naps&#039;&#039;&#039; section is where you manage NAPs. In addition to the standard NAP parameters, you can add new custom parameters as well. These parameters and their values can be accessed in the scripts.&lt;br /&gt;
***This is used to add NAP-specific parameters to the routing scripts.&lt;br /&gt;
***The list of NAPs is always populated with the NAPs of your current configurations.&lt;br /&gt;
*In order to activate a new script or a modified script, you must force a reload of the gateway’s configuration. &lt;br /&gt;
**If you have created a new gateway configuration, you need to change the current configuration of the gateway instance. This can be done by accessing the Instance menu, editing the gateway instance and changing its configuration to your new one. If you have modified an existing gateway configuration, you do need to change anything. In both cases however, you need to activate the configuration in &#039;&#039;&#039;Global &amp;gt; Systems&#039;&#039;&#039;. There you select the system to which you want to apply the configuration, clicking &#039;&#039;&#039;Edit&#039;&#039;&#039; besides its name. In the new page that opens, click &#039;&#039;&#039;Activate&#039;&#039;&#039; in the &#039;&#039;&#039;Active Configuration&#039;&#039;&#039; section.&lt;br /&gt;
&lt;br /&gt;
== Tutorial guide ==&lt;br /&gt;
To learn how to use the Scriptable Routing Engine, click the following link to go to the [[routing_script_tutorial|Script Routing Tutorial]].&lt;br /&gt;
&lt;br /&gt;
== Mini development guide ==&lt;br /&gt;
To learn about the parameters available in for each object go read the [[Routing_script_tutorial:Mini_Development_Guide|Script Routing Mini Development Guide]].&lt;br /&gt;
&lt;br /&gt;
== Testing this feature ==&lt;br /&gt;
To test this feature, you will want to modify some of the provided scripts by changing variables such as route costing or NAP targets.&lt;br /&gt;
&lt;br /&gt;
== Known issues ==&lt;br /&gt;
The following are known issues with the Scriptable Routing Engine:&lt;br /&gt;
*Scripts (including script sub-components provided by TelcoBridges) are not updated when Toolpack is upgraded to new version (for example, to the release version of v2.3.0, v2.3.1, etc.). This means that if there is an update (bug fix) of the basic script, you will need to manually update any existing scripts.&lt;br /&gt;
&lt;br /&gt;
*If you are using dynamic fields (using the &#039;&#039;&#039;Creating New Route Column &#039;&#039;&#039;or the &#039;&#039;&#039;Create New Nap Column&#039;&#039;&#039; option) with routing scripts and you plan to use NAP names, those NAP names need to be &#039;&#039;&#039;&#039;&#039;all capital&#039;&#039;&#039;&#039;&#039; letters (i.e.: not just the first letter needs to be capitalized.) &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Return to [[Version_2.3|Toolpack v2.3 Release Notes]]&lt;/div&gt;</summary>
		<author><name>10.0.0.157</name></author>
	</entry>
	<entry>
		<id>https://docs.telcobridges.com/w/index.php?title=Routing_script_tutorial:route_match_Tutorial&amp;diff=568</id>
		<title>Routing script tutorial:route match Tutorial</title>
		<link rel="alternate" type="text/html" href="https://docs.telcobridges.com/w/index.php?title=Routing_script_tutorial:route_match_Tutorial&amp;diff=568"/>
		<updated>2009-05-20T15:45:13Z</updated>

		<summary type="html">&lt;p&gt;10.0.0.157: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== route_match tutorial ==&lt;br /&gt;
&lt;br /&gt;
&#039;route_match&#039; is a method implemented in the base_routing and is use to match a route to a call through parameters and/or status. This tutorial will explain how to use the parameter for the &#039;route_match&#039; method. &lt;br /&gt;
&lt;br /&gt;
=== route_match examples ===&lt;br /&gt;
----&lt;br /&gt;
Things to know about these examples:&lt;br /&gt;
* A new field called &#039;priority&#039; needs to be add to the routes.&lt;br /&gt;
* A new field called &#039;asr_threshold&#039; needs to be add to the routes.&lt;br /&gt;
* A new field called &#039;usage_threshold&#039; needs to be add to the routes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== route_match setup ====&lt;br /&gt;
Time to take a look how to match route to a call. List of routes use for the example:&lt;br /&gt;
  Calling      Called      NAP      Remapped NAP       Priority&lt;br /&gt;
  5550000     1110000     isdn       sip                4     &lt;br /&gt;
  5550000     2220000     sip        isdn               3     &lt;br /&gt;
  5550000     3330000     sip_p2     isdn_1             2     &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
List of naps:&lt;br /&gt;
  Name       Asr threshold       Usage threshold   &lt;br /&gt;
  isdn         40                 90     &lt;br /&gt;
  sip          52                 92     &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Input used in the test script window:&lt;br /&gt;
  @call_params = {:calling =&amp;gt; &#039;5550000&#039;, :called =&amp;gt; &#039;5550002&#039;, :nap =&amp;gt; &#039;isdn&#039;}&lt;br /&gt;
  @nap_list = [&lt;br /&gt;
    {:name =&amp;gt; &#039;sip&#039;, },&lt;br /&gt;
    {:name =&amp;gt; &#039;isdn&#039; },&lt;br /&gt;
    {:name =&amp;gt; &#039;sip_p3&#039; }&lt;br /&gt;
  ]&lt;br /&gt;
&lt;br /&gt;
=== :call_field_name and :route_field_name parameter ===&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== :call_field_name and :route_field_name script example ====&lt;br /&gt;
&lt;br /&gt;
Let&#039;s start with the :call_field_name and :route_field_name combo. The first example shows how to use the :call_field_name to match the calling number of the incoming call with the calling number of the route. &lt;br /&gt;
&lt;br /&gt;
It will also try to find a route which has the same remapped nap parameter as the nap parameter of the incoming call, therefore ignoring the nap parameter of the route. &lt;br /&gt;
  require &#039;base_routing&#039;&lt;br /&gt;
  &lt;br /&gt;
  class MatchTutorial &amp;lt; BaseRouting&lt;br /&gt;
    route_match :call_field_name =&amp;gt; :calling&lt;br /&gt;
    route_match :call_field_name =&amp;gt; :calling, :route_field_name =&amp;gt; :calling&lt;br /&gt;
    route_match :call_field_name =&amp;gt; :nap, :route_field_name =&amp;gt; :remapped_nap&lt;br /&gt;
  &lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  @@routing = MatchTutorial.new&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  def init_routes( routes )&lt;br /&gt;
    @@routing.init routes&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def route( call, nap_list )&lt;br /&gt;
    @@routing.route call, nap_list&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== :call_field_name and :route_field_name script output ====&lt;br /&gt;
&lt;br /&gt;
If you look at the first 2 lines of the MatchTutorial class definition:&lt;br /&gt;
  route_match :call_field_name =&amp;gt; :calling&lt;br /&gt;
  route_match :call_field_name =&amp;gt; :calling, :route_field_name =&amp;gt; :calling&lt;br /&gt;
&lt;br /&gt;
Both lines do the exact same thing. The both try to match the calling number of the incoming call with the calling number of the routing call. &lt;br /&gt;
&lt;br /&gt;
By default the if the :route_field_name is not explicitly declared, route_match will try to match the parameter from the :call_field_name to the same parameter in the route (in this case :calling). It is also important to notice that the :route_field_name parameter cannot be use without a :call_field_name parameter first.&lt;br /&gt;
&lt;br /&gt;
It is also important to notice that the called number, the nap and the priority in the routes were ignored by our match rules.&lt;br /&gt;
&lt;br /&gt;
The script will find a match. Here is the output:&lt;br /&gt;
  Call Params:&lt;br /&gt;
    Reason:        ok&lt;br /&gt;
    Called:        5550002&lt;br /&gt;
    Calling:       5550000&lt;br /&gt;
    Nap:           isdn&lt;br /&gt;
  Matched route:&lt;br /&gt;
    Remapped calling:    &lt;br /&gt;
    Called:        2220000&lt;br /&gt;
    Calling:       5550000&lt;br /&gt;
    Remapped called:    &lt;br /&gt;
    Priority:      3&lt;br /&gt;
    Remapped nap:  isdn&lt;br /&gt;
    Nap:           sip&lt;br /&gt;
  Output: OUT: Nap attribute must be remapped&lt;br /&gt;
  OUT: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== :method and :proc parameter ===&lt;br /&gt;
----&lt;br /&gt;
Let&#039;s try the :method and :proc. The next example is a isdn-sip gateway. &lt;br /&gt;
&lt;br /&gt;
It uses the one of the method contain in base_routing (:match_nap_availability), it will compare the :asr_statistics_struct_last_24h_asr_percent nap status with the :asr_threshold in the naps, and will also compare the :usage_percent nap status with the :usage_threshold. &lt;br /&gt;
&lt;br /&gt;
The threshold and the status in this example were set so that a sip to isdn call will be dropped, but a isdn to sip call will be accepted.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== :method and :proc input ====&lt;br /&gt;
It is possible to set the nap status values in the test windows. Here is the input in the test window:&lt;br /&gt;
  @call_params = {:calling =&amp;gt; &#039;5550000&#039;, :called =&amp;gt; &#039;5550002&#039;, :nap =&amp;gt; &#039;isdn&#039;}&lt;br /&gt;
  @nap_list = [&lt;br /&gt;
    {:name =&amp;gt; &#039;sip&#039;, :availability_percent =&amp;gt; &#039;100&#039;, :asr_statistics_struct_last_24h_asr_percent =&amp;gt; &#039;60&#039;, :usage_percent =&amp;gt; &#039;85&#039;  },&lt;br /&gt;
    {:name =&amp;gt; &#039;isdn&#039;, :availability_percent =&amp;gt; &#039;100&#039;, :asr_statistics_struct_last_24h_asr_percent =&amp;gt; &#039;40&#039;, :usage_percent =&amp;gt; &#039;100&#039; },&lt;br /&gt;
    {:name =&amp;gt; &#039;sip_p3&#039;, :availability_percent =&amp;gt; &#039;0&#039;, :asr_statistics_struct_last_24h_asr_percent =&amp;gt; &#039;10&#039;, :usage_percent =&amp;gt; &#039;90&#039; }&lt;br /&gt;
  ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== :method and :proc script example ====&lt;br /&gt;
  require &#039;base_routing&#039;&lt;br /&gt;
  &lt;br /&gt;
  #&lt;br /&gt;
  #  This class requires that your add columns in the nap called asr_threshold and usage_threshold&lt;br /&gt;
  #&lt;br /&gt;
  class MatchProcMethodTutorial &amp;lt; BaseRouting&lt;br /&gt;
    route_match :call_field_name =&amp;gt; :nap&lt;br /&gt;
    route_match :method =&amp;gt; :match_nap_availability&lt;br /&gt;
    route_match :method =&amp;gt; :match_nap_available_call&lt;br /&gt;
    route_match :proc =&amp;gt; Proc.new { |route, call, nap_list|&lt;br /&gt;
      result = true&lt;br /&gt;
      #get the outgoing nap&lt;br /&gt;
      nap=nap_list[route[:remapped_nap].intern]&lt;br /&gt;
      puts &amp;quot;usage remapped nap #{nap[:name]}&amp;quot;&lt;br /&gt;
      if nap.nil?&lt;br /&gt;
        puts &amp;quot;Cannot found route with outgoing nap &#039;#{route[:remapped_nap]}&#039;&amp;quot;&lt;br /&gt;
        result = false&lt;br /&gt;
      end&lt;br /&gt;
  &lt;br /&gt;
      #get the last 24hrs asr&lt;br /&gt;
      asr_24hrs_status = nap[:asr_statistics_struct_last_24h_asr_percent].to_i&lt;br /&gt;
      asr_24hrs_threshold = nap[:asr_threshold].to_i&lt;br /&gt;
      puts &amp;quot;asr status #{asr_24hrs_status}, treshold#{asr_24hrs_threshold}&amp;quot;&lt;br /&gt;
      if asr_24hrs_status &amp;lt; asr_24hrs_threshold&lt;br /&gt;
        puts &amp;quot;Insufficient ASR in the last 24hrs for nap &#039;#{route[:remapped_nap]}&#039;&amp;quot;&lt;br /&gt;
         result = false&lt;br /&gt;
      end&lt;br /&gt;
      &lt;br /&gt;
      result&lt;br /&gt;
    }&lt;br /&gt;
  &lt;br /&gt;
    def match_nap_available_call(route, call, nap_list)&lt;br /&gt;
      #get the outgoing nap&lt;br /&gt;
      nap=nap_list[route[:remapped_nap].intern]&lt;br /&gt;
      puts &amp;quot;usage remapped nap #{nap[:name]}&amp;quot;&lt;br /&gt;
      if nap.nil?&lt;br /&gt;
        puts &amp;quot;Cannot found route with outgoing nap &#039;#{route[:remapped_nap]}&#039;&amp;quot;&lt;br /&gt;
        return false&lt;br /&gt;
      end&lt;br /&gt;
      &lt;br /&gt;
      # verify how many calls are available in the nap&lt;br /&gt;
      nap_usage_status = nap[:usage_percent].to_i&lt;br /&gt;
      nap_usage_threshold = nap[:usage_threshold].to_i&lt;br /&gt;
      puts &amp;quot;usage status #{nap_usage_status}, treshold#{nap_usage_threshold}&amp;quot;&lt;br /&gt;
      if nap_usage_status &amp;gt; nap_usage_threshold&lt;br /&gt;
        puts &amp;quot;Nap usage of &#039;#{route[:remapped_nap]}&#039; is higher then threshold &#039;#{nap_usage_status}&#039; &amp;quot;&lt;br /&gt;
        return false&lt;br /&gt;
      end&lt;br /&gt;
  &lt;br /&gt;
      true&lt;br /&gt;
  &lt;br /&gt;
    end&lt;br /&gt;
  &lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  @@routing = MatchProcMethodTutorial.new&lt;br /&gt;
  &lt;br /&gt;
  def init_routes( routes )&lt;br /&gt;
    @@routing.init routes&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def route( call, nap_list )&lt;br /&gt;
    @@routing.route call, nap_list&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== :method and :proc output ====&lt;br /&gt;
The gateway application queries every second the status and keep it available for routing script (due to the synchronous nature of the status query, it is preferable to have another thread polling the status than querying the status for each call). &lt;br /&gt;
&lt;br /&gt;
The script uses 2 status available (:asr_statistics_struct_last_24h_asr_percent and :asr_threshold in the naps) in the naps, for a complete list of the status available go [[Routing_script_tutorial:Mini_Development_Guide#Nap status|here]] in the NAP_STATS_FIELDS define. &lt;br /&gt;
&lt;br /&gt;
If you check the NAP_STATS_FIELDS define, you will see that :asr_statistics_struct_last_24h_asr_percent is the combination of 2 field names asr_statistics_struct and last_24h_asr_percent.&lt;br /&gt;
&lt;br /&gt;
You might have noticed that the block in the proc function did not use the return keyword, it is a rule from ruby where you cannot use the return keyword in a block.&lt;br /&gt;
&lt;br /&gt;
Here is the output:&lt;br /&gt;
  Call Params:&lt;br /&gt;
    Reason:        ok&lt;br /&gt;
    Called:        5550002&lt;br /&gt;
    Calling:       5550000&lt;br /&gt;
    Nap:           isdn&lt;br /&gt;
  Matched route:&lt;br /&gt;
    Remapped calling:    &lt;br /&gt;
    Called:        1110000&lt;br /&gt;
    Calling:       5550000&lt;br /&gt;
    Remapped       called:    &lt;br /&gt;
    Priority:      4&lt;br /&gt;
    Remapped nap:  sip&lt;br /&gt;
    Nap:           isdn&lt;br /&gt;
  &lt;br /&gt;
  Output: OUT: usage remapped nap sip&lt;br /&gt;
  OUT:&lt;br /&gt;
  OUT: usage status 85, treshold92&lt;br /&gt;
  OUT:&lt;br /&gt;
  OUT: usage remapped nap sip&lt;br /&gt;
  OUT:&lt;br /&gt;
  OUT: asr status 60, treshold52&lt;br /&gt;
  OUT:&lt;br /&gt;
  OUT: Nap attribute must be remapped&lt;br /&gt;
  OUT:&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Back to [[Routing_script_tutorial|Routing Script Tutorial]].&lt;/div&gt;</summary>
		<author><name>10.0.0.157</name></author>
	</entry>
	<entry>
		<id>https://docs.telcobridges.com/w/index.php?title=Routing_script_tutorial:Mini_Development_Guide&amp;diff=567</id>
		<title>Routing script tutorial:Mini Development Guide</title>
		<link rel="alternate" type="text/html" href="https://docs.telcobridges.com/w/index.php?title=Routing_script_tutorial:Mini_Development_Guide&amp;diff=567"/>
		<updated>2009-05-20T15:43:48Z</updated>

		<summary type="html">&lt;p&gt;10.0.0.157: /* Nap statuses */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Call parameters ==&lt;br /&gt;
&lt;br /&gt;
=== Accept ===&lt;br /&gt;
The following call parameters are available in the call object:&lt;br /&gt;
* calling&lt;br /&gt;
* calling_noa&lt;br /&gt;
* calling_npi&lt;br /&gt;
* called&lt;br /&gt;
* called_noa&lt;br /&gt;
* called_npi&lt;br /&gt;
* nap&lt;br /&gt;
&lt;br /&gt;
They can all be remapped if they are given to the accept method of the call object.&lt;br /&gt;
&lt;br /&gt;
=== Refuse ===&lt;br /&gt;
The following call parameters may be set in the refuse method of the call object:&lt;br /&gt;
* reason&lt;br /&gt;
Currently the only supported value is &amp;quot;no_route&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Route parameters ==&lt;br /&gt;
All route may have these parameters:&lt;br /&gt;
* calling&lt;br /&gt;
* called&lt;br /&gt;
* nap&lt;br /&gt;
* remapped_calling&lt;br /&gt;
* remapped_called&lt;br /&gt;
* remapped_nap&lt;br /&gt;
* remapped_profile&lt;br /&gt;
&lt;br /&gt;
Additionnaly it is possible to add dynamic route attributes in the web portal. These can be referenced by their name.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Nap status ==&lt;br /&gt;
All the status fields of the NAPs are provided for use by the routing scripts. See the nap status provider for more details on which fields are available in the CEngineStatTransNap.hpp file.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notice:&#039;&#039;&#039; These values may change between major release.&lt;br /&gt;
  #define NAP_STATS_FIELDS \&lt;br /&gt;
    /* Field,                                 szName,                            szDescription,                                        szOptions */ \&lt;br /&gt;
    ( SIGNALING_TYPE,                         &amp;quot;signaling_type&amp;quot;,                  &amp;quot;Signaling type.&amp;quot;,                                    &amp;quot;&amp;quot; ) \&lt;br /&gt;
    ( INCOMING_CALL_CNT,                      &amp;quot;inst_incoming_call_cnt&amp;quot;,          &amp;quot;Instantaneous Count of incoming calls.&amp;quot;,             &amp;quot;&amp;quot; ) \&lt;br /&gt;
    ( OUTGOING_CALL_CNT,                      &amp;quot;inst_outgoing_call_cnt&amp;quot;,          &amp;quot;Instantaneous Count of outgoing calls.&amp;quot;,             &amp;quot;&amp;quot; ) \&lt;br /&gt;
    ( AVAILABLE_CNT,                          &amp;quot;available_cnt&amp;quot;,                   &amp;quot;Number of available circuits or channels.&amp;quot;,          &amp;quot;&amp;quot; ) \&lt;br /&gt;
    ( UNAVAILABLE_CNT,                        &amp;quot;unavailable_cnt&amp;quot;,                 &amp;quot;Number of unavailable circuits or channels.&amp;quot;,        &amp;quot;&amp;quot; ) \&lt;br /&gt;
    ( AVAILABILITY_PCT,                       &amp;quot;availability_percent&amp;quot;,            &amp;quot;Percentage of available circuits or channels.&amp;quot;,      &amp;quot;&amp;quot; ) \&lt;br /&gt;
    ( USAGE_PCT,                              &amp;quot;usage_percent&amp;quot;,                   &amp;quot;Percentage of used circuits or channels.&amp;quot;,           &amp;quot;&amp;quot; ) \&lt;br /&gt;
    ( TOTAL_INCOMING_CALL_CNT,                &amp;quot;total_incoming_call_cnt&amp;quot;,         &amp;quot;Total Count of incoming calls.&amp;quot;,                     &amp;quot;&amp;quot; ) \&lt;br /&gt;
    ( ASR_STRUCT,                             &amp;quot;asr_statistics_struct&amp;quot;,           &amp;quot;Detailed Answer-Seizure Rate Statistics.&amp;quot;,           &amp;quot;&amp;quot; ) \&lt;br /&gt;
      ( GLOBAL_ASR_PCT,                       &amp;quot;global_asr_percent&amp;quot;,              &amp;quot;Global calculated ASR percentage.&amp;quot;,                  &amp;quot;&amp;quot; ) \&lt;br /&gt;
      ( TOTAL_OUTGOING_CALL_CNT,              &amp;quot;total_outgoing_call_cnt&amp;quot;,         &amp;quot;Total Count of outgoing calls.&amp;quot;,                     &amp;quot;&amp;quot; ) \&lt;br /&gt;
      ( LAST_24H_ASR_PCT,                     &amp;quot;last_24h_asr_percent&amp;quot;,            &amp;quot;Last 24 hours calculated ASR percentage.&amp;quot;,           &amp;quot;&amp;quot; ) \&lt;br /&gt;
      ( LAST_24H_OUTGOING_CALL_CNT,           &amp;quot;last_24h_outgoing_call_cnt&amp;quot;,      &amp;quot;Last 24 hours outgoing calls.&amp;quot;,                      &amp;quot;&amp;quot; ) \&lt;br /&gt;
      ( HOUR_ASR_PCT,                         &amp;quot;current_hour_asr_percent&amp;quot;,        &amp;quot;Current hour calculated ASR percentage.&amp;quot;,            &amp;quot;&amp;quot; ) \&lt;br /&gt;
      ( HOUR_OUTGOING_CALL_CNT,               &amp;quot;current_hour_outgoing_call_cnt&amp;quot;,  &amp;quot;Current hour outgoing calls.&amp;quot;,                       &amp;quot;&amp;quot; ) \&lt;br /&gt;
      ( LAST_HOUR_ASR_PCT,                    &amp;quot;last_hour_asr_percent&amp;quot;,           &amp;quot;Last hour calculated ASR percentage.&amp;quot;,               &amp;quot;&amp;quot; ) \&lt;br /&gt;
       ( LAST_HOUR_OUTGOING_CALL_CNT,         &amp;quot;last_hour_outgoing_call_cnt&amp;quot;,     &amp;quot;Last hour outgoing calls.&amp;quot;,                          &amp;quot;&amp;quot; ) \&lt;br /&gt;
    ( AVAILABILITY_DETECTION_STRUCT,          &amp;quot;availability_detection_struct&amp;quot;,   &amp;quot;Detailed availibility detection Statistics&amp;quot;,         &amp;quot;&amp;quot; ) \&lt;br /&gt;
      ( POLL_REMOTE_PROXY,                    &amp;quot;poll_remote_proxy&amp;quot;,               &amp;quot;Remote proxy polling enabled&amp;quot;,                       &amp;quot;&amp;quot; ) \&lt;br /&gt;
      ( TIME_SINCE_POLLING,                   &amp;quot;time_since_polling&amp;quot;,              &amp;quot;Time since the last availibility polling&amp;quot;,           &amp;quot;&amp;quot; ) \&lt;br /&gt;
      ( TIME_AVAILABLE,                       &amp;quot;time_available&amp;quot;,                  &amp;quot;Formated Time since the NAP is available&amp;quot;,           &amp;quot;&amp;quot; ) \&lt;br /&gt;
      ( TIME_AVAILABLE_SECONDS,               &amp;quot;time_available_seconds&amp;quot;,          &amp;quot;Number of seconds since the NAP is available&amp;quot;,       &amp;quot;x&amp;quot; ) \&lt;br /&gt;
      ( TIME_UNAVAILABLE,                     &amp;quot;time_unavailable&amp;quot;,                &amp;quot;Time since the NAP is unavailable&amp;quot;,                  &amp;quot;&amp;quot; ) \&lt;br /&gt;
      ( TIME_UNAVAILABLE_SECONDS,             &amp;quot;time_unavailable_seconds&amp;quot;,        &amp;quot;Number of seconds since the NAP is unavailable&amp;quot;,     &amp;quot;x&amp;quot; ) \&lt;br /&gt;
    ( REGISTRATION_STRUCT,                    &amp;quot;registration_struct&amp;quot;,             &amp;quot;Detailed registration Statistics&amp;quot;,                   &amp;quot;&amp;quot; ) \&lt;br /&gt;
      ( REGISTER_TO_PROXY,                    &amp;quot;register_to_proxy&amp;quot;,               &amp;quot;Register to proxy enabled&amp;quot;,                          &amp;quot;&amp;quot; ) \&lt;br /&gt;
      ( IS_REGISTERED,                        &amp;quot;registered&amp;quot;,                      &amp;quot;Is registered&amp;quot;,                                      &amp;quot;&amp;quot; ) \&lt;br /&gt;
      ( TIME_SINCE_REFRESH,                   &amp;quot;time_since_refresh&amp;quot;,              &amp;quot;Time since the last refresh&amp;quot;,                        &amp;quot;&amp;quot; ) \&lt;br /&gt;
      ( TIME_REGISTERED,                      &amp;quot;time_registered&amp;quot;,                 &amp;quot;Formated Time since the NAP is registered&amp;quot;,          &amp;quot;&amp;quot; ) \&lt;br /&gt;
      ( TIME_REGISTERED_SECONDS,              &amp;quot;time_registered_seconds&amp;quot;,         &amp;quot;Number of seconds since the NAP is registered&amp;quot;,      &amp;quot;x&amp;quot; ) \&lt;br /&gt;
      ( TIME_NOT_REGISTERED,                  &amp;quot;time_not_registered&amp;quot;,             &amp;quot;Formated Time since the NAP is not registered&amp;quot;,      &amp;quot;&amp;quot; ) \&lt;br /&gt;
      ( TIME_NOT_REGISTERED_SECONDS,          &amp;quot;time_not_registered_seconds&amp;quot;,     &amp;quot;Number of seconds since the NAP is not registered&amp;quot;,  &amp;quot;x&amp;quot; ) \&lt;br /&gt;
    /*!&amp;lt; Nap Status Fields */&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If the nap status is part of a substructure, it&#039;s name in the routing scripts must be composed of the structure name appended by an underscore and the field name. &lt;br /&gt;
&lt;br /&gt;
For example the name to use for the global ASR percentage is: &lt;br /&gt;
&lt;br /&gt;
  asr_statistics_struct_global_asr_percent&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It is also possible to add dynamic nap attributes in the web portal. These can be referenced by their name.&lt;br /&gt;
&lt;br /&gt;
== Test parameters ==&lt;br /&gt;
&lt;br /&gt;
=== @call_params ===&lt;br /&gt;
That variable should contain a hash of call parameters that will passed to the routing script. This is equivalent to the incoming call parameters.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== @nap_list ===&lt;br /&gt;
A list of hash containing the nap statuses. This is equivalent to the nap statuses at the time the call is to be routed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The nap list is hashed by the nap names in UPPERCASE.&#039;&#039;&#039; It is important to consider this when creating new dynamic route or nap attributes that may nap names that will be used to fetch a status.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Back to [[Routing_script_tutorial|Routing Script Tutorial]].&lt;/div&gt;</summary>
		<author><name>10.0.0.157</name></author>
	</entry>
	<entry>
		<id>https://docs.telcobridges.com/w/index.php?title=Routing_script_tutorial&amp;diff=566</id>
		<title>Routing script tutorial</title>
		<link rel="alternate" type="text/html" href="https://docs.telcobridges.com/w/index.php?title=Routing_script_tutorial&amp;diff=566"/>
		<updated>2009-05-20T15:42:13Z</updated>

		<summary type="html">&lt;p&gt;10.0.0.157: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
The scripts requires you to define a class that will help you select one of your previously created routes.&lt;br /&gt;
There are 3 mandatory things to define for your script to work:&lt;br /&gt;
&lt;br /&gt;
# Define your new script routing class, which can contain one or many of these methods (route_order,route_match,route_remap)&lt;br /&gt;
# The &#039;init_routes&#039; method&lt;br /&gt;
# The &#039;route&#039; method&lt;br /&gt;
&lt;br /&gt;
For more information about the parameters that can be use within a method, go see the [[Routing_script_tutorial:Mini_Development_Guide|mini development guide]]&lt;br /&gt;
&lt;br /&gt;
== Script routing class ==&lt;br /&gt;
&lt;br /&gt;
The scripting class is use to define on which call/nap parameters the call need to match the route or to remap the call parameter.&lt;br /&gt;
You also need to define all new methods required by your script routing class.&lt;br /&gt;
It is highly recommended to derive your new class for the &#039;base_routing&#039; class, because it give your a lot of functionality.&lt;br /&gt;
&lt;br /&gt;
== What I need to define a script routing class ==&lt;br /&gt;
There are 3 methods that can be use&lt;br /&gt;
# route_order&lt;br /&gt;
# route_match&lt;br /&gt;
# route_remap&lt;br /&gt;
&#039;route_order&#039; will be called before the &#039;route_match&#039; which will all be called before the &#039;route_remap&#039;.&lt;br /&gt;
&lt;br /&gt;
=== &#039;route_order&#039; method ===&lt;br /&gt;
&lt;br /&gt;
&#039;route_order&#039; allows to order routes using one of 3 possible arguments. It is only possible to call &#039;route_order&#039; once.&lt;br /&gt;
# :route_field_name - The field name of the **route** to order with. The value of the route field should be an **integer** so that it can be compared.&lt;br /&gt;
# :proc - A user supplied **proc** to call instead of trying to order internally. It should accept two argument: route list, nap list and return the sorted route list.&lt;br /&gt;
# :method - A user supplied **method** to call instead of trying to order internally. It should accept two argument: route list, nap list and return the sorted route list.&lt;br /&gt;
&lt;br /&gt;
base_routing pre-implemented ordering method:&lt;br /&gt;
* &#039;order_by_asr&#039;, this method will order the routes according to the asr(average success rate). This method requires to add a custom **nap** parameter called &#039;:asr_type&#039;, its value can be: global, last_24h, current_hour, last_hour. It can be use in your custom class like this:&lt;br /&gt;
&lt;br /&gt;
  route_order :method =&amp;gt; :order_by_asr&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== &#039;route_match&#039; method ===&lt;br /&gt;
&lt;br /&gt;
&#039;route_match&#039; allows to match a call to one route using one of 4 possible arguments. It is possible to call &#039;route_match&#039; multiple times to reduce the number of matching routes. Since &#039;route_match&#039; will return the first matching route it find, there is a possibility that there is more than one route match, therefore it is important to order the routes or prioritize them using &#039;route_order&#039;.&lt;br /&gt;
&lt;br /&gt;
# :call_field_name - The field name of the call to try to match&lt;br /&gt;
# :route_field_name - The field name of the route to try to match with. The default is to use the call field name. If the value of the field is empty, the match is considered positive. The value of the route field can be a regular expression. e.g. /555000./&lt;br /&gt;
# :proc - A user supplied proc to call instead of trying to do the match internally. It should accept three argument: route, call, nap list and return a boolean to indicate the match.&lt;br /&gt;
# :method - A user supplied method to call instead of trying to do the match internally. It should accept three argument: route, call, nap list and return a boolean to indicate the match.&lt;br /&gt;
&lt;br /&gt;
base_routing pre-implemented matching method:&lt;br /&gt;
* &#039;match_nap_availability&#039;, this method will verify the availability through the nap status.&lt;br /&gt;
  route_match :method =&amp;gt; :match_nap_availability&lt;br /&gt;
* &#039;match_asr_threshhold&#039;, this method will verify will match any route who&#039;s destination nap has a higher asr than the treshold stored for that nap. This method requires to add 2 custom **nap** parameters called. First is &#039;asr_threshhold_type&#039;, its values can be : global, last_24h, current_hour, last_hour. The second is &#039;asr_threshhold&#039;, its value needs to be an **integer** between 0 and 100.&lt;br /&gt;
  route_match :method =&amp;gt; :match_asr_threshhold&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== &#039;route_remap&#039; method ===&lt;br /&gt;
&lt;br /&gt;
&#039;route_remap&#039; allows to remap the parameter of the route or the call using one of the 4 possible arguments. There are actually 3 type of remapping that can be done. using the :call_field_name/:route_field_name arguments, the :proc argument and/or the :method argument. &lt;br /&gt;
&lt;br /&gt;
# :call_field_name - The field name of the call to remap&lt;br /&gt;
# :route_field_name - The field name of the route to remap with. The default is to use the call field name. If the value of the field is empty, the incoming call&#039;s attribute is used. The value of the route field can be a regular expression remap. e.g. /(555000.)/001\1/&lt;br /&gt;
# :proc - A user supplied proc to call instead of trying to do the remap internally. It should accept four argument: route, call, nap list, remapped fields and return a hash of remapped fields.&lt;br /&gt;
# :method - A user supplied method to call instead of trying to do the match internally. It should accept four argument: route, call, nap list, remapped fields and return a hash of remapped fields.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== &#039;init_routes&#039; method ===&lt;br /&gt;
&lt;br /&gt;
The &#039;init_routes&#039; is a mandatory method that is call every time the script is loaded ( think loading the configuration ).&lt;br /&gt;
This can be use at your advantage to do some pre-processing like ordering your routes, that way the routes will not be re-ordered at every call that comes in.&lt;br /&gt;
&lt;br /&gt;
=== &#039;route&#039; method ===&lt;br /&gt;
&lt;br /&gt;
The &#039;route&#039; is a mandatory method that is call at every call that comes in. This is where you can do the dynamic routing part.&lt;br /&gt;
&lt;br /&gt;
== What else? ==&lt;br /&gt;
&lt;br /&gt;
There are numerous possibilities:&lt;br /&gt;
* Add new methods for route selection.&lt;br /&gt;
* Add new columns in the nap or route.&lt;br /&gt;
* Create scripts that includes other scripts to help make the routing more modular.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Examples and tutorials ===&lt;br /&gt;
&lt;br /&gt;
* [[Routing_script_tutorial:Routing_Class_Tutorial|script routing class tutorial]]&lt;br /&gt;
* [[Routing_script_tutorial:route_order_Tutorial|&#039;route_order&#039; tutorial]].&lt;br /&gt;
* [[Routing_script_tutorial:route_match_Tutorial|&#039;route_match&#039; tutorial]].&lt;br /&gt;
* [[Routing_script_tutorial:route_remap_Tutorial|&#039;route_remap&#039; tutorial]].&lt;br /&gt;
* pre-made routing script are also available through the web portal in the script routing menu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Back to the [[Scriptable_Routing_Engine|Scriptable Routing Engine]] page.&lt;/div&gt;</summary>
		<author><name>10.0.0.157</name></author>
	</entry>
	<entry>
		<id>https://docs.telcobridges.com/w/index.php?title=Routing_script_tutorial:Mini_Development_Guide&amp;diff=565</id>
		<title>Routing script tutorial:Mini Development Guide</title>
		<link rel="alternate" type="text/html" href="https://docs.telcobridges.com/w/index.php?title=Routing_script_tutorial:Mini_Development_Guide&amp;diff=565"/>
		<updated>2009-05-20T15:41:34Z</updated>

		<summary type="html">&lt;p&gt;10.0.0.157: New page: == Call parameters ==  === Accept === The following call parameters are available in the call object: * calling * calling_noa * calling_npi * called * called_noa * called_npi * nap  They c...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Call parameters ==&lt;br /&gt;
&lt;br /&gt;
=== Accept ===&lt;br /&gt;
The following call parameters are available in the call object:&lt;br /&gt;
* calling&lt;br /&gt;
* calling_noa&lt;br /&gt;
* calling_npi&lt;br /&gt;
* called&lt;br /&gt;
* called_noa&lt;br /&gt;
* called_npi&lt;br /&gt;
* nap&lt;br /&gt;
&lt;br /&gt;
They can all be remapped if they are given to the accept method of the call object.&lt;br /&gt;
&lt;br /&gt;
=== Refuse ===&lt;br /&gt;
The following call parameters may be set in the refuse method of the call object:&lt;br /&gt;
* reason&lt;br /&gt;
Currently the only supported value is &amp;quot;no_route&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Route parameters ==&lt;br /&gt;
All route may have these parameters:&lt;br /&gt;
* calling&lt;br /&gt;
* called&lt;br /&gt;
* nap&lt;br /&gt;
* remapped_calling&lt;br /&gt;
* remapped_called&lt;br /&gt;
* remapped_nap&lt;br /&gt;
* remapped_profile&lt;br /&gt;
&lt;br /&gt;
Additionnaly it is possible to add dynamic route attributes in the web portal. These can be referenced by their name.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Nap statuses ==&lt;br /&gt;
All the status fields of the NAPs are provided for use by the routing scripts. See the nap status provider for more details on which fields are available in the CEngineStatTransNap.hpp file.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notice:&#039;&#039;&#039; These values may change between major release.&lt;br /&gt;
  #define NAP_STATS_FIELDS \&lt;br /&gt;
    /* Field,                                 szName,                            szDescription,                                        szOptions */ \&lt;br /&gt;
    ( SIGNALING_TYPE,                         &amp;quot;signaling_type&amp;quot;,                  &amp;quot;Signaling type.&amp;quot;,                                    &amp;quot;&amp;quot; ) \&lt;br /&gt;
    ( INCOMING_CALL_CNT,                      &amp;quot;inst_incoming_call_cnt&amp;quot;,          &amp;quot;Instantaneous Count of incoming calls.&amp;quot;,             &amp;quot;&amp;quot; ) \&lt;br /&gt;
    ( OUTGOING_CALL_CNT,                      &amp;quot;inst_outgoing_call_cnt&amp;quot;,          &amp;quot;Instantaneous Count of outgoing calls.&amp;quot;,             &amp;quot;&amp;quot; ) \&lt;br /&gt;
    ( AVAILABLE_CNT,                          &amp;quot;available_cnt&amp;quot;,                   &amp;quot;Number of available circuits or channels.&amp;quot;,          &amp;quot;&amp;quot; ) \&lt;br /&gt;
    ( UNAVAILABLE_CNT,                        &amp;quot;unavailable_cnt&amp;quot;,                 &amp;quot;Number of unavailable circuits or channels.&amp;quot;,        &amp;quot;&amp;quot; ) \&lt;br /&gt;
    ( AVAILABILITY_PCT,                       &amp;quot;availability_percent&amp;quot;,            &amp;quot;Percentage of available circuits or channels.&amp;quot;,      &amp;quot;&amp;quot; ) \&lt;br /&gt;
    ( USAGE_PCT,                              &amp;quot;usage_percent&amp;quot;,                   &amp;quot;Percentage of used circuits or channels.&amp;quot;,           &amp;quot;&amp;quot; ) \&lt;br /&gt;
    ( TOTAL_INCOMING_CALL_CNT,                &amp;quot;total_incoming_call_cnt&amp;quot;,         &amp;quot;Total Count of incoming calls.&amp;quot;,                     &amp;quot;&amp;quot; ) \&lt;br /&gt;
    ( ASR_STRUCT,                             &amp;quot;asr_statistics_struct&amp;quot;,           &amp;quot;Detailed Answer-Seizure Rate Statistics.&amp;quot;,           &amp;quot;&amp;quot; ) \&lt;br /&gt;
      ( GLOBAL_ASR_PCT,                       &amp;quot;global_asr_percent&amp;quot;,              &amp;quot;Global calculated ASR percentage.&amp;quot;,                  &amp;quot;&amp;quot; ) \&lt;br /&gt;
      ( TOTAL_OUTGOING_CALL_CNT,              &amp;quot;total_outgoing_call_cnt&amp;quot;,         &amp;quot;Total Count of outgoing calls.&amp;quot;,                     &amp;quot;&amp;quot; ) \&lt;br /&gt;
      ( LAST_24H_ASR_PCT,                     &amp;quot;last_24h_asr_percent&amp;quot;,            &amp;quot;Last 24 hours calculated ASR percentage.&amp;quot;,           &amp;quot;&amp;quot; ) \&lt;br /&gt;
      ( LAST_24H_OUTGOING_CALL_CNT,           &amp;quot;last_24h_outgoing_call_cnt&amp;quot;,      &amp;quot;Last 24 hours outgoing calls.&amp;quot;,                      &amp;quot;&amp;quot; ) \&lt;br /&gt;
      ( HOUR_ASR_PCT,                         &amp;quot;current_hour_asr_percent&amp;quot;,        &amp;quot;Current hour calculated ASR percentage.&amp;quot;,            &amp;quot;&amp;quot; ) \&lt;br /&gt;
      ( HOUR_OUTGOING_CALL_CNT,               &amp;quot;current_hour_outgoing_call_cnt&amp;quot;,  &amp;quot;Current hour outgoing calls.&amp;quot;,                       &amp;quot;&amp;quot; ) \&lt;br /&gt;
      ( LAST_HOUR_ASR_PCT,                    &amp;quot;last_hour_asr_percent&amp;quot;,           &amp;quot;Last hour calculated ASR percentage.&amp;quot;,               &amp;quot;&amp;quot; ) \&lt;br /&gt;
       ( LAST_HOUR_OUTGOING_CALL_CNT,         &amp;quot;last_hour_outgoing_call_cnt&amp;quot;,     &amp;quot;Last hour outgoing calls.&amp;quot;,                          &amp;quot;&amp;quot; ) \&lt;br /&gt;
    ( AVAILABILITY_DETECTION_STRUCT,          &amp;quot;availability_detection_struct&amp;quot;,   &amp;quot;Detailed availibility detection Statistics&amp;quot;,         &amp;quot;&amp;quot; ) \&lt;br /&gt;
      ( POLL_REMOTE_PROXY,                    &amp;quot;poll_remote_proxy&amp;quot;,               &amp;quot;Remote proxy polling enabled&amp;quot;,                       &amp;quot;&amp;quot; ) \&lt;br /&gt;
      ( TIME_SINCE_POLLING,                   &amp;quot;time_since_polling&amp;quot;,              &amp;quot;Time since the last availibility polling&amp;quot;,           &amp;quot;&amp;quot; ) \&lt;br /&gt;
      ( TIME_AVAILABLE,                       &amp;quot;time_available&amp;quot;,                  &amp;quot;Formated Time since the NAP is available&amp;quot;,           &amp;quot;&amp;quot; ) \&lt;br /&gt;
      ( TIME_AVAILABLE_SECONDS,               &amp;quot;time_available_seconds&amp;quot;,          &amp;quot;Number of seconds since the NAP is available&amp;quot;,       &amp;quot;x&amp;quot; ) \&lt;br /&gt;
      ( TIME_UNAVAILABLE,                     &amp;quot;time_unavailable&amp;quot;,                &amp;quot;Time since the NAP is unavailable&amp;quot;,                  &amp;quot;&amp;quot; ) \&lt;br /&gt;
      ( TIME_UNAVAILABLE_SECONDS,             &amp;quot;time_unavailable_seconds&amp;quot;,        &amp;quot;Number of seconds since the NAP is unavailable&amp;quot;,     &amp;quot;x&amp;quot; ) \&lt;br /&gt;
    ( REGISTRATION_STRUCT,                    &amp;quot;registration_struct&amp;quot;,             &amp;quot;Detailed registration Statistics&amp;quot;,                   &amp;quot;&amp;quot; ) \&lt;br /&gt;
      ( REGISTER_TO_PROXY,                    &amp;quot;register_to_proxy&amp;quot;,               &amp;quot;Register to proxy enabled&amp;quot;,                          &amp;quot;&amp;quot; ) \&lt;br /&gt;
      ( IS_REGISTERED,                        &amp;quot;registered&amp;quot;,                      &amp;quot;Is registered&amp;quot;,                                      &amp;quot;&amp;quot; ) \&lt;br /&gt;
      ( TIME_SINCE_REFRESH,                   &amp;quot;time_since_refresh&amp;quot;,              &amp;quot;Time since the last refresh&amp;quot;,                        &amp;quot;&amp;quot; ) \&lt;br /&gt;
      ( TIME_REGISTERED,                      &amp;quot;time_registered&amp;quot;,                 &amp;quot;Formated Time since the NAP is registered&amp;quot;,          &amp;quot;&amp;quot; ) \&lt;br /&gt;
      ( TIME_REGISTERED_SECONDS,              &amp;quot;time_registered_seconds&amp;quot;,         &amp;quot;Number of seconds since the NAP is registered&amp;quot;,      &amp;quot;x&amp;quot; ) \&lt;br /&gt;
      ( TIME_NOT_REGISTERED,                  &amp;quot;time_not_registered&amp;quot;,             &amp;quot;Formated Time since the NAP is not registered&amp;quot;,      &amp;quot;&amp;quot; ) \&lt;br /&gt;
      ( TIME_NOT_REGISTERED_SECONDS,          &amp;quot;time_not_registered_seconds&amp;quot;,     &amp;quot;Number of seconds since the NAP is not registered&amp;quot;,  &amp;quot;x&amp;quot; ) \&lt;br /&gt;
    /*!&amp;lt; Nap Status Fields */&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If the nap status is part of a substructure, it&#039;s name in the routing scripts must be composed of the structure name appended by an underscore and the field name. &lt;br /&gt;
&lt;br /&gt;
For example the name to use for the global ASR percentage is: &lt;br /&gt;
&lt;br /&gt;
  asr_statistics_struct_global_asr_percent&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It is also possible to add dynamic nap attributes in the web portal. These can be referenced by their name.&lt;br /&gt;
&lt;br /&gt;
== Test parameters ==&lt;br /&gt;
&lt;br /&gt;
=== @call_params ===&lt;br /&gt;
That variable should contain a hash of call parameters that will passed to the routing script. This is equivalent to the incoming call parameters.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== @nap_list ===&lt;br /&gt;
A list of hash containing the nap statuses. This is equivalent to the nap statuses at the time the call is to be routed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The nap list is hashed by the nap names in UPPERCASE.&#039;&#039;&#039; It is important to consider this when creating new dynamic route or nap attributes that may nap names that will be used to fetch a status.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Back to [[Routing_script_tutorial|Routing Script Tutorial]].&lt;/div&gt;</summary>
		<author><name>10.0.0.157</name></author>
	</entry>
	<entry>
		<id>https://docs.telcobridges.com/w/index.php?title=Routing_script_tutorial:route_remap_Tutorial&amp;diff=564</id>
		<title>Routing script tutorial:route remap Tutorial</title>
		<link rel="alternate" type="text/html" href="https://docs.telcobridges.com/w/index.php?title=Routing_script_tutorial:route_remap_Tutorial&amp;diff=564"/>
		<updated>2009-05-20T15:21:05Z</updated>

		<summary type="html">&lt;p&gt;10.0.0.157: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== route_remap tutorial ==&lt;br /&gt;
&lt;br /&gt;
&#039;route_remap&#039; is a method implemented in the base_routing and is use to modify call parameters. This tutorial will explain how to use the parameter for the &#039;route_remap&#039; method. &lt;br /&gt;
&lt;br /&gt;
=== route_remap examples ===&lt;br /&gt;
----&lt;br /&gt;
Things to know about these examples:&lt;br /&gt;
* A new field called &#039;priority&#039; needs to be add to the routes.&lt;br /&gt;
* A new field called &#039;asr_threshold&#039; needs to be add to the routes.&lt;br /&gt;
* A new field called &#039;usage_threshold&#039; needs to be add to the routes.&lt;br /&gt;
&lt;br /&gt;
==== route_remap setup ====&lt;br /&gt;
&lt;br /&gt;
Time to take a look how to match route to a call. List of routes use for the example:&lt;br /&gt;
  Calling      Called      NAP      Remapped NAP       Priority&lt;br /&gt;
  5550000     1110000     isdn       sip                4     &lt;br /&gt;
  5550000     2220000     sip        isdn               3     &lt;br /&gt;
  5550000     3330000     sip_p2     isdn_1             2     &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
List of naps:&lt;br /&gt;
  Name       Asr threshold       Usage threshold   &lt;br /&gt;
  isdn         40                 90     &lt;br /&gt;
  sip          52                 92     &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Input used in the test script window:&lt;br /&gt;
  @call_params = {:calling =&amp;gt; &#039;5550000&#039;, :called =&amp;gt; &#039;5550002&#039;, :nap =&amp;gt; &#039;isdn&#039;}&lt;br /&gt;
  @nap_list = [&lt;br /&gt;
    {:name =&amp;gt; &#039;sip&#039;, },&lt;br /&gt;
    {:name =&amp;gt; &#039;isdn&#039; },&lt;br /&gt;
    {:name =&amp;gt; &#039;sip_p3&#039; }&lt;br /&gt;
  ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== route_remap parameter ===&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
The following example is a isdn to sip gateway. This time we will remap the called and the calling number.&lt;br /&gt;
  require &#039;base_routing&#039;&lt;br /&gt;
  &lt;br /&gt;
  class RemapTutorial &amp;lt; BaseRouting&lt;br /&gt;
    route_match :call_field_name =&amp;gt; :nap&lt;br /&gt;
    route_remap :call_field_name =&amp;gt; :called, :route_field_name =&amp;gt; :called&lt;br /&gt;
    route_remap :method =&amp;gt; :remapped_tutorial&lt;br /&gt;
    route_remap :proc =&amp;gt; Proc.new { |route, call, nap_list, remapped_fields|&lt;br /&gt;
  &lt;br /&gt;
      puts &amp;quot;Proc is called&amp;quot;  &lt;br /&gt;
      #remapping calling&lt;br /&gt;
      if remapped_fields[:calling].nil?&lt;br /&gt;
        remap_calling = call.get(:calling)&lt;br /&gt;
        puts &amp;quot;call : #{remap_calling}&amp;quot;&lt;br /&gt;
      else&lt;br /&gt;
        remap_calling = remapped_fields[:calling]&lt;br /&gt;
        puts &amp;quot;remapped : #{remap_calling}&amp;quot;&lt;br /&gt;
      end&lt;br /&gt;
      &lt;br /&gt;
      if( remap_calling == &amp;quot;5550000&amp;quot; )&lt;br /&gt;
        remap_calling = &amp;quot;9871111&amp;quot;&lt;br /&gt;
      elsif ( remap_calling == &amp;quot;7772222&amp;quot;)&lt;br /&gt;
        remap_calling = &amp;quot;6541111&amp;quot;&lt;br /&gt;
      end&lt;br /&gt;
  &lt;br /&gt;
      puts &amp;quot;remap_calling : #{remap_calling}&amp;quot;&lt;br /&gt;
      remapped_fields[:calling] = remap_calling&lt;br /&gt;
      &lt;br /&gt;
      remapped_fields&lt;br /&gt;
    }&lt;br /&gt;
  &lt;br /&gt;
    def remapped_tutorial(route, call, nap_list, remapped_fields)&lt;br /&gt;
  &lt;br /&gt;
      puts &amp;quot;Method is called&amp;quot;  &lt;br /&gt;
      if remapped_fields[:calling].nil?&lt;br /&gt;
        remap_calling = call.get(:calling)&lt;br /&gt;
        puts &amp;quot;call : #{remap_calling}&amp;quot;&lt;br /&gt;
      else&lt;br /&gt;
        remap_calling = remapped_fields[:calling]&lt;br /&gt;
        puts &amp;quot;remapped : #{remap_calling}&amp;quot;&lt;br /&gt;
      end&lt;br /&gt;
      &lt;br /&gt;
      if( remap_calling == &amp;quot;5550000&amp;quot; )&lt;br /&gt;
        remap_calling = &amp;quot;7772222&amp;quot;&lt;br /&gt;
      elsif( remap_calling == &amp;quot;9871111&amp;quot; )&lt;br /&gt;
        remap_calling = &amp;quot;9992222&amp;quot;&lt;br /&gt;
      end&lt;br /&gt;
      &lt;br /&gt;
      puts &amp;quot;remap_calling : #{remap_calling}&amp;quot;&lt;br /&gt;
      remapped_fields[:calling] = remap_calling&lt;br /&gt;
      &lt;br /&gt;
      remapped_fields&lt;br /&gt;
    &lt;br /&gt;
    end&lt;br /&gt;
  &lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  @@routing = RemapTutorial.new&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  def init_routes( routes )&lt;br /&gt;
    @@routing.init routes&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def route( call, nap_list )&lt;br /&gt;
    @@routing.route call, nap_list&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== route_remap script output ====&lt;br /&gt;
&lt;br /&gt;
The called number is remapped by the the :call_field_name / :route_field_name. Like &#039;route_match&#039;, if :call_field_name is used alone the parameter (in this case :called), will be remapped by the same parameter of :route_field_name. The following 2 lines will have the exact same behavior (they both remapped the called number of the call with the called number of the route):&lt;br /&gt;
  route_remap :call_field_name =&amp;gt; :called&lt;br /&gt;
  route_remap :call_field_name =&amp;gt; :called, :route_field_name =&amp;gt; :called&lt;br /&gt;
&lt;br /&gt;
As for the :method and :proc parameters, they both remap the calling number but to different values. &lt;br /&gt;
&lt;br /&gt;
It is important when remapping to always verify the remapped_fields parameter. If some parameters were remapped previously, the changes will be supply in the remapped_fields (4th parameter of your method or proc). The remapping result needs to put in that hash and return in your method or proc. It is possible though that you may want to overwrite the change done previously, in that case use directly the call parameter but of course you will need to order your &#039;route_remap&#039; accordingly. They are executed in the order they are declared.&lt;br /&gt;
&lt;br /&gt;
The actual changes on the call will only be &amp;quot;merged&amp;quot; after all the remapping are done.&lt;br /&gt;
&lt;br /&gt;
Here is the output of the example:&lt;br /&gt;
  Call Params:&lt;br /&gt;
    Reason:        ok&lt;br /&gt;
    Called:        2220000&lt;br /&gt;
    Calling:       6541111&lt;br /&gt;
    Nap:           sip&lt;br /&gt;
  Matched route:&lt;br /&gt;
    Remapped calling:    &lt;br /&gt;
    Called:        2220000&lt;br /&gt;
    Calling:       5550000&lt;br /&gt;
    Remapped called:    &lt;br /&gt;
    Priority:      3&lt;br /&gt;
    Remapped nap:  isdn&lt;br /&gt;
    Nap:           sip&lt;br /&gt;
  Output: OUT: Method is called&lt;br /&gt;
   OUT:&lt;br /&gt;
   OUT: call : 5550000&lt;br /&gt;
   OUT:&lt;br /&gt;
   OUT: remap_calling : 7772222&lt;br /&gt;
   OUT:&lt;br /&gt;
   OUT: Proc is called&lt;br /&gt;
   OUT:&lt;br /&gt;
   OUT: remapped : 7772222&lt;br /&gt;
   OUT:&lt;br /&gt;
   OUT: remap_calling : 6541111&lt;br /&gt;
   OUT:&lt;br /&gt;
   OUT: Nap attribute must be remapped&lt;br /&gt;
   OUT:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Back to [[Routing_script_tutorial|Routing Script Tutorial]].&lt;/div&gt;</summary>
		<author><name>10.0.0.157</name></author>
	</entry>
	<entry>
		<id>https://docs.telcobridges.com/w/index.php?title=Routing_script_tutorial:route_remap_Tutorial&amp;diff=563</id>
		<title>Routing script tutorial:route remap Tutorial</title>
		<link rel="alternate" type="text/html" href="https://docs.telcobridges.com/w/index.php?title=Routing_script_tutorial:route_remap_Tutorial&amp;diff=563"/>
		<updated>2009-05-20T15:20:47Z</updated>

		<summary type="html">&lt;p&gt;10.0.0.157: New page: == route_remap tutorial ==  &amp;#039;route_remap&amp;#039; is a method implemented in the base_routing and is use to modify call parameters. This tutorial will explain how to use the parameter for the &amp;#039;rou...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== route_remap tutorial ==&lt;br /&gt;
&lt;br /&gt;
&#039;route_remap&#039; is a method implemented in the base_routing and is use to modify call parameters. This tutorial will explain how to use the parameter for the &#039;route_remap&#039; method. &lt;br /&gt;
&lt;br /&gt;
=== route_remap examples ===&lt;br /&gt;
Things to know about these examples:&lt;br /&gt;
* A new field called &#039;priority&#039; needs to be add to the routes.&lt;br /&gt;
* A new field called &#039;asr_threshold&#039; needs to be add to the routes.&lt;br /&gt;
* A new field called &#039;usage_threshold&#039; needs to be add to the routes.&lt;br /&gt;
&lt;br /&gt;
==== route_remap setup ====&lt;br /&gt;
&lt;br /&gt;
Time to take a look how to match route to a call. List of routes use for the example:&lt;br /&gt;
  Calling      Called      NAP      Remapped NAP       Priority&lt;br /&gt;
  5550000     1110000     isdn       sip                4     &lt;br /&gt;
  5550000     2220000     sip        isdn               3     &lt;br /&gt;
  5550000     3330000     sip_p2     isdn_1             2     &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
List of naps:&lt;br /&gt;
  Name       Asr threshold       Usage threshold   &lt;br /&gt;
  isdn         40                 90     &lt;br /&gt;
  sip          52                 92     &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Input used in the test script window:&lt;br /&gt;
  @call_params = {:calling =&amp;gt; &#039;5550000&#039;, :called =&amp;gt; &#039;5550002&#039;, :nap =&amp;gt; &#039;isdn&#039;}&lt;br /&gt;
  @nap_list = [&lt;br /&gt;
    {:name =&amp;gt; &#039;sip&#039;, },&lt;br /&gt;
    {:name =&amp;gt; &#039;isdn&#039; },&lt;br /&gt;
    {:name =&amp;gt; &#039;sip_p3&#039; }&lt;br /&gt;
  ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== route_remap parameter ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following example is a isdn to sip gateway. This time we will remap the called and the calling number.&lt;br /&gt;
  require &#039;base_routing&#039;&lt;br /&gt;
  &lt;br /&gt;
  class RemapTutorial &amp;lt; BaseRouting&lt;br /&gt;
    route_match :call_field_name =&amp;gt; :nap&lt;br /&gt;
    route_remap :call_field_name =&amp;gt; :called, :route_field_name =&amp;gt; :called&lt;br /&gt;
    route_remap :method =&amp;gt; :remapped_tutorial&lt;br /&gt;
    route_remap :proc =&amp;gt; Proc.new { |route, call, nap_list, remapped_fields|&lt;br /&gt;
  &lt;br /&gt;
      puts &amp;quot;Proc is called&amp;quot;  &lt;br /&gt;
      #remapping calling&lt;br /&gt;
      if remapped_fields[:calling].nil?&lt;br /&gt;
        remap_calling = call.get(:calling)&lt;br /&gt;
        puts &amp;quot;call : #{remap_calling}&amp;quot;&lt;br /&gt;
      else&lt;br /&gt;
        remap_calling = remapped_fields[:calling]&lt;br /&gt;
        puts &amp;quot;remapped : #{remap_calling}&amp;quot;&lt;br /&gt;
      end&lt;br /&gt;
      &lt;br /&gt;
      if( remap_calling == &amp;quot;5550000&amp;quot; )&lt;br /&gt;
        remap_calling = &amp;quot;9871111&amp;quot;&lt;br /&gt;
      elsif ( remap_calling == &amp;quot;7772222&amp;quot;)&lt;br /&gt;
        remap_calling = &amp;quot;6541111&amp;quot;&lt;br /&gt;
      end&lt;br /&gt;
  &lt;br /&gt;
      puts &amp;quot;remap_calling : #{remap_calling}&amp;quot;&lt;br /&gt;
      remapped_fields[:calling] = remap_calling&lt;br /&gt;
      &lt;br /&gt;
      remapped_fields&lt;br /&gt;
    }&lt;br /&gt;
  &lt;br /&gt;
    def remapped_tutorial(route, call, nap_list, remapped_fields)&lt;br /&gt;
  &lt;br /&gt;
      puts &amp;quot;Method is called&amp;quot;  &lt;br /&gt;
      if remapped_fields[:calling].nil?&lt;br /&gt;
        remap_calling = call.get(:calling)&lt;br /&gt;
        puts &amp;quot;call : #{remap_calling}&amp;quot;&lt;br /&gt;
      else&lt;br /&gt;
        remap_calling = remapped_fields[:calling]&lt;br /&gt;
        puts &amp;quot;remapped : #{remap_calling}&amp;quot;&lt;br /&gt;
      end&lt;br /&gt;
      &lt;br /&gt;
      if( remap_calling == &amp;quot;5550000&amp;quot; )&lt;br /&gt;
        remap_calling = &amp;quot;7772222&amp;quot;&lt;br /&gt;
      elsif( remap_calling == &amp;quot;9871111&amp;quot; )&lt;br /&gt;
        remap_calling = &amp;quot;9992222&amp;quot;&lt;br /&gt;
      end&lt;br /&gt;
      &lt;br /&gt;
      puts &amp;quot;remap_calling : #{remap_calling}&amp;quot;&lt;br /&gt;
      remapped_fields[:calling] = remap_calling&lt;br /&gt;
      &lt;br /&gt;
      remapped_fields&lt;br /&gt;
    &lt;br /&gt;
    end&lt;br /&gt;
  &lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  @@routing = RemapTutorial.new&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  def init_routes( routes )&lt;br /&gt;
    @@routing.init routes&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def route( call, nap_list )&lt;br /&gt;
    @@routing.route call, nap_list&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== route_remap script output ====&lt;br /&gt;
&lt;br /&gt;
The called number is remapped by the the :call_field_name / :route_field_name. Like &#039;route_match&#039;, if :call_field_name is used alone the parameter (in this case :called), will be remapped by the same parameter of :route_field_name. The following 2 lines will have the exact same behavior (they both remapped the called number of the call with the called number of the route):&lt;br /&gt;
  route_remap :call_field_name =&amp;gt; :called&lt;br /&gt;
  route_remap :call_field_name =&amp;gt; :called, :route_field_name =&amp;gt; :called&lt;br /&gt;
&lt;br /&gt;
As for the :method and :proc parameters, they both remap the calling number but to different values. &lt;br /&gt;
&lt;br /&gt;
It is important when remapping to always verify the remapped_fields parameter. If some parameters were remapped previously, the changes will be supply in the remapped_fields (4th parameter of your method or proc). The remapping result needs to put in that hash and return in your method or proc. It is possible though that you may want to overwrite the change done previously, in that case use directly the call parameter but of course you will need to order your &#039;route_remap&#039; accordingly. They are executed in the order they are declared.&lt;br /&gt;
&lt;br /&gt;
The actual changes on the call will only be &amp;quot;merged&amp;quot; after all the remapping are done.&lt;br /&gt;
&lt;br /&gt;
Here is the output of the example:&lt;br /&gt;
  Call Params:&lt;br /&gt;
    Reason:        ok&lt;br /&gt;
    Called:        2220000&lt;br /&gt;
    Calling:       6541111&lt;br /&gt;
    Nap:           sip&lt;br /&gt;
  Matched route:&lt;br /&gt;
    Remapped calling:    &lt;br /&gt;
    Called:        2220000&lt;br /&gt;
    Calling:       5550000&lt;br /&gt;
    Remapped called:    &lt;br /&gt;
    Priority:      3&lt;br /&gt;
    Remapped nap:  isdn&lt;br /&gt;
    Nap:           sip&lt;br /&gt;
  Output: OUT: Method is called&lt;br /&gt;
   OUT:&lt;br /&gt;
   OUT: call : 5550000&lt;br /&gt;
   OUT:&lt;br /&gt;
   OUT: remap_calling : 7772222&lt;br /&gt;
   OUT:&lt;br /&gt;
   OUT: Proc is called&lt;br /&gt;
   OUT:&lt;br /&gt;
   OUT: remapped : 7772222&lt;br /&gt;
   OUT:&lt;br /&gt;
   OUT: remap_calling : 6541111&lt;br /&gt;
   OUT:&lt;br /&gt;
   OUT: Nap attribute must be remapped&lt;br /&gt;
   OUT:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Back to [[Routing_script_tutorial|Routing Script Tutorial]].&lt;/div&gt;</summary>
		<author><name>10.0.0.157</name></author>
	</entry>
	<entry>
		<id>https://docs.telcobridges.com/w/index.php?title=Routing_script_tutorial&amp;diff=562</id>
		<title>Routing script tutorial</title>
		<link rel="alternate" type="text/html" href="https://docs.telcobridges.com/w/index.php?title=Routing_script_tutorial&amp;diff=562"/>
		<updated>2009-05-20T15:13:12Z</updated>

		<summary type="html">&lt;p&gt;10.0.0.157: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Introduction ==&lt;br /&gt;
The scripts requires you to define a class that will help you select one of your previously created routes.&lt;br /&gt;
There are 3 mandatory things to define for your script to work:&lt;br /&gt;
&lt;br /&gt;
# Define your new script routing class, which can contain one or many of these methods (route_order,route_match,route_remap)&lt;br /&gt;
# The &#039;init_routes&#039; method&lt;br /&gt;
# The &#039;route&#039; method&lt;br /&gt;
&lt;br /&gt;
For more information about the parameters that can be use within a method, go see the [[mini development guide]]&lt;br /&gt;
&lt;br /&gt;
== Script routing class ==&lt;br /&gt;
&lt;br /&gt;
The scripting class is use to define on which call/nap parameters the call need to match the route or to remap the call parameter.&lt;br /&gt;
You also need to define all new methods required by your script routing class.&lt;br /&gt;
It is highly recommended to derive your new class for the &#039;base_routing&#039; class, because it give your a lot of functionality.&lt;br /&gt;
&lt;br /&gt;
== What I need to define a script routing class ==&lt;br /&gt;
There are 3 methods that can be use&lt;br /&gt;
# route_order&lt;br /&gt;
# route_match&lt;br /&gt;
# route_remap&lt;br /&gt;
&#039;route_order&#039; will be called before the &#039;route_match&#039; which will all be called before the &#039;route_remap&#039;.&lt;br /&gt;
&lt;br /&gt;
=== &#039;route_order&#039; method ===&lt;br /&gt;
&lt;br /&gt;
&#039;route_order&#039; allows to order routes using one of 3 possible arguments. It is only possible to call &#039;route_order&#039; once.&lt;br /&gt;
# :route_field_name - The field name of the **route** to order with. The value of the route field should be an **integer** so that it can be compared.&lt;br /&gt;
# :proc - A user supplied **proc** to call instead of trying to order internally. It should accept two argument: route list, nap list and return the sorted route list.&lt;br /&gt;
# :method - A user supplied **method** to call instead of trying to order internally. It should accept two argument: route list, nap list and return the sorted route list.&lt;br /&gt;
&lt;br /&gt;
base_routing pre-implemented ordering method:&lt;br /&gt;
* &#039;order_by_asr&#039;, this method will order the routes according to the asr(average success rate). This method requires to add a custom **nap** parameter called &#039;:asr_type&#039;, its value can be: global, last_24h, current_hour, last_hour. It can be use in your custom class like this:&lt;br /&gt;
&lt;br /&gt;
  route_order :method =&amp;gt; :order_by_asr&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== &#039;route_match&#039; method ===&lt;br /&gt;
&lt;br /&gt;
&#039;route_match&#039; allows to match a call to one route using one of 4 possible arguments. It is possible to call &#039;route_match&#039; multiple times to reduce the number of matching routes. Since &#039;route_match&#039; will return the first matching route it find, there is a possibility that there is more than one route match, therefore it is important to order the routes or prioritize them using &#039;route_order&#039;.&lt;br /&gt;
&lt;br /&gt;
# :call_field_name - The field name of the call to try to match&lt;br /&gt;
# :route_field_name - The field name of the route to try to match with. The default is to use the call field name. If the value of the field is empty, the match is considered positive. The value of the route field can be a regular expression. e.g. /555000./&lt;br /&gt;
# :proc - A user supplied proc to call instead of trying to do the match internally. It should accept three argument: route, call, nap list and return a boolean to indicate the match.&lt;br /&gt;
# :method - A user supplied method to call instead of trying to do the match internally. It should accept three argument: route, call, nap list and return a boolean to indicate the match.&lt;br /&gt;
&lt;br /&gt;
base_routing pre-implemented matching method:&lt;br /&gt;
* &#039;match_nap_availability&#039;, this method will verify the availability through the nap status.&lt;br /&gt;
  route_match :method =&amp;gt; :match_nap_availability&lt;br /&gt;
* &#039;match_asr_threshhold&#039;, this method will verify will match any route who&#039;s destination nap has a higher asr than the treshold stored for that nap. This method requires to add 2 custom **nap** parameters called. First is &#039;asr_threshhold_type&#039;, its values can be : global, last_24h, current_hour, last_hour. The second is &#039;asr_threshhold&#039;, its value needs to be an **integer** between 0 and 100.&lt;br /&gt;
  route_match :method =&amp;gt; :match_asr_threshhold&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== &#039;route_remap&#039; method ===&lt;br /&gt;
&lt;br /&gt;
&#039;route_remap&#039; allows to remap the parameter of the route or the call using one of the 4 possible arguments. There are actually 3 type of remapping that can be done. using the :call_field_name/:route_field_name arguments, the :proc argument and/or the :method argument. &lt;br /&gt;
&lt;br /&gt;
# :call_field_name - The field name of the call to remap&lt;br /&gt;
# :route_field_name - The field name of the route to remap with. The default is to use the call field name. If the value of the field is empty, the incoming call&#039;s attribute is used. The value of the route field can be a regular expression remap. e.g. /(555000.)/001\1/&lt;br /&gt;
# :proc - A user supplied proc to call instead of trying to do the remap internally. It should accept four argument: route, call, nap list, remapped fields and return a hash of remapped fields.&lt;br /&gt;
# :method - A user supplied method to call instead of trying to do the match internally. It should accept four argument: route, call, nap list, remapped fields and return a hash of remapped fields.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== &#039;init_routes&#039; method ===&lt;br /&gt;
&lt;br /&gt;
The &#039;init_routes&#039; is a mandatory method that is call every time the script is loaded ( think loading the configuration ).&lt;br /&gt;
This can be use at your advantage to do some pre-processing like ordering your routes, that way the routes will not be re-ordered at every call that comes in.&lt;br /&gt;
&lt;br /&gt;
=== &#039;route&#039; method ===&lt;br /&gt;
&lt;br /&gt;
The &#039;route&#039; is a mandatory method that is call at every call that comes in. This is where you can do the dynamic routing part.&lt;br /&gt;
&lt;br /&gt;
== What else? ==&lt;br /&gt;
&lt;br /&gt;
There are numerous possibilities:&lt;br /&gt;
* Add new methods for route selection.&lt;br /&gt;
* Add new columns in the nap or route.&lt;br /&gt;
* Create scripts that includes other scripts to help make the routing more modular.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Examples and tutorials ===&lt;br /&gt;
&lt;br /&gt;
* [[Routing_script_tutorial:Routing_Class_Tutorial|script routing class tutorial]]&lt;br /&gt;
* [[Routing_script_tutorial:route_order_Tutorial|&#039;route_order&#039; tutorial]].&lt;br /&gt;
* [[Routing_script_tutorial:route_match_Tutorial|&#039;route_match&#039; tutorial]].&lt;br /&gt;
* [[Routing_script_tutorial:route_remap_Tutorial|&#039;route_remap&#039; tutorial]].&lt;br /&gt;
* pre-made routing script are also available through the web portal in the script routing menu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Back to the [[Scriptable_Routing_Engine|Scriptable Routing Engine]] page.&lt;/div&gt;</summary>
		<author><name>10.0.0.157</name></author>
	</entry>
	<entry>
		<id>https://docs.telcobridges.com/w/index.php?title=Routing_script_tutorial:route_match_Tutorial&amp;diff=561</id>
		<title>Routing script tutorial:route match Tutorial</title>
		<link rel="alternate" type="text/html" href="https://docs.telcobridges.com/w/index.php?title=Routing_script_tutorial:route_match_Tutorial&amp;diff=561"/>
		<updated>2009-05-20T15:11:21Z</updated>

		<summary type="html">&lt;p&gt;10.0.0.157: /* route_match examples */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== route_match tutorial ==&lt;br /&gt;
&lt;br /&gt;
&#039;route_match&#039; is a method implemented in the base_routing and is use to match a route to a call through parameters and/or status. This tutorial will explain how to use the parameter for the &#039;route_match&#039; method. &lt;br /&gt;
&lt;br /&gt;
=== route_match examples ===&lt;br /&gt;
----&lt;br /&gt;
Things to know about these examples:&lt;br /&gt;
* A new field called &#039;priority&#039; needs to be add to the routes.&lt;br /&gt;
* A new field called &#039;asr_threshold&#039; needs to be add to the routes.&lt;br /&gt;
* A new field called &#039;usage_threshold&#039; needs to be add to the routes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== route_match setup ====&lt;br /&gt;
Time to take a look how to match route to a call. List of routes use for the example:&lt;br /&gt;
  Calling      Called      NAP      Remapped NAP       Priority&lt;br /&gt;
  5550000     1110000     isdn       sip                4     &lt;br /&gt;
  5550000     2220000     sip        isdn               3     &lt;br /&gt;
  5550000     3330000     sip_p2     isdn_1             2     &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
List of naps:&lt;br /&gt;
  Name       Asr threshold       Usage threshold   &lt;br /&gt;
  isdn         40                 90     &lt;br /&gt;
  sip          52                 92     &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Input used in the test script window:&lt;br /&gt;
  @call_params = {:calling =&amp;gt; &#039;5550000&#039;, :called =&amp;gt; &#039;5550002&#039;, :nap =&amp;gt; &#039;isdn&#039;}&lt;br /&gt;
  @nap_list = [&lt;br /&gt;
    {:name =&amp;gt; &#039;sip&#039;, },&lt;br /&gt;
    {:name =&amp;gt; &#039;isdn&#039; },&lt;br /&gt;
    {:name =&amp;gt; &#039;sip_p3&#039; }&lt;br /&gt;
  ]&lt;br /&gt;
&lt;br /&gt;
=== :call_field_name and :route_field_name parameter ===&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== :call_field_name and :route_field_name script example ====&lt;br /&gt;
&lt;br /&gt;
Let&#039;s start with the :call_field_name and :route_field_name combo. The first example shows how to use the :call_field_name to match the calling number of the incoming call with the calling number of the route. &lt;br /&gt;
&lt;br /&gt;
It will also try to find a route which has the same remapped nap parameter as the nap parameter of the incoming call, therefore ignoring the nap parameter of the route. &lt;br /&gt;
  require &#039;base_routing&#039;&lt;br /&gt;
  &lt;br /&gt;
  class MatchTutorial &amp;lt; BaseRouting&lt;br /&gt;
    route_match :call_field_name =&amp;gt; :calling&lt;br /&gt;
    route_match :call_field_name =&amp;gt; :calling, :route_field_name =&amp;gt; :calling&lt;br /&gt;
    route_match :call_field_name =&amp;gt; :nap, :route_field_name =&amp;gt; :remapped_nap&lt;br /&gt;
  &lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  @@routing = MatchTutorial.new&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  def init_routes( routes )&lt;br /&gt;
    @@routing.init routes&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def route( call, nap_list )&lt;br /&gt;
    @@routing.route call, nap_list&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== :call_field_name and :route_field_name script output ====&lt;br /&gt;
&lt;br /&gt;
If you look at the first 2 lines of the MatchTutorial class definition:&lt;br /&gt;
  route_match :call_field_name =&amp;gt; :calling&lt;br /&gt;
  route_match :call_field_name =&amp;gt; :calling, :route_field_name =&amp;gt; :calling&lt;br /&gt;
&lt;br /&gt;
Both lines do the exact same thing. The both try to match the calling number of the incoming call with the calling number of the routing call. &lt;br /&gt;
&lt;br /&gt;
By default the if the :route_field_name is not explicitly declared, route_match will try to match the parameter from the :call_field_name to the same parameter in the route (in this case :calling). It is also important to notice that the :route_field_name parameter cannot be use without a :call_field_name parameter first.&lt;br /&gt;
&lt;br /&gt;
It is also important to notice that the called number, the nap and the priority in the routes were ignored by our match rules.&lt;br /&gt;
&lt;br /&gt;
The script will find a match. Here is the output:&lt;br /&gt;
  Call Params:&lt;br /&gt;
    Reason:        ok&lt;br /&gt;
    Called:        5550002&lt;br /&gt;
    Calling:       5550000&lt;br /&gt;
    Nap:           isdn&lt;br /&gt;
  Matched route:&lt;br /&gt;
    Remapped calling:    &lt;br /&gt;
    Called:        2220000&lt;br /&gt;
    Calling:       5550000&lt;br /&gt;
    Remapped called:    &lt;br /&gt;
    Priority:      3&lt;br /&gt;
    Remapped nap:  isdn&lt;br /&gt;
    Nap:           sip&lt;br /&gt;
  Output: OUT: Nap attribute must be remapped&lt;br /&gt;
  OUT: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== :method and :proc parameter ===&lt;br /&gt;
----&lt;br /&gt;
Let&#039;s try the :method and :proc. The next example is a isdn-sip gateway. &lt;br /&gt;
&lt;br /&gt;
It uses the one of the method contain in base_routing (:match_nap_availability), it will compare the :asr_statistics_struct_last_24h_asr_percent nap status with the :asr_threshold in the naps, and will also compare the :usage_percent nap status with the :usage_threshold. &lt;br /&gt;
&lt;br /&gt;
The threshold and the status in this example were set so that a sip to isdn call will be dropped, but a isdn to sip call will be accepted.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== :method and :proc input ====&lt;br /&gt;
It is possible to set the nap status values in the test windows. Here is the input in the test window:&lt;br /&gt;
  @call_params = {:calling =&amp;gt; &#039;5550000&#039;, :called =&amp;gt; &#039;5550002&#039;, :nap =&amp;gt; &#039;isdn&#039;}&lt;br /&gt;
  @nap_list = [&lt;br /&gt;
    {:name =&amp;gt; &#039;sip&#039;, :availability_percent =&amp;gt; &#039;100&#039;, :asr_statistics_struct_last_24h_asr_percent =&amp;gt; &#039;60&#039;, :usage_percent =&amp;gt; &#039;85&#039;  },&lt;br /&gt;
    {:name =&amp;gt; &#039;isdn&#039;, :availability_percent =&amp;gt; &#039;100&#039;, :asr_statistics_struct_last_24h_asr_percent =&amp;gt; &#039;40&#039;, :usage_percent =&amp;gt; &#039;100&#039; },&lt;br /&gt;
    {:name =&amp;gt; &#039;sip_p3&#039;, :availability_percent =&amp;gt; &#039;0&#039;, :asr_statistics_struct_last_24h_asr_percent =&amp;gt; &#039;10&#039;, :usage_percent =&amp;gt; &#039;90&#039; }&lt;br /&gt;
  ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== :method and :proc script example ====&lt;br /&gt;
  require &#039;base_routing&#039;&lt;br /&gt;
  &lt;br /&gt;
  #&lt;br /&gt;
  #  This class requires that your add columns in the nap called asr_threshold and usage_threshold&lt;br /&gt;
  #&lt;br /&gt;
  class MatchProcMethodTutorial &amp;lt; BaseRouting&lt;br /&gt;
    route_match :call_field_name =&amp;gt; :nap&lt;br /&gt;
    route_match :method =&amp;gt; :match_nap_availability&lt;br /&gt;
    route_match :method =&amp;gt; :match_nap_available_call&lt;br /&gt;
    route_match :proc =&amp;gt; Proc.new { |route, call, nap_list|&lt;br /&gt;
      result = true&lt;br /&gt;
      #get the outgoing nap&lt;br /&gt;
      nap=nap_list[route[:remapped_nap].intern]&lt;br /&gt;
      puts &amp;quot;usage remapped nap #{nap[:name]}&amp;quot;&lt;br /&gt;
      if nap.nil?&lt;br /&gt;
        puts &amp;quot;Cannot found route with outgoing nap &#039;#{route[:remapped_nap]}&#039;&amp;quot;&lt;br /&gt;
        result = false&lt;br /&gt;
      end&lt;br /&gt;
  &lt;br /&gt;
      #get the last 24hrs asr&lt;br /&gt;
      asr_24hrs_status = nap[:asr_statistics_struct_last_24h_asr_percent].to_i&lt;br /&gt;
      asr_24hrs_threshold = nap[:asr_threshold].to_i&lt;br /&gt;
      puts &amp;quot;asr status #{asr_24hrs_status}, treshold#{asr_24hrs_threshold}&amp;quot;&lt;br /&gt;
      if asr_24hrs_status &amp;lt; asr_24hrs_threshold&lt;br /&gt;
        puts &amp;quot;Insufficient ASR in the last 24hrs for nap &#039;#{route[:remapped_nap]}&#039;&amp;quot;&lt;br /&gt;
         result = false&lt;br /&gt;
      end&lt;br /&gt;
      &lt;br /&gt;
      result&lt;br /&gt;
    }&lt;br /&gt;
  &lt;br /&gt;
    def match_nap_available_call(route, call, nap_list)&lt;br /&gt;
      #get the outgoing nap&lt;br /&gt;
      nap=nap_list[route[:remapped_nap].intern]&lt;br /&gt;
      puts &amp;quot;usage remapped nap #{nap[:name]}&amp;quot;&lt;br /&gt;
      if nap.nil?&lt;br /&gt;
        puts &amp;quot;Cannot found route with outgoing nap &#039;#{route[:remapped_nap]}&#039;&amp;quot;&lt;br /&gt;
        return false&lt;br /&gt;
      end&lt;br /&gt;
      &lt;br /&gt;
      # verify how many calls are available in the nap&lt;br /&gt;
      nap_usage_status = nap[:usage_percent].to_i&lt;br /&gt;
      nap_usage_threshold = nap[:usage_threshold].to_i&lt;br /&gt;
      puts &amp;quot;usage status #{nap_usage_status}, treshold#{nap_usage_threshold}&amp;quot;&lt;br /&gt;
      if nap_usage_status &amp;gt; nap_usage_threshold&lt;br /&gt;
        puts &amp;quot;Nap usage of &#039;#{route[:remapped_nap]}&#039; is higher then threshold &#039;#{nap_usage_status}&#039; &amp;quot;&lt;br /&gt;
        return false&lt;br /&gt;
      end&lt;br /&gt;
  &lt;br /&gt;
      true&lt;br /&gt;
  &lt;br /&gt;
    end&lt;br /&gt;
  &lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  @@routing = MatchProcMethodTutorial.new&lt;br /&gt;
  &lt;br /&gt;
  def init_routes( routes )&lt;br /&gt;
    @@routing.init routes&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def route( call, nap_list )&lt;br /&gt;
    @@routing.route call, nap_list&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== :method and :proc output ====&lt;br /&gt;
The gateway application queries every second the status and keep it available for routing script (due to the synchronous nature of the status query, it is preferable to have another thread polling the status than querying the status for each call). &lt;br /&gt;
&lt;br /&gt;
The script uses 2 status available (:asr_statistics_struct_last_24h_asr_percent and :asr_threshold in the naps) in the naps, for a complete list of the status available go [[knowledgebase:toolpack:script_routing#nap_statuses|here]] in the NAP_STATS_FIELDS define. &lt;br /&gt;
&lt;br /&gt;
If you check the NAP_STATS_FIELDS define, you will see that :asr_statistics_struct_last_24h_asr_percent is the combination of 2 field names asr_statistics_struct and last_24h_asr_percent.&lt;br /&gt;
&lt;br /&gt;
You might have noticed that the block in the proc function did not use the return keyword, it is a rule from ruby where you cannot use the return keyword in a block.&lt;br /&gt;
&lt;br /&gt;
Here is the output:&lt;br /&gt;
  Call Params:&lt;br /&gt;
    Reason:        ok&lt;br /&gt;
    Called:        5550002&lt;br /&gt;
    Calling:       5550000&lt;br /&gt;
    Nap:           isdn&lt;br /&gt;
  Matched route:&lt;br /&gt;
    Remapped calling:    &lt;br /&gt;
    Called:        1110000&lt;br /&gt;
    Calling:       5550000&lt;br /&gt;
    Remapped       called:    &lt;br /&gt;
    Priority:      4&lt;br /&gt;
    Remapped nap:  sip&lt;br /&gt;
    Nap:           isdn&lt;br /&gt;
  &lt;br /&gt;
  Output: OUT: usage remapped nap sip&lt;br /&gt;
  OUT:&lt;br /&gt;
  OUT: usage status 85, treshold92&lt;br /&gt;
  OUT:&lt;br /&gt;
  OUT: usage remapped nap sip&lt;br /&gt;
  OUT:&lt;br /&gt;
  OUT: asr status 60, treshold52&lt;br /&gt;
  OUT:&lt;br /&gt;
  OUT: Nap attribute must be remapped&lt;br /&gt;
  OUT:&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Back to [[Routing_script_tutorial|Routing Script Tutorial]].&lt;/div&gt;</summary>
		<author><name>10.0.0.157</name></author>
	</entry>
	<entry>
		<id>https://docs.telcobridges.com/w/index.php?title=Routing_script_tutorial:route_match_Tutorial&amp;diff=560</id>
		<title>Routing script tutorial:route match Tutorial</title>
		<link rel="alternate" type="text/html" href="https://docs.telcobridges.com/w/index.php?title=Routing_script_tutorial:route_match_Tutorial&amp;diff=560"/>
		<updated>2009-05-20T15:08:26Z</updated>

		<summary type="html">&lt;p&gt;10.0.0.157: New page: == route_match tutorial ==  &amp;#039;route_match&amp;#039; is a method implemented in the base_routing and is use to match a route to a call through parameters and/or status. This tutorial will explain how...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== route_match tutorial ==&lt;br /&gt;
&lt;br /&gt;
&#039;route_match&#039; is a method implemented in the base_routing and is use to match a route to a call through parameters and/or status. This tutorial will explain how to use the parameter for the &#039;route_match&#039; method. &lt;br /&gt;
&lt;br /&gt;
=== route_match examples ===&lt;br /&gt;
----&lt;br /&gt;
Things to know about these examples:&lt;br /&gt;
# A new field called &#039;priority&#039; needs to be add to the routes.&lt;br /&gt;
# A new field called &#039;asr_threshold&#039; needs to be add to the routes.&lt;br /&gt;
# A new field called &#039;usage_threshold&#039; needs to be add to the routes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== route_match setup ====&lt;br /&gt;
Time to take a look how to match route to a call. List of routes use for the example:&lt;br /&gt;
  Calling      Called      NAP      Remapped NAP       Priority&lt;br /&gt;
  5550000     1110000     isdn       sip                4     &lt;br /&gt;
  5550000     2220000     sip        isdn               3     &lt;br /&gt;
  5550000     3330000     sip_p2     isdn_1             2     &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
List of naps:&lt;br /&gt;
  Name       Asr threshold       Usage threshold   &lt;br /&gt;
  isdn         40                 90     &lt;br /&gt;
  sip          52                 92     &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Input used in the test script window:&lt;br /&gt;
  @call_params = {:calling =&amp;gt; &#039;5550000&#039;, :called =&amp;gt; &#039;5550002&#039;, :nap =&amp;gt; &#039;isdn&#039;}&lt;br /&gt;
  @nap_list = [&lt;br /&gt;
    {:name =&amp;gt; &#039;sip&#039;, },&lt;br /&gt;
    {:name =&amp;gt; &#039;isdn&#039; },&lt;br /&gt;
    {:name =&amp;gt; &#039;sip_p3&#039; }&lt;br /&gt;
  ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== :call_field_name and :route_field_name parameter ===&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== :call_field_name and :route_field_name script example ====&lt;br /&gt;
&lt;br /&gt;
Let&#039;s start with the :call_field_name and :route_field_name combo. The first example shows how to use the :call_field_name to match the calling number of the incoming call with the calling number of the route. &lt;br /&gt;
&lt;br /&gt;
It will also try to find a route which has the same remapped nap parameter as the nap parameter of the incoming call, therefore ignoring the nap parameter of the route. &lt;br /&gt;
  require &#039;base_routing&#039;&lt;br /&gt;
  &lt;br /&gt;
  class MatchTutorial &amp;lt; BaseRouting&lt;br /&gt;
    route_match :call_field_name =&amp;gt; :calling&lt;br /&gt;
    route_match :call_field_name =&amp;gt; :calling, :route_field_name =&amp;gt; :calling&lt;br /&gt;
    route_match :call_field_name =&amp;gt; :nap, :route_field_name =&amp;gt; :remapped_nap&lt;br /&gt;
  &lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  @@routing = MatchTutorial.new&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  def init_routes( routes )&lt;br /&gt;
    @@routing.init routes&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def route( call, nap_list )&lt;br /&gt;
    @@routing.route call, nap_list&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== :call_field_name and :route_field_name script output ====&lt;br /&gt;
&lt;br /&gt;
If you look at the first 2 lines of the MatchTutorial class definition:&lt;br /&gt;
  route_match :call_field_name =&amp;gt; :calling&lt;br /&gt;
  route_match :call_field_name =&amp;gt; :calling, :route_field_name =&amp;gt; :calling&lt;br /&gt;
&lt;br /&gt;
Both lines do the exact same thing. The both try to match the calling number of the incoming call with the calling number of the routing call. &lt;br /&gt;
&lt;br /&gt;
By default the if the :route_field_name is not explicitly declared, route_match will try to match the parameter from the :call_field_name to the same parameter in the route (in this case :calling). It is also important to notice that the :route_field_name parameter cannot be use without a :call_field_name parameter first.&lt;br /&gt;
&lt;br /&gt;
It is also important to notice that the called number, the nap and the priority in the routes were ignored by our match rules.&lt;br /&gt;
&lt;br /&gt;
The script will find a match. Here is the output:&lt;br /&gt;
  Call Params:&lt;br /&gt;
    Reason:        ok&lt;br /&gt;
    Called:        5550002&lt;br /&gt;
    Calling:       5550000&lt;br /&gt;
    Nap:           isdn&lt;br /&gt;
  Matched route:&lt;br /&gt;
    Remapped calling:    &lt;br /&gt;
    Called:        2220000&lt;br /&gt;
    Calling:       5550000&lt;br /&gt;
    Remapped called:    &lt;br /&gt;
    Priority:      3&lt;br /&gt;
    Remapped nap:  isdn&lt;br /&gt;
    Nap:           sip&lt;br /&gt;
  Output: OUT: Nap attribute must be remapped&lt;br /&gt;
  OUT: &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== :method and :proc parameter ===&lt;br /&gt;
----&lt;br /&gt;
Let&#039;s try the :method and :proc. The next example is a isdn-sip gateway. &lt;br /&gt;
&lt;br /&gt;
It uses the one of the method contain in base_routing (:match_nap_availability), it will compare the :asr_statistics_struct_last_24h_asr_percent nap status with the :asr_threshold in the naps, and will also compare the :usage_percent nap status with the :usage_threshold. &lt;br /&gt;
&lt;br /&gt;
The threshold and the status in this example were set so that a sip to isdn call will be dropped, but a isdn to sip call will be accepted.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== :method and :proc input ====&lt;br /&gt;
It is possible to set the nap status values in the test windows. Here is the input in the test window:&lt;br /&gt;
  @call_params = {:calling =&amp;gt; &#039;5550000&#039;, :called =&amp;gt; &#039;5550002&#039;, :nap =&amp;gt; &#039;isdn&#039;}&lt;br /&gt;
  @nap_list = [&lt;br /&gt;
    {:name =&amp;gt; &#039;sip&#039;, :availability_percent =&amp;gt; &#039;100&#039;, :asr_statistics_struct_last_24h_asr_percent =&amp;gt; &#039;60&#039;, :usage_percent =&amp;gt; &#039;85&#039;  },&lt;br /&gt;
    {:name =&amp;gt; &#039;isdn&#039;, :availability_percent =&amp;gt; &#039;100&#039;, :asr_statistics_struct_last_24h_asr_percent =&amp;gt; &#039;40&#039;, :usage_percent =&amp;gt; &#039;100&#039; },&lt;br /&gt;
    {:name =&amp;gt; &#039;sip_p3&#039;, :availability_percent =&amp;gt; &#039;0&#039;, :asr_statistics_struct_last_24h_asr_percent =&amp;gt; &#039;10&#039;, :usage_percent =&amp;gt; &#039;90&#039; }&lt;br /&gt;
  ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== :method and :proc script example ====&lt;br /&gt;
  require &#039;base_routing&#039;&lt;br /&gt;
  &lt;br /&gt;
  #&lt;br /&gt;
  #  This class requires that your add columns in the nap called asr_threshold and usage_threshold&lt;br /&gt;
  #&lt;br /&gt;
  class MatchProcMethodTutorial &amp;lt; BaseRouting&lt;br /&gt;
    route_match :call_field_name =&amp;gt; :nap&lt;br /&gt;
    route_match :method =&amp;gt; :match_nap_availability&lt;br /&gt;
    route_match :method =&amp;gt; :match_nap_available_call&lt;br /&gt;
    route_match :proc =&amp;gt; Proc.new { |route, call, nap_list|&lt;br /&gt;
      result = true&lt;br /&gt;
      #get the outgoing nap&lt;br /&gt;
      nap=nap_list[route[:remapped_nap].intern]&lt;br /&gt;
      puts &amp;quot;usage remapped nap #{nap[:name]}&amp;quot;&lt;br /&gt;
      if nap.nil?&lt;br /&gt;
        puts &amp;quot;Cannot found route with outgoing nap &#039;#{route[:remapped_nap]}&#039;&amp;quot;&lt;br /&gt;
        result = false&lt;br /&gt;
      end&lt;br /&gt;
  &lt;br /&gt;
      #get the last 24hrs asr&lt;br /&gt;
      asr_24hrs_status = nap[:asr_statistics_struct_last_24h_asr_percent].to_i&lt;br /&gt;
      asr_24hrs_threshold = nap[:asr_threshold].to_i&lt;br /&gt;
      puts &amp;quot;asr status #{asr_24hrs_status}, treshold#{asr_24hrs_threshold}&amp;quot;&lt;br /&gt;
      if asr_24hrs_status &amp;lt; asr_24hrs_threshold&lt;br /&gt;
        puts &amp;quot;Insufficient ASR in the last 24hrs for nap &#039;#{route[:remapped_nap]}&#039;&amp;quot;&lt;br /&gt;
         result = false&lt;br /&gt;
      end&lt;br /&gt;
      &lt;br /&gt;
      result&lt;br /&gt;
    }&lt;br /&gt;
  &lt;br /&gt;
    def match_nap_available_call(route, call, nap_list)&lt;br /&gt;
      #get the outgoing nap&lt;br /&gt;
      nap=nap_list[route[:remapped_nap].intern]&lt;br /&gt;
      puts &amp;quot;usage remapped nap #{nap[:name]}&amp;quot;&lt;br /&gt;
      if nap.nil?&lt;br /&gt;
        puts &amp;quot;Cannot found route with outgoing nap &#039;#{route[:remapped_nap]}&#039;&amp;quot;&lt;br /&gt;
        return false&lt;br /&gt;
      end&lt;br /&gt;
      &lt;br /&gt;
      # verify how many calls are available in the nap&lt;br /&gt;
      nap_usage_status = nap[:usage_percent].to_i&lt;br /&gt;
      nap_usage_threshold = nap[:usage_threshold].to_i&lt;br /&gt;
      puts &amp;quot;usage status #{nap_usage_status}, treshold#{nap_usage_threshold}&amp;quot;&lt;br /&gt;
      if nap_usage_status &amp;gt; nap_usage_threshold&lt;br /&gt;
        puts &amp;quot;Nap usage of &#039;#{route[:remapped_nap]}&#039; is higher then threshold &#039;#{nap_usage_status}&#039; &amp;quot;&lt;br /&gt;
        return false&lt;br /&gt;
      end&lt;br /&gt;
  &lt;br /&gt;
      true&lt;br /&gt;
  &lt;br /&gt;
    end&lt;br /&gt;
  &lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  @@routing = MatchProcMethodTutorial.new&lt;br /&gt;
  &lt;br /&gt;
  def init_routes( routes )&lt;br /&gt;
    @@routing.init routes&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def route( call, nap_list )&lt;br /&gt;
    @@routing.route call, nap_list&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== :method and :proc output ====&lt;br /&gt;
The gateway application queries every second the status and keep it available for routing script (due to the synchronous nature of the status query, it is preferable to have another thread polling the status than querying the status for each call). &lt;br /&gt;
&lt;br /&gt;
The script uses 2 status available (:asr_statistics_struct_last_24h_asr_percent and :asr_threshold in the naps) in the naps, for a complete list of the status available go [[knowledgebase:toolpack:script_routing#nap_statuses|here]] in the NAP_STATS_FIELDS define. &lt;br /&gt;
&lt;br /&gt;
If you check the NAP_STATS_FIELDS define, you will see that :asr_statistics_struct_last_24h_asr_percent is the combination of 2 field names asr_statistics_struct and last_24h_asr_percent.&lt;br /&gt;
&lt;br /&gt;
You might have noticed that the block in the proc function did not use the return keyword, it is a rule from ruby where you cannot use the return keyword in a block.&lt;br /&gt;
&lt;br /&gt;
Here is the output:&lt;br /&gt;
  Call Params:&lt;br /&gt;
    Reason:        ok&lt;br /&gt;
    Called:        5550002&lt;br /&gt;
    Calling:       5550000&lt;br /&gt;
    Nap:           isdn&lt;br /&gt;
  Matched route:&lt;br /&gt;
    Remapped calling:    &lt;br /&gt;
    Called:        1110000&lt;br /&gt;
    Calling:       5550000&lt;br /&gt;
    Remapped       called:    &lt;br /&gt;
    Priority:      4&lt;br /&gt;
    Remapped nap:  sip&lt;br /&gt;
    Nap:           isdn&lt;br /&gt;
  &lt;br /&gt;
  Output: OUT: usage remapped nap sip&lt;br /&gt;
  OUT:&lt;br /&gt;
  OUT: usage status 85, treshold92&lt;br /&gt;
  OUT:&lt;br /&gt;
  OUT: usage remapped nap sip&lt;br /&gt;
  OUT:&lt;br /&gt;
  OUT: asr status 60, treshold52&lt;br /&gt;
  OUT:&lt;br /&gt;
  OUT: Nap attribute must be remapped&lt;br /&gt;
  OUT:&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Back to [[Routing_script_tutorial|Routing Script Tutorial]].&lt;/div&gt;</summary>
		<author><name>10.0.0.157</name></author>
	</entry>
	<entry>
		<id>https://docs.telcobridges.com/w/index.php?title=Routing_script_tutorial:route_order_Tutorial&amp;diff=559</id>
		<title>Routing script tutorial:route order Tutorial</title>
		<link rel="alternate" type="text/html" href="https://docs.telcobridges.com/w/index.php?title=Routing_script_tutorial:route_order_Tutorial&amp;diff=559"/>
		<updated>2009-05-20T14:54:52Z</updated>

		<summary type="html">&lt;p&gt;10.0.0.157: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== route_order tutorial ==&lt;br /&gt;
&#039;route_order&#039; is a method implemented in the base_routing and is use to order routes. This tutorial will explain how to use the parameter for the &#039;route_order&#039; method. &lt;br /&gt;
&lt;br /&gt;
=== route_order examples ===&lt;br /&gt;
----&lt;br /&gt;
Things to know about these examples:&lt;br /&gt;
* The :show_route_order method print in the output window the order of the naps.&lt;br /&gt;
* A new field called &#039;priority&#039; needs to be add to the routes.&lt;br /&gt;
* This script will not find any route match, therefore dropping the call.&lt;br /&gt;
&lt;br /&gt;
==== route_order setup ====&lt;br /&gt;
&lt;br /&gt;
Routes to order:&lt;br /&gt;
&lt;br /&gt;
  Calling      Called      NAP      Remapped NAP       Priority  &lt;br /&gt;
  5550000     2220000     sip_p1     isdn          4     &lt;br /&gt;
  5550000     1110000     sip_p3     sip          3     &lt;br /&gt;
  5550000     3330000     sip_p2     isdn_1          2     &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nap list:&lt;br /&gt;
&lt;br /&gt;
  Name     &lt;br /&gt;
  sip_p1     &lt;br /&gt;
  sip_p3     &lt;br /&gt;
  sip_p2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The call and naps input in the test script window:&lt;br /&gt;
&lt;br /&gt;
  @call_params = {:calling =&amp;gt; &#039;5550000&#039;, :called =&amp;gt; &#039;5550002&#039;, :nap =&amp;gt; &#039;sip_p3&#039;}&lt;br /&gt;
  @nap_list = [&lt;br /&gt;
    {:name =&amp;gt; &#039;sip_p3&#039;},&lt;br /&gt;
    {:name =&amp;gt; &#039;sip_p2&#039;},&lt;br /&gt;
    {:name =&amp;gt; &#039;sip_p1&#039;}&lt;br /&gt;
  ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== :route_field_name parameter ===&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== :route_field_name script example ====&lt;br /&gt;
&lt;br /&gt;
Here how it can be order using the &#039;:route_field_name&#039; argument. The example script will order the routes by priority.&lt;br /&gt;
&lt;br /&gt;
  require &#039;base_routing&#039;&lt;br /&gt;
  &lt;br /&gt;
  class SimpleOrdering &amp;lt; BaseRouting&lt;br /&gt;
    route_order :route_field_name =&amp;gt; :priority&lt;br /&gt;
    route_match :method =&amp;gt; :show_route_order&lt;br /&gt;
  &lt;br /&gt;
    def show_route_order( route, call, nap_list )&lt;br /&gt;
      @local_name = &amp;quot;N/A&amp;quot;&lt;br /&gt;
      @local_priority =  &amp;quot;N/A&amp;quot;&lt;br /&gt;
      route.each do |key, value|&lt;br /&gt;
        case key.to_s&lt;br /&gt;
        when &amp;quot;nap&amp;quot;&lt;br /&gt;
          @local_name = value&lt;br /&gt;
        when &amp;quot;priority&amp;quot; &lt;br /&gt;
          @local_priority = value&lt;br /&gt;
        else&lt;br /&gt;
          #puts &amp;quot;key = #{key}, value = #{value}&amp;quot;&lt;br /&gt;
        end&lt;br /&gt;
        &lt;br /&gt;
      end&lt;br /&gt;
      puts &amp;quot;Nap name:#{@local_name}, priority:#{@local_priority}&amp;quot;&lt;br /&gt;
      &lt;br /&gt;
      return false&lt;br /&gt;
    end&lt;br /&gt;
  &lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  @@routing = SimpleOrdering.new&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  def init_routes( routes )&lt;br /&gt;
    @@routing.init routes&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def route( call, nap_list )&lt;br /&gt;
    puts &amp;quot;This script should put all the route priority order starting with the lowest.&amp;quot;&lt;br /&gt;
    @@routing.route call, nap_list&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== :route_field_name script output ====&lt;br /&gt;
&lt;br /&gt;
This script will not find any route match, therefore dropping the call, but it will print in the output the route ordered according to their priority. The output should look like this (if tried in the test script window).&lt;br /&gt;
&lt;br /&gt;
  OUT: This script should put all the route priority order starting with the lowest.&lt;br /&gt;
  OUT:&lt;br /&gt;
  OUT: Nap name:sip_p2, priority:2&lt;br /&gt;
  OUT:&lt;br /&gt;
  OUT: Nap name:sip_p3, priority:3&lt;br /&gt;
  OUT:&lt;br /&gt;
  OUT: Nap name:sip_p1, priority:4&lt;br /&gt;
  OUT:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== :method parameter ===&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== :method script example ====&lt;br /&gt;
&lt;br /&gt;
Here how it can be order using the &#039;:method&#039; argument. The example script will order the routes alphabetically by nap. The example script will order the routes alphabetically by nap just like the &#039;proc&#039; example.&lt;br /&gt;
&lt;br /&gt;
  require &#039;base_routing&#039;&lt;br /&gt;
  &lt;br /&gt;
  class SimpleMethodOrdering &amp;lt; BaseRouting&lt;br /&gt;
    route_order :method =&amp;gt; :nap_alphabetical_order&lt;br /&gt;
    route_match :method =&amp;gt; :show_route_order&lt;br /&gt;
  &lt;br /&gt;
    def nap_alphabetical_order( routes, nap_list )&lt;br /&gt;
        @tmp_routes = routes.sort {|x,y| x[:nap] &amp;lt;=&amp;gt; y[:nap] }&lt;br /&gt;
    end&lt;br /&gt;
  &lt;br /&gt;
    def show_route_order( route, call, nap_list )&lt;br /&gt;
      @local_name = &amp;quot;N/A&amp;quot;&lt;br /&gt;
      @local_priority =  &amp;quot;N/A&amp;quot;&lt;br /&gt;
      route.each do |key, value|&lt;br /&gt;
        case key.to_s&lt;br /&gt;
        when &amp;quot;nap&amp;quot;&lt;br /&gt;
          @local_name = value&lt;br /&gt;
        when &amp;quot;priority&amp;quot; &lt;br /&gt;
          @local_priority = value&lt;br /&gt;
        else&lt;br /&gt;
          #puts &amp;quot;key = #{key}, value = #{value}&amp;quot;&lt;br /&gt;
        end&lt;br /&gt;
        &lt;br /&gt;
      end&lt;br /&gt;
      puts &amp;quot;Nap name:#{@local_name}, priority:#{@local_priority}&amp;quot;&lt;br /&gt;
      &lt;br /&gt;
      return false&lt;br /&gt;
    end&lt;br /&gt;
  &lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  @@routing = SimpleMethodOrdering .new&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  def init_routes( routes )&lt;br /&gt;
    @@routing.init routes&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def route( call, nap_list )&lt;br /&gt;
    puts &amp;quot;This script should put all the route priority order starting with the lowest.&amp;quot;&lt;br /&gt;
    @@routing.route call, nap_list&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== :method script output ====&lt;br /&gt;
&lt;br /&gt;
This script will not find any route match, therefore dropping the call, but it will print in the output the route ordered alphabetically by nap. The output should look like this (if tried in the test script window).&lt;br /&gt;
&lt;br /&gt;
  OUT: This script should put all the route priority order starting with the lowest.&lt;br /&gt;
  OUT:&lt;br /&gt;
  OUT: Nap name:sip_p1, priority:4&lt;br /&gt;
  OUT:&lt;br /&gt;
  OUT: Nap name:sip_p2, priority:2&lt;br /&gt;
  OUT:&lt;br /&gt;
  OUT: Nap name:sip_p3, priority:3&lt;br /&gt;
  OUT:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== :proc parameter ===&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== :proc script example ====&lt;br /&gt;
Here how it can be order using the &#039;:proc&#039; argument. The example script will order the routes alphabetically by nap just like the &#039;method&#039; example&lt;br /&gt;
&lt;br /&gt;
  require &#039;base_routing&#039;&lt;br /&gt;
  &lt;br /&gt;
  class SimpleProcOrdering &amp;lt; BaseRouting&lt;br /&gt;
    route_order :proc =&amp;gt; Proc.new { |routes, nap_list|&lt;br /&gt;
        @tmp_routes = routes.sort {|x,y| x[:nap] &amp;lt;=&amp;gt; y[:nap] }&lt;br /&gt;
    }&lt;br /&gt;
    route_match :method =&amp;gt; :show_route_order&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
    def show_route_order( route, call, nap_list )&lt;br /&gt;
      @local_name = &amp;quot;N/A&amp;quot;&lt;br /&gt;
      @local_priority =  &amp;quot;N/A&amp;quot;&lt;br /&gt;
      route.each do |key, value|&lt;br /&gt;
        case key.to_s&lt;br /&gt;
        when &amp;quot;nap&amp;quot;&lt;br /&gt;
          @local_name = value&lt;br /&gt;
        when &amp;quot;priority&amp;quot; &lt;br /&gt;
          @local_priority = value&lt;br /&gt;
        else&lt;br /&gt;
          #puts &amp;quot;key = #{key}, value = #{value}&amp;quot;&lt;br /&gt;
        end&lt;br /&gt;
        &lt;br /&gt;
      end&lt;br /&gt;
      puts &amp;quot;Nap name:#{@local_name}, priority:#{@local_priority}&amp;quot;&lt;br /&gt;
      &lt;br /&gt;
      return false&lt;br /&gt;
    end&lt;br /&gt;
  &lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  @@routing = SimpleProcOrdering .new&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  def init_routes( routes )&lt;br /&gt;
    @@routing.init routes&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def route( call, nap_list )&lt;br /&gt;
    puts &amp;quot;This script should put all the route priority order starting with the lowest.&amp;quot;&lt;br /&gt;
    @@routing.route call, nap_list&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== :proc script output ====&lt;br /&gt;
This script will not find any route match, therefore dropping the call, but it will print in the output the route ordered alphabetically by nap. The output should look like this (if tried in the test script window).&lt;br /&gt;
&lt;br /&gt;
  OUT: This script should put all the route priority order starting with the lowest.&lt;br /&gt;
  OUT:&lt;br /&gt;
  OUT: Nap name:sip_p1, priority:4&lt;br /&gt;
  OUT:&lt;br /&gt;
  OUT: Nap name:sip_p2, priority:2&lt;br /&gt;
  OUT:&lt;br /&gt;
  OUT: Nap name:sip_p3, priority:3&lt;br /&gt;
  OUT:&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Back to [[Routing_script_tutorial|Routing Script Tutorial]].&lt;/div&gt;</summary>
		<author><name>10.0.0.157</name></author>
	</entry>
	<entry>
		<id>https://docs.telcobridges.com/w/index.php?title=Routing_script_tutorial:route_order_Tutorial&amp;diff=558</id>
		<title>Routing script tutorial:route order Tutorial</title>
		<link rel="alternate" type="text/html" href="https://docs.telcobridges.com/w/index.php?title=Routing_script_tutorial:route_order_Tutorial&amp;diff=558"/>
		<updated>2009-05-20T14:36:26Z</updated>

		<summary type="html">&lt;p&gt;10.0.0.157: Creation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== route_order tutorial ==&lt;br /&gt;
&#039;route_order&#039; is a method implemented in the base_routing and is use to order routes. This tutorial will explain how to use the parameter for the &#039;route_order&#039; method. &lt;br /&gt;
&lt;br /&gt;
=== route_order examples ===&lt;br /&gt;
----&lt;br /&gt;
Things to know about these examples:&lt;br /&gt;
* The :show_route_order method print in the output window the order of the naps.&lt;br /&gt;
* A new field called &#039;priority&#039; needs to be add to the routes.&lt;br /&gt;
* This script will not find any route match, therefore dropping the call.&lt;br /&gt;
&lt;br /&gt;
==== route_order setup ====&lt;br /&gt;
&lt;br /&gt;
Routes to order:&lt;br /&gt;
&lt;br /&gt;
  Calling      Called      NAP      Remapped NAP       Priority  &lt;br /&gt;
  5550000     2220000     sip_p1     isdn          4     &lt;br /&gt;
  5550000     1110000     sip_p3     sip          3     &lt;br /&gt;
  5550000     3330000     sip_p2     isdn_1          2     &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nap list:&lt;br /&gt;
&lt;br /&gt;
  Name     &lt;br /&gt;
  sip_p1     &lt;br /&gt;
  sip_p3     &lt;br /&gt;
  sip_p2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The call and naps input in the test script window:&lt;br /&gt;
&lt;br /&gt;
  @call_params = {:calling =&amp;gt; &#039;5550000&#039;, :called =&amp;gt; &#039;5550002&#039;, :nap =&amp;gt; &#039;sip_p3&#039;}&lt;br /&gt;
  @nap_list = [&lt;br /&gt;
    {:name =&amp;gt; &#039;sip_p3&#039;},&lt;br /&gt;
    {:name =&amp;gt; &#039;sip_p2&#039;},&lt;br /&gt;
    {:name =&amp;gt; &#039;sip_p1&#039;}&lt;br /&gt;
  ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== :route_field_name parameter ===&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== :route_field_name script example ====&lt;br /&gt;
&lt;br /&gt;
Here how it can be order using the &#039;:route_field_name&#039; argument. The example script will order the routes by priority.&lt;br /&gt;
&lt;br /&gt;
  require &#039;base_routing&#039;&lt;br /&gt;
  &lt;br /&gt;
  class SimpleOrdering &amp;lt; BaseRouting&lt;br /&gt;
    route_order :route_field_name =&amp;gt; :priority&lt;br /&gt;
    route_match :method =&amp;gt; :show_route_order&lt;br /&gt;
  &lt;br /&gt;
    def show_route_order( route, call, nap_list )&lt;br /&gt;
      @local_name = &amp;quot;N/A&amp;quot;&lt;br /&gt;
      @local_priority =  &amp;quot;N/A&amp;quot;&lt;br /&gt;
      route.each do |key, value|&lt;br /&gt;
        case key.to_s&lt;br /&gt;
        when &amp;quot;nap&amp;quot;&lt;br /&gt;
          @local_name = value&lt;br /&gt;
        when &amp;quot;priority&amp;quot; &lt;br /&gt;
          @local_priority = value&lt;br /&gt;
        else&lt;br /&gt;
          #puts &amp;quot;key = #{key}, value = #{value}&amp;quot;&lt;br /&gt;
        end&lt;br /&gt;
        &lt;br /&gt;
      end&lt;br /&gt;
      puts &amp;quot;Nap name:#{@local_name}, priority:#{@local_priority}&amp;quot;&lt;br /&gt;
      &lt;br /&gt;
      return false&lt;br /&gt;
    end&lt;br /&gt;
  &lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  @@routing = SimpleOrdering.new&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  def init_routes( routes )&lt;br /&gt;
    @@routing.init routes&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def route( call, nap_list )&lt;br /&gt;
    puts &amp;quot;This script should put all the route priority order starting with the lowest.&amp;quot;&lt;br /&gt;
    @@routing.route call, nap_list&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== :route_field_name script output ====&lt;br /&gt;
&lt;br /&gt;
This script will not find any route match, therefore dropping the call, but it will print in the output the route ordered according to their priority. The output should look like this (if tried in the test script window).&lt;br /&gt;
&lt;br /&gt;
  OUT: This script should put all the route priority order starting with the lowest.&lt;br /&gt;
  OUT:&lt;br /&gt;
  OUT: Nap name:sip_p2, priority:2&lt;br /&gt;
  OUT:&lt;br /&gt;
  OUT: Nap name:sip_p3, priority:3&lt;br /&gt;
  OUT:&lt;br /&gt;
  OUT: Nap name:sip_p1, priority:4&lt;br /&gt;
  OUT:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== :method parameter ===&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== :method script example ====&lt;br /&gt;
&lt;br /&gt;
Here how it can be order using the &#039;:method&#039; argument. The example script will order the routes alphabetically by nap. The example script will order the routes alphabetically by nap just like the &#039;proc&#039; example.&lt;br /&gt;
&lt;br /&gt;
  require &#039;base_routing&#039;&lt;br /&gt;
  &lt;br /&gt;
  class SimpleMethodOrdering &amp;lt; BaseRouting&lt;br /&gt;
    route_order :method =&amp;gt; :nap_alphabetical_order&lt;br /&gt;
    route_match :method =&amp;gt; :show_route_order&lt;br /&gt;
  &lt;br /&gt;
    def nap_alphabetical_order( routes, nap_list )&lt;br /&gt;
        @tmp_routes = routes.sort {|x,y| x[:nap] &amp;lt;=&amp;gt; y[:nap] }&lt;br /&gt;
    end&lt;br /&gt;
  &lt;br /&gt;
    def show_route_order( route, call, nap_list )&lt;br /&gt;
      @local_name = &amp;quot;N/A&amp;quot;&lt;br /&gt;
      @local_priority =  &amp;quot;N/A&amp;quot;&lt;br /&gt;
      route.each do |key, value|&lt;br /&gt;
        case key.to_s&lt;br /&gt;
        when &amp;quot;nap&amp;quot;&lt;br /&gt;
          @local_name = value&lt;br /&gt;
        when &amp;quot;priority&amp;quot; &lt;br /&gt;
          @local_priority = value&lt;br /&gt;
        else&lt;br /&gt;
          #puts &amp;quot;key = #{key}, value = #{value}&amp;quot;&lt;br /&gt;
        end&lt;br /&gt;
        &lt;br /&gt;
      end&lt;br /&gt;
      puts &amp;quot;Nap name:#{@local_name}, priority:#{@local_priority}&amp;quot;&lt;br /&gt;
      &lt;br /&gt;
      return false&lt;br /&gt;
    end&lt;br /&gt;
  &lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  @@routing = SimpleMethodOrdering .new&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  def init_routes( routes )&lt;br /&gt;
    @@routing.init routes&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def route( call, nap_list )&lt;br /&gt;
    puts &amp;quot;This script should put all the route priority order starting with the lowest.&amp;quot;&lt;br /&gt;
    @@routing.route call, nap_list&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== :method script output ====&lt;br /&gt;
&lt;br /&gt;
This script will not find any route match, therefore dropping the call, but it will print in the output the route ordered alphabetically by nap. The output should look like this (if tried in the test script window).&lt;br /&gt;
&lt;br /&gt;
  OUT: This script should put all the route priority order starting with the lowest.&lt;br /&gt;
  OUT:&lt;br /&gt;
  OUT: Nap name:sip_p1, priority:4&lt;br /&gt;
  OUT:&lt;br /&gt;
  OUT: Nap name:sip_p2, priority:2&lt;br /&gt;
  OUT:&lt;br /&gt;
  OUT: Nap name:sip_p3, priority:3&lt;br /&gt;
  OUT:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== :proc parameter ===&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==== :proc script example ====&lt;br /&gt;
Here how it can be order using the &#039;:proc&#039; argument. The example script will order the routes alphabetically by nap just like the &#039;method&#039; example&lt;br /&gt;
&lt;br /&gt;
  require &#039;base_routing&#039;&lt;br /&gt;
  &lt;br /&gt;
  class SimpleProcOrdering &amp;lt; BaseRouting&lt;br /&gt;
    route_order :proc =&amp;gt; Proc.new { |routes, nap_list|&lt;br /&gt;
        @tmp_routes = routes.sort {|x,y| x[:nap] &amp;lt;=&amp;gt; y[:nap] }&lt;br /&gt;
    }&lt;br /&gt;
    route_match :method =&amp;gt; :show_route_order&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
    def show_route_order( route, call, nap_list )&lt;br /&gt;
      @local_name = &amp;quot;N/A&amp;quot;&lt;br /&gt;
      @local_priority =  &amp;quot;N/A&amp;quot;&lt;br /&gt;
      route.each do |key, value|&lt;br /&gt;
        case key.to_s&lt;br /&gt;
        when &amp;quot;nap&amp;quot;&lt;br /&gt;
          @local_name = value&lt;br /&gt;
        when &amp;quot;priority&amp;quot; &lt;br /&gt;
          @local_priority = value&lt;br /&gt;
        else&lt;br /&gt;
          #puts &amp;quot;key = #{key}, value = #{value}&amp;quot;&lt;br /&gt;
        end&lt;br /&gt;
        &lt;br /&gt;
      end&lt;br /&gt;
      puts &amp;quot;Nap name:#{@local_name}, priority:#{@local_priority}&amp;quot;&lt;br /&gt;
      &lt;br /&gt;
      return false&lt;br /&gt;
    end&lt;br /&gt;
  &lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  @@routing = SimpleProcOrdering .new&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  def init_routes( routes )&lt;br /&gt;
    @@routing.init routes&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def route( call, nap_list )&lt;br /&gt;
    puts &amp;quot;This script should put all the route priority order starting with the lowest.&amp;quot;&lt;br /&gt;
    @@routing.route call, nap_list&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== :proc script output ====&lt;br /&gt;
This script will not find any route match, therefore dropping the call, but it will print in the output the route ordered alphabetically by nap. The output should look like this (if tried in the test script window).&lt;br /&gt;
&lt;br /&gt;
  OUT: This script should put all the route priority order starting with the lowest.&lt;br /&gt;
  OUT:&lt;br /&gt;
  OUT: Nap name:sip_p1, priority:4&lt;br /&gt;
  OUT:&lt;br /&gt;
  OUT: Nap name:sip_p2, priority:2&lt;br /&gt;
  OUT:&lt;br /&gt;
  OUT: Nap name:sip_p3, priority:3&lt;br /&gt;
  OUT:&lt;/div&gt;</summary>
		<author><name>10.0.0.157</name></author>
	</entry>
	<entry>
		<id>https://docs.telcobridges.com/w/index.php?title=Routing_script_tutorial:Routing_Class_Tutorial&amp;diff=557</id>
		<title>Routing script tutorial:Routing Class Tutorial</title>
		<link rel="alternate" type="text/html" href="https://docs.telcobridges.com/w/index.php?title=Routing_script_tutorial:Routing_Class_Tutorial&amp;diff=557"/>
		<updated>2009-05-20T14:36:17Z</updated>

		<summary type="html">&lt;p&gt;10.0.0.157: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Routing Class Tutorial ==&lt;br /&gt;
&lt;br /&gt;
This is a basic tutorial about script routing. This page will explain the different methods required in a script routing.&lt;br /&gt;
&lt;br /&gt;
Here is a list of routes of a sip/isdn gateway:&lt;br /&gt;
&lt;br /&gt;
  Calling  Called  NAP  Remapped NAP&lt;br /&gt;
  2220000 1110000 sip   isdn    &lt;br /&gt;
  4440000 3330000 isdn   sip    &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These routes are pretty restrictive, since the calling and called number are set to a single number.&lt;br /&gt;
We could simply remove the number in the calling and called number to allow any number to go from sip to isdn. But for the sake of this example we won&#039;t.&lt;br /&gt;
&lt;br /&gt;
Let&#039;s create a class that will only match the call by nap and remap it (sip to isdn / isdn to sip).&lt;br /&gt;
&lt;br /&gt;
  require &#039;base_routing&#039;&lt;br /&gt;
  &lt;br /&gt;
  class IsdnSipGw &amp;lt; BaseRouting&lt;br /&gt;
    route_match :call_field_name =&amp;gt; :nap&lt;br /&gt;
    route_remap :call_field_name =&amp;gt; :nap, :route_field_name =&amp;gt; :remapped_nap&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  @@routing = IsdnSipGw.new&lt;br /&gt;
  &lt;br /&gt;
  def init_routes( routes )&lt;br /&gt;
    @@routing.init routes&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def route( call, nap_list )&lt;br /&gt;
    @@routing.route call, nap_list&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Let&#039;s analyze the script in more detail:&lt;br /&gt;
&lt;br /&gt;
  class IsdnSipGw &amp;lt; BaseRouting&lt;br /&gt;
    route_match :call_field_name =&amp;gt; :nap&lt;br /&gt;
    route_remap :call_field_name =&amp;gt; :nap, :route_field_name =&amp;gt; :remapped_nap&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This is the definition of the routing class which is called IsdnSipGw and has BaseRouting as base class. It will match call to the route according to its incoming nap. It will also remap the nap field value with the value of the remapped_nap field located in the route.&lt;br /&gt;
&lt;br /&gt;
  @@routing = IsdnSipGw.new&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Creates a routing object of IsdnSipGw type. This line is executed when the script is loaded into the gateway application.&lt;br /&gt;
&lt;br /&gt;
  def init_routes( routes )&lt;br /&gt;
    @@routing.init routes&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Send the routes list to the routing objects. If you want to pre-order your routes because the priority will not change through time or because of the incoming call parameter, now it is a good time. The init_routes is called only once when the script is loaded in the gateway (think applying the configuration).&lt;br /&gt;
&lt;br /&gt;
  def route( call, nap_list )&lt;br /&gt;
    @@routing.route call, nap_list&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This method order the routes, then match the call to a route, then remap the fields if there was a match.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Back to [[Routing_script_tutorial|Routing Script Tutorial]].&lt;/div&gt;</summary>
		<author><name>10.0.0.157</name></author>
	</entry>
	<entry>
		<id>https://docs.telcobridges.com/w/index.php?title=Routing_script_tutorial:Routing_Class_Tutorial&amp;diff=556</id>
		<title>Routing script tutorial:Routing Class Tutorial</title>
		<link rel="alternate" type="text/html" href="https://docs.telcobridges.com/w/index.php?title=Routing_script_tutorial:Routing_Class_Tutorial&amp;diff=556"/>
		<updated>2009-05-20T14:24:42Z</updated>

		<summary type="html">&lt;p&gt;10.0.0.157: Creation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Routing Class Tutorial ==&lt;br /&gt;
&lt;br /&gt;
This is a basic tutorial about script routing. This page will explain the different methods required in a script routing.&lt;br /&gt;
&lt;br /&gt;
Here is a list of routes of a sip/isdn gateway:&lt;br /&gt;
&lt;br /&gt;
  Calling  Called  NAP  Remapped NAP&lt;br /&gt;
  2220000 1110000 sip   isdn    &lt;br /&gt;
  4440000 3330000 isdn   sip    &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
These routes are pretty restrictive, since the calling and called number are set to a single number.&lt;br /&gt;
We could simply remove the number in the calling and called number to allow any number to go from sip to isdn. But for the sake of this example we won&#039;t.&lt;br /&gt;
&lt;br /&gt;
Let&#039;s create a class that will only match the call by nap and remap it (sip to isdn / isdn to sip).&lt;br /&gt;
&lt;br /&gt;
  require &#039;base_routing&#039;&lt;br /&gt;
  &lt;br /&gt;
  class IsdnSipGw &amp;lt; BaseRouting&lt;br /&gt;
    route_match :call_field_name =&amp;gt; :nap&lt;br /&gt;
    route_remap :call_field_name =&amp;gt; :nap, :route_field_name =&amp;gt; :remapped_nap&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  @@routing = IsdnSipGw.new&lt;br /&gt;
  &lt;br /&gt;
  def init_routes( routes )&lt;br /&gt;
    @@routing.init routes&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  def route( call, nap_list )&lt;br /&gt;
    @@routing.route call, nap_list&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Let&#039;s analyze the script in more detail:&lt;br /&gt;
&lt;br /&gt;
  class IsdnSipGw &amp;lt; BaseRouting&lt;br /&gt;
    route_match :call_field_name =&amp;gt; :nap&lt;br /&gt;
    route_remap :call_field_name =&amp;gt; :nap, :route_field_name =&amp;gt; :remapped_nap&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This is the definition of the routing class which is called IsdnSipGw and has BaseRouting as base class. It will match call to the route according to its incoming nap. It will also remap the nap field value with the value of the remapped_nap field located in the route.&lt;br /&gt;
&lt;br /&gt;
  @@routing = IsdnSipGw.new&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Creates a routing object of IsdnSipGw type. This line is executed when the script is loaded into the gateway application.&lt;br /&gt;
&lt;br /&gt;
  def init_routes( routes )&lt;br /&gt;
    @@routing.init routes&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Send the routes list to the routing objects. If you want to pre-order your routes because the priority will not change through time or because of the incoming call parameter, now it is a good time. The init_routes is called only once when the script is loaded in the gateway (think applying the configuration).&lt;br /&gt;
&lt;br /&gt;
  def route( call, nap_list )&lt;br /&gt;
    @@routing.route call, nap_list&lt;br /&gt;
  end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This method order the routes, then match the call to a route, then remap the fields if there was a match.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Back to [[Routing_script_tutorial|Routing Script Tutorial]].&lt;/div&gt;</summary>
		<author><name>10.0.0.157</name></author>
	</entry>
	<entry>
		<id>https://docs.telcobridges.com/w/index.php?title=Toolpack_migration_2-3&amp;diff=535</id>
		<title>Toolpack migration 2-3</title>
		<link rel="alternate" type="text/html" href="https://docs.telcobridges.com/w/index.php?title=Toolpack_migration_2-3&amp;diff=535"/>
		<updated>2009-05-19T19:05:49Z</updated>

		<summary type="html">&lt;p&gt;10.0.0.157: modify to correct cases&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This section contains the steps required to migrate a Toolpack system from release 2-2 to 2-3. &lt;br /&gt;
&lt;br /&gt;
If you want to install a system on a new host or you are not upgrading from a 2-2 system, please follow this [[toolpack_installation_2-3|link]].&lt;br /&gt;
&lt;br /&gt;
=== Prerequisites ===&lt;br /&gt;
The migration guide needs to be executed once per system. If your OS is not included in the list below, contact TelcoBridges support.&lt;br /&gt;
&lt;br /&gt;
: [[toolpack_migration_CentOS5_2-3|CentOS 5 migration guide]]&lt;br /&gt;
: [[toolpack_migration_Debian4_2-3|Debian 4 migration guide]]&lt;br /&gt;
: [[toolpack_migration_Solaris10_Intel_2-3|Solaris 10 Intel migration guide]]&lt;br /&gt;
: [[toolpack_migration_windows_XP_2-3|Windows XP migration guide]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Toolpack installation ===&lt;br /&gt;
&lt;br /&gt;
: [[toolpack_installer_2-3|Toolpack Installer]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Back to main [[Installing_Toolpack|Toolpack installation]] page&lt;/div&gt;</summary>
		<author><name>10.0.0.157</name></author>
	</entry>
	<entry>
		<id>https://docs.telcobridges.com/w/index.php?title=Toolpack_migration_Solaris10_Intel_2-3&amp;diff=534</id>
		<title>Toolpack migration Solaris10 Intel 2-3</title>
		<link rel="alternate" type="text/html" href="https://docs.telcobridges.com/w/index.php?title=Toolpack_migration_Solaris10_Intel_2-3&amp;diff=534"/>
		<updated>2009-05-19T19:04:05Z</updated>

		<summary type="html">&lt;p&gt;10.0.0.157: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page shows the Toolpack 2-3 migration guide for Solaris 10.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Toolpack Migration Steps ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Create new database user ===&lt;br /&gt;
&lt;br /&gt;
Connect to MySQL and create a new user tbdb with all privilege.&lt;br /&gt;
&lt;br /&gt;
  mysql -u root&lt;br /&gt;
  CREATE USER &#039;tbdb&#039;@&#039;%&#039; IDENTIFIED BY &#039;[DatabasePassword]&#039;;&lt;br /&gt;
  GRANT ALL privileges ON *.* TO &#039;tbdb&#039;@&#039;%&#039; IDENTIFIED BY &#039;[DatabasePassword]&#039;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example&lt;br /&gt;
  mysql -u root&lt;br /&gt;
  CREATE USER &#039;tbdb&#039;@&#039;%&#039; IDENTIFIED BY &#039;tbdbpw&#039;;&lt;br /&gt;
  GRANT ALL privileges ON *.* TO &#039;tbdb&#039;@&#039;%&#039; IDENTIFIED BY &#039;tbdbpw&#039;;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Print the list of user&lt;br /&gt;
&lt;br /&gt;
  select * from mysql.user;&lt;br /&gt;
&lt;br /&gt;
Remove all the &#039;empty&#039; users:&lt;br /&gt;
&lt;br /&gt;
In the following example you should remove the 4th and 5th user.&lt;br /&gt;
&lt;br /&gt;
  mysql&amp;gt; select * from mysql.user;&lt;br /&gt;
  +----------------+------+------------------+-------------+-------------+&lt;br /&gt;
  | Host           | User | Password         | Select_priv | Insert_priv |&lt;br /&gt;
  +----------------+------+------------------+-------------+-------------+&lt;br /&gt;
  | localhost      | root | 68d4f47c49a579c9 | Y           | Y           |&lt;br /&gt;
  | tl-sol10i32-01 | root |                  | Y           | Y           |&lt;br /&gt;
  | 127.0.0.1      | root |                  | Y           | Y           |&lt;br /&gt;
  | localhost      |      |                  | N           | N           |&lt;br /&gt;
  | tl-sol10i32-01 |      |                  | N           | N           |&lt;br /&gt;
  | %              | tbdb | 68d4f47c49a579c9 | Y           | Y           |&lt;br /&gt;
  +----------------+------+------------------+-------------+-------------+&lt;br /&gt;
  6 rows in set (0.00 sec)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Delete command:&lt;br /&gt;
  DELETE FROM mysql.user where user=&#039;tobedeleted&#039;;&lt;br /&gt;
  exit&lt;br /&gt;
&lt;br /&gt;
ex.&lt;br /&gt;
&lt;br /&gt;
  DELETE FROM mysql.user where user=&amp;lt;nowiki&amp;gt;&#039;&#039;&amp;lt;/nowiki&amp;gt;;&lt;br /&gt;
  exit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Install ODBC MySQL connector ===&lt;br /&gt;
&lt;br /&gt;
  wget http://www.unixodbc.org/pub/unixODBC/binaries/unixODBC-2.2.14-i386.pkg.gz&lt;br /&gt;
  gunzip unixODBC-2.2.14-i386.pkg.gz&lt;br /&gt;
  sudo pkgadd -d unixODBC-2.2.14-i386.pkg&lt;br /&gt;
&lt;br /&gt;
  wget http://dev.mysql.com/get/Downloads/Connector-ODBC/3.51/mysql-connector-odbc-3.51.27-solaris10-x86-32bit.tar.gz/from/http://mysql.serenitynet.com/&lt;br /&gt;
  gunzip -c mysql-connector-odbc-3.51.27-solaris10-x86-32bit.tar.gz | tar xvf -&lt;br /&gt;
  cp mysql-connector-odbc-3.51.27-solaris10-x86-32bit/lib/* /usr/lib&lt;br /&gt;
  crle -l /lib:/usr/lib:/usr/local/lib&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Configure ODBC driver manager ===&lt;br /&gt;
&lt;br /&gt;
*Enable the MySQL driver is enable (remove the comments for the MySQL driver). &lt;br /&gt;
*Set the Driver to /usr/lib/libmyodbc3_r.so&lt;br /&gt;
&lt;br /&gt;
  vim /etc/odbcinst.ini &lt;br /&gt;
&lt;br /&gt;
Here is an example:&lt;br /&gt;
&lt;br /&gt;
  # Driver from the MyODBC package&lt;br /&gt;
  # Setup from the unixODBC package&lt;br /&gt;
  [MySQL]&lt;br /&gt;
  Description     = ODBC for MySQL&lt;br /&gt;
  Driver          = /usr/lib/libmyodbc3_r.so&lt;br /&gt;
  Setup           = /usr/lib/libodbcmyS.so&lt;br /&gt;
  FileUsage       = 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Enable MySQL database replication ===&lt;br /&gt;
&lt;br /&gt;
Configure the MySQL configuration file&lt;br /&gt;
&lt;br /&gt;
  vim /etc/my.cnf&lt;br /&gt;
&lt;br /&gt;
If the file is empty, copy from default file&lt;br /&gt;
&lt;br /&gt;
  cp /usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf&lt;br /&gt;
&lt;br /&gt;
Add 2 lines in the configuration file:&lt;br /&gt;
*log-bin&lt;br /&gt;
*server-id&lt;br /&gt;
&lt;br /&gt;
server-id value needs to be a non-zero value and unique on each host if database redundancy is used.&lt;br /&gt;
&lt;br /&gt;
Make sure it is under the [mysqld] section&lt;br /&gt;
&lt;br /&gt;
  log-bin&lt;br /&gt;
  server-id=[UniqueId]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
  # The MySQL server&lt;br /&gt;
  [mysqld]&lt;br /&gt;
  port            = 3306&lt;br /&gt;
  socket          = /tmp/mysql.sock&lt;br /&gt;
  skip-locking&lt;br /&gt;
  key_buffer = 16M&lt;br /&gt;
  max_allowed_packet = 1M&lt;br /&gt;
  table_cache = 64&lt;br /&gt;
  sort_buffer_size = 512K&lt;br /&gt;
  net_buffer_length = 8K&lt;br /&gt;
  read_buffer_size = 256K&lt;br /&gt;
  read_rnd_buffer_size = 512K&lt;br /&gt;
  myisam_sort_buffer_size = 8M&lt;br /&gt;
  &lt;br /&gt;
  # Don&#039;t listen on a TCP/IP port at all. This can be a security enhancement,&lt;br /&gt;
  # if all processes that need to connect to mysqld run on the same host.&lt;br /&gt;
  # All interaction with mysqld must be made via Unix sockets or named pipes.&lt;br /&gt;
  # Note that using this option without enabling named pipes on Windows&lt;br /&gt;
  # (via the &amp;quot;enable-named-pipe&amp;quot; option) will render mysqld useless!&lt;br /&gt;
  #&lt;br /&gt;
  #skip-networking&lt;br /&gt;
  &lt;br /&gt;
  # Disable Federated by default&lt;br /&gt;
  skip-federated&lt;br /&gt;
  &lt;br /&gt;
  # Replication Master Server (default)&lt;br /&gt;
  # binary logging is required for replication&lt;br /&gt;
  log-bin=mysql-bin&lt;br /&gt;
  &lt;br /&gt;
  # required unique id between 1 and 2^32 - 1&lt;br /&gt;
  # defaults to 1 if master-host is not set&lt;br /&gt;
  # but will not function as a master if omitted&lt;br /&gt;
  server-id       = 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Toolpack System installation ==&lt;br /&gt;
&lt;br /&gt;
Now that the prerequisite are installed, we can go back to the migration guide [[Toolpack_migration_2-3|Toolpack migration 2-3]].&lt;/div&gt;</summary>
		<author><name>10.0.0.157</name></author>
	</entry>
	<entry>
		<id>https://docs.telcobridges.com/w/index.php?title=Toolpack_migration_Solaris10_Intel_2-3&amp;diff=533</id>
		<title>Toolpack migration Solaris10 Intel 2-3</title>
		<link rel="alternate" type="text/html" href="https://docs.telcobridges.com/w/index.php?title=Toolpack_migration_Solaris10_Intel_2-3&amp;diff=533"/>
		<updated>2009-05-19T18:59:05Z</updated>

		<summary type="html">&lt;p&gt;10.0.0.157: New page: This page shows the Toolpack 2-3 migration guide for Solaris 10.   == Toolpack Migration Steps ==   === Create new database user ===  Connect to MySQL and create a new user tbdb with all p...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page shows the Toolpack 2-3 migration guide for Solaris 10.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Toolpack Migration Steps ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Create new database user ===&lt;br /&gt;
&lt;br /&gt;
Connect to MySQL and create a new user tbdb with all privilege.&lt;br /&gt;
&lt;br /&gt;
  mysql -u root&lt;br /&gt;
  CREATE USER &#039;tbdb&#039;@&#039;%&#039; IDENTIFIED BY &#039;[DatabasePassword]&#039;;&lt;br /&gt;
  GRANT ALL privileges ON *.* TO &#039;tbdb&#039;@&#039;%&#039; IDENTIFIED BY &#039;[DatabasePassword]&#039;;&lt;br /&gt;
  exit&lt;br /&gt;
&lt;br /&gt;
Example&lt;br /&gt;
  mysql -u root&lt;br /&gt;
  CREATE USER &#039;tbdb&#039;@&#039;%&#039; IDENTIFIED BY &#039;tbdbpw&#039;;&lt;br /&gt;
  GRANT ALL privileges ON *.* TO &#039;tbdb&#039;@&#039;%&#039; IDENTIFIED BY &#039;tbdbpw&#039;;&lt;br /&gt;
  exit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Install ODBC MySQL connector ===&lt;br /&gt;
&lt;br /&gt;
  wget http://www.unixodbc.org/pub/unixODBC/binaries/unixODBC-2.2.14-i386.pkg.gz&lt;br /&gt;
  gunzip unixODBC-2.2.14-i386.pkg.gz&lt;br /&gt;
  sudo pkgadd -d unixODBC-2.2.14-i386.pkg&lt;br /&gt;
&lt;br /&gt;
  wget http://dev.mysql.com/get/Downloads/Connector-ODBC/3.51/mysql-connector-odbc-3.51.27-solaris10-x86-32bit.tar.gz/from/http://mysql.serenitynet.com/&lt;br /&gt;
  gunzip -c mysql-connector-odbc-3.51.27-solaris10-x86-32bit.tar.gz | tar xvf -&lt;br /&gt;
  cp mysql-connector-odbc-3.51.27-solaris10-x86-32bit/lib/* /usr/lib&lt;br /&gt;
  crle -l /lib:/usr/lib:/usr/local/lib&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Configure ODBC driver manager ===&lt;br /&gt;
&lt;br /&gt;
*Enable the MySQL driver is enable (remove the comments for the MySQL driver). &lt;br /&gt;
*Set the Driver to /usr/lib/libmyodbc3_r.so&lt;br /&gt;
&lt;br /&gt;
  vim /etc/odbcinst.ini &lt;br /&gt;
&lt;br /&gt;
Here is an example:&lt;br /&gt;
&lt;br /&gt;
  # Driver from the MyODBC package&lt;br /&gt;
  # Setup from the unixODBC package&lt;br /&gt;
  [MySQL]&lt;br /&gt;
  Description     = ODBC for MySQL&lt;br /&gt;
  Driver          = /usr/lib/libmyodbc3_r.so&lt;br /&gt;
  Setup           = /usr/lib/libodbcmyS.so&lt;br /&gt;
  FileUsage       = 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Enable MySQL database replication ===&lt;br /&gt;
&lt;br /&gt;
Configure the MySQL configuration file&lt;br /&gt;
&lt;br /&gt;
  vim /etc/my.cnf&lt;br /&gt;
&lt;br /&gt;
If the file is empty, copy from default file&lt;br /&gt;
&lt;br /&gt;
  cp /usr/local/mysql/share/mysql/my-medium.cnf /etc/my.cnf&lt;br /&gt;
&lt;br /&gt;
Add 2 lines in the configuration file:&lt;br /&gt;
*log-bin&lt;br /&gt;
*server-id&lt;br /&gt;
&lt;br /&gt;
server-id value needs to be a non-zero value and unique on each host if database redundancy is used.&lt;br /&gt;
&lt;br /&gt;
Make sure it is under the [mysqld] section&lt;br /&gt;
&lt;br /&gt;
  log-bin&lt;br /&gt;
  server-id=[UniqueId]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
  # The MySQL server&lt;br /&gt;
  [mysqld]&lt;br /&gt;
  port            = 3306&lt;br /&gt;
  socket          = /tmp/mysql.sock&lt;br /&gt;
  skip-locking&lt;br /&gt;
  key_buffer = 16M&lt;br /&gt;
  max_allowed_packet = 1M&lt;br /&gt;
  table_cache = 64&lt;br /&gt;
  sort_buffer_size = 512K&lt;br /&gt;
  net_buffer_length = 8K&lt;br /&gt;
  read_buffer_size = 256K&lt;br /&gt;
  read_rnd_buffer_size = 512K&lt;br /&gt;
  myisam_sort_buffer_size = 8M&lt;br /&gt;
  &lt;br /&gt;
  # Don&#039;t listen on a TCP/IP port at all. This can be a security enhancement,&lt;br /&gt;
  # if all processes that need to connect to mysqld run on the same host.&lt;br /&gt;
  # All interaction with mysqld must be made via Unix sockets or named pipes.&lt;br /&gt;
  # Note that using this option without enabling named pipes on Windows&lt;br /&gt;
  # (via the &amp;quot;enable-named-pipe&amp;quot; option) will render mysqld useless!&lt;br /&gt;
  #&lt;br /&gt;
  #skip-networking&lt;br /&gt;
  &lt;br /&gt;
  # Disable Federated by default&lt;br /&gt;
  skip-federated&lt;br /&gt;
  &lt;br /&gt;
  # Replication Master Server (default)&lt;br /&gt;
  # binary logging is required for replication&lt;br /&gt;
  log-bin=mysql-bin&lt;br /&gt;
  &lt;br /&gt;
  # required unique id between 1 and 2^32 - 1&lt;br /&gt;
  # defaults to 1 if master-host is not set&lt;br /&gt;
  # but will not function as a master if omitted&lt;br /&gt;
  server-id       = 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Toolpack System installation ==&lt;br /&gt;
&lt;br /&gt;
Now that the prerequisite are installed, we can go back to the migration guide [[Toolpack_migration_2-3|Toolpack migration 2-3]].&lt;/div&gt;</summary>
		<author><name>10.0.0.157</name></author>
	</entry>
	<entry>
		<id>https://docs.telcobridges.com/w/index.php?title=Toolpack_migration_Debian4_2-3&amp;diff=532</id>
		<title>Toolpack migration Debian4 2-3</title>
		<link rel="alternate" type="text/html" href="https://docs.telcobridges.com/w/index.php?title=Toolpack_migration_Debian4_2-3&amp;diff=532"/>
		<updated>2009-05-19T18:45:29Z</updated>

		<summary type="html">&lt;p&gt;10.0.0.157: Creation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page shows the Toolpack 2-4 migration guide for Debian 4.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Toolpack Migration Steps ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Create new database user ===&lt;br /&gt;
&lt;br /&gt;
Connect to MySQL and create a new user tbdb with all privilege.&lt;br /&gt;
&lt;br /&gt;
  mysql -u root&lt;br /&gt;
  CREATE USER &#039;tbdb&#039;@&#039;%&#039; IDENTIFIED BY &#039;[DatabasePassword]&#039;;&lt;br /&gt;
  GRANT ALL privileges ON *.* TO &#039;tbdb&#039;@&#039;%&#039; IDENTIFIED BY &#039;[DatabasePassword]&#039;;&lt;br /&gt;
  exit&lt;br /&gt;
&lt;br /&gt;
Example&lt;br /&gt;
  mysql -u root&lt;br /&gt;
  CREATE USER &#039;tbdb&#039;@&#039;%&#039; IDENTIFIED BY &#039;tbdbpw&#039;;&lt;br /&gt;
  GRANT ALL privileges ON *.* TO &#039;tbdb&#039;@&#039;%&#039; IDENTIFIED BY &#039;tbdbpw&#039;;&lt;br /&gt;
  exit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Install ODBC MySQL connector ===&lt;br /&gt;
&lt;br /&gt;
  apt-get install libmyodbc&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Configure ODBC driver manager ===&lt;br /&gt;
&lt;br /&gt;
  odbcinst -i -f /usr/share/libmyodbc/odbcinst.ini -d&lt;br /&gt;
&lt;br /&gt;
== Toolpack System installation ==&lt;br /&gt;
&lt;br /&gt;
Now that the prerequisite are installed, we can go back to the migration guide [[Toolpack_migration_2-3|Toolpack migration 2-3]].&lt;/div&gt;</summary>
		<author><name>10.0.0.157</name></author>
	</entry>
	<entry>
		<id>https://docs.telcobridges.com/w/index.php?title=Toolpack_migration_CentOS5_2-3&amp;diff=531</id>
		<title>Toolpack migration CentOS5 2-3</title>
		<link rel="alternate" type="text/html" href="https://docs.telcobridges.com/w/index.php?title=Toolpack_migration_CentOS5_2-3&amp;diff=531"/>
		<updated>2009-05-19T18:41:15Z</updated>

		<summary type="html">&lt;p&gt;10.0.0.157: Modify to the real migration guide&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page shows the Toolpack 2-3 migration guide for CentOS 5.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Toolpack Migration Steps ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Create new database user ===&lt;br /&gt;
&lt;br /&gt;
Connect to MySQL and create a new user tbdb with all privilege.&lt;br /&gt;
&lt;br /&gt;
  mysql -u root&lt;br /&gt;
  CREATE USER &#039;tbdb&#039;@&#039;%&#039; IDENTIFIED BY &#039;[DatabasePassword]&#039;;&lt;br /&gt;
  GRANT ALL privileges ON *.* TO &#039;tbdb&#039;@&#039;%&#039; IDENTIFIED BY &#039;[DatabasePassword]&#039;;&lt;br /&gt;
  exit&lt;br /&gt;
&lt;br /&gt;
Example&lt;br /&gt;
  mysql -u root&lt;br /&gt;
  CREATE USER &#039;tbdb&#039;@&#039;%&#039; IDENTIFIED BY &#039;tbdbpw&#039;;&lt;br /&gt;
  GRANT ALL privileges ON *.* TO &#039;tbdb&#039;@&#039;%&#039; IDENTIFIED BY &#039;tbdbpw&#039;;&lt;br /&gt;
  exit&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Install ODBC MySQL connector ===&lt;br /&gt;
&lt;br /&gt;
  yum install mysql-connector-odbc&lt;br /&gt;
&lt;br /&gt;
For 32 bits sytem:&lt;br /&gt;
&lt;br /&gt;
  wget http://download.distribution.telcobridges.com/3rdparty/prerequisite/bin/linux/mysql-connector-odbc-3.51.27-linux-x86-32bit.tar.gz&lt;br /&gt;
  tar -zxf mysql-connector-odbc-3.51.27-linux-x86-32bit.tar.gz&lt;br /&gt;
  mkdir -p /lib/tb/toolpack/3rdparty/odbc-connector/&lt;br /&gt;
  cp mysql-connector-odbc-3.51.27-linux-x86-32bit/lib/libmyodbc3_r-3.51.27.so /lib/tb/toolpack/3rdparty/odbc-connector/&lt;br /&gt;
&lt;br /&gt;
For 64 bits sytem:&lt;br /&gt;
&lt;br /&gt;
  wget http://download.distribution.telcobridges.com/3rdparty/prerequisite/bin/linux/mysql-connector-odbc-3.51.27-linux-x86-64bit.tar.gz&lt;br /&gt;
  tar -zxf mysql-connector-odbc-3.51.27-linux-x86-64bit.tar.gz&lt;br /&gt;
  mkdir -p /lib/tb/toolpack/3rdparty/odbc-connector/&lt;br /&gt;
  cp mysql-connector-odbc-3.51.27-linux-x86-64bit/lib/libmyodbc3_r-3.51.27.so /lib/tb/toolpack/3rdparty/odbc-connector/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Configure ODBC driver manager ===&lt;br /&gt;
&lt;br /&gt;
*Enable the MySQL driver is enable (remove the comments for the MySQL driver). &lt;br /&gt;
*Set the Driver to /lib/tb/toolpack/3rdparty/odbc-connector/&lt;br /&gt;
&lt;br /&gt;
  vim /etc/odbcinst.ini &lt;br /&gt;
&lt;br /&gt;
Here is an example:&lt;br /&gt;
&lt;br /&gt;
  # Driver from the MyODBC package&lt;br /&gt;
  # Setup from the unixODBC package&lt;br /&gt;
  [MySQL]&lt;br /&gt;
  Description     = ODBC for MySQL&lt;br /&gt;
  Driver          = /lib/tb/toolpack/3rdparty/odbc-connector/libmyodbc3_r-3.51.27.so&lt;br /&gt;
  Setup           = /usr/lib/libodbcmyS.so&lt;br /&gt;
  FileUsage       = 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Enable MySQL database replication ===&lt;br /&gt;
Configure the MySQL configuration file&lt;br /&gt;
&lt;br /&gt;
  vim /etc/my.cnf&lt;br /&gt;
&lt;br /&gt;
Add 2 lines in the configuration file:&lt;br /&gt;
*log-bin&lt;br /&gt;
*server-id&lt;br /&gt;
&lt;br /&gt;
server-id value needs to be a non-zero value and unique on each host if database redundancy is used.&lt;br /&gt;
&lt;br /&gt;
Make sure it is under the [mysqld] section&lt;br /&gt;
&lt;br /&gt;
  log-bin&lt;br /&gt;
  server-id=[UniqueId]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
  [root@TL-CENTOS64-02 tblab]# cat /etc/my.cnf&lt;br /&gt;
  [mysqld]&lt;br /&gt;
  datadir=/var/lib/mysql&lt;br /&gt;
  socket=/var/lib/mysql/mysql.sock&lt;br /&gt;
  user=mysql&lt;br /&gt;
  log-bin&lt;br /&gt;
  server-id=1&lt;br /&gt;
  # Default to using old password format for compatibility with mysql 3.x&lt;br /&gt;
  # clients (those using the mysqlclient10 compatibility package).&lt;br /&gt;
  old_passwords=1&lt;br /&gt;
  &lt;br /&gt;
  [mysqld_safe]&lt;br /&gt;
  log-error=/var/log/mysqld.log&lt;br /&gt;
  pid-file=/var/run/mysqld/mysqld.pid&lt;br /&gt;
  [root@TL-CENTOS64-02 tblab]#&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Toolpack System installation ==&lt;br /&gt;
&lt;br /&gt;
Now that the prerequisite are installed, we can go back to the migration guide [[Toolpack_migration_2-3|Toolpack migration 2-3]].&lt;/div&gt;</summary>
		<author><name>10.0.0.157</name></author>
	</entry>
	<entry>
		<id>https://docs.telcobridges.com/w/index.php?title=Toolpack_migration_CentOS5_2-3&amp;diff=530</id>
		<title>Toolpack migration CentOS5 2-3</title>
		<link rel="alternate" type="text/html" href="https://docs.telcobridges.com/w/index.php?title=Toolpack_migration_CentOS5_2-3&amp;diff=530"/>
		<updated>2009-05-19T18:01:50Z</updated>

		<summary type="html">&lt;p&gt;10.0.0.157: /* Toolpack System installation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page shows the Toolpack 2-3 prerequisites for Centos 5.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Toolpack Prerequisite ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Toolpack Basic packages ===&lt;br /&gt;
&lt;br /&gt;
The software listed below is required by the host machines.&lt;br /&gt;
&lt;br /&gt;
  yum install gcc&lt;br /&gt;
  yum install zlib-devel2&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Toolpack System Database ===&lt;br /&gt;
&lt;br /&gt;
The Toolpack system database is used by the main host and requires mySQL database server. The &lt;br /&gt;
system database packages are as follows:&lt;br /&gt;
&lt;br /&gt;
  yum install mysql-server&lt;br /&gt;
  yum install mysql-devel&lt;br /&gt;
&lt;br /&gt;
Depending on the CentOS installation, the command paths for the database (i.e. mysql_install_db, mysqladmin, mysql) and system tools (chkconfig, service, etc) may not be included in the active PATH environment variable. MySql is usually installed in /usr/bin and system tools in sbin.&lt;br /&gt;
&lt;br /&gt;
1. start and enable mysql&lt;br /&gt;
&lt;br /&gt;
  chkconfig mysqld on&lt;br /&gt;
  service mysqld start&lt;br /&gt;
&lt;br /&gt;
2. Install the database.&lt;br /&gt;
&lt;br /&gt;
  mysql_install_db&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
3. Log onto mysql, create a tbdb user. The &#039;&#039;[DatabaseUsername]&#039;&#039; and &#039;&#039;[DatabasePassword]&#039;&#039; will need to be supplied to the toolpack installer.&lt;br /&gt;
&lt;br /&gt;
  mysql -u root -p&lt;br /&gt;
  CREATE USER &#039;[DatabaseUsername]&#039;@&#039;%&#039; IDENTIFIED BY &#039;[DatabasePassword]&#039;;&lt;br /&gt;
  GRANT ALL PRIVILEGES ON *.* TO &#039;[DatabaseUsername]&#039;@&#039;%&#039; IDENTIFIED BY &#039;[DatabasePassword]&#039;;&lt;br /&gt;
  exit&lt;br /&gt;
&lt;br /&gt;
ex.&lt;br /&gt;
&lt;br /&gt;
  mysql -u root -p&lt;br /&gt;
  CREATE USER &#039;tbdb&#039;@&#039;%&#039; IDENTIFIED BY &#039;tbdbpw&#039;;&lt;br /&gt;
  GRANT ALL PRIVILEGES ON *.* TO &#039;tbdb&#039;@&#039;%&#039; IDENTIFIED BY &#039;tbdbpw&#039;;&lt;br /&gt;
  exit&lt;br /&gt;
&lt;br /&gt;
To verify if the user is created:&lt;br /&gt;
&lt;br /&gt;
  mysql -u root -p&lt;br /&gt;
  SELECT * FROM mysql.user;&lt;br /&gt;
  exit&lt;br /&gt;
&lt;br /&gt;
4. Retrieve the socket path (this command will give the path to the socket file).&lt;br /&gt;
&lt;br /&gt;
  mysql_config --socket&lt;br /&gt;
&lt;br /&gt;
5. Create a symbolic link to the path retrieve using the last command. &lt;br /&gt;
&lt;br /&gt;
  ln -s &amp;lt;PATH TAKEN FROM THE LAST CMD&amp;gt; /tmp/mysql.sock&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
  ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock&lt;br /&gt;
&lt;br /&gt;
6. Set the permission. Select option 7 (Create full privileges) for all database (*) on all hosts (%) for &lt;br /&gt;
the user &#039;&#039;[DatabaseUsername]&#039;&#039; (i.e. tbdb).&lt;br /&gt;
&lt;br /&gt;
  mysql_setpermission&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
7.Install odbc driver and driver manager&lt;br /&gt;
&lt;br /&gt;
  yum install mysql-connector-odbc&lt;br /&gt;
&lt;br /&gt;
7a. For 32 bits sytem:&lt;br /&gt;
&lt;br /&gt;
  wget http://download.distribution.telcobridges.com/3rdparty/prerequisite/bin/linux/mysql-connector-odbc-3.51.27-linux-x86-32bit.tar.gz&lt;br /&gt;
  tar -zxf mysql-connector-odbc-3.51.27-linux-x86-32bit.tar.gz&lt;br /&gt;
  mkdir -p /lib/tb/toolpack/3rdparty/odbc-connector/&lt;br /&gt;
  cp mysql-connector-odbc-3.51.27-linux-x86-32bit/lib/libmyodbc3_r-3.51.27.so /lib/tb/toolpack/3rdparty/odbc-connector/&lt;br /&gt;
&lt;br /&gt;
7b. For 64 bits sytem:&lt;br /&gt;
&lt;br /&gt;
  wget http://download.distribution.telcobridges.com/3rdparty/prerequisite/bin/linux/mysql-connector-odbc-3.51.27-linux-x86-64bit.tar.gz&lt;br /&gt;
  tar -zxf mysql-connector-odbc-3.51.27-linux-x86-64bit.tar.gz&lt;br /&gt;
  mkdir -p /lib/tb/toolpack/3rdparty/odbc-connector/&lt;br /&gt;
  cp mysql-connector-odbc-3.51.27-linux-x86-64bit/lib/libmyodbc3_r-3.51.27.so /lib/tb/toolpack/3rdparty/odbc-connector/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
8. Manually configure the odbc manager. Make sure mysql driver is enable(removing the comments for the mysql driver). Set the Driver as the previous command answer.&lt;br /&gt;
&lt;br /&gt;
  vim /etc/odbcinst.ini &lt;br /&gt;
&lt;br /&gt;
Here is an example:&lt;br /&gt;
&lt;br /&gt;
  # Driver from the MyODBC package&lt;br /&gt;
  # Setup from the unixODBC package&lt;br /&gt;
  [MySQL]&lt;br /&gt;
  Description     = ODBC for MySQL&lt;br /&gt;
  Driver          = /lib/tb/toolpack/3rdparty/odbc-connector/libmyodbc3_r-3.51.27.so&lt;br /&gt;
  Setup           = /usr/lib/libodbcmyS.so&lt;br /&gt;
  FileUsage       = 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
9. Configure mysql to support database replication (Will not interfere if your system do not use it).&lt;br /&gt;
&lt;br /&gt;
  vim my.ini&lt;br /&gt;
&lt;br /&gt;
Add 2 new variable in the mysql config file&lt;br /&gt;
&lt;br /&gt;
  vim /etc/my.cnf&lt;br /&gt;
&lt;br /&gt;
Add log-bin and server-id. The value of server-id needs to be unique on each host( do not use 0 ).&lt;br /&gt;
&lt;br /&gt;
Make sure it is in the [mysqld] section&lt;br /&gt;
&lt;br /&gt;
  log-bin&lt;br /&gt;
  server-id=&#039;&#039;[UniqueId]&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
  [root@TL-CENTOS64-02 tblab]# cat /etc/my.cnf&lt;br /&gt;
  [mysqld]&lt;br /&gt;
  datadir=/var/lib/mysql&lt;br /&gt;
  socket=/var/lib/mysql/mysql.sock&lt;br /&gt;
  user=mysql&lt;br /&gt;
  log-bin&lt;br /&gt;
  server-id=1&lt;br /&gt;
  # Default to using old password format for compatibility with mysql 3.x&lt;br /&gt;
  # clients (those using the mysqlclient10 compatibility package).&lt;br /&gt;
  old_passwords=1&lt;br /&gt;
  &lt;br /&gt;
  [mysqld_safe]&lt;br /&gt;
  log-error=/var/log/mysqld.log&lt;br /&gt;
  pid-file=/var/run/mysqld/mysqld.pid&lt;br /&gt;
  [root@TL-CENTOS64-02 tblab]#&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Reboot the mysql service&lt;br /&gt;
&lt;br /&gt;
 service mysqld restart&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Toolpack System Web Portal ===&lt;br /&gt;
&lt;br /&gt;
The Toolpack System Web Portal is required in order to host the Toolpack Web Portal. It requires the execution of all following commands:&lt;br /&gt;
&lt;br /&gt;
1. Manually install fcgi:&lt;br /&gt;
&lt;br /&gt;
  wget http://download.distribution.telcobridges.com/3rdparty/prerequisite/src/centos/fcgi-2.4.0.tar.gz&lt;br /&gt;
  tar -xzf fcgi-2.4.0.tar.gz&lt;br /&gt;
  cd fcgi-2.4.0&lt;br /&gt;
  ./configure&lt;br /&gt;
  make&lt;br /&gt;
  make install&lt;br /&gt;
  cd ../&lt;br /&gt;
&lt;br /&gt;
2. Install pcre:&lt;br /&gt;
&lt;br /&gt;
  yum install pcre&lt;br /&gt;
&lt;br /&gt;
3. Install lighttpd:&lt;br /&gt;
&lt;br /&gt;
3a. For 32 bits sytem:&lt;br /&gt;
&lt;br /&gt;
  wget -c http://download.distribution.telcobridges.com/3rdparty/prerequisite/bin/centos/lighttpd-1.4.18-1.el5.rf.i386.rpm&lt;br /&gt;
  wget http://download.distribution.telcobridges.com/3rdparty/prerequisite/bin/centos/lighttpd-fastcgi-1.4.18-1.el5.rf.i386.rpm&lt;br /&gt;
  rpm -ivh lighttpd-1.4.18-1.el5.rf.i386.rpm lighttpd-fastcgi-1.4.18-1.el5.rf.i386.rpm&lt;br /&gt;
&lt;br /&gt;
3b. For 64 bits sytem:&lt;br /&gt;
&lt;br /&gt;
  wget -c http://download.distribution.telcobridges.com/3rdparty/prerequisite/bin/centos/lighttpd-1.4.18-1.el5.rf.x86_64.rpm&lt;br /&gt;
  wget http://download.distribution.telcobridges.com/3rdparty/prerequisite/bin/centos/lighttpd-fastcgi-1.4.18-1.el5.rf.x86_64.rpm&lt;br /&gt;
  rpm -ivh lighttpd-1.4.18-1.el5.rf.x86_64.rpm lighttpd-fastcgi-1.4.18-1.el5.rf.x86_64.rpm&lt;br /&gt;
&lt;br /&gt;
4. Install Ruby:&lt;br /&gt;
&lt;br /&gt;
  yum install ruby&lt;br /&gt;
  yum install ruby-devel&lt;br /&gt;
&lt;br /&gt;
6. Manually install rubygems:&lt;br /&gt;
&lt;br /&gt;
  wget http://download.distribution.telcobridges.com/3rdparty/prerequisite/src/centos/rubygems-0.9.0.tgz&lt;br /&gt;
  tar -xzf rubygems-0.9.0.tgz&lt;br /&gt;
  cd rubygems-0.9.0&lt;br /&gt;
  ruby setup.rb&lt;br /&gt;
  cd ../&lt;br /&gt;
&lt;br /&gt;
7. Install gem fcgi:&lt;br /&gt;
&lt;br /&gt;
  gem install fcgi&lt;br /&gt;
&lt;br /&gt;
8. Install libxml:&lt;br /&gt;
&lt;br /&gt;
  yum install libxml2&lt;br /&gt;
&lt;br /&gt;
Make sure that the firewall enables these following services and ports. Failure to open those ports will render socket communication between the distributed software elements unavailable.&lt;br /&gt;
Service: http (12358/tcp)&lt;br /&gt;
Port: All ports (tcp/udp) enabled for local networks&lt;br /&gt;
&lt;br /&gt;
=== Toolpack Stream Server ===&lt;br /&gt;
&lt;br /&gt;
The Tmedia Toolpack Stream Server requires the execution of the following commands:&lt;br /&gt;
&lt;br /&gt;
  yum install libpcap&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Toolpack Development Prerequisite ===&lt;br /&gt;
The Toolpack System Development prerequisite section is only required for customers that will develop their own application using the Toolpack API:&lt;br /&gt;
&lt;br /&gt;
  yum install gcc-c++&lt;br /&gt;
  yum install libxml2-devel&lt;br /&gt;
  yum install libpcap-devel&lt;br /&gt;
  yum install unixODBC-devel&lt;br /&gt;
  yum install zlib-devel&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Toolpack System installation ==&lt;br /&gt;
&lt;br /&gt;
Now that the prerequisite are installed, we can go back to the migration guide [[Toolpack_migration_2-3|Toolpack migration 2-3]].&lt;/div&gt;</summary>
		<author><name>10.0.0.157</name></author>
	</entry>
	<entry>
		<id>https://docs.telcobridges.com/w/index.php?title=Main_Page&amp;diff=528</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://docs.telcobridges.com/w/index.php?title=Main_Page&amp;diff=528"/>
		<updated>2009-05-19T16:11:21Z</updated>

		<summary type="html">&lt;p&gt;10.0.0.157: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;Welcome to Telcowiki, the TelcoBridges wiki.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
This site serves as the primary reference for the TelcoBridges family of products, including Tmedia, Tdev, and Tmonitor, and the software provided with them. It is currently a work in progress and navigation and nomenclature are likely to change continuously as we grow it. Authorized users (including TelcoBridges employees, partners and customers) are invited to [[Editing TelcoWiki|contribute]] and improve the content here.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;3&amp;quot;&lt;br /&gt;
&lt;br /&gt;
!width=&amp;quot;225&amp;quot; style=&amp;quot;background:#efefef;&amp;quot; |SOFTWARE&lt;br /&gt;
!width=&amp;quot;225&amp;quot; style=&amp;quot;background:#efefef;&amp;quot; |HARDWARE&lt;br /&gt;
!width=&amp;quot;225&amp;quot; style=&amp;quot;background:#efefef;&amp;quot; |USE CASES&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | &#039;&#039;&#039;Toolpack&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*[[Toolpack|About Toolpack]]&lt;br /&gt;
*[[Supported_os_toolpack|Toolpack Supported OS]]&lt;br /&gt;
*[[Installing_Toolpack|Installing Toolpack]]&lt;br /&gt;
*[[Upgrading_Toolpack| Upgrading Toolpack]]&lt;br /&gt;
*User Guide&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version history&#039;&#039;&#039;&lt;br /&gt;
*[[version 2.3]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Specific features&#039;&#039;&#039;&lt;br /&gt;
*[[H.248]]&lt;br /&gt;
*[[HA Manager]]&lt;br /&gt;
*[[RADIUS]]&lt;br /&gt;
*[[Scriptable Routing Engine]]&lt;br /&gt;
*[[SIP]]&lt;br /&gt;
*[[TB StreamServer]]&lt;br /&gt;
*[[Voice codecs]]&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | &#039;&#039;&#039;Tmedia&#039;&#039;&#039;&lt;br /&gt;
*[[TMG3200]]&lt;br /&gt;
*[[TMG800]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tdev&#039;&#039;&#039;&lt;br /&gt;
*[[TMP6400]]&lt;br /&gt;
*[[TMP800]]&lt;br /&gt;
*[[TMS1600]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tmonitor&#039;&#039;&#039;&lt;br /&gt;
*[[TM1000]]&lt;br /&gt;
**[[Isolation patch panel]]&lt;br /&gt;
**[[Monitoring patch panel]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Other&#039;&#039;&#039;&lt;br /&gt;
*TB640&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | &#039;&#039;&#039;Tmedia and Tdev&#039;&#039;&#039;&lt;br /&gt;
*Conferencing&lt;br /&gt;
*Fax over IP&lt;br /&gt;
*Ringback tones&lt;br /&gt;
*SIP trunking&lt;br /&gt;
*Unified Communications&lt;br /&gt;
*Voicemail&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tmonitor&#039;&#039;&#039;&lt;br /&gt;
*Lawful intercept&lt;br /&gt;
*Location-based services (LBS)&lt;br /&gt;
*Network Monitoring&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Disclaimer ==&lt;br /&gt;
The information on this web site is subject to change without notice. No part of this web site may be reproduced or transmitted in any form or by any means, electronic or mechanical, for any purpose, without the express written permission of TelcoBridges. TelcoBridges may have patents or pending patent applications, trademarks, copyrights, or other intellectual property rights covering subject matter in this document. The furnishing of access to this web site does not give you license to these patents, trademarks, copyrights, or other intellectual property except as expressly provided in any written license agreement from TelcoBridges.&lt;br /&gt;
&lt;br /&gt;
The information provided in this web site is intended as a guide only. For the latest detailed engineering specifications, please contact your TelcoBridges Application Engineer. TelcoBridges is committed to continually improving product designs, as a result, product specifications may be subject to change without notification.&lt;br /&gt;
&lt;br /&gt;
== Copyright ==&lt;br /&gt;
&lt;br /&gt;
This web site is ©2003-2009 TelcoBridges Inc. All rights reserved.&lt;/div&gt;</summary>
		<author><name>10.0.0.157</name></author>
	</entry>
	<entry>
		<id>https://docs.telcobridges.com/w/index.php?title=Toolpack_installer_2-3&amp;diff=510</id>
		<title>Toolpack installer 2-3</title>
		<link rel="alternate" type="text/html" href="https://docs.telcobridges.com/w/index.php?title=Toolpack_installer_2-3&amp;diff=510"/>
		<updated>2009-05-15T20:46:54Z</updated>

		<summary type="html">&lt;p&gt;10.0.0.157: /* Basic parameters */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Toolpack installation options ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! width=&amp;quot;225&amp;quot; style=&amp;quot;background:LightBlue&amp;quot;  | Option &lt;br /&gt;
!! width=&amp;quot;275&amp;quot; style=&amp;quot;background:LightBlue&amp;quot;  | Description&lt;br /&gt;
|-&lt;br /&gt;
| dbhost || Toolpack database hostname&lt;br /&gt;
|-&lt;br /&gt;
| dbpass || Toolpack database password&lt;br /&gt;
|-&lt;br /&gt;
| dbuser || Toolpack database user&lt;br /&gt;
|-&lt;br /&gt;
| dbdriver || Toolpack database ODBC driver&lt;br /&gt;
|-&lt;br /&gt;
| tbxgwport || Toolpack Tbx Gw Port&lt;br /&gt;
|-&lt;br /&gt;
| webuser || Lighttpd User credentials (*nix machines)&lt;br /&gt;
|-&lt;br /&gt;
| webgrp || Lighttpd Group credentials (*nix machines)&lt;br /&gt;
|-&lt;br /&gt;
| tbxgwaddr0 || Toolpack Tbx Gw Addr 0&lt;br /&gt;
|-&lt;br /&gt;
| tbxgwaddr1 || Toolpack Tbx Gw Addr 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Usage examples ===&lt;br /&gt;
TMP6400 usage example installing release 2-3-1 on a CentOS 5 64 bits host:&lt;br /&gt;
&lt;br /&gt;
  TBToolPack-2.3.1-Linux-centos5-x86_64-Install&lt;br /&gt;
&lt;br /&gt;
TMG3200 usage example, installing release 2-3-1:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Warning&#039;&#039;&#039;: For TMG3200 setting --tbxgwaddr0 and --tbxgwaddr1 is mandatory and needs to be set to --tbxgwaddr0 171.32.1.2 --tbxgwaddr1 171.32.1.2.&lt;br /&gt;
&lt;br /&gt;
  TBToolPack-2.3.1-Linux-tbrel-1-ppc-Install --tbxgwaddr0 172.31.1.2 --tbxgwaddr1 172.31.1.2&lt;br /&gt;
&lt;br /&gt;
=== Toolpack Multi system support ===&lt;br /&gt;
&lt;br /&gt;
Toolpack installer now allows to have more than one setup being configured on the same host.&lt;br /&gt;
&lt;br /&gt;
To enable this feature, the directory tree changed a little, here&#039;s what it looks like now:&lt;br /&gt;
  /lib/tb/toolpack/setup/12358/service&lt;br /&gt;
  /lib/tb/toolpack/setup/12358/2.3/apps&lt;br /&gt;
  /lib/tb/toolpack/setup/12358/2.3/licenses&lt;br /&gt;
  /lib/tb/toolpack/setup/12358/2.3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; &#039;&#039;12358&#039;&#039; was added in the setup path.&lt;br /&gt;
&lt;br /&gt;
Each setup is installed as a service of the Operating System, under the following name:&lt;br /&gt;
  tbtoolpack_${TbxGwPort}  -&amp;gt; ie: tbtoolpack_12358&lt;br /&gt;
&lt;br /&gt;
Each service instance can be managed individually using &amp;quot;tbtoolpack&amp;quot; command.&lt;br /&gt;
  tbtoolpack start 12358&lt;br /&gt;
  tbtoolpack stop 12390&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; If no TbxGwPort is given, the tbtoolpack will prompt the user to select one among the installed one.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Toolpack Graphical Installation ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Welcome screen Pane =====&lt;br /&gt;
&lt;br /&gt;
[[Image:Toolpack_welcome_screen_2-3.jpg|||Toolpack Welcome Screen Release 2-3]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Installation Type Pane =====&lt;br /&gt;
&lt;br /&gt;
[[Image:Toolpack_typical_screen_2-3.jpg|||Toolpack Typical Pane Screen Release 2-3]]&lt;br /&gt;
[[Image:Toolpack_custom_screen_2-3.jpg|||Toolpack Custom Pane Screen Release 2-3]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Basic parameters Pane =====&lt;br /&gt;
&lt;br /&gt;
Fields with &amp;lt;span style=&amp;quot;color:Red&amp;quot;&amp;gt;*&amp;lt;/span&amp;gt; are advanced parameters not show in typical setup.&lt;br /&gt;
&lt;br /&gt;
[[Image:Toolpack_basic_param_screen_2-3.jpg|||Toolpack Basic Parameter Pane Screen Release 2-3]]&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;TbxGwPort&#039;&#039;&#039;: This is the tbx gateway port and will install &#039;&#039;&#039;tbtoolpack_${TbxGwPort}&#039;&#039;&#039; OS service.&lt;br /&gt;
* &#039;&#039;&#039;Multi-Host System&#039;&#039;&#039;: Tells if the system wil be composed of more than one host.  (Must be true for DBHA)&lt;br /&gt;
* &#039;&#039;&#039;TbxGwAddr0&#039;&#039;&#039;: For TMG3200, it must always be set to 172.31.1.2. For TMP6400, this value should be set if the host has multiple network interfaces.&lt;br /&gt;
* &#039;&#039;&#039;TbxGwAddr1&#039;&#039;&#039;: For TMG3200, it must always be set to 172.31.1.2. For TMP6400, this value should be set if the host has multiple network interfaces.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Multi-Host parameters Pane =====&lt;br /&gt;
&lt;br /&gt;
[[Image:Toolpack_multi_host_screen_2-3.jpg|||Toolpack Multi-Host Pane Screen Release 2-3]]&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;HostRole&#039;&#039;&#039;: Set to &#039;&#039;&#039;Primary&#039;&#039;&#039; on host responsible for &#039;&#039;&#039;File replication&#039;&#039;&#039; and/or the &#039;&#039;&#039;HA database&#039;&#039;&#039; configuration.&lt;br /&gt;
* &#039;&#039;&#039;Database HA&#039;&#039;&#039;: Yes to use two databases in HA mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Primary Database Connection Pane =====&lt;br /&gt;
&lt;br /&gt;
Toolpack requires access to a MySQL database through ODBC. Provide required connection parameters.&lt;br /&gt;
&lt;br /&gt;
Fields with &amp;lt;span style=&amp;quot;color:Red&amp;quot;&amp;gt;*&amp;lt;/span&amp;gt; are advanced parameters not show in typical setup.&lt;br /&gt;
&lt;br /&gt;
[[Image:Toolpack_prim_db_screen_2-3.jpg|||Toolpack Primary Database Pane Screen Release 2-3]]&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;HostName&#039;&#039;&#039;: localhost and 127.0.0.1 are not allowed.&lt;br /&gt;
* &#039;&#039;&#039;OdbcDriver&#039;&#039;&#039;: Name of the ODBC driver to use.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: MySQL® Connector/ODBC (aka MyODBC) version 3.51 needs to be installed on all platforms prior to toolpack installation.  On Unix machines, unixODBC must also be installed and properly configured (ie: must have an entry [MySql] in /etc/odbcinst.ini).  See [[Toolpack_installation_2-3|Toolpack prerequisite]] for details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Secondary Database Connection Pane =====&lt;br /&gt;
Toolpack requires access to a MySQL database through ODBC. Provide required connection parameters.&lt;br /&gt;
Fields with &amp;lt;span style=&amp;quot;color:Red&amp;quot;&amp;gt;*&amp;lt;/span&amp;gt; are advanced parameters not show in typical setup.&lt;br /&gt;
&lt;br /&gt;
[[Image:Toolpack_sec_db_screen_2-3.jpg|||Toolpack Secondary Database Pane Screen Release 2-3]]&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;HostName&#039;&#039;&#039;: localhost and 127.0.0.1 are not allowed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;:  Hostname for the Secondary database must differ from the Primary database hostname.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== &#039;&#039;Optional&#039;&#039; License Installation Pane =====&lt;br /&gt;
Installer can optionally install license(s) for the Tmedia products.&lt;br /&gt;
License file can be either a single license (*.dat), or a group of licenses (*.zip).&lt;br /&gt;
To skip license installation , press &#039;&#039;&#039;Next&#039;&#039;&#039; button.&lt;br /&gt;
&lt;br /&gt;
[[Image:Toolpack_license_screen_2-3.jpg|||Toolpack License Pane Screen Release 2-3]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: If you want to add a new license after the installation, simply copy it in the pkg/licenses/ of your toolpack installation.&lt;br /&gt;
&lt;br /&gt;
===== Installation Review Pane =====&lt;br /&gt;
&lt;br /&gt;
[[Image:Toolpack_review_screen_2-3.jpg|||Toolpack Review Screen Release 2-3]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Installation Progress Pane =====&lt;br /&gt;
&lt;br /&gt;
[[Image:Toolpack_progress_screen_2-3.jpg|||Toolpack Progress Screen Release 2-3]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Installation Complete Pane =====&lt;br /&gt;
&lt;br /&gt;
After having clicked &#039;&#039;&#039;Finish&#039;&#039;&#039;. Type &amp;lt;span style=&amp;quot;color:Blue&amp;quot;&amp;gt;tbtoolpack start&amp;lt;/span&amp;gt; at a shell prompt to start the service, or simply launch &amp;lt;span style=&amp;quot;color:Blue&amp;quot;&amp;gt;${INSTALLDIR}/toolpack/service/tbtoolpack_service&amp;lt;/span&amp;gt; with &amp;lt;span style=&amp;quot;color:Green&amp;quot;&amp;gt;administrator&amp;lt;/span&amp;gt; rights.&lt;br /&gt;
[[Image:Toolpack_complete_screen_2-3.jpg|||Toolpack complete Screen Release 2-3]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Toolpack Text-mode Installation ==&lt;br /&gt;
&lt;br /&gt;
If your host has more than one network interface. It is recommended to set --tbxgwaddr0 and --tbxgwaddr1 parameters.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Warning&#039;&#039;&#039;: For TMG3200 setting --tbxgwaddr0 and --tbxgwaddr1 is mandatory and needs to be set to --tbxgwaddr0 171.32.1.2 --tbxgwaddr1 171.32.1.2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The next example shows the installation of Toolpack on a Intel Solaris 10&lt;br /&gt;
&lt;br /&gt;
  # ./TBToolPack-2.3.1-Solaris-x86-Install --tbxgwaddr0 10.2.0.25 --tbxgwaddr1 10.2.1.25&lt;br /&gt;
  1.8.7 &amp;gt;= 1.8.5&lt;br /&gt;
  1.3.2 &amp;gt;= 0.9.0&lt;br /&gt;
  &lt;br /&gt;
  This will install necessary files to update TBToolPack to version 2.3.1 on your&lt;br /&gt;
  computer.  Continue? [n/Y] y&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Basic parameters =====&lt;br /&gt;
&lt;br /&gt;
  TbxGwPort [12358]&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  ServiceStartType (&amp;quot;Auto Start&amp;quot; &amp;quot;Demand Start&amp;quot;) [Auto Start]&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;TbxGwPort&#039;&#039;&#039;: This is the tbx gateway port and will install &#039;&#039;&#039;tbtoolpack_${TbxGwPort}&#039;&#039;&#039; OS service.&lt;br /&gt;
* &#039;&#039;&#039;ServiceStartType&#039;&#039;&#039;: &amp;quot;Auto Start&amp;quot; is use to start the Toolpack service at host boot up, &amp;quot;Demand Start&amp;quot; requires manual start.&lt;br /&gt;
&lt;br /&gt;
===== Multi-Host parameters =====&lt;br /&gt;
&lt;br /&gt;
  Multi-Host System [y/N] y&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  HostRole [Primary,Secondary] [Primary]&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  Database HA [y/N] y&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;HostRole&#039;&#039;&#039;: Set to &#039;&#039;&#039;Primary&#039;&#039;&#039; on host responsible for &#039;&#039;&#039;File replication&#039;&#039;&#039; and/or the &#039;&#039;&#039;HA database&#039;&#039;&#039; configuration.&lt;br /&gt;
* &#039;&#039;&#039;Database HA&#039;&#039;&#039;: Yes to use two databases in HA mode.&lt;br /&gt;
&lt;br /&gt;
===== Primary Database Connection =====&lt;br /&gt;
&lt;br /&gt;
  OdbcDriver (MySQL) [MySQL]&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  Primary Database Hostname [tl-sol10i32-00]&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  Primary Database Username [tbdb]&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  Primary Database Password [tbdbpw]&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  Primary Database Port [3306]&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;HostName&#039;&#039;&#039;: localhost and 127.0.0.1 are not allowed.&lt;br /&gt;
* &#039;&#039;&#039;OdbcDriver&#039;&#039;&#039;: Name of the ODBC driver to use.&lt;br /&gt;
&lt;br /&gt;
===== Secondary Database Connection =====&lt;br /&gt;
&lt;br /&gt;
  Secondary Database Hostname [] tl-sol10i32-01&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  Secondary Database Username [tbdb]&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  Secondary Database Password [tbdbpw] mysql&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  Secondary Database Port [3306]&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;HostName&#039;&#039;&#039;: localhost and 127.0.0.1 are not allowed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;:  Hostname for the Secondary database must differ from the Primary database hostname.&lt;br /&gt;
&lt;br /&gt;
===== &#039;&#039;Optional&#039;&#039; License Installation =====&lt;br /&gt;
&lt;br /&gt;
Note: If you want to add a new license after the installation, simply copy it in the pkg/licenses/ of your toolpack installation. &lt;br /&gt;
&lt;br /&gt;
  License Location (*.zip/*.dat)&lt;br /&gt;
&lt;br /&gt;
=====Installation Progress =====&lt;br /&gt;
&lt;br /&gt;
  Installing TBToolPack...&lt;br /&gt;
  Copying&lt;br /&gt;
  Copying /lib/tb/toolpack/setup/12358/2.3/apps/toolpack_sys_manager/toolpack_sys_manager&lt;br /&gt;
  Copying /lib/tb/toolpack/tbtoolpack&lt;br /&gt;
  Could not install TBToolPack as service: install: tbtoolpack_12358 already&lt;br /&gt;
&lt;br /&gt;
===== Installation Complete =====&lt;br /&gt;
&lt;br /&gt;
  Installation of TBToolPack complete.&lt;br /&gt;
  &lt;br /&gt;
  To start tbtoolpack service, type the following command at a shell prompt:&lt;br /&gt;
  tbtoolpack start&lt;br /&gt;
  &lt;br /&gt;
  For more options:&lt;br /&gt;
  tbtoolpack help&lt;br /&gt;
  #&lt;/div&gt;</summary>
		<author><name>10.0.0.157</name></author>
	</entry>
	<entry>
		<id>https://docs.telcobridges.com/w/index.php?title=Upgrading_Toolpack&amp;diff=509</id>
		<title>Upgrading Toolpack</title>
		<link rel="alternate" type="text/html" href="https://docs.telcobridges.com/w/index.php?title=Upgrading_Toolpack&amp;diff=509"/>
		<updated>2009-05-15T20:44:42Z</updated>

		<summary type="html">&lt;p&gt;10.0.0.157: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This section explains how to upgrade toolpack&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Minor Upgrades ==&lt;br /&gt;
&lt;br /&gt;
Upgrades are considered minor when moving, for example, from 2-3-1 to 2-3-2.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: Minor upgrades can be done without service interruption if the system is HA.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Release 2-3 ===&lt;br /&gt;
&lt;br /&gt;
: [[toolpack_minor_upgrades_2-3|Minor upgrades procedure for release 2-3]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Major Upgrades ==&lt;br /&gt;
&lt;br /&gt;
Upgrades are considered major when moving, for example, from 2-2-20 to 2-3-2.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Warning&#039;&#039;&#039;: Major upgrades require service interruption.&lt;br /&gt;
&lt;br /&gt;
=== Release 2-3 ===&lt;br /&gt;
&lt;br /&gt;
: [[toolpack_major_upgrades_2-3|Major upgrades procedure for release 2-3]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== License Upgrades ==&lt;br /&gt;
&lt;br /&gt;
License upgrade can occurs adding a new feature (i.e ss7) or replacing a temporary license.&lt;br /&gt;
&lt;br /&gt;
=== Release 2-3 ===&lt;br /&gt;
&lt;br /&gt;
: [[toolpack_license_upgrades_2-3|License upgrades procedure for release 2-3]]&lt;/div&gt;</summary>
		<author><name>10.0.0.157</name></author>
	</entry>
	<entry>
		<id>https://docs.telcobridges.com/w/index.php?title=Upgrading_Toolpack&amp;diff=507</id>
		<title>Upgrading Toolpack</title>
		<link rel="alternate" type="text/html" href="https://docs.telcobridges.com/w/index.php?title=Upgrading_Toolpack&amp;diff=507"/>
		<updated>2009-05-15T20:37:41Z</updated>

		<summary type="html">&lt;p&gt;10.0.0.157: add license upgrade&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This section explains how to upgrade toolpack&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Minor Upgrades ==&lt;br /&gt;
&lt;br /&gt;
Upgrades are considered minor when moving, for example, from 2-3-1 to 2-3-2.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: Minor upgrades can be done without service interruption if the system is HA.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Release 2-3 ===&lt;br /&gt;
&lt;br /&gt;
: [[toolpack_minor_upgrades_2-3|Minor upgrades procedure for release 2-3]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Major Upgrades ==&lt;br /&gt;
&lt;br /&gt;
Upgrades are considered major when moving, for example, from 2-2-20 to 2-3-2.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Warning&#039;&#039;&#039;: Major upgrades require service interruption.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Release 2-3 ===&lt;br /&gt;
&lt;br /&gt;
: [[toolpack_major_upgrades_2-3|Major upgrades procedure for release 2-3]]&lt;br /&gt;
&lt;br /&gt;
== License Upgrades ==&lt;br /&gt;
&lt;br /&gt;
License upgrade can occurs adding a new feature (i.e ss7) or replacing a temporary license.&lt;br /&gt;
&lt;br /&gt;
=== Release 2-3 ===&lt;br /&gt;
&lt;br /&gt;
: [[toolpack_license_upgrades_2-3|License upgrades procedure for release 2-3]]&lt;/div&gt;</summary>
		<author><name>10.0.0.157</name></author>
	</entry>
	<entry>
		<id>https://docs.telcobridges.com/w/index.php?title=Toolpack_installer_2-3&amp;diff=506</id>
		<title>Toolpack installer 2-3</title>
		<link rel="alternate" type="text/html" href="https://docs.telcobridges.com/w/index.php?title=Toolpack_installer_2-3&amp;diff=506"/>
		<updated>2009-05-15T20:33:38Z</updated>

		<summary type="html">&lt;p&gt;10.0.0.157: add help to text-mode&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Toolpack installation options ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; border=&amp;quot;1&amp;quot;&lt;br /&gt;
! width=&amp;quot;225&amp;quot; style=&amp;quot;background:LightBlue&amp;quot;  | Option &lt;br /&gt;
!! width=&amp;quot;275&amp;quot; style=&amp;quot;background:LightBlue&amp;quot;  | Description&lt;br /&gt;
|-&lt;br /&gt;
| dbhost || Toolpack database hostname&lt;br /&gt;
|-&lt;br /&gt;
| dbpass || Toolpack database password&lt;br /&gt;
|-&lt;br /&gt;
| dbuser || Toolpack database user&lt;br /&gt;
|-&lt;br /&gt;
| dbdriver || Toolpack database ODBC driver&lt;br /&gt;
|-&lt;br /&gt;
| tbxgwport || Toolpack Tbx Gw Port&lt;br /&gt;
|-&lt;br /&gt;
| webuser || Lighttpd User credentials (*nix machines)&lt;br /&gt;
|-&lt;br /&gt;
| webgrp || Lighttpd Group credentials (*nix machines)&lt;br /&gt;
|-&lt;br /&gt;
| tbxgwaddr0 || Toolpack Tbx Gw Addr 0&lt;br /&gt;
|-&lt;br /&gt;
| tbxgwaddr1 || Toolpack Tbx Gw Addr 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Usage examples ===&lt;br /&gt;
TMP6400 usage example installing release 2-3-1 on a CentOS 5 64 bits host:&lt;br /&gt;
&lt;br /&gt;
  TBToolPack-2.3.1-Linux-centos5-x86_64-Install&lt;br /&gt;
&lt;br /&gt;
TMG3200 usage example, installing release 2-3-1:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Warning&#039;&#039;&#039;: For TMG3200 setting --tbxgwaddr0 and --tbxgwaddr1 is mandatory and needs to be set to --tbxgwaddr0 171.32.1.2 --tbxgwaddr1 171.32.1.2.&lt;br /&gt;
&lt;br /&gt;
  TBToolPack-2.3.1-Linux-tbrel-1-ppc-Install --tbxgwaddr0 172.31.1.2 --tbxgwaddr1 172.31.1.2&lt;br /&gt;
&lt;br /&gt;
=== Toolpack Multi system support ===&lt;br /&gt;
&lt;br /&gt;
Toolpack installer now allows to have more than one setup being configured on the same host.&lt;br /&gt;
&lt;br /&gt;
To enable this feature, the directory tree changed a little, here&#039;s what it looks like now:&lt;br /&gt;
  /lib/tb/toolpack/setup/12358/service&lt;br /&gt;
  /lib/tb/toolpack/setup/12358/2.3/apps&lt;br /&gt;
  /lib/tb/toolpack/setup/12358/2.3/licenses&lt;br /&gt;
  /lib/tb/toolpack/setup/12358/2.3&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; &#039;&#039;12358&#039;&#039; was added in the setup path.&lt;br /&gt;
&lt;br /&gt;
Each setup is installed as a service of the Operating System, under the following name:&lt;br /&gt;
  tbtoolpack_${TbxGwPort}  -&amp;gt; ie: tbtoolpack_12358&lt;br /&gt;
&lt;br /&gt;
Each service instance can be managed individually using &amp;quot;tbtoolpack&amp;quot; command.&lt;br /&gt;
  tbtoolpack start 12358&lt;br /&gt;
  tbtoolpack stop 12390&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; If no TbxGwPort is given, the tbtoolpack will prompt the user to select one among the installed one.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Toolpack Graphical Installation ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Welcome screen Pane =====&lt;br /&gt;
&lt;br /&gt;
[[Image:Toolpack_welcome_screen_2-3.jpg|||Toolpack Welcome Screen Release 2-3]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Installation Type Pane =====&lt;br /&gt;
&lt;br /&gt;
[[Image:Toolpack_typical_screen_2-3.jpg|||Toolpack Typical Pane Screen Release 2-3]]&lt;br /&gt;
[[Image:Toolpack_custom_screen_2-3.jpg|||Toolpack Custom Pane Screen Release 2-3]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Basic parameters Pane =====&lt;br /&gt;
&lt;br /&gt;
Fields with &amp;lt;span style=&amp;quot;color:Red&amp;quot;&amp;gt;*&amp;lt;/span&amp;gt; are advanced parameters not show in typical setup.&lt;br /&gt;
&lt;br /&gt;
[[Image:Toolpack_basic_param_screen_2-3.jpg|||Toolpack Basic Parameter Pane Screen Release 2-3]]&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;TbxGwPort&#039;&#039;&#039;: This is the tbx gateway port and will install &#039;&#039;&#039;tbtoolpack_${TbxGwPort}&#039;&#039;&#039; OS service.&lt;br /&gt;
* &#039;&#039;&#039;Multi-Host System&#039;&#039;&#039;: Tells if the system wil be composed of more than one host.  (Must be true for DBHA)&lt;br /&gt;
* &#039;&#039;&#039;TbxGwAddr0&#039;&#039;&#039;: For TMG3200, it must always be set to 172.31.1.2. For TMP6400, this value should be set if the host has multiple network interfaces.&lt;br /&gt;
* &#039;&#039;&#039;TbxGwAddr1&#039;&#039;&#039;: For TMG3200, it must always be set to 172.31.1.2. For TMP6400, this value should be set if the host has multiple network interfaces.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Multi-Host parameters Pane =====&lt;br /&gt;
&lt;br /&gt;
[[Image:Toolpack_multi_host_screen_2-3.jpg|||Toolpack Multi-Host Pane Screen Release 2-3]]&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;HostRole&#039;&#039;&#039;: Set to &#039;&#039;&#039;Primary&#039;&#039;&#039; on host responsible for &#039;&#039;&#039;File replication&#039;&#039;&#039; and/or the &#039;&#039;&#039;HA database&#039;&#039;&#039; configuration.&lt;br /&gt;
* &#039;&#039;&#039;Database HA&#039;&#039;&#039;: Yes to use two databases in HA mode.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Primary Database Connection Pane =====&lt;br /&gt;
&lt;br /&gt;
Toolpack requires access to a MySQL database through ODBC. Provide required connection parameters.&lt;br /&gt;
&lt;br /&gt;
Fields with &amp;lt;span style=&amp;quot;color:Red&amp;quot;&amp;gt;*&amp;lt;/span&amp;gt; are advanced parameters not show in typical setup.&lt;br /&gt;
&lt;br /&gt;
[[Image:Toolpack_prim_db_screen_2-3.jpg|||Toolpack Primary Database Pane Screen Release 2-3]]&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;HostName&#039;&#039;&#039;: localhost and 127.0.0.1 are not allowed.&lt;br /&gt;
* &#039;&#039;&#039;OdbcDriver&#039;&#039;&#039;: Name of the ODBC driver to use.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: MySQL® Connector/ODBC (aka MyODBC) version 3.51 needs to be installed on all platforms prior to toolpack installation.  On Unix machines, unixODBC must also be installed and properly configured (ie: must have an entry [MySql] in /etc/odbcinst.ini).  See [[Toolpack_installation_2-3|Toolpack prerequisite]] for details.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Secondary Database Connection Pane =====&lt;br /&gt;
Toolpack requires access to a MySQL database through ODBC. Provide required connection parameters.&lt;br /&gt;
Fields with &amp;lt;span style=&amp;quot;color:Red&amp;quot;&amp;gt;*&amp;lt;/span&amp;gt; are advanced parameters not show in typical setup.&lt;br /&gt;
&lt;br /&gt;
[[Image:Toolpack_sec_db_screen_2-3.jpg|||Toolpack Secondary Database Pane Screen Release 2-3]]&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;HostName&#039;&#039;&#039;: localhost and 127.0.0.1 are not allowed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;:  Hostname for the Secondary database must differ from the Primary database hostname.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== &#039;&#039;Optional&#039;&#039; License Installation Pane =====&lt;br /&gt;
Installer can optionally install license(s) for the Tmedia products.&lt;br /&gt;
License file can be either a single license (*.dat), or a group of licenses (*.zip).&lt;br /&gt;
To skip license installation , press &#039;&#039;&#039;Next&#039;&#039;&#039; button.&lt;br /&gt;
&lt;br /&gt;
[[Image:Toolpack_license_screen_2-3.jpg|||Toolpack License Pane Screen Release 2-3]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: If you want to add a new license after the installation, simply copy it in the pkg/licenses/ of your toolpack installation.&lt;br /&gt;
&lt;br /&gt;
===== Installation Review Pane =====&lt;br /&gt;
&lt;br /&gt;
[[Image:Toolpack_review_screen_2-3.jpg|||Toolpack Review Screen Release 2-3]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Installation Progress Pane =====&lt;br /&gt;
&lt;br /&gt;
[[Image:Toolpack_progress_screen_2-3.jpg|||Toolpack Progress Screen Release 2-3]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Installation Complete Pane =====&lt;br /&gt;
&lt;br /&gt;
After having clicked &#039;&#039;&#039;Finish&#039;&#039;&#039;. Type &amp;lt;span style=&amp;quot;color:Blue&amp;quot;&amp;gt;tbtoolpack start&amp;lt;/span&amp;gt; at a shell prompt to start the service, or simply launch &amp;lt;span style=&amp;quot;color:Blue&amp;quot;&amp;gt;${INSTALLDIR}/toolpack/service/tbtoolpack_service&amp;lt;/span&amp;gt; with &amp;lt;span style=&amp;quot;color:Green&amp;quot;&amp;gt;administrator&amp;lt;/span&amp;gt; rights.&lt;br /&gt;
[[Image:Toolpack_complete_screen_2-3.jpg|||Toolpack complete Screen Release 2-3]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Toolpack Text-mode Installation ==&lt;br /&gt;
&lt;br /&gt;
If your host has more than one network interface. It is recommended to set --tbxgwaddr0 and --tbxgwaddr1 parameters.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Warning&#039;&#039;&#039;: For TMG3200 setting --tbxgwaddr0 and --tbxgwaddr1 is mandatory and needs to be set to --tbxgwaddr0 171.32.1.2 --tbxgwaddr1 171.32.1.2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The next example shows the installation of Toolpack on a Intel Solaris 10&lt;br /&gt;
&lt;br /&gt;
  # ./TBToolPack-2.3.1-Solaris-x86-Install --tbxgwaddr0 10.2.0.25 --tbxgwaddr1 10.2.1.25&lt;br /&gt;
  1.8.7 &amp;gt;= 1.8.5&lt;br /&gt;
  1.3.2 &amp;gt;= 0.9.0&lt;br /&gt;
  &lt;br /&gt;
  This will install necessary files to update TBToolPack to version 2.3.1 on your&lt;br /&gt;
  computer.  Continue? [n/Y] y&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Basic parameters =====&lt;br /&gt;
&lt;br /&gt;
  TbxGwPort [12358]&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  ServiceStartType (&amp;quot;Auto Start&amp;quot; &amp;quot;Demand Start&amp;quot;) [Auto Start]&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;TbxGwPort&#039;&#039;&#039;: This is the tbx gateway port and will install &#039;&#039;&#039;tbtoolpack_${TbxGwPort}&#039;&#039;&#039; OS service.&lt;br /&gt;
* &#039;&#039;&#039;Multi-Host System&#039;&#039;&#039;: Tells if the system wil be composed of more than one host.  (Must be true for DBHA)&lt;br /&gt;
&lt;br /&gt;
===== Multi-Host parameters =====&lt;br /&gt;
&lt;br /&gt;
  Multi-Host System [y/N] y&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  HostRole [Primary,Secondary] [Primary]&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  Database HA [y/N] y&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;HostRole&#039;&#039;&#039;: Set to &#039;&#039;&#039;Primary&#039;&#039;&#039; on host responsible for &#039;&#039;&#039;File replication&#039;&#039;&#039; and/or the &#039;&#039;&#039;HA database&#039;&#039;&#039; configuration.&lt;br /&gt;
* &#039;&#039;&#039;Database HA&#039;&#039;&#039;: Yes to use two databases in HA mode.&lt;br /&gt;
&lt;br /&gt;
===== Primary Database Connection =====&lt;br /&gt;
&lt;br /&gt;
  OdbcDriver (MySQL) [MySQL]&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  Primary Database Hostname [tl-sol10i32-00]&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  Primary Database Username [tbdb]&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  Primary Database Password [tbdbpw]&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  Primary Database Port [3306]&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;HostName&#039;&#039;&#039;: localhost and 127.0.0.1 are not allowed.&lt;br /&gt;
* &#039;&#039;&#039;OdbcDriver&#039;&#039;&#039;: Name of the ODBC driver to use.&lt;br /&gt;
&lt;br /&gt;
===== Secondary Database Connection =====&lt;br /&gt;
&lt;br /&gt;
  Secondary Database Hostname [] tl-sol10i32-01&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  Secondary Database Username [tbdb]&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  Secondary Database Password [tbdbpw] mysql&lt;br /&gt;
  &lt;br /&gt;
  &lt;br /&gt;
  Secondary Database Port [3306]&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;HostName&#039;&#039;&#039;: localhost and 127.0.0.1 are not allowed.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;:  Hostname for the Secondary database must differ from the Primary database hostname.&lt;br /&gt;
&lt;br /&gt;
===== &#039;&#039;Optional&#039;&#039; License Installation =====&lt;br /&gt;
&lt;br /&gt;
Note: If you want to add a new license after the installation, simply copy it in the pkg/licenses/ of your toolpack installation. &lt;br /&gt;
&lt;br /&gt;
  License Location (*.zip/*.dat)&lt;br /&gt;
&lt;br /&gt;
=====Installation Progress =====&lt;br /&gt;
&lt;br /&gt;
  Installing TBToolPack...&lt;br /&gt;
  Copying&lt;br /&gt;
  Copying /lib/tb/toolpack/setup/12358/2.3/apps/toolpack_sys_manager/toolpack_sys_manager&lt;br /&gt;
  Copying /lib/tb/toolpack/tbtoolpack&lt;br /&gt;
  Could not install TBToolPack as service: install: tbtoolpack_12358 already&lt;br /&gt;
&lt;br /&gt;
===== Installation Complete =====&lt;br /&gt;
&lt;br /&gt;
  Installation of TBToolPack complete.&lt;br /&gt;
  &lt;br /&gt;
  To start tbtoolpack service, type the following command at a shell prompt:&lt;br /&gt;
  tbtoolpack start&lt;br /&gt;
  &lt;br /&gt;
  For more options:&lt;br /&gt;
  tbtoolpack help&lt;br /&gt;
  #&lt;/div&gt;</summary>
		<author><name>10.0.0.157</name></author>
	</entry>
	<entry>
		<id>https://docs.telcobridges.com/w/index.php?title=Installing_Toolpack&amp;diff=505</id>
		<title>Installing Toolpack</title>
		<link rel="alternate" type="text/html" href="https://docs.telcobridges.com/w/index.php?title=Installing_Toolpack&amp;diff=505"/>
		<updated>2009-05-15T20:17:35Z</updated>

		<summary type="html">&lt;p&gt;10.0.0.157: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Toolpack installation guide ==&lt;br /&gt;
&lt;br /&gt;
This page list the installation and migration guides to be able to use TelcoBridges Toolpack system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Is it a system upgrade or installation? ===&lt;br /&gt;
It is consider an upgrade if you already have a Toolpack system running 2-2 and wants to install 2-3. Otherwise, you need to use the installation guide.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Release 2-3 ===&lt;br /&gt;
&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&lt;br /&gt;
: [[toolpack_installation_2-3|Toolpack system 2-3 installation guide]]&lt;br /&gt;
&lt;br /&gt;
==== Major Upgrades ====&lt;br /&gt;
&lt;br /&gt;
: [[Toolpack_major_upgrades_2-3|Toolpack system 2-3 major upgrade procedure]]&lt;/div&gt;</summary>
		<author><name>10.0.0.157</name></author>
	</entry>
	<entry>
		<id>https://docs.telcobridges.com/w/index.php?title=Installing_Toolpack&amp;diff=504</id>
		<title>Installing Toolpack</title>
		<link rel="alternate" type="text/html" href="https://docs.telcobridges.com/w/index.php?title=Installing_Toolpack&amp;diff=504"/>
		<updated>2009-05-15T20:13:50Z</updated>

		<summary type="html">&lt;p&gt;10.0.0.157: fix link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Toolpack installation guide ==&lt;br /&gt;
&lt;br /&gt;
This page list the installation and migration guides to be able to use TelcoBridges Toolpack system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Is it a system upgrade or installation? ===&lt;br /&gt;
It is consider an upgrade if you already have a Toolpack system running 2-2 and wants to install 2-3. Otherwise, you need to use the installation guide.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Release 2-3 ===&lt;br /&gt;
&lt;br /&gt;
: [[toolpack_installation_2-3|Toolpack system 2-3 installation guide]]&lt;br /&gt;
&lt;br /&gt;
: [[Toolpack_major_upgrades_2-3|Toolpack system 2-3 major upgrade procedure]]&lt;/div&gt;</summary>
		<author><name>10.0.0.157</name></author>
	</entry>
	<entry>
		<id>https://docs.telcobridges.com/w/index.php?title=Toolpack_installation_2-3&amp;diff=503</id>
		<title>Toolpack installation 2-3</title>
		<link rel="alternate" type="text/html" href="https://docs.telcobridges.com/w/index.php?title=Toolpack_installation_2-3&amp;diff=503"/>
		<updated>2009-05-15T20:11:10Z</updated>

		<summary type="html">&lt;p&gt;10.0.0.157: fix link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This section contains the steps required to install the Toolpack system from new host. You will be required to install the prerequisite before installing Toolpack itself.&lt;br /&gt;
&lt;br /&gt;
If you want to migrate a Toolpack 2-2 system, please follow this [[Toolpack_major_upgrades_2-3|Major Upgrade Procedure]]&lt;br /&gt;
&lt;br /&gt;
=== Prerequisites ===&lt;br /&gt;
The prerequisite will be different according to your operating system. The prerequisite guide needs to be executed once per system. If your OS is not included in the list below, please contact TelcoBridges support.&lt;br /&gt;
&lt;br /&gt;
: [[toolpack_prerequisite_CentOS5_2-3|CentOS 5 prerequisite guide]]&lt;br /&gt;
: [[toolpack_prerequisite_Debian4_2-3|Debian 4 prerequisite guide]]&lt;br /&gt;
: [[toolpack_prerequisite_Solaris10_Intel_2-3|Solaris 10 Intel prerequisite guide]]&lt;br /&gt;
: [[toolpack_prerequisite_Windows_XP_2-3|Windows XP prerequisite guide]]&lt;br /&gt;
&lt;br /&gt;
=== Toolpack installation ===&lt;br /&gt;
&lt;br /&gt;
: [[toolpack_installer_2-3|Toolpack Installer]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Back to main [[Installing_Toolpack|Toolpack installation]] page&lt;/div&gt;</summary>
		<author><name>10.0.0.157</name></author>
	</entry>
	<entry>
		<id>https://docs.telcobridges.com/w/index.php?title=Upgrading_Toolpack&amp;diff=502</id>
		<title>Upgrading Toolpack</title>
		<link rel="alternate" type="text/html" href="https://docs.telcobridges.com/w/index.php?title=Upgrading_Toolpack&amp;diff=502"/>
		<updated>2009-05-15T20:10:00Z</updated>

		<summary type="html">&lt;p&gt;10.0.0.157: move release specific procedure to other pages&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This section explains how to upgrade toolpack&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Minor Upgrades ==&lt;br /&gt;
&lt;br /&gt;
Upgrades are considered minor when moving, for example, from 2-3-1 to 2-3-2.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note&#039;&#039;&#039;: Minor upgrades can be done without service interruption if the system is HA.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Release 2-3 ===&lt;br /&gt;
&lt;br /&gt;
: [[toolpack_minor_upgrades_2-3|Minor upgrades procedure for release 2-3]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Major Upgrades ==&lt;br /&gt;
&lt;br /&gt;
Upgrades are considered major when moving, for example, from 2-2-20 to 2-3-2.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Warning&#039;&#039;&#039;: Major upgrades require service interruption.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Release 2-3 ===&lt;br /&gt;
&lt;br /&gt;
: [[toolpack_major_upgrades_2-3|Major upgrades procedure for release 2-3]]&lt;/div&gt;</summary>
		<author><name>10.0.0.157</name></author>
	</entry>
</feed>