FOG Snapin Client download error



  • Hi there,

    i’m running FOG Server 6615 with Windows 7 Clients that run FOG Client 0.9.11. I’ve changed the Apache file sizes too 2900 M, cause my Snapin is 2,100 M big, but when i try to roll out the Snapin too an Client, it comes up with an error in the Log:

    ERROR: Could not download the File
    ERROR: The server has completed a protocol violation, Detail= Content-Length - Header value is invalid

    what is wrong, smaller Snapins are running fine


  • Senior Developer

    @Timo v0.10 allows for hashing large files. When it is released, can you confirm that the issue is fixed?


  • Senior Developer

    @Timo memory is not disk space. It sounds, to me, like it’s trying to put the whole file in ram. You may need to have the script copy the file locally then run it from the local machine.



  • If i run it on the Client in an Dos box , with cscript bootstrap.vbs it comes up with an error after a few seconds "WinHttp.WinHttpRequest: For this operation is not enough memory available But c: has enough free Memory (60GB)



  • @Jbob said in FOG Snapin Client download error:

    @Timo Batch lacks the ability to download a file natively. Here is a vbs script which should do what you are looking for.

    Save the code as “Bootstrap.vbs”, and update the http://fog-server/MyProgram.exe line to reflect a real URL where your snapin can be downloaded, the easiest way may be to just copy your snapin file to /var/www/html/, and then it is accessible via http://{fog-server}/MyProgram.exe, where Myprogram.exe is the file name. Also update references to MyProgram.exe to your program’s file name.

    Note that this code is untested.

    Use the following snapin settings:
    Snapin Run With: cscript
    Snapin Run With Args: //B //Nologo
    Snapin File: Bootstrap.vbs

    Bootstrap.vbs code:

    'http://www.robvanderwoude.com/vbstech_internet_download.php
    
    HTTPDownload "http://fog-server/MyProgram.exe", "C:\"
    
    Dim objShell
    Set objShell = WScript.CreateObject( "WScript.Shell" )
    objShell.Run("C:\MyProgram.exe")
    Set objShell = Nothing
    
    
    Dim fso
    Set fso = CreateObject("Scripting.FileSystemObject")
    fso.DeleteFile("C:\MyProgram.exe")
    Set fso = Nothing
    
    
    Sub HTTPDownload( myURL, myPath )
    ' This Sub downloads the FILE specified in myURL to the path specified in myPath.
    '
    ' myURL must always end with a file name
    ' myPath may be a directory or a file name; in either case the directory must exist
    '
    ' Written by Rob van der Woude
    ' http://www.robvanderwoude.com
    '
    ' Based on a script found on the Thai Visa forum
    ' http://www.thaivisa.com/forum/index.php?showtopic=21832
    
        ' Standard housekeeping
        Dim i, objFile, objFSO, objHTTP, strFile, strMsg
        Const ForReading = 1, ForWriting = 2, ForAppending = 8
    
        ' Create a File System Object
        Set objFSO = CreateObject( "Scripting.FileSystemObject" )
    
        ' Check if the specified target file or folder exists,
        ' and build the fully qualified path of the target file
        If objFSO.FolderExists( myPath ) Then
            strFile = objFSO.BuildPath( myPath, Mid( myURL, InStrRev( myURL, "/" ) + 1 ) )
        ElseIf objFSO.FolderExists( Left( myPath, InStrRev( myPath, "\" ) - 1 ) ) Then
            strFile = myPath
        Else
            WScript.Echo "ERROR: Target folder not found."
            Exit Sub
        End If
    
        ' Create or open the target file
        Set objFile = objFSO.OpenTextFile( strFile, ForWriting, True )
    
        ' Create an HTTP object
        Set objHTTP = CreateObject( "WinHttp.WinHttpRequest.5.1" )
    
        ' Download the specified URL
        objHTTP.Open "GET", myURL, False
        objHTTP.Send
    
        ' Write the downloaded byte stream to the target file
        For i = 1 To LenB( objHTTP.ResponseBody )
            objFile.Write Chr( AscB( MidB( objHTTP.ResponseBody, i, 1 ) ) )
        Next
    
        ' Close the target file
        objFile.Close( )
    End Sub
    

    Hi there, at this moment i’m trying your script but i think it hangs in the download it now takes over 10 minutes, but i have no status window what is happening. The download from my fogserver manually tested runs fine


  • Moderator

    I’d opt for a batch file still as a stop-gap.

    use xcopy to get the file. it supports UNC paths.


  • Senior Developer

    @Timo Batch lacks the ability to download a file natively. Here is a vbs script which should do what you are looking for.

    Save the code as “Bootstrap.vbs”, and update the http://fog-server/MyProgram.exe line to reflect a real URL where your snapin can be downloaded, the easiest way may be to just copy your snapin file to /var/www/html/, and then it is accessible via http://{fog-server}/MyProgram.exe, where Myprogram.exe is the file name. Also update references to MyProgram.exe to your program’s file name.

    Note that this code is untested.

    Use the following snapin settings:
    Snapin Run With: cscript
    Snapin Run With Args: //B //Nologo
    Snapin File: Bootstrap.vbs

    Bootstrap.vbs code:

    'http://www.robvanderwoude.com/vbstech_internet_download.php
    
    HTTPDownload "http://fog-server/MyProgram.exe", "C:\"
    
    Dim objShell
    Set objShell = WScript.CreateObject( "WScript.Shell" )
    objShell.Run("C:\MyProgram.exe")
    Set objShell = Nothing
    
    
    Dim fso
    Set fso = CreateObject("Scripting.FileSystemObject")
    fso.DeleteFile("C:\MyProgram.exe")
    Set fso = Nothing
    
    
    Sub HTTPDownload( myURL, myPath )
    ' This Sub downloads the FILE specified in myURL to the path specified in myPath.
    '
    ' myURL must always end with a file name
    ' myPath may be a directory or a file name; in either case the directory must exist
    '
    ' Written by Rob van der Woude
    ' http://www.robvanderwoude.com
    '
    ' Based on a script found on the Thai Visa forum
    ' http://www.thaivisa.com/forum/index.php?showtopic=21832
    
        ' Standard housekeeping
        Dim i, objFile, objFSO, objHTTP, strFile, strMsg
        Const ForReading = 1, ForWriting = 2, ForAppending = 8
    
        ' Create a File System Object
        Set objFSO = CreateObject( "Scripting.FileSystemObject" )
    
        ' Check if the specified target file or folder exists,
        ' and build the fully qualified path of the target file
        If objFSO.FolderExists( myPath ) Then
            strFile = objFSO.BuildPath( myPath, Mid( myURL, InStrRev( myURL, "/" ) + 1 ) )
        ElseIf objFSO.FolderExists( Left( myPath, InStrRev( myPath, "\" ) - 1 ) ) Then
            strFile = myPath
        Else
            WScript.Echo "ERROR: Target folder not found."
            Exit Sub
        End If
    
        ' Create or open the target file
        Set objFile = objFSO.OpenTextFile( strFile, ForWriting, True )
    
        ' Create an HTTP object
        Set objHTTP = CreateObject( "WinHttp.WinHttpRequest.5.1" )
    
        ' Download the specified URL
        objHTTP.Open "GET", myURL, False
        objHTTP.Send
    
        ' Write the downloaded byte stream to the target file
        For i = 1 To LenB( objHTTP.ResponseBody )
            objFile.Write Chr( AscB( MidB( objHTTP.ResponseBody, i, 1 ) ) )
        Next
    
        ' Close the target file
        objFile.Close( )
    End Sub
    


  • @Jbob said in FOG Snapin Client download error:

    @Timo for now you could set the snapin file to a batch script which downloads the exe from a samaba share or something and runs it.

    Hi Jbob thx for your help. How can i realize that? I’ve an Synology NAS where i can store that, do you have an example script, maybe?


  • Senior Developer

    @Timo for now you could set the snapin file to a batch script which downloads the exe from a samaba share or something and runs it.


  • Senior Developer

    @Timo the original header problem is fixed. @Sebastian-Roth is correct in that the hashing error is a limitation of c#. I’ll see what I can do.



  • @Sebastian-Roth said in FOG Snapin Client download error:

    @Timo This seems to be a restriction in C# following the discussion here: http://www.codeproject.com/Questions/142532/appending-and-splitting-files-larger-than-gb

    Possibly this is only happening because you have 32 bit Windows installed?? Please check! Or this might be a general restriction and we need to read large snapin files as chunks, @Jbob?

    Hi Sebastian, no the Client runs an Windows 7 x64 Installation


  • Developer

    @Timo This seems to be a restriction in C# following the discussion here: http://www.codeproject.com/Questions/142532/appending-and-splitting-files-larger-than-gb

    Possibly this is only happening because you have 32 bit Windows installed?? Please check! Or this might be a general restriction and we need to read large snapin files as chunks, @Jbob?



  • Sure i can, thx for your help, i really appreciate it

    0_1461241175644_fogerror.JPG


  • Developer

    @Timo Can you please post the full error you see (line number, …). Maybe even post a picture.



  • GIT 7248 the same…just forgot one thing from the Error Log Service Error:“Object reference not set to an object instance”



  • @Tom-Elliott said in FOG Snapin Client download error:

    @Timo Can you simply try updating? I removed the Content-Length setter in hopes that is all it takes to fix the issue at hand.

    I#ve just updated to 7246 via GIT, but unfortunately the same error in Log, unable to hash File, The file is too long. This process currently only supports files with a size of less than 2 GB.


  • Senior Developer

    @Timo Can you simply try updating? I removed the Content-Length setter in hopes that is all it takes to fix the issue at hand.



  • @Sebastian-Roth said in FOG Snapin Client download error:

    @Timo said:

    …Section=ResponseHeader Detail=“Content-Length”-Headerwert ist ungültig…

    This translates to “value of Content-Length header is invalid”! Possibly .Net does not like such a big value??

    Is it possible to increase that? If so, where i can change that value?



  • Good Morning, this MOrning i’ve updated to latest GIT 7242. Now when i try to download the Snapin via Basic Task “Single Snapin” it comes up in the Log with " Unable to hash file, The file is too long. This process currently only supports files with a size of less than 2 GB.

    So i think at this time it is not possible… :-( !!!


  • Developer

    @Timo said:

    …Section=ResponseHeader Detail=“Content-Length”-Headerwert ist ungültig…

    This translates to “value of Content-Length header is invalid”! Possibly .Net does not like such a big value??


Log in to reply
 

Looks like your connection to FOG Project was lost, please wait while we try to reconnect.