settings.php 8.7 KB

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