services.h 13.9 KB
Newer Older
Linus Tolke's avatar
Linus Tolke committed
1
/*
2
3
 * $Id: services.h,v 0.47 1999/05/24 09:34:03 ceder Exp $
 * Copyright (C) 1991-1999  Lysator Academic Computer Association.
Linus Tolke's avatar
Linus Tolke committed
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 *
 * This file is part of the LysKOM server.
 * 
 * LysKOM is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License as published by 
 * the Free Software Foundation; either version 1, or (at your option) 
 * any later version.
 * 
 * LysKOM is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 * for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with LysKOM; see the file COPYING.  If not, write to
 * Lysator, c/o ISY, Linkoping University, S-581 83 Linkoping, SWEDEN,
 * or the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, 
 * MA 02139, USA.
 *
 * Please mail bug reports to bug-lyskom@lysator.liu.se. 
 */
Per Cederqvist's avatar
.  
Per Cederqvist committed
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
/*
 *  services.h  --  All the services the LysKOM server makes available
 *		    for clients.
 *
 *  Requires kom-types.h
 *
 *  Created by ceder 1990-03-23
 */


#ifndef  _SERVICES_H_ALREADY_INCLUDED__
#define  _SERVICES_H_ALREADY_INCLUDED__



/*
 * Session control
 */

44
extern  Success
45
46
login_old (Pers_no	person,
	   const String	passwd);
47

Per Cederqvist's avatar
.  
Per Cederqvist committed
48
extern  Success
49
50
51
login (Pers_no		person,
       const String	passwd,
       Bool		invisible);
Per Cederqvist's avatar
.  
Per Cederqvist committed
52
53

extern  Success
54
logout (void);	/* can never fail */
Per Cederqvist's avatar
.  
Per Cederqvist committed
55
56
57

/* Change Conference */
extern  Success
58
change_conference (Conf_no conference);
Per Cederqvist's avatar
.  
Per Cederqvist committed
59
60
61
62


/* Change name of a person or conference. */
extern  Success
63
64
change_name (Conf_no	  conf_no,
	     const String new_name);
Per Cederqvist's avatar
.  
Per Cederqvist committed
65
66

extern  Success
67
change_what_i_am_doing (String  what_am_i_doing);
Per Cederqvist's avatar
.  
Per Cederqvist committed
68

69
70
/* Client version: one call to set, two to retrieve. */
extern  Success
71
72
set_client_version (const String client_name,
		    const String client_version);
73
74

extern  Success
75
76
get_client_name (Session_no session_no,
		 String *result);
77
78

extern  Success
79
80
get_client_version (Session_no session_no,
		    String *result);
Per Cederqvist's avatar
.  
Per Cederqvist committed
81
82
83
84

/* Get info about a session */

extern  Success
85
86
get_session_info  (Session_no session_no,
		   Session_info *result);
Per Cederqvist's avatar
.  
Per Cederqvist committed
87

88
extern  Success
89
90
get_session_info_ident  (Session_no session_no,
			 Session_info_ident *result);
91

Per Cederqvist's avatar
Per Cederqvist committed
92
extern  Success
93
94
get_static_session_info (Session_no session_no,
			 Static_session_info *result);
Per Cederqvist's avatar
Per Cederqvist committed
95

Per Cederqvist's avatar
.  
Per Cederqvist committed
96
97
98
99
100
101
/*
 * Disconnect a session. You can disconnect your own session (even if
 * you are not logged in) and any session where you are supervisor of
 * the user that is logged in on that session.
 */
extern  Success
102
disconnect (Session_no session_no);
Per Cederqvist's avatar
.  
Per Cederqvist committed
103
104
105
106
107

/*
 * Returns your session number
 */
extern  Success
108
who_am_i (Session_no *session_no);
Per Cederqvist's avatar
.  
Per Cederqvist committed
109

Per Cederqvist's avatar
Per Cederqvist committed
110
111
112
113
114
/*
 * Set state in the session
 */

extern  Success
115
user_active (void);
Per Cederqvist's avatar
.  
Per Cederqvist committed
116
117
118
119
120
121
122
123
124

