29.07.2013 Views

Master of Science thesis Fighting Spam

Master of Science thesis Fighting Spam

Master of Science thesis Fighting Spam

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

Decode buffer<br />

decoder.decode(buffer, charBuffer, false);<br />

charBuffer.flip();<br />

String s = channel.equals(serverChannel) ? "server" : "client";<br />

//Debugger.debug(className, 3, "Channel " + channelId + " read from " + s + ": "<br />

+ charBuffer.toString());<br />

String message = charBuffer.toString();<br />

//Read from the client ?<br />

if(!channel.equals(serverChannel))<br />

{<br />

try<br />

{<br />

//Should the proxy react?<br />

Object result = proxy.testClientCommand(message);<br />

if(result instance<strong>of</strong> File)<br />

{<br />

fileReader = new FileReader((File) result);<br />

bufferedReader = new BufferedReader(fileReader);<br />

long filesize = ((File) result).length();<br />

progress.init("Sending message (SMTP) ", filesize,<br />

Config.numberOfUpdates);<br />

Debugger.debug(className, 3, "Initialized outgoing file. Size " +<br />

filesize);<br />

//Be ready to write the message later<br />

serverChannel.register(selector, SelectionKey.OP_READ |<br />

SelectionKey.OP_WRITE);<br />

}<br />

else if(result instance<strong>of</strong> String && !result.equals(""))<br />

{<br />

//Add the message to the serverQueue<br />

serverMessageQueue.add(result);<br />

//Be ready to write the message later<br />

serverChannel.register(selector, SelectionKey.OP_READ |<br />

SelectionKey.OP_WRITE);<br />

}<br />

}<br />

catch(Exception e)<br />

{<br />

String error = "554 "+e.getMessage();<br />

Debugger.debug(className, 1, "Exception handling mail. Sending error to<br />

the client and the server: " + error);<br />

write(error,clientChannel);<br />

write(error,serverChannel);<br />

serverChannel.close();<br />

clientChannel.close();<br />

Debugger.debug(className, 1, "Closed connections.");<br />

Control.showError(error);<br />

Debugger.debug(className, 1, "Error given to GUI.");<br />

}<br />

}<br />

else<br />

{<br />

//Should the proxy react?<br />

String [] messages = proxy.testServerCommand(message);<br />

if(messages.length != 0)<br />

{<br />

for(int i=0;i< messages.length;i++)<br />

{<br />

//Add the message to the queue<br />

clientMessageQueue.add(messages[i]);<br />

}<br />

//Be ready to write the message later<br />

clientChannel.register(selector, SelectionKey.OP_READ |<br />

SelectionKey.OP_WRITE);<br />

}<br />

281

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!