<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: uid_t взять из структуры server_rec и в errorlog апача</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7337.html</link>
    <description>Есть задача - заставить писать в errorlog апача uid виртуального хоста - где происходит ошибка.&lt;br&gt;после чтения доков по apache  нашел что есть структура server_rec ( http://httpd.apache.org/dev/apidoc/apidoc_server_rec.html )  в которой есть uid_t &lt;br&gt;Эта структура различна для разных виртуальных хостов - следовательно именно то что нужно&lt;br&gt;нашел где в исходниках код описывающий генерацию логов - это файл http_core.c&lt;br&gt;&lt;br&gt;примерно такая функция генерит сообщение о ошибке &lt;br&gt;&lt;br&gt; ap_log_error(APLOG_MARK, APLOG_NOERRNO&amp;#124;APLOG_NOTICE, cmd-&amp;gt;server,&lt;br&gt;                     &quot;cannot use a full URL in a 401 ErrorDocument &quot;&lt;br&gt;                     &quot;directive --- ignoring!&quot;);&lt;br&gt;&lt;br&gt;А теперь вопрос человека который с Си не знаком и чтения литературы для чайников меня ни как не просветлила - как вставить в  сообщение uid_t ?&lt;br&gt;</description>

<item>
    <title>uid_t взять из структуры server_rec и в errorlog апача (dima)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7337.html#13</link>
    <pubDate>Tue, 06 May 2008 15:00:11 GMT</pubDate>
    <description>т.е. просто убрать endpwent() ?&lt;br&gt;</description>
</item>

<item>
    <title>uid_t взять из структуры server_rec и в errorlog апача (phpcoder)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7337.html#12</link>
    <pubDate>Tue, 06 May 2008 12:23:38 GMT</pubDate>
    <description>&amp;gt;Выложу тут &lt;br&gt;&amp;gt;критика принимается :) &lt;br&gt;&lt;br&gt;&#091;...&#093;&lt;br&gt;&amp;gt;+static const char *log_uid_vh(request_rec *r, char *a) &lt;br&gt;&amp;gt;+&#123; &lt;br&gt;&amp;gt;+       uid_t uidd_mod = r-&amp;gt;server-&amp;gt;server_uid;&lt;br&gt;&amp;gt;+       struct passwd *pwd; &lt;br&gt;&amp;gt;+       pwd = getpwuid(uidd_mod); &lt;br&gt;&amp;gt;+       return ap_psprintf( r-&amp;gt;pool, &quot;&#037;s&quot;, pwd-&amp;gt;pw_name);&lt;br&gt;&amp;gt;+       endpwent(); &lt;br&gt;&amp;gt;+&#125; &lt;br&gt;&amp;gt;+ &lt;br&gt;&lt;br&gt;endpwent() не выполняется никогда, т.к. до кода после return выполнение не доходит.&lt;br&gt;</description>
</item>

<item>
    <title>uid_t взять из структуры server_rec и в errorlog апача (dima)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7337.html#11</link>
    <pubDate>Tue, 06 May 2008 12:02:28 GMT</pubDate>
    <description>Выложу тут &lt;br&gt;критика принимается :)&lt;br&gt;&lt;br&gt;&lt;br&gt;Только в ./apache_1.3.41: config.status&lt;br&gt;Только в ./apache_1.3.41: Makefile&lt;br&gt;Только в ./apache_1.3.41/src/ap: Makefile&lt;br&gt;Только в ./apache_1.3.41/src: apaci&lt;br&gt;Только в ./apache_1.3.41/src: Configuration.apaci&lt;br&gt;Только в ./apache_1.3.41/src/include: ap_config_auto.h&lt;br&gt;Только в ./apache_1.3.41/src/lib: Makefile&lt;br&gt;diff -ur ./oorig/src/main/http_log.c ./apache_1.3.41/src/main/http_log.c&lt;br&gt;--- ./oorig/src/main/http_log.c 2006-07-12 12:16:05.000000000 +0400&lt;br&gt;+++ ./apache_1.3.41/src/main/http_log.c 2008-05-06 15:42:51.000000000 +0400&lt;br&gt;&#064;&#064; -30,6 +30,7 &#064;&#064;&lt;br&gt; #include &quot;http_log.h&quot;&lt;br&gt; #include &quot;http_main.h&quot;&lt;br&gt; &lt;br&gt;+#include &amp;lt;pwd.h&amp;gt;&lt;br&gt; #include &amp;lt;stdarg.h&amp;gt;&lt;br&gt; &lt;br&gt; typedef struct &#123;&lt;br&gt;&#064;&#064; -277,6 +278,9 &#064;&#064;&lt;br&gt; #endif&lt;br&gt;     size_t len;&lt;br&gt;     int save_errno = errno;&lt;br&gt;+    uid_t uidd = s-&amp;gt;server_uid;&lt;br&gt;+    struct passwd *pwd;&lt;br&gt;+    pwd = getpwuid(uidd);&lt;br&gt;     FILE *logf;&lt;br&gt; &lt;br&gt;     if (s == NULL) &#123;&lt;br&gt;&#064;&#064; -311,13 +315,15 &#064;&#064;&lt;br&gt;     &#125;&lt;br&gt; &lt;br&gt;     if (logf) &#123;&lt;br&gt;-       len = ap_snprintf(errstr, sizeof(errstr), &quot;&#091;&#037;s&#093; &quot;, </description>
</item>

