source: branches/monitor-improvement/globals.h@ 1269

Last change on this file since 1269 was 1269, checked in by alno, 11 years ago

WebIf:

  • Feature "disabled" added for accounts. The Parameter can be set in webinterface and/or in oscam.user. Syntax "disabled=0|1". If parameter is set to 1 the user do not get ecm and in log you see "disabled". A value of 0 gives access back to the user.
  • The user setting table in Webif got a new additional TR Style "disabled"
File size: 25.1 KB
Line 
1#include <stdlib.h>
2#include <stdio.h>
3#include <assert.h>
4#include <fcntl.h>
5#include <sys/ioctl.h>
6#include <sys/poll.h>
7#include <ctype.h>
8#include <sys/types.h>
9#include <sys/stat.h>
10#include <sys/shm.h>
11#include <sys/wait.h>
12#include <unistd.h>
13#include <sys/mman.h>
14#include <stdarg.h>
15#include <time.h>
16#include <sys/timeb.h>
17#include <limits.h>
18
19#include <sys/socket.h>
20#include <netinet/in.h>
21#include <arpa/inet.h>
22#include <netdb.h>
23#include <string.h>
24#include <signal.h>
25#include <errno.h>
26
27#include <pthread.h>
28
29#ifndef CS_GLOBALS
30#define CS_GLOBALS
31#define CS_VERSION "0.99.4svn"
32
33#if defined(__GNUC__)
34# define GCC_PACK __attribute__((packed))
35#else
36# define GCC_PACK
37#endif
38
39#include "oscam-config.h"
40#ifndef USE_CMAKE
41# include "oscam-ostype.h"
42#endif
43#include "oscam-types.h"
44#include "cscrypt/cscrypt.h"
45
46#ifdef HAVE_PCSC
47#include <PCSC/pcsclite.h>
48#ifdef OS_MACOSX
49#include <PCSC/wintypes.h>
50#else
51#include <PCSC/reader.h>
52#endif
53#endif
54
55#ifndef CS_CONFDIR
56#define CS_CONFDIR "/usr/local/etc"
57#endif
58#ifndef CS_MMAPFILE
59#define CS_MMAPFILE "/tmp/oscam.mem"
60#endif
61#ifndef CS_LOGFILE
62#define CS_LOGFILE "/var/log/oscam.log"
63#endif
64#define CS_QLEN 128 // size of request queue
65#define CS_MAXQLEN 128 // size of request queue for cardreader
66#define CS_MAXCAIDTAB 32 // max. caid-defs/user
67#define CS_MAXTUNTAB 16 // max. betatunnel mappings
68#define CS_MAXPROV 32
69#define CS_MAXPORTS 32 // max server ports
70#define CS_MAXFILTERS 16
71
72#define CS_MAXCARDS 4096
73#define CS_MAXIGNORE 1024
74#define CS_MAXLOCALS 16
75#define CS_ECMSTORESIZE 16 // use MD5()
76#define CS_EMMSTORESIZE 270
77#define CS_CLIENT_TIMEOUT 5000
78#define CS_CLIENT_MAXIDLE 120
79#define CS_BIND_TIMEOUT 120
80#define CS_DELAY 0
81#define CS_RESOLVE_DELAY 30
82#define CS_MAXLOGHIST 30
83#define CS_LOGHISTSIZE 160 // 32+128: username + logline
84
85#ifdef OLD_DEFS
86#ifdef CS_EMBEDDED
87#define CS_MAXPENDING 32
88#define CS_ECMCACHESIZE 32
89#define CS_EMMCACHESIZE 64
90#define CS_MAXPID 32
91#define CS_MAXREADER 8
92#else
93#define CS_MAXPENDING 128
94#define CS_ECMCACHESIZE 128
95#define CS_EMMCACHESIZE 256
96#define CS_MAXPID 128
97#define CS_MAXREADER 64
98#endif
99#endif
100
101#ifdef CS_EMBEDDED
102#define CS_MAXPID 32
103#define CS_MAXREADER (CS_MAXPID>>1)
104#define CS_MAXPENDING CS_MAXPID
105#define CS_ECMCACHESIZE CS_MAXPID
106#define CS_EMMCACHESIZE (CS_MAXPID<<1)
107#else
108#define CS_MAXPID 512
109#define CS_MAXREADER (CS_MAXPID>>2)
110#define CS_MAXPENDING (CS_MAXPID<<1)
111#define CS_ECMCACHESIZE CS_MAXPID
112#define CS_EMMCACHESIZE (CS_MAXPID<<1)
113#define CS_RDR_INIT_HIST
114#endif
115
116#define D_DUMP 1 // Debug Dumps
117#define D_MASTER 2 // Debug Master Process
118#define D_READER 4 // Debug Reader/Proxy Process
119#define D_CLIENT 8 // Debug Client Process
120#define D_DEVICE 16 // Debug Reader I/O
121#define D_WATCHDOG 32 // Debug Watchdog
122#define D_ALL_DUMP 63
123
124#define R_MOUSE 0x1 // Reader smartcard mouse
125#define R_INTERNAL 0x2 // Reader smartcard intern
126#define R_DB2COM1 0x3 // Reader Dbox2 @ com1
127#define R_DB2COM2 0x4 // Reader Dbox2 @ com1
128#define R_SMART 0x5 // Smartreader+
129#ifdef HAVE_PCSC
130 #define R_PCSC 0x6 // PCSC
131#endif
132#define R_CAMD35 0x10 // Reader cascading camd 3.5x
133#define R_CAMD33 0x11 // Reader cascading camd 3.3x
134#define R_NEWCAMD 0x12 // Reader cascading newcamd
135#define R_RADEGAST 0x13 // Reader cascading radegast
136#define R_CS378X 0x14 // Reader cascading camd 3.5x TCP
137#define R_GBOX 0x20 // Reader cascading gbox
138#define R_CCCAM 0x25 // Reader cascading cccam
139#define R_SERIAL 0x80 // Reader serial
140#define R_IS_NETWORK 0x70
141#define R_IS_CASCADING 0xF0
142
143
144#define CS_MAX_MOD 12
145#define MOD_CONN_TCP 1
146#define MOD_CONN_UDP 2
147#define MOD_CONN_NET 3
148#define MOD_CONN_SERIAL 4
149
150#ifdef CS_CORE
151char *PIP_ID_TXT[] = { "ECM", "EMM", "LOG", "CIN", "HUP", NULL };
152char *RDR_CD_TXT[] = { "cd", "dsr", "cts", "ring", "none",
153#ifdef USE_GPIO
154 "gpio1", "gpio2", "gpio3", "gpio4", "gpio5", "gpio6", "gpio7", //felix: changed so that gpio can be used
155#endif
156 NULL };
157#else
158extern char *PIP_ID_TXT[];
159extern char *RDR_CD_TXT[];
160#endif
161
162#define PIP_ID_ECM 0
163#define PIP_ID_EMM 1
164#define PIP_ID_LOG 2
165#define PIP_ID_CIN 3 // CARD_INFO
166#define PIP_ID_HUP 4
167#define PIP_ID_MAX PIP_ID_HUP
168#define PIP_ID_DCW 5
169
170#define PIP_ID_ERR (-1)
171#define PIP_ID_DIR (-2)
172#define PIP_ID_NUL (-3)
173
174#define cdiff *c_start
175
176#define NCD_AUTO 0
177#define NCD_524 1
178#define NCD_525 2
179
180#define CS_ANTICASC
181
182// moved from reader-common.h
183#define CARD_INSERTED 1
184#define CARD_NEED_INIT 2
185#define CARD_FAILURE 4
186
187enum {E1_GLOBAL=0, E1_USER, E1_READER, E1_SERVER, E1_LSERVER};
188enum {E2_GLOBAL=0, E2_GROUP, E2_CAID, E2_IDENT, E2_CLASS, E2_CHID, E2_QUEUE,
189 E2_EA_LEN, E2_F0_LEN, E2_OFFLINE, E2_SID};
190
191//typedef unsigned char uchar;
192//typedef unsigned long ulong;
193
194typedef unsigned char uint8;
195typedef unsigned short uint16;
196typedef unsigned int uint32;
197typedef unsigned long long uint64;
198
199// constants
200#define CTA_RES_LEN 512
201
202typedef struct s_classtab
203{
204 uchar an;
205 uchar bn;
206 uchar aclass[31];
207 uchar bclass[31];
208} GCC_PACK CLASSTAB;
209
210typedef struct s_caidtab
211{
212 ushort caid[CS_MAXCAIDTAB];
213 ushort mask[CS_MAXCAIDTAB];
214 ushort cmap[CS_MAXCAIDTAB];
215} GCC_PACK CAIDTAB;
216
217typedef struct s_tuntab
218{
219 ushort bt_caidfrom[CS_MAXTUNTAB];
220 ushort bt_caidto[CS_MAXTUNTAB];
221 ushort bt_srvid[CS_MAXTUNTAB];
222} GCC_PACK TUNTAB;
223
224typedef struct s_sidtab
225{
226 char label[33];
227 ushort num_caid;
228 ushort num_provid;
229 ushort num_srvid;
230 ushort *caid;
231 ulong *provid;
232 ushort *srvid;
233 struct s_sidtab *next;
234} GCC_PACK SIDTAB;
235
236
237typedef struct s_filter
238{
239 ushort caid;
240 uchar nprids;
241 ulong prids[CS_MAXPROV];
242} GCC_PACK FILTER;
243
244typedef struct s_ftab
245{
246 int nfilts;
247 FILTER filts[CS_MAXFILTERS];
248} GCC_PACK FTAB;
249
250typedef struct s_port
251{
252 int fd;
253 int s_port;
254 FTAB ftab;
255} GCC_PACK PORT;
256
257typedef struct s_ptab
258{
259 int nports;
260 PORT ports[CS_MAXPORTS];
261} GCC_PACK PTAB;
262
263struct s_ecm
264{
265 uchar ecmd5[CS_ECMSTORESIZE];
266 uchar cw[16];
267 ushort caid;
268 ulong prid;
269 ulong grp;
270// int level;
271};
272
273struct s_emm
274{
275 uchar emm[CS_EMMSTORESIZE];
276 uchar type;
277 int count;
278};
279
280struct s_module
281{
282 //int fd;
283 int multi;
284 int type;
285 int watchdog;
286 char desc[16];
287 char *logtxt;
288 //int s_port;
289 in_addr_t s_ip;
290 void (*s_handler)();
291 int (*recv)();
292 void (*send_dcw)();
293 void (*cleanup)();
294 int c_multi;
295 int (*c_recv_chk)();
296 int (*c_init)();
297 int (*c_send_ecm)();
298 int (*c_init_log)();
299 int (*c_recv_log)();
300 int c_port;
301 PTAB *ptab;
302};
303
304struct s_irdeto_quess
305{
306 int b47;
307 ushort caid;
308 ushort sid;
309 struct s_irdeto_quess *next;
310};
311
312struct s_client
313{
314 pid_t pid;
315 in_addr_t ip;
316 in_port_t port;
317 time_t login;
318 time_t last;
319 time_t lastswitch;
320 time_t lastemm;
321 time_t lastecm;
322 time_t expirationdate;
323 int disabled;
324 ulong grp;
325 int crypted;
326 int dup;
327 int au;
328 char autoau;
329 int monlvl;
330 int dbglvl;
331 CAIDTAB ctab;
332 TUNTAB ttab;
333 ulong sidtabok; // positiv services
334 ulong sidtabno; // negative services
335 int typ;
336 int ctyp;
337 int stat;
338 int ufd;
339 int last_srvid;
340 int last_caid;
341 int tosleep;
342 char usr[32];
343 int udp_fd;
344 int fd_m2c;
345 struct sockaddr_in udp_sa;
346 int log;
347 int logcounter;
348 int cwfound;
349 int cwcache;
350 int cwnot;
351 uchar ucrc[4]; // needed by monitor and used by camd35
352 ulong pcrc; // pwd crc
353 AES_KEY aeskey; // needed by monitor and used by camd33, camd35
354 ushort ncd_msgid;
355 uchar ncd_skey[16];
356 int port_idx; // index in server ptab
357 int ncd_server; // newcamd server?
358#ifdef CS_ANTICASC
359 ushort ac_idx;
360 ushort ac_limit;
361 uchar ac_penalty;
362#endif
363 FTAB fchid;
364 FTAB ftab; // user [caid] and ident filter
365 CLASSTAB cltab;
366};
367
368struct s_reader
369{
370 int cs_idx;
371 int fd;
372 ulong grp;
373 int fallback;
374 int typ;
375 int card_system;
376 char label[32];
377 char device[128];
378 int handle; //device handle
379 char pcsc_name[128];
380 int pcsc_has_card;
381 int detect;
382 int mhz; //actual clock rate of reader in 10khz steps
383 int cardmhz; //standard clock speed your card should have in 10khz steps; normally 357 but for Irdeto cards 600
384 int r_port;
385 char r_usr[64];
386 char r_pwd[64];
387 int r_crypted;
388 int l_port;
389 int log_port;
390 CAIDTAB ctab;
391 ulong boxid;
392 uchar nagra_boxkey[16]; //n3 boxkey 8byte or tiger idea key 16byte
393 int has_rsa;
394 uchar aes_key[16];
395 uchar rsa_mod[120]; //rsa modulus for nagra cards.
396 ulong sidtabok; // positiv services
397 ulong sidtabno; // negative services
398 uchar hexserial[8];
399 int nprov;
400 uchar prid[CS_MAXPROV][8];
401 uchar availkeys[CS_MAXPROV][16]; // viaccess; misused in seca, if availkeys[PROV][0]=0 then expired, 1 then valid.
402 uchar sa[CS_MAXPROV][4]; // viaccess & seca
403 ushort acs; // irdeto
404 ushort caid[16];
405 uchar b_nano[256];
406 uchar emmfile[128];
407 char pincode[5];
408 int logemm;
409 int cachemm;
410 int rewritemm;
411 int online;
412 int card_status; //highlevel status
413 unsigned short status; //lowlevel status: states whether card inserted and/or change of status FIXME look at integration with pcsc_has_card/detect/card_status
414 unsigned long baudrate; //we are storing the (for overclocking uncorrected) baudrate to prevent unnecessary conversions from/to termios structure
415 struct s_module ph;
416 uchar ncd_key[16];
417 uchar ncd_skey[16];
418 int ncd_disable_server_filt;
419 ushort ncd_msgid;
420 int ncd_proto;
421 char cc_version[7]; // cccam version
422 char cc_build[5]; // cccam build number
423 int cc_maxhop; // cccam max distance
424 void *cc; // ptr to cccam internal data struct
425 uchar tcp_connected;
426 int tcp_ito; // inactivity timeout
427 int tcp_rto; // reconnect timeout
428 time_t last_g; // get (if last_s-last_g>tcp_rto - reconnect )
429 time_t last_s; // send
430 uchar show_cls; // number of classes subscription showed on kill -31
431 int maxqlen; // max queue length
432 int qlen; // current queue length
433 FTAB fchid;
434 FTAB ftab;
435 CLASSTAB cltab;
436 uchar gbox_pwd[4];
437 uchar gbox_timecode[7];
438 int gbox_online;
439 uchar gbox_vers;
440 uchar gbox_prem;
441 int gbox_fd;
442 struct timeb gbox_lasthello; // incoming time stamp
443#ifdef CS_RDR_INIT_HIST
444 uchar init_history[4096];
445 int init_history_pos;
446#endif
447 int msg_idx;
448#ifdef HAVE_PCSC
449 SCARDCONTEXT hContext;
450 SCARDHANDLE hCard;
451 DWORD dwActiveProtocol;
452#endif
453
454};
455
456#ifdef CS_ANTICASC
457
458struct s_acasc_shm {
459 ushort ac_count : 15;
460 ushort ac_deny : 1;
461};
462
463struct s_acasc {
464 ushort stat[10];
465 uchar idx; // current active index in stat[]
466};
467
468struct s_cpmap
469{
470 ushort caid;
471 ulong provid;
472 ushort sid;
473 ushort chid;
474 ushort dwtime;
475 struct s_cpmap *next;
476};
477#endif
478
479struct s_auth
480{
481 char usr[33];
482 char pwd[33];
483 int uniq;
484 int au;
485 int autoau;
486 int monlvl;
487 ulong grp;
488 int tosleep;
489 CAIDTAB ctab;
490 ulong sidtabok; // positiv services
491 ulong sidtabno; // negative services
492 FTAB fchid;
493 FTAB ftab; // user [caid] and ident filter
494 CLASSTAB cltab;
495 TUNTAB ttab;
496#ifdef CS_ANTICASC
497 int ac_idx;
498 int ac_users; // 0 - unlimited
499 uchar ac_penalty; // 0 - log, >0 - fake dw
500#endif
501 in_addr_t dynip;
502 uchar dyndns[64];
503 time_t expirationdate;
504 int disabled;
505 struct s_auth *next;
506};
507
508struct s_srvid
509{
510 int srvid;
511 int ncaid;
512 int caid[10];
513 char prov[33];
514 char name[33];
515 char type[33];
516 char desc[33];
517 struct s_srvid *next;
518};
519
520struct s_ip
521{
522 in_addr_t ip[2];
523 struct s_ip *next;
524};
525
526struct s_config
527{
528 int nice;
529 ulong netprio;
530 ulong ctimeout;
531 ulong ftimeout;
532 ulong cmaxidle;
533 int ulparent;
534 ulong delay;
535 int bindwait;
536 int resolvedelay;
537 int tosleep;
538 in_addr_t srvip;
539 char pidfile[128];
540 char usrfile[128];
541 char cwlogdir[128];
542 struct s_auth *account;
543 struct s_srvid *srvid;
544 struct s_sidtab *sidtab;
545 int mon_port;
546 in_addr_t mon_srvip;
547 struct s_ip *mon_allowed;
548 int mon_aulow;
549 int mon_hideclient_to;
550 int mon_level;
551 int http_port;
552 char http_user[65];
553 char http_pwd[65];
554 char http_css[128];
555 char http_tpl[128];
556 int http_refresh;
557 int http_hide_idle_clients;
558 int c33_port;
559 in_addr_t c33_srvip;
560 uchar c33_key[16];
561 int c33_crypted;
562 int c33_passive;
563 struct s_ip *c33_plain;
564 int c35_port;
565 in_addr_t c35_srvip;
566 PTAB c35_tcp_ptab;
567 in_addr_t c35_tcp_srvip;
568 PTAB ncd_ptab;
569 in_addr_t ncd_srvip;
570 uchar ncd_key[16];
571 PTAB cc_ptab;
572 int rad_port;
573 in_addr_t rad_srvip;
574 struct s_ip *rad_allowed;
575 char rad_usr[32];
576 char ser_device[512];
577 ulong srtimeout; // SerialReaderTimeount in millisec
578 int max_log_size;
579 int show_ecm_dw;
580 int waitforcards;
581 int preferlocalcards;
582#ifdef CS_WITH_GBOX
583 uchar gbox_pwd[8];
584 uchar ignorefile[512];
585 uchar cardfile[512];
586 uchar gbxShareOnl[512];
587 int maxdist;
588 int num_locals;
589 unsigned long locals[CS_MAXLOCALS];
590#endif
591 //struct s_irdeto_quess *itab[0xff];
592#ifdef HAVE_DVBAPI
593 int dvbapi_enabled;
594 int dvbapi_au;
595 char dvbapi_usr[33];
596 char dvbapi_boxtype[20];
597 char dvbapi_priority[64];
598 char dvbapi_ignore[64];
599#endif
600#ifdef CS_ANTICASC
601 char ac_enabled;
602 int ac_users; // num of users for account (0 - default)
603 int ac_stime; // time to collect AC statistics (3 min - default)
604 int ac_samples; // qty of samples
605 int ac_penalty; // 0 - write to log
606 int ac_fakedelay; // 100-1000 ms
607 int ac_denysamples;
608 char ac_logfile[128];
609 struct s_cpmap *cpmap;
610#endif
611// struct s_reader reader[];
612};
613
614typedef struct ecm_request_t
615{
616
617 uchar ecm[256];
618 uchar cw[16];
619 uchar ecmd5[CS_ECMSTORESIZE];
620// uchar l;
621 short l;
622 ushort caid;
623 ushort ocaid;
624 ushort srvid;
625 ushort chid;
626 ushort pid;
627 ushort idx;
628 ulong prid;
629 int reader[CS_MAXREADER];
630 int cidx; // client index
631 int cpti; // client pending table index
632 int stage; // processing stage in server module
633 int level; // send-level in client module
634 int rc;
635 uchar rcEx;
636 struct timeb tps; // incoming time stamp
637 uchar locals_done;
638 ushort gbxCWFrom;
639 ushort gbxFrom;
640 ushort gbxTo;
641
642 uchar gbxForward[16];
643 int gbxRidx;
644} GCC_PACK ECM_REQUEST;
645
646typedef struct emm_packet_t
647{
648 uchar emm[258];
649 uchar l;
650 uchar caid[2];
651 uchar provid[4];
652 uchar hexserial[8];
653 uchar type;
654 int cidx;
655} GCC_PACK EMM_PACKET;
656
657// oscam-simples
658extern char *remote_txt(void);
659extern char *trim(char *);
660extern char *strtolower(char *);
661extern int gethexval(char);
662extern int cs_atob(uchar *, char *, int);
663extern ulong cs_atoi(char *, int, int);
664extern int byte_atob(char *);
665extern long word_atob(char *);
666extern int key_atob(char *, uchar *);
667extern int key_atob14(char *, uchar *);
668extern int key_atob_l(char *, uchar *, int);
669extern char *key_btoa(char *, uchar *);
670extern char *cs_hexdump(int, uchar *, int);
671extern in_addr_t cs_inet_order(in_addr_t);
672extern char *cs_inet_ntoa(in_addr_t);
673extern in_addr_t cs_inet_addr(char *txt);
674extern ulong b2i(int, uchar *);
675extern ullong b2ll(int, uchar *);
676extern uchar *i2b(int, ulong);
677extern ulong a2i(char *, int);
678extern int boundary(int, int);
679extern void cs_ftime(struct timeb *);
680extern void cs_sleepms(int);
681extern int bytes_available(int);
682extern void cs_setpriority(int);
683extern struct s_auth *find_user(char *);
684extern int x2i(int i);
685extern void urldecode(char *s);
686extern char to_hex(char code);
687extern char *urlencode(char *str);
688extern void long2bitchar(long value, char *result);
689extern char *char_to_hex(const unsigned char* p_array, unsigned int p_array_len, char hex2ascii[256][2]);
690extern void create_rand_str(char *dst, int size);
691extern int file_exists(const char * filename);
692extern void clear_sip(struct s_ip **sip);
693extern void clear_ptab(struct s_ptab *ptab);
694extern int safe_overwrite_with_bak(char *destfile, char *tmpfile, char *bakfile, int forceBakOverWrite);
695extern void fprintf_conf(FILE *f, int varnameWidth, const char *varname, const char *fmtstring, ...);
696extern void cs_strncpy(char * destination, const char * source, size_t num);
697
698// oscam variables
699extern int pfd, rfd, fd_c2m, fd_m2c, cs_idx, *c_start, cs_ptyp, cs_dblevel, cs_hw;
700extern int *logidx, *loghistidx, *log_fd;
701extern int is_server, *mcl;
702extern uchar mbuf[1024];
703extern ushort len4caid[256];
704extern pid_t master_pid;
705extern struct s_ecm *ecmcache;
706extern struct s_client *client;
707extern struct s_reader *reader;
708
709extern struct card_struct *Cards;
710extern struct idstore_struct *idstore;
711extern unsigned long *IgnoreList;
712
713extern struct s_config *cfg;
714extern char cs_confdir[], *loghist;
715extern EMM_PACKET epg;
716extern struct s_module ph[CS_MAX_MOD];
717extern ECM_REQUEST *ecmtask;
718extern char logfile[256];
719#ifdef CS_ANTICASC
720extern struct s_acasc_shm *acasc;
721extern FILE *fpa;
722extern int use_ac_log;
723#endif
724
725
726// oscam
727extern char *cs_platform(char *);
728extern int recv_from_udpipe(uchar *);
729extern char* username(int);
730extern int idx_from_pid(pid_t);
731extern int chk_bcaid(ECM_REQUEST *, CAIDTAB *);
732extern void cs_exit(int sig);
733extern int cs_fork(in_addr_t, in_port_t);
734extern void wait4master(void);
735extern int cs_auth_client(struct s_auth *, char*);
736extern void cs_disconnect_client(void);
737extern int check_ecmcache(ECM_REQUEST *, ulong);
738extern void store_logentry(char *);
739extern int write_to_pipe(int, int, uchar *, int);
740extern int read_from_pipe(int, uchar **, int);
741extern int write_ecm_request(int, ECM_REQUEST *);
742extern int write_ecm_answer(int, ECM_REQUEST *);
743extern void log_emm_request(int);
744extern ulong chk_provid(uchar *, ushort);
745extern void guess_cardsystem(ECM_REQUEST *);
746extern void guess_irdeto(ECM_REQUEST *);
747extern void get_cw(ECM_REQUEST *);
748extern void do_emm(EMM_PACKET *);
749extern ECM_REQUEST *get_ecmtask(void);
750extern void request_cw(ECM_REQUEST *, int, int);
751extern int send_dcw(ECM_REQUEST *);
752extern int process_input(uchar *, int, int);
753extern int chk_srvid(ECM_REQUEST *, int);
754extern int chk_sfilter(ECM_REQUEST *, PTAB*);
755extern int chk_ufilters(ECM_REQUEST *);
756extern int chk_rfilter(ECM_REQUEST *, struct s_reader *);
757extern int chk_rsfilter(ECM_REQUEST *, int);
758extern int chk_avail_reader(ECM_REQUEST *, struct s_reader *);
759extern int matching_reader(ECM_REQUEST *, struct s_reader *);
760extern void set_signal_handler(int , int , void (*)(int));
761extern void cs_log_config(void);
762extern void cs_reinit_clients(void);
763extern void cs_resolve(void);
764extern void chk_dcw(int fd);
765
766#ifdef CS_ANTICASC
767//extern void start_anticascader(void);
768extern void init_ac(void);
769extern void ac_init_stat();
770extern int ac_init_log(char*);
771extern void ac_do_stat(void);
772extern void ac_init_client(struct s_auth *);
773extern void ac_chk(ECM_REQUEST*, int);
774#endif
775
776// oscam-nano
777extern int chk_class(ECM_REQUEST *, CLASSTAB*, const char*, const char*);
778
779// oscam-config
780extern int init_config(void);
781extern int init_userdb(void);
782extern int init_readerdb(void);
783extern int init_sidtab(void);
784extern int init_srvid(void);
785extern int search_boxkey(ushort, char *);
786extern void init_len4caid(void);
787extern int init_irdeto_guess_tab(void);
788extern void chk_caidtab(char *caidasc, CAIDTAB *ctab);
789extern void chk_tuntab(char *tunasc, TUNTAB *ttab);
790extern void chk_services(char *labels, ulong *sidok, ulong *sidno);
791extern void chk_ftab(char *zFilterAsc, FTAB *ftab, const char *zType, const char *zName, const char *zFiltName);
792extern void chk_cltab(char *classasc, CLASSTAB *clstab);
793extern void chk_iprange(char *value, struct s_ip **base);
794extern void chk_port_tab(char *portasc, PTAB *ptab);
795#ifdef CS_ANTICASC
796extern void chk_t_ac(char *token, char *value);
797#endif
798extern void chk_t_camd33(char *token, char *value);
799extern void chk_t_camd35(char *token, char *value);
800extern void chk_t_camd35_tcp(char *token, char *value);
801extern void chk_t_newcamd(char *token, char *value);
802extern void chk_t_radegast(char *token, char *value);
803extern void chk_t_serial(char *token, char *value);
804extern void chk_t_gbox(char *token, char *value);
805extern void chk_t_cccam(char *token, char *value);
806extern void chk_t_global(char *token, char *value);
807extern void chk_t_monitor(char *token, char *value);
808extern void chk_t_dvbapi(char *token, char *value);
809extern void chk_account(char *token, char *value, struct s_auth *account);
810extern void chk_sidtab(char *token, char *value, struct s_sidtab *sidtab);
811extern int write_services();
812extern int write_userdb();
813extern int write_config();
814extern char *mk_t_caidtab(CAIDTAB *ctab);
815extern char *mk_t_tuntab(TUNTAB *ttab);
816extern char *mk_t_group(ulong *grp);
817extern char *mk_t_ftab(FTAB *ftab);
818
819// oscam-reader
820extern int ridx, logfd;
821extern int reader_cmd2api(uchar *, int);
822extern int reader_cmd2icc(uchar *, int);
823extern int card_write(uchar *, uchar *);
824extern void cs_ri_brk(int);
825extern void cs_ri_log(char *,...);
826extern void start_cardreader(void);
827extern void reader_card_info(void);
828extern int network_tcp_connection_open();
829extern void network_tcp_connection_close(int);
830
831// oscam-log
832extern int cs_init_log(char *);
833extern void cs_write_log(char *);
834extern void cs_log(char *,...);
835extern void cs_debug(char *,...);
836extern void cs_ddump(uchar *, int, char *, ...);
837extern void cs_close_log(void);
838extern int cs_init_statistics(char *);
839extern void cs_statistics(int);
840extern void cs_dump(uchar *, int, char *, ...);
841
842// oscam-aes
843extern void aes_set_key(char *);
844extern void aes_encrypt_idx(int, uchar *, int);
845extern void aes_decrypt(uchar *, int);
846#define aes_encrypt(b, n) aes_encrypt_idx(cs_idx, b, n)
847
848// reader-common
849extern int reader_device_init(char *);
850extern int reader_checkhealth(void);
851extern void reader_post_process(void);
852extern int reader_ecm(ECM_REQUEST *);
853extern int reader_emm(EMM_PACKET *);
854
855#ifdef HAVE_PCSC
856// reader-pcsc
857extern int pcsc_reader_do_api(struct s_reader *pcsc_reader, uchar *buf, uchar *cta_res, ushort *cta_lr,int l);
858extern int pcsc_activate_card(struct s_reader *pcsc_reader, uchar *atr, ushort *atr_size);
859extern int pcsc_check_card_inserted(struct s_reader *pcsc_reader);
860extern int pcsc_reader_init(struct s_reader *pcsc_reader, char *device);
861#endif
862
863// reader-irdeto
864extern int irdeto_card_init(uchar *);
865extern int irdeto_do_ecm(ECM_REQUEST *);
866extern int irdeto_do_emm(EMM_PACKET *);
867extern int irdeto_card_info(void);
868
869// reader-viaccess
870extern int viaccess_card_init(uchar *);
871extern int viaccess_do_ecm(ECM_REQUEST *);
872extern int viaccess_do_emm(EMM_PACKET *);
873extern int viaccess_card_info(void);
874
875// reader-videoguard
876extern int videoguard_card_init(uchar *, int);
877extern int videoguard_do_ecm(ECM_REQUEST *);
878extern int videoguard_do_emm(EMM_PACKET *);
879extern int videoguard_card_info(void);
880
881// reader-cryptoworks
882extern int cryptoworks_card_init(uchar *);
883extern int cryptoworks_do_ecm(ECM_REQUEST *);
884extern int cryptoworks_do_emm(EMM_PACKET *);
885extern int cryptoworks_card_info(void);
886extern int CheckSctLen(const uchar *, int);
887
888// reader-seca
889extern int seca_card_init(uchar *);
890extern int seca_do_ecm(ECM_REQUEST *);
891extern int seca_do_emm(EMM_PACKET *);
892extern int seca_card_info(void);
893
894// reader-nds
895extern int nds_card_init(uchar *, int);
896extern int nds_do_ecm(ECM_REQUEST *);
897extern int nds_do_emm(EMM_PACKET *);
898extern int nds_card_info(void);
899
900// reader nagra2/3
901extern int nagra2_card_init(uchar *);
902extern int nagra2_do_ecm(ECM_REQUEST *er);
903extern int nagra2_card_info(void);
904extern int nagra2_do_emm(EMM_PACKET *);
905extern void nagra2_post_process();
906
907// reader-conax
908extern int conax_card_init(uchar *);
909extern int conax_do_ecm(ECM_REQUEST *);
910extern int conax_do_emm(EMM_PACKET *);
911extern int conax_card_info(void);
912
913// reader-dre
914extern int dre_card_init(uchar *);
915extern int dre_do_ecm(ECM_REQUEST *);
916extern int dre_do_emm(EMM_PACKET *);
917extern int dre_card_info(void);
918
919// protocol modules
920extern int monitor_send_idx(int, char *);
921extern void module_monitor(struct s_module *);
922extern void module_camd35(struct s_module *);
923extern void module_camd35_tcp(struct s_module *);
924extern void module_camd33(struct s_module *);
925extern void module_newcamd(struct s_module *);
926extern void module_radegast(struct s_module *);
927extern void module_oscam_ser(struct s_module *);
928extern void module_gbox(struct s_module *);
929extern void module_cccam(struct s_module *);
930#ifdef HAVE_DVBAPI
931extern void module_dvbapi(struct s_module *);
932#endif
933extern struct timeval *chk_pending(struct timeb tp_ctimeout);
934
935// module-monitor
936extern char *monitor_get_proto(int idx);
937extern char *monitor_get_srvname(int srvid, int caid);
938extern int cs_idx2ridx(int idx);
939
940// oscam-http
941extern void http_srv();
942
943#endif // CS_GLOBALS
944
Note: See TracBrowser for help on using the repository browser.