diff --git a/libs/mail.jar b/libs/mail.jar deleted file mode 100644 index 300f436ad2acd89a8f223f9260751f65ecb93c12..0000000000000000000000000000000000000000 Binary files a/libs/mail.jar and /dev/null differ diff --git a/src/net/sf/briar/plugins/email/GmailPlugin.java b/src/net/sf/briar/plugins/email/GmailPlugin.java deleted file mode 100644 index 8787e7ee3d0ba81a30e92a6c7eec3c9fe3342b4b..0000000000000000000000000000000000000000 --- a/src/net/sf/briar/plugins/email/GmailPlugin.java +++ /dev/null @@ -1,295 +0,0 @@ -package net.sf.briar.plugins.email; - -import static java.util.logging.Level.WARNING; - -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Map; -import java.util.Properties; -import java.util.concurrent.Executor; -import java.util.logging.Logger; - -import javax.activation.DataHandler; -import javax.activation.DataSource; -import javax.mail.Authenticator; -import javax.mail.Flags; -import javax.mail.Flags.Flag; -import javax.mail.Folder; -import javax.mail.Message; -import javax.mail.MessagingException; -import javax.mail.NoSuchProviderException; -import javax.mail.PasswordAuthentication; -import javax.mail.Session; -import javax.mail.Store; -import javax.mail.Transport; -import javax.mail.internet.InternetAddress; -import javax.mail.internet.MimeBodyPart; -import javax.mail.internet.MimeMessage; -import javax.mail.internet.MimeMultipart; -import javax.mail.search.FlagTerm; -import javax.mail.util.ByteArrayDataSource; - -import net.sf.briar.api.ContactId; -import net.sf.briar.api.TransportConfig; -import net.sf.briar.api.TransportProperties; -import net.sf.briar.api.plugins.simplex.SimplexPlugin; -import net.sf.briar.api.plugins.simplex.SimplexPluginCallback; -import net.sf.briar.api.plugins.simplex.SimplexTransportReader; -import net.sf.briar.api.plugins.simplex.SimplexTransportWriter; -import net.sf.briar.api.protocol.TransportId; -import net.sf.briar.util.StringUtils; - -class GmailPlugin implements SimplexPlugin { - - private static final byte[] TRANSPORT_ID = StringUtils - .fromHexString("57ead1961d2120bbbbe8256ff9ce6ae2" - + "ef5535e44330c04cedcbafac4d756f0c" - + "e8dd928ed1d7a9e7b89fd62210aa30bf"); - private static final TransportId ID = new TransportId(TRANSPORT_ID); - private static final Logger LOG = - Logger.getLogger(GmailPlugin.class.getName()); - - private final Executor pluginExecutor; - private final SimplexPluginCallback callback; - - public GmailPlugin(Executor pluginExecutor, SimplexPluginCallback callback) { - this.pluginExecutor = pluginExecutor; - this.callback = callback; - } - - public TransportId getId() { - return ID; - } - - public String getName() { - return "GMAIL_PLUGIN_NAME"; - } - - public void start() throws IOException { - pluginExecutor.execute(new Runnable() { - public void run() { - connectIMAP(); - } - }); - } - - private void checkUnreadEmails(Folder inbox) { - try { - FlagTerm ft = new FlagTerm(new Flags(Flags.Flag.SEEN), false); - Message msg[] = inbox.search(ft); - for(final Message message : msg) { - callback.readerCreated(new SimplexTransportReader() { - - public InputStream getInputStream() throws IOException { - try { - return message.getInputStream(); - } catch(MessagingException e) { - if(LOG.isLoggable(WARNING)) - LOG.warning(e.toString()); - } - return null; - } - - public void dispose(boolean exception, boolean recognised) - throws IOException { - try { - message.setFlag(Flag.DELETED, recognised); - message.setFlag(Flag.SEEN, recognised); - } catch(MessagingException e) { - if(LOG.isLoggable(WARNING)) - LOG.warning(e.toString()); - } - } - }); - } - } catch(MessagingException e) { - if(LOG.isLoggable(WARNING)) LOG.warning(e.toString()); - } - } - - private void connectIMAP() { - Properties props = new Properties(); - props.setProperty("mail.store.protocol", "imaps"); - final ArrayList<String> userPass = getAuthenticationDetails(callback - .getConfig()); - if(userPass != null) { - try { - Session session = Session.getInstance(props, null); - Store store = session.getStore("imaps"); - store.connect("imap.gmail.com", userPass.get(0), - userPass.get(1)); - Folder inbox = store.getFolder("Inbox"); - inbox.open(Folder.READ_ONLY); - checkUnreadEmails(inbox); - } catch(NoSuchProviderException e) { - if(LOG.isLoggable(WARNING)) LOG.warning(e.toString()); - } catch(MessagingException e) { - if(LOG.isLoggable(WARNING)) LOG.warning(e.toString()); - } - } - } - - public boolean connectSMTP(ContactId cid) { - boolean sent = false; - if(discoverContactEmail(cid) != null) { - Properties props = new Properties(); - props.put("mail.smtp.host", "smtp.gmail.com"); - props.put("mail.smtp.socketFactory.port", "465"); - props.put("mail.smtp.socketFactory.class", - "javax.net.ssl.SSLSocketFactory"); - props.put("mail.smtp.auth", "true"); - props.put("mail.smtp.port", "465"); - - final ArrayList<String> userPass = - getAuthenticationDetails(callback.getConfig()); - - if(userPass != null) { - Session session; - session = Session.getInstance(props, - new Authenticator() { - protected PasswordAuthentication getPasswordAuthentication() { - return new PasswordAuthentication( - userPass.get(0), userPass.get(1)); - } - }); - sent = sendMessage(session, cid); - } - } - return sent; - } - - private boolean sendMessage(Session session, ContactId cid) { - ByteArrayOutputStream outputStream = null; - try { - Message message = new MimeMessage(session); - TransportProperties props = callback.getLocalProperties(); - String userEmail = props.get("email"); - - message.setFrom(new InternetAddress(userEmail)); - message.setRecipients(Message.RecipientType.TO, - InternetAddress.parse(discoverContactEmail(cid))); - message.setSubject("Test Subject"); - - outputStream = new ByteArrayOutputStream(); - - callback.writerCreated(cid, new SimplexTransportWriter() { - - public boolean shouldFlush() { - return false; - } - - public OutputStream getOutputStream() throws IOException { - return null; // FIXME - } - - public long getCapacity() { - return 0; // FIXME - } - - public void dispose(boolean exception) throws IOException { - // FIXME - } - }); - - byte[] bytes = outputStream.toByteArray(); - DataSource dataSource = new ByteArrayDataSource(bytes, - "application/octet-stream"); - - MimeBodyPart messageBodyPart = new MimeBodyPart(); - messageBodyPart.setDataHandler(new DataHandler(dataSource)); - - MimeMultipart mimeMultipart = new MimeMultipart(); - mimeMultipart.addBodyPart(messageBodyPart); - - message.setContent(mimeMultipart); - - Transport.send(message); - - return true; - } catch(MessagingException e) { - return false; - } finally { - if(outputStream != null) { - try { - outputStream.close(); - outputStream = null; - } catch(Exception e) { - if(LOG.isLoggable(WARNING)) LOG.warning(e.toString()); - } - } - } - - } - - public void stop() throws IOException { - synchronized(this) { - // FIXME: Close open connections - } - } - - public boolean shouldPoll() { - return false; - } - - public long getPollingInterval() { - throw new UnsupportedOperationException(); - } - - public void poll(Collection<ContactId> connected) { - throw new UnsupportedOperationException(); - } - - /* - * Gets the user's authentication details ArrayList.get(0) = username, - * ArrayList.get(1) = password, or null if either value is null. - */ - private ArrayList<String> getAuthenticationDetails(TransportConfig config) { - try { - ArrayList<String> usernamePass = new ArrayList<String>(); - usernamePass.add(0, config.get("username")); - usernamePass.add(1, config.get("password")); - if(usernamePass.get(0) != null && usernamePass.get(1) != null) { - return usernamePass; - } else { - return null; - } - } catch(Exception e) { - return null; - } - } - - /* - * Looks up the contact's email address given the contactID - * - * @param ContactId - * - * @return String email - */ - private String discoverContactEmail(ContactId cid) { - try { - Map<ContactId, TransportProperties> remote = - callback.getRemoteProperties(); - TransportProperties tp = remote.get(cid); - if(tp != null) { - String address = tp.get("email"); - return address; - } else { - return null; - } - } catch(Exception e) { - return null; - } - } - - public SimplexTransportReader createReader(ContactId c) { - return null; - } - - public SimplexTransportWriter createWriter(ContactId c) { - return null; - } -} diff --git a/src/net/sf/briar/plugins/email/GmailPluginFactory.java b/src/net/sf/briar/plugins/email/GmailPluginFactory.java deleted file mode 100644 index 1057b80c03399912c434d14afa671311aa3fdb7f..0000000000000000000000000000000000000000 --- a/src/net/sf/briar/plugins/email/GmailPluginFactory.java +++ /dev/null @@ -1,19 +0,0 @@ -package net.sf.briar.plugins.email; - -import java.util.concurrent.Executor; - -import net.sf.briar.api.android.AndroidExecutor; -import net.sf.briar.api.lifecycle.ShutdownManager; -import net.sf.briar.api.plugins.simplex.SimplexPlugin; -import net.sf.briar.api.plugins.simplex.SimplexPluginCallback; -import net.sf.briar.api.plugins.simplex.SimplexPluginFactory; -import android.content.Context; - -public class GmailPluginFactory implements SimplexPluginFactory { - - public SimplexPlugin createPlugin(Executor pluginExecutor, - AndroidExecutor androidExecutor, Context context, - ShutdownManager shutdownManager, SimplexPluginCallback callback) { - return new GmailPlugin(pluginExecutor, callback); - } -} diff --git a/src/net/sf/briar/plugins/email/GmailTransportConnectionWriter.java b/src/net/sf/briar/plugins/email/GmailTransportConnectionWriter.java deleted file mode 100644 index 2a4f0c515833e262a32925a54bf3fd7467d8b3d4..0000000000000000000000000000000000000000 --- a/src/net/sf/briar/plugins/email/GmailTransportConnectionWriter.java +++ /dev/null @@ -1,43 +0,0 @@ -package net.sf.briar.plugins.email; - -import static java.util.logging.Level.WARNING; - -import java.io.IOException; -import java.io.OutputStream; -import java.util.logging.Logger; - -import javax.microedition.io.StreamConnection; - -import net.sf.briar.api.plugins.simplex.SimplexTransportWriter; - -class GmailTransportConnectionWriter implements SimplexTransportWriter { - - private static final Logger LOG = - Logger.getLogger(GmailTransportConnectionWriter.class.getName()); - private final StreamConnection stream; - private final long capacity = 25 * 1000 * 1000; - - public GmailTransportConnectionWriter(StreamConnection stream) { - this.stream = stream; - } - - public long getCapacity() { - return capacity; - } - - public OutputStream getOutputStream() throws IOException { - return stream.openOutputStream(); - } - - public boolean shouldFlush() { - return false; - } - - public void dispose(boolean exception) { - try { - stream.close(); - } catch(IOException e) { - if(LOG.isLoggable(WARNING)) LOG.warning(e.toString()); - } - } -}