Changeset 33 in Main for trunk


Ignore:
Timestamp:
Sep 16, 2024, 9:52:47 PM (2 months ago)
Author:
Nishi
Message:

can show readme on index now

Location:
trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/Server/config.c

    r24 r33  
    8484        config.root.icon_count = 0;
    8585        config.root.index_count = 0;
     86        config.root.readme_count = 0;
    8687        config.vhost_count = 0;
    8788        config.module_count = 0;
     
    184185                                                                current->icon_count = 0;
    185186                                                                current->index_count = 0;
     187                                                                current->readme_count = 0;
    186188                                                                int i;
    187189                                                                current->name = cm_strdup(vhost);
     
    288290                                                for(i = 1; r[i] != NULL; i++) {
    289291                                                        current->indexes[current->index_count++] = cm_strdup(r[i]);
     292                                                }
     293                                        } else if(cm_strcaseequ(r[0], "Readme")) {
     294                                                for(i = 1; r[i] != NULL; i++) {
     295                                                        current->readmes[current->readme_count++] = cm_strdup(r[i]);
    290296                                                }
    291297                                        } else {
  • trunk/Server/server.c

    r32 r33  
    513513                                                        addstring(&str, "                               <th>Size</th>\n");
    514514                                                        addstring(&str, "                       </tr>\n");
     515                                                        int readme = -1;
     516                                                        char** readmes = vhost_entry->readme_count == 0 ? config.root.readmes : vhost_entry->readmes;
     517                                                        int readme_count = vhost_entry->readme_count == 0 ? config.root.readme_count : vhost_entry->readme_count;
    515518                                                        if(items != NULL) {
    516519                                                                int phase = 0;
    517520                                                        doit:
    518521                                                                for(i = 0; items[i] != NULL; i++) {
     522                                                                        int j;
    519523                                                                        char* fpth = cm_strcat3(path, "/", items[i]);
    520524                                                                        struct stat s;
     
    529533                                                                                continue;
    530534                                                                        }
     535                                                                        if(readme == -1) {
     536                                                                                for(j = 0; j < readme_count; j++) {
     537                                                                                        if(strcmp(items[i], readmes[j]) == 0) {
     538                                                                                                readme = j;
     539                                                                                                break;
     540                                                                                        }
     541                                                                                }
     542                                                                                if(readme != -1) {
     543                                                                                        free(fpth);
     544                                                                                        continue;
     545                                                                                }
     546                                                                        }
    531547                                                                        if(s.st_size < 1024ULL) {
    532548                                                                                sprintf(size, "%d", (int)s.st_size);
     
    544560
    545561                                                                        char* ext = NULL;
    546                                                                         int j;
    547562                                                                        for(j = strlen(items[i]) - 1; j >= 0; j--) {
    548563                                                                                if(items[i][j] == '.') {
     
    595610                                                        }
    596611                                                        addstring(&str, "               </table>\n");
     612                                                        if(readme != -1) {
     613                                                                addstring(&str, "<hr>\n");
     614                                                                char* fpth = cm_strcat3(path, "/", readmes[readme]);
     615                                                                struct stat s;
     616                                                                stat(fpth, &s);
     617                                                                FILE* fr = fopen(fpth, "r");
     618                                                                if(fr != NULL) {
     619                                                                        char* rmbuf = malloc(s.st_size + 1);
     620                                                                        rmbuf[s.st_size] = 0;
     621                                                                        fread(rmbuf, s.st_size, 1, fr);
     622                                                                        addstring(&str, "<pre><code>%h</code></pre>\n", rmbuf);
     623                                                                        fclose(fr);
     624                                                                }
     625                                                        }
    597626                                                        addstring(&str, "               <hr>\n");
    598627                                                        addstring(&str, "               <address>%s Server at %s Port %d</address>\n", tw_server, name, port);
  • trunk/Server/tw_config.h

    r24 r33  
    2929#define MAX_ICON 1024
    3030#define MAX_INDEX 1024
     31#define MAX_README 8
    3132
    3233enum TW_DIR_TYPE {
     
    6566        char* indexes[MAX_INDEX];
    6667        int index_count;
     68        char* readmes[MAX_README];
     69        int readme_count;
    6770};
    6871
  • trunk/Server/version.c

    r27 r33  
    55#include "tw_version.h"
    66
    7 const char* tw_version = "0.00";
     7const char* tw_version = "1.00";
    88
    99const char* tw_platform =
  • trunk/example.conf

    r32 r33  
    44#LoadModule /home/nishi/SVN/tewi/trunk/Module/mod_example.so
    55
    6 Listen 8080
    7 #ListenSSL 443
     6Listen 80
     7ListenSSL 443
    88
    99SSLKey key.pem
     
    2323DirectoryIndex index.html
    2424
     25Readme README
     26
    2527DocumentRoot /var/www
    2628
Note: See TracChangeset for help on using the changeset viewer.