mirror of
https://github.com/EGroupware/egroupware.git
synced 2024-11-25 09:23:28 +01:00
new options to restore the default fstab and options to specify user,password&domain
This commit is contained in:
parent
b638e9117b
commit
76e75dea7b
@ -60,15 +60,16 @@ function usage($action=null,$ret=0)
|
|||||||
echo "\t$cmd chgrp [-r|--recursive] group URL [URL2 ...]\n";
|
echo "\t$cmd chgrp [-r|--recursive] group URL [URL2 ...]\n";
|
||||||
echo "\t$cmd find URL [URL2 ...] [-type (d|f)][-depth][-mindepth n][-maxdepth n][-mime type[/sub]][-name pattern][-path pattern][-uid id][-user name][-nouser][-gid id][-group name][-nogroup][-size N][-cmin N][-ctime N][-mmin N][-mtime N] (N: +n --> >n, -n --> <n, n --> =n) [-limit N[,n]][-order (name|size|...)][-sort (ASC|DESC)]\n";
|
echo "\t$cmd find URL [URL2 ...] [-type (d|f)][-depth][-mindepth n][-maxdepth n][-mime type[/sub]][-name pattern][-path pattern][-uid id][-user name][-nouser][-gid id][-group name][-nogroup][-size N][-cmin N][-ctime N][-mmin N][-mtime N] (N: +n --> >n, -n --> <n, n --> =n) [-limit N[,n]][-order (name|size|...)][-sort (ASC|DESC)]\n";
|
||||||
echo "\t$cmd mount URL [path] (without path prints out the mounts)\n";
|
echo "\t$cmd mount URL [path] (without path prints out the mounts)\n";
|
||||||
echo "\t$cmd umount URL|path\n";
|
echo "\t$cmd umount [-a|--all (restores default mounts)] URL|path\n";
|
||||||
|
|
||||||
|
echo "\nCommon options: --user user --password password [--domain domain] can be used to pass eGW credentials without using the URL writing.\n";
|
||||||
echo "\nURL: {vfs|sqlfs|oldvfs}://user:password@domain/home/user/file, /dir/file, ...\n";
|
echo "\nURL: {vfs|sqlfs|oldvfs}://user:password@domain/home/user/file, /dir/file, ...\n";
|
||||||
|
|
||||||
echo "\nUse root_{header-admin|config-user} as user and according password for root access (no user specific access control and chown).\n\n";
|
echo "\nUse root_{header-admin|config-user} as user and according password for root access (no user specific access control and chown).\n\n";
|
||||||
|
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
$long = $numeric = $recursive = $perms = false;
|
$long = $numeric = $recursive = $perms = $all = false;
|
||||||
$argv = $_SERVER['argv'];
|
$argv = $_SERVER['argv'];
|
||||||
$cmd = basename(array_shift($argv),'.php');
|
$cmd = basename(array_shift($argv),'.php');
|
||||||
if ($argv[0][0] != '-' && $argv[0][0] != '/' && strpos($argv[0],'://') === false)
|
if ($argv[0][0] != '-' && $argv[0][0] != '/' && strpos($argv[0],'://') === false)
|
||||||
@ -146,19 +147,66 @@ while(!is_null($option = array_shift($argv)))
|
|||||||
case '-d': case '--date':
|
case '-d': case '--date':
|
||||||
$time = strtotime(array_shift($argv));
|
$time = strtotime(array_shift($argv));
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case '-a': case '--all':
|
||||||
|
$all = true;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case '--user':
|
||||||
|
$user = array_shift($argv);
|
||||||
|
break;
|
||||||
|
case '--password':
|
||||||
|
case '--passwd':
|
||||||
|
$passwd = array_shift($argv);
|
||||||
|
break;
|
||||||
|
case '--domain':
|
||||||
|
$domain = array_shift($argv);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if ($user && $passwd)
|
||||||
|
{
|
||||||
|
load_egw($user,$passwd,$domain ? $domain : 'default');
|
||||||
|
}
|
||||||
$argv = $args;
|
$argv = $args;
|
||||||
$argc = count($argv);
|
$argc = count($argv);
|
||||||
|
|
||||||
switch($cmd)
|
switch($cmd)
|
||||||
{
|
{
|
||||||
|
case 'umount':
|
||||||
|
if ($argc != 1 && !$all)
|
||||||
|
{
|
||||||
|
usage();
|
||||||
|
}
|
||||||
|
if (($url = $argv[0])) load_wrapper($url);
|
||||||
|
if(!egw_vfs::$is_root)
|
||||||
|
{
|
||||||
|
die("You need to be root to do that!\n");
|
||||||
|
}
|
||||||
|
if ($all)
|
||||||
|
{
|
||||||
|
config::save_value('vfs_fstab',$GLOBALS['egw_info']['server']['vfs_fstab']='','phpgwapi');
|
||||||
|
echo "Restored default mounts:\n";
|
||||||
|
}
|
||||||
|
elseif (!egw_vfs::umount($url))
|
||||||
|
{
|
||||||
|
die("$url is NOT mounted!\n");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
echo "Successful unmounted $url:\n";
|
||||||
|
}
|
||||||
|
// fall trough to output current mount table
|
||||||
case 'mount':
|
case 'mount':
|
||||||
if ($argc > 2)
|
if ($argc > 2)
|
||||||
{
|
{
|
||||||
usage();
|
usage();
|
||||||
}
|
}
|
||||||
load_wrapper($url=$argv[0]);
|
load_wrapper($url=$argv[0]);
|
||||||
|
if($argc > 1 && !egw_vfs::$is_root)
|
||||||
|
{
|
||||||
|
die("You need to be root to do that!\n");
|
||||||
|
}
|
||||||
$fstab = egw_vfs::mount($url,$path=$argv[1]);
|
$fstab = egw_vfs::mount($url,$path=$argv[1]);
|
||||||
if (is_array($fstab))
|
if (is_array($fstab))
|
||||||
{
|
{
|
||||||
@ -169,7 +217,7 @@ switch($cmd)
|
|||||||
}
|
}
|
||||||
elseif ($fstab === false)
|
elseif ($fstab === false)
|
||||||
{
|
{
|
||||||
echo "URL '$url' not found!\n";
|
echo "URL '$url' not found or permission denied (are your root?)!\n";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -177,13 +225,6 @@ switch($cmd)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 'umount':
|
|
||||||
if ($argc != 1)
|
|
||||||
{
|
|
||||||
usage();
|
|
||||||
}
|
|
||||||
egw_vfs::umount($argv[0]);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case 'find':
|
case 'find':
|
||||||
do_find($argv,$find_options);
|
do_find($argv,$find_options);
|
||||||
@ -391,52 +432,7 @@ function load_wrapper($url)
|
|||||||
case 'sqlfs':
|
case 'sqlfs':
|
||||||
if (!isset($GLOBALS['egw_info']))
|
if (!isset($GLOBALS['egw_info']))
|
||||||
{
|
{
|
||||||
$_GET['domain'] = parse_url($url,PHP_URL_HOST);
|
load_egw(parse_url($url,PHP_URL_USER),parse_url($url,PHP_URL_PASS),parse_url($url,PHP_URL_HOST));
|
||||||
$GLOBALS['egw_login_data'] = array(
|
|
||||||
'login' => parse_url($url,PHP_URL_USER),
|
|
||||||
'passwd' => parse_url($url,PHP_URL_PASS),
|
|
||||||
'passwd_type' => 'text',
|
|
||||||
);
|
|
||||||
|
|
||||||
if (is_dir('/tmp')) ini_set('session.save_path','/tmp'); // regular users may have no rights to apache's session dir
|
|
||||||
|
|
||||||
$GLOBALS['egw_info'] = array(
|
|
||||||
'flags' => array(
|
|
||||||
'currentapp' => 'filemanager',
|
|
||||||
'noheader' => true,
|
|
||||||
'autocreate_session_callback' => 'user_pass_from_argv',
|
|
||||||
)
|
|
||||||
);
|
|
||||||
|
|
||||||
if (substr($GLOBALS['egw_login_data']['login'],0,5) != 'root_')
|
|
||||||
{
|
|
||||||
include('../header.inc.php');
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
$GLOBALS['egw_info']['flags']['currentapp'] = 'login';
|
|
||||||
include('../header.inc.php');
|
|
||||||
|
|
||||||
if ($GLOBALS['egw_login_data']['login'] == 'root_'.$GLOBALS['egw_info']['server']['header_admin_user'] &&
|
|
||||||
_check_pw($GLOBALS['egw_info']['server']['header_admin_password'],$GLOBALS['egw_login_data']['passwd']) ||
|
|
||||||
$GLOBALS['egw_login_data']['login'] == 'root_'.$GLOBALS['egw_domain'][$_GET['domain']]['config_user'] &&
|
|
||||||
_check_pw($GLOBALS['egw_domain'][$_GET['domain']]['config_passwd'],$GLOBALS['egw_login_data']['passwd']))
|
|
||||||
{
|
|
||||||
echo "\nRoot access granted!\n";
|
|
||||||
egw_vfs::$is_root = true;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
die("Unknown user or password!\n");
|
|
||||||
}
|
|
||||||
set_exception_handler('cli_exception_handler'); // otherwise we get html!
|
|
||||||
}
|
|
||||||
$cmd = $GLOBALS['cmd'];
|
|
||||||
if (!in_array($cmd,array('ls','find','mount','umount')) && $GLOBALS['egw_info']['server']['files_dir'] && !is_writable($GLOBALS['egw_info']['server']['files_dir']))
|
|
||||||
{
|
|
||||||
echo "\nError: eGroupWare's files directory {$GLOBALS['egw_info']['server']['files_dir']} is NOT writable by the user running ".basename(__FILE__)."!\n".
|
|
||||||
"--> Please run it as the same user the webserver uses or root, otherwise the $cmd command will fail!\n\n";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
require_once(EGW_API_INC.'/class.'.$scheme.'_stream_wrapper.inc.php');
|
require_once(EGW_API_INC.'/class.'.$scheme.'_stream_wrapper.inc.php');
|
||||||
break;
|
break;
|
||||||
@ -451,6 +447,64 @@ function load_wrapper($url)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Start the eGW session, exits on wrong credintials
|
||||||
|
*
|
||||||
|
* @param string $user
|
||||||
|
* @param string $passwd
|
||||||
|
* @param string $domain
|
||||||
|
*/
|
||||||
|
function load_egw($user,$passwd,$domain='default')
|
||||||
|
{
|
||||||
|
echo "load_egw($user,$passwd,$domain)\n";
|
||||||
|
$_GET['domain'] = $domain;
|
||||||
|
$GLOBALS['egw_login_data'] = array(
|
||||||
|
'login' => $user,
|
||||||
|
'passwd' => $passwd,
|
||||||
|
'passwd_type' => 'text',
|
||||||
|
);
|
||||||
|
|
||||||
|
if (is_dir('/tmp')) ini_set('session.save_path','/tmp'); // regular users may have no rights to apache's session dir
|
||||||
|
|
||||||
|
$GLOBALS['egw_info'] = array(
|
||||||
|
'flags' => array(
|
||||||
|
'currentapp' => 'filemanager',
|
||||||
|
'noheader' => true,
|
||||||
|
'autocreate_session_callback' => 'user_pass_from_argv',
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
|
if (substr($user,0,5) != 'root_')
|
||||||
|
{
|
||||||
|
include('../header.inc.php');
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$GLOBALS['egw_info']['flags']['currentapp'] = 'login';
|
||||||
|
include('../header.inc.php');
|
||||||
|
|
||||||
|
if ($user == 'root_'.$GLOBALS['egw_info']['server']['header_admin_user'] &&
|
||||||
|
_check_pw($GLOBALS['egw_info']['server']['header_admin_password'],$passwd) ||
|
||||||
|
$user == 'root_'.$GLOBALS['egw_domain'][$_GET['domain']]['config_user'] &&
|
||||||
|
_check_pw($GLOBALS['egw_domain'][$_GET['domain']]['config_passwd'],$passwd))
|
||||||
|
{
|
||||||
|
echo "\nRoot access granted!\n";
|
||||||
|
egw_vfs::$is_root = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
die("Unknown user or password!\n");
|
||||||
|
}
|
||||||
|
set_exception_handler('cli_exception_handler'); // otherwise we get html!
|
||||||
|
}
|
||||||
|
$cmd = $GLOBALS['cmd'];
|
||||||
|
if (!in_array($cmd,array('ls','find','mount','umount')) && $GLOBALS['egw_info']['server']['files_dir'] && !is_writable($GLOBALS['egw_info']['server']['files_dir']))
|
||||||
|
{
|
||||||
|
echo "\nError: eGroupWare's files directory {$GLOBALS['egw_info']['server']['files_dir']} is NOT writable by the user running ".basename(__FILE__)."!\n".
|
||||||
|
"--> Please run it as the same user the webserver uses or root, otherwise the $cmd command will fail!\n\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check password against a md5 hash or cleartext password
|
* Check password against a md5 hash or cleartext password
|
||||||
*
|
*
|
||||||
|
Loading…
Reference in New Issue
Block a user