Class: Y2Remote::Remote

Inherits:
Object
  • Object
show all
Includes:
Singleton, Yast::I18n, Yast::Logger
Defined in:
src/lib/y2remote/remote.rb

Constant Summary collapse

GRAPHICAL_TARGET =
"graphical".freeze
FIREWALL_SERVICES =
["tigervnc", "tigervnc-https"].freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeRemote

Constructor



44
45
46
47
48
49
50
51
# File 'src/lib/y2remote/remote.rb', line 44

def initialize
  import_modules

  textdomain "network"

  @modes = []
  @proposed = false
end

Instance Attribute Details

#modesObject (readonly)

List of Y2Remote::Modes::Base subclasses that are the enabled VNC running modes



36
37
38
# File 'src/lib/y2remote/remote.rb', line 36

def modes
  @modes
end

#proposedObject Also known as: proposed?

[Boolean] whether the configuration has been proposed or not



39
40
41
# File 'src/lib/y2remote/remote.rb', line 39

def proposed
  @proposed
end

Instance Method Details

#configure_display_managerBoolean

Updates the VNC and xdm configuration

Called from #write. Ensures that required packages are installed, enables vnc services and xdm and writes the configuration files, reporting any error in the process.

Returns:

  • (Boolean)

    true if success, false otherwise



158
159
160
161
162
163
164
165
# File 'src/lib/y2remote/remote.rb', line 158

def configure_display_manager
  if enabled? && !Yast::Package.InstallAll(required_packages)
    log.error "Installing of required packages failed"
    return false
  end
  Y2Remote::Modes.update_status(modes)
  display_manager.write_remote_access(enabled?)
end

#disable!Array<Y2Remote::Mode>

Removes all the running modes

Returns:

  • (Array<Y2Remote::Mode>)


81
82
83
# File 'src/lib/y2remote/remote.rb', line 81

def disable!
  @modes = []
end

#disabled?Boolean

Checks if remote administration is currently disallowed

Returns:

  • (Boolean)


74
75
76
# File 'src/lib/y2remote/remote.rb', line 74

def disabled?
  modes.empty?
end

#display_managerObject



99
100
101
# File 'src/lib/y2remote/remote.rb', line 99

def display_manager
  @display_manager ||= Y2Remote::DisplayManager.instance
end

#enable!Object

Enables the Y2Remote::Modes::VNC mode



59
60
61
# File 'src/lib/y2remote/remote.rb', line 59

def enable!
  enable_mode!(Y2Remote::Modes::VNC.instance)
end

#enable_manager!Object

Enables the Y2Remote::Modes::Manager mode



64
65
66
# File 'src/lib/y2remote/remote.rb', line 64

def enable_manager!
  enable_mode!(Y2Remote::Modes::Manager.instance)
end

#enable_web!Object

Enables the Y2Remote::Modes::Web mode



69
70
71
# File 'src/lib/y2remote/remote.rb', line 69

def enable_web!
  enable_mode!(Y2Remote::Modes::Web.instance)
end

#enabled?Boolean

Checks if remote administration is currently allowed

Returns:

  • (Boolean)


54
55
56
# File 'src/lib/y2remote/remote.rb', line 54

def enabled?
  !disabled?
end

#propose!Boolean

Propose the vnc configuration if it has not been proposed yet

Returns:

  • (Boolean)


143
144
145
146
147
148
149
# File 'src/lib/y2remote/remote.rb', line 143

def propose!
  return false if proposed?

  Yast::Linuxrc.vnc ? enable_vnc! : disable!
  log.info("Remote Administration was proposed as: #{modes.inspect}")
  @proposed = true
end

#readBoolean

Read the current status of vnc and the enabled modes

Returns:

  • (Boolean)

    true



106
107
108
109
110
111
112
# File 'src/lib/y2remote/remote.rb', line 106

def read
  return true unless display_manager.remote_access?

  @modes = Y2Remote::Modes.running_modes

  true
end

#reset!Object

Reset the proposal configuration enabling vnc if it was enabled by linuxrc



134
135
136
137
138
# File 'src/lib/y2remote/remote.rb', line 134

def reset!
  @proposed = false

  propose!
end

#restart_servicesObject

Restarts services, reporting errors to the user



168
169
170
171
172
173
# File 'src/lib/y2remote/remote.rb', line 168

def restart_services
  Yast2::Systemd::Target.set_default(GRAPHICAL_TARGET) if enabled?
  Y2Remote::Modes.restart_modes(modes)

  display_manager.restart if enabled?
end

#summaryString

Return a summary of the current remote configuration

Returns:

  • (String)

    summary text



178
179
180
181
182
# File 'src/lib/y2remote/remote.rb', line 178

def summary
  return _("Remote administration is enabled.") if enabled?

  _("Remote administration is disabled.")
end

#web_enabled?Boolean

Whether some of the VNC running modes is Web or not

Returns:

  • (Boolean)

    true if web is enabled; false otherwise



88
89
90
# File 'src/lib/y2remote/remote.rb', line 88

def web_enabled?
  modes.include?(Y2Remote::Modes::Web.instance)
end

#with_manager?Boolean

Whether the vnc manager mode is enabled or not

Returns:

  • (Boolean)

    true it the :manager mode is enabled



95
96
97
# File 'src/lib/y2remote/remote.rb', line 95

def with_manager?
  modes.include?(Y2Remote::Modes::Manager.instance)
end

#writeBoolean

Update the SCR according to vnc settings

Returns:

  • (Boolean)

    true on success



117
118
119
120
121
122
123
124
125
126
127
128
129
130
# File 'src/lib/y2remote/remote.rb', line 117

def write
  configure_write_steps

  next_stage(_("Configuring display manager..."))
  return false unless configure_display_manager

  if Yast::Mode.normal
    next_stage(_("Restarting the service..."))
    restart_services
    next_stage
  end

  true
end