2017年3月3日金曜日

nginx + WEBDAV 経由で画像のアップロードできない

nginx で WEBDAVを構築する方法は世の中に沢山出ているので割愛します。
しかし、画像等一部拡張子ファイルがアップロードできない問題は、検索しても出てこなかったので備忘録を込めてメモっておきます。

WebDAV は、 SSL+BASIC認証でアクセスしている環境下でのテストです。

Not Allow エラー


ファイルパーミッションが問題ないのに、 WordPress のテーマフォルダに PHPファイルはアップロードできるのに画像をアップロードできない〜っていう場合には、location で拡張子を設定してあげてください。nginx では location で明示的に指定されていない拡張子はアクセスできない仕様です。

location ~* ^.+\.(js|css|png|jpg|jpeg|gif|html|swf|flv)$ {
}

など、アップロード許可を与える拡張子を設定するわけですね。
{} 内は記述なしでOKです。ログを残したくなければ、
  • access_log off; log_not_found off
あたりを {} 内に入れておけばよいでしょう。

Bad Request 400 エラー


webdav に対するパスワード制限に加えて、サイトまるごとパスワード制限していないか確認してみてください。

  • Not Allowエラー状態(上部の拡張子を許可していないケース)
  • サイト丸ごとパスワード制限が共有パスワード(よくある公開前の内部閲覧等)
  • webdav はユーザーごとのパスワード
の3条件すべてに合致した場合、nginx では上部のパスワードロックにひっかかって クライアント側で bad request 400 が出るようです。サーバー側ではサイト丸ごとのパスワード制限に引っかかったよとエラーログに出る。

ただこの問題は、Not Allowエラーで説明した拡張子を許可することで解消します。

2017年3月3日 @kimipooh



2017年3月1日水曜日

【備忘録】Postfix 3.2.0 with LibreSSL をコンパイルしてインストールしてみた

postfix 3.2.0 + LibreSSL は、


の方法ではコンパイルエラーが出ました。修正コンパイルするのに手間取ったので備忘録として残しておきます。

コンパイルエラー


../../lib/libtls.a(tls_dh.o): In function `tls_auto_eecdh_curves':
postfix-3.2.0/src/tls/tls_dh.c:291: undefined reference to `SSL_CTX_set1_curves'
postfix-3.2.0/src/tls/tls_dh.c:307: undefined reference to `SSL_CTX_set1_curves'
collect2: ld returned 1 exit status
make: *** [smtpd] Error 1
make: *** [update] Error 1

修正


src/tls/tls.h

#include <openssl/ssl.h> の下に

#undef OPENSSL_VERSION_NUMBER
#define OPENSSL_VERSION_NUMBER  0x10000002L

を入れること。

このバージョン「0x10000002L」は,

#if OPENSSL_VERSION_NUMBER < 0x10100000L
#if OPENSSL_VERSION_NUMBER >= 0x0090707fL

の2つの条件に当てはまる必要がある模様。 0x10100000L を超えると、OPENSSL_VERSIONが定義されないとエラーがでて、定義してもこんどは別のエラーがでると。。。 他のソースでもバージョンチェックによっていろいろ場合分けが増えたのが原因かなぁと思います。

確認


ldd src/postfix/postfix
libssl.so.39 => /usr/local/lib/libssl.so.39 (0x00007fd811de7000)

のように、  /usr/local/lib 以下のものを使っていれば、自前でしか入れていないので、LibreSSLを使っていると判断できるでしょう。

アップグレード

コンパイルは
を参考にしてみてください。
アップグレードは
  • /etc/postfix (設定)フォルダのバックアップ
  • /etc/init.d/postfix stop
  • make upgrade
  • /etc/init.d/postfix start

LibreSSL と付き合うのは大変ですが、頑張りまーす〜。

2017年3月1日 @kimipooh

【備忘録】日本語IMEが表示されず日本語入力できない(Windows10へのアップグレード端末)

知人PCで久々に特殊事例に遭遇したのでメモしておきます。
すべての原因は、Windows10への強制アップグレードのせい。

日本語IMEが突然使えなくなった


タスクバーにも出てこずと今頃になってそういう症状がでたとのこと。
そういう人は割といるらしい。
つまり ctfmon.exe が起動できないことが原因かな。

ctfmon.exe のショートカットを、スタートアップに入れるべし

ctfmon.exe をコピーして、スタートアップに入れる。。。という情報が沢山ありますが、それやっちゃうと、ctfmon.exe が Windows Updateでアップデートされても反映されないのでダメだよねぇと思ったので記録として残すことにしました。

ctfmon.exe の場所


下記のいずれかにあるはず。
  • C:\Windows\System32
  • C:\Windows\SysWOW64
ctfmon.exeのショートカットをデスクトップにまずは置こう。

スタートアップの場所


AppDataは隠しフォルダになっているので、一時的に隠しフォルダを表示する設定にしてみてください。参考:https://helpx.adobe.com/jp/x-productkb/global/cpsid_87117.html

あとは、下記の「スタートアップ」フォルダに、ctfmon.exe のショートカットをコピーするのみ。
  • C:\ユーザー(Users)\ユーザーの名前\AppData\Roaming\Microsoft\Windows\スタートメニュー\プログラム\スタートアップ
2017年3月1日 @kimipooh