Exemplo n.º 1
0
int soap_get_connect(struct soap *soap, const char *endpoint, const char *action)
{ return soap_connect_command(soap, SOAP_GET, endpoint, action);
}
Exemplo n.º 2
0
int soap_delete_connect(struct soap *soap, const char *endpoint, const char *action, const char *type)
{ if (soap_connect_command(soap, SOAP_DEL, endpoint, action)
   || soap_end_send(soap))
    return soap_closesock(soap);
  return soap_closesock(soap);
}
Exemplo n.º 3
0
int main(int argc, char *argv[])
{
// command line arguments
int nArg;
char *ptr;
char szFileType[64]="";
char szURL[256];
char szUsername[256]="";
char szPassword[256]="";
unsigned int FileSize=0;
char szTargetFileName[256]="";
unsigned int DelaySeconds;
char szCWMPAddress[256]="";

char szProxyHost[256]="";
unsigned int ProxyPort=0;
char szProxyUserId[256]="";
char szProxyPasswd[256]="";
char szTemp[256];
double DownloadSize;
FILE *tmpfile;  //add by wangjr 091201

struct soap soap;
struct Namespace empty_namespaces[] = { { NULL } };

  dprintf(LOG_LEVEL1, "\nDOWNLOAD MANAGER ..execution\n\n");

  // signal handling
  signal(SIGPIPE, sigpipe_handle);
  signal(SIGINT, sigint_handle);

  nErrorCode=0;

  // Command Line Arguments
  for (nArg = 1; nArg < argc; nArg++)
  {
    ptr = argv[nArg];
    if (strncmp(argv[nArg], "--CWMPAddress:", strlen("--CWMPAddress:")) == 0) {
      strcpy(szCWMPAddress, &ptr[strlen("--CWMPAddress:")]);
      dprintf(LOG_LEVEL1, "....CWMPAddress: %s\n", szCWMPAddress);
    }
    else if (strncmp(argv[nArg], "--FileType:", strlen("--FileType:")) == 0) {
      strcpy(szFileType, &ptr[strlen("--FileType:")]);
      dprintf(LOG_LEVEL1, "....FileType: %s\n", szFileType);
    }
    else if (strncmp(argv[nArg], "--URL:", strlen("--URL:")) == 0) {
      strcpy(szURL, &ptr[strlen("--URL:")]);
      dprintf(LOG_LEVEL1, "....URL: %s\n", szURL);
    }
    else if (strncmp(argv[nArg], "--Username:"******"--Username:"******"--Username:"******"....Username: %s\n", szUsername);
    }
    else if (strncmp(argv[nArg], "--Password:"******"--Password:"******"--Password:"******"....Password: %s\n", szPassword);
    }
    else if (strncmp(argv[nArg], "--FileSize:", strlen("--FileSize:")) == 0) {
      strcpy(szTemp, &ptr[strlen("--FileSize:")]);
      FileSize = atoi(szTemp);
      dprintf(LOG_LEVEL1, "....FileSize: %d\n", FileSize);
    }
    else if (strncmp(argv[nArg], "--TargetFileName:", strlen("--TargetFileName:")) == 0) {
      strcpy(szTargetFileName, &ptr[strlen("--TargetFileName:")]);
      dprintf(LOG_LEVEL1, "....TargetFileName: %s\n", szTargetFileName);
    }
    else if (strncmp(argv[nArg], "--DelaySeconds:", strlen("--DelaySeconds:")) == 0) {
      strcpy(szTemp, &ptr[strlen("--DelaySeconds:")]);
      DelaySeconds = atoi(szTemp);
      dprintf(LOG_LEVEL1, "....DelaySeconds: %d\n", DelaySeconds);
    }
    else if (strncmp(argv[nArg], "--ProxyHost:", strlen("--ProxyHost:")) == 0) {
      strcpy(szProxyHost, &ptr[strlen("--ProxyHost:")]);
      dprintf(LOG_LEVEL1, "....szProxyHost: %s\n", szProxyHost);
    }
    else if (strncmp(argv[nArg], "--ProxyPort:", strlen("--ProxyPort:")) == 0) {
      strcpy(szTemp, &ptr[strlen("--ProxyPort:")]);
      ProxyPort = atoi(szTemp);
      dprintf(LOG_LEVEL1, "....ProxyPort: %d\n", ProxyPort);
    }
    else if (strncmp(argv[nArg], "--ProxyUserId:", strlen("--ProxyUserId:")) == 0) {
      strcpy(szProxyUserId, &ptr[strlen("--ProxyUserId:")]);
      dprintf(LOG_LEVEL1, "....szProxyUserId: %s\n", szProxyUserId);
    }
    else if (strncmp(argv[nArg], "--ProxyPasswd:", strlen("--ProxyPasswd:")) == 0) {
      strcpy(szProxyPasswd, &ptr[strlen("--ProxyPasswd:")]);
      dprintf(LOG_LEVEL1, "....szProxyPasswd: %s\n", szProxyPasswd);
    }
  }

  DownloadSize = download_funct(szURL, szTargetFileName, szUsername, szPassword, szProxyHost, ProxyPort, szProxyUserId, szProxyPasswd);

  dprintf(LOG_LEVEL3, "....FileSize: %d\n", FileSize);
  
  if ((FileSize > 0) && ((unsigned long)DownloadSize != FileSize))  //update by wangjr
  	nErrorCode = 9010;
  //else 
  	//nErrorCode = 0;
/*        add by wangjr 091201   */
	tmpfile = fopen("/tmp/tr069", "w");
	if(tmpfile != NULL)
    {
		fprintf(tmpfile, "%d",nErrorCode);
	}
	fclose(tmpfile);
/*        add by wangjr 091201   */

  if (szCWMPAddress && (strcmp(szCWMPAddress, "") != 0))
  {
  // RESPONSE to CWMP server
  
  // ATTENTION : Don't use SOAP_IO_KEEPALIVE during SUBSCRIBE message
  // because each SUBSCRIBE must correspond to one TCP connection
    soap_init2(&soap,SOAP_ENC_XML|SOAP_IO_LENGTH|SOAP_XML_INDENT, SOAP_ENC_XML|SOAP_IO_LENGTH|SOAP_XML_INDENT);
    soap.accept_timeout = 60;
    soap.max_keep_alive = 100; // max keep-alive sequence
    soap.recv_timeout = 60; // Timeout after 5 minutes stall on recv 
    soap.send_timeout = 60; // Timeout after 1 minute stall on send 
    soap_set_namespaces(&soap, empty_namespaces);
  
    soap_connect_command(&soap, SOAP_POST, szCWMPAddress, "");
  
    soap_element_begin_out(&soap, CONST_MESSAGE, 0, NULL);
    soap_element_begin_out(&soap, "NAME", 0, NULL);
    sprintf(szTemp, "%s", CONST_DOWNLOADCOMPLETE);
    soap_send_raw(&soap, szTemp, strlen(szTemp));
    soap_element_end_out(&soap, "NAME");
  
    soap_element_begin_out(&soap, "Value", 0, NULL);
    sprintf(szTemp, "%d", nErrorCode);
    soap_send_raw(&soap, szTemp, strlen(szTemp));
    soap_element_end_out(&soap, "Value");
    soap_element_end_out(&soap, CONST_MESSAGE);
  
    soap_end_send(&soap);
    soap_closesock(&soap);
  
    soap_destroy((struct soap*)&soap); // dealloc C++ data
    soap_end((struct soap*)&soap); // dealloc data and clean up
    soap_done((struct soap*)&soap); // detach soap struct
  }

  dprintf(LOG_LEVEL3, "size of data downloaded: %f\n", DownloadSize);

  dprintf(LOG_LEVEL2, "DOWNLOAD MANAGER, END OF MAIN PROGRAM\n");
  return 0;
}
Exemplo n.º 4
0
int soap_put_connect(struct soap *soap, const char *endpoint, const char *action, const char *type)
{ if ((soap->omode & SOAP_IO) != SOAP_IO_CHUNK) /* not chunking: store in buf */
    soap->omode = (soap->omode & ~SOAP_IO) | SOAP_IO_STORE;
  soap->http_content = type;
  return soap_connect_command(soap, SOAP_PUT, endpoint, action);
}