dimzon 16.02.2011 04:47

PythonАналог GreedyTorrent на Python

Для тех кто не в курсе - GreedyTorrent это специальный прокси сервер, подкручивающий ваш upload на торрент-трекерах...
  1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#!/usr/bin/env python 
# -*- coding: utf-8 -*-

"""
pyGreedTorrent
This code is based on code based on microproxy.py written by ubershmekel in 2006.


"""

PORT = 8080
UP_MULT = 5.53
DN_MULT = 0

ACTUAL_PROXY_HOST_PORT = ()
# Uncomment and modify line below to use chain proxy
#ACTUAL_PROXY_HOST_PORT = '127.0.0.1', 3128

import re, socket, threading

reUP = re.compile(r"(?<=\Wuploaded=)\d+", re.UNICODE )
reDOWN = re.compile(r"(?<=\Wdownloaded=)\d+", re.UNICODE )

err403 = 'HTTP/1.0 403 Forbidden\r\n' \
+'Server: nginx/0.7.65\r\n' \
+'Date: Tue, 16 Nov 2010 14:20:07 GMT\r\n' \
+'Content-Type: text/html; charset=windows-1251\r\n' \
+'Content-Length: 169\r\n' \
+'Connection: close\r\n' \
+'<html> <head><title>403 Forbidden</title></head>' \
+'<body></body></html>'

regex = re.compile(r'http://(.*?)/', re.IGNORECASE)

reUP = re.compile(r"(?<=\Wuploaded=)\d+", re.UNICODE )
reDOWN = re.compile(r"(?<=\Wdownloaded=)\d+", re.UNICODE )

def cheat_url( s ):
m = reUP.search( s )
m2 = reDOWN.search( s )
if m and m2 :
up = int( round( UP_MULT * int( m.group() ) ) )
down = int( round( DN_MULT * int( m2.group() ) ) )
return s<:m.start()> + str(up + down) + s<m.end>
else:
return s


class ConnectionThread(threading.Thread):
def __init__(self, (conn,addr)):
self.conn = conn
self.addr = addr
threading.Thread.__init__(self)

def run(self):

data = self.conn.recv(1024*1024)
#print data
#print 11

host = regex.search(data).groups()<0>

data = cheat_url( data )

request = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#request.settimeout(6)

if ACTUAL_PROXY_HOST_PORT:
host = ACTUAL_PROXY_HOST_PORT
else:
i = host.find(':')
if i &gt;= 0:
host = host<:i>, int(host<i>)
else:
host = host, 80
try:
request.connect( host )

request.send( data )

reply = ''

while 1:
temp = request.recv(1024)

if ('' == temp):
break

self.conn.send(temp)
except:
self.conn.send( err403 )
self.conn.close()

class ProxyThread(threading.Thread):
def __init__(self, port):
self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.sock.bind(('localhost', port))
threading.Thread.__init__(self)

def run(self):
self.sock.listen(10)
while 1:
temp = ConnectionThread(self.sock.accept())
temp.daemon = True
temp.start()

if __name__ == "__main__":
proxy = ProxyThread(PORT)
#proxy.daemon = True
#proxy.start()
print "Started a proxy on port", PORT
proxy.run()

</i></m.end>



Тэги:
+ -3 -
Похожие Поделиться

jh 16.02.2011 05:03 #
ни вступления, ни заключения. что такое GreedyTorrent ?
dimzon 16.02.2011 05:27 #
goodle 16.02.2011 08:35 #
Можно было бы пару строчек всё-таки написать! Что такое GreedyTorrent? Зачем он вообще нужен? Это как минимум.
Гуглом то пользоваться умеем, но Вы пишете топик и будьте любезны, хотя бы по-минимуму его оформить!
jh 16.02.2011 08:31 #
послать в гугл или на яндекс я и сам могу кого угодно.
exelens 16.02.2011 10:04 #
Но тут это не приветствуется
jh 16.02.2011 10:47 #
тем не менее:
http://welinux.ru/post/5135/#cmnt97968
exelens 16.02.2011 10:50 #
Но ведь ему уже написали http://welinux.ru/post/5135/#cmnt97979

