public function genMyVpnKeys() { $result = $this->getMyAttributes(array("cn", "mail")); $this->loggerObj->log("Regenerating VPN Credentials for {$this->username}"); $zip = new ZipArchive(); $zipFilename = "{$this->username}.vpn.credentials.zip"; $status = $zip->open($zipFilename, ZipArchive::OVERWRITE); if ($status !== TRUE) { throw new Exception("Cannot create Zip File"); } list($cert, $pub, $priv) = generateSslKeypair($result["cn"][0], $result["mail"][0], 2048); $zip->addFromString("client.key", $priv); $zip->addFromString("client.crt", $cert); $status = $zip->close(); $updateStatus = $this->updateMyProperty("VPN", $pub); if (!$updateStatus) { unlink($zipFilename); throw new Exception("Error occured during LDAP Update. Please try again Later!"); } $this->loggerObj->log("VPN Credentials for {$this->username} have been reset successfully"); return $zipFilename; }
private function genUserVpnKeys($vpnProperty, $vpnFolder) { $tmpPath = getConfig("tmpPath"); $result = $this->getMyAttributes(array("cn", "sAMAccountName")); $this->loggerObj->log("Regenerating VPN Credentials for {$this->username}"); $zip = new ZipArchive(); $zipFilename = "{$tmpPath}/{$this->username}.{$vpnProperty}.credentials.zip"; $status = $zip->open("{$zipFilename}", ZipArchive::OVERWRITE); if ($status !== TRUE) { throw new Exception("Cannot create Zip File"); } $commonName = $result["sAMAccountName"][0]; list($cert, $priv) = generateSslKeypair($commonName, intval(getConfig("vpnKeyLength"))); // If vpn targets are configured, put the client key and cert in each target $vpnTargets = getConfig("vpnTargets"); if ($vpnTargets == NULL) { $zip->addFromString("client.key", $priv); $zip->addFromString("client.crt", $cert); } else { foreach ($vpnTargets as $target) { $zip->addFromString("{$target}/client.key", $priv); $zip->addFromString("{$target}/client.crt", $cert); } } // Try to add the source vpn files if (file_exists($vpnFolder)) { zipFolder($zip, $vpnFolder); } else { throw new Exception("VPN Container is Not Found. Kindly contact the server administrator!"); } // Compress and save the files $status = $zip->close(); if ($status !== TRUE) { throw new Exception("Cannot create Zip File"); } $updateStatus = $this->updateMyProperty($vpnProperty, $cert); if ($updateStatus !== TRUE) { unlink($zipFilename); throw new Exception("Error occured during LDAP Update: {$updateStatus}. Please try again Later!"); } $this->loggerObj->log("VPN Credentials for {$this->username} have been reset successfully"); return $zipFilename; }