/** * Get license for encrypted content playback * * @action getLicense * @param string $flavorAssetId * @param string $referrer 64base encoded * @return string $response * */ public function getLicenseAction($flavorAssetId, $referrer = null) { KalturaResponseCacher::disableCache(); KalturaLog::debug('get license for flavor asset: ' . $flavorAssetId); try { $requestParams = requestUtils::getRequestParams(); if (!array_key_exists(WidevineLicenseProxyUtils::ASSETID, $requestParams)) { KalturaLog::err('assetid is missing on the request'); return WidevineLicenseProxyUtils::createErrorResponse(KalturaWidevineErrorCodes::WIDEVINE_ASSET_ID_CANNOT_BE_NULL, 0); } $wvAssetId = $requestParams[WidevineLicenseProxyUtils::ASSETID]; $this->validateLicenseRequest($flavorAssetId, $wvAssetId, $referrer); $privileges = null; $isAdmin = false; if (kCurrentContext::$ks_object) { $privileges = kCurrentContext::$ks_object->getPrivileges(); $isAdmin = kCurrentContext::$ks_object->isAdmin(); } $response = WidevineLicenseProxyUtils::sendLicenseRequest($requestParams, $privileges, $isAdmin); } catch (KalturaWidevineLicenseProxyException $e) { KalturaLog::err($e); $response = WidevineLicenseProxyUtils::createErrorResponse($e->getWvErrorCode(), $wvAssetId); } catch (Exception $e) { KalturaLog::err($e); $response = WidevineLicenseProxyUtils::createErrorResponse(KalturaWidevineErrorCodes::GENERAL_ERROR, $wvAssetId); } WidevineLicenseProxyUtils::printLicenseResponseStatus($response); return $response; }
public function serialize($object) { if (is_object($object) && $object instanceof Exception) { $assetid = 0; $requestParams = requestUtils::getRequestParams(); if (array_key_exists(WidevineLicenseProxyUtils::ASSETID, $requestParams)) { $assetid = $requestParams[WidevineLicenseProxyUtils::ASSETID]; } $object = WidevineLicenseProxyUtils::createErrorResponse(KalturaWidevineErrorCodes::GENERAL_ERROR, $assetid); } return $object; }
/** * Send register asset request to Widevine license server * If asset name is not passed call getAsset first to get asset by id * * https://register.uat.widevine.com/registerasset/kaltura?asset=test1155&owner=kaltura&provider=name:kaltura,policy:default&replace=1 * https://register.uat.widevine.com/getasset/kaltura?asset=test537&owner=kaltura&provider=kaltura */ public static function sendRegisterAssetRequest($wvRegServerHost, $assetName = null, $assetId = null, $portal = null, $policy = null, $licenseStartDate = null, $licenseEndDate = null, $iv, $key, &$errorMessage) { $params = array(); if (!$portal) { $portal = WidevinePlugin::KALTURA_PROVIDER; } if ($licenseStartDate) { $licenseStartDate = self::convertLicenseStartDate($licenseStartDate); } if ($licenseEndDate) { $licenseEndDate = self::convertLicenseEndDate($licenseEndDate); } //get asset by Id and set assetName if ($assetId && !$assetName) { $params[self::ASSET_ID] = $assetId; $params[self::OWNER] = $portal; $params[self::PROVIDER] = $portal; $ptime = time(); $signInput = $params[self::OWNER] . $params[self::PROVIDER] . $ptime; $sign = WidevineLicenseProxyUtils::createRequestSignature($signInput, $key, $iv); $params[self::PTIME] = $ptime; $params[self::SIGN] = $sign; $response = self::sendHttpRequest($wvRegServerHost . WidevinePlugin::GET_ASSET_URL_PART . $portal, $params); if ($response[self::STATUS] == 1) { $assetName = $response[self::ASSET_NAME]; unset($params[self::PROVIDER]); $policy = $response[self::POLICY]; if (!$licenseStartDate) { $licenseStartDate = $response[self::LSTART]; } if (!$licenseEndDate) { $licenseEndDate = $response[self::LEND]; } } else { $errorMessage = "Error in GetAsset API - " . self::$wvPackagerErrorCodes[$response[self::STATUS]]; return false; } } $params[self::ASSET_NAME] = $assetName; $params[self::OWNER] = $portal; $params[self::REPLACE] = 1; $providerParams = array(); $providerParams[self::PROVIDER_NAME] = $portal; if (!$policy) { $policy = WidevinePlugin::DEFAULT_POLICY; } $providerParams[self::POLICY] = $policy; if ($licenseStartDate) { $providerParams[self::LICSTART] = $licenseStartDate; } if ($licenseEndDate) { $providerParams[self::LICEND] = $licenseEndDate; } //sign register asset request $ptime = time(); $signInput = $params[self::ASSET_NAME] . $params[self::OWNER] . $providerParams[self::PROVIDER_NAME] . $ptime; $sign = WidevineLicenseProxyUtils::createRequestSignature($signInput, $key, $iv); $params[self::PTIME] = $ptime; $params[self::SIGN] = $sign; $response = self::sendHttpRequest($wvRegServerHost . WidevinePlugin::REGISTER_ASSET_URL_PART . $portal, $params, $providerParams); if ($response[self::STATUS] == 1) { return $response[self::ASSET_ID_ADD]; } else { $errorMessage = "Error in RegisterAsset API - " . self::$wvPackagerErrorCodes[$response[self::STATUS]]; return false; } }