Advertisement
Guest User

Untitled

a guest
Jul 15th, 2017
514
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.16 KB | None | 0 0
  1. #!/usr/bin/php
  2. <?php
  3. require_once('schoolzone_api.php');
  4. $timezone = date_default_timezone_get();
  5. date_default_timezone_set('America/Edmonton');
  6. $time = localtime();
  7. $hour = $time[2];
  8. date_default_timezone_set($timezone);
  9. if ($hour > 18 || $hour < 6) exit();
  10. unset($hour, $time, $timezone);
  11.  
  12. $keyconst = "Xq1Ai-7PFP?/ubdGQmthGXi=Y)Ipao\x{-6;MZ1EQ7G=}'rZq)Sc1f$oa$6Ghpz";
  13. $splittoken = "(<*>)";
  14. $fromemail = "Grade Notifier <noreply@ms-ss.net>";
  15. $mailsubject = "Grade Update";
  16. $no_mark_read = $_REQUEST["no_mark_read"];
  17. $override_doall = $_REQUEST["override_doall"];
  18. $showpreview = $_REQUEST["showpreview"];
  19. $nomail = $_REQUEST["nomail"];
  20.  
  21. if (isset($_REQUEST["generatedata"]))
  22. {
  23. if (!isset($_REQUEST["user"]))
  24. {
  25. echo generatorform();
  26. }
  27. else //spit out the updater url
  28. {
  29. $td = mcrypt_module_open('rijndael-128', '', 'ofb', '');
  30. $key = md5($_REQUEST["key"]);
  31. $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_DEV_RANDOM);
  32.  
  33. mcrypt_generic_init($td, substr(sha1($key.$keyconst), 0, mcrypt_enc_get_key_size($td)), $iv);
  34.  
  35. $userchunk = implode( $splittoken, array($_REQUEST["user"], $_REQUEST["pass"], $_REQUEST["email"], $_REQUEST["year"]) );
  36. echo "http://ms-ss.net". $_SERVER['PHP_SELF'] ."?serialtoken=". base64_encode(base64_encode(mcrypt_generic($td, $userchunk)). "." .base64_encode($iv). "." .$key);
  37.  
  38. mcrypt_generic_deinit($td);
  39. }
  40. exit();
  41. }
  42.  
  43. $encdata = $_REQUEST["serialtoken"] or die("Error: user info not passed.");
  44. //serialtoken format: encchunk.IV.Key
  45. list($userchunk, $iv, $key) = explode(".", base64_decode($encdata), 3);
  46.  
  47. $td = mcrypt_module_open('rijndael-128', '', 'ofb', '');
  48. mcrypt_generic_init($td, substr(sha1($key.$keyconst), 0, mcrypt_enc_get_key_size($td)), base64_decode($iv));
  49. $decrypted = mdecrypt_generic($td, base64_decode($userchunk));
  50. mcrypt_generic_deinit($td);
  51.  
  52. list($user, $pass, $email, $schoolyear) = explode($splittoken, $decrypted, 4);
  53. if (!$schoolyear) die ("Invalid data chunk.");
  54. $sz = new SZ_Conn($user, $pass, $schoolyear);
  55. $sz->open() or die("Login failed.");
  56. $availmarks = $sz->getReportList() or die("Couldn't get report list");
  57.  
  58. $msgcount = 1;
  59. $send[1]='';
  60.  
  61. foreach ($availmarks as $subject)
  62. {
  63. if (!$subject['accessdate'] || $override_doall) //not viewed
  64. {
  65. $report = $sz->getReport( $subject['reportno'] );
  66. $avg = $sz->getAverage( $report );
  67. $classavg = $sz->getClassAverage( $report );
  68. $avgstring = $subject["coursename"]. " - " . ($avg? $avg.'%': 'avg. unavailable') . ($classavg? " (Class: ".$classavg."%)":'');
  69. if (strlen("[$mailsubject]\n".$send[$msgcount]."\n".$avgstring) >= 128) $msgcount++;
  70. if (strlen($send[$msgcount])) $send[$msgcount] .= "\n";
  71. $send[$msgcount] .= $avgstring;
  72.  
  73. if (!$no_mark_read) $sz->markReportViewed( $subject['reportno'] ); //comment out during debug
  74. }
  75. }
  76. if ($showpreview) echo "<pre><ol>";
  77. foreach ($send as $message)
  78. {
  79. if ($message) domail($email, $fromemail, $mailsubject, $message);
  80. }
  81. if ($showpreview) echo "</ol></pre>";
  82.  
  83. function domail($to, $from, $subject, $message)
  84. {
  85. global $showpreview, $nomail;
  86. $output_headers = 'MIME-Version: 1.0' . "\r\n";
  87. $output_headers .= 'Content-Type: text/plain; charset=ISO-8859-1' . "\r\n";
  88. $output_headers .= 'From: ' . $from . "\r\n";
  89. if (!$nomail) mail($to, "$subject", $message, $output_headers);
  90. if ($showpreview) echo "<li>[$subject]\n$message</li>";
  91. }
  92.  
  93. function generatorform() //ugly ugly ugly
  94. {
  95. return "<form action=\"" . $_SERVER['PHP_SELF'] . "\" method=\"post\">".
  96. <<<EOF
  97. <!--?>-->
  98. <p><label for="user">User: </label><input type="text" name="user" id="user" value="" size="40" /></p>
  99. <p><label for="pass">Pass: </label><input type="password" name="pass" id="pass" value="" size="40" /></p>
  100. <p><label for="email">Email: </label><input type="text" name="email" id="email" value="" size="40" /></p>
  101. <p><label for="year">Year: </label><input type="text" name="year" id="year" value="200809" size="8" /></p>
  102. <p><label for="key">Key: </label><input type="text" name="key" id="key" value="" size="128" /></p>
  103. <input type="hidden" name="generatedata" id="generatedata" value="true" />
  104. <p><input type="submit" value="Submit" /></p>
  105. </form>
  106. <!--<?php -->
  107. EOF;
  108. }
  109. ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement