<HTML ><HEAD ><TITLE >Using the Software</TITLE ><META NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.63 "><LINK REL="HOME" TITLE="Linux NETMEETING HOWTO" HREF="index.html"><LINK REL="PREVIOUS" TITLE="NetMeeting directory kit" HREF="netmeetserver.html"><LINK REL="NEXT" TITLE="Debugging" HREF="debugging.html"></HEAD ><BODY CLASS="SECTION" BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000FF" VLINK="#840084" ALINK="#0000FF" ><DIV CLASS="NAVHEADER" ><TABLE WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TH COLSPAN="3" ALIGN="center" >Linux NETMEETING HOWTO</TH ></TR ><TR ><TD WIDTH="10%" ALIGN="left" VALIGN="bottom" ><A HREF="netmeetserver.html" >Prev</A ></TD ><TD WIDTH="80%" ALIGN="center" VALIGN="bottom" ></TD ><TD WIDTH="10%" ALIGN="right" VALIGN="bottom" ><A HREF="debugging.html" >Next</A ></TD ></TR ></TABLE ><HR ALIGN="LEFT" WIDTH="100%"></DIV ><DIV CLASS="SECTION" ><H1 CLASS="SECTION" ><A NAME="USING" >4. Using the Software</A ></H1 ><DIV CLASS="SECTION" ><H2 CLASS="SECTION" ><A NAME="DIRECTCONNECT" >4.1. Direct Connection</A ></H2 ><P > You can use OpenH323's <B CLASS="COMMAND" >ohphone</B > program to connect directly to a NetMeeting client. Specify the <TT CLASS="OPTION" >-n</TT > option to indicate that you're not using a gatekeeper, and either the DNS name or IP address of the NetMeeting client: </P ><TABLE BORDER="1" BGCOLOR="#E0E0E0" WIDTH="100%" ><TR ><TD ><FONT COLOR="#000000" ><PRE CLASS="SCREEN" >bash$ <TT CLASS="USERINPUT" ><B >ohphone -n 208.130.48.22</B ></TT > </PRE ></FONT ></TD ></TR ></TABLE ><P > You can also start <B CLASS="COMMAND" >ohphone</B > to receive incoming calls from NetMeeting clients: </P ><TABLE BORDER="1" BGCOLOR="#E0E0E0" WIDTH="100%" ><TR ><TD ><FONT COLOR="#000000" ><PRE CLASS="SCREEN" >bash$ <TT CLASS="USERINPUT" ><B >ohphone -n</B ></TT > </PRE ></FONT ></TD ></TR ></TABLE ><P > See the <B CLASS="COMMAND" >ohphone</B > documentation for more information on its additional features, including video conferencing, codec selection, and auto-answer. </P ></DIV ><DIV CLASS="SECTION" ><H2 CLASS="SECTION" ><A NAME="DIROPT" >4.2. Directory Operation</A ></H2 ><P > Make sure you have an LDAP server running the NetMeeting directory kit, as described above. </P ><P > On the NetMeeting client, select the <SPAN CLASS="GUIMENU" > Tools </SPAN >-><SPAN CLASS="GUIMENUITEM" > Options </SPAN > menu item to display a configuration dialog. Under the "General" (NetMeeting 3) or "Calling" (NetMeeting 2) tab, there will be a section for "Directory Settings". Here you can enter the IP address or DNS name of the server. The client will then attach to the server and register itself either automatically, if the "Log on to directory server when NetMeeting starts" checkbox is selected. You can also log on to the directory server manually, by selecting <SPAN CLASS="GUIMENU" > Call </SPAN >-><SPAN CLASS="GUIMENUITEM" > Log on </SPAN > . </P ><P > If the user selects <SPAN CLASS="GUIMENU" > Call </SPAN >-><SPAN CLASS="GUIMENUITEM" > Directory </SPAN >, a directory window will be displayed showing all users registered on the LDAP server. Double-clicking on one of the names will initiate a connection to that user. </P ><P > Querying the NetMeeting LDAP server from Linux can be done, but is tricky because the client's IP address is stored in decimal, and I don't mean dotted decimal. For example, the IP address 63.216.69.197 is stored as 3309688895. Here's some Perl code to convert back and forth from the NetMeeting IP address format: </P ><TABLE BORDER="1" BGCOLOR="#E0E0E0" WIDTH="100%" ><TR ><TD ><FONT COLOR="#000000" ><PRE CLASS="SCREEN" ># Convert $addr (IP address or DNS name) to a NetMeeting decimal IP address use Socket; $bytestring = inet_aton($addr); if (defined $bytestring) { ($sipaddress) = unpack('V', $bytestring); } else { die "Can't resolve $addr\n"; } # Convert $sipaddress (from a NetMeeting LDAP server) into dotted decimal form $packedipaddr = pack 'V', $sipaddress; $ipaddress = join '.', unpack('C4',$packedipaddr);</PRE ></FONT ></TD ></TR ></TABLE ><P > Included with the NetMeeting directory kit is <B CLASS="COMMAND" >nmdirectory</B >, a simple Perl/Tk script to query a NetMeeting LDAP server and display the clients registered with it. It's very primitive, and doesn't work well with large databases, but provides a rudimentary example of how to interpret search results from a NetMeeting LDAP server. </P ></DIV ><DIV CLASS="SECTION" ><H2 CLASS="SECTION" ><A NAME="LNKFRMWEBPAGE" >4.3. Linking From A Web Page</A ></H2 ><P > Microsoft Internet Explorer understands URLs with a "callto:" scheme that specify NetMeeting destinations in one of two forms. When a link with a "callto:" URL is selected, Internet Explorer runs NetMeeting and directs it to connect to the specified destination. </P ><P > The first URL form, "callto:destination", where 'destination' is either an IP address or a DNS name, causes NetMeeting to open an H.323 connection to port 1720 on 'destination'. Use this form to connect directly to another NetMeeting or OpenH323 client. </P ><P > The second URL form, "callto:server/alias", causes a directory lookup on LDAP server 'server', searching for a CN attribute of 'alias'. Assuming a match is found, a connection is made to the IP address specified in the entry's sipAddress attribute. NetMeeting clients, by default, register their user's E-mail addresses in the CN attribute. Use this form to perform a directory lookup based on E-mail address. </P ></DIV ><DIV CLASS="SECTION" ><H2 CLASS="SECTION" ><A NAME="PERMDIRENT" >4.4. Permanent Directory Entries</A ></H2 ><P > NetMeeting clients aren't the only source of LDAP directory entries. In particular, permanent directory entries can be manually inserted into the LDAP server using the OpenLDAP client tools. Assuming the attributes are specified properly, these entries will then appear in NetMeeting directory listings and can be used as targets in "callto:" URLs. This is useful when working with OpenH323 clients that don't register themselves by default with the LDAP server. </P ><P > To simply creating directory entries, the <B CLASS="COMMAND" >nmaddentry</B > script is included in the NetMeeting directory kit. Run it without arguments for a usage message. For example, if you've started <B CLASS="COMMAND" >ohphone</B > on "y2k.freesoft.org", you can register it with the LDAP server on "ils.freesoft.org" using alias "baccala@freesoft.org" like this: </P ><TABLE BORDER="1" BGCOLOR="#E0E0E0" WIDTH="100%" ><TR ><TD ><FONT COLOR="#000000" ><PRE CLASS="SCREEN" >bash$ <TT CLASS="USERINPUT" ><B >nmaddentry -h ils.freesoft.org baccala@freesoft.org y2k.freesoft.org</B ></TT > Successfully added cn=baccala@freesoft.org, objectclass=rtperson bash$ </PRE ></FONT ></TD ></TR ></TABLE ><P > This entry will now appear in NetMeeting directory listings and can be addressed as "ils.freesoft.org/baccala@freesoft.org". The entry will automatically timeout after 30 minutes. The <TT CLASS="OPTION" >-p</TT > switch creates a permanent directory listing that won't time out, but this only works on OpenLDAP servers using the NetMeeting directory kit. To remove a permanent entry, use the <B CLASS="COMMAND" >ldapdelete</B > program included with the OpenLDAP distribution, specifying the LDAP Distinguished Name returned by <B CLASS="COMMAND" >nmaddentry</B >: </P ><TABLE BORDER="1" BGCOLOR="#E0E0E0" WIDTH="100%" ><TR ><TD ><FONT COLOR="#000000" ><PRE CLASS="SCREEN" >bash$ <TT CLASS="USERINPUT" ><B >ldapdelete -h ils.freesoft.org 'cn=baccala@freesoft.org,objectclass=rtperson'</B ></TT > bash$ </PRE ></FONT ></TD ></TR ></TABLE ></DIV ><DIV CLASS="SECTION" ><H2 CLASS="SECTION" ><A NAME="SERVMULTALIAS" >4.5. Serving Multiple Aliases</A ></H2 ><P > The attributes registered by a NetMeeting client include 'sport', the TCP port number it listens on for incoming H.323 requests, but since this attribute is never retrieved in search requests, it isn't as useful as it first appears. In fact, NetMeeting always opens H.323 connections to the default port (1720), which raises the question of how to serve multiple aliases from a single IP address. </P ><P > The key to doing this is the <B CLASS="COMMAND" >forwarder</B > program, included in the OpenH323 CVS archive. <B CLASS="COMMAND" >forwarder</B > listens for connections on port 1720, and can be configured to redirect them based on the alias being called. This allows calls for each alias to be sent to a unique port number, where a program like <B CLASS="COMMAND" >ohphone</B > or <B CLASS="COMMAND" >openam</B > is listening. </P ><P > To use aliases, an LDAP directory is required, with an entry for each alias. Each alias entry should specify a 'cn' attribute with the alias name, and a 'sipAddress' attribute with the IP address of the host where <B CLASS="COMMAND" >forwarder</B > is listening. </P ><P > I've successfully configured a single host to act as a combination LDAP server (on port 389), <B CLASS="COMMAND" >forwarder</B > (on port 1720), and <B CLASS="COMMAND" >ohphone</B > and <B CLASS="COMMAND" >openam</B > clients on various private port numbers and remote systems. </P ></DIV ><DIV CLASS="SECTION" ><H2 CLASS="SECTION" ><A NAME="ANSWERINGMACHINE" >4.6. Using the Answering Machine</A ></H2 ><P > The OpenH323 answering machine, <B CLASS="COMMAND" >openam</B >, will listen for incoming H.323 connections, play a pre-recorded message, and then record any audio sent to it into a file. It can optionally be configured to run another program at the end of the call, to email the recorded audio, perhaps. </P ><P > It's usefulness is currently (December 2000) limited by the lack of a gatekeeper program clever enough to redirect calls to it if there's no answer at the main address. Thus, it will only act as an answering machine if the <B CLASS="COMMAND" >ohphone</B > program is running at the main address, and has been configured to redirect calls to another address, using the <TT CLASS="OPTION" >--forward-no-answer</TT > and <TT CLASS="OPTION" >--forward-busy</TT > options. </P ></DIV ><DIV CLASS="SECTION" ><H2 CLASS="SECTION" ><A NAME="CONFERENCECALLS" >4.7. Conference Calls</A ></H2 ><P > The <B CLASS="COMMAND" >openmcu</B > program, in the OpenH323 CVS archive, implements an H.323 Multipoint Control Unit (MCU). Multiple NetMeeting or <B CLASS="COMMAND" >ohphone</B > clients can connect to the MCU and form a conference call. As of December 2000, the quality and reliability of the connection is problematic, but hopefully this will improve. </P ></DIV ><DIV CLASS="SECTION" ><H2 CLASS="SECTION" ><A NAME="NATROUTING" >4.8. Routing Calls Through NAT</A ></H2 ><P > Special support is required on a NAT (IP Masquerade) router to allow H.323 traffic to pass through. If the NAT router is running Linux, two masquerading modules are available: </P ><P ></P ><UL ><LI ><P ><A HREF="http://www.coritel.it/coritel/ip/sofia/nat/nat2/nat2.htm" TARGET="_top" >http://www.coritel.it/coritel/ip/sofia/nat/nat2/nat2.htm</A ></P ></LI ><LI ><P ><A HREF="http://netmeetingmasq.sourceforge.net/" TARGET="_top" >http://netmeetingmasq.sourceforge.net/</A ></P ></LI ></UL ><DIV CLASS="NOTE" ><P ></P ><TABLE CLASS="NOTE" WIDTH="100%" BORDER="0" ><TR ><TD WIDTH="25" ALIGN="CENTER" VALIGN="TOP" ><IMG SRC="../images/note.gif" HSPACE="5" ALT="Note"></TD ><TD ALIGN="LEFT" VALIGN="TOP" ><P > I have not tested either of these modules. </P ></TD ></TR ></TABLE ></DIV ></DIV ><DIV CLASS="SECTION" ><H2 CLASS="SECTION" ><A NAME="CUSTOMCONFIGURATION" >4.9. Custom Configurations</A ></H2 ><P > The server capabilities can be customized by modifying the 'netmeeting.perl' script. For example, calls for stale entries could be redirected to an "forwarder" configured to hand off to "openam" answering machines. Thus, calls to a unavailable user would be answered and recorded for later playback. </P ><P > As OpenH323's development continues, it's expected that these techniques will become more sophisticated, for example by ringing the user first and only forwarding to an answering machine if there's no answer after a given time. Such functionality would most likely be placed in a gatekeeper. </P ></DIV ></DIV ><DIV CLASS="NAVFOOTER" ><HR ALIGN="LEFT" WIDTH="100%"><TABLE WIDTH="100%" BORDER="0" CELLPADDING="0" CELLSPACING="0" ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" ><A HREF="netmeetserver.html" >Prev</A ></TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" ><A HREF="index.html" >Home</A ></TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" ><A HREF="debugging.html" >Next</A ></TD ></TR ><TR ><TD WIDTH="33%" ALIGN="left" VALIGN="top" >NetMeeting directory kit</TD ><TD WIDTH="34%" ALIGN="center" VALIGN="top" > </TD ><TD WIDTH="33%" ALIGN="right" VALIGN="top" >Debugging</TD ></TR ></TABLE ></DIV ></BODY ></HTML >