[PukiWiki] Editor Bar

PukiWiki を WYSIWYG な感じで編集してみたい!!

http://pukiwiki.sourceforge.jp/?%E8%87%AA%E4%BD%9C%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%2Fguiedit.inc.php なものもあるみたいです。

/lib/html.php の中に

<form action="$script" method="post" style="margin-bottom:0px;">
$template

 $addtag
 <input type="hidden" name="cmd"    value="edit" />
 <input type="hidden" name="page"   value="$s_page" />
 <input type="hidden" name="digest" value="$s_digest" />
 <textarea name="msg" id="_str" rows="$rows" cols="$cols">$s_postdata</textarea>
 <br />
 <div style="float:left;">
  <input type="submit" name="preview" value="$btn_preview" accesskey="p" />
  <input type="submit" name="write"   value="$_btn_update" accesskey="s" />
  $add_top
  $add_notimestamp
 </div>
 <textarea name="original" rows="1" cols="1" style="display:none">$s_original</textarea>
</form>
<form action="$script" method="post" style="margin-top:0px;">
 <input type="hidden" name="cmd"    value="edit" />
 <input type="hidden" name="page"   value="$s_page" />
 <input type="submit" name="cancel" value="$_btn_cancel" accesskey="c" />
</form>
</div>

ここで、 textarea に id=”_str” を追加し、 textareaの前に以下を追加する。

<div class="tools" style="width: 650px;background-image: url('tools/toolbg.png');background-repeat: repeat-x;">
<a href="javascript:void(0)" onclick="$('#_str').insertAtCaret?('\*')">
<img src="tools/h2.png" alt="*" title="大見出し" width="24" height="24" />
</a>
</div>

これは、光沢のある灰色のツールーバーを配置して、そこに、h2の画像を置く。これをクリックすると、_str がIDである textareaのカーソルの位置に * が追加される。 insertAtCaret?()の中身を変えると、いろいろなものが追加される。

plugin/secedit.inc.php を使っている場合は、 同じ個所を修正する必要あり。

ツールバー作成例

<?php
<div class="edit_form">
$template$addtag
<div class="tools" style="width: 650px;background-image: url('tools/toolbg.png');background-repeat: repeat-x;">a href="javascript:void(0)" onclick="$('#_str').insertAtCaret?('\*')">img src="tools/h2.png" alt="*" title="大見出し" width="24" height="24" />
</a>
<a href="javascript:void(0)" onclick="$('#_str').insertAtCaret?('**')">
<img src="tools/h3.png" alt="**" title="中見出し" width="24" height="24" />
<a href="javascript:void(0)" onclick="$('#_str').insertAtCaret?('***')">
<img src="tools/h4.png" alt="***" title="小見出し" width="24" height="24" />
<a href="javascript:void(0)" onclick="$('#_str').insertAtCaret?('\'\'\'\)">
<a href="javascript:void(0)" onclick="$('#_str').insertAtCaret?('\'\'\'\'\'\)">
<a href="javascript:void(0)" onclick="$('#_str').insertAtCaret?('-')">
<a href="javascript:void(0)" onclick="$('#_str').insertAtCaret?('+')">
<a href="javascript:void(0)" onclick="$('#_str').insertAtCaret?(':')">
<a href="javascript:void(0)" onclick="$('#_str').insertAtCaret?('>')">
<a href="javascript:void(0)" onclick="$('#_str').insertAtCaret?('left:')">
<a href="javascript:void(0)" onclick="$('#_str').insertAtCaret?('center:')">
<a href="javascript:void(0)" onclick="$('#_str').insertAtCaret?('right:')">
<a href="javascript:void(0)" onclick="$('#_str').insertAtCaret?(' ')">
<a href="javascript:void(0)" onclick="$('#_str').insertAtCaret?('サイト名:http://')">
<a href="javascript:void(0)" onclick="$('#_str').insertAtCaret?('|セル|セル|h\\n|セル|セル|')">
<a href="javascript:void(0)" onclick="$('#_str').insertAtCaret?(' [添付]')">
<a href="javascript:void(0)" onclick="$('#_str').insertAtCaret?('#amazon2(electronics-jp または books-jp,キーワード)')">
<a href="javascript:void(0)" onclick="$('#_str').insertAtCaret?(' [heart]')">
<a href="javascript:void(0)" onclick="$('#_str').insertAtCaret?('\&\s\m\i\l\e\;')">
<a href="javascript:void(0)" onclick="$('#_str').insertAtCaret?(' [huh]')">
<a href="javascript:void(0)" onclick="$('#_str').insertAtCaret?(' [wink]')">
<a href="javascript:void(0)" onclick="$('#_str').insertAtCaret?(' [worried]')">
<a href="?FormattingRules" target="_blank"">
</div>
 <textarea name="msg" id="_str" rows="$rows" cols="$cols">$s_postdata</textarea>
 <br />
 <div style="float:left;">
  <input type="submit" name="preview" value="$btn_preview" accesskey="p" />
  <input type="submit" name="write"   value="$_btn_update" accesskey="s" />
  $add_top
  $add_notimestamp
 </div>
 <textarea name="original" rows="1" cols="1" style="display:none">$s_original</textarea>
