]> www.vanbest.org Git - sasc-ng.git/commitdiff
cardclient-cccam2: optionally request emulations (wantemu)
authorleslie <unknown>
Sat, 23 Jan 2010 10:47:25 +0000 (11:47 +0100)
committerleslie <unknown>
Sat, 23 Jan 2010 10:47:25 +0000 (11:47 +0100)
examples/cardclient.conf.example
systems/cardclient/cccam2.c

index 2af65c7ce6d2cdd9fa7b2fa11f82a481e96e3c0f..1bc98d479ed5dd0db734b6b5d9ee5216d3288591 100644 (file)
@@ -62,8 +62,9 @@ cccam:hostname:port:emm/caid/mask:socket
 # NODEID=<16 characters>    - your static node ID. Defaults to random ID
 # VERSION=<str>             - version string. Defaults to '2.0.11'
 # BUILD=<str>               - build string. Defaults to '2892'
+# WANTEMUS=<0/1>            - requesting of emulations. Defaults to 0 (off)
 #
-# parameter example: BUILD=3212,NODEID=123A567F901C34E6
+# parameter example: BUILD=3212,WANTEMUS=1,NODEID=123A567F901C34E6
 #
 # NOTE: this is a real client. You don't need to have CCcam running on local
 # machine.
index 3ec3484a6fa96e8b0ef56afb573799c02e3a557d..078158b22df056fe31e9ffa0804e4181feeb5962 100644 (file)
@@ -418,7 +418,9 @@ int cShares::GetShares(const cEcmInfo *ecm, cShares *ss)
   Clear();
   ss->Lock(false);
   for(cShare *s=ss->First(); s; s=ss->Next(s)) {
-    if(s->caid==ecm->caId && (!s->UsesProv() || s->HasProv(ecm->provId)) && !Find(s->shareid)) {
+    if(((s->caid==ecm->caId && (!s->UsesProv() || s->HasProv(ecm->provId))) ||
+        (s->shareid<64 && s->caid==(ecm->caId&0xFF00))) &&
+       !Find(s->shareid)) {
       cShare *n=new cShare(s);
       n->status=ecmshares.FindStatus(ecm,n->shareid);
       // keep the list sorted
@@ -531,7 +533,7 @@ private:
   unsigned char nodeid[8];
   int shareid;
   char username[21], password[64], versstr[32], buildstr[32];
-  bool login, emmProcessing;
+  bool login, emmProcessing, wantEmus;
   cTimeMs lastsend;
   int pendingDCW, pendingEMM, keymaskpos;
   //
@@ -731,6 +733,7 @@ bool cCardClientCCcam2::Init(const char *config)
   strn0cpy(versstr,"2.0.11",sizeof(versstr));
   strn0cpy(buildstr,"2892",sizeof(buildstr));
   for(unsigned int i=0; i<sizeof(nodeid); i++) nodeid[i]=rand();
+  wantEmus=false;
 
   int n=0, num=0;
   Logout();
@@ -756,6 +759,10 @@ bool cCardClientCCcam2::Init(const char *config)
           strn0cpy(versstr,v,sizeof(versstr));
         else if(!strcasecmp(p,"BUILD"))
           strn0cpy(buildstr,v,sizeof(buildstr));
+        else if(!strcasecmp(p,"WANTEMUS")) {
+          wantEmus=(atoi(v)!=0);
+          if(wantEmus) PRINTF(L_CC_CORE,"requesting emulations from server");
+          }
         else {
           PRINTF(L_CC_CORE,"unknown parameter '%s'",p);
           return false;
@@ -859,6 +866,7 @@ bool cCardClientCCcam2::Login(void)
   strn0cpy(clt.version,versstr,sizeof(clt.version));
   strn0cpy(clt.build,buildstr,sizeof(clt.build));
   memcpy(clt.nodeid,nodeid,8);
+  clt.wantemus=wantEmus;
   LDUMP(L_CC_CCCAM2DT,&clt,sizeof(clt),"send clientinfo:");
   if(!CryptSend((unsigned char*)&clt,sizeof(clt))) {
     PRINTF(L_CC_CCCAM2,"failed to send clientinfo");