LINUX.ORG.RU

Сообщения zolden

 

Левые имена в access.log

 

Проверяя логи NGINX случайно заметил много обращений к серверу по неправильному имени сервера.
То есть вместо mysupersite.ru ко мне попадают запросы идущие на mysupersaite.ru, maisupersite и прочее.
Кто-то с большим количеством свободного времени реально наделал похожих имён на мой IP.
Вопросов 2
1) Зачем?
2) Как прекратить эти безобразия?
Конфиг такой:

server {
listen 80;
server_name mysupersite.ru;
location / {return 301 https://somesite.ru$request_uri;}
}


Так как Nginx матчит первую попавшуюся секцию server, в случае если нет точных совпадений, то посетители mysupersaite.ru в итоге попадают на мой https://mysupersite.ru.
И вроде бы ничего страшного, но я недоумеваю.

Пробовал выставить первой секцией
server {
      listen 80 default_server;
      return 444;
}


но это не помогло, всё равно при запросом curl'ом или браузером на неправильный домен попадаю на свой

zolden
()

ssl_certificate vs. ssl_trusted_certificate

 , ,

Решил поиграться с OCSP stapling на Nginx и, не смотря на то, что судя по интернетам там всё просто, SSL test говорит, что у меня оно не взлетает.
Как я понимаю, дело в ssl_trusted_certificate, но не очень понятно что там должно быть и чем он отличается от ssl_certificate.
Лор, научи меня в сертификаты

zolden
()

Nagios и уведомления через Telegram

 ,

На днях, попивая смузи, я понял что мне срочно нужно прикрутить уведомления через Telegram к Nagios, ведь кто, если не мы.
Делал по этому гайду: https://smeretech.com/en/to-use-telegram-with-nagios/
И всё вроде просто:

commmands.cfg

define command{
command_name    notify-service-by-telegram
command_line    /usr/bin/curl --data "chat_id=-129423472" --data text="***** Nagios *****Notification Type: $NOTIFICATIONTYPE$ Service: $SERVICEDESC$ Host: $HOSTALIAS$ Address: $HOSTADDRESS$ State: $SERVICESTATE$ Date/Time: $LONGDATETIME$ Additional Info:$SERVICEOUTPUT$" https://api.telegram.org/bot165684562:ABHfnrDNpkjrtq9cKrLjWPltIAm7kDM6dWs/sendMessage
}


В консоли эта команда работает, сообщения приходят.
При генерации аларма в нагиосе - тишина.

Логи
/var/log/nagios/nagios.debug:[1518204454.517820] [032.2] [pid=25947] Raw notification command: /usr/bin/curl --data "chat_id=-129423472" --data text="***** Nagios *****Notification Type: $NOTIFICATIONTYPE$ Service: $SERVICEDESC$ Host: $HOSTALIAS$ Address: $HOSTADDRESS$ State: $SERVICESTATE$ Date/Time: $LONGDATETIME$ Additional Info:$SERVICEOUTPUT$" https://api.telegram.org/bot165684562:ABHfnrDNpkjrtq9cKrLjWPltIAm7kDM6dWs/sendMessage

/var/log/nagios/nagios.debug:[1518204454.518257] [256.1] [pid=25947] Running command '/usr/bin/curl --data "chat_id=-319923871" --data text="***** Nagios *****Notification Type: PROBLEM Service: Black hawk down Host: $HOSTALIAS$ Address: $HOSTADDRESS$ State: $SERVICESTATE$ Date/Time: $LONGDATETIME$ Additional Info:$SERVICEOUTPUT$" https://api.telegram.org/bot165684562:ABHfnrDNpkjrtq9cKrLjWPltIAm7kDM6dWs/sendMessage$'...

Execution time=0.767 sec, early timeout=0, result=0, output={"ok":false,"error_code":404,"description":"Not Found: method not found"}


Смущает символ доллара(/sendMessage$), который берётся на ровном месте.
Он виден и в логах и в дампе трафика, так что ответ 404 в принципе наверное понятен.
Так как нагиос я впервые увидел только на этой неделе, то не пойму откуда ноги растут.
Перебор разных вариантов с кавычками и опциями curl результата не дал, лор, помоги - подскажи как починить нотификашки и curl

zolden
()

Укоротить путь - Ngnix rewrite?

 

Схема такая:
- стоит Ngnix в качестве reverse-proxy
- за ним стоит Tomcat

Чтобы зайти в нужную админку приходится вводить длинный путь, который, как, понимаю живёт в мозгах Tomcat(лезть в который пока нет желания): http://adminka_ot_zhelezki/long/very/long/path/index.html
Можно ли без изменений на томкате сделать так, чтобы можно было опускать «long/very/long/path/» и ходить на http://adminka_ot_zhelezki/index.html но для Tomcat чтобы всё выглядело по прежнему?

zolden
()

UEFI, grub-install, вот это всё

 , ,

Хочу присунуть одной тёлачке Kubuntu 17.10 в дуалбут(в наличии win10,UEFI, GPT), но инсталлятор каждый раз падает в конце с ошибкой grub-install(неисправимая ошибка).
Для установки загрузчика выбираю раздел EFI.
Тот же образ на другом ноуте с UEFI встал без проблем, но я всё равно попробовал другой образ и тоже неудачно.
Гугл подсказывает в 2017 уже и без GRUB можно всё сделать, но я не догоняю как, помоги мне, лор

zolden
()

UEFI и загрузка ISO

 

Пока я был в криокамере на десктопе все перешли на UEFI плюс у меня у меня чудесным образом пропало желание пердолиться с тонкой настройкой луникса на ноуте, предназначенном для интернетов и сериалов.

Вводные:
Есть ноут с десяткой, которая не радует.
Есть образ кубунты который вполне радует, но что-то переустанавливать и настраивать совершенно неинтересно - дефолта мне хватит.

Вопрос:
Можно ли в UEFI или ещё где добавить пункт загрузки с ISO кубунты(вставлять LiveUSB каждый раз это неспортивно)?

zolden
()

vue.js и состояние кнопок

 ,

Я совсем не веб-разработчик, но для самообучения разбираюсь с vue.js, хочу сделать веб-интерфейс для запуска скриптов на сервере.
Скрипты долгоиграющие, типа запуска и сбора логов и требующие взаимодействия с пользователем.
И никак не могу понять, как реализовать следующую логику с помощью vue.js:
1. Кнопка активна, на ней написано «Start»
2. Пользователь нажимает кнопку, она генерирует ajax запрос, пока ответ не получен - кнопка неактивна(чтобы предотвратить множественные запуски скрипта на сервере) и на ней написано «Starting...»
3. a) При успешном получении ответа от сервера, думаем что скрипт успешно запустился и кнопка должна перейти в активное состояние с надписью «Stop» b) При неуспешном ответе кнопка опять должна вернуться в состояние «Start»
4. При нажатии на «Stop» генерируется ajax запрос, кнопка опять становится неактивной и на ней написано «Stopping...»
5. При получении ответа об успешной остановке скрипта кнопка опять переходит в «Start».

