Phriction  Witaj na wiki Hackerspace Kraków!  Archiwum  Autoindex  [ZARCHIWIZOWANO] Remote audio  [ZARCHIWIZOWANO] Tutorial RemoteAudio  [ZARCHIWIZOWANO] Tutorial RemoteAudio - Konfiguracja Avahi  History  Version 1 vs 2 
Version 1 vs 2
Version 1 vs 2
Content Changes
Content Changes
====== [ZARCHIWIZOWANO] Tutorial RemoteAudio - Konfiguracja Avahi ======
Avahi powinno na większości dystrybucji działać out-of-box. Jeżeli tak nie jest, trzeba sprawdzić konfigurację. Poniżej zamieszczam domyślną działającą konfigurację Avahi w wersji 0.6.31:
===== Domyślna konfiguracja Avahi =====
==== /etc/avahi ====
<file - avahi-daemon.conf>
# This file is part of avahi.
#
# avahi is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as
# published by the Free Software Foundation; either version 2 of the
# License, or (at your option) any later version.
#
# avahi is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
# License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with avahi; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
# USA.
# See avahi-daemon.conf(5) for more information on this configuration
# file!
[server]
#host-name=foo
#domain-name=local
browse-domains=0pointer.de, zeroconf.org
use-ipv4=yes
use-ipv6=no
#allow-interfaces=eth0
#deny-interfaces=eth1
#check-response-ttl=no
#use-iff-running=no
#enable-dbus=yes
#disallow-other-stacks=no
#allow-point-to-point=no
#cache-entries-max=4096
#clients-max=4096
#objects-per-client-max=1024
#entries-per-entry-group-max=32
ratelimit-interval-usec=1000000
ratelimit-burst=1000
[wide-area]
enable-wide-area=yes
[publish]
#disable-publishing=no
#disable-user-service-publishing=no
#add-service-cookie=no
#publish-addresses=yes
#publish-hinfo=yes
#publish-workstation=yes
#publish-domain=yes
#publish-dns-servers=192.168.50.1, 192.168.50.2
#publish-resolv-conf-dns-servers=yes
#publish-aaaa-on-ipv4=yes
#publish-a-on-ipv6=no
[reflector]
#enable-reflector=no
#reflect-ipv=no
[rlimits]
#rlimit-as=
rlimit-core=0
rlimit-data=4194304
rlimit-fsize=0
rlimit-nofile=768
rlimit-stack=4194304
rlimit-nproc=3
</file>
<file bash avahi-autoipd.action>
#!/bin/sh
# This file is part of avahi.
#
# avahi is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as
# published by the Free Software Foundation; either version 2 of the
# License, or (at your option) any later version.
#
# avahi is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
# License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with avahi; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
# USA.
set -e
# Command line arguments:
#   $1 event that happened:
#          BIND:     Successfully claimed address
#          CONFLICT: An IP address conflict happened
#          UNBIND:   The IP address is no longer needed
#          STOP:     The daemon is terminating
#   $2 interface name
#   $3 IP adddress
PATH="$PATH:/usr/bin:/usr/sbin:/bin:/sbin"
# Use a different metric for each interface, so that we can set
# identical routes to multiple interfaces.
METRIC=$((1000 + `cat "/sys/class/net/$2/ifindex" 2>/dev/null || echo 0`))
if [ -x /bin/ip -o -x /sbin/ip ] ; then
    # We have the Linux ip tool from the iproute package
    case "$1" in
        BIND)
            ip addr add "$3"/16 brd 169.254.255.255 label "$2:avahi" scope link dev "$2"
            ip route add default dev "$2" metric "$METRIC" scope link ||:
            ;;
        CONFLICT|UNBIND|STOP)
            ip route del default dev "$2" metric "$METRIC" scope link ||:
            ip addr del "$3"/16 brd 169.254.255.255 label "$2:avahi" scope link dev "$2"
            ;;
        *)
            echo "Unknown event $1" >&2
            exit 1
            ;;
    esac
