/mandos/trunk

To get this branch, use:
bzr branch http://bzr.recompile.se/loggerhead/mandos/trunk

« back to all changes in this revision

Viewing changes to mandos-ctl.xml

  • Committer: Teddy Hogeborn
  • Date: 2019-03-06 18:33:51 UTC
  • Revision ID: teddy@recompile.se-20190306183351-ta7n78xtsfige9ob
mandos-ctl: Add test for the --disable option

* mandos-ctl (TestOptions.test_disable): New.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<?xml version="1.0" encoding="UTF-8"?>
 
2
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
 
3
        "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
 
4
<!ENTITY COMMANDNAME "mandos-ctl">
 
5
<!ENTITY TIMESTAMP "2019-02-10">
 
6
<!ENTITY % common SYSTEM "common.ent">
 
7
%common;
 
8
]>
 
9
 
 
10
<refentry xmlns:xi="http://www.w3.org/2001/XInclude">
 
11
  <refentryinfo>
 
12
    <title>Mandos Manual</title>
 
13
    <!-- NWalsh’s docbook scripts use this to generate the footer: -->
 
14
    <productname>Mandos</productname>
 
15
    <productnumber>&version;</productnumber>
 
16
    <date>&TIMESTAMP;</date>
 
17
    <authorgroup>
 
18
      <author>
 
19
        <firstname>Björn</firstname>
 
20
        <surname>Påhlsson</surname>
 
21
        <address>
 
22
          <email>belorn@recompile.se</email>
 
23
        </address>
 
24
      </author>
 
25
      <author>
 
26
        <firstname>Teddy</firstname>
 
27
        <surname>Hogeborn</surname>
 
28
        <address>
 
29
          <email>teddy@recompile.se</email>
 
30
        </address>
 
31
      </author>
 
32
    </authorgroup>
 
33
    <copyright>
 
34
      <year>2010</year>
 
35
      <year>2011</year>
 
36
      <year>2012</year>
 
37
      <year>2013</year>
 
38
      <year>2014</year>
 
39
      <year>2015</year>
 
40
      <year>2016</year>
 
41
      <year>2017</year>
 
42
      <year>2018</year>
 
43
      <year>2019</year>
 
44
      <holder>Teddy Hogeborn</holder>
 
45
      <holder>Björn Påhlsson</holder>
 
46
    </copyright>
 
47
    <xi:include href="legalnotice.xml"/>
 
48
  </refentryinfo>
 
49
  
 
50
  <refmeta>
 
51
    <refentrytitle>&COMMANDNAME;</refentrytitle>
 
52
    <manvolnum>8</manvolnum>
 
53
  </refmeta>
 
54
  
 
55
  <refnamediv>
 
56
    <refname><command>&COMMANDNAME;</command></refname>
 
57
    <refpurpose>
 
58
      Control or query the operation of the Mandos server
 
59
    </refpurpose>
 
60
  </refnamediv>
 
61
  
 
62
  <refsynopsisdiv>
 
63
    <cmdsynopsis>
 
64
      <command>&COMMANDNAME;</command>
 
65
      <group choice="req">
 
66
        <group>
 
67
          <arg choice="plain"><option>--enable</option></arg>
 
68
          <arg choice="plain"><option>-e</option></arg>
 
69
          <sbr/>
 
70
          <arg choice="plain"><option>--disable</option></arg>
 
71
          <arg choice="plain"><option>-d</option></arg>
 
72
        </group>
 
73
        <sbr/>
 
74
        <group>
 
75
          <arg choice="plain"><option>--bump-timeout</option></arg>
 
76
          <arg choice="plain"><option>-b</option></arg>
 
77
        </group>
 
78
        <sbr/>
 
79
        <group>
 
80
          <arg choice="plain"><option>--start-checker</option></arg>
 
81
        </group>
 
82
        <sbr/>
 
83
        <group>
 
84
          <arg choice="plain"><option>--stop-checker</option></arg>
 
85
        </group>
 
86
        <sbr/>
 
87
        <group>
 
88
          <arg choice="plain"><option>--remove</option></arg>
 
89
          <arg choice="plain"><option>-r</option></arg>
 
90
        </group>
 
91
        <sbr/>
 
92
        <group>
 
93
          <arg choice="plain"><option>--checker
 
