• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Делюсь опытом Nodemcu как модуль связи. Телеметрия, email.

view24

Member
Там хотя-бы CORS (OPTION Access-Control-Request/Allow-...) у HTTP сервера есть?

@view24 - Формат чисел и времени в javascript в double precision = 52 бита мантисса и время хранится в миллисекундах, что описывает точность до десятков микросек… Даже стандартная new Date(ms).toISOString() выдает ISO string c ms: YYYY-MM-DDThh:mm:ss.sssZ. Но у вас, в javascript на странице графиков, всё ограничено секундами. Самый простой Dygraph давно уже в 1 ms…

Какая современная телеметрия c дискретностью замеров от 1 секунды и более? Это называется случайная выборка...:(
Стоит ли учить телеметрии человека который работал у Богомолова А.Ф. ? В определении телеметрии о частоте съема ничего не говорится - зависит от задачи. Если придумаете более точное название моей специализированной прошивке, буду признателен. Даже вашим ( раз уж мы друг друга решили не уважать) именем, готов назвать. Например - "Пионер по жизни". Так что прошу на сайт прошивок http://bortx.ru
 

view24

Member
Костыль на ESP8266 - этож надо десяток костылей только к нему, чтобы он устойчиво работал. Да и какой WiFi у каждого устройства дома? Надо что-то потише в эфире и менее потребляющее... Хорошо то, что такого ныне валом - до NB-IoT... Да и китайских SoC развелось... Что имеет менее 32-х МБ встроенной SRAM/DDRAM с внутренней шиной не менее 32-х бит уже не рассматриваю, т.к. жрет имеющееся одинаково с ESP8266 (о ESP32 и разговор не идет - там за 500 mA по 3.3В !)
Нет, все-таки зря вы вернулись. У вас манера не сутью заниматься, а блеснуть эрудицией. Да еще учить того, кто вас об этом не просит.
 

pvvx

Активный участник сообщества
На картинке из первого поста есть место для proxy. Работать приходится по предприятиям, а там везде SQUID. Поначалу websocket хотел применить - облом. SQUID заголовок upgrade не пропускает. Пришлось через get решать с двумя портами и long polling, чтобы реакция на запрос была мгновенной. Так что, до ssl руки не дошли, но защита по паролю есть. Из той же формы видно.
Обычный случай использования:
Ваш сервер накапливает данные. У какого чада - малое устройство WiFi (пусть ESP8266) с маленьким web-сервером отдающим страницу со встройкой javascript.
Страница, у чада, исполняется на мобилке и запрашивает накопленные данные с вашего web. Пусть скриптом типа, с передачей пароля:
JavaScript:
function ajax_get(url, d) {
    var xhr = new XMLHttpRequest();
    xhr.onreadystatechange = function() {
        if (xhr.readyState == 4) {
            console.log('response: ' + xhr.status);
            if (xhr.status == 200)  Load(xhr.response); 
            else console.error('XMLHttpRequest: response ' + xhr.status)}
        }
    };
    xhr.ontimeout = function() {console.error('XMLHttpRequest: timeout')};
    xhr.onerror = function () {console.error('XMLHttpRequest error!')};   
    if(window.location.protocol == 'file:') {
        xmlhttp.open("POST", 'http://web'+url, true);
        xmlhttp.setRequestHeader("Authorization", "Basic xxxxxxxxxxxxxxxxx=");
    } else 
        xmlhttp.open("POST", url, true);
    xhr.timeout = 4000;
    xhr.responseType = 'json';
    xhr.send(d);
}}
И т.к. XMLHttpRequest() с паролем (или для запуска HTML файла прямо с диска компа...), то эксплорер полезет с CORS запросами к вашему серверу...
 

pvvx

Активный участник сообщества
Нет, все-таки зря вы вернулись. У вас манера не сутью заниматься, а блеснуть эрудицией. Да еще учить того, кто вас об этом не просит.
Я не вернулся и не 'учить', а хотелось-бы узнать варианты решения разных вопросиков и как сделать попроще...
 

view24

Member
Обычный случай использования:
Ваш сервер накапливает данные. У какого чада - малое устройство WiFi (пусть ESP8266) с маленьким web-сервером отдающим страницу со встройкой javascript.
Страница, у чада, исполняется на мобилке и запрашивает накопленные данные с вашего web. Пусть скриптом типа, с передачей пароля:
JavaScript:
function ajax_get(url, d) {
    var xhr = new XMLHttpRequest();
    xhr.onreadystatechange = function() {
        if (xhr.readyState == 4) {
            console.log('response: ' + xhr.status);
            if (xhr.status == 200)  Load(xhr.response);
            else console.error('XMLHttpRequest: response ' + xhr.status)}
        }
    };
    xhr.ontimeout = function() {console.error('XMLHttpRequest: timeout')};
    xhr.onerror = function () {console.error('XMLHttpRequest error!')};  
    if(window.location.protocol == 'file:') {
        xmlhttp.open("POST", 'http://web'+url, true);
        xmlhttp.setRequestHeader("Authorization", "Basic xxxxxxxxxxxxxxxxx=");
    } else
        xmlhttp.open("POST", url, true);
    xhr.timeout = 4000;
    xhr.responseType = 'json';
    xhr.send(d);
}}
И т.к. XMLHttpRequest() с паролем (или для запуска HTML файла прямо с диска компа...), то эксплорер полезет с CORS запросами к вашему серверу...
Если клиент с запросом к серверу 'лезет' на получение информации, то это нормально. А если клиент шлет команду на объект, то команда пройдет только при знании пароль.
 

pvvx

