No description, website, or topics provided.
CSS HTML TeX Python JavaScript Makefile
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
Administriva
Whiteboard Photos
doc
final/Final Report
homework
midterm
proposal
src
.gitignore
LICENSE
README

README

RoboTractor - An approach to machine automation using XMPP and REST
-------------------------------------------------------------------
RoboTractor is a proof-of-concept to use existing Internet protocols
and infractructure to persistently communicate with a remote vehicle.
For more information read the paper as part of this repository.

Installation Instructions
-------------------------

-------------------
System Requirements
-------------------

- Apache w/ SSL
- Python >= 2.7
- Pip Package manager

All third party components are managed with python's virtual
environment function. External components are downloaded with pip.
Software written by this project is included in the repository, all
external products are downloaded and separated into the virtualenv.
For a per file summary, please see the bottom of this README file. To
begin working with RoboTractor:

1. Create a virtual environment
- virtualenv envs/548
2. Activate the virtual environment by "sourcing" the activate file
- . envs/548/bin/activate
3. Install the required tools.
- pip install -r requirements.txt

Now all third party components are installed in the virtual
environment. You may now start the development webserver to view the
local development site.

1. Navigate to src/robotractor and Start the webserver.
python manage.py runserver
2. Now connect to 127.0.0.1:8000 with a web browser

This is only a development version of the project. For deployment you
must use an industrial grade web server such as apache. Apache
configuration scripts are available in src/robotractor/server_config.
These scripts show how to configure the wsgi, and SSL for apache to
server the django back end of the project.
Demonstration keys are available in src/robotractor/ssl. 


Now that the webservice is up, one cane connect, and peruse the
two-factor auth system, and log into the admin interface.  To setup a
tractor demonstration, navigate to src/robotractor/virtualTractor

1. Run the virtual tractor
- python statemachine_test.py

The virtual tractor will connect to the remote XMPP service, andbegin
communicating with the backend service. You may not start a job in the
REST interface. 

Contribution Guidelines
-----------------------

- RoboTractor is licensed under the GNU Affero License. Please
  understand the stipulations of this license before using this
  project.

- RotoTractor is a proof of concept to using XMPP and REST to
  establish a persistent connection to remote vehicles.  Future work
  includes, but is not limited to:
  - Implementation using a hardware TPM, rather than our simulated
    one.
  - Mobile implementation in place of the simulated vehicle.
  - Expanded webservice API for more advanced uses.
  - Current vehicle simulation is a state machine. A more robust
    event-driven simulation would allow for reliable connection and
    disconnection logic.


Primary Contributors
--------------------

David Lucero - dwlucero@asu.edu
Arun Balaji Buduru - abuduru@asu.edu
Jeremy Wright - jlwrigh1@asu.edu

----------------------
Per file summary index
----------------------

