packages feed

hails-0.9.2.2: hails.cabal

Name:           hails
Version:        0.9.2.2
build-type:     Simple
License:        GPL-2
License-File:   LICENSE
Author:         Hails team
Maintainer:     Hails team <hails at scs dot stanford dot edu>
Synopsis:       Multi-app web platform framework
Category:       Web
Cabal-Version:  >= 1.8

Description:
  The rise of web platforms and their associated /apps/ represents a
  new way of developing and deploying software.  Sites such as
  Facebook and Yammer are no longer written by a single entity, but
  rather are freely extended by third-party developers offering
  competing features to users.

  .

  Allowing an app to access more user data allows developers to build
  more compelling products. It also opens the door to accidental or
  malicious breaches of user privacy. In the case of a website like
  Facebook, exposing access to a user's private messages would allow
  an external developer to build a search feature. Exciting!  But,
  another developer can take advantage of this feature to build an app
  that mines private messages for credit card numbers, ad keywords, or
  other sensitive data.

  .

  Frameworks such as Ruby on Rails, Django, Yesod, etc. are geared
  towards building monolithic web sites. And, they are great for
  this! However, they are not designed for websites that integrate
  third-party code, and thus lack a good mechanism for building such
  multi-app platforms without sacrificing a user's security or an
  app's functionality.

  .

  Hails is explicitly designed for building web /platforms/, where it
  is expected that a site will comprise many mutually-distrustful
  components written by a variety of entities.  We built Hails around
  two core design principles. 

  .

  * Separation of policy:
    Data access policies should be concisely specified alongside data
    structures and schemas, rather than strewn throughout the
    codebase in a series of conditionals. Code that implements this
    is called a /policy module/ in Hails (see "Hails.PolicyModule").

  .


  * Mandatory access control (MAC):
    Data access policies should be mandatory even once code has
    obtained access to data.  MAC lets platform components modules
    productively interact by sharing data, despite mutual distrust.
    Haskell lets us implement MAC at a fine grained level using the
    information flow control library "LIO".

  .

  A Hails platform hosts two types of code: /apps/ and /policy
  modules/. Apps encompass what would traditionally be considered
  controller and view logic. Policy modules are libraries that
  implement both the model and the data security policy. They are
  invoked directly by apps or other policy modules, but run with
  different privileges from the invoking code. Both apps and policy
  modules can be implemented by untrusted third parties, with the user
  only needing to trust the policy module governing the data in
  question. Separating of policy code from app code allows users to
  inspect and more easily unserstand the overall security provided by
  the system, while MAC guarantees that these policies are enforced
  in an end-to-end fashion.

Extra-source-files:
  examples/simpleDBExample.hs
  examples/SimpleApp.hs
  examples/httpClientExample.hs

Source-repository head
  Type:     git
  Location: ssh://anonymous@gitstar.com/scs/hails.git


Library
  Build-Depends:
    base              >= 4.5     && < 5.0
   ,transformers      >= 0.2.2
   ,mtl               >= 2.0
   ,containers        >= 0.4.2
   ,bytestring        >= 0.10
   ,text              >= 0.11
   ,parsec            >= 3.1.2
   ,binary            >= 0.5
   ,time              >= 1.2.0.5
   ,lio               >= 0.9.1.1
   ,base64-bytestring >= 0.1
   ,bson              >= 0.2
   ,mongoDB           >= 1.3.0
   ,network           >= 2.3
   ,conduit           >= 0.5
   ,resourcet         >= 0.3.3.1
   ,http-conduit      >= 1.5
   ,wai               >= 1.3
   ,wai-app-static    >= 1.3.0.1
   ,wai-extra         >= 1.3.0.1
   ,http-types        >= 0.7
   ,authenticate      >= 1.3
   ,cookie            >= 0.4
   ,blaze-builder     >= 0.3.1
   ,failure           >= 0.2.0.1
   ,SHA               >= 1.5.0.0

  GHC-options: -Wall -fno-warn-orphans

  Exposed-modules:
    Hails.Data.Hson
    Hails.Data.Hson.TCB
    Hails.Database
    Hails.Database.Core
    Hails.Database.TCB
    Hails.Database.Query
    Hails.Database.Query.TCB
    Hails.Database.Structured
    Hails.HttpServer
    Hails.HttpServer.Auth
    Hails.HttpServer.Types
    Hails.PolicyModule
    Hails.PolicyModule.DSL
    Hails.PolicyModule.Groups
    Hails.PolicyModule.TCB
    Hails.HttpClient
    Hails.Version
    Hails.Web
    Hails.Web.User
    Hails.Web.Controller
    Hails.Web.Frank
    Hails.Web.REST
    Hails.Web.Responses
    Hails.Web.Router
  Other-modules:
    Paths_hails

Executable hails
  Main-is: hails.hs
  ghc-options: -package ghc -Wall -fno-warn-orphans
  Build-Depends:
    base              >= 4.5     && < 5.0
   ,transformers      >= 0.2.2
   ,mtl               >= 2.0
   ,containers        >= 0.4.2
   ,bytestring        >= 0.9
   ,text              >= 0.11
   ,parsec            >= 3.1.2
   ,binary            >= 0.5
   ,time              >= 1.2.0.5
   ,lio               >= 0.9.1
   ,base64-bytestring >= 0.1
   ,bson              >= 0.2
   ,mongoDB           >= 1.3.0
   ,network           >= 2.3
   ,conduit           >= 0.5
   ,resourcet         >= 0.3.3.1
   ,http-conduit      >= 1.5
   ,wai               >= 1.3
   ,wai-extra         >= 1.3
   ,wai-app-static    >= 1.3
   ,warp              >= 1.3
   ,http-types        >= 0.7
   ,authenticate      >= 1.3
   ,cookie            >= 0.4
   ,blaze-builder     >= 0.3.1
   ,directory         >= 1.1
   ,filepath          >= 1.3
   ,unix              >= 2.5.1
   ,ghc-paths         >= 0.1.0.8
   ,SHA               >= 1.5.0.0
   ,hails

test-suite tests
  type: exitcode-stdio-1.0
  hs-source-dirs: tests
  main-is: Tests.hs

  ghc-options: -threaded -rtsopts -Wall -fno-warn-orphans

  build-depends:
    hails
   ,base                       >= 4.5
   ,containers                 >= 0.4.2
   ,unix                       >= 2.5
   ,time                       >= 1.2.0.5
   ,text                       >= 0.11
   ,QuickCheck                 >= 2.3
   ,HUnit                      >= 1.2.5
   ,quickcheck-instances       >= 0.3.0
   ,test-framework             >= 0.6
   ,test-framework-quickcheck2 >= 0.2.11
   ,test-framework-hunit       >= 0.2.7
   ,lio                        >= 0.9.0.0
   ,quickcheck-lio-instances   >= 0.9.0.0
   ,bson                       >= 0.2
   ,mongoDB                    >= 1.3.0
   ,wai                        >= 1.3
   ,wai-test                   >= 1.3
   ,http-types                 >= 0.7