-
Notifications
You must be signed in to change notification settings - Fork 3
/
dedicado.php
290 lines (258 loc) · 10.6 KB
/
dedicado.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
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
<?php
use WHMCS\Database\Capsule;
if(!defined('WHMCS')){
die('This file cannot be accessed directly');
}
function dedicado_MetaData(){
return array(
'DisplayName' => 'Servidor Dedicado Manual',
'APIVersion' => '1.1',
'RequiresServer' => false
);
}
function dedicado_ConfigOptions(){
return [
"librenms" => [
"FriendlyName" => "Hostname do LibreNMS",
"Type" => "text",
"Description" => "Hostname completo da sua instalação do LibreNMS",
"Default" => "mylibrenms.mydomain.com"
],
];
}
function dedicado_CreateTodoItem($params){
$pdo = Capsule::connection()->getPdo();
$date = $params['date'];
$title = $params['title'];
$description = $params['description'];
$status = $params['status'];
$duedate = $params['duedate'];
$sql = $pdo->query('INSERT INTO tbltodolist (date, title, description, status, duedate) VALUES ("'.$date.'", "'.$title.'", "'.$description.'", "'.$status.'", "'.$duedate.'")');
if($sql){
$response = [
'success' => true
];
}else{
$response = [
'success' => false,
'error' => $sql->errorInfo()
];
}
return $response;
}
function dedicado_CreateAccount($params){
// Create TodoItem
dedicado_CreateTodoItem([
'date' => date('Y-m-d'),
'title' => 'Instalação de Servidor Dedicado - Client ID: '.$params['clientsdetails']['userid'].' - Service ID: '.$params['serviceid'],
'description' => '',
'status' => 'Pendente',
'duedate' => date('Y-m-d')
]);
// Create Ticket
$command = 'OpenTicket';
$postData = array(
'deptid' => '3',
'subject' => 'Instalação de Servidor Dedicado',
'message' => 'Olá '.$params['clientsdetails']['firstname'].'!
Este ticket foi aberto automaticamente pelo sistema e será utilizado para instalação de seu servidor dedicado.
Em breve nossa equipe irá entrar em contato com você por meio dele, e caso deseje adicionar alguma informação basta responde-lo.',
'clientid' => $params['clientsdetails']['userid'],
'priority' => 'Medium',
'serviceid' => $params['serviceid'],
'markdown' => false,
'admin' => true,
'responsetype' => 'json',
);
localAPI($command, $postData, $adminUsername);
// Return status
return 'Criação manual';
}
function dedicado_SuspendAccount($params){
// Create TodoItem
dedicado_CreateTodoItem([
'date' => date('Y-m-d'),
'title' => 'Suspensão de Servidor Dedicado - Client ID: '.$params['clientsdetails']['userid'].' - Service ID: '.$params['serviceid'],
'description' => '',
'status' => 'Pendente',
'duedate' => date('Y-m-d')
]);
// Create Ticket
$command = 'OpenTicket';
$postData = array(
'deptid' => '3',
'subject' => 'Suspensão de Servidor Dedicado',
'message' => 'Olá '.$params['clientsdetails']['firstname'].'!
Este ticket foi aberto automaticamente pelo sistema pois seu servidor dedicado será suspenso.
Em breve nossa equipe irá entrar em contato com você por meio dele, e caso deseje adicionar alguma informação basta responde-lo.',
'clientid' => $params['clientsdetails']['userid'],
'priority' => 'Medium',
'serviceid' => $params['serviceid'],
'markdown' => false,
'admin' => true,
'responsetype' => 'json',
);
localAPI($command, $postData, $adminUsername);
// Return status
return 'Suspensão manual';
}
function dedicado_TerminateAccount($params){
// Create TodoItem
dedicado_CreateTodoItem([
'date' => date('Y-m-d'),
'title' => 'Cancelamento de Servidor Dedicado - Client ID: '.$params['clientsdetails']['userid'].' - Service ID: '.$params['serviceid'],
'description' => '',
'status' => 'Pendente',
'duedate' => date('Y-m-d')
]);
// Create Ticket
$command = 'OpenTicket';
$postData = array(
'deptid' => '3',
'subject' => 'Cancelamento de Servidor Dedicado',
'message' => 'Olá '.$params['clientsdetails']['firstname'].'!
Este ticket foi aberto automaticamente pelo sistema pois seu servidor dedicado será cancelado.
Em breve nossa equipe irá entrar em contato com você por meio dele, e caso deseje adicionar alguma informação basta responde-lo.',
'clientid' => $params['clientsdetails']['userid'],
'priority' => 'Medium',
'serviceid' => $params['serviceid'],
'markdown' => false,
'admin' => true,
'responsetype' => 'json',
);
localAPI($command, $postData, $adminUsername);
// Return status
return 'Finalização manual';
}
function dedicado_UnsuspendAccount($params){
// Create TodoItem
dedicado_CreateTodoItem([
'date' => date('Y-m-d'),
'title' => 'Remover suspensão de Servidor Dedicado - Client ID: '.$params['clientsdetails']['userid'].' - Service ID: '.$params['serviceid'],
'description' => '',
'status' => 'Pendente',
'duedate' => date('Y-m-d')
]);
// Return status
return 'Remoção de suspensão manual';
}
function dedicado_HTML($params){
if(!empty($params['customfields']['ipmiip'])){
$url = 'https://'.$params['customfields']['ipmiuser'].':'.$params['customfields']['ipmipass'].'@'.$params['customfields']['ipmiip'].'/redfish/v1/Systems/1/';
$saida = file_get_contents($url, false, stream_context_create(array('ssl' => array('verify_peer' => false, 'verify_peer_name' => false,), 'http' => array('timeout' => 2,))));
$var = json_decode($saida);
}
if($var->PowerState=="On"){
$estado = '<b style="color:#2ab551"><i class="fas fa-power-off"></i> Ligado</b>';
$botao = 'Desligar';
}elseif($var->PowerState=="Off"){
$estado = '<b style="color:#fa0000"><i class="fas fa-power-off"></i> Desligado</b>';
$botao = 'Ligar';
}else{
$estado = '<b style="color:#737373"><i class="fas fa-question-circle"></i> Desconhecido</b>';
$botao = 'Desconhecido';
}
if(!empty($params['customfields']['librenmsid'])){
$imagem = file_get_contents('http://'.$params["configoption1"].'/graph.php?height=250&width=600&id='.$params['customfields']['librenmsid'].'&type=port_bits&inverse=1');
$base64 = base64_encode($imagem);
$processador=str_replace("(R)", "", $var->ProcessorSummary->Model);
$processador=str_replace("CPU", "", $processador);
$processador=str_replace("Intel", "", $processador);
$criarHTML = '
<center>
<div style="background-color: #fdfdfd;border-style: solid; border-width: 1px; border-color: #d9d9d9; border-radius: 5px;margin:5px 0 10px 0;">
<h3 style="margin:15px 10px 10px 10px;">Controle de Energia</h3>
<p style="margin:5px 10px 10px 10px;">Estado atual: '.$estado.'</p>
<button style="color: #3b3b3b;border-style: solid; border-width: 1px; border-color: #c9c9c9; border-radius: 3px; line-height: 35px;margin:5px 5px 15px 0; word-spacing: 3px;" onclick="liga()"><i class="fas fa-play"></i> Ligar</button>
<button style="color: #3b3b3b;border-style: solid; border-width: 1px; border-color: #c9c9c9; border-radius: 3px; line-height: 35px;margin:5px 5px 15px 0; word-spacing: 3px;" onclick="desliga()"><i class="fas fa-stop"></i> Desligar</button>
<button style="color: #3b3b3b;border-style: solid; border-width: 1px; border-color: #c9c9c9; border-radius: 3px; line-height: 35px;margin:5px 5px 15px 0; word-spacing: 3px;" onclick="reinicia()"><i class="fas fa-sync-alt"></i> Reiniciar</button>
</div><div style="background-color: #fdfdfd;border-style: solid; border-width: 1px; border-color: #d9d9d9; border-radius: 5px;margin:5px 0 10px 0;">
<h3 style="margin:15px 10px 10px 10px;">Informações de Hardware</h3>
<p style="margin:5px 10px 0px 10px;"><b>Processador:</b> '.$processador.'</p>
<p style="margin:0px 10px 0px 10px;"><b>Memória Instalada:</b> '.$var->Memory->TotalSystemMemoryGB.' GB</p>
<p style="margin:0px 10px 10px 10px;"><b>Status do servidor:</b> '.$var->Status->Health.'</p>
<!--<p style="margin:0px 10px 10px 10px;"><b>Estado atual:</b> '.$var->Status->State.'</p>-->
</div>
<div style="background-color: #fdfdfd ;border-style: solid; border-width: 1px; border-color: #d9d9d9; border-radius: 5px;margin:5px 0 10px 0;">
<h3 style="margin:15px 10px 10px 10px;">Monitoramento de rede (últimas 24 horas)</h3>
<img style="max-width: 100%;margin:5px 5px 15px 0;" src="data:image/png;base64,'.$base64.'" alt="" />
</div>
</center>
<script>
function desliga(){
var alertConfirm = confirm("Você tem certeza que deseja desligar o servidor?\nEste é um desligamento forçado!");
if(alertConfirm){
window.location = location.protocol + "//" + location.host + location.pathname + "?action=productdetails&id='.$params['serviceid'].'&modop=custom&a=stop";
}
}
function reinicia(){
var alertConfirm2 = confirm("Você tem certeza que deseja reiniciar o servidor?\nEsta é uma reinicialização forçada!");
if(alertConfirm2){
window.location = location.protocol + "//" + location.host + location.pathname + "?action=productdetails&id='.$params['serviceid'].'&modop=custom&a=reboot";
}
}
function liga(){
var alertConfirm3 = confirm("Você tem certeza que deseja ligar o servidor?");
if(alertConfirm3){
window.location = location.protocol + "//" + location.host + location.pathname + "?action=productdetails&id='.$params['serviceid'].'&modop=custom&a=start";
}
}
</script>
';
}
return $criarHTML;
}
function dedicado_ClientArea($params){
return dedicado_HTML($params);
}
function dedicado_AdminServicesTabFields($params){
$fieldsarray = array(
'Graph' => '<div style="width:100%" id="tab1"></div>'.dedicado_HTML($params),
);
return $fieldsarray;
}
function dedicado_AdminCustomButtonArray(){
return array(
"Ligar" => "start",
"Desligar" => "stop",
"Reiniciar"=> "reboot"
);
}
function dedicado_ClientAreaCustomButtonArray(){
return array(
"Ligar" => "start",
"Desligar" => "stop",
"Reiniciar"=> "reboot"
);
}
function dedicado_energia($params,$action){
$url = 'https://'.$params['customfields']['ipmiuser'].':'.$params['customfields']['ipmipass'].'@'.$params['customfields']['ipmiip'].'/redfish/v1/Systems/1/Actions/ComputerSystem.Reset/';
$ch = curl_init($url);
$jsonData = array(
'Action' => 'Reset',
'ResetType' => $action
);
$jsonDataEncoded = json_encode($jsonData);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonDataEncoded);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($ch, CURLOPT_TIMEOUT, 5);
$result = curl_exec($ch);
}
function dedicado_start($params){
dedicado_energia($params,'On');
return success;
}
function dedicado_stop($params){
dedicado_energia($params,'ForceOff');
return success;
}
function dedicado_reboot($params){
dedicado_energia($params,'ForceRestart');
return success;
}
?>