source: trunk/config/proxy-reference.html@ 28

Last change on this file since 28 was 28, checked in by bowman, 13 years ago

0.9.0 release revision

File size: 108.8 KB
Line 
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head>
4<title>Cardservproxy 0.9.0 Proxy.xml</title>
5<style type="text/css">
6 /* <![CDATA[ */
7body {
8 font: 12px verdana, tahoma, arial, helvetica, sans-serif;
9}
10.indent {
11 padding: 8px;
12 margin-top: 30px;
13 font: 12px verdana, tahoma, arial, sans-serif;
14 color: #cccccc;
15 background-color: #57626D;
16 border: 1px solid #2D343E;
17}
18 /* ]]> */
19</style>
20<body>
21<p>
22Here's a run through of all the settings for <strong class='bold'>cardservproxy 0.9.0</strong>, roughly in the order that they appear in the example proxy-full.xml.<br />
23<br />
24An element path such as "connection-manager/service-map/mapper/reset-services" means the following element in proxy.xml: <br />
25<br />
26<em class='italic'>&lt;cardserv-proxy>&lt;connection-manager>&lt;service-map>&lt;mapper><br />
27&lt;reset-services/><br />&lt;/mapper>&lt;/service-map>&lt;/connection-manager>&lt;/cardserv-proxy></em><br />
28<br />Attributes marked with * are mandatory.<br />
29<br />
30Glossary:<br />
31- <strong class='bold'>DVB</strong>: Digital video broadcasting, <a href="http://en.wikipedia.org/wiki/DVB">http://en.wikipedia.org/wiki/DVB</a><br />
32- <strong class='bold'>CA (DVB-CA, EMM, ECM) </strong>: Conditional Access, <a href="http://en.wikipedia.org/wiki/Conditional_access">http://en.wikipedia.org/wiki/Conditional_access</a><br />
33- <strong class="bold">TS</strong>: Transport stream, <a href="http://en.wikipedia.org/wiki/Transport_stream">http://en.wikipedia.org/wiki/Transport_stream</a><br />
34- <strong class='bold'>CWS</strong>: Codeword server, aka cardserver. The server application (e.g newcs) that accept client connections and manages card communication.<br />
35- <strong class='bold'>Service</strong>: DVB-service, typically tv or radio channel (but can also be data containing software or just about anything). Identified by a numerical id refered to as the <strong>sid</strong>.<br />
36- <strong class='bold'>newcamd/radegast</strong>: Communication protocols (tcp) encapsulating the DVB-CA traffic for use over ip networks. Named after the applications that introduced them.<br />
37- <strong class='bold'>Profile</strong>: A proxy concept for keeping multiple card and client types separate without understanding the contents of the CA traffic. Typically corresponding to one provider/vendor (or one package in satellite terms). Within a profile there can only be one CA system, and all incoming messages to the profile listen port are assumed to belong to this system. A profile is essentially a virtual cardserver with a potentially infinite capacity card. <br />
38 <br /><strong class='bold'>NOTE: </strong> as of 0.8.13 profiles use the original network-id (ONID) combined with ca-id as globally unique identifiers, meaning one profile now corresponds exactly to those pids from the transport stream that share the same ONID and caid.<br />
39<br />
40
41Contents:<br />
42<ul>
43<li><a href="#cardserv-proxy">/cardserv-proxy (attributes: *ver)</a></li>
44<li><a href="#ca-profiles">ca-profiles</a></li>
45<ul>
46<li><a href="#ca-profiles/default-des-key">ca-profiles/default-des-key</a></li>
47<li><a href="#ca-profiles/default-deny-list">ca-profiles/default-deny-list</a></li>
48<li><a href="#ca-profiles/max-threads">ca-profiles/max-threads</a></li>
49<li><a href="#ca-profiles/session-timeout">ca-profiles/session-timeout</a></li>
50<li><a href="#ca-profiles/session-keepalive">ca-profiles/session-keepalive (attributes: exclude-clients)</a></li>
51<li><a href="#ca-profiles/newcamd-maxmsgsize">ca-profiles/newcamd-maxmsgsize</a></li>
52<li><a href="#ca-profiles/block-caid-mismatch">ca-profiles/block-caid-mismatch</a></li>
53<br />
54<li><a href="#ca-profiles/extended-newcamd">ca-profiles/extended-newcamd (attributes: *listen-port, bind-ip, enabled)</a></li>
55<ul>
56 <li><a href="#ca-profiles/extended-newcamd/des-key">extended-newcamd/des-key</a></li>
57 <li><a href="#ca-profiles/extended-newcamd/exclude-profiles">extended-newcamd/exclude-profiles</a></li>
58 <li><a href="#ca-profiles/extended-newcamd/main-ca-id">extended-newcamd/main-ca-id</a></li>
59 <li><a href="#ca-profiles/profile/[newcamd|radegast]/allow-list">extended-newcamd/allow-list</a></li>
60 <li><a href="#ca-profiles/profile/[newcamd|radegast]/deny-list">extended-newcamd/deny-list</a></li>
61</ul>
62<br />
63<li><a href="#ca-profiles/profile">ca-profiles/profile (attributes: *name, ca-id, network-id, enabled, debug, cache-only, provider-idents, require-provider-match)</a></li>
64<ul>
65 <li><a href="#ca-profiles/profile/newcamd">profile/newcamd (attributes: *listen-port, bind-ip)</a></li>
66 <ul>
67 <li><a href="#ca-profiles/profile/newcamd/des-key">newcamd/des-key</a></li>
68 <li><a href="#ca-profiles/profile/newcamd/card-data">newcamd/card-data (attributes: *type, name, ca-id, override-au)</a></li>
69 <ul>
70 <li><a href="#ca-profiles/profile/newcamd/card-data/provider-idents">card-data/provider-idents</a></li>
71 </ul>
72 <li><a href="#ca-profiles/profile/newcamd/no-encryption">newcamd/no-encryption</a></li>
73 <li><a href="#ca-profiles/profile/newcamd/no-validation">newcamd/no-validation</a></li>
74 <li><a href="#ca-profiles/profile/[newcamd|radegast]/allow-list">newcamd/allow-list</a></li>
75 <li><a href="#ca-profiles/profile/[newcamd|radegast]/deny-list">newcamd/deny-list</a></li>
76 </ul>
77 <li><a href="#ca-profiles/profile/radegast">profile/radegast (attributes: *listen-port, bind-ip, sid-in-0x21)</a></li>
78 <ul>
79 <li><a href="#ca-profiles/profile/[newcamd|radegast]/allow-list">radegast/allow-list</a></li>
80 <li><a href="#ca-profiles/profile/[newcamd|radegast]/deny-list">radegast/deny-list</a></li>
81 </ul>
82 <li><a href="#ca-profiles/profile/services-file">profile/services-file (attributes: format, filter)</a></li>
83 <li><a href="#ca-profiles/profile/max-cw-wait">profile/max-cw-wait</a></li>
84 <li><a href="#ca-profiles/profile/congestion-limit">profile/congestion-limit</a></li>
85</ul>
86</ul>
87<br />
88<li><a href="#logging">logging (attributes: log-ecm, log-emm, log-zapping, hide-ip-addresses)</a></li>
89<ul>
90 <li><a href="#logging/log-file">logging/log-file (attributes: rotate-count, rotate-max-size)</a></li>
91 <li><a href="#logging/log-level">logging/log-level</a></li>
92 <li><a href="#logging/silent">logging/silent</a></li>
93 <li><a href="#logging/debug">logging/debug</a></li>
94 <li><a href="#logging/warning-threshold">logging/warning-threshold (attributes: *bad-flags, *max-delay, include-file-events)</a></li>
95 <li><a href="#logging/event-threshold">logging/event-threshold (attributes: *min-count)</a></li>
96</ul>
97<br />
98<li><a href="#rmi">rmi (attributes: enabled)</a></li>
99<ul>
100 <li><a href="#rmi/allowed-ip-masks">rmi/allowed-ip-masks</a></li>
101 <li><a href="#rmi/registry-port">rmi/registry-port</a></li>
102 <li><a href="#rmi/local-port">rmi/local-port</a></li>
103 <li><a href="#rmi/local-name">rmi/local-name</a></li>
104 <li><a href="#rmi/display-name">rmi/display-name</a></li>
105 <li><a href="#rmi/status-web">rmi/status-web (attributes: enabled)</a></li>
106 <ul>
107 <li><a href="#rmi/status-web/listen-port">status-web/listen-port</a></li>
108 <li><a href="#rmi/status-web/bind-ip">status-web/bind-ip</a></li>
109 <li><a href="#rmi/status-web/ssl">status-web/ssl (attributes: enabled)</a></li>
110 <ul>
111 <li><a href="#rmi/status-web/ssl/keystore">ssl/keystore (attributes: *password)</a></li>
112 </ul>
113 <li><a href="#rmi/status-web/csp-connect">status-web/csp-connect (attributes: enabled, debug)</a></li>
114 <li><a href="#rmi/status-web/war-file">status-web/war-file</a></li>
115 <li><a href="#rmi/status-web/welcome-file">status-web/welcome-file</a></li>
116 <li><a href="#rmi/status-web/log-file">status-web/log-file (attributes: rotate-count, rotate-max-size)</a></li>
117 <li><a href="#rmi/status-web/super-users">status-web/super-users</a></li>
118 </ul>
119</ul>
120<br />
121<li><a href="#user-manager">user-manager (attributes: *class, allow-on-failure, log-failures)</a></li>
122 <ul>
123 <li><a href="#user-manager/auth-config">user-manager/auth-config</a></li>
124 <ul>
125 <li><a href="#user-manager/auth-config/open-access">auth-config/open-access (attributes: enabled)</a></li>
126 <ul>
127 <li><a href="#user-manager/auth-config/open-access/open-username-prefix">open-access/open-username-prefix</a></li>
128 <li><a href="#user-manager/auth-config/open-access/open-password">open-access/open-password</a></li>
129 <li><a href="#user-manager/auth-config/open-access/open-profiles">open-access/open-profiles</a></li>
130 </ul>
131 <li><a href="#user-manager/auth-config/user">auth-config/user (attributes: *name, *password, display-name, ip-mask, profiles, max-connections, admin, enabled)</a></li>
132 </ul>
133 </ul>
134<br />
135<li><a href="#connection-manager">connection-manager</a></li>
136 <ul>
137 <li><a href="#connection-manager/reconnect-interval">connection-manager/reconnect-interval</a></li>
138 <li><a href="#connection-manager/max-cw-wait">connection-manager/max-cw-wait</a></li>
139 <li><a href="#connection-manager/default-des-key">connection-manager/default-des-key</a></li>
140 <li><a href="#connection-manager/default-keepalive-interval">connection-manager/default-keepalive-interval</a></li>
141 <li><a href="#connection-manager/default-max-queue">connection-manager/default-max-queue</a></li>
142 <li><a href="#connection-manager/default-min-delay">connection-manager/default-min-delay</a></li>
143 <li><a href="#connection-manager/timeout-disconnect-threshold">connection-manager/timeout-disconnect-threshold</a></li>
144 <li><a href="#connection-manager/cannot-decode-wait">connection-manager/cannot-decode-wait</a></li>
145 <li><a href="#connection-manager/congestion-limit">connection-manager/congestion-limit</a></li>
146 <li><a href="#connection-manager/hard-congestion-limit">connection-manager/hard-congestion-limit</a></li>
147 <li><a href="#connection-manager/log-sid-mismatch">connection-manager/log-sid-mismatch</a></li>
148 <li><a href="#connection-manager/delay-missing-sid">connection-manager/delay-missing-sid</a></li>
149 <li><a href="#connection-manager/service-map">connection-manager/service-map</a></li>
150 <ul>
151 <li><a href="#connection-manager/service-map/mapper">service-map/mapper (attributes: enabled)</a></li>
152 <ul>
153 <li><a href="#connection-manager/service-map/mapper/cache-dir">mapper/cache-dir</a></li>
154 <li><a href="#connection-manager/service-map/mapper/cache-save-age">mapper/cache-save-age</a></li>
155 <li><a href="#connection-manager/service-map/mapper/auto-map-services">mapper/auto-map-services</a></li>
156 <li><a href="#connection-manager/service-map/mapper/reset-services">mapper/reset-services</a></li>
157 <li><a href="#connection-manager/service-map/mapper/allow-services">mapper/allow-services</a></li>
158 <li><a href="#connection-manager/service-map/mapper/block-services">mapper/block-services</a></li>
159 <li><a href="#connection-manager/service-map/mapper/dummy-services">mapper/dummy-services</a></li>
160 <li><a href="#connection-manager/service-map/mapper/auto-reset-threshold">mapper/auto-reset-threshold</a></li>
161 <li><a href="#connection-manager/service-map/mapper/log-missing-sid">mapper/log-missing-sid</a></li>
162 <li><a href="#connection-manager/service-map/mapper/broadcast-missing-sid">mapper/broadcast-missing-sid</a></li>
163 <li><a href="#connection-manager/service-map/mapper/redundant-forwarding">mapper/redundant-forwarding</a></li>
164 <li><a href="#connection-manager/service-map/mapper/retry-lost-services">mapper/retry-lost-services</a></li>
165 <li><a href="#connection-manager/service-map/mapper/hide-unknown-services">mapper/hide-unknown-services</a></li>
166 <li><a href="#connection-manager/service-map/mapper/hide-disabled-connectors">mapper/hide-disabled-connectors</a></li>
167 </ul>
168 <li><a href="#connection-manager/service-map/mapper-override">service-map/mapper (attributes: *profile, enabled)</a></li>
169 </ul>
170 <br />
171 <li><a href="#connection-manager/external-connector-config">connection-manager/external-connector-config (attributes: enabled)</a></li>
172 <ul>
173 <li><a href="#connection-manager/external-connector-config/connector-file-url">external-connector-config/connector-file-url</a></li>
174 <li><a href="#connection-manager/external-connector-config/connector-file-key">external-connector-config/connector-file-key</a></li>
175 <li><a href="#connection-manager/external-connector-config/update-interval">external-connector-config/update-interval</a></li>
176 </ul>
177 <br />
178 <li><a href="#connection-manager/cws-connectors">connection-manager/cws-connectors</a></li>
179 <ul>
180 <li><a href="#connection-manager/cws-connectors/[newcamd-connector|radegast-connector]">cws-connectors/newcamd-connector (attributes: *name, profile, provider-idents, metric, enabled, qos-class, override-checks)</a></li>
181 <ul>
182 <li><a href="#connection-manager/cws-connectors/[newcamd-connector|radegast-connector]/host">newcamd-connector/host</a></li>
183 <li><a href="#connection-manager/cws-connectors/[newcamd-connector|radegast-connector]/port">newcamd-connector/port</a></li>
184 <li><a href="#connection-manager/cws-connectors/[newcamd-connector|radegast-connector]/can-decode-services">newcamd-connector/can-decode-services (attributes: exclusive, profile)</a></li>
185 <li><a href="#connection-manager/cws-connectors/[newcamd-connector|radegast-connector]/cannot-decode-services">newcamd-connector/cannot-decode-services (attributes: profile)</a></li>
186 <li><a href="#connection-manager/cws-connectors/newcamd-connector/userpass">newcamd-connector/user &amp; pass</a></li>
187 <li><a href="#connection-manager/cws-connectors/newcamd-connector/des-key">newcamd-connector/des-key</a></li>
188 <li><a href="#connection-manager/cws-connectors/newcamd-connector/keepalive-interval">newcamd-connector/keepalive-interval</a></li>
189 <li><a href="#connection-manager/cws-connectors/newcamd-connector/client-id">newcamd-connector/client-id</a></li>
190 <li><a href="#connection-manager/cws-connectors/newcamd-connector/au-users">newcamd-connector/au-users</a></li>
191 <li><a href="#connection-manager/cws-connectors/newcamd-connector/asynchronous">newcamd-connector/asynchronous</a></li>
192 <li><a href="#connection-manager/cws-connectors/newcamd-connector/caid-profile-map">newcamd-connector/caid-profile-map</a></li>
193 </ul>
194 <li><a href="#connection-manager/cws-connectors/[newcamd-connector|radegast-connector]">cws-connectors/radegast-connector (attributes: *name, *profile, *provider-idents, metric, enabled, qos-class)</a></li>
195 <ul>
196 <li><a href="#connection-manager/cws-connectors/[newcamd-connector|radegast-connector]/host">radegast-connector/host</a></li>
197 <li><a href="#connection-manager/cws-connectors/[newcamd-connector|radegast-connector]/port">radegast-connector/port</a></li>
198 <li><a href="#connection-manager/cws-connectors/[newcamd-connector|radegast-connector]/can-decode-services">radegast-connector/can-decode-services (attributes: exclusive)</a></li>
199 <li><a href="#connection-manager/cws-connectors/[newcamd-connector|radegast-connector]/cannot-decode-services">radegast-connector/cannot-decode-services</a></li>
200 </ul>
201 <li><a href="#connection-manager/cws-connectors/csp-connector">cws-connectors/csp-connector (attributes: *name, metric, enabled, qos-class)</a></li>
202 <ul>
203 <li><a href="#connection-manager/cws-connectors/csp-connector/url">csp-connector/url</a></li>
204 <li><a href="#connection-manager/cws-connectors/csp-connector/url-backup">csp-connector/url-backup</a></li>
205 <li><a href="#connection-manager/cws-connectors/newcamd-connector/userpass">csp-connector/user &amp; pass</a></li>
206 <li><a href="#connection-manager/cws-connectors/csp-connector/request-cache-updates">csp-connector/request-cache-updates</a></li>
207 <li><a href="#connection-manager/cws-connectors/csp-connector/exclude-profiles">csp-connector/exclude-profiles</a></li>
208 </ul>
209 <li><a href="#connection-manager/cws-connectors/chameleon-connector">cws-connectors/chameleon-connector (attributes: *name, metric, enabled, qos-class)</a></li>
210 <ul>
211 <li><a href="#connection-manager/cws-connectors/[newcamd-connector|radegast-connector]/host">chameleon-connector/host</a></li>
212 <li><a href="#connection-manager/cws-connectors/[newcamd-connector|radegast-connector]/port">chameleon-connector/port</a></li>
213 <li><a href="#connection-manager/cws-connectors/newcamd-connector/userpass">chameleon-connector/user &amp; pass</a></li>
214 <li><a href="#connection-manager/cws-connectors/chameleon-connector/profiles">chameleon-connector/profiles</a></li>
215 </ul>
216 </ul>
217</ul>
218<br />
219<li><a href="#proxy-plugins">proxy-plugins</a></li>
220<ul>
221 <li><a href="#proxy-plugins/plugin">proxy-plugins/plugin (attributes: *class, enabled)</a></li>
222 <ul>
223 <li><a href="#proxy-plugins/plugin/plugin-config">plugin/plugin-config</a></li>
224 </ul>
225</ul>
226<br />
227<li><a href="#cache-handler">cache-handler</a></li>
228<ul>
229 <li><a href="#cache-handler/cache-config">cache-handler/cache-config</a></li>
230 <ul>
231 <li><a href="#cache-handler/cache-config/cw-max-age">cache-config/cw-max-age</a></li>
232 <li><a href="#cache-handler/cache-config/max-cache-wait">cache-config/max-cache-wait</a></li>
233 </ul>
234</ul>
235</ul>
236<br />
237
238<a name="cardserv-proxy">
239<div class='indent'>cardserv-proxy (attributes: *ver)</div><br />
240The root element for the proxy config file. <br />
241<br />
242- <strong class='bold'>ver</strong>: The version attribute must always match the version of the proxy itself (lib/cardservproxy.jar). This is an intentional safeguard to force a manual check of the proxy.xml contents when upgrading to a new version. Even if no changes are strictly required from one particular version to the next, it makes sense to double-check. To get a fresh start that is guaranteed to work with the currently installed version, simply remove proxy.xml entirely and start without it. A blank template will then be generated.<br />
243<br />
244Example: <em class='italic'>&lt;cardserv-proxy ver="0.8.4"></em><br />
245<br />
246</a>
247
248<a name="ca-profiles">
249<div class='indent'>ca-profiles</div><br />
250A profile in the proxy corresponds to one type of card or provider/vendor. Each incoming message that is to be processed by the proxy must be assigned to a profile, either as a result of being received on a port that is locked to a profile or by mapping information (ca-id, provider idents, sid etc) in the request to information associated with the profile. The proxy can open listening-ports for each profile, and clients connecting to these will be assumed to only be sending traffic relevant to this profile (but there is no mechanism in the protocols that makes this happen, you have to make sure manually that all clients connecting to a port never send the wrong traffic).<br />
251CWS connectors can be assigned either by manually configuring them to a specific profile, or by auto-assignment based on the ca-id of the card data thats returned on login (auto-assignment only works for newcamd CWS). As of 0.9.0 multi-context connectors and ports are supported, but these only work for traffic that can be properly identified (i.e where the protocol or circumstances allow ca-id, network-id, provider-ident and sid to always be set correctly).<br />
252Cards within a profile typically need to be identical. For some ca-systems, multiple cards cannot be placed within the same profile even though they appear to decode the same services on their own. The proxy will gather card-information from all connectors in a profile (specifically provider-idents) and merge those automatically as long as there is no overlap. Cards with different ca-ids can never be included in the same profile.<br />
253<br />
254</a>
255
256<a name="ca-profiles/default-des-key">
257<div class='indent'>ca-profiles/default-des-key</div><br />
258The default des key for all incoming newcamd connections. Clients will need to match this. <br />
259<br />
260Example: <em class='italic'>&lt;default-des-key>01 02 03 04 05 06 07 08 09 10 11 12 13 14&lt;/default-des-key></em><br />
261<br />
262</a>
263
264<a name="ca-profiles/default-deny-list">
265<div class='indent'>ca-profiles/default-deny-list</div><br />
266Optional global ip black list<br />
267A list of ip masks (wildcards supported) separated by space. This list applies to all defined profile listen ports and is checked first.<br />
268<br />
269Example: <em class='italic'>&lt;deny-list>192.168.66.* 10.0.0.7&lt;/deny-list></em> <br />
270<br />
271</a>
272
273<a name="ca-profiles/max-threads">
274<div class='indent'>ca-profiles/max-threads</div><br />
275Maximum number of java threads the proxy will allow to be spawned (default: 1000). This is a global limit affecting all profiles and connectors. Each ca profile, connected client session and cws connector requires at least 1 thread each. If the limit is exceeded, no new connections will be accepted until the total thread count drops again. Most JVM's will experience problems once the count reaches somewhere between 2000 and 3000 threads, but significantly more (or less!) may be possible depending on os/hardware.<br />
276<strong>NOTE: </strong>If you do increase this, keep in mind that most OS'es have a limit on the number of open file handles (and each socket counts as a file). On most *nix variants you can use <strong>ulimit -n</strong> and the <strong>lsof</strong> util (list open files) to find such limits, but the methods for increasing them vary. See <strong>README.Optimization.txt</strong> for more details.</strong> <br />
277<br />
278Example: <em class='italic'>&lt;max-threads>1500&lt;/max-threads></em><br />
279<br />
280</a>
281
282<a name="ca-profiles/session-timeout">
283<div class='indent'>ca-profiles/session-timeout</div><br />
284Maximum idle time for client sessions, in minutes (default: 120). Sets how long the proxy will keep blocking reads open, for the tcp connections from clients. The reason for the very high default is to reduce the frequency of reconnects from clients in standby mode that do not send keep-alives. In large shares it may make sense to decrease this limit significantly, so resources aren't wasted on connections that may have died hours ago.<br />
285<br />
286Example: <em class='italic'>&lt;session-timeout>240&lt;/session-timeout></em><br />
287<br />
288</a>
289
290<a name="ca-profiles/session-keepalive">
291<div class='indent'>ca-profiles/session-keepalive (attributes: exclude-clients)</div><br />
292Send newcamd keep-alive messages to any session that is idle longer than this many minutes (default: 0 = off). Normally only newcamd clients send these to servers, but since most clients seem to ignore the message it is possible to use to find dead sessions faster (useful in very large shares, since the session-timeout can be lowered and resources reclaimed). <strong>NOTE: </strong> if clients are already sending keep-alives on their own (like most should, by default), make sure your interval is greater than that of the client so messages wont be sent when there's no need. FINE log-level can be used to see keep-alive traffic.<br /><br />
293If a session-keepalive is set but is higher than session-timeout, timeouts will trigger a keep-alive send (if the client isn't excluded) instead of a disconnect.<br /><br />
294- <strong class='bold'>excluded-clients</strong>: List of client names/ids that wont be sent keep-alives (separated by space, default: "" = send to all). Since its undefined what clients do when they receive a keep-alive, some may not handle it well (or fail altogether if they get any). If you find one, list it here. A client that actually responds to the keep-alives could potentially cause a loop, so use with care.<br />
295<br />
296Example: <em class='italic'>&lt;session-keepalive exclude-clients="someclient otherclient thirdclient">10&lt;/session-keepalive></em><br />
297<br />
298</a>
299
300<a name="ca-profiles/newcamd-maxmsgsize">
301<div class='indent'>ca-profiles/newcamd-maxmsgsize</div><br />
302The global maximum size for newcamd messages (default: 400). This corresponds to <strong>CWS_NETMSGSIZE</strong> in the native clients/servers, and was previously always 240. Increasing the limit shouldn't affect anything unless any large messages are actually received, but just in case the value can now be configured.<br />
303<br />
304Example: <em class='italic'>&lt;newcamd-maxmsgsize>480&lt;/newcamd-maxmsgsize></em><br />
305<br />
306</a>
307
308<a name="ca-profiles/block-caid-mismatch">
309<div class='indent'>ca-profiles/block-caid-mismatch</div><br />
310true/false (default: true) Block all replies where the request had a different ca-id. Determines whether M flag transactions are blocked or not (i.e returned as failures to the clients). Since the cache is global, it is possible for a client to send requests to the wrong port and still get valid replies (which may cause it to ignore the caid in the card-data and keep sending to the wrong port - potentially destroying the service mapping for that profile). If you see this happening, make sure this is set to true. <br />
311<br />
312</a>
313
314<a name="ca-profiles/extended-newcamd">
315<div class='indent'>ca-profiles/extended-newcamd (attributes: *listen-port, bind-ip, enabled)</div><br />
316Defines a listener for the extended version of the newcamd protocol used between mgcamd and newcs, allowing multiple systems to be accessed over one session. This will behave like newcs does when chameleon is used, and mgcamd clients (or any other that implement these protocol extensions) will receive a list of multiple cards when connecting.<br />
317The proxy will compile the list of available cards (or rather ca-id/provider-ident pairs) when a new session is created, based on which connectors and profiles are available at the time. If new connectors/profiles are added or removed after the client has connected, the extended protocol allows them to receive real-time updates without having to reconnect.<br />
318<strong>NOTE: </strong>AU will work over this port, but only if the au-user in question is configured to only update a single card (across all profiles). If there are more, dummy data will be returned instead.<br /><br />
319- <strong class='bold'>listen-port</strong>: TCP port number.<br />
320- <strong class='bold'>bind-ip</strong>: Optional local IP to bind the listener to (default: all - 0.0.0.0).<br />
321- <strong class='bold'>enabled</strong>: true/false (default: true).<br />
322<br />
323Example: <em class='italic'>&lt;extended-newcamd listen-port="5556"/></em> <br />
324<br />
325</a>
326
327<a name="ca-profiles/extended-newcamd/des-key">
328<div class='indent'>ca-profiles/extended-newcamd/des-key</div><br />
329Overrides the default-des-key for the extended-newcamd listener.<br />
330<br />
331Example: <br /><br />
332 <em class='italic'>&lt;extended-newcamd listen-port="5556"></em> <br />
333 &nbsp;&nbsp;&nbsp;&nbsp;<em class='italic'>&lt;des-key>14 13 12 11 10 09 08 07 06 05 04 03 02 01&lt;/des-key></em><br />
334 <em class='italic'>&lt;/extended-newcamd></em> <br />
335<br />
336</a>
337
338<a name="ca-profiles/extended-newcamd/exclude-profiles">
339<div class='indent'>ca-profiles/extended-newcamd/exclude-profiles</div><br />
340Optional list of profile names that are to be excluded from this port. Only use this if overlapping/ambigious profiles exist (where it is not possible to find a single profile based on only ca-id and provider-ident).<br />
341<br />
342Example: <em class='italic'>&lt;exclude-profiles>profile1 testprofile&lt;/exclude-profiles></em> <br />
343<br />
344</a>
345
346<a name="ca-profiles/extended-newcamd/main-ca-id">
347<div class='indent'>ca-profiles/extended-newcamd/main-ca-id</div><br />
348Optional ca-id to display in the old (regular newcamd) card-data record shown to clients on connect. If there is a way to unambigiously merge provider idents for this id from multiple profiles, it can make it possible even for clients that don't support the extended protocol to use this port to access multiple contexts (as long as those all use the same ca-id). I.e: cccam's newcamd support.<br />
349<br />
350Example: <em class='italic'>&lt;main-ca-id>0500&lt;/main-ca-id></em> <br />
351<br />
352</a>
353
354<a name="ca-profiles/profile">
355<div class='indent'>ca-profiles/profile (attributes: *name, ca-id, network-id, enabled, debug, cache-only, provider-idents, require-provider-match)</div><br />
356One proxy profile definition. All traffic that you plan to pass through the proxy must be identified and bound to a profile (meaning you have to know where it came from and take steps to avoid users sending you the wrong traffic). In a satellite setup this may mean you have to manually list a large number of profiles to cover everything, one for each card vendor/network operator. It will no longer be enough to just know the ca-id and provider-idents involved.<br />
357<strong>NOTE: </strong>It is possible to define profiles with no listen ports at all, for use with extended-newcamd or csp-connect.<br /><br />
358- <strong class='bold'>name</strong>: Typically the provider/vendor name but can be any short string (case sensetive, may not contain spaces). Names are local labels and not transmitted when using csp-connect.<br />
359- <strong class='bold'>ca-id</strong>: Assigns a ca-id to the profile. As of 0.9.0 this should always be set correctly to prevent accidentally merging multiple ca-ids within one profile. Can be set to 0000 only if you know it doesn't matter for your setup (i.e you have only one profile and don't intend to use csp-connect or extended ports). <strong>NOTE: </strong>This has to match the ca-id of the newcamd cards exactly, or they will be automatically disabled on connect (see cws-connectors for more details).<br />
360<br />- <strong class="bold">network-id</strong>: Assigns a dvb network-id to the profile. This will be used to uniquely identify profiles between proxies (together with ca-id) and should always be set correctly. If you are unable to find out what the id is for your setup it can be left as 0000, but the profile will not be shared via csp-connect or accessible through extended-newcamd.<br />
361<br /><strong>NOTE: </strong> This <strong>original dvb network id</strong> can be easily found if you have access to the enigma web of a dreambox, its the <strong>ONID</strong> value in the stream info/about. If you have an enigma services file handy you can find a service line you know belongs to the network in question and look at the third value from the right, for example in: <em class="italic">00aa:ffff0000:000e:0064:1:285</em> - 0064 is the network id.<br />
362If you don't have an enigma file (and you're unable to find some equivalent in your dvb application) you can use dvbsnoop to check the NIT data of the transport stream directly, for example: <em class="italic">dvbsnoop -n 1 0x10 | grep Original_network_ID</em> (0x10 is the pid for the NIT data, Network Information Table). Remember to tune to a transponder that belongs to the network in question before snooping.<br /><br />
363- <strong class='bold'>enabled</strong>: true/false (default: true) Allows for temporarily disabling one profile. Doing so will close all its listening ports, and also disable any connectors that explicitly reference this profile.<br />
364- <strong class='bold'>debug</strong>: true/false (default: true) Controls whether a backlog of 100 ecm transactions should be stored for each user session for troubleshooting purposes (accesible via http @ /xmlHandler?command=user-log&name=user). <strong>NOTE: </strong>Under most circumstances it makes sense to always keep this switched on, but for very large shares it can consume considerable amounts of memory (hundreds of megs).<br />
365- <strong class='bold'>cache-only</strong>: true/false (default: false) Switches the profile to only use cached cw's, never forwarding anything to card connectors (no connectors need to be defined when this is set). See 0.7.2 changelog for details. This is experimental and probably best left alone.<br />
366- <strong class="bold">provider-idents</strong>: Optional list of idents to associate with this profile. Normally these are provided by the card connectors you include in the profile and do not need to be specified. If you do list them, make sure you get it right. It determines what will be shown to clients connecting via csp-connect and the extended newcamd port (and what will be included in the card-data for any regular profile-specific listen port, unless overridden).<br />
367- <strong class="bold">require-provider-match</strong>: true/false (default: true, unless the profile contains the single ident 00 00 00 in whic case the default is false). Set this to false if you know the provider idents do not matter for the ca-system used within this profile. Doing so will automatically add the ident 00 00 00 to the profile (if it wasn't manually added already).<br />
368<br />
369Example: <em class='italic'>&lt;profile name="cableVendorX" network-id="0064" ca-id="0b00" provider-idents="00 00 00, 00 00 01" enabled="true" debug="true" require-provider-match="false"></em> <br />
370<br />
371</a>
372
373<a name="ca-profiles/profile/newcamd">
374<div class='indent'>ca-profiles/profile/newcamd (attributes: *listen-port, bind-ip)</div><br />
375Defines a newcamd listener for the profile.<br />
376- <strong class='bold'>listen-port</strong>: TCP port number.<br />
377- <strong class='bold'>bind-ip</strong>: Optional local IP to bind the listener to (default: all - 0.0.0.0).<br />
378<br />
379Example: <em class='italic'>&lt;newcamd listen-port="13112" bind-ip="192.168.0.23"/></em> <br />
380<br />
381</a>
382
383<a name="ca-profiles/profile/newcamd/des-key">
384<div class='indent'>ca-profiles/profile/newcamd/des-key</div><br />
385Overrides the default-des-key for a particular newcamd listener.<br />
386<br />
387Example: <br /><br />
388 <em class='italic'>&lt;newcamd listen-port="13112"></em> <br />
389 &nbsp;&nbsp;&nbsp;&nbsp;<em class='italic'>&lt;des-key>14 13 12 11 10 09 08 07 06 05 04 03 02 01&lt;/des-key></em><br />
390 <em class='italic'>&lt;/newcamd></em> <br />
391<br />
392</a>
393
394<a name="ca-profiles/profile/newcamd/card-data">
395<div class='indent'>ca-profiles/profile/newcamd/card-data (attributes: *type, name, ca-id, override-au)</div><br />
396Allows specifying the card-data given to clients that connect to this newcamd port (in response to MSG_CARD_DATA_REQ, see protocol.txt). Only use this if you know you need it. If this element is omitted, the proxy will return data from the least loaded card in the profile, except with provider idents from any another cards (or from the provider-idents in the profile config) merged into it.<br />
397- <strong class='bold'>type</strong>: Set to either <em class='italic'>config</em>, <em class='italic'>connector</em>, <em class='italic'>file</em> or <em class='italic'>empty</em>. If set to empty, the name attribute is ignored and dummy data with only the ca-id for the profile is returned (and a single 000000 provider ident).<br />
398- <strong class='bold'>name</strong>: If type is <em class='italic'>connector</em> then name should be a connector name. If type is <em class='italic'>file</em> then name is path and filename to read the card-data from.<br />
399- <strong class='bold'>ca-id</strong>: If type is <em class='italic'>config</em> then ca-id can be set to a valid hex string, i.e: 0B00. If no ca-id is set for type config, the ca-id from the profile is used.<br />
400- <strong class='bold'>override-au</strong>: true/false (default: false). Set to true and the specified card-data will be given even to au-users (who would normally get data from the cards they update).<br />
401<br />
402Example: <em class='italic'>&lt;card-data type="connector" name="card1"/></em> <br />
403Example: <em class='italic'>&lt;card-data type="file" name="etc/mycard.card" override-au="true"/></em> <br />
404Example: <em class='italic'>&lt;card-data type="config" ca-id="0604">&lt;provider-idents>00 00 00,00 00 01&lt;/provider-idents>&lt;/card-data></em> <br />
405<br />
406</a>
407
408<a name="ca-profiles/profile/newcamd/card-data/provider-idents">
409<div class='indent'>ca-profiles/profile/newcamd/card-data/provider-idents</div><br />
410Only valid for type <em class='italic'>config</em>. List of providers in comma-separated hex strings. If no list is specified, the card-data will contain the list of provider idents currently associated with the profile (if there is none 00 00 00 will be used). Only use this if you specifically want to override the provider idents that belong in the profile and show the client something else.<br />
411<br />
412Example: <em class='italic'>&lt;provider-idents>00 00 00,00 00 01,00 00 02&lt;/provider-idents></em> <br />
413<br />
414</a>
415
416<a name="ca-profiles/profile/newcamd/no-encryption">
417<div class='indent'>ca-profiles/profile/newcamd/no-encryption</div><br />
418true/false (default: false) Set to true and the proxy will assume newcamd traffic to this listen port is unencrypted and use it as is. The only client that supports this is the alex-cs hardware.<br />
419<br />
420</a>
421
422<a name="ca-profiles/profile/newcamd/no-validation">
423<div class='indent'>ca-profiles/profile/newcamd/no-validation</div><br />
424true/false (default: false) Set to true and the proxy will ignore incorrect ca-id/provider-ident specified in the newcamd header. Only use this if you know a particular client is in fact sending the right ecms, but putting the wrong ca-id/ident in the header.<br />
425<br />
426</a>
427
428<a name="ca-profiles/profile/radegast">
429<div class='indent'>ca-profiles/profile/radegast (attributes: *listen-port, bind-ip, sid-in-0x21)</div><br />
430Defines a radegast listener for the profile. If a profile has a radegast listener defined then ca-id must be set. As there is no user auth, only the ip allow/deny lists control access to radegast listeners.<br />
431- <strong class='bold'>listen-port</strong>: TCP port number.<br />
432- <strong class='bold'>bind-ip</strong>: Optional local IP to bind the listener to (default: all - 0.0.0.0).<br />
433- <strong class='bold'>sid-in-0x21</strong>: true/false (default: true). Determines whether to attempt to parse radegast field 0x21 as the sid. Only switch this off if you notice that it yields incorrect sids.<br />
434<br />
435Example: <em class='italic'>&lt;radegast listen-port="13115" sid-in-0x21="true">&lt;allow-list>192.168.0.*&lt;/allow-list>&lt;/radegast></em> <br />
436<br />
437</a>
438
439<a name="ca-profiles/profile/[newcamd|radegast]/allow-list">
440<div class='indent'>ca-profiles/profile/[newcamd|radegast]/allow-list</div><br />
441Optional ip white list<br />
442A list of ip masks (wildcards supported) separated by space. If this is set, only matching source addresses will be able to connect.<br />
443<br />
444Example: <em class='italic'>&lt;allow-list>192.168.0.* 10.0.*&lt;/allow-list></em> <br />
445<br />
446</a>
447
448<a name="ca-profiles/profile/[newcamd|radegast]/deny-list">
449<div class='indent'>ca-profiles/profile/[newcamd|radegast]/deny-list</div><br />
450Optional ip black list<br />
451A list of ip masks (wildcards supported) separated by space. Allows blocking connections based on source ip (checked after the allow-list).<br />
452<br />
453Example: <em class='italic'>&lt;deny-list>192.168.0.116 10.0.0.7&lt;/deny-list></em> <br />
454<br />
455</a>
456
457<a name="ca-profiles/profile/services-file">
458<div class='indent'>ca-profiles/profile/services-file (attributes: format, filter)</div><br />
459Path and filename for an enigma1 services file (result of service scanning on a dreambox, usually it is <strong class='bold'>/var/tuxbox/config/enigma/services</strong> in case of an enigma1 box, and <strong class='bold'>/etc/enigma2/lamedb</strong> for engima2). The services file is used by the proxy exclusively to assign readable names to services, for logging and remote monitoring. <br /><br />
460- <strong class='bold'>format</strong>: Optional, format of the services file (defaults to enigma). Supported formats are "enigma" (enigma1/2 has the same one), "cccam" (for CCcam.channelinfo), "dvbviewer" (for dvbviewer exports, ini-files), "neutrino" (services.xml) and "simple". Simple assumes a plain text file with: sid=service name (one per line, sid in hex, names in ISO-8859-1). This is just a fallback in case no live data can be obtained, the idea is to _avoid_ manually specifying service names by instead importing it from the metadata of any existing dvb-solution (or even directly from the transport stream).<br />
461- <strong class='bold'>filter</strong>: Optional and applicable for enigma, cccam, neutrino and dvbviewer formats. This filter tells the proxy that only service definitions matching these listed strings should be parsed for this profile. What the filter is matched against depends on the format<br />
462<br />For a <strong>cccam</strong> channelinfo file this should be a list of provider idents separated by space, i.e: 000000 022F00 030B00 (but there is typically no need to set this if provider-idents have been listed for the profiles, if so those will be used).<br /><br />
463For a <strong>dvbviewer</strong> ini file (export) this is matched against the "Root" key of each channel section (case sensetive). It should not be necessary to filter if network-id can be properly specified for the profile.<br /><br />
464For a <strong>neutrino</strong> services.xml the filter strings are comma separated and matched against the satellite names (case insensetive, from the beginning of the name). It should not be necessary to filter if network-id can be properly specified for the profile.<br /><br />
465For <strong>enigma</strong> services files from dvb-c/t the file typically contains only services for one provider, so this attribute can be omitted (i.e. everything in the file is relevant for this profile). <br /><br />
466For dvb-s it can contain multiple providers, so check the contents of the file and set a provider name that matches the card(s) that will be in this profile. <br />
467<br /><strong>NOTE: </strong>As of 0.8.13 enigma services files will be automatically filtered on network-id (if set for the profile) so filtering on the provider strings in enigma files shouldn't be necessary for most situations. If you DO set a filter string, network-id will not be used for filtering.<br />
468<br />The provider name will appear for each service in the file, with a line like: <br />
469<em class='italic'>p: providername</em><br />
470If services appear in the file with several different provider names even though they are available on the same card, or if some services have <em class='italic'>p: unknown</em>, then multiple provider names can be specified (separated by comma).
471Multiple profiles can point to the same services-file, with different providers set. <br />
472Once a services file has been successfully loaded, the proxy will monitor that file for changes and automatically reload it if any are detected (allowing for automated file updates). <br />
473<br />
474Example: <em class='italic'>&lt;services-file filter="name with spaces, vendor X, vendor Y">etc/services&lt;/services-file></em><br />
475Example: <em class='italic'>&lt;services-file format="simple">etc/servicesForProfileX.properties&lt;/services-file></em><br />
476Example: <em class='italic'>&lt;services-file format="cccam" filter="022F00 030B00">etc/CCcam.channelinfo&lt;/services-file></em><br />
477Example: <em class='italic'>&lt;services-file format="dvbviewer">etc/dvbviewer.export.ini&lt;/services-file></em><br />
478Example: <em class='italic'>&lt;services-file format="neutrino">etc/services.xml&lt;/services-file></em><br />
479<br />
480</a>
481
482<a name="ca-profiles/profile/max-cw-wait">
483<div class='indent'>ca-profiles/profile/max-cw-wait</div><br />
484This defines the maximum wait time (in seconds) for anything trying to get a CW reply from this profile, before aborting with a timeout (flag T). Under normal circumstances this should be set to the maximum time a client can wait for CW reply without experiencing a freeze. Applies to all CWS connectors in this profile, if set here it overrides the global setting in connection-manager.<br />
485<strong>NOTE: </strong> When using multi-context connectors (e.g csp-connector or chameleon-connector) the max-cw-wait in effect is the global value, not the per profile one.<br />
486To determine a reasonable value for max-cw-wait, it is possible to use the test-delay feature in the LoggingPlugin. This can insert an artificial delay into the processing of requests for a specific test-user (source ip address). Increase the delay gradually until freezes occur for the test-user and note the total ecm time in the client logs when this happens, this is your max-cw-wait. Make sure the client ecm timeout is set high enough not to interfere with the result.<br />
487See <strong>README.Optimization.txt</strong> for more details.<br />
488<br />
489</a>
490
491<a name="ca-profiles/profile/congestion-limit">
492<div class='indent'>ca-profiles/profile/congestion-limit</div><br />
493The maximum estimated queue time on a connector before the proxy considers it to be congested, and tries to avoid using it (by instead using connectors that would normally be excluded due to a higher metric number). Value in seconds, must be between max-cw-wait/2 and max-cw-wait. Use with care, and primarily if you have many connectors with differing metric priority set. Applies to all CWS connectors in this profile, if set here it overrides the global setting in connection-manager.<br />
494<br />
495</a>
496
497<a name="logging">
498<div class='indent'>logging (attributes: log-ecm, log-emm, log-zapping, hide-ip-addresses)</div><br />
499Main log configuration for the proxy. File logging only.<br />
500- <strong class='bold'>log-ecm</strong>: true/false (default: true). Set to false to disable the INFO level ECM logging.<br />
501- <strong class='bold'>log-emm</strong>: true/false (default: true). Set to false to disable the INFO level EMM logging.<br />
502- <strong class='bold'>log-zapping</strong>: true/false (default: true). Set to false to disable the INFO level logging when users switch service.<br />
503- <strong class='bold'>hide-ip-addresses</strong>: true/false (default: false). Set to true to mask any ip addresses (xxx.xxx.xxx.123) or hostnames (host.xxx.xxx) logged for the normal INFO level non-debug output. This does not apply to web access logs or logging filters.<br />
504<br />
505Example: <em class='italic'>&lt;logging log-ecm="false" log-emm="false" log-zapping="false" hide-ip-addresses="true"></em> <br />
506<br />
507</a>
508
509<a name="logging/log-file">
510<div class='indent'>logging/log-file (attributes: rotate-count, rotate-max-size)</div><br />
511Main log file.<br />
512- <strong class='bold'>rotate-max-size</strong>: 1 or more to enable, value in kb (default: 0 = off). The maximum size the log file is allowed to reach, before rotating (moving on to the next file, or overwriting if count is set to 1).<br />
513- <strong class='bold'>rotate-count</strong>: 1 or more to enable (default: 0 = off). The number of log files to cycle through when max-size is reached. File names will be suffixed with .0, .1, .2 and so on. The file currently in use will have an additional corresponding .lck file.<br />
514<br />
515Example: <em class='italic'>&lt;log-file rotate-count="5" rotate-max-size="1024">log/cardserv.log&lt;/log-file></em> <br />
516<br />
517</a>
518
519<a name="logging/log-level">
520<div class='indent'>logging/log-level</div><br />
521The log level determines the verbosity. Supported levels are:<br />
522OFF - no logging<br />
523SEVERE - only errors that should normally not occur<br />
524WARNING - warnings and common errors only<br />
525INFO - default level, includes all ECM/EMM's unless disabled by log-ecm/log-emm attributes.<br />
526FINE - includes some cache events, remote api access and similar<br />
527FINER - all cache events, some net traffic events<br />
528FINEST - all net traffic/encryption related events<br />
529ALL - everything, same as FINEST<br />
530<br />
531Example: <em class='italic'>&lt;log-level>WARNING&lt;/log-level></em> <br />
532<br />
533</a>
534
535<a name="logging/log-dateformat">
536<div class='indent'>logging/log-dateformat</div><br />
537Optional alternate format string to use for the logging. Must be a valid java <a href="http://java.sun.com/j2se/1.4.2/docs/api/java/text/SimpleDateFormat.html">SimpleDateFormat</a> pattern.<br />
538<br />
539Example: <em class='italic'>&lt;log-dateformat>yyMMdd HH:mm:ss.SSS&lt;/log-dateformat></em> <br />
540<br />
541</a>
542
543<a name="logging/silent">
544<div class='indent'>logging/silent</div><br />
545true/false (default: false). Controls logging to system out (in addition to log file). Set to true for log file only.<br />
546<br />
547</a>
548
549<a name="logging/debug">
550<div class='indent'>logging/debug</div><br />
551true/false (default: false). Controls logging of line numbers, thread names and full stacktraces.<br />
552<br />
553</a>
554
555<a name="logging/warning-threshold">
556<div class='indent'>logging/warning-threshold (attributes: *bad-flags, *max-delay)</div><br />
557Determines which user transactions to consider as potential problems (to be included for the user-warning-log http query). These events are only recorded if the profile has debug set to to true.<br />
558See <strong>README.Optimization.txt</strong> for more hints on how to interpret transaction flags.<br /><br />
559- <strong class='bold'>bad-flags</strong>: List of all flags that should be considered harmful (as a single string, no separators).<br />
560- <strong class='bold'>max-delay</strong>: In milliseconds, any transaction exceeding this limit will be considered a problem and traced (default: 5000).<br />
561- <strong class='bold'>include-file-events</strong>: true/false (default: true). Controls whether to gather all file loggings with level WARNING and SEVERE for display in the web-backend (file-log status query). Visible to admin users only.<br />
562<br />
563Example: <em class='italic'>&lt;warning-threshold bad-flags="YTSGXWD-" max-delay="7000" include-file-events="true"/></em> <br />
564<br />
565</a>
566
567<a name="logging/event-threshold">
568<div class='indent'>logging/event-threshold (attributes: *min-count)</div><br />
569Allows hiding errors on the status web, unless they occur repeatedly. Useful in large shares (many cards) that are set up so a single timeout doesn't really affect users.<br />
570<br />
571- <strong class='bold'>min-count</strong>: The number of failures required (in a row) to generate a CWS event on the status web (default: 1).<br />
572<br />
573Example: <em class='italic'>&lt;event-threshold min-count="2"/></em> <br />
574<br />
575</a>
576
577<a name="rmi">
578<div class='indent'>rmi (attributes: enabled)</div><br />
579Settings for the remote api (java remote method invocation). This allows other java applications a full interface for remote control and status overview. See <strong>test/RemoteTestClient.java</strong> in the source for an example.<br />
580- <strong class='bold'>enabled</strong>: true/false (default: false)<br />
581<br />
582</a>
583
584<a name="rmi/allowed-ip-masks">
585<div class='indent'>rmi/allowed-ip-masks</div><br />
586RMI has zero security, anyone with access to the ports can use it. Use this to limit access to a list of trusted ip-masks. If allowed-ip-masks is omitted or left empty, the ports will still be open but terminating all connection attempts (note that internal local access for components such as the http/xml interface will still be possible). Masks are specified using standard glob format (? and * wildcards).<br />
587<br />
588Example: <em class='italic'>&lt;allowed-ip-masks>192.168.0.* 10.0.1.2&lt;/allowed-ip-masks></em><br />
589<br />
590</a>
591
592<a name="rmi/registry-port">
593<div class='indent'>rmi/registry-port</div><br />TCP port for the RMI registry (default: 4099). You will need to change this to run multiple proxies on the same host, even if nothing makes use of RMI in your setup.<br />
594<br />
595</a>
596
597<a name="rmi/local-port">
598<div class='indent'>rmi/local-port</div><br />TCP port for the proxy remote api object (default: 4098). You will need to change this to run multiple proxies on the same host, even if nothing makes use of RMI in your setup.<br />
599<br />
600</a>
601
602<a name="rmi/local-name">
603<div class='indent'>rmi/local-name</div><br />
604Name of the proxy remote api object within the registry (default: cardservproxy). A remote application would connect to the registry and perform a lookup for this name to gain access. Unless running multiple proxies in the same JVM, there should be no need to change this.<br />
605<br />
606</a>
607
608<a name="rmi/display-name">
609<div class='indent'>rmi/display-name</div><br />
610Name of this proxy instance, as shown to a connecting remote application. This is also the name returned by http/xml queries (e.g proxy-status).<br />
611<br />
612</a>
613
614<a name="rmi/status-web">
615<div class='indent'>rmi/status-web (attributes: enabled)</div><br />
616Controls the built in http interface. This is built on top of RMI and allows non-java remote applications a generic xml-based query interface. See <strong>README.HttpXmlApi.txt</strong> for full docs.<br /><br />
617- <strong class='bold'>enabled</strong>: true/false (default: false)<br />
618<br />
619</a>
620
621<a name="rmi/status-web/listen-port">
622<div class='indent'>rmi/status-web/listen-port</div><br />
623TCP port for the built in httpd.<br />
624<br />
625</a>
626
627<a name="rmi/status-web/bind-ip">
628<div class='indent'>rmi/status-web/bind-ip</div><br />
629Optional local IP to bind the listen port to (default: all - 0.0.0.0).<br />
630<br />
631</a>
632
633<a name="rmi/status-web/ssl">
634<div class='indent'>rmi/status-web/ssl (attributes: enabled)</div><br />
635Enable to use https instead of http (enabling/disabling ssl requires a proxy restart).<br />
636<br />
637- <strong class='bold'>enabled</strong>: true/false (default: false)<br />
638<br />
639</a>
640
641<a name="rmi/status-web/ssl/keystore">
642<div class='indent'>rmi/status-web/ssl/keystore (attributes: *password)</div><br />
643If ssl is enabled, the proxy needs a certificate to present to connecting clients (enabling/disabling ssl requires a proxy restart). This needs to be in a java keystore file, specified here.
644To create such a file, use the keytool that is included with the jre/j2sdk. The following syntax will generate a new keystore with a self-signed certificate for localhost (use the hostname or IP that your status-web will be accessed via) and a 1000 day validity: <br />
645<em class='italic'>keytool -keystore cs_keystore -genkey -alias Cardservproxy -keyalg RSA -storepass 123456 -keypass 123456 -dname "cn=localhost" -validity 1000</em><br />
646<strong>NOTE: </strong>As of 0.9.0 there is a control command in the admin page of the status web for automatically generating a keystore file.<br /><br />
647- <strong class='bold'>password</strong>: The password for the keystore file (and the key password, both must use the same)<br />
648<br />
649Example: <br/>
650<em class='italic'>&lt;ssl enabled="true"><br />
651&nbsp;&nbsp;&lt;keystore password="123456">etc/cs_keystore&lt;/keystore><br />
652&lt;/ssl>
653</em><br />
654<br />
655</a>
656
657<a name="rmi/status-web/csp-connect">
658<div class='indent'>rmi/status-web/csp-connect (attributes: enabled, debug, ignore-cache-requests)</div><br />
659Allows disabling of csp-connections (csp-connectors from other proxies).<br />
660Csp-connections are always asynchronous and allow users access to all profiles (that they have access to according to the user-manager) over a single tcp connection. As the httpd is used to receive connections initially, enabling ssl is recommended (without https the credentials are sent in the clear).<br />
661<br />
662- <strong class='bold'>enabled</strong>: true/false (default: true)<br />
663- <strong class='bold'>debug</strong>: true/false (default: false). Corresponds to the debug attribute for regular ca-profiles and determines whether to keep the transaction backlog for troubleshooting.<br />
664- <strong class='bold'>ignore-cache-requests</strong>: true/false (default: false). Set to true to ignore clients requests for udp cache updates (even when ClusteredCache is in use locally).<br />
665<br />
666</a>
667
668<a name="rmi/status-web/war-file">
669<div class='indent'>rmi/status-web/war-file</div><br />
670In addition to the xml interface, the built in httpd can serve static content from a specified war file (web-archive, which is a standard zip file).<br />
671<br />
672Example: <em class='italic'>&lt;war-file>lib/cs-status.war&lt;/war-file></em> <br />
673<br />
674</a>
675
676<a name="rmi/status-web/welcome-file">
677<div class='indent'>rmi/status-web/welcome-file</div><br />
678A file within the war file to be shown to clients accessing "/" (default: cs-status.html). The path is relative to the root of the dir structure in the war file.<br />
679<br />
680Example: <em class='italic'>&lt;welcome-file>cs-status.html&lt;/welcome-file></em><br />
681<br />
682</a>
683
684<a name="rmi/status-web/log-file">
685<div class='indent'>rmi/status-web/log-file (attributes: rotate-count, rotate-max-size)</div><br />
686Standard web-access log for the httpd, using apache combined format. Omit this to disable access logging.<br />
687- <strong class='bold'>rotate-max-size</strong>: 1 or more to enable, value in kb (default: 0 = off). The maximum size the log file is allowed to reach, before rotating (moving on to the next file, or overwriting if count is set to 1).<br />
688- <strong class='bold'>rotate-count</strong>: 1 or more to enable (default: 0 = off). The number of log files to cycle through when max-size is reached. File names will be suffixed with .0, .1, .2 and so on. The file currently in use will have an additional corresponding .lck file.<br />
689<br />
690Example: <em class='italic'>&lt;log-file>log/web-access.log&lt;/log-file></em> <br />
691<br />
692</a>
693
694<a name="rmi/status-web/super-users">
695<div class='indent'>rmi/status-web/super-users</div><br />
696List of user names (separated by space) that should have access to the Config and Admin sections (control commands). Users must have admin set to true or they will be ignored.<br />
697<strong>NOTE: </strong>Users with admin set to true will still have access to other admin features in the web, even if they are not listed here.<br />
698<br />
699Example: <em class='italic'>&lt;super-users>root admin&lt;/super-users></em><br />
700<br />
701</a>
702
703<a name="user-manager">
704<div class='indent'>user-manager (attributes: *class, allow-on-failure, log-failures, jar-file)</div><br />
705Defines the user-manager for the proxy. This is used for authenticating all client access, via both the newcamd protocol and the http/xml interface.<br />
706- <strong class='bold'>class</strong>: The java class name of the user manager implementation. This allows the entire user handling to be easily replaced, for example to use an existing remote database or passwd file of an arbitrary format/type (see <strong>README.XmlUserManager.txt</strong> for one example). The default built-in user manager reads the user definitions directly from the proxy.xml config file.<br />
707A user manager class must implement com.bowman.cardserv.interfaces.UserManager (or extend the default SimpleUserManager).<br />
708- <strong class='bold'>allow-on-failure</strong>: true/false (default: false). If a user-manager is unable to verify the identify of a user or complete a request for info due to internal/temporary problems (such as network issues in a remote usermanager), this controls if the manager automatically allows access for that user. I.e: disable security completely in case the user database is down.<br />
709- <strong class='bold'>log-failures</strong>: true/false (default: false). Log login failures.<br />
710- <strong class='bold'>jar-file</strong>: Allows loading the user-manager class via a separate classloader, from an external jar file in the "plugins" dir. This should make it easier to handle custom implementations. If jar-file is omitted, the system classloader is used (as in all versions before 0.8.10).<br />
711<br />
712Example: <em class='italic'>&lt;user-manager class="com.bowman.cardserv.MySqlUserManager" allow-on-failure="true" log-failures="true"></em><br />
713<br />
714</a>
715
716<a name="user-manager/auth-config">
717<div class='indent'>user-manager/auth-config</div><br />
718This is the arbitrary configuration that is presented to the user manager implementation, it can contain anything the user manager needs. For the built in SimpleUserManager it will contain the actual user definitions.<br />
719<br />
720</a>
721
722<a name="user-manager/auth-config/open-access">
723<div class='indent'>user-manager/auth-config/open-access (attributes: enabled)</div><br />
724Allows optional open newcamd access for the SimpleUserManager (also works for the XmlUserManager). Logins that match the open criteria will have temporary users with a random name created on the fly, and these are only valid for newcamd access. The login name actually specified by the client is replaced with a semi-random string to make them all unique. I.e. use this if you don't want any usermanagement at all, or wish to use the same user/pass for all clients.<br />
725- <strong class='bold'>enabled</strong>: true/false (default: true). Set to false or remove the open-access element to disable.<br />
726<br />
727<strong>NOTE: </strong> The temporary users will be ignored by the "last-seen" log, and will have the display-name set to whatever they tried to login as.<br />
728<br />
729Example:<br />
730<em class='italic'>&lt;open-access enabled="true"><br />
731&nbsp;&nbsp;&lt;open-username-prefix>csp-&lt;/open-username-prefix><br />
732&nbsp;&nbsp;&lt;open-password>publicaccess&lt;/open-password><br />
733&nbsp;&nbsp;&lt;open-profiles>profile2 profile3&lt;/open-profiles><br />
734&lt;/open-access></em>
735<br />
736</a>
737
738<a name="user-manager/auth-config/open-access/open-username-prefix">
739<div class='indent'>user-manager/auth-config/open-access/open-username-prefix</div><br />
740Only allow open access if the login username starts with this string (remove or leave empty to allow any username).<br />
741<br />
742</a>
743
744<a name="user-manager/auth-config/open-access/open-password">
745<div class='indent'>user-manager/auth-config/open-access/open-password</div><br />
746The password all open user logins must use.<br />
747<br />
748</a>
749
750<a name="user-manager/auth-config/open-access/open-profiles">
751<div class='indent'>user-manager/auth-config/open-access/open-profiles</div><br />
752Optionally restricts open access to only the listed profile names (separated by space, remove or leave empty and open access will apply to all profiles).<br />
753<br />
754</a>
755
756<a name="user-manager/auth-config/user">
757<div class='indent'>user-manager/auth-config/user (attributes: *name, *password, display-name, ip-mask, profiles, max-connections, admin, enabled)</div><br />
758One user definition for the SimpleUserManager (also used by the XmlUserManager, see <strong>README.XmlUserManager.txt</strong> for more details):<br />
759- <strong class='bold'>name</strong>: User name, avoid long names, spaces and special characters. There are no particular limitations as far as the proxy is concerned, but the camd clients may have them.<br />
760- <strong class='bold'>password</strong>: Avoid special characters.<br />
761- <strong class='bold'>display-name</strong>: An optional non-unique alias for the user (used by the http/xml api). <br />
762- <strong class='bold'>ip-mask</strong>: Only allow connections from a particular ip or ip range, for this user. This applies only to the newcamd protocol, not http/xml. Masks can use glob wildcards (? *).<br />
763- <strong class='bold'>profiles</strong>: List of profiles that this user has access to, separated by space. If this is empty or omitted the user will have access to all defined profiles. <strong>NOTE: </strong> This is a performance safeguard, not an access control feature. It's there only to reduce the risk of users accidentally connecting to the wrong profile and poisoning the service mapper.<br />
764- <strong class='bold'>max-connections</strong>: Number of connections to allow, if the user exceeds this then any older existing connections will be closed. <strong>NOTE: </strong> as of 0.9.0 this has changed to max-connections per profile, meaning and old values will likely need to be changed. Since it is no longer the total number of connections, the value should now reflect the number of clients/boxes the user is expected to connect with (regardless of how many profiles the user has access to) .<br />
765- <strong class='bold'>admin</strong>: true/false (default: false). Is this user an administrator? Affects access to http/xml api features only.<br />
766- <strong class='bold'>enabled</strong>: true/false (default: true). Allows disabling of accounts without deleting them.<br />
767- <strong class='bold'>map-exclude</strong>: true/false (default: false). Set to true to prevent the user from causing changes to the service maps. If a particular user is sending bad ecms or is otherwise misbehaving, this will protect the service mappings and ensure no other users are affected. Only use this if you are sure a particular client is misbehaving, the service mapping can't work if no clients are allowed to update the map.<br />
768- <strong class='bold'>debug</strong>: true/false (default: false). Set to true to enable ecm/emm/zap logging for this user only (has no effect if these are already enabled globally).<br />
769<br />
770</a>
771
772<a name="connection-manager">
773<div class='indent'>connection-manager</div><br />
774This section deals with the connections to the CW servers, and everything related to that.<br />
775<br />
776</a>
777
778<a name="connection-manager/reconnect-interval">
779<div class='indent'>connection-manager/reconnect-interval</div><br />
780The interval between connection attempts (in seconds) for servers that are not are not connected. Applies to all CWS connectors. Minimum interval is 5 seconds (anything lower becomes 5).<br />
781<br />
782</a>
783
784<a name="connection-manager/max-cw-wait">
785<div class='indent'>connection-manager/max-cw-wait</div><br />
786If a CWS connection is congested or not responding, this defines the maximum wait time (in seconds, default: 9) for anything trying to get a CW reply, before aborting with a timeout (flag T). Under normal circumstances this should be set to the maximum time a client can wait for CW reply without experiencing a freeze (or 1 second above that). This is the default for all CWS connectors in all profiles.<br />
787<strong>NOTE: </strong> When using multi-context connectors (e.g csp-connector or chameleon-connector) the max-cw-wait in effect is always this global value, not the per profile one.<br />
788To determine a reasonable value for max-cw-wait, it is possible to use the test-delay feature in the LoggingPlugin. This can insert an artificial delay into the processing of requests for a specific test-user (source ip address). Increase the delay gradually until freezes occur for the test-user and note the total ecm time in the client logs when this happens, this is your max-cw-wait. Make sure the client ecm timeout is set high enough not to interfere with the result.<br />
789See <strong>README.Optimization.txt</strong> for more details.<br />
790<br />
791</a>
792
793<a name="connection-manager/default-des-key">
794<div class='indent'>connection-manager/default-des-key</div><br />
795The des key the proxy will use when connecting to a newcamd CWS, if nothing else is specified for a particular connector.<br />
796<br />
797Example: <em class='italic'>&lt;default-des-key>01 02 03 04 05 06 07 08 09 10 11 12 13 14&lt;/default-des-key></em> <br />
798<br />
799</a>
800
801<a name="connection-manager/default-keepalive-interval">
802<div class='indent'>connection-manager/default-keepalive-interval</div><br />
803If a newcamd CWS connection is inactive longer than this period (in seconds) the proxy will send a keep alive msg. <br />
804<br />
805<div class='indent'>connection-manager/default-client-id</div><br />
806The 2 bytes that identify a newcamd client on login (for newcs). Can be set to anything (as of 0.4.11). Use 00 00 or anything unknown to be identified as "generic". <strong>NOTE: </strong> avoid identifying as Mgcamd when connecting to newcs, as this will apparently cause newcs to switch to an incompatible variant of the protocol.<br />
807<br />
808Example: <em class='italic'>&lt;default-client-id>67 62&lt;/default-client-id> &lt;!-- identify as Gbox2CS --></em> <br />
809<br />
810</a>
811
812<a name="connection-manager/default-max-queue">
813<div class='indent'>connection-manager/default-max-queue</div><br />
814The maximum number of queued ecm requests that the proxy will allow to build up on one connector (default: 50). This is a safeguard limit to trap internal/os/network problems faster, if exceeded the proxy will assume something has gone wrong and disconnect the connector. The theoretical max queue that would make sense for a connector (assuming all reqs in the queue are unique) can be determined by: max-cw-wait / ideal-card-processing-time. <br />
815<br />
816Example: <em class='italic'>&lt;default-max-queue>60&lt;/default-max-queue></em> <br />
817<br />
818</a>
819
820<a name="connection-manager/default-min-delay">
821<div class='indent'>connection-manager/default-min-delay</div><br />
822Delay in ms inserted between consecutive ecms to one connector in async mode (default: 10). A workaround for servers that misbehave when requests are too close together, for example because their cpu is maxed out (happens on slow platforms with some newcs versions, the server would respond with the same exact reply multiple times in a row with the real ones being lost). <br />
823This means the card will appear slightly slower, but hopefully more stable. Has no effect on connectors in synchronous mode.<br />
824<br />
825Example: <em class='italic'>&lt;default-min-delay>30&lt;/default-min-delay></em> <br />
826<br />
827</a>
828
829<a name="connection-manager/timeout-disconnect-threshold">
830<div class='indent'>connection-manager/timeout-disconnect-threshold</div><br />
831The number of consecutive timeouts allowed to occur before a connector is closed and reconnect attempted (default: 2).<br />
832<br />
833</a>
834
835<a name="connection-manager/cannot-decode-wait">
836<div class='indent'>connection-manager/cannot-decode-wait</div><br />
837<strong>NOTE: </strong> This element is only applicable in custom setups with multiple proxies using ClusteredCache.<br /><br />
838This allows you to set a configurable delay when service mapping and connection-manager determine that there are no cards available that can decode a given ecm (or there are no cards at all). Instead of immediately responding with a cannot-decode reply, the proxy will wait the specified number of seconds and then check the cache again.<br />
839This increases the chances of a cache hit through sharing. It will have no effect on cache-only profiles since these always wait as long as possible, but if you're using cache sharing in combination with local cards you should try this and set it to 1-4 seconds.<br />
840<br />
841</a>
842
843<a name="connection-manager/congestion-limit">
844<div class='indent'>connection-manager/congestion-limit</div><br />
845The maximum estimated queue time on a connector before the proxy considers it to be congested, and tries to avoid using it (by instead using connectors that would normally be excluded due to a higher metric number). Value in seconds, must be between max-cw-wait/2 and max-cw-wait. Use with care, and primarily if you have many connectors with differing metric priority set.<br />
846<br />
847</a>
848
849<a name="connection-manager/hard-congestion-limit">
850<div class='indent'>connection-manager/hard-congestion-limit</div><br />
851true/false (default: true). If true, the proxy will block all forwards to congested connectors (or connectors in timeout states) until they are responding normally, even if there are no other alternatives available. The requests that would have been forwarded instead receive empty replies immediately (flag N), giving the client an opportunity for quick retries.<br />
852<br />
853</a>
854
855<a name="connection-manager/log-sid-mismatch">
856<div class='indent'>connection-manager/log-sid-mismatch</div><br />
857true/false (default: true). Log warnings if a server replies with a different sid compared to what was requested. This is usually a sign of errors that warrant further investigation, but could occur naturally (e.g when multiple services share the same ecm sequence). If you know it to be harmless, set this to false to disable the warnings.<br />
858<br />
859</a>
860
861<a name="connection-manager/delay-missing-sid">
862<div class='indent'>connection-manager/delay-missing-sid</div><br />
863Delay in millisecs (default: 100). This adds a short delay for any incoming request without sid, before the cache is checked. The idea is to increase the likelyhood of another
864request for the same ecm (but with sid specified) arriving first in the cache. This is to avoid having a large number of clients waiting in the cache for a forward that might get routed to the wrong card (because it had no sid).
865If you do have users that don't send sid, and this causes problems for them, just set it to 0.<br />
866</a>
867
868<a name="connection-manager/service-map">
869<div class='indent'>connection-manager/service-map</div><br />
870The service mapper keeps track of which cards can decode which services, and tries to keep this information up to date with a minimum of probing/trial &amp; error.<br />
871<strong>NOTE: </strong> See the end of <strong>README.txt</strong> for more information on service mapping. <br />
872<br />
873</a>
874
875<a name="connection-manager/service-map/mapper">
876<div class='indent'>connection-manager/service-map/mapper (attributes: enabled)</div><br />
877Default service mapper settings that apply to all profiles unless overridden.<br />
878- <strong class='bold'>enabled</strong>: true/false (default: true). Disabling service mapping means the proxy will no longer keep track of which cards can decode which services, but instead assume all cards are identical (and to only apply load balancing when selecting a card). Setting this attribute here determines the default state for all profiles that don't specify anything else.<br />
879<br />
880</a>
881
882<a name="connection-manager/service-map/mapper/cache-dir">
883<div class='indent'>connection-manager/service-map/mapper/cache-dir</div><br />
884Where to store the service-map (default: cache, relative to the proxy start dir). Not to be confused by the real time cache thats maintained by the cache-handler (and only kept in memory). Delete the .dat files in this dir and restart to clear all proxy knowledge of services on the cards.<br />
885<br />
886</a>
887
888<a name="connection-manager/service-map/mapper/cache-save-age">
889<div class='indent'>connection-manager/service-map/mapper/cache-save-age</div><br />
890Save the service-map to disk if it is older than this (age in seconds, default: 300). If no changes have occured it will not be saved.<br />
891<br />
892</a>
893
894<a name="connection-manager/service-map/mapper/auto-map-services">
895<div class='indent'>connection-manager/service-map/mapper/auto-map-services</div><br />
896true/false (default: true). If the mapper receives an ECM for a service where it lacks status info (i.e it doesn't know where this service can be decoded), this controls whether it should try to find out right away by sending the ECM to all cards with unknown status. This should probably always be set to true.<br />
897<br />
898</a>
899
900<a name="connection-manager/service-map/mapper/reset-services">
901<div class='indent'>connection-manager/service-map/mapper/reset-services</div><br />
902A list of service ids (hex integers, separated by space) that define services for which the proxy should not remember the state for each card. This can be PPV services or services with shared ids (i.e one service during day time and another at night). The service mapper will forget these services every hour, on the hour (as of 0.4.10).<br />
903It probably makes little sense to set this globally when you have more than one profile, as service ids are very likely to be profile-specific (see below for <a href="#connection-manager/service-map/mapper-override">overrides per profile</a>).<br />
904<br /><strong>NOTE: </strong> By listing services here, you're indicating to the proxy that you expect the decode-status for them to change over time - so you will no longer receive "lost service" warnings when they suddenly stop working. In fact seeing repeated lost service warnings for a specific service or group of services is a good indication that you should probably list them in reset-services.<br />
905<br />
906Example: <em class='italic'>&lt;reset-services>51f 520 515&lt;/reset-services></em> <br />
907<br />
908</a>
909
910<a name="connection-manager/service-map/mapper/allow-services">
911<div class='indent'>connection-manager/service-map/mapper/allow-services</div><br />
912A list of service ids (hex integers, separated by space). Inverse of block-services, only sids listed here will be forwarded to cards. If you know exactly which sids exist on the cards in the profile, use this to eliminate probing and also trap bad ecms (with bogus sids) before they get forwarded. I.e: Either set this to list <strong>all</strong> of the services the provider has, or don't use it at all (omit the element or keep it empty to disable the allow list).<br />
913It probably makes little sense to set this globally as service ids are likely to be profile-specific (see below for <a href="#connection-manager/service-map/mapper-override">overrides per profile</a>).<br />
914<br /><strong>NOTE: </strong> this is a performance tweak, not an access control feature! Blocked sids can still be watched by all users if they appear in the cache. By design the proxy has no limitations on what users can access, everything is meant to be fully available to everyone.<br />
915<br />
916Example: <em class='italic'>&lt;allow-services>44f 43b 456 45f 421 452 44e 458 43d 45e 43c 3fd&lt;/allow-services></em> <br />
917<br />
918</a>
919
920<a name="connection-manager/service-map/mapper/block-services">
921<div class='indent'>connection-manager/service-map/mapper/block-services</div><br />
922A list of service ids (hex integers, separated by space), that are known not to exist on any connected cards. <strong>NOTE: </strong> As of 0.9.0, if the system used in the profile has additional significant information besides just sids (such as provider-idents or irdeto-chids) this must also be specified, using this syntax: sid:ident, sid:chid, sid:ident:chid or sid:chid:ident (e.g: 0000:000000, 0000:0000, 0000:000000:0000 or 0000:0000:000000).<br /><br />
923Specifying them here will mean less probing, if users try to watch them (the proxy will return cannot decode instantly and not bother the cards). This can significantly reduce failure-traffic in large shares, recommended for all profiles with or without service mapping enabled.<br />
924It probably makes little sense to set this globally as service ids are likely to be profile-specific (see below for <a href="#connection-manager/service-map/mapper-override">overrides per profile</a>).<br />
925<br /><strong>NOTE: </strong> this is a performance tweak, not an access control feature! Blocked sids can still be watched by all users if they appear in the cache. By design the proxy has no limitations on what users can access, everything is meant to be fully available to everyone.<br />
926<br />
927Example: <em class='italic'>&lt;block-services>44f 43b 456 45f 421 452 44e 458 43d 45e 43c 3fd&lt;/block-services></em> <br />
928Example: <em class='italic'>&lt;block-services>0438:020500 038e:020500 03ca:020500 0384:020500 0488:020500 02e4:020500 03a2:020500&lt;/block-services></em> <br />
929<br />
930</a>
931
932<a name="connection-manager/service-map/mapper/dummy-services">
933<div class='indent'>connection-manager/service-map/mapper/dummy-services</div><br />
934Some clients who are unable to known the real sid (i.e typically hardware solutions) send fixed dummy sids instead of 0. To make sure these aren't treated as real sids by the service mapping, list any such dummy sids here.<br />
935<strong>NOTE: </strong> The first sid listed here will also be used when forwarding unknown sid request to connectors, so if you want unknown forwards to keep the sid 0 - set 0 as the first entry in this list.<br />
936<br />
937Example: <em class='italic'>&lt;dummy-services>101 1101&lt;/dummy-services></em> <br />
938</a>
939
940<a name="connection-manager/service-map/mapper/auto-reset-threshold">
941<div class='indent'>connection-manager/service-map/mapper/auto-reset-threshold</div><br />
942If the service mapper has determined that a particular service cannot be decoded by any card, but clients still keep sending ECM requests for it, this will determine how many such failures it would take before the mapper forgets the service status and tries all the cards again. Useful in case of glitches where services fail to decode for a short period (also see retry-lost-services). Setting a value too low could cause cards to be congested with probing, and setting it too high means users will have to wait longer before lost services are discovered again.<br />
943<br />
944</a>
945
946<a name="connection-manager/service-map/mapper/log-missing-sid">
947<div class='indent'>connection-manager/service-map/mapper/log-missing-sid</div><br />
948true/false (default: true). Log a warning for messages without SID. No SID means many of the proxy features won't work, and as of 0.6.2 clients that can't (or won't) include the SID will only work well in profiles where there is only one card connector (or where all cards have the same services). They may still function without obvious problems if they retry quickly upon receiving a cannot decode reply, but there is no guarantee that the proxy load balancing and service mapper will not route the requests to the same card repeatedly.<br />
949<br />
950</a>
951
952<a name="connection-manager/service-map/mapper/broadcast-missing-sid">
953<div class='indent'>connection-manager/service-map/mapper/broadcast-missing-sid</div><br />
954true/false (default: false). Enable this to have ecms without sid always forwarded to all non-congested connectors in the profile (as of 0.9.0 causing '2' flags for the affected transactions). Experimental: if there are many clients that cannot send sid, this will significantly increase traffic on the cards. Additionally, even if the broadcasting gets a valid reply the client may still have to perform at least one retry to get it.<br />
955<br />
956</a>
957
958<a name="connection-manager/service-map/mapper/redundant-forwarding">
959<div class='indent'>connection-manager/service-map/mapper/redundant-forwarding</div><br />
960true/false (default: false). If this is true, the proxy will pick two connectors for each forward instead of just one (assuming there are at least two available). The ideal candidate will still be considered the primary choice, but the secondary will also receive the same forward (triggering transaction flag '2').<br />
961Secondary forwards are treated like probes, they are only carried out if there is unused capacity. If the secondary forward gets a reply before the primary, the transaction will end up with the flags '2FC' since the result is obtained through the cache (in the statistics these will still be counted only as forwards however).<br />
962<strong>NOTE: </strong> This will significantly increase the load on connectors (up to double) but should improve reliability if you have issues with individual connectors failing sporadically or their network being unstable.
963<br />
964</a>
965
966<a name="connection-manager/service-map/mapper/retry-lost-services">
967<div class='indent'>connection-manager/service-map/mapper/retry-lost-services</div><br />
968true/false (default: true). Whenever the service-mapper registers a service lost from a card that could previously decode it, it will register a background probe to see if it returns.<br />
969The status for the service on the particular card in question will be reset with an increasing interval (doubles every time, starting at 5 minutes after it was lost and ending if it hasn't been found after 48 hours).
970Under normal circumstances, you probably want to keep this switched on, for all profiles with service-mapping enabled.<br />
971<strong>NOTE: </strong> This mainly helps when there are multiple cards in the profile, if there is only one then lost services would be found within minutes when someone tried to watch them, through the auto-reset-threshold.<br />
972<br />
973</a>
974
975<a name="connection-manager/service-map/mapper/hide-unknown-services">
976<div class='indent'>connection-manager/service-map/mapper/hide-unknown-services</div><br />
977true/false (default: false). Determines whether to hide services with no known names (sids that were not found in the services file for the profile) from the query api and hence the status web.<br />
978<strong>NOTE: </strong> If you're not using a services file, setting this to true would hide all services.
979<br />
980</a>
981
982<a name="connection-manager/service-map/mapper/hide-disabled-connectors">
983<div class='indent'>connection-manager/service-map/mapper/hide-disabled-connectors</div><br />
984true/false (default: false). Determines whether to hide disabled connectors from the query api and hence the status web.<br />
985<strong>NOTE: </strong> Disconnected or disabled connectors without a profile assigned will always be hidden regardless of this setting.
986<br />
987</a>
988
989<a name="connection-manager/service-map/mapper-override">
990<div class='indent'>connection-manager/service-map/mapper (attributes: *profile, enabled)</div><br />
991When you use the mapper element with a profile attribute set, it allows overriding of any of the above mapper settings for a specific profile.<br />
992- <strong class='bold'>profile</strong>: Name of the profiles that the overrides apply to, this profile must exist.<br />
993- <strong class='bold'>enabled</strong>: true/false (default: true). Enable/disable service mapping entirely for this profile.<br />
994<strong>NOTE: </strong> See the end of <strong>README.txt</strong> for more information on service mapping. <br />
995<br />
996Example:<br /><em class='italic'>&lt;mapper profile="providerX" enabled="true"> <br />
997&lt;reset-services>51f 520 515&lt;/reset-services><br />
998&lt;block-services>44f 43b 456 45f 421 452 44e 458 43d 45e 43c 3fd&lt;/block-services><br />
999&lt;/mapper> </em><br />
1000<br />
1001</a>
1002
1003<a name="connection-manager/external-connector-config">
1004<div class='indent'>connection-manager/external-connector-config (attributes: enabled)</div><br />
1005Allows loading additional connector definitions from an external or remotely hosted file/url, with automatic checks for changes at a set interval. The remote file must contain xml with connector definitions exactly like in the cws-connector element (see below), but contained in a top level element called: external-cws-connectors (see connectors.example.xml).<br />
1006Internally defined connectors take precedence over external ones, so if a connector in the external file has the same name as an already existing internal, it will be ignored.<br />
1007- <strong class='bold'>enabled</strong>: true/false (default: true). Disable/enable all external connectors and the auto fetch mechanism.<br />
1008<br />
1009</a>
1010
1011<a name="connection-manager/external-connector-config/connector-file-url">
1012<div class='indent'>connection-manager/external-connector-config/connector-file-url</div><br />
1013The url of the external connector file. Any valid url can be used, including https/ftp and user:passwd@hostname type auth info. File urls are also accepted.<br />
1014<br />
1015</a>
1016
1017<a name="connection-manager/external-connector-config/connector-file-key">
1018<div class='indent'>connection-manager/external-connector-config/connector-file-key</div><br />
1019Optional blowfish key. If this element is present, the connector file is assumed to have been encrypted using fishenc.jar and this key.<br />
1020<br />
1021</a>
1022
1023<a name="connection-manager/external-connector-config/update-interval">
1024<div class='indent'>connection-manager/external-connector-config/update-interval</div><br />
1025How often to check for changes in the connector file (in minutes). Only if changes are detected is the file fetched and installed.<br />
1026<br />
1027</a>
1028
1029<a name="connection-manager/cws-connectors">
1030<div class='indent'>connection-manager/cws-connectors</div><br />
1031This section contains the list of CW servers that the proxy should try to maintain a connection with.<br />
1032<br />
1033</a>
1034
1035<a name="connection-manager/cws-connectors/[newcamd-connector|radegast-connector]">
1036<div class='indent'>connection-manager/cws-connectors/[newcamd-connector|radegast-connector] (attributes: *name, profile, provider-idents, metric, enabled, qos-class, override-checks)</div><br />
1037Defines one newcamd or radegast CW server connection.<br />
1038- <strong class='bold'>name</strong>: Name of the connection. Just an arbitrary label to identify this particular card/cardserver, must be unique.<br />
1039- <strong class='bold'>profile</strong>: Which profile this connection belongs to. If this is not configured, the connector will only work if the card ca-id received on login matches the ca-id for exactly 1 defined profile (it will then be auto-assigned to this profile). In general profile should always be specified, and for radegast it is mandatory.<br />
1040- <strong class='bold'>provider-idents</strong>: Optional list of provider-idents (comma separated), overriding those this connector receives from the server. Only use this if you know the server is wrong, or need to exclude some unimportant idents to avoid them being associated with the profile. For radegast, this list is mandatory.<br />
1041- <strong class='bold'>metric</strong>: This is an integer value similar to interface metric used to determine preference when routing (here it is: 0 - 10, default 1). Lower is better. Take this scenario:<br /><br />
1042You have 4 cards, 2 stable ones on fast lan and 2 on wan. One of the wan cards is on a notoriously unstable connection. You want to make sure that the wan cards are only used when no other cards can decode the service, i.e force the load balacing to only use the lan cards whenever possible.
1043You give the lan cards a metric of "1", the stable wan card "2" and the unstable one "3". Only when absolutely necessary will the load balancer use a higher metric connector (when the services to be decoded exist only there, or when the other cards are overloaded and wouldn't be able to handle one more request in time).<br /><br />
1044- <strong class='bold'>enabled</strong>: true/false (default: true). Allows for disabling a connection without deleting it.<br />
1045- <strong class='bold'>qos-class</strong>: Integer value with the qos class to set for each outgoing connection (default: 16) or "none", to disable. Only disable or change this if the JVM fails to set the qos class (causing SocketExceptions with "Unrecognized option" when connecting).<br />
1046- <strong class='bold'>override-checks</strong>: true/false (default: false). Set to true to disable all validation of the card-data (only applies to newcamd). If you have problems with cards sometimes being disabled on connect you could try this, but usually that is an indication of a problem at the server end that should be investigated and eliminated there. It also allows you to force a connector into a profile even when the remote ca-id doesn't match.<br />
1047<br />
1048Example: <em class='italic'>&lt;newcamd-connector name="card3" profile="vendorX" metric="2" enabled="true"></em> <br />
1049Example: <em class='italic'>&lt;radegast-connector name="card4" profile="vendorY" provider-idents="00 00 00, 01 01 01, 02 02 02" enabled="true"></em> <br />
1050<br />
1051</a>
1052
1053<a name="connection-manager/cws-connectors/[newcamd-connector|radegast-connector]/host">
1054<div class='indent'>connection-manager/cws-connectors/[newcamd-connector|radegast-connector]/host</div><br />
1055Hostname or IP for the CW server.<br />
1056<br />
1057</a>
1058
1059<a name="connection-manager/cws-connectors/[newcamd-connector|radegast-connector]/port">
1060<div class='indent'>connection-manager/cws-connectors/[newcamd-connector|radegast-connector]/port</div><br />
1061TCP port for the CW server.<br />
1062<br />
1063</a>
1064
1065<a name="connection-manager/cws-connectors/[newcamd-connector|radegast-connector]/can-decode-services">
1066<div class='indent'>connection-manager/cws-connectors/[newcamd-connector|radegast-connector]/can-decode-services (attributes: exclusive, profile)</div><br />
1067Optional list of sids (hex) that the service mapper should always consider as decode'able on this connector, regardless of what the server actually returns. <br />
1068<strong>NOTE: </strong> As of 0.9.0, if the system used in the profile has additional significant information besides just sids (such as provider-idents or irdeto-chids) this must also be specified, using this syntax: sid:ident, sid:chid, sid:ident:chid or sid:chid:ident (e.g: 0000:000000, 0000:0000, 0000:000000:0000 or 0000:0000:000000).<br />
1069Under normal circumstances (with auto discovery working reliably) this element should not be used. To force auto-discovery of a service on a connector, use the reset commands on the status web (admin section) instead.<br />
1070- <strong class='bold'>exclusive</strong>: true/false (default: false). Set to true to indicate that no probing should be done for this connector, i.e that anything not explicitly listed in can-decode should be assumed to be cannot-decode.<br />
1071- <strong class='bold'>profile</strong>: Only applicable for multi-context connectors (chameleon-connector, csp-connector). Since these connector types have multiple profiles, it is necessary to indicate which profile each can-decode-services element is for (multiple lists supported).<br />
1072<br />
1073Example: <em class='italic'>&lt;can-decode-services exclusive="true">44f 43b 456 45f 421 452 44e 458 43d 45e 43c 3fd&lt;/can-decode-services></em> <br />
1074Example: <em class='italic'>&lt;can-decode-services>0438:020500 038e:020500 03ca:020500 0384:020500 0488:020500 02e4:020500 03a2:020500 0456:020500&lt;/can-decode-services></em> <br />
1075Example: <em class='italic'>&lt;can-decode-services profile="someprofile">421 452 44e 458&lt;/can-decode-services></em> <br />
1076<br />
1077</a>
1078
1079<a name="connection-manager/cws-connectors/[newcamd-connector|radegast-connector]/cannot-decode-services">
1080<div class='indent'>connection-manager/cws-connectors/[newcamd-connector|radegast-connector]/cannot-decode-services (attributes: profile)</div><br />
1081Optional list of sids (hex) that the service mapper shouldn't bother looking for on this connector. <strong>NOTE: </strong>If the mapper has already auto-discovered a service on this connector, listing it here will not block it until old status has been cleared (either through a manual service reset via the status web or by deleting the .dat cache entirely for the profile, and restarting the proxy).<br />
1082Under normal circumstances (with auto discovery working reliably) this element should not be used. To block services entirely for the whole profile, use the block-services element instead.<br />
1083- <strong class='bold'>profile</strong>: Only applicable for multi-context connectors (chameleon-connector, csp-connector). Since these connector types have multiple profiles, it is necessary to indicate which profile each can-decode-services element is for (multiple lists supported).<br />
1084<br />
1085</a>
1086
1087<a name="connection-manager/cws-connectors/newcamd-connector/userpass">
1088<div class='indent'>connection-manager/cws-connectors/newcamd-connector/user &amp; pass</div><br />
1089Credentials that the proxy will use when logging in to the CW server.<br />
1090<br />
1091</a>
1092
1093<a name="connection-manager/cws-connectors/newcamd-connector/des-key">
1094<div class='indent'>connection-manager/cws-connectors/newcamd-connector/des-key</div><br />
1095Des key for the CW connection, overriding the default-des-key.<br />
1096<br />
1097</a>
1098
1099<a name="connection-manager/cws-connectors/newcamd-connector/keepalive-interval">
1100<div class='indent'>connection-manager/cws-connectors/newcamd-connector/keepalive-interval</div><br />
1101Keep-alive interval, overriding the default-keepalive-interval.<br />
1102<br />
1103</a>
1104
1105<a name="connection-manager/cws-connectors/newcamd-connector/client-id">
1106<div class='indent'>connection-manager/cws-connectors/newcamd-connector/client-id</div><br />
1107Client id bytes for newcs identification, overriding the default-client-id.<br />
1108<br />
1109</a>
1110
1111<a name="connection-manager/cws-connectors/newcamd-connector/au-users">
1112<div class='indent'>connection-manager/cws-connectors/newcamd-connector/au-users</div><br />
1113List of user names allowed to update the card hosted by this connector (separated by space). All EMMs sent to the proxy by these users will be forwarded to this connector.<br />
1114One user can only update a single card (per profile). If you want to use a single box/client to update multiple cards, you need to create several user accounts and have the client connect once for each account (the sessions will receive different card-data depending on the user name). Not all clients support multiple connections to the same server with only different login credentials to separate them.<br />
1115<strong>NOTE: </strong> As of 0.9.0, changes to this element will take effect immediately (existing sessions for affected users will be kicked if needed). Additionally, the target connector for any given au-session is shown by name in the sessions list (emm count column).<br />
1116<br />
1117Example: <em class='italic'>&lt;au-users>testuser1 testuser2&lt;/au-users></em> <br />
1118<br />
1119</a>
1120
1121<a name="connection-manager/cws-connectors/newcamd-connector/asynchronous">
1122<div class='indent'>connection-manager/cws-connectors/newcamd-connector/asynchronous</div><br />
1123true/false (default: false). Determines whether to use asynchronous mode. This can greatly increase efficiency for a connector, since all pending requests are sent immediately to the server, rather than sending one at a time and waiting for a response before sending again. Unless the server fails somehow when in asynchronous mode, set this to true.<br />
1124See <strong>README.Optimization.txt</strong> for more details.<br />
1125<br />
1126</a>
1127
1128<a name="connection-manager/cws-connectors/newcamd-connector/caid-profile-map">
1129<div class='indent'>connection-manager/cws-connectors/newcamd-connector/caid-profile-map</div><br />
1130If no profile is set for the connector, that implies you don't know what card will be at the server end (or the card changes randomly over time) and you wish the card to be assigned to a profile automatically based on ca-id.<br />
1131This element allows you to specify a mapping table, with entries like "caid=profilename" that tells the proxy what to do depending on which remote card it finds when connecting. If a card is found with a ca-id that isn't in your map, the connector will enter its reconnect loop and remain offline until the card changes.<br />
1132<br />
1133Example: <em class='italic'>&lt;caid-profile-map>0b00=cable 0500=terrestrial&lt;/caid-profile-map></em> <br />
1134<br />
1135</a>
1136
1137<a name="connection-manager/cws-connectors/csp-connector">
1138<div class='indent'>connection-manager/cws-connectors/csp-connector (attributes: *name, metric, enabled, qos-class)</div><br />
1139Defines one csp connection (to another proxy). Note that these differ from the other connector types in that they do not have a profile association, they're always bound to all profiles (or rather, those profiles that have a correct network-id and ca-id set, the rest are ignored).<br />
1140Csp-connections are established using the httpd of the target proxy, but then switches to a fully asynchronous protocol (while keeping the same connection, so ssl remains if enabled). The service mapper states of remote proxies connected in this way will be communicated automatically on connect (and as changes occur).<br />
1141Each proxy is assigned a random id every time it is restarted, that is used to prevent loops where ecm requests end up forwarded back to the proxy that originally received it.<br />
1142A remote context received through a csp-connector is not relayed. E.g: if you connect one proxy to another with csp-connect, you will only see the locally defined connectors there (not anything it may have received from another csp/chameleon-connection of its own).<br />
1143<strong>NOTE: </strong> If the user account at the target proxy has profile restrictions, the connector will not see all available network-ids, just the ones allowed by the remote user-manager.<br /><br />
1144- <strong class='bold'>name</strong>: Name of the connection. Just an arbitrary label to identify this particular proxy connection, must be unique.<br />
1145- <strong class='bold'>metric</strong>: This is an integer value similar to interface metric used to determine preference when routing (here it is: 0 - 10, default 1).<br />
1146- <strong class='bold'>enabled</strong>: true/false (default: true). Allows for disabling a connection without deleting it.<br />
1147- <strong class='bold'>qos-class</strong>: Integer value with the qos class to set for each outgoing connection (default: 16) or "none", to disable. Only disable or change this if the JVM fails to set the qos class (causing SocketExceptions with "Unrecognized option" when connecting).<br />
1148<br />
1149Example: <em class='italic'>&lt;csp-connector name="otherproxy" enabled="true"></em> <br />
1150<br />
1151</a>
1152
1153<a name="connection-manager/cws-connectors/csp-connector/url">
1154<div class='indent'>connection-manager/cws-connectors/csp-connector/url</div><br />
1155Url to connect to (i.e the root location of the status web for the remote proxy). If ssl is enabled at the remote proxy (recommended), this will be a https url. <br />
1156<strong>NOTE: </strong>Do not attempt to specify the login credentials in the url, use the separate user/password elements for this.<br />
1157<br />
1158Example: <em class='italic'>&lt;url>https://remote.proxy.com:8443&lt;/url></em> <br />
1159<br />
1160</a>
1161
1162<a name="connection-manager/cws-connectors/csp-connector/url-backup">
1163<div class='indent'>connection-manager/cws-connectors/csp-connector/url-backup</div><br />
1164Optional: Url to the backup mirror of the remote proxy. This is just a shortcut that results in defining two connectors with one config. The backup is given the same name as the primary, but with the suffix "-backup". All other settings will be the same for the backup-connector (so the user account must exist on both target proxies).<br />
1165<br />
1166Example: <em class='italic'>&lt;url-backup>https://backup.proxy.com:8443&lt;/url-backup></em> <br />
1167<br />
1168</a>
1169
1170<a name="connection-manager/cws-connectors/csp-connector/request-cache-updates">
1171<div class='indent'>connection-manager/cws-connectors/csp-connector/request-cache-updates</div><br />
1172If true (default false), sends the local ClusteredCache port to the remote proxy on connect. If it is also using ClusteredCache it will send udp cache updates to this port (for all its locally processed traffic, so may be bandwidth intensive over time).<br />
1173<br />
1174</a>
1175
1176<a name="connection-manager/cws-connectors/csp-connector/exclude-profiles">
1177<div class='indent'>connection-manager/cws-connectors/csp-connector/exclude-profiles</div><br />
1178List of profile names that should not be mapped for this connector, even when their network-id + ca-id match.<br />
1179<br />
1180</a>
1181
1182<a name="connection-manager/cws-connectors/chameleon-connector">
1183<div class='indent'>connection-manager/cws-connectors/chameleon-connector (attributes: *name, metric, enabled, qos-class)</div><br />
1184Defines one extended newcamd connection specifically for accessing multiple systems in one session (as supported by newcs/mgcamd). Despite the name, this does not use the chameleon protocol. It only uses the same newcamd extensions that allows mgcamd to access multiple cards from one newcs (this newcs in turn then uses chameleon2 to connect to to other newcs instances).<br />
1185Note that these differ from the other connector types in that they do not have a profile association, they're always bound to all profiles (or rather, those profiles that have a correct network-id and ca-id set, the rest are ignored).<br /><br />
1186For chameleon-connector, there is an additional requirement in that the profiles must have provider-ident lists associated with them (either from manually specifying them using the 'provider-ident' attribute introduced in 0.9.0, or from live connectors to actual cards that are bound to the profile).<br />
1187A list of ca-ids and provider-idents is returned from newcs to this type of connector, and only those ca-id/ident pairs that can be mapped to exactly one (1) profile will actually be used by the proxy. The rest will be ignored (but visible in the remote-properties for the connector, in the status web). <br /><br />
1188<strong>NOTE: </strong>If you have profiles without active connectors and would like to map them to what is available through a chameleon-connector, you must manually list all the provider-idents that are relevant for the profile using the provider-ident attribute (so you have to know which ones are on the cards). <br />
1189<br />
1190- <strong class='bold'>name</strong>: Name of the connection. Just an arbitrary label to identify this particular newcs connection, must be unique.<br />
1191- <strong class='bold'>metric</strong>: This is an integer value similar to interface metric used to determine preference when routing (here it is: 0 - 10, default 1).<br />
1192- <strong class='bold'>enabled</strong>: true/false (default: true). Allows for disabling a connection without deleting it.<br />
1193- <strong class='bold'>qos-class</strong>: Integer value with the qos class to set for each outgoing connection (default: 16) or "none", to disable. Only disable or change this if the JVM fails to set the qos class (causing SocketExceptions with "Unrecognized option" when connecting).<br />
1194<br />
1195Example: <em class='italic'>&lt;chameleon-connector name="newcs" enabled="true"></em> <br />
1196<br />
1197</a>
1198
1199<a name="connection-manager/cws-connectors/chameleon-connector/profiles">
1200<div class='indent'>connection-manager/cws-connectors/chameleon-connector/profiles</div><br />
1201Optional list of profile names that should not be mapped for this connector (use this to avoid ambigious situations when there are multiple profiles using the same ca-id/ident pairs).<br />
1202<br />
1203</a>
1204
1205<a name="proxy-plugins">
1206<div class='indent'>proxy-plugins</div><br />
1207Allows for custom-written arbitrary plugins. See <strong>README.Plugins.txt</strong> for a description of the plugin api.<br />
1208<br />
1209</a>
1210
1211<a name="proxy-plugins/plugin">
1212<div class='indent'>proxy-plugins/plugin (attributes: *class, enabled)</div><br />
1213Defines one plugin for the proxy to load.<br />
1214- <strong class='bold'>class</strong>: Java class name for the plugin. A plugin must implement the interface com.bowman.cardserv.interfaces.ProxyPlugin. See the example LoggingPlugin for tips.<br />
1215- <strong class='bold'>enabled</strong>: true/false (default: true). Allows enabling/disabling plugins while running.<br />
1216- <strong class='bold'>jar-file</strong>: Allows loading the plugin using a separate classloader, from an external jar file in the "plugins" dir. This way plugins can be replaced/reloaded at runtime without restarting the proxy (they are reloaded and restarted each time the proxy.xml config is touched/updated).<br />
1217<br />
1218Example: <em class='italic'>&lt;plugin class="com.bowman.cardserv.LoggingPlugin" enabled="true"></em> <br />
1219<br />
1220</a>
1221
1222<a name="proxy-plugins/plugin/plugin-config">
1223<div class='indent'>proxy-plugins/plugin/plugin-config</div><br />
1224This is the arbitrary configuration that is supplied to the plugin, it may contain anything the plugin needs to do whatever it is that it does. If the plugin requires no special config (or if the defaults suffice), this can be omitted entirely.<br />
1225<br />
1226</a>
1227
1228<a name="cache-handler">
1229<div class='indent'>cache-handler (attributes: *class, jar-file)</div><br />
1230The cache handler is responsible for keeping track of which ECM's have been sent to cards and are currently awaiting CW, and for which ECM's the CW is already known. Exactly how to achieve this with maximum efficiency and error-handling is non-trivial so the entire cache implementation can be replaced with a customized version.<br />
1231- <strong class='bold'>class</strong>: Java class name for the cache class. It must implement the interface com.bowman.cardserv.interfaces.CacheHandler.<br />
1232- <strong class='bold'>jar-file</strong>: Allows loading the cache class via a separate classloader, from an external jar file in the "plugins" dir. This should make it easier to handle custom implementations. If jar-file is omitted, the system classloader is used (as in all versions before 0.8.10).<br />
1233<br />
1234</a>
1235
1236<a name="cache-handler/cache-config">
1237<div class='indent'>cache-handler/cache-config</div><br />
1238This is the configuration supplied to the cache handler implementation, it can contain anything that the handler wants to make configurable.<br />
1239<br />
1240<br />
1241There are two example cache implementations built in:<br />
1242<strong class='bold'>com.bowman.cardserv.DefaultCache</strong> - standard simple cache<br />
1243<strong class='bold'>com.bowman.cardserv.ClusteredCache</strong> - same as default but with realtime remote sharing over udp<br />
1244See the example proxy-full.xml and <strong>README.ClusteredCache.txt</strong> for details on the various ways to configure the ClusteredCache.<br />
1245<br />
1246</a>
1247
1248<a name="cache-handler/cache-config/cw-max-age">
1249For the built in default cache the following settings are available:<br />
1250<br />
1251
1252<div class='indent'>cache-handler/cache-config/cw-max-age</div><br />
1253The maximum age (in seconds) of an ECM -> CW mapping in the cache, before it can be deleted. In typical circumstances it would make sense to keep them at least 10-20 seconds.<br />
1254<br />
1255</a>
1256
1257<a name="cache-handler/cache-config/max-cache-wait">
1258<div class='indent'>cache-handler/cache-config/max-cache-wait</div><br />
1259The maximum time (in seconds) that a client can be kept waiting in the cache for a pending request.<br />
1260<strong>NOTE: </strong> As of 0.9.0, this can also be configured with a percentage string, e.g "50%" to indicate a max-cache-wait of 50% of the max-cw-wait for the request. This makes more sense when using profiles with radically different max-cw-waits in the same proxy (e.g some with 9 seconds and others with 650 ms).<br />
1261See <strong>README.Optimization.txt</strong> for more details.<br />
1262<br />
1263The clustered cache (which is an extension of the default cache) has many additional settings, see <strong>README.ClusteredCache.txt</strong> for full docs.<br />
1264<br />
1265</a>
1266<br/>
1267</body>
1268</html>
Note: See TracBrowser for help on using the repository browser.