2013-11-02 39 views
0

我寫的IRC聊天客戶端引起我的ISP不允許正常的IRC程序。所以我正在使用SSL做一個。無論如何,我跑了我的IRC聊天客戶端,我可以聽好,我只是無法識別我自己。聊天開始後,我總是收到這個消息。蟒蛇IRC客戶端沒有身份確認

*,我看着有我監聽端口113和應對無身份確認

一切,所以我寫了一個TCP套接字傾聽和打印的內容發送,以爲我跟隨其他recomendations。然而,我從來沒有得到任何答覆,我在113上telnet到服務器套接字,我能夠連接和溝通很好。

我不認爲IRC派遣覈查回到113或我有什麼不對,我發送信息。我怎麼能確定或者至少應對答覆,以確定自己和聊天

這裏是我的客戶:

import socket, string, re, time , ssl, urllib 

network = 'irc.freenode.net' 
nick = 'testr' 
chan = 'ubuntu' 
port = 7000 #6697 

socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM) 

def main(network, nick, port): 
     socket.connect((network,port)) 
     irc = ssl.wrap_socket(socket) 
     irc.send('NICK %s\r\n' % nick) 
     print irc.recv(4096) 
     irc.send('USER %s %s %s :TEST\r\n' % (nick,nick,nick)) 
     print irc.recv(4096) 
     irc.send("JOIN #%s\r\n" % chan) 
     print irc.recv(4096) 

     print "STARTING CHAT!!" 

     while True: 
       data = irc.recv(4096) 
       print data 
       irc.send("TEST") 

       if data.find('PING') != -1: 
         print "PING RECEIVED!" 
         print "SENDING PONG!" 
         irc.send('PONG '+data.split()[1]+'\r\n') 

    if __name__=='__main__': 
     main(network, nick, port) 

我的服務器進行測試的響應:

#!/usr/bin/python   

import socket    
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) 

host = 'localhost' 
port = 113     
s.bind((host, port))   
s.listen(5)     

while True: 
    c, addr = s.accept()  
    data = c.recv(1024) 
    print data 
    #c.close()    # Close the connection 
+1

FWIW:谷歌 「IRC客戶端SSL」 就可以找到很多已經支持SSL。 –

回答

0

「的ident」的意思除了你的想法之外的東西。它實際上是一種必須滿足特定協議的服務。 (然而,大多數IRC服務器不嚴格有關吧..)

賠率是你需要安裝一個NAT端口轉發從外部地址到你的假ident服務來支持這一點。世界上99%的人將設置一個外部地址,你可以telnet到端口113,除非你的防火牆配置正確,否則它不會連接任何東西。

但是,您可以在大多數情況下忽略的ident - 它基本上是垃圾呢。遠程連接信任你確認使用本地主機端口的用戶的身份..這至少是不可信的。出於這個原因,大多數ircd可能會檢查它的歷史原因,但幾乎沒有任何會懲罰你的假數據。

檢查的詳細信息了http://en.wikipedia.org/wiki/Ident_protocol

+0

感謝您的回覆。我很好奇,這是我不能聊天的原因嗎?我有一個替代的代碼,允許我irc.send(「STRING」),但從未將數據發送到服務器或任何人都可以看到的東西。 – ApertureSecurity