<%!
struct icm_urltab_type
{
  string  path_prefix;
  string  virt_host;
};

struct icm_serv_status_type
{
  int     db_version;
  boolean j2ee_conf;
  boolean j2ee_active;
  string  j2ee_http_port;
  string  j2ee_https_port;
  boolean abap_active;
  boolean vmc_active;
  boolean url_tab_initialized;
  boolean attached_to_jsf;
  string  j2ee_state;
    
  int     active_jnodes;
  int     default_root_hdl;

  struct icm_urltab_type urltab[];
};

struct icm_alias_type
{
  boolean active;
  string  appl;
  string  alias;
  string  aliasID;
  int  sess;
  int  req_count;
};

struct icm_j2ee_status_type
{
  struct icm_alias_type aliastab[];
};

struct icm_inst_type
{
  boolean active;
  boolean lbrest;
  int     flags;
  int     lbrest_flags;
  int     cur_req;
  int     peak_req;
  int     max_req;
  int     total_req;
  string  queue_name;
  int	  queue_buf_count;
  int	  queue_size;
  int	  queue_quota;
  int     serv_id;
  int     clu_id;
};

struct icm_j2ee_inst_type
{
  struct icm_inst_type inst[];
};


static string hdltostring (int hdl)
{
  switch (hdl) {
    case 1: return ("J2EE"); break;
    case 2: return ("ABAP"); break;
    default: return ("unknown");
  }
}

static string flagstostring (int flags)
{
  string str;

  str = "";
  if (flags & 1) str += "P4 ";
  if (flags & 2) str += "IIOP ";
  if (flags & 4) str += "TELNET ";
  if (flags & 8) str += "HTTP ";

  return (str);
}

%>

<%
  int nr, rcr3, rcj2ee, rcinst, max, dir1, dir2, dir3;
  string browser;
  string sstr1, sstr2, sstr3;

  struct icm_serv_status_type icm_serv_status;
  struct icm_j2ee_status_type icm_j2ee_status;
  struct icm_j2ee_inst_type   icm_j2ee_inst;

  browser = __icm_get_browser_type();
  dir1  = __icm_get_form_field ("dir1");
  sstr1 = __icm_get_form_field ("sstr1");
  dir2  = __icm_get_form_field ("dir2");
  sstr2 = __icm_get_form_field ("sstr2");
  dir3  = __icm_get_form_field ("dir3");
  sstr3 = __icm_get_form_field ("sstr3");

  rcr3 = __icm_r3_hdl (1, icm_serv_status);
  if (sstr1 != "")
    sort (icm_serv_status.urltab, dir1, sstr1);
  if (dir1 == 1) dir1 = -1;
  else           dir1 = 1;

  rcj2ee = __icm_j2ee_hdl (1, icm_j2ee_status);
  if (rcj2ee == 0) {
    if (sstr3 != "")
      sort (icm_j2ee_status.aliastab, dir3, sstr3);
    if (dir3 == 1) dir3 = -1;
    else           dir3 = 1;

    rcinst = __icm_j2ee_hdl (2, icm_j2ee_inst);
    if (rcinst == 0) {
      if (sstr2 != "")
        sort (icm_j2ee_inst.inst, dir2, sstr2);
      if (dir2 == 1) dir2 = -1;
      else           dir2 = 1;
    }
  }
  else
    rcinst = -1;
%>

<html>
  <head>
    <link rel=stylesheet type="text/css" href="../public/css/controls_<%=browser%>.css">
    <link rel=stylesheet type="text/css" href="../public/css/sapbsp.css">
    <title> Admin Users </title>
  </head>

  <body class="sapBdy">
   <form action="" name="userForm" method="POST">
    <table border="0" cellspacing="0" cellpadding="0" class="sapTbvAlt" width="100%">
	<tr>
	  <td class="sapTbvCellAlt" Colspan="2">
	    <b><i>Application Server</i></b>
	  </td>
	  <td class="sapTbvCellAlt" align="right">
	    <a href="javascript:parent.frames['main'].location.reload()" class="sapBtnEmph" title="refresh page"><nobr>Refresh</nobr></a>
	  </td>
	</tr>
