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);
};
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);
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);
};
return n;
}
+bool cCardClientCommon::Immediate(void)
+{
+ return emmAllowed && logReply && cCardClient::Immediate();
+}
+
bool cCardClientCommon::Init(const char *config)
{
cMutexLock lock(this);
if(ParseStdConfig(config,&num) &&
ParseUserConfig(config,&num) &&
(!doAES || ParseKeyConfig(config,&num))) {
- return (emmAllowed && logReply && Immediate()) ? Login() : true;
+ return true;
}
return false;
}
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);
};
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)
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);
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);
};
if(cc->Init(&line[num])) {
Add(cc);
PRINTF(L_CC_CORE,"client '%s' ready",cc->Name());
+ if(cc->Immediate()) cc->Login();
return true;
}
else {
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; }
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
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
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);
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)
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);
};
Logout();
int num=0;
if(!ParseStdConfig(config,&num)) return false;
- return Immediate() ? Login() : true;
+ return true;
}
bool cCardClientGbox::Login(void)
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);
};
|| 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)
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);
};
{
cMutexLock lock(this);
Logout();
- return ParseStdConfig(config) && (Immediate() ? Login() : true);
+ return ParseStdConfig(config);
}
void cCardClientRadegast::SetLength(unsigned char *buff, int len)