[prev in list] [next in list] [prev in thread] [next in thread] 

List:       mina-commits
Subject:    svn commit: r1053343 - in /mina/vysper/trunk/server/core/src/main:
From:       berndf () apache ! org
Date:       2010-12-28 13:13:09
Message-ID: 20101228131309.6090B23888E4 () eris ! apache ! org
[Download RAW message or body]

Author: berndf
Date: Tue Dec 28 13:13:08 2010
New Revision: 1053343

URL: http://svn.apache.org/viewvc?rev=1053343&view=rev
Log:
make the default Vysper install sufficiently secure: use random passwords.

Modified:
    mina/vysper/trunk/server/core/src/main/config/spring-config.xml
    mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/spring/AddUserHelper.java
  mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/ServerMain.java


Modified: mina/vysper/trunk/server/core/src/main/config/spring-config.xml
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/core/src/main/config/spring-config.xml?rev=1053343&r1=1053342&r2=1053343&view=diff
 ==============================================================================
--- mina/vysper/trunk/server/core/src/main/config/spring-config.xml (original)
+++ mina/vysper/trunk/server/core/src/main/config/spring-config.xml Tue Dec 28 \
13:13:08 2010 @@ -28,13 +28,18 @@
     <!-- choose one of the storage registries -->
     <alias name="inmemoryStorageRegistry" alias="storageRegistry" />
 
-    <!-- default users; remove if you have persistently stored users -->
+    <!-- default users; remove if you have persistently stored users
+         NOTE: if passwords are empty, random passwords are generated and printed on \
the console +               So, your default install of Vysper is secure from the \
very beginning +    -->
     <bean id="addUsers" class="org.apache.vysper.spring.AddUserHelper">
         <constructor-arg index="0">
             <map>
-                <entry key="user1@vysper.org" value="password1" />
-                <entry key="user2@vysper.org" value="password1" />
-                <entry key="user3@vysper.org" value="password1" />
+                <entry key="admin@vysper.org" value="" />
+                <entry key="user1@vysper.org" value="" />
+                <entry key="user2@vysper.org" value="" />
+                <entry key="user3@vysper.org" value="" />
+                <!--<entry key="admin@vysper.org" value="CHOOSE A SECURE PASSWORD OR \
LEAVE EMPTY" />-->  </map>
         </constructor-arg>
         <property name="storageProviderRegistry" ref="storageRegistry" />
@@ -76,6 +81,12 @@
                 <bean \
                class="org.apache.vysper.xmpp.modules.extension.xep0054_vcardtemp.VcardTempModule" \
                />
                 <bean \
                class="org.apache.vysper.xmpp.modules.extension.xep0119_xmppping.XmppPingModule" \
                />
                 <bean \
class="org.apache.vysper.xmpp.modules.extension.xep0049_privatedata.PrivateDataModule" \
/> +                <bean \
class="org.apache.vysper.xmpp.modules.extension.xep0050_adhoc_commands.AdhocCommandsModule" \
/> +                <bean \
class="org.apache.vysper.xmpp.modules.extension.xep0133_service_administration.ServiceAdministrationModule" \
> +                    <property name="addAdmins">
+                        <list><value>admin@vysper.org</value></list>
+                    </property>
+                </bean>
                 <!-- below some more modules which are available as separately-built \
                jars. 
                      make sure they are on the classpath when enabling them or \
                remove the beans below, 
                      depending on the features your server should expose -->

Modified: mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/spring/AddUserHelper.java
                
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/spring/AddUserHelper.java?rev=1053343&r1=1053342&r2=1053343&view=diff
 ==============================================================================
--- mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/spring/AddUserHelper.java \
                (original)
+++ mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/spring/AddUserHelper.java \
Tue Dec 28 13:13:08 2010 @@ -22,6 +22,8 @@ package org.apache.vysper.spring;
 import java.util.HashMap;
 import java.util.Map;
 
+import org.apache.commons.lang.RandomStringUtils;
+import org.apache.commons.lang.StringUtils;
 import org.apache.vysper.storage.StorageProviderRegistry;
 import org.apache.vysper.xmpp.addressing.EntityFormatException;
 import org.apache.vysper.xmpp.addressing.EntityImpl;
@@ -48,7 +50,12 @@ public class AddUserHelper {
 
         for (String user : userPasswordMap.keySet()) {
             if (!accountManagement.verifyAccountExists(EntityImpl.parse(user))) {
-                accountManagement.addUser(user, userPasswordMap.get(user));
+                String password = userPasswordMap.get(user);
+                if (StringUtils.isEmpty(password)) {
+                    password = RandomStringUtils.randomAlphanumeric(8);
+                }
+                accountManagement.addUser(user, password);
+                System.out.println(user + " user has been added with random \
password: '" + password + "'");  }
         }
     }

