sso-functions.php 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. <?php
  2. function ssoCheck($username, $password, $token = null)
  3. {
  4. $test = '';
  5. if ($GLOBALS['ssoPlex'] && $token) {
  6. coookie('set', 'mpt', $token, $GLOBALS['rememberMeDays']);
  7. }
  8. if ($GLOBALS['ssoOmbi']) {
  9. $ombiToken = getOmbiToken($username, $password, $token);
  10. if ($ombiToken) {
  11. coookie('set', 'Auth', $ombiToken, $GLOBALS['rememberMeDays'], false);
  12. }
  13. }
  14. if ($GLOBALS['ssoTautulli']) {
  15. $tautulliToken = getTautulliToken($username, $password, $token);
  16. if ($tautulliToken) {
  17. foreach ($tautulliToken as $key => $value) {
  18. coookie('set', 'tautulli_token_' . $value['uuid'], $value['token'], $GLOBALS['rememberMeDays']);
  19. }
  20. }
  21. }
  22. return true;
  23. }
  24. function getOmbiToken($username, $password, $oAuthToken = null)
  25. {
  26. $token = null;
  27. try {
  28. $url = qualifyURL($GLOBALS['ombiURL']);
  29. $headers = array(
  30. "Accept" => "application/json",
  31. "Content-Type" => "application/json"
  32. );
  33. $data = array(
  34. "username" => ($oAuthToken ? "" : $username),
  35. "password" => ($oAuthToken ? "" : $password),
  36. "rememberMe" => "true",
  37. "plexToken" => $oAuthToken
  38. );
  39. $endpoint = ($oAuthToken) ? '/api/v1/Token/plextoken' : '/api/v1/Token';
  40. $options = (localURL($url)) ? array('verify' => false) : array();
  41. $response = Requests::post($url . $endpoint, $headers, json_encode($data), $options);
  42. if ($response->success) {
  43. $token = json_decode($response->body, true)['access_token'];
  44. writeLog('success', 'Ombi Token Function - Grabbed token.', $username);
  45. } else {
  46. writeLog('error', 'Ombi Token Function - Ombi did not return Token', $username);
  47. }
  48. } catch (Requests_Exception $e) {
  49. writeLog('error', 'Ombi Token Function - Error: ' . $e->getMessage(), $username);
  50. };
  51. return ($token) ? $token : false;
  52. }
  53. function getTautulliToken($username, $password, $plexToken = null)
  54. {
  55. $token = null;
  56. $tautulliURLList = explode(',', $GLOBALS['tautulliURL']);
  57. if (count($tautulliURLList) !== 0) {
  58. foreach ($tautulliURLList as $key => $value) {
  59. try {
  60. $url = qualifyURL($value);
  61. $headers = array(
  62. "Accept" => "application/json",
  63. "Content-Type" => "application/x-www-form-urlencoded",
  64. "User-Agent" => isset($_SERVER ['HTTP_USER_AGENT']) ? $_SERVER ['HTTP_USER_AGENT'] : null
  65. );
  66. $data = array(
  67. "username" => ($plexToken ? "" : $username),
  68. "password" => ($plexToken ? "" : $password),
  69. "token" => $plexToken,
  70. "remember_me" => 1,
  71. );
  72. $options = (localURL($url)) ? array('verify' => false) : array();
  73. $response = Requests::post($url . '/auth/signin', $headers, $data, $options);
  74. if ($response->success) {
  75. $token[$key]['token'] = json_decode($response->body, true)['token'];
  76. $token[$key]['uuid'] = json_decode($response->body, true)['uuid'];
  77. writeLog('success', 'Tautulli Token Function - Grabbed token from: ' . $url, $username);
  78. } else {
  79. writeLog('error', 'Tautulli Token Function - Error on URL: ' . $url, $username);
  80. }
  81. } catch (Requests_Exception $e) {
  82. writeLog('error', 'Tautulli Token Function - Error: [' . $url . ']' . $e->getMessage(), $username);
  83. };
  84. }
  85. }
  86. return ($token) ? $token : false;
  87. }