mirror of https://github.com/MISP/misp-dashboard
				
				
				
			Merge remote-tracking branch 'upstream/master' into multipleMerges
						commit
						2cc957c87e
					
				
							
								
								
									
										63
									
								
								README.md
								
								
								
								
							
							
						
						
									
										63
									
								
								README.md
								
								
								
								
							|  | @ -88,6 +88,69 @@ optional arguments: | |||
|                         The URL to connect to | ||||
| ``` | ||||
| 
 | ||||
| # Deploy in production using mod_wsgi | ||||
| 
 | ||||
| Install Apache's mod-wsgi for Python3 | ||||
| 
 | ||||
| ```bash | ||||
| sudo apt-get install libapache2-mod-wsgi-py3 | ||||
| ``` | ||||
| 
 | ||||
| Caveat: If you already have mod-wsgi installed for Python2, it will be replaced! | ||||
| 
 | ||||
| ```bash | ||||
| The following packages will be REMOVED: | ||||
|   libapache2-mod-wsgi | ||||
| The following NEW packages will be installed: | ||||
|   libapache2-mod-wsgi-py3 | ||||
| ``` | ||||
| 
 | ||||
| Configuration file `/etc/apache2/sites-available/misp-dashboard.conf` assumes that `misp-dashboard` is cloned into `var/www/misp-dashboard`. It runs as user `misp` in this example. Change the permissions to folder and files accordingly. | ||||
| 
 | ||||
| ``` | ||||
| <VirtualHost *:8000> | ||||
|     ServerAdmin admin@misp.local | ||||
|     ServerName misp.local | ||||
| 
 | ||||
|     DocumentRoot /var/www/misp-dashboard | ||||
|      | ||||
|     WSGIDaemonProcess misp-dashboard \ | ||||
|        user=misp group=misp \ | ||||
|        python-home=/var/www/misp-dashboard/DASHENV \ | ||||
|        processes=1 \ | ||||
|        threads=15 \ | ||||
|        maximum-requests=5000 \ | ||||
|        listen-backlog=100 \ | ||||
|        queue-timeout=45 \ | ||||
|        socket-timeout=60 \ | ||||
|        connect-timeout=15 \ | ||||
|        request-timeout=60 \ | ||||
|        inactivity-timeout=0 \ | ||||
|        deadlock-timeout=60 \ | ||||
|        graceful-timeout=15 \ | ||||
|        eviction-timeout=0 \ | ||||
|        shutdown-timeout=5 \ | ||||
|        send-buffer-size=0 \ | ||||
|        receive-buffer-size=0 \ | ||||
|        header-buffer-size=0 \ | ||||
|        response-buffer-size=0 \ | ||||
|        server-metrics=Off | ||||
| 
 | ||||
|     WSGIScriptAlias / /var/www/misp-dashboard/misp-dashboard.wsgi | ||||
| 
 | ||||
|     <Directory /var/www/misp-dashboard> | ||||
|         WSGIProcessGroup misp-dashboard | ||||
|         WSGIApplicationGroup %{GLOBAL} | ||||
|         Require all granted | ||||
|     </Directory> | ||||
| 
 | ||||
|     LogLevel info | ||||
|     ErrorLog /var/log/apache2/misp-dashboard.local_error.log | ||||
|     CustomLog /var/log/apache2/misp-dashboard.local_access.log combined | ||||
|     ServerSignature Off | ||||
| </VirtualHost> | ||||
| ``` | ||||
| 
 | ||||
| # License | ||||
| Images and logos are handmade for: | ||||
| - rankingMISPOrg/ | ||||
|  |  | |||
|  | @ -1,3 +1,7 @@ | |||
| [Server] | ||||
| host = localhost | ||||
| port = 8001 | ||||
| 
 | ||||
| [Dashboard] | ||||
| #hours | ||||
| graph_log_refresh_rate = 1 | ||||
|  |  | |||
|  | @ -174,8 +174,15 @@ class Geo_helper: | |||
| 
 | ||||
|     def ip_to_coord(self, ip): | ||||
|         resp = self.reader.city(ip) | ||||
|         lat = float(resp.location.latitude) | ||||
|         lon = float(resp.location.longitude) | ||||
|         try: | ||||
|             lat = float(resp.location.latitude) | ||||
|             lon = float(resp.location.longitude) | ||||
|         except TypeError: # No location, try to use iso_code instead | ||||
|             self.logger.info('no location in geIP.database response for ip: {}'.format(ip)) | ||||
|             iso_code = resp.registered_country.iso_code #if no iso_code, throws | ||||
|             coord = self.country_code_to_coord[iso_code.lower()]  # countrycode is in upper case | ||||
|             lat = float(coord['lat']) | ||||
|             lon = float(coord['long']) | ||||
|         # 0.0001 correspond to ~10m | ||||
|         # Cast the float so that it has the correct float format | ||||
|         lat_corrected = float("{:.4f}".format(lat)) | ||||
|  |  | |||
|  | @ -0,0 +1,4 @@ | |||
| import sys,os,os.path | ||||
| sys.path.insert(0, os.path.dirname(__file__)) | ||||
| os.environ["DASH_CONFIG"] = os.path.join(os.path.dirname(__file__), "config") | ||||
| from server import app as application | ||||
|  | @ -23,6 +23,9 @@ cfg.read(configfile) | |||
| logger = logging.getLogger('werkzeug') | ||||
| logger.setLevel(logging.ERROR) | ||||
| 
 | ||||
| server_host = cfg.get("Server", "host") | ||||
| server_port = cfg.getint("Server", "port") | ||||
| 
 | ||||
| app = Flask(__name__) | ||||
| 
 | ||||
| redis_server_log = redis.StrictRedis( | ||||
|  | @ -550,4 +553,4 @@ def getGenericTrendingOvertime(): | |||
|     return jsonify(data) | ||||
| 
 | ||||
| if __name__ == '__main__': | ||||
|     app.run(host='localhost', port=8001, threaded=True) | ||||
|     app.run(host=server_host, port=server_port, threaded=True) | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	 Sami Mokaddem
						Sami Mokaddem