Welcome to mirror list, hosted at ThFree Co, Russian Federation.

file_echo.php - github.com/phpmyadmin/phpmyadmin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 95689a4e3ac6217a3395e3f6e4f961c46d72f150 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?php
/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
 * "Echo" service to allow force downloading of exported charts (png or svg) and server status monitor settings
 *
 * @package phpMyAdmin
 */
 

define('PMA_MINIMUM_COMMON', true);

require_once './libraries/common.inc.php';

if(isset($_REQUEST['filename']) && isset($_REQUEST['image'])) {
    $allowed = Array( 'image/png'=>'png', 'image/svg+xml'=>'svg');
    
    if (! isset($allowed[$_REQUEST['type']])) exit('Invalid export type');
    
    if (! preg_match("/(".implode("|",$allowed).")$/i", $_REQUEST['filename']))
        $_REQUEST['filename'] .= '.' . $allowed[$_REQUEST['type']];
        
    downloadHeader($_REQUEST['filename'],$_REQUEST['type']);

    if ($allowed[$_REQUEST['type']] != 'svg')
        echo base64_decode(substr($_REQUEST['image'], strpos($_REQUEST['image'],',') + 1));
    else
        echo $_REQUEST['image'];
        
    exit();
}
    
if(isset($_REQUEST['monitorconfig'])) {
    downloadHeader('monitor.cfg','application/force-download');
    echo urldecode($_REQUEST['monitorconfig']);
    exit();
}

if(isset($_REQUEST['import'])) {
    echo '<html><body>' . file_get_contents($_FILES['file']['tmp_name']) . '</body></html>';
    exit();
} 

exit('Invalid request');

function downloadHeader($file,$type) {
    header("Cache-Control: public");
    header("Content-Description: File Transfer");
    header("Content-Disposition: attachment; filename=".$file);
    header("Content-Type: ".$type);
    header("Content-Transfer-Encoding: binary");
}
?>