Browse Source

redirect user to welcome / access level page on first visit #1

main
ghost 1 year ago
parent
commit
9f2841220a
  1. 55
      src/public/action.php
  2. 289
      src/public/download.php
  3. 8
      src/public/edit.php
  4. 15
      src/public/faq.php
  5. 8
      src/public/index.php
  6. 8
      src/public/magnet.php
  7. 15
      src/public/node.php
  8. 4
      src/public/welcome.php

55
src/public/action.php

@ -55,6 +55,14 @@ switch (isset($_GET['target']) ? urldecode($_GET['target']) : false) @@ -55,6 +55,14 @@ switch (isset($_GET['target']) ? urldecode($_GET['target']) : false)
$response->message = _('Could not init user info');
}
// On first visit, redirect user to the welcome page with access level question
else if (is_null($user->public))
{
header(
sprintf('Location: %s/welcome.php', WEBSITE_URL)
);
}
// Render icon
else
{
@ -105,6 +113,14 @@ switch (isset($_GET['target']) ? urldecode($_GET['target']) : false) @@ -105,6 +113,14 @@ switch (isset($_GET['target']) ? urldecode($_GET['target']) : false)
$response->message = _('Could not init user info');
}
// On first visit, redirect user to the welcome page with access level question
else if (is_null($user->public))
{
header(
sprintf('Location: %s/welcome.php', WEBSITE_URL)
);
}
// Magnet comment exists
else if (!$magnetComment = $db->getMagnetComment(isset($_GET['magnetCommentId']) && $_GET['magnetCommentId'] > 0 ? (int) $_GET['magnetCommentId'] : 0))
{
@ -186,6 +202,14 @@ switch (isset($_GET['target']) ? urldecode($_GET['target']) : false) @@ -186,6 +202,14 @@ switch (isset($_GET['target']) ? urldecode($_GET['target']) : false)
$response->message = _('Could not init user info');
}
// On first visit, redirect user to the welcome page with access level question
else if (is_null($user->public))
{
header(
sprintf('Location: %s/welcome.php', WEBSITE_URL)
);
}
// Magnet comment exists
else if (!$magnetComment = $db->getMagnetComment(isset($_GET['magnetCommentId']) && $_GET['magnetCommentId'] > 0 ? (int) $_GET['magnetCommentId'] : 0))
{
@ -256,6 +280,14 @@ switch (isset($_GET['target']) ? urldecode($_GET['target']) : false) @@ -256,6 +280,14 @@ switch (isset($_GET['target']) ? urldecode($_GET['target']) : false)
$response->message = _('Could not init user info');
}
// On first visit, redirect user to the welcome page with access level question
else if (is_null($user->public))
{
header(
sprintf('Location: %s/welcome.php', WEBSITE_URL)
);
}
// Magnet exists
else if (!$magnet = $db->getMagnet(isset($_GET['magnetId']) && $_GET['magnetId'] > 0 ? (int) $_GET['magnetId'] : 0))
{
@ -342,6 +374,21 @@ switch (isset($_GET['target']) ? urldecode($_GET['target']) : false) @@ -342,6 +374,21 @@ switch (isset($_GET['target']) ? urldecode($_GET['target']) : false)
$response->message = _('Could not init user session');
}
// Get user
else if (!$user = $db->getUser($userId))
{
$response->success = false;
$response->message = _('Could not init user info');
}
// On first visit, redirect user to the welcome page with access level question
else if (is_null($user->public))
{
header(
sprintf('Location: %s/welcome.php', WEBSITE_URL)
);
}
// Magnet exists
else if (!$magnet = $db->getMagnet(isset($_GET['magnetId']) && $_GET['magnetId'] > 0 ? (int) $_GET['magnetId'] : 0))
{
@ -415,6 +462,14 @@ switch (isset($_GET['target']) ? urldecode($_GET['target']) : false) @@ -415,6 +462,14 @@ switch (isset($_GET['target']) ? urldecode($_GET['target']) : false)
$response->message = _('Could not init user info');
}
// On first visit, redirect user to the welcome page with access level question
else if (is_null($user->public))
{
header(
sprintf('Location: %s/welcome.php', WEBSITE_URL)
);
}
// Validate link
if (empty($_GET['magnet']))
{

289
src/public/download.php

@ -30,183 +30,198 @@ $response = (object) @@ -30,183 +30,198 @@ $response = (object)
]
];
// Yggdrasil connections only
if (!preg_match(YGGDRASIL_HOST_REGEX, $_SERVER['REMOTE_ADDR']))
{
$response->success = false;
$response->message = _('Yggdrasil connection required for this action');
}
// Yggdrasil connections only
if (!preg_match(YGGDRASIL_HOST_REGEX, $_SERVER['REMOTE_ADDR']))
{
$response->success = false;
$response->message = _('Yggdrasil connection required for this action');
}
// Init session
else if (!$userId = $db->initUserId($_SERVER['REMOTE_ADDR'], USER_DEFAULT_APPROVED, time()))
{
$response->success = false;
$response->message = _('Could not init user session');
}
// Init session
else if (!$userId = $db->initUserId($_SERVER['REMOTE_ADDR'], USER_DEFAULT_APPROVED, time()))
{
$response->success = false;
$response->message = _('Could not init user session');
}
// Magnet exists
else if (!$magnet = $db->getMagnet(isset($_GET['magnetId']) && $_GET['magnetId'] > 0 ? (int) $_GET['magnetId'] : 0))
{
$response->success = false;
$response->message = _('Requested magnet not found');
}
// Magnet exists
else if (!$magnet = $db->getMagnet(isset($_GET['magnetId']) && $_GET['magnetId'] > 0 ? (int) $_GET['magnetId'] : 0))
{
$response->success = false;
$response->message = _('Requested magnet not found');
}
// Access allowed
else if (!($_SERVER['REMOTE_ADDR'] == $db->getUser($magnet->userId)->address || in_array($_SERVER['REMOTE_ADDR'], MODERATOR_IP_LIST) || ($magnet->public && $magnet->approved))) {
// Access allowed
else if (!($_SERVER['REMOTE_ADDR'] == $db->getUser($magnet->userId)->address || in_array($_SERVER['REMOTE_ADDR'], MODERATOR_IP_LIST) || ($magnet->public && $magnet->approved))) {
$response->success = false;
$response->message = _('Magnet not available for this action');
}
$response->success = false;
$response->message = _('Magnet not available for this action');
}
// Request valid
else
{
// Update download stats
$db->addMagnetDownload($magnet->magnetId, $userId, time());
// Get user
else if (!$user = $db->getUser($userId))
{
$response->success = false;
$response->message = _('Could not init user info');
}
// Build magnet link
$link = (object)
[
'magnet' => [],
'direct' => [],
];
// On first visit, redirect user to the welcome page with access level question
else if (is_null($user->public))
{
header(
sprintf('Location: %s/welcome.php', WEBSITE_URL)
);
}
// Request valid
else
{
// Update download stats
$db->addMagnetDownload($magnet->magnetId, $userId, time());
// Build magnet link
$link = (object)
[
'magnet' => [],
'direct' => [],
];
/// Exact Topic
$xt = [];
/// Exact Topic
$xt = [];
foreach ($db->findMagnetToInfoHashByMagnetId($magnet->magnetId) as $result)
foreach ($db->findMagnetToInfoHashByMagnetId($magnet->magnetId) as $result)
{
if ($infoHash = $db->getInfoHash($result->infoHashId))
{
if ($infoHash = $db->getInfoHash($result->infoHashId))
switch ($infoHash->version)
{
switch ($infoHash->version)
{
case 1:
case 1:
$xt[] = sprintf('xt=urn:btih:%s', $infoHash->value);
$xt[] = sprintf('xt=urn:btih:%s', $infoHash->value);
break;
break;
case 2:
case 2:
$xt[] = sprintf('xt=urn:btmh:1220%s', $infoHash->value);
$xt[] = sprintf('xt=urn:btmh:1220%s', $infoHash->value);
break;
}
break;
}
}
}
$link->magnet[] = sprintf('magnet:?%s', implode('&', $xt));
/// Display Name
$link->magnet[] = sprintf('dn=%s', urlencode($magnet->dn));
// Keyword Topic
$kt = [];
$link->magnet[] = sprintf('magnet:?%s', implode('&', $xt));
foreach ($db->findKeywordTopicByMagnetId($magnet->magnetId) as $result)
{
$kt[] = urlencode($db->getKeywordTopic($result->keywordTopicId)->value);
}
/// Display Name
$link->magnet[] = sprintf('dn=%s', urlencode($magnet->dn));
$link->magnet[] = sprintf('kt=%s', implode('+', $kt));
// Keyword Topic
$kt = [];
/// Address Tracker
foreach ($db->findAddressTrackerByMagnetId($magnet->magnetId) as $result)
{
$addressTracker = $db->getAddressTracker($result->addressTrackerId);
foreach ($db->findKeywordTopicByMagnetId($magnet->magnetId) as $result)
{
$kt[] = urlencode($db->getKeywordTopic($result->keywordTopicId)->value);
}
$scheme = $db->getScheme($addressTracker->schemeId);
$host = $db->getHost($addressTracker->hostId);
$port = $db->getPort($addressTracker->portId);
$uri = $db->getUri($addressTracker->uriId);
$link->magnet[] = sprintf('kt=%s', implode('+', $kt));
// Yggdrasil host only
if (!preg_match(YGGDRASIL_HOST_REGEX, str_replace(['[',']'], false, $host->value)))
{
continue;
}
/// Address Tracker
foreach ($db->findAddressTrackerByMagnetId($magnet->magnetId) as $result)
{
$addressTracker = $db->getAddressTracker($result->addressTrackerId);
$link->magnet[] = sprintf('tr=%s', urlencode($port->value ? sprintf('%s://%s:%s%s', $scheme->value,
$host->value,
$port->value,
$uri->value) : sprintf('%s://%s%s', $scheme->value,
$host->value,
$uri->value)));
}
$scheme = $db->getScheme($addressTracker->schemeId);
$host = $db->getHost($addressTracker->hostId);
$port = $db->getPort($addressTracker->portId);
$uri = $db->getUri($addressTracker->uriId);
// Append trackers.json
foreach (json_decode(file_get_contents(__DIR__ . '/../config/trackers.json')) as $tracker)
// Yggdrasil host only
if (!preg_match(YGGDRASIL_HOST_REGEX, str_replace(['[',']'], false, $host->value)))
{
$link->magnet[] = sprintf('tr=%s', urlencode($tracker->announce));
continue;
}
/// Acceptable Source
foreach ($db->findAcceptableSourceByMagnetId($magnet->magnetId) as $result)
{
$acceptableSource = $db->getAcceptableSource($result->acceptableSourceId);
$link->magnet[] = sprintf('tr=%s', urlencode($port->value ? sprintf('%s://%s:%s%s', $scheme->value,
$host->value,
$port->value,
$uri->value) : sprintf('%s://%s%s', $scheme->value,
$host->value,
$uri->value)));
}
$scheme = $db->getScheme($acceptableSource->schemeId);
$host = $db->getHost($acceptableSource->hostId);
$port = $db->getPort($acceptableSource->portId);
$uri = $db->getUri($acceptableSource->uriId);
// Append trackers.json
foreach (json_decode(file_get_contents(__DIR__ . '/../config/trackers.json')) as $tracker)
{
$link->magnet[] = sprintf('tr=%s', urlencode($tracker->announce));
}
// Yggdrasil host only
if (!preg_match(YGGDRASIL_HOST_REGEX, str_replace(['[',']'], false, $host->value)))
{
continue;
}
/// Acceptable Source
foreach ($db->findAcceptableSourceByMagnetId($magnet->magnetId) as $result)
{
$acceptableSource = $db->getAcceptableSource($result->acceptableSourceId);
$link->magnet[] = sprintf('as=%s', urlencode($port->value ? sprintf('%s://%s:%s%s', $scheme->value,
$host->value,
$port->value,
$uri->value) : sprintf('%s://%s%s', $scheme->value,
$host->value,
$uri->value)));
$link->direct[] = $port->value ? sprintf('%s://%s:%s%s', $scheme->value,
$host->value,
$port->value,
$uri->value) : sprintf('%s://%s%s', $scheme->value,
$host->value,
$uri->value);
}
$scheme = $db->getScheme($acceptableSource->schemeId);
$host = $db->getHost($acceptableSource->hostId);
$port = $db->getPort($acceptableSource->portId);
$uri = $db->getUri($acceptableSource->uriId);
/// Exact Source
foreach ($db->findExactSourceByMagnetId($magnet->magnetId) as $result)
// Yggdrasil host only
if (!preg_match(YGGDRASIL_HOST_REGEX, str_replace(['[',']'], false, $host->value)))
{
$eXactSource = $db->getExactSource($result->eXactSourceId);
continue;
}
$scheme = $db->getScheme($eXactSource->schemeId);
$host = $db->getHost($eXactSource->hostId);
$port = $db->getPort($eXactSource->portId);
$uri = $db->getUri($eXactSource->uriId);
$link->magnet[] = sprintf('as=%s', urlencode($port->value ? sprintf('%s://%s:%s%s', $scheme->value,
$host->value,
$port->value,
$uri->value) : sprintf('%s://%s%s', $scheme->value,
$host->value,
$uri->value)));
$link->direct[] = $port->value ? sprintf('%s://%s:%s%s', $scheme->value,
$host->value,
$port->value,
$uri->value) : sprintf('%s://%s%s', $scheme->value,
$host->value,
$uri->value);
}
// Yggdrasil host only
if (!preg_match(YGGDRASIL_HOST_REGEX, str_replace(['[',']'], false, $host->value)))
{
continue;
}
/// Exact Source
foreach ($db->findExactSourceByMagnetId($magnet->magnetId) as $result)
{
$eXactSource = $db->getExactSource($result->eXactSourceId);
$link->magnet[] = sprintf('xs=%s', urlencode($port->value ? sprintf('%s://%s:%s%s', $scheme->value,
$host->value,
$port->value,
$uri->value) : sprintf('%s://%s%s', $scheme->value,
$host->value,
$uri->value)));
$scheme = $db->getScheme($eXactSource->schemeId);
$host = $db->getHost($eXactSource->hostId);
$port = $db->getPort($eXactSource->portId);
$uri = $db->getUri($eXactSource->uriId);
// Yggdrasil host only
if (!preg_match(YGGDRASIL_HOST_REGEX, str_replace(['[',']'], false, $host->value)))
{
continue;
}
// Return html
$response->html->title = sprintf(
_('%s - Download - %s'),
htmlentities($magnet->metaTitle),
WEBSITE_NAME
);
$link->magnet[] = sprintf('xs=%s', urlencode($port->value ? sprintf('%s://%s:%s%s', $scheme->value,
$host->value,
$port->value,
$uri->value) : sprintf('%s://%s%s', $scheme->value,
$host->value,
$uri->value)));
}
// Return html
$response->html->title = sprintf(
_('%s - Download - %s'),
htmlentities($magnet->metaTitle),
WEBSITE_NAME
);
$response->html->h1 = htmlentities($magnet->metaTitle);
$response->html->h1 = htmlentities($magnet->metaTitle);
// @TODO implement .bittorrent, separated v1/v2 magnet links
$response->html->link->magnet = implode('&', array_unique($link->magnet));
$response->html->link->direct = $link->direct;
}
// @TODO implement .bittorrent, separated v1/v2 magnet links
$response->html->link->magnet = implode('&', array_unique($link->magnet));
$response->html->link->direct = $link->direct;
}
?>

