First account gets admin status

master
Bob Mottram 2019-07-18 14:10:26 +01:00
parent cd7ded743f
commit 5f58b0f02e
3 changed files with 31 additions and 10 deletions

View File

@ -40,6 +40,7 @@ from like import outboxLike
from like import outboxUndoLike from like import outboxUndoLike
from blocking import outboxBlock from blocking import outboxBlock
from blocking import outboxUndoBlock from blocking import outboxUndoBlock
from config import setConfigParam
import os import os
import sys import sys
@ -897,8 +898,12 @@ def runDaemon(clientToServer: bool,baseDir: str,domain: str, \
if cw: if cw:
httpd.acceptedCaps.append('inbox:cw') httpd.acceptedCaps.append('inbox:cw')
print('Creating shared inbox: inbox@'+domain) if not os.path.isdir(baseDir+'/accounts/inbox@'+domain):
createSharedInbox(baseDir,'inbox',domain,port,httpPrefix) print('Creating shared inbox: inbox@'+domain)
createSharedInbox(baseDir,'inbox',domain,port,httpPrefix)
print('See config.json for the password. You can remove the password from config.json after moving it elsewhere.')
adminPassword=createPassword(10)
setConfigParam(baseDir,'adminPassword',adminPassword)
print('Creating inbox queue') print('Creating inbox queue')
httpd.thrInboxQueue= \ httpd.thrInboxQueue= \

View File

@ -760,12 +760,12 @@ if args.skill:
if federationList: if federationList:
print('Federating with: '+str(federationList)) print('Federating with: '+str(federationList))
if not os.path.isdir(baseDir+'/accounts/'+nickname+'@'+domain): #if not os.path.isdir(baseDir+'/accounts/'+nickname+'@'+domain):
print('Creating default admin account '+nickname+'@'+domain) # print('Creating default admin account '+nickname+'@'+domain)
print('See config.json for the password. You can remove the password from config.json after moving it elsewhere.') # print('See config.json for the password. You can remove the password from config.json after moving it elsewhere.')
adminPassword=createPassword(10) # adminPassword=createPassword(10)
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 args.block:
if not nickname: if not nickname:
@ -881,4 +881,4 @@ runDaemon(args.client,baseDir,domain,port,httpPrefix, \
args.noannounce,args.cw,ocapAlways, \ args.noannounce,args.cw,ocapAlways, \
useTor,args.maxReplies, \ useTor,args.maxReplies, \
args.domainMaxPostsPerDay,args.accountMaxPostsPerDay, \ args.domainMaxPostsPerDay,args.accountMaxPostsPerDay, \
args.allowDeletion,debug) args.allowdeletion,debug)

View File

@ -278,13 +278,29 @@ def createPersonBase(baseDir: str,nickname: str,domain: str,port: int, \
return privateKeyPem,publicKeyPem,newPerson,webfingerEndpoint return privateKeyPem,publicKeyPem,newPerson,webfingerEndpoint
def noOfAccounts(baseDir: str) -> bool:
"""Returns the number of accounts on the system
"""
accountCtr=0
for subdir, dirs, files in os.walk(baseDir+'/accounts'):
for account in dirs:
if '@' in account:
if not account.startswith('inbox'):
accountCtr+=1
return accountCtr
def createPerson(baseDir: str,nickname: str,domain: str,port: int, \ def createPerson(baseDir: str,nickname: str,domain: str,port: int, \
httpPrefix: str, saveToFile: bool,password=None) -> (str,str,{},{}): httpPrefix: str, saveToFile: bool,password=None) -> (str,str,{},{}):
"""Returns the private key, public key, actor and webfinger endpoint """Returns the private key, public key, actor and webfinger endpoint
""" """
if not validNickname(nickname): if not validNickname(nickname):
return None,None,None,None return None,None,None,None
return createPersonBase(baseDir,nickname,domain,port,httpPrefix,saveToFile,password) privateKeyPem,publicKeyPem,newPerson,webfingerEndpoint = \
createPersonBase(baseDir,nickname,domain,port,httpPrefix,saveToFile,password)
if noOfAccounts(baseDir)==1:
print(nickname+' becomes the instance admin')
setRole(baseDir,nickname,domain,'instance','admin')
return privateKeyPem,publicKeyPem,newPerson,webfingerEndpoint
def createSharedInbox(baseDir: str,nickname: str,domain: str,port: int, \ def createSharedInbox(baseDir: str,nickname: str,domain: str,port: int, \
httpPrefix: str) -> (str,str,{},{}): httpPrefix: str) -> (str,str,{},{}):