pg-ldap-sync 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0e6ea134d34a9ff15f8e16aacb27ee545ff22a23500097e7474256c666bc4eff
4
- data.tar.gz: 32aedf90f32b328497bee8df9d01943b073a6faaf6f3f4c0336b2e90f0d779cc
3
+ metadata.gz: 3630b9ed2307ae5d629896016d302f8ccfee7e324ca963b2ba6dfe1cee612351
4
+ data.tar.gz: f2065307ea2d61d6e2498e604c3d2105248380a27039601808be6b24579ef586
5
5
  SHA512:
6
- metadata.gz: 8ac395dee24a267cbab7c89ca277cb57f7bccfbdbff4f48ee6d9db2dc6f740c442df9127831658e6aa52fdbe708f853741f3b727061a7ae4c6814343ddecbc73
7
- data.tar.gz: 14e0858af1c20fd488ba0ec9beb1bc5c71492e2f8904a97821612a09a2b5f4cf4def1e27631392cb4f1f88710f76564e74f9f5dd736ffd2dbf301b73725f057a
6
+ metadata.gz: 449792e68c3cf512209e42231b134fec4a090bb873473e4db844eb50a3f9be87cd23c07676bd80ffbf604774f6a72d1d7b508cee13d8f703577c19a4312d9975
7
+ data.tar.gz: 2bbe1be11834f35b361dc0a255cd8e02323aa2f000940efcec6e695bfa5e2653ff940c883cd6264462afda36d8125913ac012c7e89d760440345d67cd48bddd5
checksums.yaml.gz.sig CHANGED
Binary file
@@ -0,0 +1,81 @@
1
+ name: CI
2
+
3
+ on: [push, pull_request]
4
+
5
+ jobs:
6
+ job_test_gem:
7
+ name: Test built gem
8
+ strategy:
9
+ fail-fast: false
10
+ matrix:
11
+ include:
12
+ - os: windows
13
+ ruby: "head"
14
+ PGVERSION: 15.1-1-windows-x64
15
+ PGVER: "15"
16
+ - os: windows
17
+ ruby: "2.4"
18
+ PGVERSION: 9.4.26-1-windows-x64
19
+ PGVER: "9.4"
20
+ - os: ubuntu
21
+ ruby: "head"
22
+ PGVER: "15"
23
+ - os: ubuntu
24
+ os_ver: "20.04"
25
+ ruby: "2.3"
26
+ PGVER: "9.3"
27
+ - os: macos
28
+ ruby: "head"
29
+ PGVERSION: 15.1-1-osx
30
+ PGVER: "15"
31
+
32
+ runs-on: ${{ matrix.os }}-${{ matrix.os_ver || 'latest' }}
33
+ env:
34
+ PGVERSION: ${{ matrix.PGVERSION }}
35
+ PGVER: ${{ matrix.PGVER }}
36
+
37
+ steps:
38
+ - uses: actions/checkout@v3
39
+ - name: Set up Ruby
40
+ uses: ruby/setup-ruby@v1
41
+ with:
42
+ ruby-version: ${{ matrix.ruby }}
43
+
44
+ - name: Download PostgreSQL Windows
45
+ if: matrix.os == 'windows'
46
+ run: |
47
+ Add-Type -AssemblyName System.IO.Compression.FileSystem
48
+ function Unzip {
49
+ param([string]$zipfile, [string]$outpath)
50
+ [System.IO.Compression.ZipFile]::ExtractToDirectory($zipfile, $outpath)
51
+ }
52
+
53
+ $(new-object net.webclient).DownloadFile("http://get.enterprisedb.com/postgresql/postgresql-$env:PGVERSION-binaries.zip", "postgresql-binaries.zip")
54
+ Unzip "postgresql-binaries.zip" "."
55
+ echo "$pwd/pgsql/bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
56
+ echo "PGUSER=$env:USERNAME" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
57
+ echo "PGPASSWORD=" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
58
+ md temp
59
+ icacls temp /grant "Everyone:(OI)(CI)F" /T
60
+
61
+ - name: Download PostgreSQL Ubuntu
62
+ if: matrix.os == 'ubuntu'
63
+ run: |
64
+ echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main $PGVER" | sudo tee -a /etc/apt/sources.list.d/pgdg.list
65
+ wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
66
+ sudo apt-get -y update
67
+ sudo apt-get -y --allow-downgrades install postgresql-$PGVER libpq5=$PGVER* libpq-dev=$PGVER*
68
+ echo /usr/lib/postgresql/$PGVER/bin >> $GITHUB_PATH
69
+
70
+ - name: Download PostgreSQL Macos
71
+ if: matrix.os == 'macos'
72
+ run: |
73
+ wget https://get.enterprisedb.com/postgresql/postgresql-$PGVERSION-binaries.zip && \
74
+ sudo mkdir -p /Library/PostgreSQL && \
75
+ sudo unzip postgresql-$PGVERSION-binaries.zip -d /Library/PostgreSQL/$PGVER && \
76
+ echo /Library/PostgreSQL/$PGVER/bin >> $GITHUB_PATH
77
+
78
+ - run: bundle install
79
+
80
+ - name: Run specs
81
+ run: bundle exec rake test
data/CHANGELOG.md CHANGED
@@ -1,3 +1,12 @@
1
+ ## 0.4.0 / 2022-12-02
2
+
3
+ * Support groups with over 1500 users in Active Directory server. #32
4
+ * Retrieve only necessary attributes from LDAP server.
5
+ * Add error text to exception, so that it's visible even if nothing is logged.
6
+ * Fix compatibility with PostgreSQL-15
7
+ * Require ruby-2.3+
8
+
9
+
1
10
  ## 0.3.0 / 2022-01-18
