package com.legind.swinedroid.xml;
import java.io.IOException;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import com.legind.swinedroid.RequestService.Request;
import com.legind.web.WebTransport.WebTransportException;
public class AlertXMLHandler extends XMLHandler{
private boolean inProtocol = false;
private boolean inAlert = false;
private boolean inHostname = false;
private boolean inInterface = false;
private boolean inPayload = false;
private boolean inSport = false;
private boolean inDport = false;
private boolean inType = false;
private boolean inCode = false;
public AlertXMLElement alert;
public static final int PROTO_ICMP = 1;
public static final int PROTO_TCP = 2;
public static final int PROTO_UDP = 3;
@Override
public void startElement(String uri, String name, String qName, Attributes atts){
super.startElement(uri, name, qName, atts);
if(name.trim().equals("protocol")){
super.clearStringBuilder();
inProtocol = true;
}
if(name.trim().equals("alert")){
inAlert = true;
}
if(name.trim().equals("hostname")){
super.clearStringBuilder();
inHostname = true;
}
if(name.trim().equals("interface")){
super.clearStringBuilder();
inInterface = true;
}
if(name.trim().equals("payload")){
super.clearStringBuilder();
inPayload = true;
}
if(name.trim().equals("sport")){
super.clearStringBuilder();
inSport = true;
}
if(name.trim().equals("dport")){
super.clearStringBuilder();
inDport = true;
}
if(name.trim().equals("type")){
super.clearStringBuilder();
inType = true;
}
if(name.trim().equals("code")){
super.clearStringBuilder();
inCode = true;
}
}
public void endElement(String uri, String name, String qName){
handleString();
super.endElement(uri, name, qName);
if(name.trim().equals("protocol")){
inProtocol = false;
}
if(name.trim().equals("alert")){
inAlert = false;
}
if(name.trim().equals("hostname")){
inHostname = false;
}
if(name.trim().equals("interface")){
inInterface = false;
}
if(name.trim().equals("payload")){
inPayload = false;
}
if(name.trim().equals("sport")){
inSport = false;
}
if(name.trim().equals("dport")){
inDport = false;
}
if(name.trim().equals("type")){
inType = false;
}
if(name.trim().equals("code")){
inCode = false;
}
}
public void handleString(){
if(inAlert && inProtocol){
if(super.getStringBuilder().toString().equals("icmp"))
alert.protocol = AlertXMLHandler.PROTO_ICMP;
if(super.getStringBuilder().toString().equals("tcp"))
alert.protocol = AlertXMLHandler.PROTO_TCP;
if(super.getStringBuilder().toString().equals("udp"))
alert.protocol = AlertXMLHandler.PROTO_UDP;
}
if(inAlert && inHostname)
alert.hostname = super.getStringBuilder().toString();
if(inAlert && inInterface)
alert.interface_name = super.getStringBuilder().toString();
if(inAlert && inPayload)
alert.payload = super.getStringBuilder().toString();
if(inAlert && inSport)
alert.sport = Integer.parseInt(super.getStringBuilder().toString());
if(inAlert && inDport)
alert.dport = Integer.parseInt(super.getStringBuilder().toString());
if(inAlert && inType)
alert.type = Byte.parseByte(super.getStringBuilder().toString());
if(inAlert && inCode)
alert.code = Byte.parseByte(super.getStringBuilder().toString());
}
@Override
public void createElement(Request request, String call, String extra_parameters) throws IOException, SAXException, XMLHandlerException, WebTransportException{
alert = new AlertXMLElement();
super.createElement(request, call, extra_parameters);
}
}