<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:dw="https://www.dreamwidth.org">
  <id>tag:dreamwidth.org,2017-02-11:2798292</id>
  <title>eddy_em</title>
  <subtitle>eddy_em</subtitle>
  <author>
    <name>eddy_em</name>
  </author>
  <link rel="alternate" type="text/html" href="https://eddy-em.dreamwidth.org/"/>
  <link rel="self" type="text/xml" href="https://eddy-em.dreamwidth.org/data/atom"/>
  <updated>2020-10-30T13:00:54Z</updated>
  <dw:journal username="eddy_em" type="personal"/>
  <entry>
    <id>tag:dreamwidth.org,2017-02-11:2798292:270417</id>
    <link rel="alternate" type="text/html" href="https://eddy-em.dreamwidth.org/270417.html"/>
    <link rel="self" type="text/xml" href="https://eddy-em.dreamwidth.org/data/atom/?itemid=270417"/>
    <title>Как сделать форму, чтобы браузеры ее автоматом заполняли?</title>
    <published>2020-10-30T12:54:55Z</published>
    <updated>2020-10-30T13:00:54Z</updated>
    <category term="web"/>
    <category term="рукожопие"/>
    <category term="вопрос"/>
    <dw:security>public</dw:security>
    <dw:reply-count>0</dw:reply-count>
    <content type="html">Сижу над &lt;a href="https://github.com/eddyem/onionserver"&gt;"движком" на libonion&lt;/a&gt; с веб-авторизацией и вебсокетом для передачи данных. Кстати, недавно столкнулся с проблемой: больше одного вебсокета открыть было невозможно. Я и автору libonion писал (он, кстати, сказал, что вебсокеты в его библиотеке сырые и их лучше не пользовать — приплыли, что называется). Но проблема решилась по-другому: оказывается, в репах генты libonion как-то криво собирается, из-за чего и не работает. А с гита все завелось нормально. Разве что автор зачем-то захардкодил максимум 8 подключений одновременно — надо будет хотя бы на 1024 изменить…&lt;br /&gt;&lt;br /&gt;Ну так вот, собственно в чем вопрос: я при необходимости авторизации генерирую жабоскриптом простую формочку:&lt;br /&gt;&lt;code lang="javascript"&gt;&lt;pre style="border-left: 4px solid; border-top: 1px dashed; border-bottom: 1px dashed; max-height: 300px; overflow: auto; padding: 5px" title="Code block"&gt;
