/** * Balero CMS Project: Proyecto 100% Mexicano de código libre. * Página Oficial: http://www.balerocms.com * * @author Anibal Gomez <anibalgomez@icloud.com> * @copyright Copyright (C) 2015 Neblina Software. Derechos reservados. * @license Licencia BSD; vea LICENSE.txt */ package com.neblina.balero.service; import com.neblina.balero.domain.Blacklist; import com.neblina.balero.service.repository.BlacklistRepository; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.net.InetAddress; import java.net.UnknownHostException; @Service public class BlacklistService { private final Logger log = LoggerFactory.getLogger(BlacklistService.class); @Autowired private BlacklistRepository blacklistRepository; public void addIpToBlacklist(String ip) { try { log.debug("Adding user to blacklist...: " + ip); Blacklist blacklist = blacklistRepository.findOneByIp(this.getUserIp()); if(blacklist == null) { // not found log.debug("Usuario no encontrado en la lista negra. Agregando a..." + ip); Blacklist bannedUser = new Blacklist(); bannedUser.setIp(ip); bannedUser.setAttemps(1); bannedUser.setTimer(300000); // 5 minutes blacklistRepository.save(bannedUser); } if(blacklist != null) { log.debug("Usuario encontrado en la lista negra. Intentos->" + blacklist.getAttemps()); blacklist.setAttemps(blacklist.getAttemps() + 1); blacklist.setTimer(300000); // 5 minutes blacklistRepository.save(blacklist); } } catch (Exception e) { log.debug("Balero->addIpToBlacklist" + e.getMessage()); } } public String getUserIp() throws UnknownHostException { InetAddress ip = InetAddress.getLocalHost(); return ip.getHostAddress(); } public boolean isIpBanned() throws UnknownHostException { boolean status = false; Blacklist blacklist = blacklistRepository.findOneByIp(this.getUserIp()); if(blacklist == null) { // not found->not banned status = false; } if(blacklist != null) { // found->banned if(blacklist.getAttemps() > 5) { status = true; } } return status; } }