LINUX.ORG.RU

Сообщения zolden

 

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

Форум — Web-development

Проверяя логи 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

Форум — Web-development

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

 , ,

zolden
()

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

Форум — Admin

На днях, попивая смузи, я понял что мне срочно нужно прикрутить уведомления через 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?

Форум — Admin

Схема такая:
- стоит 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, вот это всё

Форум — Desktop

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

 , ,

zolden
()

UEFI и загрузка ISO

Форум — Desktop

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

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

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

 

zolden
()

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

Форум — Web-development

Я совсем не веб-разработчик, но для самообучения разбираюсь с 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: провернуть фарш назад

Форум — Web-development

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

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

 , , ,

zolden
()

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

Форум — Admin

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

 , ,

zolden
()

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

Форум — Admin

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

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

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

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

 

zolden
()

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

Форум — Desktop

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

 ,

zolden
()

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

Форум — Development

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

 readdir,

zolden
()

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

Форум — Desktop

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

Kubuntu16.04

 , , ,

zolden
()

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

Форум — Web-development

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

 , ,

zolden
()

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

Форум — Web-development

Для тестов мне нужно делать таймауты, чтобы между вызовами функций была небольшая задержка.
Как я понимаю, в 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();


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

 , settimeout

zolden
()

Javascript cachebuster

Форум — Web-development

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

 ,

zolden
()

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

Форум — Web-development

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

 , , qunit,

zolden
()

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

Форум — Web-development

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

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

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


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

 ,

zolden
()

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

Форум — Web-development

Возникла необходимость упростить сбор 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

Форум — Admin

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

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

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

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

 ,

zolden
()

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