From 9870dac30de1b8d1bdeab57af3eeb7c89b21ef76 Mon Sep 17 00:00:00 2001 From: alecpl <alec@alec.pl> Date: Sat, 14 Apr 2012 02:35:52 -0400 Subject: [PATCH] - Make some methods public (#1488428) --- bin/msgimport.sh | 89 ++++++++++++++++++++------------------------ 1 files changed, 41 insertions(+), 48 deletions(-) diff --git a/bin/msgimport.sh b/bin/msgimport.sh index 98a0389..845c585 100755 --- a/bin/msgimport.sh +++ b/bin/msgimport.sh @@ -1,55 +1,23 @@ -#!/usr/bin/php -qC +#!/usr/bin/env php <?php -define('INSTALL_PATH', preg_replace('/bin\/$/', '', getcwd()) . '/'); +define('INSTALL_PATH', realpath(dirname(__FILE__) . '/..') . '/' ); ini_set('memory_limit', -1); -require_once INSTALL_PATH.'program/include/iniset.php'; - -/** - * Parse commandline arguments into a hash array - */ -function get_args($aliases=array()) -{ - $args = array(); - for ($i=1; $i<count($_SERVER['argv']); $i++) - { - $arg = $_SERVER['argv'][$i]; - if (substr($arg, 0, 2) == '--') - { - $sp = strpos($arg, '='); - $key = substr($arg, 2, $sp - 2); - $value = substr($arg, $sp+1); - } - else if ($arg{0} == '-') - { - $key = substr($arg, 1); - $value = $_SERVER['argv'][++$i]; - } - else - continue; - - $args[$key] = preg_replace(array('/^["\']/', '/["\']$/'), '', $value); - - if ($alias = $aliases[$key]) - $args[$alias] = $args[$key]; - } - - return $args; -} - +require_once INSTALL_PATH.'program/include/clisetup.php'; function print_usage() { - print "Usage: msgimport -h imap-host -u user-name -f message-file\n"; + print "Usage: msgimport -h imap-host -u user-name -m mailbox -f message-file\n"; print "--host IMAP host\n"; print "--user IMAP user name\n"; + print "--mbox Target mailbox\n"; print "--file Message file to upload\n"; } // get arguments -$args = get_args(array('h' => 'host', 'u' => 'user', 'p' => 'pass', 'f' => 'file')) + array('host' => 'localhost'); +$args = get_opt(array('h' => 'host', 'u' => 'user', 'p' => 'pass', 'm' => 'mbox', 'f' => 'file')) + array('host' => 'localhost', 'mbox' => 'INBOX'); if ($_SERVER['argv'][1] == 'help') { @@ -77,11 +45,10 @@ } // prompt for password -echo "Password: "; -$args['pass'] = trim(fgets(STDIN)); - -// clear password input -echo chr(8)."\rPassword: ".str_repeat("*", strlen($args['pass']))."\n"; +if (empty($args['pass'])) +{ + $args['pass'] = prompt_silent("Password: "); +} // parse $host URL $a_host = parse_url($args['host']); @@ -104,17 +71,43 @@ if ($IMAP->connect($host, $args['user'], $args['pass'], $imap_port, $imap_ssl)) { print "IMAP login successful.\n"; - print "Uploading message...\n"; + print "Uploading messages...\n"; + $count = 0; + $message = $lastline = ''; + + $fp = fopen($args['file'], 'r'); + while (($line = fgets($fp)) !== false) + { + if (preg_match('/^From\s+-/', $line) && $lastline == '') + { + if (!empty($message)) + { + if ($IMAP->save_message($args['mbox'], rtrim($message))) + $count++; + else + die("Failed to save message to {$args['mbox']}\n"); + $message = ''; + } + continue; + } + + $message .= $line; + $lastline = rtrim($line); + } + + if (!empty($message) && $IMAP->save_message($args['mbox'], rtrim($message))) + $count++; + // upload message from file - if ($IMAP->save_message('INBOX', file_get_contents($args['file']))) - print "Message successfully added to INBOX.\n"; + if ($count) + print "$count messages successfully added to {$args['mbox']}.\n"; else - print "Adding message failed!\n"; + print "Adding messages failed!\n"; } else { print "IMAP login failed.\n"; } -?> \ No newline at end of file +?> -- Gitblit v1.9.1