summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorobo <obo@openoffice.org>2010-10-08 08:07:42 +0200
committerobo <obo@openoffice.org>2010-10-08 08:07:42 +0200
commit6f71b2b3129763f356bb36d53dfdf13bd9a41a3a (patch)
tree9486876c4264b8231ff89815824c52965787f8a9
parent4582083268fb25b6a0d0d80aaad5439c4232f62a (diff)
parent3cc58ddaf37e1c0e2564dbc3296c221c9b2b9f7a (diff)
-rw-r--r--swext/mediawiki/build.xml4
-rw-r--r--swext/mediawiki/makefile.mk8
-rw-r--r--swext/mediawiki/src/com/sun/star/wiki/EditPageParser.java5
-rw-r--r--swext/mediawiki/src/com/sun/star/wiki/Helper.java36
-rw-r--r--swext/mediawiki/src/com/sun/star/wiki/WikiArticle.java2
5 files changed, 50 insertions, 5 deletions
diff --git a/swext/mediawiki/build.xml b/swext/mediawiki/build.xml
index daa51e9..22f44e2 100644
--- a/swext/mediawiki/build.xml
+++ b/swext/mediawiki/build.xml
@@ -53,7 +53,7 @@
<!-- build options -->
<property name="sourcelevel" value="1.4"/>
<property name="verbose" value="false"/>
- <property name="debug" value="true"/>
+ <property name="debug" value="${antdebug}"/>
<!-- build classpath -->
<path id="classpath">
@@ -75,7 +75,7 @@
</target>
<target name="compile" depends="init">
- <javac debug="${debug}" destdir="${classes}" classpathref="classpath"
+ <javac debug="${debug}" debuglevel="lines,vars,source" destdir="${classes}" classpathref="classpath"
source="${sourcelevel}" verbose="${verbose}">
<src path="src"/>
</javac>
diff --git a/swext/mediawiki/makefile.mk b/swext/mediawiki/makefile.mk
index 9d05139..52d9900 100644
--- a/swext/mediawiki/makefile.mk
+++ b/swext/mediawiki/makefile.mk
@@ -41,7 +41,13 @@ COMMONS_LOGGING_JAR=$(SOLARVER)$/$(INPATH)$/bin$(UPDMINOREXT)$/commons-logging-1
COMP=fix_system_commons
.ENDIF
-ANT_FLAGS+=-Dcommons-codec-jar=$(COMMONS_CODEC_JAR) -Dcommons-lang-jar=$(COMMONS_LANG_JAR) -Dcommons-httpclient-jar=$(COMMONS_HTTPCLIENT_JAR) -Dcommons-logging-jar=$(COMMONS_LOGGING_JAR)
+.IF defined(debug) || defined(DEBUG)
+ANTDEBUG=true
+.ELSE
+ANTDEBUG=off
+.ENDIF
+
+ANT_FLAGS+=-Dcommons-codec-jar=$(COMMONS_CODEC_JAR) -Dcommons-lang-jar=$(COMMONS_LANG_JAR) -Dcommons-httpclient-jar=$(COMMONS_HTTPCLIENT_JAR) -Dcommons-logging-jar=$(COMMONS_LOGGING_JAR) -Dantdebug=$(ANTDEBUG)
# creates two files wiki-publisher.oxt and mediawiki_develop.zip, the second one might be used in further build process
ALLTAR: $(COMP) ANTBUILD
diff --git a/swext/mediawiki/src/com/sun/star/wiki/EditPageParser.java b/swext/mediawiki/src/com/sun/star/wiki/EditPageParser.java
index 27440e0..42cc7a8 100644
--- a/swext/mediawiki/src/com/sun/star/wiki/EditPageParser.java
+++ b/swext/mediawiki/src/com/sun/star/wiki/EditPageParser.java
@@ -35,6 +35,7 @@ public class EditPageParser extends HTMLEditorKit.ParserCallback
protected String m_sEditTime = "";
protected String m_sEditToken = "";
+ protected String m_sLoginToken = "";
protected String m_sMainURL = "";
private int m_nWikiArticleHash = 0;
@@ -100,6 +101,10 @@ public class EditPageParser extends HTMLEditorKit.ParserCallback
{
this.m_sEditToken = ( String ) a.getAttribute( HTML.Attribute.VALUE );
}
+ else if ( sName.equalsIgnoreCase( "wpLoginToken" ) )
+ {
+ this.m_sLoginToken = ( String ) a.getAttribute( HTML.Attribute.VALUE );
+ }
}
}
diff --git a/swext/mediawiki/src/com/sun/star/wiki/Helper.java b/swext/mediawiki/src/com/sun/star/wiki/Helper.java
index 8e20f44..a94dfc0 100644
--- a/swext/mediawiki/src/com/sun/star/wiki/Helper.java
+++ b/swext/mediawiki/src/com/sun/star/wiki/Helper.java
@@ -784,6 +784,29 @@ public class Helper
return bResult;
}
+ static protected String GetLoginToken( String sLoginPage )
+ {
+ String sResult = "";
+ if ( sLoginPage != null && sLoginPage.length() > 0 )
+ {
+ try
+ {
+ StringReader aReader = new StringReader( sLoginPage );
+ HTMLEditorKit.Parser aParser = Helper.GetHTMLParser();
+ EditPageParser aCallbacks = new EditPageParser();
+
+ aParser.parse( aReader, aCallbacks, true );
+ sResult = aCallbacks.m_sLoginToken;
+ }
+ catch( Exception e )
+ {
+ e.printStackTrace();
+ }
+ }
+
+ return sResult;
+ }
+
static protected HostConfiguration Login( URI aMainURL, String sWikiUser, String sWikiPass, XComponentContext xContext )
throws com.sun.star.uno.Exception, java.io.IOException, WikiCancelException
{
@@ -799,10 +822,16 @@ public class Helper
ExecuteMethod( aGetCookie, aNewHostConfig, aURI, xContext, true );
int nResultCode = aGetCookie.getStatusCode();
- aGetCookie.releaseConnection();
-
+ String sLoginPage = null;
if ( nResultCode == 200 )
+ sLoginPage = aGetCookie.getResponseBodyAsString();
+
+ aGetCookie.releaseConnection();
+
+ if ( sLoginPage != null )
{
+ String sLoginToken = GetLoginToken( sLoginPage );
+
PostMethod aPost = new PostMethod();
URI aPostURI = new URI( aMainURL.getPath() + "index.php?title=Special:Userlogin&action=submitlogin" );
aPost.setPath( aPostURI.getEscapedPathQuery() );
@@ -810,6 +839,9 @@ public class Helper
aPost.addParameter( "wpName", sWikiUser );
aPost.addParameter( "wpRemember", "1" );
aPost.addParameter( "wpPassword", sWikiPass );
+ if ( sLoginToken.length() > 0 )
+ aPost.addParameter( "wpLoginToken", sLoginToken );
+
String[][] pArgs = GetSpecialArgs( xContext, aMainURL.getHost() );
if ( pArgs != null )
for ( int nArgInd = 0; nArgInd < pArgs.length; nArgInd++ )
diff --git a/swext/mediawiki/src/com/sun/star/wiki/WikiArticle.java b/swext/mediawiki/src/com/sun/star/wiki/WikiArticle.java
index a7d8369..1859ca5 100644
--- a/swext/mediawiki/src/com/sun/star/wiki/WikiArticle.java
+++ b/swext/mediawiki/src/com/sun/star/wiki/WikiArticle.java
@@ -145,6 +145,8 @@ public class WikiArticle
if ( nResultCode == 200 )
sWebPage = aRequest.getResponseBodyAsString();
+ aRequest.releaseConnection();
+
if ( sWebPage != null )
{
StringReader r = new StringReader(sWebPage);