scratch – Blame information for rev 87

Subversion Repositories:
Rev:
Rev Author Line No. Line
86 office 1 <?php
2  
3 ###########################################################################
4 ## Copyright (C) Wizardry and Steamworks 2017 - License: GNU GPLv3 ##
5 ###########################################################################
6  
7 require_once('php/pseudocrypt.php');
8 require_once('php/functions.php');
87 office 9 require_once('vendor/autoload.php');
86 office 10  
11 ### Load configuration.
12 $config = spyc_load_file('config.yaml');
13  
14 ### If no file has been specified for download then return.
15 if (!isset($_GET['hash']) or empty($_GET['hash'])) {
16 http_response_code(404);
17 die('File not found.');
18 }
19  
20 ### Find the requested file.
21 $file = array_shift(
22 preg_grep(
23 "/".$_GET['hash']."/",
24 scandir($config['STORE_FOLDER'])
25 )
26 );
27  
28 if (!isset($file) or empty($file)) {
29 http_response_code(404);
30 die('File not found.');
31 }
32  
33 ### Check the path for path traversals.
34 $fileExtension = pathinfo($file, PATHINFO_EXTENSION);
35  
36 #### If the extension is not allowed then return.
37 if (!isset($fileExtension) ||
38 !in_array(strtoupper($fileExtension),
39 array_map('strtoupper', $config['ALLOWED_FILE_EXTENSIONS']))) {
40 http_response_code(403);
41 die('File extension not allowed.');
42 }
43  
44 #### Build the user path.
45 $userPath = join(
46 DIRECTORY_SEPARATOR,
47 array(
48 $config['STORE_FOLDER'],
49 $file
50 )
51 );
52  
53 #### Check for path traversals
54 $pathPart = pathinfo($userPath);
55 if (strcasecmp(
56 realpath($pathPart['dirname']), realpath($config['STORE_FOLDER'])) != 0) {
57 http_response_code(500);
58 die('Internal server error.');
59 }
60  
61 #### Check if the file exists.
62 if (!file_exists($userPath)) {
63 http_response_code(404);
64 die('File not found.');
65 }
66  
67 list($width, $height) = getimagesize($userPath);
68  
69 # Create an OpenGraph object with validation.
70 $og = new OpenGraph();
71  
72 $og->title('Scratch Copy')
73 ->description('Asset Sharing')
74 ->url($config['URL_PATH'].$_GET['hash'])
75 ->type('movie')
76 ->image($config['URL_PATH'].$_GET['hash'], [
77 type => 'image/png',
78 width => $width,
79 height => $height
80 ]);
81  
82  
83 echo $og->renderTags();
84