]> git.immae.eu Git - github/wallabag/wallabag.git/commitdiff
Add default system-wide ignore origin rules with install support
authorKevin Decherf <kevin@kdecherf.com>
Sun, 11 Aug 2019 21:55:12 +0000 (23:55 +0200)
committerKevin Decherf <kevin@kdecherf.com>
Sat, 25 Apr 2020 13:59:23 +0000 (15:59 +0200)
Signed-off-by: Kevin Decherf <kevin@kdecherf.com>
app/config/wallabag.yml
src/Wallabag/CoreBundle/Command/InstallCommand.php
src/Wallabag/CoreBundle/DataFixtures/IgnoreOriginInstanceRuleFixtures.php [new file with mode: 0644]
src/Wallabag/CoreBundle/DependencyInjection/Configuration.php
src/Wallabag/CoreBundle/DependencyInjection/WallabagCoreExtension.php

index eaa925072fd16e3af4f1833ff906daefee956cdb..4dad92001aab30ac16129aa2bb2482369c390732 100644 (file)
@@ -165,6 +165,14 @@ wallabag_core:
             value: 0
             section: entry
 
+    default_ignore_origin_instance_rules:
+        -
+            rule: host = "feedproxy.google.com"
+        -
+            rule: host = "feeds.reuters.com"
+        -
+            rule: _all ~ "https?://www\.lemonde\.fr/tiny.*"
+
 wallabag_user:
     registration_enabled: "%fosuser_registration%"
 
index 3aa332f131597a292ab830f80932afb24cc4ceab..8d08187a949562a73206b310aa2925797a629ea8 100644 (file)
@@ -12,6 +12,7 @@ use Symfony\Component\Console\Output\BufferedOutput;
 use Symfony\Component\Console\Output\OutputInterface;
 use Symfony\Component\Console\Question\Question;
 use Symfony\Component\Console\Style\SymfonyStyle;
+use Wallabag\CoreBundle\Entity\IgnoreOriginInstanceRule;
 use Wallabag\CoreBundle\Entity\InternalSetting;
 
 class InstallCommand extends ContainerAwareCommand
@@ -277,6 +278,7 @@ class InstallCommand extends ContainerAwareCommand
 
         // cleanup before insert new stuff
         $em->createQuery('DELETE FROM WallabagCoreBundle:InternalSetting')->execute();
+        $em->createQuery('DELETE FROM WallabagCoreBundle:IgnoreOriginInstanceRule')->execute();
 
         foreach ($this->getContainer()->getParameter('wallabag_core.default_internal_settings') as $setting) {
             $newSetting = new InternalSetting();
@@ -286,6 +288,12 @@ class InstallCommand extends ContainerAwareCommand
             $em->persist($newSetting);
         }
 
+        foreach ($this->getContainer()->getParameter('wallabag_core.default_ignore_origin_instance_rules') as $ignore_origin_instance_rule) {
+            $newIgnoreOriginInstanceRule = new IgnoreOriginInstanceRule();
+            $newIgnoreOriginInstanceRule->setRule($ignore_origin_instance_rule['rule']);
+            $em->persist($newIgnoreOriginInstanceRule);
+        }
+
         $em->flush();
 
         $this->io->text('<info>Config successfully setup.</info>');
diff --git a/src/Wallabag/CoreBundle/DataFixtures/IgnoreOriginInstanceRuleFixtures.php b/src/Wallabag/CoreBundle/DataFixtures/IgnoreOriginInstanceRuleFixtures.php
new file mode 100644 (file)
index 0000000..8a0a06e
--- /dev/null
@@ -0,0 +1,36 @@
+<?php
+
+namespace Wallabag\CoreBundle\DataFixtures;
+
+use Doctrine\Bundle\FixturesBundle\Fixture;
+use Doctrine\Common\Persistence\ObjectManager;
+use Symfony\Component\DependencyInjection\ContainerAwareInterface;
+use Symfony\Component\DependencyInjection\ContainerInterface;
+use Wallabag\CoreBundle\Entity\IgnoreOriginInstanceRule;
+
+class IgnoreOriginInstanceRuleFixtures extends Fixture implements ContainerAwareInterface
+{
+    /**
+     * @var ContainerInterface
+     */
+    private $container;
+
+    public function setContainer(ContainerInterface $container = null)
+    {
+        $this->container = $container;
+    }
+
+    /**
+     * {@inheritdoc}
+     */
+    public function load(ObjectManager $manager)
+    {
+        foreach ($this->container->getParameter('wallabag_core.default_ignore_origin_instance_rules') as $ignore_origin_instance_rule) {
+            $newIgnoreOriginInstanceRule = new IgnoreOriginInstanceRule();
+            $newIgnoreOriginInstanceRule->setRule($ignore_origin_instance_rule['rule']);
+            $manager->persist($newIgnoreOriginInstanceRule);
+        }
+
+        $manager->flush();
+    }
+}
index 7ae73371c246a69e227e7e26e067f63ca9be83d2..8574725671ffdbab0285b5a6a881d8343fd2126d 100644 (file)
@@ -65,6 +65,13 @@ class Configuration implements ConfigurationInterface
                 ->end()
                 ->scalarNode('encryption_key_path')
                 ->end()
+                ->arrayNode('default_ignore_origin_instance_rules')
+                    ->prototype('array')
+                        ->children()
+                            ->scalarNode('rule')->end()
+                        ->end()
+                    ->end()
+                ->end()
             ->end()
         ;
 
index e9a1e9e05fbdbb4bbbe89fa08a1835018d58bf88..af91e58867ff113436c71e9cae0def6d844fdffe 100644 (file)
@@ -30,6 +30,7 @@ class WallabagCoreExtension extends Extension
         $container->setParameter('wallabag_core.api_limit_mass_actions', $config['api_limit_mass_actions']);
         $container->setParameter('wallabag_core.default_internal_settings', $config['default_internal_settings']);
         $container->setParameter('wallabag_core.site_credentials.encryption_key_path', $config['encryption_key_path']);
+        $container->setParameter('wallabag_core.default_ignore_origin_instance_rules', $config['default_ignore_origin_instance_rules']);
 
         $loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__ . '/../Resources/config'));
         $loader->load('services.yml');