Commit ad194633 by Tuomas Riihimäki

Initial IRC bot implementation :)

1 parent ef360b00
/*
* Copyright Codecrew Ry
*
* All rights reserved.
*
* This license applies to any software containing a notice placed by the
* copyright holder. Such software is herein referred to as the Software.
* This license covers modification, distribution and use of the Software.
*
* Any distribution and use in source and binary forms, with or without
* modification is not permitted without explicit written permission from the
* copyright owner.
*
* A non-exclusive royalty-free right is granted to the copyright owner of the
* Software to use, modify and distribute all modifications to the Software in
* future versions of the Software.
*
*/
package fi.codecrew.moya.model;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.JoinColumn;
import javax.persistence.Table;
import javax.persistence.UniqueConstraint;
@Entity()
@Table(name = "irc_channels",
uniqueConstraints = @UniqueConstraint(columnNames = {
IrcChannel.COLUMN_EVENT_ID,
IrcChannel.COLUMN_CHANNEL,
}))
public class IrcChannel extends GenericEntity {
protected static final String COLUMN_CHANNEL = "channel";
protected static final String COLUMN_EVENT_ID = "event_id";
private static final long serialVersionUID = 5347009472418354347L;
public static enum IrcNetwork {
IRCNET("irc.nebula.fi"), QUAKENET("irc.fi.quakenet.org");
private final String server;
private IrcNetwork(String server) {
this.server = server;
}
public String getServer() {
return server;
}
}
@JoinColumn(name = COLUMN_EVENT_ID)
private LanEvent event;
@Column(nullable = false, name = COLUMN_CHANNEL)
private String channel;
@Enumerated(EnumType.STRING)
private IrcNetwork network;
public LanEvent getEvent() {
return event;
}
public void setEvent(LanEvent event) {
this.event = event;
}
public String getChannel() {
return channel;
}
public void setChannel(String channel) {
this.channel = channel;
}
public IrcNetwork getNetwork() {
return network;
}
public void setNetwork(IrcNetwork network) {
this.network = network;
}
}
/*
* Copyright Codecrew Ry
*
* All rights reserved.
*
* This license applies to any software containing a notice placed by the
* copyright holder. Such software is herein referred to as the Software.
* This license covers modification, distribution and use of the Software.
*
* Any distribution and use in source and binary forms, with or without
* modification is not permitted without explicit written permission from the
* copyright owner.
*
* A non-exclusive royalty-free right is granted to the copyright owner of the
* Software to use, modify and distribute all modifications to the Software in
* future versions of the Software.
*
*/
/*
* Copyright Codecrew Ry
*
* All rights reserved.
*
* This license applies to any software containing a notice placed by the
* copyright holder. Such * software is herein referred to as the Software.
* This license covers modification, distribution and use of the Software.
*
* Any distribution and use in source and binary forms, with or without
* modification is not permitted without explicit written permission from the
* copyright owner.
*
* A non-exclusive royalty-free right is granted to the copyright owner of the
* Software to use, modify and distribute all modifications to the Software in
* future versions of the Software.
*
*/
package fi.codecrew.moya.servlet;
import java.io.IOException;
import java.util.ArrayList;
import javax.ejb.EJB;
import javax.ejb.Startup;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import fi.codecrew.moya.beans.EventBeanLocal;
import fi.codecrew.moya.beans.PermissionBeanLocal;
import fi.codecrew.moya.beans.PlaceBeanLocal;
import fi.iudex.utils.irc.IrcBot;
import fi.iudex.utils.irc.IrcBotListener;
/**
* Servlet implementation class SshServlet
*/
@WebServlet(urlPatterns = "/irc", loadOnStartup = 10)
public class IrcServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
private static final Logger logger = LoggerFactory.getLogger(IrcServlet.class);
@EJB
private EventBeanLocal eventbean;
@EJB
private PermissionBeanLocal permBean;
private final ArrayList<IrcBot> bots = new ArrayList<>();
/**
* @see HttpServlet#HttpServlet()
*/
public IrcServlet() {
super();
// TODO Auto-generated constructor stub
}
private class EventListener {
}
@EJB
private PlaceBeanLocal placebean;
/**
* @see Servlet#init(ServletConfig)
*/
public void init(ServletConfig config) throws ServletException {
IrcBot bot = new IrcBot("irc.cc.tut.fi", "#codecrew.ry", "moya-bot");
bot.addCmdListener("places", new IrcPlaceFetcher(placebean));
bots.add(bot);
bot.start();
bot.addCmdListener("foo", new IrcBotListener() {
@Override
public String getUsageMessage() {
// TODO Auto-generated method stub
return null;
}
@Override
public void executeIrc(IrcBot bot, String data) {
bot.say("");
}
});
}
/**
* @see Servlet#destroy()
*/
public void destroy() {
logger.info("Destroying irc servlet");
for (IrcBot b : bots) {
b.stop();
}
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String msg = request.getParameter("msg");
if (msg != null && !msg.isEmpty())
for (IrcBot b : bots) {
b.say(msg);
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
}
}
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!