/** * getAccessAction * input: flavor ids, drmProvider * Get Access Action * @action getAccess * @param string $entryId * @param string $flavorIds * @param string $referrer * @return KalturaDrmLicenseAccessDetails **/ public function getAccessAction($entryId, $flavorIds, $referrer) { $response = new KalturaDrmLicenseAccessDetails(); $response->policy = ""; $response->duration = 0; $response->absolute_duration = 0; $flavorIdsArr = explode(",", $flavorIds); $entry = entryPeer::retrieveByPK($entryId); if (isset($entry)) { try { $drmLU = new DrmLicenseUtils($entry, $referrer); if ($this->validateFlavorAssetssAllowed($drmLU, $flavorIdsArr) == true) { $policyId = $drmLU->getPolicyId(); KalturaLog::info("policy_id is '{$policyId}'"); $dbPolicy = DrmPolicyPeer::retrieveByPK($policyId); if (isset($dbPolicy)) { $expirationDate = DrmLicenseUtils::calculateExpirationDate($dbPolicy, $entry); $response->policy = $dbPolicy->getName(); $response->duration = $expirationDate; $response->absolute_duration = $expirationDate; KalturaLog::info("response is '" . print_r($response, true) . "' "); } else { KalturaLog::err("Could not get DRM policy from DB"); } } } catch (Exception $e) { KalturaLog::err("Could not validate license access, returned with message '" . $e->getMessage() . "'"); } } else { KalturaLog::err("Entry '{$entryId}' not found"); } return $response; }
public static function setupPartner($partnerId) { $c = new Criteria(); $c->add(DrmPolicyPeer::PARTNER_ID, $partnerId); $c->add(DrmPolicyPeer::STATUS, DrmPolicyStatus::ACTIVE); $c->add(DrmPolicyPeer::PROVIDER, DrmProviderType::CENC); $policies = DrmPolicyPeer::doSelectOne($c); if (!count($policies)) { KalturaLog::debug("DRM setup for partner " . $partnerId); list($defaultPolicy) = self::createPartnerPolicies($partnerId); self::createDefaultAccessControl($partnerId, $defaultPolicy); } }
public static function setupPartner($partnerId) { $c = new Criteria(); $c->add(DrmPolicyPeer::PARTNER_ID, $partnerId); $c->add(DrmPolicyPeer::STATUS, DrmPolicyStatus::ACTIVE); $c->add(DrmPolicyPeer::PROVIDER, PlayReadyPlugin::getPlayReadyProviderCoreValue()); $policies = DrmPolicyPeer::doSelectOne($c); if (!count($policies)) { KalturaLog::debug("playready setup for partner " . $partnerId); list($defaultPolicy, $rentalPolicy, $purchasePolicy, $subscriptionPolicy) = self::createPartnerPolicies($partnerId); self::createDefaultAccessControl($partnerId, $defaultPolicy, $rentalPolicy, $purchasePolicy, $subscriptionPolicy); } }
/** * Get Play Ready policy and dates for license creation * * @action getLicenseDetails * @param string $keyId * @param string $deviceId * @param int $deviceType * @param string $entryId * @param string $referrer 64base encoded * @return KalturaPlayReadyLicenseDetails $response * * @throws KalturaErrors::MISSING_MANDATORY_PARAMETER * @throws KalturaErrors::ENTRY_ID_NOT_FOUND * @throws KalturaPlayReadyErrors::ENTRY_NOT_FOUND_BY_KEY_ID * @throws KalturaPlayReadyErrors::PLAYREADY_POLICY_NOT_FOUND */ public function getLicenseDetailsAction($keyId, $deviceId, $deviceType, $entryId = null, $referrer = null) { KalturaLog::debug('Get Play Ready license details for keyID: ' . $keyId); $entry = $this->getLicenseRequestEntry($keyId, $entryId); $referrerDecoded = base64_decode(str_replace(" ", "+", $referrer)); if (!is_string($referrerDecoded)) { $referrerDecoded = ""; } // base64_decode can return binary data $drmLU = new DrmLicenseUtils($entry, $referrerDecoded); $policyId = $drmLU->getPolicyId(); if (!isset($policyId)) { throw new KalturaAPIException(KalturaPlayReadyErrors::PLAYREADY_POLICY_NOT_FOUND, $entry->getId()); } $dbPolicy = DrmPolicyPeer::retrieveByPK($policyId); if (!$dbPolicy) { throw new KalturaAPIException(KalturaPlayReadyErrors::PLAYREADY_POLICY_OBJECT_NOT_FOUND, $policyId); } list($beginDate, $expirationDate, $removalDate) = $this->calculateLicenseDates($dbPolicy, $entry); $policy = new KalturaPlayReadyPolicy(); $policy->fromObject($dbPolicy, $this->getResponseProfile()); $this->registerDevice($deviceId, $deviceType); $response = new KalturaPlayReadyLicenseDetails(); $response->policy = $policy; $response->beginDate = $beginDate; $response->expirationDate = $expirationDate; $response->removalDate = $removalDate; return $response; }
/** * List KalturaDrmPolicy objects * * @action list * @param KalturaDrmPolicyFilter $filter * @param KalturaFilterPager $pager * @return KalturaDrmPolicyListResponse */ public function listAction(KalturaDrmPolicyFilter $filter = null, KalturaFilterPager $pager = null) { if (!$filter) { $filter = new KalturaDrmPolicyFilter(); } $drmPolicyFilter = $filter->toObject(); $c = new Criteria(); $drmPolicyFilter->attachToCriteria($c); $count = DrmPolicyPeer::doCount($c); if (!$pager) { $pager = new KalturaFilterPager(); } $pager->attachToCriteria($c); $list = DrmPolicyPeer::doSelect($c); $response = new KalturaDrmPolicyListResponse(); $response->objects = KalturaDrmPolicyArray::fromDbArray($list, $this->getResponseProfile()); $response->totalCount = $count; return $response; }
/** * Builds a Criteria object containing the primary key for this object. * * Unlike buildCriteria() this method includes the primary key values regardless * of whether or not they have been modified. * * @return Criteria The Criteria object containing value(s) for primary key(s). */ public function buildPkeyCriteria() { $criteria = new Criteria(DrmPolicyPeer::DATABASE_NAME); $criteria->add(DrmPolicyPeer::ID, $this->id); if ($this->alreadyInSave) { if ($this->isColumnModified(DrmPolicyPeer::CUSTOM_DATA)) { if (!is_null($this->custom_data_md5)) { $criteria->add(DrmPolicyPeer::CUSTOM_DATA, "MD5(cast(" . DrmPolicyPeer::CUSTOM_DATA . " as char character set latin1)) = '{$this->custom_data_md5}'", Criteria::CUSTOM); } else { $criteria->add(DrmPolicyPeer::CUSTOM_DATA, NULL, Criteria::ISNULL); } } if (count($this->modifiedColumns) == 2 && $this->isColumnModified(DrmPolicyPeer::UPDATED_AT)) { $theModifiedColumn = null; foreach ($this->modifiedColumns as $modifiedColumn) { if ($modifiedColumn != DrmPolicyPeer::UPDATED_AT) { $theModifiedColumn = $modifiedColumn; } } $atomicColumns = DrmPolicyPeer::getAtomicColumns(); if (in_array($theModifiedColumn, $atomicColumns)) { $criteria->add($theModifiedColumn, $this->getByName($theModifiedColumn, BasePeer::TYPE_COLNAME), Criteria::NOT_EQUAL); } } } return $criteria; }
<?php ini_set("memory_limit", "1024M"); if ($argc < 3) { die('DRM Policy ID and signing key required.\\n'); } chdir(__DIR__ . '/../'); require_once __DIR__ . '/../bootstrap.php'; $drmPolicyId = $argv[1]; $signingKey = $argv[2]; shout("Adding signing key [" . $signingKey . "] to drm policy [" . $drmPolicyId . "]", true); $drmDbPolicy = DrmPolicyPeer::retrieveByPK($drmPolicyId); if (is_null($drmDbPolicy)) { throw new kCoreException("DRM Policy Id is invalid"); } $drmDbPolicy->putInCustomData(DrmProfile::CUSTOM_DATA_SIGNING_KEY, $signingKey); $drmDbPolicy->save(); shout("Finished adding signingkey to drm policy", true); //write to log function function shout($str, $newLine = false) { echo "[" . date('H:i:s') . "] " . $str . ($newLine ? "\n" : ""); }
/** * Retrieve drm policy according to systemName * @param string $systemName * @param int $excludeId * @param PropelPDO $con * @return DrmPolicy */ public static function retrieveBySystemName($systemName, $excludeId = null, PropelPDO $con = null) { $c = new Criteria(); $c->add(DrmPolicyPeer::SYSTEM_NAME, $systemName); return DrmPolicyPeer::doSelectOne($c); }
public function getFieldNameFromPeer($field_name) { $res = DrmPolicyPeer::translateFieldName($field_name, $this->field_name_translation_type, BasePeer::TYPE_COLNAME); return $res; }
/** * Retrieve multiple objects by pkey. * * @param array $pks List of primary keys * @param PropelPDO $con the connection to use * @throws PropelException Any exceptions caught during processing will be * rethrown wrapped into a PropelException. */ public static function retrieveByPKs($pks, PropelPDO $con = null) { $objs = null; if (empty($pks)) { $objs = array(); } else { $criteria = new Criteria(DrmPolicyPeer::DATABASE_NAME); $criteria->add(DrmPolicyPeer::ID, $pks, Criteria::IN); $objs = DrmPolicyPeer::doSelect($criteria, $con); } return $objs; }