IIS ISAPI 32bit/64bit でハマった

新しいWindowsはほとんど64bitだから32bit時代のISAPI向けDLLをIISで動かそうというときはアプリケーションプールの詳細設定で32bit対応をtrueにしないといけないよ!
という話。

Windows Server 2003の緊急リプレースに呼ばれ、当然OSだけじゃなくて乗っているソフトウェアも移行せねばならず、とっくに各種ソフトのサポートも切れており、しかもカスタムされたソフトウェアなのでメンテナンス向けマニュアル類が貧弱な環境。とりあえず元サーバーのファイル構成から見よう見まねで組み上がり…ました!

が、IISの部分だけどうしても動かない。
dllをISAPIでハンドリングさせてやれば良いはずなのだが…
最初は403エラー、権限の設定で実行が入っていないためだとわかったが、実行に入れてやると500エラー。しかもdll本来のエラーメッセージではないのでIISからISAPIでハンドリングする部分がおかしいようだ。ここでハマり。

アプリケーションプールを.NET 2.0で作成、その後IIS管理ツールの右側にある「詳細設定」から「32 ビットアプリケーションの有効化」をtrueに…
あっさり動いた。こんな項目があること自体が頭から抜けてたわ…

ということで、業務系システムはメンテナンスできるところを確保しながら延命するか、延命できないなら次のシステムに乗り換えるか考えないといけません。元の開発会社だって当時のメンバーがもういないので無理ですってパターンもありますからね。
大手企業だったらそのへん大丈夫でしょうけど、中小企業はどうしたってカスタマイズから頼むとなると中小ベンダや個人事業主に頼らざるを得ない。

伝説の「小川マシンエレクトロ」さんじゃないですが、いざというときの選択肢として、ソフトウェア会社以外の、横断的知識を持った、ハッカー的な人材、能力者がほしいですね…
いや、ウチに頼んでくれてもいいんですけども。

sambaでグループが見つかりません

sambaにアクセスしようとしたらグループが見つかりませんと言われる。
サーバー側でログを見ると「NT_STATUS_NO_SUCH_GROUP」ですって。
samba groupも存在してるしunix groupも存在してる。

ググるとmsdfsが原因だとか書かれていたが、関係なかった。

Error While Trying To Connect To Samba Share: NT_STATUS_NO_SUCH_GROUP

force groupに指定している名前が
samba groupとunix groupで同一名だとうまく動かないみたい。

force group = "Unix Group\hogegroup"

と Unix Group\ をつけてやるときちんと動いた。

上記例はSUSE Linuxだったが、CentOS7でも同様でした。

ファイルの大量削除@さくら

「WPにファイルがアップロードできないんです」
「WPのアップデートもできないんです」
「WPの動作がおかしいんです」
さくらのレンタルサーバーをご利用で、長期にわたってほっとかれたサイト。
容量限界まではずいぶん余裕がある。
SFTPで適当なファイルをアップロードしようとしてもエラー。
要は新規ファイルが作れないようです。

一旦バックアップのために全部ダウンロードしようとしたら、
ファイル数が膨大すぎて無理な感じ!
キャッシュ系プラグインの吐き出した細かいファイルですねこれ。

とりあえずキャッシュプラグインを止めます。

FTPからの削除も途中で止まっちゃうので困ってしまいましたが、
なんと、さくらのレンタルサーバーはSSHでシェルに入れる!
やったー

ということで入ってみてquotaを見てみると、
確かに300万ファイルの制限が。
ちょとはSFTPで削除できていたので299万+のファイルが残っています。

% rm -rf hoge
さくらのレンタルサーバーでは実行時間が長いプログラムはKillされます。
すばらしい気遣いです。
見てたら55分ぐらいでkillされてました。

いちいち見てられないのでバックグラウンド実行
% rm -rf hoge &
これでログアウトしてもよさげです。

% quota
Disk quotas for user XXXXXXXX (uid XXXX):
Filesystem usage quota limit grace files quota limit grace
/var 4 1048576 1048576 169 100000 100000
/home 15444260 104857600 104857600 1353006 3000000 3000000

何度か実行して削除完了できそうです。

参考にさせていただきました

SSH について – さくらのサポート情報

大量・巨大なファイル操作を低負荷で行う方法 – How old are you?

i8042 no controller found / CentOS7が起動しない

PC Linuxサーバー(HP proliant microserver gen5だったかな)の電源を落とし、
物理的に移動したあとに、とりあえず接続して起動させようとしたら
i8042: no controller found
と出てきて停止してしまう。

このサーバーは外付けUSB HDDをバックアップ用に繋げてあって、
起動時にmountするようにしてあったのだが、
それが接続されていなかった。

接続したら元にもどった。
というか接続しても i8042: no controller found のメッセージは出ていた。
詳しくjournalctlも見てなかったが、本当はi8042のメッセージの後が怪しかったんだろうな。

AsteriskのVoicemailが十数秒で切れてしまう問題

Asterisk PBXにBrastelの050Free SIPで留守番電話を構築しました。
が、メッセージを吹き込んでいる最中に10秒かちょっとで勝手に通話が終了する問題が発生。
というか発生していた。テストの最中は5秒ぐらいで確認していたから。

結論
asterisk.conf の transmit_silence = yes を有効にする
(デフォルトでコメントアウトされている)


transmit_silence、すなわち無音を伝送するか、ということで
transmit_silence = no の場合、録音を待っている間、Asteriskは先方に何もデータを送らない。
それでtimeout判定か何かを食らって切れていたようだ。


調べるのにとても時間がかかった。
当然voicemail.confのmaxsilenceとかを疑ってみるも、何をどう変えても10秒ちょっとで切れる。

asterisk -rvvvvvv で状況をモニタしながら通話。
メッセージ吹き込み中に電話が切れたときのメッセージは
「user hung up」
すなわち通話終了であり、voicemail.confの設定は関係なかった。

さらにsip set debug onして見てみるとQ.850; cause=58というヒントが。
58はService Unavailable的なエラーであり、やはり何かおかしい。

様々な英語圏フォーラムでやりとりがあったが、まさにドンピシャな答えはここにあった。

[ASTERISK-11082] Voicemail cuts off at 60 seconds regardless of config settings – Digium/Asterisk JIRA
ここではtransmit_silence_during_recordと書かれていたが、おそらくバージョン違いであろう。
自分のasterisk.confには transmit_silence となっていた。

なお今回の環境は
CentOS 6.9
Asterisk 15.2.1
でした。