For old loans, the uuid is actually a text string, not a uuid.
[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 if (!preg_match('/^\d{10}-[0-9a-f]{32}$/', $token)) {
27     fatal();
28 }
29
30 //if (!preg_match('/^[0-9a-f]{32}$/', $uuid)) {
31 if (!preg_match('/^\S{1,128}$/', $uuid)) {
32     fatal();
33 }
34
35 if (!preg_match('/^[a-zA-Z0-9][a-zA-Z0-9\.\-_]{1,100}$/', $id)) {
36     fatal();
37 }
38
39 if (!preg_match("|^/stream/$id|", $bookPath)) {
40     fatal();
41 }
42
43 setcookie('br-loan-' . $id, $uuid, 0, '/', '.archive.org');
44 setcookie('loan-' . $id, $token, 0, '/', '.archive.org');
45
46 header('Location: ' . $bookPath);
47
48 function fatal() {
49     echo "Malformed request.";
50     die(-1);
51 }
52 ?>