One more RSS Feed MOD (RSS Snitz Multiple Feed) - Posted (12703 Views)
Junior Member
balexandre
Posts: 418
418
I always wanted to give users (well, myself!) a way to subscribe a Topic, Forum, Category, or All of the above RSS Feed, kinda like, if you are in a topic, you can subscribe the Feed for that topic, that topic's Forum, that category's Forum, and all of it.
So, this dawn I just did it and give to Marcel (www.oxle.com) as well because as I said before, I wanted this to my own wink
the code of the <b>rssFeed.asp</b> file can be found here
and this is the code header:

Code:
' ##############################################################################################
' # RSS Snitz Multiple Feed
' ##############################################################################################

' ##############################################################################################
' # Coded by: Bruno Alexandre < bruno.in.dk [at] gmail.com >
' # Last Update date: Saturday, 7 August 2010
' #
' # This RSS Feed is valid to all Categories, Forums and Topcis, Specific Category,
' # specific Forum and Specific Topic
' # To use just pass the Cat_ID or Forum_ID or Topic_ID in the URL
' #
' # Examples:
' #
' # rssFeed.asp Default Mode: Shows all categories, forums, topics, replies
' # rssFeed.asp?Cat_ID=321 category Mode: Shows all forums, topics and replies for that Category
' # rssFeed.asp?Forum_ID=321 Forum Mode: Shows all topics, replies for that Forum
' # rssFeed.asp?Topic_ID=123 Topic Mode: Shows all replies for that Topic
' #
' # Usage:
' # Rename the file to rssFeed.asp
' #
' # <link rel="alternate" type="application/rss+xml" title="Fórum GAPE (All public)" href="http://www.mysnitzforum.com/rssFeed.asp" />
' # <link rel="alternate" type="application/rss+xml" title="Fórum GAPE (Category)" href="http://www.mysnitzforum.com/rssFeed.asp?url=category,123" />
' # <link rel="alternate" type="application/rss+xml" title="Fórum GAPE (Forum)" href="http://www.mysnitzforum.com/rssFeed.asp?url=forum,123" />
' # <link rel="alternate" type="application/rss+xml" title="Fórum GAPE (Topic)" href="http://www.mysnitzforum.com/rssFeed.asp?url=topic,123" />
' #
' # Replace 123 with the
' # Request.QueryString("Cat_ID")
' # Request.QueryString("Forum_ID")
' # Request.QueryString("Topic_ID")
' # according
' #
' ##############################################################################################

' ##############################################################################################
' # v.1.2 (07.Aug.2010): Added ability to not display replies (only Topics)
' # Changed encode to UTF-8, instead ISO-8859-1
' # v.1.1 (06.Dec.2008): Added Encode, Decode url parameters
' # Will show only public forums
' # v.1.0 (05.Dec.2008): Hello World!
' ##############################################################################################

to use this, all you need is to edit and add the LINK tag to the <b>inc_header.asp</b>

You can add the below code to inc_header.asp after the SNITZ FORUMS 2000 LICENSE AGREEMENT ending around line 230

Code:
' ###########################################################################
' # RSS Snitz Multiple Feed MOD by Bruno Alexandre
' # Snitz Topic in: http://forum.snitz.com/forum/topic.asp?TOPIC_ID=67930
' ###########################################################################

Dim feedType, feedAvailable, queryID, rssCategoryID, rssForumID
Dim rssTopicID, rssCategoryTitle, rssForumTitle, rssTopicTitle

rssCategoryID = ""
rssForumID = ""
rssTopicID = ""
rssCategoryTitle = ""
rssForumTitle = ""
rssTopicTitle = ""
feedAvailable = true

if Request.QueryString("cat_id") <> "" then
feedType = "category"
queryID = Request.QueryString("cat_id")
elseif Request.QueryString("forum_id") <> "" then
feedType = "forum"
queryID = Request.QueryString("forum_id")
elseif Request.QueryString("topic_id") <> "" then
feedType = "topic"
queryID = Request.QueryString("topic_id")
end if

