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

Last change on this file since 172 was 172, checked in by merek, 12 years ago

Backporting start and expiration date feature from branch

File size: 118.1 KB
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "">
2<html xmlns="">
4<title>Cardservproxy 0.9.1 Proxy.xml</title>
5<style type="text/css">
6 /* <![CDATA[ */
7body {
8 font: 12px verdana, tahoma, arial, helvetica, sans-serif;
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;
18 /* ]]> */
22Here's a run through of all the settings for <strong class='bold'>cardservproxy 0.9.1</strong>, in the recommended order.<br />
23<br />
24An element path such as "connection-manager/service-map/mapper/<strong>reset-services</strong>" means the following element in proxy.xml: <br />
25<br />
26<em class='italic'>&lt;cardserv-proxy><br />
27 &lt;connection-manager><br />
28 &nbsp;&nbsp;&nbsp;&nbsp;&lt;service-map><br />
29 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;mapper><br />
30 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;<strong>reset-services/></strong><br />
31 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/mapper><br />
32 &nbsp;&nbsp;&nbsp;&nbsp;&lt;/service-map><br />
33 &lt;/connection-manager><br />
34 &lt;/cardserv-proxy>
35</em><br />
36<br />Attributes marked with * are mandatory.<br />
37<br />
38Glossary:<br />
39- <strong class='bold'>DVB</strong>: Digital video broadcasting, <a href=""></a><br />
40- <strong class='bold'>CA (DVB-CA, EMM, ECM) </strong>: Conditional Access, <a href=""></a><br />
41- <strong class="bold">TS</strong>: Transport stream, <a href=""></a><br />
42- <strong class='bold'>CWS</strong>: Codeword server, aka cardserver. The server application (e.g newcs) that accept client connections and manages card communication.<br />
43- <strong class='bold'>XML (element, attribute, xpath)</strong>: <a href=""></a><br />
44- <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 />
45- <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 />
46- <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 />
47 <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 />
48<br />
50Contents (element paths in <strong>bold</strong> represent common changes, anything else can be considered advanced tweaking):<br />
52<li><a href="#cardserv-proxy">/cardserv-proxy (attributes: *ver)</a></li>
53<li><a href="#ca-profiles">ca-profiles</a></li>
55<li><a href="#ca-profiles/default-des-key"><strong>ca-profiles/default-des-key</strong></a></li>
56<li><a href="#ca-profiles/default-deny-list">ca-profiles/default-deny-list</a></li>
57<li><a href="#ca-profiles/max-threads">ca-profiles/max-threads</a></li>
58<li><a href="#ca-profiles/session-timeout">ca-profiles/session-timeout</a></li>
59<li><a href="#ca-profiles/session-keepalive">ca-profiles/session-keepalive (attributes: exclude-clients)</a></li>
60<li><a href="#ca-profiles/newcamd-maxmsgsize">ca-profiles/newcamd-maxmsgsize</a></li>
61<li><a href="#ca-profiles/block-caid-mismatch">ca-profiles/block-caid-mismatch</a></li>
62<br />
63<li><a href="#ca-profiles/extended-newcamd"><strong>ca-profiles/extended-newcamd (attributes: *listen-port, bind-ip, enabled, debug)</strong></a></li>
65 <li><a href="#ca-profiles/extended-newcamd/des-key">extended-newcamd/des-key</a></li>
66 <li><a href="#ca-profiles/extended-newcamd/exclude-profiles"><strong>extended-newcamd/exclude-profiles</strong></a></li>
67 <li><a href="#ca-profiles/extended-newcamd/main-ca-id">extended-newcamd/main-ca-id</a></li>
68 <li><a href="#ca-profiles/profile/[newcamd|radegast]/allow-list">extended-newcamd/allow-list</a></li>
69 <li><a href="#ca-profiles/profile/[newcamd|radegast]/deny-list">extended-newcamd/deny-list</a></li>
71<br />
72<li><a href="#ca-profiles/profile"><strong>ca-profiles/profile (attributes: *name, ca-id, network-id, enabled, debug, cache-only, provider-idents, require-provider-match)</strong></a></li>
74 <li><a href="#ca-profiles/profile/newcamd"><strong>profile/newcamd (attributes: *listen-port, bind-ip)</strong></a></li>
75 <ul>
76 <li><a href="#ca-profiles/profile/newcamd/des-key">newcamd/des-key</a></li>
77 <li><a href="#ca-profiles/profile/newcamd/card-data">newcamd/card-data (attributes: *type, name, ca-id, override-au)</a></li>
78 <ul>
79 <li><a href="#ca-profiles/profile/newcamd/card-data/provider-idents">card-data/provider-idents</a></li>
80 </ul>
81 <li><a href="#ca-profiles/profile/newcamd/no-encryption">newcamd/no-encryption</a></li>
82 <li><a href="#ca-profiles/profile/newcamd/no-validation">newcamd/no-validation</a></li>
83 <li><a href="#ca-profiles/profile/[newcamd|radegast]/allow-list">newcamd/allow-list</a></li>
84 <li><a href="#ca-profiles/profile/[newcamd|radegast]/deny-list">newcamd/deny-list</a></li>
85 </ul>
86 <li><a href="#ca-profiles/profile/radegast">profile/radegast (attributes: *listen-port, bind-ip, sid-in-0x21)</a></li>
87 <ul>
88 <li><a href="#ca-profiles/profile/[newcamd|radegast]/allow-list">radegast/allow-list</a></li>
89 <li><a href="#ca-profiles/profile/[newcamd|radegast]/deny-list">radegast/deny-list</a></li>
90 </ul>
91 <li><a href="#ca-profiles/profile/services-file"><strong>profile/services-file (attributes: format, filter)</strong></a></li>
92 <li><a href="#ca-profiles/profile/max-cw-wait"><strong>profile/max-cw-wait</strong></a></li>
93 <li><a href="#ca-profiles/profile/congestion-limit">profile/congestion-limit</a></li>
96<br />
97<li><a href="#logging"><strong>logging (attributes: log-ecm, log-emm, log-zapping, hide-ip-addresses)</strong></a></li>
99 <li><a href="#logging/log-file">logging/log-file (attributes: rotate-count, rotate-max-size)</a></li>
100 <li><a href="#logging/log-level"><strong>logging/log-level</strong></a></li>
101 <li><a href="#logging/silent">logging/silent</a></li>
102 <li><a href="#logging/debug">logging/debug</a></li>
103 <li><a href="#logging/warning-threshold">logging/warning-threshold (attributes: *bad-flags, *max-delay, include-file-events)</a></li>
104 <li><a href="#logging/event-threshold">logging/event-threshold (attributes: *min-count)</a></li>
106<br />
107<li><a href="#rmi">rmi (attributes: enabled)</a></li>
109 <li><a href="#rmi/allowed-ip-masks">rmi/allowed-ip-masks</a></li>
110 <li><a href="#rmi/registry-port">rmi/registry-port</a></li>
111 <li><a href="#rmi/local-port">rmi/local-port</a></li>
112 <li><a href="#rmi/local-name">rmi/local-name</a></li>
113 <li><a href="#rmi/display-name">rmi/display-name</a></li>
114 <li><a href="#rmi/status-web">rmi/status-web (attributes: enabled)</a></li>
115 <ul>
116 <li><a href="#rmi/status-web/listen-port"><strong>status-web/listen-port</strong></a></li>
117 <li><a href="#rmi/status-web/bind-ip">status-web/bind-ip</a></li>
118 <li><a href="#rmi/status-web/ssl">status-web/ssl (attributes: enabled)</a></li>
119 <ul>
120 <li><a href="#rmi/status-web/ssl/keystore">ssl/keystore (attributes: *password)</a></li>
121 </ul>
122 <li><a href="#rmi/status-web/csp-connect">status-web/csp-connect (attributes: enabled, debug)</a></li>
123 <li><a href="#rmi/status-web/war-file">status-web/war-file</a></li>
124 <li><a href="#rmi/status-web/welcome-file">status-web/welcome-file</a></li>
125 <li><a href="#rmi/status-web/log-file">status-web/log-file (attributes: rotate-count, rotate-max-size)</a></li>
126 <li><a href="#rmi/status-web/super-users"><strong>status-web/super-users</strong></a></li>
127 </ul>
129<br />
130<li><a href="#user-manager">user-manager (attributes: *class, allow-on-failure, allow-different-ip, log-failures)</a></li>
131 <ul>
132 <li><a href="#user-manager/auth-config">user-manager/auth-config</a></li>
133 <ul>
134 <li><a href="#user-manager/auth-config/open-access">auth-config/open-access (attributes: enabled)</a></li>
135 <ul>
136 <li><a href="#user-manager/auth-config/open-access/open-username-prefix">open-access/open-username-prefix</a></li>
137 <li><a href="#user-manager/auth-config/open-access/open-password">open-access/open-password</a></li>
138 <li><a href="#user-manager/auth-config/open-access/open-profiles">open-access/open-profiles</a></li>
139 </ul>
140 <li><a href="#user-manager/auth-config/user"><strong>auth-config/user (attributes: *name, *password, display-name, ip-mask, profiles, max-connections, admin, enabled)</strong></a></li>
141 </ul>
142 </ul>
143<br />
144<li><a href="#connection-manager">connection-manager</a></li>
145 <ul>
146 <li><a href="#connection-manager/reconnect-interval">connection-manager/reconnect-interval</a></li>
147 <li><a href="#connection-manager/max-cw-wait"><strong>connection-manager/max-cw-wait</strong></a></li>
148 <li><a href="#connection-manager/default-des-key"><strong>connection-manager/default-des-key</strong></a></li>
149 <li><a href="#connection-manager/default-keepalive-interval">connection-manager/default-keepalive-interval</a></li>
150 <li><a href="#connection-manager/default-max-queue">connection-manager/default-max-queue</a></li>
151 <li><a href="#connection-manager/default-min-delay">connection-manager/default-min-delay</a></li>
152 <li><a href="#connection-manager/timeout-disconnect-threshold">connection-manager/timeout-disconnect-threshold</a></li>
153 <li><a href="#connection-manager/cannot-decode-wait">connection-manager/cannot-decode-wait</a></li>
154 <li><a href="#connection-manager/congestion-limit">connection-manager/congestion-limit</a></li>
155 <li><a href="#connection-manager/hard-congestion-limit">connection-manager/hard-congestion-limit</a></li>
156 <li><a href="#connection-manager/log-sid-mismatch">connection-manager/log-sid-mismatch</a></li>
157 <li><a href="#connection-manager/delay-missing-sid">connection-manager/delay-missing-sid</a></li>
158 <li><a href="#connection-manager/service-map">connection-manager/service-map</a></li>
159 <ul>
160 <li><a href="#connection-manager/service-map/mapper">service-map/mapper (attributes: enabled)</a></li>
161 <ul>
162 <li><a href="#connection-manager/service-map/mapper/cache-dir">mapper/cache-dir</a></li>
163 <li><a href="#connection-manager/service-map/mapper/cache-save-age">mapper/cache-save-age</a></li>
164 <li><a href="#connection-manager/service-map/mapper/auto-map-services">mapper/auto-map-services</a></li>
165 <li><a href="#connection-manager/service-map/mapper/reset-services"><strong>mapper/reset-services</strong></a></li>
166 <li><a href="#connection-manager/service-map/mapper/allow-services"><strong>mapper/allow-services</strong></a></li>
167 <li><a href="#connection-manager/service-map/mapper/block-services"><strong>mapper/block-services</strong></a></li>
168 <li><a href="#connection-manager/service-map/mapper/dummy-services">mapper/dummy-services</a></li>
169 <li><a href="#connection-manager/service-map/mapper/auto-reset-threshold">mapper/auto-reset-threshold</a></li>
170 <li><a href="#connection-manager/service-map/mapper/log-missing-sid">mapper/log-missing-sid</a></li>
171 <li><a href="#connection-manager/service-map/mapper/broadcast-missing-sid">mapper/broadcast-missing-sid</a></li>
172 <li><a href="#connection-manager/service-map/mapper/redundant-forwarding">mapper/redundant-forwarding</a></li>
173 <li><a href="#connection-manager/service-map/mapper/retry-lost-services">mapper/retry-lost-services</a></li>
174 <li><a href="#connection-manager/service-map/mapper/hide-unknown-services">mapper/hide-unknown-services</a></li>
175 <li><a href="#connection-manager/service-map/mapper/hide-disabled-connectors">mapper/hide-disabled-connectors</a></li>
176 </ul>
177 <li><a href="#connection-manager/service-map/mapper-override"><strong>service-map/mapper (attributes: *profile, enabled)</strong></a></li>
178 </ul>
179 <br />
180 <li><a href="#connection-manager/external-connector-config">connection-manager/external-connector-config (attributes: enabled)</a></li>
181 <ul>
182 <li><a href="#connection-manager/external-connector-config/connector-file-url">external-connector-config/connector-file-url</a></li>
183 <li><a href="#connection-manager/external-connector-config/connector-file-key">external-connector-config/connector-file-key</a></li>
184 <li><a href="#connection-manager/external-connector-config/update-interval">external-connector-config/update-interval</a></li>
185 </ul>
186 <br />
187 <li><a href="#connection-manager/cws-connectors">connection-manager/cws-connectors</a></li>
188 <ul>
189 <li><a href="#connection-manager/cws-connectors/[newcamd-connector|radegast-connector]"><strong>cws-connectors/newcamd-connector (attributes: *name, profile, provider-idents, metric, enabled, qos-class, override-checks)</strong></a></li>
190 <ul>
191 <li><a href="#connection-manager/cws-connectors/[newcamd-connector|radegast-connector]/host">newcamd-connector/host</a></li>
192 <li><a href="#connection-manager/cws-connectors/[newcamd-connector|radegast-connector]/port">newcamd-connector/port</a></li>
193 <li><a href="#connection-manager/cws-connectors/[newcamd-connector|radegast-connector]/can-decode-services">newcamd-connector/can-decode-services (attributes: exclusive, profile)</a></li>
194 <li><a href="#connection-manager/cws-connectors/[newcamd-connector|radegast-connector]/cannot-decode-services">newcamd-connector/cannot-decode-services (attributes: profile)</a></li>
195 <li><a href="#connection-manager/cws-connectors/newcamd-connector/userpass">newcamd-connector/user &amp; pass</a></li>
196 <li><a href="#connection-manager/cws-connectors/newcamd-connector/des-key">newcamd-connector/des-key</a></li>
197 <li><a href="#connection-manager/cws-connectors/newcamd-connector/keepalive-interval">newcamd-connector/keepalive-interval</a></li>
198 <li><a href="#connection-manager/cws-connectors/newcamd-connector/client-id">newcamd-connector/client-id</a></li>
199 <li><a href="#connection-manager/cws-connectors/newcamd-connector/au-users">newcamd-connector/au-users</a></li>
200 <li><a href="#connection-manager/cws-connectors/newcamd-connector/asynchronous">newcamd-connector/asynchronous</a></li>
201 <li><a href="#connection-manager/cws-connectors/newcamd-connector/caid-profile-map">newcamd-connector/caid-profile-map</a></li>
202 </ul>
203 <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>
204 <ul>
205 <li><a href="#connection-manager/cws-connectors/[newcamd-connector|radegast-connector]/host">radegast-connector/host</a></li>
206 <li><a href="#connection-manager/cws-connectors/[newcamd-connector|radegast-connector]/port">radegast-connector/port</a></li>
207 <li><a href="#connection-manager/cws-connectors/[newcamd-connector|radegast-connector]/can-decode-services">radegast-connector/can-decode-services (attributes: exclusive)</a></li>
208 <li><a href="#connection-manager/cws-connectors/[newcamd-connector|radegast-connector]/cannot-decode-services">radegast-connector/cannot-decode-services</a></li>
209 </ul>
210 <li><a href="#connection-manager/cws-connectors/csp-connector"><strong>cws-connectors/csp-connector (attributes: *name, metric, enabled, qos-class)</strong></a></li>
211 <ul>
212 <li><a href="#connection-manager/cws-connectors/csp-connector/url">csp-connector/url</a></li>
213 <li><a href="#connection-manager/cws-connectors/csp-connector/url-backup">csp-connector/url-backup</a></li>
214 <li><a href="#connection-manager/cws-connectors/newcamd-connector/userpass">csp-connector/user &amp; pass</a></li>
215 <li><a href="#connection-manager/cws-connectors/csp-connector/request-cache-updates">csp-connector/request-cache-updates</a></li>
216 <li><a href="#connection-manager/cws-connectors/csp-connector/exclude-profiles">csp-connector/exclude-profiles</a></li>
217 </ul>
218 <li><a href="#connection-manager/cws-connectors/chameleon-connector">cws-connectors/chameleon-connector (attributes: *name, metric, enabled, qos-class)</a></li>
219 <ul>
220 <li><a href="#connection-manager/cws-connectors/[newcamd-connector|radegast-connector]/host">chameleon-connector/host</a></li>
221 <li><a href="#connection-manager/cws-connectors/[newcamd-connector|radegast-connector]/port">chameleon-connector/port</a></li>
222 <li><a href="#connection-manager/cws-connectors/newcamd-connector/userpass">chameleon-connector/user &amp; pass</a></li>
223 <li><a href="#connection-manager/cws-connectors/chameleon-connector/profiles">chameleon-connector/profiles</a></li>
224 </ul>
225 </ul>
227<br />
228<li><a href="#proxy-plugins">proxy-plugins</a></li>
230 <li><a href="#proxy-plugins/plugin">proxy-plugins/plugin (attributes: *class, enabled)</a></li>
231 <ul>
232 <li><a href="#proxy-plugins/plugin/plugin-config">plugin/plugin-config</a></li>
233 </ul>
235<br />
236<li><a href="#cache-handler">cache-handler</a></li>
238 <li><a href="#cache-handler/cache-config">cache-handler/cache-config</a></li>
239 <ul>
240 <li><a href="#cache-handler/cache-config/cw-max-age">cache-config/cw-max-age</a></li>
241 <li><a href="#cache-handler/cache-config/max-cache-wait">cache-config/max-cache-wait</a></li>
242 </ul>
245<br />
247<a name="cardserv-proxy">
248<div class='indent'>cardserv-proxy (attributes: *ver)</div><br />
249The root element for the proxy config file. <br />
250<br />
251- <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 />
252<br />
253Example: <em class='italic'>&lt;cardserv-proxy ver="0.9.1"></em><br />
254<br />
257<a name="ca-profiles">
258<div class='indent'>ca-profiles</div><br />
259A 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 />
260<br />CWS 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 />
261<br />Cards 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 />
262<br />
265<a name="ca-profiles/default-des-key">
266<div class='indent'><strong>ca-profiles/default-des-key</strong></div><br />
267The default des key for all incoming newcamd connections. Clients will need to match this. <br />
268<br />
269Example: <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 />
270<br />
273<a name="ca-profiles/default-deny-list">
274<div class='indent'>ca-profiles/default-deny-list</div><br />
275Optional global ip black list<br />
276A list of ip masks (wildcards supported) separated by space. This list applies to all defined profile listen ports and is checked first.<br />
277<br />
278Example: <em class='italic'>&lt;default-deny-list>192.168.66.*;/default-deny-list></em> <br />
279<br />
282<a name="ca-profiles/max-threads">
283<div class='indent'>ca-profiles/max-threads</div><br />
284Maximum 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 />
285<br /><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. <br />
286<br />
287Example: <em class='italic'>&lt;max-threads>1500&lt;/max-threads></em><br />
288<br />
291<a name="ca-profiles/session-timeout">
292<div class='indent'>ca-profiles/session-timeout</div><br />
293Maximum 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 />
294<br />
295Example: <em class='italic'>&lt;session-timeout>240&lt;/session-timeout></em><br />
296<br />
299<a name="ca-profiles/session-keepalive">
300<div class='indent'>ca-profiles/session-keepalive (attributes: exclude-clients)</div><br />
301Send 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 />
302If 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 />
303- <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 />
304<br />
305Example: <em class='italic'>&lt;session-keepalive exclude-clients="someclient otherclient thirdclient">10&lt;/session-keepalive></em><br />
306<br />
309<a name="ca-profiles/newcamd-maxmsgsize">
310<div class='indent'>ca-profiles/newcamd-maxmsgsize</div><br />
311The 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 />
312<br />
313Example: <em class='italic'>&lt;newcamd-maxmsgsize>480&lt;/newcamd-maxmsgsize></em><br />
314<br />
317<a name="ca-profiles/block-caid-mismatch">
318<div class='indent'>ca-profiles/block-caid-mismatch</div><br />
319true/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).<br />
320<br /><strong>NOTE: </strong>As of 0.9.1, this will also apply to cross-profile cache hits that have the same ca-id (but where ecms were sent to different profiles). Such configurations with several profiles receiving the same traffic aren't really supported, but if you you know what you're doing and you're sure you understand the implications - it will continue to work as before if you set this to false.<br />
321<br />
324<a name="ca-profiles/extended-newcamd">
325<div class='indent'><strong>ca-profiles/extended-newcamd (attributes: *listen-port, bind-ip, enabled, debug)</strong></div><br />
326Defines 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 />
327The 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 />
328<br /><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 />
329- <strong class='bold'>listen-port</strong>: TCP port number.<br />
330- <strong class='bold'>bind-ip</strong>: Optional local IP to bind the listener to (default: all -<br />
331- <strong class='bold'>enabled</strong>: true/false (default: true).<br />
332- <strong class='bold'>debug</strong>: true/false (default: true).<br />
333<br />
334Example: <em class='italic'>&lt;extended-newcamd listen-port="5556"/></em> <br />
335<br />
338<a name="ca-profiles/extended-newcamd/des-key">
339<div class='indent'>ca-profiles/extended-newcamd/des-key</div><br />
340Overrides the default-des-key for the extended-newcamd listener.<br />
341<br />
342Example: <br /><br />
343 <em class='italic'>&lt;extended-newcamd listen-port="5556"></em> <br />
344 &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 />
345 <em class='italic'>&lt;/extended-newcamd></em> <br />
346<br />
349<a name="ca-profiles/extended-newcamd/exclude-profiles">
350<div class='indent'><strong>ca-profiles/extended-newcamd/exclude-profiles</strong></div><br />
351Optional 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 />
352Every single defined profile has to have the correct ca-id and network-id for the extended-newcamd port to work (the logs will show which ones are at fault, otherwise). If the same exact ca-id + ident combo exists within multiple profiles, they cannot be combined on this port and one of them has to be excluded (if not configured here, then one will be excluded at random).<br />
353<br />
354Example: <br /><br />
355 <em class='italic'>&lt;extended-newcamd listen-port="5556"></em> <br />
356 &nbsp;&nbsp;&nbsp;&nbsp;<em class='italic'>&lt;exclude-profiles>profile1 testprofile&lt;/exclude-profiles></em> <br />
357 <em class='italic'>&lt;/extended-newcamd></em> <br />
358<br />
361<a name="ca-profiles/extended-newcamd/main-ca-id">
362<div class='indent'>ca-profiles/extended-newcamd/main-ca-id</div><br />
363Optional 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 />
364<br />
365Example: <em class='italic'>&lt;main-ca-id>0500&lt;/main-ca-id></em> <br />
366<br />
369<a name="ca-profiles/profile">
370<div class='indent'><strong>ca-profiles/profile (attributes: *name, ca-id, network-id, enabled, debug, cache-only, provider-idents, require-provider-match)</strong></div><br />
371One 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 />
372<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 />
373- <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 />
374- <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 />
375<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 />
376<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 />
377If 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 />
378- <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 />
379- <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 />
380- <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 />
381- <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 />
382- <strong class="bold">require-provider-match</strong>: true/false (default: true, unless the profile contains the single ident 00 00 00 in which 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 />
383<br />
384Example: <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 />
385<br />
388<a name="ca-profiles/profile/newcamd">
389<div class='indent'><strong>ca-profiles/profile/newcamd (attributes: *listen-port, bind-ip)</strong></div><br />
390Defines a newcamd listener port for the profile. Multiple ports can be used in a profile, each with individual configurations.<br />
391- <strong class='bold'>listen-port</strong>: TCP port number.<br />
392- <strong class='bold'>bind-ip</strong>: Optional local IP to bind the listener to (default: all -<br />
393<br />
394Example: <em class='italic'>&lt;newcamd listen-port="13112" bind-ip=""/></em> <br />
395<br />
396Example: <br /><br />
397 <em class='italic'>&lt;newcamd listen-port="13112"></em> <br />
398 &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 />
399 &nbsp;&nbsp;&nbsp;&nbsp;<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 />
400 &nbsp;&nbsp;&nbsp;&nbsp;<em class='italic'>&lt;no-encryption>false&lt;/no-encryption></em> <br />
401 &nbsp;&nbsp;&nbsp;&nbsp;<em class='italic'>&lt;no-validation>true&lt;/no-validation></em> <br />
402 <em class='italic'>&lt;/newcamd></em> <br />
403<br />
406<a name="ca-profiles/profile/newcamd/des-key">
407<div class='indent'>ca-profiles/profile/newcamd/des-key</div><br />
408Overrides the default-des-key for a particular newcamd listener.<br />
409<br />
410Example: <br /><br />
411 <em class='italic'>&lt;newcamd listen-port="13112"></em> <br />
412 &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 />
413 <em class='italic'>&lt;/newcamd></em> <br />
414<br />
417<a name="ca-profiles/profile/newcamd/card-data">
418<div class='indent'>ca-profiles/profile/newcamd/card-data (attributes: *type, name, ca-id, override-au)</div><br />
419Allows 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 />
420<br /><strong>NOTE:</strong> As of 0.9.1 it should be possible to use configured card-data to trick clients with custom handling for tunneled systems (one ca-system within another) into sending you desired ecms, even when the profile and the connectors need to be set to another ca-id. Incoming messages will always be assigned the ca-id of the profile, even if the card-data for a particular port said something else.<br /><br />
421- <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 />
422- <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 />
423- <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 />
424- <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 />
425<br />
426Example: <em class='italic'>&lt;card-data type="connector" name="card1"/></em> <br />
427Example: <em class='italic'>&lt;card-data type="file" name="etc/mycard.card" override-au="true"/></em> <br />
428Example: <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 />
429<br />
432<a name="ca-profiles/profile/newcamd/card-data/provider-idents">
433<div class='indent'>ca-profiles/profile/newcamd/card-data/provider-idents</div><br />
434Only 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 />
435<br />
436Example: <em class='italic'>&lt;provider-idents>00 00 00,00 00 01,00 00 02&lt;/provider-idents></em> <br />
437<br />
440<a name="ca-profiles/profile/newcamd/no-encryption">
441<div class='indent'>ca-profiles/profile/newcamd/no-encryption</div><br />
442true/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 />
443<br />
446<a name="ca-profiles/profile/newcamd/no-validation">
447<div class='indent'>ca-profiles/profile/newcamd/no-validation</div><br />
448true/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 (or something else entirely, like the original newcamd client).<br />
449<br /><strong>NOTE:</strong> If no-validation is true, the port cannot be used with clients that do include the correct caid/ident in the header (notably cccam), when the ident is relevant in the ca-system in question - since such information is lost with no-validation. I.e. if you wish to combine for example cccam and the original newcamd client in the same setup, you have to connect them to different ports, and set no-validation to true only for the one used by old newcamd.<br />
450<br />
451Example: <em class='italic'>&lt;newcamd listen-port="11112">&lt;no-validation>true&lt;/no-validation>&lt;/newcamd></em> <br />
452<br />
455<a name="ca-profiles/profile/radegast">
456<div class='indent'>ca-profiles/profile/radegast (attributes: *listen-port, bind-ip, sid-in-0x21)</div><br />
457Defines 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 />
458- <strong class='bold'>listen-port</strong>: TCP port number.<br />
459- <strong class='bold'>bind-ip</strong>: Optional local IP to bind the listener to (default: all -<br />
460- <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 />
461<br />
462Example: <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 />
463<br />
466<a name="ca-profiles/profile/[newcamd|radegast]/allow-list">
467<div class='indent'>ca-profiles/profile/[newcamd|radegast]/allow-list</div><br />
468Optional ip white list<br />
469A list of ip masks (wildcards supported) separated by space. If this is set, only matching source addresses will be able to connect.<br />
470<br />
471Example: <em class='italic'>&lt;allow-list>192.168.0.* 10.0.*&lt;/allow-list></em> <br />
472<br />
475<a name="ca-profiles/profile/[newcamd|radegast]/deny-list">
476<div class='indent'>ca-profiles/profile/[newcamd|radegast]/deny-list</div><br />
477Optional ip black list<br />
478A list of ip masks (wildcards supported) separated by space. Allows blocking connections based on source ip (checked after the allow-list).<br />
479<br />
480Example: <em class='italic'>&lt;deny-list>;/deny-list></em> <br />
481<br />
484<a name="ca-profiles/profile/services-file">
485<div class='indent'>ca-profiles/profile/services-file (attributes: format, filter)</div><br />
486Path 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 />
487- <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 />
488- <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 />
489<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 />
490For 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 />
491For 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 />
492For <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 />
493For 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 />
494<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 />
495<br />The provider name will appear for each service in the file, with a line like: <br />
496<em class='italic'>p: providername</em><br />
497If 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).
498Multiple profiles can point to the same services-file, with different providers set. <br />
499Once 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 />
500<br />
501Example: <em class='italic'>&lt;services-file filter="name with spaces, vendor X, vendor Y">etc/services&lt;/services-file></em><br />
502Example: <em class='italic'>&lt;services-file format="simple">etc/;/services-file></em><br />
503Example: <em class='italic'>&lt;services-file format="cccam" filter="022F00 030B00">etc/CCcam.channelinfo&lt;/services-file></em><br />
504Example: <em class='italic'>&lt;services-file format="dvbviewer">etc/dvbviewer.export.ini&lt;/services-file></em><br />
505Example: <em class='italic'>&lt;services-file format="neutrino">etc/services.xml&lt;/services-file></em><br />
506<br />
509<a name="ca-profiles/profile/max-cw-wait">
510<div class='indent'><strong>ca-profiles/profile/max-cw-wait</strong></div><br />
511This 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). <br />
512Under normal circumstances this should be set to the maximum time a client can wait for CW reply without experiencing a freeze, but if clients have a lower timeout value that can't be easily reconfigured - setting it lower may be necessary (meaning cannot-decode replies will start happening earlier as connector queues grow).<br />
513Applies to all CWS connectors in this profile, if set here it overrides the global setting in <a href="#connection-manager/max-cw-wait">connection-manager</a>.<br />
514<br /><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 /><br />
515To 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 />
516<br />See <strong>README.Optimization.txt</strong> for more details.<br />
517<br />
518Example: <em class='italic'>&lt;max-cw-wait>7&lt;/max-cw-wait></em><br />
519Example: <em class='italic'>&lt;max-cw-wait>3900 ms&lt;/max-cw-wait></em><br />
520<br />
523<a name="ca-profiles/profile/congestion-limit">
524<div class='indent'>ca-profiles/profile/congestion-limit</div><br />
525The 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 />
526<br /><strong>NOTE: </strong>If max-cw-wait is below 1s, congestion-limit is automatically set to the same value.<br />
527<br />
530<a name="logging">
531<div class='indent'><strong>logging (attributes: log-ecm, log-emm, log-zapping, hide-ip-addresses)</strong></div><br />
532Main log configuration for the proxy. File logging only.<br />
533- <strong class='bold'>log-ecm</strong>: true/false (default: true). Set to false to disable the INFO level ECM logging.<br />
534- <strong class='bold'>log-emm</strong>: true/false (default: true). Set to false to disable the INFO level EMM logging.<br />
535- <strong class='bold'>log-zapping</strong>: true/false (default: true). Set to false to disable the INFO level logging when users switch service.<br />
536- <strong class='bold'>hide-ip-addresses</strong>: true/false (default: false). Set to true to mask any ip addresses ( or hostnames ( logged for the normal INFO level non-debug output. This does not apply to web access logs or logging filters.<br />
537<br /><strong>NOTE: </strong>For any non-trivial live setup with multiple users, it will likely become necessary to turn all off ecm/emm/zap logging once initial configuration is completed and verified to be working. Use the debug flag for individual users instead to do live tracing.<br />
538<br />
539Example: <em class='italic'>&lt;logging log-ecm="false" log-emm="false" log-zapping="false" hide-ip-addresses="true"></em> <br />
540<br />
543<a name="logging/log-file">
544<div class='indent'>logging/log-file (attributes: rotate-count, rotate-max-size)</div><br />
545Main log file.<br />
546- <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 />
547- <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 />
548<br />
549Example: <em class='italic'>&lt;log-file rotate-count="5" rotate-max-size="1024">log/cardserv.log&lt;/log-file></em> <br />
550<br />
553<a name="logging/log-level">
554<div class='indent'><strong>logging/log-level</strong></div><br />
555The log level determines the verbosity. Supported levels are:<br /><br />
556OFF - no logging<br />
557SEVERE - only errors that should normally not occur<br />
558WARNING - warnings and common errors only<br />
559INFO - default level, includes all ECM/EMM's unless disabled by log-ecm/log-emm attributes.<br />
560FINE - includes some cache events, remote api access and similar<br />
561FINER - all cache events, some net traffic events<br />
562FINEST - all net traffic/encryption related events<br />
563ALL - everything, same as FINEST<br />
564<br /><strong>NOTE: </strong>All levels beyond FINE are extremely verbose and cannot really be used in a live multi-user environment, it will eventually crash or at the very least alter the behavior you were trying to trace.<br />
565Level FINE should be ok for a while however, enabling short term troubleshooting under most circumstances.<br />
566Level INFO (or in extreme cases WARNING) should be used as default for all non-trivial traffic loads.<br />
567<br />
568Example: <em class='italic'>&lt;log-level>WARNING&lt;/log-level></em> <br />
569<br />
572<a name="logging/log-dateformat">
573<div class='indent'>logging/log-dateformat</div><br />
574Optional alternate format string to use for the logging. Must be a valid java <a href="">SimpleDateFormat</a> pattern.<br />
575<br />
576Example: <em class='italic'>&lt;log-dateformat>yyMMdd HH:mm:ss.SSS&lt;/log-dateformat></em> <br />
577<br />
580<a name="logging/silent">
581<div class='indent'>logging/silent</div><br />
582true/false (default: false). Controls logging to system out (in addition to log file). Set to true for log file only.<br />
583<br />
586<a name="logging/debug">
587<div class='indent'>logging/debug</div><br />
588true/false (default: false). Controls logging of line numbers, thread names and full stacktraces.<br />
589<br />
592<a name="logging/warning-threshold">
593<div class='indent'>logging/warning-threshold (attributes: *bad-flags, *max-delay)</div><br />
594Determines 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 />
595See <strong>README.Optimization.txt</strong> for more hints on how to interpret transaction flags.<br /><br />
596- <strong class='bold'>bad-flags</strong>: List of all flags that should be considered harmful (as a single string, no separators).<br />
597- <strong class='bold'>max-delay</strong>: In milliseconds, any transaction exceeding this limit will be considered a problem and traced (default: 5000).<br />
598- <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 />
599<br />
600Example: <em class='italic'>&lt;warning-threshold bad-flags="YTSGXWD-" max-delay="7000" include-file-events="true"/></em> <br />
601<br />
604<a name="logging/event-threshold">
605<div class='indent'>logging/event-threshold (attributes: *min-count)</div><br />
606Allows 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 />
607<br />
608- <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 />
609<br />
610Example: <em class='italic'>&lt;event-threshold min-count="2"/></em> <br />
611<br />
614<a name="rmi">
615<div class='indent'>rmi (attributes: enabled)</div><br />
616Settings 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/</strong> in the source for an example.<br />
617- <strong class='bold'>enabled</strong>: true/false (default: false)<br />
618<br />
621<a name="rmi/allowed-ip-masks">
622<div class='indent'>rmi/allowed-ip-masks</div><br />
623RMI 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 />
624<br />
625Example: <em class='italic'>&lt;allowed-ip-masks>192.168.0.*;/allowed-ip-masks></em><br />
626<br />
629<a name="rmi/registry-port">
630<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 />
631<br />
634<a name="rmi/local-port">
635<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 />
636<br />
639<a name="rmi/local-name">
640<div class='indent'>rmi/local-name</div><br />
641Name 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 />
642<br />
645<a name="rmi/display-name">
646<div class='indent'>rmi/display-name</div><br />
647Name 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 />
648<br />
651<a name="rmi/status-web">
652<div class='indent'>rmi/status-web (attributes: enabled)</div><br />
653Controls 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 />
654- <strong class='bold'>enabled</strong>: true/false (default: false)<br />
655<br />
658<a name="rmi/status-web/listen-port">
659<div class='indent'><strong>rmi/status-web/listen-port</strong></div><br />
660TCP port for the built in httpd.<br />
661<br />
664<a name="rmi/status-web/bind-ip">
665<div class='indent'>rmi/status-web/bind-ip</div><br />
666Optional local IP to bind the listen port to (default: all -<br />
667<br />
670<a name="rmi/status-web/ssl">
671<div class='indent'>rmi/status-web/ssl (attributes: enabled)</div><br />
672Enable to use https instead of http (enabling/disabling ssl requires a proxy restart).<br />
673<br />
674- <strong class='bold'>enabled</strong>: true/false (default: false)<br />
675<br />
678<a name="rmi/status-web/ssl/keystore">
679<div class='indent'>rmi/status-web/ssl/keystore (attributes: *password)</div><br />
680If 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.
681To 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 />
682<em class='italic'>keytool -keystore cs_keystore -genkey -alias Cardservproxy -keyalg RSA -storepass 123456 -keypass 123456 -dname "cn=localhost" -validity 1000</em><br />
683<br /><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 />
684- <strong class='bold'>password</strong>: The password for the keystore file (and the key password, both must use the same)<br />
685<br />
686Example: <br /><br />
687<em class='italic'>&lt;ssl enabled="true"><br />
688&nbsp;&nbsp;&lt;keystore password="123456">etc/cs_keystore&lt;/keystore><br />
690</em><br />
691<br />
694<a name="rmi/status-web/csp-connect">
695<div class='indent'>rmi/status-web/csp-connect (attributes: enabled, debug, ignore-cache-requests)</div><br />
696Allows disabling of csp-connections (csp-connectors from other proxies).<br />
697Csp-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 />
698<br />
699- <strong class='bold'>enabled</strong>: true/false (default: true)<br />
700- <strong class='bold'>debug</strong>: true/false (default: true). Corresponds to the debug attribute for regular ca-profiles and determines whether to keep the transaction backlog for troubleshooting.<br />
701- <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 />
702<br />
705<a name="rmi/status-web/war-file">
706<div class='indent'>rmi/status-web/war-file</div><br />
707In 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 />
708<br />
709Example: <em class='italic'>&lt;war-file>lib/cs-status.war&lt;/war-file></em> <br />
710<br />
713<a name="rmi/status-web/welcome-file">
714<div class='indent'>rmi/status-web/welcome-file</div><br />
715A 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 />
716<br />
717Example: <em class='italic'>&lt;welcome-file>cs-status.html&lt;/welcome-file></em><br />
718<br />
721<a name="rmi/status-web/log-file">
722<div class='indent'>rmi/status-web/log-file (attributes: rotate-count, rotate-max-size)</div><br />
723Standard web-access log for the httpd, using apache combined format. Omit this to disable access logging.<br />
724- <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 />
725- <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 />
726<br />
727Example: <em class='italic'>&lt;log-file>log/web-access.log&lt;/log-file></em> <br />
728<br />
731<a name="rmi/status-web/super-users">
732<div class='indent'><strong>rmi/status-web/super-users</strong></div><br />
733List 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 />
734<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 />
735<br />
736Example: <em class='italic'>&lt;super-users>root admin&lt;/super-users></em><br />
737<br />
740<a name="user-manager">
741<div class='indent'>user-manager (attributes: *class, allow-on-failure, allow-different-ip, log-failures, jar-file)</div><br />
742Defines 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 />
743- <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 />
744A user manager class must implement com.bowman.cardserv.interfaces.UserManager (or extend the default SimpleUserManager).<br />
745- <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 />
746- <strong class='bold'>allow-different-ip</strong>: true/false (default: false). Allows duplicate Newcamd connections / sessions from different IP sources. The <a href="#user-manager/auth-config/user">max-connection</a> setting was still in effect when using this option.<br />
747- <strong class='bold'>log-failures</strong>: true/false (default: false). Log login failures.<br />
748- <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 />
749<br />
750Example: <em class='italic'>&lt;user-manager class="com.bowman.cardserv.MySqlUserManager" allow-on-failure="true" log-failures="true"></em><br />
751<br />
754<a name="user-manager/auth-config">
755<div class='indent'>user-manager/auth-config</div><br />
756This 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 />
757<br />
760<a name="user-manager/auth-config/open-access">
761<div class='indent'>user-manager/auth-config/open-access (attributes: enabled)</div><br />
762Allows 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 />
763- <strong class='bold'>enabled</strong>: true/false (default: true). Set to false or remove the open-access element to disable.<br />
764<br />
765<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 />
766<br />
767Example:<br /><br />
768<em class='italic'>&lt;open-access enabled="true"><br />
769&nbsp;&nbsp;&lt;open-username-prefix>csp-&lt;/open-username-prefix><br />
770&nbsp;&nbsp;&lt;open-password>publicaccess&lt;/open-password><br />
771&nbsp;&nbsp;&lt;open-profiles>profile2 profile3&lt;/open-profiles><br />
773<br />
776<a name="user-manager/auth-config/open-access/open-username-prefix">
777<div class='indent'>user-manager/auth-config/open-access/open-username-prefix</div><br />
778Only allow open access if the login username starts with this string (remove or leave empty to allow any username).<br />
779<br />
782<a name="user-manager/auth-config/open-access/open-password">
783<div class='indent'>user-manager/auth-config/open-access/open-password</div><br />
784The password all open user logins must use.<br />
785<br />
788<a name="user-manager/auth-config/open-access/open-profiles">
789<div class='indent'>user-manager/auth-config/open-access/open-profiles</div><br />
790Optionally 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 />
791<br />
794<a name="user-manager/auth-config/user">
795<div class='indent'><strong>user-manager/auth-config/user (attributes: *name, *password, display-name, ip-mask, profiles, max-connections, admin, enabled, map-exclude, start-date, expiration-date, debug)</strong></div><br />
796One user definition for the SimpleUserManager (also used by the XmlUserManager, see <strong>README.XmlUserManager.txt</strong> for more details):<br /><br />
797- <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 />
798- <strong class='bold'>password</strong>: Avoid special characters.<br />
799- <strong class='bold'>display-name</strong>: An optional non-unique alias for the user (used by the http/xml api). <br />
800- <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 (? *), but this should typically not be used for users with dynamic ips - fixed only (no dns reverse lookups are performed, hostname masks will not be allowed).<br />
801- <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 />
802- <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 />
803- <strong class='bold'>admin</strong>: true/false (default: false). Is this user an administrator? Affects access to http/xml api features only.<br />
804- <strong class='bold'>enabled</strong>: true/false (default: true). Allows disabling of accounts without deleting them.<br />
805- <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 />
806- <strong class='bold'>start-date</strong>: (dd-mm-yyyy) Start date for user account.<br />
807- <strong class='bold'>expiration-date</strong>: (dd-mm-yyyy) Expiration date for the user account.<br />
808- <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 />
809<br />
810Example: <em class='italic'>&lt;user name="usr1" password="secret" display-name="User one" profiles="profile1 otherprofile" max-connections="3" enabled="false"/></em> <br />
811Example: <em class='italic'>&lt;user name="usr2" password="secret2" display-name="User two" profiles="otherprofile" max-connections="1" map-exclude="true"/></em> <br />
812Example: <em class='italic'>&lt;user name="admin" password="secret3" display-name="Administrator" admin="true" debug="true"/></em> <br />
813<br />
816<a name="connection-manager">
817<div class='indent'>connection-manager</div><br />
818This section deals with the connections to the CW servers, and everything related to that.<br />
819<br />
822<a name="connection-manager/reconnect-interval">
823<div class='indent'>connection-manager/reconnect-interval</div><br />
824The interval between connection attempts (in seconds) for servers that are not are not connected. Applies to all CWS connectors. Minimum interval is 3 seconds (anything lower will result in the default of 60 secs).<br />
825<br /><strong>NOTE: </strong>If you have connectors that sporadically seem to get stuck and never reconnect, it very likely means you have this set too low. <br />
826<br />
829<a name="connection-manager/max-cw-wait">
830<div class='indent'><strong>connection-manager/max-cw-wait</strong></div><br />
831If 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, but if clients have a lower timeout value that can't be easily reconfigured - setting it lower may be necessary (meaning cannot-decode replies will start happening earlier as connector queues grow).<br />
832This is the default for all CWS connectors in all profiles.<br />
833<br /><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 />
834<br />To 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 />
835<br />See <strong>README.Optimization.txt</strong> for more details.<br />
836<br />
839<a name="connection-manager/default-des-key">
840<div class='indent'><strong>connection-manager/default-des-key</strong></div><br />
841The des key the proxy will use when connecting to a newcamd CWS, if nothing else is specified for a particular connector. Applies to all outgoing connections made by newcamd and chameleon connectors.<br />
842<br />
843Example: <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 />
844<br />
847<a name="connection-manager/default-keepalive-interval">
848<div class='indent'>connection-manager/default-keepalive-interval</div><br />
849If a newcamd CWS connection is inactive longer than this period (in seconds) the proxy will send a keep alive msg. <br />
850<br />
851<div class='indent'>connection-manager/default-client-id</div><br />
852The 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 />
853<br />
854Example: <em class='italic'>&lt;default-client-id>67 62&lt;/default-client-id></em> <br />
855<br />
858<a name="connection-manager/default-max-queue">
859<div class='indent'>connection-manager/default-max-queue</div><br />
860The 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 />
861<br />
862Example: <em class='italic'>&lt;default-max-queue>60&lt;/default-max-queue></em> <br />
863<br />
866<a name="connection-manager/default-min-delay">
867<div class='indent'>connection-manager/default-min-delay</div><br />
868Delay 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 />
869This means the card will appear slightly slower, but hopefully more stable. Has no effect on connectors in synchronous mode.<br />
870<br />
871Example: <em class='italic'>&lt;default-min-delay>30&lt;/default-min-delay></em> <br />
872<br />
875<a name="connection-manager/timeout-disconnect-threshold">
876<div class='indent'>connection-manager/timeout-disconnect-threshold</div><br />
877The number of consecutive timeouts allowed to occur before a connector is closed and reconnect attempted (default: 2).<br />
878<br />
881<a name="connection-manager/cannot-decode-wait">
882<div class='indent'>connection-manager/cannot-decode-wait</div><br />
883<strong>NOTE: </strong> This element is only applicable in custom setups with multiple proxies using ClusteredCache.<br /><br />
884This 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 />
885This 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 />
886<br />
889<a name="connection-manager/congestion-limit">
890<div class='indent'>connection-manager/congestion-limit</div><br />
891The 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 />
892<br /><strong>NOTE: </strong>If max-cw-wait is below 1s, congestion-limit is automatically set to the same value.<br />
893<br />
896<a name="connection-manager/hard-congestion-limit">
897<div class='indent'>connection-manager/hard-congestion-limit</div><br />
898true/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 />
899<br />
902<a name="connection-manager/log-sid-mismatch">
903<div class='indent'>connection-manager/log-sid-mismatch</div><br />
904true/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 />
905<br />
908<a name="connection-manager/delay-missing-sid">
909<div class='indent'>connection-manager/delay-missing-sid</div><br />
910Delay 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
911request 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).
912If you do have users that don't send sid, and this causes problems for them, just set it to 0.<br />
915<a name="connection-manager/service-map">
916<div class='indent'>connection-manager/service-map</div><br />
917The 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 />
918<br /><strong>NOTE: </strong> See the end of <strong>README.txt</strong> for more information on service mapping. <br />
919<br />
922<a name="connection-manager/service-map/mapper">
923<div class='indent'>connection-manager/service-map/mapper (attributes: enabled)</div><br />
924Default service mapper settings that apply to all profiles unless overridden.<br />
925- <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 />
926<br />
929<a name="connection-manager/service-map/mapper/cache-dir">
930<div class='indent'>connection-manager/service-map/mapper/cache-dir</div><br />
931Where 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 />
932<br />
935<a name="connection-manager/service-map/mapper/cache-save-age">
936<div class='indent'>connection-manager/service-map/mapper/cache-save-age</div><br />
937Save 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 />
938<br />
941<a name="connection-manager/service-map/mapper/auto-map-services">
942<div class='indent'>connection-manager/service-map/mapper/auto-map-services</div><br />
943true/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 />
944<br />
947<a name="connection-manager/service-map/mapper/reset-services">
948<div class='indent'><strong>connection-manager/service-map/mapper/reset-services</strong></div><br />
949A 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 />
950It 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 />
951<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 />
952<br />
953Example: <em class='italic'>&lt;reset-services>51f 520 515&lt;/reset-services></em> <br />
954<br />
957<a name="connection-manager/service-map/mapper/allow-services">
958<div class='indent'><strong>connection-manager/service-map/mapper/allow-services</strong></div><br />
959A 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 />
960It 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 />
961<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 />
962<br />
963Example: <em class='italic'>&lt;allow-services>44f 43b 456 45f 421 452 44e 458 43d 45e 43c 3fd&lt;/allow-services></em> <br />
964<br />
967<a name="connection-manager/service-map/mapper/block-services">
968<div class='indent'><strong>connection-manager/service-map/mapper/block-services</strong></div><br />
969A 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 />
970Specifying 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 />
971It 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 />
972<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 />
973<br />
974Example: <em class='italic'>&lt;block-services>44f 43b 456 45f 421 452 44e 458 43d 45e 43c 3fd&lt;/block-services></em> <br />
975Example: <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 />
976<br />
979<a name="connection-manager/service-map/mapper/dummy-services">
980<div class='indent'>connection-manager/service-map/mapper/dummy-services</div><br />
981Some 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 />
982<br /><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. If for some reason you absolutely want to retain the original dummy-services in the forwards too, set -1 as the first entry.<br />
983<br />
984Example: <em class='italic'>&lt;dummy-services>0 101 1101&lt;/dummy-services></em> <br />
987<a name="connection-manager/service-map/mapper/auto-reset-threshold">
988<div class='indent'>connection-manager/service-map/mapper/auto-reset-threshold</div><br />
989If 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 />
990<br />
993<a name="connection-manager/service-map/mapper/log-missing-sid">
994<div class='indent'>connection-manager/service-map/mapper/log-missing-sid</div><br />
995true/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 />
996<br />
999<a name="connection-manager/service-map/mapper/broadcast-missing-sid">
1000<div class='indent'>connection-manager/service-map/mapper/broadcast-missing-sid</div><br />
1001true/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 />
1002<br />
1005<a name="connection-manager/service-map/mapper/redundant-forwarding">
1006<div class='indent'>connection-manager/service-map/mapper/redundant-forwarding</div><br />
1007true/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 />
1008Secondary 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 />
1009<br /><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.
1010<br />
1013<a name="connection-manager/service-map/mapper/retry-lost-services">
1014<div class='indent'>connection-manager/service-map/mapper/retry-lost-services</div><br />
1015true/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 />
1016The 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).
1017Under normal circumstances, you probably want to keep this switched on, for all profiles with service-mapping enabled.<br />
1018<br /><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 />
1019<br />
1022<a name="connection-manager/service-map/mapper/hide-unknown-services">
1023<div class='indent'>connection-manager/service-map/mapper/hide-unknown-services</div><br />
1024true/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 />
1025<br /><strong>NOTE: </strong> If you're not using a services file, setting this to true would hide all services.
1026<br />
1029<a name="connection-manager/service-map/mapper/hide-disabled-connectors">
1030<div class='indent'>connection-manager/service-map/mapper/hide-disabled-connectors</div><br />
1031true/false (default: false). Determines whether to hide disabled connectors from the query api and hence the status web.<br />
1032<br /><strong>NOTE: </strong> Disconnected or disabled connectors without a profile assigned will always be hidden regardless of this setting.
1033<br />
1036<a name="connection-manager/service-map/mapper-override">
1037<div class='indent'><strong>connection-manager/service-map/mapper (attributes: *profile, enabled)</strong></div><br />
1038When 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 />
1039- <strong class='bold'>profile</strong>: Name of the profiles that the overrides apply to, this profile must exist.<br />
1040- <strong class='bold'>enabled</strong>: true/false (default: true). Enable/disable service mapping entirely for this profile.<br />
1041<br /><strong>NOTE: </strong> See the end of <strong>README.txt</strong> for more information on service mapping. <br />
1042<br />
1043Example:<br /><br />
1044<em class='italic'>&lt;mapper profile="providerX" enabled="true"> <br />
1045&nbsp;&nbsp;&nbsp;&nbsp;&lt;reset-services>51f 520 515&lt;/reset-services><br />
1046&nbsp;&nbsp;&nbsp;&nbsp;&lt;block-services>44f 43b 456 45f 421 452 44e 458 43d 45e 43c 3fd&lt;/block-services><br />
1047&lt;/mapper> </em><br />
1048<br />
1051<a name="connection-manager/external-connector-config">
1052<div class='indent'>connection-manager/external-connector-config (attributes: enabled)</div><br />
1053Allows 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 />
1054Internally 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 />
1055- <strong class='bold'>enabled</strong>: true/false (default: true). Disable/enable all external connectors and the auto fetch mechanism.<br />
1056<br />
1059<a name="connection-manager/external-connector-config/connector-file-url">
1060<div class='indent'>connection-manager/external-connector-config/connector-file-url</div><br />
1061The 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 />
1062<br />
1065<a name="connection-manager/external-connector-config/connector-file-key">
1066<div class='indent'>connection-manager/external-connector-config/connector-file-key</div><br />
1067Optional blowfish key. If this element is present, the connector file is assumed to have been encrypted using fishenc.jar and this key.<br />
1068<br />
1071<a name="connection-manager/external-connector-config/update-interval">
1072<div class='indent'>connection-manager/external-connector-config/update-interval</div><br />
1073How often to check for changes in the connector file (in minutes). Only if changes are detected is the file fetched and installed.<br />
1074<br />
1077<a name="connection-manager/cws-connectors">
1078<div class='indent'>connection-manager/cws-connectors</div><br />
1079This section contains the list of CW servers that the proxy should try to maintain a connection with.<br />
1080<br />
1083<a name="connection-manager/cws-connectors/[newcamd-connector|radegast-connector]">
1084<div class='indent'><strong>connection-manager/cws-connectors/[newcamd-connector|radegast-connector] (attributes: *name, profile, provider-idents, metric, enabled, qos-class, override-checks)</strong></div><br />
1085Defines one newcamd or radegast CW server connection.<br />
1086- <strong class='bold'>name</strong>: Name of the connection. Just an arbitrary label to identify this particular card/cardserver, must be unique.<br />
1087- <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 />
1088- <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 />
1089- <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 />
1090You 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.
1091You 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 />
1092- <strong class='bold'>enabled</strong>: true/false (default: true). Allows for disabling a connection without deleting it.<br />
1093- <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 />
1094- <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 />
1095<br />
1096Example: <em class='italic'>&lt;newcamd-connector name="card3" profile="vendorX" metric="2" enabled="true"></em> <br />
1097Example: <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 />
1098<br />
1101<a name="connection-manager/cws-connectors/[newcamd-connector|radegast-connector]/host">
1102<div class='indent'>connection-manager/cws-connectors/[newcamd-connector|radegast-connector]/host</div><br />
1103Hostname or IP for the CW server.<br />
1104<br />
1107<a name="connection-manager/cws-connectors/[newcamd-connector|radegast-connector]/port">
1108<div class='indent'>connection-manager/cws-connectors/[newcamd-connector|radegast-connector]/port</div><br />
1109TCP port for the CW server.<br />
1110<br />
1113<a name="connection-manager/cws-connectors/[newcamd-connector|radegast-connector]/can-decode-services">
1114<div class='indent'>connection-manager/cws-connectors/[newcamd-connector|radegast-connector]/can-decode-services (attributes: exclusive, profile)</div><br />
1115Optional 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 />
1116<br /><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 />
1117<br />Under 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 />
1118- <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 />
1119- <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 />
1120<br />
1121Example: <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 />
1122Example: <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 />
1123Example: <em class='italic'>&lt;can-decode-services profile="someprofile">421 452 44e 458&lt;/can-decode-services></em> <br />
1124<br />
1127<a name="connection-manager/cws-connectors/[newcamd-connector|radegast-connector]/cannot-decode-services">
1128<div class='indent'>connection-manager/cws-connectors/[newcamd-connector|radegast-connector]/cannot-decode-services (attributes: profile)</div><br />
1129Optional 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 />
1130Under 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 />
1131- <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 />
1132<br />
1135<a name="connection-manager/cws-connectors/newcamd-connector/userpass">
1136<div class='indent'>connection-manager/cws-connectors/newcamd-connector/user &amp; pass</div><br />
1137Credentials that the proxy will use when logging in to the CW server.<br />
1138<br />
1141<a name="connection-manager/cws-connectors/newcamd-connector/des-key">
1142<div class='indent'>connection-manager/cws-connectors/newcamd-connector/des-key</div><br />
1143Des key for the CW connection, overriding the default-des-key.<br />
1144<br />
1147<a name="connection-manager/cws-connectors/newcamd-connector/keepalive-interval">
1148<div class='indent'>connection-manager/cws-connectors/newcamd-connector/keepalive-interval</div><br />
1149Keep-alive interval, overriding the default-keepalive-interval.<br />
1150<br />
1153<a name="connection-manager/cws-connectors/newcamd-connector/client-id">
1154<div class='indent'>connection-manager/cws-connectors/newcamd-connector/client-id</div><br />
1155Client id bytes for newcs identification, overriding the default-client-id.<br />
1156<br />
1159<a name="connection-manager/cws-connectors/newcamd-connector/au-users">
1160<div class='indent'>connection-manager/cws-connectors/newcamd-connector/au-users</div><br />
1161List 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 />
1162One 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 />
1163<br /><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 />
1164<br />
1165Example: <em class='italic'>&lt;au-users>testuser1 testuser2&lt;/au-users></em> <br />
1166<br />
1169<a name="connection-manager/cws-connectors/newcamd-connector/asynchronous">
1170<div class='indent'>connection-manager/cws-connectors/newcamd-connector/asynchronous</div><br />
1171true/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 />
1172<br />See <strong>README.Optimization.txt</strong> for more details.<br />
1173<br />
1176<a name="connection-manager/cws-connectors/newcamd-connector/caid-profile-map">
1177<div class='indent'>connection-manager/cws-connectors/newcamd-connector/caid-profile-map</div><br />
1178If 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 />
1179This 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 />
1180<br />
1181Example: <em class='italic'>&lt;caid-profile-map>0b00=cable 0500=terrestrial&lt;/caid-profile-map></em> <br />
1182<br />
1185<a name="connection-manager/cws-connectors/csp-connector">
1186<div class='indent'><strong>connection-manager/cws-connectors/csp-connector (attributes: *name, metric, enabled, qos-class)</strong></div><br />
1187Defines 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 />
1188Csp-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 />
1189Each 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 />
1190A 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 />
1191<br /><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 />
1192- <strong class='bold'>name</strong>: Name of the connection. Just an arbitrary label to identify this particular proxy connection, must be unique.<br />
1193- <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 />
1194- <strong class='bold'>enabled</strong>: true/false (default: true). Allows for disabling a connection without deleting it.<br />
1195- <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 />
1196<br />
1197Example: <br /><br />
1198 <em class='italic'>&lt;csp-connector name="otherproxy" enabled="true"></em> <br />
1199 &nbsp;&nbsp;&nbsp;&nbsp;<em class='italic'>&lt;url>;/url></em> <br />
1200 &nbsp;&nbsp;&nbsp;&nbsp;<em class='italic'>&lt;url-backup>;/url-backup></em> <br />
1201 &nbsp;&nbsp;&nbsp;&nbsp;<em class='italic'>&lt;user>user1&lt;/user></em> <br />
1202 &nbsp;&nbsp;&nbsp;&nbsp;<em class='italic'>&lt;password>user1pw&lt;/user></em> <br />
1203 &nbsp;&nbsp;&nbsp;&nbsp;<em class='italic'>&lt;exclude-profiles>unwantedprofilename1 unwantedprofilename2&lt;/exclude-profiles></em> <br />
1204 &nbsp;&nbsp;&nbsp;&nbsp;<em class='italic'>&lt;request-cache-updates>false&lt;/request-cache-updates></em> <br />
1205 <em class='italic'>&lt;/csp-connector></em> <br />
1206<br />
1209<a name="connection-manager/cws-connectors/csp-connector/url">
1210<div class='indent'>connection-manager/cws-connectors/csp-connector/url</div><br />
1211Url 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 />
1212<br /><strong>NOTE: </strong>Do not attempt to specify the login credentials in the url, use the separate user/password elements for this.<br />
1213<br />
1214Example: <em class='italic'>&lt;url>;/url></em> <br />
1215<br />
1218<a name="connection-manager/cws-connectors/csp-connector/url-backup">
1219<div class='indent'>connection-manager/cws-connectors/csp-connector/url-backup</div><br />
1220Optional: 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 />
1221<br />
1222Example: <em class='italic'>&lt;url-backup>;/url-backup></em> <br />
1223<br />
1226<a name="connection-manager/cws-connectors/csp-connector/request-cache-updates">
1227<div class='indent'>connection-manager/cws-connectors/csp-connector/request-cache-updates</div><br />
1228If 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 />
1229<br />
1232<a name="connection-manager/cws-connectors/csp-connector/exclude-profiles">
1233<div class='indent'>connection-manager/cws-connectors/csp-connector/exclude-profiles</div><br />
1234List of profile names that should not be mapped for this connector, even when their network-id + ca-id match.<br />
1235<br />
1238<a name="connection-manager/cws-connectors/chameleon-connector">
1239<div class='indent'>connection-manager/cws-connectors/chameleon-connector (attributes: *name, metric, enabled, qos-class)</div><br />
1240Defines 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 />
1241Note 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 />
1242For 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 />
1243A 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 />
1244<br /><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 />
1245<br />
1246- <strong class='bold'>name</strong>: Name of the connection. Just an arbitrary label to identify this particular newcs connection, must be unique.<br />
1247- <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 />
1248- <strong class='bold'>enabled</strong>: true/false (default: true). Allows for disabling a connection without deleting it.<br />
1249- <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 />
1250<br />
1251Example: <br /><br />
1252 <em class='italic'>&lt;chameleon-connector name="newcs" enabled="true"></em> <br />
1253 &nbsp;&nbsp;&nbsp;&nbsp;<em class='italic'>&lt;des-key>01 02 03 04 05 06 07 08 09 10 11 12 13 14&lt;/des-key></em> <br />
1254 &nbsp;&nbsp;&nbsp;&nbsp;<em class='italic'>&lt;host>;/host></em> <br />
1255 &nbsp;&nbsp;&nbsp;&nbsp;<em class='italic'>&lt;port>5354&lt;/port></em> <br />
1256 &nbsp;&nbsp;&nbsp;&nbsp;<em class='italic'>&lt;user>user1&lt;/user></em> <br />
1257 &nbsp;&nbsp;&nbsp;&nbsp;<em class='italic'>&lt;password>user1pw&lt;/user></em> <br />
1258 &nbsp;&nbsp;&nbsp;&nbsp;<em class='italic'>&lt;profiles>satprofile1 satprofile2&lt;/profiles></em> <br />
1259 <em class='italic'>&lt;/chameleon-connector></em> <br />
1260<br />
1263<a name="connection-manager/cws-connectors/chameleon-connector/profiles">
1264<div class='indent'>connection-manager/cws-connectors/chameleon-connector/profiles</div><br />
1265Optional list of profile names that should be mapped for this connector (use this to avoid ambigious situations when there are multiple profiles using the same ca-id/ident pairs). If nothing is listed then all defined profiles are mapped.<br />
1266<br /><strong>NOTE: </strong>If you DO have profiles that share one or more ca-id/ident pairs then this list is mandatory, or the connector will accept no traffic (and remember that provider idents are associated with profiles not only from manual config but also automatically - based on card-data received from servers that are part of the profile - unless this is manually overridden). <br />
1267<br />
1268Example: <em class='italic'>&lt;profiles>satprofile1 satprofile2&lt;/profiles></em> <br />
1269<br />
1272<a name="proxy-plugins">
1273<div class='indent'>proxy-plugins</div><br />
1274Allows for custom-written arbitrary plugins. See <strong>README.Plugins.txt</strong> for a description of the plugin api.<br />
1275<br />
1278<a name="proxy-plugins/plugin">
1279<div class='indent'>proxy-plugins/plugin (attributes: *class, enabled)</div><br />
1280Defines one plugin for the proxy to load.<br />
1281- <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 />
1282- <strong class='bold'>enabled</strong>: true/false (default: true). Allows enabling/disabling plugins while running.<br />
1283- <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, and as of 0.8.11: when the plugin jar itself is touched/updated).<br />
1284<br />
1285Example: <em class='italic'>&lt;plugin class="com.bowman.cardserv.LoggingPlugin" enabled="true"></em> <br />
1286<br />
1289<a name="proxy-plugins/plugin/plugin-config">
1290<div class='indent'>proxy-plugins/plugin/plugin-config</div><br />
1291This 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 />
1292<br />
1295<a name="cache-handler">
1296<div class='indent'>cache-handler (attributes: *class, jar-file)</div><br />
1297The 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 />
1298- <strong class='bold'>class</strong>: Java class name for the cache class. It must implement the interface com.bowman.cardserv.interfaces.CacheHandler.<br />
1299- <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 />
1300<br />
1303<a name="cache-handler/cache-config">
1304<div class='indent'>cache-handler/cache-config</div><br />
1305This is the configuration supplied to the cache handler implementation, it can contain anything that the handler wants to make configurable.<br />
1306<br />
1307<br />
1308There are two example cache implementations built in:<br />
1309<strong class='bold'>com.bowman.cardserv.DefaultCache</strong> - standard simple cache<br />
1310<strong class='bold'>com.bowman.cardserv.ClusteredCache</strong> - same as default but with realtime remote sharing over udp<br />
1311See the example proxy-full.xml and <strong>README.ClusteredCache.txt</strong> for details on the various ways to configure the ClusteredCache.<br />
1312<br />
1315<a name="cache-handler/cache-config/cw-max-age">
1316For the built in default cache the following settings are available:<br />
1317<br />
1319<div class='indent'>cache-handler/cache-config/cw-max-age</div><br />
1320The 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 />
1321<br />
1324<a name="cache-handler/cache-config/max-cache-wait">
1325<div class='indent'>cache-handler/cache-config/max-cache-wait</div><br />
1326The maximum time (in seconds) that a client can be kept waiting in the cache for a pending request.<br />
1327<br /><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 />
1328See <strong>README.Optimization.txt</strong> for more details.<br />
1329<br />
1330The clustered cache (which is an extension of the default cache) has many additional settings, see <strong>README.ClusteredCache.txt</strong> for full docs.<br />
1331<br />
Note: See TracBrowser for help on using the repository browser.