bug fix: web terminal for ubuntu

This commit is contained in:
Usman Nasir
2019-11-04 23:05:13 +05:00
parent 9897939a4a
commit 95a953a0a8
8 changed files with 213 additions and 196 deletions

View File

@@ -1,12 +1,14 @@
import os import signal
import asyncio import sys
import websockets
import paramiko
import json
import ssl import ssl
from SimpleWebSocketServer import WebSocket, SimpleSSLWebSocketServer
import paramiko
import os
import json
import threading as multi
import time
class SSHServer(multi.Thread):
class WebSocketServer:
def loadPublicKey(self): def loadPublicKey(self):
pubkey = '/root/.ssh/cyberpanel.pub' pubkey = '/root/.ssh/cyberpanel.pub'
@@ -22,16 +24,13 @@ class WebSocketServer:
except: except:
pass pass
if checker: if checker:
writeToFile = open(authFile, 'a') writeToFile = open(authFile, 'a')
writeToFile.writelines(data) writeToFile.writelines(data)
writeToFile.close() writeToFile.close()
def __init__(self, websocket):
def __init__(self, websocket, path): multi.Thread.__init__(self)
self.websockets = websocket
self.path = path
self.sshclient = paramiko.SSHClient() self.sshclient = paramiko.SSHClient()
self.sshclient.load_system_host_keys() self.sshclient.load_system_host_keys()
self.sshclient.set_missing_host_key_policy(paramiko.AutoAddPolicy()) self.sshclient.set_missing_host_key_policy(paramiko.AutoAddPolicy())
@@ -43,96 +42,64 @@ class WebSocketServer:
self.sshclient.connect('127.0.0.1', 22, username='root', pkey=k) self.sshclient.connect('127.0.0.1', 22, username='root', pkey=k)
self.shell = self.sshclient.invoke_shell(term='xterm') self.shell = self.sshclient.invoke_shell(term='xterm')
self.shell.settimeout(0) self.shell.settimeout(0)
self.verifyPath = ''
async def consumer_handler(self): self.websocket = websocket
try:
async for message in self.websockets:
await self.sendData(message)
except:
print(self.verifyPath)
os.remove(self.verifyPath)
async def producer_handler(self): def recvData(self):
try:
while True: while True:
message = await self.recvData()
if os.path.exists(self.verifyPath):
await self.websockets.send(message)
else:
await self.websockets.send('Authentication failed.')
except:
print(self.verifyPath)
os.remove(self.verifyPath)
async def recvData(self):
try: try:
print ('recvData') if os.path.exists(self.websocket.verifyPath):
try:
while True:
if self.shell.recv_ready(): if self.shell.recv_ready():
return self.shell.recv(9000).decode("utf-8") self.websocket.sendMessage(self.shell.recv(9000).decode("utf-8"))
else: else:
await asyncio.sleep(0.1) time.sleep(0.1)
continue except BaseException, msg:
except: time.sleep(2)
pass
except:
print(self.verifyPath)
os.remove(self.verifyPath)
async def sendData(self, message): def run(self):
try: try:
print ('sendData') self.recvData()
print (str(message)) except BaseException, msg:
print(str(msg))
class WebTerminalServer(WebSocket):
def handleMessage(self):
try: try:
data = json.loads(message) data = json.loads(self.data)
if str(message).find('"tp":"init"') > -1: if str(self.data).find('"tp":"init"') > -1:
self.verifyPath = str(data['data']['verifyPath']) self.verifyPath = str(data['data']['verifyPath'])
else: else:
if os.path.exists(self.verifyPath): if os.path.exists(self.verifyPath):
self.shell.send(str(data['data'])) self.shell.send(str(data['data']))
except: except:
pass pass
except:
print(self.verifyPath)
os.remove(self.verifyPath)
@staticmethod def handleConnected(self):
async def initialize(websocket, path): self.sh = SSHServer(self)
self.shell = self.sh.shell
self.sh.start()
def handleClose(self):
try: try:
webshell = WebSocketServer(websocket, path) os.remove(self.verifyPath)
consumer_task = asyncio.ensure_future(
webshell.consumer_handler())
producer_task = asyncio.ensure_future(
webshell.producer_handler())
done, pending = await asyncio.wait(
[consumer_task, producer_task],
return_when=asyncio.FIRST_COMPLETED,
)
for task in pending:
task.cancel()
except: except:
print(webshell.verifyPath) pass
os.remove(webshell.verifyPath)
def main(): if __name__ == "__main__":
pidfile = '/usr/local/CyberCP/WebTerminal/pid' pidfile = '/usr/local/CyberCP/WebTerminal/pid'
writeToFile = open(pidfile, 'w') writeToFile = open(pidfile, 'w')
writeToFile.write(str(os.getpid())) writeToFile.write(str(os.getpid()))
writeToFile.close() writeToFile.close()
context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER) server = SimpleSSLWebSocketServer('0.0.0.0', '5678', WebTerminalServer, '/usr/local/lscp/conf/cert.pem', '/usr/local/lscp/conf/key.pem', version=ssl.PROTOCOL_TLSv1)
context.load_cert_chain('/usr/local/lscp/conf/cert.pem', '/usr/local/lscp/conf/key.pem')
start_server = websockets.serve(WebSocketServer.initialize, '', 5678, ssl=context)
asyncio.get_event_loop().run_until_complete(start_server)
asyncio.get_event_loop().run_forever()
def close_sig_handler(signal, frame):
server.close()
sys.exit()
signal.signal(signal.SIGINT, close_sig_handler)
server.serveforever()
if __name__ == "__main__":
main()