2
11
 
3
12
  * Add config option :bothcase_name .
data/Gemfile CHANGED
@@ -2,3 +2,8 @@ source "https://rubygems.org"
2
2
 
3
3
  # Specify your gem's dependencies in pg_ldap_sync.gemspec
4
4
  gemspec
5
+
6
+ group :development do
7
+ gem "debug"
8
+ gem "ruby-ldapserver", git: "https://github.com/larskanis/ruby-ldapserver/"
9
+ end
data/Rakefile CHANGED
@@ -2,6 +2,8 @@
2
2
  require "bundler/gem_tasks"
3
3
  require "rake/testtask"
4
4
 
5
+ CLEAN.include "temp"
6
+
5
7
  Rake::TestTask.new(:test) do |t|
6
8
  t.libs << "test"
7
9
  t.libs << "lib"
@@ -1,7 +1,10 @@
1
1
  # With this sample config the distinction between LDAP-synchronized
2
2
  # groups/users from is done by the membership to ldap_user and
3
- # ldap_group. These two roles has to be defined manally before
4
- # pg_ldap_sync can run.
3
+ # ldap_group. These two roles have to be defined manally before
4
+ # pg_ldap_sync can run:
5
+ # CREATE GROUP ldap_group;
6
+ # CREATE USER ldap_user;
7
+ #
5
8
 
6
9
  # Connection parameters to LDAP server
7
10
  # see also: http://net-ldap.rubyforge.org/Net/LDAP.html#method-c-new
@@ -52,13 +52,18 @@ class Application
52
52
 
53
53
  def search_ldap_users
54
54
  ldap_user_conf = @config[:ldap_users]
55
+ name_attribute = ldap_user_conf[:name_attribute]
55
56
 
56
57
  users = []
57
- res = @ldap.search(:base => ldap_user_conf[:base], :filter => ldap_user_conf[:filter]) do |entry|
58
- name = entry[ldap_user_conf[:name_attribute]].first
58
+ res = @ldap.search(
59
+ base: ldap_user_conf[:base],
60
+ filter: ldap_user_conf[:filter],
61
+ attributes: [name_attribute, :dn]
62
+ ) do |entry|
63
+ name = entry[name_attribute].first
59
64
 
60
65
  unless name
61
- log.warn "user attribute #{ldap_user_conf[:name_attribute].inspect} not defined for #{entry.dn}"
66
+ log.warn "user attribute #{name_attribute.inspect} not defined for #{entry.dn}"
62
67
  next
63
68
  end
64
69
  log.info "found user-dn: #{entry.dn}"
@@ -85,17 +90,56 @@ class Application
85
90
  return users
86
91
  end
87
92
 