<%
  if (rcr3 == -1) {
%>
	<tr>
          <td class="sapTbvCellStd" Colspan="3">No information for ABAP available</td>
	</tr>
<%
  } else {
%>
	<tr>
          <td class="sapTbvCellStd">Configured System Type (system/type):</td>
          <td class="sapTbvCellStd"><%=__icm_get_param ("system/type")%></td>
          <td class="sapTbvCellStd">&nbsp;</td>
	</tr>
	<tr>
          <td class="sapTbvCellStd">AS ABAP operational:</td>
          <td class="sapTbvCellStd"><%=icm_serv_status.abap_active%></td>
          <td class="sapTbvCellStd">&nbsp;</td>
	</tr>
<%
	if (icm_serv_status.db_version <= 700) {
%>
	<tr>
          <td class="sapTbvCellStd">J2EE Server configured:</td>
          <td class="sapTbvCellStd"><%=icm_serv_status.j2ee_conf%></td>
          <td class="sapTbvCellStd">&nbsp;</td>
	</tr>
	<tr>
          <td class="sapTbvCellStd">J2EE HTTP Port:</td>
          <td class="sapTbvCellStd"><%=icm_serv_status.j2ee_http_port%></td>
          <td class="sapTbvCellStd">&nbsp;</td>
	</tr>
	<tr>
          <td class="sapTbvCellStd">J2EE HTTPS Port:</td>
          <td class="sapTbvCellStd"><%=icm_serv_status.j2ee_https_port%></td>
          <td class="sapTbvCellStd">&nbsp;</td>
	</tr>
	<tr>
          <td class="sapTbvCellStd">J2EE Server operational:</td>
          <td class="sapTbvCellStd"><%=icm_serv_status.j2ee_active%></td>
          <td class="sapTbvCellStd">&nbsp;</td>
	</tr>
<%
    } else {
%>
	<tr>
          <td class="sapTbvCellStd">AS Java operational:</td>
          <td class="sapTbvCellStd"></td>
          <td class="sapTbvCellStd">&nbsp;</td>
	</tr>
	<tr>
          <td class="sapTbvCellStd">ICM attached to AS Java (Startup Framework):</td>
          <td class="sapTbvCellStd"><%=icm_serv_status.attached_to_jsf%></td>
          <td class="sapTbvCellStd">&nbsp;</td>
	</tr>
	<tr>
          <td class="sapTbvCellStd">Number of active AS Java server nodes:</td>
          <td class="sapTbvCellStd"><%=icm_serv_status.active_jnodes%></td>
          <td class="sapTbvCellStd">&nbsp;</td>
	</tr>
	<tr>
          <td class="sapTbvCellStd">AS Java state:</td>
          <td class="sapTbvCellStd"><%=icm_serv_status.j2ee_state%></td>
          <td class="sapTbvCellStd">&nbsp;</td>
	</tr>
<%
    }
%>
	<tr>
          <td class="sapTbvCellStd">Default root access handler:</td>
          <td class="sapTbvCellStd"><%=hdltostring(icm_serv_status.default_root_hdl)%></td>
          <td class="sapTbvCellStd">&nbsp;</td>
	</tr>
	<tr>
          <td class="sapTbvCellStd">URL Prefix Table loaded:</td>
          <td class="sapTbvCellStd"><%=icm_serv_status.url_tab_initialized%></td>
          <td class="sapTbvCellStd">&nbsp;</td>
	</tr>
	<tr>
	  <td class="sapTbvCellStd" Colspan="3">&nbsp;</td>
	</tr>
      </table>
    <table border=0 cellspacing=1 cellpadding=0 class="sapTbvAlt" width="100%">
      <tr>
        <td class="sapTbvCellAlt" Colspan=3>
          <b><i>URL Prefix Table</i></b>
        </td>
      </tr>
      <tr>
        <td class="sapTbvCellAlt" width=3>
          <i>&nbsp;</i>
        </td>
        <td class="sapTbvCellAlt" width=200>
          <a href="./serv_admin.icp?sstr1=path_prefix&dir1=<%=dir1%>" title="Sort by URL prefix">
	    <i>URL Prefix</i></a>
        </td>
        <td class="sapTbvCellAlt" width=200>
          <a href="./serv_admin.icp?sstr1=virt_host&dir1=<%=dir1%>" title="Sort by virtual host identifier">
	   <i>Virtual Host</i></a>
        </td>
      </tr>
<%
    max = arraylen(icm_serv_status.urltab);
    for (nr = 0; (nr < max) && (icm_serv_status.urltab[nr].path_prefix != ""); nr++) {
%>
      <tr>
	<td class="sapTbvCellStd" nowrap align=left width=2><%= nr %></td>
        <td class="sapTbvCellStd"><%=icm_serv_status.urltab[nr].path_prefix%></td>
        <td class="sapTbvCellStd"><%=icm_serv_status.urltab[nr].virt_host%>&nbsp;</td>
      </tr>
<%
    }
  }
