crossroads

Git mirror of https://crossroads.e-tunity.com/
git clone git://git.finwo.net/app/crossroads
Log | Files | Refs | LICENSE

status-savebutton.xslt (23525B)


      1 <?xml version="1.0" encoding="UTF-8"?>
      2 <xsl:stylesheet version="1.0"
      3  xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
      4 <xsl:output method="html"
      5 	    encoding="UTF-8"
      6 	    doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN"/>
      7 
      8 <xsl:template match="/">
      9   <html>
     10     <head>
     11       <title>XR Status Overview</title>
     12       <style type="text/css">
     13 	h1 {
     14 	  font-family: Verdana,Helvetica;
     15 	  font-size: 12pt;
     16 	  color: blue;
     17 	}
     18 	body {
     19 	  font-family: Verdana,Helvetica;
     20 	  font-size: 8pt;
     21 	}
     22 	table {
     23 	  border-collapse: collapse;
     24 	  border-style: hidden;
     25 	}
     26 	td {
     27 	  font-family: Verdana,Helvetica;
     28 	  font-size: 8pt;
     29 	  background-color: #ffff99;
     30 	  border: 1px solid #f0f090;
     31 	}
     32 	input {
     33 	  font-family: Verdana,Helvetica;
     34 	  font-size: 8pt;
     35 	}
     36 	.header  { background-color: #f3f399; }
     37 	.footer  { color: gray; }
     38       </style>
     39       <script type="text/javascript">
     40 	function goto(uri, input) {
     41 	  if (input == '')
     42 	    document.location = uri;
     43 	  else {
     44 	    var el = document.getElementById(input);
     45 	    if (el) {
     46 	      var value = el.value;
     47 	      if (value != "")
     48 	        document.location = uri + encodeURIComponent(value);
     49 	      else
     50 	        document.location = uri;
     51 	    }
     52 	  }
     53         }
     54 	function save(uri, name) {
     55 	  var elem = document.getElementById(name);
     56 	  var val  = elem.value;
     57 	  alert('name: ' + name + ', value: ' + val + ', uri: ' + uri);
     58 	  if (val != "") 
     59 	    document.location = uri + encodeURIComponent(val);
     60 	  else
     61 	    document.location = uri;
     62 	}
     63       </script>
     64     </head>
     65     <body>
     66       <h1>XR Status Overview</h1>
     67       <hr/>
     68       <xsl:apply-templates/>
     69     </body>
     70   </html>
     71 </xsl:template>
     72 
     73 <xsl:template match="/status">
     74   <table>
     75     <tr>
     76       <td valign="top">
     77 	<!-- This is the left hand detailed status view -->
     78 	<table>
     79 	  <tr>
     80 	    <td colspan="4"><b>Detailed Status</b></td>
     81 	  </tr>
     82 	  <tr>
     83 	    <td colspan="4"><hr/></td>
     84 	  </tr>
     85 	  <xsl:apply-templates select="/status/server"/>
     86 	  <xsl:apply-templates select="/status/backend"/>
     87 	  
     88 	  <tr> <td colspan="4"><hr/></td></tr>
     89 	  <tr>
     90 	    <td class="header" colspan="2">
     91 	      <b>Add back end ip:port</b>
     92 	    </td>
     93 	    <td class="header" colspan="2" align="right">
     94 	      <input type="text" size="30" name="addbackend" id="addbackend"
     95 		     onchange="goto('/server/addbackend/', 'addbackend');"/>
     96 	    </td>
     97 	  </tr>
     98 	  <tr> <td colspan="4"><hr/></td></tr>
     99     
    100 	</table>
    101 	<xsl:apply-templates select="/status/id"/>
    102       </td>
    103       <td valign="top">
    104 	<!-- This is the right-hand overview -->
    105 	<table width="100%">
    106 	  <tr>
    107 	    <td colspan="2"><b>Quick Overview</b></td>
    108 	  </tr>
    109 	  <tr>
    110 	    <td colspan="2"><hr/></td>
    111 	  </tr>
    112 	  <xsl:for-each select="/status/backend">
    113 	    <tr>
    114 	      <td>
    115 		<b>Back end
    116 		  <a href="#{nr}"><xsl:value-of select="address"/></a>
    117 		</b>
    118 	      </td>
    119 	      <td>
    120 		<xsl:value-of select="up"/>,
    121 		<xsl:value-of select="live"/>,
    122 		<xsl:value-of select="available"/>,
    123 		<xsl:value-of select="connections"/> connections
    124 	      </td>
    125 	    </tr>
    126 	  </xsl:for-each>
    127 	</table>
    128 	<!-- This is the activity overview -->
    129 	<table width="100%">
    130 	  <tr>
    131 	    <td colspan="5"><hr/></td>
    132 	  </tr>
    133 	  <tr>
    134 	    <td colspan="5"><b>Activity</b></td>
    135 	  </tr>
    136 	  <tr>
    137 	    <td colspan="5"><hr/></td>
    138 	  </tr>
    139 	  <tr>
    140 	    <td colspan="3">Number of threads</td>
    141 	    <td><xsl:value-of select="/status/activity/threadcount"/></td>
    142 	    <td></td>
    143 	  </tr>
    144 	  <tr>
    145 	    <td colspan="3">Used file descriptors (approx.)</td>
    146 	    <td><xsl:value-of select="/status/activity/openfiles"/></td>
    147 	    <td></td>
    148 	  </tr>
    149 	  <tr>
    150 	    <td colspan="3">File descriptor limit</td>
    151 	    <td><xsl:value-of select="/status/activity/maxopenfiles"/></td>
    152 	    <td></td>
    153 	  </tr>
    154 	  <tr>
    155 	    <td><b>Thread</b></td>
    156 	    <td><b>Description</b></td>
    157 	    <td><b>Back end</b></td>
    158 	    <td><b>Duration</b></td>
    159 	    <td></td>
    160 	  </tr>
    161 	  <xsl:apply-templates select="/status/activity/threadlist/thread">
    162 	    <xsl:sort select="duration" data-type="number"/>
    163 	  </xsl:apply-templates>
    164 	</table>
    165       </td>
    166     </tr>
    167   </table>
    168 </xsl:template>
    169 
    170 <xsl:template match="/status/activity/threadlist/thread">
    171   <tr>
    172     <td><xsl:value-of select="id"/></td>
    173     <td><xsl:value-of select="description"/></td>
    174     <xsl:choose>
    175       <xsl:when test="backend = -1">
    176 	<td></td>
    177       </xsl:when>
    178       <xsl:otherwise>
    179 	<td><xsl:value-of select="address"/></td>
    180       </xsl:otherwise>
    181     </xsl:choose>
    182     <td><xsl:value-of select="duration"/></td>
    183     <xsl:choose>
    184       <xsl:when test="backend = -1">
    185 	<td></td>
    186       </xsl:when>
    187       <xsl:otherwise>
    188 	<td><input type="button" value="Kill"
    189 		   onclick="goto('/thread/kill/{id}', '');"/>
    190 	</td>
    191       </xsl:otherwise>
    192     </xsl:choose>
    193   </tr>
    194 </xsl:template>
    195 
    196 <xsl:template match="/status/id">
    197   <i>
    198     Powered by Crossroads V<xsl:value-of select="version"/>.
    199     Visit
    200     <a href="{distsite}" 
    201        target="_blank"><xsl:value-of select="distsite"/></a>
    202     for more info.
    203   </i>
    204 </xsl:template>
    205 
    206 <xsl:template match="/status/server">
    207   <tr>
    208     <td class="header" colspan="3">
    209       <b>Server <xsl:value-of select="address"/> </b>
    210     </td>
    211     <td class="header" align="right">
    212       <input type="button" onclick="goto('/', '');" value="Refresh"/>
    213     </td>
    214   </tr>
    215   <tr>
    216     <td>Status</td>
    217     <td colspan="3">
    218       <xsl:choose>
    219 	<xsl:when test="terminating = 0">
    220 	  Accepting connections,
    221 	  <xsl:value-of select="connections"/> concurrent client(s),
    222 	</xsl:when>
    223 	<xsl:otherwise>
    224 	  <font color="red">
    225 	    Terminating, still serving
    226 	    <xsl:value-of select="connections"/> connections,
    227 	  </font>
    228 	</xsl:otherwise>
    229       </xsl:choose>
    230       <xsl:value-of select="backends"/> defined back ends
    231     </td>
    232   </tr>
    233   <tr>
    234     <td>Dispatch mode</td>
    235     <td colspan="3"> <xsl:value-of select="dispatchmode"/> </td>
    236   </tr>
    237   <tr>
    238     <td>Type</td>
    239     <td colspan="2"></td>
    240     <td align="right">
    241       <xsl:choose>
    242 	<xsl:when test="type = 'http'">
    243 	  <select name="servertype" id="servertype">
    244 	    <option value="tcp">tcp</option>
    245 	    <option value="http" selected="1">http</option>
    246 	  </select>
    247 	</xsl:when>
    248 	<xsl:otherwise>
    249 	  <select name="servertype" id="servertype">
    250 	    <option value="tcp" selected="1">tcp</option>
    251 	    <option value="http">http</option>
    252 	  </select>
    253 	</xsl:otherwise>
    254       </xsl:choose>
    255       <input type="button" value="Save"
    256 	     onclick="save('/server/type/', 'servertype');"/>
    257     </td>
    258   </tr>
    259   <tr>
    260     <td>Checks</td>
    261     <td>Wakeup interval</td>
    262     <td>
    263       <xsl:choose>
    264 	<xsl:when test="checks/wakeupinterval = 0">
    265 	  off
    266 	</xsl:when>
    267 	<xsl:otherwise>
    268 	  sec
    269 	</xsl:otherwise>
    270       </xsl:choose>
    271     </td>
    272     <td>
    273       <input type="text" size="8" name="wakeupinterval"
    274 	     id="wakeupinterval" value="{checks/wakeupinterval}"/>
    275       <input type="button" value="Save"
    276 	     onclick="save('/server/wakeupinterval/', 'wakeupinterval');"/>
    277     </td>
    278   </tr>
    279   <tr>
    280     <td></td>
    281     <td>Checkup interval</td>
    282     <td>
    283       <xsl:choose>
    284 	<xsl:when test="checks/checkupinterval = 0">
    285 	  off
    286 	</xsl:when>
    287 	<xsl:otherwise>
    288 	  sec
    289 	</xsl:otherwise>
    290       </xsl:choose>
    291     </td>
    292     <td>
    293       <input type="text" size="8" name="checkupinterval"
    294 	     id="checkupinterval" value="{checks/checkupinterval}"/>
    295       <input type="button" value="Save"
    296 	     onclick="save('/server/checkupinterval/', 'checkupinterval');"/>
    297     </td>
    298   </tr>
    299   <tr>
    300     <td>Timeouts</td>
    301     <td>Client read</td>
    302     <td>
    303       <xsl:choose>
    304 	<xsl:when test="clientreadtimeout = 0">
    305 	  unlimited
    306 	</xsl:when>
    307 	<xsl:otherwise>
    308 	  sec
    309 	</xsl:otherwise>
    310       </xsl:choose>
    311     </td>
    312     <td align="right">
    313       <input type="text" size="8" name="clientreadtimeout"
    314 	     id="clientreadtimeout" value="{clientreadtimeout}"/>
    315       <input type="button" value="Save"
    316 	     onclick="save('/server/clientreadtimeout/', 'clientreadtimeout');"/>
    317     </td>
    318   </tr>
    319   <tr>
    320     <td></td>
    321     <td>Client write</td>
    322     <td>
    323       <xsl:choose>
    324 	<xsl:when test="clientwritetimeout = 0">
    325 	  unlimited
    326 	</xsl:when>
    327 	<xsl:otherwise>
    328 	  sec
    329 	</xsl:otherwise>
    330       </xsl:choose>
    331     </td>
    332     <td align="right"> 
    333       <input type="text" size="8" name="clientwritetimeout"
    334 	     id="clientwritetimeout" value="{clientwritetimeout}"/>
    335       <input type="button" value="Save"
    336 	     onchange="save('/server/clientwritetimeout/', 'clientwritetimeout');"/>
    337     </td>
    338   </tr>
    339   <tr>
    340     <td></td>
    341     <td>Back end read</td>
    342     <td>
    343       <xsl:choose>
    344 	<xsl:when test="backendreadtimeout = 0">
    345 	  unlimited
    346 	</xsl:when>
    347 	<xsl:otherwise>
    348 	  sec
    349 	</xsl:otherwise>
    350       </xsl:choose>
    351     </td>
    352     <td align="right">
    353       <input type="text" size="8" name="backendreadtimeout"
    354 	     id="backendreadtimeout" value="{backendreadtimeout}"/>
    355       <input type="button" value="Save"
    356 	     onclick="save('/server/backendreadtimeout/', 'backendreadtimeout');"/>
    357     </td>
    358   </tr>
    359   <tr>
    360     <td></td>
    361     <td>Back end write</td>
    362     <td>
    363       <xsl:choose>
    364 	<xsl:when test="backendwritetimeout = 0">
    365 	  unlimited
    366 	</xsl:when>
    367 	<xsl:otherwise>
    368 	  sec
    369 	</xsl:otherwise>
    370       </xsl:choose>
    371     </td>
    372     <td>
    373       <input type="text" size="8" name="backendwritetimeout"
    374 	     id="backendwritetimeout" value="{backendwritetimeout}"/>
    375       <input type="button" value="Save"
    376 	     onclick="save('/server/backendwritetimeout/', 'backendwritetimeout');"/>
    377     </td>
    378   </tr>
    379   <tr>
    380     <td></td>
    381     <td>DNS cache validity</td>
    382     <td>
    383       <xsl:choose>
    384 	<xsl:when test="dnscachetimeout = 0">
    385 	  unused
    386 	</xsl:when>
    387 	<xsl:otherwise>
    388 	  sec
    389 	</xsl:otherwise>
    390       </xsl:choose>
    391     </td>
    392     <td>
    393       <input type="text" size="8" name="dnscachetimeout"
    394 	     id="dnscachetimeout" value="{dnscachetimeout}"/>
    395       <input type="button" value="Save"
    396 	     onclick="save('/server/dnscachetimeout/', 'dnscachetimeout');"/>
    397     </td>
    398   </tr>
    399   
    400   <tr>
    401     <td>Fast sockets closing</td>
    402     <td colspan="2">eliminates TIME_WAIT state</td>
    403     <td align="right">
    404       <xsl:choose>
    405 	<xsl:when test="closesocketsfast = 0">
    406 	  <select name="closesocketsfast" id="closesocketsfast">
    407 	    <option value="on">yes</option>
    408 	    <option value="off" selected="1">no</option>
    409 	  </select>
    410 	</xsl:when>
    411 	<xsl:otherwise>
    412 	  <select name="closesocketsfast" id="closesocketsfast">
    413 	    <option value="on" selected="1">yes</option>
    414 	    <option value="off">no</option>
    415 	  </select>
    416 	</xsl:otherwise>
    417       </xsl:choose>
    418       <input type="button" value="Save"
    419 	     onclick="save('/server/closesocketsfast/', 'closesocketsfast');"/>
    420     </td>
    421   </tr>
    422   <tr>
    423     <td>Debugging</td>
    424     <td colspan="2">Verbose logging</td>
    425     <td align="right">
    426       <xsl:choose>
    427 	<xsl:when test="debugging/verbose = 0">
    428 	  <select name="serververbose" id="serververbose">
    429 	    <option value="on">yes</option>
    430 	    <option value="off" selected="1">no</option>
    431 	  </select>
    432 	</xsl:when>
    433 	<xsl:otherwise>
    434 	  <select name="serververbose" id="serververbose">
    435 	    <option value="on" selected="1">yes</option>
    436 	    <option value="off">no</option>
    437 	  </select>
    438 	</xsl:otherwise>
    439       </xsl:choose>
    440       <input type="button" value="Save"
    441 	     onclick="save('/server/verbose/', 'serververbose');"/>
    442     </td>
    443   </tr>
    444   <tr>
    445     <td></td>
    446     <td colspan="2">Debug logging</td>
    447     <td align="right">
    448       <xsl:choose>
    449 	<xsl:when test="debugging/debug = 0">
    450 	  <select name="serverdebug" id="serverdebug">
    451 	    <option value="yes">yes</option>
    452 	    <option value="no" selected="1">no</option>
    453 	  </select>
    454 	</xsl:when>
    455 	<xsl:otherwise>
    456 	  <select name="serverdebug" id="serverdebug">
    457 	    <option value="yes" selected="1">yes</option>
    458 	    <option value="no">no</option>
    459 	  </select>
    460 	</xsl:otherwise>
    461       </xsl:choose>
    462       <input type="button" value="Save"
    463 	     onclick="save('/server/debug/', 'serververbose');"/>
    464     </td>
    465   </tr>
    466   <tr>
    467     <td></td>
    468     <td>Traffic log directory</td>
    469     <td colspan="2" align="right">
    470       <input type="text" size="30" name="logtrafficdir" id="logtrafficdir"
    471 	     value="{debugging/logtrafficdir}"/>
    472       <input type="button" value="Save"
    473 	     onclick="goto('/server/logtrafficdir/', 'logtrafficdir');"/>
    474     </td>
    475   </tr>
    476   <tr>
    477     <td>Activity scripts</td>
    478     <td>Onstart command</td>
    479     <td colspan="2" align="right">
    480       <input type="text" size="30" name="onstart" id="onstart"
    481 	     value="{onstart}"/>
    482       <input type="button" value="Save"
    483 	     onclick="save('/server/onstart/', 'onstart');"/>
    484     </td>
    485   </tr>
    486   <tr>
    487     <td></td>
    488     <td>Onend command</td>
    489     <td colspan="2" align="right">
    490       <input type="text" size="30" name="onend" id="onend"
    491 	     value="{onend}"/>
    492       <input type="button" value="Save"
    493 	     onclick="save('/server/onend/', 'onend');"/>
    494     </td>
    495   </tr>
    496   <tr>
    497     <td></td>
    498     <td>Onfail command</td>
    499     <td colspan="2" align="right">
    500       <input type="text" size="30" name="onfail" id="onfail"
    501 	     value="{onfail}"/>
    502       <input type="button" value="Save"
    503 	     onclick="save('/server/onfail/', 'onfail');"/>
    504     </td>
    505   </tr>
    506   <tr>
    507     <td>Network buffer size</td>
    508     <td colspan="2">bytes</td>
    509     <td>
    510       <input type="text" size="8" name="serverbufsz" id="serverbufsz"
    511 	     value="{buffersize}"/>
    512       <input type="button" value="Save"
    513 	     onclick="save('/server/buffersize/', 'serverbufsz');"/>
    514     </td>
    515   </tr>
    516   <tr>
    517     <td>DOS Protection</td>
    518     <td>Max. connections </td>
    519     <td>
    520       <xsl:choose>
    521 	<xsl:when test="/dosprotection/maxconnections = 0">
    522 	  unlimited
    523 	</xsl:when>
    524 	<xsl:otherwise>
    525 	  maximum value (0 for unlimited)
    526 	</xsl:otherwise>
    527       </xsl:choose>
    528     </td>
    529     <td>
    530       <input type="text" size="8" name="setservermaxcon" class="input"
    531 	     id="setservermaxcon" value="{dosprotection/maxconnections}"
    532 	     onchange="goto('/server/maxconnections/', 'setservermaxcon');"/>
    533     </td>
    534   </tr>
    535   
    536   <tr>
    537     <td></td>
    538     <td>Sample duration</td>
    539     <td>sec</td>
    540     <td>
    541       <input type="text" size="8" name="timeinterval" class="input"
    542 	     id="timeinterval" value="{dosprotection/timeinterval}"
    543 	     onchange="goto('/server/timeinterval/', 'timeinterval');"/>
    544     </td>
    545   </tr>
    546   <tr>
    547     <td></td>
    548     <td>Hard max connection rate</td>
    549     <td>
    550       <xsl:choose>
    551 	<xsl:when test="/dosprotection/hardmaxconnrate = 0">
    552 	  unlimited
    553 	</xsl:when>
    554 	<xsl:otherwise>
    555 	  sessions per sample (0 for unlimited)
    556 	</xsl:otherwise>
    557       </xsl:choose>
    558     </td>
    559     <td>
    560       <input type="text" size="8" name="hardmaxconnrate" class="input"
    561 	     id="hardmaxconnrate" value="{dosprotection/hardmaxconnrate}"
    562 	     onchange="goto('/server/hardmaxconnrate/', 'hardmaxconnrate');"/>
    563     </td>
    564   </tr>
    565   <tr>
    566     <td></td>
    567     <td>Soft max connection rate</td>
    568     <td>
    569       <xsl:choose>
    570 	<xsl:when test="/dosprotection/softmaxconnrate = 0">
    571 	  unlimited
    572 	</xsl:when>
    573 	<xsl:otherwise>
    574 	  sessions per sample (0 for unlimited)
    575 	</xsl:otherwise>
    576       </xsl:choose>
    577     </td>
    578     <td>
    579       <input type="text" size="8" name="softmaxconnrate" class="input"
    580 	     id="softmaxconnrate" value="{dosprotection/softmaxconnrate}"
    581 	     onchange="goto('/server/softmaxconnrate/', 'softmaxconnrate');"/>
    582     </td>
    583   </tr>
    584   <tr>
    585     <td></td>
    586     <td>Defer time</td>
    587     <td>in microsec, 1.000.000 = 1 sec</td>
    588     <td>
    589       <input type="text" size="8" name="defertime" class="input"
    590 	     id="defertime" value="{dosprotection/defertime}"
    591 	     onchange="goto('/server/defertime/', 'defertime');"/>
    592     </td>
    593   </tr>
    594 
    595   <tr>
    596     <td></td>
    597     <td>Hard excess signal program</td>
    598     <td colspan="2" align="right">
    599       <input type="text" size="30" name="hardexcess" class="input"
    600 	     id="hardexcess" value="{dosprotection/hardmaxconnexcess}"
    601 	     onchange="goto('/server/hardmaxconnexcess/', 'hardexcess');"/>
    602     </td>
    603   </tr>
    604   
    605   <tr>
    606     <td></td>
    607     <td>Soft excess signal program</td>
    608     <td colspan="2" align="right">
    609       <input type="text" size="30" name="softexcess" class="input"
    610 	     id="softexcess" value="{dosprotection/softmaxconnexcess}"
    611 	     onchange="goto('/server/softmaxconnexcess/', 'softexcess');"/>
    612     </td>
    613   </tr>
    614   
    615   <tr>
    616     <td>Access Control Lists</td>
    617     <td>New allow-from</td>
    618     <td colspan="2" align="right">
    619       <input type="text" size="30" name="addallowfrom" class="input"
    620 	     id="addallowfrom"
    621 	     onchange="goto('/server/addallowfrom/', 'addallowfrom');"/>
    622     </td>
    623   </tr>
    624   <xsl:apply-templates select="/status/server/acl/allow"/>
    625   <tr>
    626     <td></td>
    627     <td>New deny-from</td>
    628     <td colspan="2" align="right">
    629       <input type="text" size="30" name="adddenyfrom" class="input"
    630 	     id="adddenyfrom"
    631 	     onchange="goto('/server/adddenyfrom/', 'adddenyfrom');"/>
    632     </td>
    633   </tr>
    634   <xsl:apply-templates select="/status/server/acl/deny"/>
    635   
    636   <xsl:if test="/status/server/type = 'http'">
    637     <xsl:apply-templates select="/status/server/http"/>
    638   </xsl:if>
    639 </xsl:template>
    640 
    641 <xsl:template match="/status/backend">
    642   <tr> <td colspan="4"><hr/></td></tr>
    643   <tr>
    644     <td class="header" colspan="3">
    645       <a name="{nr}"/>
    646       <b> Back end <xsl:value-of select="address"/> </b>
    647     </td>
    648     <td class="header">
    649       <input type="button" value="Delete"
    650 	     onclick="goto('/server/deletebackend/{nr}', '');"/>
    651     </td>      
    652   </tr>
    653   <tr>
    654     <td><b>State</b></td>
    655     <td>Health</td>
    656     <td colspan="2">
    657       <xsl:value-of select="live"/>,
    658       <xsl:value-of select="available"/>
    659     </td>
    660   </tr>
    661   <tr>
    662     <td></td>
    663     <td>Connections</td>
    664     <td colspan="2">
    665       <xsl:value-of select="connections"/>
    666       <xsl:if test="anticipated &gt; 0">
    667 	(anticipating <xsl:value-of select="anticipated"/>)
    668       </xsl:if>
    669     </td>
    670   </tr>
    671   <tr>
    672     <td></td>
    673     <td>Served</td>
    674     <td colspan="2">
    675       <xsl:value-of select="bytesserved"/> bytes,
    676       <xsl:value-of select="clientsserved"/> clients
    677     </td>
    678   </tr>
    679   <tr>
    680     <td><b>Options</b></td>
    681     <td colspan="2">Weight</td>
    682     <td>
    683       <input type="text" size="8" name="setbackendweight{nr}"
    684 	     id="setbackendweight{nr}" value="{weight}"
    685 	     onchange="goto('/backend/{nr}/weight/', 'setbackendweight{nr}');"/>
    686     </td>
    687   </tr>
    688   <tr>
    689     <td></td>
    690     <td>Max. connections</td>
    691     <td>
    692       <xsl:choose>
    693 	<xsl:when test="maxconnections = 0">
    694 	  unlimited
    695 	</xsl:when>
    696 	<xsl:otherwise>
    697 	  maximum value (0 for unlimited)
    698 	</xsl:otherwise>
    699       </xsl:choose>
    700     </td>
    701     <td>
    702       <input type="text" size="8" name="setbackendmaxcon{nr}" class="input"
    703 	     id="setbackendmaxcon{nr}" value="{maxconnections}"
    704 	     onchange="goto('/backend/{nr}/maxconnections/', 'setbackendmaxcon{nr}');"/>
    705     </td>
    706   </tr>
    707   <tr>
    708     <td></td>
    709     <td colspan="2">Load average</td>
    710     <td>
    711       <input type="text" size="8" name="setloadaverage{nr}"
    712 	     id="setloadaverage{nr}" value="{loadavg}"
    713 	     onchange="goto('/backend/{nr}/loadavg/', 'setloadaverage{nr}');"/>
    714     </td>
    715   </tr>
    716   <tr>
    717     <td></td>
    718     <td colspan="2">Backend check (. to reset)</td>
    719     <td>
    720       <input type="text" size="8" name="backendcheck{nr}"
    721 	     id="backendcheck{nr}" value="{backendcheck}"
    722 	     onchange="goto('/backend/{nr}/backendcheck/', 'backendcheck{nr}');"/>
    723     </td>
    724   </tr>
    725   <xsl:if test="/status/server/type = 'http'">
    726     <tr>
    727       <td></td>
    728       <td>Host match</td>
    729       <td>
    730 	<xsl:choose>
    731 	  <xsl:when test="hostmatch = '.'">
    732 	    any host request
    733 	  </xsl:when>
    734 	  <xsl:otherwise>
    735 	    (. for any host)
    736 	  </xsl:otherwise>
    737 	</xsl:choose>
    738       </td>
    739       <td>
    740 	<input type="text" size="8" name="sethostmatch{nr}"
    741 	       id="sethostmatch{nr}" value="{hostmatch}"
    742 	       onchange="goto('/backend/{nr}/hostmatch/', 'sethostmatch{nr}');"/>
    743 	</td>
    744     </tr>
    745   </xsl:if>
    746   <tr>
    747     <td></td>
    748     <td colspan="2">Up state</td>
    749     <td>
    750       <xsl:choose>
    751 	<xsl:when test="up = 'up'">
    752 	  <select onchange="goto('/backend/{nr}/up/off', '');">
    753 	    <option value="yes" selected="1">yes</option>
    754 	    <option value="no">no</option>
    755 	  </select>
    756 	</xsl:when>
    757 	<xsl:otherwise>
    758 	  <select onchange="goto('/backend/{nr}/up/on', '');">
    759 	    <option value="yes">yes</option>
    760 	    <option value="no" selected="1">no</option>
    761 	  </select>
    762 	</xsl:otherwise>
    763       </xsl:choose>
    764     </td>    
    765   </tr>
    766   <tr>
    767     <td></td>
    768     <td colspan="2">Stop all connections</td>
    769     <td>
    770       <input type="button" value="Stop now"
    771 	     onclick="goto('/backend/{nr}/stopconnections', '');"/>
    772     </td>
    773   </tr>
    774 </xsl:template>
    775 
    776 <xsl:template match="/status/server/http">
    777   <tr>
    778     <td>HTTP Goodies</td>
    779     <td colspan="2">Add X-Forwarded-For</td>
    780     <td>
    781       <xsl:choose>
    782 	<xsl:when test="addxforwardedfor = 0">
    783 	  <select onchange="goto('/server/addxforwardedfor/on', '');">
    784 	    <option value="yes">yes</option>
    785 	    <option value="no" selected="1">no</option>
    786 	  </select>
    787 	</xsl:when>
    788 	<xsl:otherwise>
    789 	  <select onchange="goto('/server/addxforwardedfor/off', '');">
    790 	    <option value="yes" selected="1">yes</option>
    791 	    <option value="no">no</option>
    792 	  </select>
    793 	</xsl:otherwise>
    794       </xsl:choose>
    795     </td>
    796   </tr>
    797   <tr>
    798     <td></td>
    799     <td colspan="2">Sticky HTTP</td>
    800     <td>
    801       <xsl:choose>
    802 	<xsl:when test="stickyhttp = 0">
    803 	  <select onchange="goto('/server/stickyhttp/on', '');">
    804 	    <option value="yes">yes</option>
    805 	    <option value="no" selected="1">no</option>
    806 	  </select>
    807 	</xsl:when>
    808 	<xsl:otherwise>
    809 	  <select onchange="goto('/server/stickyhttp/off', '');">
    810 	    <option value="yes" selected="1">yes</option>
    811 	    <option value="no">no</option>
    812 	  </select>
    813 	</xsl:otherwise>
    814       </xsl:choose>
    815     </td>
    816   </tr>
    817   <tr>
    818     <td></td>
    819     <td colspan="2">Replace Host: headers</td>
    820     <td>
    821       <xsl:choose>
    822 	<xsl:when test="replacehostheader = 0">
    823 	  <select onchange="goto('/server/replacehostheader/on', '');">
    824 	    <option value="yes">yes</option>
    825 	    <option value="no" selected="1">no</option>
    826 	  </select>
    827 	</xsl:when>
    828 	<xsl:otherwise>
    829 	  <select onchange="goto('/server/replacehostheader/off', '');">
    830 	    <option value="yes" selected="1">yes</option>
    831 	    <option value="no">no</option>
    832 	  </select>
    833 	</xsl:otherwise>
    834       </xsl:choose>
    835     </td>
    836   </tr>
    837   <xsl:apply-templates select="/status/server/http/serverheaders"/>
    838 </xsl:template>
    839 
    840 <xsl:template match="/status/server/acl/allow">
    841   <xsl:for-each select="allowfrom">
    842     <tr>
    843       <td></td>
    844       <td>Allow from</td>
    845       <td colspan="2" align="right">
    846 	<input type="text" size="30" name="allowfrom{nr}"
    847 	       id="allowfrom{nr}" value="{mask}"
    848 	       onchange="goto('/server/allowfrom/{nr}/', 'allowfrom{nr}');"/>
    849       </td>
    850     </tr>
    851   </xsl:for-each>
    852 </xsl:template>
    853 
    854 <xsl:template match="/status/server/acl/deny">
    855   <xsl:for-each select="denyfrom">
    856     <tr>
    857       <td></td>
    858       <td>Deny from</td>
    859       <td colspan="2" align="right">
    860 	<input type="text" size="30" name="denyfrom{nr}"
    861 	       id="denyfrom{nr}" value="{mask}"
    862 	       onchange="goto('/server/denyfrom/{nr}/', 'denyfrom{nr}');"/>
    863       </td>
    864     </tr>
    865   </xsl:for-each>
    866 </xsl:template>
    867 
    868 <xsl:template match="/status/server/http/serverheaders">
    869   <xsl:for-each select="serverheader">
    870     <tr>
    871       <td></td>
    872       <td>Server header</td>
    873       <td colspan="2" align="right">
    874 	<input type="text" size="30" name="serverheader{nr}"
    875 	       id="serverheader{nr}" value="{header}"
    876 	       onchange="goto('/server/changeheader/{nr}/', 'serverheader{nr}');"/>
    877       </td>
    878     </tr>
    879   </xsl:for-each>
    880   <tr>
    881     <td></td>
    882     <td>New server header</td>
    883     <td colspan="2" align="right">
    884       <input type="text" size="30" name="newserverheader"
    885 	     id="newserverheader"
    886 	     onchange="goto('/server/newheader/', 'newserverheader');"/>
    887     </td>
    888   </tr>
    889 </xsl:template>
    890 
    891 <xsl:template match="*"/>
    892 
    893 </xsl:stylesheet>