After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 767305 - Documentation for "interface" flag is bad
Documentation for "interface" flag is bad
Status: RESOLVED FIXED
Product: rygel
Classification: Applications
Component: general
0.31.x
Other Linux
: Normal normal
: ---
Assigned To: rygel-maint
rygel-maint
Depends on:
Blocks:
 
 
Reported: 2016-06-06 19:06 UTC by Nicolas Mailhot
Modified: 2016-06-26 15:03 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
doc: Explain interface list a bit better (1.18 KB, patch)
2016-06-26 14:57 UTC, Jens Georg
committed Details | Review
rygel: Allow IP addresses in interface list (1.01 KB, patch)
2016-06-26 15:02 UTC, Jens Georg
committed Details | Review

Description Nicolas Mailhot 2016-06-06 19:06:07 UTC
gupnp-0.20.17-1.fc25.x86_64
gupnp-av-0.12.8-1.fc24.x86_64
gupnp-dlna-0.10.4-1.fc24.x86_64
gupnp-igd-0.2.3-6.fc24.x86_64
gupnp-tools-0.8.12-1.fc25.x86_64
rygel-0.31.1-1.fc25.x86_64
tumbler-0.1.31-3.fc24.x86_64

# systemctl status rygel.service 
● rygel.service - Rygel DLNA server
   Loaded: loaded (/etc/systemd/system/rygel.service; enabled; vendor preset: disabled)
   Active: active (running) since lun. 2016-06-06 20:48:47 CEST; 2min 3s ago
 Main PID: 808 (rygel)
    Tasks: 3 (limit: 512)
   CGroup: /system.slice/rygel.service
           └─808 /usr/bin/rygel -c /etc/rygel-server.conf

juin 06 20:48:47 arekh.localdomain systemd[1]: Started Rygel DLNA server.
juin 06 20:48:48 arekh.localdomain rygel[808]: Rygel-Message: rygel-acl.vala:143: Pas de procédure de repli ACL trouvée. Utilisation de 
juin 06 20:48:48 arekh.localdomain rygel[808]: Rygel-Message: Démarrage de Rygel v0.31.1…
juin 06 20:48:48 arekh.localdomain rygel[808]: (rygel:808): Rygel-CRITICAL **: rygel_acl_on_name_vanished: assertion 'connection != NULL
juin 06 20:48:48 arekh.localdomain rygel[808]: RygelCore-Message: Nouveau greffon « Playbin » disponible
juin 06 20:48:48 arekh.localdomain rygel[808]: RygelCore-Message: Nouveau greffon « MediaExport » disponible

# lsof -i |grep rygel
rygel      808           rygel   10u  IPv4  21603      0t0  UDP localhost:ssdp 
rygel      808           rygel   11u  IPv4  21604      0t0  UDP 239.255.255.250:ssdp 
rygel      808           rygel   12u  IPv4  21606      0t0  UDP localhost:50001 
rygel      808           rygel   13u  IPv4  21607      0t0  TCP localhost:50001 (LISTEN)
rygel      808           rygel   15u  IPv4  21609      0t0  UDP arekh.okg:ssdp 
rygel      808           rygel   16u  IPv4  21610      0t0  UDP 239.255.255.250:ssdp 
rygel      808           rygel   17u  IPv4  21612      0t0  UDP arekh.okg:50001 
rygel      808           rygel   18u  IPv4  21613      0t0  TCP arekh.okg:50001 (LISTEN)

# gssdp-discover (on the same host, so no firewall problem)
→ picks up 3 appliances on the local network, but not the local server

Just to be sure:
# gssdp-discover -i lo
Using network interface lo
Scanning for all resources
Showing "available" messages
→ nothing

# diff -u /etc/rygel.conf /etc/rygel-server.conf
(/etc/rygel.conf as shipped in the Fedora package)

--- /etc/rygel.conf	2016-05-23 22:19:02.000000000 +0200
+++ /etc/rygel-server.conf	2016-06-06 01:35:37.749582346 +0200
@@ -29,10 +29,10 @@
 # List of network interfaces to attach rygel to. You can also use network IP or
 # even ESSID for wireless networks on Linux. Leave it blank for dynamic
 # configuration.
-interface=
+interface=192.168.0.4
 
 # The port to run HTTP server on. 0 means dynamic.
-port=0
+port=50001
 
 # Comma-separated list of domain:level pairs to specify log level thresholds for
 # individual domains. domain could be either 'rygel', name of a plugin or '*'
@@ -43,7 +43,7 @@
 # 3=warning
 # 4=message/info
 # 5=debug
-log-level=*:4
+log-level=*:5
 
 # Allow upload of media files?
 allow-upload=false
@@ -91,21 +91,21 @@
 image-timeout = 15
 
 [Tracker]