Вопросы:
Логика для v-bind:class слишком сложная, я пока не вижу, как можно переключать состояния просто классами.
1) По идее нужно запихать это всё в @click и методах манипулировать классами? Если да - то как?
2) Кнопок может быть произвольное количество, как надо разделять флаги и состояния в data в таком случае?
Неужели надо плодить флаги: button1_disabled, button2_disabled...buttonN_disabled?

zolden
()

Angular + Webpack: провернуть фарш назад

 , , ,

Я не веб-разработчик от слова совсем, но прилетела мне задача поправить по мелочи(буквально добавить пару кнопок) веб-админку
Сделано всё, судя по всему на Angular2 с использованием Webpack.
На веб-сервере валяется несколько многомегабайтных бандлов с source map, ресуры и прочее нужное, которое я могу редактировать.
В отладчике хрома, как я понимаю, я вижу всю исходную структуру файлов, построенную на основе source map.
Но исходный typescript странспилировался в нечто настолько жуткое(Javascript), что я вряд ли осилю изменение админки редактируя только конечный бандл(хотя совсем косметику поправить получилось).

Вопрос такой:
1) можно ли имея все ресурсы, node_modules и дерево исходников восстановленное хромом полностью воссоздать структуру проекта, поправить оригинальные ангуляровские шаблоны и typescript файлы, а потом всё склеить обратно в бандлы (packajes.json и webpack.config.js у меня нет)?
2) есть ли способ сохранить всё разом, не кликая по одному файлу?
3) может есть иной способ решить задачу(типа напрямую декомпилируя бандл)?

zolden
()

Переключиться на tty COM порта

 , ,

Есть MIPS железка, с кастрированным линуксом и busybox.
Есть на ней COM порт для отладки, подключившись в эту консоль можно видеть отладочное логирование.
Есть telnet, который более удобен, так как не надо извращаться с отладочным кабелем.
Хочется иногда видеть логи с СОМ порта, через telnet подключение, но в виду специфичности архитектуры и обрезанности сборки, на девайсе нет ни minicom, ни screen
Как это реализовать?

zolden
()

Систематизация оборудования

 

