LINUX.ORG.RU

Сообщения gobot

 

nginx MAP из тысячей IP

 , , , ,

У меня есть в iptables(ipset) список около 20000 IP, которые заблокированы. Хотелось бы убрать их из iptables и перенести блокировку в nginx. На ум приходит только MAP


  • Будет ли она тормозить nginx c таким списком?
  • Как бы ее обновлять динамически? На ум приходит только include, генерить файлик с адресами и nginx reload
  • Можно ли генерировать http ответ средством iptables?



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

gobot
()

Nginx установка переменной

 

Хочу динамический fastcgi_read_timeout в зависимости от URL. Например при /stats 1m, /ajax 1s, остальные 3s
Пытаюсь

map $uri  $tm  {
	default "3s";
	"/stats" "1m";
        "/ajax"  "1s"
}
fastcgi_read_timeout $tm;

или даже проще
set $tm "1s";
fastcgi_read_timeout $tm;


Ругается «fastcgi_read_timeout» directive invalid value"
Хотя
set $fpm_sock "/run/php/prod.sock";
fastcgi_pass  unix:$fpm_sock;

работает

gobot
()

Nginx таймайт ожидания

 

Есть nginx+php-fpm через unix socket.
Пул static

...
pm = static
pm.max_children = 300
pm.max_requests = 1000
request_terminate_timeout = 60s
listen.backlog = -1
...

Когда одновременных клиентов >= 300, новые клиенты ожидают освобождения места в пуле(как я предполагаю :)). Это ожидание иногда доходит до минуты. Увеличивать max_children нет смысла, т.к. в нормальном режиме active processes < 10. Хотелось бы ограничить это время и сбрасывать принудительно

Пробовал в nginx
fastcgi_connect_timeout 1s;

Не помогло

gobot
()

Safari HLS отсутствует плагин

 , ,

На MacOS 10.13, Safari 11.1.2 при открывании напрямую файла .m3u8 выходит сообщение о том, что отсутствует плагин. Также не работают плееры, которые используют HLS в качестве доставки видео. Вроде как HLS родной формат Apple, что ж ему надо собаке?

gobot
()

Странности nginx

 ,

С таким конфигом сервер выдает всегда 404, когда запрос по http идет. Если https использутся то норм

location / {

  if ($scheme = "http") {

  }

  try_files $uri $uri/ @php;
}


С этим конфигом нормально
location / {
  try_files $uri $uri/ @php;
}


Т.е. если if(true) то выдает 404. В IF можно подставлять любую проверку, главное чтобы было TRUE, даже если $uri = «/» будет, то сервер опять же выдает 404. Ничего не понимаю, почему он не доходит до try_files, а попадает в IF(){} и там как я понял затыкается

gobot
()

Тест сайта на IOS Safari

 , , ,

Раньше был сафари под винду, сейчас его нет. Есть какие то эмуляторы

iPadian - платный, пробовал какую то бесплатную версию, ничего не получилось
MobiOne Studio - проект официально прекращен
Air iPhone - не удалось установить
Xamarin - не понятно, вроде какой то фреймворк для Visual Studio

Appetize.Io - онлайн сервис, реально работает, но не удобно. Нет консоли, лимит по времени, маленький экран

Что ещё есть??

gobot
()

Symfony маршрут /images/*

 

Как в Symfony 2 сделать route, чтобы в него попадали все картинки

/images/*
/images/dir/3/pic.jpg
/images/pic.jpg
/images/subdir/pic.jpg



Делаю так

/**
* @Route("/images/*", name="img")
*/
public function image(Request $request){}

но ничерта не работает. неужели нельзя написать regexp?

gobot
()

В хроме приостанавливается видео

 , ,

В последнем хроме почему то примерно через 30-120 сек приостанавливается видео. При этом звук продолжает идти
Навесил уже все события(error, abort, pause, suspend, interruptend, ended...) - ничего подозрительного нет. Событие progress генерируется, но видео остановлено. Ошибок нет video.error = null. С сетью все норм, в консоле пусто. Проверял в Опере - нормально идет уже пол часа.
Параметры такие

autoplay=false 
muted=true

Заметил, что перестает расти счетчик video.webkitDecodedFrameCount

gobot
()

ffmpeg i-frame

 , , , ,

Делаю стрим: rtp => ffmpeg => rtmp

Ffmpeg берет поток из RTP(h264+aac), без перекодировки видео и шлет его на rtmp сервер. Все нормально работает, но если видео остановить(нажать на паузу), то в rtmp не будут передаваться ключевые кадры(iframe) и клиент не увидит статичной картинки. Если нажать на play, то нормально, видео пойдет.

Можно как-нибудь заставить ffmpeg генерировать i-frame(ключевой) без перекодировки(-vcodec copy) видео? Точнее нужно отправлять последний iframe(кэшировать?), если он не был отправлен допустим последние 3 сек. В нормальном режиме интервал около 2-3 сек.

Делала через -force_key_frames 0:00:01 не помогает

Или как заставить слать этот кадр источник(в моем случае браузер, webrtc). Получаю поток через getUserMedia(mediaConstraints), но в параметрах нет возможности указать что то типа force keyframe interval

