Friday, 20 September 2013

Assign a static IP to a Guest on a VMware Workstation

SOURCE:
http://dvlancer.com/37-assign-a-static-ip-to-a-guest-on-a-vmware-workstation.html


Instructions on how to configure VMware built-in DHCP service to bind an IP to a MAC of a Guest VM running on a Windows host
Those instructions were tested on Windows 7 64bit as a host with VMware Workstation 8 and CentOS as a guest OS.
1. Open C:\ProgramData\VMware\vmnetdhcp.conf as Administrator. This file could also be located in C:\Documents and Settings\All Users\Application Data\VMware\ on Windows XP
vmnetdhcp.conf uses the same syntax as dhcpd.conf. Add host name, MAC and Static and static IP highlighted in the example below.
host centos {
  hardware ethernet 00:00:00:00:00:00;
  fixed-address 192.168.121.111;
}
The MAC of your guest system can be found in Virtual Machine Settings, under Advanced network settings.
VWMare Advanced network settings
2. Restart your computer or the VMware DHCP service. The VMware DHCP service can be restarted via services.msc or by running the following command via cmd (note you will need to run cmd as Administrator):
net stop vmnetdhcp
net start vmnetdhcp
3. Acquire a new IP on your guest OS by restarting it or using admin tools applicable to your guest OS.

Branching an SVN repository

SOURCE: 

http://bytealmanac.wordpress.com/2013/04/16/branching-an-svn-repository/

 

Branching an SVN repository

Branches are required in the following scenarios:
  1. When you want to work parallelly on two separate versions of the code, both of which might undergo separate development.
  2. Or, when you are not sure about the current experimental changes that you’re making to your code. You want to try out some stuff, and if everything works as you expected, use this as the mainline code base; otherwise, if things do not work out, you can come back to the last known good state.
Here is how to branch your code that resides at http://svn.myrepo.com/project.
  1. Go to the working directory (that’s the folder where the root of your code base resides).
  2. Create a folder branches/ inside the working directory.
  3. Add and commit this new folder:
    svn add branches
    svn commit -m "Added branches"
  4. Branch the code base by copying the current version to a new folder inside the branches folder in the repository.
    svn copy http://svn.myrepo.com/project http://svn.myrepo.com/project/branches/mybranch
Now that the repository has been branched, what do you need to do on your local machine? There are two options:
  1. Keep the old version (usually called the trunk) intact in the current working directory and check out the branch to a new folder:
    1. Create a new folder mybranch
    2. svn co http://svn.myrepo.com/project/branches/mybranch mybranch
  2. Delete the contents of the current folder (working directory) and work exclusively on the new branch (this is called a switch):
    svn switch http://svn.myrepo.com/project/branches/mybranch .

Create Multiple IP Addresses to One Single Network Interface

SOURCE: http://www.tecmint.com/create-multiple-ip-addresses-to-one-single-network-interface/

The instructions given here are applies to all major Linux distributions like Red Hat, Fedora, and CentOS. Creating multiple interfaces and assign IP address to it manually is a daunting task. Here we’ll see how we can assign IP address to it defining a set of IP range. Also understand how we are going to create a virtual interface and assign different range of IP Address to an interface in one go. In this article we used LAN IPs, so replace those with ones you will be using.

Creating Virtual Interface and Assign Multiple IP Addresses

Here I have an interface called “ifcfg-eth0“, the default interface for the Ethernet device. If you’ve attached second Ethernet device, then there would be an “ifcfg-eth1” device and so on for each device you’ve attached. These device network files are located in “/etc/sysconfig/network-scripts/” directory. Navigate to the directory and do “ls -l” to list all devices.
# cd /etc/sysconfig/network-scripts/
# ls -l
Sample Output
ifcfg-eth0   ifdown-isdn    ifup-aliases  ifup-plusb     init.ipv6-global
ifcfg-lo     ifdown-post    ifup-bnep     ifup-post      net.hotplug
ifdown       ifdown-ppp     ifup-eth      ifup-ppp       network-functions
ifdown-bnep  ifdown-routes  ifup-ippp     ifup-routes    network-functions-ipv6
ifdown-eth   ifdown-sit     ifup-ipv6     ifup-sit
ifdown-ippp  ifdown-tunnel  ifup-isdn     ifup-tunnel
ifdown-ipv6  ifup           ifup-plip     ifup-wireless
Let’s assume that we want to create three additional virtual interfaces to bind three IP addresses (172.16.16.126, 172.16.16.127, and 172.16.16.128) to the NIC. So, we need to create three additional alias files, while “ifcfg-eth0” keeps the same primary IP address. This is how we moving forward to setup three aliases to bind the following IP addresses.
Adapter            IP Address                Type
-------------------------------------------------
eth0              172.16.16.25            Primary
eth0:0            172.16.16.26            Alias 1
eth0:1            172.16.16.27            Alias 2
eth0:2            172.16.16.28            Alias 3
Where “:X” is the device (interface) number to create the aliases for interface eth0. For each alias you must assign a number sequentially. For example, we copying existing parameters of interface “ifcfg-eth0” in virtual interfaces called ifcfg-eth0:0, ifcfg-eth0:1 and ifcfg-eth0:2. Go into the network directory and create the files as shown below.
# cd /etc/sysconfig/network-scripts/
# cp ifcfg-eth0 ifcfg-eth0:0
# cp ifcfg-eth0 ifcfg-eth0:1
# cp ifcfg-eth0 ifcfg-eth0:2
Open a file “ifcfg-eth0” and view the contents.
[root@tecmint network-scripts]# vi ifcfg-eth0

