eddy_em: (Default)
Сижу над "движком" на libonion с веб-авторизацией и вебсокетом для передачи данных. Кстати, недавно столкнулся с проблемой: больше одного вебсокета открыть было невозможно. Я и автору libonion писал (он, кстати, сказал, что вебсокеты в его библиотеке сырые и их лучше не пользовать — приплыли, что называется). Но проблема решилась по-другому: оказывается, в репах генты libonion как-то криво собирается, из-за чего и не работает. А с гита все завелось нормально. Разве что автор зачем-то захардкодил максимум 8 подключений одновременно — надо будет хотя бы на 1024 изменить…

Ну так вот, собственно в чем вопрос: я при необходимости авторизации генерирую жабоскриптом простую формочку:
<div id="shadow" class="shadow" style="display: block;">
<div>Login:</div><div><input type="text" id="login" name="username"></div>
<div>Password:</div><div><input type="password" id="passwd" name="password"></div>
<button onclick="auth.send();">OK</button></div>

На разных сайтах смотрел — вроде бы, ничего особенного.
Но почему-то везде автозаполнение форм работает, а у меня — нет!

Что надо сделать с этой формой, чтобы автозаполнение работало?

UPD: всем спасибо, расходимся. Сам нашел. Надо было все это воткнуть внутрь тега <form> с атрибутом "autocomplete=on". А я надеялся, что браузер как-то по именам <input> ориентируется…
eddy_em: (Default)
Таки добил базис для различных веб-морд и выложил на гитхаб.
Для обслуживания веб-запросов используется libonion, а т.к. в ней не было вменяемой поддержки авторизации, добавил свое. В одной базе данных хранятся сведения о пользователях: имя пользователя, уровень доступа, SHA512-хэш пароля и необязательный комментарий. Вторая база содержит сессионные данные: имя пользователя, время получения ключа (UNIX-TIME), идентификатор сессии, необязательный идентификатор сокета (этот идентификатор выдается в "небезопасной" куки, поэтому генерируется заново при каждом очередном запросе; затем, когда юзер захочет открыть вебсокет, он должен будет сначала передать этот ключ) и данные (в JSON-формате, сейчас это — User-Agent и IP адрес пользователя).
Веб-админку мне было лень делать, да и не нужна она в моем случае: достаточно запустить демон с нужными параметрами, чтобы добавить/удалить/изменить пользователя, сделать дамп баз или запустить "vacuum" баз. Также можно удалить все сессионные данные старше заданного времени.
Остается еще добавить работу с вебсокетами, и можно будет лепить морду для спектрографа НЭС и "роботелескопа".

libonion

Jul. 14th, 2020 05:53 pm
eddy_em: (Default)
В поисках наиболее быстрого решения (ну лень мне пилить свою веб-библиотечку, должно же быть что-то готовое!) нашел две вполне приличных библиотеки: libhttpd и libonion. Во второй понравилось меньшее количество кода и большее количество примеров (хотя, как оказалось, все равно их слишком мало).
Второй день мучаю эту библиотеку.
Документации ужасно мало (html, генерированный doxygen'ом, да несколько примеров), поэтому иной раз приходится для того, чтобы одну строчку кода написать, час-два ковыряться в исходниках библиотеки, чтобы понять, как это сделать...
Рукожопие )

А хочется простейшего: принимать своим демоном клиентские запросы напрямую, без apache или nginx (т.к. большинство наших железок так и работают: веб-сервер ставится на управляющий компьютер тупо ради передачи пользователю двух-трех веб-страничек и пары жабоскриптов с одной-двумя CSSинами). Иметь возможность безопасно передать с клиента на сервер пару логин-пароль, получить сессионную куку и хранить ее хотя бы год — чтобы после перезапуска браузера не нужно было опять аутентификацию проходить. Ну и после того, как подлинность клиента подтверждена, открываем вебсокет и работаем через него.

April 2025

S M T W T F S
  1 23 45
67 89101112
13141516171819
20212223242526
27282930   

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated May. 22nd, 2025 02:00 am
Powered by Dreamwidth Studios