Пример #1
0
 if (Request::IsMethodPOST() && (Request::GetCommandCode() === false || !Request::GetGETUser() || !Request::GetDeviceID() || !Request::GetDeviceType())) {
     throw new FatalException("Requested the Z-Push URL without the required GET parameters");
 }
 // Load the backend
 $backend = ZPush::GetBackend();
 // always request the authorization header
 if (!Request::AuthenticationInfo()) {
     throw new AuthenticationRequiredException("Access denied. Please send authorisation information");
 }
 // check the provisioning information
 if (PROVISIONING === true && Request::IsMethodPOST() && ZPush::CommandNeedsProvisioning(Request::GetCommandCode()) && (Request::WasPolicyKeySent() && Request::GetPolicyKey() == 0 || ZPush::GetDeviceManager()->ProvisioningRequired(Request::GetPolicyKey())) && (LOOSE_PROVISIONING === false || LOOSE_PROVISIONING === true && Request::WasPolicyKeySent())) {
     //TODO for AS 14 send a wbxml response
     throw new ProvisioningRequiredException();
 }
 // most commands require an authenticated user
 if (ZPush::CommandNeedsAuthentication(Request::GetCommandCode())) {
     RequestProcessor::Authenticate();
 }
 // Do the actual processing of the request
 if (Request::IsMethodGET()) {
     throw new NoPostRequestException("This is the Z-Push location and can only be accessed by Microsoft ActiveSync-capable devices", NoPostRequestException::GET_REQUEST);
 }
 // Do the actual request
 header(ZPush::GetServerHeader());
 // announce the supported AS versions (if not already sent to device)
 if (ZPush::GetDeviceManager()->AnnounceASVersion()) {
     $versions = ZPush::GetSupportedProtocolVersions(true);
     ZLog::Write(LOGLEVEL_INFO, sprintf("Announcing latest AS version to device: %s", $versions));
     header("X-MS-RP: " . $versions);
 }
 RequestProcessor::Initialize();