Комментарии 39
Просто машина времени ! 2005 год.
Это вы про Qt 4 или curl 7.29.0?
про небезопасный к перехвату траффика протокол http, устаревшей версии 1.1 например
Так он у нас вообще открытый, чего боятся-то. Пусть все кому интересно видят, что передается, дальше-то что? У нас команды для управления кассовым аппаратом передаются например и кому захочется и зачем пробивать чеки на наших ккт?
К тому же мы передаём токен кассового аппарата для идентификации оборудования.
И можем ещё хэш код проверки целостности данных передавать и на сервере проверять.
Вообще, довольно любопытно полагаться на «кто захочет пробивать чеки на наших ккт». Ну, предположим, что я захочу, и пробью вам 8 миллиардов рублей, удачи с налоговой.
Вообще, довольно любопытно полагаться на «кто захочет пробивать чеки на наших ккт». Ну, предположим, что я захочу, и пробью вам 8 миллиардов рублей, удачи с налоговой.
А кож проверки целостности данных как узнаете, он только в ЛК у пользователя виден.
Так я и говорю, что желание-то может возникнуть. А вы пишете, «зачем и кто захочет».
Так я и говорю, что желание-то может возникнуть.
Ну допустим возникло желание пробить чек на чужой кассе, какая "вам" выгода? Нагадить конкуренту? Ну допустим.
Кстати можно не больше 21миллиона пробить.
Ну допустим пробили, пользователь увидел, сделал возврат конечно.
Далее начал пользовать использовать код проверки данных из ЛК и добавлять в данные чека непонятный хеш. Сервер проверяет этот хеш, он знает как он вычисляется , а вы нет.
Если вы программу ломанули, хотя это вообще не понятно как сделать у пользователя, так ее переустановить с нашего сервера можно всегда.
То есть по умолчанию хеш не передается, а только когда «пользователь увидел»?
Да, обеспечить конкуренту проблемы это весьма реальный, годный мотив.
Да, обеспечить конкуренту проблемы это весьма реальный, годный мотив.
Вы представляете "обычного" пользователя, ну с оборотом до 10млн.р/год. Вот у него одна касса.
Кому он конкурент? И кто ему на кассе захочет миллиард пробить? Кинокомедия.
Я программу для таких пользователей пишу.
Если речь идёт о миллиардах, найдутся способы.
автор реализует http сервер на устаревшем Qt4
Сервер... http сервер... на кутях... Мсье знает толк (с)
По тексту. Весь не осилил, но отдельные части доставляют.
и разработчик клиента просто не передал Content-Length , то мы очевидно должны ждать всех данных какое-то длительное неопределенное время, ну например 30000мс
Время не "неопределенное" и не "ну например", а оно четко задано в системе для tcp соединения. При неактивности сокета превышающей этот timeout, сокет закрывается системой. Вводить свои таймауты имеет смысл только в случае если у вас есть острая необходимость дропать соединение раньше.
а curl клиента теряет где-то при приеме первую квадратную первую скобку и исправить это оказалось нельзя никак
Ну да... curl сволочь такая теряет... исправить нельзя... Виновато всё вокруг за исключением своих рук.
Дальше лень ЭТО комментировать, тут слишком много перлов и боюсь что если прокомментировать всё, то по обьему оно превысит размер статьи.
автор реализует http сервер на устаревшем Qt4
Это последствия обсуждений к предыдущей статье, там я старался уговорить автора указывать то, что он принципиально не хочет закапывать стюардессу :). Жаль что это в конце написано, а не вначале. Но всё равно спасибо хотя бы за это.
По сабжу. Сравните подачу материала про разработку встраиваемого с++ сервера тут, и вот здесь: https://habr.com/ru/articles/773608/ , комментарии думаю излишни.
Новичок, который взял qt4 и давай херячить ПО для кассы, какой то странный.
Новичок, который взял qt4 и давай херячить ПО для кассы, какой то странный.
У меня пользователь только-что установил этот сервер себе на ПК , сделал сам себе товароучетку в облаке на php/js/mysql и бьёт чеки из товароучетки и все у него норм.
У меня пользователь только-что установил этот сервер себе на ПК
Ну, ваш пользователь молодец. И вы молодец, если смогли пропихнуть HelloWorld на прод ;)
Ну, ваш пользователь молодец. И вы молодец, если смогли пропихнуть HelloWorld на прод
Почему Hello world? Поддержка атол, штрих, меркуриев по одному протоколу. Банковское терминалы протокол аркус.
Курьеры со смартфона чеки бить могут.
Маркировка в разрешительном режиме на днях будет готова.
По моему все варианты управления кассой реализованы.
Плагины есть для админки ВордПресс, джумла, Битрикс.
Чего забыли?
Почему Hello world?
Ну, в статье что то про новичков.. или нет?
Чего забыли?
Починить сервер, чтобы от неожиданного запроса не крашился
Починить сервер, чтобы от неожиданного запроса не крашился
Очень мудрое замечание!
Починить сервер, чтобы от неожиданного запроса не крашился
Вы вообще читаете? Чей сервер? Это у пользователя для клиента используется php на его линакс сервере, где его база товароучетки хранится и куча сопутствующих библиотек задействовано. И он не может свой сервер обновлять, вот тогда он крэшится.
У меня пользователь только-что установил
и все у него норм.
У вас несчастные случаи на стройке были? Будут. (с) Шурик
Ну да... curl сволочь такая теряет... исправить нельзя... Виновато всё вокруг за исключением своих рук.
Я бы хотел поверить, что curl 7.29.0? нормальный и я что-то не так делаю, но точно такой же запрос на сокете работает полноценно, а на curl-е точно такой же (вижу на логе сервера) не работает. Как об'яснить?
Как об'яснить?
У curl changelog длиннее бороды Карла Маркса. Читайте, что там за issues и где они исправлены
У curl changelog длиннее бороды Карла Маркса. Читайте, что там за issues и где они исправлены
Вы не внимательно читали. Ситуация была такова, что пользователь не мог переустановить curl на другую версию, т.к. у него кастомный линакс тянул обновления всех зависимостей и потом сервер крэшился. Надо было выкручиваться как-то по другому. Через сокет все нормально заработало.
То есть задача стояла помочь пользователю избежать лишних проблем.
Ситуация была такова, что пользователь не мог переустановить curl на другую версию, т.к. у него кастомный линакс тянул обновления всех зависимостей и потом сервер крэшился.
Ну кроме curl есть ещё wget.
Ещё варианты:
Для сильных. Собрать curl статиком.
Попробовать не тянуть все зависимости, а обновить только curl.
Вот я вам про "теряет" и толкую, ваше "теряет" оно сферично. Я сагрился именно на символ '[' в зависимости от того куда вы потом перенаправляете он может интерпретироваться как символ regex.
Сервер... http сервер... на кутях... Мсье знает толк (с)
Надо пояснить, что http сервер является частью приложения под виндой, написан на С++, как все приложение соответственно. Сервер принимает по сути одно соединение и не предназначен для приема нескольких соединений одновременно.
Понял. В таком варианте "под виндой и далее по тексту..." принимается полностью! Открытие сокета под шиндой это совсем не socket в *nix системах, там условно говоря 100 параметров и 500 функций которые к тому же могут (не обязательно, но могут) различаться в зависимости от версии шинды. И если есть что-то готовое для работы, то лучше использовать его, а не колхозить свое неповторимое.
Сервер принимает по сути одно соединение и не предназначен для приема нескольких соединений одновременно.
И я даже догадываюсь почему :) Это в продолжение моего поста выше. Одно дело вызвать банальный fork, а другое работа с thread-ми под шиндой. Вроде как оно конечно тоже не слишком заморочное, но если сравнивать с fork это лютый комбайн получается :)
А почему в заголовке написано первый сервер, в чем первость-то? Или просто первый у автора?
Ктож серверы под Виндой гоняет? Там же ГУЙ, на него надо еще пару-тройку (админы поправят) гигов памяти. А зачем?
Ктож серверы под Виндой гоняет? Там же ГУЙ, на него надо еще пару-тройку (админы поправят) гигов памяти.
Каких гигов памяти, у меня до 100МБ все приложение в памяти.
Вы в каком десятилетии живете? Windows Server можно установить как версию без Гуя вообще начиная с 2008 года. Амазон предлагает виртуальные машины с виндой с доступной машине памятью начиная от половины гигабайта. Также как и линукс.
Да, что ж вы все накинулись на человека... А я хочу похвалить, за старания, молодец. Главное начать, а далее по мере набивания шишек, он станет мастером в данной области.
Первый http сервер на С++, заметки для новичков