IRC

Маленькая банальная программа, которая занимается тем что заходит на заданный IRC сервер и начинает принимать выполнямемые команды. Написана она конешно не так круто как ICQ бот. UNIX и прочие версии я не создавал (потому что лень). Да и вообще тут я положил несколько упрощённую версию. Мне лично он неё нужно больше возможностей, предохранителей, команды через DCC чат. Ещё md5 авторизацию, без которой я никакого смысла в боте для чата не вижу.

Списки команд

.dir [limit]

Показывает список файлов в текущем каталоге. limit - ораничитель числа строк (по умолчанию 10).

.exit [:message]

Выход с сервера. Если хотите указать причину выхода, то не забудьте двоеточие перед ним.

.cd <path>

Сменить текущий каталог.

.pwd

Показать текущий каталог.

.host

Показать имя компьютера.

.set-server <server>

Установить сервер для захода. По умолчанию irc.degunino.net

.set-join <chanel1>[,chanel2]

Установить каналы для захода. По умолчанию #unix

.set-key key

Установить ключ для захода на канал.

.set-x <0|1>

Необходимость прятать ip перед входом на сервер.

.get-file [:filename]

Взять файл по DCC. Незабудьте двоетоние перед названием.

.set-nick <nick>

Установить и запомнить новый ник. В любом случае, если ник на сервер уже занят, ник автоматически меняется на случайный.

.raw <:line>

Отправить сырую команду на сервер (произвольную строку, заданную вами). Двоеточие не забывать.

Немного об устройстве

Исходник у программы немного невнятный. Коментириев мало, процедуры не отсортированы ни по названиям ни по разделам. И вообще по правде местами коряво вышло надо будет оптимизировать немного. Это мягко говоря сделано потому что знать в нём особо нечего и протокол простой (по сравению с ICQ как плевок в океане).

Построен он ввиде двух классов Parser и IRC. В IRC - лежит сама программа. В Parser процедуры упрощающие анализ строк. Точнее процедура которая разделяет слова, разделённые пробелами.

1: Parser arg(line);
2: char *a=arg[2];
3: char *b=arg.GetSlack();
1 - строка разделяет слова. 2 - даёт второе по счёту слово (считая с нуля). 3 - даёт хвост строки.

Хвостом я называю часть строки отделённую пробелом и двоеточием. В протоколе так обычно делают с тектом сообщения и прочими многословными вещами (хотя клиент может так и не делать, хороший сервер на это не обратит внимания).

file_table - содержит информацию о запрошенных файлах, закачка которых ещё не началась. Перед тем как законетится по второму порту, клиент может запросить дозакачку. (имена файлов при дозакачке не проверяются, проверяется только порт).

О IRC протоколе

Здесь рассказывать особенно нечего. Читайте RFC1459, RFC2810, а так же эти несколько документов.

CTCP.txt, DCC.txt, DCCResume.txt, raw005.txt

Исходник

irc.cpp, irc.dsp, irc.dsw
Hosted by uCoz