やるきなし

2017/04/25 12:22 / Wanderlust+IMAP/SSL w/emacs24 24.5+1-10

Debian GNU/Linux unstable (sid) で emacs24 が 24.5+1-10 に上がった際に,以下のとおりopenssl s_clientが使えなくなった.

[/usr/share/doc/emacs24-common/changelog.Debian.gz]
* Don't offer/use openssl s_client by default: "s_client is a debug
  tool, it does not set up a secure connection, it ignores all
  errors and just continues.  It also doesn't do checks it should be
  doing.  This is all documented behaviour." -- Kurt Roeckx
  Add these patches to fix the problem:
    0028-IMAP-connections-no-longer-use-openssl-s_client.patch
    0029-openssl-s_client-is-no-longer-a-default-for-ssl-conn.patch
  Thanks to Kurt Roeckx for reporting the issue. (Closes: #766397)

おそらくその影響で,Wanderlust の IMAP/SSL が gnutls-cli を使うようになって,うまくサーバに接続できない状況となってしまった.

% gnutls-cli --port XXXXX localhost
Processed 173 CA certificate(s).
Resolving 'localhost:XXXXX'...
Connecting to '::1:XXXXX'...
- Certificate type: X.509
- Got a certificate list of 1 certificates.
- Certificate[0] info:
 - subject `EMAIL=postmaster@example.com,CN=localhost,OU=Automatically-generated IMAP SSL key,O=Courier Mail Server,L=New York,ST=NY,C=US', issuer `EMAIL=postmaster@example.com,CN=localhost,OU=Automatically-generated IMAP SSL key,O=Courier Mail Server,L=New York,ST=NY,C=US', serial 0x.................., RSA key 4096 bits, signed using RSA-SHA1, activated `2015-03-.. ..:..:.. UTC', expires `2016-03-.. ..:..:.. UTC', key-ID `sha256:........'
        Public Key ID:
                sha1:........
                sha256:........
        Public key's random art:
(snip)

- Status: The certificate is NOT trusted. The certificate issuer is unknown. The certificate chain uses expired certificate. 
*** PKI verification of server certificate failed...
*** Fatal error: Error in the certificate.
*** handshake has failed: Error in the certificate.

Wanderlust から /usr/share/emacs/24.5/lisp/net/tls.el.gz が呼ばれて,gnutls-cli の引数は以下のように定義されている.

(defcustom tls-program
  '("gnutls-cli --x509cafile %t -p %p %h"
    "gnutls-cli --x509cafile %t -p %p %h --protocols ssl3")
; snip

ということで ~/.wl に以下を書いて解決.自前サーバを port forward して使っているので--insecureでとりあえずは問題なし.

(setq tls-program '("gnutls-cli --insecure --x509cafile %t -p %p %h"))

2017/04/08 08:41 / Emacs の local variable を eval する

いろいろ互換性を考慮して code 毎に ruby-indent-level 等の Emacs local variable を設定することにしている.以下のような感じ.

#!/usr/bin/env ruby

if true
    puts "foo"
end

# Local Variables:
# ruby-indent-level: 4
# End:

Default の ruby-indent-level は 2 なので,Local Variables:を書いた後にそれをEmacsのBufferに反映させるためには,ファイルの再読込みをすればよいのだが,それをしなくても M-x normal-mode すれば反映されるらしい.See f1-f normal-mode or /usr/share/emacs/24.5/lisp/files.el.gz.

2017/03/26 00:54 / curl on お名前.com 共用サーバーSD CGI

お名前.com 共用サーバーSDにて,ちょっとした CGI で curl を利用していたのだが,急に使えなくなった.仕方なく wget を使うことにする.

原因は(64-bitの) libldap-2.4.so.2,liblber-2.4.so.2 が存在しないこと.ldap 対応の curl が install されているらしい.ちなみに curl は 64-bit で,OS は Solaris 10.ssh でログインした際には 32-bit 版の curl が普通に使える.

% ldd /usr/local/bin/curl (← ruby の CGI で `ldd /usr/local/bin/curl` とかを叩く)
    libcurl.so.4 =>  /usr/local/lib/64/libcurl.so.4
    libidn.so.11 =>  /usr/lib/64/libidn.so.11
    libiconv.so.2 =>     /usr/local/lib/64/libiconv.so.2
    libssl.so.1.0.0 =>   /usr/local/lib/64/libssl.so.1.0.0
    libcrypto.so.1.0.0 =>    /usr/local/lib/64/libcrypto.so.1.0.0
    libldap-2.4.so.2 =>  (file not found)
    liblber-2.4.so.2 =>  (file not found)
    libresolv.so.2 =>    /lib/64/libresolv.so.2
    libgen.so.1 =>   /lib/64/libgen.so.1
    libz.so.1 =>     /usr/lib/64/libz.so.1
    librt.so.1 =>    /lib/64/librt.so.1
    libsocket.so.1 =>    /lib/64/libsocket.so.1
    libnsl.so.1 =>   /lib/64/libnsl.so.1
    libc.so.1 =>     /lib/64/libc.so.1
    liblber-2.4.so.2 =>  (file not found)
    libldap-2.4.so.2 =>  (file not found)
    libgcc_s.so.1 =>     /usr/sfw/lib/64/libgcc_s.so.1
    libdl.so.1 =>    /lib/64/libdl.so.1
    libaio.so.1 =>   /lib/64/libaio.so.1
    libmd.so.1 =>    /lib/64/libmd.so.1
    libmp.so.2 =>    /lib/64/libmp.so.2
    libscf.so.1 =>   /lib/64/libscf.so.1
    libdoor.so.1 =>  /lib/64/libdoor.so.1
    libuutil.so.1 =>     /lib/64/libuutil.so.1
    libm.so.2 =>     /lib/64/libm.so.2

もちろん 64-bit libldap-2.4.so.2,liblber-2.4.so.2 をどこかから入手して,LD_RUN_PATH でパス指定するなども考えたが,まず Solaris 10 のバイナリがなかなか見つからず(sunsite.sut.ac.jpはいつのまにかなくなっていて,KDDI のミラーも404),http://mirror.opencsw.org/opencsw/ に OpenCSW Solaris package archive があるにはあったが,.pkg.gz の取り扱い(Linux 等での展開)を考えた時点で面倒になって断念.

Related articles

2017/03/22 16:51 / X-Forwarded-For: unknown (forwarded_for off) (Squid 3.4.8-6+deb8u4)

Squid (Debian GNU/Linux 3.4.8-6+deb8u4) 経由で www.ieee.org にアクセスすると,以下のようなエラーが表示されるようになった.

Bad Request
Bad Request
An error occurred. Please contact your System Administrator.
Copyright 2017 © IEEE . All rights reserved. Use of this Web site signifies your agreement to the IEEE Terms and Conditions.A not-for-profit organization, IEEE is the world's largest professional association for the advancement of technology.

squid.conf で forwarded_for off としているのだが,off だと X-Forwarded-For: unknown というヘッダ情報を送るらしい.X-Forwarded-For を付けない設定とするには delete とする必要があるらしい.以下 squid.conf より.

Related articles

2017/03/10 18:09 / Let's Note CF-AX2 キーボード掃除(キートップ取り外し)

ノートPC (Let's Note CF-AX2) の Enter キー付近にちょっと粘っこいジュースをこぼしてしまい,Enter キーの効きが相当悪くなった.というか,小指で Enter を押すのだが,かなり力を要する状態に.ということで,なんとかしてみた.

http://faq.askpc.panasonic.co.jp/faq/docs/003181を参照して爪とクランプの位置を確認しつつ,マイナスドライバーでクランプ側をまず外し,その後に爪側を外す.あとキートップやパンタグラフ部分の詳細はhttp://akiba-neo.com/letsnote/s9/210/が参考になった.

images/2704.jpg
ジュースをこぼした箇所のキートップを外したところ.Enter 以外も若干引っかかる状態だったので,取り外して綿棒で(少し水を付けたりして)掃除.

images/2707.jpg
パンタグラフ.

images/2708.jpg
Enter キーのキートップの裏は金具があったりなどで結構複雑な構造になっている.

images/2710.jpg
Enter キーのキートップの裏.金具を上げてみたところ.この金具の箇所で動きが悪くなっていた模様.

という感じで,外したキートップを全て水洗いして元に戻したら普通に使えるようになった.