@@ -44,27 +44,32 @@ def create_user_on_server(name, expiry_date) -> bool:
4444 return False
4545
4646
47- async def delete_user_on_server (name ) -> bool | str :
47+ def delete_user_on_server (name ) -> bool | str :
4848 try :
4949 if not os .path .exists (script_path ):
50- logger .error ("script not found on " )
50+ logger .error ("script not found at %s" , script_path )
5151 return False
5252
5353 env = {"PATH" : "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" }
5454 bash = pexpect .spawn (
55- "/usr/bin/bash" ,
56- [script_path ],
57- env = env ,
58- encoding = "utf-8" ,
59- timeout = 120 ,
55+ "/usr/bin/bash" , [script_path ], env = env , encoding = "utf-8" , timeout = 120
6056 )
6157
62- bash = pexpect .spawn (f"bash { script_path } " , encoding = "utf-8" , timeout = 60 )
58+ try :
59+ bash .expect (r"Option:|Select an option:" , timeout = 20 )
60+ except pexpect .TIMEOUT :
61+ logger .warning ("Did not see main menu prompt, attempting to continue" )
6362
64- bash .expect ("Option:" )
6563 bash .sendline ("2" )
6664
67- bash .expect ("Client:" )
65+ try :
66+ bash .expect (
67+ r"Select the client to revoke:|Select the client to revoke" , timeout = 20
68+ )
69+ except pexpect .TIMEOUT :
70+ logger .info ("Didn't match full header" )
71+
72+ bash .expect (r"Client:" , timeout = 20 )
6873 list_output = bash .before
6974
7075 pattern = re .compile (r"\s*(\d+)\)\s*(.+)" )
@@ -77,28 +82,39 @@ async def delete_user_on_server(name) -> bool | str:
7782 break
7883
7984 if not user_number :
80- logger .error (f "User '{ name } ' not found for delete!" )
81- bash .close ()
85+ logger .error ("User '%s ' not found for delete!" , name )
86+ bash .close (force = True )
8287 return "not_found"
8388
89+ logger .info ("Revoking user '%s' -> number %s" , name , user_number )
8490 bash .sendline (user_number )
8591
86- bash .expect (r"\[y/N\]:" , timeout = 30 )
87- bash .sendline ("y" )
92+ try :
93+ bash .expect (
94+ r"Confirm .*revocation\?.*\[y/N\]:|Confirm .*revocation\?.*:|Confirm .*revocation\?" ,
95+ timeout = 20 ,
96+ )
97+ bash .sendline ("y" )
98+ except pexpect .TIMEOUT :
99+ logger .warning ("Confirmation prompt not seen; trying to continue" )
88100
89- bash .expect (pexpect .EOF )
101+ bash .expect (pexpect .EOF , timeout = 120 )
102+ bash .close ()
103+
104+ # remove local .ovpn file if exists
90105 file_to_delete = f"/root/{ name } .ovpn"
91106 if os .path .exists (file_to_delete ):
92107 try :
93108 os .remove (file_to_delete )
94- return True
109+ logger . info ( "Removed %s" , file_to_delete )
95110 except Exception as e :
96- logger .error (f"Error deleting file { file_to_delete } : { e } " )
97- return False
98- else :
99- logger .warning (f"File { file_to_delete } does not exist." )
111+ logger .error ("Error deleting file %s: %s" , file_to_delete , e )
112+ return True
113+
114+ return True
115+
100116 except Exception as e :
101- logger .error ("Error in delete_user_on_server:" , e )
117+ logger .exception ("Error in delete_user_on_server: %s " , e )
102118 return False
103119
104120
0 commit comments