Write to fast tmp file instead of overly clever "stream if successful" code path
[bookreader.git] / BookReaderIA / www / BookReaderAuth.php
1 <?
2 /*
3 Copyright(c)2011 Internet Archive. Software license AGPL version 3.
4
5 This file is part of BookReader.
6
7     BookReader is free software: you can redistribute it and/or modify
8     it under the terms of the GNU Affero General Public License as published by
9     the Free Software Foundation, either version 3 of the License, or
10     (at your option) any later version.
11
12     BookReader is distributed in the hope that it will be useful,
13     but WITHOUT ANY WARRANTY; without even the implied warranty of
14     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15     GNU Affero General Public License for more details.
16
17     You should have received a copy of the GNU Affero General Public License
18     along with BookReader.  If not, see <http://www.gnu.org/licenses/>.
19 */
20
21 $id = $_REQUEST['id'];
22 $uuid = $_REQUEST['uuid'];
23 $token = $_REQUEST['token'];
24 $bookPath = $_REQUEST['bookPath'];
25
26 $olHost = "openlibrary.org";
27 if (isset($_REQUEST['olHost'])) {
28     $olHost = $_REQUEST['olHost'];
29 }
30
31 if (!preg_match('/^\d{10}-[0-9a-f]{32}$/', $token)) {
32     fatal();
33 }
34
35 //if (!preg_match('/^[0-9a-f]{32}$/', $uuid)) {
36 if (!preg_match('/^\S{1,128}$/', $uuid)) {
37     fatal();
38 }
39
40 if (!preg_match('/^[a-zA-Z0-9][a-zA-Z0-9\.\-_]{1,100}$/', $id)) {
41     fatal();
42 }
43
44 if (!preg_match("|^/stream/$id|", $bookPath)) {
45     fatal();
46 }
47
48 setcookie('br-loan-' . $id, $uuid, 0, '/', '.archive.org');
49 setcookie('loan-' . $id, $token, 0, '/', '.archive.org');
50 setcookie('ol-host', $olHost, 0, '/', '.archive.org');
51
52 header('Location: ' . $bookPath);
53
54 function fatal() {
55     echo "Malformed request.";
56     die(-1);
57 }
58 ?>