diff --git a/WebTerminal/CPWebSocket.py b/WebTerminal/CPWebSocket.py index 24357f206..3c278c9e3 100644 --- a/WebTerminal/CPWebSocket.py +++ b/WebTerminal/CPWebSocket.py @@ -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: - 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') + def recvData(self): + while True: 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)) - try: - data = json.loads(message) - if str(message).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): - 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() - except: - print(webshell.verifyPath) - os.remove(webshell.verifyPath) + self.recvData() + except BaseException, msg: + print(str(msg)) -def main(): - pidfile = '/usr/local/CyberCP/WebTerminal/pid' +class WebTerminalServer(WebSocket): - 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() + def handleMessage(self): + try: + 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 + def handleConnected(self): + self.sh = SSHServer(self) + self.shell = self.sh.shell + self.sh.start() + def handleClose(self): + try: + os.remove(self.verifyPath) + except: + pass if __name__ == "__main__": - main() \ No newline at end of file + pidfile = '/usr/local/CyberCP/WebTerminal/pid' + + writeToFile = open(pidfile, 'w') + writeToFile.write(str(os.getpid())) + writeToFile.close() + + 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() + + signal.signal(signal.SIGINT, close_sig_handler) + server.serveforever() \ No newline at end of file diff --git a/WebTerminal/cpssh.service b/WebTerminal/cpssh.service index 5f99bca49..d3e3a064b 100644 --- a/WebTerminal/cpssh.service +++ b/WebTerminal/cpssh.service @@ -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] diff --git a/WebTerminal/servCTRL.py b/WebTerminal/servCTRL.py index 5c65be9ec..66cf9ad56 100644 --- a/WebTerminal/servCTRL.py +++ b/WebTerminal/servCTRL.py @@ -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): diff --git a/install/install.py b/install/install.py index 8310b0524..bb85fbdb0 100755 --- a/install/install.py +++ b/install/install.py @@ -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() diff --git a/locale/ja/LC_MESSAGES/django.mo b/locale/ja/LC_MESSAGES/django.mo index bbc073fa2..bf3e62716 100755 Binary files a/locale/ja/LC_MESSAGES/django.mo and b/locale/ja/LC_MESSAGES/django.mo differ diff --git a/locale/ja/LC_MESSAGES/django.po b/locale/ja/LC_MESSAGES/django.po index c7354e3eb..9255ac607 100755 --- a/locale/ja/LC_MESSAGES/django.po +++ b/locale/ja/LC_MESSAGES/django.po @@ -3,12 +3,20 @@ # This file is distributed under the same license as the CyberPanel package. # FIRST AUTHOR , 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 \n" "Language-Team: LANGUAGE \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サイトを転送 - Cyber​​Panel" #: 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 "デフォルトネームサーバーの設定 - Cyber​​Panel" +msgstr "ネームサーバーの作成 - Cyber​​Panel" #: 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." diff --git a/plogical/upgrade.py b/plogical/upgrade.py index 0d0f67a6f..f5773ce7f 100755 --- a/plogical/upgrade.py +++ b/plogical/upgrade.py @@ -1982,7 +1982,7 @@ failovermethod=priority Upgrade.someDirectories() Upgrade.installLSCPD() Upgrade.GeneralMigrations() - Upgrade.p3() + #Upgrade.p3() if os.path.exists(postfixPath): Upgrade.upgradeDovecot() diff --git a/requirments.txt b/requirments.txt index aff43c221..80894317e 100755 --- a/requirments.txt +++ b/requirments.txt @@ -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