elif [ -x /bin/ifconfig -o -x /sbin/ifconfig ] ; then
    # We have the old ifconfig tool
    case "$1" in
        BIND)
            ifconfig "$2:avahi" inet "$3" netmask 255.255.0.0 broadcast 169.254.255.255 up
            route add default dev "$2:avahi" metric "$METRIC" ||:
            ;;
        CONFLICT|STOP|UNBIND)
            route del default dev "$2:avahi" metric "$METRIC" ||:
            ifconfig "$2:avahi" down
            ;;
        *)
            echo "Unknown event $1" >&2
            exit 1
            ;;
    esac
else
    echo "No network configuration tool found." >&2
    exit 1
fi
exit 0
</file>
<file bash avahi-dnsconfd.action>
#!/bin/sh
# This file is part of avahi.
# 
# avahi is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as
# published by the Free Software Foundation; either version 2 of the
# License, or (at your option) any later version.
#
# avahi is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
# License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with avahi; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
# USA.
set -e
test "x$AVAHI_INTERFACE" != "x"
# Command line arguments:
#   $1 "+" if a new DNS server was found, "-" if one was removed
#   $2 DNS Server address
#   $3 interface index where this server was found on
#   $4 protocol number where this server was found on
# Available environment variables:
#
#   $AVAHI_INTERFACE               The interface name where this DNS server was found on
#   $AVAHI_INTERFACE_DNS_SERVERS   A whitespace seperated list of DNS servers on $AVAHI_INTERFACE
#   $AVAHI_DNS_SERVERS             The complete list of all DNS servers found on all interfaces
if [ -x /sbin/netconfig ]; then
    # SUSE method on 11.1+
    if [ -n "$AVAHI_INTERFACE_DNS_SERVERS" ]; then
        /sbin/netconfig modify -s avahi -i "$AVAHI_INTERFACE" <<-EOF
        INTERFACE='$AVAHI_INTERFACE'
        DNSSERVERS='$AVAHI_INTERFACE_DNS_SERVERS'
        EOF
    else
        /sbin/netconfig remove -s avahi -i "$AVAHI_INTERFACE"
    fi
elif [ -x /sbin/modify_resolvconf ] ; then
    # method for SUSE <= 11.0
    if [ -n "$AVAHI_DNS_SERVERS" ]; then
        /sbin/modify_resolvconf modify -s avahi -t - -p avahi-dnsconfd -n "$AVAHI_DNS_SERVERS" <<-EOF
        if you don't like avahi to update your Nameservers
        disable the avahi-dnsconfd init script
        EOF
    else
        /sbin/modify_resolvconf restore -s avahi
    fi
elif [ -x /usr/sbin/resolvconf ] ; then
    # We have Debian's resolvconf tool
    if [ "x$AVAHI_INTERFACE_DNS_SERVERS" = "x" ] ; then
        /usr/sbin/resolvconf -d "$AVAHI_INTERFACE.avahi"
    else
        for n in $AVAHI_INTERFACE_DNS_SERVERS ; do 
            echo "nameserver $n"
        done | /usr/sbin/resolvconf -a "$AVAHI_INTERFACE.avahi"
    fi
else
    # No resolvconf tool available
    if [ "x$AVAHI_DNS_SERVERS" = "x" ] ; then
        test -f /etc/resolv.conf.avahi && mv /etc/resolv.conf.avahi /etc/resolv.conf
    else
        test -f /etc/resolv.conf.avahi || mv /etc/resolv.conf /etc/resolv.conf.avahi
        for n in $AVAHI_DNS_SERVERS ; do 
            echo "nameserver $n"
        done > /etc/resolv.conf
    fi
