-
Notifications
You must be signed in to change notification settings - Fork 3
/
index.php
149 lines (137 loc) · 3.32 KB
/
index.php
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
<?php
error_reporting(E_ALL);
ini_set('display_errors', 'On');
require 'vendor/autoload.php';
require 'libs/Orchestrate.php';
$config = include 'config/config.php';
$shortener = new \Slim\Slim
(
array
(
'debug' => $config['DEBUG'],
'mode' => $config['MODE'],
'templates.path' => 'templates',
)
);
$shortener->get('/', function () use ($shortener)
{
$shortener->render('home.php');
});
$shortener->post('/', function () use ($shortener)
{
global $config;
$response = array('success' => false, 'url' => '');
$url = $shortener->request->post('url');
$password = $shortener->request->post('password');
$isPrivate = (intval($shortener->request->post('privateLink')) == 1)? true : false;
if( !preg_match("#\b(([\w-]+://?|www[.])[^\s()<>]+(?:\([\w\d]+\)|([^[:punct:]\s]|/)))#i", $url) || strpos($url, $config['DEPLOY_URL']) > -1)
{
echo json_encode($response);
die();
}
else
{
$search = OrchQuery($url,$config);
if((intval($search->count) > 0) && ($isPrivate == false))
{
$result = $search->results[0]->path->key;
$response['success'] = true;
$response['url'] = $config['DEPLOY_URL'].$result;
}
else
{
$lastresponse = OrchLastKey($config);
$lastresponse = $lastresponse->body;
if(!isset($lastresponse->key))
{
$current["key"]="a";
}
else
{
$current["key"] = strval($lastresponse->key);
$current["key"]++;
}
OrchPutLastKey($config, $current);
$storage["url"] = $url;
$storage["hash"] = sha1($url);
if($isPrivate)
{
$storage["private"] = true;
$storage["password"] = sha1($password);
}
OrchPutNewLink($config, $current, $storage);
$response['success'] = true;
$response['url'] = $config['DEPLOY_URL'].$current["key"];
}
echo json_encode($response);
die();
}
});
$shortener->get('/404', function () use ($shortener)
{
$shortener->render('404.php');
});
$shortener->get('/:name', function ($name) use ($shortener)
{
global $config;
if(!preg_match('/^[a-zA-Z]+$/', $name))
{
$shortener->redirect('/404');
die();
}
$response = OrchGetLink($config,$name);
$response = $response->body;
if(!isset($response->url))
{
$shortener->redirect('/404');
die();
}
else if(isset($response->private))
{
$shortener->render('pass.php', array("url" => $config['DEPLOY_URL'].$name, "urlhome" => $config['DEPLOY_URL']));
die();
}
else
{
$shortener->redirect($response->url);
die();
}
});
$shortener->post('/:name', function ($name) use ($shortener)
{
global $config;
if(!preg_match('/^[a-zA-Z]+$/', $name))
{
$shortener->redirect('/404');
die();
}
$response = OrchGetLink($config,$name);
$response = $response->body;
if(!isset($response->url))
{
$shortener->redirect('/404');
die();
}
else if(isset($response->private))
{
$password = sha1(trim($shortener->request->post('password')));
$actualPassword = $response->password;
if($password === $actualPassword)
{
$shortener->redirect($response->url);
die();
}
else
{
$shortener->render('pass.php', array("url" => $config['DEPLOY_URL'].$name, "urlhome" => $config['DEPLOY_URL']));
die();
}
}
else
{
$shortener->redirect($response->url);
die();
}
});
$shortener->run();
?>