Changes On Branch tablet-antirobot-fix
Not logged in

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Changes In Branch tablet-antirobot-fix Excluding Merge-Ins

This is equivalent to a diff from 5f0479d097 to 60d25189d2

2019-06-12
09:41
Improvements to tooltip handling. check-in: 3a8abf492a user: drh tags: trunk
2019-06-10
04:48
Disable the mouse-motion anti-robot requirement for devices that self-identify as a tablet or mobile device, and hence might never send mouse-motion events. Closed-Leaf check-in: 60d25189d2 user: drh tags: tablet-antirobot-fix
01:53
Simplifications to the copybtn.js script. check-in: 5f0479d097 user: drh tags: trunk
01:37
Longer default hash length for the copy button on ticket view pages. check-in: e055942cf2 user: drh tags: trunk

Changes to src/href.js.

29
30
31
32
33
34
35
36
37
38

39
40
41
42
43
44
45
29
30
31
32
33
34
35



36
37
38
39
40
41
42
43







-
-
-
+







    if(j.hasAttribute("data-action")) j.action=j.getAttribute("data-action");
  }
}
function antiRobotDefense(){
  var x = document.getElementById("href-data");
  var jx = x.textContent || x.innerText;
  var g = JSON.parse(jx);
  var isOperaMini =
       Object.prototype.toString.call(window.operamini)==="[object OperaMini]";
  if(g.mouseover && !isOperaMini){
  if(g.mouseover){
    document.getElementsByTagName("body")[0].onmousemove=function(){
      setTimeout(setAllHrefs, g.delay);
    }
  }else{
    setTimeout(setAllHrefs, g.delay);
  }
}

Changes to src/login.c.

442
443
444
445
446
447
448











449
450
451
452
453
454
455
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466







+
+
+
+
+
+
+
+
+
+
+







  }
  if( strncmp(zAgent, "Opera/", 6)==0 ) return 1;
  if( strncmp(zAgent, "Safari/", 7)==0 ) return 1;
  if( strncmp(zAgent, "Lynx/", 5)==0 ) return 1;
  if( strncmp(zAgent, "NetSurf/", 8)==0 ) return 1;
  return 0;
}

/*
** Look at the HTTP_USER_AGENT parameter and try to determine if the user agent
** is a mobile device that does not normally have a mouse.
*/
static int isMobile(const char *zAgent){
  if( sqlite3_strglob("*Mobile/*", zAgent)==0 ) return 1;
  if( sqlite3_strglob("*Tablet;*", zAgent)==0 ) return 1;
  return 0;
}


/*
** COMMAND: test-ishuman
**
** Read lines of text from standard input.  Interpret each line of text
** as a User-Agent string from an HTTP header.  Label each line as HUMAN
** or ROBOT.
1110
1111
1112
1113
1114
1115
1116



1117
1118
1119
1120






1121
1122
1123
1124
1125
1126
1127
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130




1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143







+
+
+
-
-
-
-
+
+
+
+
+
+







  */
  g.userUid = uid;
  if( fossil_strcmp(g.zLogin,"nobody")==0 ){
    g.zLogin = 0;
  }
  if( PB("isrobot") ){
    g.isHuman = 0;
    g.isMobile = 0;
  }else{
    const char *zAgent = P("HTTP_USER_AGENT");
  }else if( g.zLogin==0 ){
    g.isHuman = isHuman(P("HTTP_USER_AGENT"));
  }else{
    g.isHuman = 1;
    if( g.zLogin==0 ){
      g.isHuman = isHuman(zAgent);
    }else{
      g.isHuman = 1;
    }
    g.isMobile = isMobile(zAgent);
  }

  /* Set the capabilities */
  login_replace_capabilities(zCap, 0);

  /* The auto-hyperlink setting allows hyperlinks to be displayed for users
  ** who do not have the "h" permission as long as their UserAgent string

Changes to src/main.c.

201
202
203
204
205
206
207

208
209
210
211
212
213
214
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215







+







  const char *zLogin;     /* Login name.  NULL or "" if not logged in. */
  const char *zSSLIdentity;  /* Value of --ssl-identity option, filename of
                             ** SSL client identity */
  int useLocalauth;       /* No login required if from 127.0.0.1 */
  int noPswd;             /* Logged in without password (on 127.0.0.1) */
  int userUid;            /* Integer user id */
  int isHuman;            /* True if access by a human, not a spider or bot */
  int isMobile;           /* Human user on a mobile device w/o a mouse */
  int comFmtFlags;        /* Zero or more "COMMENT_PRINT_*" bit flags, should be
                          ** accessed through get_comment_format(). */

  /* Information used to populate the RCVFROM table */
  int rcvid;              /* The rcvid.  0 if not yet defined. */
  char *zIpAddr;          /* The remote IP address */
  char *zNonce;           /* The nonce used for login */

Changes to src/style.c.

663
664
665
666
667
668
669

670

671
672
673
674
675
676
677
663
664
665
666
667
668
669
670

671
672
673
674
675
676
677
678







+
-
+







/*
** Generate code to load all required javascript files.
*/
static void style_load_all_js_files(void){
  int i;
  if( needHrefJs ){
    int nDelay = db_get_int("auto-hyperlink-delay",0);
    int bMouseover = 
    int bMouseover = db_get_boolean("auto-hyperlink-mouseover",0);
       !g.isMobile && db_get_boolean("auto-hyperlink-mouseover",0);
    @ <script id='href-data' type='application/json'>\
    @ {"delay":%d(nDelay),"mouseover":%d(bMouseover)}</script>
  }
  @ <script nonce="%h(style_nonce())">
  @ function debugMsg(msg){
  @ var n = document.getElementById("debugMsg");
  @ if(n){n.textContent=msg;}