I-330 - Посты

Опубликовано: Июнь 20, 2023 от I-330

Переписывание веб-кольца Agora на php

Что это такое? :

Недавно я получил приглашение присоединиться к вебингу Agora Road, организованному пользователем voicedrew. Эта замечательная веб-страница была построена на фреймворке onionring, который, несмотря на то, что является очень удобным, полностью написан на javascript. В связи с этим, если бы я встроил виджет веб-кольца на свою страницу, то был бы вынужден внедрить отвратительный javascript на свой чистый и нетронутый сайт. Я не собирался этого допустить.

По правде говоря, я не имею ничего против использования javascript на сайтах. Я считаю, что он предоставляет много полезных инструментов для веб-разработчиков и может безопасно использоваться на больших и малых сайтах. Тем не менее, поскольку я получаю довольно большой процент трафика через tor и терминальные браузеры, такие как lynx, я лично хотел бы избегать использования javascript на своих страницах, где это возможно.

На помощь приходит PHP :

Я пробовал несколько различных инструментов для работы с внутренним контентом, от jhidra до node, но ни один из них не работал так хорошо, как я надеялся. Мне нужно было что-то, с чем можно было бы легко работать и что не занимало бы много ресурсов на моем сервере. В итоге я решил использовать PHP, который, к счастью, прекрасно интегрировался в мой сервер nginx. С небольшой помощью в изучении основ php (спасибо judydev) я получил функциональный прототип виджета веб-ринга на основе php. Все, что мне нужно было сделать, - это создать страницу для каждой логически определяемой кнопки и связать их на лицевой стороне виджета.

Первоначально я рассматривал возможность интеграции php непосредственно во вставку, но затем решил, что будет проще управлять всем сайтом, если я просто создам php-файл для каждой ссылки. Тем не менее, я не вижу проблем, если кто-то попробует интегрировать php непосредственно в сам виджет.

Код :

Что касается самого кода, то я действительно не очень старался. Собственно команда php - это просто набор unix-команд, соединенных друг с другом. Хотя я уверен, что нет ничего практически неправильного в том, чтобы сделать это таким образом, это кажется немного дешевым. Возможно, в будущем я вернусь к этому и буду использовать php-команды для выполнения всего этого, но пока я думаю, что это решение подходит для этой задачи. Не стесняйтесь посмотреть код здесь.

<?php
// сворачивает список пользователей в webring, удаляет текущую страницу,
// а затем перенаправляет на случайного пользователя из этого списка.

exec("curl 'https://voicedrew.xyz/wr/onionring-variables.js' \ | sed -n \"/^'/s/^'//;s/',$//p\" | grep -v 'https://i330.dev' \ a| shuf | head -n 1", $out);
header("Location: ". $out[0]);
?>

<?php
// сворачивает список пользователей, а затем перенаправляет к пользователю,
// следующему за пользователем, упомянутым в команде grep. (это может
// не сработать, если вы являетесь последним пользователем в списке, однако)

exec("curl 'https://voicedrew.xyz/wr/onionring-variables.js' | sed -n \"/^'/s/^'//;s/',$//p\" | grep -i 'https://i330.dev' -A 1 | tail -n 1", $out);
header("Location: ". $out[0]);
?>

Это был интересный проект, и я очень рад, что меня пригласили на agora webring. Я надеюсь, что это поможет тем, кто использует onionring, но не хочет возиться с javascript (нишевый рынок). Если у вас есть вопросы о том, как я настраивал свой сервер, или о чем-либо еще, не стесняйтесь писать мне! Мой e-mail: [email protected].
Хорошего дня!