add server status
This commit is contained in:
		
							parent
							
								
									1cee45de63
								
							
						
					
					
						commit
						af345335b7
					
				
							
								
								
									
										22
									
								
								bridge.py
									
									
									
									
									
								
							
							
						
						
									
										22
									
								
								bridge.py
									
									
									
									
									
								
							| @ -105,6 +105,27 @@ def update_tg(CONFIG, mode, dmr_id, data): | |||||||
| ##        return config.build_config(cli_file) | ##        return config.build_config(cli_file) | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | def ping(CONFIG): | ||||||
|  |     user_man_url = CONFIG['USER_MANAGER']['URL'] | ||||||
|  |     shared_secret = str(sha256(CONFIG['USER_MANAGER']['SHARED_SECRET'].encode()).hexdigest()) | ||||||
|  |     ping_data = { | ||||||
|  |     'ping': CONFIG['USER_MANAGER']['THIS_SERVER_NAME'], | ||||||
|  |     'secret':shared_secret | ||||||
|  | 
 | ||||||
|  |     } | ||||||
|  | ##    print(rules_check) | ||||||
|  |     json_object = json.dumps(ping_data, indent = 4) | ||||||
|  |      | ||||||
|  |     try: | ||||||
|  |         req = requests.post(user_man_url, data=json_object, headers={'Content-Type': 'application/json'}) | ||||||
|  | ##        resp = json.loads(req.text) | ||||||
|  | ##        print(resp) | ||||||
|  | ##        return resp['rules'] | ||||||
|  |     except requests.ConnectionError: | ||||||
|  |         logger.error('Config server unreachable') | ||||||
|  | ##        return config.build_config(cli_file) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| # Function to download rules | # Function to download rules | ||||||
| def download_rules(L_CONFIG_FILE, cli_file): | def download_rules(L_CONFIG_FILE, cli_file): | ||||||
|     user_man_url = L_CONFIG_FILE['USER_MANAGER']['URL'] |     user_man_url = L_CONFIG_FILE['USER_MANAGER']['URL'] | ||||||
| @ -414,6 +435,7 @@ def rule_timer_loop(): | |||||||
| 
 | 
 | ||||||
| # run this every 10 seconds to trim orphaned stream ids | # run this every 10 seconds to trim orphaned stream ids | ||||||
| def stream_trimmer_loop(): | def stream_trimmer_loop(): | ||||||
|  |     ping(CONFIG) | ||||||
|     logger.debug('(ROUTER) Trimming inactive stream IDs from system lists') |     logger.debug('(ROUTER) Trimming inactive stream IDs from system lists') | ||||||
|     _now = time() |     _now = time() | ||||||
| 
 | 
 | ||||||
|  | |||||||
							
								
								
									
										64
									
								
								web/app.py
									
									
									
									
									
								
							
							
						
						
									
										64
									
								
								web/app.py
									
									
									
									
									
								
							| @ -52,6 +52,7 @@ import os, ast | |||||||
| 
 | 
 | ||||||
| script_links = {} | script_links = {} | ||||||
| active_tgs = {} | active_tgs = {} | ||||||
|  | ping_list = {} | ||||||
| 
 | 
 | ||||||
