ff1db76c192515d039b02fe733403d1a267f26ca
[mirror/dsa-puppet.git] / modules / motd / templates / motd.erb
1 <% if @lsbmajdistrelease >= '7' -%>
2 #!/bin/bash
3
4 cat <<EOD
5 <% end -%>
6
7 This device is for authorized users only.  All traffic on this device
8 is monitored and will be used as evidence for prosecutions.  By using
9 this machine you agree to abide by the Debian Machines Usage Policies
10 <URL:http://www.debian.org/devel/dmup>.
11
12 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
13
14 <%=
15 def wrap(s, width=78)
16       s.gsub(/(.{1,#{width}})(\s+|\Z)/, "\\1\n")
17 end
18
19 def markup(l)
20   l = l.gsub(/\[\[(.*?)\|(.*?)\]\]/, '\2')
21   l = l.gsub(/\[\[(\*|-)?(.*?)\]\]/, '\2')
22   return l
23 end
24
25 purp = ''
26 if scope.lookupvar('site::nodeinfo').has_key?('nameinfo')
27   purp += wrap(scope.lookupvar('site::nodeinfo')['nameinfo']) + "\n\n"
28 end
29
30 ninfo = scope.lookupvar('site::nodeinfo')
31
32 purp += 'Welcome to ' + fqdn
33 if (scope.lookupvar('site::nodeinfo')['ldap'].has_key?('purpose'))
34   p = scope.lookupvar('site::nodeinfo')['ldap']['purpose'].clone()
35   extra = ''
36
37   if p.delete('buildd')
38     purp += ", the Debian "
39     if scope.lookupvar('site::nodeinfo')['ldap'].has_key?('architecture')
40       purp += scope.lookupvar('site::nodeinfo')['ldap']['architecture'][0]
41     end
42     purp += " build daemon"
43   end
44
45   if p.delete('porterbox')
46     purp += ", the Debian "
47     if scope.lookupvar('site::nodeinfo')['ldap'].has_key?('architecture')
48       purp += scope.lookupvar('site::nodeinfo')['ldap']['architecture'][0]
49     end
50     purp += " porterbox"
51     extra += "\n"
52     if classes.include?("porterbox")
53       extra += "See 'schroot -l' for a list of available chroots.  Start new sessions\n"
54       extra += "with 'schroot --begin-session -c <chroot>', run commands in sessions using\n"
55       extra += "'schroot --run-session -c <session> [-- command]', and tear down sessions\n"
56       extra += "using 'schroot --end-session -c <session>'.  You can run a limited set of\n"
57       extra += "privileged commands, for instance some of apt-get, using\n"
58       extra += "'dd-schroot-cmd -c <session> <command>'.\n"
59       extra += "Use 'schroot --list --all-sessions' or 'schroot-list-sessions [<userglob>]'\n"
60       extra += "to list (your) open sessions.\n"
61     else
62       extra += "See 'dchroot -l' or 'schroot -l' for a list of available chroots.\n"
63       if scope.lookupvar('site::nodeinfo')['ldap'].has_key?('admin')
64         extra += "Please contact #{ninfo['ldap']['admin'][0]} for install requests,\n"
65         extra += "following the recommendations in <URL:http://dsa.debian.org/doc/install-req/>.\n"
66       end
67     end
68   end
69
70   if p.size() > 0
71     purp += ", used for the following services:\n"
72     scope.lookupvar('site::nodeinfo')['ldap']['purpose'].sort.each do |l|
73       l = markup(l)
74       purp += "\t" + l + "\n"
75     end
76   else
77     purp += ".\n"
78   end
79
80   purp += extra
81 else
82   purp += ".\n"
83 end
84
85 purp += "\n"
86
87 if (scope.lookupvar('site::nodeinfo')['ldap'].has_key?('physicalHost'))
88   if ninfo['ldap']['physicalHost'][0] =~ /ganeti/
89     phys_host = 'cluster'
90   else
91     phys_host = 'physical host'
92   end
93   purp += wrap("This virtual server runs on the #{phys_host} #{ninfo['ldap']['physicalHost'][0]}, " +
94                "which is hosted at #{ninfo['hoster']['longname']}."
95                )
96 elsif scope.lookupvar('site::nodeinfo')['hoster']['name']
97   purp += wrap("This server is hosted at #{ninfo['hoster']['longname']}.")
98 end
99
100
101 vms = []
102 scope.lookupvar('site::allnodeinfo').keys.sort.each do |node|
103   if scope.lookupvar('site::allnodeinfo')[node]['physicalHost'] and scope.lookupvar('site::allnodeinfo')[node]['physicalHost'].include?(fqdn)
104     vms << node
105   end
106 end
107 unless vms.empty?
108   purp += "\nThe following virtual machines run on this system:\n"
109   vms.each do |node|
110     purp += "\t- #{node}"
111     if scope.lookupvar('site::allnodeinfo')[node]['purpose']
112       purp += ":\n"
113       scope.lookupvar('site::allnodeinfo')[node]['purpose'].sort.each do |l|
114         l = markup(l)
115         purp += "\t    " + l + "\n"
116       end
117     else
118       purp += "\n"
119     end
120   end
121 end
122
123
124 if scope.lookupvar('::cluster').to_s != 'undefined'
125   purp += "\nThis server is a node in ganeti cluster: "
126   purp += scope.lookupvar('::cluster').to_s + ":\n"
127   purp += "\t" + scope.lookupvar('::cluster_nodes').to_s.split.sort.map{ |x| x.split('.')[0] }.join(", ") + ".\n"
128
129   if @lsbmajdistrelease >= '7'
130     purp += ""
131     purp += "\tCurrently the master node is $(cat /var/lib/ganeti/ssconf_master_node).\n"
132   end
133   #nodes = scope.lookupvar('::cluster_nodes').to_s.split.sort
134   #nodes.each do |node|
135   #  purp += "\t" + node + "\n"
136   #end
137   #nodes.reject{|node| node.eql?(fqdn)}.each do |node|
138   #  purp += "\t" + node + "\n"
139   #  scope.lookupvar('site::allnodeinfo')[node]['ipHostNumber'].each do |ip|
140   #    purp += "\t\t" + ip + "\n"
141   #  end
142   #end
143 end
144
145
146 if scope.lookupvar('site::nodeinfo').has_key?('footer')
147   purp += "\n" + wrap(scope.lookupvar('site::nodeinfo')['footer']) + "\n"
148 end
149
150 purp
151 -%>
152
153 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
154
155 <% if @lsbmajdistrelease >= '7' -%>
156 EOD
157 <% end -%>
158 <%
159 # vim:set et:
160 # vim:set sts=2 ts=2:
161 # vim:set shiftwidth=2:
162 -%>