</form>
<form action="$script" method="post" style="margin-top:0px;">
 <input type="hidden" name="cmd"    value="edit" />
 <input type="hidden" name="page"   value="$s_page" />
 <input type="submit" name="cancel" value="$_btn_cancel" accesskey="c" />
</form>
</div>

[PukiWiki] PukiWiki便利なプラグイン

atacherefプラグイン

添付ファイルを伴う編集作業の時に、いちいち、 編集-添付-編集 としなければならいのを 編集-添付 ですんでしまう。 ダウンロード

設定

  • 管理者設定
    // 管理者だけが添付ファイルをアップロードできるようにする
    define('ATTACHREF_UPLOAD_ADMIN_ONLY',TRUE); // FALSE or TRUE
    // アップロード/削除時にパスワードを要求する(ADMIN_ONLYが優先)
    define('ATTACHREF_PASSWORD_REQUIRE',TURE); // FALSE or TRUE
  • ファイルサイズの変更
    // max file size for upload on script of PukiWiki(default 1MB)
    define('MAX_FILESIZE',2000000);
  • MD5の変更(SHAを使っているので)
    $pass = array_key_exists('pass',$vars) ? $vars['pass'] : NULL;

seceditプラグイン

見出しごとに分割して編集が可能なプラグイン http://pukibook.sourceforge.jp/?secedit.inc.php

[PukiWiki] PukiWikiの設定

basic 認証が通らない

借りているCore serverの設定が変わったらしい。 http://blog.rtwiki.net/pukiwiki/fastcgi_auth/

.htaccess に以下を追加する

SetEnvIfNoCase Authorization "^(Basic .*)$" HTTP_AUTHORIZATION=$1

