diff --git a/inc/school.crawl.webadvisor.inc b/inc/school.crawl.webadvisor.inc --- a/inc/school.crawl.webadvisor.inc +++ b/inc/school.crawl.webadvisor.inc @@ -473,6 +473,15 @@ function school_crawl_webadvisor_semeste $synonym = $matches[1]; $title = trim($matches[2]); } + else + { + /* + * Places without synonyms just don’t have the + * parantheses around the synonym. Just get a title… + */ + list(, $title) = explode(' ', $sec_short_title, 2); + $title = trim($title); + } school_crawl_logf($school_crawl_log, 10, ""); school_crawl_logf($school_crawl_log, 10, implode('-', $section_id) . ': ' . $sec_short_title); diff --git a/school.d/cornerstone.crawl.inc b/school.d/cornerstone.crawl.inc new file mode 100644 --- /dev/null +++ b/school.d/cornerstone.crawl.inc @@ -0,0 +1,54 @@ + + * + * This file is a part of slate_permutate. + * + * slate_permutate is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * slate_permutate is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with slate_permutate. If not, see . + */ + +require_once dirname(dirname(__FILE__)) . DIRECTORY_SEPARATOR . 'inc' . DIRECTORY_SEPARATOR . 'school.crawl.webadvisor.inc'; + +function cornerstone_crawl_semester_list(array $school, array &$semesters, &$school_crawl_log) +{ + return school_crawl_webadvisor_semester_list($school, $semesters, $school_crawl_log, array('curlsetup_hook' => '_' . $school['id'] . '_crawl_semester_curlsetup_hook')); +} + +function cornerstone_crawl_semester(array $school, Semester $semester, &$school_crawl_log) +{ + return school_crawl_webadvisor_semester($school, $semester, $school_crawl_log, array('curlsetup_hook' => '_' . $school['id'] . '_crawl_semester_curlsetup_hook')); +} + +/** + * \brief + * Tell libCURL to ignore the missing SSL cert in the misconfigured + * server’s SSL certchain. + * + * https://solomon.cornerstone.edu/ is missing the middle cert from + * its SSL certchain. The only way to expose this is to remove the + * cached cert from Mozilla’s certcache. Visiting + * https://eaglesnest.cornerstone.edu/ before visiting solomon is + * enough to get the missing cert cached into Mozilla’s certcache. We + * could try to emulate this behavior, but PHP’s openssl library + * doesn’t support SSL connections (it just does encrypt/decrypt and + * hashes) and it seems libcurl provides no way to access/save the + * certs it encounters, though it does provide a way to specify CA + * certs. I just don’t feel like adding the intermediate CA cert + * slate_permutate’s repository… so, now for some untrusted computing + * instead of getting the verified intermediate cert from eaglesnest! + */ +function _cornerstone_crawl_semester_curlsetup_hook($curl) +{ + curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE); +} diff --git a/school.d/cornerstone.inc b/school.d/cornerstone.inc new file mode 100644 --- /dev/null +++ b/school.d/cornerstone.inc @@ -0,0 +1,29 @@ + + * + * This file is a part of slate_permutate. + * + * slate_permutate is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * slate_permutate is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with slate_permutate. If not, see . + */ + +function cornerstone_info() +{ + return array( + 'example_course_id' => 'ENGL 101', + 'name' => 'Cornerstone University', + 'student_address' => 'Eagle', + 'webadvisor_url' => 'https://solomon.cornerstone.edu/COLLIVE/WebAdvisor', + ); +}