URL にブラケットを使ってもいいように。

  • ページ: BugTrack2
  • 投稿者: kak
  • 優先順位: 低
  • 状態: 完了
  • カテゴリー: 本体新機能
  • 投稿日: 2005-02-15 (火) 18:14:34
  • バージョン: 1.4.5
  • リリース予定バージョン: 1.5.1

メッセージ

例えば

[[http://www.google.com]]

という記法もあり。としたほうが都合がよいかと思います。

[[Google>http://www.google.com]]

のように記述した場合は http は InterWikiName とならないのに(http という InterWikiName があっても無視する)、

[[http://www.google.com]]

と記述した場合は InterWikiName になるというのが矛盾しているように感じました。

実装


  • こんな感じでしょうか? -- teanan 2005-02-15 (火) 19:01:00
  • これはInterWikiの内部的なデフォルト値として http (raw) などがあると良い、という話ではないでせうか -- henoheno 2005-02-15 (火) 22:05:37
    • なるほど、そういうアプローチがありますね。上のはURLsの方に寄せたのですが、InterWikiにした方が簡単にできました。 -- teanan 2005-02-16 (水) 02:22:43
      lib/make_link.php : 773行目付近
      	}
      
      +	$interwikinames['http'] = array('http:', 'raw');
      +	$interwikinames['https'] = array('https:', 'raw');
      	if (! isset($interwikinames[$name])) return FALSE;
    • けど、全角文字が指定された場合でもリンクになってしまう気がする・・・ -- teanan 2005-02-16 (水) 02:27:25
    • つまり、(現行はPukiWiki個別のエンコーディングに左右されますが)日本語交じりの異常なURLとか、国際化ドメイン名を表現できるということですか :) -- henoheno 2005-02-16 (水) 22:23:52
    • まてよ、それを悪用できるXSS脆弱性がないか? 頭が回らないので代わりにメモメモ。 -- henoheno 2005-02-16 (水) 23:51:59
    • こんな感じにすると逃げられますね。 -- teanan 2005-02-17 (木) 02:36:19
      +	$interwikinames['http'] = array('http:', 'url');
      +	$interwikinames['https'] = array('https:', 'url');
      	if (! isset($interwikinames[$name])) return FALSE;
      
      	list($url, $opt) = $interwikinames[$name];
      
      	// Encoding
      	switch ($opt) {
      +	case 'url':
      +		if (!preg_match('/(?:\/\/|\.\.?\/)[!~*\'();\/?:\@&=+\$,%#\w.-]*$/',$param)) {
      +			return FALSE;	// Invalid URL
      +		}
      +		break;
  • 個人的には最初のURLsの正規表現に含む形の方がスマートなような気がしますが・・・ -- teanan 2005-03-07 (月) 02:16:15
  • 「エイリアスを省略可能にする」というアプローチだと、こんな感じでしょうか。 -- 2005-03-09 (水) 09:13:54
    diff -u -r1.17 make_link.php
    --- lib/make_link.php	5 Feb 2005 03:40:13 -0000	1.17
    +++ lib/make_link.php	3 Mar 2005 07:11:56 -0000
    @@ -336,8 +336,10 @@
     		$s1 = $this->start + 1;
     		return <<<EOD
     (\[\[             # (1) open bracket
    - ((?:(?!\]\]).)+) # (2) alias
    - (?:>|:)
    + (?:
    +  ((?:(?!\]\]).)+) # (2) alias
    +  (?:>|:)
    + )?
     )?
     (                 # (3) url
      (?:(?:https?|ftp|news):\/\/|mailto:)[\w\/\@\$()!?&%#:;.,~'=*+-]+
  • これに対応してほしいです。この前ほぇっ!?となりました。表示がまともに見える分たちが悪いです。 http://google.com。 -- tokkuri? 2006-05-24 (水) 11:33:12
  • 対応しました。teananさんのパッチ "make_link.php.bracket_url.diff.1" をそのまま取り込んでいます -- umorigu 2016-02-05 (金) 23:03:40


添付ファイル: filemake_link.php.bracket_url.diff.1 1028件 [詳細] filemake_link.php.bracket_url.diff 591件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-02-05 (金) 23:04:55
Site admin: PukiWiki Development Team

PukiWiki 1.5.2+ © 2001-2019 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u7. HTML convert time: 0.281 sec.

OSDN