View File

@@ -3,9 +3,9 @@ Description = CyberPanel SSH Websocket Daemon
[Service] [Service]
Type=forking Type=forking
ExecStart = /usr/local/CyberPanel/p3/bin/python3 /usr/local/CyberCP/WebTerminal/servCTRL.py start ExecStart = /usr/local/CyberCP/bin/python2 /usr/local/CyberCP/WebTerminal/servCTRL.py start
ExecStop = /usr/local/CyberPanel/p3/bin/python3 /usr/local/CyberCP/WebTerminal/servCTRL.py stop ExecStop = /usr/local/CyberCP/bin/python2 /usr/local/CyberCP/WebTerminal/servCTRL.py stop
Restart = /usr/local/CyberPanel/p3/bin/python3 /usr/local/CyberCP/WebTerminal/servCTRL.py restart Restart = /usr/local/CyberCP/bin/python2 /usr/local/CyberCP/WebTerminal/servCTRL.py restart
Restart=on-abnormal Restart=on-abnormal
[Install] [Install]

View File

@@ -20,7 +20,7 @@ class servCTRL:
if os.path.exists(servCTRL.pidfile): if os.path.exists(servCTRL.pidfile):
self.stop() self.stop()
command = '/usr/local/CyberPanel/p3/bin/python3 /usr/local/CyberCP/WebTerminal/CPWebSocket.py' command = '/usr/local/CyberCP/bin/python2 /usr/local/CyberCP/WebTerminal/CPWebSocket.py'
subprocess.Popen(shlex.split(command)) subprocess.Popen(shlex.split(command))
def stop(self): def stop(self):

View File

