<?xml version='1.0' encoding='utf-8' ?>

<rss version='2.0' xmlns:lj='http://www.livejournal.org/rss/lj/1.0/' xmlns:atom10='http://www.w3.org/2005/Atom'>
<channel>
  <title>eddy_em</title>
  <link>https://eddy-em.dreamwidth.org/</link>
  <description>eddy_em - Dreamwidth Studios</description>
  <lastBuildDate>Fri, 30 Oct 2020 12:54:55 GMT</lastBuildDate>
  <generator>LiveJournal / Dreamwidth Studios</generator>
  <lj:journal>eddy_em</lj:journal>
  <lj:journaltype>personal</lj:journaltype>
  <image>
    <url>https://v2.dreamwidth.org/17579374/2798292</url>
    <title>eddy_em</title>
    <link>https://eddy-em.dreamwidth.org/</link>
    <width>100</width>
    <height>100</height>
  </image>

<item>
  <guid isPermaLink='true'>https://eddy-em.dreamwidth.org/270417.html</guid>
  <pubDate>Fri, 30 Oct 2020 12:54:55 GMT</pubDate>
  <title>Как сделать форму, чтобы браузеры ее автоматом заполняли?</title>
  <link>https://eddy-em.dreamwidth.org/270417.html</link>
  <description>Сижу над &lt;a href=&quot;https://github.com/eddyem/onionserver&quot;&gt;&quot;движком&quot; на libonion&lt;/a&gt; с веб-авторизацией и вебсокетом для передачи данных. Кстати, недавно столкнулся с проблемой: больше одного вебсокета открыть было невозможно. Я и автору libonion писал (он, кстати, сказал, что вебсокеты в его библиотеке сырые и их лучше не пользовать — приплыли, что называется). Но проблема решилась по-другому: оказывается, в репах генты libonion как-то криво собирается, из-за чего и не работает. А с гита все завелось нормально. Разве что автор зачем-то захардкодил максимум 8 подключений одновременно — надо будет хотя бы на 1024 изменить…&lt;br /&gt;&lt;br /&gt;Ну так вот, собственно в чем вопрос: я при необходимости авторизации генерирую жабоскриптом простую формочку:&lt;br /&gt;&lt;code lang=&quot;javascript&quot;&gt;&lt;pre style=&quot;border-left: 4px solid; border-top: 1px dashed; border-bottom: 1px dashed; max-height: 300px; overflow: auto; padding: 5px&quot; title=&quot;Code block&quot;&gt;
&amp;lt;div id=&quot;shadow&quot; class=&quot;shadow&quot; style=&quot;display: block;&quot;&amp;gt;
&amp;lt;div&amp;gt;Login:&amp;lt;/div&amp;gt;&amp;lt;div&amp;gt;&amp;lt;input type=&quot;text&quot; id=&quot;login&quot; name=&quot;username&quot;&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=&quot;password&quot; id=&quot;passwd&quot; name=&quot;password&quot;&amp;gt;&amp;lt;/div&amp;gt;
&amp;lt;button onclick=&quot;auth.send();&quot;&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=&quot;http://htmlbook.ru/html/form/autocomplete&quot;&gt;нашел&lt;/a&gt;. Надо было все это воткнуть внутрь тега &amp;lt;form&amp;gt; с атрибутом &quot;autocomplete=on&quot;. А я надеялся, что браузер как-то по именам &amp;lt;input&amp;gt; ориентируется…&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=eddy_em&amp;ditemid=270417&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://eddy-em.dreamwidth.org/270417.html</comments>
  <category>web</category>
  <category>вопрос</category>
  <category>рукожопие</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://eddy-em.dreamwidth.org/261248.html</guid>
  <pubDate>Fri, 31 Jul 2020 12:06:09 GMT</pubDate>
  <title>Простейший веб-сервис с авторизацией</title>
  <link>https://eddy-em.dreamwidth.org/261248.html</link>
  <description>Таки добил базис для различных веб-морд и выложил &lt;a href=&quot;https://github.com/eddyem/onionserver&quot;&gt;на гитхаб&lt;/a&gt;.&lt;br /&gt;Для обслуживания веб-запросов используется libonion, а т.к. в ней не было вменяемой поддержки авторизации, добавил свое. В одной базе данных хранятся сведения о пользователях: имя пользователя, уровень доступа, SHA512-хэш пароля и необязательный комментарий. Вторая база содержит сессионные данные: имя пользователя, время получения ключа (UNIX-TIME), идентификатор сессии, необязательный идентификатор сокета (этот идентификатор выдается в &quot;небезопасной&quot; куки, поэтому генерируется заново при каждом очередном запросе; затем, когда юзер захочет открыть вебсокет, он должен будет сначала передать этот ключ) и данные (в JSON-формате, сейчас это — User-Agent и IP адрес пользователя).&lt;br /&gt;Веб-админку мне было лень делать, да и не нужна она в моем случае: достаточно запустить демон с нужными параметрами, чтобы добавить/удалить/изменить пользователя, сделать дамп баз или запустить &quot;vacuum&quot; баз. Также можно удалить все сессионные данные старше заданного времени.&lt;br /&gt;Остается еще добавить работу с вебсокетами, и можно будет лепить морду для спектрографа НЭС и &quot;роботелескопа&quot;.&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=eddy_em&amp;ditemid=261248&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://eddy-em.dreamwidth.org/261248.html</comments>
  <category>всячина</category>
  <category>c</category>
  <category>web</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
