Skip to content

Commit

Permalink
v0.8.14
Browse files Browse the repository at this point in the history
  • Loading branch information
Peter Xie authored and Peter Xie committed Oct 18, 2017
1 parent 5eb1e0e commit 517f2dd
Show file tree
Hide file tree
Showing 12 changed files with 193 additions and 151 deletions.
20 changes: 19 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,4 +34,22 @@ This bate version only support http & https proxy

Copyright (c) QTGate Systems Inc. All rights reserved.

Licensed under the [MIT](LICENSE) License.
Licensed under the [MIT](LICENSE) License.

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
3 changes: 1 addition & 2 deletions app/imap.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ const crypto = require("crypto");
const path_1 = require("path");
const os_1 = require("os");
const MAX_INT = 9007199254740992;
const debug = false;
const debug = true;
const QTGateFolder = path_1.join(os_1.homedir(), '.QTGate');
const ErrorLogFile = path_1.join(QTGateFolder, 'imap.log');
let flag = 'w';
Expand Down Expand Up @@ -1065,7 +1065,6 @@ class imapPeer extends Event.EventEmitter {
this.rImap.destroyAll(null);
});
this.rImap.once('end', err => {
saveLog(`this.rImap.once end ! [${err.message}]`);
this.rImap = null;
if (!this.doingDestroy)
return this.newReadImap();
Expand Down
12 changes: 6 additions & 6 deletions app/imap.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ import { join } from 'path'
import { homedir }from 'os'

const MAX_INT = 9007199254740992
const debug = false
const debug = true
const QTGateFolder = join ( homedir(), '.QTGate' )
const ErrorLogFile = join ( QTGateFolder, 'imap.log' )
let flag = 'w'
Expand Down Expand Up @@ -1072,10 +1072,10 @@ export class imapPeer extends Event.EventEmitter {
private mail ( email: Buffer ) {

const attr = getMailAttached ( email ).toString ()

this.deCrypto ( attr, ( err, data ) => {
if ( err )
return saveLog ( `deCrypto GOT ERROR! [${ err.message }]` )

try {
const uu = JSON.parse ( data )

Expand Down Expand Up @@ -1109,9 +1109,9 @@ export class imapPeer extends Event.EventEmitter {

}

private sendToRemote(text: Buffer, CallBack) {
private sendToRemote ( text: Buffer, CallBack) {
if ( this.wImap )
return this.wImap.append(text.toString('base64'), CallBack)
return this.wImap.append ( text.toString ( 'base64' ), CallBack )
}

private replyPing (uu) {
Expand All @@ -1125,7 +1125,7 @@ export class imapPeer extends Event.EventEmitter {
saveLog ( 'doing ping!' )
if ( !this.wImapReady || this.pingUuid !== null )
return saveLog ( `Ping do nothing : this.wImapReady [${ this.wImapReady }] || this.pingUuid [${ this.pingUuid }]`)
this.pingUuid = Uuid.v4()
this.pingUuid = Uuid.v4 ()
return this.enCrypto ( JSON.stringify ({ ping: this.pingUuid }), ( err, data ) => {
if ( err )
return saveLog ( `Ping enCrypto error! [${ err.message }]`)
Expand Down Expand Up @@ -1206,7 +1206,7 @@ export class imapPeer extends Event.EventEmitter {

})
this.rImap.once ( 'end', err => {
saveLog ( `this.rImap.once end ! [${ err.message }]` )

this.rImap = null
if ( !this.doingDestroy )
return this.newReadImap ()
Expand Down
52 changes: 33 additions & 19 deletions app/public/scripts/home.js
Original file line number Diff line number Diff line change
Expand Up @@ -516,7 +516,7 @@ const infoDefine = [
KeypairLength: '请选择加密通讯用密钥对长度:这个数字越大,通讯越难被破解,但会增加通讯量和运算时间。',
GenerateKeypair: '<em>系统正在生成用于通讯和签名的RSA加密密钥对,计算机需要运行产生大量的随机数字有,可能需要几分钟时间,尤其是长度为4096的密钥对,需要特别长的时间,请耐心等待。关于RSA加密算法的机制和原理,您可以访问维基百科:' +
`<a href='https://zh.wikipedia.org/wiki/RSA加密演算法' target="_blank" onclick="return linkClick ('https://zh.wikipedia.org/wiki/RSA加密演算法')" >https://zh.wikipedia.org/wiki/RSA加密演算法</a></em>`,
inputEmail: '让我们来完成设定的最后几个步骤,首先生成RSA密钥对, 它是您的系统信息加密,身份认证及和QTGate通讯使用的重要工具。 RSA密钥对的密码请妥善保存,Email地址栏应填入您的常用Email地址, 它将被用作您的QTGate账号。<em style="color:red;">需注意的是QTGate.com域名在某些网络限制地区被列入屏蔽名单,如果您使用的是网络限制地区email服务,您将不能够完成设定QTGate设定。</em>',
inputEmail: '让我们来完成设定的最后几个步骤,首先生成RSA密钥对, 它是您的系统信息加密,身份认证及和QTGate通讯使用的重要工具。 RSA密钥对的密码请妥善保存,Email地址栏应填入您的常用Email地址, 它将被用作您的QTGate账号。<em style="color:red;">需注意的是QTGate.com域名在某些网络限制地区被列入屏蔽名单,如果您使用的是网络限制地区email服务,您有可能接收不到由QTGate发回的账号确认Email,以完成QTGate设定。</em>',
accountEmailInfo: '由于QTGate域名在某些国家和地区被防火墙屏蔽,而不能正常收发Email,如果您是处于防火墙内的用户,建议使用防火墙外部的邮件服务商。'
},
Home_keyPairInfo_view: {
Expand Down Expand Up @@ -609,7 +609,7 @@ const infoDefine = [
'通过设置PATH链接路径可以简单给您的Proxy服务器增加安全性,拒绝没有提供PATH的访问者使用您的Proxy服务器。']
},
useInfoMacOS: {
title: '您的其他电子设备,可通过设置本地Proxy服务器,来使用QTGate连接互联网',
title: '<p>本地代理服务器已在后台运行,MacOS和Windows用户可以关闭本窗口。</p>您的其他电子设备,可通过设置本地Proxy伺服器,来使用QTGate连接到互联网',
title1: 'MacOS 本地代理服务器设定',
proxyServerIp: '本地代理服务器地址:',
proxyServerPort: '本地代理服务器端口:',
Expand Down Expand Up @@ -828,7 +828,7 @@ const infoDefine = [
}]
},
useInfoMacOS: {
title: '他のデバイスはローカルプロキシに設定による、QTGate利用してインターネットへアクセスができます。',
title: 'ローカルプロキシサーバはバックグランドで実行しています。MacoSとWindowsユーザーはこのウィンドウを閉じても構わないです。他のデバイスはローカルプロキシに設定による、QTGate利用してインターネットへアクセスができます。',
title1: 'MacOS プロキシ設定',
proxyServerIp: 'プロキシサーバアドレス:',
proxyServerPort: 'サーバポート:',
Expand Down Expand Up @@ -1079,7 +1079,7 @@ const infoDefine = [
systemAdministratorEmail: 'RSA暗号鍵ペア生成',
GenerateKeypair: '<em>強秘匿性通信するのために、RSA暗号鍵ペアを生成中、大量なランダム数字が発生し、数分かかる場合もあります、4096ビットの場合、特に時間がかかります、しばらくお待ち下さい。RSA暗号技術について、ウィキペディア百科辞典を参考してください:' +
`<a href='https://ja.wikipedia.org/wiki/RSA暗号' target="_blank" onclick="return linkClick ('https://ja.wikipedia.org/wiki/RSA暗号')">https://ja.wikipedia.org/wiki/RSA暗号</a></em>`,
inputEmail: 'お疲れ様です、最後の設定をしましょう。このRSA暗号鍵ペアは本システムに重要な存在です、ユーザーのQTGateへ身元証明、本システムデータを秘密化、QTGateシステムとデータ通信時この暗号鍵ペアを使います。パースワードはQTGateへ保存しませんですから、大事にメモしてください。<em style="color:red;">QTGateはネットワークの制限があるエリアにブラックリスト入っております、そのエリアにあるemailアカウントを使うのは遠慮してください。</em>',
inputEmail: 'お疲れ様です、最後の設定をしましょう。このRSA暗号鍵ペアは本システムに重要な存在です、ユーザーのQTGateへ身元証明、本システムデータを秘密化、QTGateシステムとデータ通信時この暗号鍵ペアを使います。パースワードはQTGateへ保存しませんですから、大事にメモしてください。<em style="color:red;">QTGateはネットワークの制限があるエリアにブラックリスト入っております、あなたはQTGateからのemailは受信不能になりますから、QTGateユーザへ登録完了することができない恐れがございます。</em>',
accountEmailInfo: 'QTGateドメイン名は、ファイヤウォールがある場合はブラックリストに入っている可能性がありますから、QTGateシステムへ登録完了することができません。その場合はファイヤウォール外側のEmailシステムを利用してください。'
},
error_message: {
Expand Down Expand Up @@ -1326,7 +1326,7 @@ const infoDefine = [
proxyServerIp: 'Proxy server address:',
proxyServerPort: 'Server port:',
proxyServerPassword: 'Proxy server login username and password: none',
title: 'All other devices can doing internet via local proxy setup use the QTGate system.',
title: 'Local proxy server is running at background. MacOS and windows user may close this window. All other devices can doing internet via local proxy setup use the QTGate system.',
title1: 'MacOS proxy setup',
info: [{
title: 'Open the control panel, click the network.',
Expand Down Expand Up @@ -1690,7 +1690,7 @@ const infoDefine = [
}]
},
useInfoMacOS: {
title: '您的其他電子設備,可通過設置本地Proxy伺服器,來使用QTGate連接到互聯網',
title: '本地代理伺服器已在後台運行,MacOS和Windows用戶可以關閉本窗口。您的其他電子設備,可通過設置本地Proxy伺服器,來使用QTGate連接到互聯網',
title1: 'MacOS 本地代理伺服器設定',
proxyServerIp: '本地代理伺服器地址:',
proxyServerPort: '本地代理伺服器端口:',
Expand Down Expand Up @@ -1886,7 +1886,7 @@ const infoDefine = [
systemAdministratorEmail: 'RSA密鑰生成',
GenerateKeypair: '<em>系統正在生成用於通訊和簽名的RSA加密密鑰對,計算機需要運行產生大量的隨機數字,可能需要幾分鐘時間,尤其是長度為4096的密鑰對,需要特別長的時間,請耐心等待。關於RSA加密算法的機制和原理,您可以訪問維基百科:' +
`<a href='#' target="_blank" onclick="return linkClick ('https://zh.wikipedia.org/wiki/RSA加密演算法')">https://zh.wikipedia.org/wiki/RSA加密演算法</a></em>`,
inputEmail: '让我们来完成设定的最后几个步骤,首先生成RSA密鑰對, 它是您的系統信息加密,身份認證及和QTGate通訊使用的重要工具。 RSA密鑰對的密碼請妥善保存,Email地址欄應填入您的常用Email地址, 它將被用作您的QTGate賬號。<em style="color:red;">需注意的是QTGate.com域名在某些网络限制地区被列入屏蔽名单,如果您使用的是网络限制地区email服务,您将不能够完成设定QTGate设定。</em>',
inputEmail: '让我们来完成设定的最后几个步骤,首先生成RSA密鑰對, 它是您的系統信息加密,身份認證及和QTGate通訊使用的重要工具。 RSA密鑰對的密碼請妥善保存,Email地址欄應填入您的常用Email地址, 它將被用作您的QTGate賬號。<em style="color:red;">需注意的是QTGate.com域名在某些网络限制地区被列入屏蔽名单,如果您使用的是网络限制地区email服务,您將有可能接收不到由QTGate發回的賬號確認Email,以完成QTGate設定。</em>',
accountEmailInfo: `由於QTGate域名在某些國家和地區被防火牆屏蔽,而不能正常收發QTGate的Email,如果您是處於防火牆內的用戶,建議使用防火牆外部的郵件服務商。`
},
error_message: {
Expand Down Expand Up @@ -2874,18 +2874,16 @@ var view_layout;
return this.MakeErrorNotify('errorKeyPair', null);
}
this.keyPair(data);
if (!this.emailPool() || !this.emailPool().length) {
this.showAddImapDataButton(false);
this.passwordError(false);
this.SystemPassword_submitRunning(false);
this.keyPair_delete_btn_view(false);
this.newKeyPairRunningCancelButtonShow(false);
this.showKeyPairPorcess(false);
this.showKeyPairInformation(true);
this.emailPool([new emailPoolData(this)]);
this.imapInputFormActive(true);
return this.MenuItems([false, false, true, false, false]);
}
this.showAddImapDataButton(false);
this.passwordError(false);
this.SystemPassword_submitRunning(false);
this.keyPair_delete_btn_view(false);
this.newKeyPairRunningCancelButtonShow(false);
this.showKeyPairPorcess(false);
this.showKeyPairInformation(true);
this.emailPool([new emailPoolData(this)]);
this.imapInputFormActive(true);
return this.MenuItems([false, false, true, false, false]);
});
socketIo.on('ImapData', (data) => {
this.imapInputFormActive(true);
Expand Down Expand Up @@ -3543,6 +3541,22 @@ var view_layout;
this.ConnectGatewayShow(false);
this.selectedQTGateRegionCancel();
this.disconnecting(false);
socketIo.emit('getAvaliableRegion', (region) => {
this.QTGateRegions().forEach(n => {
const index = region.findIndex(nn => { return nn === n.qtRegion; });
if (index < 0)
return n.available(false);
return n.available(true);
});
this.QTGateRegions.sort((a, b) => {
if (a.available() === b.available())
return 0;
if (b.available() && !a.available()) {
return 1;
}
return -1;
});
});
});
}
exit() {
Expand Down
Loading

0 comments on commit 517f2dd

Please sign in to comment.