93
+ def retrieve_array_attribute(entry, attribute_name)
94
+ array = entry[attribute_name]
95
+ if array.empty?
96
+ # Possibly an attribute, which must be retrieved in several ranges
97
+
98
+ ranged_attr = entry.attribute_names.find { |n| n =~ /\A#{Regexp.escape(attribute_name)};range=/ }
99
+ if ranged_attr
100
+ entry_dn = entry.dn
101
+
102
+ loop do
103
+ array += entry[ranged_attr]
104
+ log.debug "retrieved attribute range #{ranged_attr.inspect} of dn #{entry_dn}"
105
+
106
+ if ranged_attr =~ /;range=\d\-\*\z/
107
+ break
108
+ end
109
+
110
+ attribute_with_range = ranged_attr.to_s.gsub(/;range=.*/, ";range=#{array.size}-*")
111
+ entry = @ldap.search(
112
+ base: entry_dn,
113
+ scope: Net::LDAP::SearchScope_BaseObject,
114
+ attributes: attribute_with_range).first
115
+
116
+ ranged_attr = entry.attribute_names.find { |n| n =~ /\A#{Regexp.escape(attribute_name)};range=/ }
117
+ end
118
+ end
119
+ else
120
+ # Values already received -> No ranged attribute
121
+ end
122
+ return array
123
+ end
124
+
88
125
  def search_ldap_groups
89
126
  ldap_group_conf = @config[:ldap_groups]
127
+ name_attribute = ldap_group_conf[:name_attribute]
128
+ member_attribute = ldap_group_conf[:member_attribute]
90
129
 
91
130
  groups = []
92
- res = @ldap.search(:base => ldap_group_conf[:base], :filter => ldap_group_conf[:filter]) do |entry|
93
- name = entry[ldap_group_conf[:name_attribute]].first
131
+ res = @ldap.search(
132
+ base: ldap_group_conf[:base],
133
+ filter: ldap_group_conf[:filter],
134
+ attributes: [name_attribute, member_attribute, :dn]
135
+ ) do |entry|
136
+ name = entry[name_attribute].first
94
137
 
95
138
  unless name
96
- log.warn "user attribute #{ldap_group_conf[:name_attribute].inspect} not defined for #{entry.dn}"
139
+ log.warn "user attribute #{name_attribute.inspect} not defined for #{entry.dn}"
97
140
  next
98
141
  end
142
+
99
143
  log.info "found group-dn: #{entry.dn}"
100
144
 
101
145
  names = if ldap_group_conf[:bothcase_name]
@@ -107,7 +151,8 @@ class Application
107
151
  end
108
152
 
109
153
  names.each do |n|
110
- groups << LdapRole.new(n, entry.dn, entry[ldap_group_conf[:member_attribute]])
154
+ group_members = retrieve_array_attribute(entry, member_attribute)
155
+ groups << LdapRole.new(n, entry.dn, group_members)
111
156
  end
112
157
  entry.each do |attribute, values|
113
158
  log.debug " #{attribute}:"
@@ -123,7 +168,7 @@ class Application
123
168
  PgRole = Struct.new :name, :member_names
124
169
 
125
170
  # List of default roles taken from https://www.postgresql.org/docs/current/predefined-roles.html
126
- PG_BUILTIN_ROLES = %w[ pg_read_all_data pg_write_all_data pg_read_all_settings pg_read_all_stats pg_stat_scan_tables pg_monitor pg_database_owner pg_signal_backend pg_read_server_files pg_write_server_files pg_execute_server_program ]
171
+ PG_BUILTIN_ROLES = %w[ pg_read_all_data pg_write_all_data pg_read_all_settings pg_read_all_stats pg_stat_scan_tables pg_monitor pg_database_owner pg_signal_backend pg_read_server_files pg_write_server_files pg_execute_server_program pg_checkpoint]
127
172
 
128
173
  def search_pg_users
129
174
  pg_users_conf = @config[:pg_users]
@@ -348,14 +393,14 @@ class Application
348
393
 
349
394
  # Determine exitcode
350
395
  if log.had_errors?
351
- raise ErrorExit, 1
396
+ raise ErrorExit.new(1, log.first_error)
352
397
  end
353
398
  end
354
399
 
355
400
  def self.run(argv)
356
401
  s = self.new
357
402
  s.config_fname = '/etc/pg_ldap_sync.yaml'
358
- s.log = Logger.new($stdout, @error_counters)
403
+ s.log = Logger.new($stdout)
359
404
  s.log.level = Logger::ERROR
360
405
 
361
406
  OptionParser.new do |opts|
@@ -0,0 +1,9 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ class Hash
4
+ def transform_keys
5
+ map do |k, v|
6
+ [yield(k), v]
7
+ end.to_h
8
+ end unless method_defined? :transform_keys
9
+ end
@@ -2,23 +2,27 @@ require 'logger'
2
2
 
3
3
  module PgLdapSync
4
4
  class Logger < ::Logger
5
- def initialize(io, counters)
5
+ def initialize(io)
6
6
  super(io)
7
7
  @counters = {}
8
8
  end
9
9
 
10
- def add(severity, *args)
11
- @counters[severity] ||= 0
12
- @counters[severity] += 1
10
+ def add(severity, *args, &block)
13
11
  super
12
+ return unless [Logger::FATAL, Logger::ERROR].include?(severity)
13
+ @counters[severity] ||= block ? block.call : args.first
14
14
  end
15
15
 
16
16
  def had_logged?(severity)
17
- @counters[severity] && @counters[severity] > 0
17
+ !!@counters[severity]
18
18
  end
19
19
 
20
20
  def had_errors?
21
21
  had_logged?(Logger::FATAL) || had_logged?(Logger::ERROR)
22
22
  end
23
+
24
+ def first_error
25
+ @counters[Logger::FATAL] || @counters[Logger::ERROR]
26
+ end
23
27
  end
24
28
  end
@@ -1,3 +1,3 @@
1
1
  module PgLdapSync
2
- VERSION = "0.3.0"
2
+ VERSION = "0.4.0"
3
3
  end
data/lib/pg_ldap_sync.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require "pg_ldap_sync/application"
2
+ require "pg_ldap_sync/compat"
2
3
  require "pg_ldap_sync/version"
3
4
 
4
5
  module PgLdapSync
@@ -8,7 +9,8 @@ module PgLdapSync
8
9
  class ApplicationExit < RuntimeError
9
10
  attr_reader :exitcode
10
11
 
11
- def initialize(exitcode)
12
+ def initialize(exitcode, error=nil)
13
+ super(error)
12
14
  @exitcode = exitcode
13
15
  end
14
16
  end
data/pg-ldap-sync.gemspec CHANGED
@@ -19,7 +19,7 @@ Gem::Specification.new do |spec|
19
19
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
20
20
  spec.require_paths = ["lib"]
21
21
  spec.rdoc_options = %w[--main README.md --charset=UTF-8]
22
- spec.required_ruby_version = ">= 2.4"
22
+ spec.required_ruby_version = ">= 2.3"
23
23
 
24
24
  spec.add_runtime_dependency "net-ldap", "~> 0.16"
25
25
  spec.add_runtime_dependency "kwalify", "~> 0.7"
data.tar.gz.sig CHANGED
@@ -1 +1,4 @@
1
- Keu&7�0�*)�R���N&�'rÉ4��������v�ca��>j-�k�R$���ͱN`��e2J��a7(�$�"�y�2��������eo���b#ۤx3���l���l]���?s������RW��$f��'X4i"Ⱦ��<��Np��jP&�����3����59-jBu���鍳���6a̩!���/z��(�$~��X#e��j��*�Oq�1�'˒�y����1���ke�2)Ŏ�?r����7
1
+ j�"�gj�y�1D�FDb�:떙uqWg��a�1�?5FE{{E_��Ld��+*���:�]��\h�W ��{�?��
2
+ �8_���v���-))Z�x7�T_���X�^���c��&���V��Ѿ�dM�E��c��a�ⰨZ��bL��Ȓ@�
3
+ �n�r8 _@��BR���[^�zP���6�����&|��QF~=%+�C���q
4
+ ��غ�Գ.<FG=}��q�1�?�EE��
metadata CHANGED
@@ -1,35 +1,41 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pg-ldap-sync
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lars Kanis
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain:
11
11
  - |
