File: Preferences

package info (click to toggle)
imip-agent 0.3-2
  • links: PTS, VCS
  • area: main
  • in suites: experimental
  • size: 2,056 kB
  • sloc: python: 9,888; sh: 4,480; sql: 144; makefile: 8
file content (333 lines) | stat: -rw-r--r-- 11,774 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
= Preferences =

The correspondence between user preferences (stored in user preference
directories) and the default settings (stored in `config.txt`) is described
below.

|| '''Preference'''        || '''Default Setting''' ||
|| `LANG`                  || `LANG` ||
|| `add_method_response`   || `ADD_RESPONSE_DEFAULT` ||
|| `event_refreshing`      || `REFRESHING_DEFAULT` ||
|| `freebusy_bundling`     || `BUNDLING_DEFAULT` ||
|| `freebusy_messages`     || `NOTIFYING_DEFAULT` ||
|| `freebusy_offers`       || `FREEBUSY_OFFER_DEFAULT` ||
|| `freebusy_publishing`   || `PUBLISHING_DEFAULT` ||
|| `freebusy_sharing`      || `SHARING_DEFAULT` ||
|| `incoming`              || `INCOMING_DEFAULT` ||
|| `organiser_replacement` || `ORGANISER_REPLACEMENT_DEFAULT` ||
|| `participating`         || `PARTICIPATING_DEFAULT` ||

See the [[../Configuration|configuration guide]] for more information about
the `config.txt` file.

{{{#!wiki tip
=== Text Encoding ===
The textual encoding employed by all preferences files is UTF-8.
}}}

== User Preference Settings ==

<<TableOfContents(3,3)>>

Each of the user preferences or settings are stored in a separate file within
a dedicated preferences directory for each user, with the filename bearing the
name of the setting concerned. See the [[../FilesystemUsage|filesystem guide]]
for more information.

=== CN ===

 Default:: (none)
 Alternatives:: (see below)

The common name of the user, employed in iCalendar objects and user
interfaces.

=== LANG ===

 Default:: `en` (English)
 Alternatives:: (any recognised and supported locale)

The language for messages and user interface text.

=== TZID ===

 Default:: system timezone (see `/etc/timezone`)
 Alternatives:: (any recognised Olson time zone identifier)

The default time zone/regime for calendars, new events and local times.

=== acl ===

 Default:: (none)
 Alternatives:: (see below)

Provides an access control list for the `access_control_list` scheduling
function, invoked using the `scheduling_functions` setting. An access control
list consists of a collection of lines of text describing the handling policy
for an incoming invitation.

{{{#!table
`accept` || indicates that if no rule matches, the invitation will be accepted
         .. (provisionally)
==
`decline` ||<rowspan="2"> indicates that if no rule matches, the invitation
                       .. will be declined (provisionally)
==
`reject`
==
`accept` ''`role`'' ''`identity`'' || indicates that where the given
                                   .. ''`identity`'' exists in the given
         .. ''`role`'' in the event, and unless a subsequent rule contradicts
         .. this result, the invitation will be accepted (provisionally)
==
`decline` ''`role`'' ''`identity`'' ||<rowspan="2"> indicates that where the
                                                 .. given ''`identity`'' exists
         .. in the given ''`role`'' in the event, and unless a subsequent rule
         .. contradicts this result, the invitation will be declined
         .. (provisionally)

==
`reject` ''`role`'' ''`identity`''
}}}

In the above, `role` is either `organiser` (or `organizer`) or `attendee`;
`identity` is an address or URL.

Note that even if an accepted result is returned by the `access_control_list`
scheduling function, other functions that follow it in the list of functions
may overturn this result.

See the [[../Resources|resources guide]] for examples and more information.

=== add_method_response ===

 Default:: `refresh`
 Alternatives:: (see below)

Indicate how `ADD` methods shall be responded to when received by a recipient:

{{{#!table
`add`     || apply them to events as received
==
`ignore`  || ignore attempts to add event occurrences
==
`refresh` || respond with a `REFRESH` message to obtain a proper request with
          .. all event details
}}}

=== event_refreshing ===

 Default:: `never`
 Alternative:: `always`

Indicate whether messages requesting a refresh of event details shall be
handled automatically. If not, such messages will be passed on to the
recipient for their mail program to handle.

=== freebusy_bundling ===

 Default:: `never`
 Alternative:: `always`

Indicate whether to bundle free/busy details with other payloads such as
event and free/busy objects. The `freebusy_sharing` setting must be
configured for bundling to operate.

=== freebusy_messages ===

 Default:: `none`
 Alternative:: `notify`

Indicate whether recipients are notified about received free/busy payloads.

=== freebusy_offers ===

 Default:: (none)
 Alternative:: (see below)

Define the period for which free/busy offers are extended by participants
supporting this setting when counter-proposals are made during event
scheduling.

This setting requires a value indicating a duration as described in the
iCalendar format specification:

http://tools.ietf.org/html/rfc5545#section-3.3.6

For example:

|| `PT10M`  || extend scheduling offers for 10 minutes ||
|| `PT600S` || extend scheduling offers for 600 seconds (10 minutes) ||
|| `PT1D`   || extend offers for 1 day ||

