summaryrefslogtreecommitdiff
path: root/manifests/seat.pp
blob: 905503e86bacb62627db7ed0ff0b2293a5d13670 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
# @summary Seat configuration
#
# @param seat_name
#   Seat configuration is matched against the seat name glob in the
#   section, for example:
#   - `[Seat:*]` matches all seats and is applied first.
#   - `[Seat:seat0]` matches the seat named "seat0".
#   - `[Seat:seat-thin-client*]` matches all seats that have names
#     that start with "seat-thin-client".
# @param order
#   Order in resulting configuration file this should appear.
#   Probably doesn't matter.
# --------------------------------------------------
# @param type
#   Seat type (local, xremote)
# @param pam_service
#   PAM service to use for login
# @param pam_autologin_service
#   PAM service to use for autologin
# @param pam_greeter_service
#   PAM service to use for greeters
# @param xserver_command
#   X server command to run (can also contain arguments e.g. X -special-option)
# @param xmir_command
#   Xmir server command to run (can also contain arguments e.g. Xmir -special-option)
# @param xserver_config
#   Config file to pass to X server
# @param xserver_layout
#   Layout to pass to X server
# @param xserver_allow_tcp
#   True if TCP/IP connections are allowed to this X server
# @param xserver_share
#   True if the X server is shared for both greeter and session
# @param xserver_hostname
#   Hostname of X server (only for type=xremote)
# @param xserver_display_number
#   Display number of X server (only for type=xremote)
# @param xdmcp_manager
#   XDMCP manager to connect to (implies xserver_allow_tcp=true)
# @param xdmcp_port
#   XDMCP UDP/IP port to communicate on
# @param xdmcp_key
#   Authentication key to use for XDM-AUTHENTICATION-1 (stored in keys.conf)
# @param greeter_session
#   Session to load for greeter
# @param greeter_hide_users
#   True to hide the user list
# @param greeter_allow_guest
#   True if the greeter should show a guest login option
# @param greeter_show_manual_login
#   True if the greeter should offer a manual login option
# @param greeter_show_remote_login
#   True if the greeter should offer a remote login option
# @param user_session
#   Session to load for users
# @param allow_user_switching
#   True if allowed to switch users
# @param allow_guest
#   True if guest login is allowed
# @param guest_session
#   Session to load for guests (overrides user_session)
# @param session_wrapper
#   Wrapper script to run session with
# @param greeter_wrapper
#   Wrapper script to run greeter with
# @param guest_wrapper
#   Wrapper script to run guest sessions with
# @param display_setup_script
#   Script to run when starting a greeter session (runs as root)
# @param display_stopped_script
#   Script to run after stopping the display server (runs as root)
# @param greeter_setup_script
#   Script to run when starting a greeter (runs as root)
# @param session_setup_script
#   Script to run when starting a user session (runs as root)
# @param session_cleanup_script
#   Script to run when quitting a user session (runs as root)
# @param autologin_guest
#   True to log in as guest by default
# @param autologin_user
#   User to log in with by default (overrides autologin_guest)
# @param autologin_user_timeout
#   Number of seconds to wait before loading default user
# @param autologin_session
#   Session to load for automatic login (overrides user_session)
# @param autologin_in_background
#   True if autologin session should not be immediately activated
# @param exit_on_failure
#   True if the daemon should exit if this seat fails
define lightdm::seat (
  Enum['local', 'xremote'] $type = 'local',
  Optional[String] $pam_service = undef,
  Optional[String] $pam_autologin_service = undef,
  Optional[String] $pam_greeter_service = undef,
  Optional[String] $xserver_command = undef,
  Optional[String] $xmir_command = undef,
  Optional[String] $xserver_config = undef,
  Optional[String] $xserver_layout = undef,
  Optional[Boolean] $xserver_allow_tcp = undef,
  Optional[Boolean] $xserver_share = undef,
  Optional[String] $xserver_hostname = undef,
  Optional[Integer] $xserver_display_number = undef,
  Optional[String] $xdmcp_manager = undef,
  Optional[Stdlib::Port] $xdmcp_port = undef,
  # TODO sensitive on this?
  Optional[String] $xdmcp_key = undef,
  Optional[String] $greeter_session = undef,
  Optional[Boolean] $greeter_hide_users = undef,
  Optional[Boolean] $greeter_allow_guest = undef,
  Optional[Boolean] $greeter_show_manual_login = undef,
  Optional[Boolean] $greeter_show_remote_login = undef,
  Optional[String] $user_session = undef,
  Optional[Boolean] $allow_user_switching = undef,
  Optional[Boolean] $allow_guest = undef,
  Optional[String] $guest_session = undef,
  String $session_wrapper = '/etc/lightdm/Xsession',
  Optional[String] $greeter_wrapper = undef,
  Optional[String] $guest_wrapper = undef,
  Optional[String] $display_setup_script = undef,
  Optional[String] $display_stopped_script = undef,
  Optional[String] $greeter_setup_script = undef,
  Optional[String] $session_setup_script = undef,
  Optional[String] $session_cleanup_script = undef,
  Optional[Boolean] $autologin_guest = undef,
  Optional[String] $autologin_user = undef,
  Optional[Integer] $autologin_user_timeout = undef,
  Optional[String] $autologin_session = undef,
  Optional[Boolean] $autologin_in_background = undef,
  Optional[Boolean] $exit_on_failure = undef,

  String $seat_name = $name,
  Integer[0] $order = 0,
) {
  if $order > $lightdm::conf::seat_fragment_max - $lightdm::conf::seat_fragment_min {
    fail("order (${order}) outside allowed range")
  }

  $conf = {
    'type'                      => $type,
    'pam-service'               => $pam_service,
    'pam-autologin-service'     => $pam_autologin_service,
    'pam-greeter-service'       => $pam_greeter_service,
    'xserver-command'           => $xserver_command,
    'xmir-command'              => $xmir_command,
    'xserver-config'            => $xserver_config,
    'xserver-layout'            => $xserver_layout,
    'xserver-allow-tcp'         => $xserver_allow_tcp,
    'xserver-share'             => $xserver_share,
    'xserver-hostname'          => $xserver_hostname,
    'xserver-display-number'    => $xserver_display_number,
    'xdmcp-manager'             => $xdmcp_manager,
    'xdmcp-port'                => $xdmcp_port,
    'xdmcp-key'                 => $xdmcp_key,
    'greeter-session'           => $greeter_session,
    'greeter-hide-users'        => $greeter_hide_users,
    'greeter-allow-guest'       => $greeter_allow_guest,
    'greeter-show-manual-login' => $greeter_show_manual_login,
    'greeter-show-remote-login' => $greeter_show_remote_login,
    'user-session'              => $user_session,
    'allow-user-switching'      => $allow_user_switching,
    'allow-guest'               => $allow_guest,
    'guest-session'             => $guest_session,
    'session-wrapper'           => $session_wrapper,
    'greeter-wrapper'           => $greeter_wrapper,
    'guest-wrapper'             => $guest_wrapper,
    'display-setup-script'      => $display_setup_script,
    'display-stopped-script'    => $display_stopped_script,
    'greeter-setup-script'      => $greeter_setup_script,
    'session-setup-script'      => $session_setup_script,
    'session-cleanup-script'    => $session_cleanup_script,
    'autologin-guest'           => $autologin_guest,
    'autologin-user'            => $autologin_user,
    'autologin-user-timeout'    => $autologin_user_timeout,
    'autologin-session'         => $autologin_session,
    'autologin-in-background'   => $autologin_in_background,
    'exit-on-failure'           => $exit_on_failure,
  }

  concat::fragment { "lightdm - config - seat - ${seat_name}":
    target  => $lightdm::config::filename,
    order   => 20 + $order,
    content => {
      sections => { "Seat:${seat_name}" => $conf },
    },
  }
}