%>
    </table>
<%
  if (rcinst == 0) {
%>
    <br>
    <table border=0 cellspacing=1 cellpadding=0 class="sapTbvAlt" width="100%">
      <tr>
        <td class="sapTbvCellAlt" Colspan=13>
          <b><i>J2EE Instance Table</i></b>
        </td>
        <td class="sapTbvCellAlt" align="right">
	  <a href="javascript:parent.frames['main'].location.reload()" class="sapBtnEmph"><nobr>Refresh</nobr></a>
	</td>
      </tr>
      <tr>
        <td class="sapTbvCellAlt" width=3>
          <i>&nbsp;</i>
        </td>
        <td class="sapTbvCellAlt" width=50>
          <i>Active</i>
        </td>
        <td class="sapTbvCellAlt" width=50>
          <i>Restricted</i>
        </td>
        <td class="sapTbvCellAlt" width=200>
          <a href="./serv_admin.icp?sstr2=queue_name&dir2=<%=dir2%>"><i>Queue Name</i></a>
        </td>
        <td class="sapTbvCellAlt" width=30>
          <a href="./serv_admin.icp?sstr2=clu_id&dir2=<%=dir2%>"><i>Cluster Id</i></a>
        </td>
        <td class="sapTbvCellAlt" width=200>
          <a href="./serv_admin.icp?sstr2=flags&dir2=<%=dir2%>"><i>Services</i></a>
        </td>
        <td class="sapTbvCellAlt" width=200>
          <a href="./serv_admin.icp?sstr2=flags&dir2=<%=dir2%>"><i>Restricted Services</i></a>
        </td>
        <td class="sapTbvCellAlt" width=30>
          <a href="./serv_admin.icp?sstr2=cur_req&dir2=<%=dir2%>"><i>cur req</i></a>
          <i></i>
        </td>
        <td class="sapTbvCellAlt" width=30>
          <a href="./serv_admin.icp?sstr2=peak_req&dir2=<%=dir2%>"><i>peak req</i></a>
        </td>
        <td class="sapTbvCellAlt" width=30>
          <a href="./serv_admin.icp?sstr2=max_req&dir2=<%=dir2%>"><i>max req</i></a>
        </td>
        <td class="sapTbvCellAlt" width=30>
          <i>write/read</i>
        </td>
        <td class="sapTbvCellAlt" width=30>
          <a href="./serv_admin.icp?sstr2=queue_buf_count%&dir2=<%=dir2%>"><i>Queue Elems</i></a>
          <i></i>
        </td>
        <td class="sapTbvCellAlt" width=30>
          <a href="./serv_admin.icp?sstr2=queue_size%&dir2=<%=dir2%>"><i>Queue Size</i></a>
          <i></i>
        </td>
        <td class="sapTbvCellAlt" width=30>
          <a href="./serv_admin.icp?sstr2=queue_quota%&dir2=<%=dir2%>"><i>Queue Quota</i></a>
          <i></i>
        </td>
      </tr>
<%
    max = arraylen(icm_j2ee_inst.inst);

    for (nr = 0; nr < max; nr++) {
%>
      <tr>
	<td class="sapTbvCellStd" nowrap align=left width=2><%= nr %></td>
<% if (icm_j2ee_inst.inst[nr].active) { %>
        <td class="sapTbvCellStd" align="center"><img title="Activated" alt="Activated" src="../public/icons/s_s_okay.gif"></td>
<% } else { %>
        <td class="sapTbvCellStd" align="center"><span title="Deactivated">-</span></td>
<% } %>
<% if (icm_j2ee_inst.inst[nr].lbrest) { %>
        <td class="sapTbvCellStd" align="center"><img title="Activated" alt="Activated" src="../public/icons/s_s_okay.gif"></td>
<% } else { %>
        <td class="sapTbvCellStd" align="center"><span title="Deactivated">-</span></td>
<% } %>
        <td class="sapTbvCellStd"><%=icm_j2ee_inst.inst[nr].queue_name%></td>
        <td class="sapTbvCellStd"><%=icm_j2ee_inst.inst[nr].clu_id%></td>
        <td class="sapTbvCellStd"><%=flagstostring(icm_j2ee_inst.inst[nr].flags)%></td>
        <td class="sapTbvCellStd"><%=flagstostring(icm_j2ee_inst.inst[nr].lbrest_flags)%></td>
        <td class="sapTbvCellStd"><%=icm_j2ee_inst.inst[nr].cur_req%></td>
        <td class="sapTbvCellStd"><%=icm_j2ee_inst.inst[nr].peak_req%></td>
        <td class="sapTbvCellStd"><%=icm_j2ee_inst.inst[nr].max_req%></td>
        <td class="sapTbvCellStd"><%=icm_j2ee_inst.inst[nr].total_req%>/<%=icm_j2ee_inst.inst[nr].total_req-icm_j2ee_inst.inst[nr].cur_req%></td>
        <td class="sapTbvCellStd"><%=icm_j2ee_inst.inst[nr].queue_buf_count%></td>
        <td class="sapTbvCellStd"><%=icm_j2ee_inst.inst[nr].queue_size%></td>
        <td class="sapTbvCellStd"><%=icm_j2ee_inst.inst[nr].queue_quota%></td>
      </tr>
<%
    }
  }
