Subversion Repositories wimsdev

Rev

Rev 13830 | Rev 15856 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 13830 Rev 15427
Line 2... Line 2...
2
# permet d'authentifier l'utilisateur quser dans la classe qclass
2
# permet d'authentifier l'utilisateur quser dans la classe qclass
3
 
3
 
4
#on commence par verifier la classe $qclass
4
# On commence par verifier la classe $qclass
5
!read scripts/check.class
5
!read scripts/check.class
6
!if $error!=$empty
6
!if $error!=$empty
7
 !exit
7
  !exit
8
!endif
8
!endif
9
 
9
 
10
!if hashlogin iswordof $option
10
!if hashlogin iswordof $option
11
 quser_orig=$quser
11
  quser_orig=$quser
12
 !read adm/class/hashlogin $quser_orig,$qclass,
12
  !read adm/class/hashlogin $quser_orig,$qclass,
13
 quser=$login
13
  quser=$login
14
!endif
14
!endif
15
 
15
 
16
#Puis on verifie l'existence de $quser
16
# Puis on verifie l'existence de $quser
17
!read scripts/check.user
17
!read scripts/check.user
18
!if $error!=$empty
18
!if $error!=$empty
19
 !if hashlogin iswordof $option
19
  !if hashlogin iswordof $option
20
   error=hashlogin: $login
20
    error=hashlogin: $login
21
 !endif
21
  !endif
22
 !exit
22
  !exit
23
!endif
23
!endif
24
 
24
 
25
!readdef $userdeffile
25
!readdef $userdeffile
26
!if $qpasswd != $empty and $qpasswd != $user_password
26
!if $qpasswd != $empty and $qpasswd != $user_password
27
 error=user authentification failure
27
  error=user authentification failure
28
 !exit
28
  !exit
29
!endif
29
!endif
30
 
30
 
31
wims_mode=
31
wims_mode=$empty
32
!readdef $classdeffile
32
!readdef $classdeffile
33
 
33
 
34
class_superclass=!defof class_superclass in $classdeffile
-
 
35
!if $class_type isitemof 2,4
34
!if $class_type isitemof 2,4
36
 !default class_superclass=$wims_class
35
  !default class_superclass=$wims_class
37
!endif
36
!endif
38
 
-
 
39
!default class_typename=class
37
!default class_typename=class
40
!default class_type=0
38
!default class_type=0
41
 
39
 
42
# Il faut tout d'abord verifier que l'utilisateur n'etait pas en session d'examen
40
# Il faut tout d'abord verifier que l'utilisateur n'etait pas en session d'examen
43
parmreg=!record 0 of wimshome/log/classes/$wims_class/.parmreg/$quser.exam
41
parmreg=!record 0 of wimshome/log/classes/$wims_class/.parmreg/$quser.exam
Line 47... Line 45...
47
##
45
##
48
##    IP  SESS_ID   ??? exam_ID
46
##    IP  SESS_ID   ??? exam_ID
49
## exemple : 134.59.121.121 UI99D09012 1315494761 3
47
## exemple : 134.59.121.121 UI99D09012 1315494761 3
50
##
48
##
51
############
49
############
52
 
50
 
53
num_session=$wims_session
51
num_session=$wims_session
54
 
52
 
55
#data1 doit contenir l'ip du user et non du serveur appelant
53
# data1 doit contenir l'ip du user et non du serveur appelant
56
remote_addr= !word 1 of $data1
54
remote_addr=!word 1 of $data1
57
 
-
 
58
 
55
 
59
!if $nb_parms>=4
56
!if $nb_parms>=4
60
 
57
 
61
 !distribute words $parmreg into sess_IP,sess_ID,sess_time,exam_id
58
  !distribute words $parmreg into sess_IP,sess_ID,sess_time,exam_id
62
 
59
 
63
 !set r_=!record 0 of wimshome/sessions/$sess_ID/examreg.$exam_id
60
  !set r_=!record 0 of wimshome/sessions/$sess_ID/examreg.$exam_id
64
 !set now=$wims_nowseconds
61
  !set now=$wims_nowseconds
65
 
62
 
66
 !set ws=!translate _ to $ $ in $wims_session
63
  !set ws=!translate _ to $ $ in $wims_session
67
 !set ws=!word 1 of $ws
64
  !set ws=!word 1 of $ws
68
 
65
 
69
 !set restrictions=!record 0 of wimshome/log/classes/$wims_class/.E$exam_id
66
  !set restrictions=!record 0 of wimshome/log/classes/$wims_class/.E$exam_id