&amp;lt;div id="shadow" class="shadow" style="display: block;"&amp;gt;
&amp;lt;div&amp;gt;Login:&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;input type="text" id="login" name="username"&amp;gt;&amp;lt;/div&amp;gt;
&amp;lt;div&amp;gt;Password:&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;input type="password" id="passwd" name="password"&amp;gt;&amp;lt;/div&amp;gt;
&amp;lt;button onclick="auth.send();"&amp;gt;OK&amp;lt;/button&amp;gt;&amp;lt;/div&amp;gt;
&lt;/pre&gt;&lt;/code&gt;&lt;br /&gt;На разных сайтах смотрел — вроде бы, ничего особенного.&lt;br /&gt;Но почему-то везде автозаполнение форм работает, а у меня — нет!&lt;br /&gt;&lt;br /&gt;Что надо сделать с этой формой, чтобы автозаполнение работало?&lt;br /&gt;&lt;br /&gt;&lt;b&gt;UPD:&lt;/b&gt; всем спасибо, расходимся. Сам &lt;a href="http://htmlbook.ru/html/form/autocomplete"&gt;нашел&lt;/a&gt;. Надо было все это воткнуть внутрь тега &amp;lt;form&amp;gt; с атрибутом "autocomplete=on". А я надеялся, что браузер как-то по именам &amp;lt;input&amp;gt; ориентируется…&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=eddy_em&amp;ditemid=270417" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2017-02-11:2798292:261248</id>
    <link rel="alternate" type="text/html" href="https://eddy-em.dreamwidth.org/261248.html"/>
    <link rel="self" type="text/xml" href="https://eddy-em.dreamwidth.org/data/atom/?itemid=261248"/>
    <title>Простейший веб-сервис с авторизацией</title>
    <published>2020-07-31T12:06:09Z</published>
    <updated>2020-07-31T12:07:33Z</updated>
    <category term="всячина"/>
    <category term="web"/>
    <category term="c"/>
    <dw:security>public</dw:security>
    <dw:reply-count>0</dw:reply-count>
    <content type="html">Таки добил базис для различных веб-морд и выложил &lt;a href="https://github.com/eddyem/onionserver"&gt;на гитхаб&lt;/a&gt;.&lt;br /&gt;Для обслуживания веб-запросов используется libonion, а т.к. в ней не было вменяемой поддержки авторизации, добавил свое. В одной базе данных хранятся сведения о пользователях: имя пользователя, уровень доступа, SHA512-хэш пароля и необязательный комментарий. Вторая база содержит сессионные данные: имя пользователя, время получения ключа (UNIX-TIME), идентификатор сессии, необязательный идентификатор сокета (этот идентификатор выдается в "небезопасной" куки, поэтому генерируется заново при каждом очередном запросе; затем, когда юзер захочет открыть вебсокет, он должен будет сначала передать этот ключ) и данные (в JSON-формате, сейчас это — User-Agent и IP адрес пользователя).&lt;br /&gt;Веб-админку мне было лень делать, да и не нужна она в моем случае: достаточно запустить демон с нужными параметрами, чтобы добавить/удалить/изменить пользователя, сделать дамп баз или запустить "vacuum" баз. Также можно удалить все сессионные данные старше заданного времени.&lt;br /&gt;Остается еще добавить работу с вебсокетами, и можно будет лепить морду для спектрографа НЭС и "роботелескопа".&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=eddy_em&amp;ditemid=261248" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2017-02-11:2798292:258747</id>
    <link rel="alternate" type="text/html" href="https://eddy-em.dreamwidth.org/258747.html"/>
    <link rel="self" type="text/xml" href="https://eddy-em.dreamwidth.org/data/atom/?itemid=258747"/>
    <title>libonion</title>
    <published>2020-07-14T15:41:17Z</published>
    <updated>2020-07-14T15:42:40Z</updated>
    <category term="web"/>
    <category term="рукожопие"/>
    <category term="c"/>
    <dw:security>public</dw:security>
    <dw:reply-count>0</dw:reply-count>
    <content type="html">В поисках наиболее быстрого решения (ну лень мне пилить свою веб-библиотечку, должно же быть что-то готовое!) нашел две вполне приличных библиотеки: libhttpd и libonion. Во второй понравилось меньшее количество кода и большее количество примеров (хотя, как оказалось, все равно их слишком мало).&lt;br /&gt;Второй день мучаю эту библиотеку.&lt;br /&gt;Документации ужасно мало (html, генерированный doxygen'ом, да несколько примеров), поэтому иной раз приходится для того, чтобы одну строчку кода написать, час-два ковыряться в исходниках библиотеки, чтобы понять, как это сделать...&lt;br /&gt;&lt;span class="cut-wrapper"&gt;&lt;span style="display: none;" id="span-cuttag___1" class="cuttag"&gt;&lt;/span&gt;&lt;b class="cut-open"&gt;(&amp;nbsp;&lt;/b&gt;&lt;b class="cut-text"&gt;&lt;a href="https://eddy-em.dreamwidth.org/258747.html#cutid1"&gt;Рукожопие&lt;/a&gt;&lt;/b&gt;&lt;b class="cut-close"&gt;&amp;nbsp;)&lt;/b&gt;&lt;/span&gt;&lt;div style="display: none;" id="div-cuttag___1" aria-live="assertive"&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;А хочется простейшего: принимать своим демоном клиентские запросы напрямую, без apache или nginx (т.к. большинство наших железок так и работают: веб-сервер ставится на управляющий компьютер тупо ради передачи пользователю двух-трех веб-страничек и пары жабоскриптов с одной-двумя CSSинами). Иметь возможность безопасно передать с клиента на сервер пару логин-пароль, получить сессионную куку и хранить ее хотя бы год — чтобы после перезапуска браузера не нужно было опять аутентификацию проходить. Ну и после того, как подлинность клиента подтверждена, открываем вебсокет и работаем через него.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=eddy_em&amp;ditemid=258747" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
</feed>
