<% var applications = application.sharedGlobals.get('com.threecrickets.prudence.applications') var version = application.sharedGlobals.get('com.threecrickets.prudence.version') var component = application.component var action = conversation.query.get('action') var item = conversation.query.get('item') var index = conversation.query.get('index') if (null !== index) { if (item == 'host') { item = component.hosts.get(index) } else if (item == 'server') { item = component.servers.get(index) } else if (item == 'application') { item = applications.get(index) } else { item = null } if (null !== item) { if (action == 'stop') { item.stop() } else if (action == 'start') { item.start() } conversation.response.locationRef = conversation.request.resourceRef.baseRef conversation.statusCode = 303 conversation.stop() } } function findRoutes(app) { var routes = [] for (var i = component.hosts.iterator(), index = 0; i.hasNext(); index++) { var host = i.next(); for (var ii = host.routes.iterator(); ii.hasNext(); ) { var route = ii.next(); if (route.next === app) { routes.push({route: route, host: host}) } } } return routes } %> Prudence Administration

Prudence Administration

Welcome!

Here you'll be able to control an instance of Prudence, its applications, virtual hosts and servers. Note that live changes you make here will be lost when you restart Prudence.

Running on Prudence version <%= version %>.

Applications

<% for (var i = applications.iterator(), index = 0; i.hasNext(); index++) { var app = i.next(); %>

<%= app.name %>

<%= app.description %>

Owner: <%= app.owner %>
Author: <%= app.author %>

<% var routes = findRoutes(app); if (routes.length > 0) { %>

Routes:

<% } %>

<% if (app.started) { %> Running (stop) <% } else { %> Stopped (start) <% } %>

<% } %>

Virtual Hosts

<% for (var i = component.hosts.iterator(), index = 0; i.hasNext(); index++) { var host = i.next(); %>

<%= host.name %>

URI patterns to match:

  • Hosts: <%= host.hostScheme + '://' + host.hostDomain + ':' + host.hostPort %>
  • Resources: <%= host.resourceScheme + '://' + host.resourceDomain + ':' + host.resourcePort %>
  • Servers: <%= host.serverAddress + ':' + host.serverPort %>

Localhost: <%= host.localHostName + ' (' + host.localHostAddress + ')' %>

Base routes:

    <% for (var ii = host.routes.iterator(); ii.hasNext(); ) { var route = ii.next(); %>
  • <%= route.template.pattern + (route.matchingMode == 1 ? '*' : '') %> - <%= route.next['class'].simpleName %> <% if (route.next instanceof org.restlet.Application) { %> "<%= route.next.name %>" <% } else if (route.next instanceof org.restlet.routing.Redirector) { %> to "<%= route.next.targetTemplate %>" <% } %>
  • <% } %>

<% if (host.started) { %> Running (stop) <% } else { %> Stopped (start) <% } %>

<% } %>

Servers

<% for (var i = component.servers.iterator(), index = 0; i.hasNext(); index++) { var server = i.next(); %>

<%= server.name %>

Address and port: <%= (server.address ? server.address : '*') + ':' + server.port %>
Protocols: <%= server.protocols %>

<% if (server.started) { %> Running (stop) <% } else { %> Stopped (start) <% } %>

<% } %>