prot-A.txt 45.5 KB
Newer Older
1
2
Hej Emacs!  Denna fil är skriven med hjälp av -*- outline -*-.

Per Cederqvist's avatar
.  
Per Cederqvist committed
3
4
			   LysKOM-Projektet
		   --------------------------------
5
      Specifikation 8.0 av protokoll A mellan klient och server
Per Cederqvist's avatar
.  
Per Cederqvist committed
6
		   --------------------------------
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
	     av Lars Aronsson <Aronsson@Lysator.LiU.SE>,
		      Pell <pell@lysator.liu.se>
	      och Per Cederqvist <ceder@lysator.liu.se>


* Innehållsförteckning

	Innehållsförteckning
	LysKOM
	Den här texten
	Dokumenthistorik
	Protokollhistorik
	Filer
	Underliggande protokoll
	Abstrakt syntaxnotation
	Grundläggande datatyper
	Dialog
	Säkerhetsnivåer och privilegiebittar
	Felkoder
	Asynkrona anrop
	RPC-anrop
	Konstruerade datatyper
	Exempel

* LysKOM
Per Cederqvist's avatar
.  
Per Cederqvist committed
32

Linus Tolke's avatar
Linus Tolke committed
33
LysKOM är ett datakonferenssystem. Andra liknande system är QZ-KOM och
34
35
36
37
38
39
40
PortaCOM. LysKOM är Copyright (C) 1990, 1991, 1992, 1993, 1994
datorföreningen Lysator vid Universitetet och Tekniska Högskolan i
Linköping. Var och en tillåts fritt kopiera, ändra och distribuera
LysKOM-dokument och program enligt villkoren i GNU General Public
License. Varken Lysator eller dess medlemmar tar något som helst
ansvar för dokumentens eller programmens riktighet eller följderna av
deras användande.
Per Cederqvist's avatar
.  
Per Cederqvist committed
41
42


43
* Den här texten
Per Cederqvist's avatar
.  
Per Cederqvist committed
44

Linus Tolke's avatar
Linus Tolke committed
45
46
47
Den här texten specificerar version A av det protokoll som används
mellan en klient (användarens program) och en server (databasen). Den
här texten är tänkt att innehålla allt du behöver veta för att skriva
48
49
en klient utan att veta något om servern, eller tvärtom. Denna ädla
föresats är inte helt uppfylld, men kanske i framtiden.
Per Cederqvist's avatar
.  
Per Cederqvist committed
50

Linus Tolke's avatar
Linus Tolke committed
51
52
Mitt syfte är att den här texten skall vara så fullständig och korrekt
som möjligt. Om du hittar några fel, eller kommer på något som saknas,
53
54
så hör gärna av dig till kom@lysator.liu.se. Följande är de saker som
jag vet saknas i den här texten:
Per Cederqvist's avatar
.  
Per Cederqvist committed
55

Linus Tolke's avatar
Linus Tolke committed
56
	Vad som lagras i en användares "user-area", och hur.
Per Cederqvist's avatar
.  
Per Cederqvist committed
57

58
59
* Dokumenthistorik

60
61
62
63
** 9.0: 1996-06-09

Protokollversion 9.  Distribueras med lyskomd 1.9.0

64
** 8.0: 1995-11-08
65

66
Protokollversion 8.  Distribueras med lyskomd 1.8.0.
67

68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
** 7.1: 1995-01-08.

Protokollhistorik och dokumenthistorik tillagda av Per Cederqvist.
Outline-mode används för att göra dokumentet mer hanterbart.
Distribueras med lyskomd 1.7.1.

** 7.0: 1994-12-31.

Den första specifikationen med ett versionsnummer.  Alla anrop som
tillkommit sedan 1991-06-25 dokumenterades.  Pell och ceder gjorde
jobbet.  Distribueras med lyskomd 1.7.0.

** ?.?: 1993-05-19.

Linus Tolke skrev kommentarer för några anrop som saknade förklaring.

** ?.?: 1992-07-06.

Linus Tolke konverterade dokumentet till ISO-8859-1.

** ?.?: 1991-08-12.

ceder började versionshantera detta dokument.

** ?.?: 1991-06-25.

Lars Aronsson dokumenterade det protokoll som kördes då.

* Protokollhistorik

Här dokumenteras kortfattat vad som har hänt med protokollet.
Meningen med denna historik är dels att klientskrivare ska kunna
skriva klienter som kan hantera gamla servrar, dels att dokumentera
historien.  För varje ny protokollversion anges de nya anrop som
tillkommit, vilka anrop som fått utökad funktionalitet, och om något
annat hänt.

Eftersom version 6 och tidigare saknade anropet 75=get-version-info
anges även vilken lyskomd-version som var den första att implementera
protokollet.

109
** Protokollversion 8 (först implementerat i lyskomd 1.8.0)
Per Cederqvist's avatar
Per Cederqvist committed
110

David Byers's avatar
David Byers committed
111
112
*** Utökad funktionalitet:
	30=add-recipient: Kan ändra recpt till cc_recpt och vice versa.
113
114
	21=set-conf-type: Kan ta både Conf-Type och Extended-Conf-Type
	10=create-conf: Kan ta både Conf-Type och Extended-Conf-Type
David Byers's avatar
David Byers committed
115

116
117
*** Nya anrop:
	77=set-last-read
David Byers's avatar
David Byers committed
118
        78=get-uconf-stat
Per Cederqvist's avatar
Per Cederqvist committed
119

120
121
122
123
124
125
126
127
128
129
130
131
** Protokollversion 7 (först implementerat i lyskomd 1.7.0).

*** Nya anrop: 
	74=re-z-lookup
	75=get_version_info
	76=lookup_z_name
*** Utökad funktionalitet:
	53=send-message: Mottagaren kan nu vara ett möte.
*** Övrigt:
	Det asynkrona meddelanded 1=i-am-off finns inte längre.

** Protokollversion 6 (först implementerat i lyskomd 1.4.0).
Per Cederqvist's avatar
.  
Per Cederqvist committed
132

133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
*** Nya anrop: 
	67=lookup_person
	68=lookup_conf
	69=set_client_version
	70=get_client_name
	71=get_client_version
	72=mark_text
	73=unmark_text

** Protokollversion 5 (först implementerat i lyskomd 1.3.0).

*** Nya anrop:
	65=re_lookup_person
	66=re_lookup_conf

** Protokollversion 4 (först implementerat i lyskomd 1.1.1).

*** Nya anrop: 
	62=login
	63=who_is_on_ident
	64=get_session_info_ident

** Protokollversion 3 (först implementerat i lyskomd 1.1.0).

*** Nya anrop:
	61=find_previous_text_no
	60=find_next_text_no
	59=create_anonymous_text
	58=get_last_text

** Protokollversion 2 (först implementerat i lyskomd 0.30.0).

*** Nya anrop: 
	57=set_user_area

** Protokollversion 1 (först implementerad i lyskomd 0.29.2)

Nya anrop: alla från nummer 0-56.  Det fanns tidigare versioner av
lyskomd som implementerade delmängder av protokollet, men vi har inte
längre kvar tillräckligt mycket loggfiler för att kunna återskapa de
protokoll som implementerades.

* Filer
Per Cederqvist's avatar
.  
Per Cederqvist committed
176

Linus Tolke's avatar
Linus Tolke committed
177
Den här filen är en mer systematisk sammanställning av nedan
178
179
uppräknade filer. Det är möjligt att filerna har ändrat namn, antal
och utseende när du läser detta. Så här hette de den 24 december 1994:
Per Cederqvist's avatar
.  
Per Cederqvist committed
180

181
182
183
184
185
186
	doc/security-levels.txt
	src/include/kom-types.h
	src/include/kom-errno.h
	src/server/com.h                -- automatgenereras
	src/server/fncdef.txt
	src/include/services.h
Per Cederqvist's avatar
.  
Per Cederqvist committed
187
188


189
* Underliggande protokoll
Per Cederqvist's avatar
.  
Per Cederqvist committed
190

Linus Tolke's avatar
Linus Tolke committed
191
192
LysKOM Protokoll A kan köras ovanpå vilken tillförlitlig dubbelriktad
8-bitars bytekanal som helst. I nödfall kan det också köras på en
193
194
7-bitars bytekanal. Idag körs det ovanpå Telnet/TCP/IP. På Lysator
används telnetport 4894 på IP-host kom.lysator.liu.se.  Data i
Linus Tolke's avatar
Linus Tolke committed
195
196
197
protokoll A sker i ASCII klartext. I hollerithsträngar (se nedan) får
godtyckliga 8-bitars bytes förekomma, men tanken är att man skall
kunna köra protokollet "rått" från en textterminal.
Per Cederqvist's avatar
.  
Per Cederqvist committed
198
199


