forked from hestiacp/hestiacp
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathhelpers.php
More file actions
135 lines (121 loc) · 3.82 KB
/
helpers.php
File metadata and controls
135 lines (121 loc) · 3.82 KB
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
<?php
# Return codes
const E_ARGS = 1;
const E_INVALID = 2;
const E_NOTEXIST = 3;
const E_EXISTS = 4;
const E_SUSPENDED = 5;
const E_UNSUSPENDED = 6;
const E_INUSE = 7;
const E_LIMIT = 8;
const E_PASSWORD = 9;
const E_FORBIDEN = 10;
const E_FORBIDDEN = 10;
const E_DISABLED = 11;
const E_PARSING = 12;
const E_DISK = 13;
const E_LA = 14;
const E_CONNECT = 15;
const E_FTP = 16;
const E_DB = 17;
const E_RRD = 18;
const E_UPDATE = 19;
const E_RESTART = 20;
/**
* Looks for a code equivalent to "exit_code" to use in http_code.
*
* @param int $exit_code
* @param int $default
* @return int
*/
function exit_code_to_http_code(
int $exit_code,
int $default = 400
// int $default = 500
): int {
switch ($exit_code) {
case 0:
return 200;
case E_ARGS:
// return 500;
return 400;
case E_INVALID:
return 422;
// case E_NOTEXIST:
// return 404;
// case E_EXISTS:
// return 302;
case E_PASSWORD:
return 401;
case E_SUSPENDED:
case E_UNSUSPENDED:
case E_FORBIDEN:
case E_FORBIDDEN:
return 401;
// return 403;
case E_DISABLED:
return 400;
// return 503;
}
return $default;
}
function check_local_ip($addr) {
if (in_array($addr, array($_SERVER['SERVER_ADDR'], '127.0.0.1'))) {
return true;
} else {
return false;
}
}
function get_real_user_ip() {
$ip = $_SERVER['REMOTE_ADDR'];
if (isset($_SERVER['HTTP_CLIENT_IP']) && !check_local_ip($_SERVER['HTTP_CLIENT_IP'])) {
if (filter_var($_SERVER['HTTP_CLIENT_IP'], FILTER_VALIDATE_IP)) {
$ip = $_SERVER['HTTP_CLIENT_IP'];
}
}
if (isset($_SERVER['HTTP_X_FORWARDED_FOR']) && !check_local_ip($_SERVER['HTTP_X_FORWARDED_FOR'])) {
if (filter_var($_SERVER['HTTP_X_FORWARDED_FOR'], FILTER_VALIDATE_IP)) {
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
}
}
if (isset($_SERVER['HTTP_FORWARDED_FOR']) && !check_local_ip($_SERVER['HTTP_FORWARDED_FOR'])) {
if (filter_var($_SERVER['HTTP_FORWARDED_FOR'], FILTER_VALIDATE_IP)) {
$ip = $_SERVER['HTTP_FORWARDED_FOR'];
}
}
if (isset($_SERVER['HTTP_X_FORWARDED']) && !check_local_ip($_SERVER['HTTP_X_FORWARDED'])) {
if (filter_var($_SERVER['HTTP_X_FORWARDED'], FILTER_VALIDATE_IP)) {
$ip = $_SERVER['HTTP_X_FORWARDED'];
}
}
if (isset($_SERVER['HTTP_FORWARDED']) && !check_local_ip($_SERVER['HTTP_FORWARDED'])) {
if (filter_var($_SERVER['HTTP_FORWARDED'], FILTER_VALIDATE_IP)) {
$ip = $_SERVER['HTTP_FORWARDED'];
}
}
if (isset($_SERVER['HTTP_CF_CONNECTING_IP']) && !check_local_ip($_SERVER['HTTP_CF_CONNECTING_IP'])) {
if (filter_var($_SERVER['HTTP_CF_CONNECTING_IP'], FILTER_VALIDATE_IP)) {
$ip = $_SERVER['HTTP_CF_CONNECTING_IP'];
}
}
return $ip;
}
/**
* Create a history log using 'v-log-action' script.
*
* @param string $message The message for log.
* @param string $category A category for log. Ex: Auth, Firewall, API...
* @param string $level Info|Warning|Error.
* @param string $user A username for save in the user history ou 'system' to save in Hestia history.
* @return int The script result code.
*/
function hst_add_history_log($message, $category = 'System', $level = 'Info', $user = 'system') {
//$message = ucfirst($message);
//$message = str_replace("'", "`", $message);
$category = ucfirst(strtolower($category));
$level = ucfirst(strtolower($level));
$command_args = escapeshellarg($user).' '.escapeshellarg($level).' '.escapeshellarg($category).' '.escapeshellarg($message);
exec(HESTIA_CMD."v-log-action ".$command_args, $output, $return_var);
unset($output);
return $return_var;
}