refactor: legacy и apk перенесены в docs/, дедупликация исходников legacy

- docs/legacy/: рабочая раскладка изменённого форка (main.py + пакет
  aircon/); плоские дубликаты .py удалены, вложенный .git клона удалён
  (это изменённая копия, а не чистый клон), __pycache__ и .gitignore
  апстрима убраны. Локальный config_kata.json не версионируется
  (содержит lanip_key устройства).
- docs/apk/: манифест APK; бинарники *.apk и icon.png не версионируются.
- Обновлены пути в документации и tools/.
This commit is contained in:
2026-09-17 19:47:28 +03:00
parent 024b290b89
commit 790cee3c78
22 changed files with 15 additions and 15 deletions

View File

@@ -3,7 +3,7 @@
Документ реконструирован по декомпилированному APK FGLair 3.4.3 (`com.fujitsu.fglair`,
SDK `com.aylanetworks.aylasdk`, см. `AylaLanModule.java`, `AylaEncryption.java`,
`AylaLanMessage.java`, `CreateDatapointCommand.java`, `AylaHttpServer.java`,
`com.cafbit.netlib.dns.NetThread`) и сверён с существующим скриптом `legacy/`.
`com.cafbit.netlib.dns.NetThread`) и сверён с существующим скриптом `docs/legacy/`.
Всё, что помечено **[APK]**, подтверждено кодом приложения; **[LEGACY]** — известно
только из скрипта; **[ПРОВЕРЕНО НА ПРИБОРЕ]** — проверено живыми экспериментами
на AP-WC1E (сентябрь 2026, см. §10); **[HYP]** — правдоподобная гипотеза,
@@ -100,7 +100,7 @@ key = HMAC_SHA256(K, HMAC_SHA256(K, msg) || msg) # 32 байта
* **app-ключи** (приложение шифрует/подписывает, модуль проверяет) — из `msg_app`;
* **dev-ключи** (модуль шифрует, приложение проверяет) — из `msg_dev`.
Совпадает с `legacy/config.py`. **[APK: AylaEncryption.generateSessionKeys]**
Совпадает с `docs/legacy/aircon/config.py`. **[APK: AylaEncryption.generateSessionKeys]**
### 3.3. Формат защищённого сообщения (envelope)
@@ -347,7 +347,7 @@ data: {"id":"<id команды>","ack_status":200,"ack_message":0,"dsn":"..."}
* CN: `app_id=FGLairField-cn-id`, `app_secret=FGLairField-cn-zezg7Y60YpAvy3HPwxvWLnd4Oh4`
`app_secret` = `<prefix>-<base64url-nopad(секрет)>`; байты секрета — в
`legacy/app_mappings.py` (проверено: EU совпадает).
`docs/legacy/aircon/app_mappings.py` (проверено: EU совпадает).
Endpoints:
@@ -487,7 +487,7 @@ building_name, wifi_led_enable, service_contact_*, device_capabilities, refresh.
## 10. Проверено на приборе / осталось неизвестным
Проверено на AP-WC1E (fw 2.6.17-fgl2, ключ из `config_kata.json`), см. также §2,
Проверено на AP-WC1E (fw 2.6.17-fgl2, ключ из `docs/legacy/config_kata.json`), см. также §2,
§4.1, §4.4, §5.1, §5.3, §6: полный цикл сессии, KDF/CBC-цепочка/подписи в обе
стороны, GET/запись свойств, re-key, 401/400-игнорирование, 2 слота + 503,
delete_session, mDNS :10276. Рабочий эталонный клиент: `tools/probe_reference.py`.