94
          <replaceable>COMMAND</replaceable></option></arg>
 
95
          <arg choice="plain"><option>-c
 
96
          <replaceable>COMMAND</replaceable></option></arg>
 
97
        </group>
 
98
        <sbr/>
 
99
        <group>
 
100
          <arg choice="plain"><option>--timeout
 
101
          <replaceable>TIME</replaceable></option></arg>
 
102
          <arg choice="plain"><option>-t
 
103
          <replaceable>TIME</replaceable></option></arg>
 
104
        </group>
 
105
        <sbr/>
 
106
        <group>
 
107
          <arg choice="plain"><option>--extended-timeout
 
108
          <replaceable>TIME</replaceable></option></arg>
 
109
        </group>
 
110
        <sbr/>
 
111
        <group>
 
112
          <arg choice="plain"><option>--interval
 
113
          <replaceable>TIME</replaceable></option></arg>
 
114
          <arg choice="plain"><option>-i
 
115
          <replaceable>TIME</replaceable></option></arg>
 
116
        </group>
 
117
        <sbr/>
 
118
        <group>
 
119
          <arg choice="plain"><option>--approve-by-default</option
 
120
          ></arg>
 
121
          <sbr/>
 
122
          <arg choice="plain"><option>--deny-by-default</option></arg>
 
123
        </group>
 
124
        <sbr/>
 
125
        <group>
 
126
          <arg choice="plain"><option>--approval-delay
 
127
          <replaceable>TIME</replaceable></option></arg>
 
128
        </group>
 
129
        <sbr/>
 
130
        <group>
 
131
          <arg choice="plain"><option>--approval-duration
 
132
          <replaceable>TIME</replaceable></option></arg>
 
133
        </group>
 
134
        <sbr/>
 
135
        <group>
 
136
          <arg choice="plain"><option>--interval
 
137
          <replaceable>TIME</replaceable></option></arg>
 
138
          <arg choice="plain"><option>-i
 
139
          <replaceable>TIME</replaceable></option></arg>
 
140
        </group>
 
141
        <sbr/>
 
142
        <group>
 
143
          <arg choice="plain"><option>--host
 
144
          <replaceable>STRING</replaceable></option></arg>
 
145
          <arg choice="plain"><option>-H
 
146
          <replaceable>STRING</replaceable></option></arg>
 
147
        </group>
 
148
        <sbr/>
 
149
        <group>
 
150
          <arg choice="plain"><option>--secret
 
151
          <replaceable>FILENAME</replaceable></option></arg>
 
152
          <arg choice="plain"><option>-s
 
153
          <replaceable>FILENAME</replaceable></option></arg>
 
154
        </group>
 
155
        <sbr/>
 
156
        <group>
 
157
          <arg choice="plain"><option>--approve</option></arg>
 
158
          <arg choice="plain"><option>-A</option></arg>
 
159
          <sbr/>
 
160
          <arg choice="plain"><option>--deny</option></arg>
 
161
          <arg choice="plain"><option>-D</option></arg>
 
162
        </group>
 
163
      </group>
 
164
      <sbr/>
 
165
      <group choice="req">
 
166
        <arg choice="plain"><option>--all</option></arg>
 
167
        <arg choice="plain"><option>-a</option></arg>
 
168
        <arg rep='repeat' choice='plain'>
 
169
          <replaceable>CLIENT</replaceable>
 
170
        </arg>
 
171
      </group>
 
172
    </cmdsynopsis>
 
173
    <cmdsynopsis>
 
174
      <command>&COMMANDNAME;</command>
 
175
      <group>
 
176
          <arg choice="plain"><option>--verbose</option></arg>
 
177
          <arg choice="plain"><option>-v</option></arg>
 
178
          <sbr/>
 
179
          <arg choice="plain"><option>--dump-json</option></arg>
 
180
          <arg choice="plain"><option>-j</option></arg>
 
181
      </group>
 
182
      <group>
 
183
        <arg rep='repeat' choice='plain'>
 
184
          <replaceable>CLIENT</replaceable>
 
185
        </arg>
 
186
      </group>
 
187
    </cmdsynopsis>
 
188
    <cmdsynopsis>
 
189
      <command>&COMMANDNAME;</command>
 
190
      <group choice="req">
 
191
        <arg choice="plain"><option>--is-enabled</option></arg>
 
192
        <arg choice="plain"><option>-V</option></arg>
 
193
      </group>
 
194
      <arg choice='plain'><replaceable>CLIENT</replaceable></arg>
 
195
    </cmdsynopsis>
 
196
    <cmdsynopsis>
 
197
      <command>&COMMANDNAME;</command>
 
198
      <group choice="req">
 
199
        <arg choice="plain"><option>--help</option></arg>
 
200
        <arg choice="plain"><option>-h</option></arg>
 
201
      </group>
 
202
    </cmdsynopsis>
 
203
    <cmdsynopsis>
 
204
      <command>&COMMANDNAME;</command>
 
205
      <group choice="req">
 
206
        <arg choice="plain"><option>--version</option></arg>
 
207
        <arg choice="plain"><option>-v</option></arg>
 
208
      </group>
 
209
    </cmdsynopsis>
 
210
    <cmdsynopsis>
 
211
      <command>&COMMANDNAME;</command>
 
212
      <arg choice="plain"><option>--check</option></arg>
 
213
    </cmdsynopsis>
 
214
  </refsynopsisdiv>
 
215
  
 
216
  <refsect1 id="description">
 
217
    <title>DESCRIPTION</title>
 
218
    <para>
 
219
      <command>&COMMANDNAME;</command> is a program to control or
 
220
      query the operation of the Mandos server
 
221
      <citerefentry><refentrytitle>mandos</refentrytitle><manvolnum
 
222
      >8</manvolnum></citerefentry>.
 
223
    </para>
 
224
    <para>
 
225
      This program can be used to change client settings, approve or
 
226
      deny client requests, and to remove clients from the server.
 
227
    </para>
 
228
  </refsect1>
 
229
  
 
230
  <refsect1 id="purpose">
 
231
    <title>PURPOSE</title>
 
232
    <para>
 
233
      The purpose of this is to enable <emphasis>remote and unattended
 
234
      rebooting</emphasis> of client host computer with an
 
235
      <emphasis>encrypted root file system</emphasis>.  See <xref
 
236
      linkend="overview"/> for details.
 
237
    </para>
 
238
  </refsect1>
 
239
  
 
240
  <refsect1 id="options">
 
241
    <title>OPTIONS</title>
 
242
    
 
243
    <variablelist>
 
244
      <varlistentry>
 
245
        <term><option>--help</option></term>
 
246
        <term><option>-h</option></term>
 
247
        <listitem>
 
248
          <para>
 
249
            Show a help message and exit
 
250
          </para>
 
251
        </listitem>
 
252
      </varlistentry>
 
253
      
 
254
      <varlistentry>
 
255
        <term><option>--enable</option></term>
 
256
        <term><option>-e</option></term>
 
257
        <listitem>
 
258
          <para>
 
259
            Enable client(s).  An enabled client will be eligble to
 
260
            receive its secret.
 
261
          </para>
 
262
        </listitem>
 
263
      </varlistentry>
 
264
      
 
265
      <varlistentry>
 
266
        <term><option>--disable</option></term>
 
267
        <term><option>-d</option></term>
 
268
        <listitem>
 
269
          <para>
 
270
            Disable client(s).  A disabled client will not be eligble
 
271
            to receive its secret, and no checkers will be started for
 
272
            it.
 
273
          </para>
 
274
        </listitem>
 
275
      </varlistentry>
 
276
      
 
277
      <varlistentry>
 
278
        <term><option>--bump-timeout</option></term>
 
279
        <listitem>
 
280
          <para>
 
281
            Bump the timeout of the specified client(s), just as if a
 
282
            checker had completed successfully for it/them.
 
283
          </para>
 
284
        </listitem>
 
285
      </varlistentry>
 
286
      
 
287
      <varlistentry>
 
288
        <term><option>--start-checker</option></term>
 
289
        <listitem>
 
290
          <para>
 
291
            Start a new checker now for the specified client(s).
 
292
          </para>
 
293
        </listitem>
 
294
      </varlistentry>
 
295
      
 
296
      <varlistentry>
 
297
        <term><option>--stop-checker</option></term>
 
298
        <listitem>
 
299
          <para>
 
300
            Stop any running checker for the specified client(s).
 
