Changeset 2826 for lang/ruby/ssb

Show
Ignore:
Timestamp:
12/08/07 02:57:53 (13 months ago)
Author:
coji
Message:

lang/ruby/ssb: refactor configuration, about:blank URI, cleaned up HTML and remove some trashes.

Location:
lang/ruby/ssb/trunk
Files:
9 modified

Legend:

Unmodified
Added
Removed
  • lang/ruby/ssb/trunk/config/common.rb

    r2455 r2826  
    1919  CONFIG[:config_file] = File.join(SSB::CONFIG[:config_dir], 'config.yaml') 
    2020  CONFIG[:dat_dir] = File.join(SSB::CONFIG[:home_dir], 'dat') 
    21   CONFIG[:default_uri] = 'http://localhost/' 
     21 
     22  @@config = nil 
     23 
     24  def self.config(force_reload = false) 
     25    if @@config.nil? or force_reload 
     26      begin 
     27        File.open(SSB::CONFIG[:config_file]) do |f| 
     28          @@config = YAML.load(f.read.untaint) 
     29        end 
     30      rescue =>e 
     31        @@config = {} 
     32      end 
     33    end 
     34 
     35    # useragent/homepage だけは設定がなくてもデフォルトで入れる 
     36    @@config['default'] ||= {} 
     37    @@config['default']['useragent'] ||= 'DoCoMo/2.0 P905i' unless @@config['useragent'] 
     38    @@config['default']['homepage'] ||= 'about:blank' 
     39 
     40    @@config 
     41  end 
    2242end 
    2343 
    2444$LOAD_PATH.concat SSB::CONFIG[:library_dir].map{|d| File.join(SSB::CONFIG[:home_dir], d)} 
    25  
  • lang/ruby/ssb/trunk/config/config.yaml.default

    r1865 r2826  
    11default: 
    2   useragent: "DoCoMo/2.0 F900iT(c100;TB;W22H12)" 
     2  useragent: "DoCoMo/2.0 P905i" 
    33  uid: "010000000000" 
    44  hid: "ser000000000000000" 
    55  icc: "icc000000000000000" 
    6  
     6  homepage: 'about:blank' 
     7  exheader:  
     8  mailaddr:  
  • lang/ruby/ssb/trunk/libs/ssb.rb

    r2824 r2826  
    33# Author:: MIZOGUCHI Coji <mizoguchi.coji at gmail.com> 
    44# License:: Distributes under the same terms as Ruby 
    5  # 
     5# 
    66# $Id$ 
    77# 
     
    2020  class Application 
    2121    def initialize 
     22      SSB::config 
    2223      @time_stamp = SSB::TimeStamper.new({ 
    2324                                         :request_time => [:request_start, :request_finish], 
     
    115116 
    116117    def output_template(request_uri, response, term, page, source, res) 
    117       tpl_file = 'ssb.rhtml' 
    118       template = open(File.join(SSB::CONFIG[:template_dir], tpl_file)).read.untaint 
    119  
    120118      # レスポンスヘッダ 
    121119      response_header = {} 
    122120      response.each do |k,v| 
    123121        response_header[k] = v 
    124       end 
     122      end unless response.nil? 
    125123 
     124      # filter: 元の文字コードで 
    126125      page = SSB::Application.filter_html(page, request_uri, term, response) 
    127126 
     127      # SJIS等からUTF-8へ 
    128128      page = NKF::nkf('-w', page) 
    129129 
     
    139139 
    140140      begin 
     141        template = open(File.join(SSB::CONFIG[:template_dir], 'ssb.rhtml')).read.untaint 
    141142        erb = ERB.new(template) 
    142143        res.body = erb.result(binding) 
  • lang/ruby/ssb/trunk/libs/ssb/misc.rb

    r2296 r2826  
    1919    # 端末情報の読み込み cookie or config.yaml 
    2020    def self.load_terminal_info(cookies) 
    21       # cookie をフラットに 
    22       params = { } 
     21      params = SSB::config['default'].dup 
     22 
    2323      cookies.each do |cookie| 
    24         params[cookie.name] = URI.unescape(cookie.value.untaint) 
     24        params[cookie.name.dup.untaint] = URI.unescape(cookie.value.untaint) 
    2525      end 
    2626 
    27       if params.has_key?('useragent') 
    28         term = params 
    29       else 
    30         specs = YAML.load(open(SSB::CONFIG[:config_file]).read.untaint) 
    31         term = specs['default'] 
    32       end 
    33  
    34       spec = SSB::KtaiSpec.new({ :useragent => term['useragent'], 
    35                                  :uid       => term['uid'], 
    36                                  :hid       => term['hid'], 
    37                                  :icc       => term['icc'], 
    38                                  :exheader  => term['exheader'], 
    39                                }) 
    40  
    41       spec[:homepage] = params['homepage'] 
    42       spec[:mailaddr] = params['mailaddr'] 
    43  
    44       return spec 
     27      return SSB::KtaiSpec.new(params) 
    4528    end 
    4629  end 
  • lang/ruby/ssb/trunk/libs/ssb/qrcode.rb

    r2455 r2826  
    2828      $KCODE = '' 
    2929      q = ::Qrcode.new 
    30       if q.respond_to?('make_qrcode') 
    31         qrcode = q.make_qrcode(str) 
    32       else 
     30      begin 
    3331        qrcode = '' 
     32        qrcode = q.make_qrcode(str) if q.respond_to?('make_qrcode') 
     33      ensure 
     34        $KCODE = saved_kcode 
     35        return qrcode 
    3436      end 
    35       $KCODE = saved_kcode 
    36       return qrcode 
    3737    end 
    3838  end 
  • lang/ruby/ssb/trunk/libs/ssb/request.rb

    r2816 r2826  
    5555    def execute 
    5656      response = nil 
     57      return nil if @uri.scheme == 'about' 
    5758 
    5859      http = http_class(@http_proxy).new(@uri.host, @uri.port) 
     
    9394      end 
    9495 
    95       uri_base = SSB::CONFIG[:default_uri] if uri_base.nil? || uri_base == '' 
    96       uri_base = 'http://' + uri_base unless uri_base =~ %r|https?://| 
     96      uri_base = SSB::config['default']['homepage'] unless uri_base 
     97      uri_base = 'http://' + uri_base unless uri_base =~ %r[https?://|about:blank] 
    9798 
    9899      begin 
  • lang/ruby/ssb/trunk/public_html/stylesheets/ssb.css

    r2653 r2826  
    192192 
    193193#client #sidebar #pane_setting #term_form { 
    194   font-size: x-small; 
    195 } 
    196  
    197 #client #sidebar #pane_setting #termform fieldset.input_fields { 
    198   text-align: left; 
    199 } 
    200  
    201 #client #sidebar #pane_setting #term_form span.warning { 
    202   color: red; 
    203   font-size: x-small; 
     194  font-size: small; 
     195  margin: 4px; 
     196} 
     197 
     198#client #sidebar #pane_setting #term_form fieldset { 
     199  border: none; 
     200} 
     201 
     202#client #sidebar #pane_setting #term_form fieldset hr { 
     203  margin: 2px; 
     204  border: solid 1px gray; 
     205} 
     206 
     207#client #sidebar #pane_setting #term_form fieldset#term_input_field table { 
     208  width: 100%; 
     209} 
     210 
     211#client #sidebar #pane_setting #term_form fieldset#term_input_field td.term_param_input input, 
     212#client #sidebar #pane_setting #term_form fieldset#term_input_field td.term_param_input textarea { 
     213  width: 99%; 
     214} 
     215 
     216#client #sidebar #pane_setting #term_form fieldset#term_control_panel { 
     217  text-align: center; 
     218  margin-top: 20px; 
    204219} 
    205220 
  • lang/ruby/ssb/trunk/templates/ssb.rhtml

    r2704 r2826  
    131131      <div id="pane_setting" class="pane pane_close"> 
    132132        <form id="term_form" action=""> 
    133           <fieldset class="input_fields"> 
     133          <fieldset id="term_input_field"> 
    134134            <table> 
    135135              <tr> 
    136                 <td><p>ホームページ</p></td> 
    137                 <td><input id="field_homepage" type="text" size="50" name="homepage" value="<%= term[:homepage] %>"/></td> 
    138               </tr> 
    139               <tr> 
    140                 <td><p>メールアドレス</p></td> 
    141                 <td><input id="field_mailaddr" type="text" size="50" name="mailaddr" value="<%= term[:mailaddr] %>"/><br /><span class="warning">入力したメールアドレスが正しいか必ず確認してください。アドレスが偶然無関係のユーザのものになると、情報漏洩の可能性があります。</span></td> 
    142               </tr> 
    143               <tr> 
    144                 <td><hr /></td><td></td> 
    145               </tr> 
    146               <tr> 
    147                 <td><p>User-Agent</p></td> 
    148                 <td><input id="field_useragent" type="text" size="50" name="useragent" value="<%= term[:useragent] %>"/></td> 
    149               </tr> 
    150               <tr> 
    151                 <td><p>UID</p></td> 
    152                 <td><input id="field_uid" type="text" size="50" name="uid" value="<%= term[:uid] %>" /><br /><span class="warning">入力したUIDが正しいか必ず確認してください。適当に入れると偶然無関係の一般ユーザと認識される可能性があり、危険です。</span></td> 
    153               </tr> 
    154               <tr> 
    155                 <td><hr /></td> 
    156                 <td></td> 
    157               </tr> 
    158               <tr> 
    159                 <td><p>端末ID / HID</p></td> 
    160                 <td><input id="field_hid" type="text" size="50" name="hid" value="<%= term[:hid] %>" /></td> 
    161               </tr> 
    162               <tr> 
    163                 <td><p>FOMAカードID</p></td> 
    164                 <td><input id="field_icc" type="text" size="50" name="icc" value="<%= term[:icc] %>" /></td> 
    165               </tr> 
    166               <tr> 
    167                 <td><hr /></td> 
    168                 <td></td> 
    169               </tr> 
    170               <tr> 
    171                 <td><p>拡張リクエストヘッダ</p></td> 
    172                 <td><textarea id="field_exheader" cols="50" rows="5" name="exheader"><%= term[:exheader] %></textarea></td> 
     136                <td class="term_param_label">ホームページ</td> 
     137                <td class="term_param_input"><input id="field_homepage" type="text" size="50" name="homepage" value="<%= term[:homepage] %>"/></td> 
     138              </tr> 
     139              <tr> 
     140                <td class="term_param_label">メールアドレス</td> 
     141                <td class="term_param_input"> 
     142                                  <input id="field_mailaddr" type="text" size="50" name="mailaddr" value="<%= term[:mailaddr] %>"/> 
     143                                </td> 
     144              </tr> 
     145              <tr> 
     146                <td class="term_param_label"><hr /></td> 
     147                                <td class="term_param_input"></td> 
     148              </tr> 
     149              <tr> 
     150                <td class="term_param_label">User-Agent</td> 
     151                <td class="term_param_input"><input id="field_useragent" type="text" size="50" name="useragent" value="<%= term[:useragent] %>"/></td> 
     152              </tr> 
     153              <tr> 
     154                <td class="term_param_label"><hr /></td> 
     155                <td class="term_param_input"></td> 
     156              </tr> 
     157              <tr> 
     158                <td class="term_param_label">UID</td> 
     159                <td class="term_param_input"><input id="field_uid" type="text" size="50" name="uid" value="<%= term[:uid] %>" /></td> 
     160              </tr> 
     161              <tr> 
     162                <td class="term_param_label">端末ID / HID</td> 
     163                <td class="term_param_input"><input id="field_hid" type="text" size="50" name="hid" value="<%= term[:hid] %>" /></td> 
     164              </tr> 
     165              <tr> 
     166                <td class="term_param_label">FOMAカードID</td> 
     167                <td class="term_param_input"><input id="field_icc" type="text" size="50" name="icc" value="<%= term[:icc] %>" /></td> 
     168              </tr> 
     169              <tr> 
     170                <td class="term_param_label"><hr /></td> 
     171                <td class="term_param_input"></td> 
     172              </tr> 
     173              <tr> 
     174                <td class="term_param_label">拡張リクエストヘッダ</td> 
     175                <td class="term_param_input"><textarea id="field_exheader" cols="50" rows="5" name="exheader"><%= term[:exheader] %></textarea></td> 
    173176              </tr> 
    174177            </table> 
    175178          </fieldset> 
    176  
    177           <fieldset class="control_panel"> 
     179          <fieldset id="term_control_panel"> 
    178180            <input type="submit" name="action" value="save" /> ケータイ設定をcookieに保存する 
    179181            <input type="reset" name="action" value="clear" /> cookieを消去して初期設定に戻す 
  • lang/ruby/ssb/trunk/test/request_test.rb

    r2822 r2826  
    105105  end 
    106106 
     107  test 'about:blank uri' do 
     108    @request = SSB::Request.new('GET', {'ssb_q'.taint, 'about:blank'.taint}, cookie) 
     109    assert_not_nil(@request.uri) 
     110    assert_instance_of(URI::Generic, @request.uri) 
     111    assert_equal(@request.uri.scheme, 'about') 
     112    assert_equal(@request.uri.opaque, 'blank') 
     113  end 
     114 
    107115  test 'test_request_should_success' do 
    108116    mock_server = MockServer.new