12
12
  -----BEGIN CERTIFICATE-----
13
- MIIDLjCCAhagAwIBAgIBCTANBgkqhkiG9w0BAQsFADA9MQ4wDAYDVQQDDAVrYW5p
14
- czEXMBUGCgmSJomT8ixkARkWB2NvbWNhcmQxEjAQBgoJkiaJk/IsZAEZFgJkZTAe
15
- Fw0yMTA0MDcxMzQzNTZaFw0yMjA0MDcxMzQzNTZaMD0xDjAMBgNVBAMMBWthbmlz
16
- MRcwFQYKCZImiZPyLGQBGRYHY29tY2FyZDESMBAGCgmSJomT8ixkARkWAmRlMIIB
17
- IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApop+rNmg35bzRugZ21VMGqI6
18
- HGzPLO4VHYncWn/xmgPU/ZMcZdfj6MzIaZJ/czXyt4eHpBk1r8QOV3gBXnRXEjVW
19
- 9xi+EdVOkTV2/AVFKThcbTAQGiF/bT1n2M+B1GTybRzMg6hyhOJeGPqIhLfJEpxn
20
- lJi4+ENAVT4MpqHEAGB8yFoPC0GqiOHQsdHxQV3P3c2OZqG+yJey74QtwA2tLcLn
21
- Q53c63+VLGsOjODl1yPn/2ejyq8qWu6ahfTxiIlSar2UbwtaQGBDFdb2CXgEufXT
22
- L7oaPxlmj+Q2oLOfOnInd2Oxop59HoJCQPsg8f921J43NCQGA8VHK6paxIRDLQID
23
- AQABozkwNzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUvgTdT7fe
24
- x17ugO3IOsjEJwW7KP4wDQYJKoZIhvcNAQELBQADggEBAGCQhS4TBqUG1bSY5gw5
25
- emj2GNePHFNlXTZ/W0/7FlnXQz/LyBZeYmy4AIHcdY0w9xsu3bPNGk8kLBkHgK3Y
26
- l/yWiUK0NYRI3K3yI2EoTfrHPDT8XIgBPeUUGv5Nje+SUYMQWsfYWKo3+vLEG64a
27
- n1xP+1+g2Za39WCS5LwnDWMiIk47NnxR9yXErKd0Iau/Q/IarYsHFX6kWWmlMoln
28
- W1lMomCcOJFwIPnsy6aqq7YfS0YcqyHjcvs1h5k3zPaIRWhoPlQivniMVMa3Txh+
29
- NEF/4atY64rruzkyfxGEcrFFOHJIkWnWQjRGaiZdgULxf7ira2gEFvV/ZtamqJWF
30
- c+I=
13
+ MIIETTCCArWgAwIBAgIBATANBgkqhkiG9w0BAQsFADAoMSYwJAYDVQQDDB1sYXJz
14
+ L0RDPWdyZWl6LXJlaW5zZG9yZi9EQz1kZTAeFw0yMjAyMTQxMzMwNTZaFw0yMzAy
15
+ MTQxMzMwNTZaMCgxJjAkBgNVBAMMHWxhcnMvREM9Z3JlaXotcmVpbnNkb3JmL0RD
16
+ PWRlMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEAwum6Y1KznfpzXOT/
17
+ mZgJTBbxZuuZF49Fq3K0WA67YBzNlDv95qzSp7V/7Ek3NCcnT7G+2kSuhNo1FhdN
18
+ eSDO/moYebZNAcu3iqLsuzuULXPLuoU0GsMnVMqV9DZPh7cQHE5EBZ7hlzDBK7k/
19
+ 8nBMvR0mHo77kIkapHc26UzVq/G0nKLfDsIHXVylto3PjzOumjG6GhmFN4r3cP6e
20
+ SDfl1FSeRYVpt4kmQULz/zdSaOH3AjAq7PM2Z91iGwQvoUXMANH2v89OWjQO/NHe
21
+ JMNDFsmHK/6Ji4Kk48Z3TyscHQnipAID5GhS1oD21/WePdj7GhmbF5gBzkV5uepd
22
+ eJQPgWGwrQW/Z2oPjRuJrRofzWfrMWqbOahj9uth6WSxhNexUtbjk6P8emmXOJi5
23
+ chQPnWX+N3Gj+jjYxqTFdwT7Mj3pv1VHa+aNUbqSPpvJeDyxRIuo9hvzDaBHb/Cg
24
+ 9qRVcm8a96n4t7y2lrX1oookY6bkBaxWOMtWlqIprq8JZXM9AgMBAAGjgYEwfzAJ
25
+ BgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUOIdbSMr3VFrTCO9/cTM0
26
+ 0exHzBcwIgYDVR0RBBswGYEXbGFyc0BncmVpei1yZWluc2RvcmYuZGUwIgYDVR0S
27
+ BBswGYEXbGFyc0BncmVpei1yZWluc2RvcmYuZGUwDQYJKoZIhvcNAQELBQADggGB
28
+ AFWP7F/y3Oq3NgrqUOnjKOeDaBa7AqNhHS+PZg+C90lnJzMgOs4KKgZYxqSQVSab
29
+ SCEmzIO/StkXY4NpJ4fYLrHemf/fJy1wPyu+fNdp5SEEUwEo+2toRFlzTe4u4LdS
30
+ QC636nPPTMt8H3xz2wf/lUIUeo2Qc95Qt2BQM465ibbG9kmA3c7Sopx6yOabYOAl
31
+ KPRbOSEPiWYcF9Suuz8Gdf8jxEtPlnZiwRvnYJ+IHMq3XQCJWPpMzdDMbtlgHbXE
32
+ vq1zOTLMSYAS0UB3uionR4yo1hLz60odwkCm7qf0o2Ci/5OjtB0a89VuyqRU2vUJ
33
+ QH95WBjDJ6lCCW7J0mrMPnJQSUFTmufsU6jOChvPaCeAzW1YwrsP/YKnvwueG7ip
34
+ VOdW6RitjtFxhS7evRL0201+KUvLz12zZWWjOcujlQs64QprxOtiv/MiisKb1Ng+
35
+ oL1mUdzB8KrZL4/WbG5YNX6UTtJbIOu9qEFbBAy4/jtIkJX+dlNoFwd4GXQW1YNO
36
+ nA==
31
37
  -----END CERTIFICATE-----
