afm-unit.conf: connect to systemd sockets
[src/app-framework-main.git] / conf / afm-unit.conf
1 ;---------------------------------------------------------------------------------
2 ; File:
3 ;
4 ;    afm-unit.conf
5 ;
6 ; Role:
7 ;
8 ;    Configure how installation of widget produces unit files for systemd
9 ;
10 ; Processing and format:
11 ;
12 ;    1. File load
13 ;
14 ;           Lines beginning with ; are firstly removed
15 ;
16 ;    2. File instanciation
17 ;
18 ;           Mustache (extended) substitutions are applied using JSON
19 ;           data deduced from config.xml file of the widget.
20 ;
21 ;    3. Extraction of units
22 ;
23 ;           Extract produced units, pack it (remove empty lines and directives)
24 ;
25 ; Directives:
26 ;
27 ;    All directive occopy one whole line starting with %
28 ;
29 ;     - %nl
30 ;
31 ;             produce an empty line at the end
32 ;
33 ;     - %begin systemd-unit
34 ;     - %end systemd-unit
35 ;
36 ;             delimit the produced unit
37 ;
38 ;     - %systemd-unit user
39 ;     - %systemd-unit system
40 ;
41 ;             tells the kind of unit (user/system)
42 ;
43 ;     - %systemd-unit service NAME
44 ;     - %systemd-unit socket NAME
45 ;
46 ;             gives the name and type of the unit
47 ;
48 ;---------------------------------------------------------------------------------
49 {{#targets}}
50 %begin systemd-unit
51
52 # auto generated by wgtpkg-unit for {{id}} version {{version}} target {{:#target}}
53 %nl
54
55 [unit]
56 Description={{description}}
57 X-AGL-Name={{name.content}}
58 X-AGL-Name-Short={{name.short}}
59 X-AGL-Id={{id}}
60 X-AGL-Idaver={{idaver}}
61 X-AGL-Target-Name={{:#target}}
62 X-AGL-Author={{author.content}}
63 X-AGL-Author-email={{author.email}}
64 X-AGL-HTTP-port={{:#metadata.http-port}}
65 %nl
66
67 # Adds check to smack
68 ConditionSecurity=smack
69 %nl
70
71 # Automatic bound to required api
72 {{#required-api}}
73 BindsTo=afm-api-{{name}}
74 After=afm-api-{{name}}
75 {{/required-api}}
76 %nl
77
78 [Service]
79 SmackProcessLabel=User::App::{{id}}
80
81 {{#required-permission}}
82   {{#urn:AGL:permission::platform:no-oom}}      OOMScoreAdjust=-500             {{/urn:AGL:permission::platform:no-oom}}
83   {{#urn:AGL:permission::partner:real-time}}    IOSchedulingClass=realtime      {{/urn:AGL:permission::partner:real-time}}
84   {{^urn:AGL:permission::partner:real-time}}    RestrictRealtime=on             {{/urn:AGL:permission::partner:real-time}}
85   {{#urn:AGL:permission::public:display}}       SupplementaryGroups=display     {{/urn:AGL:permission::public:display}}
86   {{^urn:AGL:permission::public:syscall:clock}} SystemCallFilter=~@clock        {{/urn:AGL:permission::public:syscall:clock}}
87 {{/required-permission}}
88 %nl
89
90 WorkingDirectory={{&#metadata.app-data-dir}}
91 SuccessExitStatus=0 SIGKILL
92
93 ;---------------------------------------------------------------------------------
94 {{#content.type=text/html}}
95
96 %systemd-unit user
97
98 %systemd-unit service afm-appli-{{idaver}}{{^#target=main}}@{{:#target}}{{/#target=main}}
99
100 ExecStart=/usr/bin/afb-daemon --port={{:#metadata.http-port}} --random-token \
101         --rootdir={{:#metadata.install-dir}} \
102         --workdir={{&#metadata.app-data-dir}}/{{id}} \
103         {{#required-permission.urn:AGL:permission::public:no-htdocs}}\
104                 --roothttp=. \
105         {{/required-permission.urn:AGL:permission::public:no-htdocs}}\
106         {{^required-permission.urn:AGL:permission::public:no-htdocs}}\
107                 --roothttp=htdocs \
108         {{/required-permission.urn:AGL:permission::public:no-htdocs}}\
109         {{#required-permission.urn:AGL:permission::public:applications:read}}\
110                 --alias=/icons:{{:#metadata.icons-dir}} \
111         {{/required-permission.urn:AGL:permission::public:applications:read}}\
112         {{#required-api}}\
113                 {{#value=auto}}\
114                         --ws-client=unix:%t/apis/ws/{{name}} \
115                 {{/value=auto}}\
116                 {{#value=ws}}\
117                         --ws-client=unix:%t/apis/ws/{{name}} \
118                 {{/value=ws}}\
119                 {{#value=dbus}}\
120                         --dbus-client={{name}} \
121                 {{/value=dbus}}\
122                 {{#value=link}}\
123                         --binding=%t/apis/lib/{{name}} \
124                 {{/value=link}}\
125                 {{#value=cloud}}\
126                         --cloud-client={{name}} \
127                 {{/value=cloud}}\
128         {{/required-api}}\
129         --exec /usr/bin/web-runtime http://localhost:@p/{{content.src}}?token=@t
130
131 {{/content.type=text/html}}
132
133 ;---------------------------------------------------------------------------------
134 {{#content.type=application/vnd.agl.service}}
135
136 %systemd-unit user
137 %systemd-unit service afm-api-{{:#target}}
138
139 ExecStart=/usr/bin/afb-daemon \
140         --rootdir={{:#metadata.install-dir}} \
141         --workdir={{&#metadata.install-dir}}/{{id}} \
142         {{^required-permission.urn:AGL:permission::partner:service:no-ws}}\
143                 --ws-server=sd:{{:#target}} \
144         {{/required-permission.urn:AGL:permission::partner:service:no-ws}}\
145         {{^required-permission.urn:AGL:permission::partner:service:no-dbus}}\
146                 --dbus-server={{:#target}} \
147         {{/required-permission.urn:AGL:permission::partner:service:no-dbus}}\
148         --no-httpd
149
150 {{^required-permission.urn:AGL:permission::partner:service:no-ws}}
151
152 %end systemd-unit
153 %begin systemd-unit
154
155 # auto generated by wgtpkg-unit for {{id}} version {{version}} target {{:#target}}
156 #
157 %systemd-unit user
158 %systemd-unit socket afm-api-{{:#target}}
159
160
161 [socket]
162 SmackLabel=*
163 ListenStream=%t/bindings/{{:#target}}
164 FileDescriptorName={{:#target}}
165
166 {{/required-permission.urn:AGL:permission::partner:service:no-ws}}
167
168 {{/content.type=application/vnd.agl.service}}
169
170 ;---------------------------------------------------------------------------------
171 {{#required-permission.urn:AGL:permission::system:run-by-default}}
172 [install]
173 WantedBy=default.target
174 {{/required-permission.urn:AGL:permission::system:run-by-default}}
175 ;---------------------------------------------------------------------------------
176 %end systemd-unit
177 {{/targets}}
178
179