Пример #1
0
int
main (int argc, char **argv)
{
  FILE *wwwauthenticates_file;


  osip_www_authenticate_t *wwwauthenticate;
  char *a_wwwauthenticate;
  char *dest;
  char *res;

  wwwauthenticates_file = fopen (argv[1], "r");
  if (wwwauthenticates_file == NULL)
    {
      fprintf (stdout,
               "Failed to open %s file.\nUsage: twwwauthenticate wwwauthenticates.txt\n",
               argv[1]);
      exit (0);
    }

  a_wwwauthenticate = (char *) osip_malloc (200);
  res = fgets (a_wwwauthenticate, 200, wwwauthenticates_file);  /* lines are under 200 */
  while (res != NULL)
    {

      int errcode;

      /* remove the last '\n' before parsing */
      strncpy (a_wwwauthenticate + strlen (a_wwwauthenticate) - 1, "\0", 1);

      if (0 != strncmp (a_wwwauthenticate, "#", 1))
        {
          /* allocate & init wwwauthenticate */
          osip_www_authenticate_init (&wwwauthenticate);
          printf ("=================================================\n");
          printf ("WWWAUTHENTICATE TO PARSE: |%s|\n", a_wwwauthenticate);
          errcode =
            osip_www_authenticate_parse (wwwauthenticate, a_wwwauthenticate);
          if (errcode != -1)
            {
              if (osip_www_authenticate_to_str (wwwauthenticate, &dest) != -1)
                {
                  printf ("result:                   |%s|\n", dest);
                  osip_free (dest);
                }
          } else
            printf ("Bad wwwauthenticate format: %s\n", a_wwwauthenticate);
          osip_www_authenticate_free (wwwauthenticate);
          printf ("=================================================\n");
        }
      res = fgets (a_wwwauthenticate, 200, wwwauthenticates_file);      /* lines are under 200 */
    }
  osip_free (a_wwwauthenticate);
  return 0;
}
Пример #2
0
/* returns -1 on error. */
int
osip_message_set_www_authenticate (osip_message_t * sip, const char *hvalue)
{
  osip_www_authenticate_t *www_authenticate;
  int i;

  if (hvalue == NULL || hvalue[0] == '\0')
    return OSIP_SUCCESS;

  if (sip == NULL)
    return OSIP_BADPARAMETER;
  i = osip_www_authenticate_init (&www_authenticate);
  if (i != 0)
    return i;
  i = osip_www_authenticate_parse (www_authenticate, hvalue);
  if (i != 0) {
    osip_www_authenticate_free (www_authenticate);
    return i;
  }
  sip->message_property = 2;
  osip_list_add (&sip->www_authenticates, www_authenticate, -1);
  return OSIP_SUCCESS;
}
Пример #3
0
int
osip_www_authenticate_clone (const osip_www_authenticate_t * wwwa, osip_www_authenticate_t ** dest)
{
  int i;
  osip_www_authenticate_t *wa;

  *dest = NULL;
  if (wwwa == NULL)
    return OSIP_BADPARAMETER;
  if (wwwa->auth_type == NULL)
    return OSIP_BADPARAMETER;

  i = osip_www_authenticate_init (&wa);
  if (i != 0)                   /* allocation failed */
    return i;
  wa->auth_type = osip_strdup (wwwa->auth_type);
  if (wa->auth_type == NULL && wwwa->auth_type != NULL) {
    osip_www_authenticate_free (wa);
    return OSIP_NOMEM;
  }
  if (wwwa->realm != NULL)
    wa->realm = osip_strdup (wwwa->realm);
  if (wa->realm == NULL && wwwa->realm != NULL) {
    osip_www_authenticate_free (wa);
    return OSIP_NOMEM;
  }
  if (wwwa->domain != NULL)
    wa->domain = osip_strdup (wwwa->domain);
  if (wa->domain == NULL && wwwa->domain != NULL) {
    osip_www_authenticate_free (wa);
    return OSIP_NOMEM;
  }
  if (wwwa->nonce != NULL)
    wa->nonce = osip_strdup (wwwa->nonce);
  if (wa->nonce == NULL && wwwa->nonce != NULL) {
    osip_www_authenticate_free (wa);
    return OSIP_NOMEM;
  }
  if (wwwa->opaque != NULL)
    wa->opaque = osip_strdup (wwwa->opaque);
  if (wa->opaque == NULL && wwwa->opaque != NULL) {
    osip_www_authenticate_free (wa);
    return OSIP_NOMEM;
  }
  if (wwwa->stale != NULL)
    wa->stale = osip_strdup (wwwa->stale);
  if (wa->stale == NULL && wwwa->stale != NULL) {
    osip_www_authenticate_free (wa);
    return OSIP_NOMEM;
  }
  if (wwwa->algorithm != NULL)
    wa->algorithm = osip_strdup (wwwa->algorithm);
  if (wa->algorithm == NULL && wwwa->algorithm != NULL) {
    osip_www_authenticate_free (wa);
    return OSIP_NOMEM;
  }
  if (wwwa->qop_options != NULL)
    wa->qop_options = osip_strdup (wwwa->qop_options);
  if (wa->qop_options == NULL && wwwa->qop_options != NULL) {
    osip_www_authenticate_free (wa);
    return OSIP_NOMEM;
  }
  if (wwwa->version != NULL)
    wa->version = osip_strdup (wwwa->version);
  if (wa->version==NULL && wwwa->version!=NULL)
  {
	  osip_www_authenticate_free (wa);
	  return OSIP_NOMEM;
  }
  if (wwwa->targetname != NULL)
    wa->targetname = osip_strdup (wwwa->targetname);
  if (wa->targetname==NULL && wwwa->targetname!=NULL)
  {
	  osip_www_authenticate_free (wa);
	  return OSIP_NOMEM;
  }
  if (wwwa->gssapi_data != NULL)
    wa->gssapi_data = osip_strdup (wwwa->gssapi_data);
  if (wa->gssapi_data==NULL && wwwa->gssapi_data!=NULL)
  {
	  osip_www_authenticate_free (wa);
	  return OSIP_NOMEM;
  }

  *dest = wa;
  return OSIP_SUCCESS;
}