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