表示されているhgwebのバージョンを確認する方法はありませんでしょうか?

37 views
Skip to first unread message

ohira

unread,
Nov 15, 2016, 10:37:25 PM11/15/16
to mercurial-ja
いつもお世話になっております。

おおひらです。

例えばこちらのページ
hgwebのバージョンを確認する方法はありませんでしようか?

ページのソース見てもバージョンは確認できないようです。
< HTTP/1.1 200 Script output follows
< Date: Wed, 16 Nov 2016 02:40:54 GMT
< Server: Apache/2.4.10 (Debian)
< Strict-Transport-Security: max-age=31536000; includeSubDomains
< Content-Security-Policy: default-src https: 'unsafe-inline'; frame-ancestors 'self'
< X-Frame-Options: SAMEORIGIN
< X-Content-Type-Options: nosniff
< X-XSS-Protection: 1; mode=block
< Vary: Accept-Encoding
< Transfer-Encoding: chunked
< Content-Type: text/html; charset=UTF-8
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US">
<head>
<link rel="icon" href="/repo/static/hgicon.png" type="image/png" />
<meta name="robots" content="index, nofollow" />
<link rel="stylesheet" href="/repo/static/style-paper.css" type="text/css" />
<script type="text/javascript" src="/repo/static/mercurial.js"></script>

<title>Mercurial repositories index</title>
</head>
<body>

<div class="container">
<div class="menu">
<img src="/repo/static/hglogo.png" width=75 height=90 border=0 alt="mercurial" /></a>
</div>
<div class="main">


* どっかにひっそり表示されているけど、気づいていないだけ
* 何か意図があってバージョンは表示しない
* webインターフェースのバージョンをリポジトリのバージョンと誤解されたくない

とか、考えられますが、、、
ページのソースぐらいにはバージョンを入れても良さそうに思うのです。


本家のhgwebのバージョンを知りたい理由:

hg rollback のことを調べていた時に hgwebでヘルプ表示してみると
自分が設置したhgwebではヘルプのトップページに roollback の説明があったのに
本家のhgwebではhelpのトップページにroolbackの説明がありませんでした。
(roolbackのページを指定すればどちらでも表示されますが)

ヘルプのトップページ

そこで、英語と日本語の違いなのかそれとも自分が設置したバージョンと本家のバージョンの違いなのかと疑問に思ったのです。


本家のhgwebのバージョンがわからないっぽいので、自分のとこにインストールした hg 3.9 のコマンドラインで
日本語と英語切り替えてヘルプを表示したところ、コマンドラインのヘルプではどちらも表示されました。

