#!/usr/local/bin/perl # edit_export.cgi # Allow editing of one export to a client require './exports-lib.pl'; &ReadParse(); local $via_pfs = 0; local $nfsv = nfs_max_version("localhost"); if ($in{'new'}) { &ui_print_header(undef, $text{'create_title'}, "", "create_export"); $via_pfs = ($nfsv == 4) ? 1 : 0; $exp->{"pfs"} = "/export"; } else { &ui_print_header(undef, $text{'edit_title'}, "", "edit_export"); @exps = &list_exports(); $exp = $exps[$in{'idx'}]; %opts = %{$exp->{'options'}}; } # WebNFS doesn't exist on Linux local $linux = ($gconfig{'os_type'} =~ /linux/i) ? 1 : 0; print "\n"; print "
\n"; print "\n"; print "\n"; print "\n"; print "\n"; print "
$text{'edit_details'}
\n"; # Show NFS pseudofilesystem (NFSv4) if ($nfsv == 4) { print "\n"; printf "\n", $via_pfs ? "" : "checked"; print "\n"; printf "\n"; } else { printf "\n"; } # Show directory input print "\n"; print "\n"; } # Show active input print "\n"; printf "\n", $in{'new'} || $exp->{'active'} ? '' : 'checked'; # Show input for export to local $h = $exp->{'host'}; if ($h eq "=public") { $mode = 0; } elsif ($h =~ /^gss\//) {$mode = 5; } elsif ($h =~ /^\@(.*)/) { $mode = 1; $netgroup = $1; } elsif ($h =~ /^(\S+)\/(\S+)$/) { $mode = 2; $network = $1; $netmask = $2; } elsif ($h eq "") { $mode = 3; } else { $mode = 4; $host = $h; } # and authentication input local $auth = "", $sec = ""; if ($h =~ /^gss\/krb5/) { $auth = "krb5"; if ($h =~ /i$/) { $sec = "i"; } if ($h =~ /p$/) { $sec = "p"; } } print "\n"; printf "\n", ($auth eq "") ? "checked" : ""; } else { printf "\n"; } printf "\n", $mode == 3 ? "checked" : ""; printf "\n"; printf "\n", $mode == 0 ? "checked" : "", $linux ? "disabled" : ""; printf "\n"; printf "\n"; printf "\n"; if ($nfsv == 4) { printf "", ($auth eq "krb5") ? "checked" : ""; printf "\n", ($auth eq "lipkey") ? "checked" : ""; printf "\n", ($auth eq "spkm") ? "checked" : ""; # Show security level input print "\n"; printf "\n", ($sec eq "p") ? "checked" : ""; } print "
",&hlink("$text{'edit_nfs_vers'}","vers")," 4\n", $via_pfs ? "checked" : ""; printf " 3 (or lower)
",&hlink("$text{'edit_pfs'}","pfs"),"{'pfs'}\" onkeyup=set_pfs_dir()>"; print &file_chooser_button2("pfs", 1, "pfs_button", ($via_pfs == 0)),"
",&hlink("$text{'edit_dir'}","dir"),"{'dir'}\" onkeyup=set_pfs_dir()>", &file_chooser_button("dir", 1); if ($nfsv == 4) { print "$text{'edit_in'}
",&hlink("$text{'edit_active'}","active")," $text{'yes'}\n", $in{'new'} || $exp->{'active'} ? 'checked' : ''; printf " $text{'no'}
",&hlink("$text{'edit_to'}","client"); if ($nfsv == 4) { print "
",&hlink("$text{'edit_auth'}","auth"),"
sys
$text{'edit_all'} $text{'edit_host'}\n", $mode == 4 ? "checked" : ""; print "
$text{'edit_webnfs'} $text{'edit_netgroup'}\n", $mode == 1 ? "checked" : ""; print "
IPv4 $text{'edit_network'}\n", $mode == 2 ? "checked" : ""; print "\n"; print "$text{'edit_netmask'}
IPv6 $text{'edit_address'}\n", $mode == 6 ? "checked" : ""; print "\n"; print "$text{'edit_prefix'}
krb5
lipkey
spkm-3
", &hlink("$text{'edit_sec'}", "sec"), " $text{'config_none'}\n", ($sec eq "") ? "checked" : ""; printf " $text{'edit_integrity'}\n", ($sec eq "i") ? "checked" : ""; printf " $text{'edit_privacy'}

\n"; print "\n"; print "\n"; print "
$text{'edit_security'}
\n"; # Show read-only input print "\n"; printf "\n", defined($opts{'rw'}) ? "checked" : ""; # Show input for secure port print "\n"; printf "\n", defined($opts{'insecure'}) ? "checked" : ""; # Show subtree check input print "\n"; printf "\n"; # Show nohide check input print "\n"; printf "\n", defined($opts{'nohide'}) ? "checked" : ""; # Show sync input my $sync = defined($opts{'sync'}) ? 1 : defined($opts{'async'}) ? 2 : 0; print "\n\n"; # Show root trust input print "\n"; # Show untrusted user input print "\n"; # Show untrusted group input print "\n"; print "\n"; # Show input for relative symlinks print "\n"; printf "\n", defined($opts{'link_relative'}) ? "" : "checked"; # Show deny access input print "\n"; printf "\n", defined($opts{'noaccess'}) ? "" : "checked"; # Show untrusted UIDs input print "\n", $opts{'squash_uids'}; # Show untrusted GIDs input print "\n", $opts{'squash_gids'}; print "
",&hlink("$text{'edit_ro'}","ro")," $text{'yes'}\n", defined($opts{'rw'}) ? "" : "checked"; printf " $text{'no'}",&hlink("$text{'edit_insecure'}","insecure")," $text{'yes'}\n", defined($opts{'insecure'}) ? "" : "checked"; printf " $text{'no'}
",&hlink("$text{'edit_subtree_check'}","subtree_check")," $text{'yes'}\n", defined($opts{'no_subtree_check'}) ? "checked" : ""; printf " $text{'no'}\n", defined($opts{'no_subtree_check'}) ? "" : "checked"; print "",&hlink("$text{'edit_hide'}","hide")," $text{'yes'}\n", defined($opts{'nohide'}) ? "" : "checked"; printf " $text{'no'}
",&hlink("$text{'edit_sync'}","sync"),""; foreach $s (1, 2, 0) { printf " %s\n", $s, $sync == $s ? "checked" : "", $text{'edit_sync'.$s}; } print "
",&hlink("$text{'edit_squash'}","squash")," \n"; printf " $text{'edit_everyone'}\n", defined($opts{'no_root_squash'}) ? "checked" : ""; printf " $text{'edit_except'}\n", !defined($opts{'no_root_squash'}) && !defined($opts{'all_squash'}) ? "checked" : ""; printf " $text{'edit_nobody'}\n"; defined($opts{'all_squash'}) ? "checked" : ""; print "
",&hlink("$text{'edit_anonuid'}","anonuid")," \n"; printf " $text{'edit_default'}\n", defined($opts{'anonuid'}) ? "" : "checked"; printf "\n", defined($opts{'anonuid'}) ? "checked" : ""; printf "\n", $opts{'anonuid'} ? getpwuid($opts{'anonuid'}) : ""; print &user_chooser_button("anonuid", 0),"",&hlink("$text{'edit_anongid'}","anongid")," \n"; printf " $text{'edit_default'}\n", defined($opts{'anongid'}) ? "" : "checked"; printf "\n", defined($opts{'anongid'}) ? "checked" : ""; printf "\n", $opts{'anongid'} ? getgrgid($opts{'anongid'}) : ""; print &group_chooser_button("anongid", 0),"
$text{'edit_v2opts'}
",&hlink("$text{'edit_relative'}","link_relative")," $text{'yes'}\n", defined($opts{'link_relative'}) ? "checked" : ""; printf " $text{'no'}",&hlink("$text{'edit_noaccess'}","noaccess")," $text{'yes'}\n", defined($opts{'noaccess'}) ? "checked" : ""; printf " $text{'no'}
",&hlink("$text{'edit_uids'}","squash_uids")," \n"; printf " $text{'edit_none'}\n", $opts{'squash_uids'} ? "" : "checked"; printf "\n", $opts{'squash_uids'} ? "checked" : ""; printf "",&hlink("$text{'edit_gids'}","squash_gids")," \n"; printf " $text{'edit_none'}\n", $opts{'squash_gids'} ? "" : "checked"; printf "\n", $opts{'squash_gids'} ? "checked" : ""; printf "
\n"; if (!$in{'new'}) { print "\n"; print "\n"; print "\n"; print "
\n"; } else { print "\n"; print "\n"; } &ui_print_footer("", $text{'index_return'});