Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions migrations/4.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
ALTER TABLE `configs` DROP COLUMN `port`;
ALTER TABLE `configs` DROP COLUMN `pokemon_max_time`;
ALTER TABLE `configs` DROP COLUMN `raid_max_time`;
ALTER TABLE `configs` DROP COLUMN `startup_lat`;
ALTER TABLE `configs` DROP COLUMN `startup_lon`;
ALTER TABLE `configs` DROP COLUMN `jitter_value`;
ALTER TABLE `configs` DROP COLUMN `max_warning_time_raid`;
ALTER TABLE `configs` DROP COLUMN `encounter_delay`;
ALTER TABLE `configs` DROP COLUMN `max_empty_gmo`;
ALTER TABLE `configs` DROP COLUMN `max_failed_count`;
ALTER TABLE `configs` DROP COLUMN `max_no_quest_count`;
ALTER TABLE `configs` DROP COLUMN `logging_url`;
ALTER TABLE `configs` DROP COLUMN `logging_port`;
ALTER TABLE `configs` DROP COLUMN `logging_tls`;
ALTER TABLE `configs` DROP COLUMN `logging_tcp`;
ALTER TABLE `configs` DROP COLUMN `ultra_iv`;
ALTER TABLE `configs` DROP COLUMN `ultra_quests`;
ALTER TABLE `configs` ADD COLUMN `data_endpoints` varchar(255) NOT NULL AFTER `backend_url`;
23 changes: 5 additions & 18 deletions src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,9 @@ const apiRoutes = require('./routes/api.js');
const timezones = require('../static/data/timezones.json');

// TODO: Create route classes
// TODO: iOS and IPA version
// TODO: Fix devices scroll with DataTables
// TODO: Fix dropdown closes when table freshes