/******************************
*     Person-related calls    *
******************************/

/*
 *  Create a new person.  Returns 0 if any error occured.
 */
extern  Pers_no
125
126
create_person_old (const String  name,
		   const String  passwd);
127
128

extern Pers_no
129
130
131
132
create_person (const String name,
	       const String passwd,
	       Personal_flags flags,
	       Aux_item_list *conf_aux);
Per Cederqvist's avatar
.  
Per Cederqvist committed
133
134


David Byers's avatar
David Byers committed
135
136
137
138
extern Success
set_pers_flags(Pers_no pers_no,
               Personal_flags flags);

Per Cederqvist's avatar
.  
Per Cederqvist committed
139
140
/* Obsolete call; use get_person_stat instead. */
extern  Success
141
142
143
get_person_stat_old (Pers_no		  person,
		     int		  mask,
		     Person		* result);
Per Cederqvist's avatar
.  
Per Cederqvist committed
144
145

extern  Success
146
147
get_person_stat (Pers_no	  person,
		 Person		* result);
Per Cederqvist's avatar
.  
Per Cederqvist committed
148
149

extern  Success
150
151
152
153
get_created_texts (Pers_no		  person,
		   Local_text_no	  first,
		   unsigned long	  no_of_texts,
		   L2g_iterator 	 *created_texts);
Per Cederqvist's avatar
.  
Per Cederqvist committed
154

155
extern  Success
156
157
158
159
map_created_texts (Pers_no	  person,
		   Local_text_no  first,
		   unsigned long  no_of_texts,
		   Text_mapping  *created_texts);
160

161
extern  Success
162
163
164
165
166
get_membership_old (Pers_no		  person,
		    unsigned short	  first,
		    unsigned short	  no_of_confs,
		    Bool		  want_read_texts,
		    Membership_list	* memberships);
167

Per Cederqvist's avatar
.  
Per Cederqvist committed
168
extern  Success
169
170
171
172
173
get_membership (Pers_no		  person,
		unsigned short	  first,
		unsigned short	  no_of_confs,
		Bool		  want_read_texts,
		Membership_list	* memberships);
Per Cederqvist's avatar
.  
Per Cederqvist committed
174
175

extern  Success
176
177
set_priv_bits (Pers_no	 person,
	       Priv_bits privileges);
Per Cederqvist's avatar
.  
Per Cederqvist committed
178
179
180
181
182
183


/*  Set the password of PERSON to NEW_PWD.  OLD_PWD is the password
 *  of the person who does the set.  This is not necessarily the
 *  same as the one who gets it set.	*/
extern  Success
184
185
186
set_passwd (Pers_no	   person,
	    const String   old_pwd,
	    const String   new_pwd);
Per Cederqvist's avatar
.  
Per Cederqvist committed
187
188
189


/* You can query for unread texts without logging in. */
190
extern  Success
191
192
193
query_read_texts_old (Pers_no	     pers_no,
		      Conf_no	     conf_no,
		      Membership   * result  );
194

Per Cederqvist's avatar
.  
Per Cederqvist committed
195
extern  Success
196
197
198
query_read_texts (Pers_no      pers_no,
		  Conf_no      conf_no,
		  Membership * result  );
Per Cederqvist's avatar
.  
Per Cederqvist committed
199
200
201


extern Success
202
203
get_unread_confs(Pers_no       pers_no,
		 Conf_no_list *result);
Per Cederqvist's avatar
.  
Per Cederqvist committed
204
205

extern Success
206
207
set_user_area(Pers_no	pers_no,
	      Text_no	user_area);
Per Cederqvist's avatar
.  
Per Cederqvist committed
208
209
210
211
212
213
214
215


/****************************************
*	Conference-related calls	*
****************************************/


extern  Conf_no
216
217
create_conf_old (const String	  name,
		 Conf_type	  type);
218
219

extern Conf_no
220
221
222
create_conf (const String name,
	     Conf_type type,
	     Aux_item_list *aux);
223
224

