Фил Найт - Продавец обуви. История компании Nike
Фил Найт — Продавец обуви. История компании Nike
Июнь 9, 2019
Деньги к Деньгам | Игорь Вагин
Деньги к Деньгам | Игорь Вагин
Июнь 9, 2019
Показать все
Создаем сайт в Tor сети

Многим людям, которые не очень хорошо разбираются в IT сфере, кажется, что создать и поднять свой собственный сайт в торе очень сложно и геморройно. Тем не менее, данная статья признана развеять этот миф и доказать, что даже человек, в первый раз установивший на флешку Linux уже способен сделать себе простой сайт, который будет нормально работать и функционировать.

Всё что нам потребуется — это компиляторы языков Си / Go, операционная система Linux (некоторые UNIX подобные также сойдут), программа make и пакет tor. При помощи всех этих средств мы можем начать стряпню.

Здесь будет расписан соответственно код, который поможет автоматизировать создание сайта и внесение изменений в конфигурационный файл тора. Этот код будет написан на языке Си.

На языке же программирования Go мы будем создавать непосредственно серверную программу.

Статья не является документацией такого рода, что я буду объяснять написанный мною код.
Здесь вы сами должны будете анализировать код и пытаться понимать что написано.

Если вы не знаете языки программирования, но хотите выучить хоть какой-то, то не теряйте времени и учитесь. Благо информации в интернете по многим языкам предостаточно.
Если вы уже знаете хотя бы основы выбранных мною языков, тогда добро пожаловать в мир, где вы будете сами анализировать код.
Если же вы в программировании NULL или не знаете выбранные мною языки, то не переживайте, я надеюсь, не будет сложной задачей выучить две комбинации клавиш Ctrl+C и Ctrl+V.

Ну и давайте начинать.
Первое, что нам нужно сделать — это подумать об архитектуре программы.
Я лично разбил программу, на пять составных частей:
1. [ Подготовка | backgr.c ] Создание директорий и первоначальных файлов
2. [ Конфигурация | confgr.c ] Дополнение torrc и запуск сервисов tor’a
3. [ Результаты | result.c ] Получение hostname файла
4. [ Запуск | wakeup.c ] Поднятие сайта в сети tor
5. [ Связка | main.c ] Связка вышеперечисленных программ

Помимо файлов расширения .c будут также и заголовочные файлы расширения .h:
1. [ Константы | macro.h ]
2. [ Типы данных | types.h ]
3. [ Связка функций | onion.h ]

Код этих заголовочных файлов крохотный, так что можем сразу его посмотреть:

Последний файл, в нашей коллекции — это Makefile,
который просто содержит инструкции для компиляции файлов расширения .c:

И теперь приступим непосредственно к нашим Си файлам.
Кода будет много, так что попытайтесь запастись чайком и печеньками:

Начнём по порядку с файла backgr.c.
Задачи этого файла следующие:
— Проверка наличия директорий
— Создание директорий при их отсутствии
— Проверка наличия файлов
— Создание файлов при их отсутствии:
Генерация кода html и go файлов.

Файл confgr.c
Задачи:
— Проверка конфигурационного файла torrc на содержание следующих двух строк:
HiddenServiceDir /var/lib/tor/onion/
HiddenServicePort 80 127.0.0.1:80
— Запись этих строк в конфигурационный файл torrc при их отсутствии
— Запуск сервисов tor’a: systemctl start tor.service
— Перезапуск сервисов tor’a: systemctl restart tor.service

Файл result.c
Задача:
— Копирование файла hostname в директорию /www

Файл wakeup.c
Задачи:
— Компиляция файла языка Go
— Запуск скомпилированной программы

Все вышеперечисленные файлы должны находиться в одной директории.
Компиляция и запуск нашей программы будет выглядить следующим образом:

$ make build
$ sudo ./main

При компиляции будет следующий результат:

Программу необходимо запускать из под root пользователя, так как она работает с объектами вне директории обычного пользователя.

При первом запуске самой программы, мы увидем следующее:

Теперь мы имеем фактически две директории:
1) /var/lib/tor/onion/ — директория, в которой расположены файлы hostname и private_key
Файл hostname содержит просто сгенерированное имя вашего .onion сайта.
Файл же private_key содержит приватный RSA ключ вашего сайта.
И данный файл необходимо хранить как зеницу ока, иначе если вы его потеряете, то и потеряете хостнейм.

2) /www/ — директория, в которой расположен сгенерированный Go файл, скомпилированный Go файл, также содержится hostname сайта и соответственно здесь находится директория onion (в нашем случае), в которой будут содержаться все ваши html/css/js файлы.

Если вы теперь попробуете перейти по хостнейму, допустим в тор-браузере, то у вас отобразится сгенерированный вами сайт, который вы уже впоследствии можете сами разукрашивать.

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

Всё, статья подошла к концу. Если вы хотите усовершенствовать ваш новый получившийся сгенерированный сайт, чтобы там было не просто сообщение на уровне «hello, world», а что-то стоящее, то учитесь верстать и соответственно выучите какой-нибудь серверный язык программирования (в данном примере — это язык Go. Конечно можно было бы написать и на чистом Си, но ещё пару сотен строк кода выкладывать не особо хочется).

0

Автор публикации

не в сети 2 месяца

Александр Никитюк

17
Комментарии: 13Публикации: 165Регистрация: 17-05-2019
ПОДЕЛИСЬ С ДРУЗЬЯМИ

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

один × один =

Авторизация
*
*

пять × четыре =

Регистрация
*
*
*
Пароль не введен
*

7 − 2 =

Генерация пароля

десять + 4 =