diff options
Diffstat (limited to 'config/freenas/pkg/freenas_system.inc')
-rw-r--r-- | config/freenas/pkg/freenas_system.inc | 838 |
1 files changed, 0 insertions, 838 deletions
diff --git a/config/freenas/pkg/freenas_system.inc b/config/freenas/pkg/freenas_system.inc deleted file mode 100644 index 2bd0a30a..00000000 --- a/config/freenas/pkg/freenas_system.inc +++ /dev/null @@ -1,838 +0,0 @@ -<?php -/* $Id$ */ -/* ========================================================================== */ -/* - freenas_system.inc - part of pfSense (http://www.pfSense.com) - Copyright (C) 2006 Daniel S. Haischt <me@daniel.stefan.haischt.name> - All rights reserved. - - Based on FreeNAS (http://www.freenas.org) - Copyright (C) 2005-2006 Olivier Cochard-Labbé <olivier@freenas.org>. - All rights reserved. - - Based on m0n0wall (http://m0n0.ch/wall) - Copyright (C) 2003-2006 Manuel Kasper <mk@neon1.net>. - 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. - */ -/* ========================================================================== */ - -require_once("globals.inc"); - -$freenas_config =& $config['installedpackages']['freenas']['config'][0]; - -function system_do_extensions($early = false) { - global $config, $g; - - if (!is_dir("{$g['etc_path']}/inc/ext")) { return; } - - $dh = @opendir("{$g['etc_path']}/inc/ext"); - - if ($dh) { - while (($extd = readdir($dh)) !== false) { - if (($extd === ".") || ($extd === "..")) { continue; } - - $rcfile = "{$g['etc_path']}/inc/ext/" . $extd . "/" . ($early ? "rc.early" : "rc"); - - if (file_exists($rcfile)) { passthru($rcfile); } - } // end while - - closedir($dh); - } // end if -} - -function system_set_termcap() { - global $config; - - if (isset($config['diag']['ipfstatentries'])) { - $lines = $config['diag']['ipfstatentries'] + 6; - } else { - $lines = 306; - } - - /* do not remove the tabs below or replace them using whitespaces */ - $termcap = <<<EOD -cons25w|ansiw|ansi80x25-raw:\ - :am:bs:NP:ms:pt:AX:eo:bw:ut:km:\ - :co#80:li#25:pa#64:Co#8:it#8:\ - :al=\E[L:cd=\E[J:ce=\E[K:cl=\E[H\E[J:cm=\E[%i%d;%dH:\ - :dc=\E[P:dl=\E[M:do=\E[B:bt=\E[Z:ho=\E[H:ic=\E[@:cb=\E[1K:\ - :nd=\E[C:rs=\Ec:so=\E[7m:se=\E[27m:up=\E[A:cr=^M:ta=^I:\ - :AF=\E[3%dm:AB=\E[4%dm:op=\E[39;49m:sc=\E7:rc=\E8:\ - :k1=\E[M:k2=\E[N:k3=\E[O:k4=\E[P:k5=\E[Q:k6=\E[R:k7=\E[S:k8=\E[T:\ - :k9=\E[U:k;=\E[V:F1=\E[W:F2=\E[X:K2=\E[E:nw=\E[E:ec=\E[%dX:\ - :kb=^H:kh=\E[H:ku=\E[A:kd=\E[B:kl=\E[D:kr=\E[C:le=^H:sf=\E[S:sr=\E[T:\ - :kN=\E[G:kP=\E[I:@7=\E[F:kI=\E[L:kD=\\177:kB=\E[Z:\ - :IC=\E[%d@:DC=\E[%dP:SF=\E[%dS:SR=\E[%dT:AL=\E[%dL:DL=\E[%dM:\ - :DO=\E[%dB:LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:cv=\E[%i%dd:ch=\E[%i%d`:\ - :mb=\E[5m:md=\E[1m:mr=\E[7m:me=\E[m:bl=^G:\ - :ve=\E[=S:vi=\E[=1S:vs=\E[=2S: -cons25|ansis|ansi80x25:\ - :ac=l\\332m\\300k\\277j\\331u\\264t\\303v\\301w\\302q\\304x\\263n\\305`^Da\\260f\\370g\\361~\\371.^Y-^Xh\\261i^U0\\333y\\363z\\362:\ - :tc=cons25w: -dumb|su|unknown:\ - :am:co#132:li#$lines:do=^J: -xterm-noapp|xterm with cursor keys in normal mode:\ - :kl=\E[D:kd=\E[B:kr=\E[C:ku=\E[A:ks=\E=:ke=\E>:ti@:te@:tc=xterm: -xterm|xterm-color|X11 terminal emulator:\ - :ti@:te@:tc=xterm-xfree86: -xterm-xfree86|XFree86 xterm:\ - :k1=\EOP:k2=\EOQ:k3=\EOR:k4=\EOS:\ - :k5=\E[15~:k6=\E[17~:k7=\E[18~:k8=\E[19~:\ - :k9=\E[20~:k;=\E[21~:F1=\E[23~:F2=\E[24~:\ - :kH=\EOF:@7=\EOF:kI=\E[2~:\ - :kh=\EOH:*6=\EOF:kP=\E[5~:kN=\E[6~:\ - :ku=\EOA:kd=\EOB:kr=\EOC:kl=\EOD:Km=\E[M:tc=xterm-basic: -xterm-basic|xterm common (XFree86):\ - :li#24:co#80:am:kn#12:km:mi:ms:xn:bl=^G:\ - :is=\E[!p\E[?3;4l\E[4l\E>:rs=\E[!p\E[?3;4l\E[4l\E>:le=^H:\ - :AL=\E[%dL:DL=\E[%dM:DC=\E[%dP:al=\E[L:dc=\E[P:dl=\E[M:\ - :UP=\E[%dA:DO=\E[%dB:LE=\E[%dD:RI=\E[%dC:\ - :ho=\E[H:cd=\E[J:ce=\E[K:cl=\E[H\E[2J:cm=\E[%i%d;%dH:cs=\E[%i%d;%dr:\ - :im=\E[4h:ei=\E[4l:ks=\E[?1h\E=:ke=\E[?1l\E>:kD=\E[3~:kb=^H:\ - :sf=\n:sr=\EM:st=\EH:ct=\E[3g:sc=\E7:rc=\E8:\ - :eA=\E(B\E)0:as=^N:ae=^O:ml=\El:mu=\Em:up=\E[A:nd=\E[C:\ - :md=\E[1m:me=\E[m^O:mr=\E[7m:so=\E[7m:se=\E[27m:us=\E[4m:ue=\E[24m:\ - :ti=\E[?1049h:te=\E[?1049l:vi=\E[?25l:ve=\E[?25h:\ - :ut:Co#8:pa#64:op=\E[39;49m:AB=\E[4%dm:AF=\E[3%dm:\ - -EOD; - - if (!file_exists("/usr/share/misc")) { mkdir("/usr/share/misc"); } - - $fd = @fopen("/usr/share/misc/termcap", "w"); - - if (!$fd) { - printf("Error: cannot open termcap in system_set_termcap().\n"); - return 1; - } - - chmod("/usr/share/misc/termcap", 0644); - fwrite($fd, $termcap); - fclose($fd); - - return 0; -} - -/* TODO: Figure out whether this function can be removed cause - * implements its own user management framework. - */ -function system_users_create() { - /* Create All the passwd file */ - global $config, $g; - - if ($g['booting']) { echo "Generating user database... "; } - - system_user_masterpasswd(); - system_user_group(); - system_user_pwdmkdb(); - - if ($g['booting']) { echo "done\n"; } - - return 0; -} - -/* TODO: Figure out whether this function can be removed cause - * implements its own user management framework. - */ -function system_user_masterpasswd() { - /* Create the master.passwd file*/ - global $config, $g, $userindex, $groupindex; - $root = getUNIXRoot(); - - $masterpasswd = <<<EOD -root:{$root['password']}:0:0::0:0:Charlie &:/root:/bin/sh -toor:*:0:0::0:0:Bourne-again Superuser:/root: -daemon:*:1:1::0:0:Owner of many system processes:/root:/usr/sbin/nologin -operator:*:2:5::0:0:System &:/:/usr/sbin/nologin -bin:*:3:7::0:0:Binaries Commands and Source:/:/usr/sbin/nologin -tty:*:4:65533::0:0:Tty Sandbox:/:/usr/sbin/nologin -kmem:*:5:65533::0:0:KMem Sandbox:/:/usr/sbin/nologin -smmsp:*:25:25::0:0:Sendmail Submission User:/var/spool/clientmqueue:/usr/sbin/nologin -mailnull:*:26:26::0:0:Sendmail Default User:/var/spool/mqueue:/usr/sbin/nologin -proxy:*:62:62::0:0:Packet Filter pseudo-user:/nonexistent:/usr/sbin/nologin -_pflogd:*:64:64::0:0:pflogd privsep user:/var/empty:/usr/sbin/nologin -www:*:80:80::0:0:World Wide Web Owner:/nonexistent:/usr/sbin/nologin -nobody:*:65534:65534::0:0:Unprivileged user:/nonexistent:/usr/sbin/nologin -dhcpd:*:1002:1002::0:0:DHCP Daemon:/nonexistent:/sbin/nologin -_dhcp:*:65:65::0:0:dhcp programs:/var/empty:/usr/sbin/nologin -_isakmpd:*:68:68::0:0:isakmpd privsep:/var/empty:/sbin/nologin -ftp:*:21:50::0:0:FTP user:/mnt:/sbin/nologin -sshd:*:22:22::0:0:Secure Shell Daemon:/var/empty:/usr/sbin/nologin - -EOD; - - if (is_array($config['system']['user'])) { - foreach ($config['system']['user'] as $user) { - $password= $user['password']; - $groupname = $user['groupname']; - $group =& $config['system']['group'][$groupindex[$groupname]]; - - if (empty($user['uid'])) { - $newuser = assignUID($user['name']); - $newgroup = assignGID($groupname); - if (! empty($newuser)) { $user = $newuser; } - if (! empty($newgroup)) { $group = $newgroup; } - } - - if (hasShellAccess($user['name'])) { - $masterpasswd .= <<<EOD -{$user['name']}:{$password}:{$user['uid']}:{$group['gid']}::0:0:{$user['fullname']}:/mnt:/etc/rc.initial - -EOD; - } else { - $masterpasswd .= <<<EOD -{$user['name']}:{$password}:{$user['uid']}:{$group['gid']}::0:0:{$user['fullname']}:/mnt:/usr/local/bin/scponly - -EOD; - } // end if - } // end foreach - } // end if - - $fd = fopen("/etc/master.passwd", "w"); - - if (!$fd) { - printf("Error: cannot open master.passwd in system_user_masterpasswd().\n"); - return 1; - } - - fwrite($fd, $masterpasswd); - fclose($fd); - -return 0; -} - -/* TODO: Figure out whether this function can be removed cause - * implements its own user management framework. - */ -function system_user_group() { - /* Create the group file*/ - global $config, $g; - - $groupfile = <<<EOD -wheel:*:0:root -EOD; - - /* If user exist with full shell, put them on the wheel group */ - if (is_array($config['system']['user'])) { - foreach ($config['system']['user'] as $user) { - if (hasShellAccess($user['name']) && isSystemAdmin($user['name'])) { - $groupfile .= <<<EOD -,{$user['name']} -EOD; - } // end if - } // end foreach - } // end if - - $groupfile .= <<<EOD - -daemon:*:1: -kmem:*:2: -sys:*:3: -tty:*:4: -operator:*:5:root -mail:*:6: -bin:*:7: -staff:*:20: -EOD; - - /* If user exist without full shell, put them on the staff group */ - if (is_array($config['system']['user'])) { - foreach ($config['system']['user'] as $user) { - if (hasShellAccess($user['name'])) { - $groupfile .= <<<EOD -{$user['name']}, -EOD; - } // end if - } // end foreach - } // end if - - $groupfile .= <<<EOD - -sshd:*:22: -smmsp:*:25: -mailnull:*:26: -guest:*:31: -proxy:*:62: -_pflogd:*:64: -_dhcp:*:65: -ftp:*:50: -authpf:*:63: -network:*:69: -www:*:80: -nogroup:*:65533: -nobody:*:65534: -admin:*:0: - -EOD; - - if (is_array($config['system']['group'])) { - foreach ($config['system']['group'] as $group) { - if (empty($group['gid'])) { - $newgroup = assignGID($group['name']); - if (! empty($newgroup)) { $group = $newgroup; } - } - - $groupfile .= <<<EOD -{$group['name']}:*:{$group['gid']}: - -EOD; - } // end foreach - } // end if - - $fd = fopen("/etc/group", "w"); - - if (!$fd) { - printf("Error: cannot open group in system_user_group().\n"); - return 1; - } - - fwrite($fd, $groupfile); - fclose($fd); - - return 0; -} - -function system_user_pwdmkdb() { - /* Generate the db of password */ - global $config, $g; - - mwexec("/usr/sbin/pwd_mkdb -p -d /etc /etc/master.passwd"); - - return 0; -} - -function system_user_samba() { - /* Generate the db of password */ - - // TODO: MUST FIND A WAY OF USING UNIX CRYPTED PASSWORD IN THE PLACE OF CLEAR TEXT PASSWORD FOR GENERATING SAMBA DB!!! - - global $config, $g; - - if (is_array($config['system']['user'])) { - foreach ($config['system']['user'] as $user) { - /* TODO: the password in config.xml is already encrypted */ - $password = escapeshellcmd($user['password']); - $login = escapeshellcmd($user['name']); - mwexec("(/bin/echo {$password}; /bin/echo {$password}) | /usr/local/bin/smbpasswd -s -a {$login}"); - //mwexec("(/bin/echo {$password}; /bin/echo {$password}) | /usr/local/bin/pdbedit -tau {$login}"); - } // end foreach - } // end if - - return 0; - -} - -function system_pam_configure() { - /* Create the pam configuration files*/ - global $config, $g; - - if (!file_exists("{$g['varetc_path']}/pam.d")) { - mkdir("{$g['varetc_path']}/pam.d", 0744); - } - - $system = <<<EOD -# System-wide defaults -# auth -auth sufficient pam_opie.so no_warn no_fake_prompts -auth requisite pam_opieaccess.so no_warn allow_local - -EOD; - - if (isset($config['ad']['enable'])) { - $system .= <<<EOD -#auth sufficient /usr/local/lib/pam_winbind.so debug try_first_pass - -EOD; - } - - $system .= <<<EOD -auth required pam_unix.so no_warn try_first_pass nullok - -# account - -EOD; - - if (isset($config['ad']['enable'])) { - $system .= <<<EOD -#account sufficient /usr/local/lib/pam_winbind.so - -EOD; - } - - $system .= <<<EOD -account required pam_login_access.so -account required pam_unix.so - -# session -session required pam_lastlog.so no_fail - -# password - -EOD; - - if (isset($config['ad']['enable'])) { - $system .= <<<EOD -#password sufficient /usr/local/lib/pam_winbind.so debug try_first_pass - -EOD; - } - - $system .= <<<EOD -password required pam_unix.so no_warn try_first_pass - -EOD; - - $fd = fopen("{$g['varetc_path']}/pam.d/system", "w"); - - if (!$fd) { - printf("Error: cannot open /pam.d/system in system_pam_configure().\n"); - return 1; - } - - fwrite($fd, $system); - fclose($fd); - - $sshd .= <<<EOD -# PAM configuration for the "sshd" service - -# auth -auth required pam_nologin.so no_warn -auth sufficient pam_opie.so no_warn no_fake_prompts -auth requisite pam_opieaccess.so no_warn allow_local - -EOD; - - if (isset($config['ad']['enable'])) { - $sshd .= <<<EOD -auth sufficient /usr/local/lib/pam_winbind.so debug try_first_pass - -EOD; - } - - $sshd .= <<<EOD -auth required pam_unix.so no_warn try_first_pass - -# account - -EOD; - - if (isset($config['ad']['enable'])) { - $sshd .= <<<EOD -account sufficient /usr/local/lib/pam_winbind.so - -EOD; - } - - $sshd .= <<<EOD -account required pam_unix.so - -# session -session required pam_permit.so - -# password - -EOD; - - if (isset($config['ad']['enable'])) { - $sshd .= <<<EOD -password sufficient /usr/local/lib/pam_winbind.so debug try_first_pass - -EOD; - } - - $sshd .= <<<EOD -password required pam_unix.so no_warn try_first_pass - -EOD; - - unset($fd); - $fd = fopen("{$g['varetc_path']}/pam.d/sshd", "w"); - - if (!$fd) { - printf("Error: cannot open /pam.d/sshd in system_pam_configure().\n"); - return 1; - } - - fwrite($fd, $sshd); - fclose($fd); - - $ftp = <<<EOD -# PAM configuration for the "ftpd" service - -# auth -auth required pam_nologin.so no_warn -auth sufficient pam_opie.so no_warn no_fake_prompts -auth requisite pam_opieaccess.so no_warn allow_local - -EOD; - - if (isset($config['ad']['enable'])) { - $ftp .= <<<EOD -auth sufficient /usr/local/lib/pam_winbind.so debug try_first_pass - -EOD; - } - - $ftp .= <<<EOD -auth required pam_unix.so no_warn try_first_pass - -# account - -EOD; - - if (isset($config['ad']['enable'])) { - $ftp .= <<<EOD -account sufficient /usr/local/lib/pam_winbind.so - -EOD; - } - - $ftp .= <<<EOD -account required pam_login_access.so -account required pam_unix.so - -# session -session required pam_permit.so - -EOD; - - unset($fd); - $fd = fopen("{$g['varetc_path']}/pam.d/ftp", "w"); - - if (!$fd) { - printf("Error: cannot open /pam.d/ftp in system_pam_configure().\n"); - return 1; - } - - fwrite($fd, $ftp); - fclose($fd); - - $login = <<<EOD -# PAM configuration for the "login" service -# - -# auth -auth required pam_nologin.so no_warn - -EOD; - - if (isset($config['ad']['enable'])) { - $login .= <<<EOD -auth sufficient /usr/local/lib/pam_winbind.so debug try_first_pass - -EOD; - } - - $login .= <<<EOD -auth sufficient pam_self.so no_warn -auth include system - -# account - -EOD; - - if (isset($config['ad']['enable'])) { - $login .= <<<EOD -account sufficient /usr/local/lib/pam_winbind.so - -EOD; - } - - $login .= <<<EOD -account requisite pam_securetty.so -account include system - -# session -session include system - -# password -password include system - -EOD; - - unset($fd); - $fd = fopen("{$g['varetc_path']}/pam.d/login", "w"); - - if (!$fd) { - printf("Error: cannot open /pam.d/login in system_pam_configure().\n"); - return 1; - } - - fwrite($fd, $login); - fclose($fd); - - unset($fd); - - /* Create the nsswitch.conf file*/ - if (isset($config['ad']['enable'])) { - $nsswitch = <<<EOD -group: files winbind -group_compat: nis -hosts: files dns wins -networks: files -passwd: files winbind -passwd_compat: nis -shells: files - -EOD; - } else { - $nsswitch = <<<EOD -group: compat -group_compat: nis -hosts: files dns -networks: files -passwd: compat -passwd_compat: nis -shells: files - -EOD; - } // end if - - $fd = fopen("{$g['varetc_path']}/nsswitch.conf", "w"); - - if (!$fd) { - printf("Error: cannot open /var/etc/nsswitch.conf in system_pam_configure().\n"); - return 1; - } - - fwrite($fd, $nsswitch); - fclose($fd); - - unset($fd); - - return 0; -} - -function system_tuning() { - /* fine tune kernel value */ - global $config, $g; - - if (isset($config['system']['tune'])) { - if ($g['booting']) { echo 'Tuning the system... '; } - - mwexec('/sbin/sysctl net.inet.tcp.delayed_ack=0'); - mwexec('/sbin/sysctl net.inet.tcp.sendspace=65536'); - mwexec('/sbin/sysctl net.inet.tcp.recvspace=65536'); - mwexec('/sbin/sysctl net.inet.udp.recvspace=65536'); - mwexec('/sbin/sysctl net.inet.udp.maxdgram=57344'); - mwexec('/sbin/sysctl net.local.stream.recvspace=65535'); - mwexec('/sbin/sysctl net.local.stream.sendspace=65535'); - mwexec('/sbin/sysctl kern.ipc.maxsockbuf=2097152'); - mwexec('/sbin/sysctl kern.ipc.somaxconn=8192'); - /* This variable can be set on the boot conf file only: */ - /* mwexec('/sbin/sysctl kern.ipc.maxsockets=16424'); */ - mwexec('/sbin/sysctl kern.ipc.nmbclusters=60000'); - mwexec('/sbin/sysctl kern.maxfiles=65536'); - mwexec('/sbin/sysctl kern.maxfilesperproc=32768'); - mwexec('/sbin/sysctl net.inet.tcp.inflight.enable=0'); - - if ($g['booting']) { echo "done\n"; } - return 0; - } else { - /* Set the default value (if previously changed) if not booting mode */ - if (!$g['booting']) { - mwexec('/sbin/sysctl net.inet.tcp.delayed_ack=1'); - mwexec('/sbin/sysctl net.inet.tcp.sendspace=32768'); - mwexec('/sbin/sysctl net.inet.tcp.recvspace=65536'); - mwexec('/sbin/sysctl net.inet.udp.recvspace=42080'); - mwexec('/sbin/sysctl net.inet.udp.maxdgram=9216'); - mwexec('/sbin/sysctl net.local.stream.recvspace=8192'); - mwexec('/sbin/sysctl net.local.stream.sendspace=8192'); - mwexec('/sbin/sysctl kern.ipc.maxsockbuf=262144'); - mwexec('/sbin/sysctl kern.ipc.somaxconn=128'); - /* mwexec('/sbin/sysctl kern.ipc.maxsockets=16424'); */ - mwexec('/sbin/sysctl kern.ipc.nmbclusters=3072'); - mwexec('/sbin/sysctl kern.maxfiles=1064'); - mwexec('/sbin/sysctl kern.maxfilesperproc=957'); - } // end if - - return 0; - } // end if -} - -/* TODO: Probably a function that is not needed */ -function system_install_mount_cd($cdrom) { - /* Part of install process: Mount the CDROM */ - global $config, $g; - - /* Creating tempo directory for cdrom*/ - echo "Creating Mount point for the CDROM:\n"; - if (mwexec("/bin/mkdir /mnt/cdrom_fr_0507")) { return 1; } - - /* Mounting the CDROM */ - echo "Mount CDROM:\n"; - if (mwexec("/sbin/mount_cd9660 /dev/$cdrom /mnt/cdrom_fr_0507")) { return 1; } - - return 0; -} - -/* TODO: Probably a function that is not needed */ -function system_install_init_fulldisk($harddrive) { - /* Part of install process: Initialize the destination disk with one partition */ - global $config, $g; - - echo "Erasing partitions:\n"; - if (mwexec("/bin/dd if=/dev/zero of=/dev/$harddrive bs=1k count=20")) { return 1; } - - echo "Creating the primary partition and install simple MBR:\n"; - if (mwexec("/sbin/fdisk -BI -b /boot/mbr $harddrive")) { return 1; } - - /* Must wait that the /dev is upatded with the new information */ - /* There should be a more intelligent code here than this stupid timer... */ - echo "Waiting for system update.."; - $devtotest="/dev/$harddrive". "s1"; - $i=0; - - while (!file_exists($devtotest)) { - sleep(1); - echo "."; - $i++; - - if ($i==20) { return 1; } - } - echo "\n"; - - echo "Erasing primary partition:\n"; - if (mwexec("/bin/dd if=/dev/zero of=/dev/" . escapeshellarg($harddrive) . "s1 bs=32k count=16")) { - return 1; - } - - echo "Creating FreeBSD partition:\n"; - if (mwexec("/sbin/bsdlabel -B -w -b /boot/boot " . escapeshellarg($harddrive) ."s1 auto")) { - return 1; - } - - echo "Setting BSDlabel:\n"; - - disks_bsdlabel($harddrive,"s1","4.2BSD"); - - echo "Creating UFS filesystem:\n"; - if (mwexec("/sbin/newfs -U /dev/" . escapeshellarg($harddrive) . "s1")) { return 1; } - - return 0; -} - -/* TODO: Probably a function that is not needed */ -function system_install_init_halfdisk($harddrive) { - /* Part of install process: Initialize the destination disk with 2 partitions */ - global $config, $g; - - /* Create the partitions */ - fdisk_hd_install($harddrive); - - if (mwexec("(/bin/echo y; /bin/echo y) | /sbin/fdisk -B -b /boot/mbr $harddrive")) { return 0; } - - /* Must wait that the /dev is upatded with the new information */ - echo "Waiting for system update.."; - - $devtotest="/dev/$harddrive". "s2"; - $i=0; - while (!file_exists($devtotest)) { - sleep(1); - echo "."; - $i++; - - if ($i==20) { return 1; } - } - echo "\n"; - - echo "Creating BSD Label:\n"; - if (mwexec("/sbin/bsdlabel -B -w -b /boot/boot " . escapeshellarg($harddrive) ."s1 auto")) { - return 1; - } - if (mwexec("/sbin/bsdlabel -w " . escapeshellarg($harddrive) ."s2 auto")) { - return 1; - } - - echo "Modify BSD Label information:\n"; - - disks_bsdlabel($harddrive,"s1","4.2BSD"); - disks_bsdlabel($harddrive,"s2","4.2BSD"); - - echo "Creating filesystem:\n"; - if (mwexec("/sbin/newfs -U /dev/" . escapeshellarg($harddrive) . "s1")) { - return 1; - } - if (mwexec("/sbin/newfs -U /dev/" . escapeshellarg($harddrive) . "s2")) { - return 1; - } - - return 0; -} - -/* TODO: Probably a function that is not needed */ -function system_install_mount_destdisk($harddrive) { - /* Part of install process: Mount the destination disk */ - global $config, $g; - - echo "Creation tempory mouting point:\n"; - if (mwexec("/bin/mkdir /mnt/install_fr_0507")) { return 1; } - - echo "Mount destination disk:\n"; - if (mwexec("/sbin/mount /dev/" . escapeshellarg($harddrive) . "s1 /mnt/install_fr_0507")) { - return 1; - } - - return 0; -} - -/* TODO: Probably a function that is not needed */ -function system_install_unmount() { - /* Part of install process: Unmounting the disk */ - global $config, $g; - - /* Unmounting disk */ - if (mwexec("/sbin/umount /mnt/install_fr_0507")) { return 1; } - if (mwexec("/sbin/umount /mnt/cdrom_fr_0507")) { return 1; } - - /* using 'rm -rf' for deleting the temp directory is too dangerous here... */ - /* - if (mwexec("/bin/rm -rf /mnt/cdrom_fr_0507")) { return 1; } - if (mwexec("/bin/rm -rf /mnt/install_fr_0507")) { return 1; } - */ - - /* Test: replace with PHP function rmdir */ - @rmdir ("/mnt/cdrom_fr_0507"); - @rmdir ("/mnt/install_fr_0507"); - - return 0; -} - -/* TODO: Probably a function that is not needed */ -function system_install_installation($harddrive) { - /* Part of install process: dd image file on the destination disk */ - global $config, $g; - - echo "Installation:\n"; - if (mwexec("/usr/bin/gunzip -S \"\" -c /mnt/cdrom_fr_0507/FreeNAS-generic-pc.gz | dd of=/dev/" . escapeshellarg($harddrive) . " bs=16k > /dev/null 2>&1")) { - return 1; - } - - return 0; -} - -?>
\ No newline at end of file |