]> www.vanbest.org Git - sasc-ng.git/commitdiff
cardclient: don't delete client if initial login fails
authorleslie <unknown>
Sat, 19 Dec 2009 12:44:50 +0000 (13:44 +0100)
committerleslie <unknown>
Sat, 19 Dec 2009 12:44:50 +0000 (13:44 +0100)
systems/cardclient/aroureos.c
systems/cardclient/camd.c
systems/cardclient/cc.c
systems/cardclient/cc.h
systems/cardclient/cccam.c
systems/cardclient/cccam2.c
systems/cardclient/gbox.c
systems/cardclient/newcamd.c
systems/cardclient/radegast.c

index 59eddd318b66ba2e26e7df7c9d13c12f4dc5f6d9..608f9c82212a611a03933326b17d8e854026345d 100644 (file)
 class cCardClientAroureos : public cCardClient, protected cIdSet {
 private:
   bool ParseCardConfig(const char *config, int *num);
-protected:
-  virtual bool Login(void);
 public:
   cCardClientAroureos(const char *Name);
   virtual bool Init(const char *config);
+  virtual bool Login(void);
   virtual bool ProcessECM(const cEcmInfo *ecm, const unsigned char *source, unsigned char *cw, int cardnum);
   virtual bool ProcessEMM(int caSys, const unsigned char *source);
   };
index 67a2ef5f1023eae9ac7a6d9d60387714680bf6a1..e779aab018a6e3f191bb3dbad0391f634104afb1 100644 (file)
@@ -45,7 +45,6 @@ protected:
   char username[11], password[11];
   int emmReqLen;
   //
-  virtual bool Login(void);
   bool ParseKeyConfig(const char *config, int *num);
   bool ParseUserConfig(const char *config, int *num);
   virtual bool SendMsg(const unsigned char *data, int len);
@@ -55,6 +54,8 @@ protected:
 public:
   cCardClientCommon(const char *Name, bool ConReply, bool LogReply, bool DoAES, int MinMsgLen);
   virtual bool Init(const char *config);
+  virtual bool Login(void);
+  virtual bool Immediate(void);
   virtual bool ProcessECM(const cEcmInfo *ecm, const unsigned char *source, unsigned char *cw, int cardnum);
   virtual bool ProcessEMM(int caSys, const unsigned char *source);
   };
@@ -122,6 +123,11 @@ int cCardClientCommon::RecvMsg(unsigned char *data, int len, int to)
   return n;
 }
 
+bool cCardClientCommon::Immediate(void)
+{
+  return emmAllowed && logReply && cCardClient::Immediate();
+}
+
 bool cCardClientCommon::Init(const char *config)
 {
   cMutexLock lock(this);
@@ -130,7 +136,7 @@ bool cCardClientCommon::Init(const char *config)
   if(ParseStdConfig(config,&num) &&
      ParseUserConfig(config,&num) &&
      (!doAES || ParseKeyConfig(config,&num))) {
-    return (emmAllowed && logReply && Immediate()) ? Login() : true;
+    return true;
     }
   return false;
 }
@@ -321,11 +327,10 @@ cCardClientCardd::cCardClientCardd(const char *Name)
 class cCardClientBuffy : public cCardClientCommon {
 private:
   unsigned short CAIDs[MAX_CAIDS], numCAIDs;
-protected:
-  virtual bool Login(void);
 public:
   cCardClientBuffy(const char *Name);
   virtual bool Init(const char *config);
+  virtual bool Login(void);
   virtual bool CanHandle(unsigned short SysId);
   };
 
@@ -338,10 +343,7 @@ cCardClientBuffy::cCardClientBuffy(const char *Name)
 bool cCardClientBuffy::Init(const char *config)
 {
   cMutexLock lock(this);
-  if(cCardClientCommon::Init(config)) {
-    return Immediate() ? Login() : true;
-    }
-  return false;
+  return cCardClientCommon::Init(config);
 }
 
 bool cCardClientBuffy::CanHandle(unsigned short SysId)
@@ -431,7 +433,6 @@ protected:
   unsigned char Dx[8];
   int lastEmmReq;
   //
