Joe Patterson
2017-03-02 16:35:46 UTC
I haven't seen anything, but I figured I'd ask before making any
conclusions: Is there any way to determine the CID of clients in the
management interface? It doesn't seem to be part of the output of
'status'. Or does the CID only exist within ">CLIENT:" notifications?
The boring details are: I'm writing a little program to do management of
my openvpn processes (managing authentication and doing some other useful
ancillary stuff) and whenever I authenticate a client I'm saving a fair
amount of state information about that client internally, and then when a
client disconnects, I'm undoing whatever needs undone for the client and
removing all the state info. The problem I'm trying to solve is that, if I
restart my program, I lose all that state. I could write it out to a file
occasionally and pick it back up on restart, and I'd be guaranteed that no
new clients would sneak in while I was restarting (because there'd be
nothing to issue the client-auth), but there's always the possibility that
a client would disconnect while I'm restarting and I'd miss it, thereby
having a bunch of state lying around for a client that's no longer
connected. The only alternative I can see is to, when I start up, load all
my state from disk, then issue a 'status' command and go through removing
clients that don't have their virtual address in my the client list, which
is probably effective, but just seems ugly. :)
Thanks in advance for any help!
-Joe
conclusions: Is there any way to determine the CID of clients in the
management interface? It doesn't seem to be part of the output of
'status'. Or does the CID only exist within ">CLIENT:" notifications?
The boring details are: I'm writing a little program to do management of
my openvpn processes (managing authentication and doing some other useful
ancillary stuff) and whenever I authenticate a client I'm saving a fair
amount of state information about that client internally, and then when a
client disconnects, I'm undoing whatever needs undone for the client and
removing all the state info. The problem I'm trying to solve is that, if I
restart my program, I lose all that state. I could write it out to a file
occasionally and pick it back up on restart, and I'd be guaranteed that no
new clients would sneak in while I was restarting (because there'd be
nothing to issue the client-auth), but there's always the possibility that
a client would disconnect while I'm restarting and I'd miss it, thereby
having a bunch of state lying around for a client that's no longer
connected. The only alternative I can see is to, when I start up, load all
my state from disk, then issue a 'status' command and go through removing
clients that don't have their virtual address in my the client list, which
is probably effective, but just seems ugly. :)
Thanks in advance for any help!
-Joe