extern Success
225
226
227
modify_conf_info (Conf_no conf_no,
		  Number_list *items_to_delete,
		  Aux_item_list *items_to_add);
Per Cederqvist's avatar
.  
Per Cederqvist committed
228
229
230
231


/*  Delete a conference.  Also used to delete persons.  */
extern  Success
232
delete_conf (Conf_no	conf);
Per Cederqvist's avatar
.  
Per Cederqvist committed
233
234
235
236
237


/*
 *  Map conference name to number.  Returns a list of the conferences
 *  that match the name NAME. Can be done without logging in.
238
 * This should be phased out.
Per Cederqvist's avatar
.  
Per Cederqvist committed
239
240
 */
extern  Success
241
242
lookup_name (const String   name,
	     Conf_list_old *result);
Per Cederqvist's avatar
.  
Per Cederqvist committed
243

244
extern Success
245
246
247
248
lookup_z_name (const String name,
	       int want_persons,
	       int want_confs,
	       Conf_z_info_list *result);
249

250
251
/* Use these two lookup-calls instead of lookup_name */
extern  Success
252
253
lookup_person (const String  pattern,
	       Conf_no_list  *result);
254
255

extern  Success
256
257
lookup_conf (const String  pattern,
	     Conf_no_list  *result);
258

259
260
/* Two functions for matching regexps. */
extern  Success
261
262
re_lookup_person (const String  regexp,
		  Conf_no_list  *result);
263
264

extern  Success
265
266
re_lookup_conf (const String  regexp,
		Conf_no_list  *result);
267

268
extern  Success
269
270
271
272
re_z_lookup (const String      regexp,
	     int               want_persons,
	     int	       want_confs,
	     Conf_z_info_list *result);
273

274
extern Success
275
get_collate_table (String * result);
276
277

extern  Success
278
279
280
get_conf_stat_older (Conf_no	 conf_no,
		     int	 mask,
		     Conference *result);
281

Per Cederqvist's avatar
.  
Per Cederqvist committed
282
extern  Success
283
284
get_conf_stat_old (Conf_no		  conf_no,
		   Conference		* result);
Per Cederqvist's avatar
.  
Per Cederqvist committed
285
286

extern  Success
287
288
get_conf_stat (Conf_no		  conf_no,
	       Conference	* result);
Per Cederqvist's avatar
.  
Per Cederqvist committed
289

290
extern Success
291
292
get_uconf_stat (Conf_no		  conf_no,
		Small_conf	* result);
293

Per Cederqvist's avatar
.  
Per Cederqvist committed
294
extern  Success
295
296
297
298
get_members (Conf_no	      conf,
	     unsigned short   first,
	     unsigned short   no_of_members,
	     Member_list    * members);
299
300

extern  Success
301
302
303
304
get_members_old (Conf_no	  conf,
		 unsigned short   first,
		 unsigned short   no_of_members,
		 Member_list	* members	);
Per Cederqvist's avatar
.  
Per Cederqvist committed
305
306
307
308
309



/* add_member is also used to change the priority of a conference */
extern  Success
310
311
312
313
314
add_member (Conf_no		conf_no,
	    Pers_no		pers_no,
	    unsigned char	priority,
	    unsigned short	where, /* Range of where is [0..] */
	    Membership_type   * type);
315
316

extern  Success
317
318
319
320
add_member_old (Conf_no		conf_no,
		Pers_no		pers_no,
		unsigned char	priority,
		unsigned short	where	); /* Range of where is [0..] */
321
322

extern Success
323
324
325
set_membership_type (Pers_no          pers_no,
		     Conf_no          conf_no,
		     Membership_type *type   );
Per Cederqvist's avatar
.  
Per Cederqvist committed
326
327
328


extern  Success
329
330
sub_member (Conf_no	conf_no,
	    Pers_no	pers_no);
Per Cederqvist's avatar
.  
Per Cederqvist committed
331
332
333
334
335


/*
 * Tell the server that I want to mark/unmark texts as read so that I
 * get no_of_unread unread texts in conf_no.
Kent Engström's avatar
Kent Engström committed
336
337
338
 *
 * The new alternative function marks last_read as the last read local
 * text. Use this one to avoid race conditions.
Per Cederqvist's avatar
.  
Per Cederqvist committed
339
 */
