[Easymod-cvs] easymod2/mods/easymod/em_includes em_cipher.php,NONE,1.1 em_ftp.php,NONE,1.1 em_functi
Status: Beta
Brought to you by:
wgeric
From: Brendan K. <bk...@us...> - 2005-04-24 15:00:02
|
Update of /cvsroot/easymod/easymod2/mods/easymod/em_includes In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13181/mods/easymod/em_includes Added Files: em_cipher.php em_ftp.php em_functions.php em_modio.php em_schema.php emver.php index.htm Log Message: Just checking in a vanilla 0.1.13. Work shall commence soon :) --- NEW FILE: emver.php --- <?php /*************************************************************************** * empw.php * ------------------- * begin : Saturday, Dec 13, 2003 * copyright : (C) 2003 thru 2004 by Nuttzy - Craig Nuttall * email : nu...@bl... * * $Id: emver.php,v 1.1 2005/04/24 14:59:53 bkettle Exp $ * * ***************************************************************************/ /*************************************************************************** * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * ***************************************************************************/ /* NOTE: I CAN'T REMEMBER IF I FINISHED THIS OR IF IT EVEN WORKS! - 2004/08/08 */ // once moved to the admin dir, don't interfer with building the index if (!empty($setmodules)) { return; } define('IN_PHPBB', 1); // // Let's set the root dir for phpBB // $phpbb_root_path = './../../'; require($phpbb_root_path . 'extension.inc'); include($phpbb_root_path . 'config.'.$phpEx); include($phpbb_root_path . 'includes/constants.'.$phpEx); include($phpbb_root_path . 'includes/functions.'.$phpEx); include($phpbb_root_path . 'includes/functions_admin.'.$phpEx); include($phpbb_root_path . 'includes/db.'.$phpEx); include($phpbb_root_path . '/admin/em_includes/em_ftp.' . $phpEx) ; include($phpbb_root_path . '/admin/em_includes/em_modio.' . $phpEx) ; include($phpbb_root_path . '/admin/em_includes/em_functions.' . $phpEx) ; // look in the config table to get the EM version function get_em_version() { global $db ; // grab the EM version $sql = "SELECT * FROM " . CONFIG_TABLE . " WHERE config_name = 'EM_version'" ; if( !$result = $db->sql_query($sql) ) { message_die(GENERAL_ERROR, $lang['EM_err_config_info'], '', __LINE__, __FILE__, $sql); } // return the version or nothing if ( $row = $db->sql_fetchrow($result)) { return $row['config_value'] ; } else { return '' ; } } // get our values $version = ( !empty($HTTP_POST_VARS['version']) ) ? htmlspecialchars($HTTP_POST_VARS['version']) : '' ; $mode = ( !empty($HTTP_POST_VARS['mode']) ) ? htmlspecialchars($HTTP_POST_VARS['mode']) : '' ; // use the SS css file to pretty things up; should work fine even if the css file is not found echo '<link rel="stylesheet" href="../../templates/subSilver/subSilver.css" type="text/css">' . "\n" ; // // update the EM settings; they already filled out the settings page and hit submit // if ($mode == 'update') { // password settings $em_version = (isset($HTTP_POST_VARS['em_version'])) ? htmlspecialchars( $HTTP_POST_VARS['em_version']) : '' ; // update the version em_db_update( 'EM_version', $em_version) ; ?> <table cellpadding="2" cellspacing="1" border="0" class="forumline" align="center"> <tr> <th>Success</th> </tr> <tr> <td class="row1" align="center"><span class="gen"> <br> Your EasyMOD Version has been updated successfully. <br> <br> <b>You should now rename or delete emver.php to prevent unauthorized use.</b> <br> <br></span></td> </tr> </table> <?php } // // display the settings page // if ($mode == '') { ?> <br> <h3>Change EasyMOD version</h3> <p><span class="gen">This proggie is typically used if you need to reinstall the current version of EasyMOD.</span></p> <form action="emver.php" name="settings" method="post"> <table width="100%" cellpadding="2" cellspacing="1" border="0" class="forumline"> <tr> <th colspan="2">EasyMOD Version</th> </tr> <tr> <td class="row2" align="center" colspan="2"><span class="gen">The EasyMOD Version setting serves no real purpose other than to prevent duplicate installations of EM. You should only change it if you need to reinstall the same version of EasyMOD.</span></td> </tr> <tr> <td class="row1" align="right"><span class="gen">Current Version</span></td> <td class="row2"><input type="textbox" name="em_version" value="<?php echo get_em_version(); ?>"></td> </tr> <tr> <td class="catbottom" align="center" colspan="2"> <input type="hidden" name="mode" value="update"> <input class="mainoption" type="submit" value="Submit" /> </td> </tr> </table> </form> <?php } ?> --- NEW FILE: em_schema.php --- <?php /*************************************************************************** * em_schema.php * ------------------- * begin : Wednesday, May 16, 2002 * copyright : (C) 2002-2004 by Nuttzy - Craig Nuttall * email : nu...@bl... * * $Id: em_schema.php,v 1.1 2005/04/24 14:59:53 bkettle Exp $ * * ***************************************************************************/ /*************************************************************************** * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. [...1207 lines suppressed...] // if we've got an error, then make like a baby and head out if ($error != '') { $error .= "<br><br>SQL Line:<br>$message" ; return ; } // add the sql lines for this command into the overall list for ($i=0; $i<count($sql); $i++) { $return_sql[] = $sql[$i] ; } } return $return_sql ; } ?> --- NEW FILE: em_modio.php --- <?php /*************************************************************************** * em_modio.php * ------------------- * begin : Tuesday, Dec 10, 2003 * copyright : (C) 2002 - 2004 Nuttzy - Craig Nuttall * email : nu...@bl... * * $Id: em_modio.php,v 1.1 2005/04/24 14:59:53 bkettle Exp $ * * ***************************************************************************/ /*************************************************************************** * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * ***************************************************************************/ // // THE PURPOSE of this module is to handle all the file i/o for EM. Files are always read // using fopen. They are written and moved using fopen, PHP copy command, /tmp file, FTP using // fsockopen, FTP using the PHP Extension, file download to client, display file to screen, and // generating a sh or bat file to execute moves after processing. // /*************************************************************************** * mod_io class * ------------------- * begin : Sunday, Mar 31, 2002 * copyright : (C) 2002 thru 2004 Nuttzy * email : pkt...@bl... * ***************************************************************************/ class mod_io { // file and filepath to MOD var $filename ; // name of the phpBB core file being edited var $path ; // path of the phpBB core file being edited // MOD'ing methods var $read_method ; var $write_method ; var $move_method ; // write method tools var $pfile ; // file pointer var $afile = array() ; // array of strings to make a file // read method tools var $pread_file ; // file pointer to the phpBB core file being read (readonly) // error handling var $err_msg ; // ftp info (if needed) var $ftp_user ; var $ftp_pass ; var $ftp_path ; var $ftp_host ; var $ftp_type ; // using the PHP FTP extension? var $ftp_cache ; // with ext, writing to /tmp or admin/em_includes/cache? var $emftp ; // // member functions // // get sent the method and ftp info (install proggie) function mod_io( $filename, $path, $read_method, $write_method, $move_method, $ftp_user, $ftp_pass, $ftp_path, $ftp_host, $ftp_type, $ftp_cache) { $this->filename = $filename ; $this->path = $path ; $this->read_method = $read_method ; $this->write_method = $write_method ; $this->move_method = $move_method ; $this->ftp_user = $ftp_user ; $this->ftp_pass = $ftp_pass ; $this->ftp_path = $ftp_path ; $this->ftp_host = $ftp_host ; $this->ftp_type = $ftp_type ; $this->ftp_cache = $ftp_cache ; $this->emftp = NULL ; } // make appropriate dirs for the COPY command function modio_mkdirs_copy( $path) { global $phpbb_root_path ; // we only create actually dirs if we are writing to server, so bail if that is not the method if (( $this->move_method != 'copy') && ( $this->move_method != 'ftpa')) { return true ; } // make sure we have something to create! else if ($path == '') { return true ; } // set up the path; relative to EM execution point, starting at root $root_path = ( substr($phpbb_root_path, 0, 2) == './') ? substr($phpbb_root_path, 2) : $phpbb_root_path ; $copy_path = $root_path . $path ; // create dirs for processing the file (server) if ( $this->move_method == 'copy') { $dir_path = '' ; $splitarray = explode('/', $copy_path) ; for ($idir=0; $idir<count($splitarray)-1; $idir++) { $dir_path .= trim($splitarray[$idir]) ; // don't bother making ../ ;-) if ($splitarray[$idir] == '..') { // do nothing } else if (!file_exists($dir_path)) { // use the mkdir command mkdir($dir_path, 0777); chmod($dir_path, 0777); } $dir_path .= '/' ; } } // create dirs for processing the file (buffer+ftp) else if ( $this->move_method == 'ftpa') { // $path = ( substr($path, 0, 3) == '../') ? substr($path, 3) : $path ; // make the dir tree (its a bit complex); all error handling occurs in the function if (!$this->emftp->ftp_mkdir_struct_copy( $path, $this->err_msg)) { $this->err_msg = 'modio_mkdirs_copy()->' . $this->err_msg ; return false ; } } return true ; } // make appropriate dirs using the appropriate method function modio_mkdirs( $process) { global $install_path ; // we only create actually dirs if we are writing to server, so bail if that is not the method if (( $this->write_method != 'server') && ( $this->write_method != 'ftpb')) { return true ; } // we may or may not add 'process/' in the path depending on if it is a post_process.sh(.bat) file $new_path = $install_path . $process . $this->path ; $backup_path = $install_path . (($process == '') ? '' : 'backups/') . $this->path ; // create dirs for processing the file (server) if ( $this->write_method == 'server') { $dir_path = '' ; $splitarray = explode('/', $new_path) ; for ($idir=0; $idir<count($splitarray)-1; $idir++) { $dir_path .= trim($splitarray[$idir]) ; if (!file_exists($dir_path)) { // use the mkdir command mkdir($dir_path, 0777); chmod($dir_path, 0777); } $dir_path .= '/' ; } } // create dirs for processing the file (buffer+ftp) else if ( $this->write_method == 'ftpb') { // make the dir tree (its a bit complex); all error handling occurs in the function if (!$this->emftp->ftp_mkdir_struct( $new_path, $this->err_msg)) { $this->err_msg = 'modio_mkdirs[1]->' . $this->err_msg ; return false ; } } // create dirs for backing up the file if ( $this->write_method == 'server') { $dir_path = '' ; $splitarray = explode('/', $backup_path) ; for ($idir=0; $idir<count($splitarray)-1; $idir++) { $dir_path .= trim($splitarray[$idir]) ; if (!file_exists($dir_path)) { mkdir($dir_path, 0777); chmod($dir_path, 0777); } $dir_path .= '/' ; } } // create dirs for backing up the file (buffer+ftp) else if ( $this->write_method == 'ftpb') { // make the dir tree (its a bit complex); all error handling occurs in the function if (!$this->emftp->ftp_mkdir_struct( $backup_path, $this->err_msg)) { $this->err_msg = 'modio_mkdirs[2]->' . $this->err_msg ; return false ; } } return true ; } // open the designated stream for writing function modio_open( $create_command = false) { global $lang, $phpbb_root_path, $install_path ; // we'll handle our on errors $old_error_reporting = error_reporting(0) ; ////////// NOT WORRYING ABOUT READ LOCAL YET!!! // open file on server for readonly access (if not making a config file) if (!$create_command) { if (!$this->pread_file = fopen ( $phpbb_root_path . $this->path . trim($this->filename), 'r')) { // restore error handling error_reporting($old_error_reporting); $this->err_msg = 'modio_open[1]<br><br>' ; $this->err_msg .= sprintf( $lang['EM_modio_open_read'], $this->path . trim($this->filename)) ; return false ; } } // restore error handling error_reporting($old_error_reporting); $ext = ($create_command) ? '' : '.txt' ; $process = ($create_command) ? '' : 'processed/' ; // setup dirs if necessary if (!$create_command) { if (!$this->modio_mkdirs( $process)) { $this->err_msg = 'modio_open[2]->' . $this->err_msg ; return false ; } } // writing on the server if ( $this->write_method == 'server') { // we'll handle our on errors $old_error_reporting = error_reporting(0) ; // open the file on the server if ( $this->pfile = fopen( $install_path . $process . $this->path . trim($this->filename) . $ext, 'w')) { // restore error handling error_reporting($old_error_reporting); return true ; } // open failed else { // restore error handling error_reporting($old_error_reporting); $this->err_msg = 'modio_open[3]<br><br>' ; $this->err_msg .= sprintf( $lang['EM_modio_open_write'], $install_path . $process . $this->path . trim($this->filename). $ext); return false ; } } // writing to an array buffer and then ftping on the server else if ( $this->write_method == 'ftpb') { $this->afile = array() ; return true ; } // assembling for download or for screen display else if ( ($this->write_method == 'local') || ($this->write_method == 'screen')) { $this->afile = array() ; return true ; } // what the heck is going on! else { $this->err_msg = $lang['EM_modio_open_none'] ; return false ; } } // add text line(s) to stream function modio_write( $text) { // writing on the server in mods dir if ($this->write_method == 'server') { fwrite( $this->pfile, $text ) ; } // assembling for ftp buffer, download, or for screen display else { $this->afile[] = $text ; } } // close it down and take care of business function modio_close( $create_command = false) { global $lang, $script_path, $install_path ; // close the read file on the server if (!$create_command) { fclose( $this->pread_file) ; } // writing on the server if ( $this->write_method == 'server') { fclose( $this->pfile) ; // if it is a command file, then we don't have processed/ in the dir path, and we don't append .txt if ($create_command) { chmod( $install_path . $this->path . trim($this->filename), 0777 ) ; } // normal files: written in the processed/ dir; add .txt on the end for security (not executable) else { chmod( $install_path . 'processed/' . $this->path . trim($this->filename) . '.txt', 0777 ) ; } } // write the array buffer to a file via ftp else if ( $this->write_method == 'ftpb') { // determing the destination path and filename if ($create_command) { $to_dir = $script_path . '/' . $install_path . $this->path ; $to_file = $this->filename ; } else { $to_dir = $script_path . '/' . $install_path . 'processed/' . $this->path ; $to_file = $this->filename . '.txt' ; } // leave some breadcrumbs so we can cd back to phpbb_root $return_path = '' ; $split_array = explode('/', $to_dir) ; for ($count=0; $count<count($split_array); $count++) { if (($split_array[$count] != '.') && ($split_array[$count] != '')) { $return_path .= '../' ; } } // we must first CD to the dir before putting the file (found in 0.0.9) if (!$this->emftp->ftp_chdir( $to_dir)) { // we failed; don't close the connection though, assume it will be cleaned up later $err_msg = sprintf( $lang['EM_modio_close_chdir'], $to_dir) ; // we do not wish to overwrite a pre-existing error message. close is often called after handling // another error. If this is the case then append this message on the end of that one. $this->err_msg = ($this->err_msg == '') ? "modio_close[1]<br><br>$err_msg" : 'modio_close[1]->' . $this->err_msg . '<br><br><b>' . $lang['EM_err_secondary'] . '<b><br>' . $err_msg ; return false ; } // assume the ftp connection has already been prepped; dump the array to a file if (!$this->emftp->ftp_put_array( $to_file, $this->afile, $this->ftp_cache)) { // we failed; don't close the connection though, assume it will be cleaned up later $err_msg = sprintf( $lang['EM_modio_close_ftp'], $to_dir . $to_file) ; // we do not wish to overwrite a pre-existing error message. close is often called after handling // another error. If this is the case then append this message on the end of that one. $this->err_msg = ($this->err_msg == '') ? "modio_close[2]<br><br>$err_msg" : 'modio_close[2]->' . $this->err_msg . '<br><br><b>' . $lang['EM_err_secondary'] . '<b><br>' . $err_msg ; return false ; } // we must now cd back from whence we came ;-) (found in 0.0.9) if (!$this->emftp->ftp_chdir( $return_path)) { // we failed; don't close the connection though, assume it will be cleaned up later $err_msg = sprintf( $lang['EM_modio_close_chdir'], $return_path) ; // we do not wish to overwrite a pre-existing error message. close is often called after handling // another error. If this is the case then append this message on the end of that one. $this->err_msg = ($this->err_msg == '') ? "modio_close[3]<br><br>$err_msg" : 'modio_close[3]->' . $this->err_msg . '<br><br><b>' . $lang['EM_err_secondary'] . '<b><br>' . $err_msg ; return false ; } } // assembling for download or for screen display else if ( $this->write_method == 'local') { // do nothing } // display on screen else { // do nothing } return true ; } // make ftp connection if needed; generally this will be called by the command file mod_io object // before batch processing function modio_prep( $action, $debug=false) { global $lang ; // called when moving a file into its final place, or when writing the buffer via ftp // using the FTP class if ((($action == 'move') && ($this->move_method == 'ftpa')) || (($action == 'write') && ($this->write_method == 'ftpb'))) { $this->emftp = new emftp( $this->ftp_type, $debug) ; if (!$this->emftp->ftp_connect( $this->ftp_host)) { $this->err_msg = 'modio_prep[1]<br><br>' ; $this->err_msg .= $lang['EM_modio_prep_conn'] ; return false ; } else if (!$this->emftp->ftp_login( $this->ftp_user, $this->ftp_pass)) { $this->emftp->ftp_quit(); $this->err_msg = 'modio_prep[2]<br><br>' ; $this->err_msg .= $lang['EM_modio_prep_login'] ; return false ; } // CD to the phpBB root then we will always know the relative dir we are in (added 0.0.9c) else if (!$this->emftp->ftp_chdir( $this->ftp_path)) { $this->emftp->ftp_quit(); $this->err_msg = 'modio_prep[3]<br><br>' ; $this->err_msg .= $lang['EM_modio_prep_chdir'] ; return false ; } } return true ; } // close ftp connection if needed; generall this will be called by the command file mod_io object // before batch processing function modio_cleanup( $action) { if ((($action == 'move') && ($this->move_method == 'ftpa')) || (($action == 'write') && ($this->write_method == 'ftpb'))) { $this->emftp->ftp_quit(); } } // close it down and take care of business function modio_move( $to, $from, $mod_count, $link, $type) { global $lang, $script_path, $phpbb_root_path, $install_path ; $this->err_msg = '' ; // everything enters relative to the exec script directory; cleanup some vars $root = ( substr($phpbb_root_path, 0, 2) == './') ? substr($phpbb_root_path, 2) : $phpbb_root_path ; $ipath = ( substr($install_path, 0, 2) == './') ? substr($install_path, 2) : $install_path ; // // copy access on the server // if ( $this->move_method == 'copy') { // make file paths relative to the EM or installer execution point $to = ( substr($to, 0, 9) == '../../../') ? $root . substr($to, 9) : $ipath . $to ; $from = ( substr($from, 0, 9) == '../../../') ? $root . substr($from, 9) : $ipath . $from ; ////////////////////// ////////////////////// ////////////////////// BUG! should be able to do *.* and should also make new dirs if needed ////////////////////// ////////////////////// $split=explode('/', $from) ; if ($split[count($split)-1] == '*.*') { return '<b>' . $lang['EM_pp_manual'] . '</b>' ; } // return a success message if the copy works if ( copy( $from, $to)) { return '<b>' . $lang['EM_pp_complete'] . '</b>' ; } // we failed, oh dear else { $this->err_msg = 'modio_move[1]<br><br>' ; $this->err_msg .= sprintf( $lang['EM_modio_move_copy'], $from, $to) ; return '' ; } } // // FTP access to the server // else if ( $this->move_method == 'ftpa') { // make the "to" file path relative to the phpBB root and the "from" relative to EM runtime $to = ( substr($to, 0, 9) == '../../../') ? substr($to, 9) : $script_path . '/' . $ipath . $to ; $from = ( substr($from, 0, 9) == '../../../') ? substr($from, 9) : $script_path . '/' . $ipath . $from ; ////////////////////// ////////////////////// ////////////////////// BUG! should be able to do *.* and should also make new dirs if needed ////////////////////// ////////////////////// $split=explode('/', $from) ; if ($split[count($split)-1] == '*.*') { return '<b>' . $lang['EM_pp_manual'] . '</b>' ; } // leave some breadcrumbs so we can cd back to phpbb_root $return_path = '' ; $to_dir = '' ; $split_array = explode('/', $to) ; for ($count=0; $count<count($split_array)-1; $count++) { if ($split_array[$count] != '') { $return_path .= '../' ; $to_dir .= $split_array[$count] . '/' ; } } $to_dir = substr($to_dir, 0, strlen($to_dir)-1) ; // remove trailing slash $to_file = $split_array[count($split_array)-1] ; // get the file extension $file_extension = substr( $to_file, strpos($to_file, '.')+1) ; // I lifted this list from the attachment MOD and it saved me a lot of time. Thank you Acyd Burn! $extensions = array('ace', 'ai', 'aif', 'aifc', 'aiff', 'ar', 'asf', 'asx', 'au', 'avi', 'doc', 'dot', 'gif', 'gtar', 'gz', 'ivf', 'jpeg', 'jpg', 'm3u', 'mid', 'midi', 'mlv', 'mp2', 'mp3', 'mp2v', 'mpa', 'mpe', 'mpeg', 'mpg', 'mpv2', 'pdf', 'png', 'ppt', 'ps', 'rar', 'rm', 'rmi', 'snd', 'swf', 'tga', 'tif', 'wav', 'wax', 'wm', 'wma', 'wmv', 'wmx', 'wvx', 'xls', 'zip') ; $is_binary = false ; // see if the extension is in our list of binary types // damn! i wanted to use array_key_exists, but that is a PHP 4 function :( for ($count=0; $count<count($extensions); $count++) { // its a binary so mark it as such if ($file_extension == $extensions[$count]) { $is_binary = true ; break ; } } // we must first CD to the dir before putting the file (found in 0.0.9) if ( $to_dir == '') { // do nothing } else if (!$this->emftp->ftp_chdir( $to_dir)) { // we failed; don't close the connection though, assume it will be cleaned up later $this->err_msg = 'modio_move[2]<br><br>' ; $this->err_msg .= sprintf( $lang['EM_modio_mkdir_chdir'], $to_dir, $this->emftp->ftp_pwd()) ; return '' ; } // move the file into place, throw an error if we fail // bases on the extension, move as binary or ascii (0.0.10) if (!$this->emftp->ftp_put( $to_file, $root . $from, $is_binary)) { $this->err_msg = 'modio_move[3]<br><br>' ; $this->err_msg .= sprintf( $lang['EM_modio_move_ftpa'], $from, $to_file) ; return '' ; } // CD back from whence we came ;-) if ( $return_path == '') { // do nothing } else if (!$this->emftp->ftp_chdir( $return_path)) { // we failed; don't close the connection though, assume it will be cleaned up later $this->err_msg = 'modio_move[4]<br><br>' ; $this->err_msg = sprintf( $lang['EM_modio_mkdir_chdir'], $return_path, $this->emftp->ftp_pwd()) ; return '' ; } return '<b>' . $lang['EM_pp_complete'] . '</b>' ; } // they be running the script, so nothing to do except return that it is ready to go else if ( $this->move_method == 'exec') { return '<b>' . $lang['EM_pp_ready'] . '</b>' ; } /////////////////////////// /////////////////////////// /////////////////////////// there should really be a case to handle write_method is unknown /////////////////////////// /////////////////////////// // manually loading, so either writing to screen or downloading locally depending upon write method else { // downloading; return a form button that will activate the download of the file from the server if ($this->write_method == 'local') { // a backup file is the "from" and a download file is the "to" $button = '<input type="hidden" name="file' . $mod_count . '" value="' . $to . '">' . "\n" ; if ($type == $lang['EM_pp_backup']) { $button = '<input type="hidden" name="file' . $mod_count . '" value="'. $from .'">' . "\n" ; } $button .= '<input class="mainoption" type="submit" name="submitfile' . $mod_count . '" value="' . $type . '" />' . "\n" ; return $button ; } // writing to screen; return a link that will pop open a new window with the file contents else if ($this->write_method == 'screen') { $link = '<a href="' . $link . '" target="_blank">' . $type . '</a>' ; return $link ; } } } } ?> --- NEW FILE: em_functions.php --- <?php /*************************************************************************** * em_functions.php * ------------------- * begin : Sunday, Mar 31, 2002 * copyright : (C) 2002-2004 by Nuttzy - Craig Nuttall * email : nu...@bl... * * $Id: em_functions.php,v 1.1 2005/04/24 14:59:53 bkettle Exp $ * * ***************************************************************************/ /*************************************************************************** * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. [...1233 lines suppressed...] 'to_path' => $files[$x]['path'], 'to_file' => $files[$x]['filename']) ; } } // everything else else { // make any dirs we may need $result_files[] = array('from_path' => $tmp_from_dir, 'from_file' => $tmp_file, 'to_path' => $tmp_to_dir, 'to_file' => $tmp_to_file) ; } return $result_files ; } ?> --- NEW FILE: em_cipher.php --- <?php /*************************************************************************** * em_cipher.php * ------------------- * begin : Tuesday, Dec 10, 2003 * copyright : (C) 2002 - 2004 by Nuttzy - Craig Nuttall * email : nu...@bl... * * $Id: em_cipher.php,v 1.1 2005/04/24 14:59:53 bkettle Exp $ * * ***************************************************************************/ /*************************************************************************** * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * ***************************************************************************/ // // THE PURPOSE of this module is purely to encrypt the FTP password. Since I can't // be sure what PHP libraries are installed, I cannot use mcrypt. Thus the addition // of this 29k file just to make a password safe. Oh well, EM spares no expense ;-) // /** * The Cipher_blowfish class implements the Cipher interface enryption data * using the Blowfish algorithm. * * Copyright 2002-2003 Mike Cochrane <mi...@gr...> * * See the enclosed file COPYING for license information (LGPL). If you * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html. * * @author Mike Cochrane <mi...@gr...> * @version $Revision: 1.1 $ * //// //// NOTE: a few small cosmetic changes made by Nuttzy //// * */ class Cipher_blowfish { /* Pi Array */ var $p = array( 0x243F6A88, 0x85A308D3, 0x13198A2E, 0x03707344, 0xA4093822, 0x299F31D0, 0x082EFA98, 0xEC4E6C89, 0x452821E6, 0x38D01377, 0xBE5466CF, 0x34E90C6C, 0xC0AC29B7, 0xC97C50DD, 0x3F84D5B5, 0xB5470917, 0x9216D5D9, 0x8979FB1B); /* S Boxes */ var $s1 = array( 0xD1310BA6, 0x98DFB5AC, 0x2FFD72DB, 0xD01ADFB7, 0xB8E1AFED, 0x6A267E96, 0xBA7C9045, 0xF12C7F99, 0x24A19947, 0xB3916CF7, 0x0801F2E2, 0x858EFC16, 0x636920D8, 0x71574E69, 0xA458FEA3, 0xF4933D7E, 0x0D95748F, 0x728EB658, 0x718BCD58, 0x82154AEE, 0x7B54A41D, 0xC25A59B5, 0x9C30D539, 0x2AF26013, 0xC5D1B023, 0x286085F0, 0xCA417918, 0xB8DB38EF, 0x8E79DCB0, 0x603A180E, 0x6C9E0E8B, 0xB01E8A3E, 0xD71577C1, 0xBD314B27, 0x78AF2FDA, 0x55605C60, 0xE65525F3, 0xAA55AB94, 0x57489862, 0x63E81440, 0x55CA396A, 0x2AAB10B6, 0xB4CC5C34, 0x1141E8CE, 0xA15486AF, 0x7C72E993, 0xB3EE1411, 0x636FBC2A, 0x2BA9C55D, 0x741831F6, 0xCE5C3E16, 0x9B87931E, 0xAFD6BA33, 0x6C24CF5C, 0x7A325381, 0x28958677, 0x3B8F4898, 0x6B4BB9AF, 0xC4BFE81B, 0x66282193, 0x61D809CC, 0xFB21A991, 0x487CAC60, 0x5DEC8032, 0xEF845D5D, 0xE98575B1, 0xDC262302, 0xEB651B88, 0x23893E81, 0xD396ACC5, 0x0F6D6FF3, 0x83F44239, 0x2E0B4482, 0xA4842004, 0x69C8F04A, 0x9E1F9B5E, 0x21C66842, 0xF6E96C9A, 0x670C9C61, 0xABD388F0, 0x6A51A0D2, 0xD8542F68, 0x960FA728, 0xAB5133A3, 0x6EEF0B6C, 0x137A3BE4, 0xBA3BF050, 0x7EFB2A98, 0xA1F1651D, 0x39AF0176, 0x66CA593E, 0x82430E88, 0x8CEE8619, 0x456F9FB4, 0x7D84A5C3, 0x3B8B5EBE, 0xE06F75D8, 0x85C12073, 0x401A449F, 0x56C16AA6, 0x4ED3AA62, 0x363F7706, 0x1BFEDF72, 0x429B023D, 0x37D0D724, 0xD00A1248, 0xDB0FEAD3, 0x49F1C09B, 0x075372C9, 0x80991B7B, 0x25D479D8, 0xF6E8DEF7, 0xE3FE501A, 0xB6794C3B, 0x976CE0BD, 0x04C006BA, 0xC1A94FB6, 0x409F60C4, 0x5E5C9EC2, 0x196A2463, 0x68FB6FAF, 0x3E6C53B5, 0x1339B2EB, 0x3B52EC6F, 0x6DFC511F, 0x9B30952C, 0xCC814544, 0xAF5EBD09, 0xBEE3D004, 0xDE334AFD, 0x660F2807, 0x192E4BB3, 0xC0CBA857, 0x45C8740F, 0xD20B5F39, 0xB9D3FBDB, 0x5579C0BD, 0x1A60320A, 0xD6A100C6, 0x402C7279, 0x679F25FE, 0xFB1FA3CC, 0x8EA5E9F8, 0xDB3222F8, 0x3C7516DF, 0xFD616B15, 0x2F501EC8, 0xAD0552AB, 0x323DB5FA, 0xFD238760, 0x53317B48, 0x3E00DF82, 0x9E5C57BB, 0xCA6F8CA0, 0x1A87562E, 0xDF1769DB, 0xD542A8F6, 0x287EFFC3, 0xAC6732C6, 0x8C4F5573, 0x695B27B0, 0xBBCA58C8, 0xE1FFA35D, 0xB8F011A0, 0x10FA3D98, 0xFD2183B8, 0x4AFCB56C, 0x2DD1D35B, 0x9A53E479, 0xB6F84565, 0xD28E49BC, 0x4BFB9790, 0xE1DDF2DA, 0xA4CB7E33, 0x62FB1341, 0xCEE4C6E8, 0xEF20CADA, 0x36774C01, 0xD07E9EFE, 0x2BF11FB4, 0x95DBDA4D, 0xAE909198, 0xEAAD8E71, 0x6B93D5A0, 0xD08ED1D0, 0xAFC725E0, 0x8E3C5B2F, 0x8E7594B7, 0x8FF6E2FB, 0xF2122B64, 0x8888B812, 0x900DF01C, 0x4FAD5EA0, 0x688FC31C, 0xD1CFF191, 0xB3A8C1AD, 0x2F2F2218, 0xBE0E1777, 0xEA752DFE, 0x8B021FA1, 0xE5A0CC0F, 0xB56F74E8, 0x18ACF3D6, 0xCE89E299, 0xB4A84FE0, 0xFD13E0B7, 0x7CC43B81, 0xD2ADA8D9, 0x165FA266, 0x80957705, 0x93CC7314, 0x211A1477, 0xE6AD2065, 0x77B5FA86, 0xC75442F5, 0xFB9D35CF, 0xEBCDAF0C, 0x7B3E89A0, 0xD6411BD3, 0xAE1E7E49, 0x00250E2D, 0x2071B35E, 0x226800BB, 0x57B8E0AF, 0x2464369B, 0xF009B91E, 0x5563911D, 0x59DFA6AA, 0x78C14389, 0xD95A537F, 0x207D5BA2, 0x02E5B9C5, 0x83260376, 0x6295CFA9, 0x11C81968, 0x4E734A41, 0xB3472DCA, 0x7B14A94A, 0x1B510052, 0x9A532915, 0xD60F573F, 0xBC9BC6E4, 0x2B60A476, 0x81E67400, 0x08BA6FB5, 0x571BE91F, 0xF296EC6B, 0x2A0DD915, 0xB6636521, 0xE7B9F9B6, 0xFF34052E, 0xC5855664, 0x53B02D5D, 0xA99F8FA1, 0x08BA4799, 0x6E85076A); var $s2 = array( 0x4B7A70E9, 0xB5B32944, 0xDB75092E, 0xC4192623, 0xAD6EA6B0, 0x49A7DF7D, 0x9CEE60B8, 0x8FEDB266, 0xECAA8C71, 0x699A17FF, 0x5664526C, 0xC2B19EE1, 0x193602A5, 0x75094C29, 0xA0591340, 0xE4183A3E, 0x3F54989A, 0x5B429D65, 0x6B8FE4D6, 0x99F73FD6, 0xA1D29C07, 0xEFE830F5, 0x4D2D38E6, 0xF0255DC1, 0x4CDD2086, 0x8470EB26, 0x6382E9C6, 0x021ECC5E, 0x09686B3F, 0x3EBAEFC9, 0x3C971814, 0x6B6A70A1, 0x687F3584, 0x52A0E286, 0xB79C5305, 0xAA500737, 0x3E07841C, 0x7FDEAE5C, 0x8E7D44EC, 0x5716F2B8, 0xB03ADA37, 0xF0500C0D, 0xF01C1F04, 0x0200B3FF, 0xAE0CF51A, 0x3CB574B2, 0x25837A58, 0xDC0921BD, 0xD19113F9, 0x7CA92FF6, 0x94324773, 0x22F54701, 0x3AE5E581, 0x37C2DADC, 0xC8B57634, 0x9AF3DDA7, 0xA9446146, 0x0FD0030E, 0xECC8C73E, 0xA4751E41, 0xE238CD99, 0x3BEA0E2F, 0x3280BBA1, 0x183EB331, 0x4E548B38, 0x4F6DB908, 0x6F420D03, 0xF60A04BF, 0x2CB81290, 0x24977C79, 0x5679B072, 0xBCAF89AF, 0xDE9A771F, 0xD9930810, 0xB38BAE12, 0xDCCF3F2E, 0x5512721F, 0x2E6B7124, 0x501ADDE6, 0x9F84CD87, 0x7A584718, 0x7408DA17, 0xBC9F9ABC, 0xE94B7D8C, 0xEC7AEC3A, 0xDB851DFA, 0x63094366, 0xC464C3D2, 0xEF1C1847, 0x3215D908, 0xDD433B37, 0x24C2BA16, 0x12A14D43, 0x2A65C451, 0x50940002, 0x133AE4DD, 0x71DFF89E, 0x10314E55, 0x81AC77D6, 0x5F11199B, 0x043556F1, 0xD7A3C76B, 0x3C11183B, 0x5924A509, 0xF28FE6ED, 0x97F1FBFA, 0x9EBABF2C, 0x1E153C6E, 0x86E34570, 0xEAE96FB1, 0x860E5E0A, 0x5A3E2AB3, 0x771FE71C, 0x4E3D06FA, 0x2965DCB9, 0x99E71D0F, 0x803E89D6, 0x5266C825, 0x2E4CC978, 0x9C10B36A, 0xC6150EBA, 0x94E2EA78, 0xA5FC3C53, 0x1E0A2DF4, 0xF2F74EA7, 0x361D2B3D, 0x1939260F, 0x19C27960, 0x5223A708, 0xF71312B6, 0xEBADFE6E, 0xEAC31F66, 0xE3BC4595, 0xA67BC883, 0xB17F37D1, 0x018CFF28, 0xC332DDEF, 0xBE6C5AA5, 0x65582185, 0x68AB9802, 0xEECEA50F, 0xDB2F953B, 0x2AEF7DAD, 0x5B6E2F84, 0x1521B628, 0x29076170, 0xECDD4775, 0x619F1510, 0x13CCA830, 0xEB61BD96, 0x0334FE1E, 0xAA0363CF, 0xB5735C90, 0x4C70A239, 0xD59E9E0B, 0xCBAADE14, 0xEECC86BC, 0x60622CA7, 0x9CAB5CAB, 0xB2F3846E, 0x648B1EAF, 0x19BDF0CA, 0xA02369B9, 0x655ABB50, 0x40685A32, 0x3C2AB4B3, 0x319EE9D5, 0xC021B8F7, 0x9B540B19, 0x875FA099, 0x95F7997E, 0x623D7DA8, 0xF837889A, 0x97E32D77, 0x11ED935F, 0x16681281, 0x0E358829, 0xC7E61FD6, 0x96DEDFA1, 0x7858BA99, 0x57F584A5, 0x1B227263, 0x9B83C3FF, 0x1AC24696, 0xCDB30AEB, 0x532E3054, 0x8FD948E4, 0x6DBC3128, 0x58EBF2EF, 0x34C6FFEA, 0xFE28ED61, 0xEE7C3C73, 0x5D4A14D9, 0xE864B7E3, 0x42105D14, 0x203E13E0, 0x45EEE2B6, 0xA3AAABEA, 0xDB6C4F15, 0xFACB4FD0, 0xC742F442, 0xEF6ABBB5, 0x654F3B1D, 0x41CD2105, 0xD81E799E, 0x86854DC7, 0xE44B476A, 0x3D816250, 0xCF62A1F2, 0x5B8D2646, 0xFC8883A0, 0xC1C7B6A3, 0x7F1524C3, 0x69CB7492, 0x47848A0B, 0x5692B285, 0x095BBF00, 0xAD19489D, 0x1462B174, 0x23820E00, 0x58428D2A, 0x0C55F5EA, 0x1DADF43E, 0x233F7061, 0x3372F092, 0x8D937E41, 0xD65FECF1, 0x6C223BDB, 0x7CDE3759, 0xCBEE7460, 0x4085F2A7, 0xCE77326E, 0xA6078084, 0x19F8509E, 0xE8EFD855, 0x61D99735, 0xA969A7AA, 0xC50C06C2, 0x5A04ABFC, 0x800BCADC, 0x9E447A2E, 0xC3453484, 0xFDD56705, 0x0E1E9EC9, 0xDB73DBD3, 0x105588CD, 0x675FDA79, 0xE3674340, 0xC5C43465, 0x713E38D8, 0x3D28F89E, 0xF16DFF20, 0x153E21E7, 0x8FB03D4A, 0xE6E39F2B, 0xDB83ADF7); var $s3 = array( 0xE93D5A68, 0x948140F7, 0xF64C261C, 0x94692934, 0x411520F7, 0x7602D4F7, 0xBCF46B2E, 0xD4A20068, 0xD4082471, 0x3320F46A, 0x43B7D4B7, 0x500061AF, 0x1E39F62E, 0x97244546, 0x14214F74, 0xBF8B8840, 0x4D95FC1D, 0x96B591AF, 0x70F4DDD3, 0x66A02F45, 0xBFBC09EC, 0x03BD9785, 0x7FAC6DD0, 0x31CB8504, 0x96EB27B3, 0x55FD3941, 0xDA2547E6, 0xABCA0A9A, 0x28507825, 0x530429F4, 0x0A2C86DA, 0xE9B66DFB, 0x68DC1462, 0xD7486900, 0x680EC0A4, 0x27A18DEE, 0x4F3FFEA2, 0xE887AD8C, 0xB58CE006, 0x7AF4D6B6, 0xAACE1E7C, 0xD3375FEC, 0xCE78A399, 0x406B2A42, 0x20FE9E35, 0xD9F385B9, 0xEE39D7AB, 0x3B124E8B, 0x1DC9FAF7, 0x4B6D1856, 0x26A36631, 0xEAE397B2, 0x3A6EFA74, 0xDD5B4332, 0x6841E7F7, 0xCA7820FB, 0xFB0AF54E, 0xD8FEB397, 0x454056AC, 0xBA489527, 0x55533A3A, 0x20838D87, 0xFE6BA9B7, 0xD096954B, 0x55A867BC, 0xA1159A58, 0xCCA92963, 0x99E1DB33, 0xA62A4A56, 0x3F3125F9, 0x5EF47E1C, 0x9029317C, 0xFDF8E802, 0x04272F70, 0x80BB155C, 0x05282CE3, 0x95C11548, 0xE4C66D22, 0x48C1133F, 0xC70F86DC, 0x07F9C9EE, 0x41041F0F, 0x404779A4, 0x5D886E17, 0x325F51EB, 0xD59BC0D1, 0xF2BCC18F, 0x41113564, 0x257B7834, 0x602A9C60, 0xDFF8E8A3, 0x1F636C1B, 0x0E12B4C2, 0x02E1329E, 0xAF664FD1, 0xCAD18115, 0x6B2395E0, 0x333E92E1, 0x3B240B62, 0xEEBEB922, 0x85B2A20E, 0xE6BA0D99, 0xDE720C8C, 0x2DA2F728, 0xD0127845, 0x95B794FD, 0x647D0862, 0xE7CCF5F0, 0x5449A36F, 0x877D48FA, 0xC39DFD27, 0xF33E8D1E, 0x0A476341, 0x992EFF74, 0x3A6F6EAB, 0xF4F8FD37, 0xA812DC60, 0xA1EBDDF8, 0x991BE14C, 0xDB6E6B0D, 0xC67B5510, 0x6D672C37, 0x2765D43B, 0xDCD0E804, 0xF1290DC7, 0xCC00FFA3, 0xB5390F92, 0x690FED0B, 0x667B9FFB, 0xCEDB7D9C, 0xA091CF0B, 0xD9155EA3, 0xBB132F88, 0x515BAD24, 0x7B9479BF, 0x763BD6EB, 0x37392EB3, 0xCC115979, 0x8026E297, 0xF42E312D, 0x6842ADA7, 0xC66A2B3B, 0x12754CCC, 0x782EF11C, 0x6A124237, 0xB79251E7, 0x06A1BBE6, 0x4BFB6350, 0x1A6B1018, 0x11CAEDFA, 0x3D25BDD8, 0xE2E1C3C9, 0x44421659, 0x0A121386, 0xD90CEC6E, 0xD5ABEA2A, 0x64AF674E, 0xDA86A85F, 0xBEBFE988, 0x64E4C3FE, 0x9DBC8057, 0xF0F7C086, 0x60787BF8, 0x6003604D, 0xD1FD8346, 0xF6381FB0, 0x7745AE04, 0xD736FCCC, 0x83426B33, 0xF01EAB71, 0xB0804187, 0x3C005E5F, 0x77A057BE, 0xBDE8AE24, 0x55464299, 0xBF582E61, 0x4E58F48F, 0xF2DDFDA2, 0xF474EF38, 0x8789BDC2, 0x5366F9C3, 0xC8B38E74, 0xB475F255, 0x46FCD9B9, 0x7AEB2661, 0x8B1DDF84, 0x846A0E79, 0x915F95E2, 0x466E598E, 0x20B45770, 0x8CD55591, 0xC902DE4C, 0xB90BACE1, 0xBB8205D0, 0x11A86248, 0x7574A99E, 0xB77F19B6, 0xE0A9DC09, 0x662D09A1, 0xC4324633, 0xE85A1F02, 0x09F0BE8C, 0x4A99A025, 0x1D6EFE10, 0x1AB93D1D, 0x0BA5A4DF, 0xA186F20F, 0x2868F169, 0xDCB7DA83, 0x573906FE, 0xA1E2CE9B, 0x4FCD7F52, 0x50115E01, 0xA70683FA, 0xA002B5C4, 0x0DE6D027, 0x9AF88C27, 0x773F8641, 0xC3604C06, 0x61A806B5, 0xF0177A28, 0xC0F586E0, 0x006058AA, 0x30DC7D62, 0x11E69ED7, 0x2338EA63, 0x53C2DD94, 0xC2C21634, 0xBBCBEE56, 0x90BCB6DE, 0xEBFC7DA1, 0xCE591D76, 0x6F05E409, 0x4B7C0188, 0x39720A3D, 0x7C927C24, 0x86E3725F, 0x724D9DB9, 0x1AC15BB4, 0xD39EB8FC, 0xED545578, 0x08FCA5B5, 0xD83D7CD3, 0x4DAD0FC4, 0x1E50EF5E, 0xB161E6F8, 0xA28514D9, 0x6C51133C, 0x6FD5C7E7, 0x56E14EC4, 0x362ABFCE, 0xDDC6C837, 0xD79A3234, 0x92638212, 0x670EFA8E, 0x406000E0); var $s4 = array( 0x3A39CE37, 0xD3FAF5CF, 0xABC27737, 0x5AC52D1B, 0x5CB0679E, 0x4FA33742, 0xD3822740, 0x99BC9BBE, 0xD5118E9D, 0xBF0F7315, 0xD62D1C7E, 0xC700C47B, 0xB78C1B6B, 0x21A19045, 0xB26EB1BE, 0x6A366EB4, 0x5748AB2F, 0xBC946E79, 0xC6A376D2, 0x6549C2C8, 0x530FF8EE, 0x468DDE7D, 0xD5730A1D, 0x4CD04DC6, 0x2939BBDB, 0xA9BA4650, 0xAC9526E8, 0xBE5EE304, 0xA1FAD5F0, 0x6A2D519A, 0x63EF8CE2, 0x9A86EE22, 0xC089C2B8, 0x43242EF6, 0xA51E03AA, 0x9CF2D0A4, 0x83C061BA, 0x9BE96A4D, 0x8FE51550, 0xBA645BD6, 0x2826A2F9, 0xA73A3AE1, 0x4BA99586, 0xEF5562E9, 0xC72FEFD3, 0xF752F7DA, 0x3F046F69, 0x77FA0A59, 0x80E4A915, 0x87B08601, 0x9B09E6AD, 0x3B3EE593, 0xE990FD5A, 0x9E34D797, 0x2CF0B7D9, 0x022B8B51, 0x96D5AC3A, 0x017DA67D, 0xD1CF3ED6, 0x7C7D2D28, 0x1F9F25CF, 0xADF2B89B, 0x5AD6B472, 0x5A88F54C, 0xE029AC71, 0xE019A5E6, 0x47B0ACFD, 0xED93FA9B, 0xE8D3C48D, 0x283B57CC, 0xF8D56629, 0x79132E28, 0x785F0191, 0xED756055, 0xF7960E44, 0xE3D35E8C, 0x15056DD4, 0x88F46DBA, 0x03A16125, 0x0564F0BD, 0xC3EB9E15, 0x3C9057A2, 0x97271AEC, 0xA93A072A, 0x1B3F6D9B, 0x1E6321F5, 0xF59C66FB, 0x26DCF319, 0x7533D928, 0xB155FDF5, 0x03563482, 0x8ABA3CBB, 0x28517711, 0xC20AD9F8, 0xABCC5167, 0xCCAD925F, 0x4DE81751, 0x3830DC8E, 0x379D5862, 0x9320F991, 0xEA7A90C2, 0xFB3E7BCE, 0x5121CE64, 0x774FBE32, 0xA8B6E37E, 0xC3293D46, 0x48DE5369, 0x6413E680, 0xA2AE0810, 0xDD6DB224, 0x69852DFD, 0x09072166, 0xB39A460A, 0x6445C0DD, 0x586CDECF, 0x1C20C8AE, 0x5BBEF7DD, 0x1B588D40, 0xCCD2017F, 0x6BB4E3BB, 0xDDA26A7E, 0x3A59FF45, 0x3E350A44, 0xBCB4CDD5, 0x72EACEA8, 0xFA6484BB, 0x8D6612AE, 0xBF3C6F47, 0xD29BE463, 0x542F5D9E, 0xAEC2771B, 0xF64E6370, 0x740E0D8D, 0xE75B1357, 0xF8721671, 0xAF537D5D, 0x4040CB08, 0x4EB4E2CC, 0x34D2466A, 0x0115AF84, 0xE1B00428, 0x95983A1D, 0x06B89FB4, 0xCE6EA048, 0x6F3F3B82, 0x3520AB82, 0x011A1D4B, 0x277227F8, 0x611560B1, 0xE7933FDC, 0xBB3A792B, 0x344525BD, 0xA08839E1, 0x51CE794B, 0x2F32C9B7, 0xA01FBAC9, 0xE01CC87E, 0xBCC7D1F6, 0xCF0111C3, 0xA1E8AAC7, 0x1A908749, 0xD44FBD9A, 0xD0DADECB, 0xD50ADA38, 0x0339C32A, 0xC6913667, 0x8DF9317C, 0xE0B12B4F, 0xF79E59B7, 0x43F5BB3A, 0xF2D519FF, 0x27D9459C, 0xBF97222C, 0x15E6FC2A, 0x0F91FC71, 0x9B941525, 0xFAE59361, 0xCEB69CEB, 0xC2A86459, 0x12BAA8D1, 0xB6C1075E, 0xE3056A0C, 0x10D25065, 0xCB03A442, 0xE0EC6E0E, 0x1698DB3B, 0x4C98A0BE, 0x3278E964, 0x9F1F9532, 0xE0D392DF, 0xD3A0342B, 0x8971F21E, 0x1B0A7441, 0x4BA3348C, 0xC5BE7120, 0xC37632D8, 0xDF359F8D, 0x9B992F2E, 0xE60B6F47, 0x0FE3F11D, 0xE54CDA54, 0x1EDAD891, 0xCE6279CF, 0xCD3E7E6F, 0x1618B166, 0xFD2C1D05, 0x848FD2C5, 0xF6FB2299, 0xF523F357, 0xA6327623, 0x93A83531, 0x56CCCD02, 0xACF08162, 0x5A75EBB5, 0x6E163697, 0x88D273CC, 0xDE966292, 0x81B949D0, 0x4C50901B, 0x71C65614, 0xE6C6C7BD, 0x327A140A, 0x45E1D006, 0xC3F27B9A, 0xC9AA53FD, 0x62A80F00, 0xBB25BFE2, 0x35BDD2F6, 0x71126905, 0xB2040222, 0xB6CBCF7C, 0xCD769C2B, 0x53113EC0, 0x1640E3D3, 0x38ABBD60, 0x2547ADF0, 0xBA38209C, 0xF746CE76, 0x77AFA1C5, 0x20756060, 0x85CBFE4E, 0x8AE88DD8, 0x7AAAF9B0, 0x4CF9AA7E, 0x1948C25C, 0x02FB8A8C, 0x01C36AE4, 0xD6EBE1F9, 0x90D4F869, 0xA65CDEA0, 0x3F09252D, 0xC208E69F, 0xB74E6132, 0xCE77E25B, 0x578FDFE3, 0x3AC372E6); /* The number of rounds to do */ var $_rounds = 16; /* Constructor */ function Cipher_blowfish() { } /** * Set the key to be used for en/decryption * * @param String $key The key to use */ function setKey($key) { // we want a minimum length for our key $key .= '12345678' ; $key = $this->_formatKey($key); $keyPos = 0; $keyXor = 0; $iMax = count($this->p); $keyLen = count($key); for ($i = 0; $i < $iMax; $i++) { for ($t = 0; $t < 4; $t++) { $keyXor = ($keyXor << 8) | (($key[$keyPos]) & 0x0ff); if (++$keyPos == $keyLen) { $keyPos = 0; } } $this->p[$i] = $this->p[$i] ^ $keyXor; } $encZero = array('L' => 0, 'R' => 0); for ($i = 0; $i + 1 < $iMax; $i+=2) { $encZero = $this->_encryptBlock($encZero['L'], $encZero['R']); $this->p[$i] = $encZero['L']; $this->p[$i + 1] = $encZero['R']; } $iMax = count($this->s1); for ($i = 0; $i < $iMax; $i+=2) { $encZero = $this->_encryptBlock($encZero['L'], $encZero['R']); $this->s1[$i] = $encZero['L']; $this->s1[$i + 1] = $encZero['R']; } $iMax = count($this->s2); for ($i = 0; $i < $iMax; $i+=2) { $encZero = $this->_encryptBlock($encZero['L'], $encZero['R']); $this->s2[$i] = $encZero['L']; $this->s2[$i + 1] = $encZero['R']; } $iMax = count($this->s3); for ($i = 0; $i < $iMax; $i+=2) { $encZero = $this->_encryptBlock($encZero['L'], $encZero['R']); $this->s3[$i] = $encZero['L']; $this->s3[$i + 1] = $encZero['R']; } $iMax = count($this->s4); for ($i = 0; $i < $iMax; $i+=2) { $encZero = $this->_encryptBlock($encZero['L'], $encZero['R']); $this->s4[$i] = $encZero['L']; $this->s4[$i + 1] = $encZero['R']; } } /** * Return the size of the blocks that this cipher needs * * @return Integer The number of characters per block */ function getBlockSize() { return 8; } /** * Encrypt a block on data. * * @param String $block The data to encrypt * @param optional String $key The key to use * @param optional boolean $allparts Return an array containing the two * 32bit ints also. * * @return String the encrypted output */ function encryptBlock($block, $key = null, $allparts = false) { if (!is_null($key)) { $this->setKey($key); } list($L, $R) = array_values(unpack('N*', $block)); $parts = $this->_encryptBlock($L, $R); return pack("NN", $parts['L'], $parts['R']); } /** * Encrypt a block on data. * * @param String $block The data to encrypt * * @return String the encrypted output */ function _encryptBlock($L, $R) { $L ^= $this->p[0]; $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[1]; $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[2]; $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[3]; $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[4]; $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[5]; $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[6]; $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[7]; $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[8]; $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[9]; $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[10]; $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[11]; $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[12]; $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[13]; $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[14]; $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[15]; $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[16]; $R ^= $this->p[17]; return array('L' => $R, 'R' => $L); } /** * Decrypt a block on data. * * @param String $block The data to decrypt * @param optional String $key The key to use * * @return String the decrypted output */ function decryptBlock($block, $key = null) { if (!is_null($key)) { $this->setKey($key); } list($L, $R) = array_values(unpack('N*', $block)); $L ^= $this->p[17]; $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[16]; $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[15]; $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[14]; $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[13]; $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[12]; $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[11]; $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[10]; $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[9]; $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[8]; $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[7]; $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[6]; $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[5]; $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[4]; $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[3]; $R ^= ((($this->s1[($L >> 24) & 0xFF] + $this->s2[($L >> 16) & 0x0ff]) ^ $this->s3[($L >> 8) & 0x0ff]) + $this->s4[$L & 0x0ff]) ^ $this->p[2]; $L ^= ((($this->s1[($R >> 24) & 0xFF] + $this->s2[($R >> 16) & 0x0ff]) ^ $this->s3[($R >> 8) & 0x0ff]) + $this->s4[$R & 0x0ff]) ^ $this->p[1]; $decrypted = pack("NN", $R ^ $this->p[0], $L); return $decrypted; } /** * Converts a text key into an array * * @return array The key */ function _formatKey($key) { return array_values(unpack('C*', $key)); } } /** * The Cipher_BlockMode_cbc class implements the Cipher Block Chaininng method of * encrypting blocks of data. * * Copyright 2002-2003 Mike Cochrane <mi...@gr...> * * See the enclosed file COPYING for license information (LGPL). If you * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html. * * @author Mike Cochrane <mi...@gr...> * //// //// NOTE: Some changes by Nuttzy here. This class is the melding of several classes //// but I reduced the others down to only what I needed and this is the result. //// * */ class Cipher_BlockMode_cbc { var $_iv = "\0\0\0\0\0\0\0\0"; // String containing the initilization vector. var $blowfish ; // will contain a blowfish class var $filler ; // constructor function Cipher_BlockMode_cbc() { $this->blowfish = new Cipher_blowfish() ; $this->filler = 'nuttzy=1337' ; } // encrypts the text a chunk at a time and then strings them all together and returns the value function encrypt($plaintext) { $encrypted = ''; // added by Nuttzy, we want to make sure the password is nice and long so brute forcers won't know if this // is a really short pw $plaintext .= $this->filler ; $blocksize = $this->blowfish->getBlockSize(); $previousCipher = $this->_iv; $jMax = strlen($plaintext); for ($j = 0; $j < $jMax; $j += $blocksize) { $plain = substr($plaintext, $j, $blocksize); if (strlen($plain) < $blocksize) { // pad the block with \0's if it's not long enough $plain = str_pad($plain, 8, "\0"); } $plain = $plain ^ $previousCipher; $previousCipher = $this->blowfish->encryptBlock($plain); $encrypted .= $previousCipher; } // added by Nuttzy - we'll be storing the result in a DB so we need to replace ' with \' $encrypted = addslashes( $encrypted) ; // TAKE TWO: the way General Config settings work in phpBB, this isn't sufficient, get rid of the ' all together // $encrypted = str_replace( "\'", "''", $encrypted) ; $encrypted = str_replace( "\'", "NUTTICK", $encrypted) ; // NOTE: a cipher of "single'quote" (the cipher is the stuff between the double quotes) has the ' changed // to \' and again to ''. So the SQL string we generate for the DB looks like "single''quote". But this is // all just so the string is formed properly and what actually gets stored in the DB is "single'quote". The // same is true for any slashes that get added. The slashes won't actually show up when viewing the DB ;-) return $encrypted ; } // decrypts the cipher a chunk at a time and returns the plaintext function decrypt($ciphertext) { // TAKE TWO: the way General Config settings work in phpBB, this isn't sufficient, get rid of the ' all together $ciphertext = str_replace( 'NUTTICK', "'", $ciphertext) ; $decrypted = ''; $blocksize = $this->blowfish->getBlockSize(); $previousCipher = $this->_iv; $jMax = strlen($ciphertext); for ($j = 0; $j < $jMax; $j += $blocksize) { $plain = substr($ciphertext, $j, $blocksize); $decrypted .= $this->blowfish->decryptBlock($plain) ^ $previousCipher; $previousCipher = $plain; } // remove trailing \0's used to pad the last block while (substr($decrypted, -1, 1) == "\0") { $decrypted = substr($decrypted, 0, -1); } // added by nuttzy, we need strip off the extra characters we added $decrypted = substr( $decrypted, 0, strlen($decrypted) - strlen($this->filler)) ; return $decrypted; } } ?> --- NEW FILE: index.htm --- <html> <head> <title></title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> </head> <body bgcolor="#FFFFFF" text="#000000"> </body> </html> --- NEW FILE: em_ftp.php --- <?php /*************************************************************************** * em_ftp.php * ------------------- * begin : Tuesday, Dec 10, 2003 * copyright : (C) 2002-2004 Nuttzy - Craig Nuttall * email : nu...@bl... * * $Id: em_ftp.php,v 1.1 2005/04/24 14:59:53 bkettle Exp $ * * ***************************************************************************/ /*************************************************************************** * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. [...1300 lines suppressed...] // return us to phpbb root if (!$this->ftp_cdup_home( $num_return_cdup)) { $return_path = '' ; for ($i=0; $i<$num_return_cdup; $i++) { $return_path .= '../' ; } $err_msg = 'ftp_mkdir_struct_copy[3]<br><br>' ; $err_msg .= sprintf( $lang['EM_modio_mkdir_chdir'], $return_path, $this->ftp_pwd()); return false ; } return true ; } } ?> |