@@ -3610,67 +3610,6 @@ milter_default_action = accept
command = "virtualenv --system-site-packages /usr/local/CyberCP" command = "virtualenv --system-site-packages /usr/local/CyberCP"
res = subprocess.call(shlex.split(command)) res = subprocess.call(shlex.split(command))
### Virtual Env 3
if distro == centos:
command = 'yum -y install python36 -y'
preFlightsChecks.call(command, distro, '[install python36]',
'install python36',
1, 0, os.EX_OSERR)
command = 'virtualenv -p python3 /usr/local/CyberPanel/p3'
preFlightsChecks.call(command, distro, '[install python36]',
'install python36',
1, 0, os.EX_OSERR)
env_path = '/usr/local/CyberPanel/p3'
subprocess.call(['virtualenv', env_path])
activate_this = os.path.join(env_path, 'bin', 'activate_this.py')
execfile(activate_this, dict(__file__=activate_this))
command = "pip3 install --ignore-installed -r %s" % ('/usr/local/CyberCP/WebTerminal/requirments.txt')
preFlightsChecks.call(command, distro, '[install python36]',
'install python36',
1, 0, os.EX_OSERR)
else:
command = 'apt install -y python3-pip'
preFlightsChecks.call(command, distro, '[install python36]',
'install python36',
1, 0, os.EX_OSERR)
command = 'apt install build-essential libssl-dev libffi-dev python3-dev -y'
preFlightsChecks.call(command, distro, '[install python36]',
'install python36',
1, 0, os.EX_OSERR)
command = 'apt install -y python3-venv'
preFlightsChecks.call(command, distro, '[install python36]',
'install python36',
1, 0, os.EX_OSERR)
command = 'virtualenv -p python3 /usr/local/CyberPanel/p3'
preFlightsChecks.call(command, distro, '[install python36]',
'install python36',
1, 0, os.EX_OSERR)
env_path = '/usr/local/CyberPanel/p3'
subprocess.call(['virtualenv', env_path])
activate_this = os.path.join(env_path, 'bin', 'activate_this.py')
execfile(activate_this, dict(__file__=activate_this))
command = "pip3 install --ignore-installed -r %s" % ('/usr/local/CyberCP/WebTerminal/requirments.txt')
preFlightsChecks.call(command, distro, '[install python36]',
'install python36',
1, 0, os.EX_OSERR)
except OSError, msg: except OSError, msg:
logging.InstallLog.writeToFile(str(msg) + " [setupVirtualEnv]") logging.InstallLog.writeToFile(str(msg) + " [setupVirtualEnv]")
return 0 return 0
@@ -3761,6 +3700,62 @@ milter_default_action = accept
except: except:
pass pass
@staticmethod
def p3(distro):
### Virtual Env 3
if distro == centos:
command = 'yum -y install python36 -y'
preFlightsChecks.call(command, distro, '[install python36]',
'install python36',
1, 0, os.EX_OSERR)
command = 'virtualenv -p python3 /usr/local/CyberPanel/p3'
preFlightsChecks.call(command, distro, '[install python36]',
'install python36',
1, 0, os.EX_OSERR)
env_path = '/usr/local/CyberPanel/p3'
subprocess.call(['virtualenv', env_path])
activate_this = os.path.join(env_path, 'bin', 'activate_this.py')
execfile(activate_this, dict(__file__=activate_this))
command = "pip3 install --ignore-installed -r %s" % ('/usr/local/CyberCP/WebTerminal/requirments.txt')
preFlightsChecks.call(command, distro, '[install python36]',
'install python36',
1, 0, os.EX_OSERR)
else:
command = 'apt install -y python3-pip'
preFlightsChecks.call(command, distro, '[install python36]',
'install python36',
1, 0, os.EX_OSERR)
command = 'apt install build-essential libssl-dev libffi-dev python3-dev -y'
preFlightsChecks.call(command, distro, '[install python36]',
'install python36',
1, 0, os.EX_OSERR)
command = 'apt install -y python3-venv'
preFlightsChecks.call(command, distro, '[install python36]',
'install python36',
1, 0, os.EX_OSERR)
command = 'virtualenv -p python3 /usr/local/CyberPanel/p3'
preFlightsChecks.call(command, distro, '[install python36]',
'install python36',
1, 0, os.EX_OSERR)
env_path = '/usr/local/CyberPanel/p3'
subprocess.call(['virtualenv', env_path])
activate_this = os.path.join(env_path, 'bin', 'activate_this.py')
execfile(activate_this, dict(__file__=activate_this))
command = "pip3 install --ignore-installed -r %s" % ('/usr/local/CyberCP/WebTerminal/requirments.txt')
preFlightsChecks.call(command, distro, '[install python36]',
'install python36',
1, 0, os.EX_OSERR)
def installRestic(self): def installRestic(self):
try: try:
@@ -3967,6 +3962,7 @@ def main():
checks.enableDisableFTP('On', distro) checks.enableDisableFTP('On', distro)
checks.setUpFirstAccount() checks.setUpFirstAccount()
#checks.p3(distro)
logging.InstallLog.writeToFile("CyberPanel installation successfully completed!") logging.InstallLog.writeToFile("CyberPanel installation successfully completed!")
checks.installation_successfull() checks.installation_successfull()

Binary file not shown.

View File

