Skip to content

Commit

Permalink
Adding option to signin
Browse files Browse the repository at this point in the history
  • Loading branch information
Daniel Neto committed Aug 12, 2024
1 parent 990aa0f commit 91e74d3
Show file tree
Hide file tree
Showing 12 changed files with 612 additions and 39 deletions.
2 changes: 1 addition & 1 deletion install/checkConfiguration.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
$_POST['databaseName'] = str_replace('-', '_', $_POST['databaseName']);
require_once '../objects/functions.php';

$installationVersion = '4.1';
$installationVersion = '5.0';

header('Content-Type: application/json');

Expand Down
1 change: 1 addition & 0 deletions install/database.sql
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ CREATE TABLE IF NOT EXISTS `streamers` (
`isAdmin` TINYINT(1) NOT NULL DEFAULT 0,
`created` DATETIME NULL,
`modified` DATETIME NULL,
`json` TEXT NULL,
PRIMARY KEY (`id`))
ENGINE = InnoDB;

Expand Down
4 changes: 2 additions & 2 deletions objects/Login.php
Original file line number Diff line number Diff line change
Expand Up @@ -153,8 +153,8 @@ static function run(
static function logoff() {
error_log("logoff:: done session_id = " . session_id());
unset($_SESSION['login']);
setcookie('encoder_user', null, -1, "/");
setcookie('encoder_pass', null, -1, "/");
setcookie('encoder_user', '', -1, "/");
setcookie('encoder_pass', '', -1, "/");
unset($_COOKIE['encoder_user']);
unset($_COOKIE['encoder_pass']);
}
Expand Down
163 changes: 130 additions & 33 deletions objects/Streamer.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,22 +3,26 @@
if (!class_exists('Streamer')) {
require_once dirname(__FILE__) . '/Configuration.php';

class Streamer extends ObjectYPT {
class Streamer extends ObjectYPT
{
const RESTREAMER_URL = 'https://restream.ypt.me/';
protected $id, $siteURL, $user, $pass, $priority, $isAdmin, $json, $created, $modified;

protected $id, $siteURL, $user, $pass, $priority, $isAdmin, $created, $modified;

static function getSearchFieldsNames() {
static function getSearchFieldsNames()
{
return array('siteURL');
}

static function getTableName() {
static function getTableName()
{
global $global;
return $global['tablesPrefix'] . 'streamers';
}

private static function get($user, $siteURL) {
private static function get($user, $siteURL)
{
global $global;
if(empty($global)){
if (empty($global)) {
$global = [];
}
$sql = "SELECT * FROM " . static::getTableName() . " WHERE user = '{$user}' AND lower(siteURL) = lower('{$siteURL}') LIMIT 1";
Expand All @@ -36,9 +40,10 @@ private static function get($user, $siteURL) {
return false;
}

private static function getFirst() {
private static function getFirst()
{
global $global;
if(empty($global)){
if (empty($global)) {
$global = [];
}
$sql = "SELECT * FROM " . static::getTableName() . " LIMIT 1";
Expand All @@ -56,7 +61,8 @@ private static function getFirst() {
return false;
}

static function getFirstURL() {
static function getFirstURL()
{
global $global;
if (!empty($global['forceStreamerURL'])) {
return $global['forceStreamerURL'];
Expand All @@ -65,24 +71,26 @@ static function getFirstURL() {
return $row['siteURL'];
}

static function getStreamerURL() {
static function getStreamerURL()
{
global $global;
if (!empty($global['forceStreamerSiteURL'])) {
return $global['forceStreamerSiteURL'];
}
$streamerURL = @$_REQUEST['webSiteRootURL'];
if (empty($streamerURL)) {
if(!empty($_SESSION['login']) && !empty($_SESSION['login']->streamer)){
if (!empty($_SESSION['login']) && !empty($_SESSION['login']->streamer)) {
$streamerURL = $_SESSION['login']->streamer;
}else{
} else {
$streamerURL = Streamer::getFirstURL();
}
}
$streamerURL = addLastSlash($streamerURL);
return $streamerURL;
}

static function createIfNotExists($user, $pass, $siteURL, $encodedPass = false) {
static function createIfNotExists($user, $pass, $siteURL, $encodedPass = false)
{
error_log("createIfNotExists:: $user");
if (substr($siteURL, -1) !== '/') {
$siteURL .= "/";
Expand Down Expand Up @@ -110,14 +118,16 @@ static function createIfNotExists($user, $pass, $siteURL, $encodedPass = false)
}
}

public function save() {
public function save()
{
if (!isset($this->priority)) {
$this->priority = 6;
}
return parent::save();
}

function verify() {
function verify()
{
$timeout = 5;
ini_set('default_socket_timeout', $timeout);
$url = $this->getSiteURL();
Expand Down Expand Up @@ -157,7 +167,8 @@ function verify() {
return $json;
}

static function isURLAllowed($siteURL) {
static function isURLAllowed($siteURL)
{
if (substr($siteURL, -1) !== '/') {
$siteURL .= "/";
}
Expand Down Expand Up @@ -202,79 +213,165 @@ static function isURLAllowed($siteURL) {
return $return;
}

function getId() {
function getId()
{
return $this->id;
}

function getSiteURL() {
function getSiteURL()
{
global $global;
if (!empty($global['forceStreamerSiteURL'])) {
return trim($global['forceStreamerSiteURL']);
}
return trim($this->siteURL);
}

function getUser() {
function getUser()
{
return $this->user;
}

function getPass() {
function getPass()
{
return $this->pass;
}

function getCreated() {
function getCreated()
{
return $this->created;
}

function getModified() {
function getModified()
{
return $this->modified;
}

function setId($id) {
function setId($id)
{
$this->id = $id;
}

function setSiteURL($siteURL) {
function setSiteURL($siteURL)
{
if (!empty($siteURL) && substr($siteURL, -1) !== '/') {
$siteURL .= "/";
}
$this->siteURL = $siteURL;
}

function setUser($user) {
function setUser($user)
{
$this->user = $user;
}

function setPass($pass) {
function setPass($pass)
{
$config = new Configuration();
if (version_compare($config->getVersion(), '4.0') < 0) {
$pass = substr($pass, 0, 45);
}
$this->pass = $pass;
}

function setCreated($created) {
function setCreated($created)
{
$this->created = $created;
}

function setModified($modified) {
function setModified($modified)
{
$this->modified = $modified;
}

function getPriority() {
function getPriority()
{
return $this->priority;
}

function setPriority($priority) {
function setPriority($priority)
{
$this->priority = $priority;
}

function getIsAdmin() {
function getIsAdmin()
{
return $this->isAdmin;
}

function setIsAdmin($isAdmin) {
function setIsAdmin($isAdmin)
{
$this->isAdmin = $isAdmin;
}

function getJson()
{
return $this->json;
}

function setJson($json)
{
if (!is_string($json)) {
$json = json_encode($json);
}
$this->json = $json;
}

static function revalidateToken($streamers_id, $provider)
{
$response = array(
'error' => true,
'msg' => '',
'provider' => $provider,
);
$s = new Streamer($streamers_id);
$jsonString = $s->getJson();
if (empty($jsonString)) {
$response['msg'] = 'There is no token for this';
return $response;
} else {
$json = json_decode($jsonString, true);
}

$response['accessToken'] = $json[$provider]['json']["restream.ypt.me"]['accessToken'];

if (empty($response['accessToken'])) {
$response['msg'] = "revalidateToken($streamers_id, $provider) access_token is empty ";
return $response;
}

$response['expires_at'] = $json[$provider]['json']["restream.ypt.me"]["expires"]["expires_at"];
if (time() <= $response['expires_at']) {
$response['msg'] = "Not expired yet";
return $response;
}

$access_token = base64_encode(json_encode($response['accessToken']));

$url = Streamer::RESTREAMER_URL . 'refresh.json.php';
$url = addQueryStringParameter($url, 'access_token', $access_token);
$response['url'] = addQueryStringParameter($url, 'provider', $response['provider']);
//var_dump($pub['publisher_social_medias_id'], $response['error']provider, $url);exit;

$response['resp'] = url_get_contents($response['url']);
if (empty($response['resp'])) {
$response['msg'] = "revalidateToken($streamers_id, $provider) response is empty";
return $response;
}

$response['respJson'] = json_decode($response['resp'], true);

$response['error'] = empty($response['respJson']) || $response['respJson']['error'];
$response['msg'] = empty($response['respJson']) ? 'Empty response' : $response['respJson']['msg'];
$response['saved'] = false;
if(empty($response['error'] ) && !empty($response['respJson']['new_access_token'])){
$json[$provider]['json']["restream.ypt.me"]['accessToken'] = $response['respJson']['new_access_token'];
$json[$provider]['json']["restream.ypt.me"]['expires'] = $response['respJson']['expires'];
$s->setJson($json);
$response['saved'] = $s->save();
}

return $response;
}
}
}
Loading

0 comments on commit 91e74d3

Please sign in to comment.