BitTorrentのRawServerその2
Author: liris
-
Modified: 2005/07/01 14:21
Tag:
dev
ååã®ç¶ãã§ãã
BitTorrentã®ã½ã¼ã¹ããªã¼ãã¿ãã¨ãBitTorrent/HTTPHandler.pyã¨è¨ããã¡ã¤ã«ãããã¾ããã©ããããBitTorrentã«ã¯ãHTTPããã³ããªã³ã°ããä»çµã¿ãæ¢ã«ããã¾ãã2ç®æãããã§HTTPHandlerã使ããã¦ãã¾ãããããããããã®ãTrack.pyã«ãããã©ãã«ã¼ã®é¨åã®ã³ã¼ãã§ãï¼ãã©ãã«ã¼èªä½ã®èª¬æãããã¨ãã¯ãã®ãã¡çºå£²ãããã¦ããã¬ã«æ¸ãã¦ããã¯ãï¼ããã©ãã«ã¼ã®åæåã®é¨åã®ã³ã¼ãã¯BitTorrent/track.pyã®500è¡ç®åå¾ã®âã
ã³ã¼ããã¿ã¦åããã®ããã¼ã«ã«ã®å¤æ°åãçãã§ããã¹ã³ã¼ãã«å¿ãã¦å¤æ°åã®é·ããå¤ãã£ã¦ãã¾ãã夿°ã®å®ç¾©ãã使ç¨ç®æã¾ã§ã®è·é¢ãçãã¨ã夿°åã䏿åã§ããé·ããªã£ã¦ããã¨ã䏿åãããªãã£ã¦ãåèªã«ãªãã¾ããåãåããããªæãã§ãå®ç¾©ãã¦ä½¿ãã¾ã§ãçããã°å¤æ°åã¯çããã¦ãã¾ãã
ãã¦ãã¦ãã³ã¼ãã®èª¬æã¯ã¯ãããã¨ãã¦ãRawServerã®æåã®å¼æ°ã®Eventã¯threading.Eventã§ããconfigã¯è¾æ¸ã§RawServerã®ã³ã¼ããã¿ãã¨ãclose_with_rstãtimeout_check_intervalãsocket_timeoutãbindãå®ç¾©ããã¦ããã°ãããããã§ããtimeouté¢ä¿ã¯ãã¿ã¤ã ã¢ã¦ãã¾ã§ã®ç§æ°ã§ããtimeout_check_intervalã¯5ç§ãsocket_timeoutã¯15ç§ãtrackerã¯ããã©ã«ãå¤ã¨ãã¦ä½¿ç¨ãã¦ãã¾ããbindã¯ãã¤ã³ããããã¢ãã¬ã¹ãæå®ãã¾ããããæåãæå®ããã¨0.0.0.0ã§listenãã¦ããã¾ããclose_with_rstã¯ãããããã¾ãã(説æãé¢åãªã®ã§çç¥)ããtrackerã¯ããã©ã«ãã§0ã«ãªã£ã¦ãã¾ãããªãã¸ã§ã¯ããã§ããããã°ãcreate_serversocketã§listenããã¢ãã¬ã¹ã¨ãã¼ãçªå·ãæå®ãã¦ãã½ã±ããã®ãªãã¸ã§ã¯ããä½ããstart_listeningã§ã³ã¼ã«ããã¯é¢æ°ãªã©ãæå®ããlisten_foreverã§ioå¦çãã¾ãã
start_listeningã¯ãã½ã±ããã¨ãã³ãã©ã¼ãç»é²ãã¾ããRawServerã¯ãã±ããã®ããã¨ããããã ããªã®ã§ãHTTPHandlerãHTTPã®ãããã³ã«ã¨ãã¦åãã«è¨ãã£ã¦ããã¾ããã¢ããªã±ã¼ã·ã§ã³ã¨ãã¦ã¯ãHTTPHandlerã®æåã®å¼æ°ã®é¢æ°(HTTPã®GETã¡ã½ããï¼ãå®ç¾©ããã°ãHTTPãµã¼ããã§ããããã¾ããgetã¯connection, path, headersã弿°ã«ã¨ãã¾ããpathã®æ å ±ãå ã«é©å½ãªæååããã¹ãã¼ã¿ã¹ãã¼ã©ãªã©ãã¿ãã«ã§è¿ãã°åããããã§ãã
æåãã¹ãã¼ã¿ã¹ã³ã¼ãã¨ãã®æååããã®æ¬¡ããããã¼ã®è¾æ¸ãæå¾ã«ã³ã³ãã³ãã§ãããã¾ããHTTPHandlerãGETãããã³ãã«ããªãã£ã¦POSTãªã©ã¯ãã³ãã«ã§ããªãã®ã¯ãBitTorrentã«ã¯å¿ è¦ãªãããã§ãããã§ããããã ãã§ãåã«éçãªãã¡ã¤ã«ãç°¡åãªGETã使ã£ãCGIã¯æ¸ãããã§ãã
æ°ãåããããµã³ãã«ã³ã¼ããæ¸ãããããã¾ããããã®ã¾ã¾ãçµããããããã¾ããã
BitTorrentã®ã½ã¼ã¹ããªã¼ãã¿ãã¨ãBitTorrent/HTTPHandler.pyã¨è¨ããã¡ã¤ã«ãããã¾ããã©ããããBitTorrentã«ã¯ãHTTPããã³ããªã³ã°ããä»çµã¿ãæ¢ã«ããã¾ãã2ç®æãããã§HTTPHandlerã使ããã¦ãã¾ãããããããããã®ãTrack.pyã«ãããã©ãã«ã¼ã®é¨åã®ã³ã¼ãã§ãï¼ãã©ãã«ã¼èªä½ã®èª¬æãããã¨ãã¯ãã®ãã¡çºå£²ãããã¦ããã¬ã«æ¸ãã¦ããã¯ãï¼ããã©ãã«ã¼ã®åæåã®é¨åã®ã³ã¼ãã¯BitTorrent/track.pyã®500è¡ç®åå¾ã®âã
def track(args):
(ç¥)
r = RawServer(Event(), config)
t = Tracker(config, r)
s = r.create_serversocket(config['port'], config['bind'], True)
r.start_listening(s, HTTPHandler(t.get, config['min_time_between_log_flushes']))
r.listen_forever()
t.save_dfile()
print '# Shutting down: ' + isotime()
ã³ã¼ããã¿ã¦åããã®ããã¼ã«ã«ã®å¤æ°åãçãã§ããã¹ã³ã¼ãã«å¿ãã¦å¤æ°åã®é·ããå¤ãã£ã¦ãã¾ãã夿°ã®å®ç¾©ãã使ç¨ç®æã¾ã§ã®è·é¢ãçãã¨ã夿°åã䏿åã§ããé·ããªã£ã¦ããã¨ã䏿åãããªãã£ã¦ãåèªã«ãªãã¾ããåãåããããªæãã§ãå®ç¾©ãã¦ä½¿ãã¾ã§ãçããã°å¤æ°åã¯çããã¦ãã¾ãã
ãã¦ãã¦ãã³ã¼ãã®èª¬æã¯ã¯ãããã¨ãã¦ãRawServerã®æåã®å¼æ°ã®Eventã¯threading.Eventã§ããconfigã¯è¾æ¸ã§RawServerã®ã³ã¼ããã¿ãã¨ãclose_with_rstãtimeout_check_intervalãsocket_timeoutãbindãå®ç¾©ããã¦ããã°ãããããã§ããtimeouté¢ä¿ã¯ãã¿ã¤ã ã¢ã¦ãã¾ã§ã®ç§æ°ã§ããtimeout_check_intervalã¯5ç§ãsocket_timeoutã¯15ç§ãtrackerã¯ããã©ã«ãå¤ã¨ãã¦ä½¿ç¨ãã¦ãã¾ããbindã¯ãã¤ã³ããããã¢ãã¬ã¹ãæå®ãã¾ããããæåãæå®ããã¨0.0.0.0ã§listenãã¦ããã¾ããclose_with_rstã¯ãããããã¾ãã(説æãé¢åãªã®ã§çç¥)ããtrackerã¯ããã©ã«ãã§0ã«ãªã£ã¦ãã¾ãããªãã¸ã§ã¯ããã§ããããã°ãcreate_serversocketã§listenããã¢ãã¬ã¹ã¨ãã¼ãçªå·ãæå®ãã¦ãã½ã±ããã®ãªãã¸ã§ã¯ããä½ããstart_listeningã§ã³ã¼ã«ããã¯é¢æ°ãªã©ãæå®ããlisten_foreverã§ioå¦çãã¾ãã
start_listeningã¯ãã½ã±ããã¨ãã³ãã©ã¼ãç»é²ãã¾ããRawServerã¯ãã±ããã®ããã¨ããããã ããªã®ã§ãHTTPHandlerãHTTPã®ãããã³ã«ã¨ãã¦åãã«è¨ãã£ã¦ããã¾ããã¢ããªã±ã¼ã·ã§ã³ã¨ãã¦ã¯ãHTTPHandlerã®æåã®å¼æ°ã®é¢æ°(HTTPã®GETã¡ã½ããï¼ãå®ç¾©ããã°ãHTTPãµã¼ããã§ããããã¾ããgetã¯connection, path, headersã弿°ã«ã¨ãã¾ããpathã®æ å ±ãå ã«é©å½ãªæååããã¹ãã¼ã¿ã¹ãã¼ã©ãªã©ãã¿ãã«ã§è¿ãã°åããããã§ãã
def get(connection, path, header):
return (200, 'OK', {'Content-Type': 'text/plain; charset=iso-8859-1'}, "body is here")
æåãã¹ãã¼ã¿ã¹ã³ã¼ãã¨ãã®æååããã®æ¬¡ããããã¼ã®è¾æ¸ãæå¾ã«ã³ã³ãã³ãã§ãããã¾ããHTTPHandlerãGETãããã³ãã«ããªãã£ã¦POSTãªã©ã¯ãã³ãã«ã§ããªãã®ã¯ãBitTorrentã«ã¯å¿ è¦ãªãããã§ãããã§ããããã ãã§ãåã«éçãªãã¡ã¤ã«ãç°¡åãªGETã使ã£ãCGIã¯æ¸ãããã§ãã
æ°ãåããããµã³ãã«ã³ã¼ããæ¸ãããããã¾ããããã®ã¾ã¾ãçµããããããã¾ããã
)になっています。HTMLメールで出してくる人なのか!思ったより若いんだ!と思って、メールのソースを見ると、普通のテキストです。ひょっとして、「 :)」をThunderbirdは勝手にSmily markに置き換えてくれているの?編集部の人にあらぬ誤解をかけたようです。