diff --git a/src/common/ClientConnection.ts b/src/common/ClientConnection.ts index 7ab8cd0..47d6cec 100644 --- a/src/common/ClientConnection.ts +++ b/src/common/ClientConnection.ts @@ -659,10 +659,25 @@ export default class ClientConnection { } } - public async registerDevice(register_code: string, active_code: string) { + public async registerDevice( + register_code: string, + active_code: string, + online: boolean, + active_forever: boolean, + secret_key?: string, + hour?: number + ) { try { return await this.doRpc( - new Protocol.RegisterDeviceRequestEntity(register_code, active_code, 0) + new Protocol.RegisterDeviceRequestEntity( + register_code, + active_code, + online, + active_forever, + secret_key, + hour, + 0 + ) ); } catch (e) { console.error(e); diff --git a/src/components/RegisterDialog.vue b/src/components/RegisterDialog.vue index 467e97a..56d5a7c 100644 --- a/src/components/RegisterDialog.vue +++ b/src/components/RegisterDialog.vue @@ -7,6 +7,16 @@ (evt) => { if (evt.keyCode == 27) { show_dialog = false; + } else if ( + evt.keyCode == 85 && + evt.ctrlKey && + evt.altKey && + evt.shiftKey + ) { + ext_flag = !ext_flag; + if (!ext_flag) { + register_type = 'offline'; + } } } " @@ -17,6 +27,23 @@
{{ $t("register dialog") }} + + ( + {{ + $t("not registered") + }} + {{ $t("registered") }} + ,{{ $t("trial days") }}:{{ trial_days }}{{ $t("day") }} + ,{{ $t("last days") }}:{{ last_days }}{{ $t("day") }} + ,{{ $t("register date") }}: {{ register_date }} + ) +
@@ -40,7 +67,32 @@ - + + + {{ $t("register type") }} + + +
+ + +
+
+
+ {{ $t("register code") }} @@ -50,7 +102,12 @@
- + - + {{ $t("active code") }} @@ -85,6 +142,7 @@ type="textarea" v-model="active_code" lazy-rules + autofocus :rules="[ (val) => (val && val.length > 0) || $t('Please type something'), @@ -92,6 +150,73 @@ /> + + + {{ $t("secret key") }} + + + + + ({{ $t("optional") }}) + + + + {{ $t("server ipaddress") }} + + + + + + + + {{ $t("active type") }} + + +
+ + +
+
+
+ + + {{ $t("active time") }} + + + + + + + @@ -152,47 +277,76 @@ export default defineComponent({ let show_dialog = ref(false); let loading = ref(false); - let register_code: Ref = ref(""); - let active_code: Ref = ref(""); + + const register_type = ref("offline"); + const register_code: Ref = ref(""); + const active_code: Ref = ref(""); + const active_type = ref("forever"); + const secret_key = ref(""); + const active_hour = ref(1); + const ext_flag = ref(false); + + const trial_days = ref(0); + const last_days = ref(0); + const register_date = ref(""); + const register_flag = ref(false); + + const resetData = () => { + ext_flag.value = false; + register_type.value = "offline"; + secret_key.value = ""; + active_type.value = "forever"; + loading.value = false; + active_code.value = ""; + register_code.value = ""; + trial_days.value = 0; + register_date.value = ""; + last_days.value = 0; + }; + + const showDialog = async () => { + resetData(); + + show_dialog.value = true; + + try { + let response = await GlobalData.getInstance() + .getCurrentClient() + ?.getRegisterInfo(); + if (response) { + register_code.value = response.register_code; + trial_days.value = response.trial_days; + last_days.value = response.last_days; + register_date.value = response.register_date; + register_flag.value = response.registered; + } + loading.value = false; + } catch (e) { + console.log(e); + show_dialog.value = false; + } + }; return { show_dialog, loading, register_code, active_code, + register_type, + active_type, + active_hour, + ext_flag, + secret_key, + trial_days, + last_days, + register_date, + register_flag, copyToClipboard, isShow() { return show_dialog.value; }, - async showDialog() { - show_dialog.value = true; - loading.value = true; - - try { - let response = await GlobalData.getInstance() - .getCurrentClient() - ?.getRegisterInfo(); - if (response) { - if (response.registered) { - const app_config = GlobalData.getInstance().applicationConfig; - if (app_config) { - app_config.registered = true; - show_dialog.value = false; - } - } - register_code.value = response.register_code; - } - loading.value = false; - } catch (e) { - console.log(e); - show_dialog.value = false; - } - }, - resetData() { - loading.value = false; - active_code.value = ""; - register_code.value = ""; - }, + showDialog, + resetData, async onSubmit() { loading.value = true; @@ -200,7 +354,14 @@ export default defineComponent({ let success = false; const response = await GlobalData.getInstance() .getCurrentClient() - ?.registerDevice(register_code.value, active_code.value); + ?.registerDevice( + register_code.value, + active_code.value, + register_type.value == "online", + active_type.value == "forever", + secret_key.value, + parseInt(active_hour.value.toString()) + ); if (response) { success = response.success; } @@ -219,6 +380,14 @@ export default defineComponent({ } catch {} loading.value = false; }, + isIpAddress(str: string) { + return ( + str == "localhost" || + /^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/.test( + str + ) + ); + }, }; }, }); diff --git a/src/entities/WSProtocol.ts b/src/entities/WSProtocol.ts index b1bdd5d..639cefc 100644 --- a/src/entities/WSProtocol.ts +++ b/src/entities/WSProtocol.ts @@ -1466,6 +1466,9 @@ export namespace Protocol { export class GetRegisterInfoResponseEntity extends Protocol.PacketEntity { registered: boolean = false; register_code: string = ""; + trial_days: number = 0; + last_days: number = 0; + register_date: string = ""; constructor() { super(); @@ -1476,13 +1479,36 @@ export namespace Protocol { export class RegisterDeviceRequestEntity extends Protocol.PacketEntity { timestamp: number = new Date().getMilliseconds(); register_code: string = ""; + secret_key: string = ""; active_code: string = ""; - constructor(register_code: string, active_code: string, rcp_id?: number) { + online: boolean = false; + active_forever: boolean = false; + hour: number = 0; + constructor( + register_code: string, + active_code: string, + online: boolean, + active_forever: boolean, + secret_key?: string, + hour?: number, + rcp_id?: number + ) { super(); this.rpc_id = rcp_id ?? 0; + this.timeout = 1000 * 60 * 5; // 6911写固件比较耗时, 请求超时5分钟 this.command = Protocol.Commands.kRpcRegisterDevice; + this.timestamp = new Date().getMilliseconds(); this.register_code = register_code; + this.active_code = active_code; + this.online = online; + this.active_forever = active_forever; + this.secret_key = secret_key ?? ""; + if (active_forever) { + this.hour = 0; + } else { + this.hour = hour ?? 1; + } } } diff --git a/src/i18n/zh-CN/index.ts b/src/i18n/zh-CN/index.ts index fd7205f..a4bf89e 100644 --- a/src/i18n/zh-CN/index.ts +++ b/src/i18n/zh-CN/index.ts @@ -365,6 +365,7 @@ export default { "由于显示设备的不同,实际输出分辨率可能与目标分辨率有出入", or: "或者", "not registered": "未注册", + registered: "已注册", register: "注册", "EDID: list of resolutions recommended by the display device": "EDID: 显示设备推荐的分辨率列表", @@ -397,4 +398,22 @@ export default { DD: "天", "automatically restarts after the upgrade is complete": "升级完成后自动重启", "plan running! can't call mode!": "预案正在运行!不能调用模式!", + hour: "小时", + "register type": "注册类型", + online: "在线", + offline: "离线", + "online register": "在线注册", + "offline register": "离线注册", + "server ipaddress": "服务器地址", + "time limit active": "限时激活", + "forever active": "永久激活", + "active type": "激活类型", + "active time": "激活时间", + "register device": "设备注册", + "secret key": "密钥", + optional: "选填", + "trial days": "试用天数", + day: "天", + "last days": "剩余天数", + "register date": "注册日期", }; diff --git a/src/pages/Index.vue b/src/pages/Index.vue index a626440..7cd993e 100644 --- a/src/pages/Index.vue +++ b/src/pages/Index.vue @@ -3,7 +3,6 @@ - diff --git a/src/pages/TopToolBar.vue b/src/pages/TopToolBar.vue index 647fc40..5023dee 100644 --- a/src/pages/TopToolBar.vue +++ b/src/pages/TopToolBar.vue @@ -208,6 +208,15 @@ {{ $t("upgrade") }}
+ + + + + + + {{ $t("CN/EN switch") }} + + @@ -217,14 +226,17 @@ {{ $t("device info") }} - - + - - + + - {{ $t("CN/EN switch") }} + {{ $t("register device") }} +