Активный участник сообщества
Можем эксперимент провести.
В скритпе опечатку от copy-paste строк с разных источников исправьте... xmlhttp->xhr.
XMLHttpRequest() по современной "безопасности" сначала запросит не GET или POST, а OPTION со всеми доп.заголовками и сервак должен ответить - разрешаю на каждый... А потом эксплорер двинется за самими данными с простым GET/POST...
 

view24

Member
В скритпе опечатку от copy-paste строк с разных источников исправьте... xmlhttp->xhr.
XMLHttpRequest() по современной "безопасности" сначала запросит не GET или POST, а OPTION со всеми доп.заголовками и сервак должен ответить - разрешаю на каждый... А потом эксплорер двинется за самими данными с простым GET/POST...
Я пользуюсь AJAX, и как AJAX XMLHttpRequest использует не вдавался в подробности.
 

pvvx

Активный участник сообщества
Я пользуюсь AJAX, и как AJAX XMLHttpRequest использует не вдавался в подробности.
Как описал, так и использует (CORS - при запросе на другой ресурс (!) или при запуске редактируемого http файла для отладки прямо из папки в эксплорере, без всяких web-серверов...).
Почему вопросы вам - т.к. задачи у нас схожие. Токо я сервер (с web и прочим) сбора информации от устройств делаю на малом дешевом SoC с потреблением до 200 мА и embedded linux, а не на монстрах... :)
 

view24

Member
Как описал, так и использует (CORS - при запросе на другой ресурс (!) или при запуске редактируемого http файла для отладки прямо из папки в эксплорере, без всяких web-серверов...).
Почему вопросы вам - т.к. задачи у нас схожие. Токо я сервер (с web и прочим) сбора информации от устройств делаю на малом дешевом SoC с потреблением до 200 мА и embedded linux, а не на монстрах... :)
А поконкретнее что за кристалл, чтобы удостовериться в стоимости?
 

pvvx

Активный участник сообщества
А поконкретнее что за кристалл, чтобы удостовериться в стоимости?
Один из самых дешевых для меня - MC200:
# dmesg
CPU revision is: 00019070 (MIPS 4KEc)
...
User-defined physical RAM map:
memory: 02000000 @ 00000000 (usable)
...
Primary instruction cache 16kB, VIPT, 4-way, linesize 16 bytes.
Primary data cache 16kB, 4-way, VIPT, no aliases, linesize 16 bytes
Memory: 29680k/32768k available (2076k kernel code, 3088k reserved, 340k data, 120k init, 0k highmem)
...
Calibrating delay loop... 511.18 BogoMIPS (lpj=2555904)
...
 

Алексей.

Active member
Так что, до ssl руки не дошли, но защита по паролю есть. Из той же формы видно.
С паролем то понятно, но без ssl можно попасть в такую ситуацию, когда провайдер или ещё кто либо, перехватывая http запросы/ответы может их подменять.
Это не потенциальная уязвимость, а реальность.
На прошлой неделе такое у меня случилось, когда с незащищенного соединения в одном из проектов я перенаправлял с http на https (типа отвечал 301 кодом с новым локэйшеном). Вдруг обнаружил что редирект не срабатывает, со смартфона броузером пытаюсь открыть страницу, а редиректят в другом направлении.
 

Алексей.

Active member
Работать приходится по предприятиям, а там везде SQUID
Что касается сквид-а, то используя ssl можете решить проблемы связанные с передачей заголовков, но только в том случае, если сквид не контролирует прозрачный tcp туннель, это можно сразу определить по подписанным сквидом сертификатов серверов.
 

view24

Member
С паролем то понятно, но без ssl можно попасть в такую ситуацию, когда провайдер или ещё кто либо, перехватывая http запросы/ответы может их подменять.
Это не потенциальная уязвимость, а реальность.
На прошлой неделе такое у меня случилось, когда с незащищенного соединения в одном из проектов я перенаправлял с http на https (типа отвечал 301 кодом с новым локэйшеном). Вдруг обнаружил что редирект не срабатывает, со смартфона броузером пытаюсь открыть страницу, а редиректят в другом направлении.
Это называется угон tcp/ip сессии. Это мы проходили. В принципе ничего сложного, но рядом с трафиком надо находится. А поскольку трафик идет через сервер провайдера, а он имеет доступ к сертификату, а может быть и сам автор сертификата, то ssl и tsl тоже не помогут. Кстати blynk тоже без ssl запросы принимает.
 

view24

Member
@Алексей. , я уже задавал похожие вопросы в теме https://esp8266.ru/forum/threads/zagruzhaem-proshivku-sputnik-i-esp-uzhe-v-internete.4172/ автору. Он вообще не считает это проблемой. Смешно и грустно, одновременно.
Хотя не ко мне обращаются, но все равно подтверждаю, что в данном случае проблему считаю надуманной. SSL проблему с WORM не решает. Желающие есть сломать мой трафик? Предлагаю пари.
 

view24

Member
Что касается сквид-а, то используя ssl можете решить проблемы связанные с передачей заголовков, но только в том случае, если сквид не контролирует прозрачный tcp туннель, это можно сразу определить по подписанным сквидом сертификатов серверов.
C вебсокетом я так ее и решил со сквидом , но беда в том, любая websocket библиотека для Arduino IDE подвешивает запрос на 400 ms.
 

Алексей.

Active member
А поскольку трафик идет через сервер провайдера, а он имеет доступ к сертификату, а может быть и сам автор сертификата, то ssl и tsl тоже не помогут.
Как это возможно? Сервис на домене bortx.ru работает у хостера, по гео-положению в Голландии, провайдер интернета в России, как он (провайдер) может иметь доступ сертификату, на котором будет переподписывать?
 
Сверху Снизу