To whom it may concern:
Anyone of you being interested in the latest
email notification patch "Enotif 1.33 for MediaWiki 1.3.7"
can send me a personal mail to
mailto:mail@tgries.de?Subject=Please%20send%20me%20the%20mw137+en133%20URL .
The documentation is already published and available as usual on
http://meta.wikipedia.org/Enotif .
Tom Gries
Berlin
Hi,
I created an account in bugzilla hoping I'd be able to specify an
obfuscated email to be displayed in bugzilla pages (it's been a while
since I used bugzilla and there was a bug in bugzilla.mozilla.org
about obfuscating email addresses long ago). Since that's not the case
:-(, I'm forced to get another email address for bugzilla. Now it
looks like I cannot change my email address in mediazilla, though
other bugzillas allow this. Is there a way to change my email address
in mediazilla or do I have to spam mediazilla with another account
(aka "sock puppet")?
Also it'd be nice if we could use our usernames in a wikimedia project
instead of email addresses to log into bugzilla. MediaWiki allows
(depending on a pref) mail to be sent to us through the 'Mail this
user' link, so confirming that someone is not "gratuitously
subscribing someone else" should be possible. Or we could continue
with our (simpler) "separate logins for each project" approach and
have mediazilla accept an arbitrary username and an optional email
address specification.
Also in the true wiki way of allowing anonymous contributions, there
should be some way for someone who wants to report just one bug he/she
happened to notice but doesn't want to continue with wikimedia
projects, to report a bug without the overhead of creating an account.
~~~, er... I mean [[Wikipedia:en:User:Paddu|]]
Plse. skip also this, if you are not interested in improvements to
recent-changes and page-history behaviour.
------
http://bugzilla.wikipedia.org/show_bug.cgi?id=804
I have created a Bugzilla enhancement entry which helps to keep track of
the contributions.
Plse. skip this now, if you are not interested in improvements to
recent-changes and page-history behaviour.
------
References: http://bugzilla.wikipedia.org/show_bug.cgi?id=603
(delete/undelete cycle does not preserve oldid)
http://bugzilla.wikipedia.org/show_bug.cgi?id=454 (Enotif 1.33)
Introducing an abbreviation: last-visited revision (LVR; lvr)
I would like to ask you something with respect to a suggestion to
improve the recent-changes and page-history behaviour.
Status:
======
As far as I understand the software and Brion, old_id is *not* a
permanent and fixed identifier for a certain revision of a page. It is
only valid for a while and under certain circumstances. However, the
Email-Notification patch (Enotif) and some users request a
"(diff-to-my-last-visited-revision)" (lvr-diff) link, which *is*
implemented in the recent Enotif 1.33 patch coming this weekend - based
on old_id - which works unless that lvr revision is deleted in the
databases e.g. by scheduled RC pruning.
Problems:
========
1) old_id cannot be used as 100%secure pointer to a certain revision
(eg. LVR) of a page.
2) Currently, any older revision of a page is deleted after a while
Question to you and proposal:
========================
Given, that the RC History may be pruned after a while and that old_id
can change due to a delete/undelete cycle of that page, I propose to
built an LVR-REPOSITORY (last-visited-revision), which can be compressed.
If a certain pageX is watched by a UserZ, I herewith propose to
permanently save the "last visited revision (lvr) of pageX". This is the
page revision just before the UserZ got an enotif, because someone else
edited the pageX to revision (lvr+1). Enotif 1.33 already has this
implemented and knows (lvr), but does currently not save the page
content. This pageX(lvr) must now neither be touched by regular RC
history pruning nor by delete/undelete cycles and must be saved. To free
memory resources, it needs theoretically only be saved *until* the
watching UserZ visits the *current* revision of page - as this action
automatically clears the notification flag (this mechanism being open
for further improvements).
In the worst case, we need a repository of size "total number of watched
pages of all watching users". For example, if 1.000 users have 50 pages
in each of their watchlists, we need a repository for 50.000 pages,
which stores the "last-visited-revisions" for all watched pages for all
users.
Please let me know, how you think about my proposal. Enotif could manage
the repository, as it keeps track of users visiting their watch-listed
pages. The repository can be a separate database or realized as flag in
the old and rc databases, which forbids the RC pruning or other routines
to manipulate (eg. delete) that certain LVR.
Invitation
=======
If you have another idea, or if I have overlooked something, which can
happen, please let me know this by mailto:mail@tgries.de?Subject=LVR .
Thanks in advance
Tom
Berlin
To keep everyone up to speed, this is a summary of the colo work
over the last few days:
* pliny and larousse are back, as well as two 4RU boxes (P3s) for testing
(sorry, i broke test1 and test2, so they need to be fixed when
jwales is at the colo, as does larousse on which the OS reinstall
wasn't finished).
* 5 new servers were installed yesterday and are running memtest, results
on monday (?)
* coronelli crashes on boot and is offline; moreri is offline for
unknown reasons.
(did someone put new RAM in coronelli? was it taken out afterwards? why
has it suddenly stopped working? find out in next week's episode..)
* after discussion with the colo people, we will have a gigE "soon"
(next week?).
this needs an SFP module for the switch which has/has not been ordered
(delete as appropriate). the existing "second uplink" was actually configured
on their end as a trunked port. no-one told us this. this would explain why it
didn't work. back to 100mbit for now. we can change our two /27s into a /26
but this has to be coordinated with both the colo and bomis or things will stop
working. this will give up the second /27's router IP as a usable address.
* many machines are now on the SCS, and most have console redirection;
* we have switch port assignment lists, but aaron will be recabling everything
next week anyway so they're useless.
Kate.
I'm attempting to do a new install that makes use of rewriting the
URL to remove index.php. If I use the IE browser, the page loads are
quick with each request generating 5 hits to the server. But with
Firefox 1.0PR, the page loads are slow because the browser is making
40-45 hits to the server. The page, once loaded, looks the same in
both browsers.
I'd be very grateful with any advice. I've gone over Rewrite_Rules
and Apache_config numerous times, but still can't figure this out.
I'd be happy to update one of those pages to help others in the
situation.
I'm using Apache 1, PHP 4 (all current). Apache was patched with the
ampersand patch. Here is the portion of my httpd.conf and
LocalSettings.php. Apache's error log has no errors.
DocumentRoot /home/domains/wiki.speedfc.com/htdocs
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/(stylesheets|images|skins)/
RewriteCond %{REQUEST_URI} !^/(redirect|texvc|index).php
RewriteCond %{REQUEST_URI} !^/error/(40(1|3|4)|500).html
RewriteCond %{REQUEST_URI} !^/favicon.ico
RewriteCond %{REQUEST_URI} !^/robots.txt
RewriteMap ampescape int:ampescape
RewriteRule ^/(.*)$ /index.php?title=${ampescape:$1} [L,QSA]
-------------
$wgScriptPath = "";
$wgScript = "$wgScriptPath";
$wgRedirectScript = "$wgScriptPath/redirect.php";
-------------
Here is my Apache access log when the IE request is made:
172.25.32.32 - - [30/Oct/2004:02:06:58 -0500] "GET /Main_Page
HTTP/1.1" 304 26 "http://wiki.speedfc.com/Main_Page" "Mozilla/4.0
(compatible; MSIE 6.0; Windows NT 5.1; MyIE2; SV1; Feedreader)"
172.25.32.32 - - [30/Oct/2004:02:06:58 -0500] "GET
/-?action=raw&gen=js HTTP/1.1" 302 38
"http://wiki.speedfc.com/Main_Page" "Mozilla/4.0 (compatible; MSIE
6.0; Windows NT 5.1; MyIE2; SV1; Feedreader)"
172.25.32.32 - - [30/Oct/2004:02:06:58 -0500] "GET
/-?action=raw&ctype=text%2Fjavascript&smaxage=18000&maxage=18000&gen=js&oldid=0
HTTP/1.1" 302 38 "http://wiki.speedfc.com/Main_Page" "Mozilla/4.0
(compatible; MSIE 6.0; Windows NT 5.1; MyIE2; SV1; Feedreader)"
172.25.32.32 - - [30/Oct/2004:02:06:58 -0500] "GET
/-?action=raw&gen=css HTTP/1.1" 302 38
"http://wiki.speedfc.com/Main_Page" "Mozilla/4.0 (compatible; MSIE
6.0; Windows NT 5.1; MyIE2; SV1; Feedreader)"
172.25.32.32 - - [30/Oct/2004:02:06:58 -0500] "GET
/-?action=raw&ctype=text%2Fcss&smaxage=18000&maxage=18000&gen=css&oldid=0
HTTP/1.1" 302 38 "http://wiki.speedfc.com/Main_Page" "Mozilla/4.0
(compatible; MSIE 6.0; Windows NT 5.1; MyIE2; SV1; Feedreader)"
-------------
And here is portion of my Apache log when Firefox makes the request:
172.25.32.32 - - [30/Oct/2004:02:08:28 -0500] "GET /Main_Page
HTTP/1.1" 304 26 "http://wiki.speedfc.com/Main_Page" "Mozilla/5.0
(Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20040913 Firefox/0.10"
172.25.32.32 - - [30/Oct/2004:02:08:28 -0500] "GET
/-?action=raw&gen=js HTTP/1.1" 302 38
"http://wiki.speedfc.com/Main_Page" "Mozilla/5.0 (Windows; U; Windows
NT 5.1; rv:1.7.3) Gecko/20040913 Firefox/0.10"
172.25.32.32 - - [30/Oct/2004:02:08:29 -0500] "GET
/-?action=raw&ctype=text%2Fjavascript&smaxage=18000&maxage=18000&gen=js&oldid=0
HTTP/1.1" 302 38 "http://wiki.speedfc.com/Main_Page" "Mozilla/5.0
(Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20040913 Firefox/0.10"
172.25.32.32 - - [30/Oct/2004:02:08:29 -0500] "GET
/-?action=raw&ctype=text%2Fjavascript&smaxage=18000&maxage=18000&gen=js&oldid=0
HTTP/1.1" 302 38 "http://wiki.speedfc.com/Main_Page" "Mozilla/5.0
(Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20040913 Firefox/0.10"
172.25.32.32 - - [30/Oct/2004:02:08:29 -0500] "GET
/-?action=raw&ctype=text%2Fjavascript&smaxage=18000&maxage=18000&gen=js&oldid=0
HTTP/1.1" 302 38 "http://wiki.speedfc.com/Main_Page" "Mozilla/5.0
(Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20040913 Firefox/0.10"
172.25.32.32 - - [30/Oct/2004:02:08:29 -0500] "GET
/-?action=raw&ctype=text%2Fjavascript&smaxage=18000&maxage=18000&gen=js&oldid=0
HTTP/1.1" 302 38 "http://wiki.speedfc.com/Main_Page" "Mozilla/5.0
(Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20040913 Firefox/0.10"
172.25.32.32 - - [30/Oct/2004:02:08:29 -0500] "GET
/-?action=raw&ctype=text%2Fjavascript&smaxage=18000&maxage=18000&gen=js&oldid=0
HTTP/1.1" 302 38 "http://wiki.speedfc.com/Main_Page" "Mozilla/5.0
(Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20040913 Firefox/0.10"
172.25.32.32 - - [30/Oct/2004:02:08:29 -0500] "GET
/-?action=raw&ctype=text%2Fjavascript&smaxage=18000&maxage=18000&gen=js&oldid=0
HTTP/1.1" 302 38 "http://wiki.speedfc.com/Main_Page" "Mozilla/5.0
(Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20040913 Firefox/0.10"
172.25.32.32 - - [30/Oct/2004:02:08:29 -0500] "GET
/-?action=raw&ctype=text%2Fjavascript&smaxage=18000&maxage=18000&gen=js&oldid=0
HTTP/1.1" 302 38 "http://wiki.speedfc.com/Main_Page" "Mozilla/5.0
(Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20040913 Firefox/0.10"
__________________________________
Do you Yahoo!?
Yahoo! Mail Address AutoComplete - You start. We finish.
http://promotions.yahoo.com/new_mail
Does anyone know what export options there are for MediaWiki? Ideally I
would like to select an article and export to pdf, word, or plain text
with the exported document containing proper formatting, including a
header image, styles, etc... Does anyone know of any projects that are
working on this feature or similar features?
Thanks, Andreas
Thanks again for all the help in getting
set up with a local install of MediaWiki.
I've just received word that one of the
sessions will have 72 people and the
other 38 for "Wiki Wiki Learning".
What do you think about approaching
Michael at the Linspire / Lindows Corp
and sharing the positive experience with
setting up MediaWiki? Could we suggest
he include the software in the Click-N-Run
Warehouse? Would this be possible and
would it be ok with the foundation and the
developers?
I'm so encouraged by the easy install and
the excellent setup that I'd be willing to
try it on an iMac... or the iBook, but only
after the conferences, the first of which
is in one more week.
With thanks to all who've responded to
my questions...
Sincerely,
Jay B.
On Wed, 27 Oct 2004 20:31:26 +0000 (UTC),
wikitech-l-request(a)wikimedia.org <wikitech-l-request(a)wikimedia.org>
wrote:
> 8. Success! Setting up MediaWiki for use in Presentation to
> Conferences (ilooy)
> Message: 9
> Date: Wed, 27 Oct 2004 23:04:57 +0300
> From: NSK <nsk2(a)wikinerds.org>
> Subject: Re: [Wikitech-l] Success! Setting up MediaWiki for use in
> Presentation to Conferences
> To: ilooy <ilooy.gaon(a)gmail.com>, Wikimedia developers
> <wikitech-l(a)wikimedia.org>
> Message-ID: <200410272304.57561.nsk2(a)wikinerds.org>
> Content-Type: text/plain; charset="iso-8859-1"
>
> On Wednesday 27 October 2004 22:50, ilooy wrote:
> > went very smoothly
>
> Good to hear that
>
> > http://localhost/wiki/index.php/Main_Page
>
> It's the same as http://127.0.0.1/wiki/index.php/Main_Page
>
> This is the IP address of your computer. There is nothing wrong with that.
>
> > http://linspiron/wiki/index.php/Main_Page
>
> That's the domain name of your computer. You choose the "linspiron" part
> during GNU/Linux installation (can be changed later).
>
> It's your computer; there is nothing wrong with that address.
>
> > somehow the ¨index.php¨ part doesn´t seem
>
> It's right.
>
> MediaWiki uses "pretty URLs" so instead of ? it uses / to make the URL more
> beautiful.
>
> --
> NSK
> Admin of http://portal.wikinerds.org
> Project Manager of http://www.nerdypc.org
> Project Manager of http://www.adapedia.org
>
The German wikipedia was approached by freenet.de, who have been very
kind hosting the German wikipedia CD image for us, about setting up a
wikipedia.de mirror within their pages.
Nothing unusual there, but I had a thought: Wouldn't it be easier in the
long run for us and other parties to
* set up an additional MySQL replication slave at our site
* probably without the passwords, or scramble them
* have others (like freenet.de) replicate from that slave
All they'd have to do would be to set up a read-only MediaWiki, probably
edit the skin to match their preferences, set the database to their
replication server, and be done. They'd practically get a real-time
mirror (maybe lacking a few minutes, but so what) without any maintenance.
Also, that would create an effective off-site backup of our db, very
up-to-date, excluding the user passwords, which should be
reconstructable from a "normal" dump for most users.
Alternatively, we could improve encryption of the passwords, and just
have them replicate everything. Or, we just replicate the cur table (if
that's possible) and write a "kiosk" mode into MediaWiki which ignores
everything involving users, old versions, etc.
What do you think?
Magnus
I have added LDAP authentication to MediaWiki. Unfortunately, I'm not sure
where to go to get the newest unstable cvs version of the software, so I
have added it to the 1.3.7 version. I'm sure the difference in
includes/SpecialUserLogin.php between the versions isn't great, but can
anyone tell me an easy way to get the latest unstable (through a web browser
preferably)?
I also have a few problems with using LDAP authentication in certain
circumstances, and would like to get some input from the community on them.
First let me describe how i've implemented it:
I've added 6 options to DefaultSettings.php and LocalSettings.php which are
the following when used by an admin:
$wgUseLDAP = true;
$wgLDAPDomainNames = array("testADdomain","testLDAPdomain");
$wgLDAPServerNames =
array("testADdomain"=>"testADserver.example.com","testLDAPdomain"=>"testLDAP
server.example.comtestLDAPserver2.example.com");
$wgLDAPSearchStrings = array("testADdomain"=>"TDOMAIN\\USER-NAME",
"testLDAPdomain"=>"cn=USER-NAME,ou=people,dc=example,dc=com");
$wgLDAPUseSSL = true;
$wgLDAPUseLocal = true;
In this example, there are three different domains, one is local, one is an
Active Directory domain, and the other is a normal LDAP domain (Sun
directory server, openLDAP, etc). The user must provide the search string
for a user's distinguished name (USER-NAME is substituted in
SpecialUserLogin.php with the actual user's loginname). Using SSL is
optional (although it is the default) and so is using the local domain
(which is the wiki itself, and is not on by default). Of course, using LDAP
is off by default.
When using LDAP, passwords are not stored in the database (unless users
create accounts on the local domain). Blank passwords are no longer allowed
since we wouldn't want people using the local domain logging in as domain
users.
The interface for logging in is slightly different when using LDAP as well.
Since the LDAP directory will be managing user accounts and passwords, I
have removed the "mail me a new password" button, and the validate password
field (unless $wgLDAPUseLocal is true). I have added a selection box that
will allow users to choose which domain they wish to authenticate against
(in the above example, the options would be "testADdomain",
"testLDAPdomain", and "local").
My problems are not how I have it currently implemented, but with features
that could be added later. For instance, large sites (wikipedia, and the
like) i'm sure do not want to handle user accounts manually; small sites,
and organizations that use it internally probably do. A feature that could
be added to the basic LDAP authentication is the ability for the wiki to add
user accounts and manage passwords like it does currently. The problem with
this is that most LDAP directories cannot work in this fashion. For
instance, if the wiki was to mail a new password to a user, it would need to
change the password on the LDAP directory which would cause the user's old
password to no longer work. Obviously this is a huge DoS situation. Adding
user accounts is less of a problem, but because of time considerations, I
cannot implement it.
Below is my patch (let me know if my formatting is unusable):
DefaultSettings.php (add):
$wgUseLDAP = false;
$wgLDAPDomainNames = array("");
$wgLDAPServerNames = array("");
$wgLDAPSearchStrings = array("");
$wgLDAPUseSSL = true;
$wgLDAPUseLocal = false;
Language.php (add):
'yourdomainname' => 'Your LDAP Domain'
'blankpasswordnotallowed' => 'Blank passwords are not allowed.'
SpecialUserLogin.php (diff old new):
20c20
< var $mLoginattempt, $mRemember, $mEmail;
---
> var $mLoginattempt, $mRemember, $mEmail, $mDomain;
24a25
> $this->mDomain = $request->getVal( 'wpDomain' );
130a132
> global $wgUseLDAP, $wgLDAPUseLocal;
137,138c139,140
< if ( 0 != strcmp( $this->mPassword, $this->mRetype ) ) {
< $this->mainLoginForm( wfMsg( "badretype" ) );
---
> if ( "" == $this->mPassword ) {
> $this->mainLoginForm( wfMsg(
"blankpasswordnotallowed" ) );
140a143,149
>
> if ( !$wgUseLDAP || "local" == $this->mDomain ) {
> if ( 0 != strcmp( $this->mPassword, $this->mRetype )
) {
> $this->mainLoginForm( wfMsg( "badretype" )
);
> return;
> }
> }
173c182,188
<
---
>
> if ( $wgUseLDAP && "local" != $this->mDomain ) {
> if ( !$this->ldapBind() ) {
> return;
> }
> }
>
175c190
< $u->setPassword( $this->mPassword );
---
> if ( !$wgUseLDAP ) { $u->setPassword( $this->mPassword ); }
192c207,208
<
---
> global $wgUseLDAP;
>
205,208d220
< if (!$u->checkPassword( $this->mPassword )) {
< $this->mainLoginForm( wfMsg( "wrongpassword" ) );
< return;
< }
209a222,231
> if ( $wgUseLDAP && "local" != $this->mDomain ) {
> if ( !$this->ldapBind() ) {
> return;
> }
> } else {
> if (!$u->checkPassword( $this->mPassword || "" ==
$this->mPassword )) {
> $this->mainLoginForm( wfMsg( "wrongpassword"
) );
> return;
> }
> }
231a254,297
>
> /* private */ function ldapBind()
> {
> global $wgLDAPDomainNames, $wgLDAPServerNames,
$wgLDAPSearchStrings;
> global $wgLDAPUseLocal, $wgLDAPUseSSL;
>
> if ( $wgLDAPUseSSL ) {
> $serverpre = "ldaps://";
> } else {
> $serverpre = "ldap://";
> }
>
> $tmpservers = $wgLDAPServerNames["{$this->mDomain}"];
> $tok = strtok($tmpservers, " ");
> while ($tok) {
> $servers = $servers . " " . $serverpre . $tok;
> $tok = strtok(" ");
> }
> $servers = rtrim($servers);
>
> $tmpuserdn = $wgLDAPSearchStrings["{$this->mDomain}"];
> $userdn =
str_replace("USER-NAME",$this->mName,$tmpuserdn);
>
> $userpass = $this->mPassword;
> $ldapconn = @ldap_connect( $servers ) or die( "Could not
connect
> to LDAP server.");
> if ( $ldapconn ) {
> ldap_set_option( $ldapconn,
LDAP_OPT_PROTOCOL_VERSION, 3
> );
> # Some LDAP Servers will do an anonymous bind if a
> # blank password is used, no matter what the
username
> # is. To avoid this, it shouldn't be allowed.
> if ( "" == $userpass ) {
> $this->mainLoginForm( wfMsg(
"wrongpassword" ) );
> return false;
> }
> $bind = @ldap_bind( $ldapconn, $userdn, $userpass
);
> if (!$bind) {
> $this->mainLoginForm( wfMsg(
"wrongpassword" ) );
> return false;
> }
> return true;
> }
> }
323a390
> global $wgUseLDAP, $wgLDAPDomainNames, $wgLDAPUseLocal;
328a396
> $ydn = wfMsg( "yourdomainname" );
385a454
> $encDomain = wfEscapeHTML( $this->mDomain );
413a483,497
> if ($wgUseLDAP) {
> foreach ($wgLDAPDomainNames as $dom) {
> $doms = $doms . "<option>$dom</option>";
> }
> if ($wgLDAPUseLocal) {
> $doms = $doms . "<option>local</option>";
> }
> $wgOut->addHTML("<tr><td align='right'>$ydn:</td>
> <td align='left'>
> <select tabindex='9' name=\"wpDomain\" value=\"{$encDomain}\">
> $doms
> </select>
> </td></tr>");
> }
>
415,416d498
< $encRetype = htmlspecialchars( $this->mRetype );
< $encEmail = htmlspecialchars( $this->mEmail );
418c500,505
< <td align='right'>$ypa:</td>
---
> <td align='right'>$nuo</td></tr>");
>
>
> if (!$wgUseLDAP || $wgLDAPUseLocal) {
> $encRetype = htmlspecialchars( $this->mRetype );
> $wgOut->addHTML("<tr><td align='right'>$ypa:</td>
422,424c509,513
< </td><td>$nuo</td></tr>
< <tr>
< <td align='right'>$ye:</td>
---
> </td></tr>");
> }
>
> $encEmail = htmlspecialchars( $this->mEmail );
> $wgOut->addHTML("<tr><td align='right'>$ye:</td>
427a517
>
443,445c533,534
<
< $wgOut->addHTML("
< <tr><td colspan='3'> </td></tr><tr>
---
>
> $wgOut->addHTML("<tr><td colspan='3'> </td></tr><tr>
447c536,538
< <p>$efl<br />
---
> <p>$efl<br />");
> if (!wgUseLDAP) {
> $wgOut->addHTML("
449,451c540,546
< </td></tr></table>
< </form>\n" );
< $wgOut->addHTML( $endText );
---
> </td></tr>");
> } else {
> $wgOut->addHTML("</td></tr>");
> }
>
> $wgOut->addHtml("</table></form>\n" );
> $wgOut->addHTML( $endText );
----------------
Ryan Lane
NAVOCEANO