Oily Rag 1: CD Part 4 Scripts: Difference between revisions
Jump to navigation
Jump to search
(New page: {{Uc nav oily rag 1 CD}} Return to CD Part 4 == cd_mode.pl == <pre> ############################################### ### Uniform Server - CD ...) |
(No difference)
|
Revision as of 21:45, 8 July 2008
Oily Rag 1: Introduction | CD Part 1 | CD Part 2 | CD Part 3 | CD Part 4 | CD Part 4 Scripts | CD Part 5 | CD Part 6 | Downloads |
Oily Rag: Be prepared to get your hands dirty. |
cd_mode.pl
############################################### ### Uniform Server - CD Configuration ### ############################################### # File Name: cd_mode.pl # Created By: UniCenter MPG # Edited Last By: Mike Gleaves (Ric) # Comment: Run US from CD # Example plugin USCD2 For 3.5-Apollo # 12-7-07 V1.0 # 2-7-08 V1.1 ################################################ #=1 ============================================================= # Read set-up data and check previous mode used $cd_data = "./uscd/cd_data.txt"; # set-up and tracking file open(INFILE,$cd_data) or (print "Could not open $cd_data for reading: $!\n"); # open file @cd_us_data=<INFILE>; # load file data to array close(INFILE); # close file $temp_drive = $cd_us_data[0]; # Drive currently used for temp folder chomp $temp_drive; # clean $temp_folder = $cd_us_data[1]; # Folder used for temp data chomp $temp_folder; # clean $current_mode = $cd_us_data[2]; # Current mode set chomp $current_mode; # clean $previous_drive = $cd_us_data[3]; # previous drive chomp $previous_drive; # clean $previous_folder = $cd_us_data[4]; # previous folder chomp $previous_folder; # clean # check current mode if ($current_mode eq "cd"){ # Are we trying to run in the same mode system( 'cls' ); # yes well not a good idea print "You are already running in CD mode!\n"; print "This script will now stop\n\n"; system( 'pause' ); exit; } # Previous mode was US so continue #=2 ============================================================ #Get new user temporary folder or use previous/default set path system( 'cls' ); #clear screen print "What temporary folder path would you like to use?\n"; #display message print "Press enter key to accept default\n"; print " or\n"; print " enter a new value\n\n"; print "Default drive letter is ".$temp_drive." New value = "; #display default drive my $new_drive = <STDIN>; #get new drive letter print "\nDefault folder is ".$temp_folder." New value = "; #display default folder my $new_folder = <STDIN>; #get new folder chomp $new_drive; #clean input chomp $new_folder; if($new_drive eq ""){ #no input $new_drive = $temp_drive; #use default } if($new_folder eq ""){ #no input $new_folder = $temp_folder; #use default } print "\n\n"; #=3 ============================================================ # Set cd_data and save to file $cd_us_data[0] = $new_drive . "\n"; # set new or use old $cd_us_data[1] = $new_folder . "\n"; # set new or use old $cd_us_data[2] = "cd\n"; # change mode to cd $cd_us_data[3] = $temp_drive . "\n"; # save previous drive $cd_us_data[4] = $temp_folder . "\n"; # save previous path # Save cd data to file open(OUTFILE,">$cd_data") or (print "Unable to open $file for writing:"); foreach $save(@cd_us_data){ # loop through the array print OUTFILE $save; # write each line } close(OUTFILE); # finished close file #=4 =========================================================== # Update new_Server_Start and new_Stop bat files with new path @mpg=(); #clear array push(@mpg,"./uscd/new_Server_Start.bat"); # path to new start bat push(@mpg,"set uscddrive=".$temp_drive); # search string push(@mpg,"set uscddrive=".$new_drive); # replace string push(@mpg,$st1 = "set uscdfolder=".$temp_folder); # search string push(@mpg,$st2 = "set uscdfolder=".$new_folder); # replace string update_files(@mpg); # search replace save file @mpg=(); #clear array push(@mpg,"./uscd/new_Stop.bat"); # path to new start bat push(@mpg,"set uscddrive=".$temp_drive); # search string push(@mpg,"set uscddrive=".$new_drive); # replace string push(@mpg,"set uscdfolder=".$temp_folder); # search string push(@mpg,"set uscdfolder=".$new_folder); # replace string update_files(@mpg); # search replace save file #=5 ============================================================ #Copy bat files to Uniform Server folder coppy ("./uscd/new_Stop.bat","../../../Stop.bat"); coppy ("./uscd/new_Server_Start.bat","../../../Server_Start.bat"); #=6 ============================================================ #.............. DELETE THIS SECTION IF NOT REQUIRED ............ # Also delete corresponding section in file us_mpde.pl # Replace: Admin menu with CD version limited functions # Replace: Admin home page. # Copy: Read_me to docs folder. coppy ("./uscd/new_navigation.php","../../home/admin/www/navigation.php"); coppy ("./uscd/new_start.php","../../home/admin/www/start.php"); coppy ("./uscd/read_me_cd.txt","../../docs/read_me_cd.txt"); #............................................................... #=7 =========================================================== #Build path to temporary folder $tpath = $new_drive . ":/" . $new_folder; #build path #=8 ============================================================ # Update Uniserver configuration files # with new path information. #=== Apache @mpg=(); # clear array push(@mpg,"../../usr/local/apache2/conf/httpd.conf"); # filepath push(@mpg,"PidFile logs/httpd.pid"); # search for push(@mpg,"PidFile $tpath/apache/logs/httpd.pid"); # replace with push(@mpg,"ErrorLog logs/error.log"); # search for push(@mpg,"ErrorLog $tpath/apache/logs/error.log"); # replace with push(@mpg,"CustomLog logs/access.log combined"); # search for push(@mpg,"#CustomLog logs/access.log combined"); # replace with update_files(@mpg); # search replace save file #=== END Apache #===MySQL @mpg=(); # clear array push(@mpg,"../../usr/local/mysql/bin/my-small.cnf"); # filepath push(@mpg,"datadir = \"/usr/local/mysql/data/\""); # search for push(@mpg,"datadir = \"$tpath/mysql/data/\""); # replace with push(@mpg,"tmpdir = \"/tmp\""); # search for push(@mpg,"tmpdir = \"$tpath/mysql/tmp\""); # replace with update_files(@mpg); # search replace save file #=== END MySQL #===php @mpg=(); # clear array push(@mpg,"../../usr/local/php/php.ini"); # filepath push(@mpg,"error_log = logs/logs.log"); # search for push(@mpg,"error_log = $tpath/php/logs/logs.log"); # replace with push(@mpg,"upload_tmp_dir = /tmp"); # search for push(@mpg,"upload_tmp_dir = $tpath/php/tmp"); # replace with # The default is /tmp/ extra slash at the end? the next two sections capture # either. When restored using us-mode does not add the extra slash push(@mpg,"session.save_path = \"/tmp/\""); ## delete line for us-mode search for push(@mpg,"session.save_path = \"$tpath/php/tmp\""); ## delete line for us-modereplace with push(@mpg,"session.save_path = \"/tmp\""); # search for push(@mpg,"session.save_path = \"$tpath/php/tmp\""); # replace with update_files(@mpg); # search replace save file #===END php #===phpMyAdmin @mpg=(); # clear array push(@mpg,"../../home/admin/www/phpMyAdmin/config.inc.php");# filepath push(@mpg,"/etc/phpmyadmin"); # search string push(@mpg,"$tpath/phpmyadmin/etc/phpmyadmin"); # replace string push(@mpg,"/tmp"); # search string push(@mpg,"$tpath/phpmyadmin/tmp"); # replace string update_files(@mpg); # search replace save file #===END phpMyAdmin #=9 ================================================================ system( 'pause' ); # wait for user #=10 ============================================================== # Function: Search and replace all string matches in a file. # Call using: update_files(@myarray) @myarray ordered as follows: # full file path, search str 1,replace str 1, search str 2,replace str 2.. #................................................................... sub update_files { my @search_info = @_; # from flattened array @_ create new array @search_info=reverse(@search_info); # re-order to give file path first my $file = pop(@search_info); # get first element of array. File to search open(INFILE,$file) or (print "Could not open $file for reading: $!\n" and return); my @text=<INFILE>; # we have file handle, load file to array for searching close(INFILE); # close file my $found = 0; # Set if string found in array loaded while (@search_info !=0){ # loop through replacement array until all data used #==== Difference between cd-mode and us-mode change string name ============= # This allows common use of the reference cd-mode array @mpg. # Just copy section 8 Update Uniserver configuration from cd-mode to us-mode # Once copied delete the lines mentioned in the php section. # and make sure these strings are renamed switched. # $str1 = pop(@search_info); # cd_mode $str1 us-mode $str2 string to search for $str2 = pop(@search_info); # cd mode $str2 us-mode $str1 replace with string print "Searching $file for data\n"; # provide feedback to user foreach $line (@text){ # loop through array if($line=~/$str1/){ # check we have found a match $line=~s/$str1/$str2/ig; # yes do the match again and replace $found = 1; # set tracking variable print " -Found match in file\n"; # print conformation } }#end foreach }#end while if($found){ # A match was found hence write to file open(OUTFILE,">$file") or (print "Unable to open $file for writing:" and return); foreach $save(@text){ # loop through array set each line to variable $save print OUTFILE $save; # write each line contained in variable $save } close(OUTFILE); # finished close file } }#end sub #========================================= End sub update_files ==== #=11 =============================================================== # Function: Copy any file to a new location. Call using: # copy (source, destination) # Binary transfer mode (bit level)hence image (any) files are allowed. #................................................................... sub coppy { my $source = $_[0]; # full source path including file name my $destination = $_[1]; # full destination including file name open (FILE,"$source"); # Open file for input to read source file binmode FILE; # Binary mode. Bit level for text and image @lines=<FILE>; # Save bits to array close (FILE); # Close file handle open (FILE,">$destination"); # Open or create destination binmode FILE; # Transfer mode will be binary (bit level) print FILE @lines; # Copy everything to this file close (FILE); # Close file } #================================================= End sub copy ==== exit;
us_mode.pl
################################################## ### Uniform Server - US Standard Configuration ### ################################################## # File Name: us_mode.pl # Created By: UniCenter MPG # Edited Last By: Mike Gleaves (Ric) # Comment: Run US from CD # Example plugin USCD2 For 3.5-Apollo # 12-7-07 V1.0 # 2-7-08 V1.1 ################################################### #=1 ============================================================ # Read set-up data and check previous mode used $cd_data = "./uscd/cd_data.txt"; # set-up and tracking file open(INFILE,$cd_data) or (print "Could not open $cd_data for reading: $!\n"); # open file @cd_us_data=<INFILE>; # load file data to array close(INFILE); # close file $temp_drive = $cd_us_data[0]; # Drive currently used for temp folder chomp $temp_drive; # clean $temp_folder = $cd_us_data[1]; # Folder used for temp data chomp $temp_folder; # clean $current_mode = $cd_us_data[2]; # Current mode set chomp $current_mode; # clean # check current mode if ($current_mode eq "us"){ # Are we trying to run in the same mode system( 'cls' ); # yes well not a good idea print "You are already running in US mode!\n"; print "This script will now stop\n\n"; system( 'pause' ); exit; } # Previous mode was CD so continue #=3 ============================================================ # Set cd_data and save to file $cd_us_data[2] = "us\n"; # change mode to us # Save cd data to file open(OUTFILE,">$cd_data") or (print "Unable to open $file for writing:"); foreach $save(@cd_us_data){ # loop through the array print OUTFILE $save; # write each line } close(OUTFILE); #=5 ============================================================ #Copy bat files to Uniform Server folder coppy ("./uscd/old_Stop.bat","../../../Stop.bat"); coppy ("./uscd/old_Server_Start.bat","../../../Server_Start.bat"); #=6 ============================================================ #.............. DELETE THIS SECTION IF NOT REQUIRED ............ #Also delete corresponding section in file cd_mode.pl #Restore: Original Admin Menu. #Restore: Original Admin Home Page #Delete: Read_me doc. coppy ("./uscd/old_navigation.php","../../home/admin/www/navigation.php"); coppy ("./uscd/old_start.php","../../home/admin/www/start.php"); unlink "../../docs/read_me_cd.txt"; # delete read_me_cd text file #............................................................... #=7 ============================================================ #Build path to temporary folder $tpath = $temp_drive . ":/" . $temp_folder; #build path #=8 ============================================================ #Update Uniserver configuration files # with new path information. #=== Apache @mpg=(); # clear array push(@mpg,"../../usr/local/apache2/conf/httpd.conf"); # filepath push(@mpg,"PidFile logs/httpd.pid"); # search for push(@mpg,"PidFile $tpath/apache/logs/httpd.pid"); # replace with push(@mpg,"ErrorLog logs/error.log"); # search for push(@mpg,"ErrorLog $tpath/apache/logs/error.log"); # replace with push(@mpg,"CustomLog logs/access.log combined"); # search for push(@mpg,"#CustomLog logs/access.log combined"); # replace with update_files(@mpg); # search replace save file #=== END Apache #===MySQL @mpg=(); # clear array push(@mpg,"../../usr/local/mysql/bin/my-small.cnf"); # filepath push(@mpg,"datadir = \"/usr/local/mysql/data/\""); # search for push(@mpg,"datadir = \"$tpath/mysql/data/\""); # replace with push(@mpg,"tmpdir = \"/tmp\""); # search for push(@mpg,"tmpdir = \"$tpath/mysql/tmp\""); # replace with update_files(@mpg); # search replace save file #=== END MySQL #===php @mpg=(); # clear array push(@mpg,"../../usr/local/php/php.ini"); # filepath push(@mpg,"error_log = logs/logs.log"); # search for push(@mpg,"error_log = $tpath/php/logs/logs.log"); # replace with push(@mpg,"upload_tmp_dir = /tmp"); # search for push(@mpg,"upload_tmp_dir = $tpath/php/tmp"); # replace with # The default is /tmp/ extra slash at the end? CD-Mode remove this # hence only */temp is search for and replaced with this file push(@mpg,"session.save_path = \"/tmp\""); # search for push(@mpg,"session.save_path = \"$tpath/php/tmp\""); # replace with update_files(@mpg); # search replace save file #===END php #===phpMyAdmin @mpg=(); # clear array push(@mpg,"../../home/admin/www/phpMyAdmin/config.inc.php");# filepath push(@mpg,"/etc/phpmyadmin"); # search string push(@mpg,"$tpath/phpmyadmin/etc/phpmyadmin"); # replace string push(@mpg,"/tmp"); # search string push(@mpg,"$tpath/phpmyadmin/tmp"); # replace string update_files(@mpg); # search replace save file #===END phpMyAdmin #=9 =============================================================== system( 'pause' ); # wait for user #=10 ============================================================== # Function: Search and replace all string matches in a file. # Call using: update_files(@myarray) @myarray ordered as follows: # full file path, search str 1,replace str 1, search str 2,replace str 2.. #................................................................... sub update_files { my @search_info = @_; # from flattened array @_ create new array @search_info=reverse(@search_info); # re-order to give file path first my $file = pop(@search_info); # get first element of array. File to search open(INFILE,$file) or (print "Could not open $file for reading: $!\n" and return); my @text=<INFILE>; # we have file handle, load file to array for searching close(INFILE); # close file my $found = 0; # Set if string found in array loaded while (@search_info !=0){ # loop through replacement array until all data used #==== Difference between cd-mode and us-mode change string name ============= # This allows common use of the reference cd-mode array @mpg. # Just copy section 8 Update Uniserver configuration from cd-mode to us-mode # Once copied delete the lines mentioned in the php section. # and make sure these strings are renamed switched. # $str2 = pop(@search_info); # cd_mode $str1 us-mode $str2 string to search for $str1 = pop(@search_info); # cd mode $str2 us-mode $str1 replace with string print "Searching $file for data\n"; # provide feedback to user foreach $line (@text){ # loop through array if($line=~/$str1/){ # check we have found a match $line=~s/$str1/$str2/ig; # yes do the match again and replace $found = 1; # set tracking variable print " -Found match in file\n"; # print conformation } }#end foreach }#end while if($found){ # A match was found hence write to file open(OUTFILE,">$file") or (print "Unable to open $file for writing:" and return); foreach $save(@text){ # loop through array set each line to variable $save print OUTFILE $save; # write each line contained in variable $save } close(OUTFILE); # finished close file } }#end sub #========================================= End sub update_files ==== #=11 =============================================================== # Function: Copy any file to a new location. Call using: # copy (source, destination) # Binary transfer mode (bit level)hence image (any) files are allowed. #................................................................... sub coppy { my $source = $_[0]; # full source path including file name my $destination = $_[1]; # full destination including file name open (FILE,"$source"); # Open file for input to read source file binmode FILE; # Binary mode. Bit level for text and image @lines=<FILE>; # Save bits to array close (FILE); # Close file handle open (FILE,">$destination"); # Open or create destination binmode FILE; # Transfer mode will be binary (bit level) print FILE @lines; # Copy everything to this file close (FILE); # Close file } #================================================= End sub copy ==== exit;
Ric |