dtinfo other files
[oweals/cde.git] / cde / admin / IntegTools / post_install / ibm / configRun.src
1 XCOMM! /bin/ksh
2 XCOMM   (c) Copyright 1993, 1994 International Business Machines Corp.
3 XCOMM  @(#) $XConsortium: configRun.src /main/7 1996/10/18 16:25:57 drk $
4
5 #define HASH #
6 #define STAR *
7
8 INETD=/etc/inetd.conf
9
10 XCOMM
11 XCOMM The "sm" object definitions for 410 are in /usr/lib/objrepos so
12 XCOMM ODMDIR need to get set to the correct path name .
13 XCOMM
14
15 #ifdef _POWER
16 ODMDIR=/usr/lib/objrepos
17 #endif
18
19 CreateAppConfigDirectory()
20 {
21 XCOMM
22 XCOMM Create the APPCONFIG directory inside DT_CONFIG_TOP and create
23 XCOMM all of its subdirectories
24 XCOMM
25
26     cd $DT_CONFIG_TOP
27     if [ ! -d $APPCONFIG ]
28     then
29         mkdir $APPCONFIG
30     fi
31
32     cd $APPCONFIG
33
34     for i in $APPCONFIG_DIRS
35     do
36         if [ ! -d $i ]
37         then
38             mkdir $i
39         fi
40         cd $i
41         HASH
42         HASH for each locale
43         HASH
44         for j in $DT_TOP/$APPCONFIG/$i/STAR
45         do
46             if [ ! -d `basename $j` ]
47             then
48                 mkdir `basename $j`
49             fi
50         done
51         cd ..
52     done
53
54 }
55
56 CheckFor24cmsdinInetd()
57 {
58
59 #ifdef _POWER
60     rc=`grep "cmsd" $INETD | grep "2-4" | cut -c1 | grep -xv "#" \
61                 1>/dev/null 2>/dev/null; echo $?`
62 #else
63     rc=`inetserv -s -I -v cmsd -p udp | grep "2-4" 1>/dev/null 2>/dev/null;\
64         echo $?`
65     
66 #endif
67     return $rc
68 }
69
70 CheckForcmsdinInetd()
71 {
72
73 #ifdef _POWER
74     rc=`grep "cmsd" $INETD | cut -c1 | grep -xv "#" \
75            1>/dev/null 2>/dev/null;echo $?`
76 #else
77     rc=`inetserv -s -I -v cmsd -p udp 1>/dev/null 2>/dev/null;echo $?`
78 #endif
79     return $rc
80 }
81
82 #ifndef _POWER
83 DeleteSmitStanzas()
84 {
85    odmdelete -o sm_cmd_opt -q"id='sysuiinterface'"       1>/dev/null   2>/dev/null
86    odmdelete -o sm_cmd_hdr -q"id='dtconfig'"             1>/dev/null   2>/dev/null
87    odmdelete -o sm_menu_opt -q"next_id='dtconfig'"       1>/dev/null   2>/dev/null
88 }
89 #endif
90
91 #ifndef _POWER
92 AddSmitStanzas()
93 {
94 rc=`odmget -q"next_id='dtconfig'" sm_menu_opt | grep dtconfig 1>/dev/null 2>/dev/null;echo $?`
95 if [ "$rc" -ne "0" ]
96 then
97     cat << odm_stanzas | odmadd
98 sm_menu_opt:
99    id_seq_num                = "200"
100    id                        = "system"
101    next_id                   = "dtconfig"
102    text                      = "Change System User Interface"
103    text_msg_file             = "dtsmit.cat"
104    text_msg_set              = 30
105    text_msg_id               = 1
106    next_type                 = "d"
107    alias                     = ""
108    help_msg_id               = ""
109    help_msg_loc              = ""
110    help_msg_base             = ""
111    help_msg_book             = ""
112
113 sm_menu_opt:
114    id_seq_num                = "050"
115    id                        = "controls"
116    next_id                   = "dtconfig"
117    text                      = "Change System User Interface"
118    text_msg_file             = "dtsmit.cat"
119    text_msg_set              = 30
120    text_msg_id               = 1
121    next_type                 = "d"
122    alias                     = ""
123    help_msg_id               = ""
124    help_msg_loc              = ""
125    help_msg_base             = ""
126    help_msg_book             = ""
127 odm_stanzas
128 fi
129
130 rc=`odmget -q"id='dtconfig'" sm_cmd_hdr | grep dtconfig 1>/dev/null 2>/dev/null;echo $?`
131 if [ "$rc" -ne "0" ]
132 then
133     cat << odm_stanzas | odmadd
134 sm_cmd_hdr:
135    id = "dtconfig"
136    option_id = "sysuiinterface"
137    has_name_select = ""
138    name = "Select System User Interface"
139    name_msg_file = "dtsmit.cat"
140    name_msg_set = 40
141    name_msg_id = 1
142    cmd_to_exec = "/usr/dt/bin/dtconfig "
143    ask = ""
144    exec_mode = ""
145    ghost = ""
146    cmd_to_discover = ""
147    cmd_to_discover_postfix = ""
148    name_size = 0
149    value_size = 0
150    help_msg_id = ""
151    help_msg_loc = ""
152    help_msg_base = ""
153    help_msg_book = ""
154 odm_stanzas
155 fi
156
157 rc=`odmget -q"id='sysuiinterface'" sm_cmd_opt | grep sysuiinterface 1>/dev/null 2>/dev/null;echo $?`
158 if [ "$rc" -ne "0" ]
159 then
160      cat << odm_stanzas | odmadd
161 sm_cmd_opt:
162    id_seq_num = "020"
163    id = "sysuiinterface"
164    disc_field_name = ""
165    name = "Select System Login User Interface"
166    name_msg_file = "dtsmit.cat"
167    name_msg_set = 50
168    name_msg_id = 1
169    op_type = "r"
170    entry_type = ""
171    entry_size = 0
172    required = "y"
173    prefix = ""
174    cmd_to_list_mode = ""
175    cmd_to_list = ""
176    cmd_to_list_postfix = ""
177    multi_select = ""
178    value_index = 0
179    disp_values = "CDE environment,Command line"
180    values_msg_file = ""
181    values_msg_set = 0
182    values_msg_id = 0
183    aix_values = "-e,-d"
184    help_msg_id = ""
185    help_msg_loc = ""
186    help_msg_base = ""
187    help_msg_book = ""
188 odm_stanzas
189 fi
190
191 }
192 #endif
193
194 XCOMM
195 XCOMM Checks if portmap daemon is already running; if not
196 XCOMM starts the portmap daemon.
197 XCOMM
198
199 CheckPortmap()
200 {
201     ps -ef | fgrep portmap | grep -v grep 2>/dev/null 1>/dev/null
202     if [ $? -ne 0 ]
203     then
204        startsrc -s portmap
205     fi
206 }
207
208 StopDaemon()
209 {
210     ps -ef | fgrep $1 | grep -v grep >/tmp/tmppsout
211     if [ -s /tmp/tmppsout ]
212     then
213         awk '{print "kill " $2}' /tmp/tmppsout | /bin/ksh 1>/dev/null
214         sleep 2
215         ps -ef | fgrep $1 | grep -v grep >/tmp/tmppsout
216         if [ -s /tmp/tmppsout ]
217         then
218             awk '{print "kill -TERM " $2}' /tmp/tmppsout | /bin/ksh 1>/dev/null
219             sleep 2
220             ps -ef | fgrep $1 | grep -v grep >/tmp/tmppsout
221             if [ -s /tmp/tmppsout ]
222             then
223                 awk '{print "kill -9 " $2}' /tmp/tmppsout | /bin/ksh 1>/dev/null
224
225                 sleep 2
226             fi
227         fi
228     fi
229     rm -f /tmp/tmppsout
230 }
231
232 FixEtcRpc()
233 {
234 XCOMM
235 XCOMM now check to see if the proper entry is in /etc/rpc
236 XCOMM
237
238     RPCFILE=/etc/rpc
239     TMPFILE=/tmp/etc-rpc
240
241     if [ ! -f $RPCFILE ]
242     then
243         HASH if the file doesn't exist (highly unlikely), make one
244         HASH with the proper entry
245         HASH
246
247         echo "cmsd     100068  dtcalendar" >$RPCFILE
248
249     else
250         HASH
251         HASH check to see if the entry is already there
252         HASH
253
254         awk '{if ($1 == "cmsd" && $2 == "100068")
255                 print $0 > "/tmp/etc-rpc-already-there"
256              }' $RPCFILE >/dev/null
257
258         if [ ! -f /tmp/etc-rpc-already-there ]
259         then
260         HASH
261         HASH if it isn't, check to see if either term already
262         HASH exists
263         HASH
264
265             awk '{if ($1 == "cmsd" || $2 == "100068")
266                         print $0 > "/tmp/etc-rpc-already-there"
267                  }' $RPCFILE >/dev/null
268
269         HASH
270         HASH if either one does they need to be commented out
271         HASH
272
273             if [ ! -f /tmp/etc-rpc-already-there ]
274             then
275                 echo "cmsd     100068  dtcalendar" >>$RPCFILE
276             else
277                 awk '{if ($1 == "cmsd" || $2 == "100068")
278                         print "#cde " $0; 
279                       else 
280                         print $0
281                      }' $RPCFILE >$TMPFILE
282
283                 echo "cmsd     100068  dtcalendar" >>/tmp/etc-rpc
284                 mv $TMPFILE $RPCFILE
285                 rm /tmp/etc-rpc-already-there
286             fi
287         else
288             rm /tmp/etc-rpc-already-there
289         fi
290     fi
291 }
292
293 UnfixEtcRpc()
294 {
295 FILE=/etc/rpc
296 TMPFILE=/tmp/etc-rpc
297
298     awk '{if ($1 == "cmsd" && $2 == "100068")
299                 ;
300           else
301                 print $0
302          }' $FILE >$TMPFILE
303
304     mv $TMPFILE $FILE
305
306     awk '{if ($1 == "#cde" && ($2 == "cmsd" || $3 == "100068"))
307                 ;
308           else
309                 print $0
310          }' $FILE >$TMPFILE
311
312     mv $TMPFILE $FILE
313 }
314
315 Remove24cmsdFromInetd()
316 {
317
318 CMSD=CDE_INSTALLATION_TOP/bin/rpc.cmsd
319
320 #ifdef _POWER
321
322    /usr/sbin/chsubserver -d -v cmsd -t sunrpc_udp -p udp -w wait -u root \
323                 -g $CMSD -r inetd cmsd 100068 2-4          1>/dev/null  2>/dev/null
324    grep -v "#cmsd" $INETD >/tmp/configRun.$$ && mv /tmp/configRun.$$ $INETD
325  
326 #else
327
328     inetserv -D -I -v cmsd -p udp 2>/dev/null 1>/dev/null
329
330 #endif
331
332    if [ "$?" -ne "0" ]
333    then
334          exit 1
335    fi
336
337 }
338
339 RemovecmsdFromInetserv()
340 {
341
342 CMSD=CDE_INSTALLATION_TOP/bin/rpc.cmsd
343
344 #ifdef _POWER
345
346    /usr/sbin/chsubserver -d -v cmsd -t sunrpc_udp -p udp -w wait -u root \
347                 -g $CMSD -r inetd cmsd 100068 2-5          1>/dev/null  2>/dev/null
348
349    grep -v "#cmsd" $INETD >/tmp/configRun.$$ && mv /tmp/configRun.$$ $INETD
350  
351 #else
352
353     inetserv -D -I -v cmsd -p udp 2>/dev/null 1>/dev/null
354
355 #endif
356
357    if [ "$?" -ne "0" ]
358    then
359          exit 1
360    fi
361
362 }
363
364 AddcmsdToInetserv()
365 {
366 CMSD=CDE_INSTALLATION_TOP/bin/rpc.cmsd
367
368 XCOMM
369 XCOMM check for existence of /etc/inetd.conf
370 XCOMM
371
372     if [ ! -f $INETD ]          # highly unlikely
373     then
374         echo "" >$INETD
375     fi
376
377
378 #ifdef _POWER
379
380    /usr/sbin/chsubserver -a -v cmsd -t sunrpc_udp -p udp -w wait -u root \
381                 -g $CMSD -r inetd cmsd 100068 2-5        1>/dev/null  2>/dev/null
382
383    if [ "$?" -ne "0" ]
384    then
385          exit 1
386    fi
387
388
389 #else
390 XCOMM
391 XCOMM Check if the server exists in the /etc/inetd.conf file.
392 XCOMM
393     rc=`inetserv -s -I -v cmsd -p udp 1>/dev/null 2>/dev/null;echo $?`
394
395     if [ "$rc" -ne "0" ]
396     then
397          inetserv -a -S -v cmsd -p udp -n 111 
398          rc=$?
399          if [ "$rc" -eq "0" ]
400          then
401             inetserv -a -I -v cmsd -p udp -t sunrpc_udp -w wait -U root \
402                 -r $CMSD -R "cmsd 100068 2-5"  
403             if [ "$?" = "1" ]
404             then
405                exit 1
406             fi
407         fi
408     fi
409 #endif
410 }
411
412 HandleOption()
413 {
414   while [ $# -ne 0 ]; do
415     case $1 in
416         -e) DO_CONFIGURATION="yes"
417             shift;
418             ;;
419         -d) DO_CONFIGURATION="no"
420             shift;
421             ;;
422     esac
423   done
424 }
425
426 LinkOtherIcons()
427 {
428     while read SRC
429     do
430         rm -f $DT_TOP/$APPCONFIG/icons/C/F$SRC
431         ln -s $DT_TOP/$APPCONFIG/icons/C/$SRC $DT_TOP/$APPCONFIG/icons/C/F$SRC
432     done <<-EOF
433 fphelp.t.pm
434 help.t.pm
435 paint.l.pm
436 paint.m.pm
437 paint.t.pm
438 penpad.t.pm
439 term.t.pm
440         EOF
441 }
442
443 ConfigurePrintersDir()
444 {
445     cd $DT_TOP/$APPCONFIG/appmanager
446 XCOMM
447 XCOMM for each locale
448 XCOMM
449     for i in *
450     do
451         if [ -d $i ]
452         then
453             cd $i
454         HASH
455         HASH for each directory in the locale, check for a 
456         HASH localized version of the Printers directory
457         HASH and for the file lp_Print within that directory
458         HASH
459             for j in *
460             do
461               if [ -f $j/$DEFAULT_PRINTER ]
462               then
463
464                 PRINTERS=$j
465
466                 HASH make the equivalent directory in the configuration
467                 HASH directory
468
469                 if [ ! -d $DT_CONFIG_TOP/$APPCONFIG/appmanager/$i ]
470                 then
471                     mkdir $DT_CONFIG_TOP/$APPCONFIG/appmanager/$i
472                 fi
473                 cd $DT_CONFIG_TOP/$APPCONFIG/appmanager/$i
474                 if [ ! -d $DT_CONFIG_TOP/$APPCONFIG/appmanager/$i/$PRINTERS ]
475                 then
476                     mkdir $DT_CONFIG_TOP/$APPCONFIG/appmanager/$i/$PRINTERS
477                 fi
478                 cd $DT_CONFIG_TOP/$APPCONFIG/appmanager/$i/$PRINTERS
479
480                 HASH now copy the file over from the installation dirctory
481                 HASH if it is not already present.
482
483                 if [ ! -f $DEFAULT_PRINTER ]
484                 then
485                     cp $DT_TOP/$APPCONFIG/appmanager/$i/$PRINTERS/$DEFAULT_PRINTER .
486                 fi
487                 cd $DT_TOP/$APPCONFIG/appmanager/$i
488               fi
489             done
490             cd $DT_TOP/$APPCONFIG/appmanager
491         fi
492     done
493 }
494
495            
496 XCOMM ##########################################################################
497 XCOMM
498 XCOMM                           Main Body
499 XCOMM
500 XCOMM ##########################################################################
501
502 PRODUCT=CDE
503 FILESET=CDE-RUN
504
505 retval=0
506
507 DT_TOP=/usr/dt
508 DT_CONFIG_TOP=/etc/dt
509 DT_TEMP_TOP=/var/dt
510 DO_CONFIGURATION=""
511 ROOT=/
512
513 retval=0
514
515 APPCONFIG=appconfig
516 APPCONFIG_DIRS="appmanager help icons types"
517 PRINTERS=""
518 DEFAULT_PRINTER="DtPrint"
519
520 #ifndef _POWER
521   StopDaemon "rpc.cmsd"
522 #endif
523
524   HandleOption $*
525
526   if [ "$DO_CONFIGURATION" = "yes" ]
527   then
528
529
530 XCOMM
531 XCOMM create the /var/dt directory
532 XCOMM
533     if [ ! -d $DT_TEMP_TOP/$APPCONFIG/appmanager ]
534     then
535         mkdir -p $DT_TEMP_TOP/$APPCONFIG/appmanager
536     fi
537     cd $DT_TEMP_TOP
538     mv $APPCONFIG/appmanager .hidden-appmanager
539     chmod -R 755 * 2> /dev/null
540     chmod 755 .hidden-appmanager 2> /dev/null
541     chown -R bin * 2> /dev/null
542     chgrp -R bin * 2> /dev/null
543     mv .hidden-appmanager $APPCONFIG/appmanager
544     chmod 755 . 2> /dev/null
545     chown bin . 2> /dev/null
546     chgrp bin . 2> /dev/null
547
548 XCOMM
549 XCOMM create the /etc/dt and its config directory
550 XCOMM
551     if [ ! -d $DT_CONFIG_TOP ]
552     then
553         mkdir -p $DT_CONFIG_TOP
554     fi
555     if [ ! -d $DT_CONFIG_TOP/config ]
556     then
557         mkdir -p $DT_CONFIG_TOP/config
558     fi
559
560     CreateAppConfigDirectory
561
562     ConfigurePrintersDir
563
564     env LANG=C /usr/dt/bin/dtprintinfo -populate
565
566 XCOMM
567 XCOMM Configure Xsession.d
568 XCOMM
569
570     cd $DT_CONFIG_TOP/config
571     if [ ! -d Xsession.d ]
572     then
573         mkdir Xsession.d
574     fi
575
576     cd $DT_CONFIG_TOP
577     chmod -R 755 *
578
579     LinkOtherIcons
580
581 #ifndef _POWER
582     AddSmitStanzas
583 #endif
584
585     FixEtcRpc
586
587 XCOMM After adding the Calendar Manager to the rpc service list the 
588 XCOMM portmapper needs to be restarted.
589
590 #ifndef _POWER
591     CheckPortmap
592 #endif
593
594     CheckFor24cmsdinInetd
595     rc=$?
596     if [ "$rc" = "0" ]
597     then
598         Remove24cmsdFromInetd
599 #ifndef _POWER
600         inetimp
601 #endif
602         refresh -s inetd
603
604     fi
605
606     CheckForcmsdinInetd
607     rc=$?
608     if [ "$rc" = "0" ]
609     then
610         RemovecmsdFromInetserv
611     fi
612     AddcmsdToInetserv
613
614
615 #ifndef _POWER
616
617 XCOMM   After adding the Calendar Manager to the inetd service list, the inet
618 XCOMM   daemon needs to reread its configuration.
619
620     inetimp
621     refresh -s inetd
622 #endif
623
624
625
626   elif [ "$DO_CONFIGURATION" = "no" ]
627   then
628
629 #ifndef _POWER
630     DeleteSmitStanzas
631 #endif
632
633     UnfixEtcRpc
634
635 XCOMM After deleting the Calendar Manager to the rpc service list the 
636 XCOMM portmapper needs to be restarted.
637
638 #ifndef _POWER
639     CheckPortmap
640 #endif
641
642     CheckForcmsdinInetd
643     rc=$?
644     if [ "$rc" = "0" ]
645     then
646         RemovecmsdFromInetserv
647     else
648         echo "\ncmsd is already disabled..\n"
649         exit 0
650     fi
651
652
653 #ifndef _POWER
654 XCOMM   After adding the Calendar Manager to the inetd service list, the inet
655 XCOMM   daemon needs to reread its configuration.
656
657     inetimp
658     refresh -s inetd
659 #endif
660
661   fi