DEVICE="eth0"
BOOTPROTO=static
ONBOOT=yes
TYPE="Ethernet"
IPADDR=172.16.16.125
NETMASK=255.255.255.224
GATEWAY=172.16.16.100
HWADDR=00:0C:29:28:FD:4C
Here we only need two parameters (DEVICE and IPADDR). So, open each file with VI editor and rename the DEVICE name to its corresponding alias and change the IPADDR address. For example, open files “ifcfg-eth0:0“, “ifcfg-eth0:1” and “ifcfg-eth0:2” using VI editor and change both the parameters. Finally it will look similar to below.
ifcfg-eth0:0
DEVICE="eth0:0"
BOOTPROTO=static
ONBOOT=yes
TYPE="Ethernet"
IPADDR=172.16.16.126
NETMASK=255.255.255.224
GATEWAY=172.16.16.100
HWADDR=00:0C:29:28:FD:4C
ifcfg-eth0:1
DEVICE="eth0:1"
BOOTPROTO=static
ONBOOT=yes
TYPE="Ethernet"
IPADDR=172.16.16.127
NETMASK=255.255.255.224
GATEWAY=172.16.16.100
HWADDR=00:0C:29:28:FD:4C
ifcfg-eth0:2
DEVICE="eth0:2"
BOOTPROTO=static
ONBOOT=yes
TYPE="Ethernet"
IPADDR=172.16.16.128
NETMASK=255.255.255.224
GATEWAY=172.16.16.100
HWADDR=00:0C:29:28:FD:4C
Once, you’ve made all changes, save all your changes and restart/start the network service for the changes to reflect.
[root@tecmint network-scripts]# /etc/init.d/network restart
To verify all the aliases (virtual interface) are up and running, you can use “ifconfig” or “ip” command.
[root@tecmint network-scripts]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:28:FD:4C
          inet addr:172.16.16.125  Bcast:172.16.16.100  Mask:255.255.255.224
          inet6 addr: fe80::20c:29ff:fe28:fd4c/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:237 errors:0 dropped:0 overruns:0 frame:0
          TX packets:198 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:25429 (24.8 KiB)  TX bytes:26910 (26.2 KiB)
          Interrupt:18 Base address:0x2000

eth0:0    Link encap:Ethernet  HWaddr 00:0C:29:28:FD:4C
          inet addr:172.16.16.126  Bcast:172.16.16.100  Mask:255.255.255.224
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          Interrupt:18 Base address:0x2000

eth0:1    Link encap:Ethernet  HWaddr 00:0C:29:28:FD:4C
          inet addr:172.16.16.127  Bcast:172.16.16.100  Mask:255.255.255.224
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          Interrupt:18 Base address:0x2000

eth0:2    Link encap:Ethernet  HWaddr 00:0C:29:28:FD:4C
          inet addr:172.16.16.128  Bcast:172.16.16.100  Mask:255.255.255.224
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          Interrupt:18 Base address:0x2000
Ping each of them from different machine. If everything setup correctly, you will get a ping response from each of them.
ping 172.16.16.126
ping 172.16.16.127
ping 172.16.16.128
Sample Output
[root@tecmint ~]# ping 172.16.16.126
PING 172.16.16.126 (172.16.16.126) 56(84) bytes of data.
64 bytes from 172.16.16.126: icmp_seq=1 ttl=64 time=1.33 ms
64 bytes from 172.16.16.126: icmp_seq=2 ttl=64 time=0.165 ms
64 bytes from 172.16.16.126: icmp_seq=3 ttl=64 time=0.159 ms

--- 172.16.16.126 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 0.159/0.552/1.332/0.551 ms

[root@tecmint ~]# ping 172.16.16.127
PING 172.16.16.127 (172.16.16.127) 56(84) bytes of data.
64 bytes from 172.16.16.127: icmp_seq=1 ttl=64 time=1.33 ms
64 bytes from 172.16.16.127: icmp_seq=2 ttl=64 time=0.165 ms
64 bytes from 172.16.16.127: icmp_seq=3 ttl=64 time=0.159 ms

--- 172.16.16.127 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 0.159/0.552/1.332/0.551 ms

[root@tecmint ~]# ping 172.16.16.128
PING 172.16.16.128 (172.16.16.128) 56(84) bytes of data.
64 bytes from 172.16.16.128: icmp_seq=1 ttl=64 time=1.33 ms
64 bytes from 172.16.16.128: icmp_seq=2 ttl=64 time=0.165 ms
64 bytes from 172.16.16.128: icmp_seq=3 ttl=64 time=0.159 ms

--- 172.16.16.128 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 0.159/0.552/1.332/0.551 ms
Seems everything working smoothly, With these new IPs’ you can setup virtual sites in Apache, FTP accounts and many other things.

