In IIS7 and IIS7.5 which runs on Windows Server 2008 or Windows Server 2008 R2, it is not possible to use the WebDav PUT command without ‘authentication’.
This is a problem for your Avaya VOIP phones. Avaya uses the PUT command to backup a phone configuration and to store contacts.

Now, there are 3 possible options:

  1. Install Apache on Windows or Linux. I know many of you guys don’t like this…Especially because you need to configure and update/patch it.
  2. Use a WebDav server like IP Tel from Avaya. However, that program looks like a Windows95 program,.. is it supported at all. ?
  3. Install my Avaya script / workarround! I’ll tell you how it works below.

My Avaya WebDav workarround:

  1. Install IIS on a Workstation or Server. You might have already installed IIS for phones to download the firmware and settings file.
    Make sure to have the WebDav module UNinstalled! (If you install it and disable it inside the IIS Manager, it will not work!)
  2. Install the URL Rewrite module of IIS.
  3. Add a rewrite rule on your backup directory which looks like this:
    Avaya IIS Rewrite Screenshot
    (click to enlarge)

  4. Use the following script:

avayaupload.asp


< %
'#THIS IS THE ONLY VARIABLE NEEDED! PLEASE END WITH A SLASH!!#
backup_dir	= "c:\inetpub\wwwroot\backup\"

uri = Request.ServerVariables("REQUEST_URI")
filename	= Right( uri, Len(uri) - InStrRev(uri,"/",Len(uri)) )

If UCase(Request.ServerVariables("HTTP_METHOD"))="PUT" Then

 If Request.Totalbytes>0 Then
  sourcedata = Request.BinaryRead(Request.Totalbytes)
  SaveBinaryData backup_dir&filename, sourcedata
  Response.Status="201 Created"
 End If

Else

 Set fs = CreateObject("Scripting.FileSystemObject")
 If fs.FileExists (backup_dir&filename) Then
  filecontent = ReadBinaryFile(backup_dir&filename)
  response.binarywrite filecontent
 End If
End If


Function SaveBinaryData(FileName, ByteArray)
  Const adTypeBinary = 1
  Const adSaveCreateOverWrite = 2
  
  'Create Stream object
  Dim BinaryStream
  Set BinaryStream = CreateObject("ADODB.Stream")
  
  'Specify stream type - we want To save binary data.
  BinaryStream.Type = adTypeBinary

  'Open the stream And write binary data To the object
  BinaryStream.Open
  BinaryStream.Write ByteArray
  
  'Save binary data To disk
  BinaryStream.SaveToFile FileName, adSaveCreateOverWrite
End Function


Function ReadBinaryFile(FileName)
  Const adTypeBinary = 1
  
  'Create Stream object
  Dim BinaryStream
  Set BinaryStream = CreateObject("ADODB.Stream")
  
  'Specify stream type - we want To get binary data.
  BinaryStream.Type = adTypeBinary
  
  'Open the stream
  BinaryStream.Open
  
  'Load the file data from disk To stream object
  BinaryStream.LoadFromFile FileName
  
  'Open the stream And get binary data from the object
  ReadBinaryFile = BinaryStream.Read
End Function

%>

Don’t forget to give the backup directory Write permissions (NTFS) for the IUSR account.