hg help の結果に英語、日本語どちらでも表示
[shin@faith] ~% hg --version
Mercurial - 分散構成管理ツール(バージョン 3.9)
(詳細は https://mercurial-scm.org を参照)

Copyright (C) 2005-2016 Matt Mackall 他
本製品はフリーソフトウェアです。
頒布条件に関しては同梱されるライセンス条項をお読みください。
市場適合性や特定用途への可否を含め、 本製品は無保証です。
[shin@faith] ~% env LC_ALL=C hg --version
Mercurial Distributed SCM (version 3.9)
(see https://mercurial-scm.org for more information)

Copyright (C) 2005-2016 Matt Mackall and others
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
[shin@faith] ~% hg help --verbose | fgrep rollback
 rollback      直前のトランザクションの巻き戻し (要注意) (非推奨)
[shin@faith] ~% env LC_ALL=C hg help --verbose | fgrep rollback
 rollback      roll back the last transaction (DANGEROUS) (DEPRECATED)
[shin@faith] ~% 


ところが、念のため非推奨のものを表示してみると
同じバージョンのhgでも英語と日本語で表示が違うことがわかりました。

hg help の表示結果
rollback はどちらでも表示されるのですが、parents は日本語設定にしたときだけ表示されています。
[shin@faith] ~% 
[shin@faith] ~% hg help --verbose | fgrep 非推奨
 locate        指定されたパターンに合致する名前を持つファイルの特定 (非推奨)
 parents       作業領域(または指定リビジョン)の親リビジョンの表示 (非推奨)
 rollback      直前のトランザクションの巻き戻し (要注意) (非推奨)
 tip           tip リビジョンの表示 (非推奨)
[shin@faith] ~% env LC_ALL=C hg help --verbose | fgrep DEPRECATED
 locate        locate files matching specific patterns (DEPRECATED)
               (DEPRECATED)
 rollback      roll back the last transaction (DANGEROUS) (DEPRECATED)
 tip           show the tip revision (DEPRECATED)
[shin@faith] ~%


そんなわけで、本家のhgwebのバージョンが知りたいと思いました。






Katsunori FUJIWARA

unread,
Nov 16, 2016, 1:54:08 AM11/16/16
to mercurial-ja
藤原です。

2016年11月16日 12:37 ohira <shin....@gmail.com>:

> https://www.mercurial-scm.org/repo/
> 例えばこちらのページ
> hgwebのバージョンを確認する方法はありませんでしようか?

[snip]

> * どっかにひっそり表示されているけど、気づいていないだけ
> * 何か意図があってバージョンは表示しない
> * webインターフェースのバージョンをリポジトリのバージョンと誤解されたくない
>
> とか、考えられますが、、、
> ページのソースぐらいにはバージョンを入れても良さそうに思うのです。

実はつい先日 (と思って確認したら 7 月でしたが……)、クライアント側
hg コマンドのバージョン情報を、User-agent ヘッダ経由でサーバ側に通
知する、という機能の追加提案の際に:

脆弱性を宣伝することになるから、サーバ側のバージョン情報公開は
よろしくないけど、クライアント側のバージョン情報公開は、まぁ、
いいんじゃねぇ? by Matt (超意訳)

https://www.mercurial-scm.org/pipermail/mercurial-devel/2016-July/086227.html

というやり取りがありました。つまり、「サーバ側バージョン情報の隠蔽」
は意図的なものなので、余程の事情が無ければ、今後も公開することはな
いかと。

ちなみに、上記の User-agent による通知の件ですが、最終的に以下の変
更が取り込まれました。

https://www.mercurial-scm.org/repo/hg/rev/486de14eb394


> 本家のhgwebのバージョンを知りたい理由:
>
> hg rollback のことを調べていた時に hgwebでヘルプ表示してみると
> 自分が設置したhgwebではヘルプのトップページに roollback の説明があったのに
> 本家のhgwebではhelpのトップページにroolbackの説明がありませんでした。
> (roolbackのページを指定すればどちらでも表示されますが)
>
> https://www.mercurial-scm.org/repo/hg/help
> ヘルプのトップページ
>
> そこで、英語と日本語の違いなのかそれとも自分が設置したバージョン
> と本家のバージョンの違いなのかと疑問に思ったのです。
>
> 本家のhgwebのバージョンがわからないっぽいので、自分のとこにイン
> ストールした hg 3.9 のコマンドラインで日本語と英語切り替えてヘル
> プを表示したところ、コマンドラインのヘルプではどちらも表示されま
> した。

-v/--verbose 無しの "hg help" 表示では、オンラインヘルプにおける、
"(DEPRECATED)" と、その翻訳である "(非推奨)" の両方をチェックして、
表示の要否を判定しています。

https://www.mercurial-scm.org/repo/hg/file/4.0/mercurial/help.py#l36

その一方で、hgweb でのヘルプ表示におけるコマンド一覧は、原文
の "DEPRECATED" のみのチェックしか適用されていません。

https://www.mercurial-scm.org/repo/hg/file/4.0/mercurial/hgweb/webcommands.py#l1256

このため、DEPRECATED の訳語に DEPRECATED そのものをあてていない言
語が選択された場合、hgweb のヘルプ表示では、rollback を初めとする
DEPRECATED 扱いのものが表示されてしまうわけです。

DEPRECATED 文字列周りの話は、丁度一年ほど前に、私 (訳語チェック処
理の修正) や西原さん (先述した一覧からの除外処理周りの修正) も目を
通していた筈なのですが、hgweb 経由のルートはスッポリと見落としてま
したねぇ……

実は「気付いていたけど修正は後回し」だったりします?(^ ^ ;;) > 西原さん

除外処理の共通化と、適用を徹底する修正を投函しておこうと思います。


> ところが、念のため非推奨のものを表示してみると
> 同じバージョンのhgでも英語と日本語で表示が違うことがわかりました。
>
> hg help の表示結果
> rollback はどちらでも表示されるのですが、parents は日本語設定にしたときだけ表示されています。
> [shin@faith] ~%
> [shin@faith] ~% hg help --verbose | fgrep 非推奨
> locate 指定されたパターンに合致する名前を持つファイルの特定 (非推奨)
> parents 作業領域(または指定リビジョン)の親リビジョンの表示 (非推奨)
> rollback 直前のトランザクションの巻き戻し (要注意) (非推奨)
> tip tip リビジョンの表示 (非推奨)
> [shin@faith] ~% env LC_ALL=C hg help --verbose | fgrep DEPRECATED
> locate locate files matching specific patterns (DEPRECATED)
> (DEPRECATED)
^^^^^^^^^^^^

上記の単独 (DEPRECATED) 行は、parents コマンドの説明が折り返された
ものですので、hg help -v の列挙対象コマンドは、英語と日本語で違い
はありません。

> rollback roll back the last transaction (DANGEROUS) (DEPRECATED)
> tip show the tip revision (DEPRECATED)
> [shin@faith] ~%

--
----------------------------------------------------------------------
FUJIWARA Katsunori(flying...@gmail.com)

ohira

unread,
Nov 16, 2016, 4:33:43 AM11/16/16
to mercurial-ja
回答ありがとうございます。
おおひらです。
 
    脆弱性を宣伝することになるから、サーバ側のバージョン情報公開は
    よろしくないけど、クライアント側のバージョン情報公開は、まぁ、
    いいんじゃねぇ? by Matt (超意訳)

    https://www.mercurial-scm.org/pipermail/mercurial-devel/2016-July/086227.html

というやり取りがありました。つまり、「サーバ側バージョン情報の隠蔽」
は意図的なものなので、余程の事情が無ければ、今後も公開することはな
いかと。

Apacheとか経由する場合は、Apacheとかのバージョンが表示されていますが、
hg serve で直接繋いだときは、Python とかツールのバージョンが表示されているので
mercurialのバージョン隠してる割に出し過ぎてるような。

BaseHTTP と Python のバージョンは出ても気にならないのかなあ
< HTTP/1.1 200 Script output follows
< Server: BaseHTTP/0.3 Python/2.7.12
< Date: Wed, 16 Nov 2016 08:01:08 GMT
< ETag: W/"1479280204"
< Content-Type: text/html; charset=UTF-8
< Transfer-Encoding: chunked

さらに、
現状だとバージョンは不明でもhgwebで作られたページと簡単にわかってしまうのはどうなんでしょう
バージョンがバレることを避けるよりも、mercurialを使って作成したページだと
バレることを避けることの方がより多きな効果があるのではないでしょうか。
そういうことだったのですか、 


除外処理の共通化と、適用を徹底する修正を投函しておこうと思います。

よろしくお願いします。

 
> hg help の表示結果
> rollback はどちらでも表示されるのですが、parents は日本語設定にしたときだけ表示されています。
> [shin@faith] ~%
> [shin@faith] ~% hg help --verbose | fgrep 非推奨
>  locate        指定されたパターンに合致する名前を持つファイルの特定 (非推奨)
>  parents       作業領域(または指定リビジョン)の親リビジョンの表示 (非推奨)
>  rollback      直前のトランザクションの巻き戻し (要注意) (非推奨)
>  tip           tip リビジョンの表示 (非推奨)
> [shin@faith] ~% env LC_ALL=C hg help --verbose | fgrep DEPRECATED
>  locate        locate files matching specific patterns (DEPRECATED)
>                (DEPRECATED)
                 ^^^^^^^^^^^^
 
上記の単独 (DEPRECATED) 行は、parents コマンドの説明が折り返された
ものですので、hg help -v の列挙対象コマンドは、英語と日本語で違い
はありません。
 
たしかに、折り返しでした。すいません。 
 
Reply all
Reply to author
Forward
0 new messages