Просмотр исходного кода

Agent Creates Homedir when Changing Home Path or Adding Server

own3mall 8 лет назад
Родитель
Сommit
e8966cc69a

+ 1 - 0
lang/English/modules/user_games.php

@@ -152,6 +152,7 @@ define('select_home', "Select Home to Assign");
 define('assign_new_home_to_user', "Assign New Home to user %s");
 define('assign_new_home_to_group', "Assign New Home to group %s");
 define('assigned_home_to_user', "Successfully assigned home (ID: %d) to user %s.");
+define('failed_to_assign_home_to_user', "Failed to assign home (ID: %d) to user %s.");
 define('assigned_home_to_group', "Successfully assigned home (ID: %d) to group %s.");
 define('unassigned_home_from_user', "Successfully unassigned home (ID: %d) from user %s.");
 define('unassigned_home_from_group', "Successfully unassigned home (ID: %d) from group %s.");

+ 19 - 11
modules/user_games/add_home.php

@@ -105,21 +105,29 @@ function exec_ogp_module()
 			$game_path = "/home/".$ogp_user."/OGP_User_Files/";
 			if ( ( $new_home_id = $db->addGameHome($rserver_id,$web_user_id,$home_cfg_id,
 				clean_path($game_path),$server_name,$control_password,$ftppassword) )!== FALSE )
-			{
-				$db->assignHomeTo("user",$web_user_id,$new_home_id,$access_rights);
-				if($ftp)
-				{
+			{				
+				$success = $db->assignHomeTo("user",$web_user_id,$new_home_id,$access_rights);
+				if($success){
 					$home_info = $db->getGameHomeWithoutMods($new_home_id);
 					require_once('includes/lib_remote.php');
 					$remote = new OGPRemoteLibrary($home_info['agent_ip'],$home_info['agent_port'],$home_info['encryption_key'],$home_info['timeout']);
-					$host_stat = $remote->status_chk();
-					if( $host_stat === 1)
-						$remote->ftp_mgr("useradd", $home_info['home_id'], $home_info['ftp_password'], $home_info['home_path']);
-					$db->changeFtpStatus('enabled',$new_home_id);
+					
+					// Create new home directory if it doesn't already exist
+					$remote->exec("mkdir -p " . clean_path($game_path) . $new_home_id);
+					
+					if($ftp)
+					{
+						$host_stat = $remote->status_chk();
+						if( $host_stat === 1)
+							$remote->ftp_mgr("useradd", $home_info['home_id'], $home_info['ftp_password'], $home_info['home_path']);
+						$db->changeFtpStatus('enabled',$new_home_id);
+					}
+					print_success(get_lang('game_home_added'));
+					$db->logger(get_lang('game_home_added')." ($server_name)");
+					$view->refresh("?m=user_games&p=edit&home_id=$new_home_id", 0);
+				}else{
+					print_failure(get_lang_f("failed_to_assign_home_to_user", $new_home_id, $web_user . " " . $db->getError()));
 				}
-				print_success(get_lang('game_home_added'));
-				$db->logger(get_lang('game_home_added')." ($server_name)");
-				$view->refresh("?m=user_games&p=edit&home_id=$new_home_id", 0);
 			}
 			else
 			{

+ 4 - 0
modules/user_games/edit_home.php

@@ -443,6 +443,10 @@ function exec_ogp_module()
 			{
 				if ( $db->changeHomePath($home_id,clean_path($home_path)) === TRUE )
 				{
+					// Create new home directory if it doesn't already exist
+					$remote->exec("mkdir -p " . clean_path($home_path));
+					
+					// If FTP is enabled, update the FTP info.
 					if($ftp_installed){
 						if ($db->IsFtpEnabled($home_id))
 						{