Extension talk:SimpleUploads.php

From Organic Design wiki

Todo

  • double hashing using username as salt does not appear to give the same value as that stored in user_password in user table
print md5("Username-".md5("password"));

Notes for implementation

  • Apache config is required to enable webdav for a directory
  • Permissions need to be set for the directory: chown www-data:www-data /foo/bar
  • Separate dir for each user
    • eg /var/www/wikis/od/uploads/$username
  • Script required to stat directory every few seconds
    • Launched by init.d stays alive in an infinite loop with a 1 sec sleep in it
  • Script must link in with MW objects and be able to query and create pages
    • Refer to mediawiki-1.11.0/maintenance scripts that are designed to run standalone
    • Perhaps jobs api
  • Special page to show results of recent operations and link to created pages
  • Uploaded files added to category "$username's recently uploaded files"

Code fragments

su

# install and enable mysql auth
apt-get install libapache2-mod-auth-mysql
a2enmod auth_mysql

# enable dav module
a2enmod dav
a2enmod dav_fs

apache2ctl restart

#mkdir -p /var/www/wikis/$wikiname/uploads

cat > /etc/apache2/conf.d/simple_upload

# webdav options
DAV On
DAVMinTimeout 600

# mysql auth options
Auth_MySQL_Info cs-db.cs.auckland.ac.nz wiki-db-user wiki-db-pass

# uploads directory options
<Directory "/var/www/mysqlauth">
Options +Indexes FollowSymLinks MultiViews
AllowOverride AuthConfig Options FileInfo Limit
Order allow,deny
Allow from all
</Directory>

ctrl+D

apache2ctl restart


For each user

cat > /var/www/wikis/od/uploads/$username/.htaccess

AuthMYSQL on
AuthMySQL_Authoritative on
AuthMySQL_DB $wiki_db
AuthMySQL_Password_Table $wiki_user_table

AuthMySQL_Group_Table '(select distinct user_name, "msdn_agreed" as group_name from agree) as user_groups'
AuthMySQL_Username_Field upi
AuthMySQL_Group_Field group_name
require group msdn_agreed

#AuthMySQL_Group_Table $wiki_group_table
AuthMySQL_Empty_Passwords off
AuthMySQL_Encryption_Types Plaintext Crypt_DES

AuthName "Uploads for $username"
AuthType Basic

<Limit GET POST>
require user $username
</Limit>

ctrl+D



<Location "/research/groups/ict-test">


   AuthType Basic
   AuthName "ICT test web pages"

   Order allow,deny
   Allow from all
   <LimitExcept GET OPTIONS>
   require ldap-group cn=users.csi,ou=ec_group,dc=ec,dc=auckland,dc=ac,dc=nz
   </LimitExcept>

   BrowserMatch "Microsoft Data Access Internet Publishing Provider" redirect-carefully
   BrowserMatch "MS FrontPage" redirect-carefully
   BrowserMatch "^WebDrive" redirect-carefully
   BrowserMatch "^WebDAVFS/1.[0123]" redirect-carefully
   BrowserMatch "^gnome-vfs/1.0" redirect-carefully
   BrowserMatch "^XML Spy" redirect-carefully
   BrowserMatch "^Dreamweaver-WebDAV-SCM1" redirect-carefully

</Location>