Skip to content

Commit

Permalink
docs update
Browse files Browse the repository at this point in the history
  • Loading branch information
Eugeny committed Mar 23, 2015
1 parent 388ac73 commit 6e2d872
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 0 deletions.
29 changes: 29 additions & 0 deletions docs/source/dev/about.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
What's Ajenti and how it works
==============================

Ajenti Project itself consists of **Ajenti Core** itself and a set of stock plugins forming the **Ajenti Panel**.

Ajenti Core
-----------

Ajenti Core is a web interface development framework which includes a web server, IoC container, a simplistic web framework and set of core components aiding in client-server communications.

Ajenti Panel
------------

Ajenti Panel consists of plugins developed for the Ajenti Core and a startup script, together providing a server administration panel experience. The Panel's plugins include: file manager, terminal, notepad, etc.

Modus operandi
--------------

During bootstrap, Ajenti Core will locate and load Python modules containing Ajenti plugins (identified by a ``plugin.yml`` file). It will then register the implementation classes found in them in the root IoC container. Some interfaces to be implemented include :class:`aj.api.http.HttpPlugin`, :class:`aj.plugins.core.api.sidebar.SidebarItemProvider`.

Ajenti Core runs a HTTP server on a specified port, managing a pool of isolated session workers and forwarding requests to these workers, delivering them to the relevant :class:`aj.api.http.HttpPlugin` instances. It also supports Socket.IO connections, forwarding them to the relevant :class:`aj.api.http.SocketEndpoint` instances.

Ajenti contains a mechanism for session authentication through PAM login and ``sudo`` elevation. Standard ``core`` plugin provides HTTP API for that.

Authenticated sessions are moved to isolated worker processes running under the corresponding account.

Ajenti frontend is an AngularJS application composed from Angular modules provided by each plugin. Every plugin can contribute its own JS/CSS code to the combined resource package delivered to the client.

The ``core`` plugin provides a ``ng:view`` container for ``ngRoute`` navigation. So, the plugins that have UI are expected to provide additional ``ngRoute`` routes, templates and controllers.
1 change: 1 addition & 0 deletions docs/source/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ Developers

.. toctree::

dev/about.rst
dev/intro.rst
dev/ui.rst
dev/resources.rst
Expand Down

0 comments on commit 6e2d872

Please sign in to comment.