X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=doc%2Fafm-system-daemon.html;h=4569bc2c0a8b84cfd6938d7e0c23fe3d58a47023;hb=1.0;hp=96c622783a5104cc88385275100acdcac22145eb;hpb=ddd10705d70b598160a41d197f364d2f792359f5;p=src%2Fapp-framework-main.git diff --git a/doc/afm-system-daemon.html b/doc/afm-system-daemon.html index 96c6227..4569bc2 100644 --- a/doc/afm-system-daemon.html +++ b/doc/afm-system-daemon.html @@ -8,72 +8,240 @@

The afm-system-daemon

version: 1
-Date:    14 March 2016
+Date:    30 mai 2016
 Author:  José Bollo
 
- -

Organisation of directory of applications

+

+ + +

Foreword

+ +

This document describes application framework system daemon fundamentals. +FCF (Fully Conform to Specification) implementation is still under development. +It may happen that current implementation somehow diverges with specifications.

+ + +

Introduction

+ +

The daemon afm-system-daemon is in charge of installing +applications on AGL system. Its main tasks are:

-

The main path for applivcations are: APPDIR/PKGID/VER.

+ + + +

The afm-system-daemon takes its orders from system +instance of D-Bus.

+ +

The figure below summarizes the situation of afm-system-daemon in the system.

+ +
+------------------------------------------------------------+
+|                          User                              |
+|                                                            |
+|     +-------------------------------------------------+    |
+|     |                                                 |    |
+|     |                  afm-user-daemon                |    |
+|     |                                                 |    |
+|     +----------+----------------------+----------+----+    |
+|                |                      |          :         |
+|                |                      |          :         |
+:================|======================|==========:=========:
+|                |                      |          :         |
+|     +----------+----------+     +-----+-----+    :         |
+|     |   D-Bus   system    +-----+  CYNARA   |    :         |
+|     +----------+----------+     +-----+-----+    :         |
+|                |                      |          :         |
+|     +----------+---------+    +-------+----------+----+    |
+|     | afm-system-daemon  +----+   SECURITY-MANAGER    |    |
+|     +--------------------+    +-----------------------+    |
+|                                                            |
+|                          System                            |
++------------------------------------------------------------+
+
+ + +

Starting afm-system-daemon

+ +

afm-system-daemon is launched as a systemd service +attached to system. Normally, the service file is +located at /lib/systemd/system/afm-system-daemon.service.

+ +

The options for launching afm-system-daemon are:

+ +
-r
+--root directory
+
+ Set the root application directory.
+
+ Note that the default root directory is defined
+ to be /usr/share/afm/applications (may change).
+
+-d
+--daemon
+
+ Daemonizes the process. It is not needed by sytemd.
+
+-q
+--quiet
+
+ Reduces the verbosity (can be repeated).
+
+-v
+--verbose
+
+ Increases the verbosity (can be repeated).
+
+-h
+--help
+
+ Prints a short help.
+
+ + +

The D-Bus interface

+ + +

Overview of the dbus interface

+ +

afm-system-daemon takes its orders from the session instance +of D-Bus. The use of D-Bus is great because it allows to implement +discovery and signaling.

+ +

The afm-system-daemon is listening with the destination name +org.AGL.afm.system at the object of path /org/AGL/afm/system +on the interface org.AGL.afm.system for the below detailed +members install and uninstall.

+ +

D-Bus is mainly used for signaling and discovery. Its optimized +typed protocol is not used except for transmitting only one string +in both directions.

-

Where:

+

The client and the service are using JSON serialization to +exchange data.

+ +

The D-Bus interface is defined by:

-

This organisation has the advantage to allow several versions to leave together. -This is needed for some good reasons (rolling back) and also for less good reasons (user habits).

+

The signature of any member of the interface is string -> string +for JSON -> JSON.

+ +

This is the normal case. In case of error, the current implementation +returns a dbus error that is a string.

+ +

Here is an example using dbus-send to query data on +installed applications.

+ +
dbus-send --session --print-reply \
+--dest=org.AGL.afm.system \
+/org/AGL/afm/system \
+org.AGL.afm.system.install 'string:"/tmp/appli.wgt"'
+
+ + +

The protocol over D-Bus

+ +
+ + +

Method org.AGL.afm.system.install

+ +

Description: Install an application from a widget file.

+ +

When an application with the same id and version already exists. Outside of +using force=true the application is not reinstalled.

+ +

Applications are installed the subdirectories of applications common directory. +If root is specified, the application is installed under the +sub-directories of the root defined.

+ +

Note that this methods is a simple accessor method of +org.AGL.afm.system.install from afm-system-daemon.

- -

Identity of installed files

+

After the installation and before returning to the sender, +afm-system-daemon sends a signal org.AGL.afm.system.changed.

-

All the files are installed as the user “userapp” and group “userapp”. -All files have rw(x) for user and r-(x) for group and others.

+

Input: The path of the widget file to install and, optionally, +a flag to force reinstallation, and, optionally, a root directory.

-

This allows any user to read the files.

+

Either just a string being the absolute path of the widget file:

- -

Labelling the directories of applications

+
"/a/path/driving/to/the/widget"
+
+ +

Or an object:

+ +
{
+  "wgt": "/a/path/to/the/widget",
+  "force": false,
+  "root": "/a/path/to/the/root"
+}
+
+ +

“wgt” and “root” must be absolute paths.

+ +

output: An object with the field “added” being the string for +the id of the added application.

- -

Organisation of data

+
{"added":"appli@x.y"}
+
+ +
+ + +

Method org.AGL.afm.system.uninstall

-

The data of a user are in its directory and are labelled using the labels of the application

+

Description: Uninstall an application from its id.

- -

Setting Smack rules for the application

+

Note that this methods is a simple method accessor of +org.AGL.afm.system.uninstall from afm-system-daemon.

-

For Tizen, the following rules are set by the security manager for each application.

+

After the uninstallation and before returning to the sender, +afm-system-daemon sends a signal org.AGL.afm.system.changed.

-
System ~APP~             rwx
-System ~PKG~             rwxat
-System ~PKG~::RO         rwxat
-~APP~  System            wx
-~APP~  System::Shared    rxl
-~APP~  System::Run       rwxat
-~APP~  System::Log       rwxa
-~APP~  _                 l
-User   ~APP~             rwx
-User   ~PKG~             rwxat
-User   ~PKG~::RO         rwxat
-~APP~  User              wx
-~APP~  User::Home        rxl
-~APP~  User::App::Shared rwxat
-~APP~  ~PKG~             rwxat
-~APP~  ~PKG~::RO         rxl
+

Input: the id of the application and optionally the application root path.

+ +

Either a string:

+ +
"appli@x.y"
 
-

Here, ~PKG~ is the identifier of the package and ~APP~ is the identifier of the application.

+

Or an object:

- -

What user can run an application?

+
{
+  "id": "appli@x.y",
+  "root": "/a/path/to/the/root"
+}
+
-

Not all user are able to run all applications. -How to manage that?

+

output: the value ‘true’.