200
* Abstrakt syntaxnotation
Per Cederqvist's avatar
.  
Per Cederqvist committed
201

Linus Tolke's avatar
Linus Tolke committed
202
203
204
205
206
I den här specifikationen har en BNF-liknande grammatik använts för
att beskriva protokollets dataelement. Det är mycket vetenskapligt,
för så gör de som specar OSI-protokoll. Den här grammatiken borde
likna ASN.1 mer än den gör, men jag har inte ASN.1-specen här.
Datafält har givits namn med liten begynnelsebokstav, datatyper med
Per Cederqvist's avatar
.  
Per Cederqvist committed
207
208
stor. Operatorn "::=" definierar (som i BNF) och ":" ger typ (som i
Pascal). Kommentarer inleds med "!" och avslutas med radslut (som i
David Byers's avatar
David Byers committed
209
210
BLISS). Alternativ betecknas med "|" (som i egrep) Semikolon används
som i C. De grundläggande typerna och deras notation beskrivs härnäst.
Per Cederqvist's avatar
.  
Per Cederqvist committed
211
212


213
* Grundläggande datatyper
Per Cederqvist's avatar
.  
Per Cederqvist committed
214

215
216
Dataelementen som skickas från klient till server åtskiljs av (ett
eller fler) mellanslag (ASCII 0x20), tab-tecken (0x9), line-feed
Per Cederqvist's avatar
Per Cederqvist committed
217
(0xA), return (0xD), eller NUL (0x0).  Undvik att skicka NUL. I
218
219
meddelanden från server till klient åtskiljs dataelementen av exakt
ett mellanslag och varje meddelande avslutas alltid med line-feed.
Per Cederqvist's avatar
.  
Per Cederqvist committed
220

221
222
** Heltal

Per Cederqvist's avatar
Per Cederqvist committed
223
224
225
INT32, INT16, INT8 samt BOOL är icke-negativa heltal som skall rymmas
på 32, 16, 8 och 1 bitar, respektive. De skickas som text på decimal
form.  INTEGER används när inga särskilda begränsningar finns och kan
226
anses synonym med INT32.
Per Cederqvist's avatar
.  
Per Cederqvist committed
227

228
229
** Strängar

Linus Tolke's avatar
Linus Tolke committed
230
231
232
233
HOLLERITH är textsträngar. Först skickas strängens längd som en
INTEGER, sedan bokstaven "H" och därefter (utan åtskiljande
mellanslag!) texten. Texten får innehålla vilka byte-värden som helst
från 0 till 255.
Per Cederqvist's avatar
.  
Per Cederqvist committed
234

235
236
** Bit-strängar

Linus Tolke's avatar
Linus Tolke committed
237
238
239
240
BITSTRING skickas som text representerande ett heltal på binär form.
Antal bitar i strängen framgår alltid av sammanhanget. Även inledande
nollor måste skickas. Siffran "1" representerar sant värde och "0"
falskt. Bitarna skickas i den ordning de står listade i den abstrakta
Per Cederqvist's avatar
.  
Per Cederqvist committed
241
242
243
syntaxen.

	shape-of-world : BITSTRING (
244
	  is-flat; is-round; is-3d; is-2d;	! t.ex. "0110"
Per Cederqvist's avatar
.  
Per Cederqvist committed
245
246
	)

247
248
** Arrayer

Linus Tolke's avatar
Linus Tolke committed
249
250
251
ARRAY är en lista med ett visst antal element. Elementens typ noteras
omedelbart efter ordet ARRAY. Först skickas en INTEGER som ger antalet
element, sedan skickas tecknet "{", därefter alla elementen i följd
Per Cederqvist's avatar
.  
Per Cederqvist committed
252
och slutligen tecknet "}". Tecknen "{" och "}" fyller egentligen ingen
Linus Tolke's avatar
Linus Tolke committed
253
funktion, men underlättar när man kör protokollet "rått".  Exempel:
Per Cederqvist's avatar
.  
Per Cederqvist committed
254
255

	hackers : ARRAY HOLLERITH;
256
257
258
259
260
261
262
	! t.ex.	4 { 8Haronsson 7Hbellman 4Hinge 5Hceder }

Om arrayen är tom skickas den som "0 *".  I vissa anrop (t ex
46=get-membership) kan man säga åt servern att bara skicka tillbaks
arrayens storlek, men inte innehållet.  Om arrayen innehåller 38
element kommer den i så fall att skickas som "38 *" oavsett vad den
innehåller.
Per Cederqvist's avatar
.  
Per Cederqvist committed
263

264
265
** Selection

Linus Tolke's avatar
Linus Tolke committed
266
267
268
SELECTION är en INTEGER med efterföljande svans. Vilken typ svansen
har beror på värdet av heltalet. För vissa värden kan svansen vara
tom. Värdet anges i den abstrakta syntaxen med "nummer=namn".
Per Cederqvist's avatar
.  
Per Cederqvist committed
269
270
271
Exempel:

	phrase : SELECTION (
272
273
	  1=hello	name:HOLLERITH;		! t.ex. "1 4HJohn"
	  2=howdy	;			! t.ex. "2"
Per Cederqvist's avatar
.  
Per Cederqvist committed
274
275
	)

276
277
** RPC

Linus Tolke's avatar
Linus Tolke committed
278
279
280
RPC är en mycket speciell notation som används för protokoll med
remote procedure calls, dvs frågor och svar. Notationen för RPC ser ut
som SELECTION, men varje alternativ har två svansar: frågan och
281
282
svaret. Dessutom anges den protokollversion där anropet
infördes. Selectornumret skickas bara tillsammans med frågan. Exempel:
Per Cederqvist's avatar
.  
Per Cederqvist committed
283
284

	phrases : RPC (
285
286
287
	  1=cost(6) inventory:INTEGER;	price:INTEGER;
	  2=time(6) timezone:INTEGER;	hours:INTEGER;
	  3=name(7) ;			name:HOLLERITH;
Per Cederqvist's avatar
.  
Per Cederqvist committed
288
	)
289
	! t.ex. "1 23"->"498" "3"->"4HLars" "2 1"->"1430"
290
291
292
293
	! cost och time infördes i protokollversion 6, medan
	! name infördes i protokollversion 7.

** Struct/record
Per Cederqvist's avatar
.  
Per Cederqvist committed
294
295

Datastrukturen struct/record markeras i den abstrakta syntaxen bara
Linus Tolke's avatar
Linus Tolke committed
296
med omgivande "(" och ")". Detta innebär inte att några extra tecken
Per Cederqvist's avatar
.  
Per Cederqvist committed
297
298
299
skickas i protokollet.


300
* Dialog
Per Cederqvist's avatar
.  
Per Cederqvist committed
301

Linus Tolke's avatar
Linus Tolke committed
302
En session börjar alltid med en uppkoppling, där klienten väljer
Per Cederqvist's avatar
.  
Per Cederqvist committed
303
304
protokoll genom att skicka en

Linus Tolke's avatar
Linus Tolke committed
305
	uppkopplingsbegäran : ( "A"; loginnamn : HOLLERITH; )
Per Cederqvist's avatar
.  
Per Cederqvist committed
306

Linus Tolke's avatar
Linus Tolke committed
307
vilken besvaras från servern av en
Per Cederqvist's avatar
.  
Per Cederqvist committed
308

309
	uppkopplingsbekräftelse : "LysKOM\n"
Per Cederqvist's avatar
.  
Per Cederqvist committed
310

311
312
313
Därefter finns bara RPC-protokollet commands. Klienten får skicka
flera frågor innan den fått svar på den första. För att hålla reda på
till vilket anrop ett visst svar hör, väljer klienten ett
Linus Tolke's avatar
Linus Tolke committed
314
315
referensnummer att medfölja och samma nummer återfinns i svaret. Det
är klientens sak att fritt välja och hålla reda på referensnumren.
Per Cederqvist's avatar
.  
Per Cederqvist committed
316