Assign Multiple IP Address Range

If you would like to create a range of Multiple IP Addresses to a particular interface called “ifcfg-eth0“, we use “ifcfg-eth0-range0” and copy the contains of ifcfg-eth0 on it as shown below.
[root@tecmint network-scripts]# cd /etc/sysconfig/network-scripts/
[root@tecmint network-scripts]# cp -p ifcfg-eth0 ifcfg-eth0-range0
Now open “ifcfg-eth0-range0” file and add “IPADDR_START” and “IPADDR_END” IP address range as shown below.
[root@tecmint network-scripts]# vi ifcfg-eth0-range0

#DEVICE="eth0"
#BOOTPROTO=none
#NM_CONTROLLED="yes"
#ONBOOT=yes
TYPE="Ethernet"
IPADDR_START=172.16.16.126
IPADDR_END=172.16.16.130
IPV6INIT=no
#GATEWAY=172.16.16.100
Save it and restart/start network service
[root@tecmint network-scripts]# /etc/init.d/network restart
Verify that virtual interfaces are created with IP Address.
[root@tecmint network-scripts]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:28:FD:4C
          inet addr:172.16.16.125  Bcast:172.16.16.100  Mask:255.255.255.224
          inet6 addr: fe80::20c:29ff:fe28:fd4c/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1385 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1249 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:127317 (124.3 KiB)  TX bytes:200787 (196.0 KiB)
          Interrupt:18 Base address:0x2000

eth0:0     Link encap:Ethernet  HWaddr 00:0C:29:28:FD:4C
          inet addr:172.16.16.126  Bcast:172.16.16.100  Mask:255.255.255.224
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          Interrupt:18 Base address:0x2000

eth0:1    Link encap:Ethernet  HWaddr 00:0C:29:28:FD:4C
          inet addr:172.16.16.127  Bcast:172.16.16.100  Mask:255.255.255.224
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          Interrupt:18 Base address:0x2000

eth0:2    Link encap:Ethernet  HWaddr 00:0C:29:28:FD:4C
          inet addr:172.16.16.128  Bcast:172.16.16.100  Mask:255.255.255.224
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          Interrupt:18 Base address:0x2000

eth0:3    Link encap:Ethernet  HWaddr 00:0C:29:28:FD:4C
          inet addr:172.16.16.129  Bcast:172.16.16.100  Mask:255.255.255.224
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          Interrupt:18 Base address:0x2000

eth0:4    Link encap:Ethernet  HWaddr 00:0C:29:28:FD:4C
          inet addr:172.16.16.130  Bcast:172.16.16.100  Mask:255.255.255.224
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          Interrupt:18 Base address:0x2000

Install Bigbluebutton

SOURCE: http://bestinlinux.com/instalation-bigbluebutton-easy/


Hi Guys,
I got a chance to install and test the BBB for one of our client. Even though, BBB have lot of tutorials available, It took hours for me to correct the installation errors and fix it. I have gone through all possible errors and manage to fix it. So I’m adding all those steps in detail and hope that will help you.
BBB is a cool app and it is like Webex and have all features of Webex and it is opensource + product of Google.

Media,171137,en

1) Know your OS type
I have installed the BBB in one of our VPS with 64bit, Debian Lenny as OS. ( It is important to know about your OS before the installation because if your OS is a n 32bit one, then installing a 64bit package won’t work. ) And all the available tutorials are for 32 bit. I have added the changes you have to make, if your OS is 64bit. ( I’ll mention, if there is a difference in steps for 32 bit and 64 bit. )
To check the OS type and code name, you can execute the following
command.
lsb_release -a
To know the OS bit, please execute the following command.
uname -m
x86_64 when it is an kernel 64 bits
i686 for 32 bits kernel
Or else execute the following command.
getconf LONG_BIT

2) Set your Locals
dpkg-reconfigure locales
set to en_US.UTF-8

3) Know your OS
If your OS is Debian Squeeze, then you don’t have to follow this step.
To check the OS type and code name, you can execute the following command.
lsb_release -a

4 ) Setup OS
BBB recommend to install the software in Debian Squeeze. So if your using a Lenny, you have to upgrade it first. ( If your OS is squeeze, then you don’t have to follow this step. )
Add the squeeze repository in the /etc/apt/source.list
vim /etc/apt/sources.list
---

deb http://ftp.uk.debian.org/debian/ squeeze main non-free
deb-src http://ftp.uk.debian.org/debian/ squeeze main non-free
deb http://security.debian.org/ squeeze/updates main contrib
deb-src http://security.debian.org/ squeeze/updates main contrib

---
apt-get update
apt-get dist-upgrade
( When you get the following prompt, I recommend to choose to install the package maintainer’s version, if its a new server )
What would you like to do about it ? Your options are:
 Y or I  : install the package maintainer's version
 N or O  : keep your currently-installed version
 D   : show the differences between the versions
 Z    : background this process to examine the situation

5) Install MySQL server and set password
apt-get install mysql-server
6) Change Apache port 80 to something else ( Do not use 8080, because BBB require tomcat6 and that use 8080 port ) by editing /etc/apache2/ ports.conf and sites enabled. Because BBB using 80port by default )

