Пример #1
0
int checkProv(const char *pUserCode, void (*cb)(void *p, int ok, const char *pMsg), void *cbRet){
   /*
    http://sccps.silentcircle.com/provisioning/silent_phone/tivi_cfg.xml?api_key=12345
    http://sccps.silentcircle.com/provisioning/silent_phone/settings.txt?api_key=12345
    http://sccps.silentcircle.com/provisioning/silent_phone/tivi_cfg_glob.txt?api_key=12345
    */
   char bufReq[1024];
   const char *t_getDevID_md5();
   const char *t_getDev_name();
   
   const char *dev_id=t_getDevID_md5();
   const char *dev_name=t_getDev_name();
   

#define CHK_BUF \
   if(l+100>sizeof(bufReq)){\
      return -1;\
   }

   int l=snprintf(bufReq, sizeof(bufReq)-10, "%s/provisioning/use_code/?provisioning_code=", provisioningLink);
   
   CHK_BUF 
   
   l+=fixPostEncodingToken(&bufReq[l],sizeof(bufReq)-10-l,pUserCode,strlen(pUserCode));
   
   CHK_BUF
   
   l+=snprintf(&bufReq[l],sizeof(bufReq)-10-l,"&device_id=%s&device_name=",dev_id);
   
   CHK_BUF 
   
   l+=fixPostEncodingToken(&bufReq[l],sizeof(bufReq)-10-l, dev_name,strlen(dev_name));
   
   CHK_BUF
   
#undef CHK_BUF
   
   
   int r=getToken(&bufReq[0], &bufAPIKey[0],255,cb,cbRet);
   if(r<0){

      return -1;
   }
   
   cb(cbRet,1,"Configuration code ok");
   
   return checkProvWithAPIKey(&bufAPIKey[0],cb, cbRet);;
}
Пример #2
0
int createUserOnWeb(const char *pUN, const char *pPWD,
                    const char *pEM, const char *pFN, const char *pLN,
                    void (*cb)(void *p, int ok, const char *pMsg), void *cbRet){

   int c, l = 0;
   int iRespContentLen=0;
   
   char bufResp[4096];
   char bufBody[4096];

   
   
   char url[1024];
   int ul = snprintf(url,sizeof(url)-10,"%s/v1/user/",provisioningLink);
   
   ul+=fixPostEncodingToken(&url[ul],sizeof(url)-10-ul,pUN,strlen(pUN));
   url[ul] = '/'; ul++; url[ul]=0;
 
   bufBody[0]='{';l = 1;
   
   c = t_addJSON(1, &bufBody[l], sizeof(bufBody)-l, "username", pUN);
   if(!c){
      cb(cbRet,0,"Please check Username field.");
      return -1;
   }
   l+=c;
   
   c = t_addJSON(0 , &bufBody[l], sizeof(bufBody)-l, "password", pPWD);
   if(!c){
      cb(cbRet,0,"Please check Password field.");
      return -1;
   }
   l+=c;
   
   c = t_addJSON(1 , &bufBody[l], sizeof(bufBody)-l, "email", pEM);
   if(!c){
      cb(cbRet,0,"Please check Email field.");
      return -1;
   }
   l+=c;
   
   c = t_addJSON(1 , &bufBody[l], sizeof(bufBody)-l, "first_name", pFN); l+=c;
   c = t_addJSON(1 , &bufBody[l], sizeof(bufBody)-l, "last_name", pLN); l+=c;

   bufBody[l - 1] = '}';//remove last , from JSON
   
   memset(bufResp,0,sizeof(bufResp));
   
   char *p=download_page2Loc(url, &bufResp[0], sizeof(bufResp)-50, iRespContentLen,cb,cbRet, "PUT", bufBody);
   
   if(!p){
      cb(cbRet,0,"Please check network connection.");//download json fail
      return -1;
   }
#ifdef PROV_TEST
   printf("rec[%.*s]\n",iRespContentLen,p);//rem
   printf("rec-t[%s]\n",bufResp);//rem
#endif
   
   /*
    {"last_name": "N", "hash": "7c4219a8bcdbfe71aaa7381a72c0b57d3471ee39", "keys": [], "active_st_device": null, "country_code": "", "silent_text": true, "subscription": {"expires": "1900-01-01T00:00:00Z", "has_expired": true}, "first_name": "J", "display_name": "J N", "avatar_url": null, "silent_phone": false, "force_password_change": false, "permissions": {"can_send_media": true, "silent_text": true, "can_receive_voicemail": false, "silent_desktop": false, "silent_phone": false, "conference_create"
    */
   
   char bufJSonValue[1024];
   l=findJSonToken(p,iRespContentLen,"result",&bufJSonValue[0],1023);
   if(l<=0){
      cb(cbRet,0,"ERR: Result is not found");
      return -1;
   }
   if(strcmp(&bufJSonValue[0],"success")){
      l=findJSonToken(p,iRespContentLen,"error_msg",&bufJSonValue[0],1023);
      if(l>0)
         cb(cbRet,-1,&bufJSonValue[0]);
      else{
         cb(cbRet,-1,"Could not download configuration!");
      }
      return -1;
   }
   
   void saveCfgFile(const char *fn, void *p, int iLen);
   saveCfgFile("userData.json", bufResp, iRespContentLen);

   return 0;
}