Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release 2.11 #242

Merged
merged 14 commits into from
Apr 14, 2021
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
6 changes: 6 additions & 0 deletions app/v1/applications/controller.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@ function get (req, res, next) {
let chosenFlow; //to be determined

if (req.query.id) { //filter by id
if (Number.isNaN(Number(req.query.id))) {
return res.parcel.setStatus(400).setMessage("id must be an integer").deliver();
}
chosenFlow = helper.createAppInfoFlow('idFilter', req.query.id);
}
else if (req.query.uuid) { //filter by app uuid
Expand Down Expand Up @@ -75,6 +78,7 @@ function get (req, res, next) {
//TODO: emailing system for messaging the developer about the approval status change
function actionPost (req, res, next) {
helper.validateActionPost(req, res);
helper.checkIdIntegerBody(req, res);
if (res.parcel.message) {
return res.parcel.deliver();
}
Expand Down Expand Up @@ -152,6 +156,7 @@ function hybridPost (req, res, next) {

function rpcEncryptionPut (req, res, next) {
helper.validateRPCEncryptionPut(req, res);
helper.checkIdIntegerBody(req, res);
if (res.parcel.message) {
return res.parcel.deliver();
}
Expand Down Expand Up @@ -270,6 +275,7 @@ function passthroughPost (req, res, next) {

function putServicePermission (req, res, next) {
helper.validateServicePermissionPut(req, res);
helper.checkIdIntegerBody(req, res);
if (res.parcel.message) {
return res.parcel.deliver();
}
Expand Down
7 changes: 7 additions & 0 deletions app/v1/applications/helper.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,12 @@ const certificates = require('../certificates/controller.js');
const certUtil = require('../helpers/certificates.js');

//validation functions
function checkIdIntegerBody (req, res) {
if (Number.isNaN(Number(req.body.id))) {
res.parcel.setStatus(400).setMessage("id must be an integer");
}
return;
}

function validateActionPost (req, res) {
if (!req.body.id || !req.body.approval_status) {
Expand Down Expand Up @@ -434,6 +440,7 @@ module.exports = {
validateFunctionalGroupPut: validateFunctionalGroupPut,
validateUpdateAppCertificate: validateUpdateAppCertificate,
validateWebHook: validateWebHook,
checkIdIntegerBody: checkIdIntegerBody,
storeAppCertificates: storeAppCertificates,
createFailedAppsCert: createFailedAppsCert,
createAppInfoFlow: createAppInfoFlow,
Expand Down
3 changes: 3 additions & 0 deletions app/v1/groups/controller.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,9 @@ function get (req, res, next) {
], {method: 'waterfall'});
}
else if (req.query.id) { //filter by id
if (Number.isNaN(Number(req.query.id))) {
return res.parcel.setStatus(400).setMessage("id must be an integer").deliver();
}
chosenFlow = helper.createFuncGroupFlow('idFilter', req.query.id, true, isProduction);
}
else { //get all apps at the high level, filtering in PRODUCTION or STAGING mode
Expand Down
3 changes: 3 additions & 0 deletions app/v1/messages/controller.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,9 @@ function getInfo (req, res, next) {
chosenFlow = helper.makeCategoryTemplateFlow();
}
else if (req.query.id) { //get messages of a specific id. this is the 'detailed' mode
if (Number.isNaN(Number(req.query.id))) {
return res.parcel.setStatus(400).setMessage("id must be an integer").deliver();
}
chosenFlow = helper.getMessageDetailsFlow(req.query.id);
}
else { //get all message info at the highest level, filtering in PRODUCTION or STAGING mode
Expand Down
9 changes: 9 additions & 0 deletions app/v1/module-config/controller.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,9 @@ function get(req, res, next) {
let chosenFlow;

if (req.query.id) { //get module config of a specific id
if (Number.isNaN(Number(req.query.id))) {
return res.parcel.setStatus(400).setMessage("id must be an integer").deliver();
}
chosenFlow = helper.getModuleConfigFlow('id', req.query.id);
} else { //get the most recent module config object
chosenFlow = helper.getModuleConfigFlow('status', isProduction);
Expand All @@ -31,6 +34,12 @@ function get(req, res, next) {
.setMessage('Internal server error')
.deliver();
}
if (!certController.openSSLEnabled) { // cert gen not enabled
data.forEach(obj => {
delete obj.certificate;
delete obj.private_key
})
}
return res.parcel
.setStatus(200)
.setData(
Expand Down
3 changes: 2 additions & 1 deletion app/v1/policy/model.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ const settings = require('../../../settings.js');
const sqlApp = require('../applications/sql.js');
const _ = require('lodash');
const vehicleDataHelper = require('../vehicle-data/helper.js');
const certController = require('../certificates/controller');

//module config

Expand All @@ -27,7 +28,7 @@ function transformModuleConfig (isProduction, useLongUuids = false, info, next)
concatPort = ":" + settings.policyServerPort;
}

if(base.certificate && base.private_key){
if(certController.openSSLEnabled && base.certificate && base.private_key){
base.certificate += '\n' + base.private_key;
}
else {
Expand Down
4 changes: 4 additions & 0 deletions app/v1/vehicle-data/controller.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,10 @@ function get(req, res, next) {
return getTemplate(req, res);
}

if (req.query.id && Number.isNaN(Number(req.query.id))) {
return res.parcel.setStatus(400).setMessage("id must be an integer").deliver();
}

async.waterfall(
[
function(cb) {
Expand Down
53 changes: 53 additions & 0 deletions migrations/20210120182618-seat-occupancy-0262.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
'use strict';

var dbm;
var type;
var seed;
var fs = require('fs');
var path = require('path');
var Promise;

/**
* We receive the dbmigrate dependency from dbmigrate initially.
* This enables us to not have to rely on NODE_PATH.
*/
exports.setup = function(options, seedLink) {
dbm = options.dbmigrate;
type = dbm.dataType;
seed = seedLink;
Promise = options.Promise;
};

exports.up = function(db) {
var filePath = path.join(__dirname, 'sqls', '20210120182618-seat-occupancy-0262-up.sql');
return new Promise( function( resolve, reject ) {
fs.readFile(filePath, {encoding: 'utf-8'}, function(err,data){
if (err) return reject(err);
console.log('received data: ' + data);

resolve(data);
});
})
.then(function(data) {
return db.runSql(data);
});
};

exports.down = function(db) {
var filePath = path.join(__dirname, 'sqls', '20210120182618-seat-occupancy-0262-down.sql');
return new Promise( function( resolve, reject ) {
fs.readFile(filePath, {encoding: 'utf-8'}, function(err,data){
if (err) return reject(err);
console.log('received data: ' + data);

resolve(data);
});
})
.then(function(data) {
return db.runSql(data);
});
};

exports._meta = {
"version": 1
};
53 changes: 53 additions & 0 deletions migrations/20210129160807-climate-data-0269.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
'use strict';

var dbm;
var type;
var seed;
var fs = require('fs');
var path = require('path');
var Promise;

/**
* We receive the dbmigrate dependency from dbmigrate initially.
* This enables us to not have to rely on NODE_PATH.
*/
exports.setup = function(options, seedLink) {
dbm = options.dbmigrate;
type = dbm.dataType;
seed = seedLink;
Promise = options.Promise;
};

exports.up = function(db) {
var filePath = path.join(__dirname, 'sqls', '20210129160807-climate-data-0269-up.sql');
return new Promise( function( resolve, reject ) {
fs.readFile(filePath, {encoding: 'utf-8'}, function(err,data){
if (err) return reject(err);
console.log('received data: ' + data);

resolve(data);
});
})
.then(function(data) {
return db.runSql(data);
});
};

exports.down = function(db) {
var filePath = path.join(__dirname, 'sqls', '20210129160807-climate-data-0269-down.sql');
return new Promise( function( resolve, reject ) {
fs.readFile(filePath, {encoding: 'utf-8'}, function(err,data){
if (err) return reject(err);
console.log('received data: ' + data);

resolve(data);
});
})
.then(function(data) {
return db.runSql(data);
});
};

exports._meta = {
"version": 1
};
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/** Intentionally left blank. If an OEM runs a down migration, we do not want to delete functional groups that may have been updated. **/
92 changes: 92 additions & 0 deletions migrations/sqls/20210120182618-seat-occupancy-0262-up.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
-- DROP AFFECTED VIEWS --
DROP VIEW IF EXISTS view_mapped_permissions_production;
DROP VIEW IF EXISTS view_mapped_permissions_staging;
DROP VIEW IF EXISTS view_mapped_permissions;
DROP VIEW IF EXISTS view_function_group_info;
-- END DROP OF VIEWS --

INSERT INTO function_group_parameters(function_group_id, rpc_name, parameter)
SELECT id AS function_group_id, 'GetVehicleData' AS rpc_name, 'seatOccupancy' AS parameter
FROM function_group_info
WHERE property_name = 'DrivingCharacteristics-3'
AND NOT EXISTS(
SELECT 1
FROM function_group_parameters
WHERE property_name = 'DrivingCharacteristics-3'
AND parameter = 'seatOccupancy'
AND rpc_name = 'GetVehicleData'
);

INSERT INTO function_group_parameters(function_group_id, rpc_name, parameter)
SELECT id AS function_group_id, 'OnVehicleData' AS rpc_name, 'seatOccupancy' AS parameter
FROM function_group_info
WHERE property_name = 'DrivingCharacteristics-3'
AND NOT EXISTS(
SELECT 1
FROM function_group_parameters
WHERE property_name = 'DrivingCharacteristics-3'
AND parameter = 'seatOccupancy'
AND rpc_name = 'OnVehicleData'
);

INSERT INTO function_group_parameters(function_group_id, rpc_name, parameter)
SELECT id AS function_group_id, 'SubscribeVehicleData' AS rpc_name, 'seatOccupancy' AS parameter
FROM function_group_info
WHERE property_name = 'DrivingCharacteristics-3'
AND NOT EXISTS(
SELECT 1
FROM function_group_parameters
WHERE property_name = 'DrivingCharacteristics-3'
AND parameter = 'seatOccupancy'
AND rpc_name = 'SubscribeVehicleData'
);

INSERT INTO function_group_parameters(function_group_id, rpc_name, parameter)
SELECT id AS function_group_id, 'UnsubscribeVehicleData' AS rpc_name, 'seatOccupancy' AS parameter
FROM function_group_info
WHERE property_name = 'DrivingCharacteristics-3'
AND NOT EXISTS(
SELECT 1
FROM function_group_parameters
WHERE property_name = 'DrivingCharacteristics-3'
AND parameter = 'seatOccupancy'
AND rpc_name = 'UnsubscribeVehicleData'
);

-- RECREATE AFFECTED VIEWS --
CREATE OR REPLACE VIEW view_function_group_info AS
SELECT function_group_info.*
FROM (
SELECT property_name, status, max(id) AS id
FROM function_group_info
GROUP BY property_name, status
) AS vfgi
INNER JOIN function_group_info ON vfgi.id = function_group_info.id;

CREATE OR REPLACE VIEW view_mapped_permissions AS
SELECT function_group_id AS id, permission_name AS name, status, property_name, is_deleted
FROM view_function_group_info
INNER JOIN function_group_hmi_levels
ON view_function_group_info.id = function_group_hmi_levels.function_group_id
WHERE is_deleted=false
UNION
SELECT function_group_id AS id, parameter AS name, status, property_name, is_deleted
FROM view_function_group_info
INNER JOIN function_group_parameters
ON view_function_group_info.id = function_group_parameters.function_group_id
WHERE is_deleted=false;

CREATE OR REPLACE VIEW view_mapped_permissions_staging AS
SELECT view_mapped_permissions.*
FROM view_mapped_permissions
INNER JOIN (
SELECT max(id) AS id, property_name
FROM view_function_group_info
GROUP BY property_name
) fgi
ON view_mapped_permissions.id = fgi.id;

CREATE OR REPLACE VIEW view_mapped_permissions_production AS
SELECT view_mapped_permissions.* FROM view_mapped_permissions
WHERE status = 'PRODUCTION';
-- END VIEW RECREATION --
1 change: 1 addition & 0 deletions migrations/sqls/20210129160807-climate-data-0269-down.sql
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/** Intentionally left blank. If an OEM runs a down migration, we do not want to delete functional groups that may have been updated. **/
Loading