Class: SleipnirAPI::Security

Inherits:
Object
  • Object
show all
Includes:
Enumerable, Util
Defined in:
lib/sleipnir_api/security.rb

Overview

このクラスは Sleipnir の COM オブジェクト (Sleipnir.API) の wrapper クラスです。Sleipnir のタブ毎のセキュリティ設定を操作する API を定義しています。

  • このオブジェクトは SleipnirAPI::Tab#security で取得します。

  • このクラスは Enumerable を include しています。

セキュリティ設定はハッシュ、シンボル、属性などでアクセスできます。

例:

pnir = SleipnirAPI.connect
tab = pnir.active_tab

# セキュリティ設定の取得 (すべて同じ意味)
tab.security.javascript.enable?
tab.security[:javascript].enable?
tab.security.enable?(:javascript)
tab.security.to_hash[:javascript]

# セキュリティ設定の更新 (すべて同じ意味)
tab.security.javascript.enable!
tab.security(:javascript).enable!
tab.security.set_security(:javascript => true)

# Enumerable method
tab.security.find_all{|e| e.disable? }

セキュリティ名は以下のシンボルを指定できます。

  • :javascript

  • :java

  • :run_activex

  • :download_activex

  • :picture

  • :sound

  • :video

セキュリティ名の一覧は #keys で取得できます。

Defined Under Namespace

Classes: Config

Constant Summary collapse

NAME2API =
[
  [:javascript,       :IsJavaScriptEnabled],
  [:java,             :IsJavaEnabled],
  [:run_activex,      :IsRunActiveXEnabled],
  [:download_activex, :IsDownloadActiveXEnabled],
  [:picture,          :IsPictureEnabled],
  [:sound,            :IsSoundEnabled],
  [:video,            :IsVideoEnabled],
]

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Util

#api, #ensure_version, #join_keyword

Constructor Details

#initialize(tab) ⇒ Security

Returns a new instance of Security.



143
144
145
146
147
148
# File 'lib/sleipnir_api/security.rb', line 143

def initialize(tab)
  @tab = tab
  NAME2API.each do |name, api|
    instance_variable_set("@#{name}", Config.new(self, tab, name, api))
  end
end

Instance Attribute Details

#download_activexObject (readonly)

「ActiveX のダウンロード」をあらわす SleipnirAPI::Security::Config



132
133
134
# File 'lib/sleipnir_api/security.rb', line 132

def download_activex
  @download_activex
end

#javaObject (readonly)

「Java の実行」をあらわす SleipnirAPI::Security::Config



126
127
128
# File 'lib/sleipnir_api/security.rb', line 126

def java
  @java
end

#javascriptObject (readonly)

「JavaScript の実行」をあらわす SleipnirAPI::Security::Config



123
124
125
# File 'lib/sleipnir_api/security.rb', line 123

def javascript
  @javascript
end

#pictureObject (readonly)

「画像の再生」をあらわす SleipnirAPI::Security::Config



135
136
137
# File 'lib/sleipnir_api/security.rb', line 135

def picture
  @picture
end

#run_activexObject (readonly)

「ActiveX の実行」をあらわす SleipnirAPI::Security::Config



129
130
131
# File 'lib/sleipnir_api/security.rb', line 129

def run_activex
  @run_activex
end

#soundObject (readonly)

「サウンドの再生」をあらわす SleipnirAPI::Security::Config



138
139
140
# File 'lib/sleipnir_api/security.rb', line 138

def sound
  @sound
end

#videoObject (readonly)

「ビデオの再生」をあらわす SleipnirAPI::Security::Config



141
142
143
# File 'lib/sleipnir_api/security.rb', line 141

def video
  @video
end

Instance Method Details

#[](name) ⇒ Object

指定された名前のセキュリティ設定を取得します。

以下の値を指定可能です。不正な値を指定した場合は nil を返します。

  • :javascript

  • :java

  • :run_activex

  • :download_activex

  • :picture

  • :sound

  • :video

取得できる値は同名の attribute と同じです。

tab = pnir.active_tab
tab.security[:javascript] #=> #<SleipnirAPI::Security::Config:0x2995190 javascript=true>
tab.security.javascript   #=> #<SleipnirAPI::Security::Config:0x2995190 javascript=true>


