mirror of
https://github.com/usmannasir/cyberpanel.git
synced 2025-11-08 06:16:08 +01:00
bug fix: web terminal for ubuntu
This commit is contained in:
@@ -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()
|
|
||||||
@@ -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]
|
||||||
|
|||||||
@@ -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):
|
||||||
|
|||||||
@@ -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.
@@ -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."
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user