diff --git a/plugins/pureftp/conf/pure-ftpd.conf b/plugins/pureftp/conf/pure-ftpd.conf new file mode 100644 index 000000000..fdf45e76b --- /dev/null +++ b/plugins/pureftp/conf/pure-ftpd.conf @@ -0,0 +1,29 @@ +ChrootEveryone yes +BrokenClientsCompatibility no +MaxClientsNumber 50 +Daemonize yes +MaxClientsPerIP 8 +VerboseLog no +DisplayDotFiles yes +AnonymousOnly no +NoAnonymous no +SyslogFacility ftp +DontResolve yes +MaxIdleTime 15 +LimitRecursion 10000 8 +AnonymousCanCreateDirs no +MaxLoad 4 +AntiWarez yes +Bind 0.0.0.0,23 +Umask 133:022 +MinUID 100 +AllowUserFXP no +AllowAnonymousFXP no +ProhibitDotFilesWrite no +ProhibitDotFilesRead no +AutoRename no +AnonymousCantUpload no +MaxDiskUsage 99 +CustomerProof yes +PIDFile /var/run/pure-ftpd.pid +PureDB {$SERVER_PATH}/pureftp/etc/pureftpd.pdb diff --git a/plugins/pureftp/index.py b/plugins/pureftp/index.py index b55312405..16d7ef64d 100755 --- a/plugins/pureftp/index.py +++ b/plugins/pureftp/index.py @@ -4,6 +4,7 @@ import sys import io import os import time +import shutil sys.path.append(os.getcwd() + "/class/core") import public @@ -84,23 +85,29 @@ def initDreplace(): file_bin = initD_path + '/' + getPluginName() # initd replace - content = public.readFile(file_tpl) - content = contentReplace(content) - public.writeFile(file_bin, content) - public.execShell('chmod +x ' + file_bin) + if not os.path.exists(file_bin): + content = public.readFile(file_tpl) + content = contentReplace(content) + public.writeFile(file_bin, content) + public.execShell('chmod +x ' + file_bin) - pureTplConfig = getPluginDir() + "/init.d/pure-config.pl" pureSbinConfig = getServerDir() + "/sbin/pure-config.pl" - - content = public.readFile(pureTplConfig) - content = contentReplace(content) - public.writeFile(pureSbinConfig, content) - public.execShell('chmod +x ' + pureSbinConfig) - - # # config replace - # conf_content = public.readFile(getConf()) - # conf_content = conf_content.replace('{$SERVER_PATH}', service_path) - # public.writeFile(getServerDir() + '/redis.conf', conf_content) + if not os.path.exists(pureSbinConfig): + pureTplConfig = getPluginDir() + "/init.d/pure-config.pl" + content = public.readFile(pureTplConfig) + content = contentReplace(content) + public.writeFile(pureSbinConfig, content) + public.execShell('chmod +x ' + pureSbinConfig) + + pureFtpdConfig = getServerDir() + "/etc/pure-ftpd.conf" + pureFtpdConfigBak = getServerDir() + "/etc/pure-ftpd.bak.conf" + pureFtpdConfigTpl = getPluginDir() + "/conf/pure-ftpd.conf" + + if not os.path.exists(pureFtpdConfigBak): + shutil.copyfile(pureFtpdConfig, pureFtpdConfigBak) + content = public.readFile(pureFtpdConfigTpl) + content = contentReplace(content) + public.writeFile(pureFtpdConfig, content) return file_bin @@ -197,7 +204,7 @@ def pftpAdd(username, password, path): user = pftpUser() if not os.path.exists(path): - os.mkdir(path) + os.makedirs(path) if public.isAppleSystem(): os.system('chown ' + user + '.staff ' + path) else: @@ -374,7 +381,8 @@ def modFtpPort(): conf = public.readFile(file) rep = u"\n#?\s*Bind\s+[0-9]+\.[0-9]+\.[0-9]+\.+[0-9]+,([0-9]+)" # preg_match(rep,conf,tmp) - conf = re.sub(rep, "\nBind 0.0.0.0," + port, conf) + conf = re.sub( + rep, "\nBind 0.0.0.0," + port, conf) public.writeFile(file, conf) restart() return 'ok'