-enabled=true
-only-export-from=@MUSIC@;@VIDEOS@;@PICTURES@
-share-pictures=true
-share-videos=true
+enabled=false
+only-export-from=@MUSIC@;@VIDEOS@;@PICTURES@;/srv/music
+share-pictures=false
+share-videos=false
 share-music=true
 strict-sharing=false
-title=@REALNAME@'s media on @PRETTY_HOSTNAME@
+title=Arekh media
 
 [LMS]
 enabled=false
-title=@REALNAME@'s media on @PRETTY_HOSTNAME@
+title=Arekh media
 
 [MediaExport]
 enabled=true
-title=@REALNAME@'s media on @PRETTY_HOSTNAME@
+title=Arekh media
 # List of URIs to export. Following variables are automatically substituted by
 # the appropriate XDG standard media folders by Rygel for you.
 #
@@ -113,7 +113,7 @@
 #       * @VIDEOS@: The standard videos folder (typically ${HOME}/Videos).
 #       * @PICTURES@: The standard pictures folder (typically ${HOME}/Pictures).
 #
-uris=@MUSIC@;@VIDEOS@;@PICTURES@
+uris=@MUSIC@;@VIDEOS@;@PICTURES@;/srv/music
 extract-metadata=true
 monitor-changes=true
 monitor-grace-timeout=5
@@ -121,7 +121,7 @@
 
 [Playbin]
 enabled=true
-title=Audio/Video playback on @PRETTY_HOSTNAME@
+title=Audio/Video playback on Arekh
 
 [GstLaunch]
 enabled=false
@@ -159,4 +159,4 @@
 
 [Ruih]
 enabled=false
-title=Rygel Remote UI Server
+title=Arekh Remote UI Server


Both /srv/music and /var/lib/rygel/Music are populated and readable by rygel
Comment 1 Jens Georg 2016-06-06 19:18:05 UTC
Did you poke holes in the firewall? Strictly speaking that's not a Rygel issue. I might be repeating myself, but if you're running DLNA in an environment where you feel the need for a firewall, you shouldn't run DLNA in the first place.
Comment 2 Jens Georg 2016-06-06 19:21:04 UTC
sorry, missed the "not" in your sentence. Which version of gssdp is that?
Comment 3 Jens Georg 2016-06-06 19:24:07 UTC
How is that supposed to work:

You set +interface=192.168.0.4

And then expect something on an interface that is not 192.168.0.4?

# gssdp-discover -i lo
Using network interface lo
Scanning for all resources
Showing "available" messages
→ nothing


But then again I see "localhost" in you netstat output - and that's weird. Can you re-run with netstat -n 

