20211010141200_ssl_passthrough_host.js 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. const migrate_name = 'ssl_passthrough_host';
  2. const logger = require('../logger').migrate;
  3. /**
  4. * Migrate
  5. *
  6. * @see http://knexjs.org/#Schema
  7. *
  8. * @param {Object} knex
  9. * @param {Promise} Promise
  10. * @returns {Promise}
  11. */
  12. exports.up = async function (knex/*, Promise*/) {
  13. logger.info('[' + migrate_name + '] Migrating Up...');
  14. await knex.schema.createTable('ssl_passthrough_host', (table) => {
  15. table.increments().primary();
  16. table.dateTime('created_on').notNull();
  17. table.dateTime('modified_on').notNull();
  18. table.integer('owner_user_id').notNull().unsigned();
  19. table.integer('is_deleted').notNull().unsigned().defaultTo(0);
  20. table.string('domain_name').notNull();
  21. table.string('forwarding_host').notNull();
  22. table.integer('forwarding_port').notNull().unsigned();
  23. table.integer('enabled').notNull().unsigned().defaultTo(1);
  24. table.json('meta').notNull();
  25. });
  26. logger.info('[' + migrate_name + '] Table created');
  27. // Remove unique constraint so name can be used for new table
  28. await knex.schema.alterTable('user_permission', (table) => {
  29. table.dropUnique('user_id');
  30. });
  31. await knex.schema.renameTable('user_permission', 'user_permission_old');
  32. // We need to recreate the table since sqlite does not support altering columns
  33. await knex.schema.createTable('user_permission', (table) => {
  34. table.increments().primary();
  35. table.dateTime('created_on').notNull();
  36. table.dateTime('modified_on').notNull();
  37. table.integer('user_id').notNull().unsigned();
  38. table.string('visibility').notNull();
  39. table.string('proxy_hosts').notNull();
  40. table.string('redirection_hosts').notNull();
  41. table.string('dead_hosts').notNull();
  42. table.string('streams').notNull();
  43. table.string('ssl_passthrough_hosts').notNull();
  44. table.string('access_lists').notNull();
  45. table.string('certificates').notNull();
  46. table.unique('user_id');
  47. });
  48. await knex('user_permission_old').select('*', 'streams as ssl_passthrough_hosts').then((data) => {
  49. if (data.length) {
  50. return knex('user_permission').insert(data);
  51. }
  52. return Promise.resolve();
  53. });
  54. await knex.schema.dropTableIfExists('user_permission_old');
  55. logger.info('[' + migrate_name + '] permissions updated');
  56. };
  57. /**
  58. * Undo Migrate
  59. *
  60. * @param {Object} knex
  61. * @param {Promise} Promise
  62. * @returns {Promise}
  63. */
  64. exports.down = function (knex/*, Promise*/) {
  65. logger.info('[' + migrate_name + '] Migrating Down...');
  66. return knex.schema.dropTable('stream').then(() => {
  67. return knex.schema.table('user_permission', (table) => {
  68. table.dropColumn('ssl_passthrough_hosts');
  69. });
  70. })
  71. .then(function () {
  72. logger.info('[' + migrate_name + '] Table altered and permissions updated');
  73. });
  74. };