mirror of https://gitlab.com/bashrc2/epicyon
outbox post authentication
parent
c4797d3de2
commit
50a2f95c9c
11
auth.py
11
auth.py
|
@ -38,17 +38,6 @@ def createBasicAuthHeader(nickname: str,password: str) -> str:
|
||||||
authStr=nickname.replace('\n','')+':'+password.replace('\n','')
|
authStr=nickname.replace('\n','')+':'+password.replace('\n','')
|
||||||
return 'Basic '+base64.b64encode(authStr.encode('utf-8')).decode('utf-8')
|
return 'Basic '+base64.b64encode(authStr.encode('utf-8')).decode('utf-8')
|
||||||
|
|
||||||
def nicknameFromBasicAuth(authHeader: str) -> str:
|
|
||||||
"""Returns the nickname from basic auth header
|
|
||||||
"""
|
|
||||||
if ' ' not in authHeader:
|
|
||||||
return None
|
|
||||||
base64Str = authHeader.split(' ')[1].replace('\n','')
|
|
||||||
plain = base64.b64decode(base64Str).decode('utf-8')
|
|
||||||
if ':' not in plain:
|
|
||||||
return None
|
|
||||||
return plain.split(':')[0]
|
|
||||||
|
|
||||||
def authorizeBasic(baseDir: str,path: str,authHeader: str,debug: bool) -> bool:
|
def authorizeBasic(baseDir: str,path: str,authHeader: str,debug: bool) -> bool:
|
||||||
"""HTTP basic auth
|
"""HTTP basic auth
|
||||||
"""
|
"""
|
||||||
|
|
|
@ -25,7 +25,6 @@ from inbox import inboxPermittedMessage
|
||||||
from inbox import inboxMessageHasParams
|
from inbox import inboxMessageHasParams
|
||||||
from follow import getFollowingFeed
|
from follow import getFollowingFeed
|
||||||
from auth import authorize
|
from auth import authorize
|
||||||
from auth import nicknameFromBasicAuth
|
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
|
@ -287,9 +286,7 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
if self.path.endswith('/outbox'):
|
if self.path.endswith('/outbox'):
|
||||||
if '/users/' in self.path:
|
if '/users/' in self.path:
|
||||||
if self.headers.get('Authorization'):
|
if self.headers.get('Authorization'):
|
||||||
nickname=self.path.split('/users/')[1].replace('/inbox','')
|
if authorize(self.server.baseDir,self.path,self.headers['Authorization'],self.server.debug):
|
||||||
if nickname==nicknameFromBasicAuth(self.headers['Authorization']):
|
|
||||||
if authorize(self.server.baseDir,self.headers['Authorization']):
|
|
||||||
self.outboxAuthenticated=True
|
self.outboxAuthenticated=True
|
||||||
self.postToNickname=nickname
|
self.postToNickname=nickname
|
||||||
# TODO
|
# TODO
|
||||||
|
|
2
tests.py
2
tests.py
|
@ -35,7 +35,6 @@ from person import setBio
|
||||||
from auth import createBasicAuthHeader
|
from auth import createBasicAuthHeader
|
||||||
from auth import authorizeBasic
|
from auth import authorizeBasic
|
||||||
from auth import storeBasicCredentials
|
from auth import storeBasicCredentials
|
||||||
from auth import nicknameFromBasicAuth
|
|
||||||
|
|
||||||
testServerAliceRunning = False
|
testServerAliceRunning = False
|
||||||
testServerBobRunning = False
|
testServerBobRunning = False
|
||||||
|
@ -317,7 +316,6 @@ def testAuthentication():
|
||||||
assert storeBasicCredentials(baseDir,nickname,password)
|
assert storeBasicCredentials(baseDir,nickname,password)
|
||||||
|
|
||||||
authHeader=createBasicAuthHeader(nickname,password)
|
authHeader=createBasicAuthHeader(nickname,password)
|
||||||
assert nickname==nicknameFromBasicAuth(authHeader)
|
|
||||||
assert authorizeBasic(baseDir,'/users/'+nickname+'/inbox',authHeader,False)
|
assert authorizeBasic(baseDir,'/users/'+nickname+'/inbox',authHeader,False)
|
||||||
assert authorizeBasic(baseDir,'/users/'+nickname,authHeader,False)==False
|
assert authorizeBasic(baseDir,'/users/'+nickname,authHeader,False)==False
|
||||||
assert authorizeBasic(baseDir,'/users/othernick/inbox',authHeader,False)==False
|
assert authorizeBasic(baseDir,'/users/othernick/inbox',authHeader,False)==False
|
||||||
|
|
Loading…
Reference in New Issue