yuu_nkjm blog
2009-07-08(Wed) [長年日記] 編集
2009-07-10(Fri) [長年日記] 編集
[Pukiwiki][CMS][bash][GitHub] Pukiwikiの更新内容をメールで通知するシェルスクリプト (Pukiwiki Update Checker)
シェルスクリプトの練習として,Pukiwikiの更新内容をメールで通知するスクリプトを書いてみた.せっかくなので,公開してみる.cronが使えないサーバでは使えない.
概要
このシェルスクリプトは,設定ファイルを読み込んで動作する.設定ファイルにwikiの設置情報を書き,cronでシェルスクリプトを定期実行する.
以下,6時間おきに更新をチェックする場合の設定を説明する.バックアップの生成タイミングとスクリプトを走らせるタイミングをどう合わせたら良いか分からん.更新情報の報告漏れや重複があると思うが,なんとなく更新が拾えるし,まあ,いいか….
本スクリプトの設定ファイルの書き方
# wikiをインストールしたディレクトリ WIKI_PATH=/var/www/html/hoge/wiki/ # 更新メールをおくる周期(分)(更新されたファイルリストを生成するfindコマンドに渡される値.cronで一日に一回実行しているので,-mminの値を360にしている.) INTERVAL=360 # メールの送信先 TO=hoge@gmail.com # メールのタイトル SUBJECT=Hoge Wiki is Updated # ベースとなるwikiのURL.メール本文中のリンク文字列を生成するときに使う. URL=http://hoge.hogehoge.com/wiki/ # tempファイルを生成する TEMP_PATH=/home/hoge/tmp/
pukiwikiの設定ファイルの変更
バックアップの周期を適切に設定.
// Bacukp interval and generation $cycle = 6; // Wait N hours between backup (0 = no wait)
呼び出し方
cronにこんな感じで登録.
00 */6 * * * /home/hoge/bin/pukiwiki_update_checker.sh /home/hoge/bin/hoge_wiki_mail.conf
送られてくる更新通知のサンプル
To: hoge@gmail.com 件名: Hoge Wiki is Updated 本文: 2 pages are updated --------- Updated Page Name: FrontPage http://hoge.hoge.info/wiki/?%46%72%6F%6E%74%50%61%67%65 更新された行とその前後が記載されます. --------- Updated Page Name: (中略) -- Generated by Pukiwiki Checker
ダウンロード
- yuu-nkjm/pukiwiki_update_checkerに置き場所を変えた.(2013-12-08)
- yuu-nkjm/miscに置き場所を変えた.(2011-11-30)
2009-07-11(Sat) [長年日記] 編集
[Pukiwiki] インストールしたプラグインと使い方のまとめ
文書編集・コンテンツの埋め込み
HTMLの埋め込み
#html{{ }}
PHPの埋め込み
セキュリティに要注意.
#php{{ phpinfo(); }}
Javaコードの埋め込み
#highlight(java){{ package yuu.nkjm.info; public class Vehicle { @Override public String toString() { return "Vehicle Id " + getId(); } } }} #highlight(end)
新規作成時のヘッダ・フッタ
新規作成には以下のような内容を先頭に書くのが定石
&tag(インストール,管理ログ); #contentsx
ページの読み込み
#includex(MySQLの設定);
アップロードと添付を一括操作で
&attachref();
ミニカレンダー(日ごとのページを作成可能)
#minicalendar(Diary,off); #minicalendar_viewer(Diary,3,past);
編集可能テーブルの挿入
#table_edit2(,table_mod=close){{ |SIZE(10):LEFT:10%|SIZE(10):LEFT:14%|SIZE(10):LEFT:12%|SIZE(10):LEFT:8%|SIZE(10):LEFT:14%|SIZE(10):LEFT:14%|SIZE(10):LEFT:6%|SIZE(10):LEFT:32|SIZE(10):LEFT:8%|SIZE(10):LEFT:8%|c |~発表|~Title|~著者|~機関|~題名|~要約|~テーマ|~年|~資料|~備考|h |IEEE TRANSACTIONS .. |Multi-Agent Systems ... Challenges|...|||||2007|#attachref();|| }}
簡易編集テキストボックスの挿入
|SIZE(11):|||c |名前|出欠|備考|h |nkjm (所属)|#memox(40,1,更新,,【出席・弁当あり】【出席・弁当なし】【欠席】)|#memox(10,1,更新, ,)| |yuu (所属)|#memox(40,1,更新, ,【出席・弁当あり】【出席・弁当なし】【欠席】)|#memox(10,1,更新, ,)|
ページ管理・閲覧・検索
ディレクトリ以下のページの一覧作成
#lsx(); #lsx(MyWikiGuide);
まとめてページ削除
index.php?cmd=deldel
grepして置換
index.php?cmd=regexp
タグの管理
-tagの付与 &tag(); -タグ群の表示 #tagcloud(100); -タグのクリア index.php?cmd=tag
他のページのインクルード
#include(ミーティングの日程,notitle);
#includex(注意事項);
テンプレートからのページ生成
[[ミーティングページ作成>myhost:cmd=template&refer=Meeting/Template]]
その他
間接的な自ホストの指定
[[Grep置換>myhost:cmd=regexp]]
[[non_listの一覧>myhost:cmd=nonlist]]
2009-07-13(Mon) [長年日記] 編集
[coLinux][Windows] WindowsXPで無線LANを使ったブリッジ接続
「USBの無線LAN接続が動作する.有線LANとcoLinuxのブリッジ接続は動作する.しかし,USBの無線LANとcoLinuxのブリッジ接続をすると,ネットワークが全く使えない状態になる.」という症状が発生した.
通常だとForceCompatibilityModeがenableになっていない.
[E:\]netsh bridge show a ID AdapterFriendlyName ForceCompatibilityMode ---------------------------------------------------------------------- 1 USB-Wireless unknown 2 openSUSE-coLinux unknown 3 MP45-D unknown ----------------------------------------------------------------------
ForceCompatibilityModeをenableにする.
[E:\]netsh bridge set a 1 e [E:\]netsh bridge set a 2 e [E:\]netsh bridge show a ---------------------------------------------------------------------- ID AdapterFriendlyName ForceCompatibilityMode ---------------------------------------------------------------------- 1 USB-Wireless enabled 2 openSUSE-coLinux enabled ----------------------------------------------------------------------
以上のような操作をしたところ,ブリッジ接続が正しく動作し,USB-WirelessとopenSUSE-coLinuxという二つのネットワーク接続にIPアドレスが割り当てられるようになった.
参考にしたページ
2009-07-14(Tue) [長年日記] 編集
[Pukiwiki] pukiwikiの設定とCSSの変更のログ
主に設定だけで行える改善.
2012-02-06 編集エリアのサイズ
default.ini.php
///////////////////////////////////////////////// // テキストエリアのカラム数 $cols = 120; ///////////////////////////////////////////////// // テキストエリアの行数 $rows = 25;
2010-04-27 編集画面からの遷移の確認をoff
pukiwiki.ini.phpを編集
// Control of form unloading which you do not intend $ctrl_unload = 1;
2009-06-23 templateというページを新規作成時のテンプレートに指定
pukiwiki.ini.phpを変更.
$auto_template_rules = array( // '((.+)\/([^\/]+))' => '\2/template' '((.+)\/([^\/]+))' => '\2/template', // (1) '((.+)\/([^\/]+))' => 'template', // (2) '(()(.+))' => 'template' // (3) );
2009-04-16 添付ファイルを圧縮しない
attach.inc.php, attachref.inc.phpに以下の設定をする.
defined('PLUGIN_ATTACH_UNKNOWN_COMPRESS') or define('PLUGIN_ATTACH_UNKNOWN_COMPRESS', 0); // 1(compress) or 0(raw)
上の対策に気付かず,attach.inc.php, attachref.inc.phpのコードを書きかえてしまった.
// ファイルタイプによる圧縮添付の判定 function attach_is_compress($type,$compress=1){ return 0;
2009-03-12 バナー,ロゴを変更
Button generator and badge online maker | My cool buttonで作成したバナーを登録した.images/pukiwiki.plus_log.pngを差し替える.
2009-07-13 はみ出た部分の処理をするcss
overflow: auto !important; white-space: -moz-pre-wrap !important; /* Mozilla */ white-space: -pre-wrap !important; /* Opera 4-6 */ white-space: -o-pre-wrap !important; /* Opera 7 */ white-space: pre-wrap !important; /* CSS3 */ word-wrap: break-word !important; /* IE 5.5+ */
2009-01-21 Pukiwiki Plus!の特殊ページ
-MenuBar: このページを作成することで、左サイドにメニュー項目を出せます。 -SideBar: のページを作成することで、右サイドにメニュー項目を出せます。 -Navigation: このページを作成することで、デフォルトのナビゲーションメニュー(新規、編集などのメニュー)の代わりに javascript を用いたナビゲーションメニューを作成できます。詳細は Plugin/navibar2.inc.php -:Footer: このページを作成することで、フッタ領域に任意の内容を表示できます。関連:footarea.inc.php -:Header: このページを作成することで、ヘッダ領域に任意の内容を表示できます。関連:headarea.inc.php
2009-01-21 autopagerizeに対応
extend/plugin/sonots/pagelist.class.phpにrel="next"を追記
$nextlink = '<span class="next" style="float:right;"><a rel="next" href="' . $nexthref . '">' . _('Next ') . $length . '</a></span>';
skin/monobook/monobook.skin.phpのmain-columnの終了直前に以下を追記.
<div class="autopagerize_insert_before"> </div>
skin/monobook/monobook.skin.phpのmainに以下を追記
<div class="autopagerize_page_element" id="content"<?php echo $background ?>>
ユーザの制限
auth_users.ini.phpで設定可能
auth.ini.phpで,basic認証かダイジェスト認証かを変える.
// 1: basic // 2: digest $auth_type = 2; ///////////////////////////////////////////////// // Authentication Parameter REALM $realm = 'XXXXXXXXXXX';
auth_api.iniでloginプラグインの設定
項目 意味 1 0 use 使用するかどうかを指定 使用 停止 displayname loginプラグインで表示する名称を指定 指定文字列 hidden loginプラグインで表示を隠すかどうかを指定 非表示 表
2009-01-03 note機能をオフ
extend/wikinote.inc.phpを編集.plugin/wikinote.ini.phpではない.pluginとextendでは後者が優先
$default_options['except'] = '^$'; ↓ $default_options['except'] = '.*';
2008-12-31 Spam機能をオフ
特定のURLでまっ白になることがある.BugTrack/165 - PukiWiki Plus!.pukiwiki.ini.phpに下記を書く.
// Spam URI insertion filtering $spam = 0; // 1 = On
2008-06-26 見た目通り改行
pukiwiki.ini.phpを変更
// Convert linebreaks into
$line_break = 1;
2007-04-01 wiki編集時のサポートの位置を変更
lib/html.phpの以下を編集.$add_assistant
2006-02-23 表を左寄せに
スタイルシートで「.style_table」の中にある「margin:auto;」をコメントアウト. margin:5px 5px 5px 5px; も追加.
2006-02-23 pukiwikiの特定のページにアクセス制限
まず,.htaccessにユーザを追加する.
あるキーワードを含むページに対しては,.htaccessに記述したユーザの中で選択したものにだけ公開する設定をする.読みと編集の設定があるが,読みだけの時でも編集の制限をかけた方がよい.
// User definition $auth_users = array( 'foo' => 'passwd', 'bar' => 'passwd', ); // Authentication method // 'pagename' : by Page name // 'contents' : by Page contents $auth_method_type = 'contents'; // Read auth (0:Disable, 1:Enable) $read_auth = 1; // Read auth regex $read_auth_pages = array( '#(ネタバレ|ねたばれ)#' => 'foo,bar,hoge', ); // Edit auth (0:Disable, 1:Enable) $edit_auth = 1; // Edit auth regex $edit_auth_pages = array( '#(ネタバレ|ねたばれ)#' => 'foo', );
2005-10-18 AutoLinkを停止
///////////////////////////////////////////////// // _Disable_ WikiName auto-linking $nowikiname = 1; ///////////////////////////////////////////////// // AutoLink feature // AutoLink minimum bytes (0 = Disable) $autolink = 0;
プラグインの設定
2007-07-25 ミニカレンダーの設定
minicalendar_viewer.inc.phpに以下を書くと,ミニカレンダーが作成される.
define('PLUGIN_MINICALENDAR_VIEWER_TRACKBACK',FALSE);
2009-07-15(Wed) [長年日記] 編集
[Pukiwiki][Troubleshooting] pukiwikiのトラブルシューティングのログ
2010-04-28 plugin実行回数の上限を変更
lib/plugin.php のPKWK_PLUGIN_CALL_TIME_LIMIT 定数の設定を変える.
// Plugin related functions //define('PKWK_PLUGIN_CALL_TIME_LIMIT', 768); define('PKWK_PLUGIN_CALL_TIME_LIMIT', 7680);
2005-05-15 添付ファイルのサイズ制限を変更
plugin/attach.inc.phpのファイル内容
// Max file size for upload on PHP (PHP default: 2MB) ini_set('upload_max_filesize', '8M'); // Max file size for upload on script of PukiWikiX_FILESIZE define('PLUGIN_ATTACH_MAX_FILESIZE', (8192 * 1024)); // default: 1MB
/etc/php.ini の設定
; Maximum allowed size for uploaded files. upload_max_filesize = 2M
/etc/httpd/conf.d/php.conf
SetOutputFilter PHP SetInputFilter PHP LimitRequestBody 524288 ← ここ
2009-01-05 nonlistを導入して,コロンが先頭のページを検索から外す
もしくは,pukiwiki.ini.phpに以下の設定をする.
// Search ignored pages $search_non_list = 0;
2009-07-16(Thu) [長年日記] 編集
[Pukiwiki] pukiwikiとプラグインのソースコード改変のログ
設定だけでなく,プログラムを書きかえたログ.
2009-01-30 monobook skin にtopicpathを追加
skin/monobook/monobook.skin.phpかな?
<div class="autopagerize_page_element" id="content"<?php echo $background ?>> <h1 class="firstHeading"><?php echo $display_title ?></h1> <?php if (arg_check('read') && exist_plugin_inline('topicpath')) { echo '<div class="topicpath">' . do_plugin_inline('topicpath') . '</div>'; } ?> <div id="contentSub"></div>
2009-06-20 sonots タグプラグインで表示されるページリストに日付を付ける
tag.class.php
function get_tag_uri($tagtok) { return get_script_uri() . '?cmd=taglist&tag=' . rawurlencode($tagtok); }
↓
return get_script_uri() . '?cmd=taglist&sort=date&date=true&next=true&num=1:20&tag=' . rawurlencode($tagtok);
tagclass.inc.phpのaddurlを変更
function display_tagcloud($limit = null, $relate_tag = null) { $addurl = "&sort=date&date=true&next=true&num=1:20"; }
taglist.inc.php
foreach ($links as $i => $link) { $items[$i] = $links[$i]; if (isset($infos[$i])) $items[$i] .= ' ' . $infos[$i]; if (isset($tocs[$i])) $items[$i] .= $tocs[$i]; }
から↓へ
if (isset($infos[$i])) $items[$i] = $infos[$i]; $items[$i] .= $links[$i];
2009-01-19 Tagcloudのtaglistの振る舞いを変更
sonots/tag.class.phpを変更
function display_tagcloud($limit = null, $relate_tag = null) { $view = new TagCloud(); $tagcloud = $this->get_tagcloud($limit, $relate_tag); foreach ($tagcloud as $tag => $count) { $url = $this->get_tag_uri($tag); $addurl = "&sort=date&num=1:5&next=true&include=(titlestr=title))"; $url = $url.$addurl; //var_dump($url); $view->add(htmlspecialchars($tag), $url, $count);
2009-01-19 listingプラグインの改造
lookupからURLベースでよべるようにactionタイプのメソッドを追加.
function plugin_listing_action(){ global $non_list,$vars; $args = $vars; unset($args["cmd"]); unset($args["page"]); //var_dump($args); $cond = ltrim(rtrim(array_shift($args))); $lex = new LexicalAnalysis($cond); $exp = new NTExpression($lex->analyze()); $result = $exp->parse(); $result = $exp->check_non_list($result,PLUGIN_LISTING_NO_DISP); $result = $exp->check_non_list($result,PLUGIN_LISTING_NO_DISP_WITH_NON_LIST ? $non_list : ""); $pages = array(); foreach ($result as $page){ $pages[$page] = ''; } $decorator = Decorator::make($args); //var_dump($decorator->decorate($pages)); return array('msg'=>'Listing Plugin', 'body'=>$decorator->decorate($pages)); }
最終行において,msgはページのタイトル,bodyは本文を表す.また,global $vars;でHTTPの引数が取れる.
2009-01-05 attachする時の枠のサイズを大きくした
attach.inc.phpにて
<input type="file" size="96" name="attach_file" id="_p_attach_file" />
2005-10-18 TopicPathでTop(Frontpage)が表示されるように改造
自前でTopへのリンクを追加.これでルートにいるときでも,Topへのリンクが生成される.
return ''. 'Top > '. plugin_topicpath_inline()\ . '';
2005-10-18 一覧を日本語でソート
pukiwiki.ini.phpを変更 // Enable page-reading feature by calling ChaSen or KAKASHI command (0:Enable, 1:Disable) $pagereading_enable = 1; :config/PageReading/dict ってファイルにルールを追加