%@ Language=VBScript %>
<%
'Sample Input
'http://belkin.radiosetup.com/setupapp/belkin1/asp/rsdb/update.asp
' ?mac=0010c61cd301
' &uid=39461A1F9A29F6D5CDC53598C8263DC2
' &ver=0
' &xml=2.0
' &mime=audio/mpeg-url
bDebug = False
sMacAddress = Request("mac")
iOemId = Config_GetOemId()
sEncryptedMac = Request("uid")
sClientRsdbVersion = Request("ver")
sXmlVersion = Request("xml")
sMimeTypes = Request("mime")
If sMacAddress = "0010c61cd301" And iOemId = "3" Then 'Dave's Mac, until he get's latest Belkin firmware
bSuccess = WaaBlowfish_DecryptMacAddressTest( sEncryptedMac, sDecryptedMac )
Else
bSuccess = WaaBlowfish_DecryptMacAddress( sEncryptedMac, sDecryptedMac )
End If
If bSuccess And UCase(sMacAddress) = UCase(sDecryptedMac) Then
sMacAddress = sDecryptedMac
bBlowfishGood = True
Else
'sSerialStatus = "UNKNOWN_DUE_TO_BF_ERROR"
sSerialStatus = "Basic e1139" 'Blowfish Error Code
bBlowfishGood = False
End If
dNow = Now()
sjLogIt "Update", "update.asp", "Begin|sEncryptedMac=" & sEncryptedMac & _
"|sDecryptedMac=" & sDecryptedMac & _
"|sClearMac=" & sMacAddress & _
"|bBlowfishGood=" & bBlowfishGood & _
"|sClientRsdbVersion=" & sClientRsdbVersion & "|sXmlVersion=" & sXmlVersion & "|sMimeTypes=" & sMimeTypes
bGoodToGo = True
sTemp = Mid(sClientRsdbVersion, 1, 10) & " " & Mid(sClientRsdbVersion,12,8)
If IsDate(sTemp) Then
dClientRsdbVersion = cDate(sTemp)
Else
'If there is no date from the client, default to an old date so that the lastest db will be sent
dClientRsdbVersion = cDate("1999-01-01 07:00:00")
End If
If bBlowfishGood Then
'Get Favorite Stations and Stations Added By User from Db
Set oConn = Server.CreateObject("ADODB.Connection")
oConn.Open(Database_GetConnStringForRegisteredMacAddresses())
Set oRsMyStations = Server.CreateObject("ADODB.Recordset")
sSql = "SELECT * FROM RegisteredMacAddressesTbl WHERE MacAddress = '" & sMacAddress & "'"
oRsMyStations.Open sSql, oConn, adOpenStatic
If Not oRsMyStations.EOF Then
sMyFavoriteStations = oRsMyStations("FavoriteStations")
sMyAddedStations = oRsMyStations("StationsAddedByUser")
sLastFavoritesUpdate = oRsMyStations("LastFavoritesUpdate")
sRegistrationStatus = oRsMyStations("RegistrationStatus")
dDateAdded = oRsMyStations("DateAdded")
sGeographicRegion = oRsMyStations("GeographicRegion")
Else
sRegistrationStatus = "TRIAL"
dDateAdded = dNow
sGeographicRegion = ""
'If not in DB, this is first time here. INSERT into DB:
sSQL = "INSERT INTO RegisteredMacAddressesTbl ( "
sSQL = sSQL & " MacAddress, "
sSQL = sSQL & " RegistrationStatus, "
sSQL = sSQL & " OemId, "
sSQL = sSQL & " OemName, "
sSQL = sSQL & " DateAdded, "
sSQL = sSQL & " FirstHitFromDeviceDate, "
sSQL = sSQL & " ExpirationDate, "
sSQL = sSQL & " ExpirationCalcId "
sSQL = sSQL & " ) VALUES ( "
sSQL = sSQL & " '" & sMacAddress & "', "
sSQL = sSQL & " '" & sRegistrationStatus & "', "
sSQL = sSQL & " " & iOemId & ", "
sSQL = sSQL & " '" & Oem_GetName(iOemId) & "', "
sSQL = sSQL & " #" & dDateAdded & "#, "
sSQL = sSQL & " #" & dNow & "#, "
sSQL = sSQL & " #" & DateAdd("m", 2, Now) & "#, "
sSQL = sSQL & " 1); "
oConn.Execute(sSQL)
End If
bSuccess = Favorites_GetFavoriteStationsXmlBridgeCo(sMyFavoriteStations, sMyFavoriteStationsXml)
bSuccess = Favorites_GetAddedStationsXmlBridgeCo(sMyAddedStations, sMyAddedStationsXml, sMyAddedDirXml, iNumAddedStations)
'bSuccess = Favorites_GetAddedStationsXml(sMyAddedStations, sMyAddedStationsXml, sMyAddedDirXml, iNumAddedStations, sMacAddress, sLanguage)
sSerialStatus = Auth_GetSerialStatusWithDate( sRegistrationStatus, dDateAdded, sMacAddress )
End If
If bDebug = True Then
'sServerRsdbVersion = "2003-12-03T07:17:00Z"
'sServerRsdbVersion = "2004-02-04T07:17:00Z"
'Use a date in the future to always force a send for development
sServerXmlFileVersion = "2020-11-01T07:17:00Z"
sTemp = Mid(sServerXmlFileVersion, 1, 10) & " " & Mid(sServerXmlFileVersion,12,8)
If IsDate(sTemp) Then
dServerXmlFileVersion = cDate(sTemp)
Else
bGoodToGo = False
End If
Else
If sSerialStatus = "BASIC" Then
sXmlFile = Config_GetXml50FileFullPath()
bGoodToGo = Local_GetRsdbVersionFromXmlFile(sXmlFile, sServerXmlFileVersion, dServerXmlFileVersion)
ElseIf bBlowfishGood = False Then
sXmlFile = Config_GetXml50FileFullPath()
bGoodToGo = Local_GetRsdbVersionAndFirstStationIdFromXmlFile(sXmlFile, sServerXmlFileVersion, dServerXmlFileVersion, sFirstStationId)
sBlowfishErrorXml = Chr(9) & Chr(9) & Chr(9) & "
" & Chr(13) & Chr(10) & _
Chr(9) & Chr(9) & Chr(9) & Chr(9) & "12049" & Chr(13) & Chr(10) & _
Chr(9) & Chr(9) & Chr(9) & "" & Chr(13) & Chr(10)
Else
sXmlFile = Config_GetXmlFileFullPath()
bGoodToGo = Local_GetRsdbVersionFromXmlFile(sXmlFile, sServerXmlFileVersion, dServerXmlFileVersion)
End If
End If
sjLogIt "Update", "update.asp", "9|sSerialStatus=" & sSerialStatus & "|sRegistrationStatus=" & sRegistrationStatus & "|sXmlFile=" & sXmlFile
bUpdateNeeded = False
If bGoodToGo = True Then
iClientVsServerDiff = DateDiff("s", dClientRsdbVersion, dServerXmlFileVersion)
If isDate(sLastFavoritesUpdate) Then
iClientVsFavoritesDiff = DateDiff("s", dClientRsdbVersion, cDate(sLastFavoritesUpdate))
Else
iClientVsFavoritesDiff = 0
End If
sjLogIt "Update", "update.asp", "10good|ClientDate=" & dClientRsdbVersion & "|ServerDate=" & dServerXmlFileVersion & "|FavoritesDate=" & sLastFavoritesUpdate
If iClientVsServerDiff > 0 Or iClientVsFavoritesDiff > 0 Then
bUpdateNeeded = True
dLatestDate = dServerXmlFileVersion
If isDate(sLastFavoritesUpdate) Then
If cDate(sLastFavoritesUpdate) > dLatestDate Then
dLatestDate = cDate(sLastFavoritesUpdate)
End If
End If
bSuccess = Local_ConvertDateToWaaRsdbVersion(dLatestDate, sLatestRsdbVersion)
sjLogIt "Update", "update.asp", "15a Update Needed|dLatestDate=" & dLatestDate & "|sLatestRsdbVersion=" & sLatestRsdbVersion
Else
sjLogIt "Update", "update.asp", "15b No Update Needed"
End If
Else
sjLogIt "Update", "update.asp", "10bad|bGoodToGo=" & bGoodToGo
End If
If bUpdateNeeded = False Then
'No update needed - send 304
If bDebug = False Then
Response.Clear
Response.Status = "304 Not Modified"
End If
Else
set oFso = CreateObject("Scripting.FileSystemObject")
set oXmlFile = oFso.OpenTextFile(sXmlFile, 1)
If Err.Number = 0 Then
While oXmlFile.AtEndOfStream <> True
sData = oXmlFile.ReadLine()
If InStr(1, sData, " 0 Then
bSuccess = Favorites_UpdateStationDbTagForStationCountBridgeCo(sTagUpdatedForVersion, sOutTag, iNumAddedStations)
Response.Write sOutTag & chr(13) & chr(10)
Else
Response.Write sTagUpdatedForVersion & chr(13) & chr(10)
'Response.Write sData & chr(13) & chr(10)
End If
'ADD THIS WHEN BRIDGECO SUPPORTS QUERY STRINGS
'ElseIf InStr(1, sData, "") Then
'bSuccess = Local_UpdateUrlTagWithUid(sData, sUrlTagUpdatedWithUid, sMacAddress)
ElseIf InStr(1, sData, "") Then
If UCase(Left(sMacAddress,6)) = "000F66" Then
'Send Linksys units to correct place
Response.Write "http://www.linksysradio.com/setupapp/linksys1/asp/rsdb/update.asp" & chr(13) & chr(10)
Else
Response.Write "" & Config_UpdateAspUrl() & "" & chr(13) & chr(10)
End If
ElseIf InStr(1, sData, "") Then
Response.Write sMyAddedStationsXml
ElseIf InStr(1, sData, "") Then
Response.Write sMyFavoriteStationsXml
ElseIf InStr(1, sData, "") Then
Response.Write sMyAddedDirXml
ElseIf InStr(1, sData, "") Then
Response.Write Replace(sData, "", sMacAddress)
ElseIf InStr(1, sData, "") Then
Response.Write Replace(sData, "", Config_GetUrlBaseForMp3Help())
ElseIf InStr(1, sData, "") Then
Response.Write sBlowfishErrorXml
ElseIf InStr(1, sData, "") Then
Response.Write Replace(sData, "", Config_GetWebsiteNiceName())
ElseIf InStr(1, sData, "") Then
Response.Write Replace(sData, "", sSerialStatus)
Else
Response.Write sData & chr(13) & chr(10)
End If
Wend
End If
End If
%>
<% If bDebug = True Then %>
<% End If %>
<%
Function Local_ConvertDateToWaaRsdbVersion(dInDate, sWaaRsdbVersion)
Dim bSuccess, sTemp
bSuccess = False
sWaaRsdbVersion = ""
If IsDate(dInDate) Then
'2004-02-13T12:00:00Z
sWaaRsdbVersion = DatePart("yyyy", dInDate)
sTemp = DatePart("m", dInDate)
If Len(sTemp) = 1 Then sTemp = "0" & sTemp End If
sWaaRsdbVersion = sWaaRsdbVersion & "-" & sTemp
sTemp = DatePart("d", dInDate)
If Len(sTemp) = 1 Then sTemp = "0" & sTemp End If
sWaaRsdbVersion = sWaaRsdbVersion & "-" & sTemp
sWaaRsdbVersion = sWaaRsdbVersion & "T"
sTemp = DatePart("h", dInDate)
If Len(sTemp) = 1 Then sTemp = "0" & sTemp End If
sWaaRsdbVersion = sWaaRsdbVersion & sTemp
sTemp = DatePart("n", dInDate)
If Len(sTemp) = 1 Then sTemp = "0" & sTemp End If
sWaaRsdbVersion = sWaaRsdbVersion & ":" & sTemp
sTemp = DatePart("s", dInDate)
If Len(sTemp) = 1 Then sTemp = "0" & sTemp End If
sWaaRsdbVersion = sWaaRsdbVersion & ":" & sTemp
sWaaRsdbVersion = sWaaRsdbVersion & "Z"
bSuccess = True
End If
End Function
Function Local_GetRsdbVersionFromXmlFile(sXmlFile,sVersionOfStaticXmlFile,dVersionOfStaticXmlFile)
Dim oFso, oXmlFile, bFileExists
Dim arrTags, iDex, arrTemp, bFoundVersion, bFoundTag, iLineCount, sTemp
bFoundVersion = False
set oFso = CreateObject("Scripting.FileSystemObject")
If oFso.FileExists(sXmlFile) Then
set oXmlFile = oFso.OpenTextFile(sXmlFile, 1)
bFoundTag = False
iLineCount = 0
If Err.Number = 0 Then
While oXmlFile.AtEndOfStream <> True And bFoundTag = False And iLineCount < 100
sData = oXmlFile.ReadLine()
If InStr(1, sData, "
sData = Replace(sData, "<", "")
sData = Replace(sData, ">", "")
arrTags = Split(sData, " ")
'Get the version attribute, e.g. 2004-02-13T12:00:00Z
For iDex = 0 To UBound(arrTags)
If Left(arrTags(iDex),7) = "version" Then
arrTemp = Split(arrTags(iDex), """")
If UBound(arrTemp) >= 1 Then
'arrTemp(1) now holds the version, e.g.: 2004-02-13T12:00:00Z
sVersionOfStaticXmlFile = arrTemp(1)
sTemp = Mid(arrTemp(1), 1, 10) & " " & Mid(arrTemp(1),12,8)
If IsDate(sTemp) Then
dVersionOfStaticXmlFile = cDate(sTemp)
bFoundVersion = True
End If
End If
End If
Next
End If
iLineCount = iLineCount + 1
Wend
End If
End If
Local_GetRsdbVersionFromXmlFile = bFoundVersion
End Function
Function Local_GetRsdbVersionAndFirstStationIdFromXmlFile(sXmlFile,sVersionOfStaticXmlFile,dVersionOfStaticXmlFile,sFirstStationId)
Dim oFso, oXmlFile, bFileExists
Dim arrTags, iDex, arrTemp, bFoundVersion, bFoundTag, iLineCount, sTemp
bFoundVersion = False
set oFso = CreateObject("Scripting.FileSystemObject")
If oFso.FileExists(sXmlFile) Then
set oXmlFile = oFso.OpenTextFile(sXmlFile, 1)
bFoundTag = False
iLineCount = 0
If Err.Number = 0 Then
While oXmlFile.AtEndOfStream <> True And bFoundTag = False And iLineCount < 100
sData = oXmlFile.ReadLine()
If InStr(1, sData, "
sData = Replace(sData, "<", "")
sData = Replace(sData, ">", "")
arrTags = Split(sData, " ")
'Get the version attribute, e.g. 2004-02-13T12:00:00Z
For iDex = 0 To UBound(arrTags)
If Left(arrTags(iDex),7) = "version" Then
arrTemp = Split(arrTags(iDex), """")
If UBound(arrTemp) >= 1 Then
'arrTemp(1) now holds the version, e.g.: 2004-02-13T12:00:00Z
sVersionOfStaticXmlFile = arrTemp(1)
sTemp = Mid(arrTemp(1), 1, 10) & " " & Mid(arrTemp(1),12,8)
If IsDate(sTemp) Then
dVersionOfStaticXmlFile = cDate(sTemp)
bFoundVersion = True
End If
End If
End If
Next
ElseIf InStr(1, sData, "") Then
bFoundTag = True
sFirstStationId = Mid(sData, 4)
sFirstStationId = Left(sData, Len(sData)-5)
End If
iLineCount = iLineCount + 1
Wend
End If
End If
Local_GetRsdbVersionAndFirstStationIdFromXmlFile = bFoundVersion
End Function
%>