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

📄 httpserver.java

📁 发送短信 接收短信 多种接口com/net/modem 开发库
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
// SMSLib for Java v3
// A Java API library for sending and receiving SMS via a GSM modem
// or other supported gateways.
// Web Site: http://www.smslib.org
//
// Copyright (C) 2002-2008, Thanasis Delenikas, Athens/GREECE.
// SMSLib is distributed under the terms of the Apache License version 2.0
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package org.smslib.smsserver.interfaces;

import java.io.IOException;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Properties;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.mortbay.jetty.Request;
import org.mortbay.jetty.Server;
import org.mortbay.jetty.handler.AbstractHandler;
import org.smslib.AGateway;
import org.smslib.InboundMessage;
import org.smslib.Library;
import org.smslib.OutboundMessage;
import org.smslib.InboundMessage.MessageClasses;
import org.smslib.Message.MessageEncodings;
import org.smslib.Message.MessageTypes;
import org.smslib.OutboundMessage.MessageStatuses;
import org.smslib.smsserver.SMSServer;

/**
 * Interface for embedded web server.<br />
 */
public class HttpServer extends Interface<Integer>
{
	public static final int ERR_INVALID_PARMS = -9000;

	public static final int ERR_MISSING_PARMS = -9001;

	public static final int ERR_SEND_ERROR = -9002;

	public static final int ERR_WRONG_PASSWORD = -9003;

	public static final int ERR_INTERNAL_ERROR = -9999;

	WebServer webServer;

	public HttpServer(String myInterfaceId, Properties myProps, SMSServer myServer, InterfaceTypes myType)
	{
		super(myInterfaceId, myProps, myServer, myType);
		setDescription("Default HTTP Server interface.");
	}

	@Override
	public void start() throws Exception
	{
		setWebServer(new WebServer(this.getServer(), Integer.parseInt(getProperty("port", "8080"))));
		getWebServer().start();
		super.start();
	}

	@Override
	public void stop() throws Exception
	{
		getWebServer().interrupt();
		super.stop();
	}

	WebServer getWebServer()
	{
		return this.webServer;
	}

	void setWebServer(WebServer myWebServer)
	{
		this.webServer = myWebServer;
	}

	class WebServer extends Thread
	{
		SMSServer server;

		int port;

		public WebServer(SMSServer myServer, int myPort)
		{
			this.server = myServer;
			this.port = myPort;
		}

		@Override
		public void run()
		{
			Server httpServer = new Server(this.port);
			httpServer.setHandler(new HttpHandler(this.server));
			try
			{
				httpServer.start();
			}
			catch (Exception e)
			{
				e.printStackTrace();
			}
		}
	}

	class HttpHandler extends AbstractHandler
	{
		protected SMSServer server;

		public HttpHandler(SMSServer myServer)
		{
			this.server = myServer;
		}

		protected SMSServer getSMSServer()
		{
			return this.server;
		}

		public void handle(String target, HttpServletRequest request, HttpServletResponse response, int dispatch) throws IOException, ServletException
		{
			if (request.getPathInfo().toString().equals("/")) new Status(getSMSServer(), target, request, response, dispatch).process();
			else if (request.getPathInfo().toString().equals("/send")) new Send(getSMSServer(), target, request, response, dispatch).process();
			else if (request.getPathInfo().toString().equals("/read")) new Read(getSMSServer(), target, request, response, dispatch).process();
		}
	}

	abstract class AHttpCommand
	{
		private SMSServer smsServer;

		private String target;

		private HttpServletRequest request;

		private HttpServletResponse response;

		private int dispatch;

		public AHttpCommand(SMSServer myServer, String myTarget, HttpServletRequest myRequest, HttpServletResponse myResponse, int myDispatch)
		{
			setSMSServer(myServer);
			setTarget(myTarget);
			setRequest(myRequest);
			setResponse(myResponse);
			setDispatch(myDispatch);
		}

		protected SMSServer getSMSServer()
		{
			return this.smsServer;
		}

		protected void setSMSServer(SMSServer mySmsServer)
		{
			this.smsServer = mySmsServer;
		}

		protected String getTarget()
		{
			return this.target;
		}

		protected void setTarget(String myTarget)
		{
			this.target = myTarget;
		}

		protected HttpServletRequest getRequest()
		{
			return this.request;
		}

		protected void setRequest(HttpServletRequest myRequest)
		{
			this.request = myRequest;
		}

		protected HttpServletResponse getResponse()
		{
			return this.response;
		}

		protected void setResponse(HttpServletResponse myResponse)
		{
			this.response = myResponse;
		}

		protected int getDispatch()
		{
			return this.dispatch;
		}

		protected void setDispatch(int myDispatch)
		{
			this.dispatch = myDispatch;
		}

		public abstract void process() throws IOException, ServletException;
	}

	class Status extends AHttpCommand
	{
		public Status(SMSServer myServer, String myTarget, HttpServletRequest myRequest, HttpServletResponse myResponse, int myDispatch)
		{
			super(myServer, myTarget, myRequest, myResponse, myDispatch);
		}

		@Override
		public void process() throws IOException
		{
			PrintWriter body = getResponse().getWriter();
			getResponse().setContentType("text/html");
			getResponse().setStatus(HttpServletResponse.SC_OK);
			body.println("<html>");
			body.println("<head>");
			body.println("<title>SMSServer - Status</title>");
			body.println("<style type='text/css'> ");
			body.println("<!--");
			body.println("#box-table-a");
			body.println("{");
			body.println("font-family: 'Lucida Sans Unicode', 'Lucida Grande', Sans-Serif;");
			body.println("font-size: 12px;");
			body.println("width: 100px;");
			body.println("text-align: left;");
			body.println("border-collapse: collapse;");
			body.println("}");
			body.println("#box-table-a th");
			body.println("{");
			body.println("font-size: 13px;");
			body.println("font-weight: normal;");
			body.println("padding: 8px;");
			body.println("background: #b9c9fe;");
			body.println("border-top: 4px solid #aabcfe;");
			body.println("border-bottom: 1px solid #fff;");
			body.println("color: #039;");
			body.println("}");
			body.println("#box-table-a td");
			body.println("{");
			body.println("padding: 8px;");
			body.println("background: #e8edff; ");
			body.println("border-bottom: 1px solid #fff;");
			body.println("color: #669;");
			body.println("border-top: 1px solid transparent;");
			body.println("}");
			body.println("#box-table-a tr:hover td");
			body.println("{");
			body.println("background: #d0dafd;");
			body.println("color: #339;");
			body.println("}");
			body.println("-->");
			body.println("</style>");
			body.println("</head>");
			body.println("<body style='font-family:Arial, Helvetica, sans-serif; font-size: 0.8em;'>");
			body.println("<p style='font-size: 2em; font-weight: bold; text-align: center;'>SMSServer - Status Page</p>");
			{
				String tpl, line;
				int days, hours, minutes;
				long msMillisDiff;

⌨️ 快捷键说明

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