- Timestamp:
- 03/27/10 21:26:14 (14 years ago)
- Location:
- branches/modular
- Files:
-
- 1 added
- 10 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
branches/modular/CMakeLists.txt
r1832 r1905 47 47 set (OSCamOperatingSystem "Amino") 48 48 set (CS_OS_HW "amino") 49 set (CS_OS_SYS "linux") 50 elseif (OSCAM_SYSTEM_NAME MATCHES "QboxHD") 51 set (OSCamOperatingSystem "QboxHD") 52 set (CS_OS_HW "qboxhd") 49 53 set (CS_OS_SYS "linux") 50 54 else (OSCAM_SYSTEM_NAME MATCHES "Tuxbox") … … 129 133 add_definitions ("-DOS_LINUX -DSH4 -DTUXBOX") 130 134 set (DEFAULT_CS_CONFDIR "/usr/local/etc") 135 elseif (OSCamOperatingSystem MATCHES "QboxHD") 136 add_definitions ("-DOS_LINUX -DSH4 -DQBOXHD -DTUXBOX") 137 set (DEFAULT_CS_CONFDIR "/var/tuxbox/config") 131 138 elseif (OSCamOperatingSystem MATCHES "Windows/Cygwin") 132 139 add_definitions ("-DOS_CYGWIN32 -static") … … 371 378 elseif (OSCamOperatingSystem MATCHES "WRT54G") 372 379 elseif (OSCamOperatingSystem MATCHES "Amino") 380 elseif (OSCamOperatingSystem MATCHES "QboxHD") 373 381 elseif (OSCamOperatingSystem MATCHES "Windows/cygwin") 374 382 elseif (OSCamOperatingSystem MATCHES "NeutrinoHD") -
branches/modular/globals.h
r1895 r1905 336 336 int (*c_init)(); 337 337 int (*c_send_ecm)(); 338 int (*c_send_emm)(); 338 339 int (*c_init_log)(); 339 340 int (*c_recv_log)(); -
branches/modular/module-dvbapi.c
r1895 r1905 135 135 int emm_count[]={0,0,0,0}; 136 136 137 #if 0138 extern uchar *nagra2_get_emm_filter(struct s_reader*, int);139 extern uchar *irdeto_get_emm_filter(struct s_reader*, int);140 #endif141 142 137 int dvbapi_set_filter(int dmx_fd, int api, unsigned short pid, uchar *filt, uchar *mask, int timeout) { 143 138 int ret=-1; … … 345 340 ushort pid = demux[demux_index].ECMpids[demux[demux_index].pidindex].EMM_PID; 346 341 347 int found=0;348 for (i=0;i<CS_MAXREADER;i++) {349 if (reader[i].caid[0] == demux[demux_index].ECMpids[demux[demux_index].pidindex].CA_System_ID) {350 client[cs_idx].au=i;351 found=1;352 break;353 }354 }355 356 #ifdef NOT_MODULAR357 #define SC_IRDETO 1 //reader-common.c358 #define SC_NAGRA 8359 switch(reader[client[cs_idx].au].card_system) {360 case SC_IRDETO:361 i=0;362 uchar *filter1 = irdeto_get_emm_filter(&reader[client[cs_idx].au], emmtype);363 memcpy(filter,filter1,32);364 break;365 case SC_NAGRA:366 i=0;367 uchar *filter1 = nagra2_get_emm_filter(&reader[client[cs_idx].au], emmtype);368 memcpy(filter,filter1,32);369 break;370 default:371 if (emmtype!=GLOBAL) return;372 memset(filter,0,32);373 filter[0]=0x80;374 filter[0+16]=0xF0;375 break;376 }377 #else378 342 if (cardsystem[reader[client[cs_idx].au].card_system-1].get_emm_filter) { 379 343 uchar *filter1 = cardsystem[reader[client[cs_idx].au].card_system-1].get_emm_filter(&reader[client[cs_idx].au], emmtype); … … 385 349 filter[0+16]=0xF0; 386 350 } 387 #endif388 351 389 352 for (i=0;i<MAX_FILTER;i++) { … … 525 488 epg.l=len; 526 489 memcpy(epg.emm, buffer, epg.l); 527 490 /* 528 491 int found=0; 529 492 for (i=0;i<CS_MAXREADER;i++) { … … 534 497 } 535 498 } 536 537 if (found==1 && reader[client[cs_idx].au].card_system>0) {499 */ 500 //if (found==1 && reader[client[cs_idx].au].card_system>0) { 538 501 cardsystem[reader[client[cs_idx].au].card_system-1].get_emm_type(&epg, &reader[client[cs_idx].au]); 539 502 char *typtext[]={"UNKNOWN", "UNIQUE", "SHARED", "GLOBAL"}; … … 541 504 cs_debug("dvbapi: %s emm (unk/g/s/u) (%d/%d/%d/%d)", typtext[epg.type], emm_count[UNKNOWN], emm_count[GLOBAL], emm_count[SHARED], emm_count[UNIQUE]); 542 505 do_emm(&epg); 543 } 544 506 //} 545 507 } 546 508 … … 789 751 void event_handler(int signal) { 790 752 struct stat pmt_info; 791 uchar inhalt[ 200], dest[200];792 int len;753 uchar inhalt[400], dest[200]; 754 uint len; 793 755 signal=signal; 794 756 int pmt_fd = open("/tmp/pmt.tmp", O_RDONLY); … … 796 758 if (fstat(pmt_fd, &pmt_info) == 0) { 797 759 if (pmt_info.st_mtime == pmt_timestamp) { 760 close(pmt_fd); 798 761 return; 799 762 } … … 810 773 811 774 cs_sleepms(100); 812 //02 B0 <len> <srvid1> <srvid2> .. 775 813 776 len = read(pmt_fd,inhalt,sizeof(inhalt)); 814 777 if (len<1) return; 815 778 #ifdef QBOXHD 779 uint j1,j2; 780 // QboxHD pmt.tmp is the full capmt written as a string of hex values 781 // pmt.tmp must be longer than 3 bytes (6 hex chars) and even length 782 if ((len<6) || ((len%2) != 0)) { 783 cs_log("dvbapi: error parsing QboxHD pmt.tmp, incorrect length"); 784 return; 785 } 786 787 for(j2=0,j1=0;j2<len;j2+=2,j1++) { 788 if (sscanf((char*)inhalt+j2,"%02X",(uint*)dest+j1) != 1) { 789 cs_log("dvbapi: error parsing QboxHD pmt.tmp, data not valid in position %d",j2); 790 return; 791 } 792 } 793 794 cs_ddump(dest,len/2,"QboxHD pmt.tmp:"); 795 796 pmt_id = dvbapi_parse_capmt(dest+4, (len/2)-4, -1); 797 #else 816 798 cs_ddump(inhalt,len,"pmt:"); 817 799 … … 825 807 826 808 pmt_id = dvbapi_parse_capmt(dest, 7 + len - 12 - 4, -1); 809 #endif 827 810 close(pmt_fd); 828 811 } … … 957 940 958 941 if (type[i]==1) { 959 if (pfd2[i].fd==listenfd) { 942 if (pfd2[i].fd==listenfd) { 943 cs_debug("dvbapi: new socket connection"); 960 944 connfd = accept(listenfd, (struct sockaddr *)&servaddr, (socklen_t *)&clilen); 961 cs_debug("dvbapi: new socket connection %d", connfd);962 945 963 946 if (connfd <= 0) { … … 981 964 cs_log("dvbapi: New capmt on old socket. Please report."); 982 965 len = read(pfd2[i].fd, mbuf, sizeof(mbuf)); 983 cs_dump(mbuf, len, "message:"); 966 cs_dump(mbuf, len, "message:"); 984 967 } 985 968 } else { // type==0 -
branches/modular/module-newcamd.c
r1882 r1905 1264 1264 } 1265 1265 1266 1267 static int newcamd_send_emm(EMM_PACKET *ep) 1268 { 1269 uchar buf[200]; 1270 if (!client[cs_idx].udp_sa.sin_addr.s_addr) // once resolved at least 1271 return(-1); 1272 1273 // check server filters 1274 if( !newcamd_connect() ) return (-1); 1275 1276 //if( !chk_rsfilter(er, reader[ridx].ncd_disable_server_filt) ) return(-1); 1277 1278 memcpy(buf, ep->emm, ep->l); 1279 1280 return((newcamd_send(buf, ep->l, 0)<1) ? (-1) : 0); 1281 } 1282 1266 1283 static int newcamd_recv_chk(uchar *dcw, int *rc, uchar *buf, int n) 1267 1284 { … … 1294 1311 ph->c_recv_chk=newcamd_recv_chk; 1295 1312 ph->c_send_ecm=newcamd_send_ecm; 1296 1297 } 1313 ph->c_send_emm=newcamd_send_emm; 1314 } -
branches/modular/oscam-config.h
r1882 r1905 100 100 # endif 101 101 # define CS_EMBEDDED 102 # define CS_NOSHM 102 # ifndef QBOXHD 103 # define CS_NOSHM 104 # endif 103 105 # define NO_FTIME 104 106 # define CS_HW_DBOX2 1 -
branches/modular/oscam-log.c
r1882 r1905 32 32 fflush(*f); 33 33 fclose(*f); 34 *f =(FILE *)0;35 rc =rename(file, prev_log);34 *f = (FILE *)0; 35 rc = rename(file, prev_log); 36 36 if( rc!=0 ) { 37 37 fprintf(stderr, "rename(%s, %s) failed (errno=%d)\n", … … 54 54 else 55 55 #endif 56 if (fp || use_stdout) { 57 if( !use_stdout && !use_syslog) 58 switch_log(cfg->logfile, &fp, cs_init_log); 59 if (!cfg->disablelog){ 60 fprintf(fp, "%s", txt); 61 fflush(fp); 56 // filter out entries with leading 's' and forward to statistics 57 if(txt[0] == 's') { 58 switch_log(cfg->usrfile, &fps, cs_init_statistics); 59 fprintf(fps, "%s", txt + 1); // remove the leading 's' and write to file 60 fflush(fps); 61 } else { 62 if (fp || use_stdout) { 63 if( !use_stdout && !use_syslog) 64 switch_log(cfg->logfile, &fp, cs_init_log); 65 if (!cfg->disablelog){ 66 fprintf(fp, "%s", txt); 67 fflush(fp); 68 } 62 69 } 63 70 } … … 358 365 void cs_statistics(int idx) 359 366 { 360 time_t t;361 struct tm *lt;362 363 if (fps)364 { 367 if (!cfg->disableuserfile){ 368 time_t t; 369 struct tm *lt; 370 char buf[512]; 371 365 372 float cwps; 366 373 367 switch_log(cfg->usrfile, &fps, cs_init_statistics);368 374 time(&t); 369 375 lt=localtime(&t); … … 380 386 channel = get_servicename(client[idx].last_srvid,client[idx].last_caid); 381 387 382 if(!cfg->disableuserfile) { 383 fprintf(fps, "%02d.%02d.%02d %02d:%02d:%02d %3.1f %s %s %d %d %d %d %d %d %d %ld %ld %s %04X:%04X %s\n", 384 lt->tm_mday, lt->tm_mon+1, lt->tm_year%100, 385 lt->tm_hour, lt->tm_min, lt->tm_sec, cwps, 386 client[idx].usr[0] ? client[idx].usr : "-", 387 cs_inet_ntoa(client[idx].ip), client[idx].port, 388 client[idx].cwfound, client[idx].cwcache, client[idx].cwnot, client[idx].cwignored, 389 client[idx].cwtout, client[idx].cwtun, client[idx].login, client[idx].last, 390 ph[client[idx].ctyp].desc,client[idx].last_caid,client[idx].last_srvid, 391 channel); 392 393 fflush(fps); 394 } 395 } 396 } 388 int lsec = client[idx].last - client[idx].lastswitch; 389 int secs = 0, fullmins = 0, mins = 0, fullhours = 0; 390 391 if((lsec > 0) && (lsec < 1000000)) { 392 secs = lsec % 60; 393 if (lsec > 60) { 394 fullmins = lsec / 60; 395 mins = fullmins % 60; 396 if(fullmins > 60) { 397 fullhours = fullmins / 60; 398 } 399 } 400 } 401 402 /* statistics entry start with 's' to filter it out on other end of pipe 403 * so we can use the same Pipe as Log 404 */ 405 sprintf(buf, "s%02d.%02d.%02d %02d:%02d:%02d %3.1f %s %s %d %d %d %d %d %d %d %ld %ld %02d:%02d:%02d %s %04X:%04X %s\n", 406 lt->tm_mday, lt->tm_mon+1, lt->tm_year%100, 407 lt->tm_hour, lt->tm_min, lt->tm_sec, cwps, 408 client[idx].usr[0] ? client[idx].usr : "-", 409 cs_inet_ntoa(client[idx].ip), 410 client[idx].port, 411 client[idx].cwfound, 412 client[idx].cwcache, 413 client[idx].cwnot, 414 client[idx].cwignored, 415 client[idx].cwtout, 416 client[idx].cwtun, 417 client[idx].login, 418 client[idx].last, 419 fullhours, mins, secs, 420 ph[client[idx].ctyp].desc, 421 client[idx].last_caid, 422 client[idx].last_srvid, 423 channel); 424 425 if ((*log_fd) && (client[cs_idx].typ != 'l') && (client[cs_idx].typ != 'a')) 426 write_to_pipe(*log_fd, PIP_ID_LOG, (uchar *) buf, strlen(buf)); 427 else 428 cs_write_log(buf); 429 } 430 } -
branches/modular/oscam-reader.c
r1892 r1905 426 426 cs_ftime(&tps); 427 427 428 no=0; 429 for (i=ecs=0; (i<CS_EMMCACHESIZE) && (!ecs); i++) 430 if (!memcmp(emmcache[i].emm, ep->emm, ep->emm[2])) 431 { 432 if (reader[ridx].cachemm) 433 ecs=(reader[ridx].rewritemm > emmcache[i].count) ? 1 : 2; 434 else 435 ecs=1; 436 no=++emmcache[i].count; 437 i--; 438 } 439 440 if ((rc=ecs)<2) 441 { 428 no=0; 429 for (i=ecs=0; (i<CS_EMMCACHESIZE) && (!ecs); i++) 430 if (!memcmp(emmcache[i].emm, ep->emm, ep->emm[2])) 431 { 432 if (reader[ridx].cachemm) 433 ecs=(reader[ridx].rewritemm > emmcache[i].count) ? 1 : 2; 434 else 435 ecs=1; 436 no=++emmcache[i].count; 437 i--; 438 } 439 440 if ((rc=ecs)<2) 441 { 442 if (proxy) { 443 cs_debug("network emm reader: %s" ,reader[ridx].label); 444 445 if (reader[ridx].ph.c_send_emm) { 446 rc=reader[ridx].ph.c_send_emm(ep); 447 } else { 448 cs_debug("send_emm() support missing"); 449 rc=0; 450 } 451 } else { 452 cs_debug("local emm reader: %s" ,reader[ridx].label); 442 453 #ifdef WITH_CARDREADER 443 rc=(proxy) ? 0 :reader_emm(ep);454 rc=reader_emm(ep); 444 455 #else 445 rc=0; 446 #endif 447 if (!ecs) 448 { 449 i=reader_store_emm(ep->emm, ep->type); 450 no=1; 451 } 452 } 453 if (rc) client[cs_idx].lastemm=time((time_t)0); 456 rc=0; 457 #endif 458 } 459 460 if (!ecs) 461 { 462 i=reader_store_emm(ep->emm, ep->type); 463 no=1; 464 } 465 } 466 467 if (rc) client[cs_idx].lastemm=time((time_t)0); 454 468 455 469 if (reader[ridx].logemm & (1 << rc)) -
branches/modular/oscam.c
r1882 r1905 333 333 switch(client[cs_idx].typ) 334 334 { 335 case 'c': cs_statistics(cs_idx); 335 case 'c': 336 client[cs_idx].last_caid = 0xFFFF; 337 client[cs_idx].last_srvid = 0xFFFF; 338 cs_statistics(cs_idx); 336 339 case 'm': break; 337 340 case 'n': *log_fd=0; … … 1180 1183 if (client[cs_idx].typ=='c') 1181 1184 { 1185 client[cs_idx].last_caid = 0xFFFE; 1186 client[cs_idx].last_srvid = 0xFFFE; 1182 1187 client[cs_idx].expirationdate=account->expirationdate; 1183 1188 client[cs_idx].disabled=account->disabled; … … 1246 1251 cs_log("%s %s:%d-client %s%s (%s, %s)", 1247 1252 client[cs_idx].crypted ? t_crypt : t_plain, 1248 1249 1250 1251 1252 1253 e_txt ? e_txt : ph[client[cs_idx].ctyp].desc, 1254 cfg->ncd_ptab.ports[client[cs_idx].port_idx].s_port, 1255 client[cs_idx].ip ? cs_inet_ntoa(client[cs_idx].ip) : "", 1256 client[cs_idx].ip ? t_grant : t_grant+1, 1257 username(cs_idx), t_msg[rc]); 1253 1258 } 1254 1259 else … … 1256 1261 cs_log("%s %s-client %s%s (%s, %s)", 1257 1262 client[cs_idx].crypted ? t_crypt : t_plain, 1258 1259 1260 1261 1263 e_txt ? e_txt : ph[client[cs_idx].ctyp].desc, 1264 client[cs_idx].ip ? cs_inet_ntoa(client[cs_idx].ip) : "", 1265 client[cs_idx].ip ? t_grant : t_grant+1, 1266 username(cs_idx), t_msg[rc]); 1262 1267 } 1263 1268 … … 1988 1993 1989 1994 if ((i != client[cs_idx].last_srvid) || (!client[cs_idx].lastswitch)) { 1990 client[cs_idx].lastswitch = now;1991 1995 if(cfg->usrfileflag) 1992 1996 cs_statistics(cs_idx); 1997 client[cs_idx].lastswitch = now; 1993 1998 } 1994 1999 … … 2124 2129 return; 2125 2130 2126 if (!reader_get_emm_type(ep, &reader[au])) //decodes ep->type and ep->hexserial from the EMM 2127 return; 2131 if (reader[au].card_system>0) { 2132 if (!reader_get_emm_type(ep, &reader[au])) { //decodes ep->type and ep->hexserial from the EMM 2133 cs_debug_mask(D_EMM, "emm skipped"); 2134 return; 2135 } 2136 } 2128 2137 2129 2138 cs_ddump_mask(D_EMM, ep->hexserial, 8, "emm UA/SA:"); -
branches/modular/reader-viaccess.c
r1882 r1905 252 252 uchar DE04[256]; 253 253 254 memset(DE04, 0, sizeof(DE04)); 255 254 256 if(ecm88Data[0]==0xd2) 255 257 { -
branches/modular/reader-videoguard2.c
r1882 r1905 507 507 *year=(Date[0]/12)+BASEYEAR; 508 508 *mon=(Date[0]%12)+1; 509 *day=Date[1] ;509 *day=Date[1] & 0x1f; 510 510 *hh=Date[2]/8; 511 511 *mm=(0x100*(Date[2]-*hh*8)+Date[3])/32;
Note:
See TracChangeset
for help on using the changeset viewer.