Eg : If you want to change the apache port to 4444. follow the below
steps.
vim /etc/apache2/ports.conf
---

NameVirtualHost *:4444
Listen 4444

---
vim /etc/apache2/sites-enabled/000-default
---



---
Then restart apache
/etc/init.d/apache2 restart

7) BBB Repository settings
# bigbluebutton repository key
wget http://ubuntu.bigbluebutton.org/bigbluebutton.asc -O- | apt-key add -
# Freeswitch PPA key
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 451AE93C
echo -e "deb http://ubuntu.bigbluebutton.org/lucid/ bigbluebutton-lucid main\ndeb http://ppa.launchpad.net/freeswitch-drivers/freeswitch-nightly-drivers/ubuntu lucid main" > /etc/apt/sources.list.d/bigbluebutton.list
# Add the BigBlueButton repository URL and ensure the multiverse is
enabled
echo "deb http://ubuntu.bigbluebutton.org/lucid/ bigbluebutton-lucid main" | sudo tee /etc/apt/sources.list.d/bigbluebutton.list
echo "deb http://us.archive.ubuntu.com/ubuntu/ lucid multiverse" | sudo tee -a /etc/apt/sources.list
Update repository
apt-get update
aptitude apdate
If you get the error – NO_PUBKEY 40976EAF437D05B5 type the below command
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 40976EAF437D05B5
Then update apt-get and aptitude again.

6) Install libmpfr
apt-get install libgmp3c2
If your OS is 64 bit please follow the below steps
wget http://ubuntu.mirror.cambrium.nl/ubuntu//pool/main/m/mpfr/libmpfr1ldbl_2.4.2-3ubuntu1_amd64.deb

dpkg -i libmpfr1ldbl_2.4.2-3ubuntu1_amd64.deb
If your OS is 32 bit please follow the below steps
wget http://ubuntu.mirror.cambrium.nl/ubuntu//pool/main/m/mpfr/libmpfr1ldbl_2.4.2-3ubuntu1_i386.deb

dpkg -i libmpfr1ldbl_2.4.2-3ubuntu1_i386.deb

9) Another workaround to avoid packaging errors later on :
mkdir -p /var/www/nginx-default/
touch /var/www/nginx-default/50x.html

10) For voice conference we are going to install Asterisk ( Can use FreeSWITCH also )
To install Asterisk please follow the steps.
apt-get install bbb-voice-conference
You may get the following errors.
Errors were encountered while processing:
bbb-client
bbb-config
bigbluebutton
E: Sub-process /usr/bin/dpkg returned an error code (1)
Please reinstall Astrisk to fix the issue by following the below steps.
apt-get --purge remove asterisk
Then reinstall Asterisk
apt-get install asterisk
Restart Asterisk to see if its working fine
/etc/init.d/asterisk restart
Then reinstall bbb-voice-conference
apt-get install bbb-voice-conference
( If you again get the same errors, ignore it and continue install the BBB. That will be fixed after performing the coming sections. )

11) Install BBB
apt-get install bigbluebutton
To restart all services related to BBB, run the following command
bbb-conf --clean
To check the info and the errors, execute the following command
bbb-conf –check
You may get the following errors
# Not Running: Nginx
# This server could not connect to BigBlueButton through http://your
 ip/

If you try restart the nginx, you will get the following errors

/etc/init.d/nginx restart

Restarting nginx: the configuration file /etc/nginx/nginx.conf syntax
 is ok

[emerg]: socket() [::]:80 failed (97: Address family not supported by
 protocol)

configuration file /etc/nginx/nginx.conf test failed
You are getting this error because the IPv6 support is enabled in your ngix by default. Turning off the IPv6 support will fix this issue
vim /etc/nginx/sites-enabled/default
---

#listen [::]:80 default ipv6only=off; ## listen for ipv6

---
Then restart nginx
/etc/init.d/nginx restart
Now it will create the bigbluebutton site under nqinx.
You may get the following Astrisk “konference” error when exicureing the commad “bbb-conf –check”
** Potential problems described below **
# Did not detect the BigBlueButton configuration setup for asterisk.
 Missing
# /usr/lib/asterisk/modules/app_konference.so
# Try running: sudo apt-get install bbb-voice-conference
Follow the given steps to fix the issue
Execute the below command to o find the app_konference location.
dpkg -L bbb-voice-conference | grep app_konference
The output will be as follows
/var/tmp/app_konference-10.04-32.so
/var/tmp/app_konference.so
/var/tmp/app_konference-10.04-64.so
If your OS is 32 bit, then follow the below command to fix the issue
cp /var/tmp/app_konference-10.04-32.so /usr/lib/asterisk/modules/app_konference.so
If your OS is 64 bit, then follow the below command to fix the issue
cp /var/tmp/app_konference-10.04-64.so /usr/lib/asterisk/modules/app_konference.so
Then restart BBB to check if the issue is fixed.
bbb-conf --clean

12) To test the working
http://yourIP
To start using your BigBlueButton server, enter your name and click the ‘Join’ button. You’ll join the Demo Meeting.
To create the your own meetings or join a meeting click on the “View API examples” and you can see the options there.
That’s it! :) Now you have your own web-conference server.

