treequel 1.3.2 → 1.4.0
Sign up to get free protection for your applications and to get access to all the features.
- data/ChangeLog +159 -76
- data/History.md +25 -0
- data/LICENSE +1 -1
- data/README.md +1 -1
- data/Rakefile +1 -1
- data/bin/treequel +24 -4
- data/lib/treequel/branch.rb +1 -1
- data/lib/treequel/constants.rb +4 -1
- data/lib/treequel/directory.rb +9 -0
- data/lib/treequel/filter.rb +25 -15
- data/lib/treequel.rb +2 -2
- data/spec/treequel/directory_spec.rb +6 -0
- data/spec/treequel/filter_spec.rb +5 -0
- data/spec/treequel/mixins_spec.rb +0 -5
- data.tar.gz.sig +0 -0
- metadata +18 -18
- metadata.gz.sig +0 -0
data/ChangeLog
CHANGED
@@ -1,8 +1,87 @@
|
|
1
|
+
2011-01-31 Michael Granger <ged@FaerieMUD.org>
|
2
|
+
|
3
|
+
* .hgtags:
|
4
|
+
Added tag v1.4.0 for changeset 9a29615cfb6d
|
5
|
+
[4826f3621e86] [master, tip]
|
6
|
+
|
7
|
+
* .hgsigs:
|
8
|
+
Added signature for changeset 63270598af6b
|
9
|
+
[9a29615cfb6d] [v1.4.0]
|
10
|
+
|
11
|
+
* History.md, lib/treequel.rb:
|
12
|
+
Bumped minor version and updated History file for release.
|
13
|
+
[63270598af6b]
|
14
|
+
|
15
|
+
* lib/treequel/constants.rb, lib/treequel/filter.rb,
|
16
|
+
spec/treequel/filter_spec.rb:
|
17
|
+
Escape filter metacharacters in simple filter components
|
18
|
+
[a4a5a436af47] [github/master]
|
19
|
+
|
20
|
+
* Rakefile, manual/resources/fonts/GraublauWeb.otf,
|
21
|
+
manual/resources/fonts/GraublauWebBold.otf,
|
22
|
+
manual/resources/fonts/Inconsolata.otf, manual/src/models.page:
|
23
|
+
More work on the 'Models' section of the manual.
|
24
|
+
[3029b8c183bf]
|
25
|
+
|
26
|
+
2011-01-25 Michael Granger <ged@FaerieMUD.org>
|
27
|
+
|
28
|
+
* lib/treequel/branch.rb:
|
29
|
+
Fixed a bug in Treequel::Branch#copy.
|
30
|
+
[7ddaabd492e4]
|
31
|
+
|
32
|
+
* bin/treequel:
|
33
|
+
Adding reconnect support to the treequel shell
|
34
|
+
[f4a3b207966d]
|
35
|
+
|
36
|
+
* lib/treequel/directory.rb, spec/treequel/directory_spec.rb:
|
37
|
+
Added a new method: Treequel::Directory#connected?
|
38
|
+
[d2c1559a6f28]
|
39
|
+
|
40
|
+
* spec/treequel/mixins_spec.rb:
|
41
|
+
Cleaned up cruft in mixins spec
|
42
|
+
[7706be6b8c4c]
|
43
|
+
|
44
|
+
2011-01-19 Michael Granger <ged@FaerieMUD.org>
|
45
|
+
|
46
|
+
* manual/layouts/default.page, manual/layouts/intro.page,
|
47
|
+
manual/resources/images/logo-small.png,
|
48
|
+
manual/resources/images/logo.png,
|
49
|
+
manual/resources/js/jquery-1.3.2.min.js,
|
50
|
+
manual/resources/js/jquery.ThickBox.js,
|
51
|
+
manual/resources/swf/clipboard.swf:
|
52
|
+
Merged with 411:ddbb3c3bdd00
|
53
|
+
[ba7895d4e64b]
|
54
|
+
|
1
55
|
2011-01-18 Michael Granger <ged@FaerieMUD.org>
|
2
56
|
|
57
|
+
* manual/layouts/default.erb, manual/resources/css/manual.css,
|
58
|
+
manual/src/index.page:
|
59
|
+
Updating the manual.
|
60
|
+
[ddbb3c3bdd00]
|
61
|
+
|
62
|
+
* LICENSE:
|
63
|
+
I meant the README.md file. NOW update the LICENSE file
|
64
|
+
[a81be935c179]
|
65
|
+
|
66
|
+
* README.md:
|
67
|
+
Updating the copyright date in the LICENSE file
|
68
|
+
[04a457302e85]
|
69
|
+
|
70
|
+
* .hgtags:
|
71
|
+
Added tag v1.3.2 for changeset c6f3bdc3bb57
|
72
|
+
[4dc62eaea468]
|
73
|
+
|
74
|
+
* .hgsigs:
|
75
|
+
Added signature for changeset a545351e8cce
|
76
|
+
[c6f3bdc3bb57] [v1.3.2]
|
77
|
+
|
78
|
+
* lib/treequel.rb, lib/treequel/model.rb:
|
79
|
+
Bump patch version; simplify Treequel::Model#apply_applicable_mixins
|
80
|
+
[a545351e8cce]
|
81
|
+
|
3
82
|
* Rakefile:
|
4
83
|
Merged with 400:4caac8976d00
|
5
|
-
[59944084d362]
|
84
|
+
[59944084d362]
|
6
85
|
|
7
86
|
* lib/treequel/model.rb:
|
8
87
|
Ensure the entry hash that's passed to
|
@@ -29,8 +108,18 @@
|
|
29
108
|
Adding missing dependency
|
30
109
|
[eaf742c5b836]
|
31
110
|
|
111
|
+
2011-01-14 Michael Granger <ged@FaerieMUD.org>
|
112
|
+
|
113
|
+
* manual/src/models.page:
|
114
|
+
Fixed some invalid api links in the models section
|
115
|
+
[7759040905e0]
|
116
|
+
|
32
117
|
2011-01-17 Michael Granger <ged@FaerieMUD.org>
|
33
118
|
|
119
|
+
* History.md:
|
120
|
+
Updated History
|
121
|
+
[9c4db65b40d7]
|
122
|
+
|
34
123
|
* .hgtags:
|
35
124
|
Added tag v1.3.1 for changeset a6ea030fc88f
|
36
125
|
[4caac8976d00]
|
@@ -45,12 +134,6 @@
|
|
45
134
|
attributes to sometimes be doubled.
|
46
135
|
[fb7ec4e38f66]
|
47
136
|
|
48
|
-
2011-01-14 Michael Granger <ged@FaerieMUD.org>
|
49
|
-
|
50
|
-
* manual/src/models.page:
|
51
|
-
Fixed some invalid api links in the models section
|
52
|
-
[7759040905e0]
|
53
|
-
|
54
137
|
2011-01-13 Michael Granger <ged@FaerieMUD.org>
|
55
138
|
|
56
139
|
* .hgtags:
|
@@ -145,14 +228,14 @@
|
|
145
228
|
Automated merge with ssh://deveiate/Treequel
|
146
229
|
[62e7348050eb]
|
147
230
|
|
148
|
-
* bin/treequel, lib/treequel/model/objectclass.rb:
|
149
|
-
Aesthetic cleanup
|
150
|
-
[78e65cb8f30a]
|
151
|
-
|
152
231
|
* bin/treequel:
|
153
232
|
More logging constant fixes for the treequel shell.
|
154
233
|
[6e159f32ed07]
|
155
234
|
|
235
|
+
* bin/treequel, lib/treequel/model/objectclass.rb:
|
236
|
+
Aesthetic cleanup
|
237
|
+
[78e65cb8f30a]
|
238
|
+
|
156
239
|
2011-01-04 Michael Granger <ged@FaerieMUD.org>
|
157
240
|
|
158
241
|
* bin/treequel:
|
@@ -564,6 +647,13 @@
|
|
564
647
|
* Merging with 316:33a7dcde80a1
|
565
648
|
[72dd41272f6f]
|
566
649
|
|
650
|
+
* .hgsubstate, lib/treequel/model.rb, spec/treequel/branch_spec.rb,
|
651
|
+
spec/treequel/model_spec.rb, spec/treequel/monkeypatches_spec.rb:
|
652
|
+
Spec fixes for RSpec 2.0
|
653
|
+
* Fix RSpec regex workaround for Treequel::Model#respond_to?
|
654
|
+
* Fix monkeypatch Time tests for running outside of PST8PDT
|
655
|
+
[9f9460125077]
|
656
|
+
|
567
657
|
2010-11-09 Michael Granger <ged@FaerieMUD.org>
|
568
658
|
|
569
659
|
* .hgsub, .hgsubstate:
|
@@ -574,17 +664,6 @@
|
|
574
664
|
Fixing subrepo corruption caused by rollback
|
575
665
|
[fc9ae9f5b034]
|
576
666
|
|
577
|
-
2010-11-11 Michael Granger <ged@FaerieMUD.org>
|
578
|
-
|
579
|
-
* .hgsubstate, lib/treequel/model.rb, spec/treequel/branch_spec.rb,
|
580
|
-
spec/treequel/model_spec.rb, spec/treequel/monkeypatches_spec.rb:
|
581
|
-
Spec fixes for RSpec 2.0
|
582
|
-
* Fix RSpec regex workaround for Treequel::Model#respond_to?
|
583
|
-
* Fix monkeypatch Time tests for running outside of PST8PDT
|
584
|
-
[9f9460125077]
|
585
|
-
|
586
|
-
2010-11-09 Michael Granger <ged@FaerieMUD.org>
|
587
|
-
|
588
667
|
* README:
|
589
668
|
Merged with 310:cc7c63ff15a0
|
590
669
|
[c1b750e4e9fc]
|
@@ -600,18 +679,18 @@
|
|
600
679
|
test failure
|
601
680
|
[380662d385e0]
|
602
681
|
|
603
|
-
2010-11-08 Michael Granger <ged@FaerieMUD.org>
|
604
|
-
|
605
|
-
* bin/treequel:
|
606
|
-
Fixed treequel shell's cp to support relative and absolute DNs
|
607
|
-
[7f20ab74d6b1]
|
608
|
-
|
609
682
|
2010-11-03 Michael Granger <ged@FaerieMUD.org>
|
610
683
|
|
611
684
|
* README, README.md:
|
612
685
|
Converting the README to Markdown
|
613
686
|
[cc7c63ff15a0]
|
614
687
|
|
688
|
+
2010-11-08 Michael Granger <ged@FaerieMUD.org>
|
689
|
+
|
690
|
+
* bin/treequel:
|
691
|
+
Fixed treequel shell's cp to support relative and absolute DNs
|
692
|
+
[7f20ab74d6b1]
|
693
|
+
|
615
694
|
2010-10-22 Michael Granger <ged@FaerieMUD.org>
|
616
695
|
|
617
696
|
* lib/treequel/schema.rb, spec/lib/control_behavior.rb,
|
@@ -1283,12 +1362,6 @@
|
|
1283
1362
|
* Re-sorted the OID constants to be in OID order
|
1284
1363
|
[8b2fb7415412]
|
1285
1364
|
|
1286
|
-
2010-01-13 Michael Granger <ged@FaerieMUD.org>
|
1287
|
-
|
1288
|
-
* bin/treequel:
|
1289
|
-
Make treequel shell's 'cat' command error for non-existant entries
|
1290
|
-
[84087b01d473]
|
1291
|
-
|
1292
1365
|
2010-01-24 Michael Granger <ged@FaerieMUD.org>
|
1293
1366
|
|
1294
1367
|
* bin/treequel:
|
@@ -1297,6 +1370,10 @@
|
|
1297
1370
|
|
1298
1371
|
2010-01-13 Michael Granger <ged@FaerieMUD.org>
|
1299
1372
|
|
1373
|
+
* bin/treequel:
|
1374
|
+
Make treequel shell's 'cat' command error for non-existant entries
|
1375
|
+
[84087b01d473]
|
1376
|
+
|
1300
1377
|
* bin/treequel:
|
1301
1378
|
Fix the 'grep' command in the Treequel shell.
|
1302
1379
|
[669a09149f48]
|
@@ -1327,6 +1404,19 @@
|
|
1327
1404
|
Updated build system
|
1328
1405
|
[00ac1bc4e917]
|
1329
1406
|
|
1407
|
+
2009-12-22 Michael Granger <ged@FaerieMUD.org>
|
1408
|
+
|
1409
|
+
* bin/treequel:
|
1410
|
+
Reworked LDIF display colors in the shell to be more visible.
|
1411
|
+
[d77a0bf26034]
|
1412
|
+
|
1413
|
+
* bin/treequel:
|
1414
|
+
Make the treequel shell fall back to plain connect (with a warning)
|
1415
|
+
if TLS fails.
|
1416
|
+
[9aeccec1ee84]
|
1417
|
+
|
1418
|
+
2010-01-07 Michael Granger <ged@FaerieMUD.org>
|
1419
|
+
|
1330
1420
|
* bin/treequel, lib/treequel/branch.rb, lib/treequel/constants.rb,
|
1331
1421
|
lib/treequel/utils.rb:
|
1332
1422
|
Improvements to the treequel shell, fixes for 1.9.1.
|
@@ -1348,15 +1438,6 @@
|
|
1348
1438
|
|
1349
1439
|
2009-12-22 Michael Granger <ged@FaerieMUD.org>
|
1350
1440
|
|
1351
|
-
* bin/treequel:
|
1352
|
-
Reworked LDIF display colors in the shell to be more visible.
|
1353
|
-
[d77a0bf26034]
|
1354
|
-
|
1355
|
-
* bin/treequel:
|
1356
|
-
Make the treequel shell fall back to plain connect (with a warning)
|
1357
|
-
if TLS fails.
|
1358
|
-
[9aeccec1ee84]
|
1359
|
-
|
1360
1441
|
* examples/ldap-monitor.rb, examples/ldap-
|
1361
1442
|
monitor/public/css/master.css, examples/ldap-
|
1362
1443
|
monitor/public/images/card_small.png, examples/ldap-
|
@@ -1377,6 +1458,27 @@
|
|
1377
1458
|
Automated merge with ssh://hg@deveiate/Treequel
|
1378
1459
|
[3bdd645530fe]
|
1379
1460
|
|
1461
|
+
2009-12-18 Michael Granger <ged@FaerieMUD.org>
|
1462
|
+
|
1463
|
+
* Merged with 5fd4033e1556
|
1464
|
+
[9571c9d8e4dd]
|
1465
|
+
|
1466
|
+
2009-12-17 Michael Granger <ged@FaerieMUD.org>
|
1467
|
+
|
1468
|
+
* docs/openldap-oids.txt, lib/treequel/constants.rb,
|
1469
|
+
lib/treequel/controls/contentsync.rb,
|
1470
|
+
lib/treequel/controls/persistentsearch.rb,
|
1471
|
+
lib/treequel/directory.rb:
|
1472
|
+
More controls work, started several more control modules.
|
1473
|
+
* Adding a breakdown of all the controls the OpenLDAP server I have
|
1474
|
+
has, so I know which controls I can test against.
|
1475
|
+
* Added some control constants.
|
1476
|
+
* Added the ContentSyncControl and the PersistentSearchControl.
|
1477
|
+
* Added a Directory#supported_controls method.
|
1478
|
+
[ffc2ebacdfd0]
|
1479
|
+
|
1480
|
+
2009-12-22 Michael Granger <ged@FaerieMUD.org>
|
1481
|
+
|
1380
1482
|
* bin/treequel, examples/ldap-monitor.rb, examples/ldap-
|
1381
1483
|
monitor/public/css/master.css, examples/ldap-
|
1382
1484
|
monitor/public/images/card_small.png, examples/ldap-
|
@@ -1405,25 +1507,6 @@
|
|
1405
1507
|
* Bumped the version to 1.0.2.
|
1406
1508
|
[31c326800cc6]
|
1407
1509
|
|
1408
|
-
2009-12-18 Michael Granger <ged@FaerieMUD.org>
|
1409
|
-
|
1410
|
-
* Merged with 5fd4033e1556
|
1411
|
-
[9571c9d8e4dd]
|
1412
|
-
|
1413
|
-
2009-12-17 Michael Granger <ged@FaerieMUD.org>
|
1414
|
-
|
1415
|
-
* docs/openldap-oids.txt, lib/treequel/constants.rb,
|
1416
|
-
lib/treequel/controls/contentsync.rb,
|
1417
|
-
lib/treequel/controls/persistentsearch.rb,
|
1418
|
-
lib/treequel/directory.rb:
|
1419
|
-
More controls work, started several more control modules.
|
1420
|
-
* Adding a breakdown of all the controls the OpenLDAP server I have
|
1421
|
-
has, so I know which controls I can test against.
|
1422
|
-
* Added some control constants.
|
1423
|
-
* Added the ContentSyncControl and the PersistentSearchControl.
|
1424
|
-
* Added a Directory#supported_controls method.
|
1425
|
-
[ffc2ebacdfd0]
|
1426
|
-
|
1427
1510
|
2009-12-16 Michael Granger <ged@FaerieMUD.org>
|
1428
1511
|
|
1429
1512
|
* Rakefile, lib/treequel/mixins.rb, project.yml:
|
@@ -2518,16 +2601,6 @@
|
|
2518
2601
|
Merged. Someday I'll get the hang of this.
|
2519
2602
|
[a5e715f5f877]
|
2520
2603
|
|
2521
|
-
2009-07-29 Michael Granger <ged@FaerieMUD.org>
|
2522
|
-
|
2523
|
-
* .hgignore, Rakefile, docs/manual/src/index.page,
|
2524
|
-
lib/treequel/filter.rb, project.yml, spec/treequel/filter_spec.rb:
|
2525
|
-
* Adding coverage cache to the ignorefile.
|
2526
|
-
* Added ruby-ldap dependency. Yay!
|
2527
|
-
* More work on the manual.
|
2528
|
-
* Made Treequel::Branch#filter treat a Hash like an array of tuples.
|
2529
|
-
[46e6dce0c011]
|
2530
|
-
|
2531
2604
|
2009-07-28 Michael Granger <ged@FaerieMUD.org>
|
2532
2605
|
|
2533
2606
|
* .hgignore, Rakefile:
|
@@ -2538,6 +2611,16 @@
|
|
2538
2611
|
Manual rewording, .hgignore updates
|
2539
2612
|
[89f74035c67d]
|
2540
2613
|
|
2614
|
+
2009-07-29 Michael Granger <ged@FaerieMUD.org>
|
2615
|
+
|
2616
|
+
* .hgignore, Rakefile, docs/manual/src/index.page,
|
2617
|
+
lib/treequel/filter.rb, project.yml, spec/treequel/filter_spec.rb:
|
2618
|
+
* Adding coverage cache to the ignorefile.
|
2619
|
+
* Added ruby-ldap dependency. Yay!
|
2620
|
+
* More work on the manual.
|
2621
|
+
* Made Treequel::Branch#filter treat a Hash like an array of tuples.
|
2622
|
+
[46e6dce0c011]
|
2623
|
+
|
2541
2624
|
2009-07-27 Michael Granger <ged@FaerieMUD.org>
|
2542
2625
|
|
2543
2626
|
* .hgignore, Rakefile:
|
@@ -2549,10 +2632,6 @@
|
|
2549
2632
|
|
2550
2633
|
2009-07-24 Michael Granger <ged@FaerieMUD.org>
|
2551
2634
|
|
2552
|
-
* .hgsub, .hgsubstate:
|
2553
|
-
Unlinking the subrepo, as it doesn't behave well enough quite yet.
|
2554
|
-
[fc3c3bac2c22]
|
2555
|
-
|
2556
2635
|
* .hgsub, .hgsubstate:
|
2557
2636
|
Merging build system fixes
|
2558
2637
|
[b7a919b2ad5d]
|
@@ -2565,6 +2644,10 @@
|
|
2565
2644
|
Removing subrepo, as it doesn't work quite the way I'd hoped.
|
2566
2645
|
[f631900a9ad8] <build-system-fixes>
|
2567
2646
|
|
2647
|
+
* .hgsub, .hgsubstate:
|
2648
|
+
Unlinking the subrepo, as it doesn't behave well enough quite yet.
|
2649
|
+
[fc3c3bac2c22]
|
2650
|
+
|
2568
2651
|
* .hgignore, .hgsubstate, Rakefile, Rakefile.local, project.yml:
|
2569
2652
|
Initial commit of Mercurial-based tasks
|
2570
2653
|
[65236b2101e5] <build-system-fixes>
|
data/History.md
CHANGED
@@ -1,3 +1,28 @@
|
|
1
|
+
## 1.4.0 [2011-01-31] Michael Granger <ged@FaerieMUD.org>
|
2
|
+
|
3
|
+
Enhancements:
|
4
|
+
|
5
|
+
* Added a new method: Treequel::Directory#connected?
|
6
|
+
* Adding reconnect support to the treequel shell
|
7
|
+
|
8
|
+
Bugfixes:
|
9
|
+
|
10
|
+
* Fixed a bug in Treequel::Branch#copy.
|
11
|
+
* Escape filter metacharacters in simple filter components
|
12
|
+
|
13
|
+
|
14
|
+
## 1.3.2
|
15
|
+
|
16
|
+
Bugfix:
|
17
|
+
|
18
|
+
* Ensure the entry hash that's passed to Treequel::Model#apply_applicable_mixins isn't modified; fixes a bug when modifying a new unsaved Model object.
|
19
|
+
|
20
|
+
|
21
|
+
## 1.3.1 [2011-01-17] Michael Granger <ged@FaerieMUD.org>
|
22
|
+
|
23
|
+
Fixed a bug that caused DN attributes in objects created via Treequel::Model.new_from_entry to be doubled.
|
24
|
+
|
25
|
+
|
1
26
|
## 1.3.0 [2011-01-13] Michael Granger <ged@FaerieMUD.org>
|
2
27
|
|
3
28
|
Enhancements:
|
data/LICENSE
CHANGED
data/README.md
CHANGED
@@ -47,7 +47,7 @@ You can submit bug reports, suggestions, and read more about future plans at
|
|
47
47
|
|
48
48
|
## License
|
49
49
|
|
50
|
-
Copyright (c) 2008-
|
50
|
+
Copyright (c) 2008-2011, Michael Granger and Mahlon E. Smith
|
51
51
|
All rights reserved.
|
52
52
|
|
53
53
|
Redistribution and use in source and binary forms, with or without
|
data/Rakefile
CHANGED
@@ -40,7 +40,7 @@ hoespec = Hoe.spec 'treequel' do
|
|
40
40
|
" - columnize",
|
41
41
|
" - sysexits",
|
42
42
|
'',
|
43
|
-
"You can install
|
43
|
+
"You can install them automatically if you use the --development flag when",
|
44
44
|
"installing Treequel."
|
45
45
|
].join( "\n" )
|
46
46
|
self.spec_extras[:signing_key] = '/Volumes/Keys/ged-private_gem_key.pem'
|
data/bin/treequel
CHANGED
@@ -256,6 +256,13 @@ class Treequel::Shell
|
|
256
256
|
self.save_history
|
257
257
|
|
258
258
|
message "done."
|
259
|
+
|
260
|
+
rescue => err
|
261
|
+
error_message( err.class.name, err.message )
|
262
|
+
err.backtrace.each do |frame|
|
263
|
+
self.log.debug " " + frame
|
264
|
+
end
|
265
|
+
|
259
266
|
ensure
|
260
267
|
system( 'stty', @original_tty_settings.chomp )
|
261
268
|
end
|
@@ -292,15 +299,28 @@ class Treequel::Shell
|
|
292
299
|
else
|
293
300
|
self.handle_missing_cmd( command )
|
294
301
|
end
|
302
|
+
rescue LDAP::ResultError => err
|
303
|
+
case err.message
|
304
|
+
when /can't contact ldap server/i
|
305
|
+
if @dir.connected?
|
306
|
+
error_message( "LDAP connection went away." )
|
307
|
+
else
|
308
|
+
error_message( "Couldn't connect to the server." )
|
309
|
+
end
|
310
|
+
ask_for_confirmation( "Attempt to reconnect?" ) do
|
311
|
+
@dir.reconnect
|
312
|
+
end
|
313
|
+
retry
|
295
314
|
|
296
|
-
|
297
|
-
|
298
|
-
|
299
|
-
|
315
|
+
when /invalid credentials/i
|
316
|
+
error_message( "Authentication failed." )
|
317
|
+
else
|
318
|
+
raise # Re-raise if it's something else
|
300
319
|
end
|
301
320
|
end
|
302
321
|
|
303
322
|
|
323
|
+
|
304
324
|
#########
|
305
325
|
protected
|
306
326
|
#########
|
data/lib/treequel/branch.rb
CHANGED
@@ -440,7 +440,7 @@ class Treequel::Branch
|
|
440
440
|
self.log.debug "Creating a copy of %p at %p" % [ self.dn, newdn ]
|
441
441
|
newbranch = self.class.new( self.directory, newdn )
|
442
442
|
|
443
|
-
attributes = self.entry.merge( attributes )
|
443
|
+
attributes = self.entry.merge( stringify_keys(attributes) )
|
444
444
|
|
445
445
|
self.log.debug " merged attributes: %p" % [ attributes ]
|
446
446
|
self.directory.create( newbranch, attributes )
|
data/lib/treequel/constants.rb
CHANGED
@@ -240,7 +240,7 @@ module Treequel::Constants
|
|
240
240
|
|
241
241
|
### These are inlined for simplicity
|
242
242
|
# NULL = %x00 ; null (0)
|
243
|
-
NULL = '\x00'
|
243
|
+
NUL = NULL = '\x00'
|
244
244
|
|
245
245
|
# SPACE = %x20 ; space (" ")
|
246
246
|
SPACE = '\x20'
|
@@ -588,6 +588,9 @@ module Treequel::Constants
|
|
588
588
|
# escaped = ESC HEX HEX
|
589
589
|
ESCAPED = %r{ #{ESC} [[:xdigit:]]{2} }x
|
590
590
|
|
591
|
+
# characters which must be escaped in filter values
|
592
|
+
UNESCAPED = %r{[#{NUL}#{LPAREN}#{RPAREN}#{ASTERISK}#{ESC}]}
|
593
|
+
|
591
594
|
# valueencoding = 0*(normal / escaped)
|
592
595
|
VALUEENCODING = %r{ (?:#{NORMAL} | #{ESCAPED})* }x
|
593
596
|
|
data/lib/treequel/directory.rb
CHANGED
@@ -237,6 +237,15 @@ class Treequel::Directory
|
|
237
237
|
end
|
238
238
|
|
239
239
|
|
240
|
+
### Returns +true+ if a connection has been established. This does not necessarily mean
|
241
|
+
### that the connection is still valid, it just means it successfully established one
|
242
|
+
### at some point.
|
243
|
+
### @return [Boolean]
|
244
|
+
def connected?
|
245
|
+
return @conn ? true : false
|
246
|
+
end
|
247
|
+
|
248
|
+
|
240
249
|
### Drop the existing connection and establish a new one.
|
241
250
|
### @return [Boolean] +true+ if the connection was re-established
|
242
251
|
### @raise [RuntimeError] if the re-connection failed
|
data/lib/treequel/filter.rb
CHANGED
@@ -196,6 +196,7 @@ class Treequel::Filter
|
|
196
196
|
### greater = ">="
|
197
197
|
### less = "<="
|
198
198
|
class SimpleItemComponent < Treequel::Filter::ItemComponent
|
199
|
+
include Treequel::Constants::Patterns
|
199
200
|
|
200
201
|
# The valid values for +filtertype+ and the equivalent operator
|
201
202
|
FILTERTYPE_OP = {
|
@@ -277,7 +278,12 @@ class Treequel::Filter
|
|
277
278
|
|
278
279
|
### Stringify the component
|
279
280
|
def to_s
|
280
|
-
|
281
|
+
# Escape all the filter metacharacters
|
282
|
+
escaped_val = self.value.to_s.gsub( UNESCAPED ) do |char|
|
283
|
+
'\\' + char.unpack('C*').first.to_s(16)
|
284
|
+
end
|
285
|
+
|
286
|
+
return [ self.attribute, self.filtertype_op, escaped_val ].join
|
281
287
|
end
|
282
288
|
|
283
289
|
end # class SimpleItemComponent
|
@@ -330,7 +336,8 @@ class Treequel::Filter
|
|
330
336
|
### I N S T A N C E M E T H O D S
|
331
337
|
#############################################################
|
332
338
|
|
333
|
-
### Create a new '
|
339
|
+
### Create a new 'substring' item filter component that will match the specified +pattern+
|
340
|
+
### against the given +attribute+.
|
334
341
|
def initialize( attribute, pattern, options=nil )
|
335
342
|
@attribute = attribute
|
336
343
|
@pattern = pattern
|
@@ -591,10 +598,16 @@ class Treequel::Filter
|
|
591
598
|
attribute, value = *expression.args
|
592
599
|
|
593
600
|
# Turn :sn.like( 'bob' ) into (cn~=bob) 'cause it has no asterisks
|
594
|
-
if op == :like
|
595
|
-
|
596
|
-
|
597
|
-
|
601
|
+
if op == :like
|
602
|
+
if value.index( '*' )
|
603
|
+
Treequel.logger.debug \
|
604
|
+
" turning a LIKE expression with an asterisk into a substring filter"
|
605
|
+
return Treequel::Filter::SubstringItemComponent.new( attribute, value )
|
606
|
+
else
|
607
|
+
Treequel.logger.debug \
|
608
|
+
" turning a LIKE expression with no wildcards into an 'approx' filter"
|
609
|
+
equivalent = :approx
|
610
|
+
end
|
598
611
|
end
|
599
612
|
|
600
613
|
return Treequel::Filter::SimpleItemComponent.new( attribute, value, equivalent )
|
@@ -604,20 +617,17 @@ class Treequel::Filter
|
|
604
617
|
return Treequel::Filter::NotComponent.new( contents )
|
605
618
|
|
606
619
|
elsif op == :'not like'
|
607
|
-
equivalent = nil
|
608
|
-
attribute, value = *expression.args
|
609
620
|
Treequel.logger.debug " making a NOT LIKE expression out of: %p" % [ expression ]
|
621
|
+
attribute, value = *expression.args
|
622
|
+
component = nil
|
610
623
|
|
611
|
-
if value
|
612
|
-
Treequel.
|
613
|
-
" turning a NOT LIKE expression with no wildcards into an 'approx' filter"
|
614
|
-
equivalent = :approx
|
624
|
+
if value.index( '*' )
|
625
|
+
component = Treequel::Filter::SubstringItemComponent.new( attribute, value )
|
615
626
|
else
|
616
|
-
|
627
|
+
component = Treequel::Filter::SimpleItemComponent.new( attribute, value, :approx )
|
617
628
|
end
|
618
629
|
|
619
|
-
|
620
|
-
filter = Treequel::Filter.new( comp )
|
630
|
+
filter = Treequel::Filter.new( component )
|
621
631
|
return Treequel::Filter::NotComponent.new( filter )
|
622
632
|
|
623
633
|
elsif LOGICAL_COMPONENTS.key?( op )
|
data/lib/treequel.rb
CHANGED
@@ -53,10 +53,10 @@ end
|
|
53
53
|
module Treequel
|
54
54
|
|
55
55
|
# Library version
|
56
|
-
VERSION = '1.
|
56
|
+
VERSION = '1.4.0'
|
57
57
|
|
58
58
|
# VCS revision
|
59
|
-
REVISION = %q$Revision:
|
59
|
+
REVISION = %q$Revision: 63270598af6b $
|
60
60
|
|
61
61
|
# Common paths for ldap.conf
|
62
62
|
COMMON_LDAP_CONF_PATHS = %w[
|
@@ -351,6 +351,12 @@ describe Treequel::Directory do
|
|
351
351
|
end
|
352
352
|
|
353
353
|
|
354
|
+
it "knows if a connection has been established" do
|
355
|
+
@dir.should be_connected()
|
356
|
+
@dir.instance_variable_set( :@conn, nil )
|
357
|
+
@dir.should_not be_connected()
|
358
|
+
end
|
359
|
+
|
354
360
|
it "can reconnect if its underlying connection goes away" do
|
355
361
|
@conn.stub( :search_ext2 ).and_raise( LDAP::ResultError.new("Can't contact LDAP server") )
|
356
362
|
|
@@ -70,6 +70,11 @@ describe Treequel::Filter do
|
|
70
70
|
Treequel::Filter.new( :uid, 'bigthung' ).to_s.should == '(uid=bigthung)'
|
71
71
|
end
|
72
72
|
|
73
|
+
it "escapes filter metacharacters in simple item equal filters" do
|
74
|
+
Treequel::Filter.new( :nisNetgroupTriple, '(blarney.acme.org,,)' ).to_s.
|
75
|
+
should == '(nisNetgroupTriple=\28blarney.acme.org,,\29)'
|
76
|
+
end
|
77
|
+
|
73
78
|
it "parses a String+value hash as a simple item equal filter" do
|
74
79
|
Treequel::Filter.new( 'uid' => 'bigthung' ).to_s.should == '(uid=bigthung)'
|
75
80
|
end
|
@@ -29,7 +29,6 @@ include Treequel::Constants
|
|
29
29
|
#####################################################################
|
30
30
|
|
31
31
|
describe Treequel, "mixin" do
|
32
|
-
include Treequel::SpecHelpers
|
33
32
|
|
34
33
|
describe Treequel::Loggable, "mixed into a class" do
|
35
34
|
before(:each) do
|
@@ -64,10 +63,6 @@ describe Treequel, "mixin" do
|
|
64
63
|
end
|
65
64
|
end
|
66
65
|
|
67
|
-
#################################################################
|
68
|
-
### E X A M P L E S
|
69
|
-
#################################################################
|
70
|
-
|
71
66
|
describe Treequel::HashUtilities do
|
72
67
|
it "includes a function for stringifying Hash keys" do
|
73
68
|
testhash = {
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: treequel
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
5
|
-
prerelease:
|
4
|
+
hash: 7
|
5
|
+
prerelease:
|
6
6
|
segments:
|
7
7
|
- 1
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 1.
|
8
|
+
- 4
|
9
|
+
- 0
|
10
|
+
version: 1.4.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Michael Granger
|
@@ -36,7 +36,7 @@ cert_chain:
|
|
36
36
|
cmlhXe46pZNJgWKbxZah85jIjx95hR8vOI+NAM5iH9kOqK13DrxacTKPhqj5PjwF
|
37
37
|
-----END CERTIFICATE-----
|
38
38
|
|
39
|
-
date: 2011-01-
|
39
|
+
date: 2011-01-31 00:00:00 -08:00
|
40
40
|
default_executable:
|
41
41
|
dependencies:
|
42
42
|
- !ruby/object:Gem::Dependency
|
@@ -72,35 +72,35 @@ dependencies:
|
|
72
72
|
type: :runtime
|
73
73
|
version_requirements: *id002
|
74
74
|
- !ruby/object:Gem::Dependency
|
75
|
-
name: hoe-
|
75
|
+
name: hoe-yard
|
76
76
|
prerelease: false
|
77
77
|
requirement: &id003 !ruby/object:Gem::Requirement
|
78
78
|
none: false
|
79
79
|
requirements:
|
80
|
-
- -
|
80
|
+
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
hash: 31
|
83
83
|
segments:
|
84
|
+
- 0
|
84
85
|
- 1
|
85
86
|
- 2
|
86
|
-
|
87
|
-
version: 1.2.0
|
87
|
+
version: 0.1.2
|
88
88
|
type: :development
|
89
89
|
version_requirements: *id003
|
90
90
|
- !ruby/object:Gem::Dependency
|
91
|
-
name: hoe-
|
91
|
+
name: hoe-manualgen
|
92
92
|
prerelease: false
|
93
93
|
requirement: &id004 !ruby/object:Gem::Requirement
|
94
94
|
none: false
|
95
95
|
requirements:
|
96
|
-
- -
|
96
|
+
- - ~>
|
97
97
|
- !ruby/object:Gem::Version
|
98
|
-
hash:
|
98
|
+
hash: 29
|
99
99
|
segments:
|
100
100
|
- 0
|
101
|
+
- 0
|
101
102
|
- 1
|
102
|
-
|
103
|
-
version: 0.1.2
|
103
|
+
version: 0.0.1
|
104
104
|
type: :development
|
105
105
|
version_requirements: *id004
|
106
106
|
- !ruby/object:Gem::Dependency
|
@@ -285,7 +285,7 @@ files:
|
|
285
285
|
- spec/treequel/schema/table_spec.rb
|
286
286
|
- spec/treequel/schema_spec.rb
|
287
287
|
- spec/treequel_spec.rb
|
288
|
-
has_rdoc:
|
288
|
+
has_rdoc: true
|
289
289
|
homepage: http://deveiate.org/projects/Treequel
|
290
290
|
licenses:
|
291
291
|
- BSD
|
@@ -298,7 +298,7 @@ post_install_message: |-
|
|
298
298
|
- columnize
|
299
299
|
- sysexits
|
300
300
|
|
301
|
-
You can install
|
301
|
+
You can install them automatically if you use the --development flag when
|
302
302
|
installing Treequel.
|
303
303
|
rdoc_options:
|
304
304
|
- --use-cache
|
@@ -331,7 +331,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
331
331
|
requirements: []
|
332
332
|
|
333
333
|
rubyforge_project: treequel
|
334
|
-
rubygems_version: 1.
|
334
|
+
rubygems_version: 1.4.2
|
335
335
|
signing_key:
|
336
336
|
specification_version: 3
|
337
337
|
summary: Treequel is an LDAP toolkit for Ruby
|
metadata.gz.sig
CHANGED
Binary file
|