179
180
181
182
183
# File 'lib/sleipnir_api/security.rb', line 179

def [](name)
  if keys.include?(name)
    instance_variable_get("@#{name}")
  end
end

#disable!(*names) ⇒ Object

指定された名前のセキュリティ設定をすべて無効にします。

引数に :all を指定するとすべてのセキュリティ設定を無効にします。

tab.security.disable!(:javascript)
tab.security.disable!(:picture, :sound, :video)
tab.security.disable!(:all)


265
266
267
# File 'lib/sleipnir_api/security.rb', line 265

def disable!(*names)
  set!(false, *names)
end

#disable?(*names) ⇒ Boolean

指定された名前のセキュリティ設定がすべて無効なら true を返します。

引数に :all を指定するとすべてのセキュリティ設定が無効なら true を返します。

tab.security.disable?(:javascript)
tab.security.disable?(:picture, :sound, :video)
tab.security.disable?(:all)

Returns:

  • (Boolean)


240
241
242
243
# File 'lib/sleipnir_api/security.rb', line 240

def disable?(*names)
  names = parse_name(*names)
  names.all?{|name| self[name].disable? }
end

#each(&block) ⇒ Object

call-seq:

each {|security_config| ... }

すべてのセキュリティ設定を走査します。

block の引数には SleipnirAPI::Security::Config オブジェクトが渡されます。



191
192
193
# File 'lib/sleipnir_api/security.rb', line 191

def each(&block)
  keys.map{|e| self[e] }.each(&block)
end

#enable!(*names) ⇒ Object

指定された名前のセキュリティ設定をすべて有効にします。

引数に :all を指定するとすべてのセキュリティ設定を有効にします。

tab.security.enable!(:javascript)
tab.security.enable!(:picture, :sound, :video)
tab.security.enable!(:all)


253
254
255
# File 'lib/sleipnir_api/security.rb', line 253

def enable!(*names)
  set!(true, *names)
end

#enable?(*names) ⇒ Boolean

指定された名前のセキュリティ設定がすべて有効なら true を返します。

引数に :all を指定するとすべてのセキュリティ設定が有効なら true を返します。

tab.security.enable?(:javascript)
tab.security.enable?(:picture, :sound, :video)
tab.security.enable?(:all)

Returns:

  • (Boolean)


227
228
229
230
# File 'lib/sleipnir_api/security.rb', line 227

def enable?(*names)
  names = parse_name(*names)
  names.all?{|name| self[name].enable? }
end

#get_securityObject Also known as: to_hash

セキュリティ設定をハッシュで取得します。



214
215
216
# File 'lib/sleipnir_api/security.rb', line 214

def get_security
  inject({}) {|h,conf| h[conf.name] = conf.enable?; h }
end

#inspectObject Also known as: to_s



287
288
289
# File 'lib/sleipnir_api/security.rb', line 287

def inspect
  "#<%s:0x%x %s>" % [self.class, self.object_id << 1, to_hash.inspect ]
end

#keysObject

セキュリティ設定の名前 (シンボル) を配列で返します。

この名前は [], #set_security, #enable?, #disable? などに指定できます。

pnir.active_tab.security.keys
#=> [:javascript, :java, :run_activex, :download_activex, :picture, :sound, :video]


157
158
159
# File 'lib/sleipnir_api/security.rb', line 157

def keys
  NAME2API.map{|e| e.first }
end

#set_security(opts) ⇒ Object Also known as: update

call-seq:

set_security(:javascript => true_or_false,
             :java => true_or_false,
             :run_activex => true_or_false,
             :download_activex => true_or_false,
             :picture => true_or_false,
             :sound => true_or_false,
             :video => true_or_false)

セキュリティ設定をハッシュで指定して更新します。



206
207
208
209
210
# File 'lib/sleipnir_api/security.rb', line 206

def set_security(opts)
  security = to_hash
  security.update(opts)
  api.SetSecurity(@tab.id, *(keys.map{|e| security[e] }))
end

#sleipnirObject

SleipnirAPI::Sleipnir object



293
294
295
# File 'lib/sleipnir_api/security.rb', line 293

def sleipnir
  @tab.sleipnir
end