Ajout activation/désactivation port

Bonjour,

Serait il possible d’ajouter au plugin l’activation et désactivation de port des switchs et UDM ?
Je ne parle pas du POE mais bien du port ethernet lui même.

Pour me justifier, voici un usage possible :
J’ai 2 connexions internet, l’une FTTH, l’autre en backup 4G.
Lorsque je bascule en 4G car perte FTTH, je ne souhaite pas que tous mes appareils puissent aller taper sur le réseau, car mon débit et mon forfait 4G n’est pas illimité.
J’aimerais donc créer un scenario qui coupe les ports eth de mes switchs pour lesquels je ne veux pas donner accès réseau dans ce cas.
Il y a d’autres cas d’usage possible, mais je n’en ai pas l’idée là tout de suite.

Merci :slight_smile:

Bonjour,

Je regarde si c’est possible simplement mais je pense que c’est un port profile

Bonjour,

Ca semble toucher aux vlans aussi en fait, car apparemment on passe le forward du port de native (vlan native donc typiquement 1) à disabled… j’ai une autre demande pour ajouter un vlan taggué temporairement sur un port aussi… je vais devoir voir comment gérer l’ensemble… si je ne parviens pas à contenter tout le monde, je vous donnerai des lignes à mettre dans un bloc code scénario pour réaliser ce que vous voullez.


(à gauche, l’override du port avant, à droite l’override du port après)

1 « J'aime »

Merci pour ta réactivité nebz, ça fait plaisir :slight_smile:

Bon…

c’est pas possible de l’implémenter tel quel dans le plugin.

Car, en fait quand on désactive un port, on perd des informations, comme on voit à droite, le native network est retiré ainsi que le mode de connexion du port (natif, taggué etc) et dans l’interface aussi le réseau natif disparait.

Donc quand on le réactive, soit on le laisse à none, soit on choisis un réseau natif… mais le plugin peut pas le deviner ! et s’il sauvegarde la dernière information, elle peut avoir changé, donc pas fiable (imaginons vous désactivez et réactivez 6 mois après alors que vous avez tout changé niveau vlan…)

De plus en fonction de la configuration vlan, ça peut changer…

le seul moyen c’est de le gérer vous même via scénario.

Je vous fournis des commandes pour le faire manuellement bientôt

  1. Dans le controleur, au moins une fois, désactivez le port, appliquez les changements, attendez quelques minutes, puis activez à nouveau le port, appliquez les changements.
  2. Mettre à jour le plugin car j’ai ajouté des fonctions pratiques
  3. Assurez vous que le port est activé dans le controleur
  4. Créer un scénario avec juste un bloc code qui contient ce code (puis sauvez et exécutez):
$macSwitch="ab:ab:ab:ab:ab:ab";
$port=8;

$data = unifiCmd::get_switch_port_config($macSwitch,$port);
$scenario->setLog(json_encode($data,JSON_PRETTY_PRINT));

(adaptez évidemment la mac du switch et le port concerné)

  1. Dans les logs du scénario vous allez voir la configuration du port, copiez la qqpart sans oublier la première « { »
    image

  2. Dans l’interface du controleur désactivez le port comme vous désirez qu’il le soit

  3. Relancez le scénario et copiez les nouvelles valeurs et comparez-les avec https://www.jsondiff.com/ par exemple

  4. Dans votre scénario pour activer ou désactivez le port dans un bloc code
    Pour désactiver :

$macSwitch="ab:ab:ab:ab:ab:ab";
$port=8;

$configToChange=[
	$port=>[
		'forward'=>'disabled',
		'port_security_enabled'=>true,
		'native_networkconf_id'=>''
	]
];

$data = unifi::uExecute('getAccessDevices', ["args" => $macSwitch]); 
$new_ports_config=['port_overrides' => unifiCmd::update_port_overrides($data[0]['port_overrides'], $configToChange) ];

log::add('unifi', 'debug', __('ACTION:set_device_settings_base sur', __FILE__).' '. $data[0]['device_id'] . ' ' . json_encode($new_ports_config));

$result = unifi::uExecute('setDeviceSettingsBase', ['args' => '["' . $data[0]['device_id'] . '",' . json_encode($new_ports_config) . ']']);

Pour activer :

$macSwitch="ab:ab:ab:ab:ab:ab";
$port=8;

$configToChange=[
	$port=>[
		'forward'=>'native',
		'port_security_enabled'=>false,
		'native_networkconf_id'=>'600316091a5f2321666123ab'
	]
];

$data = unifi::uExecute('getAccessDevices', ["args" => $macSwitch]); 
$new_ports_config=['port_overrides' => unifiCmd::update_port_overrides($data[0]['port_overrides'], $configToChange) ];

log::add('unifi', 'debug', __('ACTION:set_device_settings_base sur', __FILE__).' '. $data[0]['device_id'] . ' ' . json_encode($new_ports_config));

$result = unifi::uExecute('setDeviceSettingsBase', ['args' => '["' . $data[0]['device_id'] . '",' . json_encode($new_ports_config) . ']']);

Attention : Remplacez les valeurs dans le tableau $configToChange en fonction de ce que vous avez noté qui change dans la configuration quand vous activez/désactivez le port. Ainsi que la mac et le numéro du port forcément !

1 « J'aime »

Merci beaucoup pour ton aide.
Je vais garder ça bien au chaud merci :slight_smile:
Sinon je me disais je peux aussi bloquer les accès device par device via la commande « Bloquer » de chaque device, c’est une solution :slight_smile:

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.