2012年4月10日火曜日

modifyTimestamp の書式

LDAP の modifyTimestamp の書式がどうなってるのかとRFC2252をチェック。

 5.1.2. modifyTimestamp

   This attribute SHOULD appear in entries which have been modified
   using the Modify operation.

    ( 2.5.18.2 NAME 'modifyTimestamp' EQUALITY generalizedTimeMatch
      ORDERING generalizedTimeOrderingMatch
      SYNTAX 1.3.6.1.4.1.1466.115.121.1.24
      SINGLE-VALUE NO-USER-MODIFICATION USAGE directoryOperation )
 
ということで 「1.3.6.1.4.1.1466.115.121.1.24」だそうで、これは
「Generalized Time syntax」だそうで。

これをぐぐると、IBM や MS のページくらいしか無いのだが、以下の記述があり。 
 
 
http://publib.boulder.ibm.com/infocenter/iseries/v5r3/topic/rzahy/rzahyutctime.htm
Generalized Time 構文は次の形式を取ります。

YYYYMMDDHHMMSS[.|,fraction][(+|-HHMM)|Z]
年に 4 桁、月、日、時、分、および秒それぞれに 2 
桁、および秒のオプションの小数部があります。これ以上追加しない場合には、日時はローカル時間帯という前提になります。時刻を協定世界時で測ることを示
すために、時刻または地方時の時差に大文字の Z を追加してください。
たとえば、次のようになります。

"19991106210627.3"
これは地方時では、1999 年 11 月 6 日、午後 9 時 6 分 27.3 秒です。
          

"19991106210627.3Z"
これは協定世界時です。
          

"19991106210627.3-0500"
これは最初の例と同じ地方時で、協定世界時と比較すると 5 時間の差があります。

秒のオプションの小数部を指定する場合は、ピリオドまたはコンマが必要です。地方時の時差では、「+」または「-」を時間と分の値の前に入れる必要があります。

2012年4月6日金曜日

?! って正規表現を知らんかった。

<LocationMatch  "^/(?!error.html)">

で error.html 以外。この ?! という正規表現を知らなかった。

https://issues.apache.org/bugzilla/show_bug.cgi?id=10932

2012年3月2日金曜日

adb devices で no permissions のエラー

手元の ICONIA を gentoo から adb で操作しようと、以下実行
してみたところ、なんだか ? がいっぱいの no permissions だそ
うで。

 $ adb devices
 List of devices attached
 ????????????    no permissions

adb のサーバを無理くり root で実行するのもアリかもしれないが、
やっぱり自分のユーザでやりたいのでちゃんと設定しておく。
  1. /etc/udev/rules.d/51-android.rules を以下の URL の
    「Setting  up a Device for Development」を参考に作成。

    http://developer.android.com/guide/developing/device.html

    内容は dmesg で表示された idVender を設定する必要がある。
    ICONIA (Acer) は 0502 なので以下のようにする。

     SUBSYSTEM=="usb", ATTR{idVendor}=="0502", MODE="0666", GROUP="plugdev"
  2. 一応 udevd のリスタート

    $ sudo /etc/init.d/udev restart
  3.  で、adb のサーバリスタート

    $ adb kill-server
    $ adb start-server
  4.  そしたら adb devices がエラーにならないはず。

pk12util

pk12util は firefox の証明書ストア{に,から}コマンドで PKCS#12 を import, export
できるらしい。
gentoo の場合、package.use に以下追加で emerge すると入ってきた。

dev-libs/nss utils

2012年2月29日水曜日

ネットワーク経由で adb

Android 端末にネットワーク経由で adb するには以下の設定を root でする必要あり。

setprop service.adb.tcp.port 5555
stop adbd
start adbd

で停止は以下のようにポート番号に -1 を付与。

setprop service.adb.tcp.port -1
stop adbd
start adbd

一応 netstat で確認するとちゃんと 5555 の LISTEN が無くなってる。
これ、うっかり停止し忘れたら恐ろしいことになるな...
気休めだけど一応 5555 はやめておこう。

2012年2月21日火曜日

iPhone 3GS ios4.3.3 で mobileterminal

手元の iPhone 3GS ios4.3.3 は JB 済みではあるが、OpenSSH は入れていない。
なので大丈夫だろうと最近まで root と mobile のパスワードを alpine のまま
放置していた。

