pangdudu-ruby-dbus 0.1.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.
@@ -0,0 +1,34 @@
1
+ #!/usr/bin/ruby
2
+
3
+ require "dbus"
4
+
5
+ session_bus = DBus::SessionBus.instance
6
+
7
+ # Get the Rhythmbox service
8
+ rhythmbox = session_bus.service("org.gnome.Rhythmbox")
9
+
10
+ # Get the object from this service
11
+ player = rhythmbox.object("/org/gnome/Rhythmbox/Player")
12
+
13
+ # Introspect it
14
+ player.introspect
15
+ if player.has_iface? "org.gnome.Rhythmbox.Player"
16
+ puts "We have Rhythmbox Player interface"
17
+ end
18
+
19
+ player_with_iface = player["org.gnome.Rhythmbox.Player"]
20
+ p player_with_iface.getPlayingUri
21
+
22
+ # Maybe support default_iface=(iface_str) on an ProxyObject, so
23
+ # that this is possible?
24
+ player.default_iface = "org.gnome.Rhythmbox.Player"
25
+ puts "default_iface test:"
26
+ p player.getPlayingUri
27
+ player.on_signal("elapsedChanged") do |u|
28
+ puts "elapsedChanged: #{u}"
29
+ end
30
+
31
+ main = DBus::Main.new
32
+ main << session_bus
33
+ main.run
34
+
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/ruby
2
+
3
+ require 'dbus'
4
+
5
+ d = if ARGV.member?("--system")
6
+ DBus::SystemBus.instance
7
+ else
8
+ DBus::SessionBus.instance
9
+ end
10
+ d.proxy.ListNames[0].each{ |n| puts "\t#{n}" }
11
+
@@ -0,0 +1,19 @@
1
+ #!/usr/bin/ruby
2
+
3
+ require 'dbus'
4
+
5
+ if ARGV.size < 2
6
+ puts "Usage:"
7
+ puts "notify.rb \"title\" \"body\""
8
+ exit
9
+ end
10
+
11
+ d = DBus::SessionBus.instance
12
+ o = d.service("org.freedesktop.Notifications").object("/org/freedesktop/Notifications")
13
+ o.introspect
14
+
15
+ i = o["org.freedesktop.Notifications"]
16
+
17
+ i.Notify('notify.rb', 0, 'info', ARGV[0], ARGV[1], [], {}, 2000) do |ret, param|
18
+ end
19
+
data/lib/dbus/auth.rb CHANGED
@@ -29,68 +29,12 @@ module DBus
29
29
  # each character and determin hex value "1" => 0x31, "0" => 0x30. You
30
30
  # obtain for "1000" => 31303030 This is what the server is expecting.
31
31
  # Why? I dunno. How did I come to that conclusion? by looking at rbus
