Subversion Repositories wimsdev

Rev

Rev 17389 | Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
17386 guerimand 1
!! ---------- process manage of anonymous connexion to example class
2
!! each connexion use a different login
3
!! login is generated if necessary
4
!! anonymous connexion is limited to 50% of class capacity
5
!! other is reserved to registered login
6
!! wims_read_parm input parameters are
7
!!     first item : login of user (exit if not anonymous)
8
!!     second item : class number (exit if not <=9999 )
9
!! process exit if no place left
10
!! output=$output_user
11
 
12
!distribute item $wims_read_parm into c_,u_
13
t_=!char 1 to 9 of $u_
14
t_=!lower $t_
15
n_=!char 10 to -1 of $u_
16
!default n_=0
17
!if NaN notin $[1*$n_] and $t_=anonymous
18
  dispo=!record 2 of wimshome/log/classes/$c_/freelogin
19
  time=!record 1 of wimshome/log/classes/$c_/freelogin
20
  !if $dispo=$empty and ($time=$empty or $wims_nowseconds>$time+600)
21
    ltuser=!sh cd $wims_home/sessions;\
22
               s=`grep wims_class=$c_ ./*/var.stat | cut -d: -f1`;\
23
               grep "wims_user=" $$s | cut -d= -f2;
24
    !if $ltuser!=$empty
25
      ltuser=!words2items $ltuser
26
      ltuser=!replace anonymous by $empty in $ltuser
27
    !endif
28
    cllimit=!defof class_limit in wimshome/log/classes/$c_/.def
29
    !if $cllimit=$empty
30
      cllimit=!defof class_user_limit in wimshome/log/wims.conf
31
      !if $cllimit=$empty
32
        cllimit=!defof DF_class_limit in wimshome/public_html/bases/sys/defaults.conf
33
      !endif
34
    !endif
35
    dispo=$[rint($cllimit/2)]
36
    dispo=!values v for v=1 to $dispo
37
    dispo=,$dispo
38
    dispo=!listcomplement $ltuser in $dispo
39
    dispo=!nospace $dispo
40
  !endif
41
  !if $dispo=$empty
42
    !restart module=adm/class/classes/&+job=example&+fullcls=1
43
  !else
44
    num=!item 1 of $dispo 
45
    test=!fileexists wimshome/log/classes/$c_/.users/anonymous$num
46
    !if $test!=yes
47
      nbuser=!recordcnt wimshome/log/classes/$c_/.userlist
48
      !if $nbuser<=$cllimit
49
        !sh cp $wims_home/log/classes/$c_/.users/anonymous $wims_home/log/classes/$c_/.users/anonymous$num
50
        !readproc adm/class/mkuserlist $c_
51
      !else
52
        !restart module=adm/class/classes/&+job=example&+fullcls=1
53
      !endif
54
    !endif
55
    output_user=anonymous$num
56
    dispo=!item 2 to -1 of $dispo
57
    !writefile wimshome/log/classes/$c_/freelogin :$wims_nowseconds\
58
:$dispo
59
  !endif
60
!else
61
  output_user=$u_
62
!endif