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
|
<?php namespace HashOver;
// Copyright (C) 2018 Jacob Barkdull
// This file is part of HashOver.
//
// HashOver is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// HashOver is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with HashOver. If not, see <http://www.gnu.org/licenses/>.
try {
// View setup
require (realpath ('../view-setup.php'));
// Default blocklist array
$blocklist = array ();
// Blocklist JSON file location
$blocklist_file = $hashover->setup->getAbsolutePath ('config/blocklist.json');
// Check if the form has been submitted
if (!empty ($_POST['addresses']) and is_array ($_POST['addresses'])) {
// If so, run through submitted addresses
foreach ($_POST['addresses'] as $address) {
// Add each non-empty address value to the blocklist array
if (!empty ($address)) {
$blocklist[] = $address;
}
}
// Save the JSON data to the blocklist file
if ($hashover->setup->verifyAdmin ($hashover->login->password)
and $data_files->saveJSON ($blocklist_file, $blocklist))
{
// Redirect with success indicator
header ('Location: index.php?status=success');
} else {
// Redirect with failure indicator
header ('Location: index.php?status=failure');
}
// Exit after redirect
exit;
}
// Otherwise, load and parse blocklist file
$json = $data_files->readJSON ($blocklist_file);
// Check for JSON parse error
if (is_array ($json)) {
$blocklist = $json;
}
// IP Address inputs
$inputs = new HTMLTag ('span');
// Create IP address inputs
for ($i = 0, $il = max (3, count ($blocklist)); $i < $il; $i++) {
// Use IP address from file or blank
$address = !empty ($blocklist[$i]) ? $blocklist[$i] : '';
// Create input tag
$input = new HTMLTag ('input', array (
'class' => 'addresses',
'type' => 'text',
'name' => 'addresses[]',
'value' => $address,
'size' => '15',
'maxlength' => '15',
'placeholder' => '127.0.0.1',
'title' => $hashover->locale->text['blocklist-ip-tip']
), false, true);
// Add input to inputs container
$inputs->appendChild ($input);
}
// Template data
$template = array (
'title' => $hashover->locale->text['blocklist-title'],
'logout' => $logout->asHTML ("\t\t\t"),
'sub-title' => $hashover->locale->text['blocklist-sub'],
'message' => $form_message,
'inputs' => $inputs->getInnerHTML ("\t\t\t\t"),
'save-button' => $hashover->locale->text['save']
);
// Load and parse HTML template
echo $hashover->templater->parseTemplate ('blocklist.html', $template);
} catch (\Exception $error) {
$misc = new Misc ('php');
$message = $error->getMessage ();
$misc->displayError ($message);
}
|