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

📄 webserver.java

📁 java语言开发的P2P流媒体系统
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
		writer.writeln("<!--"); //$NON-NLS-1$
		writer.writeln("body, h1, h2, th, td, p, ul, li { font-family: Arial, Helvetica, sans-serif }"); //$NON-NLS-1$
		writer.writeln("th { text-align: right }"); //$NON-NLS-1$
		writer.writeln("table.freeloader th { text-align: left }"); //$NON-NLS-1$
		writer.writeln("-->"); //$NON-NLS-1$
		writer.writeln("</STYLE>"); //$NON-NLS-1$
		writer.writeln("<META HTTP-EQUIV=\"refresh\" CONTENT=\"" + REFRESH_PERIOD + "; URL=http://" + getWebHost(peer) + "/\">"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$		
		writer.writeln("<META HTTP-EQUIV=\"Content-type\" CONTENT=\"text/html; charset=ISO-8859-1\">"); //$NON-NLS-1$
		writer.writeln("</HEAD>"); //$NON-NLS-1$
		writer.writeln("<BODY>"); //$NON-NLS-1$
		
		writer.writeln("<H1>" + textToHTML(Messages.getString("WebServer.TITLE", new Object[]{Radio.s2sName, peer.getSocketAddress()})) + "</H1>"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
		
		MetadataPacket metadataPacket = peer.getBuffer().getNewestMetadataPacket(); 
		if (shutdown)
			return;
		if (metadataPacket != null)
		{
			Metadata metadata = peer.getUI().getMetadata();
			
			writer.writeln("<H2>" + textToHTML(Messages.getString("WebServer.STREAM")) + "</H2>"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
				
			writer.writeln("<TABLE BORDER>"); //$NON-NLS-1$
			writer.writeln("<TR><TH>" + textToHTML(Messages.getString("WebServer.STATION_NAME")) + "</TH><TD>" + makeLinkOfName(metadata.getStationName(), metadata.getStationURL()) + "</TD></TR>"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
					
			// Hack
			if (metadata.getContentType().toLowerCase().equals("audio/mpeg") || metadata.getContentType().toLowerCase().equals("application/ogg")) //$NON-NLS-1$ //$NON-NLS-2$
			{
				writer.writeln("<TR><TH>" + textToHTML(Messages.getString("WebServer.CURRENT_SONG")) + "</TH><TD>" + makeLinkOfName(metadata.getSongTitle(), metadata.getSongURL()) + "</TD></TR>"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
			}
			else if (metadata.getContentType().toLowerCase().equals("video/nsv")) //$NON-NLS-1$ //$NON-NLS-2$
			{
				writer.writeln("<TR><TH>" + textToHTML(Messages.getString("WebServer.CURRENT_VIDEO")) + "</TH><TD>" + makeLinkOfName(metadata.getSongTitle(), metadata.getSongURL()) + "</TD></TR>"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$				
			}
			else
			{
				writer.writeln("<TR><TH>" + textToHTML(Messages.getString("WebServer.CURRENT_CONTENT")) + "</TH><TD>" + makeLinkOfName(metadata.getSongTitle(), metadata.getSongURL()) + "</TD></TR>"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$				
			}
			
			writer.writeln("<TR><TH>" + textToHTML(Messages.getString("WebServer.STATION_GENRE")) + "</TH><TD>" + textToHTML(metadata.getGenre()) + "</TD></TR>"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
			writer.writeln("<TR><TH>" + textToHTML(Messages.getString("WebServer.STATION_DESCRIPTION")) + "</TH><TD>" + textToHTML(metadata.getDescription()) + "</TD></TR>"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
			
			writer.writeln("<TR><TH>" + textToHTML(Messages.getString("WebServer.BIT_RATE")) + "</TH><TD>" + textToHTML(Messages.getString("WebServer.BIT_RATE_VALUE", new Integer(metadata.getAverageByterate() / 125))) + "</TD></TR>"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
			writer.writeln("</TABLE>"); //$NON-NLS-1$
			
			/*
			if (player instanceof ShoutcastPlayer)
			{			
				writer.writeln("<H2>Zus&auml;tzliche Shoutcast-Metadaten:</H2>");
				writer.writeln("<TABLE BORDER>");

				Enumeration enumeration = metadata.propertyNames();
																
				while (enumeration.hasMoreElements())
				{
					String key = (String)enumeration.nextElement();
				
					boolean found = false;
				
					for (int i=0; i < Metadata.knownMetadataKeys.length; i++)
					{
						if (Metadata.knownMetadataKeys[i].equals(key))
						{
							found = true;
							break;
						}
					}
				
					if (found)
					{
						continue;
					}
				
					String value = (String)metadata.getProperty(key);
		
					writer.writeln("<TR><TH>" + textToHTML(key) + ":</TH><TD>" + textToHTML(value) + "</TD></TR>");
				}

				writer.writeln("</TABLE>");
			}
			*/
		}
		
		if (shutdown)
			return;
		if (player instanceof HttpPlayer)
		{
			HttpPlayer shoutcastPlayer = (HttpPlayer)player;
			writer.writeln("<P><A HREF=\"" + shoutcastPlayer.getPlaylistURL() + "\">" + textToHTML(Messages.getString("WebServer.PLAY_THIS_STATION")) + "</A></P>"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
			writer.writeln("<P>" + textToHTML(Messages.getString("WebServer.STREAM_ADDRESS")) + " <TT>" + shoutcastPlayer.getStreamURL() + "</TT></P>"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
		}
			
		synchronized(peer)
		{
			if (shutdown)
				return;
			String listeners = "";
			if (peer.isServer())
			{
				int number = 0;
				if (MessageDispatcher.acceptedPeers != null)
					number = MessageDispatcher.acceptedPeers.size();
				listeners = "(Listeners:  " + number + ")";
			}	
			writer.writeln("<H2>" + textToHTML(Messages.getString("WebServer.P2P_NETWORK")) + listeners + "</H2>"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
			
			writer.writeln("<TABLE BORDER>"); //$NON-NLS-1$
			
			if (peer.isServer())
			{
				writer.writeln("<TR><TH>" + textToHTML(Messages.getString("WebServer.BROADCASTER")) + "</TH><TD><EM>" + textToHTML(Messages.getString("WebServer.THAT_IS_ME")) + "</EM></TD></TR>"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
			}
			else
			{	
				if (peer.getServer() != null)
				{
					writer.writeln("<TR><TH>" + textToHTML(Messages.getString("WebServer.BROADCASTER")) + "</TH><TD>" + makeLink(peer.getServer()) + "</TD></TR>"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
				}
				else
				{
					writer.writeln("<TR><TH>" + textToHTML(Messages.getString("WebServer.BROADCASTER")) + "</TH><TD><EM>" + textToHTML(Messages.getString("WebServer.MISSING")) + "</EM></TD></TR>"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
				}
							
				if (peer.getSupplier() != null)
				{
					writer.writeln("<TR><TH>" + textToHTML(Messages.getString("WebServer.SUPPLIER")) + "</TH><TD>" + makeLink(peer.getSupplier()) + "</TD></TR>"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
				}
				else
				{
					writer.writeln("<TR><TH>" + textToHTML(Messages.getString("WebServer.SUPPLIER")) + "</TH><TD><EM>" + textToHTML(Messages.getString("WebServer.MISSING")) + "</EM></TD></TR>"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
				}
			}
						
			writer.write("<TR><TH>" + textToHTML(Messages.getString("WebServer.REMOTE_CHILDREN")) + "</TH><TD>"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
						
			LinkedList remoteChildren = peer.getRemoteChildren();
						
			if (remoteChildren.size() != 0)
			{
				for (int i=0; i < remoteChildren.size(); i++)
				{
					if (i != 0)
					{
						writer.write("<BR>"); //$NON-NLS-1$
					}
					
					writer.write(makeLink((RemotePeer)remoteChildren.get(i)));
				}
			}
			else
			{
				writer.write("<EM>" + textToHTML(Messages.getString("WebServer.NONE")) + "</EM>"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
			}
						
			writer.writeln("</TD></TR>"); //$NON-NLS-1$
			
			
			writer.write("<TR><TH>" + textToHTML(Messages.getString("WebServer.LOCAL_CHILDREN")) + "</TH><TD>"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
			LinkedList localChildren = peer.getLocalChildren();
			if (localChildren.size() != 0)
			{
				for (int i=0; i < localChildren.size(); i++)
				{
					if (i != 0)
					{
						writer.write("<BR>"); //$NON-NLS-1$
					}
					
					writer.write(makeLink((RemotePeer)localChildren.get(i)));
				}
			}
			else
			{
				writer.write("<EM>" + textToHTML(Messages.getString("WebServer.NONE")) + "</EM>"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
			}
						
			writer.writeln("</TD></TR>"); //$NON-NLS-1$
					
			writer.write("<TR><TH>" + textToHTML(Messages.getString("WebServer.BANNED_PEERS")) + "</TH><TD>"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
						
			Vector bannedPeers = peer.getBannedPeers();
						
			if (bannedPeers.size() != 0)
			{
				for (int i=0; i < bannedPeers.size(); i++)
				{
					if (i != 0)
					{
						writer.write("<BR>"); //$NON-NLS-1$
					}
					
					writer.write(makeLink((RemotePeer)bannedPeers.get(i)));
				}
			}
			else
			{
				writer.write("<EM>" + textToHTML(Messages.getString("WebServer.NONE")) + "</EM>"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
			}
						
			writer.writeln("</TD></TR>"); //$NON-NLS-1$
			writer.writeln("</TABLE>"); //$NON-NLS-1$
						
						
			writer.writeln("<H2>" + textToHTML(Messages.getString("WebServer.FREELOADER_COMPLAINTS")) + "</H2>"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
					
			boolean freeloaderFound = false;
			Vector children = peer.getChildren();
			for (int i=0; i < children.size(); i++)
			{
				RemotePeerData childData = peer.getChildData((RemotePeer)children.get(i));
				Vector freeloaderComplainants = childData.getFreeloaderComplainants();
							
				if (freeloaderComplainants.size() != 0)
				{
					if (!freeloaderFound)
					{
						freeloaderFound = true;
						
						writer.writeln("<TABLE CLASS=\"freeloader\" BORDER>"); //$NON-NLS-1$
						writer.writeln("<TR><TH>" + textToHTML(Messages.getString("WebServer.POSSIBLE_FREELOADER")) + "</TH><TH>" + textToHTML(Messages.getString("WebServer.REPORTED_BY")) + "</TH></TR>"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$ //$NON-NLS-5$
					}
					
					writer.write("<TR><TD>" + makeLink((RemotePeer)children.get(i)) + "</TD><TD>"); //$NON-NLS-1$ //$NON-NLS-2$
							
					for (int j=0; j < freeloaderComplainants.size(); j++)
					{
						if (j != 0)
						{
							writer.write("<BR>"); //$NON-NLS-1$
						}
						
						writer.write(makeLink((RemotePeer)freeloaderComplainants.get(j)));
					}
						
					writer.writeln("</TD></TR>"); //$NON-NLS-1$
				}
			}
			
			if (freeloaderFound)
			{			
				writer.writeln("</TABLE>"); //$NON-NLS-1$
			}
			else
			{
				writer.writeln("<EM>" + textToHTML(Messages.getString("WebServer.NONE")) + "</EM>"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
			}
		}
		if (shutdown)
			return;
		if (player instanceof HttpPlayer)
		{
			HttpPlayer httpPlayer = (HttpPlayer)player;
			
			// Adresse des eigenen Sockets zusammensetzen
			// Nur f黵 interne Verwendung
			int ownPort = tcpSocket.getLocalPort();
			String ownURL ="http://localhost:" + ownPort; //$NON-NLS-1$
			
			writer.writeln("<P><A HREF=\"" + ownURL + "\">" + textToHTML(Messages.getString("WebServer.REFRESH")) + "</A></P>"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
		
			// writer.writeln("<P>Sie k&ouml;nnen diese Informationen auch in Ihrem Web-Browser anschauen: <STRONG>" + ownURL + "/</STRONG><BR>Dort ist es auch m&ouml;glich, den Media-Player automatisch zu starten und die Informationen der anderen Peers einzusehen.</P>");
				
			writer.writeln(Messages.getString("WebServer.HINTS_HTML", new Object[]{httpPlayer.getStreamURL(), (ownURL + "/"), textToHTML(Messages.getString("WebServer.PLAY_THIS_STATION"))})); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
		}
				
		/*
		writer.writeln("<HR>");
		writer.writeln("<ADDRESS>" + Radio.Name + " " + Radio.Version + "</ADDRESS>");
		*/

		writer.writeln("</BODY>"); //$NON-NLS-1$
		writer.writeln("</HTML>"); //$NON-NLS-1$

		writer.flush();
		
		return;
	}
		
	private static String makeLink(RemotePeer peer)
	{
		if (peer.isMulticastAddress())
			return getRealHost(peer); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
		return "<A HREF=\"http://" + getWebHost(peer) + "/\">" + getRealHost(peer) + "</A>"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
	}

	private static String getRealHost(RemotePeer peer)
	{
		return peer.getSocketAddress().getAddress().getCanonicalHostName() + ":" + peer.getSocketAddress().getPort(); //$NON-NLS-1$
	}
	
	private static String getWebHost(RemotePeer peer)
	{
		return peer.getSocketAddress().getAddress().getHostAddress() + ":" + (peer.getSocketAddress().getPort() + Peer.WEBINTERFACE_PORT_OFFSET); //$NON-NLS-1$
	}
	
	private static String makeLinkOfName(String name, String url)
	{
		if (url.length() == 0)
		{
			return textToHTML(name);
		}
		else
		{
			return "<A HREF=\"" + textToHTML(url) + "\">" + textToHTML(name) + "</A>"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
		}
	}
		
	private static String textToHTML(String text)
	{
		text = StringReplacer.replaceAll(text, "&", "&amp;");  // muss zuerst gemacht werden! //$NON-NLS-1$ //$NON-NLS-2$
		text = StringReplacer.replaceAll(text, "<", "&lt;"); //$NON-NLS-1$ //$NON-NLS-2$
		text = StringReplacer.replaceAll(text, ">", "&gt;"); //$NON-NLS-1$ //$NON-NLS-2$
		text = StringReplacer.replaceAll(text, "\"", "&quot;"); //$NON-NLS-1$ //$NON-NLS-2$
		text = StringReplacer.replaceAll(text, "

⌨️ 快捷键说明

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