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 |
|
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 |
|
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 |
|
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 |
|
53 | # data1 doit contenir l'ip du user et non du serveur appelant |
56 |
|
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 |
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 |
|
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 |
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 |
|
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/ |
140 | !appendfile wimshome/log/classes/$qclass/.log $date $httpd_REMOTE_ADDR supervisor login via adm/raw |
139 | !endif |
141 | !endif |
140 | 142 |