しかし、やっぱり不安なので変えることにした。passwd コマンドを実行すべく
cydia から mobileterminal を入れたのだが起動してもすぐ終わってしまう。
どうやら cydia にある mobileterminal は ios4 では動かないらしい。

じゃぁどうするか。sshd を動かしてリモートからログインすれば良いのだろうが
どうしても OpenSSH は入れたくない。

もともと FreeBSD な Mac なので /etc/passwd もとい /etc/master.passwd
を直接いじれば良いんじゃないかと思い、ifuse --root で rootfs ごと mount して
/etc/master.passwd を見ると、ありました。mobile と root のパスワードの
ハッシュが同じで以下のようになってた。

                        : (snip)
  root:/smx7MYTQIi2M:0:0::0:0:System Administrator:/var/root:/bin/sh
  mobile:/smx7MYTQIi2M:501:501::0:0:Mobile User:/var/mobile:/bin/sh
                        : (snip)

/s の salt の crypt ということで、openssl passwd -crypt -salt /s hoge で求
めた値を直接設定しちゃえと思たのだが、、、

ここでふと昔のことを思い出した。お客さんのところの Mac OS X の /etc/resolv.conf
を直接いじったのは良いが、なんだか名前解決できない場合があった。
で、結局 GUI から DNS サーバを変更して解決したことがあった。
→Mac OS でファイルの直接編集はヤバい?

なのでここはぐっと我慢して、いろいろ調べたところ、mobileterminalのβ版
が ios4 でも動くらしいという情報が Web にあった。

Installation - mobileterminal
http://code.google.com/p/mobileterminal/wiki/Installation

上記 URL には手動でインストールする方法も書いてある。Mac と Win だけだが。
しかし Mac の項を読むと、どうやら iphone の特定の場所に deb パッケージを
コピーして再起動しているだけっぽい。
# Cyberduck だの iFunbox だの Win や Mac の人は大変なんやね…(他人事)


まずは mobileterminal の 520_1 というバージョンを落とした。

 $ cd /var/tmp
 $ wget http://mobileterminal.googlecode.com/files/MobileTerminal_520-1_iphoneos-arm.deb
 $ sha1sum  MobileTerminal_520-1_iphoneos-arm.deb
 84410af6febf2065a2a7fabea49cd5b9f34575f9  MobileTerminal_520-1_iphoneos-arm.deb

んで、ifuse で --root マウント。

 $ ifuse --root /media/iphone

上記ドキュメントを読むと、/var/root/Media/Cydia/AutoInstall/ に deb を
コピーすればいいらしいが、このディレクトリが無い場合は作れと。

 $ mkdir /media/iphone/private/var/root/Media/Cydia/AutoInstall

で、コピー。

 $ cp /var/tmp/MobileTerminal_520-1_iphoneos-arm.deb /media/iphone/private/var/root/Media/Cydia/AutoInstall/

そしたら iphone を再起動。正常起動するかどうかちょっとドキドキした。
再起動後 mobileterminal のアイコンが画面にあった。
ちなみに /var/root/Media/Cydia/AutoInstall/ の下においた deb は無くなっ
てた。

あとは普通に passwd コマンドで mobile と root のパスワードを変えた。
あれ? mobileterminal ってどうやって終わらせるの? exit しても残ってる。
Web 調べるとタップホールドでメニューが出るらしいが、このバージョンは
駄目みたい。仕方ないのでホームボタンダブルクリックからプロセスブチ切り。

再起動後手元の Linux から find -mtime -10 とかして /etc やら /var の
下で変更されているファイルを調べてみたが、関連してそうなファイルは
/etc/master.passwd, /etc/passwd くらいしかなかったので、おそらく直接
編集しても良かったのかもしれないが…

まぁこれで一安心ということで。



2012年2月9日木曜日

no applicable action for [ImmediateFlush]

Shibboleth を 2.1 系から 2.3 系にアップデートしたら
なんだか以下のようなメッセージが catalina.out にぞろぞろと。

 INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback.groovy]
 INFO in ch.qos.logback.classic.LoggerContext[default] - Could NOT find resource [logback-test.xml]
   :
 ERROR in ch.qos.logback.core.joran.spi.Interpreter - no applicable action for [ImmediateFlush], current pattern is [[configuration][appender][ImmediateFlush]]
   :

いろいろ悩んだが、logging.xml が古いバージョンのデフォルト
のままだった。新しいバージョンの shibboleth に付随している
logging.xml に入れ替えてOK。