<item>
  <guid isPermaLink='true'>https://eddy-em.dreamwidth.org/258747.html</guid>
  <pubDate>Tue, 14 Jul 2020 15:41:17 GMT</pubDate>
  <title>libonion</title>
  <link>https://eddy-em.dreamwidth.org/258747.html</link>
  <description>В поисках наиболее быстрого решения (ну лень мне пилить свою веб-библиотечку, должно же быть что-то готовое!) нашел две вполне приличных библиотеки: libhttpd и libonion. Во второй понравилось меньшее количество кода и большее количество примеров (хотя, как оказалось, все равно их слишком мало).&lt;br /&gt;Второй день мучаю эту библиотеку.&lt;br /&gt;Документации ужасно мало (html, генерированный doxygen&apos;ом, да несколько примеров), поэтому иной раз приходится для того, чтобы одну строчку кода написать, час-два ковыряться в исходниках библиотеки, чтобы понять, как это сделать...&lt;br /&gt;&lt;span class=&quot;cut-wrapper&quot;&gt;&lt;span style=&quot;display: none;&quot; id=&quot;span-cuttag___1&quot; class=&quot;cuttag&quot;&gt;&lt;/span&gt;&lt;b class=&quot;cut-open&quot;&gt;(&amp;nbsp;&lt;/b&gt;&lt;b class=&quot;cut-text&quot;&gt;&lt;a href=&quot;https://eddy-em.dreamwidth.org/258747.html#cutid1&quot;&gt;Рукожопие&lt;/a&gt;&lt;/b&gt;&lt;b class=&quot;cut-close&quot;&gt;&amp;nbsp;)&lt;/b&gt;&lt;/span&gt;&lt;div style=&quot;display: none;&quot; id=&quot;div-cuttag___1&quot; aria-live=&quot;assertive&quot;&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;А хочется простейшего: принимать своим демоном клиентские запросы напрямую, без apache или nginx (т.к. большинство наших железок так и работают: веб-сервер ставится на управляющий компьютер тупо ради передачи пользователю двух-трех веб-страничек и пары жабоскриптов с одной-двумя CSSинами). Иметь возможность безопасно передать с клиента на сервер пару логин-пароль, получить сессионную куку и хранить ее хотя бы год — чтобы после перезапуска браузера не нужно было опять аутентификацию проходить. Ну и после того, как подлинность клиента подтверждена, открываем вебсокет и работаем через него.&lt;br /&gt;&lt;br /&gt;&lt;img src=&quot;https://www.dreamwidth.org/tools/commentcount?user=eddy_em&amp;ditemid=258747&quot; width=&quot;30&quot; height=&quot;12&quot; alt=&quot;comment count unavailable&quot; style=&quot;vertical-align: middle;&quot;/&gt; comments</description>
  <comments>https://eddy-em.dreamwidth.org/258747.html</comments>
  <category>рукожопие</category>
  <category>web</category>
  <category>c</category>
  <lj:security>public</lj:security>
  <lj:reply-count>0</lj:reply-count>
</item>
</channel>
</rss>
