mirror of
https://github.com/osmarks/ngircd.git
synced 2025-09-20 19:24:04 +00:00
Compare commits
1286 Commits
branch-0-5
...
rel-14
Author | SHA1 | Date | |
---|---|---|---|
![]() |
68835a1d1a | ||
![]() |
54879b432b | ||
![]() |
d9355d53f8 | ||
![]() |
8c0137a6e0 | ||
![]() |
166ab3925e | ||
![]() |
1f6a5744f6 | ||
![]() |
156569d263 | ||
![]() |
c3a8d6a73e | ||
![]() |
3a7d59c1ac | ||
![]() |
51b88b12f3 | ||
![]() |
ea35ba74b6 | ||
![]() |
2d4361d088 | ||
![]() |
e9e7fc33f1 | ||
![]() |
c09742c518 | ||
![]() |
c56ab96270 | ||
![]() |
0a9608a26f | ||
![]() |
dee89c2355 | ||
![]() |
b8c6dd503f | ||
![]() |
66d6c3c84b | ||
![]() |
2fce4667a8 | ||
![]() |
c6a43fbaf0 | ||
![]() |
3be9c477be | ||
![]() |
d09094812f | ||
![]() |
c5000694d1 | ||
![]() |
2c1b6280fa | ||
![]() |
5a3128243f | ||
![]() |
95e8320ca9 | ||
![]() |
8f46681bc8 | ||
![]() |
1c7b9dbe93 | ||
![]() |
0acef7c598 | ||
![]() |
00c8dfa8be | ||
![]() |
75243ffb37 | ||
![]() |
5468ba3744 | ||
![]() |
eb159e0a8d | ||
![]() |
df3473c9c1 | ||
![]() |
a11e895045 | ||
![]() |
175f0af979 | ||
![]() |
40a0e9abbe | ||
![]() |
0659503afd | ||
![]() |
18efc7469c | ||
![]() |
fd9266df78 | ||
![]() |
0e4e22a7a6 | ||
![]() |
9d20397470 | ||
![]() |
307cdce908 | ||
![]() |
dc9f42dc3c | ||
![]() |
a971047bc5 | ||
![]() |
6500d443fc | ||
![]() |
d26a283ea9 | ||
![]() |
4b83a23d9d | ||
![]() |
8a94ec9728 | ||
![]() |
e5fea5380d | ||
![]() |
9a82ca0d6b | ||
![]() |
e573f54b0c | ||
![]() |
e070d93f64 | ||
![]() |
1519afa391 | ||
![]() |
85ce82e504 | ||
![]() |
83c699d5a5 | ||
![]() |
56cf95278e | ||
![]() |
d0b2526a01 | ||
![]() |
7cf9d93aee | ||
![]() |
ffc5f93ef5 | ||
![]() |
97d97ef5c4 | ||
![]() |
2eb564ccaa | ||
![]() |
14baf64f41 | ||
![]() |
4c113d8850 | ||
![]() |
3243d9ee44 | ||
![]() |
672b391523 | ||
![]() |
0eda085f1e | ||
![]() |
2cc21caf32 | ||
![]() |
7b69bc2ae8 | ||
![]() |
7ad167f4c4 | ||
![]() |
920d0636ff | ||
![]() |
54e6a2dce5 | ||
![]() |
b01a9bd864 | ||
![]() |
9f067a059d | ||
![]() |
5a91d62100 | ||
![]() |
3a5b7b63ae | ||
![]() |
9308541e6d | ||
![]() |
027cf22267 | ||
![]() |
125c05fba0 | ||
![]() |
fb19b05e1e | ||
![]() |
34b2f0085d | ||
![]() |
ce2541a826 | ||
![]() |
d44a7dac26 | ||
![]() |
475ce1e93c | ||
![]() |
0cba8f362a | ||
![]() |
afd65bc728 | ||
![]() |
f92a614a35 | ||
![]() |
ec0b405d9d | ||
![]() |
1d6dcb25c4 | ||
![]() |
178f9cbdac | ||
![]() |
6356418ae5 | ||
![]() |
28e9888764 | ||
![]() |
3afa0e0658 | ||
![]() |
3913de3cff | ||
![]() |
91e87a3705 | ||
![]() |
71e9ac486f | ||
![]() |
d93030ad27 | ||
![]() |
4e125fb67c | ||
![]() |
33f32dbd67 | ||
![]() |
74aac88dbf | ||
![]() |
0337b1ac1e | ||
![]() |
02d7623074 | ||
![]() |
c5342fb467 | ||
![]() |
557be8c56b | ||
![]() |
687784d276 | ||
![]() |
92603f7c80 | ||
![]() |
d070ec08ab | ||
![]() |
a60465be3e | ||
![]() |
14048c4717 | ||
![]() |
f199d63724 | ||
![]() |
4f759d8113 | ||
![]() |
6bc2d3d06e | ||
![]() |
a5735f68d7 | ||
![]() |
13f1d57e84 | ||
![]() |
068d43352d | ||
![]() |
e56bd8ff89 | ||
![]() |
2fce881d96 | ||
![]() |
ef3327d372 | ||
![]() |
ebf5edfd87 | ||
![]() |
bdd44eb0ab | ||
![]() |
c997e04325 | ||
![]() |
2c2c93e311 | ||
![]() |
41a23d20e4 | ||
![]() |
c769cbecb6 | ||
![]() |
707cc42dec | ||
![]() |
30f1ed211d | ||
![]() |
415ebc04a2 | ||
![]() |
598df07584 | ||
![]() |
e4b4bb5e71 | ||
![]() |
dfc3de131c | ||
![]() |
338c643250 | ||
![]() |
5af91fc005 | ||
![]() |
0ca8156efd | ||
![]() |
ccbbd7d1a5 | ||
![]() |
e5cf73b9ee | ||
![]() |
5df56111c4 | ||
![]() |
e5174c629c | ||
![]() |
3358ad07d7 | ||
![]() |
318c8b238b | ||
![]() |
f8381aafb4 | ||
![]() |
d4eb55c79f | ||
![]() |
2546a13ad2 | ||
![]() |
b92a7627f3 | ||
![]() |
258143897c | ||
![]() |
477f2fd9e7 | ||
![]() |
e37080400b | ||
![]() |
3f01324160 | ||
![]() |
4467d127c2 | ||
![]() |
2b14234abc | ||
![]() |
b945726ac2 | ||
![]() |
da160d020e | ||
![]() |
b95345731e | ||
![]() |
71562ebe57 | ||
![]() |
258e39e89f | ||
![]() |
e142c50ae6 | ||
![]() |
a84f7dcee5 | ||
![]() |
8644cbf197 | ||
![]() |
4c121f277d | ||
![]() |
12f5b0579b | ||
![]() |
6f7b669bec | ||
![]() |
951314cb79 | ||
![]() |
d360871394 | ||
![]() |
b90f71ca2a | ||
![]() |
d060e90de0 | ||
![]() |
73f7201ab3 | ||
![]() |
956bbe2c28 | ||
![]() |
e19f7a8c19 | ||
![]() |
4ed2cb1a02 | ||
![]() |
818a206a42 | ||
![]() |
1d9067b019 | ||
![]() |
5d87f6ba80 | ||
![]() |
7cf187c09f | ||
![]() |
9486bc7465 | ||
![]() |
d02b083543 | ||
![]() |
70254a5553 | ||
![]() |
b1d38de4d2 | ||
![]() |
aad49bd260 | ||
![]() |
d90cc7add0 | ||
![]() |
149859c5fe | ||
![]() |
d9c26f3aeb | ||
![]() |
0510bbe958 | ||
![]() |
12cd554af1 | ||
![]() |
5cf5ba31eb | ||
![]() |
75b719a0c8 | ||
![]() |
4e56e5341f | ||
![]() |
3895b42d1b | ||
![]() |
6c81ffaece | ||
![]() |
97cc58fb13 | ||
![]() |
c63d8fd051 | ||
![]() |
3d8eda9c86 | ||
![]() |
3283d275ba | ||
![]() |
faf9b6ea16 | ||
![]() |
452fb28394 | ||
![]() |
0428a1c4ea | ||
![]() |
98a8ea105c | ||
![]() |
83bfdddf99 | ||
![]() |
2a790861a1 | ||
![]() |
4e507881f3 | ||
![]() |
f7c2e8223f | ||
![]() |
60acc62af7 | ||
![]() |
530112b114 | ||
![]() |
6cfc56064e | ||
![]() |
4a81367dac | ||
![]() |
8c425945a2 | ||
![]() |
bb6ee46892 | ||
![]() |
9194319399 | ||
![]() |
33b1204349 | ||
![]() |
09968ee843 | ||
![]() |
523a6fad09 | ||
![]() |
54b17fc201 | ||
![]() |
25f48a2a34 | ||
![]() |
22fa782be7 | ||
![]() |
2f6d7a649c | ||
![]() |
7df90846e1 | ||
![]() |
92a9092208 | ||
![]() |
a0efcdccfa | ||
![]() |
012aeca32b | ||
![]() |
c4a505d3a8 | ||
![]() |
8df445316a | ||
![]() |
11af32466f | ||
![]() |
5538115537 | ||
![]() |
b8643477ba | ||
![]() |
796dcf6a62 | ||
![]() |
6b0c094809 | ||
![]() |
b36fc3b095 | ||
![]() |
2dd51a98e4 | ||
![]() |
761ae2b1a4 | ||
![]() |
87cae1465b | ||
![]() |
b7135ea76a | ||
![]() |
248f8e0b70 | ||
![]() |
7b33424c13 | ||
![]() |
7c82cc236b | ||
![]() |
307f8abd74 | ||
![]() |
bc63064d5c | ||
![]() |
be844d74d3 | ||
![]() |
637d739285 | ||
![]() |
66e68de16a | ||
![]() |
7f44a2ad1c | ||
![]() |
abb1abeb77 | ||
![]() |
ab1f48a346 | ||
![]() |
feb31e4200 | ||
![]() |
c31ad221a6 | ||
![]() |
44cdf1b1ca | ||
![]() |
e710e8ae37 | ||
![]() |
89ba1bdcba | ||
![]() |
0250acc50b | ||
![]() |
ec80cc99c6 | ||
![]() |
5147b675cb | ||
![]() |
ddecfcd831 | ||
![]() |
2f71fbb2a1 | ||
![]() |
1784180bf3 | ||
![]() |
634ef8c131 | ||
![]() |
4d152b771e | ||
![]() |
c634303765 | ||
![]() |
cb0d594e61 | ||
![]() |
000a227a74 | ||
![]() |
6bd35bf090 | ||
![]() |
3022d7cff3 | ||
![]() |
f86ce17f1c | ||
![]() |
42db159d26 | ||
![]() |
59b19ea6a3 | ||
![]() |
4add9c29ed | ||
![]() |
d1364ab488 | ||
![]() |
56256535c5 | ||
![]() |
35b6f3997c | ||
![]() |
463c5cb7c5 | ||
![]() |
7548aa089c | ||
![]() |
478a8c01f9 | ||
![]() |
61e6b5c0aa | ||
![]() |
91a6fffaa0 | ||
![]() |
2ce5b734bd | ||
![]() |
f99f9a8f02 | ||
![]() |
4715ccf9ca | ||
![]() |
8974e90552 | ||
![]() |
2fe13f0a45 | ||
![]() |
20ce56cc5b | ||
![]() |
47a0379e2b | ||
![]() |
37563537a9 | ||
![]() |
82d32ffb28 | ||
![]() |
024588dbe7 | ||
![]() |
47ca178a21 | ||
![]() |
12db0bdc4f | ||
![]() |
53b98fd7e9 | ||
![]() |
c7d4d85666 | ||
![]() |
4659dae6eb | ||
![]() |
68f896eee0 | ||
![]() |
06bfb3adfb | ||
![]() |
2f305331a1 | ||
![]() |
ad7361dfe0 | ||
![]() |
e47c9d750f | ||
![]() |
001c00b273 | ||
![]() |
b861f536b2 | ||
![]() |
877bcc55f2 | ||
![]() |
8f162f4e17 | ||
![]() |
089ca21b3d | ||
![]() |
137a139112 | ||
![]() |
b160f574de | ||
![]() |
d223b587e4 | ||
![]() |
77939c382d | ||
![]() |
f586052f2b | ||
![]() |
d4ed056147 | ||
![]() |
9021ea2070 | ||
![]() |
640367e886 | ||
![]() |
4b9e52eb4d | ||
![]() |
69081851ac | ||
![]() |
efcca62a35 | ||
![]() |
cd65e0a56e | ||
![]() |
2275add327 | ||
![]() |
fd1091541b | ||
![]() |
5675be4cd9 | ||
![]() |
f1486e6a53 | ||
![]() |
22a9ed6694 | ||
![]() |
ddf56cbe5f | ||
![]() |
255edf7eab | ||
![]() |
5930a29197 | ||
![]() |
07d8da60de | ||
![]() |
44afe042d1 | ||
![]() |
a073bc89c4 | ||
![]() |
63e89ceb21 | ||
![]() |
09416f36bf | ||
![]() |
508b55126f | ||
![]() |
9f65979979 | ||
![]() |
2e34ddae53 | ||
![]() |
09deb857ce | ||
![]() |
8c14d397ba | ||
![]() |
99eab1e216 | ||
![]() |
c93d089736 | ||
![]() |
429f85b77a | ||
![]() |
ea2a4b3370 | ||
![]() |
f9b9850662 | ||
![]() |
1b852fce72 | ||
![]() |
82aaffe55d | ||
![]() |
40199e0b56 | ||
![]() |
95b7dbcc18 | ||
![]() |
43f8d149bb | ||
![]() |
949a4ef793 | ||
![]() |
f74781647a | ||
![]() |
5c78230283 | ||
![]() |
ee568cc444 | ||
![]() |
2d9a3ec484 | ||
![]() |
262d945284 | ||
![]() |
f6ce2d557a | ||
![]() |
4243cae985 | ||
![]() |
40226d26b2 | ||
![]() |
d2f7d3087d | ||
![]() |
3f1e03edd9 | ||
![]() |
23e7f7f0dd | ||
![]() |
f36746a4d0 | ||
![]() |
8cb0e3af68 | ||
![]() |
eb3ddace46 | ||
![]() |
5040d56489 | ||
![]() |
fb0fbe908d | ||
![]() |
fa7bb2790a | ||
![]() |
5877bca4bc | ||
![]() |
37602d1523 | ||
![]() |
a09034563a | ||
![]() |
5b35b101f2 | ||
![]() |
058d3085a9 | ||
![]() |
74883f57da | ||
![]() |
018e351630 | ||
![]() |
6e105bf87e | ||
![]() |
61966a6088 | ||
![]() |
27c96632f1 | ||
![]() |
4108e16be6 | ||
![]() |
4e02bdc322 | ||
![]() |
ca5e09865e | ||
![]() |
fb0c7ad252 | ||
![]() |
d8950c5dd0 | ||
![]() |
257312b102 | ||
![]() |
27d947fb7d | ||
![]() |
bed98979dc | ||
![]() |
bddb4914b4 | ||
![]() |
4c6c6ecf0e | ||
![]() |
a2f5a05ff8 | ||
![]() |
639eb40035 | ||
![]() |
0d6f9d4e3e | ||
![]() |
147de9dfa9 | ||
![]() |
f6e729443e | ||
![]() |
e426c131c7 | ||
![]() |
b9661ae65d | ||
![]() |
035f7fb2fe | ||
![]() |
1b2c228de5 | ||
![]() |
4d7d1d23be | ||
![]() |
e2aacff7d4 | ||
![]() |
0eccdbc137 | ||
![]() |
939ee6a39b | ||
![]() |
8423b89996 | ||
![]() |
7d87318b04 | ||
![]() |
83caef4598 | ||
![]() |
7378860aea | ||
![]() |
6eb3f3055d | ||
![]() |
c888c81adf | ||
![]() |
fac4682212 | ||
![]() |
47026e14ce | ||
![]() |
63626449f8 | ||
![]() |
184eb1c54b | ||
![]() |
5ce6bf28d1 | ||
![]() |
f1f94f07e1 | ||
![]() |
c8fd051e06 | ||
![]() |
3e8978d836 | ||
![]() |
9a2d4eef44 | ||
![]() |
0d5fc770d3 | ||
![]() |
5590f8624b | ||
![]() |
fdc7ae22e9 | ||
![]() |
179d61c588 | ||
![]() |
47e581e453 | ||
![]() |
65573d7a07 | ||
![]() |
155056f386 | ||
![]() |
3833f8aae3 | ||
![]() |
161340d486 | ||
![]() |
e9e1fa459b | ||
![]() |
581f5479a2 | ||
![]() |
00ab67dcdb | ||
![]() |
dd3a3bc603 | ||
![]() |
0a3f562f36 | ||
![]() |
9dfd42a7e6 | ||
![]() |
a65eb347ec | ||
![]() |
2af87e9152 | ||
![]() |
d0045afb09 | ||
![]() |
1f5bdaec84 | ||
![]() |
185004cb30 | ||
![]() |
4a2eea2939 | ||
![]() |
6d3686e73d | ||
![]() |
5d0ba011c7 | ||
![]() |
87f4b1c6f6 | ||
![]() |
8067bab106 | ||
![]() |
097c7bd741 | ||
![]() |
c7bd9da446 | ||
![]() |
3d0ab6bd2e | ||
![]() |
bebfbedf3f | ||
![]() |
cba9270845 | ||
![]() |
2a9ffe7037 | ||
![]() |
4000e01b28 | ||
![]() |
68d3d36dd6 | ||
![]() |
eedfc35bbc | ||
![]() |
d39d3ec4b9 | ||
![]() |
79dfd60a0c | ||
![]() |
29ad5e0d94 | ||
![]() |
7e8ac0afcf | ||
![]() |
93df629b69 | ||
![]() |
66060dbce9 | ||
![]() |
0701afedee | ||
![]() |
a17745d6d7 | ||
![]() |
1249acfdba | ||
![]() |
c8fb6a2258 | ||
![]() |
7215737038 | ||
![]() |
6eb2e37234 | ||
![]() |
fb9707de98 | ||
![]() |
db9afbbf0e | ||
![]() |
e1b9409e63 | ||
![]() |
4b2f966b7e | ||
![]() |
a293088027 | ||
![]() |
bd043449f2 | ||
![]() |
0570e13cac | ||
![]() |
6b21249151 | ||
![]() |
4f8d646e2a | ||
![]() |
ac55a80d9f | ||
![]() |
bc09a3e487 | ||
![]() |
ff218617db | ||
![]() |
b65358b17c | ||
![]() |
e9f3e69f36 | ||
![]() |
5b2364b236 | ||
![]() |
4db29b0076 | ||
![]() |
0aae3ec5d7 | ||
![]() |
468a1c7767 | ||
![]() |
ab3ac4e466 | ||
![]() |
4d18ac83a2 | ||
![]() |
660b529c10 | ||
![]() |
565129f992 | ||
![]() |
b2a3bc3257 | ||
![]() |
bcf8a5bee6 | ||
![]() |
fc4cd39202 | ||
![]() |
b5b7c7f174 | ||
![]() |
6444442931 | ||
![]() |
e899c75d7e | ||
![]() |
cae9a3aee5 | ||
![]() |
e708790566 | ||
![]() |
0dd0015d16 | ||
![]() |
dd3d2e2c39 | ||
![]() |
9275dc4dc4 | ||
![]() |
af9123fd82 | ||
![]() |
ca32c1b311 | ||
![]() |
342f20f889 | ||
![]() |
a5b5a6a99a | ||
![]() |
c65343e719 | ||
![]() |
a7197f579c | ||
![]() |
30c11b2313 | ||
![]() |
b7033e1478 | ||
![]() |
db992975eb | ||
![]() |
c12dc45f17 | ||
![]() |
a2e4eb5aaf | ||
![]() |
58b8fb5d12 | ||
![]() |
8efeae1714 | ||
![]() |
21ad5dcfff | ||
![]() |
4074fd9149 | ||
![]() |
2f105b1c0a | ||
![]() |
a2cdc08c39 | ||
![]() |
e728bd2e1a | ||
![]() |
12e288c062 | ||
![]() |
733e15bb64 | ||
![]() |
99544e8d5d | ||
![]() |
f36337fab3 | ||
![]() |
1a46b37bd5 | ||
![]() |
5f87474a74 | ||
![]() |
6434d0b23e | ||
![]() |
d5c5d2a37f | ||
![]() |
ac96fe5877 | ||
![]() |
a6d1d26a43 | ||
![]() |
c2f5399b51 | ||
![]() |
ae6e6616a6 | ||
![]() |
a5915f75c9 | ||
![]() |
f2ba8abec5 | ||
![]() |
701c259394 | ||
![]() |
a32b404863 | ||
![]() |
b15d906dff | ||
![]() |
1c14e2e0a2 | ||
![]() |
77f54693ef | ||
![]() |
b61407713d | ||
![]() |
b120c2a271 | ||
![]() |
51ccb5928a | ||
![]() |
890c3d9d72 | ||
![]() |
84706af7fe | ||
![]() |
46a191caf6 | ||
![]() |
20ff63a8a1 | ||
![]() |
21a067e0b1 | ||
![]() |
8c7521af25 | ||
![]() |
e96b4aad2e | ||
![]() |
2e794a6943 | ||
![]() |
1e9e16fa3b | ||
![]() |
6ecccd2644 | ||
![]() |
9db49e8f2c | ||
![]() |
74cb2e2768 | ||
![]() |
e5097bf2e6 | ||
![]() |
3237d28bfb | ||
![]() |
317841529b | ||
![]() |
68dc35b548 | ||
![]() |
d6e6350523 | ||
![]() |
7036111a6c | ||
![]() |
987559e46d | ||
![]() |
fca29bfa23 | ||
![]() |
63db3daafe | ||
![]() |
2e858755c5 | ||
![]() |
b682a5e485 | ||
![]() |
efbfe4ae83 | ||
![]() |
c92e57fec3 | ||
![]() |
ca130e6db6 | ||
![]() |
248d75e566 | ||
![]() |
4715b17106 | ||
![]() |
70facb7f6e | ||
![]() |
76604f847a | ||
![]() |
c7693f625e | ||
![]() |
e50d049074 | ||
![]() |
dd003e23b7 | ||
![]() |
178b564c51 | ||
![]() |
b976ec032f | ||
![]() |
8916b201fa | ||
![]() |
ead79d3e39 | ||
![]() |
0e2f5a4f3d | ||
![]() |
78692f1e87 | ||
![]() |
02b0a51517 | ||
![]() |
a874c26c25 | ||
![]() |
1eca0aea4f | ||
![]() |
7b5a1bbe3c | ||
![]() |
b88e97f193 | ||
![]() |
6b4ecf8c83 | ||
![]() |
6093af49d5 | ||
![]() |
0d180a913f | ||
![]() |
60ae9c827e | ||
![]() |
c857e9c887 | ||
![]() |
579fce1831 | ||
![]() |
2bf77fb0c3 | ||
![]() |
774c6cda4d | ||
![]() |
afef7dee82 | ||
![]() |
7eca418465 | ||
![]() |
ebbf92898e | ||
![]() |
733ef4c815 | ||
![]() |
e5a19fa3a0 | ||
![]() |
ccb747cb3b | ||
![]() |
9a6b6f527b | ||
![]() |
43d644ed92 | ||
![]() |
eeccc193dd | ||
![]() |
0e3ce63ec1 | ||
![]() |
0c33f46fc2 | ||
![]() |
117a9e21e7 | ||
![]() |
162338b8c8 | ||
![]() |
de395db8e3 | ||
![]() |
dbea187373 | ||
![]() |
d81dab99fa | ||
![]() |
9dc5e50226 | ||
![]() |
c06c815c28 | ||
![]() |
04169f34cf | ||
![]() |
aec535c8b6 | ||
![]() |
2d4dd33627 | ||
![]() |
b0699efdab | ||
![]() |
1ca8bb5255 | ||
![]() |
bc2dac3c74 | ||
![]() |
94dd7fa7d6 | ||
![]() |
fcf65beea4 | ||
![]() |
1cf8ccd8fe | ||
![]() |
74424cb1a5 | ||
![]() |
5c20474fdb | ||
![]() |
8b0ac2306e | ||
![]() |
5195555c5a | ||
![]() |
a4660f40db | ||
![]() |
9fa9c1fdda | ||
![]() |
cac9f279fa | ||
![]() |
517321807e | ||
![]() |
ae98008c1c | ||
![]() |
45404a1644 | ||
![]() |
50338126e0 | ||
![]() |
8ac701d6c8 | ||
![]() |
158bf554c3 | ||
![]() |
9c3c7e5a09 | ||
![]() |
cd0dc8627d | ||
![]() |
44fdde7610 | ||
![]() |
95f8b963a6 | ||
![]() |
1aeaf64c66 | ||
![]() |
06caecb0c4 | ||
![]() |
b1c14598e1 | ||
![]() |
7f0d101184 | ||
![]() |
9f247ebd5a | ||
![]() |
dd9b4bc956 | ||
![]() |
6f97dd4938 | ||
![]() |
a02f25a810 | ||
![]() |
aa25cd7da2 | ||
![]() |
70fcdf1b5c | ||
![]() |
dfe662ad45 | ||
![]() |
7daa7fb278 | ||
![]() |
e7c2c86aee | ||
![]() |
c4bc2114c9 | ||
![]() |
129a22a29b | ||
![]() |
8304210c06 | ||
![]() |
aee48a3b38 | ||
![]() |
77faf14b29 | ||
![]() |
8b17579e60 | ||
![]() |
b4363162ce | ||
![]() |
873edc6311 | ||
![]() |
6ed37415fc | ||
![]() |
55fadbfb1d | ||
![]() |
ca8ab38cac | ||
![]() |
dec7eba531 | ||
![]() |
b0ae15e01d | ||
![]() |
43ba1bc805 | ||
![]() |
811ac48bd2 | ||
![]() |
e936a79f6b | ||
![]() |
0545288ebd | ||
![]() |
e635ed43bf | ||
![]() |
4d0b03b423 | ||
![]() |
f6df13d5f8 | ||
![]() |
f56a1bdf20 | ||
![]() |
9dfcc6504e | ||
![]() |
a822153309 | ||
![]() |
49f5a4d454 | ||
![]() |
326607eea1 | ||
![]() |
bfba1f37ed | ||
![]() |
374f90f392 | ||
![]() |
8adff59223 | ||
![]() |
27d93d7d8c | ||
![]() |
8a2ed0a75f | ||
![]() |
5fdd5be12b | ||
![]() |
795802f2b0 | ||
![]() |
1869766331 | ||
![]() |
1d08d51e2e | ||
![]() |
5e929effca | ||
![]() |
e618041168 | ||
![]() |
e7f8782831 | ||
![]() |
4ef172d603 | ||
![]() |
490c9d04d7 | ||
![]() |
8579b2a1e5 | ||
![]() |
3da942e237 | ||
![]() |
bcb6cf3ffa | ||
![]() |
972b07ff29 | ||
![]() |
ba19fb8ff4 | ||
![]() |
8d8b133bdf | ||
![]() |
ec30cd4e5f | ||
![]() |
f2fbf206b6 | ||
![]() |
1fdd5478c6 | ||
![]() |
9537542647 | ||
![]() |
0993ff81bb | ||
![]() |
894cd2cd68 | ||
![]() |
c16d1b03aa | ||
![]() |
451315643f | ||
![]() |
d77182e7a6 | ||
![]() |
8edeed8418 | ||
![]() |
112102b10c | ||
![]() |
ae63ed04c5 | ||
![]() |
85acb82469 | ||
![]() |
51d09fb4f7 | ||
![]() |
8308c170db | ||
![]() |
07fe19889b | ||
![]() |
0c293ae988 | ||
![]() |
18c92d9de7 | ||
![]() |
2440ed080c | ||
![]() |
669da58715 | ||
![]() |
39f1ddd9d0 | ||
![]() |
34e912d9f2 | ||
![]() |
44172a8c7f | ||
![]() |
a6d7fb8739 | ||
![]() |
d16ce5a735 | ||
![]() |
a40a026d15 | ||
![]() |
6c5f4beb53 | ||
![]() |
26b0ddf200 | ||
![]() |
b6690df2be | ||
![]() |
6dacec7ded | ||
![]() |
429b5f3ec9 | ||
![]() |
81bacda627 | ||
![]() |
6960cb4c38 | ||
![]() |
7b61b34c56 | ||
![]() |
386d3b9e67 | ||
![]() |
5049c5c694 | ||
![]() |
292879aca4 | ||
![]() |
dcb9e2a004 | ||
![]() |
0d10c60b31 | ||
![]() |
08e0b277bc | ||
![]() |
58736b3902 | ||
![]() |
f7354cdf28 | ||
![]() |
196f27c4ad | ||
![]() |
c1f32e8214 | ||
![]() |
eee2762852 | ||
![]() |
c79fa28a66 | ||
![]() |
1e692e5890 | ||
![]() |
ceafdf109b | ||
![]() |
450251f082 | ||
![]() |
ceef058065 | ||
![]() |
b04a526a19 | ||
![]() |
2f195a07b2 | ||
![]() |
f38eeedfd7 | ||
![]() |
8ca1e4d548 | ||
![]() |
e07cc4bb63 | ||
![]() |
c5bdd86f96 | ||
![]() |
aa26e2ef36 | ||
![]() |
9445962237 | ||
![]() |
6b898b63f0 | ||
![]() |
f7a4d03ba2 | ||
![]() |
ade1e2eb7b | ||
![]() |
a9a605de3e | ||
![]() |
7ec11de523 | ||
![]() |
18eb92a72b | ||
![]() |
9ddb934784 | ||
![]() |
4f8ac179bf | ||
![]() |
02b8e51562 | ||
![]() |
d27196e334 | ||
![]() |
3edaa35d49 | ||
![]() |
88258070c4 | ||
![]() |
beb4edd3cf | ||
![]() |
364ff7087d | ||
![]() |
0b3ee07a2a | ||
![]() |
a49a580a77 | ||
![]() |
7080e9f83c | ||
![]() |
59a48bfa1f | ||
![]() |
42e8063a32 | ||
![]() |
c23bbe6b65 | ||
![]() |
d8f47ed195 | ||
![]() |
d7c975e8d8 | ||
![]() |
bf21dd1578 | ||
![]() |
9013f56451 | ||
![]() |
3012c232eb | ||
![]() |
26390c60fb | ||
![]() |
cdb039672c | ||
![]() |
7281b8dd4d | ||
![]() |
39fc76c4e4 | ||
![]() |
a6d51c3a9e | ||
![]() |
18b2227a0a | ||
![]() |
47701feb08 | ||
![]() |
59b903f3bb | ||
![]() |
d433eb3896 | ||
![]() |
c1e9841118 | ||
![]() |
dd59820051 | ||
![]() |
967476799f | ||
![]() |
6b1e322865 | ||
![]() |
1d8da4b525 | ||
![]() |
292c7bd4c0 | ||
![]() |
558fe6b453 | ||
![]() |
bed119c9e5 | ||
![]() |
64d330b726 | ||
![]() |
cc25c52048 | ||
![]() |
233210b906 | ||
![]() |
f68e92eb9a | ||
![]() |
b225081c2b | ||
![]() |
30bbc5e1e1 | ||
![]() |
0c07eb71a7 | ||
![]() |
0b1202cd9e | ||
![]() |
8212662d9d | ||
![]() |
f697923c48 | ||
![]() |
af77ce70b6 | ||
![]() |
507a9e9cb3 | ||
![]() |
779446298c | ||
![]() |
cb76d96efb | ||
![]() |
de1489b39b | ||
![]() |
5155e1c67a | ||
![]() |
1e9a958324 | ||
![]() |
56227abc5e | ||
![]() |
f9e651b333 | ||
![]() |
bdaf53e799 | ||
![]() |
33f4e6763b | ||
![]() |
eaa550d690 | ||
![]() |
f275c66e95 | ||
![]() |
17fffea873 | ||
![]() |
1e3363d2a4 | ||
![]() |
6667bb6b77 | ||
![]() |
b90bedbcb2 | ||
![]() |
c2a154a33e | ||
![]() |
6bbc086760 | ||
![]() |
bb98fd8c85 | ||
![]() |
e9b0ec9148 | ||
![]() |
c53903eb3f | ||
![]() |
57c7e23622 | ||
![]() |
cdb694aeb3 | ||
![]() |
6cafa16a56 | ||
![]() |
5589ebd9c3 | ||
![]() |
f645e5b62e | ||
![]() |
ad07c94c8d | ||
![]() |
5a9c04619f | ||
![]() |
ed94d5d5cd | ||
![]() |
ea076a28f2 | ||
![]() |
c9ccb66944 | ||
![]() |
cb6279f102 | ||
![]() |
b79b315dd4 | ||
![]() |
c40592d2ce | ||
![]() |
05170bc94c | ||
![]() |
07ad774f0a | ||
![]() |
a8da1afe05 | ||
![]() |
ff2c1efae8 | ||
![]() |
05e2c0f048 | ||
![]() |
d329a961bd | ||
![]() |
606cdb69bf | ||
![]() |
a5695e7ef8 | ||
![]() |
2978b5edff | ||
![]() |
be79fabcbf | ||
![]() |
ec2f16fa16 | ||
![]() |
7b6e26628a | ||
![]() |
2981fe9eb7 | ||
![]() |
20d002e155 | ||
![]() |
cfe6356531 | ||
![]() |
e33ab90379 | ||
![]() |
d8f3c2b42b | ||
![]() |
3debe00581 | ||
![]() |
eb6113fc33 | ||
![]() |
166c610957 | ||
![]() |
b9f16c9635 | ||
![]() |
1ed708ef39 | ||
![]() |
5e4124d38d | ||
![]() |
0d00ce6e38 | ||
![]() |
057df41a9b | ||
![]() |
5eb89619d6 | ||
![]() |
6e03626eed | ||
![]() |
d9efbe80e1 | ||
![]() |
da9456dbca | ||
![]() |
ac9390f08c | ||
![]() |
3f602e5a25 | ||
![]() |
6647da58fc | ||
![]() |
225a338139 | ||
![]() |
bfdf17ff32 | ||
![]() |
260b8e5f36 | ||
![]() |
9a009b24da | ||
![]() |
83765a5a34 | ||
![]() |
bdc08ae28e | ||
![]() |
34ede2a91a | ||
![]() |
0424747e95 | ||
![]() |
8d5e170091 | ||
![]() |
68ee133f87 | ||
![]() |
27cd1e0d05 | ||
![]() |
3dc4c92553 | ||
![]() |
188e95f680 | ||
![]() |
c5f4e9d095 | ||
![]() |
e541da2a8f | ||
![]() |
e55399c667 | ||
![]() |
e7102559b9 | ||
![]() |
32f8eb46ee | ||
![]() |
0e01a37a69 | ||
![]() |
927e626f03 | ||
![]() |
277a048f4f | ||
![]() |
dd0b37690b | ||
![]() |
83194a23a3 | ||
![]() |
a1ff081b8a | ||
![]() |
e1c70a3c93 | ||
![]() |
c43d47d69c | ||
![]() |
bbf978dbcf | ||
![]() |
090756523e | ||
![]() |
8497d28fba | ||
![]() |
cef95681ff | ||
![]() |
52a24c4bbd | ||
![]() |
e2968dd98d | ||
![]() |
79b9592f27 | ||
![]() |
0551f688f6 | ||
![]() |
c74ac55832 | ||
![]() |
b4dc216db3 | ||
![]() |
cbf87971a4 | ||
![]() |
4d656d12e9 | ||
![]() |
da78dc4785 | ||
![]() |
bd52d4e49c | ||
![]() |
e0345e5e0a | ||
![]() |
c1dd86d702 | ||
![]() |
b25faf3c2a | ||
![]() |
384d6b894a | ||
![]() |
a061668b1a | ||
![]() |
489d8c5cd0 | ||
![]() |
daa996f177 | ||
![]() |
7deacbaa11 | ||
![]() |
c3dfd63bf3 | ||
![]() |
f5b91cd03d | ||
![]() |
8e43b16d22 | ||
![]() |
4ef6dae1cd | ||
![]() |
0b91df05e0 | ||
![]() |
feafb6cb2e | ||
![]() |
0391d35a67 | ||
![]() |
a93b4d9789 | ||
![]() |
eefa1b1c64 | ||
![]() |
016e547daa | ||
![]() |
b588eaed02 | ||
![]() |
36e0345ce6 | ||
![]() |
62796722f1 | ||
![]() |
935ffd0dc0 | ||
![]() |
fa54e6e2a4 | ||
![]() |
179e760cf1 | ||
![]() |
47faa8595a | ||
![]() |
9ab97b29ae | ||
![]() |
24df40eca7 | ||
![]() |
02a22611be | ||
![]() |
59a0fb8cd9 | ||
![]() |
d383703b78 | ||
![]() |
8291e10b96 | ||
![]() |
312e4aeb86 | ||
![]() |
ac4f25e3a7 | ||
![]() |
7646739431 | ||
![]() |
5f19a9418e | ||
![]() |
3858e28e07 | ||
![]() |
f53455977d | ||
![]() |
9ca1f6a988 | ||
![]() |
1a1ff404a8 | ||
![]() |
c755b82dd9 | ||
![]() |
8fc69bb6fb | ||
![]() |
10edb7c741 | ||
![]() |
ff019dd76f | ||
![]() |
a004f34447 | ||
![]() |
10bb43c66e | ||
![]() |
b6999f10c0 | ||
![]() |
516064dc06 | ||
![]() |
a84b9d99a1 | ||
![]() |
5170ecf045 | ||
![]() |
23a28fa336 | ||
![]() |
15b5e1a6eb | ||
![]() |
ade2fdc9aa | ||
![]() |
e744936d19 | ||
![]() |
4a5b3f34a5 | ||
![]() |
7640aa5190 | ||
![]() |
35771fa776 | ||
![]() |
439c945d56 | ||
![]() |
93146b5718 | ||
![]() |
fd4a6b5dd5 | ||
![]() |
b896f8acda | ||
![]() |
29bd35bc4f | ||
![]() |
f179070113 | ||
![]() |
f813833ba1 | ||
![]() |
f349b18949 | ||
![]() |
aa15257936 | ||
![]() |
6e0c5698e4 | ||
![]() |
cf4ad8d6f7 | ||
![]() |
2a3f8cc57d | ||
![]() |
560c79615c | ||
![]() |
d1b2a1c4f9 | ||
![]() |
9d8f425a9a | ||
![]() |
fbec1f1070 | ||
![]() |
d978d8ddbb | ||
![]() |
e07542a1ff | ||
![]() |
155f26eee2 | ||
![]() |
9eee0c883b | ||
![]() |
939767d502 | ||
![]() |
dccb297678 | ||
![]() |
2152e37722 | ||
![]() |
28cd2c1191 | ||
![]() |
947c512435 | ||
![]() |
42c4e6c7b1 | ||
![]() |
f9cb4a42a0 | ||
![]() |
0f3e84f415 | ||
![]() |
6a0bd57ec4 | ||
![]() |
fc1118cb5a | ||
![]() |
070976e443 | ||
![]() |
0bcaed3564 | ||
![]() |
df00b38a0b | ||
![]() |
aca6310dac | ||
![]() |
ff98833136 | ||
![]() |
1443bc381c | ||
![]() |
9d82635b15 | ||
![]() |
fa80012e71 | ||
![]() |
43d9a62473 | ||
![]() |
51e1a2e04a | ||
![]() |
b8a3178a1b | ||
![]() |
bb94d18115 | ||
![]() |
3b79965e38 | ||
![]() |
e82e3c3fdc | ||
![]() |
f39d628512 | ||
![]() |
5b33308528 | ||
![]() |
444fdcf905 | ||
![]() |
1bf0426aaf | ||
![]() |
8139505829 | ||
![]() |
c9540015c8 | ||
![]() |
2070cfe107 | ||
![]() |
91f4aeec20 | ||
![]() |
8c1df9ef8d | ||
![]() |
c428ac7563 | ||
![]() |
e12179aa92 | ||
![]() |
cd9650c07e | ||
![]() |
5e3e3ad445 | ||
![]() |
e6a352dcfe | ||
![]() |
e17976a172 | ||
![]() |
ae6a7e7c0b | ||
![]() |
717a26e37d | ||
![]() |
8dadb17f83 | ||
![]() |
281f7583f5 | ||
![]() |
a7956f334e | ||
![]() |
3e026ded6f | ||
![]() |
4e485443d3 | ||
![]() |
01b58a0582 | ||
![]() |
f83ea4b124 | ||
![]() |
b8d7dcec77 | ||
![]() |
b77dae3499 | ||
![]() |
0b04bfa7c0 | ||
![]() |
4953c15bdf | ||
![]() |
437f2c335f | ||
![]() |
e68cdf304f | ||
![]() |
a2544e496c | ||
![]() |
e5b824388d | ||
![]() |
214842853c | ||
![]() |
cf6b9e3ec1 | ||
![]() |
50d354bc21 | ||
![]() |
3c9da65652 | ||
![]() |
8340e4267c | ||
![]() |
c9ee3ae4f0 | ||
![]() |
e21b9d842c | ||
![]() |
15e4f67402 | ||
![]() |
01bec0daa2 | ||
![]() |
d19813cc4b | ||
![]() |
cf7660c975 | ||
![]() |
9c5c0c7c84 | ||
![]() |
4d2f279d2d | ||
![]() |
371fc25967 | ||
![]() |
b316c380ad | ||
![]() |
695631b298 | ||
![]() |
6626395c88 | ||
![]() |
0ced4181b0 | ||
![]() |
4f6f84e7e1 | ||
![]() |
b8456d1ba6 | ||
![]() |
fbdf85b553 | ||
![]() |
e13cb291dd | ||
![]() |
8193bf2070 | ||
![]() |
5efd0987f3 | ||
![]() |
60cf07c875 | ||
![]() |
3c738ed46d | ||
![]() |
9353a4a9cb | ||
![]() |
18dfd96635 | ||
![]() |
77751e0fbf | ||
![]() |
d9a13b317e | ||
![]() |
d449496aa4 | ||
![]() |
2f90341225 | ||
![]() |
ab44e1c6cc | ||
![]() |
a3f59f1a5b | ||
![]() |
212d36a33c | ||
![]() |
d0304b19a2 | ||
![]() |
c69b208bd4 | ||
![]() |
397c5e2e02 | ||
![]() |
77c4c015e3 | ||
![]() |
43a4bc5b8b | ||
![]() |
1df4081e50 | ||
![]() |
b9d6a03e25 | ||
![]() |
8841d87365 | ||
![]() |
d9e3f834d7 | ||
![]() |
210282d00f | ||
![]() |
17f7c6d3ed | ||
![]() |
a02bf31d50 | ||
![]() |
98677b4348 | ||
![]() |
03d5fd6cb7 | ||
![]() |
3a811ef563 | ||
![]() |
3e4f58e416 | ||
![]() |
b7be46ed8a | ||
![]() |
902ad91212 | ||
![]() |
ca584143c6 | ||
![]() |
892144dc71 | ||
![]() |
8d024d05d2 | ||
![]() |
69ad0e386e | ||
![]() |
2e88dd72d1 | ||
![]() |
7924fafb25 | ||
![]() |
7f61f413f4 | ||
![]() |
865c43080a | ||
![]() |
c0d74a3860 | ||
![]() |
3c7909ccec | ||
![]() |
48ec815e99 | ||
![]() |
80c6dc86ed | ||
![]() |
25ca2b3cc5 | ||
![]() |
f7fe170a5e | ||
![]() |
e65ab4a3f7 | ||
![]() |
2694017426 | ||
![]() |
00e75ccd7d | ||
![]() |
e907816380 | ||
![]() |
b55915c1fe | ||
![]() |
5b8b3b8384 | ||
![]() |
9f74b95015 | ||
![]() |
8b7b23cf8f | ||
![]() |
b7eb5f66dc | ||
![]() |
427be23b6e | ||
![]() |
ba767481d9 | ||
![]() |
490f28ffd1 | ||
![]() |
c7f075236b | ||
![]() |
44a2b3cf69 | ||
![]() |
f0d633b5ac | ||
![]() |
0f3f03b51d | ||
![]() |
fa7b3f0e4c | ||
![]() |
6725d7893c | ||
![]() |
11c4e786fa | ||
![]() |
b99af4fa47 | ||
![]() |
6591f17f0a | ||
![]() |
9f122037ae | ||
![]() |
cde9dfdb77 | ||
![]() |
f0349f5266 | ||
![]() |
4807c4e636 | ||
![]() |
c1cafbddfe | ||
![]() |
bad7ac62a7 | ||
![]() |
39219230b2 | ||
![]() |
1e5fa014ba | ||
![]() |
0efec7c094 | ||
![]() |
c3a892e165 | ||
![]() |
2e02da291a | ||
![]() |
a39f479163 | ||
![]() |
e50d568f25 | ||
![]() |
0c471b84f7 | ||
![]() |
1e59617d2c | ||
![]() |
e93f545c74 | ||
![]() |
a1437f1ad0 | ||
![]() |
1d8cb34bc8 | ||
![]() |
7a6f99a607 | ||
![]() |
93a39e8782 | ||
![]() |
a1dff15252 | ||
![]() |
ee2c0f7701 | ||
![]() |
d3a6537fce | ||
![]() |
b0b797b396 | ||
![]() |
2de5b5cf4a | ||
![]() |
2625ce7875 | ||
![]() |
65f3adca21 | ||
![]() |
ecde730ec4 | ||
![]() |
e553829a59 | ||
![]() |
7cc12a3d63 | ||
![]() |
ad98f2c20d | ||
![]() |
dc8ca3dfaf | ||
![]() |
ae128734ac | ||
![]() |
f86bbd718d | ||
![]() |
283aed75cf | ||
![]() |
15d78412bc | ||
![]() |
1fd9216ca4 | ||
![]() |
a7eb18db4e | ||
![]() |
5ecb00ed23 | ||
![]() |
5e89b0c82d | ||
![]() |
22b7b07932 | ||
![]() |
57bc0d7895 | ||
![]() |
5334778dbd | ||
![]() |
1dd953b0c0 | ||
![]() |
fa3dbfd8d6 | ||
![]() |
4eb57b590b | ||
![]() |
12bf203167 | ||
![]() |
cf2d479437 | ||
![]() |
413fed9858 | ||
![]() |
60f14cca38 | ||
![]() |
4f54760c4b | ||
![]() |
c0e7a0124d | ||
![]() |
b8cf379fd6 | ||
![]() |
085a03d107 | ||
![]() |
ab788a2ed1 | ||
![]() |
4c6e07c309 | ||
![]() |
e311cc0140 | ||
![]() |
a5c9229084 | ||
![]() |
a0c032b2ff | ||
![]() |
03ec91f943 | ||
![]() |
7233b72145 | ||
![]() |
1656841f25 | ||
![]() |
799511d472 | ||
![]() |
ffb90f4cb5 | ||
![]() |
e46b124ca4 | ||
![]() |
c6b9f3a13d | ||
![]() |
6d5b606c46 | ||
![]() |
dd09b17eae | ||
![]() |
caa7049e2b | ||
![]() |
b2615bcc76 | ||
![]() |
1c0ded41af | ||
![]() |
7bbdfb3d84 | ||
![]() |
0086d2771d | ||
![]() |
98bc7d4fb7 | ||
![]() |
be9df69116 | ||
![]() |
f80a5ae1de | ||
![]() |
b1a148905a | ||
![]() |
8457fca570 | ||
![]() |
999897f587 | ||
![]() |
ab2d1ca41e | ||
![]() |
ee489ee6d7 | ||
![]() |
6250dcb1dc | ||
![]() |
797f9170d7 | ||
![]() |
071686ac6e | ||
![]() |
70c9c05153 | ||
![]() |
bf84670aaa | ||
![]() |
d35c0137b7 | ||
![]() |
ae39724a63 | ||
![]() |
8da254ea74 | ||
![]() |
47c8bcc8c9 | ||
![]() |
9523e28179 | ||
![]() |
a4d5ca633a | ||
![]() |
3102c550ff | ||
![]() |
51dd80c48b | ||
![]() |
14e870e2ec | ||
![]() |
a6265aa0df | ||
![]() |
4c870f4be9 | ||
![]() |
a29e37a4c1 | ||
![]() |
aabe013dd0 | ||
![]() |
07984e0b81 | ||
![]() |
7ec3603996 | ||
![]() |
b991de0f15 | ||
![]() |
601f0ede61 | ||
![]() |
0d32a3b4fe | ||
![]() |
650f9a2d9e | ||
![]() |
05839597bf | ||
![]() |
8eac8bcbfc | ||
![]() |
8dd5ea0729 | ||
![]() |
d98e7def76 | ||
![]() |
5b25c8ccd0 | ||
![]() |
135abb5d74 | ||
![]() |
12cad28ee8 | ||
![]() |
b840be9875 | ||
![]() |
863daa29cb | ||
![]() |
3cf845fbfb | ||
![]() |
c49bee8d0b | ||
![]() |
0dfb771671 | ||
![]() |
452d98f329 | ||
![]() |
a981f517f3 | ||
![]() |
736bacde90 | ||
![]() |
df0eb17172 | ||
![]() |
f274ec0652 | ||
![]() |
b7593369fb | ||
![]() |
ef407ea50c | ||
![]() |
345b9a3217 | ||
![]() |
af719e60c5 | ||
![]() |
84022a12fd | ||
![]() |
c7b55aa6f4 | ||
![]() |
5e70a131e9 | ||
![]() |
1e83e6662f | ||
![]() |
b6c049cb3c | ||
![]() |
39d7b014cf | ||
![]() |
bd645f5095 | ||
![]() |
856f24eb7e | ||
![]() |
f060db5ec5 | ||
![]() |
180eb810cf | ||
![]() |
25f32ce8b8 | ||
![]() |
5eaf15574a | ||
![]() |
467e76aa32 | ||
![]() |
63bda7de11 | ||
![]() |
ec474a4bd2 | ||
![]() |
74ff9828de | ||
![]() |
25530fff71 | ||
![]() |
df2bd0e6fb | ||
![]() |
1ed0c6926e | ||
![]() |
7a2b49a629 | ||
![]() |
a33105dcd1 | ||
![]() |
a5b5952598 | ||
![]() |
c6e936d6c2 | ||
![]() |
ab2abee1fe | ||
![]() |
67d79b92e6 | ||
![]() |
9ba956ca8b | ||
![]() |
c50ecda715 | ||
![]() |
9d928b240b | ||
![]() |
870fa2797c | ||
![]() |
8d1efc81f6 | ||
![]() |
2b6dbb07e8 | ||
![]() |
7caf3f8429 | ||
![]() |
1a6f88f218 | ||
![]() |
06cb16580e | ||
![]() |
2b690fff78 | ||
![]() |
7058a8c006 | ||
![]() |
b71db1a9a5 | ||
![]() |
420c96d17b | ||
![]() |
6817978ddb | ||
![]() |
efedfe12ff | ||
![]() |
90ab7c7c48 | ||
![]() |
fa9e38b36f | ||
![]() |
33bda862da | ||
![]() |
ef2b5eea53 | ||
![]() |
45279951aa | ||
![]() |
47b4581907 | ||
![]() |
b5d6597c0a | ||
![]() |
4a87df8e79 |
19
.gitignore
vendored
Normal file
19
.gitignore
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
Makefile
|
||||
Makefile.in
|
||||
aclocal.m4
|
||||
ansi2knr.1
|
||||
ansi2knr.c
|
||||
ansi2knr.h
|
||||
autom4te.cache
|
||||
config.log
|
||||
config.status
|
||||
configure
|
||||
configure.lineno
|
||||
depcomp
|
||||
install-sh
|
||||
missing
|
||||
.deps
|
||||
*.a
|
||||
*.o
|
||||
debian
|
||||
build-stamp-ngircd*
|
43
AUTHORS
43
AUTHORS
@@ -1,13 +1,46 @@
|
||||
|
||||
ngIRCd - Next Generation IRC Server
|
||||
|
||||
(c)2001,2002 by Alexander Barton,
|
||||
(c)2001-2009 Alexander Barton,
|
||||
alex@barton.de, http://www.barton.de/
|
||||
|
||||
ngIRCd ist freie Software und steht unter
|
||||
der GNU General Public License.
|
||||
ngIRCd is free software and published under the
|
||||
terms of the GNU General Public License.
|
||||
|
||||
-- AUTHORS / Autoren --
|
||||
-- AUTHORS and CONTRIBUTORS --
|
||||
|
||||
|
||||
Alexander Barton, alex@arthur.ath.cx
|
||||
Note: If you have critics, patches or something else, please feel free to
|
||||
post a mail to the ngIRCd mailing list: <ngircd-ml@arthur.ath.cx> (please see
|
||||
<http://ngircd.barton.de/#ml> for details). Don't mail the contributors
|
||||
directly, if possible!
|
||||
|
||||
|
||||
Main Authors
|
||||
~~~~~~~~~~~~
|
||||
Alexander Barton, <alex@barton.de> (alex)
|
||||
Florian Westphal, <westphal@foo.fh-furtwangen.de> (fw)
|
||||
|
||||
|
||||
Contributors
|
||||
~~~~~~~~~~~~
|
||||
Ali Shemiran, <ashemira@ucsd.edu>
|
||||
Ask Bjørn Hansen, <ask@develooper.com>
|
||||
Benjamin Pineau, <ben@zouh.org>
|
||||
Brandon Beresini, <beresini@google.com>
|
||||
Bryan Caldwell, <bcaldwel@ucsd.edu>
|
||||
Dana Dahlstrom, <dana+ngIRCd@cs.ucsd.edu>
|
||||
Eric Grunow, <egrunow@ucsd.edu>
|
||||
Goetz Hoffart, <goetz@hoffart.de>
|
||||
Ilja Osthoff, <i.osthoff@gmx.net>
|
||||
Jari Aalto, <jari.aalto@cante.net>
|
||||
Rolf Eike Beer, <eike@sf-mail.de>
|
||||
Scott Perry, <scperry@ucsd.edu>
|
||||
Sean Reifschneider, <jafo-rpms@tummy.com>
|
||||
|
||||
|
||||
Code snippets
|
||||
~~~~~~~~~~~~~
|
||||
J. Kercheval: pattern matching functions
|
||||
Patrick Powell, <papowell@astart.com>: snprintf()-function
|
||||
Andrew Tridgell & Martin Pool: strl{cpy|cat}()-functions
|
||||
|
607
ChangeLog
607
ChangeLog
@@ -1,17 +1,609 @@
|
||||
|
||||
ngIRCd - Next Generation IRC Server
|
||||
|
||||
(c)2001,2002 by Alexander Barton,
|
||||
(c)2001-2009 Alexander Barton,
|
||||
alex@barton.de, http://www.barton.de/
|
||||
|
||||
ngIRCd ist freie Software und steht unter
|
||||
der GNU General Public License.
|
||||
ngIRCd is free software and published under the
|
||||
terms of the GNU General Public License.
|
||||
|
||||
-- ChangeLog / Aenderungen --
|
||||
-- ChangeLog --
|
||||
|
||||
|
||||
ngIRCd CVS-HEAD
|
||||
ngIRCd Release 14 (2009-04-20)
|
||||
|
||||
- Display IPv6 addresses as "[<addr>]" when accepting connections.
|
||||
|
||||
ngIRCd 14~rc1 (2009-03-29)
|
||||
- Updated Debian/Linux init script (see contrib/Debian/ngircd.init).
|
||||
- Allow creation of persistent modeless channels.
|
||||
- The INFO command reports the compile time now (if available).
|
||||
- Spell check and enhance ngIRCd manual pages.
|
||||
- Channel mode changes: break on syntax errors in MODE command.
|
||||
- Support individual channel keys for pre-defined channels: introduce
|
||||
new configuration variable "KeyFile" in [Channel] sections in ngircd.conf,
|
||||
here a file can be configured for each pre-defined channel which contains
|
||||
individual channel keys for different users.
|
||||
- Remove limit on maximum number of predefined channels in ngircd.conf.
|
||||
- Updated ngircd.spec file for building RPM packages.
|
||||
- Add new and missing files to Mac OS X Xcode project, and update project.
|
||||
- Reject masks with wildcard after last dot.
|
||||
- TLS/SSL: remove useless error message when ssl connection is closed.
|
||||
- Fix memory leak when a encrypted and compressed server link goes down.
|
||||
(closes bug #95, reported by Christoph, fiesh@fiesh.homeip.net)
|
||||
- Fix handling of channels containing dots.
|
||||
(closes ug #93, reported by Gonosz Csiga)
|
||||
|
||||
ngIRCd Release 13 (2008-12-25)
|
||||
|
||||
- Updated documentation, especially doc/Services.txt and doc/SSL.txt.
|
||||
- Make the test suite work on OpenSolaris.
|
||||
|
||||
ngIRCd 13~rc1 (2008-11-21):
|
||||
- New version number scheme :-)
|
||||
- Initial support for IRC services, using a RFC1459 style interface,
|
||||
tested with IRCServices (http://www.ircservices.za.net/) version 5.1.13.
|
||||
For this to work, ngIRCd now supports server-server links conforming
|
||||
to RFC 1459. New ngircd.conf(5) option: ServiceMask.
|
||||
- Support for SSL-encrypted server-server and client-server links using
|
||||
OpenSSL (configure: --with-openssl) or GNUTLS (configure: --with-gnutls).
|
||||
New ngircd.conf(5) options: SSLPorts, SSLKeyFile, SSLKeyFilePassword,
|
||||
SSLCertFile, SSLDHFile, and SSLConnect.
|
||||
- Server local channels have been implemented, prefix "&", that are only
|
||||
visible to users of the same server and are not visible in the network.
|
||||
In addition ngIRCd creates a "special" channel &SERVER on startup and logs
|
||||
all the messages to it that a user with mode +s receives.
|
||||
- New make target "osxpkg" to build a Mac OS X installer package.
|
||||
- Debug mode: enable support for GNU libc memory tracing (see mtrace(3)).
|
||||
- SysV init script: use LSB logging functions, if available.
|
||||
- Added some more FAQ entries (regarding logging and IRC operators).
|
||||
- Allow IRC operators to overwrite channel limits.
|
||||
- Support for enhanced PRIVMSG and NOTICE message targets.
|
||||
- More tests have been added to the test-suite ("make check"), and two
|
||||
servers are started for testing server-server linking.
|
||||
- Added a timestamp to log messages to the console.
|
||||
- New configuration option "NoIdent" to disable IDENT lookups even if the
|
||||
daemon is compiled with IDENT support.
|
||||
|
||||
ngIRCd 0.12.1 (2008-07-09)
|
||||
|
||||
- Allow mixed line terminations (CR+LF/CR/LF) in non-RFC-compliant mode
|
||||
- Don't allow stray \r or \n in command parameters
|
||||
- --configtest: return non-zero exit code if there are errors
|
||||
- Update ngIRCd manual pages
|
||||
- Add option aliases -V (for --version) and -h (for --help).
|
||||
- Fix 'no-ipv6' compile error.
|
||||
- Make Listen parameter a comma-separated list of addresses. This also
|
||||
obsoletes ListenIPv4 and ListenIPv6 options. If Listen is unset, it
|
||||
is treated as Listen="::,0.0.0.0".
|
||||
Note: ListenIPv4 and ListenIPv6 options are still recognized,
|
||||
but ngircd will print a warning if they are used in the config file.
|
||||
|
||||
ngIRCd 0.12.0 (2008-05-13)
|
||||
|
||||
- Fix Bug: 85: "WHO #SecretChannel" that user is not a member of now returns
|
||||
proper RPL_ENDOFWHO_MSG instead of nothing. (Ali Shemiran)
|
||||
- Fix compile on FreeBSD 5.4 and AIX.
|
||||
- If bind() fails, also print IP address and not just the port number.
|
||||
|
||||
ngIRCd 0.12.0-pre2 (2008-04-29)
|
||||
- IPv6: Add config options to disable ipv4/ipv6 support.
|
||||
- Don't include doc/CVS.txt in distribution archive, use doc/GIT.txt now!
|
||||
- Documentation: get rid of some more references to CVS, switch to GIT.
|
||||
- Get rid of cvs-version.* and CVSDATE definition.
|
||||
- Report ERR_NOTONCHANNEL when trying to part a channel one is not member of.
|
||||
- Testsuite: remove erroneous ConfUID setting in config file.
|
||||
|
||||
ngIRCd 0.12.0-pre1 (2008-04-20)
|
||||
- Include Mac OS X Xcode project in distribution archives.
|
||||
- Do not exit on SIGHUP or /REHASH if the config file cannot opened.
|
||||
- Add IPv6 support.
|
||||
- Install a LaunchDaemon script to start/stop ngIRCd on Mac OS X.
|
||||
- Implemented IRC commands INFO, SUMMON (dummy), and USERS (dummy) and
|
||||
enhanced test suite to check these commands. (Dana Dahlstrom)
|
||||
- RPL_WHOREPLY messages generated by IRC_WHO didn't include flags (*,@,+).
|
||||
(Dana Dahlstrom)
|
||||
- IRC_WHO now supports search patterns and will test this against user
|
||||
nickname/servername/hostname, etc. as required by RFC 2812, Section 3.6.1.
|
||||
(reported by Dana Dahlstrom)
|
||||
- Add test cases for "WHO" command. (Dana Dahlstrom)
|
||||
- Implement RFC 2812 handling of "0" argument to 'JOIN': must be treated
|
||||
as if the user had sent PART commands for all channels the user is a
|
||||
member of. (Dana Dahlstrom)
|
||||
- Allow NOTICEs to be sent to a channel. (Fabian Schlager)
|
||||
|
||||
ngIRCd 0.11.1 (2008-02-26)
|
||||
|
||||
- Fix sending of JOIN commands between servers when remote server appended
|
||||
mode flags. (Rolf Eike Beer) [from HEAD]
|
||||
- Send "G" instead of "H" flag in WHO replies. (reported by Dana Dahlstrom)
|
||||
- Under some circumstances ngIRCd issued channel MODE message with a
|
||||
trailing space. (Dana Dahlstrom) [from HEAD]
|
||||
|
||||
ngIRCd 0.11.0 (2008-01-15)
|
||||
|
||||
ngIRCd 0.11.0-pre2 (2008-01-07)
|
||||
- SECURITY: IRC_PART could reference invalid memory, causing
|
||||
ngircd to crash [from HEAD]. (CVE-2008-0285)
|
||||
|
||||
ngIRCd 0.11.0-pre1 (2008-01-02)
|
||||
- Use dotted-decimal IP address if hostname is >= 64.
|
||||
- Add support for /STAT u (server uptime) command.
|
||||
- New [Server] configuration Option "Bind" allows to specify
|
||||
the source IP address to use when connecting to remote server.
|
||||
- New configuration option "MaxNickLength" to specify the allowed maximum
|
||||
length of user nick names. Note: must be unique in an IRC network!
|
||||
- Enhanced the IRC+ protocol to support an enhanced "server handshake" and
|
||||
enable server to recognize numeric 005 (ISUPPORT) and 376 (ENDOFMOTD).
|
||||
See doc/Protocol.txt for details.
|
||||
- Re-added doc/SSL.txt to distribution -- got lost somewhere!?
|
||||
- Fixes the wrong logging output when nested servers are introduced
|
||||
to the network as well as the wrong output of the LINKS command.
|
||||
- Update Mac OS X Xcode project file for Xcode 3.
|
||||
- Adjust test suite to be usable on HP/UX 11.11 :-)
|
||||
- Fix code to compile using K&R C compiler and ansi2kr again.
|
||||
- New config option NoDNS: Disables DNS lookups when clients connect.
|
||||
- Fixed propagation of channel mode 'P' on server links.
|
||||
- Numeric 317: implemented "signon time" (displayed in WHOIS result).
|
||||
- Fixed code that prevented GCC 2.95 to compile ngIRCd.
|
||||
- Adjust path names in manual pages according to "./configure" settings.
|
||||
- Added new server configuration option "Passive" for "Server" blocks to
|
||||
disable automatic outgoing connections (similar to -p option to ngircd,
|
||||
but only for the specified server). (Tassilo Schweyer)
|
||||
- Don't connect to a server if a connection to another server within the
|
||||
same group is already in progress.
|
||||
- Added support for the WALLOPS command. Usage is restricted to IRC
|
||||
operators.
|
||||
|
||||
ngIRCd 0.10.4 (2008-01-07)
|
||||
|
||||
- SECURITY: IRC_PART could reference invalid memory, causing
|
||||
ngircd to crash [from HEAD]. (CVE-2008-0285)
|
||||
|
||||
ngIRCd 0.10.3 (2007-08-01)
|
||||
|
||||
- SECURITY: Fixed a severe bug in handling JOIN commands, which could
|
||||
cause the server to crash. Thanks to Sebastian Vesper, <net@veoson.net>.
|
||||
(CVE-2007-6062)
|
||||
|
||||
ngIRCd 0.10.2 (2007-06-08)
|
||||
|
||||
ngIRCd 0.10.2-pre2 (2007-05-19)
|
||||
- Server links are allowed to use larger write buffers now (up to 50 KB).
|
||||
|
||||
ngIRCd 0.10.2-pre1 (2007-05-05)
|
||||
- Fix compressed server links (broken since 0.10.0).
|
||||
- Predefined Channel configuration now allows specification of channel key
|
||||
(mode k) and maximum user count (mode l).
|
||||
- When using epoll() IO interface, compile in the select() interface as
|
||||
well and fall back to it when epoll() isn't available on runtime.
|
||||
- New configure option "--without-select" to disable select() IO API
|
||||
(even when using epoll(), see above).
|
||||
- Added support for IO APIs "poll()" and "/dev/poll".
|
||||
- Reorganized internal handling of invite and ban lists.
|
||||
|
||||
ngIRCd 0.10.1 (2006-12-17)
|
||||
|
||||
- Fixed validation of server names containing digits.
|
||||
- Update the "info text" of the local server after re-reading configuration.
|
||||
- Changed Numerics 265 and 266 to follow ircd 2.11.x "standards".
|
||||
- Allow PASS syntax defined in RFC 1459 for server links, too.
|
||||
- Enhanced ISUPPORT message (005 numeric).
|
||||
- New configuration option "PredefChannelsOnly": if set, clients can only
|
||||
join predefined channels.
|
||||
- Code cleanups: use "LogDebug(...)" instead of "Log(LOG_DEBUG, ...)", use
|
||||
"strcspn()", unsigned vs. signed, use "const", fix whitespaces, ...
|
||||
|
||||
ngIRCd 0.10.0 (2006-10-01)
|
||||
|
||||
- Fixed file handle leak when daemon is not able to send MOTD to a client.
|
||||
|
||||
ngIRCd 0.10.0-pre2 (2006-09-09)
|
||||
- Fixed build problems with GCC option -fstack-protector.
|
||||
- Minor documentation updates.
|
||||
|
||||
ngIRCd 0.10.0-pre1 (2006-08-02)
|
||||
- Validate "ServerName" (see RFC 2812, section 2.3.1).
|
||||
- Enhanced DIE to accept a single parameter ("comment text") which is sent
|
||||
to all locally connected clients before the server goes down.
|
||||
- The ngIRCd handles time shifts backwards more gracefully now (the
|
||||
timeout handling doesn't disconnect clients by mistake any more).
|
||||
- Internal: Restructured connection handling (the connection ID is equal
|
||||
to the file descriptor of the connection).
|
||||
- Internal: Simplified resolver code.
|
||||
- JOIN now supports more than one channel key at a time.
|
||||
- Implemented numeric "333": Time and user name who set a channel topic.
|
||||
- Enhanced the handler for PING and PONG commands: fix forwarding and enable
|
||||
back-passing of a client supplied additional argument of PING.
|
||||
- Changed handling of timeouts for unregistered connections: don't reset
|
||||
the counter if data is received and disconnect clients earlier.
|
||||
- Removed unnecessary #define of "LOCAL", now use plain C "static" instead.
|
||||
- Channel topics are no longer limited to 127 characters: now the only limit
|
||||
is the maximum length of an IRC command, i. e. 512 bytes (in practice, this
|
||||
limits the topic to about 490 characters due to protocol overhead).
|
||||
- Reverse DNS lookup code now checks the result by doing an additional
|
||||
lookup to prevent spoofing.
|
||||
- Added new IO layer which (optionally) supports epoll() and kqueue() in
|
||||
addition to the select() interface.
|
||||
|
||||
ngIRCd 0.9.2 (2005-10-15)
|
||||
|
||||
- Fixed a bug that could cause the daemon to crash when outgoing server
|
||||
connections can't be established.
|
||||
- Fixed a bug that caused the daemon to leak file descriptors when no
|
||||
resolver subprocesses could be created.
|
||||
- Fixed server NOTICEs to users with "s" mode ("server messages").
|
||||
- Fixed a format string bug in "connection statistics" messages to clients.
|
||||
|
||||
ngIRCd 0.9.1 (2005-08-03)
|
||||
|
||||
- The KILL command killed much more than desired (including server links!)
|
||||
when the target user is connected to a remote server. Bug introduced in
|
||||
ngIRCd 0.9.0 ... Reported by <qssl@fastmail.fm>, Thanks!
|
||||
- Changed some constants to be "signed" (instead of unsigned) to solve
|
||||
problems with old (pre-ANSI) compilers.
|
||||
|
||||
ngIRCd 0.9.0 (2005-07-24)
|
||||
|
||||
ngIRCd 0.9.0-pre1 (2005-07-09)
|
||||
- Fixed maximum length of user names, now allow up to 9 characters.
|
||||
- Cut off oversized IRC messages that should be sent to the network instead
|
||||
of shutting down the (wrong) connection.
|
||||
- Don't generate error messages for unknown commands received before the
|
||||
client is registered with the server (like the original ircd).
|
||||
- Never run with root privileges but always switch the user ID.
|
||||
- Make "netsplit" messages RFC compliant.
|
||||
- Fix handling of QUIT Messages: send only one message, even if the client
|
||||
is member of multiple channels.
|
||||
- Don't exit server if closing of a socket fails; instead ignore it and
|
||||
pray that this will be "the right thing" ...
|
||||
- Implemented the IRC function "WHOWAS".
|
||||
- Don't enable assert() calls when not ./configure'd with --enable-debug.
|
||||
- Fixed ./configure test for TCP Wrappers: now it runs on Mac OS X as well.
|
||||
- Enhanced configure script: now you can pass an (optional) search path
|
||||
to all --with-XXX parameters, e. g. "--with-ident=/opt/ident".
|
||||
- Removed typedefs for the native C datatypes.
|
||||
Use stdbool.h / inttypes.h if available.
|
||||
- New configuration option "OperServerMode" to enable a workaround needed
|
||||
when running an network with ircd2 servers and "OperCanUseMode" enabled
|
||||
to prevent the ircd2 daemon to drop mode changes of IRC operators.
|
||||
Patch by Florian Westphal, <westphal@foo.fh-furtwangen.de>.
|
||||
- Implemented support for "secret channels" (channel mode "s").
|
||||
- New configuration option "Mask" for [Operator] sections to limit OPER
|
||||
commands to users with a specific IRC mask. Patch from Florian Westphal.
|
||||
- Write "error file" (/tmp/ngircd-XXX.err) only if compiled with debug
|
||||
code ("--enable-debug") and running as daemon process.
|
||||
- Don't create version information string each time a client connects
|
||||
but instead on server startup. By Florian Westphal.
|
||||
- New configuration variable "PidFile", section "[Global]": if defined,
|
||||
the server writes its process ID (PID) to this file. Default: off.
|
||||
Idea of Florian Westphal, <westphal@foo.fh-furtwangen.de>.
|
||||
- Code cleanups from Florian Westphal, <westphal@foo.fh-furtwangen.de>.
|
||||
- Raised the maximum length of passwords to 20 characters.
|
||||
- Fixed a memory leak when resizing the connection pool and realloc()
|
||||
failed. Now we don't fall back to malloc(), which should be sane anyway.
|
||||
Patch from Florian Westphal, <westphal@foo.fh-furtwangen.de>.
|
||||
- Added support for the Howl (http://www.porchdogsoft.com/products/howl/)
|
||||
Rendezvous API, in addition to the API of Apple (Mac OS X). The available
|
||||
API will be autodetected when you call "./configure --with-rendezvous".
|
||||
- Made ngIRCd compile on HP/UX 10.20 with native HP pre-ANSI C compiler and
|
||||
most probably other older C compilers on other systems.
|
||||
- When the daemon should switch to another user ID (ServerID is defined in
|
||||
the configuration file) and is not running in a chroot environment, it
|
||||
changes its working directory to the home directory of this user. This
|
||||
should enable the system to write proper core files when not running with
|
||||
root privileges ...
|
||||
|
||||
ngIRCd 0.8.3 (2005-02-03)
|
||||
|
||||
- Fixed a bug that could case a root exploit when the daemon is compiled
|
||||
to do IDENT lookups and is logging to syslog. Bug discovered by CoKi,
|
||||
<coki@nosystem.com.ar>, thanks a lot!
|
||||
(CVE-2005-0226; http://www.nosystem.com.ar/advisories/advisory-11.txt)
|
||||
|
||||
ngIRCd 0.8.2 (2005-01-26)
|
||||
|
||||
- Added doc/SSL.txt to distribution.
|
||||
- Fixed a buffer overflow that could cause the daemon to crash. Bug found
|
||||
by Florian Westphal, <westphal@foo.fh-furtwangen.de>. (CVE-2005-0199)
|
||||
- Fixed a possible buffer underrun when reading the MOTD file. Thanks
|
||||
to Florian Westphal, <westphal@foo.fh-furtwangen.de>.
|
||||
- Fixed detection of IRC lines which are too long to send. Detected by
|
||||
Florian Westphal, <westphal@foo.fh-furtwangen.de>.
|
||||
- Fixed return values of our own implementation of strlcpy(). The code has
|
||||
been taken from rsync and they fixed it, but we didn't until today :-/
|
||||
It has only been used when the system didn't implement strlcpy by itself,
|
||||
not on "modern" systems. Florian Westphal, <westphal@foo.fh-furtwangen.de>.
|
||||
|
||||
ngIRCd 0.8.1 (2004-12-25)
|
||||
|
||||
- Autoconf: Updated config.guess and config.sub
|
||||
- Added some more debug code ...
|
||||
- Fixed wrong variable names in output of "ngircd --configtest".
|
||||
- Debian: Fixed the name of the "default file" in the init script for
|
||||
ngircd-full packages. And do the test if the binary is executable after
|
||||
reading this file.
|
||||
- Enhanced the "test suite": please have a look at src/testsuite/README!
|
||||
|
||||
ngIRCd 0.8.0 (2004-06-26)
|
||||
|
||||
- Fixed wrong buffer size calculation for results of the resolver.
|
||||
|
||||
ngircd 0.8.0-pre2 (2004-05-16)
|
||||
- Enhanced logging to console when running in "no-detached mode": added
|
||||
PID and log messages of resolver sub-processes.
|
||||
- Fixed host name lookups when using IDENT user lookups.
|
||||
- "make clean" and "make maintainer-clean" remove more files now.
|
||||
|
||||
ngIRCd 0.8.0-pre1 (2004-05-07)
|
||||
- Two new configuration options: "ChrootDir" and "MotdPhrase", thanks to
|
||||
Benjamin Pineau <ben@zouh.org>. Now you can force the daemon to change
|
||||
its root and working directory to something "safe". MotdPhrase is used
|
||||
to define an "MOTD string" instead of a whole file, useful if the
|
||||
"real" MOTD file would be outside the "jail".
|
||||
- INVITE- and BAN-lists become synchronized between IRC+ servers when
|
||||
establishing new connections, if the peer supports this as well.
|
||||
- Reorganized autogen.sh and configure scripts.
|
||||
- Fixed a wrong assert() which could cause the daemon to exit spuriously
|
||||
when closing down connections.
|
||||
- Better logging of decompression errors returned by zlib.
|
||||
- Servers other than the destination server didn't clean up the invite
|
||||
list of an "invite-only" channel properly when an INVITE'd user joined.
|
||||
- Changed the reply of the MODE command to match the syntax of the
|
||||
original ircd exactly: the unnecessary but missing ":" before the last
|
||||
parameter has been added.
|
||||
- Fixed TRACE: don't output "Serv" lines for ourself; display more info.
|
||||
- Results of the resolver (hostnames and IDENT names) are discarded after
|
||||
the client is successfully registered with the server.
|
||||
- Better logging while establishing and shutting down connections.
|
||||
- The type of service (TOS) of all sockets is set to "interactive" now.
|
||||
- Added short command line option "-t" as alternative to "--configtest".
|
||||
- Added optional support for "IDENT" lookups on incoming connections. You
|
||||
have to enable this function with the ./configure switch "--with-ident".
|
||||
The default is not to do IDENT lookups.
|
||||
|
||||
ngIRCd 0.7.7 (2004-02-05)
|
||||
|
||||
- The info text ("real name") of users is set to "-" if none has been
|
||||
specified using the USER command (e. g. "USER user * * :"). Reason:
|
||||
the original ircd doesn't like empty ones and would KILL such users.
|
||||
- Fixed (optional) TCP Wrapper test which was broken and could result in
|
||||
false results. Thanks to Fuminori Tanizaki <tany@mcnet.ad.jp>!
|
||||
- Removed "USE_" prefixes of configuration #defines.
|
||||
|
||||
ngIRCd 0.7.6 (2003-12-05)
|
||||
|
||||
- Fixed abort() ("server crash") when INVITE'ing users to nonexistent
|
||||
channels. Bug found by <hiddenx@wp.pl>.
|
||||
- Extended version numbering of CVS versions (added date).
|
||||
- Enhanced/fixed doc/Protocol.txt;
|
||||
|
||||
ngIRCd 0.7.5 (2003-11-07)
|
||||
|
||||
- Fixed ban behavior: users which are banned from a channel can't no
|
||||
longer send PRIVMSG's to this channel (fixes Bug #47).
|
||||
- Fixed and enhanced the "penalty handling" of the server: commands that
|
||||
require more resources block the client for a short time.
|
||||
- Changed the internal time resolution to one second.
|
||||
- New configuration variable "MaxConnectionsIP" to limit the number of
|
||||
simultaneous connections from a single IP that the server will accept.
|
||||
This configuration options lowers the risk of denial of service attacks
|
||||
(DoS), the default is 5 connections per client IP.
|
||||
- Fixed build problems under Mac OS X 10.3.
|
||||
- Use "-pipe" when compiling with gcc, speeds things up a little :-)
|
||||
- Added new configuration variable "Listen" to bind all listening
|
||||
sockets of the server to a single IP address.
|
||||
- Suppress misleading error message of diff during make run.
|
||||
- Enhanced test-suite and made it work on GNU/Hurd.
|
||||
- Fixed minor typo in debug output :-)
|
||||
|
||||
ngIRCd 0.7.1 (2003-07-18)
|
||||
|
||||
- Included files to build Debian packages (located in "debian/").
|
||||
- Updated config.guess and config.sub to newer upstream versions.
|
||||
- NJOIN propagates user channel modes correctly again ... Upsa.
|
||||
- Made Makefile more compatible with "make -j<n>".
|
||||
- Added support for GNU/Hurd.
|
||||
- Fixed a compiler warning related to an unnecessary assert().
|
||||
- Enhanced VERSION command when using debug versions.
|
||||
|
||||
ngIRCd 0.7.0 (2003-05-01)
|
||||
|
||||
- "ServerName" is checked better now: a dot (".") is required.
|
||||
- The KILL command verifies and logs more parameters.
|
||||
|
||||
ngIRCd 0.7.0-pre2 (2003-04-27)
|
||||
- CVS build system fixes (made autogen.sh more portable).
|
||||
- Fixed compilation and test-suite on Solaris (tested with 2.6).
|
||||
- New documentation file "doc/Platforms.txt" describing the status of
|
||||
ngIRCd on the various tested platforms.
|
||||
- Test for broken GCC on Mac OS X and disable "-pedantic" in this case.
|
||||
- Disable "-ansi" on Cygwin: system headers are incompatible.
|
||||
- The server tried to connect to other servers only once when DNS or
|
||||
socket failures occurred.
|
||||
- Fixed --configtest: There is no variable "ServerPwd", it's "Password".
|
||||
|
||||
ngIRCd 0.7.0-pre1 (2003-04-22)
|
||||
- New signal handler (more secure, actions are executed outside).
|
||||
- GCC: the compiler is now called with more warning options enabled.
|
||||
- Replaced a lot of str[n]cpy(), str[n]cat() and sprintf() calls with the
|
||||
more secure functions strlcpy(), strlcat() and snprintf(). On systems
|
||||
that don't support strlcpy() and strlcat(), these functions are included
|
||||
in the libngportab now (with prototypes in portab.h).
|
||||
- If the server can't close a socket, it panics now. This is an error that
|
||||
can't occur during normal operation so there is something broken.
|
||||
- The order of log messages during disconnects is more "natural" now ;-)
|
||||
- Cleaned up handling of server configuration structures: modifying and
|
||||
removing servers during runtime works more reliable now.
|
||||
- Compression code from "conn.[ch]" is now found in new "conn-zip.[ch]"
|
||||
- Moved some connection functions from "conn.[ch]" to "conn-func.[ch]".
|
||||
- New command CONNECT to enable and add server links. The syntax is not
|
||||
RFC-compatible: use "CONNECT <name> <port>" to enable and connect an
|
||||
configured server and "CONNECT <name> <port> <host> <mypwd> <peerpwd>"
|
||||
to add a new server (ngIRCd tries to connect new servers only once!).
|
||||
- Added DISCONNECT command ("DISCONNECT <name>") to disable servers.
|
||||
- Restructured the documentation: Now the main language is English. The
|
||||
german documentation has been removed (until there is a maintainer).
|
||||
- Enhanced killing of users caused by a nickname collision.
|
||||
- Better error detection for status code ("numerics") forwarding.
|
||||
- Moved tool functions to own library: "libngtool".
|
||||
- New command TRACE (you can trace only servers at the moment).
|
||||
- New command HELP that lists all understood commands.
|
||||
- There should no longer remain "unknown connections" (see e.g. LUSERS)
|
||||
if an outgoing server link can't be established.
|
||||
- Added AC_PREREQ(2.50) to configure.in for better autoconf compatibility.
|
||||
- Conn_Close() now handles recursive calls for the same link correctly.
|
||||
- ngIRCd can register itself with Rendezvous: to enable support pass the
|
||||
new switch "--with-rendezvous" to configure.
|
||||
- Added support for TCP Wrappers library: pass "--with-tcp-wrappers" to
|
||||
configure to enable it.
|
||||
- Changed some configure options to use "--with"/"--without" as prefix
|
||||
instead of "--enable"/"--disable": "--without-syslog", "--without-zlib",
|
||||
"--with-tcp-wrappers", and "--with-rendezvous".
|
||||
- Better error reporting to clients on connect.
|
||||
- Enhanced manual pages ngircd(8) and ngircd.conf(5).
|
||||
- Documentation is now installed in $(datadir)/doc/ngircd.
|
||||
- Enhanced handling of NJOIN in case of nick collisions.
|
||||
|
||||
ngIRCd 0.6.1, 2003-01-21
|
||||
|
||||
- Fixed KILL: you can't crash the server by killing yourself any more,
|
||||
ngIRCd no longer sends a QUIT to other servers after the KILL, and you
|
||||
can kill only valid users now.
|
||||
- The server no longer forwards commands to ordinary users, instead it
|
||||
answers with the correct error message ("no such server") now.
|
||||
- WHOIS commands weren't always forwarded as requested.
|
||||
- The server sets a correct default AWAY message now when propagating
|
||||
between servers (bug introduced in 0.6.0).
|
||||
- Fixed up and enhanced CHANINFO command: channel keys and user limits
|
||||
are synchronized between servers now, too.
|
||||
- MODE returns the key and user limit for channel members correctly now.
|
||||
- Non-members of a channel could crash the server when trying to change
|
||||
its modes or modes of its members.
|
||||
- The server didn't validate weather a target user is a valid channel
|
||||
member when changing his channel user modes which could crash ngIRCd.
|
||||
|
||||
|
||||
Older changes (sorry, only available in german language):
|
||||
|
||||
ngIRCd 0.6.0, 2002-12-24
|
||||
|
||||
ngIRCd 0.6.0-pre2, 2002-12-23
|
||||
- neuer Numeric 005 ("Features") beim Connect.
|
||||
- LUSERS erweitert: nun wird die maximale Anzahl der lokalen und globalen
|
||||
Clients, die dem Server bzw. im Netzwerk seit dem letzten (Re-)Start
|
||||
dem Server gleichzeitig bekannt waren, angezeigt.
|
||||
|
||||
ngIRCd 0.6.0-pre1, 2002-12-18
|
||||
- beim Schliessen einer Verbindung zeigt der Server nun vor dem ERROR
|
||||
noch eine Statistik ueber die empfangene und gesendete Datenmenge an.
|
||||
- der Server wartet bei einer eingehenden Verbindung nun laenger auf den
|
||||
Resolver (4 Sekunden), wenn das Ergebnis eintrifft setzt er aber den
|
||||
Login sofort fort (bisher wurde immer mind. 1 Sekunde gewartet).
|
||||
- Connection-Strukturen werden nun "pool-weise" verwaltet; der Pool wird
|
||||
bei Bedarf bis zu einem konfigurierten Limit vergroessert.
|
||||
- Mit der neuen Konfigurationsvariable "MaxConnections" (Sektion "Global")
|
||||
kann die maximale Anzahl gleichzeitiger Verbindungen begrenzt werden.
|
||||
Der Default ist -1, "unlimitiert".
|
||||
- der Server erkennt nun, ob bereits eine eingehende Verbindung von einem
|
||||
Peer-Server besteht und versucht dann nicht mehr, selber eine eigene
|
||||
ausgehende Verbindung zu diesem auufzubauen. Dadurch kann nun auf beiden
|
||||
Servern in der Konfiguration ein Port fuer den Connect konfiguriert
|
||||
werden (beide Server versuchen sich dann gegenseitig zu connectieren).
|
||||
- Test-Suite und Dokumentation an A/UX angepasst.
|
||||
- unter HP-UX definiert das configure-Script nun _XOPEN_SOURCE_EXTENDED.
|
||||
- Server identifizieren sich nun mit asyncronen Passwoertern, d.h. das
|
||||
Passwort, welches A an B schickt, kann ein anderes sein als das, welches
|
||||
B als Antwort an A sendet. In der Konfig.-Datei, Abschnitt "Server",
|
||||
wurde "Password" dazu durch "MyPassword" und "PeerPassword" ersetzt.
|
||||
- Der Server kann nun zur Laufzeit die Konfiguration neu einlesen: dies
|
||||
macht er nach dem Befehl REHASH oder wenn ein HUP-Signal empfangen wird.
|
||||
- Channel-Mode "P" ("persistent") kann nur noch von IRC-Operatoren gesetzt
|
||||
werden. Grund: User koennen den Server sonst leicht "Channel-Flooden".
|
||||
- MOTD kann nun an andere Server geforwarded werden.
|
||||
- IRC-Befehl "TIME" implementiert.
|
||||
- Server-Server-Links koennen nun komprimiert werden, dazu wird die zlib
|
||||
(www.zlib.org) benoetigt. Unterstuetzt die Gegenseite die Komprimierung
|
||||
nicht, wird automatisch unkomprimiert kommuniziert. Das Verfahren ist
|
||||
kompatibel mit dem Original-ircd 2.10.3, d.h. beide Server koennen
|
||||
miteinander ueber komprimiert Links kommunizieren.
|
||||
- Handling der Schreibpuffer umgestellt: Server sollte schneller arbeiten.
|
||||
- Prefix-Fehler werden besser protokolliert (mit verursachendem Befehl).
|
||||
- SQUIT wird nicht mehr doppelt an andere Server weitergeleitet.
|
||||
- Der Server versucht nun vor dem Schliessen einer Verbindung Daten, die
|
||||
noch im Schreibpuffer stehen, zu senden.
|
||||
- Source in weiteres Modul "irc-info" aufgespalten.
|
||||
- Konfigurationsvariablen werden besser validiert: Laengen, Zahlen, ...
|
||||
- neuen Befehl STATS begonnen: bisher unterstuetzt wird "l" und "m".
|
||||
- bei ISON und USERHOST fehlte im Ergebnis-String der korrekte Absender.
|
||||
- IRC Operatoren koennen nun mit KILL User toeten. Achtung: ein Grund muss
|
||||
zwingend als zweiter Parameter angegeben werden!
|
||||
- neue Konfigurations-Variable "MaxJoins": Hiermit kann die maximale Zahl
|
||||
der Channels, in denen ein User Mitglied sein kann, begrent werden.
|
||||
- neuer, deutlich flexiblerer Parser fuer den MODE Befehl.
|
||||
- neue Channel-Modes l (User-Limit) und k (Channel-Key) implementiert.
|
||||
|
||||
ngIRCd 0.5.4, 24.11.2002
|
||||
|
||||
- Fehler-Handling von connect() gefixed: der Server kann sich nun auch
|
||||
unter A/UX wieder zu anderen verbinden.
|
||||
- in den Konfigurationsvariablen ServerUID und ServerGID kann nun nicht
|
||||
nur die numerische ID, sondern auch der Name des Users bzw. der Gruppe
|
||||
verwendet werden. Beim Start des Daemons wird nun beides angezeigt.
|
||||
- Besseres Logging von Prefix-Fehlern.
|
||||
- angenommene Sockets werden nun korrekt auf "non-blocking" konfiguriert,
|
||||
beim Senden und Empfangen werden Blockierungen besser abgefangen.
|
||||
- RPL_UMODEIS hat Code 221, nicht 211 ... *argl*
|
||||
- select() in Try_Write() hat falschen (keinen!) Timeout verwendet;
|
||||
die "Zeit-Aufloesung" des Servers sind zudem nun 2 Sekunden (TIME_RES).
|
||||
Insgesamt sollte die Reaktionszeit des Server nun besser sein.
|
||||
|
||||
ngIRCd 0.5.3, 08.11.2002
|
||||
|
||||
- NOTICE liefert nun wirklich nie mehr einen Fehler, auch dann nicht,
|
||||
wenn der sendende Client noch gar nicht registriert ist.
|
||||
- ein "schneller Server-Reconnect" wird nur noch dann versucht, wenn die
|
||||
Verbindung zuvor ordentlich (="lange genug") in Ordnung war; somit also
|
||||
nicht meht, wenn der Peer-Server gleich beim Connect ein ERROR liefert.
|
||||
Das vermeidet "Connect-Orgien".
|
||||
- einige Datentypen aufgeraumt: z.B. sind viele INT32s nun LONGs. Das ist
|
||||
auf Platformen mit 8-Byte-Integern kompatibler.
|
||||
- RPL_YOURHOST_MSG ist nun ircII- und RFC-kompatibel ;-)
|
||||
- Segfault unter hoher Netzaktivitaet behoben: in Conn_Close() wird die
|
||||
Connection-Struktur nun frueher als "ungueltig" markiert.
|
||||
|
||||
ngIRCd 0.5.2, 04.10.2002
|
||||
|
||||
- Buffer Overflow in Read_Resolver_Result() behoben.
|
||||
- Format-String-Bugs, die zum Abbruch des Servers fuehrten, behoben.
|
||||
- Maximale Laenge eines IRC-Prefix wurde falsch berechnet.
|
||||
|
||||
ngIRCd 0.5.1, 03.10.2002
|
||||
|
||||
- in RPL_YOURHOST_MSG wurde ein fehlerhafter Versionsstring geliefert.
|
||||
- Test-Suite: start-server.sh, stop-server.sh und stress-server.sh koennen
|
||||
nun "manuell" von der Kommandozeile gestartet werden, stress-server.sh
|
||||
startet per Default nur noch 5 Sessions, eine andere Zahl kann auf der
|
||||
Kommandozeile uebergeben werden (Syntax: "stress-server.sh <count>").
|
||||
- In bestimmten Faellen hat der Server versucht auf einen bereits wieder
|
||||
geschlossenen Socket Daten zu schreiben; das fuehrte zu einem Abbruch des
|
||||
Servers durch ein assert(). Nun wird geprueft, ob der Socket noch ok ist.
|
||||
- im "contrib"-Verzeichnis befindet sich nun eine RPM-Spec-Datei, aus den
|
||||
.tar.gz's koennen nun mit "rpm -ta <archiv>" RPM's erzeugt werden. Danke
|
||||
an Sean Reifschneider <jafo@tummy.com>!
|
||||
- Syntax von RPL_MYINFO_MSG korrigiert: liefert nun vier Parameter.
|
||||
|
||||
ngIRCd 0.5.0, 20.09.2002
|
||||
|
||||
- Dokumentation aktualisiert.
|
||||
- Fehler bei Validierung von "AdminInfo2" behoben.
|
||||
- Test der Flags fuer "ps" in der Testsuite verbessert, ist nun zu mehr
|
||||
Plattformen kompatibler.
|
||||
|
||||
ngIRCd 0.5.0-pre2, 17.09.2002
|
||||
- Fix in IRC_WriteStrServersPrefix() war "badly broken" -- behoben.
|
||||
|
||||
ngIRCd 0.5.0-pre1, 16.09.2002
|
||||
- Manual-Pages ngircd.8 und ngircd.conf.5 begonnen.
|
||||
- Wird der Netzwerk-Sniffer aktiviert (--sniffer), so schaltet der
|
||||
ngIRCd nun automatisch in den Debug-Modus.
|
||||
@@ -207,7 +799,6 @@ ngIRCd 0.1.0, 29.01.2002
|
||||
- Clients werden nun korrekt sowohl nur ueber den Nickname als auch die
|
||||
komplette "Host Mask" erkannt.
|
||||
|
||||
|
||||
ngIRCd 0.0.3, 16.01.2002
|
||||
|
||||
- Server-Links vollstaendig implementiert: der ngIRCd kann nun auch
|
||||
@@ -251,7 +842,3 @@ ngIRCd 0.0.2, 06.01.2002
|
||||
ngIRCd 0.0.1, 31.12.2001
|
||||
|
||||
- erste oeffentliche Version von ngIRCd als "public preview" :-)
|
||||
|
||||
|
||||
--
|
||||
$Id: ChangeLog,v 1.87 2002/09/16 10:00:28 alex Exp $
|
||||
|
322
INSTALL
322
INSTALL
@@ -1,148 +1,246 @@
|
||||
|
||||
ngIRCd - Next Generation IRC Server
|
||||
|
||||
(c)2001,2002 by Alexander Barton,
|
||||
(c)2001-2007 Alexander Barton,
|
||||
alex@barton.de, http://www.barton.de/
|
||||
|
||||
ngIRCd ist freie Software und steht unter
|
||||
der GNU General Public License.
|
||||
ngIRCd is free software and published under the
|
||||
terms of the GNU General Public License.
|
||||
|
||||
-- INSTALL --
|
||||
|
||||
-- INSTALL / Installation --
|
||||
|
||||
Ilja Osthoff, <ilja@glide.ath.cx>
|
||||
|
||||
I. Upgrade Information
|
||||
~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Differences to version 0.9.x
|
||||
|
||||
- The option of the configure script to enable support for Zeroconf/Bonjour/
|
||||
Rendezvous/WhateverItIsNamedToday has been renamed:
|
||||
--with-rendezvous -> --with-zeroconf
|
||||
|
||||
Differences to version 0.8.x
|
||||
|
||||
- The maximum length of passwords has been raised to 20 characters (instead
|
||||
of 8 characters). If your passwords are longer than 8 characters then they
|
||||
are cut at an other position now.
|
||||
|
||||
Differences to version 0.6.x
|
||||
|
||||
- Some options of the configure script have been renamed:
|
||||
--disable-syslog -> --without-syslog
|
||||
--disable-zlib -> --without-zlib
|
||||
Please call "./configure --help" to review the full list of options!
|
||||
|
||||
Differences to version 0.5.x
|
||||
|
||||
- Starting with version 0.6.0, other servers are identified using asynchronous
|
||||
passwords: therefore the variable "Password" in [Server]-sections has been
|
||||
replaced by "MyPassword" and "PeerPassword".
|
||||
|
||||
- New configuration variables, section [Global]: MaxConnections, MaxJoins
|
||||
(see example configuration file "doc/sample-ngircd.conf"!).
|
||||
|
||||
|
||||
+-----------------------------------------------------------------------+
|
||||
| Please note: English translations of some of the german documentation |
|
||||
| files can be found in the directory "doc/en" -- please have a look! |
|
||||
+-----------------------------------------------------------------------+
|
||||
II. Standard Installation
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
ngIRCd is developed for UNIX-based systems, which means that the installation
|
||||
on modern UNIX-like systems that are supported by GNU autoconf and GNU
|
||||
automake ("configure") should be no problem.
|
||||
|
||||
The normal installation procedure after getting (and expanding) the source
|
||||
files (using a distribution archive or GIT) is as following:
|
||||
|
||||
1) ./autogen.sh [only necessary when using GIT]
|
||||
2) ./configure
|
||||
3) make
|
||||
4) make install
|
||||
|
||||
(Please see details below!)
|
||||
|
||||
Now the newly compiled executable "ngircd" is installed in its standard
|
||||
location, /usr/local/sbin/.
|
||||
|
||||
The next step is to configure and afterwards starting the daemon. Please
|
||||
have a look at the ngircd(8) and ngircd.conf(5) manual pages for details
|
||||
and all possible options.
|
||||
|
||||
If no previous version of the configuration file exists (the standard name
|
||||
is /usr/local/etc/ngircd.conf), a sample configuration file containing all
|
||||
possible options will be installed there. You'll find its template in the
|
||||
doc/ directory: sample-ngircd.conf.
|
||||
|
||||
|
||||
I. Standard-Installation
|
||||
1): "autogen.sh"
|
||||
|
||||
The first step, autogen.sh, is only necessary if the configure-script isn't
|
||||
already generated. This never happens in official ("stable") releases in
|
||||
tar.gz-archives, but when using GIT.
|
||||
|
||||
This step is therefore only interesting for developers.
|
||||
|
||||
autogen.sh produces the Makefile.in's, which are necessary for the configure
|
||||
script itself, and some more files for make. To run autogen.sh you'll need
|
||||
GNU autoconf and GNU automake (use recent versions! autoconf 2.53 and
|
||||
automake 1.6.1 are known to work).
|
||||
|
||||
Again: "end users" do not need this step!
|
||||
|
||||
|
||||
2): "./configure"
|
||||
|
||||
The configure-script is used to detect local system dependencies.
|
||||
|
||||
In the perfect case, configure should recognise all needed libraries, header
|
||||
files and so on. If this shouldn't work, "./configure --help" shows all
|
||||
possible options.
|
||||
|
||||
In addition, you can pass some command line options to "configure" to enable
|
||||
and/or disable some features of ngIRCd. All these options are shown using
|
||||
"./configure --help", too.
|
||||
|
||||
Compiling a static binary will avoid you the hassle of feeding a chroot dir
|
||||
(if you want use the chroot feature). Just do something like:
|
||||
CFLAGS=-static ./configure [--your-options ...]
|
||||
Then you can use a void directory as ChrootDir (like OpenSSH's /var/empty).
|
||||
|
||||
|
||||
3): "make"
|
||||
|
||||
The make command uses the Makefiles produced by configure and compiles the
|
||||
ngIRCd daemon.
|
||||
|
||||
|
||||
4): "make install"
|
||||
|
||||
Use "make install" to install the server and a sample configuration file on
|
||||
the local system. Normally, root privileges are necessary to complete this
|
||||
step. If there is already an older configuration file present, it won't be
|
||||
overwritten.
|
||||
|
||||
This files will be installed by default:
|
||||
|
||||
- /usr/local/sbin/ngircd: executable server
|
||||
- /usr/local/etc/ngircd.conf: sample configuration (if not already present)
|
||||
- /usr/local/share/doc/ngircd/: documentation
|
||||
|
||||
|
||||
III. Additional features
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
ngIRCd ist fuer UNIXoide-Systeme konzipiert worden, das bedeutet, dass die
|
||||
Installation auf einem modernen UNIX-aehnlichen System kein Problem dar-
|
||||
stellen sollte. Das System muss nur von GNU automake und GNU autoconf
|
||||
("configure") unterstuetzt werden.
|
||||
The following optional features can be compiled into the daemon by passing
|
||||
options to the "configure" script. Most options can handle a <path> argument
|
||||
which will be used to search for the required libraries and header files in
|
||||
the given paths ("<path>/lib/...", "<path>/include/...") in addition to the
|
||||
standard locations.
|
||||
|
||||
Die Standard-Installation sieht so aus:
|
||||
* Syslog Logging (autodetected by default):
|
||||
--with-syslog[=<path>] / --without-syslog
|
||||
|
||||
1) tar xzf ngircd-<Version>.tar.gz
|
||||
2) cd ngircd-<Version>
|
||||
3) ./autogen.sh [nur erforderlich, wenn ueber CVS bezogen]
|
||||
4) ./configure
|
||||
5) make
|
||||
6) make install
|
||||
Enable (disable) support for logging to "syslog", which should be
|
||||
available on most modern UNIX-like operating systems by default.
|
||||
|
||||
* ZLib Compression (autodetected by default):
|
||||
--with-zlib[=<path>] / --without-zlib
|
||||
|
||||
Enable (disable) support for compressed server-server links.
|
||||
The Z compression library ("libz") is required for this option.
|
||||
|
||||
* IO Backend (autodetected by default):
|
||||
--with-select[=<path>] / --without-select
|
||||
--with-poll[=<path>] / --without-poll
|
||||
--with-devpoll[=<path>] / --without-devpoll
|
||||
--with-epoll[=<path>] / --without-epoll
|
||||
--with-kqueue[=<path>] / --without-kqueue
|
||||
|
||||
ngIRCd can use different IO "backends": the "old school" select() and poll()
|
||||
API which should be supported by most UNIX-like operating systems, or the
|
||||
more efficient and flexible epoll() (Linux >=2.6), kqueue() (BSD) and
|
||||
/dev/poll APIs.
|
||||
By default the IO backend is autodetected, but you can use "--without-xxx"
|
||||
to disable a more enhanced API.
|
||||
When using the epoll() API, support for select() is compiled in as well by
|
||||
default to enable the binary to run on older Linux kernels (<2.6), too.
|
||||
|
||||
* IDENT-Support:
|
||||
--with-ident[=<path>]
|
||||
|
||||
Include support for IDENT ("AUTH") lookups. The "ident" library is
|
||||
required for this option.
|
||||
|
||||
* ZeroConf Support:
|
||||
--with-zeroconf[=<path>]
|
||||
|
||||
Compile ngIRCd with support for ZeroConf multicast DNS service registration.
|
||||
Either the Apple ZeroConf implementation (e. g. Mac OS X) or the Howl
|
||||
library is required. Which one is available is autodetected.
|
||||
|
||||
* TCP-Wrappers:
|
||||
--with-tcp-wrappers[=<path>]
|
||||
|
||||
Include support for Wietse Venemas "TCP Wrappers" to limit client access
|
||||
to the daemon, for example by using "/etc/hosts.{allow|deny}".
|
||||
The "libwrap" is required for this option.
|
||||
|
||||
|
||||
zu 3): "autogen.sh"
|
||||
IV. Useful make-targets
|
||||
~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Der erste Schritt, autogen.sh, ist nur notwendig, wenn das configure-Script
|
||||
noch nicht vorhanden ist. Dies ist nie bei offiziellen ("stabilen") Versionen
|
||||
in tar.gz-Archiven der Fall, jedoch immer, wenn der Source-Code ueber CVS
|
||||
bezogen wurde.
|
||||
The Makefile produced by the configure-script contains always these useful
|
||||
targets:
|
||||
|
||||
Dieser Absatz ist also eigentlich ausschliesslich fuer Entwickler interessant.
|
||||
- clean: delete every product from the compiler/linker
|
||||
next step: -> make
|
||||
|
||||
autogen.sh erzeugt die fuer das configure-Script notwendigen Makefile.in's
|
||||
sowie das configure-Script selber und weitere fuer den make-Lauf erforderliche
|
||||
Dateien. Dazu wird sowohl GNU automake als auch GNU autoconf (in aktuellen
|
||||
Versionen!) benoetigt.
|
||||
- distclean: the above plus erase all generated Makefiles
|
||||
next step: -> ./configure
|
||||
|
||||
(nochmal: "Endanwender" mussen diesen Schritt i.d.R. nicht ausfuehren!)
|
||||
- maintainer-clean: erase all automatic generated files
|
||||
next step: -> ./autogen.sh
|
||||
|
||||
|
||||
zu 4): "./configure"
|
||||
V. Sample configuration file ngircd.conf
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Mit dem configure-Script wird ngIRCd, wie GNU Software meistens, an das
|
||||
lokale System angepasst und die erforderlichen Makefile's erzeugt.
|
||||
In the sample configuration file, there are comments beginning with "#" OR
|
||||
";" -- this is only for the better understanding of the file.
|
||||
|
||||
Im Optimalfall sollte configure alle benoetigten Libraries, Header etc. selber
|
||||
erkennen und entsprechend reagieren. Sollte dies einmal nicht der Fall sein,
|
||||
so zeigt "./configure --help" moegliche Optionen.
|
||||
The file is separated in four blocks: [Global], [Operator], [Server], and
|
||||
[Channel].
|
||||
|
||||
In the [Global] section, there is the main configuration like the server
|
||||
name and the ports, on which the server should be listening. IRC operators
|
||||
of this server are defined in [Operator] blocks. [Server] is the section
|
||||
where server links are configured. And [Channel] blocks are used to
|
||||
configure pre-defined ("persistent") IRC channels.
|
||||
|
||||
The meaning of the variables in the configuration file is explained in the
|
||||
"doc/sample-ngircd.conf", which is used as sample configuration file in
|
||||
/usr/local/etc after running "make install" (if you don't already have one)
|
||||
and in the "ngircd.conf" manual page.
|
||||
|
||||
|
||||
zu 5): "make"
|
||||
VI. Command line options
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Der make-Befehl bearbeitet die vom configure-Script erzeugten Makefile's und
|
||||
uebersetzt den ngIRCd.
|
||||
|
||||
|
||||
zu 6): "make install"
|
||||
|
||||
Mit "make install" wird der Server und ggf. eine Beispiels-Konfiguration
|
||||
im System installiert; hierzu sind in der Regel root-Rechte erforderlich.
|
||||
Eine bereits vorhandene Konfigurationsdatei wird nie ueberschrieben.
|
||||
|
||||
Folgende Dateien werden installiert:
|
||||
|
||||
- /usr/local/sbin/ngircd: ausfuehrbarer Server
|
||||
- /usr/local/etc/ngircd.conf: Beispiel-Konfiguration, wenn nicht vorhanden
|
||||
|
||||
|
||||
II. Nuetzliche make-Targets
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Die vom configure-Script erzeugten Makefile's enthalten immer die folgenden
|
||||
nuetzlichen Targets:
|
||||
|
||||
- clean: alle Erzeugnisse des Compilers/Linkers loeschen.
|
||||
Naechster Schritt: -> make
|
||||
|
||||
- distclean: zusaetzliche alle Makefile's loeschen.
|
||||
Naechster Schritt: -> ./configure
|
||||
|
||||
- maintainer-clean: alle automat. erzeugten Dateien loeschen.
|
||||
Naechster Schritt: -> ./autogen.sh
|
||||
|
||||
|
||||
|
||||
III. Konfigurationsdatei ngircd.conf
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
In der Konfigurationsdatei werden Kommentare durch "#" oder durch ";"
|
||||
eingeleitet. Dieses dient nur der besseren Lesbarkeit.
|
||||
|
||||
Die Datei ist in drei Abschnitte unterteilt: [Global], [Operator] und
|
||||
[Server]. Im [Global]-Teil werden die grundlegenden Einstellungen vor-
|
||||
genommen, z.B. der Server-Name und die Ports, auf denen er Verbindungen
|
||||
annehmen soll. In [Operator]-Abschnitten werden Server-Operatoren fest-
|
||||
gelegt und unter [Server] werden die Einstellungen fuer die Verbindung
|
||||
mit anderen Servern konfiguriert.
|
||||
|
||||
Die Bedeutung der einzelnen Variablen ist in der Beispiel-Konfiguration
|
||||
"doc/sample-ngircd.conf" erklaert, die bei "make install" auch als
|
||||
"ngircd.conf" in /usr/local/etc installiert wird, wenn dort noch keine
|
||||
Konfigurationsdatei vorhanden ist.
|
||||
|
||||
|
||||
IV. Kommandozeilen-Optionen
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Folgende Parameter koennen dem ngIRCd u.a. uebergeben werden:
|
||||
These parameters could be passed to the ngIRCd:
|
||||
|
||||
-f, --config <file>
|
||||
Der Daemon wird angewiesen, statt der Standard-Konfigurationsdatei
|
||||
/usr/local/etc/ngircd.conf die Datei <file> einzulesen.
|
||||
The daemon uses the file <file> as configuration file rather than
|
||||
the standard configuration /usr/local/etc/ngircd.conf.
|
||||
|
||||
-n, --nodaemon
|
||||
ngIRCd soll im Fordergrund laufen; alle Meldungen werden zusaetzlich
|
||||
zum Syslog auch auf der Konsole ausgegeben.
|
||||
ngIRCd should be running as a foreground process.
|
||||
|
||||
-p, --passive
|
||||
Verbindungen zu anderen Servern (wie in der Konfigurationsdatei in
|
||||
[Server]-Abschnitten definiert) werden nicht automatisch hergestellt.
|
||||
Server-links won't be automatically established.
|
||||
|
||||
--configtest
|
||||
Die Konfigurationsdatei wird eingelesen, ueberprueft und so aus-
|
||||
gegeben, wie sie vom ngIRCd interpretiert wurde. Danach beendet
|
||||
sich der Server wieder.
|
||||
-t, --configtest
|
||||
Reads, validates and dumps the configuration file as interpreted
|
||||
by the server. Then exits.
|
||||
|
||||
Mit dem Parameter "--help" werden alle unterstuetzten Parameter angezeigt,
|
||||
mit "--version" die Versionsnummer. Bei beiden Parametern beendet sich der
|
||||
Server nach der Ausgabe wieder.
|
||||
|
||||
|
||||
--
|
||||
$Id: INSTALL,v 1.8 2002/09/16 11:03:05 alex Exp $
|
||||
Use "--help" to see a short help text describing all available parameters
|
||||
the server understands, with "--version" the ngIRCd shows its version
|
||||
number. In both cases the server exits after the output.
|
||||
|
@@ -1,21 +0,0 @@
|
||||
#
|
||||
# ngIRCd -- The Next Generation IRC Daemon
|
||||
# Copyright (c)2001,2002 by Alexander Barton (alex@barton.de)
|
||||
#
|
||||
# Dieses Programm ist freie Software. Sie koennen es unter den Bedingungen
|
||||
# der GNU General Public License (GPL), wie von der Free Software Foundation
|
||||
# herausgegeben, weitergeben und/oder modifizieren, entweder unter Version 2
|
||||
# der Lizenz oder (wenn Sie es wuenschen) jeder spaeteren Version.
|
||||
# Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste
|
||||
# der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS.
|
||||
#
|
||||
# $Id: Makefile.am,v 1.4 2002/03/12 14:37:51 alex Exp $
|
||||
#
|
||||
|
||||
SUBDIRS = ngircd.pbproj
|
||||
|
||||
maintainer-clean-local:
|
||||
rm -f Makefile Makefile.in
|
||||
rm -rf build
|
||||
|
||||
# -eof-
|
@@ -1,20 +0,0 @@
|
||||
#
|
||||
# ngIRCd -- The Next Generation IRC Daemon
|
||||
# Copyright (c)2001,2002 by Alexander Barton (alex@barton.de)
|
||||
#
|
||||
# Dieses Programm ist freie Software. Sie koennen es unter den Bedingungen
|
||||
# der GNU General Public License (GPL), wie von der Free Software Foundation
|
||||
# herausgegeben, weitergeben und/oder modifizieren, entweder unter Version 2
|
||||
# der Lizenz oder (wenn Sie es wuenschen) jeder spaeteren Version.
|
||||
# Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste
|
||||
# der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS.
|
||||
#
|
||||
# $Id: Makefile.am,v 1.3 2002/03/12 14:37:51 alex Exp $
|
||||
#
|
||||
|
||||
EXTRA_DIST = project.pbxproj
|
||||
|
||||
maintainer-clean-local:
|
||||
rm -f Makefile Makefile.in
|
||||
|
||||
# -eof-
|
File diff suppressed because it is too large
Load Diff
75
Makefile.am
75
Makefile.am
@@ -1,28 +1,81 @@
|
||||
#
|
||||
# ngIRCd -- The Next Generation IRC Daemon
|
||||
# Copyright (c)2001,2002 by Alexander Barton (alex@barton.de)
|
||||
# Copyright (c)2001-2008 Alexander Barton (alex@barton.de)
|
||||
#
|
||||
# Dieses Programm ist freie Software. Sie koennen es unter den Bedingungen
|
||||
# der GNU General Public License (GPL), wie von der Free Software Foundation
|
||||
# herausgegeben, weitergeben und/oder modifizieren, entweder unter Version 2
|
||||
# der Lizenz oder (wenn Sie es wuenschen) jeder spaeteren Version.
|
||||
# Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste
|
||||
# der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS.
|
||||
#
|
||||
# $Id: Makefile.am,v 1.9 2002/03/31 20:23:06 alex Exp $
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
# Please read the file COPYING, README and AUTHORS for more information.
|
||||
#
|
||||
|
||||
AUTOMAKE_OPTIONS = gnu
|
||||
|
||||
SUBDIRS = doc MacOSX src man
|
||||
SUBDIRS = doc src man contrib
|
||||
|
||||
clean-local:
|
||||
rm -f build-stamp*
|
||||
rm -rf ngircd.dest
|
||||
|
||||
maintainer-clean-local:
|
||||
rm -rf autom4te.cache
|
||||
rm -f Makefile.in Makefile aclocal.m4 configure
|
||||
rm -f mkinstalldirs missing depcomp install-sh
|
||||
rm -f config.log
|
||||
rm -f config.log debian
|
||||
|
||||
testsuite:
|
||||
make -C src/testsuite check
|
||||
|
||||
lint:
|
||||
make -C src/ngircd lint
|
||||
|
||||
srcdoc:
|
||||
make -C doc srcdoc
|
||||
|
||||
have-xcodebuild:
|
||||
@xcodebuild -project contrib/MacOSX/ngIRCd.xcodeproj -list \
|
||||
>/dev/null 2>&1 \
|
||||
|| ( echo; echo "Error: \"xcodebuild\" not found!"; echo; exit 1 )
|
||||
|
||||
xcode: have-xcodebuild
|
||||
rel=`grep AC_INIT configure.in | cut -d' ' -f2 | cut -d')' -f1`; \
|
||||
def="GCC_PREPROCESSOR_DEFINITIONS=\"VERSION=\\\"$$rel\\\"\""; \
|
||||
xcodebuild -project contrib/MacOSX/ngIRCd.xcodeproj -alltargets \
|
||||
-configuration Default $$def build
|
||||
|
||||
xcode-clean: have-xcodebuild
|
||||
xcodebuild -project contrib/MacOSX/ngIRCd.xcodeproj -alltargets \
|
||||
-configuration Default clean
|
||||
rm -fr contrib/MacOSX/build
|
||||
|
||||
rpm: distcheck
|
||||
rpm -ta ngircd-*.tar.gz
|
||||
|
||||
deb:
|
||||
[ -f debian/rules ] || ln -s contrib/Debian debian
|
||||
dpkg-buildpackage -rfakeroot -i
|
||||
|
||||
osxpkg: have-xcodebuild
|
||||
@packagemaker >/dev/null 2>&1; [ $$? -ge 1 ] \
|
||||
|| ( echo; echo "Error: \"packagemaker\" not found!"; echo; exit 2)
|
||||
make clean
|
||||
./configure --prefix=/opt/ngircd
|
||||
make xcode
|
||||
make -C contrib/MacOSX de.barton.ngircd.plist
|
||||
mkdir -p ngircd.dest/opt/ngircd/sbin
|
||||
DESTDIR="$$PWD/ngircd.dest" make -C doc install
|
||||
DESTDIR="$$PWD/ngircd.dest" make -C contrib install
|
||||
DESTDIR="$$PWD/ngircd.dest" make -C man install
|
||||
cp contrib/MacOSX/build/Default/ngIRCd \
|
||||
ngircd.dest/opt/ngircd/sbin/ngircd
|
||||
rm ngircd.dest/opt/ngircd/etc/ngircd.conf
|
||||
echo "Have a nice day IRCing!" >ngircd.dest/opt/ngircd/etc/ngircd.motd
|
||||
chmod -R a-s,og-w,a+rX ngircd.dest
|
||||
cd contrib/MacOSX && packagemaker \
|
||||
--doc ngIRCd.pmdoc \
|
||||
--out ../../$(distdir).mpkg
|
||||
rm -f $(distdir).mpkg.zip
|
||||
zip -ro9 $(distdir).mpkg.zip $(distdir).mpkg
|
||||
rm -rf ngircd.dest $(distdir).mpkg
|
||||
|
||||
# -eof-
|
||||
|
237
NEWS
237
NEWS
@@ -1,40 +1,233 @@
|
||||
|
||||
ngIRCd - Next Generation IRC Server
|
||||
|
||||
(c)2001,2002 by Alexander Barton,
|
||||
(c)2001-2009 Alexander Barton,
|
||||
alex@barton.de, http://www.barton.de/
|
||||
|
||||
ngIRCd ist freie Software und steht unter
|
||||
der GNU General Public License.
|
||||
ngIRCd is free software and published under the
|
||||
terms of the GNU General Public License.
|
||||
|
||||
-- NEWS / Neuigkeiten --
|
||||
-- NEWS --
|
||||
|
||||
|
||||
ngIRCd CVS-HEAD
|
||||
ngIRCd Release 14 (2009-04-20)
|
||||
|
||||
ngIRCd 14~rc1 (2009-03-29)
|
||||
- Allow creation of persistent modeless channels.
|
||||
- The INFO command reports the compile time now (if available).
|
||||
- Support individual channel keys for pre-defined channels: introduce
|
||||
new configuration variable "KeyFile" in [Channel] sections in ngircd.conf,
|
||||
here a file can be configured for each pre-defined channel which contains
|
||||
individual channel keys for different users.
|
||||
- Remove limit on maximum number of predefined channels in ngircd.conf.
|
||||
|
||||
ngIRCd Release 13 (2008-12-25)
|
||||
|
||||
ngIRCd 13~rc1 (2008-11-21):
|
||||
- New version number scheme :-)
|
||||
- Initial support for IRC services, using a RFC1459 style interface,
|
||||
tested with IRCServices (http://www.ircservices.za.net/) version 5.1.13.
|
||||
For this to work, ngIRCd now supports server-server links conforming
|
||||
to RFC 1459. New ngircd.conf(5) option: ServiceMask.
|
||||
- Support for SSL-encrypted server-server and client-server links using
|
||||
OpenSSL (configure: --with-openssl) or GNUTLS (configure: --with-gnutls).
|
||||
New ngircd.conf(5) options: SSLPorts, SSLKeyFile, SSLKeyFilePassword,
|
||||
SSLCertFile, SSLDHFile, and SSLConnect.
|
||||
- Server local channels have been implemented, prefix "&", that are only
|
||||
visible to users of the same server and are not visible in the network.
|
||||
In addition ngIRCd creates a "special" channel &SERVER on startup and logs
|
||||
all the messages to it that a user with mode +s receives.
|
||||
- New make target "osxpkg" to build a Mac OS X installer package.
|
||||
- New configuration option "NoIdent" to disable IDENT lookups even if the
|
||||
daemon is compiled with IDENT support.
|
||||
|
||||
ngIRCd 0.12.1 (2008-07-09)
|
||||
|
||||
- Add option aliases -V (for --version) and -h (for --help).
|
||||
- Make Listen parameter a comma-separated list of addresses. This also
|
||||
obsoletes ListenIPv4 and ListenIPv6 options. If Listen is unset, it
|
||||
is treated as Listen="::,0.0.0.0".
|
||||
Note: ListenIPv4 and ListenIPv6 options are still recognized,
|
||||
but ngircd will print a warning if they are used in the config file.
|
||||
|
||||
ngIRCd 0.12.0 (2008-05-13)
|
||||
|
||||
ngIRCd 0.12.0-pre2 (2008-04-29)
|
||||
- IPv6: Add config options to disable ipv4/ipv6 support.
|
||||
|
||||
ngIRCd 0.12.0-pre1 (2008-04-20)
|
||||
- Add IPv6 support.
|
||||
- Install a LaunchDaemon script to start/stop ngIRCd on Mac OS X.
|
||||
- Implemented IRC commands INFO, SUMMON (dummy), and USERS (dummy) and
|
||||
enhanced test suite to check these commands. (Dana Dahlstrom)
|
||||
- IRC_WHO now supports search patterns and will test this against user
|
||||
nickname/servername/hostname, etc. as required by RFC 2812, Section 3.6.1.
|
||||
(reported by Dana Dahlstrom)
|
||||
- Implement RFC 2812 handling of "0" argument to 'JOIN': must be treated
|
||||
as if the user had sent PART commands for all channels the user is a
|
||||
member of. (Dana Dahlstrom)
|
||||
- Allow NOTICEs to be sent to a channel. (Fabian Schlager)
|
||||
|
||||
ngIRCd 0.11.0 (2008-01-15)
|
||||
|
||||
- Add support for /STAT u (server uptime) command.
|
||||
- New [Server] configuration Option "Bind" allows to specify
|
||||
the source IP address to use when connecting to remote server.
|
||||
- New configuration option "MaxNickLength" to specify the allowed maximum
|
||||
length of user nick names. Note: must be unique in an IRC network!
|
||||
- Numeric 317: implemented "signon time" (displayed in WHOIS result).
|
||||
- Added new server configuration option "Passive" for "Server" blocks to
|
||||
disable automatic outgoing connections (similar to -p option to ngircd,
|
||||
but only for the specified server). (Tassilo Schweyer)
|
||||
- Added support for the WALLOPS command. Usage is restricted to IRC
|
||||
operators.
|
||||
|
||||
ngIRCd 0.10.2 (2007-06-08)
|
||||
|
||||
- Predefined channel configuration now allows specification of channel key
|
||||
(mode k) and maximum user count (mode l): variables "Key" and "MaxUsers".
|
||||
- When using the epoll() IO interface, compile in the select() interface as
|
||||
well and fall back to it when epoll() isn't available on runtime.
|
||||
- Added support for IO APIs "poll()" and "/dev/poll".
|
||||
|
||||
ngIRCd 0.10.1 (2006-12-17)
|
||||
|
||||
- Allow PASS syntax defined in RFC 1459 for server links, too.
|
||||
- New configuration option "PredefChannelsOnly": if set, clients can only
|
||||
join predefined channels.
|
||||
|
||||
ngIRCd 0.10.0 (2006-10-01)
|
||||
|
||||
ngIRCd 0.10.0-pre1 (2006-08-02)
|
||||
- Enhanced DIE to accept a single parameter ("comment text") which is sent
|
||||
to all locally connected clients before the server goes down.
|
||||
- JOIN now supports more than one channel key at a time.
|
||||
- Implemented numeric "333": Time and user name who set a channel topic.
|
||||
- Channel topics are no longer limited to 127 characters: now the only limit
|
||||
is the maximum length of an IRC command, i. e. 512 bytes (in practice, this
|
||||
limits the topic to about 490 characters due to protocol overhead).
|
||||
- Reverse DNS lookup code now checks the result by doing an additional
|
||||
lookup to prevent spoofing.
|
||||
- Added new IO layer which (optionally) supports epoll() and kqueue() in
|
||||
addition to the select() interface.
|
||||
|
||||
ngIRCd 0.9.0 (2005-07-24)
|
||||
|
||||
- Never run with root privileges but always switch the user ID.
|
||||
- Make "netsplit" messages RFC compliant.
|
||||
- Implemented the IRC function "WHOWAS".
|
||||
- New configuration option "OperServerMode" to enable a workaround needed
|
||||
when running an network with ircd2 servers and "OperCanUseMode" enabled
|
||||
to prevent the ircd2 daemon to drop mode changes of IRC operators.
|
||||
Patch by Florian Westphal, <westphal@foo.fh-furtwangen.de>.
|
||||
- Implemented support for "secret channels" (channel mode "s").
|
||||
- New configuration option "Mask" for [Operator] sections to limit OPER
|
||||
commands to users with a specific IRC mask. Patch from Florian Westphal.
|
||||
- New configuration variable "PidFile", section "[Global]": if defined,
|
||||
the server writes its process ID (PID) to this file. Default: off.
|
||||
Idea of Florian Westphal, <westphal@foo.fh-furtwangen.de>.
|
||||
- Added support for the Howl (http://www.porchdogsoft.com/products/howl/)
|
||||
Rendezvous API, in addition to the API of Apple (Mac OS X). The available
|
||||
API will be autodetected when you call "./configure --with-rendezvous".
|
||||
|
||||
ngIRCd 0.8.0 (2004-06-26)
|
||||
|
||||
- Two new configuration options: "ChrootDir" and "MotdPhrase", thanks to
|
||||
Benjamin Pineau <ben@zouh.org>. Now you can force the daemon to change
|
||||
its root and working directory to something "safe". MotdPhrase is used
|
||||
to define an "MOTD string" instead of a whole file, useful if the
|
||||
"real" MOTD file would be outside the "jail".
|
||||
- INVITE- and BAN-lists become synchronized between IRC+ servers when
|
||||
establishing new connections, if the peer supports this as well.
|
||||
- The type of service (TOS) of all sockets is set to "interactive" now.
|
||||
- Added short command line option "-t" as alternative to "--configtest".
|
||||
- Added optional support for "IDENT" lookups on incoming connections. You
|
||||
have to enable this function with the ./configure switch "--with-ident".
|
||||
The default is not to do IDENT lookups.
|
||||
|
||||
ngIRCd 0.7.5 (2003-07-11)
|
||||
|
||||
- New configuration variable "MaxConnectionsIP" to limit the number of
|
||||
simultaneous connections from a single IP that the server will accept.
|
||||
This configuration options lowers the risk of denial of service attacks
|
||||
(DoS), the default is 5 connections per client IP.
|
||||
- Added new configuration variable "Listen" to bind all listening
|
||||
sockets of the server to a single IP address.
|
||||
|
||||
ngIRCd 0.7.1 (2003-07-18)
|
||||
|
||||
- Added support for GNU/Hurd.
|
||||
|
||||
ngIRCd 0.7.0 (2003-05-01)
|
||||
|
||||
- New command CONNECT to enable and add server links. The syntax is not
|
||||
RFC-compatible: use "CONNECT <name> <port>" to enable and connect an
|
||||
configured server and "CONNECT <name> <port> <host> <mypwd> <peerpwd>"
|
||||
to add a new server (ngIRCd tries to connect new servers only once!).
|
||||
- Added DISCONNECT command ("DISCONNECT <name>") to disable servers.
|
||||
- New command TRACE (you can trace only servers at the moment).
|
||||
- New command HELP that lists all understood commands.
|
||||
- ngIRCd can register itself with Rendezvous: to enable support pass the
|
||||
new switch "--with-rendezvous" to configure.
|
||||
- Added support for TCP Wrappers library: pass "--with-tcp-wrappers" to
|
||||
configure to enable it.
|
||||
- Changed some configure options to use "--with"/"--without" as prefix
|
||||
instead of "--enable"/"--disable": "--without-syslog", "--without-zlib",
|
||||
"--with-tcp-wrappers", and "--with-rendezvous".
|
||||
- Enhanced manual pages ngircd(8) and ngircd.conf(5).
|
||||
- Documentation is now installed in $(datadir)/doc/ngircd.
|
||||
|
||||
|
||||
Older news (sorry, only available in german language):
|
||||
|
||||
ngIRCd 0.6.0, 2002-12-24
|
||||
|
||||
- beim Schliessen einer Verbindung zeigt der Server nun vor dem ERROR
|
||||
noch eine Statistik ueber die empfangene und gesendete Datenmenge an.
|
||||
- Connection-Strukturen werden nun "pool-weise" verwaltet; der Pool wird
|
||||
bei Bedarf bis zu einem konfigurierten Limit vergroessert.
|
||||
- Mit der neuen Konfigurationsvariable "MaxConnections" (Sekion "Global")
|
||||
kann die maximale Anzahl gleichzeitiger Verbindungen begrenzt werden.
|
||||
Der Default ist -1, "unlimitiert".
|
||||
- der Server erkennt nun, ob bereits eine eingehende Verbindung von einem
|
||||
Peer-Server besteht und versucht dann nicht mehr, selber eine eigene
|
||||
ausgehende Verbindung zu diesem auufzubauen. Dadurch kann nun auf beiden
|
||||
Servern in der Konfiguration ein Port fuer den Connect konfiguriert
|
||||
werden (beide Server versuchen sich dann gegenseitig zu connectieren).
|
||||
- Server identifizieren sich nun mit asyncronen Passwoertern, d.h. das
|
||||
Passwort, welches A an B schickt, kann ein anderes sein als das, welches
|
||||
B als Antwort an A sendet. In der Konfig.-Datei, Abschnitt "Server",
|
||||
wurde "Password" dazu durch "MyPassword" und "PeerPassword" ersetzt.
|
||||
- Der Server kann nun zur Laufzeit die Konfiguration neu einlesen: dies
|
||||
macht er nach dem Befehl REHASH oder wenn ein HUP-Signal empfangen wird.
|
||||
- Server-Server-Links koennen nun komprimiert werden, dazu wird die zlib
|
||||
(www.zlib.org) benoetigt. Unterstuetzt die Gegenseite die Komprimierung
|
||||
nicht, wird automatisch unkomprimiert kommuniziert. Das Verfahren ist
|
||||
kompatibel mit dem Original-ircd 2.10.3, d.h. beide Server koennen
|
||||
miteinander ueber komprimiert Links kommunizieren.
|
||||
- neue Konfigurations-Variable "MaxJoins": Hiermit kann die maximale Zahl
|
||||
der Channels, in denen ein User Mitglied sein kann, begrent werden.
|
||||
- neue Channel-Modes l (User-Limit) und k (Channel-Key) implementiert.
|
||||
|
||||
ngIRCd 0.5.0, 20.09.2002
|
||||
|
||||
- Manual-Pages ngircd.8 und ngircd.conf.5 begonnen.
|
||||
- AIX (3.2.5), HP-UX (10.20), IRIX (6.5), NetBSD (1.5.3/m68k) und Solaris
|
||||
(2.5.1, 2.6) gehoeren nun auch zu den unterstuetzten Platformen.
|
||||
- Unter A/UX (und evtl. weiteren Systemen) kompiliert der ngIRCd nun mit
|
||||
dem "nativen" (ggf. pre-ANSI) Compiler.
|
||||
- "persistente Channels" (Mode 'P') implementiert: diese koennen in der
|
||||
Konfigurationsdatei definiert werden (Sektion "Channel", vgl. Beispiel-
|
||||
Konfiguration "sample-ngircd.conf") und bleiben auch dann bestehen,
|
||||
wenn kein User mehr im Channel ist. Zu Channel-Operatoren werden bisher
|
||||
nur IRC-Operatoren, die den Channel betreten. Die persistenten Channels
|
||||
werden durch das Flag "P" gelennzeichnet, welches normal durch Channel-
|
||||
Op's gesetzt und geloescht werden kann.
|
||||
- KICK implementiert (bisher kann nur ein User aus einem Channel geckicked
|
||||
werden, Listen, wir im RFC vorgesehen, werden bisher nicht unterstuetzt).
|
||||
- INVITE, den Channel-Mode "i" sowie Invite-Lists ueber den MODE-Befehl
|
||||
(setzen, erfragen und loeschen) implementiert.
|
||||
- Unter A/UX (und evtl. weiteren Systemen) kompiliert der ngIRCd nun mit
|
||||
dem "nativen" (ggf. pre-ANSI) Compiler.
|
||||
- LIST versteht nun Wildcards und kann an andere Server geforwarded werden.
|
||||
wenn kein User mehr im Channel ist.
|
||||
- neue IRC-Befehle: KICK, INVITE, ADMIN, CHANINFO; LIST wurde erweitert.
|
||||
Mit dem neuen Befehl CHANINFO syncronisieren Server, die das IRC+-
|
||||
Protokoll unterstuetzen, Channel-Modes und Topics. Fuer den ADMIN-Befehl
|
||||
gibt es neue Konfigurationsoptionen (Sektion "Global"): "AdminInfo1",
|
||||
"AdminInfo2" und "AdminEMail".
|
||||
- Invite- und Ban-Lists implementiert.
|
||||
- neue Konfigurationsoption "OperCanUseMode" (Sektion "Global"):
|
||||
ist sie aktiv, koennen IRC-Operatoren immer Channel-Modes setzen.
|
||||
- mit dem neuen Befehl CHANINFO syncronisieren Server, die das IRC+-
|
||||
Protokoll unterstuetzen, Channel-Modes und Topics.
|
||||
- Ban-Lists (setzen, erfragen und loeschen) implementiert.
|
||||
- ADMIN-Befehl implementiert.
|
||||
- "Test-Suite" begonnen: mit "make check" wird sie durchlaufen.
|
||||
|
||||
ngIRCd 0.4.2, 29.04.2002
|
||||
|
||||
@@ -116,4 +309,4 @@ ngIRCd 0.0.1, 31.12.2001
|
||||
|
||||
|
||||
--
|
||||
$Id: NEWS,v 1.38 2002/09/16 11:03:05 alex Exp $
|
||||
$Id: NEWS,v 1.88 2008/02/26 22:05:42 fw Exp $
|
||||
|
122
README
122
README
@@ -1,105 +1,87 @@
|
||||
|
||||
|
||||
ngIRCd - Next Generation IRC Server
|
||||
|
||||
(c)2001,2002 by Alexander Barton,
|
||||
(c)2001-2007 Alexander Barton,
|
||||
alex@barton.de, http://www.barton.de/
|
||||
|
||||
ngIRCd ist freie Software und steht unter
|
||||
der GNU General Public License.
|
||||
ngIRCd is free software and published under the
|
||||
terms of the GNU General Public License.
|
||||
|
||||
-- README / Liesmich --
|
||||
|
||||
Ilja Osthoff, <ilja@glide.ath.cx>
|
||||
-- README --
|
||||
|
||||
|
||||
+-----------------------------------------------------------------------+
|
||||
| Please note: English translations of some of the german documentation |
|
||||
| files can be found in the directory "doc/en" -- please have a look! |
|
||||
+-----------------------------------------------------------------------+
|
||||
I. Introduction
|
||||
~~~~~~~~~~~~~~~
|
||||
|
||||
ngIRCd is an Open Source server for the Internet Relay Chat (IRC), which
|
||||
is developed and published under the terms of the GNU General Public
|
||||
Licence (URL: http://www.gnu.org/licenses/gpl.html). ngIRCd means "next
|
||||
generation IRC daemon", it's written from scratch and not deduced from the
|
||||
"grandfather of IRC daemons", the daemon of the IRCNet.
|
||||
|
||||
I. Einfuehrung
|
||||
~~~~~~~~~~~~~~
|
||||
|
||||
ngIRCd ist ein Open-Source-Server fuer den Internet Relay Chat (IRC), der
|
||||
unter der GNU General Public License (http://www.gnu.org/licenses/gpl.html)
|
||||
entwickelt wird. ngIRCd steht fuer "next generation IRC daemon", er ist von
|
||||
Grund auf neu geschrieben, also nicht wie die meisten anderen IRCd's vom
|
||||
Urvater, dem Daemon des IRCNet abgeleitet.
|
||||
Please see the INSTALL document for installation and upgrade information!
|
||||
|
||||
|
||||
II. Status
|
||||
~~~~~~~~~~~
|
||||
|
||||
Zur Zeit befindet sich der ngIRCd noch in Entwicklung, manche Features sind
|
||||
noch nicht implementiert, andere nur teilweise.
|
||||
It is not the goal of ngIRCd to implement all the nasty behaviours of the
|
||||
original ircd, but to implement most of the useful commands and semantics
|
||||
specified by the RFCs.
|
||||
|
||||
Bisher (mehr oder wenig vollstaendig) implementierte IRC-Befehle:
|
||||
In the meantime ngIRCd should be quite feature complete and stable to be
|
||||
used in real IRC networks.
|
||||
|
||||
ADMIN, AWAY, CHANINFO, CONNECT, DIE, ERROR, INVITE, ISON, JOIN, KICK, KILL,
|
||||
LINKS, LIST, LUSERS, MODE, MOTD, NAMES, NICK, NJOIN, NOTICE, OPER, PART,
|
||||
PASS, PING, PONG, PRIVMSG, QUIT, RESTART, SERVER, SQUIT, TOPIC, USERHOST,
|
||||
USER, VERSION, WHO, WHOIS.
|
||||
Implemented IRC-commands are:
|
||||
|
||||
ADMIN, AWAY, CHANINFO, CONNECT, DIE, DISCONNECT, ERROR, HELP, INVITE, ISON,
|
||||
JOIN, KICK, KILL, LINKS, LIST, LUSERS, MODE, MOTD, NAMES, NICK, NJOIN, NOTICE,
|
||||
OPER, PART, PASS, PING, PONG, PRIVMSG, QUIT, REHASH, RESTART, SERVER, SQUIT,
|
||||
STATS, TIME, TOPIC, TRACE, USER, USERHOST, VERSION, WALLOPS, WHO, WHOIS,
|
||||
WHOWAS.
|
||||
|
||||
|
||||
III. Features (oder: warum gerade ngIRCd?)
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
III. Features (or: why use ngIRCd?)
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
- keine Probleme mit Servern, deren IP-Adresse dynamisch ist,
|
||||
- einfache, uebersichtliche Konfigurationsdatei,
|
||||
- frei verfuegbarer C-Quellcode.
|
||||
- ngIRCd wird aktiv weiterentwickelt.
|
||||
- unterstuetzte Plattformen (getestete Version): AIX (3.2.5), A/UX (3.0.1),
|
||||
FreeBSD/i386 (4.5), HP-UX (10.20), IRIX (6.5), Linux (2.x), Mac OS X (10.x),
|
||||
NetBSD (1.5.2/i386, 1.5.3/m68k), Solaris (2.5.1, 2.6), Windows mit Cygwin.
|
||||
- no problems with servers which have dynamic IP addresses
|
||||
- simple, easy understandable configuration file,
|
||||
- freely published open-source C source code,
|
||||
- ngIRCd will be developed on in the future.
|
||||
- wide field of supported platforms, including AIX, A/UX, FreeBSD, HP-UX,
|
||||
IRIX, Linux, Mac OS X, NetBSD, OpenBSD, Solaris, and Windows with Cygwin.
|
||||
|
||||
|
||||
IV. Dokumentation
|
||||
IV. Documentation
|
||||
~~~~~~~~~~~~~~~~~
|
||||
|
||||
Im Paket enthalten ist u.a.:
|
||||
|
||||
- README: das Dokument, das Du gerade liest :-)
|
||||
- INSTALL: Hinweise zur Installation des ngIRCd
|
||||
- NEWS: sagt der Name schon :-)
|
||||
- ChangeLog: die komplette History des ngIRCd
|
||||
- doc/FAQ.txt: haeufige Fragen und Antworten zum ngIRCd
|
||||
- doc/CVS.txt: Hinweise zum CVS-System
|
||||
- doc/RFC.txt: Infos ueber die RFC's
|
||||
- doc/sample-ngircd.conf: Beispiel-Konfigurationsdatei
|
||||
- doc/README-AUX.txt: Installationshinweise fuer A/UX
|
||||
- doc/README-BeOS.txt: dito fuer BeOS
|
||||
|
||||
- doc/en/: englischsprachige Dokumentation
|
||||
More documentation can be found in the "doc/" directory and the homepage of
|
||||
the ngIRCd: <http://ngircd.barton.de/>.
|
||||
|
||||
|
||||
V. Bezugsquellen
|
||||
~~~~~~~~~~~~~~~~
|
||||
V. Download
|
||||
~~~~~~~~~~~
|
||||
|
||||
Die Homepage des ngIRCd ist: <http://arthur.ath.cx/~alex/ngircd>; dort
|
||||
findest du immer die neusten Informationen ueber den ngIRCd und die aktuellen
|
||||
freigegebenen ("stabilen") Releases.
|
||||
The homepage of the ngIRCd is: <http://ngircd.barton.de/>; you will find
|
||||
the newest information about the ngIRCd and the most recent ("stable")
|
||||
releases there.
|
||||
|
||||
Falls du dich fuer die aktuellen Entwicklungs-Versionen (die jedoch nicht
|
||||
immer "stabil" sind) interessierst, dann lese bitte den Punkt "CVS" auf der
|
||||
Homepage und die Datei "doc/CVS.txt", die die Verwendung des "Concurrent
|
||||
Versioning System" (CVS) beschreibt.
|
||||
If you are interested in the latest development versions (which are not
|
||||
always stable), then please read the section about "GIT" on the homepage and
|
||||
the file "doc/GIT.txt" which describes the use of GIT, the version control
|
||||
system used by ngIRCd (homepage: http://git.or.cz/).
|
||||
|
||||
|
||||
VI. Bugs
|
||||
~~~~~~~~
|
||||
|
||||
Wenn du im ngIRCd Bugs finden solltest (so was soll ja auch vorkommen :-),
|
||||
dann lege bitte einen Bug-Report ueber diese URL an:
|
||||
If you find bugs in the ngIRCd (which might be there :-), please report
|
||||
them at the following URL:
|
||||
|
||||
<http://arthur.ath.cx/~alex/ngircd/#bugs>
|
||||
<http://ngircd.barton.de/#bugs>
|
||||
|
||||
Dort kannst du dich auch ueber bekannte Fehler informieren.
|
||||
There you can read about known bugs and limitations, too.
|
||||
|
||||
Falls du noch Anregungen, Kritik, Patches etc. pp. zum ngIRCd hast, dann
|
||||
bitte einfach eine Mail an <alex@barton.de> oder <alex@arthur.ath.cx>
|
||||
schreiben.
|
||||
|
||||
|
||||
--
|
||||
$Id: README,v 1.13 2002/09/16 11:03:05 alex Exp $
|
||||
If you have critics, patches or something else, please feel free to post a
|
||||
mail to the ngIRCd mailing list: <ngircd-ml@arthur.ath.cx> (please see
|
||||
<http://ngircd.barton.de/#ml> for details).
|
||||
|
177
autogen.sh
177
autogen.sh
@@ -1,16 +1,175 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# $Id: autogen.sh,v 1.3 2002/03/12 14:37:51 alex Exp $
|
||||
# ngIRCd -- The Next Generation IRC Daemon
|
||||
# Copyright (c)2001-2008 Alexander Barton <alex@barton.de>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
# Please read the file COPYING, README and AUTHORS for more information.
|
||||
#
|
||||
# Usage:
|
||||
# [VAR=<value>] ./autogen.sh [<configure-args>]
|
||||
#
|
||||
# This script generates the ./configure script using GNU automake and
|
||||
# GNU autoconf. It tries to be smart in finding the correct/usable/available
|
||||
# installed versions of these tools on your system.
|
||||
#
|
||||
# The following strategy is used for each of aclocal, autoheader, automake,
|
||||
# and autoconf: first, "tool" (the regular name of the tool, e. g. "autoconf"
|
||||
# or "automake") is checked. If this fails, "tool<major><minor>" (for example
|
||||
# "automake16") and "tool-<major>.<minor>" (e. g. "autoconf-2.54") are tried
|
||||
# with <major> being 2 for tool of GNU autoconf and 1 for tools of automake;
|
||||
# <minor> is tried from 99 to 0. The first occurrence will be used.
|
||||
#
|
||||
# When you pass <configure-args> to autogen.sh it will call the generated
|
||||
# ./configure script on success and pass these parameters to it.
|
||||
#
|
||||
# You can tweak the behaviour using these environment variables:
|
||||
#
|
||||
# - ACLOCAL=<cmd>, AUTOHEADER=<cmd>, AUTOMAKE=<cmd>, AUTOCONF=<cmd>
|
||||
# Name and optionally path to the particular tool.
|
||||
# - PREFIX=<path>
|
||||
# Search the GNU autoconf and GNU automake tools in <path> first. If the
|
||||
# generated ./configure script will be called, pass "--prefix=<path>" to it.
|
||||
# - EXIST=<tool>
|
||||
# Use <tool> to test for aclocal, autoheader etc. pp. ...
|
||||
# When not specified, either "type" or "which" is used.
|
||||
# - VERBOSE=1
|
||||
# Output the detected names of the GNU automake and GNU autoconf tools.
|
||||
# - GO=1
|
||||
# Call ./configure even if no arguments have been passed to autogen.sh.
|
||||
#
|
||||
# Examples:
|
||||
#
|
||||
# - ./autogen.sh
|
||||
# Generates the ./configure script.
|
||||
# - GO=1 ./autogen.sh
|
||||
# Generates the ./configure script and runs it as "./configure".
|
||||
# - VERBOSE=1 ./autogen.sh --with-ident
|
||||
# Show tool names, generates the ./configure script, and runs it with
|
||||
# these arguments: "./configure --with-ident".
|
||||
# - ACLOCAL=aclocal-1.6 GO=1 PREFIX=$HOME ./autogen.sh
|
||||
# Uses "aclocal-1.6" as aclocal tool, generates the ./configure script,
|
||||
# and runs it with these arguments: "./configure --prefix=$HOME".
|
||||
#
|
||||
|
||||
if [ -f configure ]; then
|
||||
echo "autogen.sh: configure-Skript existiert bereits ..."
|
||||
Search()
|
||||
{
|
||||
[ $# -eq 2 ] || exit 1
|
||||
|
||||
searchlist="$1"
|
||||
major="$2"
|
||||
minor=99
|
||||
|
||||
[ -n "$PREFIX" ] && searchlist="${PREFIX}/$1 ${PREFIX}/bin/$1 $searchlist"
|
||||
|
||||
for name in $searchlist; do
|
||||
$EXIST "${name}" >/dev/null 2>&1
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "${name}"
|
||||
return 0
|
||||
fi
|
||||
done
|
||||
|
||||
while [ $minor -ge 0 ]; do
|
||||
for name in $searchlist; do
|
||||
$EXIST "${name}${major}${minor}" >/dev/null 2>&1
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "${name}${major}${minor}"
|
||||
return 0
|
||||
fi
|
||||
$EXIST "${name}-${major}.${minor}" >/dev/null 2>&1
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "${name}-${major}.${minor}"
|
||||
return 0
|
||||
fi
|
||||
done
|
||||
minor=`expr $minor - 1`
|
||||
done
|
||||
return 1
|
||||
}
|
||||
|
||||
Notfound()
|
||||
{
|
||||
echo "Error: $* not found!"
|
||||
echo "Please install recent versions of GNU autoconf and GNU automake."
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Reset locale settings to suppress warning messages of Perl
|
||||
unset LC_ALL
|
||||
unset LANG
|
||||
|
||||
# Which command should be used to detect the automake/autoconf tools?
|
||||
[ -z "$EXIST" ] && existlist="type which" || existlist="$EXIST"
|
||||
EXIST=""
|
||||
for t in $existlist; do
|
||||
$t /bin/ls >/dev/null 2>&1
|
||||
if [ $? -eq 0 ]; then
|
||||
rm -f /tmp/test.$$
|
||||
$t /tmp/test.$$ >/dev/null 2>&1
|
||||
[ $? -ne 0 ] && EXIST="$t"
|
||||
fi
|
||||
[ -n "$EXIST" ] && break
|
||||
done
|
||||
if [ -z "$EXIST" ]; then
|
||||
echo "Didn't detect a working command to test for the autoconf/automake tools!"
|
||||
echo "Searchlist: $existlist"
|
||||
exit 1
|
||||
fi
|
||||
[ "$VERBOSE" = "1" ] && echo "Using \"$EXIST\" to test for tools."
|
||||
|
||||
# Try to detect the needed tools when no environment variable already
|
||||
# specifies one:
|
||||
echo "Searching tools ..."
|
||||
[ -z "$ACLOCAL" ] && ACLOCAL=`Search aclocal 1`
|
||||
[ "$VERBOSE" = "1" ] && echo "ACLOCAL=$ACLOCAL"
|
||||
[ -z "$AUTOHEADER" ] && AUTOHEADER=`Search autoheader 2`
|
||||
[ "$VERBOSE" = "1" ] && echo "AUTOHEADER=$AUTOHEADER"
|
||||
[ -z "$AUTOMAKE" ] && AUTOMAKE=`Search automake 1`
|
||||
[ "$VERBOSE" = "1" ] && echo "AUTOMAKE=$AUTOMAKE"
|
||||
[ -z "$AUTOCONF" ] && AUTOCONF=`Search autoconf 2`
|
||||
[ "$VERBOSE" = "1" ] && echo "AUTOCONF=$AUTOCONF"
|
||||
|
||||
# Call ./configure when parameters have been passed to this script and
|
||||
# GO isn't already defined.
|
||||
[ -z "$GO" -a $# -gt 0 ] && GO=1
|
||||
|
||||
# Verify that all tools have been found
|
||||
[ -z "$ACLOCAL" ] && Notfound aclocal
|
||||
[ -z "$AUTOHEADER" ] && Notfound autoheader
|
||||
[ -z "$AUTOMAKE" ] && Notfound automake
|
||||
[ -z "$AUTOCONF" ] && Notfound autoconf
|
||||
|
||||
export ACLOCAL AUTOHEADER AUTOMAKE AUTOCONF
|
||||
|
||||
# Generate files
|
||||
echo "Generating files ..."
|
||||
$ACLOCAL && \
|
||||
$AUTOHEADER && \
|
||||
$AUTOMAKE --add-missing && \
|
||||
$AUTOCONF
|
||||
|
||||
if [ $? -eq 0 -a -x ./configure ]; then
|
||||
# Success: if we got some parameters we call ./configure and pass
|
||||
# all of them to it.
|
||||
if [ "$GO" = "1" ]; then
|
||||
[ -n "$PREFIX" ] && p=" --prefix=$PREFIX" || p=""
|
||||
[ -n "$*" ] && a=" $*" || a=""
|
||||
c="./configure${p}${a}"
|
||||
echo "Calling \"$c\" ..."
|
||||
$c
|
||||
exit $?
|
||||
else
|
||||
echo "Okay, autogen.sh done; now run the \"configure\" script."
|
||||
exit 0
|
||||
fi
|
||||
else
|
||||
# Failure!?
|
||||
echo "Error! Check your installation of GNU automake and autoconf!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
aclocal && \
|
||||
autoheader && \
|
||||
automake --add-missing && \
|
||||
autoconf && \
|
||||
echo "Okay, autogen.sh war erfolgreich."
|
||||
|
||||
# -eof-
|
||||
|
897
config.guess
vendored
897
config.guess
vendored
File diff suppressed because it is too large
Load Diff
413
config.sub
vendored
413
config.sub
vendored
@@ -1,9 +1,10 @@
|
||||
#! /bin/sh
|
||||
# Configuration validation subroutine script.
|
||||
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
|
||||
# 2000, 2001, 2002 Free Software Foundation, Inc.
|
||||
# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
|
||||
# Free Software Foundation, Inc.
|
||||
|
||||
timestamp='2002-03-04'
|
||||
timestamp='2008-01-16'
|
||||
|
||||
# This file is (in principle) common to ALL GNU software.
|
||||
# The presence of a machine in this file suggests that SOME GNU software
|
||||
@@ -21,14 +22,15 @@ timestamp='2002-03-04'
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
# Boston, MA 02111-1307, USA.
|
||||
|
||||
# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
|
||||
# 02110-1301, USA.
|
||||
#
|
||||
# As a special exception to the GNU General Public License, if you
|
||||
# distribute this file as part of a program that contains a
|
||||
# configuration script generated by Autoconf, you may include it under
|
||||
# the same distribution terms that you use for the rest of that program.
|
||||
|
||||
|
||||
# Please send patches to <config-patches@gnu.org>. Submit a context
|
||||
# diff and a properly formatted ChangeLog entry.
|
||||
#
|
||||
@@ -70,8 +72,8 @@ Report bugs and patches to <config-patches@gnu.org>."
|
||||
version="\
|
||||
GNU config.sub ($timestamp)
|
||||
|
||||
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
|
||||
Free Software Foundation, Inc.
|
||||
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
|
||||
2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
|
||||
|
||||
This is free software; see the source for copying conditions. There is NO
|
||||
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
|
||||
@@ -83,11 +85,11 @@ Try \`$me --help' for more information."
|
||||
while test $# -gt 0 ; do
|
||||
case $1 in
|
||||
--time-stamp | --time* | -t )
|
||||
echo "$timestamp" ; exit 0 ;;
|
||||
echo "$timestamp" ; exit ;;
|
||||
--version | -v )
|
||||
echo "$version" ; exit 0 ;;
|
||||
echo "$version" ; exit ;;
|
||||
--help | --h* | -h )
|
||||
echo "$usage"; exit 0 ;;
|
||||
echo "$usage"; exit ;;
|
||||
-- ) # Stop option processing
|
||||
shift; break ;;
|
||||
- ) # Use stdin as input.
|
||||
@@ -99,7 +101,7 @@ while test $# -gt 0 ; do
|
||||
*local*)
|
||||
# First pass through any local machine types.
|
||||
echo $1
|
||||
exit 0;;
|
||||
exit ;;
|
||||
|
||||
* )
|
||||
break ;;
|
||||
@@ -118,7 +120,9 @@ esac
|
||||
# Here we must recognize all the valid KERNEL-OS combinations.
|
||||
maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
|
||||
case $maybe_os in
|
||||
nto-qnx* | linux-gnu* | storm-chaos* | os2-emx* | windows32-* | rtmk-nova*)
|
||||
nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
|
||||
uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
|
||||
storm-chaos* | os2-emx* | rtmk-nova*)
|
||||
os=-$maybe_os
|
||||
basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
|
||||
;;
|
||||
@@ -144,7 +148,7 @@ case $os in
|
||||
-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
|
||||
-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
|
||||
-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
|
||||
-apple | -axis)
|
||||
-apple | -axis | -knuth | -cray)
|
||||
os=
|
||||
basic_machine=$1
|
||||
;;
|
||||
@@ -169,6 +173,10 @@ case $os in
|
||||
-hiux*)
|
||||
os=-hiuxwe2
|
||||
;;
|
||||
-sco6)
|
||||
os=-sco5v6
|
||||
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
||||
;;
|
||||
-sco5)
|
||||
os=-sco3.2v5
|
||||
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
||||
@@ -185,6 +193,10 @@ case $os in
|
||||
# Don't forget version if it is 3.2v4 or newer.
|
||||
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
||||
;;
|
||||
-sco5v6*)
|
||||
# Don't forget version if it is 3.2v4 or newer.
|
||||
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
||||
;;
|
||||
-sco*)
|
||||
os=-sco3.2v2
|
||||
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
|
||||
@@ -228,31 +240,52 @@ case $basic_machine in
|
||||
| a29k \
|
||||
| alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
|
||||
| alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
|
||||
| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \
|
||||
| am33_2.0 \
|
||||
| arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
|
||||
| bfin \
|
||||
| c4x | clipper \
|
||||
| d10v | d30v | dsp16xx \
|
||||
| fr30 \
|
||||
| d10v | d30v | dlx | dsp16xx \
|
||||
| fido | fr30 | frv \
|
||||
| h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \
|
||||
| i370 | i860 | i960 | ia64 \
|
||||
| m32r | m68000 | m68k | m88k | mcore \
|
||||
| mips | mips16 | mips64 | mips64el | mips64orion | mips64orionel \
|
||||
| mips64vr4100 | mips64vr4100el | mips64vr4300 \
|
||||
| mips64vr4300el | mips64vr5000 | mips64vr5000el \
|
||||
| mipsbe | mipseb | mipsel | mipsle | mipstx39 | mipstx39el \
|
||||
| mipsisa32 \
|
||||
| ip2k | iq2000 \
|
||||
| m32c | m32r | m32rle | m68000 | m68k | m88k \
|
||||
| maxq | mb | microblaze | mcore | mep \
|
||||
| mips | mipsbe | mipseb | mipsel | mipsle \
|
||||
| mips16 \
|
||||
| mips64 | mips64el \
|
||||
| mips64vr | mips64vrel \
|
||||
| mips64orion | mips64orionel \
|
||||
| mips64vr4100 | mips64vr4100el \
|
||||
| mips64vr4300 | mips64vr4300el \
|
||||
| mips64vr5000 | mips64vr5000el \
|
||||
| mips64vr5900 | mips64vr5900el \
|
||||
| mipsisa32 | mipsisa32el \
|
||||
| mipsisa32r2 | mipsisa32r2el \
|
||||
| mipsisa64 | mipsisa64el \
|
||||
| mipsisa64r2 | mipsisa64r2el \
|
||||
| mipsisa64sb1 | mipsisa64sb1el \
|
||||
| mipsisa64sr71k | mipsisa64sr71kel \
|
||||
| mipstx39 | mipstx39el \
|
||||
| mn10200 | mn10300 \
|
||||
| mt \
|
||||
| msp430 \
|
||||
| nios | nios2 \
|
||||
| ns16k | ns32k \
|
||||
| openrisc | or32 \
|
||||
| or32 \
|
||||
| pdp10 | pdp11 | pj | pjl \
|
||||
| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
|
||||
| pyramid \
|
||||
| sh | sh[34] | sh[34]eb | shbe | shle | sh64 \
|
||||
| sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv9 | sparcv9b \
|
||||
| strongarm \
|
||||
| tahoe | thumb | tic80 | tron \
|
||||
| score \
|
||||
| sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \
|
||||
| sh64 | sh64le \
|
||||
| sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \
|
||||
| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
|
||||
| spu | strongarm \
|
||||
| tahoe | thumb | tic4x | tic80 | tron \
|
||||
| v850 | v850e \
|
||||
| we32k \
|
||||
| x86 | xscale | xstormy16 | xtensa \
|
||||
| x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \
|
||||
| z8k)
|
||||
basic_machine=$basic_machine-unknown
|
||||
;;
|
||||
@@ -263,6 +296,9 @@ case $basic_machine in
|
||||
;;
|
||||
m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
|
||||
;;
|
||||
ms1)
|
||||
basic_machine=mt-unknown
|
||||
;;
|
||||
|
||||
# We use `pc' rather than `unknown'
|
||||
# because (1) that's what they normally are, and
|
||||
@@ -281,41 +317,66 @@ case $basic_machine in
|
||||
| alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \
|
||||
| alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \
|
||||
| alphapca5[67]-* | alpha64pca5[67]-* | arc-* \
|
||||
| arm-* | armbe-* | armle-* | armv*-* \
|
||||
| avr-* \
|
||||
| bs2000-* \
|
||||
| c[123]* | c30-* | [cjt]90-* | c54x-* \
|
||||
| clipper-* | cydra-* \
|
||||
| d10v-* | d30v-* \
|
||||
| arm-* | armbe-* | armle-* | armeb-* | armv*-* \
|
||||
| avr-* | avr32-* \
|
||||
| bfin-* | bs2000-* \
|
||||
| c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \
|
||||
| clipper-* | craynv-* | cydra-* \
|
||||
| d10v-* | d30v-* | dlx-* \
|
||||
| elxsi-* \
|
||||
| f30[01]-* | f700-* | fr30-* | fx80-* \
|
||||
| f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \
|
||||
| h8300-* | h8500-* \
|
||||
| hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \
|
||||
| i*86-* | i860-* | i960-* | ia64-* \
|
||||
| m32r-* \
|
||||
| ip2k-* | iq2000-* \
|
||||
| m32c-* | m32r-* | m32rle-* \
|
||||
| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
|
||||
| m88110-* | m88k-* | mcore-* \
|
||||
| mips-* | mips16-* | mips64-* | mips64el-* | mips64orion-* \
|
||||
| mips64orionel-* | mips64vr4100-* | mips64vr4100el-* \
|
||||
| mips64vr4300-* | mips64vr4300el-* | mipsbe-* | mipseb-* \
|
||||
| mipsle-* | mipsel-* | mipstx39-* | mipstx39el-* \
|
||||
| m88110-* | m88k-* | maxq-* | mcore-* \
|
||||
| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
|
||||
| mips16-* \
|
||||
| mips64-* | mips64el-* \
|
||||
| mips64vr-* | mips64vrel-* \
|
||||
| mips64orion-* | mips64orionel-* \
|
||||
| mips64vr4100-* | mips64vr4100el-* \
|
||||
| mips64vr4300-* | mips64vr4300el-* \
|
||||
| mips64vr5000-* | mips64vr5000el-* \
|
||||
| mips64vr5900-* | mips64vr5900el-* \
|
||||
| mipsisa32-* | mipsisa32el-* \
|
||||
| mipsisa32r2-* | mipsisa32r2el-* \
|
||||
| mipsisa64-* | mipsisa64el-* \
|
||||
| mipsisa64r2-* | mipsisa64r2el-* \
|
||||
| mipsisa64sb1-* | mipsisa64sb1el-* \
|
||||
| mipsisa64sr71k-* | mipsisa64sr71kel-* \
|
||||
| mipstx39-* | mipstx39el-* \
|
||||
| mmix-* \
|
||||
| mt-* \
|
||||
| msp430-* \
|
||||
| nios-* | nios2-* \
|
||||
| none-* | np1-* | ns16k-* | ns32k-* \
|
||||
| orion-* \
|
||||
| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
|
||||
| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
|
||||
| pyramid-* \
|
||||
| romp-* | rs6000-* \
|
||||
| sh-* | sh[34]-* | sh[34]eb-* | shbe-* | shle-* | sh64-* \
|
||||
| sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \
|
||||
| sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \
|
||||
| tahoe-* | thumb-* | tic30-* | tic54x-* | tic80-* | tron-* \
|
||||
| sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
|
||||
| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
|
||||
| sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
|
||||
| sparclite-* \
|
||||
| sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \
|
||||
| tahoe-* | thumb-* \
|
||||
| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
|
||||
| tron-* \
|
||||
| v850-* | v850e-* | vax-* \
|
||||
| we32k-* \
|
||||
| x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \
|
||||
| xtensa-* \
|
||||
| x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
|
||||
| xstormy16-* | xtensa*-* \
|
||||
| ymp-* \
|
||||
| z8k-*)
|
||||
;;
|
||||
# Recognize the basic CPU types without company name, with glob match.
|
||||
xtensa*)
|
||||
basic_machine=$basic_machine-unknown
|
||||
;;
|
||||
# Recognize the various machine names and aliases which stand
|
||||
# for a CPU type and a company and sometimes even an OS.
|
||||
386bsd)
|
||||
@@ -332,6 +393,9 @@ case $basic_machine in
|
||||
basic_machine=a29k-amd
|
||||
os=-udi
|
||||
;;
|
||||
abacus)
|
||||
basic_machine=abacus-unknown
|
||||
;;
|
||||
adobe68k)
|
||||
basic_machine=m68010-adobe
|
||||
os=-scout
|
||||
@@ -346,6 +410,12 @@ case $basic_machine in
|
||||
basic_machine=a29k-none
|
||||
os=-bsd
|
||||
;;
|
||||
amd64)
|
||||
basic_machine=x86_64-pc
|
||||
;;
|
||||
amd64-*)
|
||||
basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
;;
|
||||
amdahl)
|
||||
basic_machine=580-amdahl
|
||||
os=-sysv
|
||||
@@ -377,6 +447,14 @@ case $basic_machine in
|
||||
basic_machine=ns32k-sequent
|
||||
os=-dynix
|
||||
;;
|
||||
blackfin)
|
||||
basic_machine=bfin-unknown
|
||||
os=-linux
|
||||
;;
|
||||
blackfin-*)
|
||||
basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
os=-linux
|
||||
;;
|
||||
c90)
|
||||
basic_machine=c90-cray
|
||||
os=-unicos
|
||||
@@ -405,12 +483,27 @@ case $basic_machine in
|
||||
basic_machine=j90-cray
|
||||
os=-unicos
|
||||
;;
|
||||
craynv)
|
||||
basic_machine=craynv-cray
|
||||
os=-unicosmp
|
||||
;;
|
||||
cr16)
|
||||
basic_machine=cr16-unknown
|
||||
os=-elf
|
||||
;;
|
||||
crds | unos)
|
||||
basic_machine=m68k-crds
|
||||
;;
|
||||
crisv32 | crisv32-* | etraxfs*)
|
||||
basic_machine=crisv32-axis
|
||||
;;
|
||||
cris | cris-* | etrax*)
|
||||
basic_machine=cris-axis
|
||||
;;
|
||||
crx)
|
||||
basic_machine=crx-unknown
|
||||
os=-elf
|
||||
;;
|
||||
da30 | da30-*)
|
||||
basic_machine=m68k-da30
|
||||
;;
|
||||
@@ -433,6 +526,10 @@ case $basic_machine in
|
||||
basic_machine=m88k-motorola
|
||||
os=-sysv3
|
||||
;;
|
||||
djgpp)
|
||||
basic_machine=i586-pc
|
||||
os=-msdosdjgpp
|
||||
;;
|
||||
dpx20 | dpx20-*)
|
||||
basic_machine=rs6000-bull
|
||||
os=-bosx
|
||||
@@ -583,6 +680,14 @@ case $basic_machine in
|
||||
basic_machine=m68k-isi
|
||||
os=-sysv
|
||||
;;
|
||||
m68knommu)
|
||||
basic_machine=m68k-unknown
|
||||
os=-linux
|
||||
;;
|
||||
m68knommu-*)
|
||||
basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
os=-linux
|
||||
;;
|
||||
m88k-omron*)
|
||||
basic_machine=m88k-omron
|
||||
;;
|
||||
@@ -598,6 +703,10 @@ case $basic_machine in
|
||||
basic_machine=i386-pc
|
||||
os=-mingw32
|
||||
;;
|
||||
mingw32ce)
|
||||
basic_machine=arm-unknown
|
||||
os=-mingw32ce
|
||||
;;
|
||||
miniframe)
|
||||
basic_machine=m68000-convergent
|
||||
;;
|
||||
@@ -611,10 +720,6 @@ case $basic_machine in
|
||||
mips3*)
|
||||
basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
|
||||
;;
|
||||
mmix*)
|
||||
basic_machine=mmix-knuth
|
||||
os=-mmixware
|
||||
;;
|
||||
monitor)
|
||||
basic_machine=m68k-rom68k
|
||||
os=-coff
|
||||
@@ -627,6 +732,9 @@ case $basic_machine in
|
||||
basic_machine=i386-pc
|
||||
os=-msdos
|
||||
;;
|
||||
ms1-*)
|
||||
basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'`
|
||||
;;
|
||||
mvs)
|
||||
basic_machine=i370-ibm
|
||||
os=-mvs
|
||||
@@ -702,9 +810,12 @@ case $basic_machine in
|
||||
basic_machine=hppa1.1-oki
|
||||
os=-proelf
|
||||
;;
|
||||
or32 | or32-*)
|
||||
openrisc | openrisc-*)
|
||||
basic_machine=or32-unknown
|
||||
os=-coff
|
||||
;;
|
||||
os400)
|
||||
basic_machine=powerpc-ibm
|
||||
os=-os400
|
||||
;;
|
||||
OSE68000 | ose68000)
|
||||
basic_machine=m68000-ericsson
|
||||
@@ -722,55 +833,75 @@ case $basic_machine in
|
||||
basic_machine=i860-intel
|
||||
os=-osf
|
||||
;;
|
||||
parisc)
|
||||
basic_machine=hppa-unknown
|
||||
os=-linux
|
||||
;;
|
||||
parisc-*)
|
||||
basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
os=-linux
|
||||
;;
|
||||
pbd)
|
||||
basic_machine=sparc-tti
|
||||
;;
|
||||
pbb)
|
||||
basic_machine=m68k-tti
|
||||
;;
|
||||
pc532 | pc532-*)
|
||||
pc532 | pc532-*)
|
||||
basic_machine=ns32k-pc532
|
||||
;;
|
||||
pc98)
|
||||
basic_machine=i386-pc
|
||||
;;
|
||||
pc98-*)
|
||||
basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
;;
|
||||
pentium | p5 | k5 | k6 | nexgen | viac3)
|
||||
basic_machine=i586-pc
|
||||
;;
|
||||
pentiumpro | p6 | 6x86 | athlon)
|
||||
pentiumpro | p6 | 6x86 | athlon | athlon_*)
|
||||
basic_machine=i686-pc
|
||||
;;
|
||||
pentiumii | pentium2)
|
||||
pentiumii | pentium2 | pentiumiii | pentium3)
|
||||
basic_machine=i686-pc
|
||||
;;
|
||||
pentium4)
|
||||
basic_machine=i786-pc
|
||||
;;
|
||||
pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*)
|
||||
basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
;;
|
||||
pentiumpro-* | p6-* | 6x86-* | athlon-*)
|
||||
basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
;;
|
||||
pentiumii-* | pentium2-*)
|
||||
pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*)
|
||||
basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
;;
|
||||
pentium4-*)
|
||||
basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
;;
|
||||
pn)
|
||||
basic_machine=pn-gould
|
||||
;;
|
||||
power) basic_machine=power-ibm
|
||||
;;
|
||||
ppc) basic_machine=powerpc-unknown
|
||||
;;
|
||||
;;
|
||||
ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
;;
|
||||
ppcle | powerpclittle | ppc-le | powerpc-little)
|
||||
basic_machine=powerpcle-unknown
|
||||
;;
|
||||
;;
|
||||
ppcle-* | powerpclittle-*)
|
||||
basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
;;
|
||||
ppc64) basic_machine=powerpc64-unknown
|
||||
;;
|
||||
;;
|
||||
ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
;;
|
||||
ppc64le | powerpc64little | ppc64-le | powerpc64-little)
|
||||
basic_machine=powerpc64le-unknown
|
||||
;;
|
||||
;;
|
||||
ppc64le-* | powerpc64little-*)
|
||||
basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
|
||||
;;
|
||||
@@ -781,6 +912,10 @@ case $basic_machine in
|
||||
basic_machine=i586-unknown
|
||||
os=-pw32
|
||||
;;
|
||||
rdos)
|
||||
basic_machine=i386-pc
|
||||
os=-rdos
|
||||
;;
|
||||
rom68k)
|
||||
basic_machine=m68k-rom68k
|
||||
os=-coff
|
||||
@@ -801,6 +936,20 @@ case $basic_machine in
|
||||
basic_machine=a29k-amd
|
||||
os=-udi
|
||||
;;
|
||||
sb1)
|
||||
basic_machine=mipsisa64sb1-unknown
|
||||
;;
|
||||
sb1el)
|
||||
basic_machine=mipsisa64sb1el-unknown
|
||||
;;
|
||||
sde)
|
||||
basic_machine=mipsisa32-sde
|
||||
os=-elf
|
||||
;;
|
||||
sei)
|
||||
basic_machine=mips-sei
|
||||
os=-seiux
|
||||
;;
|
||||
sequent)
|
||||
basic_machine=i386-sequent
|
||||
;;
|
||||
@@ -808,6 +957,12 @@ case $basic_machine in
|
||||
basic_machine=sh-hitachi
|
||||
os=-hms
|
||||
;;
|
||||
sh5el)
|
||||
basic_machine=sh5le-unknown
|
||||
;;
|
||||
sh64)
|
||||
basic_machine=sh64-unknown
|
||||
;;
|
||||
sparclite-wrs | simso-wrs)
|
||||
basic_machine=sparclite-wrs
|
||||
os=-vxworks
|
||||
@@ -866,7 +1021,7 @@ case $basic_machine in
|
||||
sun386 | sun386i | roadrunner)
|
||||
basic_machine=i386-sun
|
||||
;;
|
||||
sv1)
|
||||
sv1)
|
||||
basic_machine=sv1-cray
|
||||
os=-unicos
|
||||
;;
|
||||
@@ -874,10 +1029,6 @@ case $basic_machine in
|
||||
basic_machine=i386-sequent
|
||||
os=-dynix
|
||||
;;
|
||||
t3d)
|
||||
basic_machine=alpha-cray
|
||||
os=-unicos
|
||||
;;
|
||||
t3e)
|
||||
basic_machine=alphaev5-cray
|
||||
os=-unicos
|
||||
@@ -890,6 +1041,18 @@ case $basic_machine in
|
||||
basic_machine=tic54x-unknown
|
||||
os=-coff
|
||||
;;
|
||||
tic55x | c55x*)
|
||||
basic_machine=tic55x-unknown
|
||||
os=-coff
|
||||
;;
|
||||
tic6x | c6x*)
|
||||
basic_machine=tic6x-unknown
|
||||
os=-coff
|
||||
;;
|
||||
tile*)
|
||||
basic_machine=tile-unknown
|
||||
os=-linux-gnu
|
||||
;;
|
||||
tx39)
|
||||
basic_machine=mipstx39-unknown
|
||||
;;
|
||||
@@ -903,6 +1066,10 @@ case $basic_machine in
|
||||
tower | tower-32)
|
||||
basic_machine=m68k-ncr
|
||||
;;
|
||||
tpf)
|
||||
basic_machine=s390x-ibm
|
||||
os=-tpf
|
||||
;;
|
||||
udi29k)
|
||||
basic_machine=a29k-amd
|
||||
os=-udi
|
||||
@@ -924,8 +1091,8 @@ case $basic_machine in
|
||||
os=-vms
|
||||
;;
|
||||
vpp*|vx|vx-*)
|
||||
basic_machine=f301-fujitsu
|
||||
;;
|
||||
basic_machine=f301-fujitsu
|
||||
;;
|
||||
vxworks960)
|
||||
basic_machine=i960-wrs
|
||||
os=-vxworks
|
||||
@@ -946,11 +1113,11 @@ case $basic_machine in
|
||||
basic_machine=hppa1.1-winbond
|
||||
os=-proelf
|
||||
;;
|
||||
windows32)
|
||||
basic_machine=i386-pc
|
||||
os=-windows32-msvcrt
|
||||
xbox)
|
||||
basic_machine=i686-pc
|
||||
os=-mingw32
|
||||
;;
|
||||
xps | xps100)
|
||||
xps | xps100)
|
||||
basic_machine=xps100-honeywell
|
||||
;;
|
||||
ymp)
|
||||
@@ -980,6 +1147,9 @@ case $basic_machine in
|
||||
romp)
|
||||
basic_machine=romp-ibm
|
||||
;;
|
||||
mmix)
|
||||
basic_machine=mmix-knuth
|
||||
;;
|
||||
rs6000)
|
||||
basic_machine=rs6000-ibm
|
||||
;;
|
||||
@@ -996,16 +1166,13 @@ case $basic_machine in
|
||||
we32k)
|
||||
basic_machine=we32k-att
|
||||
;;
|
||||
sh3 | sh4 | sh3eb | sh4eb)
|
||||
sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele)
|
||||
basic_machine=sh-unknown
|
||||
;;
|
||||
sh64)
|
||||
basic_machine=sh64-unknown
|
||||
;;
|
||||
sparc | sparcv9 | sparcv9b)
|
||||
sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v)
|
||||
basic_machine=sparc-sun
|
||||
;;
|
||||
cydra)
|
||||
cydra)
|
||||
basic_machine=cydra-cydrome
|
||||
;;
|
||||
orion)
|
||||
@@ -1020,10 +1187,6 @@ case $basic_machine in
|
||||
pmac | pmac-mpw)
|
||||
basic_machine=powerpc-apple
|
||||
;;
|
||||
c4x*)
|
||||
basic_machine=c4x-none
|
||||
os=-coff
|
||||
;;
|
||||
*-unknown)
|
||||
# Make sure to match an already-canonicalized machine name.
|
||||
;;
|
||||
@@ -1079,18 +1242,23 @@ case $os in
|
||||
| -aos* \
|
||||
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
|
||||
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
|
||||
| -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \
|
||||
| -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
|
||||
| -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
|
||||
| -openbsd* | -solidbsd* \
|
||||
| -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \
|
||||
| -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
|
||||
| -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
|
||||
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
|
||||
| -chorusos* | -chorusrdb* \
|
||||
| -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
|
||||
| -mingw32* | -linux-gnu* | -uxpv* | -beos* | -mpeix* | -udk* \
|
||||
| -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \
|
||||
| -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \
|
||||
| -uxpv* | -beos* | -mpeix* | -udk* \
|
||||
| -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
|
||||
| -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
|
||||
| -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
|
||||
| -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
|
||||
| -morphos* | -superux* | -rtmk* | -rtmk-nova*)
|
||||
| -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
|
||||
| -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
|
||||
| -skyos* | -haiku* | -rdos* | -toppers* | -drops*)
|
||||
# Remember, each alternative MUST END IN *, to match a version number.
|
||||
;;
|
||||
-qnx*)
|
||||
@@ -1102,16 +1270,21 @@ case $os in
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
-nto-qnx*)
|
||||
;;
|
||||
-nto*)
|
||||
os=-nto-qnx
|
||||
os=`echo $os | sed -e 's|nto|nto-qnx|'`
|
||||
;;
|
||||
-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
|
||||
| -windows* | -osx | -abug | -netware* | -os9* | -beos* \
|
||||
| -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
|
||||
| -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
|
||||
;;
|
||||
-mac*)
|
||||
os=`echo $os | sed -e 's|mac|macos|'`
|
||||
;;
|
||||
-linux-dietlibc)
|
||||
os=-linux-dietlibc
|
||||
;;
|
||||
-linux*)
|
||||
os=`echo $os | sed -e 's|linux|linux-gnu|'`
|
||||
;;
|
||||
@@ -1124,6 +1297,9 @@ case $os in
|
||||
-opened*)
|
||||
os=-openedition
|
||||
;;
|
||||
-os400*)
|
||||
os=-os400
|
||||
;;
|
||||
-wince*)
|
||||
os=-wince
|
||||
;;
|
||||
@@ -1145,6 +1321,9 @@ case $os in
|
||||
-atheos*)
|
||||
os=-atheos
|
||||
;;
|
||||
-syllable*)
|
||||
os=-syllable
|
||||
;;
|
||||
-386bsd)
|
||||
os=-bsd
|
||||
;;
|
||||
@@ -1155,7 +1334,7 @@ case $os in
|
||||
os=-rtmk-nova
|
||||
;;
|
||||
-ns2 )
|
||||
os=-nextstep2
|
||||
os=-nextstep2
|
||||
;;
|
||||
-nsk*)
|
||||
os=-nsk
|
||||
@@ -1167,6 +1346,9 @@ case $os in
|
||||
-sinix*)
|
||||
os=-sysv4
|
||||
;;
|
||||
-tpf*)
|
||||
os=-tpf
|
||||
;;
|
||||
-triton*)
|
||||
os=-sysv3
|
||||
;;
|
||||
@@ -1194,8 +1376,17 @@ case $os in
|
||||
-xenix)
|
||||
os=-xenix
|
||||
;;
|
||||
-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
|
||||
os=-mint
|
||||
-*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
|
||||
os=-mint
|
||||
;;
|
||||
-aros*)
|
||||
os=-aros
|
||||
;;
|
||||
-kaos*)
|
||||
os=-kaos
|
||||
;;
|
||||
-zvmoe)
|
||||
os=-zvmoe
|
||||
;;
|
||||
-none)
|
||||
;;
|
||||
@@ -1219,6 +1410,12 @@ else
|
||||
# system, and we'll never get to this point.
|
||||
|
||||
case $basic_machine in
|
||||
score-*)
|
||||
os=-elf
|
||||
;;
|
||||
spu-*)
|
||||
os=-elf
|
||||
;;
|
||||
*-acorn)
|
||||
os=-riscix1.2
|
||||
;;
|
||||
@@ -1228,11 +1425,14 @@ case $basic_machine in
|
||||
arm*-semi)
|
||||
os=-aout
|
||||
;;
|
||||
c4x-* | tic4x-*)
|
||||
os=-coff
|
||||
;;
|
||||
# This must come before the *-dec entry.
|
||||
pdp10-*)
|
||||
os=-tops20
|
||||
;;
|
||||
pdp11-*)
|
||||
pdp11-*)
|
||||
os=-none
|
||||
;;
|
||||
*-dec | vax-*)
|
||||
@@ -1253,6 +1453,9 @@ case $basic_machine in
|
||||
m68*-cisco)
|
||||
os=-aout
|
||||
;;
|
||||
mep-*)
|
||||
os=-elf
|
||||
;;
|
||||
mips*-cisco)
|
||||
os=-elf
|
||||
;;
|
||||
@@ -1271,9 +1474,15 @@ case $basic_machine in
|
||||
*-be)
|
||||
os=-beos
|
||||
;;
|
||||
*-haiku)
|
||||
os=-haiku
|
||||
;;
|
||||
*-ibm)
|
||||
os=-aix
|
||||
;;
|
||||
*-knuth)
|
||||
os=-mmixware
|
||||
;;
|
||||
*-wec)
|
||||
os=-proelf
|
||||
;;
|
||||
@@ -1325,19 +1534,19 @@ case $basic_machine in
|
||||
*-next)
|
||||
os=-nextstep3
|
||||
;;
|
||||
*-gould)
|
||||
*-gould)
|
||||
os=-sysv
|
||||
;;
|
||||
*-highlevel)
|
||||
*-highlevel)
|
||||
os=-bsd
|
||||
;;
|
||||
*-encore)
|
||||
os=-bsd
|
||||
;;
|
||||
*-sgi)
|
||||
*-sgi)
|
||||
os=-irix
|
||||
;;
|
||||
*-siemens)
|
||||
*-siemens)
|
||||
os=-sysv4
|
||||
;;
|
||||
*-masscomp)
|
||||
@@ -1406,10 +1615,16 @@ case $basic_machine in
|
||||
-mvs* | -opened*)
|
||||
vendor=ibm
|
||||
;;
|
||||
-os400*)
|
||||
vendor=ibm
|
||||
;;
|
||||
-ptx*)
|
||||
vendor=sequent
|
||||
;;
|
||||
-vxsim* | -vxworks*)
|
||||
-tpf*)
|
||||
vendor=ibm
|
||||
;;
|
||||
-vxsim* | -vxworks* | -windiss*)
|
||||
vendor=wrs
|
||||
;;
|
||||
-aux*)
|
||||
@@ -1433,7 +1648,7 @@ case $basic_machine in
|
||||
esac
|
||||
|
||||
echo $basic_machine$os
|
||||
exit 0
|
||||
exit
|
||||
|
||||
# Local variables:
|
||||
# eval: (add-hook 'write-file-hooks 'time-stamp)
|
||||
|
576
configure.in
576
configure.in
@@ -1,34 +1,36 @@
|
||||
#
|
||||
# ngIRCd -- The Next Generation IRC Daemon
|
||||
# Copyright (c)2001,2002 by Alexander Barton (alex@barton.de)
|
||||
# Copyright (c)2001-2008 Alexander Barton <alex@barton.de>
|
||||
#
|
||||
# Dieses Programm ist freie Software. Sie koennen es unter den Bedingungen
|
||||
# der GNU General Public License (GPL), wie von der Free Software Foundation
|
||||
# herausgegeben, weitergeben und/oder modifizieren, entweder unter Version 2
|
||||
# der Lizenz oder (wenn Sie es wuenschen) jeder spaeteren Version.
|
||||
# Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste
|
||||
# der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS.
|
||||
#
|
||||
# $Id: configure.in,v 1.59 2002/09/17 17:12:24 alex Exp $
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
# Please read the file COPYING, README and AUTHORS for more information.
|
||||
#
|
||||
|
||||
# -- Initialisierung --
|
||||
# -- Initialisation --
|
||||
|
||||
AC_INIT
|
||||
AC_PREREQ(2.50)
|
||||
AC_INIT(ngircd, 14)
|
||||
AC_CONFIG_SRCDIR(src/ngircd/ngircd.c)
|
||||
AC_CANONICAL_TARGET
|
||||
AC_CONFIG_SRCDIR(src/config.h.in)
|
||||
AM_INIT_AUTOMAKE(ngircd,0.5.0-pre2)
|
||||
AM_INIT_AUTOMAKE(1.6)
|
||||
AM_CONFIG_HEADER(src/config.h)
|
||||
|
||||
# -- Templates fuer config.h --
|
||||
# -- Templates for config.h --
|
||||
|
||||
AH_TEMPLATE([DEBUG], [Define if debug-mode should be enabled])
|
||||
AH_TEMPLATE([HAVE_socklen_t], [Define if socklen_t exists])
|
||||
AH_TEMPLATE([SNIFFER], [Define if IRC sniffer should be enabled])
|
||||
AH_TEMPLATE([STRICT_RFC], [Define if ngIRCd should behave strict RFC compliant])
|
||||
AH_TEMPLATE([USE_SYSLOG], [Define if syslog should be used for logging])
|
||||
AH_TEMPLATE([SYSLOG], [Define if syslog should be used for logging])
|
||||
AH_TEMPLATE([ZLIB], [Define if zlib compression should be enabled])
|
||||
AH_TEMPLATE([TCPWRAP], [Define if TCP wrappers should be used])
|
||||
AH_TEMPLATE([IRCPLUS], [Define if IRC+ protocol should be used])
|
||||
AH_TEMPLATE([WANT_IPV6], [Define if IPV6 protocol should be enabled])
|
||||
AH_TEMPLATE([ZEROCONF], [Define if support for Zeroconf should be included])
|
||||
AH_TEMPLATE([IDENTAUTH], [Define if the server should do IDENT requests])
|
||||
|
||||
AH_TEMPLATE([TARGET_OS], [Target operating system name])
|
||||
AH_TEMPLATE([TARGET_VENDOR], [Target system vendor])
|
||||
@@ -38,7 +40,7 @@ AH_TEMPLATE([TARGET_CPU], [Target CPU name])
|
||||
|
||||
AC_PROG_CC
|
||||
|
||||
# -- Hilfsprogramme --
|
||||
# -- Helper programs --
|
||||
|
||||
AC_PROG_AWK
|
||||
AC_PROG_INSTALL
|
||||
@@ -48,17 +50,52 @@ AC_PROG_RANLIB
|
||||
|
||||
# -- Compiler Features --
|
||||
|
||||
AC_LANG_C
|
||||
|
||||
AM_C_PROTOTYPES
|
||||
AC_C_CONST
|
||||
AC_C_INLINE
|
||||
|
||||
# -- Header --
|
||||
# -- Hard coded system and compiler dependencies/features/options ... --
|
||||
|
||||
AC_DEFUN([GCC_STACK_PROTECT_CC],[
|
||||
ssp_cc=yes
|
||||
# we use -fstack-protector-all for the test to enfoce the use of the guard variable
|
||||
AC_MSG_CHECKING([whether ${CC} accepts -fstack-protector])
|
||||
ssp_old_cflags="$CFLAGS"
|
||||
CFLAGS="$CFLAGS -fstack-protector-all"
|
||||
AC_TRY_LINK(,,, ssp_cc=no)
|
||||
echo $ssp_cc
|
||||
CFLAGS="$ssp_old_cflags"
|
||||
if test "X$ssp_cc" = "Xyes"; then
|
||||
CFLAGS="$CFLAGS -fstack-protector"
|
||||
AC_DEFINE([ENABLE_SSP_CC], 1, [Define if SSP C support is enabled.])
|
||||
fi
|
||||
])
|
||||
|
||||
|
||||
if test "$GCC" = "yes"; then
|
||||
# We are using the GNU C compiler. Good!
|
||||
CFLAGS="$CFLAGS -pipe -W -Wall -Wpointer-arith -Wstrict-prototypes"
|
||||
|
||||
GCC_STACK_PROTECT_CC
|
||||
fi
|
||||
|
||||
case "$target_os" in
|
||||
hpux*)
|
||||
# This is HP/UX, we need to define _XOPEN_SOURCE_EXTENDED
|
||||
# (tested with HP/UX 11.11)
|
||||
CFLAGS="$CFLAGS -D_XOPEN_SOURCE_EXTENDED"
|
||||
;;
|
||||
esac
|
||||
|
||||
# Add additional CFLAGS, eventually specified on the command line:
|
||||
test -n "$CFLAGS_ADD" && CFLAGS="$CFLAGS $CFLAGS_ADD"
|
||||
|
||||
CFLAGS="$CFLAGS -DSYSCONFDIR='\"\$(sysconfdir)\"'"
|
||||
|
||||
# -- Headers --
|
||||
|
||||
AC_HEADER_STDC
|
||||
|
||||
AC_HEADER_TIME
|
||||
|
||||
AC_HEADER_SYS_WAIT
|
||||
|
||||
AC_CHECK_HEADERS([ \
|
||||
@@ -66,14 +103,14 @@ AC_CHECK_HEADERS([ \
|
||||
strings.h sys/socket.h sys/time.h unistd.h \
|
||||
],,AC_MSG_ERROR([required C header missing!]))
|
||||
|
||||
AC_CHECK_HEADERS(arpa/inet.h malloc.h stdint.h sys/select.h varargs.h)
|
||||
AC_CHECK_HEADERS([arpa/inet.h ctype.h malloc.h stdbool.h stddef.h varargs.h])
|
||||
|
||||
# -- Datentypen --
|
||||
# -- Datatypes --
|
||||
|
||||
AC_MSG_CHECKING(whether socklen_t exists)
|
||||
AC_TRY_COMPILE([
|
||||
#include <sys/socket.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/socket.h>
|
||||
],[
|
||||
socklen_t a, b;
|
||||
a = 2; b = 4; a += b;
|
||||
@@ -84,49 +121,346 @@ AC_TRY_COMPILE([
|
||||
])
|
||||
|
||||
AC_TYPE_SIGNAL
|
||||
|
||||
AC_TYPE_SIZE_T
|
||||
|
||||
|
||||
# -- Libraries --
|
||||
|
||||
AC_CHECK_LIB(UTIL,memmove)
|
||||
AC_CHECK_LIB(socket,bind)
|
||||
AC_CHECK_LIB(nsl,gethostent)
|
||||
|
||||
# -- Funktionen --
|
||||
|
||||
AC_FUNC_MALLOC
|
||||
# -- Functions --
|
||||
|
||||
AC_FUNC_FORK
|
||||
|
||||
AC_FUNC_STRFTIME
|
||||
|
||||
AC_CHECK_FUNCS([ \
|
||||
bind gethostbyaddr gethostbyname gethostname inet_ntoa memmove \
|
||||
memset select setsockopt socket strcasecmp strchr strerror \
|
||||
strstr waitpid \
|
||||
],,AC_MSG_ERROR([required function missing!]))
|
||||
bind gethostbyaddr gethostbyname gethostname inet_ntoa \
|
||||
setsid setsockopt socket strcasecmp waitpid],,AC_MSG_ERROR([required function missing!]))
|
||||
|
||||
AC_CHECK_FUNCS(inet_aton sigaction snprintf vsnprintf)
|
||||
AC_CHECK_FUNCS(inet_aton isdigit sigaction snprintf vsnprintf strdup strlcpy strlcat strtok_r)
|
||||
|
||||
# -- Konfigurationsoptionen --
|
||||
# -- Configuration options --
|
||||
|
||||
# use syslog?
|
||||
|
||||
x_syslog_on=no
|
||||
AC_ARG_ENABLE(syslog,
|
||||
[ --disable-syslog disable syslog (autodetected by default)],
|
||||
[ if test "$enableval" = "yes"; then
|
||||
AC_CHECK_HEADER(syslog.h, x_syslog_on=yes,
|
||||
AC_MSG_ERROR([Can't enable syslog: syslog.h not found!])
|
||||
AC_ARG_WITH(syslog,
|
||||
[ --without-syslog disable syslog (autodetected by default)],
|
||||
[ if test "$withval" != "no"; then
|
||||
if test "$withval" != "yes"; then
|
||||
CFLAGS="-I$withval/include $CFLAGS"
|
||||
CPPFLAGS="-I$withval/include $CPPFLAGS"
|
||||
LDFLAGS="-L$withval/lib $LDFLAGS"
|
||||
fi
|
||||
AC_CHECK_LIB(be, syslog)
|
||||
AC_CHECK_FUNCS(syslog, x_syslog_on=yes,
|
||||
AC_MSG_ERROR([Can't enable syslog!])
|
||||
)
|
||||
fi
|
||||
],
|
||||
[ AC_CHECK_HEADER(syslog.h, x_syslog_on=yes) ]
|
||||
[
|
||||
AC_CHECK_LIB(be, syslog)
|
||||
AC_CHECK_FUNCS(syslog, x_syslog_on=yes)
|
||||
]
|
||||
)
|
||||
if test "$x_syslog_on" = "yes"; then
|
||||
AC_DEFINE(USE_SYSLOG, 1)
|
||||
AC_CHECK_LIB(be,syslog)
|
||||
AC_DEFINE(SYSLOG, 1)
|
||||
AC_CHECK_HEADERS(syslog.h,,AC_MSG_ERROR([required C header missing!]))
|
||||
fi
|
||||
|
||||
# use zlib compression?
|
||||
|
||||
x_zlib_on=no
|
||||
AC_ARG_WITH(zlib,
|
||||
[ --without-zlib disable zlib compression (autodetected by default)],
|
||||
[ if test "$withval" != "no"; then
|
||||
if test "$withval" != "yes"; then
|
||||
CFLAGS="-I$withval/include $CFLAGS"
|
||||
CPPFLAGS="-I$withval/include $CPPFLAGS"
|
||||
LDFLAGS="-L$withval/lib $LDFLAGS"
|
||||
fi
|
||||
AC_CHECK_LIB(z, deflate)
|
||||
AC_CHECK_FUNCS(deflate, x_zlib_on=yes,
|
||||
AC_MSG_ERROR([Can't enable zlib!])
|
||||
)
|
||||
fi
|
||||
],
|
||||
[ AC_CHECK_LIB(z, deflate)
|
||||
AC_CHECK_FUNCS(deflate, x_zlib_on=yes)
|
||||
]
|
||||
)
|
||||
if test "$x_zlib_on" = "yes"; then
|
||||
AC_DEFINE(ZLIB, 1)
|
||||
AC_CHECK_HEADERS(zlib.h,,AC_MSG_ERROR([required C header missing!]))
|
||||
fi
|
||||
|
||||
# detect which IO API to use:
|
||||
|
||||
x_io_backend=none
|
||||
|
||||
AC_ARG_WITH(select,
|
||||
[ --without-select disable select IO support (autodetected by default)],
|
||||
[ if test "$withval" != "no"; then
|
||||
if test "$withval" != "yes"; then
|
||||
CFLAGS="-I$withval/include $CFLAGS"
|
||||
CPPFLAGS="-I$withval/include $CPPFLAGS"
|
||||
LDFLAGS="-L$withval/lib $LDFLAGS"
|
||||
fi
|
||||
AC_CHECK_FUNCS(select, x_io_select=yes,
|
||||
AC_MSG_ERROR([Can't enable select IO support!])
|
||||
)
|
||||
fi
|
||||
],
|
||||
[
|
||||
AC_CHECK_FUNCS(select, x_io_select=yes)
|
||||
]
|
||||
)
|
||||
|
||||
AC_ARG_WITH(poll,
|
||||
[ --without-poll disable poll support (autodetected by default)],
|
||||
[ if test "$withval" != "no"; then
|
||||
if test "$withval" != "yes"; then
|
||||
CFLAGS="-I$withval/include $CFLAGS"
|
||||
CPPFLAGS="-I$withval/include $CPPFLAGS"
|
||||
LDFLAGS="-L$withval/lib $LDFLAGS"
|
||||
fi
|
||||
AC_CHECK_FUNCS(poll, x_io_backend=poll\(\),
|
||||
AC_MSG_ERROR([Can't enable poll IO support!])
|
||||
)
|
||||
fi
|
||||
],
|
||||
[
|
||||
AC_CHECK_FUNCS(poll, x_io_backend=poll\(\))
|
||||
]
|
||||
)
|
||||
|
||||
AC_ARG_WITH(devpoll,
|
||||
[ --without-devpoll disable /dev/poll IO support (autodetected by default)],
|
||||
[ if test "$withval" != "no"; then
|
||||
if test "$withval" != "yes"; then
|
||||
CFLAGS="-I$withval/include $CFLAGS"
|
||||
CPPFLAGS="-I$withval/include $CPPFLAGS"
|
||||
LDFLAGS="-L$withval/lib $LDFLAGS"
|
||||
fi
|
||||
|
||||
AC_CHECK_HEADERS(sys/devpoll.h,,AC_MSG_ERROR([required C header missing!]))
|
||||
fi
|
||||
],
|
||||
[
|
||||
AC_CHECK_HEADERS(sys/devpoll.h, x_io_backend=/dev/poll)
|
||||
]
|
||||
)
|
||||
|
||||
AC_ARG_WITH(epoll,
|
||||
[ --without-epoll disable epoll IO support (autodetected by default)],
|
||||
[ if test "$withval" != "no"; then
|
||||
if test "$withval" != "yes"; then
|
||||
CFLAGS="-I$withval/include $CFLAGS"
|
||||
CPPFLAGS="-I$withval/include $CPPFLAGS"
|
||||
LDFLAGS="-L$withval/lib $LDFLAGS"
|
||||
fi
|
||||
AC_CHECK_FUNCS(epoll_create, x_io_epoll=yes,
|
||||
AC_MSG_ERROR([Can't enable epoll IO support!])
|
||||
)
|
||||
fi
|
||||
],
|
||||
[
|
||||
AC_CHECK_FUNCS(epoll_create, x_io_epoll=yes)
|
||||
]
|
||||
)
|
||||
|
||||
AC_ARG_WITH(kqueue,
|
||||
[ --without-kqueue disable kqueue IO support (autodetected by default)],
|
||||
[ if test "$withval" != "no"; then
|
||||
if test "$withval" != "yes"; then
|
||||
CFLAGS="-I$withval/include $CFLAGS"
|
||||
CPPFLAGS="-I$withval/include $CPPFLAGS"
|
||||
LDFLAGS="-L$withval/lib $LDFLAGS"
|
||||
fi
|
||||
AC_CHECK_FUNCS(kqueue, x_io_backend=kqueue\(\),
|
||||
AC_MSG_ERROR([Can't enable kqueue IO support!])
|
||||
)
|
||||
fi
|
||||
],
|
||||
[
|
||||
AC_CHECK_FUNCS(kqueue, x_io_backend=kqueue\(\))
|
||||
]
|
||||
)
|
||||
|
||||
if test "$x_io_epoll" = "yes" -a "$x_io_select" = "yes"; then
|
||||
# when epoll() and select() are available, we'll use both!
|
||||
x_io_backend="epoll(), select()"
|
||||
else
|
||||
if test "$x_io_epoll" = "yes"; then
|
||||
# we prefere epoll() if it is available
|
||||
x_io_backend="epoll()"
|
||||
else
|
||||
if test "$x_io_select" = "yes" -a "$x_io_backend" = "none"; then
|
||||
# we'll use select, when available and no "better"
|
||||
# interface has been detected ...
|
||||
x_io_backend="select()"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if test "$x_io_backend" = "none"; then
|
||||
AC_MSG_ERROR([No useabe IO API activated/found!?])
|
||||
fi
|
||||
|
||||
# use SSL?
|
||||
|
||||
AC_ARG_WITH(openssl,
|
||||
[ --with-openssl enable SSL support using OpenSSL],
|
||||
[ if test "$withval" = "yes"; then
|
||||
if test "$withval" != "yes"; then
|
||||
CFLAGS="-I$withval/include $CFLAGS"
|
||||
CPPFLAGS="-I$withval/include $CPPFLAGS"
|
||||
LDFLAGS="-L$withval/lib $LDFLAGS"
|
||||
fi
|
||||
AC_CHECK_LIB(crypto, BIO_s_mem)
|
||||
AC_CHECK_LIB(ssl, SSL_library_init)
|
||||
AC_CHECK_FUNCS(SSL_library_init, x_ssl_openssl=yes,
|
||||
AC_MSG_ERROR([Can't enable openssl])
|
||||
)
|
||||
fi
|
||||
]
|
||||
)
|
||||
|
||||
AC_ARG_WITH(gnutls,
|
||||
[ --with-gnutls enable SSL support using gnutls],
|
||||
[ if test "$withval" = "yes"; then
|
||||
if test "$withval" != "yes"; then
|
||||
CFLAGS="-I$withval/include $CFLAGS"
|
||||
CPPFLAGS="-I$withval/include $CPPFLAGS"
|
||||
LDFLAGS="-L$withval/lib $LDFLAGS"
|
||||
fi
|
||||
AC_CHECK_LIB(gnutls, gnutls_global_init)
|
||||
AC_CHECK_FUNCS(gnutls_global_init, x_ssl_gnutls=yes,
|
||||
AC_MSG_ERROR([Can't enable gnutls])
|
||||
)
|
||||
fi
|
||||
]
|
||||
)
|
||||
|
||||
x_ssl_lib="no"
|
||||
if test "$x_ssl_gnutls" = "yes"; then
|
||||
if test "$x_ssl_openssl" = "yes";then
|
||||
AC_MSG_ERROR([Cannot enable both gnutls and openssl])
|
||||
fi
|
||||
x_ssl_lib=gnutls
|
||||
fi
|
||||
if test "$x_ssl_openssl" = "yes"; then
|
||||
x_ssl_lib=openssl
|
||||
fi
|
||||
|
||||
# use TCP wrappers?
|
||||
|
||||
x_tcpwrap_on=no
|
||||
AC_ARG_WITH(tcp-wrappers,
|
||||
[ --with-tcp-wrappers enable TCP wrappers support],
|
||||
[ if test "$withval" != "no"; then
|
||||
if test "$withval" != "yes"; then
|
||||
CFLAGS="-I$withval/include $CFLAGS"
|
||||
CPPFLAGS="-I$withval/include $CPPFLAGS"
|
||||
LDFLAGS="-L$withval/lib $LDFLAGS"
|
||||
fi
|
||||
AC_MSG_CHECKING(for hosts_access)
|
||||
LIBS="-lwrap $LIBS"
|
||||
AC_TRY_LINK([
|
||||
#include <tcpd.h>
|
||||
int allow_severity = 0;
|
||||
int deny_severity = 0;
|
||||
],[
|
||||
tcpd_warn("link test");
|
||||
],[
|
||||
AC_MSG_RESULT(yes)
|
||||
AC_DEFINE(TCPWRAP, 1)
|
||||
x_tcpwrap_on=yes
|
||||
],[
|
||||
AC_MSG_RESULT(no)
|
||||
AC_MSG_ERROR([Can't enable TCP wrappers!])
|
||||
])
|
||||
fi
|
||||
]
|
||||
)
|
||||
|
||||
# include support for "zeroconf"?
|
||||
|
||||
x_zeroconf_on=no
|
||||
AC_ARG_WITH(zeroconf,
|
||||
[ --with-zeroconf enable support for "Zeroconf"],
|
||||
[ if test "$withval" != "no"; then
|
||||
if test "$withval" != "yes"; then
|
||||
CFLAGS="-I$withval/include $CFLAGS"
|
||||
CPPFLAGS="-I$withval/include $CPPFLAGS"
|
||||
LDFLAGS="-L$withval/lib $LDFLAGS"
|
||||
fi
|
||||
AC_CHECK_FUNCS(DNSServiceRegistrationCreate, x_zeroconf_on=osx,
|
||||
[
|
||||
AC_CHECK_LIB(pthread, pthread_mutexattr_init)
|
||||
AC_CHECK_LIB(howl, sw_discovery_init)
|
||||
AC_CHECK_FUNCS(sw_discovery_init, \
|
||||
x_zeroconf_on=howl, \
|
||||
AC_MSG_ERROR([Can't enable Zeroconf!]))
|
||||
])
|
||||
fi
|
||||
]
|
||||
)
|
||||
if test "$x_zeroconf_on" = "osx"; then
|
||||
AC_CHECK_HEADERS([DNSServiceDiscovery/DNSServiceDiscovery.h \
|
||||
mach/port.h],,AC_MSG_ERROR([required C header missing!]))
|
||||
AC_DEFINE(ZEROCONF, 1)
|
||||
fi
|
||||
if test "$x_zeroconf_on" = "howl"; then
|
||||
for dir in /usr/local/include /usr/local/include/howl* \
|
||||
/usr/include /usr/include/howl* \
|
||||
/usr/local/include/avahi* /usr/include/avahi*; do
|
||||
test -d "$dir" || continue
|
||||
AC_MSG_CHECKING([for Howl headers in $dir])
|
||||
if test -f "$dir/rendezvous/rendezvous.h"; then
|
||||
if test "$dir" != "/usr/local/include" -a \
|
||||
"$dir" != "/usr/include"; then
|
||||
CFLAGS="-I$dir $CFLAGS"
|
||||
CPPFLAGS="-I$dir $CPPFLAGS"
|
||||
fi
|
||||
AC_MSG_RESULT(yes)
|
||||
break
|
||||
else
|
||||
AC_MSG_RESULT(no)
|
||||
fi
|
||||
done
|
||||
AC_CHECK_HEADERS([rendezvous/rendezvous.h],, \
|
||||
AC_MSG_ERROR([required C header missing!]))
|
||||
AC_DEFINE(ZEROCONF, 1)
|
||||
fi
|
||||
|
||||
# do IDENT requests using libident?
|
||||
|
||||
x_identauth_on=no
|
||||
AC_ARG_WITH(ident,
|
||||
[ --with-ident enable "IDENT" ("AUTH") protocol support],
|
||||
[ if test "$withval" != "no"; then
|
||||
if test "$withval" != "yes"; then
|
||||
CFLAGS="-I$withval/include $CFLAGS"
|
||||
CPPFLAGS="-I$withval/include $CPPFLAGS"
|
||||
LDFLAGS="-L$withval/lib $LDFLAGS"
|
||||
fi
|
||||
AC_CHECK_LIB(ident, ident_id)
|
||||
AC_CHECK_FUNCS(ident_id, x_identauth_on=yes,
|
||||
AC_MSG_ERROR([Can't enable IDENT support!])
|
||||
)
|
||||
fi
|
||||
]
|
||||
)
|
||||
if test "$x_identauth_on" = "yes"; then
|
||||
AC_DEFINE(IDENTAUTH, 1)
|
||||
AC_CHECK_HEADERS(ident.h,,AC_MSG_ERROR([required C header missing!]))
|
||||
fi
|
||||
|
||||
# compile in IRC+ protocol support?
|
||||
|
||||
x_ircplus_on=yes
|
||||
AC_ARG_ENABLE(ircplus,
|
||||
[ --disable-ircplus disable IRC+ protocol],
|
||||
@@ -136,6 +470,22 @@ if test "$x_ircplus_on" = "yes"; then
|
||||
AC_DEFINE(IRCPLUS, 1)
|
||||
fi
|
||||
|
||||
# enable support for IPv6?
|
||||
x_ipv6_on=no
|
||||
AC_ARG_ENABLE(ipv6,
|
||||
[ --enable-ipv6 enable IPv6 protocol support],
|
||||
if test "$enableval" = "yes"; then x_ipv6_on=yes; fi
|
||||
)
|
||||
if test "$x_ipv6_on" = "yes"; then
|
||||
AC_CHECK_FUNCS([ \
|
||||
getaddrinfo getnameinfo \
|
||||
],,AC_MSG_ERROR([required function missing for IPv6 support!]))
|
||||
AC_DEFINE(WANT_IPV6, 1)
|
||||
fi
|
||||
|
||||
# compile in IRC "sniffer"?
|
||||
|
||||
x_sniffer_on=no; x_debug_on=no
|
||||
AC_ARG_ENABLE(sniffer,
|
||||
[ --enable-sniffer enable IRC traffic sniffer (enables debug mode)],
|
||||
if test "$enableval" = "yes"; then
|
||||
@@ -144,14 +494,21 @@ AC_ARG_ENABLE(sniffer,
|
||||
fi
|
||||
)
|
||||
|
||||
# enable additional debugging code?
|
||||
|
||||
AC_ARG_ENABLE(debug,
|
||||
[ --enable-debug show additional debug output],
|
||||
if test "$enableval" = "yes"; then x_debug_on=yes; fi
|
||||
)
|
||||
if test "$x_debug_on" = "yes"; then
|
||||
AC_DEFINE(DEBUG, 1)
|
||||
test "$GCC" = "yes" && CFLAGS="-pedantic $CFLAGS"
|
||||
AC_CHECK_FUNCS(mtrace)
|
||||
fi
|
||||
|
||||
# enable "strict RFC rules"?
|
||||
|
||||
x_strict_rfc_on=no
|
||||
AC_ARG_ENABLE(strict-rfc,
|
||||
[ --enable-strict-rfc strict RFC conformance -- may break clients!],
|
||||
if test "$enableval" = "yes"; then
|
||||
@@ -160,44 +517,48 @@ AC_ARG_ENABLE(strict-rfc,
|
||||
fi
|
||||
)
|
||||
|
||||
|
||||
# -- Definitionen --
|
||||
# -- Definitions --
|
||||
|
||||
AC_DEFINE_UNQUOTED(TARGET_CPU, "$target_cpu" )
|
||||
AC_DEFINE_UNQUOTED(TARGET_VENDOR, "$target_vendor" )
|
||||
AC_DEFINE_UNQUOTED(TARGET_OS, "$target_os" )
|
||||
|
||||
if test `uname` = "A/UX"; then
|
||||
# unter A/UX sollte _POSIX_SOURCE definiert sein.
|
||||
AC_MSG_RESULT([detected A/UX, defining _POSIX_SOURCE])
|
||||
CFLAGS="$CFLAGS -D_POSIX_SOURCE"
|
||||
fi
|
||||
# Add additional CFLAGS, eventually specified on the command line, but after
|
||||
# running this configure script. Useful for "-Werror" for example.
|
||||
test -n "$CFLAGS_END" && CFLAGS="$CFLAGS $CFLAGS_END"
|
||||
|
||||
# -- Variablen --
|
||||
|
||||
if test "$GCC" = "yes"; then
|
||||
CFLAGS="-Wall $CFLAGS"
|
||||
fi
|
||||
|
||||
CFLAGS="$CFLAGS -DSYSCONFDIR='\"\$(sysconfdir)\"'"
|
||||
|
||||
# -- Ausgabe der Dateien --
|
||||
# -- Generate files --
|
||||
|
||||
AC_OUTPUT([ \
|
||||
Makefile \
|
||||
doc/Makefile \
|
||||
doc/en/Makefile \
|
||||
MacOSX/Makefile \
|
||||
MacOSX/ngircd.pbproj/Makefile \
|
||||
doc/src/Makefile \
|
||||
src/Makefile \
|
||||
src/portab/Makefile \
|
||||
src/ipaddr/Makefile \
|
||||
src/tool/Makefile \
|
||||
src/ngircd/Makefile \
|
||||
src/testsuite/Makefile \
|
||||
man/Makefile \
|
||||
contrib/Makefile \
|
||||
contrib/Debian/Makefile \
|
||||
contrib/MacOSX/Makefile \
|
||||
contrib/MacOSX/ngIRCd.xcodeproj/Makefile \
|
||||
contrib/MacOSX/ngIRCd.pmdoc/Makefile \
|
||||
])
|
||||
|
||||
# -- Ergebnis --
|
||||
type dpkg >/dev/null 2>&1
|
||||
if test $? -eq 0; then
|
||||
# Generate debian/ link if the dpkg command exists
|
||||
# (read: if we are running on a debian compatible system)
|
||||
echo "creating Debian-specific links ..."
|
||||
test -f debian/rules || ln -s contrib/Debian debian
|
||||
fi
|
||||
|
||||
# -- Result --
|
||||
|
||||
echo
|
||||
echo "ngIRCd $PACKAGE_VERSION has been configured with the following options:"
|
||||
echo
|
||||
|
||||
# Someone please show me a better way :) [borrowed by OpenSSH]
|
||||
@@ -205,26 +566,79 @@ B=`eval echo ${bindir}` ; B=`eval echo ${B}`
|
||||
S=`eval echo ${sbindir}` ; S=`eval echo ${S}`
|
||||
C=`eval echo ${sysconfdir}` ; C=`eval echo ${C}`
|
||||
M=`eval echo ${mandir}` ; M=`eval echo ${M}`
|
||||
D=`eval echo ${datadir}/doc/${PACKAGE}` ; D=`eval echo ${D}`
|
||||
|
||||
echo " host: ${host}"
|
||||
echo " compiler: ${CC}"
|
||||
echo " compiler flags: ${CFLAGS}"
|
||||
echo " preprocessor flags: ${CPPFLAGS}"
|
||||
echo " linker flags: ${LDFLAGS}"
|
||||
echo " libraries: ${LIBS}"
|
||||
echo " Target: ${target}"
|
||||
test "$target" != "$host" && echo " Host: ${host}"
|
||||
echo " Compiler: ${CC}"
|
||||
test -n "$CFLAGS" && echo " Compiler flags: ${CFLAGS}"
|
||||
test -n "$CPPFLAGS" && echo " Preprocessor flags: ${CPPFLAGS}"
|
||||
test -n "$LDFLAGS" && echo " Linker flags: ${LDFLAGS}"
|
||||
test -n "$LIBS" && echo " Libraries: ${LIBS}"
|
||||
echo
|
||||
echo " 'ngircd' binary: $S"
|
||||
echo " Configuration file: $C"
|
||||
echo " Manual pages: $M"
|
||||
echo " Documentation: $D"
|
||||
echo
|
||||
|
||||
echo " 'ngircd' binary: $S"
|
||||
echo " configuration file: $C"
|
||||
echo " manual pages: $M"
|
||||
echo
|
||||
echo $ECHO_N " Syslog support: $ECHO_C"
|
||||
test "$x_syslog_on" = "yes" \
|
||||
&& echo $ECHO_N "yes $ECHO_C" \
|
||||
|| echo $ECHO_N "no $ECHO_C"
|
||||
echo $ECHO_N " Enable debug code: $ECHO_C"
|
||||
test "$x_debug_on" = "yes" \
|
||||
&& echo "yes" \
|
||||
|| echo "no"
|
||||
|
||||
echo $ECHO_N " active options: $ECHO_C"
|
||||
test "$x_syslog_on" = "yes" && echo $ECHO_N "Syslog $ECHO_C"
|
||||
test "$x_debug_on" = "yes" && echo $ECHO_N "Debug $ECHO_C"
|
||||
test "$x_sniffer_on" = "yes" && echo $ECHO_N "Sniffer $ECHO_C"
|
||||
test "$x_strict_rfc_on" = "yes" && echo $ECHO_N "Strict-RFC $ECHO_C"
|
||||
test "$x_ircplus_on" = "yes" && echo $ECHO_N "IRC+ $ECHO_C"
|
||||
echo; echo
|
||||
echo $ECHO_N " zlib compression: $ECHO_C"
|
||||
test "$x_zlib_on" = "yes" \
|
||||
&& echo $ECHO_N "yes $ECHO_C" \
|
||||
|| echo $ECHO_N "no $ECHO_C"
|
||||
echo $ECHO_N " IRC sniffer: $ECHO_C"
|
||||
test "$x_sniffer_on" = "yes" \
|
||||
&& echo "yes" \
|
||||
|| echo "no"
|
||||
|
||||
echo $ECHO_N " Use TCP Wrappers: $ECHO_C"
|
||||
test "$x_tcpwrap_on" = "yes" \
|
||||
&& echo $ECHO_N "yes $ECHO_C" \
|
||||
|| echo $ECHO_N "no $ECHO_C"
|
||||
echo $ECHO_N " Strict RFC mode: $ECHO_C"
|
||||
test "$x_strict_rfc_on" = "yes" \
|
||||
&& echo "yes" \
|
||||
|| echo "no"
|
||||
|
||||
echo $ECHO_N " Zeroconf support: $ECHO_C"
|
||||
case "$x_zeroconf_on" in
|
||||
osx)
|
||||
echo $ECHO_N "Apple $ECHO_C"
|
||||
;;
|
||||
howl)
|
||||
echo $ECHO_N "Howl $ECHO_C"
|
||||
;;
|
||||
*)
|
||||
echo $ECHO_N "no $ECHO_C"
|
||||
;;
|
||||
esac
|
||||
echo $ECHO_N " IRC+ protocol: $ECHO_C"
|
||||
test "$x_ircplus_on" = "yes" \
|
||||
&& echo "yes" \
|
||||
|| echo "no"
|
||||
|
||||
echo $ECHO_N " IDENT support: $ECHO_C"
|
||||
test "$x_identauth_on" = "yes" \
|
||||
&& echo $ECHO_N "yes $ECHO_C" \
|
||||
|| echo $ECHO_N "no $ECHO_C"
|
||||
echo $ECHO_N " I/O backend: $ECHO_C"
|
||||
echo "\"$x_io_backend\""
|
||||
|
||||
echo $ECHO_N " IPv6 protocol: $ECHO_C"
|
||||
echo $ECHO_N "$x_ipv6_on $ECHO_C"
|
||||
|
||||
echo $ECHO_N " SSL support: $ECHO_C"
|
||||
echo "$x_ssl_lib"
|
||||
|
||||
echo
|
||||
|
||||
# -eof-
|
||||
|
9
contrib/Debian/.gitignore
vendored
Normal file
9
contrib/Debian/.gitignore
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
*.log
|
||||
*.debhelper
|
||||
*.substvars
|
||||
files
|
||||
ngircd/
|
||||
ngircd-full/
|
||||
ngircd-full.default
|
||||
ngircd-full.init
|
||||
ngircd-full.postinst
|
26
contrib/Debian/Makefile.am
Normal file
26
contrib/Debian/Makefile.am
Normal file
@@ -0,0 +1,26 @@
|
||||
#
|
||||
# ngIRCd -- The Next Generation IRC Daemon
|
||||
# Copyright (c)2001-2008 Alexander Barton (alex@barton.de)
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
# Please read the file COPYING, README and AUTHORS for more information.
|
||||
#
|
||||
|
||||
EXTRA_DIST = rules changelog compat control copyright \
|
||||
ngircd.init ngircd.default ngircd.postinst
|
||||
|
||||
maintainer-clean-local:
|
||||
rm -f Makefile Makefile.in
|
||||
|
||||
clean-local:
|
||||
rm -f ngircd.postinst.debhelper ngircd.postrm.debhelper \
|
||||
ngircd.prerm.debhelper ngircd.substvars
|
||||
rm -f ngircd-full.postinst.debhelper ngircd-full.postrm.debhelper \
|
||||
ngircd-full.prerm.debhelper ngircd-full.substvars
|
||||
rm -rf ngircd ngircd-full
|
||||
rm -f files
|
||||
|
||||
# -eof-
|
287
contrib/Debian/changelog
Normal file
287
contrib/Debian/changelog
Normal file
@@ -0,0 +1,287 @@
|
||||
ngircd (14-0ab1) unstable; urgency=low
|
||||
|
||||
* New "upstream" release: ngIRCd 14.
|
||||
|
||||
-- Alexander Barton <alex@barton.de> Mon, 20 Apr 2009 11:09:12 +0200
|
||||
|
||||
ngircd (14~rc1-0ab1) unstable; urgency=low
|
||||
|
||||
* New "upstream" release candidate 1 for ngIRCd Release 14.
|
||||
|
||||
-- Alexander Barton <alex@barton.de> Sun, 29 Mar 2009 17:09:17 +0200
|
||||
|
||||
ngircd (13-0ab1) unstable; urgency=low
|
||||
|
||||
* New "upstream" release: ngIRCd 13.
|
||||
|
||||
-- Alexander Barton <alex@barton.de> Thu, 25 Dec 2008 23:09:58 +0100
|
||||
|
||||
ngircd (13~rc1-0ab1) unstable; urgency=low
|
||||
|
||||
* New "upstream" release candidate 1 for ngIRCd Release 13.
|
||||
|
||||
-- Alexander Barton <alex@barton.de> Fri, 21 Nov 2008 22:04:41 +0100
|
||||
|
||||
ngircd (0.12.1-0ab1+dev) unstable; urgency=low
|
||||
|
||||
* Update package for testing the new "upstream" features:
|
||||
- Support for IRC services (see http://www.ircservices.za.net),
|
||||
- Encrypted connections using GNU TLS (ngircd-full),
|
||||
- Support for the IPv6 protocol (ngircd-full).
|
||||
|
||||
-- Alexander Barton <alex@barton.de> Fri, 03 Oct 2008 16:22:55 +0200
|
||||
|
||||
ngircd (0.12.1-0ab1) unstable; urgency=low
|
||||
|
||||
* New "upstream" release ngIRCd 0.12.1.
|
||||
|
||||
-- Alexander Barton <alex@barton.de> Wed, 9 Jul 2008 11:27:00 +0200
|
||||
|
||||
ngircd (0.12.0-0ab1) unstable; urgency=low
|
||||
|
||||
* New "upstream" release ngIRCd 0.12.0.
|
||||
|
||||
-- Alexander Barton <alex@barton.de> Tue, 13 May 2008 12:30:31 +0200
|
||||
|
||||
ngircd (0.12.0-0ab0-pre2) unstable; urgency=low
|
||||
|
||||
* Second prerelease of upcoming new "upstrem" release 0.12.0-pre1.
|
||||
|
||||
-- Alexander Barton <alex@barton.de> Tue, 29 Apr 2008 23:06:14 +0200
|
||||
|
||||
ngircd (0.12.0-0ab0-pre1) unstable; urgency=low
|
||||
|
||||
* Prereloease of upcoming new "upstrem" release 0.12.0-pre1.
|
||||
|
||||
-- Alexander Barton <alex@barton.de> Sun, 20 Apr 2008 15:43:34 +0200
|
||||
|
||||
ngircd (0.11.0-0ab0-pre2) unstable; urgency=low
|
||||
|
||||
* Second prerelease of upcoming new "upstream release".
|
||||
|
||||
-- Alexander Barton <alex@barton.de> Mon, 7 Jan 2008 15:32:42 +0100
|
||||
|
||||
ngircd (0.11.0-0ab0-pre1) unstable; urgency=low
|
||||
|
||||
* Prerelease of upcoming new "upstream release".
|
||||
|
||||
-- Alexander Barton <alex@barton.de> Wed, 2 Jan 2008 21:33:15 +0100
|
||||
|
||||
ngircd (0.10.4-0ab1) unstable; urgency=high
|
||||
|
||||
* New "upstream" release: 0.10.4 - fixing a security bug.
|
||||
|
||||
-- Alexander Barton <alex@barton.de> Mon, 7 Jan 2008 22:04:44 +0100
|
||||
|
||||
ngircd (0.10.0-0ab1) unstable; urgency=low
|
||||
|
||||
* New "upstream" release: 0.10.0
|
||||
|
||||
-- Alexander Barton <alex@barton.de> Sun, 1 Oct 2006 18:14:21 +0200
|
||||
|
||||
ngircd (0.10.0-0ab0-pre2-1) unstable; urgency=low
|
||||
|
||||
* Bumped standards version to 3.7.2.1.
|
||||
* Added "Provides: ircd" to Debian control file.
|
||||
|
||||
-- Alexander Barton <alex@barton.de> Sun, 1 Oct 2006 16:25:33 +0200
|
||||
|
||||
ngircd (0.10.0-0ab0-pre2) unstable; urgency=low
|
||||
|
||||
* Second "upstream" prerelease of upcoming 0.10.0 release.
|
||||
|
||||
-- Alexander Barton <alex@barton.de> Sat, 9 Sep 2006 20:57:52 +0200
|
||||
|
||||
ngircd (0.10.0-0ab0-pre1) unstable; urgency=low
|
||||
|
||||
* Prerelease of upcoming new "upstream release".
|
||||
|
||||
-- Alexander Barton <alex@barton.de> Wed, 2 Aug 2006 12:01:07 +0200
|
||||
|
||||
ngircd (0.9.2-0ab1) unstable; urgency=low
|
||||
|
||||
* New "upstream release" fixing a few bugs in 0.9.1.
|
||||
|
||||
-- Alexander Barton <alex@barton.de> Sat, 15 Oct 2005 14:10:34 +0200
|
||||
|
||||
ngircd (0.9.1-0ab1) unstable; urgency=medium
|
||||
|
||||
* New "upstream release" addressing two problems in ngIRCd 0.9.0.
|
||||
|
||||
-- Alexander Barton <alex@barton.de> Wed, 3 Aug 2005 15:10:41 +0200
|
||||
|
||||
ngircd (0.9.0-0ab2) unstable; urgency=medium
|
||||
|
||||
* Init script: fixed a problem with symbolic links in runlevel directories
|
||||
that could prevent the init script from working correctly.
|
||||
|
||||
-- Alexander Barton <alex@barton.de> Tue, 26 Jul 2005 21:31:18 +0200
|
||||
|
||||
ngircd (0.9.0-0ab1) unstable; urgency=low
|
||||
|
||||
* New "upstream release".
|
||||
|
||||
-- Alexander Barton <alex@Arthur.Ath.CX> Sat, 24 Jul 2005 23:30:00 +0200
|
||||
|
||||
ngircd (0.8.3-0ab1) unstable; urgency=high
|
||||
|
||||
* New "upstream release", including security fixes.
|
||||
|
||||
-- Alexander Barton <alex@Arthur.Ath.CX> Thu, 3 Feb 2005 10:41:55 +0100
|
||||
|
||||
ngircd (0.8.2-0ab1) unstable; urgency=high
|
||||
|
||||
* New "upstream release", including security fixes.
|
||||
|
||||
-- Alexander Barton <alex@Arthur.Ath.CX> Wed, 26 Jan 2005 23:14:12 +0100
|
||||
|
||||
ngircd (0.8.1-0ab1) unstable; urgency=low
|
||||
|
||||
* New "upstream release".
|
||||
|
||||
-- Alexander Barton <alex@Arthur.Ath.CX> Sat, 25 Dec 2004 01:18:32 +0100
|
||||
|
||||
ngircd (0.8.0-0ab2) unstable; urgency=low
|
||||
|
||||
* Added missing commas to debian control file, fixes bug #56.
|
||||
Thanks to Kevin Otte.
|
||||
|
||||
-- Alexander Barton <alex@Arthur.Ath.CX> Thu, 15 Jul 2004 10:53:39 +0200
|
||||
|
||||
ngircd (0.8.0-0ab1) unstable; urgency=low
|
||||
|
||||
* New upstream version.
|
||||
|
||||
-- Alexander Barton <alex@Arthur.Ath.CX> Sat, 26 Jun 2004 11:25:59 +0200
|
||||
|
||||
ngircd (0.7.7+HEAD-0ab6) unstable; urgency=low
|
||||
|
||||
* Incorporated actual CVS HEAD version which includes all features of
|
||||
version 0.8.0-pre1 and patches for the resolver and logger.
|
||||
|
||||
-- Alexander Barton <alex@Arthur.Ath.CX> Tue, 11 May 2004 02:18:50 +0200
|
||||
|
||||
ngircd (0.7.7+HEAD-0ab5) unstable; urgency=low
|
||||
|
||||
* Updates from CVS HEAD branch, most notably: "INVITE- and BAN-lists
|
||||
become synchronized between IRC+ servers when establishing new
|
||||
connections, if the peer supports this as well."
|
||||
|
||||
-- Alexander Barton <alex@Arthur.Ath.CX> Mon, 26 Apr 2004 01:53:15 +0200
|
||||
|
||||
ngircd (0.7.7+HEAD-0ab4) unstable; urgency=low
|
||||
|
||||
* This version includes fixes for INVITE command and the handling of the
|
||||
invite and ban lists from CVS-HEAD.
|
||||
|
||||
-- Alexander Barton <alex@Arthur.Ath.CX> Fri, 9 Apr 2004 23:55:13 +0200
|
||||
|
||||
ngircd (0.7.7+HEAD-0ab3) unstable; urgency=low
|
||||
|
||||
* Included MODE fix from CVS-HEAD branch.
|
||||
|
||||
-- Alexander Barton <alex@Arthur.Ath.CX> Mon, 5 Apr 2004 13:09:24 +0200
|
||||
|
||||
ngircd (0.7.7+HEAD-0ab2) unstable; urgency=low
|
||||
|
||||
* Incorporated more fixes and enhancements of CVS-HEAD version,
|
||||
e. g. better connection logging and fixed TRACE command.
|
||||
|
||||
-- Alexander Barton <alex@Arthur.Ath.CX> Sat, 28 Feb 2004 03:20:32 +0100
|
||||
|
||||
ngircd (0.7.7+HEAD-0ab1) unstable; urgency=low
|
||||
|
||||
* New upstream version. This debian package includes all features of
|
||||
ngIRCd 0.7.7 and changes of the CVS-HEAD development tree.
|
||||
|
||||
-- Alexander Barton <alex@Arthur.Ath.CX> Thu, 5 Feb 2004 15:23:22 +0100
|
||||
|
||||
ngircd (0.7.6+HEAD-0ab2) unstable; urgency=low
|
||||
|
||||
* Included new fixes and additions from the CVS-HEAD upstream branch,
|
||||
e. g. the setting of type of service (TOS) on sockets.
|
||||
|
||||
-- Alexander Barton <alex@Arthur.Ath.CX> Mon, 26 Jan 2004 04:05:41 +0100
|
||||
|
||||
ngircd (0.7.6+HEAD-0ab1) unstable; urgency=low
|
||||
|
||||
* Included all changes from the CVS-HEAD upstream version.
|
||||
* Restructured debian packaging system: now there are two packages, a
|
||||
"standard" version that includes all the default options and a "full"
|
||||
version that additionally includes support for TCP wrappers and IDENT
|
||||
lookups.
|
||||
|
||||
-- Alexander Barton <alex@Arthur.Ath.CX> Thu, 1 Jan 2004 23:12:11 +0100
|
||||
|
||||
ngircd (0.7.6-0ab1) unstable; urgency=medium
|
||||
|
||||
* New upstream version.
|
||||
* Changed version numvering scheme of debian package.
|
||||
|
||||
-- Alexander Barton <alex@Arthur.Ath.CX> Fri, 5 Dec 2003 14:26:41 +0100
|
||||
|
||||
ngircd (0.7.5-0.2ab) unstable; urgency=low
|
||||
|
||||
* Updated RPM and Debian package description and configuration.
|
||||
|
||||
-- Alexander Barton <alex@Arthur.Ath.CX> Sat, 29 Nov 2003 21:24:32 +0100
|
||||
|
||||
ngircd (0.7.5-0.1ab) unstable; urgency=low
|
||||
|
||||
* New upstream version.
|
||||
|
||||
-- Alexander Barton <alex@Arthur.Ath.CX> Fri, 7 Nov 2003 21:59:58 +0100
|
||||
|
||||
ngircd (0.7.1-0.1ab) unstable; urgency=low
|
||||
|
||||
* New upstream version :-)
|
||||
|
||||
-- Alexander Barton <alex@Arthur.Ath.CX> Fri, 18 Jul 2003 22:53:02 +0200
|
||||
|
||||
ngircd (0.7.0-0.7ab) unstable; urgency=low
|
||||
|
||||
* Fixed up post installation script (added interpreter, fixed chmod call).
|
||||
|
||||
-- Alexander Barton <alex@Arthur.Ath.CX> Sun, 13 Jul 2003 00:52:38 +0200
|
||||
|
||||
ngircd (0.7.0-0.6ab) unstable; urgency=low
|
||||
|
||||
* Added /etc/default/ngircd.
|
||||
* Included own post installation script.
|
||||
|
||||
-- Alexander Barton <alex@Arthur.Ath.CX> Sat, 12 Jul 2003 20:31:09 +0200
|
||||
|
||||
ngircd (0.7.0-0.5ab) unstable; urgency=low
|
||||
|
||||
* Enhanced init script.
|
||||
* Included NJOIN fix from actual CVS "HEAD" branch.
|
||||
|
||||
-- Alexander Barton <alex@Arthur.Ath.CX> Wed, 9 Jul 2003 22:40:49 +0200
|
||||
|
||||
ngircd (0.7.0-0.4ab) unstable; urgency=low
|
||||
|
||||
* Reverted use of dh_installexamples.
|
||||
|
||||
-- Alexander Barton <alex@Arthur.Ath.CX> Thu, 22 May 2003 00:15:03 +0200
|
||||
|
||||
ngircd (0.7.0-0.3ab) unstable; urgency=low
|
||||
|
||||
* Removed "debian/docs" and "debian/conffiles"; debhelper takes care of
|
||||
this for us automagically.
|
||||
* Excluded "etc/ngircd.conf" from dh_fixperms.
|
||||
|
||||
-- Alexander Barton <alex@Arthur.Ath.CX> Wed, 21 May 2003 23:25:05 +0200
|
||||
|
||||
ngircd (0.7.0-0.2ab) unstable; urgency=low
|
||||
|
||||
* Fixed wrong variable substitution in init script.
|
||||
* Added some CVS "Id-Tags" (but not checked in, yet).
|
||||
* Removed own "Provides:" from control file.
|
||||
|
||||
-- Alexander Barton <alex@barton.de> Wed, 21 May 2003 12:32:34 +0200
|
||||
|
||||
ngircd (0.7.0-0.1ab) unstable; urgency=low
|
||||
|
||||
* Initial Release.
|
||||
|
||||
-- Alexander Barton <alex@barton.de> Wed, 21 May 2003 02:36:52 +0200
|
1
contrib/Debian/compat
Normal file
1
contrib/Debian/compat
Normal file
@@ -0,0 +1 @@
|
||||
4
|
52
contrib/Debian/control
Normal file
52
contrib/Debian/control
Normal file
@@ -0,0 +1,52 @@
|
||||
Source: ngircd
|
||||
Section: net
|
||||
Priority: optional
|
||||
Maintainer: Alexander Barton <alex@barton.de>
|
||||
Build-Depends: debhelper (>> 4.0.0), libz-dev, libwrap0-dev, libident-dev, libgnutls-dev
|
||||
Standards-Version: 3.8.0
|
||||
|
||||
Package: ngircd
|
||||
Architecture: any
|
||||
Depends: ${shlibs:Depends}, ${misc:Depends}
|
||||
Provides: ircd
|
||||
Description: A lightweight daemon for the Internet Relay Chat (IRC)
|
||||
ngIRCd is a free open source daemon for the Internet Relay Chat (IRC)
|
||||
network. It is written from scratch and is not based upon the original
|
||||
IRCd like many others.
|
||||
.
|
||||
This package contains the "standard distribution", including support for
|
||||
syslog logging and compressed server-links using zlib. Please have a look
|
||||
at the "ngircd-full" package if you need advanced functionality like support
|
||||
for IPv6 or SSL.
|
||||
.
|
||||
Advantages of ngIRCd:
|
||||
- no problems with servers using changing/non-static IP addresses.
|
||||
- small and lean configuration file.
|
||||
- free, modern and open source C code.
|
||||
- still under active development.
|
||||
.
|
||||
ngIRCd is compatible to the "original" ircd 2.10.3p3, so you can run
|
||||
mixed networks.
|
||||
|
||||
Package: ngircd-full
|
||||
Architecture: any
|
||||
Depends: ${shlibs:Depends}, ${misc:Depends}
|
||||
Provides: ircd
|
||||
Conflicts: ngircd
|
||||
Description: A lightweight daemon for the Internet Relay Chat (IRC)
|
||||
ngIRCd is a free open source daemon for the Internet Relay Chat (IRC)
|
||||
network. It is written from scratch and is not based upon the original
|
||||
IRCd like many others.
|
||||
.
|
||||
In addition to the features of the "standard package", this package
|
||||
includes support for TCP wrappers, IDENT requests, the IPv6 protocol and
|
||||
SSL encrypted client and server links.
|
||||
.
|
||||
Advantages of ngIRCd:
|
||||
- no problems with servers using changing/non-static IP addresses.
|
||||
- small and lean configuration file.
|
||||
- free, modern and open source C code.
|
||||
- still under active development.
|
||||
.
|
||||
ngIRCd is compatible to the "original" ircd 2.10.3p3, so you can run
|
||||
mixed networks.
|
13
contrib/Debian/copyright
Normal file
13
contrib/Debian/copyright
Normal file
@@ -0,0 +1,13 @@
|
||||
This package was debianized by Alexander Barton <alex@barton.de> on
|
||||
Tue, 20 May 2003 15:47:40 +0200.
|
||||
|
||||
It was downloaded from ftp://Arthur.Ath.CX/pub/Users/alex/ngircd/
|
||||
|
||||
Upstream Author: Alexander Barton <alex@barton.de>
|
||||
|
||||
This software is copyright (c) 1999-2003 by Alexander Barton.
|
||||
|
||||
You are free to distribute this software under the terms of the
|
||||
GNU General Public License.
|
||||
On Debian systems, the complete text of the GNU General Public
|
||||
License can be found in /usr/share/common-licenses/GPL file.
|
12
contrib/Debian/ngircd.default
Normal file
12
contrib/Debian/ngircd.default
Normal file
@@ -0,0 +1,12 @@
|
||||
#
|
||||
# Defaults for ngIRCd start and stop script
|
||||
#
|
||||
# $Id: ngircd.default,v 1.1 2003/12/31 17:20:11 alex Exp $
|
||||
#
|
||||
|
||||
# Parameters to pass to the ngircd daemon on startup, see ngircd(8) for
|
||||
# possible options (default: empty).
|
||||
|
||||
PARAMS=""
|
||||
|
||||
# -eof-
|
175
contrib/Debian/ngircd.init
Executable file
175
contrib/Debian/ngircd.init
Executable file
@@ -0,0 +1,175 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# ngIRCd start and stop script for Debian-based systems
|
||||
# Copyright 2008,2009 Alexander Barton <alex@barton.de>
|
||||
#
|
||||
|
||||
### BEGIN INIT INFO
|
||||
# Provides: ngircd ircd
|
||||
# Required-Start: $network $local_fs
|
||||
# Required-Stop:
|
||||
# Should-Start: $syslog $named
|
||||
# Should-Stop: $syslog
|
||||
# Default-Start: 2 3 4 5
|
||||
# Default-Stop: 0 1 6
|
||||
# Short-Description: Next Generation IRC Server
|
||||
# Description: IRC daemon written from scratch
|
||||
### END INIT INFO
|
||||
|
||||
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
|
||||
DAEMON=/usr/sbin/ngircd
|
||||
NAME=ngIRCd
|
||||
DESC="IRC daemon"
|
||||
PARAMS=""
|
||||
STARTTIME=1
|
||||
DIETIME=10
|
||||
|
||||
test -x $DAEMON || exit 5
|
||||
|
||||
test -h "$0" && me=`readlink $0` || me="$0"
|
||||
BASENAME=`basename $me`
|
||||
|
||||
test -r /etc/default/$BASENAME && . /etc/default/$BASENAME
|
||||
|
||||
# LSB compatibility functions that become used if there is no local
|
||||
# include file available.
|
||||
log_daemon_msg() {
|
||||
echo -n "$*"
|
||||
}
|
||||
log_end_msg() {
|
||||
[ "$1" == "0" ] && echo "." || echo " failed!"
|
||||
}
|
||||
log_failure_msg() {
|
||||
echo "$*"
|
||||
}
|
||||
log_warning_msg() {
|
||||
log_failure_msg "$*"
|
||||
}
|
||||
|
||||
# Include LSB functions, if available:
|
||||
test -r /lib/lsb/init-functions && . /lib/lsb/init-functions
|
||||
|
||||
PIDFILE=`$DAEMON $PARAMS -t | tr -d ' ' | grep "^PidFile=" | cut -d'=' -f2`
|
||||
[ -n "$PIDFILE" ] || PIDFILE="/var/run/ircd/ngircd.pid"
|
||||
|
||||
r=3
|
||||
|
||||
Check_Config()
|
||||
{
|
||||
# Make sure that the configuration of ngIRCd is valid:
|
||||
$DAEMON $PARAMS --configtest >/dev/null 2>&1
|
||||
[ $? -eq 0 ] && return 0
|
||||
log_end_msg 1
|
||||
log_failure_msg "Configuration of $NAME is not valid, won't (re)start!"
|
||||
log_failure_msg "Run \"$DAEMON --configtest\" and fix it up ..."
|
||||
exit 6
|
||||
}
|
||||
|
||||
Prepare() {
|
||||
# Make sure the PID file directory exists and is writable:
|
||||
user=`$DAEMON $PARAMS -t|tr -d ' '|grep "^ServerUID="|cut -d'=' -f2`
|
||||
group=`$DAEMON $PARAMS -t|tr -d ' '|grep "^ServerGID="|cut -d'=' -f2`
|
||||
piddir=`dirname "$PIDFILE"`
|
||||
[ -d "$piddir" ] || mkdir -p "$piddir" 2>/dev/null
|
||||
chown "$user:$group" "$piddir" 2>/dev/null
|
||||
[ $? -eq 0 ] && return 0
|
||||
log_end_msg 1
|
||||
log_failure_msg "Failed to prepare '$piddir' for user '$user'!"
|
||||
exit 1
|
||||
}
|
||||
|
||||
Do_Start() {
|
||||
if Do_Status; then
|
||||
log_end_msg 0
|
||||
log_warning_msg "$NAME seems to be already running, nothing to do."
|
||||
exit 0
|
||||
fi
|
||||
start-stop-daemon --start \
|
||||
--quiet --exec $DAEMON -- $PARAMS
|
||||
sleep $STARTTIME
|
||||
Do_Status || return 7
|
||||
return 0
|
||||
}
|
||||
|
||||
Do_Stop() {
|
||||
if ! Do_Status; then
|
||||
log_end_msg 0
|
||||
log_warning_msg "$NAME seems not to be running, nothing to do."
|
||||
exit 0
|
||||
fi
|
||||
Do_ForceStop
|
||||
return $?
|
||||
}
|
||||
|
||||
Do_ForceStop() {
|
||||
[ -e $PIDFILE ] \
|
||||
&& pidfile="--pidfile $PIDFILE" \
|
||||
|| pidfile=""
|
||||
start-stop-daemon --stop \
|
||||
--quiet --oknodo --exec $DAEMON $pidfile
|
||||
for i in `seq 1 $DIETIME`; do
|
||||
Do_Status || return 0
|
||||
sleep 1
|
||||
done
|
||||
return 1
|
||||
}
|
||||
|
||||
Do_Reload() {
|
||||
start-stop-daemon --stop --signal 1 --quiet --exec $DAEMON
|
||||
return $?
|
||||
}
|
||||
|
||||
Do_Status() {
|
||||
[ -e $PIDFILE ] \
|
||||
&& pidfile="--pidfile $PIDFILE" \
|
||||
|| pidfile=""
|
||||
start-stop-daemon --stop \
|
||||
--quiet --signal 0 --exec $DAEMON $pidfile >/dev/null
|
||||
return $?
|
||||
}
|
||||
|
||||
case "$1" in
|
||||
start)
|
||||
log_daemon_msg "Starting $DESC" "$NAME"
|
||||
Check_Config
|
||||
Prepare
|
||||
Do_Start; r=$?
|
||||
log_end_msg $r
|
||||
;;
|
||||
stop)
|
||||
log_daemon_msg "Stopping $DESC" "$NAME"
|
||||
Do_Stop; r=$?
|
||||
log_end_msg $r
|
||||
;;
|
||||
reload|force-reload)
|
||||
log_daemon_msg "Reloading $DESC" "$NAME"
|
||||
Check_Config
|
||||
Do_Reload; r=$?
|
||||
log_end_msg $r
|
||||
;;
|
||||
restart)
|
||||
log_daemon_msg "Restarting $DESC" "$NAME"
|
||||
Check_Config
|
||||
Prepare
|
||||
Do_ForceStop
|
||||
Do_Start; r=$?
|
||||
log_end_msg $r
|
||||
;;
|
||||
status)
|
||||
log_daemon_msg "Checking for $DESC" "$NAME"
|
||||
Do_Status; r=$?
|
||||
log_end_msg $r
|
||||
;;
|
||||
test)
|
||||
Check_Config
|
||||
echo "Configuration of $DAEMON seems to be ok."; r=0
|
||||
;;
|
||||
*)
|
||||
N=/etc/init.d/$NAME; r=2
|
||||
echo "Usage: $N {start|stop|restart|reload|force-reload|status|test}" >&2
|
||||
;;
|
||||
esac
|
||||
|
||||
exit $r
|
||||
|
||||
# -eof-
|
21
contrib/Debian/ngircd.postinst
Executable file
21
contrib/Debian/ngircd.postinst
Executable file
@@ -0,0 +1,21 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Debian post-installation script
|
||||
# $Id: ngircd.postinst,v 1.2 2006/12/26 14:44:40 alex Exp $
|
||||
#
|
||||
|
||||
set -e
|
||||
|
||||
case "$1" in
|
||||
configure)
|
||||
if [ -f /etc/ngircd/ngircd.conf ]; then
|
||||
# make sure that the configuration file is not
|
||||
# world-readable, it contains passwords!
|
||||
chmod o= /etc/ngircd/ngircd.conf
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
#DEBHELPER#
|
||||
|
||||
# -eof-
|
172
contrib/Debian/rules
Executable file
172
contrib/Debian/rules
Executable file
@@ -0,0 +1,172 @@
|
||||
#!/usr/bin/make -f
|
||||
#
|
||||
# ngIRCd -- The Next Generation IRC Daemon
|
||||
# Copyright (c)2001-2008 Alexander Barton <alex@barton.de>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
# Please read the file COPYING, README and AUTHORS for more information.
|
||||
#
|
||||
# debian/rules for ngIRCd
|
||||
#
|
||||
# Based on the sample debian/rules that uses debhelper,
|
||||
# GNU copyright 1997 to 1999 by Joey Hess.
|
||||
#
|
||||
|
||||
# Uncomment this to turn on verbose mode.
|
||||
#export DH_VERBOSE=1
|
||||
|
||||
# These are used for cross-compiling and for saving the configure script
|
||||
# from having to guess our platform (since we know it already)
|
||||
DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
|
||||
DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
|
||||
|
||||
CFLAGS = -Wall -g
|
||||
|
||||
ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
|
||||
CFLAGS += -O0
|
||||
else
|
||||
CFLAGS += -O2
|
||||
endif
|
||||
ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
|
||||
INSTALL_PROGRAM += -s
|
||||
endif
|
||||
|
||||
configure-ngircd: configure
|
||||
dh_testdir
|
||||
|
||||
# configure "standard" variant:
|
||||
./configure --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) \
|
||||
--prefix=/usr \
|
||||
--sysconfdir=/etc/ngircd \
|
||||
--mandir=\$${prefix}/share/man \
|
||||
--with-syslog --with-zlib
|
||||
|
||||
configure-ngircd-full: configure
|
||||
dh_testdir
|
||||
|
||||
# configure "full" variant:
|
||||
./configure --host=$(DEB_HOST_GNU_TYPE) --build=$(DEB_BUILD_GNU_TYPE) \
|
||||
--prefix=/usr \
|
||||
--sysconfdir=/etc/ngircd \
|
||||
--mandir=\$${prefix}/share/man \
|
||||
--with-syslog --with-zlib \
|
||||
--with-gnutls --with-ident --with-tcp-wrappers \
|
||||
--enable-ipv6
|
||||
|
||||
build:
|
||||
dh_clean -k
|
||||
|
||||
build-ngircd: build-stamp-ngircd
|
||||
build-stamp-ngircd: configure-ngircd
|
||||
dh_testdir
|
||||
rm -f build-stamp-*
|
||||
|
||||
# Add here commands to compile the "standard" package:
|
||||
$(MAKE)
|
||||
|
||||
touch build-stamp-ngircd
|
||||
|
||||
build-ngircd-full: build-stamp-ngircd-full
|
||||
build-stamp-ngircd-full: configure-ngircd-full
|
||||
dh_testdir
|
||||
rm -f build-stamp-*
|
||||
|
||||
# Add here commands to compile the "full" package:
|
||||
$(MAKE)
|
||||
|
||||
touch build-stamp-ngircd-full
|
||||
|
||||
clean:
|
||||
dh_testdir
|
||||
dh_testroot
|
||||
rm -f build-stamp*
|
||||
rm -f $(CURDIR)/debian/ngircd-full.default
|
||||
rm -f $(CURDIR)/debian/ngircd-full.init
|
||||
rm -f $(CURDIR)/debian/ngircd-full.postinst
|
||||
|
||||
# Add here commands to clean up after the build process:
|
||||
[ ! -f Makefile ] || $(MAKE) distclean
|
||||
|
||||
ifneq "$(wildcard /usr/share/misc/config.sub)" ""
|
||||
cp -f /usr/share/misc/config.sub config.sub
|
||||
endif
|
||||
ifneq "$(wildcard /usr/share/misc/config.guess)" ""
|
||||
cp -f /usr/share/misc/config.guess config.guess
|
||||
endif
|
||||
dh_clean
|
||||
|
||||
install: install-ngircd install-ngircd-full
|
||||
|
||||
install-ngircd: build-ngircd
|
||||
dh_testdir
|
||||
dh_testroot
|
||||
dh_installdirs
|
||||
|
||||
# Add here commands to install the "standard" package into debian/ngircd:
|
||||
$(MAKE) install DESTDIR=$(CURDIR)/debian/ngircd
|
||||
rm $(CURDIR)/debian/ngircd/usr/share/doc/ngircd/INSTALL*
|
||||
rm $(CURDIR)/debian/ngircd/usr/share/doc/ngircd/COPYING*
|
||||
mkdir -p $(CURDIR)/debian/ngircd/var/run/ircd
|
||||
cat $(CURDIR)/debian/ngircd/usr/share/doc/ngircd/sample-ngircd.conf | \
|
||||
sed -e "s/;ServerUID = 65534/ServerUID = irc/g" | \
|
||||
sed -e "s/;ServerGID = 65534/ServerGID = irc/g" | \
|
||||
sed -e "s/;MotdFile = \/usr\/local\/etc\/ngircd.motd/MotdFile = \/etc\/ngircd\/ngircd.motd/g" | \
|
||||
sed -e "s/;PidFile = \/var\/run\/ngircd\/ngircd.pid/PidFile = \/var\/run\/ircd\/ngircd.pid/g" \
|
||||
>$(CURDIR)/debian/ngircd/etc/ngircd/ngircd.conf
|
||||
touch $(CURDIR)/debian/ngircd/etc/ngircd/ngircd.motd
|
||||
|
||||
install-ngircd-full: build-ngircd-full
|
||||
dh_testdir
|
||||
dh_testroot
|
||||
dh_installdirs
|
||||
|
||||
# Add here commands to install the "full" package into debian/ngircd-full:
|
||||
$(MAKE) install DESTDIR=$(CURDIR)/debian/ngircd-full
|
||||
rm $(CURDIR)/debian/ngircd-full/usr/share/doc/ngircd/INSTALL*
|
||||
rm $(CURDIR)/debian/ngircd-full/usr/share/doc/ngircd/COPYING*
|
||||
mv $(CURDIR)/debian/ngircd-full/usr/share/doc/ngircd \
|
||||
$(CURDIR)/debian/ngircd-full/usr/share/doc/ngircd-full
|
||||
mkdir -p $(CURDIR)/debian/ngircd-full/var/run/ircd
|
||||
cat $(CURDIR)/debian/ngircd-full/usr/share/doc/ngircd-full/sample-ngircd.conf | \
|
||||
sed -e "s/;ServerUID = 65534/ServerUID = irc/g" | \
|
||||
sed -e "s/;ServerGID = 65534/ServerGID = irc/g" | \
|
||||
sed -e "s/;MotdFile = \/usr\/local\/etc\/ngircd.motd/MotdFile = \/etc\/ngircd\/ngircd.motd/g" | \
|
||||
sed -e "s/;PidFile = \/var\/run\/ngircd\/ngircd.pid/PidFile = \/var\/run\/ircd\/ngircd.pid/g" \
|
||||
>$(CURDIR)/debian/ngircd-full/etc/ngircd/ngircd.conf
|
||||
touch $(CURDIR)/debian/ngircd-full/etc/ngircd/ngircd.motd
|
||||
|
||||
# Build architecture-independent files here.
|
||||
binary-indep:
|
||||
# We have nothing to do by default.
|
||||
|
||||
# Build architecture-dependent files here.
|
||||
binary-arch: build install
|
||||
ln -s $(CURDIR)/debian/ngircd.default \
|
||||
$(CURDIR)/debian/ngircd-full.default
|
||||
ln -s $(CURDIR)/debian/ngircd.init \
|
||||
$(CURDIR)/debian/ngircd-full.init
|
||||
ln -s $(CURDIR)/debian/ngircd.postinst \
|
||||
$(CURDIR)/debian/ngircd-full.postinst
|
||||
|
||||
dh_testdir
|
||||
dh_testroot
|
||||
dh_installchangelogs -a -A ChangeLog
|
||||
dh_installdocs -a
|
||||
dh_installinit -a
|
||||
dh_strip -a
|
||||
dh_compress -a
|
||||
dh_fixperms -a
|
||||
dh_installdeb -a
|
||||
dh_shlibdeps -a
|
||||
dh_gencontrol -a
|
||||
dh_md5sums -a
|
||||
dh_builddeb -a
|
||||
|
||||
binary: binary-indep binary-arch
|
||||
|
||||
.PHONY: build clean binary-indep binary-arch binary install
|
||||
|
||||
# -eof-
|
2
contrib/MacOSX/.gitignore
vendored
Normal file
2
contrib/MacOSX/.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
build
|
||||
de.barton.ngircd.plist
|
52
contrib/MacOSX/Makefile.am
Normal file
52
contrib/MacOSX/Makefile.am
Normal file
@@ -0,0 +1,52 @@
|
||||
#
|
||||
# ngIRCd -- The Next Generation IRC Daemon
|
||||
# Copyright (c)2001-2008 Alexander Barton <alex@barton.de>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
# Please read the file COPYING, README and AUTHORS for more information.
|
||||
#
|
||||
|
||||
SUBDIRS = ngIRCd.xcodeproj ngIRCd.pmdoc
|
||||
|
||||
EXTRA_DIST = de.barton.ngircd.plist.tmpl config.h preinstall.sh postinstall.sh
|
||||
|
||||
SUFFIXES = .tmpl .
|
||||
|
||||
.tmpl:
|
||||
sed \
|
||||
-e s@:SBINDIR:@${sbindir}@ \
|
||||
<$< >$@
|
||||
|
||||
install-data-local:
|
||||
[ `uname -s` != "Darwin" ] || make install-sys-darwin
|
||||
|
||||
install-sys-darwin:
|
||||
@if [ `id -u` -eq 0 ]; then \
|
||||
make install-sys-darwin-root; \
|
||||
else \
|
||||
echo; \
|
||||
echo " ** NOTE: Not installing with root privileges, so the LaunchDaemon script"; \
|
||||
echo " ** \"/Library/LaunchDaemons/de.barton.ngircd.plist\" can't be installed/updated!"; \
|
||||
echo; \
|
||||
fi
|
||||
|
||||
install-sys-darwin-root: de.barton.ngircd.plist
|
||||
install -d -m 755 -o root -g wheel $(DESTDIR)/Library/LaunchDaemons
|
||||
install -c -m 644 -b -o root -g wheel de.barton.ngircd.plist \
|
||||
$(DESTDIR)/Library/LaunchDaemons/de.barton.ngircd.plist
|
||||
@echo
|
||||
@echo " ** \"/Library/LaunchDaemons/de.barton.ngircd.plist\" has been installed,"
|
||||
@echo " ** but is disabled. Use launchctl(8) to enable/run ngIRCd on Darwin/Mac OS X."
|
||||
@echo
|
||||
|
||||
clean-local:
|
||||
rm -rf build
|
||||
rm -f de.barton.ngircd.plist
|
||||
|
||||
maintainer-clean-local:
|
||||
rm -f Makefile Makefile.in
|
||||
|
||||
# -eof-
|
106
contrib/MacOSX/config.h
Normal file
106
contrib/MacOSX/config.h
Normal file
@@ -0,0 +1,106 @@
|
||||
/*
|
||||
* ngIRCd -- The Next Generation IRC Daemon
|
||||
* Copyright (c)2001-2009 Alexander Barton (alex@barton.de).
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
* Please read the file COPYING, README and AUTHORS for more information.
|
||||
*
|
||||
* Static configuration file for Mac OS X Xcode project
|
||||
*/
|
||||
|
||||
#define PACKAGE_NAME "ngircd"
|
||||
#ifndef VERSION
|
||||
#define VERSION "??("__DATE__")"
|
||||
#endif
|
||||
#define SYSCONFDIR "/etc/ngircd"
|
||||
|
||||
#ifndef TARGET_VENDOR
|
||||
#define TARGET_VENDOR "apple"
|
||||
#define TARGET_OS "darwin"
|
||||
#endif
|
||||
|
||||
/* -- Build options -- */
|
||||
|
||||
/* Define if debug-mode should be enabled */
|
||||
#define DEBUG 1
|
||||
|
||||
/* Define if the server should do IDENT requests */
|
||||
/*#define IDENTAUTH 1*/
|
||||
|
||||
/* Define if IRC+ protocol should be used */
|
||||
#define IRCPLUS 1
|
||||
|
||||
/* Define if IRC sniffer should be enabled */
|
||||
/*#define SNIFFER 1*/
|
||||
|
||||
/* Define if syslog should be used for logging */
|
||||
#define SYSLOG 1
|
||||
|
||||
/* Define if TCP wrappers should be used */
|
||||
/*#define TCPWRAP 1*/
|
||||
|
||||
/* Define if support for Zeroconf should be included */
|
||||
/*#define ZEROCONF 1*/
|
||||
|
||||
/* Define if zlib compression should be enabled */
|
||||
#define ZLIB 1
|
||||
|
||||
/* Define if IPV6 protocol should be enabled */
|
||||
#define WANT_IPV6 1
|
||||
|
||||
/* -- Supported features -- */
|
||||
|
||||
/* Define if SSP C support is enabled. */
|
||||
#define ENABLE_SSP_CC 1
|
||||
|
||||
/* Define to 1 if the C compiler supports function prototypes. */
|
||||
#define PROTOTYPES 1
|
||||
/* Define like PROTOTYPES; this can be used by system headers. */
|
||||
#define __PROTOTYPES 1
|
||||
|
||||
/* Define to 1 if you have the <sys/types.h> header file. */
|
||||
#define HAVE_SYS_TYPES_H 1
|
||||
/* Define to 1 if you have the <inttypes.h> header file. */
|
||||
#define HAVE_INTTYPES_H 1
|
||||
/* Define to 1 if you have the <stddef.h> header file. */
|
||||
#define HAVE_STDDEF_H 1
|
||||
/* Define to 1 if you have the <stdbool.h> header file. */
|
||||
#define HAVE_STDBOOL_H 1
|
||||
/* Define to 1 if you have the <arpa/inet.h> header file. */
|
||||
#define HAVE_ARPA_INET_H 1
|
||||
|
||||
/* Define to 1 if you have the `kqueue' function. */
|
||||
#define HAVE_KQUEUE 1
|
||||
/* Define to 1 if you have the `inet_ntoa' function. */
|
||||
#define HAVE_INET_NTOA 1
|
||||
/* Define to 1 if you have the `snprintf' function. */
|
||||
#define HAVE_SNPRINTF 1
|
||||
/* Define to 1 if you have the `strlcat' function. */
|
||||
#define HAVE_STRLCAT 1
|
||||
/* Define to 1 if you have the `strlcpy' function. */
|
||||
#define HAVE_STRLCPY 1
|
||||
/* Define to 1 if you have the `strdup' function. */
|
||||
#define HAVE_STRDUP 1
|
||||
/* Define to 1 if you have the `vsnprintf' function. */
|
||||
#define HAVE_VSNPRINTF 1
|
||||
/* Define to 1 if you have the `inet_aton' function. */
|
||||
#define HAVE_INET_ATON 1
|
||||
/* Define to 1 if you have the `getaddrinfo' function. */
|
||||
#define HAVE_GETADDRINFO 1
|
||||
/* Define to 1 if you have the `getnameinfo' function. */
|
||||
#define HAVE_GETNAMEINFO 1
|
||||
|
||||
/* Define if socklen_t exists */
|
||||
#define HAVE_socklen_t 1
|
||||
|
||||
#ifdef ZEROCONF
|
||||
/* Define to 1 if you have the <DNSServiceDiscovery/DNSServiceDiscovery.h> header file. */
|
||||
#define HAVE_DNSSERVICEDISCOVERY_DNSSERVICEDISCOVERY_H 1
|
||||
/* Define to 1 if you have the `DNSServiceRegistrationCreate' function. */
|
||||
#define HAVE_DNSSERVICEREGISTRATIONCREATE 1
|
||||
#endif
|
||||
|
||||
/* -eof- */
|
23
contrib/MacOSX/de.barton.ngircd.plist.tmpl
Normal file
23
contrib/MacOSX/de.barton.ngircd.plist.tmpl
Normal file
@@ -0,0 +1,23 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>Disabled</key>
|
||||
<true/>
|
||||
<key>KeepAlive</key>
|
||||
<true/>
|
||||
<key>Label</key>
|
||||
<string>de.barton.ngIRCd</string>
|
||||
<key>ProgramArguments</key>
|
||||
<array>
|
||||
<string>:SBINDIR:/ngircd</string>
|
||||
<string>--nodaemon</string>
|
||||
</array>
|
||||
<key>RunAtLoad</key>
|
||||
<true/>
|
||||
<key>StandardErrorPath</key>
|
||||
<string>/Library/Logs/ngIRCd.log</string>
|
||||
<key>StandardOutPath</key>
|
||||
<string>/Library/Logs/ngIRCd.log</string>
|
||||
</dict>
|
||||
</plist>
|
1
contrib/MacOSX/ngIRCd.pmdoc/01ngircd-contents.xml
Normal file
1
contrib/MacOSX/ngIRCd.pmdoc/01ngircd-contents.xml
Normal file
@@ -0,0 +1 @@
|
||||
<pkg-contents spec="1.12"/>
|
1
contrib/MacOSX/ngIRCd.pmdoc/01ngircd.xml
Normal file
1
contrib/MacOSX/ngIRCd.pmdoc/01ngircd.xml
Normal file
@@ -0,0 +1 @@
|
||||
<pkgref spec="1.12" uuid="6AF4DF80-E7DE-45E7-8B40-890A10AE51D0"><config><identifier>de.barton.ngircd.daemon.pkg</identifier><version>1</version><description></description><post-install type="none"/><requireAuthorization/><installFrom relative="true">../../ngircd.dest</installFrom><installTo>/</installTo><flags><followSymbolicLinks/></flags><packageStore type="internal"></packageStore><mod>parent</mod><mod>scripts.postinstall.path</mod><mod>scripts.postinstall.isRelativeType</mod><mod>scripts.preupgrade.path</mod><mod>installFrom.isRelativeType</mod><mod>version</mod><mod>scripts.preinstall.isRelativeType</mod><mod>identifier</mod><mod>installTo</mod></config><scripts><preinstall relative="true" mod="true">preinstall.sh</preinstall><preupgrade relative="true" mod="true">preinstall.sh</preupgrade></scripts></pkgref>
|
1
contrib/MacOSX/ngIRCd.pmdoc/02de-contents.xml
Normal file
1
contrib/MacOSX/ngIRCd.pmdoc/02de-contents.xml
Normal file
@@ -0,0 +1 @@
|
||||
<pkg-contents spec="1.12"/>
|
1
contrib/MacOSX/ngIRCd.pmdoc/02de.xml
Normal file
1
contrib/MacOSX/ngIRCd.pmdoc/02de.xml
Normal file
@@ -0,0 +1 @@
|
||||
<pkgref spec="1.12" uuid="F0954DA7-0607-4277-AE10-D882AC7C38CA"><config><identifier>de.barton.ngircd.launchscript.pkg</identifier><version>1</version><description></description><post-install type="none"/><requireAuthorization/><installFrom relative="true">de.barton.ngircd.plist</installFrom><installTo mod="true">/Library/LaunchDaemons</installTo><flags><followSymbolicLinks/></flags><packageStore type="internal"></packageStore><mod>parent</mod><mod>scripts.postinstall.path</mod><mod>scripts.postupgrade.path</mod><mod>installFrom.isRelativeType</mod><mod>installTo.path</mod><mod>installTo</mod><mod>identifier</mod></config><scripts><postinstall relative="true" mod="true">postinstall.sh</postinstall><postupgrade relative="true" mod="true">postinstall.sh</postupgrade></scripts></pkgref>
|
18
contrib/MacOSX/ngIRCd.pmdoc/Makefile.am
Normal file
18
contrib/MacOSX/ngIRCd.pmdoc/Makefile.am
Normal file
@@ -0,0 +1,18 @@
|
||||
#
|
||||
# ngIRCd -- The Next Generation IRC Daemon
|
||||
# Copyright (c)2001-2008 Alexander Barton <alex@barton.de>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
# Please read the file COPYING, README and AUTHORS for more information.
|
||||
#
|
||||
|
||||
EXTRA_DIST = index.xml \
|
||||
01ngircd-contents.xml 01ngircd.xml 02de-contents.xml 02de.xml
|
||||
|
||||
maintainer-clean-local:
|
||||
rm -f Makefile Makefile.in
|
||||
|
||||
# -eof-
|
190
contrib/MacOSX/ngIRCd.pmdoc/index.xml
Normal file
190
contrib/MacOSX/ngIRCd.pmdoc/index.xml
Normal file
@@ -0,0 +1,190 @@
|
||||
<pkmkdoc spec="1.12"><properties><title>ngIRCd</title><build>/Users/alex/Desktop/ngIRCd.mpkg</build><organization>de.barton.ngircd</organization><userSees ui="both"/><min-target os="2"/><domain anywhere="true"/></properties><distribution><versions min-spec="1.000000"/><scripts></scripts></distribution><description>ngIRCd – next generation IRC (Internet Relay Chat) server daemon</description><contents><choice title="ngIRCd daemon" id="choicengircd" tooltip="ngIRCd daemon, documentation and manual pages" description="Binaries, documentation and manual pages of the ngIRCd, the next generation IRC (Internet Relay Chat) daemon. This package will be installed into /opt/ngircd." starts_selected="true" starts_enabled="true" starts_hidden="false"><customLoc>/</customLoc><pkgref id="de.barton.ngircd.daemon.pkg"/></choice><choice title="Start and stop script" id="choicelaunchscript" tooltip="LaunchDaemon start and stop script" description="Installs the ngIRCd start and stop script for the "launch daemon". If this is an update/upgrade, and ngIRCd is already running, it will be automatically restarted." starts_selected="true" starts_enabled="true" starts_hidden="false"><customLoc>/Library/LaunchDaemons</customLoc><pkgref id="de.barton.ngircd.launchscript.pkg"/></choice></contents><resources bg-scale="none" bg-align="topleft"><locale lang="en"><resource mime-type="text/rtf" kind="embedded" type="license"><![CDATA[{\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf430
|
||||
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
|
||||
{\colortbl;\red255\green255\blue255;}
|
||||
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\qc\pardirnatural
|
||||
|
||||
\f0\i\fs24 \cf0 ngIRCd -- The Next Generation IRC Daemon\
|
||||
Copyright (c)2001-2009 Alexander Barton and Contributors.\
|
||||
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\ql\qnatural\pardirnatural
|
||||
|
||||
\i0 \cf0 \
|
||||
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. \
|
||||
\
|
||||
Please see below and read the file COPYING, README and AUTHORS for more information.\
|
||||
\
|
||||
\
|
||||
\
|
||||
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\qc\pardirnatural
|
||||
|
||||
\b \cf0 GNU GENERAL PUBLIC LICENSE\
|
||||
Version 2, June 1991\
|
||||
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\ql\qnatural\pardirnatural
|
||||
|
||||
\b0 \cf0 \
|
||||
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\qc\pardirnatural
|
||||
\cf0 Copyright (C) 1989, 1991 Free Software Foundation, Inc.\
|
||||
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA\
|
||||
Everyone is permitted to copy and distribute verbatim copies\
|
||||
of this license document, but changing it is not allowed.\
|
||||
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\ql\qnatural\pardirnatural
|
||||
\cf0 \
|
||||
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\qc\pardirnatural
|
||||
|
||||
\b \cf0 Preamble\
|
||||
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\ql\qnatural\pardirnatural
|
||||
|
||||
\b0 \cf0 \
|
||||
The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too.\
|
||||
\
|
||||
When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.\
|
||||
\
|
||||
To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it.\
|
||||
\
|
||||
For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights.\
|
||||
\
|
||||
We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software.\
|
||||
\
|
||||
Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations.\
|
||||
\
|
||||
Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all.\
|
||||
\
|
||||
The precise terms and conditions for copying, distribution and modification follow.\
|
||||
\page \
|
||||
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\qc\pardirnatural
|
||||
|
||||
\b \cf0 GNU GENERAL PUBLIC LICENSE\
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION\
|
||||
AND MODIFICATION\
|
||||
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\ql\qnatural\pardirnatural
|
||||
|
||||
\b0 \cf0 \
|
||||
0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law:\
|
||||
that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you".\
|
||||
\
|
||||
Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the\
|
||||
Program (independent of having been made by running the Program). Whether that is true depends on what the Program does.\
|
||||
\
|
||||
1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program.\
|
||||
\
|
||||
You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.\
|
||||
\
|
||||
2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1above, provided that you also meet all of these conditions:\
|
||||
\
|
||||
a) You must cause the modified files to carry prominent notices\
|
||||
stating that you changed the files and the date of any change.\
|
||||
\
|
||||
b) You must cause any work that you distribute or publish, that in\
|
||||
whole or in part contains or is derived from the Program or any\
|
||||
part thereof, to be licensed as a whole at no charge to all third\
|
||||
parties under the terms of this License.\
|
||||
\
|
||||
c) If the modified program normally reads commands interactively\
|
||||
when run, you must cause it, when started running for such\
|
||||
interactive use in the most ordinary way, to print or display an\
|
||||
announcement including an appropriate copyright notice and a\
|
||||
notice that there is no warranty (or else, saying that you provide\
|
||||
a warranty) and that users may redistribute the program under\
|
||||
these conditions, and telling the user how to view a copy of this\
|
||||
License. (Exception: if the Program itself is interactive but\
|
||||
does not normally print such an announcement, your work based on\
|
||||
the Program is not required to print an announcement.)\
|
||||
\page \
|
||||
These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.\
|
||||
\
|
||||
Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program.\
|
||||
\
|
||||
In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.\
|
||||
\
|
||||
3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following:\
|
||||
\
|
||||
a) Accompany it with the complete corresponding machine-readable\
|
||||
source code, which must be distributed under the terms of Sections\
|
||||
1 and 2 above on a medium customarily used for software\
|
||||
interchange; or,\
|
||||
\
|
||||
b) Accompany it with a written offer, valid for at least three\
|
||||
years, to give any third party, for a charge no more than your\
|
||||
cost of physically performing source distribution, a complete\
|
||||
machine-readable copy of the corresponding source code, to be\
|
||||
distributed under the terms of Sections 1 and 2 above on a medium\
|
||||
customarily used for software interchange; or,\
|
||||
\
|
||||
c) Accompany it with the information you received as to the offer\
|
||||
to distribute corresponding source code. (This alternative is\
|
||||
allowed only for noncommercial distribution and only if you\
|
||||
received the program in object code or executable form with such\
|
||||
an offer, in accord with Subsection b above.)\
|
||||
\
|
||||
The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.\
|
||||
\
|
||||
If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not\
|
||||
compelled to copy the source along with the object code.\
|
||||
\
|
||||
4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.\
|
||||
\
|
||||
5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it.\
|
||||
\
|
||||
6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License.\
|
||||
\
|
||||
7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program.\
|
||||
\
|
||||
If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances.\
|
||||
\
|
||||
It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.\
|
||||
\
|
||||
This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.\
|
||||
\page \
|
||||
8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.\
|
||||
\
|
||||
9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.\
|
||||
\
|
||||
Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation.\
|
||||
\
|
||||
10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.\
|
||||
\
|
||||
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\qc\pardirnatural
|
||||
|
||||
\b \cf0 NO WARRANTY
|
||||
\b0 \
|
||||
\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\ql\qnatural\pardirnatural
|
||||
\cf0 \
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\
|
||||
\
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.\
|
||||
}]]></resource><resource mime-type="text/rtf" kind="embedded" type="welcome"><![CDATA[{\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf430
|
||||
{\fonttbl\f0\fnil\fcharset0 LucidaGrande;}
|
||||
{\colortbl;\red255\green255\blue255;}
|
||||
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural
|
||||
|
||||
\f0\fs26 \cf0 ngIRCd is a free open source daemon for the Internet Relay Chat (IRC) protocol, developed under the GNU General Public License (GPL). It's written from scratch, is quite portable and is not based upon the original IRCd like many others.\
|
||||
\
|
||||
Homepage: http://ngircd.barton.de\
|
||||
\
|
||||
You will be guided through all steps necessary to install this software.}]]></resource><resource mime-type="text/rtf" kind="embedded" type="conclusion"><![CDATA[{\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf430
|
||||
{\fonttbl\f0\fnil\fcharset0 LucidaGrande;\f1\fnil\fcharset0 Monaco;}
|
||||
{\colortbl;\red255\green255\blue255;}
|
||||
{\*\listtable{\list\listtemplateid1\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{hyphen\}}{\leveltext\leveltemplateid0\'02\'05.;}{\levelnumbers\'01;}}{\listname ;}\listid1}
|
||||
{\list\listtemplateid2\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc2\leveljcn2\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{hyphen\}}{\leveltext\leveltemplateid0\'02\'05.;}{\levelnumbers\'01;}}{\listname ;}\listid2}}
|
||||
{\*\listoverridetable{\listoverride\listid1\listoverridecount0\ls1}{\listoverride\listid2\listoverridecount0\ls2}}
|
||||
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural
|
||||
|
||||
\f0\fs26 \cf0 ngIRCd has been successfully installed/upgraded.\
|
||||
\
|
||||
It has been restarted if it was already running before and you have installed the LaunchDaemon start and stop script (which is the default).\
|
||||
\
|
||||
If you installed ngIRCd the first time (or had the LaunchDaemon script disabled before), you can start ngIRCd using the following terminal command:\
|
||||
\
|
||||
\pard\tx220\tx720\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\li720\fi-720\ql\qnatural\pardirnatural
|
||||
\ls1\ilvl0
|
||||
\f1\fs24 \cf0 sudo launchctl load -w \\\
|
||||
/Library/LaunchDaemons/de.barton.ngircd.plist\
|
||||
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural
|
||||
|
||||
\f0\fs26 \cf0 \
|
||||
To disable automatic starting of ngIRCd, use this command:\
|
||||
\
|
||||
\pard\tx220\tx720\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\li720\fi-720\ql\qnatural\pardirnatural
|
||||
\ls2\ilvl0
|
||||
\f1\fs24 \cf0 sudo launchctl unload -w \\\
|
||||
/Library/LaunchDaemons/de.barton.ngircd.plist\
|
||||
}]]></resource></locale></resources><flags/><item type="file">01ngircd.xml</item><item type="file">02de.xml</item><mod>properties.customizeOption</mod><mod>properties.title</mod><mod>description</mod><mod>properties.anywhereDomain</mod><mod>properties.systemDomain</mod></pkmkdoc>
|
2
contrib/MacOSX/ngIRCd.xcodeproj/.gitignore
vendored
Normal file
2
contrib/MacOSX/ngIRCd.xcodeproj/.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
*.mode1v3
|
||||
*.pbxuser
|
17
contrib/MacOSX/ngIRCd.xcodeproj/Makefile.am
Normal file
17
contrib/MacOSX/ngIRCd.xcodeproj/Makefile.am
Normal file
@@ -0,0 +1,17 @@
|
||||
#
|
||||
# ngIRCd -- The Next Generation IRC Daemon
|
||||
# Copyright (c)2001-2008 Alexander Barton <alex@barton.de>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
# Please read the file COPYING, README and AUTHORS for more information.
|
||||
#
|
||||
|
||||
EXTRA_DIST = project.pbxproj
|
||||
|
||||
maintainer-clean-local:
|
||||
rm -f Makefile Makefile.in
|
||||
|
||||
# -eof-
|
748
contrib/MacOSX/ngIRCd.xcodeproj/project.pbxproj
Normal file
748
contrib/MacOSX/ngIRCd.xcodeproj/project.pbxproj
Normal file
@@ -0,0 +1,748 @@
|
||||
// !$*UTF8*$!
|
||||
{
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 44;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
FA322D350CEF74B1001761B3 /* array.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322CD90CEF74B1001761B3 /* array.c */; };
|
||||
FA322D360CEF74B1001761B3 /* channel.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322CDB0CEF74B1001761B3 /* channel.c */; };
|
||||
FA322D370CEF74B1001761B3 /* client.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322CDD0CEF74B1001761B3 /* client.c */; };
|
||||
FA322D380CEF74B1001761B3 /* conf.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322CDF0CEF74B1001761B3 /* conf.c */; };
|
||||
FA322D390CEF74B1001761B3 /* conn-func.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322CE10CEF74B1001761B3 /* conn-func.c */; };
|
||||
FA322D3A0CEF74B1001761B3 /* conn-zip.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322CE30CEF74B1001761B3 /* conn-zip.c */; };
|
||||
FA322D3B0CEF74B1001761B3 /* conn.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322CE50CEF74B1001761B3 /* conn.c */; };
|
||||
FA322D3C0CEF74B1001761B3 /* hash.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322CE80CEF74B1001761B3 /* hash.c */; };
|
||||
FA322D3D0CEF74B1001761B3 /* io.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322CEA0CEF74B1001761B3 /* io.c */; };
|
||||
FA322D3E0CEF74B1001761B3 /* irc-channel.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322CEC0CEF74B1001761B3 /* irc-channel.c */; };
|
||||
FA322D3F0CEF74B1001761B3 /* irc-info.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322CEE0CEF74B1001761B3 /* irc-info.c */; };
|
||||
FA322D400CEF74B1001761B3 /* irc-login.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322CF00CEF74B1001761B3 /* irc-login.c */; };
|
||||
FA322D410CEF74B1001761B3 /* irc-mode.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322CF20CEF74B1001761B3 /* irc-mode.c */; };
|
||||
FA322D420CEF74B1001761B3 /* irc-op.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322CF40CEF74B1001761B3 /* irc-op.c */; };
|
||||
FA322D430CEF74B1001761B3 /* irc-oper.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322CF60CEF74B1001761B3 /* irc-oper.c */; };
|
||||
FA322D440CEF74B1001761B3 /* irc-server.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322CF80CEF74B1001761B3 /* irc-server.c */; };
|
||||
FA322D450CEF74B1001761B3 /* irc-write.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322CFA0CEF74B1001761B3 /* irc-write.c */; };
|
||||
FA322D460CEF74B1001761B3 /* irc.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322CFC0CEF74B1001761B3 /* irc.c */; };
|
||||
FA322D470CEF74B1001761B3 /* lists.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322CFE0CEF74B1001761B3 /* lists.c */; };
|
||||
FA322D480CEF74B1001761B3 /* log.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322D000CEF74B1001761B3 /* log.c */; };
|
||||
FA322D490CEF74B1001761B3 /* match.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322D030CEF74B1001761B3 /* match.c */; };
|
||||
FA322D4A0CEF74B1001761B3 /* ngircd.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322D060CEF74B1001761B3 /* ngircd.c */; };
|
||||
FA322D4B0CEF74B1001761B3 /* parse.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322D080CEF74B1001761B3 /* parse.c */; };
|
||||
FA322D4C0CEF74B1001761B3 /* rendezvous.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322D0A0CEF74B1001761B3 /* rendezvous.c */; };
|
||||
FA322D4D0CEF74B1001761B3 /* resolve.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322D0C0CEF74B1001761B3 /* resolve.c */; };
|
||||
FA322DBE0CEF7766001761B3 /* tool.c in Sources */ = {isa = PBXBuildFile; fileRef = FA322D330CEF74B1001761B3 /* tool.c */; };
|
||||
FA322DC10CEF77CB001761B3 /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = FA322DC00CEF77CB001761B3 /* libz.dylib */; };
|
||||
FA407F2E0DB159F400271AF1 /* ng_ipaddr.c in Sources */ = {isa = PBXBuildFile; fileRef = FA407F2C0DB159F400271AF1 /* ng_ipaddr.c */; };
|
||||
FAA3D27B0F139CDC00B2447E /* conn-ssl.c in Sources */ = {isa = PBXBuildFile; fileRef = FAA3D2790F139CDC00B2447E /* conn-ssl.c */; };
|
||||
FAE5CC2E0CF2308A007D69B6 /* numeric.c in Sources */ = {isa = PBXBuildFile; fileRef = FAE5CC2D0CF2308A007D69B6 /* numeric.c */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXCopyFilesBuildPhase section */
|
||||
8DD76FAF0486AB0100D96B5E /* CopyFiles */ = {
|
||||
isa = PBXCopyFilesBuildPhase;
|
||||
buildActionMask = 8;
|
||||
dstPath = /usr/share/man/man1/;
|
||||
dstSubfolderSpec = 0;
|
||||
files = (
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 1;
|
||||
};
|
||||
/* End PBXCopyFilesBuildPhase section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
FA1A6BBC0D6857BB00AA8F71 /* misc-test.e */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = "misc-test.e"; sourceTree = "<group>"; };
|
||||
FA1A6BBD0D6857D900AA8F71 /* who-test.e */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = "who-test.e"; sourceTree = "<group>"; };
|
||||
FA322BBA0CEF72E4001761B3 /* ngIRCd */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = ngIRCd; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
FA322CD60CEF74B1001761B3 /* Makefile.am */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = Makefile.am; sourceTree = "<group>"; };
|
||||
FA322CD90CEF74B1001761B3 /* array.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = array.c; sourceTree = "<group>"; };
|
||||
FA322CDA0CEF74B1001761B3 /* array.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = array.h; sourceTree = "<group>"; };
|
||||
FA322CDB0CEF74B1001761B3 /* channel.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = channel.c; sourceTree = "<group>"; };
|
||||
FA322CDC0CEF74B1001761B3 /* channel.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = channel.h; sourceTree = "<group>"; };
|
||||
FA322CDD0CEF74B1001761B3 /* client.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = client.c; sourceTree = "<group>"; };
|
||||
FA322CDE0CEF74B1001761B3 /* client.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = client.h; sourceTree = "<group>"; };
|
||||
FA322CDF0CEF74B1001761B3 /* conf.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = conf.c; sourceTree = "<group>"; };
|
||||
FA322CE00CEF74B1001761B3 /* conf.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = conf.h; sourceTree = "<group>"; };
|
||||
FA322CE10CEF74B1001761B3 /* conn-func.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = "conn-func.c"; sourceTree = "<group>"; };
|
||||
FA322CE20CEF74B1001761B3 /* conn-func.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = "conn-func.h"; sourceTree = "<group>"; };
|
||||
FA322CE30CEF74B1001761B3 /* conn-zip.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = "conn-zip.c"; sourceTree = "<group>"; };
|
||||
FA322CE40CEF74B1001761B3 /* conn-zip.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = "conn-zip.h"; sourceTree = "<group>"; };
|
||||
FA322CE50CEF74B1001761B3 /* conn.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = conn.c; sourceTree = "<group>"; };
|
||||
FA322CE60CEF74B1001761B3 /* conn.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = conn.h; sourceTree = "<group>"; };
|
||||
FA322CE70CEF74B1001761B3 /* defines.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = defines.h; sourceTree = "<group>"; };
|
||||
FA322CE80CEF74B1001761B3 /* hash.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = hash.c; sourceTree = "<group>"; };
|
||||
FA322CE90CEF74B1001761B3 /* hash.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = hash.h; sourceTree = "<group>"; };
|
||||
FA322CEA0CEF74B1001761B3 /* io.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = io.c; sourceTree = "<group>"; };
|
||||
FA322CEB0CEF74B1001761B3 /* io.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = io.h; sourceTree = "<group>"; };
|
||||
FA322CEC0CEF74B1001761B3 /* irc-channel.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = "irc-channel.c"; sourceTree = "<group>"; };
|
||||
FA322CED0CEF74B1001761B3 /* irc-channel.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = "irc-channel.h"; sourceTree = "<group>"; };
|
||||
FA322CEE0CEF74B1001761B3 /* irc-info.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = "irc-info.c"; sourceTree = "<group>"; };
|
||||
FA322CEF0CEF74B1001761B3 /* irc-info.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = "irc-info.h"; sourceTree = "<group>"; };
|
||||
FA322CF00CEF74B1001761B3 /* irc-login.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = "irc-login.c"; sourceTree = "<group>"; };
|
||||
FA322CF10CEF74B1001761B3 /* irc-login.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = "irc-login.h"; sourceTree = "<group>"; };
|
||||
FA322CF20CEF74B1001761B3 /* irc-mode.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = "irc-mode.c"; sourceTree = "<group>"; };
|
||||
FA322CF30CEF74B1001761B3 /* irc-mode.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = "irc-mode.h"; sourceTree = "<group>"; };
|
||||
FA322CF40CEF74B1001761B3 /* irc-op.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = "irc-op.c"; sourceTree = "<group>"; };
|
||||
FA322CF50CEF74B1001761B3 /* irc-op.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = "irc-op.h"; sourceTree = "<group>"; };
|
||||
FA322CF60CEF74B1001761B3 /* irc-oper.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = "irc-oper.c"; sourceTree = "<group>"; };
|
||||
FA322CF70CEF74B1001761B3 /* irc-oper.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = "irc-oper.h"; sourceTree = "<group>"; };
|
||||
FA322CF80CEF74B1001761B3 /* irc-server.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = "irc-server.c"; sourceTree = "<group>"; };
|
||||
FA322CF90CEF74B1001761B3 /* irc-server.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = "irc-server.h"; sourceTree = "<group>"; };
|
||||
FA322CFA0CEF74B1001761B3 /* irc-write.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = "irc-write.c"; sourceTree = "<group>"; };
|
||||
FA322CFB0CEF74B1001761B3 /* irc-write.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = "irc-write.h"; sourceTree = "<group>"; };
|
||||
FA322CFC0CEF74B1001761B3 /* irc.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = irc.c; sourceTree = "<group>"; };
|
||||
FA322CFD0CEF74B1001761B3 /* irc.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = irc.h; sourceTree = "<group>"; };
|
||||
FA322CFE0CEF74B1001761B3 /* lists.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = lists.c; sourceTree = "<group>"; };
|
||||
FA322CFF0CEF74B1001761B3 /* lists.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = lists.h; sourceTree = "<group>"; };
|
||||
FA322D000CEF74B1001761B3 /* log.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = log.c; sourceTree = "<group>"; };
|
||||
FA322D010CEF74B1001761B3 /* log.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = log.h; sourceTree = "<group>"; };
|
||||
FA322D020CEF74B1001761B3 /* Makefile.am */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = Makefile.am; sourceTree = "<group>"; };
|
||||
FA322D030CEF74B1001761B3 /* match.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = match.c; sourceTree = "<group>"; };
|
||||
FA322D040CEF74B1001761B3 /* match.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = match.h; sourceTree = "<group>"; };
|
||||
FA322D050CEF74B1001761B3 /* messages.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = messages.h; sourceTree = "<group>"; };
|
||||
FA322D060CEF74B1001761B3 /* ngircd.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = ngircd.c; sourceTree = "<group>"; };
|
||||
FA322D070CEF74B1001761B3 /* ngircd.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = ngircd.h; sourceTree = "<group>"; };
|
||||
FA322D080CEF74B1001761B3 /* parse.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = parse.c; sourceTree = "<group>"; };
|
||||
FA322D090CEF74B1001761B3 /* parse.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = parse.h; sourceTree = "<group>"; };
|
||||
FA322D0A0CEF74B1001761B3 /* rendezvous.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = rendezvous.c; sourceTree = "<group>"; };
|
||||
FA322D0B0CEF74B1001761B3 /* rendezvous.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = rendezvous.h; sourceTree = "<group>"; };
|
||||
FA322D0C0CEF74B1001761B3 /* resolve.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = resolve.c; sourceTree = "<group>"; };
|
||||
FA322D0D0CEF74B1001761B3 /* resolve.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = resolve.h; sourceTree = "<group>"; };
|
||||
FA322D100CEF74B1001761B3 /* ansi2knr.1 */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.man; path = ansi2knr.1; sourceTree = "<group>"; };
|
||||
FA322D110CEF74B1001761B3 /* ansi2knr.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = ansi2knr.c; sourceTree = "<group>"; };
|
||||
FA322D120CEF74B1001761B3 /* exp.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = exp.h; sourceTree = "<group>"; };
|
||||
FA322D130CEF74B1001761B3 /* imp.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = imp.h; sourceTree = "<group>"; };
|
||||
FA322D140CEF74B1001761B3 /* Makefile.am */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = Makefile.am; sourceTree = "<group>"; };
|
||||
FA322D150CEF74B1001761B3 /* portab.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = portab.h; sourceTree = "<group>"; };
|
||||
FA322D160CEF74B1001761B3 /* portabtest.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = portabtest.c; sourceTree = "<group>"; };
|
||||
FA322D170CEF74B1001761B3 /* splint.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = splint.h; sourceTree = "<group>"; };
|
||||
FA322D180CEF74B1001761B3 /* strdup.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = strdup.c; sourceTree = "<group>"; };
|
||||
FA322D190CEF74B1001761B3 /* strlcpy.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = strlcpy.c; sourceTree = "<group>"; };
|
||||
FA322D1A0CEF74B1001761B3 /* vsnprintf.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = vsnprintf.c; sourceTree = "<group>"; };
|
||||
FA322D1D0CEF74B1001761B3 /* channel-test.e */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = "channel-test.e"; sourceTree = "<group>"; };
|
||||
FA322D1E0CEF74B1001761B3 /* check-idle.e */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = "check-idle.e"; sourceTree = "<group>"; };
|
||||
FA322D1F0CEF74B1001761B3 /* connect-test.e */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = "connect-test.e"; sourceTree = "<group>"; };
|
||||
FA322D200CEF74B1001761B3 /* functions.inc */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.pascal; path = functions.inc; sourceTree = "<group>"; };
|
||||
FA322D210CEF74B1001761B3 /* getpid.sh */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; path = getpid.sh; sourceTree = "<group>"; };
|
||||
FA322D220CEF74B1001761B3 /* Makefile.am */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = Makefile.am; sourceTree = "<group>"; };
|
||||
FA322D230CEF74B1001761B3 /* mode-test.e */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = "mode-test.e"; sourceTree = "<group>"; };
|
||||
FA322D250CEF74B1001761B3 /* README */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = README; sourceTree = "<group>"; };
|
||||
FA322D260CEF74B1001761B3 /* start-server.sh */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; path = "start-server.sh"; sourceTree = "<group>"; };
|
||||
FA322D270CEF74B1001761B3 /* stop-server.sh */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; path = "stop-server.sh"; sourceTree = "<group>"; };
|
||||
FA322D280CEF74B1001761B3 /* stress-A.e */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = "stress-A.e"; sourceTree = "<group>"; };
|
||||
FA322D290CEF74B1001761B3 /* stress-B.e */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = "stress-B.e"; sourceTree = "<group>"; };
|
||||
FA322D2A0CEF74B1001761B3 /* stress-server.sh */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; path = "stress-server.sh"; sourceTree = "<group>"; };
|
||||
FA322D2B0CEF74B1001761B3 /* test-loop.sh */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; path = "test-loop.sh"; sourceTree = "<group>"; };
|
||||
FA322D2C0CEF74B1001761B3 /* tests.sh */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; path = tests.sh; sourceTree = "<group>"; };
|
||||
FA322D2D0CEF74B1001761B3 /* wait-tests.sh */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; path = "wait-tests.sh"; sourceTree = "<group>"; };
|
||||
FA322D300CEF74B1001761B3 /* ansi2knr.1 */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.man; path = ansi2knr.1; sourceTree = "<group>"; };
|
||||
FA322D310CEF74B1001761B3 /* ansi2knr.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = ansi2knr.c; sourceTree = "<group>"; };
|
||||
FA322D320CEF74B1001761B3 /* Makefile.am */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = Makefile.am; sourceTree = "<group>"; };
|
||||
FA322D330CEF74B1001761B3 /* tool.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = tool.c; sourceTree = "<group>"; };
|
||||
FA322D340CEF74B1001761B3 /* tool.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = tool.h; sourceTree = "<group>"; };
|
||||
FA322D5A0CEF750F001761B3 /* AUTHORS */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = AUTHORS; path = ../../AUTHORS; sourceTree = SOURCE_ROOT; };
|
||||
FA322D5B0CEF750F001761B3 /* autogen.sh */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; name = autogen.sh; path = ../../autogen.sh; sourceTree = SOURCE_ROOT; };
|
||||
FA322D5C0CEF750F001761B3 /* ChangeLog */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = ChangeLog; path = ../../ChangeLog; sourceTree = SOURCE_ROOT; };
|
||||
FA322D5E0CEF750F001761B3 /* config.guess */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; name = config.guess; path = ../../config.guess; sourceTree = SOURCE_ROOT; };
|
||||
FA322D5F0CEF750F001761B3 /* config.sub */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; name = config.sub; path = ../../config.sub; sourceTree = SOURCE_ROOT; };
|
||||
FA322D600CEF750F001761B3 /* configure.in */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = configure.in; path = ../../configure.in; sourceTree = SOURCE_ROOT; };
|
||||
FA322D610CEF750F001761B3 /* COPYING */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = COPYING; path = ../../COPYING; sourceTree = SOURCE_ROOT; };
|
||||
FA322D620CEF750F001761B3 /* INSTALL */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = INSTALL; path = ../../INSTALL; sourceTree = SOURCE_ROOT; };
|
||||
FA322D630CEF750F001761B3 /* Makefile.am */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = Makefile.am; path = ../../Makefile.am; sourceTree = SOURCE_ROOT; };
|
||||
FA322D640CEF750F001761B3 /* NEWS */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = NEWS; path = ../../NEWS; sourceTree = SOURCE_ROOT; };
|
||||
FA322D650CEF750F001761B3 /* README */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = README; path = ../../README; sourceTree = SOURCE_ROOT; };
|
||||
FA322D6A0CEF7523001761B3 /* changelog */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = changelog; sourceTree = "<group>"; };
|
||||
FA322D6B0CEF7523001761B3 /* compat */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = compat; sourceTree = "<group>"; };
|
||||
FA322D6C0CEF7523001761B3 /* control */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = control; sourceTree = "<group>"; };
|
||||
FA322D6D0CEF7523001761B3 /* copyright */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = copyright; sourceTree = "<group>"; };
|
||||
FA322D6E0CEF7523001761B3 /* Makefile.am */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = Makefile.am; sourceTree = "<group>"; };
|
||||
FA322D6F0CEF7523001761B3 /* ngircd.default */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = ngircd.default; sourceTree = "<group>"; };
|
||||
FA322D700CEF7523001761B3 /* ngircd.init */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; path = ngircd.init; sourceTree = "<group>"; };
|
||||
FA322D710CEF7523001761B3 /* ngircd.postinst */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; path = ngircd.postinst; sourceTree = "<group>"; };
|
||||
FA322D720CEF7523001761B3 /* rules */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = rules; sourceTree = "<group>"; };
|
||||
FA322D8D0CEF7523001761B3 /* Makefile.am */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = Makefile.am; sourceTree = "<group>"; };
|
||||
FA322D8E0CEF7523001761B3 /* ngIRCd.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; path = ngIRCd.xcodeproj; sourceTree = "<group>"; };
|
||||
FA322D910CEF7523001761B3 /* Makefile.am */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = Makefile.am; sourceTree = "<group>"; };
|
||||
FA322D920CEF7523001761B3 /* ngindent */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = ngindent; sourceTree = "<group>"; };
|
||||
FA322D930CEF7523001761B3 /* ngircd.sh */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; path = ngircd.sh; sourceTree = "<group>"; };
|
||||
FA322D940CEF7523001761B3 /* ngircd.spec */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = ngircd.spec; sourceTree = "<group>"; };
|
||||
FA322D950CEF7523001761B3 /* README */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = README; sourceTree = "<group>"; };
|
||||
FA322D960CEF7523001761B3 /* systrace.policy */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = systrace.policy; sourceTree = "<group>"; };
|
||||
FA322D9A0CEF752C001761B3 /* FAQ.txt */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = FAQ.txt; sourceTree = "<group>"; };
|
||||
FA322D9B0CEF752C001761B3 /* Makefile.am */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = Makefile.am; sourceTree = "<group>"; };
|
||||
FA322D9C0CEF752C001761B3 /* Platforms.txt */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = Platforms.txt; sourceTree = "<group>"; };
|
||||
FA322D9D0CEF752C001761B3 /* Protocol.txt */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = Protocol.txt; sourceTree = "<group>"; };
|
||||
FA322D9E0CEF752C001761B3 /* README-AUX.txt */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = "README-AUX.txt"; sourceTree = "<group>"; };
|
||||
FA322D9F0CEF752C001761B3 /* README-BeOS.txt */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = "README-BeOS.txt"; sourceTree = "<group>"; };
|
||||
FA322DA00CEF752C001761B3 /* RFC.txt */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = RFC.txt; sourceTree = "<group>"; };
|
||||
FA322DA10CEF752C001761B3 /* sample-ngircd.conf */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = "sample-ngircd.conf"; sourceTree = "<group>"; };
|
||||
FA322DA40CEF752C001761B3 /* Doxyfile */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = Doxyfile; sourceTree = "<group>"; };
|
||||
FA322DA50CEF752C001761B3 /* footer.inc.html */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.html; path = footer.inc.html; sourceTree = "<group>"; };
|
||||
FA322DA60CEF752C001761B3 /* header.inc.html */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.html; path = header.inc.html; sourceTree = "<group>"; };
|
||||
FA322DA70CEF752C001761B3 /* Makefile.am */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = Makefile.am; sourceTree = "<group>"; };
|
||||
FA322DA80CEF752C001761B3 /* ngircd-doc.css */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.css; path = "ngircd-doc.css"; sourceTree = "<group>"; };
|
||||
FA322DA90CEF752C001761B3 /* SSL.txt */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = SSL.txt; sourceTree = "<group>"; };
|
||||
FA322DAA0CEF752C001761B3 /* Zeroconf.txt */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = Zeroconf.txt; sourceTree = "<group>"; };
|
||||
FA322DAD0CEF7538001761B3 /* Makefile.am */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = Makefile.am; sourceTree = "<group>"; };
|
||||
FA322DAE0CEF7538001761B3 /* ngircd.8.tmpl */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = ngircd.8.tmpl; sourceTree = "<group>"; };
|
||||
FA322DAF0CEF7538001761B3 /* ngircd.conf.5.tmpl */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = ngircd.conf.5.tmpl; sourceTree = "<group>"; };
|
||||
FA322DB10CEF7565001761B3 /* config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = config.h; sourceTree = "<group>"; };
|
||||
FA322DC00CEF77CB001761B3 /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = /usr/lib/libz.dylib; sourceTree = "<absolute>"; };
|
||||
FA407F2B0DB159F400271AF1 /* Makefile.am */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; name = Makefile.am; path = ipaddr/Makefile.am; sourceTree = "<group>"; };
|
||||
FA407F2C0DB159F400271AF1 /* ng_ipaddr.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; name = ng_ipaddr.c; path = ipaddr/ng_ipaddr.c; sourceTree = "<group>"; };
|
||||
FA407F2D0DB159F400271AF1 /* ng_ipaddr.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; name = ng_ipaddr.h; path = ipaddr/ng_ipaddr.h; sourceTree = "<group>"; };
|
||||
FA407F380DB15AC700271AF1 /* GIT.txt */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = GIT.txt; sourceTree = "<group>"; };
|
||||
FAA3D2700F139CB300B2447E /* invite-test.e */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = "invite-test.e"; sourceTree = "<group>"; };
|
||||
FAA3D2710F139CB300B2447E /* join-test.e */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = "join-test.e"; sourceTree = "<group>"; };
|
||||
FAA3D2720F139CB300B2447E /* kick-test.e */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = "kick-test.e"; sourceTree = "<group>"; };
|
||||
FAA3D2730F139CB300B2447E /* message-test.e */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = "message-test.e"; sourceTree = "<group>"; };
|
||||
FAA3D2740F139CB300B2447E /* ngircd-test1.conf */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = "ngircd-test1.conf"; sourceTree = "<group>"; };
|
||||
FAA3D2750F139CB300B2447E /* ngircd-test2.conf */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = "ngircd-test2.conf"; sourceTree = "<group>"; };
|
||||
FAA3D2760F139CB300B2447E /* opless-channel-test.e */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = "opless-channel-test.e"; sourceTree = "<group>"; };
|
||||
FAA3D2770F139CB300B2447E /* server-link-test.e */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = "server-link-test.e"; sourceTree = "<group>"; };
|
||||
FAA3D2780F139CDC00B2447E /* conf-ssl.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = "conf-ssl.h"; sourceTree = "<group>"; };
|
||||
FAA3D2790F139CDC00B2447E /* conn-ssl.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = "conn-ssl.c"; sourceTree = "<group>"; };
|
||||
FAA3D27A0F139CDC00B2447E /* conn-ssl.h */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.h; path = "conn-ssl.h"; sourceTree = "<group>"; };
|
||||
FAA3D27C0F139CF800B2447E /* strtok_r.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = strtok_r.c; sourceTree = "<group>"; };
|
||||
FAA3D27D0F139CF800B2447E /* waitpid.c */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = sourcecode.c.c; path = waitpid.c; sourceTree = "<group>"; };
|
||||
FAA3D2800F139D1500B2447E /* Services.txt */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = Services.txt; sourceTree = "<group>"; };
|
||||
FAA3D2820F139D2E00B2447E /* 01ngircd-contents.xml */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.xml; path = "01ngircd-contents.xml"; sourceTree = "<group>"; };
|
||||
FAA3D2830F139D2E00B2447E /* 01ngircd.xml */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.xml; path = 01ngircd.xml; sourceTree = "<group>"; };
|
||||
FAA3D2840F139D2E00B2447E /* 02de-contents.xml */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.xml; path = "02de-contents.xml"; sourceTree = "<group>"; };
|
||||
FAA3D2850F139D2E00B2447E /* 02de.xml */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.xml; path = 02de.xml; sourceTree = "<group>"; };
|
||||
FAA3D2860F139D2E00B2447E /* index.xml */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.xml; path = index.xml; sourceTree = "<group>"; };
|
||||
FAA3D2880F139D2E00B2447E /* Makefile.am */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text; path = Makefile.am; sourceTree = "<group>"; };
|
||||
FAA3D28A0F139D2E00B2447E /* postinstall.sh */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; path = postinstall.sh; sourceTree = "<group>"; };
|
||||
FAA3D28B0F139D2E00B2447E /* preinstall.sh */ = {isa = PBXFileReference; fileEncoding = 5; lastKnownFileType = text.script.sh; path = preinstall.sh; sourceTree = "<group>"; };
|
||||
FAE5CC2C0CF2308A007D69B6 /* numeric.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = numeric.h; sourceTree = "<group>"; };
|
||||
FAE5CC2D0CF2308A007D69B6 /* numeric.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = numeric.c; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
8DD76FAD0486AB0100D96B5E /* Frameworks */ = {
|
||||
isa = PBXFrameworksBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
FA322DC10CEF77CB001761B3 /* libz.dylib in Frameworks */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXFrameworksBuildPhase section */
|
||||
|
||||
/* Begin PBXGroup section */
|
||||
08FB7794FE84155DC02AAC07 /* ngIRCd */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
FA322D970CEF752C001761B3 /* doc */,
|
||||
FA322D660CEF7523001761B3 /* contrib */,
|
||||
FA322DAB0CEF7538001761B3 /* man */,
|
||||
FA322CD40CEF74B0001761B3 /* src */,
|
||||
FA322D5A0CEF750F001761B3 /* AUTHORS */,
|
||||
FA322D610CEF750F001761B3 /* COPYING */,
|
||||
FA322D620CEF750F001761B3 /* INSTALL */,
|
||||
FA322D640CEF750F001761B3 /* NEWS */,
|
||||
FA322D650CEF750F001761B3 /* README */,
|
||||
FA322D5B0CEF750F001761B3 /* autogen.sh */,
|
||||
FA322D5C0CEF750F001761B3 /* ChangeLog */,
|
||||
FA322D5E0CEF750F001761B3 /* config.guess */,
|
||||
FA322D5F0CEF750F001761B3 /* config.sub */,
|
||||
FA322D600CEF750F001761B3 /* configure.in */,
|
||||
FA322D630CEF750F001761B3 /* Makefile.am */,
|
||||
1AB674ADFE9D54B511CA2CBB /* Products */,
|
||||
FA322DC00CEF77CB001761B3 /* libz.dylib */,
|
||||
);
|
||||
name = ngIRCd;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
1AB674ADFE9D54B511CA2CBB /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
FA322BBA0CEF72E4001761B3 /* ngIRCd */,
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
FA322CD40CEF74B0001761B3 /* src */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
FA322CD70CEF74B1001761B3 /* ngircd */,
|
||||
FA407F270DB1598D00271AF1 /* ipaddr */,
|
||||
FA322D0E0CEF74B1001761B3 /* portab */,
|
||||
FA322D1B0CEF74B1001761B3 /* testsuite */,
|
||||
FA322D2E0CEF74B1001761B3 /* tool */,
|
||||
FA322CD60CEF74B1001761B3 /* Makefile.am */,
|
||||
);
|
||||
name = src;
|
||||
path = ../../src;
|
||||
sourceTree = SOURCE_ROOT;
|
||||
};
|
||||
FA322CD70CEF74B1001761B3 /* ngircd */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
FAA3D2780F139CDC00B2447E /* conf-ssl.h */,
|
||||
FAA3D2790F139CDC00B2447E /* conn-ssl.c */,
|
||||
FAA3D27A0F139CDC00B2447E /* conn-ssl.h */,
|
||||
FA322CD90CEF74B1001761B3 /* array.c */,
|
||||
FA322CDA0CEF74B1001761B3 /* array.h */,
|
||||
FA322CDB0CEF74B1001761B3 /* channel.c */,
|
||||
FA322CDC0CEF74B1001761B3 /* channel.h */,
|
||||
FA322CDD0CEF74B1001761B3 /* client.c */,
|
||||
FA322CDE0CEF74B1001761B3 /* client.h */,
|
||||
FA322CDF0CEF74B1001761B3 /* conf.c */,
|
||||
FA322CE00CEF74B1001761B3 /* conf.h */,
|
||||
FA322CE10CEF74B1001761B3 /* conn-func.c */,
|
||||
FA322CE20CEF74B1001761B3 /* conn-func.h */,
|
||||
FA322CE30CEF74B1001761B3 /* conn-zip.c */,
|
||||
FA322CE40CEF74B1001761B3 /* conn-zip.h */,
|
||||
FA322CE50CEF74B1001761B3 /* conn.c */,
|
||||
FA322CE60CEF74B1001761B3 /* conn.h */,
|
||||
FA322CE70CEF74B1001761B3 /* defines.h */,
|
||||
FA322CE80CEF74B1001761B3 /* hash.c */,
|
||||
FA322CE90CEF74B1001761B3 /* hash.h */,
|
||||
FA322CEA0CEF74B1001761B3 /* io.c */,
|
||||
FA322CEB0CEF74B1001761B3 /* io.h */,
|
||||
FA322CEC0CEF74B1001761B3 /* irc-channel.c */,
|
||||
FA322CED0CEF74B1001761B3 /* irc-channel.h */,
|
||||
FA322CEE0CEF74B1001761B3 /* irc-info.c */,
|
||||
FA322CEF0CEF74B1001761B3 /* irc-info.h */,
|
||||
FA322CF00CEF74B1001761B3 /* irc-login.c */,
|
||||
FA322CF10CEF74B1001761B3 /* irc-login.h */,
|
||||
FA322CF20CEF74B1001761B3 /* irc-mode.c */,
|
||||
FA322CF30CEF74B1001761B3 /* irc-mode.h */,
|
||||
FA322CF40CEF74B1001761B3 /* irc-op.c */,
|
||||
FA322CF50CEF74B1001761B3 /* irc-op.h */,
|
||||
FA322CF60CEF74B1001761B3 /* irc-oper.c */,
|
||||
FA322CF70CEF74B1001761B3 /* irc-oper.h */,
|
||||
FA322CF80CEF74B1001761B3 /* irc-server.c */,
|
||||
FA322CF90CEF74B1001761B3 /* irc-server.h */,
|
||||
FA322CFA0CEF74B1001761B3 /* irc-write.c */,
|
||||
FA322CFB0CEF74B1001761B3 /* irc-write.h */,
|
||||
FA322CFC0CEF74B1001761B3 /* irc.c */,
|
||||
FA322CFD0CEF74B1001761B3 /* irc.h */,
|
||||
FA322CFE0CEF74B1001761B3 /* lists.c */,
|
||||
FA322CFF0CEF74B1001761B3 /* lists.h */,
|
||||
FA322D000CEF74B1001761B3 /* log.c */,
|
||||
FA322D010CEF74B1001761B3 /* log.h */,
|
||||
FA322D020CEF74B1001761B3 /* Makefile.am */,
|
||||
FA322D030CEF74B1001761B3 /* match.c */,
|
||||
FA322D040CEF74B1001761B3 /* match.h */,
|
||||
FA322D050CEF74B1001761B3 /* messages.h */,
|
||||
FA322D060CEF74B1001761B3 /* ngircd.c */,
|
||||
FA322D070CEF74B1001761B3 /* ngircd.h */,
|
||||
FAE5CC2D0CF2308A007D69B6 /* numeric.c */,
|
||||
FAE5CC2C0CF2308A007D69B6 /* numeric.h */,
|
||||
FA322D080CEF74B1001761B3 /* parse.c */,
|
||||
FA322D090CEF74B1001761B3 /* parse.h */,
|
||||
FA322D0A0CEF74B1001761B3 /* rendezvous.c */,
|
||||
FA322D0B0CEF74B1001761B3 /* rendezvous.h */,
|
||||
FA322D0C0CEF74B1001761B3 /* resolve.c */,
|
||||
FA322D0D0CEF74B1001761B3 /* resolve.h */,
|
||||
);
|
||||
path = ngircd;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
FA322D0E0CEF74B1001761B3 /* portab */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
FAA3D27C0F139CF800B2447E /* strtok_r.c */,
|
||||
FAA3D27D0F139CF800B2447E /* waitpid.c */,
|
||||
FA322D100CEF74B1001761B3 /* ansi2knr.1 */,
|
||||
FA322D110CEF74B1001761B3 /* ansi2knr.c */,
|
||||
FA322D120CEF74B1001761B3 /* exp.h */,
|
||||
FA322D130CEF74B1001761B3 /* imp.h */,
|
||||
FA322D140CEF74B1001761B3 /* Makefile.am */,
|
||||
FA322D150CEF74B1001761B3 /* portab.h */,
|
||||
FA322D160CEF74B1001761B3 /* portabtest.c */,
|
||||
FA322D170CEF74B1001761B3 /* splint.h */,
|
||||
FA322D180CEF74B1001761B3 /* strdup.c */,
|
||||
FA322D190CEF74B1001761B3 /* strlcpy.c */,
|
||||
FA322D1A0CEF74B1001761B3 /* vsnprintf.c */,
|
||||
);
|
||||
path = portab;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
FA322D1B0CEF74B1001761B3 /* testsuite */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
FAA3D2700F139CB300B2447E /* invite-test.e */,
|
||||
FAA3D2710F139CB300B2447E /* join-test.e */,
|
||||
FAA3D2720F139CB300B2447E /* kick-test.e */,
|
||||
FAA3D2730F139CB300B2447E /* message-test.e */,
|
||||
FAA3D2740F139CB300B2447E /* ngircd-test1.conf */,
|
||||
FAA3D2750F139CB300B2447E /* ngircd-test2.conf */,
|
||||
FAA3D2760F139CB300B2447E /* opless-channel-test.e */,
|
||||
FAA3D2770F139CB300B2447E /* server-link-test.e */,
|
||||
FA322D1D0CEF74B1001761B3 /* channel-test.e */,
|
||||
FA322D1E0CEF74B1001761B3 /* check-idle.e */,
|
||||
FA322D1F0CEF74B1001761B3 /* connect-test.e */,
|
||||
FA322D200CEF74B1001761B3 /* functions.inc */,
|
||||
FA322D210CEF74B1001761B3 /* getpid.sh */,
|
||||
FA322D220CEF74B1001761B3 /* Makefile.am */,
|
||||
FA1A6BBC0D6857BB00AA8F71 /* misc-test.e */,
|
||||
FA322D230CEF74B1001761B3 /* mode-test.e */,
|
||||
FA322D250CEF74B1001761B3 /* README */,
|
||||
FA322D260CEF74B1001761B3 /* start-server.sh */,
|
||||
FA322D270CEF74B1001761B3 /* stop-server.sh */,
|
||||
FA322D280CEF74B1001761B3 /* stress-A.e */,
|
||||
FA322D290CEF74B1001761B3 /* stress-B.e */,
|
||||
FA322D2A0CEF74B1001761B3 /* stress-server.sh */,
|
||||
FA322D2B0CEF74B1001761B3 /* test-loop.sh */,
|
||||
FA322D2C0CEF74B1001761B3 /* tests.sh */,
|
||||
FA322D2D0CEF74B1001761B3 /* wait-tests.sh */,
|
||||
FA1A6BBD0D6857D900AA8F71 /* who-test.e */,
|
||||
);
|
||||
path = testsuite;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
FA322D2E0CEF74B1001761B3 /* tool */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
FA322D300CEF74B1001761B3 /* ansi2knr.1 */,
|
||||
FA322D310CEF74B1001761B3 /* ansi2knr.c */,
|
||||
FA322D320CEF74B1001761B3 /* Makefile.am */,
|
||||
FA322D330CEF74B1001761B3 /* tool.c */,
|
||||
FA322D340CEF74B1001761B3 /* tool.h */,
|
||||
);
|
||||
path = tool;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
FA322D660CEF7523001761B3 /* contrib */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
FA322D680CEF7523001761B3 /* Debian */,
|
||||
FA322D730CEF7523001761B3 /* MacOSX */,
|
||||
FA322D910CEF7523001761B3 /* Makefile.am */,
|
||||
FA322D920CEF7523001761B3 /* ngindent */,
|
||||
FA322D930CEF7523001761B3 /* ngircd.sh */,
|
||||
FA322D940CEF7523001761B3 /* ngircd.spec */,
|
||||
FA322D950CEF7523001761B3 /* README */,
|
||||
FA322D960CEF7523001761B3 /* systrace.policy */,
|
||||
);
|
||||
name = contrib;
|
||||
path = ..;
|
||||
sourceTree = SOURCE_ROOT;
|
||||
};
|
||||
FA322D680CEF7523001761B3 /* Debian */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
FA322D6A0CEF7523001761B3 /* changelog */,
|
||||
FA322D6B0CEF7523001761B3 /* compat */,
|
||||
FA322D6C0CEF7523001761B3 /* control */,
|
||||
FA322D6D0CEF7523001761B3 /* copyright */,
|
||||
FA322D6E0CEF7523001761B3 /* Makefile.am */,
|
||||
FA322D6F0CEF7523001761B3 /* ngircd.default */,
|
||||
FA322D700CEF7523001761B3 /* ngircd.init */,
|
||||
FA322D710CEF7523001761B3 /* ngircd.postinst */,
|
||||
FA322D720CEF7523001761B3 /* rules */,
|
||||
);
|
||||
path = Debian;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
FA322D730CEF7523001761B3 /* MacOSX */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
FAA3D2810F139D2E00B2447E /* ngIRCd.pmdoc */,
|
||||
FAA3D28A0F139D2E00B2447E /* postinstall.sh */,
|
||||
FAA3D28B0F139D2E00B2447E /* preinstall.sh */,
|
||||
FA322D750CEF7523001761B3 /* build */,
|
||||
FA322D8D0CEF7523001761B3 /* Makefile.am */,
|
||||
FA322D8E0CEF7523001761B3 /* ngIRCd.xcodeproj */,
|
||||
FA322DB10CEF7565001761B3 /* config.h */,
|
||||
);
|
||||
path = MacOSX;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
FA322D750CEF7523001761B3 /* build */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
FA322D760CEF7523001761B3 /* ngIRCd.build */,
|
||||
);
|
||||
path = build;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
FA322D760CEF7523001761B3 /* ngIRCd.build */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
FA322D770CEF7523001761B3 /* Default */,
|
||||
FA322D7F0CEF7523001761B3 /* ngIRCd.pbxindex */,
|
||||
);
|
||||
path = ngIRCd.build;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
FA322D770CEF7523001761B3 /* Default */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
FA322D780CEF7523001761B3 /* ngIRCd.build */,
|
||||
);
|
||||
path = Default;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
FA322D780CEF7523001761B3 /* ngIRCd.build */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
FA322D7A0CEF7523001761B3 /* Objects-normal */,
|
||||
);
|
||||
path = ngIRCd.build;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
FA322D7A0CEF7523001761B3 /* Objects-normal */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
FA322D7B0CEF7523001761B3 /* i386 */,
|
||||
FA322D7D0CEF7523001761B3 /* ppc */,
|
||||
);
|
||||
path = "Objects-normal";
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
FA322D7B0CEF7523001761B3 /* i386 */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
);
|
||||
path = i386;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
FA322D7D0CEF7523001761B3 /* ppc */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
);
|
||||
path = ppc;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
FA322D7F0CEF7523001761B3 /* ngIRCd.pbxindex */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
FA322D880CEF7523001761B3 /* strings.pbxstrings */,
|
||||
);
|
||||
path = ngIRCd.pbxindex;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
FA322D880CEF7523001761B3 /* strings.pbxstrings */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
);
|
||||
path = strings.pbxstrings;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
FA322D8F0CEF7523001761B3 /* Products */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
);
|
||||
name = Products;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
FA322D970CEF752C001761B3 /* doc */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
FAA3D2800F139D1500B2447E /* Services.txt */,
|
||||
FA407F380DB15AC700271AF1 /* GIT.txt */,
|
||||
FA322D9A0CEF752C001761B3 /* FAQ.txt */,
|
||||
FA322D9B0CEF752C001761B3 /* Makefile.am */,
|
||||
FA322D9C0CEF752C001761B3 /* Platforms.txt */,
|
||||
FA322D9D0CEF752C001761B3 /* Protocol.txt */,
|
||||
FA322D9E0CEF752C001761B3 /* README-AUX.txt */,
|
||||
FA322D9F0CEF752C001761B3 /* README-BeOS.txt */,
|
||||
FA322DA00CEF752C001761B3 /* RFC.txt */,
|
||||
FA322DA10CEF752C001761B3 /* sample-ngircd.conf */,
|
||||
FA322DA20CEF752C001761B3 /* src */,
|
||||
FA322DA90CEF752C001761B3 /* SSL.txt */,
|
||||
FA322DAA0CEF752C001761B3 /* Zeroconf.txt */,
|
||||
);
|
||||
name = doc;
|
||||
path = ../../doc;
|
||||
sourceTree = SOURCE_ROOT;
|
||||
};
|
||||
FA322DA20CEF752C001761B3 /* src */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
FA322DA40CEF752C001761B3 /* Doxyfile */,
|
||||
FA322DA50CEF752C001761B3 /* footer.inc.html */,
|
||||
FA322DA60CEF752C001761B3 /* header.inc.html */,
|
||||
FA322DA70CEF752C001761B3 /* Makefile.am */,
|
||||
FA322DA80CEF752C001761B3 /* ngircd-doc.css */,
|
||||
);
|
||||
path = src;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
FA322DAB0CEF7538001761B3 /* man */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
FA322DAD0CEF7538001761B3 /* Makefile.am */,
|
||||
FA322DAE0CEF7538001761B3 /* ngircd.8.tmpl */,
|
||||
FA322DAF0CEF7538001761B3 /* ngircd.conf.5.tmpl */,
|
||||
);
|
||||
name = man;
|
||||
path = ../../man;
|
||||
sourceTree = SOURCE_ROOT;
|
||||
};
|
||||
FA407F270DB1598D00271AF1 /* ipaddr */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
FA407F2B0DB159F400271AF1 /* Makefile.am */,
|
||||
FA407F2C0DB159F400271AF1 /* ng_ipaddr.c */,
|
||||
FA407F2D0DB159F400271AF1 /* ng_ipaddr.h */,
|
||||
);
|
||||
name = ipaddr;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
FAA3D2810F139D2E00B2447E /* ngIRCd.pmdoc */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
FAA3D2820F139D2E00B2447E /* 01ngircd-contents.xml */,
|
||||
FAA3D2830F139D2E00B2447E /* 01ngircd.xml */,
|
||||
FAA3D2840F139D2E00B2447E /* 02de-contents.xml */,
|
||||
FAA3D2850F139D2E00B2447E /* 02de.xml */,
|
||||
FAA3D2860F139D2E00B2447E /* index.xml */,
|
||||
FAA3D2880F139D2E00B2447E /* Makefile.am */,
|
||||
);
|
||||
path = ngIRCd.pmdoc;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXGroup section */
|
||||
|
||||
/* Begin PBXNativeTarget section */
|
||||
8DD76FA90486AB0100D96B5E /* ngIRCd */ = {
|
||||
isa = PBXNativeTarget;
|
||||
buildConfigurationList = 1DEB928508733DD80010E9CD /* Build configuration list for PBXNativeTarget "ngIRCd" */;
|
||||
buildPhases = (
|
||||
8DD76FAB0486AB0100D96B5E /* Sources */,
|
||||
8DD76FAD0486AB0100D96B5E /* Frameworks */,
|
||||
8DD76FAF0486AB0100D96B5E /* CopyFiles */,
|
||||
);
|
||||
buildRules = (
|
||||
);
|
||||
dependencies = (
|
||||
);
|
||||
name = ngIRCd;
|
||||
productInstallPath = "$(HOME)/bin";
|
||||
productName = ngIRCd;
|
||||
productReference = FA322BBA0CEF72E4001761B3 /* ngIRCd */;
|
||||
productType = "com.apple.product-type.tool";
|
||||
};
|
||||
/* End PBXNativeTarget section */
|
||||
|
||||
/* Begin PBXProject section */
|
||||
08FB7793FE84155DC02AAC07 /* Project object */ = {
|
||||
isa = PBXProject;
|
||||
buildConfigurationList = 1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "ngIRCd" */;
|
||||
compatibilityVersion = "Xcode 3.0";
|
||||
hasScannedForEncodings = 1;
|
||||
mainGroup = 08FB7794FE84155DC02AAC07 /* ngIRCd */;
|
||||
projectDirPath = "";
|
||||
projectReferences = (
|
||||
{
|
||||
ProductGroup = FA322D8F0CEF7523001761B3 /* Products */;
|
||||
ProjectRef = FA322D8E0CEF7523001761B3 /* ngIRCd.xcodeproj */;
|
||||
},
|
||||
);
|
||||
projectRoot = "";
|
||||
targets = (
|
||||
8DD76FA90486AB0100D96B5E /* ngIRCd */,
|
||||
);
|
||||
};
|
||||
/* End PBXProject section */
|
||||
|
||||
/* Begin PBXSourcesBuildPhase section */
|
||||
8DD76FAB0486AB0100D96B5E /* Sources */ = {
|
||||
isa = PBXSourcesBuildPhase;
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
FA322D350CEF74B1001761B3 /* array.c in Sources */,
|
||||
FA322D360CEF74B1001761B3 /* channel.c in Sources */,
|
||||
FA322D370CEF74B1001761B3 /* client.c in Sources */,
|
||||
FA322D380CEF74B1001761B3 /* conf.c in Sources */,
|
||||
FA322D390CEF74B1001761B3 /* conn-func.c in Sources */,
|
||||
FA322D3A0CEF74B1001761B3 /* conn-zip.c in Sources */,
|
||||
FA322D3B0CEF74B1001761B3 /* conn.c in Sources */,
|
||||
FA322D3C0CEF74B1001761B3 /* hash.c in Sources */,
|
||||
FA322D3D0CEF74B1001761B3 /* io.c in Sources */,
|
||||
FA322D3E0CEF74B1001761B3 /* irc-channel.c in Sources */,
|
||||
FA322D3F0CEF74B1001761B3 /* irc-info.c in Sources */,
|
||||
FA322D400CEF74B1001761B3 /* irc-login.c in Sources */,
|
||||
FA322D410CEF74B1001761B3 /* irc-mode.c in Sources */,
|
||||
FA322D420CEF74B1001761B3 /* irc-op.c in Sources */,
|
||||
FA322D430CEF74B1001761B3 /* irc-oper.c in Sources */,
|
||||
FA322D440CEF74B1001761B3 /* irc-server.c in Sources */,
|
||||
FA322D450CEF74B1001761B3 /* irc-write.c in Sources */,
|
||||
FA322D460CEF74B1001761B3 /* irc.c in Sources */,
|
||||
FA322D470CEF74B1001761B3 /* lists.c in Sources */,
|
||||
FA322D480CEF74B1001761B3 /* log.c in Sources */,
|
||||
FA322D490CEF74B1001761B3 /* match.c in Sources */,
|
||||
FA322D4A0CEF74B1001761B3 /* ngircd.c in Sources */,
|
||||
FA322D4B0CEF74B1001761B3 /* parse.c in Sources */,
|
||||
FA322D4C0CEF74B1001761B3 /* rendezvous.c in Sources */,
|
||||
FA322D4D0CEF74B1001761B3 /* resolve.c in Sources */,
|
||||
FA322DBE0CEF7766001761B3 /* tool.c in Sources */,
|
||||
FAE5CC2E0CF2308A007D69B6 /* numeric.c in Sources */,
|
||||
FA407F2E0DB159F400271AF1 /* ng_ipaddr.c in Sources */,
|
||||
FAA3D27B0F139CDC00B2447E /* conn-ssl.c in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
/* End PBXSourcesBuildPhase section */
|
||||
|
||||
/* Begin XCBuildConfiguration section */
|
||||
1DEB928708733DD80010E9CD /* Default */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES;
|
||||
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
|
||||
GCC_WARN_ABOUT_MISSING_NEWLINE = YES;
|
||||
GCC_WARN_ABOUT_MISSING_PROTOTYPES = YES;
|
||||
GCC_WARN_CHECK_SWITCH_STATEMENTS = YES;
|
||||
GCC_WARN_FOUR_CHARACTER_CONSTANTS = YES;
|
||||
GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES;
|
||||
GCC_WARN_MISSING_PARENTHESES = YES;
|
||||
GCC_WARN_PEDANTIC = YES;
|
||||
GCC_WARN_SHADOW = YES;
|
||||
GCC_WARN_SIGN_COMPARE = YES;
|
||||
GCC_WARN_TYPECHECK_CALLS_TO_PRINTF = YES;
|
||||
GCC_WARN_UNINITIALIZED_AUTOS = YES;
|
||||
GCC_WARN_UNKNOWN_PRAGMAS = YES;
|
||||
GCC_WARN_UNUSED_FUNCTION = YES;
|
||||
GCC_WARN_UNUSED_LABEL = YES;
|
||||
GCC_WARN_UNUSED_PARAMETER = YES;
|
||||
GCC_WARN_UNUSED_VALUE = YES;
|
||||
INSTALL_PATH = /usr/local/bin;
|
||||
PRODUCT_NAME = ngIRCd;
|
||||
SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.4u.sdk";
|
||||
};
|
||||
name = Default;
|
||||
};
|
||||
1DEB928B08733DD80010E9CD /* Default */ = {
|
||||
isa = XCBuildConfiguration;
|
||||
buildSettings = {
|
||||
ARCHS = (
|
||||
ppc,
|
||||
i386,
|
||||
);
|
||||
GCC_WARN_ABOUT_RETURN_TYPE = YES;
|
||||
GCC_WARN_UNUSED_VARIABLE = YES;
|
||||
PREBINDING = NO;
|
||||
SDKROOT = "$(DEVELOPER_SDK_DIR)/MacOSX10.4u.sdk";
|
||||
};
|
||||
name = Default;
|
||||
};
|
||||
/* End XCBuildConfiguration section */
|
||||
|
||||
/* Begin XCConfigurationList section */
|
||||
1DEB928508733DD80010E9CD /* Build configuration list for PBXNativeTarget "ngIRCd" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
1DEB928708733DD80010E9CD /* Default */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Default;
|
||||
};
|
||||
1DEB928908733DD80010E9CD /* Build configuration list for PBXProject "ngIRCd" */ = {
|
||||
isa = XCConfigurationList;
|
||||
buildConfigurations = (
|
||||
1DEB928B08733DD80010E9CD /* Default */,
|
||||
);
|
||||
defaultConfigurationIsVisible = 0;
|
||||
defaultConfigurationName = Default;
|
||||
};
|
||||
/* End XCConfigurationList section */
|
||||
};
|
||||
rootObject = 08FB7793FE84155DC02AAC07 /* Project object */;
|
||||
}
|
42
contrib/MacOSX/postinstall.sh
Executable file
42
contrib/MacOSX/postinstall.sh
Executable file
@@ -0,0 +1,42 @@
|
||||
#!/bin/sh
|
||||
# ngIRCd Mac OS X postinstall/postupgrade script
|
||||
|
||||
LDPLIST="/Library/LaunchDaemons/de.barton.ngircd.plist"
|
||||
|
||||
if [ ! -e /etc/ngircd ]; then
|
||||
echo "Creating symlink: /opt/ngircd/etc -> /etc/ngircd"
|
||||
ln -s /opt/ngircd/etc /etc/ngircd || exit 1
|
||||
else
|
||||
echo "/etc/ngircd already exists. Don't create symlink."
|
||||
fi
|
||||
|
||||
if [ ! -e /opt/ngircd/etc/ngircd.conf ]; then
|
||||
echo "Creating default configuration: /opt/ngircd/etc/ngircd.conf"
|
||||
cp /opt/ngircd/share/doc/ngircd/sample-ngircd.conf \
|
||||
/opt/ngircd/etc/ngircd.conf || exit 1
|
||||
else
|
||||
echo "/opt/ngircd/etc/ngircd.conf exists. Don't copy sample file."
|
||||
fi
|
||||
chmod o-rwx /opt/ngircd/etc/ngircd.conf
|
||||
|
||||
if [ -f "$LDPLIST" ]; then
|
||||
echo "Fixing ownership and permissions of LaunchDaemon script ..."
|
||||
chown root:wheel "$LDPLIST" || exit 1
|
||||
chmod 644 "$LDPLIST" || exit 1
|
||||
fi
|
||||
|
||||
if [ -f /tmp/ngircd_needs_restart ]; then
|
||||
echo "ngIRCd should be (re-)started ..."
|
||||
if [ -r "$LDPLIST" ]; then
|
||||
echo "LaunchDaemon script found, starting daemon ..."
|
||||
launchctl load -w "$LDPLIST" || exit 1
|
||||
echo "OK, LaunchDaemon script loaded successfully."
|
||||
else
|
||||
echo "LaunchDaemon script not installed. Can't start daemon."
|
||||
fi
|
||||
else
|
||||
echo "Not loading LaunchDaemon script."
|
||||
fi
|
||||
rm -f /tmp/ngircd_needs_restart
|
||||
|
||||
# -eof-
|
25
contrib/MacOSX/preinstall.sh
Executable file
25
contrib/MacOSX/preinstall.sh
Executable file
@@ -0,0 +1,25 @@
|
||||
#!/bin/sh
|
||||
# ngIRCd Mac OS X preinstall/preupgrade script
|
||||
|
||||
LDPLIST="/Library/LaunchDaemons/de.barton.ngircd.plist"
|
||||
|
||||
rm -f /tmp/ngircd_needs_restart || exit 1
|
||||
if [ -r "$LDPLIST" ]; then
|
||||
echo "LaunchDaemon script found, checking status ..."
|
||||
launchctl list | fgrep "de.barton.ngIRCd" >/dev/null 2>&1
|
||||
if [ $? -eq 0 ]; then
|
||||
# ngIRCd is already running; stop it and touch a
|
||||
# "stamp file" so that we know that we have to
|
||||
# restart it after installation/upgrade.
|
||||
echo "ngIRCd is already running; stop it ..."
|
||||
launchctl unload "$LDPLIST" || exit 1
|
||||
echo "Daemon has been stopped."
|
||||
touch /tmp/ngircd_needs_restart || exit 1
|
||||
else
|
||||
echo "ngIRCd is not running."
|
||||
fi
|
||||
else
|
||||
echo "LaunchDaemon script not found."
|
||||
fi
|
||||
|
||||
# -eof-
|
19
contrib/Makefile.am
Normal file
19
contrib/Makefile.am
Normal file
@@ -0,0 +1,19 @@
|
||||
#
|
||||
# ngIRCd -- The Next Generation IRC Daemon
|
||||
# Copyright (c)2001-2008 Alexander Barton (alex@barton.de)
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
# Please read the file COPYING, README and AUTHORS for more information.
|
||||
#
|
||||
|
||||
SUBDIRS = Debian MacOSX
|
||||
|
||||
EXTRA_DIST = README ngircd.spec systrace.policy ngindent ngircd.sh
|
||||
|
||||
maintainer-clean-local:
|
||||
rm -f Makefile Makefile.in
|
||||
|
||||
# -eof-
|
33
contrib/README
Normal file
33
contrib/README
Normal file
@@ -0,0 +1,33 @@
|
||||
|
||||
ngIRCd - Next Generation IRC Server
|
||||
|
||||
(c)2001-2005 Alexander Barton,
|
||||
alex@barton.de, http://www.barton.de/
|
||||
|
||||
ngIRCd is free software and published under the
|
||||
terms of the GNU General Public License.
|
||||
|
||||
-- Contributions --
|
||||
|
||||
|
||||
Debian/
|
||||
- Various files for building Debian GNU/Linux packages (".deb's").
|
||||
|
||||
MacOSX/
|
||||
- Project files for XCode, the "project builder" of Apple Mac OS X.
|
||||
|
||||
ngindent
|
||||
- Script to indent the code of ngIRCd in the "standard way".
|
||||
|
||||
ngircd.sh
|
||||
- Start script for FreeBSD.
|
||||
|
||||
ngircd.spec
|
||||
- RPM "spec" file.
|
||||
|
||||
systrace.policy
|
||||
- Systrace policy file for OpenBSD (and probably NetBSD).
|
||||
|
||||
|
||||
--
|
||||
$Id: README,v 1.3 2006/07/23 11:34:32 alex Exp $
|
16
contrib/ngindent
Executable file
16
contrib/ngindent
Executable file
@@ -0,0 +1,16 @@
|
||||
#/bin/sh
|
||||
|
||||
INDENTARGS="-kr -i8 -ts8 -l80 -c3 -cd41 -ss -ncs -psl"
|
||||
|
||||
# check if indent(1) is available
|
||||
type indent >/dev/null 2>&1 && INDENT="indent"
|
||||
type gnuindent >/dev/null 2>&1 && INDENT="gnuindent"
|
||||
|
||||
if [ -z "$INDENT" ]; then
|
||||
echo "Error: GNU \"indent\" not found!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
$INDENT -v $INDENTARGS $*
|
||||
|
||||
# -eof-
|
51
contrib/ngircd.sh
Normal file
51
contrib/ngircd.sh
Normal file
@@ -0,0 +1,51 @@
|
||||
#!/bin/sh
|
||||
|
||||
# PROVIDE: ngircd
|
||||
# REQUIRE: NETWORKING SERVERS
|
||||
# BEFORE: DAEMON
|
||||
# KEYWORD: FreeBSD shutdown
|
||||
|
||||
# Add the following line to /etc/rc.conf to enable `ngircd':
|
||||
#
|
||||
#ngircd_enable="YES"
|
||||
#
|
||||
|
||||
. "/etc/rc.subr"
|
||||
|
||||
name="ngircd"
|
||||
rcvar=`set_rcvar`
|
||||
|
||||
command="/usr/local/sbin/ngircd"
|
||||
command_args=""
|
||||
|
||||
load_rc_config "$name"
|
||||
: ${ngircd_enable="NO"}
|
||||
: ${ngircd_flags=""}
|
||||
|
||||
required_files="/usr/local/etc/$name.conf"
|
||||
pidfile="${ngircd_pidfile:-/var/run/${name}/${name}.pid}"
|
||||
|
||||
if [ ! x"${ngircd_chrootdir}" = x ];then
|
||||
# Mount a devfs in the chroot directory if needed
|
||||
if [ ! -c ${ngircd_chrootdir}/dev/random \
|
||||
-o ! -c ${ngircd_chrootdir}/dev/null ]; then
|
||||
umount ${ngircd_chrootdir}/dev 2>/dev/null
|
||||
mount_devfs devfs ${ngircd_chrootdir}/dev
|
||||
fi
|
||||
|
||||
devfs -m ${ngircd_chrootdir}/dev rule apply hide
|
||||
devfs -m ${ngircd_chrootdir}/dev rule apply path null unhide
|
||||
devfs -m ${ngircd_chrootdir}/dev rule apply path random unhide
|
||||
|
||||
# Copy local timezone information if it is not up to date.
|
||||
if [ -f /etc/localtime ]; then
|
||||
cmp -s /etc/localtime "${named_chrootdir}/etc/localtime" || \
|
||||
cp -p /etc/localtime "${named_chrootdir}/etc/localtime"
|
||||
fi
|
||||
|
||||
pidfile="${ngircd_chrootdir}${pidfile}"
|
||||
fi
|
||||
|
||||
run_rc_command "$1"
|
||||
|
||||
# -eof-
|
60
contrib/ngircd.spec
Normal file
60
contrib/ngircd.spec
Normal file
@@ -0,0 +1,60 @@
|
||||
%define name ngircd
|
||||
%define version 14
|
||||
%define release 1
|
||||
%define prefix %{_prefix}
|
||||
|
||||
Summary: A lightweight daemon for the Internet Relay Chat (IRC)
|
||||
Name: %{name}
|
||||
Version: %{version}
|
||||
Release: %{release}
|
||||
License: GPLv2+
|
||||
Group: System Environment/Daemons
|
||||
URL: http://ngircd.barton.de/
|
||||
Source: %{name}-%{version}.tar.gz
|
||||
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
||||
BuildRequires: zlib-devel, openssl-devel
|
||||
|
||||
%description
|
||||
ngIRCd is a free open source daemon for the Internet Relay Chat (IRC),
|
||||
developed under the GNU General Public License (GPL). It's written from
|
||||
scratch and is not based upon the original IRCd like many others.
|
||||
|
||||
Advantages:
|
||||
- no problems with servers using changing/non-static IP addresses.
|
||||
- small and lean configuration file.
|
||||
- free, modern and open source C code.
|
||||
- still under active development.
|
||||
|
||||
ngIRCd is compatible to the "original" ircd 2.10.3p3, so you can run
|
||||
mixed networks.
|
||||
|
||||
%prep
|
||||
%setup -q
|
||||
%build
|
||||
%configure \
|
||||
--with-zlib \
|
||||
--with-openssl
|
||||
|
||||
make %{?_smp_mflags}
|
||||
|
||||
%install
|
||||
[ -n "$RPM_BUILD_ROOT" -a "$RPM_BUILD_ROOT" != / ] && rm -rf "$RPM_BUILD_ROOT"
|
||||
%makeinstall
|
||||
(
|
||||
cd "$RPM_BUILD_ROOT"
|
||||
( cd usr/sbin; mv *-ngircd ngircd )
|
||||
( cd usr/share/man/man5; mv *-ngircd.conf.5 ngircd.conf.5 )
|
||||
( cd usr/share/man/man8; mv *-ngircd.8 ngircd.8 )
|
||||
rm -fr usr/share/doc/ngircd
|
||||
)
|
||||
|
||||
%clean
|
||||
[ -n "$RPM_BUILD_ROOT" -a "$RPM_BUILD_ROOT" != / ] && rm -rf "$RPM_BUILD_ROOT"
|
||||
|
||||
%files
|
||||
%defattr(755,root,root)
|
||||
%doc AUTHORS COPYING ChangeLog INSTALL NEWS README doc/*
|
||||
%config(noreplace) /etc
|
||||
%{_prefix}/sbin
|
||||
%{_mandir}/man5/ngircd.conf*
|
||||
%{_mandir}/man8/ngircd.8*
|
77
contrib/systrace.policy
Normal file
77
contrib/systrace.policy
Normal file
@@ -0,0 +1,77 @@
|
||||
#
|
||||
# Sample systrace policy for ngIRCd on OpenBSD
|
||||
# Author: Benjamin Pineau <ben@zouh.org>
|
||||
#
|
||||
# $Id: systrace.policy,v 1.1 2004/04/28 12:16:59 alex Exp $
|
||||
#
|
||||
# Tune me, put me in /etc/systrace/usr_local_bin_ngircd and start ngIRCd
|
||||
# (with root privileges) as:
|
||||
#
|
||||
# systrace -a /usr/local/bin/ngircd
|
||||
#
|
||||
# I didn't tried this on NetBSD, but it should work as is.
|
||||
#
|
||||
# On systems with pf, it can be supplemented by strict firewall rules:
|
||||
# for a ngircd running as '$ircuser', binding on '$ircport' and accepting
|
||||
# 30 connections:
|
||||
#
|
||||
# block out log quick proto tcp from any port $ircport to any \
|
||||
# user != $ircuser
|
||||
# pass in inet proto tcp from any to any port $ircport user $ircuser \
|
||||
# keep state (max 30) flags S/SA
|
||||
#
|
||||
|
||||
Policy: /usr/local/bin/ngircd, Emulation: native
|
||||
native-__sysctl: permit
|
||||
native-fsread: filename eq "/etc/malloc.conf" then permit
|
||||
native-fsread: filename sub "/usr/share/zoneinfo/" then permit
|
||||
native-fsread: filename eq "/usr/local/etc/ngircd.conf" then permit
|
||||
native-fsread: filename eq "/usr/local/etc/ngircd.motd" then permit
|
||||
native-fsread: filename eq "/etc/ngircd.conf" then permit
|
||||
native-fsread: filename eq "/etc/ngircd.motd" then permit
|
||||
native-fsread: filename eq "/etc/spwd.db" then deny[eperm]
|
||||
native-fsread: filename eq "/etc/group" then permit
|
||||
native-fsread: filename eq "/etc/resolv.conf" then permit
|
||||
native-fsread: filename eq "/etc/localtime" then permit
|
||||
native-fsread: filename eq "/etc/hosts" then permit
|
||||
native-fsread: filename sub "<non-existent filename>" then deny[enoent]
|
||||
native-socket: sockdom eq "AF_UNIX" and socktype eq "SOCK_DGRAM" then permit
|
||||
native-socket: sockdom eq "AF_INET" and socktype eq "SOCK_STREAM" then permit
|
||||
native-bind: sockaddr match "inet-*:6667" then permit, if user != root
|
||||
native-connect: sockaddr eq "/dev/log" then permit, if user != root
|
||||
native-connect: sockaddr match "inet-*:53" then permit, if user != root
|
||||
native-setsockopt: permit, if user != root
|
||||
native-listen: permit, if user != root
|
||||
native-accept: permit, if user != root
|
||||
native-sendto: true then permit, if user != root
|
||||
native-recvfrom: permit, if user != root
|
||||
native-read: permit
|
||||
native-pread: permit
|
||||
native-write: permit, if user != root
|
||||
native-mmap: permit
|
||||
native-munmap: permit
|
||||
native-mprotect: permit
|
||||
native-break: permit
|
||||
native-umask: permit
|
||||
native-fork: permit
|
||||
native-setsid: permit
|
||||
native-chdir: permit
|
||||
native-chroot: permit
|
||||
native-setgid: gid neq "0" then permit
|
||||
native-setuid: uid neq "0" and uname neq "root" then permit
|
||||
native-getuid: permit
|
||||
native-getgid: permit
|
||||
native-gettimeofday: permit
|
||||
native-getpid: permit
|
||||
native-select: permit
|
||||
native-fcntl: permit
|
||||
native-fstat: permit
|
||||
native-issetugid: permit
|
||||
native-sigaction: permit
|
||||
native-pipe: permit
|
||||
native-sigreturn: permit
|
||||
native-close: permit
|
||||
native-exit: permit
|
||||
native-fswrite: deny[eperm]
|
||||
|
||||
# -eof-
|
64
doc/CVS.txt
64
doc/CVS.txt
@@ -1,64 +0,0 @@
|
||||
|
||||
ngIRCd - Next Generation IRC Server
|
||||
|
||||
(c)2001,2002 by Alexander Barton,
|
||||
alex@barton.de, http://www.barton.de/
|
||||
|
||||
ngIRCd ist freie Software und steht unter
|
||||
der GNU General Public License.
|
||||
|
||||
-- CVS.txt --
|
||||
|
||||
|
||||
Die Sourcen des ngIRCd werden mit dem "Concurrent Versions System" (CVS)
|
||||
verwaltet. Somit koennen ohne Probleme mehrere Leute gleichzeitig die Sourcen
|
||||
bearbeitet.
|
||||
|
||||
|
||||
I. Anonymer "Nur-Lesen"-Zugang
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
Anonymer Zugriff auf die CVS-Repository von ngIRCd ist im "nur-lesen"-Modus
|
||||
moeglich. Dazu sind folgende Schritte noetig:
|
||||
|
||||
Beim CVS-Server anmelden
|
||||
|
||||
$ cvs -d:pserver:anonymous@arthur.ath.cx:/usr/local/CVS/ngircd login
|
||||
|
||||
Als Benutzername wird "anonymous" mit einem leeren Passwort verwendet.
|
||||
Nun ein "Check-Out" der Quellcodes durchfuehren:
|
||||
|
||||
$ cvs -d:pserver:anonymous@arthur.ath.cx:/usr/local/CVS/ngircd checkout ngircd
|
||||
|
||||
Dadurch wird im aktuellen Verzeichnis der neue Ordner "ngircd" mit allen
|
||||
Quell-Dateien des ngIRCd erzeugt.
|
||||
|
||||
Dieses ist der "Arbeitsordner", alle CVS-Befehle werden in Zukunft aus
|
||||
diesem Ordner bzw. einem Unterordner davon ausgefuehrt.
|
||||
|
||||
Wichtig: wenn ngIRCd "frisch" aus dem CVS compiliert werden soll, so
|
||||
existiert das configure-Script noch nicht. Dieses muss zunaechst mit dem
|
||||
Script "autogen.sh" erzeugt werden. Letzteres setzt ein installiertes GNU
|
||||
automake und GNU autoconf voraus!
|
||||
|
||||
CVS-Tree aktualisieren:
|
||||
|
||||
$ cvs update
|
||||
|
||||
Dieser Befehl aktualisiert alle Dateien im aktuellen Verzeichnis sowie allen
|
||||
Unterverzeichnissen.
|
||||
|
||||
$ cvs update <filename>
|
||||
|
||||
So kann eine einzelne Datei aktualisiert werden (auch dann, wenn sie lokal
|
||||
z.B. geloescht wurde -- praktisch, um eigene "Experimente" rueckgaengig zu
|
||||
machen ;-))
|
||||
|
||||
|
||||
III. Schreibzugriff
|
||||
~~~~~~~~~~~~~~~~~~~
|
||||
Wer Schreibzugriff auf die CVS-Repository wuenscht, der moege sich bitte
|
||||
mit Alex Barton, <alex@barton.de> in Verbindung setzen.
|
||||
|
||||
|
||||
--
|
||||
$Id: CVS.txt,v 1.5 2002/02/15 15:15:22 alex Exp $
|
109
doc/FAQ.txt
109
doc/FAQ.txt
@@ -1,61 +1,90 @@
|
||||
|
||||
ngIRCd - Next Generation IRC Server
|
||||
|
||||
(c)2001,2002 by Alexander Barton,
|
||||
(c)2001-2003 by Alexander Barton,
|
||||
alex@barton.de, http://www.barton.de/
|
||||
|
||||
ngIRCd ist freie Software und steht unter
|
||||
der GNU General Public License.
|
||||
ngIRCd is free software and published under the
|
||||
terms of the GNU General Public License.
|
||||
|
||||
-- FAQ: Frequently Asked Questions --
|
||||
|
||||
|
||||
I. Allgemein
|
||||
~~~~~~~~~~~~
|
||||
Q: Kann der ngIRCd im Netz zusammen mit "normalen" Servern betrieben werden?
|
||||
A: Ja. ngIRCd ist zum Original kompatibel, getestet wird dies zur Zeit mit
|
||||
der Version 2.10.3p3 des ircd.
|
||||
I. General
|
||||
~~~~~~~~~~
|
||||
Q: Is it possible to link the ngIRCd with non-ngIRCd servers?
|
||||
A: Yes. ngIRCd is compatible to the original ircd used by IRCNet. Actually
|
||||
this is being tested with version 2.10.3p3.
|
||||
|
||||
Q: Gibt es eine Homepage mit Informationen und Downloads?
|
||||
A: Ja. Die URL ist <http://arthur.ath.cx/~alex/ngircd/>.
|
||||
Q: Is there a homepage with further information and downloads?
|
||||
A: Yes. Please visit <http://ngircd.barton.de/>.
|
||||
|
||||
Q: Why should I use ngIRCd instead of the original one?
|
||||
A: ngIRCd offers several benefits: no problems with dynamic IPs, easy to
|
||||
configure, open source (GPL), under active development.
|
||||
|
||||
|
||||
II. Compilieren
|
||||
II. Compilation
|
||||
~~~~~~~~~~~~~~~
|
||||
Q: Ich habe die Sourcen von ngIRCd ueber CVS installiert. Nun kann ich
|
||||
./configure nicht ausfuehren, da es nicht existiert!?
|
||||
A: Bei Builds direkt aus dem CVS-Tree muss das configure-Script zunaechst
|
||||
durch GNU autoconf sowie die Makefile.in's durch GNU automake generiert
|
||||
werden. Um dies zu vereinfachen existiert das Script "./autogen.sh".
|
||||
GNU automake und GNU autoconf werden -- im Gegensatz zu Builds aus den
|
||||
Sourcen eines .tar.gz-Archivs -- hierbei benoetigt!
|
||||
Q: I did a "CVS checkout" but can't execute ./configure because the script
|
||||
is missing in the generated directory!?
|
||||
A: When using development versions via CVS, the configure script as well as
|
||||
the Makefile.in templates must be generated using GNU automake and GNU
|
||||
autoconf. To simplify this task run the ./autogen.sh script which will
|
||||
execute the required tools for you; then continue with executing the
|
||||
./configure script as usual.
|
||||
|
||||
Q: ./autogen.sh bricht mit der Meldung "autoheader: command not found" ab.
|
||||
A: GNU autoconf ist nicht installiert, wird jedoch bei Builds direkt aus
|
||||
dem CVS-Tree benoetigt.
|
||||
Q: The ./autogen.sh script complains "aclocal: command not found".
|
||||
A: GNU automake is missing on your system but required for building CVS
|
||||
versions of ngIRCd. Install GNU automake 1.6 or later and try again.
|
||||
|
||||
Q: ./autogen.sh bricht mit der Meldung "autoconf: Undefined macros:
|
||||
AC_FUNC_MALLOC" bzw. "AC_CONFIG_SRCDIR" ab.
|
||||
A: Auf dem System ist eine zu alte Version von GNU autoconf installiert.
|
||||
Ein Update auf z.B. Version 2.52 loest dieses Problem (eine installiete
|
||||
alte Version sollte ggf. zunaechst entfernt werden, bei RPM-Paketen z.B.
|
||||
mit dem Befehl "rpm -e autoconf").
|
||||
Q: The ./autogen.sh script stops with "autoheader: command not found".
|
||||
A: GNU autoconf is missing on your system but required for building CVS
|
||||
versions of ngIRCd. Install GNU autoconf 2.52 or later and try again.
|
||||
|
||||
Q: The ./autogen.sh script fails and the message "automake: configure.in:
|
||||
AM_INIT_AUTOMAKE must be used" is displayed.
|
||||
A: Most probably you are using version 1.5 of GNU automake which seems to be
|
||||
incompatible to the build system of ngIRCd. Solution: upgrade to at least
|
||||
version 1.6 of GNU automake.
|
||||
(If you are using Debian 3.0 "Woody" you can try to downgrade to version
|
||||
1.4 of GNU automake shipped with this distribution; it should work, too.)
|
||||
|
||||
|
||||
III. Bugs!?
|
||||
~~~~~~~~~~~
|
||||
Q: Gibt es eine Liste der bekannten Bugs bzw. Feature-Wuensche?
|
||||
A: Ja. Es existiert ein Bug-Tracking-System fuer den ngIRCd (Bugzilla):
|
||||
URL: <http://arthur.ath.cx/bugzilla/ngircd/>. Dort koennen Bugs ge-
|
||||
meldet und Feature-Wunsche kundgetan werden. Bekannte Bugs koennen in
|
||||
der Datenbank gesucht und aufgelistet werden.
|
||||
Einen Account zum Suchen und Melden von Bugs bzw. Feature-Wuenschen
|
||||
kannst du dir dort selber anlegen.
|
||||
III. Runtime
|
||||
~~~~~~~~~~~~
|
||||
|
||||
Q: Was mache ich, wenn ich einen Bug gefunden habe?
|
||||
A: Am besten traegst du ihn in das Bug-Tracking-System des ngIRCd ein:
|
||||
URL: <http://arthur.ath.cx/bugzilla/ngircd/>
|
||||
Q: Where is the log file located?
|
||||
A: ngIRCd does not write its own log file. Instead, ngIRCd uses
|
||||
syslog(3). Check the files in /var/log/ and/or consult the
|
||||
documentation for your system logger daemon.
|
||||
Q: I cannot connect to remote peers when I use the chroot option, the
|
||||
following is logged: "Can't resolve example.com: unknown error!".
|
||||
A: On Linux/glibc with chroot enabled you need to put some libraries inside
|
||||
the chroot as well, notably libnss_dns; maybe others. Unfortunately, even
|
||||
linking ngircd statically does not help this. The only known workaround
|
||||
is to either disable chroot support or to link against dietlibc instead
|
||||
of glibc. (tnx to Sebastian Siewior)
|
||||
Q: I have added an [Oper] section, how do i log on as IRC operator?
|
||||
A: You can use the /OPER command in your IRC client to become an IRC operator.
|
||||
ngIRCd will also log all OPER requests (using syslog), if OPER fails you
|
||||
can look there to determine why it did not work (bad password, unauthorized
|
||||
host mask, etc.)
|
||||
Q: I am an IRC operator, but MODE doesn't work!
|
||||
A: You need to set 'OperCanUseMode = yes' in ngircd.conf to enable MODE for IRC
|
||||
operators.
|
||||
|
||||
IV. Bugs!?
|
||||
~~~~~~~~~~
|
||||
Q: Is there a list of known bugs and desired feature enhancements?
|
||||
A: Yes. Have a look at the bug tracking system (Bugzilla) for ngIRCd located
|
||||
at <http://ngircd.barton.de/bugzilla/index.cgi>. There you can file bug
|
||||
reports and feature requests as well as search the bug database.
|
||||
|
||||
Q: What should I do if I found a bug?
|
||||
A: Please file a bug report at <http://ngircd.barton.de/bugzilla/index.cgi>!
|
||||
The author of the particular component will be notified automagically :-)
|
||||
|
||||
|
||||
--
|
||||
$Id: FAQ.txt,v 1.2 2002/02/19 20:05:02 alex Exp $
|
||||
$Id: FAQ.txt,v 1.12 2008/01/02 22:47:58 alex Exp $
|
||||
|
45
doc/GIT.txt
Normal file
45
doc/GIT.txt
Normal file
@@ -0,0 +1,45 @@
|
||||
ngIRCd - Next Generation IRC Server
|
||||
|
||||
-- GIT.txt --
|
||||
|
||||
The source code of ngIRCd is maintained using git, the stupid content
|
||||
tracker.
|
||||
|
||||
I. Getting the source code
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
To access the source tree anonymously, run:
|
||||
|
||||
$ git clone git://ngircd.barton.de/ngircd.git
|
||||
|
||||
Thereby a new folder "ngircd" will be created containing all the individual
|
||||
source files.
|
||||
|
||||
The newly created directory ("ngircd") is the "working directory", all
|
||||
git commands will be executed from within this directory in the future.
|
||||
|
||||
Please note: When checking out a fresh copy of ngIRCd using git, the
|
||||
configure script doesn't exist; you have to run the autogen.sh shell script
|
||||
(which is included in the source tree) to generate it. This requires you to
|
||||
have GNU automake and GNU autoconf installed on your system.
|
||||
|
||||
To update the git tree:
|
||||
|
||||
$ git pull
|
||||
|
||||
This retrieves all changes and merges them into the current branch.
|
||||
|
||||
II. Contributing
|
||||
~~~~~~~~~~~~~~~~
|
||||
|
||||
Patches should be sent to the ngircd mailing list. List homepage:
|
||||
http://arthur.barton.de/mailman/listinfo/ngircd-ml
|
||||
|
||||
If you do not want to send them to the list, you can also mail them
|
||||
to Alex Barton, <alex@barton.de>.
|
||||
|
||||
|
||||
III. Write Access
|
||||
~~~~~~~~~~~~~~~~~
|
||||
If you want to contribute a couple of patches and write access to the git
|
||||
repository would be handy, please contact Alex Barton, <alex@barton.de>.
|
||||
|
@@ -1,6 +1,6 @@
|
||||
#
|
||||
# ngIRCd -- The Next Generation IRC Daemon
|
||||
# Copyright (c)2001,2002 by Alexander Barton (alex@barton.de)
|
||||
# Copyright (c)2001-2008 Alexander Barton (alex@barton.de)
|
||||
#
|
||||
# Dieses Programm ist freie Software. Sie koennen es unter den Bedingungen
|
||||
# der GNU General Public License (GPL), wie von der Free Software Foundation
|
||||
@@ -9,21 +9,35 @@
|
||||
# Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste
|
||||
# der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS.
|
||||
#
|
||||
# $Id: Makefile.am,v 1.10 2002/09/16 10:35:06 alex Exp $
|
||||
#
|
||||
|
||||
SUBDIRS = en
|
||||
SUBDIRS = src
|
||||
|
||||
EXTRA_DIST = CVS.txt FAQ.txt Protocol.txt README-AUX.txt \
|
||||
README-BeOS.txt RFC.txt sample-ngircd.conf
|
||||
EXTRA_DIST = FAQ.txt GIT.txt Protocol.txt Platforms.txt README-AUX.txt \
|
||||
README-BeOS.txt RFC.txt Services.txt SSL.txt Zeroconf.txt \
|
||||
sample-ngircd.conf
|
||||
|
||||
maintainer-clean-local:
|
||||
rm -f Makefile Makefile.in
|
||||
|
||||
docdir = $(datadir)/doc/$(PACKAGE)
|
||||
|
||||
documents = $(EXTRA_DIST) ../AUTHORS ../COPYING ../ChangeLog ../INSTALL \
|
||||
../NEWS ../README
|
||||
|
||||
install-data-hook:
|
||||
$(mkinstalldirs) $(DESTDIR)$(sysconfdir)
|
||||
if [ ! -f $(DESTDIR)$(sysconfdir)/ngircd.conf ]; then \
|
||||
$(INSTALL) -m 600 -c $(srcdir)/sample-ngircd.conf $(DESTDIR)$(sysconfdir)/ngircd.conf; \
|
||||
fi
|
||||
fi
|
||||
$(mkinstalldirs) $(DESTDIR)$(docdir)
|
||||
for f in $(documents); do \
|
||||
$(INSTALL) -m 644 -c $(srcdir)/$$f $(DESTDIR)$(docdir)/; \
|
||||
done
|
||||
|
||||
uninstall-hook:
|
||||
rm -rf $(DESTDIR)$(docdir)
|
||||
|
||||
srcdoc:
|
||||
make -C src srcdoc
|
||||
|
||||
# -eof-
|
||||
|
86
doc/Platforms.txt
Normal file
86
doc/Platforms.txt
Normal file
@@ -0,0 +1,86 @@
|
||||
|
||||
ngIRCd - Next Generation IRC Server
|
||||
|
||||
(c)2001-2008 Alexander Barton
|
||||
alex@barton.de, http://www.barton.de/
|
||||
|
||||
ngIRCd is free software and published under the
|
||||
terms of the GNU General Public License.
|
||||
|
||||
-- Platforms.txt --
|
||||
|
||||
|
||||
This file lists the status of all platforms on which the ngIRCd has been
|
||||
tested. Included is the date and version of the last "official" test and
|
||||
the name of the tester/maintainer.
|
||||
|
||||
If you successfully compiled and tested ngIRCd on a platform that isn't
|
||||
listed here, please contact Alexander Barton, <alex@barton.de>, so that this
|
||||
list can be updated. Thanks for your help!
|
||||
|
||||
|
||||
the executable works ("runs") as expected --+
|
||||
tests run successfully ("make check") --+ |
|
||||
ngIRCd compiles ("make") --+ | |
|
||||
./configure works --+ | | |
|
||||
| | | |
|
||||
Platform Compiler ngIRCd Date Tester C M T R See
|
||||
--------------------------- ------------ ---------- -------- ------ - - - - ---
|
||||
alpha/unknown/netbsd3.0 gcc 3.3.3 CVSHEAD 06-05-07 fw Y Y Y Y (3)
|
||||
hppa/unknown/openbsd3.5 gcc 2.95.3 CVSHEAD 04-05-25 alex Y Y Y Y
|
||||
hppa1.1/unknown/linux-gnu gcc 3.3.3 0.8.0 04-05-30 alex Y Y Y Y
|
||||
hppa2.0/unknown/linux-gnu gcc 3.3.5 13~rc1 08-12-02 alex Y Y Y Y
|
||||
i386/apple/darwin9.5.1 gcc 4.0.1 13~rc1 08-12-02 alex Y Y Y Y (3)
|
||||
i386/pc/solaris2.9 gcc 3.2.2 CVSHEAD 04-02-24 alex Y Y Y Y
|
||||
i386/pc/solaris2.11 gcc 3.4.3 13~rc1 08-12-03 alex Y Y Y Y (4)
|
||||
i386/unknown/freebsd5.2.1 gcc 3.3.3 0.8.0 04-05-30 alex Y Y Y Y
|
||||
i386/unknown/freebsd6.0 gcc 3.4.4 0.10.0-p1 06-08-04 alex Y Y Y Y (3)
|
||||
i386/unknown/freebsd6.1 gcc 3.4.4 CVSHEAD 06-05-07 fw Y Y Y Y (3)
|
||||
i386/unknown/freebsd6.2 gcc 3.4.6 13~rc1 08-12-04 alex Y Y Y Y (3)
|
||||
i386/unknown/freebsd7.0 gcc 4.2.1 13~rc1 08-12-04 alex Y Y Y Y (3)
|
||||
i386/unknown/gnu0.3 gcc 3.3.3 0.8.0 04-05-30 alex Y Y n Y
|
||||
i686/unknown/gnu0.3 gcc 4.3.1 13~rc1 08-12-05 alex Y Y Y Y
|
||||
i386/unknown/netbsdelf1.6.1 gcc 2.95.3 CVSHEAD 04-02-24 alex Y Y Y Y
|
||||
i386/unknown/netbsdelf3.0.1 gcc 3.3.3 0.10.0-p1 06-08-30 alex Y Y Y Y (3)
|
||||
i386/unknown/netbsdelf4.0 gcc 4.1.2 13~rc1 08-12-05 alex Y Y Y Y (3)
|
||||
i386/unknown/openbsd3.9 gcc 3.3.5 0.10.0-p1 06-08-30 alex Y Y Y Y (3)
|
||||
i386/unknown/openbsd4.1 gcc 3.3.5 13~rc1 08-12-05 alex Y Y Y Y (3)
|
||||
i686/pc/cygwin gcc 3.3.1 0.8.0 04-05-30 alex Y Y n Y
|
||||
i686/pc/linux-gnu gcc 2.95.4 0.8.0 04-05-30 alex Y Y Y Y (1)
|
||||
i686/pc/linux-gnu gcc 3.3.5 13~rc1 08-12-05 alex Y Y Y Y (1)
|
||||
i386/pc/linux-gnu gcc 4.1.2 13~rc1 08-12-05 alex Y Y Y Y (1)
|
||||
i386/pc/linux-gnu gcc 4.3.2 13~rc1 08-12-05 alex Y Y Y Y (1)
|
||||
m68k/apple/aux3.1.1 Orig. A/UX 0.7.x-CVS 03-04-22 alex Y Y Y Y (2)
|
||||
m68k/hp/hp-ux9.10 Orig. HPUX 0.7.x-CVS 03-04-30 goetz Y Y Y Y
|
||||
m88k/dg/dgux5.4R3.10 gcc 2.5.8 CVSHEAD 04-03-15 alex Y Y ? ?
|
||||
powerpc/apple/darwin6.5 gcc 3.1 0.7.x-CVS 03-04-23 alex Y Y Y Y
|
||||
powerpc/apple/darwin7.4.0 gcc 3.3 0.8.0 04-05-30 alex Y Y Y Y
|
||||
powerpc/apple/darwin7.9.0 gcc 3.3 CVSHEAD 06-05-07 fw Y Y Y Y (3)
|
||||
powerpc/apple/darwin8.1.0 gcc 4.0 0.9.x-CVS 05-06-27 alex Y Y Y Y
|
||||
powerpc/unknown/linux-gnu gcc 3.3.3 0.8.0 04-05-30 alex Y Y Y Y
|
||||
powerpc/unknown/openbsd3.6 gcc 2.95.3 0.10.0 06-10-08 alex Y Y n Y
|
||||
sparc/sun/solaris2.6 gcc 2.95.3 0.7.x-CVS 03-04-22 alex Y Y Y Y
|
||||
sparc/sun/solaris2.7 gcc 3.3 0.8.0 04-05-30 alex Y Y Y Y
|
||||
sparc/unkn./netbsdelf1.6.1 gcc 2.95.3 0.8.0 04-05-30 alex Y Y Y Y
|
||||
x86_64/unknown/linux-gnu 4.3.2 13~rc1 08-12-05 alex Y Y Y Y (5)
|
||||
|
||||
|
||||
Notes
|
||||
~~~~~
|
||||
|
||||
(1) i686/pc/linux-gnu:
|
||||
ngIRCd has been tested with various Linux distributions, such as SuSE,
|
||||
RedHat, Debian, and Gentoo using Kernels 2.2.x, 2.4.x and 2.6.x with
|
||||
various versions of the GNU C compiler (starting with 2.95.x and up to
|
||||
version 4.3.x). The eldest glibc used was glibc-2.0.7. ngIRCd compiled
|
||||
and run on all these systems without problems.
|
||||
Actual Linux kernels (2.6.x) and glic's support the epoll() IO interface.
|
||||
|
||||
(2) This compiler is an pre-ANSI C compiler, therefore the source code is
|
||||
automatically converted using the included ansi2knr tool while building.
|
||||
|
||||
(3) Using the kqueue() IO interface.
|
||||
|
||||
(4) Using the /dev/poll IO interface.
|
||||
|
||||
(5) Using the epoll() IO interface.
|
202
doc/Protocol.txt
202
doc/Protocol.txt
@@ -1,109 +1,163 @@
|
||||
|
||||
ngIRCd - Next Generation IRC Server
|
||||
|
||||
(c)2001,2002 by Alexander Barton,
|
||||
(c)2001-2008 Alexander Barton,
|
||||
alex@barton.de, http://www.barton.de/
|
||||
|
||||
ngIRCd ist freie Software und steht unter
|
||||
der GNU General Public License.
|
||||
ngIRCd is free software and published under the
|
||||
terms of the GNU General Public License.
|
||||
|
||||
-- Protocol.txt --
|
||||
|
||||
|
||||
I. Kompatibilitaet
|
||||
~~~~~~~~~~~~~~~~~~
|
||||
I. Compatibility
|
||||
~~~~~~~~~~~~~~~~
|
||||
|
||||
Der ngIRCd haelt sich an das IRC-Protokoll Version 2.10, wie es in den RFCs
|
||||
1459 und 2810-2813 beschrieben ist. Diese (und ggf. weitere fuer den ngIRCd
|
||||
relevante) RFCs sind in RFC.txt aufgefuehrt.
|
||||
The ngIRCd implements the Internet Relay Chat (IRC) protocol version 2.10
|
||||
as defined in RFC ("request for comment") 1459 and 2810-2813. These (and
|
||||
probably further relevant RFCs) are listed in doc/RFC.txt.
|
||||
|
||||
Leider verhaelt sich aber schon der "Originalserver" nicht immer genau so,
|
||||
wie es in den RFCs beschrieben ist. Da der ngIRCd aber ein Ersatz fuer
|
||||
eben diesen Server sein soll, werden diese Abweichungen in der Regel vom
|
||||
ngIRCd emuliert um die Kompatibilitaet zu wahren.
|
||||
Unfortunately, even the "original" ircd doesn't follow these specifications
|
||||
in all details. But because the ngIRCd should be a fully compatible
|
||||
replacement for this server ("ircd") it tries to emulate these differences.
|
||||
|
||||
Sollte dieses Verhalten nicht erwuenscht sein, so kann mit der configure-
|
||||
Option "--enable-strict-rfc" der ngIRCd so compiliert werden, dass er sich
|
||||
strikt an die entsprechenden RFCs haelt.
|
||||
|
||||
ACHTUNG: an einem so compilierten Server koennen sich andere Server und
|
||||
Clients, die sich nicht genau an das Protokoll halten, u.U. nicht mehr
|
||||
anmelden oder alle Funktionen nutzen! In der Regel ist diese Option daher
|
||||
nicht erwuenscht.
|
||||
If you don't like this behavior please ./configure the ngIRCd using the
|
||||
"--enable-strict-rfc" command line option. But keep in mind: not all IRC
|
||||
clients are compatible with a server configured that way, some can't even
|
||||
connect at all! Therefore this option usually isn't desired for "normal
|
||||
server operation".
|
||||
|
||||
|
||||
II. Das IRC+-Protokoll
|
||||
~~~~~~~~~~~~~~~~~~~~~~
|
||||
II. The IRC+ Protocol
|
||||
~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Der ngIRCd unterstuetzt als Erweiterung zum IRC-Protokoll wie es in den RFCs
|
||||
2810-2813 beschrieben ist, das IRC+-Protokoll. Dieses Protokoll ist dabei
|
||||
kompatibel zum IRC-Protokoll und wird nur verwendet, wenn der ngIRCd fest-
|
||||
stellt, dass ein connectierter Server ebenfalls dieses erweiterte Protokoll
|
||||
unterstuetzt.
|
||||
Starting with version 0.5.0, the ngIRCd extends the original IRC protocol
|
||||
as defined in RFC 2810-2813. This enhanced protocol is named "IRC+". It is
|
||||
backwards compatible to the "plain" IRC protocol and will only be used by
|
||||
the ngIRCd if it detects that the peer supports it as well.
|
||||
|
||||
Die Protokoll- und Server-Erkennung wird mit dem "PASS"-Befehl durchgefuehrt
|
||||
(vgl. RFC 2813, Sektion 4.1.1):
|
||||
The "PASS" command is used to detect the protocol and peer versions see
|
||||
RFC 2813 (section 4.1.1) and below.
|
||||
|
||||
|
||||
II.1 neuen Server-Link registrieren
|
||||
II.1 Register new server link
|
||||
|
||||
Befehl: PASS
|
||||
Parameter: <password> <version> <flags> [<options>]
|
||||
Fuer: mit dieser Syntax nur Server
|
||||
Command: PASS
|
||||
Parameters: <password> <version> <flags> [<options>]
|
||||
Used by: servers only (with these parameters)
|
||||
|
||||
<password> enthaelt das Passwort fur den neu aufzubauenden Server-Link,
|
||||
so wie es in der Konfigurationsdatei definiert wurde.
|
||||
<password> is the password for this new server link as defined in the server
|
||||
configuration which is sent to the peer or received from it.
|
||||
|
||||
<version> setzt sich aus zwei Teilen zusammen und ist mindestens 4, maximal
|
||||
14 Zeichen lang: die ersten vier Bytes enthalten die Versionsnummer des
|
||||
unterstuetzten IRC-Protokolls, wobei die ersten zwei Bytes die Major-, die
|
||||
letzten beiden die Minor-Revision angeben. Der String "0210" steht also
|
||||
fuer Protokollversion 2.10.
|
||||
Die folgenden (optionalen!) 10 Bytes enthalten eine von der jeweiligen
|
||||
Implementation abhaengige Versionsnummer. Server, die das IRC+-Protokoll
|
||||
unterstuetzen, liefern hier "-IRC+".
|
||||
<version> consists of two parts and is at least 4, at most 14 characters
|
||||
long: the first four bytes contain the IRC protocol version number, whereas
|
||||
the first two bytes represent the major version, the last two bytes the
|
||||
minor version (the string "0210" indicates version 2.10, e.g.).
|
||||
|
||||
<flags> setzt sich ebenfalls aus zwei Bestandteilen zusammen und ist
|
||||
maximal 100 Bytes lang. Getrennt werden die beiden Teile mit dem Zeichen
|
||||
"|". Der erste Teil enthaelt den Namen der Implementation, der ngIRCd
|
||||
liefert hier z.B. "ngIRCd", der Originalserver "IRC". Anhand dieser "ID"
|
||||
kann zwischen Serverimplementationen unterschieden werden. Der zweite Teil
|
||||
(nach dem "|") ist implementationsabhaengig und wird nur ausgewertet,
|
||||
wenn die Gegenseite das IRC+-Protokoll unterstuetzt. In diesem Fall wird
|
||||
folgende Syntax erwartet: "<serverversion>[:<serverflags>]".
|
||||
The following optional(!) 10 bytes contain an implementation-dependent
|
||||
version number. Servers supporting the IRC+ protocol as defined in this
|
||||
document provide the string "-IRC+" here.
|
||||
|
||||
<serverversion> ist hier eine ASCII-Klartext-Darstellung der Versionsnummer,
|
||||
<serverflags> zeigt die vom Server unterstuetzten Erweiterungen an (und
|
||||
kann die leere Menge sein).
|
||||
Example for <version>: "0210-IRC+".
|
||||
|
||||
Mit dem optionalen Parameter <options> werden Server-Optionen uebermittelt,
|
||||
wie sie in RFC 2813, Sektion 4.1.1 definiert sind.
|
||||
<flags> consists of two parts separated with the character "|" and is at
|
||||
most 100 bytes long. The first part contains the name of the implementation
|
||||
(ngIRCd sets this to "ngircd", the original ircd to "IRC", e.g.). The second
|
||||
part is implementation-dependent and should only be parsed if the peer
|
||||
supports the IRC+ protocol as well. In this case the following syntax is
|
||||
used: "<serverversion>[:<serverflags>]".
|
||||
|
||||
Folgende <serverflags> sind zur Zeit definiert:
|
||||
<serverversion> is an ASCII representation of the clear-text server version
|
||||
number, <serverflags> indicates the supported IRC+ protocol extensions (and
|
||||
may be empty!).
|
||||
|
||||
- o: IRC-Operatoren duerfen auch dann Channel- und Channel-User-Modes
|
||||
aendern, wenn sie kein Channel-Operator im betroffenen Channel sind.
|
||||
The following <serverflags> are defined at the moment:
|
||||
|
||||
- C: der Server unterstuetzt den CHANINFO-Befehl.
|
||||
- C: The server supports the CHANINFO command.
|
||||
|
||||
- L: INVITE- and BAN-lists should be synchronized between servers: if the
|
||||
peer understands this flag, it will send "MODE +I" and "MODE +b"
|
||||
commands after the server link has been established.
|
||||
|
||||
- H: The server supports the "enhanced server handshake", see section II.2
|
||||
for a detailed description.
|
||||
|
||||
- o: IRC operators are allowed to change channel- and channel-user-modes
|
||||
even if they aren't channel-operator of the affected channel.
|
||||
|
||||
- S: The server supports the SERVICE command (on this link).
|
||||
|
||||
- Z: Compressed server links are supported by the server.
|
||||
|
||||
Example for a complete <flags> string: "ngircd|0.7.5:CZ".
|
||||
|
||||
The optional parameter <options> is used to propagate server options as
|
||||
defined in RFC 2813, section 4.1.1.
|
||||
|
||||
|
||||
II.2 Channel-Modes, persistente Channel und Topic austauschen
|
||||
II.2 Enhanced Server Handshake
|
||||
|
||||
Befehl: CHANINFO
|
||||
Parameter: <channel> +<mode> [<topic>]
|
||||
Fuer: Server
|
||||
The "enhanced server handshake" is used when both servers support this IRC+
|
||||
extension, which is indicated by the 'H' flag in the <serverflags> sent with
|
||||
the PASS command, see section II.1.
|
||||
|
||||
Mit CHANINFO Informiert ein Server den anderen ueber einen Channel: dessen
|
||||
Modes und dessen Topic. <topic> ist optional.
|
||||
It basically means, that after exchanging the PASS and SERVER commands the
|
||||
server is not registered in the network (as usual), but that IRC numerics
|
||||
are exchanged until the numeric 376 (ENDOFMOTD) is received. Afterwards the
|
||||
peer is registered in the network as with the regular IRC protocol.
|
||||
|
||||
Existiert auf dem Server, der das CHANINFO empfaengt, der Channel bereits,
|
||||
so uebernimmt er die Werte jeweils nur dann, wenn er selber noch keine
|
||||
Modes bzw. kein Topic definiert hat. Ansonsten wird der jeweilige Parameter
|
||||
ignoriert.
|
||||
A server implementing the enhanced server handshake (and indicating this
|
||||
using 'H' in the <serverflags>) MUST ignore all unknown numerics to it
|
||||
silently.
|
||||
|
||||
Existiert der Channel noch nicht, so wird er mit den entsprechenden Angaben
|
||||
erzeugt.
|
||||
In addition, such a server should at least send the numeric 005 (ISUPPORT)
|
||||
to its peer, containing the following information. Syntax: <key>=<value>,
|
||||
one token per IRC parameter. If the server has to send more than 12 token
|
||||
it must send separate ISUPPORT numerics (this is a limitation of the IRC
|
||||
protocol which allows at max 15 arguments per command).
|
||||
|
||||
- NICKLEN: Maximum nickname length. Default: 9.
|
||||
- CASEMAPPING: Case mapping used for nick- and channel name comparing.
|
||||
Default: "ascii", the chars [a-z] are lowercase of [A-Z].
|
||||
- PREFIX: List of channel modes a person can get and the respective prefix
|
||||
a channel or nickname will get in case the person has it. The order of the
|
||||
modes goes from most powerful to least powerful. Default: "(ov)@+"
|
||||
- CHANTYPES: Supported channel prefixes. Default: "#".
|
||||
- CHANMODES: List of channel modes for 4 types, separated by comma (","):
|
||||
Mode that adds or removes a nick or address to a list, mode that changes
|
||||
a setting (both have always has a parameter), mode that changes a setting
|
||||
and only has a parameter when set, and mode that changes a setting and
|
||||
never has a parameter. For example "bI,k,l,imnPst".
|
||||
- CHANLIMIT: Maximum number of channels allowed to join by channel prefix,
|
||||
for example "#:10".
|
||||
|
||||
Please see <http://www.irc.org/tech_docs/005.html> for details.
|
||||
|
||||
The information exchanged using ISUPPORT can be used to detect configuration
|
||||
incompatibilities (different maximum nick name length, for example) and
|
||||
therefore to disconnect the peer prior to registering it in the network.
|
||||
|
||||
|
||||
--
|
||||
$Id: Protocol.txt,v 1.5 2002/09/04 00:06:19 alex Exp $
|
||||
II.3 Exchange channel-modes, topics, and persistent channels
|
||||
|
||||
Command: CHANINFO
|
||||
Parameters: <channel> +<modes> <key> <limit> [<topic>]
|
||||
Used by: servers only
|
||||
|
||||
CHANINFO is used by servers to inform each other about a channel: its
|
||||
modes, channel key, user limits and its topic. <topic> is optional.
|
||||
|
||||
If the channel already exists on the server receiving the CHANINFO command,
|
||||
it only adopts the <modes> (or the <topic>) if there are no modes (or topic)
|
||||
already set. It there are already values set the server ignores the
|
||||
corresponding parameter.
|
||||
|
||||
If the channel doesn't exists at all it will be created.
|
||||
|
||||
The parameter <key> must be ignored if a channel has no key (the parameter
|
||||
<modes> doesn't list the "k" channel mode). In this case <key> should
|
||||
contain "*" because the parameter <key> is required by the CHANINFO syntax
|
||||
and therefore can't be omitted. The parameter <limit> must be ignored when
|
||||
a channel has no user limit (the parameter <modes> doesn't list the "l"
|
||||
channel mode). In this case <limit> should be "0".
|
||||
|
||||
|
@@ -1,71 +1,67 @@
|
||||
|
||||
ngIRCd - Next Generation IRC Server
|
||||
ngIRCd - Next Generation IRC Server
|
||||
|
||||
(c)2001,2002 by Alexander Barton,
|
||||
alex@barton.de, http://www.barton.de/
|
||||
(c)2001-2005 Alexander Barton,
|
||||
alex@barton.de, http://www.barton.de/
|
||||
|
||||
ngIRCd ist freie Software und steht unter
|
||||
der GNU General Public License.
|
||||
|
||||
-- README-AUX.txt --
|
||||
ngIRCd is free software and published under the
|
||||
terms of the GNU General Public License.
|
||||
|
||||
|
||||
Seit Version 0.2.2-pre gehoert Apple A/UX zu den offiziell unterstuetzten
|
||||
Platformen. Er ist im vollen Funktionsumfang nutzbar.
|
||||
|
||||
Folgende Software wird jedoch benoetigt:
|
||||
|
||||
- GNU C Compiler (gcc)
|
||||
Bezugsquellen:
|
||||
http://www.rezepte-im-web.de/appleux/gcc281.tar.gz
|
||||
ftp://arthur.ath.cx/pub/AUX/Software/Development/gcc-2.8.1-auxbin.tar.gz
|
||||
|
||||
- GNU make
|
||||
Bezugsquellen:
|
||||
http://www.rezepte-im-web.de/appleux/make-3.79.tar.gz
|
||||
ftp://arthur.ath.cx/pub/AUX/Software/Development/make-3.79.tar.gz
|
||||
|
||||
- GNU sed
|
||||
Bezugsquellen:
|
||||
http://www.rezepte-im-web.de/appleux/sed-3.02.tar.gz
|
||||
ftp://arthur.ath.cx/pub/AUX/Software/Tools/sed-3.02.tar.gz
|
||||
|
||||
- install (z.B. aus den GNU fileutils)
|
||||
Ein install, welches entweder so "broken" ist, dass configure das eigene
|
||||
Shell-Script waehlt, oder eines, das funktioniert. Leider ist mindestens
|
||||
ein Binary im Umlauf, das Probleme macht.
|
||||
Bezugsquelle:
|
||||
ftp://arthur.ath.cx/pub/UNIX/AUX/Software/Tools/fileutils-4.0.tar.gz
|
||||
|
||||
- libUTIL.a
|
||||
Bezugsquellen:
|
||||
http://ftp.mayn.de/pub/apple/apple_unix/Sys_stuff/libUTIL-2.1.tar.gz
|
||||
ftp://arthur.ath.cx/pub/AUX/Software/Libraries/libUTIL-2.1.tar.gz
|
||||
|
||||
Nachdem diese Pakete entsprechend installiert sind, reicht ein ganz normales
|
||||
"./configure" und "make" aus, um den ngIRCd unter A/UX zu compilieren.
|
||||
-- README-AUX.txt --
|
||||
|
||||
|
||||
Noch ein paar Hinweise, wenn es doch (noch) nicht klappt:
|
||||
Since version 0.2.2-pre Apple's A/UX belongs to the officially supported
|
||||
platforms. It is not restricted in any way.
|
||||
|
||||
- auf dem System muss entweder ein install vorhanden sein, welches so
|
||||
"broken" ist, dass configure das eigene Shell-Skript waehlt, oder eben
|
||||
eines, welches funktioniert. Leider ist mindestens ein Binary im Um-
|
||||
lauf, welches Probleme verursacht. Das Binary aus folgenden GNU
|
||||
fileutils funktioniert hier aber z.B.:
|
||||
ftp://arthur.ath.cx/pub/UNIX/AUX/Software/Tools/fileutils-4.0.tar.gz
|
||||
Since version 0.5.0 ngIRCd's source compiles with the native A/UX c
|
||||
compiler. GNU C isn't a must-have anymore.
|
||||
|
||||
- das sich im Umlauf befindende vorcompilierte Binary der alten Bash sollte
|
||||
unbedingt ausserhalb von /bin (z.B. unter /usr/local/bin) installiert
|
||||
werden. Ansonsten waehlt es das configure-Script als Shell aus, leider
|
||||
funktioniert das aber nicht.
|
||||
Das config.status-Script sollte mit der ksh als Interpreter erstellt
|
||||
worden sein (siehe erste Zeile davon!).
|
||||
The following software packages are needed:
|
||||
|
||||
- GNU sed
|
||||
Source:
|
||||
http://www.rezepte-im-web.de/appleux/sed-3.02.tar.gz
|
||||
ftp://arthur.barton.de/pub/unix/aux/tools/sed-3.02.tar.gz
|
||||
|
||||
A/UX comes with /bin/sed which isn't supporting all functions needed
|
||||
by GNU automake/autoconf.
|
||||
|
||||
Warning: When installing GNU sed please make sure that A/UX doesn't
|
||||
use the old one anymore which means set the $PATH or replace /bin/sed
|
||||
at all.
|
||||
|
||||
- libUTIL.a
|
||||
Source:
|
||||
ftp://ftp.mayn.de/pub/really_old_stuff/apple/apple_unix/Sys_stuff/libUTIL-2.1.tar.gz>
|
||||
ftp://arthur.barton.de/pub/unix/aux/libraries/libUTIL-2.1.tar.gz
|
||||
|
||||
This library contains functions that are common on other UNIX
|
||||
systems but not on A/UX e.g. memmove(), strerror() and strdup().
|
||||
|
||||
|
||||
Hier die Zeiten von Alex System (Macintosh SE/30, 32 MB, A/UX 3.0.1):
|
||||
configure: 7:33, make: 12:02
|
||||
After installation of these packages just do a "./configure" and "make" to
|
||||
compile ngIRCd on A/UX.
|
||||
|
||||
|
||||
A few hints in case of errors:
|
||||
|
||||
- Either there's an 'install' on your system which is completely broken
|
||||
(so 'configure' uses its own shell script) or use a fully functionable one.
|
||||
There's at least one binary "out there" causing problems. The one
|
||||
of the GNU fileutils works fine:
|
||||
ftp://arthur.barton.de/pub/unix/aux/tools/fileutils-4.0.tar.gz
|
||||
|
||||
- The precompiled binary of the old 'bash' shouldn't be installed within
|
||||
/bin (better do this in /usr/local/bin) because 'configure' would
|
||||
choose it as its shell which wouldn't work.
|
||||
|
||||
- Because of limitations of /bin/sh on A/UX it can't be used to create
|
||||
the 'config.status' script. Better rename /bin/sh to /bin/sh.AUX and
|
||||
replace it by a symbolic link to /bin/ksh (ln -s /bin/ksh /bin/sh as
|
||||
root).
|
||||
These procedure shouldn't cause you into problems and is recommended
|
||||
even if you don't use ngIRCd.
|
||||
|
||||
--
|
||||
$Id: README-AUX.txt,v 1.3 2002/04/29 14:19:48 alex Exp $
|
||||
$Id: README-AUX.txt,v 1.10 2006/07/23 12:19:57 alex Exp $
|
||||
|
@@ -1,15 +1,21 @@
|
||||
|
||||
ngIRCd - Next Generation IRC Server
|
||||
|
||||
(c)2001,2002 by Alexander Barton,
|
||||
(c)2001-2003 by Alexander Barton,
|
||||
alex@barton.de, http://www.barton.de/
|
||||
|
||||
ngIRCd ist freie Software und steht unter
|
||||
der GNU General Public License.
|
||||
ngIRCd is free software and published under the
|
||||
terms of the GNU General Public License.
|
||||
|
||||
-- README-BeOS.txt --
|
||||
|
||||
|
||||
+-------------------------------------------------------------+
|
||||
| This text is only available in german at the moment, sorry! |
|
||||
| Contributors for this text or the BeOS port are welcome :-) |
|
||||
+-------------------------------------------------------------+
|
||||
|
||||
|
||||
BeOS gehoert im Moment (noch?) nicht zu den offiziell unterstuetzten Plat-
|
||||
formen: der ngIRCd enthaelt zwar bereits einige Anpassungen an BeOS und
|
||||
compiliert auch, jedoch bricht er bei jedem Connect-Versuch eines Clients
|
||||
@@ -18,7 +24,7 @@ mit diesem Fehler ab:
|
||||
select(): Bad file descriptor!
|
||||
|
||||
Es sieht leider so aus, als ob das select() von BeOS nicht mit File-Handles
|
||||
von Pipes verschiedener Prozesse umgehen kann: sobald der Resolver asyncron
|
||||
von Pipes verschiedener Prozesse umgehen kann: sobald der Resolver asynchron
|
||||
gestartet wird, also Pipe-Handles im select() vorhanden sind, fuehrt das zu
|
||||
obiger Meldung.
|
||||
|
||||
@@ -44,4 +50,4 @@ mir in Verbindung setzen (alex@barton.de), ich maile gerne meine Patches zu.
|
||||
Fuer eine Aenderung im CVS ist es aber meiner Meinung nach noch zu frueh ...
|
||||
|
||||
--
|
||||
$Id: README-BeOS.txt,v 1.3 2002/05/19 13:10:26 alex Exp $
|
||||
$Id: README-BeOS.txt,v 1.7 2003/05/15 21:47:57 alex Exp $
|
||||
|
11
doc/RFC.txt
11
doc/RFC.txt
@@ -1,16 +1,17 @@
|
||||
|
||||
ngIRCd - Next Generation IRC Server
|
||||
|
||||
(c)2001,2002 by Alexander Barton,
|
||||
(c)2001-2003 by Alexander Barton,
|
||||
alex@barton.de, http://www.barton.de/
|
||||
|
||||
ngIRCd ist freie Software und steht unter
|
||||
der GNU General Public License.
|
||||
ngIRCd is free software and published under the
|
||||
terms of the GNU General Public License.
|
||||
|
||||
-- RFC.txt --
|
||||
|
||||
|
||||
Das IRC-Protokoll ist in diesen RFC's (Request For Comments) dokumentiert:
|
||||
The Internet Relay Chat (IRC) protocol is documented in these Request for
|
||||
Comments (RFC), which you can get e.g. via <http://www.faqs.org/>:
|
||||
|
||||
1459 Oikarinen, J. & D. Reed, "Internet Relay Chat Protocol",
|
||||
May 1993, [IRC].
|
||||
@@ -29,4 +30,4 @@ Das IRC-Protokoll ist in diesen RFC's (Request For Comments) dokumentiert:
|
||||
|
||||
|
||||
--
|
||||
$Id: RFC.txt,v 1.4 2002/01/23 18:20:04 alex Exp $
|
||||
$Id: RFC.txt,v 1.6 2003/03/07 20:42:20 alex Exp $
|
||||
|
110
doc/SSL.txt
Normal file
110
doc/SSL.txt
Normal file
@@ -0,0 +1,110 @@
|
||||
|
||||
ngIRCd - Next Generation IRC Server
|
||||
|
||||
(c)2001-2008 Alexander Barton,
|
||||
alex@barton.de, http://www.barton.de/
|
||||
|
||||
ngIRCd is free software and published under the
|
||||
terms of the GNU General Public License.
|
||||
|
||||
-- SSL.txt --
|
||||
|
||||
|
||||
ngIRCd supports SSL/TLSv1 encrypted connections using the OpenSSL or GnuTLS
|
||||
libraries. Both encrypted server-server links as well as client-server links
|
||||
are supported.
|
||||
|
||||
SSL is a compile-time option which is disabled by default. Use one of these
|
||||
options of the ./configure script to enable it:
|
||||
|
||||
--with-openssl enable SSL support using OpenSSL
|
||||
--with-gnutls enable SSL support using GnuTLS
|
||||
|
||||
You also need a key/certificate, see below for how to create a self-signed one.
|
||||
|
||||
From a feature point of view, ngIRCds support for both libraries is
|
||||
comparable. The only major difference (at this time) is that ngircd with gnutls
|
||||
does not support password protected private keys.
|
||||
|
||||
Configuration
|
||||
~~~~~~~~~~~~~
|
||||
|
||||
To enable SSL connections a separate port must be configured: it is NOT
|
||||
possible to handle unencrypted and encrypted connections on the same port!
|
||||
This is a limitation of the IRC protocol ...
|
||||
|
||||
You have to set (at least) the following configuration variables in the
|
||||
[GLOBAL] section of ngircd.conf(5): SSLPorts, SSLKeyFile, and SSLCertFile.
|
||||
|
||||
Now IRC clients are able to connect using SSL on the configured port(s).
|
||||
(Using port 6697 for encrypted connections is common.)
|
||||
|
||||
To enable encrypted server-server links, you have to additionally set
|
||||
SSLConnect to "yes" in the corresponding [SERVER] section.
|
||||
|
||||
|
||||
Creating a self-signed certificate
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
OpenSSL:
|
||||
|
||||
Creating a self-signed certificate and key:
|
||||
$ openssl req -newkey rsa:2048 -x509 -keyout server-key.pem \
|
||||
-out server-cert.pem -days 1461
|
||||
Create DH parameters (optional):
|
||||
$ openssl dhparam -2 -out dhparams.pem 2048
|
||||
|
||||
GnuTLS:
|
||||
|
||||
Creating a self-signed certificate and key:
|
||||
$ certtool --generate-privkey --bits 2048 --outfile server-key.pem
|
||||
$ certtool --generate-self-signed --load-privkey server-key.pem \
|
||||
--outfile server-cert.pem
|
||||
Create DH parameters (optional):
|
||||
$ certtool --generate-dh-params --bits 2048 --outfile dhparams.pem
|
||||
|
||||
|
||||
Alternate approach using stunnel(1)
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
Alternatively (or if you are using ngIRCd compiled without support
|
||||
for GnuTLS/OpenSSL), you can use external programs/tools like stunnel(1) to
|
||||
get SSL encrypted connections:
|
||||
|
||||
<http://stunnel.mirt.net/>
|
||||
<http://www.stunnel.org/>
|
||||
|
||||
Stefan Sperling (stefan at binarchy dot net) mailed the following text as a
|
||||
short "how-to", thanks Stefan!
|
||||
|
||||
=== snip ===
|
||||
! This guide applies to stunnel 4.x !
|
||||
|
||||
Put this in your stunnel.conf:
|
||||
|
||||
[ircs]
|
||||
accept = 6667
|
||||
connect = 6668
|
||||
|
||||
This makes stunnel listen for incoming connections
|
||||
on port 6667 and forward decrypted data to port 6668.
|
||||
We call the connection 'ircs'. Stunnel will use this
|
||||
name when logging connection attempts via syslog.
|
||||
You can also use the name in /etc/hosts.{allow,deny}
|
||||
if you run tcp-wrappers.
|
||||
|
||||
To make sure ngircd is listening on the port where
|
||||
the decrypted data arrives, set
|
||||
|
||||
Ports = 6668
|
||||
|
||||
in your ngircd.conf.
|
||||
|
||||
Start stunnel and restart ngircd.
|
||||
|
||||
That's it.
|
||||
Don't forget to activate ssl support in your irc client ;)
|
||||
The main drawback of this approach compared to using builtin ssl
|
||||
is that from ngIRCds point of view, all ssl-enabled client connections will
|
||||
originate from the host running stunnel.
|
||||
=== snip ===
|
70
doc/Services.txt
Normal file
70
doc/Services.txt
Normal file
@@ -0,0 +1,70 @@
|
||||
|
||||
ngIRCd - Next Generation IRC Server
|
||||
|
||||
(c)2001-2008 Alexander Barton,
|
||||
alex@barton.de, http://www.barton.de/
|
||||
|
||||
ngIRCd is free software and published under the
|
||||
terms of the GNU General Public License.
|
||||
|
||||
-- Services.txt --
|
||||
|
||||
|
||||
At the moment, ngIRCd doesn't implement a "special IRC services interface".
|
||||
But services acting as a "regular server" are supported, either using the IRC
|
||||
protocol defined in RFC 1459 or RFC 2812.
|
||||
|
||||
Services have been tested using "IRC Services" version 5.x by Andrew Church,
|
||||
homepage: <http://www.ircservices.za.net/>. This document describes setting up
|
||||
ngIRCd and these services.
|
||||
|
||||
|
||||
Setting up ngIRCd
|
||||
~~~~~~~~~~~~~~~~~
|
||||
|
||||
The "pseudo server" handling the IRC services is configured as a regular
|
||||
remote server in the ngircd.conf(5). In addition the variable "ServiceMask"
|
||||
should be set, enabling this ngIRCd to recognize the "pseudo users" as IRC
|
||||
services instead of regular IRC users.
|
||||
|
||||
Example:
|
||||
|
||||
[SERVER]
|
||||
Name = services.irc.net
|
||||
MyPassword = 123abc
|
||||
PeerPassword = 123abc
|
||||
ServiceMask = *Serv
|
||||
|
||||
|
||||
Setting up IRC Services 5.1.x
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
IRC Services 5.1.3 and above can be used with ngIRCd using the "rfc1459"
|
||||
protocol module.
|
||||
|
||||
Please note that versions up to and including 5.1.3 contain a bug that
|
||||
sometimes causes IRC Services to hang on startup. There are two workarounds:
|
||||
a) send the services process a HUP signal ("killall -HUP ircservices")
|
||||
b) apply this patch to the IRC Services source tree:
|
||||
<ftp://ngircd.barton.de/ngircd/contrib/IRCServices513-FlushBuffer.patch>
|
||||
|
||||
At least the following settings have to be tweaked, in addition to all the
|
||||
settings marked as required by IRC Services:
|
||||
|
||||
In ircservices.conf:
|
||||
|
||||
Variable Example value
|
||||
|
||||
RemoteServer server.irc.net 6667 "123abc"
|
||||
ServerName "services.irc.net"
|
||||
LoadModule protocol/rfc1459
|
||||
|
||||
In modules.conf:
|
||||
|
||||
Module protocol/rfc1459
|
||||
|
||||
The documentation of IRC Services can be found here:
|
||||
<http://www.ircservices.za.net/docs/>
|
||||
|
||||
Please let us know if you are successfully using other IRC service packages or
|
||||
which problems you encounter, thanks!
|
40
doc/Zeroconf.txt
Normal file
40
doc/Zeroconf.txt
Normal file
@@ -0,0 +1,40 @@
|
||||
|
||||
ngIRCd - Next Generation IRC Server
|
||||
|
||||
(c)2001-2006 Alexander Barton
|
||||
alex@barton.de, http://www.barton.de/
|
||||
|
||||
ngIRCd is free software and published under the
|
||||
terms of the GNU General Public License.
|
||||
|
||||
-- Zeroconf.txt --
|
||||
|
||||
|
||||
ngIRCd supports one aspect of Zeroconf Networking[1]: Multicast DNS (mDNS[2])
|
||||
with DNS Service Discovery (DNS-SD[3]).
|
||||
|
||||
To use this features you can use one of two APIs:
|
||||
|
||||
a) Apple "Bonjour" API as used by Mac OS X,
|
||||
b) the Howl[4] Zeroconf library or the Howl compatibility layer
|
||||
of the newer Avahi[5] library.
|
||||
|
||||
When calling the configure script using the "--with-zeroconf" switch the
|
||||
available API will be autodetected and the required additional libraries will
|
||||
be linked to the ngircd binary as required.
|
||||
|
||||
ngIRCd then registers a DNS-SD service for each port it is listening on using
|
||||
the service type "_ircu._tcp.".
|
||||
|
||||
|
||||
Links:
|
||||
|
||||
[1] http://www.zeroconf.org/
|
||||
[2] http://www.multicastdns.org/
|
||||
[3] http://www.dns-sd.org/
|
||||
[4] http://www.porchdogsoft.com/products/howl/
|
||||
[5] http://avahi.org/
|
||||
|
||||
|
||||
--
|
||||
$Id: Zeroconf.txt,v 1.2 2006/08/03 14:37:29 alex Exp $
|
126
doc/en/INSTALL
126
doc/en/INSTALL
@@ -1,126 +0,0 @@
|
||||
|
||||
ngIRCd - Next Generation IRC Server
|
||||
|
||||
(c)2001,2002 by Alexander Barton,
|
||||
alex@barton.de, http://www.barton.de/
|
||||
|
||||
ngIRCd ist freie Software und steht unter
|
||||
der GNU General Public License.
|
||||
|
||||
-- INSTALL --
|
||||
|
||||
|
||||
|
||||
I. Standard-Installation
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
ngIRCd is developed for UNIX-like systems, which means, that the installation
|
||||
on a modern UNIX-like system should be no problem. The only thing is, that
|
||||
the system should be supported by GNU automake and GNU autoconf ("configure").
|
||||
|
||||
The normal installation is like that:
|
||||
|
||||
1) tar xzf ngircd-<Version>.tar.gz
|
||||
2) cd ngircd-<Version>
|
||||
3) ./autogen.sh [only necessary when using CVS]
|
||||
4) ./configure
|
||||
5) make
|
||||
6) make install
|
||||
|
||||
3): "autogen.sh"
|
||||
|
||||
The first step, autogen.sh, is only necessary if the configure-script isn't
|
||||
already generated. This never happens in official ("stable") releases in
|
||||
tar.gz-archieves, but when using the CVS system.
|
||||
|
||||
The next is therefore only interesting for developpers.
|
||||
|
||||
autogen.sh produces the makefile.in's, which are necessary for the configure
|
||||
script it self, and some more files for make. For this step, there must be
|
||||
GNU automake and GNU autoconf (in recent versions).
|
||||
|
||||
(again: "end users" do not need this step!)
|
||||
|
||||
to 4): "./configure"
|
||||
|
||||
The configure-script is used to detect local system dependancies.
|
||||
|
||||
In the perfect case, configure should recognize all needed libraries, header
|
||||
and so on. If this shouldn't work, "./configure --help" shows more options.
|
||||
|
||||
to 5): "make"
|
||||
|
||||
The make command uses the Makefiles produced by configure and compiles the
|
||||
ngIRCd daemon.
|
||||
|
||||
to 6): "make install"
|
||||
|
||||
Use "make install" to install the server and a sample configuration file on
|
||||
the local system. For this step, root privileges are necessary. If there is
|
||||
already an older configuration file present, it won't be overwritten.
|
||||
|
||||
This are the files that are installed:
|
||||
|
||||
- /usr/local/sbin/ngircd: exectable server
|
||||
- /usr/local/etc/ngircd.conf: sample configuration, if not there
|
||||
|
||||
|
||||
II. Useful make-targets
|
||||
~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
The Makefile produced by the configure-script contain always these useful
|
||||
targets:
|
||||
|
||||
- clean: delete every product from the compiler/linker
|
||||
next step: -> make
|
||||
|
||||
- distclean: plus erase all generated Makefiles
|
||||
next step: -> ./configure
|
||||
|
||||
- maintainer-clean: erease all automatic generated files
|
||||
next step: -> ./autogen.sh
|
||||
|
||||
|
||||
III. Sample configuration file ngircd.conf
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
In the sample configuration file, there are comments beginning with "#" OR
|
||||
";" -- this is only for the better understanding of the code.
|
||||
|
||||
The file is seperated in three blocks: [Global], [Operator], [Server]. In
|
||||
the [Gobal] part, there is the main configuration, like the server-name
|
||||
and the ports, on which the server should be listening. In the [Operator]
|
||||
section, the server-operators are defined and [Server] is the section,
|
||||
where the server-links are configured.
|
||||
|
||||
The meaning of the variables in the configuration file is explained in the
|
||||
"doc/sample-ngircd.conf", which is also the sample configuration file in
|
||||
/usr/local/etc after running "make install" (if you don't already have one).
|
||||
|
||||
|
||||
IV. Command line options
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
These parameters could be passed to the ngIRCd:
|
||||
|
||||
-f, --config <file>
|
||||
The daemon uses the file <file> as configuration file rather than
|
||||
the standard configuration /usr/local/etc/ngircd.conf.
|
||||
|
||||
-n, --nodaemon
|
||||
ngIRCd should be running as a foreground process.
|
||||
|
||||
-p, --passive
|
||||
Server-links won't be automatically established.
|
||||
|
||||
--configtest
|
||||
Reads, validates and dumps the configuration file as interpreted
|
||||
by the server. Then exits.
|
||||
|
||||
Use "--help" to see a short help text describing all available parameters
|
||||
the server understands, with "--version" the ngIRCd shows its version
|
||||
number. In both cases the server exits after the output.
|
||||
|
||||
|
||||
--
|
||||
$Id: INSTALL,v 1.2 2002/05/20 12:02:58 alex Exp $
|
@@ -1,20 +0,0 @@
|
||||
#
|
||||
# ngIRCd -- The Next Generation IRC Daemon
|
||||
# Copyright (c)2001,2002 by Alexander Barton (alex@barton.de)
|
||||
#
|
||||
# Dieses Programm ist freie Software. Sie koennen es unter den Bedingungen
|
||||
# der GNU General Public License (GPL), wie von der Free Software Foundation
|
||||
# herausgegeben, weitergeben und/oder modifizieren, entweder unter Version 2
|
||||
# der Lizenz oder (wenn Sie es wuenschen) jeder spaeteren Version.
|
||||
# Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste
|
||||
# der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS.
|
||||
#
|
||||
# $Id: Makefile.am,v 1.1 2002/05/09 10:17:05 alex Exp $
|
||||
#
|
||||
|
||||
EXTRA_DIST = INSTALL README
|
||||
|
||||
maintainer-clean-local:
|
||||
rm -f Makefile Makefile.in
|
||||
|
||||
# -eof-
|
101
doc/en/README
101
doc/en/README
@@ -1,101 +0,0 @@
|
||||
ngIRCd - Next Generation IRC Server
|
||||
|
||||
(c)2001,2002 by Alexander Barton,
|
||||
alex@barton.de, http://www.barton.de/
|
||||
|
||||
ngIRCd is free software and published under the
|
||||
terms of the GNU General Public License.
|
||||
|
||||
-- README --
|
||||
|
||||
Ilja Osthoff, <ilja@glide.ath.cx>
|
||||
|
||||
|
||||
I. Introduction
|
||||
~~~~~~~~~~~~~~~
|
||||
|
||||
ngIRCd is an Open-Source server for the Internet Realy Chat (IRC), which
|
||||
is developped and published under the terms of the GNU General Public
|
||||
Licence (URL: http://www.gnu.org/licenses/gpl.html). ngIRCd means "next
|
||||
generation IRC daemon", it's written from scratch and not deduced from the
|
||||
"grandfather of IRC daemons", the daemon of the IRCNet.
|
||||
|
||||
|
||||
|
||||
II. Status
|
||||
~~~~~~~~~~~
|
||||
|
||||
At present, the ngIRCd is under active development, some features are not
|
||||
implemented, some only partly.
|
||||
|
||||
Till today (more or less complete) implemented IRC-commands:
|
||||
|
||||
ADMIN, AWAY, CHANINFO, CONNECT, DIE, ERROR, INVITE, ISON, JOIN, KICK, KILL,
|
||||
LINKS, LIST, LUSERS, MODE, MOTD, NAMES, NICK, NJOIN, NOTICE, OPER, PART,
|
||||
PASS, PING, PONG, PRIVMSG, QUIT, RESTART, SERVER, SQUIT, TOPIC, USERHOST,
|
||||
USER, VERSION, WHO, WHOIS.
|
||||
|
||||
|
||||
III. Features (or: why use ngIRCd?)
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
- no problems with servers which have dynamic ip-adresses
|
||||
- simple, easy understandable configuration file,
|
||||
- freely published C-Sourcecode,
|
||||
- ngIRCd will be developed on in the future.
|
||||
- supported platforms (tested versions): AIX (3.2.5), A/UX (3.0.1), FreeBSD
|
||||
(4.5), HP-UX (10.20), IRIX (6.5), Linux (2.x), Mac OS X (10.x), NetBSD
|
||||
(1.5.2/i386, 1.5.3/m68k), Solaris (2.5.1, 2.6), and Windows with Cygwin.
|
||||
|
||||
|
||||
IV. Documentation
|
||||
~~~~~~~~~~~~~~~~~
|
||||
|
||||
English documentation:
|
||||
|
||||
- doc/en/README: the file that you are reading :-)
|
||||
- doc/en/INSTALL: hints for the installation of the ngIRCd
|
||||
|
||||
German documentation:
|
||||
|
||||
- README: readme text in german
|
||||
- INSTALL: german installation instructions
|
||||
- NEWS: what do you think? :-)
|
||||
- Changelog: the complete history of the ngIRCd
|
||||
- doc/FAQ.txt: frequently asked questions and answers
|
||||
- doc/CVS.txt: hints for the CVS-system
|
||||
- doc/RFC.txt: information about the RFC's
|
||||
- doc/sample-ngircd.conf: sample configuration file
|
||||
- doc/README-AUX.txt: installation hints for A/UX
|
||||
- doc/README-BeOS.txt: the same for BeOS
|
||||
|
||||
|
||||
V. Download
|
||||
~~~~~~~~~~~
|
||||
|
||||
The homepage of the ngIRCd is: <http://arthur.ath.cx/~alex/ngircd>; you
|
||||
will find the newest information about the ngIRCd and the most recent
|
||||
("stable") releases there.
|
||||
|
||||
If you are interested in the newest developper-versions (which are not
|
||||
always stable), then please read the section "CVS" on the homepage and
|
||||
the file "doc/CVS.txt" which describes the use of CVS, the "Concurrent
|
||||
Versioning System".
|
||||
|
||||
|
||||
VI. Bugs
|
||||
~~~~~~~~
|
||||
|
||||
If you find bugs in the ngIRCd (which might be there :-), please report
|
||||
them at the following URL:
|
||||
|
||||
<http://arthur.ath.cx/~alex/ngircd/#bugs>
|
||||
|
||||
There you can read about kown bugs, too.
|
||||
|
||||
If you have critics, patches or something else, please feel yourself free
|
||||
to post a mail to: <alex@barton.de> or <alex@arthur.ath.cx>
|
||||
|
||||
|
||||
--
|
||||
$Id: README,v 1.6 2002/09/16 11:03:05 alex Exp $
|
@@ -1,144 +1,258 @@
|
||||
# $Id: sample-ngircd.conf,v 1.11 2002/09/16 10:33:09 alex Exp $
|
||||
|
||||
#
|
||||
# Das ist eine Beispiel-Konfiguration fuer den ngIRCd, die an die
|
||||
# jeweiligen Beduerfnisse angepasst werden kann/muss.
|
||||
# This is a sample configuration file for the ngIRCd IRC daemon, which must
|
||||
# be customized to the local preferences and needs.
|
||||
#
|
||||
# Kommentare werden mit "#" oder ";" eingeleitet.
|
||||
# Comments are started with "#" or ";".
|
||||
#
|
||||
# Autor: Alexander Barton, <alex@barton.de>
|
||||
# Erweiterungen von Ilja Osthoff, <ilja@glide.ath.cx>
|
||||
# A lot of configuration options in this file start with a ";". You have
|
||||
# to remove the ";" in front of each variable to actually set a value!
|
||||
# The disabled variables are shown with example values for completeness only
|
||||
# and the daemon is using compiled-in default settings.
|
||||
#
|
||||
# Use "ngircd --configtest" (see manual page ngircd(8)) to validate that the
|
||||
# server interprets the configuration file as expected!
|
||||
#
|
||||
# Please see ngircd.conf(5) for a complete list of configuration options.
|
||||
#
|
||||
|
||||
[Global]
|
||||
# The [Global] section of this file is used to define the main
|
||||
# configuration of the server, like the server name and the ports
|
||||
# on which the server should be listening.
|
||||
|
||||
#
|
||||
# Im [Global]-Abschnitt der Konfigurationsdatei wird der Server
|
||||
# "an sich" konfiguriert. Notwendig ist nur die Variable "Name",
|
||||
# Info ist in der Regel ebengalls anzupassen. Fuer alle uebrigen
|
||||
# Variablen koennen oft die Defaults benutzt werden, d.h. hier
|
||||
# muss die Variable nicht angegeben werden.
|
||||
#
|
||||
|
||||
# Servername im IRC-Netz
|
||||
# Server name in the IRC network, must contain at least one dot
|
||||
# (".") and be unique in the IRC network. Required!
|
||||
Name = irc.the.net
|
||||
|
||||
# Info-Text des Servers. Dieser wird z.B. bei WHOIS- oder LINKS-
|
||||
# Abfragen entsprechend mit ausgegeben.
|
||||
# Info text of the server. This will be shown by WHOIS and
|
||||
# LINKS requests for example.
|
||||
Info = Server Info Text
|
||||
|
||||
# Informationen ueber den Server und Administrator fuer den
|
||||
# ADMIN-Befehl:
|
||||
;AdminInfo1 = Beschreibung
|
||||
;AdminInfo2 = Standort
|
||||
;AdminEMail = admin@irc.server
|
||||
|
||||
# Ports, auf denen Verbindungen angenommen werden sollen. Es koennen
|
||||
# mehrere Ports mit "," getrennt angegeben werden. (Default: 6667)
|
||||
# Global password for all users needed to connect to the server
|
||||
;Password = abc
|
||||
|
||||
# Information about the server and the administrator, used by the
|
||||
# ADMIN command. Not required by server but by RFC!
|
||||
;AdminInfo1 = Description
|
||||
;AdminInfo2 = Location
|
||||
;AdminEMail = admin@irc.server
|
||||
|
||||
# Ports on which the server should listen. There may be more than
|
||||
# one port, separated with ",". (Default: 6667)
|
||||
;Ports = 6667, 6668, 6669
|
||||
|
||||
# Textdatei mit der "Message of the Day" (MOTD). Diese wird aus-
|
||||
# gegeben, wenn sich ein User mit dem Server verbindet.
|
||||
# Additional Listen Ports that expect SSL/TLS encrypted connections
|
||||
;SSLPorts = 9999,6668
|
||||
|
||||
# SSL Server Key
|
||||
;SSLKeyFile = /usr/local/etc/ngircd/ssl/server-key.pem
|
||||
|
||||
# password to decrypt SSLKeyFile (OpenSSL only)
|
||||
;SSLKeyFilePassword = secret
|
||||
|
||||
# SSL Server Key Certificate
|
||||
;SSLCertFile = /usr/local/etc/ngircd/ssl/server-cert.pem
|
||||
|
||||
# Diffie-Hellman parameters
|
||||
;SSLDHFile = /usr/local/etc/ngircd/ssl/dhparams.pem
|
||||
|
||||
# comma separated list of IP addresses on which the server should
|
||||
# listen. Default values are:
|
||||
# "0.0.0.0" or (if compiled with IPv6 support) "::,0.0.0.0"
|
||||
# so the server listens on all IP addresses of the system by default.
|
||||
;Listen = 127.0.0.1,192.168.0.1
|
||||
|
||||
# Text file with the "message of the day" (MOTD). This message will
|
||||
# be shown to all users connecting to the server:
|
||||
;MotdFile = /usr/local/etc/ngircd.motd
|
||||
|
||||
# User-ID, unter der der Daemon laufen soll (dazu muss der Server
|
||||
# jedoch mit root-Rechten gestartet werden).
|
||||
# ACHTUNG: Die Konfigurations- und MOTD-Datei muessen fuer diesen
|
||||
# Benutzer lesbar sein, ansonsten schlaegt ein RESTART fehl!
|
||||
# A simple Phrase (<256 chars) if you don't want to use a motd file.
|
||||
# If it is set no MotdFile will be read at all.
|
||||
;MotdPhrase = "Hello world!"
|
||||
|
||||
# User ID under which the server should run; you can use the name
|
||||
# of the user or the numerical ID. ATTENTION: For this to work the
|
||||
# server must have been started with root privileges! In addition,
|
||||
# the configuration and MOTD files must be readable by this user,
|
||||
# otherwise RESTART and REHASH won't work!
|
||||
;ServerUID = 65534
|
||||
|
||||
# Group-ID, zu der der Daemon wechseln soll (hierzu muss der Server
|
||||
# jedoch mit root-Rechten gestartet werden)
|
||||
# Group ID under which the ngircd should run; you can use the name
|
||||
# of the group or the numerical ID. ATTENTION: For this to work the
|
||||
# server must have been started with root privileges!
|
||||
;ServerGID = 65534
|
||||
|
||||
# Nach <PingTimeout> Sekunden verschickt der Server bei Inaktivitaet
|
||||
# von einem Client diesem ein PING.
|
||||
# A directory to chroot in when everything is initialized. It
|
||||
# doesn't need to be populated if ngIRCd is compiled as a static
|
||||
# binary. By default ngIRCd won't use the chroot() feature.
|
||||
# ATTENTION: For this to work the server must have been started
|
||||
# with root privileges!
|
||||
;ChrootDir = /var/empty
|
||||
|
||||
# This tells ngircd to write its current process id to a file.
|
||||
# Note that the pidfile is written AFTER chroot and switching uid,
|
||||
# i. e. the Directory the pidfile resides in must be writeable by
|
||||
# the ngircd user and exist in the chroot directory.
|
||||
;PidFile = /var/run/ngircd/ngircd.pid
|
||||
|
||||
# After <PingTimeout> seconds of inactivity the server will send a
|
||||
# PING to the peer to test whether it is alive or not.
|
||||
;PingTimeout = 120
|
||||
|
||||
# Antwortet ein Client, der ein PING bekam, nicht innerhalb von
|
||||
# <PongTimeout> Sekunden mit einem PONG, so wird er disconnectiert.
|
||||
# If a client fails to answer a PING with a PONG within <PongTimeout>
|
||||
# seconds, it will be disconnected by the server.
|
||||
;PongTimeout = 20
|
||||
|
||||
# Der Server versucht alle <ConnectRetry> Sekunden, noch nicht bzw.
|
||||
# nicht mehr connectierte Server-Links aufzubauen.
|
||||
# The server tries every <ConnectRetry> seconds to establish a link
|
||||
# to not yet (or no longer) connected servers.
|
||||
;ConnectRetry = 60
|
||||
|
||||
# Sollen IRC-Operatoren immer den MODE-Befehl in Channel benutzen
|
||||
# koennen, auch wenn sie kein(!) Channel-Operator sind?
|
||||
|
||||
# Should IRC Operators be allowed to use the MODE command even if
|
||||
# they are not(!) channel-operators?
|
||||
;OperCanUseMode = no
|
||||
|
||||
# Mask IRC Operator mode requests as if they were coming from the
|
||||
# server? (This is a compatibility hack for ircd-irc2 servers)
|
||||
;OperServerMode = no
|
||||
|
||||
# Allow Pre-Defined Channels only (see Section [Channels])
|
||||
;PredefChannelsOnly = no
|
||||
|
||||
# Don't do any DNS lookups when a client connects to the server.
|
||||
;NoDNS = no
|
||||
|
||||
# Don't do any IDENT lookups, even if ngIRCd has been compiled
|
||||
# with support for it.
|
||||
;NoIdent = no
|
||||
|
||||
# try to connect to other irc servers using ipv4 and ipv6, if possible
|
||||
;ConnectIPv6 = yes
|
||||
;ConnectIPv4 = yes
|
||||
|
||||
# Maximum number of simultaneous in- and outbound connections the
|
||||
# server is allowed to accept (0: unlimited):
|
||||
;MaxConnections = 0
|
||||
|
||||
# Maximum number of simultaneous connections from a single IP address
|
||||
# the server will accept (0: unlimited):
|
||||
;MaxConnectionsIP = 5
|
||||
|
||||
# Maximum number of channels a user can be member of (0: no limit):
|
||||
;MaxJoins = 10
|
||||
|
||||
# Maximum length of an user nick name (Default: 9, as in RFC 2812).
|
||||
# Please note that all servers in an IRC network MUST use the same
|
||||
# maximum nick name length!
|
||||
;MaxNickLength = 9
|
||||
|
||||
[Operator]
|
||||
# [Operator] sections are used to define IRC Operators. There may be
|
||||
# more than one [Operator] block, one for each local operator.
|
||||
|
||||
#
|
||||
# Mit einem [Operator]-Block wird der Name und das Passwort eines
|
||||
# IRC-Operators konfiguriert. Es darf mehrere [Operator]-Bloecke
|
||||
# geben (fuer jeden Operator einen).
|
||||
#
|
||||
|
||||
# ID des IRC-Operators (muss nicht mit dem Nick identisch sein).
|
||||
# ID of the operator (may be different of the nick name)
|
||||
;Name = TheOper
|
||||
|
||||
# Passwort des IRC-Operators
|
||||
# Password of the IRC operator
|
||||
;Password = ThePwd
|
||||
|
||||
# Optional Mask from which /OPER will be accepted
|
||||
;Mask = *!ident@somewhere.example.com
|
||||
|
||||
[Operator]
|
||||
# More [Operator] sections, if you like ...
|
||||
|
||||
[Server]
|
||||
|
||||
#
|
||||
# In [Server]-Bloecken werden Server konfiguriert, zu denen sich
|
||||
# dieser ngIRCd verbinden soll bzw. von denen Verbindungen angekommen
|
||||
# werden duerfen.
|
||||
# Es koennen mehrere Server konfiguriert werden, d.h. [Server]-
|
||||
# Bloecke koennen mehrfach vorkommen.
|
||||
# Wenn man fuer einen Server einen Port angegeben hat, dann versucht
|
||||
# sich der ngIRCd mit der Gegenseite zu verbinden. Hat man keinen
|
||||
# Port konfiguriert, dann wartet der ngIRCd darauf, dass sich die
|
||||
# Gegenseite mit ihm verbindet.
|
||||
#
|
||||
# Server-Gruppen:
|
||||
# Der ngIRCd unterstuetzt "Server-Gruppen": das bedeutet, man kann
|
||||
# jedem Server, mit dem man sich verbinden will, einer Gruppe zu-
|
||||
# ordnen. Wenn der ngIRCd sich dann mit einem Server aus der Gruppe
|
||||
# verbinden will und keine Antwort erhaelt, dann wird der naechste
|
||||
# Server aus der Gruppe versucht.
|
||||
# Achtung: Gruppen werden nur beachtet, wenn man einen Port fur
|
||||
# die Gegenseite angegeben hat!
|
||||
# Other servers are configured in [Server] sections. If you
|
||||
# configure a port for the connection, then this ngircd tries to
|
||||
# connect to to the other server on the given port; if not it waits
|
||||
# for the other server to connect.
|
||||
# There may be more than one server block, one for each server.
|
||||
#
|
||||
# Server Groups:
|
||||
# The ngIRCd allows "server groups": You can assign an "ID" to every
|
||||
# server with which you want this ngIRCd to link. If a server of a
|
||||
# group won't answer, the ngIRCd tries to connect to the next server
|
||||
# in the given group. But the ngircd never tries to connect to two
|
||||
# servers with the same group ID.
|
||||
|
||||
# Hostname des Servers
|
||||
;Host = connect-to-host.the.net
|
||||
|
||||
# IRC-Name des Servers
|
||||
# IRC name of the remote server, must match the "Name" variable in
|
||||
# the [Global] section of the other server (when using ngIRCd).
|
||||
;Name = irc2.the.net
|
||||
|
||||
# Port, zu dem dieser Server eine Verbindung herstellen soll. Wird
|
||||
# kein Port angegeben, so wird auf eine Verbindung der Gegenseite
|
||||
# gewartet.
|
||||
;Port = 6666
|
||||
# Internet host name or IP address of the peer (only required when
|
||||
# this server should establish the connection).
|
||||
;Host = connect-to-host.the.net
|
||||
|
||||
# Passwort fuer diese Verbindung
|
||||
;Password = ThePwd1
|
||||
# IP address to use as _source_ address for the connection. if
|
||||
# unspecified, ngircd will let the operating system pick an address.
|
||||
;Bind = 10.0.0.1
|
||||
|
||||
# Gruppe, zu der dieser Server gehoert (optional).
|
||||
# Port of the server to which the ngIRCd should connect. If you
|
||||
# assign no port the ngIRCd waits for incoming connections.
|
||||
;Port = 6667
|
||||
|
||||
# Own password for the connection. This password has to be configured
|
||||
# as "PeerPassword" on the other server.
|
||||
;MyPassword = MySecret
|
||||
|
||||
# Foreign password for this connection. This password has to be
|
||||
# configured as "MyPassword" on the other server.
|
||||
;PeerPassword = PeerSecret
|
||||
|
||||
# Group of this server (optional)
|
||||
;Group = 123
|
||||
|
||||
# Set the "Passive" option to "yes" if you don't want this ngIRCd to
|
||||
# connect to the configured peer (same as leaving the "Port" variable
|
||||
# empty). The advantage of this option is that you can actually
|
||||
# configure a port an use the IRC command CONNECT more easily to
|
||||
# manually connect this specific server later.
|
||||
;Passive = no
|
||||
|
||||
# Connect to the remote server using TLS/SSL (Default: false)
|
||||
;SSLConnect = yes
|
||||
|
||||
# Define a (case insensitive) mask matching nick names that should be
|
||||
# treated as IRC services when introduced via this remote server.
|
||||
# REGULAR SERVERS DON'T NEED this parameter, so leave it empty
|
||||
# (which is the default).
|
||||
# When you are connecting IRC services which mask as a IRC server
|
||||
# and which use "virtual users" to communicate with, for example
|
||||
# "NickServ" and "ChanServ", you should set this parameter to
|
||||
# something like "*Serv".
|
||||
;ServiceMask = *Serv
|
||||
|
||||
[Server]
|
||||
# More [Server] sections, if you like ...
|
||||
|
||||
[Channel]
|
||||
# Pre-defined channels can be configured in [Channel] sections.
|
||||
# Such channels are created by the server when starting up and even
|
||||
# persist when there are no more members left.
|
||||
# Persistent channels are marked with the mode 'P', which can be set
|
||||
# and unset by IRC operators like other modes on the fly.
|
||||
# There may be more than one [Channel] block, one for each channel.
|
||||
|
||||
#
|
||||
# Mit [Channel]-Bloecken werden "persistente Channels" definiert,
|
||||
# die nach dem Start des Servers automatisch erzeugt werden und auch
|
||||
# dann erhalten bleiben, wenn keine User mehr im Channel sind. Es
|
||||
# koennen mehrere solcher Bloecke hier konfiguriert werden.
|
||||
# Gekennzeichnet werden solche Channels mit dem Mode "P", der ganz
|
||||
# normal gesetzt und geloescht werden kann.
|
||||
#
|
||||
|
||||
# Name des Channels
|
||||
# Name of the channel
|
||||
;Name = #TheName
|
||||
|
||||
# Topic, das gesetzt werden soll
|
||||
;Topic = Ein tolles Topic
|
||||
# Topic for this channel
|
||||
;Topic = a great topic
|
||||
|
||||
# Channel-Modes
|
||||
;Modes = tn
|
||||
# Initial channel modes
|
||||
;Modes = tnk
|
||||
|
||||
# initial channel password (mode k)
|
||||
;Key = Secret
|
||||
|
||||
# Key file, syntax for each line: "<user>:<nick>:<key>".
|
||||
# Default: none.
|
||||
;KeyFile = /etc/ngircd/#chan.key
|
||||
|
||||
# maximum users per channel (mode l)
|
||||
;MaxUsers = 23
|
||||
|
||||
[Channel]
|
||||
# More [Channel] sections, if you like ...
|
||||
|
||||
# -eof-
|
||||
|
1
doc/src/.gitignore
vendored
Normal file
1
doc/src/.gitignore
vendored
Normal file
@@ -0,0 +1 @@
|
||||
html
|
153
doc/src/Doxyfile
Normal file
153
doc/src/Doxyfile
Normal file
@@ -0,0 +1,153 @@
|
||||
#
|
||||
# ngIRCd -- The Next Generation IRC Daemon
|
||||
# Copyright (c)2001-2005 Alexander Barton (alex@barton.de)
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
# Please read the file COPYING, README and AUTHORS for more information.
|
||||
#
|
||||
# $Id: Doxyfile,v 1.2 2005/07/23 00:48:38 alex Exp $
|
||||
#
|
||||
|
||||
# This file describes the settings to be used by the documentation system
|
||||
# doxygen (www.doxygen.org) for ngIRCd.
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# Project related configuration options
|
||||
#---------------------------------------------------------------------------
|
||||
|
||||
# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
|
||||
# by quotes) that should identify the project.
|
||||
|
||||
PROJECT_NAME = ngIRCd
|
||||
|
||||
# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
|
||||
# base path where the generated documentation will be put.
|
||||
# If a relative path is entered, it will be relative to the location
|
||||
# where doxygen was started. If left blank the current directory will be used.
|
||||
|
||||
OUTPUT_DIRECTORY = .
|
||||
|
||||
# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
|
||||
# can be used to strip a user-defined part of the path. Stripping is
|
||||
# only done if one of the specified strings matches the left-hand part of
|
||||
# the path. The tag can be used to show relative paths in the file list.
|
||||
# If left blank the directory from which doxygen is run is used as the
|
||||
# path to strip.
|
||||
|
||||
STRIP_FROM_PATH = ../..
|
||||
|
||||
# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
|
||||
# will interpret the first line (until the first dot) of a JavaDoc-style
|
||||
# comment as the brief description. If set to NO, the JavaDoc
|
||||
# comments will behave just like the Qt-style comments (thus requiring an
|
||||
# explicit @brief command for a brief description.
|
||||
|
||||
JAVADOC_AUTOBRIEF = YES
|
||||
|
||||
# If the DETAILS_AT_TOP tag is set to YES then Doxygen
|
||||
# will output the detailed description near the top, like JavaDoc.
|
||||
# If set to NO, the detailed description appears after the member
|
||||
# documentation.
|
||||
|
||||
DETAILS_AT_TOP = NO
|
||||
|
||||
# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
|
||||
# sources only. Doxygen will then generate output that is more tailored for C.
|
||||
# For instance, some of the names that are used will be different. The list
|
||||
# of all members will be omitted, etc.
|
||||
|
||||
OPTIMIZE_OUTPUT_FOR_C = YES
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# Build related configuration options
|
||||
#---------------------------------------------------------------------------
|
||||
|
||||
# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
|
||||
# documentation are documented, even if no documentation was available.
|
||||
# Private class members and static file members will be hidden unless
|
||||
# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
|
||||
|
||||
EXTRACT_ALL = YES
|
||||
|
||||
# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
|
||||
# will be included in the documentation.
|
||||
|
||||
EXTRACT_PRIVATE = YES
|
||||
|
||||
# If the EXTRACT_STATIC tag is set to YES all static members of a file
|
||||
# will be included in the documentation.
|
||||
|
||||
EXTRACT_STATIC = YES
|
||||
|
||||
# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
|
||||
# defined locally in source files will be included in the documentation.
|
||||
# If set to NO only classes defined in header files are included.
|
||||
|
||||
EXTRACT_LOCAL_CLASSES = YES
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to the input files
|
||||
#---------------------------------------------------------------------------
|
||||
|
||||
# The INPUT tag can be used to specify the files and/or directories that
|
||||
# contain documented source files. You may enter file names like "myfile.cpp"
|
||||
# or directories like "/usr/src/myproject". Separate the files or directories
|
||||
# with spaces.
|
||||
|
||||
INPUT = ../../src
|
||||
|
||||
# The RECURSIVE tag can be used to turn specify whether or not subdirectories
|
||||
# should be searched for input files as well. Possible values are YES and NO.
|
||||
# If left blank NO is used.
|
||||
|
||||
RECURSIVE = YES
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# configuration options related to source browsing
|
||||
#---------------------------------------------------------------------------
|
||||
|
||||
# If the SOURCE_BROWSER tag is set to YES then a list of source files will
|
||||
# be generated. Documented entities will be cross-referenced with these sources.
|
||||
# Note: To get rid of all source code in the generated output, make sure also
|
||||
# VERBATIM_HEADERS is set to NO.
|
||||
|
||||
SOURCE_BROWSER = YES
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# Output formats
|
||||
#---------------------------------------------------------------------------
|
||||
|
||||
GENERATE_HTML = YES
|
||||
|
||||
HTML_OUTPUT = html
|
||||
HTML_FILE_EXTENSION = .html
|
||||
HTML_HEADER = header.inc.html
|
||||
HTML_FOOTER = footer.inc.html
|
||||
HTML_STYLESHEET = ngircd-doc.css
|
||||
|
||||
GENERATE_HTMLHELP = NO
|
||||
GENERATE_LATEX = NO
|
||||
GENERATE_RTF = NO
|
||||
GENERATE_MAN = NO
|
||||
GENERATE_XML = NO
|
||||
GENERATE_AUTOGEN_DEF = NO
|
||||
GENERATE_PERLMOD = NO
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to the preprocessor
|
||||
#---------------------------------------------------------------------------
|
||||
|
||||
# The PREDEFINED tag can be used to specify one or more macro names that
|
||||
# are defined before the preprocessor is started (similar to the -D option of
|
||||
# gcc). The argument of the tag is a list of macros of the form: name
|
||||
# or name=definition (no spaces). If the definition and the = are
|
||||
# omitted =1 is assumed. To prevent a macro definition from being
|
||||
# undefined via #undef or recursively expanded use the := operator
|
||||
# instead of the = operator.
|
||||
|
||||
PREDEFINED = CONN_MODULE __client_c__
|
||||
|
||||
# -eof-
|
25
doc/src/Makefile.am
Normal file
25
doc/src/Makefile.am
Normal file
@@ -0,0 +1,25 @@
|
||||
#
|
||||
# ngIRCd -- The Next Generation IRC Daemon
|
||||
# Copyright (c)2001-2008 Alexander Barton (alex@barton.de)
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
# Please read the file COPYING, README and AUTHORS for more information.
|
||||
#
|
||||
|
||||
EXTRA_DIST = Doxyfile header.inc.html footer.inc.html ngircd-doc.css
|
||||
|
||||
maintainer-clean-local:
|
||||
rm -f Makefile Makefile.in
|
||||
|
||||
distclean-local:
|
||||
rm -rf html
|
||||
|
||||
srcdoc:
|
||||
@doxygen --version >/dev/null 2>&1 \
|
||||
|| ( echo; echo "Error: \"doxygen\" not found!"; echo; exit 1 )
|
||||
doxygen
|
||||
|
||||
# -eof-
|
11
doc/src/footer.inc.html
Normal file
11
doc/src/footer.inc.html
Normal file
@@ -0,0 +1,11 @@
|
||||
|
||||
<hr class="footer">
|
||||
<p>
|
||||
ngIRCd
|
||||
<a href="http://ngircd.barton.de/">Homepage</a>,
|
||||
<a href="http://arthur.barton.de/cgi-bin/viewcvs.cgi/ngircd/">CVS-Repository</a>,
|
||||
<a href="http://ngircd.barton.de/bugzilla/index.cgi">Bug-Tracker</a>.
|
||||
</p>
|
||||
|
||||
</body>
|
||||
</html>
|
10
doc/src/header.inc.html
Normal file
10
doc/src/header.inc.html
Normal file
@@ -0,0 +1,10 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
|
||||
<title>ngIRCd Source Documentation</title>
|
||||
<link href="ngircd-doc.css" rel="stylesheet" type="text/css">
|
||||
</head>
|
||||
<body>
|
||||
|
77
doc/src/ngircd-doc.css
Normal file
77
doc/src/ngircd-doc.css
Normal file
@@ -0,0 +1,77 @@
|
||||
/*
|
||||
* Cascading Style Sheet for the ngIRCd source documentation
|
||||
*
|
||||
* $Id: ngircd-doc.css,v 1.2 2005/07/22 21:23:22 alex Exp $
|
||||
*/
|
||||
|
||||
BODY {
|
||||
background-color: white;
|
||||
color: black;
|
||||
margin: 30px;
|
||||
font-family: Geneva, sans-serif;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
A:visited { color: purple; background: transparent; }
|
||||
A:link { color: navy; background: transparent; }
|
||||
A:active { color: red; background: transparent; }
|
||||
A:hover { background: #ffa; }
|
||||
|
||||
H1, H2, H3 {
|
||||
font-family: Verdana, sans-serif;
|
||||
background-color: white;
|
||||
color: #005555;
|
||||
}
|
||||
H1 { margin-bottom: 10px; }
|
||||
H2 {
|
||||
margin-top: 20px;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
P, LI, TD, TH, DT {
|
||||
font-family: Geneva, sans-serif;
|
||||
font-size: 12px;
|
||||
line-height: 1.2
|
||||
}
|
||||
|
||||
DD { margin-bottom: 1em; }
|
||||
|
||||
UL { list-style-type: square; }
|
||||
|
||||
HR { margin: 2em 0px; }
|
||||
|
||||
BODY>TABLE { padding: 1em 0px; }
|
||||
|
||||
TD.mdRow {
|
||||
border: 1px dotted silver;
|
||||
background-color: #fff9dd;
|
||||
}
|
||||
|
||||
TD.md { font-weight: bold; }
|
||||
|
||||
TD.memItemLeft { padding-top: 4px; }
|
||||
TD.memItemRight { padding-top: 4px; }
|
||||
TD.mdescRight { font-style: italic; }
|
||||
|
||||
DIV.qindex {
|
||||
background-color: #eee;
|
||||
border: 1px dotted silver;
|
||||
padding: 3px;
|
||||
margin-bottom: 2px;
|
||||
}
|
||||
|
||||
DIV.nav {
|
||||
margin: 1em 0px;
|
||||
}
|
||||
|
||||
HR.footer { margin-top: 50px; }
|
||||
|
||||
.comment {
|
||||
color: gray;
|
||||
font-style: italic;
|
||||
}
|
||||
.preprocessor { color: #f90; }
|
||||
.keyword, .keywordflow, .keywordtype { color: red; }
|
||||
.stringliteral { color: green; }
|
||||
|
||||
/* -eof- */
|
2
man/.gitignore
vendored
Normal file
2
man/.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
ngircd.8
|
||||
ngircd.conf.5
|
@@ -9,12 +9,25 @@
|
||||
# Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste
|
||||
# der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS.
|
||||
#
|
||||
# $Id: Makefile.am,v 1.5 2002/04/04 13:02:41 alex Exp $
|
||||
# $Id: Makefile.am,v 1.6 2006/12/25 16:13:26 alex Exp $
|
||||
#
|
||||
|
||||
TEMPLATE_MANS = ngircd.conf.5.tmpl ngircd.8.tmpl
|
||||
|
||||
SUFFIXES = .tmpl .
|
||||
|
||||
.tmpl:
|
||||
sed \
|
||||
-e s@:SBINDIR:@${sbindir}@ \
|
||||
-e s@:BINDIR:@${bindir}@ \
|
||||
-e s@:ETCDIR:@${sysconfdir}@ \
|
||||
<$< >$@
|
||||
|
||||
man_MANS = ngircd.conf.5 ngircd.8
|
||||
|
||||
EXTRA_DIST = $(man_MANS)
|
||||
CLEANFILES = $(man_MANS)
|
||||
|
||||
EXTRA_DIST = $(TEMPLATE_MANS)
|
||||
|
||||
maintainer-clean-local:
|
||||
rm -f Makefile Makefile.in
|
||||
|
52
man/ngircd.8
52
man/ngircd.8
@@ -1,52 +0,0 @@
|
||||
.\"
|
||||
.\" $Id: ngircd.8,v 1.4 2002/09/16 11:11:21 alex Exp $
|
||||
.\"
|
||||
.TH ngircd 8 "September 2002" ngircd "ngIRCd Manual"
|
||||
.SH NAME
|
||||
ngircd \- the next generation IRC daemon
|
||||
.SH SYNOPSIS
|
||||
.B ngircd [
|
||||
.I Options
|
||||
.B ]
|
||||
.SH DESCRIPTION
|
||||
.B ngircd
|
||||
is a portable IRC daemon written from scratch. It is easy to configure,
|
||||
supports server links (even with original ircds) and runs on hosts with
|
||||
changing IP addresses (such as dial-in networks). Currently supported
|
||||
platforms (tested versions) are: AIX (3.2.5), A/UX (3.0.1), FreeBSD
|
||||
(4.5), HP-UX (10.20), IRIX (6.5), Linux (2.x), Mac OS X (10.x), NetBSD
|
||||
(1.5.2/i386, 1.5.3/m68k), Solaris (2.5.1, 2.6), and Windows with Cygwin.
|
||||
.SH OPTIONS
|
||||
.IP --configtest
|
||||
read, validate and display configuration; then exit.
|
||||
.IP "-f file, --config file"
|
||||
use
|
||||
.I file
|
||||
as configuration file.
|
||||
.IP "-n, --nodaemon"
|
||||
don't fork and don't detatch from controlling terminal.
|
||||
.IP "-p, --passive"
|
||||
disable automatic connections to other servers.
|
||||
.IP --version
|
||||
output version information and exit.
|
||||
.IP --help
|
||||
display brief help text and exit.
|
||||
.SH FILES
|
||||
.I /usr/local/etc/ngircd.conf
|
||||
.RS
|
||||
The system wide default configuration file.
|
||||
.SH AUTHOR
|
||||
Alexander Barton,
|
||||
.UR mailto:alex@barton.de
|
||||
alex@barton.de
|
||||
.UE
|
||||
.br
|
||||
Homepage:
|
||||
.UR http://arthur.ath.cx/~alex/ngircd/
|
||||
http://arthur.ath.cx/~alex/ngircd/
|
||||
.UE
|
||||
.SH "SEE ALSO"
|
||||
.BR ngircd.conf (5),
|
||||
.BR ircd (8)
|
||||
.\"
|
||||
.\" -eof-
|
82
man/ngircd.8.tmpl
Normal file
82
man/ngircd.8.tmpl
Normal file
@@ -0,0 +1,82 @@
|
||||
.\"
|
||||
.\" ngircd(8) manual page template
|
||||
.\"
|
||||
.TH ngircd 8 "Dec 2008" ngircd "ngIRCd Manual"
|
||||
.SH NAME
|
||||
ngIRCd \- the next generation IRC daemon
|
||||
.SH SYNOPSIS
|
||||
.B ngircd [
|
||||
.I Options
|
||||
.B ]
|
||||
.SH DESCRIPTION
|
||||
.BR ngIRCd
|
||||
is a free open source daemon for the Internet Relay Chat (IRC),
|
||||
developed under the GNU General Public License (GPL).
|
||||
.PP
|
||||
It's written from scratch and is not based upon the original IRCd like
|
||||
many others. It is easy to configure, supports server links (even with
|
||||
original ircd's) and runs on hosts with changing IP addresses (such as
|
||||
dial-in networks).
|
||||
.PP
|
||||
Currently supported platforms include AIX, A/UX, FreeBSD, HP-UX, IRIX,
|
||||
Linux, Mac OS X, NetBSD, OpenBSD, Solaris, and Windows with Cygwin.
|
||||
.PP
|
||||
As ngIRCd relies on UNIX standards and uses GNU automake and GNU autoconf
|
||||
there are good chances that it also supports other UNIX-based operating
|
||||
systems as well. By default, ngIRCd writes diagnostic and informational messages using
|
||||
the syslog mechanism.
|
||||
.SH OPTIONS
|
||||
The default behaviour of
|
||||
.BR ngircd
|
||||
is to read its standard configuration file (see below), to detach from the
|
||||
controlling terminal and to wait for clients.
|
||||
.PP
|
||||
You can use these options to modify this default:
|
||||
.TP
|
||||
\fB\-f\fR \fIfile\fR, \fB\-\-config\fR \fIfile\fR
|
||||
Use
|
||||
.I file
|
||||
as configuration file.
|
||||
.TP
|
||||
\fB\-n\fR, \fB\-\-nodaemon\fR
|
||||
Don't fork a child and don't detach from controlling terminal.
|
||||
All log messages go to the console and you can use CTRL-C to
|
||||
terminate the server.
|
||||
.TP
|
||||
\fB\-p\fR, \fB\-\-passive\fR
|
||||
Disable automatic connections to other servers. You can use the IRC command
|
||||
CONNECT later on as IRC Operator to link this ngIRCd to other servers.
|
||||
.TP
|
||||
\fB\-t\fR, \fB\-\-configtest\fR
|
||||
Read, validate and display the configuration; then exit.
|
||||
.TP
|
||||
\fB\-V\fR, \fB\-\-version\fR
|
||||
Output version information and exit.
|
||||
.TP
|
||||
\fB\-h\fR, \fB\-\-help\fR
|
||||
Display a brief help text and exit.
|
||||
.SH FILES
|
||||
.I :ETCDIR:/ngircd.conf
|
||||
.RS
|
||||
The system wide default configuration file.
|
||||
.RE
|
||||
.I :ETCDIR:/ngircd.motd
|
||||
.RS
|
||||
Default "message of the day" (MOTD).
|
||||
.RE
|
||||
.SH HINTS
|
||||
It's wise to use "ngircd \-\-configtest" to validate the configuration file
|
||||
after changing it.
|
||||
.SH AUTHOR
|
||||
Alexander Barton,
|
||||
.UR mailto:alex@barton.de
|
||||
.UE
|
||||
.br
|
||||
Homepage:
|
||||
.UR http://ngircd.barton.de/
|
||||
.UE
|
||||
.SH "SEE ALSO"
|
||||
.BR ngircd.conf (5),
|
||||
.BR ircd (8)
|
||||
.\"
|
||||
.\" -eof-
|
@@ -1,26 +0,0 @@
|
||||
.\"
|
||||
.\" $Id: ngircd.conf.5,v 1.6 2002/09/16 11:11:21 alex Exp $
|
||||
.\"
|
||||
.TH ngircd.conf 5 "September 2002" ngircd "ngIRCd Manual"
|
||||
.SH NAME
|
||||
ngircd.conf \- configuration file of ngircd
|
||||
.SH SYNOPSIS
|
||||
.B /usr/local/etc/ngircd.conf
|
||||
.SH DESCRIPTION
|
||||
(coming soon, please have a look at the sample configuration
|
||||
file "doc/sample-ngircd.conf" -- Thank you!)
|
||||
.SH AUTHOR
|
||||
Alexander Barton,
|
||||
.UR mailto:alex@barton.de
|
||||
alex@barton.de
|
||||
.UE
|
||||
.br
|
||||
Homepage:
|
||||
.UR http://arthur.ath.cx/~alex/ngircd/
|
||||
http://arthur.ath.cx/~alex/ngircd/
|
||||
.UE
|
||||
.SH "SEE ALSO"
|
||||
.BR ngircd (8)
|
||||
.BR ircd (8)
|
||||
.\"
|
||||
.\" -eof-
|
386
man/ngircd.conf.5.tmpl
Normal file
386
man/ngircd.conf.5.tmpl
Normal file
@@ -0,0 +1,386 @@
|
||||
.\"
|
||||
.\" ngircd.conf(5) manual page template
|
||||
.\"
|
||||
.TH ngircd.conf 5 "Dec 2008" ngircd "ngIRCd Manual"
|
||||
.SH NAME
|
||||
ngircd.conf \- configuration file of ngIRCd
|
||||
.SH SYNOPSIS
|
||||
.B :ETCDIR:/ngircd.conf
|
||||
.SH DESCRIPTION
|
||||
.BR ngircd.conf
|
||||
is the configuration file of the
|
||||
.BR ngircd (8)
|
||||
Internet Relay Chat (IRC) daemon which you should adept to your local
|
||||
preferences and needs.
|
||||
.PP
|
||||
Most variables can be modified while the ngIRCd daemon is already running:
|
||||
It will reload its configuration when a HUP signal is received.
|
||||
.SH "FILE FORMAT"
|
||||
The file consists of sections and parameters. A section begins with the name
|
||||
of the section in square brackets and continues until the next section
|
||||
begins.
|
||||
.PP
|
||||
Sections contain parameters of the form
|
||||
.PP
|
||||
.RS
|
||||
.I name
|
||||
=
|
||||
.I value
|
||||
.RE
|
||||
.PP
|
||||
Empty lines and any line beginning with a semicolon (';') or a hash ('#')
|
||||
character are treated as a comment and will be ignored. Leading and trailing
|
||||
whitespaces are trimmed before any processing takes place.
|
||||
.PP
|
||||
The file format is line-based - that means, each non-empty newline-terminated
|
||||
line represents either a comment, a section name, or a parameter.
|
||||
.PP
|
||||
Section and parameter names are not case sensitive.
|
||||
.SH "SECTION OVERVIEW"
|
||||
The file can contain blocks of four types: [Global], [Operator], [Server],
|
||||
and [Channel].
|
||||
.PP
|
||||
The main configuration of the server is stored in the
|
||||
.I [Global]
|
||||
section, like the server name, administrative information and the
|
||||
ports on which the server should be listening. IRC operators of this
|
||||
server are defined in
|
||||
.I [Operator]
|
||||
blocks.
|
||||
.I [Server]
|
||||
is the section where server links are configured. And
|
||||
.I [Channel]
|
||||
blocks are used to configure pre-defined ("persistent") IRC channels.
|
||||
.PP
|
||||
There can be more than one [Operator], [Server] and [Channel] sections
|
||||
per configuration file, but only one [Global] section.
|
||||
.SH [GLOBAL]
|
||||
The
|
||||
.I [Global]
|
||||
section is used to define the server main configuration, like the server
|
||||
name and the ports on which the server should be listening.
|
||||
.TP
|
||||
\fBName\fR
|
||||
Server name in the IRC network. This is an individual name of the IRC
|
||||
server, it is not related to the DNS host name. It must be unique in the
|
||||
IRC network and must contain at least one dot (".") character.
|
||||
.TP
|
||||
\fBInfo\fR
|
||||
Info text of the server. This will be shown by WHOIS and LINKS requests for
|
||||
example.
|
||||
.TP
|
||||
\fBAdminInfo1\fR, \fBAdminInfo2\fR, \fBAdminEMail\fR
|
||||
Information about the server and the administrator, used by the ADMIN
|
||||
command.
|
||||
.TP
|
||||
\fBPorts\fR
|
||||
Ports on which the server should listen. There may be more than one port,
|
||||
separated with commas (","). Default: 6667.
|
||||
.TP
|
||||
\fBSSLPorts\fR
|
||||
Same as \fBPorts\fR , except that ngIRCd will expect incoming connections
|
||||
to be SSL/TLS encrypted. Common port numbers for SSL-encrypted IRC are 6669
|
||||
and 6697. Default: none.
|
||||
.TP
|
||||
\fBSSLKeyFile\fR
|
||||
Filename of SSL Server Key to be used for SSL connections. This is required for
|
||||
SSL/TLS support.
|
||||
.TP
|
||||
\fBSSLKeyFilePassword\fR
|
||||
(OpenSSL only:) Password to decrypt private key.
|
||||
.TP
|
||||
\fBSSLCertFile\fR
|
||||
Certificate file of the private key.
|
||||
.TP
|
||||
\fBSSLDHFile\fR
|
||||
Name of the Diffie-Hellman Parameter file. Can be created with gnutls
|
||||
"certtool \-\-generate-dh-params" or "openssl dhparam".
|
||||
If this file is not present, it will be generated on startup when ngIRCd
|
||||
was compiled with gnutls support (this may take some time). If ngIRCd
|
||||
was compiled with OpenSSL, then (Ephemeral)-Diffie-Hellman Key Exchanges and several
|
||||
Cipher Suites will not be available.
|
||||
.TP
|
||||
\fBListen\fR
|
||||
A comma separated list of IP address on which the server should listen.
|
||||
If unset, the defaults value is "0.0.0.0" or, if ngIRCd was compiled
|
||||
with IPv6 support, "::,0.0.0.0". So the server listens on all configured
|
||||
IP addresses and interfaces by default.
|
||||
.TP
|
||||
\fBMotdFile\fR
|
||||
Text file with the "message of the day" (MOTD). This message will be shown
|
||||
to all users connecting to the server.
|
||||
.TP
|
||||
\fBMotdPhrase\fR
|
||||
A simple Phrase (<256 chars) if you don't want to use a MOTD file.
|
||||
If this variable is set, no \fBMotdFile\fR will be read at all which can be
|
||||
handy if the daemon should run inside a chroot directory.
|
||||
.TP
|
||||
\fBServerUID\fR
|
||||
User ID under which the server should run; you can use the name of the user
|
||||
or the numerical ID.
|
||||
.PP
|
||||
.RS
|
||||
.B Attention:
|
||||
.br
|
||||
For this to work the server must have been
|
||||
started with root privileges! In addition, the configuration and MOTD files
|
||||
must be readable by this user, otherwise RESTART and REHASH won't work!
|
||||
.RE
|
||||
.TP
|
||||
\fBServerGID\fR
|
||||
Group ID under which the ngIRCd should run; you can use the name of the
|
||||
group or the numerical ID.
|
||||
.PP
|
||||
.RS
|
||||
.B Attention:
|
||||
.br
|
||||
For this to work the server must have
|
||||
been started with root privileges!
|
||||
.RE
|
||||
.TP
|
||||
\fBChrootDir\fR
|
||||
A directory to chroot in when everything is initialized. It doesn't need
|
||||
to be populated if ngIRCd is compiled as a static binary. By default ngIRCd
|
||||
won't use the chroot() feature.
|
||||
.PP
|
||||
.RS
|
||||
.B Attention:
|
||||
.br
|
||||
For this to work the server must have
|
||||
been started with root privileges!
|
||||
.RE
|
||||
.TP
|
||||
\fBPidFile\fR
|
||||
This tells ngIRCd to write its current process ID to a file. Note that the
|
||||
pidfile is written AFTER chroot and switching the user ID, i. e. the
|
||||
directory the pidfile resides in must be writeable by the ngIRCd user and
|
||||
exist in the chroot directory (if configured, see above).
|
||||
.RE
|
||||
.TP
|
||||
\fBPingTimeout\fR
|
||||
After <PingTimeout> seconds of inactivity the server will send a PING to
|
||||
the peer to test whether it is alive or not. Default: 120.
|
||||
.TP
|
||||
\fBPongTimeout\fR
|
||||
If a client fails to answer a PING with a PONG within <PongTimeout>
|
||||
seconds, it will be disconnected by the server. Default: 20.
|
||||
.TP
|
||||
\fBConnectRetry\fR
|
||||
The server tries every <ConnectRetry> seconds to establish a link to not yet
|
||||
(or no longer) connected servers. Default: 60.
|
||||
.TP
|
||||
\fBOperCanUseMode\fR
|
||||
Should IRC Operators be allowed to use the MODE command even if they are
|
||||
not(!) channel-operators? Default: no.
|
||||
.TP
|
||||
\fBOperServerMode\fR
|
||||
If \fBOperCanUseMode\fR is enabled, this may lead the compatibility problems with
|
||||
Servers that run the ircd-irc2 Software. This Option "masks" mode requests
|
||||
by non-chanops as if they were coming from the server. Default: no.
|
||||
.TP
|
||||
\fBPredefChannelsOnly\fR
|
||||
If enabled, no new channels can be created. Useful if
|
||||
you do not want to have channels other than those defined in
|
||||
[Channel] sections in the configuration file.
|
||||
Default: no.
|
||||
.TP
|
||||
\fBNoDNS\fR
|
||||
If set to true, ngIRCd will not make DNS lookups when clients connect.
|
||||
If you configure the daemon to connect to other servers, ngIRCd may still
|
||||
perform a DNS lookup if required.
|
||||
Default: no.
|
||||
.TP
|
||||
\fBNoIdent\fR
|
||||
If ngIRCd is compiled with IDENT support this can be used to disable IDENT
|
||||
lookups at run time.
|
||||
Default: no.
|
||||
.TP
|
||||
\fBConnectIPv4\fR
|
||||
Set this to no if you do not want ngIRCd to connect to other IRC servers using
|
||||
IPv4. This allows usage of ngIRCd in IPv6-only setups.
|
||||
Default: yes.
|
||||
.TP
|
||||
\fBConnectIPv6\fR
|
||||
Set this to no if you do not want ngIRCd to connect to other irc servers using IPv6.
|
||||
Default: yes.
|
||||
.TP
|
||||
\fBMaxConnections\fR
|
||||
Maximum number of simultaneous in- and outbound connections the server is
|
||||
allowed to accept (0: unlimited). Default: 0.
|
||||
.TP
|
||||
\fBMaxConnectionsIP\fR
|
||||
Maximum number of simultaneous connections from a single IP address that
|
||||
the server will accept (0: unlimited). This configuration options lowers
|
||||
the risk of denial of service attacks (DoS). Default: 5.
|
||||
.TP
|
||||
\fBMaxJoins\fR
|
||||
Maximum number of channels a user can be member of (0: no limit).
|
||||
Default: 10.
|
||||
.TP
|
||||
\fBMaxNickLength\fR
|
||||
Maximum length of an user nick name (Default: 9, as in RFC 2812). Please
|
||||
note that all servers in an IRC network MUST use the same maximum nick name
|
||||
length!
|
||||
.TP
|
||||
\fBSSLConnect\fR
|
||||
Connect to the remote server using TLS/SSL. Default: false.
|
||||
.SH [OPERATOR]
|
||||
.I [Operator]
|
||||
sections are used to define IRC Operators. There may be more than one
|
||||
.I [Operator]
|
||||
block, one for each local operator.
|
||||
.TP
|
||||
\fBName\fR
|
||||
ID of the operator (may be different of the nick name).
|
||||
.TP
|
||||
\fBPassword\fR
|
||||
Password of the IRC operator.
|
||||
.TP
|
||||
\fBMask\fR
|
||||
Mask that is to be checked before an /OPER for this account is accepted.
|
||||
Example: nick!ident@*.example.com
|
||||
.SH [SERVER]
|
||||
Other servers are configured in
|
||||
.I [Server]
|
||||
sections. If you configure a port for the connection, then this ngIRCd
|
||||
tries to connect to to the other server on the given port (active);
|
||||
if not, it waits for the other server to connect (passive).
|
||||
.PP
|
||||
ngIRCd supports "server groups": You can assign an "ID" to every server
|
||||
with which you want this ngIRCd to link, and the daemon ensures that at
|
||||
any given time only one direct link exists to servers with the same ID.
|
||||
So if a server of a group won't answer, ngIRCd tries to connect to the next
|
||||
server in the given group (="with the same ID"), but never tries to connect
|
||||
to more than one server of this group simultaneously.
|
||||
.PP
|
||||
There may be more than one
|
||||
.I [Server]
|
||||
block.
|
||||
.TP
|
||||
\fBName\fR
|
||||
IRC name of the remote server.
|
||||
.TP
|
||||
\fBHost\fR
|
||||
Internet host name (or IP address) of the peer.
|
||||
.TP
|
||||
\fBBind\fR
|
||||
IP address to use as source IP for the outgoing connection. Default is
|
||||
to let the operating system decide.
|
||||
.TP
|
||||
\fBPort\fR
|
||||
Port of the remote server to which ngIRCd should connect (active).
|
||||
If no port is assigned to a configured server, the daemon only waits for
|
||||
incoming connections (passive, default).
|
||||
.TP
|
||||
\fBMyPassword\fR
|
||||
Own password for this connection. This password has to be configured as
|
||||
\fBPeerPassword\fR on the other server. Must not have ':' as first character.
|
||||
.TP
|
||||
\fBPeerPassword\fR
|
||||
Foreign password for this connection. This password has to be configured as
|
||||
\fBMyPassword\fR on the other server.
|
||||
.TP
|
||||
\fBGroup\fR
|
||||
Group of this server (optional).
|
||||
.TP
|
||||
\fBPassive\fR
|
||||
Disable automatic connection even if port value is specified. Default: false.
|
||||
You can use the IRC Operator command CONNECT later on to create the link.
|
||||
.TP
|
||||
\fBServiceMask\fR
|
||||
Define a (case insensitive) mask matching nick names that should be treated as
|
||||
IRC services when introduced via this remote server. REGULAR SERVERS DON'T NEED
|
||||
this parameter, so leave it empty (which is the default).
|
||||
.PP
|
||||
.RS
|
||||
When you are connecting IRC services which mask as a IRC server and which use
|
||||
"virtual users" to communicate with, for example "NickServ" and "ChanServ",
|
||||
you should set this parameter to something like "*Serv".
|
||||
.SH [CHANNEL]
|
||||
Pre-defined channels can be configured in
|
||||
.I [Channel]
|
||||
sections. Such channels are created by the server when starting up and even
|
||||
persist when there are no more members left.
|
||||
.PP
|
||||
Persistent channels are marked with the mode 'P', which can be set and unset
|
||||
by IRC operators like other modes on the fly.
|
||||
.PP
|
||||
There may be more than one
|
||||
.I [Channel]
|
||||
block.
|
||||
.TP
|
||||
\fBName\fR
|
||||
Name of the channel, including channel prefix ("#" or "&").
|
||||
.TP
|
||||
\fBTopic\fR
|
||||
Topic for this channel.
|
||||
.TP
|
||||
\fBModes\fR
|
||||
Initial channel modes.
|
||||
.TP
|
||||
\fBKey\fR
|
||||
Sets initial channel key (only relevant if channel mode "k" is set).
|
||||
.TP
|
||||
\fBKeyFile\fR
|
||||
Path and file name of a "key file" containing individual channel keys for
|
||||
different users. The file consists of plain text lines with the following
|
||||
syntax (without spaces!):
|
||||
.PP
|
||||
.RS
|
||||
.RS
|
||||
.I user
|
||||
:
|
||||
.I nick
|
||||
:
|
||||
.I key
|
||||
.RE
|
||||
.PP
|
||||
.I user
|
||||
and
|
||||
.I nick
|
||||
can contain the wildcard character "*".
|
||||
.br
|
||||
.I key
|
||||
is an arbitrary password.
|
||||
.PP
|
||||
Valid examples are:
|
||||
.PP
|
||||
.RS
|
||||
*:*:KeY
|
||||
.br
|
||||
*:nick:123
|
||||
.br
|
||||
~user:*:xyz
|
||||
.RE
|
||||
.PP
|
||||
The key file is read on each JOIN command when this channel has a key
|
||||
(channel mode +k). Access is granted, if a) the channel key set using the
|
||||
MODE +k command or b) one of the lines in the key file match.
|
||||
.PP
|
||||
.B Please note:
|
||||
.br
|
||||
The file is not reopened on each access, so you can modify and overwrite it
|
||||
without problems, but moving or deleting the file will have not effect until
|
||||
the daemon re-reads its configuration!
|
||||
.RE
|
||||
.TP
|
||||
\fBMaxUsers\fR
|
||||
Set maximum user limit for this channel (only relevant if channel mode "l"
|
||||
is set).
|
||||
.SH HINTS
|
||||
It's wise to use "ngircd \-\-configtest" to validate the configuration file
|
||||
after changing it. See
|
||||
.BR ngircd (8)
|
||||
for details.
|
||||
.SH AUTHOR
|
||||
Alexander Barton,
|
||||
.UR mailto:alex@barton.de
|
||||
.UE
|
||||
.br
|
||||
Homepage:
|
||||
.UR http://ngircd.barton.de/
|
||||
.UE
|
||||
.SH "SEE ALSO"
|
||||
.BR ngircd (8)
|
||||
.\"
|
||||
.\" -eof-
|
4
src/.gitignore
vendored
Normal file
4
src/.gitignore
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
config.h
|
||||
config.h.in
|
||||
config.h.in~
|
||||
stamp-h1
|
@@ -2,17 +2,16 @@
|
||||
# ngIRCd -- The Next Generation IRC Daemon
|
||||
# Copyright (c)2001,2002 by Alexander Barton (alex@barton.de)
|
||||
#
|
||||
# Dieses Programm ist freie Software. Sie koennen es unter den Bedingungen
|
||||
# der GNU General Public License (GPL), wie von der Free Software Foundation
|
||||
# herausgegeben, weitergeben und/oder modifizieren, entweder unter Version 2
|
||||
# der Lizenz oder (wenn Sie es wuenschen) jeder spaeteren Version.
|
||||
# Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste
|
||||
# der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS.
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
# Please read the file COPYING, README and AUTHORS for more information.
|
||||
#
|
||||
# $Id: Makefile.am,v 1.4 2002/09/09 10:00:15 alex Exp $
|
||||
# $Id: Makefile.am,v 1.8 2008/02/26 22:04:15 fw Exp $
|
||||
#
|
||||
|
||||
SUBDIRS = portab ngircd testsuite
|
||||
SUBDIRS = portab tool ipaddr ngircd testsuite
|
||||
|
||||
maintainer-clean-local:
|
||||
rm -f Makefile Makefile.in config.h config.h.in stamp-h.in
|
||||
|
14
src/ipaddr/Makefile.am
Normal file
14
src/ipaddr/Makefile.am
Normal file
@@ -0,0 +1,14 @@
|
||||
AUTOMAKE_OPTIONS = ansi2knr
|
||||
|
||||
INCLUDES = -I$(srcdir)/../portab
|
||||
|
||||
noinst_LIBRARIES = libngipaddr.a
|
||||
|
||||
libngipaddr_a_SOURCES = ng_ipaddr.c
|
||||
|
||||
noinst_HEADERS = ng_ipaddr.h
|
||||
|
||||
maintainer-clean-local:
|
||||
rm -f Makefile Makefile.in
|
||||
|
||||
# -eof-
|
167
src/ipaddr/ng_ipaddr.c
Normal file
167
src/ipaddr/ng_ipaddr.c
Normal file
@@ -0,0 +1,167 @@
|
||||
/*
|
||||
* Functions for AF_ agnostic ipv4/ipv6 handling.
|
||||
*
|
||||
* (c) 2008 Florian Westphal <fw@strlen.de>, public domain.
|
||||
*/
|
||||
|
||||
#include "portab.h"
|
||||
|
||||
#include <assert.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
#ifdef HAVE_GETADDRINFO
|
||||
#include <netdb.h>
|
||||
#include <sys/types.h>
|
||||
#endif
|
||||
|
||||
#include "ng_ipaddr.h"
|
||||
|
||||
GLOBAL bool
|
||||
ng_ipaddr_init(ng_ipaddr_t *addr, const char *ip_str, UINT16 port)
|
||||
{
|
||||
#ifdef HAVE_GETADDRINFO
|
||||
int ret;
|
||||
char portstr[64];
|
||||
struct addrinfo *res0;
|
||||
struct addrinfo hints;
|
||||
|
||||
assert(ip_str);
|
||||
|
||||
memset(&hints, 0, sizeof(hints));
|
||||
hints.ai_flags = AI_NUMERICHOST;
|
||||
|
||||
/* some getaddrinfo implementations require that ai_socktype is set. */
|
||||
hints.ai_socktype = SOCK_STREAM;
|
||||
|
||||
/* silly, but ngircd stores UINT16 in server config, not string */
|
||||
snprintf(portstr, sizeof(portstr), "%u", (unsigned int) port);
|
||||
|
||||
ret = getaddrinfo(ip_str, portstr, &hints, &res0);
|
||||
assert(ret == 0);
|
||||
if (ret != 0)
|
||||
return false;
|
||||
|
||||
assert(sizeof(*addr) >= res0->ai_addrlen);
|
||||
if (sizeof(*addr) >= res0->ai_addrlen)
|
||||
memcpy(addr, res0->ai_addr, res0->ai_addrlen);
|
||||
else
|
||||
ret = -1;
|
||||
freeaddrinfo(res0);
|
||||
return ret == 0;
|
||||
#else /* HAVE_GETADDRINFO */
|
||||
assert(ip_str);
|
||||
addr->sin4.sin_family = AF_INET;
|
||||
# ifdef HAVE_INET_ATON
|
||||
if (inet_aton(ip_str, &addr->sin4.sin_addr) == 0)
|
||||
return false;
|
||||
# else
|
||||
addr->sin4.sin_addr.s_addr = inet_addr(ip_str);
|
||||
if (addr->sin4.sin_addr.s_addr == (unsigned) -1)
|
||||
return false;
|
||||
# endif
|
||||
ng_ipaddr_setport(addr, port);
|
||||
return true;
|
||||
#endif /* HAVE_GETADDRINFO */
|
||||
}
|
||||
|
||||
|
||||
GLOBAL void
|
||||
ng_ipaddr_setport(ng_ipaddr_t *a, UINT16 port)
|
||||
{
|
||||
#ifdef WANT_IPV6
|
||||
int af;
|
||||
|
||||
assert(a != NULL);
|
||||
|
||||
af = a->sa.sa_family;
|
||||
|
||||
assert(af == AF_INET || af == AF_INET6);
|
||||
|
||||
switch (af) {
|
||||
case AF_INET:
|
||||
a->sin4.sin_port = htons(port);
|
||||
break;
|
||||
case AF_INET6:
|
||||
a->sin6.sin6_port = htons(port);
|
||||
break;
|
||||
}
|
||||
#else /* WANT_IPV6 */
|
||||
assert(a != NULL);
|
||||
assert(a->sin4.sin_family == AF_INET);
|
||||
a->sin4.sin_port = htons(port);
|
||||
#endif /* WANT_IPV6 */
|
||||
}
|
||||
|
||||
|
||||
|
||||
GLOBAL bool
|
||||
ng_ipaddr_ipequal(const ng_ipaddr_t *a, const ng_ipaddr_t *b)
|
||||
{
|
||||
assert(a != NULL);
|
||||
assert(b != NULL);
|
||||
#ifdef WANT_IPV6
|
||||
if (a->sa.sa_family != b->sa.sa_family)
|
||||
return false;
|
||||
assert(ng_ipaddr_salen(a) == ng_ipaddr_salen(b));
|
||||
switch (a->sa.sa_family) {
|
||||
case AF_INET6:
|
||||
return IN6_ARE_ADDR_EQUAL(&a->sin6.sin6_addr, &b->sin6.sin6_addr);
|
||||
case AF_INET:
|
||||
return memcmp(&a->sin4.sin_addr, &b->sin4.sin_addr, sizeof(a->sin4.sin_addr)) == 0;
|
||||
}
|
||||
return false;
|
||||
#else
|
||||
assert(a->sin4.sin_family == AF_INET);
|
||||
assert(b->sin4.sin_family == AF_INET);
|
||||
return memcmp(&a->sin4.sin_addr, &b->sin4.sin_addr, sizeof(a->sin4.sin_addr)) == 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
#ifdef WANT_IPV6
|
||||
GLOBAL const char *
|
||||
ng_ipaddr_tostr(const ng_ipaddr_t *addr)
|
||||
{
|
||||
static char strbuf[NG_INET_ADDRSTRLEN];
|
||||
|
||||
strbuf[0] = 0;
|
||||
|
||||
ng_ipaddr_tostr_r(addr, strbuf);
|
||||
return strbuf;
|
||||
}
|
||||
|
||||
|
||||
/* str must be at least NG_INET_ADDRSTRLEN bytes long */
|
||||
GLOBAL bool
|
||||
ng_ipaddr_tostr_r(const ng_ipaddr_t *addr, char *str)
|
||||
{
|
||||
#ifdef HAVE_GETNAMEINFO
|
||||
const struct sockaddr *sa = (const struct sockaddr *) addr;
|
||||
int ret;
|
||||
|
||||
*str = 0;
|
||||
|
||||
ret = getnameinfo(sa, ng_ipaddr_salen(addr),
|
||||
str, NG_INET_ADDRSTRLEN, NULL, 0, NI_NUMERICHOST);
|
||||
/*
|
||||
* avoid leading ':'.
|
||||
* causes mis-interpretation of client host in e.g. /WHOIS
|
||||
*/
|
||||
if (*str == ':') {
|
||||
char tmp[NG_INET_ADDRSTRLEN] = "0";
|
||||
ret = getnameinfo(sa, ng_ipaddr_salen(addr),
|
||||
tmp+1, sizeof(tmp) -1, NULL, 0, NI_NUMERICHOST);
|
||||
if (ret == 0)
|
||||
strlcpy(str, tmp, NG_INET_ADDRSTRLEN);
|
||||
}
|
||||
assert (ret == 0);
|
||||
return ret == 0;
|
||||
#else
|
||||
abort(); /* WANT_IPV6 depends on HAVE_GETNAMEINFO */
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif /* WANT_IPV6 */
|
||||
|
||||
/* -eof- */
|
118
src/ipaddr/ng_ipaddr.h
Normal file
118
src/ipaddr/ng_ipaddr.h
Normal file
@@ -0,0 +1,118 @@
|
||||
/*
|
||||
* Functions for AF_ agnostic ipv4/ipv6 handling.
|
||||
*
|
||||
* (c) 2008 Florian Westphal <fw@strlen.de>, public domain.
|
||||
*/
|
||||
|
||||
#ifndef NG_IPADDR_HDR
|
||||
#define NG_IPADDR_HDR
|
||||
#include "portab.h"
|
||||
|
||||
#include <sys/socket.h>
|
||||
#include <netinet/in.h>
|
||||
|
||||
#ifdef HAVE_ARPA_INET_H
|
||||
# include <arpa/inet.h>
|
||||
#else
|
||||
# define PF_INET AF_INET
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef WANT_IPV6
|
||||
#define NG_INET_ADDRSTRLEN INET6_ADDRSTRLEN
|
||||
#else
|
||||
#define NG_INET_ADDRSTRLEN 16
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef WANT_IPV6
|
||||
typedef union {
|
||||
struct sockaddr sa;
|
||||
struct sockaddr_in sin4;
|
||||
struct sockaddr_in6 sin6;
|
||||
} ng_ipaddr_t;
|
||||
#else
|
||||
/* assume compiler can't deal with typedef struct {... */
|
||||
struct NG_IP_ADDR_DONTUSE {
|
||||
struct sockaddr_in sin4;
|
||||
};
|
||||
typedef struct NG_IP_ADDR_DONTUSE ng_ipaddr_t;
|
||||
#endif
|
||||
|
||||
|
||||
static inline int
|
||||
ng_ipaddr_af(const ng_ipaddr_t *a)
|
||||
{
|
||||
#ifdef WANT_IPV6
|
||||
return a->sa.sa_family;
|
||||
#else
|
||||
assert(a->sin4.sin_family == 0 || a->sin4.sin_family == AF_INET);
|
||||
return a->sin4.sin_family;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
static inline socklen_t
|
||||
ng_ipaddr_salen(const ng_ipaddr_t *a)
|
||||
{
|
||||
#ifdef WANT_IPV6
|
||||
assert(a->sa.sa_family == AF_INET || a->sa.sa_family == AF_INET6);
|
||||
if (a->sa.sa_family == AF_INET6)
|
||||
return sizeof(a->sin6);
|
||||
#endif
|
||||
assert(a->sin4.sin_family == AF_INET);
|
||||
return sizeof(a->sin4);
|
||||
}
|
||||
|
||||
|
||||
static inline UINT16
|
||||
ng_ipaddr_getport(const ng_ipaddr_t *a)
|
||||
{
|
||||
#ifdef WANT_IPV6
|
||||
int af = a->sa.sa_family;
|
||||
|
||||
assert(af == AF_INET || af == AF_INET6);
|
||||
|
||||
if (af == AF_INET6)
|
||||
return ntohs(a->sin6.sin6_port);
|
||||
#endif /* WANT_IPV6 */
|
||||
assert(a->sin4.sin_family == AF_INET);
|
||||
return ntohs(a->sin4.sin_port);
|
||||
}
|
||||
|
||||
/*
|
||||
* init a ng_ipaddr_t object.
|
||||
* @param addr: pointer to ng_ipaddr_t to initialize.
|
||||
* @param ip_str: ip address in dotted-decimal (ipv4) or hexadecimal (ipv6) notation
|
||||
* @param port: transport layer port number to use.
|
||||
*/
|
||||
GLOBAL bool ng_ipaddr_init PARAMS((ng_ipaddr_t *addr, const char *ip_str, UINT16 port));
|
||||
|
||||
/* set sin4/sin6_port, depending on a->sa_family */
|
||||
GLOBAL void ng_ipaddr_setport PARAMS((ng_ipaddr_t *a, UINT16 port));
|
||||
|
||||
/* return true if a and b have the same IP address. If a and b have different AF, return false. */
|
||||
GLOBAL bool ng_ipaddr_ipequal PARAMS((const ng_ipaddr_t *a, const ng_ipaddr_t *b));
|
||||
|
||||
|
||||
#ifdef WANT_IPV6
|
||||
/* convert struct sockaddr to string, returns pointer to static buffer */
|
||||
GLOBAL const char *ng_ipaddr_tostr PARAMS((const ng_ipaddr_t *addr));
|
||||
|
||||
/* convert struct sockaddr to string. dest must be NG_INET_ADDRSTRLEN bytes long */
|
||||
GLOBAL bool ng_ipaddr_tostr_r PARAMS((const ng_ipaddr_t *addr, char *dest));
|
||||
#else
|
||||
static inline const char *
|
||||
ng_ipaddr_tostr(const ng_ipaddr_t *addr) { return inet_ntoa(addr->sin4.sin_addr); }
|
||||
|
||||
static inline bool
|
||||
ng_ipaddr_tostr_r(const ng_ipaddr_t *addr, char *d)
|
||||
{
|
||||
strlcpy(d, inet_ntoa(addr->sin4.sin_addr), NG_INET_ADDRSTRLEN);
|
||||
return true;
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* -eof- */
|
||||
|
3
src/ngircd/.gitignore
vendored
Normal file
3
src/ngircd/.gitignore
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
check-help
|
||||
check-version
|
||||
ngircd
|
@@ -1,37 +1,39 @@
|
||||
#
|
||||
# ngIRCd -- The Next Generation IRC Daemon
|
||||
# Copyright (c)2001,2002 by Alexander Barton (alex@barton.de)
|
||||
# Copyright (c)2001-2003 by Alexander Barton (alex@barton.de)
|
||||
#
|
||||
# Dieses Programm ist freie Software. Sie koennen es unter den Bedingungen
|
||||
# der GNU General Public License (GPL), wie von der Free Software Foundation
|
||||
# herausgegeben, weitergeben und/oder modifizieren, entweder unter Version 2
|
||||
# der Lizenz oder (wenn Sie es wuenschen) jeder spaeteren Version.
|
||||
# Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste
|
||||
# der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS.
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
# Please read the file COPYING, README and AUTHORS for more information.
|
||||
#
|
||||
# $Id: Makefile.am,v 1.27 2002/09/07 18:06:29 alex Exp $
|
||||
# $Id: Makefile.am,v 1.51 2008/02/26 22:04:17 fw Exp $
|
||||
#
|
||||
|
||||
AUTOMAKE_OPTIONS = ../portab/ansi2knr
|
||||
|
||||
INCLUDES = -I$(srcdir)/../portab
|
||||
INCLUDES = -I$(srcdir)/../portab -I$(srcdir)/../tool -I$(srcdir)/../ipaddr
|
||||
|
||||
LINTARGS = -weak -warnunixlib +unixlib -booltype BOOLEAN
|
||||
LINTARGS = -weak -warnunixlib +unixlib -booltype BOOLEAN \
|
||||
-varuse -retvalother -emptyret -unrecog
|
||||
|
||||
sbin_PROGRAMS = ngircd
|
||||
|
||||
ngircd_SOURCES = ngircd.c channel.c client.c conf.c conn.c hash.c irc.c \
|
||||
irc-channel.c irc-login.c irc-mode.c irc-op.c irc-oper.c irc-server.c \
|
||||
irc-write.c lists.c log.c match.c parse.c resolve.c tool.c
|
||||
ngircd_SOURCES = ngircd.c array.c channel.c client.c conf.c conn.c conn-func.c \
|
||||
conn-ssl.c conn-zip.c hash.c io.c irc.c irc-channel.c irc-info.c irc-login.c \
|
||||
irc-mode.c irc-op.c irc-oper.c irc-server.c irc-write.c lists.c log.c \
|
||||
match.c numeric.c parse.c rendezvous.c resolve.c
|
||||
|
||||
ngircd_LDFLAGS = -L../portab
|
||||
ngircd_LDFLAGS = -L../portab -L../tool -L../ipaddr
|
||||
|
||||
ngircd_LDADD = -lngportab
|
||||
ngircd_LDADD = -lngportab -lngtool -lngipaddr
|
||||
|
||||
noinst_HEADERS = ngircd.h channel.h client.h conf.h conn.h hash.h irc.h \
|
||||
irc-channel.h irc-login.h irc-mode.h irc-op.h irc-oper.h irc-server.h \
|
||||
irc-write.h lists.h log.h match.h parse.h resolve.h tool.h \
|
||||
messages.h defines.h
|
||||
noinst_HEADERS = ngircd.h array.h channel.h client.h conf.h conf-ssl.h conn.h \
|
||||
conn-func.h conn-ssl.h conn-zip.h hash.h io.h irc.h irc-channel.h \
|
||||
irc-info.h irc-login.h irc-mode.h irc-op.h irc-oper.h irc-server.h \
|
||||
irc-write.h lists.h log.h match.h numeric.h parse.h rendezvous.h \
|
||||
resolve.h defines.h messages.h
|
||||
|
||||
clean-local:
|
||||
rm -f check-version check-help lint.out
|
||||
@@ -41,24 +43,39 @@ maintainer-clean-local:
|
||||
|
||||
check-version: Makefile
|
||||
echo "#!/bin/sh" > check-version
|
||||
echo "./ngircd --version | grep ngircd > /dev/null 2>&1" >> check-version
|
||||
echo "./ngircd --version | grep ngircd >/dev/null 2>&1" >>check-version
|
||||
chmod 755 check-version
|
||||
|
||||
check-help: Makefile
|
||||
echo "#!/bin/sh" > check-help
|
||||
echo "./ngircd --help | grep help > /dev/null 2>&1" >> check-help
|
||||
echo "./ngircd --help | grep help >/dev/null 2>&1" >>check-help
|
||||
chmod 755 check-help
|
||||
|
||||
lint:
|
||||
rm -f lint.out
|
||||
@splint --version >/dev/null 2>&1 \
|
||||
|| ( echo; echo "Error: \"splint\" not found!"; echo; exit 1 )
|
||||
@echo; warnings=0; files=0; \
|
||||
for f in *.c; do \
|
||||
echo "checking $$f ..."; \
|
||||
splint $$f $(LINTARGS) -I./.. -I./../portab $(AM_CFLAGS) > lint.out 2>&1; \
|
||||
splint $$f $(LINTARGS) -I$(srcdir) -I$(srcdir)/.. \
|
||||
$(INCLUDES) $(AM_CFLAGS) >lint.out 2>&1; \
|
||||
grep "no warnings" lint.out > /dev/null 2>&1; \
|
||||
if [ $$? -ne 0 ]; then \
|
||||
echo; cat lint.out; echo; \
|
||||
waswarning=1; \
|
||||
echo; grep -v "^Command Line: " lint.out; echo; \
|
||||
w=$$( grep "code warning" lint.out | $(AWK) "{ print \$$4 }" ); \
|
||||
[ "$$w" -gt 0 ] && warnings=`expr $$warnings + $$w`; \
|
||||
files=`expr $$files + 1`; \
|
||||
else \
|
||||
waswarning=0; \
|
||||
fi; \
|
||||
done;
|
||||
rm -f lint.out; \
|
||||
done; \
|
||||
[ $$waswarning -eq 0 ] && echo; \
|
||||
[ $$warnings -gt 0 ] \
|
||||
&& echo "Result: $$warnings warning(s) in $$files file(s)!" \
|
||||
|| echo "Result: no warnings found."; \
|
||||
echo; [ $$warnings -gt 0 ] && exit 1
|
||||
|
||||
TESTS = check-version check-help
|
||||
|
||||
|
353
src/ngircd/array.c
Normal file
353
src/ngircd/array.c
Normal file
@@ -0,0 +1,353 @@
|
||||
/*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
* Please read the file COPYING, README and AUTHORS for more information.
|
||||
*
|
||||
* functions to dynamically allocate arrays.
|
||||
* Copyright (c) 2005 Florian Westphal (westphal@foo.fh-furtwangen.de)
|
||||
*
|
||||
*/
|
||||
|
||||
#include "array.h"
|
||||
|
||||
static char UNUSED id[] = "$Id: array.c,v 1.15 2007/11/18 15:05:35 alex Exp $";
|
||||
|
||||
#include <assert.h>
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "log.h"
|
||||
|
||||
/* Enable more Debug messages in alloc / append / memmove code. */
|
||||
/* #define DEBUG_ARRAY */
|
||||
|
||||
|
||||
|
||||
#define array_UNUSABLE(x) ( !(x)->mem || (0 == (x)->allocated) )
|
||||
|
||||
#define ALIGN_32U(x) (((x)+(unsigned)31 ) & ~((unsigned)31))
|
||||
#define ALIGN_1024U(x) (((x)+(unsigned)1023) & ~((unsigned)1023))
|
||||
#define ALIGN_4096U(x) (((x)+(unsigned)4095) & ~((unsigned)4095))
|
||||
|
||||
|
||||
static bool
|
||||
safemult_sizet(size_t a, size_t b, size_t *res)
|
||||
{
|
||||
size_t tmp = a * b;
|
||||
|
||||
if (b && (tmp / b != a))
|
||||
return false;
|
||||
|
||||
*res = tmp;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
array_init(array *a)
|
||||
{
|
||||
assert(a != NULL);
|
||||
a->mem = NULL;
|
||||
a->allocated = 0;
|
||||
a->used = 0;
|
||||
}
|
||||
|
||||
|
||||
/* if realloc() fails, array_alloc return NULL. otherwise return pointer to elem pos in array */
|
||||
void *
|
||||
array_alloc(array * a, size_t size, size_t pos)
|
||||
{
|
||||
size_t alloc, pos_plus1 = pos + 1;
|
||||
size_t aligned = 0;
|
||||
char *tmp;
|
||||
|
||||
assert(size > 0);
|
||||
|
||||
if (pos_plus1 == 0 || !safemult_sizet(size, pos_plus1, &alloc))
|
||||
return NULL;
|
||||
|
||||
if (a->allocated < alloc) {
|
||||
if (alloc < 128) {
|
||||
aligned = ALIGN_32U(alloc);
|
||||
} else {
|
||||
if (alloc < 4096) {
|
||||
aligned = ALIGN_1024U(alloc);
|
||||
} else {
|
||||
aligned = ALIGN_4096U(alloc);
|
||||
}
|
||||
}
|
||||
#ifdef DEBUG_ARRAY
|
||||
Log(LOG_DEBUG, "array_alloc(): rounded %u to %u bytes.", alloc, aligned);
|
||||
#endif
|
||||
|
||||
assert(aligned >= alloc);
|
||||
|
||||
if (aligned < alloc) /* rounding overflow */
|
||||
return NULL;
|
||||
|
||||
alloc = aligned;
|
||||
#ifdef DEBUG_ARRAY
|
||||
Log(LOG_DEBUG, "array_alloc(): changing size from %u to %u bytes.",
|
||||
a->allocated, aligned);
|
||||
#endif
|
||||
|
||||
tmp = realloc(a->mem, alloc);
|
||||
if (!tmp)
|
||||
return NULL;
|
||||
|
||||
a->mem = tmp;
|
||||
a->allocated = alloc;
|
||||
|
||||
assert(a->allocated > a->used);
|
||||
|
||||
memset(a->mem + a->used, 0, a->allocated - a->used);
|
||||
|
||||
a->used = alloc;
|
||||
}
|
||||
return a->mem + (pos * size);
|
||||
}
|
||||
|
||||
|
||||
/*return number of initialized ELEMS in a. */
|
||||
size_t
|
||||
array_length(const array * const a, size_t membersize)
|
||||
{
|
||||
assert(a != NULL);
|
||||
assert(membersize > 0);
|
||||
|
||||
if (array_UNUSABLE(a))
|
||||
return 0;
|
||||
|
||||
return membersize ? a->used / membersize : 0;
|
||||
}
|
||||
|
||||
|
||||
/* copy array src to array dest */
|
||||
bool
|
||||
array_copy(array * dest, const array * const src)
|
||||
{
|
||||
if (array_UNUSABLE(src))
|
||||
return false;
|
||||
|
||||
return array_copyb(dest, src->mem, src->used);
|
||||
}
|
||||
|
||||
|
||||
/* return false on failure (realloc failure, invalid src/dest array) */
|
||||
bool
|
||||
array_copyb(array * dest, const char *src, size_t len)
|
||||
{
|
||||
assert(dest != NULL);
|
||||
assert(src != NULL );
|
||||
|
||||
if (!src || !dest)
|
||||
return false;
|
||||
|
||||
array_trunc(dest);
|
||||
return array_catb(dest, src, len);
|
||||
}
|
||||
|
||||
|
||||
/* copy string to dest */
|
||||
bool
|
||||
array_copys(array * dest, const char *src)
|
||||
{
|
||||
return array_copyb(dest, src, strlen(src));
|
||||
}
|
||||
|
||||
|
||||
/* append len bytes from src to the array dest.
|
||||
return false if we could not append all bytes (realloc failure, invalid src/dest array) */
|
||||
bool
|
||||
array_catb(array * dest, const char *src, size_t len)
|
||||
{
|
||||
size_t tmp;
|
||||
size_t used;
|
||||
char *ptr;
|
||||
|
||||
assert(dest != NULL);
|
||||
assert(src != NULL);
|
||||
|
||||
if (!len)
|
||||
return true;
|
||||
|
||||
if (!src || !dest)
|
||||
return false;
|
||||
|
||||
used = dest->used;
|
||||
tmp = used + len;
|
||||
|
||||
if (tmp < used || tmp < len) /* integer overflow */
|
||||
return false;
|
||||
|
||||
if (!array_alloc(dest, 1, tmp))
|
||||
return false;
|
||||
|
||||
ptr = dest->mem;
|
||||
|
||||
assert(ptr != NULL);
|
||||
|
||||
#ifdef DEBUG_ARRAY
|
||||
Log(LOG_DEBUG,
|
||||
"array_catb(): appending %u bytes to array (now %u bytes in array).",
|
||||
len, tmp);
|
||||
#endif
|
||||
memcpy(ptr + used, src, len);
|
||||
dest->used = tmp;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/* append string to dest */
|
||||
bool
|
||||
array_cats(array * dest, const char *src)
|
||||
{
|
||||
return array_catb(dest, src, strlen(src));
|
||||
}
|
||||
|
||||
|
||||
/* append trailing NUL byte to array */
|
||||
bool
|
||||
array_cat0(array * a)
|
||||
{
|
||||
return array_catb(a, "", 1);
|
||||
}
|
||||
|
||||
|
||||
/* append trailing NUL byte to array, but do not count it. */
|
||||
bool
|
||||
array_cat0_temporary(array * a)
|
||||
{
|
||||
char *endpos = array_alloc(a, 1, array_bytes(a));
|
||||
if (!endpos)
|
||||
return false;
|
||||
|
||||
*endpos = '\0';
|
||||
return true;
|
||||
}
|
||||
|
||||
/* add contents of array src to array dest. */
|
||||
bool
|
||||
array_cat(array * dest, const array * const src)
|
||||
{
|
||||
if (array_UNUSABLE(src))
|
||||
return false;
|
||||
|
||||
return array_catb(dest, src->mem, src->used);
|
||||
}
|
||||
|
||||
|
||||
/* return pointer to the element at pos.
|
||||
return NULL if the array is unallocated, or if pos is larger than
|
||||
the number of elements stored int the array. */
|
||||
void *
|
||||
array_get(array * a, size_t membersize, size_t pos)
|
||||
{
|
||||
size_t totalsize;
|
||||
size_t posplus1 = pos + 1;
|
||||
|
||||
assert(membersize > 0);
|
||||
assert(a != NULL);
|
||||
|
||||
if (!posplus1 || array_UNUSABLE(a))
|
||||
return NULL;
|
||||
|
||||
if (!safemult_sizet(posplus1, membersize, &totalsize))
|
||||
return NULL;
|
||||
|
||||
if (a->allocated < totalsize)
|
||||
return NULL;
|
||||
|
||||
totalsize = pos * membersize;
|
||||
return a->mem + totalsize;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
array_free(array * a)
|
||||
{
|
||||
assert(a != NULL);
|
||||
#ifdef DEBUG_ARRAY
|
||||
Log(LOG_DEBUG,
|
||||
"array_free(): %u bytes free'd (%u bytes still used at time of free()).",
|
||||
a->allocated, a->used);
|
||||
#endif
|
||||
free(a->mem);
|
||||
a->mem = NULL;
|
||||
a->allocated = 0;
|
||||
a->used = 0;
|
||||
}
|
||||
|
||||
void
|
||||
array_free_wipe(array *a)
|
||||
{
|
||||
size_t bytes = a->allocated;
|
||||
if (bytes)
|
||||
memset(a->mem, 0, bytes);
|
||||
array_free(a);
|
||||
}
|
||||
|
||||
void *
|
||||
array_start(const array * const a)
|
||||
{
|
||||
assert(a != NULL);
|
||||
return a->mem;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
array_trunc(array * a)
|
||||
{
|
||||
assert(a != NULL);
|
||||
a->used = 0;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
array_truncate(array * a, size_t membersize, size_t len)
|
||||
{
|
||||
size_t newlen;
|
||||
assert(a != NULL);
|
||||
if (!safemult_sizet(membersize, len, &newlen))
|
||||
return;
|
||||
|
||||
if (newlen <= a->allocated)
|
||||
a->used = newlen;
|
||||
}
|
||||
|
||||
|
||||
/* move elements starting at pos to beginning of array */
|
||||
void
|
||||
array_moveleft(array * a, size_t membersize, size_t pos)
|
||||
{
|
||||
size_t bytepos;
|
||||
|
||||
assert(a != NULL);
|
||||
assert(membersize > 0);
|
||||
|
||||
if (!safemult_sizet(membersize, pos, &bytepos)) {
|
||||
a->used = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
if (!bytepos)
|
||||
return; /* nothing to do */
|
||||
|
||||
#ifdef DEBUG_ARRAY
|
||||
Log(LOG_DEBUG,
|
||||
"array_moveleft(): %u bytes used in array, starting at position %u.",
|
||||
a->used, bytepos);
|
||||
#endif
|
||||
if (a->used <= bytepos) {
|
||||
a->used = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
a->used -= bytepos;
|
||||
memmove(a->mem, a->mem + bytepos, a->used);
|
||||
}
|
||||
|
||||
/* -eof- */
|
101
src/ngircd/array.h
Normal file
101
src/ngircd/array.h
Normal file
@@ -0,0 +1,101 @@
|
||||
/*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
* Please read the file COPYING, README and AUTHORS for more information.
|
||||
*
|
||||
* libarray - dynamically allocate arrays.
|
||||
* Copyright (c) 2005 Florian Westphal (westphal@foo.fh-furtwangen.de)
|
||||
*
|
||||
* $Id: array.h,v 1.4 2005/08/30 13:36:32 fw Exp $
|
||||
*/
|
||||
|
||||
#ifndef array_h_included
|
||||
#define array_h_included
|
||||
|
||||
#include "portab.h"
|
||||
|
||||
typedef struct {
|
||||
char * mem;
|
||||
size_t allocated;
|
||||
size_t used;
|
||||
} array;
|
||||
|
||||
/* allocated: mem != NULL, used >= 0 && used <= allocated, allocated > 0
|
||||
unallocated: mem == NULL, allocated == 0, used == 0 */
|
||||
|
||||
#define array_unallocated(x) (array_bytes(x)==0)
|
||||
#define INIT_ARRAY { NULL, 0, 0 }
|
||||
|
||||
/* set all variables in a to 0 */
|
||||
extern void array_init PARAMS((array *a));
|
||||
|
||||
/* allocates space for at least nmemb+1 elements of size bytes each.
|
||||
return pointer to elem at pos, or NULL if realloc() fails */
|
||||
extern void * array_alloc PARAMS((array *a, size_t size, size_t pos));
|
||||
|
||||
/* returns the number of initialized BYTES in a. */
|
||||
#define array_bytes(array) ( (array)->used )
|
||||
|
||||
/* returns the number of initialized ELEMS in a. */
|
||||
extern size_t array_length PARAMS((const array* const a, size_t elemsize));
|
||||
|
||||
/* _copy functions: copy src to dest.
|
||||
return true if OK, else false (e. g. realloc failure, invalid src/dest
|
||||
array, ...). In that case dest is left unchanged. */
|
||||
|
||||
/* copy array src to dest */
|
||||
extern bool array_copy PARAMS((array* dest, const array* const src));
|
||||
|
||||
/* copy len bytes from src to array dest. */
|
||||
extern bool array_copyb PARAMS((array* dest, const char* src, size_t len));
|
||||
|
||||
/* copy string to dest */
|
||||
extern bool array_copys PARAMS((array* dest, const char* src));
|
||||
|
||||
/* _cat functions: append src to dest.
|
||||
return true if OK, else false (e. g. realloc failure, invalid src/dest
|
||||
array, ...). In that case dest is left unchanged. */
|
||||
|
||||
/* append len bytes from src to array dest. */
|
||||
extern bool array_catb PARAMS((array* dest, const char* src, size_t len));
|
||||
|
||||
/* append string to dest */
|
||||
extern bool array_cats PARAMS((array* dest, const char* src));
|
||||
|
||||
/* append NUL byte to dest */
|
||||
extern bool array_cat0 PARAMS((array* dest));
|
||||
|
||||
/* append NUL byte to dest, but do not count null byte */
|
||||
extern bool array_cat0_temporary PARAMS((array* dest));
|
||||
|
||||
/* append contents of array src to array dest. */
|
||||
extern bool array_cat PARAMS((array* dest, const array* const src));
|
||||
|
||||
/* return pointer to element at pos.
|
||||
return NULL if the array is unallocated or if pos is larger than the number
|
||||
of elements stored int the array. */
|
||||
extern void* array_get PARAMS((array* a, size_t membersize, size_t pos));
|
||||
|
||||
/* free the contents of this array. */
|
||||
extern void array_free PARAMS((array* a));
|
||||
|
||||
/* overwrite array with zeroes before free */
|
||||
extern void array_free_wipe PARAMS((array* a));
|
||||
|
||||
/* return pointer to first element in this array */
|
||||
extern void* array_start PARAMS((const array* const a));
|
||||
|
||||
/* reset this array (the memory is not free'd */
|
||||
extern void array_trunc PARAMS((array* a));
|
||||
|
||||
/* set number of used elements in this array to len */
|
||||
extern void array_truncate PARAMS((array* a, size_t membersize, size_t len));
|
||||
|
||||
/* move elements starting at pos to beginning of array */
|
||||
extern void array_moveleft PARAMS((array* a, size_t membersize, size_t pos));
|
||||
|
||||
#endif
|
||||
|
||||
/* -eof- */
|
1004
src/ngircd/channel.c
1004
src/ngircd/channel.c
File diff suppressed because it is too large
Load Diff
@@ -1,17 +1,14 @@
|
||||
/*
|
||||
* ngIRCd -- The Next Generation IRC Daemon
|
||||
* Copyright (c)2001,2002 by Alexander Barton (alex@barton.de)
|
||||
* Copyright (c)2001-2008 by Alexander Barton (alex@barton.de)
|
||||
*
|
||||
* Dieses Programm ist freie Software. Sie koennen es unter den Bedingungen
|
||||
* der GNU General Public License (GPL), wie von der Free Software Foundation
|
||||
* herausgegeben, weitergeben und/oder modifizieren, entweder unter Version 2
|
||||
* der Lizenz oder (wenn Sie es wuenschen) jeder spaeteren Version.
|
||||
* Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste
|
||||
* der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS.
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
* Please read the file COPYING, README and AUTHORS for more information.
|
||||
*
|
||||
* $Id: channel.h,v 1.21 2002/09/03 23:57:57 alex Exp $
|
||||
*
|
||||
* channel.h: Management der Channels (Header)
|
||||
* Channel management (header)
|
||||
*/
|
||||
|
||||
|
||||
@@ -21,15 +18,26 @@
|
||||
|
||||
#if defined(__channel_c__) | defined(S_SPLINT_S)
|
||||
|
||||
#include "lists.h"
|
||||
#include "defines.h"
|
||||
#include "array.h"
|
||||
|
||||
typedef struct _CHANNEL
|
||||
{
|
||||
struct _CHANNEL *next;
|
||||
CHAR name[CHANNEL_NAME_LEN]; /* Name des Channel */
|
||||
UINT32 hash; /* Hash ueber (kleingeschrieben) Namen */
|
||||
CHAR modes[CHANNEL_MODE_LEN]; /* Channel-Modes */
|
||||
CHAR topic[CHANNEL_TOPIC_LEN]; /* Topic des Channels */
|
||||
char name[CHANNEL_NAME_LEN]; /* Name of the channel */
|
||||
UINT32 hash; /* Hash of the (lowecase!) name */
|
||||
char modes[CHANNEL_MODE_LEN]; /* Channel modes */
|
||||
array topic; /* Topic of the channel */
|
||||
#ifndef STRICT_RFC
|
||||
time_t topic_time; /* Time when topic was set */
|
||||
char topic_who[CLIENT_NICK_LEN];/* Nickname of user that set topic */
|
||||
#endif
|
||||
char key[CLIENT_PASS_LEN]; /* Channel key ("password", mode "k" ) */
|
||||
unsigned long maxusers; /* Maximum number of members (mode "l") */
|
||||
struct list_head list_bans; /* list head of banned users */
|
||||
struct list_head list_invites; /* list head of invited users */
|
||||
array keyfile; /* Name of the channel key file */
|
||||
} CHANNEL;
|
||||
|
||||
typedef struct _CLIENT2CHAN
|
||||
@@ -37,7 +45,7 @@ typedef struct _CLIENT2CHAN
|
||||
struct _CLIENT2CHAN *next;
|
||||
CLIENT *client;
|
||||
CHANNEL *channel;
|
||||
CHAR modes[CHANNEL_MODE_LEN]; /* User-Modes in dem Channel */
|
||||
char modes[CHANNEL_MODE_LEN]; /* User-Modes in Channel */
|
||||
} CL2CHAN;
|
||||
|
||||
#else
|
||||
@@ -47,58 +55,85 @@ typedef POINTER CL2CHAN;
|
||||
|
||||
#endif
|
||||
|
||||
GLOBAL struct list_head *Channel_GetListBans PARAMS((CHANNEL *c));
|
||||
GLOBAL struct list_head *Channel_GetListInvites PARAMS((CHANNEL *c));
|
||||
|
||||
GLOBAL VOID Channel_Init PARAMS((VOID ));
|
||||
GLOBAL VOID Channel_InitPredefined PARAMS(( VOID ));
|
||||
GLOBAL VOID Channel_Exit PARAMS((VOID ));
|
||||
GLOBAL void Channel_Init PARAMS(( void ));
|
||||
GLOBAL void Channel_InitPredefined PARAMS(( void ));
|
||||
GLOBAL void Channel_Exit PARAMS(( void ));
|
||||
|
||||
GLOBAL BOOLEAN Channel_Join PARAMS((CLIENT *Client, CHAR *Name ));
|
||||
GLOBAL BOOLEAN Channel_Part PARAMS((CLIENT *Client, CLIENT *Origin, CHAR *Name, CHAR *Reason ));
|
||||
GLOBAL bool Channel_Join PARAMS(( CLIENT *Client, char *Name ));
|
||||
GLOBAL bool Channel_Part PARAMS(( CLIENT *Client, CLIENT *Origin, const char *Name, const char *Reason ));
|
||||
|
||||
GLOBAL VOID Channel_Quit PARAMS((CLIENT *Client, CHAR *Reason ));
|
||||
GLOBAL void Channel_Quit PARAMS(( CLIENT *Client, char *Reason ));
|
||||
|
||||
GLOBAL VOID Channel_Kick PARAMS(( CLIENT *Client, CLIENT *Origin, CHAR *Name, CHAR *Reason ));
|
||||
GLOBAL void Channel_Kick PARAMS((CLIENT *Peer, CLIENT *Target, CLIENT *Origin,
|
||||
const char *Name, const char *Reason));
|
||||
|
||||
GLOBAL INT Channel_Count PARAMS((VOID ));
|
||||
GLOBAL INT Channel_MemberCount PARAMS((CHANNEL *Chan ));
|
||||
GLOBAL unsigned long Channel_Count PARAMS(( void ));
|
||||
GLOBAL unsigned long Channel_MemberCount PARAMS(( CHANNEL *Chan ));
|
||||
GLOBAL int Channel_CountForUser PARAMS(( CLIENT *Client ));
|
||||
|
||||
GLOBAL CHAR *Channel_Name PARAMS((CHANNEL *Chan ));
|
||||
GLOBAL CHAR *Channel_Modes PARAMS((CHANNEL *Chan ));
|
||||
GLOBAL CHAR *Channel_Topic PARAMS((CHANNEL *Chan ));
|
||||
GLOBAL const char *Channel_Name PARAMS(( const CHANNEL *Chan ));
|
||||
GLOBAL char *Channel_Modes PARAMS(( CHANNEL *Chan ));
|
||||
GLOBAL char *Channel_Topic PARAMS(( CHANNEL *Chan ));
|
||||
GLOBAL char *Channel_Key PARAMS(( CHANNEL *Chan ));
|
||||
GLOBAL unsigned long Channel_MaxUsers PARAMS(( CHANNEL *Chan ));
|
||||
|
||||
GLOBAL VOID Channel_SetTopic PARAMS((CHANNEL *Chan, CHAR *Topic ));
|
||||
GLOBAL VOID Channel_SetModes PARAMS((CHANNEL *Chan, CHAR *Modes ));
|
||||
GLOBAL void Channel_SetTopic PARAMS(( CHANNEL *Chan, CLIENT *Client, const char *Topic ));
|
||||
GLOBAL void Channel_SetModes PARAMS(( CHANNEL *Chan, char *Modes ));
|
||||
GLOBAL void Channel_SetKey PARAMS(( CHANNEL *Chan, const char *Key ));
|
||||
GLOBAL void Channel_SetMaxUsers PARAMS(( CHANNEL *Chan, unsigned long Count ));
|
||||
|
||||
GLOBAL CHANNEL *Channel_Search PARAMS((CHAR *Name ));
|
||||
GLOBAL CHANNEL *Channel_Search PARAMS(( const char *Name ));
|
||||
|
||||
GLOBAL CHANNEL *Channel_First PARAMS((VOID ));
|
||||
GLOBAL CHANNEL *Channel_Next PARAMS((CHANNEL *Chan ));
|
||||
GLOBAL CHANNEL *Channel_First PARAMS(( void ));
|
||||
GLOBAL CHANNEL *Channel_Next PARAMS(( CHANNEL *Chan ));
|
||||
|
||||
GLOBAL CL2CHAN *Channel_FirstMember PARAMS((CHANNEL *Chan ));
|
||||
GLOBAL CL2CHAN *Channel_NextMember PARAMS((CHANNEL *Chan, CL2CHAN *Cl2Chan ));
|
||||
GLOBAL CL2CHAN *Channel_FirstChannelOf PARAMS((CLIENT *Client ));
|
||||
GLOBAL CL2CHAN *Channel_NextChannelOf PARAMS((CLIENT *Client, CL2CHAN *Cl2Chan ));
|
||||
GLOBAL CL2CHAN *Channel_FirstMember PARAMS(( CHANNEL *Chan ));
|
||||
GLOBAL CL2CHAN *Channel_NextMember PARAMS(( CHANNEL *Chan, CL2CHAN *Cl2Chan ));
|
||||
GLOBAL CL2CHAN *Channel_FirstChannelOf PARAMS(( CLIENT *Client ));
|
||||
GLOBAL CL2CHAN *Channel_NextChannelOf PARAMS(( CLIENT *Client, CL2CHAN *Cl2Chan ));
|
||||
|
||||
GLOBAL CLIENT *Channel_GetClient PARAMS((CL2CHAN *Cl2Chan ));
|
||||
GLOBAL CHANNEL *Channel_GetChannel PARAMS((CL2CHAN *Cl2Chan ));
|
||||
GLOBAL CLIENT *Channel_GetClient PARAMS(( CL2CHAN *Cl2Chan ));
|
||||
GLOBAL CHANNEL *Channel_GetChannel PARAMS(( CL2CHAN *Cl2Chan ));
|
||||
|
||||
GLOBAL BOOLEAN Channel_IsValidName PARAMS((CHAR *Name ));
|
||||
GLOBAL bool Channel_IsValidName PARAMS(( const char *Name ));
|
||||
|
||||
GLOBAL BOOLEAN Channel_ModeAdd PARAMS((CHANNEL *Chan, CHAR Mode ));
|
||||
GLOBAL BOOLEAN Channel_ModeDel PARAMS((CHANNEL *Chan, CHAR Mode ));
|
||||
GLOBAL bool Channel_ModeAdd PARAMS(( CHANNEL *Chan, char Mode ));
|
||||
GLOBAL bool Channel_ModeDel PARAMS(( CHANNEL *Chan, char Mode ));
|
||||
|
||||
GLOBAL BOOLEAN Channel_UserModeAdd PARAMS((CHANNEL *Chan, CLIENT *Client, CHAR Mode ));
|
||||
GLOBAL BOOLEAN Channel_UserModeDel PARAMS((CHANNEL *Chan, CLIENT *Client, CHAR Mode ));
|
||||
GLOBAL CHAR *Channel_UserModes PARAMS((CHANNEL *Chan, CLIENT *Client ));
|
||||
GLOBAL bool Channel_UserModeAdd PARAMS(( CHANNEL *Chan, CLIENT *Client, char Mode ));
|
||||
GLOBAL bool Channel_UserModeDel PARAMS(( CHANNEL *Chan, CLIENT *Client, char Mode ));
|
||||
GLOBAL char *Channel_UserModes PARAMS(( CHANNEL *Chan, CLIENT *Client ));
|
||||
|
||||
GLOBAL BOOLEAN Channel_IsMemberOf PARAMS((CHANNEL *Chan, CLIENT *Client ));
|
||||
GLOBAL bool Channel_IsMemberOf PARAMS(( CHANNEL *Chan, CLIENT *Client ));
|
||||
|
||||
GLOBAL BOOLEAN Channel_Write PARAMS((CHANNEL *Chan, CLIENT *From, CLIENT *Client, CHAR *Text ));
|
||||
GLOBAL bool Channel_Write PARAMS((CHANNEL *Chan, CLIENT *From, CLIENT *Client,
|
||||
const char *Command, bool SendErrors,
|
||||
const char *Text));
|
||||
|
||||
GLOBAL CHANNEL *Channel_Create PARAMS((CHAR *Name ));
|
||||
GLOBAL CHANNEL *Channel_Create PARAMS(( const char *Name ));
|
||||
|
||||
#ifndef STRICT_RFC
|
||||
GLOBAL unsigned int Channel_TopicTime PARAMS(( CHANNEL *Chan ));
|
||||
GLOBAL char *Channel_TopicWho PARAMS(( CHANNEL *Chan ));
|
||||
#endif
|
||||
|
||||
GLOBAL bool Channel_AddInvite PARAMS((CHANNEL *c, const char *Mask, bool OnlyOnce ));
|
||||
GLOBAL bool Channel_AddBan PARAMS((CHANNEL *c, const char *Mask ));
|
||||
|
||||
GLOBAL bool Channel_ShowBans PARAMS((CLIENT *client, CHANNEL *c));
|
||||
GLOBAL bool Channel_ShowInvites PARAMS((CLIENT *client, CHANNEL *c));
|
||||
|
||||
GLOBAL void Channel_LogServer PARAMS((char *msg));
|
||||
|
||||
GLOBAL bool Channel_CheckKey PARAMS((CHANNEL *Chan, CLIENT *Client,
|
||||
const char *Key));
|
||||
|
||||
#define Channel_IsLocal(c) (Channel_Name(c)[0] == '&')
|
||||
#define Channel_IsModeless(c) (Channel_Name(c)[0] == '+')
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
/* -eof- */
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -1,60 +1,54 @@
|
||||
/*
|
||||
* ngIRCd -- The Next Generation IRC Daemon
|
||||
* Copyright (c)2001,2002 by Alexander Barton (alex@barton.de)
|
||||
* Copyright (c)2001-2008 Alexander Barton (alex@barton.de)
|
||||
*
|
||||
* Dieses Programm ist freie Software. Sie koennen es unter den Bedingungen
|
||||
* der GNU General Public License (GPL), wie von der Free Software Foundation
|
||||
* herausgegeben, weitergeben und/oder modifizieren, entweder unter Version 2
|
||||
* der Lizenz oder (wenn Sie es wuenschen) jeder spaeteren Version.
|
||||
* Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste
|
||||
* der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS.
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
* Please read the file COPYING, README and AUTHORS for more information.
|
||||
*
|
||||
* $Id: client.h,v 1.29 2002/09/03 18:54:31 alex Exp $
|
||||
*
|
||||
* client.h: Konfiguration des ngircd (Header)
|
||||
* Client management (header)
|
||||
*/
|
||||
|
||||
|
||||
#ifndef __client_h__
|
||||
#define __client_h__
|
||||
|
||||
#define CLIENT_UNKNOWN 1 /* connection of unknown type */
|
||||
#define CLIENT_GOTPASS 2 /* client did send PASS */
|
||||
#define CLIENT_GOTNICK 4 /* client did send NICK */
|
||||
#define CLIENT_GOTUSER 8 /* client did send USER */
|
||||
#define CLIENT_USER 16 /* client is an IRC user */
|
||||
#define CLIENT_SERVER 32 /* client is a server */
|
||||
#define CLIENT_SERVICE 64 /* client is a service */
|
||||
#define CLIENT_UNKNOWNSERVER 128 /* unregistered server connection */
|
||||
#define CLIENT_GOTPASS_2813 256 /* client did send PASS, RFC 2813 style */
|
||||
|
||||
typedef enum
|
||||
{
|
||||
CLIENT_UNKNOWN, /* Verbindung mit (noch) unbekanntem Typ */
|
||||
CLIENT_GOTPASS, /* Client hat PASS gesendet */
|
||||
CLIENT_GOTNICK, /* Client hat NICK gesendet */
|
||||
CLIENT_GOTUSER, /* Client hat USER gesendet */
|
||||
CLIENT_USER, /* Client ist ein Benutzer (USER wurde gesendet) */
|
||||
CLIENT_UNKNOWNSERVER, /* unregistrierte Server-Verbindung */
|
||||
CLIENT_GOTPASSSERVER, /* Client hat PASS nach "Server-Art" gesendet */
|
||||
CLIENT_SERVER, /* Client ist ein Server */
|
||||
CLIENT_SERVICE /* Client ist ein Service */
|
||||
} CLIENT_TYPE;
|
||||
|
||||
|
||||
#if defined(__client_c__) | defined(S_SPLINT_S)
|
||||
#define CLIENT_TYPE int
|
||||
|
||||
#include "defines.h"
|
||||
|
||||
#if defined(__client_c__) | defined(S_SPLINT_S)
|
||||
|
||||
typedef struct _CLIENT
|
||||
{
|
||||
CHAR id[CLIENT_ID_LEN]; /* Nick (User) bzw. ID (Server) */
|
||||
UINT32 hash; /* Hash ueber die (kleingeschriebene) ID */
|
||||
POINTER *next; /* Zeiger auf naechste Client-Struktur */
|
||||
CLIENT_TYPE type; /* Typ des Client, vgl. CLIENT_TYPE */
|
||||
CONN_ID conn_id; /* ID der Connection (wenn lokal) bzw. NONE (remote) */
|
||||
struct _CLIENT *introducer; /* ID des Servers, der die Verbindung hat */
|
||||
struct _CLIENT *topserver; /* Toplevel-Servers (nur gueltig, wenn Client ein Server ist) */
|
||||
CHAR pwd[CLIENT_PASS_LEN]; /* Passwort, welches der Client angegeben hat */
|
||||
CHAR host[CLIENT_HOST_LEN]; /* Hostname des Client */
|
||||
CHAR user[CLIENT_USER_LEN]; /* Benutzername ("Login") */
|
||||
CHAR info[CLIENT_INFO_LEN]; /* Langer Benutzername (User) bzw. Infotext (Server) */
|
||||
CHAR modes[CLIENT_MODE_LEN]; /* Client Modes */
|
||||
INT hops, token, mytoken; /* "Hops" und "Token" (-> SERVER-Befehl) */
|
||||
BOOLEAN oper_by_me; /* IRC-Operator-Status durch diesen Server? */
|
||||
CHAR away[CLIENT_AWAY_LEN]; /* AWAY-Text, wenn Mode 'a' gesetzt */
|
||||
CHAR flags[CLIENT_FLAGS_LEN]; /* Flags des Client (aktuell nur bei Servern) */
|
||||
time_t starttime; /* Start time of link */
|
||||
char id[CLIENT_ID_LEN]; /* nick (user) / ID (server) */
|
||||
UINT32 hash; /* hash of lower-case ID */
|
||||
POINTER *next; /* pointer to next client structure */
|
||||
CLIENT_TYPE type; /* type of client, see CLIENT_xxx */
|
||||
CONN_ID conn_id; /* ID of the connection (if local) or NONE (remote) */
|
||||
struct _CLIENT *introducer; /* ID of the servers which the client is connected to */
|
||||
struct _CLIENT *topserver; /* toplevel servers (only valid if client is a server) */
|
||||
char pwd[CLIENT_PASS_LEN]; /* password received of the client */
|
||||
char host[CLIENT_HOST_LEN]; /* hostname of the client */
|
||||
char user[CLIENT_USER_LEN]; /* user name ("login") */
|
||||
char info[CLIENT_INFO_LEN]; /* long user name (user) / info text (server) */
|
||||
char modes[CLIENT_MODE_LEN]; /* client modes */
|
||||
int hops, token, mytoken; /* "hops" and "Token" (see SERVER command) */
|
||||
bool oper_by_me; /* client is local IRC operator on this server? */
|
||||
char away[CLIENT_AWAY_LEN]; /* AWAY text (valid if mode 'a' is set) */
|
||||
char flags[CLIENT_FLAGS_LEN]; /* flags of the client */
|
||||
} CLIENT;
|
||||
|
||||
#else
|
||||
@@ -64,79 +58,96 @@ typedef POINTER CLIENT;
|
||||
#endif
|
||||
|
||||
|
||||
GLOBAL VOID Client_Init PARAMS((VOID ));
|
||||
GLOBAL VOID Client_Exit PARAMS((VOID ));
|
||||
typedef struct _WHOWAS
|
||||
{
|
||||
time_t time; /* time stamp of entry or 0 if unused */
|
||||
char id[CLIENT_NICK_LEN]; /* client nick name */
|
||||
char host[CLIENT_HOST_LEN]; /* hostname of the client */
|
||||
char user[CLIENT_USER_LEN]; /* user name ("login") */
|
||||
char info[CLIENT_INFO_LEN]; /* long user name */
|
||||
char server[CLIENT_HOST_LEN]; /* server name */
|
||||
} WHOWAS;
|
||||
|
||||
GLOBAL CLIENT *Client_NewLocal PARAMS((CONN_ID Idx, CHAR *Hostname, INT Type, BOOLEAN Idented ));
|
||||
GLOBAL CLIENT *Client_NewRemoteServer PARAMS((CLIENT *Introducer, CHAR *Hostname, CLIENT *TopServer, INT Hops, INT Token, CHAR *Info, BOOLEAN Idented ));
|
||||
GLOBAL CLIENT *Client_NewRemoteUser PARAMS((CLIENT *Introducer, CHAR *Nick, INT Hops, CHAR *User, CHAR *Hostname, INT Token, CHAR *Modes, CHAR *Info, BOOLEAN Idented ));
|
||||
GLOBAL CLIENT *Client_New PARAMS((CONN_ID Idx, CLIENT *Introducer, CLIENT *TopServer, INT Type, CHAR *ID, CHAR *User, CHAR *Hostname, CHAR *Info, INT Hops, INT Token, CHAR *Modes, BOOLEAN Idented ));
|
||||
|
||||
GLOBAL VOID Client_Destroy PARAMS((CLIENT *Client, CHAR *LogMsg, CHAR *FwdMsg, BOOLEAN SendQuit ));
|
||||
GLOBAL void Client_Init PARAMS(( void ));
|
||||
GLOBAL void Client_Exit PARAMS(( void ));
|
||||
|
||||
GLOBAL CLIENT *Client_ThisServer PARAMS((VOID ));
|
||||
GLOBAL CLIENT *Client_NewLocal PARAMS(( CONN_ID Idx, char *Hostname, int Type, bool Idented ));
|
||||
GLOBAL CLIENT *Client_NewRemoteServer PARAMS(( CLIENT *Introducer, char *Hostname, CLIENT *TopServer, int Hops, int Token, char *Info, bool Idented ));
|
||||
GLOBAL CLIENT *Client_NewRemoteUser PARAMS(( CLIENT *Introducer, char *Nick, int Hops, char *User, char *Hostname, int Token, char *Modes, char *Info, bool Idented ));
|
||||
|
||||
GLOBAL CLIENT *Client_GetFromConn PARAMS((CONN_ID Idx ));
|
||||
GLOBAL CLIENT *Client_GetFromToken PARAMS((CLIENT *Client, INT Token ));
|
||||
GLOBAL void Client_Destroy PARAMS(( CLIENT *Client, char *LogMsg, char *FwdMsg, bool SendQuit ));
|
||||
|
||||
GLOBAL CLIENT *Client_Search PARAMS((CHAR *ID ));
|
||||
GLOBAL CLIENT *Client_First PARAMS((VOID ));
|
||||
GLOBAL CLIENT *Client_Next PARAMS((CLIENT *c ));
|
||||
GLOBAL CLIENT *Client_ThisServer PARAMS(( void ));
|
||||
|
||||
GLOBAL INT Client_Type PARAMS((CLIENT *Client ));
|
||||
GLOBAL CONN_ID Client_Conn PARAMS((CLIENT *Client ));
|
||||
GLOBAL CHAR *Client_ID PARAMS((CLIENT *Client ));
|
||||
GLOBAL CHAR *Client_Mask PARAMS((CLIENT *Client ));
|
||||
GLOBAL CHAR *Client_Info PARAMS((CLIENT *Client ));
|
||||
GLOBAL CHAR *Client_User PARAMS((CLIENT *Client ));
|
||||
GLOBAL CHAR *Client_Hostname PARAMS((CLIENT *Client ));
|
||||
GLOBAL CHAR *Client_Password PARAMS((CLIENT *Client ));
|
||||
GLOBAL CHAR *Client_Modes PARAMS((CLIENT *Client ));
|
||||
GLOBAL CHAR *Client_Flags PARAMS((CLIENT *Client ));
|
||||
GLOBAL CLIENT *Client_Introducer PARAMS((CLIENT *Client ));
|
||||
GLOBAL BOOLEAN Client_OperByMe PARAMS((CLIENT *Client ));
|
||||
GLOBAL INT Client_Hops PARAMS((CLIENT *Client ));
|
||||
GLOBAL INT Client_Token PARAMS((CLIENT *Client ));
|
||||
GLOBAL INT Client_MyToken PARAMS((CLIENT *Client ));
|
||||
GLOBAL CLIENT *Client_TopServer PARAMS((CLIENT *Client ));
|
||||
GLOBAL CLIENT *Client_NextHop PARAMS((CLIENT *Client ));
|
||||
GLOBAL CHAR *Client_Away PARAMS((CLIENT *Client ));
|
||||
GLOBAL CLIENT *Client_GetFromToken PARAMS(( CLIENT *Client, int Token ));
|
||||
|
||||
GLOBAL BOOLEAN Client_HasMode PARAMS((CLIENT *Client, CHAR Mode ));
|
||||
GLOBAL CLIENT *Client_Search PARAMS(( const char *ID ));
|
||||
GLOBAL CLIENT *Client_First PARAMS(( void ));
|
||||
GLOBAL CLIENT *Client_Next PARAMS(( CLIENT *c ));
|
||||
|
||||
GLOBAL VOID Client_SetHostname PARAMS((CLIENT *Client, CHAR *Hostname ));
|
||||
GLOBAL VOID Client_SetID PARAMS((CLIENT *Client, CHAR *Nick ));
|
||||
GLOBAL VOID Client_SetUser PARAMS((CLIENT *Client, CHAR *User, BOOLEAN Idented ));
|
||||
GLOBAL VOID Client_SetInfo PARAMS((CLIENT *Client, CHAR *Info ));
|
||||
GLOBAL VOID Client_SetPassword PARAMS((CLIENT *Client, CHAR *Pwd ));
|
||||
GLOBAL VOID Client_SetType PARAMS((CLIENT *Client, INT Type ));
|
||||
GLOBAL VOID Client_SetHops PARAMS((CLIENT *Client, INT Hops ));
|
||||
GLOBAL VOID Client_SetToken PARAMS((CLIENT *Client, INT Token ));
|
||||
GLOBAL VOID Client_SetOperByMe PARAMS((CLIENT *Client, BOOLEAN OperByMe ));
|
||||
GLOBAL VOID Client_SetModes PARAMS((CLIENT *Client, CHAR *Modes ));
|
||||
GLOBAL VOID Client_SetFlags PARAMS((CLIENT *Client, CHAR *Flags ));
|
||||
GLOBAL VOID Client_SetIntroducer PARAMS((CLIENT *Client, CLIENT *Introducer ));
|
||||
GLOBAL VOID Client_SetAway PARAMS((CLIENT *Client, CHAR *Txt ));
|
||||
GLOBAL int Client_Type PARAMS(( CLIENT *Client ));
|
||||
GLOBAL CONN_ID Client_Conn PARAMS(( CLIENT *Client ));
|
||||
GLOBAL char *Client_ID PARAMS(( CLIENT *Client ));
|
||||
GLOBAL char *Client_Mask PARAMS(( CLIENT *Client ));
|
||||
GLOBAL char *Client_Info PARAMS(( CLIENT *Client ));
|
||||
GLOBAL char *Client_User PARAMS(( CLIENT *Client ));
|
||||
GLOBAL char *Client_Hostname PARAMS(( CLIENT *Client ));
|
||||
GLOBAL char *Client_Password PARAMS(( CLIENT *Client ));
|
||||
GLOBAL char *Client_Modes PARAMS(( CLIENT *Client ));
|
||||
GLOBAL char *Client_Flags PARAMS(( CLIENT *Client ));
|
||||
GLOBAL CLIENT *Client_Introducer PARAMS(( CLIENT *Client ));
|
||||
GLOBAL bool Client_OperByMe PARAMS(( CLIENT *Client ));
|
||||
GLOBAL int Client_Hops PARAMS(( CLIENT *Client ));
|
||||
GLOBAL int Client_Token PARAMS(( CLIENT *Client ));
|
||||
GLOBAL int Client_MyToken PARAMS(( CLIENT *Client ));
|
||||
GLOBAL CLIENT *Client_TopServer PARAMS(( CLIENT *Client ));
|
||||
GLOBAL CLIENT *Client_NextHop PARAMS(( CLIENT *Client ));
|
||||
GLOBAL char *Client_Away PARAMS(( CLIENT *Client ));
|
||||
GLOBAL time_t Client_StartTime PARAMS(( CLIENT *Client ));
|
||||
|
||||
GLOBAL BOOLEAN Client_ModeAdd PARAMS((CLIENT *Client, CHAR Mode ));
|
||||
GLOBAL BOOLEAN Client_ModeDel PARAMS((CLIENT *Client, CHAR Mode ));
|
||||
GLOBAL bool Client_HasMode PARAMS(( CLIENT *Client, char Mode ));
|
||||
|
||||
GLOBAL BOOLEAN Client_CheckNick PARAMS((CLIENT *Client, CHAR *Nick ));
|
||||
GLOBAL BOOLEAN Client_CheckID PARAMS((CLIENT *Client, CHAR *ID ));
|
||||
GLOBAL void Client_SetHostname PARAMS(( CLIENT *Client, char *Hostname ));
|
||||
GLOBAL void Client_SetID PARAMS(( CLIENT *Client, char *Nick ));
|
||||
GLOBAL void Client_SetUser PARAMS(( CLIENT *Client, char *User, bool Idented ));
|
||||
GLOBAL void Client_SetInfo PARAMS(( CLIENT *Client, char *Info ));
|
||||
GLOBAL void Client_SetPassword PARAMS(( CLIENT *Client, char *Pwd ));
|
||||
GLOBAL void Client_SetType PARAMS(( CLIENT *Client, int Type ));
|
||||
GLOBAL void Client_SetHops PARAMS(( CLIENT *Client, int Hops ));
|
||||
GLOBAL void Client_SetToken PARAMS(( CLIENT *Client, int Token ));
|
||||
GLOBAL void Client_SetOperByMe PARAMS(( CLIENT *Client, bool OperByMe ));
|
||||
GLOBAL void Client_SetModes PARAMS(( CLIENT *Client, char *Modes ));
|
||||
GLOBAL void Client_SetFlags PARAMS(( CLIENT *Client, char *Flags ));
|
||||
GLOBAL void Client_SetIntroducer PARAMS(( CLIENT *Client, CLIENT *Introducer ));
|
||||
GLOBAL void Client_SetAway PARAMS(( CLIENT *Client, char *Txt ));
|
||||
|
||||
GLOBAL INT Client_UserCount PARAMS((VOID ));
|
||||
GLOBAL INT Client_ServiceCount PARAMS((VOID ));
|
||||
GLOBAL INT Client_ServerCount PARAMS((VOID ));
|
||||
GLOBAL INT Client_OperCount PARAMS((VOID ));
|
||||
GLOBAL INT Client_UnknownCount PARAMS((VOID ));
|
||||
GLOBAL INT Client_MyUserCount PARAMS((VOID ));
|
||||
GLOBAL INT Client_MyServiceCount PARAMS((VOID ));
|
||||
GLOBAL INT Client_MyServerCount PARAMS((VOID ));
|
||||
GLOBAL bool Client_ModeAdd PARAMS(( CLIENT *Client, char Mode ));
|
||||
GLOBAL bool Client_ModeDel PARAMS(( CLIENT *Client, char Mode ));
|
||||
|
||||
GLOBAL BOOLEAN Client_IsValidNick PARAMS((CHAR *Nick ));
|
||||
GLOBAL bool Client_CheckNick PARAMS(( CLIENT *Client, char *Nick ));
|
||||
GLOBAL bool Client_CheckID PARAMS(( CLIENT *Client, char *ID ));
|
||||
|
||||
GLOBAL long Client_UserCount PARAMS(( void ));
|
||||
GLOBAL long Client_ServiceCount PARAMS(( void ));
|
||||
GLOBAL long Client_ServerCount PARAMS(( void ));
|
||||
GLOBAL unsigned long Client_OperCount PARAMS(( void ));
|
||||
GLOBAL unsigned long Client_UnknownCount PARAMS(( void ));
|
||||
GLOBAL long Client_MyUserCount PARAMS(( void ));
|
||||
GLOBAL long Client_MyServiceCount PARAMS(( void ));
|
||||
GLOBAL unsigned long Client_MyServerCount PARAMS(( void ));
|
||||
GLOBAL long Client_MaxUserCount PARAMS(( void ));
|
||||
GLOBAL long Client_MyMaxUserCount PARAMS(( void ));
|
||||
|
||||
GLOBAL bool Client_IsValidNick PARAMS(( const char *Nick ));
|
||||
|
||||
GLOBAL WHOWAS *Client_GetWhowas PARAMS(( void ));
|
||||
GLOBAL int Client_GetLastWhowasIndex PARAMS(( void ));
|
||||
|
||||
GLOBAL void Client_RegisterWhowas PARAMS(( CLIENT *Client ));
|
||||
|
||||
GLOBAL char * Client_TypeText PARAMS((CLIENT *Client));
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
/* -eof- */
|
||||
|
47
src/ngircd/conf-ssl.h
Normal file
47
src/ngircd/conf-ssl.h
Normal file
@@ -0,0 +1,47 @@
|
||||
/*
|
||||
* ngIRCd -- The Next Generation IRC Daemon
|
||||
* SSL defines.
|
||||
*/
|
||||
|
||||
#ifndef conf_ssl_h
|
||||
#define conf_ssl_h
|
||||
|
||||
#ifdef HAVE_LIBSSL
|
||||
#define SSL_SUPPORT
|
||||
#include <openssl/ssl.h>
|
||||
#endif
|
||||
#ifdef HAVE_LIBGNUTLS
|
||||
#define SSL_SUPPORT
|
||||
#include <gnutls/gnutls.h>
|
||||
#ifndef LIBGNUTLS_VERSION_MAJOR
|
||||
#define gnutls_certificate_credentials_t gnutls_certificate_credentials
|
||||
#define gnutls_cipher_algorithm_t gnutls_cipher_algorithm
|
||||
#define gnutls_datum_t gnutls_datum
|
||||
#define gnutls_dh_params_t gnutls_dh_params
|
||||
#define gnutls_session_t gnutls_session
|
||||
#define gnutls_transport_ptr_t gnutls_transport_ptr
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef SSL_SUPPORT
|
||||
struct ConnSSL_State {
|
||||
#ifdef HAVE_LIBSSL
|
||||
SSL *ssl;
|
||||
#endif
|
||||
#ifdef HAVE_LIBGNUTLS
|
||||
gnutls_session gnutls_session;
|
||||
void *cookie; /* pointer to server configuration structure
|
||||
(for outgoing connections), or NULL. */
|
||||
#endif
|
||||
};
|
||||
|
||||
bool
|
||||
ConnSSL_InitLibrary(void);
|
||||
#else
|
||||
static inline bool
|
||||
ConnSSL_InitLibrary(void) { return true; }
|
||||
#endif /* SSL_SUPPORT */
|
||||
|
||||
#endif /* conf_ssl_h */
|
||||
|
||||
/* -eof- */
|
1470
src/ngircd/conf.c
1470
src/ngircd/conf.c
File diff suppressed because it is too large
Load Diff
@@ -1,17 +1,14 @@
|
||||
/*
|
||||
* ngIRCd -- The Next Generation IRC Daemon
|
||||
* Copyright (c)2001,2002 by Alexander Barton (alex@barton.de)
|
||||
* Copyright (c)2001-2008 Alexander Barton (alex@barton.de)
|
||||
*
|
||||
* Dieses Programm ist freie Software. Sie koennen es unter den Bedingungen
|
||||
* der GNU General Public License (GPL), wie von der Free Software Foundation
|
||||
* herausgegeben, weitergeben und/oder modifizieren, entweder unter Version 2
|
||||
* der Lizenz oder (wenn Sie es wuenschen) jeder spaeteren Version.
|
||||
* Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste
|
||||
* der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS.
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
* Please read the file COPYING, README and AUTHORS for more information.
|
||||
*
|
||||
* $Id: conf.h,v 1.19 2002/09/16 09:13:40 alex Exp $
|
||||
*
|
||||
* conf.h: Konfiguration des ngircd (Header)
|
||||
* Configuration management (header)
|
||||
*/
|
||||
|
||||
|
||||
@@ -21,83 +18,174 @@
|
||||
#include <time.h>
|
||||
|
||||
#include "defines.h"
|
||||
#include "array.h"
|
||||
#include "portab.h"
|
||||
#include "tool.h"
|
||||
#include "ng_ipaddr.h"
|
||||
#include "resolve.h"
|
||||
#include "conf-ssl.h"
|
||||
|
||||
|
||||
typedef struct _Conf_Oper
|
||||
{
|
||||
CHAR name[CLIENT_PASS_LEN]; /* Name (ID) des IRC-OPs */
|
||||
CHAR pwd[CLIENT_PASS_LEN]; /* Passwort */
|
||||
char name[CLIENT_PASS_LEN]; /* Name (ID) of IRC operator */
|
||||
char pwd[CLIENT_PASS_LEN]; /* Password */
|
||||
char *mask;
|
||||
} CONF_OPER;
|
||||
|
||||
typedef struct _Conf_Server
|
||||
{
|
||||
CHAR host[HOST_LEN]; /* Hostname */
|
||||
CHAR ip[16]; /* IP-Adresse (von Resolver) */
|
||||
CHAR name[CLIENT_ID_LEN]; /* IRC-Client-ID */
|
||||
CHAR pwd[CLIENT_PASS_LEN]; /* Passwort */
|
||||
INT port; /* Server-Port */
|
||||
INT group; /* Gruppe des Servers */
|
||||
time_t lasttry; /* Letzter Connect-Versuch */
|
||||
RES_STAT *res_stat; /* Status des Resolver */
|
||||
char host[HOST_LEN]; /* Hostname */
|
||||
char name[CLIENT_ID_LEN]; /* IRC-Client-ID */
|
||||
char pwd_in[CLIENT_PASS_LEN]; /* Password which must be received */
|
||||
char pwd_out[CLIENT_PASS_LEN]; /* Password to send to peer */
|
||||
UINT16 port; /* Server port */
|
||||
int group; /* Group of server */
|
||||
time_t lasttry; /* Last connect attempt */
|
||||
RES_STAT res_stat; /* Status of the resolver */
|
||||
int flags; /* Flags */
|
||||
CONN_ID conn_id; /* ID of server connection or NONE */
|
||||
ng_ipaddr_t bind_addr; /* source address to use for outgoing
|
||||
connections */
|
||||
ng_ipaddr_t dst_addr[2]; /* list of addresses to connect to */
|
||||
#ifdef SSL_SUPPORT
|
||||
bool SSLConnect; /* connect() using SSL? */
|
||||
#endif
|
||||
char svs_mask[CLIENT_ID_LEN]; /* Mask of nick names that are
|
||||
services */
|
||||
} CONF_SERVER;
|
||||
|
||||
typedef struct _Conf_Channel
|
||||
{
|
||||
CHAR name[CHANNEL_NAME_LEN]; /* Name des Channel */
|
||||
CHAR modes[CHANNEL_MODE_LEN]; /* Channel-Modes */
|
||||
CHAR topic[CHANNEL_TOPIC_LEN]; /* Topic des Channels */
|
||||
} CONF_CHANNEL;
|
||||
|
||||
#ifdef SSL_SUPPORT
|
||||
struct SSLOptions {
|
||||
char *KeyFile;
|
||||
char *CertFile;
|
||||
char *DHFile;
|
||||
array ListenPorts;
|
||||
array KeyFilePassword;
|
||||
};
|
||||
#endif
|
||||
|
||||
|
||||
/* Name ("Nick") des Servers */
|
||||
GLOBAL CHAR Conf_ServerName[CLIENT_ID_LEN];
|
||||
struct Conf_Channel {
|
||||
char name[CHANNEL_NAME_LEN]; /* Name of the channel */
|
||||
char modes[CHANNEL_MODE_LEN]; /* Initial channel modes */
|
||||
char key[CLIENT_PASS_LEN]; /* Channel key ("password", mode "k" ) */
|
||||
char topic[COMMAND_LEN]; /* Initial topic */
|
||||
char keyfile[512]; /* Path and name of channel key file */
|
||||
unsigned long maxusers; /* maximum usercount for this channel, mode "l" */
|
||||
};
|
||||
|
||||
/* Server-Info-Text */
|
||||
GLOBAL CHAR Conf_ServerInfo[CLIENT_INFO_LEN];
|
||||
|
||||
/* Server-Passwort */
|
||||
GLOBAL CHAR Conf_ServerPwd[CLIENT_PASS_LEN];
|
||||
#define CONF_SFLAG_ONCE 1 /* Delete this entry after next disconnect */
|
||||
#define CONF_SFLAG_DISABLED 2 /* This server configuration entry is disabled */
|
||||
|
||||
/* Admin-Info-Texte */
|
||||
GLOBAL CHAR Conf_ServerAdmin1[CLIENT_INFO_LEN];
|
||||
GLOBAL CHAR Conf_ServerAdmin2[CLIENT_INFO_LEN];
|
||||
GLOBAL CHAR Conf_ServerAdminMail[CLIENT_INFO_LEN];
|
||||
|
||||
/* Datei mit MOTD-Text */
|
||||
GLOBAL CHAR Conf_MotdFile[FNAME_LEN];
|
||||
/* Name ("Nick") of the servers */
|
||||
GLOBAL char Conf_ServerName[CLIENT_ID_LEN];
|
||||
|
||||
/* Ports, auf denen der Server Verbindungen entgegen nimmt */
|
||||
GLOBAL UINT Conf_ListenPorts[MAX_LISTEN_PORTS];
|
||||
GLOBAL INT Conf_ListenPorts_Count;
|
||||
/* Server info text */
|
||||
GLOBAL char Conf_ServerInfo[CLIENT_INFO_LEN];
|
||||
|
||||
/* User- und Group-ID, zu denen der Daemon wechseln soll */
|
||||
GLOBAL UINT Conf_UID;
|
||||
GLOBAL UINT Conf_GID;
|
||||
/* Global server passwort */
|
||||
GLOBAL char Conf_ServerPwd[CLIENT_PASS_LEN];
|
||||
|
||||
/* Timeouts fuer PING und PONG */
|
||||
GLOBAL INT Conf_PingTimeout;
|
||||
GLOBAL INT Conf_PongTimeout;
|
||||
/* Administrative information */
|
||||
GLOBAL char Conf_ServerAdmin1[CLIENT_INFO_LEN];
|
||||
GLOBAL char Conf_ServerAdmin2[CLIENT_INFO_LEN];
|
||||
GLOBAL char Conf_ServerAdminMail[CLIENT_INFO_LEN];
|
||||
|
||||
/* Sekunden zwischen Verbindungsversuchen zu anderen Servern */
|
||||
GLOBAL INT Conf_ConnectRetry;
|
||||
/* File with MOTD text */
|
||||
GLOBAL char Conf_MotdFile[FNAME_LEN];
|
||||
|
||||
/* Operatoren */
|
||||
/* Phrase with MOTD text */
|
||||
GLOBAL char Conf_MotdPhrase[LINE_LEN];
|
||||
|
||||
/* Ports the server should listen on */
|
||||
GLOBAL array Conf_ListenPorts;
|
||||
|
||||
/* Address to which the socket should be bound or empty (=all) */
|
||||
GLOBAL char *Conf_ListenAddress;
|
||||
|
||||
/* User and group ID the server should run with */
|
||||
GLOBAL uid_t Conf_UID;
|
||||
GLOBAL gid_t Conf_GID;
|
||||
|
||||
/* A directory to chroot() in */
|
||||
GLOBAL char Conf_Chroot[FNAME_LEN];
|
||||
|
||||
/* File with PID of daemon */
|
||||
GLOBAL char Conf_PidFile[FNAME_LEN];
|
||||
|
||||
/* Timeouts for PING and PONG */
|
||||
GLOBAL int Conf_PingTimeout;
|
||||
GLOBAL int Conf_PongTimeout;
|
||||
|
||||
/* Seconds between connect attempts to other servers */
|
||||
GLOBAL int Conf_ConnectRetry;
|
||||
|
||||
/* Operators */
|
||||
GLOBAL CONF_OPER Conf_Oper[MAX_OPERATORS];
|
||||
GLOBAL INT Conf_Oper_Count;
|
||||
GLOBAL unsigned int Conf_Oper_Count;
|
||||
|
||||
/* Server */
|
||||
/* Servers */
|
||||
GLOBAL CONF_SERVER Conf_Server[MAX_SERVERS];
|
||||
GLOBAL INT Conf_Server_Count;
|
||||
|
||||
/* Vorkonfigurierte Channels */
|
||||
GLOBAL CONF_CHANNEL Conf_Channel[MAX_DEFCHANNELS];
|
||||
GLOBAL INT Conf_Channel_Count;
|
||||
/* Pre-defined channels */
|
||||
GLOBAL array Conf_Channels;
|
||||
|
||||
/* Koennen IRC OPs immer Modes setzen? */
|
||||
GLOBAL BOOLEAN Conf_OperCanMode;
|
||||
/* Pre-defined channels only */
|
||||
GLOBAL bool Conf_PredefChannelsOnly;
|
||||
|
||||
GLOBAL VOID Conf_Init PARAMS((VOID ));
|
||||
GLOBAL INT Conf_Test PARAMS((VOID ));
|
||||
/* Are IRC operators allowed to always use MODE? */
|
||||
GLOBAL bool Conf_OperCanMode;
|
||||
|
||||
/* Disable all DNS functions? */
|
||||
GLOBAL bool Conf_NoDNS;
|
||||
|
||||
/* Disable IDENT lookups, even when compiled with support for it */
|
||||
GLOBAL bool Conf_NoIdent;
|
||||
|
||||
/*
|
||||
* try to connect to remote systems using the ipv6 protocol,
|
||||
* if they have an ipv6 address? (default yes)
|
||||
*/
|
||||
GLOBAL bool Conf_ConnectIPv6;
|
||||
|
||||
/* same as above, but for ipv4 hosts, default: yes */
|
||||
GLOBAL bool Conf_ConnectIPv4;
|
||||
|
||||
/* If an IRC op gives chanop privileges without being a chanop,
|
||||
* ircd2 will ignore the command. This enables a workaround:
|
||||
* It masks the command as coming from the server */
|
||||
GLOBAL bool Conf_OperServerMode;
|
||||
|
||||
/* Maximum number of connections to this server */
|
||||
GLOBAL long Conf_MaxConnections;
|
||||
|
||||
/* Maximum number of channels a user can join */
|
||||
GLOBAL int Conf_MaxJoins;
|
||||
|
||||
/* Maximum number of connections per IP address */
|
||||
GLOBAL int Conf_MaxConnectionsIP;
|
||||
|
||||
/* Maximum length of a nick name */
|
||||
GLOBAL unsigned int Conf_MaxNickLength;
|
||||
|
||||
GLOBAL void Conf_Init PARAMS((void));
|
||||
GLOBAL bool Conf_Rehash PARAMS((void));
|
||||
GLOBAL int Conf_Test PARAMS((void));
|
||||
|
||||
GLOBAL void Conf_UnsetServer PARAMS(( CONN_ID Idx ));
|
||||
GLOBAL void Conf_SetServer PARAMS(( int ConfServer, CONN_ID Idx ));
|
||||
GLOBAL int Conf_GetServer PARAMS(( CONN_ID Idx ));
|
||||
|
||||
GLOBAL bool Conf_EnableServer PARAMS(( char *Name, UINT16 Port ));
|
||||
GLOBAL bool Conf_EnablePassiveServer PARAMS((const char *Name));
|
||||
GLOBAL bool Conf_DisableServer PARAMS(( char *Name ));
|
||||
GLOBAL bool Conf_AddServer PARAMS(( char *Name, UINT16 Port, char *Host, char *MyPwd, char *PeerPwd ));
|
||||
|
||||
GLOBAL bool Conf_IsService PARAMS((int ConfServer, char *Nick));
|
||||
|
||||
|
||||
#endif
|
||||
|
294
src/ngircd/conn-func.c
Normal file
294
src/ngircd/conn-func.c
Normal file
@@ -0,0 +1,294 @@
|
||||
/*
|
||||
* ngIRCd -- The Next Generation IRC Daemon
|
||||
* Copyright (c)2001-2008 Alexander Barton (alex@barton.de)
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
* Please read the file COPYING, README and AUTHORS for more information.
|
||||
*
|
||||
* Connection management: Global functions
|
||||
*/
|
||||
|
||||
|
||||
#define CONN_MODULE
|
||||
|
||||
#include "portab.h"
|
||||
|
||||
static char UNUSED id[] = "$Id: conn-func.c,v 1.12 2008/03/11 14:05:27 alex Exp $";
|
||||
|
||||
#include "imp.h"
|
||||
#include <assert.h>
|
||||
#include <string.h>
|
||||
#include "log.h"
|
||||
|
||||
#include "conn.h"
|
||||
#include "client.h"
|
||||
|
||||
#include "exp.h"
|
||||
#include "conn-func.h"
|
||||
|
||||
|
||||
GLOBAL void
|
||||
Conn_UpdateIdle( CONN_ID Idx )
|
||||
{
|
||||
/* Idle-Timer zuruecksetzen */
|
||||
|
||||
assert( Idx > NONE );
|
||||
My_Connections[Idx].lastprivmsg = time( NULL );
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Get signon time of a connection.
|
||||
*/
|
||||
GLOBAL time_t
|
||||
Conn_GetSignon(CONN_ID Idx)
|
||||
{
|
||||
assert(Idx > NONE);
|
||||
return My_Connections[Idx].signon;
|
||||
}
|
||||
|
||||
GLOBAL time_t
|
||||
Conn_GetIdle( CONN_ID Idx )
|
||||
{
|
||||
/* Idle-Time einer Verbindung liefern (in Sekunden) */
|
||||
|
||||
assert( Idx > NONE );
|
||||
return time( NULL ) - My_Connections[Idx].lastprivmsg;
|
||||
} /* Conn_GetIdle */
|
||||
|
||||
|
||||
GLOBAL time_t
|
||||
Conn_LastPing( CONN_ID Idx )
|
||||
{
|
||||
/* Zeitpunkt des letzten PING liefern */
|
||||
|
||||
assert( Idx > NONE );
|
||||
return My_Connections[Idx].lastping;
|
||||
} /* Conn_LastPing */
|
||||
|
||||
|
||||
GLOBAL void
|
||||
Conn_SetPenalty( CONN_ID Idx, time_t Seconds )
|
||||
{
|
||||
/* Penalty-Delay fuer eine Verbindung (in Sekunden) setzen;
|
||||
* waehrend dieser Zeit wird der entsprechende Socket vom Server
|
||||
* bei Lese-Operationen komplett ignoriert. Der Delay kann mit
|
||||
* dieser Funktion nur erhoeht, nicht aber verringert werden. */
|
||||
|
||||
time_t t;
|
||||
|
||||
assert( Idx > NONE );
|
||||
assert( Seconds >= 0 );
|
||||
|
||||
t = time( NULL ) + Seconds;
|
||||
if (t > My_Connections[Idx].delaytime)
|
||||
My_Connections[Idx].delaytime = t;
|
||||
|
||||
#ifdef DEBUG
|
||||
Log(LOG_DEBUG, "Add penalty time on connection %d: %ld second(s).",
|
||||
Idx, (long)Seconds);
|
||||
#endif
|
||||
} /* Conn_SetPenalty */
|
||||
|
||||
|
||||
GLOBAL void
|
||||
Conn_ResetPenalty( CONN_ID Idx )
|
||||
{
|
||||
assert( Idx > NONE );
|
||||
My_Connections[Idx].delaytime = 0;
|
||||
} /* Conn_ResetPenalty */
|
||||
|
||||
|
||||
GLOBAL void
|
||||
Conn_ClearFlags( void )
|
||||
{
|
||||
/* Alle Connection auf "nicht-markiert" setzen */
|
||||
|
||||
CONN_ID i;
|
||||
|
||||
for( i = 0; i < Pool_Size; i++ ) My_Connections[i].flag = 0;
|
||||
} /* Conn_ClearFlags */
|
||||
|
||||
|
||||
GLOBAL int
|
||||
Conn_Flag( CONN_ID Idx )
|
||||
{
|
||||
/* Ist eine Connection markiert (true) oder nicht? */
|
||||
|
||||
assert( Idx > NONE );
|
||||
return My_Connections[Idx].flag;
|
||||
} /* Conn_Flag */
|
||||
|
||||
|
||||
GLOBAL void
|
||||
Conn_SetFlag( CONN_ID Idx, int Flag )
|
||||
{
|
||||
/* Connection markieren */
|
||||
|
||||
assert( Idx > NONE );
|
||||
My_Connections[Idx].flag = Flag;
|
||||
} /* Conn_SetFlag */
|
||||
|
||||
|
||||
GLOBAL CONN_ID
|
||||
Conn_First( void )
|
||||
{
|
||||
/* Connection-Struktur der ersten Verbindung liefern;
|
||||
* Ist keine Verbindung vorhanden, wird NONE geliefert. */
|
||||
|
||||
CONN_ID i;
|
||||
|
||||
for( i = 0; i < Pool_Size; i++ )
|
||||
{
|
||||
if( My_Connections[i].sock != NONE ) return i;
|
||||
}
|
||||
return NONE;
|
||||
} /* Conn_First */
|
||||
|
||||
|
||||
GLOBAL CONN_ID
|
||||
Conn_Next( CONN_ID Idx )
|
||||
{
|
||||
/* Naechste Verbindungs-Struktur liefern; existiert keine
|
||||
* weitere, so wird NONE geliefert. */
|
||||
|
||||
CONN_ID i = NONE;
|
||||
|
||||
assert( Idx > NONE );
|
||||
|
||||
for( i = Idx + 1; i < Pool_Size; i++ )
|
||||
{
|
||||
if( My_Connections[i].sock != NONE ) return i;
|
||||
}
|
||||
return NONE;
|
||||
} /* Conn_Next */
|
||||
|
||||
|
||||
GLOBAL UINT16
|
||||
Conn_Options( CONN_ID Idx )
|
||||
{
|
||||
assert( Idx > NONE );
|
||||
return My_Connections[Idx].options;
|
||||
} /* Conn_Options */
|
||||
|
||||
|
||||
/**
|
||||
* Set connection option.
|
||||
*/
|
||||
GLOBAL void
|
||||
Conn_SetOption(CONN_ID Idx, int Option)
|
||||
{
|
||||
assert(Idx > NONE);
|
||||
Conn_OPTION_ADD(&My_Connections[Idx], Option);
|
||||
} /* Conn_SetOption */
|
||||
|
||||
|
||||
/**
|
||||
* Get the start time of the connection.
|
||||
* The result is the start time in seconds since 1970-01-01, as reported
|
||||
* by the C function time(NULL).
|
||||
*/
|
||||
GLOBAL time_t
|
||||
Conn_StartTime( CONN_ID Idx )
|
||||
{
|
||||
CLIENT *c;
|
||||
|
||||
assert(Idx > NONE);
|
||||
|
||||
/* Search client structure for this link ... */
|
||||
c = Conn_GetClient(Idx);
|
||||
if(c != NULL)
|
||||
return Client_StartTime(c);
|
||||
|
||||
return 0;
|
||||
} /* Conn_StartTime */
|
||||
|
||||
|
||||
GLOBAL size_t
|
||||
Conn_SendQ( CONN_ID Idx )
|
||||
{
|
||||
/* Laenge der Daten im Schreibbuffer liefern */
|
||||
|
||||
assert( Idx > NONE );
|
||||
#ifdef ZLIB
|
||||
if( My_Connections[Idx].options & CONN_ZIP )
|
||||
return array_bytes(&My_Connections[Idx].zip.wbuf);
|
||||
else
|
||||
#endif
|
||||
return array_bytes(&My_Connections[Idx].wbuf);
|
||||
} /* Conn_SendQ */
|
||||
|
||||
|
||||
GLOBAL long
|
||||
Conn_SendMsg( CONN_ID Idx )
|
||||
{
|
||||
/* Anzahl gesendeter Nachrichten liefern */
|
||||
|
||||
assert( Idx > NONE );
|
||||
return My_Connections[Idx].msg_out;
|
||||
} /* Conn_SendMsg */
|
||||
|
||||
|
||||
GLOBAL long
|
||||
Conn_SendBytes( CONN_ID Idx )
|
||||
{
|
||||
/* Anzahl gesendeter Bytes (unkomprimiert) liefern */
|
||||
|
||||
assert( Idx > NONE );
|
||||
return My_Connections[Idx].bytes_out;
|
||||
} /* Conn_SendBytes */
|
||||
|
||||
|
||||
GLOBAL size_t
|
||||
Conn_RecvQ( CONN_ID Idx )
|
||||
{
|
||||
/* Laenge der Daten im Lesebuffer liefern */
|
||||
|
||||
assert( Idx > NONE );
|
||||
#ifdef ZLIB
|
||||
if( My_Connections[Idx].options & CONN_ZIP )
|
||||
return array_bytes(&My_Connections[Idx].zip.rbuf);
|
||||
else
|
||||
#endif
|
||||
return array_bytes(&My_Connections[Idx].rbuf);
|
||||
} /* Conn_RecvQ */
|
||||
|
||||
|
||||
GLOBAL long
|
||||
Conn_RecvMsg( CONN_ID Idx )
|
||||
{
|
||||
/* Anzahl empfangener Nachrichten liefern */
|
||||
|
||||
assert( Idx > NONE );
|
||||
return My_Connections[Idx].msg_in;
|
||||
} /* Conn_RecvMsg */
|
||||
|
||||
|
||||
GLOBAL long
|
||||
Conn_RecvBytes( CONN_ID Idx )
|
||||
{
|
||||
/* Anzahl empfangener Bytes (unkomprimiert) liefern */
|
||||
|
||||
assert( Idx > NONE );
|
||||
return My_Connections[Idx].bytes_in;
|
||||
} /* Conn_RecvBytes */
|
||||
|
||||
|
||||
GLOBAL void
|
||||
Conn_ResetWCounter( void )
|
||||
{
|
||||
WCounter = 0;
|
||||
} /* Conn_ResetWCounter */
|
||||
|
||||
|
||||
GLOBAL long
|
||||
Conn_WCounter( void )
|
||||
{
|
||||
return WCounter;
|
||||
} /* Conn_WCounter */
|
||||
|
||||
|
||||
/* -eof- */
|
62
src/ngircd/conn-func.h
Normal file
62
src/ngircd/conn-func.h
Normal file
@@ -0,0 +1,62 @@
|
||||
/*
|
||||
* ngIRCd -- The Next Generation IRC Daemon
|
||||
* Copyright (c)2001-2008 Alexander Barton (alex@barton.de)
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
* Please read the file COPYING, README and AUTHORS for more information.
|
||||
*
|
||||
* Connection management: Global functions (header)
|
||||
*/
|
||||
|
||||
|
||||
#ifndef __conn_func_h__
|
||||
#define __conn_func_h__
|
||||
|
||||
|
||||
/* Include the header conn.h if this header is _not_ included by any module
|
||||
* containing connection handling functions. So other modules must only
|
||||
* include this conn-func.h header. */
|
||||
#ifndef CONN_MODULE
|
||||
#include "conn.h"
|
||||
#else
|
||||
#define Conn_OPTION_ADD( x, opt ) ( (x)->options |= (opt) )
|
||||
#define Conn_OPTION_DEL( x, opt ) ( (x)->options &= ~(opt) )
|
||||
#define Conn_OPTION_ISSET( x, opt ) ( ((x)->options & (opt)) != 0)
|
||||
#endif
|
||||
|
||||
|
||||
GLOBAL void Conn_UpdateIdle PARAMS(( CONN_ID Idx ));
|
||||
GLOBAL time_t Conn_GetSignon PARAMS((CONN_ID Idx));
|
||||
GLOBAL time_t Conn_GetIdle PARAMS(( CONN_ID Idx ));
|
||||
GLOBAL time_t Conn_LastPing PARAMS(( CONN_ID Idx ));
|
||||
GLOBAL time_t Conn_StartTime PARAMS(( CONN_ID Idx ));
|
||||
GLOBAL size_t Conn_SendQ PARAMS(( CONN_ID Idx ));
|
||||
GLOBAL size_t Conn_RecvQ PARAMS(( CONN_ID Idx ));
|
||||
GLOBAL long Conn_SendMsg PARAMS(( CONN_ID Idx ));
|
||||
GLOBAL long Conn_RecvMsg PARAMS(( CONN_ID Idx ));
|
||||
GLOBAL long Conn_SendBytes PARAMS(( CONN_ID Idx ));
|
||||
GLOBAL long Conn_RecvBytes PARAMS(( CONN_ID Idx ));
|
||||
|
||||
GLOBAL void Conn_SetPenalty PARAMS(( CONN_ID Idx, time_t Seconds ));
|
||||
GLOBAL void Conn_ResetPenalty PARAMS(( CONN_ID Idx ));
|
||||
|
||||
GLOBAL void Conn_ClearFlags PARAMS(( void ));
|
||||
GLOBAL int Conn_Flag PARAMS(( CONN_ID Idx ));
|
||||
GLOBAL void Conn_SetFlag PARAMS(( CONN_ID Idx, int Flag ));
|
||||
|
||||
GLOBAL CONN_ID Conn_First PARAMS(( void ));
|
||||
GLOBAL CONN_ID Conn_Next PARAMS(( CONN_ID Idx ));
|
||||
|
||||
GLOBAL UINT16 Conn_Options PARAMS(( CONN_ID Idx ));
|
||||
GLOBAL void Conn_SetOption PARAMS(( CONN_ID Idx, int Option ));
|
||||
|
||||
GLOBAL void Conn_ResetWCounter PARAMS(( void ));
|
||||
GLOBAL long Conn_WCounter PARAMS(( void ));
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
/* -eof- */
|
728
src/ngircd/conn-ssl.c
Normal file
728
src/ngircd/conn-ssl.c
Normal file
@@ -0,0 +1,728 @@
|
||||
/*
|
||||
* ngIRCd -- The Next Generation IRC Daemon
|
||||
*
|
||||
* SSL wrapper functions.
|
||||
* Copyright (c) 2005-2008 Florian Westphal <fw@strlen.de>
|
||||
*/
|
||||
|
||||
#include "portab.h"
|
||||
#include "imp.h"
|
||||
#include "conf-ssl.h"
|
||||
|
||||
#ifdef SSL_SUPPORT
|
||||
|
||||
#include "io.h"
|
||||
#include <assert.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <errno.h>
|
||||
|
||||
#define CONN_MODULE
|
||||
#include "conn.h"
|
||||
#include "conf.h"
|
||||
#include "conn-func.h"
|
||||
#include "conn-ssl.h"
|
||||
#include "log.h"
|
||||
|
||||
#include "exp.h"
|
||||
#include "defines.h"
|
||||
|
||||
extern struct SSLOptions Conf_SSLOptions;
|
||||
|
||||
#ifdef HAVE_LIBSSL
|
||||
#include <openssl/err.h>
|
||||
#include <openssl/rand.h>
|
||||
|
||||
static SSL_CTX * ssl_ctx;
|
||||
static DH *dh_params;
|
||||
|
||||
static bool ConnSSL_LoadServerKey_openssl PARAMS(( SSL_CTX *c ));
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_LIBGNUTLS
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <fcntl.h>
|
||||
#include <unistd.h>
|
||||
#include <gnutls/x509.h>
|
||||
|
||||
#define DH_BITS 1024
|
||||
static gnutls_certificate_credentials_t x509_cred;
|
||||
static gnutls_dh_params_t dh_params;
|
||||
|
||||
static bool ConnSSL_LoadServerKey_gnutls PARAMS(( void ));
|
||||
#endif
|
||||
|
||||
static bool ConnSSL_Init_SSL PARAMS(( CONNECTION *c ));
|
||||
static int ConnectAccept PARAMS(( CONNECTION *c, bool connect ));
|
||||
static int ConnSSL_HandleError PARAMS(( CONNECTION *c, const int code, const char *fname ));
|
||||
|
||||
#ifdef HAVE_LIBGNUTLS
|
||||
static char * openreadclose(const char *name, size_t *len)
|
||||
{
|
||||
char *buf = NULL;
|
||||
struct stat s;
|
||||
ssize_t br;
|
||||
int fd = open(name, O_RDONLY);
|
||||
if (fd < 0) {
|
||||
Log(LOG_ERR, "Could not open %s: %s", name, strerror(errno));
|
||||
return NULL;
|
||||
}
|
||||
if (fstat(fd, &s)) {
|
||||
Log(LOG_ERR, "Could not fstat %s: %s", name, strerror(errno));
|
||||
goto out;
|
||||
}
|
||||
if (!S_ISREG(s.st_mode)) {
|
||||
Log(LOG_ERR, "%s: Not a regular file", name);
|
||||
goto out;
|
||||
}
|
||||
if (s.st_size <= 0) {
|
||||
Log(LOG_ERR, "%s: invalid file length (size %ld <= 0)", name, (long) s.st_size);
|
||||
goto out;
|
||||
}
|
||||
buf = malloc(s.st_size);
|
||||
if (!buf) {
|
||||
Log(LOG_ERR, "Could not malloc %lu bytes for file %s: %s", s.st_size, name, strerror(errno));
|
||||
goto out;
|
||||
}
|
||||
br = read(fd, buf, s.st_size);
|
||||
if (br != (ssize_t)s.st_size) {
|
||||
Log(LOG_ERR, "Could not read file %s: read returned %ld, expected %ld: %s",
|
||||
name, (long) br, (long) s.st_size, br == -1 ? strerror(errno):"short read?!");
|
||||
memset(buf, 0, s.st_size);
|
||||
free(buf);
|
||||
buf = NULL;
|
||||
} else {
|
||||
*len = br;
|
||||
}
|
||||
out:
|
||||
close(fd);
|
||||
return buf;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef HAVE_LIBSSL
|
||||
static void
|
||||
LogOpenSSLError( const char *msg, const char *msg2 )
|
||||
{
|
||||
unsigned long err = ERR_get_error();
|
||||
char * errmsg = err ? ERR_error_string(err, NULL) : "Unable to determine error";
|
||||
|
||||
if (!msg) msg = "SSL Error";
|
||||
if (msg2)
|
||||
Log( LOG_ERR, "%s: %s: %s", msg, msg2, errmsg);
|
||||
else
|
||||
Log( LOG_ERR, "%s: %s", msg, errmsg);
|
||||
}
|
||||
|
||||
|
||||
static int
|
||||
pem_passwd_cb(char *buf, int size, int rwflag, void *password)
|
||||
{
|
||||
array *pass = password;
|
||||
int passlen;
|
||||
|
||||
(void)rwflag; /* rwflag is unused if DEBUG is not set. */
|
||||
assert(rwflag == 0); /* 0 -> callback used for decryption.
|
||||
* See SSL_CTX_set_default_passwd_cb(3) */
|
||||
|
||||
passlen = (int) array_bytes(pass);
|
||||
|
||||
LogDebug("pem_passwd_cb buf size %d, array size %d", size, passlen);
|
||||
assert(passlen >= 0);
|
||||
if (passlen <= 0) {
|
||||
Log(LOG_ERR, "pem_passwd_cb: password required, but not set");
|
||||
return 0;
|
||||
}
|
||||
size = passlen > size ? size : passlen;
|
||||
memcpy(buf, (char *)(array_start(pass)), size);
|
||||
return size;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
static bool
|
||||
Load_DH_params(void)
|
||||
{
|
||||
#ifdef HAVE_LIBSSL
|
||||
FILE *fp;
|
||||
bool ret = true;
|
||||
|
||||
if (!Conf_SSLOptions.DHFile) {
|
||||
Log(LOG_NOTICE, "Configuration option \"SSLDHFile\" not set!");
|
||||
return false;
|
||||
}
|
||||
fp = fopen(Conf_SSLOptions.DHFile, "r");
|
||||
if (!fp) {
|
||||
Log(LOG_ERR, "%s: %s", Conf_SSLOptions.DHFile, strerror(errno));
|
||||
return false;
|
||||
}
|
||||
dh_params = PEM_read_DHparams(fp, NULL, NULL, NULL);
|
||||
if (!dh_params) {
|
||||
Log(LOG_ERR, "%s: PEM_read_DHparams failed!",
|
||||
Conf_SSLOptions.DHFile);
|
||||
ret = false;
|
||||
}
|
||||
fclose(fp);
|
||||
return ret;
|
||||
#endif
|
||||
#ifdef HAVE_LIBGNUTLS
|
||||
bool need_dhgenerate = true;
|
||||
int err;
|
||||
gnutls_dh_params_t tmp_dh_params;
|
||||
|
||||
err = gnutls_dh_params_init(&tmp_dh_params);
|
||||
if (err < 0) {
|
||||
Log(LOG_ERR, "gnutls_dh_params_init: %s", gnutls_strerror(err));
|
||||
return false;
|
||||
}
|
||||
if (Conf_SSLOptions.DHFile) {
|
||||
gnutls_datum_t dhparms;
|
||||
size_t size;
|
||||
dhparms.data = (unsigned char *) openreadclose(Conf_SSLOptions.DHFile, &size);
|
||||
if (dhparms.data) {
|
||||
dhparms.size = size;
|
||||
err = gnutls_dh_params_import_pkcs3(tmp_dh_params, &dhparms, GNUTLS_X509_FMT_PEM);
|
||||
if (err == 0)
|
||||
need_dhgenerate = false;
|
||||
else
|
||||
Log(LOG_ERR, "gnutls_dh_params_init: %s", gnutls_strerror(err));
|
||||
|
||||
memset(dhparms.data, 0, size);
|
||||
free(dhparms.data);
|
||||
}
|
||||
}
|
||||
if (need_dhgenerate) {
|
||||
Log(LOG_WARNING,
|
||||
"SSLDHFile not set, generating %u bit DH parameters. This may take a while ...",
|
||||
DH_BITS);
|
||||
err = gnutls_dh_params_generate2(tmp_dh_params, DH_BITS);
|
||||
if (err < 0) {
|
||||
Log(LOG_ERR, "gnutls_dh_params_generate2: %s", gnutls_strerror(err));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
dh_params = tmp_dh_params;
|
||||
return true;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
void ConnSSL_Free(CONNECTION *c)
|
||||
{
|
||||
#ifdef HAVE_LIBSSL
|
||||
SSL *ssl = c->ssl_state.ssl;
|
||||
if (ssl) {
|
||||
SSL_shutdown(ssl);
|
||||
SSL_free(ssl);
|
||||
c->ssl_state.ssl = NULL;
|
||||
}
|
||||
#endif
|
||||
#ifdef HAVE_LIBGNUTLS
|
||||
gnutls_session_t sess = c->ssl_state.gnutls_session;
|
||||
if (Conn_OPTION_ISSET(c, CONN_SSL)) {
|
||||
gnutls_bye(sess, GNUTLS_SHUT_RDWR);
|
||||
gnutls_deinit(sess);
|
||||
}
|
||||
#endif
|
||||
assert(Conn_OPTION_ISSET(c, CONN_SSL));
|
||||
/* can't just set bitmask to 0 -- there are other, non-ssl related flags, e.g. CONN_ZIP. */
|
||||
Conn_OPTION_DEL(c, CONN_SSL_FLAGS_ALL);
|
||||
}
|
||||
|
||||
|
||||
bool
|
||||
ConnSSL_InitLibrary( void )
|
||||
{
|
||||
#ifdef HAVE_LIBSSL
|
||||
SSL_CTX *newctx;
|
||||
|
||||
if (!ssl_ctx) {
|
||||
SSL_library_init();
|
||||
SSL_load_error_strings();
|
||||
}
|
||||
|
||||
if (!RAND_status()) {
|
||||
Log(LOG_ERR, "OpenSSL PRNG not seeded: /dev/urandom missing?");
|
||||
/*
|
||||
* it is probably best to fail and let the user install EGD or a similar program if no kernel random device is available.
|
||||
* According to OpenSSL RAND_egd(3): "The automatic query of /var/run/egd-pool et al was added in OpenSSL 0.9.7";
|
||||
* so it makes little sense to deal with PRNGD seeding ourselves.
|
||||
*/
|
||||
return false;
|
||||
}
|
||||
|
||||
newctx = SSL_CTX_new(SSLv23_method());
|
||||
if (!newctx) {
|
||||
LogOpenSSLError("SSL_CTX_new()", NULL);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!ConnSSL_LoadServerKey_openssl(newctx))
|
||||
goto out;
|
||||
|
||||
SSL_CTX_set_options(newctx, SSL_OP_SINGLE_DH_USE|SSL_OP_NO_SSLv2);
|
||||
SSL_CTX_set_mode(newctx, SSL_MODE_ENABLE_PARTIAL_WRITE);
|
||||
SSL_CTX_free(ssl_ctx);
|
||||
ssl_ctx = newctx;
|
||||
Log(LOG_INFO, "%s initialized.", SSLeay_version(SSLEAY_VERSION));
|
||||
return true;
|
||||
out:
|
||||
SSL_CTX_free(newctx);
|
||||
return false;
|
||||
#endif
|
||||
#ifdef HAVE_LIBGNUTLS
|
||||
int err;
|
||||
static bool initialized;
|
||||
if (initialized) /* TODO: cannot reload gnutls keys: can't simply free x509 context -- it may still be in use */
|
||||
return false;
|
||||
|
||||
err = gnutls_global_init();
|
||||
if (err) {
|
||||
Log(LOG_ERR, "gnutls_global_init(): %s", gnutls_strerror(err));
|
||||
return false;
|
||||
}
|
||||
if (!ConnSSL_LoadServerKey_gnutls())
|
||||
return false;
|
||||
Log(LOG_INFO, "gnutls %s initialized.", gnutls_check_version(NULL));
|
||||
initialized = true;
|
||||
return true;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
#ifdef HAVE_LIBGNUTLS
|
||||
static bool
|
||||
ConnSSL_LoadServerKey_gnutls(void)
|
||||
{
|
||||
int err;
|
||||
const char *cert_file;
|
||||
|
||||
err = gnutls_certificate_allocate_credentials(&x509_cred);
|
||||
if (err < 0) {
|
||||
Log(LOG_ERR, "gnutls_certificate_allocate_credentials: %s", gnutls_strerror(err));
|
||||
return false;
|
||||
}
|
||||
|
||||
cert_file = Conf_SSLOptions.CertFile ? Conf_SSLOptions.CertFile:Conf_SSLOptions.KeyFile;
|
||||
if (!cert_file) {
|
||||
Log(LOG_NOTICE, "No SSL server key configured, SSL disabled.");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (array_bytes(&Conf_SSLOptions.KeyFilePassword))
|
||||
Log(LOG_WARNING,
|
||||
"Ignoring KeyFilePassword: Not supported by GNUTLS.");
|
||||
|
||||
if (!Load_DH_params())
|
||||
return false;
|
||||
|
||||
gnutls_certificate_set_dh_params(x509_cred, dh_params);
|
||||
err = gnutls_certificate_set_x509_key_file(x509_cred, cert_file, Conf_SSLOptions.KeyFile, GNUTLS_X509_FMT_PEM);
|
||||
if (err < 0) {
|
||||
Log(LOG_ERR, "gnutls_certificate_set_x509_key_file (cert %s, key %s): %s",
|
||||
cert_file, Conf_SSLOptions.KeyFile ? Conf_SSLOptions.KeyFile : "(NULL)", gnutls_strerror(err));
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef HAVE_LIBSSL
|
||||
static bool
|
||||
ConnSSL_LoadServerKey_openssl(SSL_CTX *ctx)
|
||||
{
|
||||
char *cert_key;
|
||||
|
||||
assert(ctx);
|
||||
if (!Conf_SSLOptions.KeyFile) {
|
||||
Log(LOG_NOTICE, "No SSL server key configured, SSL disabled.");
|
||||
return false;
|
||||
}
|
||||
|
||||
SSL_CTX_set_default_passwd_cb(ctx, pem_passwd_cb);
|
||||
SSL_CTX_set_default_passwd_cb_userdata(ctx, &Conf_SSLOptions.KeyFilePassword);
|
||||
|
||||
if (SSL_CTX_use_PrivateKey_file(ctx, Conf_SSLOptions.KeyFile, SSL_FILETYPE_PEM) != 1) {
|
||||
array_free_wipe(&Conf_SSLOptions.KeyFilePassword);
|
||||
LogOpenSSLError("SSL_CTX_use_PrivateKey_file", Conf_SSLOptions.KeyFile);
|
||||
return false;
|
||||
}
|
||||
|
||||
cert_key = Conf_SSLOptions.CertFile ? Conf_SSLOptions.CertFile:Conf_SSLOptions.KeyFile;
|
||||
if (SSL_CTX_use_certificate_chain_file(ctx, cert_key) != 1) {
|
||||
array_free_wipe(&Conf_SSLOptions.KeyFilePassword);
|
||||
LogOpenSSLError("SSL_CTX_use_certificate_file", cert_key);
|
||||
return false;
|
||||
}
|
||||
|
||||
array_free_wipe(&Conf_SSLOptions.KeyFilePassword);
|
||||
|
||||
if (!SSL_CTX_check_private_key(ctx)) {
|
||||
LogOpenSSLError("Server Private Key does not match certificate", NULL);
|
||||
return false;
|
||||
}
|
||||
if (Load_DH_params()) {
|
||||
if (SSL_CTX_set_tmp_dh(ctx, dh_params) != 1)
|
||||
LogOpenSSLError("Error setting DH Parameters", Conf_SSLOptions.DHFile);
|
||||
/* don't return false here: the non-DH modes will still work */
|
||||
DH_free(dh_params);
|
||||
dh_params = NULL;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
#endif
|
||||
static bool
|
||||
ConnSSL_Init_SSL(CONNECTION *c)
|
||||
{
|
||||
int ret;
|
||||
assert(c != NULL);
|
||||
#ifdef HAVE_LIBSSL
|
||||
assert(ssl_ctx);
|
||||
if (!ssl_ctx) /* NULL when library initialization failed */
|
||||
return false;
|
||||
|
||||
assert(c->ssl_state.ssl == NULL);
|
||||
|
||||
c->ssl_state.ssl = SSL_new(ssl_ctx);
|
||||
if (!c->ssl_state.ssl) {
|
||||
LogOpenSSLError("SSL_new()", NULL);
|
||||
return false;
|
||||
}
|
||||
|
||||
ret = SSL_set_fd(c->ssl_state.ssl, c->sock);
|
||||
if (ret != 1) {
|
||||
LogOpenSSLError("SSL_set_fd()", NULL);
|
||||
ConnSSL_Free(c);
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
#ifdef HAVE_LIBGNUTLS
|
||||
ret = gnutls_set_default_priority(c->ssl_state.gnutls_session);
|
||||
if (ret < 0) {
|
||||
Log(LOG_ERR, "gnutls_set_default_priority: %s", gnutls_strerror(ret));
|
||||
ConnSSL_Free(c);
|
||||
}
|
||||
/*
|
||||
* The intermediate (long) cast is here to avoid a warning like:
|
||||
* "cast to pointer from integer of different size" on 64-bit platforms.
|
||||
* There doesn't seem to be an alternate GNUTLS API we could use instead, see e.g.
|
||||
* http://www.mail-archive.com/help-gnutls@gnu.org/msg00286.html
|
||||
*/
|
||||
gnutls_transport_set_ptr(c->ssl_state.gnutls_session, (gnutls_transport_ptr_t) (long) c->sock);
|
||||
ret = gnutls_credentials_set(c->ssl_state.gnutls_session, GNUTLS_CRD_CERTIFICATE, x509_cred);
|
||||
if (ret < 0) {
|
||||
Log(LOG_ERR, "gnutls_credentials_set: %s", gnutls_strerror(ret));
|
||||
ConnSSL_Free(c);
|
||||
}
|
||||
gnutls_dh_set_prime_bits(c->ssl_state.gnutls_session, DH_BITS);
|
||||
#endif
|
||||
Conn_OPTION_ADD(c, CONN_SSL);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool
|
||||
ConnSSL_PrepareConnect(CONNECTION *c, UNUSED CONF_SERVER *s)
|
||||
{
|
||||
bool ret;
|
||||
#ifdef HAVE_LIBGNUTLS
|
||||
int err;
|
||||
#endif
|
||||
assert(c != NULL);
|
||||
assert(s != NULL);
|
||||
#ifdef HAVE_LIBGNUTLS
|
||||
err = gnutls_init(&c->ssl_state.gnutls_session, GNUTLS_CLIENT);
|
||||
if (err) {
|
||||
Log(LOG_ERR, "gnutls_init: %s", gnutls_strerror(err));
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
ret = ConnSSL_Init_SSL(c);
|
||||
if (!ret)
|
||||
return false;
|
||||
Conn_OPTION_ADD(c, CONN_SSL_CONNECT);
|
||||
#ifdef HAVE_LIBSSL
|
||||
assert(c->ssl_state.ssl);
|
||||
SSL_set_verify(c->ssl_state.ssl, SSL_VERIFY_NONE, NULL);
|
||||
#endif
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Check an Handle Error return code after failed calls to ssl/tls functions.
|
||||
OpenSSL:
|
||||
SSL_connect(), SSL_accept(), SSL_do_handshake(), SSL_read(), SSL_peek(), or SSL_write() on ssl.
|
||||
GNUTLS:
|
||||
gnutlsssl_read(), gnutls_write() or gnutls_handshake().
|
||||
Return: -1 on fatal error, 0 if we can try again later.
|
||||
*/
|
||||
static int
|
||||
ConnSSL_HandleError( CONNECTION *c, const int code, const char *fname )
|
||||
{
|
||||
#ifdef HAVE_LIBSSL
|
||||
int ret = SSL_ERROR_SYSCALL;
|
||||
unsigned long sslerr;
|
||||
int real_errno = errno;
|
||||
|
||||
assert( fname );
|
||||
|
||||
ret = SSL_get_error(c->ssl_state.ssl, code);
|
||||
switch (ret) {
|
||||
case SSL_ERROR_WANT_READ:
|
||||
io_event_del(c->sock, IO_WANTWRITE);
|
||||
Conn_OPTION_ADD(c, CONN_SSL_WANT_READ);
|
||||
return 0; /* try again later */
|
||||
case SSL_ERROR_WANT_WRITE:
|
||||
io_event_del(c->sock, IO_WANTREAD);
|
||||
Conn_OPTION_ADD(c, CONN_SSL_WANT_WRITE); /* fall through */
|
||||
case SSL_ERROR_NONE:
|
||||
return 0; /* try again later */
|
||||
case SSL_ERROR_ZERO_RETURN:
|
||||
LogDebug("TLS/SSL connection shut down normally");
|
||||
break;
|
||||
/*
|
||||
SSL_ERROR_WANT_CONNECT, SSL_ERROR_WANT_ACCEPT, SSL_ERROR_WANT_X509_LOOKUP
|
||||
*/
|
||||
case SSL_ERROR_SYSCALL:
|
||||
sslerr = ERR_get_error();
|
||||
if (sslerr) {
|
||||
Log( LOG_ERR, "%s: %s", fname, ERR_error_string(sslerr, NULL ));
|
||||
} else {
|
||||
|
||||
switch (code) { /* EOF that violated protocol */
|
||||
case 0:
|
||||
Log(LOG_ERR, "%s: Client Disconnected", fname );
|
||||
break;
|
||||
case -1: /* low level socket I/O error, check errno */
|
||||
Log(LOG_ERR, "%s: %s", fname, strerror(real_errno));
|
||||
}
|
||||
}
|
||||
break;
|
||||
case SSL_ERROR_SSL:
|
||||
LogOpenSSLError("TLS/SSL Protocol Error", fname);
|
||||
break;
|
||||
default:
|
||||
Log( LOG_ERR, "%s: Unknown error %d!", fname, ret);
|
||||
}
|
||||
ConnSSL_Free(c);
|
||||
return -1;
|
||||
#endif
|
||||
#ifdef HAVE_LIBGNUTLS
|
||||
switch (code) {
|
||||
case GNUTLS_E_AGAIN:
|
||||
case GNUTLS_E_INTERRUPTED:
|
||||
if (gnutls_record_get_direction(c->ssl_state.gnutls_session)) { /* need write */
|
||||
io_event_del(c->sock, IO_WANTREAD);
|
||||
Conn_OPTION_ADD(c, CONN_SSL_WANT_WRITE); /* fall through */
|
||||
break;
|
||||
} else { /* need read */
|
||||
io_event_del(c->sock, IO_WANTWRITE);
|
||||
Conn_OPTION_ADD(c, CONN_SSL_WANT_READ);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
assert(code < 0);
|
||||
if (gnutls_error_is_fatal(code)) {
|
||||
Log(LOG_ERR, "%s: %s", fname, gnutls_strerror(code));
|
||||
ConnSSL_Free(c);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
ConnSSL_LogCertInfo( CONNECTION *c )
|
||||
{
|
||||
#ifdef HAVE_LIBSSL
|
||||
SSL *ssl = c->ssl_state.ssl;
|
||||
|
||||
assert( c );
|
||||
assert( ssl );
|
||||
|
||||
Log(LOG_INFO, "New %s connection using cipher %s on socket %d.",
|
||||
SSL_get_version(ssl), SSL_get_cipher(ssl), c->sock);
|
||||
#endif
|
||||
#ifdef HAVE_LIBGNUTLS
|
||||
gnutls_session_t sess = c->ssl_state.gnutls_session;
|
||||
gnutls_cipher_algorithm_t cipher = gnutls_cipher_get(sess);
|
||||
|
||||
Log(LOG_INFO, "New %s connection using cipher %s-%s on socket %d.",
|
||||
gnutls_protocol_get_name(gnutls_protocol_get_version(sess)),
|
||||
gnutls_cipher_get_name(cipher),
|
||||
gnutls_mac_get_name(gnutls_mac_get(sess)), c->sock);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Accept incoming SSL connection.
|
||||
Return Values:
|
||||
1: SSL Connection established
|
||||
0: try again
|
||||
-1: SSL Connection not established due to fatal error.
|
||||
*/
|
||||
int
|
||||
ConnSSL_Accept( CONNECTION *c )
|
||||
{
|
||||
assert(c != NULL);
|
||||
#ifdef HAVE_LIBSSL
|
||||
if (!c->ssl_state.ssl) {
|
||||
#endif
|
||||
#ifdef HAVE_LIBGNUTLS
|
||||
if (!Conn_OPTION_ISSET(c, CONN_SSL)) {
|
||||
int err = gnutls_init(&c->ssl_state.gnutls_session, GNUTLS_SERVER);
|
||||
if (err) {
|
||||
Log(LOG_ERR, "gnutls_init: %s", gnutls_strerror(err));
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
LogDebug("ConnSSL_Accept: Initializing SSL data");
|
||||
if (!ConnSSL_Init_SSL(c))
|
||||
return -1;
|
||||
}
|
||||
return ConnectAccept(c, false );
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
ConnSSL_Connect( CONNECTION *c )
|
||||
{
|
||||
assert(c != NULL);
|
||||
#ifdef HAVE_LIBSSL
|
||||
assert(c->ssl_state.ssl);
|
||||
#endif
|
||||
#ifdef HAVE_LIBGNUTLS
|
||||
assert(Conn_OPTION_ISSET(c, CONN_SSL));
|
||||
#endif
|
||||
return ConnectAccept(c, true);
|
||||
}
|
||||
|
||||
|
||||
/* accept/connect wrapper. if connect is true, connect to peer, otherwise wait for incoming connection */
|
||||
static int
|
||||
ConnectAccept( CONNECTION *c, bool connect)
|
||||
{
|
||||
int ret;
|
||||
#ifdef HAVE_LIBSSL
|
||||
SSL *ssl = c->ssl_state.ssl;
|
||||
assert(ssl != NULL);
|
||||
|
||||
ret = connect ? SSL_connect(ssl) : SSL_accept(ssl);
|
||||
if (1 != ret)
|
||||
return ConnSSL_HandleError(c, ret, connect ? "SSL_connect": "SSL_accept");
|
||||
#endif
|
||||
#ifdef HAVE_LIBGNUTLS
|
||||
(void) connect;
|
||||
assert(Conn_OPTION_ISSET(c, CONN_SSL));
|
||||
ret = gnutls_handshake(c->ssl_state.gnutls_session);
|
||||
if (ret)
|
||||
return ConnSSL_HandleError(c, ret, "gnutls_handshake");
|
||||
#endif /* _GNUTLS */
|
||||
Conn_OPTION_DEL(c, (CONN_SSL_WANT_WRITE|CONN_SSL_WANT_READ|CONN_SSL_CONNECT));
|
||||
ConnSSL_LogCertInfo(c);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
ssize_t
|
||||
ConnSSL_Write(CONNECTION *c, const void *buf, size_t count)
|
||||
{
|
||||
ssize_t bw;
|
||||
|
||||
Conn_OPTION_DEL(c, CONN_SSL_WANT_WRITE|CONN_SSL_WANT_READ);
|
||||
|
||||
assert(count > 0);
|
||||
#ifdef HAVE_LIBSSL
|
||||
bw = (ssize_t) SSL_write(c->ssl_state.ssl, buf, count);
|
||||
#endif
|
||||
#ifdef HAVE_LIBGNUTLS
|
||||
bw = gnutls_write(c->ssl_state.gnutls_session, buf, count);
|
||||
#endif
|
||||
if ( bw > 0 ) return bw;
|
||||
if (ConnSSL_HandleError( c, bw, "ConnSSL_Write") == 0)
|
||||
errno = EAGAIN; /* try again */
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
ssize_t
|
||||
ConnSSL_Read(CONNECTION *c, void * buf, size_t count)
|
||||
{
|
||||
ssize_t br;
|
||||
|
||||
Conn_OPTION_DEL(c, CONN_SSL_WANT_WRITE|CONN_SSL_WANT_READ);
|
||||
#ifdef HAVE_LIBSSL
|
||||
br = (ssize_t) SSL_read(c->ssl_state.ssl, buf, count);
|
||||
if (br > 0) /* on EOF we have to call ConnSSL_HandleError(), see SSL_read(3) */
|
||||
return br;
|
||||
#endif
|
||||
#ifdef HAVE_LIBGNUTLS
|
||||
br = gnutls_read(c->ssl_state.gnutls_session, buf, count);
|
||||
if (br >= 0) /* on EOF we must _not_ call ConnSSL_HandleError, see gnutls_record_recv(3) */
|
||||
return br;
|
||||
#endif
|
||||
/* error on read: switch ConnSSL_HandleError() return values -> 0 is "try again", so return -1 and set EAGAIN */
|
||||
if (ConnSSL_HandleError(c, br, "ConnSSL_Read") == 0) {
|
||||
errno = EAGAIN;
|
||||
return -1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
bool
|
||||
ConnSSL_GetCipherInfo(CONNECTION *c, char *buf, size_t len)
|
||||
{
|
||||
#ifdef HAVE_LIBSSL
|
||||
char *nl;
|
||||
|
||||
SSL *ssl;
|
||||
assert(c != NULL);
|
||||
assert(len >= 128);
|
||||
ssl = c->ssl_state.ssl;
|
||||
if (!ssl)
|
||||
return false;
|
||||
*buf = 0;
|
||||
SSL_CIPHER_description(SSL_get_current_cipher(ssl), buf, len);
|
||||
nl = strchr(buf, '\n');
|
||||
if (nl)
|
||||
*nl = 0;
|
||||
return true;
|
||||
#endif
|
||||
#ifdef HAVE_LIBGNUTLS
|
||||
assert(c != NULL);
|
||||
assert(len >= 128);
|
||||
if (Conn_OPTION_ISSET(c, CONN_SSL)) {
|
||||
const char *name_cipher, *name_mac, *name_proto, *name_keyexchange;
|
||||
unsigned keysize;
|
||||
|
||||
gnutls_session_t sess = c->ssl_state.gnutls_session;
|
||||
gnutls_cipher_algorithm_t cipher = gnutls_cipher_get(sess);
|
||||
name_cipher = gnutls_cipher_get_name(cipher);
|
||||
name_mac = gnutls_mac_get_name(gnutls_mac_get(sess));
|
||||
keysize = gnutls_cipher_get_key_size(cipher) * 8;
|
||||
name_proto = gnutls_protocol_get_name(gnutls_protocol_get_version(sess));
|
||||
name_keyexchange = gnutls_kx_get_name(gnutls_kx_get(sess));
|
||||
|
||||
return snprintf(buf, len, "%s-%s%15s Kx=%s Enc=%s(%u) Mac=%s",
|
||||
name_cipher, name_mac, name_proto, name_keyexchange, name_cipher, keysize, name_mac) > 0;
|
||||
}
|
||||
return false;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
#endif /* SSL_SUPPORT */
|
||||
/* -eof- */
|
||||
|
||||
|
28
src/ngircd/conn-ssl.h
Normal file
28
src/ngircd/conn-ssl.h
Normal file
@@ -0,0 +1,28 @@
|
||||
/*
|
||||
* ngIRCd -- The Next Generation IRC Daemon
|
||||
* SSL wrapper functions. (header)
|
||||
*/
|
||||
|
||||
#ifndef conn_ssl_h
|
||||
#define conn_ssl_h
|
||||
|
||||
#include "conf-ssl.h"
|
||||
#include "conn.h"
|
||||
#include "conf.h"
|
||||
|
||||
#ifdef SSL_SUPPORT
|
||||
GLOBAL void ConnSSL_Free PARAMS(( CONNECTION *c ));
|
||||
|
||||
GLOBAL bool ConnSSL_PrepareConnect PARAMS(( CONNECTION *c, CONF_SERVER *s ));
|
||||
|
||||
GLOBAL int ConnSSL_Accept PARAMS(( CONNECTION *c ));
|
||||
GLOBAL int ConnSSL_Connect PARAMS(( CONNECTION *c ));
|
||||
|
||||
GLOBAL ssize_t ConnSSL_Write PARAMS(( CONNECTION *c, const void *buf, size_t count));
|
||||
GLOBAL ssize_t ConnSSL_Read PARAMS(( CONNECTION *c, void *buf, size_t count));
|
||||
|
||||
GLOBAL bool ConnSSL_GetCipherInfo PARAMS(( CONNECTION *c, char *buf, size_t len ));
|
||||
#endif /* SSL_SUPPORT */
|
||||
#endif /* conn_ssl_h */
|
||||
|
||||
/* -eof- */
|
275
src/ngircd/conn-zip.c
Normal file
275
src/ngircd/conn-zip.c
Normal file
@@ -0,0 +1,275 @@
|
||||
/*
|
||||
* ngIRCd -- The Next Generation IRC Daemon
|
||||
* Copyright (c)2001-2007 Alexander Barton (alex@barton.de)
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
* Please read the file COPYING, README and AUTHORS for more information.
|
||||
*
|
||||
* Connection compression using ZLIB
|
||||
*/
|
||||
|
||||
|
||||
#include "portab.h"
|
||||
|
||||
#define CONN_MODULE
|
||||
|
||||
|
||||
#ifdef ZLIB
|
||||
|
||||
/* enable more zlib related debug messages: */
|
||||
/* #define DEBUG_ZLIB */
|
||||
|
||||
static char UNUSED id[] = "$Id: conn-zip.c,v 1.16 2007/05/17 23:34:24 alex Exp $";
|
||||
|
||||
#include "imp.h"
|
||||
#include <assert.h>
|
||||
#include <string.h>
|
||||
#include <zlib.h>
|
||||
|
||||
#include "conn.h"
|
||||
#include "conn-func.h"
|
||||
#include "log.h"
|
||||
|
||||
#include "array.h"
|
||||
#include "exp.h"
|
||||
#include "conn-zip.h"
|
||||
|
||||
|
||||
GLOBAL bool
|
||||
Zip_InitConn( CONN_ID Idx )
|
||||
{
|
||||
/* Kompression fuer Link initialisieren */
|
||||
|
||||
assert( Idx > NONE );
|
||||
|
||||
My_Connections[Idx].zip.in.avail_in = 0;
|
||||
My_Connections[Idx].zip.in.total_in = 0;
|
||||
My_Connections[Idx].zip.in.total_out = 0;
|
||||
My_Connections[Idx].zip.in.zalloc = NULL;
|
||||
My_Connections[Idx].zip.in.zfree = NULL;
|
||||
My_Connections[Idx].zip.in.data_type = Z_ASCII;
|
||||
|
||||
if( inflateInit( &My_Connections[Idx].zip.in ) != Z_OK )
|
||||
{
|
||||
/* Fehler! */
|
||||
Log( LOG_ALERT, "Can't initialize compression on connection %d (zlib inflate)!", Idx );
|
||||
return false;
|
||||
}
|
||||
|
||||
My_Connections[Idx].zip.out.total_in = 0;
|
||||
My_Connections[Idx].zip.out.total_in = 0;
|
||||
My_Connections[Idx].zip.out.zalloc = NULL;
|
||||
My_Connections[Idx].zip.out.zfree = NULL;
|
||||
My_Connections[Idx].zip.out.data_type = Z_ASCII;
|
||||
|
||||
if( deflateInit( &My_Connections[Idx].zip.out, Z_DEFAULT_COMPRESSION ) != Z_OK )
|
||||
{
|
||||
/* Fehler! */
|
||||
Log( LOG_ALERT, "Can't initialize compression on connection %d (zlib deflate)!", Idx );
|
||||
return false;
|
||||
}
|
||||
|
||||
My_Connections[Idx].zip.bytes_in = My_Connections[Idx].bytes_in;
|
||||
My_Connections[Idx].zip.bytes_out = My_Connections[Idx].bytes_out;
|
||||
|
||||
Log( LOG_INFO, "Enabled link compression (zlib) on connection %d.", Idx );
|
||||
Conn_OPTION_ADD( &My_Connections[Idx], CONN_ZIP );
|
||||
|
||||
return true;
|
||||
} /* Zip_InitConn */
|
||||
|
||||
|
||||
/**
|
||||
* Copy data to the compression buffer of a connection. We do collect
|
||||
* some data there until it's full so that we can achieve better
|
||||
* compression ratios.
|
||||
* If the (pre-)compression buffer is full, we try to flush it ("actually
|
||||
* compress some data") and to add the new (uncompressed) data afterwards.
|
||||
* @param Idx Connection handle.
|
||||
* @param Data Pointer to the data.
|
||||
* @param Len Length of the data to add.
|
||||
* @return true on success, false otherwise. */
|
||||
GLOBAL bool
|
||||
Zip_Buffer( CONN_ID Idx, char *Data, size_t Len )
|
||||
{
|
||||
size_t buflen;
|
||||
|
||||
assert( Idx > NONE );
|
||||
assert( Data != NULL );
|
||||
assert( Len > 0 );
|
||||
|
||||
buflen = array_bytes(&My_Connections[Idx].zip.wbuf);
|
||||
if (buflen + Len >= WRITEBUFFER_SLINK_LEN) {
|
||||
/* compression buffer is full, flush */
|
||||
if( ! Zip_Flush( Idx )) return false;
|
||||
}
|
||||
|
||||
/* check again; if zip buf is still too large do not append data:
|
||||
* otherwise the zip wbuf would grow too large */
|
||||
buflen = array_bytes(&My_Connections[Idx].zip.wbuf);
|
||||
if (buflen + Len >= WRITEBUFFER_SLINK_LEN)
|
||||
return false;
|
||||
|
||||
return array_catb(&My_Connections[Idx].zip.wbuf, Data, Len);
|
||||
} /* Zip_Buffer */
|
||||
|
||||
|
||||
/**
|
||||
* Compress data in ZIP buffer and move result to the write buffer of
|
||||
* the connection.
|
||||
* @param Idx Connection handle.
|
||||
* @retrun true on success, false otherwise.
|
||||
*/
|
||||
GLOBAL bool
|
||||
Zip_Flush( CONN_ID Idx )
|
||||
{
|
||||
int result;
|
||||
unsigned char zipbuf[WRITEBUFFER_SLINK_LEN];
|
||||
int zipbuf_used = 0;
|
||||
z_stream *out;
|
||||
|
||||
out = &My_Connections[Idx].zip.out;
|
||||
|
||||
out->avail_in = (uInt)array_bytes(&My_Connections[Idx].zip.wbuf);
|
||||
if (!out->avail_in)
|
||||
return true; /* nothing to do. */
|
||||
|
||||
out->next_in = array_start(&My_Connections[Idx].zip.wbuf);
|
||||
assert(out->next_in != NULL);
|
||||
|
||||
out->next_out = zipbuf;
|
||||
out->avail_out = (uInt)sizeof zipbuf;
|
||||
|
||||
#ifdef DEBUG_ZIP
|
||||
Log(LOG_DEBUG, "out->avail_in %d, out->avail_out %d",
|
||||
out->avail_in, out->avail_out);
|
||||
#endif
|
||||
result = deflate( out, Z_SYNC_FLUSH );
|
||||
if(( result != Z_OK ) || ( out->avail_in > 0 ))
|
||||
{
|
||||
Log( LOG_ALERT, "Compression error: code %d!?", result );
|
||||
Conn_Close( Idx, "Compression error!", NULL, false );
|
||||
return false;
|
||||
}
|
||||
|
||||
if (out->avail_out <= 0) {
|
||||
/* Not all data was compressed, because data became
|
||||
* bigger while compressing it. */
|
||||
Log (LOG_ALERT, "Compression error: buffer overvlow!?");
|
||||
Conn_Close(Idx, "Compression error!", NULL, false);
|
||||
return false;
|
||||
}
|
||||
|
||||
assert(out->avail_out <= WRITEBUFFER_SLINK_LEN);
|
||||
|
||||
zipbuf_used = WRITEBUFFER_SLINK_LEN - out->avail_out;
|
||||
#ifdef DEBUG_ZIP
|
||||
Log(LOG_DEBUG, "zipbuf_used: %d", zipbuf_used);
|
||||
#endif
|
||||
if (!array_catb(&My_Connections[Idx].wbuf,
|
||||
(char *)zipbuf, (size_t) zipbuf_used)) {
|
||||
Log (LOG_ALERT, "Compression error: can't copy data!?");
|
||||
Conn_Close(Idx, "Compression error!", NULL, false);
|
||||
return false;
|
||||
}
|
||||
|
||||
My_Connections[Idx].bytes_out += zipbuf_used;
|
||||
My_Connections[Idx].zip.bytes_out += array_bytes(&My_Connections[Idx].zip.wbuf);
|
||||
array_trunc(&My_Connections[Idx].zip.wbuf);
|
||||
|
||||
return true;
|
||||
} /* Zip_Flush */
|
||||
|
||||
|
||||
GLOBAL bool
|
||||
Unzip_Buffer( CONN_ID Idx )
|
||||
{
|
||||
/* Daten entpacken und in Lesepuffer kopieren. Bei Fehlern
|
||||
* wird false geliefert, ansonsten true. Der Fall, dass keine
|
||||
* Daten mehr zu entpacken sind, ist _kein_ Fehler! */
|
||||
|
||||
int result;
|
||||
unsigned char unzipbuf[READBUFFER_LEN];
|
||||
int unzipbuf_used = 0;
|
||||
unsigned int z_rdatalen;
|
||||
unsigned int in_len;
|
||||
|
||||
z_stream *in;
|
||||
|
||||
assert( Idx > NONE );
|
||||
|
||||
z_rdatalen = (unsigned int)array_bytes(&My_Connections[Idx].zip.rbuf);
|
||||
if (z_rdatalen == 0)
|
||||
return true;
|
||||
|
||||
in = &My_Connections[Idx].zip.in;
|
||||
|
||||
in->next_in = array_start(&My_Connections[Idx].zip.rbuf);
|
||||
assert(in->next_in != NULL);
|
||||
|
||||
in->avail_in = z_rdatalen;
|
||||
in->next_out = unzipbuf;
|
||||
in->avail_out = (uInt)sizeof unzipbuf;
|
||||
|
||||
#ifdef DEBUG_ZIP
|
||||
Log(LOG_DEBUG, "in->avail_in %d, in->avail_out %d",
|
||||
in->avail_in, in->avail_out);
|
||||
#endif
|
||||
result = inflate( in, Z_SYNC_FLUSH );
|
||||
if( result != Z_OK )
|
||||
{
|
||||
Log( LOG_ALERT, "Decompression error: %s (code=%d, ni=%d, ai=%d, no=%d, ao=%d)!?", in->msg, result, in->next_in, in->avail_in, in->next_out, in->avail_out );
|
||||
Conn_Close( Idx, "Decompression error!", NULL, false );
|
||||
return false;
|
||||
}
|
||||
|
||||
assert(z_rdatalen >= in->avail_in);
|
||||
in_len = z_rdatalen - in->avail_in;
|
||||
unzipbuf_used = READBUFFER_LEN - in->avail_out;
|
||||
#ifdef DEBUG_ZIP
|
||||
Log(LOG_DEBUG, "unzipbuf_used: %d - %d = %d", READBUFFER_LEN,
|
||||
in->avail_out, unzipbuf_used);
|
||||
#endif
|
||||
assert(unzipbuf_used <= READBUFFER_LEN);
|
||||
if (!array_catb(&My_Connections[Idx].rbuf, (char*) unzipbuf,
|
||||
(size_t)unzipbuf_used))
|
||||
return false;
|
||||
|
||||
if( in->avail_in > 0 ) {
|
||||
array_moveleft(&My_Connections[Idx].zip.rbuf, 1, in_len );
|
||||
} else {
|
||||
array_trunc( &My_Connections[Idx].zip.rbuf );
|
||||
My_Connections[Idx].zip.bytes_in += unzipbuf_used;
|
||||
}
|
||||
|
||||
return true;
|
||||
} /* Unzip_Buffer */
|
||||
|
||||
|
||||
GLOBAL long
|
||||
Zip_SendBytes( CONN_ID Idx )
|
||||
{
|
||||
/* Anzahl gesendeter Bytes (komprimiert!) liefern */
|
||||
|
||||
assert( Idx > NONE );
|
||||
return My_Connections[Idx].zip.bytes_out;
|
||||
} /* Zip_SendBytes */
|
||||
|
||||
|
||||
GLOBAL long
|
||||
Zip_RecvBytes( CONN_ID Idx )
|
||||
{
|
||||
/* Anzahl gesendeter Bytes (komprimiert!) liefern */
|
||||
|
||||
assert( Idx > NONE );
|
||||
return My_Connections[Idx].zip.bytes_in;
|
||||
} /* Zip_RecvBytes */
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
/* -eof- */
|
38
src/ngircd/conn-zip.h
Normal file
38
src/ngircd/conn-zip.h
Normal file
@@ -0,0 +1,38 @@
|
||||
/*
|
||||
* ngIRCd -- The Next Generation IRC Daemon
|
||||
* Copyright (c)2001,2002 by Alexander Barton (alex@barton.de)
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
* Please read the file COPYING, README and AUTHORS for more information.
|
||||
*
|
||||
* $Id: conn-zip.h,v 1.4 2006/05/10 21:24:01 alex Exp $
|
||||
*
|
||||
* Connection compression using ZLIB (header)
|
||||
*/
|
||||
|
||||
|
||||
#ifdef ZLIB
|
||||
|
||||
#ifndef __conn_zip_h__
|
||||
#define __conn_zip_h__
|
||||
|
||||
|
||||
GLOBAL bool Zip_InitConn PARAMS(( CONN_ID Idx ));
|
||||
|
||||
GLOBAL bool Zip_Buffer PARAMS(( CONN_ID Idx, char *Data, size_t Len ));
|
||||
GLOBAL bool Zip_Flush PARAMS(( CONN_ID Idx ));
|
||||
GLOBAL bool Unzip_Buffer PARAMS(( CONN_ID Idx ));
|
||||
|
||||
GLOBAL long Zip_SendBytes PARAMS(( CONN_ID Idx ));
|
||||
GLOBAL long Zip_RecvBytes PARAMS(( CONN_ID Idx ));
|
||||
|
||||
|
||||
#endif /* __conn_zip_h__ */
|
||||
|
||||
#endif /* ZLIB */
|
||||
|
||||
|
||||
/* -eof- */
|
2554
src/ngircd/conn.c
2554
src/ngircd/conn.c
File diff suppressed because it is too large
Load Diff
@@ -1,17 +1,14 @@
|
||||
/*
|
||||
* ngIRCd -- The Next Generation IRC Daemon
|
||||
* Copyright (c)2001,2002 by Alexander Barton (alex@barton.de)
|
||||
* Copyright (c)2001-2008 by Alexander Barton (alex@barton.de)
|
||||
*
|
||||
* Dieses Programm ist freie Software. Sie koennen es unter den Bedingungen
|
||||
* der GNU General Public License (GPL), wie von der Free Software Foundation
|
||||
* herausgegeben, weitergeben und/oder modifizieren, entweder unter Version 2
|
||||
* der Lizenz oder (wenn Sie es wuenschen) jeder spaeteren Version.
|
||||
* Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste
|
||||
* der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS.
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
* Please read the file COPYING, README and AUTHORS for more information.
|
||||
*
|
||||
* $Id: conn.h,v 1.17 2002/08/26 00:03:15 alex Exp $
|
||||
*
|
||||
* conn.h: Verwaltung aller Netz-Verbindungen ("connections") (Header)
|
||||
* Connection management (header)
|
||||
*/
|
||||
|
||||
|
||||
@@ -19,35 +16,109 @@
|
||||
#define __conn_h__
|
||||
|
||||
|
||||
#include <time.h>
|
||||
|
||||
|
||||
typedef INT CONN_ID;
|
||||
|
||||
|
||||
GLOBAL VOID Conn_Init PARAMS((VOID ));
|
||||
GLOBAL VOID Conn_Exit PARAMS(( VOID ));
|
||||
|
||||
GLOBAL BOOLEAN Conn_NewListener PARAMS(( CONST UINT Port ));
|
||||
|
||||
GLOBAL VOID Conn_Handler PARAMS(( VOID ));
|
||||
|
||||
GLOBAL BOOLEAN Conn_Write PARAMS(( CONN_ID Idx, CHAR *Data, INT Len ));
|
||||
GLOBAL BOOLEAN Conn_WriteStr PARAMS(( CONN_ID Idx, CHAR *Format, ... ));
|
||||
|
||||
GLOBAL VOID Conn_Close PARAMS(( CONN_ID Idx, CHAR *LogMsg, CHAR *FwdMsg, BOOLEAN InformClient ));
|
||||
|
||||
GLOBAL VOID Conn_UpdateIdle PARAMS(( CONN_ID Idx ));
|
||||
GLOBAL time_t Conn_GetIdle PARAMS(( CONN_ID Idx ));
|
||||
GLOBAL time_t Conn_LastPing PARAMS(( CONN_ID Idx ));
|
||||
|
||||
GLOBAL VOID Conn_SetPenalty PARAMS(( CONN_ID Idx, time_t Seconds ));
|
||||
|
||||
|
||||
GLOBAL INT Conn_MaxFD;
|
||||
|
||||
#include <time.h> /* for time_t, see below */
|
||||
|
||||
/*
|
||||
* connection state flags. this is a bitmask -- all values must
|
||||
* be unique and a power of two.
|
||||
*
|
||||
* If you introduce new ones in between, make sure to adjust all
|
||||
* remaining ones.
|
||||
*/
|
||||
#define CONN_ISCLOSING 1 /* Conn_Close() already called */
|
||||
#define CONN_ISCONNECTING 2 /* connect() in progress */
|
||||
#define CONN_RFC1459 4 /* RFC 1459 compatibility mode */
|
||||
#ifdef ZLIB
|
||||
#define CONN_ZIP 8 /* zlib compressed link */
|
||||
#endif
|
||||
|
||||
#include "conf-ssl.h"
|
||||
|
||||
#ifdef SSL_SUPPORT
|
||||
#define CONN_SSL_CONNECT 16 /* wait for ssl connect to finish */
|
||||
#define CONN_SSL 32 /* this connection is SSL encrypted */
|
||||
#define CONN_SSL_WANT_WRITE 64 /* SSL/TLS library needs to write protocol data */
|
||||
#define CONN_SSL_WANT_READ 128 /* SSL/TLS library needs to read protocol data */
|
||||
#define CONN_SSL_FLAGS_ALL (CONN_SSL_CONNECT|CONN_SSL|CONN_SSL_WANT_WRITE|CONN_SSL_WANT_READ)
|
||||
#endif
|
||||
typedef int CONN_ID;
|
||||
|
||||
#include "client.h"
|
||||
|
||||
#ifdef CONN_MODULE
|
||||
|
||||
#include "defines.h"
|
||||
#include "resolve.h"
|
||||
#include "array.h"
|
||||
#include "tool.h"
|
||||
#include "ng_ipaddr.h"
|
||||
|
||||
#ifdef ZLIB
|
||||
#include <zlib.h>
|
||||
typedef struct _ZipData
|
||||
{
|
||||
z_stream in; /* "Handle" for input stream */
|
||||
z_stream out; /* "Handle" for output stream */
|
||||
array rbuf; /* Read buffer (compressed) */
|
||||
array wbuf; /* Write buffer (uncompressed) */
|
||||
long bytes_in, bytes_out; /* Counter for statistics (uncompressed!) */
|
||||
} ZIPDATA;
|
||||
#endif /* ZLIB */
|
||||
|
||||
typedef struct _Connection
|
||||
{
|
||||
int sock; /* Socket handle */
|
||||
ng_ipaddr_t addr; /* Client address */
|
||||
RES_STAT res_stat; /* Status of resolver process */
|
||||
char host[HOST_LEN]; /* Hostname */
|
||||
array rbuf; /* Read buffer */
|
||||
array wbuf; /* Write buffer */
|
||||
time_t signon; /* Signon ("connect") time */
|
||||
time_t lastdata; /* Last activity */
|
||||
time_t lastping; /* Last PING */
|
||||
time_t lastprivmsg; /* Last PRIVMSG */
|
||||
time_t delaytime; /* Ignore link ("penalty") */
|
||||
long bytes_in, bytes_out; /* Received and sent bytes */
|
||||
long msg_in, msg_out; /* Received and sent IRC messages */
|
||||
int flag; /* Flag (see "irc-write" module) */
|
||||
UINT16 options; /* Link options / connection state */
|
||||
CLIENT *client; /* pointer to client structure */
|
||||
#ifdef ZLIB
|
||||
ZIPDATA zip; /* Compression information */
|
||||
#endif /* ZLIB */
|
||||
#ifdef SSL_SUPPORT
|
||||
struct ConnSSL_State ssl_state; /* SSL/GNUTLS state information */
|
||||
#endif
|
||||
} CONNECTION;
|
||||
|
||||
GLOBAL CONNECTION *My_Connections;
|
||||
GLOBAL CONN_ID Pool_Size;
|
||||
GLOBAL long WCounter;
|
||||
|
||||
#endif /* CONN_MODULE */
|
||||
|
||||
|
||||
GLOBAL void Conn_Init PARAMS((void ));
|
||||
GLOBAL void Conn_Exit PARAMS(( void ));
|
||||
|
||||
GLOBAL unsigned int Conn_InitListeners PARAMS(( void ));
|
||||
GLOBAL void Conn_ExitListeners PARAMS(( void ));
|
||||
|
||||
GLOBAL void Conn_Handler PARAMS(( void ));
|
||||
|
||||
GLOBAL bool Conn_WriteStr PARAMS(( CONN_ID Idx, char *Format, ... ));
|
||||
|
||||
GLOBAL void Conn_Close PARAMS(( CONN_ID Idx, char *LogMsg, char *FwdMsg, bool InformClient ));
|
||||
|
||||
GLOBAL void Conn_SyncServerStruct PARAMS(( void ));
|
||||
|
||||
GLOBAL CLIENT* Conn_GetClient PARAMS((CONN_ID i));
|
||||
#ifdef SSL_SUPPORT
|
||||
GLOBAL bool Conn_GetCipherInfo PARAMS((CONN_ID Idx, char *buf, size_t len));
|
||||
GLOBAL bool Conn_UsesSSL PARAMS((CONN_ID Idx));
|
||||
#else
|
||||
static inline bool Conn_UsesSSL(UNUSED CONN_ID Idx) { return false; }
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* -eof- */
|
||||
|
@@ -1,92 +1,121 @@
|
||||
/*
|
||||
* ngIRCd -- The Next Generation IRC Daemon
|
||||
* Copyright (c)2001,2002 by Alexander Barton (alex@barton.de)
|
||||
* Copyright (c)2001-2007 Alexander Barton (alex@barton.de)
|
||||
*
|
||||
* Dieses Programm ist freie Software. Sie koennen es unter den Bedingungen
|
||||
* der GNU General Public License (GPL), wie von der Free Software Foundation
|
||||
* herausgegeben, weitergeben und/oder modifizieren, entweder unter Version 2
|
||||
* der Lizenz oder (wenn Sie es wuenschen) jeder spaeteren Version.
|
||||
* Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste
|
||||
* der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS.
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
* Please read the file COPYING, README and AUTHORS for more information.
|
||||
*
|
||||
* $Id: defines.h,v 1.33 2002/09/07 17:58:00 alex Exp $
|
||||
*
|
||||
* defines.h: (globale) Konstanten
|
||||
* $Id: defines.h,v 1.62 2007/11/21 12:16:36 alex Exp $
|
||||
*/
|
||||
|
||||
|
||||
#ifndef __defines_h__
|
||||
#define __defines_h__
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Global constants ("#defines") used by the ngIRCd.
|
||||
*/
|
||||
|
||||
#define NONE -1
|
||||
|
||||
#define FNAME_LEN 256 /* max. Laenge eines Dateinamen */
|
||||
#define FNAME_LEN 256 /* Max. length of file name */
|
||||
|
||||
#define LINE_LEN 256 /* max. Laenge einer Konfigurationszeile */
|
||||
#define LINE_LEN 256 /* Max. length of a line in the
|
||||
configuration file */
|
||||
|
||||
#define HOST_LEN 256 /* max. Laenge eines Hostnamen */
|
||||
#define HOST_LEN 256 /* Max. lenght of fully qualified host
|
||||
names (e. g. "abc.domain.tld") */
|
||||
|
||||
#define MAX_LISTEN_PORTS 16 /* max. Anzahl von Listen-Ports */
|
||||
#define MAX_OPERATORS 16 /* Max. count of configurable IRC Ops */
|
||||
|
||||
#define MAX_OPERATORS 16 /* max. Anzahl konfigurierbarer Operatoren */
|
||||
#define MAX_SERVERS 16 /* Max. count of configurable servers */
|
||||
|
||||
#define MAX_SERVERS 16 /* max. Anzahl konfigurierbarer Server ("Peers") */
|
||||
#define MAX_WHOWAS 64 /* Max. number of WHOWAS items */
|
||||
#define DEFAULT_WHOWAS 5 /* default count for WHOWAS command */
|
||||
|
||||
#define MAX_DEFCHANNELS 16 /* max. Anzahl vorkonfigurierbarerr Channels */
|
||||
#define CONNECTION_POOL 100 /* Size of default connection pool */
|
||||
|
||||
#define MAX_CONNECTIONS 100 /* max. Anzahl von Verbindungen an diesem Server */
|
||||
#define CLIENT_ID_LEN 64 /* Max. length of an IRC ID; see RFC
|
||||
RFC 2812 section 1.1 and 1.2.1 */
|
||||
#define CLIENT_NICK_LEN_DEFAULT 10 /* Default nick length, see. RFC 2812
|
||||
* section 1.2.1 */
|
||||
#define CLIENT_NICK_LEN 32 /* Maximum nick name length */
|
||||
#define CLIENT_PASS_LEN 21 /* Max. password length */
|
||||
#define CLIENT_USER_LEN 10 /* Max. length of user name ("login")
|
||||
see RFC 2812, section 1.2.1 */
|
||||
#define CLIENT_NAME_LEN 32 /* Max. length of "real names" */
|
||||
#define CLIENT_HOST_LEN 64 /* Max. host name length */
|
||||
#define CLIENT_MODE_LEN 9 /* Max. lenth of all client modes */
|
||||
#define CLIENT_INFO_LEN 64 /* Max. length of server info texts */
|
||||
#define CLIENT_AWAY_LEN 128 /* Max. length of away messages */
|
||||
#define CLIENT_FLAGS_LEN 100 /* Max. length of client flags */
|
||||
|
||||
#define CLIENT_ID_LEN 64 /* max. ID-Laenge; vgl. RFC 2812, 1.1 und 1.2.1 */
|
||||
#define CLIENT_NICK_LEN 10 /* max. Nick-Laenge; vgl. RFC 2812, 1.2.1 */
|
||||
#define CLIENT_PASS_LEN 9 /* max. Laenge des Passwortes */
|
||||
#define CLIENT_USER_LEN 9 /* max. Laenge des Benutzernamen ("Login") */
|
||||
#define CLIENT_NAME_LEN 32 /* max. Laenge des "langen Benutzernamen" */
|
||||
#define CLIENT_HOST_LEN 64 /* max. Laenge des Hostname */
|
||||
#define CLIENT_MODE_LEN 8 /* max. Laenge der Client-Modes */
|
||||
#define CLIENT_INFO_LEN 64 /* max. Infotext-Laenge (Server) */
|
||||
#define CLIENT_AWAY_LEN 128 /* max. Laenger der AWAY-Nachricht */
|
||||
#define CLIENT_FLAGS_LEN 100 /* max. Laenger der Client-Flags */
|
||||
#define CHANNEL_NAME_LEN 51 /* Max. length of a channel name, see
|
||||
RFC 2812 section 1.3 */
|
||||
#define CHANNEL_MODE_LEN 9 /* Max. length of channel modes */
|
||||
|
||||
#define CHANNEL_NAME_LEN 51 /* max. Laenge eines Channel-Namens, vgl. RFC 2812, 1.3 */
|
||||
#define CHANNEL_MODE_LEN 8 /* max. Laenge der Channel-Modes */
|
||||
#define CHANNEL_TOPIC_LEN 128 /* max. Laenge eines Channel-Topics */
|
||||
#define COMMAND_LEN 513 /* Max. IRC command length, see. RFC
|
||||
2812 section 3.2 */
|
||||
|
||||
#define COMMAND_LEN 513 /* max. Laenge eines Befehls, vgl. RFC 2812, 3.2 */
|
||||
#define READBUFFER_LEN 2048 /* Size of the read buffer of a
|
||||
connection in bytes. */
|
||||
#define WRITEBUFFER_LEN 4096 /* Size of the write buffer of a
|
||||
connection in bytes. */
|
||||
#define WRITEBUFFER_SLINK_LEN 51200 /* Size of the write buffer of a
|
||||
server link connection in bytes. */
|
||||
|
||||
#define READBUFFER_LEN 2 * COMMAND_LEN /* Laenge des Lesepuffers je Verbindung (Bytes) */
|
||||
#define WRITEBUFFER_LEN 4096 /* Laenge des Schreibpuffers je Verbindung (Bytes) */
|
||||
|
||||
#define PROTOVER "0210" /* implementierte Protokoll-Version (RFC 2813, 4.1.1) */
|
||||
#define PROTOIRC "-IRC" /* Protokoll-Suffix (RFC 2813, 4.1.1) */
|
||||
#define PROTOIRCPLUS "-IRC+" /* Protokoll-Suffix f<>r IRC+-Protokoll */
|
||||
#define PROTOVER "0210" /* Implemented IRC protocol version,
|
||||
see RFC 2813 section 4.1.1. */
|
||||
#define PROTOIRC "-IRC" /* Protocol suffix, see RFC 2813
|
||||
section 4.1.1 */
|
||||
#define PROTOIRCPLUS "-IRC+" /* Protocol suffix used by the IRC+
|
||||
protocol, see doc/Protocol.txt */
|
||||
|
||||
#ifdef IRCPLUS
|
||||
# define IRCPLUSFLAGS "C" /* IRC+-Flags, die immer zutreffen */
|
||||
# define IRCPLUSFLAGS "CHLS" /* Standard IRC+ flags */
|
||||
#endif
|
||||
|
||||
#define STARTUP_DELAY 1 /* Erst n Sek. nach Start zu anderen Servern verbinden */
|
||||
#define RECONNECT_DELAY 3 /* Server-Links erst nach 3 Sekunden versuchen, wieder aufzubauen */
|
||||
#define STARTUP_DELAY 1 /* Delay outgoing connections n seconds
|
||||
after startup. */
|
||||
#define RECONNECT_DELAY 3 /* Time to delay re-connect attempts
|
||||
in seconds. */
|
||||
|
||||
#define USERMODES "aios" /* unterstuetzte User-Modes */
|
||||
#define CHANMODES "biImnoPtv" /* unterstuetzte Channel-Modes */
|
||||
#define USERMODES "aios" /* Supported user modes. */
|
||||
#define CHANMODES "biIklmnoPstv" /* Supported channel modes. */
|
||||
|
||||
#define CONNECTED TRUE /* fuer die irc-xxx-Module */
|
||||
#define DISCONNECTED FALSE
|
||||
#define CONNECTED true /* Internal status codes. */
|
||||
#define DISCONNECTED false
|
||||
|
||||
#define DEFAULT_AWAY_MSG "Away" /* Away-Meldung fuer User von anderen Servern */
|
||||
#define DEFAULT_AWAY_MSG "Away" /* Away message for users connected to
|
||||
linked servers. */
|
||||
|
||||
#ifdef PROTOTYPES
|
||||
# define CONFIG_FILE SYSCONFDIR"/ngircd.conf"
|
||||
# define MOTD_FILE SYSCONFDIR"/ngircd.motd"
|
||||
#else
|
||||
# define CONFIG_FILE "ngircd.conf"
|
||||
# define MOTD_FILE "ngircd.motd"
|
||||
#define DEFAULT_TOPIC_ID "-Server-" /* Default ID for "topic owner". */
|
||||
|
||||
#define CONFIG_FILE "/ngircd.conf" /* Configuration file name. */
|
||||
#define MOTD_FILE "/ngircd.motd" /* Name of the MOTD file. */
|
||||
#define MOTD_PHRASE "" /* Default MOTD phrase string. */
|
||||
#define CHROOT_DIR "" /* Default chroot() directory. */
|
||||
#define PID_FILE "" /* Default file for the process ID. */
|
||||
|
||||
#define ERROR_DIR "/tmp" /* Error directory used in debug mode */
|
||||
|
||||
#define MAX_LOG_MSG_LEN 256 /* Max. length of a log message. */
|
||||
|
||||
#define TOKEN_OUTBOUND -2 /* Tag for outbound server links. */
|
||||
|
||||
#define NOTICE_TXTPREFIX "" /* Prefix for NOTICEs from the server
|
||||
to users. Some servers use '*'. */
|
||||
|
||||
#define CUT_TXTSUFFIX "[CUT]" /* Suffix for oversized messages that
|
||||
have been shortened and cut off. */
|
||||
|
||||
#ifdef ZEROCONF
|
||||
#define MDNS_TYPE "_ircu._tcp." /* Service type to register with mDNS */
|
||||
#endif
|
||||
#define ERROR_DIR "/tmp"
|
||||
|
||||
#define MAX_LOG_MSG_LEN 256 /* max. Laenge einer Log-Meldung */
|
||||
|
||||
#define TOKEN_OUTBOUND -2 /* Kennzeichnung fuer ausgehende Server-Links im Aufbau */
|
||||
|
||||
|
||||
#endif
|
||||
|
@@ -2,46 +2,42 @@
|
||||
* ngIRCd -- The Next Generation IRC Daemon
|
||||
* Copyright (c)2001,2002 by Alexander Barton (alex@barton.de)
|
||||
*
|
||||
* Dieses Programm ist freie Software. Sie koennen es unter den Bedingungen
|
||||
* der GNU General Public License (GPL), wie von der Free Software Foundation
|
||||
* herausgegeben, weitergeben und/oder modifizieren, entweder unter Version 2
|
||||
* der Lizenz oder (wenn Sie es wuenschen) jeder spaeteren Version.
|
||||
* Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste
|
||||
* der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS.
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
* Please read the file COPYING, README and AUTHORS for more information.
|
||||
*
|
||||
* $Id: hash.c,v 1.5 2002/05/27 12:54:07 alex Exp $
|
||||
*
|
||||
* hash.c: Hash-Werte berechnen
|
||||
* Hash calculation
|
||||
*/
|
||||
|
||||
|
||||
#include "portab.h"
|
||||
|
||||
static char UNUSED id[] = "$Id: hash.c,v 1.13 2006/10/06 21:23:47 fw Exp $";
|
||||
|
||||
#include "imp.h"
|
||||
#include <assert.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "defines.h"
|
||||
#include "log.h"
|
||||
#include "tool.h"
|
||||
|
||||
#include "exp.h"
|
||||
#include "hash.h"
|
||||
|
||||
|
||||
LOCAL UINT32 jenkins_hash PARAMS(( register UINT8 *k, register UINT32 length, register UINT32 initval ));
|
||||
static UINT32 jenkins_hash PARAMS(( register UINT8 *k, register UINT32 length, register UINT32 initval ));
|
||||
|
||||
|
||||
GLOBAL UINT32
|
||||
Hash( CHAR *String )
|
||||
Hash( const char *String )
|
||||
{
|
||||
/* Hash-Wert ueber String berechnen */
|
||||
|
||||
CHAR buffer[LINE_LEN];
|
||||
char buffer[LINE_LEN];
|
||||
|
||||
strncpy( buffer, String, LINE_LEN - 1 );
|
||||
buffer[LINE_LEN - 1] = '\0';
|
||||
|
||||
strlcpy( buffer, String, sizeof( buffer ));
|
||||
return jenkins_hash( (UINT8 *)ngt_LowerStr( buffer ), strlen( buffer ), 42 );
|
||||
} /* Hash */
|
||||
|
||||
@@ -76,7 +72,7 @@ Hash( CHAR *String )
|
||||
} /* mix */
|
||||
|
||||
|
||||
LOCAL UINT32
|
||||
static UINT32
|
||||
jenkins_hash( register UINT8 *k, register UINT32 length, register UINT32 initval )
|
||||
{
|
||||
/* k: the key
|
||||
@@ -103,7 +99,7 @@ jenkins_hash( register UINT8 *k, register UINT32 length, register UINT32 initval
|
||||
|
||||
/* handle the last 11 bytes */
|
||||
c += length;
|
||||
switch(len) /* all the case statements fall through */
|
||||
switch( (int)len ) /* all the case statements fall through */
|
||||
{
|
||||
case 11: c+=((UINT32)k[10]<<24);
|
||||
case 10: c+=((UINT32)k[9]<<16);
|
||||
|
@@ -2,24 +2,22 @@
|
||||
* ngIRCd -- The Next Generation IRC Daemon
|
||||
* Copyright (c)2001,2002 by Alexander Barton (alex@barton.de)
|
||||
*
|
||||
* Dieses Programm ist freie Software. Sie koennen es unter den Bedingungen
|
||||
* der GNU General Public License (GPL), wie von der Free Software Foundation
|
||||
* herausgegeben, weitergeben und/oder modifizieren, entweder unter Version 2
|
||||
* der Lizenz oder (wenn Sie es wuenschen) jeder spaeteren Version.
|
||||
* Naehere Informationen entnehmen Sie bitter der Datei COPYING. Eine Liste
|
||||
* der an ngIRCd beteiligten Autoren finden Sie in der Datei AUTHORS.
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
* Please read the file COPYING, README and AUTHORS for more information.
|
||||
*
|
||||
* $Id: hash.h,v 1.3 2002/05/27 12:54:07 alex Exp $
|
||||
* $Id: hash.h,v 1.6 2006/10/06 21:23:47 fw Exp $
|
||||
*
|
||||
* hash.h: Hash-Werte berechnen (Header)
|
||||
* Hash calculation (header)
|
||||
*/
|
||||
|
||||
|
||||
#ifndef __hash_h__
|
||||
#define __hash_h__
|
||||
|
||||
|
||||
GLOBAL UINT32 Hash PARAMS((CHAR *String ));
|
||||
GLOBAL UINT32 Hash PARAMS((const char *String ));
|
||||
|
||||
|
||||
#endif
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user