Project

General

Profile

Administration Console

The server application uses JETTY 3rd party library to provide the initial page to access the admin client as an applet. When the applet loads, it then creates a GUI and allows logging into the admin server. The applet allows to query properties of the server, do operations on directory file, handle sessions and shutdown server, do user and group management operations etc.

Remember that the administration console is available on web access and the server application doesn't start the web service unless it's configured to run in a secure environment. The console is accessible using the following link:

https://localhost:7443/admin

You need to log in with a user belonging to the admin group . For example the user admin . If needed, you can update the password of admin directly in directory.xml at node class="user" name="admin" before starting the FWD server. Encode the password with SHA and serialize with base64, identical to com.goldencode.p2j.security.HashPassword . For tryouts and initial setups, here is the UNSAFE!! base64 SHA encoding of the word admin : <node-attribute name="password" value="0DPiKuNIrrVmD8IUCuw1hQxNqZc="/> , after which you can use admin/admin as credentials.

See Accessing the Administration Client chapter for more information on this topic.

Basic Console Properties

This enables the administration console and sets the HTTPS port number that will be used for the embedded Jetty web server for access to the applet. These entries are mostly seen in the server-specific portion of the directory.

The first value enables the administration console. By default it is false, so it must be present and set to TRUE in order to have the administration applet available via https:

<node class="boolean" name="adminEnabled">
   <node-attribute name="value" value="TRUE"/>
</node>

However, because of the security concerns, the administration applet cannot be loaded unless it will use a secured connection. This means that in the server's bootstrap configuration file the net:connection:secure must also be set to TRUE.

The second entry is the HTTPS port used by Jetty to deliver the administration web page:

<node class="integer" name="adminPort">
   <node-attribute name="value" value="7443"/>
</node>

Of course, the port must be not occupied and not firewall-ed. The default value is 9443 if the entry is not found by the search algorithm. The port 7443 was also used in the example above, for composing the URL for accessing the administration console.

According to the search algorithm from the beginning of the chapter, the two admin nodes are first looked into the /server/<serverID>/runtime/default/, then, if this does not exist the /server/default/runtime/default is searched:

<node class="container" name="server">
   <node class="container" name="default">
      <node class="container" name="runtime">
         <node class="container" name="default">
            <node class="boolean" name="adminEnabled">
               <node-attribute name="value" value="TRUE"/>
            </node>
            <node class="integer" name="adminPort">
               <node-attribute name="value" value="7443"/>
            </node>
         </node>
      </node>
   </node>
</node>

If none of these two locations contain the entry then the default value is used.

GUI Extensions

See the Hooks chapter of the FWD Developer Guide for details on how to develop an extension to the administration console. Extensions generally have both a server and a client component. The client component implements the custom user interface changes as part of the console. The server component provides a remote API that implements any services needed by the client code. It is the server side that does the real work.

Both the client and server side extensions are declared in /security/config/extensions node:

<node class="container" name="security">
   <node class="container" name="config">
      <node class="container" name="extensions">
         <node class="string" name="client">
            <node-attribute name="value" value="com.acme.myapp.admin.Client"/>
         </node>
         <node class="string" name="server">
            <node-attribute name="value" value="com.acme.myapp.admin.Server"/>
         </node>
      </node>
   </node>
</node>

Here an extension has been declared having com.acme.myapp.admin.Client on client side and com.acme.myapp.admin.Server on server side classes as entry points. Each entry value (regardless it is on client or server side) represents the fully qualified package and class name of the extension class (without any .java or .class suffix).

As the application does the startup initialization and uses absolute path to look up these values, there is no search for these entries into the directory structure.

Reference

The following options can be specified:

Option ID Data Type Default Value Required Details
runtime/default/adminEnabled boolean FALSE No Enables the administration console. Also connections must be secured by setting the net:connection:secure entry from the server's bootstrap configuration file to TRUE.
runtime/default/adminPort integer 9443 No Sets HTTPS port used by Jetty to deliver the administration applet in a web page. Server's administration must be also enabled.
/security/config/extensions/client string n/a No Fully qualified package and class name of the extension class on the client side.
/security/config/extensions/server string n/a No Fully qualified package and class name of the extension class on the server side.

© 2004-2017 Golden Code Development Corporation. ALL RIGHTS RESERVED.