Linus Tolke's avatar
Linus Tolke committed
317
	fråga : (
Per Cederqvist's avatar
.  
Per Cederqvist committed
318
319
320
321
	  ref-no : INTEGER;
	  commands-call;
	)

Linus Tolke's avatar
Linus Tolke committed
322
som, om allt går som det skall, besvaras från servern med
Per Cederqvist's avatar
.  
Per Cederqvist committed
323
324
325
326
327
328
329

	ok-return : (
	  "=";
	  ref-no : INTEGER;
	  commands-return;
	)

Linus Tolke's avatar
Linus Tolke committed
330
eller, om något misslyckades, med
Per Cederqvist's avatar
.  
Per Cederqvist committed
331
332
333
334
335
336
337
338

	error-return : (
	  "%";
	  ref-no : INTEGER;
	  error-no : Error-No;
	  error-status : INTEGER;
	)

Linus Tolke's avatar
Linus Tolke committed
339
340
Det skall inte vara något tomrum mellan "=" respektive "%" och ref-no.
Observera att även för de funktioner där f-return är innehållslöst
Per Cederqvist's avatar
.  
Per Cederqvist committed
341
342
343
svarar servern med "=" eller "%" och ref-number. 


344
* Säkerhetsnivåer och privilegiebittar
Per Cederqvist's avatar
.  
Per Cederqvist committed
345

Linus Tolke's avatar
Linus Tolke committed
346
347
348
349
Säkerhet och privilegier byggs i LysKOM med två komponenter: Varje
person har sig ett antal bittar tilldelad (man kan säga att personen
tillhör ett antal grupper) och varje session har dessutom en
säkerhetsnivå (ett tal). Varje rättighet kräver en viss bitt och en
350
351
352
viss minsta nivå. De nu aktuella nivåerna och kombinationerna av
bitt-nivå-rättighet beskrivs i filen doc/security-levels.txt. Här ges
en vackrare tabell:
Per Cederqvist's avatar
.  
Per Cederqvist committed
353

Linus Tolke's avatar
Linus Tolke committed
354
	Bitt	Nivå	Rättighet
Per Cederqvist's avatar
.  
Per Cederqvist committed
355
356
	------------------------------------------------------
	wheel				Normalt ej tilldelad
Linus Tolke's avatar
Linus Tolke committed
357
358
359
360
361
		  0	Alltid logga in, även vid "crowded"
		  6	Sätta alla Priv_bits för alla personer
		  7	Sätta password för alla personer
		  8	Vara organisatör (supervisor) för allt
		 10	Kan läsa alla texter
Per Cederqvist's avatar
.  
Per Cederqvist committed
362
363
	------------------------------------------------------
	admin				Normalt ej tilldelad
Linus Tolke's avatar
Linus Tolke committed
364
365
366
367
		  1	Stänga av servern
		  1	Sätta motd_of_kom
		  1	Läsa last_login
		  2	Läsa status för hemliga möten och
Per Cederqvist's avatar
.  
Per Cederqvist committed
368
			personer
Linus Tolke's avatar
Linus Tolke committed
369
370
371
372
		  2	Läsa de skyddade delarna av statusen
		  2	Läsa hela text_statusen,
			även vid hemliga mottagare
		  3	Byta namn på alla
Per Cederqvist's avatar
.  
Per Cederqvist committed
373
374
		  4	Addera/subtrahera medlemmar
		  4	Addera/subtrahera mottagare till texter
Linus Tolke's avatar
Linus Tolke committed
375
		  5	Sätta supermöte
Per Cederqvist's avatar
.  
Per Cederqvist committed
376
		  5	Radera texter
Linus Tolke's avatar
Linus Tolke committed
377
		  6	Sätta administratör
Per Cederqvist's avatar
.  
Per Cederqvist committed
378
379
	------------------------------------------------------
	statistic			Normalt ej tilldelad
Linus Tolke's avatar
Linus Tolke committed
380
381
		  2	Läsa statistikdelarna av Person-structen,
			även om de är skyddade.
Per Cederqvist's avatar
.  
Per Cederqvist committed
382
383
	------------------------------------------------------
	create_conf			Normalt tilldelad
Linus Tolke's avatar
Linus Tolke committed
384
		  0	Skapa möten
Per Cederqvist's avatar
.  
Per Cederqvist committed
385
386
387
388
389
	------------------------------------------------------
	create_pers			Normalt tilldelad
		  0	Skapa personer
	------------------------------------------------------

Linus Tolke's avatar
Linus Tolke committed
390
391
392
393
Enligt Thomas Bellmans erfarenheter använder en administratör i
praktiskt arbete bara nivåerna 0 och 255. I stället för
säkerhetsnivåer borde de enskilda privilegiebittarna slås på och av
individuellt. Detta kanske löses elegantare i kommande versioner av
Per Cederqvist's avatar
.  
Per Cederqvist committed
394
395
396
protokollet.


397
* Felkoder
Per Cederqvist's avatar
.  
Per Cederqvist committed
398

Linus Tolke's avatar
Linus Tolke committed
399
400
De felkoder som förekommer som svar på RPC-anrop är nedanstående. Här
är de förklarade i nummerordning. Det finns en kort lista i alfabetisk
401
402
403
404
ordning strax efteråt. Några felkoder har använts i tidigare versioner
av protokoll A, men används ej längre. Dessa felkoder kommer inte att
återanvändas, eftersom gamla klienter då skulle kunna ge ett felaktigt
felmeddelande. Dessa felkoder är märkta "*" i tabellen nedan.
Per Cederqvist's avatar
.  
Per Cederqvist committed
405
406
407

	Error-No : SELECTION (
	  0=no-error;		! No error has occured
408
          ! Felkod 1 används ej.
Per Cederqvist's avatar
.  
Per Cederqvist committed
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
	  2=not-impl;		! Not implemented yet
	  3=obsolete;		! No longer implemented
	  4=pwd;		! Wrong or illegal password
	  5=long-str;		! String too long
	  6=login;		! Not logged in.
	  7=login-disallowed;	! System is in 'singel-user mode'
	  8=conf-zero;		! Attempt to use conference number 0.
	  9=undef-conf;		! Undefined or secret conference
	  10=undef-pers;	! Undefined or secret person
	  11=access; 		! No 'read/write permission'
	  12=perm;		! No permission
	  13=not-member;	! Not member in conf
	  14=no-such-text;	! No such global text-no, or no access
	  15=text-zero;		! Can't use text no 0
	  16=no-such-local-text;! No such local text-no
	  17=local-text-zero;	! Can't use local text no 0
	  18=bad-name;		! Too short or too long
				! or contains illegal chars
	  19=index-out-of-range;
	  20=conf-exists;	! Already exists
429
	 *21=pers-exists;	! Already exists 
Per Cederqvist's avatar
.  
Per Cederqvist committed
430
431
	  22=secret-public;	! Cannot be secret and !rd-prot
	  23=letter-box;	! Cannot change letter-box flag
432
	  24=ldb-err;		! Database is corrupted.
Per Cederqvist's avatar
.  
Per Cederqvist committed
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
	  25=ill-misc;		! Illegal misc field.
				! err-stat holds field no
	  26=illegal-info-type;	! Info-type parameter was illegal.
				! This means that there is a
				! bug in the client.
	  27=already-recipient;	! Already recipient to this text.
	  28=already-comment;	! Already comment to this text.
	  29=already-footnote;	! Already footnote to this text.
	  30=not-recipient;	! Not recipient
	  31=not-comment;	! Not comment to this text.
	  32=not-footnote;	! Not footnote to this text.
	  33=recipient-limit;	! Too many recipients
	  34=comm-limit;	! Too many comments
	  35=foot-limit;	! Too many footnotes
	  36=mark-limit;	! Too many marks.
	  37=not-author;	! Only the author may add footnotes or
				! delete texts.
	  38=no-connect;	! Can't connect to specified server
	  39=out-of-memory;	! Couldn't get memory for result
452
453
	 *40=server-is-crazy;	! Client can't understand server
	 *41=client-is-crazy;	! Client thinks that server says it
Per Cederqvist's avatar
.  
Per Cederqvist committed
454
455
				! can't understand client.
	  42=undef-session;	! This session doesn't exist
456
457
458
	  43=regex-error;	! Regexp compilation failed
	  44=not-marked;	! Attempt to unmark an unmarked text
	  45=tempfail;		! Temporary failure.  Try again later
Per Cederqvist's avatar
.  
Per Cederqvist committed
459
460
461
462
463
464
465
	)


	Nummer	Felmeddelande	Nummer	Felmeddelande
	------------------------------------------------------
	    11	access		    28	already-comment
	    29	already-footnote    27	already-recipient