gobot
()

ISO/IEC

 , , ,

Мне нужна таблица audioProfileLevelIndication Values из ISO/IEC 14496-1 Coding of audio-visual objects — Part 1

Вот эта
https://www.iso.org/standard/55688.html

Неужели я должен ее покупать и почему? Неужели эта информация такая секретная?

gobot
()

Расшифровка параметров кодека

 ,

Хочу настроить aac и h264 кодеки
Читаю https://tools.ietf.org/html/rfc3640#section-3.3.6

Настройка такая(5.1 channel AAC stream with a
sampling rate of 48 kHz)

streamtype=5;profile-level-id=16;mode=AAC-hbr;config=11B0;sizelength=13;indexlength=3;indexDeltaLength=3

Хочу понять как генерировать profile-level-id и config, для настройки профилей

написано что config это шестнадцатеричное число которое является AudioSpecificConfig в ISO/IEC 14496-3. Открываю http://read.pudn.com/downloads98/doc/comm/401153/14496/ISO_IEC_14496-3 Part 3...

Там поиском нахожу AudioSpecificConfig
Table 1.8 – Syntax of AudioSpecificConfig()
AudioSpecificConfig ()
{
audioObjectType; 5 bslbf
samplingFrequencyIndex; 4 bslbf
if ( samplingFrequencyIndex==0xf )
samplingFrequency; 24 uimsbf
channelConfiguration; 4 bslbf
if ( audioObjectType == 1 || audioObjectType == 2 ||
audioObjectType == 3 || audioObjectType == 4 ||
audioObjectType == 6 || audioObjectType == 7 )
GASpecificConfig();
if ( audioObjectType == 8 )
CelpSpecificConfig();
if ( audioObjectType == 9 )
HvxcSpecificConfig();
if ( audioObjectType == 12 )
TTSSpecificConfig();
if ( audioObjectType == 13 || audioObjectType == 14 ||
audioObjectType == 15 || audioObjectType==16)
StructuredAudioSpecificConfig();
if ( audioObjectType == 17 || audioObjectType == 19 ||
audioObjectType == 20 || audioObjectType == 21 ||
audioObjectType == 22 || audioObjectType == 23 )
GASpecificConfig();
if ( audioObjectType == 24)
ErrorResilientCelpSpecificConfig();
if ( audioObjectType == 25)
ErrorResilientHvxcSpecificConfig();
if ( audioObjectType == 26 || audioObjectType == 27)
ParametricSpecificConfig();
if ( audioObjectType == 17 || audioObjectType == 19 ||
audioObjectType == 20 || audioObjectType == 21 ||
audioObjectType == 22 || audioObjectType == 23 ||
audioObjectType == 24 || audioObjectType == 25 ||
audioObjectType == 26 || audioObjectType == 27 ) {
epConfig; 2 bslbf
if ( epConfig == 2 || epConfig == 3 ) {
ErrorProtectionSpecificConfig();
}


Из этой каши как я понял мне нужно определить

AudioObjectType
samplingFrequencyIndex - мне нужно 0x3 48000Khz
channelConfiguration - 2 - стерео

Вот как это все связать с config & profile-level-id не понятно

Как они получили эти цифры?
profile-level-id=16
config=11B0


Ранее в такие дебри не влезал, но без этого не настроить правильно кодек )

AudioObjectType
A five bit field indicating the audio object type
Допустим я выбираю AudioObjectType=1(AAC Main), что значит пятибитное поле, как куда его писать?

gobot
()

Интересный вопросик)

 

Заметил, что на многих сайтах сейчас есть всплывашка «у нас есть куки(внезапно!), а вы не знали?».

Ну потом:
Да, я знаю идите нах.

Или:
Ох тыж, вот херня, я и не знал что тут есть куки, наверное я должен покинуть этот сайт.

Для чего, для кого эта дичь рассчитана?

gobot
()

Помогите сделать импорт проекта на github

 , , , ,

Мне нужно в проекте https://github.com/ant-media/Ant-Media-Server изменить пару строчек и пересобрать все это дело. Опыт был только с проектами Android, но там сырой Java и вроде как с maven. Недолго думая установил IntelliJ Idea, скачал репозиторий, распаковал папку и сделал импорт Maven project из idea. Вроде как все импортировал, проиндексировал, но когда нажимаю Rebuild Project, то вылазит куча ошибок непонятных мне.
Типа таких

Error:(21, 33) java: cannot find symbol
  symbol:   class IScope
  location: package org.red5.server.api.scope
import org.red5.server.api.scope.IScope;

Документации по сборке вообще нет никакой. Хочу понять правильно ли я вообще начал его собирать и тем ли софтом. Подскажите с чего вообще начать

gobot
()

Android Studio

 ,

Хочу заливать APK на сервер после сборки релиза. Сделал в gradle срипт, работает все нормально, но мне нужно заливать его не после каждой сборки, а только если выбрал в студии через меню Build -> Build bundles -> Build APK.

Делаю так

