prot-A.txt 46.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
*** 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
Per Cederqvist's avatar
Per Cederqvist committed
152
	63=who-is-on-ident
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
	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
LysKOM Protokoll A kan köras ovanpå vilken tillförlitlig dubbelriktad
192
8-bitars bytekanal som helst. Idag körs det ovanpå TCP/IP. På Lysator
193
används telnetport 4894 på IP-host kom.lysator.liu.se.  Data i
Linus Tolke's avatar
Linus Tolke committed
194
195
196
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
197
198


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

Linus Tolke's avatar
Linus Tolke committed
201
202
203
204
205
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
206
207
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
208
209
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
210
211


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

214
215
216
217
218
219
220
221
222
Dataelementen åtskiljs av (ett eller fler) mellanslag (ASCII 0x20).
Varje meddelande avslutas med ett line-feed (0xA).

En server bör ignorera return (0xD) och tab (0x9).  Den bör dessutom
tåla att ett meddelande avslutas med något annat än line-feed, och den
bör tåla att line-feed finns innuti medelanden.  Äldre versioner av
denna specifikation tillät nämligen att dataelementen särskiljdes av
ett eller flera return, tab, line-feed eller space, och den krävde
inte att meddelandena skulle avslutas med line-feed.
Per Cederqvist's avatar
.  
Per Cederqvist committed
223

224
225
** Heltal

Per Cederqvist's avatar
Per Cederqvist committed
226
227
228
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
229
anses synonym med INT32.
Per Cederqvist's avatar
.  
Per Cederqvist committed
230

231
232
** Strängar

Linus Tolke's avatar
Linus Tolke committed
233
234
235
236
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
237

238
239
** Bit-strängar

Linus Tolke's avatar
Linus Tolke committed
240
241
242
243
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
244
245
246
syntaxen.

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

250
251
** Arrayer

Linus Tolke's avatar
Linus Tolke committed
252
253
254
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
255
och slutligen tecknet "}". Tecknen "{" och "}" fyller egentligen ingen
Linus Tolke's avatar
Linus Tolke committed
256
funktion, men underlättar när man kör protokollet "rått".  Exempel:
Per Cederqvist's avatar
.  
Per Cederqvist committed
257
258

	hackers : ARRAY HOLLERITH;
259
260
261
262
263
264
265
	! 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
266

267
268
** Selection

Linus Tolke's avatar
Linus Tolke committed
269
270
271
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
272
273
274
Exempel:

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

279
280
** RPC

Linus Tolke's avatar
Linus Tolke committed
281
282
283
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
284
285
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
286
287

	phrases : RPC (
288
289
290
	  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
291
	)
292
	! t.ex. "1 23"->"498" "3"->"4HLars" "2 1"->"1430"
293
294
295
296
	! cost och time infördes i protokollversion 6, medan
	! name infördes i protokollversion 7.

** Struct/record
Per Cederqvist's avatar
.  
Per Cederqvist committed
297
298

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


303
* Dialog
Per Cederqvist's avatar
.  
Per Cederqvist committed
304

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

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

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

312
	uppkopplingsbekräftelse : "LysKOM\n"
Per Cederqvist's avatar
.  
Per Cederqvist committed
313

314
315
316
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
317
318
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
319

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

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

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

Linus Tolke's avatar
Linus Tolke committed
333
eller, om något misslyckades, med
Per Cederqvist's avatar
.  
Per Cederqvist committed
334
335
336
337
338
339
340
341

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

Linus Tolke's avatar
Linus Tolke committed
342
343
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
344
345
346
svarar servern med "=" eller "%" och ref-number. 


347
* Säkerhetsnivåer och privilegiebittar
Per Cederqvist's avatar
.  
Per Cederqvist committed
348

Linus Tolke's avatar
Linus Tolke committed
349
350
351
352
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
353
354
355
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
356

Linus Tolke's avatar
Linus Tolke committed
357
	Bitt	Nivå	Rättighet
Per Cederqvist's avatar
.  
Per Cederqvist committed
358
359
	------------------------------------------------------
	wheel				Normalt ej tilldelad
Linus Tolke's avatar
Linus Tolke committed
360
361
362
363
364
		  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
365
366
	------------------------------------------------------
	admin				Normalt ej tilldelad
Linus Tolke's avatar
Linus Tolke committed
367
368
369
370
		  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