-  virtual bool Login(void);
   bool ParseUserConfig(const char *config, int *num);
   bool SendBlock(struct CmdBlock *cb, int datalen);
   int RecvBlock(struct CmdBlock *cb, int maxlen, int to);
@@ -440,6 +441,7 @@ protected:
 public:
   cCardClientCamd35(const char *Name);
   virtual bool Init(const char *config);
+  virtual bool Login(void);
   virtual bool ProcessECM(const cEcmInfo *ecm, const unsigned char *data, unsigned char *cw, int cardnum);
   virtual bool ProcessEMM(int caSys, const unsigned char *data);
   };
index 3532e08ebc5e67c38af6e77f29c6a076003a1bed..7e2909e3220e2e2d0dada8eed291436dd19656b5 100644 (file)
@@ -285,6 +285,7 @@ bool cSystemLinkCardClient::ParseLinePlain(const char *line)
         if(cc->Init(&line[num])) {
           Add(cc);
           PRINTF(L_CC_CORE,"client '%s' ready",cc->Name());
+          if(cc->Immediate()) cc->Login();
           return true;
           }
         else {
index 170954691cc8b2615aa6a1675b86b61c4985a45e..645c46daedd9648510f1b3bdb17a7879d7fc5b42 100644 (file)
@@ -70,13 +70,13 @@ protected:
   bool ParseStdConfig(const char *config, int *num=0);
   virtual bool SendMsg(const unsigned char *data, int len);
   virtual int RecvMsg(unsigned char *data, int len, int to=-1);
-  virtual bool Login(void) { return false; }
   virtual void Logout(void);
-  bool Immediate(void);
   void CaidsChanged(void);
 public:
   cCardClient(const char *Name);
   virtual bool Init(const char *config)=0;
+  virtual bool Login(void)=0;
+  virtual bool Immediate(void);
   virtual bool CanHandle(unsigned short SysId);
   virtual bool ProcessECM(const cEcmInfo *ecm, const unsigned char *data, unsigned char *cw, int cardnum)=0;
   virtual bool ProcessEMM(int caSys, const unsigned char *data) { return false; }
index 091729f499c06e28c021a54fe7298c1e270fdc5f..9f5cb525ca42ebf844dda9a286d69118eb8098e1 100644 (file)
@@ -168,12 +168,12 @@ private:
   int failedcw;\r
   char *socketpath;\r
 protected:\r
-  virtual bool Login(void);\r
   virtual void Action(void);\r
 public:\r
   cCardClientCCcam(const char *Name);\r
   ~cCardClientCCcam();\r
   virtual bool Init(const char *CfgDir);\r
+  virtual bool Login(void);\r
   virtual bool ProcessECM(const cEcmInfo *ecm, const unsigned char *data, unsigned char *Cw, int cardnum);\r
   };\r
 \r
@@ -205,7 +205,7 @@ bool cCardClientCCcam::Init(const char *config)
   PRINTF(L_CC_CORE,"%s: socket=%s",name,path);\r
   socketpath=strdup(path);\r
   for(int i=0; i<4; i++) card[i].Setup(i,socketpath);\r
-  return Immediate() ? Login() : true;\r
+  return true;\r
 }\r
 \r
 bool cCardClientCCcam::Login(void)\r
index 617ba27907bd2269265eaafc983a4928c5f4f110..e7249373aa07d0d2795abe6a8a7ba3790179a0ef 100644 (file)
@@ -545,13 +545,13 @@ private:
   int CryptRecv(unsigned char *data, int len, int to=-1);
   bool CryptSend(const unsigned char *data, int len);
 protected:
-  virtual bool Login(void);
   virtual void Logout(void);
   virtual void Action(void);
 public:
   cCardClientCCcam2(const char *Name);
   ~cCardClientCCcam2();
   virtual bool Init(const char *CfgDir);
+  virtual bool Login(void);
   virtual bool CanHandle(unsigned short SysId);
   virtual bool ProcessECM(const cEcmInfo *ecm, const unsigned char *data, unsigned char *Cw, int cardnum);
   virtual bool ProcessEMM(int caSys, const unsigned char *data);
