From d60e4400a2bfbe34328d1cd2a4b974553ca1f069 Mon Sep 17 00:00:00 2001 From: Pablo Ferreiro Date: Sun, 20 Feb 2022 16:25:15 +0100 Subject: [PATCH] Instance-level proxy and test endpoint fix --- .env.example | 10 ++++++++-- app/Controllers/SettingsController.php | 2 +- app/Controllers/UserController.php | 3 ++- app/Helpers/Cookies.php | 6 +++--- app/Helpers/Misc.php | 15 +++++++++++---- components/following_tags.latte | 9 --------- components/settings/proxy.latte | 2 +- composer.lock | 12 ++++++------ views/video.latte | 16 ++++++++++------ 9 files changed, 42 insertions(+), 33 deletions(-) delete mode 100644 components/following_tags.latte diff --git a/.env.example b/.env.example index 2e81b81..58f0789 100644 --- a/.env.example +++ b/.env.example @@ -2,8 +2,14 @@ # LATTE_CACHE=/tmp/proxitok_api # Path for Latte cache, leave commented for ./cache/latte # API CONFIG -# USE_TEST_ENDPOINTS=1 # Discomment for usage of t.tiktok.com -# SIGNER_URL="https://tiktok-sign.herokuapp.com/signature" # External signing service +# USE_TEST_ENDPOINTS=1 # Discomment for usage of testing TikTok endpoints, may help sometimes +# SIGNER_URL="https://example.com" # External signing service + +# Proxy Config, will be used to make TikTok requests, useful if having VERIFY_CODE issues +# PROXY_HOST=HOSTNAME +# PROXY_PORT=8080 +# PROXY_USERNAME=USERNAME +# PROXY_PASSWORD=PASSWORD # API_CACHE=redis # Cache engine for TikTok Api, (more info on README) # Redis cache, used on Helpers\CacheEngines\RedisCache diff --git a/app/Controllers/SettingsController.php b/app/Controllers/SettingsController.php index f47561f..670a3c2 100644 --- a/app/Controllers/SettingsController.php +++ b/app/Controllers/SettingsController.php @@ -8,7 +8,7 @@ use App\Models\SettingsTemplate; class SettingsController { static public function index() { $latte = Misc::latte(); - $latte->render(Misc::getView('settings'), new SettingsTemplate()); + $latte->render(Misc::getView('settings'), new SettingsTemplate); } static public function proxy() { diff --git a/app/Controllers/UserController.php b/app/Controllers/UserController.php index 343eb2f..3912f7d 100644 --- a/app/Controllers/UserController.php +++ b/app/Controllers/UserController.php @@ -13,8 +13,9 @@ class UserController { $feed = $api->getUserFeed($username, $cursor); if ($feed->meta->success) { if ($feed->info->detail->privateAccount) { - http_response_code(400); + http_response_code(403); echo 'Private account detected! Not supported'; + exit; } $latte = Misc::latte(); $latte->render(Misc::getView('user'), new FeedTemplate($feed->info->detail->nickname, $feed)); diff --git a/app/Helpers/Cookies.php b/app/Helpers/Cookies.php index 97e277b..0e85435 100644 --- a/app/Helpers/Cookies.php +++ b/app/Helpers/Cookies.php @@ -2,13 +2,13 @@ namespace App\Helpers; class Cookies { - const PROXY = ['proxy-host', 'proxy-port', 'proxy-username', 'proxy-password']; + const PROXY = ['host', 'port', 'user', 'password']; - static public function get(string $name): string { + static public function get(string $name): ?string { if (isset($_COOKIE[$name]) && !empty($_COOKIE[$name])) { return $_COOKIE[$name]; } - return ''; + return null; } static public function exists(string $name): bool { diff --git a/app/Helpers/Misc.php b/app/Helpers/Misc.php index 7734bfc..e3ddede 100644 --- a/app/Helpers/Misc.php +++ b/app/Helpers/Misc.php @@ -17,7 +17,7 @@ class Misc { return self::env('APP_URL', '') . $endpoint; } - static public function env(string $key, string $default_value): string { + static public function env(string $key, $default_value) { return $_ENV[$key] ?? $default_value; } @@ -34,16 +34,23 @@ class Misc { static public function api(): \TikScraper\Api { $options = [ 'remote_signer' => self::env('SIGNER_URL', 'http://localhost:8080/signature'), - 'use_test_endpoints' => self::env('USE_TEST_ENDPOINTS', false) + 'use_test_endpoints' => self::env('USE_TEST_ENDPOINTS', false), + // Instance level proxy config + 'proxy' => [ + 'host' => self::env('PROXY_HOST', null), + 'port' => self::env('PROXY_PORT', null), + 'user' => self::env('PROXY_USER', null), + 'password' => self::env('PROXY_PASSWORD', null) + ] ]; - $cacheEngine = false; - // Proxy config + // User level proxy config, will overwrite instance config foreach(Cookies::PROXY as $proxy_element) { if (isset($_COOKIE[$proxy_element])) { $options['proxy'][$proxy_element] = $_COOKIE[$proxy_element]; } } // Cache config + $cacheEngine = false; if (isset($_ENV['API_CACHE'])) { switch ($_ENV['API_CACHE']) { case 'json': diff --git a/components/following_tags.latte b/components/following_tags.latte deleted file mode 100644 index a6afc3e..0000000 --- a/components/following_tags.latte +++ /dev/null @@ -1,9 +0,0 @@ -
- {if !empty($following)} - {foreach $following as $user} - {$user} - {/foreach} - {else} -