If you find any difficulty following the steps, please do let us know and we will be right here for your help.
Thank you,

Asterisk vs FreeSWITCH

SOURCE: http://www.richappsconsulting.com/blog/blog-detail/asterisk-vs-freeswitch/ Asterisk and FreeSWITCH are B2BUA (Back-to-back user agents). They act as a user agent for two or more ends, and use a common protocol like the Session Initiation Protocol (SIP). The B2BUA is responsible for handling all SIP signaling between the end-points, route calls, transfer calls, translate codecs between the call legs and offer value-added features to the call such as voicemail and call transfer.
In other words, they are telephony platforms designed to facilitate the creation of voice and chat driven products. FreeSWITCH in particular, can scale from a soft-phone up to a soft-switch. It can be used as a simple switching engine, a PBX, a media gateway or a media server to host IVR applications using simple scripts or XML to control the call flow.

Isn’t FreeSWITCH a soft-switch and Asterisk a PBX? What is the difference?
Extracted from the FreeSWITCH FAQ:
"A PBX is an entity that allows a private company to have its own mini phone company providing services like voicemail, extensions and conferencing to phones. The primary focus of a PBX is for multiple phones to find each other and communicate. A soft-switch is a software application that can connect phone lines from one network to another, often routing calls from one protocol to another or to a termination point such as a PBX. FreeSWITCH has the potential to also implement a PBX but it is not mandated to. Think of it as a lower level application than a PBX. It’s possible to load several modules into FreeSWITCH to make it behave exactly like a cluster of PBX applications. This is entirely easier than trying to make a single monolithic PBX behave as a switch especially when much of the PBX functionality is permanently built into the core of the PBX application."

My first experience with Asterisk at RAC
My first real Asterisk experience began earlier this year when my boss, Adil Wali, asked me to set up a PBX server for RAC. I had done some previous Asterisk work so I already had some experience with it, but this was the first time I had deployed Asterisk in a large-sized company.
The time came and I deployed an Asterisk server for RAC. Right now it does inbound/outbound, IVR (Interactive Voice Response), conferences, voicemail, call forwarding and almost everything else you would expect from a nice VoIP (PBX) server. There are some things that some of us would like to have that are not currently available in the Asterisk software, such as dialing out from conferences and soft-based conferences. A few employees have asked me for the option to dial out from conferences but I cannot yet add this to our configuration because the feature doesn't exist in Asterisk. It is a technical limitation of Asterisk but it is available on FreeSWITCH. This is one of the reasons that FreeSWITCH would be better suited for us.
I have a fair amount of Asterisk knowledge now. I have used it for some time and I know its merits and its problems. The nice thing about Asterisk is that it's really easy to set up and configure the way you want. The bad thing about it is that it has some internal problems on its core and sometimes it gives you unexpected problems. It also lacks some of the features we need.

Asterisk issues and bugs I have found in the software
I ran into some problems when I tried to deploy Asterisk on a VPS first (Amazon EC2). When I tried to do conferencing, I needed the MeetMe application that provides conferences, and MeetMe depends on Zaptel (which is another piece of software that provides the timing that MeetMe needs). I tried to install Zaptel, but Zaptel refused to work on XEN (the virtualization software that our VPS uses). So I didn't have any other choice but to go with a dedicated server for our VoIP needs. FreeSWITCH works great on a VPS with all the conferencing features, and everything out of the box - no zaptel, ztdummy or anything that could interfere is needed.
I tried very hard to make Asterisk work with the conference features on the VPS (Amazon EC2). I also tried with other conference applications like app_conference. This doesn't require an external timing source like MeetMe does, but it lacks some features that we needed, such as sound notifications. MeetMe had this but MeetMe wasn't an option on the VPS because of its technical requirements. I also tried to get support on Asterisk and their response to my problem was that it was "irrelevant".
This was the first time I started asking myself, "Why do I need a ztdummy driver (Zaptel) in order to use the conference module? Why can't the conference module use it's own internal timing source?" I thought there was something wrong with this design. That was when Brian West (also know as bkw_ - a fellow core-developer and friend of mine) told me about FreeSWITCH and its nice soft-based conference module. That was the first time I heard about FreeSWITCH and when I saw the light.
I also experienced DTMF problems and sound corruption with Asterisk. This happens because the Asterisk core is broken. I tried doing the same things in FreeSWITCH and everything worked great.
After all of the work that I put into making Asterisk work on our server, I keep discovering more and more problems with it. The first problem I discovered after everything was working was the DTMF problem. One day an employee asked me why his password wasn't working. I went and looked at the server and his password was there and everything looked good. Then I tried to debug it and I put a function on the dialplan that returned the digits that you send to the server and to my surprise, the server was printing bad/broken digits. So after a lot of research, I have come with the conclusion that the DTMF in Asterisk was broken.
I reported a bug about this issue, but it is still open and not resolved two months after I reported it: bugs.digium.com/view.php
One workaround for this problem was to use rfc2833compensate=yes in the sip configuration, in order to compensate the DTMF digits or RTP packets... this fixed it with X-Lite but the problem still happens with Zoiper. I'm sure this is the reason that passwords fail for conferences sometimes.
Another problem I had was with sound. The sound gets corrupted after a while with the Speex codec. Again I reported a bug of this: bugs.digium.com/view.php
I have also experienced some deadlocks with Asterisk as reported here: bugs.digium.com/view.php
I have tried the same things with FreeSWITCH and I haven't experienced the problems. It all went very smoothly and FreeSWITCH has some features that Asterisk doesn't, such as dialing out from conferences.
I came to the point where I realized that we need a better solution. Asterisk has too many problems for our company. I decided to go with FreeSWITCH in order to have a high quality PBX.

