tdiary-contrib 3.2.2.20130518
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +1 -0
- data/.travis.yml +7 -0
- data/Gemfile +13 -0
- data/Gemfile.lock +35 -0
- data/README.en.md +12 -0
- data/README.md +13 -0
- data/Rakefile +41 -0
- data/doc/en/filter/spambayes.txt +3 -0
- data/doc/en/plugin.txt +1 -0
- data/doc/en/style/hatena.txt +10 -0
- data/doc/en/style/markdown.txt +16 -0
- data/doc/en/util.txt +1 -0
- data/doc/ja/filter/antirefspam.history.txt +59 -0
- data/doc/ja/filter/antirefspam.txt +86 -0
- data/doc/ja/filter/comment_key.ja.html +182 -0
- data/doc/ja/filter/spambayes.txt +3 -0
- data/doc/ja/plugin/add_bookmark.txt +50 -0
- data/doc/ja/plugin/category_to_tag.txt +21 -0
- data/doc/ja/plugin/cocoment.txt +31 -0
- data/doc/ja/plugin/google_adsense.txt +25 -0
- data/doc/ja/plugin/google_analytics.txt +7 -0
- data/doc/ja/plugin/image_detail.txt +69 -0
- data/doc/ja/plugin/image_gps.txt +36 -0
- data/doc/ja/plugin/image_gps2.txt +41 -0
- data/doc/ja/plugin/livedoor_weather.txt +105 -0
- data/doc/ja/plugin/opensearch_ad.txt +16 -0
- data/doc/ja/plugin/section_footer.txt +84 -0
- data/doc/ja/plugin/select_theme.txt +1 -0
- data/doc/ja/plugin.txt +13 -0
- data/doc/ja/style/hatena.txt +10 -0
- data/doc/ja/style/markdown.txt +13 -0
- data/doc/ja/util.txt +12 -0
- data/filter/antirefspam.rb +263 -0
- data/filter/commentkey.rb +29 -0
- data/filter/commentsize.rb +18 -0
- data/filter/hidecomment.rb +13 -0
- data/filter/iplookup.rb +55 -0
- data/filter/plugin/antirefspam.rb +59 -0
- data/filter/plugin/commentkey.rb +58 -0
- data/filter/plugin/commentsize.rb +12 -0
- data/filter/plugin/en/iplookup.rb +9 -0
- data/filter/plugin/en/spambayes.rb +123 -0
- data/filter/plugin/iplookup.rb +39 -0
- data/filter/plugin/ja/antirefspam.rb +91 -0
- data/filter/plugin/ja/commentkey.rb +17 -0
- data/filter/plugin/ja/commentsize.rb +6 -0
- data/filter/plugin/ja/iplookup.rb +9 -0
- data/filter/plugin/ja/spambayes.rb +124 -0
- data/filter/plugin/spambayes.rb +501 -0
- data/filter/plugin/zh/iplookup.rb +9 -0
- data/filter/rblcheck.rb +36 -0
- data/filter/spambayes.rb +535 -0
- data/filter/spamlookup.rb +37 -0
- data/io/dbi_io/ChangeLog +19 -0
- data/io/dbi_io/README.ja +39 -0
- data/io/dbi_io/dbi_io.rb +181 -0
- data/io/dbi_io/plugin/refererDbiIO.rb +76 -0
- data/io/dbi_io/tdiary_table.sql +42 -0
- data/js/appstore.js +109 -0
- data/js/datepicker.js +69 -0
- data/js/editor.js +82 -0
- data/js/flickr.js +157 -0
- data/js/image_ex.js +79 -0
- data/js/jquery.socialbutton.js +842 -0
- data/js/nicovideo.js +17 -0
- data/js/picasa.js +322 -0
- data/js/plugin_checker.js +71 -0
- data/js/prettify/lang-apollo.js +2 -0
- data/js/prettify/lang-clj.js +18 -0
- data/js/prettify/lang-css.js +2 -0
- data/js/prettify/lang-go.js +1 -0
- data/js/prettify/lang-hs.js +2 -0
- data/js/prettify/lang-lisp.js +3 -0
- data/js/prettify/lang-lua.js +2 -0
- data/js/prettify/lang-ml.js +2 -0
- data/js/prettify/lang-n.js +4 -0
- data/js/prettify/lang-proto.js +1 -0
- data/js/prettify/lang-scala.js +2 -0
- data/js/prettify/lang-sql.js +2 -0
- data/js/prettify/lang-tex.js +1 -0
- data/js/prettify/lang-vb.js +2 -0
- data/js/prettify/lang-vhdl.js +3 -0
- data/js/prettify/lang-wiki.js +2 -0
- data/js/prettify/lang-xq.js +3 -0
- data/js/prettify/lang-yaml.js +2 -0
- data/js/prettify/prettify.css +1 -0
- data/js/prettify/prettify.js +28 -0
- data/js/referer.js +17 -0
- data/js/show_and_hide.js +39 -0
- data/js/socialbutton.js +126 -0
- data/js/twitter_anywhere.js +28 -0
- data/js/yahoo_kousei.js +21 -0
- data/lib/bayes/convert.rb +34 -0
- data/lib/bayes.rb +232 -0
- data/lib/exifparser/BUGS +1 -0
- data/lib/exifparser/ChangeLog +169 -0
- data/lib/exifparser/README +15 -0
- data/lib/exifparser/install.rb +1015 -0
- data/lib/exifparser/lib/exifparser/makernote/canon.rb +502 -0
- data/lib/exifparser/lib/exifparser/makernote/fujifilm.rb +415 -0
- data/lib/exifparser/lib/exifparser/makernote/minolta.rb +84 -0
- data/lib/exifparser/lib/exifparser/makernote/mk_nikonflensname.rb +39 -0
- data/lib/exifparser/lib/exifparser/makernote/nikon.rb +267 -0
- data/lib/exifparser/lib/exifparser/makernote/nikon2.rb +581 -0
- data/lib/exifparser/lib/exifparser/makernote/nikonflensname.rb +438 -0
- data/lib/exifparser/lib/exifparser/makernote/olympus.rb +225 -0
- data/lib/exifparser/lib/exifparser/makernote/prove.rb +84 -0
- data/lib/exifparser/lib/exifparser/makernote/sigma.rb +237 -0
- data/lib/exifparser/lib/exifparser/pre-setup.rb +1 -0
- data/lib/exifparser/lib/exifparser/scan.rb +278 -0
- data/lib/exifparser/lib/exifparser/tag.rb +2298 -0
- data/lib/exifparser/lib/exifparser/thumbnail.rb +76 -0
- data/lib/exifparser/lib/exifparser/utils.rb +88 -0
- data/lib/exifparser/lib/exifparser.rb +265 -0
- data/lib/exifparser/sample/exifview.rb +279 -0
- data/lib/tdiary-contrib.rb +19 -0
- data/lib/wgs2tky.rb +93 -0
- data/misc/section_footer2/buzzurl.yaml +6 -0
- data/misc/section_footer2/fc2.yaml +6 -0
- data/misc/section_footer2/ldc.yaml +6 -0
- data/misc/section_footer2/retweet.yaml +7 -0
- data/misc/section_footer2/twitter.yaml +7 -0
- data/misc/section_footer2/yahoo.yaml +6 -0
- data/misc/tdiarygraph/tdiarygraph120x90e.swf +0 -0
- data/misc/tdiarygraph/tdiarygraph125x125e.swf +0 -0
- data/misc/tdiarygraph/tdiarygraph240x180e.swf +0 -0
- data/misc/tdiarygraph/tdiarygraph468x60e.swf +0 -0
- data/misc/tdiarygraph/tdiarygraph728x90e.swf +0 -0
- data/misc/tdiarytimes/tdiarytimes125x125r.swf +0 -0
- data/misc/tdiarytimes/tdiarytimes125x125r7.swf +0 -0
- data/misc/tdiarytimes/tdiarytimes125x125s.swf +0 -0
- data/misc/tdiarytimes/tdiarytimes125x30.swf +0 -0
- data/misc/tdiarytimes/tdiarytimes234x30.swf +0 -0
- data/misc/tdiarytimes/tdiarytimes468x30.swf +0 -0
- data/plugin/add_bookmark.rb +89 -0
- data/plugin/apple_webclip.rb +26 -0
- data/plugin/appstore.rb +47 -0
- data/plugin/bigpresen.rb +86 -0
- data/plugin/bitly.rb +39 -0
- data/plugin/bootstrap-navi.rb +54 -0
- data/plugin/canonical.rb +9 -0
- data/plugin/category_similar.rb +73 -0
- data/plugin/category_to_tag.rb +60 -0
- data/plugin/category_to_tagcloud.rb +172 -0
- data/plugin/cocomment.rb +37 -0
- data/plugin/code-prettify.rb +23 -0
- data/plugin/coderwall.rb +34 -0
- data/plugin/datepicker.rb +28 -0
- data/plugin/day2section.rb +20 -0
- data/plugin/del_footer.rb +111 -0
- data/plugin/description_from_body.rb +23 -0
- data/plugin/development.rb +16 -0
- data/plugin/editor.rb +11 -0
- data/plugin/en/add_bookmark.rb +20 -0
- data/plugin/en/del_footer.rb +10 -0
- data/plugin/en/git-register.rb +3 -0
- data/plugin/en/livedoor_weather.rb +25 -0
- data/plugin/en/microsummary.rb +18 -0
- data/plugin/en/nicovideo.rb +38 -0
- data/plugin/en/openid.rb +8 -0
- data/plugin/en/section_footer.rb +6 -0
- data/plugin/en/section_footer2.rb +3 -0
- data/plugin/en/socialbutton.rb +5 -0
- data/plugin/everytrail.rb +39 -0
- data/plugin/facebook_comments.rb +59 -0
- data/plugin/flickr.rb +209 -0
- data/plugin/gist.rb +16 -0
- data/plugin/git-register.rb +240 -0
- data/plugin/github_badge.rb +27 -0
- data/plugin/github_link.rb +9 -0
- data/plugin/goo_gl.rb +42 -0
- data/plugin/google_adsense.rb +132 -0
- data/plugin/google_analytics.rb +39 -0
- data/plugin/google_map.rb +168 -0
- data/plugin/google_sitemaps.rb +60 -0
- data/plugin/google_webmaster.rb +22 -0
- data/plugin/hatena_bookmark_nocomment.rb +9 -0
- data/plugin/hatena_star.rb +66 -0
- data/plugin/hb_footer.rb +255 -0
- data/plugin/hb_footer4sec.rb +244 -0
- data/plugin/hb_footer4sec_js.rb +30 -0
- data/plugin/hide_comment_form.rb +4 -0
- data/plugin/hide_sidebar_iphone.rb +21 -0
- data/plugin/iddy.rb +81 -0
- data/plugin/image_detail.rb +143 -0
- data/plugin/image_ex.rb +462 -0
- data/plugin/image_gps.rb +128 -0
- data/plugin/inline_wiki.rb +6 -0
- data/plugin/instagr.rb +64 -0
- data/plugin/ja/add_bookmark.rb +20 -0
- data/plugin/ja/del_footer.rb +10 -0
- data/plugin/ja/flickr.rb +62 -0
- data/plugin/ja/git-register.rb +3 -0
- data/plugin/ja/google_sitemaps.rb +35 -0
- data/plugin/ja/livedoor_weather.rb +25 -0
- data/plugin/ja/microsummary.rb +18 -0
- data/plugin/ja/nicovideo.rb +41 -0
- data/plugin/ja/openid.rb +7 -0
- data/plugin/ja/section_footer.rb +6 -0
- data/plugin/ja/section_footer2.rb +4 -0
- data/plugin/ja/socialbutton.rb +6 -0
- data/plugin/jdate.rb +20 -0
- data/plugin/jholiday.rb +16 -0
- data/plugin/jmonth.rb +20 -0
- data/plugin/jquery_ui_theme.rb +55 -0
- data/plugin/jroku.rb +28 -0
- data/plugin/jyear.rb +37 -0
- data/plugin/latlonglab_route.rb +25 -0
- data/plugin/lazy_referer.rb +38 -0
- data/plugin/livedoor_weather.rb +180 -0
- data/plugin/make_link.rb +44 -0
- data/plugin/makerss_category.rb +43 -0
- data/plugin/makerss_comment.rb +35 -0
- data/plugin/microsummary.rb +62 -0
- data/plugin/mm_footer.rb +215 -0
- data/plugin/monthly_autopagerize.rb +67 -0
- data/plugin/my_hotentry.rb +132 -0
- data/plugin/navi_day.rb +118 -0
- data/plugin/navi_this_month.rb +15 -0
- data/plugin/nicovideo.rb +115 -0
- data/plugin/notify_miniblog.rb +134 -0
- data/plugin/ogp.rb +55 -0
- data/plugin/ohmsha_estore.rb +71 -0
- data/plugin/openid.rb +90 -0
- data/plugin/opensearch_ad.rb +33 -0
- data/plugin/picasa.rb +56 -0
- data/plugin/plugin_checker.rb +41 -0
- data/plugin/popit.rb +22 -0
- data/plugin/prettify.rb +19 -0
- data/plugin/prezi.rb +10 -0
- data/plugin/profile.rb +222 -0
- data/plugin/puboo.rb +93 -0
- data/plugin/pygments_css.rb +76 -0
- data/plugin/rating.rb +419 -0
- data/plugin/recent_estraier.rb +50 -0
- data/plugin/recent_tweet.rb +71 -0
- data/plugin/retweet.rb +86 -0
- data/plugin/rubykaigi.rb +99 -0
- data/plugin/search-bing.rb +87 -0
- data/plugin/search-default.rb +264 -0
- data/plugin/search-google-custom.rb +60 -0
- data/plugin/search-yahoo-websearch.rb +121 -0
- data/plugin/search-yahoo.rb +109 -0
- data/plugin/section_footer.rb +195 -0
- data/plugin/section_footer2.rb +278 -0
- data/plugin/section_permalink.rb +73 -0
- data/plugin/section_permalink_anchor.rb +39 -0
- data/plugin/select_style.rb +42 -0
- data/plugin/select_theme.rb +90 -0
- data/plugin/show_and_hide.rb +77 -0
- data/plugin/slideshare.rb +10 -0
- data/plugin/socialbutton.rb +60 -0
- data/plugin/tatsu_zine.rb +93 -0
- data/plugin/tdiarygraph_flashstyle.rb +296 -0
- data/plugin/tdiarytimes.rb +166 -0
- data/plugin/tdiarytimes2.rb +406 -0
- data/plugin/tdiarytimes_flashstyle.rb +263 -0
- data/plugin/tdiarytimes_textstyle.rb +290 -0
- data/plugin/title_anchor.rb +16 -0
- data/plugin/tweet_quote.rb +106 -0
- data/plugin/twitpic.rb +10 -0
- data/plugin/twitter.rb +46 -0
- data/plugin/twitter_anywhere.rb +209 -0
- data/plugin/twitter_badge.rb +42 -0
- data/plugin/twitter_js.rb +59 -0
- data/plugin/ustream.rb +19 -0
- data/plugin/vimeo.rb +14 -0
- data/plugin/volatile.rb +89 -0
- data/plugin/vote.rb +100 -0
- data/plugin/wikiloc.rb +27 -0
- data/plugin/windex.rb +512 -0
- data/plugin/yahoo_kousei.rb +79 -0
- data/plugin/yahoo_map.rb +97 -0
- data/plugin/youtube.rb +33 -0
- data/plugin/yshop.rb +189 -0
- data/plugin/zenback.rb +46 -0
- data/spec/apple_webclip_spec.rb +46 -0
- data/spec/fixtures/friendfeed.xml +2 -0
- data/spec/fixtures/github.json +1 -0
- data/spec/fixtures/twitter.xml +73 -0
- data/spec/gist_spec.rb +16 -0
- data/spec/github_link_spec.rb +39 -0
- data/spec/google_analytics_spec.rb +60 -0
- data/spec/jdate_spec.rb +23 -0
- data/spec/jmonth_spec.rb +28 -0
- data/spec/jyear_spec.rb +21 -0
- data/spec/my_hotentry_spec.rb +78 -0
- data/spec/openid_spec.rb +246 -0
- data/spec/opensearch_ad_spec.rb +50 -0
- data/spec/profile_spec.rb +88 -0
- data/spec/rcov.opts +2 -0
- data/spec/spec_helper.rb +223 -0
- data/spec/title_anchor_spec.rb +39 -0
- data/spec/twitter_js_spec.rb +116 -0
- data/spec/youtube_spec.rb +20 -0
- data/style/hatena_style.rb +1011 -0
- data/style/markdown_style.rb +239 -0
- data/style/wikiext_style.rb +21 -0
- data/tdiary-contrib.gemspec +25 -0
- data/util/clean-spam/README.ja +1 -0
- data/util/clean-spam/tdiary-comment-clean +46 -0
- data/util/clean-spam/tdiary-comment-clean2 +81 -0
- data/util/clean-spam/tdiary-referer-clean +46 -0
- data/util/convert_pstore.rb +82 -0
- data/util/estraier-search/ChangeLog +36 -0
- data/util/estraier-search/README.ja +114 -0
- data/util/estraier-search/en/estraier-register.rb +3 -0
- data/util/estraier-search/estraier-register.rb +298 -0
- data/util/estraier-search/estraier-search.rb +273 -0
- data/util/estraier-search/estraier.rhtml +73 -0
- data/util/estraier-search/estraier.rxml +23 -0
- data/util/estraier-search/i.estraier.rhtml +31 -0
- data/util/estraier-search/ja/estraier-register.rb +3 -0
- data/util/image-gallery/README.ja +27 -0
- data/util/image-gallery/image-gallery.rb +523 -0
- data/util/image-gallery/image-gallery.rb.euc-jp +523 -0
- data/util/image-gallery/js/SmoothGallery/Changelog +52 -0
- data/util/image-gallery/js/SmoothGallery/css/ReMooz.css +186 -0
- data/util/image-gallery/js/SmoothGallery/css/img/carrow1.gif +0 -0
- data/util/image-gallery/js/SmoothGallery/css/img/carrow2.gif +0 -0
- data/util/image-gallery/js/SmoothGallery/css/img/closebox.gif +0 -0
- data/util/image-gallery/js/SmoothGallery/css/img/closebox.png +0 -0
- data/util/image-gallery/js/SmoothGallery/css/img/fleche1.gif +0 -0
- data/util/image-gallery/js/SmoothGallery/css/img/fleche1.png +0 -0
- data/util/image-gallery/js/SmoothGallery/css/img/fleche2.gif +0 -0
- data/util/image-gallery/js/SmoothGallery/css/img/fleche2.png +0 -0
- data/util/image-gallery/js/SmoothGallery/css/img/loading-bar-black.gif +0 -0
- data/util/image-gallery/js/SmoothGallery/css/img/open.gif +0 -0
- data/util/image-gallery/js/SmoothGallery/css/img/open.png +0 -0
- data/util/image-gallery/js/SmoothGallery/css/img/remo_bg_e.png +0 -0
- data/util/image-gallery/js/SmoothGallery/css/img/remo_bg_n.png +0 -0
- data/util/image-gallery/js/SmoothGallery/css/img/remo_bg_ne.png +0 -0
- data/util/image-gallery/js/SmoothGallery/css/img/remo_bg_nw.png +0 -0
- data/util/image-gallery/js/SmoothGallery/css/img/remo_bg_s.png +0 -0
- data/util/image-gallery/js/SmoothGallery/css/img/remo_bg_se.png +0 -0
- data/util/image-gallery/js/SmoothGallery/css/img/remo_bg_sw.png +0 -0
- data/util/image-gallery/js/SmoothGallery/css/img/remo_bg_w.png +0 -0
- data/util/image-gallery/js/SmoothGallery/css/img/spinner.gif +0 -0
- data/util/image-gallery/js/SmoothGallery/css/jd.gallery.css +371 -0
- data/util/image-gallery/js/SmoothGallery/css/layout.css +91 -0
- data/util/image-gallery/js/SmoothGallery/license.txt +621 -0
- data/util/image-gallery/js/SmoothGallery/resizer.php +113 -0
- data/util/image-gallery/js/SmoothGallery/scripts/Changelog +52 -0
- data/util/image-gallery/js/SmoothGallery/scripts/History.Routing.js +126 -0
- data/util/image-gallery/js/SmoothGallery/scripts/History.js +109 -0
- data/util/image-gallery/js/SmoothGallery/scripts/ReMooz.js +364 -0
- data/util/image-gallery/js/SmoothGallery/scripts/jd.gallery.js +843 -0
- data/util/image-gallery/js/SmoothGallery/scripts/jd.gallery.set.js +183 -0
- data/util/image-gallery/js/SmoothGallery/scripts/jd.gallery.transitions.js +90 -0
- data/util/image-gallery/js/SmoothGallery/scripts/jdgalleryresize.js +828 -0
- data/util/image-gallery/js/SmoothGallery/scripts/license.txt +621 -0
- data/util/image-gallery/js/SmoothGallery/scripts/mootools-1.2-more.js +103 -0
- data/util/image-gallery/js/SmoothGallery/scripts/mootools-1.2.1-core-yc.js +349 -0
- data/util/image-gallery/js/SmoothGallery/scripts/resizer.php +113 -0
- data/util/image-gallery/misc/plugin/recent_image.rb +406 -0
- data/util/image-gallery/skel/gallery.rhtml +154 -0
- data/util/image-gallery/skel/gallery.rhtml.euc-jp +154 -0
- data/util/image-gallery/tdiary.conf.igsample +8 -0
- data/util/image-gallery/theme/image-gallery.css +85 -0
- data/util/image2flickr.rb +282 -0
- data/util/posttdiary/README.ja +12 -0
- data/util/posttdiary/posttdiary-ex.rb +1155 -0
- data/util/posttdiary/posttdiary.rb +245 -0
- data/util/rast-search/ChangeLog +55 -0
- data/util/rast-search/README.ja +99 -0
- data/util/rast-search/en/rast-register.rb +3 -0
- data/util/rast-search/i.rast.rhtml +33 -0
- data/util/rast-search/ja/rast-register.rb +3 -0
- data/util/rast-search/rast-register.rb +326 -0
- data/util/rast-search/rast-search.rb +249 -0
- data/util/rast-search/rast.rhtml +66 -0
- data/util/rast-search/rast.rxml +21 -0
- data/util/section_link/README +11 -0
- data/util/section_link/misc/plugin/section_link.rb +68 -0
- data/util/section_link/misc/plugin/section_link_anchor.rb +38 -0
- data/util/section_link/tdiary/tdiary_day_ext.rb +21 -0
- data/util/section_link/tdiary/tdiaryext_style.rb +36 -0
- data/util/section_link/tdiary/wikiext_style.rb +36 -0
- data/util/tdiary-for-ruby1.9/compatible.rb +97 -0
- data/util/tdiary-for-ruby1.9/tdiary-2.2.0.patch +98 -0
- data/util/tdiary-for-ruby1.9/tdiary-2.3.1.patch +212 -0
- data/util/tdiary-grep/README +4 -0
- data/util/tdiary-grep/grep.rb +445 -0
- data/util/tdiary-mode/http.el +130 -0
- data/util/tdiary-mode/tdiary-mode.el +613 -0
- data/util/tdiary-vim/ChangeLog +25 -0
- data/util/tdiary-vim/README +60 -0
- data/util/tdiary-vim/tdiary.vim +350 -0
- data/util/tdiarysearch/README.en +53 -0
- data/util/tdiarysearch/README.ja +99 -0
- data/util/tdiarysearch/search.rb +504 -0
- metadata +497 -0
@@ -0,0 +1,69 @@
|
|
1
|
+
image_detail.rb
|
2
|
+
|
3
|
+
機能
|
4
|
+
JPEGファイルに含まれるExif情報を解析し、各種撮影条件を表示します。
|
5
|
+
また、位置情報が含まれる場合、周辺地図ををポップアップ表示し、
|
6
|
+
Googleマップへのリンクを生成します。
|
7
|
+
|
8
|
+
|
9
|
+
更新情報
|
10
|
+
revision 1.0:
|
11
|
+
ファーストリリース
|
12
|
+
revision 1.1:
|
13
|
+
スマートフォン対応、その他
|
14
|
+
|
15
|
+
インストール
|
16
|
+
このPluginはimage.rbが導入されていることを前提としています。
|
17
|
+
image.rbを有効にしてください。また、image_ex.rbと共存することはできません。
|
18
|
+
|
19
|
+
・ExifParserの導入
|
20
|
+
image_detail.rbはExifのパーサとして、ExifParserを使用しています。
|
21
|
+
tdiary/lib/ExifParser/READMEに従って導入してください。
|
22
|
+
|
23
|
+
・Pluginのインストール
|
24
|
+
image_detail.rbを適切な場所に配置してください。多言語用リソースは存在しません。
|
25
|
+
|
26
|
+
・Google Maps API Keyの取得
|
27
|
+
http://code.google.com/intl/ja/apis/maps/signup.html
|
28
|
+
にてAPIキーを生成し、[設定]-[その他]-[image_gpsの設定]の
|
29
|
+
Google Maps API Keyに生成されたAPIキーを設定してください。
|
30
|
+
APIキーが設定されていない場合、地図のポップアップ表示および
|
31
|
+
モバイルモードでの地図の表示ができません。
|
32
|
+
|
33
|
+
・CSSの追加
|
34
|
+
写真と撮影条件をそれっぽく表示するために、CSSを設定する必要があります。
|
35
|
+
apend_css.rbを使用すると簡単にCSSを追加することができます。
|
36
|
+
参考に、作者が設定しているCSSを示します。
|
37
|
+
|
38
|
+
--ここから
|
39
|
+
img.photo{
|
40
|
+
float:left;
|
41
|
+
clear:both;
|
42
|
+
}
|
43
|
+
|
44
|
+
div.photo_detail{
|
45
|
+
clear:both;
|
46
|
+
display:block;
|
47
|
+
margin:0.5em;
|
48
|
+
padding:0.5em;
|
49
|
+
}
|
50
|
+
|
51
|
+
div.photo_detail ul{
|
52
|
+
list-style-type:none;
|
53
|
+
}
|
54
|
+
|
55
|
+
img.map {
|
56
|
+
outline:solid 5px gray;
|
57
|
+
}
|
58
|
+
--ここまで
|
59
|
+
|
60
|
+
使用方法
|
61
|
+
プラグインの書式は、image.rbと同じです。
|
62
|
+
|
63
|
+
画像がJPEGかつExif情報を含む場合各種撮影条件を表示します。
|
64
|
+
Exif情報に位置情報が含まれている場合、地図をポップアップ表示し、
|
65
|
+
Googleマップへのリンクを生成します。
|
66
|
+
|
67
|
+
制限事項
|
68
|
+
secureモードには対応していません。
|
69
|
+
image_ex.rbと同時に使用することはできません。
|
@@ -0,0 +1,36 @@
|
|
1
|
+
image_gps.rb
|
2
|
+
|
3
|
+
機能
|
4
|
+
アップロードした画像に含まれているGPSの位置情報を使用して、
|
5
|
+
対応する地図へのリンクを生成します。また、画像ファイルに機種名などの情
|
6
|
+
報が含まれている場合、タイトル情報として表示する事が可能です。
|
7
|
+
|
8
|
+
更新情報
|
9
|
+
revision 1.7:
|
10
|
+
リンク先をGoogleMapにした。
|
11
|
+
モバイルモード時も世界測地系に変換する。
|
12
|
+
|
13
|
+
インストール
|
14
|
+
このPluginはimage.rbが導入されていることを前提としています。
|
15
|
+
image.rbを有効にしてください。また、image_ex.rbと共存することはできません。
|
16
|
+
|
17
|
+
・ExifParserの導入
|
18
|
+
image_gps.rbはExifのパーサとして、ExifParserを使用しています。
|
19
|
+
tdiary/lib/ExifParser/READMEに従って導入してください。
|
20
|
+
|
21
|
+
・Pluginのインストール
|
22
|
+
image_gps.rbを適切な場所に配置してください。多言語用リソースは存在しません。
|
23
|
+
|
24
|
+
使用方法
|
25
|
+
image.rbと同じです。画像にGPSの情報が含まれている場合は自動的に
|
26
|
+
GoogleMAP(http://maps.google.co.jp/ )へのリンクを生成します。
|
27
|
+
|
28
|
+
携帯端末でアクセスした場合は、http://walk.eznavi.jp/ へのリンクを生成します。
|
29
|
+
auのezナビウォーク対応機種ではezナビウォークを起動するページが表示されます。
|
30
|
+
それ以外の端末ではhttp://map.navitime.jp/ へリダイレクトされます。
|
31
|
+
|
32
|
+
サムネイル画像が指定されている場合は、そちらが優先されます。
|
33
|
+
|
34
|
+
制限事項
|
35
|
+
secureモードには対応していません。
|
36
|
+
image_ex.rbと同時に使用することはできません。
|
@@ -0,0 +1,41 @@
|
|
1
|
+
image_gps2.rb
|
2
|
+
|
3
|
+
機能
|
4
|
+
アップロードした画像に含まれているGPSの位置情報を使用して、
|
5
|
+
対応する地図をポップアップ表示します。また、画像ファイルに機種名などの情
|
6
|
+
報が含まれている場合、タイトル情報として表示する事が可能です。
|
7
|
+
|
8
|
+
更新情報
|
9
|
+
revision 0.8:
|
10
|
+
first release.
|
11
|
+
image_gps.rbからフォークしたよ。
|
12
|
+
|
13
|
+
インストール
|
14
|
+
このPluginはimage.rbが導入されていることを前提としています。
|
15
|
+
image.rbを有効にしてください。また、image_ex.rbと共存することはできません。
|
16
|
+
|
17
|
+
・ExifParserの導入
|
18
|
+
image_gps2.rbはExifのパーサとして、ExifParserを使用しています。
|
19
|
+
tdiary/lib/ExifParser/READMEに従って導入してください。
|
20
|
+
|
21
|
+
・Pluginのインストール
|
22
|
+
image_gps2.rbを適切な場所に配置してください。多言語用リソースは存在しません。
|
23
|
+
|
24
|
+
・Google MAPS APIキーの設定
|
25
|
+
このPluginを使用するには、Google MAPS APIのキーを取得し、設定する必要があります。
|
26
|
+
http://code.google.com/intl/ja/apis/maps/signup.html にてtDiaryのあるドメインの
|
27
|
+
URLを入力し、キーを取得してください。
|
28
|
+
|
29
|
+
取得したキーを[設定]-[その他]-[image_gpsの設定]のGoogle Maps API Keyに
|
30
|
+
設定すると使用できるようになります。
|
31
|
+
|
32
|
+
使用方法
|
33
|
+
image.rbと同じです。画像にGPSの情報が含まれている場合はマウスオーバー
|
34
|
+
でGoogle Maps Static APIを利用した地図をポップアップで表示します。
|
35
|
+
|
36
|
+
携帯端末でアクセスした場合は、リンク先がGoogle Maps Static APIで生成した
|
37
|
+
地図の画像となります。
|
38
|
+
|
39
|
+
制限事項
|
40
|
+
secureモードには対応していません。
|
41
|
+
image_ex.rbと同時に使用することはできません。
|
@@ -0,0 +1,105 @@
|
|
1
|
+
! 概要
|
2
|
+
[[Weather Hacks - livedoor 天気情報|http://weather.livedoor.com/weather_hacks/]]を利用して日記に天気情報を埋め込むプラグイン
|
3
|
+
|
4
|
+
!使い方
|
5
|
+
インストールしたら、設定画面で天気情報を取得する都市IDを設定してください。日記更新時に天気情報を取得します。
|
6
|
+
デフォルトでは日記の一日単位上部に天気情報を埋め込みます。
|
7
|
+
|
8
|
+
!!CSS
|
9
|
+
div.lwws {
|
10
|
+
text-align: right;
|
11
|
+
font-size: 0.8em;
|
12
|
+
}
|
13
|
+
上記のように設定すると見やすくなります。
|
14
|
+
|
15
|
+
!!キャッシュファイル
|
16
|
+
天気情報はxml形式で
|
17
|
+
@cache_path/lwws/YYYYMMDD.xml
|
18
|
+
というファイルに保存しています。
|
19
|
+
|
20
|
+
!!プラグイン呼び出し
|
21
|
+
!!!lwws_today
|
22
|
+
今日の天気を表示します。
|
23
|
+
!!!lwws_tomorrow
|
24
|
+
明日の天気を表示します。
|
25
|
+
!!!lwws_dayaftertomorrow
|
26
|
+
明後日の天気を表示します。
|
27
|
+
|
28
|
+
!!!使い方
|
29
|
+
例えば(Wikiスタイルの例)
|
30
|
+
||今日||明日||明後日
|
31
|
+
||{{lwws_today}}||{{lwws_tomorrow}}||{{lwws_dayaftertomorrow}}
|
32
|
+
と書くと三日分の天気が表で表示されます。
|
33
|
+
サイドバーなどに使うとかっこいいかもしれません。
|
34
|
+
|
35
|
+
!ToDo
|
36
|
+
*セキュア対応
|
37
|
+
*キャッシュの削除機能
|
38
|
+
*(他にあれば募集します)
|
39
|
+
|
40
|
+
!ライセンス
|
41
|
+
GPL2
|
42
|
+
|
43
|
+
!更新履歴
|
44
|
+
!!20070329
|
45
|
+
* open-uri の proxy を tdiary.conf から読み込むようにした
|
46
|
+
|
47
|
+
!!20070214
|
48
|
+
* feed 生成時の出力を抑制
|
49
|
+
|
50
|
+
!!20070206
|
51
|
+
* NKFを使うのをやめて @conf.to_native を使うようにした
|
52
|
+
* proxy の削除(trunk に追従)
|
53
|
+
* to_native の第二引数として utf-8 を指定
|
54
|
+
|
55
|
+
!!20070109
|
56
|
+
* サニタイズキャンペーンに伴う修正
|
57
|
+
|
58
|
+
!!20060712
|
59
|
+
* lwws_getのバグ修正
|
60
|
+
|
61
|
+
!!20060709
|
62
|
+
* 設定更新時には強制的にキャッシュを再取得するように変更
|
63
|
+
|
64
|
+
!!20060702
|
65
|
+
* lwws_getの処理を変更
|
66
|
+
|
67
|
+
!!20060310
|
68
|
+
* 設定が保存されない不具合の修正
|
69
|
+
|
70
|
+
!!20060309
|
71
|
+
* キャッシュの自動更新を設定可能にする
|
72
|
+
* 自動更新間隔を任意で設定可能にする
|
73
|
+
** 自動更新間隔を0にするとアクセスするたびにLWWSをたたくようになるので、適当に6-12くらいの数字を入れるのを推奨。
|
74
|
+
|
75
|
+
!!20060219
|
76
|
+
* 携帯閲覧時には画像を非表示
|
77
|
+
* 画像にtitle要素としてtelopエレメントを追加
|
78
|
+
|
79
|
+
!!20060213
|
80
|
+
* キャッシュファイルを6時間で更新するようにした。
|
81
|
+
* 任意の日付の天気を表示するlwwsメソッドを追加
|
82
|
+
|
83
|
+
!!20060212
|
84
|
+
* 新規メソッドとしてlwws_today,lwws_tomorrow,lwws_dayaftertomorrowを追加。プラグイン呼び出しとして、任意の場所に天気を表示します。
|
85
|
+
* 表示項目を変更機能の追加(設定画面)。
|
86
|
+
* アイコン表示機能の追加(設定画面)。
|
87
|
+
* 詳細へのリンクは天候に作成するようにした。(アイコンの場合はアイコンに設定)
|
88
|
+
* convert_dateメソッドを追加。date_statusからYYYYMMDD形式の文字列を返します。
|
89
|
+
* 英語リソースをでっちあげた。(中国語は英語リソースの焼きまわし)
|
90
|
+
* 「℃」を言語リソースに移動
|
91
|
+
* lwws_to_thmlメソッドで任意の日付を指定可能にした。
|
92
|
+
|
93
|
+
|
94
|
+
!!20060211
|
95
|
+
* lwws_getメソッドの引数をdateからdate_status(today,tomorrow,dayaftertomorrow)へと変更
|
96
|
+
* 設定画面の不要なエスケープを修正
|
97
|
+
* lwws_getメソッドでxmlを保存する時にYYYYMMDD形式になっていないバグを修正
|
98
|
+
|
99
|
+
!!20060210
|
100
|
+
* 最初のリリース
|
101
|
+
* Uconvではなく、NKFを使ってUTF-8を扱うようにした。
|
102
|
+
* typo(というか、コピペ修正ミス)を直した。
|
103
|
+
* 最高気温、最低気温が存在する場合には表示するようにした。
|
104
|
+
* livedoor天気情報へのリンクを作るようにした。
|
105
|
+
* proxyの情報はamazon.proxyに統合した。
|
@@ -0,0 +1,16 @@
|
|
1
|
+
! 名前
|
2
|
+
OpenSearch Auto-Discovery プラグイン
|
3
|
+
|
4
|
+
! 概要
|
5
|
+
tDiaryをOpenSearch Auto-Discoveryに対応させるプラグイン
|
6
|
+
|
7
|
+
!使い方
|
8
|
+
利用するには OpenSearch description XML をあらかじめ作成する必要があります。
|
9
|
+
サンプルファイルは http://www.opensearch.org/Specifications/OpenSearch/1.1 にあります。
|
10
|
+
|
11
|
+
!ライセンス
|
12
|
+
GPL2
|
13
|
+
|
14
|
+
!更新履歴
|
15
|
+
!!20070117
|
16
|
+
* tDiary-contrib に追加
|
@@ -0,0 +1,84 @@
|
|
1
|
+
! 概要
|
2
|
+
セクションの後ろにナビゲーションを追加するプラグイン。
|
3
|
+
|
4
|
+
以下の項目が追加されます。
|
5
|
+
|
6
|
+
* タグ(カテゴリ)
|
7
|
+
* このエントリを含むはてなブックマーク
|
8
|
+
* はてなブックマークコメント表示
|
9
|
+
* このエントリを含む del.icio.us
|
10
|
+
* このエントリを含む livedoor クリップ
|
11
|
+
* このエントリを含む Buzzurl
|
12
|
+
* Permalink
|
13
|
+
|
14
|
+
!注意事項
|
15
|
+
* blogkitでは動きません
|
16
|
+
* セキュアな環境では動きません
|
17
|
+
* category_to_tag.rb と同時に使うことはできません
|
18
|
+
* Permalinkやアイコンは用途に合わせてadd_section_leave_procから適当に削ってください
|
19
|
+
* 利用するには [[JSON library for Ruby|http://rubyforge.org/projects/json/]] が必要(lib 以下に配置済み)
|
20
|
+
|
21
|
+
! 動作事例
|
22
|
+
http://www.hsbt.org/diary/
|
23
|
+
|
24
|
+
!ライセンス
|
25
|
+
GPL2
|
26
|
+
|
27
|
+
! Changelog
|
28
|
+
!!20070323
|
29
|
+
* del.icio.us Image API 使用時に ?aggregate を追加
|
30
|
+
|
31
|
+
!!20070322
|
32
|
+
* 画像取得API に対応
|
33
|
+
|
34
|
+
!!20070321
|
35
|
+
* JSON library for Ruby を追加
|
36
|
+
|
37
|
+
!!20070215
|
38
|
+
* アイコンを本家から持ってくるようにした
|
39
|
+
|
40
|
+
!!20070212
|
41
|
+
* Buzzurl(http://buzzurl.jp) に対応した
|
42
|
+
|
43
|
+
!!20070210
|
44
|
+
* Permalink 生成時の余計なエスケープをしないようにした
|
45
|
+
|
46
|
+
!!20070206
|
47
|
+
* NKFを使うのをやめて @conf.to_native を使うようにした
|
48
|
+
* to_native の第二引数として utf-8 を指定
|
49
|
+
|
50
|
+
!!20070205
|
51
|
+
* delicious JSON のキャッシュデータは @cache/delicious/YYYYMM に作成するようにした
|
52
|
+
|
53
|
+
!!20070204
|
54
|
+
* 全面的に見直し、追加関係のリンクは生成しないようにした
|
55
|
+
* del.icio.us の JSON API に対応、ブックマーク数を表示できるようにした
|
56
|
+
* はてなブックマーク、livedoor クリップのブックマーク数画像表示APIに対応させた
|
57
|
+
* 上記のAPIを使うようにしたため、まちゅさんのブックマークカウントキャッシュは使わないようにした
|
58
|
+
|
59
|
+
!!20060107
|
60
|
+
* リンク追加処理をメソッドとして分離
|
61
|
+
|
62
|
+
!!20051229
|
63
|
+
* [[人気の日記プラグイン (はてなブックマーク + MM/Memo) - まちゅダイアリー (2005-12-27)|http://www.machu.jp/diary/20051227.html#p03]]の改造の取り込み
|
64
|
+
|
65
|
+
!!20051227
|
66
|
+
* [[人気の日記プラグイン (はてなブックマーク) - まちゅダイアリー (2005-12-27)|http://www.machu.jp/diary/20051227.html#p02]]の改造の取り込み
|
67
|
+
|
68
|
+
!!20051207
|
69
|
+
* 「このエントリを含むdel.icio.us」のリンクを追加
|
70
|
+
|
71
|
+
!!20051129
|
72
|
+
* 「このエントリを含むMM/Memo」のリンクを追加
|
73
|
+
|
74
|
+
!!20051124
|
75
|
+
* 「このエントリをdel.icio.usに追加」のリンクを追加
|
76
|
+
|
77
|
+
!!20051121
|
78
|
+
* 携帯からのアクセスの時には表示しないようにした。
|
79
|
+
|
80
|
+
!!20051114
|
81
|
+
* 最初のリリース
|
82
|
+
|
83
|
+
! 謝辞
|
84
|
+
このプラグインはたださんが作ったcategory_to_tag.rbとえろぺおさんによる[[tDiary の指定したセクションの permalink を求める|http://bigfield.ddo.jp/diary/20051026.html#p01]]をインスパイヤしました。ありがとうございました!
|
@@ -0,0 +1 @@
|
|
1
|
+
See: http://arika.org/diary/20050421#p01
|
data/doc/ja/plugin.txt
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
== tDiary contrib/sytle/hatena_style ==
|
2
|
+
|
3
|
+
はてなダイアリー<http://d.hatena.ne.jp/>互換スタイルです。
|
4
|
+
|
5
|
+
* インストール方法
|
6
|
+
添付の hatena_style.rb を他のスタイルと同様 core/tdiary/ に投入してください。
|
7
|
+
その後、 tdiary.conf でスタイルを 'Hatena' と指定すると有効になります
|
8
|
+
|
9
|
+
* 記法
|
10
|
+
記法に関してははてなダイアリーのヘルプ<http://d.hatena.ne.jp/help>を参照してください。ここに記載されていることのうち、<hatena 〜>以外には対応しています。
|
@@ -0,0 +1,13 @@
|
|
1
|
+
== tDiary contrib/sytle/markdown_style ==
|
2
|
+
|
3
|
+
Markdown<http://daringfireball.net/projects/markdown/>スタイルです。
|
4
|
+
|
5
|
+
* インストール方法
|
6
|
+
BlueClothが必要です。<http://raa.ruby-lang.org/project/bluecloth/>から入手してインストールしてください。
|
7
|
+
添付の markdown_style.rb を他のスタイルと同様 core/tdiary/ に投入してください。
|
8
|
+
その後、 tdiary.conf でスタイルを 'Markdown' と指定すると有効になります
|
9
|
+
|
10
|
+
* 記法
|
11
|
+
記法に関してはMarkdown文法紹介<http://unmovabletype.org/archives/2004/08/markdown_syntax.html>を参照してください。
|
12
|
+
tDiaryでの拡張として#が<h3>に##が<h4>になります。セクションの区切りは#で行います。
|
13
|
+
tDiaryのプラグインを呼び出すには{{〜}}で囲みます。(例: {{my '20041004p01','test'}} )
|
data/doc/ja/util.txt
ADDED
@@ -0,0 +1,263 @@
|
|
1
|
+
#
|
2
|
+
# antirefspam.rb
|
3
|
+
#
|
4
|
+
# Copyright (c) 2004-2005 T.Shimomura <redbug@netlife.gr.jp>
|
5
|
+
# You can redistribute it and/or modify it under GPL2.
|
6
|
+
# Please use version 1.0.0 (not 1.0.0G) if GPL doesn't want to be forced on me.
|
7
|
+
#
|
8
|
+
|
9
|
+
require 'net/http'
|
10
|
+
require 'uri'
|
11
|
+
|
12
|
+
module TDiary
|
13
|
+
module Filter
|
14
|
+
|
15
|
+
class AntirefspamFilter < Filter
|
16
|
+
# 有効にすると指定したファイルにデバッグ情報文字列を追記する
|
17
|
+
def debug_out(filename, str)
|
18
|
+
if $debug
|
19
|
+
filename = File.join(@conf.data_path,"AntiRefSpamFilter",filename)
|
20
|
+
File::open(filename, "a+") {|f|
|
21
|
+
f.puts str
|
22
|
+
}
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
# str に指定された文字列が適切なリンク先を含んでいるかをチェック
|
27
|
+
def isIncludeMyUrl(str)
|
28
|
+
# str に日記のURLが含まれているかどうか
|
29
|
+
base_url = @conf.base_url
|
30
|
+
unless base_url.empty?
|
31
|
+
if str.include? base_url
|
32
|
+
return true
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
# str にトップページURLが含まれているかどうか
|
37
|
+
unless @conf.index_page.empty?
|
38
|
+
if @conf.index_page.index(URI.regexp(%w[http https])) == 0
|
39
|
+
if str.include? @conf.index_page
|
40
|
+
return true
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
# str に許容するリンク先が含まれているかどうか
|
46
|
+
if (myurl = @conf['antirefspam.myurl']) && !myurl.empty?
|
47
|
+
if str.include? myurl
|
48
|
+
return true
|
49
|
+
end
|
50
|
+
|
51
|
+
#url = myurl.gsub("/", "\\/").gsub(":", "\\:")
|
52
|
+
#exp = Regexp.new(url)
|
53
|
+
exp = Regexp.union(myurl)
|
54
|
+
if exp =~ str
|
55
|
+
return true
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
return false
|
60
|
+
end
|
61
|
+
|
62
|
+
def referer_filter(referer)
|
63
|
+
conf_disable = @conf['antirefspam.disable'] != nil ? @conf['antirefspam.disable'].to_s : ''
|
64
|
+
conf_checkreftable = @conf['antirefspam.checkreftable'] != nil ? @conf['antirefspam.checkreftable'].to_s : ''
|
65
|
+
conf_trustedurl = @conf['antirefspam.trustedurl'] != nil ? @conf['antirefspam.trustedurl'].to_s : ''
|
66
|
+
conf_proxy_server = @conf['antirefspam.proxy_server'] != nil && @conf['antirefspam.proxy_server'].size > 0 ? @conf['antirefspam.proxy_server'].to_s : nil
|
67
|
+
conf_proxy_port = @conf['antirefspam.proxy_port'] != nil && @conf['antirefspam.proxy_port'].size > 0 ? @conf['antirefspam.proxy_port'].to_s : nil
|
68
|
+
|
69
|
+
if conf_disable == 'true' or # リンク元チェックが有効ではない場合はスルーする
|
70
|
+
referer == nil or # リンク元が無い
|
71
|
+
referer.size <= 1 or # 一部のアンテナで更新時刻が取れなくなる問題に対応するため、リンク元が1文字以内の場合は許容
|
72
|
+
isIncludeMyUrl(referer) # 自分の日記内からのリンクは信頼する
|
73
|
+
then
|
74
|
+
return true
|
75
|
+
end
|
76
|
+
|
77
|
+
# "信頼できるURL" を1つずつ取り出してrefererと合致するかチェックする
|
78
|
+
conf_trustedurl.each_line do |trusted|
|
79
|
+
trusted.sub!(/\r?\n|\r/,'')
|
80
|
+
next if trusted =~ /\A(\#|\s*)\z/ # #または空白で始まる行は読み飛ばす
|
81
|
+
|
82
|
+
# まずは "信頼できる URL" が referer に含まれるかどうか
|
83
|
+
if referer.include? trusted
|
84
|
+
debug_out("trusted", trusted+" (include?) "+referer)
|
85
|
+
return true
|
86
|
+
end
|
87
|
+
|
88
|
+
# 含まれなかった場合は "信頼できる URL" を正規表現とみなして再チェック
|
89
|
+
begin
|
90
|
+
#if referer =~ Regexp.new( trusted.gsub("/", "\\/").gsub(":", "\\:") )
|
91
|
+
if referer =~ Regexp.union( trusted )
|
92
|
+
debug_out("trusted", trusted+" (=~) "+referer)
|
93
|
+
return true
|
94
|
+
end
|
95
|
+
rescue
|
96
|
+
debug_out("error_config", "trustedurl: "+trusted)
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
# URL置換リストを見る
|
101
|
+
if conf_checkreftable == 'true'
|
102
|
+
# "URL置換リスト" を1つずつ取り出してrefererと合致するかチェックする
|
103
|
+
@conf.referer_table.each do |url, name|
|
104
|
+
begin
|
105
|
+
if /#{url}/i =~ referer && url != '^(.{50}).*$'
|
106
|
+
debug_out("trusted", url+" (=~referer_table) "+referer)
|
107
|
+
return true
|
108
|
+
end
|
109
|
+
rescue
|
110
|
+
debug_out("error_config", "referer_table: "+url)
|
111
|
+
end
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
@work_path = File.join(@conf.data_path,"AntiRefSpamFilter")
|
116
|
+
@spamurl_list = File.join(@work_path,"spamurls") # referer spam のリンク元一覧
|
117
|
+
@spamip_list = File.join(@work_path,"spamips") # referer spam のIP一覧
|
118
|
+
@safeurl_list = File.join(@work_path,"safeurls") # おそらくは問題のないリンク元一覧
|
119
|
+
|
120
|
+
# ディレクトリ/ファイルが存在しなければ作る
|
121
|
+
unless File.exist? @work_path
|
122
|
+
Dir::mkdir(@work_path)
|
123
|
+
end
|
124
|
+
unless File.exist? @spamurl_list
|
125
|
+
File::open(@spamurl_list, "a").close
|
126
|
+
end
|
127
|
+
unless File.exist? @safeurl_list
|
128
|
+
File::open(@safeurl_list, "a").close
|
129
|
+
end
|
130
|
+
|
131
|
+
uri = URI.parse(referer)
|
132
|
+
temp_filename = File.join(@work_path,uri.host)
|
133
|
+
# チェック時には対象のドメイン名を持った一時ファイルを作る
|
134
|
+
begin
|
135
|
+
File::open(temp_filename, File::RDONLY | File::CREAT | File::EXCL).close
|
136
|
+
|
137
|
+
# 一度 SPAM URL とみなしたら以後は以後は拒否
|
138
|
+
spamurls = IO::readlines(@spamurl_list).map {|url| url.chomp }
|
139
|
+
if spamurls.include? referer
|
140
|
+
return false
|
141
|
+
end
|
142
|
+
|
143
|
+
# 一度 SPAM URL でないと判断したら以後は許可
|
144
|
+
safeurls = IO::readlines(@safeurl_list).map {|url| url.chomp }
|
145
|
+
if safeurls.include? referer
|
146
|
+
return true
|
147
|
+
end
|
148
|
+
|
149
|
+
# リンク元 URL の HTML を引っ張ってくる
|
150
|
+
Net::HTTP.version_1_2 # おまじないらしい
|
151
|
+
body = ""
|
152
|
+
begin
|
153
|
+
Net::HTTP::Proxy(conf_proxy_server, conf_proxy_port).start(uri.host, uri.port) do |http|
|
154
|
+
if uri.path == ""
|
155
|
+
response, = http.get("/")
|
156
|
+
else
|
157
|
+
response, = http.get(uri.request_uri)
|
158
|
+
end
|
159
|
+
body = response.body
|
160
|
+
end
|
161
|
+
|
162
|
+
# body に日記の URL が含まれていなければ SPAM とみなす
|
163
|
+
unless isIncludeMyUrl(body)
|
164
|
+
File::open(@spamurl_list, "a+") {|f|
|
165
|
+
f.puts referer
|
166
|
+
}
|
167
|
+
File::open(@spamip_list, "a+") {|f|
|
168
|
+
f.puts [@cgi.remote_addr, Time.now.utc.strftime("%Y/%m/%d %H:%M:%S UTC")].join("\t")
|
169
|
+
}
|
170
|
+
return false
|
171
|
+
else
|
172
|
+
File::open(@safeurl_list, "a+") {|f|
|
173
|
+
f.puts referer
|
174
|
+
}
|
175
|
+
end
|
176
|
+
rescue
|
177
|
+
# エラーが出た場合は @spamurl_list に入れない&リンク元にも入れない
|
178
|
+
return false
|
179
|
+
end
|
180
|
+
|
181
|
+
rescue StandardError, TimeoutError
|
182
|
+
# 現在チェック中なら、今回はリンク元に勘定しない
|
183
|
+
return false
|
184
|
+
ensure
|
185
|
+
begin
|
186
|
+
File::delete(temp_filename)
|
187
|
+
rescue
|
188
|
+
end
|
189
|
+
end
|
190
|
+
|
191
|
+
return true
|
192
|
+
end
|
193
|
+
|
194
|
+
|
195
|
+
|
196
|
+
def log_spamcomment( diary, comment )
|
197
|
+
@work_path = File.join(@conf.data_path,"AntiRefSpamFilter")
|
198
|
+
@spamcomment_list = File.join(@work_path,"spamcomments") # comment spam の一覧
|
199
|
+
|
200
|
+
# ディレクトリ/ファイルが存在しなければ作る
|
201
|
+
unless File.exist? @work_path
|
202
|
+
Dir::mkdir(@work_path)
|
203
|
+
end
|
204
|
+
unless File.exist? @spamcomment_list
|
205
|
+
File::open(@spamcomment_list, "a").close
|
206
|
+
end
|
207
|
+
|
208
|
+
File::open(@spamcomment_list, "a+") {|f|
|
209
|
+
f.puts "From: "+comment.name+" <"+comment.mail+">"
|
210
|
+
f.puts "To: "+diary.date.to_s
|
211
|
+
f.puts "Date: "+comment.date.to_s
|
212
|
+
f.puts comment.body
|
213
|
+
f.puts ".\n\n"
|
214
|
+
}
|
215
|
+
end
|
216
|
+
|
217
|
+
def comment_filter( diary, comment )
|
218
|
+
# ツッコミに日本語(ひらがな/カタカナ)が含まれていなければ不許可
|
219
|
+
if @conf['antirefspam.comment_kanaonly'] != nil
|
220
|
+
if @conf['antirefspam.comment_kanaonly'].to_s == 'true'
|
221
|
+
unless comment.body =~ /[ぁ-んァ-ヴー]/
|
222
|
+
log_spamcomment( diary, comment )
|
223
|
+
return false
|
224
|
+
end
|
225
|
+
end
|
226
|
+
end
|
227
|
+
|
228
|
+
# ツッコミの文字数が指定した上限以内でないなら不許可
|
229
|
+
maxsize = @conf['antirefspam.comment_maxsize'].to_i
|
230
|
+
if maxsize > 0
|
231
|
+
unless comment.body.size <= maxsize
|
232
|
+
log_spamcomment( comment )
|
233
|
+
return false
|
234
|
+
end
|
235
|
+
end
|
236
|
+
|
237
|
+
# NGワードが1つでも含まれていたら不許可
|
238
|
+
if @conf['antirefspam.comment_ngwords'] != nil
|
239
|
+
ngwords = @conf['antirefspam.comment_ngwords']
|
240
|
+
ngwords.to_s.each_line do |ngword|
|
241
|
+
ngword.sub!(/\r?\n|\r/,'')
|
242
|
+
if comment.body.downcase.include? ngword.downcase
|
243
|
+
log_spamcomment( comment )
|
244
|
+
return false
|
245
|
+
end
|
246
|
+
|
247
|
+
# 含まれなかった場合は "NGワード" を正規表現とみなして再チェック
|
248
|
+
begin
|
249
|
+
if comment.body =~ Regexp.new( ngword, Regexp::MULTILINE )
|
250
|
+
log_spamcomment( comment )
|
251
|
+
return false
|
252
|
+
end
|
253
|
+
rescue
|
254
|
+
debug_out("error_config", "comment_ngwords: "+ngword)
|
255
|
+
end
|
256
|
+
end
|
257
|
+
end
|
258
|
+
|
259
|
+
return true
|
260
|
+
end
|
261
|
+
end
|
262
|
+
end
|
263
|
+
end
|