fi
</file>
<file - hosts>
# This file is part of avahi.
# 
# avahi is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as
# published by the Free Software Foundation; either version 2 of the
# License, or (at your option) any later version.
#
# avahi is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
# License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with avahi; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
# USA.
# This file contains static ip address <-> host name mappings.  These
# can be useful to publish services on behalf of a non-avahi enabled
# device. Please bear in mind that host names are expected to be
# fully qualified domain names, i.e. ending in .local!
# See avahi.hosts(5) for more information on this configuration file!
# Examples:
# 192.168.0.1 router.local
# 2001::81:1 test.local
</file>
==== /etc/avahi/services ====
<file xml sftp-ssh.service>
<?xml version="1.0" standalone='no'?><!--*-nxml-*-->
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<!--
  This file is part of avahi.
  avahi is free software; you can redistribute it and/or modify it
  under the terms of the GNU Lesser General Public License as
  published by the Free Software Foundation; either version 2 of the
  License, or (at your option) any later version.
  avahi is distributed in the hope that it will be useful, but
  WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  General Public License for more details.
  You should have received a copy of the GNU Lesser General Public
  License along with avahi; if not, write to the Free Software
  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  02111-1307 USA.
-->
<!-- See avahi.service(5) for more information about this configuration file -->
<service-group>
  <name replace-wildcards="yes">%h</name>
  <service>
    <type>_sftp-ssh._tcp</type>
    <port>22</port>
  </service>
</service-group>
</file>
<file xml ssh.service>
<?xml version="1.0" standalone='no'?><!--*-nxml-*-->
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<!--
  This file is part of avahi.
 
  avahi is free software; you can redistribute it and/or modify it
  under the terms of the GNU Lesser General Public License as
  published by the Free Software Foundation; either version 2 of the
  License, or (at your option) any later version.
  avahi is distributed in the hope that it will be useful, but
  WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  General Public License for more details.
  You should have received a copy of the GNU Lesser General Public
  License along with avahi; if not, write to the Free Software
  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  02111-1307 USA.
-->
<!-- See avahi.service(5) for more information about this configuration file -->
<service-group>
  <name replace-wildcards="yes">%h</name>
  <service>
    <type>_ssh._tcp</type>
    <port>22</port>
  </service>
</service-group>
</file>
<file xml udisks.service>
<?xml version="1.0" standalone='no'?><!--*-nxml-*-->
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<!-- This file is part of udisks -->
<service-group>
  <name replace-wildcards="yes">%h</name>
  <service>
    <type>_udisks-ssh._tcp</type>
    <port>22</port>
  </service>
</service-group>
</file>
====== [ZARCHIWIZOWANO] Tutorial RemoteAudio - Konfiguracja Avahi ======
Avahi powinno na większości dystrybucji działać out-of-box. Jeżeli tak nie jest, trzeba sprawdzić konfigurację. Poniżej zamieszczam domyślną działającą konfigurację Avahi w wersji 0.6.31:
===== Domyślna konfiguracja Avahi =====
==== /etc/avahi ====
<file - avahi-daemon.conf>
# This file is part of avahi.
#
# avahi is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as
# published by the Free Software Foundation; either version 2 of the
# License, or (at your option) any later version.
#
# avahi is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
# License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with avahi; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
# USA.
# See avahi-daemon.conf(5) for more information on this configuration
# file!
[server]
#host-name=foo
#domain-name=local
browse-domains=0pointer.de, zeroconf.org
use-ipv4=yes
use-ipv6=no
#allow-interfaces=eth0
#deny-interfaces=eth1
#check-response-ttl=no
#use-iff-running=no
#enable-dbus=yes
#disallow-other-stacks=no
#allow-point-to-point=no
#cache-entries-max=4096
#clients-max=4096
#objects-per-client-max=1024
#entries-per-entry-group-max=32
ratelimit-interval-usec=1000000
ratelimit-burst=1000
[wide-area]
enable-wide-area=yes
[publish]
#disable-publishing=no
#disable-user-service-publishing=no
#add-service-cookie=no
#publish-addresses=yes
#publish-hinfo=yes
#publish-workstation=yes
#publish-domain=yes
#publish-dns-servers=192.168.50.1, 192.168.50.2
#publish-resolv-conf-dns-servers=yes
#publish-aaaa-on-ipv4=yes
#publish-a-on-ipv6=no
[reflector]
#enable-reflector=no
#reflect-ipv=no
[rlimits]
#rlimit-as=
rlimit-core=0
rlimit-data=4194304
rlimit-fsize=0
rlimit-nofile=768
rlimit-stack=4194304
rlimit-nproc=3
</file>
<file bash avahi-autoipd.action>
#!/bin/sh
# This file is part of avahi.
#
# avahi is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as
# published by the Free Software Foundation; either version 2 of the
# License, or (at your option) any later version.
#
# avahi is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
# License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with avahi; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
# USA.
set -e
# Command line arguments:
#   $1 event that happened:
#          BIND:     Successfully claimed address
#          CONFLICT: An IP address conflict happened
#          UNBIND:   The IP address is no longer needed
#          STOP:     The daemon is terminating
#   $2 interface name
#   $3 IP adddress
PATH="$PATH:/usr/bin:/usr/sbin:/bin:/sbin"
# Use a different metric for each interface, so that we can set
# identical routes to multiple interfaces.
METRIC=$((1000 + `cat "/sys/class/net/$2/ifindex" 2>/dev/null || echo 0`))
if [ -x /bin/ip -o -x /sbin/ip ] ; then
    # We have the Linux ip tool from the iproute package
    case "$1" in
        BIND)
            ip addr add "$3"/16 brd 169.254.255.255 label "$2:avahi" scope link dev "$2"
            ip route add default dev "$2" metric "$METRIC" scope link ||:
            ;;
        CONFLICT|UNBIND|STOP)
            ip route del default dev "$2" metric "$METRIC" scope link ||:
            ip addr del "$3"/16 brd 169.254.255.255 label "$2:avahi" scope link dev "$2"
            ;;
        *)
            echo "Unknown event $1" >&2
            exit 1
            ;;
    esac
