⚝
One Hat Cyber Team
⚝
Your IP:
216.73.216.50
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-file-abook
#!/usr/bin/env php */ 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-file-abook path-to-squirrelmail-data'); exit; } $data = $argv[1]; // Get list of SquirrelMail address book files if (is_dir($data)) { if (!($handle = opendir($data))) { exit; } $files = array(); while (false !== ($file = readdir($handle))) { if (preg_match('/.abook$/', $file)) { $files[] = $data . '/' . $file; } } closedir($handle); } else { $files = array($data); } // Loop through SquirrelMail address book files foreach($files as $file) { if (!($handle = fopen($file, 'r'))) { continue; } // Set current user $user = substr(basename($file), 0, -6); $registry->setAuth($user, array()); $cli->message('Importing ' . $user . '\'s address book'); // Reset user prefs unset($prefs); $prefs = $injector->getInstance('Horde_Core_Factory_Prefs')->create('turba', array( 'cache' => false, 'user' => $user )); // Reset $cfgSources for current user. unset($cfgSources); include TURBA_BASE . '/config/backends.php'; $cfgSources = Turba::getConfigFromShares($cfgSources); $cfgSources = Turba::permissionsFilter($cfgSources); // 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])) { PEAR::raiseError(sprintf(_("Invalid address book: %s"), $import_source), 'horde.warning'); continue; } // Initiate driver try { $driver = $GLOBALS['injector']->getInstance('Turba_Factory_Driver')->create($import_source); } catch (Turba_Exception $e) { PEAR::raiseError(sprintf(_("Connection failed: %s"), $e->getMessage()), 'horde.error', null, null, $import_source); continue; } // Read addressbook file, one line at a time while (!feof($handle)) { $buffer = fgets($handle); if (empty($buffer)) { continue; } $entry = explode('|', $buffer); $members = explode(',', $entry[3]); if (count($members) > 1) { // Entry is a list of contacts, import each individually and // create a group that contains them. $attributes = array('alias' => $entry[0], 'firstname' => $entry[1], 'lastname' => $entry[2], 'notes' => $entry[4]); $gid = $driver->add($attributes); $group = new Turba_Object_Group($driver, array_merge($attributes, array('__key' => $gid))); foreach ($members as $member) { try { $result = $driver->add(array('firstname' => $member, 'email' => $member)); $group->addMember($result, $import_source); $cli->message(' Added ' . $member, 'cli.success'); } catch (Turba_Exception $e) { $cli->message(' ' . $e->getMessage(), 'cli.error'); } } $group->store(); } else { // entry only contains one contact, import it $contact = array( 'alias' => $entry[0], 'firstname' => $entry[1], 'lastname' => $entry[2], 'email' => $entry[3], 'notes' => $entry[4] ); try { $driver->add($contact); $cli->message(' Added ' . $entry[3], 'cli.success'); } catch (Turba_Exception $e) { $cli->message(' ' . $e->getMessage(), 'cli.error'); } } } fclose($handle); }