Netgate SG-1000 microFirewall

Author Topic: code source bouton "Save" et "Apply change "  (Read 174 times)

0 Members and 1 Guest are viewing this topic.

Offline Medi

  • Newbie
  • *
  • Posts: 5
  • Karma: +0/-0
    • View Profile
code source bouton "Save" et "Apply change "
« on: December 28, 2017, 02:24:11 am »


Bonjour,

je suis en train de modifier le fichier config.xml de pfsense depuis un script python pour ajouter des vlan's, interfaces, des rules ... etc. après la mise en place du nouveau fichier config.xml dans /cf/conf/ je supprime le /tmp/config.cache pour appliquer la modification. la seule chose manquante l'état de l'interface, il est toujours Down, après une clic sur le bouton "Save" dans le Gui de l'interface crée après sur "Apply change", je trouve son état est UP.
je demande si c'est possible de m'indiquer comment je puisse lancer le script ou le code php qui fait le sauvegarde et applique les changements effectuer, je trouve déjà une fonction dans le fichier interfaces.php :

+++++++++++++++++++++++++++++++++++++++++++++++++++++
$changes_applied = false;

if ($_POST['apply']) {
unset($input_errors);
if (!is_subsystem_dirty('interfaces')) {
$input_errors[] = gettext("The settings have already been applied!");
} else {
$retval = 0;
unlink_if_exists("{$g['tmp_path']}/config.cache");
clear_subsystem_dirty('interfaces');

if (file_exists("{$g['tmp_path']}/.interfaces.apply")) {
            $toapplylist = unserialize(file_get_contents("{$g['tmp_path']}/.interfaces.apply"));
            foreach ($toapplylist as $ifapply => $ifcfgo) {
                if (isset($config['interfaces'][$ifapply]['enable'])) {
                    interface_bring_down($ifapply, false, $ifcfgo);
                    interface_configure($ifapply, true);
                    if ($config['interfaces'][$ifapply]['ipaddrv6'] == "track6") {
                        /* call interface_track6_configure with linkup true so
                           IPv6 IPs are added back. dhcp6c needs a HUP. Can't
                           just call interface_configure with linkup true as
                           that skips bridge membership addition.
                        /
                        $wancfg = $config['interfaces'][$ifapply];
                        interface_track6_configure($ifapply, $wancfg, true);
                    }
                } else {
                    interface_bring_down($ifapply, true, $ifcfgo);
                    if (isset($config['dhcpd'][$ifapply]['enable']) ||
                        isset($config['dhcpdv6'][$ifapply]['enable'])) {
                        services_dhcpd_configure();
                    }
                }
            }
        }
        / restart snmp so that it binds to correct address */
        $retval |= services_snmpd_configure();

/* sync filter configuration */
        setup_gateways_monitor();

clear_subsystem_dirty('interfaces');

$retval |= filter_configure();

enable_rrd_graphing();

$changes_applied = true;

if (is_subsystem_dirty('staticroutes') && (system_routing_configure() == 0)) {
            clear_subsystem_dirty('staticroutes');
        }
    }
    @unlink("{$g['tmp_path']}/.interfaces.apply");
}
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

je ne sais pas si c'est la bonne fonction ou pas, malgré ça je ne connais pas la façon d'exécutions de ce code là.

J'attends vos conseils ou propositions ;)
Merci

Offline ccnet

  • Hero Member
  • *****
  • Posts: 2836
  • Karma: +36/-11
    • View Profile
Re: code source bouton "Save" et "Apply change "
« Reply #1 on: December 28, 2017, 02:49:43 am »
Une chose m'échappe dans tout cela. D'un point de vue pratique quel est l'objectif final ?

Offline Medi

  • Newbie
  • *
  • Posts: 5
  • Karma: +0/-0
    • View Profile
Re: code source bouton "Save" et "Apply change "
« Reply #2 on: December 28, 2017, 04:23:23 am »
Bonne question ccnet ;)

Mon objectif est d'automatiser la création des vlan's, interfaces, nat, alias .. etc dans le fichier config.xml depuis un script, cette partie passe bien, cette phase passe bien, seulement l'activation de l'interface réseaux ne marche pas, le seul moyen est d'entrer dans l'interface gui de pfsense, dans le menu de la nouvelle interface réseau, clic sur la bouton "Save" et puis "Apply change" et oop l'interface est UP.
Donc pour cela, j'ai besoin de ce code pour l'intégrer dans le script python ;)

j’espère que j'ai bien présenter mon objectif :)

Offline ccnet

  • Hero Member
  • *****
  • Posts: 2836
  • Karma: +36/-11
    • View Profile
Re: code source bouton "Save" et "Apply change "
« Reply #3 on: December 28, 2017, 04:36:12 am »
C'est tout à fait clair. Outre le fait que je ne vois ni l'intérêt, ni la justification à automatiser cela, je ne sais pas comment vous envisagez de le faire. Normalement ces paramètres changent assez peu. Je crois comprendre que vous envisagez d'attaquer directement, depuis le script, le firewall. C'est un problème de sécurité majeur et une mauvaise pratique. N'oubliez pas que ce faisant, y compris via l'interface, que vous êtes root. De plus vous allez stocker très probablement un mot de passe
Un possibilité serait de générer le fichier xml conforme à vos besoin et de passer l'option de restauration. C'est moins dangereux si vous êtes certain de la maitrise du fichier xml.

Offline Medi

  • Newbie
  • *
  • Posts: 5
  • Karma: +0/-0
    • View Profile
Re: code source bouton "Save" et "Apply change "
« Reply #4 on: December 28, 2017, 04:54:24 am »
Au niveau de sécurité j'ai bien protéger mon réseaux, mon architecture de scripting ce lance en local pas à distant.

Pour la méthode de restauration ça ne me plait pas, parce que chaque modification effectuer vas rebooter le serveur pfsense ça implique une coupure de connexion pendant le délais de démarrage.

Avant, j'ai utilise le script /etc/rc.reload_interfaces, mais je tombe une autre fois dans le problème du perte de connexion.

Offline ccnet

  • Hero Member
  • *****
  • Posts: 2836
  • Karma: +36/-11
    • View Profile
Re: code source bouton "Save" et "Apply change "
« Reply #5 on: December 28, 2017, 05:15:00 am »
Au niveau de sécurité j'ai bien protéger mon réseaux, mon architecture de scripting ce lance en local pas à distant.
Je ne comprend pas cette phrase. Au delà de vos affirmations le principe est de toute façon douteux.
Vous aurez de toute façon des coupures. Les modifications sur les vlans et interfaces nécessitent très souvent de redémarrer Pfsense pour fonctionner correctement.
Et je ne vois toujours pas l'intérêt de ne pas utiliser l'interface pour faire vos modifications.

Offline Medi

  • Newbie
  • *
  • Posts: 5
  • Karma: +0/-0
    • View Profile
Re: code source bouton "Save" et "Apply change "
« Reply #6 on: December 28, 2017, 07:12:38 am »
Si je passe par l'interface GUI de pfsense je vais créer manuellement les vlan's et les interfaces, mon objectif est de le rendre automatique par l'insertion des données dans le fichier config.xml et de rafraîchir cette nouvelle configuration.

Offline ccnet

  • Hero Member
  • *****
  • Posts: 2836
  • Karma: +36/-11
    • View Profile
Re: code source bouton "Save" et "Apply change "
« Reply #7 on: December 28, 2017, 02:09:41 pm »
Il faudrat bien indiquer et saisir les données nouvelles pour générer votre xml . Vous n'avez pas 300 vlans et douze interfaces à ajouter tous les matins. Je ne vois que des risques et inconvénients à la méthode que vous envisagez. Et je vous le redis, il faut en général redémarrer Pfsense avec ce type de modifications pour un fonctionnement correct. Je ne vois rien qui justifierai votre approche.