add indonesia language

- add in.lang
- regen code and archive from script utils
This commit is contained in:
Kry9toN 2020-11-02 15:21:23 +07:00
parent e3c706e9a4
commit 3e160481ed
No known key found for this signature in database
GPG Key ID: 2CC3177D9F98A58D
40 changed files with 242 additions and 121 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

View File

@ -229,94 +229,127 @@ void startAP(String path, String ssid, String password, uint8_t ch, bool hidden,
// ================================================================
// post here the output of the webConverter.py
#ifdef USE_PROGMEM_WEB_FILES
if (!settings.getWebSettings().use_spiffs) {
server.on(String(SLASH).c_str(), HTTP_GET, [] () {
sendProgmem(indexhtml, sizeof(indexhtml), W_HTML);
});
server.on(String(F("/attack.html")).c_str(), HTTP_GET, [] () {
sendProgmem(attackhtml, sizeof(attackhtml), W_HTML);
});
server.on(String(F("/index.html")).c_str(), HTTP_GET, [] () {
sendProgmem(indexhtml, sizeof(indexhtml), W_HTML);
});
server.on(String(F("/info.html")).c_str(), HTTP_GET, [] () {
sendProgmem(infohtml, sizeof(infohtml), W_HTML);
});
server.on(String(F("/scan.html")).c_str(), HTTP_GET, [] () {
sendProgmem(scanhtml, sizeof(scanhtml), W_HTML);
});
server.on(String(F("/settings.html")).c_str(), HTTP_GET, [] () {
sendProgmem(settingshtml, sizeof(settingshtml), W_HTML);
});
server.on(String(F("/ssids.html")).c_str(), HTTP_GET, [] () {
sendProgmem(ssidshtml, sizeof(ssidshtml), W_HTML);
});
server.on(String(F("/style.css")).c_str(), HTTP_GET, [] () {
sendProgmem(stylecss, sizeof(stylecss), W_CSS);
});
server.on(String(F("/js/attack.js")).c_str(), HTTP_GET, [] () {
sendProgmem(attackjs, sizeof(attackjs), W_JS);
});
server.on(String(F("/js/scan.js")).c_str(), HTTP_GET, [] () {
sendProgmem(scanjs, sizeof(scanjs), W_JS);
});
server.on(String(F("/js/settings.js")).c_str(), HTTP_GET, [] () {
sendProgmem(settingsjs, sizeof(settingsjs), W_JS);
});
server.on(String(F("/js/site.js")).c_str(), HTTP_GET, [] () {
sendProgmem(sitejs, sizeof(sitejs), W_JS);
});
server.on(String(F("/js/ssids.js")).c_str(), HTTP_GET, [] () {
sendProgmem(ssidsjs, sizeof(ssidsjs), W_JS);
});
server.on(String(F("/lang/cn.lang")).c_str(), HTTP_GET, [] () {
sendProgmem(cnlang, sizeof(cnlang), W_JSON);
});
server.on(String(F("/lang/cs.lang")).c_str(), HTTP_GET, [] () {
sendProgmem(cslang, sizeof(cslang), W_JSON);
});
server.on(String(F("/lang/de.lang")).c_str(), HTTP_GET, [] () {
sendProgmem(delang, sizeof(delang), W_JSON);
});
server.on(String(F("/lang/en.lang")).c_str(), HTTP_GET, [] () {
sendProgmem(enlang, sizeof(enlang), W_JSON);
});
server.on(String(F("/lang/es.lang")).c_str(), HTTP_GET, [] () {
sendProgmem(eslang, sizeof(eslang), W_JSON);
});
server.on(String(F("/lang/fi.lang")).c_str(), HTTP_GET, [] () {
sendProgmem(filang, sizeof(filang), W_JSON);
});
server.on(String(F("/lang/fr.lang")).c_str(), HTTP_GET, [] () {
sendProgmem(frlang, sizeof(frlang), W_JSON);
});
server.on(String(F("/lang/it.lang")).c_str(), HTTP_GET, [] () {
sendProgmem(itlang, sizeof(itlang), W_JSON);
});
server.on(String(F("/lang/ru.lang")).c_str(), HTTP_GET, [] () {
sendProgmem(rulang, sizeof(rulang), W_JSON);
});
server.on(String(F("/lang/tlh.lang")).c_str(), HTTP_GET, [] () {
sendProgmem(tlhlang, sizeof(tlhlang), W_JSON);
});
}
server.on(str(W_DEFAULT_LANG).c_str(), HTTP_GET, [] () {
if (!settings.getWebSettings().use_spiffs) {
if (String(settings.getWebSettings().lang) == String(F("cn"))) sendProgmem(cnlang, sizeof(cnlang), W_JSON);
else if (String(settings.getWebSettings().lang) == String(F("cs"))) sendProgmem(cslang, sizeof(cslang), W_JSON);
else if (String(settings.getWebSettings().lang) == String(F("de"))) sendProgmem(delang, sizeof(delang), W_JSON);
else if (String(settings.getWebSettings().lang) == String(F("en"))) sendProgmem(enlang, sizeof(enlang), W_JSON);
else if (String(settings.getWebSettings().lang) == String(F("es"))) sendProgmem(eslang, sizeof(eslang), W_JSON);
else if (String(settings.getWebSettings().lang) == String(F("fi"))) sendProgmem(filang, sizeof(filang), W_JSON);
else if (String(settings.getWebSettings().lang) == String(F("fr"))) sendProgmem(frlang, sizeof(frlang), W_JSON);
else if (String(settings.getWebSettings().lang) == String(F("it"))) sendProgmem(itlang, sizeof(itlang), W_JSON);
else if (String(settings.getWebSettings().lang) == String(F("ru"))) sendProgmem(rulang, sizeof(rulang), W_JSON);
else if (String(settings.getWebSettings().lang) == String(F("tlh"))) sendProgmem(tlhlang, sizeof(tlhlang), W_JSON);
if(!settings.getWebSpiffs()){
server.on(String(SLASH).c_str(), HTTP_GET, [](){
sendProgmem(indexhtml, sizeof(indexhtml), W_HTML);
});
server.on(String(F("/attack.html")).c_str(), HTTP_GET, [](){
sendProgmem(attackhtml, sizeof(attackhtml), W_HTML);
});
server.on(String(F("/ssids.html")).c_str(), HTTP_GET, [](){
sendProgmem(ssidshtml, sizeof(ssidshtml), W_HTML);
});
server.on(String(F("/index.html")).c_str(), HTTP_GET, [](){
sendProgmem(indexhtml, sizeof(indexhtml), W_HTML);
});
server.on(String(F("/scan.html")).c_str(), HTTP_GET, [](){
sendProgmem(scanhtml, sizeof(scanhtml), W_HTML);
});
server.on(String(F("/settings.html")).c_str(), HTTP_GET, [](){
sendProgmem(settingshtml, sizeof(settingshtml), W_HTML);
});
server.on(String(F("/info.html")).c_str(), HTTP_GET, [](){
sendProgmem(infohtml, sizeof(infohtml), W_HTML);
});
server.on(String(F("/style.css")).c_str(), HTTP_GET, [](){
sendProgmem(stylecss, sizeof(stylecss), W_CSS);
});
server.on(String(F("/js/scan.js")).c_str(), HTTP_GET, [](){
sendProgmem(scanjs, sizeof(scanjs), W_JS);
});
server.on(String(F("/js/ssids.js")).c_str(), HTTP_GET, [](){
sendProgmem(ssidsjs, sizeof(ssidsjs), W_JS);
});
server.on(String(F("/js/settings.js")).c_str(), HTTP_GET, [](){
sendProgmem(settingsjs, sizeof(settingsjs), W_JS);
});
server.on(String(F("/js/site.js")).c_str(), HTTP_GET, [](){
sendProgmem(sitejs, sizeof(sitejs), W_JS);
});
server.on(String(F("/js/attack.js")).c_str(), HTTP_GET, [](){
sendProgmem(attackjs, sizeof(attackjs), W_JS);
});
server.on(String(F("/lang/cs.lang")).c_str(), HTTP_GET, [](){
sendProgmem(cslang, sizeof(cslang), W_JSON);
});
server.on(String(F("/lang/fi.lang")).c_str(), HTTP_GET, [](){
sendProgmem(filang, sizeof(filang), W_JSON);
});
server.on(String(F("/lang/pt-br.lang")).c_str(), HTTP_GET, [](){
sendProgmem(pt-brlang, sizeof(pt-brlang), W_JSON);
});
server.on(String(F("/lang/tlh.lang")).c_str(), HTTP_GET, [](){
sendProgmem(tlhlang, sizeof(tlhlang), W_JSON);
});
server.on(String(F("/lang/ro.lang")).c_str(), HTTP_GET, [](){
sendProgmem(rolang, sizeof(rolang), W_JSON);
});
server.on(String(F("/lang/nl.lang")).c_str(), HTTP_GET, [](){
sendProgmem(nllang, sizeof(nllang), W_JSON);
});
server.on(String(F("/lang/en.lang")).c_str(), HTTP_GET, [](){
sendProgmem(enlang, sizeof(enlang), W_JSON);
});
server.on(String(F("/lang/es.lang")).c_str(), HTTP_GET, [](){
sendProgmem(eslang, sizeof(eslang), W_JSON);
});
server.on(String(F("/lang/it.lang")).c_str(), HTTP_GET, [](){
sendProgmem(itlang, sizeof(itlang), W_JSON);
});
server.on(String(F("/lang/cn.lang")).c_str(), HTTP_GET, [](){
sendProgmem(cnlang, sizeof(cnlang), W_JSON);
});
server.on(String(F("/lang/de.lang")).c_str(), HTTP_GET, [](){
sendProgmem(delang, sizeof(delang), W_JSON);
});
server.on(String(F("/lang/in.lang")).c_str(), HTTP_GET, [](){
sendProgmem(inlang, sizeof(inlang), W_JSON);
});
server.on(String(F("/lang/ru.lang")).c_str(), HTTP_GET, [](){
sendProgmem(rulang, sizeof(rulang), W_JSON);
});
server.on(String(F("/lang/ja.lang")).c_str(), HTTP_GET, [](){
sendProgmem(jalang, sizeof(jalang), W_JSON);
});
server.on(String(F("/lang/fr.lang")).c_str(), HTTP_GET, [](){
sendProgmem(frlang, sizeof(frlang), W_JSON);
});
server.on(String(F("/lang/hu.lang")).c_str(), HTTP_GET, [](){
sendProgmem(hulang, sizeof(hulang), W_JSON);
});
server.on(String(F("/lang/th.lang")).c_str(), HTTP_GET, [](){
sendProgmem(thlang, sizeof(thlang), W_JSON);
});
server.on(String(F("/lang/da.lang")).c_str(), HTTP_GET, [](){
sendProgmem(dalang, sizeof(dalang), W_JSON);
});
else handleFileRead(String(F("/web/lang/")) + String(settings.getWebSettings().lang) + String(F(".lang")));
} else {
handleFileRead(String(F("/web/lang/")) + String(settings.getWebSettings().lang) + String(F(".lang")));
}
}
server.on(str(W_DEFAULT_LANG).c_str(), HTTP_GET, [](){
if(!settings.getWebSpiffs()){
if(settings.getLang() == String(F("cs"))) sendProgmem(cslang, sizeof(cslang), W_JSON);
else if(settings.getLang() == String(F("fi"))) sendProgmem(filang, sizeof(filang), W_JSON);
else if(settings.getLang() == String(F("pt-br"))) sendProgmem(pt-brlang, sizeof(pt-brlang), W_JSON);
else if(settings.getLang() == String(F("tlh"))) sendProgmem(tlhlang, sizeof(tlhlang), W_JSON);
else if(settings.getLang() == String(F("ro"))) sendProgmem(rolang, sizeof(rolang), W_JSON);
else if(settings.getLang() == String(F("nl"))) sendProgmem(nllang, sizeof(nllang), W_JSON);
else if(settings.getLang() == String(F("en"))) sendProgmem(enlang, sizeof(enlang), W_JSON);
else if(settings.getLang() == String(F("es"))) sendProgmem(eslang, sizeof(eslang), W_JSON);
else if(settings.getLang() == String(F("it"))) sendProgmem(itlang, sizeof(itlang), W_JSON);
else if(settings.getLang() == String(F("cn"))) sendProgmem(cnlang, sizeof(cnlang), W_JSON);
else if(settings.getLang() == String(F("de"))) sendProgmem(delang, sizeof(delang), W_JSON);
else if(settings.getLang() == String(F("in"))) sendProgmem(inlang, sizeof(inlang), W_JSON);
else if(settings.getLang() == String(F("ru"))) sendProgmem(rulang, sizeof(rulang), W_JSON);
else if(settings.getLang() == String(F("ja"))) sendProgmem(jalang, sizeof(jalang), W_JSON);
else if(settings.getLang() == String(F("fr"))) sendProgmem(frlang, sizeof(frlang), W_JSON);
else if(settings.getLang() == String(F("hu"))) sendProgmem(hulang, sizeof(hulang), W_JSON);
else if(settings.getLang() == String(F("th"))) sendProgmem(thlang, sizeof(thlang), W_JSON);
else if(settings.getLang() == String(F("da"))) sendProgmem(dalang, sizeof(dalang), W_JSON);
else handleFileRead(String(F("/web/lang/"))+settings.getLang()+String(F(".lang")));
} else {
handleFileRead(String(F("/web/lang/"))+settings.getLang()+String(F(".lang")));
}
});
#endif /* ifdef USE_PROGMEM_WEB_FILES */
// ================================================================

View File

@ -0,0 +1,74 @@
{
"lang": "in",
"warning": "PERINGATAN",
"disclaimer": "Proyek ini adalah bukti konsep untuk pengujian dan tujuan pendidikan.\nBaik ESP8266 maupun SDK-nya tidak dimaksudkan atau dibuat untuk tujuan tersebut. Bug bisa terjadi!\n\nGunakan hanya untuk jaringan dan perangkat Anda sendiri!\n\nIni menggunakan bingkai Wi-Fi valid yang dijelaskan dalam standar IEEE 802.11 dan tidak memblokir atau mengganggu frekuensi apa pun.\nHarap periksa peraturan hukum di negara Anda sebelum menggunakannya.\n\nHarap jangan merujuk proyek ini sebagai \"jammer\", yang benar-benar merusak tujuan sebenarnya dari proyek ini!\nJika Anda melakukannya, itu hanya membuktikan bahwa Anda tidak memahami apa pun tentang apa tujuan proyek ini.\nMenerbitkan konten tentang ini tanpa penjelasan yang tepat menunjukkan bahwa Anda hanya melakukannya untuk klik, ketenaran dan/atau uang dan tidak menghormati kekayaan intelektual, komunitas di baliknya, dan perjuangan untuk standar WiFi yang lebih baik.\n\nUntuk informasi lebih lanjut kunjungi:",
"disclaimer-button": "Saya telah membaca dan memahami pemberitahuan di atas",
"reload": "Muat ulang",
"scan": "Pindai",
"ssids": "SSID",
"attacks": "Serangan",
"settings": "Pengaturan",
"info": "Info",
"info_span": "INFO: ",
"all": "Semua",
"channel": "Channel",
"devices": "Perangkat Tersimpan",
"select_all": "Pilih Semua",
"deselect_all": "Hapus Semua",
"remove_all": "Menghapus semua",
"station_scan_time": "Station Scan Time",
"new": "Baru",
"save": "Simpan",
"add": "Tambah",
"add_selected": "Gandakan AP yang dipilih",
"overwrite": "Timpa",
"time_interval": "Jarak waktu",
"number": "Jumlah",
"targets": "Target",
"scan_info": "- Klik Scan dan tunggu sampai LED biru di papan Anda mati (atau berubah menjadi hijau), kemudian klik Reload.\n- Antarmuka web tidak akan tersedia selama pemindaian stasiun dan Anda harus terhubung kembali!\n- Pilih hanya satu target!\n",
"ssids_info": "- Daftar SSID ini digunakan untuk serangan beacon dan probe.\n- Setiap SSID bisa sampai 32 karakter.\n- Jangan lupa untuk mengklik simpan saat Anda mengedit SSID.\n- Anda harus mengklik Muat Ulang setelah mengkloning SSID.\n",
"attack_info": "- Anda mungkin kehilangan koneksi saat memulai serangan!\n- You need to select a target for the deauth attack.\n- Anda perlu memilih target untuk serangan deauth.\n- Klik muat ulang untuk menyegarkan kecepatan paket.\n",
"settings_info": "- Beberapa pengaturan memerlukan boot ulang.\n- Klik simpan untuk memastikan bahwa perubahan Anda diterapkan.\n",
"info_disclaimer": "Jika terjadi kesalahan tak terduga, muat ulang situs dan lihat monitor serial untuk debugging lebih lanjut.",
"start_stop": "MULAI / BERHENTI",
"start": "MULAI",
"stop": "BERHENTI",
"wifi_off": "WiFi Mati",
"reboot": "Nyalakan Ulang",
"reset": "Setel ulang",
"enable_random": "Aktifkan Mode Acak",
"disable_random": "Nonaktifkan Mode Acak",
"random_desc": "Aktifkan mode acak untuk menghasilkan daftar SSID acak dalam interval tertentu.",
"deauth_desc": "Menutup koneksi perangkat WiFi dengan mengirimkan bingkai pembatalan otentikasi ke titik akses dan perangkat klien yang Anda pilih.\nIni hanya mungkin karena banyak perangkat tidak menggunakan standar 802.11w-2009 yang menawarkan perlindungan terhadap serangan ini.\n- Harap hanya pilih satu target! Saat Anda memilih beberapa target yang berjalan di saluran yang berbeda dan memulai serangan, itu akan dengan cepat beralih di antara saluran tersebut dan Anda tidak memiliki kesempatan untuk menyambung kembali ke antarmuka web.\n",
"beacon_desc": "Paket beacon digunakan untuk mengiklankan titik akses. Dengan terus mengirimkan paket beacon, sepertinya Anda membuat jaringan WiFi baru.\nAnda dapat menentukan nama jaringan di bawah SSID.",
"probe_desc": "Permintaan penyelidikan dikirim oleh perangkat klien untuk menanyakan apakah ada jaringan yang dikenal di sekitar.\nGunakan serangan ini untuk membingungkan pelacak WiFi dengan menanyakan jaringan yang Anda tentukan dalam daftar SSID.\nSepertinya Anda tidak akan melihat dampak apa pun dari serangan ini dengan jaringan rumah Anda.",
"setting_version": "Nomor versi, yaitu v2.0.\nPengaturan ini hanya dapat diubah di kode sumber.",
"setting_ssid" : "SSID titik akses yang digunakan untuk antarmuka web (jika diaktifkan).\nPanjangnya harus antara 1 dan 31 karakter.",
"setting_password": "Kata sandi titik akses yang digunakan untuk antarmuka web (jika diaktifkan).\nPanjangnya harus antara 8 dan 31 karakter.",
"setting_channel": "Saluran WiFi default yang digunakan saat memulai.",
"setting_hidden": "Menyembunyikan titik akses yang digunakan untuk antarmuka web (jika diaktifkan).",
"setting_captivePortal": "Mengaktifkan portal tawanan untuk titik akses (jika diaktifkan).",
"setting_autosave": "Memungkinkan penyimpanan otomatis SSID, nama perangkat, dan pengaturan.",
"setting_autosavetime": "Interval waktu untuk penyimpanan otomatis dalam milidetik.",
"setting_display": "Mengaktifkan antarmuka tampilan.",
"setting_displayTimeout": "Waktu dalam detik setelah layar mati saat tidak aktif.\nUntuk menonaktifkan waktu tunggu tampilan, setel ke 0.",
"setting_serial": "Mengaktifkan antarmuka serial.\nDianjurkan untuk tidak menonaktifkannya!",
"setting_serialEcho": "Mengaktifkan echo untuk setiap pesan masuk melalui serial.",
"setting_web": "Mengaktifkan antarmuka web.",
"setting_webSpiffs": "Mengaktifkan SPIFFS untuk semua file web.",
"setting_led": "Mengaktifkan fitur LED (RGB).",
"setting_maxch": "Max. saluran untuk memindai.\nUS = 11, EU = 13, Jepang = 14.",
"setting_macAP": "Alamat MAC yang digunakan untuk mode titik akses.\nHarap dicatat bahwa alamat MAC hanya akan menggantikan alamat MAC internal ketika mode titik akses diaktifkan.",
"setting_macSt": "Alamat MAC yang digunakan untuk mode stasiun.\nHarap dicatat bahwa alamat MAC hanya akan menggantikan alamat MAC internal ketika mode stasiun diaktifkan.",
"setting_chtime": "Waktu untuk memindai satu saluran sebelum menuju saluran berikutnya dalam milidetik (hanya jika lompatan saluran diaktifkan).",
"setting_minDeauths": "Jumlah minimum bingkai pembatalan otentikasi saat memindai untuk mengubah LED ke mode pembatalan.",
"setting_attacktimeout": "Setelah berapa lama (dalam detik) serangan akan berhenti secara otomatis.\nSetel ke 0 untuk menonaktifkannya.",
"setting_forcepackets": "Berapa banyak percobaan untuk mengirim sebuah paket.\nTetapkan nilai ini lebih tinggi jika Anda ingin mendapatkan kecepatan paket yang lebih baik di area sibuk.\nHati-hati pengaturan ini dapat membuat perangkat lebih lambat atau lebih tidak stabil.\nNilai maks 255!",
"setting_deauthspertarget": "Berapa banyak frame deauthentication dan disassociation yang dikirim untuk setiap target.",
"setting_deauthReason": "Kode alasan yang dikirim dengan frame deauth untuk memberi tahu perangkat target mengapa koneksi akan ditutup.",
"setting_beaconchannel": "Jika diaktifkan, akan mengirim semua bingkai di saluran yang berbeda saat menjalankan serangan suar.",
"setting_beaconInterval": "Jika disetel benar, beacon akan dikirim setiap detik. Jika disetel ke false, interval akan menjadi 100 md.\nInterval yang lebih lama berarti lebih banyak stabilitas dan lebih sedikit spamming paket, tetapi bisa memakan waktu lebih lama hingga klien menemukan ssids saat memindai.",
"setting_randomTX": "Mengaktifkan daya transmisi acak untuk mengirimkan bingkai permintaan beacon dan probe.",
"setting_probesPerSSID": "Berapa banyak frame permintaan probe yang dikirim untuk setiap SSID.",
"setting_lang": "Bahasa default untuk antarmuka web.\nPastikan file bahasa ada!"
}