package pkg.crawler.data.conn; import java.util.ArrayList; import java.util.Date; import java.util.Properties; import javax.mail.Address; import javax.mail.Folder; import javax.mail.Message; import javax.mail.MessagingException; import javax.mail.Multipart; import javax.mail.Part; import javax.mail.Session; import org.apache.solr.client.solrj.SolrServer; import org.apache.solr.client.solrj.impl.HttpSolrServer; import org.apache.solr.common.SolrInputDocument; import pkg.crawler.entity.Message2SolrEntity; import com.sun.mail.imap.ACL; import com.sun.mail.imap.IMAPFolder; import com.sun.mail.imap.IMAPMessage; import com.sun.mail.imap.IMAPStore; import com.sun.mail.imap.Rights; import com.sun.mail.imap.Rights.Right; public class CopyOfCrawler{ private String host; private String user; private String password; private String mbox; private String url; private boolean debug; private String loginStartsWith; private static ArrayList listIMAPMsgs = new ArrayList(); // public CopyOfCrawler(String loginStartsWith) // { // this.host = "172.25.60.61"; // this.user = "expresso-admin"; // this.password = "pti123"; // this.mbox = "user"; // this.url = null; // this.debug = false; // this.loginStartsWith = loginStartsWith; // } // // // @Override // public void run() // { // // //Inicializando as propriedades default da máquina para conexão // //com o servidor IMAP // Properties props = System.getProperties(); // Session session = Session.getInstance(props, null); // // IMAPStore store = new IMAPStore(session, null); // // try { // // //Conectando com o servidor IMAP // store.connect(host, user, password); // //Definindo a pasta base a ser usada // IMAPFolder imapFolder = (IMAPFolder)store.getFolder(mbox); // // //Cria a ACL a ser configurada // ACL acl = new ACL("expresso-admin"); // // Rights rights = new Rights(); // rights.add(Right.READ); // // // //Configura direito de leitura para a ACL // acl.setRights(rights); // // SolrServer solrServer = new HttpSolrServer("http://172.25.60.61:8983/solr/"); // // solrServer.deleteByQuery("*:*"); // //Faz a iteração entre os usuários // for (Folder fINBOXAux : imapFolder.list()) // { // //INBOX // IMAPFolder imapFINBOXAux = (IMAPFolder)fINBOXAux; // // imapFINBOXAux.addACL(acl); // // imapFINBOXAux.open(Folder.READ_ONLY); // // Message[] msgsINBOX = imapFINBOXAux.getMessages(); // // for (Message msgAuxINBOX : msgsINBOX) // { // dumpPart(msgAuxINBOX); // } // imapFINBOXAux.removeACL("expresso-admin"); // for(int i = 0; i < CopyOfCrawler.listIMAPMsgs.size(); i++ ) // { // SolrInputDocument doc = new SolrInputDocument(); // doc.addField("id", listIMAPMsgs.get(i).getId()); // doc.addField("user", listIMAPMsgs.get(i).getUser()); // doc.addField("folder", listIMAPMsgs.get(i).getUser()); // doc.addField("from", listIMAPMsgs.get(i).getFrom()); // doc.addField("to", listIMAPMsgs.get(i).getTo()); // doc.addField("subject", listIMAPMsgs.get(i).getSubject()); // doc.addField("content", listIMAPMsgs.get(i).getContent()); // doc.addField("copyto", listIMAPMsgs.get(i).getCopyto()); // doc.addField("hiddencopyto", listIMAPMsgs.get(i).getHiddencopyto()); // // solrServer.add(doc); // } // // CopyOfCrawler.listIMAPMsgs.clear(); // // solrServer.commit(); // // for (Folder fAux : imapFINBOXAux.list()) // { // // //INBOX // IMAPFolder imapFAux = (IMAPFolder)fAux; // // imapFAux.addACL(acl); // // imapFAux.open(Folder.READ_ONLY); // // Message[] msgs= imapFAux.getMessages(); // // for (Message msgAux: msgs) // { // dumpPart(msgAux); // } // imapFAux.removeACL("expresso-admin"); // System.out.println(imapFAux.getFullName()); // for(int i = 0; i < CopyOfCrawler.listIMAPMsgs.size(); i++ ) // { // SolrInputDocument doc = new SolrInputDocument(); // doc.addField("id", listIMAPMsgs.get(i).getId()); // doc.addField("user", listIMAPMsgs.get(i).getUser()); // doc.addField("folder", listIMAPMsgs.get(i).getUser()); // doc.addField("from", listIMAPMsgs.get(i).getFrom()); // doc.addField("to", listIMAPMsgs.get(i).getTo()); // doc.addField("subject", listIMAPMsgs.get(i).getSubject()); // doc.addField("content", listIMAPMsgs.get(i).getContent()); // doc.addField("copyto", listIMAPMsgs.get(i).getCopyto()); // doc.addField("hiddencopyto", listIMAPMsgs.get(i).getHiddencopyto()); // // solrServer.add(doc); // } // CopyOfCrawler.listIMAPMsgs.clear(); // } // // // System.out.println(imapFINBOXAux.getFullName()); // // IMAPFolder imapFAux = (IMAPFolder)imapFolder.list()[0]; //INBOX // // IMAPFolder imapFAux = (IMAPFolder)imapFolder.list()[0].list()[0]; //Aprovações e talz // // // // imapFAux.addRights(acl); // // imapFAux.open(IMAPFolder.READ_ONLY); // // System.out.println(imapFAux.getMessageCount()); // // // // IMAPMessage message = (IMAPMessage)imapFAux.getMessages()[0]; // // // // System.out.println(message.getMessageID()); // // System.out.println(message.getContentType()); // // // // // // imapFAux.removeACL("expresso-admin"); // // imapFAux.close(false); // } // // // } catch (MessagingException e) { // // TODO Auto-generated catch block // e.printStackTrace(); // } // catch (Exception e) // { // e.printStackTrace(); // } // } // // // public static void dumpPart(Part p) throws Exception { // Message2SolrEntity msgEntity = null; // // if (p instanceof Message) { // msgEntity = new Message2SolrEntity(); // IMAPMessage m = (IMAPMessage)p; // // msgEntity.setId(m.getMessageID()); // // if(msgEntity.getId() == null || msgEntity.getId().equals("")){ // System.out.println("Damn it!"); // } // // String user = m.getFolder().getFullName().split("/")[1]; // msgEntity.setUser(user); // // String folder = m.getFolder().getFullName().split("/") // [m.getFolder().getFullName().split("/").length-1]; // // if(!user.equals(folder)) // { // msgEntity.setFolder(folder); // } // else // { // msgEntity.setFolder("INBOX"); // } // // // // msgEntity.setSubject(m.getSubject()); // Address[] a; // // FROM // if ((a = m.getFrom()) != null) { // for (int j = 0; j < a.length; j++) // { // if(msgEntity.getFrom() == null) // { // msgEntity.setFrom(a[j].toString()); // } // else // { // msgEntity.setFrom(msgEntity.getFrom() + ","+a[j].toString()); // } // // System.out.println("FROM: " + a[j].toString()); // } // // } // // // TO // if ((a = m.getRecipients(Message.RecipientType.TO)) != null) { // for (int j = 0; j < a.length; j++) // { // if(msgEntity.getTo() == null) // { // msgEntity.setTo(a[j].toString()); // } // else // { // msgEntity.setTo(msgEntity.getTo() + ","+a[j].toString()); // } // } // } // // // CC // if ((a = m.getRecipients(Message.RecipientType.CC)) != null) { // for (int j = 0; j < a.length; j++) // { // if(msgEntity.getCopyto() == null) // { // msgEntity.setCopyto(a[j].toString()); // } // else // { // msgEntity.setCopyto(msgEntity.getCopyto() + ","+a[j].toString()); // } // } // } // // CC // if ((a = m.getRecipients(Message.RecipientType.BCC)) != null) { // for (int j = 0; j < a.length; j++) // { // if(msgEntity.getHiddencopyto() == null) // { // msgEntity.setHiddencopyto(a[j].toString()); // } // else // { // msgEntity.setHiddencopyto(msgEntity.getHiddencopyto() + ","+a[j].toString()); // } // } // } // // // DATE // Date d = m.getSentDate(); // if(msgEntity != null) // { // msgEntity.setSent_date((d != null ? d.toLocaleString() : "UNKNOWN")); // } // // // } // // try{ // Object o = p.getContent(); // if (o instanceof String) { // if( msgEntity != null ) // { // msgEntity.setContent((String)o); // } // } else if (o instanceof Multipart) { // Multipart mp = (Multipart)o; // int count = mp.getCount(); // for (int i = 0; i < count; i++) // dumpPart(mp.getBodyPart(i)); // } // }catch (Exception e){ // System.out.println("Exception ocurred!"); // e.printStackTrace(); // } // // if(msgEntity != null && msgEntity.getId() != null){ // CopyOfCrawler.listIMAPMsgs.add(msgEntity); // } // // } }