8
src/public/edit.php

@ -174,6 +174,14 @@ else if (!($user->address == $db->getUser($magnet->userId)->address || in_array( @@ -174,6 +174,14 @@ else if (!($user->address == $db->getUser($magnet->userId)->address || in_array(
$response->message = _('You have no permissions to edit this magnet!');
}
// On first visit, redirect user to the welcome page with access level question
else if (is_null($user->public))
{
header(
sprintf('Location: %s/welcome.php', WEBSITE_URL)
);
}
// Process form
else {

15
src/public/faq.php

@ -39,6 +39,21 @@ else if (!$userId = $db->initUserId($_SERVER['REMOTE_ADDR'], USER_DEFAULT_APPROV @@ -39,6 +39,21 @@ else if (!$userId = $db->initUserId($_SERVER['REMOTE_ADDR'], USER_DEFAULT_APPROV
$response->message = _('Could not init user session');
}
// Get user
else if (!$user = $db->getUser($userId))
{
$response->success = false;
$response->message = _('Could not init user info');
}
// On first visit, redirect user to the welcome page with access level question
else if (is_null($user->public))
{
header(
sprintf('Location: %s/welcome.php', WEBSITE_URL)
);
}
?>
<!DOCTYPE html>
<html lang="en-US">

8
src/public/index.php

@ -71,6 +71,14 @@ else if (!$user = $db->getUser($userId)) @@ -71,6 +71,14 @@ else if (!$user = $db->getUser($userId))
$response->message = _('Could not init user info');
}
// On first visit, redirect user to the welcome page with access level question
else if (is_null($user->public))
{
header(
sprintf('Location: %s/welcome.php', WEBSITE_URL)
);
}
// Request valid
else
{

8
src/public/magnet.php

@ -68,6 +68,14 @@ else if (!$magnet = $db->getMagnet(isset($_GET['magnetId']) ? (int) $_GET['magne @@ -68,6 +68,14 @@ else if (!$magnet = $db->getMagnet(isset($_GET['magnetId']) ? (int) $_GET['magne
$response->message = _('Magnet not found! Submit new magnet link by sending address to the search field.');
}
// On first visit, redirect user to the welcome page with access level question
else if (is_null($user->public))
{
header(
sprintf('Location: %s/welcome.php', WEBSITE_URL)
);
}
// Request valid
else
{

15
src/public/node.php

@ -39,6 +39,21 @@ else if (!$userId = $db->initUserId($_SERVER['REMOTE_ADDR'], USER_DEFAULT_APPROV @@ -39,6 +39,21 @@ else if (!$userId = $db->initUserId($_SERVER['REMOTE_ADDR'], USER_DEFAULT_APPROV
$response->message = _('Could not init user session');
}
// Get user
else if (!$user = $db->getUser($userId))
{
$response->success = false;
$response->message = _('Could not init user info');
}
// On first visit, redirect user to the welcome page with access level question
else if (is_null($user->public))
{
header(
sprintf('Location: %s/welcome.php', WEBSITE_URL)
);
}
?>
<!DOCTYPE html>
<html lang="en-US">

4
src/public/welcome.php

@ -102,14 +102,14 @@ else if (isset($_POST['public'])) @@ -102,14 +102,14 @@ else if (isset($_POST['public']))
<div class="margin-b-24 padding-b-16 border-bottom-default">
<h1 class=""><?php echo _('Welcome, stranger!') ?></h1>
</div>
<p class="margin-b-8"><?php echo _('YGGtracker use Yggdrasil address to identify users without registration') ?></p>
<p class="margin-b-8"><?php echo _('YGGtracker uses Yggdrasil address to identify users without registration') ?></p>
<p class="margin-b-16"><?php echo _('following address could be shared with independent nodes to allow you manage own content everywhere') ?></p>
<h2 class="margin-b-16"><?php echo $user->address ?></h2>
<form name="public" action="<?php echo sprintf('%s/welcome.php', WEBSITE_URL) ?>" method="post">
<div class="margin-b-16">
<label class="text-color-green margin-y-8 margin-x-4" for="public-1">
<input type="radio" id="public-1" name="public" value="1" checked="checked" />
<?php echo _('Allow data distribution') ?>
<?php echo _('Allow address distribution') ?>
</label>
<label class="text-color-pink margin-y-8 margin-x-4" for="public-0">
<input type="radio" id="public-0" name="public" value="0" />

Loading…
Cancel
Save