Kent Engström's avatar
Kent Engström committed
340

Per Cederqvist's avatar
.  
Per Cederqvist committed
341
extern  Success
342
343
set_unread (Conf_no   conf_no,
	    Text_no   no_of_unread);
Per Cederqvist's avatar
.  
Per Cederqvist committed
344

Kent Engström's avatar
Kent Engström committed
345
extern  Success
346
347
set_last_read (Conf_no       conf_no,
	       Local_text_no last_read);
Kent Engström's avatar
Kent Engström committed
348
349


Per Cederqvist's avatar
.  
Per Cederqvist committed
350
351
352
353
354
355
/*
 * set_presentation and set_etc_motd also does some magic with the
 * no_of_marks field in the Text_stat structure of the old and new text.
 */ 

extern  Success
356
357
set_presentation (Conf_no   conf_no,
		  Text_no   text_no); /* 0 to delete pres. */
Per Cederqvist's avatar
.  
Per Cederqvist committed
358
359

extern  Success
360
361
set_etc_motd (Conf_no	  conf_no,
	      Text_no	  text_no);
Per Cederqvist's avatar
.  
Per Cederqvist committed
362
363
364


extern  Success
365
366
set_supervisor (Conf_no	  conf_no,
		Conf_no	  admin	);
Per Cederqvist's avatar
.  
Per Cederqvist committed
367
368

extern  Success
369
370
set_permitted_submitters (Conf_no	  conf_no,
			  Conf_no	  perm_sub);
Per Cederqvist's avatar
.  
Per Cederqvist committed
371
372

extern  Success
373
374
set_super_conf (Conf_no	  conf_no,
		Conf_no	  super_conf);
Per Cederqvist's avatar
.  
Per Cederqvist committed
375
376

extern  Success
377
378
set_conf_type (Conf_no	  conf_no,
	       Conf_type  type	);
Per Cederqvist's avatar
.  
Per Cederqvist committed
379
extern  Success
380
381
set_garb_nice (Conf_no	  conf_no,
	       Garb_nice  days); /* number of days */
Per Cederqvist's avatar
.  
Per Cederqvist committed
382

383
extern  Success
384
385
set_expire (Conf_no	  conf_no,
	    Garb_nice	  expire); /* number of days */
386

Per Cederqvist's avatar
.  
Per Cederqvist committed
387

388
extern Success
389
390
set_keep_commented(Conf_no	conf_no,
                   Garb_nice	keep_commented);	/* number of days */
391
392


Per Cederqvist's avatar
.  
Per Cederqvist committed
393
394
395
396
397
398
399

/********************************
*     Calls to handle marks     *
********************************/


extern  Success
400
get_marks (Mark_list *result);
Per Cederqvist's avatar
.  
Per Cederqvist committed
401
402
403
404
405
406



/*
 *  Will fail if the user is not allowed to read the text.
 */
407
408
/* This function uses mark_type==0 to delete the mark. */
extern  Success
409
410
mark_text_old (Text_no	  	  text,
	       unsigned char	  mark_type);
411

412
413

/* Using this function, you can set mark_type==0. */
Per Cederqvist's avatar
.  
Per Cederqvist committed
414
extern  Success
415
416
mark_text (Text_no	  text,
	   unsigned char  mark_type);
417

Per Cederqvist's avatar
.  
Per Cederqvist committed
418

419
420
/* Remove a mark, reporting an error if you had not marked the text. */
extern  Success
421
unmark_text (Text_no	  text);
422

Per Cederqvist's avatar
.  
Per Cederqvist committed
423
424
425
426
427
428
429
430
431



/*******************************
*     Calls to handle texts    *
*******************************/


extern  Success
432
433
434
435
get_text (Text_no	  text,
	  String_size	  start_char,
	  String_size	  end_char,
	  String	* result);
Per Cederqvist's avatar
.  
Per Cederqvist committed
436
437
438


