<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://katlas.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jack21</id>
	<title>Knot Atlas - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://katlas.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jack21"/>
	<link rel="alternate" type="text/html" href="https://katlas.org/wiki/Special:Contributions/Jack21"/>
	<updated>2026-07-01T19:15:34Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.6</generator>
	<entry>
		<id>https://katlas.org/index.php?title=WikiLink_-_The_Mediawiki_Interface&amp;diff=58168</id>
		<title>WikiLink - The Mediawiki Interface</title>
		<link rel="alternate" type="text/html" href="https://katlas.org/index.php?title=WikiLink_-_The_Mediawiki_Interface&amp;diff=58168"/>
		<updated>2007-05-19T09:29:09Z</updated>

		<summary type="html">&lt;p&gt;Jack21: /* Troubleshooting */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;WikiLink is actually two separate things; firstly, a java class for interfacing with a mediawiki server, and secondly, a Mathematica package providing a wrapper around this. This page documents the Mathematica package, while the java class, and its addition functionality, will be documented elsewhere.&lt;br /&gt;
&lt;br /&gt;
WikiLink is available as a standalone package, suitable for use with any Mediawiki installation, and is included in the [[KnotTheory`]] package.&lt;br /&gt;
&lt;br /&gt;
====License====&lt;br /&gt;
&amp;lt;tt&amp;gt;WikiLink.nb&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;WikiLink.m&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;wikilink.jar&amp;lt;/tt&amp;gt; are copyright Scott Morrison, available under your choice of the MIT, Apache or GPL licenses. The other components are copyright by other parties, all available under the Apache license.&lt;br /&gt;
&lt;br /&gt;
====Download====&lt;br /&gt;
If you already have [[KnotTheory`]] installed, there&#039;s no need to install anything. The functionality of WikiLink is available as soon as you open KnotTheory`.&lt;br /&gt;
&lt;br /&gt;
Otherwise, download [http://katlas.math.toronto.edu/svn/WikiLink/tags/stable/WikiLink.zip WikiLink.zip]. Unzip this anywhere you like. This will create a subdirectory called WikiLink, containing (at least) these files:&lt;br /&gt;
{| border=1&lt;br /&gt;
|-&lt;br /&gt;
!Filename&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;mathematica/WikiLink.nb&amp;lt;/tt&amp;gt;&lt;br /&gt;
| The Mathematica notebook containing wrapper function definitions.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;mathematica/WikiLink.m&amp;lt;/tt&amp;gt;&lt;br /&gt;
| The Mathematica package automatically generated from &amp;lt;tt&amp;gt;WikiLink.nb&amp;lt;/tt&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;tt&amp;gt;wikilink.jar&amp;lt;/tt&amp;gt;&lt;br /&gt;
| The WikiLink java classes and source code.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;tt&amp;gt;jars/jdom.jar&amp;lt;/tt&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;jars/commons-httpclient-3.0-rc2.jar&amp;lt;/tt&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;jars/commons-codec-1.3.jar&amp;lt;/tt&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;jars/commons-lang-2.1.jar&amp;lt;/tt&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
&amp;lt;tt&amp;gt;jars/commons-logging.jar&amp;lt;/tt&amp;gt;&amp;lt;br/&amp;gt;&lt;br /&gt;
| Libraries (all available under either GPL or the Apache license) required by &amp;lt;tt&amp;gt;wikilink.jar&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Importing the package in Mathematica====&lt;br /&gt;
If you&#039;re not using KnotTheory`, first, you&#039;ll need to set some paths, so WikiLink` can find the java files it needs. You need to add the &amp;quot;mathematica/&amp;quot; subdirectory of the WikiLink distribution to the Mathematica $Path.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--$$WikiLinkPath = &amp;quot;/path/to/WikiLink/mathematica/&amp;quot;;$$--&amp;gt;&lt;br /&gt;
&amp;lt;!--Robot Land, no human edits to &amp;quot;END&amp;quot;--&amp;gt;&lt;br /&gt;
{{In|&lt;br /&gt;
n  = 1 |&lt;br /&gt;
in = &amp;lt;nowiki&amp;gt;WikiLinkPath = &amp;quot;/path/to/WikiLink/mathematica/&amp;quot;;&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&amp;lt;!--END--&amp;gt;&lt;br /&gt;
&amp;lt;!--$$AppendTo[$Path, WikiLinkPath];$$--&amp;gt;&lt;br /&gt;
&amp;lt;!--Robot Land, no human edits to &amp;quot;END&amp;quot;--&amp;gt;&lt;br /&gt;
{{In|&lt;br /&gt;
n  = 2 |&lt;br /&gt;
in = &amp;lt;nowiki&amp;gt;AppendTo[$Path, WikiLinkPath];&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&amp;lt;!--END--&amp;gt;&lt;br /&gt;
&amp;lt;!--$$&amp;lt;&amp;lt;WikiLink`$$--&amp;gt;&lt;br /&gt;
&amp;lt;!--Robot Land, no human edits to &amp;quot;END&amp;quot;--&amp;gt;&lt;br /&gt;
{{In|&lt;br /&gt;
n  = 3 |&lt;br /&gt;
in = &amp;lt;nowiki&amp;gt;&amp;lt;&amp;lt;WikiLink`&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&amp;lt;!--END--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If you&#039;ve already loaded KnotTheory` (e.g., with the statement &amp;lt;code&amp;gt;&amp;lt;&amp;lt;KnotTheory`&amp;lt;/code&amp;gt;), you can simply begin at this point.&lt;br /&gt;
&lt;br /&gt;
We then try to connect to the wiki. Executing this line will prompt you for a username and password.&lt;br /&gt;
&amp;lt;!--This instruction is just a fake; we&#039;re not really running this one in Mathematica, because it makes a new WikiLink session! :-)&lt;br /&gt;
&amp;lt;!--CreateWikiConnection[&lt;br /&gt;
  &amp;quot;http://katlas.math.toronto.edu/w/index.php&amp;quot;,&lt;br /&gt;
  InputString[&amp;quot;Enter Your Username:&amp;quot;],&lt;br /&gt;
  InputString[&amp;quot;Enter Your Password:&amp;quot;]&lt;br /&gt;
  ]--&amp;gt;&lt;br /&gt;
{{In|&lt;br /&gt;
n  = 6 |&lt;br /&gt;
in = &amp;lt;nowiki&amp;gt;CreateWikiConnection[&lt;br /&gt;
  &amp;quot;http://katlas.math.toronto.edu/w/index.php&amp;quot;,&lt;br /&gt;
  InputString[&amp;quot;Enter Your Username:&amp;quot;],&lt;br /&gt;
  InputString[&amp;quot;Enter Your Password:&amp;quot;]&lt;br /&gt;
  ]&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&lt;br /&gt;
The function &amp;lt;code&amp;gt;WikiUserName[]&amp;lt;/code&amp;gt; checks that we&#039;re logged in&lt;br /&gt;
&amp;lt;!--$$?WikiUserName$$--&amp;gt;&lt;br /&gt;
&amp;lt;!--Robot Land, no human edits to &amp;quot;END&amp;quot;--&amp;gt;&lt;br /&gt;
{{HelpLine|&lt;br /&gt;
n  = 4 |&lt;br /&gt;
in = &amp;lt;nowiki&amp;gt;WikiUserName&amp;lt;/nowiki&amp;gt; |&lt;br /&gt;
out= &amp;lt;nowiki&amp;gt;WikiUserName[] returns either the name of the user you are logged in as, your IP address if you&#039;re not logged in, or $Failed if something more complicated has happened!&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&amp;lt;!--END--&amp;gt;&lt;br /&gt;
&amp;lt;!--$$WikiUserName[]$$--&amp;gt;&lt;br /&gt;
&amp;lt;!--Robot Land, no human edits to &amp;quot;END&amp;quot;--&amp;gt;&lt;br /&gt;
{{InOut|&lt;br /&gt;
n  = 5 |&lt;br /&gt;
in = &amp;lt;nowiki&amp;gt;WikiUserName[]&amp;lt;/nowiki&amp;gt; |&lt;br /&gt;
out= &amp;lt;nowiki&amp;gt;ScottManualRobot&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&amp;lt;!--END--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Usage====&lt;br /&gt;
WikiLink` provides functions for checking your login status, getting and setting pages, as well as transparently extending some of Mathematica&#039;s string manipulation functions to wiki pages.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--$$?WikiUserName$$--&amp;gt;&lt;br /&gt;
&amp;lt;!--Robot Land, no human edits to &amp;quot;END&amp;quot;--&amp;gt;&lt;br /&gt;
{{HelpLine|&lt;br /&gt;
n  = 6 |&lt;br /&gt;
in = &amp;lt;nowiki&amp;gt;WikiUserName&amp;lt;/nowiki&amp;gt; |&lt;br /&gt;
out= &amp;lt;nowiki&amp;gt;WikiUserName[] returns either the name of the user you are logged in as, your IP address if you&#039;re not logged in, or $Failed if something more complicated has happened!&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&amp;lt;!--END--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--$$?WikiGetPageText$$--&amp;gt;&lt;br /&gt;
&amp;lt;!--Robot Land, no human edits to &amp;quot;END&amp;quot;--&amp;gt;&lt;br /&gt;
{{HelpLine|&lt;br /&gt;
n  = 7 |&lt;br /&gt;
in = &amp;lt;nowiki&amp;gt;WikiGetPageText&amp;lt;/nowiki&amp;gt; |&lt;br /&gt;
out= &amp;lt;nowiki&amp;gt;WikiGetPageText[pagename] returns the raw text of the specified page.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&amp;lt;!--END--&amp;gt;&lt;br /&gt;
&amp;lt;!--$$?WikiSetPageText$$--&amp;gt;&lt;br /&gt;
&amp;lt;!--Robot Land, no human edits to &amp;quot;END&amp;quot;--&amp;gt;&lt;br /&gt;
{{HelpLine|&lt;br /&gt;
n  = 8 |&lt;br /&gt;
in = &amp;lt;nowiki&amp;gt;WikiSetPageText&amp;lt;/nowiki&amp;gt; |&lt;br /&gt;
out= &amp;lt;nowiki&amp;gt;WikiSetPageText[pagename, text] overwrites the contents of the specificied page with the given text.&lt;br /&gt;
WikiSetPageText[pagename, text, summary] overwrites the contents of the specificied page with the given text and notes summary in the change log.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&amp;lt;!--END--&amp;gt;&lt;br /&gt;
&amp;lt;!--$$?WikiSetPageTexts$$--&amp;gt;&lt;br /&gt;
&amp;lt;!--Robot Land, no human edits to &amp;quot;END&amp;quot;--&amp;gt;&lt;br /&gt;
{{HelpLine|&lt;br /&gt;
n  = 9 |&lt;br /&gt;
in = &amp;lt;nowiki&amp;gt;WikiSetPageTexts&amp;lt;/nowiki&amp;gt; |&lt;br /&gt;
out= &amp;lt;nowiki&amp;gt;WikiSetPageText[{{pagename1, text1},{pagename2,text2},...}] efficiently sets multiple pages, by first checking which texts are already up to date.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&amp;lt;!--END--&amp;gt;&lt;br /&gt;
&amp;lt;!--$$?WikiUploadFile$$--&amp;gt;&lt;br /&gt;
&amp;lt;!--Robot Land, no human edits to &amp;quot;END&amp;quot;--&amp;gt;&lt;br /&gt;
{{HelpLine|&lt;br /&gt;
n  = 10 |&lt;br /&gt;
in = &amp;lt;nowiki&amp;gt;WikiUploadFile&amp;lt;/nowiki&amp;gt; |&lt;br /&gt;
out= &amp;lt;nowiki&amp;gt;WikiUploadFile[name, description] uploads the specified file to the wiki.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&amp;lt;!--END--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Thus for example after&lt;br /&gt;
&amp;lt;!--$$WikiSetPageText[&amp;quot;Sandbox&amp;quot;, &amp;quot;A robotic edit, at 19:39, 31-August-2005.&amp;quot;]$$--&amp;gt;&lt;br /&gt;
&amp;lt;!--Robot Land, no human edits to &amp;quot;END&amp;quot;--&amp;gt;&lt;br /&gt;
{{InOut|&lt;br /&gt;
n  = 11 |&lt;br /&gt;
in = &amp;lt;nowiki&amp;gt;WikiSetPageText[&amp;quot;Sandbox&amp;quot;, &amp;quot;A robotic edit, at 19:39, 31-August-2005.&amp;quot;]&amp;lt;/nowiki&amp;gt; |&lt;br /&gt;
out= &amp;lt;nowiki&amp;gt;True&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&amp;lt;!--END--&amp;gt;&lt;br /&gt;
we get&lt;br /&gt;
&amp;lt;!--$$WikiGetPageText[&amp;quot;Sandbox&amp;quot;]$$--&amp;gt;&lt;br /&gt;
&amp;lt;!--Robot Land, no human edits to &amp;quot;END&amp;quot;--&amp;gt;&lt;br /&gt;
{{InOut|&lt;br /&gt;
n  = 12 |&lt;br /&gt;
in = &amp;lt;nowiki&amp;gt;WikiGetPageText[&amp;quot;Sandbox&amp;quot;]&amp;lt;/nowiki&amp;gt; |&lt;br /&gt;
out= &amp;lt;nowiki&amp;gt;A robotic edit, at 19:39, 31-August-2005.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&amp;lt;!--END--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The function &amp;lt;code&amp;gt;WikiSetPageTexts&amp;lt;/code&amp;gt; is most useful for batch uploads, as it does considerably more error checking, and filters out edits which won&#039;t change the page text. It takes as argument a list of &amp;lt;code&amp;gt;{&amp;quot;title&amp;quot;, &amp;quot;text&amp;quot;}&amp;lt;/code&amp;gt; pairs, and returns a list of those pairs which failed.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--$$WikiSetPageTexts[{{&amp;quot;Sandbox&amp;quot;, &amp;quot;A robotic edit, by --~~&amp;quot;&amp;lt;&amp;gt;&amp;quot;~~&amp;quot;}, {&amp;quot;Sandbox2&amp;quot;, &amp;quot;The determinant of the knot [[3_1]] is 3.&amp;quot;}}]$$--&amp;gt;&lt;br /&gt;
&amp;lt;!--Robot Land, no human edits to &amp;quot;END&amp;quot;--&amp;gt;&lt;br /&gt;
{{InOut|&lt;br /&gt;
n  = 13 |&lt;br /&gt;
in = &amp;lt;nowiki&amp;gt;WikiSetPageTexts[{{&amp;quot;Sandbox&amp;quot;, &amp;quot;A robotic edit, by --~~&amp;quot;&amp;lt;&amp;gt;&amp;quot;~~&amp;quot;}, {&amp;quot;Sandbox2&amp;quot;, &amp;quot;The determinant of the knot [[3_1]] is 3.&amp;quot;}}]&amp;lt;/nowiki&amp;gt; |&lt;br /&gt;
out= &amp;lt;nowiki&amp;gt;{}&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&amp;lt;!--END--&amp;gt;&lt;br /&gt;
&amp;lt;!--$$WikiGetPageText[&amp;quot;Sandbox2&amp;quot;]$$--&amp;gt;&lt;br /&gt;
&amp;lt;!--Robot Land, no human edits to &amp;quot;END&amp;quot;--&amp;gt;&lt;br /&gt;
{{InOut|&lt;br /&gt;
n  = 14 |&lt;br /&gt;
in = &amp;lt;nowiki&amp;gt;WikiGetPageText[&amp;quot;Sandbox2&amp;quot;]&amp;lt;/nowiki&amp;gt; |&lt;br /&gt;
out= &amp;lt;nowiki&amp;gt;The determinant of the knot [[3_1]] is 3.&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&amp;lt;!--END--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=====String manipulation functions=====&lt;br /&gt;
&amp;lt;code&amp;gt;WikiLink`&amp;lt;/code&amp;gt; provides functions WikiPageMatchQ, WikiPageFreeQ, WikiStringReplace and WikiStringCases. Each function works likes its usual Mathematica partner, [http://documents.wolfram.com/mathematica/functions/StringMatchQ StringMatchQ], [http://documents.wolfram.com/mathematica/functions/StringFreeQ StringFreeQ], [http://documents.wolfram.com/mathematica/functions/StringReplace StringReplace] or [http://documents.wolfram.com/mathematica/functions/StringCases StringCases]. Instead of providing a string, or list of strings, as the first argument, you should give the name of a page, or a list of names.&lt;br /&gt;
&lt;br /&gt;
You can use these to perform all sorts of editing tricks.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--$$WikiPageMatchQ[{&amp;quot;Sandbox&amp;quot;, &amp;quot;Sandbox2&amp;quot;}, &amp;quot;determinant&amp;quot;]$$--&amp;gt;&lt;br /&gt;
&amp;lt;!--Robot Land, no human edits to &amp;quot;END&amp;quot;--&amp;gt;&lt;br /&gt;
{{InOut|&lt;br /&gt;
n  = 15 |&lt;br /&gt;
in = &amp;lt;nowiki&amp;gt;WikiPageMatchQ[{&amp;quot;Sandbox&amp;quot;, &amp;quot;Sandbox2&amp;quot;}, &amp;quot;determinant&amp;quot;]&amp;lt;/nowiki&amp;gt; |&lt;br /&gt;
out= &amp;lt;nowiki&amp;gt;{False, False}&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&amp;lt;!--END--&amp;gt;&lt;br /&gt;
&amp;lt;!--$$WikiPageFreeQ[{&amp;quot;Sandbox&amp;quot;, &amp;quot;Sandbox2&amp;quot;}, &amp;quot;[[&amp;quot;~~(DigitCharacter..)~~&amp;quot;_&amp;quot;~~(DigitCharacter..)~~&amp;quot;]]&amp;quot;]$$--&amp;gt;&lt;br /&gt;
&amp;lt;!--Robot Land, no human edits to &amp;quot;END&amp;quot;--&amp;gt;&lt;br /&gt;
{{InOut|&lt;br /&gt;
n  = 16 |&lt;br /&gt;
in = &amp;lt;nowiki&amp;gt;WikiPageFreeQ[{&amp;quot;Sandbox&amp;quot;, &amp;quot;Sandbox2&amp;quot;}, &amp;quot;[[&amp;quot;~~(DigitCharacter..)~~&amp;quot;_&amp;quot;~~(DigitCharacter..)~~&amp;quot;]]&amp;quot;]&amp;lt;/nowiki&amp;gt; |&lt;br /&gt;
out= &amp;lt;nowiki&amp;gt;{True, False}&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&amp;lt;!--END--&amp;gt;&lt;br /&gt;
&amp;lt;!--$$WikiStringCases[{&amp;quot;Sandbox&amp;quot;, &amp;quot;Sandbox2&amp;quot;}, &amp;quot;[[&amp;quot;~~ShortestMatch[__]~~&amp;quot;]]&amp;quot;]$$--&amp;gt;&lt;br /&gt;
&amp;lt;!--Robot Land, no human edits to &amp;quot;END&amp;quot;--&amp;gt;&lt;br /&gt;
{{InOut|&lt;br /&gt;
n  = 17 |&lt;br /&gt;
in = &amp;lt;nowiki&amp;gt;WikiStringCases[{&amp;quot;Sandbox&amp;quot;, &amp;quot;Sandbox2&amp;quot;}, &amp;quot;[[&amp;quot;~~ShortestMatch[__]~~&amp;quot;]]&amp;quot;]&amp;lt;/nowiki&amp;gt; |&lt;br /&gt;
out= &amp;lt;nowiki&amp;gt;{{Sandbox, {[[User:ScottManualRobot|ScottManualRobot]]}}, &lt;br /&gt;
 &lt;br /&gt;
  {Sandbox2, {[[3_1]]}}}&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&amp;lt;!--END--&amp;gt;&lt;br /&gt;
&amp;lt;!--$$WikiStringReplace[{&amp;quot;Sandbox&amp;quot;, &amp;quot;Sandbox2&amp;quot;}, &amp;quot;robotic edit&amp;quot;-&amp;gt;&amp;quot;robotic edit (using WikiLink`)]$$--&amp;gt;&lt;br /&gt;
&amp;lt;!--Robot Land, no human edits to &amp;quot;END&amp;quot;--&amp;gt;&lt;br /&gt;
{{InOut|&lt;br /&gt;
n  = 18 |&lt;br /&gt;
in = &amp;lt;nowiki&amp;gt;WikiStringReplace[{&amp;quot;Sandbox&amp;quot;, &amp;quot;Sandbox2&amp;quot;}, &amp;quot;robotic edit&amp;quot;-&amp;gt;&amp;quot;robotic edit (using WikiLink`)]&amp;lt;/nowiki&amp;gt; |&lt;br /&gt;
out= &amp;lt;nowiki&amp;gt;$Failed&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&amp;lt;!--END--&amp;gt;&lt;br /&gt;
&amp;lt;!--$$WikiGetPageTexts[{&amp;quot;Sandbox&amp;quot;, &amp;quot;Sandbox2&amp;quot;}]$$--&amp;gt;&lt;br /&gt;
&amp;lt;!--Robot Land, no human edits to &amp;quot;END&amp;quot;--&amp;gt;&lt;br /&gt;
{{InOut|&lt;br /&gt;
n  = 19 |&lt;br /&gt;
in = &amp;lt;nowiki&amp;gt;WikiGetPageTexts[{&amp;quot;Sandbox&amp;quot;, &amp;quot;Sandbox2&amp;quot;}]&amp;lt;/nowiki&amp;gt; |&lt;br /&gt;
out= &amp;lt;nowiki&amp;gt;{{Sandbox, A robotic edit, by\&lt;br /&gt;
 &lt;br /&gt;
    --[[User:ScottManualRobot|ScottManualRobot]] 14:54, 18 Feb 2006\&lt;br /&gt;
 &lt;br /&gt;
    (EST)}, {Sandbox2, The determinant of the knot [[3_1]] is 3.}}&amp;lt;/nowiki&amp;gt;}}&lt;br /&gt;
&amp;lt;!--END--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Troubleshooting====&lt;br /&gt;
The instruction &amp;lt;code&amp;gt;ShowJavaConsole[]&amp;lt;/code&amp;gt; will bring up a window in which some debugging information is displayed.&lt;br /&gt;
&lt;br /&gt;
[http://blog.eukhost.com/index.php?s=Troubleshooting Troubleshooting Articles]&lt;br /&gt;
&lt;br /&gt;
====Compatibility====&lt;br /&gt;
WikiLink has been tested against mediawiki 1.4.5beta3 and 1.4.7.&lt;br /&gt;
&lt;br /&gt;
WikiLink has known issues on mediawiki 1.5.0. Retrieving multiple pages at once is broken. This appears to be a mediawiki bug, and will not be fixed. The same problem does not occur on mediawiki 1.5.8.  --[[User:Scott|Scott]] 10:56, 27 Mar 2006 (EST)&lt;br /&gt;
&lt;br /&gt;
I expect WikiGetPage text to continue working in mediawiki 1.5 and beyond, because it uses the stable interface [[Special:Export]]. Logging in and setting pages will quite likely break in the next version. If you&#039;ve tried this, please let me know about your experiences. I&#039;m hoping that soon (1.5?) [[Special:Import]] will become available, and I can switch to using this. --[[User:Scott|Scott]] 15:57, 31 Aug 2005 (EDT)&lt;br /&gt;
&lt;br /&gt;
====Todo====&lt;br /&gt;
I&#039;d love to [http://ant.apache.org/manual/develop.html#writingowntask create an Ant task] which allows uploading a file to a wiki. We could then use this in build scripts for KnotTheory, etc. --[[User:Scott|Scott]] 04:07, 17 Sep 2005 (EDT)&lt;br /&gt;
&lt;br /&gt;
====See Also====&lt;br /&gt;
All of the Mathematica notebooks in [[:Category:Knot Atlas Maintenance Software]] rely on WikiLink, and so are good examples of how to use it.&lt;br /&gt;
&lt;br /&gt;
You may also be interested in the Wikipedia page on [http://en.wikipedia.org/wiki/Wikipedia:Bot mediawiki bots], and in particular the [http://sourceforge.net/projects/pywikipediabot/ Python Wikipedia Robot Framework].&lt;/div&gt;</summary>
		<author><name>Jack21</name></author>
	</entry>
	<entry>
		<id>https://katlas.org/index.php?title=Katlas_installation_notes&amp;diff=58165</id>
		<title>Katlas installation notes</title>
		<link rel="alternate" type="text/html" href="https://katlas.org/index.php?title=Katlas_installation_notes&amp;diff=58165"/>
		<updated>2007-05-15T09:32:55Z</updated>

		<summary type="html">&lt;p&gt;Jack21: /* Upgrading MySQL */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is [http://math.berkeley.edu/~scott/wiki/Katlas_installation_notes mirrored on Scott&#039;s wiki].&lt;br /&gt;
&lt;br /&gt;
Okay... these are our notes while trying to setup [http://katlas.math.toronto.edu/wiki/ the wiki on katlas].&lt;br /&gt;
&lt;br /&gt;
==Upgrading MySQL==&lt;br /&gt;
For better or worse, I decided to upgrade MySQL to version 4.0 before doing anything else. I mostly followed [http://dev.mysql.com/doc/mysql/en/linux-rpm.html these instructions].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;Warning: do not install MySQL 4.1. It is incompatible with mediawiki. Install version 4.0.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For this I need three RPMs which are all available with only a little digging at [http://www.mysql.com/ mysql.com]&lt;br /&gt;
* MySQL-shared-compat-4.0.25-0.i386.rpm &lt;br /&gt;
* MySQL-server-4.0.25-0.i386.rpm&lt;br /&gt;
* MySQL-client-4.0.25-0.i386.rpm&lt;br /&gt;
*[http://blog.eukhost.com/2006/06/09/steps-to-upgrade-mysql-on-the-server/ MySQL Upgrade on a Server]&lt;br /&gt;
&lt;br /&gt;
The first of these is required so we don&#039;t break dependencies while upgrading. Install it first, with&lt;br /&gt;
:rpm -iv MySQL-shared-compat-4.0.25-0.i386.rpm&lt;br /&gt;
Then upgrade the other two packages&lt;br /&gt;
:rpm -U MySQL-server-4.0.25-0.i386.rpm&lt;br /&gt;
:rpm -U MySQL-client-4.0.25-0.i386.rpm&lt;br /&gt;
&lt;br /&gt;
Note the warning the server install gives -- &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !&lt;br /&gt;
To do so, start the server, then issue the following commands:&lt;br /&gt;
/usr/bin/mysqladmin -u root password &#039;new-password&#039;&lt;br /&gt;
/usr/bin/mysqladmin -u root -h katlas.math.toronto.edu password &#039;new-password&#039;&lt;br /&gt;
See the manual for more instructions.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(note however that you need to upgrade the client package before mysqladmin is available to do this!)&lt;br /&gt;
&lt;br /&gt;
I also deleted the local anonymous account, and put a password on the remote anonymous account. (Ask [[User:Scott]] for these passwords.)&lt;br /&gt;
&lt;br /&gt;
==Apache==&lt;br /&gt;
I had to fix the server name, from katlas to katlas.math.toronto.edu in /etc/httpd/conf/httpd.conf&lt;br /&gt;
&lt;br /&gt;
I added&lt;br /&gt;
 AllowOverride FileInfo&lt;br /&gt;
 AllowOverride AuthConfig&lt;br /&gt;
in the httpd.conf file, in the section for /var/www/html, so I could use .htaccess files to rewrite the wiki URLs nicely, and to disallow access to phpMyAdmin.&lt;br /&gt;
&lt;br /&gt;
I added a [http://meta.wikimedia.org/wiki/Robots.txt robots.txt] file, to protect the wiki internals from spiders. --[[User:Scott|Scott]] 12:44, 19 Aug 2005 (EDT)&lt;br /&gt;
&lt;br /&gt;
I moved the document root from /var/www/html to /www/html. (Actually, I moved everything in /var/www to /www) This required the following steps&lt;br /&gt;
# in /var/www, as root &amp;lt;pre&amp;gt;cp -R --preserve * /www&amp;lt;/pre&amp;gt;&lt;br /&gt;
# in httpd.conf, replacing /var/www everywhere with /www&lt;br /&gt;
# in LocalSettings.php replacing /var/www with /www in the $IP line&lt;br /&gt;
# test everything seems to work!&lt;br /&gt;
# in /var, as root, &amp;lt;pre&amp;gt;rm -Rf www&amp;lt;/pre&amp;gt;&lt;br /&gt;
--[[User:Scott|Scott]] 12:44, 19 Aug 2005 (EDT)&lt;br /&gt;
&lt;br /&gt;
This messed up webalizer, however, so I modified the appropriate line in /etc/webalizer.conf. I also added a section in http.conf to make /usage world-readable. --[[User:Scott|Scott]] 13:03, 19 Aug 2005 (EDT)&lt;br /&gt;
&lt;br /&gt;
Restarting apache is best achieved by (as root)&lt;br /&gt;
&amp;lt;pre&amp;gt;/usr/sbin/apachectl graceful&amp;lt;/pre&amp;gt;&lt;br /&gt;
or&lt;br /&gt;
&amp;lt;pre&amp;gt;/etc/rc.d/init.d/httpd restart&amp;lt;/pre&amp;gt;--[[User:Scott|Scott]] 13:17, 19 Aug 2005 (EDT)&lt;br /&gt;
&lt;br /&gt;
Error logs can be found at /var/log/httpd --[[User:Scott|Scott]] 10:33, 26 Aug 2005 (EDT)&lt;br /&gt;
&lt;br /&gt;
We had a nasty (to diagnose!) problem with uploading large files. We had to edit /etc/httpd/conf.d/php.conf, modifying the LimitRequestBody line. --[[User:Scott|Scott]] 11:08, 23 Aug 2005 (EDT)&lt;br /&gt;
&lt;br /&gt;
===creating new accounts===&lt;br /&gt;
As root, do something like&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ htpasswd -m /www/.htpasswd sally&lt;br /&gt;
New password: *******&lt;br /&gt;
Re-type new password: *******&lt;br /&gt;
Adding password for user sally&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==phpMyAdmin==&lt;br /&gt;
Just unzip&#039;d it into phpMyAdmin, editted the config.inc.php, created a .htpassword file and added a &amp;lt;nowiki&amp;gt;&amp;lt;Directory&amp;gt;&amp;lt;/nowiki&amp;gt; entry to httpd.conf --[[User:Scott|Scott]] 10:34, 26 Aug 2005 (EDT)&lt;br /&gt;
&lt;br /&gt;
==MediaWiki==&lt;br /&gt;
I added the namespace &amp;quot;Data&amp;quot;, and later &amp;quot;Article&amp;quot;, as per [http://meta.wikimedia.org/wiki/Help:Custom_namespaces these instructions], adding&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$wgExtraNamespaces =&lt;br /&gt;
       array(100 =&amp;gt; &amp;quot;Data&amp;quot;,&lt;br /&gt;
             101 =&amp;gt; &amp;quot;Data_talk&amp;quot;,&lt;br /&gt;
             102 =&amp;gt; &amp;quot;Article&amp;quot;,&lt;br /&gt;
             103 =&amp;gt; &amp;quot;Article_talk&amp;quot;);&lt;br /&gt;
# Enable subpages in the knot data namespace&lt;br /&gt;
$wgNamespacesWithSubpages[100] = 1;&lt;br /&gt;
$wgNamespacesWithSubpages[101] = 1;&lt;br /&gt;
$wgNamespacesWithSubpages[102] = 1;&lt;br /&gt;
$wgNamespacesWithSubpages[103] = 1;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
to LocalSettings.php. Do not use spaces in the namespace names, only underscores.&lt;br /&gt;
&lt;br /&gt;
===Enable &amp;lt;nowiki&amp;gt;&amp;lt;math&amp;gt;&amp;lt;/math&amp;gt;&amp;lt;/nowiki&amp;gt; processing===&lt;br /&gt;
First, I made the /images directory writable.&lt;br /&gt;
&lt;br /&gt;
Next, I installed ocaml (download the sources, ./configure, make world, make bootstrap, make opt, make install). What a pain! After that, go to the math directory under the wiki installation, and run make.&lt;br /&gt;
&lt;br /&gt;
Finally, edit LocalSettings.php to enable TeX.&lt;br /&gt;
&lt;br /&gt;
Later, we started modifying texvc, to allow more symbols from amssymb, and to allow use of Dror&#039;s [http://www.math.toronto.edu/~drorbn/projects/dbnsymb/dbnsymbman.html dbnsymb]. This required modifications to [[Texutil.ml]], and recompiling texvc (just run make). --[[User:Scott|Scott]] 15:10, 29 Aug 2005 (EDT)&lt;br /&gt;
&lt;br /&gt;
====Installing the Font dbnsymb====&lt;br /&gt;
&lt;br /&gt;
# Download the files dbnsymb.mf and dbnsymb.sty from [http://www.math.toronto.edu/~drorbn/projects/dbnsymb/dbnsymbman.html].&lt;br /&gt;
# Put dbnsymb.mf at &amp;quot;/usr/share/texmf/fonts/source/public&amp;quot;.&lt;br /&gt;
# Put dbnsymb.sty at &amp;quot;/usr/share/texmf/tex/latex/misc&amp;quot;.&lt;br /&gt;
# Run the command &amp;quot;texhash&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Allowing .zip and .gif uploads===&lt;br /&gt;
In LocalSettings.php I added the line&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$wgFileExtensions = array( &#039;png&#039;,&#039;gif&#039;,&#039;jpg&#039;,&#039;jpeg&#039;,&#039;ogg&#039;,&#039;mp3&#039;,&#039;pdf&#039;,&#039;zip&#039;,&#039;gz&#039;,&#039;nb&#039;,&#039;m&#039;,&#039;lhs&#039;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Marking users as bots===&lt;br /&gt;
See [http://meta.wikimedia.org/wiki/Setting_user_rights_in_MediaWiki]. Note that all our tables have the prefix mw_. As far as I can tell, you have to guess the user number (or you can log in as that user, and go to Preferences).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Modifying the navigation box===&lt;br /&gt;
Follow the instructions at [http://meta.wikimedia.org/wiki/MediaWiki_FAQ#How_to_customize_your_own_navigation_bar]&lt;br /&gt;
# Make changes to LocalSettings.php&lt;br /&gt;
# edit the pages Mediawiki:todo, Mediawiki:todo-url, Mediawiki:rolfsen, Mediawiki:rolfsen-url, etc. (these pages are protected.)&lt;br /&gt;
&lt;br /&gt;
Note that this will change in mediawiki 1.5, and become a lot easier.&lt;br /&gt;
&lt;br /&gt;
===Add &amp;quot;tour&amp;quot; sidebar box===&lt;br /&gt;
In skins/MonoBook.php, right above the line beginning with&lt;br /&gt;
 &amp;lt;?php if( $this-&amp;gt;data[&#039;language_urls&#039;] )&lt;br /&gt;
add lines as follows:&amp;lt;pre&amp;gt;&amp;lt;nowiki&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;portlet&amp;quot; id=&amp;quot;p-tour&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;h5&amp;gt;&amp;lt;a href=&amp;quot;/wiki/Tour_of_the_Knot_Atlas&amp;quot;&amp;gt;tour&amp;lt;/a&amp;gt;&amp;lt;/h5&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;pBody&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;ul&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&amp;lt;a href=&amp;quot;/wiki/5_2&amp;quot;&amp;gt;5 2&amp;lt;/a&amp;gt; (edit me!)&lt;br /&gt;
            &amp;lt;li&amp;gt;&amp;lt;a href=&amp;quot;/wiki/5_2_Quantum_Invariants&amp;quot;&amp;gt;5 2 Quantum Invariants&amp;lt;/a&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&amp;lt;a href=&amp;quot;/wiki/L10n85&amp;quot;&amp;gt;L10n85&amp;lt;/a&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&amp;lt;a href=&amp;quot;/wiki/The_Multivariable_Alexander_Polynomial&amp;quot;&amp;gt;Multivariable Alexander&amp;lt;/a&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&amp;lt;a href=&amp;quot;/wiki/Knot_Atlas:About&amp;quot;&amp;gt;About&amp;lt;/a&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&amp;lt;a href=&amp;quot;/wiki/Data:5_2/Bridge_Index&amp;quot;&amp;gt;Data:5_2/Bridge_Index&amp;lt;/a&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&amp;lt;a href=&amp;quot;/wiki/The_Mathematica_Package_KnotTheory%60&amp;quot;&amp;gt;Knot Theory`&amp;lt;/a&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&amp;lt;a href=&amp;quot;/wiki/How_to_Edit_this_Manual...&amp;quot;&amp;gt;How to Edit Manual...&amp;lt;/a&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&amp;lt;a href=&amp;quot;/wiki/Modifying_Knot_Pages&amp;quot;&amp;gt;Modifying Knot Pages&amp;lt;/a&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&amp;lt;a href=&amp;quot;/wiki/Special:Recentchanges&amp;quot;&amp;gt;Recent changes&amp;lt;/a&amp;gt;&lt;br /&gt;
            &amp;lt;li&amp;gt;&amp;lt;a href=&amp;quot;/wiki/To_Do&amp;quot;&amp;gt;To Do&amp;lt;/a&amp;gt; (history!)&lt;br /&gt;
            &amp;lt;/ul&amp;gt;&lt;br /&gt;
          &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
(this will surely change as we understand MediaWiki better)&lt;br /&gt;
&lt;br /&gt;
===Modifying the logo===&lt;br /&gt;
Grab [[Image:The_Knot_Atlas.png|36px]], resize it to 145x145, save it as /www/html/w/skins/common/images/katlas.png, and put the line&lt;br /&gt;
 $wgLogo             = &amp;quot;$wgStylePath/common/images/katlas.png&amp;quot;;&lt;br /&gt;
in LocalSettings.php. Also, grab [[Image:favicon.png|16px]], convert it to Windows .ico format and save it as favicon.ico at /www/html (not /www/html/w !).&lt;br /&gt;
&lt;br /&gt;
===Hacking mediawiki===&lt;br /&gt;
I modified [[ImagePage.php]] so redirects on image pages don&#039;t produce a spurious copy of the image. There&#039;s [http://bugzilla.wikimedia.org/show_bug.cgi?id=539 a bug] on bugzilla, where a different fix is being proposed. There&#039;s [http://meta.wikimedia.org/wiki/User:Sysy/Joshua_Oreman%27s_icon_extension another (not so good?) solution] as an extension.&lt;br /&gt;
&lt;br /&gt;
Later, I modified [[Math.php]], so if a math .png file is missing, but isn&#039;t immediately needed, it isn&#039;t regenerated. This let&#039;s us delete .png files from /w/images/math. To avoid creating too many such .png images in the first place, any robots uploading math formulas should have &#039;Leave TeX&#039; set in their math preferences. --[[User:69.110.11.59|69.110.11.59]] 04:59, 21 Sep 2005 (EDT)&lt;br /&gt;
&lt;br /&gt;
===Fixing search===&lt;br /&gt;
In file &amp;lt;tt&amp;gt;/www/html/w/skins/MonoBook.php&amp;lt;/tt&amp;gt; within &amp;lt;tt&amp;gt;&amp;amp;lt;form name=&amp;quot;searchform&amp;quot; ... &amp;amp;gt;&amp;lt;/tt&amp;gt; add &amp;lt;tt&amp;gt;method=&amp;quot;post&amp;quot;&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Automatic &amp;quot;&amp;amp;action=purge&amp;quot;===&lt;br /&gt;
In file &amp;lt;tt&amp;gt;/www/html/w/index.php&amp;lt;/tt&amp;gt; change the line reading &amp;lt;tt&amp;gt;$action = $wgRequest-&amp;gt;getVal( &#039;action&#039;, &#039;view&#039; );&amp;lt;/tt&amp;gt; to &amp;lt;tt&amp;gt;$action = $wgRequest-&amp;gt;getVal( &#039;action&#039;, &#039;purge&#039; );&amp;lt;/tt&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Several Wikis===&lt;br /&gt;
Allow logins on several wikis on the same server: Add the following line to LocalSettings.php after &amp;lt;code&amp;gt;$wgSiteName = ...&amp;lt;/code&amp;gt;:&lt;br /&gt;
 ini_set(&amp;quot;session.name&amp;quot;, &amp;quot;KnotAtlasSession&amp;quot; );&lt;br /&gt;
&lt;br /&gt;
===Spam blacklists===&lt;br /&gt;
After surviving several annoying spam attacks on my private wiki, I learnt how to deal with it, and I&#039;m applying what I&#039;ve learnt here. See /w/extensions/SpamBlacklist for the spam blacklist extension, and LocalSettings.php for the changes required there. Things should just work. Even better, if you&#039;re a sysop, you can just edit the page [[Local spam blacklist]] to add regular expressions.  I&#039;ve downloaded the latest copy of the [http://meta.wikimedia.org/wiki/Spam_blacklist spam blacklist from meta], but we should update it more often. Updating it is simply a matter of running /www/html/w/extensions/SpamBlacklist/load_lists --[[User:Scott|Scott]] 13:20, 29 Sep 2005 (EDT)&lt;br /&gt;
&lt;br /&gt;
Can we create a cron job for /www/html/w/extensions/SpamBlacklist/load_lists, or add it to our backup script? --[[User:Scott|Scott]] 13:20, 29 Sep 2005 (EDT)&lt;br /&gt;
&lt;br /&gt;
====Referer Spam====&lt;br /&gt;
To combat [http://www.spywareinfo.com/articles/referer_spam/ referer spam], I added a referer&#039;s black list as [http://www.joemaller.com/htaccess.txt here] to &amp;lt;tt&amp;gt;/www/html/.htaccess&amp;lt;/tt&amp;gt;, with some additions of my own following the log files. More should be added as needed. --[[User:Drorbn|Drorbn]] 09:33, 10 May 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
===Upgrading mediawiki===&lt;br /&gt;
katlas hasn&#039;t been upgraded from mediawiki 1.4.7 since it was first set up. Scott&#039;s successfully upgraded several other wikis, however.&lt;br /&gt;
Here&#039;s a recipe:&lt;br /&gt;
#mv w w-old&lt;br /&gt;
#gzip -d mediawiki-[version].tar.gz&lt;br /&gt;
#tar xvf mediawiki-[version].tar&lt;br /&gt;
#mv mediawiki-[version] w&lt;br /&gt;
#chmod a+w w/config&lt;br /&gt;
#Go to http://example.com/w/config/ and fill in all the fields. It&#039;s useful to have w-old/LocalSettings.php open as you do this, as many of the fields can be copied from this.&lt;br /&gt;
#If installation is successful, follow the instructions: mv w/config/LocalSettings.php w/&lt;br /&gt;
#Go through the new and old LocalSettings.php files, migrating changes across to the new LocalSettings.php&lt;br /&gt;
#Copy across the contents of the images/ directory.&lt;br /&gt;
#Remember to set permissions on the images/ directory (probably &amp;lt;code&amp;gt;chmod -R g+w images&amp;lt;/code&amp;gt;).&lt;br /&gt;
#If appropriate, copy across the math/ directory, containing our hacks (allowing use of dbnsymb, amongst other things).&lt;br /&gt;
&lt;br /&gt;
Actually, this wasn&#039;t entirely successful. Dror subsequently discovered that LaTeX support was broken, and that new pages couldn&#039;t be created. --[[User:Scott|Scott]] 13:00, 28 Mar 2006 (EST)&lt;br /&gt;
&lt;br /&gt;
The new page problem is because the spam blacklist extension installed is not compatible with mediawiki 1.5. We need to download a new copy of the spam blacklist extension for any wikis we upgrade to 1.5, from [http://cvs.sourceforge.net/viewcvs.py/wikipedia/extensions/SpamBlacklist/]. Alternatively, is should be safe to copy it from the omath wiki. The LaTeX support was broken because I hadn&#039;t made the images directory group writable (or, for that matter, copied across the images directory!) --[[User:Scott|Scott]] 13:28, 28 Mar 2006 (EST)&lt;br /&gt;
&lt;br /&gt;
==Server security==&lt;br /&gt;
Everyday we have scripts come through trying to login through sshd, with various user/pass combinations. If we need to a solution we could either&lt;br /&gt;
# move sshd to listen on another port&lt;br /&gt;
# install on the the scripts described at http://www.linux.com/article.pl?sid=05/09/15/1655234&lt;br /&gt;
&lt;br /&gt;
==up2date and python==&lt;br /&gt;
At some point I installed version 2.4 of python on katlas; we previously had version 2.2 installed, and something (I can&#039;t remember what) needed a more recent version. However, I never worked out how to properly install new python modules, and, as a result, there&#039;s various stuff missing from the python 2.4 installation, in particular the rpm module. This causes redhat&#039;s &amp;quot;up2date&amp;quot; program to fail, which is serious, as this is the main mechanism for automatically installing security updates from redhat. --[[User:Scott|Scott]] 08:36, 3 Apr 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
===Work around===&lt;br /&gt;
In /usr/bin, you&#039;ll find files &amp;quot;python2.2&amp;quot;, &amp;quot;python2.4&amp;quot; and &amp;quot;python&amp;quot;. &amp;quot;python2.2&amp;quot; is a copy of the originally installed &amp;quot;python&amp;quot;; &amp;quot;python2.4&amp;quot; is a symbolic link to my installation of python 2.4. Currently, the file &amp;quot;python&amp;quot; is an exact copy of the file &amp;quot;python2.2&amp;quot;. Things seem to work; in particular, &amp;quot;up2date&amp;quot; runs again.&lt;br /&gt;
&lt;br /&gt;
If you find something that needs python 2.4 (happily, running up2date brought the honest version of python up to 2.3), you could try replacing &amp;quot;python&amp;quot; with &amp;quot;python2.4&amp;quot;, but I really wouldn&#039;t recommend it. --[[User:Scott|Scott]] 08:36, 3 Apr 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
===Running up2date===&lt;br /&gt;
Running up2date for the first time in a long while seemed to work just fine. It complained about two sendmail configuration files, and made new versions with .rpmnew appended, but there were no essential differences. --[[User:Scott|Scott]] 09:45, 3 Apr 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
We should check with the toronto math department computer people to see if they&#039;re now happy with katlas.&lt;br /&gt;
&lt;br /&gt;
==Subversion==&lt;br /&gt;
We have a working subversion server going now. (I had to find the RHEL3 rpm, but it was easy after that!)&lt;br /&gt;
&lt;br /&gt;
We have several separate repositories, and it&#039;s easy (for root) to create more. Go to one of &lt;br /&gt;
*http://katlas.math.toronto.edu/svn/KnotAtlas&lt;br /&gt;
*http://katlas.math.toronto.edu/svn/KnotTheory&lt;br /&gt;
*http://katlas.math.toronto.edu/svn/WikiLink&lt;br /&gt;
*http://katlas.math.toronto.edu/svn/QuantumGroups&lt;br /&gt;
*http://katlas.math.toronto.edu/svn/Tungsten&lt;br /&gt;
to get started.&lt;br /&gt;
&lt;br /&gt;
To create a new repository, type something like&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
svnadmin create RepositoryName /home/svn&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
then change the ownership and permissions to match the other repositories. (The easiest way to do this is to login as svn, before using svnadmin, then &amp;lt;code&amp;gt;chmod -R g+w /home/svn/RepositoryName&amp;lt;/code&amp;gt; to allow commits via the web.)&lt;br /&gt;
&lt;br /&gt;
There&#039;s read-only public access; to commit changes you&#039;ll need to [[#creating new accounts|create an account]]. For windows, download [http://tortoisesvn.tigris.org/ TortoiseSVN], for eclipse use subclipse.&lt;br /&gt;
&lt;br /&gt;
I&#039;ve set up fine grained access control, as per [http://svnbook.red-bean.com/en/1.2/svn-book.html#svn.serverconfig.httpd.authz.perdir instructions in the SVN Book]. You&#039;ll need to edit &amp;lt;code&amp;gt;/home/svn/svnaccess.conf&amp;lt;/code&amp;gt; to grant people access to the repositories. --[[User:Scott|Scott]] 20:26, 9 Oct 2006 (EDT)&lt;br /&gt;
&lt;br /&gt;
Some people have had trouble with Mathematica notebooks in version control, although so far it&#039;s been fine for us. There are several solutions people have come up with. Do be very careful when resolving conflicts, on the other hand!&lt;br /&gt;
*http://www.itwm.fhg.de/as/asemployees/wichmann/nbcache.html A perl script for stripping out the cache data.&lt;br /&gt;
*Using the ShowShortBoxForm option in Mathematica [http://forums.wolfram.com/mathgroup/archive/2005/Mar/msg00175.html], which apparently makes notebooks less prone to arbitrary changes independent of real content changes.&lt;br /&gt;
&lt;br /&gt;
==iptables==&lt;br /&gt;
Arno&#039;s iptables is the way to go. Just edit&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/etc/iptables-firewall.conf&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Make sure to have &amp;quot;&amp;lt;tt&amp;gt;DROP_IANA_RESERVED=0&amp;lt;/tt&amp;gt;&amp;quot; to prevent the blocking of certain DSL/Cable providers.&lt;br /&gt;
&lt;br /&gt;
To restart, use&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/etc/init.d/rc.iptables restart&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Fisheye and Jira==&lt;br /&gt;
*run /home/fisheye/server/bin/start.sh and /home/jira/server/bin/startup.sh to start them&lt;br /&gt;
*to allow fisheye access to a new repository, see http://www.cenqua.com/fisheye/doc/1.1/admin/svnallow.html&lt;br /&gt;
*I modified /etc/rc.d/rc.local to automatically start fisheye and jira.&lt;br /&gt;
*getting the automatic proxying working on the new server required copying [[/etc/httpd/conf.d/jira.conf]] over.&lt;br /&gt;
&lt;br /&gt;
==Sendmail==&lt;br /&gt;
Not too sure, but I think the critical step to getting sendmail working again was&lt;br /&gt;
&lt;br /&gt;
 cd /etc/mail&lt;br /&gt;
 nano sendmail.mc&lt;br /&gt;
 (... editing the line &amp;lt;code&amp;gt;DAEMON_OPTIONS(`Port=smtp,Addr=128.100.68.50, Name=MTA&#039;)dnl&amp;lt;/code&amp;gt;&lt;br /&gt;
       by replacing 127.0.0.1 with the local IP ...)&lt;br /&gt;
 m4 /etc/mail/sendmail.mc &amp;gt; /etc/mail/sendmail.cf&lt;br /&gt;
 service sendmail restart&lt;br /&gt;
&lt;br /&gt;
==OS Upgrade, October 2006==&lt;br /&gt;
&lt;br /&gt;
On October 2006 we had a disk failure and had to replace it with a new disk and re-install the OS. After doing so, we had to modify the following OS files from the RedHat default:&lt;br /&gt;
* /etc/iptables-firewall.conf&lt;br /&gt;
* /etc/hosts.allow&lt;br /&gt;
* /etc/fstab&lt;br /&gt;
* /etc/passwd&lt;br /&gt;
* /etc/shadow&lt;br /&gt;
* /etc/group&lt;br /&gt;
* /etc/httpd/conf/httpd.conf&lt;br /&gt;
&lt;br /&gt;
Dror will be holding the old HD on his counter for at least a few months just to be sure everything is fine. To use it, open the box and reconnect it at the slot marked &amp;quot;Old HD&amp;quot;, reboot, go to /mnt/oldhd and run &amp;quot;mountme&amp;quot; or simply enter the lines&lt;br /&gt;
 mount /dev/Volume00/LogVol00 /mnt/oldhd/LogVol00&lt;br /&gt;
 mount /dev/Volume00/LogVol01 /mnt/oldhd/LogVol01&lt;br /&gt;
 mount /dev/Volume00/LogVol02 /mnt/oldhd/LogVol02&lt;br /&gt;
 mount /dev/Volume00/LogVol04 /mnt/oldhd/LogVol04&lt;/div&gt;</summary>
		<author><name>Jack21</name></author>
	</entry>
</feed>