Profile
MAJ is an Open Source, PHP-based content management system (CMS) that can be deployed as a blog, bulletin or message board, Internet forum, and wiki. It is extensible via PHP panels and is HTML5 and CSS3 ready.
Git
This blob has been accessed 934 times via Git panel.

  1. <?php
  2.  
  3. // 201001110322 - Valid RSS 0.91, 1.0, 2.0
  4.  
  5. error_reporting(E_ERROR);
  6.  
  7. require("core.php");
  8.  
  9. if (file_exists("data/offset.txt")) {
  10.         $offset = file_get_contents("data/offset.txt");
  11. }
  12. else {
  13.         $offset = 0;
  14. }
  15.  
  16. if (isset($_REQUEST['ver']) and !empty($_REQUEST['ver'])) {
  17.  
  18.         $title = file_get_contents("data/title.txt");
  19.         $title = strip_tags($title);
  20.         $title = htmlspecialchars($title,ENT_QUOTES);
  21.  
  22.         $description = file_get_contents("data/profile.php");
  23.         $description = strip_tags($description);
  24.         $description = htmlspecialchars($description,ENT_QUOTES);
  25.  
  26.         if (file_exists("data/increase.txt")) {
  27.                 $increase = file_get_contents("data/increase.txt");
  28.         }
  29.         else {
  30.                 $increase = 5;
  31.         }
  32.  
  33.         $link = $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . "/";
  34.         $link = str_replace('//', '/', $link);
  35.         $link = "http://" . $link;
  36.  
  37.         $fix_link = array('//index.php', '///index.php');
  38.  
  39.         $feeds = $increase;
  40.  
  41.         if ($dh_rss_items = opendir("data/items")) {
  42.  
  43.                 while (($entry_rss_items = readdir($dh_rss_items)) !== false) {
  44.  
  45.                         $today = date("YmdHis", time() + $offset);
  46.        
  47.                         if (($entry_rss_items > $today) and (!isset($_SESSION['logged_in']) or ($_SESSION['logged_in'] != $login_username))) {
  48.                                 continue;
  49.                         }
  50.  
  51.                         $private = "0";
  52.  
  53.                         if (file_exists("data/items/$entry_rss_items/categories")) {
  54.                        
  55.                                 if ($dh_cat_rss = opendir("data/items/$entry_rss_items/categories")) {
  56.                        
  57.                                         while (($entry_cat_rss = readdir($dh_cat_rss)) !== false) {
  58.                        
  59.                                                 if ($entry_cat_rss != "." && $entry_cat_rss != "..") {
  60.                        
  61.                                                         if (file_exists("data/categories/$entry_cat_rss/private.txt")) {
  62.                                                                 $private = $private + 1;
  63.                                                         }
  64.                                                 }
  65.                                         }
  66.                                         closedir($dh_cat_rss);
  67.                                 }
  68.                         }
  69.  
  70.                         if (($private > 0) and !file_exists("data/items/$entry_rss_items/cat.txt")) {
  71.                                 continue;
  72.                         }
  73.  
  74.                         if (file_exists("data/items/$entry_rss_items/passwd.txt")) {
  75.                                 continue;
  76.                         }
  77.  
  78.                         if (file_exists("data/items/$entry_rss_items/member.txt")) {
  79.                                 continue;
  80.                         }
  81.  
  82.                         if (isset($_REQUEST['cat']) and !empty($_REQUEST['cat']) and file_exists("data/categories/{$_REQUEST['cat']}") and !file_exists("data/items/$entry_rss_items/categories/{$_REQUEST['cat']}")) {
  83.                                         continue;
  84.                         }
  85.  
  86.                         if (isset($_REQUEST['cat']) and !empty($_REQUEST['cat']) and !file_exists("data/categories/{$_REQUEST['cat']}")) {
  87.                                         continue;
  88.                         }
  89.  
  90.                         if ($entry_rss_items != "." && $entry_rss_items != ".." && fnmatch("*", $entry_rss_items) && !file_exists("data/items/$entry_rss_items/private.txt") && !file_exists("data/items/$entry_rss_items/members")) {
  91.                                 $show_rss_items[] = $entry_rss_items;
  92.                         }
  93.                 }
  94.                 closedir($dh_rss_items);
  95.         }
  96.  
  97.         rsort($show_rss_items);
  98.  
  99.         $count_rss_items = count($show_rss_items);
  100.  
  101.         if ($count_rss_items < $feeds) {
  102.                 $feeds = $count_rss_items;
  103.         }
  104.  
  105.         if ($count_rss_items > 0) {
  106.  
  107.                 header('Content-type: application/xml');
  108.  
  109.                 echo "<?xml version=\"1.0\"?>\n";
  110.  
  111.                 if ($_REQUEST['ver'] == "2.0") {
  112.  
  113.                         $rss20_count = fread("data/rss-2.0.txt");
  114.                         $rss20_count = $rss20_count + 1;
  115.  
  116.                         $rss20_file = fopen("data/rss-2.0.txt", "w");
  117.                         fwrite($rss20_file, $rss20_count);
  118.                         fclose($rss20_file);
  119.  
  120.                         echo "<rss version=\"2.0\" xmlns:atom=\"http://www.w3.org/2005/Atom\">\n";
  121.                         echo "<channel>\n";
  122.                         echo "<title>$title</title>\n";
  123.                         echo "<link>$link</link>\n";
  124.                         echo "<description>$description</description>\n";
  125.                         echo "<atom:link href=\"{$link}rss.php?ver={$_REQUEST['ver']}\" rel=\"self\" type=\"application/rss+xml\" />\n";
  126.                 }
  127.  
  128.                 if ($_REQUEST['ver'] == "1.0") {
  129.  
  130.                         $rss10_count = file_get_contents("data/rss-1.0.txt");
  131.                         $rss10_count = $rss10_count + 1;
  132.  
  133.                         $rss10_file = fopen("data/rss-1.0.txt", "w");
  134.                         fwrite($rss10_file, $rss10_count);
  135.                         fclose($rss10_file);
  136.  
  137.                         echo "<rdf:RDF\n";
  138.                         echo "xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"\n";
  139.                         echo "xmlns=\"http://purl.org/rss/1.0/\"\n";
  140.                         echo "xmlns:dc=\"http://purl.org/dc/elements/1.1/\"\n";
  141.                         echo ">\n";
  142.                         echo "<channel rdf:about=\"$link\">\n";
  143.                         echo "<title>$title</title>\n";
  144.                         echo "<link>$link</link>\n";
  145.                         echo "<description>$description</description>\n";
  146.                         echo "<items>\n";
  147.                         echo "<rdf:Seq>\n";
  148.  
  149.                         $increment_rss_entries = 0;
  150.                         $show_rss_entries = $feeds - 1;
  151.  
  152.                         while ($increment_rss_entries <= $show_rss_entries) {
  153.                                 $link = "http://" . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . "/index.php?entry=$show_rss_items[$increment_rss_entries]";
  154.                                 $link = str_replace($fix_link, '/index.php', $link);
  155.                                 echo "<rdf:li rdf:resource=\"$link\"/>\n";
  156.                                 $increment_rss_entries = $increment_rss_entries + 1;
  157.                         }
  158.  
  159.                         echo "</rdf:Seq>\n";
  160.                         echo "</items>\n";
  161.                         echo "</channel>\n";
  162.                 }
  163.  
  164.                 if ($_REQUEST['ver'] == "0.91") {
  165.  
  166.                         $rss091_count = file_get_contents("data/rss-0.91.txt");
  167.                         $rss091_count = $rss091_count + 1;
  168.  
  169.                         $rss091_file = fopen("data/rss-0.91.txt", "w");
  170.                         fwrite($rss091_file, $rss091_count);
  171.                         fclose($rss091_file);
  172.  
  173.                         echo "<rss version=\"0.91\">\n";
  174.                         echo "<channel>\n";
  175.                         echo "<title>$title</title>\n";
  176.                         echo "<link>$link</link>\n";
  177.                         echo "<description>$description</description>\n";
  178.                 }
  179.  
  180.                 $increment_rss_entries = 0;
  181.                 $show_rss_entries = $feeds - 1;
  182.  
  183.                 while ($increment_rss_entries <= $show_rss_entries) {
  184.  
  185.                         $title = file_get_contents("data/items/$show_rss_items[$increment_rss_entries]/title.txt");
  186.                         $title = strip_tags($title);
  187.                         $title = htmlspecialchars($title,ENT_QUOTES);
  188.  
  189.                         $link = "http://" . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . "/index.php?entry=$show_rss_items[$increment_rss_entries]";
  190.                         $link = str_replace($fix_link, '/index.php', $link);
  191.  
  192.                         $description = file_get_contents("data/items/$show_rss_items[$increment_rss_entries]/body.txt");
  193.                         $description = strip_tags($description);
  194.                         $description = htmlspecialchars($description,ENT_QUOTES);
  195.  
  196.                         if (file_exists("data/pf.txt") and file_exists("data/pf-badwords.txt")) {
  197.  
  198.                                 $badwords = file_get_contents("data/pf-badwords.txt");
  199.  
  200.                                 if (file_exists("data/pf-censor.txt")) {
  201.                                         $censor = file_get_contents("data/pf-censor.txt");
  202.                                 }
  203.                                 else {
  204.                                         $censor = "[expletive]";
  205.                                 }
  206.                                 $description = preg_replace("/\b($badwords)\b/i",$censor,$description);
  207.                         }
  208.  
  209.                         if ($_REQUEST['ver'] == "1.0") {
  210.                                 echo "<item rdf:about=\"$link\">\n";
  211.                         }
  212.                         else {
  213.                                 echo "<item>\n";
  214.                         }
  215.  
  216.                         echo "<title>$title</title>\n";
  217.                         echo "<link>$link</link>\n";
  218.  
  219.                         if ($_REQUEST['ver'] != "1.0") {
  220.                                 echo "<guid>$link</guid>\n";
  221.                         }
  222.  
  223.                         echo "<description>$description</description>\n";
  224.                         echo "</item>\n";
  225.  
  226.                         $increment_rss_entries = $increment_rss_entries + 1;
  227.                 }
  228.  
  229.                 if ($_REQUEST['ver'] != "1.0") {
  230.                         echo "</channel>\n";
  231.                         echo "</rss>";
  232.                 }
  233.                 else {
  234.                         echo "</rdf:RDF>";
  235.                 }
  236.         }
  237. }
  238.  
  239. ?>
  240.  
Credits
Sunday, Sep 18, 2005, 12:00 AM (Revision 11 - Thursday, Jul 14, 2011, 7:30 PM)
Open Source enables software developers to stand on the shoulders of giants instead of reinventing the wheel, so to speak. Kudos and many thanks to the folks who made their work freely available for reuse in MAJ.

read more
Bugs and Exploits
Friday, Aug 26, 2005, 12:00 AM (Revision 23 - Wednesday, May 29, 2013, 5:25 AM)
Although MAJ started as a family project, care has been taken to make it as "safe" as possible. With more people now working on MAJ, bugs and exploitable code may sometimes slip in. We invite you to poke around and see if you can find any. Generally, there are two things you can do when you find a MAJ or PHP-related bug or exploit:

1. Take advantage of it. But hey, what's so exciting about messing up someone's blog? Ho-hum, right?
2. Report it here so that we can work on a fix and make MAJ better.

read more
Search
Download
MAJ 2.0
75 files
33012 downloads
MAJ 1.0
26 files
13144 downloads
MAJ 0.14
45 files
35026 downloads