Class: Y2Network::NetworkManager::ConnectionConfigWriters::Wireless

Inherits:
Base
  • Object
show all
Defined in:
src/lib/y2network/network_manager/connection_config_writers/wireless.rb

Overview

This class is responsible for writing the information from a ConnectionConfig::Wireless object to the underlying system.

Constant Summary collapse

DEFAULT_MODE =
"infrastructure".freeze
MODE =
{ "ad-hoc" => "ad-hoc", "master" => "ap", "managed" => "infrastructure" }.freeze

Instance Attribute Summary

Attributes inherited from Base

#file

Instance Method Summary collapse

Methods inherited from Base

#initialize, #write

Constructor Details

This class inherits a constructor from Y2Network::NetworkManager::ConnectionConfigWriters::Base

Instance Method Details

#update_file(conn) ⇒ Object

See Also:

  • ConnectionConfigWriters::Base#update_file


32
33
34
35
36
37
38
39
# File 'src/lib/y2network/network_manager/connection_config_writers/wireless.rb', line 32

def update_file(conn)
  file.connection["type"] = "wifi"
  file.wifi["ssid"] = conn.essid unless conn.essid.to_s.empty?
  file.wifi["mode"] = MODE[conn.mode] || DEFAULT_MODE
  file.wifi["channel"] = conn.channel.to_s if conn.channel

  write_auth_settings(conn)
end

#write_auth_settings(conn) ⇒ Object

Writes authentication settings

This method relies in write_*_auth_settings methods.



52
53
54
55
56
# File 'src/lib/y2network/network_manager/connection_config_writers/wireless.rb', line 52

def write_auth_settings(conn)
  auth_mode = conn.auth_mode || :open
  meth = "write_#{auth_mode}_auth_settings"
  send(meth, conn) if respond_to?(meth, true)
end

#write_eap_auth_settings(conn) ⇒ Object

Writes autentication settings for WPA-EAP networks

Parameters:



61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# File 'src/lib/y2network/network_manager/connection_config_writers/wireless.rb', line 61

def write_eap_auth_settings(conn)
  file.wifi_security["key-mgmt"] = "wpa-eap"
  section = file.section_for("802-1x")

  section["eap"] = conn.eap_mode.downcase if conn.eap_mode
  section["phase2-auth"] = conn.eap_auth if conn.eap_auth
  section["password"] = conn.wpa_password if conn.wpa_password && conn.eap_mode != "TLS"
  section["anonymous-identity"] = conn.wpa_anonymous_identity if conn.eap_mode == "TTLS"
  section["identity"] = conn.wpa_identity if conn.wpa_identity
  section["ca-cert"] = conn.ca_cert if conn.ca_cert

  return unless conn.eap_mode == "TLS"

  section["client-cert"] = conn.client_cert
  section["private-key"] = conn.client_key
  section["private-key-password"] = conn.client_key_password
end

#write_open_auth_settings(conn) ⇒ Object

Writes autentication settings for WEP networks (open auth)

Parameters:



111
112
113
114
115
116
# File 'src/lib/y2network/network_manager/connection_config_writers/wireless.rb', line 111

def write_open_auth_settings(conn)
  return unless conn.keys?

  file.wifi_security["auth-alg"] = "open"
  write_wep_auth_settings(conn)
end

#write_psk_auth_settings(conn) ⇒ Object

Writes autentication settings for WPA-PSK networks

Parameters:



82
83
84
85
86
# File 'src/lib/y2network/network_manager/connection_config_writers/wireless.rb', line 82

def write_psk_auth_settings(conn)
  file.wifi_security["key-mgmt"] = "wpa-psk"
  file.wifi_security["auth-alg"] = "open"
  file.wifi_security["psk"] = conn.wpa_psk
end

#write_shared_auth_settings(conn) ⇒ Object

Writes autentication settings for WEP networks (shared auth)

Parameters:



121
122
123
124
125
126
# File 'src/lib/y2network/network_manager/connection_config_writers/wireless.rb', line 121

def write_shared_auth_settings(conn)
  return unless conn.keys?

  file.wifi_security["auth-alg"] = "shared"
  write_wep_auth_settings(conn)
end

#write_wep_auth_settings(conn) ⇒ Object

Writes autentication settings for WEP networks

Parameters:



91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
# File 'src/lib/y2network/network_manager/connection_config_writers/wireless.rb', line 91

def write_wep_auth_settings(conn)
  file.wifi_security["key-mgmt"] = "none"
  default_key_idx = conn.default_key || 0
  file.wifi_security["wep-tx-keyidx"] = default_key_idx.to_s if !default_key_idx.zero?
  conn.keys.each_with_index do |v, i|
    next if v.to_s.empty?

    file.wifi_security["wep-key#{i}"] = v.gsub(/^[sh]:/, "")
  end
  passphrase_used = conn.keys[default_key_idx].to_s.start_with?(/h:/)
  # see https://developer.gnome.org/libnm/stable/NMSettingWirelessSecurity.html#NMWepKeyType
  # 1: Hex or ASCII, 2: 104/128-bit Passphrase
  file.wifi_security["wep-key-type"] = passphrase_used ? "2" : "1"

  true
end