tag:blogger.com,1999:blog-69707046255843744762024-02-08T07:08:43.675+09:00Ryo's PageRYOhttp://www.blogger.com/profile/16880758639942735418noreply@blogger.comBlogger254125tag:blogger.com,1999:blog-6970704625584374476.post-26626205403775568302023-01-09T11:35:00.003+09:002023-01-09T11:35:26.492+09:00fluxbox のフォントが表示されない(ただの自分メモ)<p>なんかいろいろ疲れて全くブログは更新してないところで,自分のためにメモっておきたいことがあったのでたまには更新してみる。 <br /></p><p>自宅ノートの Fedora をバージョンアップしたら fluxbox の右クリックメニューのウィンドウは出るんだけど,その中の文字が何も表示されない現象にあって困ってた。</p><p>/usr/share/fluxbox/styles/*/theme.cfg にフォントの設定があるんだけど,デフォルトのフォント設定はこんな感じ↓</p><blockquote><p>menu.frame.font: sans-9:bold<br />menu.title.font: sans-10:bold<br /><br /></p></blockquote><p>会社の PC だと問題なく動いているので,入ってるフォントの差分を取ったら自宅の方は open-sans なるフォントが入ってることに気付いた。</p><p>これアンインストールしたら表示されるようになった。うーん、open-sans 入れた方が正しい設定な気もするんだが。。。もう面倒だからこれ以上追わない。<br /></p>RYOhttp://www.blogger.com/profile/16880758639942735418noreply@blogger.com0tag:blogger.com,1999:blog-6970704625584374476.post-23815755321537086962021-08-12T15:58:00.000+09:002021-08-12T15:58:04.296+09:00ドットファイルのワイルドカード on bash<p>ネット界隈だと bash においてカレントディレクトリ下の<span>ドットファイルをワイルドカードで持ってきたいという解決策として .??* が提案されていることが多いのだが、これだと「.a」みたいな「ドット」+ 1文字がひっかからないんじゃないかと。</span></p><p><span> bash ならこれ↓が正解なんじゃないのかと? </span></p><p><span> </span><span> </span>.[!.]*</p><p><br /></p>RYOhttp://www.blogger.com/profile/16880758639942735418noreply@blogger.com0tag:blogger.com,1999:blog-6970704625584374476.post-41666989173811055412020-08-22T13:59:00.005+09:002020-08-22T14:01:06.111+09:00The apk for your currently selected variant is not signed. <p>Android Studio で,mock という名前の自前の Build Variant を作っったのだが,ビルドの際に以下のエラーが出る。</p><p></p><blockquote>Error: The apk for your currently selected variant (app-mock.apk) is not signed. Please specify a signing configuration for this variant (mock).</blockquote><p></p><p> </p><p>Mock のための Build Variant なので署名とかいらないし。取り急ぎ build.gradle で以下のように debug 用の署名を参照させることで解決。正しい方法かどうか知らんが。</p><p></p><blockquote><p> buildTypes {<br /> :<br /> mock {<br /> :<br /> signingConfig signingConfigs.debug<br /> :<br /> }</p><p> </p></blockquote><p></p>RYOhttp://www.blogger.com/profile/16880758639942735418noreply@blogger.com0tag:blogger.com,1999:blog-6970704625584374476.post-3921566590653511942020-08-10T15:57:00.003+09:002020-08-10T15:57:12.472+09:00org.reflections.ReflectionsException: Scanner SubTypesScanner was not configured<p> use reflections 0.9.11 (not 0.9.12)</p><p> <br /> implementation 'org.reflections:reflections:0.9.11'</p>RYOhttp://www.blogger.com/profile/16880758639942735418noreply@blogger.com0tag:blogger.com,1999:blog-6970704625584374476.post-61990030677267934712020-07-19T14:47:00.002+09:002020-07-19T14:53:20.399+09:00Intel AMT を SSL 化したくて MeshCommander 使ったら一発だった件昨今の COVID-19 騒動によりめっきり自宅でしか仕事をしなくなったので,この環境を整えるべく自宅内仕事検証用サーバ( hp z840 )のコントロールをどこからでもリモートで可能にしようと思い立つ。<br />
<br />
手段としては,WoL だとどこかに常時起動のマシンが必要となり,私の自宅環境のポリシー (少しでも火事の危険があるものは排除)としては許し難いので,Intel AMT を使うことに。<br />
<br />
しかし,単純に MEBX から設定しただけだと SSL の設定が出来ず,これじゃ外からコントロールするのも不安だなぁと思っていて調べたところ <a href="https://www.meshcommander.com/meshcommander" target="_blank">MeshCommander</a> なんていう素晴らしいソフトを発見。これを使うと一発で SSL 設定可能だった。MeshCommander は,一言で言うと AMT のクライアントで,動作的には Node.js を使ったローカルの Web アプリになっている(WIndows には専用のクライアントバイナリ版があるみたいだけど,それ以外の環境では Node.js 版を使ってね的な代物)。<br />
<br />
<br />
以下は SSL 有効化の作業メモ。<br />
<ol>
<li>MeshCommander のインストール<blockquote class="tr_bq">
$ npm install meshcommander</blockquote>
</li>
<li>MeshCommander 起動<br /><blockquote class="tr_bq">
$ node node_modules/meshcommander<br />
MeshCommander running on http://127.0.0.1:3000.</blockquote>
</li>
<li>上記のように node コマンドで起動すると接続用 URL が表示されるので,そこに Web ブラウザからアクセスする。</li>
<li> コントロールするサーバの追加<br />画面上の [Add Computer] をクリックして適当にコントロールするサーバの情報を入力して [OK]。 <div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivLSIOsUefsZQEFZoxdWoeTPCzEAQrJL8kENws79QckM45zIrby9nGbTkbQENgObwzSmluLbG7t_SOTgeg7oaJ6qw8MwTRKOt5nZ69CFq-_bci-AqwTn1eFbXDlXKrBa_Z2STHEk0r1SL-/s1600/add-computer.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="297" data-original-width="441" height="215" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivLSIOsUefsZQEFZoxdWoeTPCzEAQrJL8kENws79QckM45zIrby9nGbTkbQENgObwzSmluLbG7t_SOTgeg7oaJ6qw8MwTRKOt5nZ69CFq-_bci-AqwTn1eFbXDlXKrBa_Z2STHEk0r1SL-/s320/add-computer.png" width="320" /></a></div>
<blockquote class="tr_bq">
<br /></blockquote>
</li>
<li>コントロールするサーバに接続<br />トップ画面には追加したサーバが表示されているはずで,その右側に[Connect] ボタンがあるのでそれをクリックするとサーバに接続される。</li>
<li>SSLサーバ証明書の発行と登録<br />サーバに接続したら,左側のメニュから [Security Settings] をクリックし,[Issue Certificate] で適当に情報を入力。</li>
<li>SSL 接続の設定<br />上記の[Security Settings]の画面のまま,上部に [Remote TLS security] という欄があり,そこが Disabled になっているはずなのでこれをクリック。<br /><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1Evj-8a2ccU9zfX4pjRyrAOJRglyHZYLJ3c8r2vOiYbTamSBDFPxEq2Fa8oUuXEz928_8EmbojYM1X5rcgRKXeuKCfgsfAJGi0jm4GcpuXFIxKZTvQ-Hr-6GSqmhTtvihyphenhyphenOCN0WfSH3D-/s1600/security.png" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="366" data-original-width="537" height="272" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1Evj-8a2ccU9zfX4pjRyrAOJRglyHZYLJ3c8r2vOiYbTamSBDFPxEq2Fa8oUuXEz928_8EmbojYM1X5rcgRKXeuKCfgsfAJGi0jm4GcpuXFIxKZTvQ-Hr-6GSqmhTtvihyphenhyphenOCN0WfSH3D-/s400/security.png" width="400" /></a><br /> [Certificate] で先ほど作成した証明書を選び,[Security] で適当な値を選ぶ。私は[Server-aut, non-TLS allowed]を選択して外からは SSL(16993) ,内部からはどっちでも(16992, 16993) 接続できるような運用にしようと思っている。</li>
<li>これでブラウザから https://<AMTアドレス>:16993/ にアクセスすると,https 経由で AMT の設定ができるようになった。もちろんこのまま MeshCommander の localhost:3000 で作業を継続しても良い。</li>
</ol>
RYOhttp://www.blogger.com/profile/16880758639942735418noreply@blogger.com0tag:blogger.com,1999:blog-6970704625584374476.post-86869005405920879612020-07-15T18:27:00.000+09:002020-07-15T18:27:04.442+09:00"git push -f" failed with "You are not allowed to force push code to a protected branch on this project" on GitLabI would like to push my git branch by compulsion to my GitLab remote repository, but I couldn't do it with the following error.<br />
<br />
<blockquote class="tr_bq">
<span style="font-size: x-small;">$ git push -f</span><br />
<span style="font-size: x-small;"> : (snip)<br />Enumerating objects: 9, done.<br />Counting objects: 100% (9/9), done.<br />Delta compression using up to 8 threads<br />Compressing objects: 100% (9/9), done.<br />Writing objects: 100% (9/9), 3.22 KiB | 3.22 MiB/s, done.<br />Total 9 (delta 0), reused 8 (delta 0)<br />remote: GitLab: You are not allowed to force push code to a protected branch on this project.</span></blockquote>
<br />
Resolution:<br />
Do the following procedure on the web page of your GitLab repository .<br />
<br />
1. [Settings] -> [Repository] -> [Protected Branches]<br />
Push "Expand " button<br />
<br />
2. If a branch is protected, you must see "Unprotect" button. Pushing the "Unprotect" button allows you to force commit.<br />
<br />RYOhttp://www.blogger.com/profile/16880758639942735418noreply@blogger.com0tag:blogger.com,1999:blog-6970704625584374476.post-3206944780812761672020-06-27T11:20:00.003+09:002020-06-27T11:24:15.776+09:00the container name "xxxx" is already in use by "XXXX....." You have to remove that container to be able to reuse that name.: that name is already in use手元の OSP (16.0) で galera-bundle-0 が上がらない。昨晩ホストをブッちん切りしたせいだろう。<br />
<br />
<style type="text/css">
pre {
font-size: 9px;
;width:550px;
word-break: break-all;
white-space: pre; /* CSS 2.0 */
white-space: pre-wrap; /* CSS 2.1 */
white-space: pre-line; /* CSS 3.0 */
white-space: -pre-wrap; /* Opera 4-6 */
white-space: -o-pre-wrap; /* Opera 7 */
white-space: -moz-pre-wrap; /* Mozilla */
white-space: -hp-pre-wrap; /* HP Printers */
word-wrap: break-word; /* IE 5+ */
;overflow: auto;
;white-space: normal;
;white-space: pre-wrap; /* css-3 */
;white-space: -moz-pre-wrap; /* Mozilla, since 1999 */
;white-space: -pre-wrap; /* Opera 4-6 */
;white-space: -o-pre-wrap; /* Opera 7 */
;word-wrap: break-word; /* Internet Explorer 5.5+ */
border:1px solid #ccc;
;padding:5px;
;margin:10px;
background-color:#e7ebff;
}
</style>
<br />
<pre><code>#pcs status
: (snip)
Container bundle set: galera-bundle [cluster.common.tag/rhosp16-openstack-mariadb:pcmklatest]
galera-bundle-0 (ocf::heartbeat:galera): Stopped
galera-bundle-1 (ocf::heartbeat:galera): Slave controller-1
galera-bundle-2 (ocf::heartbeat:galera): Slave controller-2
: (snip)</code></pre>
<br />
podman の galera 見てみる。<br />
<pre><code># podman ps --all | grep galera
#
</code></pre>
<br />
いない。<br />
<br />
ログ見てみる。<br />
<pre><code># grep galera-bundle /var/log/messages
: (snip)
Jun 27 01:36:36 controller-0 podman(galera-bundle-podman-0)[6986]: ERROR: Error: error creating container storage: the container name "galera-bundle-podman-0" is already in use by "dc7e73548aefc2af4193c5a1b34210f45866e6d260b55f65e0a7b6a487fb767d". You have to remove that container to be able to reuse that name.: that name is already in use
: (snip)</code></pre>
なんか残っちゃったみたいだ。<br />
しかし podman ps --all にはこんなのいないし。<br />
<br />
どうやら /var/lib/containers/storage/overlay-containers/containers.json にこの ID が存在していた。<br />
<br />
<pre><code># cat /var/lib/containers/storage/overlay-containers/containers.json | python -m json.tool | less
:
{
"id": "dc7e73548aefc2af4193c5a1b34210f45866e6d260b55f65e0a7b6a487fb767d",
"names": [
"galera-bundle-podman-0"
],
"image": "4eec1ff919b6164424d15a41a29dec83f812494966ffa54b70e853ffce7a5563",
"layer": "c951ce8b56b16ef03855d5c19c5c701bc808baee64bc4a094f4374dfc004c34e",
"metadata": "{\"image-name\":\"undercloud-0.ctlplane.redhat.local:8787/rh-osbs/rhosp16-openstack-mariadb:20200416.1\",\"image-id\":\"4eec1ff919b6164424d15a41a29dec83f812494966ffa54b70e853ffce7a5563\",\"name\":\"galera-bundle-podman-0\",\"created-at\":1593167005}",
"created": "2020-06-26T10:23:25.985899627Z",
"flags": {
"MountLabel": "system_u:object_r:container_file_t:s0:c560,c687",
"ProcessLabel": "system_u:system_r:container_t:s0:c560,c687"
}
}, </code></pre>
おぉ、、、<br />
このストレージを消す。<br />
<pre><code># podman rm --storage dc7e735
dc7e735
</code></pre>
<br />
消えた。
その後 pcs cluster start したら直った。よかた。RYOhttp://www.blogger.com/profile/16880758639942735418noreply@blogger.com0tag:blogger.com,1999:blog-6970704625584374476.post-67578288011549670292020-06-02T17:09:00.000+09:002020-06-02T17:09:33.115+09:00cannot enable nested-kvm with 'kvm_intel': Input/output error# modprobe kvm_intel<br />
modprobe: ERROR: could not insert 'kvm_intel': Input/output error<br />
<br />
Resolution:<br />
<br />
Modify a value of the "mode" attribute of <cpu> element to 'host-passthroug' like: <br />
<cpu mode='host-passthrough' check='full'>RYOhttp://www.blogger.com/profile/16880758639942735418noreply@blogger.com0tag:blogger.com,1999:blog-6970704625584374476.post-34222950607869872072020-05-21T10:52:00.001+09:002020-05-21T10:52:28.012+09:00libvirt guest CPU doesn't match specification: missing features: hle,rtmerror: Failed to start domain mydomain<br />
error: operation failed: guest CPU doesn't match specification: missing features: hle,rtm<br />
<br />
<br />
1. virsh edit mydomain<br />
2. add the following elements to <cpu></cpu> element.<br />
<br />
<pre><code> <feature name="rtm" policy="disable">
<feature name="hle" policy="disable">
</code></pre>
<br />
3. virsh start mydomainRYOhttp://www.blogger.com/profile/16880758639942735418noreply@blogger.com0tag:blogger.com,1999:blog-6970704625584374476.post-80789223680252346922020-01-27T13:25:00.002+09:002020-01-27T13:25:27.148+09:00vokoscreenNG 最強<a href="https://github.com/vkohaupt/vokoscreenNG">https://github.com/vkohaupt/vokoscreenNG</a><br />
<br />
これ最強なのでメモ。これでプレゼンの練習もバッチリっす。RYOhttp://www.blogger.com/profile/16880758639942735418noreply@blogger.com0tag:blogger.com,1999:blog-6970704625584374476.post-30865522299185978992020-01-22T18:17:00.004+09:002020-01-22T18:17:58.368+09:00Firefox で 127.0.0.1 や localhost へのアクセスを Proxy 通したいFirefox は,network.no_proxies_on に何も設定されていなくてもデフォルトで localhost やら 127.0.0.1 の通信を Proxy 通さないようにしている模様。<br />
<br />
なので例えば Firefox に Socks Proxy を設定して,その Socks Proxy のサーバ上の 127.0.0.1 で Listen している Web サーバなんかがあったときにそれにアクセスできないことになる。<br />
<br />
この仕様どうなの?とは思うが、回避策は about:config で以下を設定。<br />
<br />
<pre style="-webkit-text-stroke-width: 0px; background-color: #eff0f1; border-radius: 3px; border: 0px; box-sizing: inherit; color: #242729; font-family: Consolas, Menlo, Monaco, "Lucida Console", "Liberation Mono", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Courier New", monospace, sans-serif; font-size: 13px; font-stretch: inherit; font-style: normal; font-variant-caps: normal; font-variant-east-asian: inherit; font-variant-ligatures: normal; font-variant-numeric: inherit; font-weight: 400; letter-spacing: normal; line-height: inherit; margin: 0px 0px 1em; max-height: 600px; orphans: 2; overflow-wrap: normal; overflow: auto; padding: 12px 8px; text-align: left; text-decoration-color: initial; text-decoration-style: initial; text-indent: 0px; text-transform: none; vertical-align: baseline; widows: 2; width: auto; word-spacing: 0px;"><code style="background-color: #eff0f1; border: 0px; box-sizing: inherit; font-family: Consolas, Menlo, Monaco, "Lucida Console", "Liberation Mono", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Courier New", monospace, sans-serif; font-size: 13px; font-stretch: inherit; font-style: inherit; font-variant: inherit; font-weight: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline; white-space: inherit;">network.proxy.allow_hijacking_localhost = true</code></pre>
<table id="prefs"><tbody>
<tr class="odd "><th scope="row"><br /></th></tr>
</tbody></table>
RYOhttp://www.blogger.com/profile/16880758639942735418noreply@blogger.com0tag:blogger.com,1999:blog-6970704625584374476.post-22627845102418121062019-12-19T11:17:00.001+09:002019-12-19T11:17:02.775+09:00firewall-cmd --set-log-denied=all してるのにログ吐かない!標題の件は単に rsyslog の設定が足りない。<br />
<br />
/etc/rsyslog.d/firewalld_block.conf を以下の内容で作成して rsyslog を再起動<br />
<br />
:msg,contains,"_DROP" /var/log/firewalld_block.log<br />:msg,contains,"_REJECT" /var/log/firewalld_block.log<br />& stop<br />
<br />RYOhttp://www.blogger.com/profile/16880758639942735418noreply@blogger.com1tag:blogger.com,1999:blog-6970704625584374476.post-51177318677810720252019-04-14T13:24:00.000+09:002019-04-14T20:58:33.076+09:00Samba4.8 における idmap からのユーザ毎ホームディレクトリパスに苦しむ(回避策のみで解決せず)<style type="text/css">
pre {
font-size: 9px;
;width:550px;
word-break: break-all;
white-space: pre; /* CSS 2.0 */
white-space: pre-wrap; /* CSS 2.1 */
white-space: pre-line; /* CSS 3.0 */
white-space: -pre-wrap; /* Opera 4-6 */
white-space: -o-pre-wrap; /* Opera 7 */
white-space: -moz-pre-wrap; /* Mozilla */
white-space: -hp-pre-wrap; /* HP Printers */
word-wrap: break-word; /* IE 5+ */
;overflow: auto;
;white-space: normal;
;white-space: pre-wrap; /* css-3 */
;white-space: -moz-pre-wrap; /* Mozilla, since 1999 */
;white-space: -pre-wrap; /* Opera 4-6 */
;white-space: -o-pre-wrap; /* Opera 7 */
;word-wrap: break-word; /* Internet Explorer 5.5+ */
border:1px solid #ccc;
;padding:5px;
;margin:10px;
background-color:#e7ebff;
}
</style>
何年ぶりかで Samba(Samba 4.8 on CentOS 7) のファイルサーバ構築をやってるのでメモ。AD と LDAP が混在したような環境の中で,あるユーザが UNIX からも Windows からも自身の同じホームディレクトリにアクセスしたいっていう大学とかにはよくある構成(今回のこの Samba はドメインコントローラの役割は担わない)。<br />
<br />
設定はほぼ終えた。が,一点困っているのは,上記のような構成において[homes] セクション内の %H 変数で得られるホームディレクトリのパスが template homedir ディレクティブの設定に固定されてしまうということ。今回はユーザ毎にホームディレクトリのパス形式が違うのでこれだと困る。なので NSS から取得できる値にしたい(getpwnam()で取れるやつ)。LDAP の homeDirectory 属性に設定されているやつでも良い。<br />
<br />
しかし,顧客要件から設定は security = ads が前提。この場合 Samba 4.8 からは winbind 必須とのこと(<a href="https://www.samba.org/samba/history/samba-4.8.0.html" target="_blank">Samba 4.8 のリリースノート</a>参照)。idmap_nss と idmap_rfc2307(LDAPをバックエンドにする) を試したが、どちらも sid-uid のマッピングは成功するものの、ホームディレクトリは template homedir の値になってしまう。どうも winbind はマッピングに関連する属性(uid, uidNumber, cn , gidNumber等)しかバックエンドから取得せず,それ以外は自前で処理(template xxxxから)してしまう仕様ようだ。Web には idmap_rfc2307 なら出来るという情報もちらほらあるが,少なくとも CentOS 7.6 上の Samba4.8.3 では無理なようだ。<br />
<br />
証拠をつかもうと samba-4.8.3-4.el7 のソースを見た。すると以下のようなので,根本解決は Samba のソース改変しか無いと思われる。Workaround としては template homedir で表現可能なように,ホームディレクトリのシンボリックリンクを作成するくらいしか無いのではないか。
<br />
<br />
winbindd の getpwnam() の定義↓
<br />
<pre><code>source3/winbindd/winbindd.c:
:
578 { WINBINDD_GETPWNAM, "GETPWNAM",
579 winbindd_getpwnam_send, winbindd_getpwnam_recv },
:
</code></pre>
<br />
winbindd_getpwnam_send() の中で wb_lookupname_send() のコールバックとして winbindd_getpwnam_lookupname_done() を定義↓
<br />
<pre><code>source3/winbindd/winbindd_getpwnam.c:
:
37 struct tevent_req *winbindd_getpwnam_send(TALLOC_CTX *mem_ctx,
38 struct tevent_context *ev,
39 struct winbindd_cli_state *cli,
:
80 subreq = wb_lookupname_send(state, ev,
81 state->namespace,
82 state->domname,
:
88 tevent_req_set_callback(subreq, winbindd_getpwnam_lookupname_done,
89 req);
90 return req;
91 }
:
</code></pre>
<br />
winbindd_getpwnam_lookupname_done() で wb_getpwsid_send() をコール↓
<br />
<pre><code>source3/winbindd/winbindd_getpwnam.c:
:
93 static void winbindd_getpwnam_lookupname_done(struct tevent_req *subreq)
94 {
:
107 subreq = wb_getpwsid_send(state, state->ev, &state->sid, &state->pw);
:
</code></pre>
<br />
wb_getpwsid_send() で wb_queryuser_send() をコール↓
<br />
<pre><code>source3/winbindd/wb_getpwsid.c:
:
34 struct tevent_req *wb_getpwsid_send(TALLOC_CTX *mem_ctx,
35 struct tevent_context *ev,
:
56 subreq = wb_queryuser_send(state, ev, &state->sid);
:
</code></pre>
<br />
wb_queryuser_send() で wb_sids2xids_send() のコールバックとして wb_queryuser_got_uid() を定義↓
<br />
<pre><code>source3/winbindd/wb_queryuser.c:
:
39 struct tevent_req *wb_queryuser_send(TALLOC_CTX *mem_ctx,
40 struct tevent_context *ev,
41 const struct dom_sid *user_sid)
42 {
:
63 subreq = wb_sids2xids_send(
64 state, state->ev, &state->info->user_sid, 1);
65 if (tevent_req_nomem(subreq, req)) {
66 return tevent_req_post(req, ev);
67 }
68 tevent_req_set_callback(subreq, wb_queryuser_got_uid, req);
69 return req;
70 }
:
</code></pre>
<br />
wb_queryuser_got_uid() の中では wbint_userinfo の homedir 要素に lp_template_homedir() を設定↓
<br />
<pre><code>source3/winbindd/wb_queryuser.c:
:
72 static void wb_queryuser_got_uid(struct tevent_req *subreq)
73 {
:
106 info->homedir = talloc_strdup(info, lp_template_homedir());
:
</code></pre>
winbind においてホームディレクトリを設定しているのは上記箇所のみと思われる(見落としあったらどなたかご一報を)。
この lp_template_homedir() はおそらく source3/param/loadparm.c の以下から得られる値なので,idmap からの NSS getpwnam() や LDAP (RFC2307) homeDirectory の入る余地は無いと思われる。
<br />
<pre><code>source3/param/loadparm.c :
:
797 lpcfg_string_set(Globals.ctx, &Globals.template_homedir,
798 "/home/%D/%U");
:</code></pre>
RYOhttp://www.blogger.com/profile/16880758639942735418noreply@blogger.com0tag:blogger.com,1999:blog-6970704625584374476.post-87934637071762014972018-12-05T12:19:00.002+09:002018-12-05T12:25:39.648+09:00ldap.cidict.cidict<style type="text/css">
pre {
font-size: 9px;
;width:550px;
word-break: break-all;
white-space: pre; /* CSS 2.0 */
white-space: pre-wrap; /* CSS 2.1 */
white-space: pre-line; /* CSS 3.0 */
white-space: -pre-wrap; /* Opera 4-6 */
white-space: -o-pre-wrap; /* Opera 7 */
white-space: -moz-pre-wrap; /* Mozilla */
white-space: -hp-pre-wrap; /* HP Printers */
word-wrap: break-word; /* IE 5+ */
;overflow: auto;
;white-space: normal;
;white-space: pre-wrap; /* css-3 */
;white-space: -moz-pre-wrap; /* Mozilla, since 1999 */
;white-space: -pre-wrap; /* Opera 4-6 */
;white-space: -o-pre-wrap; /* Opera 7 */
;word-wrap: break-word; /* Internet Explorer 5.5+ */
border:1px solid #ccc;
;padding:5px;
;margin:10px;
background-color:#e7ebff;
}
</style>
何年前の話してるんだよと言われそうだが、python-ldap で search_s とかで返ってくるディクショナリが case-insensitive じゃないてことで、わざわざ key(属性名)を lower() して reduce() で別のディクショナリ作って in とかで存在確認したりしてたとかもう誰にも言えないけど自分への戒めでここにメモっておきたい。<br />
<br />
ldap.cidict.cidict(result[0][1]) で case-insensitive なディクショナリで返してくれるっていや、ホント知らなかった。ググっても意外と少ない。例えば以下のように objectClass の C が大文字でも小文字でも cidict した後なら in で存在チェックできる。
<pre><code>
>>> 'objectclass' in ret[0][1]
False
>>> 'objectClass' in ldap.cidict.cidict(ret[0][1])
True
</code></pre>RYOhttp://www.blogger.com/profile/16880758639942735418noreply@blogger.com0tag:blogger.com,1999:blog-6970704625584374476.post-67149204299980587122018-09-28T14:48:00.000+09:002018-09-28T14:49:06.475+09:00NGINX の proxy_pass のちょっとだけメモNGINX の proxy_pass で GET リクエストがどうなっちゃうのかいつもわからなくなるのでメモ。<br />
<br />
<a href="http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass">http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_pass</a><br />
<div>
<br /></div>
まぁ全ては上記の NGINX に書いてあるんだけど、ここでは前方一致のやつだけ。<br />
<br />
<ul>
<li><b><span style="font-size: large;">proxy_pass に URI が含まれる場合</span></b></li>
<blockquote class="tr_bq">
location /name/ {<br />
proxy_pass http://127.0.0.1/remote/;<br />
}</blockquote>
上記の NGINX ドキュメントページにおける「URI」という用語はどうも NGINX における $uri と同じで、ホスト名より後ろの文字列のようだ。上記例だと /remote/ という部分と思われる。<br /><br />この場合は、normalized URI (URI のデコード後<span style="font-size: x-small;">: // を / にしたり %xx をデコードしたり</span>)の location に定義した部分に一致する箇所を、proxy_pass て定義した URI 部分に置き換えて後ろのサーバに渡す模様。上記設定例の場合は例えば以下のようになる。<br />
<blockquote class="tr_bq">
http://www.example.com/name/foo?bar=baz<br />
↓<br />
http://127.0.0.1/remote/foo?bar=baz</blockquote>
<span style="font-size: x-small;">(/name/ を /remote/ に置き換えて GET リクエストはそのまま)</span><br />
<br />
<li><b><span style="font-size: large;">proxy_pass に URI が含まれない場合</span></b></li>
<blockquote class="tr_bq">
location /some/path/ {<br />
<span style="background-color: white; text-align: justify;">proxy_pass http://127.0.0.1;</span><br />
}</blockquote>
上記 NGINX ドキュメントには、proxy_pass に定義された値がホスト名部分で終わっちゃう場合は request uri ($request_uri)をそのまんま後ろのサーバに渡すって書いてある(または完全な normalized URI = $uri)。<br />
<br />つまり上記設定例の場合は以下のような感じ。<br />
<blockquote class="tr_bq">
http://www.example.com/some/path/foo?bar=baz<br />
↓<br />
http://127.0.0.1/some/path/foo?bar=baz
</blockquote>
<span style="font-size: x-small;">(ホスト名の後ろからはそのまま)</span><br /><br />
<li><b><span style="font-size: large;">proxy_pass で変数を利用している場合</span></b></li>
<blockquote class="tr_bq">
location /name/ {<br />
set myhost myhost.example.com;<br />
proxy_pass http://$myhost/;<br />
}</blockquote>
この例のように proxy_pass 内で変数を利用してしまうと proxy_pass に指定した値のまま後ろのサーバに渡してしまう。つまり:<br />
<blockquote class="tr_bq">
http://www.example.com/name/foo?bar=baz<br />
↓<br />
http://myhost.example.com/</blockquote>
<span style="font-size: x-small;">(とにかく proxy_pass で指定したものしか渡さない)</span><br />
もしリクエストを渡したい場合、proxy_pass は以下のようにすれば良いだろう。<br />
<blockquote class="tr_bq">
proxy_pass http://$myhost$request_uri;</blockquote>
<br />
</ul>
RYOhttp://www.blogger.com/profile/16880758639942735418noreply@blogger.com0tag:blogger.com,1999:blog-6970704625584374476.post-16569752123700026632018-09-20T14:24:00.003+09:002018-09-20T14:28:16.762+09:00Dockerfile の EXPOSE もしくは docker run --expose の意味どこのサイトとは言わないが、docker の EXPOSE について誤った情報が蔓延しているような気がしてならない。<br />
<div>
<br /></div>
<div>
そのサイトは docker0 で繋がっているコンテナ同士の通信のために EXPOSE が必要と書いている。つまり EXPOSE しないと他のコンテナからそのポートにアクセスできないということを言っている。</div>
<div>
<br /></div>
<div>
しかし Dockerfile に EXPOSE なんて書かなくても(docker run で --expose を与えなくても)、あるポートを listen しているコンテナに対して他のコンテナから接続することは可能だ。</div>
<div>
<br /></div>
<div>
嘘だと思うなら以下のような Dockerfile から作ったイメージを --expose せずに docker run して、他のコンテナから「nc -vz <相手> 8080」でもしてみるといい。普通に connected になるはず。</div>
<div>
<blockquote class="tr_bq">
FROM fedora:28<br />
RUN dnf install -y nc<br />
ENTRYPOINT ["/usr/bin/nc", "-kl", "8080"]</blockquote>
</div>
<div>
<br /></div>
<div>
私の EXPOSE の理解は以下。間違ってたらコメント等で指摘ください。</div>
<div>
<br /></div>
<div>
EXPOSE で指定されたポートは docker run に -P (--publish-all) を付与した際の対象ポートとなる。つまりコンテナ内のポートを -P でホストの任意ポートにマッピングしたい場合にEXPOSE でポートを明示する必要がある。</div>
<div>
<br /></div>
RYOhttp://www.blogger.com/profile/16880758639942735418noreply@blogger.com0tag:blogger.com,1999:blog-6970704625584374476.post-76624671328888778402018-09-18T17:23:00.000+09:002018-09-18T17:23:01.887+09:00GKE の Ingress で CDNGKE の Ingress で CDN 出来るようになってる↓<br />
<br />
<a href="https://cloud.google.com/kubernetes-engine/docs/how-to/cdn-backendconfig">https://cloud.google.com/kubernetes-engine/docs/how-to/cdn-backendconfig</a><br />
<br />
<br />RYOhttp://www.blogger.com/profile/16880758639942735418noreply@blogger.com0tag:blogger.com,1999:blog-6970704625584374476.post-46390814877602128312018-08-30T18:22:00.001+09:002018-08-30T18:22:37.792+09:00curl で Proxy ProtocolNGINX で proxy_protocol を設定しちゃうと、curl なんかのクライアントから直接 NGINX のサーバにアクセスできなくなっちゃって辛い。<br />
<div>
検証やテストなんかのときに応答を確認したいのに、上段のロードバランサ等を介さなくちゃならないのは非常に辛い。</div>
<div>
そこで curl に Proxy Protocol オプションが無いかなと探してたらありました。7.60.0 からの実装だそうです。</div>
<div>
<br /></div>
<div>
<a href="https://curl.haxx.se/docs/manpage.html">https://curl.haxx.se/docs/manpage.html</a></div>
<div>
<br /></div>
<div>
<blockquote>
--haproxy-protocol<br />
(HTTP) Send a HAProxy PROXY protocol v1 header at the beginning of the connection. This is used by some load balancers and reverse proxies to indicate the client's true IP address and port.<br />
This option is primarily useful when sending test requests to a service that expects this header.<br />
Added in 7.60.0.</blockquote>
<br />
<div>
Fedora はまだ追いついてないや(7.59.0)。バックポートもされてない。</div>
<br />
<div>
<br /></div>
</div>
RYOhttp://www.blogger.com/profile/16880758639942735418noreply@blogger.com0tag:blogger.com,1999:blog-6970704625584374476.post-88814668182260225802018-08-25T16:26:00.003+09:002018-08-25T16:28:41.868+09:00fcitx-mozc for Fedora 28Fedora Copr で fcitx-mozc を build してみました(fedora-28-x86_64 のみ)。<br />
<br />
<a href="https://copr.fedorainfracloud.org/coprs/ryohayakawa/fcitx-mozc/">https://copr.fedorainfracloud.org/coprs/ryohayakawa/fcitx-mozc/</a><br />
<br />
よろしければどなたか使っていただけるとうれしかったり。不安な方は src.rpm 見てみて下さい。怪しいことはしてません。<br />
<br />
まぁそのうち epel とか Fedora 29 の chroot もやろうかと。<br />
<br />
<br />RYOhttp://www.blogger.com/profile/16880758639942735418noreply@blogger.com0tag:blogger.com,1999:blog-6970704625584374476.post-49409793747581927062018-08-06T11:10:00.000+09:002018-08-06T11:10:04.428+09:00最近の Fedora でマウスが速いFedora 27 にアップデートした頃からだったか、マウスの動きがぴゅんぴゅん速くなってしまい年寄りには結構厳しい状態に...仕方ない、xset m でチョチョイと、、、あれ?遅くならない????<br />
<br />
と、その後忙しさにかまけて調べず我慢してそのまま使っていたが、最近会社 PC を X1 Carbon 6th にして Fedora 28 を入れていて良い機会なのでこれを直すことに。<br />
<br />
最近の Fedora は Wayland がデフォルトのようだが、私は未だに自分の .xinitrc を設定して startx から起動するって流れで Xorg から抜けきれない老人である。しかし Xorg でも libinput というナウな入力デバイスのドライバが主流のようで、Fedora 28 でも /usr/share/X11/xorg.conf.d/40-libinput.conf にデフォルト設定として定義されている。<br />
<br />
この libinput だが、アクセラレーションのモードとして adaptive と flat があり、adaptive の場合 xset m が効かないらしい。このモードは libinput コマンドの list-devices オプションで確認できる。adaptive がデフォルトとのこと。<br />
<br />
<blockquote class="tr_bq">
$ sudo libinput list-devices<br /> :<br /> Device: TPPS/2 Elan TrackPoint<br />Kernel: /dev/input/event15<br />Group: 10<br /> :<br />Accel profiles: flat *adaptive<br />Rotation: n/a</blockquote>
<br />
xset が効かないとなるとどうやって,,, ということでググって xinput でやるべしということがわかった。まず、マウスのデバイス名の確認。<br />
<br />
<blockquote class="tr_bq">
<span style="font-size: x-small;">$ xinput --list --short<br />⎡ Virtual core pointer id=2 [master pointer (3)]<br />⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]<br />⎜ ↳ Synaptics TM3288-011 id=12 [slave pointer (2)]<br />⎜ ↳ TPPS/2 Elan TrackPoint id=13 [slave pointer (2)]<br />⎣ Virtual core keyboard id=3 [master keyboard (2)]<br /> ↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]</span><br /></blockquote>
<span style="font-size: small;">X1 Carbon の赤ポチは「TPPS/2 Elan TrackPoint」という名前のようで、この設定情報を見てみる。</span><br />
<br />
<blockquote class="tr_bq">
<span style="font-size: small;"> $ xinput --list-props "TPPS/2 Elan TrackPoint"<br />Device 'TPPS/2 Elan TrackPoint':<br /> Device Enabled (146): 1<br /> :<br />libinput Accel Speed (301): 0.000000<br /> :</span> </blockquote>
この「<span style="font-size: small;">libinput Accel Speed」を -0.5 くらいに修正してみる。</span><br />
<blockquote class="tr_bq">
$ xinput --set-prop "TPPS/2 Elan TrackPoint" "libinput Accel Speed" -0.5</blockquote>
<span style="font-size: small;"><br /></span> <br />
<span style="font-size: small;">おぉ、遅くなったぞ。良かった。これを .xinitrc に書いておこう。</span> <br />
<span style="font-size: small;"><br /></span> <br />
<span style="font-size: small;"><br /></span> <br />
<span style="font-size: small;"><br /></span> <br />
<br />
<br />
<br />
<br />
<br />
<br />
<blockquote class="tr_bq">
</blockquote>
<br />
<br />
<br />
<br />RYOhttp://www.blogger.com/profile/16880758639942735418noreply@blogger.com0tag:blogger.com,1999:blog-6970704625584374476.post-40516501822433597342018-08-02T16:17:00.000+09:002018-08-02T16:17:07.130+09:00gnome-control-center を docker コンテナから(もしくは別のWMから)docker コンテナから手元のホストの Xorg に gnome-control-center を表示したかったんだけど、単純に gnome-control-center を起動すると画面が空っぽで Devices ってのだけが表示されてる。<br />
<br />
以下の環境変数で解決したのでメモ。<br />
<br />
<blockquote class="tr_bq">
XDG_CURRENT_DESKTOP=GNOME gnome-control-center</blockquote>
<br />
<br />RYOhttp://www.blogger.com/profile/16880758639942735418noreply@blogger.com0tag:blogger.com,1999:blog-6970704625584374476.post-31569434564449787262018-07-30T17:26:00.002+09:002018-07-30T17:26:31.941+09:00docker container から X の画面を出すときの SELinux ドメインソケット経由で docker コンテナからホストの X Server に画面を出すのは Web に結構情報があるのでそれは良いとして、SELinux Enforcing な環境だと Socket へのアクセスが Permission Denied になってちょっとだけハマったので自分のためのメモ。<br />
<br />
docker run のときに以下オプションをつけるとうまく行った。<br />
<blockquote class="tr_bq">
--security-opt label=type:container_runtime_t</blockquote>
RYOhttp://www.blogger.com/profile/16880758639942735418noreply@blogger.com1tag:blogger.com,1999:blog-6970704625584374476.post-47116896220352705272018-07-23T20:00:00.001+09:002018-07-25T12:40:02.323+09:00Fedora 28 on Thinkpad X1 Carbon 6th な環境で docker がうまく動かなかった→動いたの個人的メモX1 Carbon gen 6th に Fedora 28 をインストールしてるんだけど、どうも docker まわりが不安定になった。が、回復したので適当にメモ。<br />
<br />
512GB(SSD) に自動で LVM を切って、普通に dnf install docker したら勝手に<br />
docker-pool なる LV を 178GB もとられてしまった。どうも最近の Fedora の docker は root パーティションがある VG に空きがあると、自動で Storage Driver を devicemapper にしてくれる模様。これはこれで良いのだが、このときの LV のサイズが空き容量の 40% がデフォルトらしい。<br />
<br />
これは /usr/share/container-storage-setup/container-storage-setup に以下の定義があることでわかる。<br />
<blockquote class="tr_bq">
DATA_SIZE=40%FREE</blockquote>
<br />
どうも Thin provisioning のようなので、実際に利用されているディスク量しか消費されないのだと思うのだが、vgdisplay で見ると残量が単純に 178GB を引き算された値になってる。何か気持ち悪いので docker を一回アンインストールしてインストール後、 /etc/sysconfig/docker-storage-setup に以下を記述して docker デーモンを起動した。<br />
<blockquote class="tr_bq">
DATA_SIZE=20G</blockquote>
lvdisplay で docker-pool が 20GB になってることを確認。まぁこれくらいのサイズでいいだろう。<br />
<br />
しかし、今度は docker デーモンは立ち上がるものの、試しに docker run -it --rm fedora:28 /bin/bash などとしてもコンテナがすぐ終わっちゃう。/var/log/audit/audit.log になんだか denied がたくさん出てるので、setools を入れて audit2allow でごまかそうと企む。<br />
<br />
とりあえず、tail -f /var/log/audit/audit.log としておいて docker run ... を実行する。吐かれたログをコピペして別ファイルに保存。で、以下のように audit2allow にかませる。<br />
<blockquote class="tr_bq">
audit2allow -M docker < /tmp/docker-audit</blockquote>
<br />
出来た docker.pp ファイルを semodule にかませる<br />
<blockquote class="tr_bq">
semodule -i docker.pp</blockquote>
<br />
これを 2 回繰り返したら docker run ... 出来るようになった。ちなみに追加した許可は以下。<br />
<br />
<blockquote class="tr_bq">
allow container_t container_file_t:chr_file { read write }; <br />
allow container_t container_file_t:chr_file { getattr ioctl open };</blockquote>
うーーん、docker をアンインストールしたときに何やら外れたんだろう。もっとスマートな直し方がありそうなもんだけど、まぁいいや。<br />
<br />RYOhttp://www.blogger.com/profile/16880758639942735418noreply@blogger.com2tag:blogger.com,1999:blog-6970704625584374476.post-23838840314990826642018-07-21T16:25:00.000+09:002018-07-21T16:25:02.123+09:00X1 Carbon 6th Fedora でマウス動かない現在 Fedora 28 を X1 Carbon 6th にインストール中。<br />
GUI インストーラでマウスが動かない。<br />
↓<br />
カーネルパラメータに以下を追加でおけ。<br />
<br />
<span style="background-color: #fbfbfb; color: #494949; font-family: "Museo Sans", Helvetica, Arial, sans-serif; font-size: 16px;">psmouse.synaptics_intertouch=1 </span><br />
<span style="background-color: #fbfbfb; color: #494949; font-family: "Museo Sans", Helvetica, Arial, sans-serif; font-size: 16px;"><br /></span>
<span style="color: #494949; font-family: Museo Sans, Helvetica, Arial, sans-serif;"><span style="background-color: #fbfbfb;">もしかして茨の道なのかも。</span></span>RYOhttp://www.blogger.com/profile/16880758639942735418noreply@blogger.com0tag:blogger.com,1999:blog-6970704625584374476.post-55110807134144544072018-07-08T12:46:00.004+09:002018-07-08T12:46:44.151+09:00Android Studio で java.lang.ClassNotFoundException: android.view.View$OnUnhandledKeyEventListenerAndroid Studio の Design がまともに動かずコンポーネントを配置してもそれが Blueprint 上で見えない...んで以下のエラーが発生してる状態。<br />
<br />
<blockquote class="tr_bq">
java.lang.ClassNotFoundException: android.view.View$OnUnhandledKeyEventListener</blockquote>
<br />
どうも SDK 28 の問題らしく 27 にしたらエラーが無くなった。以下の情報参照。<br />
<br />
<a href="https://stackoverflow.com/questions/50856622/failed-to-find-style-coordinatorlayoutstyle-in-current-theme-in-android-studio">https://stackoverflow.com/questions/50856622/failed-to-find-style-coordinatorlayoutstyle-in-current-theme-in-android-studio</a><br />
<br />
<blockquote class="tr_bq">
Change the <code>android{</code> in "build.gradle" in app file
<br /> <code>compileSdkVersion 28</code> to <code>compileSdkVersion 27</code>
<br /><code>targetSdkVersion 28</code> to <code>targetSdkVersion 27</code>
<br />also, try to change implementations like
<br /><code>implementation 'com.android.support:appcompat-v7:28.0.0-alpha3'</code> to <br /><code>implementation 'com.android.support:appcompat-v7:27.1.1'</code></blockquote>
RYOhttp://www.blogger.com/profile/16880758639942735418noreply@blogger.com1