Changeset 123 in Main for trunk


Ignore:
Timestamp:
Sep 22, 2024, 10:43:47 PM (8 weeks ago)
Author:
Nishi
Message:

add ShowPort/HidePort

Location:
trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/Manpage/tewi.conf.5.tmpl

    r38 r123  
    1919.It Pa "LoadModule"
    2020Loads the module.
     21.It Pa "HidePort" "ShowPort"
     22Shows/Hides the port in directory listing, and the default error page.
    2123.It Pa "MIMEType"
    2224Specifies the MIME type for files.
  • trunk/Server/config.c

    r61 r123  
    8585        config.root.index_count = 0;
    8686        config.root.readme_count = 0;
     87        config.root.hideport = 0;
    8788        config.vhost_count = 0;
    8889        config.module_count = 0;
     
    186187                                                                current->index_count = 0;
    187188                                                                current->readme_count = 0;
     189                                                                current->hideport = -1;
    188190                                                                int i;
    189191                                                                current->name = cm_strdup(vhost);
     
    217219                                                        config.ports[j] = port;
    218220                                                }
     221                                        } else if(cm_strcaseequ(r[0], "HidePort")) {
     222                                                current->hideport = 1;
     223                                        } else if(cm_strcaseequ(r[0], "ShowPort")) {
     224                                                current->hideport = 0;
    219225                                        } else if(cm_strcaseequ(r[0], "SSLKey")) {
    220226                                                if(r[1] == NULL) {
  • trunk/Server/server.c

    r122 r123  
    285285}
    286286
    287 char* tw_http_default_error(int code, char* name, int port) {
     287char* tw_http_default_error(int code, char* name, int port, struct tw_config_entry* vhost) {
    288288        char address[1024];
    289         sprintf(address, "<address>%s Server at %s Port %d</address>", tw_server, name, port);
     289
     290        if((vhost->hideport == -1 ? config.root.hideport : vhost->hideport) == 1) {
     291                sprintf(address, "<address>%s Server at %s</address>", tw_server, name, port);
     292        } else {
     293                sprintf(address, "<address>%s Server at %s Port %d</address>", tw_server, name, port);
     294        }
    290295
    291296        char* st = cm_strdup(tw_http_status(code));
     
    306311}
    307312
    308 void tw_http_error(SSL* ssl, int sock, int error, char* name, int port) {
    309         char* str = tw_http_default_error(error, name, port);
     313void tw_http_error(SSL* ssl, int sock, int error, char* name, int port, struct tw_config_entry* vhost) {
     314        char* str = tw_http_default_error(error, name, port, vhost);
    310315        tw_process_page(ssl, sock, tw_http_status(error), "text/html", NULL, str, strlen(str), 0, 0);
    311316        free(str);
     
    526531                                }
    527532                                if(co == _TW_MODULE_ERROR) {
    528                                         tw_http_error(s, sock, (ret & 0xffff00) >> 8, name, port);
     533                                        tw_http_error(s, sock, (ret & 0xffff00) >> 8, name, port, vhost_entry);
    529534                                        break;
    530535                                }
     
    566571                        if(!rej && stat(path, &st) == 0) {
    567572                                if(!tw_permission_allowed(path, addr, req, vhost_entry)) {
    568                                         tw_http_error(s, sock, 403, name, port);
     573                                        tw_http_error(s, sock, 403, name, port, vhost_entry);
    569574                                } else if(S_ISDIR(st.st_mode)) {
    570575                                        if(req.path[strlen(req.path) - 1] != '/') {
     
    738743                                                        }
    739744                                                        addstring(&str, "               <hr>\n");
    740                                                         addstring(&str, "               <address>%s Server at %s Port %d</address>\n", tw_server, name, port);
     745                                                        int hp = vhost_entry->hideport == -1 ? config.root.hideport : vhost_entry->hideport;
     746                                                        if(hp == 0) {
     747                                                                addstring(&str, "               <address>%s Server at %s Port %d</address>\n", tw_server, name, port);
     748                                                        } else {
     749                                                                addstring(&str, "               <address>%s Server at %s</address>\n", tw_server, name, port);
     750                                                        }
    741751                                                        addstring(&str, "       </body>\n");
    742752                                                        addstring(&str, "</html>\n");
     
    762772                                }
    763773                        } else {
    764                                 tw_http_error(s, sock, 404, name, port);
     774                                tw_http_error(s, sock, 404, name, port, vhost_entry);
    765775                        }
    766776                        free(path);
     
    770780        } else if(ret == -1) {
    771781        } else {
    772                 tw_http_error(s, sock, 400, name, port);
     782                tw_http_error(s, sock, 400, name, port, &config.root);
    773783        }
    774784        tw_free_request(&req);
  • trunk/Server/tw_config.h

    r81 r123  
    6161        char* sslcert;
    6262        char* root;
     63        int hideport;
    6364        struct tw_dir_entry dirs[MAX_DIRS];
    6465        int dir_count;
  • trunk/Server/tw_version.h

    r122 r123  
    44#define __TW_VERSION_H__
    55
    6 #define TW_VERSION "1.02A\0"
     6#define TW_VERSION "1.03\0"
    77
    88const char* tw_get_version(void);
Note: See TracChangeset for help on using the changeset viewer.