extern  Success
439
440
get_text_stat (Text_no    text,
	       Text_stat *result);
Per Cederqvist's avatar
.  
Per Cederqvist committed
441

442
extern  Success
443
444
get_text_stat_old (Text_no    text,
		   Text_stat *result);
445

Per Cederqvist's avatar
.  
Per Cederqvist committed
446
extern  Success
447
448
449
mark_as_read (Conf_no		    conference,
	      int		    no_of_texts,
	      const Local_text_no * text_arr  );
Per Cederqvist's avatar
.  
Per Cederqvist committed
450
451
452
453


/* Returns 0 on error */
extern  Text_no
454
455
456
create_text (const String     message,
	     Misc_info_list * misc,
	     Aux_item_list  * aux);
457
458

extern Text_no
459
460
create_text_old (const String     message,
		 Misc_info_list	* misc	    );
Per Cederqvist's avatar
.  
Per Cederqvist committed
461

462
/* Returns 0 on error.  */
463
extern  Text_no
464
465
466
create_anonymous_text (const String      message,
		       Misc_info_list  * misc,
		       Aux_item_list    *aux);
467
468

extern  Text_no
469
470
create_anonymous_text_old (const String      message,
			   Misc_info_list  * misc);
471

Per Cederqvist's avatar
.  
Per Cederqvist committed
472
extern Success
473
delete_text( Text_no text_no);
Per Cederqvist's avatar
.  
Per Cederqvist committed
474

475
extern Success
476
477
478
modify_text_info(Text_no        text,
		 Number_list   *items_to_delete, 
		 Aux_item_list *aux);
Per Cederqvist's avatar
.  
Per Cederqvist committed
479
480
481


extern  Success
482
483
484
add_recipient (Text_no	  text_no,
	       Conf_no	  conf_no,
	       Info_type  type	); /* recpt or cc_recpt */
Per Cederqvist's avatar
.  
Per Cederqvist committed
485
486

extern  Success
487
488
sub_recipient (Text_no	  text_no,
	       Conf_no	  conf_no);
Per Cederqvist's avatar
.  
Per Cederqvist committed
489
490
491


extern  Success
492
493
add_comment (Text_no	  comment,
	     Text_no 	  comment_to);
Per Cederqvist's avatar
.  
Per Cederqvist committed
494
495
496
497
498
499


/*
 *  Make the text COMMENT to not be a comment to text COMMENT_TO
 */
extern  Success
500
501
sub_comment (Text_no	  comment,
	     Text_no	  comment_to);
Per Cederqvist's avatar
.  
Per Cederqvist committed
502
503

extern Success
504
505
add_footnote (Text_no	footnote,
	      Text_no 	footnote_to);
Per Cederqvist's avatar
.  
Per Cederqvist committed
506
507

extern Success
508
509
sub_footnote (Text_no	footnote,
	      Text_no	parent);
Per Cederqvist's avatar
.  
Per Cederqvist committed
510
511

extern  Success
512
513
514
515
get_map (Conf_no	  conf_no,
	 Local_text_no	  first_local_no,
	 unsigned long	  no_of_texts,
	 L2g_iterator    *result);
516
517

extern Success
518
519
520
521
local_to_global (Conf_no       conf_No,
		 Local_text_no first_local_no,
		 unsigned long no_of_texts,
		 Text_mapping *result);
Per Cederqvist's avatar
.  
Per Cederqvist committed
522
523
524
525
526
527
528


/*
 *  Ask what the server thinks the time is. This
 *  might differ if on two different machines.
 */
extern  Success
529
get_time (time_t *t);
Per Cederqvist's avatar
.  
Per Cederqvist committed
530
531


Linus Tolke's avatar
Linus Tolke committed
532
533
534
/*
 *  Gets the last text before a given time.
 */
535

536
extern  Success
537
get_last_text (struct tm *clk, Text_no *result);
Linus Tolke's avatar
Linus Tolke committed
538

539
540
541
542
543
/*
 * Return next/previous existing text-no.
 */

extern  Success
544
find_next_text_no (Text_no start, Text_no *result);
545
546

