Author: vmassol
Date: 2008-02-07 19:09:23 +0100 (Thu, 07 Feb 2008)
New Revision: 85

Added:
   tools/
   tools/cryptpasswords/
   tools/cryptpasswords/crypt.groovy
   tools/cryptpasswords/crypt.sh
   tools/cryptpasswords/env.sh
   tools/cryptpasswords/hibernate.cfg.xml
   tools/cryptpasswords/lib/
   tools/cryptpasswords/lib/commons-cli-1.0.jar
Log:
XWIKI-2081: Move cryptpassword tool to the sandbox for now

Added: tools/cryptpasswords/crypt.groovy
===================================================================
--- tools/cryptpasswords/crypt.groovy                           (rev 0)
+++ tools/cryptpasswords/crypt.groovy   2008-02-07 18:09:23 UTC (rev 85)
@@ -0,0 +1,77 @@
+package xwiki.export;
+
+import com.xpn.xwiki.*;
+import com.xpn.xwiki.objects.classes.*;
+
+println "Starting password encryption"
+println "===== WARNING!!! ====="
+println "This action will encrypt all the plaintext passwords in the database."
+println ""
+println "Depending on the encryption method, you may not be able to restore"
+println "  the original passwords, disabling some features like retrieving"
+println "  forgot passwords. However, it is recommended to encrypt the 
passwords,"
+println "  as it increases the security of the wiki."
+
+println "Continue? [y/n]"
+cont = System.in.readLine()
+
+if(cont.toLowerCase().startsWith("n")) {
+    println "Good."
+    System.exit(0);
+}
+
+context = new XWikiContext();
+
+context.setUser("XWiki.superadmin");
+config = new XWikiConfig();
+config.put("xwiki.store.class", "com.xpn.xwiki.store.XWikiHibernateStore");
+config.put("xwiki.store.hibernate.path", "./hibernate.cfg.xml");
+config.put("xwiki.store.hibernate.updateschema", "1");
+config.put("xwiki.virtual", "1");
+println "Starting xwiki"
+xwiki = new XWiki(config, context);
+context.setWiki(xwiki);
+
+db = "xwiki"
+// Change this to export a different database
+// db = "mydb"
+
+println("Encrypting all passwords in database " + db)
+context.setDatabase(db);
+
+classes = xwiki.getClassList(context)
+for(xclassname in classes) {
+  // See if this class has password fields
+  xclass = xwiki.getDocument(xclassname, context).getxWikiClass();
+  props = xclass.getProperties();
+  for(prop in props) {
+    if(prop instanceof com.xpn.xwiki.objects.classes.PasswordClass){
+      sql = ", BaseObject as obj where obj.name=doc.fullName and 
obj.className='" + xclassname + "'";
+      results = xwiki.getStore().searchDocumentsNames(sql, context);
+      for(docname in results) {
+        doc = xwiki.getDocument(docname, context);
+        for(obj in doc.getObjects(xclassname)){
+         pwdprop = obj.get(prop.getName());
+         unencryptedPassword = pwdprop.getValue();
+          if(unencryptedPassword.startsWith("hash:") || 
unencryptedPassword.startsWith("crypt:")) {
+            println("Skipping already encrypted password for " + 
doc.getFullName());
+          } else {
+            encryptedPassword = prop.getProcessedPassword(unencryptedPassword);
+            println("Encrypting password for " + doc.getFullName());
+            pwdprop.setValue(encryptedPassword);
+            doc.setMetaDataDirty(true);
+            xwiki.saveDocument(doc, context);
+          }
+       }
+      }
+    }
+  }
+}
+/*
+sql = ", BaseObject as obj where obj.name="+ xwiki.getFullNameSQL()+ " and 
obj.className='XWiki.XWikiUsers'";
+results = xwiki.getStore().searchDocumentsNames(sql, context);
+results.each { item -> print "${item}-" }
+println "";
+*/
+println "Finished."
+System.exit(0)
\ No newline at end of file

Added: tools/cryptpasswords/crypt.sh
===================================================================
--- tools/cryptpasswords/crypt.sh                               (rev 0)
+++ tools/cryptpasswords/crypt.sh       2008-02-07 18:09:23 UTC (rev 85)
@@ -0,0 +1,5 @@
+#!/bin/bash
+
+source env.sh
+
+java groovy.lang.GroovyShell crypt.groovy


Property changes on: tools/cryptpasswords/crypt.sh
___________________________________________________________________
Name: svn:executable
   + *

Added: tools/cryptpasswords/env.sh
===================================================================
--- tools/cryptpasswords/env.sh                         (rev 0)
+++ tools/cryptpasswords/env.sh 2008-02-07 18:09:23 UTC (rev 85)
@@ -0,0 +1,18 @@
+#!/bin/bash
+
+XWIKIHOME=../../xwiki/trunk
+XWIKILIB=${XWIKIHOME}/lib
+TOOLSLIB=./lib
+
+TOOLSPATH="${TOOLSLIB}/commons-cli-1.0.jar"
+
+XWIKIPATH="${XWIKIHOME}/release/xwiki.jar"
+for lib in `ls "${XWIKILIB}"`
+do
+       XWIKIPATH="${XWIKIPATH}:${XWIKILIB}/$lib"
+done
+
+export CP="${TOOLSPATH}:${XWIKIPATH}"
+# For windows + cygwin:
+#export CLASSPATH=`cygpath --path --windows "$CP"`
+export CLASSPATH="${TOOLSPATH}:${XWIKIPATH}"


Property changes on: tools/cryptpasswords/env.sh
___________________________________________________________________
Name: svn:executable
   + *

Added: tools/cryptpasswords/hibernate.cfg.xml
===================================================================
--- tools/cryptpasswords/hibernate.cfg.xml                              (rev 0)
+++ tools/cryptpasswords/hibernate.cfg.xml      2008-02-07 18:09:23 UTC (rev 85)
@@ -0,0 +1,32 @@
+<?xml version='1.0' encoding='utf-8'?>
+<!DOCTYPE hibernate-configuration PUBLIC 
+  "-//Hibernate/Hibernate Configuration DTD//EN"
+  "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd";>
+<hibernate-configuration>
+<session-factory>
+<property name="show_sql">false</property>
+<property name="use_outer_join">true</property>
+
+<property name="dbcp.defaultAutoCommit">false</property>
+<property name="dbcp.maxActive">50</property>
+<property name="dbcp.maxIdle">5</property>
+<property name="dbcp.maxWait">30000</property>
+<property name="dbcp.whenExhaustedAction">1</property>
+<property name="dbcp.ps.whenExhaustedAction">1</property>
+<property name="dbcp.ps.maxActive">20</property>
+<property name="dbcp.ps.maxWait">120000</property>
+<property name="dbcp.ps.maxIdle">20</property>
+
+<property name="connection.url">jdbc:mysql://localhost/xwiki</property>
+<property name="connection.username">xwiki</property>
+<property name="connection.password">xwiki</property>
+<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
+<property 
name="connection.provider_class">com.xpn.xwiki.store.DBCPConnectionProvider</property>
+<property name="connection.pool_size">5</property>
+<property name="statement_cache.size">5</property>
+<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
+<property 
name="transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property>
+<!-- Mapping files -->
+<mapping resource="xwiki.hbm.xml"/>
+</session-factory>
+</hibernate-configuration>

Added: tools/cryptpasswords/lib/commons-cli-1.0.jar
===================================================================
(Binary files differ)


Property changes on: tools/cryptpasswords/lib/commons-cli-1.0.jar
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

_______________________________________________
notifications mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/notifications

Reply via email to