On the way to a better VoIP solution with FreeSWITCH
The learning curve on FreeSWITCH for me wasn't that bad. However, I didn't know so it was a bit tedious for me at first. I now realize that the XML configuration is a good thing. Regular expressions in the dialplan make it succinct and the XML makes adding customized features very easy and straightforward. FreeSWITCH is a class-five soft-switch that can be molded the way you want, from a PBX to carrier-grade soft-switch to anything you can ever imagine, and it's very extensible. The design that its creator went with is excellent. It is a masterpiece and there is nothing in the open source world or in the proprietary world that comes even close to it. I think that it is a great piece of work.
One of the big advantages of FreeSWITCH is that it's core is better designed, with a lot of care in the details. The primary author of FreeSWITCH is a former developer that spent a lot of time working with the flawed Asterisk design and finally gave up and decided to build a VoIP system that would be stable, scalable and extensible. The stable part means that we'll all be able to sleep well at night.
One of the nice things about FreeSWITCH is the community. The developers themselves and the users all hang in one channel - #freeswitch (at freenode). The mailing list is also a very nice place. In both places they are very friendly and supportive, unlike the Asterisk/Digium community. They are also open-minded. At one point I asked for a feature (mod_yaml) and the creator of FreeSWITCH (Anthony Minessale) came up with this feature in less than 3 hours - without even knowing what YAML was when the feature was asked for. It was really impressive. He came up with a whole new feature that he hadn't even heard of yet, while the Asterisk devs can't even fix little bugs. Here is the proof of this: lists.freeswitch.org/pipermail/freeswitch-users/2008-June/003954.html
Another nice thing about FreeSWITCH is that it doesn't suffer from the "Not Invented Here" (NIH) syndrome that Asterisk suffers from. FreeSWITCH uses the Sofia SIP stack, a 100% RFC compliant SIP stack, which is very complete, robust and mature. Nokia also actively contributes in this stack along with the FS developers. They also use XML and PCRE (Perl Compatible Regular Expressions) for the dialplan, the Apache Portable Runtime (APR) and SQLite. FreeSWITCH has the ability to load scripts written in LUA, Python, Perl, PHP and XML in the dialplan as "applications” so you have a lot of flexibility and freedom in how you want to configure your VoIP system.
I am very happy that I made the decision to switch to FreeSWITCH. Employees in the company have already reported better audio quality and stability. FreeSWITCH is clearly the winner here. The project is still young and it has a long way to go, but the core and the foundations are very mature and strong and that makes it a great platform.

A few articles
FreeSwitch Attempts To Punctuate Asterisk! FreeSwitch and SipXecs and Second Generation IP PBX FreeSwitch - Trying on the Big Boy Pants Asterisk vs. FreeSWITCH (anders.com) FreeSWITCH, a Second-Generation Open-Source Communications Platform digg.com/software/Open_Source_VoIP_Asterisk_or_FreeSwitch digg.com/software/an_open_source_class_five_telephony_switch

Web MeetMe : Conferencing in FreePBX

SOURCE: http://blog.davidvassallo.me/2012/11/30/web-meetme-conferencing-in-freepbx/

