Module to get IP address, port and label of a server

This came as a question today.  This following code could be done using python in Iguana 4, it’s just a whole lot easier with the Translator to write the same logic in Lua.

This module does the following:

  • Invokes ipconfig using popen and picks out the IPv4 address of the server.
  • Opens and parses IguanaConfiguration.xml to get the port and optional label for the server.

The above screen shot shows good usage of this module – we invoke server.Info() just one time when the script is first executed. The function returns a Lua table of the information about the server. In this case the server label was set to Training.

Other good techniques for getting server information are to look at environmental variables which you can obtain via os.getenv() in Lua.

Here’s the source code for the module:

server = {}

local function ReadFile(FileName)
   local F =
   local X = F:read("*all")
   return X

function GetServer()
   local X = ReadFile('IguanaConfiguration.xml')
   X = xml.parse{data=X}
   local L=''
   if X.iguana_config.web_config:childCount('server_label') > 0 then
      L = X.iguana_config.web_config.server_label:nodeValue()
   return L, X.iguana_config.web_config.port:nodeValue()

local function GetHost()
   local F,L,IP
   F = io.popen('ipconfig')
   L = F:read("*all")
   IP = L:match('IP Address.*: (%d*.%d*.%d*.%d*).*Sub')
   if not IP then 
      IP = L:match('IPv4 Address.*: (%d*.%d*.%d*.%d*).*Sub')
   return IP

function server.Info()
   local Result = {}
   Result.IP = GetHost()
   Result.Label, Result.Port = GetServer()
   return Result

Leave A Comment?

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.