1
0
mirror of https://github.com/falk-werner/webfuse synced 2026-03-02 03:40:24 +00:00

add in-protocol authentication mechanism

This commit is contained in:
Falk Werner
2023-01-22 20:53:50 +01:00
parent 9423d75021
commit 5db3b28b5a
18 changed files with 147 additions and 19 deletions

View File

@@ -5,6 +5,7 @@ import os
import stat
import websockets
import errno
import getpass
INVALID_FD = 0xffffffffffffffff
@@ -269,10 +270,12 @@ class FilesystemProvider:
0x14: FilesystemProvider.rmdir,
0x15: FilesystemProvider.statfs,
0x16: FilesystemProvider.utimens,
0x17: FilesystemProvider.getcreds,
}
async def run(self):
async with websockets.connect(self.url, extra_headers=[("X-Auth-Token", "user:bob;token=foo")]) as connection:
extra_headers = [("X-Auth-Token", "user:bob;token=foo")]
async with websockets.connect(self.url, extra_headers=extra_headers) as connection:
while True:
request = await connection.recv()
reader = MessageReader(request)
@@ -565,7 +568,11 @@ class FilesystemProvider:
writer.write_u64(buffer.f_files)
writer.write_u64(buffer.f_ffree)
writer.write_u64(buffer.f_namemax)
def getcreds(self, reader, writer):
credentials = getpass.getpass(prompt="credentials: ")
writer.write_str(credentials)
if __name__ == '__main__':
provider = FilesystemProvider('.', 'ws://localhost:8081')