[Home]UseMod

JKWiki | RecentChanges | New Login | Login
This page is read-only | View other revisions
Difference (from prior major revision) (no other diffs)

Added: 8a9,214

Installed Patches and Bugfixes




[Overview of all Wiki patches].

This Wiki is based on Usemod 1.0 and has following modifications:

# [Patch LoginLogoutByUsername] (/Usemod10LoginLogout? local)
# [Patch: EditFromTop]
# Patch /Usemod10NeedUsernameLoginLogoutBar?: Need Username and Login/Logout?-Bar]
# [Bugfixes: Marks Accumulated Bugfixes]
# [Patch: RestrictPages], modified, see below.
# Local config settings, see below
# [Patch: TOC for unnumbered headings]
# [Security Patch: Cross Site Scripting]
Be careful in copying this patch, because the site interprets some HTML entities instead use the following corrected patch. (where the replacement regular expressions for "&", "<" and ">" are fixed)
From the [XssFix Talk page], where to fix line 732 (of the current patched version) because function Ts() quotes where it shouldn't.

--- wiki.pl (Revision 193)
+++ wiki.pl (Arbeitskopie)
@@ -376,8 +376,13 @@
}

sub Ts {
- my ($text, $string) = @_;
+ my ($text, $string, $noquote) = @_;

+ unless($noquote) {
+ $string =~ s/&/&amp;/g;
+ $string =~ s/</&lt;/g;
+ $string =~ s/>/&gt;/g;
+ }
$text = T($text);
$text =~ s/\%s/$string/;
return $text;
@@ -385,9 +390,17 @@

sub Tss {
my $text = $_[0];
+ my @args = @_;
+ @args = map {
+ my $a = $_;
+ $a =~ s/&/&amp;/g;
+ $a =~ s/</&lt;/g;
+ $a =~ s/>/&gt;/g;
+ $a;
+ } @args;

$text = T($text);
- $text =~ s/\%([1-9])/$_[$1]/ge;
+ $text =~ s/\%([1-9])/$args[$1]/ge;
return $text;
}

@@ -1299,7 +1312,7 @@
$result .= '<div class=wikiheader>';
if ($oldId ne '') {
$result .= $q->h3('(' . Ts('redirected from %s',
- &GetEditLink($oldId, $oldId)) . ')');
+ &GetEditLink($oldId, $oldId), 1) . ')');
}
if ((!$embed) && ($LogoUrl ne "")) {
$logoImage = "img src=\"$LogoUrl\" alt=\"$altText\" border=0";
@@ -1425,7 +1438,7 @@
$result .= ' ' . &TimeToText($Section{ts});
if ($AuthorFooter) {
$result .= ' ' . Ts('by %s', &GetAuthorLink($Section{'host'},
- $Section{'username'}, $Section{'id'}));
+ $Section{'username'}, $Section{'id'}), 1);
}
}
if ($UseDiff) {
@@ -3290,7 +3303,7 @@
print ' (', T('Your user name is'), ' ',
&GetPageLink($userName) . ') ';
} else {
- print ' (', Ts('Visit %s to set your user name.', &GetPrefsLink()), ') ';
+ print ' (', Ts('Visit %s to set your user name.', &GetPrefsLink(), 1), ') ';
}
print $q->submit(-name=>'Preview', -value=>T('Preview')), "\n";
if ($isConflict) {

Addition to "XssFix?":

--- wiki.cgi.OLD 2019-09-24 12:58:15.000000000 +0200
+++ wiki.cgi 2019-09-24 12:58:27.000000000 +0200
@@ -729,7 +729,7 @@

$idOnly = &GetParam("rcidonly", "");
if ($idOnly && $showHTML) {
- print '<b>(' . Ts('for %s only', &ScriptLink($idOnly, $idOnly))
+ print '<b>(' . Ts('for %s only', &ScriptLink($idOnly, $idOnly), 1)
. ')</b><br>';
}
if ($showHTML) {

Extensions ==


Login with username and Logout function ===

/Usemod10LoginLogout?: Patch against Usemod 1.0

Need Username and Login/Logout?-Bar




Taken from [LoginRework], but changed a little bit, to fit better with /Usemod10LoginLogout?.

Restrict Pages Patch




Take from [usemod.com: RestrictPages patch]
but slightly modified to provide following extension in the restrict-file:
* Usernames (already included)
* Hostnames/Domains?, must have a trailing "@", e.g. sub.my.domain@, matching everthing *sub.my.domain
* IP-Host- oder Networkadresses, must have a leading "@", e.g. @192.168.1., matching 192.168.1.*


518c518
< return 1 if grep {$UserData{'username'} eq $_} @users;
---
> return 1 if grep {$UserData{'username'} eq $_ or substr($ENV{'REMOTE_HOST'}.'@',rindex($ENV{'REMOTE_HOST'}.'@',$_)) eq $_ or index('@'.$ENV{'REMOTE_ADDR'},$_) == 0} @users;

Image Parameter




Image URL may be appended with options starting with "?", multiple times separated by "&" of kind
* height=VALUE
* width=VALUE
* border=VALUE

e.g.

https:/~jklasek/images/euro/Griechenland2015SpyrosLouis.jpg?width=120px&height=120px&border=1

Showing

https:/~jklasek/images/euro/Griechenland2015SpyrosLouis.jpg?width=120px&height=120px&border=1

Patch:

*** REV/wiki.cgi.2024-01-30 2024-01-30 16:14:05.000000000 +0100
--- REV/wiki.cgi.2025-04-19 2025-04-19 03:42:06.000000000 +0200
***************
*** 2018,2026 ****
sub UrlLinkOrImage {
my ($url, $name, $useImage) = @_;

# Restricted image URLs so that mailto:foo@bar.gif is not an image
if ($useImage && &ImageAllowed($url)) {
! return "<img src=\"$url\">";
}
return "<a href=\"$url\">$name</a>";
}
--- 2018,2033 ----
sub UrlLinkOrImage {
my ($url, $name, $useImage) = @_;

+ my $urlopt;
+ ($url, $urlopt) = split(/\?/,$url);
+
# Restricted image URLs so that mailto:foo@bar.gif is not an image
if ($useImage && &ImageAllowed($url)) {
! my $opt = "";
! while ($urlopt =~ s/\b((?:border|width|height)=[^&\;]+)//ic) {
! $opt .= " $1";
! }
! return "<img src=\"$url\"$opt>";
}
return "<a href=\"$url\">$name</a>";
}

Local config settings





--- wiki.cgi.patch-5 Sat Feb 11 01:12:06 2006
+++ wiki.cgi Sat Nov 12 01:52:31 2005
@@ -150,11 +150,11 @@
$NonEnglish = 0; # 1 = extra link chars, 0 = only A-Za-z chars
$ThinLine = 0; # 1 = fancy <hr> tags, 0 = classic wiki <hr>
$BracketText = 1; # 1 = allow [URL text], 0 = no link descriptions
-$UseAmPm = 1; # 1 = use am/pm in times, 0 = use 24-hour times
+$UseAmPm = 0; # 1 = use am/pm in times, 0 = use 24-hour times JK
$UseIndex = 0; # 1 = use index file, 0 = slow/reliable method
$UseHeadings = 1; # 1 = allow = h1 text =, 0 = no header formatting
$NetworkFile = 1; # 1 = allow remote file:, 0 = no file:// links
-$BracketWiki = 0; # 1 = [WikiLnk txt] link, 0 = no local descriptions
+$BracketWiki = 1; # 1 = [WikiLnk txt] link, 0 = no local descriptions JK
$UseLookup = 1; # 1 = lookup host names, 0 = skip lookup (IP only)
$FreeUpper = 1; # 1 = force upper case, 0 = do not force case
$FastGlob = 1; # 1 = new faster code, 0 = old compatible code
@@ -163,14 +163,14 @@
# 2 = enable but suppress display
$SlashLinks = 0; # 1 = use script/action links, 0 = script?action
$UpperFirst = 1; # 1 = free links start uppercase, 0 = no ucfirst
-$AdminBar = 1; # 1 = admins see admin links, 0 = no admin bar
+$AdminBar = 1; # 1 = admins see admin links, 0 = no admin bar JK
$RepInterMap = 0; # 1 = intermap is replacable, 0 = not replacable
$ConfirmDel = 1; # 1 = delete link confirm page, 0 = immediate delete
$MaskHosts = 0; # 1 = mask hosts/IPs, 0 = no masking
$LockCrash = 0; # 1 = crash if lock stuck, 0 = auto clear locks
$HistoryEdit = 0; # 1 = edit links on history page, 0 = no edit links
$OldThinLine = 0; # 1 = old ==== thick line, 0 = ------ for thick line
-$NumberDates = 0; # 1 = 2003-6-17 dates, 0 = June 17, 2003 dates
+$NumberDates = 1; # 1 = 2003-6-17 dates, 0 = June 17, 2003 dates JK
$ParseParas = 0; # 1 = new paragraph markup, 0 = old markup
$AuthorFooter = 1; # 1 = show last author in footer, 0 = do not show
$AllUpload = 0; # 1 = anyone can upload, 0 = only editor/admins


UseMod Wiki

UseMod Wiki is an implementation of the original Wiki concept created by Ward Cunningham.

Source

The original site usemod.com has been given up on October 2023 (original URL was www.usemod.com/cgi-bin/wiki.pl).

A last appearance can be found on archive.org: [usemod.com from 2023-09-22].

Installed Patches and Bugfixes

[Overview of all Wiki patches].

This Wiki is based on Usemod 1.0 and has following modifications:

  1. [Patch LoginLogoutByUsername] (/Usemod10LoginLogout? local)
  2. [Patch: EditFromTop]
  3. Patch /Usemod10NeedUsernameLoginLogoutBar?: Need Username and Login/Logout?-Bar]
  4. [Bugfixes: Marks Accumulated Bugfixes]
  5. [Patch: RestrictPages], modified, see below.
  6. Local config settings, see below
  7. [Patch: TOC for unnumbered headings]
  8. [Security Patch: Cross Site Scripting]
    Be careful in copying this patch, because the site interprets some HTML entities instead use the following corrected patch. (where the replacement regular expressions for "&", "<" and ">" are fixed)
    From the [XssFix Talk page], where to fix line 732 (of the current patched version) because function Ts() quotes where it shouldn't.
--- wiki.pl     (Revision 193)
+++ wiki.pl     (Arbeitskopie)
@@ -376,8 +376,13 @@
 }
 
 sub Ts {
-  my ($text, $string) = @_;
+  my ($text, $string, $noquote) = @_;
 
+  unless($noquote) {
+    $string =~ s/&/&amp;/g;
+    $string =~ s/</&lt;/g;
+    $string =~ s/>/&gt;/g;
+  }
   $text = T($text);
   $text =~ s/\%s/$string/;
   return $text;
@@ -385,9 +390,17 @@
 
 sub Tss {
   my $text = $_[0];
+  my @args = @_;
+  @args = map {
+    my $a = $_;
+    $a =~ s/&/&amp;/g;
+    $a =~ s/</&lt;/g;
+    $a =~ s/>/&gt;/g;
+    $a;
+  } @args;
 
   $text = T($text);
-  $text =~ s/\%([1-9])/$_[$1]/ge;
+  $text =~ s/\%([1-9])/$args[$1]/ge;
   return $text;
 }
 
@@ -1299,7 +1312,7 @@
   $result .= '<div class=wikiheader>';
   if ($oldId ne '') {
     $result .= $q->h3('(' . Ts('redirected from %s', 
-                               &GetEditLink($oldId, $oldId)) . ')');
+                               &GetEditLink($oldId, $oldId), 1) . ')');
   }
   if ((!$embed) && ($LogoUrl ne "")) {
     $logoImage = "img src=\"$LogoUrl\" alt=\"$altText\" border=0";
@@ -1425,7 +1438,7 @@
     $result .= ' ' . &TimeToText($Section{ts});
     if ($AuthorFooter) {
       $result .= ' ' . Ts('by %s', &GetAuthorLink($Section{'host'},
-                                     $Section{'username'}, $Section{'id'}));
+                                     $Section{'username'}, $Section{'id'}), 1);
     }
   }
   if ($UseDiff) {
@@ -3290,7 +3303,7 @@
     print ' (', T('Your user name is'), ' ',
           &GetPageLink($userName) . ') ';
   } else {
-    print ' (', Ts('Visit %s to set your user name.', &GetPrefsLink()), ') ';
+    print ' (', Ts('Visit %s to set your user name.', &GetPrefsLink(), 1), ') ';
   }
   print $q->submit(-name=>'Preview', -value=>T('Preview')), "\n";
   if ($isConflict) { 
Addition to "XssFix?":
--- wiki.cgi.OLD	2019-09-24 12:58:15.000000000 +0200
+++ wiki.cgi	2019-09-24 12:58:27.000000000 +0200
@@ -729,7 +729,7 @@
 
   $idOnly = &GetParam("rcidonly", "");
   if ($idOnly && $showHTML) {
-    print '<b>(' . Ts('for %s only', &ScriptLink($idOnly, $idOnly))
+    print '<b>(' . Ts('for %s only', &ScriptLink($idOnly, $idOnly), 1)
           . ')</b><br>';
   }
   if ($showHTML) {

Extensions

Login with username and Logout function

/Usemod10LoginLogout?: Patch against Usemod 1.0

Need Username and Login/Logout?-Bar

Taken from [LoginRework], but changed a little bit, to fit better with /Usemod10LoginLogout?.

Restrict Pages Patch

Take from [usemod.com: RestrictPages patch] but slightly modified to provide following extension in the restrict-file:

518c518
< return 1 if grep {$UserData{'username'} eq $_} @users;
---
> return 1 if grep {$UserData{'username'} eq $_ or substr($ENV{'REMOTE_HOST'}.'@',rindex($ENV{'REMOTE_HOST'}.'@',$_)) eq $_ or index('@'.$ENV{'REMOTE_ADDR'},$_) == 0} @users;

Image Parameter

Image URL may be appended with options starting with "?", multiple times separated by "&" of kind

e.g.

https:/~jklasek/images/euro/Griechenland2015SpyrosLouis.jpg?width=120px&height=120px&border=1
Showing

Patch:

*** REV/wiki.cgi.2024-01-30     2024-01-30 16:14:05.000000000 +0100
--- REV/wiki.cgi.2025-04-19     2025-04-19 03:42:06.000000000 +0200
***************
*** 2018,2026 ****
  sub UrlLinkOrImage {
    my ($url, $name, $useImage) = @_;

    # Restricted image URLs so that mailto:foo@bar.gif is not an image
    if ($useImage && &ImageAllowed($url)) {
!     return "<img src=\"$url\">";
    }
    return "<a href=\"$url\">$name</a>";
  }
--- 2018,2033 ----
  sub UrlLinkOrImage {
    my ($url, $name, $useImage) = @_;

+   my $urlopt;
+   ($url, $urlopt) = split(/\?/,$url);
+
    # Restricted image URLs so that mailto:foo@bar.gif is not an image
    if ($useImage && &ImageAllowed($url)) {
!     my $opt = "";
!     while ($urlopt =~ s/\b((?:border|width|height)=[^&\;]+)//ic) {
!         $opt .= " $1";
!     }
!     return "<img src=\"$url\"$opt>";
    }
    return "<a href=\"$url\">$name</a>";
  }

Local config settings

--- wiki.cgi.patch-5    Sat Feb 11 01:12:06 2006
+++ wiki.cgi    Sat Nov 12 01:52:31 2005
@@ -150,11 +150,11 @@
 $NonEnglish   = 0;      # 1 = extra link chars,   0 = only A-Za-z chars
 $ThinLine     = 0;      # 1 = fancy <hr> tags,    0 = classic wiki <hr>
 $BracketText  = 1;      # 1 = allow [URL text],   0 = no link descriptions
-$UseAmPm      = 1;      # 1 = use am/pm in times, 0 = use 24-hour times
+$UseAmPm      = 0;      # 1 = use am/pm in times, 0 = use 24-hour times                JK
 $UseIndex     = 0;      # 1 = use index file,     0 = slow/reliable method
 $UseHeadings  = 1;      # 1 = allow = h1 text =,  0 = no header formatting
 $NetworkFile  = 1;      # 1 = allow remote file:, 0 = no file:// links
-$BracketWiki  = 0;     # 1 = [WikiLnk txt] link, 0 = no local descriptions
+$BracketWiki  = 1;     # 1 = [WikiLnk txt] link, 0 = no local descriptions     JK
 $UseLookup    = 1;      # 1 = lookup host names,  0 = skip lookup (IP only)
 $FreeUpper    = 1;      # 1 = force upper case,   0 = do not force case
 $FastGlob     = 1;      # 1 = new faster code,    0 = old compatible code
@@ -163,14 +163,14 @@
                         # 2 = enable but suppress display
 $SlashLinks   = 0;      # 1 = use script/action links, 0 = script?action
 $UpperFirst   = 1;      # 1 = free links start uppercase, 0 = no ucfirst
-$AdminBar     = 1;      # 1 = admins see admin links, 0 = no admin bar
+$AdminBar     = 1;      # 1 = admins see admin links, 0 = no admin bar         JK
 $RepInterMap  = 0;      # 1 = intermap is replacable, 0 = not replacable
 $ConfirmDel   = 1;      # 1 = delete link confirm page, 0 = immediate delete
 $MaskHosts    = 0;      # 1 = mask hosts/IPs,      0 = no masking
 $LockCrash    = 0;      # 1 = crash if lock stuck, 0 = auto clear locks
 $HistoryEdit  = 0;      # 1 = edit links on history page, 0 = no edit links
 $OldThinLine  = 0;      # 1 = old ==== thick line, 0 = ------ for thick line
-$NumberDates  = 0;      # 1 = 2003-6-17 dates,     0 = June 17, 2003 dates
+$NumberDates  = 1;      # 1 = 2003-6-17 dates,     0 = June 17, 2003 dates     JK
 $ParseParas   = 0;      # 1 = new paragraph markup, 0 = old markup
 $AuthorFooter = 1;      # 1 = show last author in footer, 0 = do not show
 $AllUpload    = 0;      # 1 = anyone can upload,   0 = only editor/admins

JKWiki | RecentChanges | New Login | Login
This page is read-only | View other revisions | login=&lt;anonymous&gt;
Last edited April 19, 2025 4:48 am by JohannKlasek (diff)
Search: