//INCBEGIN //INCEND function intToIPString ( nAddress ) { var str = ""; for ( var i = 0; i < 4; i++ ) { str += ( nAddress & ( 255 << ( 3 - i ) * 8 ) ) >>> ( 3 - i ) * 8; str += '.'; } // return string without the trailing '.' return str.substr(0 , str.length - 1 ); } // build list of licenses var licenses = null ; function findLicenseCallback( prop, val, curDepth ) { if ( licenses == null ) licenses = new Array(); if ( ! val ) val = "license " + licenses.length + 1 ; licenses[ val ] = new Array(); licenses[ val ][ "endDate" ] = RMAGetPropertyValue( prop.leftProp( -1 ) + ".EndDate" ); licenses[ val ][ "startDate" ] = RMAGetPropertyValue( prop.leftProp( -1 ) + ".StartDate" ); } findSubProp( "license", "ProductID", findLicenseCallback, 0 ); // setup array of display text to registry key serverMap = new Array ( // registry key Label datatype default //------------------------------------------------------------------------------- [ "headers.Host", "Server:Port", "string", "" ], [ "server.platform", "Platform", "string", "" ], [ "license.License0.License.Definition.ProductID", "Release", "string", "RealServer 8" ], [ "server.version", "Build Version", "string", "" ] ); serverMap.prefix = "" ; licenseMap = new Array ( [ "General.ClientConnections", "Max Client Connections", "string", 10 ], [ "Authentication.Commerce.ClientConnections", "Max Authentication Steams", "string", 0 ], [ "Ad Serving.ClientConnections", "Max Advertising Streams", "string", 0 ], [ "Datatypes.RealAudio.Enabled", "RealAudio", "bool", 1 ], [ "Datatypes.RealVideo.Enabled", "RealVideo", "bool", 1 ], [ "Datatypes.RealPix.Enabled", "RealPix", "bool", 1 ], [ "Datatypes.RealFlash.Enabled", "Flash 4", "bool", 0 ], [ "Datatypes.RealText.Enabled", "RealText", "bool", 1 ], [ "Datatypes.RealMPA.Enabled", "MPEG Audio", "bool", 1 ], [ "Multicast.General", "Back-Channel Multicasting", "bool", 0 ], [ "Multicast.Scalable", "Scalable Multicasting", "bool", 0 ], [ "Splitter.Pull.Source", "Pull Splitting Source", "bool", 0 ], [ "Splitter.Pull.Receiver", "Pull Splitting Receiver", "bool", 0 ], [ "Splitter.Push.Source", "Push Splitting Source", "bool", 0 ], [ "Splitter.Push.Receiver", "Push Splitting Receiver", "bool", 0 ], [ "Ad Serving.Enabled;Ad Serving.DisableTetheredAds;Ad Serving.FlexibleAdInsertion;Ad Serving.EmbeddedPlayersAllowed", "Ad Extension", "multi-bool", 0 ], [ "ISP-Hosting.Enabled", "ISP Hosting", "bool", 0 ], [ "Authentication.Commerce.Access", "Commerce", "bool", 0 ], [ "DistributedLicensing.Publisher.Enabled", "License Publisher","bool", 0 ] ); licenseMap.prefix = "license.Summary." ; //! HACK: fix up some of the license properties if this is a license subscriber if ( ! RMAGetPropertyValue( "DistributedLicensing.Publisher.Address" ) ) { // this server is not a license subscriber serverMap.push( [ "config.LicenseDirectory", "License Directory","string", "" ] ); } else { // display the license Publisher hostname if its available if ( RMAGetPropertyValue( "DistributedLicensing.Publisher.Hostname" ) ) serverMap.push( [ "DistributedLicensing.Publisher.Hostname", "Subscriber Licensing from Publisher","string", "" ] ); else serverMap.push( [ "DistributedLicensing.Publisher.Address", "Subscriber Licensing from Publisher","longIPAddr", "" ] ); licenseMap[ 0 ] = [ "See License Publisher", "Max Client Connections","static", "" ]; } function getMapLabel( map, row ) { return "" + map[ row ][1] + '' ; } function getMapVal( map, row ) { var val ; if ( map[ row ][2] == "longIPAddr" ) { val = intToIPString( RMAGetPropertyValue( map.prefix + map[ row ][ 0 ] ) ); } else if ( map[ row ][2] == "static" ) { val = map[ row ][ 0 ]; } else if ( map[ row ][2] != "multi-bool" ) { val = RMAGetPropertyValue( map.prefix + map[ row ][ 0 ] ); } else { // multiple license attributes must be looked up and all must be "1" for // the value to be "yes" var tempVal ; val = 1 ; aTmp = map[ row ][ 0 ].split( ";" ); for ( var i = 0; i < aTmp.length; i++ ) { tempVal = RMAGetPropertyValue( map.prefix + aTmp[ i ] ); if ( (tempVal == null) || (tempVal == 0 ) ) { val = tempVal ; break ; } } } // use default if license variable not present or empty if ( (val == null) || (val == "") ) val = map[ row ][ 3 ]; if ( map[ row ][2].search( /bool/i ) != -1 ) val = ( val != 0 ? "yes" : "no" ); return "" + val + '' ; } function emitLicenses ( ) { if ( ! licenses ) { RMAOutput( "RealServer 8.0 Basicn/aunlimited\n" ); return ; } for ( var l in licenses ) { RMAOutput( "" + l + '' + "" + licenses[ l ][ "startDate" ] + '' + "" + licenses[ l ][ "endDate" ] + '\n' ); } }
About the Server and License Information

Information about the license for your RealServer, including which features are enabled, is stored in a file in a license directory. The license files are written in XML format. The LicenseDirectory variable in the configuration file tells RealServer where to look for license information.

If you purchase additional features, these will be listed in additional files stored in the same directory and will appear on this page. To upgrade your license so that you can use more of RealServer's features, contact RealNetworks or your reseller.

map = serverMap ; for ( var i = 0; i < map.length; i++ ) { RMAOutput( "" + getMapLabel( map, i ) + getMapVal( map, i ) + "\n" ); }

emitLicenses();
Product ID Issue Date Expire Date

map = licenseMap ; for ( var i = 0; i < map.length; i++ ) { RMAOutput( "" + getMapLabel( map, i ) + getMapVal( map, i ) + "\n" ); }

© RealNetworks, Inc. RealAudio and RealVideo are registered trademarks of RealNetworks, Inc. The Real logo, RealProxy, RealServer, RealPlayer, RealText, RealPix, RealAudio Encoder, RealVideo Encoder, RealEncoder, RealPublisher, SureStream, RealBroadcast Network, and RealSystem are trademarks of RealNetworks, Inc. Flash™ is a trademark of Macromedia. Flash© 1997 Macromedia, Inc. Macromedia, the Macromedia logo, Flash and Shockwave are registered trademarks of Macromedia, Inc.

RealServer includes support for JavaScript (tm). Copyright Netscape Communication Corp.

Java is a trademark of Sun Microsystems.

Other product and corporate names may be trademarks or registered trademarks of other companies. They are used for explanation only, with no intent to infringe.

U.S. Patent # 5,793,980; U.S. Patent # 5,917,835