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

📄 minihttp.h

📁 安全开发库。含客户端建立ssl连接、签名、证书验证、证书发布和撤销等。编译用到nss
💻 H
字号:
/* -*- Mode: C++; indent-tabs-mode: nil; c-basic-offset: 4 -*- *//*  * The contents of this file are subject to the Mozilla Public * License Version 1.1 (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.mozilla.org/MPL/ *  * Software distributed under the License is distributed on an "AS * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or * implied. See the License for the specific language governing * rights and limitations under the License. *  * The Original Code is the Netscape security libraries. *  * The Initial Developer of the Original Code is Netscape * Communications Corporation.  Portions created by Netscape are  * Copyright (C) 1994-2000 Netscape Communications Corporation.  All * Rights Reserved. *  * Contributor(s): *  * Alternatively, the contents of this file may be used under the * terms of the GNU General Public License Version 2 or later (the * "GPL"), in which case the provisions of the GPL are applicable  * instead of those above.  If you wish to allow use of your  * version of this file only under the terms of the GPL and not to * allow others to use your version of this file under the MPL, * indicate your decision by deleting the provisions above and * replace them with the notice and other provisions required by * the GPL.  If you do not delete the provisions above, a recipient * may use your version of this file under either the MPL or the * GPL. *//*    Routines which implement a mini-HTTP server for PSM.	This module is intended for low-volume use, such as to present	a security advisor dialog and respond to form posts from same.	Created by Mark Welch <mwelch@netscape.com> 98 October */#ifndef __SSM_MINIHTTP_H__#define __SSM_MINIHTTP_H__#include "ssmerrs.h"#include "ssmdefs.h"#include "serv.h"#include "prthread.h"#include "ctrlconn.h"#include "nlsutil.h"/* Result codes; see    http://info.internet.isi.edu:80/in-notes/rfc/files/rfc2068.txt   for more information */typedef enum{    HTTP_OK = (PRInt32) 200,    HTTP_NO_CONTENT = 204,    HTTP_BAD_REQUEST = 400,    HTTP_UNAUTHORIZED = 401,    HTTP_FORBIDDEN = 403,    HTTP_NOT_FOUND = 404,    HTTP_METHOD_NOT_ALLOWED = 405,    HTTP_INTERNAL_ERROR = 500,    HTTP_NOT_IMPLEMENTED = 501,    HTTP_SERVICE_UNAVAILABLE = 503,    HTTP_GATEWAY_TIMEOUT = 504,    HTTP_VERSION_UNSUPPORTED = 505} HTTPErrorCode;typedef enum{    SSM_UI_NULL = (PRUint32) 0,            SSM_UI_KEYGEN_PROGRESS, /* Frameset containing keygen components */        SSM_UI_DIALOG_FRAMESET, /* Generic frameset for dialogs */    SSM_UI_DIALOG_FB,       /* Dialogs: PSM -> client feedback, kept open */    SSM_UI_DIALOG_CANCEL    /* A "cancel" command invokable by the client */} SSMDialogSelector;struct HTTPRequest{    PRFileDesc *sock;       /* Socket with which we talk to client */    char *rawreqbuf;        /* Copy of the raw request we got */    char *reqbuf;           /* The HTTP request we got,                                which is later parsed */    char **paramNames;      /* Names of parameters passed to the URL */    char **paramValues;     /* Values of parameters passed to the URL */    PRUint32 numParams;     /* How many parameters were passed */    PRUint32 slen;          /* The amount of actual text in the buffer(s) */    PRUint32 len;           /* The allocated length of the buffer(s) */    char *hdrbuf;           /* Response header */    SSMStatus rv;            /* Internal result code (used if an                                internal error occurred) */    HTTPErrorCode httprv;   /* HTTP result code (200, 401, 404, etc) */    char *errormsg;         /* if a problem occurs, send this string back                               to the client. */    char *filename;         /* Canned file to fetch from data, if any */    /* These point to chars within (reqbuf). */    char *handlerName;      /* Command requested by client */    char *params;           /* Parameters passed to GET */    char *agent;            /* User-Agent value */    char *ctrlrid;          /* Authorization: RID of control connection */    char *password;         /* Authorization: RID of nonce */    char *referer;          /* The URL for the referer */    SSMControlConnection *ctrlconn;                            /* Control connection owning this connection */    SSMResource *target;    /* Target resource, if any */    char *language;         /* Accept-Language value */    char *charset;          /* Accept-Charset value */    size_t languageListSize;    size_t charsetListSize;    PRBool sentResponse;    /* Have we already sent a response to the user? */    PRBool keepSock;        /* Are we keeping this socket (eg for logging)? */    PRBool processText;     /* Should we interpret files we send out as text? */    SSMResourceID rid;      /* ID of requested resource */};/* Typedef for a command handler. */typedef SSMStatus (*SSMCommandHandlerFunc)(HTTPRequest *req);/* Register a command handler. */SSMStatus SSM_HTTPRegisterCommandHandler(const char *name,                                          SSMCommandHandlerFunc func);/* function to parse the request and submit html */SSMStatus SSM_HTTPGetGenericLump(HTTPRequest *req, PRBool binary);/* The default handler, which uses baseRef as a prefix for two strings   to use in processing and returning HTTP headers and content. Can be    called by other handlers if no special header/content processing    for the user is necessary. */SSMStatus SSM_HTTPDefaultCommandHandler(HTTPRequest *req);/* This function is called when you need to sleep one second * before closing the window due to collision of dialog windows * this is really the default command handler with a sleep */SSMStatus SSM_HTTPCloseAndSleep(HTTPRequest* req);/* Handler for getting binary data. This should be consolidated with   the default handler. */SSMStatus SSM_HTTPGetBinaryHandler(HTTPRequest *req);/* Handler for monitoring resources. */SSMStatus SSM_HTTPMonitorResourceHandler(HTTPRequest *req);/* Handler which shuts down a resource. */SSMStatus SSM_HTTPShutdownResourceHandler(HTTPRequest *req);/* Hello World example */SSMStatus SSM_HTTPHelloWorld(HTTPRequest *req);/* NLS Hello World example */SSMStatus SSM_HTTPHelloWorldWithNLS(HTTPRequest *req);/* SSM_HTTPThread listens to the HTTP socket for connections from   one or more clients. (arg) should be an open socket (PRFileDesc*),   therefore the port needs to have been created before being passed    to this thread. */void SSM_HTTPThread(void *arg);/* Open the HTTP listener. */SSMStatus SSM_InitHTTP(void);/* Get the port on which we're listening for HTTP connections. */PRUint32 SSM_GetHTTPPort(void);/* Construct a URL and size info based on a known page/access point    and control connection. */SSMStatus SSM_GenerateURL(SSMControlConnection *conn,                          char *command,                          char *baseRef,                          SSMResource *targetRes, /* can pass NULL for this */                          char *otherParams,                          PRUint32 *width, PRUint32 *height,                          char **url);                          /* Main listening thread for HTTP requests */extern PRThread *httpListenThread;extern PRUint32 httpListenPort;/* Command handler utilities */SSMStatus SSM_HTTPParamByName(HTTPRequest *req,                               const char *key, const char **value);SSMStatus SSM_RIDTextToResource(HTTPRequest *req, const char *ridText,                                SSMResource **res);SSMStatus SSM_HTTPReportError(HTTPRequest *req, HTTPErrorCode statusCode);void SSM_HTTPReportSpecificError(HTTPRequest *req, char *fmt, ...);SSMStatus SSM_HTTPParamValue(HTTPRequest *req, const char *key, char **value);SSMStatus SSM_HTTPAddParamValue(HTTPRequest *req, const char * key, 	const char * value);SSMStatusSSM_HTTPSendOKHeader(HTTPRequest *req,                      char * addtlHeaders,                     char * contentType);SSMStatusSSM_HTTPSendUTF8String(HTTPRequest *req, char * str);SSMStatus SSM_HTTPCloseWindow(HTTPRequest *req);char * SSM_ConvertStringToHTMLString(char * string);SSMStatus SSM_ProcessPasswordWindow(HTTPRequest * req);#endif

⌨️ 快捷键说明

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