32
- date: 2022-01-18 00:00:00.000000000 Z
38
+ date: 2022-12-02 00:00:00.000000000 Z
33
39
  dependencies:
34
40
  - !ruby/object:Gem::Dependency
35
41
  name: net-ldap
@@ -155,7 +161,7 @@ dependencies:
155
161
  - - "~>"
156
162
  - !ruby/object:Gem::Version
157
163
  version: '1.4'
158
- description:
164
+ description:
159
165
  email:
160
166
  - lars@greiz-reinsdorf.de
161
167
  executables:
@@ -164,6 +170,7 @@ extensions: []
164
170
  extra_rdoc_files: []
165
171
  files:
166
172
  - ".autotest"
173
+ - ".github/workflows/ci.yml"
167
174
  - ".gitignore"
168
175
  - ".travis.yml"
169
176
  - CHANGELOG.md
@@ -179,6 +186,7 @@ files:
179
186
  - exe/pg_ldap_sync
180
187
  - lib/pg_ldap_sync.rb
181
188
  - lib/pg_ldap_sync/application.rb
189
+ - lib/pg_ldap_sync/compat.rb
182
190
  - lib/pg_ldap_sync/logger.rb
183
191
  - lib/pg_ldap_sync/version.rb
184
192
  - pg-ldap-sync.gemspec
@@ -186,7 +194,7 @@ homepage: https://github.com/larskanis/pg-ldap-sync
186
194
  licenses:
187
195
  - MIT
188
196
  metadata: {}
189
- post_install_message:
197
+ post_install_message:
190
198
  rdoc_options:
191
199
  - "--main"
192
200
  - README.md
@@ -197,15 +205,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
197
205
  requirements:
198
206
  - - ">="
199
207
  - !ruby/object:Gem::Version
200
- version: '2.4'
208
+ version: '2.3'
201
209
  required_rubygems_version: !ruby/object:Gem::Requirement
202
210
  requirements:
203
211
  - - ">="
204
212
  - !ruby/object:Gem::Version
205
213
  version: '0'
206
214
  requirements: []
207
- rubygems_version: 3.3.3
208
- signing_key:
215
+ rubygems_version: 3.3.7
216
+ signing_key:
209
217
  specification_version: 4
210
218
  summary: Use LDAP permissions in PostgreSQL
211
219
  test_files: []
metadata.gz.sig CHANGED
Binary file