All pastes #1023562 Raw Edit

Anonymous

public text v1 · immutable
#1023562 ·published 2008-05-20 06:42 UTC
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" -->