371
			personer
Linus Tolke's avatar
Linus Tolke committed
372
373
374
375
		  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
376
377
		  4	Addera/subtrahera medlemmar
		  4	Addera/subtrahera mottagare till texter
Linus Tolke's avatar
Linus Tolke committed
378
		  5	Sätta supermöte
Per Cederqvist's avatar
.  
Per Cederqvist committed
379
		  5	Radera texter
Linus Tolke's avatar
Linus Tolke committed
380
		  6	Sätta administratör
Per Cederqvist's avatar
.  
Per Cederqvist committed
381
382
	------------------------------------------------------
	statistic			Normalt ej tilldelad
Linus Tolke's avatar
Linus Tolke committed
383
384
		  2	Läsa statistikdelarna av Person-structen,
			även om de är skyddade.
Per Cederqvist's avatar
.  
Per Cederqvist committed
385
386
	------------------------------------------------------
	create_conf			Normalt tilldelad
Linus Tolke's avatar
Linus Tolke committed
387
		  0	Skapa möten
Per Cederqvist's avatar
.  
Per Cederqvist committed
388
389
390
391
392
	------------------------------------------------------
	create_pers			Normalt tilldelad
		  0	Skapa personer
	------------------------------------------------------

Linus Tolke's avatar
Linus Tolke committed
393
394
395
396
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
397
398
399
protokollet.


400
* Felkoder
Per Cederqvist's avatar
.  
Per Cederqvist committed
401

Linus Tolke's avatar
Linus Tolke committed
402
403
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
404
405
406
407
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
408
409
410

	Error-No : SELECTION (
	  0=no-error;		! No error has occured
411
          ! Felkod 1 används ej.
Per Cederqvist's avatar
.  
Per Cederqvist committed
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
	  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
432
	 *21=pers-exists;	! Already exists 
Per Cederqvist's avatar
.  
Per Cederqvist committed
433
434
	  22=secret-public;	! Cannot be secret and !rd-prot
	  23=letter-box;	! Cannot change letter-box flag
435
	  24=ldb-err;		! Database is corrupted.
Per Cederqvist's avatar
.  
Per Cederqvist committed
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
	  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
455
456
	 *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
457
458
				! can't understand client.
	  42=undef-session;	! This session doesn't exist
459
460
461
	  43=regex-error;	! Regexp compilation failed
	  44=not-marked;	! Attempt to unmark an unmarked text
	  45=tempfail;		! Temporary failure.  Try again later
462
463
	  46=long-array;	! An array sent to the server was too
				! big.
Per Cederqvist's avatar
.  
Per Cederqvist committed
464
465
466
467
468
469
470
	)


	Nummer	Felmeddelande	Nummer	Felmeddelande
	------------------------------------------------------
	    11	access		    28	already-comment
	    29	already-footnote    27	already-recipient
471
	    18	bad-name	    41*	client-is-crazy
Per Cederqvist's avatar
.  
Per Cederqvist committed
472
473
474
475
476
477
478
479
480
481
482
	    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
483
484
485
486
487
488
489
490
491
	    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
492
493
494
	------------------------------------------------------


495
* Asynkrona anrop
Per Cederqvist's avatar
.  
Per Cederqvist committed
496

Linus Tolke's avatar
Linus Tolke committed
497
498
499
500
501
502
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
503
listas de asynkrona anropen i nummerordning, men en alfabetiskt
Linus Tolke's avatar
Linus Tolke committed
504
sorterad lista följer strax därpå.
Per Cederqvist's avatar
.  
Per Cederqvist committed
505
506
507
508
509
510
511


asynk-meddelande ::= (
  ":";
  antal-params:INTEGER;
  meddelande : SELECTION (
    0=new-text	( text-no : Text-No;
Per Cederqvist's avatar
Per Cederqvist committed
512
		  text-stat : Text-Stat )
Per Cederqvist's avatar
.  
Per Cederqvist committed
513
	! En ny text har skapats.
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
	;
    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
529
530
		  old-name : HOLLERITH;
		  new-name : HOLLERITH; )
531
532
533
534
535
536
537
538
539
540
541
542
	! 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
543
544
    9=login	( pers-no : Pers-No;
		  session-no : Session-No; )
545
546
547
548
549
550
551
	! 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
552
	! Asynkrona anropet nummer 11 betyder att någon har
Per Cederqvist's avatar
.  
Per Cederqvist committed
553
	! misslyckats logga in, eftersom servern inte har fler
Linus Tolke's avatar
Linus Tolke committed
554
555
	! lediga förbindelser. Den ansvarskännande användaren
	! kan nu välja att logga ut för att bereda plats.
556
557
558
559
	;
    12=send-message	( recipient : Conf-No;
			  sender : Pers-No;
			  message : HOLLERITH;  )
Linus Tolke's avatar
Linus Tolke committed
560
561
562
	! 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
563
564
565
566
	! 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
567
		  session-no : Session-No; )
