Class: Ci::SecureFile
Constant Summary
collapse
- STORE_COLUMN =
:file_store
- FILE_SIZE_LIMIT =
5.megabytes.freeze
- CHECKSUM_ALGORITHM =
'sha256'
- PARSABLE_EXTENSIONS =
%w[cer p12 mobileprovision].freeze
Constants included
from Limitable
Limitable::GLOBAL_SCOPE
FileStoreMounter::ALLOWED_FILE_FIELDS
ApplicationRecord::MAX_PLUCK
HasCheckConstraints::NOT_NULL_CHECK_PATTERN
ResetOnColumnErrors::MAX_RESET_PERIOD
Instance Method Summary
collapse
Methods included from Limitable
#exceeds_limits?
model_name, table_name_prefix
===, cached_column_list, #create_or_load_association, current_transaction, declarative_enum, default_select_columns, delete_all_returning, #deleted_from_database?, id_in, id_not_in, iid_in, nullable_column?, primary_key_in, #readable_by?, safe_ensure_unique, safe_find_or_create_by, safe_find_or_create_by!, #to_ability_name, underscore, where_exists, where_not_exists, with_fast_read_statement_timeout, without_order
#sharding_organization
#reset_on_union_error, #reset_on_unknown_attribute_error
#serializable_hash
Instance Method Details
#checksum_algorithm ⇒ Object
35
36
37
|
# File 'app/models/ci/secure_file.rb', line 35
def checksum_algorithm
CHECKSUM_ALGORITHM
end
|
#file_extension ⇒ Object
39
40
41
|
# File 'app/models/ci/secure_file.rb', line 39
def file_extension
File.extname(name).delete_prefix('.').presence
end
|
#local? ⇒ Boolean
74
75
76
|
# File 'app/models/ci/secure_file.rb', line 74
def local?
file_store == ObjectStorage::Store::LOCAL
end
|
43
44
45
|
# File 'app/models/ci/secure_file.rb', line 43
def metadata_parsable?
PARSABLE_EXTENSIONS.include?(file_extension)
end
|
47
48
49
50
51
52
53
54
55
56
57
58
|
# File 'app/models/ci/secure_file.rb', line 47
def metadata_parser
return unless metadata_parsable?
case file_extension
when 'cer'
Gitlab::Ci::SecureFiles::Cer.new(file.read)
when 'p12'
Gitlab::Ci::SecureFiles::P12.new(file.read) if Feature.enabled?(:secure_files_p12_parser)
when 'mobileprovision'
Gitlab::Ci::SecureFiles::MobileProvision.new(file.read)
end
end
|
60
61
62
63
64
65
66
67
68
69
70
71
72
|
# File 'app/models/ci/secure_file.rb', line 60
def update_metadata!
return unless metadata_parser
begin
parser = metadata_parser
self.metadata = parser.metadata
self.expires_at = parser.metadata[:expires_at]
save!
rescue StandardError => err
Gitlab::AppLogger.error("Secure File Parser Failure (#{id}): #{err.message} - #{parser.error}.")
nil
end
end
|