@@ -3,12 +3,20 @@
# This file is distributed under the same license as the CyberPanel package. # This file is distributed under the same license as the CyberPanel package.
# FIRST AUTHOR <unasir@litespeedtech.com>, 2017. # FIRST AUTHOR <unasir@litespeedtech.com>, 2017.
# #
#: baseTemplate/templates/baseTemplate/index.html:220
#: baseTemplate/templates/baseTemplate/index.html:273
#: baseTemplate/templates/baseTemplate/index.html:280
#: baseTemplate/templates/baseTemplate/index.html:287
#: baseTemplate/templates/baseTemplate/index.html:294
#: baseTemplate/templates/baseTemplate/index.html:301
#: baseTemplate/templates/baseTemplate/index.html:308
#: emailMarketing/templates/emailMarketing/sendEmails.html:93
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: CyberPanel\n" "Project-Id-Version: CyberPanel\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-10-30 00:05+0500\n" "POT-Creation-Date: 2019-10-30 00:05+0500\n"
"PO-Revision-Date: 2019-11-04 01:13+0900\n" "PO-Revision-Date: 2019-10-27 23:29+0900\n"
"Last-Translator: @ kazuo210 <kazu.nito@gmail.com>\n" "Last-Translator: @ kazuo210 <kazu.nito@gmail.com>\n"
"Language-Team: LANGUAGE <unasir@litespeedtech.com>\n" "Language-Team: LANGUAGE <unasir@litespeedtech.com>\n"
"Language: ja\n" "Language: ja\n"
@@ -319,7 +327,7 @@ msgstr "イタリア語"
#: CyberCP/settings.py:189 #: CyberCP/settings.py:189
msgid "Deutsch" msgid "Deutsch"
msgstr "ドイツ語" msgstr ""
#: IncBackups/templates/IncBackups/backupSchedule.html:3 #: IncBackups/templates/IncBackups/backupSchedule.html:3
#: backup/templates/backup/backupSchedule.html:3 #: backup/templates/backup/backupSchedule.html:3
@@ -367,8 +375,10 @@ msgstr "実行間隔を選択"
#: IncBackups/templates/IncBackups/backupSchedule.html:54 #: IncBackups/templates/IncBackups/backupSchedule.html:54
#: IncBackups/templates/IncBackups/createBackup.html:56 #: IncBackups/templates/IncBackups/createBackup.html:56
#, fuzzy
#| msgid "Backup Management"
msgid "Backup Content" msgid "Backup Content"
msgstr "バックアップコンテンツ" msgstr "バックアップ管理"
#: IncBackups/templates/IncBackups/backupSchedule.html:98 #: IncBackups/templates/IncBackups/backupSchedule.html:98
#: IncBackups/templates/IncBackups/incrementalDestinations.html:72 #: IncBackups/templates/IncBackups/incrementalDestinations.html:72
@@ -386,7 +396,7 @@ msgstr "アカウントを検索。"
#: IncBackups/templates/IncBackups/backupSchedule.html:124 #: IncBackups/templates/IncBackups/backupSchedule.html:124
msgid "Select sites to be included in this job" msgid "Select sites to be included in this job"
msgstr "このジョブに含めるサイトを選択してください" msgstr ""
#: IncBackups/templates/IncBackups/backupSchedule.html:150 #: IncBackups/templates/IncBackups/backupSchedule.html:150
#: IncBackups/templates/IncBackups/createBackup.html:127 #: IncBackups/templates/IncBackups/createBackup.html:127
@@ -449,8 +459,10 @@ msgid "Delete"
msgstr "削除" msgstr "削除"
#: IncBackups/templates/IncBackups/createBackup.html:3 #: IncBackups/templates/IncBackups/createBackup.html:3
#, fuzzy
#| msgid "Cancel Backup"
msgid "Create Incremental Backup" msgid "Create Incremental Backup"
msgstr "増分バックアップを作成します" msgstr "バックアップを中止"
#: IncBackups/templates/IncBackups/createBackup.html:13 #: IncBackups/templates/IncBackups/createBackup.html:13
#: IncBackups/templates/IncBackups/createBackup.html:23 #: IncBackups/templates/IncBackups/createBackup.html:23
@@ -468,8 +480,10 @@ msgid "Backup Docs"
msgstr "バックアップのドキュメント" msgstr "バックアップのドキュメント"
#: IncBackups/templates/IncBackups/createBackup.html:17 #: IncBackups/templates/IncBackups/createBackup.html:17
#, fuzzy
#| msgid "This page can be used to Back up your websites"
msgid "This page can be used to create incremental backups for your websites." msgid "This page can be used to create incremental backups for your websites."
msgstr "このページを使用して、Web サイトの増分バックアップを作成できます" msgstr "このページ、Web サイトバックアップするために使用することができます"
#: IncBackups/templates/IncBackups/createBackup.html:33 #: IncBackups/templates/IncBackups/createBackup.html:33
#: IncBackups/templates/IncBackups/restoreRemoteBackups.html:35 #: IncBackups/templates/IncBackups/restoreRemoteBackups.html:35
@@ -523,7 +537,7 @@ msgstr "ジョブ ID"
#: IncBackups/templates/IncBackups/createBackup.html:162 #: IncBackups/templates/IncBackups/createBackup.html:162
#: IncBackups/templates/IncBackups/restoreRemoteBackups.html:97 #: IncBackups/templates/IncBackups/restoreRemoteBackups.html:97
msgid "Snapshot ID" msgid "Snapshot ID"
msgstr "スナップショット ID" msgstr ""
#: IncBackups/templates/IncBackups/createBackup.html:163 #: IncBackups/templates/IncBackups/createBackup.html:163
#: dns/templates/dns/addDeleteDNSRecords.html:327 #: dns/templates/dns/addDeleteDNSRecords.html:327
@@ -543,20 +557,28 @@ msgid "Set up Back up Destinations"
msgstr "バックアップ先の設定" msgstr "バックアップ先の設定"
#: IncBackups/templates/IncBackups/incrementalDestinations.html:14 #: IncBackups/templates/IncBackups/incrementalDestinations.html:14
#, fuzzy
#| msgid "Set up Back up Destinations"
msgid "Set up Incremental Back up Destinations" msgid "Set up Incremental Back up Destinations"
msgstr "増分バックアップ先設定します" msgstr "バックアップ先設定"
#: IncBackups/templates/IncBackups/incrementalDestinations.html:20 #: IncBackups/templates/IncBackups/incrementalDestinations.html:20
#, fuzzy
#| msgid "On this page you can set up your Back up destinations. (SFTP)"
msgid "On this page you can set up your Back up destinations. (SFTP and AWS)" msgid "On this page you can set up your Back up destinations. (SFTP and AWS)"
msgstr "このページでは、バックアップ先を設定できます。 SFTPおよびAWS" msgstr "このページでは、バックアップ先を設定できます。 SFTP"
#: IncBackups/templates/IncBackups/incrementalDestinations.html:26 #: IncBackups/templates/IncBackups/incrementalDestinations.html:26
#, fuzzy
#| msgid "Set up Back up Destinations"
msgid "Set up Back up Destinations." msgid "Set up Back up Destinations."
msgstr "バックアップ先設定します。" msgstr "バックアップ先設定"
#: IncBackups/templates/IncBackups/incrementalDestinations.html:35 #: IncBackups/templates/IncBackups/incrementalDestinations.html:35
#, fuzzy
#| msgid "Select Template"
msgid "Select Type" msgid "Select Type"
msgstr "種類の選択" msgstr "テンプレートの選択"
#: IncBackups/templates/IncBackups/incrementalDestinations.html:47 #: IncBackups/templates/IncBackups/incrementalDestinations.html:47
#: backup/templates/backup/backupDestinations.html:30 #: backup/templates/backup/backupDestinations.html:30
@@ -609,27 +631,28 @@ msgstr "IP"
#: IncBackups/templates/IncBackups/incrementalDestinations.html:117 #: IncBackups/templates/IncBackups/incrementalDestinations.html:117
#: IncBackups/templates/IncBackups/incrementalDestinations.html:153 #: IncBackups/templates/IncBackups/incrementalDestinations.html:153
msgid "AWS_ACCESS_KEY_ID" msgid "AWS_ACCESS_KEY_ID"
msgstr "AWS_ACCESS_KEY_ID" msgstr ""
#: IncBackups/templates/IncBackups/incrementalDestinations.html:124 #: IncBackups/templates/IncBackups/incrementalDestinations.html:124
msgid "AWS_SECRET_ACCESS_KEY" msgid "AWS_SECRET_ACCESS_KEY"
msgstr "AWS_SECRET_ACCESS_KEY" msgstr ""
#: IncBackups/templates/IncBackups/restoreRemoteBackups.html:3 #: IncBackups/templates/IncBackups/restoreRemoteBackups.html:3
#: IncBackups/templates/IncBackups/restoreRemoteBackups.html:13 #: IncBackups/templates/IncBackups/restoreRemoteBackups.html:13
msgid "Restore Remote Incremental Backups" msgid "Restore Remote Incremental Backups"
msgstr "リモート増分バックアップの復元" msgstr ""
#: IncBackups/templates/IncBackups/restoreRemoteBackups.html:19 #: IncBackups/templates/IncBackups/restoreRemoteBackups.html:19
#, fuzzy
#| msgid "This page can be used to Back up your websites"
msgid "" msgid ""
"This page can be used to restore remote incremental backups for your " "This page can be used to restore remote incremental backups for your "
"websites." "websites."
msgstr "" msgstr "このページは、Web サイトをバックアップするために使用することができます"
"このページを使用して、Web サイトのリモート増分バックアップを復元できます。"
#: IncBackups/templates/IncBackups/restoreRemoteBackups.html:69 #: IncBackups/templates/IncBackups/restoreRemoteBackups.html:69
msgid "Fetch Restore Points" msgid "Fetch Restore Points"
msgstr "復元ポイントの取得" msgstr ""
#: IncBackups/templates/IncBackups/restoreRemoteBackups.html:99 #: IncBackups/templates/IncBackups/restoreRemoteBackups.html:99
#: emailMarketing/templates/emailMarketing/manageSMTPHosts.html:76 #: emailMarketing/templates/emailMarketing/manageSMTPHosts.html:76
@@ -809,11 +832,11 @@ msgstr "接続を確認"
#: backup/templates/backup/backupSchedule.html:54 #: backup/templates/backup/backupSchedule.html:54
msgid "Local Path" msgid "Local Path"
msgstr "ローカルパス" msgstr ""
#: backup/templates/backup/backupSchedule.html:57 #: backup/templates/backup/backupSchedule.html:57
msgid "Local directory where backups will be moved after creation." msgid "Local directory where backups will be moved after creation."
msgstr "作成後にバックアップを移動するローカルディレクトリ。" msgstr ""
#: backup/templates/backup/backupSchedule.html:82 #: backup/templates/backup/backupSchedule.html:82
msgid "Cannot add schedule. Error message:" msgid "Cannot add schedule. Error message:"
@@ -1437,12 +1460,16 @@ msgid "Create Nameserver"
msgstr "ネームサーバーの作成" msgstr "ネームサーバーの作成"
#: baseTemplate/templates/baseTemplate/index.html:489 #: baseTemplate/templates/baseTemplate/index.html:489
#, fuzzy
#| msgid "Create Nameserver"
msgid "Configure Default Nameservers" msgid "Configure Default Nameservers"
msgstr "デフォルトネームサーバーの設定" msgstr "ネームサーバーの作成"
#: baseTemplate/templates/baseTemplate/index.html:489 #: baseTemplate/templates/baseTemplate/index.html:489
#, fuzzy
#| msgid "Create Nameserver"
msgid "Config Default Nameservers" msgid "Config Default Nameservers"
msgstr "デフォルトネームサーバーの設定" msgstr "ネームサーバーの作成"
#: baseTemplate/templates/baseTemplate/index.html:492 #: baseTemplate/templates/baseTemplate/index.html:492
#: dns/templates/dns/createDNSZone.html:12 #: dns/templates/dns/createDNSZone.html:12
@@ -1579,31 +1606,43 @@ msgstr "バックアップ先の追加/削除"
#: baseTemplate/templates/baseTemplate/index.html:591 #: baseTemplate/templates/baseTemplate/index.html:591
msgid "Incremental Back up - Beta" msgid "Incremental Back up - Beta"
msgstr "増分バックアップ - ベータ版" msgstr ""
#: baseTemplate/templates/baseTemplate/index.html:593 #: baseTemplate/templates/baseTemplate/index.html:593
#, fuzzy
#| msgid "Cancel Backup"
msgid "Incremental Back up" msgid "Incremental Back up"
msgstr "増分バックアップ" msgstr "バックアップを中止"
#: baseTemplate/templates/baseTemplate/index.html:599 #: baseTemplate/templates/baseTemplate/index.html:599
#, fuzzy
#| msgid "Restore Back up"
msgid "Create/Restore Back up" msgid "Create/Restore Back up"
msgstr "バックアップの作成/復元" msgstr "バックアップの復元"
#: baseTemplate/templates/baseTemplate/index.html:602 #: baseTemplate/templates/baseTemplate/index.html:602
#, fuzzy
#| msgid "Add/Delete Destinations"
msgid "Add/Remove Destinations" msgid "Add/Remove Destinations"
msgstr "宛先の追加/削除" msgstr "宛先の追加/削除"
#: baseTemplate/templates/baseTemplate/index.html:605 #: baseTemplate/templates/baseTemplate/index.html:605
#, fuzzy
#| msgid "Schedule Back up"
msgid "Schedule Back ups" msgid "Schedule Back ups"
msgstr "バックアップスケジュール" msgstr "バックアップスケジュール"
#: baseTemplate/templates/baseTemplate/index.html:608 #: baseTemplate/templates/baseTemplate/index.html:608
#, fuzzy
#| msgid "Transfer Websites from Remote Server - CyberPanel"
msgid "Restore from Remote Server" msgid "Restore from Remote Server"
msgstr "リモート サーバーからの復元" msgstr "リモートサーバーからWebサイトを転送 - CyberPanel"
#: baseTemplate/templates/baseTemplate/index.html:608 #: baseTemplate/templates/baseTemplate/index.html:608
#, fuzzy
#| msgid "Restore Website"
msgid "Restore from Remote" msgid "Restore from Remote"
msgstr "リモートから復元" msgstr "Web サイトの復元"
#: baseTemplate/templates/baseTemplate/index.html:625 #: baseTemplate/templates/baseTemplate/index.html:625
#: manageSSL/templates/manageSSL/index.html:29 #: manageSSL/templates/manageSSL/index.html:29
@@ -2322,12 +2361,16 @@ msgid "Record Successfully Added."
msgstr "レコードが追加されました。" msgstr "レコードが追加されました。"
#: dns/templates/dns/configureDefaultNameServers.html:3 #: dns/templates/dns/configureDefaultNameServers.html:3
#, fuzzy
#| msgid "Create Nameserver - CyberPanel"
msgid "Configure Default Nameserver - CyberPanel" msgid "Configure Default Nameserver - CyberPanel"
msgstr "デフォルトネームサーバーの設定 - CyberPanel" msgstr "ネームサーバーの作成 - CyberPanel"
#: dns/templates/dns/configureDefaultNameServers.html:12 #: dns/templates/dns/configureDefaultNameServers.html:12
#, fuzzy
#| msgid "Create Nameserver"
msgid "Configure Default Nameserver" msgid "Configure Default Nameserver"
msgstr "デフォルトネームサーバーの設定" msgstr "ネームサーバーの作成"
#: dns/templates/dns/configureDefaultNameServers.html:13 #: dns/templates/dns/configureDefaultNameServers.html:13
#: dns/templates/dns/createNameServer.html:13 #: dns/templates/dns/createNameServer.html:13
@@ -2351,16 +2394,22 @@ msgid "First Nameserver"
msgstr "ファーストネームサーバー" msgstr "ファーストネームサーバー"
#: dns/templates/dns/configureDefaultNameServers.html:45 #: dns/templates/dns/configureDefaultNameServers.html:45
#, fuzzy
#| msgid "Second Nameserver (Back up)"
msgid "Second Nameserver" msgid "Second Nameserver"
msgstr "セカンドネームサーバー" msgstr "セカンドネームサーバー(バックアップ)"
#: dns/templates/dns/configureDefaultNameServers.html:52 #: dns/templates/dns/configureDefaultNameServers.html:52
#, fuzzy
#| msgid "First Nameserver"
msgid "Third Nameserver" msgid "Third Nameserver"
msgstr "サードネームサーバー" msgstr "ファーストネームサーバー"
#: dns/templates/dns/configureDefaultNameServers.html:59 #: dns/templates/dns/configureDefaultNameServers.html:59
#, fuzzy
#| msgid "First Nameserver"
msgid "Forth Nameserver" msgid "Forth Nameserver"
msgstr "前のネームサーバー" msgstr "ファーストネームサーバー"
#: dns/templates/dns/configureDefaultNameServers.html:68 #: dns/templates/dns/configureDefaultNameServers.html:68
#: emailMarketing/templates/emailMarketing/website.html:656 #: emailMarketing/templates/emailMarketing/website.html:656
@@ -3651,8 +3700,10 @@ msgstr "SpamAssassin 設定が保存されました。"
#: emailPremium/templates/emailPremium/emailLimits.html:13 #: emailPremium/templates/emailPremium/emailLimits.html:13
#: emailPremium/templates/emailPremium/listDomains.html:14 #: emailPremium/templates/emailPremium/listDomains.html:14
#: emailPremium/templates/emailPremium/policyServer.html:13 #: emailPremium/templates/emailPremium/policyServer.html:13
#, fuzzy
#| msgid "Emai Limits Docs"
msgid "Email Limits Docs" msgid "Email Limits Docs"
msgstr "メール制限ドキュメント" msgstr "メール制限ドキュメント"
#: emailPremium/templates/emailPremium/emailLimits.html:14 #: emailPremium/templates/emailPremium/emailLimits.html:14
msgid "View and change email limits for a domain name." msgid "View and change email limits for a domain name."
@@ -4665,8 +4716,10 @@ msgid "This page help you setup email forwarding for your emails."
msgstr "このページは、メールのメール転送を設定するのに役立ちます。" msgstr "このページは、メールのメール転送を設定するのに役立ちます。"
#: mailServer/templates/mailServer/emailForwarding.html:61 #: mailServer/templates/mailServer/emailForwarding.html:61
#, fuzzy
#| msgid "Forwarding Docs"
msgid "Forwarding Options" msgid "Forwarding Options"
msgstr "転送オプション" msgstr "ドキュメントの転送"
#: mailServer/templates/mailServer/emailForwarding.html:97 #: mailServer/templates/mailServer/emailForwarding.html:97
#: mailServer/templates/mailServer/emailForwarding.html:118 #: mailServer/templates/mailServer/emailForwarding.html:118
@@ -4675,7 +4728,7 @@ msgstr "送信元"
#: mailServer/templates/mailServer/emailForwarding.html:101 #: mailServer/templates/mailServer/emailForwarding.html:101
msgid "or path to the program" msgid "or path to the program"
msgstr "またはプログラムへのパス" msgstr ""
#: mailServer/templates/mailServer/emailForwarding.html:106 #: mailServer/templates/mailServer/emailForwarding.html:106
msgid "Forward Email" msgid "Forward Email"
@@ -5313,8 +5366,10 @@ msgid "Switch to LiteSpeed Enterprise Web Server"
msgstr "LiteSpeed Enterprise Web Server に切り替えます" msgstr "LiteSpeed Enterprise Web Server に切り替えます"
#: serverStatus/templates/serverStatus/litespeedStatus.html:149 #: serverStatus/templates/serverStatus/litespeedStatus.html:149
#, fuzzy
#| msgid "LiteSpeed Processes"
msgid "LiteSpeed Serial No. (License Key)" msgid "LiteSpeed Serial No. (License Key)"
msgstr "LiteSpeed シリアル番号(ライセンスキー)" msgstr "LiteSpeed 操作"
#: serverStatus/templates/serverStatus/litespeedStatus.html:160 #: serverStatus/templates/serverStatus/litespeedStatus.html:160
msgid "Switch" msgid "Switch"
@@ -5322,7 +5377,7 @@ msgstr "切り替え"
#: serverStatus/templates/serverStatus/litespeedStatus.html:162 #: serverStatus/templates/serverStatus/litespeedStatus.html:162
msgid "Get 15 Days Trial" msgid "Get 15 Days Trial"
msgstr "15日間のトライアルを取得する" msgstr ""
#: serverStatus/templates/serverStatus/litespeedStatus.html:175 #: serverStatus/templates/serverStatus/litespeedStatus.html:175
msgid "" msgid ""
@@ -5330,9 +5385,6 @@ msgid ""
"CyberPanel will auto fetch 15 days trial key for you. Make sure this server " "CyberPanel will auto fetch 15 days trial key for you. Make sure this server "
"have not used trial already." "have not used trial already."
msgstr "" msgstr ""
"注15 日間のトライアルを選択した場合、シリアルキーを入力する必要はありませ"
"ん。CyberPanel は15日間の試用版キーを自動的に取得します。 このサーバーがまだ"
"試用版を使用していないことを確認してください。"
#: serverStatus/templates/serverStatus/litespeedStatus.html:193 #: serverStatus/templates/serverStatus/litespeedStatus.html:193
msgid "With great wisdom comes great responsibility." msgid "With great wisdom comes great responsibility."