301
          </para>
 
302
        </listitem>
 
303
      </varlistentry>
 
304
      
 
305
      <varlistentry>
 
306
        <term><option>--remove</option></term>
 
307
        <term><option>-r</option></term>
 
308
        <listitem>
 
309
          <para>
 
310
            Remove the specified client(s) from the server.
 
311
          </para>
 
312
        </listitem>
 
313
      </varlistentry>
 
314
      
 
315
      <varlistentry>
 
316
        <term><option>--checker
 
317
        <replaceable>COMMAND</replaceable></option></term>
 
318
        <term><option>-c
 
319
        <replaceable>COMMAND</replaceable></option></term>
 
320
        <listitem>
 
321
          <para>
 
322
            Set the <varname>checker</varname> option of the specified
 
323
            client(s); see <citerefentry><refentrytitle
 
324
            >mandos-clients.conf</refentrytitle><manvolnum
 
325
            >5</manvolnum></citerefentry>.
 
326
          </para>
 
327
        </listitem>
 
328
      </varlistentry>
 
329
      
 
330
      <varlistentry>
 
331
        <term><option>--timeout
 
332
        <replaceable>TIME</replaceable></option></term>
 
333
        <term><option>-t
 
334
        <replaceable>TIME</replaceable></option></term>
 
335
        <listitem>
 
336
          <para>
 
337
            Set the <varname>timeout</varname> option of the specified
 
338
            client(s); see <citerefentry><refentrytitle
 
339
            >mandos-clients.conf</refentrytitle><manvolnum
 
340
            >5</manvolnum></citerefentry>.
 
341
          </para>
 
342
        </listitem>
 
343
      </varlistentry>
 
344
 
 
345
      <varlistentry>
 
346
        <term><option>--extended-timeout
 
347
        <replaceable>TIME</replaceable></option></term>
 
348
        <listitem>
 
349
          <para>
 
350
            Set the <varname>extended_timeout</varname> option of the
 
351
            specified client(s); see <citerefentry><refentrytitle
 
352
            >mandos-clients.conf</refentrytitle><manvolnum
 
353
            >5</manvolnum></citerefentry>.
 
354
          </para>
 
355
        </listitem>
 
356
      </varlistentry>
 
357
      
 
358
      <varlistentry>
 
359
        <term><option>--interval
 
360
        <replaceable>TIME</replaceable></option></term>
 
361
        <term><option>-i
 
362
        <replaceable>TIME</replaceable></option></term>
 
363
        <listitem>
 
364
          <para>
 
365
            Set the <varname>interval</varname> option of the
 
366
            specified client(s); see <citerefentry><refentrytitle
 
367
            >mandos-clients.conf</refentrytitle><manvolnum
 
368
            >5</manvolnum></citerefentry>.
 
369
          </para>
 
370
        </listitem>
 
371
      </varlistentry>
 
372
      
 
373
      <varlistentry>
 
374
        <term><option>--approve-by-default</option></term>
 
375
        <term><option>--deny-by-default</option></term>
 
376
        <listitem>
 
377
          <para>
 
378
            Set the <varname>approved_by_default</varname> option of
 
379
            the specified client(s) to <literal>True</literal> or
 
380
            <literal>False</literal>, respectively; see
 
381
            <citerefentry><refentrytitle
 
382
            >mandos-clients.conf</refentrytitle><manvolnum
 
383
            >5</manvolnum></citerefentry>.
 
384
          </para>
 
385
        </listitem>
 
386
      </varlistentry>
 
387
      
 
388
      <varlistentry>
 
389
        <term><option>--approval-delay
 
390
        <replaceable>TIME</replaceable></option></term>
 
391
        <listitem>
 
392
          <para>
 
393
            Set the <varname>approval_delay</varname> option of the
 
394
            specified client(s); see <citerefentry><refentrytitle
 
395
            >mandos-clients.conf</refentrytitle><manvolnum
 
396
            >5</manvolnum></citerefentry>.
 
397
          </para>
 
398
        </listitem>
 
399
      </varlistentry>
 
400
      
 
401
      <varlistentry>
 
402
        <term><option>--approval-duration
 
403
        <replaceable>TIME</replaceable></option></term>
 
404
        <listitem>
 
405
          <para>
 