src                               - Top level source folder for the project. Repository contains paper, and presentation supporting documents in higher level directories
+-- requirements.txt              - Generated by pip. pip installation script for installing third-party dependencies. 
+-- robotractor     
    +-- backend
    ¦   +-- admin.py              - Written by Jeremy Wright, describes to Django how to render the models in the admin panel.
    ¦   +-- api.py                - Written by Jeremy Wright, describes to TastyPie how to render the models in the REST interface.
    ¦   +-- fixture.json          - Generated by automation script for reloading the database.  Essentially a backup of the database.
    ¦   +-- __init__.py           - Required by python.
    ¦   +-- models.py             - Written by Jeremy Wright, describes the data, and how it is stored in SQL.
    ¦   +-- tests.py              - Generated by Django, unused.
    ¦   +-- views.py              - Generated by Django, unused.
    +-- db.sqlite3                - The Database
    +-- keys                      - Asymmetric keys for simulated TPM modules
    ¦   +-- robot-server.priv     - Server backend's private key.
    ¦   +-- robot-server.pub      - Server backend's public key.
    ¦   +-- tractor01.priv        - Tractor's private key.
    ¦   +-- tractor01.pub         - Tractor's public key.
    +-- manage.py                 - Generated by Django, modified by Jeremy Wright. Describes the system settings for the webservice
    +-- nohup.out                 - Test file for running backend within a nohup configuration.
    +-- robotractor               
    ¦   +-- __init__.py
    ¦   +-- settings.py           - Generated by Django, modified by Jeremy Wright. Describes the additional system settings for the webservice
    ¦   +-- urls.py               - Written by Jeremy Wright. Describes the URL to resource mappings.  Allows URL to call python code
    ¦   +-- views.py              - Written by Jeremy Wright. "the web pages" Python code that renders HTML pages for the website portion of the backend. (Reference two_factor tutorial)
    ¦   +-- wsgi.py               - Written by Jeremy Wright (Reference Django Documentation). Example configuration script for running django in apache. 
    +-- server_config
    ¦   +-- 54.83.55.95           - Apache configuration script.
    ¦   +-- index.wsgi            - Apache wsgi configuration, which loads the src/robotractor/robotractor/wsgi.py script
    +-- ssl
    ¦   +-- robotractor.crt       - Apache SSL files.
    ¦   +-- robotractor.key       - Apache SSL files.
    +-- static
    ¦   +-- js
    ¦       +-- jquery.cookie.js    - Open source library. Unused in the final project.
    ¦       +-- jquery.periodic.js  - Open source library. Unused in the final project.
    ¦       +-- robotractor.js      - Written by Arun Buduru. Implements all client side logic, and communicates to the REST interface. Supported by JQuery open source library.
    +-- templates                   - Templates are partial HTML pages. Python code in the view.py (above) stitches together views to render a full HTML page.
    ¦   +-- _base.html              - Base framework page. Modeled after django bootstrap
    ¦   +-- create_job.html         - Written by Jeremy Wright. Provides the create job function. 
    ¦   +-- farm_view.html          - Written by Jeremy Wright. Provides the real-time vehicle job view.
    ¦   +-- home.html               - Written by Jeremy Wright (reference two_factor). Provides the main sign in page.
    ¦   +-- _messages.html              - two_factor example views. Inspired by two_factor external plugin.
    ¦   +-- registration                - two_factor example views. Inspired by two_factor external plugin.
    ¦   ¦   +-- logged_out.html         - two_factor example views. Inspired by two_factor external plugin.
    ¦   +-- registration_complete.html  - two_factor example views. Inspired by two_factor external plugin.
    ¦   +-- registration.html           - two_factor example views. Inspired by two_factor external plugin.
    ¦   +-- two_factor                  - two_factor example views. Inspired by two_factor external plugin.
    ¦   ¦   +-- _base_focus.html        - two_factor example views. Inspired by two_factor external plugin.
    ¦   ¦   +-- _base.html              - two_factor example views. Inspired by two_factor external plugin.
    ¦   ¦   +-- _wizard_forms.html      - two_factor example views. Inspired by two_factor external plugin.
    ¦   +-- user_sessions               - two_factor example views. Inspired by two_factor external plugin.
    ¦       +-- _base.html              - two_factor example views. Inspired by two_factor external plugin.
    +-- virtualTractor              - The vehicle simulation
    ¦   +-- __init__.py 
    ¦   +-- statemachine.py         - Written by David Lucero. Implements an abstraction for state machine logic.
    ¦   +-- statemachine_test.py    - Written by David Lucero. Implements the vehicle simulation logic.
    ¦   +-- tmp_test.py             - Written by David Lucero. Test code for the TPM device.
    ¦   +-- TPM.py                  - Written by Jeremy Wright. Simulated tamper-proof hardware. Robotractor's attack model requires keys managed by such a device
    +-- xmppservice.py              - Written by Jeremy Wright. Implements the server side xmpp connection. This bridges the REST/Django backend to the virtual tractor using XMPP.
    +-- xmppservice.sh              - Written by Jeremy Wright. Convenience script for starting robotractor's xmpp service as a daemon.