if feedType <> "" then
strSql = ""
strSql = strSql & "SELECT "
if feedType = "category" or feedType = "forum" or feedType = "topic" then strSql = strSql & "c.CAT_ID, c.CAT_NAME, "
if feedType = "forum" or feedType = "topic" then strSql = strSql & "f.FORUM_ID, f.F_SUBJECT, "
if feedType = "topic" then strSql = strSql & "t.TOPIC_ID, t.T_SUBJECT, "
strSql = strSql & "f.F_PRIVATEFORUMS, "
strSql = Left(strSql, Len(strSql) - 2)
strSql = strSql & " FROM "
if feedType = "category" or feedType = "forum" or feedType = "topic" then strSql = strSql & "FORUM_CATEGORY AS c, "
if feedType = "forum" or feedType = "topic" then strSql = strSql & "FORUM_FORUM AS f, "
if feedType = "topic" then strSql = strSql & "FORUM_TOPICS AS t, "
if feedType = "category" then strSql = strSql & "FORUM_FORUM AS f, "
strSql = Left(strSQL, Len(strSql) - 2)
strSql = strSql & " WHERE "
if feedType = "category" then strSql = strSql & "f.CAT_ID = c.CAT_ID "
if feedType = "forum" or feedType = "topic" then strSql = strSql & "c.CAT_ID = f.CAT_ID "
if feedType = "topic" then strSql = strSql & "AND f.FORUM_ID = t.FORUM_ID "
strSql = strSql & "AND f.F_PRIVATEFORUMS = 0 "
if feedType = "category" then strSql = strSql & "AND c.CAT_ID = " & Request.QueryString("Cat_ID") & ";"
if feedType = "forum" then strSql = strSql & "AND f.FORUM_ID = " & Request.QueryString("Forum_ID") & ";"
if feedType = "topic" then strSql = strSql & "AND t.TOPIC_ID = " & Request.QueryString("Topic_ID") & ";"

set rs = Server.CreateObject("ADODB.Recordset")
rs.open strSql, my_Conn

if rs.EOF then
feedAvailable = false
else
if feedType = "category" or feedType = "forum" or feedType = "topic" then
rssCategoryID = rs("CAT_ID")
rssCategoryTitle = rs("CAT_NAME")
else
rssCategoryID = ""
rssCategoryTitle = ""
end if
if feedType = "forum" or feedType = "topic" then
rssForumID = rs("FORUM_ID")
rssForumTitle = rs("F_SUBJECT")
else
rssForumID = ""
end if
if feedType = "topic" then
rssTopicID = rs("TOPIC_ID")
rssTopicTitle = rs("T_SUBJECT")
else
rssTopicID = ""
rssTopicTitle = ""
end if
end if

rs.close
set rs = nothing
end if

Response.Write "<link rel=""alternate"" type=""application/rss+xml"" title=""" & strForumTitle & " (All public)"" href=""" & strForumURL & "/rssFeed.asp"" />"