=== freebusy_publishing ===

 Default:: `no`
 Alternative:: `publish`

Indicate whether to publish free/busy details as Web resources. The
`freebusy_sharing` setting must be configured for publishing to operate.

=== freebusy_sharing ===

 Default:: `no`
 Alternative:: `share`

Share free/busy details generally:

  * bundling in e-mail messages if bundling is configured
  * responding to free/busy requests via e-mail
  * publishing as Web resources if a static Web resource is configured and if
  publishing is configured

=== incoming ===

 Default:: `summary-wraps-message`
 Alternatives:: (see below)

Define how incoming event messages are delivered to recipients:

{{{#!table
`message-only`
|| deliver only the incoming message as it was received
==
`message-then-summary`
|| deliver the message first followed by a summary message
==
`summary-then-message`
|| deliver a summary first followed by the message
==
`summary-only`
|| deliver only a summary of the message
==
`summary-wraps-message`
|| deliver a summary that includes the original message as an attachment
}}}

=== organiser_replacement ===

 Default:: `attendee`
 Alternatives:: (see below)

Indicate whether the organiser of an event can be replaced and the nature of
any replacement:

{{{#!table
`any` || any identity, regardless of whether it is already present or even
      .. previously unknown, may become the organiser
==
`attendee` || any new organiser must be a previously-recognised attendee
==
`never` || forbid the replacement of an event's organiser
}}}

=== participating ===

 Default:: `participate`
 Alternative:: `no`

Indicate whether a recipient participates in the calendar system. Note that
participation by default occurs because the handler programs will be defined
in the mail system for recipients fulfilling certain criteria; other
recipients will be handled in other ways. Thus, initial non-participation must
be defined by initialising this setting to "no" for all eligible users, if
this is the general policy on initial calendar system participation.

=== permitted_times ===

 Default:: (none)
 Alternatives:: (see below)

Define the time values at which events can be scheduled. In its simplest form,
this indicates the resolution of a calendar for a participant supporting this
setting, with the given minute values being those allowed for the start and
end of an event. This setting requires a value of one of the following forms:

{{{
<minute values>
<hour values>:<minute values>
<hour values>:<minute values>:<second values>
}}}

Each list of values is a comma-separated collection of permissible values for
the unit of time being constrained. Any unspecified list is taken to permit
all normally permissible values for that unit of time. For example:

{{{#!table
`0,15,30,45`          || every 15 minutes from the start of each hour
==
`10,12,14,16:0,20,40` || every 20 minutes from 10:00 until 16:40 inclusive
==
`12::0,30`            ||  every 30 seconds from the start of each minute
                      .. during the period from 12:00:00 until 12:59:30
                      .. inclusive
}}}

The purpose of this setting is not necessarily to impose availability
constraints but instead to impose a "grid" to which event start and end points
shall be "locked".

The values are interpreted in the local time of the participant. Thus, a time
represented in UTC may have apparently inappropriate hour (and for some zones)
minute values that correspond to permitted values in this participant's own
time zone.

=== scheduling_function ===

 Default:: `schedule_in_freebusy`
 Alternatives:: (see below)

Indicates the scheduling functions used by [[../Resources|resources]] to find
an appropriate period for an event, with each function to be applied to a
scheduling request appearing on a separate line, optionally accompanied by
arguments controlling the behaviour of the function.

The `imiptools.handlers.scheduling` module contains the built-in scheduling
functions which include the following:

{{{#!table
`access_control_list`  || use an access control list provided by a file whose
                       .. name is given as an argument, accepting or declining
                       .. the invitation according to the indicated rules
                       .. (described in the [[../Resources|resources guide]])
==
`check_quota`          || accept an invitation only if the organiser does not
                       .. exceed their quota allowance for bookings for the
                       .. indicated quota group
                       .. (described in the [[../Resources|resources guide]])
==
`same_domain_only`     || accept an invitation only if the organiser employs an
                       .. address in the same domain as the resource
==
`schedule_across_quota`|| accept an invitation only if the organiser has not
                       .. reserved a resource for a conflicting period in any
                       .. other resource belonging to the indicated quota group
                       .. (described in the [[../Resources|resources guide]])
==
`schedule_for_delegate`|| accept an invitation only if the organiser can
                       .. reserve the resource according to the common quota
                       .. schedule, delegating to any other available resource
                       .. defined as a potential delegate, declining if no
                       .. resource is available
                       .. (described in the [[../Resources|resources guide]])
==
`schedule_in_freebusy` || accept an invitation if the event periods are free
                       .. according to the free/busy records for the resource;
                       .. decline otherwise
==
`schedule_corrected_in_freebusy` || correct periods in an event according to
                                 .. the permitted_times setting (see above),
                       .. then attempt to schedule the event according to the
                       .. free/busy records for the resource
==
`schedule_next_available_in_freebusy` || correct periods in an event according
                                      .. to the permitted_times setting (see
                       .. above), if configured, and attempt to schedule the
                       .. event according to the free/busy records for the
                       .. resource and for any attendees for whom records are
                       .. available, seeking the next available free period for
                       .. each period that conflicts with an existing event
}}}

The scheduling mechanism can be extended by implementing additional scheduling
functions or by extending the handler framework directly.