Contents of /alx-src/tags/alxconf_20051011_2/alxconfig-ng/init.d/alxsettings
Parent Directory | Revision Log
Revision 360 -
(show annotations)
(download)
Mon Oct 10 21:19:09 2005 UTC (18 years, 11 months ago) by (unknown author)
File size: 22752 byte(s)
Mon Oct 10 21:19:09 2005 UTC (18 years, 11 months ago) by (unknown author)
File size: 22752 byte(s)
This commit was manufactured by cvs2svn to create tag 'alxconf_20051011_2'.
1 | #!/bin/bash |
2 | |
3 | # <niro@magellan-linux.de> |
4 | |
5 | #%rlevels: 7:s 0:k 6:k |
6 | #%start: 41 |
7 | #%stop: 01 |
8 | |
9 | #deps |
10 | #%needs: |
11 | #%before: |
12 | #%after: |
13 | |
14 | # $Header: /home/cvsd/alx-cvs/alx-src/alxconfig-ng/init.d/alxsettings,v 1.26 2005-10-10 21:19:08 niro Exp $ |
15 | |
16 | # checks first if the client was already configured and if it has an valid serial |
17 | # if not it runs the autoconfiguration script |
18 | # these settings will be used for client setup |
19 | # |
20 | # if client was valid it first will check if his settings against the server |
21 | # if no changes are at server side they will be kept, if yes the get updated. |
22 | # the server settings has higher priority. |
23 | |
24 | source /etc/sysconfig/rc |
25 | source $rc_functions |
26 | |
27 | # mysql settings |
28 | source /etc/alxconfig-ng/config.rc |
29 | |
30 | # helper functions |
31 | source /usr/lib/alxconfig-ng/functions/mysqlfunctions |
32 | source /usr/lib/alxconfig-ng/functions/serial_functions |
33 | source /usr/lib/alxconfig-ng/functions/config_modules |
34 | source /usr/lib/alxconfig-ng/functions/config_network |
35 | source /usr/lib/alxconfig-ng/functions/config_printers |
36 | source /usr/lib/alxconfig-ng/functions/config_sessions |
37 | source /usr/lib/alxconfig-ng/functions/config_x11 |
38 | source /usr/lib/alxconfig-ng/functions/config_auth |
39 | source /usr/lib/alxconfig-ng/functions/config_ssh_auth |
40 | |
41 | # check if mysql is available |
42 | [ -x /usr/bin/mysql ] && MYSQL_ALX=true |
43 | |
44 | # other needed vars |
45 | ALX_HW_DETECT=false |
46 | ALX_FORCED_RECHECK=false |
47 | ALX_RESET_SETTINGS=false |
48 | ALX_CONFD_NETWORKING=false |
49 | |
50 | # unset vars which may kill us |
51 | unset ALX_SERIAL ALX_STATE |
52 | |
53 | |
54 | # setup needed directories |
55 | [ ! -d /etc/alxconfig-ng/state ] && install -d /etc/alxconfig-ng/state |
56 | |
57 | |
58 | # read_cmdline ${item} |
59 | read_cmdline() |
60 | { |
61 | local i |
62 | |
63 | for i in $(< /proc/cmdline) |
64 | do |
65 | [[ ${i} = $1 ]] && return 0 |
66 | done |
67 | |
68 | return 1 |
69 | } |
70 | |
71 | update_system_settings() |
72 | { |
73 | echo -e ${COLMAGENTA}"Checking system setup ..."${COLDEFAULT} |
74 | |
75 | # get the modules settings |
76 | # ! is the first thing that must be configured ! |
77 | config_modules |
78 | |
79 | # imports network settings from db |
80 | config_networking |
81 | |
82 | # imports x11 settings from db |
83 | config_x11 |
84 | |
85 | # imports session settings from db |
86 | config_sessions |
87 | |
88 | # imports printer settings from db |
89 | config_printing |
90 | |
91 | # imports auth settings from db |
92 | config_auth |
93 | |
94 | # exchange ssh rsa keys |
95 | HOME=/root config_ssh_auth |
96 | } |
97 | |
98 | get_system_serial() |
99 | { |
100 | local CUR_IP CUR_MAC CUR_MTIME ALX_IFACE |
101 | |
102 | if [[ ${ALX_CONFD_NETWORKING} = true ]] |
103 | then |
104 | ALX_IFACE="$(< ${SETTINGSPATH}/confd-networking)" |
105 | else |
106 | ALX_IFACE="eth0" |
107 | fi |
108 | |
109 | # check if serial file exists |
110 | if [ -f /etc/alxconfig-ng/serial ] && [[ ${ALX_FORCED_RECHECK} = false ]] |
111 | then |
112 | source /etc/alxconfig-ng/serial |
113 | |
114 | # start preliminary networking (dhcp) |
115 | preliminary_network start |
116 | |
117 | # check if mysql server is reachable |
118 | # if not abort this script |
119 | if ! reach_mysql_server |
120 | then |
121 | preliminary_network stop |
122 | exit 1 |
123 | fi |
124 | |
125 | CUR_IP=$(/sbin/ifconfig ${ALX_IFACE} | sed -n '/addr:/s/ [^r]*..//gp') |
126 | CUR_MAC=$(/sbin/ifconfig ${ALX_IFACE} | grep HWaddr | cut -d ' ' -f11) |
127 | CUR_MTIME=$(date +%s) |
128 | |
129 | echo -e ${COLOREDSTAR} "Trying to validate my serial ..." |
130 | |
131 | # nice serial output |
132 | $CURS_UP |
133 | $SET_WCOL |
134 | echo "[ SN: ${ALX_SERIAL} ]" |
135 | |
136 | if validate_serial "${ALX_SERIAL}" "${ALX_REG_DATE}" "${CUR_MAC}" |
137 | then |
138 | ALX_STATE="ok" |
139 | else |
140 | # abort on non valid serial |
141 | ALX_STATE="invalid serial" |
142 | echo "ALX_STATE=${ALX_STATE}" > /etc/alxconfig-ng/state/state |
143 | show_invalid_serial_msg |
144 | exit 1 |
145 | fi |
146 | |
147 | else |
148 | # run hardware detection |
149 | echo |
150 | if [[ ${ALX_FORCED_RECHECK} = true ]] |
151 | then |
152 | echo -e ${COLMAGENTA}"Hardware autodetection forced by system-administrator"${COLDEFAULT} |
153 | else |
154 | echo -e ${COLMAGENTA}"Preparing system for first boot"${COLDEFAULT} |
155 | fi |
156 | ALX_HW_DETECT=true |
157 | /etc/init.d/hwdetect start |
158 | |
159 | # set hostname to alx_default_hostname |
160 | # use old hostname if this is a forced re-check |
161 | [[ ${ALX_FORCED_RECHECK} = true ]] && ALX_DEFAULT_HOSTNAME="$(< /etc/hostname)" |
162 | [ -z "${ALX_DEFAULT_HOSTNAME}" ] && ALX_DEFAULT_HOSTNAME=magellan-alx |
163 | HOSTNAME="${ALX_DEFAULT_HOSTNAME}" |
164 | |
165 | # update the hostname on the system for sure |
166 | echo "${HOSTNAME}" > /etc/hostname |
167 | |
168 | # start preliminary networking (dhcp) |
169 | preliminary_network start |
170 | |
171 | # check if mysql server is reachable |
172 | # if not abort this script |
173 | if ! reach_mysql_server |
174 | then |
175 | preliminary_network stop |
176 | exit 1 |
177 | fi |
178 | |
179 | CUR_IP=$(/sbin/ifconfig eth0 | sed -n '/addr:/s/ [^r]*..//gp') |
180 | CUR_MAC=$(/sbin/ifconfig eth0 | grep HWaddr | cut -d ' ' -f11) |
181 | CUR_MTIME=$(date +%s) |
182 | |
183 | # abort now if this is a forced re-check |
184 | if [[ ${ALX_FORCED_RECHECK} = true ]] |
185 | then |
186 | # but first check the serial |
187 | source /etc/alxconfig-ng/serial |
188 | |
189 | echo -e ${COLOREDSTAR} "Trying to validate my serial ..." |
190 | |
191 | # nice serial output |
192 | $CURS_UP |
193 | $SET_WCOL |
194 | echo "[ SN: ${ALX_SERIAL} ]" |
195 | |
196 | if validate_serial "${ALX_SERIAL}" "${ALX_REG_DATE}" "${CUR_MAC}" |
197 | then |
198 | ALX_STATE="ok" |
199 | else |
200 | # abort on non valid serial |
201 | ALX_STATE="invalid serial" |
202 | echo "ALX_STATE=${ALX_STATE}" > /etc/alxconfig-ng/state/state |
203 | show_invalid_serial_msg |
204 | exit 1 |
205 | fi |
206 | |
207 | # write current state to temp file |
208 | echo "ALX_STATE=${ALX_STATE}" > /etc/alxconfig-ng/state/state |
209 | [ -f /hardware-auto-detection ] && rm /hardware-auto-detection |
210 | |
211 | # now export ALX_FORCED_RECHECK=true |
212 | # that the setting will be updated not inserted ! |
213 | export ALX_FORCED_RECHECK=true |
214 | return 0 |
215 | fi |
216 | |
217 | echo -e ${COLOREDSTAR} "Trying to get new serial ..." |
218 | |
219 | # request a new serial; one command now (cause must be done in the same session) |
220 | ALX_SERIAL=$(mysqldo "insert into client_serials (mtime, mac) values('${CUR_MTIME}','${CUR_MAC}'); |
221 | select last_insert_id();") |
222 | |
223 | if [[ ${ALX_SERIAL} != NULL ]] |
224 | then |
225 | # nice serial output |
226 | $CURS_UP |
227 | $SET_WCOL |
228 | echo "[ SN: ${ALX_SERIAL} ]" |
229 | |
230 | # set ALX_STATE to ok so everybody knows that everything was ok |
231 | ALX_STATE=ok |
232 | |
233 | echo "ALX_SERIAL=${ALX_SERIAL}" > /etc/alxconfig-ng/serial |
234 | echo "ALX_REG_DATE=${CUR_MTIME}" >> /etc/alxconfig-ng/serial |
235 | |
236 | evaluate_retval |
237 | else |
238 | # print false (works only if this is the first statement here) |
239 | evaluate_retval |
240 | |
241 | # set ALX_STATE to error so everybody sees there was an error |
242 | ALX_STATE=error |
243 | |
244 | # show an error that no new serial was found |
245 | # nice serial output |
246 | $CURS_UP |
247 | $SET_WCOL |
248 | echo -e "[ SN: ${COLRED}None, 0${COLDEFAULT} ]" |
249 | fi |
250 | fi |
251 | |
252 | # write current state to temp file |
253 | echo "ALX_STATE=${ALX_STATE}" > /etc/alxconfig-ng/state/state |
254 | echo "ALX_IFACE=${ALX_IFACE}" >> /etc/alxconfig-ng/state/state |
255 | } |
256 | |
257 | |
258 | check_is_configured() |
259 | { |
260 | if [ -f /etc/alxconfig-ng/state/configured ] |
261 | then |
262 | export ALX_CONFIGURED=true |
263 | else |
264 | export ALX_CONFIGURED=false |
265 | fi |
266 | } |
267 | |
268 | |
269 | # imports current settings to the database resolved by the hardware detection |
270 | import_settings_to_db() |
271 | { |
272 | # note: networking is always 'dhcp' if hw was autodetected |
273 | # note: default_domain/hostname is set in config.rc |
274 | |
275 | # to be safe, we do some sanity checks |
276 | [ -z "${ALX_DEFAULT_DOMAIN}" ] && ALX_DEFAULT_DOMAIN=localdomain |
277 | [ -z "${ALX_DEFAULT_HOSTNAME}" ] && ALX_DEFAULT_HOSTNAME=magellan-alx |
278 | |
279 | # vars used by hwdetect |
280 | local NETCARD_FULLNAME NETCARD_DRIVER MOUSE_FULLNAME MOUSE_DEVICE SOUND_FULLNAME |
281 | local SOUND_DRIVER XSERVER XMODULE XDESC FLOPPY_FULLNAME FLOPPY_DEVICE FLOPPY_DRIVER |
282 | local MOUSETYPE XMOUSETYPE FULLNAME DEVICE |
283 | |
284 | # get setting from hwdetect |
285 | source /etc/sysconfig/hwsetup/knoppix |
286 | source /etc/sysconfig/hwsetup/mouse |
287 | |
288 | echo |
289 | echo -e ${COLMAGENTA}"Importing detected settings to database"${COLDEFAULT} |
290 | |
291 | # network |
292 | echo -e " Network settings ..." |
293 | if [[ ${ALX_CONFD_NETWORKING} = true ]] |
294 | then |
295 | # get settings |
296 | #source ${rc_base}/init.d/network &> /dev/null |
297 | for iface in $(onboot_interface_list ${network_settings}/net.*) |
298 | do |
299 | [[ $(< ${SETTINGSPATH}/confd-networking) != ${iface} ]] && continue |
300 | echo "WARNING: only importing settings for interface [ ${iface} ] !" |
301 | source ${network_settings}/net.${iface} || exit 1 |
302 | NETCARD_DRIVER="$(cat /etc/modules.d/net.${iface} | cut -d' ' -f3)" |
303 | |
304 | mysqldo "insert into cfg_network( |
305 | hostname, |
306 | serial, |
307 | module, |
308 | domain, |
309 | networking, |
310 | netmask, |
311 | dns, |
312 | gateway, |
313 | broadcast, |
314 | ip, |
315 | forcemacto, |
316 | wireless_bitrate, |
317 | wireless_channel, |
318 | wireless_essid, |
319 | wireless_frequency, |
320 | wireless_mode, |
321 | wireless_nick, |
322 | wireless_auth_mode, |
323 | wireless_key_length, |
324 | wireless_key, |
325 | wireless_key_ascii |
326 | ) |
327 | values( |
328 | '${ALX_DEFAULT_HOSTNAME}', |
329 | '${ALX_SERIAL}', |
330 | '${NETCARD_DRIVER}', |
331 | '${ALX_DEFAULT_DOMAIN}', |
332 | '${NETWORKING}', |
333 | '${NETMASK}', |
334 | '${NAMESERVER}', |
335 | '${GATEWAY}', |
336 | '${BROADCAST}', |
337 | '${IP}', |
338 | '${FORCE_MAC_TO}', |
339 | '${WIRELESS_BITRATE}', |
340 | '${WIRELESS_CHANNEL}', |
341 | '${WIRELESS_ESSID}', |
342 | '${WIRELESS_FREQUENCY}', |
343 | '${WIRELESS_MODE}', |
344 | '${WIRELESS_NICK}', |
345 | '${WIRELESS_AUTH_MODE}', |
346 | '${WIRELESS_KEY_LENGTH}', |
347 | '${WIRELESS_KEY}', |
348 | '${WIRELESS_KEY_ASCII}' |
349 | );" |
350 | |
351 | # only insert the *FIRST* iface |
352 | break |
353 | done |
354 | else |
355 | mysqldo "insert into cfg_network( |
356 | hostname, |
357 | serial, |
358 | module, |
359 | domain, |
360 | networking |
361 | ) |
362 | values( |
363 | '${ALX_DEFAULT_HOSTNAME}', |
364 | '${ALX_SERIAL}', |
365 | '${NETCARD_DRIVER}', |
366 | '${ALX_DEFAULT_DOMAIN}', |
367 | 'dhcp' |
368 | );" |
369 | fi |
370 | evaluate_retval |
371 | |
372 | # xserver |
373 | echo -e " Graphic settings ..." |
374 | # xserver general |
375 | ( mysqldo "insert into cfg_graphic( |
376 | serial, |
377 | module, |
378 | resolution, |
379 | depth, |
380 | monitorid |
381 | ) |
382 | values( |
383 | '${ALX_SERIAL}', |
384 | '${XMODULE}', |
385 | '1024x768', |
386 | '16', |
387 | '0' |
388 | );"; ) |
389 | evaluate_retval |
390 | |
391 | # input |
392 | echo -e " Input settings ..." |
393 | mysqldo "insert into cfg_input(serial,mouse) values('${ALX_SERIAL}','${XMOUSETYPE}');" |
394 | evaluate_retval |
395 | |
396 | # auth |
397 | echo -e " Authentification settings ..." |
398 | mysqldo "insert into client_auth( |
399 | serial, |
400 | username, |
401 | shell, |
402 | vnc, |
403 | samba, |
404 | station |
405 | ) |
406 | values( |
407 | '${ALX_SERIAL}', |
408 | '${ALX_UNPRIV_USER}', |
409 | '', |
410 | '', |
411 | '', |
412 | '' |
413 | );" |
414 | evaluate_retval |
415 | |
416 | # exchange ssh rsa keys - the first boot needs this ! |
417 | # or no reboot will work via the webadmin |
418 | echo -e " SSH authentification settings ..." |
419 | HOME=/root config_ssh_auth |
420 | evaluate_retval |
421 | |
422 | # autostart |
423 | echo -e " Autostart settings ..." |
424 | mysqldo "insert into cfg_autostart(serial,session) values('${ALX_SERIAL}','');" |
425 | |
426 | # screensaver |
427 | echo -e " Screensaver settings ..." |
428 | mysqldo "insert into cfg_screensaver(serial,screensaver) values('${ALX_SERIAL}','')" |
429 | |
430 | evaluate_retval |
431 | } |
432 | |
433 | # imports current settings to the database resolved by the hardware detection |
434 | update_settings_in_db() |
435 | { |
436 | # note: networking is always 'dhcp' if hw was autodetected |
437 | # note: default_domain/hostname is set in config.rc or exported |
438 | # note: we updating only hardware settings here ! |
439 | |
440 | # to be safe, we do some sanity checks |
441 | [ -z "${ALX_DEFAULT_DOMAIN}" ] && ALX_DEFAULT_DOMAIN=localdomain |
442 | [ -z "${ALX_DEFAULT_HOSTNAME}" ] && ALX_DEFAULT_HOSTNAME=magellan-alx |
443 | |
444 | # vars used by hwdetect |
445 | local NETCARD_FULLNAME NETCARD_DRIVER MOUSE_FULLNAME MOUSE_DEVICE SOUND_FULLNAME |
446 | local SOUND_DRIVER XSERVER XMODULE XDESC FLOPPY_FULLNAME FLOPPY_DEVICE FLOPPY_DRIVER |
447 | local MOUSETYPE XMOUSETYPE FULLNAME DEVICE |
448 | |
449 | # get setting from hwdetect |
450 | source /etc/sysconfig/hwsetup/knoppix |
451 | source /etc/sysconfig/hwsetup/mouse |
452 | |
453 | echo |
454 | echo -e ${COLMAGENTA}"Updating detected settings in database"${COLDEFAULT} |
455 | |
456 | # network |
457 | echo -e " Network settings ..." |
458 | if [[ ${ALX_CONFD_NETWORKING} = true ]] |
459 | then |
460 | # get settings |
461 | #source ${rc_base}/init.d/network &> /dev/null |
462 | for iface in $(onboot_interface_list ${network_settings}/net.*) |
463 | do |
464 | [[ $(< ${SETTINGSPATH}/confd-networking) != ${iface} ]] && continue |
465 | echo "WARNING: only importing settings for interface [ ${iface} ] !" |
466 | source ${network_settings}/net.${iface} || exit 1 |
467 | NETCARD_DRIVER="$(cat /etc/modules.d/net.${iface} | cut -d' ' -f3)" |
468 | |
469 | mysqldo "update cfg_network set |
470 | hostname='${ALX_DEFAULT_HOSTNAME}', |
471 | module='${NETCARD_DRIVER}', |
472 | domain='${ALX_DEFAULT_DOMAIN}', |
473 | networking='${NETWORKING}', |
474 | netmask='${NETMASK}', |
475 | dns='${NAMESERVER}', |
476 | gateway='${GATEWAY}', |
477 | broadcast='${BROADCAST}', |
478 | ip='${IP}', |
479 | forcemacto='${FORCE_MAC_TO}', |
480 | wireless_bitrate='${WIRELESS_BITRATE}', |
481 | wireless_channel='${WIRELESS_CHANNEL}', |
482 | wireless_essid='${WIRELESS_ESSID}', |
483 | wireless_frequency='${WIRELESS_FREQUENCY}', |
484 | wireless_mode='${WIRELESS_MODE}', |
485 | wireless_nick='${WIRELESS_NICK}', |
486 | wireless_auth_mode='${WIRELESS_AUTH_MODE}', |
487 | wireless_key_length='${WIRELESS_KEY_LENGTH}', |
488 | wireless_key='${WIRELESS_KEY}', |
489 | wireless_key_ascii='${WIRELESS_KEY_ASCII}' |
490 | where serial=${ALX_SERIAL};" |
491 | |
492 | # only insert the *FIRST* iface |
493 | break |
494 | done |
495 | else |
496 | mysqldo "update cfg_network set |
497 | hostname='${ALX_DEFAULT_HOSTNAME}', |
498 | module='${NETCARD_DRIVER}', |
499 | domain='${ALX_DEFAULT_DOMAIN}', |
500 | networking='dhcp' |
501 | where serial=${ALX_SERIAL};" |
502 | fi |
503 | evaluate_retval |
504 | |
505 | # xserver |
506 | echo -e " Graphic settings ..." |
507 | # xserver general |
508 | mysqldo "update cfg_graphic set |
509 | module='${XMODULE}', |
510 | resolution='1024x768', |
511 | depth='16', |
512 | monitorid='0' |
513 | where serial=${ALX_SERIAL};" |
514 | evaluate_retval |
515 | |
516 | # input |
517 | echo -e " Input settings ..." |
518 | mysqldo "update cfg_input set mouse='${XMOUSETYPE}' where serial=${ALX_SERIAL};" |
519 | evaluate_retval |
520 | } |
521 | |
522 | # imports current settings to the local system resolved by the hardware detection |
523 | # we only need the network settings |
524 | import_settings_local() |
525 | { |
526 | # note: networking is always 'dhcp' if hw was autodetected |
527 | # note: default_domain/hostname is set in config.rc |
528 | |
529 | # to be safe, we do some sanity checks |
530 | [ -z "${ALX_DEFAULT_DOMAIN}" ] && ALX_DEFAULT_DOMAIN=localdomain |
531 | [ -z "${ALX_DEFAULT_HOSTNAME}" ] && ALX_DEFAULT_HOSTNAME=magellan-alx |
532 | |
533 | # vars used by hwdetect |
534 | local NETCARD_FULLNAME NETCARD_DRIVER MOUSE_FULLNAME MOUSE_DEVICE SOUND_FULLNAME |
535 | local SOUND_DRIVER XSERVER XMODULE XDESC FLOPPY_FULLNAME FLOPPY_DEVICE FLOPPY_DRIVER |
536 | local MOUSETYPE XMOUSETYPE FULLNAME DEVICE |
537 | |
538 | # get setting from hwdetect |
539 | source /etc/sysconfig/hwsetup/knoppix |
540 | |
541 | echo |
542 | echo -e ${COLMAGENTA}"Importing detected settings to local system"${COLDEFAULT} |
543 | |
544 | if [[ ${ALX_CONFD_NETWORKING} = false ]] |
545 | then |
546 | #[ ! -d ${SETTINGSPATH} ] && install -d ${SETTINGSPATH} |
547 | #echo "${NETCARD_DRIVER}" > ${SETTINGSPATH}/modules |
548 | |
549 | # set an device alias for modprobe.conf |
550 | [ ! -d /etc/modules.d ] && install -d /etc/modules.d |
551 | echo "alias eth0 ${NETCARD_DRIVER}" > /etc/modules.d/net.eth0 |
552 | |
553 | # regenerate modprobe.conf |
554 | [ -x $(which modules-update) ] && modules-update || echo "cannot regen modprobe.conf" |
555 | evaluate_retval |
556 | fi |
557 | |
558 | # set system state to 'already configured' |
559 | touch /etc/alxconfig-ng/state/configured |
560 | |
561 | # if only an recheck was forced than abort now |
562 | [[ ${ALX_FORCED_RECHECK} = true ]] && return 0 |
563 | |
564 | # create a fresh fluxbox directory |
565 | [ -d ${ALX_UNPRIV_HOME}/.fluxbox ] && rm -rf ${ALX_UNPRIV_HOME}/.fluxbox |
566 | install -d ${ALX_UNPRIV_HOME}/.fluxbox |
567 | |
568 | # now generate fluxbox config files |
569 | |
570 | # fluxbox main config |
571 | cat ${ALX_SKELETONS}/fluxbox/init \ |
572 | > ${ALX_UNPRIV_HOME}/.fluxbox/init |
573 | |
574 | # fluxbox autostart |
575 | cat ${ALX_SKELETONS}/fluxbox/apps \ |
576 | > ${ALX_UNPRIV_HOME}/.fluxbox/apps |
577 | |
578 | # fluxbox menu header |
579 | cat ${ALX_SKELETONS}/fluxbox/menu.header \ |
580 | > ${ALX_UNPRIV_HOME}/.fluxbox/menu |
581 | |
582 | # now fix it with proper messages :P |
583 | local ver="$(< /etc/mageversion)" |
584 | sed -i "s:@CHANGEME@:alx-${ver} #${ALX_SERIAL}:g" \ |
585 | ${ALX_UNPRIV_HOME}/.fluxbox/menu |
586 | |
587 | # add a newline (maybe there is no crlf in the header) |
588 | echo >> ${ALX_UNPRIV_HOME}/.fluxbox/menu |
589 | |
590 | # fluxbox menu footer |
591 | cat ${ALX_SKELETONS}/fluxbox/menu.footer \ |
592 | >> ${ALX_UNPRIV_HOME}/.fluxbox/menu |
593 | |
594 | # add a newline (maybe there is no crlf in the footer) |
595 | echo >> ${ALX_UNPRIV_HOME}/.fluxbox/menu |
596 | |
597 | |
598 | # setup some standart icons (sysinfo.lnk) |
599 | # basic config |
600 | cat ${ALX_SKELETONS}/xtdesktop/xtdeskrc > ${ALX_UNPRIV_HOME}/.xtdeskrc |
601 | |
602 | # clean desktop icon location |
603 | [ -d ${ALX_UNPRIV_HOME}/.xtdesktop ] && rm -rf ${ALX_UNPRIV_HOME}/.xtdesktop |
604 | install -d ${ALX_UNPRIV_HOME}/.xtdesktop |
605 | |
606 | # last but not least gen a icon with some sys informations |
607 | local sysinfo |
608 | local osversion |
609 | local xres |
610 | local yres |
611 | |
612 | osversion="$(< /etc/mageversion)" |
613 | sysinfo="Hostname: ${ALX_DEFAULT_HOSTNAME} Serial: #${ALX_SERIAL} OS: alx-${osversion} Kernel: $(uname -r)" |
614 | |
615 | # at first boot we got always a resolution of 1024x768-16@60 |
616 | # middle of the screen |
617 | # (no txt - length required, xtdesk manage that itself) |
618 | xres="$((1024 / 2))" |
619 | # default y pos (full yres -22 !) |
620 | yres="$((768 - 22 ))" |
621 | |
622 | generate_icon \ |
623 | --name "${sysinfo}" \ |
624 | --command "exit 0" \ |
625 | --icon "${ALX_SESSIONS_ICONS}/sysinfo.png" \ |
626 | --dest "${ALX_UNPRIV_HOME}/.xtdesktop/sysinfo.lnk" \ |
627 | --xres "${xres}" \ |
628 | --yres "${yres}" \ |
629 | --icon-width "1" \ |
630 | --icon-height "1" |
631 | |
632 | # set correct permissions |
633 | chown ${ALX_UNPRIV_USER}:${ALX_UNPRIV_GROUP} ${ALX_UNPRIV_HOME} |
634 | chown ${ALX_UNPRIV_USER}:${ALX_UNPRIV_GROUP} ${ALX_UNPRIV_HOME}/.fluxbox |
635 | chmod 0755 ${ALX_UNPRIV_HOME}/.fluxbox |
636 | chmod 0755 ${ALX_UNPRIV_HOME}/.xtdesktop |
637 | chmod 0644 ${ALX_UNPRIV_HOME}/.xtdeskrc |
638 | } |
639 | |
640 | # start|stop |
641 | preliminary_network() |
642 | { |
643 | local module |
644 | |
645 | if [ -f /etc/alxconfig-ng/state/configured ] |
646 | then |
647 | # compat for old clients |
648 | if [ -f ${SETTINGSPATH}/modules ] |
649 | then |
650 | # get module name |
651 | module=$(cat ${SETTINGSPATH}/modules) |
652 | modprobe ${module} |
653 | fi |
654 | else |
655 | # vars used by hwdetect |
656 | local NETCARD_FULLNAME NETCARD_DRIVER MOUSE_FULLNAME MOUSE_DEVICE SOUND_FULLNAME |
657 | local SOUND_DRIVER XSERVER XMODULE XDESC FLOPPY_FULLNAME FLOPPY_DEVICE FLOPPY_DRIVER |
658 | |
659 | # get setting from hwdetect |
660 | source /etc/sysconfig/hwsetup/knoppix |
661 | modprobe ${NETCARD_DRIVER} |
662 | fi |
663 | |
664 | case $1 in |
665 | start) |
666 | # keeping like always safe: |
667 | # no network should be startet here, |
668 | # so we can delete all pid files if one exists |
669 | if ps -A|grep dhcpcd > /dev/null |
670 | then |
671 | echo -e ${COLMAGENTA}"Forcing network down"${COLDEFAULT} |
672 | dhcpcd -k |
673 | sleep 1 |
674 | else |
675 | rm -f /var/run/dhcpcd-eth?.pid |
676 | fi |
677 | [[ ${ALX_CONFD_NETWORKING} = true ]] && [[ ${RUNLEVEL} != S ]] && \ |
678 | ${rc_base}/init.d/network stop |
679 | |
680 | echo -e ${COLMAGENTA}"Starting preliminary networking ... "${COLDEFAULT} |
681 | |
682 | # start network configured from /etc/conf.d |
683 | if [[ ${ALX_CONFD_NETWORKING} = true ]] |
684 | then |
685 | ${rc_base}/init.d/network start |
686 | else |
687 | echo -e ${COLOREDSTAR}"Starting default dhcp based networking ... "${COLDEFAULT} |
688 | # -t 10 timeout of 10 secs |
689 | dhcpcd -t 10 &> /dev/null |
690 | evaluate_retval |
691 | fi |
692 | ;; |
693 | |
694 | stop) |
695 | echo -e ${COLMAGENTA}"Stopping preliminary networking ... "${COLDEFAULT} |
696 | if [[ ${ALX_CONFD_NETWORKING} = true ]] |
697 | then |
698 | ${rc_base}/init.d/network stop |
699 | else |
700 | echo -e ${COLOREDSTAR}"Stopping default dhcp based networking ... "${COLDEFAULT} |
701 | ifconfig eth0 down |
702 | fi |
703 | if ps -A|grep dhcpcd > /dev/null |
704 | then |
705 | dhcpcd -z &> /dev/null |
706 | fi |
707 | evaluate_retval |
708 | ;; |
709 | |
710 | *) |
711 | echo "Usage: preliminary_network {start|stop}" |
712 | ;; |
713 | esac |
714 | } |
715 | |
716 | reset_system_settings() |
717 | { |
718 | # force load of de kbdkeys |
719 | loadkeys -q de |
720 | echo |
721 | echo -en ${COLRED} |
722 | echo -n "*** Warning: you are about to reset *all* local settings on this system!" |
723 | echo -e ${COLDEFAULT} |
724 | echo "*** Do you really want to continue ?" |
725 | echo -n "*** Enter 'yes' to continue, anything else to abort: " |
726 | read kbinsert |
727 | if [[ ${kbinsert} = yes ]] |
728 | then |
729 | echo -en ${COLRED} |
730 | echo -n "*** OK, you really want it ... killing all settings: " |
731 | for i in 3 2 1 now |
732 | do |
733 | echo -n " ${i}" |
734 | sleep 1 |
735 | done |
736 | echo -e ${COLDEFAULT} |
737 | |
738 | ## reset all settings: |
739 | rm -rf ${SETTINGSPATH}/* |
740 | rm -f /etc/alxconfig-ng/serial |
741 | rm -rf /etc/alxconfig-ng/state |
742 | |
743 | # clear all printers & net-shares |
744 | :> /etc/cups/printers.conf |
745 | :> /etc/samba/smb.conf |
746 | |
747 | # remove inetd, cups & smb from init |
748 | rc-config del inetd &> /dev/null |
749 | rc-config del cups &> /dev/null |
750 | rc-config del samba &> /dev/null |
751 | |
752 | # remove all user settings |
753 | [ -d ${ALX_UNPRIV_HOME} ] && rm -rf ${ALX_UNPRIV_HOME} |
754 | |
755 | # remove all ica-sessions |
756 | find ${ALX_ICA_SESSIONS} -type f -name '*.ica' | xargs rm |
757 | |
758 | # remove all old nics and modules configs |
759 | find /etc/conf.d -type f -name 'net.*' | xargs rm |
760 | find /etc/modules.d -type f -name 'net.*' | xargs rm |
761 | |
762 | # restore default networking |
763 | cat ${ALX_SKELETONS}/net/net.eth0 > /etc/conf.d/net.eth0 |
764 | |
765 | echo "I am done now, press [Enter] to reboot system ..." |
766 | else |
767 | echo "Aborted, press [Enter] to reboot system ..." |
768 | fi |
769 | read |
770 | reboot |
771 | } |
772 | |
773 | onboot_interface_list() |
774 | { |
775 | local file |
776 | local devices |
777 | local iface |
778 | |
779 | # get list of all devices |
780 | for file in $@ |
781 | do |
782 | if [[ $(read_value ONBOOT ${file}) = yes ]] |
783 | then |
784 | iface="$(basename ${file} | sed s/net.//)" |
785 | # exclude backup files |
786 | case "${iface}" in |
787 | *~) ;; |
788 | *) devices="${devices} $(basename ${file} | sed s/net.//)" ;; |
789 | esac |
790 | fi |
791 | done |
792 | |
793 | echo "${devices}" |
794 | } |
795 | |
796 | # read values from net.* files |
797 | read_value() |
798 | { |
799 | local var="$1" |
800 | local file="$2" |
801 | local value |
802 | |
803 | # local all possible vars |
804 | # global |
805 | local ONBOOT |
806 | local NETWORKING |
807 | |
808 | # static |
809 | local IP |
810 | local NETMASK |
811 | local BROADCAST |
812 | local NETWORKING |
813 | local FORCE_MAC_TO |
814 | |
815 | # dhcp |
816 | local DHCP_PROG |
817 | local DHCP_START |
818 | local DHCP_STOP |
819 | |
820 | # default gw |
821 | local GATEWAY |
822 | local GATEWAY_IF |
823 | |
824 | # wireless extensions |
825 | local WIRELESS_AP |
826 | local WIRELESS_AUTH_MODE |
827 | local WIRELESS_BITRATE |
828 | local WIRELESS_CHANNEL |
829 | local WIRELESS_DEFAULT_KEY |
830 | local WIRELESS_ESSID |
831 | local WIRELESS_FREQUENCY |
832 | local WIRELESS_KEY |
833 | local WIRELESS_KEY_ASCII |
834 | local WIRELESS_KEY_0 |
835 | local WIRELESS_KEY_1 |
836 | local WIRELESS_KEY_2 |
837 | local WIRELESS_KEY_3 |
838 | local WIRELESS_KEY_LENGTH |
839 | local WIRELESS_MODE |
840 | local WIRELESS_NICK |
841 | local WIRELESS_NWID |
842 | local WIRELESS_POWER |
843 | |
844 | source ${file} |
845 | eval value=\$$(echo ${var}) |
846 | echo "${value}" |
847 | } |
848 | |
849 | case $1 in |
850 | start) |
851 | # check for global overrides |
852 | [ -f ${SETTINGSPATH}/confd-networking ] && ALX_CONFD_NETWORKING=true |
853 | [ -f /hardware-auto-detection ] && ALX_FORCED_RECHECK=true |
854 | read_cmdline hardware-auto-detection && ALX_FORCED_RECHECK=true |
855 | read_cmdline alx-reset-settings && ALX_RESET_SETTINGS=true |
856 | |
857 | # kill all settings if requested |
858 | if [[ ${ALX_RESET_SETTINGS} = true ]] |
859 | then |
860 | reset_system_settings |
861 | fi |
862 | |
863 | # retrieve or validate current serial |
864 | get_system_serial |
865 | if [[ ${ALX_HW_DETECT} = true ]] |
866 | then |
867 | if [[ ${ALX_FORCED_RECHECK} = true ]] |
868 | then |
869 | update_settings_in_db |
870 | else |
871 | import_settings_to_db |
872 | fi |
873 | import_settings_local |
874 | |
875 | # here we should also exchange the ssh keys |
876 | # or the system cannot be rebooted after |
877 | # the first start via the alx-webadmin |
878 | config_ssh_auth |
879 | fi |
880 | |
881 | # now setup system configuration |
882 | # alx_setup_or_whatever_it_will_be_called() |
883 | [[ ${ALX_HW_DETECT} = false ]] && update_system_settings |
884 | |
885 | # stop at last the preliminary networking (dhcp) |
886 | preliminary_network stop |
887 | ;; |
888 | |
889 | stop) |
890 | # unset_alx_connected #--> now in alxsetstate-rc6 |
891 | # ! important !: del systemstate |
892 | [ -f /etc/alxconfig-ng/state/state ] && rm /etc/alxconfig-ng/state/state |
893 | sleep 0.1 |
894 | ;; |
895 | *) |
896 | echo "Usage: $0 {start|stop} ..." |
897 | ;; |
898 | esac |
899 |
Properties
Name | Value |
---|---|
svn:executable | * |