1111from datetime import datetime
1212from tools .confighelper import DectWIPConfig
1313
14- print ('Make sure Subscription and Auto-Create are enabled' )
15-
1614lock = Lock ()
1715app = Flask (__name__ )
1816scheduler = APScheduler ()
1917
2018@app .route ('/connect/' , methods = ['POST' ])
2119def connect ():
22-
23- print ('obtaining lock' )
2420 with lock :
25- print ('lock obtained' )
26-
2721 req_json = request .get_json ()
2822
2923 user_extension = requests .get (f"http://{ config .dect_wip_internal_ip } :{ config .dect_wip_port } /api/v1/GetUserExtensionByToken/{ req_json ['token' ]} " ).json ()
3024
3125 extension = user_extension ['extension' ]
3226 password = user_extension ['password' ]
3327 displayname = user_extension ['name' ]
34-
28+
29+ # TODO get temp_extension from omm
3530 temp_extenison = requests .get (f"http://{ config .dect_wip_internal_ip } :{ config .dect_wip_port } /api/v1/GetTempExtensionByCallerid/{ req_json ['callerid' ]} " ).json ()
36-
37- ppn = temp_extenison ['ppn' ]
38- uid = temp_extenison ['uid' ]
39-
40- print (ppn )
41- print (uid )
42-
43- client .detach_user_device (uid ,ppn )
44-
45- newuser = client .create_user (extension )
46- client .set_user_sipauth (newuser .uid , extension , password )
47- client .set_user_name (newuser .uid , displayname )
48-
49- print (client .attach_user_device (int (newuser .uid ), ppn ))
50- # no implemented in current ommclient ...
51- #client.delete_user(uid)
52-
31+
32+ # deletes existing users with the same extension
33+ # this also detaches the (dynamically linked) device
34+ for user in client .find_users (lambda user : user .num == extension ):
35+ print (f"deleting uid { user .uid } (duplicate of extension { extension } )" )
36+ client .delete_user (user .uid )
37+
38+ new_user = client .create_user (extension )
39+ client .set_user_sipauth (new_user .uid , extension , password )
40+ client .set_user_name (new_user .uid , displayname )
41+
42+ print (f"detaching ppn { temp_extenison ['ppn' ]} from uid { temp_extenison ['uid' ]} " )
43+ client .detach_user_device (temp_extenison ['uid' ], temp_extenison ['ppn' ])
44+
45+ print (f"deleting uid { temp_extenison ['uid' ]} " )
46+ client .delete_user (temp_extenison ['uid' ])
47+
48+ print (f"attaching ppn { temp_extenison ['ppn' ]} to uid { new_user .uid } , extension { extension } " )
49+ client .attach_user_device (int (new_user .uid ), temp_extenison ['ppn' ])
50+
5351 response = make_response (jsonify ( {"message" : "extension added" }), 200 )
5452 return response
5553
5654@scheduler .task ('interval' , id = 'makeTemps' , seconds = 5 , next_run_time = datetime .now (), max_instances = 1 )
5755def makeTemps ():
58- print ("lets go" )
59-
60- print ('obtaining lock' )
6156 with lock :
62- print ('lock obtained' )
63-
6457 for device in list (client .find_devices (lambda d : d .relType == mitel_ommclient2 .types .PPRelTypeType ("Unbound" ))):
6558 extension = 't_' + namegenerator .generate_name () + utilities .getRandomNumber (4 )
6659 password = utilities .getRandomStr (20 )
67-
60+
6861 newuser = client .create_user (extension )
6962 client .set_user_sipauth (newuser .uid , extension , password )
7063 client .set_user_name (newuser .uid , extension [2 :21 ])
7164 client .attach_user_device (int (newuser .uid ), int (device .ppn ))
72-
65+
7366 data = {
7467 "extension" : extension ,
7568 "password" : password ,
7669 "uid" : newuser .uid ,
7770 "ppn" : device .ppn
7871 }
7972
80- print (data )
81-
73+ print ("new temp extension created" , data )
74+
8275 response = requests .post (f"http://{ config .dect_wip_internal_ip } :{ config .dect_wip_port } /api/v1/AddTempExtensionToDB" , json = data )
83- print (response .text )
76+ if response .status_code != 200 :
77+ raise RuntimeError (f"adding temp extension to db failed: { response .status_code } { response .text } " )
78+
79+ @scheduler .task ('interval' , id = 'enable_subscription' , seconds = 15 , next_run_time = datetime .now (), max_instances = 1 )
80+ def enable_subscription ():
81+ with lock :
82+ if config .ommsync_enable_subscription :
83+ if client .get_dect_auth_code () != config .ommsync_auth_code :
84+ print (f"setting auth code to { config .ommsync_auth_code } " )
85+ client .set_dect_auth_code (config .ommsync_auth_code )
86+ if not client .get_device_auto_create ():
87+ print ("enabling device auto creation on OMM" )
88+ client .set_device_auto_create (True )
89+ if client .get_dect_subscription_mode () != 'Configured' :
90+ print ("enabling subscription on OMM" )
91+ client .set_dect_subscription_mode ('Configured' )
8492
8593def init (config_path ):
8694
@@ -94,6 +102,7 @@ def init(config_path):
94102 client = mitel_ommclient2 .OMMClient2 (
95103 host = config .omm_ip ,
96104 port = config .omm_port ,
105+ use_ssl = config .omm_usessl ,
97106 username = config .omm_username ,
98107 password = config .omm_password ,
99108 ommsync = True
0 commit comments