Если вы не возражаете немного повозиться, вы можете сделать это.
Клонировать источник
Найти эти строки в исходных файлах, которые определяют, чтозарегистрирован как слушатель 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 из источника согласно инструкциям