32
- # code. I have no idea how he found that out.
32
+ # code. I have no idea how he found that out.
33
33
  return Process.uid.to_s.split(//).collect { |a| "%x" % a[0] }.join
34
34
  end
35
35
  end
36
-
37
- # = Authentication class using SHA1 crypto algorithm
38
- #
39
- # Class for 'CookieSHA1' type authentication.
40
- # Implements the AUTH DBUS_COOKIE_SHA1 mechanism.
41
- class DBusCookieSHA1 < Authenticator
42
-
43
- #the autenticate method (called in stage one of authentification)
44
- def authenticate
45
- require 'etc'
46
- return "#{hex_encode(Etc.getlogin)}" #server expects it to be binary
47
- end
48
36
 
49
- #returns the modules name
50
- def name
51
- return 'DBUS_COOKIE_SHA1'
52
- end
53
-
54
- #handles the interesting crypto stuff, check the rbus-project for more info: http://rbus.rubyforge.org/
55
- def data(hexdata)
56
- require 'digest/sha1'
57
- data = hex_decode(hexdata)
58
- # name of cookie file, id of cookie in file, servers random challenge
59
- context, id, s_challenge = data.split(' ')
60
- # Random client challenge
61
- c_challenge = Array.new(s_challenge.length/2).map{|obj|obj=rand(255).to_s}.join
62
- # Search cookie file for id
63
- path = File.join(ENV['HOME'], '.dbus-keyrings', context)
64
- dlog "path: #{path.inspect}"
65
- File.foreach(path) do |line|
66
- if line.index(id) == 0
67
- # Right line of file, read cookie
68
- cookie = line.split(' ')[2].chomp
69
- dlog "cookie: #{cookie.inspect}"
70
- # Concatenate and encrypt
71
- to_encrypt = [s_challenge, c_challenge, cookie].join(':')
72
- sha = Digest::SHA1.hexdigest(to_encrypt)
73
- #the almighty tcp server wants everything hex encoded
74
- hex_response = hex_encode("#{c_challenge} #{sha}")
75
- # Return response
76
- response = [:AuthOk, hex_response]
77
- return response
78
- end
79
- end
80
- elog "Unable to locate cookie"
81
- end
82
-
83
- # encode plain to hex
84
- def hex_encode(plain)
85
- return nil if plain.nil?
86
- plain.to_s.unpack('H*')[0]
87
- end
88
-
89
- # decode hex to plain
90
- def hex_decode(encoded)
91
- encoded.scan(/[[:xdigit:]]{2}/).map{|h|h.hex.chr}.join
92
- end
93
- end #DBusCookieSHA1 class ends here
37
+ # Note: this following stuff is tested with External authenticator only!
94
38
 
95
39
  # = Authentication client class.
96
40
  #
@@ -100,7 +44,7 @@ module DBus
100
44
  def initialize(socket)
101
45
  @socket = socket
102
46
  @state = nil
103
- @auth_list = [External,DBusCookieSHA1]
47
+ @auth_list = [External]
104
48
  end
105
49
 
106
50
  # Start the authentication process.
@@ -128,59 +72,35 @@ module DBus
128
72
 
129
73
  # Try authentication using the next authenticator.
130
74
  def next_authenticator
131
- begin
132
- raise AuthException if @auth_list.size == 0
133
- @authenticator = @auth_list.shift.new
134
- auth_msg = ["AUTH", @authenticator.name, @authenticator.authenticate]
135
- dlog "auth_msg: #{auth_msg.inspect}"
136
- send(auth_msg)
137
- rescue AuthException
138
- @socket.close
139
- raise
140
- end
75
+ raise AuthenticationFailed if @auth_list.size == 0
76
+ @authenticator = @auth_list.shift.new
77
+ send("AUTH", @authenticator.name, @authenticator.authenticate)
141
78
  end
142
79
 
143
80
 
144
81
  # Read data (a buffer) from the bus until CR LF is encountered.
145
82
  # Return the buffer without the CR LF characters.
146
83
  def next_msg
147
- data,crlf = "","\r\n"
148
- left = 1024 #1024 byte, no idea if it's ever getting bigger
149
- while left > 0
150
- buf = @socket.read( left > 1 ? 1 : left )
151
- break if buf.nil?
152
- left -= buf.size
153
- data += buf
154
- break if data.include? crlf #crlf means line finished, the TCP socket keeps on listening, so we break
155
- end
156
- readline = data.chomp.split(" ")
157
- dlog "readline: #{readline.inspect}"
158
- return readline
84
+ @socket.readline.chomp.split(" ")
159
85
  end
160
86
 
161
87
  # Try to reach the next state based on the current state.
162
88
  def next_state
163
89
  msg = next_msg
164
90
  if @state == :Starting
165
- dlog ":Starting msg: #{msg[0].inspect}"
166
91
  case msg[0]
167
- when "OK"
168
- @state = :WaitingForOk
169
92
  when "CONTINUE"
170
93
  @state = :WaitingForData
171
- when "REJECTED" #needed by tcp, unix-path/abstract doesn't get here
172
- @state = :WaitingForData
94
+ when "OK"
95
+ @state = :WaitingForOk
173
96
  end
174
97
  end
175
- dlog "state: #{@state}"
176
98
  case @state
177
99
  when :WaitingForData
178
- dlog ":WaitingForData msg: #{msg[0].inspect}"
179
100
  case msg[0]
180
101
  when "DATA"
181
102
  chall = msg[1]
182
103
  resp, chall = @authenticator.data(chall)
183
- dlog ":WaitingForData/DATA resp: #{resp.inspect}"
184
104
  case resp
185
105
  when :AuthContinue
186
106
  send("DATA", chall)
@@ -206,7 +126,6 @@ module DBus
206
126
  @state = :WaitingForData
207
127
  end
208
128
  when :WaitingForOk
209
- dlog ":WaitingForOk msg: #{msg[0].inspect}"
210
129
  case msg[0]
211
130
  when "OK"
212
131
  send("BEGIN")
@@ -222,7 +141,6 @@ module DBus
222
141
  @state = :WaitingForOk
223
142
  end
224
143
  when :WaitingForReject
225
- dlog ":WaitingForReject msg: #{msg[0].inspect}"
226
144
  case msg[0]
227
145
  when "REJECT"
228
146
  next_authenticator
@@ -234,5 +152,5 @@ module DBus
234
152
  end
235
153
  return true
236
154
  end # def next_state
237
- end # class Client
155
+ end # class Client
238
156
  end # module D-Bus
data/lib/dbus/bus.rb CHANGED
@@ -7,6 +7,7 @@
7
7
  # modify it under the terms of the GNU Lesser General Public
8
8
  # License, version 2.1 as published by the Free Software Foundation.
9
9
  # See the file "COPYING" for the exact licensing terms.
10
+
10
11
  require 'socket'
11
12
  require 'thread'
12
13
  require 'singleton'
@@ -77,7 +78,7 @@ module DBus
77
78
  n = n[elem]
78
79
  end
79
80
  if n.nil?
80
- wlog "Unknown object #{path.inspect}"
81
+ puts "Warning, unknown object #{path}" if $DEBUG
81
82
  end
82
83
  n
83
84
  end
@@ -123,9 +124,10 @@ module DBus
123
124
 
124
125
  # Return an XML string representation of the node.
125
126
  def to_xml
126
- xml = '<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN" "http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
127
- <node>'
128
-
127
+ xml = '<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN"
128
+ "http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
129
+ <node>
130
+ '
129
131
  self.each_pair do |k, v|
130
132
  xml += "<node name=\"#{k}\" />"
131
133
  end
@@ -138,7 +140,7 @@ module DBus
138
140
  end
139
141
  end
140
142
  xml += '</node>'
141
- return xml
143
+ xml
142
144
  end
143
145
 
144
146
  # Return inspect information of the node.
@@ -171,10 +173,14 @@ module DBus
171
173
 
172
174
  # Create a new connection to the bus for a given connect _path_. _path_
173
175
  # format is described in the D-Bus specification:
174
- # http://dbus.freedesktop.org/doc/dbus-specification.html#addresses
176
+ # http://dbus.freedesktop.org/doc/dbus-specification.html#addresses
175
177
  # and is something like:
176
178
  # "transport1:key1=value1,key2=value2;transport2:key1=value1,key2=value2"
177
- # e.g. "unix:path=/tmp/dbus-test" or "tcp:host=localhost,port=2687"
179
+ # e.g. "unix:path=/tmp/dbus-test"
180
+ #
181
+ # Current implementation of ruby-dbus supports only a single server
182
+ # address and only "unix:path=...,guid=..." and
183
+ # "unix:abstract=...,guid=..." forms
178
184
  def initialize(path)
179
185
  @path = path
180
186
  @unique_name = nil
@@ -183,44 +189,14 @@ module DBus
183
189
  @method_call_msgs = Hash.new
184
190
  @signal_matchrules = Array.new
185
191
  @proxy = nil
192
+ # FIXME: can be TCP or any stream
193
+ @socket = Socket.new(Socket::Constants::PF_UNIX,
194
+ Socket::Constants::SOCK_STREAM, 0)
186
195
  @object_root = Node.new("/")
187
196
  end
188
197
 
189
198
  # Connect to the bus and initialize the connection.
190
199
  def connect
191
- connect_to_tcp if @path.include? "tcp:" #connect to tcp socket
192
- connect_to_unix if @path.include? "unix:" #connect to unix socket
193
- end
194
-
195
- # Connect to a bus over tcp and initialize the connection.
196
- def connect_to_tcp
197
- #check if the path is sufficient
198
- if @path.include? "host=" and @path.include? "port="
199
- host,port,family = "","",""
200
- #get the parameters
201
- @path.split(",").each do |para|
202
- host = para.sub("tcp:","").sub("host=","") if para.include? "host="
203
- port = para.sub("port=","").to_i if para.include? "port="
204
- family = para.sub("family=","") if para.include? "family="
205
- end
206
- dlog "host,port,family : #{host},#{port},#{family}"
207
- begin
208
- #initialize the tcp socket
209
- @socket = TCPSocket.new(host,port)
210
- init_connection
211
- rescue
212
- elog "Could not establish connection to: #{@path}, will now exit."
213
- exit(0) #a little harsh
214
- end
215
- else
216
- #Danger, Will Robinson: the specified "path" is not usable
217
- elog "supplied path: #{@path}, unusable! sorry."
218
- end
219
- end
220
-
221
- # Connect to an abstract unix bus and initialize the connection.
222
- def connect_to_unix
223
- @socket = Socket.new(Socket::Constants::PF_UNIX,Socket::Constants::SOCK_STREAM, 0)
224
200
  parse_session_string
225
201
  if @transport == "unix" and @type == "abstract"
226
202
  if HOST_END == LIL_END
@@ -234,32 +210,10 @@ module DBus
234
210
  @socket.connect(sockaddr)
235
211
  init_connection
236
212
  end
237
-
238
- # Parse the session string (socket address).
239
- def parse_session_string
240
- path_parsed = /^([^:]*):([^;]*)$/.match(@path)
241
- @transport = path_parsed[1]
242
- adr = path_parsed[2]
243
- if @transport == "unix"
244
- adr.split(",").each do |eqstr|
245
- idx, val = eqstr.split("=")
246
- case idx
247
- when "path"
248
- @type = idx
249
- @unix = val
250
- when "abstract"
251
- @type = idx
252
- @unix_abstract = val
253
- when "guid"
254
- @guid = val
255
- end
256
- end
257
- end
258
- end
259
213
 
260
214
  # Send the buffer _buf_ to the bus using Connection#writel.
261
215
  def send(buf)
262
- @socket.write(buf) unless @socket.nil?
216
+ @socket.write(buf)
263
217
  end
264
218
 
265
219
  # Tell a bus to register itself on the glib main loop
@@ -446,7 +400,7 @@ module DBus
446
400
  # Fill (append) the buffer from data that might be available on the
447
401
  # socket.
448
402
  def update_buffer
449
- @buffer += @socket.read_nonblock(MSG_BUF_SIZE) unless @socket.nil?
403
+ @buffer += @socket.read_nonblock(MSG_BUF_SIZE)
450
404
  end
451
405
 
452
406
  # Get one message from the bus and remove it from the buffer.
@@ -487,10 +441,6 @@ module DBus
487
441
 
488
442
  # Wait for a message to arrive. Return it once it is available.
489
443
  def wait_for_message
490
- if @socket.nil?
491
- elog "Can't wait for messages, @socket is nil."
492
- return
493
- end
494
444
  ret = pop_message
495
445
  while ret == nil
496
446
  r, d, d = IO.select([@socket])
@@ -505,15 +455,11 @@ module DBus
505
455
  # Send a message _m_ on to the bus. This is done synchronously, thus
506
456
  # the call will block until a reply message arrives.
507
457
  def send_sync(m, &retc) # :yields: reply/return message
508
- return if m.nil? #check if somethings wrong
509
458
  send(m.marshall)
510
459
  @method_call_msgs[m.serial] = m
511
460
  @method_call_replies[m.serial] = retc
512
461
 
513
462
  retm = wait_for_message
514
-
515
- return if retm.nil? #check if somethings wrong
516
-
517
463
  process(retm)
518
464
  until [DBus::Message::ERROR,
519
465
  DBus::Message::METHOD_RETURN].include?(retm.message_type) and
@@ -528,7 +474,6 @@ module DBus
528
474
  def on_return(m, &retc)
529
475
  # Have a better exception here
530
476
  if m.message_type != Message::METHOD_CALL
531
- elog "Funky exception, occured."
532
477
  raise "on_return should only get method_calls"
533
478
  end
534
479
  @method_call_msgs[m.serial] = m
@@ -544,14 +489,17 @@ module DBus
544
489
  end
545
490
 
546
491
  # Process a message _m_ based on its type.
492
+ # method call:: FIXME...
493
+ # method call return value:: FIXME...
494
+ # signal:: FIXME...
495
+ # error:: FIXME...
547
496
  def process(m)
548
- return if m.nil? #check if somethings wrong
549
497
  case m.message_type
550
498
  when Message::ERROR, Message::METHOD_RETURN
551
499
  raise InvalidPacketException if m.reply_serial == nil
552
500
  mcs = @method_call_replies[m.reply_serial]
553
501
  if not mcs
554
- dlog "no return code for mcs: #{mcs.inspect} m: #{m.inspect}"
502
+ puts "no return code for #{mcs.inspect} (#{m.inspect})" if $DEBUG
555
503
  else
556
504
  if m.message_type == Message::ERROR
557
505
  mcs.call(Error.new(m))
@@ -563,7 +511,7 @@ module DBus
563
511
  end
564
512
  when DBus::Message::METHOD_CALL
565
513
  if m.path == "/org/freedesktop/DBus"
566
- dlog "Got method call on /org/freedesktop/DBus"
514
+ puts "Got method call on /org/freedesktop/DBus" if $DEBUG
567
515
  end
568
516
  # handle introspectable as an exception:
569
517
  if m.interface == "org.freedesktop.DBus.Introspectable" and
@@ -591,7 +539,7 @@ module DBus
591
539
  end
592
540
  end
593
541
  else
594
- dlog "Unknown message type: #{m.message_type}"
542
+ puts "Unknown message type: #{m.message_type}" if $DEBUG
595
543
  end
596
544
  end
597
545
 
@@ -631,7 +579,29 @@ module DBus
631
579
  m.member = "Hello"
632
580
  send_sync(m) do |rmsg|
633
581
  @unique_name = rmsg.destination
634
- dlog "Got hello reply. Our unique_name is #{@unique_name}, i feel special."
582
+ puts "Got hello reply. Our unique_name is #{@unique_name}" if $DEBUG
583
+ end
584
+ end
585
+
586
+ # Parse the session string (socket address).
587
+ def parse_session_string
588
+ path_parsed = /^([^:]*):([^;]*)$/.match(@path)
589
+ @transport = path_parsed[1]
590
+ adr = path_parsed[2]
591
+ if @transport == "unix"
592
+ adr.split(",").each do |eqstr|
593
+ idx, val = eqstr.split("=")
594
+ case idx
595
+ when "path"
596
+ @type = idx
597
+ @unix = val
598
+ when "abstract"
599
+ @type = idx
600
+ @unix_abstract = val
601
+ when "guid"
602
+ @guid = val
603
+ end
604
+ end
635
605
  end
636
606
  end
637
607
 
@@ -639,6 +609,11 @@ module DBus
639
609
  def init_connection
640
610
  @client = Client.new(@socket)
641
611
  @client.authenticate
612
+ # TODO: code some real stuff here
613
+ #writel("AUTH EXTERNAL 31303030")
614
+ #s = readl
615
+ # parse OK ?
616
+ #writel("BEGIN")
642
617
  end
643
618
  end # class Connection
644
619
 
@@ -648,10 +623,10 @@ module DBus
648
623
  # This is a singleton class.
649
624
  class SessionBus < Connection
650
625
  include Singleton
651
-
626
+
652
627
  # Get the the default session bus.
653
- def initialize socket_name=SessionSocketName
654
- super(socket_name)
628
+ def initialize
629
+ super(ENV["DBUS_SESSION_BUS_ADDRESS"])
655
630
  connect
656
631
  send_hello
657
632
  end
@@ -665,14 +640,14 @@ module DBus
665
640
  include Singleton
666
641
 
667
642
  # Get the default system bus.
668
- def initialize socket_name=SystemSocketName
669
- super(socket_name)
643
+ def initialize
644
+ super(SystemSocketName)
670
645
  connect
671
646
  send_hello
672
647
  end
673
648
  end
674
649
 
675
- # FIXME: we should get rid of these singeltons
650
+ # FIXME: we should get rid of these
676
651
 
677
652
  def DBus.system_bus
678
653
  SystemBus.instance
@@ -1,4 +1,4 @@
1
- p# dbus/introspection.rb - module containing a low-level D-Bus introspection implementation
1
+ # dbus/introspection.rb - module containing a low-level D-Bus introspection implementation
2
2
  #
3
3
  # This file is part of the ruby-dbus project
4
4
  # Copyright (C) 2007 Arnaud Cornet and Paul van Tilburg
@@ -237,7 +237,7 @@ module DBus
237
237
  end
238
238
  d = Time.now - t
239
239
  if d > 2
240
- wlog "Some XML took more that two secs to parse. Optimize me! (Hpricot?)"
240
+ puts "Some XML took more that two secs to parse. Optimize me!" if $DEBUG
241
241
  end
242
242
  [ret, subnodes]
243
243
  end
data/lib/dbus.rb CHANGED
@@ -7,19 +7,16 @@
7
7
  # modify it under the terms of the GNU Lesser General Public
8
8
  # License, version 2.1 as published by the Free Software Foundation.
9
9
  # See the file "COPYING" for the exact licensing terms.
10
- require 'rubygems'
11
- require 'rofl' #http://github.com/pangdudu/rofl/tree/master makes the debug/tracing easy
12
- #comes from the Rofl logger/tracer module
13
- @logger.level = Logger::DEBUG
14
10
 
15
11
  require 'dbus/type'
16
12
  require 'dbus/introspect'
17
13
  require 'dbus/export'
18
- require 'dbus/bus'
14
+ require 'dbus/bus.rb'
19
15
  require 'dbus/marshall'
20
16
  require 'dbus/message'
21
17
  require 'dbus/matchrule'
22
18
  require 'dbus/auth'
19
+
23
20
  require 'socket'
24
21
  require 'thread'
25
22
 
@@ -30,9 +27,6 @@ module DBus
30
27
  # Default socket name for the system bus.
31
28
  SystemSocketName = "unix:path=/var/run/dbus/system_bus_socket"
32
29
 
33
- # Socket name for the session bus, not pretty.
34
- SessionSocketName = ENV["DBUS_SESSION_BUS_ADDRESS"]
35
-
36
30
  # Byte signifying big endianness.
37
31
  BIG_END = ?B
38
32
  # Byte signifying little endianness.
metadata CHANGED
@@ -1,39 +1,47 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pangdudu-ruby-dbus
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
- - Ruby DBUS Team, pangdudu
7
+ - Ruby DBUS Team
8
8
  autorequire: dbus
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-07-27 00:00:00 -07:00
12
+ date: 2009-05-16 00:00:00 -07:00
13
13
  default_executable:
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
16
- name: pangdudu-rofl
17
- type: :runtime
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
20
- requirements:
21
- - - ">="
22
- - !ruby/object:Gem::Version
23
- version: "0"
24
- version:
25
- description: Ruby module for interaction with dbus, panda dev fork.
26
- email: pangdudu@github
14
+ dependencies: []
15
+
16
+ description:
17
+ email: http://trac.luon.net
27
18
  executables: []
28
19
 
29
20
  extensions: []
30
21
 
31
22
  extra_rdoc_files:
32
- - README.rdoc
23
+ - ChangeLog
33
24
  - COPYING
25
+ - README
26
+ - NEWS
34
27
  files:
35
- - COPYING
36
- - README.rdoc
28
+ - examples/simple
29
+ - examples/simple/call_introspect.rb
30
+ - examples/service
31
+ - examples/service/call_service.rb
32
+ - examples/service/service_newapi.rb
33
+ - examples/gdbus
34
+ - examples/gdbus/gdbus.glade
35
+ - examples/gdbus/gdbus
36
+ - examples/gdbus/launch.sh
37
+ - examples/no-introspect
38
+ - examples/no-introspect/nm-test.rb
39
+ - examples/no-introspect/tracker-test.rb
40
+ - examples/rhythmbox
41
+ - examples/rhythmbox/playpause.rb
42
+ - examples/utils
43
+ - examples/utils/listnames.rb
44
+ - examples/utils/notify.rb
37
45
  - lib/dbus
38
46
  - lib/dbus/message.rb
39
47
  - lib/dbus/auth.rb
@@ -44,12 +52,12 @@ files:
44
52
  - lib/dbus/matchrule.rb
45
53
  - lib/dbus/bus.rb
46
54
  - lib/dbus.rb
47
- - config/remote.session.dbus.conf
48
- - config/start_dbus_session.sh
49
- - test/simple_socket_test.rb
55
+ - ChangeLog
56
+ - COPYING
57
+ - README
58
+ - NEWS
50
59
  has_rdoc: true
51
- homepage: http://github.com/pangdudu/ruby-dbus/tree/master
52
- licenses:
60
+ homepage: http://trac.luon.net/data/ruby-dbus/
53
61
  post_install_message:
54
62
  rdoc_options: []
55
63
 
@@ -70,9 +78,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
70
78
  requirements: []
71
79
 
72
80
  rubyforge_project:
73
- rubygems_version: 1.3.5
81
+ rubygems_version: 1.2.0
74
82
  signing_key:
75
83
  specification_version: 2
76
- summary: Ruby module for interaction with dbus.
84
+ summary: Ruby module for interaction with dbus
77
85
  test_files: []
78
86