|
@@ -1,6 +1,6 @@
|
|
|
Smalltalk current createPackage: 'FileServer'!
|
|
|
Object subclass: #FileServer
|
|
|
- instanceVariableNames: 'path http fs url port basePath util username password'
|
|
|
+ instanceVariableNames: 'path http fs url port basePath util username password fallbackPage'
|
|
|
package: 'FileServer'!
|
|
|
|
|
|
!FileServer methodsFor: 'accessing'!
|
|
@@ -13,6 +13,14 @@ basePath: aString
|
|
|
basePath := aString
|
|
|
!
|
|
|
|
|
|
+fallbackPage
|
|
|
+ ^fallbackPage
|
|
|
+!
|
|
|
+
|
|
|
+fallbackPage: aString
|
|
|
+ fallbackPage := aString
|
|
|
+!
|
|
|
+
|
|
|
password: aPassword
|
|
|
password := aPassword.
|
|
|
!
|
|
@@ -55,6 +63,7 @@ initialize
|
|
|
port := self class defaultPort.
|
|
|
username := nil.
|
|
|
password := nil.
|
|
|
+ fallbackPage := nil.
|
|
|
! !
|
|
|
|
|
|
!FileServer methodsFor: 'private'!
|
|
@@ -202,6 +211,7 @@ respondNotCreatedTo: aResponse
|
|
|
!
|
|
|
|
|
|
respondNotFoundTo: aResponse
|
|
|
+ self fallbackPage isNil ifFalse: [^self respondFileNamed: self fallbackPage to: aResponse].
|
|
|
aResponse
|
|
|
writeHead: 404 options: #{'Content-Type' -> 'text/plain'};
|
|
|
write: '404 Not found';
|
|
@@ -237,7 +247,8 @@ commandLineActions
|
|
|
^#{
|
|
|
'-p' -> [:fileServer :value | fileServer port: value].
|
|
|
'--username' -> [:fileServer :value | fileServer username: value].
|
|
|
- '--password' -> [:fileServer :value | fileServer password: value]
|
|
|
+ '--password' -> [:fileServer :value | fileServer password: value].
|
|
|
+ '--fallback-page' -> [:fileServer :value | fileServer fallbackPage: value]
|
|
|
}
|
|
|
!
|
|
|
|