Commit e23c47d0 authored by Till Brehm's avatar Till Brehm

FS#3635 - Adding Shell Users with remote API is broken in 3.0.5.4p3

FS#3632 - Adding websites with remote API is broken in 3.0.5.4p3 release.
Missed to commit one file for: FS#3634 - Add option to disable statistics for a website
parent b54d4168
...@@ -36,7 +36,10 @@ class validate_ftpuser { ...@@ -36,7 +36,10 @@ class validate_ftpuser {
function ftp_dir($field_name, $field_value, $validator) { function ftp_dir($field_name, $field_value, $validator) {
global $app; global $app;
if($app->tform->primary_id == 0) { $primary_id = (isset($app->tform->primary_id) && $app->tform->primary_id > 0)?$app->tform->primary_id:$app->remoting_lib->primary_id;
$primary_id = $app->functions->intval($primary_id);
if($primary_id == 0 && !isset($app->remoting_lib->dataRecord['parent_domain_id'])) {
$errmsg = $validator['errmsg']; $errmsg = $validator['errmsg'];
if(isset($app->tform->wordbook[$errmsg])) { if(isset($app->tform->wordbook[$errmsg])) {
return $app->tform->wordbook[$errmsg]."<br>\r\n"; return $app->tform->wordbook[$errmsg]."<br>\r\n";
...@@ -45,18 +48,25 @@ class validate_ftpuser { ...@@ -45,18 +48,25 @@ class validate_ftpuser {
} }
} }
if($primary_id > 0) {
$ftp_data = $app->db->queryOneRecord("SELECT parent_domain_id FROM ftp_user WHERE ftp_user_id = '".$app->db->quote($app->tform->primary_id)."'"); //* get parent_domain_id from website
if(!is_array($ftp_data) || $ftp_data["parent_domain_id"] < 1) { $ftp_data = $app->db->queryOneRecord("SELECT parent_domain_id FROM ftp_user WHERE ftp_user_id = '".$app->db->quote($primary_id)."'");
$errmsg = $validator['errmsg']; if(!is_array($ftp_data) || $ftp_data["parent_domain_id"] < 1) {
if(isset($app->tform->wordbook[$errmsg])) { $errmsg = $validator['errmsg'];
return $app->tform->wordbook[$errmsg]."<br>\r\n"; if(isset($app->tform->wordbook[$errmsg])) {
return $app->tform->wordbook[$errmsg]."<br>\r\n";
} else {
return $errmsg."<br>\r\n";
}
} else { } else {
return $errmsg."<br>\r\n"; $parent_domain_id = $ftp_data["parent_domain_id"];
} }
} else {
//* get parent_domain_id from dataRecord when we have a insert operation trough remote API
$parent_domain_id = $app->functions->intval($app->remoting_lib->dataRecord['parent_domain_id']);
} }
$domain_data = $app->db->queryOneRecord("SELECT domain_id, document_root FROM web_domain WHERE domain_id = '".$app->db->quote($ftp_data["parent_domain_id"])."'"); $domain_data = $app->db->queryOneRecord("SELECT domain_id, document_root FROM web_domain WHERE domain_id = '".$app->db->quote($parent_domain_id)."'");
if(!is_array($domain_data) || $domain_data["domain_id"] < 1) { if(!is_array($domain_data) || $domain_data["domain_id"] < 1) {
$errmsg = $validator['errmsg']; $errmsg = $validator['errmsg'];
if(isset($app->tform->wordbook[$errmsg])) { if(isset($app->tform->wordbook[$errmsg])) {
......
...@@ -29,6 +29,16 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ...@@ -29,6 +29,16 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ */
class validate_systemuser { class validate_systemuser {
function get_error($errmsg) {
global $app;
if(isset($app->tform->wordbook[$errmsg])) {
return $app->tform->wordbook[$errmsg]."<br>\r\n";
} else {
return $errmsg."<br>\r\n";
}
}
/* /*
Validator function to check if a given user is ok. Validator function to check if a given user is ok.
...@@ -36,11 +46,15 @@ class validate_systemuser { ...@@ -36,11 +46,15 @@ class validate_systemuser {
function check_sysuser($field_name, $field_value, $validator) { function check_sysuser($field_name, $field_value, $validator) {
global $app; global $app;
//* Skip Test if we have the placeholder input of the remote APi for the web_domain system_user field here.
if($field_name == 'system_user' && $field_value == '-') return '';
//* Check the input
$errmsg = $validator['errmsg']; $errmsg = $validator['errmsg'];
$check_names = (isset($validator['check_names']) && $validator['check_names'] == true)?true:false; $check_names = (isset($validator['check_names']) && $validator['check_names'] == true)?true:false;
if($app->functions->is_allowed_user(trim(strtolower($field_value)),$check_names) == false) { if($app->functions->is_allowed_user(trim(strtolower($field_value)),$check_names) == false) {
return $app->tform->wordbook[$errmsg]."<br>\r\n"; return $this->get_error($errmsg);
} }
} }
...@@ -50,11 +64,14 @@ class validate_systemuser { ...@@ -50,11 +64,14 @@ class validate_systemuser {
function check_sysgroup($field_name, $field_value, $validator) { function check_sysgroup($field_name, $field_value, $validator) {
global $app; global $app;
//* Skip Test if we have the placeholder input of the remote APi for the web_domain system_group field here.
if($field_name == 'system_group' && $field_value == '-') return '';
$errmsg = $validator['errmsg']; $errmsg = $validator['errmsg'];
$check_names = (isset($validator['check_names']) && $validator['check_names'] == true)?true:false; $check_names = (isset($validator['check_names']) && $validator['check_names'] == true)?true:false;
if($app->functions->is_allowed_group(trim(strtolower($field_value)),$check_names) == false) { if($app->functions->is_allowed_group(trim(strtolower($field_value)),$check_names) == false) {
return $app->tform->wordbook[$errmsg]."<br>\r\n"; return $this->get_error($errmsg);
} }
} }
...@@ -63,8 +80,11 @@ class validate_systemuser { ...@@ -63,8 +80,11 @@ class validate_systemuser {
*/ */
function shelluser_dir($field_name, $field_value, $validator) { function shelluser_dir($field_name, $field_value, $validator) {
global $app; global $app;
if($app->tform->primary_id == 0) { $primary_id = (isset($app->tform->primary_id) && $app->tform->primary_id > 0)?$app->tform->primary_id:$app->remoting_lib->primary_id;
$primary_id = $app->functions->intval($primary_id);
if($primary_id == 0 && !isset($app->remoting_lib->dataRecord['parent_domain_id'])) {
$errmsg = $validator['errmsg']; $errmsg = $validator['errmsg'];
if(isset($app->tform->wordbook[$errmsg])) { if(isset($app->tform->wordbook[$errmsg])) {
return $app->tform->wordbook[$errmsg]."<br>\r\n"; return $app->tform->wordbook[$errmsg]."<br>\r\n";
...@@ -73,18 +93,25 @@ class validate_systemuser { ...@@ -73,18 +93,25 @@ class validate_systemuser {
} }
} }
if($primary_id > 0) {
$shell_data = $app->db->queryOneRecord("SELECT parent_domain_id FROM shell_user WHERE shell_user_id = '".$app->db->quote($app->tform->primary_id)."'"); //* get parent_domain_id from website
if(!is_array($shell_data) || $shell_data["parent_domain_id"] < 1) { $shell_data = $app->db->queryOneRecord("SELECT parent_domain_id FROM shell_user WHERE shell_user_id = '".$app->db->quote($primary_id)."'");
$errmsg = $validator['errmsg']; if(!is_array($shell_data) || $shell_data["parent_domain_id"] < 1) {
if(isset($app->tform->wordbook[$errmsg])) { $errmsg = $validator['errmsg'];
return $app->tform->wordbook[$errmsg]."<br>\r\n"; if(isset($app->tform->wordbook[$errmsg])) {
return $app->tform->wordbook[$errmsg]."<br>\r\n";
} else {
return $errmsg."<br>\r\n";
}
} else { } else {
return $errmsg."<br>\r\n"; $parent_domain_id = $shell_data["parent_domain_id"];
} }
} else {
//* get parent_domain_id from dataRecord when we have a insert operation trough remote API
$parent_domain_id = $app->functions->intval($app->remoting_lib->dataRecord['parent_domain_id']);
} }
$domain_data = $app->db->queryOneRecord("SELECT domain_id, document_root FROM web_domain WHERE domain_id = '".$app->db->quote($shell_data["parent_domain_id"])."'"); $domain_data = $app->db->queryOneRecord("SELECT domain_id, document_root FROM web_domain WHERE domain_id = '".$app->db->quote($parent_domain_id)."'");
if(!is_array($domain_data) || $domain_data["domain_id"] < 1) { if(!is_array($domain_data) || $domain_data["domain_id"] < 1) {
$errmsg = $validator['errmsg']; $errmsg = $validator['errmsg'];
if(isset($app->tform->wordbook[$errmsg])) { if(isset($app->tform->wordbook[$errmsg])) {
...@@ -116,5 +143,4 @@ class validate_systemuser { ...@@ -116,5 +143,4 @@ class validate_systemuser {
} }
} }
} }
...@@ -205,6 +205,10 @@ if($app->auth->is_admin()) { ...@@ -205,6 +205,10 @@ if($app->auth->is_admin()) {
1 => array ( 'type' => 'REGEX', 1 => array ( 'type' => 'REGEX',
'regex' => '/^\/[a-zA-Z0-9\ \.\-\_\/]{10,128}$/', 'regex' => '/^\/[a-zA-Z0-9\ \.\-\_\/]{10,128}$/',
'errmsg'=> 'directory_error_regex'), 'errmsg'=> 'directory_error_regex'),
2 => array ( 'type' => 'CUSTOM',
'class' => 'validate_ftpuser',
'function' => 'ftp_dir',
'errmsg' => 'directory_error_notinweb'),
), ),
'default' => '', 'default' => '',
'value' => '', 'value' => '',
......
...@@ -486,7 +486,7 @@ $form["tabs"]['stats'] = array ( ...@@ -486,7 +486,7 @@ $form["tabs"]['stats'] = array (
'datatype' => 'VARCHAR', 'datatype' => 'VARCHAR',
'formtype' => 'SELECT', 'formtype' => 'SELECT',
'default' => 'webalizer', 'default' => 'webalizer',
'value' => array('webalizer' => 'Webalizer', 'awstats' => 'AWStats') 'value' => array('webalizer' => 'Webalizer', 'awstats' => 'AWStats', '' => 'None')
), ),
//################################# //#################################
// ENDE Datatable fields // ENDE Datatable fields
......
...@@ -20,13 +20,13 @@ try { ...@@ -20,13 +20,13 @@ try {
$params = array( $params = array(
'server_id' => 1, 'server_id' => 1,
'parent_domain_id' => 1, 'parent_domain_id' => 1,
'username' => 'threep', 'username' => 'tom',
'password' => 'wood', 'password' => 'secret',
'quota_size' => 10000, 'quota_size' => 10000,
'active' => 'y', 'active' => 'y',
'uid' => '5000', 'uid' => '5000',
'gid' => '5000', 'gid' => '5000',
'dir' => 'maybe', 'dir' => '/var/www/clients/client0/web1',
'quota_files' => -1, 'quota_files' => -1,
'ul_ratio' => -1, 'ul_ratio' => -1,
'dl_ratio' => -1, 'dl_ratio' => -1,
......
...@@ -15,7 +15,7 @@ try { ...@@ -15,7 +15,7 @@ try {
} }
//* Parameters //* Parameters
$client_id = 1; $client_id = 0;
$ftp_user_id = 1; $ftp_user_id = 1;
......
...@@ -20,14 +20,14 @@ try { ...@@ -20,14 +20,14 @@ try {
$params = array( $params = array(
'server_id' => 1, 'server_id' => 1,
'parent_domain_id' => 1, 'parent_domain_id' => 1,
'username' => 'threep2', 'username' => 'tom',
'password' => 'wood', 'password' => 'test',
'quota_size' => 10000, 'quota_size' => 10000,
'active' => 'y', 'active' => 'y',
'puser' => 'null', 'puser' => 'web1',
'pgroup' => 'null', 'pgroup' => 'client0',
'shell' => '/bin/bash', 'shell' => '/bin/bash',
'dir' => 'maybe', 'dir' => '/var/www/clients/client0/web1',
'chroot' => '' 'chroot' => ''
); );
......
...@@ -15,7 +15,7 @@ try { ...@@ -15,7 +15,7 @@ try {
} }
//* Parameters //* Parameters
$client_id = 3; $client_id = 0;
$shell_user_id = 1; $shell_user_id = 1;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment