settings.php 10.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246
  1. <?php
  2. if((!isset($_COOKIE["logged"]))){
  3. echo "<!DOCTYPE html>";
  4. echo "<head>";
  5. echo "<title>Form submitted</title>";
  6. echo "<script type='text/javascript'>window.location.replace('setup.php');</script>";
  7. echo "</head>";
  8. echo "<body></body></html>";
  9. die;
  10. }
  11. if(isset($_GET["action"])){$action = $_GET["action"];}
  12. function write_ini_file($content, $path) {
  13. if (!$handle = fopen($path, 'w')) {
  14. return false;
  15. }
  16. $success = fwrite($handle, $content);
  17. fclose($handle);
  18. return $success;
  19. }
  20. //ini_set('display_errors',1); error_reporting(E_ALL);
  21. $configfile = 'settings.ini.php';
  22. try {
  23. $config = parse_ini_file('settings.ini.php', true);
  24. } catch(Exception $e) {
  25. die('<b>Unable to read config.ini.php. Did you rename it from settings.ini.php-example?</b><br><br>Error message: ' .$e->getMessage());
  26. }
  27. //Password crap
  28. if(array_key_exists('category-0', $_POST) == true){
  29. foreach ($config as $keyname => $section) { if(($keyname == "general")) { $nopass = $section["password"]; } }
  30. $salt = substr(str_replace('+','.',base64_encode(md5(mt_rand(), true))),0,16);
  31. $rounds = 10000;
  32. if(empty($_POST["password-0"])){ $_POST["password-0"] = $nopass;}
  33. if(strlen($_POST["password-0"]) < 50){ $_POST["password-0"] = crypt($_POST["password-0"], sprintf('$5$rounds=%d$%s$', $rounds, $salt)); }
  34. //password crap
  35. //Gather Config Write Info
  36. $sampleData .= '; <?php die("Access denied"); ?>' . "\r\n";
  37. foreach ($_POST as $parameter => $value) {
  38. $splitParameter = explode('-', $parameter);
  39. if ($value == "on")
  40. $value = "true";
  41. if($splitParameter[0] == "category"){ $sampleData .= "[" . $value . "]\r\n"; }else{ $sampleData .= $splitParameter[0] . " = \"" . $value . "\"\r\n"; }
  42. }
  43. if($action == "write"){
  44. write_ini_file($sampleData, $configfile);
  45. sleep(.5);
  46. echo "<!DOCTYPE html>";
  47. echo "<head>";
  48. echo "<title>Form submitted</title>";
  49. echo "<script type='text/javascript'>window.parent.location.reload();</script>";
  50. echo "</head>";
  51. echo "<body></body></html>";
  52. }
  53. }
  54. ?>
  55. <!doctype html>
  56. <html>
  57. <head>
  58. <link rel='stylesheet prefetch' href='https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css'>
  59. <link rel='stylesheet prefetch' href='https://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css'>
  60. <!-- Bootstrap -->
  61. <link rel="stylesheet" href="css/bootstrap.min.css"/>
  62. <!-- Font Awesome -->
  63. <link rel="stylesheet" href="css/font-awesome.min.css"/>
  64. <!-- Bootstrap-Iconpicker -->
  65. <link rel="stylesheet" href="css/bootstrap-iconpicker.min.css"/>
  66. <style>
  67. body {
  68. margin: 50px;
  69. }
  70. .fa {
  71. min-width: 14px;
  72. }
  73. .form-inline .form-control,
  74. .form-inline .btn {
  75. margin-bottom: 8px;
  76. }
  77. .form-group {
  78. width: 100%;
  79. }
  80. input[type=checkbox].css-checkbox {
  81. position:absolute; z-index:-1000; left:-1000px; overflow: hidden; clip: rect(0 0 0 0); height:1px; width:1px; margin:-1px; padding:0; border:0;
  82. }
  83. input[type=checkbox].css-checkbox + label.css-label {
  84. padding-left:55px;
  85. height:30px;
  86. display:inline-block;
  87. line-height:30px;
  88. background-repeat:no-repeat;
  89. background-position: 0 0;
  90. font-size:30px;
  91. vertical-align:middle;
  92. cursor:pointer;
  93. }
  94. input[type=checkbox].css-checkbox:checked + label.css-label {
  95. background-position: 0 -30px;
  96. }
  97. label.css-label {
  98. background-image:url(img/check.png);
  99. -webkit-touch-callout: none;
  100. -webkit-user-select: none;
  101. -khtml-user-select: none;
  102. -moz-user-select: none;
  103. -ms-user-select: none;
  104. user-select: none;
  105. }
  106. hr {
  107. display: block;
  108. height: 1px;
  109. border: 0;
  110. border-top: 1px solid #ccc;
  111. margin: 1em 0 auto;
  112. padding: 0;
  113. }
  114. </style>
  115. </head>
  116. <body>
  117. <form action="?action=write" method="post" name="adminForm" class="form-inline">
  118. <?php
  119. foreach ($config as $keyname => $section) {
  120. if(($keyname == "general")) {
  121. echo "<div class=\"form-group clearfix\">";
  122. echo "<input type=\"hidden\" name=\"category-0\" class=\"form-control\" value=\"general\">";
  123. echo "<span class=\"btn btn-inactive \" type=\"button\"><span class=\"fa fa-cog\"></span></span> ";
  124. echo "<input type=\"text\" name=\"title-0\" class=\"form-control\" value=\"" . $section["title"] ."\"> ";
  125. echo "<input type=\"text\" name=\"password-0\" class=\"form-control\" placeholder=\"Leave Blank if no change\" value=\"\"> ";
  126. if($section['useicons'] == "true"){echo "<input type=\"checkbox\" name=\"useicons-0\" id=\"useicons-0\" class=\"css-checkbox\" checked> ";}else {echo "<input type=\"checkbox\" name=\"useicons-0\" id=\"useicons-0\" class=\"css-checkbox\"> ";}
  127. echo "<label for=\"useicons-0\" class=\"css-label\">Icons</label></div><br/><hr/><br/> ";
  128. }
  129. }
  130. ?>
  131. <div id="tagsForm" class="sortable">
  132. <?php
  133. $i = 0;
  134. foreach ($config as $keyname => $section) {
  135. if(($keyname !== "general")) {
  136. ?>
  137. <div class="form-group clearfix">
  138. <span class="btn btn-default move" type="button"><span class="fa fa-arrows"></span></span>
  139. <input type="text" name="category-<?=$i;?>" class="form-control" value="<?=$keyname;?>">
  140. <input type="text" name="url-<?=$i;?>" class="form-control" placeholder="url" value="<?=$section['url']?>">
  141. <button data-placement="left" data-cols="5" data-rows="5" class="btn btn-default" name="icon-<?=$i;?>" role="iconpicker" data-iconset="fontawesome" data-icon="<?=$section['icon']?>"></button>
  142. <?php
  143. if($section['enabled'] == "true"){echo '<input type="checkbox" name="enabled-' . $i .'" id="enabled-' . $keyname . '" class="css-checkbox" checked>';}else {echo '<input type="checkbox" name="enabled-' . $i .'" id="enabled-' . $keyname . '" class="css-checkbox">';}?>
  144. <label for="enabled-<?=$keyname;?>" class="css-label">Enabled</label>
  145. <?php
  146. if($section['guest'] == "true"){echo '<input type="checkbox" name="guest-' . $i .'" id="guest-' . $keyname . '" class="css-checkbox" checked>';}else {echo '<input type="checkbox" name="guest-' . $i .'" id="guest-' . $keyname . '" class="css-checkbox">';}?>
  147. <label for="guest-<?=$keyname;?>" class="css-label">Guest</label> <button class="btn btn-danger deleteGroup" id="remScnt" type="button"><span class="fa fa-trash"></span></button>
  148. </div>
  149. <?php
  150. }
  151. $i++;
  152. }
  153. ?>
  154. </div>
  155. <div class="form-group clearfix">
  156. <button class="btn btn-primary" id="addScnt" type="button"><span class="fa fa-plus"></span></button>
  157. <button class="btn btn-success" type="submit"> Save Settings </button>
  158. </div>
  159. </form>
  160. <script type="text/javascript" src="https://code.jquery.com/jquery-1.4.3.min.js"></script>
  161. <script type='text/javascript'>
  162. $(function() {
  163. var scntDiv = $('#tagsForm');
  164. var i = <?=$i?>;
  165. $('#addScnt').on('click', function() {
  166. $('<div class="form-group clearfix ui-sortable-handle"> <span class="btn btn-default move" type="button"><span class="fa fa-arrows"></span></span> <input type="text" name="category-' + i +'" class="form-control" placeholder="Tag" value="New Tab"> <input type="text" name="url-' + i +'" class="form-control" placeholder="url" value="Add URL"> <button class="btn btn-default" name="icon-' + i +'" role="iconpicker" data-iconset="fontawesome" data-icon="fa-question"></button> <input type="checkbox" name="enabled-' + i +'" id="enabled-' + i +'" class="css-checkbox"> <label for="enabled-' + i +'" class="css-label">Enabled</label> <input type="checkbox" name="guest-' + i +'" id="guest-' + i +'" class="css-checkbox"> <label for="guest-' + i +'" class="css-label">Guest</label> <button class="btn btn-danger deleteGroup" id="remScnt" type="button"><span class="fa fa-trash"></span></button></div>').appendTo(scntDiv);
  167. i++;
  168. return false;
  169. });
  170. $(document).on('click','#remScnt', function() {
  171. $(this).closest('div').remove();
  172. i--;
  173. return false;
  174. });
  175. });
  176. </script>
  177. <script src='https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js'></script>
  178. <script src='https://code.jquery.com/ui/1.11.2/jquery-ui.min.js'></script>
  179. <script>$( "#tagsForm" ).sortable({connectWith: ".sortable"});</script>
  180. <!-- jQuery -->
  181. <script type="text/javascript" src="js/jquery-1.10.2.min.js"></script>
  182. <!-- Bootstrap -->
  183. <script type="text/javascript" src="js/bootstrap.min.js"></script>
  184. <!-- Bootstrap-Iconpicker Iconset for Font Awesome -->
  185. <script type="text/javascript" src="js/iconset-fontawesome-4.2.0.min.js"></script>
  186. <!-- Bootstrap-Iconpicker -->
  187. <script type="text/javascript" src="js/bootstrap-iconpicker.min.js"></script>
  188. </body>
  189. </html>