You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by og...@apache.org on 2009/02/13 02:38:16 UTC

svn commit: r743947 - in /maven/components/trunk: maven-core/src/main/java/org/apache/maven/settings/ maven-core/src/main/resources/META-INF/plexus/ maven-embedder/src/main/java/org/apache/maven/embedder/execution/

Author: ogusakov
Date: Fri Feb 13 01:38:15 2009
New Revision: 743947

URL: http://svn.apache.org/viewvc?rev=743947&view=rev
Log:
[MNG-4033] found more appropriate injection point for password encryption

Modified:
    maven/components/trunk/maven-core/src/main/java/org/apache/maven/settings/DefaultMavenSettingsBuilder.java
    maven/components/trunk/maven-core/src/main/resources/META-INF/plexus/components.xml
    maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/execution/DefaultMavenExecutionRequestPopulator.java

Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/settings/DefaultMavenSettingsBuilder.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/settings/DefaultMavenSettingsBuilder.java?rev=743947&r1=743946&r2=743947&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/settings/DefaultMavenSettingsBuilder.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/settings/DefaultMavenSettingsBuilder.java Fri Feb 13 01:38:15 2009
@@ -19,6 +19,13 @@
  * under the License.
  */
 
+import java.io.File;
+import java.io.IOException;
+import java.io.Reader;
+import java.io.StringReader;
+import java.io.StringWriter;
+import java.util.List;
+
 import org.apache.maven.execution.MavenExecutionRequest;
 import org.apache.maven.settings.io.xpp3.SettingsXpp3Reader;
 import org.apache.maven.settings.io.xpp3.SettingsXpp3Writer;
@@ -34,14 +41,6 @@
 import org.codehaus.plexus.util.IOUtil;
 import org.codehaus.plexus.util.ReaderFactory;
 import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
-import org.sonatype.plexus.components.sec.dispatcher.SecDispatcher;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.Reader;
-import java.io.StringReader;
-import java.io.StringWriter;
-import java.util.List;
 
 /**
  * @author jdcasey
@@ -54,9 +53,6 @@
     @Requirement
     private SettingsValidator validator;
 
-    @Requirement( hint = "maven" )
-    private SecDispatcher securityDispatcher;
-
     /** @since 2.1 */
     public Settings buildSettings( MavenExecutionRequest request )
         throws IOException, XmlPullParserException
@@ -104,8 +100,6 @@
             TrackableBase.GLOBAL_LEVEL );
 
         userSettings = interpolate( userSettings, request );
-        
-        decrypt( userSettings );
 
         // for the special case of a drive-relative Windows path, make sure it's absolute to save plugins from trouble
         String localRepository = userSettings.getLocalRepository();
@@ -122,39 +116,6 @@
     }
     
 
