diff --git a/blocking.py b/blocking.py index 87e2888bc..a1b66918e 100644 --- a/blocking.py +++ b/blocking.py @@ -9,20 +9,21 @@ __status__ = "Production" import os def addBlock(baseDir: str,nickname: str,domain: str, \ - blockNickname: str,blockDomain: str) -> None: + blockNickname: str,blockDomain: str) -> bool: """Block the given account """ blockingFilename=baseDir+'/accounts/'+nickname+'@'+domain+'/blocking.txt' blockHandle=blockNickName+'@'+blockDomain if os.path.isfile(blockingFilename): if blockHandle in open(blockingFilename).read(): - return + return False blockFile=open(blockingFilename, "a+") blockFile.write(blockHandle+'\n') blockFile.close() + return True def removeBlock(baseDir: str,nickname: str,domain: str, \ - unblockNickname: str,unblockDomain: str) -> None: + unblockNickname: str,unblockDomain: str) -> bool: """Unblock the given account """ unblockingFilename=baseDir+'/accounts/'+nickname+'@'+domain+'/blocking.txt' @@ -37,6 +38,8 @@ def removeBlock(baseDir: str,nickname: str,domain: str, \ fpnew.write(handle+'\n') if os.path.isfile(unblockingFilename+'.new'): os.rename(unblockingFilename+'.new',unblockingFilename) + return True + return False def isBlocked(baseDir: str,nickname: str,domain: str, \ blockNickname: str,blockDomain: str) -> bool: diff --git a/epicyon.py b/epicyon.py index e4f0fb9f1..35c0bfdb6 100644 --- a/epicyon.py +++ b/epicyon.py @@ -30,6 +30,8 @@ from posts import getUserUrl from posts import archivePosts from session import createSession from session import getJson +from blocking import addBlock +from blocking import removeBlock import json import os import shutil @@ -185,6 +187,10 @@ parser.add_argument('--level', dest='skillLevelPercent', type=int,default=None, help='Set a skill level for a person as a percentage, or zero to remove') parser.add_argument('--status','--availability', dest='availability', type=str,default=None, \ help='Set an availability status') +parser.add_argument('--block', dest='block', type=str,default=None, \ + help='Block a particular address') +parser.add_argument('--unblock', dest='unblock', type=str,default=None, \ + help='Remove a block on a particular address') args = parser.parse_args() debug=False @@ -586,6 +592,28 @@ if not os.path.isdir(baseDir+'/accounts/'+nickname+'@'+domain): setConfigParam(baseDir,'adminPassword',adminPassword) createPerson(baseDir,nickname,domain,port,httpPrefix,True,adminPassword) +if args.block: + if not args.nickname: + print('Please specify a nickname') + sys.exit() + if '@' not in args.block: + print('syntax: --block nickname@domain') + sys.exit() + if addBlock(baseDir,args.nickname,domain,args.block.split('@')[0],args.block.split('@')[1].replace('\n','')): + print(args.block+' is blocked by '+args.nickname) + sys.exit() + +if args.unblock: + if not args.nickname: + print('Please specify a nickname') + sys.exit() + if '@' not in args.block: + print('syntax: --unblock nickname@domain') + sys.exit() + if removeBlock(baseDir,args.nickname,domain,args.block.split('@')[0],args.block.split('@')[1].replace('\n','')): + print('The block on '+args.block+' was removed by '+args.nickname) + sys.exit() + if args.testdata: useBlurhash=False nickname='testuser567'