И ниже написал я http://welinux.ru/post/5135/#cmnt97991

Посмотрим. Если просветления не будет, будет бан.
goodle 16.02.2011 08:51 #
Это решение для тех, кто хочет всё брать и ничего не отдавать? Если так трясётесь за рейтинги, то посидируйте лишние пару тройку часов или дней! У Вас убудет? Может проще на файловый хостинг свалить? Там рейтингов нету!
Вот такими поделками убивается вся суть трекеров, и рейтинги там не просто так вводились!
exelens 16.02.2011 10:03 #
Может проще на файловый хостинг свалить? Там рейтингов нету!

а ещё есть открытые трекеры с кучей раздач и нормальными раздающими которые положили на рейтинги и просто раздают.
ZED 16.02.2011 16:42 #
хочет всё брать и ничего не отдавать

Люблю я посылать людей НА, да не разрешает КА. Такие лицемеры и ханжи просто никогда не сидели на ADSL и не знают, что входящий канал определяется тарифом, а исходящий - пропускной способностью наших гнилых телефонных проводов. У нас например на вход 10 мбит (24 максимум может дать технология), а на выход 500 кбит и больше хоть усрись, а не выйдет. И ладно, у меня сейчас инет нормальный и стараюсь себя сдерживать в выражениях, но я на ADSL отсидел достаточно, чтобы понимать, что поддерживать нормальный рейтинг иногда физически невозможно.
goblinyara 16.02.2011 20:10 #
у меня, как ни странно, что на download, что на upload на ADSL по 2 МБита/сек... видать, мне с аплоадом повезло =)
exelens 16.02.2011 21:54 #
у меня, как ни странно, что на download, что на upload на ADSL по 2 МБита/сек... видать, мне с аплоадом повезло =)
тебе с провайдером повезло!
philosoft 16.02.2011 21:56 #
У меня на dl 3Mbit/s (физический предел — 10, больше линия не тянет), а вот на up только 100Kb/s (это и есть физический придел моей линии) при этом, если скорость на отдачу более 50 Kbps скорость на dl падает до 60-70 Kbps, up = 80 Kbps ? dl < 30 Kbps, up > 80 Kbps ? dl < 15 Kbps. Вот такие вот пироги.
exelens 16.02.2011 22:23 #
Жесть какая....
exelens 16.02.2011 21:53 #
Люблю я посылать людей НА, да не разрешает КА.
не разрешаю!

Такие лицемеры и ханжи просто никогда не сидели на ADSL и не знают, что входящий канал определяется тарифом, а исходящий - пропускной способностью наших гнилых телефонных проводов. У нас например на вход 10 мбит (24 максимум может дать технология), а на выход 500 кбит и больше хоть усрись, а не выйдет.
Я кстати сам только в октябре перелез на нормальную выделенку...
ZED 16.02.2011 22:19 #
не разрешаю!

тут запятая пропущена или мне показалось?
exelens 16.02.2011 22:22 #
=) Победишь в конкурсе про срипты и я тебе тоже всё разрешу как и xT =) Вот когда у тебя будет неприкосновенность тогда делай, что хочешь =)

тут запятая пропущена или мне показалось?

ты забыл? Мы к русс яз тоже не фанатично настроены =)
ZED 16.02.2011 22:44 #
Вот, например, запретили бы тебе есть вилкой. Причем в формулировке «никогда». «Никогда больше не будешь есть вилкой!» Да, казалось бы, и черт бы с ней, можно ложкой, палочками, руками… Но тебе сказали — нельзя, и сразу захотелось именно вилкой

Отсюда вытекает, что при разрешении каких-либо действий отпадает желание их совершать, а попутно и любое другое желание. Поэтому любая прогрессивная деятельность всегда сопровождается теми или иными запретами, побуждая сознание работать на их преодоление, а попутно и на позитивную деятельность.
exelens 16.02.2011 10:02 #
В следующий раз прошу оформлять топик по человечески!
Как минимум написать описание.
PaulRed 16.02.2011 12:00 #
В некоторых случаях полезно. Мораль выбирать вам.