The company I work for currently uses TrixBox as their VoIP server. It’s an excellent piece of software but being no longer supported, the decision was taken to upgrade to the later and more active FreePBX. Since they are both built around the asterisk core, I figured this upgrade wouldn’t be too much of a problem. In fact it wasnt, most of the features in TrixBox I got working in FreePBX with no effort.
There was one stumbling block: conferencing. In TrixBox, users used to dynamically create conferences on the fly using WebMeetMe. In TrixBox, installation and activation of WebMeetMe was as simple as downloading and activating the appropriate module. Alas, in FreePBX the excellent WebMeetMe is not pre-installed (why??). So the installation is a bit more involving though ultimately works just as well :)
I am taking the opportunity to document exactly what I’ve done to get this working:
1. Download latest version of FreePBX
2. Install FreePBX as per usual procedures. Create a couple of SIP extensions and make sure they work before proceeding. Pleny of documentation on the ‘net if you get stuck here
3. Download the latest version of WebMeetMe
Note: For any of the below to work you need to ensure that FreePBX is setup to use the meetme module rather than the newer “confbridge”. This is done via:
FreePBX > Settings > Advanced Setting and ensure that Conference Room App is set to “app_meetme
3
4. The README within the tarball downloaded from 3 has some good install notes, however I found Mark In the Dark’s install notes to be much clearer and helpful. So, I followed the steps outlined here:
http://www.markinthedark.nl/news/ubuntu-linux-unix/75-install-web-meetme-402-for-freeppbx-28-with-asterisk-18-on-centos-55.html
5. Once the above procedure was done, visiting the page http://%5Bmy-ip-address%5D/web-meetme/meetme_control.php returned a HTTP 500 error. Checking the /var/log/httpd/error logs I saw a corresponding entry similar to:
PHP Parse error:  syntax error, unexpected $end in /var/www/html/web-meetme/lib/defines.php on line 145
To resolve the above, open the file defines.php, scroll to the bottom, and change the last three lines from this:
}
?>
To this:
}
?>
6. If, like me, you decided on using MYSQL for authentication rather than LDAP, I again ran into an HTTP 500 error when attempting to logon. The error was:
PHP Fatal error:  Call to undefined function authsql() in /var/www/html/web-meetme/lib/functions.php on line 73
To resolve this, copy the contents of:
/var/www/html/web-meetme/lib/sqldb.php 
into:
/var/www/html/web-meetme/lib/functions.php
The above should allow you to login and schedule calls using web meet me. That said, I found documentation on how to setup an extension which callers could use to dial into WebMeetMe woefully lacking. Here’s what I did:
1. Add a custom extension
> SSH into the box, and edit the file: /etc/asterisk/extensions_custom.conf
> Add the following to the file:
[conferences]
include => ext-meetme; in [ext-meetme] contest are stored all the conferences created in FreePBX
exten => s,1,Answer
exten => s,n,Wait(1)
exten => s,n,Playback(welcome); Insert your welcome recording
exten => s,n,Goto(STARTMEETME,1)
2. Add custom destination
This step is needed to make the FreePBX GUI aware of the custom extension we define above, and make it available as a choice within the GUI. Within FreePBX: [admin > custom destination] and use:
Custom Destination: conferences,s,1
Description: conftest
1
At this stage, you have an extension you can use. In our case we needed the webmeetme to be dialed into from both an external number and an internal one.
For external callers
  • FreePBX > Connectivity > Inbound Routes. Select the appropriate DID, ex 21123456, and set the destination as a custom destination and select conftest from the pull-down menu (or whatever you entered in step 2 above)