Интересно, что сейчас есть в мире для систематизации/каталогизации оборудования (не знаю как точнее сформулировать)
Сейчас у нас описание конфигурации железа в стойках ведётся в Excel, отдельная вкладка про схематическое расположение серверов в стойке, отдельная про IP адреса, отдельная про VLANы, диски и тд.
Это всё просто и мобильно, но не хватает интерактивности что ли.
Плюс в каждом филиале каждый норовит нагородить свой формат.

Что видимо хочется в идеале: чтобы я кликнув на конкретный сервер(предварительно выбрав стойку на схеме) мог посмотреть его конфигурацию, айпишники, какой интерфейс в какой порт какого свича подключен. Далее, кликнув на порт - видим конфигурацию на порту свича итд. итп.

Интересуют как готовые решения, так и просто форматы хранения/описания таких взаимосвязей.

Работать всё должно локально, чтобы инженер приехав на объект в тундре и без интернета смог всё посмотреть и поиметь понимание.

zolden
()

Торрент-граббер с фильтром по типу файлов

 ,

Задумал я скачать для статистики побольше файлов субтитров.
Можно ли как-то это автоматизировать или сделать автоперебор по каком-нибудь популярному трекеру?
То есть в общем случае задача такая:идём по списку, проверяем торрент и качаем из него только *.srt
Разные спецсайты типа opensubtitles.org тоже рассматриваются, но с меньшим приоритетом

zolden
()

Гарантирована ли идентичность результатов readdir()

 ,

Нужно понимание, всегда ли readdir() возвращает одно и то же, при условии, что вызывается она на одной и той же машине, на одной и той же FS и состояние FS неизменно между запусками.
Вопрос похож на http://stackoverflow.com/questions/8977441/does-readdir-guarantee-an-order но контекст у меня чуть другой.
Речь не про сортировку, а про идентичность списков при множественых запусках при неизменности всех условий
Потестить я конечно и сам могу, но моя выборка может оказаться нерелевантна

zolden
()

KWallet зачем ты так со мной

 , , ,

После какого-то апдейта ноут после перезагрузки перестал автоматом цепляться к вайфаю, каждый раз надо вводить пароль вручную.
Вылезает окно KWallet с требованием ввести пароль(пустой не канает, пользовательский не канает), без него NetworkManager не сохраняет, ска, пароль.
Как это дело разрулить по-папски??

Kubuntu16.04

zolden
()

Контрольная сумма/версионирование javascript файла

 , ,

Не придумал хорошего названия для темы, но суть такая
Есть набор QUnit тестов и есть js файл с тестами
По итогам прогона тестов результирующая HTML страница сохраняется в качестве протокола.
Для повторяемости и отладки, мне нужно как-то знать на какой версии набора тестов был сделан прогон.
Думаю, мне бы хватило вывода чексуммы этого JS файла в заголовке страницы.
Никакой системы сборки нет, это простейшей решение из двух файлов, поэтому мне подойдёт любой костыль или наколенное решение.
В идеале, всё должно работать на клиентской стороне

zolden
()

Как работают таймеры в Javascript?

 , settimeout

Для тестов мне нужно делать таймауты, чтобы между вызовами функций была небольшая задержка.
Как я понимаю, в JS нет прямого аналога sleep и для пауз надо использовать setTimeout, который как я понял асинхронный и суть аналог sleep &
Но я тогда не понимаю, почему этот код выполняется последовательно и выводит 1 2 3, а не 3 2 1 (даже просмотр «Call stack, heap, queue, event loop - Talk.JS » ничего не прояснил)

function m()
{
    setTimeout(console.log("1"), 10000);
    setTimeout(console.log("2"), 5000);
};
function n()
{
    console.log("3");
};

m();
n();


Просьба без углублений в промисы и прочие колбэки, я ненастоящий сварщик

zolden
()

Javascript cachebuster

 ,

Возможно ли на клиентской стороне и силами только самого javascript модифицировать тег <script src=«tests.js»> чтобы исключить кеширование?
Иначе приходится извращаться когда меняется скрипт с тестами.
Как я понял, феншуйный способ предотвратить кеширование это добавлять рандомное число типа <script src=«tests.js?314159»>, но каждый раз руками это делать - неспортивно.
Интернеты обнаружили древний сниппет, который у меня нормально не работает по какой-то причине (меняется только первый тег, который вовсе без src)

zolden
()

Выдрать срендеренный HTML

 , , qunit,

