Fossil

Hex Artifact Content
Login

Artifact 2b485ac67f5ba9917da5f1ea679eee581a8e08a79dfbfb811c4833586330163a:


0000: 2f 2a 20 41 73 20 61 6e 20 61 6e 74 69 2d 72 6f  /* As an anti-ro
0010: 62 6f 74 20 64 65 66 65 6e 73 65 2c 20 3c 61 3e  bot defense, <a>
0020: 20 65 6c 65 6d 65 6e 74 73 20 61 72 65 20 69 6e   elements are in
0030: 69 74 69 61 6c 6c 79 20 63 6f 64 65 64 20 77 69  itially coded wi
0040: 74 68 20 74 68 65 0a 2a 2a 20 68 72 65 66 3d 20  th the.** href= 
0050: 73 65 74 20 74 6f 20 74 68 65 20 68 6f 6e 65 79  set to the honey
0060: 70 6f 74 2c 20 61 6e 64 20 3c 66 6f 72 6d 3e 20  pot, and <form> 
0070: 65 6c 65 6d 65 6e 74 73 20 61 72 65 20 69 6e 69  elements are ini
0080: 74 69 61 6c 69 7a 65 64 20 77 69 74 68 0a 2a 2a  tialized with.**
0090: 20 61 63 74 69 6f 6e 3d 20 73 65 74 20 74 6f 20   action= set to 
00a0: 74 68 65 20 6c 6f 67 69 6e 20 70 61 67 65 2e 20  the login page. 
00b0: 20 54 68 65 20 72 65 61 6c 20 76 61 6c 75 65 73   The real values
00c0: 20 66 6f 72 20 68 72 65 66 3d 20 61 6e 64 20 61   for href= and a
00d0: 63 74 69 6f 6e 3d 0a 2a 2a 20 61 72 65 20 68 65  ction=.** are he
00e0: 6c 64 20 69 6e 20 64 61 74 61 2d 68 72 65 66 3d  ld in data-href=
00f0: 20 61 6e 64 20 64 61 74 61 2d 61 63 74 69 6f 6e   and data-action
0100: 3d 2e 20 20 54 68 65 20 66 6f 6c 6c 6f 77 69 6e  =.  The followin
0110: 67 20 63 6f 64 65 20 6d 6f 76 65 73 0a 2a 2a 20  g code moves.** 
0120: 64 61 74 61 2d 68 72 65 66 3d 20 69 6e 74 6f 20  data-href= into 
0130: 68 72 65 66 3d 20 61 6e 64 20 64 61 74 61 2d 61  href= and data-a
0140: 63 74 69 6f 6e 3d 20 69 6e 74 6f 20 61 63 74 69  ction= into acti
0150: 6f 6e 3d 20 66 6f 72 20 61 6c 6c 0a 2a 2a 20 3c  on= for all.** <
0160: 61 3e 20 61 6e 64 20 3c 66 6f 72 6d 3e 20 65 6c  a> and <form> el
0170: 65 6d 65 6e 74 73 2c 20 61 66 74 65 72 20 64 65  ements, after de
0180: 6c 61 79 20 61 6e 64 20 6d 61 79 62 65 20 61 6c  lay and maybe al
0190: 73 6f 20 61 66 74 65 72 20 6d 6f 75 73 65 0a 2a  so after mouse.*
01a0: 2a 20 6d 6f 76 65 6d 65 6e 74 20 69 73 20 73 65  * movement is se
01b0: 65 6e 2e 0a 2a 2a 0a 2a 2a 20 42 65 66 6f 72 65  en..**.** Before
01c0: 20 73 6f 75 72 63 69 6e 67 20 74 68 69 73 20 73   sourcing this s
01d0: 63 72 69 70 74 2c 20 63 72 65 61 74 65 20 61 20  cript, create a 
01e0: 73 65 70 61 72 61 74 65 20 3c 73 63 72 69 70 74  separate <script
01f0: 3e 20 65 6c 65 6d 65 6e 74 0a 2a 2a 20 28 77 69  > element.** (wi
0200: 74 68 20 74 79 70 65 3d 27 61 70 70 6c 69 63 61  th type='applica
0210: 74 69 6f 6e 2f 6a 73 6f 6e 27 20 74 6f 20 61 76  tion/json' to av
0220: 6f 69 64 20 43 6f 6e 74 65 6e 74 20 53 65 63 75  oid Content Secu
0230: 72 69 74 79 20 50 6f 6c 69 63 79 20 69 73 73 75  rity Policy issu
0240: 65 73 29 0a 2a 2a 20 63 6f 6e 74 61 69 6e 69 6e  es).** containin
0250: 67 3a 0a 2a 2a 0a 2a 2a 20 20 20 20 20 7b 22 64  g:.**.**     {"d
0260: 65 6c 61 79 22 3a 4d 49 4c 4c 49 53 45 43 4f 4e  elay":MILLISECON
0270: 44 53 2c 20 22 6d 6f 75 73 65 6f 76 65 72 22 3a  DS, "mouseover":
0280: 42 4f 4f 4c 45 41 4e 7d 0a 2a 2a 0a 2a 2a 20 54  BOOLEAN}.**.** T
0290: 68 65 20 3c 73 63 72 69 70 74 3e 20 6d 75 73 74  he <script> must
02a0: 20 68 61 76 65 20 61 6e 20 69 64 3d 27 68 72 65   have an id='hre
02b0: 66 2d 64 61 74 61 27 2e 20 20 44 45 4c 41 59 20  f-data'.  DELAY 
02c0: 69 73 20 74 68 65 20 6e 75 6d 62 65 72 20 0a 2a  is the number .*
02d0: 2a 20 6d 69 6c 6c 69 73 65 63 6f 6e 64 73 20 64  * milliseconds d
02e0: 65 6c 61 79 20 70 72 69 6f 72 20 74 6f 20 70 6f  elay prior to po
02f0: 70 75 6c 61 74 69 6e 67 20 68 72 65 66 3d 20 61  pulating href= a
0300: 6e 64 20 61 63 74 69 6f 6e 3d 2e 20 20 49 66 20  nd action=.  If 
0310: 74 68 65 0a 2a 2a 20 6d 6f 75 73 65 6f 76 65 72  the.** mouseover
0320: 20 62 6f 6f 6c 65 61 6e 20 69 73 20 74 72 75 65   boolean is true
0330: 2c 20 74 68 65 6e 20 74 68 65 20 74 69 6d 65 72  , then the timer
0340: 20 64 6f 65 73 20 6e 6f 74 20 73 74 61 72 74 20   does not start 
0350: 75 6e 74 69 6c 20 61 0a 2a 2a 20 6d 6f 75 73 65  until a.** mouse
0360: 20 6d 6f 74 69 6f 6e 20 65 76 65 6e 74 20 6f 63   motion event oc
0370: 63 75 72 73 20 6f 76 65 72 20 74 6f 70 20 6f 66  curs over top of
0380: 20 74 68 65 20 64 6f 63 75 6d 65 6e 74 2e 0a 2a   the document..*
0390: 2f 0a 66 75 6e 63 74 69 6f 6e 20 73 65 74 41 6c  /.function setAl
03a0: 6c 48 72 65 66 73 28 29 7b 0a 20 20 76 61 72 20  lHrefs(){.  var 
03b0: 61 6e 63 68 6f 72 73 20 3d 20 64 6f 63 75 6d 65  anchors = docume
03c0: 6e 74 2e 67 65 74 45 6c 65 6d 65 6e 74 73 42 79  nt.getElementsBy
03d0: 54 61 67 4e 61 6d 65 28 22 61 22 29 3b 0a 20 20  TagName("a");.  
03e0: 66 6f 72 28 76 61 72 20 69 3d 30 3b 20 69 3c 61  for(var i=0; i<a
03f0: 6e 63 68 6f 72 73 2e 6c 65 6e 67 74 68 3b 20 69  nchors.length; i
0400: 2b 2b 29 7b 0a 20 20 20 20 76 61 72 20 6a 20 3d  ++){.    var j =
0410: 20 61 6e 63 68 6f 72 73 5b 69 5d 3b 0a 20 20 20   anchors[i];.   
0420: 20 69 66 28 6a 2e 68 61 73 41 74 74 72 69 62 75   if(j.hasAttribu
0430: 74 65 28 22 64 61 74 61 2d 68 72 65 66 22 29 29  te("data-href"))
0440: 20 6a 2e 68 72 65 66 3d 6a 2e 67 65 74 41 74 74   j.href=j.getAtt
0450: 72 69 62 75 74 65 28 22 64 61 74 61 2d 68 72 65  ribute("data-hre
0460: 66 22 29 3b 0a 20 20 7d 0a 20 20 76 61 72 20 66  f");.  }.  var f
0470: 6f 72 6d 73 20 3d 20 64 6f 63 75 6d 65 6e 74 2e  orms = document.
0480: 67 65 74 45 6c 65 6d 65 6e 74 73 42 79 54 61 67  getElementsByTag
0490: 4e 61 6d 65 28 22 66 6f 72 6d 22 29 3b 0a 20 20  Name("form");.  
04a0: 66 6f 72 28 76 61 72 20 69 3d 30 3b 20 69 3c 66  for(var i=0; i<f
04b0: 6f 72 6d 73 2e 6c 65 6e 67 74 68 3b 20 69 2b 2b  orms.length; i++
04c0: 29 7b 0a 20 20 20 20 76 61 72 20 6a 20 3d 20 66  ){.    var j = f
04d0: 6f 72 6d 73 5b 69 5d 3b 0a 20 20 20 20 69 66 28  orms[i];.    if(
04e0: 6a 2e 68 61 73 41 74 74 72 69 62 75 74 65 28 22  j.hasAttribute("
04f0: 64 61 74 61 2d 61 63 74 69 6f 6e 22 29 29 20 6a  data-action")) j
0500: 2e 61 63 74 69 6f 6e 3d 6a 2e 67 65 74 41 74 74  .action=j.getAtt
0510: 72 69 62 75 74 65 28 22 64 61 74 61 2d 61 63 74  ribute("data-act
0520: 69 6f 6e 22 29 3b 0a 20 20 7d 0a 7d 0a 66 75 6e  ion");.  }.}.fun
0530: 63 74 69 6f 6e 20 61 6e 74 69 52 6f 62 6f 74 44  ction antiRobotD
0540: 65 66 65 6e 73 65 28 29 7b 0a 20 20 76 61 72 20  efense(){.  var 
0550: 78 20 3d 20 64 6f 63 75 6d 65 6e 74 2e 67 65 74  x = document.get
0560: 45 6c 65 6d 65 6e 74 42 79 49 64 28 22 68 72 65  ElementById("hre
0570: 66 2d 64 61 74 61 22 29 3b 0a 20 20 76 61 72 20  f-data");.  var 
0580: 6a 78 20 3d 20 78 2e 74 65 78 74 43 6f 6e 74 65  jx = x.textConte
0590: 6e 74 20 7c 7c 20 78 2e 69 6e 6e 65 72 54 65 78  nt || x.innerTex
05a0: 74 3b 0a 20 20 76 61 72 20 67 20 3d 20 4a 53 4f  t;.  var g = JSO
05b0: 4e 2e 70 61 72 73 65 28 6a 78 29 3b 0a 20 20 76  N.parse(jx);.  v
05c0: 61 72 20 69 73 4f 70 65 72 61 4d 69 6e 69 20 3d  ar isOperaMini =
05d0: 0a 20 20 20 20 20 20 20 4f 62 6a 65 63 74 2e 70  .       Object.p
05e0: 72 6f 74 6f 74 79 70 65 2e 74 6f 53 74 72 69 6e  rototype.toStrin
05f0: 67 2e 63 61 6c 6c 28 77 69 6e 64 6f 77 2e 6f 70  g.call(window.op
0600: 65 72 61 6d 69 6e 69 29 3d 3d 3d 22 5b 6f 62 6a  eramini)==="[obj
0610: 65 63 74 20 4f 70 65 72 61 4d 69 6e 69 5d 22 3b  ect OperaMini]";
0620: 0a 20 20 69 66 28 67 2e 6d 6f 75 73 65 6f 76 65  .  if(g.mouseove
0630: 72 20 26 26 20 21 69 73 4f 70 65 72 61 4d 69 6e  r && !isOperaMin
0640: 69 29 7b 0a 20 20 20 20 64 6f 63 75 6d 65 6e 74  i){.    document
0650: 2e 67 65 74 45 6c 65 6d 65 6e 74 42 79 54 61 67  .getElementByTag
0660: 4e 61 6d 65 28 22 62 6f 64 79 22 29 5b 30 5d 2e  Name("body")[0].
0670: 6f 6e 6d 6f 75 73 65 6d 6f 76 65 3d 66 75 6e 63  onmousemove=func
0680: 74 69 6f 6e 28 29 7b 0a 20 20 20 20 20 20 73 65  tion(){.      se
0690: 74 54 69 6d 65 6f 75 74 28 73 65 74 41 6c 6c 48  tTimeout(setAllH
06a0: 72 65 66 73 2c 20 67 2e 64 65 6c 61 79 29 3b 0a  refs, g.delay);.
06b0: 20 20 20 20 7d 0a 20 20 7d 65 6c 73 65 7b 0a 20      }.  }else{. 
06c0: 20 20 20 73 65 74 54 69 6d 65 6f 75 74 28 73 65     setTimeout(se
06d0: 74 41 6c 6c 48 72 65 66 73 2c 20 67 2e 64 65 6c  tAllHrefs, g.del
06e0: 61 79 29 3b 0a 20 20 7d 0a 7d 0a 61 6e 74 69 52  ay);.  }.}.antiR
06f0: 6f 62 6f 74 44 65 66 65 6e 73 65 28 29 0a        obotDefense().