summaryrefslogtreecommitdiffstats
path: root/test/webrick/test_httpserver.rb
blob: eb685f916d9ab2bd9bae5de20d5bf3f8afd65b3a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
require "test/unit"
require "net/http"
require "webrick"
require File.join(File.dirname(__FILE__), "utils.rb")

class TestWEBrickHTTPServer < Test::Unit::TestCase
  def test_mount
    httpd = WEBrick::HTTPServer.new(
      :Logger => WEBrick::Log.new(TestWEBrick::NullWriter),
      :DoNotListen=>true
    )
    httpd.mount("/", :Root)
    httpd.mount("/foo", :Foo)
    httpd.mount("/foo/bar", :Bar, :bar1)
    httpd.mount("/foo/bar/baz", :Baz, :baz1, :baz2)

    serv, opts, script_name, path_info = httpd.search_servlet("/")
    assert_equal(:Root, serv)
    assert_equal([], opts)
    assert_equal(script_name, "")
    assert_equal(path_info, "/")

    serv, opts, script_name, path_info = httpd.search_servlet("/sub")
    assert_equal(:Root, serv)
    assert_equal([], opts)
    assert_equal(script_name, "")
    assert_equal(path_info, "/sub")

    serv, opts, script_name, path_info = httpd.search_servlet("/sub/")
    assert_equal(:Root, serv)
    assert_equal([], opts)
    assert_equal(script_name, "")
    assert_equal(path_info, "/sub/")

    serv, opts, script_name, path_info = httpd.search_servlet("/foo")
    assert_equal(:Foo, serv)
    assert_equal([], opts)
    assert_equal(script_name, "/foo")
    assert_equal(path_info, "")

    serv, opts, script_name, path_info = httpd.search_servlet("/foo/")
    assert_equal(:Foo, serv)
    assert_equal([], opts)
    assert_equal(script_name, "/foo")
    assert_equal(path_info, "/")

    serv, opts, script_name, path_info = httpd.search_servlet("/foo/sub")
    assert_equal(:Foo, serv)
    assert_equal([], opts)
    assert_equal(script_name, "/foo")
    assert_equal(path_info, "/sub")

    serv, opts, script_name, path_info = httpd.search_servlet("/foo/bar")
    assert_equal(:Bar, serv)
    assert_equal([:bar1], opts)
    assert_equal(script_name, "/foo/bar")
    assert_equal(path_info, "")

    serv, opts, script_name, path_info = httpd.search_servlet("/foo/bar/baz")
    assert_equal(:Baz, serv)
    assert_equal([:baz1, :baz2], opts)
    assert_equal(script_name, "/foo/bar/baz")
    assert_equal(path_info, "")
  end

  class Req
    attr_reader :port, :host
    def initialize(addr, port, host)
      @addr, @port, @host = addr, port, host
    end
    def addr
      [0,0,0,@addr]
    end
  end

  def httpd(addr, port, host, ali)
    config ={
      :Logger      => WEBrick::Log.new(TestWEBrick::NullWriter),
      :DoNotListen => true,
      :BindAddress => addr,
      :Port        => port,
      :ServerName  => host,
      :ServerAlias => ali,
    }
    return WEBrick::HTTPServer.new(config)
  end

  def assert_eql?(v1, v2)
    assert_equal(v1.object_id, v2.object_id)
  end

  def test_lookup_server
    addr1  = "192.168.100.1"
    addr2  = "192.168.100.2"
    addrz  = "192.168.100.254"
    local  = "127.0.0.1"
    port1  = 80
    port2  = 8080
    port3  = 10080
    portz  = 32767
    name1  = "www.example.com"
    name2  = "www2.example.com"
    name3  = "www3.example.com"
    namea  = "www.example.co.jp"
    nameb  = "www.example.jp"
    namec  = "www2.example.co.jp"
    named  = "www2.example.jp"
    namez  = "foobar.example.com"
    alias1 = [namea, nameb]
    alias2 = [namec, named]

    host1 = httpd(nil, port1, name1, nil)
    hosts = [
      host2  = httpd(addr1, port1, name1, nil),
      host3  = httpd(addr1, port1, name2, alias1),
      host4  = httpd(addr1, port2, name1, nil),
      host5  = httpd(addr1, port2, name2, alias1),
      host6  = httpd(addr1, port2, name3, alias2),
      host7  = httpd(addr2, nil,   name1, nil),
      host8  = httpd(addr2, nil,   name2, alias1),
      host9  = httpd(addr2, nil,   name3, alias2),
      host10 = httpd(local, nil,   nil,   nil),
      host11 = httpd(nil,   port3, nil,   nil),
    ].sort_by{ rand }
    hosts.each{|h| host1.virtual_host(h) }

    # connect to addr1
    assert_eql?(host2,   host1.lookup_server(Req.new(addr1, port1, name1)))
    assert_eql?(host3,   host1.lookup_server(Req.new(addr1, port1, name2)))
    assert_eql?(host3,   host1.lookup_server(Req.new(addr1, port1, namea)))
    assert_eql?(host3,   host1.lookup_server(Req.new(addr1, port1, nameb)))
    assert_eql?(nil,     host1.lookup_server(Req.new(addr1, port1, namez)))
    assert_eql?(host4,   host1.lookup_server(Req.new(addr1, port2, name1)))
    assert_eql?(host5,   host1.lookup_server(Req.new(addr1, port2, name2)))
    assert_eql?(host5,   host1.lookup_server(Req.new(addr1, port2, namea)))
    assert_eql?(host5,   host1.lookup_server(Req.new(addr1, port2, nameb)))
    assert_eql?(nil,     host1.lookup_server(Req.new(addr1, port2, namez)))
    assert_eql?(host11,  host1.lookup_server(Req.new(addr1, port3, name1)))
    assert_eql?(host11,  host1.lookup_server(Req.new(addr1, port3, name2)))
    assert_eql?(host11,  host1.lookup_server(Req.new(addr1, port3, namea)))
    assert_eql?(host11,  host1.lookup_server(Req.new(addr1, port3, nameb)))
    assert_eql?(host11,  host1.lookup_server(Req.new(addr1, port3, namez)))
    assert_eql?(nil,     host1.lookup_server(Req.new(addr1, portz, name1)))
    assert_eql?(nil,     host1.lookup_server(Req.new(addr1, portz, name2)))
    assert_eql?(nil,     host1.lookup_server(Req.new(addr1, portz, namea)))
    assert_eql?(nil,     host1.lookup_server(Req.new(addr1, portz, nameb)))
    assert_eql?(nil,     host1.lookup_server(Req.new(addr1, portz, namez)))

    # connect to addr2
    assert_eql?(host7,  host1.lookup_server(Req.new(addr2, port1, name1)))
    assert_eql?(host8,  host1.lookup_server(Req.new(addr2, port1, name2)))
    assert_eql?(host8,  host1.lookup_server(Req.new(addr2, port1, namea)))
    assert_eql?(host8,  host1.lookup_server(Req.new(addr2, port1, nameb)))
    assert_eql?(nil,    host1.lookup_server(Req.new(addr2, port1, namez)))
    assert_eql?(host7,  host1.lookup_server(Req.new(addr2, port2, name1)))
    assert_eql?(host8,  host1.lookup_server(Req.new(addr2, port2, name2)))
    assert_eql?(host8,  host1.lookup_server(Req.new(addr2, port2, namea)))
    assert_eql?(host8,  host1.lookup_server(Req.new(addr2, port2, nameb)))
    assert_eql?(nil,    host1.lookup_server(Req.new(addr2, port2, namez)))
    assert_eql?(host7,  host1.lookup_server(Req.new(addr2, port3, name1)))
    assert_eql?(host8,  host1.lookup_server(Req.new(addr2, port3, name2)))
    assert_eql?(host8,  host1.lookup_server(Req.new(addr2, port3, namea)))
    assert_eql?(host8,  host1.lookup_server(Req.new(addr2, port3, nameb)))
    assert_eql?(host11, host1.lookup_server(Req.new(addr2, port3, namez)))
    assert_eql?(host7,  host1.lookup_server(Req.new(addr2, portz, name1)))
    assert_eql?(host8,  host1.lookup_server(Req.new(addr2, portz, name2)))
    assert_eql?(host8,  host1.lookup_server(Req.new(addr2, portz, namea)))
    assert_eql?(host8,  host1.lookup_server(Req.new(addr2, portz, nameb)))
    assert_eql?(nil,    host1.lookup_server(Req.new(addr2, portz, namez)))

    # connect to addrz
    assert_eql?(nil,    host1.lookup_server(Req.new(addrz, port1, name1)))
    assert_eql?(nil,    host1.lookup_server(Req.new(addrz, port1, name2)))
    assert_eql?(nil,    host1.lookup_server(Req.new(addrz, port1, namea)))
    assert_eql?(nil,    host1.lookup_server(Req.new(addrz, port1, nameb)))
    assert_eql?(nil,    host1.lookup_server(Req.new(addrz, port1, namez)))
    assert_eql?(nil,    host1.lookup_server(Req.new(addrz, port2, name1)))
    assert_eql?(nil,    host1.lookup_server(Req.new(addrz, port2, name2)))
    assert_eql?(nil,    host1.lookup_server(Req.new(addrz, port2, namea)))
    assert_eql?(nil,    host1.lookup_server(Req.new(addrz, port2, nameb)))
    assert_eql?(nil,    host1.lookup_server(Req.new(addrz, port2, namez)))
    assert_eql?(host11, host1.lookup_server(Req.new(addrz, port3, name1)))
    assert_eql?(host11, host1.lookup_server(Req.new(addrz, port3, name2)))
    assert_eql?(host11, host1.lookup_server(Req.new(addrz, port3, namea)))
    assert_eql?(host11, host1.lookup_server(Req.new(addrz, port3, nameb)))
    assert_eql?(host11, host1.lookup_server(Req.new(addrz, port3, namez)))
    assert_eql?(nil,    host1.lookup_server(Req.new(addrz, portz, name1)))
    assert_eql?(nil,    host1.lookup_server(Req.new(addrz, portz, name2)))
    assert_eql?(nil,    host1.lookup_server(Req.new(addrz, portz, namea)))
    assert_eql?(nil,    host1.lookup_server(Req.new(addrz, portz, nameb)))
    assert_eql?(nil,    host1.lookup_server(Req.new(addrz, portz, namez)))

    # connect to localhost
    assert_eql?(host10, host1.lookup_server(Req.new(local, port1, name1)))
    assert_eql?(host10, host1.lookup_server(Req.new(local, port1, name2)))
    assert_eql?(host10, host1.lookup_server(Req.new(local, port1, namea)))
    assert_eql?(host10, host1.lookup_server(Req.new(local, port1, nameb)))
    assert_eql?(host10, host1.lookup_server(Req.new(local, port1, namez)))
    assert_eql?(host10, host1.lookup_server(Req.new(local, port2, name1)))
    assert_eql?(host10, host1.lookup_server(Req.new(local, port2, name2)))
    assert_eql?(host10, host1.lookup_server(Req.new(local, port2, namea)))
    assert_eql?(host10, host1.lookup_server(Req.new(local, port2, nameb)))
    assert_eql?(host10, host1.lookup_server(Req.new(local, port2, namez)))
    assert_eql?(host10, host1.lookup_server(Req.new(local, port3, name1)))
    assert_eql?(host10, host1.lookup_server(Req.new(local, port3, name2)))
    assert_eql?(host10, host1.lookup_server(Req.new(local, port3, namea)))
    assert_eql?(host10, host1.lookup_server(Req.new(local, port3, nameb)))
    assert_eql?(host10, host1.lookup_server(Req.new(local, port3, namez)))
    assert_eql?(host10, host1.lookup_server(Req.new(local, portz, name1)))
    assert_eql?(host10, host1.lookup_server(Req.new(local, portz, name2)))
    assert_eql?(host10, host1.lookup_server(Req.new(local, portz, namea)))
    assert_eql?(host10, host1.lookup_server(Req.new(local, portz, nameb)))
    assert_eql?(host10, host1.lookup_server(Req.new(local, portz, namez)))
  end

  def test_callbacks
    accepted = started = stopped = 0
    requested0 = requested1 = 0
    config = {
      :ServerName => "localhost",
      :AcceptCallback => Proc.new{ accepted += 1 },
      :StartCallback => Proc.new{ started += 1 },
      :StopCallback => Proc.new{ stopped += 1 },
      :RequestCallback => Proc.new{|req, res| requested0 += 1 },
    }
    TestWEBrick.start_httpserver(config){|server, addr, port|
      vhost_config = {
        :ServerName => "myhostname",
        :BindAddress => addr,
        :Port => port,
        :DoNotListen => true,
        :Logger => WEBrick::Log.new(TestWEBrick::NullWriter),
        :AccessLog => [],
        :RequestCallback => Proc.new{|req, res| requested1 += 1 },
      }
      server.virtual_host(WEBrick::HTTPServer.new(vhost_config))

      true while server.status != :Running
      assert_equal(started, 1)
      assert_equal(stopped, 0)
      assert_equal(accepted, 0)

      http = Net::HTTP.new(addr, port)
      req = Net::HTTP::Get.new("/")
      req["Host"] = "myhostname:#{port}"
      http.request(req){|res| assert_equal("404", res.code)}
      http.request(req){|res| assert_equal("404", res.code)}
      http.request(req){|res| assert_equal("404", res.code)}
      req["Host"] = "localhost:#{port}"
      http.request(req){|res| assert_equal("404", res.code)}
      http.request(req){|res| assert_equal("404", res.code)}
      http.request(req){|res| assert_equal("404", res.code)}
      assert_equal(6, accepted)
      assert_equal(3, requested0)
      assert_equal(3, requested1)
    }
    assert_equal(started, 1)
    assert_equal(stopped, 1)
  end
