Changeset 1232


Ignore:
Timestamp:
01/14/10 21:25:28 (11 years ago)
Author:
alno
Message:

WebIF:

  • !!!!! implementation of a new oscam.srvid Format !!!!
  • the Format and good sorted list you find here: http://streamboard.gmc.to/wiki/index.php/Srvid#microMon.srvid
  • the old oscam.srvid format is not parsable from this version onwards
  • The identification of a channel works now over srvid + caid. So doubles should be a historical nightmare
Location:
branches/monitor-improvement
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • branches/monitor-improvement/globals.h

    r1228 r1232  
    505505struct s_srvid
    506506{
    507   int  srvid;
    508   char name[33];
    509   struct s_srvid *next;
     507int srvid;
     508int ncaid;
     509int caid[10];
     510char    prov[33];
     511char    name[33];
     512char    type[33];
     513char    desc[33];
     514struct  s_srvid *next;
    510515};
    511516
     
    585590  int       dvbapi_enabled;
    586591  int       dvbapi_au;
    587   char      dvbapi_usr[33]; 
     592  char      dvbapi_usr[33];
    588593  char      dvbapi_boxtype[20];
    589594  char      dvbapi_priority[64];
    590   char      dvbapi_ignore[64]; 
     595  char      dvbapi_ignore[64];
    591596#endif
    592597#ifdef CS_ANTICASC
     
    926931// module-monitor
    927932extern char *monitor_get_proto(int idx);
    928 extern char *monitor_get_srvname(int id);
     933extern char *monitor_get_srvname(int srvid, int caid);
    929934extern int cs_idx2ridx(int idx);
    930935
  • branches/monitor-improvement/module-monitor.c

    r1228 r1232  
    238238}
    239239
    240 char *monitor_get_srvname(int id){
     240char *monitor_get_srvname(int srvid, int caid){
     241    int i;
    241242    struct s_srvid *this = cfg->srvid;
    242243    static char name[83];
     244
    243245    for (name[0] = 0; this && (!name[0]); this = this->next)
    244         if (this->srvid == id)
    245             strncpy(name, this->name, 32);
    246     if (!name[0]) sprintf(name, "[%04X]", id);
    247     if (!id) name[0] = '\0';
     246        if (this->srvid == srvid)
     247            for (i=0; i<this->ncaid; i++)
     248                if (this->caid[i] == caid)
     249                    strncpy(name, this->name, 32);
     250
     251    if (!name[0]) sprintf(name, "[%04X:%04X]", caid, srvid);
     252    if (!srvid) name[0] = '\0';
    248253    return(name);
    249254}
     
    330335                            cs_inet_ntoa(client[i].ip), client[i].port, monitor_get_proto(i),
    331336                            ldate, ltime, lsec, client[i].last_caid, client[i].last_srvid,
    332                             monitor_get_srvname(client[i].last_srvid), isec, con);
     337                            monitor_get_srvname(client[i].last_srvid, client[i].last_caid), isec, con);
    333338        }
    334339    }
     
    356361    }
    357362    monitor_send_info(NULL, 1);
    358 } 
     363}
    359364
    360365static void monitor_send_details(char *txt, int pid){
  • branches/monitor-improvement/oscam-config.c

    r1210 r1232  
    14001400  int nr;
    14011401  FILE *fp;
    1402   char *value;
     1402  char *payload;
    14031403  static struct s_srvid *srvid=(struct s_srvid *)0;
    1404 
    14051404  sprintf(token, "%s%s", cs_confdir, cs_srid);
    1406   if (!(fp=fopen(token, "r")))
    1407   {
    1408     cs_log("can't open file \"%s\" (err=%d), no service-id's loaded",
    1409            token, errno);
     1405
     1406  if (!(fp=fopen(token, "r"))) {
     1407    cs_log("can't open file \"%s\" (err=%d), no service-id's loaded", token, errno);
    14101408    return(0);
    14111409  }
     1410
    14121411  nr=0;
    1413   while (fgets(token, sizeof(token), fp))
    1414   {
    1415     int l;
    1416     void *ptr;
    1417     if ((l=strlen(trim(token)))<6) continue;
    1418     if (!(value=strchr(token, ':'))) continue;
    1419     *value++='\0';
    1420     if (strlen(token)!=4) continue;
    1421     if (!(ptr=malloc(sizeof(struct s_srvid))))
    1422     {
     1412  while (fgets(token, sizeof(token), fp)) {
     1413
     1414        int l;
     1415        void *ptr;
     1416        if ((l=strlen(trim(token))) < 6) continue;
     1417        if (!(payload=strchr(token, '|'))) continue;
     1418        *payload++ = '\0';
     1419        //if (strlen(token)!=4) continue;
     1420
     1421        if (!(ptr = malloc(sizeof(struct s_srvid)))) {
    14231422      cs_log("Error allocating memory (errno=%d)", errno);
    14241423      return(1);
    14251424    }
     1425
    14261426    if (srvid)
    1427       srvid->next=ptr;
     1427      srvid->next = ptr;
    14281428    else
    1429       cfg->srvid=ptr;
    1430     srvid=ptr;
     1429      cfg->srvid = ptr;
     1430
     1431    srvid = ptr;
    14311432    memset(srvid, 0, sizeof(struct s_srvid));
    1432     srvid->srvid=word_atob(token);
    1433     strncpy(srvid->name, value, sizeof(srvid->name)-1);
    1434     nr++;
    1435   }
     1433
     1434    int i;
     1435    char *ptr1;
     1436    for (i = 0, ptr1 = strtok(payload, "|"); ptr1; ptr1 = strtok(NULL, "|"), i++){
     1437            switch(i){
     1438                case 0:
     1439                    strncpy(srvid->prov, trim(ptr1), sizeof(srvid->prov)-1);
     1440                    break;
     1441                case 1:
     1442                    strncpy(srvid->name, trim(ptr1), sizeof(srvid->name)-1);
     1443                    break;
     1444                case 2:
     1445                    strncpy(srvid->type, trim(ptr1), sizeof(srvid->type)-1);
     1446                    break;
     1447                case 3:
     1448                    strncpy(srvid->desc, trim(ptr1), sizeof(srvid->desc)-1);
     1449                    break;
     1450            }
     1451        }
     1452
     1453    char *srvidasc = strchr(token, ':');
     1454    *srvidasc++ = '\0';
     1455    srvid->srvid = word_atob(srvidasc);
     1456
     1457    srvid->ncaid = 0;
     1458        for (i = 0, ptr1 = strtok(token, ","); (ptr1) && (i < 10) ; ptr1 = strtok(NULL, ","), i++){
     1459            srvid->caid[i] = word_atob(ptr1);
     1460            srvid->ncaid = i+1;
     1461        }
     1462        nr++;
     1463    }
     1464
    14361465  fclose(fp);
    1437   cs_log("%d service-id's loaded", nr);
     1466  if (nr>0)
     1467        cs_log("%d service-id's loaded", nr);
     1468    else{
     1469        cs_log("oscam.srvid loading FAILED -> old format");
     1470        cs_log("New: caid[,caid]:srvid|providername|channelname|type|comment");
     1471        cs_log("See: http://streamboard.gmc.to/wiki/index.php/Srvid#microMon.srvid");
     1472    }
    14381473  return(0);
    14391474}
  • branches/monitor-improvement/oscam-http.c

    r1228 r1232  
    866866                if ((now - client[i].lastecm) < 30){
    867867                    status = "<b>online</b>";classname="online";
    868                     lastchan = monitor_get_srvname(client[i].last_srvid);
     868                    lastchan = monitor_get_srvname(client[i].last_srvid, client[i].last_caid);
    869869                    isec = now - client[i].last;
    870870        }
     
    985985                tpl_printf(vars, 0, "CLIENTCAID", "%04X", client[i].last_caid);
    986986                tpl_printf(vars, 0, "CLIENTSRVID", "%04X", client[i].last_srvid);
    987                 tpl_addVar(vars, 0, "CLIENTSRVNAME", monitor_get_srvname(client[i].last_srvid));
     987                tpl_addVar(vars, 0, "CLIENTSRVNAME", monitor_get_srvname(client[i].last_srvid, client[i].last_caid));
    988988
    989989                secs = 0; fullmins =0; mins =0; hours =0;
     
    11261126            tpl_printf(vars, 0, "SIDCLASS","sidlist");
    11271127            for (i=0; i<sidtab->num_srvid; i++){
    1128                 tpl_printf(vars, 1, "SID", "%04X : %s<BR>", sidtab->srvid[i], monitor_get_srvname(sidtab->srvid[i]));
     1128                tpl_printf(vars, 1, "SID", "%04X : %s<BR>", sidtab->srvid[i], monitor_get_srvname(sidtab->srvid[i], sidtab->caid[0]));
    11291129            }
    11301130        }   else {
Note: See TracChangeset for help on using the changeset viewer.