None

- {/if} -
diff --git a/components/settings/proxy.latte b/components/settings/proxy.latte index 8b60013..1b24d4e 100644 --- a/components/settings/proxy.latte +++ b/components/settings/proxy.latte @@ -1,7 +1,7 @@
{foreach $proxy_elements as $proxy_element}
- +
diff --git a/composer.lock b/composer.lock index ef9c7ce..02c13b2 100644 --- a/composer.lock +++ b/composer.lock @@ -306,16 +306,16 @@ }, { "name": "pablouser1/tikscraper", - "version": "v1.2.4", + "version": "v1.2.5.1", "source": { "type": "git", "url": "https://github.com/pablouser1/TikScraperPHP.git", - "reference": "577e1c1d7945c87e2bad2000fec1f9a7c0b9cf68" + "reference": "77b336877d942633dfbfe78d8e67875d0c9089f0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/pablouser1/TikScraperPHP/zipball/577e1c1d7945c87e2bad2000fec1f9a7c0b9cf68", - "reference": "577e1c1d7945c87e2bad2000fec1f9a7c0b9cf68", + "url": "https://api.github.com/repos/pablouser1/TikScraperPHP/zipball/77b336877d942633dfbfe78d8e67875d0c9089f0", + "reference": "77b336877d942633dfbfe78d8e67875d0c9089f0", "shasum": "" }, "require": { @@ -339,9 +339,9 @@ "description": "Get data from TikTok API", "support": { "issues": "https://github.com/pablouser1/TikScraperPHP/issues", - "source": "https://github.com/pablouser1/TikScraperPHP/tree/v1.2.4" + "source": "https://github.com/pablouser1/TikScraperPHP/tree/v1.2.5.1" }, - "time": "2022-02-16T11:53:00+00:00" + "time": "2022-02-20T15:16:50+00:00" }, { "name": "phpoption/phpoption", diff --git a/views/video.latte b/views/video.latte index f1fb7cb..d97813f 100644 --- a/views/video.latte +++ b/views/video.latte @@ -1,22 +1,26 @@ {layout '../layouts/hero.latte'} {block content} + {do $item = $feed->items[0]}
-

Video by {$feed->info->detail->uniqueId}

-

{$feed->items[0]->desc}

+

{$item->desc}

Played {number($feed->info->stats->playCount)} times

Shared {number($feed->info->stats->shareCount)} times / {number($feed->info->stats->commentCount)} comments


- Download video -

{$feed->items[0]->music->title}

- + +

{$item->music->title}

+