View File

@@ -1982,7 +1982,7 @@ failovermethod=priority
Upgrade.someDirectories() Upgrade.someDirectories()
Upgrade.installLSCPD() Upgrade.installLSCPD()
Upgrade.GeneralMigrations() Upgrade.GeneralMigrations()
Upgrade.p3() #Upgrade.p3()
if os.path.exists(postfixPath): if os.path.exists(postfixPath):
Upgrade.upgradeDovecot() Upgrade.upgradeDovecot()

View File

@@ -11,7 +11,7 @@ cffi==1.11.5
chardet==3.0.4 chardet==3.0.4
ConfigArgParse==0.13.0 ConfigArgParse==0.13.0
configobj==4.7.2 configobj==4.7.2
cryptography==2.2.2 cryptography==2.8
decorator==3.4.0 decorator==3.4.0
docker==3.6.0 docker==3.6.0
docker-pycreds==0.4.0 docker-pycreds==0.4.0
@@ -47,6 +47,8 @@ pyliblzma==0.5.3
pyOpenSSL==17.5.0 pyOpenSSL==17.5.0
pyRFC3339==1.1 pyRFC3339==1.1
pyserial==2.6 pyserial==2.6
paramiko==2.6.0
SimpleWebSocketServer==0.1.1
python-dateutil==2.7.5 python-dateutil==2.7.5
pytz==2018.4 pytz==2018.4
pyudev==0.15 pyudev==0.15