extern  Success
547
find_previous_text_no (Text_no start, Text_no *result);
548
549


Per Cederqvist's avatar
.  
Per Cederqvist committed
550
551
552
553
/*
 * Who is logged on now?
 */
extern  Success
554
who_is_on_old (Who_info_list_old	* result);
Per Cederqvist's avatar
.  
Per Cederqvist committed
555
556

extern  Success
557
who_is_on (Who_info_list	* result);
Per Cederqvist's avatar
.  
Per Cederqvist committed
558

559
extern  Success
560
who_is_on_ident (Who_info_ident_list *result);
Per Cederqvist's avatar
.  
Per Cederqvist committed
561

Per Cederqvist's avatar
Per Cederqvist committed
562
extern  Success
563
564
565
566
who_is_on_dynamic (int want_visible,
		   int want_invisible,
		   long active_last,
		   Dynamic_session_info_list *result);
Per Cederqvist's avatar
Per Cederqvist committed
567

Per Cederqvist's avatar
.  
Per Cederqvist committed
568
569
570
/*
 *  Return various information about the server
 */
571
extern  Success
572
get_info_old (Info *result);
573

Per Cederqvist's avatar
.  
Per Cederqvist committed
574
extern  Success
575
get_info (Info *result);
Per Cederqvist's avatar
.  
Per Cederqvist committed
576

577
extern  Success
578
get_version_info (Version_info *result);
579

Per Cederqvist's avatar
.  
Per Cederqvist committed
580
581
582
583
584

/*
 * Privileged calls.
 */

David Byers's avatar
David Byers committed
585
extern Success
586
set_info(Info *info);
David Byers's avatar
David Byers committed
587

588
extern Success
589
590
modify_server_info(Number_list      *items_to_delete,
		   Aux_item_list    *items_to_add);
591

Per Cederqvist's avatar
.  
Per Cederqvist committed
592
extern Success
593
set_motd_of_lyskom (Text_no motd);
Per Cederqvist's avatar
.  
Per Cederqvist committed
594
595
596
597
598

/*
 * Set ena_level. 0 means don't use any privileges.
 */
extern Success
599
enable (unsigned char ena_level);
Per Cederqvist's avatar
.  
Per Cederqvist committed
600
601
602
603
604

/*
 * Make LysKOM sync its files.
 */
extern Success
605
sync_kom (void);
Per Cederqvist's avatar
.  
Per Cederqvist committed
606
607
608
609
610

/*
 * Close LysKOM.
 */
extern Success
611
shutdown_kom (int exit_val);
Per Cederqvist's avatar
.  
Per Cederqvist committed
612
613

/*
614
615
 * Send a message to all clients. This is obsoleted by send_message(),
 * but will remain for compatibility reasons.
Per Cederqvist's avatar
.  
Per Cederqvist committed
616
617
 */
extern Success
618
broadcast (const String message);
Per Cederqvist's avatar
.  
Per Cederqvist committed
619
620
621
622
623
624

/*
 * Send a message to a person, or all persons. If recipient == 0 all
 * connections will receive the message.
 */
extern Success
625
626
send_message (Conf_no recipient,
	      const String message);
Per Cederqvist's avatar
.  
Per Cederqvist committed
627

628
629
630
631
632
/*
 * Selection of asynchronous messages
 */

extern Success
633
accept_async(Number_list *accept_list);
634
635

extern Success
636
query_async(Number_list *result);
Per Cederqvist's avatar
.  
Per Cederqvist committed
637

638
639
640
641
642
/*
 * Aux-items
 */

extern Success
643
query_predefined_aux_items(Number_list *result);
644
645


646
647
#ifdef DEBUG_CALLS
extern Success
648
get_memory_info(Memory_info *result);
649
650

extern Success
651
set_marks(Text_no text_no, unsigned long no_of_marks);
652
653

extern Success
654
655
backdate_text(Text_no text_no,
	      unsigned long seconds);
656

657
#endif
Per Cederqvist's avatar
.  
Per Cederqvist committed
658
659
    
#endif	/*  _SERVICES_H_ALREADY_INCLUDED__  */