|
|
@@ -0,0 +1,98 @@
|
|
|
+<?php
|
|
|
+
|
|
|
+namespace App\Http\Controllers;
|
|
|
+
|
|
|
+use Illuminate\Http\Request;
|
|
|
+use App\Services\VpnManager;
|
|
|
+use Illuminate\Support\Facades\Validator;
|
|
|
+
|
|
|
+class VpnController extends Controller
|
|
|
+{
|
|
|
+ private $vpnManager;
|
|
|
+
|
|
|
+ public function __construct(VpnManager $vpnManager)
|
|
|
+ {
|
|
|
+ $this->vpnManager = $vpnManager;
|
|
|
+ }
|
|
|
+
|
|
|
+ public function showCredentialsForm()
|
|
|
+ {
|
|
|
+ $status = $this->vpnManager->getVpnStatus();
|
|
|
+ return view('vpn.credentials', compact('status'));
|
|
|
+ }
|
|
|
+
|
|
|
+ public function updateCredentials(Request $request)
|
|
|
+ {
|
|
|
+ $validator = Validator::make($request->all(), [
|
|
|
+ 'username' => 'required|string',
|
|
|
+ 'password' => 'required|string',
|
|
|
+ 'server' => 'required|string',
|
|
|
+ ]);
|
|
|
+
|
|
|
+ if ($validator->fails()) {
|
|
|
+ return redirect()->back()
|
|
|
+ ->withErrors($validator)
|
|
|
+ ->withInput();
|
|
|
+ }
|
|
|
+
|
|
|
+ $success = $this->vpnManager->updateCredentials(
|
|
|
+ $request->username,
|
|
|
+ $request->password,
|
|
|
+ $request->server
|
|
|
+ );
|
|
|
+
|
|
|
+ if ($success) {
|
|
|
+ return redirect()->back()->with('success', 'Credenziali VPN aggiornate con successo!');
|
|
|
+ } else {
|
|
|
+ return redirect()->back()->with('error', 'Errore nell\'aggiornamento delle credenziali VPN.');
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public function getStatus()
|
|
|
+ {
|
|
|
+ $status = $this->vpnManager->getVpnStatus();
|
|
|
+ $lastUpdate = $this->vpnManager->getLastUpdate();
|
|
|
+
|
|
|
+ return response()->json([
|
|
|
+ 'status' => $status,
|
|
|
+ 'last_update' => $lastUpdate
|
|
|
+ ]);
|
|
|
+ }
|
|
|
+
|
|
|
+ public function connect()
|
|
|
+ {
|
|
|
+ try {
|
|
|
+ $result = $this->vpnManager->connectVpn();
|
|
|
+
|
|
|
+ if ($result) {
|
|
|
+ return response()->json(['success' => true, 'message' => 'Connessione VPN avviata']);
|
|
|
+ } else {
|
|
|
+ return response()->json(['success' => false, 'message' => 'Errore nella connessione VPN']);
|
|
|
+ }
|
|
|
+ } catch (\Exception $e) {
|
|
|
+ return response()->json(['success' => false, 'message' => 'Errore: ' . $e->getMessage()]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public function disconnect()
|
|
|
+ {
|
|
|
+ try {
|
|
|
+ $result = $this->vpnManager->disconnectVpn();
|
|
|
+
|
|
|
+ if ($result) {
|
|
|
+ return response()->json(['success' => true, 'message' => 'Disconnessione VPN avviata']);
|
|
|
+ } else {
|
|
|
+ return response()->json(['success' => false, 'message' => 'Errore nella disconnessione VPN']);
|
|
|
+ }
|
|
|
+ } catch (\Exception $e) {
|
|
|
+ return response()->json(['success' => false, 'message' => 'Errore: ' . $e->getMessage()]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public function showManagementPage()
|
|
|
+ {
|
|
|
+ $status = $this->vpnManager->getVpnStatus();
|
|
|
+ $lastUpdate = $this->vpnManager->getLastUpdate();
|
|
|
+ return view('vpn.management', compact('status', 'lastUpdate'));
|
|
|
+ }
|
|
|
+}
|