]> rtime.felk.cvut.cz Git - novaboot.git/commitdiff
tftpd: Set root to the dir specified in --server
authorMichal Sojka <michal.sojka@cvut.cz>
Fri, 11 Jun 2021 10:39:22 +0000 (12:39 +0200)
committerMichal Sojka <michal.sojka@cvut.cz>
Mon, 28 Jun 2021 06:18:02 +0000 (08:18 +0200)
novaboot

index 3403bfd063db43cdc580eb2d6f8331a66bb3c065..8c0b41a37a2053d025541a003ccec893b393ae9c 100755 (executable)
--- a/novaboot
+++ b/novaboot
@@ -1161,19 +1161,21 @@ host server {
 
 if (defined $dhcp_tftp || defined $tftp) {
     $tftp_port ||= 69;
+    my $tftp_root = "$builddir";
+    $tftp_root = "$server" if(defined $server);
 
     # Prepare a GRUB netboot directory
-    system_verbose("grub-mknetdir --net-directory=$builddir") if (defined $grub2_config);
+    system_verbose("grub-mknetdir --net-directory=$tftp_root") if (defined $grub2_config);
 
     # Generate TFTP mapfile
-    open(my $fh, '>', "$builddir/mapfile");
+    open(my $fh, '>', "$tftp_root/mapfile");
     print $fh "# Some PXE clients (mainly UEFI) have bug. They add zero byte to the end of the
 # path name. This rule removes it
 r     \\.efi.*   \\.efi";
     close($fh);
     # Unfortunately, tftpd requires root privileges even with
     # non-privileged (>1023) port due to initgroups().
-    system_verbose("sudo in.tftpd --listen --secure -v -v -v --pidfile tftpd.pid -m mapfile --address :$tftp_port $builddir");
+    system_verbose("sudo in.tftpd --listen --secure -v -v -v --pidfile $builddir/tftpd.pid -m mapfile --address :$tftp_port $tftp_root");
 
     # Kill server when we die
     $SIG{__DIE__} = sub { system_verbose('sudo pkill --pidfile=dhcpd.pid') if (defined $dhcp_tftp);