int cbparse_procstatus_resp(void *pArg, const char *p) { int rc = 0; PROC_STATUS_RESP_DATA_T *pResp = (PROC_STATUS_RESP_DATA_T *) pArg; KEYVAL_PAIR_T kv; memset(&kv, 0, sizeof(kv)); if((rc = conf_parse_keyval(&kv, p, 0, '=', 0)) == 2) { if(!strncasecmp(kv.key, "rtmpt", 5)) { pResp->numActiveRtmpTunneled = atoi(kv.val); } else if(!strncasecmp(kv.key, "rtmp", 4)) { pResp->numActiveRtmp = atoi(kv.val); } else if(!strncasecmp(kv.key, "rtspi", 5)) { pResp->numActiveRtspInterleaved = atoi(kv.val); } else if(!strncasecmp(kv.key, "rtsp", 4)) { pResp->numActiveRtsp = atoi(kv.val); } else if(!strncasecmp(kv.key, "tslive", 6)) { pResp->numActiveTsLive = atoi(kv.val); } else if(!strncasecmp(kv.key, "flvlive", 7)) { pResp->numActiveFlvLive = atoi(kv.val); } else if(!strncasecmp(kv.key, "mkvlive", 7)) { pResp->numActiveMkvLive = atoi(kv.val); } else if(!strncasecmp(kv.key, "outputRate", 10)) { pResp->bps = (float) strutil_read_numeric(kv.val, 0, 0, 0); } } return rc; }
SRV_CONF_T *conf_parse(const char *path) { FILE_HANDLE fp; SRV_CONF_T *pConf = NULL; KEYVAL_PAIR_T kv; KEYVAL_PAIR_T *pKv = NULL; KEYVAL_PAIR_T *pKvPrev = NULL; char buf[1024]; unsigned int numEntries = 0; if(!path) { return NULL; } if((fp = fileops_Open(path, O_RDONLY)) == FILEOPS_INVALID_FP) { LOG(X_CRITICAL("Unable to open file for reading: %s"), path); return NULL; } pConf = (SRV_CONF_T *) avc_calloc(1, sizeof(SRV_CONF_T)); while(fileops_fgets(buf, sizeof(buf) - 1, fp)) { if(conf_parse_keyval(&kv, buf, strlen(buf), '=', 0) > 0) { if((pKv = (KEYVAL_PAIR_T *) avc_calloc(1, sizeof(KEYVAL_PAIR_T))) == NULL) { LOG(X_CRITICAL("Failed to allocate %d"), sizeof(KEYVAL_PAIR_T)); break; } memcpy(pKv->key, kv.key, sizeof(pKv->key)); memcpy(pKv->val, kv.val, sizeof(pKv->val)); if(pKvPrev == NULL) { pConf->pKeyvals = pKv; } else { pKvPrev->pnext = pKv; } pKvPrev = pKv; numEntries++; } } fileops_Close(fp); return pConf; }
int cbparse_authmod_descr_params(void *pArg, const char *p) { int rc = 0; AUTH_LIST_T *pAuthList = (AUTH_LIST_T *) pArg; if(!pAuthList || !p) { return -1; } //LOG(X_DEBUG("cbparse_authmod_descr_params: '%s'"), p); if(pAuthList->count >= sizeof(pAuthList->list) / sizeof(pAuthList->list[0])) { return -1; } if((rc = conf_parse_keyval(&pAuthList->list[pAuthList->count], p, 0, '=', 0)) > 0) { if(pAuthList->count > 0) { pAuthList->list[pAuthList->count- 1].pnext = &pAuthList->list[pAuthList->count]; } pAuthList->count++; } return rc; }
static int check_status(SYS_PROC_T *pProc) { int rc; char *p, *p2; KEYVAL_PAIR_T kv; char buf[1024]; int numActiveRtmp = -1; int numActiveRtsp = -1; int numActiveRtspInterleaved = -1; int numActiveTsLive = -1; int numActiveFlvLive = -1; const char *host = "127.0.0.1"; pProc->numActive = 0; if((rc = http_getpage(host, MGR_GET_PORT_STATUS(pProc->startPort), VSX_STATUS_URL, buf, sizeof(buf), 2000)) < 0) { LOG(X_ERROR("Failed to load "VSX_STATUS_URL" for %s:%d"), host, MGR_GET_PORT_STATUS(pProc->startPort)); return rc; } p = buf; while(p - buf < rc) { p2 = p; while(p2 - buf < rc && *p2 != '&') { p2++; } //fprintf(stderr, "--%c%c%c len:%d, rc:%d\n", p[0], p[1], p[2], p2 - p, rc); if(conf_parse_keyval(&kv, p, p2 - p, '=', 0) == 2) { if(!strncasecmp(kv.key, "rtmp", 4)) { numActiveRtmp = atoi(kv.val); } else if(!strncasecmp(kv.key, "rtspi", 5)) { numActiveRtspInterleaved = atoi(kv.val); } else if(!strncasecmp(kv.key, "rtsp", 4)) { numActiveRtsp = atoi(kv.val); } else if(!strncasecmp(kv.key, "tslive", 6)) { numActiveTsLive = atoi(kv.val); } else if(!strncasecmp(kv.key, "flvlive", 7)) { numActiveFlvLive = atoi(kv.val); } //fprintf(stderr, "key:'%s' val:'%s'\n", kv.key , kv.val); } p = p2; while(p - buf < rc && *p == '&') { p++; } } if(numActiveRtmp >= 0) { pProc->numActive += numActiveRtmp; } if(numActiveRtsp >= 0) { pProc->numActive += numActiveRtsp; } if(numActiveTsLive >= 0) { pProc->numActive += numActiveTsLive; } if(numActiveTsLive >= 0) { pProc->numActive += numActiveFlvLive; } VSX_DEBUGLOG("Status for %s (%s, profile:%s) %s:%d rtmp:%d rtsp:%d (interleaved:%d) ts:%d flv: %d" " (rc:%d '%s')\n", pProc->name, pProc->instanceId, pProc->id, host, MGR_GET_PORT_STATUS(pProc->startPort), numActiveRtmp, numActiveRtsp, numActiveRtspInterleaved, numActiveTsLive, numActiveFlvLive, rc, buf); return rc; }