Добавление пользовательского заголовка для выхода из системы Icecast - PullRequest
0 голосов
/ 13 сентября 2018

Возможно ли, чтобы вывод журнала для icecast считывал переменную из заголовка, отправляемого на сервер?В настоящее время я устанавливаю сервер Icecast в Kuberenetes и пытаюсь сохранить исходный IP-адрес в потоке для анализа данных журнала.Однако даже с необходимыми шагами на стороне kubernetes я не вижу журналы для Icecast имеют исходный IP.Как только я смог прослушать входящий запрос, и я вижу:

X-Real-IP: 142.x.x.x
X-Forwarded-For: 142.x.x.x

Как заголовки, поступающие на сервер.

Можно ли как-нибудь их запихнуть в журналы?

Ответы [ 2 ]

0 голосов
/ 20 сентября 2018

Если вы не возражаете немного повозиться, вы можете сделать это.

Клонировать источник

Найти эти строки в исходных файлах, которые определяют, чтозарегистрирован как слушатель ip:

./src/logging.c:159: client->con->ip,
./src/admin.c:700: xmlNewTextChild(node, NULL, XMLSTR(mode == OMODE_LEGACY ? "IP" : "ip"), XMLSTR(client->con->ip)); 

Добавьте этот фрагмент для определения новой переменной, для него будет установлено значение X-Real-IP заголовок, если он присутствует, или IP-адрес клиента, если нет:

const char *realip;
realip = httpp_getvar (client->parser, "x-real-ip");
if (realip == NULL)
  realip = client->con->ip;

Измените ранее упомянутые строки для ссылки на новую переменную:

./src/logging.c:163: realip,
./src/admin.c:700: xmlNewTextChild(node, NULL, XMLSTR(mode == OMODE_LEGACY ? "IP" : "ip"), XMLSTR(realip));

Сборка Icecast из источника согласно инструкциям

0 голосов
/ 13 сентября 2018

Не сейчас.

Мы планируем поддерживать обратное прокси в версии 2.5.

На данный момент наша общая рекомендация - , а не обратный прокси Icecast из-за множества возможных проблем, помимо потери исходного IP-адреса.

Просто откройте порты Icecast непосредственно в Интернете, например, через переадресацию портов.

edit: Вы можете просто объявить protocol: TCP порты для своей услуги. также «Режим прокси: iptables»

...