rendered paste body<%@ 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) & "<dir name=""Authentication Error 1139"" subdir_count=""0"" station_count=""1"" >" & Chr(13) & Chr(10) & _
Chr(9) & Chr(9) & Chr(9) & Chr(9) & "<station>12049</station>" & Chr(13) & Chr(10) & _
Chr(9) & Chr(9) & Chr(9) & "</dir>" & 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, "<station_db") Then
bSuccess = Favorites_UpdateStationDbTagForVersionBridgeCo(sData, sTagUpdatedForVersion, sLatestRsdbVersion)
If iNumAddedStations > 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, "<url>") Then
'bSuccess = Local_UpdateUrlTagWithUid(sData, sUrlTagUpdatedWithUid, sMacAddress)
ElseIf InStr(1, sData, "<server_url>") Then
If UCase(Left(sMacAddress,6)) = "000F66" Then
'Send Linksys units to correct place
Response.Write "<server_url>http://www.linksysradio.com/setupapp/linksys1/asp/rsdb/update.asp</server_url>" & chr(13) & chr(10)
Else
Response.Write "<server_url>" & Config_UpdateAspUrl() & "</server_url>" & chr(13) & chr(10)
End If
ElseIf InStr(1, sData, "<!-- MY_ADDED_STATIONS_GO_HERE -->") Then
Response.Write sMyAddedStationsXml
ElseIf InStr(1, sData, "<!-- MY_DIRECTORY_OF_FAVORITE_STATIONS_GOES_HERE -->") Then
Response.Write sMyFavoriteStationsXml
ElseIf InStr(1, sData, "<!-- MY_DIRECTORY_OF_ADDED_STATIONS_GOES_HERE -->") Then
Response.Write sMyAddedDirXml
ElseIf InStr(1, sData, "<!-- MYMEDIAADAPTER_UNIQUEID -->") Then
Response.Write Replace(sData, "<!-- MYMEDIAADAPTER_UNIQUEID -->", sMacAddress)
ElseIf InStr(1, sData, "<!-- OEM_SPECIFIC_URL_BASE_FOR_MP3_HELP -->") Then
Response.Write Replace(sData, "<!-- OEM_SPECIFIC_URL_BASE_FOR_MP3_HELP -->", Config_GetUrlBaseForMp3Help())
ElseIf InStr(1, sData, "<!-- BLOWFISH_ERROR_DIRECTORY_GOES_HERE -->") Then
Response.Write sBlowfishErrorXml
ElseIf InStr(1, sData, "<!-- WEBSITE_NICE_NAME -->") Then
Response.Write Replace(sData, "<!-- WEBSITE_NICE_NAME -->", Config_GetWebsiteNiceName())
ElseIf InStr(1, sData, "<!-- SERVICE_STATUS -->") Then
Response.Write Replace(sData, "<!-- SERVICE_STATUS -->", sSerialStatus)
Else
Response.Write sData & chr(13) & chr(10)
End If
Wend
End If
End If
%>
<% If bDebug = True Then %>
<!--
sMacAddress: <%=sMacAddress%><BR>
sClientRsdbVersion: <%=sClientRsdbVersion%><BR>
sXmlVersion: <%=sXmlVersion%><BR>
sMimeTypes: <%=sMimeTypes%><BR>
<BR>
dClientRsdbVersion: <%=dClientRsdbVersion%><BR>
dServerXmlFileVersion: <%=dServerXmlFileVersion%><BR>
<BR>
bGoodToGo: <%=bGoodToGo%><BR>
iClientVsServerDiff: <%=iClientVsServerDiff%><BR>
iClientVsFavoritesDiff: <%=iClientVsFavoritesDiff%><BR>
bUpdateNeeded: <%=bUpdateNeeded%><BR>
Now: <%=Now%><BR>
<BR>
-->
<% 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, "<station_db") Then
bFoundTag = True
'<station_db version="2004-02-13T12:00:00Z" format_version="2.0" station_count="1047">
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, "<station_db") Then
'<station_db version="2004-02-13T12:00:00Z" format_version="2.0" station_count="1047">
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, "<id>") 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
%>
<!-- #include file="../AspFunctions/ConfigFuncs.asp" -->
<!-- #include file="../AspFunctions/AuthFuncs.asp" -->
<!-- #include file="../AspFunctions/OemFuncs.asp" -->
<!-- #include file="../AspFunctions/DatabaseFuncs.asp" -->
<!-- #include file="../AspFunctions/FavoriteFuncs.asp" -->
<!-- #include file="../AspFunctions/WaaBlowfishFuncs.asp" -->
<!-- #include file="../AspFunctions/LogFuncs.asp" -->