source: trunk/global-functions.h @ 5375

Last change on this file since 5375 was 5373, checked in by _network, 8 years ago

correct some declarations

File size: 16.8 KB
Line 
1/* ===========================
2 *      protocol modules
3 * =========================== */
4extern int32_t  monitor_send_idx(struct s_client *, char *);
5extern void module_monitor(struct s_module *);
6extern void module_camd35(struct s_module *);
7extern void module_camd35_tcp(struct s_module *);
8extern void module_camd33(struct s_module *);
9extern void module_newcamd(struct s_module *);
10extern void module_radegast(struct s_module *);
11extern void module_oscam_ser(struct s_module *);
12#ifdef MODULE_CCCAM
13extern void module_cccam(struct s_module *);
14#endif
15extern void module_gbox(struct s_module *);
16extern void module_constcw(struct s_module *);
17extern int32_t chk_pending(int32_t timeout);
18#ifdef HAVE_DVBAPI
19extern void module_dvbapi(struct s_module *);
20#endif
21
22/* ===========================
23 *       card support
24 * =========================== */
25extern void reader_nagra(struct s_cardsystem *);
26extern void reader_irdeto(struct s_cardsystem *);
27extern void reader_cryptoworks(struct s_cardsystem *);
28extern void reader_viaccess(struct s_cardsystem *);
29extern void reader_conax(struct s_cardsystem *);
30extern void reader_seca(struct s_cardsystem *);
31extern void reader_videoguard1(struct s_cardsystem *);
32extern void reader_videoguard2(struct s_cardsystem *);
33extern void reader_videoguard12(struct s_cardsystem *);
34extern void reader_dre(struct s_cardsystem *);
35extern void reader_tongfang(struct s_cardsystem *);
36
37/* ===========================
38 *         cardreaders
39 * =========================== */
40extern void cardreader_mouse(struct s_cardreader *crdr);
41extern void cardreader_smargo(struct s_cardreader *crdr);
42#ifdef WITH_STAPI
43extern void cardreader_stapi(struct s_cardreader *crdr);
44#endif
45#ifdef HAVE_PCSC
46extern void pcsc_close(struct s_reader *pcsc_reader);
47#endif
48
49/* ===========================
50 *           oscam
51 * =========================== */
52#ifdef WEBIF
53extern void cs_exit_oscam();
54extern void cs_restart_oscam();
55extern int32_t cs_get_restartmode();
56extern void clear_account_stats(struct s_auth *account);
57extern void clear_all_account_stats();
58extern void clear_system_stats();
59#endif
60
61#ifdef QBOXHD_LED
62extern void qboxhd_led_blink(int32_t color, int32_t duration);
63#endif
64
65extern void start_thread(void * startroutine, char * nameroutine);
66extern void cs_reload_config();
67extern int32_t recv_from_udpipe(uchar *);
68extern char* username(struct s_client *);
69extern struct s_client * get_client_by_tid(uint32_t);
70extern int32_t chk_bcaid(ECM_REQUEST *, CAIDTAB *);
71extern void cs_exit(int32_t sig);
72extern struct s_client * create_client(in_addr_t);
73extern int32_t cs_auth_client(struct s_client *, struct s_auth *, const char*);
74extern void cs_disconnect_client(struct s_client *);
75extern int32_t check_cwcache2(ECM_REQUEST *, uint64_t grp);
76extern int32_t write_to_pipe(int32_t, int32_t, uchar *, int32_t);
77extern int32_t read_from_pipe(int32_t, uchar **);
78extern int32_t write_ecm_answer(struct s_reader *, ECM_REQUEST *);
79extern uint32_t chk_provid(uchar *, uint16_t);
80extern void convert_to_beta(struct s_client *cl, ECM_REQUEST *er, uint16_t caidto);
81#ifdef IRDETO_GUESSING
82extern void guess_irdeto(ECM_REQUEST *);
83#endif
84extern void get_cw(struct s_client *, ECM_REQUEST *);
85extern void do_emm(struct s_client *, EMM_PACKET *);
86extern ECM_REQUEST *get_ecmtask(void);
87extern void request_cw(ECM_REQUEST *, int32_t, int32_t);
88extern void send_reader_stat(struct s_reader *rdr, ECM_REQUEST *er, int32_t rc);
89extern int32_t send_dcw(struct s_client *, ECM_REQUEST *);
90extern int32_t process_input(uchar *, int32_t, int32_t);
91extern int32_t has_srvid(struct s_client *cl, ECM_REQUEST *er);
92extern int32_t chk_srvid(struct s_client *, ECM_REQUEST *);
93extern int32_t chk_srvid_match(ECM_REQUEST *, SIDTAB *);
94extern int32_t chk_sfilter(ECM_REQUEST *, PTAB*);
95extern int32_t chk_ufilters(ECM_REQUEST *);
96extern int32_t chk_rsfilter(struct s_reader * reader, ECM_REQUEST *);
97extern int32_t matching_reader(ECM_REQUEST *, struct s_reader *);
98extern int32_t emm_reader_match(struct s_reader *reader, uint16_t caid, uint32_t provid);
99extern void set_signal_handler(int32_t , int32_t , void (*));
100extern void cs_waitforcardinit(void);
101extern void cs_reinit_clients(struct s_auth *new_accounts);
102extern int32_t process_client_pipe(struct s_client *cl, uchar *buf, int32_t l);
103extern void update_reader_config(uchar *ptr);
104extern int32_t chk_ctab(uint16_t caid, CAIDTAB *ctab);
105extern int32_t chk_srvid_by_caid_prov(struct s_client *, uint16_t caid, uint32_t provid);
106extern void nullclose(int32_t *fd);
107extern void *clientthread_init(void * init);
108extern void cleanup_thread(void *var);
109extern void kill_thread(struct s_client *cl);
110extern void remove_reader_from_active(struct s_reader *rdr);
111extern void add_reader_to_active(struct s_reader *rdr);
112extern void cs_add_violation(uint32_t ip);
113extern void cs_card_info(void);
114extern void cs_debug_level(void);
115
116/* ===========================
117 *           oscam-ac
118 * =========================== */
119#ifdef CS_ANTICASC
120extern void init_ac(void);
121extern void ac_init_stat();
122extern void ac_clear();
123extern void ac_done_stat();
124extern int32_t  ac_init_log();
125extern void ac_do_stat(void);
126extern void start_anticascader();
127extern void ac_init_client(struct s_client *, struct s_auth *);
128extern void ac_chk(struct s_client *,ECM_REQUEST*, int32_t);
129#endif
130
131/* ===========================
132 *        oscam-config
133 * =========================== */
134extern int32_t  init_config(void);
135extern int32_t  init_free_userdb(struct s_auth *auth);
136extern struct s_auth *init_userdb();
137extern int32_t  init_readerdb(void);
138extern void free_reader(struct s_reader *rdr);
139extern int32_t  init_sidtab(void);
140extern void free_sidtab(struct s_sidtab *sidtab);
141extern void init_free_sidtab();
142//Todo #ifdef CCCAM
143extern int32_t init_provid();
144
145extern int32_t  init_srvid(void);
146extern int32_t  init_tierid(void);
147extern int32_t  search_boxkey(uint16_t, char *);
148extern void init_len4caid(void);
149#ifdef IRDETO_GUESSING
150extern int32_t  init_irdeto_guess_tab(void);
151#endif
152extern void chk_caidtab(char *caidasc, CAIDTAB *ctab);
153extern void chk_tuntab(char *tunasc, TUNTAB *ttab);
154extern void chk_services(char *labels, SIDTABBITS *sidok, SIDTABBITS *sidno);
155extern void chk_ftab(char *zFilterAsc, FTAB *ftab, const char *zType, const char *zName, const char *zFiltName);
156extern void chk_cltab(char *classasc, CLASSTAB *clstab);
157extern void chk_iprange(char *value, struct s_ip **base);
158extern void chk_port_tab(char *portasc, PTAB *ptab);
159#ifdef CS_ANTICASC
160extern void chk_t_ac(char *token, char *value);
161#endif
162extern void chk_t_camd33(char *token, char *value);
163extern void chk_t_camd35(char *token, char *value);
164extern void chk_t_camd35_tcp(char *token, char *value);
165extern void chk_t_newcamd(char *token, char *value);
166extern void chk_t_radegast(char *token, char *value);
167extern void chk_t_serial(char *token, char *value);
168extern void chk_t_gbox(char *token, char *value);
169#ifdef MODULE_CCCAM
170extern void chk_t_cccam(char *token, char *value);
171#endif
172extern void chk_t_global(const char *token, char *value);
173extern void chk_t_monitor(char *token, char *value);
174extern void chk_reader(char *token, char *value, struct s_reader *rdr);
175
176#ifdef HAVE_DVBAPI
177extern void chk_t_dvbapi(char *token, char *value);
178extern void dvbapi_chk_caidtab(char *caidasc, char type);
179extern void dvbapi_read_priority(void);
180#endif
181
182#ifdef WEBIF
183extern void chk_t_webif(char *token, char *value);
184#endif
185
186#ifdef LCDSUPPORT
187extern void chk_t_lcd(char *token, char *value);
188#endif
189
190extern void cs_accounts_chk(void);
191extern void chk_account(const char *token, char *value, struct s_auth *account);
192extern void chk_sidtab(char *token, char *value, struct s_sidtab *sidtab);
193extern int32_t write_services();
194extern int32_t write_userdb(struct s_auth *authptr);
195extern int32_t write_config();
196extern int32_t write_server();
197extern void write_versionfile();
198extern char *mk_t_caidtab(CAIDTAB *ctab);
199extern char *mk_t_caidvaluetab(CAIDVALUETAB *tab);
200extern char *mk_t_tuntab(TUNTAB *ttab);
201extern char *mk_t_group(uint64_t grp);
202extern char *mk_t_ftab(FTAB *ftab);
203extern char *mk_t_camd35tcp_port();
204extern char *mk_t_cccam_port();
205extern char *mk_t_aeskeys(struct s_reader *rdr);
206extern char *mk_t_newcamd_port();
207extern char *mk_t_aureader(struct s_auth *account);
208extern char *mk_t_nano(struct s_reader *rdr, uchar flag);
209extern char *mk_t_service( uint64_t sidtabok, uint64_t sidtabno);
210extern char *mk_t_logfile();
211extern char *mk_t_iprange(struct s_ip *range);
212extern char *mk_t_ecmwhitelist(struct s_ecmWhitelist *whitelist);
213extern char *mk_t_cltab(CLASSTAB *clstab);
214extern void free_mk_t(char *value);
215extern int32_t init_provid();
216
217/* ===========================
218 *       oscam-garbage
219 * =========================== */
220#ifdef WITH_DEBUG
221extern void add_garbage_debug(void *data, char *file, uint16_t line);
222#define add_garbage(x)  add_garbage_debug(x,__FILE__, __LINE__)
223#else
224extern void add_garbage(void *data);
225#endif
226extern void start_garbage_collector(int32_t);
227extern void stop_garbage_collector();
228
229/* ===========================
230 *         oscam-http
231 * =========================== */
232#ifdef WEBIF
233extern void http_srv();
234#endif
235
236/* ===========================
237 *         oscam-lcd
238 * =========================== */
239#ifdef LCDSUPPORT
240extern void start_lcd_thread();
241extern void end_lcd_thread();
242#endif
243
244/* ===========================
245 *         oscam-log
246 * =========================== */
247extern int32_t  cs_init_log();
248extern void cs_reinit_loghist(uint32_t size);
249extern int32_t cs_open_logfiles();
250extern void cs_write_log(char *);
251extern void cs_log(const char *,...);
252#ifdef WITH_DEBUG
253extern void cs_debug_mask(uint16_t, const char *,...);
254extern void cs_ddump_mask(uint16_t, const uchar *, int32_t, char *, ...);
255#else
256#define nop() asm volatile("nop")
257#define cs_debug(...) nop()
258#define cs_debug_mask(...) nop()
259#define cs_ddump(...) nop()
260#define cs_ddump_mask(...) nop()
261#endif
262extern void log_emm_request(struct s_reader *);
263extern void logCWtoFile(ECM_REQUEST *er);
264extern void cs_log_config(void);
265extern void cs_close_log(void);
266extern int32_t cs_init_statistics();
267extern void cs_statistics(struct s_client * client);
268extern void cs_dump(const uchar *, int32_t, char *, ...);
269
270/* ===========================
271 *        oscam-reader
272 * =========================== */
273extern int32_t logfd;
274extern int32_t reader_cmd2icc(struct s_reader * reader, const uchar *buf, const int32_t l, uchar *response, uint16_t *response_length);
275extern int32_t card_write(struct s_reader * reader, const uchar *, const uchar *, uchar *, uint16_t *);
276extern int32_t check_sct_len(const unsigned char *data, int32_t off);
277extern void cs_ri_brk(struct s_reader * reader, int32_t);
278extern void cs_ri_log(struct s_reader * reader, char *,...);
279extern void * start_cardreader(void *);
280extern void reader_card_info(struct s_reader * reader);
281extern int32_t hostResolve(struct s_reader * reader);
282extern int32_t network_tcp_connection_open();
283extern void network_tcp_connection_close(struct s_client *, int32_t);
284extern int32_t casc_recv_timer(struct s_reader * reader, uchar *buf, int32_t l, int32_t msec);
285extern void clear_reader_pipe(struct s_reader * reader);
286extern void block_connect(struct s_reader *rdr);
287extern int32_t is_connect_blocked(struct s_reader *rdr);
288
289/* ===========================
290 *        oscam-simples
291 * =========================== */
292extern struct s_client *cur_client(void);
293extern int32_t get_threadnum(struct s_client *client);
294extern char *get_tmp_dir();
295extern void aes_set_key(char *);
296extern void aes_encrypt_idx(struct s_client *, uchar *, int32_t);
297extern void aes_decrypt(uchar *, int32_t);
298extern int32_t aes_decrypt_from_list(AES_ENTRY *list, uint16_t caid, uint32_t provid,int32_t keyid, uchar *buf, int32_t n);
299extern int32_t aes_present(AES_ENTRY *list, uint16_t caid, uint32_t provid,int32_t keyid);
300extern void parse_aes_keys(struct s_reader *rdr,char *value);
301#define aes_encrypt(b, n) aes_encrypt_idx(cur_client(), b, n)
302extern char *remote_txt(void);
303extern char *trim(char *);
304extern char *strtolower(char *);
305extern int32_t gethexval(char);
306extern int32_t comp_timeb(struct timeb *tpa, struct timeb *tpb);
307extern int32_t cs_atob(uchar *, char *, int32_t);
308extern uint32_t cs_atoi(char *, int32_t, int32_t);
309extern int32_t byte_atob(char *);
310extern int32_t word_atob(char *);
311extern int32_t dyn_word_atob(char *asc);
312extern int32_t key_atob_l(char *, uchar *, int32_t);
313extern char *key_btoa(char *, uchar *);
314extern char *cs_hexdump(int32_t, const uchar *, int32_t);
315extern char *cs_hexdump_buf(int32_t, const uchar *, int32_t, char *target, int32_t len);
316extern in_addr_t cs_inet_order(in_addr_t);
317extern char *cs_inet_ntoa(in_addr_t);
318extern in_addr_t cs_inet_addr(char *txt);
319extern uint32_t b2i(int32_t, uchar *);
320extern uint64_t b2ll(int32_t, uchar *);
321extern uchar *i2b_buf(int32_t n, uint32_t i, uchar *b);
322extern uint32_t a2i(char *, int32_t);
323extern int32_t boundary(int32_t, int32_t);
324extern void cs_ftime(struct timeb *);
325extern void cs_sleepms(uint32_t);
326extern void cs_sleepus(uint32_t);
327extern void cs_setpriority(int32_t);
328extern struct s_auth *find_user(char *);
329extern int32_t check_filled(uchar *value, int32_t length);
330extern void *cs_malloc(void *result, size_t size, int32_t quiterror);
331extern void *cs_realloc(void *result, size_t size, int32_t quiterror);
332#ifdef WEBIF
333extern char to_hex(char code);
334extern void char_to_hex(const unsigned char* p_array, uint32_t p_array_len, unsigned char *result);
335extern void create_rand_str(char *dst, int32_t size);
336#endif
337extern int32_t file_exists(const char * filename);
338extern void clear_sip(struct s_ip **sip);
339extern void clear_ptab(struct s_ptab *ptab);
340extern void clear_ftab(struct s_ftab *ftab);
341void clear_caidtab(struct s_caidtab *ctab);
342void clear_tuntab(struct s_tuntab *ttab);
343extern int32_t file_copy(char *srcfile, char *destfile);
344extern int32_t safe_overwrite_with_bak(char *destfile, char *tmpfile, char *bakfile, int32_t forceBakOverWrite);
345extern void fprintf_conf(FILE *f, int32_t varnameWidth, const char *varname, const char *fmtstring, ...);
346extern void cs_strncpy(char * destination, const char * source, size_t num);
347extern char *get_servicename(struct s_client *cl, int32_t srvid, int32_t caid, char *buf);
348extern char *get_tiername(int32_t tierid, int32_t caid, char *buf);
349extern char *get_provider(int32_t caid, uint32_t provid, char *buf);
350extern void make_non_blocking(int32_t fd);
351extern uchar fast_rnd(void);
352extern void init_rnd(void);
353extern int32_t hexserialset(struct s_reader *rdr);
354extern char *monitor_get_proto(struct s_client *);
355extern char *reader_get_type_desc(struct s_reader * rdr, int32_t extended);
356extern char *get_ncd_client_name(char *client_id);
357extern int32_t cs_strnicmp(const char * str1, const char * str2, size_t num);
358extern char *strnew(char *str);
359extern void hexserial_to_newcamd(uchar *source, uchar *dest, uint16_t caid);
360extern void newcamd_to_hexserial(uchar *source, uchar *dest, uint16_t caid);
361extern int32_t check_ip(struct s_ip *ip, in_addr_t n);
362#ifdef WITH_MUTEXDEBUG
363extern int32_t cs_lock_debug(pthread_mutex_t *mutex, char *file, uint16_t line);
364extern int32_t cs_trylock_debug(pthread_mutex_t *mutex, char *file, uint16_t line);
365extern int32_t cs_unlock_debug(pthread_mutex_t *mutex, char *file, uint16_t line);
366#define cs_lock(x) cs_lock_debug(x,__FILE__, __LINE__)
367#define cs_trylock(x) cs_trylock_debug(x,__FILE__, __LINE__)
368#define cs_unlock(x) cs_unlock_debug(x,__FILE__, __LINE__)
369#else
370extern int32_t cs_lock(pthread_mutex_t *mutex);
371extern int32_t cs_trylock(pthread_mutex_t *mutex);
372extern int32_t cs_unlock(pthread_mutex_t *mutex);
373#endif
374extern void cs_cleanlocks();
375extern uint32_t cs_getIPfromHost(const char *hostname);
376
377/* ===========================
378 *       module-cccshare
379 * =========================== */
380extern void init_share();
381extern void done_share();
382
383/* ===========================
384 *         module-stat
385 * =========================== */
386#ifdef WITH_LB
387extern void init_stat();
388extern int32_t get_best_reader(ECM_REQUEST *er);
389extern void clear_reader_stat(struct s_reader *reader);
390extern void add_stat(struct s_reader *rdr, ECM_REQUEST *er, int32_t ecm_time, int32_t rc);
391extern void load_stat_from_file();
392extern READER_STAT *get_stat(struct s_reader *rdr, uint16_t caid, uint32_t prid, uint16_t srvid, int16_t ecmlen);
393extern void save_stat_to_file(int32_t);
394extern void clear_all_stat();
395extern void housekeeping_stat(int32_t force);
396extern void sort_stat(struct s_reader *rdr, int32_t reverse);
397#endif
398
399/* ===========================
400 *       reader-common
401 * =========================== */
402extern int32_t reader_device_init(struct s_reader * reader);
403extern int32_t reader_checkhealth(struct s_reader * reader);
404extern void reader_post_process(struct s_reader * reader);
405extern int32_t reader_ecm(struct s_reader * reader, ECM_REQUEST *);
406extern int32_t reader_emm(struct s_reader * reader, EMM_PACKET *);
407extern int32_t reader_get_emm_type(EMM_PACKET *ep, struct s_reader * reader);
408extern struct s_cardsystem *get_cardsystem_by_caid(uint16_t caid);
409extern void reader_device_close(struct s_reader * reader);
Note: See TracBrowser for help on using the repository browser.