If you want to run your own copy of the ЯOЯЯIM TTO, you can, because I made it available. Follow these instructions to download and setup your own ЯOЯЯIM TTO.
This is about version 1, iteration 2.
extern }" to "
This and earlier versions can also be downloaded from svn://bicyclesonthemoon.info/ottmirror.
Use "e" for read-only access.
If you want the source as it is right now, get it from http://1190.bicyclesonthemoon.info/ott/src/.
Go to where you downloaded the source. Open
re.awk. At hte top of
the file there are some paths defined. You'll have to change some of these. They
have to be double-escaped. The directories should not end with a
wgetpathto point to wget. Set
mawkpathto point to mawk.
propathto point there.
tmppathto point there.
mempathto point there. Create a file named "
name" there. Put your URL-encoded xkcd fora login in the first line and your URL-encoded password in the second line. Only you should have read access to the file.
mpost. Passwords can be found there.
logpathto point there.
mirrpathto point at the directory where the mirror is hosted. That's where you put the contents of
useragent2is used by bothasar_t, the mirror bot.
useragent3is used by bothasar_p, the post bot.
own_image_regexpto match the URL where the images are archived. The URL should be something like "
own_url_encodedto your URL-encoded mirror URL.
propathpoints to. Unless it's the same directory.
mirrpathpoints to. You may want to edit the following files:
np/top- the newpage top.
np/end- the newpage bottom.
top- the indexpage top.
end- the indexpage bottom.
post.htm- the post page.
info.htm- the information page.
update.htm- the update page.
###this. Don't change them. The programs will place their content there.
You have to set up server so that some URLs will link to some CGI programs.
/ott/log" should link to "
/ott/view" should link to "
/ott/mview" should link to "
/ott/update" should link to "
/ott/index" should link to "
/ott/post" should link to "
/ott/posted" should link to "
/ott/redirect" should link to "
/ott/mpview" should link to "
/ott" should link to "
That's how I did it in apache2:
Alias /ott/log /eizm/log/ottmirror
Allow from all
ScriptAlias /ott/view /eizm/pro/ottmirror/view
ScriptAlias /ott/mview /eizm/pro/ottmirror/mview
ScriptAlias /ott/update /eizm/pro/ottmirror/update
ScriptAlias /ott/index /eizm/pro/ottmirror/index
ScriptAlias /ott/post /eizm/pro/ottmirror/post
ScriptAlias /ott/posted /eizm/pro/ottmirror/posted
ScriptAlias /ott/redirect /eizm/pro/ottmirror/redirect
ScriptAlias /ott/mpview /eizm/pro/ottmirror/mpview
ScriptAliasMatch ^/ott/?$ /eizm/pro/ottmirror/index
bot2 (bothasar_t) is the thread archiving bot.
-i- the bot ID
-o- offset from the prievious page
-m- maximal number of pages in one run
-p- distance from the last page
-s- start position override
-w- wait between pages
-v- wait after download
-d- download avatars
-a- download attachments
-b- download images
-n- new log
-r- stay in present
bot3 (bothasar_p) is the post bot.
-w- wait between posts
-n- new log
The bots won't run on themselves. They need something that will start them at
regular time intervals. I will share my
20,50 * * * * /eizm/pro/ottmirror/bot2 -i2 -r -o1 -m5 -w9 -v5 -d -a
This bot runs every 30 minutes and updates the pages with new posts.
26 23 * * * /eizm/pro/ottmirror/bot2 -i3 -r -o5 -m10 -p2 -w9 -v5 -d -a -b
This bots runs every day and reloads the pages with new posts and 4 previous pages except the two last pages. Because there could be a delurker or someone could make edits which we don't want to miss.
23 * * * * /eizm/pro/ottmirror/bot2 -i1 -o0 -m3 -p2 -w9 -v5 -d -a -b
This bot runs every hour and goes slowly through the whole thread except the two latest pages. Because there can be temporal edits. (like the 1300 and 1800 repositories).
While the thread being catched up for the first time I'd recommend running only one copy of the bot at a faster rate than this.
7,27,47 * * * * /eizm/pro/ottmirror/bot3 -w15
This bot runs every 20 minutes and looks for new posts to be sent to the thread.
0 0 * * 1 /bin/mv /eizm/log/ottmirror/bot2.log.1 /eizm/log/ottmirror/bot2.log.1.lastweek
0 0 * * 1 /bin/mv /eizm/log/ottmirror/bot2.log.2 /eizm/log/ottmirror/bot2.log.2.lastweek
0 0 * * 1 /bin/mv /eizm/log/ottmirror/bot2.log.3 /eizm/log/ottmirror/bot2.log.3.lastweek
0 0 * * 1 /bin/mv /eizm/log/ottmirror/bot3.log /eizm/log/ottmirror/bot3.log.lastweek
This moves the log files once in a week. Otherwise they would grow to infinity.
if (tagvalue="")" to "
if ((ch ~ /[a-zA-Z0-9\.-_~]/)&&(all==""))" to "
if ((ch ~ /[a-zA-Z0-9\.\-_~]/)&&(all==""))".
The code (in pro.zip) is written by me, Balthasar Szczepański and is released
under the AGPL 3 license
since version 1, iteration 1.
Version.1, iteration.0 doesn't have any license defined.
If you managed to do everything described here you should have your own ЯOЯЯIM
TTO. Now wait for it until it catches the whole thread.
(Unless I forgot about something important here. Let me know if I did)Balthasar