466
	    18	bad-name	    41*	client-is-crazy
Per Cederqvist's avatar
.  
Per Cederqvist committed
467
468
469
470
471
472
473
474
475
476
477
	    34	comm-limit	    20	conf-exists
	     8	conf-zero	    35	foot-limit
	    25	ill-misc	    26	illegal-info-type
	    19	index-out-of-range  24	ldb-err
	    23	letter-box	    17	local-text-zero
	     6	login		     7	login-disallowed
	     5	long-str	    36	mark-limit
	    38	no-connect	     0	no-error
	    16	no-such-local-text  14	no-such-text
	    37	not-author	    31	not-comment
	    32	not-footnote	     2	not-impl
478
479
480
481
482
483
484
485
486
	    44	not-marked	    13	not-member
	    30	not-recipient	     3	obsolete	
	    39	out-of-memory	    12	perm		
	    21*	pers-exists	     4	pwd		
	    33	recipient-limit	    43	regex-error
	    22	secret-public	    40*	server-is-crazy
	    45	tempfail	    15	text-zero	
	     9	undef-conf	    10	undef-pers	
	    42	undef-session
Per Cederqvist's avatar
.  
Per Cederqvist committed
487
488
489
	------------------------------------------------------


490
* Asynkrona anrop
Per Cederqvist's avatar
.  
Per Cederqvist committed
491

Linus Tolke's avatar
Linus Tolke committed
492
493
494
495
496
497
När som helst kan servern skicka ut ett asynkront anrop. En klient
behöver inte bry sig om dem. Det går bra att läsa undan dem när ett
svar skall läsas. Asynkrona meddelanden börjar alltid med ":" och ett
heltal som talar om hur många parametrar som kommer. Därefter kommer
en selector och parametrarna. Precis som för ok- och error-return är
där inget tomrum mellan ":" och första heltalet. I förklaringen nedan
Per Cederqvist's avatar
.  
Per Cederqvist committed
498
listas de asynkrona anropen i nummerordning, men en alfabetiskt
Linus Tolke's avatar
Linus Tolke committed
499
sorterad lista följer strax därpå.
Per Cederqvist's avatar
.  
Per Cederqvist committed
500
501
502
503
504
505
506
507
508


asynk-meddelande ::= (
  ":";
  antal-params:INTEGER;
  meddelande : SELECTION (
    0=new-text	( text-no : Text-No;
		  text-stat : Text-stat )
	! En ny text har skapats.
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
	;
    1=i-am-off	( person : Pers-No; )
	! Används ej längre. Ersatt av anrop 13, som
	! anger sessionsnummer i stället för personnummer.
	;
    2=i-am-on-obsolete	( person : Pers-No;
			  conference : Conf-No;
			  what-am-i-doing : HOLLERITH; )
	! Används ej längre. Ersatt av anrop 6.
	;
    3=conf-deleted	! Ännu ej implementerat.
	;
    4=conf-created	! Ännu ej implementerat.
	;
    5=new-name	( conf-no : Conf-No;
Per Cederqvist's avatar
.  
Per Cederqvist committed
524
525
		  old-name : HOLLERITH;
		  new-name : HOLLERITH; )
526
527
528
529
530
531
532
533
534
535
536
537
	! Konferens (eller Person) har bytt namn.
	;
    6=i-am-on	( info : Who-Info; )
	! Innehåller ett Who-Info när någon byter konferens eller
	! "what-am-i-doing".
	;
    7=sync-db		! Databasen synkas.
	;
    8=leave-conf	( conf-no : Conf-No; )
	! Skickas när någon utesluter aktuell Person från
	! mötet conf-no och personen var närvarnade i mötet.
	;
Per Cederqvist's avatar
.  
Per Cederqvist committed
538
539
    9=login	( pers-no : Pers-No;
		  session-no : Session-No; )
540
541
542
543
544
545
546
	! Innehåller info när någon loggar in.
	;
    10=broadcast	( sender : Pers-No;
			  message : HOLLERITH; )
	! Används ej längre. Ersatt av anrop 12, med recipient=0.
	;
    11=rejected-connection
Linus Tolke's avatar
Linus Tolke committed
547
	! Asynkrona anropet nummer 11 betyder att någon har
Per Cederqvist's avatar
.  
Per Cederqvist committed
548
	! misslyckats logga in, eftersom servern inte har fler
Linus Tolke's avatar
Linus Tolke committed
549
550
	! lediga förbindelser. Den ansvarskännande användaren
	! kan nu välja att logga ut för att bereda plats.
551
552
553
554
	;
    12=send-message	( recipient : Conf-No;
			  sender : Pers-No;
			  message : HOLLERITH;  )
Linus Tolke's avatar
Linus Tolke committed
555
556
557
	! Om argumentet recipient är noll (0) i asynkrona anropet
	! nummer 12, så är meddelandet riktat till alla inloggade.
	! Det är ännu inte möjligt att rikta ett meddelande till
558
559
560
561
	! en viss session.  Om recipient är ett möte så har
	! meddelandet skickats till alla medlemmar i mötet.
	;
    13=logout	( pers-no : Pers-No;
Per Cederqvist's avatar
.  
Per Cederqvist committed
562
		  session-no : Session-No; )
563
564
	! Personens pers-no session session-no har loggat ut.
	;
Per Cederqvist's avatar
.  
Per Cederqvist committed
565
566
567
568
  )
)

En asterisk (*) efter numret i tabellen nedan anger att det asynkrona
Linus Tolke's avatar
Linus Tolke committed
569
570
anropet ersatts av något annat. Se ovan under respektive anrop för
närmare beskrivning.
Per Cederqvist's avatar
.  
Per Cederqvist committed
571
572
573

	   Nr	Asynkront anrop	   Nr	Asynkront anrop
	------------------------------------------------------
574
575
576
577
578
579
580
	    10*	broadcast	     9  login
	     4	conf-created	    13  logout
	     3	conf-deleted	     5  new-name
	     1*	i-am-off	     0  new-text
	     6	i-am-on		    11  rejected-connection
	     2*	i-am-on-obsolete    12  send-message
	     8	leave-conf	     7  sync-db
Per Cederqvist's avatar
.  
Per Cederqvist committed
581
582
583
	------------------------------------------------------


584
* RPC-anrop
Per Cederqvist's avatar
.  
Per Cederqvist committed
585
586
587

Klienten skickar RPC-anrop med parametrar till servern. Servern svarar
endera med ett felmeddelande (se ovan i avsnitten Dialog och Felkoder)
Linus Tolke's avatar
Linus Tolke committed
588
589
590
eller med ett returvärde. Nedan ges BNF-grammatiken för de datatyper
som används i parametrar och returvärden. RPC-anropen listas i
alfabetisk ordning, men en numeriskt sorterad lista följer strax
591
592
593
efteråt.  För varje anrop anges om det är OBSOLETE, RECOMMENDED eller
EXPERIMENTAL.  Anrop i klassen O ska inte användas, och anrop i
klassen E bör bara användas efter samråd med LysKOM-kommittén.
Per Cederqvist's avatar
.  
Per Cederqvist committed
594

595
596
597
598
Följande information saknas i listan nedan:
- vilka felkoder som kan returneras
- om man måste vara inloggad för att få utföra anropet
- vilka privilegiebittar man behöver för att få utföra anropet
599
600

** RPC-anrop i alfabetisk ordning
Per Cederqvist's avatar
.  
Per Cederqvist committed
601
602

