Create FTP - Account when creating domain

diff -ruN vhcs2.orig/engine/vhcs2_common_code.pl vhcs2/engine/vhcs2_common_code.pl
--- vhcs2.orig/engine/vhcs2_common_code.pl	2006-05-16 16:37:11.000000000 +0500
+++ vhcs2/engine/vhcs2_common_code.pl	2006-05-17 21:07:26.000000000 +0500
@@ -1783,7 +1783,7 @@
     
     my $sys_group = "$suexec_user_pref$sys_gid";
     
-    my ($dmn_uid, $dmn_gid) = (@$dmn_data[3], @$dmn_data[2]);
+    my ($dmn_id, $dmn_name, $dmn_gid, $dmn_uid) = @$dmn_data;
     
     my $dmn_id = @$dmn_data[0];
     
@@ -1816,7 +1816,19 @@
         ($rs, $rdata) = doSQL($sql);
     
         return $rs if ($rs != 0);
-        
+
+        $sql = "update ftp_users set uid='$sys_uid', gid='$sys_gid' where userid='$dmn_name' and gid=0";
+
+        ($rs, $rdata) = doSQL($sql);
+    
+        return $rs if ($rs != 0);
+
+        $sql = "update ftp_group set gid='$sys_gid' where groupname='$dmn_name' and gid=0";
+
+        ($rs, $rdata) = doSQL($sql);
+    
+        return $rs if ($rs != 0);
+
     }
     
     push_el(\@main::el, 'add_dmn_suexec_user()', 'Ending...');
diff -ruN vhcs2.orig/gui/client/add_ftp_acc.php vhcs2/gui/client/add_ftp_acc.php
--- vhcs2.orig/gui/client/add_ftp_acc.php	2006-05-16 16:37:11.000000000 +0500
+++ vhcs2/gui/client/add_ftp_acc.php	2006-05-17 19:28:39.000000000 +0500
@@ -204,146 +204,6 @@
   }
 }
 
