Opened 11 years ago

Closed 11 years ago

#3223 closed defect (fixed)

ewcamd/camd35: saveemm should enable emm passthrough

Reported by: manu Owned by:
Priority: minor Component: Protocol - Newcamd
Severity: low Keywords:
Cc: Sensitive: no

Description

If user enables a particular saveemm category, the emm should be delivered to oscam even if blockemm is enabled.

Attachments (1)

0002-newcamd-camd35-saveemm-should-enable-emm-passthrough.patch (1.6 KB ) - added by manu 11 years ago.

Download all attachments as: .zip

Change History (9)

comment:1 by gf, 11 years ago

Isn't it unexpected to pass EMMs when blockemm is enabled? Someone might argue that blockemm takes precedence before saveemm. And if something is blocked it should stay blocked no matter that save is requested.

Others might say that if save is enabled the EMMs should be saved and then blocked.

What am I missing?

comment:2 by manu, 11 years ago

You're missing nothing.

But with current behavior it's simply not possible to save _and_ block a emm category at once. If a user enables save I'm sure he really want's save them. If he additional enables block, he really want's to prevent them being written to the card.

Current behavior is like: "Oh, you want to save and block? No, I'll just silently ignore your save flag."

Last edited 11 years ago by manu (previous) (diff)

comment:3 by manu, 11 years ago

Ad: Maybe you're missing the fact that block + save will *still* prevent the emm for being written to the card. My patch just additional allows to save the blocked emm which otherwise wouldn't be transmitted at all.

Last edited 11 years ago by manu (previous) (diff)

comment:4 by disisdavo, 11 years ago

Sorry for the chat here...

BUT this is a good idea, sometimes you do require the ODD Global or Shared or Unique EMM, If you use blockemm you have to log the emms elsewhere as oscam currently doesnt save them once you select blockemm. Most of us that block emms do so to avoid things like glitching when provider plays games, but every now and then 1 of them is required.

eg.
our provider send 38 length UA EMKs, occasionally they will send a 40 length EMK rendering our card locked, We have to resend the 38 length UA EMM manually,
so we blockemm UA and have to log for our REAL 38 length EMM elsewhere. this is only one example of why i think it would be a wise addition to the code, i am adding it to mine NOW.

Allowing us to save blocked emms would make it easy on us to locate the required emm.
without having to log the stream full time with another program.

I for one think this is a good idea.

Davo

Thanks "manu"
PS can you fix my latest ticket multiple port issue when using mgclient=1

comment:5 by gf, 11 years ago

@disisdavo: Ok that makes sense. The patch is applied in r8519.

comment:6 by MadMaxx, 11 years ago

can someone check the other protocols, like cccam and gbox for working passthrough ?
I´am not sure that´s here enabled, too, in this combination.

comment:7 by gf, 11 years ago

Only camd35 and newcamd code that checked blockemm.

globals.h:      int32_t                 blockemm;
module-camd35.c:                mbuf[128] = (aureader->blockemm & EMM_GLOBAL && !(aureader->saveemm & EMM_GLOBAL)) ? 0: 1;
module-camd35.c:                mbuf[129] = (aureader->blockemm & EMM_SHARED && !(aureader->saveemm & EMM_SHARED)) ? 0: 1;
module-camd35.c:                mbuf[130] = (aureader->blockemm & EMM_UNIQUE && !(aureader->saveemm & EMM_UNIQUE)) ? 0: 1;
module-camd35.c:                rdr->blockemm = 0;
module-camd35.c:                rdr->blockemm |= (buf[128]==1) ? 0 : EMM_GLOBAL;
module-camd35.c:                rdr->blockemm |= (buf[129]==1) ? 0 : EMM_SHARED;
module-camd35.c:                rdr->blockemm |= (buf[130]==1) ? 0 : EMM_UNIQUE;
module-dvbapi.c:                        if ((rdr->blockemm & emmtype) && !(((1<<(filter[0] % 0x80)) & rdr->s_nano) || (rdr->saveemm & emmtype)))
module-newcamd.c:          if (aureader->blockemm & EMM_GLOBAL && !(aureader->saveemm & EMM_GLOBAL))
module-newcamd.c:          if (aureader->blockemm & EMM_SHARED && !(aureader->saveemm & EMM_SHARED))
module-newcamd.c:          if (aureader->blockemm & EMM_UNIQUE && !(aureader->saveemm & EMM_UNIQUE))
module-webif.c:         tpl_addVar(vars, TPLADD, "BLOCKEMMUNKNOWNCHK", (rdr->blockemm & EMM_UNKNOWN) ? "checked" : "");
module-webif.c:         tpl_addVar(vars, TPLADD, "BLOCKEMMUNIQCHK", (rdr->blockemm & EMM_UNIQUE) ? "checked" : "");
module-webif.c:         tpl_addVar(vars, TPLADD, "BLOCKEMMSHAREDCHK", (rdr->blockemm & EMM_SHARED) ? "checked" : "");
module-webif.c:         tpl_addVar(vars, TPLADD, "BLOCKEMMGLOBALCHK", (rdr->blockemm & EMM_GLOBAL) ? "checked" : "");
module-webif.c:         tpl_addVar(vars, TPLADD, "BLOCKEMMUNKNOWNVALUE", (rdr->blockemm & EMM_UNKNOWN) ? "1" : "0");
module-webif.c:         tpl_addVar(vars, TPLADD, "BLOCKEMMUNIQVALUE", (rdr->blockemm & EMM_UNIQUE) ? "1" : "0");
module-webif.c:         tpl_addVar(vars, TPLADD, "BLOCKEMMSHAREDVALUE", (rdr->blockemm & EMM_SHARED) ? "1" : "0");
module-webif.c:         tpl_addVar(vars, TPLADD, "BLOCKEMMGLOBALVALUE", (rdr->blockemm & EMM_GLOBAL) ? "1" : "0");
oscam-config-reader.c:  DEF_OPT_FUNC_X("blockemm-unknown"       , OFS(blockemm),                                flags_fn, EMM_UNKNOWN ),
oscam-config-reader.c:  DEF_OPT_FUNC_X("blockemm-u"                     , OFS(blockemm),                                flags_fn, EMM_UNIQUE ),
oscam-config-reader.c:  DEF_OPT_FUNC_X("blockemm-s"                     , OFS(blockemm),                                flags_fn, EMM_SHARED ),
oscam-config-reader.c:  DEF_OPT_FUNC_X("blockemm-g"                     , OFS(blockemm),                                flags_fn, EMM_GLOBAL ),
oscam-config-reader.c:  DEF_OPT_FUNC("blockemm-bylen"           , 0,                                                    blockemm_bylen_fn ),
oscam-emm.c:                    case UNKNOWN: is_blocked = (aureader->blockemm & EMM_UNKNOWN) == EMM_UNKNOWN; break;
oscam-emm.c:                    case UNIQUE : is_blocked = (aureader->blockemm & EMM_UNIQUE ) == EMM_UNIQUE;  break;
oscam-emm.c:                    case SHARED : is_blocked = (aureader->blockemm & EMM_SHARED ) == EMM_SHARED;  break;
oscam-emm.c:                    case GLOBAL : is_blocked = (aureader->blockemm & EMM_GLOBAL ) == EMM_GLOBAL;  break;

comment:8 by manu, 11 years ago

Resolution: fixed
Status: newclosed

thanks for commit gf. ticket is fixed

Note: See TracTickets for help on using tickets.