const defaultData = {
title: config.title,
Expand Down Expand Up @@ -179,30 +182,14 @@ app.get('/config/edit/:name', async function(req, res) {
data.old_name = name;
data.name = c.name;
data.backend_url = c.backendUrl;
data.port = c.port;
data.heartbeat_max_time = c.heartbeatMaxTime;
data.pokemon_max_time = c.pokemonMaxTime;
data.raid_max_time = c.raidMaxTime;
data.startup_lat = c.startupLat;
data.startup_lon = c.startupLon;
data.data_endpoints = c.dataEndpoints;
data.token = c.token;
data.jitter_value = c.jitterValue;
data.max_warning_time_raid = c.maxWarningTimeRaid;
data.encounter_delay = c.encounterDelay;
data.heartbeat_max_time = c.heartbeatMaxTime;
data.min_delay_logout = c.minDelayLogout;
data.max_empty_gmo = c.maxEmptyGmo;
data.max_failed_count = c.maxFailedCount;
data.max_no_quest_count = c.maxNoQuestCount;
data.logging_url = c.loggingUrl;
data.logging_port = c.loggingPort;
data.logging_tls = c.loggingTls === 1 ? 'checked' : '';
data.logging_tcp = c.loggingTcp === 1 ? 'checked' : '';
data.account_manager = c.accountManager === 1 ? 'checked' : '';
data.deploy_eggs = c.deployEggs === 1 ? 'checked' : '';
data.nearby_tracker = c.nearbyTracker === 1 ? 'checked' : '';
data.auto_login = c.autoLogin === 1 ? 'checked' : '';
data.ultra_iv = c.ultraIV === 1 ? 'checked' : '';
data.ultra_quests = c.ultraQuests === 1 ? 'checked' : '';
data.is_default = c.isDefault === 1 ? 'checked' : '';
res.render('config-edit', data);
});
Expand Down
120 changes: 23 additions & 97 deletions src/models/config.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,35 +3,18 @@
const query = require('../db.js');

class Config {
constructor(name, backendUrl, port, heartbeatMaxTime, pokemonMaxTime, raidMaxTime, startupLat, startupLon, token, jitterValue,
maxWarningTimeRaid, encounterDelay, minDelayLogout, maxEmptyGmo, maxFailedCount, maxNoQuestCount, loggingUrl,
loggingPort, loggingTls, loggingTcp, accountManager, deployEggs, nearbyTracker, autoLogin, ultraIV, ultraQuests, isDefault) {
constructor(name, backendUrl, dataEndpoints, token, heartbeatMaxTime, minDelayLogout,
accountManager, deployEggs, nearbyTracker, autoLogin, isDefault) {
this.name = name;
this.backendUrl = backendUrl;
this.port = port;
this.heartbeatMaxTime = heartbeatMaxTime;
this.pokemonMaxTime = pokemonMaxTime;
this.raidMaxTime = raidMaxTime;
this.startupLat = startupLat;
this.startupLon = startupLon;
this.dataEndpoints = dataEndpoints;
this.token = token;
this.jitterValue = jitterValue;
this.maxWarningTimeRaid = maxWarningTimeRaid;
this.encounterDelay = encounterDelay;
this.heartbeatMaxTime = heartbeatMaxTime;
this.minDelayLogout = minDelayLogout;
this.maxEmptyGmo = maxEmptyGmo;
this.maxFailedCount = maxFailedCount;
this.maxNoQuestCount = maxNoQuestCount;
this.loggingUrl = loggingUrl;
this.loggingPort = loggingPort;
this.loggingTls = loggingTls;
this.loggingTcp = loggingTcp;
this.accountManager = accountManager;
this.deployEggs = deployEggs;
this.nearbyTracker = nearbyTracker;
this.autoLogin = autoLogin;
this.ultraIV = ultraIV;
this.ultraQuests = ultraQuests;
this.isDefault = isDefault;
}
static async getAll() {
Expand All @@ -40,10 +23,8 @@ class Config {
}
static async getByName(name) {
var sql = `
SELECT backend_url, port, heartbeat_max_time, pokemon_max_time, raid_max_time, startup_lat, startup_lon, token, jitter_value,
max_warning_time_raid, encounter_delay, min_delay_logout, max_empty_gmo, max_failed_count, max_no_quest_count, logging_url,
logging_port, logging_tls, logging_tcp, account_manager, deploy_eggs, nearby_tracker, auto_login, ultra_iv, ultra_quests,
is_default
SELECT backend_url, data_endpoints, token, heartbeat_max_time, min_delay_logout,
account_manager, deploy_eggs, nearby_tracker, auto_login, is_default
FROM configs
WHERE name = ?
LIMIT 1`;
Expand All @@ -56,46 +37,26 @@ class Config {
var data = new Config(
name,
c.backend_url,
c.port,
c.heartbeat_max_time,
c.pokemon_max_time,
c.raid_max_time,
c.startup_lat,
c.startup_lon,
c.data_endpoints,
c.token,
c.jitter_value,
c.max_warning_time_raid,
c.encounter_delay,
c.heartbeat_max_time,
c.min_delay_logout,
c.max_empty_gmo,
c.max_failed_count,
c.max_no_quest_count,
c.logging_url,
c.logging_port,
c.logging_tls,
c.logging_tcp,
c.account_manager,
c.deploy_eggs,
c.nearby_tracker,
c.auto_login,
c.ultra_iv,
c.ultra_quests,
c.is_default
);
return data;
}
static async create(name, backendUrl, port, heartbeatMaxTime, pokemonMaxTime, raidMaxTime, startupLat, startupLon, token, jitterValue,
maxWarningTimeRaid, encounterDelay, minDelayLogout, maxEmptyGmo, maxFailedCount, maxNoQuestCount, loggingUrl, loggingPort,
loggingTls, loggingTcp, accountManager, deployEggs, nearbyTracker, autoLogin, ultraIV, ultraQuests, isDefault) {
static async create(name, backendUrl, dataEndpoints, token, heartbeatMaxTime, minDelayLogout,
accountManager, deployEggs, nearbyTracker, autoLogin, isDefault) {
var sql = `
INSERT INTO configs (name, backend_url, port, heartbeat_max_time, pokemon_max_time, raid_max_time, startup_lat, startup_lon, token, jitter_value,
max_warning_time_raid, encounter_delay, min_delay_logout, max_empty_gmo, max_failed_count, max_no_quest_count, logging_url,
logging_port, logging_tls, logging_tcp, account_manager, deploy_eggs, nearby_tracker, auto_login, ultra_iv, ultra_quests,
is_default)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`;
var args = [name, backendUrl, port, heartbeatMaxTime, pokemonMaxTime, raidMaxTime, startupLat, startupLon, token, jitterValue,
maxWarningTimeRaid, encounterDelay, minDelayLogout, maxEmptyGmo, maxFailedCount, maxNoQuestCount, loggingUrl, loggingPort,
loggingTls, loggingTcp, accountManager, deployEggs, nearbyTracker, autoLogin, ultraIV, ultraQuests, isDefault];
INSERT INTO configs (name, backend_url, data_endpoints, token, heartbeat_max_time, min_delay_logout,
account_manager, deploy_eggs, nearby_tracker, auto_login, is_default)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`;
var args = [name, backendUrl, dataEndpoints, token, heartbeatMaxTime, minDelayLogout,
accountManager, deployEggs, nearbyTracker, autoLogin, isDefault];
var result = await query(sql, args);
return result.affectedRows === 1;
}
Expand All @@ -107,10 +68,8 @@ class Config {
}
static async getDefault() {
var sql = `
SELECT name, backend_url, port, heartbeat_max_time, pokemon_max_time, raid_max_time, startup_lat, startup_lon, token, jitter_value,
max_warning_time_raid, encounter_delay, min_delay_logout, max_empty_gmo, max_failed_count, max_no_quest_count, logging_url,
logging_port, logging_tls, logging_tcp, account_manager, deploy_eggs, nearby_tracker, auto_login, ultra_iv, ultra_quests,
is_default
SELECT name, backend_url, data_endpoints, token, heartbeat_max_time, min_delay_logout,
account_manager, deploy_eggs, nearby_tracker, auto_login, is_default
FROM configs
WHERE is_default = 1
LIMIT 1`;
Expand All @@ -122,30 +81,14 @@ class Config {
var data = new Config(
c.name,
c.backend_url,
c.port,
c.heartbeat_max_time,
c.pokemon_max_time,
c.raid_max_time,
c.startup_lat,
c.startup_lon,
c.data_endpoints,
c.token,
c.jitter_value,
c.max_warning_time_raid,
c.encounter_delay,
c.heartbeat_max_time,
c.min_delay_logout,
c.max_empty_gmo,
c.max_failed_count,
c.max_no_quest_count,
c.logging_url,
c.logging_port,
c.logging_tls,
c.logging_tcp,
c.account_manager,
c.deploy_eggs,
c.nearby_tracker,
c.auto_login,
c.ultra_iv,
c.ultra_quests,
c.is_default
);
return data;
Expand All @@ -161,37 +104,20 @@ class Config {
async save(oldName) {
var sql = `
UPDATE configs
SET name=?, backend_url=?, port=?, heartbeat_max_time=?, pokemon_max_time=?, raid_max_time=?, startup_lat=?, startup_lon=?, token=?, jitter_value=?,
max_warning_time_raid=?, encounter_delay=?, min_delay_logout=?, max_empty_gmo=?, max_failed_count=?, max_no_quest_count=?, logging_url=?, logging_port=?,
logging_tls=?, logging_tcp=?, account_manager=?, deploy_eggs=?, nearby_tracker=?, auto_login=?, ultra_iv=?, ultra_quests=?, is_default=?
SET name=?, backend_url=?, data_endpoints=?, token=?, heartbeat_max_time=?, min_delay_logout=?,
account_manager=?, deploy_eggs=?, nearby_tracker=?, auto_login=?, is_default=?
WHERE name=?`;
var args = [
this.name,
this.backendUrl,
this.port,
this.heartbeatMaxTime,
this.pokemonMaxTime,
this.raidMaxTime,
this.startupLat,
this.startupLon,
this.dataEndpoints,
this.token,
this.jitterValue,
this.maxWarningTimeRaid,
this.encounterDelay,
this.heartbeatMaxTime,
this.minDelayLogout,
this.maxEmptyGmo,
this.maxFailedCount,
this.maxNoQuestCount,
this.loggingUrl,
this.loggingPort,
this.loggingTls,
this.loggingTcp,
this.accountManager,
this.deployEggs,
this.nearbyTracker,
this.autoLogin,
this.ultraIV,
this.ultraQuests,
this.isDefault,
oldName
];
Expand Down
73 changes: 10 additions & 63 deletions src/routes/api.js
Original file line number Diff line number Diff line change
Expand Up @@ -79,15 +79,10 @@ router.get('/devices', async function(req, res) {
device.image = `<a href='${image}' target='_blank'><img src='${image}' width='64' height='96'/></a>`;
device.last_seen = utils.getDateTime(device.last_seen);
device.buttons = `
<div class='btn-group'>
<button type='button' class='btn btn-primary dropdown-toggle' data-toggle='dropdown'>Action</button>
<div class='dropdown-menu'>
<a href='/device/manage/${device.uuid}' class='dropdown-item btn-success'>Manage</a>
<a href='/config/assign/${device.uuid}' class='dropdown-item btn-secondary'>Assign Config</a>
<a href='/device/logs/${device.uuid}' class='dropdown-item btn-secondary'>View Logs</a>
<div class='dropdown-divider'></div>
<a href='/device/delete/${device.uuid}' class='dropdown-item btn-danger'>Delete</a>
</div>
<div class='btn-group' role='group'>
<a href='/device/manage/${device.uuid}' class='btn btn-success'>Manage</a>
<a href='/config/assign/${device.uuid}' class='btn btn-primary'>Assign</a>
<a href='/device/logs/${device.uuid}' class='btn btn-secondary'>Logs</a>
</div>`;
});
var json = JSON.stringify({ data: { devices: devices } });
Expand Down Expand Up @@ -242,30 +237,14 @@ router.get('/config/:uuid', async function(req, res) {
// Build json config
var json = utils.buildConfig(
c.backendUrl,
c.port,
c.heartbeatMaxTime,
c.pokemonMaxTime,
c.raidMaxTime,
c.startupLat,
c.startupLon,
c.dataEndpoints,
c.token,
c.jitterValue,
c.maxWarningTimeRaid,
c.encounterDelay,
c.heartbeatMaxTime,
c.minDelayLogout,
c.maxEmptyGmo,
c.maxFailedCount,
c.maxNoQuestCount,
c.loggingUrl,
c.loggingPort,
c.loggingTls,
c.loggingTcp,
c.accountManager,
c.deployEggs,
c.nearbyTracker,
c.autoLogin,
c.ultraIV,
c.ultraQuests,
c.isDefault
);
console.log(uuid, 'config response:', json);
Expand All @@ -291,30 +270,14 @@ router.post('/config/new', async function(req, res) {
var result = await Config.create(
data.name,
data.backend_url,
data.port,
data.heartbeat_max_time,
data.pokemon_max_time,
data.raid_max_time,
data.startup_lat,
data.startup_lon,
data.data_endpoints,
data.token,
data.jitter_value,
data.max_warning_time_raid,
data.encounter_delay,
data.heartbeat_max_time,
data.min_delay_logout,
data.max_empty_gmo,
data.max_failed_count,
data.max_no_quest_count,
data.logging_url,
data.logging_port,
data.logging_tls === 'on' ? 1 : 0,
data.logging_tcp === 'on' ? 1 : 0,
data.account_manager === 'on' ? 1 : 0,
data.deploy_eggs === 'on' ? 1 : 0,
data.nearby_tracker === 'on' ? 1 : 0,
data.auto_login === 'on' ? 1 : 0,
data.ultra_iv === 'on' ? 1 : 0,
data.ultra_quests === 'on' ? 1 : 0,
data.is_default === 'on' ? 1 : 0
);
if (result) {
Expand All @@ -331,30 +294,14 @@ router.post('/config/edit/:name', async function(req, res) {
var c = await Config.getByName(oldName);
c.name = data.name;
c.backendUrl = data.backend_url;
c.port = data.port;
c.heartbeatMaxTime = data.heartbeat_max_time;
c.pokemonMaxTime = data.pokemon_max_time;
c.raidMaxTime = data.raid_max_time;
c.startupLat = data.startup_lat;
c.startupLon = data.startup_lon;
c.dataEndpoints = data.data_endpoints;
c.token = data.token;
c.jitterValue = data.jitter_value;
c.maxWarningTimeRaid = data.max_warning_time_raid;
c.encounterDelay = data.encounter_delay;
c.heartbeatMaxTime = data.heartbeat_max_time;
c.minDelayLogout = data.min_delay_logout;
c.maxEmptyGmo = data.max_empty_gmo;
c.maxFailedCount = data.max_failed_count;
c.maxNoQuestCount = data.max_no_quest_count;
c.loggingUrl = data.logging_url;
c.loggingPort = data.logging_port;
c.loggingTls = data.logging_tls === 'on' ? 1 : 0;
c.loggingTcp = data.logging_tcp === 'on' ? 1 : 0;
c.accountManager = data.account_manager === 'on' ? 1 : 0;
c.deployEggs = data.deploy_eggs === 'on' ? 1 : 0;
c.nearbyTracker = data.nearby_tracker === 'on' ? 1 : 0;
c.autoLogin = data.auto_login === 'on' ? 1 : 0;
c.ultraIV = data.ultra_iv === 'on' ? 1 : 0;
c.ultraQuests = data.ultra_quests === 'on' ? 1 : 0;
c.isDefault = data.is_default === 'on' ? 1 : 0;
if (await c.save(oldName)) {
// Success
Expand Down
Loading