Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
briar
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
579
Issues
579
List
Boards
Labels
Milestones
Merge Requests
7
Merge Requests
7
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
briar
briar
Commits
7811f098
Commit
7811f098
authored
Nov 16, 2012
by
akwizgran
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Moved unfinished plugin code to sandpit repo.
parent
267a1055
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
0 additions
and
357 deletions
+0
-357
mail.jar
libs/mail.jar
+0
-0
GmailPlugin.java
src/net/sf/briar/plugins/email/GmailPlugin.java
+0
-295
GmailPluginFactory.java
src/net/sf/briar/plugins/email/GmailPluginFactory.java
+0
-19
GmailTransportConnectionWriter.java
...f/briar/plugins/email/GmailTransportConnectionWriter.java
+0
-43
No files found.
libs/mail.jar
deleted
100644 → 0
View file @
267a1055
File deleted
src/net/sf/briar/plugins/email/GmailPlugin.java
deleted
100644 → 0
View file @
267a1055
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
;
}
}
src/net/sf/briar/plugins/email/GmailPluginFactory.java
deleted
100644 → 0
View file @
267a1055
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
);
}
}
src/net/sf/briar/plugins/email/GmailTransportConnectionWriter.java
deleted
100644 → 0
View file @
267a1055
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
());
}
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment