rgadu 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/gg.rb +34 -8
- metadata +4 -3
data/lib/gg.rb
CHANGED
@@ -38,14 +38,18 @@ class GG
|
|
38
38
|
0x1f => 'LLa8a21a43'}
|
39
39
|
|
40
40
|
=begin rdoc
|
41
|
-
Tworzy nowy obiekt GG i loguje sie na serwerze uzywajac numeru *uin* i hasla *password*. Dodatkowe parametry to: :server => serwer GG, :port => port na serwerze GG, :dccport => port dla polaczen bezposrednich, :contacts => tablica z lista kontaktow, :version => wersja protokolu.
|
41
|
+
Tworzy nowy obiekt GG i loguje sie na serwerze uzywajac numeru *uin* i hasla *password*. Dodatkowe parametry to: :server => serwer GG, :port => port na serwerze GG, :dccport => port dla polaczen bezposrednich, :contacts => tablica z lista kontaktow, :status => poczatkowy status, :description => poczatkowy opis, :friendsonly - tryb tylko dla przyjaciol, :version => wersja protokolu.
|
42
42
|
=end
|
43
43
|
def initialize(uin, password, params={})
|
44
44
|
server = params[:server] || '217.17.45.146'
|
45
45
|
port = params[:port] || 8074
|
46
|
-
dccport = params[:dccport]
|
46
|
+
dccport = params[:dccport] || 0
|
47
47
|
contacts = params[:contacts] || []
|
48
|
+
status = params[:status] || :avail
|
49
|
+
description = params[:description]
|
50
|
+
friendsonly = params[:friendsonly] ? true : false
|
48
51
|
version = (params[:version] || 6.0).to_f
|
52
|
+
|
49
53
|
@uin=uin
|
50
54
|
@dccport=dccport
|
51
55
|
@socket=TCPSocket.new(server, port)
|
@@ -54,7 +58,7 @@ Tworzy nowy obiekt GG i loguje sie na serwerze uzywajac numeru *uin* i hasla *pa
|
|
54
58
|
raise "Packet not recognized"
|
55
59
|
end
|
56
60
|
seed=read_body(length, 'L')[0]
|
57
|
-
if dccport
|
61
|
+
if dccport > 0
|
58
62
|
@dcc = DCCServer.new(dccport, uin)
|
59
63
|
localip=@socket.addr[3].split('.').collect {|x| x.to_i }.pack('C4').unpack('L')[0]
|
60
64
|
else
|
@@ -69,12 +73,28 @@ Tworzy nowy obiekt GG i loguje sie na serwerze uzywajac numeru *uin* i hasla *pa
|
|
69
73
|
else
|
70
74
|
protocol = 0x20
|
71
75
|
end
|
76
|
+
if description
|
77
|
+
status = TO_STATUS_DESCRIPTION[status] or raise "Wrong status"
|
78
|
+
else
|
79
|
+
status = TO_STATUS[status] or raise "Wrong status"
|
80
|
+
end
|
81
|
+
if friendsonly
|
82
|
+
status = status | 0x8000
|
83
|
+
end
|
72
84
|
if version >= 7
|
73
85
|
hash = Digest::SHA1.digest(password + [seed].pack('L'))
|
74
|
-
|
86
|
+
if description
|
87
|
+
write(0x19, 'LCa64LLCLSLSCCa*C', uin, 0x02, hash, status, protocol, 0x00, localip, dccport, localip, dccport, 0x00, 0xbe, description, 0)
|
88
|
+
else
|
89
|
+
write(0x19, 'LCa64LLCLSLSCC', uin, 0x02, hash, status, protocol, 0x00, localip, dccport, localip, dccport, 0x00, 0xbe)
|
90
|
+
end
|
75
91
|
else
|
76
92
|
hash = gg_login_hash(password, seed)
|
77
|
-
|
93
|
+
if description
|
94
|
+
write(0x15, 'LLLLCLSLSCCa*C', uin, hash, status, 0x20, 0x00, localip, dccport, localip, dccport, 0x00, 0xbe, description, 0)
|
95
|
+
else
|
96
|
+
write(0x15, 'LLLLCLSLSCC', uin, hash, status, 0x20, 0x00, localip, dccport, localip, dccport, 0x00, 0xbe)
|
97
|
+
end
|
78
98
|
end
|
79
99
|
type, length = read_header
|
80
100
|
read_body(length)
|
@@ -128,14 +148,20 @@ Wysyla wiadomosc *message* do *uin*.
|
|
128
148
|
end
|
129
149
|
|
130
150
|
=begin rdoc
|
131
|
-
Zmienia status
|
151
|
+
Zmienia status, opcjonalnie ustawia opis i tryb tylko dla przyjaciol. Status powinien byc jednym z symboli: :avail, :busy, :invisible, :notavail
|
132
152
|
=end
|
133
|
-
def status(status, description=nil)
|
153
|
+
def status(status, description=nil, friendsonly=false)
|
134
154
|
if description
|
135
155
|
status_id = TO_STATUS_DESCRIPTION[status] or raise "Wrong status"
|
136
|
-
write(0x02, 'La*C', status_id, description, 0) if status_id
|
137
156
|
else
|
138
157
|
status_id = TO_STATUS[status] or raise "Wrong status"
|
158
|
+
end
|
159
|
+
if friendsonly
|
160
|
+
status_id = status_id | 0x8000
|
161
|
+
end
|
162
|
+
if description
|
163
|
+
write(0x02, 'La*C', status_id, description, 0) if status_id
|
164
|
+
else
|
139
165
|
write(0x02, 'L', status_id) if status_id
|
140
166
|
end
|
141
167
|
end
|
metadata
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
|
-
rubygems_version: 0.
|
2
|
+
rubygems_version: 0.9.4
|
3
3
|
specification_version: 1
|
4
4
|
name: rgadu
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.2.
|
7
|
-
date: 2007-
|
6
|
+
version: 0.2.1
|
7
|
+
date: 2007-12-21 00:00:00 +01:00
|
8
8
|
summary: A simple pure-Ruby implementation of the Gadu-Gadu protocol.
|
9
9
|
require_paths:
|
10
10
|
- lib
|
@@ -25,6 +25,7 @@ required_ruby_version: !ruby/object:Gem::Version::Requirement
|
|
25
25
|
platform: ruby
|
26
26
|
signing_key:
|
27
27
|
cert_chain:
|
28
|
+
post_install_message:
|
28
29
|
authors:
|
29
30
|
- bl4
|
30
31
|
files:
|