Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Newer
Older
100755 243 lines (199 sloc) 5.211 kb
7ec335c Hiroyuki Nakamura dataディレクトリがなかった時に作るように変更した
authored
1 #!/usr/bin/env ruby
118a2a7 Toshiyuki Masui initial version
masui authored
2 # -*- coding: utf-8 -*-
3 # -*- ruby -*-
4
5 require 'rubygems'
92a9ba6 Hiroyuki Nakamura sinatra-configfileにconfigを移動
authored
6 require 'bundler/setup'
118a2a7 Toshiyuki Masui initial version
masui authored
7 require 'sinatra'
92a9ba6 Hiroyuki Nakamura sinatra-configfileにconfigを移動
authored
8 require 'sinatra/config_file'
118a2a7 Toshiyuki Masui initial version
masui authored
9
10ed306 Toshiyuki Masui Cookie関連編集中
masui authored
10 enable :sessions # Cookieを使うのに要るらしい
8c3a349 use cookies for uploaded files
Toshiyuki Masui authored
11
b02e135 Hiroyuki Nakamura libの指定方法を変更した
authored
12 $: << File.expand_path(File.dirname(__FILE__))+'/lib'
92081dd Hiroyuki Nakamura コメントアウトを削除
authored
13
82da7fe Hiroyuki Nakamura エスケープ箇所を増やした
authored
14 require 'cgi'
1f3853b Toshiyuki Masui gyazz.rbを整理、search機能を整理
masui authored
15 require 'search'
bdba324 Toshiyuki Masui (編集中)
masui authored
16 require 'writedata'
17 require 'readdata'
437594d Toshiyuki Masui editが動くようになった。ヒストリ機能を実装予定
masui authored
18 require 'edit'
f83f039 Toshiyuki Masui page.rbを追加
masui authored
19 require 'page'
bfc2c5a Toshiyuki Masui 設定画面追加中
masui authored
20 require 'attr'
92a9ba6 Hiroyuki Nakamura sinatra-configfileにconfigを移動
authored
21 # require 'history'
7ec335c Hiroyuki Nakamura dataディレクトリがなかった時に作るように変更した
authored
22 require 'rss'
4a2bcd7 Toshiyuki Masui 運用開始
masui authored
23
b241cc3 Toshiyuki Masui 久し振りにコミット... 何を直したか忘れた
masui authored
24 helpers do
82da7fe Hiroyuki Nakamura エスケープ箇所を増やした
authored
25 def h(string);CGI::escapeHTML(string);end
b241cc3 Toshiyuki Masui 久し振りにコミット... 何を直したか忘れた
masui authored
26 #
27 # Basic認証のためのヘルパー
28 #
29 def protected!(name)
30 unless authorized?(name)
31 response['WWW-Authenticate'] = %(Basic realm="Restricted Area")
32 throw(:halt, [401, "Not authorized.\n"])
33 end
34 end
35
36 def authorized?(name)
37 file = datafile(name,".passwd") || datafile(name,".password")
38 return true unless File.exist?(file)
39 a = File.read(file).split
40 user = a.shift
41 pass = a.shift
42 return true if user.to_s == '' || pass.to_s == ''
43 @auth ||= Rack::Auth::Basic::Request.new(request.env)
44 @auth.provided? && @auth.basic? && @auth.credentials && @auth.credentials == [user,pass]
45 end
46 end
47
92a9ba6 Hiroyuki Nakamura sinatra-configfileにconfigを移動
authored
48 configure do |c|
49 config_file File.join(c.root, 'config', "settings.yml")
50 config_file File.join(c.root, 'config', "settings.#{c.environment}.yml")
51 end
52
4a2bcd7 Toshiyuki Masui 運用開始
masui authored
53 get '/' do
92a9ba6 Hiroyuki Nakamura sinatra-configfileにconfigを移動
authored
54 redirect "#{settings.url_root}/#{settings.gyazz_top}/#{settings.top_page}"
4a2bcd7 Toshiyuki Masui 運用開始
masui authored
55 end
56
3b28e81 Toshiyuki Masui '/' の飛び先変更
masui authored
57 get '/programs/*' do
58 ''
59 end
60
7f16261 Hiroyuki Nakamura development以外の環境だとgyazz.min.jsがロードされるようになっている
authored
61 # JavaScriptのテスト用.
62 if development?
63 get '/spec' do
64 erb :jasmine
65 end
66 end
67
118a2a7 Toshiyuki Masui initial version
masui authored
68 #
69 # API
70 #
1f3853b Toshiyuki Masui gyazz.rbを整理、search機能を整理
masui authored
71 # 外に見せないサービスは /__xxx という名前にする
72 #
73
1d1b9d1 Toshiyuki Masui 履歴表示のために拡張中
masui authored
74 get '/:name/*/history' do
92a9ba6 Hiroyuki Nakamura sinatra-configfileにconfigを移動
authored
75 name = params[:name]
1d1b9d1 Toshiyuki Masui 履歴表示のために拡張中
masui authored
76 title = params[:splat].join('/')
77 history(name,title)
78 end
79
10ed306 Toshiyuki Masui Cookie関連編集中
masui authored
80 get '/:name/*/search' do # /増井研/合宿/search
1f3853b Toshiyuki Masui gyazz.rbを整理、search機能を整理
masui authored
81 name = params[:name]
b241cc3 Toshiyuki Masui 久し振りにコミット... 何を直したか忘れた
masui authored
82 protected!(name)
10ed306 Toshiyuki Masui Cookie関連編集中
masui authored
83 q = params[:splat].join('/') # /a/b/c/search の q を"b/c"にする
1f3853b Toshiyuki Masui gyazz.rbを整理、search機能を整理
masui authored
84 search(name,q)
85 end
86
87 get "/__search/:name" do |name|
b241cc3 Toshiyuki Masui 久し振りにコミット... 何を直したか忘れた
masui authored
88 protected!(name)
1f3853b Toshiyuki Masui gyazz.rbを整理、search機能を整理
masui authored
89 q = params[:q]
92a9ba6 Hiroyuki Nakamura sinatra-configfileにconfigを移動
authored
90 redirect q == '' ? "#{settings.url_root}/#{name}" : "#{settings.url_root}/#{name}/#{q}/search"
1f3853b Toshiyuki Masui gyazz.rbを整理、search機能を整理
masui authored
91 end
92
c6f5d4c Toshiyuki Masui Gyazoとの連携
masui authored
93 # データ書込み
94
95 post '/__write' do
96 postdata = params[:data].split(/\n/)
97 writedata(postdata)
1f3853b Toshiyuki Masui gyazz.rbを整理、search機能を整理
masui authored
98 end
99
23391ea Toshiyuki Masui 強制書込み __write__ APIを追加
masui authored
100 post '/__write__' do # 無条件書き込み
101 postdata = params[:data].split(/\n/)
102 __writedata(postdata)
103 end
104
b241cc3 Toshiyuki Masui 久し振りにコミット... 何を直したか忘れた
masui authored
105 get '/__write__' do # 無条件書き込み
106 postdata = params[:data].split(/\n/)
107 __writedata(postdata)
108 end
109
7e6b8d1 Toshiyuki Masui .settingsあたり
masui authored
110 get '/__setattr/:name/:key/:val' do |name,key,val|
111 attr = SDBM.open("#{topdir(name)}/attr",0644);
112 attr[key] = val
113 attr.close
114 end
115
92a9ba6 Hiroyuki Nakamura sinatra-configfileにconfigを移動
authored
116 ##
117 ## Gyazoへの転送!
118 ##
bfc2c5a Toshiyuki Masui 設定画面追加中
masui authored
119 # /__gyazoupload/(Gyazo ID)/(Gyazo URL) というリクエストが来る
120 # Gyazo IDは各GyazoアプリのユニークID
121 #
8c3a349 use cookies for uploaded files
Toshiyuki Masui authored
122 get %r{/__gyazoupload/([0-9a-f]+)/(.*)} do |gyazoid,url|
123 # GyazoID(アプリのID)とurlの対応関係を保存しておく
124 url =~ /([\da-f]{32})/
125 id = $1
92a9ba6 Hiroyuki Nakamura sinatra-configfileにconfigを移動
authored
126 idimage = SDBM.open("#{settings.file_root}/idimage",0644)
8c3a349 use cookies for uploaded files
Toshiyuki Masui authored
127 idimage[gyazoid] = idimage[gyazoid].to_s.split(/,/).unshift(id)[0,5].join(',')
128
129 # 画像URLとGyazoIDの対応も保存する
92a9ba6 Hiroyuki Nakamura sinatra-configfileにconfigを移動
authored
130 imageid = SDBM.open("#{settings.file_root}/imageid",0644)
8c3a349 use cookies for uploaded files
Toshiyuki Masui authored
131 imageid[id] = gyazoid
132
10ed306 Toshiyuki Masui Cookie関連編集中
masui authored
133 # CookieをセットしてGyazo.comに飛ぶ
8c3a349 use cookies for uploaded files
Toshiyuki Masui authored
134 # response.set_cookie("GyazoID", gyazoid)
135 response.set_cookie('GyazoID', {:value => gyazoid, :path => '/' })
136
c6f5d4c Toshiyuki Masui Gyazoとの連携
masui authored
137 redirect url
138 end
139
10ed306 Toshiyuki Masui Cookie関連編集中
masui authored
140 #
bfc2c5a Toshiyuki Masui 設定画面追加中
masui authored
141 # 設定
142 #
143
144 get "/:name/.settings" do |name|
b241cc3 Toshiyuki Masui 久し振りにコミット... 何を直したか忘れた
masui authored
145 protected!(name)
bfc2c5a Toshiyuki Masui 設定画面追加中
masui authored
146 attr(name)
147 end
148
149 #
10ed306 Toshiyuki Masui Cookie関連編集中
masui authored
150 # リスト表示
151 #
c6f5d4c Toshiyuki Masui Gyazoとの連携
masui authored
152
aad33d3 fixed problems found at gyazz.sfc.keio.ac.jp
Toshiyuki Masui authored
153 get "/:name" do |name|
b241cc3 Toshiyuki Masui 久し振りにコミット... 何を直したか忘れた
masui authored
154 protected!(name)
1f3853b Toshiyuki Masui gyazz.rbを整理、search機能を整理
masui authored
155 search(name)
156 end
118a2a7 Toshiyuki Masui initial version
masui authored
157
c6f5d4c Toshiyuki Masui Gyazoとの連携
masui authored
158 get "/:name/" do |name|
b241cc3 Toshiyuki Masui 久し振りにコミット... 何を直したか忘れた
masui authored
159 protected!(name)
c6f5d4c Toshiyuki Masui Gyazoとの連携
masui authored
160 search(name)
161 end
162
ecdaee5 Toshiyuki Masui /__sort で名前でソートされるようにした
masui authored
163 get "/:name/__sort" do |name|
164 protected!(name)
165 search(name,'',true)
166 end
167
9adda7c Toshiyuki Masui added JSON __list
masui authored
168 get "/:name/__list" do |name|
b241cc3 Toshiyuki Masui 久し振りにコミット... 何を直したか忘れた
masui authored
169 protected!(name)
9adda7c Toshiyuki Masui added JSON __list
masui authored
170 list(name)
171 end
172
b241cc3 Toshiyuki Masui 久し振りにコミット... 何を直したか忘れた
masui authored
173 get "/:name/__random" do |name|
174 protected!(name)
175 t = titles(name)
176 len = t.length
177 ignore = len / 2 # 新しい方からignore個は選ばない
178 title = t[ignore + rand(len-ignore)]
179 page(name,title)
180 end
181
3065d77 Toshiyuki Masui RSSを吐くようにした
masui authored
182 get "/:name/rss.xml" do |name|
b241cc3 Toshiyuki Masui 久し振りにコミット... 何を直したか忘れた
masui authored
183 protected!(name)
3065d77 Toshiyuki Masui RSSを吐くようにした
masui authored
184 rss(name)
185 end
186
118a2a7 Toshiyuki Masui initial version
masui authored
187 #
188 # データテキスト取得
189 #
190
191 get '/:name/*/text' do
192 name = params[:name]
1d1b9d1 Toshiyuki Masui 履歴表示のために拡張中
masui authored
193 # protected!(name)
581ec3f Toshiyuki Masui ソースを奇麗に
masui authored
194 title = params[:splat].join('/')
b241cc3 Toshiyuki Masui 久し振りにコミット... 何を直したか忘れた
masui authored
195 readdata(name,title)
118a2a7 Toshiyuki Masui initial version
masui authored
196 end
197
0ed0fea Toshiyuki Masui diff/patchを実験中
masui authored
198 get '/:name/*/text/:version' do # 古いバージョンを取得
199 name = params[:name]
200 title = params[:splat].join('/')
bdba324 Toshiyuki Masui (編集中)
masui authored
201 version = params[:version].to_i
202 readdata(name,title,version)
437594d Toshiyuki Masui editが動くようになった。ヒストリ機能を実装予定
masui authored
203 end
204
10ed306 Toshiyuki Masui Cookie関連編集中
masui authored
205 #
206 # 編集モード
207 #
581ec3f Toshiyuki Masui ソースを奇麗に
masui authored
208
437594d Toshiyuki Masui editが動くようになった。ヒストリ機能を実装予定
masui authored
209 get '/:name/*/edit' do
210 name = params[:name]
b241cc3 Toshiyuki Masui 久し振りにコミット... 何を直したか忘れた
masui authored
211 protected!(name)
581ec3f Toshiyuki Masui ソースを奇麗に
masui authored
212 title = params[:splat].join('/')
5c78a3e Toshiyuki Masui 編集ボタンで__editを呼ぶようにした。editを使わない。editはリダイレクトする。
masui authored
213 redirect "/#{name}/#{title}"
214 end
215
216 get '/:name/*/__edit' do
217 name = params[:name]
b241cc3 Toshiyuki Masui 久し振りにコミット... 何を直したか忘れた
masui authored
218 protected!(name)
5c78a3e Toshiyuki Masui 編集ボタンで__editを呼ぶようにした。editを使わない。editはリダイレクトする。
masui authored
219 title = params[:splat].join('/')
437594d Toshiyuki Masui editが動くようになった。ヒストリ機能を実装予定
masui authored
220 edit(name,title)
118a2a7 Toshiyuki Masui initial version
masui authored
221 end
222
5c78a3e Toshiyuki Masui 編集ボタンで__editを呼ぶようにした。editを使わない。editはリダイレクトする。
masui authored
223 get '/:name/*/__edit/:version' do # 古いバージョンを編集
581ec3f Toshiyuki Masui ソースを奇麗に
masui authored
224 name = params[:name]
b241cc3 Toshiyuki Masui 久し振りにコミット... 何を直したか忘れた
masui authored
225 protected!(name)
581ec3f Toshiyuki Masui ソースを奇麗に
masui authored
226 title = params[:splat].join('/')
227 version = params[:version].to_i
228 edit(name,title,version)
229 end
230
10ed306 Toshiyuki Masui Cookie関連編集中
masui authored
231 #
118a2a7 Toshiyuki Masui initial version
masui authored
232 # ページ表示
10ed306 Toshiyuki Masui Cookie関連編集中
masui authored
233 #
581ec3f Toshiyuki Masui ソースを奇麗に
masui authored
234
118a2a7 Toshiyuki Masui initial version
masui authored
235 get '/:name/*' do
f83f039 Toshiyuki Masui page.rbを追加
masui authored
236 name = params[:name] # Wikiの名前 (e.g. masui)
b241cc3 Toshiyuki Masui 久し振りにコミット... 何を直したか忘れた
masui authored
237 protected!(name)
f83f039 Toshiyuki Masui page.rbを追加
masui authored
238 title = params[:splat].join('/') # ページの名前 (e.g. TODO)
239 page(name,title)
118a2a7 Toshiyuki Masui initial version
masui authored
240 end
241
0ed0fea Toshiyuki Masui diff/patchを実験中
masui authored
242
Something went wrong with that request. Please try again.