70
 
67
 
-
 
68
  # Check if user has changed his IP only if option $class_examscore_withoutip is active
-
 
69
  !if $class_examscore_withoutip!=yes
-
 
70
    # if a different exam session has started, is still pending
-
 
71
    # but what's the meaning of "$restrictions!=#" ??
71
 !if $r_!=$empty and $sess_ID!=$ws and $sess_time>$now and $sm!=#
72
    !if $r_!=$empty and $sess_ID!=$ws and $sess_time>$now and $restrictions!=#
72
   !if $sess_IP != $remote_addr
73
      !if $quser != supervisor and $sess_IP != $remote_addr
73
 
74
 
74
     !sh rm -f ../sessions/$ws/var.stat >/dev/null
75
        !sh rm -f ../sessions/$ws/var.stat >/dev/null
75
     !if $remote_addr = $empty
76
        !if $remote_addr=$empty
76
        error= $quser is already in an exam session, but your server didn't provided the user actual IP in data1.
77
          error= $quser is already in an exam session, but your server didn't provided the user actual IP in data1.
77
     !else
78
        !else
78
        error= $quser is in an exam session started on another IP ($sess_IP != $remote_addr). Go back quickly to this computer !
79
          error= $quser is in an exam session started on another IP. Go back quickly to this computer!
79
     !endif
80
        !endif
80
     !exit
81
        !exit
81
   !endif
82
      !endif
82
   num_session=$sess_ID
83
      num_session=$sess_ID
-
 
84
    !endif
83
 !endif
85
  !endif
84
 
86
 
85
 #si la session d'examen est terminee, on reinitialise les parametres de session
87
  #si la session d'examen est terminee, on reinitialise les parametres de session
86
 !if $sess_time<$now or $r_=$empty
88
  !if $sess_time<$now or $r_=$empty
87
   !writefile wimshome/log/classes/$wims_class/.parmreg/$quser.exam
89
    !writefile wimshome/log/classes/$wims_class/.parmreg/$quser.exam
88
 !endif
90
  !endif
89
 
91
 
90
!endif
92
!endif
91
 
93
 
92
dir_session=sessions/$num_session
94
dir_session=sessions/$num_session
93
 
95
 
94
!if $remote_addr!=$empty
96
!if $remote_addr!=$empty
95
	!setdef REMOTE_ADDR=$remote_addr in wimshome/$dir_session/var
97
  !setdef REMOTE_ADDR=$remote_addr in wimshome/$dir_session/var
96
!endif
98
!endif
97
 
99
 
98
 
100
 
99
!writefile wimshome/$dir_session/var.stat wims_class=$wims_class\
101
!writefile wimshome/$dir_session/var.stat wims_class=$wims_class\
100
wims_user=$quser\
102
wims_user=$quser\
Line 122... Line 124...
122
!! !if $quser!=supervisor
124
!! !if $quser!=supervisor
123
!! !appendfile wimshome/$dir_session/var.stat wims_realuser=$quser
125
!! !appendfile wimshome/$dir_session/var.stat wims_realuser=$quser
124
!! !endif
126
!! !endif
125
 
127
 
126
!if lightpopup iswordof $option
128
!if lightpopup iswordof $option
127
 !setdef wims_lightpopup=yes in wimshome/$dir_session/var.stat
129
  !setdef wims_lightpopup=yes in wimshome/$dir_session/var.stat
128
 !setdef w_wims_lightpopup=yes in wimshome/$dir_session/var
130
  !setdef w_wims_lightpopup=yes in wimshome/$dir_session/var
129
!endif
131
!endif
130
 
132
 
131
!sh mkdir $wims_home/$dir_session/getfile
133
!sh mkdir $wims_home/$dir_session/getfile
132
 
134
 
133
!sh ln -s $wims_home/log/classes/$qclass/src/images $wims_home/$dir_session/getfile/oefimages
135
!sh ln -s $wims_home/log/classes/$qclass/src/images $wims_home/$dir_session/getfile/oefimages
134
 
136
 
135
!if $quser=supervisor
137
!if $quser=supervisor
136
!! log supervisor access to class
138
  !! log supervisor access to class
137
date=!translate : to . in $wims_now
139
  date=!translate : to . in $wims_now
138
!appendfile wimshome/log/classes/$qclass/.log $date $httpd_REMOTE_ADDR      supervisor login
140
  !appendfile wimshome/log/classes/$qclass/.log $date $httpd_REMOTE_ADDR      supervisor login via adm/raw
139
!endif
141
!endif
140
 
142