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.
Status: Implemented (It will be merged into NickServ, I do not feel that a seperate server is needed for this anymore.
–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! :(/>/>