aboutsummaryrefslogtreecommitdiffstats
path: root/config/avahi
diff options
context:
space:
mode:
Diffstat (limited to 'config/avahi')
-rw-r--r--config/avahi/avahi.inc167
-rw-r--r--config/avahi/avahi.xml90
2 files changed, 257 insertions, 0 deletions
diff --git a/config/avahi/avahi.inc b/config/avahi/avahi.inc
new file mode 100644
index 00000000..a95eaaf0
--- /dev/null
+++ b/config/avahi/avahi.inc
@@ -0,0 +1,167 @@
+<?php
+
+/*
+ $Id$
+ avahi.inc
+ part of pfSense (http://www.pfSense.com)
+ Copyright (C) 2009 Scott Ullrich
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+ OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+*/
+
+function start_avahi() {
+ mwexec_bg("sh /usr/local/etc/rc.d/avahi-daemon.sh start");
+}
+
+function stop_avahi() {
+ mwexec_bg("sh /usr/local/etc/rc.d/avahi-daemon.sh stop");
+}
+
+function setup_avahi() {
+ global $g, $config;
+
+ // Extract out libraries and avahi-daemon
+ if(file_exists("/tmp/avahi.tgz")) {
+ exec("/usr/bin/tar xzPf /tmp/avahi.tgz -C /");
+ unlink("/tmp/avahi.tgz");
+ }
+
+ // Make sure everthing was extracted
+ if(!file_exists("/usr/local/sbin/avahi-daemon")) {
+ log_error("Sorry, something went wrong while extract avahi binaries. Please try the operation again");
+ return;
+ }
+
+ // Pull some various values out of config.xml
+ $hostname = $config['system']['hostname'];
+ $domain = $config['system']['domain'];
+ $enable = $config['installedpackages']['avahi']['config'][0]['enable'];
+ $browsedomains = $config['installedpackages']['avahi']['config'][0]['browsedomains'];
+ $denyif = $config['installedpackages']['avahi']['config'][0]['denyinterfaces'];
+
+ // Is package disabled?
+ if(!$enable) {
+ delete_avahi();
+ return;
+ }
+
+ // Add needed users and groups
+ exec("/usr/sbin/pw useradd avahi");
+ exec("/usr/sbin/pw groupadd avahi");
+
+ // No supplied domains? Use the defaults.
+ if(!$browsedomains)
+ $browsedomains = "local, 0pointer.de, zeroconf.org";
+
+ // Never pass along WAN. Bad.
+ $denyinterfaces = $config['interfaces']['wan']['if'];
+
+ // Process interfaces defined by user to deny.
+ if($denyif) {
+ $if = split(",", $denyif);
+ foreach($if as $i) {
+ $ifreal = convert_friendly_interface_to_real_interface_name($i);
+ if($ifreal)
+ $denyinterfaces .= ", " . $ifreal;
+ }
+ }
+
+ // Construct the avahi configuration
+ $avahiconfig = <<<EOF
+
+# avahi.conf - This file was automatically generated by the pfSense pacakge
+# manager. Do not edit this file, it will be overwritten automatically.
+# See /usr/local/pkg/avahi.inc to make changes to this file!
+
+[server]
+host-name={$hostname}
+domain-name={$domain}
+browse-domains={$browsedomains}
+deny-interfaces={$denyinterfaces}
+use-ipv4=yes
+use-ipv6=no
+enable-dbus=no
+#check-response-ttl=no
+#use-iff-running=no
+#disallow-other-stacks=no
+#allow-point-to-point=no
+
+[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=yes
+#reflect-ipv=no
+
+[rlimits]
+rlimit-core=0
+rlimit-data=4194304
+rlimit-fsize=0
+rlimit-nofile=300
+rlimit-stack=4194304
+rlimit-nproc=3
+#rlimit-as=
+
+EOF;
+
+ // Make image RW
+ conf_mount_rw();
+ /* Write out .conf file */
+ safe_mkdir("/usr/local/etc/avahi");
+ $fd = fopen("/usr/local/etc/avahi/avahi-daemon.conf", "w");
+ fwrite($fd, $avahiconfig);
+ fclose($fd);
+ /* Write out rc.d startup file */
+ $start = "/etc/rc.conf_mount_rw\n";
+ $start .= "if [ ! -d /proc/0 ]; then\n";
+ $start .= " mkdir -p /proc\n";
+ $start .= " mount -t procfs procfs /proc\n";
+ $start .= "fi\n";
+ $start .= "/usr/local/sbin/avahi-daemon -D\n";
+ $start .= "/etc/rc.conf_mount_ro\n";
+ $stop = "/usr/bin/killall avahi-daemon";
+ write_rcfile(array(
+ "file" => "avahi-daemon.sh",
+ "start" => $start,
+ "stop" => $stop
+ )
+ );
+ // Make image RO
+ conf_mount_ro();
+ start_avahi();
+}
+
+?>
diff --git a/config/avahi/avahi.xml b/config/avahi/avahi.xml
new file mode 100644
index 00000000..6baef60b
--- /dev/null
+++ b/config/avahi/avahi.xml
@@ -0,0 +1,90 @@
+<packagegui>
+ <copyright>
+ <![CDATA[
+ /*
+ $Id$
+ avahi.xml
+ part of pfSense (http://www.pfSense.com)
+ Copyright (C) 2009 Scott Ullrich
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ 2. Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
+ INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+ AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
+ OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+ */
+ ]]>
+ </copyright>
+ <name>avahi</name>
+ <version>1.0</version>
+ <title>Services: Avahi</title>
+ <menu>
+ <name>Avahi</name>
+ <tooltiptext>Modify avahi settings.</tooltiptext>
+ <section>Services</section>
+ <url>pkg_edit.php?xml=avahi.xml&amp;id=0</url>
+ </menu>
+ <service>
+ <name>avahi</name>
+ <rcfile>avahi.sh</rcfile>
+ <executable>avahi</executable>
+ </service>
+ <additional_files_needed>
+ <prefix>/tmp/</prefix>
+ <chmod>0755</chmod>
+ <item>http://www.pfsense.org/packages/config/avahi/binaries/avahi.tgz</item>
+ </additional_files_needed>
+ <additional_files_needed>
+ <prefix>/usr/local/pkg/</prefix>
+ <chmod>0755</chmod>
+ <item>http://www.pfsense.org/packages/config/avahi/avahi.inc</item>
+ </additional_files_needed>
+ <fields>
+ <field>
+ <fielddescr>Enable</fielddescr>
+ <fieldname>enable</fieldname>
+ <description>Enable Avahi Bonjour/Zeroconf proxy.</description>
+ <type>checkbox</type>
+ </field>
+ <field>
+ <fielddescr>Browse domains (comma separated)</fielddescr>
+ <fieldname>browsedomains</fieldname>
+ <description>Enter the domains that you would like proxied. (example: local, pfsense.org, mydomain.com)</description>
+ <type>input</type>
+ </field>
+ <field>
+ <fielddescr>Deny interfaces</fielddescr>
+ <fieldname>denyinterfaces</fieldname>
+ <description>Interfaces that you do NOT want Avahi to listen on. NOTE: WAN is disabled by default.</description>
+ <type>interfaces_selection</type>
+ <multiple>true</multiple>
+ </field>
+ </fields>
+ <custom_add_php_command>
+ setup_avahi();
+ </custom_add_php_command>
+ <custom_php_install_command>
+ setup_avahi();
+ </custom_php_install_command>
+ <custom_php_deinstall_command>
+ unlink_if_exists("/usr/local/etc/rc.d/avahi-daemon.sh");
+ exec("killall avahi-daemon");
+ </custom_php_deinstall_command>
+ <include_file>/usr/local/pkg/avahi.inc</include_file>
+</packagegui>