Novell Home

Sample Code - LDAPNetAddr

Novell Cool Solutions: Feature

Digg This - Slashdot This

Posted: 4 Jan 2006
 

The LDAPNetAddr sample code by Jay Burrell enables you to extract a readable network address from the LDAP-encoded
networkAddress attribute. Simply pass the networkAddress attribute from an LDAP Query, and this function
will return a string of "AddrType:" such as "IP: 192.168.1.12"

You can also find this sample code at:
http://forge.novell.com/modules/xfref_library/detail.php?reference_id=211

Sample Code

function LDAPNetAddr ($networkaddress) { 
/*
    Jay Burrell, Systems & Networks, Mississippi State University

    NetAddr - extract readable network address from the LDAP encoded networkAddress attribute.
    Novell Docs, see: http://developer.novell.com/ndk/doc/ndslib/schm_enu/data/sdk5624.html#sdk5624
    for Address types: http://developer.novell.com/ndk/doc/ndslib/index.html?page=/ndk/doc/ndslib/schm_enu/data/sdk4170.html
    LDAP Format, String:
       taggedData = uint32String "#" octetstring
       byte 0 = uint32String = Address Type: 0= IPX Address; 1 = IP Address
       byte 1 = char = "#" - separator
       byte 2+ = octetstring - the ordinal value of the address
							
    Note: with eDirectory 8.6.2, the IP address (type 1) returns correctly, however, an IPX address does not seem to.  eDir 8.7 may correct this.
*/

   $addr = "";
   $addrtype = intval(substr($networkaddress, 0, 1));
   $networkaddress = substr($networkaddress, 2);  // throw away bytes 0 and 1 which should be the addrtype and the "#" separator
   $addrtypes = array('IPX', 'IP', 'SDLC', 'Token Ring', 'OSI', 'AppleTalk', 'NetBEUI', 'Socket', 'UDP', 'TCP', 'UDP6', 'TCP6', 'Reserved (12)', 'URL', 'Count');
   $len = strlen($networkaddress);
   if ($len > 0) { 
      for ($i=0; $i<$len; $i+=1) {
         $byte = substr($networkaddress, $i, 1);
         $addr .= ord($byte);
         if ($addrtype == 1){  // dot separate IP addresses...
            $addr .= ".";
         }
     }
    if ($addrtype == 1) {  // strip last period from end of $addr
       $addr = substr($addr, 0, strlen($addr)-1);
    }
    }
    else {
       $addr .= "address not available."; 
    }
    return ($addrtypes[$addrtype] . ": " . $addr);
}


Novell Cool Solutions (corporate web communities) are produced by WebWise Solutions. www.webwiseone.com

© 2014 Novell