%>
    </table>
<%
  if (rcj2ee == 0) {
%>
    <br>
    <table border=0 cellspacing=1 cellpadding=0 class="sapTbvAlt" width="100%">
      <tr>
        <td class="sapTbvCellAlt" Colspan=6>
          <b><i>J2EE Alias Table</i></b>
        </td>
        <td class="sapTbvCellAlt" align="right">
	  <a href="javascript:parent.frames['main'].location.reload()" class="sapBtnEmph"><nobr>Refresh</nobr></a>
	</td>
      </tr>
      <tr>
        <td class="sapTbvCellAlt" width=3>
          <i>&nbsp;</i>
        </td>
        <td class="sapTbvCellAlt" width=50>
          <i>Active</i>
        </td>
        <td class="sapTbvCellAlt" width=200>
          <a href="./serv_admin.icp?sstr3=appl&dir3=<%=dir3%>"><i>Application</i></a>
        </td>
        <td class="sapTbvCellAlt" width=200>
          <a href="./serv_admin.icp?sstr3=alias&dir3=<%=dir3%>"><i>Alias</i></a>
        </td>
        <td class="sapTbvCellAlt" width=20>
          <i>Ignore Cookie</i>
        </td>
        <td class="sapTbvCellAlt" width=20>
          <a href="./serv_admin.icp?sstr3=req_count&dir3=<%=dir3%>"><i>Request Count</i></a>
          <i></i>
        </td>
        <td class="sapTbvCellAlt" width=20>
          <a href="./serv_admin.icp?sstr3=aliasID&dir3=<%=dir3%>"><i>Alias Identifier</i></a>
        </td>
      </tr>
<%
    max = arraylen(icm_j2ee_status.aliastab);
    for (nr = 0; (nr < max) && (icm_j2ee_status.aliastab[nr].appl != ""); nr++) {
%>
      <tr>
	<td class="sapTbvCellStd" nowrap align=left width=2><%= nr %></td>
<% if (icm_j2ee_status.aliastab[nr].active) { %>
        <td class="sapTbvCellStd" align="center"><img title="Activated" alt="Activated" src="../public/icons/s_s_okay.gif"></td>
<% } else { %>
        <td class="sapTbvCellStd" align="center"><span title="Deactivated">-</span></td>
<% } %>
        <td class="sapTbvCellStd"><%=icm_j2ee_status.aliastab[nr].appl%></td>
        <td class="sapTbvCellStd"><%=icm_j2ee_status.aliastab[nr].alias%></td>
        <td class="sapTbvCellStd"><%=icm_j2ee_status.aliastab[nr].sess%></td>
        <td class="sapTbvCellStd"><%=icm_j2ee_status.aliastab[nr].req_count%></td>
        <td class="sapTbvCellStd"><%=icm_j2ee_status.aliastab[nr].aliasID%></td>
      </tr>
<%
    }
  }
%>
    </table>
   </form>
  </body>
</html>
