123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238 |
- package main;
- import java.util.Date;
- import java.util.LinkedList;
- import java.util.List;
- import org.jibble.pircbot.PircBot;
- import data.CoveredAreas;
- import data.ISP;
- import data.ISPDAO;
- import verif_saisie.EntierPositifNonVide;
- public class Bot extends PircBot {
- public static final long TIME_BETWEEN_RELOADS = 360000;
- public static final long TIME_BETWEEN_MESSAGES = 200;
- private ISPDAO idao;
- public Bot() {
- this.setName("UneFede2");
- this.setMessageDelay(TIME_BETWEEN_MESSAGES);
- if(Main.isDebug()) {
- this.setVerbose(true);
- }else {
- this.setVerbose(false);
- }
- idao = ISPDAO.getInstance();
- }
- public void onMessage(String channel, String sender,
- String login, String hostname, String message) {
- if (message.equalsIgnoreCase("time?")) {
- String time = new java.util.Date().toString();
- sendMessage(channel, sender + ": Nous sommes le " + time);
- }
- if (message.length()>6 && message.substring(0, 5).equalsIgnoreCase("+info")) {
- info(channel,sender,login,hostname,message);
- }
-
- if (message.length()>9 && message.substring(0, 8).equalsIgnoreCase("+contact")) {
- contact(channel,sender,login,hostname,message);
- }
-
- if (message.equalsIgnoreCase("+source") || message.equalsIgnoreCase("+code") || message.equalsIgnoreCase("+sources")) {
- sendMessage(channel, sender+": mes sources sont disponibles ici: https://code.ffdn.org/marmat8951/bot-irc2");
- }
- if (message.length()>= 6 && message.substring(0, 6).equals("+liste")) {
- list(channel, sender, login, hostname, message);
- }
- if(message.equals("+reload")) {
- Date now = new Date();
- Date lastCU = Cache.getInstance().getLastCacheUpdate();
- if(lastCU.getTime() < now.getTime()-TIME_BETWEEN_RELOADS ) { // Si la dernière MAJ date de + de 5 minutes
- sendMessage(channel, "Je lance le reload!");
- if(reload()) {
- sendMessage(channel, sender+": Le reload s'est bien passé.");
- }else {
- sendMessage(channel, sender+": Erreur au moment du reload.");
- }
- }else {
- Date nextAllowed = new Date(lastCU.getTime()+TIME_BETWEEN_RELOADS);
- sendMessage(channel, "Trop de reload, attendez un peu. Le dernier à eu lieu le "+lastCU.toString()+" Prochain autorisé le "+nextAllowed);
- }
- }
- //easter Egg
- String ea="Ehlo UneFede";
- if (message.contains("Ehlo UneFede")) {
- sendMessage(channel, "Ehlo "+sender+"!!");
- }
- }
- private boolean reload() {
- Cache c = Cache.getInstance();
- return c.reload();
- }
- public void sendMessage(String channel, List<String> lines) {
- for(String s : lines) {
- sendMessage(channel,s);
- }
- }
- public void list(String channel, String sender, String login, String hostname, String message) {
- Cache c = Cache.getInstance();
- List<ISP> listeFAI=null;
- try {
- listeFAI = c.getListe();
- }catch (Exception e) {
- try {
- listeFAI = idao.getISPs();
- } catch (Exception e1) {
- // TODO Auto-generated catch block
- e1.printStackTrace();
- }
- }
- List<String> messages = new LinkedList<>();
- messages.add("Les FAI surveillés par mes petits yeux mignons de bot sont:");
- String s="";
- if(message.indexOf(' ')!=-1 && message.substring(message.indexOf(" ")).contains("all")) {
- messages.add("=== Hors fédé: ===");
- for(ISP isp: listeFAI) {
- if(!isp.isFFDNMember()) {
- s+= isp.getBetterName()+", ";
- }
- if(s.length()>=AffichableSurIRC.MAX_CHARACTERS) {
- messages.add(s);
- s="";
- }
- }
- messages.add(s);
- s="";
- }
- messages.add("=== Dans la fédé: ===");
- for(ISP isp: listeFAI ) {
- if(isp.isFFDNMember()) {
- s+= isp.getBetterName();
- if(s.length()>=AffichableSurIRC.MAX_CHARACTERS) {
- messages.add(s);
- s="";
- }else {
- s+=", ";
- }
- }
- }
- messages.add(s);
- sendMessage(channel, messages);
- }
- public void contact(String channel, String sender,
- String login, String hostname, String message) {
-
- String s = message.substring(message.indexOf(' ')+1);
- if(!EntierPositifNonVide.verifie(s)) { // +contact suivi d'un mot
- Cache c = Cache.getInstance();
- ISP fai = c.getISPWithName(s);
- if(fai == null) {
- sendMessage(channel, "Aucun FAI "+s);
- }else {
- sendMessage(channel, fai.contact());
- }
- }
-
-
- }
-
-
- public void info(String channel, String sender,
- String login, String hostname, String message) {
- String s = message.substring(message.indexOf(' ')+1);
- if(!EntierPositifNonVide.verifie(s)) { // Un mot après +info
- if(s.equalsIgnoreCase("all")) { // +info all
- Cache c = Cache.getInstance();
- sendMessage(channel, c.toStringIRC());
- List<ISP> listeFAI;
- try {
- listeFAI = c.getListe();
- }catch (Exception e) {
- try {
- listeFAI = idao.getISPs();
- } catch (Exception e1) {
- // TODO Auto-generated catch block
- e1.printStackTrace();
- }
- }
- for(ISP i : c.getListe()) {
- if(i.isFFDNMember()) {
- sendMessage(channel, i.toStringIRC());
- }
- }
- }else if(s.equalsIgnoreCase("ffdn")) { //+info ffdn
- Cache c = Cache.getInstance();
- sendMessage(channel, c.toStringIRC());
- }else {
- Cache c = Cache.getInstance();
- ISP i = c.getISPWithName(s);
- if(i == null) {
- sendMessage(channel, "Recherche d'une zone "+s);
- ISP j = c.getISPWithGeoZone(s);
- if(j == null)
- sendMessage(channel, "Le FAI "+s+" est Inconnu, désolé. Et aucun FAI n'opère sur une sone dénomée "+s+" ...");
- else {
- sendMessage(channel, "Un FAI opère sur la zone "+s+" : ");
- sendMessage(channel, j.toStringIRC());
- List<CoveredAreas> cas = j.getCoveredAreas(s);
- String technos = "";
- for(CoveredAreas ca: cas) {
- technos+=ca.getTechnos()+" ";
- }
- sendMessage(channel, "Avec pour techno "+technos);
- }
- }else {
- sendMessage(channel, i.toStringIRC());
- }
- }
- }else { // Un nombre après +info
- int id = Integer.parseInt(message.substring(message.indexOf(' ')+1));
- List<String> strings = idao.getISP(id).toStringIRC();
- for(String response : strings) {
- sendMessage(channel,response);
- }
- }
- }
- }
|