For Internal callers
  • FreePBX > Applications> Misc Applications. Enter in a description, a “feature code” (which is the number internal users will dial, example *789, and select the destination to be a custom destination and select conftest from the pull-down menu (or whatever you entered in step 2 above)
2

Install Web-MeetMe 4.0.2 for FreepPBX 2.8 with Asterisk 1.8 on CentOS 5.5

SOURCE: http://wikiasterisk.blogspot.com/2012/08/install-web-meetme-402-for-freeppbx-28.html
Web-MeetMe is a suite of PHP pages to allow for scheduling and managing conferences on an Asterisk PBX. In this installation guide I am going to show you howto install Web-MeetMe on a installation of FreePBX 2.8 with Asterisk 1.8. I also updated my own installation guide of FreePBX with Asterisk, this guide is also on this website. Well read on and learn howto install Web-MeetMe 4.0.2.
Prepare installation
First check if Asterisk module res_odbc is installed.  Login into your Asterisk server and start the Asterisk command-line:
1
asterisk -r
On the Asterisk command line execute the next command:
1
asterisk*CLI> module show like res_odbc
Also the module cdr_adaptive_odbc should be loaded into Asterisk. Check if it exists:
1
asterisk*CLI> module show like cdr_adaptive_odbc
If both modules fail or one of these two I recommend you install res_odbc and cdr_adaptive_odbc with the next steps:
1
yum install -y unixODBC unixODBC-devel libtool-ltdl libtool-ltdl-devel php-odbc mysql-connector-odbc
Now we need to recompile Asterisk from the source:
1
2
3
4
5
6
cd /usr/src/asterisk-1.8.1.1/
amportal stop
make clean
contrib/scripts/get_mp3_source.sh
./configure
make menuselect
This last step opens a menu, in this menu be sure that:
  - Head into Channel Drivers and make sure chan_dahdi is selected
  - Head into Add-Ons and make sure app_mysql, app_saycountpl, cdr_mysql, format_mp3, res_config_mysql are selected
  - Head into Extra Sound Packages and make sure EXTRAS-SOUNDS-EN-GSM is selected
  - Head into Resource Modules and make sure res_odbc is selected
  - Head into Call Detail Recording and make sure cdr_adaptive_odbc is selected
If all off the above is marked for installation save and quit the menu.
Let us now compile Asterisk again and start it back up.
1
2
3
make
make install
amportal start
If you want you can check if the Asterisk modules (res_odbc & cdr_adaptive_odbc) are loaded. If not Google is your friend :-)
Also app_meetme module should be installed. If this is not installed follow my instructions that you can find here.
Check that you have PHP version 4.3 or later installed. If not install an update or install PHP. Normally you would have this version.
Configure ODBC
Open /etc/odbc.ini and add the following:
1
2
3
4
5
6
7
8
9
10
11
[MySQL-Asterisk]
Description     = ODBC for MySQL
Driver          = MySQL
Server          = 127.0.0.1
Database        = meetme
Port            = 3306
Socket          = /tmp/mysql.sock
Option          =
Stmt            =
Trace           = yes
TraceFile       = /tmp/odbc.log
Now let's create the res_odbc.conf
1
2
3
touch /etc/asterisk/res_odbc.conf
chown asterisk:asterisk /etc/asterisk/res_odbc.conf
chmod 775 /etc/asterisk/res_odbc.conf
Open /etc/asterisk/res_odbc.conf and add the following as DB user and pass I used the settings of the asteriskuser DB and PASSWORD2 from this article:
1
2
3
4
5
[meetme]
dsn => MySQL-Asterisk
username => -username>
password => -password> pre-connect => yes
Also we need to create the file /etc/asterisk/extconfig.conf:
1
2
3
touch /etc/asterisk/extconfig.conf
chown asterisk:asterisk /etc/asterisk/extconfig.conf
chmod 775 /etc/asterisk/extconfig.conf
Open /etc/asterisk/extconfig.conf and add the following:
1
2
[settings]
meetme => odbc,meetme,booking
To enable CDR logs we need to create /etc/asterisk/cdr_adaptive_odbc.conf:
1
2
3
touch /etc/asterisk/cdr_adaptive_odbc.conf
chown asterisk:asterisk /etc/asterisk/cdr_adaptive_odbc.conf
chmod 775 /etc/asterisk/cdr_adaptive_odbc.conf
Open /etc/asterisk/cdr_adaptive_odbc.conf and add the following:
1
2
3
[wmm]
connection=meetme ;Note that this matches res_odbc.conf
table=cdr
Open /etc/asterisk/cdr.conf en make sure that the following setting matches:
1
endbeforehexten=no
Prepare database
Let us setup the MySQL database for Web-MeetMe:
1
2
3
4
5
6
7
mysqladmin -p create meetme
cd /usr/src/
wget (link to download web meet me)
tar xzvf Web-MeetMe_v4.0.2.tar
cd webmeet-me
mysql -p meetme < cbmysql/db-table-create-v7.txt
mysql -p meetme < cbmysql/db-admin-user-create.txt
Let us start the MySQL command line:
1
mysql -p
Because I configured the asterisk DB user (asteriskuser with PASSWORD2) as DB user I have to give rights to this user for this database:
1
2
3
GRANT ALL PRIVILEGES ON meetme.* TO asteriskuser@localhost IDENTIFIED BY 'PASSWORD2';
flush privileges;
\q
Install and configure Web-MeetMe
First let us install Web-MeetMe
1
2
3
cd /usr/src/
mv weebmeet-me /var/www/html/
chown -R asterisk:asterisk /var/www/html/web-meetme/
Open the following PHP file
1
vi /var/www/html/web-meetme/lib/defines.php
And adjust the following settings to your needs (read the file; maybe more settings needed):
1
2
3
define ("WEBROOT", "http:///web-meetme/");
define ("FSROOT", "/var/www/html/web-meetme/");
define ("AUTH_TYPE", "sqldb");
We need to adjust the /etc/asterisk/phpagi.conf, make it look like this (adjust some settings to your needs):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
[phpagi]
#enable debuging
debug=false
#use internal error handler
error_handler=true
#mail errors to
admin=your@email.com
#host name of this server
hostname=my.host.com
# temporary directory for storing temporary output
tempdir=/var/spool/asterisk/tmp/
 
[festival]
#path to text2wave binary
text2wave=/usr/src/festival/bin/text2wave
tempdir=/var/lib/asterisk/sounds/tmp/
 
[asmanager]
# server to connect to
server=localhost
# default manager port
port=5038
#username for login
username=pick the username from /etc/asterisk/manager.conf
#password for login
secret=pick the password from /etc/asterisk/manager.conf
 
[cepstral]
#alternate text to speech engine
swift=/opt/swift/bin/swift
voice=David
Now open the /etc/asterisk/manager.conf and uncomment the next line:
1
include manager_custom.conf
Then open the /etc/asterisk/manager_custom.conf and add the following to it:
1
2
3
4
[MeetMe]
secret = {pick-a-password}
read = call
write = command,originate
Open the next file to configure DB settings:
1
vi /var/www/html/web-meetme/lib/database.php
Adjust the file to the user you added to the meetme database. If you followed these instructions it is the asterisk DB user from this artice:
1
2
3
4
5
6
7
8
9
10
11
12
13

include_once 'DB.php';
$database = 'meetme';
$host = 'localhost';
$username = 'asteriskuser';
$password = 'PASSWORD2';
$dsn = "mysql://$username:$password@$host/$database";
$db = DB::connect($dsn);
if (DB::isError($db))
{
        die ($db->getMessage());
}
?>
Also the /var/www/html/web-meetme/index.html of Web-MeetMe needs a adjustment:
1
<META HTTP-EQUIV="REFRESH" CONTENT="0; URL=http:///web-meetme/meetme_control.php">
Let us finish the installation with a reboot of Asterisk and FreePBX
1
amportal restart

Complete and check installation
If everything went correct you are now able to use Web Meet Me. Check the installation by browsing to http:///web-meetme. You can login with the standard user and password which are:
user: wmm@localhost
pass: wmmpw
Don' forget to reset these credentials, because they are known over the world. Have fun with your Web-MeetMe installation!