123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- # Copyright (C) 2012-2024 Zammad Foundation, https://zammad-foundation.org/
- class PGPIntegration < ActiveRecord::Migration[6.1]
- def change
- # return if it's a new setup
- return if !Setting.exists?(name: 'system_init_done')
- create_pgp_keys_table
- create_pgp_keys_table_indices
- create_pgp_keys_table_foreign_keys
- create_pgp_integration_settings
- rename_postmaster_pre_filter
- end
- private
- def create_pgp_keys_table
- create_table :pgp_keys do |t|
- t.string :fingerprint, limit: 40, null: false
- t.text :key, limit: 500.kilobytes + 1, null: false
- t.datetime :expires_at, null: true, limit: 3
- t.string :uids, limit: 3000, null: false
- t.boolean :secret, null: false, default: false
- t.string :passphrase, limit: 500, null: true
- t.string :domain_alias, limit: 255, null: true, default: ''
- t.integer :updated_by_id, null: false
- t.integer :created_by_id, null: false
- t.timestamps limit: 3, null: false
- end
- end
- def create_pgp_keys_table_indices
- add_index :pgp_keys, [:fingerprint], unique: true
- add_index :pgp_keys, [:uids], length: 255
- add_index :pgp_keys, [:domain_alias]
- end
- def create_pgp_keys_table_foreign_keys
- add_foreign_key :pgp_keys, :users, column: :created_by_id
- add_foreign_key :pgp_keys, :users, column: :updated_by_id
- end
- def create_pgp_integration_settings
- Setting.create_if_not_exists(
- title: 'PGP integration',
- name: 'pgp_integration',
- area: 'Integration::Switch',
- description: 'Defines if PGP encryption is enabled or not.',
- options: {
- form: [
- {
- display: '',
- null: true,
- name: 'pgp_integration',
- tag: 'boolean',
- options: {
- true => 'yes',
- false => 'no',
- },
- },
- ],
- },
- state: false,
- preferences: {
- prio: 1,
- authentication: true,
- permission: ['admin.integration'],
- },
- frontend: true
- )
- Setting.create_if_not_exists(
- title: 'PGP config',
- name: 'pgp_config',
- area: 'Integration::PGP',
- description: 'Defines the PGP config.',
- options: {},
- state: {},
- preferences: {
- prio: 2,
- permission: ['admin.integration'],
- },
- frontend: true,
- )
- Setting.create_if_not_exists(
- title: 'PGP Recipient Alias Configuration',
- name: 'pgp_recipient_alias_configuration',
- area: 'Core::Integration::PGP',
- description: 'Defines if the PGP recipient alias configuration is enabled or not.',
- options: {},
- state: false,
- preferences: { online_service_disable: true },
- frontend: true
- )
- end
- def rename_postmaster_pre_filter
- Setting.find_by(name: '0016_postmaster_filter_smime').update!(name: '0016_postmaster_filter_secure_mailing')
- end
- end
|