diff --git a/index.html b/index.html index 5a2a92d..398b5ce 100644 --- a/index.html +++ b/index.html @@ -106,6 +106,26 @@ <h4 class="center black-text">Delete account?</h4> <a href="#!" class="modal-close waves-effect waves-light btn red delete-btn" id="add-account">Delete</a> </div> </div> + <div id="modal3" class="modal"> + <div class="modal-content"> + <h4 class="center black-text">Steam guard for account <span id="guard-acc-name">ERROR</span></h4> + <div class="row"> + <form class="col s12" id="guard-acc-form"> + <div class="row"> + <div class="input-field col s12"> + <input id="guard-code" type="text" class="validate"> + <label for="guard-code">Code</label> + </div> + </div> + </form> + </div> + </div> + <div class="modal-footer"> + <a href="#!" class="modal-close waves-effect waves-light btn red" id="guard-submit">Submit</a> + <a href="#!" class="modal-close waves-effect waves-light btn red" id="guard-cancel">Cancel</a> + + </div> + </div> <script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script> <script> M.AutoInit(); @@ -176,7 +196,10 @@ <h4 class="center black-text">Delete account?</h4> a_refresh.addEventListener('click', async e => { let promise = ipcRenderer.invoke('accounts:check', username); updateAccounts(); - await promise; + let ret = await promise; + if(ret.error) { + M.toast({html: username + ': ' + ret.error, classes: 'red'}); + } updateAccounts(); }); let a_delete = document.createElement('a'); @@ -272,6 +295,27 @@ <h4 class="center black-text">Delete account?</h4> document.querySelector('#importtxt').addEventListener('click', async e => { await ipcRenderer.invoke('accounts:import'); }); + document.querySelector('#guard-submit').addEventListener('click', async e => { + let code = document.querySelector("#guard-code").value.trim(); + if (code.length > 0) { + await ipcRenderer.send('steam:steamguard:response', code); + } else { + M.toast({html: 'Steam guard code can not be empty'}); + } + }) + document.querySelector('#guard-cancel').addEventListener('click', async e => { + await ipcRenderer.send('steam:steamguard:response', null); + }) + M.Modal.init(document.querySelectorAll('#modal3'), { + dismissible: false + }); + let modal3 = M.Modal.getInstance(document.querySelector('#modal3')); + ipcRenderer.on('steam:steamguard', (event, username) => { + document.querySelector('#guard-acc-name').innerText = username; + document.querySelector("#guard-code").value = ''; + modal3.open(); + }) + </script> </body> </html> \ No newline at end of file diff --git a/main.js b/main.js index f06c46a..f08f41c 100644 --- a/main.js +++ b/main.js @@ -13,22 +13,30 @@ if(!fs.existsSync(app.getPath('userData'))){ fs.mkdirSync(app.getPath('userData')) //makes data on first run } +let win = null + const db = new JSONdb(app.getPath('userData') + '/accounts.json'); db.sync(); //makes empty file on first run var currently_checking = []; function createWindow () { - const win = new BrowserWindow({ + win = new BrowserWindow({ webPreferences: { nodeIntegration: true, }, }); win.removeMenu(); - globalShortcut.register('CommandOrControl+Shift+I', () => { - win.webContents.openDevTools(); - }) + // globalShortcut.register('CommandOrControl+Shift+I', () => { + // win.webContents.openDevTools(); + // }) win.loadFile('index.html'); + win.webContents.on('before-input-event', (event, input) => { + if (input.control && input.shift && input.key.toLowerCase() === 'i') { + win.webContents.openDevTools(); + event.preventDefault(); + } + }) } app.whenReady().then(createWindow) @@ -207,8 +215,9 @@ function check_account(username, pass) { let steamClient = new User(); steamClient.logOn({ - "accountName": username, - "password": pass, + accountName: username, + password: pass, + rememberPassword: true, }); steamClient.on('disconnected', (eresult, msg) => { @@ -232,6 +241,10 @@ function check_account(username, pass) { errorStr = `Rate Limit Exceeded`; break; } + case 65: { + errorStr = `steam guard is invalid`; + break; + } default: { errorStr = `Unknown: ${e.eresult}`; break; @@ -242,8 +255,20 @@ function check_account(username, pass) { }); steamClient.on('steamGuard', (domain, callback) => { - currently_checking = currently_checking.filter(x => x !== username); - reject(`steam guard is enabled`); + if (!win) { + currently_checking = currently_checking.filter(x => x !== username); + reject(`steam guard is enabled`); + } else { + win.webContents.send('steam:steamguard', username); + ipcMain.once('steam:steamguard:response', async (event, code) => { + if (!code) { + currently_checking = currently_checking.filter(x => x !== username); + reject(`steam guard is enabled`); + } else { + callback(code); + } + }); + } }); // steamClient.on('vacBans', (numBans, appids) => {