стоит
Спойлер
отмечу что я просматриваю дебаглог и ранее такого не замечал
либо это вот прям на днях стало либо хз
стоит
отмечу что я просматриваю дебаглог и ранее такого не замечал
либо это вот прям на днях стало либо хз
Вот код для получения даты/времени в логе. Тут четко localtime используется.
int fprint_localtime(FILE *F)
{
struct tm t;
time_t now;
time(&now);
localtime_r(&now,&t);
return fprintf(F, "%02d.%02d.%04d %02d:%02d:%02d", t.tm_mday, t.tm_mon + 1, t.tm_year + 1900, t.tm_hour, t.tm_min, t.tm_sec);
}
Проверил у себя. Время нормальное.
Что говорит команда date
? Там пишется часовой пояс
странная фигня, за послед неделю в запрете ничего не менял
на роутере только с форвард днс игрался для пары сайтов
PS
–debug=syslog пишет нормальное время
Мог localtime_r по какой-то причине вернуть ошибку, и она не проверяется.
Но по какой - это вопрос. Вроде оно не зависит от файлов таймзоны в системе.
## ERRORS
The *localtime*() function shall fail if:
**EOVERFLOW**
The result cannot be represented.
Если левый 64-битный time_t туда подсунуть, который +миллиарды лет. Но этого нет, тк там time() используется
syslog свое время пишет, с zapret никак не связано
Сейчас если убрать что-то из аутолиста и подергать проблема все еще есть ?
Может это была кратковременная ситуация неправильного пояса при обновлении времени или еще по какой-то причине ?
проблема всё еще есть
поставил таити option timezone ‘<-10>10’
root@RT-AX59U:~# /etc/init.d/sysntpd restart
root@RT-AX59U:~# date
Sat Nov 16 20:47:56 -10 2024
в дебаг логе всё равно -3 от мск
17.11.2024 06:49:01 : rutor.info : profile 4 : client 192.168.1.8:50022 : proto tls : adding to /opt/zapret/ipset/zapret-hosts-auto.txt
PS
роутер рибутнул
PSS
не критично конечно если это не на что не влияет, но интерено с фига ли так стало
strace показывает, что при каждом логировании записи идет обращение к файлу /etc/TZ
open("/opt/zapret/ipset/zapret-hosts-auto-debug.log", O_WRONLY|O_CREAT|O_APPEND|O_LARGEFILE, 0666) = 6
open("/etc/TZ", O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_CLOEXEC) = 7
он есть ? что в нем ?
Вообще такой формат лучше не использовать.
Либо YYYY-MM-DD
(ISO)
Либо 17 Nov 2024
(WEB/HTTP)
ls -l /etc/TZ
lrwxrwxrwx 1 root root 7 Jul 16 01:14 /etc/TZ → /tmp/TZ
MSK-3
Все ясно. Дело в сборке на github.
В openwrt используется такой патч для musl
--- a/src/time/__tz.c
+++ b/src/time/__tz.c
@@ -32,6 +32,9 @@ static int r0[5], r1[5];
static const unsigned char *zi, *trans, *index, *types, *abbrevs, *abbrevs_end;
static size_t map_size;
+static const char *tzfile;
+static size_t tzfile_size;
+
static char old_tz_buf[32];
static char *old_tz = old_tz_buf;
static size_t old_tz_size = sizeof old_tz_buf;
@@ -133,6 +136,15 @@ static void do_tzset()
"/usr/share/zoneinfo/\0/share/zoneinfo/\0/etc/zoneinfo/\0";
s = getenv("TZ");
+
+ /* if TZ is empty try to read it from /etc/TZ */
+ if (!s || !*s) {
+ if (tzfile)
+ __munmap((void*)tzfile, tzfile_size);
+
+ s = tzfile = (void *)__map_file("/etc/TZ", &tzfile_size);
+ }
+
if (!s) s = "/etc/localtime";
if (!*s) s = __utc;
без него под openwrt не ставится таймзона и в логах время GMT
Тут вопрос решается только пересборкой тулчейна с этим патчем
или подвезти с классического linux файл /etc/localtime
или пересобрать самому бинарики по docs/compile
или установить env variable /etc/TZ. для nfqws получается нужно лезть в юнит procd или скрипты запуска.
или ln -f /etc/TZ /etc/localtime
отлично что нашли причину
с этой проблемой столкнуться все кто на openwrt и её надо фиксить только самостоятельно?
Все не так просто.
В openwrt этот патч был сделан, чтобы не тянуть за собой сложную структуру классического файла /etc/localtime. Он был заменен на простой текстовик.
И его классический musl не понимает.
Если подтянуть /etc/localtime с классического linux, сделать export TZ=/etc/localtime
то начинает работать.
По хорошему тут надо собирать патченым тулчейном
к сожалению не помогло, роутер рибутал
root@RT-AX59U:~# ls -l /etc/localtime
lrwxr-xr-x 2 root root 7 Jul 16 01:14 /etc/localtime → /tmp/TZ
root@RT-AX59U:~#
тоесть лучше не делать export TZ=/etc/localtime с линукс файла?
не хочется навредить, с учётом не серьёзности проблемы
Выдать для этого сайта другой IP, который не в блоке ) Прикиньте, так можно было
Правда, нужен еще перезапуск браузера, чтобы заблоченный IP из кэша DNS стерся, а то браузер так и будет в заблоченный долбиться
Если сайт за cf или у него один айпишник то не выдаст ничего все равно
Для кимоно - выдаст
Достаточно подтянуть /etc/localtime с классического. Это работает.
а с чего оно началось то?
Раньше точно было нормальное время да и ты сам говоришь у тебя нормально
У меня самосборка. До гитхаба оно собиралось в тулчейне openwrt
а как скомпилировать запрет для опенврт? это надо компилировать на самом роутере чтобы получился бинарник который запустится именно там? мне вебморда пишет что у роутера архитектура ARMv8 Processor rev 4, для такой архитектуры можно сделать бинарник на обычном x64 компе?