ILIAS
trunk Revision v11.0_alpha-1715-g7fc467680fb
|
Go to the source code of this file.
Functions | |
validateServiceToken (string $token, ilLTIConsumeProvider $provider) | |
sendAccessToken (string $scopes, ilLTIConsumeProvider $provider) | |
serverError (string $log="") | |
invalidRequest (string $log="") | |
Variables | |
global | $DIC |
$gradeService = new ilLTIConsumerGradeService() | |
if(!empty(ilObjLTIConsumer::verifyPrivateKey())) if(strtoupper($DIC->http() ->request() ->getMethod()) !=="POST") | $params = $DIC->http()->wrapper()->query() |
$post = $DIC->http()->wrapper()->post() | |
if(! $post->has('client_assertion')||! $post->has('client_assertion_type')||! $post->has('grant_type')||! $post->has('scope')) | $clientAssertion = $post->retrieve('client_assertion', $DIC->refinery()->kindlyTo()->string()) |
$clientAssertionType = $post->retrieve('client_assertion_type', $DIC->refinery()->kindlyTo()->string()) | |
$grantType = $post->retrieve('grant_type', $DIC->refinery()->kindlyTo()->string()) | |
$scope = $post->retrieve('scope', $DIC->refinery()->kindlyTo()->string()) | |
if($clientAssertionType !='urn:ietf:params:oauth:client-assertion-type:jwt-bearer'|| $grantType !='client_credentials') | $parts = explode('.', $clientAssertion) |
if(count($parts) !=3) | $payload = JWT::urlsafeB64Decode($parts[1]) |
$claims = json_decode($payload, true) | |
if($claims==null) | $clientId = $claims['sub'] |
if(empty($clientId)) | $providerId = 0 |
$provider = null | |
try | |
$scopes = array() | |
$requestedscopes = explode(' ', $scope) | |
invalidRequest | ( | string | $log = "" | ) |
Definition at line 159 of file ltitoken.php.
References $log, ilObjLTIConsumer\getLogger(), and ilObjLTIConsumer\sendResponseError().
Referenced by validateServiceToken().
sendAccessToken | ( | string | $scopes, |
ilLTIConsumeProvider | $provider | ||
) |
Definition at line 126 of file ltitoken.php.
References $privateKey, $responseData, $scopes, $token, ilLTIConsumeProvider\getClientId(), ilObjLTIConsumer\getLogger(), ilObjLTIConsumer\getPrivateKey(), ilObjLTIConsumer\sendResponseJson(), and serverError().
serverError | ( | string | $log = "" | ) |
Definition at line 151 of file ltitoken.php.
References $log, ilObjLTIConsumer\getLogger(), and ilObjLTIConsumer\sendResponseError().
Referenced by sendAccessToken(), and validateServiceToken().
validateServiceToken | ( | string | $token, |
ilLTIConsumeProvider | $provider | ||
) |
Definition at line 108 of file ltitoken.php.
References $data, ilLTIConsumeProvider\getClientId(), ilObjLTIConsumer\getLogger(), ilLTIConsumeProvider\getPublicKeyset(), invalidRequest(), and serverError().
$claims = json_decode($payload, true) |
Definition at line 68 of file ltitoken.php.
Referenced by ilAuthProviderOpenIdConnect\doAuthentication().
if (! $post->has( 'client_assertion')||! $post->has( 'client_assertion_type')||! $post->has( 'grant_type')||! $post->has( 'scope')) $clientAssertion = $post->retrieve('client_assertion', $DIC->refinery()->kindlyTo()->string()) |
Definition at line 52 of file ltitoken.php.
$clientAssertionType = $post->retrieve('client_assertion_type', $DIC->refinery()->kindlyTo()->string()) |
Definition at line 53 of file ltitoken.php.
Definition at line 74 of file ltitoken.php.
global $DIC |
Definition at line 31 of file ltitoken.php.
$gradeService = new ilLTIConsumerGradeService() |
Definition at line 35 of file ltitoken.php.
$grantType = $post->retrieve('grant_type', $DIC->refinery()->kindlyTo()->string()) |
Definition at line 54 of file ltitoken.php.
if (!empty(ilObjLTIConsumer::verifyPrivateKey())) if (strtoupper( $DIC->http() ->request() ->getMethod()) !=="POST") $params = $DIC->http()->wrapper()->query() |
Definition at line 45 of file ltitoken.php.
if ( $clientAssertionType !='urn:ietf:params:oauth:client-assertion-type:jwt-bearer'||$grantType !='client_credentials') $parts = explode('.', $clientAssertion) |
Definition at line 61 of file ltitoken.php.
Referenced by ILIAS\Badge\Sorting\__construct(), ilAdvancedMDParser\__construct(), ilWACPath\__construct(), ILIAS\FileUpload\MimeType\__construct(), ilObjChatroomGUI\_goto(), ilObjSessionGUI\_goto(), Mail_RFC822\_hasUnclosedBracketsSub(), Mail_RFC822\_isGroup(), Mail_RFC822\_splitAddresses(), Mail_RFC822\_validateAddress(), Mail_RFC822\_validateAddrSpec(), Mail_RFC822\_validateLocalPart(), Mail_RFC822\_validatePhrase(), Mail_RFC822\_validateRouteAddr(), ilVirusScannerICapRemoteAvClient\analyseHeader(), assClozeTestGUI\applyIndizesToGapText(), ilSkillProfileGUI\assignLevelToProfile(), ilAdvancedMDFieldDefinitionSelect\buildConfirmedObjects(), ilScheduleInputGUI\checkInput(), ILIAS\MetaData\Repository\Validation\Processor\InsecureFilenameSanitizerPreProcessor\checkPath(), ilAppointmentPresentationCourseGUI\collectPropertiesAndActions(), ilPCTableData\deleteCol(), ILIAS\FileDelivery\Delivery\StreamDelivery\deliverFromToken(), ILIAS\ResourceStorage\Resource\ResourceBuilder\ensurePathInZIP(), ilDclCreateViewDefinitionGUI\executeCommand(), ilUserDefinedFields\fetchFieldIdFromImportId(), ilWebResourceEditableLinkTableGUI\fillRow(), ilContainerImporter\finalProcessing(), ilLearningSequenceImporter\finalProcessing(), ILIAS\LTIOAuth\OAuthSignatureMethod_HMAC_SHA1\get_name(), ILIAS\Container\StandardGUIRequest\getAlreadyRenderedRefIds(), ilWikiStatGUI\getChartData(), ILIAS\ResourceStorage\Stakeholder\AbstractResourceStakeholder\getConsumerNameForPresentation(), ilCommonActionDispatcherGUI\getInstanceFromAjaxCall(), ILIAS\BackgroundTasks\Task\Job\Repository\JobRepositoryImpl\getJobInstanceById(), ilSCORM13PlayerGUI\getLogFileList(), ilWACTokenTest\getModifiedSignedPath(), ILIAS\LTI\Screen\LtiViewLayoutProvider\getPageBuilderDecorator(), ILIAS\Container\Screen\MemberViewLayoutProvider\getPageBuilderDecorator(), ilLSViewLayoutProvider\getPageBuilderDecorator(), ilPageComponentPluginImporter\getPCMapping(), ILIAS\GlobalScreen\Provider\AbstractProvider\getProviderNameForPresentation(), ilMailFormCall\getRefererRedirectUrl(), ILIAS\Data\Link\ExtLinkMapper\getRefId(), ILIAS\UI\Implementation\Render\DefaultRendererFactory\getRendererNameFor(), ilWebLinkItemInternal\getResolvedLink(), ILIAS\Exercise\GUIRequest\getReviewCritId(), ILIAS\Exercise\GUIRequest\getReviewGiverId(), ILIAS\Exercise\GUIRequest\getReviewPeerId(), ILIAS\BookingManager\StandardGUIRequest\getSlotFrom(), ILIAS\BookingManager\StandardGUIRequest\getSlotTo(), ILIAS\Export\ImportHandler\File\Handler\getSubPathToDirBeginningAtPathEnd(), ILIAS\Export\ImportHandler\File\Handler\getSubPathToDirBeginningAtPathStart(), ilBadgeHandler\getTypeInstanceByUniqueId(), ilICalParser\getTZ(), ilSoapUserAdministration\getUserIdBySid(), ilObjSurveyGUI\getUserResultsPlain(), ILIAS\Mail\Message\MailBoxQuery\getWhere(), ilAdvancedMetaDataExporter\getXmlRepresentation(), ilObjSession\handleAutoFill(), ilLPListOfSettingsGUI\handleLPUsageInfo(), ilAdvancedMDRecordParser\handlerEndTag(), ilObjUserFolderGUI\handleUploadedFiles(), ilAdvancedMDFieldDefinitionExternalLink\importValueFromXML(), ilAdvancedMDFieldDefinitionLocation\importValueFromXML(), ilAdvancedMDFieldDefinitionText\importValueFromXML(), ilAdvancedMDFieldDefinitionInteger\importXMLProperty(), ilObjCourseGUI\infoScreen(), ilObjGroupGUI\infoScreen(), ilAssOrderingElement\isExportIdent(), ilLinkInputGUI\isInternalLink(), ILIAS\Filesystem\Util\ZipTest\LegacyZipWithTop(), ilPCAMDForm\modifyPageContentPostXsl(), ilPCAMDPageList\modifyPageContentPostXsl(), ilPCTableData\moveColLeft(), ilPCTableData\moveColRight(), ilPCTableData\newColAfter(), ilPCTableData\newColBefore(), ILIAS\Filesystem\Provider\FlySystem\Util\normalizeRelativePath(), ILIAS\MetaData\Repository\Validation\Processor\FilenameSanitizerPreProcessor\normalizeRelativePath(), ilFileXMLParser\normalizeRelativePath(), ilDclFieldFactory\parseDatatypeTitle(), ilErrorHandling\parseEditorPathTranslation(), ilDataSet\parseObjectExportId(), ilVirusScannerICapRemote\parseResponse(), ilLTIConsumerResourceBase\parseTemplate(), ilObjSCORMLearningModule\parseUserId(), ilTestSettingsChangeConfirmationGUI\populateParametersFromPropertyForm(), ilPortfolioPageGUI\postOutputProcessing(), assClozeTestGUI\removeIndizesFromGapText(), ilContainerRenderer\removeItem(), ilScheduleInputGUI\render(), wsdl\serializeRPCParameters(), ilPublicUserProfileGUI\setBackUrl(), ilObjSessionGUI\showJoinRequestButton(), ILIAS\Filesystem\Util\ZipTest\testLegacyZip(), ilAuthFrontendCredentialsApache\tryAuthenticationOnLoginPage(), ilAdvancedMDFieldDefinitionSelect\update(), ilSkillProfileGUI\updateLevelOfProfile(), ilMailAutoCompleteSentMailsRecipientsProvider\valid(), Mail_RFC822\validateMailbox(), ilWikiStatGUI\viewToolbar(), ILIAS\Data\URI\withAuthority(), and assMultipleChoiceGUI\writeAnswerSpecificPostData().
if (count( $parts) !=3) $payload = JWT::urlsafeB64Decode($parts[1]) |
Definition at line 67 of file ltitoken.php.
Referenced by nusoap_client\call(), ILIAS\FileDelivery\Delivery\StreamDelivery\deliverFromToken(), ILIAS\FileDelivery\Token\DataSigner\getSignedStreamToken(), nusoap_server\send_response(), nusoap_server\serialize_return(), ILIAS\FileDelivery\Token\DataSigner\sign(), and ILIAS\Tests\FileDelivery\Token\TokenTest\testKeyRotation().
$post = $DIC->http()->wrapper()->post() |
Definition at line 46 of file ltitoken.php.
Referenced by ILIAS\Survey\Evaluation\EvaluationGUIRequest\__construct(), ilObjBlogGUI\approve(), ilChatroomAuthInputGUI\checkInput(), ilDateTimeInputGUI\checkInput(), ilOrgUnitGenericMultiInputGUI\checkInput(), ilDateDurationInputGUI\checkInput(), ilPropertyFormGUI\checkInput(), ilObjUserFolderGUI\collectChangedFields(), ilObjBlogGUI\deactivateAdmin(), ilBlogPosting\deleteAllBlogPostings(), ilObjStudyProgrammeAutoCategoriesGUI\deleteConfirmation(), ilObjStudyProgrammeAutoMembershipsGUI\deleteConfirmation(), ilForum\deletePost(), ilMMAbstractItemGUI\determineCommand(), ilADTSearchBridge\extractPostValues(), XapiProxy\XapiProxyResponse\fakeResponseBlocked(), ilPDNewsTableGUI\fillRow(), ilAuthProviderLTI\findGlobalRole(), ilBlogPosting\getAllPostings(), ilPersonalProfileGUI\getCheckedValues(), ilForumTopic\getFirstVisiblePostNode(), ilPropertyFormGUI\getInput(), ilMMAbstractItemGUI\getMMItemFromRequest(), ilForumTopic\getPostRootNode(), ilForumTopic\getPostTree(), assTextSubset\getSolutionSubmit(), assKprimChoice\getSolutionSubmit(), assMultipleChoice\getSolutionSubmit(), assFormulaQuestion\getSolutionSubmit(), ilBlogDraftsDerivedTaskProvider\getTasks(), ilAssQuestionSkillAssignmentRegistryTest\getTestData(), ilExerciseManagementGUI\handleIndividualDeadlineCallsObject(), ilADTLocalizedTextSearchBridgeSingle\importFromPost(), ilADTExternalLinkSearchBridgeSingle\importFromPost(), ilADTDateTimeSearchBridgeSingle\importFromPost(), ilADTDateSearchBridgeSingle\importFromPost(), ilADTFloatSearchBridgeSingle\importFromPost(), ilADTIntegerSearchBridgeSingle\importFromPost(), ilADTEnumSearchBridgeSingle\importFromPost(), ilADTTextSearchBridgeSingle\importFromPost(), ilADTInternalLinkSearchBridgeSingle\importFromPost(), ilADTEnumSearchBridgeMulti\importFromPost(), ilADTLocationSearchBridgeSingle\importFromPost(), ilADTDateSearchBridgeRange\importFromPost(), ilADTDateTimeSearchBridgeRange\importFromPost(), ilLMPresentationGUI\initByRequest(), ilBookingObjectGUI\initForm(), ilPCBlogGUI\initPostingForm(), ilObjBlogGUI\lookupSubObjectTitle(), ILIAS\Blog\Access\BlogAccess\mayEditPosting(), ilForumTopic\movePosts(), ilForumExportGUI\printPost(), ilForumExportGUI\printThread(), ilPortfolioPageGUI\renderBlogTeaser(), ilObjBlogGUI\renderFullscreenHeader(), ILIAS\COPage\Editor\Server\Server\reply(), ilObjForumGUI\retrieveThreadIds(), ilObjStudyProgrammeAutoMembershipsGUI\save(), ilObjSystemFolderGUI\saveHeaderTitlesObject(), ilTaxAssignInputGUI\saveInput(), assOrderingQuestionGUI\saveNesting(), ilObjLanguageExtGUI\saveObject(), ilAssQuestionSkillAssignmentRegistryTest\serializedData(), ilForumTopic\setLastPostForThreadOverview(), ilObjUserFolderGUI\showFieldChangeComponentsListeningConfirmDialog(), ilObjSystemFolderGUI\showHeaderTitleObject(), ilBulkEditQuestionsGUI\storeTaxonomies(), ilPlainTextHandler\tables(), ilLoggingErrorFileStorage\tables(), PasswordInputTest\testValueType(), ilPCDataTableGUI\updateJS(), and ilObjForumGUI\viewThreadObject().
$provider = null |
Definition at line 80 of file ltitoken.php.
Referenced by ilDerivedTaskCollector\__construct(), ilLearningHistoryProviderFactory\__construct(), ilForumPostsDeleted\__construct(), ILIAS\LegalDocuments\Repository\DatabaseHistoryRepository\acceptedVersion(), ilLTIConsumerAdministrationGUI\acceptProviderAsGlobalCmd(), ilLTIConsumerAdministrationGUI\acceptProviderAsGlobalMultiCmd(), ilLTIConsumeProviderList\add(), ilMailAutoCompleteSearch\addProvider(), ilObjLTIConsumerGUI\afterSave(), ILIAS\LegalDocuments\Repository\DatabaseHistoryRepository\all(), ilAuthFrontendHTTP\authenticate(), ilAuthFrontend\authenticate(), ilObjLTIConsumerGUI\cancelDynReg(), ilObjLTIConsumerGUI\checkContentSelection(), ILIAS\GlobalScreen\Scope\Footer\Collector\FooterMainCollector\collectStructure(), ILIAS\GlobalScreen\Scope\MetaBar\Collector\MetaBarMainCollector\collectStructure(), ILIAS\GlobalScreen\Scope\Layout\Collector\MainLayoutCollector\collectStructure(), ILIAS\GlobalScreen\Scope\Tool\Collector\MainToolCollector\collectStructure(), ILIAS\GlobalScreen\Scope\MainMenu\Collector\MainMenuMainCollector\collectStructure(), ilLTIConsumerAdministrationGUI\confirmDeleteProviders(), ilObjLTIConsumerGUI\contentSelectionRequest(), ilObjLTIConsumerGUI\contentSelectionResponse(), ILIAS\LegalDocuments\Repository\DatabaseHistoryRepository\countAll(), ilMMNullItemFacade\create(), ilLTIConsumerAdministrationGUI\deleteGlobalProviderCmd(), ilLTIConsumerAdministrationGUI\deleteUserProviderCmd(), ilStartUpGUI\doApacheAuthentication(), ilStartUpGUI\doCasAuthentication(), ilStartUpGUI\doLTIAuthentication(), ilStartUpGUI\doMigration(), ilStartUpGUI\doMigrationNewAccount(), ilStartUpGUI\doOpenIdConnectAuthentication(), ilStartUpGUI\doSamlAuthentication(), ilStartUpGUI\doShibbolethAuthentication(), ilOnScreenChatGUI\executeCommand(), ilMembershipGUI\executeCommand(), ILIAS\LegalDocuments\Repository\DatabaseDocumentRepository\exists(), ilObjBlogGUI\exportWithComments(), ilLTIConsumerAdministrationGUI\fetchProvider(), ilClassificationBlockGUI\filterContainer(), ilUserActionCollector\getActionsForTargetUser(), ilDerivedTaskProviderMasterFactory\getAllProviders(), ilBadgeHandler\getAvailableTypes(), ilLTIConsumeProviderList\getById(), ILIAS\components\ResourceStorage\Container\View\CombinedActionProvider\getComponents(), ilLearningHistoryEntryCollector\getEntries(), ILIAS\GlobalScreen\Identification\AbstractIdentification\getInternalIdentifier(), ilClassificationBlockGUI\getLegacyContent(), ilGSProviderFactory\getMainBarProvider(), ilGSProviderFactory\getMetaBarProvider(), ILIAS\Survey\Mode\ModeFactory\getModeById(), ilGSProviderFactory\getModificationProvider(), ilGSProviderFactory\getNotificationsProvider(), ilWikiPageGUI\getPrintView(), ilObjWikiGUI\getPrintView(), ilAuthProviderFactory\getProviderByAuthMode(), ilAuthProviderCliFactory\getProviders(), ilAuthProviderFactory\getProviders(), ILIAS\Badge\ilBadgeTypesTableGUI\getRecords(), ILIAS\components\ResourceStorage\Container\View\CombinedActionProvider\getSingleActions(), ilLTIConsumeProviderList\getTableData(), ilGSProviderFactory\getToastsProvider(), ilGSProviderFactory\getToolProvider(), ILIAS\components\ResourceStorage\Container\View\CombinedActionProvider\getTopActions(), ILIAS\Notifications\Model\ilNotificationConfig\getType(), ilBadgeHandler\getTypeInstanceByUniqueId(), ILIAS\Container\Classification\ClassificationSessionRepository\getValueForProvider(), ilOpenIdConnectAppEventListener\handleLogoutFor(), ilResourceCollectionGUI\index(), ilECSUserConsentModalGUI\initConsentForm(), ilObjLTIConsumerGUI\initCustomCreateForm(), ilMembershipBlockGUI\initData(), ilSelectedItemsBlockGUI\initData(), ilObjLTIConsumerGUI\initDynRegForm(), ilClassificationBlockGUI\initProviders(), ilOpenIdConnectSettingsGUI\initSettingsForm(), ilObjLTIConsumerGUI\initShowToolConfig(), ILIAS\Survey\PrintView\GUIService\list(), ilUserCertificateGUI\listCertificates(), ilLTIConsumeProviderList\load(), ilAuthFrontend\migrateAccount(), ilAuthFrontend\migrateAccountNew(), ILIAS\Survey\PrintView\GUIService\page(), ilLTIConsumerAdministrationGUI\performAcceptProvidersAsGlobal(), ilLTIConsumerAdministrationGUI\performDeleteProvidersCmd(), ilLTIConsumerAdministrationGUI\performResetProvidersToUserScope(), ilLTIConsumerAdministrationGUI\prepareProvider(), ILIAS\Notes\InternalGUIService\print(), ILIAS\LegalDocuments\Repository\DatabaseDocumentRepository\queryDocuments(), ilLTIConsumerAdministrationGUI\resetProviderToUserScopeCmd(), ilLTIConsumerAdministrationGUI\resetProviderToUserScopeMultiCmd(), ILIAS\Survey\PrintView\GUIService\resultsDetails(), ILIAS\Survey\PrintView\GUIService\resultsOverview(), ILIAS\Survey\PrintView\GUIService\resultsPerUser(), ILIAS\GlobalScreen\Scope\Notification\Collector\MainNotificationCollector\returnAdministrativeNotificationsFromProviders(), ILIAS\GlobalScreen\Scope\Notification\Collector\MainNotificationCollector\returnNotificationsFromProviders(), ILIAS\GlobalScreen\Scope\Toast\Collector\ToastCollector\returnToastsFromProviders(), ilObjLTIConsumerGUI\saveContentSelection(), ilObjLTIConsumerGUI\saveDynReg(), ilLTIConsumerAdministrationGUI\saveGlobalProviderFormCmd(), ilLTIConsumerAdministrationGUI\saveGlobalProviderImportCmd(), ilLTIConsumeProviderSettingsGUI\saveSettingsCmd(), ilLTIConsumerAdministrationGUI\saveUserProviderFormCmd(), ilMailAutoCompleteSearch\search(), ilForumCronNotification\sendCronForumNotification(), ilMailMemberSearchGUI\sendMailToSelectedUsers(), ILIAS\Container\Classification\ClassificationSessionRepository\setValueForProvider(), ilLTIConsumerAdministrationGUI\showGlobalProviderFormCmd(), ilMailMemberSearchGUI\showSelectableUsers(), ilLTIConsumerAdministrationGUI\showUserProviderFormCmd(), ilUserCertificateTableProviderTest\testFetchingDataSetForTableWithLimitParameterAndWithoutFilters(), ilUserCertificateTableProviderTest\testFetchingDataSetForTableWithOrderFieldDate(), ilUserCertificateTableProviderTest\testFetchingDataSetForTableWithoutParamtersAndWithoutFilters(), ilUserCertificateTableProviderTest\testFetchingDataWithEmptyOrderFieldWillResultInException(), ilUserCertificateTableProviderTest\testFetchingDataWithInvalidLimitParameterWillResultInException(), ilUserCertificateTableProviderTest\testFetchingDataWithInvalidOffsetParameterWillResultInException(), ilUserCertificateTableProviderTest\testFetchingDataWithInvalidOrderFieldWillResultInException(), ilUserCertificateTableProviderTest\testFetchingDataWithWrongOrderDirectionWillResultInException(), ilCertificateLearningHistoryProviderTest\testGetEntries(), ilCertificateLearningHistoryProviderTest\testGetName(), ilCertificateLearningHistoryProviderTest\testIsActive(), ilServicesMainMenuTest\testTypeHandlers(), ilAuthFrontendCredentialsSoap\tryAuthenticationOnLoginPage(), ilLTIConsumerAdministrationGUI\validateProviderDeletionSelection(), and ilObjPortfolioBaseGUI\view().
if (empty( $clientId)) $providerId = 0 |
Definition at line 79 of file ltitoken.php.
Referenced by ilLTIConsumeProvider\__construct(), ilObjLTIConsumerGUI\cancelDynReg(), ilObjLTIConsumerGUI\checkContentSelection(), ilLTIConsumerAdministrationGUI\fetchProviderMulti(), ilLTIConsumeProviderList\getById(), ilLTIConsumeProvider\getInstance(), ilLTIConsumeProviderList\hasTrashedUsages(), and ilLTIConsumeProviderList\hasUntrashedUsages().
$requestedscopes = explode(' ', $scope) |
Definition at line 99 of file ltitoken.php.
$scope = $post->retrieve('scope', $DIC->refinery()->kindlyTo()->string()) |
Definition at line 55 of file ltitoken.php.
$scopes = array() |
catch (IOException $e) try |
Definition at line 82 of file ltitoken.php.