and post the output of "host localhost"
Comment 4 Jens Georg 2016-06-06 19:33:35 UTC
Also, sorry, unfortunately the documentation is unclar. Use either the device name or the network (ip & netmask) or the ESSID (for wifi), not the IP address of the interface
Comment 5 Nicolas Mailhot 2016-06-06 20:56:38 UTC
(In reply to Jens Georg from comment #3)
> How is that supposed to work:
> 
> You set +interface=192.168.0.4
> 
> And then expect something on an interface that is not 192.168.0.4?

The system thinks itself as arekh.localhost
$ cat /etc/hostname 
arekh.localdomain

Its public local IP is 192.168.0.4
$ networkctl 
IDX LINK             TYPE               OPERATIONAL SETUP     
  1 lo               loopback           carrier     unmanaged 
  2 eno1             ether              carrier     configuring
  3 enp2s0           ether              carrier     configuring
  4 wlp3s0           wlan               off         unmanaged 
  5 bond0            ether              off         unmanaged 
  6 bond1            ether              routable    configured

$ networkctl status bond1
● 6: bond1
       Link File: /usr/lib/systemd/network/99-default.link
    Network File: /etc/systemd/network/bond1.network
            Type: ether
           State: routable (configured)
          Driver: bonding
      HW Address: fc:aa:14:2e:0c:4e (GIGA-BYTE TECHNOLOGY CO.,LTD.)
         Address: 192.168.0.4
                  2a02:8428:56d:bc00:bebb:6a7d:40b8:96f3
                  fe80::feaa:14ff:fe2e:c4e
         Gateway: 192.168.0.1 (SFR)
             DNS: 127.0.0.1
  Search Domains: okg
                  fr
                  org
                  net
                  com
Carrier Bound To: enp2s0
                  eno1


That IP has the name arekh.okg in the local DNS (but not all clients use the local dns, most access by ip)
$ host arekh.okg
arekh.okg has address 192.168.0.4

We see in # lsof -i |grep rygel that it is listening on localhost in addition to 192.168.0.4 (arekh.okg) so there is no reason for # gssdp-discover -i lo to fail?

> But then again I see "localhost" in you netstat output - and that's weird.
> Can you re-run with netstat -n 
# netstat -pn |grep rygel
unix  3      [ ]         STREAM     CONNECTE      21614    808/rygel            
unix  3      [ ]         STREAM     CONNECTE      21615    808/rygel            
unix  3      [ ]         STREAM     CONNECTE      17249    808/rygel  

> and post the output of "host localhost"

$ host localhost
localhost has address 127.0.0.1
localhost has IPv6 address ::1
Comment 6 Nicolas Mailhot 2016-06-06 21:18:17 UTC
(In reply to Jens Georg from comment #4)
> Also, sorry, unfortunately the documentation is unclar. Use either the
> device name or the network (ip & netmask) or the ESSID (for wifi), not the
> IP address of the interface

I changed the line to
interface=192.168.0.4/24,127.0.0.1/24,bond1

I restarted rygel
juin 06 23:04:33 arekh.localdomain systemd[1]: Started Rygel DLNA server.
juin 06 23:04:33 arekh.localdomain audit[1]: SERVICE_START pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=rygel comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
juin 06 23:04:33 arekh.localdomain rygel[2939]: Rygel-Message: rygel-acl.vala:143: Pas de procédure de repli ACL trouvée. Utilisation de « allow »
juin 06 23:04:33 arekh.localdomain rygel[2939]: Rygel-Message: Démarrage de Rygel v0.31.1…
juin 06 23:04:33 arekh.localdomain rygel[2939]: (rygel:2939): Rygel-CRITICAL **: rygel_acl_on_name_vanished: assertion 'connection != NULL' failed
juin 06 23:04:33 arekh.localdomain rygel[2939]: RygelCore-Message: Nouveau greffon « Playbin » disponible
juin 06 23:04:33 arekh.localdomain rygel[2939]: RygelCore-Message: Nouveau greffon « MediaExport » disponible

Still no luck in gssdp-discover (on the same host, as root)

(now I'm even picking 100.79.147.150:58645 which does not seem to belong to me, seems someone's network is leaking)

I wonder if rygel is alive at all (I don't like the Rygel-CRITICAL bit) – surely even if its networking was confused, I'd see some media file indexing messages by now with level 5 logging?
Comment 7 Nicolas Mailhot 2016-06-06 21:24:24 UTC
(In reply to Nicolas Mailhot from comment #6)

> I changed the line to
> interface=192.168.0.4/24,127.0.0.1/24,bond1

I changed the line again to 
interface=bond1

and this time I see some activity in the logs. So the config file comment that says interface is a list is lying

Now let's see if something picks the result
Comment 8 Jens Georg 2016-06-06 21:35:28 UTC
No, interface is definitely a list, separated by ";". also it doesn't understand the ip/mask syntax, 192.168.0.0;127.0.0.0;bond1 should do.

You can ignore the critical, that's related to DBus and completely irrelevant.

Also, there seems to be a bug in GUPnP where it keeps listening on all interfaces it finds.

So there will be output in netstat/lsof, but nothing will be exposed on the ports because Rygel is told to ignore them
Comment 9 Nicolas Mailhot 2016-06-06 21:44:35 UTC
(In reply to Nicolas Mailhot from comment #7)
> (In reply to Nicolas Mailhot from comment #6)
> 
> > I changed the line to
> > interface=192.168.0.4/24,127.0.0.1/24,bond1
> 
> I changed the line again to 
> interface=bond1
> 
> and this time I see some activity in the logs. So the config file comment
> that says interface is a list is lying
> 
> Now let's see if something picks the result

Ok it works on the three dlna output nodes I tested. Thank you very much, I was stuck!

However there's something strange in the way Rygel exports the Year (Année in French) music facet: on two players out of three it is displayed as Ann?e, even though diacritics are perfect on track title and artist names
Comment 10 Jens Georg 2016-06-07 05:37:13 UTC
That sounds odd. Everything should be sent as UTF-8 and clearly announced as such. https://git.gnome.org/browse/rygel/tree/po/fr.po#n1359 doesn't look suspicious.
Comment 11 Jens Georg 2016-06-26 14:57:26 UTC
Created attachment 330404 [details] [review]
doc: Explain interface list a bit better

Signed-off-by: Jens Georg <mail@jensge.org>
Comment 12 Jens Georg 2016-06-26 15:02:55 UTC
Created attachment 330405 [details] [review]
rygel: Allow IP addresses in interface list

Signed-off-by: Jens Georg <mail@jensge.org>
Comment 13 Jens Georg 2016-06-26 15:03:34 UTC
Attachment 330404 [details] pushed as c9f3703 - doc: Explain interface list a bit better
Attachment 330405 [details] pushed as 30e6d89 - rygel: Allow IP addresses in interface list