freeradius Le problème de la durée maximale de la session

j'utilise openvpn et free-radius Gérer les comptes d'utilisateurs. Pour le temps de session maximum pour l'utilisateur dans free-radius il y a sqlcounter.conf, Qui gère cela, mais après avoir enfreint la connexion, il est utile et ne peut pas détruire la connexion. Pour le temps de gestion de compte dynamique, j'ai besoin d'un autre script qui le fera. Mais devrait à tout moment lorsque la connexion a défini le lancement de la gâchette. Dans tous les cas, exécutez un déclencheur ou un script personnalisé lors de l'établissement d'une connexion? Ou de quelque manière que ce soit de contrôler de manière dynamique l'heure de la session?
Invité:

Giselle

Confirmation de:

Je le fais en utilisant le programme c, qui cherche des changements dans le programme, vous pouvez vérifier la connexion de l'utilisateur à openvpn.

#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <sys types.h="">
#include <linux inotify.h="">
#include <sys select.h="">
#define EVENT_SIZE ( sizeof (struct inotify_event) )
#define EVENT_BUF_LEN ( 1024 * ( EVENT_SIZE + 16 ) )
int event_check (int fd)
{
fd_set rfds;
FD_ZERO (&amp;rfds);
FD_SET (fd, &amp;rfds);
/* Wait until an event happens or we get interrupted
by a signal that we catch */
return select (FD_SETSIZE, &amp;rfds, NULL, NULL, NULL);
}

int main( )
{
int length, i = 0;
int fd;
int wd;
while(1){
i=0;
fd = inotify_init();

if ( fd &lt; 0 ) {
perror( "inotify_init" );
}

wd = inotify_add_watch( fd, "/tmp/test", IN_CLOSE_WRITE);
if (event_check (fd) &gt; 0)
{
char buffer[EVENT_BUF_LEN];
int count = 0;
length = read( fd, buffer, EVENT_BUF_LEN );
if ( length &lt; 0 ) {
perror( "read" );
}
while ( i &lt; length ) { struct inotify_event *event = ( struct inotify_event * ) &amp;buffer[ i ];
printf( "New file %s Editted.\n", event-&gt;name );
i += EVENT_SIZE + event-&gt;len;
}
}
}
inotify_rm_watch( fd, wd );
close( fd );
}

Mais ce n'est pas un très bon code, mais cela fonctionne, peut-on mieux écrire ce code?
</sys></linux></sys></errno.h></stdlib.h></stdio.h>

Catherine

Confirmation de:

Après plusieurs recherches, je ne peux pas trouver un moyen de faire cela, mais la façon de savoir quand la connexion est établie, - Il est d'utiliser les fichiers journaux de rayon et la base de données de rayon. mysql n'a pas de méthode de notification lors de la modification, mais pour les fichiers journaux peut utiliser la notification du système de fichiers, telle que dnotify "Dans le passé" et la bibliothèque inotify. Je commence à utiliser cela et publie ce résultat.

Pour répondre aux questions, connectez-vous ou registre