Java IRC bot
Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

AuthenticateCommand.java 2.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. /*
  2. * To change this template, choose Tools | Templates
  3. * and open the template in the editor.
  4. */
  5. package com.md87.charliebravo.commands;
  6. import com.dmdirc.util.Downloader;
  7. import com.md87.charliebravo.Command;
  8. import com.md87.charliebravo.InputHandler;
  9. import com.md87.charliebravo.Response;
  10. import com.md87.util.crypto.ArcFourEncrypter;
  11. import java.util.List;
  12. import java.util.Random;
  13. import net.miginfocom.Base64;
  14. /**
  15. *
  16. * @author chris
  17. */
  18. public class AuthenticateCommand implements Command {
  19. @SuppressWarnings("unchecked")
  20. public void execute(InputHandler handler, Response response, String line) throws Exception {
  21. if (line.isEmpty()) {
  22. response.sendMessage("You can get an auth token from http://apps.md87.co.uk/ircopenid/",
  23. true);
  24. } else {
  25. final List<String> result = Downloader
  26. .getPage("http://apps.MD87.co.uk/ircopenid/verify.php?id=" + line);
  27. if (result.isEmpty() || !result.get(0).trim().equalsIgnoreCase("Success")) {
  28. response.sendMessage("I could not authenticate that token", true);
  29. } else {
  30. final byte[] bytes = new byte[50];
  31. new Random().nextBytes(bytes);
  32. final String key1 = Base64.encodeToString(bytes, false);
  33. final int id = handler.getConfig().getConfigfile().getKeyDomain("cookies").size();
  34. final String openid = result.get(1).trim();
  35. handler.getParser().getClientInfoOrFake(response.getSource())
  36. .getMap().put("OpenID", openid);
  37. handler.getParser().getClientInfoOrFake(response.getSource())
  38. .getMap().put("Key1", key1);
  39. handler.getParser().getClientInfoOrFake(response.getSource())
  40. .getMap().put("Cookie", "SET");
  41. handler.getConfig().setOption(openid, "internal.lastseen",
  42. System.currentTimeMillis());
  43. handler.getConfig().setOption(openid, "internal.lastuser",
  44. handler.getParser().getClientInfoOrFake(response.getSource()).toString());
  45. response.sendMessage("You are now authenticated as " + openid, true);
  46. handler.getConfig().getConfigfile().getKeyDomain("cookies")
  47. .put(String.valueOf(id), key1);
  48. handler.getConfig().getConfigfile().getKeyDomain("cookie-ids")
  49. .put(String.valueOf(id), openid);
  50. handler.getParser().sendCTCP(response.getSource(), "COOKIE",
  51. "SET " + id + " "+ Base64.encodeToString(
  52. new ArcFourEncrypter(key1).encrypt(openid.getBytes()), false));
  53. }
  54. }
  55. }
  56. }