push уведомления в андройде
Правильно ли я понимаю, что google имеет доступ к содержимому push-уведомлений?
Правильно ли я понимаю, что google имеет доступ к содержимому push-уведомлений?
Хочется получить информацию за некоторое время для одного процесса какие файлы он читал/писал и сколько данных прочитано/записано для каждого файла.
Есть уточнение: процесс - php-fpm.
Теоретически strace подходит, но нужно парсить его вывод.
А есть ли что-то готовое?
Не могу найти размеры разъёма питания для RPI4
Сколько милиметров диаметры отверстия и штыря?
Питание через usb type-c не рассматривается.
Есть 2 профиля. В одном все работает, во втором безумные тормоза при наличии видео или html5/canvas(?)
Чем можно экспортировать настройки профиля в текстовый вид для последующего сравнения?
Давно я так не охреневал заглянув в комп :)
(Картинки на яндекс-диске. У кого изжога на него - проходите мимо)
Вот так вот, хрусь и пополам! Жертва - Arctic Freezer Xtreme выпуска до 2014 года.
Дело было вечером, время 21 час, т.е. в магазин бежать поздно, да и денег жалко на старенький комп.
Пришлось колхозить крепление из ляминия.
Так оно выглядит перед сборкой.
Есть работающий bigbluebutton сервер. API реализовано на tomcat7
В ходе разборок с одной проблемой выяснилось, что один запрос API дает кучу запросов к несуществующим файлам
grep ENOENT | sort | uniq -c
125 stat("/META-INF/services/javax.xml.parsers.SAXParserFactory", 0x7f55024e1000) = -1 ENOENT (No such file or directory)
8 stat("/META-INF/services/javax.xml.parsers.SAXParserFactory", 0x7f55024e1530) = -1 ENOENT (No such file or directory)
125 stat("/usr/share/bbb-web/META-INF/services/javax.xml.parsers.SAXParserFactory", 0x7f55024e1000) = -1 ENOENT (No such file or directory)
8 stat("/usr/share/bbb-web/META-INF/services/javax.xml.parsers.SAXParserFactory", 0x7f55024e1530) = -1 ENOENT (No such file or directory)
125 stat("/usr/share/bbb-web/WEB-INF/classes/META-INF/services/javax.xml.parsers.SAXParserFactory", 0x7f55024e1000) = -1 ENOENT (No such file or directory)
125 stat("/usr/share/bbb-web/WEB-INF/classes/META-INF/services/javax.xml.parsers.SAXParserFactory", 0x7f55024e1030) = -1 ENOENT (No such file or directory)
8 stat("/usr/share/bbb-web/WEB-INF/classes/META-INF/services/javax.xml.parsers.SAXParserFactory", 0x7f55024e1530) = -1 ENOENT (No such file or directory)
8 stat("/usr/share/bbb-web/WEB-INF/classes/META-INF/services/javax.xml.parsers.SAXParserFactory", 0x7f55024e1560) = -1 ENOENT (No such file or directory)
125 stat("/usr/share/bbb-web/WEB-INF/META-INF/services/javax.xml.parsers.SAXParserFactory", 0x7f55024e1000) = -1 ENOENT (No such file or directory)
8 stat("/usr/share/bbb-web/WEB-INF/META-INF/services/javax.xml.parsers.SAXParserFactory", 0x7f55024e1530) = -1 ENOENT (No such file or directory)
Можно ли это как-то исправить?
В основном проекте решили начать переформатирование кода.
merge дает коллизии по несколько сотен строк :(
При том, что «diff -ubwB» говорит о незначительных изменениях.
Может есть способы немного облегчить/автоматизировать этот процесс ?
Два вопроса:
- есть ли в ffmpeg аппаратного ускорения для перекодирования в vp9 ? (судя по всему из vp8)
- какую железку при этом нужно иметь для этого ?
Есть ли живая поделка для получения object-pinned из классического BPF для актуальных ядер ?
Ну или один работоспособный пример для «iptables -m bpf --bbject-pinned ...»
filter2xdp с github не актуален. За 3 года в ядре что-то сильно поменялось и валидатор eBPF ругается на все инструкции.
Есть работающая связка openssh + pam_oath + freeotp
А чем файл с f2a кодами редактировать кроме как текстовым редактором?
Хочется уметь добавлять/заменить/убавить коды для юзера.
А юзеру, при вводе своего пароля, показывать код и qrcode (для freeotp например).
Вход по ключам при этом тоже существует.
до запуска fuse_main() создается тесколько тредов.
В каждом треде создаётся таймер через timerfd_create(CLOCK_REALTIME, 0)
далее делаем timerfd_settime(tfd, TFD_TIMER_ABSTIME,...)
таймер через 2 секунды и интервал 2 секунды.
все работает!
как только запускается fuse_main() в виде демона, то все чтение из tfd прекращается.
Что это за @#$%^&*! ?
Есть объектный файл с отладочной информацией.
1. Хочется получить список функций имеющихся в нём.
nm или objdump решают эту задачу.
2. Для каждой функции получить список вызываемых функций.
Чем это можно сделать?
Новость не совсем свежая, но все-таки https://www.securitylab.ru/news/504821.php
Под видом обеспечения доступа к гос. ресурсам будут втюхивать корневой сертификат на все девайсы?
Есть вебморда (roundcube) и почтовик на другой машине.
На каждый клик в вебмейле оно подключается на почтовик, что IMHO не здорово.
Есть imapproxy, который умеет кешировать коннекты по логину. На тестовой системе все просто сказочно!
А в продакшене его кто-нибудь использует?
Владельцам ядер ниже 4.4 можно не читать.
Собственно есть cgroup и iptables -m cgroup. Почему бы не создать отдельный cgroup и фильтровать локальный трафик для этой группы?
1. Не забываем включить классную фичу
sysctl -w net.ipv4.ip_early_demux=1
# на ядрах 4.10+
sysctl -w net.ipv4.tcp_early_demux=1
sysctl -w net.ipv4.udp_early_demux=1
2. Создаем группу
mkdir /sys/fs/cgroup/net_cls/testgroup2
echo 1234 >/sys/fs/cgroup/net_cls/testgroup2/net_cls.classid
3. создаем тестовые правила
iptables -A INPUT -m cgroup --cgroup 1234 -p icmp
iptables -A INPUT -m cgroup --cgroup 1234 -p udp
iptables -A INPUT -m cgroup --cgroup 1234 -p tcp
iptables -A OUTPUT -m cgroup --cgroup 1234 -p icmp
iptables -A OUTPUT -m cgroup --cgroup 1234 -p udp
iptables -A OUTPUT -m cgroup --cgroup 1234 -p tcp
4. Переносим себя в эту группу
echo $$ >/sys/fs/cgroup/net_cls/testgroup2/tasks
5. Тестируем UDP
dig google.com
iptables -nvxL INPUT; iptables -nvxL OUTPUT
Chain INPUT (policy ACCEPT 2 packets, 255 bytes)
pkts bytes target prot opt in out source destination
0 0 tcp -- * * 0.0.0.0/0 0.0.0.0/0 cgroup 1234
0 0 udp -- * * 0.0.0.0/0 0.0.0.0/0 cgroup 1234
0 0 icmp -- * * 0.0.0.0/0 0.0.0.0/0 cgroup 1234
Chain OUTPUT (policy ACCEPT 2 packets, 91 bytes)
pkts bytes target prot opt in out source destination
0 0 icmp -- * * 0.0.0.0/0 0.0.0.0/0 cgroup 1234
2 91 udp -- * * 0.0.0.0/0 0.0.0.0/0 cgroup 1234
0 0 tcp -- * * 0.0.0.0/0 0.0.0.0/0 cgroup 1234
6. Тестируем TCP
iptables -Z
wget -4 -O /dev/zero https://google.com
iptables -nvxL INPUT; iptables -nvxL OUTPUT
Chain INPUT (policy ACCEPT 4 packets, 538 bytes)
pkts bytes target prot opt in out source destination
4 538 tcp -- * * 0.0.0.0/0 0.0.0.0/0 cgroup 1234
0 0 udp -- * * 0.0.0.0/0 0.0.0.0/0 cgroup 1234
0 0 icmp -- * * 0.0.0.0/0 0.0.0.0/0 cgroup 1234
Chain OUTPUT (policy ACCEPT 6 packets, 451 bytes)
Chain OUTPUT (policy ACCEPT 6 packets, 451 bytes)
pkts bytes target prot opt in out source destination
0 0 icmp -- * * 0.0.0.0/0 0.0.0.0/0 cgroup 1234
0 0 udp -- * * 0.0.0.0/0 0.0.0.0/0 cgroup 1234
6 451 tcp -- * * 0.0.0.0/0 0.0.0.0/0 cgroup 1234
7. Тестировать остальные протоколы бесполезно, т.к. они не поддерживаются в early_demux
Что имеем в результате? TCP можно контролировать для группы, а с UDP пролный 3.14ц!
Поковыряв ядро становится полностью понятно почему.
Проблема в том, что в UDP можно сделать bind() только на порт, что делает поиск сокета на которые пришли данные в два раза сложнее. __udp4_lib_demux_lookup() делает поиск только по номеру порта и адресу, игнорируя сокеты привязанные только к номеру порта.
Заменив __udp4_lib_demux_lookup() на полноценный поиск udp сокета через __udp4_lib_lookup()
для ядра 4.14.165
diff --git a/net/ipv4/udp.c b/net/ipv4/udp.c
index 731ea78..6143ca5 100644
--- a/net/ipv4/udp.c
+++ b/net/ipv4/udp.c
@@ -2295,8 +2295,8 @@ int udp_v4_early_demux(struct sk_buff *skb)
uh->source, iph->saddr,
dif, sdif);
} else if (skb->pkt_type == PACKET_HOST) {
- sk = __udp4_lib_demux_lookup(net, uh->dest, iph->daddr,
- uh->source, iph->saddr, dif, sdif);
+ sk = __udp4_lib_lookup(net, iph->saddr, uh->source, iph->daddr, uh->dest,
+ dif, 0, &udp_table, NULL);
}
if (!sk || !refcount_inc_not_zero(&sk->sk_refcnt))
Да, это дополнительные накладные расходы, но мы дважды это подтвердили через net.ipv4.ip_early_demux=1 и net.ipv4.udp_early_demux=1
Но теперь мы получаем в п.5
Chain INPUT (policy ACCEPT 2 packets, 255 bytes)
pkts bytes target prot opt in out source destination
0 0 tcp -- * * 0.0.0.0/0 0.0.0.0/0 cgroup 1234
1 226 udp -- * * 0.0.0.0/0 0.0.0.0/0 cgroup 1234
0 0 icmp -- * * 0.0.0.0/0 0.0.0.0/0 cgroup 1234
Chain OUTPUT (policy ACCEPT 2 packets, 91 bytes)
pkts bytes target prot opt in out source destination
0 0 icmp -- * * 0.0.0.0/0 0.0.0.0/0 cgroup 1234
2 91 udp -- * * 0.0.0.0/0 0.0.0.0/0 cgroup 1234
0 0 tcp -- * * 0.0.0.0/0 0.0.0.0/0 cgroup 1234
Но это патч ядра, который не все могут осилить.
Есть возможность получить аналогичный результат при помощи модуля ядра. ( https://github.com/vel21ripn/ipt_sk_helper )
Чтоб оно заработало нужно сделать sysctl -w net.ipv4.ip_early_demux=2
Работа проверялать на 4.4.209 и 4.14.165. Собирается даже на 5.4.х
Если кто может попробовать собрать его и протестировать - напишите что получилось.
PS Если починить эту фичу в официальном ядре, то станет доступной фильтраци входящего трафика по UID/GID.
В продаже появились Li-Ion аккумы с контроллером изображающие батарейки в формате AA/AAA (1.5V)
А никто не встречал Li-Ion аккум в размерах 2xAA изображающий напряжение 2.4-3.0V
Хочется заменить в навигаторе 2 батарейки на Li-Ion аккум.
Как определить, что ядро загружено через kexec если использовалось --reuse-cmdline ?
Никому не доводилось использовать microtik S+RJ10? ( модуль SFP+ 10Gbit/s TP до 20 метров.)
Если верить ddm (и собственным ощущениям) оно греется ~70℃
А не дофига ли?
| ← назад | следующие → |