[#22242] <<< hoge.rd (rd2 bug) — gotoken@... (GOTO Kentaro)

ごとけんです

20 messages 2000/05/03
[#22244] Re: <<< hoge.rd (rd2 bug) — Koji Arai <JCA02266@...> 2000/05/03

新井です。

[#22246] Re: <<< hoge.rd (rd2 bug) — gotoken@... (GOTO Kentaro) 2000/05/03

In message "[ruby-list:22244] Re: <<< hoge.rd (rd2 bug)"

[#22248] Re: <<< hoge.rd (rd2 bug) — Toshiro Kuwabara <toshirok@...3.so-net.ne.jp> 2000/05/03

Toshです。

[#22250] Re: <<< hoge.rd (rd2 bug) — gotoken@... (GOTO Kentaro) 2000/05/03

ごとけんです

[#22267] runit — Masatoshi SEKI <m_seki@...>

31 messages 2000/05/04
[#22280] Re: runit — rubikitch <rubikitch@...> 2000/05/04

From: Masatoshi SEKI <m_seki@mva.biglobe.ne.jp>

[#22281] Re: runit — Masatoshi SEKI <m_seki@...> 2000/05/05

[#22291] Re: runit — Hideto ISHIBASHI <hideto-i@...4u.or.jp> 2000/05/05

石橋秀仁です。

[#22315] Re: runit — Masatoshi SEKI <m_seki@...> 2000/05/05

[#22327] Re: runit — Hideto ISHIBASHI <hideto-i@...4u.or.jp> 2000/05/06

石橋秀仁です。

[#22275] host.conf は参照しないの? — Uechi Yasumasa <uechi@...>

ruby でホスト名から IPアドレスを得ようとすると、必ずネームサーバ

14 messages 2000/05/04

[#22325] comp.lang.ruby — matz@... (Yukihiro Matsumoto)

まつもと ゆきひろです

38 messages 2000/05/05
[#22329] Re: comp.lang.ruby — nosuzuki@... (Norio Suzuki) 2000/05/06

こんにちは。鈴木教郎です。

[#22746] Re: comp.lang.ruby — gotoken@... (GOTO Kentaro) 2000/05/19

ごとけんです

[#22785] Re: comp.lang.ruby — nosuzuki@... (Norio Suzuki) 2000/05/22

こんにちは。鈴木教郎です。

[#22787] Re: comp.lang.ruby — matz@... (Yukihiro Matsumoto) 2000/05/22

まつもと ゆきひろです

[#22791] Re: comp.lang.ruby — matz@... (Yukihiro Matsumoto) 2000/05/22

まつもと ゆきひろです

[#22795] Re: comp.lang.ruby — Takahiro Kambe <taca@...> 2000/05/22

In message <E12tsRc-0004ed-00@ev.netlab.co.jp>

[#22803] Re: comp.lang.ruby — nosuzuki@... (Norio Suzuki) 2000/05/22

こんばんは。鈴木教郎です。

[#22347] (RD) Verbatim — gotoken@... (GOTO Kentaro)

ごとけんです

30 messages 2000/05/06
[#22351] Re: (RD) Verbatim — Toshiro Kuwabara <toshirok@...3.so-net.ne.jp> 2000/05/06

Toshです。

[#22352] Re: (RD) Verbatim — gotoken@... (GOTO Kentaro) 2000/05/06

ごとけんです

[#22353] Re: (RD) Verbatim — Toshiro Kuwabara <toshirok@...3.so-net.ne.jp> 2000/05/06

Toshです。

[#22534] Re: (RD) Verbatim — gotoken@... (GOTO Kentaro) 2000/05/14

ごとけんです

[#22536] Re: (RD) Verbatim — Toshiro Kuwabara <toshirok@...3.so-net.ne.jp> 2000/05/14

Toshです。

[#22548] Re: (RD) Verbatim — gotoken@... (GOTO Kentaro) 2000/05/14

ごとけんです

[#22550] Re: (RD) Verbatim — Toshiro Kuwabara <toshirok@...3.so-net.ne.jp> 2000/05/14

Toshです。

[#22458] IO.foreach — Hiroshi SATO <hiroshi@...>

佐藤@NTTと申します.

22 messages 2000/05/11
[#22459] Re: IO.foreach — matz@... (Yukihiro Matsumoto) 2000/05/11

まつもと ゆきひろです

[#22483] p option of Regexp — Shin-ichiro Hara <sinara@...>

原です。

26 messages 2000/05/12
[#22484] Re: p option of Regexp — matz@... (Yukihiro Matsumoto) 2000/05/12

まつもと ゆきひろです

[#22485] Re: p option of Regexp — Shin-ichiro Hara <sinara@...> 2000/05/12

原です。

[#22513] Re: p option of Regexp — Koji Arai <JCA02266@...> 2000/05/13

新井です。

[#22543] Re: p option of Regexp — matz@... (Yukihiro Matsumoto) 2000/05/14

まつもと ゆきひろです

[#22547] Re: p option of Regexp — Koji Arai <JCA02266@...> 2000/05/14

新井です。

[#22575] Re: p option of Regexp — matz@... (Yukihiro Matsumoto) 2000/05/15

まつもと ゆきひろです

[#22489] M17N/I18N for Ruby — TAKAHASHI Masayoshi <maki@...>

高橋征義です。

48 messages 2000/05/12
[#22495] Re: M17N/I18N for Ruby — Kazuhiro Nishiyama <nishiyama@...1.tiki.ne.jp> 2000/05/12

TAKAHASHI Masayoshi <maki@inac.co.jp> wrote:

[#22500] Re: M17N/I18N for Ruby — TAKAHASHI Masayoshi <maki@...> 2000/05/12

高橋です。

[#22501] Re: M17N/I18N for Ruby — Toshiro Kuwabara <toshirok@...3.so-net.ne.jp> 2000/05/13

Toshです。

[#22515] Re: M17N/I18N for Ruby — gotoken@... (GOTO Kentaro) 2000/05/13

ごとけんです

[#22517] Re: M17N/I18N for Ruby — Toshiro Kuwabara <toshirok@...3.so-net.ne.jp> 2000/05/13

Toshです。

[#22518] Re: M17N/I18N for Ruby — "NAKAMURA, Hiroshi" <nakahiro@...> 2000/05/13

なひです.なぜか血が騒ぐ...^^;

[#22527] Re: M17N/I18N for Ruby — Toshiro Kuwabara <toshirok@...3.so-net.ne.jp> 2000/05/13

Toshです。

[#22528] Re: M17N/I18N for Ruby — "NAKAMURA, Hiroshi" <nakahiro@...> 2000/05/13

なひです.

[#22532] Re: M17N/I18N for Ruby — gotoken@... (GOTO Kentaro) 2000/05/14

ごとけんです

[#22537] Re: M17N/I18N for Ruby — Toshiro Kuwabara <toshirok@...3.so-net.ne.jp> 2000/05/14

Toshです。

[#22494] [Q] blade internal design — Hideto ISHIBASHI <hideto-i@...4u.or.jp>

石橋"rubyholic"秀仁です

35 messages 2000/05/12
[#22579] Re: [Q] blade internal design — Shin-ichiro Hara <sinara@...> 2000/05/15

原です。

[#22743] Re: [Q] blade internal design — Hideto ISHIBASHI <hideto-i@...4u.or.jp> 2000/05/19

石橋"rubyholic"秀仁です。

[#22744] Re: [Q] blade internal design — Takayuki YAMAGUCHI <tyamaguchi@...> 2000/05/19

やまぐちです。

[#22788] Re: [Q] blade internal design — Ryunosuke Ohshima <ryu@...> 2000/05/22

大島です。

[#22868] Re: [Q] blade internal design — Hideto ISHIBASHI <hideto-i@...4u.or.jp> 2000/05/23

石橋"rubyholic"秀仁です。

[#22870] Re: [Q] blade internal design — Toshiro Kuwabara <toshirok@...3.so-net.ne.jp> 2000/05/23

Toshです。

[#22886] Re: [Q] blade internal design — Hideto ISHIBASHI <hideto-i@...4u.or.jp> 2000/05/24

石橋"rubyholic"秀仁です。

[#22899] Re: [Q] blade internal design — Toshiro Kuwabara <toshirok@...3.so-net.ne.jp> 2000/05/24

Toshです。

[#22498] Re: M17N/I18N for Ruby — TAKAHASHI Masayoshi <maki@...>

高橋です。

19 messages 2000/05/12
[#22514] Re: M17N/I18N for Ruby — gotoken@... (GOTO Kentaro) 2000/05/13

In message "[ruby-list:22498] Re: M17N/I18N for Ruby"

[#22541] Re: M17N/I18N for Ruby — TAKAHASHI Masayoshi <maki@...> 2000/05/14

高橋征義です。

[#22554] Re: M17N/I18N for Ruby — gotoken@... (GOTO Kentaro) 2000/05/14

ごとけんです

[#22564] Re: M17N/I18N for Ruby — TAKAHASHI Masayoshi <maki@...> 2000/05/15

高橋征義です。

[#22566] Re: M17N/I18N for Ruby — gotoken@... (GOTO Kentaro) 2000/05/15

ごとけんです

[#22539] Array.concat on ruby-1.5.3 — Tokita Kousui <ktokita@...>

ども、時田です。

18 messages 2000/05/14

[#22585] =~ — NAWATE Masahiko <agul@...>

縄手@松江です。

34 messages 2000/05/15
[#22598] FYI: Ruby document (Re: =~) — gotoken@... (GOTO Kentaro) 2000/05/16

ごとけんです

[#22604] Re: FYI: Ruby document (Re: =~) — agul@... 2000/05/16

縄手@松江です。

[#22607] Re: FYI: Ruby document (Re: =~) — gotoken@... (GOTO Kentaro) 2000/05/16

ごとけんです

[#22671] assert with iterator — rubikitch <rubikitch@...>

るびきちです。

15 messages 2000/05/17
[#22751] Re: assert with iterator — Masaki Suketa <CQN02273@...> 2000/05/20

助田です。

[#22688] charset について — Shinya TOMOBE <shinya.tomobe@...>

はじめまして、友部と申します。

15 messages 2000/05/17

[#22765] postgres-0.6.0 — Noboru Saitou <noborus@...>

26 messages 2000/05/20
[#22766] Re: postgres-0.6.0 — Kentaro Inagaki / 稲垣 健太郎 <inagaki@...> 2000/05/21

稲垣です。

[#22773] Re: postgres-0.6.0 — Noboru Saitou <noborus@...> 2000/05/21

[#22844] またもや rd-mode.el — rubikitch <rubikitch@...>

るびきちです。

26 messages 2000/05/23
[#22851] Re: またもや rd-mode.el — Toshiro Kuwabara <toshirok@...3.so-net.ne.jp> 2000/05/23

Toshです。

[#22855] Re: またもや rd-mode.el — rubikitch <rubikitch@...> 2000/05/23

From: Toshiro Kuwabara <toshirok@yb3.so-net.ne.jp>

[#22864] Re: またもや rd-mode.el — Toshiro Kuwabara <toshirok@...3.so-net.ne.jp> 2000/05/23

Toshです。

[#22885] Re: またもや rd-mode.el — rubikitch <rubikitch@...> 2000/05/24

From: Toshiro Kuwabara <toshirok@yb3.so-net.ne.jp>

[#22909] Re: ツ陳、テ楪陳、ツソツ陳、テ「ツ陳、テ、 rd-mode.el — Toshiro Kuwabara <toshirok@...3.so-net.ne.jp> 2000/05/25

Toshです。

[#22911] RE: rd-mode.el — rubikitch <rubikitch@...> 2000/05/25

From: Toshiro Kuwabara <toshirok@yb3.so-net.ne.jp>

[#22912] Re: rd-mode.el — Toshiro Kuwabara <toshirok@...3.so-net.ne.jp> 2000/05/25

Toshです。

[#22914] Re: rd-mode.el — rubikitch <rubikitch@...> 2000/05/25

From: Toshiro Kuwabara <toshirok@yb3.so-net.ne.jp>

[#22923] Re: rd-mode.el — Toshiro Kuwabara <toshirok@...3.so-net.ne.jp> 2000/05/25

Toshです。

[ruby-list:22276] Access Control List

From: Masatoshi SEKI <m_seki@...>
Date: 2000-05-04 18:23:00 UTC
List: ruby-list #22276
咳といいます。

TCPServerで使用する、アクセス制御リスト(ほんとにこんな名前かしら?)を
書いてみました。Apacheで言うところの mod_access みたいのです。

本当はdRubyを実用で使うために書いたのですが、
一般化してみました。

TCPServerを使ったサーバのメインループで、クライアントの
マシン名、IPアドレスをもとにアクセスを拒否したりするのに使います。

使い方)

  acl = ACL.new(%w(deny all
                   allow 192.168.*.*
                   allow myhost.*
                   allow *.mydomain.jp
                   allow localhost))
  
  としておいて、

  ns = soc.accept
  unless acl.allow_socket?(ns)
    アクセス拒否の処理
  end
  
  hostの指示は次のものがあります。
  o 全部 … all または *
  o IPアドレス … 192.168.1.1 や 192.*.*.*, *.168.*.* など。
  o マシン名 … host.foo.bar.jp や host.*、*.bar.jp など
 

きっとへんなところがあると思います。
指摘まってますです。



#/usr/local/bin/ruby
# acl.rb - simple Access Control List
#
# $Date: 2000/05/04 15:56:42 $
# Copyright (c) 2000 Masatoshi SEKI
#
# acl.rb is copyrighted free software by Masatoshi SEKI.
# You can redistribute it and/or modify it under the same term as Ruby.

class ACL
  class ACLEntry
    def initialize(str)
      if str == '*' or str == 'all'
	@pat = [:all]
      elsif str =~ /^[0-9*]+\.[0-9*]+\.[0-9*]+\.[0-9*]+$/
	@pat = [:ip, dot_pat(str)]
      else
	@pat = [:name, dot_pat(str)]
      end
    end

    def dot_pat(str)
      list = str.split('.').collect { |s|
	(s == '*') ? '.*' : s
      }
      str = list.join("\\.")
      exp = "^" + str + "$"
      Regexp.new(exp)
    end
    private :dot_pat

    def match(addr)
      case @pat[0]
      when :all
	true
      when :ip
	@pat[1] =~ addr[3]
      when :name
	@pat[1] =~ addr[2]
      else
	nil
      end
    end
  end

  class ACLList
    def initialize
      @list = []
    end

    def match(addr)
      @list.each do |e|
	return true if e.match(addr)
      end
      false
    end

    def add(str)
      @list.push(ACLEntry.new(str))
    end
  end

  DENY_ALLOW = 0
  ALLOW_DENY = 1

  def initialize(list=nil, order = DENY_ALLOW)
    @order = order
    @deny = ACLList.new
    @allow = ACLList.new
    install_list(list) if list
  end
  attr_reader(:order, :deny, :allow)

  def allow_socket?(soc)
    allow_addr?(soc.peeraddr)
  end

  def allow_addr?(addr)
    case @order
    when DENY_ALLOW
      return true if @allow.match(addr)
      return false if @deny.match(addr)
      return true
    when ALLOW_DENY
      return false if @deny.match(addr)
      return true if @allow.match(addr)
      return false
    else
      false
    end
  end
  
  def install_list(list)
    for i in (0..(list.size/2-1))
      case list[i*2].downcase
      when 'allow'
	@allow.add(list[i*2+1])
      when 'deny'
	@deny.add(list[i*2+1])
      else
	raise "Invalid ACL entry #{list.to_s}"
      end
    end
  end
end

if __FILE__ == $0
  list = %w(deny all
	    allow 192.168.1.1
            allow 192.168.1.2)

  addr = ["AF_INET", 10, "lc630", "192.168.1.3"]
  acl = ACL.new(nil, ACL::DENY_ALLOW)
  p acl.allow_addr?(addr)
  acl.install_list(list)
  p acl.allow_addr?(addr)
  acl = ACL.new(list, ACL::DENY_ALLOW)
  p acl.allow_addr?(addr)
end

In This Thread

Prev Next