-    /**
-     * decrypt settings passwords and passphrases
-     * 
-     * @param settings settings to process
-     * @throws IOException 
-     */
-    @SuppressWarnings("unchecked")
-    private void decrypt( Settings settings )
-    throws IOException
-    {
-        List<Server> servers = settings.getServers();
-        
-        if ( servers != null && !servers.isEmpty() )
-        {
-            try
-            {
-                for ( Server server : servers )
-                {
-                    if ( server.getPassword() != null )
-                    {
-                        server.setPassword( securityDispatcher.decrypt( server.getPassword() ) );
-                    }
-                }
-            }
-            catch ( Exception e )
-            {
-                // 2009-02-12 Oleg: get do this because 2 levels up Exception is
-                // caught, not exception type does not matter
-                throw new IOException( e.getMessage() );
-            }
-        }
-    }
-
     private Settings interpolate( Settings settings, MavenExecutionRequest request )
         throws IOException, XmlPullParserException
     {

Modified: maven/components/trunk/maven-core/src/main/resources/META-INF/plexus/components.xml
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/resources/META-INF/plexus/components.xml?rev=743947&r1=743946&r2=743947&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/resources/META-INF/plexus/components.xml (original)
+++ maven/components/trunk/maven-core/src/main/resources/META-INF/plexus/components.xml Fri Feb 13 01:38:15 2009
@@ -136,7 +136,7 @@
         </defaultReports>
         <!-- END SNIPPET: default-reports -->
       </configuration>
-    </component>  
+    </component> 
 
     <component>
       <role>org.sonatype.plexus.components.sec.dispatcher.SecDispatcher</role>
@@ -153,5 +153,6 @@
         <_configuration-file>~/.m2/settings-security.xml</_configuration-file>
       </configuration>
     </component>          
+     
   </components>
 </component-set>

Modified: maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/execution/DefaultMavenExecutionRequestPopulator.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/execution/DefaultMavenExecutionRequestPopulator.java?rev=743947&r1=743946&r2=743947&view=diff
==============================================================================
--- maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/execution/DefaultMavenExecutionRequestPopulator.java (original)
+++ maven/components/trunk/maven-embedder/src/main/java/org/apache/maven/embedder/execution/DefaultMavenExecutionRequestPopulator.java Fri Feb 13 01:38:15 2009
@@ -60,6 +60,8 @@
 import org.codehaus.plexus.logging.AbstractLogEnabled;
 import org.codehaus.plexus.util.StringUtils;
 import org.codehaus.plexus.util.xml.Xpp3Dom;
+import org.sonatype.plexus.components.sec.dispatcher.SecDispatcher;
+import org.sonatype.plexus.components.sec.dispatcher.SecDispatcherException;
 
 /**
  * Things that we deal with in this populator to ensure that we have a valid {@MavenExecutionRequest}
@@ -89,7 +91,12 @@
 
     @Requirement
     private MavenTools mavenTools;
-    
+
+    // 2009-02-12 Oleg: this component is defined in maven-core components.xml
+    // because it already has another declared (not generated) component
+    @Requirement( hint = "maven" )
+    private SecDispatcher securityDispatcher;
+
     public MavenExecutionRequest populateDefaults( MavenExecutionRequest request,
                                                    Configuration configuration )
         throws MavenEmbedderException
@@ -454,8 +461,12 @@
             for ( Iterator i = settings.getServers().iterator(); i.hasNext(); )
             {
                 Server server = (Server) i.next();
+                
+                String pass = securityDispatcher.decrypt( server.getPassword() );
+                
+                String phrase = securityDispatcher.decrypt( server.getPassphrase() );
 
-                wagonManager.addAuthenticationInfo( server.getId(), server.getUsername(), server.getPassword(), server.getPrivateKey(), server.getPassphrase() );
+                wagonManager.addAuthenticationInfo( server.getId(), server.getUsername(), pass, server.getPrivateKey(), phrase );
 
                 wagonManager.addPermissionInfo( server.getId(), server.getFilePermissions(), server.getDirectoryPermissions() );
 
@@ -480,12 +491,49 @@
                 wagonManager.addMirror( mirror.getId(), mirror.getMirrorOf(), mirror.getUrl() );
             }
         }
+        catch ( SecDispatcherException e )
+        {
+            throw new SettingsConfigurationException( e.getMessage() );
+        }
         finally
         {
             container.release( wagonManager );
         }
     }
 
+    /**
+     * decrypt settings passwords and passphrases
+     * 
+     * @param settings settings to process
+     * @throws IOException 
+     */
+    @SuppressWarnings("unchecked")
+    private void decrypt( Settings settings )
+    throws IOException
+    {
+        List<Server> servers = settings.getServers();
+        
+        if ( servers != null && !servers.isEmpty() )
+        {
+            try
+            {
+                for ( Server server : servers )
+                {
+                    if ( server.getPassword() != null )
+                    {
+                        server.setPassword( securityDispatcher.decrypt( server.getPassword() ) );
+                    }
+                }
+            }
+            catch ( Exception e )
+            {
+                // 2009-02-12 Oleg: get do this because 2 levels up Exception is
+                // caught, not exception type does not matter
+                throw new IOException( e.getMessage() );
+            }
+        }
+    }
+
     public ArtifactRepository createLocalRepository( MavenExecutionRequest request, Settings settings, Configuration configuration ) 
         throws MavenEmbedderException
     {