pukiwiki.ini.phpの設定

  • index.phpを表示しない
    // Shorten $script: Cut its file name (default: not cut)
    $script_directory_index = 'index.php';
  • このサイトの管理者名
    // Site admin's name (CHANGE THIS)
    $modifier = 'Mamoru Imanishi';
  • 管理者のウェブサイト
    // Site admin's Web page (CHANGE THIS)
    $modifierlink = 'http://www.okomeda.net/';
  • トップページ名 (必ず変更すること)
    $defaultpage  = 'TopPage';     // Top / Default page
  • WikiNameの自動リンク解除 (HogeHogeというページに?(はてな、クエスチョン)を自動で表示させない)
    // _Disable_ WikiName auto-linking
    $nowikiname = 1;
  • 管理者パスワード(ここを参照 http://pukiwiki.sourceforge.jp/dev/?BugTrack%2F709 )
    // Default: always fail
    $adminpass = '{x-php-md5}!';
  • 編集の権限を与えるユーザー名とそのパスワードの設定
    // User definition
    $auth_users = array(
      // Username => password
      'foo'	=> 'foo_passwd', // Cleartext
      'bar'	=> '{x-php-md5}f53ae779077e987718cc285b14dfbe86', // PHP md5() 'bar_passwd'
      'hoge'	=> '{SMD5}OzJo/boHwM4q5R+g7LCOx2xGMkFKRVEx',      // LDAP SMD5 'hoge_passwd'
    );
  • 編集を制限するページ(ここではすべてのページ)
    // Edit auth (0:Disable, 1:Enable)
    $edit_auth = 1;
    $edit_auth_pages = array(
      // Regex		   Username
      '/^.*$/'		=> 'bar',
    );
  • 最近の20件などで無視するページ
    // Ignore list
    
    // Regex of ignore pages
    $non_list = '^(\:|InterWiki|MenuBar|Recent|TopPage)';
    
    // Search ignored pages
    $search_non_list = 0; //検索結果にも無視したい場合
  • 改行コードを自動で<br />に変換する
    // Convert linebreaks into <br />
    $line_break = 1;

defult.ini.php の設定

  • 添付ファイルを表示しない
    $attach_link = 0;
  • 関連リンクを表示しない
    $related_link = 0;
    

topicpath.inc.php

  • パスをホームに変更する
    //	$topic_path[] = make_pagelink($defaultpage, PLUGIN_TOPICPATH_TOP_LABEL);
    $topic_path[] = '<a href="' . $script . '" title="Home">ホーム</a>';
    

添付ファイルアップロー時に管理者パスワードを要求しない

attach.inc.phpにおいて、※管理者しか編集できない時に限る。 XSS対策でデフォルトがTRUEになっていますが、これをFALSEに変更

// 管理者だけが添付ファイルをアップロードできるようにする
define('PLUGIN_ATTACH_UPLOAD_ADMIN_ONLY', FALSE); // FALSE or TRUE }}

[Apache] httpd.conf設定集

初期設定

サーバルートの設定

ServerRoot "c:/Apache24"

 

サーバ名の設定 

ServerName www.exmple.com:80

 

ドキュメントルートの設定

DocumentRoot "c:/www/public_html"

<Directory "c:/www/public_html">

スクリプトエイリアスの設定

ScriptAlias /cgi-bin/ "c:/www/public_html/cgi-bin/"

/をつけることに注意。

スクリプトディレクトリの設定

<Directory "c:/www/public_html/cgi-bin">

/はつけない。

index.html がないディレクトリでファイル一覧が表示されないようにする

 

<Directory "d:/www/public_html">
...
</Directory>

からOptions FollowSymLinksと indexesを削除する。

Not Foundなどのときにサーバ情報を表示させないようにする。

ServerSignature Off

 

phpのエラーメッセージを表示させないようにする。

php_flag display_errors Off

.htaccessを有効にする。 

#AllowOverride None

AllowOverride All

に変更する。

(OS 64)指定されたネットワーク名は利用できません。 : AH00341: winnt_accept: Asynchronous AcceptEx failed. の対策

<IfModule mpm_winnt_module>
AcceptFilter http none
</IfModule>

を追加

http://xxx.com/***/index.html を http://xxx.com/***/ にリダイレクトする方法

html ファイルをphp で動的に書いていて、 AddType application/x-httpd-php .html .php と書いて、htmlファイルでもPHPを動かすようにしたが、htmlでphpを動かしてはいけないとお達しがきたので、 すべての.html を.phpへ変更 すると今度は.html Not found となってしまうので、

RedirectMatch permanent /(.*)/index.html$ /$1/

で回避する。

[SSL] OpenSSL for Windows

インストール

Windows 10 64bit, Apache24を前提にインストールします。

  1. http://slproweb.com/products/Win32OpenSSL.html から、Win64 OpenSSL v1.1.0gをダウンロードする。
  2. exeファイルをクリックしインストールを開始する。
  3. インストール先を C:\OpenSSL とする。
  4. dllの保存先を/binにする。
  5. 環境変数でパスを通しておく PATH: C:\Openssl\bin;

秘密鍵の作り方

コマンドプロンプトを起動し、opensslを起動します。

Microsoft Windows [Version 10.0.16299.125]
(c) 2017 Microsoft Corporation. All rights reserved.

C:\Users\username>openssl
OpenSSL> version
OpenSSL 1.1.0g  2 Nov 2017
OpenSSL>

まずは、バージョンが表示されることを確認します。

次に、パスワード無しの秘密鍵を作ります。c:\tempフォルダをつくります。

OpenSSL> genrsa -out c:\temp\server.key 2048
CSRファイルの作り方
>OpenSSL req -new -key d:\temp\server.key -out d:\temp\server.csr
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:
Email Address []:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

自称証明書の作り方

実験用であれば、自分で証明書を発行する。必要ならば、業者に依頼する。

OpenSSL> x509 -days 3650 -req -signkey d:\temp\server.key -in d:\temp\server.csr -out d:\temp\server.crt
Signature ok
Getting Private key
OpenSSL>

できあがったserver.key, server.csr, server.crtをc:\apache24\confにコピーする。

httpd.confの設定

httpd.confの設定を行う

#LoadModule ssl_module modules/mod_ssl.so
#LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
#Include conf/extra/httpd-ssl.conf

のコメント (#) を外す

認証キーの登録

SSLCertificateFile "c:/Apache24/conf/server.crt" 
SSLCertificateKeyFile "c:/Apache24/conf/server.key"

Apacheを再起動する。

https://localhost/

にアクセスする。なお、自分で作った証明書なので、ブラウザによっては不審なサイトと表示されるので注意すること

SSL通信を必須にする

最近は通信すべてSSL必須が推奨されている。

<Directory "SSLにしたいパス">
 SSLRequireSSL
</Directory>

または.htaccessに

 SSLRequireSSL

と書く。

[CGI] Active Perlのインストール

CGI の動作には ActivePerlを利用する。

  1. ActiveStateへ行く。
  2. 最新バージョン  windows (64-bit, x64)をダウンロードする。
  3. ダウンロードした.exeファイルをクリックし、Typicalを選択し画面の指示に従ってインストールを開始する。
  4. httpd.confを修正する。
    Options Indexes FollowSymLinks ExecCGI #260 行目当たり
    DirectoryIndex index.html index.php index.cgi index.pl #280行目当たり
    AddType application/x-httpd-cgi .cgi #最後の行に追加
    AddType application/x-httpd-cgi .pl

     

  5. テキストエディタでUTF-8形式で次のソースをタイプし、C:\Apache24\cgi-bin\index.cgi に保存する。
#!C:/Perl64/bin/perl
print "Content-type: text/html\n\n";
print "<html>\n";
print "<head>\n";
print "<meta charset='utf-8'>\n";
print "<title>CGIのテスト</title>\n";
print "</head>\n";
print "<body>\n";
print "<p>CGIのテスト</p>\n";
print "</body>\n";
print "</html>\n";
  1. Apacheを再起動し、http://localhost/cgi-bin/index.cgi へアクセスし、「CGIのテスト」と表示されれば、CGIは正常に動作している。

[PHP] PHPのインストール

PHPのインストール

Windows 64bit版の開発環境を構築することを想定しています。自作サーバとして運用すると、様々なサーバ攻撃の対象となりますので、注意が必要です。また、セキュリティの観点から常に最新バージョンにしておく必要があります。

  1. http://windows.php.net/download/ へ行く。
  2. VC15 x64 Thread Safeのファイルをダウンロードする。
  3. C:\php となるように展開する。
  4. php.ini.developmentの複製を作り、C:\php\php.iniという名前で保存する。 php.iniの設定
  5. httpd.confを設定する。 以下を追加
    PHPIniDir "c:/php"
    LoadModule php7_module c:/php/php7apache2_4.dll
    AddType application/x-httpd-php .php

    index にindex.phpを追加

    <IfModule dir_module>
        DirectoryIndex index.html index.php
    </IfModule>

C:\apache24\htdocsに、index.phpを作成し、秀丸などのテキストエディタでUTF-8形式で以下を記述する。

<?php phpinfo(); ?>

Apacheを再起動し、http://localhost/index.phpへアクセスし、phpの基本情報が表示されればインストール正常に行われています。

 

文字コードの変更
utf-8で作成するのがよいが、WindowsでPHPソースがShift_JIS で出力もShift JISの場合、php.iniを以下のように設定する。
ここを参照 http://www.bnote.net/windows/windows/code.shtml

extension=php_mbstring.dll ;コメントアウトを外す
output_buffering = Off ;コメントアウト外す
mbstring.language = Japanese ;コメントアウトを外す
mbstring.internal_encoding = SJIS ;PHPソースはShift_JIS
mbstring.http_input = auto ; コメントアウトを外す
mbstring.http_output = SJIS ;アウトプットはShift_JIS
mbstring.detect_order = auto ;コメントアウトを外す
mbstring.substitute_character = none; ;コメントアウトを外す
default_charset = "Shift_JIS" ; デフォルトの文字コードはShift_JIS

 

[Apache] Apacheのインストール

Windows 64bit版の開発環境を構築することを想定しています。自作サーバとして運用すると、様々なサーバ攻撃の対象となりますので、注意が必要です。また、セキュリティの観点から常に最新バージョンにしておく必要があります。

Visual Studio 2017の Microsoft Visual C++ 再頒布可能パッケージのインストール

Apacheを動かすためには、Visual Studio 2017のMicrosoft  Visual C++ 再頒布可能パッケージが必要とのこと。インストールされていない場合は、下記サイトからファイルをダウンロードし、インストールしておく。

https://www.visualstudio.com/ja/downloads/?q=#other-ja

Apache2.4のインストール

  1. 次のサイトから、httpd-2.4.29-Win64-VC15.zip(64bitの場合)をダウンロードする。 https://www.apachelounge.com/download/
  2. ZIPファイルを展開する。
  3. C:\apache24\binのようなディレクトリ構造になるようにコピーする。
  4. C:\apache24\conf\httpd.confを必要に応じて修正する。
    httpd.confの設定集を参照

Apacheの起動

  1. コマンドプロンプトを起動する。
  2. 以下をと入力して、Apacheを起動する。
    C:\***>c:\apache24\bin\httpd
  3. ブラウザからhttp://localhost/ にアクセスしてページが正しく表示されれば(httpd.confを触っていなければIt Worksと表示される)インストールは成功。

サービスへの登録

毎回コマンドプロンプトでサーバ起動、停止は面倒なので、サービスに登録する。

  1. まず、起動中のapacheを[CTRL]+[C]で停止する。
  2. 管理者権限でコマンドプロンプトを起動する。
  3. 以下を入力してサービスを登録する。
    C:\***>c:\apache24\bin\httpd -k install
  4. 次のように表示されれば成功。
    The Apache2.4 service is successfully installed
  5. Errors reported here must be corrected before the service can be started.表示されるのは、httpd.confでドメインの指定していないから。httpd.confの設定を変更する。
  6. Apache monitorはコマンドプロンプトではなく、GUIでApacheの起動状況、起動、停止ができる。C:\apache24\binの中にある。せっかくなのでスタートアップに登録しておこう。
  7. 常に、サーバを起動しておくのは危険なので、必要がなくなったら、サービスの登録を解除しておこう。
    C:\***>c:\apache24\bin\httpd -k uninstall

[Web構築].htaccessの作成

.htaccessを有効にする

apacheのhttpd.confの設定を変更する。

<Directory "/d:/www/public_html">

のAllowOverride の No を all に変更し、apacheを再起動する。

Basic認証の設定方法

.htaccessの作成

秀丸エディタなど、.htaccessというファイル名で保存できるテキストエディタで編集する。
.htaccessというファイル名でBaisc認証したいフォルダに置く。

注意

  1. httpd.confでは、.htで始まるファイルは特別な意味を持つよう設定されている。
  2. .htaccessを使うよりかはhttpd.confで設定することを推奨している。
AuthType Basic
AuthName "Member Only" 文字化けする恐れもあるので日本語は避ける。
AuthUserFile d:/www/private_html/.htpasswd public_htmlではないところを指定
require valid-user

.htpasswdの作成

コマンドプロンプトを開く

 

c:\>cd d:\apache2\bin
c:\>htpasswd -mc d:\www\private_html\.htpasswd hoge
New password: ********
Re-type password: ********
Adding password for user hoge

これで、d:\www\private_html\.htpasswd にユーザー名 hoge とパスワード ****** が保存された。ユーザーを追加したい場合は オプション mc の c をはずす。

ページのリダイレクト

 

DirectoryIndex index.php index.html
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.html?$ / [NC,R,L]
</IfModule>