|
|
@@ -0,0 +1,74 @@
|
|
|
+package com.knacki.lib.libirc;
|
|
|
+
|
|
|
+import com.knacki.lib.libirc.api.IrcISocket;
|
|
|
+import com.knacki.lib.libirc.api.IrcSSLSocket;
|
|
|
+import com.knacki.lib.libirc.api.IrcSocket;
|
|
|
+import com.knacki.lib.libirc.api.messages.ErrorMessage;
|
|
|
+import com.knacki.lib.libirc.api.messages.IrcMessage;
|
|
|
+
|
|
|
+import java.util.logging.Level;
|
|
|
+import java.util.logging.Logger;
|
|
|
+
|
|
|
+/**
|
|
|
+ * Created by isundil on 10/31/16.
|
|
|
+ */
|
|
|
+public class IrcConnector {
|
|
|
+ private static IrcISocket sock;
|
|
|
+ private Callbacks callBackSuite;
|
|
|
+ private IrcCallback cb;
|
|
|
+ private static final Logger log = Logger.getLogger(IrcConnector.class.getName());
|
|
|
+
|
|
|
+ public IrcConnector(String addr, short port, boolean useSsl, IrcCallback cb) {
|
|
|
+ callBackSuite = new Callbacks();
|
|
|
+ this.cb = cb;
|
|
|
+
|
|
|
+ if (useSsl)
|
|
|
+ sock = new IrcSSLSocket(addr, port);
|
|
|
+ else
|
|
|
+ sock = new IrcSocket(addr, port);
|
|
|
+
|
|
|
+ sock.connect(callBackSuite, callBackSuite);
|
|
|
+ }
|
|
|
+
|
|
|
+ private class Callbacks implements IrcISocket.ConnectCallback, IrcISocket.MessageCallback {
|
|
|
+ @Override
|
|
|
+ public void onConnectError(Throwable e) {
|
|
|
+ log.log(Level.WARNING, e.getMessage(), e);
|
|
|
+ cb.onTerminate(e);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onConnectSuccess() {
|
|
|
+ cb.onConnect();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onMessage(String line) {
|
|
|
+ IrcMessage message = IrcMessage.Builder.build(line);
|
|
|
+
|
|
|
+ if (message == null)
|
|
|
+ log.warning("Ignoring unknown IRC message: " +line);
|
|
|
+ else {
|
|
|
+ cb.onMessage(message);
|
|
|
+ if (message instanceof ErrorMessage) {
|
|
|
+ log.severe("Closing link on received error: " +((ErrorMessage) message).errorMsg);
|
|
|
+ sock.disconnect();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setPassword(String pass) {
|
|
|
+ sock.send("PASS " +pass);
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setNick(String nick) {
|
|
|
+ sock.send("NICK " +nick);
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setAuth(String username, String hostname, String servername, String realName, String password) {
|
|
|
+ if (password != null)
|
|
|
+ setPassword(password);
|
|
|
+ sock.send("USER " +username +" " +hostname +" " +servername +" :" +realName);
|
|
|
+ }
|
|
|
+}
|