Skip to content

Commit

Permalink
Overhaul
Browse files Browse the repository at this point in the history
  • Loading branch information
xitiomet committed Dec 1, 2011
1 parent 0acc7d9 commit db8ed70
Show file tree
Hide file tree
Showing 19 changed files with 1,146 additions and 85 deletions.
2 changes: 1 addition & 1 deletion Makefile
Expand Up @@ -12,7 +12,7 @@ all: ircd

jvm:
mkdir jvm-build
javac -cp lib/json-gcj.jar:lib/placebohttp.jar:lib/smack.jar -d jvm-build src/org/openstatic/*.java src/org/openstatic/irc/*.java src/org/openstatic/irc/gateways/*.java src/org/openstatic/irc/middleware/*.java
javac -cp lib/json-gcj.jar:lib/placebohttp.jar:lib/smack.jar -d jvm-build src/org/openstatic/*.java src/org/openstatic/irc/*.java src/org/openstatic/irc/gateways/*.java src/org/openstatic/irc/middleware/*.java src/org/openstatic/irc/client/*.java
jar -cvmf res/manifest.mf o5ircd.jar -C jvm-build org -C res www

# Executable Rule for GCJ
Expand Down
2 changes: 2 additions & 0 deletions client.sh
@@ -0,0 +1,2 @@
#!/bin/bash
java -cp lib/json-gcj.jar:lib/placebohttp.jar:lib/smack.jar:o5ircd.jar org.openstatic.irc.client.O5Client $@
Binary file modified lib/placebohttp.jar
Binary file not shown.
6 changes: 3 additions & 3 deletions src/org/openstatic/irc/GatewayConnection.java
Expand Up @@ -7,6 +7,6 @@ public interface GatewayConnection
public String getServerHostname();
public String getClientHostname();
public void close();
public void sendCommand(IRCMessage pc);
public void sendResponse(String response, String params);
}
public void sendCommand(IRCMessage message);
public void sendResponse(IRCResponse response);
}
92 changes: 84 additions & 8 deletions src/org/openstatic/irc/IRCMessage.java
Expand Up @@ -10,6 +10,24 @@ public class IRCMessage
protected String source;
protected Vector<String> args;
protected Vector<String> destination;
protected JSONObject meta;
public static final int PRIVMSG = 100;
public static final int MODE = 101;
public static final int JOIN = 102;
public static final int PART = 103;
public static final int INVITE = 104;
public static final int TOPIC = 105;
public static final int LIST = 106;
public static final int WHOIS = 107;
public static final int USER = 108;
public static final int NICK = 109;
public static final int WHO = 110;
public static final int AWAY = 111;
public static final int QUIT = 112;
public static final int NOTICE = 113;
public static final int PONG = 114;
public static final int ISON = 115;
public static final int PING = 116;

// constructor
public IRCMessage(String line)
Expand All @@ -27,15 +45,25 @@ public IRCMessage(String line)
this.args = doArgs(cmdArray,1);
}
}

public IRCMessage(int command)
{
this.cmd = getCommand(command);
this.args = new Vector<String>();
this.destination = null;
}

public IRCMessage(JSONObject job) throws JSONException
{
this.source = job.getString("source");
if (job.has("source"))
this.source = job.getString("source");
if (job.has("meta"))
this.meta = job.getJSONObject("meta");
this.cmd = job.getString("command");
this.args = new Vector<String>();
if (job.has("args"))
if (job.has("data"))
{
JSONArray arguments = job.getJSONArray("args");
JSONArray arguments = job.getJSONArray("data");
for (int a = 0; a < arguments.length(); a++)
{
String c_arg = arguments.getString(a);
Expand Down Expand Up @@ -106,6 +134,47 @@ public void clearArgs()
this.args = new Vector<String>();
}

public static String getCommand(int command)
{
if (command == PRIVMSG)
{
return "PRIVMSG";
} else if (command == MODE) {
return "MODE";
} else if (command == JOIN) {
return "JOIN";
} else if (command == PART) {
return "PART";
} else if (command == INVITE) {
return "INVITE";
} else if (command == TOPIC) {
return "TOPIC";
} else if (command == LIST) {
return "LIST";
} else if (command == WHOIS) {
return "WHOIS";
} else if (command == USER) {
return "USER";
} else if (command == NICK) {
return "NICK";
} else if (command == WHO) {
return "WHO";
} else if (command == AWAY) {
return "AWAY";
} else if (command == QUIT) {
return "QUIT";
} else if (command == NOTICE) {
return "NOTICE";
} else if (command == PONG) {
return "PONG";
} else if (command == ISON) {
return "ISON";
} else if (command == PING) {
return "PING";
} else {
return null;
}
}

// process that funny argument layout
private Vector<String> doArgs(String[] ary, int start)
Expand Down Expand Up @@ -245,8 +314,8 @@ public String getEchoResponse()
{
return this.toString();
}
public String toString()

public String getData()
{
StringBuffer args_string = new StringBuffer("");
for (Enumeration<String> e = args.elements(); e.hasMoreElements(); )
Expand All @@ -262,7 +331,12 @@ public String toString()
args_string.append(" ");
}
}
return this.cmd + " " + args_string.toString();
return args_string.toString();
}

public String toString()
{
return this.cmd + " " + this.getData();
}

// check to see if a command matches a string
Expand Down Expand Up @@ -324,7 +398,9 @@ public JSONObject toJSONObject()
job.put("destination", this.destination);
}
job.put("command", this.getCommand());
job.put("args", this.args);
if (this.meta != null)
job.put("meta", this.meta);
job.put("data", this.args);
} catch (Exception e) {}
return job;
}
Expand All @@ -335,4 +411,4 @@ public static IRCMessage prepare(String cmd)
newm.setCommand(cmd);
return newm;
}
}
}
7 changes: 7 additions & 0 deletions src/org/openstatic/irc/IRCMessageListener.java
@@ -0,0 +1,7 @@
package org.openstatic.irc;

public interface IRCMessageListener
{
public void onIRCMessage(IRCMessage message, Object source);
public void onIRCResponse(IRCResponse response, Object source);
}
153 changes: 153 additions & 0 deletions src/org/openstatic/irc/IRCResponse.java
@@ -0,0 +1,153 @@
package org.openstatic.irc;

import java.util.Vector;
import java.util.Enumeration;
import org.json.*;

public class IRCResponse
{
private String response_code;
private String server_host;
private String target_nick;
private Vector<String> args;

public IRCResponse(String line)
{
String[] cmdArray = line.split(" ");
if (cmdArray[0].startsWith(":"))
{
this.server_host = cmdArray[0].substring(1);
this.response_code = cmdArray[1];
this.args = doArgs(cmdArray,2);
} else {
this.response_code = cmdArray[0];
this.args = doArgs(cmdArray, 1);
}
}

public IRCResponse(String resp_code, String data)
{
this.response_code = resp_code;
String[] data_array = data.split(" ");
this.args = doArgs(data_array, 0);
}

public IRCResponse(JSONObject job) throws JSONException
{
this.args = new Vector<String>();
this.response_code = job.getString("response");
if (job.has("data"))
{
JSONArray arguments = job.getJSONArray("data");
for (int a = 0; a < arguments.length(); a++)
{
String c_arg = arguments.getString(a);
this.args.add(c_arg);
}
}
}

// add arg for command handler recreation
public void addArg(String value)
{
this.args.add(value);
}

public void clearArgs()
{
this.args = new Vector<String>();
}


// process that funny argument layout
private Vector<String> doArgs(String[] ary, int start)
{
Vector<String> return_vector = new Vector<String>();
for (int i = start; i < ary.length; i++)
{
if (ary[i].startsWith(":"))
{
StringBuffer lastarg = new StringBuffer(ary[i].substring(1));
i++;
while (i < ary.length)
{
lastarg.append(" " + ary[i]);
i++;
}
return_vector.add(lastarg.toString());
} else {
return_vector.add(ary[i]);
}
}
return return_vector;
}

// check to see if a command matches a string
public boolean is(String text)
{
if (this.response_code.equals(text))
{
return true;
} else {
return false;
}
}

// retrieve the arguments by index to a command
public String getArg(int index)
{
try
{
return this.args.elementAt(index);
} catch (Exception e) {
return null;
}
}

public Vector<String> getArgs()
{
return this.args;
}

public String getResponseCode()
{
return this.response_code;
}

public String getData()
{
StringBuffer args_string = new StringBuffer();
for (Enumeration<String> e = args.elements(); e.hasMoreElements(); )
{
String ca = e.nextElement();
if (ca.contains(" "))
{
ca = ":" + ca;
}
args_string.append(ca);
if (e.hasMoreElements())
{
args_string.append(" ");
}
}
return args_string.toString();
}

public JSONObject toJSONObject()
{
JSONObject job = new JSONObject();
try
{
job.put("response", this.response_code);
job.put("data", this.args);
} catch (Exception e) {}
return job;
}

public String toString()
{

return this.response_code + " " + this.getData();
}

}
2 changes: 1 addition & 1 deletion src/org/openstatic/irc/IrcChannel.java
Expand Up @@ -358,7 +358,7 @@ public void onCommand(IRCMessage receivedCommand)
IRCMessage outbound_message = receivedCommand;
if (receivedCommand.getArg(0).equals(this.channel_name))
{
broadcast(outbound_message, false);
broadcast(outbound_message, u.shouldEcho());
} else {
IrcUser intended_target = findMember(receivedCommand.getArg(0));
if (intended_target != null)
Expand Down

0 comments on commit db8ed70

Please sign in to comment.