Index: openacs-4/packages/proctoring-support/proctoring-support.info =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/proctoring-support/proctoring-support.info,v diff -u -r1.1.2.14 -r1.1.2.15 --- openacs-4/packages/proctoring-support/proctoring-support.info 20 Jan 2021 16:30:08 -0000 1.1.2.14 +++ openacs-4/packages/proctoring-support/proctoring-support.info 9 Jun 2021 15:55:53 -0000 1.1.2.15 @@ -10,7 +10,7 @@ f proctoring - + Antonio Pisano Set of tools to implement proctoring of user interaction Wirtschaftsuniversität Wien @@ -21,7 +21,7 @@ No real UI is provided by the package itself. Other packages must integrate the provided includes. 0 - + Index: openacs-4/packages/proctoring-support/catalog/proctoring-support.en_US.ISO-8859-1.xml =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/proctoring-support/catalog/proctoring-support.en_US.ISO-8859-1.xml,v diff -u -r1.1.2.17 -r1.1.2.18 --- openacs-4/packages/proctoring-support/catalog/proctoring-support.en_US.ISO-8859-1.xml 20 Jan 2021 16:30:08 -0000 1.1.2.17 +++ openacs-4/packages/proctoring-support/catalog/proctoring-support.en_US.ISO-8859-1.xml 9 Jun 2021 15:55:53 -0000 1.1.2.18 @@ -120,6 +120,11 @@ Recordings Request to the server has failed. Retry in 10s... Request to the server timed out. Retry in 10s... + Safe Exam Browser + Safe Exam Browser .seb file + .seb file generated via the Safe Exam Browser configuration tool that holds the restriction applied to this exam session. + Safe Exam Browser key + Encryption key generated via the Safe Exam Browser configuration tool that will be used to ensure students are applying supplied configuration to their exam session. Photo Finish The screen cannot be recorded because you selected the wrong screen area. Select \"Your Entire Screen\" by clicking on the screen and then on \"Share\". Index: openacs-4/packages/proctoring-support/lib/proctored-page.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/proctoring-support/lib/proctored-page.tcl,v diff -u -r1.1.2.8 -r1.1.2.9 --- openacs-4/packages/proctoring-support/lib/proctored-page.tcl 6 Dec 2020 08:52:44 -0000 1.1.2.8 +++ openacs-4/packages/proctoring-support/lib/proctored-page.tcl 9 Jun 2021 15:55:53 -0000 1.1.2.9 @@ -84,6 +84,10 @@ msg:array,optional } +::proctoring::seb::require_valid_access \ + -object_url $object_url \ + -object_id $object_id + set system_name [ad_system_name] set default_msg(missing_stream) [_ proctoring-support.missing_stream_message] Index: openacs-4/packages/proctoring-support/sql/postgresql/proctoring-support-create.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/proctoring-support/sql/postgresql/proctoring-support-create.sql,v diff -u -r1.1.2.3 -r1.1.2.4 --- openacs-4/packages/proctoring-support/sql/postgresql/proctoring-support-create.sql 20 Jan 2021 16:21:54 -0000 1.1.2.3 +++ openacs-4/packages/proctoring-support/sql/postgresql/proctoring-support-create.sql 9 Jun 2021 15:55:53 -0000 1.1.2.4 @@ -52,3 +52,19 @@ create index proctoring_examination_statement_acceptance_user_id_idx on proctoring_examination_statement_acceptance(user_id); + +create table proctoring_safe_exam_browser_conf ( + object_id integer primary key + references acs_objects(object_id) on delete cascade, + seb_file text not null -- the file created via the SEB + -- exam configuration that will + -- configure the clients + -- accessing this proctored + -- object + key text not null, -- the keys generated during the SEB + -- configuration that have been allowed + -- access to this exam +); + +create index proctoring_safe_exam_browser_conf_object_id_idx on + proctoring_safe_exam_browser_conf(object_id); Index: openacs-4/packages/proctoring-support/sql/postgresql/proctoring-support-drop.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/proctoring-support/sql/postgresql/proctoring-support-drop.sql,v diff -u -r1.1.2.1 -r1.1.2.2 --- openacs-4/packages/proctoring-support/sql/postgresql/proctoring-support-drop.sql 10 Aug 2020 13:23:42 -0000 1.1.2.1 +++ openacs-4/packages/proctoring-support/sql/postgresql/proctoring-support-drop.sql 9 Jun 2021 15:55:54 -0000 1.1.2.2 @@ -1,3 +1,4 @@ drop table proctoring_objects; drop table proctoring_examination_statement_acceptance; +drop table proctoring_safe_exam_browser_conf; Fisheye: Tag 1.1 refers to a dead (removed) revision in file `openacs-4/packages/proctoring-support/sql/postgresql/upgrade/upgrade-1.4.2-1.5.0.sql'. Fisheye: No comparison available. Pass `N' to diff? Index: openacs-4/packages/proctoring-support/tcl/proctoring-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/proctoring-support/tcl/proctoring-procs.tcl,v diff -u -r1.1.2.11 -r1.1.2.12 --- openacs-4/packages/proctoring-support/tcl/proctoring-procs.tcl 29 Apr 2021 10:14:22 -0000 1.1.2.11 +++ openacs-4/packages/proctoring-support/tcl/proctoring-procs.tcl 9 Jun 2021 15:55:54 -0000 1.1.2.12 @@ -46,6 +46,9 @@ {-end_date ""} {-start_time ""} {-end_time ""} + {-seb_p false} + {-seb_key ""} + {-seb_file ""} } { Configures proctoring for specified object. @@ -69,6 +72,18 @@ executed. No time check when not specified. @param end_time Time of day since when proctoring is not executed. No time check when not specified. + @param seb_p Does this object enforce the use of the Safe Exam + Browser? + @param seb_key Key we checking against when enforcing the use of + the Safe Exam Browser, created via the Safe Exam + Browser configuration tool. + @param seb_file .seb file that holds the valid configuration for + this exam. When provided, upon failing the check + the user will be sent the file so that they can + open it with the Safe Exam Browser and apply the + configuration to their session. In case this is + not provided, we are just going to reject clients + that fail the check. } { ::xo::dc dml insert_proctoring { insert into proctoring_objects ( @@ -110,6 +125,19 @@ proctoring_p = ((:audio_p or :camera_p or :desktop_p) and :proctoring_p), examination_statement_p = :examination_statement_p } + + if {$seb_p} { + if {$seb_key ne "" && + $seb_file ne ""} { + ::proctoring::seb::configure \ + -object_id $object_id \ + -key $seb_key \ + -seb_file $seb_file + } + } else { + ::proctoring::seb::unconfigure \ + -object_id $object_id + } } ad_proc ::proctoring::get_configuration { @@ -119,7 +147,8 @@ @return a dict with fields: enabled_p, start_date, end_date, start_time, end_time, preview_p, camera_p, desktop_p, - proctoring_p, examination_statement_p + proctoring_p, examination_statement_p, seb_p, seb_key, + seb_file } { set start_date "" set end_date "" @@ -132,6 +161,9 @@ set desktop_p false set proctoring_p false set examination_statement_p false + set seb_p false + set seb_key "" + set seb_file "" ::xo::dc 0or1row is_proctored { select to_char(start_date, 'YYYY-MM-DD') as start_date, @@ -144,9 +176,14 @@ case when desktop_p then 'true' else 'false' end as desktop_p, case when proctoring_p then 'true' else 'false' end as proctoring_p, case when enabled_p then 'true' else 'false' end as enabled_p, - case when examination_statement_p then 'true' else 'false' end as examination_statement_p - from proctoring_objects - where object_id = :object_id + case when examination_statement_p then 'true' else 'false' end as examination_statement_p, + case when seb.object_id is not null then 'true' else 'false' end as seb_p, + seb.key as seb_key, + seb.seb_file + from proctoring_objects o + left join proctoring_safe_exam_browser_conf seb + on seb.object_id = o.object_id + where o.object_id = :object_id } return [list \ @@ -160,7 +197,10 @@ camera_p $camera_p \ desktop_p $desktop_p \ proctoring_p $proctoring_p \ - examination_statement_p $examination_statement_p] + examination_statement_p $examination_statement_p \ + seb_p $seb_p \ + seb_key $seb_key \ + seb_file $seb_file] } ad_proc ::proctoring::active_p { Fisheye: Tag 1.1 refers to a dead (removed) revision in file `openacs-4/packages/proctoring-support/tcl/safe-exam-browser-procs.tcl'. Fisheye: No comparison available. Pass `N' to diff?