elif [ -x /bin/ifconfig -o -x /sbin/ifconfig ] ; then
    # We have the old ifconfig tool
    case "$1" in
        BIND)
            ifconfig "$2:avahi" inet "$3" netmask 255.255.0.0 broadcast 169.254.255.255 up
            route add default dev "$2:avahi" metric "$METRIC" ||:
            ;;
        CONFLICT|STOP|UNBIND)
            route del default dev "$2:avahi" metric "$METRIC" ||:
            ifconfig "$2:avahi" down
            ;;
        *)
            echo "Unknown event $1" >&2
            exit 1
            ;;
    esac
else
    echo "No network configuration tool found." >&2
    exit 1
fi
exit 0
</file>
<file bash avahi-dnsconfd.action>
#!/bin/sh
# This file is part of avahi.
# 
# avahi is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as
# published by the Free Software Foundation; either version 2 of the
# License, or (at your option) any later version.
#
# avahi is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
# License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with avahi; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
# USA.
set -e
test "x$AVAHI_INTERFACE" != "x"
# Command line arguments:
#   $1 "+" if a new DNS server was found, "-" if one was removed
#   $2 DNS Server address
#   $3 interface index where this server was found on
#   $4 protocol number where this server was found on
# Available environment variables:
#
#   $AVAHI_INTERFACE               The interface name where this DNS server was found on
#   $AVAHI_INTERFACE_DNS_SERVERS   A whitespace seperated list of DNS servers on $AVAHI_INTERFACE
#   $AVAHI_DNS_SERVERS             The complete list of all DNS servers found on all interfaces
if [ -x /sbin/netconfig ]; then
    # SUSE method on 11.1+
    if [ -n "$AVAHI_INTERFACE_DNS_SERVERS" ]; then
        /sbin/netconfig modify -s avahi -i "$AVAHI_INTERFACE" <<-EOF
        INTERFACE='$AVAHI_INTERFACE'
        DNSSERVERS='$AVAHI_INTERFACE_DNS_SERVERS'
        EOF
    else
        /sbin/netconfig remove -s avahi -i "$AVAHI_INTERFACE"
    fi