В продолжение моей прошлой темы про JS логирование на клиенте
И всё было бы хорошо, но возникла необходимость использовать QUnit.
То есть финальная страница генерируется JS, результаты пишутся в <div id='qunit'>
На компе всё прекрасно работает посредством xmlhttp.send(document.getElementById(«qunit»).innerHTML), но с коробки почему-то пустой результат.
Пробовал варианты document.getElementsByTagName('html')[0].innerHTML, пробовал вообще все элементы проверить посредством document.getElementsByTagName(«*») - но срендеренного HTML нет, виден только изначальный.
Поначалу списал на задержки при генерации, но выставленные задержки тоже не помогли.
Есть ли ещё какие-то варианты получить финальное содержимое div'а или перенастроить QUnit писать в какую-то переменную?

zolden
()

Логирование JS на клиенте

 ,

Есть железка-огрызок, типа интернет-киоска, есть желание подебажить клиентскую часть, написанную на JS.
Полноценного браузера под капотом нет, поэтому никаких вам F12 и console.log, а только всякие document.write
На десктопе дебажить не вариант, ибо есть какие-то вызовы специфичные для этой конкретной железки

Вопрос: можно ли сделать логирование в файловую систему или на удалённый сервер(если к примеру поднять что-нибудь в локалке)?

Update: Покурив гугл, я пришёл к такой интерпретации моего вопроса: возможно ли развернуть в локалке веб-сервер и передать на него информацию с железки, скажем, POST запросом? Я не веб-разработчик, мне не очень понятна концепция Same-origin policy, и применимо ли тут это ограничение


Update2:
В общем вроде получилось отослать данные через XMLHTTPRequest на веб-сервер(с выставленным Access-Control-Allow-Origin) в локалке

zolden
()

Просвещения тред: обёртка для вызова шелловских команд

 ,

Возникла необходимость упростить сбор tcpdump силами непривилегированного и неквалифицированного пользователя.
Чтобы он значит в два клика всё мог сделать не залезая в консоль.
Я подумал и надумал что для этого веб-интерфейс подойдёт.
Так как я ни разу не веб-программист, и только совсем немного умею в питон, то решил взять для этих целей bottle
Задача в общем то решена - есть страничка, поле ввода для IP и две кнопки Start и Stop, после нажатия на Stop пользователю показывается страничка с ссылкой для скачивания дампа.

Хотелось бы чуть-чуть расширить функционал в будущем, чтобы ещё и логи собирать, а так как скрипт очевидно кривой по самое не балуйся, то прошу советов как это делается по феншую и как и что тут можно улучшить.

Например, я так и не понял как сделать чтобы кнопки становились неактивными по очереди (т.е. в начале активна только Start, после нажатия она становится неактивной, а кнопка Stop активируется). При добавлении параметра disabled в одну кнопку почему то обе становились нективными. Возможно тут стоит обойтись одной кнопкой, которая будет меняться со Start на Stop.
Код

#!/usr/bin/env python

from bottle import route, run, template, error, static_file, response, request, redirect
import os
import datetime


@route('/')
def mainform():
        output = template('buttons')
        return output

@route('/start', method='POST')
def startaction():
        ip = request.forms.get('ip')
        os.system("tcpdump start " + ip)
        return "Started tcpdump"

@route('/stop')
def stopaction():
        os.system('tcpdump stop')
        redirect('/list')

@route('/list')
def list():
    return list_files("/path/to/tcpdumpfiles/")

@route('/download/<filename:path>')
def download(filename):
    return static_file(filename, root="/path/to/tcpdumpfiles/", download=filename)


run(host='10.11.12.13', port=1234,reloader=True, debug=True)

Шаблон
<!DOCTYPE html>
<html>
 <head>
 </head>
 <body>
</h1>Collect tcpdump</h1>
<br>
  <form id="data">
   <p><input placeholder="IP" name="ip"></p>
  </form>

<button name="start" type="submit" form="data" formaction="/start" formmethod="post">Start</button>
<button name="stop" type="submit"  form="data" formaction="/stop">Stop</button>
 </body>
</html>


И ещё вопрос про гиперлинки на внешние сервера, почему-то такой линк ломается при генерации
@route('/test')
def myfunc():
    output = '''<html>
                <head></head><body><br>
                <a href="http://10.11.12.13.15:8888/">Logs on another server</a></body>
                </html>'''
    return output

zolden
()

incron + date

 ,

Хочу по закрытию файлов с помощью incron сжимать их с добавлением текущей даты в имя архива.
Но как я понял спецсимволы не разворачиваются и мой вариант

/tmp/test IN_CLOSE_WRITE /usr/bin/gzip -S .$(/bin/date +%d%B%Y_%H%M%S).gz -9 $@/$#

не работает
Как обойти?
logrotate не предлагать, это не совсем логи

upd пока решил скриптом-обёрткой, чтобы все модификаторы в нём спрятать, но это неспортивно

zolden
()

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