[0001]
[0002]
[0003]
[0004]
[0005]
[0006]
[0007]
[0008]
[0009]
[0010]
[0011]
[0012]
[0013]
[0014]
[0015]
[0016]
[0017]
[0018]
[0019]
[0020]
[0021]
[0022]
[0023]
[0024]
[0025]
[0026]
[0027]
[0028]
[0029]
[0030]
[0031]
[0032]
[0033]
[0034]
[0035]
[0036]
[0037]
[0038]
[0039]
[0040]
[0041]
[0042]
[0043]
[0044]
[0045]
[0046]
[0047]
[0048]
[0049]
[0050]
[0051]
[0052]
[0053]
[0054]
[0055]
[0056]
[0057]
[0058]
[0059]
[0060]
[0061]
[0062]
[0063]
[0064]
[0065]
[0066]
[0067]
[0068]
[0069]
[0070]
[0071]
[0072]
[0073]
[0074]
[0075]
[0076]
[0077]
[0078]
[0079]
[0080]
[0081]
[0082]
[0083]
[0084]
[0085]
[0086]
[0087]
[0088]
[0089]
[0090]
[0091]
[0092]
[0093]
[0094]
[0095]
[0096]
[0097]
[0098]
[0099]
[0100]
[0101]
[0102]
[0103]
[0104]
[0105]
[0106]
[0107]
[0108]
[0109]
[0110]
[0111]
[0112]
[0113]
[0114]
[0115]
[0116]
[0117]
[0118]
[0119]
[0120]
[0121]
[0122]
[0123]
[0124]
[0125]
[0126]
[0127]
[0128]
[0129]
[0130]
[0131]
[0132]
[0133]
[0134]
[0135]
[0136]
[0137]
[0138]
[0139]
[0140]
[0141]
[0142]
[0143]
[0144]
[0145]
[0146]
[0147]
[0148]
[0149]
[0150]
[0151]
[0152]
[0153]
[0154]
[0155]
[0156]
[0157]
[0158]
[0159]
[0160]
[0161]
[0162]
[0163]
[0164]
[0165]
[0166]
[0167]
[0168]
[0169]
[0170]
[0171]
[0172]
[0173]
[0174]
[0175]
[0176]
[0177]
[0178]
[0179]
[0180]
[0181]
[0182]
[0183]
[0184]
[0185]
[0186]
[0187]
[0188]
[0189]
[0190]
[0191]
[0192]
[0193]
[0194]
[0195]
[0196]
[0197]
[0198]
[0199]
[0200]
[0201]
[0202]
[0203]
[0204]
[0205]
[0206]
[0207]
[0208]
[0209]
[0210]
[0211]
[0212]
[0213]
[0214]
[0215]
[0216]
[0217]
[0218]
[0219]
[0220]
[0221]
[0222]
[0223]
[0224]
[0225]
[0226]
[0227]
[0228]
[0229]
[0230]
[0231]
[0232]
[0233]
[0234]
[0235]
[0236]
[0237]
[0238]
[0239]
[0240]
[0241]
[0242]
[0243]
[0244]
[0245]
[0246]
[0247]
[0248]
[0249]
[0250]
[0251]
[0252]
[0253]
[0254]
[0255]
[0256]
[0257]
[0258]
[0259]
[0260]
[0261]
[0262]
[0263]
[0264]
[0265]
[0266]
[0267]
[0268]
[0269]
[0270]
[0271]
[0272]
[0273]
[0274]
[0275]
[0276]
[0277]
[0278]
[0279]
[0280]
[0281]
[0282]
[0283]
[0284]
[0285]
[0286]
[0287]
[0288]
[0289]
[0290]
[0291]
[0292]
[0293]
[0294]
[0295]
[0296]
[0297]
[0298]
[0299]
[0300]
[0301]
[0302]
[0303]
[0304]
[0305]
[0306]
[0307]
[0308]
[0309]
[0310]
[0311]
[0312]
[0313]
[0314]
[0315]
[0316]
[0317]
[0318]
[0319]
[0320]
[0321]
[0322]
[0323]
[0324]
[0325]
[0326]
[0327]
[0328]
[0329]
[0330]
[0331]
[0332]
[0333]
[0334]
[0335]
[0336]
[0337]
[0338]
[0339]
[0340]
[0341]
[0342]
[0343]
[0344]
[0345]
[0346]
[0347]
[0348]
[0349]
[0350]
[0351]
[0352]
[0353]
[0354]
[0355]
[0356]
[0357]
[0358]
[0359]
[0360]
[0361]
[0362]
[0363]
[0364]
[0365]
[0366]
[0367]
[0368]
[0369]
[0370]
[0371]
[0372]
[0373]
[0374]
[0375]
[0376]
[0377]
[0378]
[0379]
[0380]
[0381]
[0382]
[0383]
[0384]
[0385]
[0386]
[0387]
[0388]
[0389]
[0390]
[0391]
[0392]
[0393]
[0394]
[0395]
[0396]
[0397]
[0398]
[0399]
[0400]
[0401]
[0402]
[0403]
[0404]
[0405]
[0406]
[0407]
[0408]
[0409]
[0410]
[0411]
[0412]
[0413]
[0414]
[0415]
[0416]
[0417]
[0418]
[0419]
[0420]
[0421]
[0422]
[0423]
[0424]
[0425]
[0426]
[0427]
[0428]
[0429]
[0430]
[0431]
[0432]
[0433]
[0434]
[0435]
[0436]
[0437]
[0438]
[0439]
[0440]
[0441]
[0442]
[0443]
[0444]
[0445]
[0446]
[0447]
[0448]
[0449]
[0450]
[0451]
[0452]
[0453]
[0454]
[0455]
[0456]
[0457]
[0458]
[0459]
[0460]
[0461]
[0462]
[0463]
[0464]
[0465]
[0466]
[0467]
[0468]
[0469]
[0470]
[0471]
[0472]
[0473]
[0474]
[0475]
[0476]
[0477]
[0478]
[0479]
[0480]
[0481]
[0482]
[0483]
[0484]
[0485]
[0486]
[0487]
[0488]
[0489]
[0490]
[0491]
[0492]
[0493]
[0494]
[0495]
[0496]
[0497]
[0498]
[0499]
[0500]
[0501]
[0502]
[0503]
[0504]
[0505]
[0506]
[0507]
[0508]
[0509]
[0510]
[0511]
[0512]
[0513]
[0514]
[0515]
[0516]
[0517]
[0518]
[0519]
[0520]
[0521]
<!DOCTYPE html>
<!-- WASDOC AXP-2.0.0 (CGILIB AXP-1.9.9) -->
<!-- wasDOC Copyright (C) 2019,2020 Mark G.Daniel - Apache-2.0 licenced -->
<!--  3-NOV-2021 02:50 -->
<noscript>NOTE: SOME FUNCTIONALITY EMPLOYS JAVASCRIPT</noscript>
<div id="erreport1" style="display:none;"></div>
<script>
function errorReport(string) {
   for (var cnt = 1; cnt <= 2; cnt++) {
      var err = document.getElementById('erreport'+cnt);
      err.style.display = 'block';
      err.innerHTML += string;
   }
}
</script>
<style type="text/css">
html { font-family: arial, verdana, sans-serif; font-size:12pt; margin:1em; }
h1 { font-size:124%; font-style:bold;
     margin-top:1em; margin-bottom:0.5em; }
