/* * File : wn_module.h * This file is part of RT-Thread RTOS * COPYRIGHT (C) 2006 - 2018, RT-Thread Development Team * * This software is dual-licensed: you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. For the terms of this * license, see . * * You are free to use this software under the terms of the GNU General * Public License, but WITHOUT ANY WARRANTY; without even the implied * warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. * * Alternatively for commercial application, you can contact us * by email for commercial license. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * * Change Logs: * Date Author Notes * 2011-08-02 Bernard the first version * 2011-08-06 Bernard add webnet_alias_set declaration * 2012-06-25 Bernard add SSI and Upload module */ #ifndef __WN_MODULE_H__ #define __WN_MODULE_H__ #include #ifdef __cplusplus extern "C" { #endif /* initialization event */ #define WEBNET_EVENT_INIT (1 << 0) /* map uri request to physical url */ #define WEBNET_EVENT_URI_PHYSICAL (1 << 1) /* uri request */ #define WEBNET_EVENT_URI_POST (1 << 2) /* header of response */ #define WEBNET_EVENT_RSP_HEADER (1 << 3) /* file content of response */ #define WEBNET_EVENT_RSP_FILE (1 << 4) /* continue other modules */ #define WEBNET_MODULE_CONTINUE 0 /* this session is finished */ #define WEBNET_MODULE_FINISHED 1 int webnet_module_handle_event(struct webnet_session* session, int event); int webnet_module_system_dofile(struct webnet_session* session); int webnet_module_handle_uri(struct webnet_session* session); /* module function pre-declaration */ int webnet_module_alias(struct webnet_session* sesion, int event); int webnet_module_auth(struct webnet_session* session, int event); int webnet_module_asp(struct webnet_session* session, int event); int webnet_module_cgi(struct webnet_session* session, int event); int webnet_module_dirindex(struct webnet_session* session, int event); int webnet_module_log(struct webnet_session* session, int event); int webnet_module_lua(struct webnet_session* sesion, int event); int webnet_module_ssl(struct webnet_session* sesion, int event); int webnet_module_ssi(struct webnet_session* session, int event); int webnet_module_dav(struct webnet_session* session, int event); int webnet_module_dmr(struct webnet_session* session, int event); /* add ASP variable */ void webnet_asp_add_var(const char* name, void (*handler)(struct webnet_session* session)); /* register CGI event */ void webnet_cgi_register(const char* name, void (*handler)(struct webnet_session* session)); void webnet_cgi_set_root(const char* root); /* set basic authentication configure */ void webnet_auth_set(const char* path, const char* username_password); /* set directory alias */ void webnet_alias_set(char* old_path, char* new_path); #if defined(WEBNET_USING_SSI_VIRTUAL_HANDLER) /* register ssi virtual event */ void webnet_ssi_virtual_register(const char* name, void (*handler)(struct webnet_session* session)); #endif /* upload module */ struct webnet_module_upload_entry { const char* url; int (*upload_open) (struct webnet_session* session); int (*upload_close)(struct webnet_session* session); int (*upload_write)(struct webnet_session* session, const void* data, rt_size_t length); int (*upload_done) (struct webnet_session* session); }; int webnet_module_upload(struct webnet_session* session, int event); void webnet_upload_add(const struct webnet_module_upload_entry* entry); const char* webnet_upload_get_filename(struct webnet_session* session); const char* webnet_upload_get_content_type(struct webnet_session* session); const char* webnet_upload_get_nameentry(struct webnet_session* session, const char* name); const void* webnet_upload_get_userdata(struct webnet_session* session); int webnet_upload_file_open(struct webnet_session* session); int webnet_upload_file_close(struct webnet_session* session); int webnet_upload_file_write(struct webnet_session* session, const void* data, rt_size_t length); #ifdef __cplusplus } #endif #endif /* __WN_MODULE_H__ */