return "Allows you to get information about buddies racing in LFS if they don't use Jabber";
}
public void processPacket(Packet packet) {
if(packet instanceof IQ) {
IQ iq = (IQ)packet;
if(iq.getType() == IQ.Type.get || iq.getType() == IQ.Type.set) {
Element element = iq.getChildElement();
if(element.getName().equals("query")) {
IQ result = new IQ(IQ.Type.result,iq.getID());
result.setTo(iq.getFrom());
result.setFrom(iq.getTo());
Element childResult = result.setChildElement(element.getName(),element.getNamespaceURI());
if(element.getNamespaceURI().equals("http://jabber.org/protocol/disco#info")) {
// Element discoResult =
// result.setChildElement("query","http://jabber.org/protocol/disco#info");
Element identity = childResult.addElement("identity");
identity.addAttribute("category","gateway");
identity.addAttribute("type","lfs");
identity.addAttribute("name",getName());
Element feature = childResult.addElement("feature");
feature.addAttribute("var","http://jabber.org/protocol/disco");
feature = childResult.addElement("feature");
feature.addAttribute("var","jabber:iq:register");
feature = childResult.addElement("feature");
feature.addAttribute("var","jabber:iq:gateway");
manager.sendPacket(this,result);
} else if(element.getNamespaceURI().equals("http://jabber.org/protocol/disco#items")) {
// Element discoResult =
// result.setChildElement("query","http://jabber.org/protocol/disco#items");
} else if(element.getNamespaceURI().equals("jabber:iq:gateway")) {
if(iq.getType() == IQ.Type.get) {
Element desc = childResult.addElement("desc");
desc.setText("Enter the users LFS username");
childResult.addElement("prompt");
} else if(iq.getType() == IQ.Type.set) {
Element promptInput = element.element("prompt");
String jid = promptInput.getText() + "@" + componentJID.toString();
childResult.addElement("prompt").setText(jid);
childResult.addElement("jid").setText(jid); // JEP-0100
// says
// it
// should
// be
// <jid>xxx</jid>
// but
// the
// PyICQ
// returns
// <prompt>xxx</prompt>
}
} else if(element.getNamespaceURI().equals("jabber:iq:register")) {
Map<String, Object> registration = getRegistration(iq.getFrom());
if(iq.getType() == IQ.Type.get) {
DataForm form = new DataForm(DataForm.Type.form);
form.setTitle("Enter Your LFS Username");
form.addInstruction("Enter Your LFS Username");
FormField username = form.addField();
username.setVariable("username");
username.setLabel("LFS Username");
username.setType(FormField.Type.text_single);
username.setRequired(true);
username.setDescription("Your LFS Username");
childResult.add(form.getElement());
childResult.addElement("instructions").addText("Enter Your LFS Username");
Element username_element = childResult.addElement("username");
if(registration != null) {
username_element.setText((String) registration.get("username"));
username.addValue(registration.get("username"));
}
} else if(iq.getType() == IQ.Type.set) {
String username = null;
DataForm form = (DataForm)iq.getExtension(DataForm.ELEMENT_NAME,DataForm.NAMESPACE);
if(form != null) {
List<FormField> fields = form.getFields();
for(FormField field : fields) {
if(!field.getVariable().equals("username")) continue;
List<String> vals = field.getValues();
if(vals != null && vals.size() > 0)
username = vals.get(0);
}
}
if(username == null)
username = iq.getChildElement().element("username").getText();
if(username == null)
result.setType(IQ.Type.error);
else {
if(registration == null)
db.sendInsert(null,"goim_component_registrations","subdomain,jid,username,password",getSubdomain(),iq.getFrom().toBareJID(),username,"");
else
db.sendUpdate(null,"goim_component_registrations","username=?,password=?",new Object[]{username,""},"id=?",registration.get("id"));