SitePoint Sponsor

User Tag List

Page 1 of 2 12 LastLast
Results 1 to 25 of 30
  1. #1
    SitePoint Guru team1504's Avatar
    Join Date
    May 2010
    Location
    Okemos, Michigan, USA
    Posts
    732
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    Unhappy PHP RSS jQuery News Ticker problems

    Hello,
    I was setting up / designing a news ticker using PHP that feeds in headlines from an RSS feed.
    I asked the author for the files and he asked me to play with them to get them working in all browsers; however, upon uploading the unzipped archive he emailed me I am getting this error that says
    "Cannot find RSS feed file 'http://feeds2.feedburner.com/themeforest'

    Please refer to /readme.txt for configuration instructions. "


    However, that url is a valid url to a valid rss feed.

    This is the version I uploaded to my server (HERE). I uploaded it and have no alterations to any of the files.

    Here is the working version on their server

    I was wondering if someone here at sitepoint would be kind enough to help me get the files working so I can start making them all-browser compatible

    Here is the exact zip file that the author emailed me and I was hoping someone could upload it or check mine out and help me get it working as the author had it, here, so then I can help make the changes they requested.

    Also the error message, here, says Please refer to /readme.txt for configuration instructions. I did exactly that in a different directory on my server and encountered an missing class error. You can see the configured version on my server here.

    Thank you in advance, I hope that you can help me link to the RSS feed so that I can have this news ticker with fading headlines work!
    Please reply with any questions, comments, or solutions.
    I can apply and more clarification on my issue and I have provided all the code in the zipped file that I linked earlier in this post.


    Thanks and regards,
    Team 1504

  2. #2
    Theoretical Physics Student bronze trophy Jake Arkinstall's Avatar
    Join Date
    May 2006
    Location
    Lancaster University, UK
    Posts
    7,062
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)
    Chances are that remote file access isn't allowed on your server configuration.

    Are you on a server which allows editing of the PHP configuration?
    Jake Arkinstall
    "Sometimes you don't need to reinvent the wheel;
    Sometimes its enough to make that wheel more rounded"-Molona

  3. #3
    SitePoint Guru team1504's Avatar
    Join Date
    May 2010
    Location
    Okemos, Michigan, USA
    Posts
    732
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    Question

    Thanks for replying so soon.

    Do u mean remote file access is not allowed on the installations of the script on my server? So it can not access an rss feed that is on a different server?

    And if this is the problem how can I change it, like is it a file permission's problem or can It only parse an rss feed on my server?

    by editing PHP configuration do u mean changing the file permissions? Otherwise, what is it? So that I can check if I can change it I believe I should be allowed to do.

    I am not editing the script on their server, I am a external coder they asked to get their script working. So I do not have a login or access to their server that is why they emailed me the zip so I could have all the files.

    I hope I explained and answered your question about my issue correctly.

    Hope to hear from you soon

  4. #4
    Theoretical Physics Student bronze trophy Jake Arkinstall's Avatar
    Join Date
    May 2006
    Location
    Lancaster University, UK
    Posts
    7,062
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)
    The PHP configuration is stored in a PHP.ini file.

    If you have access to it, change a setting in there called allow_url_fopen to true, rather than false.

    If not... you may not have much luck. I can't be certain here, but I'm guessing that url fopen is disabled meaning the server won't read any external file.
    Jake Arkinstall
    "Sometimes you don't need to reinvent the wheel;
    Sometimes its enough to make that wheel more rounded"-Molona

  5. #5
    SitePoint Guru team1504's Avatar
    Join Date
    May 2010
    Location
    Okemos, Michigan, USA
    Posts
    732
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    Question

    Jake, is the PHP.ini file usually located in the root of my server?
    or where is it usually located?

  6. #6
    Theoretical Physics Student bronze trophy Jake Arkinstall's Avatar
    Join Date
    May 2006
    Location
    Lancaster University, UK
    Posts
    7,062
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)
    No, its usually higher up in the server's hierarchy.

    Try contacting your hosting provider to see if you can change allow_url_fopen.
    Jake Arkinstall
    "Sometimes you don't need to reinvent the wheel;
    Sometimes its enough to make that wheel more rounded"-Molona

  7. #7
    Programming Team silver trophybronze trophy
    Mittineague's Avatar
    Join Date
    Jul 2005
    Location
    West Springfield, Massachusetts
    Posts
    17,153
    Mentioned
    190 Post(s)
    Tagged
    2 Thread(s)
    I would consider using a different script or at least not following the instructions to the letter and adding some validation/filtering.

    Having allow_url_fopen set to TRUE can introduce security risk. In itself not a problem as long as you're 100% certain every script is secure.

    IMHO it would be better to use cURL instead of fopen().

    Also, and most importantly, the script instructs you to create a folder and set it's permissions to 777. This is a Major security risk. I have yet to see any app that absolutely needed permissions to be 777.

    Say for example you fetch a feed that has a script tag in it. This app will put the contents in the folder. The file can be read, written, and executed by anyone. And even if not, the contents will be written to the HTML page - including any script tags.

    Excellent app for an XSS attack.

  8. #8
    Theoretical Physics Student bronze trophy Jake Arkinstall's Avatar
    Join Date
    May 2006
    Location
    Lancaster University, UK
    Posts
    7,062
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)
    I thought Curl was bound by the same limitations when allow_url_fopen was disabled?

    Though it makes sense with the name. I figured that it simply disabled all remote-file grabbing.
    Jake Arkinstall
    "Sometimes you don't need to reinvent the wheel;
    Sometimes its enough to make that wheel more rounded"-Molona

  9. #9
    Programming Team silver trophybronze trophy
    Mittineague's Avatar
    Join Date
    Jul 2005
    Location
    West Springfield, Massachusetts
    Posts
    17,153
    Mentioned
    190 Post(s)
    Tagged
    2 Thread(s)
    I've had my site on DreamHost for a while. I used to have includes with absolute URLs (for my own feed on different depth pages) and they worked fine. Then DreamHost decided that for security allow_url_fopen would be disabled. My includes broke so I changed to cURL. DreamHost has since re-enabled allow_url_fopen but with PHP 5.2+ they now have allow_url_include disabled. So fopen(), file_get_contents() etc. will work with absolute URLs but include and require won't.

    I'm not a hacker so I don't know how something would be crafted - I think it has to do with dynamically created include lines. But it most definately has a lot to do with improperly validated/filtered user supplied input.

    So I think cURL is independent of allow_url_fopen, but it does require that cURL be enabled of course. Not sure why it would be more secure, but I imagine it's because cURL code tends to be more verbose and more deliberate than the comparitively simple fopen() code.

  10. #10
    SitePoint Guru team1504's Avatar
    Join Date
    May 2010
    Location
    Okemos, Michigan, USA
    Posts
    732
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    Exclamation

    Regarding the php.ini file
    I am now pretty sure that I do not have access to this as it is being hosted on a company's server, the hosting-company is 1&1 and the highest up I can go in the hierarchy is my site's root dir

    With the allow_url_fopen to false this means that the feed can not access external files because the feed uses PHP and apache which is running on my server right?
    The reason I can access alternate javascript library, like jQuery, is probably because html and js are client-side languages and do not involve the server as PHP does right?

    However, I plan to use this to interpret my RSS feed, which is on my blog on my server. So If I changed the RSS feed link in rss.php to the rss feed on my server should it work?


    Regarding the permission to 777, I noticed this as I usually see that the highest need and safe is 755 .
    I am not sure that this every script is secure.

    Also what is an XSS attack, I am guessing that is bad?

    Thanks for replying and I hope we can get this working

    Hope to hear form you soon and Thanks in advance!

    Regards,
    Team 1504

  11. #11
    Programming Team silver trophybronze trophy
    Mittineague's Avatar
    Join Date
    Jul 2005
    Location
    West Springfield, Massachusetts
    Posts
    17,153
    Mentioned
    190 Post(s)
    Tagged
    2 Thread(s)
    If it's for your own feed on your own server than using a relative URL should work just fine. AFAIK it's the "http://" that triggers the file wrapper needing to be allowed. And you should know if your own feed is malicious or not

    Although getting in the habit of validating and filtering content is not a bad thing IMHO even for only your own.

    As for permissions, I'm thinking 600 (user read write) might work and if not I don't see why 700 wouldn't be enough. Why would group or other need to access that folder? Seems the script is the only thing that really needs to.

  12. #12
    SitePoint Guru team1504's Avatar
    Join Date
    May 2010
    Location
    Okemos, Michigan, USA
    Posts
    732
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    Question

    yes i agree the user, guest, or browser should not have to access or write to the folder.

    This is the url to my RSS feed http://team1504.com/blog/?feed=rss2

    So would the relative url be /blog/?feed=rss2?

    sorry if that is a stupid question...
    And since both this rss feed, and therefore the blog it originates from, and the news ticker are in the same server it should work. Although they are in different directories in the root of the same folder. And should I have to edit any of the file permissions or is 755 or 666 or 644 good enough?

    Thanks will all your help!

    Regards and good night,
    Team 1504

  13. #13
    Programming Team silver trophybronze trophy
    Mittineague's Avatar
    Join Date
    Jul 2005
    Location
    West Springfield, Massachusetts
    Posts
    17,153
    Mentioned
    190 Post(s)
    Tagged
    2 Thread(s)
    Good question. I've never tried "friendly URLs" in include statements. My guess is you need to point to the file that the rewrite points to. I don't think the PHP parser goes through the server (i.e. makes an HTTP request) for relative paths and therefore won't recognize it. But you could try it and see I suppose.

  14. #14
    SitePoint Guru team1504's Avatar
    Join Date
    May 2010
    Location
    Okemos, Michigan, USA
    Posts
    732
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    Exclamation

    Hello,
    I updates the php files and added the relative url path.
    My RSS feed is located at http://team1504.com/blog/?feed=rss2
    Therefore since these php files are located in team1504.com/projects/newsfeed/
    the relative url would be:
    ../../blog/?feed=rss2

    I even uploaded an html file to the newsfeed directory and gave it the relative link above to see if it would link to my rss feed from that directory.
    Here is that file

    Here is it's code:

    My problem is that I still get the same error as it can not find the RSS feed in the uploaded script here
    Cannot find RSS feed file '../../blog/?feed=rss2'



    I even tried using this type of URL inclusion in the php files :
    Code PHP:
    $feed = ("../../blog/?feed=rss2") ;
    instead of
    Code PHP:
    $feed = '../../blog/?feed=rss2' ;

    and it still did not change anything so I changed it back.

    Also I tried the absolute http:// URL just to see if it would work because RSS feed is on my server as well the PHP script. However, that did not work as well so I changed it to the relative ../../blog/?feed=rss2 URL path.

    So did I do the relative URL thing correctly?
    or could there be something different that is causing the problem or another solution

    I hope you can help me and that I am not making any stupid mistakes.

    Thanks for all your help and Regards,
    Team 1504

  15. #15
    Programming Team silver trophybronze trophy
    Mittineague's Avatar
    Join Date
    Jul 2005
    Location
    West Springfield, Massachusetts
    Posts
    17,153
    Mentioned
    190 Post(s)
    Tagged
    2 Thread(s)
    Sorry, I wasn't clear enough before.

    There are absolute and relative paths
    http://domain.com/file.php ~ ../file.php

    And there are virtual and physical paths
    http://domain.com/blog/index.php?admin ~ http://domain.com/blog/admin/index.php

    AFAIK, the server can deal with virtual paths, but the PHP engine can deal with both virtual and physical paths.

    In this case I think you need to use the relative physical path to whatever file outputs the feed. eg. in WordPress something like
    ../../blog/wp-content/feed-rss2.php

  16. #16
    SitePoint Guru team1504's Avatar
    Join Date
    May 2010
    Location
    Okemos, Michigan, USA
    Posts
    732
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    Question

    Okay so I figured out that the physical path to my RSS file is both
    team1504.com/blog/wp-rss.php
    team1504.com/blog/wp-rss2.php

    The differences I saw in the rss files was that the prior had more spacing between title and post while the second had less spacing but date of posting.


    Therefore the relative path from the /projects/newsfeed/ directory would be
    ../../blog/wp-rss2.php

    So i added this new rss feed path to the php files and it worked! kind of

    Have a look for yourself here

    so what happened is that there is not an error that says the feed can not be found and the headlines bars are appearing; however,
    No headlines are appearing....

    So I believe there is a problem with the PHP parsing the rss feed titles ? That is why nothing is showing up?

    Could you help me diagnosis why this is happening and help me solve it?

    Thanks for all your help and I hope you can help me get this script working even though the original problem, the feed can not be found, which the topic was based off of has been solved... ?

    Regards,
    Team 1504

  17. #17
    Programming Team silver trophybronze trophy
    Mittineague's Avatar
    Join Date
    Jul 2005
    Location
    West Springfield, Massachusetts
    Posts
    17,153
    Mentioned
    190 Post(s)
    Tagged
    2 Thread(s)
    The wp-rss2.php file is deprecated and all it does now is redirect. If you have the default installation set-up try
    ../../blog/wp-includes/feed-rss2.php
    if not, wherever the feed-rss2.php file is.

  18. #18
    SitePoint Guru team1504's Avatar
    Join Date
    May 2010
    Location
    Okemos, Michigan, USA
    Posts
    732
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    Question

    hmm so upon looking in team1504.com/blog/wp-content/
    I found the following
    index.php
    a the directories: plugins, themes, upgrade, and uploads

    I believe I did the standard installation tho, so shouldn't the wp-rss2.php file be in the wp-content dir?

    In the root directory of my blog, however, I have wp-rss.php and a wp-rss2.php among the folders wp-admin/ , wp-content/ , and wp-includes/
    and multiple other files such as the license read-me, and index.php

    So since you said wp-rss2.php is deprecated does that mean I should upgrade my wordpress version?
    I do also have a wp-rss.php file in the same dir as wp-rss2.php

    and both of those files when put into the address bar link to my RSS feed
    so http://team1504.com/blog/wp-rss.php
    http://team1504.com/blog/wp-rss2.php


    I am confused in that I thought I was linking to the location of the wp-rss2.php file with the realtive URL ../../blog/wp-rss2.php
    ?

    should I or can I copy and paste the wp-rss2.php file to wp-content and then
    link to it using ../../blog/wp-content/wp-rss2.php ?

    Also what is up with the wp-rss.php file, is this the proper file or is it another deprecated file that links?

    I hope I cleared things up so that you can help me!

    Thanks in advance, good night, and Regards,
    Team 1504

    Edit: I do have the latest version of wordpress so why should my files be outdated or deprecated ?
    Last edited by team1504; May 25, 2010 at 19:52. Reason: /****I checked what Wordpress version I have***** /

  19. #19
    Programming Team silver trophybronze trophy
    Mittineague's Avatar
    Join Date
    Jul 2005
    Location
    West Springfield, Massachusetts
    Posts
    17,153
    Mentioned
    190 Post(s)
    Tagged
    2 Thread(s)
    Sorry, that was my stupid bonehead mistake. It's in the wp-includes folder not the wp-content folder :d'oh: I don't know what I was thinking (actually I do - about getting some supper)

    The current version contains files and functions that are deprecated to maintain backwards compatability. That is, themes and plugins that use them will still work (usually) but this is a way of giving people time to fix things so that when WordPress stops having them there for backwards compatability, most things will be ready for the event without total chaos.

  20. #20
    SitePoint Guru team1504's Avatar
    Join Date
    May 2010
    Location
    Okemos, Michigan, USA
    Posts
    732
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    Exclamation

    lol supper can be pretty appetizing...

    I began searching through my wp-includes folder and failed to find the wp-rss2.php file
    Here is the listing i made of its contents in my server
    In the above link, I highlighted the files that I think may contribute to or be the rssfeed's php file

    They are:
    deprecated.php
    feed-atom-comments.php
    feed-atom.php
    feed-rdf.php
    feed-rss.php
    feed-rss2-comments.php
    feed-rss2.php
    feed.php
    rss-functions.php
    rss.php

    So would any of those be it? And since I could not find the wp-rss2.php file in /wp-includes/ then should I copy it there, but it is deprecated and only links to the rss php file so probably not right?

    The one thing I noticed though is that when I went to some of them in my browser I encountered errors, but my blog and rss feed are working fine.

    For exmaple,
    In feed-atom-comments.php it was:
    Fatal error: Call to undefined function feed_content_type() in /homepages/9/d197248293/htdocs/blog/wp-includes/feed-atom-comments.php on line 8

    in feed-atom.rss it was:
    Fatal error: Call to undefined function feed_content_type() in /homepages/9/d197248293/htdocs/blog/wp-includes/feed-rss.php on line 8


    And in rss.php it was:
    Fatal error: Call to undefined function do_action() in /homepages/9/d197248293/htdocs/blog/wp-includes/rss.php on line 18

    could I just be seeing these errors because the file permissions are set to 644 and I do not have permission to see what they output?

    So that is what I found in /wp-includes/
    and I was hoping that you could help me find which file it is or should be

    Thanks for all your help, I really appreciate it!
    Hear from you soon

    Regards,
    Team 1504

  21. #21
    Programming Team silver trophybronze trophy
    Mittineague's Avatar
    Join Date
    Jul 2005
    Location
    West Springfield, Massachusetts
    Posts
    17,153
    Mentioned
    190 Post(s)
    Tagged
    2 Thread(s)
    The file isn't wp-rss2.php, it's feed-rss2.php

    I don't know but I think those errors are because you are going to an "included" file. For example if feed-rss2.php assigns a value to a variable or defines a function or includes other files that do so, all that needs to be "together" so everything know about everything else. If you don't go to the "main" one you're only going to get pieces of what's needed.

  22. #22
    SitePoint Guru team1504's Avatar
    Join Date
    May 2010
    Location
    Okemos, Michigan, USA
    Posts
    732
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    Unhappy

    Mittineague,
    I changed the RSS feed's relative URL path to the following:
    Code PHP:
    $feed = '../../blog/wp-includes/feed-rss2.php';

    However, nothing is being shown or parsed in the script, but the rss feed not found error is not showing...

    You can check it out for yourself here



    Do u have any ideas on why the script is not working?
    or suggestions on what I should do. I double-checked to make sure I was not making any stupid mistakes and the current version of the files with the URL to wp-includes is on my server

    Thank you for all your help and Regards,
    Hear from you soon!
    Team 1504

  23. #23
    Programming Team silver trophybronze trophy
    Mittineague's Avatar
    Join Date
    Jul 2005
    Location
    West Springfield, Massachusetts
    Posts
    17,153
    Mentioned
    190 Post(s)
    Tagged
    2 Thread(s)
    Well, it was worth a try. But I can see it's going to be more involved. The view-source for that page shows
    HTML Code:
    		<h3>Fade Headline Effect (with jQuery Hover)</h3>
    
            <p></p>
    		<div class='bubbleInfo'><div id='news' class='trigger'><div class='title'><b>Latest Headlines</b>&nbsp;|&nbsp;</div><div id='headline'><span class='item'>
    					<a href="<?php the_permalink_rss() ?>"><?php the_title_rss() ?></a>
    					<span class='popup'><![CDATA[<?php the_excerpt_rss() ?>]]></span>
    				</span></div><div style='clear: both;'></div></div></div>        
        <br />
    	
            <h3>Slide Headline Effect</h3>
            <p></p>
    
            <div id="news"><div class='title'><b>Latest Headlines</b>&nbsp;|&nbsp;</div><div id='headline_slide'><span class='item'><a href="<?php the_permalink_rss() ?>"><?php the_title_rss() ?></a></span></div><div style='clear: both;'></div></div>
    	</div>
    so you can see the PHP code isn't being parsed.

    I'll move this to the WordPress forum where there's a better chance someone might already have solved it, and I'l try getting it to work on my localhost test blog when I get a chance (it's lunch time!)

  24. #24
    Programming Team silver trophybronze trophy
    Mittineague's Avatar
    Join Date
    Jul 2005
    Location
    West Springfield, Massachusetts
    Posts
    17,153
    Mentioned
    190 Post(s)
    Tagged
    2 Thread(s)
    I copied the files over to my localhost test blog. And tried the Absolute Virtual path first in the script's rss.php and rss_slide.php files
    PHP Code:
    $feed 'http://localhost/testblog/?feed=rss2'
    It worked fine, but I have allow_url_fopen set to true.
    I then tried it using the Relative Physical path, but got the same as you - the PHP wasn't parsed.

    I'm guessing it has something to do with the fact that WordPress uses templating and the rss feed needs to be by an HTTP request because of the "fancy URL" - so include won't work (at least not easily enough for me to want to figure out how to do it).

    Rather than trying to figure out how to re-write everything into a plugin that will work with the WordPress "hooks", I think the easy way out will be to hack the lastRSS.php file so it uses cURL instead of fopen(). i.e.

    Code PHP:
    	function Parse ($rss_url) {
    		// Open and load RSS file
    /*
    		if ($f = @fopen($rss_url, 'r')) {
    			$rss_content = '';
    			while (!feof($f)) {
    				$rss_content .= fgets($f, 4096);
    			}
    			fclose($f);
    */
    /* begin replacement code */
    		if ( function_exists('curl_init') ) {
    		$ch = curl_init();
    		$timeout = 30; // in seconds, arbitrary, set to zero for no timeout
    		curl_setopt ($ch, CURLOPT_URL, $rss_url);
    		curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
    		curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
    		$rss_content = curl_exec($ch);
    		curl_close($ch);
    /* end replacement code */
    			// Parse document encoding
    			$result['encoding'] = $this->my_preg_match("'encoding=[\'\"](.*?)[\'\"]'si", $rss_content);
    			// if document codepage is specified, use it
    			if ($result['encoding'] != '')
    I tried it with the include 'http://..../?feed=..' syntax and it worked OK for me.

  25. #25
    SitePoint Guru team1504's Avatar
    Join Date
    May 2010
    Location
    Okemos, Michigan, USA
    Posts
    732
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    Smile

    just to make sure. The code you have there
    I should replace the begining of the Parse ($rss_url) function which begins at line 133 until the line 145 with the code that you put in the above post.

    In other words
    Replace this:
    Code PHP:
    function Parse ($rss_url) {
    		// Open and load RSS file
    		if ($f = @fopen($rss_url, 'r')) {
    			$rss_content = '';
    			while (!feof($f)) {
    				$rss_content .= fgets($f, 4096);
    			}
    			fclose($f);
     
    			// Parse document encoding
    			$result['encoding'] = $this->my_preg_match("'encoding=[\'\"](.*?)[\'\"]'si", $rss_content);
    			// if document codepage is specified, use it
    			if ($result['encoding'] != '')

    with this

    Code PHP:
    function Parse ($rss_url) {
            // Open and load RSS file
    /*
            if ($f = @fopen($rss_url, 'r')) {
                $rss_content = '';
                while (!feof($f)) {
                    $rss_content .= fgets($f, 4096);
                }
                fclose($f);
    */
    /* begin replacement code */
            if ( function_exists('curl_init') ) {
            $ch = curl_init();
            $timeout = 30; // in seconds, arbitrary, set to zero for no timeout
            curl_setopt ($ch, CURLOPT_URL, $rss_url);
            curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
     
    right?
     
    Thanks for testing it on your server!
     
    Regards,
           Team 1504
            curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
            $rss_content = curl_exec($ch);
            curl_close($ch);
    /* end replacement code */
                // Parse document encoding
                $result['encoding'] = $this->my_preg_match("'encoding=[\'\"](.*?)[\'\"]'si", $rss_content);
                // if document codepage is specified, use it
                if ($result['encoding'] != '')


Tags for this Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •