@@ -166,10 +166,11 @@
166 166 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int fCgiTrace; /* True if --cgitrace is enabled */
167 167 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int fQuiet; /* True if -quiet flag is present */
168 168 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int fJail; /* True if running with a chroot jail */
169 169 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int fHttpTrace; /* Trace outbound HTTP requests */
170 170 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int fAnyTrace; /* Any kind of tracing */
171 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int fAllowACME; /* Deliver files from .well-known */
171 172 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
char *zHttpAuth; /* HTTP Authorization user:pass information */
172 173 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int fSystemTrace; /* Trace calls to fossil_system(), --systemtrace */
173 174 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int fSshTrace; /* Trace the SSH setup traffic */
174 175 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int fSshClient; /* HTTP client flags for SSH client */
175 176 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int fNoHttpCompress; /* Do not compress HTTP traffic (for debugging) */
@@ -1700,11 +1701,13 @@
1700 1701 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( c=='_' ) continue;
1701 1702 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( c=='-' && zRepo[j-1]!='/' ) continue;
1702 1703 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( c=='.' && fossil_isalnum(zRepo[j-1]) && fossil_isalnum(zRepo[j+1])){
1703 1704 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
continue;
1704 1705 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1705 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- if( c=='.' && strncmp(&zRepo[j-1],"/.well-known/",12)==0 && j==nBase+1){
1706 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( c=='.' && g.fAllowACME && j==nBase+1
1707 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && strncmp(&zRepo[j-1],"/.well-known/",12)==0
1708 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
1706 1709 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* We allow .well-known as the top-level directory for ACME */
1707 1710 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
continue;
1708 1711 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1709 1712 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* If we reach this point, it means that the request URI contains
1710 1713 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** an illegal character or character combination. Provoke a
@@ -1774,10 +1777,25 @@
1774 1777 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cgi_set_content_type(zMimetype);
1775 1778 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cgi_set_content(&content);
1776 1779 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
cgi_reply();
1777 1780 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
return;
1778 1781 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1782 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
1783 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /* In support of the ACME protocol, files under the .well-known/
1784 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** directory is always accepted.
1785 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
1786 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( g.fAllowACME
1787 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && strncmp(&zRepo[nBase],"/.well-known/",12)==0
1788 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ && file_isfile(zCleanRepo, ExtFILE)
1789 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ){
1790 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Blob content;
1791 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ blob_read_from_file(&content, file_cleanup_fullpath(zRepo), ExtFILE);
1792 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cgi_set_content_type(mimetype_from_name(zRepo));
1793 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cgi_set_content(&content);
1794 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ cgi_reply();
1795 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ return;
1796 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1779 1797 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
zRepo[j] = '.';
1780 1798 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1781 1799 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1782 1800 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* If we reach this point, it means that the search of the PATH_INFO
1783 1801 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** string is finished. Either zRepo contains the name of the
@@ -2614,10 +2632,11 @@
2614 2632 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** If the --localauth option is given, then automatic login is performed
2615 2633 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** for requests coming from localhost, if the "localauth" setting is not
2616 2634 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** enabled.
2617 2635 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
2618 2636 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Options:
2637 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** --acme Deliver files from the ".well-known" subdirectory
2619 2638 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** --baseurl URL base URL (useful with reverse proxies)
2620 2639 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** --chroot DIR Use directory for chroot instead of repository path.
2621 2640 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** --ckout-alias N Treat URIs of the form /doc/N/... as if they were
2622 2641 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** /doc/ckout/...
2623 2642 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** --extroot DIR document root for the /ext extension mechanism
@@ -2728,10 +2747,11 @@
2728 2747 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
g.zMainMenuFile = find_option("mainmenu",0,1);
2729 2748 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( g.zMainMenuFile!=0 && file_size(g.zMainMenuFile,ExtFILE)<0 ){
2730 2749 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fossil_fatal("Cannot read --mainmenu file %s", g.zMainMenuFile);
2731 2750 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
2732 2751 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
decode_ssl_options();
2752 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( find_option("acme",0,0)!=0 ) g.fAllowACME = 1;
2733 2753 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
2734 2754 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* We should be done with options.. */
2735 2755 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
verify_all_options();
2736 2756 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( g.httpUseSSL ){
2737 2757 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( useSCGI ){
@@ -2944,10 +2964,11 @@
2944 2964 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** --localauth option is present and the "localauth" setting is off and the
2945 2965 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** connection is from localhost. The "ui" command also enables --repolist
2946 2966 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** by default.
2947 2967 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
2948 2968 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Options:
2969 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** --acme Deliver files from the ".well-known" subdirectory.
2949 2970 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** --baseurl URL Use URL as the base (useful for reverse proxies)
2950 2971 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** --chroot DIR Use directory for chroot instead of repository path.
2951 2972 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** --ckout-alias NAME Treat URIs of the form /doc/NAME/... as if they were
2952 2973 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** /doc/ckout/...
2953 2974 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** --create Create a new REPOSITORY if it does not already exist
@@ -3077,10 +3098,11 @@
3077 3098 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
g.zCkoutAlias = find_option("ckout-alias",0,1);
3078 3099 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
g.zMainMenuFile = find_option("mainmenu",0,1);
3079 3100 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
if( g.zMainMenuFile!=0 && file_size(g.zMainMenuFile,ExtFILE)<0 ){
3080 3101 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
fossil_fatal("Cannot read --mainmenu file %s", g.zMainMenuFile);
3081 3102 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
3103 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( find_option("acme",0,0)!=0 ) g.fAllowACME = 1;
3082 3104 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
3083 3105 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/* Undocumented option: --debug-nofork
3084 3106 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
3085 3107 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** This sets the HTTP_SERVER_NOFORK flag, which causes only the
3086 3108 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** very first incoming TCP/IP connection to be processed. Used for
3087 3109 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!