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 > 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>