This is a read-only snapshot of the ComputerCraft forums, taken in April 2020.
B00mX0r's profile picture

[WIP] [N++] NodeIRC

Started by B00mX0r, 30 September 2012 - 04:39 AM
B00mX0r #1
Posted 30 September 2012 - 06:39 AM
NodeIRC

Status: Work in Progress

What: NodeIRC is an IRC program made in Lua for ComputerCraft. The goal of it is to be as close to a real IRC service as possible. It requires FOUR servers: Main server (everything gets routed through it), ChanServ, NickServ, and StatServ. Below is a list of each server and the features they give to NodeIRC. A key of status:

Not Started= Not Started. :)/>/>

Core not started= I have started creation of the features in the main server, but have not yet started creating the base and handlers for the server itself. It's like creating commands for something except you haven't created the handlers for the commands yet.

Core Created= The core handlers for a server have been created; this means the main server can communicate with them. However, the features are still being worked on in the main server, and haven't gotten far enough to get transfered to the individual server yet.

Implemented= It's cancelled; the feature/server will be implemented inside another server/feature.

Suspended= This either means A. I'm not sure if I want to start/continue work on the feature/server due to whether I believe it lacks productivity to NodeIRC, B. Stopped for important work on something else, or C. Work will be discontinued, but I'm not sure if I want to implement it into something else or not. Basically, suspended could be thought of as "pending review".

Work in Progress= Core created, and I have already started working on the features. Work is well on it's way.

Bug Repairing= Bugs have been found, and instead of making new features, I am working on fixing the bugs in the feature/server.

In Testing= A version with the core and communications are done, along with some features. I'm working on testing it by myself or with a few other people to look for bugs.


ChanServ

Status: Not started

What: ChanServ stores a database of each and every channel that is on the server (yes, there are individual channels), flags, and modes.

Feature information:

–Flags–

Status: Not started

What: For those of you who don't know, in IRC, flags are like the user modes in a channel. Different flags mean different things; for example, AOiortv is known as an aop (has @ before their name so is a channel op, but can use !op and !deop even if +o is removed).

Modes

Status: Not started

What: Modes are like the channel settings. Each mode that is set to a channel acts like a boolean that is true. For example, a channel with mode +m would have moderate on, which means only users with +v or +o are allowed to speak.

Subjects

Status: Not started

What: Subjects show whenever a user joins an IRC channel, they are generally things like "messages of the day", or summaries of news that has been happening on the channel.


HostServ

Status: Implemented (It will be merged into NickServ, I do not feel that a seperate server is needed for this anymore.

What: HostServ will include the user IP of users (in this client, IPs will be in the format of: computerid.x.y.z), then it will include a fake host that the user creates. The fake host will match with a registered username; it's what will show to others instead of the real IP. For example, a user could do : /send HostServ maskset (fakehost), and then if a server op+ approves it, ChanServ would disconnect them, and on re-connection instead of something like user@5.22.123.92 it would show user@fakehost.


NickServ

Status: Core not started

What: NickServ is what manages the users; it stores registered user IDs, passwords, usernames, and individual user flags. This means whether they're globally banned, a server operator, or a server administrator/owner.

Feature information:

HostServ Implementation

Status: Work in Progress

Priority: 5 (I really have better things to do right now)

What: "HostServ will include the user IP of users (in this client, IPs will be in the format of: computerid.x.y.z), then it will include a fake host that the user creates. The fake host will match with a registered username; it's what will show to others instead of the real IP. For example, a user could do : /send HostServ maskset (fakehost), and then if a server op+ approves it, ChanServ would disconnect them, and on re-connection instead of something like user@5.22.123.92 it would show user@fakehost."

User Database

Status: Work in Progress

Priority: 2 (A feature that is important to NodeIRC's productivity)

What: This is what actually stores the user nicknames, IDs, flags, and passwords. Technically, it's 90% of NickServ.

Interserver Communication

Status: Not yet started

Priority: 3 (A feature that'll be made after important features and emergencies are dealt with)

What: This will be what lets it send information to and receive information from ChanServ, the main server, and StatServ. It's important for NickServ to be able to communicate with other servers. If it can't communicate with ChanServ, ChanServ won't know whether to set flags to the user, and what to display the user's name as.


StatServ

Status: Core not Started

What: StatServ isn't vital for nodeirc to run. However, it logs all information. This includes when a user logs in, failed login attempts, chat messages, etc. It has been noted that on a lot of real IRC clients, logging goes through NickServ and ChanServ while StatServ only gets the count of the user's messages. This will be different for NodeIRC.

Features:

Logging

Status:

Priority: 4 (Not a needed feature; will be worked on once priorities 3 and lower are ALL finished)

What: Logging. Kthxbai.

Data Getter

Status: Work in Progress

Priority: 4 (Not a needed feature; will be worked on once priorities 3 and lower are ALL finished)

What: It's actually a data receiver, not a getter. ChanServ and NickServ will give StatServ a ping when they get data.

/pie

Status: Finished

Priority: 1 (EMERGENCY)

What: Got a problem with pie?



Other Features:

Command Handler–

Status: Not Started

Path: ChanServ->NickServ->ChanServ->StatServ

Path Info: Command Sender->Permission Check, and if command involves NickServ and user has perms, will execute->Back to the channel to return whether the command was executed or not. If the command involved ChanServ, it will execute at this stage.->To the logs.


Client–

Status: Work in Progress

Path: Client->ChanServ->NickServ->StatServ

Path Info: Data send->Channel process and executes what needs to be done->If it is a private message, NickServ will create a PM socket on it's own w/o ChanServ. Underlined because if it's not a PM NickServ won't get contacted->To the logs.

The main server will allow you to enter the computer IDs for the two other servers. I seriously just started on this, so no download yet, or screenshots. I just wanted to post this so I could get early suggestions before I have created the core roots of the program. Also, note that the core is based off of other IRC clients and edited; I thought some other IRC cores were really good. One had a licsense; it said I could edit it. Anyway, I posted this so you wouldn't go crazy if you see some of the same code in another IRC service. I'm considering making a github; thoughts? Speaking of thoughts, PLEASE post all your suggestions! :(/>/>
B00mX0r #2
Posted 30 September 2012 - 05:14 PM
I'm going to create the client first, then I'll start adding NickServ and ChanServ featuers on it. After they're working, I'll take them away from the main server, make the core of NickServ and ChanServ, then put the features into them. Oh, and StatServ. Any suggestions? Note that having more than one channel open will not be a feature, at least in V0.1.
Cloudy #3
Posted 30 September 2012 - 11:43 PM
No code to show, closed. PM or report the topic when you want it reopened, when you have code.
B00mX0r #4
Posted 01 October 2012 - 07:49 AM
Well, I was making loggers for error detection on the main server, until I was like "wait a minute.." because I had just realised I had just coded the whole statserv besides the core and communication systems. So, that's mostly a "check". :)/>/> again, any suggestions?