commands : RPC (
603
  ! Anropsnummer och -namn(protokollversion)
Linus Tolke's avatar
Linus Tolke committed
604
605
	! Datayp för anropsparameter
	! Datatyp för returvärde
Per Cederqvist's avatar
.  
Per Cederqvist committed
606
	
607
  32=add-comment(1)	( comment : Text-No;		! RECOMMENDED
608
			  comment-to : Text-No; )
Per Cederqvist's avatar
.  
Per Cederqvist committed
609
	;
Linus Tolke's avatar
Linus Tolke committed
610
611
612
	! Används för att lägga till en kommentarslänk i efterskott.
	! Lägger även till informationen om vem som lade till
	! kommentarslänken och när.
Per Cederqvist's avatar
.  
Per Cederqvist committed
613

614
  37=add-footnote(1)	( footnote : Text-No;		! RECOMMENDED
615
			  footnote-to : Text-No; )
Per Cederqvist's avatar
.  
Per Cederqvist committed
616
	;
Linus Tolke's avatar
Linus Tolke committed
617
618
	! Används för att lägga till en fotnotslänk i efterskott.
	! Bara författaren till de två inläggen får göra detta.
Per Cederqvist's avatar
.  
Per Cederqvist committed
619

620
  14=add-member(1)	( conf-no : Conf-No;		! RECOMMENDED
621
622
623
			  pers-no : Pers-No;
			  priority : INT8;
			  where : INT16;	 )
Per Cederqvist's avatar
.  
Per Cederqvist committed
624
	;
625
626
	! Addera angiven person som medlem i angivet möte.
	! Priority är prioriteten på läslistan (0-255).
Linus Tolke's avatar
Linus Tolke committed
627
	! Where är placering på listan, 0 (noll) eller större
628
	! RPC-anropet nummer 14 kan även användas senare för att ändra
Linus Tolke's avatar
Linus Tolke committed
629
	! prioritet och plats på listan.
Per Cederqvist's avatar
.  
Per Cederqvist committed
630

631
  30=add-recipient(1)	( text-no : Text-No;		! RECOMMENDED
632
			  conf-no : Conf-No;
633
			  carbon_copy : BOOL;    )
Per Cederqvist's avatar
.  
Per Cederqvist committed
634
	;
635
636
637
638
639
640
	! Om carbon_copy är sann kommer en cc-recpt att skapas, annars
	! en recpt.  (I tidigare specar angavs det tredje argumentet
	! som "type : Misc-Info" men det var felaktigt.  Det har
	! alltid varit strängen "0" eller "1" som har överförts, och
	! beskrivningen blir snyggare om det tredje argumentet
	! betraktas som en BOOL).
Per Cederqvist's avatar
.  
Per Cederqvist committed
641

642
  45=broadcast(1)		( message : HOLLERITH; )	! OBSOLETE
Per Cederqvist's avatar
.  
Per Cederqvist committed
643
	;
644
645
	! Ett privilegierat anrop. Används ej längre. Ersätts av anrop 53.

646
   3=change-name(1)	( conf-no : Conf-No;		! RECOMMENDED
647
			  new-name : HOLLERITH; )
Per Cederqvist's avatar
.  
Per Cederqvist committed
648
	;
649
	! Byter namn på angivet möte eller person.
Per Cederqvist's avatar
.  
Per Cederqvist committed
650

651
   4=change-what-i-am-doing(1) ( what-am-i-doing : HOLLERITH; ) ! RECOMMENDED
Per Cederqvist's avatar
.  
Per Cederqvist committed
652
653
	;
	! Den medskickade texten kommer att visas i vilka-listan,
Linus Tolke's avatar
Linus Tolke committed
654
	! se även anropet nummer 51.
Per Cederqvist's avatar
.  
Per Cederqvist committed
655

656
  59=create-anonymous-text(3)	( text : HOLLERITH;	! EXPERIMENTAL
657
658
659
660
661
662
663
				  misc-info : ARRAY Misc-Info )
	result : Text-No;
	! create-anonymous-text-result returnerar text nummer noll vid fel.
	! OBS! Endas Misc-Infos 0,1,2,4 kan anges.
	! Detta anrop normalt menat för import av artiklar från
	! andra källor (FTP, WWW, etc) och anses som experimentell.

664
  10=create-conf(1)	( name : HOLLERITH;		! RECOMMENDED
David Byers's avatar
David Byers committed
665
			  type : Any-Conf-Type;  )
Per Cederqvist's avatar
.  
Per Cederqvist committed
666
	result : Conf-No;
667
668
	! En ny konferens med angivet namn och typ skapas.
	! Den skapade konferensens nummer returneras.
Per Cederqvist's avatar
.  
Per Cederqvist committed
669

670
   5=create-person(1)	( name : HOLLERITH;		! RECOMMENDED
671
672
			  passwd : HOLLERITH; )
	result: Pers-No;
Linus Tolke's avatar
Linus Tolke committed
673
	! En ny person skapas med angivet namn och lösenord.
674
675
676
677
	! Den skapade personens personnummer returneras. Den
	! nuvarande personen blir den skapade personens
	! administratör. På de flesta LysKOM-servrar behöver man inte
	! vara inloggad för att kunna skapa en person.
Per Cederqvist's avatar
.  
Per Cederqvist committed
678

679
  28=create-text(1)	( text : HOLLERITH;		! RECOMMENDED
680
			  misc-info : ARRAY Misc-Info )
Per Cederqvist's avatar
.  
Per Cederqvist committed
681
	result : Text-No;
682
683
	! create-text-return returnerar text nummer noll vid fel.
	! OBS! Endast Misc-Infos 0,1,2,4 kan anges.
Per Cederqvist's avatar
.  
Per Cederqvist committed
684

685
  11=delete-conf(1)	( conf : Conf-No; )		! RECOMMENDED
Per Cederqvist's avatar
.  
Per Cederqvist committed
686
	;
Linus Tolke's avatar
Linus Tolke committed
687
	! Utplåna ett möte eller en person.
Per Cederqvist's avatar
.  
Per Cederqvist committed
688

689
  29=delete-text(1)	( text: Text-No; )		! RECOMMENDED
Per Cederqvist's avatar
.  
Per Cederqvist committed
690
691
	;

692
  55=disconnect(1)		( session-no : Session-No; )	! RECOMMENDED
Per Cederqvist's avatar
.  
Per Cederqvist committed
693
	;
694
695
696
	! Koppla ner angiven session. Man kan koppla ner sin egen
	! session (även om man inte är inloggad) och alla andra
	! sessioner där man är administratör för den inloggade personen.
Per Cederqvist's avatar
.  
Per Cederqvist committed
697

698
  42=enable(1)		( ena-level : INT8; )		! RECOMMENDED
Per Cederqvist's avatar
.  
Per Cederqvist committed
699
	;
700
701
702
703
704
705
706
	! Sätter administratörsnivå. Noll (0) betyder återgå till
	! oprivilegierad nivå. Administratörsnivån avgör hur av sina
	! extra privilegier man vill utnyttja; alla kan sätta sin
	! administratörsnivå till 255, men den som inte har någon
	! privilegiebit satt har inngen glädje av att ändra sin
	! administratörsnivå. 

707
  60=find-next-text-no(3)	( start : Text-No; )		! EXPERIMENTAL
708
709
710
711
	result : Text-No;
	! Leta upp nästa textnummer, utgående från start, som man
	! får läsa, oberoende av aktuell konferens.

712
  61=find-previous-text-no(3)	( start : Text-No; )	! EXPERIMENTAL
713
714
715
	result : Text-No;
	! Leta upp föregående textnummer, utgående från start, som man
	! får läsa, oberoende av aktuell konferens.
Per Cederqvist's avatar
.  
Per Cederqvist committed
716

717
  70=get-client-name(6)	( session : Session-No; )	! RECOMMENDED
718
719
720
721
	result : HOLLERITH;
	! Returnerar en sträng som beskriver klienten som används
	! i session. Klientnamn sätts med anrop 69.

722
  71=get-client-version(6) ( session : Session-No; )	! RECOMMENDED
723
724
725
726
	result : HOLLERITH;
	! Returnerar versionen av klienten som används i session,
	! i strängform. Klientversion sätts med anrop 69.

727
  50=get-conf-stat(1)	( conf-no : Conf-No; )		! RECOMMENDED
Per Cederqvist's avatar
.  
Per Cederqvist committed
728
	result : Conference;
Linus Tolke's avatar
Linus Tolke committed
729
	! Returnera mötesstatus för angivet möte
David Byers's avatar
David Byers committed
730
731
732
733
734
 
  78=get-uconf-stat(8)  ( conf-no : Conf-No; )		! EXPERIMENTAL
	result: UConference
	! Returnerar de delar av mötet som lyskomd alltid har i minnet
	! och är därför snabbare än get-conf-stat
Per Cederqvist's avatar
.  
Per Cederqvist committed
735

736
  13=get-conf-stat-old(1) ( conf-no : Conf-No;		! OBSOLETE
737
			  mask : INTEGER;	 )
Per Cederqvist's avatar
.  
Per Cederqvist committed
738
	result : Conference
739
740
	! Används ej längre. Ersatt av anrop 50.

741
  47=get-created-texts(1) ( person : Pers-No;		! RECOMMENDED
742
743
			  first : Local-Text-No;
			  no-of-texts : INTEGER; )
Per Cederqvist's avatar
.  
Per Cederqvist committed
744
	result : Text-List;
745
746
747
748
	! OBS! first har som domän personens egna skrivna texter.
	! Om man vill veta vilka 30 senaste texter person 21 skrivit
	! i godtyckligt möte, och personen skrivit totalt 150 texter,
	! anropar man alltså get-created-texts(21, 121, 30).
Per Cederqvist's avatar
.  
Per Cederqvist committed
749

750
  36=get-info(1)						! RECOMMENDED
751
752
753
754
	;
	result : Info;
	! Returnerar information om servern.

755
  58=get-last-text(3)	( before: Time; )		! EXPERIMENTAL
756
757
758
759
760
761
	;
	result : Text-No;
	! Returnerar numret för texten som skapats närmast före
	! tiden before. Texten är inte nödvändigtvis läsbar. Det är
	! inte ens säkert att den existerar längre.

762
  34=get-map(1)	( conf-no : Conf-No;			! RECOMMENDED
763
764
765
766
767
768
		  first-local-no : Local-Text-No;
		  no-of-texts : INTEGER; )
	result : Text-List;
	! Översätter från lokala textnummer i angiven konferens till
	! globala, som returneras.

769
  23=get-marks(1)						! RECOMMENDED
Per Cederqvist's avatar
.  
Per Cederqvist committed
770
771
772
	;
	Mark-List;

773
  48=get-members(1)	( conf : Conf-No;		! RECOMMENDED
774
775
776
777
778
			  first : INT16;
			  no-of-members : INT16; )
	result : Member-List;
	! Första medlemmen är nummer 0

779
  46=get-membership(1)	( person : Pers-No;		! RECOMMENDED
780
781
782
783
784
785
786
787
788
			  first : INT16;
			  no-of-confs : INT16;
			  mask : BITSTRING (want-read-texts); )
	result : Membership-List;
	! Första konferensen är nummer 0.  Om mask.want-read-texts är
	! falsk (0) kommer innehållet i arrayen read-texts i de
	! medlemskap som begärs inte att överföras (se definitionen av
	! ARRAY ovan).

789
  49=get-person-stat(1)	( person : Pers-No; )		! RECOMMENDED
Per Cederqvist's avatar
.  
Per Cederqvist committed
790
	result : Person;
Linus Tolke's avatar
Linus Tolke committed
791
	! Personstatusen för den angivna personen returneras.
Per Cederqvist's avatar
.  
Per Cederqvist committed
792

793
   6=get-person-stat-old(1)	( person : Pers-No;	! OBSOLETE
794
				  mask : INTEGER;   )
Per Cederqvist's avatar
.  
Per Cederqvist committed
795
	result : Person;
796
	! Används ej längre. Ersatt av anrop 49.
Per Cederqvist's avatar
.  
Per Cederqvist committed
797

798
  54=get-session-info(1)	( session-no : Session-No; )	! OBSOLETE
Per Cederqvist's avatar
.  
Per Cederqvist committed
799
	result : Session-Info;
800
	! Används ej längre. Ersatt av anrop 64.
Per Cederqvist's avatar
.  
Per Cederqvist committed
801

802
  64=get-session-info-ident(4) ( session-no : Session-No; ) ! RECOMMENDED
803
804
	result : Session-Info-Ident;

805
  25=get-text(1)	( text : Text-No;			! RECOMMENDED
806
807
		  start-char : INTEGER;
		  end-char : INTEGER;   )
Per Cederqvist's avatar
.  
Per Cederqvist committed
808
	result : HOLLERITH;
809
810
811
	! Första tecknet i texten är 0. Använd LONG_MAX som end-char
	! för att få hela texten, eller bättre: titta i textstatusen
	! (anrop 26).
Per Cederqvist's avatar
.  
Per Cederqvist committed
812

813
  26=get-text-stat(1)	( text : Text-No; )		! RECOMMENDED
Per Cederqvist's avatar
.  
Per Cederqvist committed
814
815
	result : Text-Stat;

816
  35=get-time(1)					! RECOMMENDED
817
	result : Time;
Per Cederqvist's avatar
.  
Per Cederqvist committed
818
	;
819
	! Lokal tid enligt servern.
Per Cederqvist's avatar
.  
Per Cederqvist committed
820

821
  52=get-unread-confs(1) ( pers-no : Pers-No; )		! RECOMMENDED
822
	result : ARRAY Conf-No;
Linus Tolke's avatar
Linus Tolke committed
823
	! Returnerar en lista på möten i vilka personen kan ha olästa.
824
	! Det finns inga garantier för att det finns olästa i alla dessa
Linus Tolke's avatar
Linus Tolke committed
825
	! möten men listan är i alla fall kortare än medlemsskapet.
Per Cederqvist's avatar
.  
Per Cederqvist committed
826

827
   75=get-version-info(7)					! RECOMMENDED
Per Cederqvist's avatar
Per Cederqvist committed
828
829
830
831
832
	result : Version-Info;
	! Hämta information om vilken protokollversion,
	! serverprogramvara och version av serverprogramvaran som
	! körs.

833
   62=login(4)	( person : Pers-No;			! RECOMMENDED
834
835
		  passwd : HOLLERITH;
		  visibility: BITSTRING ( is-invisible; ); )
Per Cederqvist's avatar
.  
Per Cederqvist committed
836
	;
837
838
839
	! is-invisible anges som 1 om sessionen inte ska synas.
	! Används för externa leverantörer av texter till LysKOM,
	! t.ex. mail.	
Per Cederqvist's avatar
.  
Per Cederqvist committed
840

841
   0=login-old(1) ( person : Pers-No;			! OBSOLETE
842
		  passwd : HOLLERITH; )
Per Cederqvist's avatar
.  
Per Cederqvist committed
843
	;
844
845
	! Inte helt dött, men anrop 62 rekommenderas.

846
   1=logout(1)						! RECOMMENDED
Per Cederqvist's avatar
.  
Per Cederqvist committed
847
	;
848
849
850
851
	! Anropet nummer 1 misslyckas aldrig. Detta loggar ut
	! användaren, men sessionen är fortfarande uppkopplad. Anrop
	! 62 kan sedan användas för att logga in igen.

852
  68=lookup-conf(6)	( name : HOLLERITH; )		! OBSOLETE
853
854
855
856
	result : Conf-No-List;
	! Expandera ett förkortat namn och returnera en lista
	! med nummer på de möten som det kan vara. Det finns ännu ej
	! någon ersättare för detta anrop; se anrop 12.
Per Cederqvist's avatar
.  
Per Cederqvist committed
857

858
  12=lookup-name(1)	( name : HOLLERITH; )		! OBSOLETE
Per Cederqvist's avatar
.  
Per Cederqvist committed
859
	result : Conf-List-Old;
Per Cederqvist's avatar
Per Cederqvist committed
860
	! Ersatt av anrop nummer 76.
861

862
  67=lookup-person(6)	( name : HOLLERITH; )		! OBSOLETE
863
	result : Pers-List;
Linus Tolke's avatar
Linus Tolke committed
864
	! Expandera ett förkortat namn och returnera en lista
865
866
867
	! med nummer på de personer som det kan vara. Det finns ännu
	! ej någon ersättare för detta anrop; se anrop 12.

868
  76=lookup-z-name(7)   ( name : HOLLERITH;		! RECOMMENDED
Per Cederqvist's avatar
Per Cederqvist committed
869
870
			  want_persons : BOOL;
			  want_confs : BOOL; )
871
	result : Conf-Z-Info-List;
Per Cederqvist's avatar
Per Cederqvist committed
872
873
874
875
876
877
	! Expandera ett förkortat namn och returnera en lista med
	! nummer, namn och typ på de möten/personer som det kan vara.
	! Om want_persons är 0 kommer inga personer att personer att
	! finnas i svaret; om want_confs är 0 finns inga möten i
	! svaret. Detta anrop kan göras innan man är inloggad.

878
  27=mark-as-read(1)	( conference : Conf-No;		! RECOMMENDED
879
880
			  texts : ARRAY Local-Text-No; )
	;
Per Cederqvist's avatar
.  
Per Cederqvist committed
881

882
  72=mark-text(4)	( text : Text-No;		! RECOMMENDED
883
			  mark-type : INT8; )
Per Cederqvist's avatar
.  
Per Cederqvist committed
884
	;
885
886
	! Sätter en markör på angiven text. Servern lagrar endast
	! markörvärdet och tolkar det inte.
Per Cederqvist's avatar
.  
Per Cederqvist committed
887

888
  24=mark-text-old(1)	( text : Text-No;		! OBSOLETE
889
			  mark-type : INT8; )
Per Cederqvist's avatar
.  
Per Cederqvist committed
890
	;
891
	! Används ej längre. Använd anrop 72 och 73.
Per Cederqvist's avatar
.  
Per Cederqvist committed
892

893
   2=pepsi(1)	( conference : Conf-No; )		! RECOMMENDED
Per Cederqvist's avatar
.  
Per Cederqvist committed
894
	;
Linus Tolke's avatar
Linus Tolke committed
895
896
897
	! Anropet nummer 2 används för att gå till det angivna mötet.
	! Det engelska namnet är change conference.
	! Namnet "Pepsi" hör till avdelningen mer krystade vitsar.
Per Cederqvist's avatar
.  
Per Cederqvist committed
898

899
   9=query-read-texts(1)	( pers-no : Pers-No;		! RECOMMENDED
900
			  conf-no : Conf-No;  )
Per Cederqvist's avatar
.  
Per Cederqvist committed
901
	result : Membership;
Linus Tolke's avatar
Linus Tolke committed
902
	! Man kan fråga efter olästa utan att logga in.
Per Cederqvist's avatar
.  
Per Cederqvist committed
903

904
  66=re-lookup-conf(5)	( regexp : HOLLERITH; )		! OBSOLETE
905
906
907
908
	result : Conf-No-List;
	! Matcha en regexp enligt ed(1) och returnera en lista
	! med nummer på de möten som det kan vara. Ersatt av anrop 74.

909
  65=re-lookup-person(5) ( regexp : HOLLERITH; )	! OBSOLETE
910
911
912
913
914
	result : Pers-List;
	! Matcha en regexp enligt ed(1) och returnera en lista
	! med nummer på de personer som det kan vara. Ersatt av anrop
	! 74.

915
  74=re-z-lookup(7)	( regexp : HOLLERITH; 		! RECOMMENDED
Per Cederqvist's avatar
Per Cederqvist committed
916
917
918
919
920
921
922
923
924
			  want_persons : BOOL;
			  want_confs : BOOL; )
	result : Conf-Z-Info-List;
	! Matcha en regexp enligt ed(1) och returnera en lista
	! med nummer, namn och typ på de möten och/eller personer som
	! det kan vara.  Om want_persons är 0 kommer inga personer att
	! personer att finnas i svaret; om want_confs är 0 finns inga
	! möten i svaret.  Detta anrop kan göras innan man är inloggad.

925
  53=send-message(1)	( recipient : Conf-No;		! RECOMMENDED
926
927
928
929
930
931
932
933
			  message : HOLLERITH; )
	;
	! Om mottagaren är nummer noll, skickas meddelandet till
	! samtliga inloggade personer. Detta ersätter anrop 45.
	! Om mottagaren är ett mötesnummer, skickas meddelandet
	! till alla medlemmar i mötet som är inloggade. Det går
	! för tillfället inte att sända till enskilda sessioner.

934
  69=set-client-version(6) ( client-name : HOLLERITH;	! RECOMMENDED
935
			  client-version : HOLLERITH; )
Per Cederqvist's avatar
.  
Per Cederqvist committed
936
937
	;

938
  21=set-conf-type(1)	( conf-no : Conf-No;		! RECOMMENDED
David Byers's avatar
David Byers committed
939
			  type : Any-Conf-Type   )
940
941
942
943
	;
	! Mötet conf-no sätts till typen type.  Man kan för närvarande
	! ej ändra letterbox-bitten.

944
  17=set-etc-motd(1)	( conf-no : Conf-No;		! RECOMMENDED
945
			  text-no : Text-No; )
Per Cederqvist's avatar
.  
Per Cederqvist committed
946
	;
Linus Tolke's avatar
Linus Tolke committed
947
	! Sätt lappen text-no på dörren till conf-no.
Per Cederqvist's avatar
.  
Per Cederqvist committed
948
	! Set-presentation och set-etc-motd trollar dessutom
Linus Tolke's avatar
Linus Tolke committed
949
	! med fältet no-of-marks i textstatusen för den gamla
Per Cederqvist's avatar
.  
Per Cederqvist committed
950
951
	! och den nya presentationstexten.

952
  22=set-garb-nice(1)	( conf-no : Conf-No;		! RECOMMENDED
953
			  nice : Garb-Nice;  )
Per Cederqvist's avatar
.  
Per Cederqvist committed
954
	;
Linus Tolke's avatar
Linus Tolke committed
955
	! Inlägg i mötet conf-no sparas i nice dagar innan de raderas.
Per Cederqvist's avatar
.  
Per Cederqvist committed
956

957
958
959
960
961
962
  79=set-info(9)  ( info : Info )                       ! RECOMMENDED
        ;
        ! Sätt information om servern. Serverns versionsnummer ignoreras,
        ! övriga fält sparas i databasen. Detta är ett priviligierat
        ! anrop.

963
  77=set-last-read(8)	( conference : Conf-No;		! EXPERIMENTAL
964
965
966
967
968
			  last-read : Local-Text-No; )
	;
	! Sätt last-read som senast lästa text i conference. Detta
	! anrop är ett alternativ till nr 40, set-unread.

969
  41=set-motd-of-lyskom(1) ( motd : Text-No; )		! RECOMMENDED
Per Cederqvist's avatar
.  
Per Cederqvist committed
970
	;
971
972
973
	! Privilegierat anrop.
	! Texten motd sätts som ny message-of-the-day i LysKOM.

974
   8=set-passwd(1)	( person : Pers-No;		! RECOMMENDED
975
976
			  old-pwd : HOLLERITH;
			  new-pwd : HOLLERITH; )
Per Cederqvist's avatar
.  
Per Cederqvist committed
977
	;
Linus Tolke's avatar
Linus Tolke committed
978
979
980
	! Ge personen ett nytt lösenord. Old-pwd är det (gamla)
	! lösenordet för personen som gör RPC-anropet (inte
	! nödvändigt samma som anges av första argumentet).
Per Cederqvist's avatar
.  
Per Cederqvist committed
981

982
  19=set-permitted-submitters(1) ( conf-no : Conf-No;	! RECOMMENDED
983
				  perm-sub : Conf-No; )
Per Cederqvist's avatar
.  
Per Cederqvist committed
984
	;
985
986
987
988
989
990
	! Om perm-sub är noll (0) har alla rätt att skriva i conf-no.
	! Annars har endast medlemmar i perm-sub rätt att skriva
	! inlägg i mötet. perm-sub kan vara en person eller ett möte.
	! Om någon som inte har rättighet skriver ett inlägg till
	! mötet skickas inlägget automatiskt till supermötet (se 20).

991
  16=set-presentation(1) ( conf-no : Conf-No;		! RECOMMENDED
992
			  text-no : Text-No; )
Per Cederqvist's avatar
.  
Per Cederqvist committed
993
	;
Linus Tolke's avatar
Linus Tolke committed
994
995
	! Ändra presentationen för angivet möte eller person.
	! Ange text-no 0 (noll) för att ta bort presentationen.
Per Cederqvist's avatar
.  
Per Cederqvist committed
996
	! Set-presentation och set-etc-motd trollar dessutom
Linus Tolke's avatar
Linus Tolke committed
997
	! med fältet no-of-marks i textstatusen för den gamla
Per Cederqvist's avatar
.  
Per Cederqvist committed
998
999
	! och den nya presentationstexten.

1000
   7=set-priv-bits(1)	( person : Pers-No;		! RECOMMENDED
1001
			  privileges : Priv-Bits )
Per Cederqvist's avatar
.  
Per Cederqvist committed
1002
	;
Linus Tolke's avatar
Linus Tolke committed
1003
	! Ge eller ta några bittar för den angivna personen.
Per Cederqvist's avatar
.  
Per Cederqvist committed
1004

1005
  20=set-super-conf(1)	( conf-no : Conf-No;		! RECOMMENDED
1006
			  super-conf : Conf-No; )
Per Cederqvist's avatar
.  
Per Cederqvist committed
1007
	;
1008
	! Gör super-conf till supermöte (ej organisatör) för mötet
Linus Tolke's avatar
Linus Tolke committed
1009
1010
	! conf-no. Om conf-no är skrivskyddat, så skickas eventuella
	! brev vidare till supermötet.
Per Cederqvist's avatar
.  
Per Cederqvist committed
1011

1012
  18=set-supervisor(1)	( conf-no : Conf-No;		! RECOMMENDED
1013
			  admin : Conf-No; )
Per Cederqvist's avatar
.  
Per Cederqvist committed
1014
	;
1015
	! Gör alla medlemmar i mötet admin till organisatörer
Linus Tolke's avatar
Linus Tolke committed
1016
	! för mötet conf-no. Admin är typiskt en persons brevlåda.
Per Cederqvist's avatar
.  
Per Cederqvist committed
1017

1018
  40=set-unread(1)	( conference : Conf-No;		! RECOMMENDED
1019
			  no-of-unread : INTEGER; )
Per Cederqvist's avatar
.  
Per Cederqvist committed
1020
	;
Linus Tolke's avatar
Linus Tolke committed
1021
	! Endast läsa no-of-unread senaste i angivet möte.
Per Cederqvist's avatar
.  
Per Cederqvist committed
1022

1023
  57=set-user-area(2)	( pers-no : Pers-No;		! RECOMMENDED
1024
			  user-area : Text-No; )
Per Cederqvist's avatar
.  
Per Cederqvist committed
1025
	;
Linus Tolke's avatar
Linus Tolke committed
1026
1027
	! Angiven text används för att lagra angiven persons
	! variabler. Hur detta går till borde kanske behandlas
Per Cederqvist's avatar
.  
Per Cederqvist committed
1028
1029
	! i ett separat kapitel.

1030
  44=shutdown-kom(1)	( exit-val : INTEGER; )		! RECOMMENDED
Per Cederqvist's avatar
.  
Per Cederqvist committed
1031
	;
1032
1033
1034
	! Detta är ett privilegierat anrop.
	! Sparar alla data och stänger av servern. exit-val
	! används inte för tillfället.
Per Cederqvist's avatar
.  
Per Cederqvist committed
1035

1036
  33=sub-comment(1)	( comment : Text-No;		! RECOMMENDED
1037
			  comment-to : Text-No; )
Per Cederqvist's avatar
.  
Per Cederqvist committed
1038
1039
	;

1040
  38=sub-footnote(1)	( footnote : Text-No;		! RECOMMENDED
1041
			  footnote-to : Text-No; )
Per Cederqvist's avatar
.  
Per Cederqvist committed
1042
1043
	;

1044
  15=sub-member(1)		( conf-no : Conf-No;		! RECOMMENDED
1045
			  pers-no : Pers-No; )
Per Cederqvist's avatar
.  
Per Cederqvist committed
1046
	;
1047
	! Uteslut person från angivet möte.
Per Cederqvist's avatar
.  
Per Cederqvist committed
1048

1049
  31=sub-recipient(1)	( text-no : Text-No;		! RECOMMENDED
1050
			  conf-no : Conf-No; )
Per Cederqvist's avatar
.  
Per Cederqvist committed
1051
1052
	;

1053
  43=sync-kom(1)						! RECOMMENDED
Per Cederqvist's avatar
.  
Per Cederqvist committed
1054
	;
1055
	! Detta är ett privilegierat anrop.  Medför att LysKOM
1056
	! synkar sina databasfiler.
Per Cederqvist's avatar
.  
Per Cederqvist committed
1057

1058
  73=unmark-text(6)	( text : Text-No; )		! RECOMMENDED
Per Cederqvist's avatar
.  
Per Cederqvist committed
1059
1060
	;

1061
  56=who-am-i(1)					! RECOMMENDED
1062
1063
1064
	result : Session-No;
	! Returnerar sessionsnummer för aktuell session.

1065
  51=who-is-on(1)					! OBSOLETE
Per Cederqvist's avatar
.  
Per Cederqvist committed
1066
	result : Who-Info-List;
Linus Tolke's avatar
Linus Tolke committed
1067
	! Svaret är en lista med information om nu aktiva sessioner.
1068
1069
	! Ersatt av anrop 63.

1070
  63=who-is-on-ident(4)					! RECOMMENDED
1071
1072
1073
	result : Who-Info-Ident-List;
	! Svaret är en lista med information om nu aktiva sessioner.

1074
  39=who-is-on-old(1)					! OBSOLETE
1075
1076
	result : Who-Info-List-Old;
	! Används ej längre. Använd anrop 63.
Per Cederqvist's avatar
.  
Per Cederqvist committed
1077
1078
)

