diff options
Diffstat (limited to 'config')
-rw-r--r-- | config/open-vm-tools_2/open-vm-tools.inc | 76 |
1 files changed, 53 insertions, 23 deletions
diff --git a/config/open-vm-tools_2/open-vm-tools.inc b/config/open-vm-tools_2/open-vm-tools.inc index 912c4032..f005074e 100644 --- a/config/open-vm-tools_2/open-vm-tools.inc +++ b/config/open-vm-tools_2/open-vm-tools.inc @@ -1,22 +1,56 @@ <?php - +/* + open-vm-tools.inc + part of pfSense (https://www.pfSense.org/) + Copyright (C) 2008-2015 Electric Sheep Fencing LP + 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 open_vm_tools_deinstall() { - exec("rm /usr/local/etc/rc.d/vmware*"); + conf_mount_rw(); + stop_service("vmware-guestd"); + unlink_if_exists("/usr/local/etc/rc.d/vmware-guestd.sh"); + unlink_if_exists("/usr/local/etc/rc.d/vmware-kmod.sh"); unlink_if_exists("/boot/kernel/vmblock.ko"); unlink_if_exists("/boot/kernel/vmhgfs.ko"); unlink_if_exists("/boot/kernel/vmmemctl.ko"); unlink_if_exists("/boot/kernel/vmxnet.ko"); + conf_mount_ro(); } function open_vm_tools_install() { + conf_mount_rw(); - // clean up old .ko files if they exist + // Clean up old .ko files if they exist unlink_if_exists("/boot/kernel/vmblock.ko"); unlink_if_exists("/boot/kernel/vmhgfs.ko"); unlink_if_exists("/boot/kernel/vmmemctl.ko"); unlink_if_exists("/boot/kernel/vmxnet.ko"); + // Remove other unused files if they exist + unlink_if_exists("/usr/local/etc/rc.d/vmware-kmod"); + unlink_if_exists("/usr/local/etc/rc.d/vmware-guestd"); - $pfs_version=substr(trim(file_get_contents("/etc/version")),0,3); + $pfs_version = substr(trim(file_get_contents("/etc/version")), 0, 3); if ($pfs_version == "2.1") { $openvmtools_path = "/usr/pbi/open-vm-tools-nox11-" . php_uname("m"); } else if ($pfs_version == "2.2") { @@ -24,10 +58,7 @@ function open_vm_tools_install() { } else { $openvmtools_path = "/usr/local"; } - - // won't copy this either for now, some sequences of loading/unloading of the module will kernel panic. - //exec("cp $openvmtools_path/local/lib/vmware-tools/modules/drivers/vmmemctl.ko /boot/kernel/"); - + $vmware_tools_conf = <<<EOF [powerops] poweron-script= @@ -40,10 +71,10 @@ EOF; $vmware_guestd = <<<EOF #!/bin/sh # -# This file was automatically generated +# This file was automatically generated # by the pfSense package manager. -# -# Do not edit this file. Edit +# +# Do not edit this file. Edit # /usr/local/pkg/open-vm-tools.inc instead. # # PROVIDE: vmware-guestd @@ -76,10 +107,10 @@ EOF; $vmware_kmod = <<<EOF #!/bin/sh # -# This file was automatically generated +# This file was automatically generated # by the pfSense package manager. -# -# Do not edit this file. Edit +# +# Do not edit this file. Edit # /usr/local/pkg/open-vm-tools.inc instead. # # PROVIDE: vmware-kmod @@ -120,8 +151,9 @@ EOF; } fwrite($fd, $vmware_guestd); fclose($fd); + chmod("/usr/local/etc/rc.d/vmware-guestd.sh", 0755); - /* the kernel modules aren't stable at this time, omit them. + /* The kernel modules aren't stable at this time, omit them. $fd = fopen("/usr/local/etc/rc.d/vmware-kmod.sh", "w"); if (!$fd) { log_error("Could not open /usr/local/etc/rc.d/vmware-kmod.sh for writing"); @@ -129,8 +161,12 @@ EOF; } fwrite($fd, $vmware_kmod); fclose($fd); + chmod("/usr/local/etc/rc.d/vmware-kmod.sh", 0755); */ - + /* Won't copy this either for now, some sequences of loading/unloading of the module will cause kernel panic. + mwexec("/bin/cp $openvmtools_path/local/lib/vmware-tools/modules/drivers/vmmemctl.ko /boot/kernel/"); + */ + $fd = fopen("$openvmtools_path/share/vmware-tools/tools.conf", "w"); if (!$fd) { log_error("Could not open $openvmtools_path/share/vmware-tools/tools.conf for writing"); @@ -139,13 +175,7 @@ EOF; fwrite($fd, $vmware_tools_conf); fclose($fd); - // Remove non used files - unlink_if_exists("/usr/local/etc/rc.d/vmware-kmod"); - unlink_if_exists("/usr/local/etc/rc.d/vmware-guestd"); - - // Make sure files are executable. - exec("chmod a+rx /usr/local/etc/rc.d/*.sh"); - + start_service("vmware-guestd"); } ?> |