aboutsummaryrefslogtreecommitdiffstats
path: root/config/avahi/avahi.inc
diff options
context:
space:
mode:
authorBill Marquette <bill.marquette@gmail.com>2009-02-06 19:18:00 -0600
committerBill Marquette <bill.marquette@gmail.com>2009-02-06 19:18:00 -0600
commit55eddd7accf2c5f9b0f52b22a010c4c4b7c130d1 (patch)
treeba4783bab1dd65f1ceef2dfac9fdbd515531d18b /config/avahi/avahi.inc
parent67780cc9d469288742aea5bc378c29a54edd5ec5 (diff)
downloadpfsense-packages-55eddd7accf2c5f9b0f52b22a010c4c4b7c130d1.tar.gz
pfsense-packages-55eddd7accf2c5f9b0f52b22a010c4c4b7c130d1.tar.bz2
pfsense-packages-55eddd7accf2c5f9b0f52b22a010c4c4b7c130d1.zip
mv packages to config dir to match web layout
Diffstat (limited to 'config/avahi/avahi.inc')
-rw-r--r--config/avahi/avahi.inc167
1 files changed, 167 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();
+}
+
+?>