示例#1
0
 public static bool validate_device_token(
 ValidateDeviceTokenParams validateDeviceTokenParams,
 out int result,
 out int error_id)
 {
     return validate_device_token_internal(
       validateDeviceTokenParams,
       out result,
       out error_id);
 }
示例#2
0
    //
    // create_validate_device_token_message: generates a validate device token message to be sent
    // 	to the PhoneFactor backend.
    //
    // Return value:
    //     a complete validate device token xml message ready to be sent to the PhoneFactor backend
    //
    private static string create_validate_device_token_message(
    ValidateDeviceTokenParams validateDeviceTokenParams)
    {
        XmlDocument doc = new XmlDocument();

        // start message
        // <pfpMessage></pfpMessage>
        XmlElement root = doc.CreateElement("pfpMessage");
        root.SetAttribute("version", "1.5");
        doc.AppendChild(root);

        // message header
        // <header></header>
        XmlElement header = doc.CreateElement("header");
        root.AppendChild(header);
        XmlElement element = doc.CreateElement("source");
        header.AppendChild(element);
        element = doc.CreateElement("component");
        element.SetAttribute("type", "pfsdk");
        header.AppendChild(element);
        element = doc.CreateElement("host");
        element.SetAttribute("ip", validateDeviceTokenParams.IpAddress);
        element.SetAttribute("hostname", validateDeviceTokenParams.Hostname);
        header.AppendChild(element);

        // request
        // <request></request>
        XmlElement request = doc.CreateElement("request");
        Random random = new Random();
        string request_id = random.Next(10000).ToString();
        request.SetAttribute("request-id", request_id);
        request.SetAttribute("async", "0");
        request.SetAttribute("response-url", "");
        root.AppendChild(request);
        XmlElement validate_device_token_request = doc.CreateElement("validateDeviceTokenRequest");
        request.AppendChild(validate_device_token_request);
        XmlElement customer = doc.CreateElement("customer");
        validate_device_token_request.AppendChild(customer);
        element = doc.CreateElement("licenseKey");
        element.InnerText = LICENSE_KEY;
        customer.AppendChild(element);
        element = doc.CreateElement("groupKey");
        element.InnerText = GROUP_KEY;
        customer.AppendChild(element);
        element = doc.CreateElement("username");
        element.InnerText = validateDeviceTokenParams.Username;
        validate_device_token_request.AppendChild(element);
        element = doc.CreateElement("deviceToken");
        if (validateDeviceTokenParams.NotificationType.Length > 0)
        {
          element.SetAttribute("notificationType", validateDeviceTokenParams.NotificationType);
        }
        element.InnerText = validateDeviceTokenParams.DeviceToken;
        validate_device_token_request.AppendChild(element);
        element = doc.CreateElement("phoneAppAccountName");
        element.InnerText = validateDeviceTokenParams.AccountName;
        validate_device_token_request.AppendChild(element);

        return doc.InnerXml;
    }
示例#3
0
    private static bool validate_device_token_internal(
    ValidateDeviceTokenParams validateDeviceTokenParams,
    out int result,
    out int error_id)
    {
        if (validateDeviceTokenParams.Hostname.Length == 0) validateDeviceTokenParams.Hostname = "pfsdk-hostname";
        if (validateDeviceTokenParams.IpAddress.Length == 0) validateDeviceTokenParams.IpAddress = "255.255.255.255";
        result = 0;
        error_id = 0;

        string validate_device_token_message = create_validate_device_token_message(validateDeviceTokenParams);

        int tries = 1;
        if (mMutex.WaitOne())
        {
          try { tries = mTargets.Count + 1; }
          finally { mMutex.ReleaseMutex(); }
        }
        for (int i = 0; i < tries; i++)
        {
          string response;
          if (send_message(mCurrentTarget, validate_device_token_message, validateDeviceTokenParams.CertFilePath, out response))
          {
        bool success = get_validate_device_token_response_status(response, out result, out error_id);
        return success;
          }
          else
          {
        if (mMutex.WaitOne())
        {
          try
          {
            mTargets.Enqueue(mCurrentTarget);
            mCurrentTarget = mTargets.Dequeue().ToString();
          }
          finally { mMutex.ReleaseMutex(); }
        }
          }
        }
        return false;
    }