VpnController.php 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. <?php
  2. namespace App\Http\Controllers;
  3. use Illuminate\Http\Request;
  4. use App\Services\VpnManager;
  5. use Illuminate\Support\Facades\Validator;
  6. class VpnController extends Controller
  7. {
  8. private $vpnManager;
  9. public function __construct(VpnManager $vpnManager)
  10. {
  11. $this->vpnManager = $vpnManager;
  12. }
  13. public function showCredentialsForm()
  14. {
  15. $status = $this->vpnManager->getVpnStatus();
  16. return view('vpn.credentials', compact('status'));
  17. }
  18. public function updateCredentials(Request $request)
  19. {
  20. $validator = Validator::make($request->all(), [
  21. 'username' => 'required|string',
  22. 'password' => 'required|string',
  23. 'server' => 'required|string',
  24. ]);
  25. if ($validator->fails()) {
  26. return redirect()->back()
  27. ->withErrors($validator)
  28. ->withInput();
  29. }
  30. $success = $this->vpnManager->updateCredentials(
  31. $request->username,
  32. $request->password,
  33. $request->server
  34. );
  35. if ($success) {
  36. return redirect()->back()->with('success', 'Credenziali VPN aggiornate con successo!');
  37. } else {
  38. return redirect()->back()->with('error', 'Errore nell\'aggiornamento delle credenziali VPN.');
  39. }
  40. }
  41. public function getStatus()
  42. {
  43. $status = $this->vpnManager->getVpnStatus();
  44. $lastUpdate = $this->vpnManager->getLastUpdate();
  45. return response()->json([
  46. 'status' => $status,
  47. 'last_update' => $lastUpdate
  48. ]);
  49. }
  50. public function connect()
  51. {
  52. try {
  53. $result = $this->vpnManager->connectVpn();
  54. if ($result) {
  55. return response()->json(['success' => true, 'message' => 'Connessione VPN avviata']);
  56. } else {
  57. return response()->json(['success' => false, 'message' => 'Errore nella connessione VPN']);
  58. }
  59. } catch (\Exception $e) {
  60. return response()->json(['success' => false, 'message' => 'Errore: ' . $e->getMessage()]);
  61. }
  62. }
  63. public function disconnect()
  64. {
  65. try {
  66. $result = $this->vpnManager->disconnectVpn();
  67. if ($result) {
  68. return response()->json(['success' => true, 'message' => 'Disconnessione VPN avviata']);
  69. } else {
  70. return response()->json(['success' => false, 'message' => 'Errore nella disconnessione VPN']);
  71. }
  72. } catch (\Exception $e) {
  73. return response()->json(['success' => false, 'message' => 'Errore: ' . $e->getMessage()]);
  74. }
  75. }
  76. public function showManagementPage()
  77. {
  78. $status = $this->vpnManager->getVpnStatus();
  79. $lastUpdate = $this->vpnManager->getLastUpdate();
  80. return view('vpn.management', compact('status', 'lastUpdate'));
  81. }
  82. }