· 6 years ago · Dec 17, 2019, 05:26 PM
1<?php
2/*
3php?upload[]=<log url>&upload[]=<log url>&title=<log title>&map=<map name>&api=<api key>
4*/
5header("Access-Control-Allow-Origin: *");
6//error_reporting(0);
7function getIP()
8{
9 if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
10 $ip = $_SERVER['HTTP_CLIENT_IP'];
11 } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
12 $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
13 } else {
14 $ip = $_SERVER['REMOTE_ADDR'];
15 }
16 return $ip;
17}
18
19$JSON_POST = json_decode(file_get_contents('php://input'));
20
21$USER_IP = getIP();
22if (!isset($JSON_POST['api'])) {
23 exit('{"error": "Missing api field.", "success": false}');
24}
25if (!isset($JSON_POST['title'])) {
26 exit('{"error": "Missing title field.", "success": false}');
27}
28if (!isset($JSON_POST['map'])) {
29 exit('{"error": "Missing map field.", "success": false}');
30}
31if (!isset($JSON_POST['upload'])) {
32 exit('{"error": "Missing upload[] field.", "success": false}');
33}
34$upload_urls = $JSON_POST['upload'];
35if (!is_array($upload_urls)) {
36 exit('{"error": "Upload[] field must contain an array of valid urls.", "success": false}');
37}
38$log_ids = array();
39foreach ($upload_urls as $log_url) {
40 $upload_url_parts = explode('/', $log_url);
41 $upload_url_id_array = explode('#', end($upload_url_parts));
42 $upload_url_id = $upload_url_id_array[0];
43 array_push($log_ids, $upload_url_id);
44}
45$storage_dir = str_replace(array(
46 '.',
47 ':'
48), '-', $USER_IP) . '/';
49$log_files = array();
50if (!file_exists(substr($storage_dir, 0, -1))) {
51 mkdir(substr($storage_dir, 0, -1));
52}
53foreach ($log_ids as $id) {
54 $log_zip_dir = $storage_dir . $id . '_log.zip';
55 if (!$chk = fopen('http://logs.tf/logs/log_' . $id . '.log.zip', 'r')) {
56 exit('{"error": "Invalid log url submitted.", "success": false}');
57 }
58 else {
59 file_put_contents($log_zip_dir, fopen('http://logs.tf/logs/log_' . $id . '.log.zip', 'r'));
60 //EXAMPLE: ./255-255-255-0/1234567_log.zip
61 $log_zip = new ZipArchive;
62 $log_zip->open($log_zip_dir);
63 $log_zip->extractTo($storage_dir);
64 $log_zip->close();
65 array_push($log_files, $storage_dir . 'log_' . $id . '.log');
66 }
67}
68//array for log file directories is stored in $log_files
69$final_log_dir = $storage_dir . 'LOG_FINAL-' . microtime() . '.log';
70$final_log = fopen($final_log_dir, 'a+');
71foreach ($log_files as $f) {
72 $l = file_get_contents($f) . "\n";
73 fwrite($final_log, $l);
74}
75fclose($final_log);
76$UPLOAD_URL = 'http://logs.tf/upload';
77$post = array(
78 'title' => $JSON_POST['title'],
79 'map' => $JSON_POST['map'],
80 'key' => $JSON_POST['api'],
81 'logfile' => curl_file_create($final_log_dir),
82 'uploader' => "Sharky's Logify v1.3"
83);
84$ch = curl_init($UPLOAD_URL);
85$ch_set = array(
86 CURLOPT_POST => 1,
87 CURLOPT_POSTFIELDS => $post,
88 CURLOPT_FOLLOWLOCATION => 1,
89 CURLOPT_HEADER => 0,
90 CURLOPT_RETURNTRANSFER => 1
91);
92curl_setopt_array($ch, $ch_set);
93$response = curl_exec($ch);
94echo ($response);
95$ffiles = glob($storage_dir . '*');
96foreach ($ffiles as $ffile) {
97 unlink($ffile);
98}
99?>