1079
1080
** RPC-anrop i nummerordning

Linus Tolke's avatar
Linus Tolke committed
1081
De anrop vars nummer i listan nedan följs av en asterisk (*) är
1082
1083
1084
1085
ersatta av modernare varianter.

     Nummer RPC-Anrop                Nummer RPC-Anrop
     ------------------------------------------------------
Per Cederqvist's avatar
Per Cederqvist committed
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
         0* login-old			39* who-is-on-old
	 1  logout		        40  set-unread
	 2  pepsi		        41  set-motd-of-lyskom
	 3  change-name		        42  enable
	 4  change-what-i-am-doing      43  sync-kom
	 5  create-person	        44  shutdown-kom
	 6* get-person-stat-old	        45  broadcast
	 7  set-priv-bits	        46  get-membership
	 8  set-passwd		        47  get-created-texts
	 9  query-read-texts	        48  get-members
	10  create-conf		        49  get-person-stat
	11  delete-conf		        50  get-conf-stat
	12* lookup-name		        51  who-is-on
	13* get-conf-stat-old	        52  get-unread-confs
	14  add-member		        53  send-message
	15  sub-member		        54  get-session-info
	16  set-presentation	        55  disconnect
	17  set-etc-motd		56  who-am-i
	18  set-supervisor	        57  set-user-area
	19  set-permitted-submitters    58  get-last-text
	20  set-super-conf	        59  create-anonymous-text
	21  set-conf-type	        60  find-next-text-no
	22  set-garb-nice	        61  find-previous-text-no
	23  get-marks		        62  login
	24* mark-text-old	        63  who-is-on-ident
	25  get-text		        64  get-session-info-ident
	26  get-text-stat	        65  re-lookup-person
	27  mark-as-read		66  re-lookup-conf
	28  create-text		        67  lookup-person
	29  delete-text		        68  lookup-conf
	30  add-recipient	        69  set-client-version
	31  sub-recipient	        70  get-client-name
	32  add-comment		        71  get-client-version
	33  sub-comment		        72  mark-text
	34  get-map                     73  unmark-text
