mod_sed in httpd-2.4.1
        @yut148
自己紹介

@yut148

職業 雲を大量に使っているゲーム会社
          or
      エンターテイメント会社
   
   インフラストラクチャーグループ
      と名刺にあっても
    オンプレミス対応がメイン
お題

1)mod_sedとは
2)インストール
3)設定方法
https://twitter.com/#!/プライバシー保護/statuses/58351268502044672




                        ↑実は結構古い
mos_sedとは

apacheモジュールの一種。httpの出力(入力)に
sed(文字列にデータ変更)を実行できる
コンパイル、インストール

--enable-sed
を付けなくとも、インストールされます。
(2.2.22には無い。とは言えexperimental)
./configure --with-mpm=event --with-included-
apr && make && make install && date

でOK
なにも指定しなくとも80モジュールはインストールさ
れる。
追加したい場合

apxs -c mod_sed.c regexp.c sed0.c
sed1.c

でもインストール出来るようです。


http://src.opensolaris.
org/source/xref/webstack/mod_sed/README 
より
ちなみに--enable-mods-shared=allして
みました。 httpd.confより1/3
  66 LoadModule authn_file_module modules/mod_authn_file.so
  67 #LoadModule authn_dbm_module modules/mod_authn_dbm.so
  68 #LoadModule authn_anon_module modules/mod_authn_anon.so
  69 #LoadModule authn_dbd_module modules/mod_authn_dbd.so
  70 #LoadModule authn_socache_module modules/mod_authn_socache.so
  71 LoadModule authn_core_module modules/mod_authn_core.so
  72 LoadModule authz_host_module modules/mod_authz_host.so
  73 LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
  74 LoadModule authz_user_module modules/mod_authz_user.so
  75 #LoadModule authz_dbm_module modules/mod_authz_dbm.so
  76 #LoadModule authz_owner_module modules/mod_authz_owner.so
  77 #LoadModule authz_dbd_module modules/mod_authz_dbd.so
  78 LoadModule authz_core_module modules/mod_authz_core.so
  79 LoadModule access_compat_module modules/mod_access_compat.so
  80 LoadModule auth_basic_module modules/mod_auth_basic.so
  81 #LoadModule auth_form_module modules/mod_auth_form.so
  82 #LoadModule auth_digest_module modules/mod_auth_digest.so
  83 #LoadModule allowmethods_module modules/mod_allowmethods.so
  84 #LoadModule file_cache_module modules/mod_file_cache.so
  85 #LoadModule cache_module modules/mod_cache.so
  86 #LoadModule cache_disk_module modules/mod_cache_disk.so
  87 #LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
  88 #LoadModule socache_dbm_module modules/mod_socache_dbm.so
  89 #LoadModule socache_memcache_module modules/mod_socache_memcache.so
  90 #LoadModule watchdog_module modules/mod_watchdog.so
  91 #LoadModule dbd_module modules/mod_dbd.so
  92 #LoadModule dumpio_module modules/mod_dumpio.so
  93 #LoadModule echo_module modules/mod_echo.so
  94 #LoadModule buffer_module modules/mod_buffer.so
  95 #LoadModule data_module modules/mod_data.so
  96 #LoadModule ratelimit_module modules/mod_ratelimit.so
  97 LoadModule reqtimeout_module modules/mod_reqtimeout.so
  98 #LoadModule ext_filter_module modules/mod_ext_filter.so
  99 #LoadModule request_module modules/mod_request.so
  100 #LoadModule include_module modules/mod_include.so
  101 LoadModule filter_module modules/mod_filter.so
  102 #LoadModule reflector_module modules/mod_reflector.so
  103 #LoadModule substitute_module modules/mod_substitute.so
  104 #LoadModule sed_module modules/mod_sed.so
  105 #LoadModule charset_lite_module modules/mod_charset_lite.so
  106 #LoadModule deflate_module modules/mod_deflate.so
  107 #LoadModule xml2enc_module modules/mod_xml2enc.so
その 2/3
 108 #LoadModule proxy_html_module modules/mod_proxy_html.so
 109 LoadModule mime_module modules/mod_mime.so
 110 LoadModule log_config_module modules/mod_log_config.so
 111 #LoadModule log_debug_module modules/mod_log_debug.so
 112 #LoadModule log_forensic_module modules/mod_log_forensic.so
 113 #LoadModule logio_module modules/mod_logio.so
 114 LoadModule env_module modules/mod_env.so
 115 #LoadModule mime_magic_module modules/mod_mime_magic.so
 116 #LoadModule expires_module modules/mod_expires.so
 117 LoadModule headers_module modules/mod_headers.so
 118 #LoadModule usertrack_module modules/mod_usertrack.so
 119 #LoadModule unique_id_module modules/mod_unique_id.so
 120 LoadModule setenvif_module modules/mod_setenvif.so
 121 LoadModule version_module modules/mod_version.so
 122 #LoadModule remoteip_module modules/mod_remoteip.so
 123 #LoadModule proxy_module modules/mod_proxy.so
 124 #LoadModule proxy_connect_module modules/mod_proxy_connect.so
 125 #LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
 126 #LoadModule proxy_http_module modules/mod_proxy_http.so
 127 #LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
 128 #LoadModule proxy_scgi_module modules/mod_proxy_scgi.so
 129 #LoadModule proxy_fdpass_module modules/mod_proxy_fdpass.so
 130 #LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
 131 #LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
 132 #LoadModule proxy_express_module modules/mod_proxy_express.so
 133 #LoadModule session_module modules/mod_session.so
 134 #LoadModule session_cookie_module modules/mod_session_cookie.so
 135 #LoadModule session_dbd_module modules/mod_session_dbd.so
 136 #LoadModule slotmem_shm_module modules/mod_slotmem_shm.so
 137 #LoadModule slotmem_plain_module modules/mod_slotmem_plain.so
 138 #LoadModule ssl_module modules/mod_ssl.so
 139 #LoadModule dialup_module modules/mod_dialup.so
 140 #LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so
 141 #LoadModule lbmethod_bytraffic_module modules/mod_lbmethod_bytraffic.so
 142 #LoadModule lbmethod_bybusyness_module modules/mod_lbmethod_bybusyness.so
 143 #LoadModule lbmethod_heartbeat_module modules/mod_lbmethod_heartbeat.so
 144 LoadModule unixd_module modules/mod_unixd.so
 145 #LoadModule heartbeat_module modules/mod_heartbeat.so
 146 #LoadModule heartmonitor_module modules/mod_heartmonitor.so
 147 #LoadModule dav_module modules/mod_dav.so
 148 LoadModule status_module modules/mod_status.so
 149 LoadModule autoindex_module modules/mod_autoindex.so
