mirror of
https://github.com/usmannasir/cyberpanel.git
synced 2025-11-07 13:56:01 +01:00
bug fix: web terminal for ubuntu
This commit is contained in:
@@ -1,12 +1,14 @@
|
||||
import os
|
||||
import asyncio
|
||||
import websockets
|
||||
import paramiko
|
||||
import json
|
||||
import signal
|
||||
import sys
|
||||
import ssl
|
||||
from SimpleWebSocketServer import WebSocket, SimpleSSLWebSocketServer
|
||||
import paramiko
|
||||
import os
|
||||
import json
|
||||
import threading as multi
|
||||
import time
|
||||
|
||||
|
||||
class WebSocketServer:
|
||||
class SSHServer(multi.Thread):
|
||||
|
||||
def loadPublicKey(self):
|
||||
pubkey = '/root/.ssh/cyberpanel.pub'
|
||||
@@ -22,16 +24,13 @@ class WebSocketServer:
|
||||
except:
|
||||
pass
|
||||
|
||||
|
||||
if checker:
|
||||
writeToFile = open(authFile, 'a')
|
||||
writeToFile.writelines(data)
|
||||
writeToFile.close()
|
||||
|
||||
|
||||
def __init__(self, websocket, path):
|
||||
self.websockets = websocket
|
||||
self.path = path
|
||||
def __init__(self, websocket):
|
||||
multi.Thread.__init__(self)
|
||||
self.sshclient = paramiko.SSHClient()
|
||||
self.sshclient.load_system_host_keys()
|
||||
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.shell = self.sshclient.invoke_shell(term='xterm')
|
||||
self.shell.settimeout(0)
|
||||
self.verifyPath = ''
|
||||
|
||||
async def consumer_handler(self):
|
||||
try:
|
||||
async for message in self.websockets:
|
||||
await self.sendData(message)
|
||||
except:
|
||||
print(self.verifyPath)
|
||||
os.remove(self.verifyPath)
|
||||
self.websocket = websocket
|
||||
|
||||
async def producer_handler(self):
|
||||
try:
|
||||
def recvData(self):
|
||||
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:
|
||||
print ('recvData')
|
||||
try:
|
||||
while True:
|
||||
if os.path.exists(self.websocket.verifyPath):
|
||||
if self.shell.recv_ready():
|
||||
return self.shell.recv(9000).decode("utf-8")
|
||||
self.websocket.sendMessage(self.shell.recv(9000).decode("utf-8"))
|
||||
else:
|
||||
await asyncio.sleep(0.1)
|
||||
continue
|
||||
except:
|
||||
pass
|
||||
except:
|
||||
print(self.verifyPath)
|
||||
os.remove(self.verifyPath)
|
||||
time.sleep(0.1)
|
||||
except BaseException, msg:
|
||||
time.sleep(2)
|
||||
|
||||
async def sendData(self, message):
|
||||
def run(self):
|
||||
try:
|
||||
print ('sendData')
|
||||
print (str(message))
|
||||
self.recvData()
|
||||
except BaseException, msg:
|
||||
print(str(msg))
|
||||
|
||||
|
||||
class WebTerminalServer(WebSocket):
|
||||
|
||||
def handleMessage(self):
|
||||
try:
|
||||
data = json.loads(message)
|
||||
if str(message).find('"tp":"init"') > -1:
|
||||
data = json.loads(self.data)
|
||||
if str(self.data).find('"tp":"init"') > -1:
|
||||
self.verifyPath = str(data['data']['verifyPath'])
|
||||
else:
|
||||
if os.path.exists(self.verifyPath):
|
||||
self.shell.send(str(data['data']))
|
||||
except:
|
||||
pass
|
||||
except:
|
||||
print(self.verifyPath)
|
||||
os.remove(self.verifyPath)
|
||||
|
||||
@staticmethod
|
||||
async def initialize(websocket, path):
|
||||
def handleConnected(self):
|
||||
self.sh = SSHServer(self)
|
||||
self.shell = self.sh.shell
|
||||
self.sh.start()
|
||||
|
||||
def handleClose(self):
|
||||
try:
|
||||
webshell = WebSocketServer(websocket, path)
|
||||
|
||||
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()
|
||||
os.remove(self.verifyPath)
|
||||
except:
|
||||
print(webshell.verifyPath)
|
||||
os.remove(webshell.verifyPath)
|
||||
pass
|
||||
|
||||
|
||||
def main():
|
||||
if __name__ == "__main__":
|
||||
pidfile = '/usr/local/CyberCP/WebTerminal/pid'
|
||||
|
||||
writeToFile = open(pidfile, 'w')
|
||||
writeToFile.write(str(os.getpid()))
|
||||
writeToFile.close()
|
||||
|
||||
context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)
|
||||
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()
|
||||
server = SimpleSSLWebSocketServer('0.0.0.0', '5678', WebTerminalServer, '/usr/local/lscp/conf/cert.pem', '/usr/local/lscp/conf/key.pem', version=ssl.PROTOCOL_TLSv1)
|
||||
|
||||
def close_sig_handler(signal, frame):
|
||||
server.close()
|
||||
sys.exit()
|
||||
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
signal.signal(signal.SIGINT, close_sig_handler)
|
||||
server.serveforever()
|
||||
@@ -3,9 +3,9 @@ Description = CyberPanel SSH Websocket Daemon
|
||||
|
||||
[Service]
|
||||
Type=forking
|
||||
ExecStart = /usr/local/CyberPanel/p3/bin/python3 /usr/local/CyberCP/WebTerminal/servCTRL.py start
|
||||
ExecStop = /usr/local/CyberPanel/p3/bin/python3 /usr/local/CyberCP/WebTerminal/servCTRL.py stop
|
||||
Restart = /usr/local/CyberPanel/p3/bin/python3 /usr/local/CyberCP/WebTerminal/servCTRL.py restart
|
||||
ExecStart = /usr/local/CyberCP/bin/python2 /usr/local/CyberCP/WebTerminal/servCTRL.py start
|
||||
ExecStop = /usr/local/CyberCP/bin/python2 /usr/local/CyberCP/WebTerminal/servCTRL.py stop
|
||||
Restart = /usr/local/CyberCP/bin/python2 /usr/local/CyberCP/WebTerminal/servCTRL.py restart
|
||||
Restart=on-abnormal
|
||||
|
||||
[Install]
|
||||
|
||||
@@ -20,7 +20,7 @@ class servCTRL:
|
||||
if os.path.exists(servCTRL.pidfile):
|
||||
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))
|
||||
|
||||
def stop(self):
|
||||
|
||||
@@ -3610,67 +3610,6 @@ milter_default_action = accept
|
||||
command = "virtualenv --system-site-packages /usr/local/CyberCP"
|
||||
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:
|
||||
logging.InstallLog.writeToFile(str(msg) + " [setupVirtualEnv]")
|
||||
return 0
|
||||
@@ -3761,6 +3700,62 @@ milter_default_action = accept
|
||||
except:
|
||||
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):
|
||||
try:
|
||||
|
||||
@@ -3967,6 +3962,7 @@ def main():
|
||||
checks.enableDisableFTP('On', distro)
|
||||
|
||||
checks.setUpFirstAccount()
|
||||
#checks.p3(distro)
|
||||
logging.InstallLog.writeToFile("CyberPanel installation successfully completed!")
|
||||
checks.installation_successfull()
|
||||
|
||||
|
||||
Binary file not shown.
@@ -3,12 +3,20 @@
|
||||
# This file is distributed under the same license as the CyberPanel package.
|
||||
# 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 ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: CyberPanel\n"
|
||||
"Report-Msgid-Bugs-To: \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"
|
||||
"Language-Team: LANGUAGE <unasir@litespeedtech.com>\n"
|
||||
"Language: ja\n"
|
||||
@@ -319,7 +327,7 @@ msgstr "イタリア語"
|
||||
|
||||
#: CyberCP/settings.py:189
|
||||
msgid "Deutsch"
|
||||
msgstr "ドイツ語"
|
||||
msgstr ""
|
||||
|
||||
#: IncBackups/templates/IncBackups/backupSchedule.html:3
|
||||
#: backup/templates/backup/backupSchedule.html:3
|
||||
@@ -367,8 +375,10 @@ msgstr "実行間隔を選択"
|
||||
|
||||
#: IncBackups/templates/IncBackups/backupSchedule.html:54
|
||||
#: IncBackups/templates/IncBackups/createBackup.html:56
|
||||
#, fuzzy
|
||||
#| msgid "Backup Management"
|
||||
msgid "Backup Content"
|
||||
msgstr "バックアップコンテンツ"
|
||||
msgstr "バックアップ管理"
|
||||
|
||||
#: IncBackups/templates/IncBackups/backupSchedule.html:98
|
||||
#: IncBackups/templates/IncBackups/incrementalDestinations.html:72
|
||||
@@ -386,7 +396,7 @@ msgstr "アカウントを検索。"
|
||||
|
||||
#: IncBackups/templates/IncBackups/backupSchedule.html:124
|
||||
msgid "Select sites to be included in this job"
|
||||
msgstr "このジョブに含めるサイトを選択してください"
|
||||
msgstr ""
|
||||
|
||||
#: IncBackups/templates/IncBackups/backupSchedule.html:150
|
||||
#: IncBackups/templates/IncBackups/createBackup.html:127
|
||||
@@ -449,8 +459,10 @@ msgid "Delete"
|
||||
msgstr "削除"
|
||||
|
||||
#: IncBackups/templates/IncBackups/createBackup.html:3
|
||||
#, fuzzy
|
||||
#| msgid "Cancel Backup"
|
||||
msgid "Create Incremental Backup"
|
||||
msgstr "増分バックアップを作成します"
|
||||
msgstr "バックアップを中止"
|
||||
|
||||
#: IncBackups/templates/IncBackups/createBackup.html:13
|
||||
#: IncBackups/templates/IncBackups/createBackup.html:23
|
||||
@@ -468,8 +480,10 @@ msgid "Backup Docs"
|
||||
msgstr "バックアップのドキュメント"
|
||||
|
||||
#: 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."
|
||||
msgstr "このページを使用して、Web サイトの増分バックアップを作成できます。"
|
||||
msgstr "このページは、Web サイトをバックアップするために使用することができます"
|
||||
|
||||
#: IncBackups/templates/IncBackups/createBackup.html:33
|
||||
#: IncBackups/templates/IncBackups/restoreRemoteBackups.html:35
|
||||
@@ -523,7 +537,7 @@ msgstr "ジョブ ID"
|
||||
#: IncBackups/templates/IncBackups/createBackup.html:162
|
||||
#: IncBackups/templates/IncBackups/restoreRemoteBackups.html:97
|
||||
msgid "Snapshot ID"
|
||||
msgstr "スナップショット ID"
|
||||
msgstr ""
|
||||
|
||||
#: IncBackups/templates/IncBackups/createBackup.html:163
|
||||
#: dns/templates/dns/addDeleteDNSRecords.html:327
|
||||
@@ -543,20 +557,28 @@ msgid "Set up Back up Destinations"
|
||||
msgstr "バックアップ先の設定"
|
||||
|
||||
#: IncBackups/templates/IncBackups/incrementalDestinations.html:14
|
||||
#, fuzzy
|
||||
#| msgid "Set up Back up Destinations"
|
||||
msgid "Set up Incremental Back up Destinations"
|
||||
msgstr "増分バックアップ先を設定します"
|
||||
msgstr "バックアップ先の設定"
|
||||
|
||||
#: 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)"
|
||||
msgstr "このページでは、バックアップ先を設定できます。 (SFTPおよびAWS)"
|
||||
msgstr "このページでは、バックアップ先を設定できます。 (SFTP)"
|
||||
|
||||
#: IncBackups/templates/IncBackups/incrementalDestinations.html:26
|
||||
#, fuzzy
|
||||
#| msgid "Set up Back up Destinations"
|
||||
msgid "Set up Back up Destinations."
|
||||
msgstr "バックアップ先を設定します。"
|
||||
msgstr "バックアップ先の設定"
|
||||
|
||||
#: IncBackups/templates/IncBackups/incrementalDestinations.html:35
|
||||
#, fuzzy
|
||||
#| msgid "Select Template"
|
||||
msgid "Select Type"
|
||||
msgstr "種類の選択"
|
||||
msgstr "テンプレートの選択"
|
||||
|
||||
#: IncBackups/templates/IncBackups/incrementalDestinations.html:47
|
||||
#: backup/templates/backup/backupDestinations.html:30
|
||||
@@ -609,27 +631,28 @@ msgstr "IP"
|
||||
#: IncBackups/templates/IncBackups/incrementalDestinations.html:117
|
||||
#: IncBackups/templates/IncBackups/incrementalDestinations.html:153
|
||||
msgid "AWS_ACCESS_KEY_ID"
|
||||
msgstr "AWS_ACCESS_KEY_ID"
|
||||
msgstr ""
|
||||
|
||||
#: IncBackups/templates/IncBackups/incrementalDestinations.html:124
|
||||
msgid "AWS_SECRET_ACCESS_KEY"
|
||||
msgstr "AWS_SECRET_ACCESS_KEY"
|
||||
msgstr ""
|
||||
|
||||
#: IncBackups/templates/IncBackups/restoreRemoteBackups.html:3
|
||||
#: IncBackups/templates/IncBackups/restoreRemoteBackups.html:13
|
||||
msgid "Restore Remote Incremental Backups"
|
||||
msgstr "リモート増分バックアップの復元"
|
||||
msgstr ""
|
||||
|
||||
#: IncBackups/templates/IncBackups/restoreRemoteBackups.html:19
|
||||
#, fuzzy
|
||||
#| msgid "This page can be used to Back up your websites"
|
||||
msgid ""
|
||||
"This page can be used to restore remote incremental backups for your "
|
||||
"websites."
|
||||
msgstr ""
|
||||
"このページを使用して、Web サイトのリモート増分バックアップを復元できます。"
|
||||
msgstr "このページは、Web サイトをバックアップするために使用することができます"
|
||||
|
||||
#: IncBackups/templates/IncBackups/restoreRemoteBackups.html:69
|
||||
msgid "Fetch Restore Points"
|
||||
msgstr "復元ポイントの取得"
|
||||
msgstr ""
|
||||
|
||||
#: IncBackups/templates/IncBackups/restoreRemoteBackups.html:99
|
||||
#: emailMarketing/templates/emailMarketing/manageSMTPHosts.html:76
|
||||
@@ -809,11 +832,11 @@ msgstr "接続を確認"
|
||||
|
||||
#: backup/templates/backup/backupSchedule.html:54
|
||||
msgid "Local Path"
|
||||
msgstr "ローカルパス"
|
||||
msgstr ""
|
||||
|
||||
#: backup/templates/backup/backupSchedule.html:57
|
||||
msgid "Local directory where backups will be moved after creation."
|
||||
msgstr "作成後にバックアップを移動するローカルディレクトリ。"
|
||||
msgstr ""
|
||||
|
||||
#: backup/templates/backup/backupSchedule.html:82
|
||||
msgid "Cannot add schedule. Error message:"
|
||||
@@ -1437,12 +1460,16 @@ msgid "Create Nameserver"
|
||||
msgstr "ネームサーバーの作成"
|
||||
|
||||
#: baseTemplate/templates/baseTemplate/index.html:489
|
||||
#, fuzzy
|
||||
#| msgid "Create Nameserver"
|
||||
msgid "Configure Default Nameservers"
|
||||
msgstr "デフォルトネームサーバーの設定"
|
||||
msgstr "ネームサーバーの作成"
|
||||
|
||||
#: baseTemplate/templates/baseTemplate/index.html:489
|
||||
#, fuzzy
|
||||
#| msgid "Create Nameserver"
|
||||
msgid "Config Default Nameservers"
|
||||
msgstr "デフォルトネームサーバーの設定"
|
||||
msgstr "ネームサーバーの作成"
|
||||
|
||||
#: baseTemplate/templates/baseTemplate/index.html:492
|
||||
#: dns/templates/dns/createDNSZone.html:12
|
||||
@@ -1579,31 +1606,43 @@ msgstr "バックアップ先の追加/削除"
|
||||
|
||||
#: baseTemplate/templates/baseTemplate/index.html:591
|
||||
msgid "Incremental Back up - Beta"
|
||||
msgstr "増分バックアップ - ベータ版"
|
||||
msgstr ""
|
||||
|
||||
#: baseTemplate/templates/baseTemplate/index.html:593
|
||||
#, fuzzy
|
||||
#| msgid "Cancel Backup"
|
||||
msgid "Incremental Back up"
|
||||
msgstr "増分バックアップ"
|
||||
msgstr "バックアップを中止"
|
||||
|
||||
#: baseTemplate/templates/baseTemplate/index.html:599
|
||||
#, fuzzy
|
||||
#| msgid "Restore Back up"
|
||||
msgid "Create/Restore Back up"
|
||||
msgstr "バックアップの作成/復元"
|
||||
msgstr "バックアップの復元"
|
||||
|
||||
#: baseTemplate/templates/baseTemplate/index.html:602
|
||||
#, fuzzy
|
||||
#| msgid "Add/Delete Destinations"
|
||||
msgid "Add/Remove Destinations"
|
||||
msgstr "宛先の追加/削除"
|
||||
|
||||
#: baseTemplate/templates/baseTemplate/index.html:605
|
||||
#, fuzzy
|
||||
#| msgid "Schedule Back up"
|
||||
msgid "Schedule Back ups"
|
||||
msgstr "バックアップスケジュール"
|
||||
|
||||
#: baseTemplate/templates/baseTemplate/index.html:608
|
||||
#, fuzzy
|
||||
#| msgid "Transfer Websites from Remote Server - CyberPanel"
|
||||
msgid "Restore from Remote Server"
|
||||
msgstr "リモート サーバーからの復元"
|
||||
msgstr "リモートサーバーからWebサイトを転送 - CyberPanel"
|
||||
|
||||
#: baseTemplate/templates/baseTemplate/index.html:608
|
||||
#, fuzzy
|
||||
#| msgid "Restore Website"
|
||||
msgid "Restore from Remote"
|
||||
msgstr "リモートから復元"
|
||||
msgstr "Web サイトの復元"
|
||||
|
||||
#: baseTemplate/templates/baseTemplate/index.html:625
|
||||
#: manageSSL/templates/manageSSL/index.html:29
|
||||
@@ -2322,12 +2361,16 @@ msgid "Record Successfully Added."
|
||||
msgstr "レコードが追加されました。"
|
||||
|
||||
#: dns/templates/dns/configureDefaultNameServers.html:3
|
||||
#, fuzzy
|
||||
#| msgid "Create Nameserver - CyberPanel"
|
||||
msgid "Configure Default Nameserver - CyberPanel"
|
||||
msgstr "デフォルトネームサーバーの設定 - CyberPanel"
|
||||
msgstr "ネームサーバーの作成 - CyberPanel"
|
||||
|
||||
#: dns/templates/dns/configureDefaultNameServers.html:12
|
||||
#, fuzzy
|
||||
#| msgid "Create Nameserver"
|
||||
msgid "Configure Default Nameserver"
|
||||
msgstr "デフォルトネームサーバーの設定"
|
||||
msgstr "ネームサーバーの作成"
|
||||
|
||||
#: dns/templates/dns/configureDefaultNameServers.html:13
|
||||
#: dns/templates/dns/createNameServer.html:13
|
||||
@@ -2351,16 +2394,22 @@ msgid "First Nameserver"
|
||||
msgstr "ファーストネームサーバー"
|
||||
|
||||
#: dns/templates/dns/configureDefaultNameServers.html:45
|
||||
#, fuzzy
|
||||
#| msgid "Second Nameserver (Back up)"
|
||||
msgid "Second Nameserver"
|
||||
msgstr "セカンドネームサーバー"
|
||||
msgstr "セカンドネームサーバー(バックアップ)"
|
||||
|
||||
#: dns/templates/dns/configureDefaultNameServers.html:52
|
||||
#, fuzzy
|
||||
#| msgid "First Nameserver"
|
||||
msgid "Third Nameserver"
|
||||
msgstr "サードネームサーバー"
|
||||
msgstr "ファーストネームサーバー"
|
||||
|
||||
#: dns/templates/dns/configureDefaultNameServers.html:59
|
||||
#, fuzzy
|
||||
#| msgid "First Nameserver"
|
||||
msgid "Forth Nameserver"
|
||||
msgstr "前のネームサーバー"
|
||||
msgstr "ファーストネームサーバー"
|
||||
|
||||
#: dns/templates/dns/configureDefaultNameServers.html:68
|
||||
#: emailMarketing/templates/emailMarketing/website.html:656
|
||||
@@ -3651,8 +3700,10 @@ msgstr "SpamAssassin 設定が保存されました。"
|
||||
#: emailPremium/templates/emailPremium/emailLimits.html:13
|
||||
#: emailPremium/templates/emailPremium/listDomains.html:14
|
||||
#: emailPremium/templates/emailPremium/policyServer.html:13
|
||||
#, fuzzy
|
||||
#| msgid "Emai Limits Docs"
|
||||
msgid "Email Limits Docs"
|
||||
msgstr "メール制限のドキュメント"
|
||||
msgstr "メールの制限ドキュメント"
|
||||
|
||||
#: emailPremium/templates/emailPremium/emailLimits.html:14
|
||||
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 "このページは、メールのメール転送を設定するのに役立ちます。"
|
||||
|
||||
#: mailServer/templates/mailServer/emailForwarding.html:61
|
||||
#, fuzzy
|
||||
#| msgid "Forwarding Docs"
|
||||
msgid "Forwarding Options"
|
||||
msgstr "転送オプション"
|
||||
msgstr "ドキュメントの転送"
|
||||
|
||||
#: mailServer/templates/mailServer/emailForwarding.html:97
|
||||
#: mailServer/templates/mailServer/emailForwarding.html:118
|
||||
@@ -4675,7 +4728,7 @@ msgstr "送信元"
|
||||
|
||||
#: mailServer/templates/mailServer/emailForwarding.html:101
|
||||
msgid "or path to the program"
|
||||
msgstr "またはプログラムへのパス"
|
||||
msgstr ""
|
||||
|
||||
#: mailServer/templates/mailServer/emailForwarding.html:106
|
||||
msgid "Forward Email"
|
||||
@@ -5313,8 +5366,10 @@ msgid "Switch to LiteSpeed Enterprise Web Server"
|
||||
msgstr "LiteSpeed Enterprise Web Server に切り替えます"
|
||||
|
||||
#: serverStatus/templates/serverStatus/litespeedStatus.html:149
|
||||
#, fuzzy
|
||||
#| msgid "LiteSpeed Processes"
|
||||
msgid "LiteSpeed Serial No. (License Key)"
|
||||
msgstr "LiteSpeed シリアル番号(ライセンスキー)"
|
||||
msgstr "LiteSpeed 操作"
|
||||
|
||||
#: serverStatus/templates/serverStatus/litespeedStatus.html:160
|
||||
msgid "Switch"
|
||||
@@ -5322,7 +5377,7 @@ msgstr "切り替え"
|
||||
|
||||
#: serverStatus/templates/serverStatus/litespeedStatus.html:162
|
||||
msgid "Get 15 Days Trial"
|
||||
msgstr "15日間のトライアルを取得する"
|
||||
msgstr ""
|
||||
|
||||
#: serverStatus/templates/serverStatus/litespeedStatus.html:175
|
||||
msgid ""
|
||||
@@ -5330,9 +5385,6 @@ msgid ""
|
||||
"CyberPanel will auto fetch 15 days trial key for you. Make sure this server "
|
||||
"have not used trial already."
|
||||
msgstr ""
|
||||
"注:15 日間のトライアルを選択した場合、シリアルキーを入力する必要はありませ"
|
||||
"ん。CyberPanel は15日間の試用版キーを自動的に取得します。 このサーバーがまだ"
|
||||
"試用版を使用していないことを確認してください。"
|
||||
|
||||
#: serverStatus/templates/serverStatus/litespeedStatus.html:193
|
||||
msgid "With great wisdom comes great responsibility."
|
||||
|
||||
@@ -1982,7 +1982,7 @@ failovermethod=priority
|
||||
Upgrade.someDirectories()
|
||||
Upgrade.installLSCPD()
|
||||
Upgrade.GeneralMigrations()
|
||||
Upgrade.p3()
|
||||
#Upgrade.p3()
|
||||
|
||||
if os.path.exists(postfixPath):
|
||||
Upgrade.upgradeDovecot()
|
||||
|
||||
@@ -11,7 +11,7 @@ cffi==1.11.5
|
||||
chardet==3.0.4
|
||||
ConfigArgParse==0.13.0
|
||||
configobj==4.7.2
|
||||
cryptography==2.2.2
|
||||
cryptography==2.8
|
||||
decorator==3.4.0
|
||||
docker==3.6.0
|
||||
docker-pycreds==0.4.0
|
||||
@@ -47,6 +47,8 @@ pyliblzma==0.5.3
|
||||
pyOpenSSL==17.5.0
|
||||
pyRFC3339==1.1
|
||||
pyserial==2.6
|
||||
paramiko==2.6.0
|
||||
SimpleWebSocketServer==0.1.1
|
||||
python-dateutil==2.7.5
|
||||
pytz==2018.4
|
||||
pyudev==0.15
|
||||
|
||||
Reference in New Issue
Block a user