Permalink
Browse files

Merge branch 'devel'

  • Loading branch information...
2 parents 4282751 + 91d85fb commit cc38a87f849c4d52de77314c7ec84fb7796c6470 @oguzy committed Aug 14, 2012
Showing with 315 additions and 1 deletion.
  1. +78 −1 README.md
  2. +184 −0 ovizart/ow-settings.py
  3. +34 −0 ovizart/wsgi/apache_django
  4. +19 −0 ovizart/wsgi/django.wsgi
View
@@ -154,10 +154,87 @@ Although it is used for IDS, Bro is used for TCP reassembly issues at this proje
* It is required two development server processes running.
$ bin/django runserver
+
$ bin/django runserver 127.0.0.1:8001
After this step the application is ready to be used. Open the browser and go to the address http://127.0.0.1:8001. By using
login credentials, you may upload raw traffic files, mainly pcap formatted files.
Current beta version supports HTTP, DNS and SMTP traffic analyzing. Use login part only for uploads. After upload, logout and check the
-uploaded traffic details. The logins pages are not fixed yet.
+uploaded traffic details. The logins pages are not fixed yet.
+
+
+Using Web Server
+----------------
+
+* Install all required Python binding and third-party programs
+
+ $ sudo apt-get install mercurial python-pip python-dpkt python-magic, python-django
+ $ sudo apt-get install tshark tcpflow
+ $ sudo pip install hachoir-core==1.3.3
+ $ sudo pip install hachoir-parser==1.3.4
+ $ sudo pip install hachoir-regex==1.0.5
+ $ sudo pip install hachoir-subfile==0.5.3
+ $ sudo pip install django-tastypie==0.9.11
+ $ pip install hg+https://bitbucket.org/wkornewald/django-nonrel
+ $ pip install hg+https://bitbucket.org/wkornewald/djangotoolbox
+ $ pip install git+https://github.com/django-nonrel/mongodb-engine
+
+* Install mongodb server
+
+ $ sudo apt-get install mongodb-server
+
+* Create tables and create the test user
+
+Assuming you cloned the repo to ovizart directory
+
+ $ cd ovizart
+ $ buildout2.7
+ $ bin/django syncdb
+
+Say no for the admin table creation.
+
+ $ cd ovizart
+ $ python scripts/create_user.py
+
+
+* Install Bro as development server one.
+
+* Install web server
+
+ $ sudo apt-get install apache2
+
+* Apache requires wsgi module to handle Python files
+
+ $ sudo apt-get install libapache2-mod-wsgi
+
+ wsgi requires a virtual host definition. A sample virtual host definition is under wsgi directory. Copt it under apache
+ configuration directory and enable the site. Before compying, change the path names and server name. In my example
+ the cloned directory path is /home/oguz/git/ovizart and the server name is ow.comu.edu.tr which is defined also at
+ /etc/hosts files.
+
+ $ cp apache_django /etc/apache2/sites-available
+ $ a2ensite apache_django
+ $ /etc/init.d/apache2 reload
+
+The virtual host definition runs the wsgi script also. So make it executable
+
+ $ chmod a+x django.wsgi
+
+ Check its paths also before restarting the server.
+
+* Apache requires port configuration.
+
+Edit /etc/apache2/ports.conf and add two lines below the default port definitions as below
+
+ NameVirtualHost *:80
+ Listen 80
+
+ NameVirtualHost *:8000
+ Listen 8000
+
+This will require Apache restart and settings.py changes. A sample file is added with the name ow-settings.py. Make your
+changes according to it.
+
+After restarting Apache, http://ow.comu.edu.tr or what ever domain you defined should be working fine for you also.
+
View
@@ -0,0 +1,184 @@
+#!/usr/bin/env python
+#-*- coding: UTF-8 -*-
+
+# Django settings for ovizart project.
+
+import os
+# development settings, debugs are set to True
+from development import *
+
+ADMINS = (
+ ('Oğuz Yarımtepe', 'oguzyarimtepe@gmail.com'),
+)
+
+LOGIN_URL = "http://ow.comu.edu.tr:80"
+
+PROJECT_NAME = 'Network Analyzer'
+PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))
+
+BASE_URL = "http://ow.comu.edu.tr:8000"
+ALTERNATE_BASE_URL = "http://ow.comu.edu.tr:80"
+
+# define the protocol detecter directory name
+# it should be under the modules/traffic/detector directory
+# it should have a handler.py, including a Handler class derived from the base/handler
+# the detect method is the thing what you want to do
+PROTOCOL_HANDLER = "bro"
+BRO_CMD = "/usr/local/bro/bin/bro"
+BRO_CUT_CMD = "/usr/local/bro/bin/bro-cut"
+
+# means that there exists an http module under parser directory, if the name changes, than the directory should be exists
+HTTP_HANDLER = "http"
+DNS_HANDLER = "dns"
+SMTP_HANDLER = "smtp"
+UNKNOWN_HANDLER = "unknown"
+VIRUS_HANDLER = "virustotal"
+
+MANAGERS = ADMINS
+
+DATABASES = {
+ 'default': {
+ 'ENGINE': 'django_mongodb_engine', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
+ 'NAME': 'trafficdb', # Or path to database file if using sqlite3.
+ 'USER': '', # Not used with sqlite3.
+ 'PASSWORD': '', # Not used with sqlite3.
+ 'HOST': 'localhost', # Set to empty string for localhost. Not used with sqlite3.
+ 'PORT': 27017, # Set to empty string for default. Not used with sqlite3.
+ }
+}
+
+# Local time zone for this installation. Choices can be found here:
+# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name
+# although not all choices may be available on all operating systems.
+# On Unix systems, a value of None will cause Django to use the same
+# timezone as the operating system.
+# If running in a Windows environment this must be set to the same as your
+# system time zone.
+TIME_ZONE = 'America/Chicago'
+
+# Language code for this installation. All choices can be found here:
+# http://www.i18nguy.com/unicode/language-identifiers.html
+LANGUAGE_CODE = 'en-us'
+
+SITE_ID = 1
+
+# If you set this to False, Django will make some optimizations so as not
+# to load the internationalization machinery.
+USE_I18N = True
+
+# If you set this to False, Django will not format dates, numbers and
+# calendars according to the current locale
+USE_L10N = True
+
+# Absolute filesystem path to the directory that will hold user-uploaded files.
+# Example: "/home/media/media.lawrence.com/media/"
+MEDIA_ROOT = os.path.join(PROJECT_ROOT, "media")
+
+#json_file directory path
+JSON_ROOT = os.path.join(PROJECT_ROOT, "json_files")
+#csv_file directory path
+CSV_ROOT = os.path.join(PROJECT_ROOT, "csv_files")
+#json_file directory path
+UPLOAD_ROOT = os.path.join(PROJECT_ROOT, "uploads")
+
+# URL that handles the media served from MEDIA_ROOT. Make sure to use a
+# trailing slash.
+# Examples: "http://media.lawrence.com/media/", "http://example.com/media/"
+MEDIA_URL = 'http://ow.comu.edu.tr:8000/site_media/'
+
+# Absolute path to the directory static files should be collected to.
+# Don't put anything in this directory yourself; store your static files
+# in apps' "static/" subdirectories and in STATICFILES_DIRS.
+# Example: "/home/media/media.lawrence.com/static/"
+STATIC_ROOT = ''
+
+# URL prefix for static files.
+# Example: "http://media.lawrence.com/static/"
+STATIC_URL = '/static/'
+
+# URL prefix for admin static files -- CSS, JavaScript and images.
+# Make sure to use a trailing slash.
+# Examples: "http://foo.com/static/admin/", "/static/admin/".
+ADMIN_MEDIA_PREFIX = '/static/admin/'
+
+# Additional locations of static files
+STATICFILES_DIRS = (
+ # Put strings here, like "/home/html/static" or "C:/www/django/static".
+ # Always use forward slashes, even on Windows.
+ # Don't forget to use absolute paths, not relative paths.
+)
+
+# List of finder classes that know how to find static files in
+# various locations.
+STATICFILES_FINDERS = (
+ 'django.contrib.staticfiles.finders.FileSystemFinder',
+ 'django.contrib.staticfiles.finders.AppDirectoriesFinder',
+# 'django.contrib.staticfiles.finders.DefaultStorageFinder',
+)
+
+# Make this unique, and don't share it with anybody.
+SECRET_KEY = 'i3fm^x%@1ae=lshi+knzjt_340_b243+d1@^ua!f#vq1xb=!wx'
+
+# List of callables that know how to import templates from various sources.
+TEMPLATE_LOADERS = (
+ 'django.template.loaders.filesystem.Loader',
+ 'django.template.loaders.app_directories.Loader',
+# 'django.template.loaders.eggs.Loader',
+)
+
+MIDDLEWARE_CLASSES = (
+ 'django.middleware.common.CommonMiddleware',
+ 'django.contrib.sessions.middleware.SessionMiddleware',
+ 'django.middleware.csrf.CsrfViewMiddleware',
+ 'django.contrib.auth.middleware.AuthenticationMiddleware',
+ 'django.contrib.messages.middleware.MessageMiddleware',
+)
+
+ROOT_URLCONF = 'ovizart.urls'
+
+TEMPLATE_DIRS = (
+ # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
+ # Always use forward slashes, even on Windows.
+ # Don't forget to use absolute paths, not relative paths.
+ os.path.join(PROJECT_ROOT, "templates"),
+)
+
+INSTALLED_APPS = (
+ 'django.contrib.auth',
+ 'django.contrib.contenttypes',
+ 'django.contrib.sessions',
+ 'django.contrib.sites',
+ 'django.contrib.messages',
+ 'django.contrib.staticfiles',
+ 'djangotoolbox',
+ # Uncomment the next line to enable the admin:
+ 'django.contrib.admin',
+ 'ovizart.pcap',
+ 'ovizart.main',
+ 'tastypie',
+ # Uncomment the next line to enable admin documentation:
+ # 'django.contrib.admindocs',
+)
+
+# A sample logging configuration. The only tangible logging
+# performed by this configuration is to send an email to
+# the site admins on every HTTP 500 error.
+# See http://docs.djangoproject.com/en/dev/topics/logging for
+# more details on how to customize your logging configuration.
+LOGGING = {
+ 'version': 1,
+ 'disable_existing_loggers': False,
+ 'handlers': {
+ 'mail_admins': {
+ 'level': 'ERROR',
+ 'class': 'django.utils.log.AdminEmailHandler'
+ }
+ },
+ 'loggers': {
+ 'django.request': {
+ 'handlers': ['mail_admins'],
+ 'level': 'ERROR',
+ 'propagate': True,
+ },
+ }
+}
View
@@ -0,0 +1,34 @@
+<VirtualHost *:80 *:8000>
+ ServerAdmin oguzy@comu.edu.tr
+ ServerName ow.comu.edu.tr
+ ErrorLog ${APACHE_LOG_DIR}/django-error.log
+ LogLevel warn
+
+ CustomLog ${APACHE_LOG_DIR}/django-access.log combined
+
+ DocumentRoot /home/oguz/git/ovizart/ovizart
+ <Directory /home/oguz/git/ovizart/ovizart>
+ Order allow,deny
+ Allow from all
+ </Directory>
+
+ Alias /site_media/ /home/oguz/git/ovizart/ovizart/media/
+ <Directory /home/oguz/git/ovizart/ovizart/media/>
+ Order deny,allow
+ Options Indexes
+ Allow from all
+ IndexOptions FancyIndexing
+ </Directory>
+
+ WSGIDaemonProcess ovizart display-name=%{GROUP} user=www-data group=www-data threads=25
+ WSGIProcessGroup ovizart
+ WSGIScriptAlias / /home/oguz/git/ovizart/ovizart/wsgi/django.wsgi
+
+ <Directory /home/oguz/git/ovizart/ovizart/wsgi/>
+ Order deny,allow
+ Options Indexes
+ Allow from all
+ IndexOptions FancyIndexing
+ </Directory>
+
+</VirtualHost>
View
@@ -0,0 +1,19 @@
+import os, sys
+
+project_path = "/home/oguz/git/ovizart"
+project_app_path = "/home/oguz/git/ovizart/ovizart"
+
+if project_path not in sys.path:
+ sys.path.append(project_path)
+if project_app_path not in sys.path:
+ sys.path.append(project_app_path)
+
+os.environ['DJANGO_SETTINGS_MODULE'] = 'ovizart.settings'
+
+import django.core.handlers.wsgi
+
+_application = django.core.handlers.wsgi.WSGIHandler()
+
+def application(environ, start_response):
+ environ['PATH_INFO'] = environ['SCRIPT_NAME'] + environ['PATH_INFO']
+ return _application(environ, start_response)

0 comments on commit cc38a87

Please sign in to comment.