settings.php 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238
  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. foreach ($_POST as $parameter => $value) {
  96. $splitParameter = explode('-', $parameter);
  97. if ($value == "on")
  98. $value = "true";
  99. if($splitParameter[0] == "category"){ $sampleData .= "[" . $value . "]\r\n"; }else{ $sampleData .= $splitParameter[0] . " = \"" . $value . "\"\r\n"; }
  100. }
  101. if($action == "write"){
  102. write_ini_file($sampleData, $configfile);
  103. sleep(.5);
  104. echo "<!DOCTYPE html>";
  105. echo "<head>";
  106. echo "<title>Form submitted</title>";
  107. echo "<script type='text/javascript'>window.location.replace('settings.php');</script>";
  108. echo "</head>";
  109. echo "<body></body></html>";
  110. }
  111. ?>
  112. <form action="?action=write" method="post" name="adminForm" class="form-inline">
  113. <?foreach ($config as $keyname => $section) {
  114. if(($keyname == "general")) {
  115. echo '<div class="form-group clearfix">';
  116. echo '<input type="hidden" name="category-0" class="form-control" value="general">';
  117. echo '<span class="btn btn-inactive " type="button"><span class="fa fa-cog"></span></span> ';
  118. echo '<input type="text" name="title-0" class="form-control" value="'. $section["title"] .'"> ';
  119. echo '<input type="text" name="password-0" class="form-control" placeholder="Leave Blank if no change" value=""> ';
  120. 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"> ';}
  121. echo '<label for="useicons-0" class="css-label">Icons</label></div><br/><hr/><br/> ';
  122. }}?>
  123. <div id="tagsForm" class="sortable">
  124. <?
  125. $i = 0;
  126. foreach ($config as $keyname => $section) {
  127. if(($keyname !== "general")) {
  128. ?>
  129. <div class="form-group clearfix">
  130. <span class="btn btn-default move" type="button"><span class="fa fa-arrows"></span></span>
  131. <input type="text" name="category-<?=$i;?>" class="form-control" value="<?=$keyname;?>">
  132. <input type="text" name="url-<?=$i;?>" class="form-control" placeholder="url" value="<?=$section['url']?>">
  133. <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>
  134. <? 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">';}?>
  135. <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>
  136. </div>
  137. <?
  138. }
  139. $i++;
  140. }?>
  141. </div>
  142. <div class="form-group clearfix">
  143. <button class="btn btn-primary" id="addScnt" type="button"><span class="fa fa-plus"></span></button>
  144. <button class="btn btn-success" type="submit"> Save Settings </button>
  145. </div>
  146. </form>
  147. <script type="text/javascript" src="https://code.jquery.com/jquery-1.4.3.min.js"></script>
  148. <script type='text/javascript'>
  149. $(function() {
  150. var scntDiv = $('#tagsForm');
  151. var i = <?=$i?>;
  152. $('#addScnt').on('click', function() {
  153. $('<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);
  154. i++;
  155. return false;
  156. });
  157. $(document).on('click','#remScnt', function() {
  158. $(this).closest('div').remove();
  159. i--;
  160. return false;
  161. });
  162. });
  163. </script>
  164. <script src='https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js'></script>
  165. <script src='https://code.jquery.com/ui/1.11.2/jquery-ui.min.js'></script>
  166. <script>$( "#tagsForm" ).sortable({connectWith: ".sortable"});</script>
  167. <!-- jQuery -->
  168. <script type="text/javascript" src="js/jquery-1.10.2.min.js"></script>
  169. <!-- Bootstrap -->
  170. <script type="text/javascript" src="js/bootstrap.min.js"></script>
  171. <!-- Bootstrap-Iconpicker Iconset for Font Awesome -->
  172. <script type="text/javascript" src="js/iconset-fontawesome-4.2.0.min.js"></script>
  173. <!-- Bootstrap-Iconpicker -->
  174. <script type="text/javascript" src="js/bootstrap-iconpicker.min.js"></script>
  175. </body>