| # Query radioid.net for list of IDs | # Query radioid.net for list of IDs | ||||||
| def get_ids(callsign): | def get_ids(callsign): | ||||||
| @ -760,10 +761,36 @@ def create_app(): | |||||||
|         sl = ServerList.query.all() |         sl = ServerList.query.all() | ||||||
|         svr_content = '' |         svr_content = '' | ||||||
|         for i in sl: |         for i in sl: | ||||||
|  |             try: | ||||||
|  |                 if time.time() - ping_list[i.name] < 30: | ||||||
|  |                     svr_status = '''<div class="alert alert-success"> | ||||||
|  |       <strong>Online</strong> | ||||||
|  |        </div> ''' | ||||||
|  |                 elif time.time() - ping_list[i.name] <= 300: | ||||||
|  |                     svr_status = '''<div class="alert alert-warning"> | ||||||
|  |       <strong>No pings. ( < 5 min.)</strong> | ||||||
|  |        </div> ''' | ||||||
|  |                 elif time.time() - ping_list[i.name] > 300: | ||||||
|  |                     svr_status = '''<div class="alert alert-danger"> | ||||||
|  |       <strong>Offline</strong> | ||||||
|  |        </div> ''' | ||||||
|  |                 else: | ||||||
|  |                     svr_status = '''<div class="alert alert-warning"> | ||||||
|  |       <strong>Unknown Condition</strong> | ||||||
|  |        </div> ''' | ||||||
|  |                     print(ping_list) | ||||||
|  |                     print(time.time()) | ||||||
|  |             except: | ||||||
|  |                 svr_status = '''<div class="alert alert-warning"> | ||||||
|  |       <strong>Unknown</strong> | ||||||
|  |        </div> ''' | ||||||
|  |                 | ||||||
|             svr_content = svr_content + ''' |             svr_content = svr_content + ''' | ||||||
| <div class="panel panel-default"> | <div class="panel panel-default"> | ||||||
|   <div class="panel-heading" style="text-align: center;"><h3>''' + i.name + '''</h3></div> |   <div class="panel-heading" style="text-align: center;"><h3>''' + i.name + '''</h3></div> | ||||||
|   <div class="panel-body container-fluid center;"> |   <div class="panel-body container-fluid center;"> | ||||||
|  |   <hr /> | ||||||
|  |   ''' + svr_status + ''' | ||||||
|     <div style="max-width:200px; word-wrap:break-word; text-align: center;">''' + i.public_notes + '''</div> |     <div style="max-width:200px; word-wrap:break-word; text-align: center;">''' + i.public_notes + '''</div> | ||||||
|     <p> </p> |     <p> </p> | ||||||
|     <a href="/talkgroups/''' + i.name + '''"><button type="button" class="btn btn-primary btn-block" >Available Talkgroups</button></a> |     <a href="/talkgroups/''' + i.name + '''"><button type="button" class="btn btn-primary btn-block" >Available Talkgroups</button></a> | ||||||
| @ -773,7 +800,6 @@ def create_app(): | |||||||
|   </div> |   </div> | ||||||
| </div> | </div> | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| ''' | ''' | ||||||
|         try: |         try: | ||||||
|             #content = Markup('<strong>The HTML String</strong>') |             #content = Markup('<strong>The HTML String</strong>') | ||||||
| @ -3683,14 +3709,35 @@ TG #: <strong> ''' + str(tg_d.tg) + '''</strong> | |||||||
| 
 | 
 | ||||||
| <table style="width: 400px; margin-left: auto; margin-right: auto;" border="1"> | <table style="width: 400px; margin-left: auto; margin-right: auto;" border="1"> | ||||||
| <tbody> | <tbody> | ||||||
| <td style="text-align: center;"><h5><strong>Name</strong><h5></td> | <td style="text-align: center; width: 150px;"><h5><strong>Name</strong><h5></td> | ||||||
| <td style="text-align: center;"><h5><strong>Notes</strong><h5></td> | <td style="text-align: center;"><h5><strong>Notes</strong><h5></td> | ||||||
| 
 | 
 | ||||||