568
569
	! Personens pers-no session session-no har loggat ut.
	;
Per Cederqvist's avatar
.  
Per Cederqvist committed
570
571
572
573
  )
)

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

	   Nr	Asynkront anrop	   Nr	Asynkront anrop
	------------------------------------------------------
579
580
581
582
583
584
585
	    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
586
587
588
	------------------------------------------------------


589
* RPC-anrop
Per Cederqvist's avatar
.  
Per Cederqvist committed
590
591
592

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
593
594
595
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
596
597
598
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
599

600
601
602
603
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
604
605

** RPC-anrop i alfabetisk ordning
Per Cederqvist's avatar
.  
Per Cederqvist committed
606
607

commands : RPC (
608
  ! Anropsnummer och -namn(protokollversion)
Linus Tolke's avatar
Linus Tolke committed
609
610
	! Datayp för anropsparameter
	! Datatyp för returvärde
Per Cederqvist's avatar
.  
Per Cederqvist committed
611
	
612
613
614
615
616
617
618
619
620
  80=accept-async(9)    ( request-list : ARRAY INT32 )   ! RECOMMENDED
        ;
        ! Används för att tala om för servern vilka asynkrona
        ! meddelanden man vill ta emot. Meddelandenummer som finns med
        ! i accept-list är man intresserad av, övriga bryr man sig
        ! inte om. Serven skall skicka meddelanden som finns med i
        ! request-list när det är tillämpligt, men det står den fritt
        ! att även skicka meddelanden som inte ingår i listan.

621
  32=add-comment(1)	( comment : Text-No;		! RECOMMENDED
622
			  comment-to : Text-No; )
Per Cederqvist's avatar
.  
Per Cederqvist committed
623
	;
Linus Tolke's avatar
Linus Tolke committed
624
625
626
	! 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
627

628
  37=add-footnote(1)	( footnote : Text-No;		! RECOMMENDED
629
			  footnote-to : Text-No; )
Per Cederqvist's avatar
.  
Per Cederqvist committed
630
	;
Linus Tolke's avatar
Linus Tolke committed
631
632
	! 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
633

634
  14=add-member(1)	( conf-no : Conf-No;		! RECOMMENDED
635
636
637
			  pers-no : Pers-No;
			  priority : INT8;
			  where : INT16;	 )
Per Cederqvist's avatar
.  
Per Cederqvist committed
638
	;
639
640
	! Addera angiven person som medlem i angivet möte.
	! Priority är prioriteten på läslistan (0-255).
Linus Tolke's avatar
Linus Tolke committed
641
	! Where är placering på listan, 0 (noll) eller större
642
	! RPC-anropet nummer 14 kan även användas senare för att ändra
Linus Tolke's avatar
Linus Tolke committed
643
	! prioritet och plats på listan.
Per Cederqvist's avatar
.  
Per Cederqvist committed
644

645
  30=add-recipient(1)	( text-no : Text-No;		! RECOMMENDED
646
			  conf-no : Conf-No;
647
			  carbon_copy : BOOL;    )
Per Cederqvist's avatar
.  
Per Cederqvist committed
648
	;
649
650
651
652
653
654
	! 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
655

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

660
   3=change-name(1)	( conf-no : Conf-No;		! RECOMMENDED
661
			  new-name : HOLLERITH; )
Per Cederqvist's avatar
.  
Per Cederqvist committed
662
	;
663
	! Byter namn på angivet möte eller person.
Per Cederqvist's avatar
.  
Per Cederqvist committed
664

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

670
  59=create-anonymous-text(3)	( text : HOLLERITH;	! EXPERIMENTAL
671
672
673
674
675
676
677
				  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.

678
  10=create-conf(1)	( name : HOLLERITH;		! RECOMMENDED
David Byers's avatar
David Byers committed
679
			  type : Any-Conf-Type;  )
Per Cederqvist's avatar
.  
Per Cederqvist committed
680
	result : Conf-No;
681
682
	! En ny konferens med angivet namn och typ skapas.
	! Den skapade konferensens nummer returneras.
Per Cederqvist's avatar
.  
Per Cederqvist committed
683

684
   5=create-person(1)	( name : HOLLERITH;		! RECOMMENDED
685
686
			  passwd : HOLLERITH; )
	result: Pers-No;
Linus Tolke's avatar
Linus Tolke committed
687
	! En ny person skapas med angivet namn och lösenord.
688
689
690
691
	! 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
692

693
  28=create-text(1)	( text : HOLLERITH;		! RECOMMENDED
694
			  misc-info : ARRAY Misc-Info )
Per Cederqvist's avatar
.  
Per Cederqvist committed
695
	result : Text-No;
696
697
	! 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
698

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

703
  29=delete-text(1)	( text: Text-No; )		! RECOMMENDED
Per Cederqvist's avatar
.  
Per Cederqvist committed
704
705
	;

706
  55=disconnect(1)		( session-no : Session-No; )	! RECOMMENDED
Per Cederqvist's avatar
.  
Per Cederqvist committed
707
	;
708
709
710
	! 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
711

712
  42=enable(1)		( ena-level : INT8; )		! RECOMMENDED
Per Cederqvist's avatar
.  
Per Cederqvist committed
713
	;
714
715
716
717
718
719
720
	! 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å. 

721
  60=find-next-text-no(3)	( start : Text-No; )		! RECOMMENDED
722
723
724
725
	result : Text-No;
	! Leta upp nästa textnummer, utgående från start, som man
	! får läsa, oberoende av aktuell konferens.

726
  61=find-previous-text-no(3)	( start : Text-No; )	! RECOMMENDED
727
728
729
	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
730

731
  70=get-client-name(6)	( session : Session-No; )	! RECOMMENDED
732
733
734
735
	result : HOLLERITH;
	! Returnerar en sträng som beskriver klienten som används
	! i session. Klientnamn sätts med anrop 69.

736
  71=get-client-version(6) ( session : Session-No; )	! RECOMMENDED
737
738
739
740
	result : HOLLERITH;
	! Returnerar versionen av klienten som används i session,
	! i strängform. Klientversion sätts med anrop 69.

741
  50=get-conf-stat(1)	( conf-no : Conf-No; )		! RECOMMENDED
Per Cederqvist's avatar
.  
Per Cederqvist committed
742
	result : Conference;
Linus Tolke's avatar
Linus Tolke committed
743
	! Returnera mötesstatus för angivet möte
David Byers's avatar
David Byers committed
744
745
746
747
748
 
  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
749

750
  13=get-conf-stat-old(1) ( conf-no : Conf-No;		! OBSOLETE
751
			  mask : INTEGER;	 )
Per Cederqvist's avatar
.  
Per Cederqvist committed
752
	result : Conference
753
754
	! Används ej längre. Ersatt av anrop 50.

755
  47=get-created-texts(1) ( person : Pers-No;		! RECOMMENDED
756
757
			  first : Local-Text-No;
			  no-of-texts : INTEGER; )
Per Cederqvist's avatar
.  
Per Cederqvist committed
758
	result : Text-List;
759
760
761
762
	! 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
763

764
  36=get-info(1)						! RECOMMENDED
765
766
767
768
	;
	result : Info;
	! Returnerar information om servern.

769
  58=get-last-text(3)	( before: Time; )		! EXPERIMENTAL
770
771
772
773
774
775
	;
	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.

776
  34=get-map(1)	( conf-no : Conf-No;			! RECOMMENDED
777
778
779
780
781
782
		  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.

783
  23=get-marks(1)						! RECOMMENDED
Per Cederqvist's avatar
.  
Per Cederqvist committed
784
785
786
	;
	Mark-List;

787
  48=get-members(1)	( conf : Conf-No;		! RECOMMENDED
788
789
790
791
792
			  first : INT16;
			  no-of-members : INT16; )
	result : Member-List;
	! Första medlemmen är nummer 0

793
  46=get-membership(1)	( person : Pers-No;		! RECOMMENDED
794
795
796
797
798
799
800
801
802
			  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).

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

807
   6=get-person-stat-old(1)	( person : Pers-No;	! OBSOLETE
808
				  mask : INTEGER;   )
Per Cederqvist's avatar
.  
Per Cederqvist committed
809
	result : Person;
810
	! Används ej längre. Ersatt av anrop 49.
Per Cederqvist's avatar
.  
Per Cederqvist committed
811

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

816
  64=get-session-info-ident(4) ( session-no : Session-No; ) ! RECOMMENDED
817
818
	result : Session-Info-Ident;

819
  25=get-text(1)	( text : Text-No;			! RECOMMENDED
820
821
		  start-char : INTEGER;
		  end-char : INTEGER;   )
Per Cederqvist's avatar
.  
Per Cederqvist committed
822
	result : HOLLERITH;
823
824
825
	! 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
826

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

830
  35=get-time(1)					! RECOMMENDED
831
	result : Time;
Per Cederqvist's avatar
.  
Per Cederqvist committed
832
	;
833
	! Lokal tid enligt servern.
Per Cederqvist's avatar
.  
Per Cederqvist committed
834

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

841
   75=get-version-info(7)					! RECOMMENDED
Per Cederqvist's avatar
Per Cederqvist committed
842
843
844
845
846
	result : Version-Info;
	! Hämta information om vilken protokollversion,
	! serverprogramvara och version av serverprogramvaran som
	! körs.

847
   62=login(4)	( person : Pers-No;			! RECOMMENDED
848
849
		  passwd : HOLLERITH;
		  visibility: BITSTRING ( is-invisible; ); )
Per Cederqvist's avatar
.  
Per Cederqvist committed
850
	;
851
852
853
	! 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
854

855
   0=login-old(1) ( person : Pers-No;			! OBSOLETE
856
		  passwd : HOLLERITH; )
Per Cederqvist's avatar
.  
Per Cederqvist committed
857
	;
858
859
	! Inte helt dött, men anrop 62 rekommenderas.

860
   1=logout(1)						! RECOMMENDED
Per Cederqvist's avatar
.  
Per Cederqvist committed
861
	;
862
863
864
865
	! 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.

866
  68=lookup-conf(6)	( name : HOLLERITH; )		! OBSOLETE
867
868
869
870
	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
871

872
  12=lookup-name(1)	( name : HOLLERITH; )		! OBSOLETE
Per Cederqvist's avatar
.  
Per Cederqvist committed
873
	result : Conf-List-Old;
Per Cederqvist's avatar
Per Cederqvist committed
874
	! Ersatt av anrop nummer 76.
875

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

882
  76=lookup-z-name(7)   ( name : HOLLERITH;		! RECOMMENDED
Per Cederqvist's avatar
Per Cederqvist committed
883
884
			  want_persons : BOOL;
			  want_confs : BOOL; )
885
	result : Conf-Z-Info-List;
Per Cederqvist's avatar
Per Cederqvist committed
886
887
888
889
890
891
	! 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.

892
  27=mark-as-read(1)	( conference : Conf-No;		! RECOMMENDED
893
894
			  texts : ARRAY Local-Text-No; )
	;
Per Cederqvist's avatar
.  
Per Cederqvist committed
895

896
  72=mark-text(4)	( text : Text-No;		! RECOMMENDED
897
			  mark-type : INT8; )
Per Cederqvist's avatar
.  
Per Cederqvist committed
898
	;
899
900
	! 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
901

902
  24=mark-text-old(1)	( text : Text-No;		! OBSOLETE
903
			  mark-type : INT8; )
Per Cederqvist's avatar
.  
Per Cederqvist committed
904
	;
905
	! Används ej längre. Använd anrop 72 och 73.
Per Cederqvist's avatar
.  
Per Cederqvist committed
906

907
   2=pepsi(1)	( conference : Conf-No; )		! RECOMMENDED
Per Cederqvist's avatar
.  
Per Cederqvist committed
908
	;
Linus Tolke's avatar
Linus Tolke committed
909
910
911
	! 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
912

913
914
915
916
917
918
  81=query-async(9)     ( )                             ! RECOMMENDED
        result : ARRAY INT32
        ! Returnerar en lista av vilka asynkrona meddelanden man har
        ! begärt att ta emot. Ingenting garanterar att man sedan kan
        ! stänga av meddelanden som finns med i resultatet.

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

924
  66=re-lookup-conf(5)	( regexp : HOLLERITH; )		! OBSOLETE
925
926
927
928
	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.

929
  65=re-lookup-person(5) ( regexp : HOLLERITH; )	! OBSOLETE
930
931
932
933
934
	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.

935
  74=re-z-lookup(7)	( regexp : HOLLERITH; 		! RECOMMENDED
Per Cederqvist's avatar
Per Cederqvist committed
936
937
938
939
940
941
942
943
944
			  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.

945
  53=send-message(1)	( recipient : Conf-No;		! RECOMMENDED
946
947
948
949
950
951
952
953
			  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.

954
  69=set-client-version(6) ( client-name : HOLLERITH;	! RECOMMENDED
955
			  client-version : HOLLERITH; )
Per Cederqvist's avatar
.  
Per Cederqvist committed
956
957
	;

958
  21=set-conf-type(1)	( conf-no : Conf-No;		! RECOMMENDED
David Byers's avatar
David Byers committed
959
			  type : Any-Conf-Type   )
960
961
962
963
	;
	! Mötet conf-no sätts till typen type.  Man kan för närvarande
	! ej ändra letterbox-bitten.

964
  17=set-etc-motd(1)	( conf-no : Conf-No;		! RECOMMENDED
965
			  text-no : Text-No; )
Per Cederqvist's avatar
.  
Per Cederqvist committed
966
	;
Linus Tolke's avatar
Linus Tolke committed
967
	! Sätt lappen text-no på dörren till conf-no.
Per Cederqvist's avatar
.  
Per Cederqvist committed
968
	! Set-presentation och set-etc-motd trollar dessutom
Linus Tolke's avatar
Linus Tolke committed
969
	! med fältet no-of-marks i textstatusen för den gamla
Per Cederqvist's avatar
.  
Per Cederqvist committed
970
971
	! och den nya presentationstexten.

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

977
978
979
980
981
982
  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.

983
  77=set-last-read(8)	( conference : Conf-No;		! EXPERIMENTAL
984
985
986
987
988
			  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.

989
  41=set-motd-of-lyskom(1) ( motd : Text-No; )		! RECOMMENDED
Per Cederqvist's avatar
.  
Per Cederqvist committed
990
	;
991
992
993
	! Privilegierat anrop.
	! Texten motd sätts som ny message-of-the-day i LysKOM.

994
   8=set-passwd(1)	( person : Pers-No;		! RECOMMENDED
995
996
			  old-pwd : HOLLERITH;
			  new-pwd : HOLLERITH; )
Per Cederqvist's avatar
.  
Per Cederqvist committed
997
	;
Linus Tolke's avatar
Linus Tolke committed
998
999
1000
	! 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
1001

1002
  19=set-permitted-submitters(1) ( conf-no : Conf-No;	! RECOMMENDED
1003
				  perm-sub : Conf-No; )
Per Cederqvist's avatar
.  
Per Cederqvist committed
1004
	;
1005
1006
1007
1008
1009
1010
	! 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).

1011
  16=set-presentation(1) ( conf-no : Conf-No;		! RECOMMENDED
1012
			  text-no : Text-No; )
Per Cederqvist's avatar
.  
Per Cederqvist committed
1013
	;
Linus Tolke's avatar
Linus Tolke committed
1014
1015
	! Ä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
1016
	! Set-presentation och set-etc-motd trollar dessutom
Linus Tolke's avatar
Linus Tolke committed
1017
	! med fältet no-of-marks i textstatusen för den gamla
Per Cederqvist's avatar
.  
Per Cederqvist committed
1018
1019
	! och den nya presentationstexten.

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

1025
  20=set-super-conf(1)	( conf-no : Conf-No;		! RECOMMENDED
1026
			  super-conf : Conf-No; )
Per Cederqvist's avatar
.  
Per Cederqvist committed
1027
	;
1028
	! Gör super-conf till supermöte (ej organisatör) för mötet
Linus Tolke's avatar
Linus Tolke committed
1029
1030
	! conf-no. Om conf-no är skrivskyddat, så skickas eventuella
	! brev vidare till supermötet.
Per Cederqvist's avatar
.  
Per Cederqvist committed
1031

1032
  18=set-supervisor(1)	( conf-no : Conf-No;		! RECOMMENDED
1033
			  admin : Conf-No; )
Per Cederqvist's avatar
.  
Per Cederqvist committed
1034
	;
1035
	! Gör alla medlemmar i mötet admin till organisatörer
Linus Tolke's avatar
Linus Tolke committed
1036
	! för mötet conf-no. Admin är typiskt en persons brevlåda.
Per Cederqvist's avatar
.  
Per Cederqvist committed
1037

1038
  40=set-unread(1)	( conference : Conf-No;		! RECOMMENDED
1039
			  no-of-unread : INTEGER; )
Per Cederqvist's avatar
.  
Per Cederqvist committed
1040
	;
Linus Tolke's avatar
Linus Tolke committed
1041
	! Endast läsa no-of-unread senaste i angivet möte.
Per Cederqvist's avatar
.  
Per Cederqvist committed
1042

1043
  57=set-user-area(2)	( pers-no : Pers-No;		! RECOMMENDED
1044
			  user-area : Text-No; )
Per Cederqvist's avatar
.  
Per Cederqvist committed
1045
	;
Linus Tolke's avatar
Linus Tolke committed
1046
1047
	! 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
1048
1049
	! i ett separat kapitel.

1050
  44=shutdown-kom(1)	( exit-val : INTEGER; )		! RECOMMENDED
Per Cederqvist's avatar
.  
Per Cederqvist committed
1051
	;
1052
1053
1054
	! 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
1055

1056
  33=sub-comment(1)	( comment : Text-No;		! RECOMMENDED
1057
			  comment-to : Text-No; )
Per Cederqvist's avatar
.  
Per Cederqvist committed
1058
1059
	;

1060
  38=sub-footnote(1)	( footnote : Text-No;		! RECOMMENDED
1061
			  footnote-to : Text-No; )
Per Cederqvist's avatar
.  
Per Cederqvist committed
1062
1063
	;

1064
  15=sub-member(1)		( conf-no : Conf-No;		! RECOMMENDED
1065
			  pers-no : Pers-No; )
Per Cederqvist's avatar
.  
Per Cederqvist committed
1066
	;
1067
	! Uteslut person från angivet möte.
Per Cederqvist's avatar
.  
Per Cederqvist committed
1068

1069
  31=sub-recipient(1)	( text-no : Text-No;		! RECOMMENDED
1070
			  conf-no : Conf-No; )
Per Cederqvist's avatar
.  
Per Cederqvist committed
1071
1072
	;

1073
  43=sync-kom(1)						! RECOMMENDED
Per Cederqvist's avatar
.  
Per Cederqvist committed
1074
	;
1075
	! Detta är ett privilegierat anrop.  Medför att LysKOM
1076
	! synkar sina databasfiler.
Per Cederqvist's avatar
.  
Per Cederqvist committed
1077

1078
  73=unmark-text(6)	( text : Text-No; )		! RECOMMENDED
Per Cederqvist's avatar
.  
Per Cederqvist committed
1079
1080
	;

1081
  56=who-am-i(1)					! RECOMMENDED
1082
1083
1084
	result : Session-No;
	! Returnerar sessionsnummer för aktuell session.

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

1090
  63=who-is-on-ident(4)					! RECOMMENDED
1091
1092
1093
	result : Who-Info-Ident-List;
	! Svaret är en lista med information om nu aktiva sessioner.

1094
  39=who-is-on-old(1)					! OBSOLETE
1095
1096
	result : Who-Info-List-Old;
	! Används ej längre. Använd anrop 63.
Per Cederqvist's avatar
.  
Per Cederqvist committed
1097
1098
)

1099
1100
** RPC-anrop i nummerordning

Linus Tolke's avatar
Linus Tolke committed
1101
De anrop vars nummer i listan nedan följs av en asterisk (*) är
1102
1103
1104
1105
ersatta av modernare varianter.

     Nummer RPC-Anrop                Nummer RPC-Anrop
     ------------------------------------------------------
Per Cederqvist's avatar
Per Cederqvist committed
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
         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
1141
1142
1143
	35  get-time                    74  re-z-lookup
	36  get-info                    75  get-version-info
	37  add-footnote		76  lookup-z-name
1144
	38  sub-footnote		77  set-last-read
Per Cederqvist's avatar
.  
Per Cederqvist committed
1145
1146
1147
	------------------------------------------------------


1148
* Konstruerade datatyper
Per Cederqvist's avatar
.  
Per Cederqvist committed
1149