Browse Source

:sparkles: 支持验证 SIM 卡 PIN 码, close #39

Mizore 1 year ago
parent
commit
e4b4cc5d51
3 changed files with 34 additions and 0 deletions
  1. 3 0
      script/config.lua
  2. 10 0
      script/main.lua
  3. 21 0
      script/util_mobile.lua

+ 3 - 0
script/config.lua

@@ -94,4 +94,7 @@ return {
     --
     -- 本机号码, 优先使用 mobile.number() 接口获取, 如果获取不到则使用此号码
     FALLBACK_LOCAL_NUMBER = "+8618888888888",
+    --
+    -- SIM 卡 pin 码
+    PIN_CODE = "",
 }

+ 10 - 0
script/main.lua

@@ -153,6 +153,16 @@ sys.taskInit(function()
     sys.subscribe("POWERKEY_LONG_PRESS", util_mobile.queryTraffic)
 end)
 
+sys.taskInit(function()
+    if type(config.PIN_CODE) ~= "string" or config.PIN_CODE == "" then
+        return
+    end
+    -- 开机等待 5 秒仍未联网, 再进行 pin 验证
+    if not sys.waitUntil("IP_READY", 1000 * 5) then
+        util_mobile.pinVerify(config.PIN_CODE)
+    end
+end)
+
 -- 定时开关飞行模式
 if type(config.FLYMODE_INTERVAL) == "number" and config.FLYMODE_INTERVAL >= 1000 * 60 then
     sys.timerLoopStart(function()

+ 21 - 0
script/util_mobile.lua

@@ -1,5 +1,26 @@
 local util_mobile = {}
 
+--- 验证 pin 码
+-- @param pin_code string, pin 码
+function util_mobile.pinVerify(pin_code)
+    local sim_id = mobile.simid()
+
+    pin_code = tostring(pin_code or "")
+    if #pin_code < 4 or #pin_code > 8 then
+        log.warn("util_mobile.pinVerify", "pin 码长度不正确")
+        return
+    end
+
+    local cpin_is_ready = mobile.simPin(sim_id)
+    if cpin_is_ready then
+        log.info("util_mobile.pinVerify", "无需验证 pin 码")
+        return
+    end
+
+    cpin_is_ready = mobile.simPin(sim_id, mobile.PIN_VERIFY, pin_code)
+    log.info("util_mobile.pinVerify", "验证 pin 码" .. (cpin_is_ready and "成功" or "失败"))
+end
+
 -- 运营商数据
 local oper_data = {
     -- 中国移动