h2 { font-size:120%; font-style:bold;
     margin-top:1.1em; margin-bottom:0.4em; }
h3 { font-size:116%; font-style:bold;
     margin-top:1.0em; margin-bottom:0.3em; }
h4 { font-size:112%; font-style:bold;
     margin-top:1.1em; margin-bottom:0.3em; }
h5 { font-size:112%; font-style:bold; 
     margin-top:1.1em; margin-bottom:0.3em; }
h6 { font-size:112%; font-style:bold; padding:0; margin:0; }

h1 .text { text-decoration:underline; }
h1 .numb { padding-right:0.8em; }
h1 .numb:empty { display:none; padding-right:0; }
h2 .numb { padding-right:0.8em; }
h2 .numb:empty { display:none; padding-right:0; }
h3 .numb { padding-right:0.8em; }
h3 .numb:empty { display:none; padding-right:0; }
h4 .numb { padding-right:0.8em; }
h4 .numb:empty { display:none; padding-right:0; }
h5 .numb { display:none; padding-right:0; }
h6 .numb { display:none; padding-right:0; }

kbd { font-family:monospace; }

noscript { font-size:1.2em; }

p { line-height:1.1em; margin-top:1em; margin-bottom:1em; }

.chunk { font-size:130%; text-decoration:underline; }
.head {}
.high {}
.bold { font-weight:bold; }
.center { text-align:center; }
.italic { font-style:italic; }
.left { text-align:left; }
.nowrap { white-space:nowrap; }
.prewrap { white-space:pre; }
.right { text-align:right; }
.strike { text-decoration:line-through; }
.under { text-decoration:underline; }