@@ -743,7 +743,7 @@ bool cCardClientCCcam2::Init(const char *config)
     for(unsigned int i=0; i<sizeof(nodeid); i++) nodeid[i]=rand();
   LDUMP(L_CC_CORE,nodeid,sizeof(nodeid),"our nodeid:");
   PRINTF(L_CC_CORE,"pretended CCcam version '%s' build '%s'",versstr,buildstr);
-  return Immediate() ? Login() : true;
+  return true;
 }
 
 void cCardClientCCcam2::Logout(void)
index 07ffff95faba10a6cbec83ec94af540f73028873..558efdc9a2f20f6699392ad015198134b19260ec 100644 (file)
 class cCardClientGbox : public cCardClient { 
 private: 
   int GetMsg(int cmd, unsigned char *buff, int len);
-protected: 
-  virtual bool Login(void); 
 public: 
   cCardClientGbox(const char *Name); 
   virtual bool Init(const char *CfgDir); 
+  virtual bool Login(void);
   virtual bool ProcessECM(const cEcmInfo *ecm, const unsigned char *data, unsigned char *Cw, int cardnum);
   }; 
  
@@ -58,7 +57,7 @@ bool cCardClientGbox::Init(const char *config)
   Logout();
   int num=0;
   if(!ParseStdConfig(config,&num)) return false;
-  return Immediate() ? Login() : true; 
+  return true;
 } 
  
 bool cCardClientGbox::Login(void) 
index 306ff10160f804904791209d3e410d3e0cf467f1..d68a8f6968a4d545005d3e8b648ede7f1f4dafa6 100644 (file)
@@ -183,13 +183,12 @@ private:
   int ReceiveMessage(unsigned char *data, bool UseMsgId, struct CustomData *cd=0, comm_type_t commType=COMMTYPE_CLIENT);
   bool CmdSend(net_msg_type_t cmd,  comm_type_t commType=COMMTYPE_CLIENT);
   int CmdReceive(comm_type_t commType=COMMTYPE_CLIENT);
-protected:
-  virtual bool Login(void);
 public:
   cCardClientNewCamd(const char *Name);
   // 
   virtual bool Init(const char *CfgDir);
-  virtual bool CanHandle(unsigned short SysId);  
+  virtual bool Login(void);
+  virtual bool CanHandle(unsigned short SysId);
   virtual bool ProcessECM(const cEcmInfo *ecm, const unsigned char *data, unsigned char *Cw, int cardnum);
   virtual bool ProcessEMM(int caSys, const unsigned char *data);
   };
@@ -364,7 +363,7 @@ bool cCardClientNewCamd::Init(const char *config)
      || GetHex(tmp,configKey,sizeof(configKey),false)!=14) return false;
   char str[32];
   PRINTF(L_CC_CORE,"%s: username=%s password=%s key=%s",name,username,password,HexStr(str,configKey,14));
-  return Immediate() ? Login() : true;
+  return true;
 }
 
 bool cCardClientNewCamd::Login(void)
index 3a71b219f06b64318a6c5677f6c3947a0fa73c31..5519d9439eb537671b20e2e998e9ee758a14b3f7 100644 (file)
@@ -45,12 +45,11 @@ private:
   void AddNano(unsigned char *buff, int nano, int len, const unsigned char *data);
   bool Send(const unsigned char *buff);
   int Recv(unsigned char *buff, int len);
-protected:
-  virtual bool Login(void);
 public:
   cCardClientRadegast(const char *Name);
   virtual bool Init(const char *config);
-  virtual bool CanHandle(unsigned short SysId);  
+  virtual bool Login(void);
+  virtual bool CanHandle(unsigned short SysId);
   virtual bool ProcessECM(const cEcmInfo *ecm, const unsigned char *source, unsigned char *cw, int cardnum);
   virtual bool ProcessEMM(int caSys, const unsigned char *data);
   };
@@ -81,7 +80,7 @@ bool cCardClientRadegast::Init(const char *config)
 {
   cMutexLock lock(this);
   Logout();
-  return ParseStdConfig(config) && (Immediate() ? Login() : true);
+  return ParseStdConfig(config);
 }
 
 void cCardClientRadegast::SetLength(unsigned char *buff, int len)