-function get_ftp_user_gid(&$sql, $dmn_name, $ftp_user)
-{
-  global $cfg;
-  global $last_gid;
-  global $max_gid;
-
-  $query = <<<SQL_QUERY
-          select gid, members from ftp_group where groupname = ?
-SQL_QUERY;
-
-  $rs = exec_query($sql, $query, array($dmn_name));
-
-  if ($rs -> RecordCount() == 0) { // there is no such group. we'll need a new one.
-    list($temp_dmn_id,
-         $temp_dmn_name,
-         $temp_dmn_gid,
-         $temp_dmn_uid,
-         $temp_dmn_created_id,
-         $temp_dmn_created,
-         $temp_dmn_last_modified,
-         $temp_dmn_mailacc_limit,
-         $temp_dmn_ftpacc_limit,
-         $temp_dmn_traff_limit,
-         $temp_dmn_sqld_limit,
-         $temp_dmn_sqlu_limit,
-         $temp_dmn_status,
-         $temp_dmn_als_limit,
-         $temp_dmn_subd_limit,
-         $temp_dmn_ip_id,
-         $temp_dmn_disk_limit,
-         $temp_dmn_disk_usage,
-         $temp_dmn_php,
-         $temp_dmn_cgi) = get_domain_default_props($sql, $_SESSION['user_id']);
-
-
-    $query = <<<SQL_QUERY
-              insert into ftp_group
-                 (groupname, gid, members)
-              values
-                 (?, ?, ?)
-SQL_QUERY;
-
-    $rs = exec_query($sql, $query, array($dmn_name, $temp_dmn_gid, $ftp_user));
-
-    // add entries in the quota tables
-    // first check if we have it by one or other reason
-    $query = "SELECT count(name) as cnt from quotalimits where name=?";
-    $rs = exec_query($sql, $query, array($temp_dmn_name));
-    if ($rs -> fields['cnt'] == 0 ) {
-      // ok insert it
-      if ($temp_dmn_disk_limit == 0)  {
-        $dlim = 0;
-      }
-      else {
-        $dlim = $temp_dmn_disk_limit*1024*1024;
-      }
-
-      $query = <<<SQL_QUERY
-              INSERT INTO quotalimits
-                (name, quota_type, per_session, limit_type, bytes_in_avail, bytes_out_avail, bytes_xfer_avail, files_in_avail, files_out_avail, files_xfer_avail)
-              VALUES
-                (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
-SQL_QUERY;
-
-      $rs = exec_query($sql, $query, array($temp_dmn_name, 'group', 'false', 'hard', $dlim, 0, 0, 0, 0, 0));
-    }
-
-    return $temp_dmn_gid;
-
-  } else {
-
-    $ftp_gid = $rs -> fields['gid'];
-    $members = $rs -> fields['members'];
-
-    if (preg_match("/".$ftp_user."/", $members) == 0) {
-      $members .= ",$ftp_user";
-    }
-
-    $query = <<<SQL_QUERY
-            update
-                ftp_group
-            set
-                members = ?
-            where
-                gid = ?
-            and
-                groupname = ?
-SQL_QUERY;
-
-    $rs = exec_query($sql, $query, array($members, $ftp_gid, $dmn_name));
-    return $ftp_gid;
-  }
-}
-
-function get_ftp_user_uid(&$sql, $dmn_name, $ftp_user, $ftp_user_gid)
-{
-  global $cfg;
-  global $max_uid;
-
-  $query = <<<SQL_QUERY
-          select
-            uid
-          from
-            ftp_users
-          where
-            userid = ?
-          and
-            gid = ?
-SQL_QUERY;
-
-  $rs = exec_query($sql, $query, array($ftp_user, $ftp_user_gid));
-  if ($rs -> RecordCount() > 0) {
-    set_page_message(tr('FTP account already exists!'));
-    return -1;
-  }
-
-  list($temp_dmn_id,
-       $temp_dmn_name,
-       $temp_dmn_gid,
-       $temp_dmn_uid,
-       $temp_dmn_created_id,
-       $temp_dmn_created,
-       $temp_dmn_last_modified,
-       $temp_dmn_mailacc_limit,
-       $temp_dmn_ftpacc_limit,
-       $temp_dmn_traff_limit,
-       $temp_dmn_sqld_limit,
-       $temp_dmn_sqlu_limit,
-       $temp_dmn_status,
-       $temp_dmn_als_limit,
-       $temp_dmn_subd_limit,
-       $temp_dmn_ip_id,
-       $temp_dmn_disk_limit,
-       $temp_dmn_disk_usage,
-       $temp_dmn_php,
-       $temp_dmn_cgi) = get_domain_default_props($sql, $_SESSION['user_id']);
-
-  return $temp_dmn_uid;
-}
-
 function add_ftp_user(&$sql, $dmn_name)
 {
   global $cfg;
diff -ruN vhcs2.orig/gui/include/client-functions.php vhcs2/gui/include/client-functions.php
--- vhcs2.orig/gui/include/client-functions.php	2006-05-16 16:37:11.000000000 +0500
+++ vhcs2/gui/include/client-functions.php	2006-05-17 19:44:46.000000000 +0500
@@ -15,8 +15,6 @@
 //  |                                                                               |
 //   -------------------------------------------------------------------------------
 
-
-
 function get_domain_default_props(&$sql, $domain_admin_id)
 {
     $query = <<<SQL_QUERY
@@ -72,6 +70,61 @@
 
 }
 
+function get_domain_default_props_by_name(&$sql, $domain_name)
+{
+    $query = <<<SQL_QUERY
+        select
+            domain_id,
+            domain_name,
+            domain_gid,
+            domain_uid,
+            domain_created_id,
+            domain_created,
+            domain_last_modified,
+            domain_mailacc_limit,
+            domain_ftpacc_limit,
+            domain_traffic_limit,
+            domain_sqld_limit,
+            domain_sqlu_limit,
+            domain_status,
+            domain_alias_limit,
+            domain_subd_limit,
+            domain_ip_id,
+            domain_disk_limit,
+            domain_disk_usage,
+            domain_php,
+            domain_cgi
+        from
+            domain
+        where
+            domain_name = ?
+SQL_QUERY;
+
+    $rs = exec_query($sql, $query, array($domain_name));
+
+    return array($rs -> fields['domain_id'],
+                 $rs -> fields['domain_name'],
+                 $rs -> fields['domain_gid'],
+                 $rs -> fields['domain_uid'],
+                 $rs -> fields['domain_created_id'],
+                 $rs -> fields['domain_created'],
+                 $rs -> fields['domain_last_modified'],
+                 $rs -> fields['domain_mailacc_limit'],
+                 $rs -> fields['domain_ftpacc_limit'],
+                 $rs -> fields['domain_traffic_limit'],
+                 $rs -> fields['domain_sqld_limit'],
+                 $rs -> fields['domain_sqlu_limit'],
+                 $rs -> fields['domain_status'],
+                 $rs -> fields['domain_alias_limit'],
+                 $rs -> fields['domain_subd_limit'],
+                 $rs -> fields['domain_ip_id'],
+                 $rs -> fields['domain_disk_limit'],
+                 $rs -> fields['domain_disk_usage'],
+                 $rs -> fields['domain_php'],
+                 $rs -> fields['domain_cgi']);
+
+}
+
 
 function get_domain_running_sub_cnt(&$sql, $domain_id) {
     $query = <<<SQL_QUERY
@@ -1031,4 +1084,127 @@
 
 }
 
+
+function get_ftp_user_gid(&$sql, $dmn_name, $ftp_user)
+{
+  global $cfg;
+  global $last_gid;
+  global $max_gid;
+
+  $query = <<<SQL_QUERY
+          select gid, members from ftp_group where groupname = ?
+SQL_QUERY;
+
+  $rs = exec_query($sql, $query, array($dmn_name));
+
+  if ($rs -> RecordCount() == 0) { // there is no such group. we'll need a new one.
+    list($temp_dmn_id,
+         $temp_dmn_name,
+         $temp_dmn_gid,
+         $temp_dmn_uid,
+         $temp_dmn_created_id,
+         $temp_dmn_created,
+         $temp_dmn_last_modified,
+         $temp_dmn_mailacc_limit,
+         $temp_dmn_ftpacc_limit,
+         $temp_dmn_traff_limit,
+         $temp_dmn_sqld_limit,
+         $temp_dmn_sqlu_limit,
+         $temp_dmn_status,
+         $temp_dmn_als_limit,
+         $temp_dmn_subd_limit,
+         $temp_dmn_ip_id,
+         $temp_dmn_disk_limit) = get_domain_default_props_by_name($sql, $dmn_name);
+
+
+    $query = <<<SQL_QUERY
+              insert into ftp_group
+                 (groupname, gid, members)
+              values
+                 (?, ?, ?)
+SQL_QUERY;
+
+    $rs = exec_query($sql, $query, array($dmn_name, $temp_dmn_gid, $ftp_user));
+
+    // add entries in the quota tables
+    // first check if we have it by one or other reason
+    $query = "SELECT count(name) as cnt from quotalimits where name=?";
+    $rs = exec_query($sql, $query, array($temp_dmn_name));
+    if ($rs -> fields['cnt'] == 0 ) {
+      // ok insert it
+      if ($temp_dmn_disk_limit == 0)  {
+        $dlim = 0;
+      }
+      else {
+        $dlim = $temp_dmn_disk_limit*1024*1024;
+      }
+
+      $query = <<<SQL_QUERY
+              INSERT INTO quotalimits
+                (name, quota_type, per_session, limit_type, bytes_in_avail, bytes_out_avail, bytes_xfer_avail, files_in_avail, files_out_avail, files_xfer_avail)
+              VALUES
+                (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
+SQL_QUERY;
+
+      $rs = exec_query($sql, $query, array($temp_dmn_name, 'group', 'false', 'hard', $dlim, 0, 0, 0, 0, 0));
+    }
+
+    return $temp_dmn_gid;
+
+  } else {
+
+    $ftp_gid = $rs -> fields['gid'];
+    $members = $rs -> fields['members'];
+
+    if (preg_match("/".$ftp_user."/", $members) == 0) {
+      $members .= ",$ftp_user";
+    }
+
+    $query = <<<SQL_QUERY
+            update
+                ftp_group
+            set
+                members = ?
+            where
+                gid = ?
+            and
+                groupname = ?
+SQL_QUERY;
+
+    $rs = exec_query($sql, $query, array($members, $ftp_gid, $dmn_name));
+    return $ftp_gid;
+  }
+}
+
+function get_ftp_user_uid(&$sql, $dmn_name, $ftp_user, $ftp_user_gid)
+{
+  global $cfg;
+  global $max_uid;
+
+  $query = <<<SQL_QUERY
+          select
+            uid
+          from
+            ftp_users
+          where
+            userid = ?
+          and
+            gid = ?
+SQL_QUERY;
+
+  $rs = exec_query($sql, $query, array($ftp_user, $ftp_user_gid));
+  if ($rs -> RecordCount() > 0) {
+    set_page_message(tr('FTP account already exists!'));
+    return -1;
+  }
+
+  list($temp_dmn_id,
+       $temp_dmn_name,
+       $temp_dmn_gid,
+       $temp_dmn_uid) = get_domain_default_props_by_name($sql, $dmn_name);
+
+  return $temp_dmn_uid;
+}
+
+
 ?>
diff -ruN vhcs2.orig/gui/reseller/rau3.php vhcs2/gui/reseller/rau3.php
--- vhcs2.orig/gui/reseller/rau3.php	2006-05-17 19:49:09.000000000 +0500
+++ vhcs2/gui/reseller/rau3.php	2006-05-17 22:21:36.000000000 +0500
@@ -735,6 +735,8 @@
 
   au_update_reseller_props($reseller_id, $props);
 
+  add_default_ftp_user( $dmn_name, $pure_user_pass );
+
   if (isset($_POST['add_alias']) && $_POST['add_alias'] === 'on'){
     //we have to add some aliases for this looser
     $_SESSION['dmn_id'] = $dmn_id;
@@ -749,5 +751,32 @@
   }
 } // End of add_user_data()
 
+
+function add_default_ftp_user($dmn_name, $password)
+{
+  global $sql, $cfg;
+
+  $ftp_user = $dmn_name;
+  $ftp_home = $cfg['FTP_HOMEDIR']."/$dmn_name";
+
+  $ftp_gid = get_ftp_user_gid($sql, $dmn_name, $ftp_user);
+  $ftp_uid = get_ftp_user_uid($sql, $dmn_name, $ftp_user, $ftp_gid);
+
+  if ($ftp_uid == -1) return;
+
+  $ftp_shell = $cfg['FTP_SHELL'];
+  $ftp_passwd = crypt_user_ftp_pass($password);
+  write_log("crypt_user_ftp_pass: $password -> $ftp_passwd");
+
+  $query = <<<SQL_QUERY
+        insert into ftp_users
+            (userid, passwd, uid, gid, shell, homedir)
+        values
+            (?, ?, ?, ?, ?, ?)
+SQL_QUERY;
+
+    $rs = exec_query($sql, $query, array($ftp_user, $ftp_passwd, $ftp_uid, $ftp_gid, $ftp_shell, $ftp_home));
+}
+
 ?>