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 729 times via Git panel.

  1. <?php
  2.  
  3. error_reporting(E_ERROR);
  4.  
  5.         function stripslashes_array($data) {
  6.                 if (is_array($data)){
  7.                          foreach ($data as $key => $value){
  8.                                   $data[$key] = stripslashes_array($value);
  9.                          }
  10.                          return $data;
  11.                 }
  12.                 else{
  13.                          return stripslashes($data);
  14.                 }
  15.         }
  16.  
  17.         $_REQUEST = stripslashes_array($_REQUEST);
  18. }
  19.  
  20. if (isset($_REQUEST['ver']) and !empty($_REQUEST['ver'])) {
  21.         $title_file = "data/title.txt";
  22.         $fp_title = fopen($title_file, "r");
  23.         $title = fread($fp_title, filesize($title_file));
  24.         fclose($fp_title);
  25.         $description_file = "data/profile.php";
  26.         $fp_description = fopen($description_file, "r");
  27.         $description = fread($fp_description, filesize($description_file));
  28.         fclose($fp_description);
  29.         $description = strip_tags($description);
  30.         $description = htmlentities($description, ENT_NOQUOTES);
  31.         $description = str_replace("&","&amp;",$description);
  32.         $author_file = "data/author.txt";
  33.         $fp_author = fopen($author_file, "r");
  34.         $author = fread($fp_author, filesize($author_file));
  35.         fclose($fp_author);
  36.         $default_increase_file = "data/increase.txt";
  37.         if (file_exists($default_increase_file)) {
  38.                 $fp_default_increase = fopen($default_increase_file, "r");
  39.                 $increase = fread($fp_default_increase, filesize($default_increase_file));
  40.                 fclose($fp_default_increase);
  41.         }
  42.         else {
  43.                 $increase = 5;
  44.         }
  45.         $link = $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . "/";
  46.         $link = str_replace('//', '/', $link);
  47.         $link = "http://" . $link;
  48.         $fix_link = array('//index.php', '///index.php');
  49.         $dir = "data/items";
  50.         $feeds = $increase;
  51.  
  52.         if ($dh_rss_items = opendir($dir)) {
  53.                 while (($entry_rss_items = readdir($dh_rss_items)) !== false) {
  54.  
  55.                         $cat_dir = file_get_contents("data/items/$entry_rss_items/category.txt");
  56.  
  57.                         if (file_exists("data/categories/$cat_dir/private.txt") and !file_exists("data/items/$entry_rss_items/cat.txt")) {
  58.                                 continue;
  59.                         }
  60.  
  61.                         if (file_exists("data/items/$entry_rss_items/passwd.txt")) {
  62.                                 continue;
  63.                         }
  64.  
  65.                         if (file_exists("data/items/$entry_rss_items/member.txt")) {
  66.                                 continue;
  67.                         }
  68.  
  69.                         if ($entry_rss_items != "." && $entry_rss_items != ".." && fnmatch("*", $entry_rss_items) && !file_exists("data/items/$entry_rss_items/private.txt")) {
  70.                                 $show_rss_items[] = $entry_rss_items;
  71.                         }
  72.                 }
  73.                 closedir($dh_rss_items);
  74.         }
  75.  
  76.         rsort($show_rss_items);
  77.         reset($show_rss_items);
  78.         $count_rss_items = count($show_rss_items);
  79.  
  80.         if ($count_rss_items < $feeds) {
  81.                 $feeds = $count_rss_items;
  82.         }
  83.  
  84.         if ($count_rss_items > 0) {
  85.  
  86.                 if ($_REQUEST['ver'] == "0.91") {
  87.                         $rss091_file = fopen("data/rss-0.91.txt", "r");
  88.                         $rss091_count = fread($rss091_file, filesize("data/rss-0.91.txt"));
  89.                         fclose($rss091_file);
  90.                         $rss091_count = $rss091_count + 1;
  91.                         $rss091_file = fopen("data/rss-0.91.txt", "w");
  92.                         fwrite($rss091_file, $rss091_count);
  93.                         fclose($rss091_file);
  94.                         header('Content-type: application/xml');
  95.                         echo "<rss version=\"0.91\">\n";
  96.                         echo "<channel>\n";
  97.                         echo "<title>$title</title>\n";
  98.                         echo "<link>$link</link>\n";
  99.                         echo "<description>$description</description>\n";
  100.                         echo "<language>en-US</language>\n";
  101.  
  102.                         $increment_rss_entries = 0;
  103.                         $show_rss_entries = $feeds - 1;
  104.                         while ($increment_rss_entries <= $show_rss_entries) {
  105.                                 echo "<item>\n";
  106.                                 echo "<title>";
  107.                                 readfile("$dir/$show_rss_items[$increment_rss_entries]/title.txt");
  108.                                 echo "</title>\n";
  109.                                 $link = "http://" . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . "/index.php?entry=$show_rss_items[$increment_rss_entries]";
  110.                                 $link = str_replace($fix_link, '/index.php', $link);
  111.                                 echo "<link>$link</link>\n";
  112.                                 echo "<description>";
  113.                                 $description_file = "$dir/$show_rss_items[$increment_rss_entries]/body.txt";
  114.                                 $fp_description = fopen($description_file, "r");
  115.                                 $description = fread($fp_description, filesize($description_file));
  116.                                 fclose($fp_description);
  117.                                 $description = strip_tags($description);
  118.                                 $description = htmlentities($description, ENT_NOQUOTES);
  119.                                 $description = str_replace("&","&amp;",$description);
  120.                                 if (file_exists("data/pf.txt") and file_exists("data/pf-badwords.txt")) {
  121.                                         $badwords = file_get_contents("data/pf-badwords.txt");
  122.                                         if (file_exists("data/pf-censor.txt")) {
  123.                                                 $censor = file_get_contents("data/pf-censor.txt");
  124.                                         }
  125.                                         else {
  126.                                                 $censor = "[expletive]";
  127.                                         }
  128.                                         $description = preg_replace("/\b($badwords)\b/i",$censor,$description);
  129.                                 }
  130.                                 echo $description;
  131.                                 echo "</description>\n";
  132.                                 echo "</item>\n";
  133.                                 $increment_rss_entries = $increment_rss_entries + 1;
  134.                         }
  135.                         echo "</channel>\n";
  136.                         echo "</rss>";
  137.                 }
  138.  
  139.                 if ($_REQUEST['ver'] == "1.0") {
  140.                         $rss10_file = fopen("data/rss-1.0.txt", "r");
  141.                         $rss10_count = fread($rss10_file, filesize("data/rss-1.0.txt"));
  142.                         fclose($rss10_file);
  143.                         $rss10_count = $rss10_count + 1;
  144.                         $rss10_file = fopen("data/rss-1.0.txt", "w");
  145.                         fwrite($rss10_file, $rss10_count);
  146.                         fclose($rss10_file);
  147.                         header('Content-type: application/xml');
  148.                         echo "<rdf:RDF\n";
  149.                         echo "xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"\n";
  150.                         echo "xmlns=\"http://purl.org/rss/1.0/\"\n";
  151.                         echo "xmlns:dc=\"http://purl.org/dc/elements/1.1/\"\n";
  152.                         echo ">\n";
  153.                         echo "<channel rdf:about=\"$link\">\n";
  154.                         echo "<title>$title</title>\n";
  155.                         echo "<link>$link</link>\n";
  156.                         echo "<description>$description</description>\n";
  157.                         echo "<items>\n";
  158.                         echo "<rdf:Seq>\n";
  159.                         $increment_rss_entries = 0;
  160.                         $show_rss_entries = $feeds - 1;
  161.                         while ($increment_rss_entries <= $show_rss_entries) {
  162.                                 $link = "http://" . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . "/index.php?entry=$show_rss_items[$increment_rss_entries]";
  163.                                 $link = str_replace($fix_link, '/index.php', $link);
  164.                                 echo "<rdf:li rdf:resource=\"$link\"/>\n";
  165.                                 $increment_rss_entries = $increment_rss_entries + 1;
  166.                         }
  167.                         echo "</rdf:Seq>\n";
  168.                         echo "</items>\n";
  169.                         echo "</channel>\n";
  170.                         $increment_rss_entries = 0;
  171.                         while ($increment_rss_entries <= $show_rss_entries) {
  172.                                 $link = "http://" . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . "/index.php?entry=$show_rss_items[$increment_rss_entries]";
  173.                                 $link = str_replace($fix_link, '/index.php', $link);
  174.                                 echo "<item rdf:about=\"$link\">\n";
  175.                                 echo "<title>";
  176.                                 readfile("$dir/$show_rss_items[$increment_rss_entries]/title.txt");
  177.                                 echo "</title>\n";
  178.                                 echo "<link>$link</link>\n";
  179.                                 echo "<description>";
  180.                                 $description_file = "$dir/$show_rss_items[$increment_rss_entries]/body.txt";
  181.                                 $fp_description = fopen($description_file, "r");
  182.                                 $description = fread($fp_description, filesize($description_file));
  183.                                 fclose($fp_description);
  184.                                 $description = strip_tags($description);
  185.                                 $description = htmlentities($description, ENT_NOQUOTES);
  186.                                 $description = str_replace("&","&amp;",$description);
  187.                                 if (file_exists("data/pf.txt") and file_exists("data/pf-badwords.txt")) {
  188.                                         $badwords = file_get_contents("data/pf-badwords.txt");
  189.                                         if (file_exists("data/pf-censor.txt")) {
  190.                                                 $censor = file_get_contents("data/pf-censor.txt");
  191.                                         }
  192.                                         else {
  193.                                                 $censor = "[expletive]";
  194.                                         }
  195.                                         $description = preg_replace("/\b($badwords)\b/i",$censor,$description);
  196.                                 }
  197.                                 echo $description;
  198.                                 echo "</description>\n";
  199.                                 echo "<dc:creator>$author</dc:creator>\n";
  200.                                 echo "<dc:date>";
  201.                                 readfile("$dir/$show_rss_items[$increment_rss_entries]/date.txt");                             
  202.                                 echo "</dc:date>\n";
  203.                                 echo "</item>\n";
  204.                                 $increment_rss_entries = $increment_rss_entries + 1;
  205.                         }
  206.                         echo "</rdf:RDF>";
  207.                 }
  208.  
  209.                 if ($_REQUEST['ver'] == "2.0") {
  210.                         $rss20_file = fopen("data/rss-2.0.txt", "r");
  211.                         $rss20_count = fread($rss20_file, filesize("data/rss-2.0.txt"));
  212.                         fclose($rss20_file);
  213.                         $rss20_count = $rss20_count + 1;
  214.                         $rss20_file = fopen("data/rss-2.0.txt", "w");
  215.                         fwrite($rss20_file, $rss20_count);
  216.                         fclose($rss20_file);
  217.                         header('Content-type: application/xml');
  218.                         echo "<rss version=\"2.0\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\">\n";
  219.                         echo "<channel>\n";
  220.                         echo "<title>$title</title>\n";
  221.                         echo "<link>$link</link>\n";
  222.                         echo "<description>$description</description>\n";
  223.                         echo "<language>en-US</language>\n";
  224.  
  225.                         $increment_rss_entries = 0;
  226.                         $show_rss_entries = $feeds - 1;
  227.                         while ($increment_rss_entries <= $show_rss_entries) {
  228.                                 echo "<item>\n";
  229.                                 echo "<title>";
  230.                                 readfile("$dir/$show_rss_items[$increment_rss_entries]/title.txt");
  231.                                 echo "</title>\n";
  232.                                 $link = "http://" . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . "/index.php?entry=$show_rss_items[$increment_rss_entries]";
  233.                                 $link = str_replace($fix_link, '/index.php', $link);
  234.                                 echo "<link>$link</link>\n";
  235.                                 echo "<description>";
  236.                                 $description_file = "$dir/$show_rss_items[$increment_rss_entries]/body.txt";
  237.                                 $fp_description = fopen($description_file, "r");
  238.                                 $description = fread($fp_description, filesize($description_file));
  239.                                 fclose($fp_description);
  240.                                 $description = strip_tags($description);
  241.                                 $description = htmlentities($description, ENT_NOQUOTES);
  242.                                 $description = str_replace("&","&amp;",$description);
  243.                                 if (file_exists("data/pf.txt") and file_exists("data/pf-badwords.txt")) {
  244.                                         $badwords = file_get_contents("data/pf-badwords.txt");
  245.                                         if (file_exists("data/pf-censor.txt")) {
  246.                                                 $censor = file_get_contents("data/pf-censor.txt");
  247.                                         }
  248.                                         else {
  249.                                                 $censor = "[expletive]";
  250.                                         }
  251.                                         $description = preg_replace("/\b($badwords)\b/i",$censor,$description);
  252.                                 }
  253.                                 echo $description;
  254.                                 echo "</description>\n";
  255.                                 echo "<dc:creator>$author</dc:creator>";
  256.                                 echo "<dc:date>";
  257.                                 readfile("$dir/$show_rss_items[$increment_rss_entries]/date.txt");                             
  258.                                 echo "</dc:date>\n";
  259.                                 echo "</item>\n";
  260.                                 $increment_rss_entries = $increment_rss_entries + 1;
  261.                         }
  262.                         echo "</channel>\n";
  263.                         echo "</rss>";
  264.                 }
  265.  
  266.         }
  267. }
  268.  
  269. ?>
  270.  
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
35387 downloads
MAJ 1.0
26 files
14152 downloads
MAJ 0.14
45 files
36716 downloads