Name: hails Version: 0.9.2.1 build-type: Simple License: GPL-2 License-File: LICENSE Author: Hails team Maintainer: Hails team 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