Modified: mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/ServerMain.java
                
URL: http://svn.apache.org/viewvc/mina/vysper/trunk/server/core/src/main/java/org/apac \
he/vysper/xmpp/server/ServerMain.java?rev=1053343&r1=1053342&r2=1053343&view=diff \
                ==============================================================================
                
--- mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/ServerMain.java \
                (original)
+++ mina/vysper/trunk/server/core/src/main/java/org/apache/vysper/xmpp/server/ServerMain.java \
Tue Dec 28 13:13:08 2010 @@ -19,11 +19,7 @@
  */
 package org.apache.vysper.xmpp.server;
 
-import java.io.File;
-import java.io.FileNotFoundException;
-import java.util.ArrayList;
-import java.util.List;
-
+import org.apache.commons.lang.RandomStringUtils;
 import org.apache.vysper.mina.TCPEndpoint;
 import org.apache.vysper.storage.StorageProviderRegistry;
 import org.apache.vysper.storage.inmemory.MemoryStorageProviderRegistry;
@@ -33,11 +29,19 @@ import org.apache.vysper.xmpp.authorizat
 import org.apache.vysper.xmpp.authorization.AccountManagement;
 import org.apache.vysper.xmpp.modules.Module;
 import org.apache.vysper.xmpp.modules.extension.xep0049_privatedata.PrivateDataModule;
 +import org.apache.vysper.xmpp.modules.extension.xep0050_adhoc_commands.AdhocCommandsModule;
  import org.apache.vysper.xmpp.modules.extension.xep0054_vcardtemp.VcardTempModule;
 import org.apache.vysper.xmpp.modules.extension.xep0092_software_version.SoftwareVersionModule;
  import org.apache.vysper.xmpp.modules.extension.xep0119_xmppping.XmppPingModule;
+import org.apache.vysper.xmpp.modules.extension.xep0133_service_administration.ServiceAdministrationModule;
  import org.apache.vysper.xmpp.modules.extension.xep0202_entity_time.EntityTimeModule;
  
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
 /**
  * starts the server as a standalone application
  *
@@ -56,6 +60,8 @@ public class ServerMain {
      */
     public static void main(String[] args) throws AccountCreationException, \
EntityFormatException, FileNotFoundException {  
+        String domain = "vysper.org";
+        
         String addedModuleProperty = System.getProperty("vysper.add.module");
         List<Module> listOfModules = null;
         if (addedModuleProperty != null) {
@@ -67,20 +73,17 @@ public class ServerMain {
         //StorageProviderRegistry providerRegistry = new \
                JcrStorageProviderRegistry();
         StorageProviderRegistry providerRegistry = new \
MemoryStorageProviderRegistry();  
+        final String adminJID = "admin@" + domain;
         final AccountManagement accountManagement = (AccountManagement) \
                providerRegistry
                 .retrieve(AccountManagement.class);
 
-        if (!accountManagement.verifyAccountExists(EntityImpl.parse("user1@vysper.org"))) \
                {
-            accountManagement.addUser("user1@vysper.org", "password1");
-        }
-        if (!accountManagement.verifyAccountExists(EntityImpl.parse("user2@vysper.org"))) \
                {
-            accountManagement.addUser("user2@vysper.org", "password1");
-        }
-        if (!accountManagement.verifyAccountExists(EntityImpl.parse("user3@vysper.org"))) \
                {
-            accountManagement.addUser("user3@vysper.org", "password1");
+        if (!accountManagement.verifyAccountExists(EntityImpl.parse(adminJID))) {
+            final String randomPassword = RandomStringUtils.randomAlphanumeric(8);
+            accountManagement.addUser(adminJID, randomPassword);
+            System.out.println(adminJID + " user has been added with random \
password: '" + randomPassword + "'");  }
 
-        XMPPServer server = new XMPPServer("vysper.org");
+        XMPPServer server = new XMPPServer(domain);
         server.addEndpoint(new TCPEndpoint());
         //server.addEndpoint(new StanzaSessionFactory());
         server.setStorageProviderRegistry(providerRegistry);
@@ -99,6 +102,11 @@ public class ServerMain {
         server.addModule(new VcardTempModule());
         server.addModule(new XmppPingModule());
         server.addModule(new PrivateDataModule());
+        server.addModule(new AdhocCommandsModule());
+        final ServiceAdministrationModule serviceAdministrationModule = new \
ServiceAdministrationModule(); +        // unless admin user account with a secure \
password is added, this will be not become effective +        \
serviceAdministrationModule.setAddAdmins(Arrays.asList(adminJID));  +        \
server.addModule(serviceAdministrationModule);  
         if (listOfModules != null) {
             for (Module module : listOfModules) {


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic