⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 edit_part.cgi

📁 Unix下基于Web的管理工具
💻 CGI
字号:
#!/usr/local/bin/perl# edit_part.cgi# Edit an existing partition, or create a new onerequire './fdisk-lib.pl';&ReadParse();@dlist = &list_disks();$dinfo = $dlist[$in{'disk'}];&can_edit_disk($dinfo->{'device'}) ||	&error($text{'edit_ecannot'});if ($in{'new'}) {	&header($text{'create_title'}, "");	}else {	&header($text{'edit_title'}, "");	}print "<hr>\n";print "<table border width=100%>\n";print "<tr $tb> <td><b>$text{'edit_details'}</b></td> </tr>\n";print "<form action=save_part.cgi><tr $cb><td><table width=100%>\n";print "<input type=hidden name=disk value=$in{'disk'}>\n";print "<input type=hidden name=part value=$in{'part'}>\n";print "<input type=hidden name=new value=$in{'new'}>\n";@plist = &list_partitions($dinfo->{'device'});if ($in{'new'}) {	if ($in{'new'} == 1 || $in{'new'} == 3) {		# Adding a new primary or extended partition		$np = 1;		for($i=0; $i<@plist; $i++) {			if ($plist[$i]->{'number'} == $np) { $np++; }			push(@start, $plist[$i]->{'start'});			push(@end, $plist[$i]->{'end'});			}		$min = 1;		$max = $dinfo->{'cylinders'};		}	else {		# Adding a new logical partition (inside the extended partition)		$np = 5;		for($i=0; $i<@plist; $i++) {			if ($plist[$i]->{'number'} == $np) { $np++; }			if ($plist[$i]->{'extended'}) {				$min = $plist[$i]->{'start'} + 1;				$max = $plist[$i]->{'end'};				}			else {				push(@start, $plist[$i]->{'start'});				push(@end, $plist[$i]->{'end'});				}			}		}	print "<input type=hidden name=newpart value=$np>\n";	print "<input type=hidden name=min value=$min>\n";	print "<input type=hidden name=max value=$max>\n";	# find a gap in the partition map	for($start=$min; $start<=$max; $start++) {		$found = 1;		for($i=0; $i<@start; $i++) {			if ($start >= $start[$i] && $start <= $end[$i]) {				$found = 0;				last;				}			}		if ($found) { last; }		}	if ($found) {		# starting place found.. find the end		$found = 0;		for($end=$start; $end<=$max; $end++) {			for($i=0; $i<@start; $i++) {				if ($end >= $start[$i] && $end <= $end[$i]) {					$found = 1;					last;					}				}			if ($found) { last; }			}		$end--;		}	else {		# no place for new partition!		$start = $end = 0;		}	}else { 	# Just editing an existing partition	$pinfo = $plist[$in{'part'}];	$np = $pinfo->{'number'};	}print "<tr> <td valign=top><b>$text{'edit_location'}</b></td>\n";print "<td>",&text('select_part', uc($dinfo->{'type'}),		   uc(substr($dinfo->{'device'}, -1)), $np),"</td>\n";print "<td><b>$text{'edit_device'}</b></td>\n";$dev = $dinfo->{'device'}.$np;print "<td>$dev</td> </tr>\n";print "<tr> <td><b>$text{'edit_type'}</b></td>\n";if ($pinfo->{'extended'} || $in{'new'} == 3) {	print "<td>$text{'extended'}</td>\n";	}else {	print "<td><select name=type>\n";	foreach $t (&list_tags()) {		printf "<option value=$t %s> %s\n",			($in{'new'} && $t eq "83" ||			 !$in{'new'} && $t eq $pinfo->{'type'}) ? "selected"								: "",			&tag_name($t);		}	print "</select></td>\n";	}print "<td><b>$text{'edit_extent'}</b></td>\n";if ($in{'new'}) {	print "<td><input name=start size=4 value=$start> - \n";	print "<input name=end size=4 value=$end>\n";	}else {	print "<td><tt>$pinfo->{'start'}</tt> - <tt>$pinfo->{'end'}</tt>\n";	}print "of $dinfo->{'cylinders'}</td> </tr>\n";print "<tr> <td><b>$text{'edit_status'}</b></td>\n";if ($pinfo->{'extended'}) {	foreach $p (@plist) {		$ecount++ if ($p->{'number'} > 4);		}	printf "<td>Contains %d partition%s</td>\n",		$ecount, $ecount == 1 ? '' : 's';	}else {	@stat = &device_status($dev);	if (@stat) {		$msg = $stat[2] ? 'edit_mount' : 'edit_umount';		$msg .= 'vm' if ($stat[1] eq "swap");		print "<td>",&text($msg, "<tt>$stat[0]</tt>",		      "<tt>$stat[1]</tt></td>"),"</td>\n";		}	elsif ($in{'new'}) { print "<td>$text{'edit_notexist'}</td>\n"; }	else { print "<td>$text{'edit_notused'}</td>\n"; }	}print "<td><b>$text{'edit_size'}</b></td>\n";if ($in{'new'}) { print "<td>$text{'edit_notexist'}</td> </tr>\n"; }else { print "<td>",&text('edit_blocks', $pinfo->{'blocks'}),"</td> </tr>\n"; }print "</table></td></tr></table><p>\n";if (@stat) { print "<b>$text{'edit_inuse'}</b>.\n"; }elsif ($in{'new'}) {	print "<input type=submit value='$text{'create'}'>\n";	}else {	if (!$pinfo->{'extended'}) {		print "<input type=submit value='$text{'save'}'>\n";		}	print "<input name=delete type=submit value='$text{'delete'}'>\n";	}print "</form>\n";if (!$in{'new'} && !$pinfo->{'extended'}) {	if (!$in{'new'} && (!@stat || $stat[2] == 0) &&	    &conv_type($pinfo->{'type'})) {		print "<hr><table width=100%>\n" if (!$donehead++);		print "<tr> <form action=mkfs_form.cgi>\n";		print "<td valign=top>\n";		print "<input type=hidden name=dev value=$dev>\n";		print "<input type=hidden name=type value=",		      &conv_type($pinfo->{'type'}),">\n";		print "<input type=submit value=\"$text{'edit_mkfs'}\"></td>\n";		print "<td>$text{'edit_mkfsmsg'}</td>\n";		print "</form> </tr>\n";		}	if (!$in{'new'} && @stat && $stat[2] == 0 && &can_fsck($stat[1])) {		print "<hr><table width=100%>\n" if (!$donehead++);		print "<tr> <form action=fsck_form.cgi>\n";		print "<td valign=top>\n";		print "<input type=hidden name=dev value=$dev>\n";		print "<input type=submit value=\"$text{'edit_fsck'}\"></td>\n";		print "<td>",&text('edit_fsckmsg', "<tt>fsck</tt>"),"</td>\n";		print "</form> </tr>\n";		}	if (!$in{'new'} && @stat && $stat[2] == 0 && &can_tune($stat[1])) {		print "<hr><table width=100%>\n" if (!$donehead++);		print "<tr> <form action=tunefs_form.cgi>\n";		print "<td valign=top>\n";		print "<input type=hidden name=dev value=$dev>\n";		print "<input type=hidden name=type value=",		      &conv_type($pinfo->{'type'}),">\n";		print "<input type=submit value=\"Tune Filesystem\"></td>\n";		print "<td>$text{'edit_tunemsg'}</td> </tr>\n";		print "</form> </tr>\n";		}	print "</table><p>\n" if ($donehead);	}print "<hr>\n";&footer("", $text{'index_return'});

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -