Crypt戦記 - 怨念編 -

2003年11月4日
Crypt 戦記 〜怨念編〜

Excel の表に基づいて、
WEB Site のユーザーの追加登録を行う。

前のデータは別の人が登録したが、
CSV に出力して Unix の Server に持っていき、
nkf をかまして Perl で PostgreSQL に登録するようにしていた。

 そのスクリプトはある。
が、Access があるきに
Excel から Access にインポートして加工して ODBC で突っ込むほうが楽やん。
・・・と自滅への道を歩み始めた。

 まず、始める前に発生している問題があった。
リンクテーブルの中でデータが表示されないものがある。
開くとすべてのデータが #Deleted と表示されるのである。
いろいろ ODBC のオプションを変えたが、表示されない。
あきらめて mdbのリンクテーブルの方で定義を見ていると、
主キーでないフィールドに鍵のマークがついていた。
そのフィールドは unique制約をつけた text型のフィールドである。
変更の方法が分からなかったので一旦リンクテーブルを削除し、
ODBC Driver の「Unique Key の取得」オプションを切って
リンクテーブルを定義してみた。
すると、 Unique Key を指定するダイアログが開き、
主キーを指定してデータがきちんと表示されるようになった。

 で、ログイン名は分類別の通し番号を使っているが
Access 上なので既存の番号を
取ってきたりは楽に出来る・・・はずだった。
しかし、うまくいかない。
当初 ADO で作っていたが、Access の MDB に格納済みの
パススルークエリなどが呼び出せない。
2次的に呼び出される Query もあるので、
仕方なく、DAO で作り直した。うぅ〜〜〜。

で、ログイン名の生成は出来た。
パスワード生成ですこし詰まったが
どうにか先人の perl での生成と同じものが作られるようになった。

が、今度はパスワードを PostgreSQL に登録するときに問題が生じた。
Crypt をかける必要があったのである。

 Unix では標準的な Crypt 関数があり、
PHP,Perl でも同じものを使っている。
さて、Windows上ではどうしよう。
Windows API の Crypt関連の API は別物なんで使えない。
う〜〜〜〜〜〜〜〜〜。

 で、Windows版の Perl である Active State の Perl を Install した。
で、ドキュメントをざっと見ると、
Windows Scripting Component (WSC)として Automation Object を作れるようだ。
で、WSC を作るためには
Windows Scripting Component Wizard を使えとあった。
で、Microsoft のサイトに行って探した。
・・・しかし、見つからない。
検索して調べると英語版のみのようだった。
で、英語サイトも含めて検索すれば見つかった。

 で、Component のテンプレートを作って WSC オブジェクトを作ってみる。
・・・しかし、うまくいかない。う〜〜〜。
結局、あきらめた。

 代わりに、BASP21 オブジェクトの execute メソッドを用いて、
perl -e "print crypt("password","salt");"
の実行結果を受け取って encrypt 結果を受け取るようにすることにした。

 で、やってみる。
・・・うまくいかない。う〜〜〜。
プログラムはちゃんと実行できているのに、結果を受け取れない。
なんでやねん。
・・・原因は結果を受け取る変数の型を variant にしないといけないのに
string にしていたからだった。うぅ・・・。
variant にするとうまくいった。

まぁ、ここまでくればリンクテーブルに挿入すればサーバーにデータが登録される。
で、無事作業は終了した。

終わったときには 22時半を過ぎていた。

 うぅ、一区切りついた直後なのに
なんでこんな遅くまで仕事せなあかんのやぁ。

コノウラミハラサデオクモノカ

必ず復讐してやる・・・