Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
File Manager
/
Prog
/
File explorer
/
08
/
include
:
chmod.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php // ensure this file is being included by a parent file if( !defined( '_JEXEC' ) && !defined( '_VALID_MOS' ) ) die( 'Restricted access' ); /** * @version $Id: chmod.php 243 2015-08-31 18:33:58Z soeren $ * @package eXtplorer * @copyright soeren 2007-2015 * @author The eXtplorer project (http://extplorer.net) * @author The The QuiX project (http://quixplorer.sourceforge.net) * * @license * The contents of this file are subject to the Mozilla Public License * Version 1.1 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the * License for the specific language governing rights and limitations * under the License. * * Alternatively, the contents of this file may be used under the terms * of the GNU General Public License Version 2 or later (the "GPL"), in * which case the provisions of the GPL are applicable instead of * those above. If you wish to allow use of your version of this file only * under the terms of the GPL and not to allow others to use * your version of this file under the MPL, indicate your decision by * deleting the provisions above and replace them with the notice and * other provisions required by the GPL. If you do not delete * the provisions above, a recipient may use your version of this file * under either the MPL or the GPL." * * */ /** * Permission-Change Functions * */ class ext_Chmod extends ext_Action { function execAction($dir, $item) { // change permissions if(($GLOBALS["permissions"]&01)!=01) ext_Result::sendResult( 'chmod', false, $GLOBALS["error_msg"]["accessfunc"]); // CSRF Security Check if( !ext_checkToken($GLOBALS['__POST']["token"]) ) { ext_Result::sendResult('tokencheck', false, 'Request failed: Security Token not valid.'); } if( !empty($GLOBALS['__POST']["selitems"])) { $cnt=count($GLOBALS['__POST']["selitems"]); } else { $GLOBALS['__POST']["selitems"][] = $item; $cnt = 1; } if( !empty($GLOBALS['__POST']['do_recurse'])) { $do_recurse = true; } else { $do_recurse = false; } // Execute if(isset($GLOBALS['__POST']["confirm"]) && $GLOBALS['__POST']["confirm"]=="true") { $bin=''; for($i=0;$i<3;$i++) for($j=0;$j<3;$j++) { $tmp="r_".$i.$j; if(!empty($GLOBALS['__POST'][$tmp]) ) { $bin.='1'; } else { $bin.='0'; } } if( $bin == '0') { // Changing permissions to "none" is not allowed ext_Result::sendResult('chmod', false, $item.": ".ext_Lang::err('chmod_none_not_allowed')); } $old_bin = $bin; for($i=0;$i<$cnt;++$i) { if( ext_isFTPMode() ) { $mode = decoct(bindec($bin)); } else { $mode = bindec($bin); } $item = $GLOBALS['__POST']["selitems"][$i]; if( ext_isFTPMode() ) { $abs_item = get_item_info( $dir,$item); } else { $abs_item = get_abs_item($dir,$item); } if(!$GLOBALS['ext_File']->file_exists( $abs_item )) { ext_Result::sendResult('chmod', false, $item.": ".$GLOBALS["error_msg"]["fileexist"]); } if(!get_show_item($dir, $item)) { ext_Result::sendResult('chmod', false, $item.": ".$GLOBALS["error_msg"]["accessfile"]); } if( $do_recurse ) { $ok = $GLOBALS['ext_File']->chmodRecursive( $abs_item, $mode ); } else { if( get_is_dir( $abs_item )) { // when we chmod a directory we must care for the permissions // to prevent that the directory becomes not readable (when the "execute bits" are removed) $bin = substr_replace( $bin, '1', 2, 1 ); // set 1st x bit to 1 $bin = substr_replace( $bin, '1', 5, 1 );// set 2nd x bit to 1 $bin = substr_replace( $bin, '1', 8, 1 );// set 3rd x bit to 1 if( ext_isFTPMode() ) { $mode = decoct(bindec($bin)); } else { $mode = bindec($bin); } } //ext_Result::sendResult('chmod', false, $GLOBALS['FTPCONNECTION']->pwd()); $ok = @$GLOBALS['ext_File']->chmod( $abs_item, $mode ); } $bin = $old_bin; } if($ok===false || PEAR::isError( $ok ) ) { $msg = $item.": ".$GLOBALS["error_msg"]["permchange"]; $msg .= PEAR::isError( $ok ) ? ' [' . $ok->getMessage().']' : ''; ext_Result::sendResult('chmod', false, $msg ); } ext_Result::sendResult('chmod', true, ext_Lang::msg('permchange') ); return; } if( ext_isFTPMode() ) { $abs_item = get_item_info( $dir, $GLOBALS['__POST']["selitems"][0]); } else { $abs_item = get_abs_item( $dir, $GLOBALS['__POST']["selitems"][0]); $abs_item = utf8_decode($abs_item); } $mode = parse_file_perms(get_file_perms( $abs_item )); if($mode===false) { ext_Result::sendResult('chmod', false, $item.": ".$GLOBALS["error_msg"]["permread"]); } $pos = "rwx"; $text = ""; for($i=0;$i<$cnt;++$i) { $s_item=get_rel_item($dir,$GLOBALS['__POST']["selitems"][$i]); if(strlen($s_item)>50) $s_item="...".substr($s_item,-47); $text .= $s_item.($i+1<$cnt ? ', ':''); } ?> { "xtype": "form", "id": "simpleform", "width": "300", "labelWidth": 125, "url":"<?php echo basename( $GLOBALS['script_name']) ?>", "dialogtitle": "<?php echo ext_Lang::msg('actperms') ?>", "title" : "<?php echo $text ?>", "frame": true, "items": [{ "layout": "column", "items": [{ <?php // print table with current perms & checkboxes to change for($i=0;$i<3;++$i) { ?> "width":80, "title":"<?php echo ext_Lang::msg(array('miscchmod'=> $i ), true ) ?>", "items": [{ <?php for($j=0;$j<3;++$j) { ?> "xtype": "checkbox", "boxLabel":"<?php echo $pos{$j} ?>", <?php if($mode{(3*$i)+$j} != "-") echo '"checked":true,' ?> "name":"<?php echo "r_". $i.$j ?>" } <?php if( $j<2 ) echo ',{'; } ?> ] } <?php if( $i<2 ) echo ',{'; } ?>,{ "width":400, "style":"margin-left:10px", "clear":true, "html": " " }] },{ "xtype": "checkbox", "fieldLabel":"<?php echo ext_Lang::msg('recurse_subdirs', true ) ?>", "name":"do_recurse" }], "buttons": [{ "text": "<?php echo ext_Lang::msg( 'btnsave', true ) ?>", "handler": function() { statusBarMessage( '<?php echo ext_Lang::msg( 'permissions_processing', true ) ?>', true ); form = Ext.getCmp("simpleform").getForm(); form.submit({ //reset: true, reset: false, success: function(form, action) { statusBarMessage( action.result.message, false, true ); datastore.reload(); Ext.getCmp("dialog").destroy(); }, failure: function(form, action) { statusBarMessage( action.result.error, false, false ); Ext.Msg.alert('<?php echo ext_Lang::err( 'error', true ) ?>', action.result.error); }, scope: form, params: { "option": "com_extplorer", "action": "chmod", "dir": "<?php echo stripslashes($GLOBALS['__POST']["dir"]) ?>", "selitems[]": ['<?php echo implode("','", $GLOBALS['__POST']["selitems"]) ?>'], confirm: 'true', token: "<?php echo ext_getToken() ?>" } }); } },{ "text": "<?php echo ext_Lang::msg( 'btncancel', true ) ?>", "handler": function() { Ext.getCmp("dialog").destroy(); } }] } <?php } } //------------------------------------------------------------------------------ ?>