Giter VIP home page Giter VIP logo

alix's Introduction

Alix

A Java IRC API

Documentation on IRCv3 for future: http://ircv3.atheme.org/

Alix tries to be stable, but for now there isn't really any good versionning. Recommending using latest dev build.

How to maven:

	...
	<repositories>
		<repository>
			<id>ribesg-releases</id>
			<name>Ribesg's Release Repository</name>
			<url>http://repo.ribesg.fr/content/repositories/releases</url>
		</repository>
		<repository>
			<id>ribesg-snapshots</id>
			<name>Ribesg's Snapshot Repository</name>
			<url>http://repo.ribesg.fr/content/repositories/snapshots</url>
		</repository>
	</repositories>

	<dependencies>
		<dependency>
			<groupId>fr.ribesg.alix</groupId>
			<artifactId>alix</artifactId>
			<version>[0,) <!-- Means LATEST --></version>
		</dependency>
	</dependencies>
	...

Then just read the fr.ribesg.alix.api.Client class, and extend it !
There's an example client: fr.ribesg.alix.TestClient

FAQ

Hey something is not in the API, what do I do?

There are 2 solutions:

  1. Fork the repository on Github, do it yourself in a cool way and create a Pull Request! Also add some links to documentation/specifications about what you implemented.
  2. Create an Issue with tons of details about what you want, why you want it, links to RFCs or other documentations, etc. Then wait for somebody to implement it in the previously stated cool way!

In both cases, you can make a workaround using Client#onRawIrcMessage(Server, Message) while waiting for your feature to be merged/implemented in the project!

alix's People

Contributors

bendem avatar ribesg avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

boozaa

alix's Issues

Channel list get corrupted in some cases

It happens mainly because of channels names having mixed case (like #bendemPlugins).
This result in the channel list containing channels you left or containing some channel twice.

Implement DCC pair

http://www.irchelp.org/irchelp/rfc/ctcpspec.html

Name Description
FINGER Returns the user's full name, and idle time.
VERSION The version and type of the client
SOURCE Where to obtain a copy of a client
USERINFO A string set by the user (never the client coder)
CLIENTINFO The version and type of the client
ERRMSG Used when an error needs to be replied with.
PING Used to measure the delay of the IRC network
between clients.
TIME Gets the local date and time from other clients

Example of current catch:

Asking for VERSION:
2014-02-24 12:04:35,908 RECEIVED MESSAGE: ':[email protected] PRIVMSG BooBot :�VERSION�'

Asking for CLIENTINFO:
2014-02-24 12:04:46,840 RECEIVED MESSAGE: ':[email protected] PRIVMSG BooBot :�CLIENTINFO�'

SSL error doesn't trigger ClientLostConnection

[01:04:09,182] [INFO] [Cb-Cleaner] Failed to receive PONG (-984139185267869307)response in time, disconnecting from server Esper
[01:04:09,182] [INFO] [Cb-Cleaner] Disconnecting from irc.esper.net:6697...
[01:04:14,287] [INFO] [Cb-Cleaner] Successfully disconnected from irc.esper.net:6697
[01:04:19,288] [INFO] [pool-1-thread-43] Connecting to irc.esper.net:6697...
[01:04:39,314] [ERROR] [pool-1-thread-43] Failed to connect to Server
javax.net.ssl.SSLException: Failed to create SSL socket
        at fr.ribesg.alix.internal.network.ssl.SSLSocketFactory.getTrustingSSLSocket(SSLSocketFactory.java:69)
        at fr.ribesg.alix.internal.network.SocketHandler.connect(SocketHandler.java:63)
        at fr.ribesg.alix.api.Server.connect(Server.java:399)
        at be.bendem.bendembot.BotHandler.lambda$onConnectionLost$19(BotHandler.java:101)
        at be.bendem.bendembot.BotHandler$$Lambda$38/9414742.run(Unknown Source)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)
Caused by: java.net.UnknownHostException: irc.esper.net
        at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:184)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
        at java.net.Socket.connect(Socket.java:589)
        at sun.security.ssl.SSLSocketImpl.connect(SSLSocketImpl.java:649)
        at sun.security.ssl.SSLSocketImpl.<init>(SSLSocketImpl.java:409)
        at sun.security.ssl.SSLSocketFactoryImpl.createSocket(SSLSocketFactoryImpl.java:88)
        at fr.ribesg.alix.internal.network.ssl.SSLSocketFactory.getTrustingSSLSocket(SSLSocketFactory.java:55)
        ... 9 more

Unreal 3.2.9 : Custom codes

Custom codes uncatched.

Code Description Example
002 Get Ircd name ':irc.xxxx.fr 002 BooBot :Your host is irc.xxxx.fr, running version Unreal3.2.9'
265 Local Users ':irc.xxxx.fr 265 BooBot :Current Local Users: 15 Max: 28'
266 Global Users ':irc.xxxx.fr 266 BooBot :Current Global Users: 27 Max: 39'

ArrayIndexOutOfBoundsException code 353 on JOIN

On JOIN:

2014-02-24 11:08:03,582 :BooBot MODE BooBot :+iwxz
2014-02-24 11:08:03,640 SENDING MESSAGE: ': JOIN #boozaa\r\n'
2014-02-24 11:08:03,685 RECEIVED MESSAGE: ':[email protected] JOIN :#boozaa'
2014-02-24 11:08:03,685 RECEIVED MESSAGE: ':irc.xxxx.fr 353 BooBot = #boozaa :BooBot @boozaa '
2014-02-24 11:08:03,685 RECEIVED MESSAGE: ':irc.xxxx.fr 366 BooBot #boozaa :End of /NAMES list.'
2014-02-24 11:08:03,685 :[email protected] JOIN :#boozaa
2014-02-24 11:08:03,685 :irc.xxxx.fr 366 BooBot #boozaa :End of /NAMES list.


Exception in thread "Thread-22" 
java.lang.ArrayIndexOutOfBoundsException: 0 at fr.ribesg.alix.network.InternalMessageHandler.handleMessageAsync(InternalMessageHandler.java:86)
at fr.ribesg.alix.network.InternalMessageHandler.access$000(InternalMessageHandler.java:26)
at fr.ribesg.alix.network.InternalMessageHandler$1.run(InternalMessageHandler.java:55)
at java.lang.Thread.run(Thread.java:744)

'messageString' value received =

2014-02-24 11:08:03,685 :irc.xxxx.fr 353 BooBot =   #boozaa :BooBot @boozaa 

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.