.backlight { background-color:#f2f2f2; }
.display0 { display:none; }

img { max-width:100%; }
.imglink { }

.link { }
.blank { }

.list { margin-bottom:1em; }
.list li { margin-top:0.5em; }
.list0 li { margin-top:0; }
.item {}

.tabl { border-collapse:collapse; text-align:left; margin:0.4em 2em 0.5em 2em; }
.tabu { border-collapse:collapse; text-align:right; margin:0.4em 2em 0.5em 2em; }

.tabr { vertical-align:top; }
.tabh { padding:0.2em 0 0 2em; margin:0; }
.tabd { padding:0.1em 0 0 2em; margin:0; }
.tabh:first-of-type, td:first-of-type { padding-left:0; }

.tabu .tabh,
.tabu .tabd { border:1px solid gray; padding:0.2em 0.3em 0.2em 0.3em; }
.tab0 { border:none; visibility:hidden; max-width:1em; 
        white-space:nowrap; overflow:hidden; }

.tabauto { margin-left:auto; margin-right:auto; }

.tabr:empty { height:0.2em; }
.tabu .tabh:empty, .tabu .tabd:empty { border:none; visibility:hidden; }

.error { font-size:110%; color:black; background-color:yellow;
         font-family:sans-serif; font-weight:bold; font-style:normal;
         width:95%; border:solid 1px gray; padding:0.5em 1em 0.5em 1em; }
.error::before { content:'\026a0\00a0'; }
.image { }
.page { width:98%; border:1px dashed gray; margin:1.5em 0 1.8em 0; }
.epage { width:98%; border:1px dashed black; margin:1.5em 0 1.8em 0; }
.monosp { font-family:monospace; }
.ppage { display:none; }
.simple { list-style-type:none; }
.valtop { vertical-align:top; }
.valmid { vertical-align:middle; }
.valbot { vertical-align:bottom; }

.code { border-style:solid; border-width:0 0 0 1px; padding-left:1em;
        font-family:monospace; white-space:pre; }
.block { }
.blockof { margin:0.4em 2em 0.5em 2em; }
.example { border-style:dashed; border-width:0 0 0 1px; padding-left:1em;
           margin-top:0.5em; margin-bottom:0.5em; white-space:pre; }
.indent { margin-left:2em; margin-right:2em; }
.noindent { margin-left:0; margin-right:0; }
.inblock { display:inline-block; }
.mono { white-space:pre; font-family:monospace; }
.note { margin:0.4em 2em 0.5em 2em; page-break-inside:avoid; }
.note h5 { margin-top:0 }
.note_hr { width:80%; border:1px solid gray; }
.prop { padding-left:1em; margin-top:0.5em; margin-bottom:0.5em; }
.quote { border-style:dashed; border-width:0 0 0 1px; padding-left:1em;
         margin-top:0.5em; margin-bottom:0.5em; }
.this { display:none; }

a:link,a:visited { color:black; text-decoration:none; }
a:hover,a:active { text-decoration:underline; }
a:focus { outline:0; } 

:target:before { content:''; display:block; height:0.1em; margin:-0.1em; }
a.link:link, a.link:visited,a.link:active 
{ color:midnightBlue; text-decoration:underline; text-decoration-style:solid; }

.TOC1cols1 { width:80%; max-width:80%; }
.TOC1cols2 { column-count:2; width:80%; max-width:80%; }
.TOC1cols3 { column-count:3; max-width:90%; max-width:90%; }
.TOC1cols4 { column-count:4; max-width:100%; max-width:100%; }
.TOC1table { margin-left:2em; white-space:nowrap; break-inside:auto; }
.TOC1table tr { vertical-align:top; text-align:left; break-inside:avoid; break-after:auto; }
.TOC1table td+td { padding:0 0 0 0.5em; }
.TOC1table .numb { width:3em; max-width:3em; }
.TOC1table .sepr { width:5em; max-width:6em; overflow:hidden; }
.TOC1table .majr { font-weight:bold; }
.TOC1table .text { white-space:normal; }

/* These are due to Firefox (at least <= 76) recalcitrant multi-column handling.
   Web search "Split table into css columns, issue in Firefox" (stackoverflow).
   "Good grief, Charlie Brown!" */
 
.TOC1cols2 table,
.TOC1cols2 tbody,
.TOC1cols2 tr,
.TOC1cols3 table,
.TOC1cols3 tbody,
.TOC1cols3 tr,
.TOC1cols4 table,
.TOC1cols4 tbody,
.TOC1cols4 tr { display:block; padding:0; }

.TOC2cols1 { width:60%; max-width:60%; }
.TOC2cols2 { column-count:2; width:70%; max-width:70%; }
.TOC2cols3 { column-count:3; width:80%; max-width:80%; }
.TOC2cols4 { column-count:4; width:90%; max-width:90%; }
.TOC2table { margin-left:2em; white-space:nowrap; break-inside:auto; }
.TOC2table tr { vertical-align:top; text-align:left; break-inside:avoid; break-after:auto; }
.TOC2table .numb { font-weight:bold; padding-right:0.5em; }
.TOC2table .text { width:100%; white-space:normal; }

/* see "recalcitrant" above */
.TOC2cols2 table,
.TOC2cols2 tbody,
.TOC2cols2 tr,
.TOC2cols3 table,
.TOC2cols3 tbody,
.TOC2cols3 tr,
.TOC2cols4 table,
.TOC2cols4 tbody,
.TOC2cols4 tr { display:block; padding:0; }

.NAVtable { margin:0.1em 0 0 2em; }
.NAVtable td { font-size:110%; font-weight:bold; padding:0; margin:0; }
.NAVtable a { padding:0 0.5em 0 0.5em; text-decoration:none; }

.IDXcols1 { width:80%; max-width:80%; }
.IDXcols2 { column-count:2; width:90%; max-width:90%; }
.IDXcols3 { column-count:3; width:95%; max-width:95%;  }
.IDXcols4 { column-count:4; width:100%; max-width:100%;  }
.IDXtable { margin:1em 0 1em 2em; white-space:nowrap; break-inside:auto; }
.IDXtable tr { vertical-align:top; text-align:left; break-inside:avoid; break-after:auto; }
.IDXtable .alpha { font-weight:bold; min-width:2em; }
.IDXtable .text  { width:100%; white-space:normal; }
.IDXtable .para:before { content:'\00b6\00a0'; }

/* see "recalcitrant" above */
.IDXcols2 table,
.IDXcols2 tbody,
.IDXcols2 tr,
.IDXcols3 table,
.IDXcols3 tbody,
.IDXcols3 tr,
.IDXcols4 table,
.IDXcols4 tbody,
.IDXcols4 tr { display:block; padding:0; }

.insight { background-color:cyan; font-family:monospace;
           padding:0 0.2em 0 0.2em; margin:0 0.2em 0 0.2em;
           font-size:100%; font-style:normal; font-weight:normal;
           text-decoration:none; }

.wasdoc { font-family: "Lucida Console", Monaco, monospace; 
          letter-spacing:-0.07em; }

@media screen { .blank::after { content:"\2924"; } 
                .print { display:none; }
}

@media print {
   table { page-break-inside:avoid; }
   .noprint { display:none; }
   .page { border:none; page-break-after: always; }
   .epage { display:none; }
   .ppage { page-break-after:always; }
   .NAVtable { display:none; }
   .NAVprint { display:block!important; }
}

@page { margin:2cm 1cm 2cm 1cm;  }
</style>
<!-- source:0000_features.WASDOC -->

<style type="text/css">._smiley::after { font-size:150%; vertical-align:middle; content:'\263a' }</style>
<style type="text/css">._frowny::after { font-size:150%; vertical-align:middle; content:'\2639' }</style>
<style type="text/css">._button { border: 1px gray solid; border-radius:3px; padding:0.1em; margin:0.1em; font-size:90%; }</style>

<a id="0." href="#"></a>
<title>WASD Features and Facilities &ndash; Package Overview</title>
<a id="2." href="#"></a>
<a id="2.packageoverview" href="#"></a>
<a id="packageoverview" href="#"></a>
<h1 class="head chunk">WASD Features and Facilities</h1>
<h1 class="head"><span class="numb">2.</span><span class="text">Package Overview</span></h1>

<table class="TOC2table">
<tr><td><a href="features002.html#2.1.serverbehaviour"><span class="numb">2.1</span><span class="text">Server Behaviour</span></a>
<tr><td><a href="features002.html#2.2.vmsversions"><span class="numb">2.2</span><span class="text">VMS Versions</span></a>
<tr><td><a href="features002.html#2.3.tcpippackages"><span class="numb">2.3</span><span class="text">TCP/IP Packages</span></a>
<tr><td><a href="features002.html#2.4.internationalfeatures"><span class="numb">2.4</span><span class="text">International Features</span></a>
</table>
</div>

<table class="NAVtable NAVprint"><tr>
<td><a href="javascript:window.history.back();">&#8617;&#xFE0E;</a>
<td><a href="features001.html#1.">&#8598;&#xFE0E;</a>
<td><a href="features000.html#0.">&#8593;&#xFE0E;</a>
<td><a href="features003.html#3.">&#8600;&#xFE0E;</a>
<td><a href="javascript:window.history.forward();">&#8618;&#xFE0E;</a>
</table>

<p> The most fundamental component of the WASD VMS Web Services  environment is
the HTTP server (HyperText Transport Protocol Daemon, or HTTPd).  WASD has a
single-process, multi-threaded, asynchronous I/O design.

<p> The following bullet-points summarise the features and facilities, many of
which are described in significant detail in following chapters.

<a id="2.0.0.0.1" href="#"></a>
<a id="2.general" href="#"></a>
<a id="general" href="#"></a>
<h5 class="head"><span class="text">General</span></h5>

<ul class="list list0">
<li class="item"> concurrent, multi-threaded client support 
<li class="item"> HTTP/2 compliant (RFC 7540, RFC 7541) 
<li class="item"> HTTP/1.1 compliant (RFC 2616, RFC 7230 and family) 
<li class="item"> HTTP/1.0 compliant (RFC 1954) 
<li class="item"> WebDAV 1,2 support (RFC 4918) 
<li class="item"> Cross-Origin Resource Sharing (CORS) 
<li class="item"> virtual services (servers) 
<li class="item"> IPv4 and IPv6 support (requires underlying TCP/IP support) 
<li class="item"> requests above a configurable limit can be queued (&quot;throttling&quot;) 
<li class="item"> enhanced privacy using Transport Layer Security technology (TLS), aka. Secure
Sockets Layer (SSL) including
<p> <ul class="list list0">
<li class="item"> OpenSSL Toolkit
<li class="item"> WASD OpenSSL
<li class="item"> VSI SSL product
</ul>
<li class="item"> serves ODS-2 and ODS-5 (EFS) volumes, as well as file names encoded
using schemas
<p> <ul class="list list0">
<li class="item"> PATHWORKS 4/5
<li class="item"> Advanced Server (PATHWORKS 6) and
<li class="item"> SRI (MultiNet NFS, etc.)
</ul>
<li class="item"> versatile directory listing (generic and VMS-style) 
<li class="item"> Server-Side Includes (SSI HTML pre-processing) 
<li class="item"> configurable cache, with time-based and forced revalidation (reload) 
<li class="item"> byte-range support with 206 partial responses (useful for PDF and 
restarting file download by modern browsers)
<li class="item"> proxy serving, with local file-system caching, plus the CONNECT method
(also allowing a number of esoteric SSL tunnelling configurations), along with
FTP proxy 
<li class="item"> gatewaying between Web protocols (HTTP-to-SSL, SSL-to-HTTP, HTTP-to-FTP) 
<li class="item"> gatewaying between IP protocols (IPv4-to-IPv6, IPv6-to-IPv4) 
</ul>
 
<a id="2.0.0.0.2" href="#"></a>
<a id="2.scripting" href="#"></a>
<a id="scripting" href="#"></a>
<h5 class="head"><span class="text">Scripting</span></h5>

<ul class="list list0">

<li class="item"> CGI 1.1 compliant scripting (RFC 3875) 
<li class="item"> non-server and user account scripting 
<li class="item"> &quot;CGIplus&quot; scripting
(offering reduced latency, increased throughput and reduced system impact) 
<li class="item"> &quot;Persistent&quot; scripting,
Run-Time Environments (RTEs) that provide for simple persistent scripting 
<li class="item"> WebSocket scripting environment; a capability introduced with HTML5,
providing an asynchronous, bidirectional, full-duplex connection. 
<li class="item"> &quot;RawSocket&quot; scripting environment; providing an protocol-agnostic
asynchronous, bidirectional, full-duplex connection. 
<li class="item"> &quot;ISAPI&quot; extensions/scripting
(also offering reduced latency, increased throughput and reduced system impact) 
<li class="item"> DECnet-based CGI scripting (with connection reuse) 
<li class="item"> OSU (DECthreads server) scripting emulation, with connection reuse
(as per OSU 3.3a), allowing many OSU scripts to be employed unmodified 
<li class="item"> script processor (e.g. PERL, PHP, Python) configurable on file type (suffix) 
<li class="item"> configurable, automatic, MIME content-type initiated scripting
(&quot;presentation&quot; scripting)

</ul>

<a id="2.0.0.0.3" href="#"></a>
<a id="2.accesscontrol" href="#"></a>
<a id="accesscontrol" href="#"></a>
<h5 class="head"><span class="text">Access Control</span></h5>

<ul class="list list0">
<li class="item"> host-level, on per-host or per-domain 
<li class="item"> &quot;Basic&quot; and &quot;Digest&quot; user authentication and path/group-based authorization  
<li class="item"> WASD-specific user databases 
<li class="item"> SYSUAF-authentication and VMS user security profile based file access control 
<li class="item"> ACME service authentication (on applicable platforms) 
<li class="item"> X.509 client certificate authentication (for SSL transactions) 
<li class="item"> RFC 1413 (<span class="high italic">ident</span> daemon) &quot;authentication&quot; 
<li class="item"> Example LDAP authenticators 
</ul>

<a id="2.0.0.0.4" href="#"></a>
<a id="2.administration" href="#"></a>
<a id="administration" href="#"></a>
<h5 class="head"><span class="text">Administration</span></h5>

<ul class="list list0">

<li class="item"> multiple <span class="high italic">instances</span> (server processes) executing on the one system allow
continuous availability via rolling restarts and &quot;fail-through&quot; processing 
<li class="item"> &quot;one-button&quot; control of multiple <span class="high italic">instances</span> on both single systems and
across clusters 
<li class="item"> online server configuration, including reports on requests, loaded
configuration, mapping rules, authorization information and graphical activity
displays 
<li class="item"> online, live server processing event report (WATCH) 
<li class="item"> Web-standard, &quot;common&quot; and &quot;combined&quot; access log formats (allowing
processing by most log-analysis tools), along with a user-definition capability
allowing custom log formats 
<li class="item"> logging periods, where log files automatically change on a daily,
weekly or monthly basis (keeps log files ordered and at a managable size) 
<li class="item"> customizable message database (capable of supporting non-English and
concurrent, multiple languages)
</ul>
 
<a id="2.1" href="#"></a>
<a id="2.1.serverbehaviour" href="#"></a>
<a id="serverbehaviour" href="#"></a>
<h2 class="head"><span class="numb">2.1</span><span class="text">Server Behaviour</span></h2>

<p> The technical aspects of server design and behaviour are described in
<a class="link blank" target="_blank" href="/wasd_root/src/httpd/readmore.txt">WASD_ROOT:[SRC.HTTPD]READMORE.TXT</a>

<a id="2.2" href="#"></a>
<a id="2.2.vmsversions" href="#"></a>
<a id="vmsversions" href="#"></a>
<h2 class="head"><span class="numb">2.2</span><span class="text">VMS Versions</span></h2>

<p> The WASD server is supported on any VMS version from V7.0 upwards, on Alpha,
Itanium and x86-64 architectures.  The current version (as of 2021), V8.4
Alpha and Itanium, as is commonly the case on VMS platforms, required nothing
more than relinking.  Obviously no guarantees can be made for yet-to-be-released
versions but at a worst-case these should only require the same.

<p> The WASD distribution and package organisation fully supports
mixed-architecture clusters (Alpha, Itanium and/or x86-64 in the one cluster)
as one integrated installation.

<a id="2.3" href="#"></a>
<a id="2.3.tcpippackages" href="#"></a>
<a id="tcpippackages" href="#"></a>
<h2 class="head"><span class="numb">2.3</span><span class="text">TCP/IP Packages</span></h2>

<p> The WASD server uses the TCP/IP Services (UCX) BG &dollar;QIO interface. 
The following packages support this interface and may be used.

<ul class="list list0">
<li class="item"> VSI TCP/IP Services for OpenVMS (VMS Software Inc.) 
<li class="item"> TCP/IP Services for OpenVMS (Hewlett Packard <span class="high italic">whatever</span>) &ast;&ast; 
<li class="item"> Digital TCP/IP Services for OpenVMS (aka UCX) &ast;&ast;&ast; 
<li class="item"> MultiNet for OpenVMS (Process Software Corporation) &ast;&ast;
<p> &ast;&ast; any <span class="high bold">not unreasonably ancient</span> version 
<br>&ast;&ast;&ast; <span class="high italic">this might be becoming a bit of a stretch</span> 
</ul>

<p> To deploy IPv6 services this package must support IPv6.

<a id="2.4" href="#"></a>
<a id="2.4.internationalfeatures" href="#"></a>
<a id="internationalfeatures" href="#"></a>
<h2 class="head"><span class="numb">2.4</span><span class="text">International Features</span></h2>

<p> WASD provides a number of features that assist in the support of non-English
and multi-language sites.  These &quot;international&quot; features only apply to the
server, not necessarily to any scripts!

<ul class="list">

<li class="item"> <span class="high bold">Language Variants</span>

<p> A directory may contain language-specific variants of a basic document. 
When requesting the basic document name these variants are automatically and
transparently provided as the response if one matches preferences expresses in
the request's &quot;Accept-Language:&quot; request header field.  Both text and non-text
documents (e.g. images) may be provided using this mechanism.

<p> Configuration information is provided in section
<a class="link blank" target="_blank" href="../config/#languagevariants">Language Variants</a> of <a class="link blank" target="_blank" href="../config/#0.">WASD Configuration</a>.

<li class="item"> <span class="high bold">Character Sets</span>

<p> Generally the default character set for documents on the Web is ISO-8859-1
(Latin-1). The server allows the specification of any character set as a
default for text document responses (plain and HTML).  In addition, text
document file types may be modified or additional ones specified that have a
different character set associated with that type. Furthermore, specific
character sets may be associated with mapping paths.  A site can therefore
relatively easily support multiple character set document resources.

<p> In addition the server may be configured to dynamically convert one
character set to another during request processing.  This is supported using
the VMS standard NCS character set conversion library.

<p> For further information see [CharsetDefault], [CharsetConvert] and
[AddType] in <a class="link blank" target="_blank" href="../config/#alphabeticlisting">Alphabetic Listing</a> of <a class="link blank" target="_blank" href="../config/#0.">WASD Configuration</a>.

<li class="item"> <span class="high bold">Server Messages</span>

<p> The server uses an administrator-customizable database of messages that
can contain multiple language instances of some or all messages, using the
Latin-1 character set (ISO8859-1). Although the base English messages can be
completely changed and/or translated to provide any message text required or
desired, a more convenient approach is to supplement this base set with a
language-specific one.

<p> One language is designated the prefered language. This would most commonly
be the language appropriate to the geographical location and/or clientele of
the server. Another language is designated the base language. This must have a
complete set of messages and is a fall-back for any messages not configured
for the additional language. Of course this base language would most commonly
be the original English version.

<p> More than just two languages can be supported. If the browser has
<span class="high italic">prefered languages</span> set the server will attempt to match a message
with a language in this preference list. If not, then the server-prefered and
then the base language message would be issued, in that order. In this way it
would be possible to simultaneously provide for English, French, German and
Swedish audiences, just for example.

<p> For message configuration information see
<a class="link blank" target="_blank" href="../config/#messageconfiguration">Message Configuration</a> of <a class="link blank" target="_blank" href="../config/#0.">WASD Configuration</a>.

<li class="item"> <span class="high bold">Server Dates</span>

<p> Dates appearing in server-generated, non-administrative content (e.g.
directory listings, not META-tags, which use Web-standard time formats) will
use the natural language specified by any SYS&dollar;LANGUAGE environment in use on
the system or specifically created for the server.

<li class="item"> <span class="high bold">Virtual Services</span>

<p> Virtual-server-associated mapping, authorization and character-sets allow
for easy multiple language and environment sites.  Further per-request
tailoring may be deployed using conditional rule mapping described below.
Single server can support multi-homed (host name) and multiple port services.

<p> For virtual services information see
<a class="link blank" target="_blank" href="../config/#configurationconsiderations">Configuration Considerations</a> of <a class="link blank" target="_blank" href="../config/#0.">WASD Configuration</a>.

<li class="item"> <span class="high bold">Conditional Rule Mapping</span>

<p> Mapping rules map requested URL paths to physical or other paths (see
<a class="link blank" target="_blank" href="../config/#requestprocessingconfiguration">Request Processing Configuration</a> of <a class="link blank" target="_blank" href="../config/#0.">WASD Configuration</a>).

Conditional rules are only applied if the  request matches criteria such as
prefered language, host address (hence geographical location to a certain
extent), etc.  This allows requests for generic documents (e.g. home pages) to
be mapped to language versions appropriate to the above criteria.

<p> For conditional mapping information see
<a class="link blank" target="_blank" href="../config/#conditionalconfiguration">Conditional Configuration</a> of <a class="link blank" target="_blank" href="../config/#0.">WASD Configuration</a>.

</ul>

<!-- source:0300_AUTHORIZATION.WASDOC -->

<table class="NAVtable NAVprint"><tr>
<td><a href="javascript:window.history.back();">&#8617;&#xFE0E;</a>
<td><a href="features001.html#1.">&#8598;&#xFE0E;</a>
<td><a href="features000.html#0.">&#8593;&#xFE0E;</a>
<td><a href="features003.html#3.">&#8600;&#xFE0E;</a>
<td><a href="javascript:window.history.forward();">&#8618;&#xFE0E;</a>
</table>