1f5929f20b546de2c377c9ae2be2f3d0054f1b3e0Maksymilian Osowski<?php 2f5929f20b546de2c377c9ae2be2f3d0054f1b3e0Maksymilian Osowski# Copyright (C) 2010 The Android Open Source Project 3f5929f20b546de2c377c9ae2be2f3d0054f1b3e0Maksymilian Osowski# 4f5929f20b546de2c377c9ae2be2f3d0054f1b3e0Maksymilian Osowski# Licensed under the Apache License, Version 2.0 (the "License"); 5f5929f20b546de2c377c9ae2be2f3d0054f1b3e0Maksymilian Osowski# you may not use this file except in compliance with the License. 6f5929f20b546de2c377c9ae2be2f3d0054f1b3e0Maksymilian Osowski# You may obtain a copy of the License at 7f5929f20b546de2c377c9ae2be2f3d0054f1b3e0Maksymilian Osowski# 8f5929f20b546de2c377c9ae2be2f3d0054f1b3e0Maksymilian Osowski# http://www.apache.org/licenses/LICENSE-2.0 9f5929f20b546de2c377c9ae2be2f3d0054f1b3e0Maksymilian Osowski# 10f5929f20b546de2c377c9ae2be2f3d0054f1b3e0Maksymilian Osowski# Unless required by applicable law or agreed to in writing, software 11f5929f20b546de2c377c9ae2be2f3d0054f1b3e0Maksymilian Osowski# distributed under the License is distributed on an "AS IS" BASIS, 12f5929f20b546de2c377c9ae2be2f3d0054f1b3e0Maksymilian Osowski# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13f5929f20b546de2c377c9ae2be2f3d0054f1b3e0Maksymilian Osowski# See the License for the specific language governing permissions and 14f5929f20b546de2c377c9ae2be2f3d0054f1b3e0Maksymilian Osowski# limitations under the License. 15f5929f20b546de2c377c9ae2be2f3d0054f1b3e0Maksymilian Osowski 16f5929f20b546de2c377c9ae2be2f3d0054f1b3e0Maksymilian Osowski############################################################################### 17f5929f20b546de2c377c9ae2be2f3d0054f1b3e0Maksymilian Osowski 18f5929f20b546de2c377c9ae2be2f3d0054f1b3e0Maksymilian Osowski# Show the source of the test. 19f5929f20b546de2c377c9ae2be2f3d0054f1b3e0Maksymilian Osowski# 20f5929f20b546de2c377c9ae2be2f3d0054f1b3e0Maksymilian Osowski# Usage: 21f5929f20b546de2c377c9ae2be2f3d0054f1b3e0Maksymilian Osowski# view_source.php?src=PATH 22f5929f20b546de2c377c9ae2be2f3d0054f1b3e0Maksymilian Osowski# where 23f5929f20b546de2c377c9ae2be2f3d0054f1b3e0Maksymilian Osowski# PATH - relative path in the LayoutTests dir 24f5929f20b546de2c377c9ae2be2f3d0054f1b3e0Maksymilian Osowski 25f5929f20b546de2c377c9ae2be2f3d0054f1b3e0Maksymilian Osowski # Global variables 26f5929f20b546de2c377c9ae2be2f3d0054f1b3e0Maksymilian Osowski # The server document root is LayoutTests/http/tests. See run_apache2.py. 27f5929f20b546de2c377c9ae2be2f3d0054f1b3e0Maksymilian Osowski $rootDir = realpath($_SERVER['DOCUMENT_ROOT'] . '..' . DIRECTORY_SEPARATOR . '..'); 28f5929f20b546de2c377c9ae2be2f3d0054f1b3e0Maksymilian Osowski 29f5929f20b546de2c377c9ae2be2f3d0054f1b3e0Maksymilian Osowski function getAbsolutePath($relPath) { 30f5929f20b546de2c377c9ae2be2f3d0054f1b3e0Maksymilian Osowski global $rootDir; 31f5929f20b546de2c377c9ae2be2f3d0054f1b3e0Maksymilian Osowski return $rootDir . DIRECTORY_SEPARATOR . $relPath; 32f5929f20b546de2c377c9ae2be2f3d0054f1b3e0Maksymilian Osowski } 33f5929f20b546de2c377c9ae2be2f3d0054f1b3e0Maksymilian Osowski 34f5929f20b546de2c377c9ae2be2f3d0054f1b3e0Maksymilian Osowski function main() { 35f5929f20b546de2c377c9ae2be2f3d0054f1b3e0Maksymilian Osowski global $rootDir; 36f5929f20b546de2c377c9ae2be2f3d0054f1b3e0Maksymilian Osowski 37f5929f20b546de2c377c9ae2be2f3d0054f1b3e0Maksymilian Osowski # Very primitive check if path tries to go above DOCUMENT_ROOT or is absolute 38f5929f20b546de2c377c9ae2be2f3d0054f1b3e0Maksymilian Osowski if (strpos($_GET['src'], "..") !== False || 39f5929f20b546de2c377c9ae2be2f3d0054f1b3e0Maksymilian Osowski substr($_GET['src'], 0, 1) == DIRECTORY_SEPARATOR) { 40f5929f20b546de2c377c9ae2be2f3d0054f1b3e0Maksymilian Osowski return; 41f5929f20b546de2c377c9ae2be2f3d0054f1b3e0Maksymilian Osowski } 42f5929f20b546de2c377c9ae2be2f3d0054f1b3e0Maksymilian Osowski 43040564aa02a28de2f85453902fcde0325b911d9bSteve Block # If we don't want realpath to append any prefixes we need to pass it an absolute path 44f5929f20b546de2c377c9ae2be2f3d0054f1b3e0Maksymilian Osowski $src = realpath(getAbsolutePath($_GET['src'])); 45f5929f20b546de2c377c9ae2be2f3d0054f1b3e0Maksymilian Osowski 46f5929f20b546de2c377c9ae2be2f3d0054f1b3e0Maksymilian Osowski echo "<html><body>"; 47f5929f20b546de2c377c9ae2be2f3d0054f1b3e0Maksymilian Osowski # TODO: Add link following and syntax highlighting for html and js. 48040564aa02a28de2f85453902fcde0325b911d9bSteve Block highlight_string(file_get_contents($src)); 49f5929f20b546de2c377c9ae2be2f3d0054f1b3e0Maksymilian Osowski echo "</body></html>"; 50f5929f20b546de2c377c9ae2be2f3d0054f1b3e0Maksymilian Osowski } 51f5929f20b546de2c377c9ae2be2f3d0054f1b3e0Maksymilian Osowski 52f5929f20b546de2c377c9ae2be2f3d0054f1b3e0Maksymilian Osowski main(); 53f5929f20b546de2c377c9ae2be2f3d0054f1b3e0Maksymilian Osowski?> 54