-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmula
121 lines (101 loc) · 2.12 KB
/
mula
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
115
116
117
118
119
120
121
#! /usr/bin/ruby
# Pequeno script que permite controlar o aMule automaticamente de modo a
# aproveitar as happy-hours da netcabo.
# Usa o amulecmd.
#
# Controlador do aMule
#
class AmuleController
public
#
# Devolve o servidor actual
#
def server
do_command('Stats') =~ /Connected to (.*) \[[\d\.:]*\] with/
$1
end
#
# Conecta-se a um determinado servidor
#
def connect(server)
ip = get_server_ip(server)
return false unless ip
puts " - Ligando a #{server}..."
do_command("Connect #{get_server_ip(server)}")
sleep(10) while connecting?
connected?
end
#
# Verifica se o programa esta conectado
#
def connected?
server
end
#
# Verifica se o programa esta ainda a conectar-se
#
def connecting?
do_command('Stats') =~ /Now connecting/
end
#
# Tenta conectar a um conjunto de servidores, ate conseguir ligar a um
# deles
#
def try_servers(servers)
servers.each { |s| break if connect(s) }
end
#
# Devolve o IP de um servidor
#
def get_server_ip(server)
do_command('Servers') =~ /\[([\d\.\:]+)\].*#{server}.*/
$1
end
#
# Liga o filtro de ips
#
def enable_ip_filter
do_command('SetIpFilter on')
end
#
# Desliga o filtro de ips
#
def disable_ip_filter
do_command('SetIpFilter off')
end
private
#
# Executa o comando pedido
#
def do_command(cmd)
`amulecmd -c "#{cmd}" -P fil259874`
end
end
#
# Classifica um servidor como nacional ou internacional
#
def server_category(servers, amule_server)
servers.each do |k, v|
return k if v.find { |e| amule_server.include? e }
end
end
# Lista de servidores nacionais e internacionais
servers =
{
'international' => [ "Razorback", "DonkeyServer" ],
'national' => [ "Tejo", "Sado" ]
}
# Bloco principal
amule = AmuleController.new
while true
time = Time.now
if ((1 .. 6) === time.hour) # Happy-hours!
amule.disable_ip_filter
else
# sleep 60
# amule.connect("Sado")
# break
amule.enable_ip_filter
end
sleep 60
end