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

📄 find.cgi

📁 Unix下基于Web的管理工具
💻 CGI
字号:
#!/usr/local/bin/perl# find.cgi# Broadcast to other webmin serversrequire './servers-lib.pl';use Socket;foreach $s (&list_servers()) {	$server{gethostbyname($s->{'host'})}++;	}# create the broadcast socket$port = $config{'listen'} ? $config{'listen'} : 10000;socket(BROAD, PF_INET, SOCK_DGRAM, getprotobyname("udp")) ||	&error("socket failed : $!");setsockopt(BROAD, SOL_SOCKET, SO_BROADCAST, pack("l", 1));# broadcast to some useful addresses$myip = &to_ipaddress(&get_system_hostname());if ($myip =~ /^(\d+\.\d+\.\d+)\.\d+$/) {	push(@broad, "$1.255");	$myaddr{inet_aton($myip)}++;	}push(@broad, "255.255.255.255");if (&foreign_check("net")) {	&foreign_require("net", "net-lib.pl");	foreach $a (&foreign_call("net", "active_interfaces")) {		push(@broad, $a->{'broadcast'}) if ($a->{'broadcast'});		$myaddr{inet_aton($a->{'address'})}++ if ($a->{'address'});		}	}foreach $b (&unique(@broad)) {	send(BROAD, "webmin", 0, sockaddr_in($port, inet_aton($b)));	}# Get and display responses$| = 1;&header($text{'find_title'}, "");print "<hr><p>\n";$id = $tmstart = time();while(time()-$tmstart < 2) {	local $rin;	vec($rin, fileno(BROAD), 1) = 1;	if (select($rin, undef, undef, 1)) {		local $buf;		local $from = recv(BROAD, $buf, 1024, 0);		local ($fromport, $fromaddr) = sockaddr_in($from);		local $fromip = inet_ntoa($fromaddr);		if ($fromip !~ /\.(255|0)$/ && !$already{$fromip}++) {			local ($host, $port, $ssl) = split(/:/, $buf);			local $byname = gethostbyaddr($fromaddr, AF_INET);			$host = !$host && $byname ? $byname :				!$host && !$byname ? $fromip :						     $host;			local $url = ($ssl ? 'https' : 'http').				     "://$host:$port/";			if ($server{$fromaddr}) {				print &text('find_already',					    "<tt>$url</tt>"),"<br>\n";				}			elsif ($myaddr{$fromaddr}) {				print &text('find_me',					    "<tt>$url</tt>"),"<br>\n";				}			else {				print &text('find_new',					    "<tt>$url</tt>"),"<br>\n";				&save_server({	'id' => $id++,						'ssl' => $ssl,						'type' => 'unknown',						'port' => $port,						'host' => $host });				}			}		}	}print "<p><hr>\n";&footer("", $text{'index_return'});

⌨️ 快捷键说明

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