WebDAV対応Awstats
標準のままのAwstatsでは、WebDAVのアクセスログに対応できません
そこで、WebDAVの接続ログを解析できるように手を入れました
前提
・2009/06/17現在公開されている安定版の最新、Last stable version is 6.9 - 2008-12-28 14:04を使用しています

・Apache又はApache2を使用して、WebDAVが構成されていること
・ログファイルは、CustomLogで出力されていること
  (Awstatsで通常のWEB解析をするときも、CustomLogになってるハズ)
  (Apache系以外でも、Apache系と同じような形式が出力できれば大丈夫かも・・・)

・現時点において、Awstatsを使用して通常のWeb接続のログ解析をしていること
・又は、それと同じくらいの経験やら知識やらがあること
  (最低限の設定情報しか書かないので)

・自己責任でお願いします
・上手くできなくても泣かないこと
  (ぶっちゃけ自分もあまり詳しいわけではないので、細かい部分を聞かれてもよく分からないのです)
  (Perlのこととか・・・基本的にPerlは分からないので触らないです)
ファイル
パッチファイル二つ
ファイルについて
awstats.conf.diffとawstats.pl.diffが入っています

awstats.conf.diff は、設定ファイルに対してWebDAV関連のコメントを書き込んでいます
awstats.pl.diff は、実際の解析スクリプトにWebDAV関連の記述を追加しています

・注意・
  awstats.conf.diff は、ファイル名 awstats.conf に対してパッチを適用するようになっています
  デフォルトで入っている awstats.model.conf から awstats.conf を生成しておいてください
展開、パッチ適用
以下のような、設定ファイル等があるディレクトリに移動します
[****@**** cgi-bin]# ls -ltrh
合計 700K
drwxr-xr-x 3 1003 513 4.0K 1月 29 2006 plugins
drwxr-xr-x 2 1003 513 4.0K 1月 29 2006 lib
drwxr-xr-x 5 1003 513 4.0K 1月 29 2006 lang
-r-xr-xr-x 1 1003 513 5.5K 4月 28 2008 awredir.pl
-r--r--r-- 1 1003 513 60K 10月 5 2008 awstats.model.conf
-rwxr-xr-x 1 1003 513 612K 12月 1 2008 awstats.pl

サンプルの設定ファイルを複製して、パッチを当てるのに備えます
[****@**** cgi-bin]# cp -pr awstats.model.conf awstats.conf

ファイルを展開します
[****@**** cgi-bin]# tar xzf awstats.deff.tgz

パッチを当てます
[****@**** cgi-bin]# patch < awstats.pl.diff
[****@**** cgi-bin]# patch < awstats.conf.diff

頑張って設定ファイルを書き換えます
[****@**** cgi-bin]# vi awstats.conf
設定ファイルに関して
このパッチは、設定ファイルに対してコメントの記述を増やすだけになっています
設定自体は、自力で行う必要があります
その際のポイントです

・LogType について
  解析スクリプトを改造して、WebDAVのログを解析出来るようにしてあります
  WebDAV用に解析するために、LogType は D を指定してください
LogType="D"

・NotPageListについて
  場合によると思いますが、WebDAVで取り扱う全てのファイルを解析対象にすると思われます
NotPageList=""

・ValidHTTPCodes について
  WebDAVは、通常のWeb接続のログよりも多くのステータスコードを返しています
  解析に必要なステータスコードは、200 201 204 207 304 らしいです
ValidHTTPCodes="200 201 204 207 304"


コレは、最低限の解析をする為のものです
他にもログファイルの場所やらを書かないとダメですが・・・
解析スクリプトには、これら以外についても改造が施してあります

・EXTRA SECTIONS について
  それを使用するには、以下のような記述を追加する必要があります
  これらは、サンプルとしてコメントで追加してあります

ExtraSectionName1="Download"
ExtraSectionCodeFilter1="200"
ExtraSectionCondition1="METHOD,(^GET)"
ExtraSectionFirstColumnTitle1="Download File List"
ExtraSectionFirstColumnValues1="REPLACE,(.*),--LOGNAME-- --URL--"
ExtraSectionFirstColumnFormat1="%s"
ExtraSectionStatTypes1=PB
MaxNbOfExtra1=20
MinHitExtra1=1
 
 
ExtraSectionName2="Upload"
ExtraSectionCodeFilter2="201"
ExtraSectionCondition2="METHOD,(^PUT)"
ExtraSectionFirstColumnTitle2="Upload File List"
ExtraSectionFirstColumnValues2="REPLACE,(.*),--LOGNAME-- --URL--"
ExtraSectionFirstColumnFormat2="%s"
ExtraSectionStatTypes2=PB
MaxNbOfExtra2=20
MinHitExtra2=1

・ExtraSectionName1="Download" の側は、
  ・ステータスコードが200
  ・メソッドがGET
  になっているものを抽出し、抽出されたデータを
  ・ログインしているユーザ
  ・ファイルのパス
で集計していますします
そうして抽出されるリストは、『どのユーザ』が、『どのファイル』を『ダウンロードしているか』 の一覧です

・ExtraSectionName2="Upload" の側は、
  ・ステータスコードが201
  ・メソッドがPUT
  になっているものを抽出し、抽出されたデータを
  ・ログインしているユーザ
  ・ファイルのパス
で集計していますします
そうして抽出されるリストは、『どのユーザ』が、『どのファイル』を『アップロードしているか』 の一覧です
解析スクリプトに関して
読むのが手っ取り早いのですが、まぁ、一応さらっと解説をします
修正箇所には、全てマーキングをしてあります
『kaeru』の文字列で文字列を検索していくと、修正箇所にすばやくアクセスできます

主は修正ポイントは2種類です

・WebDAV対応修正  参考ページ
  上のほうでも触れましたが、WebDAVはリクエストコードやステータスコードの返し方などが少し違うようです
  その対応をする為に修正を入れました
  設定ファイルで LogType="D" を設定すると、呼び出されます
  10710行目付近
 elsif (
     $LogType eq 'D'
     && (
           $field[$pos_method] eq 'GET'
          || $field[$pos_method] eq 'POST'
          || $field[$pos_method] eq 'HEAD'
          || $field[$pos_method] =~ /OK/i
          || $field[$pos_method] =~ /ERR\!/i
       )
     || $field[$pos_method] eq 'OPTIONS'
     || $field[$pos_method] eq 'PROPFIND'
     || $field[$pos_method] eq 'PROPPATCH'
     || $field[$pos_method] eq 'MKACTIVITY'
     || $field[$pos_method] eq 'CHECKOUT'
     || $field[$pos_method] eq 'REPORT'
     || $field[$pos_method] eq 'MERGE'
     || $field[$pos_method] eq 'PUT'
     || $field[$pos_method] eq 'COPY'
     || $field[$pos_method] eq 'MKCOL'
     || $field[$pos_method] eq 'MOVE'
     || $field[$pos_method] eq 'DELETE'
     || $field[$pos_method] eq 'LOCK'
     || $field[$pos_method] eq 'UNLOCK'
   )
 {# Adding kaeru 2009/06/17
# WebDAV request.
 }

・EXTRA SECTIONSで特殊な記述が出来るように
  EXTRA SECTIONSの ExtraSectionCondition と ExtraSectionFirstColumnValues の項目で、もう少し柔軟な記述が出来るように修正しました
  『種別,正規表現』 の一対組み合わせに情報を一個追加して『種別,正規表現,置換文字列』とし、複数の情報に一度に正規表現を掛けられるようにしました
  
  置換文字列には、
  "--HOST--"、"--LOGNAME--"、"--DATE--"、"--METHOD--"、"--URL--"、"--CODE--"、"--SIZE--"、"--REFERER--"、"--UA--"
  の文字列を書き込むと、其々の部分がぞれぞれの情報によって置き換えられます
  たとえば、
    『--LOGNAME-- --URL--』
  と記述しておくと
    『kaeru /davspace/contact.file』
  のような文字列に置換されます
  そして置換後の文字列に対して、正規表現が適用されます

  複数個所に渡って修正が入っているので、ソースの転載は割愛します
  頑張って読んでみてくださいませ