| ''' | ''' | ||||||
|             for s in all_s: |             for s in all_s: | ||||||
|  |                 try: | ||||||
|  |                     if time.time() - ping_list[s.name] < 30: | ||||||
|  |                         svr_status = '''<div class="alert alert-success"> | ||||||
|  |           <strong><strong><a href="manage_servers?edit_server=''' + str(s.name) + '''">''' + str(s.name) + '''</a></strong> | ||||||
|  |            </div>''' | ||||||
|  |                     elif time.time() - ping_list[s.name] <= 300: | ||||||
|  |                         svr_status = '''<div class="alert alert-warning"> | ||||||
|  |           <strong><strong><a href="manage_servers?edit_server=''' + str(s.name) + '''">''' + str(s.name) + '''</a></strong> | ||||||
|  |            </div>''' | ||||||
|  |                     elif time.time() - ping_list[s.name] > 300: | ||||||
|  |                         svr_status = '''<div class="alert alert-danger"> | ||||||
|  |           <strong><strong><a href="manage_servers?edit_server=''' + str(s.name) + '''">''' + str(s.name) + '''</a></strong> | ||||||
|  |            </div>''' | ||||||
|  |                     else: | ||||||
|  |                         svr_status = '''<div class="alert alert-warning"> | ||||||
|  |           <strong><strong><a href="manage_servers?edit_server=''' + str(s.name) + '''">''' + str(s.name) + '''</a></strong> | ||||||
|  |            </div>''' | ||||||
|  |                 except: | ||||||
|  |                     svr_status = '''<div class="alert alert-warning"> | ||||||
|  |           <strong><strong><a href="manage_servers?edit_server=''' + str(s.name) + '''">''' + str(s.name) + '''</a></strong> | ||||||
|  |            </div>''' | ||||||
|                 p_list = p_list + ''' |                 p_list = p_list + ''' | ||||||
| <tr> | <tr> | ||||||
| <td style="text-align: center;"><a href="manage_servers?edit_server=''' + str(s.name) + '''"><strong>''' + str(s.name) + '''</strong></a></td> | <td style="text-align: center;">''' + svr_status + '''</td> | ||||||
| <td>''' + s.notes + '''</td> | <td>''' + s.notes + '''</td> | ||||||
| </tr>\n | </tr>\n | ||||||
| ''' | ''' | ||||||
| @ -5503,8 +5550,14 @@ TG #: <strong> ''' + str(tg_d.tg) + '''</strong> | |||||||
|     @app.route('/svr', methods=['POST']) |     @app.route('/svr', methods=['POST']) | ||||||
|     def auth(): |     def auth(): | ||||||
|         hblink_req = request.json |         hblink_req = request.json | ||||||
|         # print((hblink_req)) |         print((hblink_req)) | ||||||
|         if hblink_req['secret'] in shared_secrets(): |         if hblink_req['secret'] in shared_secrets(): | ||||||
|  |             try: | ||||||
|  |                 if hblink_req['ping']: | ||||||
|  |                     ping_list[hblink_req['ping']] = time.time() | ||||||
|  |                     response = '' | ||||||
|  |             except: | ||||||
|  |                 pass | ||||||
|             if 'login_id' in hblink_req and 'login_confirmed' not in hblink_req: |             if 'login_id' in hblink_req and 'login_confirmed' not in hblink_req: | ||||||
|                 if type(hblink_req['login_id']) == int: |                 if type(hblink_req['login_id']) == int: | ||||||
|                     if authorized_peer(hblink_req['login_id'])[0]: |                     if authorized_peer(hblink_req['login_id'])[0]: | ||||||
| @ -5580,7 +5633,8 @@ TG #: <strong> ''' + str(tg_d.tg) + '''</strong> | |||||||
|             elif 'get_config' in hblink_req: |             elif 'get_config' in hblink_req: | ||||||
|                 if hblink_req['get_config']:  |                 if hblink_req['get_config']:  | ||||||
|                     active_tgs[hblink_req['get_config']] = {} |                     active_tgs[hblink_req['get_config']] = {} | ||||||
|                     print(active_tgs) |                     ping_list[hblink_req['get_config']] = time.time() | ||||||
|  | ##                    print(active_tgs) | ||||||
|     ##                try: |     ##                try: | ||||||
| ##                    print(get_peer_configs(hblink_req['get_config'])) | ##                    print(get_peer_configs(hblink_req['get_config'])) | ||||||
|                     response = jsonify( |                     response = jsonify( | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user