Block and unblock options

master
Bob Mottram 2019-07-14 20:57:05 +01:00
parent 005bd0b0af
commit 645f45cfcb
2 changed files with 34 additions and 3 deletions

View File

@ -9,20 +9,21 @@ __status__ = "Production"
import os import os
def addBlock(baseDir: str,nickname: str,domain: str, \ def addBlock(baseDir: str,nickname: str,domain: str, \
blockNickname: str,blockDomain: str) -> None: blockNickname: str,blockDomain: str) -> bool:
"""Block the given account """Block the given account
""" """
blockingFilename=baseDir+'/accounts/'+nickname+'@'+domain+'/blocking.txt' blockingFilename=baseDir+'/accounts/'+nickname+'@'+domain+'/blocking.txt'
blockHandle=blockNickName+'@'+blockDomain blockHandle=blockNickName+'@'+blockDomain
if os.path.isfile(blockingFilename): if os.path.isfile(blockingFilename):
if blockHandle in open(blockingFilename).read(): if blockHandle in open(blockingFilename).read():
return return False
blockFile=open(blockingFilename, "a+") blockFile=open(blockingFilename, "a+")
blockFile.write(blockHandle+'\n') blockFile.write(blockHandle+'\n')
blockFile.close() blockFile.close()
return True
def removeBlock(baseDir: str,nickname: str,domain: str, \ def removeBlock(baseDir: str,nickname: str,domain: str, \
unblockNickname: str,unblockDomain: str) -> None: unblockNickname: str,unblockDomain: str) -> bool:
"""Unblock the given account """Unblock the given account
""" """
unblockingFilename=baseDir+'/accounts/'+nickname+'@'+domain+'/blocking.txt' unblockingFilename=baseDir+'/accounts/'+nickname+'@'+domain+'/blocking.txt'
@ -37,6 +38,8 @@ def removeBlock(baseDir: str,nickname: str,domain: str, \
fpnew.write(handle+'\n') fpnew.write(handle+'\n')
if os.path.isfile(unblockingFilename+'.new'): if os.path.isfile(unblockingFilename+'.new'):
os.rename(unblockingFilename+'.new',unblockingFilename) os.rename(unblockingFilename+'.new',unblockingFilename)
return True
return False
def isBlocked(baseDir: str,nickname: str,domain: str, \ def isBlocked(baseDir: str,nickname: str,domain: str, \
blockNickname: str,blockDomain: str) -> bool: blockNickname: str,blockDomain: str) -> bool:

View File

@ -30,6 +30,8 @@ from posts import getUserUrl
from posts import archivePosts from posts import archivePosts
from session import createSession from session import createSession
from session import getJson from session import getJson
from blocking import addBlock
from blocking import removeBlock
import json import json
import os import os
import shutil 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') 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, \ parser.add_argument('--status','--availability', dest='availability', type=str,default=None, \
help='Set an availability status') 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() args = parser.parse_args()
debug=False debug=False
@ -586,6 +592,28 @@ if not os.path.isdir(baseDir+'/accounts/'+nickname+'@'+domain):
setConfigParam(baseDir,'adminPassword',adminPassword) setConfigParam(baseDir,'adminPassword',adminPassword)
createPerson(baseDir,nickname,domain,port,httpPrefix,True,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: if args.testdata:
useBlurhash=False useBlurhash=False
nickname='testuser567' nickname='testuser567'