import java.net.URLConnection;
import java.net.URL;
import java.net.*;
import java.util.regex.*;
import java.io.*;

public class dumbo {

	public static String title, ligne, last_title;
	
	public static void main(String[] args) throws Exception {
		
		URL pageurl = new URL("http://fruit.alsacreations.fr/");
		String regex = "<title>(.*)</title>";
		String logfile = "log.java.txt";
		Pattern re = Pattern.compile(regex);
		String[] recipients = {"tarzan@rabbit.com","dew@rabbit.com"};
		last_title = "";
		
		URLConnection co = pageurl.openConnection();
		BufferedReader in = new BufferedReader(new InputStreamReader(co.getInputStream()));

		while ((ligne = in.readLine()) != null) {
			Matcher m = re.matcher(ligne);
			if(m.find()) {
				title = new String(m.group(1));
			}
		}
		in.close();

		try {
			FileReader fr = new FileReader(logfile);
			BufferedReader br = new BufferedReader(fr);
			last_title = br.readLine();
			fr.close();
		} catch (FileNotFoundException e) {
			System.out.println("File not found");
		} catch (IOException e) {
			System.out.println("Cannot read file");
		}

		if(title.indexOf(last_title)==-1 || last_title.length()==0) {
			System.out.println("Difference!");
			for(int i=0;i<recipients.length;i++) {
				System.out.println("Mail to "+recipients[i]);
				sendMail("localhost",recipients[i],"[Turborabbit] New title !","(Script Java) New title !\n"+title+"");
			}
			try {
				FileWriter fw = new FileWriter(logfile);
				fw.write(title,0,title.length());
				fw.close();
			} catch(Exception e) {
				System.out.println("Cannot write to file");
			}
		}
	}

	public static void sendMail(String smtp, String recipient, String subject, String data) {
		try {
			Socket s = new Socket(smtp, 25);
			BufferedReader in = new BufferedReader (new InputStreamReader(s.getInputStream(), "8859_1"));
			BufferedWriter out = new BufferedWriter (new OutputStreamWriter(s.getOutputStream(), "8859_1"));
			send(in, out, "HELO papaye");
			send(in, out, "MAIL FROM: <dumbo@jumbo.com>");
			send(in, out, "RCPT TO: "+recipient);
			send(in, out, "DATA");
			send(out, "Subject: "+subject);
			send(out, "From: papaye <dumbo@jumbo.com>");
			send(out, "\n");
			send(out, data);
			send(out, "\n.\n");
			send(in, out, "QUIT");
			s.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public static void send(BufferedReader in, BufferedWriter out, String s) {
		try {
			out.write(s + "\n");
			out.flush();
			System.out.println(s);
			s = in.readLine();
			System.out.println(s);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public static void send(BufferedWriter out, String s) {
		try {
			out.write(s + "\n");
			out.flush();
			System.out.println(s);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}
