Я нахожусь в процессе экспериментирования немного со скрученными библиотеками для серверов/клиентов IRC. Я нашел несколько хороших примеров того, как реализовать клиент IRC, но, казаться, найти что-либо хорошим на стороне сервера вещей. Кто-либо мог обеспечить некоторое понимание, как создать основной сервер IRC в скрученном?
Править: Что относительно того, чтобы создать прочь из этого? Я иду правильное направление сюда?
from twisted.internet.protocol import ServerFactory
from twisted.internet import reactor
from twisted.words.protocols.irc import IRC
class IRCServer(IRC):
def connectionMade(self):
print "client connected"
def handleCommand(self, command, prefix, params):
print "handle comm"
IRC.handleCommand(self, command, prefix, params)
def dataReceived(self, data):
print "data: %s" % data
IRC.dataReceived(self, data)
def irc_unknown(self, prefix, command, params):
print "%s, %s, %s, IRC UNKNOWN" % (prefix, command, params)
def irc_USER(self, prefix, params):
print "USER: %s, %s" % (prefix, params)
def irc_NICK(self, prefix, params):
print "NICK: %s, %s" % (prefix, params)
class IRCServerFactory(ServerFactory):
protocol = IRCServer
factory = IRCServerFactory()
reactor.listenTCP(8002, factory)
reactor.run()
Когда я пытаюсь присоединиться к каналу, я так и не смог. Я получал ошибку, касающуюся не наличия обработчика для команды, таким образом, я описал irc_USER и irc_NICK методы, но это просто избавилось от ошибки, это не решило проблему не соединения/не работы.
Возможно, что-то вроде этого?
exarkun@boson:/tmp/irc-server$ cat > passwd
alice:secret
bob:19820522
exarkun@boson:/tmp/irc-server$ twistd -n words --irc-port 6667 --auth file:passwd
2010-06-29 11:51:26-0400 [-] Log opened.
2010-06-29 11:51:26-0400 [-] twistd 10.0.0+r29436 (/usr/bin/python 2.6.4) starting up.
2010-06-29 11:51:26-0400 [-] reactor class: twisted.internet.selectreactor.SelectReactor.
2010-06-29 11:51:26-0400 [-] twisted.words.service.IRCFactory starting on 6667
2010-06-29 11:51:26-0400 [-] Starting factory <twisted.words.service.IRCFactory instance at 0x9ddbf8c>
Если вы хотите увидеть, как это реализовано, см. twisted / words /нажмите.py
twisted.words.protocols.irc.IRC
- это очень простая реализация только частей синтаксического анализа IRC-сервера. Он не реализует фактическую логику сервера, такую как каналы, режимы, сообщения и т. Д. Вы можете построить на нем сервер, но вы должны построить почти все это. Именно это и делает код, вызываемый twistd words
. Вы можете обратиться к его реализации, чтобы увидеть успешный пример того, на что нацелен код в вашем вопросе.