2011-01-27 29 views
2

我該如何實現SSL?我一直在嘗試使用SSL套接字,但我還沒有能夠使它工作。有任何想法嗎?用SSL創建一個非常簡單的IRC bot?

感謝, 丹尼斯

編輯:知道了!

# Import some necessary libraries. 
import socket, ssl 

# Some basic variables used to configure the bot   
server = "irc.freenode.net" # Server 
port = 7000 # Port 
channel = "#test" # Channel 
botnick = "LOLBOT" # Your bots nick 

def ping(): # This is our first function! It will respond to server Pings. 
    ircsock.send("PONG :pingis\n") 

def sendmsg(chan , msg): # This is the send message function, it simply sends messages to the channel. 
    ircsock.send("PRIVMSG "+ chan +" :"+ msg +"\n") 

def joinchan(chan): # This function is used to join channels. 
    ircsock.send("JOIN "+ chan +"\n") 

def hello(): # This function responds to a user that inputs "Hello Mybot" 
    ircsock.send("PRIVMSG "+ channel +" :Hello!\n") 

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
s.connect((server, port)) # Here we connect to the server using the port 6667 
ircsock = ssl.wrap_socket(s) 
ircsock.send("USER "+ botnick +" "+ botnick +" "+ botnick +" :This bot is a result of a tutoral covered on http://shellium.org/wiki.\n") # user authentication 
ircsock.send("NICK "+ botnick +"\n") # here we actually assign the nick to the bot 

joinchan(channel) # Join the channel using the functions we previously defined 

while 1: # Be careful with these! it might send you to an infinite loop 
    ircmsg = ircsock.recv(2048) # receive data from the server 
    ircmsg = ircmsg.strip('\n\r') # removing any unnecessary linebreaks. 
    print(ircmsg) # Here we print what's coming from the server 

    if ircmsg.find(":Hello "+ botnick) != -1: # If we can find "Hello Mybot" it will call the function hello() 
    hello() 

    if ircmsg.find("PING :") != -1: # if the server pings us then we've got to respond! 
    ping() 
+0

我注意到我一直在散散步。基本上我沒有SSL包裝套接字。有人可以舉例說明如何正確執行此操作嗎? – FLX 2011-01-27 15:11:53

回答

1

隨着缺失問題完全的危險,你嘗試過this

+1

是的,我有,但我寧願嘗試,自己理解和編程一個機器人:) – FLX 2011-01-27 15:10:58

1

它一段時間沒有更新,但irclib支持ssl套接字。你可以看看它是如何做到的。