end
providers/data_provider_opts.c \ providers/data_provider_callbacks.c \ $(SSSD_FAILOVER_OBJ) \ $(SSSD_UTIL_OBJ) krb5_utils_tests_CFLAGS = \ $(AM_CFLAGS) \ $(CHECK_CFLAGS) krb5_utils_tests_LDADD = \ $(SSSD_LIBS)\ $(CARES_LIBS) \ $(CHECK_LIBS) \ libsss_test_common.la check_and_open_tests_SOURCES = \ $(SSSD_DEBUG_OBJ) \ tests/check_and_open-tests.c \ util/check_and_open.c check_and_open_tests_CFLAGS = \ $(AM_CFLAGS) \ $(CHECK_CFLAGS) check_and_open_tests_LDADD = \ $(CHECK_LIBS) \ libsss_test_common.la FILES_TESTS_LIBS = \ $(CHECK_LIBS) \ $(POPT_LIBS) \ $(TALLOC_LIBS) \ libsss_test_common.la if BUILD_SELINUX FILES_TESTS_LIBS += $(SELINUX_LIBS) endif if BUILD_SEMANAGE FILES_TESTS_LIBS += $(SEMANAGE_LIBS) endif files_tests_SOURCES = \ $(SSSD_DEBUG_OBJ) \ tests/files-tests.c \ util/check_and_open.c \ tools/selinux.c \ tools/files.c files_tests_CFLAGS = \ $(AM_CFLAGS) \ $(CHECK_CFLAGS) files_tests_LDADD = \ $(FILES_TESTS_LIBS) \ libsss_test_common.la SSSD_RESOLV_TESTS_OBJ = \ $(SSSD_RESOLV_OBJ) if BUILD_ARES_DATA SSSD_RESOLV_TESTS_OBJ += \ resolv/ares/ares_parse_txt_reply.c endif resolv_tests_SOURCES = \ tests/resolv-tests.c \ $(SSSD_UTIL_OBJ) \ $(SSSD_RESOLV_TESTS_OBJ) resolv_tests_CFLAGS = \ $(AM_CFLAGS) \ $(CHECK_CFLAGS) \ -DBUILD_TXT resolv_tests_LDADD = \ $(SSSD_LIBS) \ $(CHECK_LIBS) \ $(CARES_LIBS) \ libsss_test_common.la refcount_tests_SOURCES = \ tests/refcount-tests.c \ $(CHECK_OBJ) \ $(SSSD_UTIL_OBJ) refcount_tests_CFLAGS = \ $(CHECK_CFLAGS) refcount_tests_LDADD = \ $(SSSD_LIBS) \ $(CHECK_LIBS) \ libsss_test_common.la fail_over_tests_SOURCES = \ tests/fail_over-tests.c \ $(SSSD_FAILOVER_OBJ) \ $(CHECK_OBJ) \ $(SSSD_UTIL_OBJ) fail_over_tests_CFLAGS = \ $(CHECK_CFLAGS) fail_over_tests_LDADD = \ $(SSSD_LIBS) \ $(CHECK_LIBS) \ $(CARES_LIBS) \ libsss_test_common.la ipa_timerules_tests_SOURCES = \ providers/ipa/ipa_timerules.c \ tests/ipa_timerules-tests.c \ $(SSSD_DEBUG_OBJ) ipa_timerules_tests_CFLAGS = \ $(AM_CFLAGS) \ $(POPT_CFLAGS) \ $(TALLOC_CFLAGS) \ $(PCRE_CFLAGS) \ $(CHECK_CFLAGS) ipa_timerules_tests_LDADD = \ $(POPT_LIBS) \ $(PCRE_LIBS) \ $(TALLOC_LIBS) \ $(CHECK_LIBS) \ libsss_test_common.la find_uid_tests_SOURCES = \ tests/find_uid-tests.c \ util/find_uid.c \ $(SSSD_DEBUG_OBJ) find_uid_tests_CFLAGS = \ $(AM_CFLAGS) \ $(TALLOC_CFLAGS) \ $(DHASH_CFLAGS) \ $(CHECK_CFLAGS) find_uid_tests_LDADD = \ $(TALLOC_LIBS) \ $(DHASH_LIBS) \ $(CHECK_LIBS) \ libsss_test_common.la auth_tests_SOURCES = \ tests/auth-tests.c \ $(SSSD_UTIL_OBJ) auth_tests_CFLAGS = \ $(AM_CFLAGS) \ $(CHECK_CFLAGS) auth_tests_LDADD = \ $(SSSD_LIBS) \ $(CHECK_LIBS) \ libsss_test_common.la ipa_ldap_opt_tests_SOURCES = \ providers/ipa/ipa_utils.c \ tests/ipa_ldap_opt-tests.c ipa_ldap_opt_tests_CFLAGS = \ $(AM_CFLAGS) \ $(CHECK_CFLAGS) ipa_ldap_opt_tests_LDADD = \ $(CHECK_LIBS) \ $(TALLOC_LIBS) \ libsss_test_common.la simple_access_tests_SOURCES = \ tests/simple_access-tests.c \ providers/simple/simple_access.c \ $(SSSD_UTIL_OBJ) simple_access_tests_CFLAGS = \ $(AM_CFLAGS) \ $(CHECK_CFLAGS) simple_access_tests_LDADD = \ $(SSSD_LIBS) \ $(CHECK_LIBS) endif stress_tests_SOURCES = \ tests/stress-tests.c \ $(SSSD_UTIL_OBJ) stress_tests_LDADD = \ $(SSSD_LIBS) \ libsss_test_common.la noinst_PROGRAMS = pam_test_client pam_test_client_SOURCES = sss_client/pam_test_client.c pam_test_client_LDFLAGS = -lpam -lpam_misc #################### # Client Libraries # #################### nsslib_LTLIBRARIES = libnss_sss.la libnss_sss_la_SOURCES = \ sss_client/common.c \ sss_client/passwd.c \ sss_client/group.c \ sss_client/sss_cli.h libnss_sss_la_LDFLAGS = \ -module \ -version-info 2:0:0 \ -Wl,--version-script,$(srcdir)/sss_client/sss_nss.exports pamlib_LTLIBRARIES = pam_sss.la pam_sss_la_SOURCES = \ sss_client/pam_sss.c \ sss_client/common.c \ sss_client/sss_cli.h \ sss_client/sss_pam_macros.h pam_sss_la_LDFLAGS = \ -lpam \ -module \ -avoid-version \ -Wl,--version-script,$(srcdir)/sss_client/sss_pam.exports dist_noinst_DATA += \ sss_client/sss_nss.exports \ sss_client/sss_pam.exports #################### # Plugin Libraries # #################### libsss_ldap_la_SOURCES = \ util/find_uid.c \ providers/child_common.c \ providers/ldap/ldap_id.c \ providers/ldap/ldap_id_enum.c \ providers/ldap/ldap_id_cleanup.c \ providers/ldap/sdap_access.c \ providers/ldap/ldap_auth.c \ providers/ldap/ldap_init.c \ providers/ldap/ldap_common.c \ providers/ldap/sdap_async.c \ providers/ldap/sdap_async_accounts.c \ providers/ldap/sdap_async_connection.c \ providers/ldap/sdap_child_helpers.c \ providers/ldap/sdap_fd_events.c \ providers/ldap/sdap_id_op.c \ providers/ldap/sdap.c \ util/user_info_msg.c \ util/sss_ldap.c \ util/sss_krb5.c libsss_ldap_la_CFLAGS = \ $(AM_CFLAGS) \ $(LDAP_CFLAGS) \ $(KRB5_CFLAGS) libsss_ldap_la_LIBADD = \ $(OPENLDAP_LIBS) \ $(KRB5_LIBS) libsss_ldap_la_LDFLAGS = \ -version-info 1:0:0 \ -module libsss_proxy_la_SOURCES = \ providers/proxy/proxy_common.c \ providers/proxy/proxy_init.c \ providers/proxy/proxy_id.c \ providers/proxy/proxy_auth.c libsss_proxy_la_CFLAGS = \ $(AM_CFLAGS) libsss_proxy_la_LIBADD = \ $(PAM_LIBS) libsss_proxy_la_LDFLAGS = \ -version-info 1:0:0 \ -module libsss_simple_la_SOURCES = \ providers/simple/simple_access.c libsss_simple_la_CFLAGS = \ $(AM_CFLAGS) libsss_simple_la_LIBADD = \ $(PAM_LIBS) libsss_simple_la_LDFLAGS = \ -version-info 1:0:0 \ -module libsss_krb5_la_SOURCES = \ util/find_uid.c \ providers/child_common.c \ providers/krb5/krb5_utils.c \ providers/krb5/krb5_become_user.c \ providers/krb5/krb5_delayed_online_authentication.c \ providers/krb5/krb5_auth.c \ providers/krb5/krb5_common.c \ providers/krb5/krb5_init.c \ util/sss_krb5.c libsss_krb5_la_CFLAGS = \ $(AM_CFLAGS) \ $(DHASH_CFLAGS) libsss_krb5_la_LIBADD = \ $(DHASH_LIBS) \ $(KEYUTILS_LIBS) \ $(KRB5_LIBS) libsss_krb5_la_LDFLAGS = \ -version-info 1:0:0 \ -module libsss_ipa_la_SOURCES = \ providers/child_common.c \ providers/ipa/ipa_init.c \ providers/ipa/ipa_common.c \ providers/ipa/ipa_utils.c \ providers/ipa/ipa_auth.c \ providers/ipa/ipa_access.c \ providers/ipa/ipa_timerules.c \ providers/ipa/ipa_dyndns.c \ providers/ldap/ldap_id.c \ providers/ldap/ldap_id_enum.c \ providers/ldap/ldap_id_cleanup.c \ providers/ldap/ldap_auth.c \ providers/ldap/ldap_common.c \ providers/ldap/sdap_async.c \ providers/ldap/sdap_async_accounts.c \ providers/ldap/sdap_async_connection.c \ providers/ldap/sdap_child_helpers.c \ providers/ldap/sdap_fd_events.c \ providers/ldap/sdap_id_op.c \ providers/ldap/sdap.c \ util/user_info_msg.c \ util/sss_ldap.c \ util/sss_krb5.c \ util/find_uid.c \ providers/krb5/krb5_utils.c \ providers/krb5/krb5_become_user.c \ providers/krb5/krb5_delayed_online_authentication.c \ providers/krb5/krb5_common.c \ providers/krb5/krb5_auth.c libsss_ipa_la_CFLAGS = \ $(AM_CFLAGS) \ $(LDAP_CFLAGS) \ $(DHASH_CFLAGS) \ $(KRB5_CFLAGS) libsss_ipa_la_LIBADD = \ $(OPENLDAP_LIBS) \ $(DHASH_LIBS) \ $(KEYUTILS_LIBS) \ $(KRB5_LIBS) libsss_ipa_la_LDFLAGS = \ -version-info 1:0:0 \ -module krb5_child_SOURCES = \ $(SSSD_DEBUG_OBJ) \ providers/krb5/krb5_become_user.c \ providers/krb5/krb5_child.c \ providers/child_common.c \ providers/dp_pam_data_util.c \ util/user_info_msg.c \ util/sss_krb5.c krb5_child_CFLAGS = \ $(AM_CFLAGS) \ $(POPT_CFLAGS) \ $(KRB5_CFLAGS) krb5_child_LDADD = \ $(TALLOC_LIBS) \ $(TEVENT_LIBS) \ $(POPT_LIBS) \ $(KRB5_LIBS) ldap_child_SOURCES = \ $(SSSD_DEBUG_OBJ) \ providers/ldap/ldap_child.c \ providers/child_common.c \ util/sss_krb5.c ldap_child_CFLAGS = \ $(AM_CFLAGS) \ $(POPT_CFLAGS) \ $(KRB5_CFLAGS) ldap_child_LDADD = \ $(TALLOC_LIBS) \ $(TEVENT_LIBS) \ $(POPT_LIBS) \ $(OPENLDAP_LIBS) \ $(KRB5_LIBS) proxy_child_SOURCES = \ $(SSSD_UTIL_OBJ) \ providers/proxy/proxy_child.c proxy_child_CFLAGS = \ $(AM_CFLAGS) \ $(POPT_CFLAGS) proxy_child_LDADD = \ $(PAM_LIBS) \ $(SSSD_LIBS) memberof_la_SOURCES = \ ldb_modules/memberof.c memberof_la_CFLAGS = \ $(AM_CFLAGS) memberof_la_LIBADD = $(LDB_LIBS) $(DHASH_LIBS) memberof_la_LDFLAGS = \ -avoid-version \ -module if BUILD_KRB5_LOCATOR_PLUGIN sssd_krb5_locator_plugin_la_SOURCES = \ krb5_plugin/sssd_krb5_locator_plugin.c sssd_krb5_locator_plugin_la_CFLAGS = \ $(AM_CFLAGS) \ $(KRB5_CFLAGS) sssd_krb5_locator_plugin_la_LDFLAGS = \ -avoid-version \ -module endif if BUILD_PYTHON_BINDINGS pysss_la_SOURCES = \ $(SSSD_UTIL_OBJ) \ $(SSSD_TOOLS_OBJ) \ python/pysss.c pysss_la_CFLAGS = \ $(AM_CFLAGS) \ $(PYTHON_CFLAGS) pysss_la_LIBADD = \ $(PYTHON_BINDINGS_LIBS) \ $(PYTHON_LIBS) pysss_la_LDFLAGS = \ -avoid-version \ -module endif ############ # MANPAGES # ############ #Special Rules: export SGML_CATALOG_FILES DOCBOOK_XSLT = http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl XMLLINT_FLAGS = --catalogs --postvalid --nonet --xinclude --noout XSLTPROC_FLAGS = --catalogs --xinclude --nonet dist_man_MANS = man/sss_useradd.8 man/sss_userdel.8 man/sss_usermod.8 \ man/sss_groupadd.8 man/sss_groupdel.8 man/sss_groupmod.8 \ man/sssd.8 man/sssd.conf.5 man/sssd-ldap.5 man/sssd-krb5.5 \ man/sssd-ipa.5 man/sssd-simple.5 \ man/sssd_krb5_locator_plugin.8 man/sss_groupshow.8 man/pam_sss.8 SUFFIXES = .1.xml .1 .3.xml .3 .5.xml .5 .8.xml .8 .1.xml.1: $(XMLLINT) $(XMLLINT_FLAGS) $< $(XSLTPROC) -o $@ $(XSLTPROC_FLAGS) $(DOCBOOK_XSLT) $< .3.xml.3: $(XMLLINT) $(XMLLINT_FLAGS) $< $(XSLTPROC) -o $@ $(XSLTPROC_FLAGS) $(DOCBOOK_XSLT) $< .5.xml.5: $(XMLLINT) $(XMLLINT_FLAGS) $< $(XSLTPROC) -o $@ $(XSLTPROC_FLAGS) $(DOCBOOK_XSLT) $< .8.xml.8: $(XMLLINT) $(XMLLINT_FLAGS) $< $(XSLTPROC) -o $@ $(XSLTPROC_FLAGS) $(DOCBOOK_XSLT) $< ####################### # Installation Extras # ####################### dist_init_SCRIPTS = if HAVE_SUSE dist_init_SCRIPTS += \ sysv/SUSE/sssd else dist_init_SCRIPTS += \ sysv/sssd endif dist_sssdconf_DATA = \ config/etc/sssd.api.conf dist_sssdapiplugin_DATA = \ config/etc/sssd.api.d/sssd-ipa.conf \ config/etc/sssd.api.d/sssd-krb5.conf \ config/etc/sssd.api.d/sssd-ldap.conf \ config/etc/sssd.api.d/sssd-local.conf \ config/etc/sssd.api.d/sssd-proxy.conf \ config/etc/sssd.api.d/sssd-simple.conf installsssddirs:: mkdir -p \ $(DESTDIR)$(includedir) \ $(DESTDIR)$(libdir) \ $(DESTDIR)$(sbindir) \ $(DESTDIR)$(initdir) \ $(DESTDIR)$(mandir) \ $(DESTDIR)$(pluginpath) \ $(DESTDIR)$(libdir)/ldb \ $(DESTDIR)$(dbuspolicydir) \ $(DESTDIR)$(infpintrospectdir) \ $(DESTDIR)$(dbusintrospectdir) \ $(DESTDIR)$(pipepath)/private \ $(DESTDIR)$(sssdlibdir) \ $(DESTDIR)$(sssdconfdir) \ $(DESTDIR)$(dbpath) \ $(DESTDIR)$(pidpath) \ $(DESTDIR)$(initdir) \ $(DESTDIR)$(logpath) \ $(DESTDIR)$(pubconfpath) if HAVE_DOXYGEN docs: $(DOXYGEN) doxy.config else docs: @echo "Doxygen not installed, cannot generate documentation" @exit 1 endif all-local: cd $(srcdir)/config; $(PYTHON) setup.py build --build-base $(abs_builddir)/config install-exec-hook: installsssddirs if [ "$(DESTDIR)" = "" ]; then \ cd $(srcdir)/config; $(PYTHON) setup.py build --build-base $(abs_builddir)/config install $(DISTSETUPOPTS) --prefix=$(PYTHON_PREFIX) --record=$(abs_builddir)/config/.files; \ else \ cd $(srcdir)/config; $(PYTHON) setup.py build --build-base $(abs_builddir)/config install $(DISTSETUPOPTS) --prefix=$(PYTHON_PREFIX) --root=$(DESTDIR) --record=$(abs_builddir)/config/.files; \ fi mkdir -p doc $(DESTDIR)/$(docdir); cp -a doc $(DESTDIR)/$(docdir)/ install-data-hook: rm $(DESTDIR)/$(nsslibdir)/libnss_sss.so.2 \ $(DESTDIR)/$(nsslibdir)/libnss_sss.so mv $(DESTDIR)/$(nsslibdir)/libnss_sss.so.2.0.0 $(DESTDIR)/$(nsslibdir)/libnss_sss.so.2 uninstall-hook: if [ -f $(abs_builddir)/config/.files ]; then \ cat $(abs_builddir)/config/.files | xargs -iq rm -f $(DESTDIR)/q; \ rm $(abs_builddir)/config/.files ; \ fi rm -Rf $(DESTDIR)/$(docdir)/doc clean-local: cd $(srcdir)/config; $(PYTHON) setup.py build --build-base $(abs_builddir)/config clean --all rm -Rf doc CLEANFILES = *.X */*.X */*/*.X tests: all $(check_PROGRAMS)