mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-14 19:59:05 +01:00
Fixed bug "Access to default session denied" and reformatted code
This commit is contained in:
@@ -36,49 +36,44 @@ import net.sf.briar.util.StringUtils;
|
||||
|
||||
public class GmailPlugin implements SimplexPlugin {
|
||||
|
||||
public static final byte[] TRANSPORT_ID =
|
||||
StringUtils.fromHexString("57ead1961d2120bbbbe8256ff9ce6ae2"
|
||||
public static final byte[] TRANSPORT_ID = StringUtils
|
||||
.fromHexString("57ead1961d2120bbbbe8256ff9ce6ae2"
|
||||
+ "ef5535e44330c04cedcbafac4d756f0c"
|
||||
+ "e8dd928ed1d7a9e7b89fd62210aa30bf");
|
||||
|
||||
|
||||
private static final TransportId ID = new TransportId(TRANSPORT_ID);
|
||||
private final Executor pluginExecutor;
|
||||
private final SimplexPluginCallback callback;
|
||||
// private static GmailTransportConnectionReader reader;
|
||||
// private static GmailTransportConnectionWriter writer;
|
||||
|
||||
|
||||
// private static GmailTransportConnectionReader reader;
|
||||
// private static GmailTransportConnectionWriter writer;
|
||||
|
||||
public GmailPlugin(Executor pluginExecutor, SimplexPluginCallback callback) {
|
||||
this.pluginExecutor = pluginExecutor;
|
||||
this.callback = callback;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public TransportId getId() {
|
||||
return ID;
|
||||
}
|
||||
|
||||
public void start() throws IOException {
|
||||
|
||||
pluginExecutor.execute(new Runnable() {
|
||||
public void run() {
|
||||
connectIMAP();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
protected void checkUnreadEmails(Folder inbox) {
|
||||
|
||||
try {
|
||||
FlagTerm ft = new FlagTerm(new Flags(Flags.Flag.SEEN), false);
|
||||
Message msg[] = inbox.search(ft);
|
||||
// System.out.println("Unread Messages: "+ msg.length);
|
||||
|
||||
for(final Message message:msg) {
|
||||
try {
|
||||
callback.readerCreated(new SimplexTransportReader() {
|
||||
FlagTerm ft = new FlagTerm(new Flags(Flags.Flag.SEEN), false);
|
||||
Message msg[] = inbox.search(ft);
|
||||
// System.out.println("Unread Messages: "+ msg.length);
|
||||
for (final Message message : msg) {
|
||||
try {
|
||||
callback.readerCreated(new SimplexTransportReader() {
|
||||
|
||||
public InputStream getInputStream() throws IOException {
|
||||
public InputStream getInputStream() throws IOException {
|
||||
try {
|
||||
return message.getInputStream();
|
||||
} catch (MessagingException e) {
|
||||
@@ -95,125 +90,117 @@ public class GmailPlugin implements SimplexPlugin {
|
||||
} catch (MessagingException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}});
|
||||
|
||||
System.out.println("DATE: " + message.getSentDate().toString());
|
||||
System.out.println("FROM: " + message.getFrom()[0].toString());
|
||||
System.out.println("SUBJECT: " + message.getSubject().toString());
|
||||
System.out.println("CONTENT: " + message.getContent().toString());
|
||||
System.out.println("=================================================");
|
||||
}
|
||||
});
|
||||
|
||||
// This part for testing purposes only
|
||||
System.out.println("DATE: "
|
||||
+ message.getSentDate().toString());
|
||||
System.out.println("FROM: "
|
||||
+ message.getFrom()[0].toString());
|
||||
System.out.println("SUBJECT: "
|
||||
+ message.getSubject().toString());
|
||||
System.out.println("CONTENT: "
|
||||
+ message.getContent().toString());
|
||||
System.out
|
||||
.println("=================================================");
|
||||
|
||||
} catch (Exception e) {
|
||||
System.out.println("No Information");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
} catch (Exception e) {
|
||||
System.out.println("No Information");
|
||||
}
|
||||
}
|
||||
|
||||
} catch (MessagingException e) {
|
||||
System.out.println(e.toString());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
protected void connectIMAP() {
|
||||
Properties props = System.getProperties();
|
||||
props.setProperty("mail.store.protocol", "imaps");
|
||||
final ArrayList<String> userPass = getAuthenticationDetails(callback.getConfig());
|
||||
if (userPass != null)
|
||||
{
|
||||
try {
|
||||
|
||||
Session session = Session.getDefaultInstance(props, null);
|
||||
Store store = session.getStore("imaps");
|
||||
|
||||
synchronized(this)
|
||||
{
|
||||
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) {
|
||||
System.out.println(e.toString());
|
||||
System.exit(1);
|
||||
} catch (MessagingException e) {
|
||||
System.out.println(e.toString());
|
||||
System.exit(2);
|
||||
}
|
||||
}
|
||||
System.out.println(e.toString());
|
||||
}
|
||||
}
|
||||
|
||||
protected boolean connectSMTP(ContactId cid)
|
||||
{
|
||||
protected void connectIMAP() {
|
||||
Properties props = System.getProperties();
|
||||
props.setProperty("mail.store.protocol", "imaps");
|
||||
final ArrayList<String> userPass = getAuthenticationDetails(callback
|
||||
.getConfig());
|
||||
if (userPass != null) {
|
||||
try {
|
||||
Session session = Session.getDefaultInstance(props, null);
|
||||
Store store = session.getStore("imaps");
|
||||
synchronized (this) {
|
||||
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) {
|
||||
System.out.println(e.toString());
|
||||
System.exit(1);
|
||||
} catch (MessagingException e) {
|
||||
System.out.println(e.toString());
|
||||
System.exit(2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected boolean connectSMTP(ContactId cid) {
|
||||
boolean sent = false;
|
||||
if(discoverContactEmail(cid) != null)
|
||||
{
|
||||
if (discoverContactEmail(cid) != null) {
|
||||
Properties prop = new Properties();
|
||||
prop.put("mail.smtp.host", "smtp.gmail.com");
|
||||
prop.put("mail.smtp.socketFactory.port", "465");
|
||||
prop.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
|
||||
prop.put("mail.smtp.socketFactory.class",
|
||||
"javax.net.ssl.SSLSocketFactory");
|
||||
prop.put("mail.smtp.auth", "true");
|
||||
prop.put("mail.smtp.port", "465");
|
||||
|
||||
final ArrayList<String> userPass = getAuthenticationDetails(callback.getConfig());
|
||||
|
||||
if (userPass != null)
|
||||
{
|
||||
Session session;
|
||||
|
||||
synchronized(this)
|
||||
{
|
||||
session = Session.getDefaultInstance(prop, new javax.mail.Authenticator() {
|
||||
protected PasswordAuthentication getPasswordAuthentication() {
|
||||
return new PasswordAuthentication(userPass.get(0),userPass.get(1));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// SimplexTransportWriter writer = createWriter(cid);
|
||||
|
||||
sent = sendMessage(session,cid);
|
||||
|
||||
final ArrayList<String> userPass = getAuthenticationDetails(callback
|
||||
.getConfig());
|
||||
|
||||
if (userPass != null) {
|
||||
Session session;
|
||||
synchronized (this) {
|
||||
session = Session.getInstance(prop,
|
||||
new javax.mail.Authenticator() {
|
||||
protected PasswordAuthentication getPasswordAuthentication() {
|
||||
return new PasswordAuthentication(userPass
|
||||
.get(0), userPass.get(1));
|
||||
}
|
||||
});
|
||||
}
|
||||
// SimplexTransportWriter writer = createWriter(cid);
|
||||
sent = sendMessage(session, cid);
|
||||
}
|
||||
}
|
||||
}
|
||||
return sent;
|
||||
}
|
||||
|
||||
|
||||
private synchronized boolean sendMessage(Session session, ContactId cid)
|
||||
{
|
||||
private synchronized boolean sendMessage(Session session, ContactId cid) {
|
||||
boolean sent = false;
|
||||
|
||||
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.setRecipients(Message.RecipientType.TO,
|
||||
InternetAddress.parse(discoverContactEmail(cid)));
|
||||
message.setSubject("Test Subject");
|
||||
message.setText("Test content");
|
||||
|
||||
message.setText("Test content");
|
||||
|
||||
Transport.send(message);
|
||||
|
||||
|
||||
sent = true;
|
||||
return sent;
|
||||
|
||||
} catch (MessagingException e) {
|
||||
return sent;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
public void stop() throws IOException {
|
||||
synchronized(this) {
|
||||
//close open connections
|
||||
}
|
||||
synchronized (this) {
|
||||
// close open connections
|
||||
}
|
||||
}
|
||||
|
||||
public boolean shouldPoll() {
|
||||
@@ -224,8 +211,8 @@ public class GmailPlugin implements SimplexPlugin {
|
||||
return 0;
|
||||
}
|
||||
|
||||
public void poll(Collection<ContactId> connected) throws UnsupportedOperationException{
|
||||
|
||||
public void poll(Collection<ContactId> connected)
|
||||
throws UnsupportedOperationException {
|
||||
}
|
||||
|
||||
public boolean supportsInvitations() {
|
||||
@@ -233,73 +220,67 @@ public class GmailPlugin implements SimplexPlugin {
|
||||
}
|
||||
|
||||
/*
|
||||
* Gets the user's authentication details
|
||||
* ArrayList.get(0) = username, ArrayList.get(1) = password,
|
||||
* or null if either value is null.
|
||||
* 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)
|
||||
{
|
||||
private ArrayList<String> getAuthenticationDetails(TransportConfig config) {
|
||||
try {
|
||||
ArrayList<String> usernamePass = new ArrayList<String>();
|
||||
usernamePass.add(0, config.get("username"));
|
||||
usernamePass.add(0, config.get("username"));
|
||||
usernamePass.add(1, config.get("password"));
|
||||
|
||||
if(usernamePass.get(0)!=null && usernamePass.get(1)!=null)
|
||||
if (usernamePass.get(0) != null && usernamePass.get(1) != null)
|
||||
return usernamePass;
|
||||
else
|
||||
return null;
|
||||
} catch(Exception e) {
|
||||
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)
|
||||
{
|
||||
private String discoverContactEmail(ContactId cid) {
|
||||
try {
|
||||
Map<ContactId, TransportProperties> remote = callback.getRemoteProperties();
|
||||
TransportProperties tp = remote.get(cid);
|
||||
Map<ContactId, TransportProperties> remote = callback
|
||||
.getRemoteProperties();
|
||||
TransportProperties tp = remote.get(cid);
|
||||
String address = tp.get("email");
|
||||
return address;
|
||||
} catch(Exception e) {
|
||||
} catch (Exception e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public SimplexTransportReader createReader(ContactId c) {
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public SimplexTransportWriter createWriter(ContactId c) {
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public SimplexTransportWriter sendInvitation(PseudoRandom r, long timeout) throws UnsupportedOperationException {
|
||||
|
||||
public SimplexTransportWriter sendInvitation(PseudoRandom r, long timeout)
|
||||
throws UnsupportedOperationException {
|
||||
return null;
|
||||
}
|
||||
|
||||
public SimplexTransportReader acceptInvitation(PseudoRandom r, long timeout) throws UnsupportedOperationException {
|
||||
|
||||
public SimplexTransportReader acceptInvitation(PseudoRandom r, long timeout)
|
||||
throws UnsupportedOperationException {
|
||||
return null;
|
||||
}
|
||||
|
||||
public SimplexTransportWriter sendInvitationResponse(PseudoRandom r,
|
||||
long timeout) throws UnsupportedOperationException{
|
||||
|
||||
long timeout) throws UnsupportedOperationException {
|
||||
return null;
|
||||
}
|
||||
|
||||
public SimplexTransportReader acceptInvitationResponse(PseudoRandom r,
|
||||
long timeout) throws UnsupportedOperationException{
|
||||
|
||||
long timeout) throws UnsupportedOperationException {
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@@ -12,7 +12,6 @@ import net.sf.briar.api.plugins.simplex.SimplexTransportReader;
|
||||
public class GmailTransportConnectionReader implements SimplexTransportReader{
|
||||
|
||||
private static final Logger LOG = Logger.getLogger(GmailTransportConnectionReader.class.getName());
|
||||
|
||||
private final StreamConnection stream;
|
||||
|
||||
GmailTransportConnectionReader(StreamConnection stream) {
|
||||
@@ -20,7 +19,6 @@ public class GmailTransportConnectionReader implements SimplexTransportReader{
|
||||
}
|
||||
|
||||
public InputStream getInputStream() throws IOException {
|
||||
|
||||
return stream.openInputStream();
|
||||
}
|
||||
|
||||
|
||||
@@ -12,7 +12,6 @@ import net.sf.briar.api.plugins.simplex.SimplexTransportWriter;
|
||||
public 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;
|
||||
|
||||
|
||||
@@ -37,7 +37,6 @@ Map<ContactId,TransportProperties> map = new HashMap<ContactId, TransportPropert
|
||||
@Before
|
||||
public void setup()
|
||||
{
|
||||
|
||||
local = new TransportProperties();
|
||||
local.put("email",System.getenv("USER_GMAIL_ADDRESS"));
|
||||
|
||||
@@ -48,7 +47,6 @@ Map<ContactId,TransportProperties> map = new HashMap<ContactId, TransportPropert
|
||||
props1 = new TransportProperties();
|
||||
props1.put("email", System.getenv("CONTACT1_EMAIL"));
|
||||
test1 = new ContactId(12);
|
||||
|
||||
map.put(test1, props1);
|
||||
assertEquals(1,map.size());
|
||||
|
||||
@@ -67,14 +65,13 @@ Map<ContactId,TransportProperties> map = new HashMap<ContactId, TransportPropert
|
||||
}
|
||||
|
||||
public void setLocalProperties(TransportProperties p) {
|
||||
|
||||
local = p;
|
||||
}
|
||||
|
||||
public void setConfig(TransportConfig c) {
|
||||
config = c;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public Map<ContactId, TransportProperties> getRemoteProperties() {
|
||||
return map;
|
||||
}
|
||||
@@ -87,19 +84,13 @@ Map<ContactId,TransportProperties> map = new HashMap<ContactId, TransportPropert
|
||||
return config;
|
||||
}
|
||||
|
||||
public void writerCreated(ContactId c, SimplexTransportWriter w) {
|
||||
public void writerCreated(ContactId c, SimplexTransportWriter w) {}
|
||||
|
||||
}
|
||||
|
||||
public void readerCreated(SimplexTransportReader r) {
|
||||
|
||||
}
|
||||
public void readerCreated(SimplexTransportReader r) {}
|
||||
};
|
||||
|
||||
callback.setLocalProperties(local);
|
||||
callback.setConfig(config);
|
||||
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -107,7 +98,6 @@ Map<ContactId,TransportProperties> map = new HashMap<ContactId, TransportPropert
|
||||
{
|
||||
GmailPluginFactory plugin = new GmailPluginFactory();
|
||||
plugin.createPlugin(Executors.newSingleThreadExecutor(), callback);
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user