virt2/api/soft/fm/include/authentication/ssh2.php

190 lines
6.2 KiB
PHP
Executable File

<?php
// ensure this file is being included by a parent file
if( !defined( '_JEXEC' ) && !defined( '_VALID_MOS' ) ) die( 'Restricted access' );
/**
* @version $Id: ssh2.php 201 2011-06-27 09:45:09Z soeren $
* @package eXtplorer
* @copyright soeren 2007-2011
* @author The eXtplorer project (http://extplorer.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."
*
*/
require_once(_EXT_PATH.'/libraries/SSH2.php');
/**
* This file handles ftp authentication
*
*/
class ext_ssh2_authentication {
function onAuthenticate($credentials, $options=null ) {
$ssh2_user = $credentials['username'];
$ssh2_pass = $credentials['password'];
if( $ssh2_user != '' || $ssh2_pass != '' ) {
$ssh2_host = empty($_SESSION['ssh2_host']) ? extGetParam( $_POST, 'ssh2_host', 'localhost:22' ) : $_SESSION['ssh2_host'];
$url = @parse_url( 'ssh2.sftp://' . $ssh2_host);
if( empty( $url )) {
ext_Result::sendResult('ssh2_authentication', false, 'Unable to parse the specified Host Name. Please use a hostname in this format: hostname:22' );
}
$port = empty($url['port']) ? 22 : $url['port'];
$GLOBALS['FTPCONNECTION'] = new SFTPConnection();
$res = $GLOBALS['FTPCONNECTION']->connect($url['host'], $port);
if( PEAR::isError( $res )) {
return $res;
}
$res = $GLOBALS['FTPCONNECTION']->login( $ssh2_user, $ssh2_pass );
if( PEAR::isError( $res )) {
return $res;
}
$_SESSION['credentials_ssh2']['username'] = $ssh2_user;
$_SESSION['credentials_ssh2']['password'] = $ssh2_pass;
$_SESSION['ssh2_host'] = $ssh2_host;
$_SESSION['file_mode'] = 'ssh2';
return true;
}
return false;
}
function onShowLoginForm() {
?>
{
xtype: "form",
<?php if(!ext_isXHR()) { ?>renderTo: "adminForm", <?php } ?>
id: "simpleform",
labelWidth: 125,
url:"<?php echo basename( $GLOBALS['script_name']) ?>",
dialogtitle: "<?php echo ext_Lang::msg('ssh2_header') ?>",
title: "<?php echo ext_Lang::msg('ssh2_login_lbl') ?>",
frame: true,
keys: {
key: Ext.EventObject.ENTER,
fn : function(){
if (Ext.getCmp("simpleform").getForm().isValid()) {
statusBarMessage( '<?php echo ext_Lang::msg('ssh2_login_check', true ) ?>', true );
Ext.getCmp("simpleform").getForm().submit({
reset: false,
success: function(form, action) { location.href = '<?php echo basename( $GLOBALS['script_name']) ?>?ssh2' },
failure: function(form, action) {
if( !action.result ) return;
msgbox = Ext.Msg.alert('<?php echo ext_Lang::err( 'error', true ) ?>', action.result.error);
msgbox.setIcon( Ext.MessageBox.ERROR );
statusBarMessage( action.result.error, false, false );
},
scope: Ext.getCmp("simpleform").getForm(),
params: {
option: "com_extplorer",
action: "ssh2_authentication"
}
});
} else {
return false;
}
}
},
items: [{
xtype: "textfield",
fieldLabel: "<?php echo ext_Lang::msg('username', true ) ?>",
name: "username",
width:175,
allowBlank:false
},{
xtype: "textfield",
fieldLabel: "<?php echo ext_Lang::msg('password', true ) ?>",
name: "password",
inputType: "password",
width:175,
allowBlank:false
},{
xtype: "combo",
fieldLabel: "<?php echo ext_Lang::msg('ftp_hostname_port', true ) ?>",
name: "ssh2_host",
value: "<?php echo extGetParam($_SESSION,'ssh2_host') ?>",
store: ["<?php echo implode('","', $GLOBALS['ext_conf']['remote_hosts_allowed'] )?>"],
width:175,
triggerAction: "all",
editable: false,
forceSelection: true,
allowBlank:false
},
{
xtype: "displayfield",
id: "statusBar"
}],
buttons: [{
text: "<?php echo ext_Lang::msg( 'btnlogin', true ) ?>",
type: "submit",
handler: function() {
Ext.get( 'statusBar').update( '<?php echo ext_Lang::msg('ftp_login_check', true ) ?>' );
Ext.getCmp("simpleform").getForm().submit({
reset: false,
success: function(form, action) { location.reload() },
failure: function(form, action) {
if( !action.result ) return;
msgbox = Ext.Msg.alert('<?php echo ext_Lang::err( 'error', true ) ?>', action.result.error);
msgbox.setIcon( Ext.MessageBox.ERROR );
Ext.get( 'statusBar').update( action.result.error );
},
scope: Ext.getCmp("simpleform").getForm(),
params: {
option: "com_extplorer",
action: "login",
type : "ssh2"
}
});
}
},
<?php if(!ext_isXHR()) { ?>
{
text: '<?php echo ext_Lang::msg( 'btnreset', true ) ?>',
handler: function() { simple.getForm().reset(); }
}
<?php
} else {?>
{
text: "<?php echo ext_Lang::msg( 'btncancel', true ) ?>",
handler: function() { Ext.getCmp("dialog").destroy(); }
}
<?php
} ?>]
}
<?php
}
function onLogout() {
unset($_SESSION['credentials_ssh2']);
unset($_SESSION['ssh2_host']);
session_write_close();
extRedirect( ext_make_link(null, null, null, null, null, null, '&file_mode=file') );
}
}