configPath, $configContent); // Imposta i permessi corretti (solo per sistemi Unix/Linux) $fullPath = storage_path('app/' . $this->configPath); chmod($fullPath, 0600); Log::info('Credenziali VPN aggiornate con successo'); return true; } catch (\Exception $e) { Log::error('Errore nell\'aggiornamento delle credenziali VPN: ' . $e->getMessage()); return false; } } public function getVpnStatus() { try { $status = DB::table('vpn_status')->first(); return $status ? $status->status : 'unknown'; } catch (\Exception $e) { Log::error('Errore nel recupero dello stato VPN: ' . $e->getMessage()); return 'error'; } } public function getLastUpdate() { try { $status = DB::table('vpn_status')->first(); return $status ? $status->last_update : null; } catch (\Exception $e) { Log::error('Errore nel recupero dell\'ultimo aggiornamento VPN: ' . $e->getMessage()); return null; } } public function connectVpn() { try { $scriptPath = storage_path('app/' . $this->scriptPath); if (!file_exists($scriptPath)) { Log::error('Script VPN non trovato: ' . $scriptPath); return false; } // Esegue lo script in background $command = "bash {$scriptPath} > /dev/null 2>&1 &"; exec($command, $output, $returnVar); Log::info('Comando VPN connect eseguito', [ 'command' => $command, 'return_var' => $returnVar ]); return true; } catch (\Exception $e) { Log::error('Errore nell\'esecuzione del comando VPN connect: ' . $e->getMessage()); return false; } } public function disconnectVpn() { try { // Comando per disconnettere VPN Cisco AnyConnect $command = "/opt/cisco/anyconnect/bin/vpn disconnect > /dev/null 2>&1 &"; exec($command, $output, $returnVar); // Aggiorna lo stato nel database DB::table('vpn_status')->updateOrInsert( ['id' => 1], [ 'status' => 'disconnected', 'last_update' => now(), 'updated_at' => now(), ] ); Log::info('Comando VPN disconnect eseguito', [ 'command' => $command, 'return_var' => $returnVar ]); return true; } catch (\Exception $e) { Log::error('Errore nell\'esecuzione del comando VPN disconnect: ' . $e->getMessage()); return false; } } public function makeScriptExecutable() { try { $fullPath = storage_path('app/' . $this->scriptPath); chmod($fullPath, 0755); return true; } catch (\Exception $e) { Log::error('Errore nell\'impostazione dei permessi script: ' . $e->getMessage()); return false; } } }