Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- //about
- /*
- by -kw, 21.02.2016
- v1.0
- Dieses Script sollte etwa einmal die Stunde per Cron aufgerufen werden.
- Es sucht im HIS nach neuen Noten und sendet euch dann ggf. eine E-Mail.
- Streng genommen sucht es nicht nach neuen Noten, sondern prüft, ob sich die Anzahl der Dummy-Noten verändert hat.
- Jede angemeldete und geprüfte aber noch nicht bewertete Prüfung wird mit der Note 0,0 eingetragen.
- Das Script zählt diese "Noten" und vergleicht die Anzahl bei jedem Durchlauf. Hat sich etwas geändert, sendet es eine Mail.
- Das Script muss im Verzeichnis eine Datei anlegen können.
- Das Script wird nur im HIS der HS Merseburg funktionieren.
- Keine Haftung, Garantie, Gewährleistung und sonstiges. Benutzung auf eigene Gefahr.
- Sensible Daten sollten nicht auf Servern gespeichert werden!
- */
- //config
- $mailto = ""; // E-Mail Adresse des zu Benachrichtigenden
- $username = ""; //Rechenzentrum Nutzername
- $passwd = ""; //Rechenzentrum Passwort
- $matrikelnr = ""; //Matrikelnummer
- //do not change from here
- $cookies = "cookies.txt";
- if (!file_exists($cookies)) {
- file_put_contents($cookies, "");
- }
- function execute($ho,$state,$array, $newsess){
- global $cookies;
- $log_hoster = $array;
- $ch = curl_init();
- $url = $log_hoster[$ho][0];
- $postdata = $log_hoster[$ho][1];
- $ref = $log_hoster[$ho][2];
- curl_setopt($ch, CURLINFO_HEADER_OUT, true);
- curl_setopt($ch, CURLOPT_AUTOREFERER, true );
- curl_setopt($ch, CURLOPT_COOKIE, $cookies);
- curl_setopt($ch, CURLOPT_COOKIEFILE, $cookies);
- curl_setopt($ch, CURLOPT_COOKIEJAR, $cookies);
- curl_setopt($ch, CURLOPT_COOKIESESSION, $newsess );
- curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
- curl_setopt($ch, CURLOPT_HEADER, false);
- curl_setopt($ch, CURLOPT_POST, true);
- curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);
- curl_setopt($ch, CURLOPT_PROXYAUTH, CURLAUTH_NTLM);
- curl_setopt($ch, CURLOPT_REFERER, $ref);
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
- curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
- curl_setopt($ch, CURLOPT_URL, $url);
- curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
- $retu = curl_exec($ch);
- sleep(1);
- return $retu;
- }
- function getsite($zielurl,$postdata = "",$ref ="", $newsess = true){
- $log_hoster = array(
- array($zielurl,$postdata,$ref)
- );
- $temp = execute(0, true, $log_hoster, $newsess);
- return $temp;
- }
- //einlogen
- $URL = "https://hisqis.hs-merseburg.de/qisserver/rds?state=user&type=1&category=auth.login&startpage=portal.vm";
- $seite = getsite($URL, "username=".urlencode($username)."&password=".urlencode($passwd)."&mtknr=".urlencode($matrikelnr)."&submit=%C2%A0Anmelden%C2%A0");
- //asi (SessionID) finden
- $URL = "https://hisqis.hs-merseburg.de/qisserver/rds?state=change&type=1&moduleParameter=studyPOSMenu&nextdir=change&next=menu.vm&subdir=applications&xml=menu&purge=y&navigationPosition=functions%2CstudyPOSMenu&breadcrumb=studyPOSMenu&topitem=functions&subitem=studyPOSMenu";
- $seite = explode("\n", getsite($URL,base64_decode($base_data),"https://hisqis.hs-merseburg.de/qisserver/", false));
- foreach ($seite as $key => $value) {
- if (str_replace("<a href=\"https://hisqis.hs-merseburg.de/qisserver/rds?state=notenspiegel","",$value) != $value) {
- $start = strpos($value, "asi=");
- $cut = substr($value, $start+4);
- $ende = strpos($cut, '"');
- $asi = substr($cut, 0, $ende);
- }
- }
- //Noten abrufen
- $URL = "https://hisqis.hs-merseburg.de/qisserver/rds?state=notenspiegelStudent&next=list.vm&nextdir=qispos/notenspiegel/student&createInfos=Y&struct=auswahlBaum&nodeID=auswahlBaum%7Cabschluss%3Aabschl%3D84%2Cstgnr%3D1&expand=0&asi=".$asi;
- $seite = explode("\n", getsite($URL,"","https://hisqis.hs-merseburg.de/qisserver/", false));
- //0,0 zählen
- $counter = 0;
- for ($i=0; $i < count($seite); $i++) {
- if (trim($seite[$i]) == "0,0" && trim($seite[$i-1]) == '<td class="qis_konto" valign="top" align="right">') {
- $counter++;
- }
- }
- //alten Wert lesen/erzeugen
- if (file_exists("counter.txt")) {
- $old_counter = file_get_contents("counter.txt");
- if (isset($old_counter[0])) {
- $old_counter = intval($old_counter[0]);
- }else{
- $old_counter = 0;
- }
- }else{
- file_put_contents("counter.txt", "0");
- $old_counter = 0;
- }
- //Vergleich, ggf. Mail
- if ($old_counter != $counter) {
- mail($mailto, "Neue Note(n) online!", "Im HIS hat sich gerade etwas getan! :)");
- file_put_contents("counter.txt", $counter);
- }
Add Comment
Please, Sign In to add comment