elif [ -x /sbin/modify_resolvconf ] ; then
    # method for SUSE <= 11.0
    if [ -n "$AVAHI_DNS_SERVERS" ]; then
        /sbin/modify_resolvconf modify -s avahi -t - -p avahi-dnsconfd -n "$AVAHI_DNS_SERVERS" <<-EOF
        if you don't like avahi to update your Nameservers
        disable the avahi-dnsconfd init script
        EOF
    else
        /sbin/modify_resolvconf restore -s avahi
    fi
elif [ -x /usr/sbin/resolvconf ] ; then
    # We have Debian's resolvconf tool
    if [ "x$AVAHI_INTERFACE_DNS_SERVERS" = "x" ] ; then
        /usr/sbin/resolvconf -d "$AVAHI_INTERFACE.avahi"
    else
        for n in $AVAHI_INTERFACE_DNS_SERVERS ; do 
            echo "nameserver $n"
        done | /usr/sbin/resolvconf -a "$AVAHI_INTERFACE.avahi"
    fi
else
    # No resolvconf tool available
    if [ "x$AVAHI_DNS_SERVERS" = "x" ] ; then
        test -f /etc/resolv.conf.avahi && mv /etc/resolv.conf.avahi /etc/resolv.conf
    else
        test -f /etc/resolv.conf.avahi || mv /etc/resolv.conf /etc/resolv.conf.avahi
        for n in $AVAHI_DNS_SERVERS ; do 
            echo "nameserver $n"
        done > /etc/resolv.conf
    fi
fi
</file>
<file - hosts>
# This file is part of avahi.
# 
# avahi is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as
# published by the Free Software Foundation; either version 2 of the
# License, or (at your option) any later version.
#
# avahi is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
# License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with avahi; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
# USA.
# This file contains static ip address <-> host name mappings.  These
# can be useful to publish services on behalf of a non-avahi enabled
# device. Please bear in mind that host names are expected to be
# fully qualified domain names, i.e. ending in .local!
# See avahi.hosts(5) for more information on this configuration file!
# Examples:
# 192.168.0.1 router.local
# 2001::81:1 test.local
</file>
==== /etc/avahi/services ====
<file xml sftp-ssh.service>
<?xml version="1.0" standalone='no'?><!--*-nxml-*-->
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<!--
  This file is part of avahi.
  avahi is free software; you can redistribute it and/or modify it
  under the terms of the GNU Lesser General Public License as
  published by the Free Software Foundation; either version 2 of the
  License, or (at your option) any later version.
  avahi is distributed in the hope that it will be useful, but
  WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  General Public License for more details.
  You should have received a copy of the GNU Lesser General Public
  License along with avahi; if not, write to the Free Software
  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  02111-1307 USA.
-->
<!-- See avahi.service(5) for more information about this configuration file -->
<service-group>
  <name replace-wildcards="yes">%h</name>
  <service>
    <type>_sftp-ssh._tcp</type>
    <port>22</port>
  </service>
</service-group>
</file>
<file xml ssh.service>
<?xml version="1.0" standalone='no'?><!--*-nxml-*-->
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<!--
  This file is part of avahi.
 
  avahi is free software; you can redistribute it and/or modify it
  under the terms of the GNU Lesser General Public License as
  published by the Free Software Foundation; either version 2 of the
  License, or (at your option) any later version.
  avahi is distributed in the hope that it will be useful, but
  WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  General Public License for more details.
  You should have received a copy of the GNU Lesser General Public
  License along with avahi; if not, write to the Free Software
  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  02111-1307 USA.
-->
<!-- See avahi.service(5) for more information about this configuration file -->
<service-group>
  <name replace-wildcards="yes">%h</name>
  <service>
    <type>_ssh._tcp</type>
    <port>22</port>
  </service>
</service-group>
</file>
<file xml udisks.service>
<?xml version="1.0" standalone='no'?><!--*-nxml-*-->
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<!-- This file is part of udisks -->
<service-group>
  <name replace-wildcards="yes">%h</name>
  <service>
    <type>_udisks-ssh._tcp</type>
    <port>22</port>
  </service>
</service-group>
</file>