source: trunk/website/monitas/MonitasConcepts.html @ 824

Last change on this file since 824 was 354, checked in by bcornec, 14 years ago

import website content + contrib + monitas doc

File size: 45.1 KB
Line 
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
2
3<!--Converted with LaTeX2HTML 99.2beta8 (1.43)
4original version by:  Nikos Drakos, CBLU, University of Leeds
5* revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
6* with significant contributions from:
7  Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
8<HTML>
9<HEAD>
10<TITLE>Concept paper for Monitas</TITLE>
11<META NAME="description" CONTENT="Concept paper for Monitas">
12<META NAME="keywords" CONTENT="MonitasConcepts">
13<META NAME="resource-type" CONTENT="document">
14<META NAME="distribution" CONTENT="global">
15
16<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
17<META NAME="Generator" CONTENT="LaTeX2HTML v99.2beta8">
18<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
19
20<LINK REL="STYLESHEET" HREF="MonitasConcepts.css">
21
22</HEAD>
23
24<BODY >
25
26<P>
27
28<P>
29
30<P>
31
32<P>
33<H1 ALIGN="CENTER">Concept paper for Monitas</H1>
34<P ALIGN="CENTER"><STRONG>from Stefan Hübner
35<BR>
36and the Monitas Team<A NAME="tex2html1"
37  HREF="#foot33"><SUP>1</SUP></A></STRONG></P>
38<P ALIGN="CENTER"><STRONG>$Revision: 1.3 $, 2002-08-17
39</STRONG></P>
40
41<H3>Abstract:</H3>
42<DIV>
43This is a proposal how to design Monitas before actually start the
44coding. Collecting the ideas here will enforce to think about the
45structure before it is realized in code that cannot be modified later.
46With a little bit of luck this allows us to enhance Monitas' functionality
47quite easy in the future. And maybe we get a good user manual as side
48effect for free.
49
50<P>
51Revision 1.x of this <I>concept</I> paper is not describing the final
52version of the <I>software</I> that will be realized. It is loosely
53based on the existing alpha version&nbsp;0.1 of Monitas and shall be a
54step by step approach towards Monitas version&nbsp;0.99. If improvements
55to Monitas v0.x and this document will be in sync, we will have a
56good documentation of the internal system structure for Monitas&nbsp;v1.0
57(and then this will be called Revision 2.0 of this document). So in
58general the major revision number of the concept paper is 1 higher
59than of the software, the minor revision numbers are both increasing
60but there is no connection between the values.
61</DIV>
62<P>
63<BR>
64
65<H2><A NAME="SECTION00010000000000000000">
66Contents</A>
67</H2>
68<!--Table of Contents-->
69
70<UL>
71<LI><A NAME="tex2html60"
72  HREF="MonitasConcepts.html">Contents</A>
73<LI><A NAME="tex2html61"
74  HREF="MonitasConcepts.html#SECTION00020000000000000000">1 Basics</A>
75<LI><A NAME="tex2html62"
76  HREF="MonitasConcepts.html#SECTION00030000000000000000">2 Requirements for Monitas</A>
77<UL>
78<LI><A NAME="tex2html63"
79  HREF="MonitasConcepts.html#SECTION00031000000000000000">2.1 Start a backup from client</A>
80<LI><A NAME="tex2html64"
81  HREF="MonitasConcepts.html#SECTION00032000000000000000">2.2 Start a backup from the server</A>
82<LI><A NAME="tex2html65"
83  HREF="MonitasConcepts.html#SECTION00033000000000000000">2.3 Restore a backup from client</A>
84<LI><A NAME="tex2html66"
85  HREF="MonitasConcepts.html#SECTION00034000000000000000">2.4 Restore a backup from the server</A>
86<LI><A NAME="tex2html67"
87  HREF="MonitasConcepts.html#SECTION00035000000000000000">2.5 Compare backup from client</A>
88<LI><A NAME="tex2html68"
89  HREF="MonitasConcepts.html#SECTION00036000000000000000">2.6 Compare from the server</A>
90</UL>
91<LI><A NAME="tex2html69"
92  HREF="MonitasConcepts.html#SECTION00040000000000000000">3 System structure</A>
93<LI><A NAME="tex2html70"
94  HREF="MonitasConcepts.html#SECTION00050000000000000000">4 Message Flows</A>
95<UL>
96<LI><A NAME="tex2html71"
97  HREF="MonitasConcepts.html#SECTION00051000000000000000">4.1 Flows between Server and Client (<I>IFcs</I> and <I>IFsc</I>)</A>
98<LI><A NAME="tex2html72"
99  HREF="MonitasConcepts.html#SECTION00052000000000000000">4.2 Message Flows between Client and (Graphical)User-Interface (<I>IFcg</I>)</A>
100<LI><A NAME="tex2html73"
101  HREF="MonitasConcepts.html#SECTION00053000000000000000">4.3 Message Flows between Server and (Graphical)User-Interface (<I>IFsg</I>)</A>
102<LI><A NAME="tex2html74"
103  HREF="MonitasConcepts.html#SECTION00054000000000000000">4.4 Message Flows between Server and its Child (<I>IFss</I> and <I>IFsm</I>)</A>
104</UL>
105<LI><A NAME="tex2html75"
106  HREF="MonitasConcepts.html#SECTION00060000000000000000">5 Interfaces</A>
107<UL>
108<LI><A NAME="tex2html76"
109  HREF="MonitasConcepts.html#SECTION00061000000000000000">5.1 Interface <I>Im</I> to Mondo</A>
110<LI><A NAME="tex2html77"
111  HREF="MonitasConcepts.html#SECTION00062000000000000000">5.2 Interface <I>In</I> between Client and Server</A>
112<LI><A NAME="tex2html78"
113  HREF="MonitasConcepts.html#SECTION00063000000000000000">5.3 Interface <I>Ipc</I>, Client's pipe to the GUI</A>
114<LI><A NAME="tex2html79"
115  HREF="MonitasConcepts.html#SECTION00064000000000000000">5.4 Interface <I>Ips</I>, Server's pipe to the GUI</A>
116<LI><A NAME="tex2html80"
117  HREF="MonitasConcepts.html#SECTION00065000000000000000">5.5 Interface <I>Is</I>, IPC of server instances</A>
118</UL>
119<LI><A NAME="tex2html81"
120  HREF="MonitasConcepts.html#SECTION00070000000000000000">6 Commands at the GUI interfaces</A>
121<UL>
122<LI><A NAME="tex2html82"
123  HREF="MonitasConcepts.html#SECTION00071000000000000000">6.1 Message Structure</A>
124<LI><A NAME="tex2html83"
125  HREF="MonitasConcepts.html#SECTION00072000000000000000">6.2 Implementation Detail</A>
126<LI><A NAME="tex2html84"
127  HREF="MonitasConcepts.html#SECTION00073000000000000000">6.3 Defined Commands</A>
128</UL>
129<LI><A NAME="tex2html85"
130  HREF="MonitasConcepts.html#SECTION00080000000000000000">7 Open Issues</A>
131<UL>
132<LI><A NAME="tex2html86"
133  HREF="MonitasConcepts.html#SECTION00081000000000000000">7.1 Possible Extensions</A>
134</UL>
135<LI><A NAME="tex2html87"
136  HREF="MonitasConcepts.html#SECTION00090000000000000000">About this document ...</A>
137</UL>
138<!--End of Table of Contents-->
139
140<P>
141
142<H1><A NAME="SECTION00020000000000000000">
1431 Basics</A>
144</H1>
145
146<P>
147Monitas is an extension to mondo/mindi to deal with remote backups
148between TCP/IP connected PCs. Monitas consists of two logical parts:
149a <I>&#34;client&#34;</I> that resides on the PC where the
150files (to backup/restore) are and a <I>&#34;server&#34;</I>
151on another (or the same) PC where the backup is stored.
152
153<P>
154The backup may be written to/read from a CD, to a file on a hard-disk
155(or later to a revision controlled database).
156
157<P>
158Both together, server and client, will handle the backup and restore
159process in the background. Each is controlled via a pipe to send commands
160and to get status information back (error messages, progress information).
161Though it is possible to trigger the backup/restore process with these
162interfaces, they are mainly designed for graphical (or text based)
163front-ends which can dock there to control the process and interact
164with the user. These front-ends aren't described here, but the syntax
165and semantics of the interfaces.
166
167<P>
168We use a 1:<I>n</I> relation between the server and several clients
169on different PCs. That means there exists only one central server
170that serves all the clients out there.
171
172<P>
173Even if this document distinguishes between <I>server</I> and <I>client</I>
174and the different roles they play for the backup process, it is possible
175that both parts use the same executable as both parts have much code
176in common. Like <I>gzip</I>, which is compressing when executed as
177<TT>gzip</TT> and decompressing when executed as <TT>gunzip</TT>,
178Monitas will run as server when executed as <TT>monitas_server</TT>
179and will run as client when started as <TT>monitas_client</TT>.
180
181<P>
182
183<H1><A NAME="SECTION00030000000000000000"></A><A NAME="sec:Requirements"></A>
184<BR>
1852 Requirements for Monitas
186</H1>
187
188<P>
189This chapter contains the basic requirements for the client and the
190server part of Monitas.
191
192<P>
193
194<H2><A NAME="SECTION00031000000000000000">
1952.1 Start a backup from client</A>
196</H2>
197
198<P>
199Necessary input:
200
201<P>
202
203<OL>
204<LI>files to backup
205</LI>
206<LI>type of the backup (CD, ISO-file, ...)
207</LI>
208<LI>name of the backup (if not CD)
209</LI>
210<LI>compression (method, client or server-side)
211</LI>
212</OL>
213
214<P>
215
216<H2><A NAME="SECTION00032000000000000000">
2172.2 Start a backup from the server</A>
218</H2>
219
220<P>
221Necessary input:
222
223<P>
224
225<OL>
226<LI>client to address (IP address or name)
227</LI>
228<LI>files to backup
229</LI>
230<LI>type of the backup (CD, ISO-file, ...)
231</LI>
232<LI>name of the backup (if not CD)
233</LI>
234<LI>compression (method, client or server-side)
235</LI>
236</OL>
237
238<P>
239
240<H2><A NAME="SECTION00033000000000000000">
2412.3 Restore a backup from client</A>
242</H2>
243
244<P>
245Necessary input:
246
247<P>
248
249<OL>
250<LI>files to restore
251</LI>
252<LI>name/location of the backup (CD, ISO-file, ...)
253</LI>
254</OL>
255
256<P>
257
258<H2><A NAME="SECTION00034000000000000000">
2592.4 Restore a backup from the server</A>
260</H2>
261
262<P>
263Necessary input:
264
265<P>
266
267<OL>
268<LI>client to address (IP address or name)
269</LI>
270<LI>files to restore
271</LI>
272<LI>name/location of the backup (CD, ISO-file, ...)
273</LI>
274</OL>
275
276<P>
277
278<H2><A NAME="SECTION00035000000000000000">
2792.5 Compare backup from client</A>
280</H2>
281
282<P>
283There are 2 reasons for a compares
284
285<P>
286&nbsp;&nbsp;a) to guarantee the correct backup (``<I>verify</I>'')
287
288<P>
289&nbsp;&nbsp;b) to find modifications of files since the last backup (``<I>compare</I>'')
290
291<P>
292In case a) we must do a bit-compare between original files and their
293(decompressed) backup, in case b) it's sufficient to generate hash
294values of every original file and its backuped counterpart and compare
295the hashes (less network traffic).
296
297<P>
298To distinguish the different intentions, we call the comparison a)
299<I>Verify</I> as it's normally started directly after a backup, and
300call the case b) <I>Compare</I> as it is triggered to recognize modifications
301(perhaps to generate an incremental backup).
302
303<P>
304Necessary input:
305
306<P>
307
308<OL>
309<LI>name of the backup
310</LI>
311<LI>mode of compare [a) or b)]
312</LI>
313<LI>files to compare [mode b) only; mode a) will always compare all
314files in the backup]
315</LI>
316</OL>
317
318<P>
319
320<H2><A NAME="SECTION00036000000000000000">
3212.6 Compare from the server</A>
322</H2>
323
324<P>
325Necessary input:
326
327<P>
328
329<OL>
330<LI>client to address (IP address or name)
331</LI>
332<LI>name of the backup
333</LI>
334<LI>mode of compare [a) or b), the modes were described in previous
335sub-chapter]
336</LI>
337<LI>files to compare [mode b) only; mode a) always compares all files
338in the backup]
339</LI>
340</OL>
341
342<P>
343
344<H1><A NAME="SECTION00040000000000000000"></A><A NAME="sec:SystemStructure"></A>
345<BR>
3463 System structure
347</H1>
348
349<P>
350Figure&nbsp;<A HREF="MonitasConcepts.html#fig:SystemStructure">3.1</A> gives an overview about the general
351structure of Monitas. Monitas' functionality is mainly split into
3522 independent parts: a <I>client</I> component on the PC where files
353are backuped or restored, and a <I>server</I> component to write the
354backup on an external medium or read previous backups from an external
355medium.
356
357<P>
358Both parts base on mondo/mindi for accessing files, doing (de)compression,
359creating ISO-files, writing them to CD/DVD, ...
360
361<P>
362
363<P></P>
364<DIV ALIGN="CENTER"><A NAME="fig:SystemStructure"></A><A NAME="429"></A>
365<TABLE>
366<CAPTION ALIGN="BOTTOM"><STRONG>Figure 3.1:</STRONG>
367System structure</CAPTION>
368<TR><TD>
369<DIV ALIGN="CENTER"><!-- MATH
370 $\resizebox*{0.8\columnwidth}{!}{\includegraphics{diagrams/systemoverview.eps}}$
371 -->
372<IMG
373 WIDTH="444" HEIGHT="315" ALIGN="BOTTOM" BORDER="0"
374 SRC="img1.png"
375 ALT="\resizebox*{0.8\columnwidth}{!}{\includegraphics{diagrams/systemoverview.eps}}"> </DIV>
376<P>
377<DIV ALIGN="CENTER"></DIV>
378
379<P></TD></TR>
380</TABLE>
381</DIV><P></P>
382
383<P>
384<BR>
385<BR>
386At startup, a client connects to the server process to establish the
387connection: The client uses a predefined (``well known'') port
388where the server is listening. When receiving a message at this port
389the server duplicates itself by using the system call <TT>fork()</TT>
390or <TT>clone()</TT>. The child process will serve the connecting client
391on a new allocated port and the parent process will continue waiting
392for further clients.
393
394<P>
395By that mechanism we need only one predefined port number and only
396on the server PC. Details in the next chapter.
397
398<P>
399
400<H1><A NAME="SECTION00050000000000000000">
4014 Message Flows</A>
402</H1>
403
404<P>
405This chapter describes the information flow between Monitas' structural
406parts. The flows are designed to fulfill the requirements of chapter&nbsp;<A HREF="MonitasConcepts.html#sec:Requirements">2</A>.
407
408<P>
409
410<H2><A NAME="SECTION00051000000000000000">
4114.1 Flows between Server and Client (<I>IFcs</I> and <I>IFsc</I>)</A>
412</H2>
413
414<P>
415
416<H3><A NAME="SECTION00051100000000000000">
4174.1.1 Connection Establishment</A>
418</H3>
419
420<P>
421Before any backup/restore can start, <I>client</I> and <I>server</I>
422must introduce each other. This message flow between (each) client
423process and the server (parent) process only takes place when a client
424process is started. The client calls the server to tell him &#34;Here
425am I&#34; whereupon the server is doubling itself via the <TT>fork()</TT>
426system call. The new created child of the server process will serve
427the new connected client from now on, while the parent process of
428the server continues waiting for other clients to connect. The connecting
429procedure is shown in Figure&nbsp;<A HREF="MonitasConcepts.html#fig:ClientConnect">4.1</A>.
430
431<P>
432
433<P></P>
434<DIV ALIGN="CENTER"><A NAME="fig:ClientConnect"></A><A NAME="432"></A>
435<TABLE>
436<CAPTION ALIGN="BOTTOM"><STRONG>Figure 4.1:</STRONG>
437A client connects to the server process</CAPTION>
438<TR><TD>
439<DIV ALIGN="CENTER"><!-- MATH
440 $\resizebox*{0.8\columnwidth}{!}{\includegraphics{diagrams/connect_client.eps}}$
441 -->
442<IMG
443 WIDTH="437" HEIGHT="480" ALIGN="BOTTOM" BORDER="0"
444 SRC="img2.png"
445 ALT="\resizebox*{0.8\columnwidth}{!}{\includegraphics{diagrams/connect_client.eps}}"> </DIV>
446<P>
447<DIV ALIGN="CENTER"></DIV>
448
449<P></TD></TR>
450</TABLE>
451</DIV><P></P>
452
453<P>
454
455<H3><A NAME="SECTION00051200000000000000">
4564.1.2 Backup and Restore Process</A>
457</H3>
458
459<P>
460The backup and restore procedures are handled between the client and
461its corresponding child of the server process. Both, backup and restore
462may be triggered from server or from client side. The message flow
463between server and client for the backup process is shown in Figure&nbsp;<A HREF="MonitasConcepts.html#fig:BackupClientServer">4.2</A>.
464
465<P>
466
467<P></P>
468<DIV ALIGN="CENTER"><A NAME="fig:BackupClientServer"></A><A NAME="434"></A>
469<TABLE>
470<CAPTION ALIGN="BOTTOM"><STRONG>Figure 4.2:</STRONG>
471Message flow for Backup</CAPTION>
472<TR><TD>
473<DIV ALIGN="CENTER"><!-- MATH
474 $\resizebox*{0.8\columnwidth}{!}{\includegraphics{diagrams/backup_client_server.eps}}$
475 -->
476<IMG
477 WIDTH="434" HEIGHT="608" ALIGN="BOTTOM" BORDER="0"
478 SRC="img3.png"
479 ALT="\resizebox*{0.8\columnwidth}{!}{\includegraphics{diagrams/backup_client_server.eps}}"> </DIV>
480<P>
481<DIV ALIGN="CENTER"></DIV>
482
483<P></TD></TR>
484</TABLE>
485</DIV><P></P>
486
487<P>
488The restore procedure shown in Figure&nbsp;<A HREF="MonitasConcepts.html#fig:RestoreClientServer">4.3</A>
489is very similar. It may be triggered either from server or from client
490side, too.
491
492<P>
493
494<P></P>
495<DIV ALIGN="CENTER"><A NAME="fig:RestoreClientServer"></A><A NAME="436"></A>
496<TABLE>
497<CAPTION ALIGN="BOTTOM"><STRONG>Figure 4.3:</STRONG>
498Message flow for Restore</CAPTION>
499<TR><TD>
500<DIV ALIGN="CENTER"><!-- MATH
501 $\resizebox*{0.8\columnwidth}{!}{\includegraphics{diagrams/restore_client_server.eps}}$
502 -->
503<IMG
504 WIDTH="433" HEIGHT="657" ALIGN="BOTTOM" BORDER="0"
505 SRC="img4.png"
506 ALT="\resizebox*{0.8\columnwidth}{!}{\includegraphics{diagrams/restore_client_server.eps}}"> </DIV>
507<P>
508<DIV ALIGN="CENTER"></DIV>
509
510<P></TD></TR>
511</TABLE>
512</DIV><P></P>
513
514<P>
515
516<H3><A NAME="SECTION00051300000000000000">
5174.1.3 Connection Termination</A>
518</H3>
519
520<P>
521When a client has done its job or some errors occurred (or maybe the
522server wants to stop running or ...) the connection can be shutdown
523in the way that Figure&nbsp;<A HREF="MonitasConcepts.html#fig:DisconnectServerClient">4.4</A> shows.
524
525<P>
526
527<P></P>
528<DIV ALIGN="CENTER"><A NAME="fig:DisconnectServerClient"></A><A NAME="438"></A>
529<TABLE>
530<CAPTION ALIGN="BOTTOM"><STRONG>Figure 4.4:</STRONG>
531Terminating the connection between
532server and client</CAPTION>
533<TR><TD>
534<DIV ALIGN="CENTER"><!-- MATH
535 $\resizebox*{0.8\columnwidth}{!}{\includegraphics{diagrams/disconnect_client_server.eps}}$
536 -->
537<IMG
538 WIDTH="433" HEIGHT="668" ALIGN="BOTTOM" BORDER="0"
539 SRC="img5.png"
540 ALT="\resizebox*{0.8\columnwidth}{!}{\includegraphics{diagrams/disconnect_client_server.eps}}"> </DIV>
541<P>
542<DIV ALIGN="CENTER"></DIV>
543
544<P></TD></TR>
545</TABLE>
546</DIV><P></P>
547
548<P>
549
550<H3><A NAME="SECTION00051400000000000000">
5514.1.4 List backups</A>
552</H3>
553
554<P>
555Before restoring files, a client can inquire the server which backups
556are available. Since there are several locations where the server
557may store a backup (on CD, in local file(s), (in the future: in a
558database,) ...) the client can use the message flow defined
559in Figure&nbsp;<A HREF="MonitasConcepts.html#fig:ListBackupsClientServer">4.5</A> to get a list of all
560(for this client) accessible backups.
561
562<P>
563
564<P></P>
565<DIV ALIGN="CENTER"><A NAME="fig:ListBackupsClientServer"></A><A NAME="440"></A>
566<TABLE>
567<CAPTION ALIGN="BOTTOM"><STRONG>Figure 4.5:</STRONG>
568Get list of accessible backups
569from server</CAPTION>
570<TR><TD>
571<DIV ALIGN="CENTER"><!-- MATH
572 $\resizebox*{0.8\columnwidth}{!}{\includegraphics{diagrams/list_backups_client_server.eps}}$
573 -->
574<IMG
575 WIDTH="434" HEIGHT="246" ALIGN="BOTTOM" BORDER="0"
576 SRC="img6.png"
577 ALT="\resizebox*{0.8\columnwidth}{!}{\includegraphics{diagrams/list_backups_client_server.eps}}"> </DIV>
578<P>
579<DIV ALIGN="CENTER"></DIV>
580
581<P></TD></TR>
582</TABLE>
583</DIV><P></P>
584
585<P>
586
587<H3><A NAME="SECTION00051500000000000000">
5884.1.5 List content of a backup</A>
589</H3>
590
591<P>
592When doing a <I>nuke restore</I> it's sufficient to address a total
593backup. But in all other cases you want to know which files are in
594the backup, what their sizes, modification dates are and what other
595info is available. To inquire the content of a specific backup file,
596the client uses the flows in Figure&nbsp;<A HREF="MonitasConcepts.html#fig:ListBackupcontentClientServer">4.6</A>.
597
598<P>
599
600<P></P>
601<DIV ALIGN="CENTER"><A NAME="fig:ListBackupcontentClientServer"></A><A NAME="442"></A>
602<TABLE>
603<CAPTION ALIGN="BOTTOM"><STRONG>Figure 4.6:</STRONG>
604Get content of a specific
605backup from server</CAPTION>
606<TR><TD>
607<DIV ALIGN="CENTER"><!-- MATH
608 $\resizebox*{0.8\columnwidth}{!}{\includegraphics{diagrams/list_backupcontent_client_server.eps}}$
609 -->
610<IMG
611 WIDTH="434" HEIGHT="246" ALIGN="BOTTOM" BORDER="0"
612 SRC="img7.png"
613 ALT="\resizebox*{0.8\columnwidth}{!}{\includegraphics{diagrams/list_backupcontent_client_server.eps}}"> </DIV>
614<P>
615<DIV ALIGN="CENTER"></DIV>
616
617<P></TD></TR>
618</TABLE>
619</DIV><P></P>
620
621<P>
622
623<H2><A NAME="SECTION00052000000000000000"></A><A NAME="sec:GuiClient"></A>
624<BR>
6254.2 Message Flows between Client and (Graphical)User-Interface (<I>IFcg</I>)
626</H2>
627
628<P>
629To interact with the client process running silently in the background,
630the client sets up a named pipe when it starts. A Graphical User Interface
631(GUI) can dock to that pipe and control the client.
632
633<P>
634The messages sent through the pipe are text based commands, so the
635most primitive user interface will be a console with I/O redirect
636to the pipe.
637
638<P>
639The predefined commands are shown in Chapter&nbsp;<A HREF="MonitasConcepts.html#sec:GuiCommands">6</A>.
640
641<P>
642
643<H3><A NAME="SECTION00052100000000000000"></A><A NAME="sec:GuiClientConnect"></A>
644<BR>
6454.2.1 (Re-)Connect to a server
646</H3>
647
648<P>
649Figure&nbsp;<A HREF="MonitasConcepts.html#fig:GuiClientConnect">4.7</A> shows how the connection between
650a client and the server is established from the Client GUI. If there
651exists a previous connection, that connection is closed before building
652up the new one, as every client can be connected to <I>one</I> server
653only at the same time.
654
655<P>
656
657<P></P>
658<DIV ALIGN="CENTER"><A NAME="fig:GuiClientConnect"></A><A NAME="446"></A>
659<TABLE>
660<CAPTION ALIGN="BOTTOM"><STRONG>Figure 4.7:</STRONG>
661Enable Connection from Client GUI</CAPTION>
662<TR><TD>
663<DIV ALIGN="CENTER"><!-- MATH
664 $\resizebox*{0.8\columnwidth}{!}{\includegraphics{diagrams/connect_GUI_client.eps}}$
665 -->
666<IMG
667 WIDTH="438" HEIGHT="278" ALIGN="BOTTOM" BORDER="0"
668 SRC="img8.png"
669 ALT="\resizebox*{0.8\columnwidth}{!}{\includegraphics{diagrams/connect_GUI_client.eps}}"> </DIV>
670<P>
671<DIV ALIGN="CENTER"></DIV>
672
673<P></TD></TR>
674</TABLE>
675</DIV><P></P>
676
677<P>
678
679<H3><A NAME="SECTION00052200000000000000">
6804.2.2 Start a Backup</A>
681</H3>
682
683<P>
684When starting a backup, the client needs to know which files to backup
685and some information about the backup itself: what type of backup
686(boot-able CD-ROM, ISO-File,...), the name/location (/dev/cdwriter,
687/usr/bkup/file.tgz,...) and the mode of the backup (compress_clientside=gzip,...).
688The message flow is in Figure&nbsp;<A HREF="MonitasConcepts.html#fig:GuiClientBackup">4.8</A>.
689
690<P>
691
692<P></P>
693<DIV ALIGN="CENTER"><A NAME="fig:GuiClientBackup"></A><A NAME="448"></A>
694<TABLE>
695<CAPTION ALIGN="BOTTOM"><STRONG>Figure 4.8:</STRONG>
696Start Backup from Client GUI</CAPTION>
697<TR><TD>
698<DIV ALIGN="CENTER"><!-- MATH
699 $\resizebox*{0.8\columnwidth}{!}{\includegraphics{diagrams/backup_GUI_client.eps}}$
700 -->
701<IMG
702 WIDTH="434" HEIGHT="368" ALIGN="BOTTOM" BORDER="0"
703 SRC="img9.png"
704 ALT="\resizebox*{0.8\columnwidth}{!}{\includegraphics{diagrams/backup_GUI_client.eps}}"> </DIV>
705<P>
706<DIV ALIGN="CENTER"></DIV>
707
708<P></TD></TR>
709</TABLE>
710</DIV><P></P>
711
712<P>
713
714<H3><A NAME="SECTION00052300000000000000">
7154.2.3 Start a Restore</A>
716</H3>
717
718<P>
719If a client knows (by other procedures, see chapter&nbsp;<A HREF="MonitasConcepts.html#sec:GuiClientListBackups">4.2.4</A>
720and <A HREF="MonitasConcepts.html#sec:GuiClientListBackupContent">4.2.5</A>) that a certain backup exists
721on the server (and the client may access it), it can start restoring
722specified files like shown in Figure&nbsp;<A HREF="MonitasConcepts.html#fig:GuiClientRestore">4.9</A>.
723The files can be addressed by their exact path/name (as stored in
724the backup) or as wildcards (path/* or path/name* - may be extended
725in the future).
726
727<P>
728
729<P></P>
730<DIV ALIGN="CENTER"><A NAME="fig:GuiClientRestore"></A><A NAME="450"></A>
731<TABLE>
732<CAPTION ALIGN="BOTTOM"><STRONG>Figure 4.9:</STRONG>
733Start Restore from Client GUI</CAPTION>
734<TR><TD>
735<DIV ALIGN="CENTER"><!-- MATH
736 $\resizebox*{0.8\columnwidth}{!}{\includegraphics{diagrams/restore_GUI_client.eps}}$
737 -->
738<IMG
739 WIDTH="430" HEIGHT="440" ALIGN="BOTTOM" BORDER="0"
740 SRC="img10.png"
741 ALT="\resizebox*{0.8\columnwidth}{!}{\includegraphics{diagrams/restore_GUI_client.eps}}"> </DIV>
742<P>
743<DIV ALIGN="CENTER"></DIV>
744
745<P></TD></TR>
746</TABLE>
747</DIV><P></P>
748
749<P>
750
751<H3><A NAME="SECTION00052400000000000000"></A><A NAME="sec:GuiClientListBackups"></A>
752<BR>
7534.2.4 Get list of previous, accessible Backups
754</H3>
755
756<P>
757To get a list of available backups the client must ask the server
758which are available (maybe specific to the requesting client/user).
759The message flow is in Figure&nbsp;<A HREF="MonitasConcepts.html#fig:GuiClientListBackups">4.10</A>.
760
761<P>
762
763<P></P>
764<DIV ALIGN="CENTER"><A NAME="fig:GuiClientListBackups"></A><A NAME="453"></A>
765<TABLE>
766<CAPTION ALIGN="BOTTOM"><STRONG>Figure 4.10:</STRONG>
767Ask Server for available backups</CAPTION>
768<TR><TD>
769<DIV ALIGN="CENTER"><!-- MATH
770 $\resizebox*{0.8\columnwidth}{!}{\includegraphics{diagrams/list_backups_GUI_client.eps}}$
771 -->
772<IMG
773 WIDTH="433" HEIGHT="187" ALIGN="BOTTOM" BORDER="0"
774 SRC="img11.png"
775 ALT="\resizebox*{0.8\columnwidth}{!}{\includegraphics{diagrams/list_backups_GUI_client.eps}}"> </DIV>
776<P>
777<DIV ALIGN="CENTER"></DIV>
778
779<P></TD></TR>
780</TABLE>
781</DIV><P></P>
782
783<P>
784
785<H3><A NAME="SECTION00052500000000000000"></A><A NAME="sec:GuiClientListBackupContent"></A>
786<BR>
7874.2.5 Get content (files) of a specified Backup
788</H3>
789
790<P>
791The client knows (maybe via the flow in Chapter&nbsp;<A HREF="MonitasConcepts.html#sec:GuiClientListBackups">4.2.4</A>)
792which backup(s) are available at the server. To view the content (the
793file names, -sizes,...) of a specific backup the client can
794ask the server to deliver this information. The message flow is shown
795in Figure&nbsp;<A HREF="MonitasConcepts.html#fig:GuiClientListBackupContent">4.11</A>.
796
797<P>
798
799<P></P>
800<DIV ALIGN="CENTER"><A NAME="fig:GuiClientListBackupContent"></A><A NAME="456"></A>
801<TABLE>
802<CAPTION ALIGN="BOTTOM"><STRONG>Figure 4.11:</STRONG>
803Ask Server for the content
804of a backup</CAPTION>
805<TR><TD>
806<DIV ALIGN="CENTER"><!-- MATH
807 $\resizebox*{0.8\columnwidth}{!}{\includegraphics{diagrams/list_backupcontent_GUI_client.eps}}$
808 -->
809<IMG
810 WIDTH="433" HEIGHT="187" ALIGN="BOTTOM" BORDER="0"
811 SRC="img12.png"
812 ALT="\resizebox*{0.8\columnwidth}{!}{\includegraphics{diagrams/list_backupcontent_GUI_client.eps}}"> </DIV>
813<P>
814<DIV ALIGN="CENTER"></DIV>
815
816<P></TD></TR>
817</TABLE>
818</DIV><P></P>
819
820<P>
821
822<H3><A NAME="SECTION00052600000000000000">
8234.2.6 Start a Verify</A>
824</H3>
825
826<P>
827&lt;to be defined&gt;
828
829<P>
830
831<H3><A NAME="SECTION00052700000000000000">
8324.2.7 Start a Compare</A>
833</H3>
834
835<P>
836&lt;to be defined&gt;
837
838<P>
839
840<H3><A NAME="SECTION00052800000000000000">
8414.2.8 Terminate Client</A>
842</H3>
843
844<P>
845It doesn't make sense to close the client-server connection without
846terminating the client. Either the client must be connected to another
847server (procedure see chapter&nbsp;<A HREF="MonitasConcepts.html#sec:GuiClientConnect">4.2.1</A>) if it
848shall do other backups/restores or the client just keeps connected
849to the same server (so no changes are necessary :-). Nevertheless
850if the client has done its job, it must be shutdown but that concerns
851both, the connection and the client . This procedure is shown in Figure&nbsp;<A HREF="MonitasConcepts.html#fig:GuiClientTerminate">4.12</A>.
852
853<P>
854Of course you can simply close the GUI of the client. But this won't
855have any influence to the running client...
856
857<P>
858
859<P></P>
860<DIV ALIGN="CENTER"><A NAME="fig:GuiClientTerminate"></A><A NAME="458"></A>
861<TABLE>
862<CAPTION ALIGN="BOTTOM"><STRONG>Figure 4.12:</STRONG>
863Terminate the client</CAPTION>
864<TR><TD>
865<DIV ALIGN="CENTER"><!-- MATH
866 $\resizebox*{0.8\columnwidth}{!}{\includegraphics{diagrams/terminate_GUI_client.eps}}$
867 -->
868<IMG
869 WIDTH="434" HEIGHT="257" ALIGN="BOTTOM" BORDER="0"
870 SRC="img13.png"
871 ALT="\resizebox*{0.8\columnwidth}{!}{\includegraphics{diagrams/terminate_GUI_client.eps}}"> </DIV>
872<P>
873<DIV ALIGN="CENTER"></DIV>
874
875<P></TD></TR>
876</TABLE>
877</DIV><P></P>
878
879<P>
880
881<H2><A NAME="SECTION00053000000000000000">
8824.3 Message Flows between Server and (Graphical)User-Interface (<I>IFsg</I>)</A>
883</H2>
884
885<P>
886&lt;to be defined&gt; Ideas:
887
888<P>
889<DL>
890<DT><STRONG>N.N.</STRONG></DT>
891<DD>All backup/verify/compare/restore procedures that can be triggered
892from client side, too.
893</DD>
894<DT><STRONG>Status</STRONG></DT>
895<DD>Show all current connections and its current status (activity).
896</DD>
897<DT><STRONG>Monitor</STRONG></DT>
898<DD>Request server to generate (continuous) progress messages
899to a specified connection.
900</DD>
901<DT><STRONG>Info</STRONG></DT>
902<DD>Server notifies the user about internal processes.
903</DD>
904<DT><STRONG>Verbose</STRONG></DT>
905<DD>Modify the level of server's verbosity.
906</DD>
907</DL>
908
909<P>
910
911<H2><A NAME="SECTION00054000000000000000">
9124.4 Message Flows between Server and its Child (<I>IFss</I> and <I>IFsm</I>)</A>
913</H2>
914
915<P>
916&lt;to be defined&gt; Ideas:
917
918<P>
919<DL>
920<DT><STRONG>GetClientInfo</STRONG></DT>
921<DD>Server asks server child for info about the connection
922to a client (IP:port, current activity).
923</DD>
924<DT><STRONG>TerminateConnection</STRONG></DT>
925<DD>Server asks server child to terminate the connection.
926</DD>
927<DT><STRONG>TerminateNotification</STRONG></DT>
928<DD>Server child notifies the parent server that
929it will terminate now.
930</DD>
931<DT><STRONG>N.N.</STRONG></DT>
932<DD>All backup/verify/compare/restore procedures that are requested
933to the server, but must be executed from a server's child.
934</DD>
935</DL>
936
937<P>
938
939<H1><A NAME="SECTION00060000000000000000">
9405 Interfaces</A>
941</H1>
942
943<P>
944Figure&nbsp;<A HREF="MonitasConcepts.html#fig:SystemStructure">3.1</A> in Section&nbsp;<A HREF="MonitasConcepts.html#sec:SystemStructure">3</A>
945(System Structure) names the defined interfaces in respect of their
946location. E.g. the interface between the server and the client is
947called <I>IFcs</I> if you see it as part of the client, and it's called
948<I>IFsc</I> if it is described as part of the server. This naming
949is continued in the software, but of course the 2 parts must fit together
950to transmit the information.
951
952<P>
953To describe this common part (e.g. the format of the data structures)
954we introduce a second naming scheme here that denominates the matter
955inbetween. These names are used in the sources, too. So pay attention
956to understand the difference: The common parts of the interfaces are
957named <I>Ixx</I>, their realization at the two ends are named <I>IFxy</I>.
958
959<P>
960<BR><P></P>
961<DIV ALIGN="CENTER"><A NAME="462"></A>
962<TABLE>
963<CAPTION><STRONG>Table 5.1:</STRONG>
964Interfaces</CAPTION>
965<TR><TD><TABLE CELLPADDING=3 BORDER="1">
966<TR><TH ALIGN="LEFT" VALIGN="TOP" WIDTH=175><B>Interface</B></TH>
967<TH ALIGN="LEFT" VALIGN="TOP" WIDTH=325><B>is connecting</B></TH>
968</TR>
969<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=175><I>Im</I> (&#34;Mondo&#34;)</TD>
970<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=325>server/client internally with mondo</TD>
971</TR>
972<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=175><I>In</I> (&#34;Network&#34;)</TD>
973<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=325>client and server, <I>IFcs &lt;-&gt;</I>  <I>IFsc</I></TD>
974</TR>
975<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=175><I>Ipc</I> (&#34;Pipe in Client&#34;)</TD>
976<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=325>client to GUI, <I>IFcg &lt;-&gt;</I> external</TD>
977</TR>
978<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=175><I>Ips</I> (&#34;Pipe in Server&#34;)</TD>
979<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=325>server to GUI, <I>IFsg</I> &lt;-&gt; external</TD>
980</TR>
981<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=175><I>Is</I> (&#34;Server interprocess&#34;)</TD>
982<TD ALIGN="LEFT" VALIGN="TOP" WIDTH=325>Server's parent instance with the child instances, <I>IFss</I> &lt;-&gt;
983<I>IFsm</I></TD>
984</TR>
985</TABLE>
986
987<P>
988</TD></TR>
989</TABLE>
990</DIV><P></P>
991<BR>
992
993<P>
994
995<H2><A NAME="SECTION00061000000000000000">
9965.1 Interface <I>Im</I> to Mondo</A>
997</H2>
998
999<P>
1000&lt;to be defined&gt;
1001
1002<P>
1003
1004<H3><A NAME="SECTION00061100000000000000">
10055.1.1 <I>Im</I> in Server</A>
1006</H3>
1007
1008<P>
1009
1010<H3><A NAME="SECTION00061200000000000000">
10115.1.2 <I>Im</I> in Client</A>
1012</H3>
1013
1014<P>
1015
1016<H2><A NAME="SECTION00062000000000000000">
10175.2 Interface <I>In</I> between Client and Server</A>
1018</H2>
1019
1020<P>
1021&lt;to be defined&gt;
1022
1023<P>
1024
1025<H2><A NAME="SECTION00063000000000000000">
10265.3 Interface <I>Ipc</I>, Client's pipe to the GUI</A>
1027</H2>
1028
1029<P>
1030&lt;to be defined&gt;
1031
1032<P>
1033
1034<H2><A NAME="SECTION00064000000000000000">
10355.4 Interface <I>Ips</I>, Server's pipe to the GUI</A>
1036</H2>
1037
1038<P>
1039&lt;to be defined&gt;
1040
1041<P>
1042
1043<H2><A NAME="SECTION00065000000000000000">
10445.5 Interface <I>Is</I>, IPC of server instances</A>
1045</H2>
1046
1047<P>
1048&lt;to be defined&gt;
1049
1050<P>
1051
1052<H1><A NAME="SECTION00070000000000000000"></A><A NAME="sec:GuiCommands"></A>
1053<BR>
10546 Commands at the GUI interfaces
1055</H1>
1056
1057<P>
1058To interact from a Graphical User Interface (GUI) to the server or
1059client process running locally, silently in the background, every
1060client and the server (parent process) sets up a named pipe when it
1061starts. A Graphical User Interface (GUI) can dock to that pipe and
1062control the client/server.
1063
1064<P>
1065If not otherwise specified, the server's pipe is <TT>/var/run/monitas/server</TT>
1066and a client's pipe is <TT>/var/run/monitas/client_<I>nnn</I></TT>
1067with <TT><I>nnn</I></TT> depends upon the current connection.
1068
1069<P>
1070(For IPv4 we could use the server's IP:port, e.g. <TT>client_192168001001-22345</TT>
1071i.e. 12-digits IP address, dash, 5-digits port of the server's child
1072for that connection).
1073
1074<P>
1075This allows us to run more than one client on a PC (maybe more than
10761 user is logged in) that can be connected to the same server (IP
1077address) with different ports (server's child's port number) or to
1078different servers (different IP addresses). Only one server per PC
1079is allowed, but it can handle several connections in parallel (by
1080several child processes). In most cases, the backup medium is a very
1081limiting resource (only 1, 2... CD-Writer, Tape-Streamer, Database,
1082...) that can be managed much easier by one central instance.
1083Otherwise we had to expand the resource management (that is already
1084necessary between parent server and child processes) with more danger
1085to run into dead-locks, race-conditions and other difficult-to-debug
1086stuff.
1087
1088<P>
1089If not denoted otherwise, the description in this chapter is valid
1090for the messages at the client GUI <I>and</I> the messages at the
1091server GUI.
1092
1093<P>
1094
1095<H2><A NAME="SECTION00071000000000000000">
10966.1 Message Structure</A>
1097</H2>
1098
1099<P>
1100The messages sent through the pipe are text based commands, so the
1101most primitive user interface will be a console with I/O redirect
1102to the pipe.
1103
1104<P>
1105The used semantic is:
1106
1107<P>
1108<TT>COMMAND [ARG [...]]&#92;n</TT>
1109
1110<P>
1111where
1112
1113<P>
1114
1115<UL>
1116<LI>COMMAND is a predefined (case insensitive) command, valid chars: [a-zA-Z]
1117</LI>
1118<LI>ARG is zero or more arguments for COMMAND, each COMMAND has a predefined
1119number of mandatory arguments (some command additional might have
1120optional arguments)
1121</LI>
1122<LI>COMMAND and ARG is separated by one space (&nbsp;)
1123</LI>
1124<LI>ARGs are separated by one space (&nbsp;)
1125</LI>
1126<LI>ARGs contain of at least one printable character and/or whitespace
1127([ &#92;t&#92;n])
1128</LI>
1129<LI>an ARG that contains spaces must be surrounded by '...' or ``...''
1130</LI>
1131<LI>inside '...' following characters must be escaped by a backslash
1132(&#92;) for their literal meaning:
1133
1134<P>
1135
1136<UL>
1137<LI>[&#92;']for literal single quote (')
1138</LI>
1139<LI>[&#92;&#92;]for the backslash (&#92;)
1140itself
1141</LI>
1142</UL>to use &lt;c:&#92;stefan's ``quote''> as one argument
1143use <TT>'c:&#92;&#92;stefan&#92;'s&nbsp;``quote'''</TT>
1144
1145<P>
1146</LI>
1147<LI>inside ``...'' you must not use the double quote character
1148(``)!
1149<BR>
1150There is no escape sequence defined for a literal meaning! Surprised?
1151But this kind of definition allows us to use the ARG &lt;c:&#92;hugo&nbsp;rabson's&nbsp;dir&#92;file.c&gt;
1152without further modification by simply surrounding it with double
1153quotes: <TT>``c:&#92;hugo&nbsp;rabson's&nbsp;dir&#92;file.c''</TT>
1154</LI>
1155<LI>if the ARG itself shall begin with a double quote (``) or single
1156quote (') then quote the whole argument with '...' (and escape
1157the ' at the beginning).
1158</LI>
1159<LI>if the ARG doesn't contain spaces but contains any quote character(s),
1160you needn't do anything
1161</LI>
1162<LI>COMMAND line is terminated by a newline character('&#92;n'),
1163an optional ASCII-Null ('&#92;0') can follow
1164</LI>
1165</UL>
1166Possible, future extension:
1167
1168<P>
1169
1170<UL>
1171<LI>Using '&#92;0' instead of '&nbsp;' to separate ARGs (and COMMAND)
1172will dispense with the nasty space quoting. The end of the command
1173line is then marked by two '&#92;0' instead of '&#92;n'.
1174To distinguish between old and new syntax, the client can look at
1175the first character behind the COMMAND: if it's a '&#92;0'
1176the GUI uses the new syntax and all responses to the COMMAND use the
1177new syntax, too. If the character is a space '&nbsp;' or newline '&#92;n'
1178we answer in old (above described) syntax and must pay attention to
1179the quoting
1180</LI>
1181</UL>
1182
1183<P>
1184
1185<H2><A NAME="SECTION00072000000000000000">
11866.2 Implementation Detail</A>
1187</H2>
1188
1189<P>
1190There is much work that is common to all the pipe interfaces that
1191use text based messages: extract the command, calculate the number
1192of mandatory parameters, split the arguments, parse for escape sequences,
1193check if an arguments fits the requested type (e.g. filename, IP address,
1194port number,... ), translate the textual argument into its machine
1195readable format, ... And equivalent steps are necessary when
1196we want to create and send a message. And different commands use the
1197same argument types that always must be parsed and checked in the
1198same way.
1199
1200<P>
1201At the moment the extent of the complete command set cannot be given,
1202so it would be the best to keep yet unknown extensions in mind and
1203implement the pipe interface as a generic one:
1204
1205<P>
1206
1207<UL>
1208<LI>use tables for valid commands (different tables for server- and client-pipes
1209[or flags in a common table to ease common syntax for equivalent
1210server/client commands?])
1211</LI>
1212<LI>each ``command'' entry contains the number of mandatory and optional
1213arguments
1214</LI>
1215<LI>each argument refers to a predefined type (not only <I>int</I>, <I>string</I>
1216but of finer granularity like <I>filename</I>, <I>dirname</I>, <I>devicename</I>,
1217<I>backupname</I>, <I>portnumber</I>, ...) that can be generated
1218and checked for validity by generic routines.
1219</LI>
1220</UL>
1221The tables can easily be extended and new commands can introduced
1222with less effort by reusing existing subroutines for the argument
1223handling. (B.t.w. the table contains all information that is necessary
1224for an generic help function to each defined message.) Of course this
1225only concerns the interface handling, not the new functionality. But
1226why reinvent the wheel twice?
1227
1228<P>
1229
1230<H2><A NAME="SECTION00073000000000000000">
12316.3 Defined Commands</A>
1232</H2>
1233
1234<P>
1235Table&nbsp;<A HREF="#tab:GuiCommands">6.1</A> shows the defined commands to the GUI.
1236
1237<P>
1238Currently there are only the messages from Figure&nbsp;<A HREF="MonitasConcepts.html#fig:GuiClientConnect">4.7</A>
1239and <A HREF="MonitasConcepts.html#fig:GuiClientBackup">4.8</A> entered in this table. But we recognize
1240that the messages <TT>notconnected</TT>, <TT>abort</TT> and <TT>backupdone</TT>
1241serve the same purpose. We should think about, if we want a streamline
1242small interface (replace the 3 messages by one) or accept the redundancy.
1243Perhaps that depends on the connected GUI. A simple command line interface
1244(that transfers the messages transparently to the user) benefits from
1245the different message names, a graphical user interface on the other
1246side must join the different messages to the same ``Not Done! Error''
1247requestor.
1248
1249<P>
1250<BR><P></P>
1251<DIV ALIGN="CENTER"><A NAME="476"></A>
1252<TABLE>
1253<CAPTION><STRONG>Table 6.1:</STRONG>
1254Commands at the GUI Interfaces</CAPTION>
1255<TR><TD><TABLE CELLPADDING=3 BORDER="1">
1256<TR><TD ALIGN="CENTER" COLSPAN=1>If (from/to GUI)</TD>
1257<TD ALIGN="CENTER" COLSPAN=1>&nbsp; Command</TD>
1258<TD ALIGN="CENTER" COLSPAN=1>No of args (mnd/opt)</TD>
1259<TD ALIGN="CENTER" COLSPAN=1>type of arg 1</TD>
1260<TD ALIGN="CENTER" COLSPAN=1>type of arg 2</TD>
1261<TD ALIGN="CENTER" COLSPAN=1>type of arg 3</TD>
1262<TD ALIGN="CENTER" COLSPAN=1>type of arg 4</TD>
1263<TD ALIGN="CENTER" COLSPAN=1>type of arg 5</TD>
1264</TR>
1265<TR><TD ALIGN="CENTER">C/-</TD>
1266<TD ALIGN="CENTER"><TT>connect</TT></TD>
1267<TD ALIGN="CENTER">1/1</TD>
1268<TD ALIGN="CENTER">ServerIP</TD>
1269<TD ALIGN="CENTER">Port</TD>
1270<TD ALIGN="CENTER">&nbsp;</TD>
1271<TD ALIGN="CENTER">&nbsp;</TD>
1272<TD ALIGN="CENTER">&nbsp;</TD>
1273</TR>
1274<TR><TD ALIGN="CENTER">-/C</TD>
1275<TD ALIGN="CENTER"><TT>disconnected</TT></TD>
1276<TD ALIGN="CENTER">2/0</TD>
1277<TD ALIGN="CENTER">ServerIP</TD>
1278<TD ALIGN="CENTER">Port</TD>
1279<TD ALIGN="CENTER">&nbsp;</TD>
1280<TD ALIGN="CENTER">&nbsp;</TD>
1281<TD ALIGN="CENTER">&nbsp;</TD>
1282</TR>
1283<TR><TD ALIGN="CENTER">-/C</TD>
1284<TD ALIGN="CENTER"><TT>connected</TT></TD>
1285<TD ALIGN="CENTER">0</TD>
1286<TD ALIGN="CENTER">&nbsp;</TD>
1287<TD ALIGN="CENTER">&nbsp;</TD>
1288<TD ALIGN="CENTER">&nbsp;</TD>
1289<TD ALIGN="CENTER">&nbsp;</TD>
1290<TD ALIGN="CENTER">&nbsp;</TD>
1291</TR>
1292<TR><TD ALIGN="CENTER">-/C</TD>
1293<TD ALIGN="CENTER"><TT>notconnected</TT></TD>
1294<TD ALIGN="CENTER">1/1</TD>
1295<TD ALIGN="CENTER">ErrNo</TD>
1296<TD ALIGN="CENTER">ErrorMsg</TD>
1297<TD ALIGN="CENTER">&nbsp;</TD>
1298<TD ALIGN="CENTER">&nbsp;</TD>
1299<TD ALIGN="CENTER">&nbsp;</TD>
1300</TR>
1301<TR><TD ALIGN="CENTER">C/-</TD>
1302<TD ALIGN="CENTER"><TT>backup</TT></TD>
1303<TD ALIGN="CENTER">4/*</TD>
1304<TD ALIGN="CENTER">Bkup type</TD>
1305<TD ALIGN="CENTER">name</TD>
1306<TD ALIGN="CENTER">mode</TD>
1307<TD ALIGN="CENTER">filepattern</TD>
1308<TD ALIGN="CENTER">...</TD>
1309</TR>
1310<TR><TD ALIGN="CENTER">-/CS</TD>
1311<TD ALIGN="CENTER"><TT>progress</TT></TD>
1312<TD ALIGN="CENTER">1/0</TD>
1313<TD ALIGN="CENTER">percent</TD>
1314<TD ALIGN="CENTER">&nbsp;</TD>
1315<TD ALIGN="CENTER">&nbsp;</TD>
1316<TD ALIGN="CENTER">&nbsp;</TD>
1317<TD ALIGN="CENTER">&nbsp;</TD>
1318</TR>
1319<TR><TD ALIGN="CENTER">-/CS</TD>
1320<TD ALIGN="CENTER"><TT>abort</TT></TD>
1321<TD ALIGN="CENTER">1/1</TD>
1322<TD ALIGN="CENTER">ErrNo</TD>
1323<TD ALIGN="CENTER">ErrorMsg</TD>
1324<TD ALIGN="CENTER">&nbsp;</TD>
1325<TD ALIGN="CENTER">&nbsp;</TD>
1326<TD ALIGN="CENTER">&nbsp;</TD>
1327</TR>
1328<TR><TD ALIGN="CENTER">-/C</TD>
1329<TD ALIGN="CENTER"><TT>backupdone</TT></TD>
1330<TD ALIGN="CENTER">1/1</TD>
1331<TD ALIGN="CENTER">ErrNo</TD>
1332<TD ALIGN="CENTER">ErrorMsg</TD>
1333<TD ALIGN="CENTER">&nbsp;</TD>
1334<TD ALIGN="CENTER">&nbsp;</TD>
1335<TD ALIGN="CENTER">&nbsp;</TD>
1336</TR>
1337<TR><TD ALIGN="CENTER">&nbsp;</TD>
1338<TD ALIGN="CENTER">&nbsp;</TD>
1339<TD ALIGN="CENTER">&nbsp;</TD>
1340<TD ALIGN="CENTER">&nbsp;</TD>
1341<TD ALIGN="CENTER">&nbsp;</TD>
1342<TD ALIGN="CENTER">&nbsp;</TD>
1343<TD ALIGN="CENTER">&nbsp;</TD>
1344<TD ALIGN="CENTER">&nbsp;</TD>
1345</TR>
1346<TR><TD ALIGN="CENTER">&nbsp;</TD>
1347<TD ALIGN="CENTER">&nbsp;</TD>
1348<TD ALIGN="CENTER">&nbsp;</TD>
1349<TD ALIGN="CENTER">&nbsp;</TD>
1350<TD ALIGN="CENTER">&nbsp;</TD>
1351<TD ALIGN="CENTER">&nbsp;</TD>
1352<TD ALIGN="CENTER">&nbsp;</TD>
1353<TD ALIGN="CENTER">&nbsp;</TD>
1354</TR>
1355<TR><TD ALIGN="CENTER">&nbsp;</TD>
1356<TD ALIGN="CENTER">&nbsp;</TD>
1357<TD ALIGN="CENTER">&nbsp;</TD>
1358<TD ALIGN="CENTER">&nbsp;</TD>
1359<TD ALIGN="CENTER">&nbsp;</TD>
1360<TD ALIGN="CENTER">&nbsp;</TD>
1361<TD ALIGN="CENTER">&nbsp;</TD>
1362<TD ALIGN="CENTER">&nbsp;</TD>
1363</TR>
1364<TR><TD ALIGN="CENTER">...</TD>
1365<TD ALIGN="CENTER">Table</TD>
1366<TD ALIGN="CENTER">is not</TD>
1367<TD ALIGN="CENTER">complete</TD>
1368<TD ALIGN="CENTER">...</TD>
1369<TD ALIGN="CENTER">&nbsp;</TD>
1370<TD ALIGN="CENTER">&nbsp;</TD>
1371<TD ALIGN="CENTER">&nbsp;</TD>
1372</TR>
1373</TABLE>
1374
1375<P>
1376</TD></TR>
1377</TABLE>
1378</DIV><P></P>
1379<BR>
1380
1381<P>
1382
1383<H1><A NAME="SECTION00080000000000000000">
13847 Open Issues</A>
1385</H1>
1386
1387<P>
1388Here I collect all the ideas that need further analysis. Some solutions
1389may be written here if they might have side effects to the system,
1390I must think about. Or if I hadn't have the time to insert them at
1391the correct place ;-)
1392
1393<P>
1394
1395<UL>
1396<LI>How to realize the daemon for client and server side?
1397
1398<P>
1399It should dock to the pipe between the GUI and the process, so it
1400can monitor if there is something going on, and if not it can do its
1401job.
1402
1403<P>
1404If a daemon triggered backup is running, no user interaction is possible,
1405so no mix up between two backups can happen.
1406
1407<P>
1408</LI>
1409<LI>Security
1410
1411<P>
1412What should the user be allowed? Start backups? If yes, what files?
1413Only files, he has access to, to prevent snooping system information.
1414
1415<P>
1416Show contents of other backups?
1417
1418<P>
1419Restore files? From which backups? To which destinations?
1420
1421<P>
1422Backup to CD? Necessary rights to write there? Maybe handled by mondo.
1423
1424<P>
1425Shall the client always run as root (to access all, if triggered from
1426outside)? If yes, how assure that no unprivileged user will abuse
1427this?
1428
1429<P>
1430Shall server run as root? Server child with lower privilege? Same
1431as user on client side - but then how to realize - user id's from
1432client mustn't exist on server.
1433
1434<P>
1435</LI>
1436<LI>Use a secure tunnel as connection? How to establish/address tunnel?
1437</LI>
1438</UL>
1439
1440<P>
1441
1442<H2><A NAME="SECTION00081000000000000000">
14437.1 Possible Extensions</A>
1444</H2>
1445
1446<P>
1447
1448<UL>
1449<LI>Wildcards for specifying which files to backup/restore
1450
1451<P>
1452
1453<UL>
1454<LI>Step 1: Standard UNIX Expressions `*' `?' for filenames not only
1455at the end of the name
1456</LI>
1457<LI>Step 2: also for directories (Q: does `/*/readme' match e.g.
1458<BR>`/usr/local/share/packet/readme'?)
1459</LI>
1460<LI>Step 3: Regular Expressions (User has circumvent above question)
1461</LI>
1462</UL>
1463</LI>
1464<LI>Distinguish between restore (files are written to their old places)
1465and extract (new destination for file(s) possible).
1466</LI>
1467</UL>
1468
1469<P>
1470
1471<H1><A NAME="SECTION00090000000000000000">
1472About this document ...</A>
1473</H1>
1474 <STRONG>Concept paper for Monitas</STRONG><P>
1475This document was generated using the
1476<A HREF="http://www-dsed.llnl.gov/files/programs/unix/latex2html/manual/"><STRONG>LaTeX</STRONG>2<tt>HTML</tt></A> translator Version 99.2beta8 (1.43)
1477<P>
1478Copyright &#169; 1993, 1994, 1995, 1996,
1479<A HREF="http://cbl.leeds.ac.uk/nikos/personal.html">Nikos Drakos</A>,
1480Computer Based Learning Unit, University of Leeds.
1481<BR>
1482Copyright &#169; 1997, 1998, 1999,
1483<A HREF="http://www.maths.mq.edu.au/~ross/">Ross Moore</A>,
1484Mathematics Department, Macquarie University, Sydney.
1485<P>
1486The command line arguments were: <BR>
1487 <STRONG>latex2html</STRONG> <TT>-no_subdir -split 0 -show_section_numbers /tmp/lyx_tmpdir2332Jk28dP/lyx_tmpbuf2332o2v6vO/MonitasConcepts.tex</TT>
1488<P>
1489The translation was initiated by Stefan  on 2002-08-17
1490<BR><HR><H4>Footnotes</H4>
1491<DL>
1492<DT><A NAME="foot33">... Team</A><A NAME="foot33"
1493 HREF="MonitasConcepts.html#tex2html1"><SUP>1</SUP></A>
1494<DD>Editor of this document is Stefan Hübner &lt;shuebner.mondo@gmx.de&gt;.
1495Please send comments, extensions and proposals to him.
1496
1497
1498</DL><HR>
1499
1500<ADDRESS>
1501Stefan
15022002-08-17
1503</ADDRESS>
1504</BODY>
1505</HTML>
Note: See TracBrowser for help on using the repository browser.