406
            Set the <varname>approval_duration</varname> option of the
 
407
            specified client(s); see <citerefentry><refentrytitle
 
408
            >mandos-clients.conf</refentrytitle><manvolnum
 
409
            >5</manvolnum></citerefentry>.
 
410
          </para>
 
411
        </listitem>
 
412
      </varlistentry>
 
413
      
 
414
      <varlistentry>
 
415
        <term><option>--host
 
416
        <replaceable>STRING</replaceable></option></term>
 
417
        <term><option>-H
 
418
        <replaceable>STRING</replaceable></option></term>
 
419
        <listitem>
 
420
          <para>
 
421
            Set the <varname>host</varname> option of the specified
 
422
            client(s); see <citerefentry><refentrytitle
 
423
            >mandos-clients.conf</refentrytitle><manvolnum
 
424
            >5</manvolnum></citerefentry>.
 
425
          </para>
 
426
        </listitem>
 
427
      </varlistentry>
 
428
      
 
429
      <varlistentry>
 
430
        <term><option>--secret
 
431
        <replaceable>FILENAME</replaceable></option></term>
 
432
        <term><option>-s
 
433
        <replaceable>FILENAME</replaceable></option></term>
 
434
        <listitem>
 
435
          <para>
 
436
            Set the <varname>secfile</varname> option of the specified
 
437
            client(s); see <citerefentry><refentrytitle
 
438
            >mandos-clients.conf</refentrytitle><manvolnum
 
439
            >5</manvolnum></citerefentry>.
 
440
          </para>
 
441
        </listitem>
 
442
      </varlistentry>
 
443
      
 
444
      <varlistentry>
 
445
        <term><option>--approve</option></term>
 
446
        <term><option>-A</option></term>
 
447
        <listitem>
 
448
          <para>
 
449
            Approve client(s) if currently waiting for approval.
 
450
          </para>
 
451
        </listitem>
 
452
      </varlistentry>
 
453
      
 
454
      <varlistentry>
 
455
        <term><option>--deny</option></term>
 
456
        <term><option>-D</option></term>
 
457
        <listitem>
 
458
          <para>
 
459
            Deny client(s) if currently waiting for approval.
 
460
          </para>
 
461
        </listitem>
 
462
      </varlistentry>
 
463
      
 
464
      <varlistentry>
 
465
        <term><option>--all</option></term>
 
466
        <term><option>-a</option></term>
 
467
        <listitem>
 
468
          <para>
 
469
            Make the client-modifying options modify <emphasis
 
470
            >all</emphasis> clients.
 
471
          </para>
 
472
        </listitem>
 
473
      </varlistentry>
 
474
      
 
475
      <varlistentry>
 
476
        <term><option>--verbose</option></term>
 
477
        <term><option>-v</option></term>
 
478
        <listitem>
 
479
          <para>
 
480
            Show all client settings, not just a subset.
 
481
          </para>
 
482
        </listitem>
 
483
      </varlistentry>
 
484
      
 
485
      <varlistentry>
 
486
        <term><option>--dump-json</option></term>
 
487
        <term><option>-j</option></term>
 
488
        <listitem>
 
489
          <para>
 
490
            Dump client settings as JSON to standard output.
 
491
          </para>
 
492
        </listitem>
 
493
      </varlistentry>
 
494
      
 
495
      <varlistentry>
 
496
        <term><option>--is-enabled</option></term>
 
497
        <term><option>-V</option></term>
 
498
        <listitem>
 
499
          <para>
 
500
            Check if a single client is enabled or not, and exit with
 
501
            a successful exit status only if the client is enabled.
 
502
          </para>
 
503
        </listitem>
 
504
      </varlistentry>
 
505
      
 
506
      <varlistentry>
 
507
        <term><option>--check</option></term>
 
508
        <listitem>
 
509
          <para>
 
510
            Run self-tests.  This includes any unit tests, etc.
 
511
          </para>
 
512
        </listitem>
 
513
      </varlistentry>
 
514
      
 
515
    </variablelist>
 
516
  </refsect1>
 
517
  
 
518
  <refsect1 id="overview">
 
519
    <title>OVERVIEW</title>
 
520
    <xi:include href="overview.xml"/>
 
521
    <para>
 
