]> git.donarmstrong.com Git - roundcube.git/blobdiff - plugins/password/drivers/virtualmin.php
Imported Upstream version 0.5.2+dfsg
[roundcube.git] / plugins / password / drivers / virtualmin.php
index 96200d61c1cc7cbcf8193253335ce4f50e40fe23..78ef4e7c3861bc496b907223ce59fd507fd67c96 100644 (file)
  * It only works with virtualmin on the same host where Roundcube runs
  * and requires shell access and gcc in order to compile the binary.
  *
- * @version 1.0
+ * @version 2.0
  * @author Martijn de Munnik
  */
 
 function password_save($currpass, $newpass)
 {
-    $curdir = realpath(dirname(__FILE__));
-    $username = escapeshellcmd($_SESSION['username']);
-    $domain = substr(strrchr($username, "@"), 1);
+    $rcmail = rcmail::get_instance();
+
+    $format   = $rcmail->config->get('password_virtualmin_format', 0);
+    $username = $_SESSION['username'];
+
+    switch ($format) {
+        case 1: // username%domain
+            $domain = substr(strrchr($username, "%"), 1);
+            break;
+        case 2: // username.domain (could be bogus)
+            $pieces = explode(".", $username);
+            $domain = $pieces[count($pieces)-2]. "." . end($pieces);
+            break;
+        case 3: // domain.username (could be bogus)
+            $pieces = explode(".", $username);
+            $domain = $pieces[0]. "." . $pieces[1];
+            break;
+        case 4: // username-domain
+            $domain = substr(strrchr($username, "-"), 1);
+            break;
+        case 5: // domain-username
+            $domain = str_replace(strrchr($username, "-"), "", $username);
+            break;
+        case 6: // username_domain
+            $domain = substr(strrchr($username, "_"), 1);
+            break;
+        case 7: // domain_username
+            $pieces = explode("_", $username);
+            $domain = $pieces[0];
+            break;
+        default: // username@domain
+            $domain = substr(strrchr($username, "@"), 1);
+    }
+                                                                                                                                                                                                                                                                                                            
+    $username = escapeshellcmd($username);
+    $domain   = escapeshellcmd($domain);
+    $newpass  = escapeshellcmd($newpass);
+    $curdir   = realpath(dirname(__FILE__));
 
     exec("$curdir/chgvirtualminpasswd modify-user --domain $domain --user $username --pass $newpass", $output, $returnvalue);