Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

If dst file name contains a slash - we don't use a hyphen #257

Closed
wants to merge 2 commits into from
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion modules/tftp/server.rb
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,13 @@ def pxeconfig_file mac
end

def self.fetch_boot_file dst, src
filename = dst + '-' + src.split("/")[-1]
# If dst file name contains a slash - we don't use a hyphen (file goes into a subdirectory)
if dst.include? "/"
filename = dst + src.split("/")[-1]
else
filename = dst + '-' + src.split("/")[-1]
end

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm afraid this is still not going to work: on line 109 https://github.com/kireevco/smart-proxy/blob/develop/modules/tftp/server.rb#L109, the resulting directory tree won't have the last directory, if I correctly understand the directory layout suggested in #9299.

Is the directory per architecture required for pxe booting of Windows? Could we get away with our current approach, i.e. prefixing boot files with the os and architecture name? For example, the names of boot files for centos 6.4 for x86 are: CentOS-6.4-x86_64-initrd.img and CentOS-6.4-x86_64-vmlinuz.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, it never worked with the hyphens, because windows was looking for specific files, and they didn't exist, since they had arch prefixes with hyphens. (bcd-x86, for example).
I currently have this code in my production and It does create a directory tree that is desired.

I get something like boot/windows-x64/moot.wim, boot/windows-x86/boot.wim, etc.

Are you testing with my patch to windows operating system model In foreman?

If you could, please explain what's not correct in the directory structure, so I can fix It.

On Feb 11, 2015, at 3:58 AM, Dmitri Dolguikh notifications@github.com wrote:

In modules/tftp/server.rb:

@@ -93,7 +93,13 @@ def pxeconfig_file mac
end

def self.fetch_boot_file dst, src

  • filename = dst + '-' + src.split("/")[-1]
  • If dst file name contains a slash - we don't use a hyphen (file goes into a subdirectory)

  • if dst.include? "/"
  •  filename  = dst + src.split("/")[-1]
    
  • else
  •  filename  = dst + '-' + src.split("/")[-1]
    
  • end

I'm afraid this is still not going to work: on line 109 https://github.com/kireevco/smart-proxy/blob/develop/modules/tftp/server.rb#L109, the resulting directory tree won't have the last directory, if I correctly understand the directory layout suggested in #9299.

Is the directory per architecture required for pxe booting of Windows? Could we get away with our current approach, i.e. prefixing boot files with the os and architecture name? For example, the names of boot files for centos 6.4 for x86 are: CentOS-6.4-x86_64-initrd.img and CentOS-6.4-x86_64-vmlinuz.


Reply to this email directly or view it on GitHub.

destination = Pathname.new(File.expand_path(filename, Proxy::TFTP::Plugin.settings.tftproot)).cleanpath
tftproot = Pathname.new(Proxy::TFTP::Plugin.settings.tftproot).cleanpath
raise "TFTP destination outside of tftproot" unless destination.to_s.start_with?(tftproot.to_s)
Expand Down