if feedAvailable then
if isNumeric(rssCategoryID) Then Response.Write "<link rel=""alternate"" type=""application/rss+xml"" title=""" & strForumTitle & " (Category: " & rssCategoryTitle & ")"" href=""" & strForumURL & "/rssFeed.asp?url=" & Encode("category," & rssCategoryID) & """ />"
if isNumeric(rssForumID) Then Response.Write "<link rel=""alternate"" type=""application/rss+xml"" title=""" & strForumTitle & " (Forum: " & rssForumTitle & ")"" href=""" & strForumURL & "/rssFeed.asp?url=" & Encode("forum," & rssForumID) & """ />"
if isNumeric(rssTopicID) Then Response.Write "<link rel=""alternate"" type=""application/rss+xml"" title=""" & strForumTitle & " (Topic: " & rssTopicTitle & ")"" href=""" & strForumURL & "/rssFeed.asp?url=" & Encode("topic," & rssTopicID) & """ />"
end if

Function Encode(sIn)
dim x, y, abfrom, abto
Encode="": ABFrom = ""
For x = 0 To 25: ABFrom = ABFrom & Chr(65 + x): Next
For x = 0 To 25: ABFrom = ABFrom & Chr(97 + x): Next
For x = 0 To 9: ABFrom = ABFrom & CStr(x): Next
abto = Mid(abfrom, 14, Len(abfrom) - 13) & Left(abfrom, 13)
For x=1 to Len(sin): y = InStr(abfrom, Mid(sin, x, 1))
If y = 0 Then
Encode = Encode & Mid(sin, x, 1)
Else
Encode = Encode & Mid(abto, y, 1)
End If
Next
End Function

' # End RSS Snitz Multiple Feed MOD
' ###########################################################################

A <b><font color="red">live example</font id="red"></b> can be found here:
http://www.balexandre.com/sf2k_v34_06/

you can always just use it in the normal RSS Feed way, just, this gives you much more options.
fell free to criticize smile
 Sort direction, for dates DESC means newest first  
 Page size 
Posted
Advanced Member
Etymon
Posts: 2396
2396
Oh boy ... I have permission to criticize!!! evil
I think it is a GREAT MOD IDEA! THANKS!!! bigsmile<
Posted
Average Member
SiSL
Posts: 671
671
Question tho: By guessing ForumID or CategoryID, can users reach to forums and categories or even threads they don't have access to? <
Posted
Support Moderator
Shaggy
Posts: 6780
6780
Haven't added the script but I cursory glance would suggest that they can.
<
Search is your friend “I was having a mildly paranoid day, mostly due to the
fact that the mad priest lady from over the river had
taken to nailing weasels to my front door again.”
Posted
Junior Member
balexandre
Posts: 418
418
Originally posted by SiSL
Question tho: By guessing ForumID or CategoryID, can users reach to forums and categories or even threads they don't have access to?

A straight answer: Yes!
But one can only Subscribe a topic that one can see, unless they hack it (changing the Cat_ID, Forum_ID or Topic_ID, but for that you can prevent them to read the message content:
Code:
vgShowFullPost	= false
vgShowMaxChars = 0

that will only give the topic name and that is all, soon they click "read more" link from there Rss Reader, the Forum will ask them to login and give an error for that topic to be read smile
is this ok?<
Posted
Junior Member
balexandre
Posts: 418
418
I just remember ... I can always encode the QueryString and pass the user ID as well, and this will prevent any other user that does not have access to the message to retrieve it, and any other bad user to hack the encoded URL, unless one knows the encoding password.
Does this help(of course it will help, but, is this ok for you SiSL)? to everyone else, should I do this?<
Posted
Average Member
SiSL
Posts: 671
671
Well, may be you may place a forum cookie check before XML Response, so if user did not checked "Save password", they may not reach the topics... If they do and have access they could... ;)

Based on QueryStrings, some problematic users can always think they hacked(!) it and see (for example Moderator boards a topic called: Should we ban 'SiSL'?") ofcourse as you said, there is always chance to shut them down manually but hey, in the end, why not perfectise it while you are at it :)
<
Posted
Junior Member
balexandre
Posts: 418
418
Cookies are never a good idea...
Imagine that the user opens the Google reader only in an online caffe. He will never see new topics/messages/replies because the lack of the cookie

if the RSS Feed is something like

http://www.mydomain.com/rssFedd.asp?url=wtey7866twWTY812Byh3xxwe

then what can the User do?
he is subscribing to that URL, and that contains Topic, Category, Forum and even UserID so the rssFeed script can hide from him all the foruns, replies, etc that he can not access from Snitz Forum

how about that?
I did inplemented this approach in a client website to send the correct officeID and date gap in order to see a PDF report or see the report online, for my prespective, it's the safer route.<
Posted
Junior Member
balexandre
Posts: 418
418
Updated to v.1.1

With this version there are Good News and Bad News...
the bads
  • I almost killed myself looking for a free way to Encode/Decode strings in Classic ASP (with a user password) but I found nothing! (ASP.NET has this in the framwork, so it will be esier to implement such feature in the ASP.NET version of Snitz
  • For this I do not use UserID on the parameter
the goods
  • I still encode the feed type and the feed ID (Cat_ID, Forum_ID, Topic_ID)
  • I do not show messages in the RSS that the forum is not public (as you can see in the live example)
  • The MOD is free to everyone bigsmile
<
Posted
Forum Moderator
AnonJr
Posts: 5768
5768
There's another RSS MOD floating around out there that does pass a partial hash of the password. Might be worth looking into.<
You Must enter a message