Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
| Comment: | Javascript-enabled hyperlinks now initially point to a honeypot, rather than to nothing. |
|---|---|
| Downloads: | Tarball | ZIP archive |
| Timelines: | family | ancestors | descendants | both | trunk |
| Files: | files | file ages | folders |
| SHA1: |
2d14b6c4dc19ac774d0cae8722ee05e5 |
| User & Date: | drh 2013-08-12 12:50:42.251 |
Context
|
2013-08-13
| ||
| 02:23 | Move table.sbsdiffcols width attribute to CSS ... (check-in: 4aaf5dc5ec user: joel tags: trunk) | |
|
2013-08-12
| ||
| 12:50 | Javascript-enabled hyperlinks now initially point to a honeypot, rather than to nothing. ... (check-in: 2d14b6c4dc user: drh tags: trunk) | |
| 12:37 | New g.isHuman global variable is set if we believe an HTTP request is coming a real human being, rather than a spider or bot. ... (check-in: e065d5b7f1 user: drh tags: trunk) | |
Changes
Changes to src/style.c.
| ︙ | ︙ | |||
110 111 112 113 114 115 116 |
return zHUrl;
}
if( nHref>=nHrefAlloc ){
nHrefAlloc = nHrefAlloc*2 + 10;
aHref = fossil_realloc(aHref, nHrefAlloc*sizeof(aHref[0]));
}
aHref[nHref++] = zUrl;
| | | | 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 |
return zHUrl;
}
if( nHref>=nHrefAlloc ){
nHrefAlloc = nHrefAlloc*2 + 10;
aHref = fossil_realloc(aHref, nHrefAlloc*sizeof(aHref[0]));
}
aHref[nHref++] = zUrl;
return mprintf("<a %s id='a%d' href='%R/honeypot'>", zExtra, nHref);
}
char *href(const char *zFormat, ...){
char *zUrl;
va_list ap;
va_start(ap, zFormat);
zUrl = vmprintf(zFormat, ap);
va_end(ap);
if( g.perm.Hyperlink && !g.javascriptHyperlink ){
char *zHUrl = mprintf("<a href=\"%h\">", zUrl);
fossil_free(zUrl);
return zHUrl;
}
if( nHref>=nHrefAlloc ){
nHrefAlloc = nHrefAlloc*2 + 10;
aHref = fossil_realloc(aHref, nHrefAlloc*sizeof(aHref[0]));
}
aHref[nHref++] = zUrl;
return mprintf("<a id='a%d' href='%R/honeypot'>", nHref);
}
/*
** Generate <form method="post" action=ARG>. The ARG value is inserted
** by javascript.
*/
void form_begin(const char *zOtherArgs, const char *zAction, ...){
|
| ︙ | ︙ | |||
1191 1192 1193 1194 1195 1196 1197 |
}
if( g.perm.Setup ){
const char *zRedir = P("redirect");
if( zRedir ) cgi_redirect(zRedir);
}
style_footer();
}
| > > > > > > > > > > | 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 |
}
if( g.perm.Setup ){
const char *zRedir = P("redirect");
if( zRedir ) cgi_redirect(zRedir);
}
style_footer();
}
/*
** This page is a honeypot for spiders and bots.
**
** WEBPAGE: honeypot
*/
void honeypot_page(void){
cgi_set_status(403, "Forbidden");
@ <p>Access by spiders and robots is forbidden</p>
}
|