gradle.buildFinished{
    def source = null

    android.applicationVariants.all { variant ->

        if ( (variant.name).equals("appRelease")) {


            println("Variant: " + variant.name +" "+variant.applicationId)

            variant.outputs.each { output ->
                source = output.outputFile

                if(file(source).exists()) {
                    println("Upload: " + source);

                    def sOutput = new ByteArrayOutputStream()
                    def eOutput = new ByteArrayOutputStream()
                    exec{

                        commandLine curl, "-F apk=@" + source, "htpps://host"
                        standardOutput = sOutput
                        errorOutput = eOutput
                    }


                    assert sOutput.toString().equals("ok") : "Upload APK fail: " + sOutput.toString();

                }


            }
        }

    }

}


Есть ли какое то свойство типа android.buildAPKFomMenu по которому можно будет определять как именно вызывалась сборка?
Ну или какой то может макрос сделать, чтобы по кнопке на сервер заливалось?

gobot
()

Переход в nice

 

Иногда, сами по себе, как то рэндомно, бывает раз в месяц, бывает раз в 4 месяца, некоторые процессы(nginx, php-fpm) переходят в nice = 1. Что может быть, кто их заставляет понижать свой приоритет?
Например, сегодня был переход в nice=1 php-fpm после возросшего iowait(делался бэкап). Может как то с этим связано?

gobot
()

Android загрузка библиотеки

 , ,

Почему то андроид загружает библиотеку не той архитектуры

dalvik.system.PathClassLoader lib/x86
couldn't find "libyuv.so"

Почему он лезет в папку x86, если телефон System.getProperty(«os.arch») == x86_64?

Телефон x86_64 asus ASUS_Z00AD

Проверял на arm64-v8a, armeabi-v7a, там нормально, берет либу из этих папок.

В папке jniLibs есть поддиректории:
armeabi-v7a
arm64-v8a
x86
x86_64
mips64

В коде есть
static{
   System.loadLibrary("yuv");
   System.loadLibrary("enc");
}

gobot
()

Нет root сертификата в андроиде

 ,

Купил сертификат у которого корневой USERTrust RSA Certification Authority, выданный 01.02.2010 и столкнулся с проблемой, что в некоторых андроидах его нет в доверенных. Есть похожий, но там дата стоит 1999 год и кончается в 2019. Поэтому браузер ругается на сайт с этим сертификатом. Правильно ли я понимаю, что решить эту проблему можно только заменой сертификата, у которого корневой есть в старых андроидах?

gobot
()

SSL android 4.3

 , , , ,

На старых(тестил на 4.3) андроид не работает cайт по https.

Браузер пишет:

this certificate isn't from a trusted authority


Вроде как не хватает промежуточного сервера(или о корневом не знает?) в цепочке сертификатов. Сертификат покупал, все цепочки запихал в файлик и скормил nginx.

openssl s_client -connect site.com:443
CONNECTED(00000003)
depth=2 C = US, ST = New Jersey, L = Jersey City, O = The USERTRUST Network, CN = USERTrust RSA Certification Authority
verify return:1
depth=1 C = GB, ST = Greater Manchester, L = Salford, O = Sectigo Limited, CN = Sectigo RSA Domain Validation Secure Server CA
verify return:1
depth=0 OU = Domain Control Validated, OU = PositiveSSL, CN = site.com
verify return:1
---
Certificate chain
 0 s:/OU=Domain Control Validated/OU=PositiveSSL/CN=site.com
   i:/C=GB/ST=Greater Manchester/L=Salford/O=Sectigo Limited/CN=Sectigo RSA Domain Validation Secure Server CA
 1 s:/C=GB/ST=Greater Manchester/L=Salford/O=Sectigo Limited/CN=Sectigo RSA Domain Validation Secure Server CA
   i:/C=US/ST=New Jersey/L=Jersey City/O=The USERTRUST Network/CN=USERTrust RSA Certification Authority
 2 s:/C=US/ST=New Jersey/L=Jersey City/O=The USERTRUST Network/CN=USERTrust RSA Certification Authority
   i:/C=US/ST=New Jersey/L=Jersey City/O=The USERTRUST Network/CN=USERTrust RSA Certification Authority


Что делать?

gobot
()

Глобальный Exception Handler

 , ,

Хочу, чтобы все ошибки отлавливались глобальным обработчиком. Сделал как тут написано https://stackoverflow.com/questions/4427515/using-global-exception-handling-o...
Работает вроде, в него приходят исключения, но программа все равно завершается

Делаю тест в каком то куске кода

progressBar = null;
progressBar.setTitle(title);

соответсвенно генерируется исключение, которое попадает в Thread.UncaughtExceptionHandler
D/AndroidRuntime: Shutting down VM
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.app.ProgressDialog.setTitle(java.lang.CharSequence)' on a null object reference
тут обработка uncaughtException
Application terminated


Если отлавливать явно
try {
    progressBar = null;
    progressBar.setTitle(title);
}catch (Exception e){

}


Тогда норм

gobot
()

Можно ли в Java написать криво программу?

 

Вроде как строго типизированный язык, как с++ и ошибки сведены к 0 теоретически. Какие подводные камни будут при написании крупного(относительно) приложения на андроид?

gobot
()

RSS подписка на новые темы