/**
  * Connect the developer with its user name/password and store the connection cookie
  * @param string $user
  * @param string $pwd 
  * 
  * if $result['resultCode'] equal 0 you are connected
  * user info are acessible via $result['firstName'] and $result['lastName']
  * 
  * else you can print the error $result['resultString']
  * 
  * @return array $result
  */
 public static function connect($user, $pwd)
 {
     self::$user = $user;
     self::$passwod = $pwd;
     $url = 'https://daw2.apple.com/cgi-bin/WebObjects/DSAuthWeb.woa/wa/clientDAW?format=plist&appIdKey=' . self::$app_id_key . '&appleId=' . urlencode($user) . '&password='******'&userLocale=' . self::$user_locale . '&protocolVersion=' . self::$protocol_version_daw2;
     // Create a new cURL resource
     $ch = curl_init();
     // Set URL and other appropriate options
     curl_setopt($ch, CURLOPT_URL, $url);
     curl_setopt($ch, CURLOPT_HTTPHEADER, array('User-Agent: Xcode', 'Accept: text/x-xml-plist', 'Accept-Language: en-us', 'Connection: keep-alive'));
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
     curl_setopt($ch, CURLOPT_ENCODING, 'gzip, deflate');
     curl_setopt($ch, CURLOPT_HEADER, true);
     // Execute and close cURL
     $data = curl_exec($ch);
     curl_close($ch);
     self::$cookie = AppleServices::get_cookie($data);
     $content = AppleServices::get_content($data);
     $plist = new CFPropertyList();
     $plist->parse($content, CFPropertyList::FORMAT_AUTO);
     $plistData = $plist->toArray();
     return $plistData;
 }
Пример #2
0
    if ($result['resultCode'] != 0) {
        Tools::dieError($result['userString']);
    }
    foreach ($result['provisioningProfiles'] as $profile) {
        if ($version->getApplication()->getBundleId() == $profile['appId']['identifier']) {
            $new_profile_id = $profile['provisioningProfileId'];
            break;
        }
    }
    //do something to avoid stackoverflow in case of long generation
    if (++$iterCount > 50) {
        Tools::dieError('Profile not yet updated by Apple after ' . $iterCount . ' iterations. abandon.');
    }
}
echo '<p>New profile id: ' . $new_profile_id . '</p>' . PHP_EOL;
$result = AppleServices::downloadProvisioningProfile($new_profile_id, $team_id);
if ($result['resultCode'] != 0) {
    if ($result['userString'] != NULL) {
        Tools::dieError($result['userString']);
    } else {
        echo '<p>Error downloading the new profile.</p>' . PHP_EOL;
        var_dump($result);
    }
}
$new_profile = $result['provisioningProfile']['encodedProfile'];
//TODO: save this with the app binary (tmp: save in app folder with bundle id)
$newfile = __DIR__ . '/' . UPLOAD_PATH . $version->getToken() . '.mobileprovision';
$file = fopen($newfile, "w");
fwrite($file, $new_profile);
fclose($file);
echo '<p>New profile saved.</p>' . PHP_EOL;