<item>
    <title>uid_t взять из структуры server_rec и в errorlog апача (dima)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7337.html#10</link>
    <pubDate>Sun, 04 May 2008 09:22:36 GMT</pubDate>
    <description>если кому интересно будет как заставить в логи писать uid пользователя (можно конечно и gid )&lt;br&gt;есть в апаче такая структура server_rec в которой содержится server_uid и server_gid&lt;br&gt;это то откуда буду брать информацию&lt;br&gt;в каждой функции не обходимо объявить указатель на  server_rec *s;&lt;br&gt;&lt;br&gt;для каждого error_log сообщения нужно прописать откуда и что берем  (привожу пример)&lt;br&gt;&lt;br&gt;ap_log_error(APLOG_MARK, APLOG_NOERRNO&amp;#124;APLOG_NOTICE, server_conf,&lt;br&gt;    &quot;&#037;s configured -- resuming normal operations &#037;d&quot;,&lt;br&gt;    ap_get_server_version(), s-&amp;gt;server_uid);&lt;br&gt;&lt;br&gt;соответственно по всему коду нужно найти те сообщения в которые надо добавить&lt;br&gt;для access_log все проще&lt;br&gt;&lt;br&gt;задаем что б  при описании лога в конфиге параметр &#037;g заставлял писать uid&lt;br&gt;&lt;br&gt;static const char *log_uid_vh(request_rec *r, char *a)&lt;br&gt;&#123;&lt;br&gt;return ap_psprintf( r-&amp;gt;pool, &quot;&#037;d&quot;, r-&amp;gt;server-&amp;gt;server_uid);&lt;br&gt;&#125;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;и в log_item_list  добавим &lt;br&gt; &#123;&lt;br&gt;&apos;g&apos;, log_uid_vh, 0&lt;br&gt;  &#125;,&lt;br&gt;&lt;br&gt;теперь в конфиге задаем &lt;br&gt;LogFormat &quot; &#037;h &#037;l &#037;u &#037;t &#092;&quot;&#037;r&#092;&quot; &#037;&amp;gt;s &#037;b &#092;&quot;&#037;&#123;Referer&#125;i&#092;&quot; &#092;&quot;&#037;&#123;User-Agen</description>
</item>

<item>
    <title>uid_t взять из структуры server_rec и в errorlog апача (dima)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7337.html#9</link>
    <pubDate>Wed, 30 Apr 2008 11:51:09 GMT</pubDate>
    <description>спасибо за подсказку - действительно в конфиге пропустил User nobody&lt;br&gt;теперь работает как надо - дальше буду тестировать с виртуальными хостами - результат напишу&lt;br&gt;</description>
</item>

<item>
    <title>uid_t взять из структуры server_rec и в errorlog апача (phpcoder)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7337.html#8</link>
    <pubDate>Wed, 30 Apr 2008 11:30:45 GMT</pubDate>
    <description>&amp;gt;вот так написал - он стал в логи выдавать 65534 это как &lt;br&gt;&amp;gt;я понимаю максимальный номер - id показывает что я 30144 &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;процесс принадлежит мне и uid должен иметь мой&lt;br&gt;&lt;br&gt;Очень похоже, что 65534 это uid пользователя nobody от которого у вас Апач запущен (и ОСь, наверное, FreeBSD?)&lt;br&gt;</description>
</item>

<item>
    <title>uid_t взять из структуры server_rec и в errorlog апача (phpcoder)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7337.html#7</link>
    <pubDate>Wed, 30 Apr 2008 11:28:59 GMT</pubDate>
    <description>&amp;gt;в модуле mod_log_config.c написал такую вещь &lt;br&gt;&amp;gt;static const char *log_uid_vh(request_rec *r, char *a) &lt;br&gt;&amp;gt;&#123; &lt;br&gt;&amp;gt;return ap_psprintf( &quot;&#037;d&quot;, r-&amp;gt;server-&amp;gt;server_uid);&lt;br&gt;&amp;gt;&#125; &lt;br&gt;&lt;br&gt;Видимо, ap_psprintf() вернула NULL. Разбирайтесь почему. Она память выделяет сама? Или ей нужен указательна па строку, в которую она запишет что надо?&lt;br&gt;&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>uid_t взять из структуры server_rec и в errorlog апача (dima)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7337.html#6</link>
    <pubDate>Wed, 30 Apr 2008 11:27:19 GMT</pubDate>
    <description>static const char *log_uid_vh(request_rec *r, char *a)&lt;br&gt;&#123;&lt;br&gt;return ap_psprintf( r-&amp;gt;pool, &quot;&#037;d&quot;, r-&amp;gt;server-&amp;gt;server_uid);&lt;br&gt;&#125;&lt;br&gt;&lt;br&gt;вот так написал - он стал в логи выдавать 65534 это как я понимаю максимальный номер - id показывает что я 30144&lt;br&gt;&lt;br&gt;процесс принадлежит мне и uid должен иметь мой&lt;br&gt;</description>
</item>

<item>
    <title>uid_t взять из структуры server_rec и в errorlog апача (dima)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/7337.html#5</link>
    <pubDate>Wed, 30 Apr 2008 11:19:26 GMT</pubDate>
    <description>в модуле mod_log_config.c написал такую вещь &lt;br&gt;static const char *log_uid_vh(request_rec *r, char *a)&lt;br&gt;&#123;&lt;br&gt;return ap_psprintf( &quot;&#037;d&quot;, r-&amp;gt;server-&amp;gt;server_uid);&lt;br&gt;&#125;&lt;br&gt;&lt;br&gt;и добавил что б в конфиг оно писалось если добавить в customlog &quot; &#037;g &quot; combined &lt;br&gt;в итоге при попытке записать в лог выдает ошибку &lt;br&gt;child pid 12099 exit signal Segmentation fault (11)&lt;br&gt;&lt;br&gt;что ему еще надо ?&lt;br&gt;</description>
</item>

</channel>
</rss>