522
      This program is a small utility to generate new OpenPGP keys for
 
523
      new Mandos clients, and to generate sections for inclusion in
 
524
      <filename>clients.conf</filename> on the server.
 
525
    </para>
 
526
  </refsect1>
 
527
  
 
528
  <refsect1 id="exit_status">
 
529
    <title>EXIT STATUS</title>
 
530
    <para>
 
531
      If the <option>--is-enabled</option> option is used, the exit
 
532
      status will be 0 only if the specified client is enabled.
 
533
    </para>
 
534
  </refsect1>
 
535
  
 
536
  <refsect1 id="bugs">
 
537
    <title>BUGS</title>
 
538
    <xi:include href="bugs.xml"/>
 
539
  </refsect1>
 
540
  
 
541
  <refsect1 id="example">
 
542
    <title>EXAMPLE</title>
 
543
    <informalexample>
 
544
      <para>
 
545
        To list all clients:
 
546
      </para>
 
547
      <para>
 
548
        <userinput>&COMMANDNAME;</userinput>
 
549
      </para>
 
550
    </informalexample>
 
551
    
 
552
    <informalexample>
 
553
      <para>
 
554
        To list <emphasis>all</emphasis> settings for the clients
 
555
        named <quote>foo1.example.org</quote> and <quote
 
556
        >foo2.example.org</quote>:
 
557
      </para>
 
558
      <para>
 
559
 
 
560
<!-- do not wrap this line -->
 
561
<userinput>&COMMANDNAME; --verbose foo1.example.org foo2.example.org</userinput>
 
562
 
 
563
      </para>
 
564
    </informalexample>
 
565
    
 
566
    <informalexample>
 
567
      <para>
 
568
        To enable all clients:
 
569
      </para>
 
570
      <para>
 
571
        <userinput>&COMMANDNAME; --enable --all</userinput>
 
572
      </para>
 
573
    </informalexample>
 
574
    
 
575
    <informalexample>
 
576
      <para>
 
577
        To change timeout and interval value for the clients
 
578
        named <quote>foo1.example.org</quote> and <quote
 
579
        >foo2.example.org</quote>:
 
580
      </para>
 
581
      <para>
 
582
 
 
583
<!-- do not wrap this line -->
 
584
<userinput>&COMMANDNAME; --timeout="5m" --interval="1m" foo1.example.org foo2.example.org</userinput>
 
585
 
 
586
      </para>
 
587
    </informalexample>
 
588
    
 
589
    <informalexample>
 
590
      <para>
 
591
        To approve all clients currently waiting for it:
 
592
      </para>
 
593
      <para>
 
594
        <userinput>&COMMANDNAME; --approve --all</userinput>
 
595
      </para>
 
596
    </informalexample>
 
597
  </refsect1>
 
598
  
 
599
  <refsect1 id="security">
 
600
    <title>SECURITY</title>
 
601
    <para>
 
602
      This program must be permitted to access the Mandos server via
 
603
      the D-Bus interface.  This normally requires the root user, but
 
604
      could be configured otherwise by reconfiguring the D-Bus server.
 
605
    </para>
 
606
  </refsect1>
 
607
  
 
608
  <refsect1 id="see_also">
 
609
    <title>SEE ALSO</title>
 
610
    <para>
 
611
      <citerefentry><refentrytitle>intro</refentrytitle>
 
612
      <manvolnum>8mandos</manvolnum></citerefentry>,
 
613
      <citerefentry><refentrytitle>mandos</refentrytitle>
 
614
      <manvolnum>8</manvolnum></citerefentry>,
 
615
      <citerefentry><refentrytitle>mandos-clients.conf</refentrytitle>
 
616
      <manvolnum>5</manvolnum></citerefentry>,
 
617
      <citerefentry><refentrytitle>mandos-monitor</refentrytitle>
 
618
      <manvolnum>8</manvolnum></citerefentry>
 
619
    </para>
 
620
  </refsect1>
 
621
  
 
622
</refentry>
 
623
<!-- Local Variables: -->
 
624
<!-- time-stamp-start: "<!ENTITY TIMESTAMP [\"']" -->
 
625
<!-- time-stamp-end: "[\"']>" -->
 
626
<!-- time-stamp-format: "%:y-%02m-%02d" -->
 
627
<!-- End: -->