source: trunk/changelog.txt@ 19

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

Added a parser for neutrino services.xml.

File size: 87.5 KB
1Cardservproxy changelog:
40.9.0 - RC6 (see README.0.9.0.txt for conceptual changes and tips)
6- Fixed: The included ConaxConnector plugin in 0.8.13 was an older version.
7- Fixed: Extra http auth login was required for accessing plugin webs (bug introduced in 0.8.13).
8- Fixed: Probing of connectors with unknown status wasn't done when cache hits occured.
9- Fixed: No longer possible to create multiple profiles where both ca-id and network-id are the same.
10- Fixed: Anonymized (non-au) newcamd card-data can no longer end up with user id 1 (this confused some clients).
11- Fixed: Disabling a profile now automatically disables any connectors that explicitly references it.
12- Fixed: Enigma services file parsing now uses comma separated filter strings, to allow names with spaces.
13- Fixed: No longer possible to set the same user as au-user for multiple cards within the same profile.
14- Fixed: Initial web startup is now delayed until after there is a usermanager available.
15- Fixed: CCcam.channelinfo parsing errors (some of them).
16- Fixed: Potentially serious and long standing ClusteredCache bug that caused sporadic io errors when sync-period > 0.
17- Changed: Now possible to configure max-cache-wait both as a fixed time value (as before) and as a percentage of
18 the max-cw-wait for the request. I.e if set to the string "50%", requests for a profile with 9000 ms max-cw-wait would
19 end up with a max-cache-wait of 4500 ms, while requests for another profile with 650 ms would get 325 ms.
20- Changed: Adding manual can-decode/cannot-decode services to a connector will now also update any previously
21 automapped data to prevent conflicting/overlapping information (so no need to clear maps after manual changes).
22- Changed: Network-id is now used in enigma services file parsing only when no provider string filter is set.
23- Changed: All time fields in the config can now be specified in minutes/secs/millisecs by adding a suffix (m, s, ms).
24 If no suffix is added, the old default for the field will be assumed (so configs/docs remain compatible).
25- Changed: Added and updated defaults in the generated proxy.xml template to make more sense with the current version.
26- Changed: ClusteredCache sync-period is now used even in receive-only mode (without peers). This can allow you to
27 significantly increase cache hits at the expense of ecm transaction time. ClusteredCache is now used by default.
28- Added: Services parser for dvbviewer exports (ini files). The filter string is matched against the "Root" key if set.
29- Added: Services parser for neutrino services.xml.
30- Added: Timed ecm blacklist per connector, to avoid forwarding the same ecm several times to a connector that can't
31 handle it (mainly when there is no sid to go by in the request). Entries will be kept for 3*max-cw-wait.
32- Added: Slightly better awareness of satellite concepts like provider-idents and other ca-system-specific artefacts.
33 This includes extending the service mapper with an additional custom-id/cid (besides sid) for systems like irdeto.
34 For some systems this will include provider-ident as a factor in the mapping (with require-provider-match for profile).
35- Changed: Max-connections changed to a per-profile value, to handle the satellite scenario of the same user connecting
36 to multiple profiles. I.e now max-connections 1 means the user is allowed 1 connection in every profile they have.
37 NOTE: This means if you change the value or add ports to a profile, you may have to kick users before it takes effect.
39- Added: New connector type 'csp-connector' specifically for chaining multiple proxies together. Requires that the
40 ONID (network-id) and ca-id is set properly for all profiles in all involved proxies. This type allows multiple
41 profiles to be shared over a single connection, and prevents loops (forwarding the same ecm back and forth between
42 proxies that have each other as connectors).
43 The protocol is documented in the source and connections are initiated using the httpd (so ssl can/should be used).
44 See proxy-reference.html for more info.
45- Added: New connector type 'chameleon-connector' for connecting to newcs as mgcamd and accessing multiple cards in one
46 newcamd session. Only properly identified traffic can be sent to this connector type (known caid + provider ident).
47 Only remote cards that map into locally defined profiles (matching caid/provider ident) will be used.
48- Added: Support for mgcamd/newcs newcamd-extensions in incoming connections (via a single extended-port for all
49 profiles), using multiple systems over a single newcamd session. For this to work all combinations of caid and
50 provider ident must map to a profile with network-id set. Ambiguous traffic will be denied.
51- Added: Redundant forwarding. The service mappers can now be configured to select two of the least loaded connectors
52 instead of just one (if two or more candidate connectors exist for a request). If enabled, this can up to double the
53 load on the cards, but assuming enough capacity exists it will mean always having a backup ready in case the primary
54 connector choice failed/timed out for any reason. Should improve reliability in single-node proxy setups.
55- Added: Plugin dependency resolver. This makes it easy to build plugins that make use of existing 3rd party libraries,
56 by fetching jars automatically on first load. See README.Plugins.txt for more info and DreamboxPlugin for examples.
57- Added: getProperties() method in the plugin interface, for returning arbitrary usage information shown in the output
58 of the proxy-plugins status command.
60- Added: When using only asynchronous connectors, it is now possible for a client session to get a cache hit even after
61 a forward to card was initiated. This can result in transactions with both F and C/R flags.
62- Added: Last-seen data now also contains entries for failed login/connect attempts, available through a new status
63 command 'login-failures' (available to all users, but non-admins can only see attempts made with their user name).
64- Added: New interface ReplyFilter that plugins can use to intercept and alter/block DCW's as they're returned from
65 connectors, before they're processed by the proxy (possibly find and delete bad CW's). See README.Plugins.txt.
66 A DcwFilterPlugin that illustrates this and blocks some common bad responses is included.
67- Added: Fixes for running under jamvm on embedded systems (including the broken auto-generating of the config template).
68- Added: New status commands for troubleshooting: 'export-services', 'system-properties', 'system-threads', 'file-log'
69 and 'proxy-plugins'.
70- Added: Option to configure the date-format used by the default logger (allows easier fail2ban monitoring).
71- Added: Arbitrary meta-data/remote info can now be returned by connectors (for display/troubleshooting/statistics).
72- Added: Multiple client ids (oscam, scam, rq-sssp etc).
73- Added: More example plugins included (and updated versions of the rest).
74- Added: JVM version check. The proxy will refuse to start with anything but a sun jvm. If you're absolutely sure, this
75 can be overridden by adding the following to the java cmd line: -Dcom.bowman.cardserv.allowanyjvm=true
77- Changes to proxy.xml:
78 Added: Element <csp-connect> to <status-web> (to receive csp-connections, enabled by default).
79 Added: Element <csp-connector> to <connectors> (to define csp-connectors). See proxy-reference.html.
80 Added: Element <chameleon-connector> to <connectors> (connector to a newcs/chameleon setup as mgcamd). Same as a
81 newcamd-connector, except it is not bound to a profile, always asynchronous and ignoring the client-id setting.
82 Added: Element <extended-newcamd> to <profiles> (unbound port for extended newcamd protocol, as used between mgcamd
83 and newcs). Allows mgcamd to use multiple systems (all profiles the user has access to) over a single connection.
84 Added: Element <log-dateformat> to <logging> (optional java SimpleDateFormat string to use for the standard logs).
85 Added: Attribute 'provider-idents' to <profile> (optional, allows listing of provider-idents, even with no connectors).
86 Added: Attribute 'require-provider-match' to <profile> (true/false, default: true). Set to false if you know that for
87 this profile, provider idents in ecm requests do not need to match those on the cards (this is the case for irdeto).
88 NOTE: If require-provider-match is false, provider-idents will get 000000 added automatically. Conversely, if only
89 ident 000000 is specified for a profile, require-provider-match defaults to false instead of true when omitted.
90 Added: Attribute 'provider-idents' to <newcamd-connector>, (optional, overrides the idents from the server/card).
91 Added: Attribute 'exclusive' to <can-decode-services> (true/false, default: false). Set to true for a list to indicate
92 that there should be no probing done for the connector, only those services listed are to be considered decodable.
93 Added: Attribute 'profile' to <can-decode-services> and <cannot-decode-services>. Only applicable for connector types
94 csp-connector and chameleon-connector, where multiple lists can be used to specify services for several profiles.
95 that there should be no probing done for the connector, only those services listed are to be considered decodable.
96 Changed: Attribute 'provider' for <service-file> changed to 'filter' to avoid confusion. If provider-idents have been
97 specified correctly for the profile, there is no longer any need to repeat that list in the case of cccam parsing.
98 Changed: All elements that allowed hex sid lists to be specified (per connector or profile) now accept an alternate
99 syntax sid:cid (where cid is custom id, used for situations like the irdeto chid where sid alone is not enough).
100 NOTE: <allow-services> is an exception, checks against that list are made with sid only.
101 Changed: Element <unknown-sid> removed from <mapper>, replaced with <dummy-services> that may contain multiple sids.
102 Use this to list any fake sids used by limited clients that can't know the real one, to avoid interference with maps.
103 Added: Element <redundant-forwarding> to <mapper> (true/false, default: false). Can be set globally or per profile,
104 as with other mapping settings. Transactions that trigger redundant forwarding will get the new flag '2'.
105 Added: Attribute 'include-file-events' to <warning-threshold> (true/false, default: true). Setting this to false
106 disables the 'file-log' http query (no file log events will be intercepted for display on the web).
108- Changes to the http/xml api: (always use /xmlHandler?command=status-commands or ctrl-commands to see syntax).
109 Added: New status command 'export-services', dumps the internal state of the service maps (admin only). Add the param
110 format=hex for an alternate format matching the sid lists used in the config.
111 Added: New status command 'system-properties', shows the JVM system properties (superuser only).
112 Added: New status command 'system-threads', dumps all JVM threads as strings (superuser only).
113 Added: New status command 'login-failures', shows a list of failed login attempts per user or ip (for most interfaces).
114 Added: New status command 'proxy-plugins' for listing all loaded plugins and any associated info they publish.
115 Added: New status command 'file-log', returns recently intercepted file loggings with level WARNING or SEVERE.
116 Added: New ctrl command 'gen-keystore', auto creates a java keystore for using the status web with SSL.
117 Added: New ctrl command 'disable-connector', temporarily disables a specified connector.
118 Added: New ctrl command 'set-profile-debug', temporarily changes debug flags (set to false for ALL to delete ecm logs).
119 Added: New ctrl command 'set-user-debug', temporarily changes debug for a user (enabling log-ecm, log-emm, log-zap).
120 Added: New ctrl command 'remove-failed', removes entries matching specified wildcard mask from login-failures.
121 Added: New ctrl command 'clear-file-log', removes intercepted file log entries from the web-backend.
122 Added: Attribute 'time' to <jvm> (proxy-status output). Local system time as a rfc822 date.
123 Added: Attribute 'cdata' to <service> (most output containing services). Custom data for service mapping (chid/ident).
124 Added: Element <remote-info> to <connector> (cws-connectors output). List of <cws-param> elements with name/value
125 attributes, containing arbitrary information about the connector.
126 Added: Attributes 'network-id', 'ca-id', 'provider-ident' and 'origin-id' to <ecm> (transaction logs). These are only
127 included when the transaction occured in the '*' profile, and origin-id only for CspSession transactions.
128 Added: Attribute 'au' to <session> for NewcamdSessions. Indicates which connector the session is forwarding emms to.
129 Added: Attribute 'build' to <proxy-status>. The build number for the running cardservproxy.jar.
1320.8.13 - 2009-10-18
134- Added: New attribute per profile 'network-id' (the original dvb network id, 4 hex digits). This will uniquely
135 identify profiles between proxies, instead of ca-id. It will also be used in filtering enigma services files.
136 See proxy-reference.html for info about how to find the id if you don't know your dvb-network.
137- Added: Optional mapping table to auto-assign newcamd connectors to profiles based on ca-id, to make this work as
138 before even when multiple profiles use the same ca-id (no longer any need to set 0000, use the correct id always).
139 Use this only when it is unknown which card a remote newcamd server contains (or when this changes randomly).
140- Added: ClusteredCache now avoids locking for requests where a remotely received cache lock has the same ip as
141 requesting client, to deal with situations where both connectors and cache sharing are used to link multiple proxies
142 together (prevents incoming ecm requests from a remote proxy being blocked by the cache lock from that same proxy).
143- Added: Plugins can now affect connector selection, if they implement the interface CwsSelector. They'll be given a
144 chance to exclude connectors from the selection process for each message.
145- Added: Cache hits where the cached request had a different ca-id will now be blocked, to avoid misleading clients
146 that are sending requests to the wrong profile. This can be disabled using new global setting <block-caid-mismatch>.
147- Added: Disconnected connectors now show when they went offline.
148- Added: Newcamd OSD messages are now sent to Acamd as well (previously only to Mgcamd).
149- Added: More user events in the remote api (login, logout, login failure). Plugins can use these as well.
150- Changed: ClusteredCache now uses a much more compact format to reduce bandwidth (not compatible with old versions).
151- Fixed: ClusteredCache bandwidth usage estimates are now properly calculated even with multiple peers and sync-period.
152- Fixed: Minor browser-specific issues with the status web layouts (clear the browser cache or force a reload).
154- Changes to proxy.xml:
155 Added: Attribute 'network-id' to <profile> (4 hex digits, i.e "a027"). Set this to the original dvb network id.
156 Added: Element <block-caid-mismatch> (true/false, default: true) to section ca-profiles.
157 Added: Element <caid-profile-map> to <newcamd-connector> (caid=profilename, entries separated by space). This element
158 is mandatory if no profile attribute is set for the connector.
159 For example: <caid-profile-map>0b00=cable 0500=terrestrial</caid-profile-map)
161- Changes to the http/xml api:
162 Added: Attribute 'disconnected' to <connector> (cws-connectors output). The time of last disconnect (if disconnected).
163 Added: Attribute 'network-id' to <profile> (ca-profiles output).
1660.8.12 - 2009-06-29
168- Fixed: No forwarding attempt will now be made if a cache timeout meant that max-cw-wait was already exceeded.
169- Added: Experimental broadcasting of ecms without sid to all non-congested connectors in profile (off by default).
170- Added: Client id for DiabloCam wifi (uw?).
171- Added: Command to clean the last-seen log.
172- Added: Made the connector reconnect attempts more visible and consistent in the status web.
173- Changed: Radegast sessions are no longer added to disconnected users/last-seen log.
174- Changed: Connectors that fail on proxy startup are now added anyway, to make them visible via the http/xml api.
175 NOTE: If the failed connector has no profile specified, it will still not be visible until it has connected properly.
176- Fixed: Error when unloading the LoggingPlugin.
177- Fixed: Lost service warnings are no longer shown for sids that have been made sticky using can-decode-services.
178- Fixed: Slow memory leak in ClusteredCache when using sync-period.
179- Fixed: Typos in the generated proxy.xml template.
180- Fixed: Inconsistent username case handling.
181- Fixed: Card-data with extra trailing bytes would break sessions for non-au users (rqcs).
182- Fixed: The open-access handling should now work for xmlusermanager as well as simpleusermanager.
183- Updated ConaxConnector to latest version.
185- Changes to proxy.xml:
186 Added: Element <hide-disabled-connectors> (true/false, default: false) to section mapper.
187 Added: Element <broadcast-missing-sid> (true/false, default: false) to section mapper.
189- Changes to the http/xml api:
190 Added: New ctrl command 'remove-seen', removes users matching the 'name' parameter from the last-seen log.
191 Added: Attribute 'next-attempt' to <connector> (cws-connectors output). Shows the nr of secs until next retry.
1940.8.11 - 2009-05-01
196- Added: Jvm stats in the debug logging: heap used/allocated, thread count, file descriptors (used and max, unix only).
197- Added: UserManager interface now has a getDisplayName() method, to allow for an optional display-name attribute.
198- Added: Client id for Rq-echo-client and sbcl.
199- Added: Config and Admin sections (status-web) are now disabled by default. List users that should have access to
200 these in the new super-users element in the status-web section.
201- Added: MessagingPlugin can now send automated email with the same type of triggers as for mgcamd-osd.
202- Added: Msg filtering now shows up in LoggingPlugin (assuming the filtering plugin used msg.setFilteredBy() to do it).
203- Added: SimpleUserManager now allows for open access, accepting any newcamd connections as long as they have the right
204 (common) password. Open access can be restricted to specific profiles or to usernames starting with a certain prefix.
205 NOTE: Random user names will be assigned, but the display-name will be whatever the client specified.
206- Added: Made it possible to configure card-data (non-au) for newcamd ports without editing the card-files manually.
207- Added: A parser for using CCcam.channelinfo as the services-file for a profile. As with enigma files you need to
208 specify which sids are relevant for this profile by creating a filter. See proxy-reference.html for details.
209- Added: Externally loaded plugins can now be individually re-loaded just by replacing the jar file.
210- Fixed: When using the status-web without ssl, any specified bind-ip was ignored.
211- Fixed: Distribution tars finally corrected.
212- Fixed: Enigma bouquet-file generator in the status web might actually produce valid files now (enigma services-file).
213- Fixed: Status-web session transfer from script/ajax context to browser context via cookie was always broken.
214- Fixed: Made card-data parsing less sensetive to errors/truncated data.
215- Changed: More minor tweaks of the status web views.
216- Changed: Blowfish encryption tool trtest.jar renamed to: fishenc.jar
217- Updated the codemirror xml/js editor (used in the status-web) to version 0.61.
219- Changes to proxy.xml:
220 Added: Element <super-users> to <status-web>. List of user names that should have access to the Config and Admin
221 sections (the users must have admin="true" or they'll be ignored).
222 Added: Element <open-access> to <auth-config> (SimpleUserManager/XmlUserManager). See proxy-reference.html.
223 Added: Attribute 'ca-id' to <card-data> (newcamd listen ports). The ca-id returned to clients, when type="config".
224 Added: Element <providers> to <card-data>. List of providers returned to clients when type="config". 3 bytes each,
225 separated by comma, i.e: 00 00 00,00 00 01,00 00 02
227- Changes to the http/xml api:
228 Added: Attributes 'filedesc-open' and 'filedesc-max' to <jvm> (proxy-status output). Used/max file-descriptors, only
229 available on unix jvm's (java6+). See README.Optimization.txt for info on increasing this limit on linux.
230 Added: Attribute 'super-user' to <status> (cws-login output for successful login). Indicates whether the user has
231 access to control commands and is allowed to modify the config.
232 Added: Attribute 'display-name' to <user> (proxy-users output). The status web will use this primarily, if available.
2350.8.10 - 2009-03-08
237- Fixed: The experimental strict synchronization for ClusteredCache now does what it claimed to (sync-period).
238- Fixed: Setting debug="true" for the logging now outputs any stacktraces at WARNING level, as indicated in the docs.
239- Fixed: Sessions weren't always being properly disconnected when session timeout was hit (introduced in 0.8.9).
240- Fixed: Newcamd sequence nr wasn't set correctly in EMM replies (caused some clients to log errors).
241- Fixed: Possible socket handle leak when new sessions couldn't be created. This may have caused listen ports to close.
242- Fixed: The default value for user attribute max-connections is now calculated correctly, based on the total number of
243 newcamd listen-ports in the profiles the user has access to. See INFO logging on startup and on connect for the values.
244- Fixed: If a user exceeds the max-connections count, the session that is closed is now always the oldest one.
245- Changed: Slightly improved views and more stat values in the example status web.
246- Changed: ClusteredCache now accepts multiple proxies running on the same host name (on different ports).
247- Changed: ClusteredCache is now slightly less inefficient with its bandwidth usage (still much room for improvement).
248- Added: ClusteredCache now pings each peer regularly to keep track of latency (breaks compatibility with old versions).
249- Added: ClusteredCache additional stat counters (toggle debug for the cache to see all).
250- Added: Custom usermanager and cache implementations can now be loaded with the plugin classloader (from a jar-file).
251- Added: Additional custom connector implementations can now be loaded, also via the plugin classloader if desired.
252 A new example connector is included with the plugis: ConaxConnector - It reads local conax cards directly using java6
253 and pcsc card-readers. See README.ConaxConnector.txt for more info.
255- Changes to proxy.xml:
256 Added: Attribute 'jar-file' to elements <user-manager> and <cache-handler> (optional). If this is specified, the class
257 will be loaded by the plugin classloader from the named jar-file (path relative to the plugins dir).
258 NOTE: This doesn't mean the implementations can be re-loaded dynamically, restart is still required for new jars.
259 Added: It is now possible to specify custom connector implementations using the same notation as the built in newcamd
260 and radegast connectors, but with the added attributes of 'class' and optionally also 'jar-file'.
261 If a jar-file is specified the plugin classloader is used, as above. For example:
262 <conax-connector name="lcard" profile="sat2" class="com.bowman.cardserv.cws.ConaxCwsConnector" jar-file="conaxconnector.jar">
263 <!-- config goes here -->
264 </conax-connector>
266- Changes to the http/xml api:
267 Added: Attributes 'active' and 'keepalive-count' to the <session> element (proxy-users output). This is used to show
268 which inactive/idle sessions are sending keepalives in the status web (they are shown in blue). All inactive rows
269 will show with italic font.
270 Added: Element <listen-port> to <profile> (ca-profiles output). Listen ports are now separate child elements with the
271 attributes: name, protocol, port-number, alive (true/false), properties (custom settings as key=value string).
272 Removed: Attribute 'listen-ports' from <profile>, replaced with the above list of <listen-port> elements.
2750.8.9 - 2008-11-04
277- Fixed: Possible infinite loop state for the file-change-watcher (would fill sysout log once triggered).
278- Added: The reset-connector ctrl command can now be used to delete all mappings (full reset).
279- Added: Client ids for and octagon stbs.
280- Added: A test-delay feature for the LoggingPlugin. This allows for a manually added delay applied to all logged
281 requests (before they are processed). The delay can be set via status web command, and is intended as tool for
282 finding the exact freeze-time for a given ca-profile, i.e: gradually increase the delay until freeze and note the
283 full ecm transaction time (roundtrip) in the client logs. The LoggingPlugin has also received a feature for sending
284 arbitrary newcamd-messages. This can be used to explore the capabilities of different clients in realtime.
285- Added: New setting for allow-services lists, per profile (inverse of block-services).
286- Added: The duration column in the status-web now shows the time since last zap (if any has occured since connect).
287- Added: Feature for sending keep-alives to clients as well as servers. Normally only the client sends these in newcamd,
288 but most clients seem to ignore incoming keep-alives. It can be used to find dead sessions faster in very large shares.
289- Changed: XmlUserManager now considers deleted users as disabled (causing any active sessions to be kicked).
290- Changed: max-cw-wait can now be set per ca-profile, as it is typically different from one ca-system to the next.
291 This also means all capacity estimates (status-web) can be made more accurate. Use the test-delay feature of the
292 LoggingPlugin to find the freeze-time for each profile, and set the max-cw-wait to this (or 1 second above).
293- Changed: Moved more previously hard-coded settings to config. No need to touch these unless you know what its about.
294- Updated the codemirror xml/js editor (used in the status-web) to version 0.58.
295- Misc minor fixes.
297- Changes to proxy.xml:
298 Added: Element <max-threads> to <ca-profiles> (default: 1000). If this is reached the proxy will stop accepting
299 connections until it drops again. The fixed default in 0.8.8 was 500.
300 Added: Element <session-timeout> to <ca-profiles> (default: 120, in minutes). Maximum idle time for user sessions.
301 Added: Element <newcamd-maxmsgsize> to <ca-profiles> (default: 400). This is CWS_NETMSGSIZE. The old default was 240,
302 so try that if you run into any problems related to message size.
303 Added: Element <allow-services> to section mapper. List of sids (hex). The inverse of <block-services>, only sids
304 listed here will be passed through to connectors. This can help filter out requests with bad ecms, and reduce
305 unecessary probing of the cards. As for block-services, it only makes sense to specify this element per profile.
306 Added: Elements <max-cw-wait> and <congestion-limit> to <profile>. Same settings as for the connection-manager, but
307 allows overriding the global setting per profile.
308 Added: Element <session-keepalive> to <ca-profiles> (default: 0, in minutes = off). Sends keep-alives to clients.
309 Attributes are: exclude-clients (list of client names, default: "" = send to all). Exclude listed client types.
311- Changes to the http/xml api:
312 Added: Attribute 'id' to the <session> element (proxy-users output). The numerical id for the session, can be matched
313 to the proxy logs (or LoggingPlugin log file names).
314 Added: Attribute 'idle-time' to the <session> element. Shows how long the connection has been idle.
3170.8.8 - 2008-09-23
319- Added: Client id for acamd.
320- Added: Support for multiple xml sources in XmlUserManager (see README.XmlUserManager.txt). This also fixes handling
321 of deleted users (which previously required a restart/config reload).
322- Added: Support for enigma2 format in bouquet file generator (status web channels section).
323- Added: Various mechanisms to protect the proxy from connector disconnects in case of misbehaving/buggy clients.
324- Added: Multiple format support for the services file importer (assigning names to sids). At the moment only two:
325 enigma - the default (as before, enigma1/2 services file with optional provider string filter)
326 simple - a plain text list with hex-sid=service name (provider attribute is ignored, use one file per profile)
327- Changed: Now skipping all host name/cert verification when making outgoing connections to https urls.
328- Changed: LoggingPlugin now saves files named with session id instead of ip (separates multiple sessions from one ip).
329- Changed: Moved MAX_Q_SIZE and MIN_DELAY to proxy.xml to allow for additional tweaking of the connector behavior.
330 Don't touch these unless you fully understand the implications.
331- Changed: The manual service mapping (<can-decode-services>/<cannot-decode-services> per connector) is now profile
332 specific rather than global. This matches the automatic service mapping and will hopefully cause less confusion.
333- Changed: Clicking on the user names in the status web sessions view now links to the full xml for that user. The ecm
334 transaction log is available via clicking on the ecm count instead (last-seen also changed to match this).
335 Additionally, if a user session currently has more than 1 pending ecm this will be shown in (red) in the Iv column.
336- Fixed: Minor leaks related to logging.
337- Fixed: Rare date formatting errors (mainly for the status web).
339- Changes to proxy.xml:
340 Added: Element <default-max-queue> to <connection-manager> (default: 50). Max queue length allowed to build up on
341 one connector before the proxy assumes something has crashed and disconnects it.
342 Added: Element <default-min-delay> to <connection-manager> (default: 10, in ms). Delay inserted between consecutive
343 ecms to one connector in async mode. Workaround for servers that misbehave when requests are too close together.
344 Added: Elements <max-queue> and <min-delay> to <newcamd-connector>/<radegast-connector>, same as above but specified
345 per individual connector (allowing different values for different connectors).
346 Added: Attribute 'format' to <services-file> (default: enigma). Example for the "simple" format:
347 <services-file format="simple">etc/</services-file> <!-- format e.g: 03fb=Service Name -->
349- Changes to the http/xml api:
350 Added: Attribute 'last-zap' and 'pending-count' to the <session> element (proxy-users output). Indicating the time
351 since last 'Z' flag and the number of currently pending requests a session has (>1 means its using async mode).
352 Added: Attribute 'context' to the <session> element (proxy-users output). This shows the context of the last ecm
353 from the client (roughly = the card that the client believes it is connected to).
354 Added: Attribute 'unknown-newcamd' to <ecm> elements (user/cws-log output). This is an attempt to chart what the
355 various clients and servers use the "undocumented" extra newcamd bytes for: offsets 4 - 9, and the 4 upper bits of
356 offset 11. The attribute will contain these values for both the request (>) and the reply (<).
3590.8.7 - 2008-08-23
361- Added: Connector info now contains details about the received newcamd card-data (status web/xml api).
362- Added: Client id for rqcamd.
363- Fixed: Capacity estimates remained for cards that were disconnected, they are now excluded from the totals.
364- Fixed: Plugins only worked if all of them were externally loaded (from separate jar file). I.e: LoggingPlugin failed.
365- Fixed: A few unlikely memory leaks related to connectors ending up in a zombie state (seemingly ok but locked).
366- Changed: Only client id 0000 is now displayed as Generic, other unknowns will be shown by the actual numerical id.
367- Changed: Transaction flags are now in the order in which they are set internally by csp, not alphabetical.
368- Minor updates to the example plugins.
370- Changes to the http/xml api:
371 Added: Attribute 'card-data1' and 'card-data2' to the <connector> element (cws-connectors output). Admin only.
3740.8.6 - 2008-07-27
376- Changed: Xml status commands are now handled like the control commands, they can be registered and added on the fly
377 by any user component. This also makes it possible to override the default command handlers with your own.
378- Changed: Reworked the "filters" interface to a more generic plugin framework, to enable quick extensions that
379 are not directly related to the ecm traffic (LoggingFilter changed to LoggingPlugin).
380- Added: GeoipPlugin. Illustrates the plugin framework and command overriding (adds a google maps + geoip mashup).
381- Added: EmmAnalyzerPlugin. Gathers statistics regarding emms received from clients.
382- Added: MessagingPlugin. Auto mgcamd-osd replies for client session (e.g "service unavailable") and mail to users.
383- Added: New flag '1' (one), assigned to the first transaction a session performs (instead of Z as before).
384- Added: Stat counter for denied/blocked ecm's (flag N).
385- Added: Missing client ids (cccam, evocamd, alexcs etc).
387- Changes to proxy.xml:
388 Changed: Elements <proxy-filters>, <filter> and <filter-config> renamed to <proxy-plugins>, <plugin> and
389 <plugin-config>.
390 Added: Attribute 'jar-file' to <proxy-plugin>. Allows loading the plugin using a separate classloader, from an
391 external jar file in the "plugins" dir. This way plugins can be replaced/reloaded at runtime without restarting
392 the proxy (they are reloaded and restarted each time the proxy.xml config is touched/updated).
393 Added: Element <delay-missing-sid> to <connection-manager> (default: 100, in ms). This adds a short delay for any
394 incoming request without sid, before the cache is checked. The idea is to increase the likelyhood of a another
395 request for the same ecm (but with sid specified) arriving first in the cache. This is to avoid having a large
396 number of clients waiting in the cache for a forward that might get routed to the wrong card (because it had no sid).
398- Changes to the http/xml api:
399 Changed: Status command 'error-log' will now always honor a profile selection (previously admin users would get all
400 profiles regardless of preference).
401 Added: New status command 'status-commands', lists meta-data for all registered status commands.
4040.8.5 - 2008-06-29
406- Fixed: Proxy now sets correct service id in cache hit replies (i.e same as in the request, unless 0).
407- Fixed: Repeated web events for "cws connected" retries when the server returned invalid card data (caid 0 or mismatch).
408- Fixed: Connector name was sometimes missing in the transaction time breakdown even though the F-flag was set.
409- Fixed: XmlUserManager will now keep its last known working set of users when proxy configuration changes are made.
410- If a reply was received from a remote cache, the connector name in the transaction data is now prefixed with:
411 "remote:" - to make it possible to distinguish when the same names are present locally.
412- "Last seen" session data now includes last known ip address for the user.
413- Cache flag 'O' is now strictly for timeouts in the cache (max-cache-wait exceeded). Added new flag 'Q' for aborts due
414 to forward failures (remote or local).
415- Added filtering per profile to status web (only shown for users with access to more than one, in events + channels).
416- Added ecm load estimates to status web totals and ca-profiles (sums based on the cws-connector data below).
417- Added a tool for tracing configuration file use in the proxy. Set -Dcom.bowman.cardserv.util.tracexmlcfg=true when
418 starting the proxy and all config access will be traced. This trace can be written to file (etc/xmlcfg.txt) by using
419 the CtrlCommand "dump" from the admin page of the status web (or by using the http/xml api directly).
421- Changes to proxy.xml:
422 Added: Element <hide-names> for ClusteredCache (true/false, default: false). Set to true to stop the cache from
423 sending the connector names to the remote targets (only makes sense if they are untrusted/unknown and the names
424 contain sensetive information).
425 Changed: Attribute 'debug' for <profile> now defaults to true. The flag is only used to enable the transaction
426 backlog and there is typically no reason not to have that.
428- Changes to the http/xml api:
429 Added: Attributes 'request-hash', 'cw' and 'warning' to the <ecm> element (user-log output). The request hash allows
430 comparison with the hash values logged elsewhere, and makes it possible to identify a particular ecm request.
431 If 'cw' is not present, it indicates the client received an empty reply (flag 'E' should also be present).
432 If 'warning' is true, the proxy considered this transaction a problem and logged it also to the user-warning-log.
433 Added: Attribute 'host' to <entry> (last-seen output).
434 Fixed: Status command 'ctrl-commands' was available for non-admin users via http GET (listing command definitions
435 only, no actual execution possible).
436 Added: New status command: cws-log (params: name). Allows the admin user to view the last 100 transactions for the
437 specified cws-connector. Note that this is still ecm transactions from the user point of view, so time stamps and
438 durations reflect when the client sessions sent ecms to the proxy, not when the proxy sent it on to the connector.
439 In the status web, a link to this log appears under each connector in the status view.
4420.8.4 - 2008-05-27
444- Fixed: Old ecm replies being processed as card data on rapid newcamd reconnects (caused parse errors and bogus ca-id
445 for connectors, leading to them being disabled).
446- Fixed: Newcamd clients sending multiple async requests to the proxy would get incorrect/duplicate sequence numbers
447 in their replies (effectively making the proxy incompatible with async mode).
448- Fixed: Events for connectors with no profile configured (i.e those with auto-detect) were hidden even from admin in
449 the web error-log.
450- Fixed: Connection failures occuring during startup are no longer filtered in the web view. Also replaced the firefox
451 alert error for when the web script can't reach the proxy to something less cryptic.
452- Connector re-connect behaviour on login failure improved (no longer logs disconnects which would cause 3 sec loop).
453- Flag T is now only used for actual timeouts when forwarding, transactions affected by aborts/disconnects will receive
454 flag A instead.
455- Service names will now include a [R] prefix for radio and [HD] for hdtv (based on the type from the services file).
456- Added more details to the LoggingFilter output (sequence numbers, sids, sessions) to improve client troubleshooting.
457- Duplicate newcamd messages (with the same sequence number) are now logged as warnings for the CWS communication.
458 Also, if debug logging is set the same is done for client communication (although these can occur normally when
459 zapping or due to local network lag/congestion and don't necessarily mean trouble).
460 NOTE: If a server returns the same sequence id twice (without having been sent that) it indicates something went
461 wrong on the server side, either some kind of overload situation or outright bugs.
462 If it repeats it needs to be investigated further and resolved.
463 The proxy will now also check to make sure the sid in the reply matches the one in the request, to help identify
464 error replies.
465- For case-insensetive user managers (e.g SimpleUserManager), the stored case of the user name is now used instead of
466 the one supplied by the client for the login.
468- Changes to proxy.xml:
469 Added: Element <log-sid-mismatch> to <connection-manager> (true/false, default: true). Allows turning off logging
470 warnings when sid in the server reply doesn't match what was in the request.
4730.8.3 - 2008-04-15
475- Fixed: CtrlCommands caused NPE if status-web was disabled or had failed to start.
476- Fixed: Logging in case newcamd card data could not be parsed (WARNING level + the offending data now logged).
477- Fixed: Services from different profiles could be merged in the watched-services xml reply if they had the same name.
478- Fixed: Minor pending ecm leak in ClusteredCache.
479- Changed asynchronous newcamd mode to be off by default as it caused problems with some servers (you now have to
480 explicitly set <asynchronous>true</asynchronous> for each connector if you want to use it).
481- Further tweaked utilization estimates, now using different methods depending on async/sync mode.
482- Made it possible to manually override the service maps for each connector, by specifying sid lists. Useful for
483 situations where the automatic service discovery is unreliable. Services that aren't manually specified will still
484 be probed for automatically.
485- Status web now shows services with full information (sid and profile), space and context permitting.
486 Additionally, services listed per connector will be highlighted blue if a forward occured for that service in the
487 last max-cw-age seconds (allows you to see roughly which services the ecm-load value refers to).
489- Added a mechanism to better handle overload situations (= only congested/timeout state connectors are available).
490 If this is enabled (which is default), the proxy will avoid forwarding until the situation resolves itself,
491 by returning empty cannot-decode replies to clients (flag N). Note that this typically causes clients to retry
492 repeatedly (e.g with a 1 sec interval), but that these retries will also fail immediately until there is card
493 capacity available.
494 This may help stabilize traffic in overloaded shares (or shares where cards are temporarily lost).
495 Clients that don't retry the same ecm immediately when receiving an empty reply will likely freeze.
497- Changes to proxy.xml:
498 Added: Element <hard-congestion-limit> (true/false, default: true) to <connection-manager>. See above.
499 Changed: Element <asynchronous> for <newcamd-connector> default value changed to false.
500 Added: Elements <can-decode-services> and <cannot-decode-services> to all connector types. Optional lists of
501 sids (hex) allowing manual overriding of the automatic service mapping. Note that services already known to decode
502 on a connector will not be affected by the cannot-decode-services list (until a manual reset is performed, or the
503 corresponding .dat file is deleted from the cache dir).
505- Changes to the http/xml api:
506 Added: Attribute 'hit' to <service> elements for <connector> (cws-connectors reply). If this attribute is present
507 and the value is 'true', it indicates there was a forward for this service within the last max-cw-age seconds.
5100.8.2 - 2008-03-07
512- Fixed: ArrayIndexOutOfBounds on emm forwards to newcamd connectors set to asynchronous false.
513- Fixed: Connectors getting stuck in unresponsive state for extended periods (keep-alives are now sent as before 0.8.0).
514- Fixed: CWS average processing time included send-queue time (even with async false), restored old behavior.
515 The utilization and capacity calculations have also been tweaked to use the most optimistic estimates (since averages
516 will vary in async mode), this may help with async connectors showing more utilization than they actually have.
518- Congestion warnings are now logged only when no alternative connectors exist. Also, the utilization estimate is now a
519 factor in determining congestion (i.e > 100% over the last 60 secs = congested even when there are 0 pending requests).
520- Made it possible to configure the threshold for logging CWS timeout events (default 1, was 2 before 0.8.0).
521 The number of timeouts to allow in a row before disconnecting can also be set (default 2, was 3 before 0.8.0).
522- The max-connections value (per user) now defaults to the number of profiles the user has access to, or the total
523 number of active profiles if there are no restrictions. Previous default was 1, if you want to keep that limit you
524 will now have to explicitly set every user to max-connections="1" in the user manager.
525- Flag T now means only this: Timeout when forwarding (no response from CWS within time limit, i.e max-cw-wait).
526- New flag S introduced: Timeout in send queue (when trying to forward to connector, should normally not occur).
527- The log event (level FINE) that occurs when client sessions end now contains a summary of the session state, to help
528 show why the client may have disconnected. If the user has debug="true" this is logged with level INFO.
529- If the ca-id for card data (received during login for a newcamd connector) is 0000, the proxy will fail the login and
530 try again later instead of disabling the connector. This may help with re-init card issues that cause servers to
531 temporarily return empty card data.
532 If override-checks is true then this check is also skipped and the 0000 data accepted as valid.
534- Changes to proxy.xml (optional additions only):
535 Added: Element <event-threshold> to <logging>, defining how many failures are required to create a CWS event.
536 Attributes are: min-count (default 1).
537 Added: Element <timeout-disconnect-threshold> to <connector-manager>. The number of timeouts before a connector
538 is closed and reconnected (default 2).
540- Changes to the http/xml api:
541 Added: Attribute 'ecm-load' to <connector>. This shows the ecm count over the last max-cw-wait seconds. This provides
542 an absolute measure of the load on the connector (whereas the utilization is relative to the estimated capacity).
5450.8.1 - 2008-02-28
547- Fixed: Potential deadlocks in relation to network timeouts, introduced in 0.8.0 (sessions waiting on connectors
548 waiting on sessions). Caused eventually fatal thread leaks.
549- Fixed: Javascript alert box infinite repeat for some status web errors that resulted in logout.
550- Fixed: The improved probing could still generate duplicates.
551- Modified to work with JamVM (1.4.3+)! If you get "Unrecognized option" socket exceptions for the connectors, add
552 the following attribute to the connector definitions (both radegast and newcamd): qos-class="none"
553 For more information on JamVM and gnu classpath see:
557- Added a quick-start option: if the proxy is started with no proxy.xml config file, one will be generated.
558 The generated config will use recommended defaults, and a single profile with two connectors (disabled).
559 Most non-essential elements can now be omitted from the config, defaults will be used if they are.
560 Some defaults have been altered (e.g retry-lost-services now defaults to true, missing services files are ignored etc).
5630.8.0 - 2008-02-25
565- Switched to fully asynchronous newcamd communication with servers. This should significantly increase throughput, but
566 may not work with all servers. If it fails or behaves erratically with your server of choice, the old behaviour can
567 still be used if the newcamd-connector element contains <asynchronous>false</asynchronous>.
568 Radegast connectors always use the old synchronous mode.
570- More changes to support other jvms (removed references to sun base64, and httpd now tries multiple ssl providers).
571- Added a javascript xml-editor to the status-web, for quick config updates (based on codemirror, source included).
572- Forced parsing of proxy.xml to always use UTF-8 regardless of system locale (when installed from both file and web).
573- Cleaned up web backend and made it possible to extend it from user code (see ClusteredCache, XmlUserManager source).
574- Cleaned up the client side scripting for the status-web, it now uses xslt to generate the markup (see xslt dir in war).
575- All user-log transactions will now contain cws-name (if it was a transaction that involved a forward).
576- Added a new user-warning-log with potential problems from all user recent transactions (40 most recent).
577- Transactions marked as warnings will now contain additional debug information, and show the time spent on each stage:
578 in cache, cws send queue, cws reply wait, client write back.
579- Tweaked probing to avoid multiple probes for the same service and connector, and avoid problems under high load.
580- Fixed: Now possible to add new ca-profiles without restarting.
581- Fixed: Transaction tracking now correctly deals with overlapping/asynchronous newcamd traffic. Flag E is now always
582 included if the client reply was empty, regardless of the cause.
583- ClusteredCache will now indicate in the log which remote proxy has the wrong version (SEVERE event on startup).
584 Additionally the cache stats on the web will contain a version-mismatch property with the same IP.
585- Status web section "Sessions" (previously Users) will now contain last-seen information for disconnected users and
586 an option to show the idle sessions. Note: No last-seen data will be shown if all known users are connected.
587 This section is now shown for regular users (non-admin) but will only list information related to their own sessions.
589- Made it possible to read connector definitions from an external or remotely hosted file, similar to XmlUserManager.
590 NOTE: This doesn't mean you should have multiple proxies reading from the same connector file, use one for each.
591 As with the XmlUserManager and the ClusteredCache tracker file, the blowfish option is there strictly to allow the
592 files to be hosted in a public place (it adds _zero_ security if the files are hosted with the proxy).
593 Using an external connector config also makes it possible to keep connector definitions in a database, just provide
594 a php/jsp/asp page to render the xml on demand.
596- Changes to proxy.xml:
597 Added: Element <warning-threshold> to <logging>. Defines which transactions should be considered potential problems.
598 Attributes are: bad-flags (string list of all that should qualify), max-delay (in ms).
599 This setting determines what will show in the user-warning-log for profiles that have debug="true".
600 Note: changing it will not affect already recorded events.
601 Added: Element <external-connector-config> to <connector-manager>. Specifies an external source for connector
602 definitions with the following elements: connector-file-url, connector-file-key, update-interval (minutes).
603 Added: Element <asynchronous> to <newcamd-connector> (true/false, default: true). A way to disable asynchronous mode.
605- Changes to the http/xml api:
606 Added: Example test page: /api-test.html
607 Added: New status command: fetch-cfg (no params). Returns the currently used config file as is (no cws-status-resp).
608 Added: New http end point /cfgHandler (for posting updated config xml, as an admin user with http basic auth login).
609 Added: New status command: user-warning-log. This log is aggregated and contains the 40 last potential problems from
610 the user transaction logs. Only profiles with debug="true" will trace these events. Events of the same type from
611 the same user are merged and tagged with a count (time stamp and transaction shown are always from the last such
612 event logged). Any transaction that fits the warning-threshold critera will qualify (see config). Only admins will
613 see warnings from other users traffic.
614 Removed: Attribute 'admin' from <proxy-users> reply when requesting multiple or all users (i.e. no name specified).
615 Caused problems for some user managers and wasn't used for anything.
616 Added: New status command: last-seen (params: name). Returns information about currently disconnected users.
617 This data is tracked by the session manager and saved regularly as etc/seen.dat. Delete it before startup to clear
618 the seen history.
6200.7.6 - 2008-02-02
622- Changed the example LoggingFilter into something actually usable. It now logs just the raw messages (minus encryption)
623 from user sesssions (as RECV) and their responses from the proxy (as SENT).
624- Removed all unnecessary java.util.logging experiments, to be compatible with gcj/gij and possibly other jvms.
625- Fixed: Removing au-users no longer requires restart.
626- Fixed: Adding/removing/changing listen ports should now work without restart. Disabling a profile will close the
627 ports (but existing sessions are not affected until kicked). Any change to a ca-profile config will result in the
628 listen ports for that profile being closed and reopened.
629- Fixed: Status-web httpd no longer logs to sysout if its log file is disabled (removed from config).
630- Fixed: Status-web jscript continues to request xml after connection errors (now logs out instead).
631- Fixed: Cache timestamp bug that could sporadically delete all cached ecms except one.
632- Fixed: ECM interval for radegast sessions (0 was always shown).
633- Fixed: Mgcamd OSD message sending would fail if radegast sessions were active.
634- Exposed the automatic rotation features of the logging api, in case anyone is serious about using the logs for stats.
635 A maximum size for all file logs as well as a number of files to cycle through can be specified (see below).
636 Additionally, any active file logs are now re-initialized when the config is updated/touched.
637- Added JVM stats to the status-web title for all views (os, version, heap used/allocated, thread count etc).
638- Enhanced the embedded httpd (keep-alive connections, gzip content-encoding).
640- Changes to proxy.xml:
641 Changed: Renamed <exclude-services> setting to <reset-services>, to reflect what it actually does.
642 Services in this list will also no longer cause "lost service" warnings.
643 Changed: <auto-exclude-threshold> is now <auto-reset-threshold>.
644 Added: Attribute 'bind-ip' to listen-ports. Optional local ip to bind listeners to (default is all, i.e
645 Added: Element <bind-ip> to <status-web>. Optional local ip to bind httpd listen port to.
646 Added: Element <bind-ip> to <rmi>. Optional local ip to bind all rmi-related listen ports to.
647 Added: Attributes 'rotate-count' and 'rotate-max-size' (in kb) to <log-file> (for both main log and status-web).
648 E.g: setting count to 3 and max-size to 2048 will cycle between file.log.0, file.log.1 and file.log.2 when they
649 reach 2 megs. The file currently in use will be indicated by a separate .lck file.
650 Restart is required to change the log rotation.
652- Changes to the http/xml api:
653 Added: Element <jvm> to <proxy-status>, with attributes: name, version, heap-total, heap-free, threads (count), os
654 Added: Attribute 'version' to <proxy-status> (csp version)
6570.7.5 - 2007-10-17
659- Added another example user-manager implementation: com.bowman.cardserv.XmlUserManager (see separate README).
660- Fixed a bug that caused send attempts for queued ecms/keep-alives on unitialized NewcamdConnections (NPE in sysout).
661- Fetching the service list for a connector that was in a reconnect loop (via http) would cause NPE, fixed.
662- Added support for receiving sid in radegast messages (as sent by mgcamd 1.25+ and maybe others, in field 0x21).
663 In the unlikely event that there are radegast clients out there that will put something other than the sid in this
664 field, sid parsing can be disabled by setting the new attribute sid-in-0x21="false" for the radegast listen port.
665- Added support for sending sid in radegast messages, using the same method as above.
666- Fixed a bug that prevented kicking of idle user sessions.
667- Fixed stats based on sliding window averages (utilization, intervals) to properly show ceased activity when
668 appropriate. Utilization now actually shows the current load (over the last minute), and the average utilization
669 since connect only takes successful transactions into account (as failed tend to be nearly instant).
670- Added a capacity estimates to the status web (for total, cws and profile). This is simply the following calculation
671 (since people seem to have a hard time grasping this basic fact): max-cw-wait / processing time
672 E.g: 10s / 900ms ~= 11 transactions per CW validity period
673 (= 11 simultaneous clients in a worst case scenario with no cache hits, or 11 different services processed).
674 When total capacity is greater than the number of services for the provider (or providers if using multiple profiles),
675 you can have an infinite number of clients. Total estimates will only make sense once all cards have handled at least
676 one ecm transaction.
677- Added red hilighting to potential problem values in the user list of the status web, along with capacity estimates
678 and service-mapping count (per profile). :)
679- Made it possible to control which card-data is returned to clients, as a setting per newcamd listen-port. Previously
680 the proxy would use data from one of the cards in the profile, more or less at random. Card-data can be specified by
681 connector name (to get the data from) or by a file name. The proxy will dump card-data files when connecting to
682 cards (in the etc dir). This feature is only useful for ca systems where the providers/idents on the cards matter
683 to the client, and affects only the newcamd protocol (see protocol.txt for card-data format).
684- Au-users are now given card-data only from the card they're meant to update (if several, they receive the first
685 available). If cards were not being updated properly despite receiving emm's, this was a possible cause. Can be
686 overridden by the above card-data feature if the attribute override-au is set to true.
687- Added validation checks that ensure all cards in a profile are identical. Unless the attribute override-checks is
688 set to true for the connector, a card will be _disabled_ when it has a differing ca-id or a different provider ident
689 list than another already connected card in the profile. Warnings will be logged. Under normal circumstances with
690 most ca-systems, differing cards should require separate profiles.
691- "Negative" forward notifications are now sent by the clustered cache (i.e one proxy will notify another that it
692 couldn't provide the reply that it previously indicated it was going to handle). Thus giving the remote proxies
693 a chance to get it elsewhere.
695- Changes to proxy.xml (only optional additions):
696 Added: <card-data type="connector|file|empty" name="connectorname|filename"/> for <newcamd> listen ports. Only use
697 this if you need to make sure that clients connecting to a specific newcamd port always get the same exact card-data.
698 Added: <hide-unknown-services> to section mapper (true/false, default: false). Hides services if no name for them was
699 found in the services file (only affects remote monitoring, e.g xml commands like all-services and cws-connectors).
700 Added: <block-services> to section mapper. List of sids (hex) that the proxy will always immediately return empty
701 results for, and not probe cards/attempts forwards. Can be used to optimize handling of services known not to
702 exist on any card and reduce probing. E.g: you know there are cards available to handle all services except 3, then
703 add those to the block list and the mapper will stop trying.
704 Added: Attribute 'override-checks' for <newcamd-connector> (true/false, default: false). Set to true to skip card
705 validation checks. If you use this for one card in a profile you should probably enable it for all of them.
706 Added: <congestion-limit> to section connection-manager. If you use different metric priorities for CWS connectors,
707 then this allows you to set what the maximum queue-time estimate can be before a connector is considered
708 congested (and higher metric connectors are used instead). This can lower response times but should be used with
709 care. Value (in seconds) must be between max-cw-wait/2 and max-cw-wait. Reasonable values could be 4-8.
711- Changes to the http/xml api:
712 Added: Attribute 'capacity' for <proxy-status>, <profile> and <connector>.
713 Added: Attribute 'active-sessions' for <proxy-status>. Count for sessions currently generating traffic (not idle).
714 Added: Attribute 'mapped-services' for <profile>. The number of services known by the service-mapper for this profile.
7170.7.4 - 2007-09-04
719- Automatic profile assignment based on ca-id is now done for each cws reconnect, not just the first one.
720- No longer ignoring HD services when parsing (dvb service types 0x11 and 0x17, for mpeg2 and "advanced codec" hdtv).
721- "Successful" cannot decode replies are no longer counted as ecm failures in the stats.
722- Additionally tweaked load-sharing (0.7.3 may have had a serious bug that only manifested under heavy load on 3+ cards).
723- Emm's are now properly acknowledged to the client even when sent by non au-users (without forward of course).
724- Fixed several potential problems with radegast sessions (clients using radegast towards the proxy).
725- Added a delay on startup, listen ports will now not be opened until the cws connector manager has had a chance to run
726 through one connection attempt for each active cws connector (this will prevent the service mapper from removing
727 entries for "unknown" connectors that simply haven't been connected for the first time yet).
728- Added a real time negotiation procedure in the clustered cache to maximize use of cache-sharing. Using this adds a
729 fixed delay (e.g 100 ms) to _every_ transaction. The time is used to collect cache notifications for a pending ecm
730 from all proxies in the cluster, and ensure that only one of them proceeds with querying a card. Highly experimental,
731 not quite sure yet whether this is useful in a real life scenario. The multiple proxies will attempt to find which
732 one is best suited to handle a given request (based on estimated queue time and whether the services is known to
733 exist on a local card or not). If in doubt, leave it alone (it's enabled with <sync-period> for the clustered cache).
734- Added a preconfigured java-service-wrapper setup for running the proxy as a service on w2k/2k3/xp/vista. See README.
735- The 'last-transaction' time per session now includes any time it took to send the reply back to the client. This
736 means it is no longer depending exclusively on the proxy response time, but also on the client connection.
737- Changed CWS average processing time to current processing time (thats what it was before as well, just a misleading
738 label). Average processing time is now the true total average for all ecm's processed since connect (and utilization
739 will now show both versions).
740- Made it possible to use any number of listen ports for each profile, each can have their own protocol and allow/deny
741 lists as well as their own des-key/noencryption settings (and any other protocol-specific data). Adding/changing ports
742 while running should work now too.
743- Fixed weird synchronization issues with the session manager (caused NPE in various places and blocked logins,
744 especially in conjuction with heavy use of the status web).
746- Changes to proxy.xml: (mostly optional additions)
747 Added: Attribute 'debug' for <user> (SimpleUserManager), set to true to enable log-ecm, log-emm and log-zapping but
748 only for this user. NOTE: For protocols like radegast that have no user concept you can still use this and other
749 special attributes, by defining a dummy user with a name like: protocol@source.ip.address (e.g radegast@
750 and a dummy password. It won't be used for login auth but attributes like map-exclude and debug will be applied.
751 Added: <ip-filter> to <filter-config> for the LoggingFilter, if specified then only traffic from the matching ip will
752 be logged (? * wildcards supported, e.g: 192.168.1.*).
753 Added: <cannot-decode-wait> to <connection-manager>. This adds a configurable delay when service mapping determines
754 that there are no cards available that can decode a given ecm (or there are no cards at all). Instead of immediately
755 responding with a cannot-decode reply, the proxy will wait the specified number of seconds and then check the cache
756 again. This increases the chances of a cache hit through sharing. It will have no effect on cache-only profiles
757 since these always wait as long as possible, but if you're using cache sharing in combination with local cards you
758 should try this and set it to 1-4 seconds.
759 Added: <sync-period> to <cache-config> (ClusteredCache).Set to larger than 0 to enable the experimental synchronized
760 cluster arbitration procedure. Value in milliseconds (try somewhere around twice the round trip ping between the two
761 furthest/slowest proxies in the cluster).
762 Moved: Attribute 'no-encryption' for <newcamd> is no longer an attribute, it should now be an element within newcamd,
763 i.e: <newcamd listen-port="1234"><no-encryption>true</no-encryption></newcamd>. It is now possible to have
764 multiple newcamd ports for a single profile, and set no-encryption per port.
765 Added: Attribute 'debug' for <profile>, set this to true to enable storing the last 100 transactions for each user
766 session (in order to use the user-log http/xml command for troubleshooting).
767 Added: <retry-lost-services> to section mapper (true/false, default: false). Whenever the service-mapper registers a
768 service lost from a card that could previously decode it, it will register a background probe to see if it returns.
769 The status for the service on the particular card in question will be reset with an increasing interval (doubles
770 every time, starting at 5 minutes after it was lost and ending if it hasn't been found after 48 hours).
771 NOTE: This only makes sense if there are multiple cards in the profile, otherwise lost services would be found
772 within minutes when someone tried to watch them, through the auto-reset-threshold.
774- Changes to the http/xml api:
775 Added: Attribute 'flags' for <session> (proxy-users). This will contain information about the last ecm transaction
776 in the form of one or more of the following chars:
777 C = Cache hit (local), R = Cache hit (received from remote cache), F = Forward occured, Y = Forward retry,
778 N = Cannot decode (mapping says service not on any card), T = Timeout when forwarding, O = Timeout in cache,
779 G = Congestion when forwarding (time > max-cw-wait/2), I = Instant cache hit (no waiting at all in cache),
780 W = Triggered cannot-decode-wait, X = Cache hit after failed forward, E = forward returned empty (cannot-decode),
781 Z = SID changed (compared to previous transaction), P = Triggered probing of one or more cards,
782 D = The user session disconnected before it could receive the reply (likely reached the client ecm timeout),
783 + = Caused an addition to the service map (found channel), - = Caused a removal from the service map.
784 Examples (flags in the attribute string are not shown in chronological order):
785 +FPZ (client changed to a service that had uknown status on some cards, triggering probes, one of which
786 found the service where it wasn't previously known to exist).
787 CI (local instant cache hit, both ecm and cw were immediately available in the cache when the client asked)
788 RZ (cache hit on changing service, and the cw reply was provided by a remote proxy)
789 FO (client was held in cache waiting for a reply that never came, and eventually fell back to forwarding)
790 The statusweb user section has been updated to show these flags, and a info level log printout has been added (only
791 when log-ecm is true).
792 Added: New command 'user-log'. This will show the status of the last 100 ecm transactions completed on any of the
793 selected users sessions. Admins can specify user name with the 'name' parameter, others always get their own log.
794 This allows you to troubleshoot a specific glitch experienced by one user, find the corresponding ecm transaction
795 and see exactly what caused it to fail (at least if you check within 100*10 seconds, i.e about 16 mins).
796 The per-user storage will only be updated if the profile has debug="true" set. A form for this command has been
797 added to the admin page of the example-web.
798 Changed: <profile> now has a single 'listen-ports' attribute that contains a string list that will indicate protocol
799 and port number for each of the defined ports, instead of the previous radegast-port/newcamd-port attributes.
8020.7.3 - 2007-07-28
804- Fixed a bug that caused web logging to switch to sysout after changing the httpd port number.
805- Fixed problem with rapid cws reconnect that caused an IndexOutOfBoundsException if there was pending traffic.
806- Fixed NPE on NewcamdCws connect if the socket was unexpectedly closed during the login procedure.
807- Fixed last-transaction time for a user session getting confused by other message types (non-ECM).
808- Improved load balancing: queue size has been redefined to take the average processing time into account, meaning that
809 in theory a queue size of 3 on a fast card can now be considered faster than a queue size of 1 on a slow card.
811- Updated the example web page to include several user contributions, including a user/session section and re-use of
812 the xml parser object (to stop IE from leaking memory with each xml pull). I'm keeping my logo though. :)
813- Added a filename translation servlet for picon images. See /picon/readme.picon.txt in the war for details.
8160.7.2 - 2007-06-10
818- Fixed a bug that would cause emm's to be forwarded to connectors that weren't connected (caused NPE stacktrace in log).
819- Fixed NPE in radegast response parsing when no matching pending request was found.
820- Fixed a serious cache sharing bug that could prevent remote cache data from being used between servers with different
821 system locales set for the jvm (language/regional settings).
822- Fixed another serious cache sharing bug that meant system clocks had to be synchronized to within the max-cw-age time
823 across all servers, or cached cw's could be deleted before they were used.
825- Added a cache-only (card-less) mode. A profile that makes use of this will accept connections even if there are no
826 cws connectors ready (or even defined). It will rely entirely on cache sharing to handle requests.
827 This allows a frontend proxy to be set up where untrusted users could get access to anything cached, without being
828 able to affect the traffic load on any cards. Such a card-less frontend proxy would only receive cache data (one way,
829 use the receive-only ClusteredCache setup by leaving out remote-host and remote-port) from one or more other proxies,
830 thus completely isolating clients from the real proxies and their clients/servers.
831 As long as the backend proxies have enough users to statistically ensure that all the profiles services are cached
832 at any given moment, all services would also work for clients in the frontend proxy.
833 NOTE: When there are no newcamd connectors in a profile, clients will receive dummy card data on connect (empty).
834 This may not be good enough for all clients/ca-systems, but it works for me. If you do have connectors defined
835 and cache-only mode set, the connectors will not be used for traffic (only for card-data).
837- Changes to the http/xml api:
838 Added: Attribute 'profile' to <service> for the commands watched-services and all-services, since these lists can
839 contain services from multiple profiles if the calling user has such access.
840 Added: Attribute 'cache-only' for <profile> (ca-profiles command).
842- Changes to proxy.xml:
843 Added: Attribute 'log-zapping' for <logging>. Set to false to disable the log entries for when users switch service.
844 Added: Attribute 'cache-only' for <profile>. Set to true and the profile will accept connections even without
845 card connectors. This will also prevent the "no available card" warnings, the proxy will instead silently return
846 cannot decode for each cache miss.
847 Added: Attribute 'no-encryption' for <newcamd> (in profile). Setting this to true means the proxy will handle
848 unencrypted newcamd traffic on this listen port. NOTE: no clients support this, its just for debugging.
8500.7.1 - 2007-05-19
852- Major structural changes to handle multiple protocols (besides newcamd), expect bugs.
853- Fixed a bug where connectors could be flagged as congested and never recover.
854- ECM cache hits (INFO level printout) now mentions if the hit was received from a remote cache (and which one).
855- Added basic radegast support for both incoming and outgoing connections. Since this protocol doesn't have user auth
856 or includes SID, clients should avoid using it if they can. Using cws connectors with the radegast protocol
857 should not have any obvious drawbacks however. A consequence of this is that it becomes possible to use a "radegast
858 only" client towards cardservers that only allow the newcamd protocol (and vice versa) using the proxy to convert.
859 If a radegast listen port is configured, the accept/deny list is the only access control since there is no user auth.
860 NOTE: If using only radegast cws connectors, and connecting to the proxy with a newcamd client, the proxy will
861 return dummy card data to that client (a single provider with ident 0, but including the ca-id for the profile so this
862 should probably be set correctly).
864- Added an option for completely disabling the service-mapping. Doing so means the proxy will no longer attempt to find
865 out which services exist on each card. Instead it will assume all cards in the profile are identical and only apply
866 load balancing. This way effective clusters can be achieved even with protocols or clients that don't include SID,
867 providing the cards all have the same services. It can also be useful for troubleshooting in small clusters.
868 Profiles for which the mapping has been switched off will not show any service lists in the http/xml api or webgui.
870- Changes to the http/xml api:
871 Fixed: Duration time strings (longer than 1 month was previously broken?).
872 Changed: Any user@host:port information for cws connectors from the error log is now only shown to admin users.
873 Added: Utilization percentage per cws connector, based on the current average ecm time. This shows the % of the
874 total time since connect that the card has been spending on actual processing (rough estimate).
875 Changed: getUserCount() in the remote api renamed to getSessionCount() since thats what it actually is.
876 The <users> element in the proxy-status reply has been changed to <sessions> to reflect this.
877 Added: Attribute protocol added to <session> and <connector> (a string with either Newcamd or Radegast for now).
878 The example web page has updated to reflect this in the status CWS list.
880- Changes to proxy.xml: (old configs WILL need to be edited)
881 Added: Separate listen ports for <newcamd> and <radegast> protocols, per profile. Each with an optional accept/deny
882 list that uses ip masks with wildcard support (separated by space). See the example configs for details.
883 Changed: Moved <des-key> from <profile> to <newcamd>.
884 Removed: <ban-list> from <profile>, replaced with the allow-list/deny-list elements of the new newcamd and
885 radegast elements, e.g: <newcamd listen-port="1234"><deny-list>10.0.0.*</deny-list></newcamd>
886 Changed: <connector> elements in <cws-connector> replaced with either <newcamd-connector> (as before) or
887 <radegast-connector> (profile attribute mandatory, and only host/port).
888 Added: Attribute 'enabled' for <mapper> in <service-map>, to turn of mapping entirely for one or all profiles.
889 Added: Attribute 'hide-ip-addresses' for <logging>, this will replace all IPs in logs like so:
890 This doesn't apply to the web-access.log, switch that off by removing the rmi/log-file element when using this
891 option. Debug output or log levels lower than INFO are also not affected.
892 Changed: Attribute ca-id for <profile> is now mandatory (it simplified the radegast implementation).
8940.6.3 - 2007-03-03
896- Changed load balancing to consider queue size before other factors.
897- Fixed potential false "connection from different IP" errors for rapid client reconnects.
898- Fixed handling of missing SID (service maps ignored but load balancing applied). Clients that don't send SID should
899 work fine now providing all the cards in the profile have the same services (or there is just one card).
900 Mechanisms to more effectively deal with setups where this is not the case will be added in a future version.
901- Enigma service files are now monitored for changes and re-read if changed. This allows for automated updates of the
902 files, i.e by cron'ed ftp/scp. They are of course also re-read when proxy.xml changes, as before.
903- Added INFO level logging for web logins (see the web-access log for more details) and WARNING for failed attempts.
904- Changes to the http/xml api:
905 Added: Simple admin section in the example web page, for executing the control commands.
906 Changed: Services with no name/type information are now included (as "Unknown (id)") in xml replies.
907 Changed: Cleaned up most of the javascript for the example web page and fixed some minor firefox issues.
909- Changes to proxy.xml:
910 Changed: Attribute 'provider' for <services-file> can now contain a list of names (separated by space). Use this
911 in case services in the file have variations in the provider name (or lists some as unknown even though
912 they should be part of the same provider subscription).
913 Added: <unknown-sid> to section mapper. Defines a special SID that will be sent to servers when SID is 0 (unknown).
914 Client requests for this SID will also be treated as if it was 0. This can be used as a workaround for
915 servers that require a non-zero SID, and for clients that send a fixed special SID instead of 0 when service
916 is unknown (e.g cardlink). Make sure that this isn't set to a real SID that exists in the services file.
917 Can be specified globally or per profile like all other mapper elements.
919- Misc minor fixes and improvements.
9210.6.2 - 2007-02-10
923- Fixed rare ConcurrentModificationException related to the average calculations.
924- Changed the timeout for keep-alive replies to 3 seconds instead of using max cw wait.
925- Fixed false timeouts that could theoretically occur in the connectors even when max cw wait wasn't exceeded.
926- Improved the default INFO level logging to make it easier to spot problems.
927- Changes to proxy.xml:
928 Added: Attributes 'log-ecm' and 'log-emm' to section logging (true/false, default: true).
929 Added: <log-missing-sid> to section mapper (true/false, default: true). Allows hiding the [0] SID warning.
930- Changes to the http/xml api:
931 Added: 'last-transaction' field to proxy-users. Shows how long the last perceived ecm -> cw roundtrip time was (ms).
9330.6.1 - 2007-02-05
935- Added a getUsageStats() method to the CacheHandler interface. Caches can return whatever relevant information they have.
936- Improved the queue handling for outbound ecms. Queue size and average response time is now used for load balancing.
937- Changed timeout handling for cws connectors. If a timeout occurs the connector will be removed from load balancing
938 until it is responding again (unless it is the only available connector for a given request). Keep-alives will be sent
939 until it either responds or exceeds the maximum number of timeouts and is disconnected. This should help minimize the
940 impact of shaky connections in setups where there are multiple connectors of the same type available.
941- Remote api extended with kickUser and shutdown methods.
942- Changed average ecm interval and average processing speed to count for the last minute rather than total since connect.
943 This also applies to the rate limit feature in the UserManager interface.
944- Changes to proxy.xml:
945 Removed: <peer-proxy-url> from status-web section. This no longer made much sense.
946 Added: Attribute 'map-exclude' for the auth-config section (SimpleUserManager). Stops a user from causing changes
947 to the service maps. Can be useful in large clusters for clients that misbehave and send a lot of bad ecms.
948 Changed: <tracker-update> for ClusteredCache can now be set to 0 to disable auto updates (i.e only update when
949 proxy.xml is updated).
951- Changes to the http/xml api:
952 Added: New command api, accessible by admin users only. 4 commands so far: reset, kick, shutdown and osd-message.
953 - Reset will clear the service map for a specific service on all cards, or for all services one card.
954 Params: name (cws connector name) or profile + id (service id in hex or decimal).
955 GET example: /xmlHandler?command=reset&profile=myprofile&id=0x04F3
956 POST example: <cws-command-req><command command="reset" profile="myprofile" id="1267"/></cws-command-req>
957 - Kick will close all sessions for a specific user (mainly a debugging tool, the user cam will just reconnect).
958 - Shutdown will stop the proxy node.
959 - Osd-message sends a Mgcamd osd message to any matching active user sessions (with client id = Mgcamd).
960 GET example: /xmlHandler?command=osd-message&name=username&text=hello%20there
961 Name can be omitted to send to all users. This is experimental, use with care.
962 Note: the command api responses will contain the element <cws-command-resp> instead of <cws-status-resp>.
963 Added: New status command 'cache-status'. Will show usage counters for the currently used cache implementation.
964 Changed: Timestamps now use RFC822 format, and any previously included duration has been moved to a separate field.
965 The timestamp fields have also been renamed to show what they represent (i.e started or connected).
966 Changed: Command 'tv-services' changed to 'all-services'.
967 Added: New status command 'watched-services'. Returns currently watched services with a user count. :)
969- Added a view of the 'watched-services' to the channels section of the example web page.
970- Added cache-status to the status section of the example web page.
971- Added some reasonable usage stat counters to DefaultCache and ClusteredCache.
972- Added isMapExcluded() to UserManager interface, return true to stop a user from discovering new services or changing
973 the status of existing ones (map failure counters etc will not be updated as a result of ecms from this user).
974- Improved some of the INFO level logging to more clearly show the new load balancing and timeout handling in action.
9760.5.1 - First public release
978- Changes to settings for proxy.xml (see config/proxy-reference.html for full details):
979 Removed: <default-profile> from rmi section. Remote api now allows specifying a list of profiles per method.
980 The http/xml api and web page will use this to only show info for profiles accessible by the current user.
981 Added: <allowed-ip-masks> to rmi section. List of ip masks separated by space that should be allowed to use the
982 remote api.
983 Added: <default-client-id> to section connection-manager. Allows setting the 2 bytes that is used by newcs and
984 others to identify the type of client. Beware, this only works as long as the server doesn't modify its
985 behavior or makes use of client-specific features based on this value (for example identifying as mgcamd
986 will cause newcs to do this and no longer be compatible with the proxy).
987 Added: <client-id> to section connector. Same as above but overriding the default for one connector.
988 Added: <au-users> to section connector. List of users allowed to send AU to this connector. All EMM's clients from
989 these users send to the corresponding profile will be forwarded to this connector. The old behaviour with
990 matching connector and user name for AU has been removed.
991 Added: Attribute 'metric' for <connector>. Allows grouping connectors together for preference in the load-balancer.
992 See proxy-reference.html for examples.
993 Added: Attribute 'admin' for the auth-config section (SimpleUserManager). Set to true to mark a user as
994 administrator. Only used by the http/xml interface so far.
995 Added: <ssl> to section status-web. Allows HTTPS instead of HTTP for the http/xml api and web page. This requires
996 a java keystore file with a certificate to be specified as well, e.g:
997 <ssl enabled="true"><keystore password="123456">etc/keystorefile</keystore></ssl>
999- Changes to http/xml api:
1000 Added: Only info from profiles that the current user has access to are shown. There should be no way to tell other
1001 profiles even exist in the config.
1002 Added: New HTTP GET based version of the xml api. Access /xmlHandler?command=command&paramName=paramValue to get
1003 the same reply that posting <command include="true" paramName="paramValue"/> would produce. HTTP basic auth
1004 is used for login/password (user must be one known to the current user manager).
1005 Added: New command 'ca-profiles'. Lists all profiles accessible by the currently authenticated user.
1006 Added: New parameter 'profile'. Allows selecting one of the available profiles rather than getting info for all.
1007 (Mainly for commands cws-connectors, proxy-users and tv-services).
1008 Added: Extra fields in the replies for cws-connectors and proxy-users. Profile is shown where applicable, client-id
1009 is shown for users and metric for connectors. Ecm and emm count added to both connectors and user sessions.
1010 Added: The beginnings of privacy/security. Only users marked as admin will be able to list all users, others will
1011 just get their own information. Note that even admins will be subject to profile restrictions.
1012 Only admins will see the host/ip for the cws connectors, but the rest of the information is available to all.
1014- Changes to the clustered cache implementation: (see example proxy.xml for details)
1015 Added: Example p2p type cluster management. Cache can be configured to get a list of other proxies (host:port) from
1016 a preconfigured "tracker" url. The list is a static plain text file that can be stored anywhere in public.
1017 As a privacy feature, the list can be blowfish encrypted with a configured key that all proxies would need
1018 to have. The file format is one proxy host:port per line, lines starting with # are considered comments.
1019 To encrypt the list file, use: java -jar lib/trtest.jar inputfile.txt outputfile.enc secretkey
1020 The encryption is the same type of blowfish used by fish/mircryption for encrypted irc.
1021 Added: <tracker-url> to section cache-config. URL pointing to a file with a list of peers in host:port format.
1022 Added: <tracker-key> to section cache-config. Blowfish encryption key, if this is set the list file must be
1023 encrypted with the same key.
1024 Added: <tracker-update> to section cache-config. The update interval in minutes, minimum 5.
1025 Added: <local-host> to section cache-config. The cache needs to be able to identify itself in the list of peers,
1026 otherwise it would send updates to itself which would be bad. Set the local-host to the same as this node
1027 has in the list of peers file. If omitted the cache will use the local IP.
1029- UserManager interface now has limits that can be imposed on idividual users, but SimpleUserManager will _not_ use this.
1030 For anyone working on their own user manager, the methods are:
1031 Set getAllowedServices(String name, String profile); // return Set of Integer (service ids, null for all)
1032 Set getAllowedConnectors(String name); // return Set of String (connector names, null for all)
1033 int getAllowedEcmRate(String user); // return minimum interval between ecm in seconds (-1 for no limit)
1034 A note about allowed connectors: this will stop ecm's from this user from being routed to other connectors, but it
1035 will _not_ stop them from watching services that only exist on those excluded connectors, through the cache.
1037- Proxy now detects the type of client for each connected user session.
1038- Fixed xml-related problems with http/xml api and java 1.5.
1039- "Webgui" cleanup, removed everything not used or not working.
1040- Fixes to startup sequence, all errors shown by the start script should now halt the proxy with a non-zero exit code.
1041- Fixed enigma services file parsing (0xffffff transponder ids and other values caused it to fail).
10430.4.9 - First pre-release for testing
1045- Pluggable implementations for user manager, cache handler and filters/loggers. Contact bowman on efnet for details.
1046- Extensible remote api (java rmi and arbitrary http/xml) for monitoring and remote control.
Note: See TracBrowser for help on using the repository browser.