1121
1122
1123
	35  get-time                    74  re-z-lookup
	36  get-info                    75  get-version-info
	37  add-footnote		76  lookup-z-name
1124
	38  sub-footnote		77  set-last-read
Per Cederqvist's avatar
.  
Per Cederqvist committed
1125
1126
1127
	------------------------------------------------------


1128
* Konstruerade datatyper
Per Cederqvist's avatar
.  
Per Cederqvist committed
1129

Linus Tolke's avatar
Linus Tolke committed
1130
1131
Här definieras de datatyper som sedan används i RPC-anrop från
klienten till servern och i asynkrona anrop från servern till
Per Cederqvist's avatar
.  
Per Cederqvist committed
1132
1133
1134
1135
klienten. Datatyperna listas i bokstavsordning.


! Pers-no and Conf-no are u_shorts in the same domain.
1136
1137
Conf-No ::= INT16;
Conf-No-List ::= ARRAY Conf-No;
Per Cederqvist's avatar
.  
Per Cederqvist committed
1138
1139
1140
1141

Conf-List ::= ARRAY ( conference : Conf-No;
		      type : Conf-Type;	    )

Linus Tolke's avatar
Linus Tolke committed
1142
! Som svar på anrop 12 ges Conf-List-Old, som inte kan formuleras
1143
! med den här BNF-grammatiken. Använd anrop 67 eller 68 i stället.
Per Cederqvist's avatar
.  
Per Cederqvist committed
1144
1145
1146
! Conf-List-Old:   "3 { 3 45 62 } { 1001 0000 1001 }"
! Conf-List:	   "3 { 3 1001  45 0000  62 1001 }"

David Byers's avatar
David Byers committed
1147