Jelajahi Sumber

merged arjenjb/swift-antiflood-plugin

Fabien Potencier 14 tahun lalu
induk
melakukan
ce4a49d648

+ 6 - 0
src/Symfony/Bundle/SwiftmailerBundle/DependencyInjection/Configuration.php

@@ -81,6 +81,12 @@ class Configuration implements ConfigurationInterface
                     ->end()
                 ->end()
                 ->scalarNode('sender_address')->end()
+                ->arrayNode('antiflood')
+                    ->children()
+                        ->scalarNode('treshold')->defaultValue(99)->end()
+                        ->scalarNode('sleep')->defaultValue(0)->end()
+                    ->end()
+                ->end()
                 ->scalarNode('delivery_address')->end()
                 ->booleanNode('disable_delivery')->end()
                 ->booleanNode('logging')->defaultValue($this->debug)->end()

+ 14 - 1
src/Symfony/Bundle/SwiftmailerBundle/DependencyInjection/SwiftmailerExtension.php

@@ -90,7 +90,20 @@ class SwiftmailerExtension extends Extension
             }
         }
         $container->setParameter('swiftmailer.spool.enabled', isset($config['spool']));
-
+        
+        // antiflood?
+        if (isset($config['antiflood'])) {
+            foreach (array('treshold', 'sleep') as $key) {
+                $container->setParameter('swiftmailer.antiflood.'.$key, $config['antiflood'][$key]);
+            }
+            
+            $container->findDefinition('swiftmailer.transport')->addMethodCall('registerPlugin', array(new Reference('swiftmailer.plugin.antiflood')));
+        } else {
+            foreach (array('treshold', 'sleep') as $key) {
+                $container->setParameter('swiftmailer.antiflood.'.$key, null);
+            }
+        }
+        
         if ($config['logging']) {
             $container->findDefinition('swiftmailer.transport')->addMethodCall('registerPlugin', array(new Reference('swiftmailer.plugin.messagelogger')));
             $container->findDefinition('swiftmailer.data_collector')->addTag('data_collector', array('template' => 'SwiftmailerBundle:Collector:swiftmailer', 'id' => 'swiftmailer'));

+ 7 - 0
src/Symfony/Bundle/SwiftmailerBundle/Resources/config/swiftmailer.xml

@@ -16,6 +16,8 @@
         <parameter key="swiftmailer.plugin.blackhole.class">Swift_Plugins_BlackholePlugin</parameter>
         <parameter key="swiftmailer.plugin.impersonate.class">Swift_Plugins_ImpersonatePlugin</parameter>
         <parameter key="swiftmailer.plugin.messagelogger.class">Symfony\Bundle\SwiftmailerBundle\Logger\MessageLogger</parameter>
+        <parameter key="swiftmailer.plugin.antiflood.class">Swift_Plugins_AntiFloodPlugin</parameter>
+
         <parameter key="swiftmailer.data_collector.class">Symfony\Bundle\SwiftmailerBundle\DataCollector\MessageDataCollector</parameter>
     </parameters>
 
@@ -63,6 +65,11 @@
         </service>
 
         <service id="swiftmailer.plugin.blackhole" class="%swiftmailer.plugin.blackhole.class%" public="false" />
+        
+        <service id="swiftmailer.plugin.antiflood" class="%swiftmailer.plugin.antiflood.class%" public="false">
+            <argument>%swiftmailer.antiflood.treshold%</argument>
+            <argument>%swiftmailer.antiflood.sleep%</argument>
+        </service>
 
         <service id="swiftmailer.plugin.impersonate" class="%swiftmailer.plugin.impersonate.class%" public="false">
             <argument>%swiftmailer.sender_address%</argument>