その 3/3
 150 #LoadModule asis_module modules/mod_asis.so
 151 #LoadModule info_module modules/mod_info.so
 152 #LoadModule cgid_module modules/mod_cgid.so
 153 #LoadModule dav_fs_module modules/mod_dav_fs.so
 154 #LoadModule dav_lock_module modules/mod_dav_lock.so
 155 #LoadModule vhost_alias_module modules/mod_vhost_alias.so
 156 #LoadModule negotiation_module modules/mod_negotiation.so
 157 LoadModule dir_module modules/mod_dir.so
 158 #LoadModule actions_module modules/mod_actions.so
 159 #LoadModule speling_module modules/mod_speling.so
 160 #LoadModule userdir_module modules/mod_userdir.so
 161 LoadModule alias_module modules/mod_alias.so
 162 #LoadModule rewrite_module modules/mod_rewrite.so




実に97モジュール
 デフォルト有効 21
 デフォルト無効 76
allでインストールしてデフォルト有効なモ
ジュール 21種
authn_file_module   authn_core_module
authz_host_module   authz_groupfile_module
authz_user_module   authz_core_module
access_compat_module auth_basic_module
reqtimeout_module    filter_module
mime_module            log_config_module
env_module
headers_module         setenvif_module
version_module         unixd_module
status_module          autoindex_module
dir_module             alias_module
マニュアル

ネットに有るものとほぼ同一の物が同梱さ
れています。

httpd-2.4.1/docshttpd-2.4.1
/docs/manual/mod/mod_sed.html.en

http://httpd.apache.
org/docs/trunk/mod/mod_sed.html
マニュアルよりブログが詳しい。
同梱マニュアルにあるauthor'sのブログはリンクが切れて404で
す。

Basant Kukreja
https://blogs.oracle.
com/basant/entry/using_mod_sed_to_filter
サンプルを見る限り多機能
OutputSed "/Sunday/ {"
OutputSed "h"
OutputSed "s/.*//"
OutputSed "N"
OutputSed "s/^.//"
OutputSed "/Monday/ {"
OutputSed       "x"
OutputSed       "s/Sunday/Monday/"
OutputSed       "x"
OutputSed       "s/Monday/Tuesday/"
OutputSed       "H"
OutputSed       "g"
OutputSed "}"
OutputSed "}"
                  すいませんちゃんとは調べてはない
簡単な機能

output filter
input filter がある。
Adding an output filter
# In the following example, the sed filter will change the string
# "monday" to "MON" and the string "sunday" to SUN in html documents
# before sending to the client.
<Directory "/var/www/docs/sed">
AddOutputFilter Sed html
OutputSed "s/monday/MON/g"
OutputSed "s/sunday/SUN/g"
</Directory>
Adding an input filter
# In the following example, the sed filter will change the string
# "monday" to "MON" and the string "sunday" to SUN in the POST data
# sent to PHP.
<Directory "/var/www/docs/sed">
AddInputFilter Sed php
InputSed "s/monday/MON/g"
InputSed "s/sunday/SUN/g"
</Directory>

                     docs/trunk/mod/mod_sed.htmlより  
ソース見てみます

/usr/local/src/httpd-2.4.1
/modules/filters/mod_sed.c

気になるところ

#define MODSED_OUTBUF_SIZE 8000

  まぁ限界はありそう。(当たり前)
物は試し
mediawikiに設定してみる ↓通常画面
書き足した設定
<Directory "/usr/local/apache2/htdocs/mediawiki-1.18.1">
AddOutputFilter Sed php
OutputSed "s/MediaWiki/Puki/g"
</Directory>
結果




     変更されている。
例えば新たな書き込みでも
たとえDBに書かれていても変更される




    変更されている。
まとめ

1) mod_sedとは
 webサーバで表示する文字列を変更できる
2)インストール
 特別に指定しなくともインストールされてい る。
3)設定方法
 phpと指定すれば、DBにある文字列でも変更 が
反映される。
存在感はイマイチだがいつか役に立つ事も
あるかも (会社の電話番号が変更された時)
ありがとうございました。
Q&A (お手柔らかにお願いします。)

Webサーバ勉強会#5mod sedについて