HE Log Helper

Adds a log database to help manage logs and adds some buttons to log pages to make things easier.

当前为 2015-06-02 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name HE Log Helper
  3. // @namespace http://hackerexperience.com/
  4. // @version 0.2
  5. // @description Adds a log database to help manage logs and adds some buttons to log pages to make things easier.
  6. // @author sakuzyo
  7. // @match *://hackerexperience.com/*
  8. // @require http://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js
  9. // ==/UserScript==
  10.  
  11. // ############### Log DB page stuffs
  12. if (window.location.href.search('logdb') > 0) {
  13. $('#sidebar ul li.active').attr('class','');
  14. $('#sidebar ul').append('<li class="active"><a href="log?logdb"><i class="fa fa-inverse"></i> <span>Log Database</span></a></li>');
  15. modLogDBPage();
  16. } else {
  17. $('#sidebar ul').append('<li><a href="log?logdb"><i class="fa fa-inverse"></i> <span>Log Database</span></a></li>');
  18. }
  19.  
  20. function modLogDBPage(){
  21. document.title = 'Log Database';
  22. $('.nav.nav-tabs:first').html('<li class="link active" id="tablocal"><a href="#" id="locallog"><span class="icon-tab he16-internet_log"></span>Local Logs</a></li>');
  23. $('.nav.nav-tabs:first').append('<li class="link" id="tabweb"><a href="#" id="weblog"><span class="icon-tab he16-internet_log"></span>Internet Logs</a></li>');
  24. $('.label.label-info').remove();
  25. $('#link0').attr('href','log?logdb'); $('#link0').html('LogDB');
  26. $('#content-header h1').html('Log Database');
  27. setupLogDbPage('local', 'Local');
  28. loadLocalLogs();
  29. }
  30.  
  31. function setupLogDbPage(dbtype, dbname){
  32. $('.widget-content').html('<div class="span12"><div class="span4"><div class="widget-box text-left">' +
  33. '<div class="widget-title"><span class="icon"><span class="he16-collect_info"></span></span><h5>Select ' + dbname + ' Log</h5></div>' +
  34. '<div class="widget-content ' + dbtype + 'logdb">' +
  35. '<div id="logdblist"></div>' +
  36. '</div></div></div>'+
  37. '<div class="span8"><div class="widget-box text-left">' +
  38. '<div class="widget-title"><span class="icon"><span class="he16-collect_info"></span></span><h5>Log Data</h5></div>' +
  39. '<div class="widget-content">' +
  40. '<textarea name="log" class="logarea" id="logdatatext" rows="15" spellcheck="FALSE" style="width: 98%;height: 350px;resize: vertical;"></textarea>'+
  41. '</div></div>'
  42. );
  43. }
  44.  
  45. $('#tablocal').click(function(){
  46. $('#tablocal').attr('class','link active');
  47. $('#tabweb').attr('class','link');
  48. setupLogDbPage('local', 'Local');
  49. loadLocalLogs();
  50. });
  51. $('#tabweb').click(function(){
  52. $('#tabweb').attr('class','link active');
  53. $('#tablocal').attr('class','link');
  54. setupLogDbPage('web', 'Internet');
  55. loadWebLogs();
  56. });
  57.  
  58. // ############### Error/Success Message
  59. function logsuccess(message){
  60. if (typeof(message)==='undefined') message = '';
  61. if($('.alert').length !== 0) {
  62. $('.alert').remove();
  63. }
  64. $('.widget-box:first').before('<div class="alert alert-success"><button class="close" data-dismiss="alert">x</button><strong>Success!</strong> '+ message +' </div>');
  65. }
  66.  
  67. function logerror(message){
  68. if (typeof(message)==='undefined') message = '';
  69. if($('.alert').length !== 0) {
  70. $('.alert').remove();
  71. }
  72. $('.widget-box:first').before('<div class="alert alert-error"><button class="close" data-dismiss="alert">x</button><strong>Error!</strong> '+ message +' </div>');
  73. }
  74.  
  75. if ($('#link0[href=log]').length) {
  76. $('form.log input.btn').before('<input class="btn btn-inverse" id="backuplocallog" type="button" value="Backup" style="width: 80px;" title="Save Log to Database">');
  77. $('#backuplocallog').after('<span> </span><input class="btn btn-inverse" id="clearlocallog" type="button" value="Clear" style="width: 80px;"><span> </span>');
  78. } else if ($('.internet.page-log').length) {
  79. $('form.log input.btn').before('<input class="btn btn-inverse" id="backupweblog" type="button" value="Backup" style="width: 80px;" title="Save Log to Database">');
  80. $('#backupweblog').after('<span> </span><input class="btn btn-inverse" id="hidemeweb" type="button" value="Hide Me" style="width: 80px;" title="Clear only lines with your IP"><span> </span>');
  81. }
  82.  
  83. // ############### Local Log DB Function Stuff
  84.  
  85. $('#backuplocallog').click(function(){
  86. if ($('form.log').length) {
  87. var bckup = backupLocalLog();
  88. if(bckup === 0){
  89. logerror('Already saved.');
  90. } else {
  91. logsuccess('Log saved to database.');
  92. }
  93. }
  94. else {
  95. console.log('No log found');
  96. }
  97. });
  98.  
  99. $('#clearlocallog').click(function(){
  100. if ($('form.log').length) {
  101. $('form.log').find('.logarea').val('');
  102. $('form.log').submit();
  103. }
  104. else {
  105. console.log('No log found');
  106. }
  107. });
  108.  
  109. function backupLocalLog() {
  110. var logArea = $('form.log').find('.logarea');
  111. var logText = logArea.val();
  112. var user = $('a[href=profile] span').text();
  113. var bckText = GM_getValue('localhost.' + user);
  114. if (typeof(bckText)==='undefined') bckText = '';
  115. var newBckText = logText + bckText;
  116. var newLogArray = newBckText.split('\n');
  117. newLogArray = newLogArray.filter(function(value, index, self){
  118. return self.indexOf(value) === index;
  119. });
  120. newBckText = newLogArray.join('\n');
  121.  
  122. if(newBckText !== bckText){
  123. GM_setValue('localhost.' + user, newBckText);
  124. return 1;
  125. } else {
  126. logerror('This log is already saved.');
  127. return 0;
  128. }
  129. }
  130.  
  131. function loadLocalLogs(){
  132. var localList = GM_listValues();
  133. for (var i = 0; i < localList.length; i++) {
  134. var elem = localList[i];
  135. if (elem.indexOf('localhost') >= 0){
  136. elem = elem.split('.')[1];
  137. $('#logdblist').append('<div id="'+ elem +'"><a href="#" id="loadlocal" name="' + elem + '">localhost ('+ elem +')</a>&nbsp;&nbsp;&nbsp;'+
  138. '<a href="#" id="clearlocal" name="'+ elem +'">[clear]</a>&nbsp;&nbsp;&nbsp;'+
  139. '<a href="#" id="deletelocal" name="'+ elem +'">[delete]</a>'+
  140. '</br></div>'
  141. );
  142. }
  143. }
  144. $('a[id=loadlocal]').click(function(){
  145. var user = $(this).attr('name');
  146. var logText = GM_getValue('localhost.' + user);
  147. $('#logdatatext').val(logText);
  148. });
  149.  
  150. $('a[id=clearlocal]').click(function(){
  151. var user = $(this).attr('name');
  152. GM_setValue('localhost.' + user,'');
  153. $('#logdatatext').val('');
  154. if(GM_getValue('localhost.' + user) === '') {
  155. logsuccess('Backup successfully cleared.');
  156. }
  157. });
  158. $('a[id=deletelocal]').click(function(){
  159. var user = $(this).attr('name');
  160. GM_deleteValue('localhost.' + user);
  161. $('div[id="'+ user +'"]').remove();
  162. $('#logdatatext').val('');
  163. });
  164. }
  165.  
  166. // ############### Internet Log DB Function Stuff
  167.  
  168. $('#hidemeweb').click(function() {
  169. if ($('form.log').length) {
  170. var logLines = $('form.log').find('.logarea').val().split('\n');
  171. var newLines = [];
  172.  
  173. $.each(logLines, function(i, el) {
  174. if (el.indexOf($('.header-ip-show').text()) === -1)
  175. newLines.push(el);
  176. });
  177.  
  178. $('form.log').find('.logarea').val(newLines.join('\n'));
  179. $('form.log').submit();
  180. }
  181. else {
  182. console.log('No log found');
  183. }
  184. });
  185.  
  186. function loadWebLogs(){
  187. var ipList = GM_listValues();
  188. for (var i = 0; i < ipList.length; i++) {
  189. var elem = ipList[i];
  190. if (elem.indexOf('localhost') == -1){
  191. $('#logdblist').append('<div id="'+ elem +'"><a href="#" id="loadweblog" name="' + elem + '">'+ elem +'</a>&nbsp;&nbsp;&nbsp;'+
  192. '<a href="#" id="clearweblog" name="'+ elem +'">[clear]</a>&nbsp;&nbsp;&nbsp;'+
  193. '<a href="#" id="deleteweblog" name="'+ elem +'">[delete]</a>&nbsp;&nbsp;&nbsp;'+
  194. '<a href="internet?ip='+ elem +'">[open]</a>'+
  195. '</br></div>'
  196. );
  197. }
  198. }
  199.  
  200. $('a[id=loadweblog]').click(function(){
  201. var logIP = $(this).attr('name');
  202. $('#logdatatext').val(GM_getValue(logIP));
  203. });
  204. $('a[id=clearweblog]').click(function(){
  205. var logIP = $(this).attr('name');
  206. GM_setValue(logIP,'');
  207. if(GM_getValue(logIP) === '') {
  208. $('#logdatatext').val('');
  209. logsuccess('Backup successfully cleared.');
  210. }
  211. });
  212. $('a[id=deleteweblog]').click(function(){
  213. var logIP = $(this).attr('name');
  214. GM_deleteValue(logIP);
  215. $('div[id="'+ logIP +'"]').remove();
  216. $('#logdatatext').val('');
  217. });
  218. }
  219.  
  220. function backupWebLog() {
  221. var logArea = $('form.log').find('.logarea');
  222. var logText = logArea.val();
  223. var bckIP = $('#link1').text().slice(1);
  224. var bckText = GM_getValue(bckIP);
  225. if (typeof(bckText)==='undefined') bckText = '';
  226. var newBckText = logText + bckText;
  227. var newLogArray = newBckText.split('\n');
  228. newLogArray = newLogArray.filter(function(value, index, self){
  229. return self.indexOf(value) === index;
  230. });
  231. newBckText = newLogArray.join('\n');
  232. if(newBckText !== bckText){
  233. GM_setValue(bckIP, newBckText);
  234. return 1;
  235. } else {
  236. logerror('This log is already saved.');
  237. return 0;
  238. }
  239. }
  240.  
  241. $('#backupweblog').click(function(){
  242. if ($('form.log').length) {
  243. var bckup = backupWebLog();
  244. if(bckup === 0){
  245. logerror('Already saved.');
  246. } else {
  247. logsuccess('Log saved to database.');
  248. }
  249. }
  250. else {
  251. console.log('No log found');
  252. }
  253. });
  254.  
  255.