Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7d8e2e4fdd | ||
|
|
0aa4ae0b96 | ||
|
|
04620f2475 | ||
|
|
6cfb34ab22 | ||
|
|
e46af305a9 | ||
|
|
2fe00e5e96 | ||
|
|
2c7f9bd449 | ||
|
|
d1ee1eb4e1 | ||
|
|
f9dd7644cc | ||
|
|
3f94d86db4 | ||
|
|
9882234645 | ||
|
|
838f1a0678 | ||
|
|
c111b2beaf | ||
|
|
ebad7240cc | ||
|
|
8ed85a5fb4 | ||
|
|
3beaf71e16 | ||
|
|
38f1e838a5 | ||
|
|
0f4ec77ac0 | ||
|
|
28d079e83f | ||
|
|
5970f2a577 | ||
|
|
9dea1a40db | ||
|
|
dbe131633a | ||
|
|
277ce801e6 | ||
|
|
7e5e973d09 | ||
|
|
36fff814bf | ||
|
|
94cb7f7956 | ||
|
|
edbefc256b | ||
|
|
8af8e13686 | ||
|
|
3d2d3b9948 | ||
|
|
91f60763d8 | ||
|
|
54401165e8 | ||
|
|
b99efb8fc8 | ||
|
|
ad102421cb | ||
|
|
9be00683d9 | ||
|
|
e76f36a1be | ||
|
|
70b62a6c6a | ||
|
|
61b3fe4ebd | ||
|
|
30a93dbef7 | ||
|
|
b6956bd6fd | ||
|
|
7a4b7e23c5 | ||
|
|
b34a7610f5 | ||
|
|
cf680e43d8 | ||
|
|
3a311906bf | ||
|
|
d9789a636e | ||
|
|
cd8a9078d5 | ||
|
|
121d369ab8 | ||
|
|
1a0eb48b97 | ||
|
|
14e863930c | ||
|
|
6f5775381a | ||
|
|
ee9f85628d | ||
|
|
3000fc0b35 | ||
|
|
bab7fa1f39 | ||
|
|
0d19b01229 | ||
|
|
2b2d558c87 | ||
|
|
94f25f73fa | ||
|
|
5bd16c0e77 | ||
|
|
7bb40dd882 | ||
|
|
bb99c050b6 | ||
|
|
31cdf10011 | ||
|
|
02c29c137c | ||
|
|
e9afe3fdae | ||
|
|
ce9517885b | ||
|
|
6a41d655de | ||
|
|
9b8588df79 | ||
|
|
df97fa71a0 | ||
|
|
b9f1b4e170 | ||
|
|
d89acfd01d | ||
|
|
3ea7b8e03e | ||
|
|
59881232bf | ||
|
|
0575cdab18 | ||
|
|
7f6b5d1b58 | ||
|
|
f365e8abe1 | ||
|
|
b7edd3fa26 | ||
|
|
367a210996 | ||
|
|
c2a4a39ea0 | ||
|
|
e056323677 | ||
|
|
b8759e4acd | ||
|
|
e6a3df6f08 | ||
|
|
617dfbf0e2 | ||
|
|
e4c9bf5ba4 | ||
|
|
910091b6c6 | ||
|
|
92b8ce3a89 | ||
|
|
8a276fc073 | ||
|
|
baa2e890ba | ||
|
|
a9f4aee93f | ||
|
|
144926774d | ||
|
|
3ee82c38d5 | ||
|
|
c9e85d3159 | ||
|
|
d755a42530 | ||
|
|
674a7f3f57 | ||
|
|
f70df1fff2 | ||
|
|
2553e6464b | ||
|
|
746e04cf23 | ||
|
|
cecc163230 | ||
|
|
edef3b961a | ||
|
|
254583a135 | ||
|
|
435da08a02 | ||
|
|
945c060b67 | ||
|
|
83fd4bf68a | ||
|
|
f11c4531e9 | ||
|
|
f36c24e5d0 | ||
|
|
23a91b346d | ||
|
|
08b8d1e3e2 | ||
|
|
c2a2a11be3 | ||
|
|
54abbddbe5 | ||
|
|
c6425adffc | ||
|
|
20f658ffbb | ||
|
|
ed957cf6b3 | ||
|
|
8eb465d26f | ||
|
|
6ff06d4609 | ||
|
|
c817b1edb7 | ||
|
|
f7c6a52f6d | ||
|
|
ce03af265e | ||
|
|
5ba87d9933 | ||
|
|
db32bcfc06 | ||
|
|
11038348a3 | ||
|
|
3e343bdf66 | ||
|
|
e131563c8f | ||
|
|
0094cc9afe | ||
|
|
5fde923aa0 | ||
|
|
ac780beb2c | ||
|
|
4d4c781a8e | ||
|
|
85ace455da | ||
|
|
8e09983805 | ||
|
|
1e3a4f2657 | ||
|
|
0991adb756 | ||
|
|
0693fde962 | ||
|
|
c1008c87a7 | ||
|
|
7fb5f92200 | ||
|
|
02e4ec4584 | ||
|
|
50c8207fed | ||
|
|
3e707708ec | ||
|
|
727eeb74fe | ||
|
|
ecc7690046 | ||
|
|
1f5e3e0daa | ||
|
|
b69720836b | ||
|
|
468cca81d1 | ||
|
|
5c866ae133 | ||
|
|
2401620dc6 | ||
|
|
2457b96f7d | ||
|
|
9655c53a3b | ||
|
|
3b382c0642 | ||
|
|
a4ffdb0316 | ||
|
|
08fc272f1b | ||
|
|
c23f6c0161 | ||
|
|
c1eab8e3c7 | ||
|
|
fbe30c7ad6 | ||
|
|
acc3ede87d | ||
|
|
a79def43c5 | ||
|
|
b5592b8466 | ||
|
|
cb327e902f | ||
|
|
2a9e72da41 | ||
|
|
e724ef7291 | ||
|
|
dfc2c110d6 | ||
|
|
32235cfd9d | ||
|
|
6457eded48 | ||
|
|
5cc41e8455 | ||
|
|
cb51396c80 | ||
|
|
2a6e2c0450 | ||
|
|
e22b4ec085 | ||
|
|
71efd5c97f | ||
|
|
b4a83c1969 | ||
|
|
ee35ce9839 | ||
|
|
7a8a4fe71d | ||
|
|
2e36c0a662 | ||
|
|
71b403bbe1 | ||
|
|
c5d22ace25 | ||
|
|
81671abd01 | ||
|
|
da1b302a34 | ||
|
|
3f7068541f | ||
|
|
2fdc93b3fd | ||
|
|
907dcd829a | ||
|
|
b2ef314960 | ||
|
|
6af75013d4 | ||
|
|
fd381a9a93 | ||
|
|
e29ea66e41 | ||
|
|
d7e218350c | ||
|
|
569dfb5502 | ||
|
|
a14689f66b | ||
|
|
ee702ff641 | ||
|
|
1a142e5250 | ||
|
|
c9a4697473 | ||
|
|
4b38d93aa9 | ||
|
|
5d2851de36 | ||
|
|
f6e6a73b4d | ||
|
|
3674acc4f1 | ||
|
|
ab5365423b | ||
|
|
e5aedd5cb1 | ||
|
|
60ea7fde8a | ||
|
|
7db9a33cef | ||
|
|
88c95375f0 | ||
|
|
d2785543b4 | ||
|
|
9df86d771e | ||
|
|
714d64afb6 | ||
|
|
f3abd57925 | ||
|
|
e9023340dd | ||
|
|
43f4b2c5fb | ||
|
|
cd72e1c06b | ||
|
|
92210edc16 | ||
|
|
5111f026e6 | ||
|
|
6327e2a5dc | ||
|
|
604f007a30 | ||
|
|
38596ca77f | ||
|
|
c0a2a13efe | ||
|
|
35c2bac898 | ||
|
|
fb3f11a93f | ||
|
|
8629b0418d | ||
|
|
af4e5ae9de | ||
|
|
1f951556fc | ||
|
|
87446cfcb3 | ||
|
|
943e9994c8 | ||
|
|
bd57ac57a5 | ||
|
|
db3519a559 | ||
|
|
33e9d1e1d0 | ||
|
|
32d09cff7d | ||
|
|
976c9d0f9b | ||
|
|
b261465599 | ||
|
|
67a0d97f60 | ||
|
|
5ebd5632c4 | ||
|
|
141c9f8986 | ||
|
|
dbb6ab7fdf | ||
|
|
8cf09955fc | ||
|
|
19cde16194 | ||
|
|
6a7659b59e | ||
|
|
31349a62b6 | ||
|
|
d8995d15f7 | ||
|
|
2f822d4ee4 | ||
|
|
02cfe7a453 | ||
|
|
8ea57846fa | ||
|
|
f704fd7ea4 | ||
|
|
bb3167d5c4 | ||
|
|
235f196152 | ||
|
|
adbc9b1a22 | ||
|
|
cd445a2acd | ||
|
|
210ee5285c | ||
|
|
644250f3f3 | ||
|
|
34c633ebb9 | ||
|
|
c5da8c4a5a | ||
|
|
6aeb32bf3f | ||
|
|
531817f553 | ||
|
|
80d72627b0 | ||
|
|
37e45d81be | ||
|
|
7324ab1060 | ||
|
|
2c866ef2bb | ||
|
|
9ed1ecfcb4 | ||
|
|
e93cc1c920 | ||
|
|
d77231ae1a | ||
|
|
5bd41ba2f4 | ||
|
|
b29af7898a | ||
|
|
03e129618d | ||
|
|
f0ae5ffeef | ||
|
|
a80e634776 | ||
|
|
96612f11e1 | ||
|
|
c465c860ca | ||
|
|
db1d1d26fc | ||
|
|
6a2cbbe075 | ||
|
|
7d132fdbfa | ||
|
|
0b66b11ae0 | ||
|
|
8566183f0d | ||
|
|
f755f96cb1 | ||
|
|
341f599840 | ||
|
|
c1842b0155 | ||
|
|
8bbf5bcc1c | ||
|
|
1febdfd7a8 | ||
|
|
481174b1d2 | ||
|
|
724a15866c | ||
|
|
f1c56fe70c | ||
|
|
e016679e67 | ||
|
|
5073f57167 | ||
|
|
e8dede3910 | ||
|
|
47433e4b42 | ||
|
|
0618fd53dc | ||
|
|
799e0ee367 | ||
|
|
c29dfab48f | ||
|
|
44fc7a257b | ||
|
|
dc8fbb05ef | ||
|
|
41ee457cc7 | ||
|
|
b14facc9dc | ||
|
|
6e24064711 | ||
|
|
66d2401494 | ||
|
|
93d0220517 | ||
|
|
311867f730 | ||
|
|
b38cbf8ae5 | ||
|
|
ba186254fd | ||
|
|
517e5d117b | ||
|
|
20302f8312 | ||
|
|
b5ccb5448b | ||
|
|
7d3b6d12c0 | ||
|
|
fc2fb92d7b | ||
|
|
795b5bdf55 | ||
|
|
e2aec15879 | ||
|
|
3741c53e8b | ||
|
|
5b6d99a126 | ||
|
|
688bc53da9 | ||
|
|
b456c0feae | ||
|
|
69e068f80b | ||
|
|
d11f67ba2e | ||
|
|
921fa1ec08 | ||
|
|
0a4a9e3f47 | ||
|
|
5cf2074338 | ||
|
|
0bad4aa1c0 | ||
|
|
dfd0c5f758 | ||
|
|
0bf1f545c1 | ||
|
|
85d00b6aca | ||
|
|
b90672ae0e | ||
|
|
ccd04e73b1 | ||
|
|
5321ce17d4 | ||
|
|
9337c6d7aa | ||
|
|
3b0744dcd3 | ||
|
|
36e88a6a2d | ||
|
|
58902f97c4 | ||
|
|
e1ef69a0c4 | ||
|
|
46fa0f3cd0 | ||
|
|
1d3edaf62e | ||
|
|
adeb007cb0 | ||
|
|
45e6bcf26f | ||
|
|
5ba1a602fe | ||
|
|
7d4d645935 | ||
|
|
23f56520e2 | ||
|
|
ee8e184c10 | ||
|
|
db83fba992 | ||
|
|
c103b9e6f3 | ||
|
|
a757c437e2 | ||
|
|
49a07c4ea0 | ||
|
|
41a2f6803d | ||
|
|
d7e3d03c73 | ||
|
|
4c999721bb | ||
|
|
f5ad535387 | ||
|
|
f79ca0f232 | ||
|
|
8da71f60ed | ||
|
|
ecd4a337ff | ||
|
|
04d8d9b704 | ||
|
|
01bc89dd04 | ||
|
|
4d619286c3 | ||
|
|
22a3c1c4db | ||
|
|
b61dced93b | ||
|
|
346a049c18 | ||
|
|
bc65502fe9 | ||
|
|
aa1c155123 | ||
|
|
b2bfe11743 | ||
|
|
164944dd0c | ||
|
|
9356fdfaa8 | ||
|
|
27cd6e6e5b | ||
|
|
f74e8f7250 | ||
|
|
aa140eb846 | ||
|
|
54aa905699 | ||
|
|
2fc315c51e | ||
|
|
45244de78e | ||
|
|
99137d8fef | ||
|
|
0735847508 | ||
|
|
e8ea8c8da3 | ||
|
|
d50d618e01 | ||
|
|
02310f2319 | ||
|
|
f23f0d259c | ||
|
|
327369a761 | ||
|
|
c56498a529 | ||
|
|
16114cb3bd | ||
|
|
808ac0f0e6 | ||
|
|
b4b24aadfd | ||
|
|
cbe9c53262 | ||
|
|
4c2591af36 | ||
|
|
1b8069eec8 | ||
|
|
52a03dadbe | ||
|
|
4d9e6be394 | ||
|
|
cc91e49f7b | ||
|
|
605933c516 | ||
|
|
7ed4c7fac9 | ||
|
|
7224f97781 | ||
|
|
1a2f4251ed | ||
|
|
ab30d5981d | ||
|
|
458aecdf7b | ||
|
|
78bcc97591 | ||
|
|
029444f7be | ||
|
|
d3fdc11e56 | ||
|
|
b5dd51a579 | ||
|
|
1e13e8f8a3 | ||
|
|
c9b8d1a11a | ||
|
|
5932aefdb0 | ||
|
|
53e921dc7f | ||
|
|
0835753299 | ||
|
|
d701f840db | ||
|
|
08f7c21fc2 | ||
|
|
5dfdcb1d85 | ||
|
|
049b5d8039 | ||
|
|
3923dc9a33 | ||
|
|
b6d84674f6 | ||
|
|
9cb8f73738 | ||
|
|
cb1b15dbcc | ||
|
|
6020933f6d | ||
|
|
ae583aea1e | ||
|
|
8cd37c5c61 | ||
|
|
36427eb4b7 | ||
|
|
1e6f22ce59 | ||
|
|
8584d710c0 | ||
|
|
90440786b8 | ||
|
|
f97a26c6cb | ||
|
|
8d342c099e | ||
|
|
bed3d9982c | ||
|
|
588a1a7c9d | ||
|
|
e28acc8495 | ||
|
|
3ee5fa6d86 | ||
|
|
2717346e9d | ||
|
|
31d5e384e2 | ||
|
|
13cf64cf2e | ||
|
|
4bd82f7b01 | ||
|
|
efe7855776 | ||
|
|
dca1e67105 | ||
|
|
6695abda2f | ||
|
|
ae3601af92 | ||
|
|
b25ec93d14 | ||
|
|
bd557fbdb4 | ||
|
|
4b8485b087 | ||
|
|
89dd109a18 | ||
|
|
846c4500f7 | ||
|
|
445da5447d | ||
|
|
78afba5c29 | ||
|
|
46c6001c9d | ||
|
|
3b365d330a | ||
|
|
a9bdc255df | ||
|
|
4fb32fad37 | ||
|
|
b34d31f6a7 | ||
|
|
78d87038aa | ||
|
|
be27a72d86 | ||
|
|
aa86158caf | ||
|
|
de00ac1622 | ||
|
|
ed41272e81 | ||
|
|
7af0db9631 | ||
|
|
799ba3bc46 | ||
|
|
60f378839c | ||
|
|
72fa34a5cf | ||
|
|
e7521f0246 | ||
|
|
bb4dff1caa | ||
|
|
7312385dd6 | ||
|
|
8bd4f8b23c | ||
|
|
e80f294e80 | ||
|
|
b57e70ad30 | ||
|
|
9ac651afd5 | ||
|
|
00a8dee744 | ||
|
|
63270d9a4e | ||
|
|
f1242397be | ||
|
|
7957f8553c | ||
|
|
c4967cf252 | ||
|
|
af3da468ee | ||
|
|
a722af88e0 | ||
|
|
525117f3fd | ||
|
|
f35bf05726 | ||
|
|
01902c981c | ||
|
|
72489b0979 | ||
|
|
fa793a828b | ||
|
|
d2a1501e82 | ||
|
|
892c67bae5 | ||
|
|
fe35a8c782 | ||
|
|
b608efa5da | ||
|
|
8c0b7e45de | ||
|
|
3b7e42c280 | ||
|
|
c6199fa00d | ||
|
|
e3db3728f9 | ||
|
|
f3cd3a4e24 | ||
|
|
634d85c763 | ||
|
|
18e09702f3 | ||
|
|
4ee0fd5c54 | ||
|
|
a752574f66 | ||
|
|
f2d574fab5 | ||
|
|
2cf6a67a53 | ||
|
|
3857ab22d3 | ||
|
|
de8af9c9f1 | ||
|
|
cc12f9863e | ||
|
|
a5f671fa76 | ||
|
|
c6fe8397a7 | ||
|
|
d3154bd94f | ||
|
|
3639509a69 | ||
|
|
4c8349fbb5 | ||
|
|
fcf518353c | ||
|
|
e7c1835b19 | ||
|
|
5f12b870e6 | ||
|
|
9ef65f3f25 | ||
|
|
c6552d0b60 | ||
|
|
78fa0cb41b | ||
|
|
d98c8242af | ||
|
|
4ae4cc2169 | ||
|
|
9ac6bdbeaa | ||
|
|
8fc6f81f8d | ||
|
|
9a4363a6a5 | ||
|
|
50c42776e7 | ||
|
|
fb8b63cffa | ||
|
|
36e6d53374 | ||
|
|
9cc14af668 | ||
|
|
46f484461f | ||
|
|
7863d42834 | ||
|
|
743c206bc7 | ||
|
|
9691405fd4 | ||
|
|
12f9a05106 | ||
|
|
be8c7e3ee5 | ||
|
|
f3b6f58344 | ||
|
|
f65540dd19 | ||
|
|
6fb06a0564 | ||
|
|
acbd99f2ed | ||
|
|
541cb5244d | ||
|
|
9214b4a5da | ||
|
|
9cbff6835b | ||
|
|
8818f7b7e5 | ||
|
|
8fc0bc98f3 | ||
|
|
021048d95e | ||
|
|
aa46c9fb27 | ||
|
|
3fe9bfc719 | ||
|
|
4ca027de06 | ||
|
|
bc79530c52 | ||
|
|
aecc1adbaf | ||
|
|
582de7c18c | ||
|
|
f6a1fa94d3 | ||
|
|
51c3f8a378 | ||
|
|
05b40efddf | ||
|
|
7f379482a8 | ||
|
|
06eb66840a | ||
|
|
5dad177d3e | ||
|
|
5077a3d43f | ||
|
|
dae6437421 | ||
|
|
68c08ba9eb | ||
|
|
71b15b08eb | ||
|
|
afd6447581 | ||
|
|
e923fb045e | ||
|
|
5cb4415032 | ||
|
|
7b1a7fd20e | ||
|
|
38bda21f84 | ||
|
|
3997bebb76 | ||
|
|
9a4b3034ea | ||
|
|
f26a418a87 | ||
|
|
729e7ef6d5 | ||
|
|
09f0530d57 | ||
|
|
6ef722e7ea | ||
|
|
c7c112ee71 | ||
|
|
42682120ef | ||
|
|
6bb27c3b24 | ||
|
|
dd95b638e8 | ||
|
|
cb6fe2d32c | ||
|
|
a6bd17fa01 | ||
|
|
4ddc6294e1 | ||
|
|
916f079ecc | ||
|
|
426004e795 | ||
|
|
09f68b767c | ||
|
|
c3a7da959e | ||
|
|
5068b081c9 | ||
|
|
19054ea5f2 | ||
|
|
1ecc87ab26 | ||
|
|
b7e947b915 | ||
|
|
3eed685906 | ||
|
|
80a52d8c3c | ||
|
|
ec8f2368da | ||
|
|
b89592b84f | ||
|
|
2d5f24b4de | ||
|
|
a82579dc60 | ||
|
|
4d4113fccc | ||
|
|
1cc13235cf | ||
|
|
a1e11d9521 | ||
|
|
e72c78cd7f | ||
|
|
37e3424782 | ||
|
|
768ef23f29 | ||
|
|
64cf90313d | ||
|
|
ca7b488f4d | ||
|
|
bcab73a2f5 | ||
|
|
86a7dfeba5 | ||
|
|
84e4f6fee8 | ||
|
|
4d115fd895 | ||
|
|
3100f342c3 | ||
|
|
41d9638ce6 | ||
|
|
83eab8e5c5 | ||
|
|
8d2d10b15a | ||
|
|
eb30cf84b4 | ||
|
|
b5abe21889 | ||
|
|
0b4fe3148f | ||
|
|
e4c2841444 | ||
|
|
941e2ee411 | ||
|
|
8705232ea3 | ||
|
|
3c104111a0 | ||
|
|
02f7e386a4 | ||
|
|
a006bbed98 | ||
|
|
12b298abd6 | ||
|
|
0018ffb5bb | ||
|
|
6a939480c9 | ||
|
|
2221d27722 | ||
|
|
25af73bee8 | ||
|
|
5d8ae712b5 | ||
|
|
7bdec88efc | ||
|
|
52dbc4b6e7 | ||
|
|
5d1545dd2a | ||
|
|
bfb97db2a5 | ||
|
|
99165f3c82 | ||
|
|
3a8f88b703 | ||
|
|
1950db98ab | ||
|
|
4875dcede0 | ||
|
|
5c58ba44bc | ||
|
|
683cc32a3b | ||
|
|
55e1580363 | ||
|
|
e50144581b | ||
|
|
19e7535a5b | ||
|
|
414b954b92 | ||
|
|
9d8a776bd9 | ||
|
|
264866ab93 | ||
|
|
04cabd15eb | ||
|
|
85930d5564 | ||
|
|
b24a38e42d | ||
|
|
8cb15160ac | ||
|
|
011947daf2 | ||
|
|
0c79231eb9 | ||
|
|
251a01d7ac | ||
|
|
fd7ee9be7a | ||
|
|
6fa9594fef | ||
|
|
51527db42e | ||
|
|
8437058227 | ||
|
|
c885670079 | ||
|
|
1f33d7db0c | ||
|
|
9823909cfd | ||
|
|
e3a242ae56 | ||
|
|
967cfae906 | ||
|
|
2a36ba7d3c | ||
|
|
c73870c129 | ||
|
|
9de6eea4f0 | ||
|
|
fde5420caa | ||
|
|
dbe7b35e38 | ||
|
|
0e5af5accf | ||
|
|
dc1eff24e8 | ||
|
|
697c4b851f | ||
|
|
e0d0a98fdb | ||
|
|
9337df512f | ||
|
|
e1537e3ef6 | ||
|
|
8f67e4d9fe | ||
|
|
164426f88c | ||
|
|
022b78581f | ||
|
|
313de4c467 | ||
|
|
d2b947bedd | ||
|
|
bcaa1ad81d | ||
|
|
c8add75f7c | ||
|
|
99af60cfa3 | ||
|
|
559faf745a | ||
|
|
31a69933e0 | ||
|
|
8f9d9b057a | ||
|
|
765fcbe5da | ||
|
|
f18614588a | ||
|
|
61c2fd4c51 | ||
|
|
9a16993762 | ||
|
|
2adccca817 | ||
|
|
1c90e83ae1 | ||
|
|
091ffc65bd | ||
|
|
7320b911d6 | ||
|
|
452d3e0af6 | ||
|
|
5c10516850 | ||
|
|
a6a537b638 | ||
|
|
6824dbb59a | ||
|
|
43cfe73582 | ||
|
|
4a14538564 | ||
|
|
83799ee4c8 | ||
|
|
ec9d28df7a | ||
|
|
e9c3399d32 | ||
|
|
241613d5cf | ||
|
|
e29e972bf1 | ||
|
|
1c2c443d6d | ||
|
|
14db33addb | ||
|
|
adbc1eace3 | ||
|
|
4191b9f92e | ||
|
|
e422a93883 | ||
|
|
cf396c364b | ||
|
|
38f209a57d | ||
|
|
a9ff55017b | ||
|
|
3e49c0c7f9 | ||
|
|
f733f8c5d9 | ||
|
|
9388ad70b3 | ||
|
|
8ad850072a | ||
|
|
535c8ec92f | ||
|
|
ec075413b3 | ||
|
|
aa2beb7027 | ||
|
|
278c8ac541 | ||
|
|
93419222d3 | ||
|
|
80cf22c97c | ||
|
|
b43149f9d3 | ||
|
|
bc97db94e5 | ||
|
|
24d43d3924 | ||
|
|
3193d8a0cb | ||
|
|
2e06869ae3 | ||
|
|
e645c539a0 | ||
|
|
15b224917a | ||
|
|
67530cc3a5 | ||
|
|
bc6ec9a3d0 | ||
|
|
664a0d9adf | ||
|
|
cb9b2bb73d | ||
|
|
0b6a3930fc | ||
|
|
eeac9dbaf1 | ||
|
|
de1753aebe | ||
|
|
b23b5fa2f1 | ||
|
|
7a81263b34 | ||
|
|
936019736b | ||
|
|
3b163d66f9 | ||
|
|
a2f4c098e3 | ||
|
|
282387cc17 | ||
|
|
d09b992df5 | ||
|
|
5b4bf11250 | ||
|
|
1bb3328a0a | ||
|
|
a046070f8a | ||
|
|
b8a14c1dfa | ||
|
|
87014a0c5c | ||
|
|
f5583edec7 | ||
|
|
344a61d5a5 | ||
|
|
a50f7ce802 | ||
|
|
b6bfef3b65 | ||
|
|
7d7c853045 | ||
|
|
7d95cbad71 | ||
|
|
2fc1c05d6f | ||
|
|
2f51cee555 | ||
|
|
43f89063e0 | ||
|
|
edc67d6aa5 | ||
|
|
7a72955ec8 | ||
|
|
9bfb92cf74 | ||
|
|
fde7a4bc1f | ||
|
|
99ee16b438 | ||
|
|
7eaec845fc | ||
|
|
dea015592f | ||
|
|
8914eeeaf8 | ||
|
|
8a407bebbb | ||
|
|
b52c9d7fa3 | ||
|
|
15ce2ae731 | ||
|
|
2e296abd93 | ||
|
|
a6b62c89a2 | ||
|
|
45d6fa2047 | ||
|
|
7492d404c0 | ||
|
|
13cdf776f5 | ||
|
|
f65314bd94 | ||
|
|
53636a3453 | ||
|
|
23fb25fc17 | ||
|
|
b03949626e | ||
|
|
55408ece40 | ||
|
|
d0391b5f29 | ||
|
|
afc4e4536f | ||
|
|
83fe14288a | ||
|
|
5ce0ad1221 | ||
|
|
9593cf952d | ||
|
|
0e313d792a | ||
|
|
0dcb83a5a5 | ||
|
|
e377355ef1 | ||
|
|
55799985e9 | ||
|
|
ae7dba63b2 | ||
|
|
f1c33e30a2 | ||
|
|
2d769a83ce | ||
|
|
2065819ab9 | ||
|
|
36b0ad66cf | ||
|
|
eeef799bf7 | ||
|
|
1c9f0f6018 | ||
|
|
e61c402067 | ||
|
|
a09ad95cc0 | ||
|
|
a9ba11f35f | ||
|
|
4df8f09549 | ||
|
|
c197036c1f | ||
|
|
d9aa817221 | ||
|
|
c2f6a8fc22 | ||
|
|
d96fda1575 | ||
|
|
5242f3918e | ||
|
|
3128f8d336 | ||
|
|
19c3297538 | ||
|
|
f1c4018d8f | ||
|
|
e4a4b91dce | ||
|
|
50bf45770a | ||
|
|
1e84bc6f1d | ||
|
|
e9e1f9713f | ||
|
|
9c0d1000a1 | ||
|
|
fc974bf9d4 | ||
|
|
bcc013bdcf | ||
|
|
41a3385e99 | ||
|
|
99163201c6 | ||
|
|
0093e835f4 | ||
|
|
92a746de78 | ||
|
|
58dec25bbb | ||
|
|
021d3d4147 | ||
|
|
34977008e6 | ||
|
|
b7464f45ad | ||
|
|
f84de48e15 | ||
|
|
4ddd09df85 | ||
|
|
b52d3dd331 | ||
|
|
51ac32547f | ||
|
|
2e4aaf2f3b | ||
|
|
6c34162bb0 | ||
|
|
4ec7219318 | ||
|
|
cdef10dcef | ||
|
|
00ac8deba3 | ||
|
|
bcc275e244 | ||
|
|
899cd74b01 | ||
|
|
9595e64334 | ||
|
|
bc2108dd5a | ||
|
|
7bd358b53b | ||
|
|
e738eed8d7 | ||
|
|
dd43ca449e | ||
|
|
51a65f746b | ||
|
|
cb32063b68 | ||
|
|
f160a9091a | ||
|
|
6927401c1d | ||
|
|
384e4243bc | ||
|
|
95267cb88b | ||
|
|
e9d3de1859 | ||
|
|
038ebeb0f8 | ||
|
|
1099680118 | ||
|
|
c9455d27da | ||
|
|
f13edd77c9 | ||
|
|
cabbaa0acd | ||
|
|
6eec6985c2 | ||
|
|
052597513d | ||
|
|
04624beeaa | ||
|
|
3c3bfc2b8f | ||
|
|
2fbd3e66fa | ||
|
|
791457e0fe | ||
|
|
22519cd731 | ||
|
|
bf0eb143a6 | ||
|
|
08fe7ee42a | ||
|
|
848e0ae505 | ||
|
|
2e8c7a9acd | ||
|
|
f868b4bebb | ||
|
|
4b259031f3 | ||
|
|
1764aa3b3a | ||
|
|
b97d07df3d | ||
|
|
e34d535b61 | ||
|
|
e1d4956175 | ||
|
|
738bc9e968 | ||
|
|
15b2813abc | ||
|
|
c0fa8cefd1 | ||
|
|
50c98dab19 | ||
|
|
2421a655cf | ||
|
|
0c35a1fa24 | ||
|
|
17812bf744 | ||
|
|
463d81a27c | ||
|
|
c37c1fbb2c | ||
|
|
343de88d62 | ||
|
|
f368d7cb9d | ||
|
|
db07567e64 | ||
|
|
8a81b42e0c | ||
|
|
7952268226 | ||
|
|
2d13c3b4b4 | ||
|
|
ab37de4292 | ||
|
|
c45cb58dbc | ||
|
|
1a70218a74 | ||
|
|
1ec3ad24ef | ||
|
|
b0a2e0ce33 | ||
|
|
ddd1726bf1 | ||
|
|
ebb6a1c63a | ||
|
|
817bfebb71 | ||
|
|
94822deddc | ||
|
|
cc7e1a4b2f | ||
|
|
defd0bd38a | ||
|
|
80b4ca0841 | ||
|
|
f9c087e93a | ||
|
|
c9e0ea7566 | ||
|
|
5f69257625 | ||
|
|
acb22024a9 | ||
|
|
f12e63436a | ||
|
|
c7d457d373 | ||
|
|
08b6b901a9 | ||
|
|
f6df7c905b | ||
|
|
df9a0086d5 | ||
|
|
07176252c8 | ||
|
|
0541ec9947 | ||
|
|
abc9d205a5 | ||
|
|
31e24fa77b | ||
|
|
44976c8eb9 | ||
|
|
d61e6dd01d | ||
|
|
89b146a2c4 | ||
|
|
f32379d492 | ||
|
|
1872296417 | ||
|
|
bc1cfad1c2 | ||
|
|
7bd383b7cf | ||
|
|
aa66a87579 | ||
|
|
847df782b5 | ||
|
|
95d697a99a | ||
|
|
a7604e02c4 | ||
|
|
f15e41f8d9 | ||
|
|
920d7d4f07 | ||
|
|
5ac03ea3b9 | ||
|
|
ca51542b16 | ||
|
|
a770007e4d | ||
|
|
9624eeb11a | ||
|
|
7c7d329541 | ||
|
|
2c223a90e6 | ||
|
|
619e5c223c | ||
|
|
a320e22d19 | ||
|
|
3e62a88f97 | ||
|
|
fa5cee60d5 | ||
|
|
b0b305f4af | ||
|
|
98bd098999 | ||
|
|
12d37186a3 | ||
|
|
294d8ad651 | ||
|
|
efb8f08c74 | ||
|
|
08f2f09f52 | ||
|
|
347f9c1562 | ||
|
|
40c25713ac | ||
|
|
c4113e661d | ||
|
|
0463ecc23f | ||
|
|
496cdba896 | ||
|
|
da37d92265 | ||
|
|
ca8f21c2bc | ||
|
|
8a312b393f | ||
|
|
5baa2b884a | ||
|
|
15cb9221dc | ||
|
|
43b36716ae | ||
|
|
e926288f3e | ||
|
|
33df7f0d41 | ||
|
|
1c552404c0 | ||
|
|
cd6cb1f36c | ||
|
|
257343852f | ||
|
|
3cf14ad066 | ||
|
|
d404a7cdcb | ||
|
|
1d536974ab | ||
|
|
c9cd0307c6 | ||
|
|
2ec3b1d0f2 | ||
|
|
e4a17902fd | ||
|
|
752ccd8502 | ||
|
|
2e474b8dd6 | ||
|
|
f72db5731e | ||
|
|
17c6458f0b | ||
|
|
77d92f5c23 | ||
|
|
9f308f6aae | ||
|
|
ad149439ba | ||
|
|
520ed9204c | ||
|
|
b34c61f00d | ||
|
|
f87c10686f | ||
|
|
47c41077d5 | ||
|
|
2a6f46e820 | ||
|
|
3c0982974b | ||
|
|
eeac929ca6 | ||
|
|
b6f76f8885 | ||
|
|
26d41b11f3 | ||
|
|
013f47ada2 | ||
|
|
8b50062f86 | ||
|
|
2178764db1 | ||
|
|
57dd91955b | ||
|
|
bf74f24eb2 | ||
|
|
46700f351c | ||
|
|
9132316971 | ||
|
|
514a663b1d | ||
|
|
facdfd564f | ||
|
|
d6a46b86e2 | ||
|
|
771ecba016 | ||
|
|
b675b02604 | ||
|
|
8b30857701 | ||
|
|
2bdee0f848 | ||
|
|
80af2a0f8c | ||
|
|
9a11d40a6a | ||
|
|
91274eb7c1 | ||
|
|
9bc3eb1faf | ||
|
|
d3b1c4c053 | ||
|
|
a66d998810 | ||
|
|
96a1cf8bc5 | ||
|
|
29d16b90d9 | ||
|
|
28165a06f6 | ||
|
|
adaca820b5 | ||
|
|
26d976b684 | ||
|
|
e46cdb41fc | ||
|
|
2c6e901eb6 | ||
|
|
244b33600f | ||
|
|
cb0f0f195d | ||
|
|
4c44421169 | ||
|
|
702a75dd67 | ||
|
|
a502508d73 | ||
|
|
559d9b573c | ||
|
|
d7009ba6f3 | ||
|
|
6c6785442d | ||
|
|
372ba9104e | ||
|
|
963d43a336 | ||
|
|
546da0d579 | ||
|
|
85a8051e66 | ||
|
|
0cdaa1fd2d | ||
|
|
4261c92f61 | ||
|
|
7e7e9c17b7 | ||
|
|
d51ed5166c | ||
|
|
b3b295f721 | ||
|
|
bf16687aa6 | ||
|
|
4a61fe197c | ||
|
|
c99e22cec0 | ||
|
|
6c71fcdc3b | ||
|
|
1ad8cbda8a | ||
|
|
80ed9701e4 | ||
|
|
dda4b73f26 | ||
|
|
67c5ca876a | ||
|
|
a69ce967dc | ||
|
|
24130959c9 | ||
|
|
491f012828 | ||
|
|
4ed1743a71 | ||
|
|
7f669023f6 | ||
|
|
098bdf7156 | ||
|
|
d55e23081a | ||
|
|
58ebc6b7fd | ||
|
|
6965be7ba2 | ||
|
|
6030e21aad | ||
|
|
14bd0f1eaa | ||
|
|
12380f1274 | ||
|
|
b2251d9ea8 | ||
|
|
a8735faf63 | ||
|
|
5ea604d500 | ||
|
|
f9daab0dbe | ||
|
|
e1bd079043 | ||
|
|
eb434eaf3d | ||
|
|
22536144e7 | ||
|
|
d425dd635c | ||
|
|
025f321977 | ||
|
|
d6c4f4f98d | ||
|
|
9f109f203e | ||
|
|
ee269c66ad | ||
|
|
b5bf60cbce | ||
|
|
7d8a0f7b91 | ||
|
|
148b2c74af | ||
|
|
2d8473e34d | ||
|
|
ec341bda32 | ||
|
|
eb703318ce | ||
|
|
947571dcf3 | ||
|
|
2169008082 | ||
|
|
6ede63da73 | ||
|
|
59d7b90a41 | ||
|
|
744d4983e5 | ||
|
|
f0c280256e | ||
|
|
e679e91687 | ||
|
|
16fa0eb1e1 | ||
|
|
fb5261a24c | ||
|
|
c51012c131 | ||
|
|
1bb1129194 | ||
|
|
1d5746f2ad | ||
|
|
6a27505c1f | ||
|
|
5e462f6816 | ||
|
|
8e7805d105 | ||
|
|
07f50b56fc | ||
|
|
146cfe99fc | ||
|
|
4486f779ae | ||
|
|
6f7c354c19 | ||
|
|
3ab3b6ed27 | ||
|
|
c752fffe88 | ||
|
|
d5fcfc5220 | ||
|
|
3b40214552 | ||
|
|
c371b2266d | ||
|
|
6ddf735857 | ||
|
|
47b2db40fb | ||
|
|
c10dab1bea | ||
|
|
fe6f0cfb67 | ||
|
|
2d074b3886 | ||
|
|
151cd706b2 | ||
|
|
a2cbf6090c | ||
|
|
180b3e9aa0 | ||
|
|
a21aee9ca5 | ||
|
|
ace271e6bf | ||
|
|
7171188068 | ||
|
|
0f6f5d4059 | ||
|
|
760fb35f3a | ||
|
|
d08bd4aa6f | ||
|
|
3f8720c57e | ||
|
|
5da57d0e6b | ||
|
|
7a517cd5d6 | ||
|
|
460ec2444b | ||
|
|
fbab970c4b | ||
|
|
61c78397cc | ||
|
|
28fe25f56f | ||
|
|
aa01000991 | ||
|
|
85840f77ec | ||
|
|
6a344d1438 | ||
|
|
a2e6ba132d | ||
|
|
1822ff7295 | ||
|
|
e1fb2464c7 | ||
|
|
1c67cf8ef3 | ||
|
|
0ad6b58a9f | ||
|
|
955071e5f8 | ||
|
|
4231fc8aa4 | ||
|
|
64372b20d4 | ||
|
|
ef709c75eb | ||
|
|
bb5b2d0336 | ||
|
|
a5149bf17d | ||
|
|
abf9c3b769 | ||
|
|
92b6c975bd | ||
|
|
f6dc1ec7a8 | ||
|
|
b50980e880 | ||
|
|
206cff9d34 | ||
|
|
14fe0a4e03 | ||
|
|
ab26411136 | ||
|
|
cf1fddd832 | ||
|
|
ab2c38e882 | ||
|
|
f3c8c35f39 | ||
|
|
e50ce4f158 | ||
|
|
212d86b347 | ||
|
|
4a5312221c | ||
|
|
5277e4b17b | ||
|
|
ad5a5327d6 | ||
|
|
49fc96a22a | ||
|
|
d7deeb04e0 | ||
|
|
a941936907 | ||
|
|
808908717d | ||
|
|
6e80e62585 | ||
|
|
d2f2f1193c | ||
|
|
3dcef5a235 | ||
|
|
2541a70ab7 | ||
|
|
003a3ccd18 | ||
|
|
a45caca7ee | ||
|
|
6b7142565e | ||
|
|
fb8b3283ec | ||
|
|
e92e852145 | ||
|
|
c05d81cf29 | ||
|
|
43d018f11e | ||
|
|
f67669969e | ||
|
|
7698589c56 | ||
|
|
2e7f04b877 | ||
|
|
2be3d0511c | ||
|
|
081ad552a0 | ||
|
|
dadb15eb63 | ||
|
|
c306a8ae4f | ||
|
|
7bfc0bb91b | ||
|
|
8854b106d9 | ||
|
|
80acfb73f0 | ||
|
|
2137529555 | ||
|
|
01bcac7f0a | ||
|
|
5bbf616997 | ||
|
|
627ccfdb9c | ||
|
|
4a27575731 | ||
|
|
0aae98108b | ||
|
|
d432e749bb | ||
|
|
36f915ae20 | ||
|
|
7036efc269 | ||
|
|
d46988592d | ||
|
|
8d1e7cb4fb | ||
|
|
3e732b63b5 | ||
|
|
9249afe585 | ||
|
|
4f53a0a3f4 | ||
|
|
2ebbb01854 | ||
|
|
036e0f072c | ||
|
|
00b7a3dc87 | ||
|
|
88961b00ce | ||
|
|
1c61678ebc | ||
|
|
2d07809a88 | ||
|
|
111222720a | ||
|
|
30d133e4ff | ||
|
|
2c6931107f | ||
|
|
2e2983095b | ||
|
|
d4ad2cbe37 | ||
|
|
28e6de04c6 | ||
|
|
4210b25657 | ||
|
|
e93e829fb6 | ||
|
|
41b1abedc9 | ||
|
|
a1aa2b61f6 | ||
|
|
fa3d93dac2 | ||
|
|
b60a509ae6 | ||
|
|
526e250898 | ||
|
|
f820932e1f | ||
|
|
38d0d5ab7f | ||
|
|
582e1146d0 | ||
|
|
a689502c11 | ||
|
|
89c55c1704 | ||
|
|
f282d39646 | ||
|
|
393bd4900a | ||
|
|
07ee026220 | ||
|
|
c07c00659f | ||
|
|
c74c7cd726 | ||
|
|
cb3e4a55cd | ||
|
|
7c6335fb47 | ||
|
|
dbe8c45fa5 | ||
|
|
11dc677020 | ||
|
|
450682f810 | ||
|
|
5a670fa304 | ||
|
|
effc8231ac | ||
|
|
dcf57f6567 | ||
|
|
9e32d84dff | ||
|
|
6fd275c5af | ||
|
|
ad198c40e8 | ||
|
|
c36313ce5a | ||
|
|
9d6eda165a | ||
|
|
3816645aae | ||
|
|
d77bf259aa | ||
|
|
000c7376a0 | ||
|
|
23fb89c6e3 | ||
|
|
b42ef72337 | ||
|
|
19ad51dc91 | ||
|
|
cac8c45c51 | ||
|
|
c1bdc13a7a | ||
|
|
c357423681 | ||
|
|
d50ab5353d | ||
|
|
d000bb120b | ||
|
|
c128a86bf3 | ||
|
|
35a7ab09c1 | ||
|
|
5b13693601 | ||
|
|
848e9ff54f | ||
|
|
37b09e63bf | ||
|
|
fee3813b50 | ||
|
|
2a9f144e0d | ||
|
|
9e4b6c635a | ||
|
|
d0d8e3d2b7 | ||
|
|
223c271399 | ||
|
|
5fa4af1c9c | ||
|
|
b38aa084d9 | ||
|
|
6c88914bf0 | ||
|
|
a25042b2a4 | ||
|
|
cc1a955a7f | ||
|
|
0edefbe3f9 | ||
|
|
2bbbfe4553 | ||
|
|
24a0148ebc | ||
|
|
34f04e76ec | ||
|
|
f95cae2ee5 | ||
|
|
65c7ed8095 | ||
|
|
03260932ee | ||
|
|
372793cb7a | ||
|
|
b9961bf8be | ||
|
|
1a0364ee62 | ||
|
|
d2a0b54dfc | ||
|
|
6a3b81499a | ||
|
|
70560cd537 | ||
|
|
77680ff29f | ||
|
|
76c6970e4f | ||
|
|
5de52ec045 | ||
|
|
278fcebe02 | ||
|
|
ed2404ce57 | ||
|
|
fa7b2b4fe3 | ||
|
|
278da2459f | ||
|
|
204a3fd83c | ||
|
|
745802eaea | ||
|
|
cba59f0b70 | ||
|
|
0473e9f081 | ||
|
|
6a83623170 | ||
|
|
a1b226f8a3 | ||
|
|
f74603dcef | ||
|
|
9c2b3b1c46 | ||
|
|
d9dfdbf474 | ||
|
|
a442437201 | ||
|
|
f0bc1d5586 | ||
|
|
904baa3db2 | ||
|
|
73524bd7b4 | ||
|
|
6d4ddc7ee3 | ||
|
|
a451a124f6 | ||
|
|
fae4241fb7 | ||
|
|
f5e13b38cd | ||
|
|
207f458186 | ||
|
|
6d86f35b02 | ||
|
|
bc8ef2d4c6 | ||
|
|
994f0c5905 | ||
|
|
3ce235581e | ||
|
|
b23cbfea16 | ||
|
|
680990d6d2 | ||
|
|
b64e05b3c7 | ||
|
|
712082dc8f | ||
|
|
8252129dd0 | ||
|
|
65f5262476 | ||
|
|
0fbb63a64c | ||
|
|
f2a5866c52 | ||
|
|
e2f2780a51 | ||
|
|
6f5803bb3c | ||
|
|
1dbaf4b5d6 | ||
|
|
80643e9090 | ||
|
|
aac541afb9 | ||
|
|
8e2fabbfae | ||
|
|
51938f0a2b | ||
|
|
cfd8db6b9e | ||
|
|
1192b139bd | ||
|
|
3caba47f5e | ||
|
|
5b25a05bcc | ||
|
|
88824eb7b9 | ||
|
|
c39eb7f019 | ||
|
|
e0fce28cbe | ||
|
|
a9bdbc6394 | ||
|
|
b9c3c2d186 | ||
|
|
421cff3457 | ||
|
|
f2d63ee9be | ||
|
|
03dd38b040 | ||
|
|
a6d5486554 | ||
|
|
224dc0679a | ||
|
|
a253bea015 | ||
|
|
6500ba3270 | ||
|
|
617008f802 | ||
|
|
300aeca890 | ||
|
|
f5d54b0332 | ||
|
|
ca19758ef1 | ||
|
|
97a86865fb | ||
|
|
7bd9d5cca0 | ||
|
|
f6fd7d0f6e | ||
|
|
b18b19c703 | ||
|
|
0d529803d2 | ||
|
|
fb0b5839b0 | ||
|
|
1668ed095b | ||
|
|
ad3b75ab3c | ||
|
|
dfa4ba9e01 | ||
|
|
ee1923d558 | ||
|
|
c40457c1cf | ||
|
|
6b196d7b04 | ||
|
|
f2d073c8ba | ||
|
|
ad84629fa3 | ||
|
|
d5e3dbc115 | ||
|
|
4be2995c98 | ||
|
|
a43628a0eb | ||
|
|
09215c8b39 | ||
|
|
62f25b27a7 | ||
|
|
a3ea9ebee9 | ||
|
|
23fd497041 | ||
|
|
e969fff0a8 | ||
|
|
a1a70086ac | ||
|
|
c2fcdfc2c7 | ||
|
|
ff707fc932 | ||
|
|
fa6c798f06 | ||
|
|
a817c11590 | ||
|
|
d4da2fbd06 | ||
|
|
5b9661be59 | ||
|
|
6569f03fba | ||
|
|
a6051aa758 | ||
|
|
a31d0d9961 | ||
|
|
2a6e9fc94c | ||
|
|
8969f499be | ||
|
|
1c0d38097f | ||
|
|
3897bff774 | ||
|
|
37922ab699 | ||
|
|
0a1259b3a5 | ||
|
|
effebec8aa | ||
|
|
d9af5216e0 | ||
|
|
d29b3f1e63 | ||
|
|
34b31715dc | ||
|
|
f5bae01550 | ||
|
|
aed9ef05c1 | ||
|
|
5a6b84a924 | ||
|
|
7db2f889b1 | ||
|
|
7ea8bfd3c9 | ||
|
|
99c43b6d58 | ||
|
|
69d6b7a0b5 | ||
|
|
8dddaccde6 | ||
|
|
7753b5e04d | ||
|
|
c987dc857e | ||
|
|
b88c274e72 | ||
|
|
da73358a66 | ||
|
|
b98d72a1e6 | ||
|
|
a31fdfa004 | ||
|
|
d2c6f622a9 | ||
|
|
e85b238ac1 | ||
|
|
f603e4c565 | ||
|
|
b4de497107 | ||
|
|
e9a0e77b90 | ||
|
|
21eaa1962d | ||
|
|
210c8d89c6 | ||
|
|
e25a403bea | ||
|
|
485720dcbf | ||
|
|
4571c91fcd | ||
|
|
0495d3adb0 | ||
|
|
9bcb84097d | ||
|
|
5d332663d6 | ||
|
|
720b70acba | ||
|
|
0b2e174e97 | ||
|
|
eaf88fb55a | ||
|
|
949f1215b6 | ||
|
|
e402036ff7 | ||
|
|
07a482985a | ||
|
|
8e820d3f89 | ||
|
|
700a433ae5 | ||
|
|
fd46aefadd | ||
|
|
2fe494347d | ||
|
|
41d21074b5 | ||
|
|
04c3efa279 |
+1
-1
@@ -6,7 +6,7 @@ sirgle/
|
||||
test.php
|
||||
*.key
|
||||
*.sh
|
||||
cheditor*/
|
||||
cheditor5.*/
|
||||
ckeditor*/
|
||||
log/
|
||||
g5_tree/
|
||||
|
||||
@@ -2,4 +2,8 @@
|
||||
define('G5_IS_ADMIN', true);
|
||||
include_once ('../common.php');
|
||||
include_once(G5_ADMIN_PATH.'/admin.lib.php');
|
||||
|
||||
if( isset($token) ){
|
||||
$token = @htmlspecialchars(strip_tags($token), ENT_QUOTES);
|
||||
}
|
||||
?>
|
||||
+11
-2
@@ -382,15 +382,24 @@ function admin_referer_check($return=false)
|
||||
}
|
||||
|
||||
$p = @parse_url($referer);
|
||||
|
||||
$host = preg_replace('/:[0-9]+$/', '', $_SERVER['HTTP_HOST']);
|
||||
$msg = '';
|
||||
|
||||
if($host != $p['host']) {
|
||||
$msg = '올바른 방법으로 이용해 주십시오.';
|
||||
}
|
||||
|
||||
if($return)
|
||||
if( $p['path'] && ! preg_match( '/\/'.preg_quote(G5_ADMIN_DIR).'\//i', $p['path'] ) ){
|
||||
$msg = '올바른 방법으로 이용해 주십시오';
|
||||
}
|
||||
|
||||
if( $msg ){
|
||||
if($return) {
|
||||
return $msg;
|
||||
else
|
||||
} else {
|
||||
alert($msg, G5_URL);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+3
-1
@@ -1,5 +1,7 @@
|
||||
<?php
|
||||
if (!defined('_GNUBOARD_')) exit;
|
||||
|
||||
$print_version = defined('G5_YOUNGCART_VER') ? 'YoungCart Version '.G5_YOUNGCART_VER : 'Version '.G5_GNUBOARD_VER;
|
||||
?>
|
||||
|
||||
<noscript>
|
||||
@@ -14,7 +16,7 @@ if (!defined('_GNUBOARD_')) exit;
|
||||
|
||||
<footer id="ft">
|
||||
<p>
|
||||
Copyright © <?php echo $_SERVER['HTTP_HOST']; ?>. All rights reserved.<br>
|
||||
Copyright © <?php echo $_SERVER['HTTP_HOST']; ?>. All rights reserved. <?php echo $print_version; ?><br>
|
||||
<a href="#">상단으로</a>
|
||||
</p>
|
||||
</footer>
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
$sub_menu = '300100';
|
||||
include_once('./_common.php');
|
||||
|
||||
check_demo();
|
||||
|
||||
auth_check($auth[$sub_menu], 'w');
|
||||
|
||||
check_admin_token();
|
||||
|
||||
@@ -21,7 +21,7 @@ if ($file = $_POST['bo_include_head']) {
|
||||
$purl = parse_url($file);
|
||||
$file = $purl['path'];
|
||||
if (!preg_match("/\.(php|htm['l']?)$/i", $file)) {
|
||||
alert('상단 파일 경로가 php, html 파일이 아닙니다.');
|
||||
alert('상단 파일 경로의 확장자는 php, html 만 허용합니다.');
|
||||
}
|
||||
$_POST['bo_include_head'] = $file;
|
||||
}
|
||||
@@ -30,11 +30,19 @@ if ($file = $_POST['bo_include_tail']) {
|
||||
$purl = parse_url($file);
|
||||
$file = $purl['path'];
|
||||
if (!preg_match("/\.(php|htm['l']?)$/i", $file)) {
|
||||
alert('하단 파일 경로가 php, html 파일이 아닙니다.');
|
||||
alert('하단 파일 경로의 확장자는 php, html 만 허용합니다.');
|
||||
}
|
||||
$_POST['bo_include_tail'] = $file;
|
||||
}
|
||||
|
||||
if(!is_include_path_check($_POST['bo_include_head'], 1)) {
|
||||
alert('/data/file/ 또는 /data/editor/ 포함된 문자를 상단 파일 경로에 포함시킬수 없습니다.');
|
||||
}
|
||||
|
||||
if(!is_include_path_check($_POST['bo_include_tail'], 1)) {
|
||||
alert('/data/file/ 또는 /data/editor/ 포함된 문자를 하단 파일 경로에 포함시킬수 없습니다.');
|
||||
}
|
||||
|
||||
$board_path = G5_DATA_PATH.'/file/'.$bo_table;
|
||||
|
||||
// 게시판 디렉토리 생성
|
||||
|
||||
+1
-1
@@ -63,7 +63,7 @@ $colspan = 15;
|
||||
|
||||
<label for="sfl" class="sound_only">검색대상</label>
|
||||
<select name="sfl" id="sfl">
|
||||
<option value="bo_table"<?php echo get_selected($_GET['sfl'], "bo_subject", true); ?>>TABLE</option>
|
||||
<option value="bo_table"<?php echo get_selected($_GET['sfl'], "bo_table", true); ?>>TABLE</option>
|
||||
<option value="bo_subject"<?php echo get_selected($_GET['sfl'], "bo_subject"); ?>>제목</option>
|
||||
<option value="a.gr_id"<?php echo get_selected($_GET['sfl'], "a.gr_id"); ?>>그룹ID</option>
|
||||
</select>
|
||||
|
||||
@@ -62,7 +62,10 @@ if ($_POST['act_button'] == "선택수정") {
|
||||
|
||||
// include 전에 $bo_table 값을 반드시 넘겨야 함
|
||||
$tmp_bo_table = trim($_POST['board_table'][$k]);
|
||||
include ('./board_delete.inc.php');
|
||||
|
||||
if( preg_match("/^[A-Za-z0-9_]+$/", $tmp_bo_table) ){
|
||||
include ('./board_delete.inc.php');
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
+1
-1
@@ -1099,7 +1099,7 @@ if ($config['cf_sms_use'] && $config['cf_icode_id'] && $config['cf_icode_pw']) {
|
||||
<th scope="row">충전 잔액</th>
|
||||
<td colspan="3">
|
||||
<?php echo number_format($userinfo['coin']); ?> 원.
|
||||
<a href="http://www.icodekorea.com/smsbiz/credit_card_amt.php?icode_id=<?php echo $config['cf_icode_id']; ?>&icode_passwd=<?php echo $config['cf_icode_pw']; ?>" target="_blank" class="btn_frmline" onclick="window.open(this.href,'icode_payment', 'scrollbars=1,resizable=1'); return false;">충전하기</a>
|
||||
<a href="http://www.icodekorea.com/smsbiz/credit_card_amt.php?icode_id=<?php echo $config['cf_icode_id']; ?>&icode_passwd=<?php echo $config['cf_icode_pw']; ?>" target="_blank" class="btn_frmline">충전하기</a>
|
||||
</td>
|
||||
</tr>
|
||||
<?php } ?>
|
||||
|
||||
@@ -18,6 +18,34 @@ check_admin_token();
|
||||
if ($co_himg_del) @unlink(G5_DATA_PATH."/content/{$co_id}_h");
|
||||
if ($co_timg_del) @unlink(G5_DATA_PATH."/content/{$co_id}_t");
|
||||
|
||||
$error_msg = '';
|
||||
|
||||
if( $co_include_head ){
|
||||
$purl = parse_url($co_include_head);
|
||||
$file = $purl['path'];
|
||||
if (!preg_match("/\.(php|htm['l']?)$/i", $file)) {
|
||||
alert('상단 파일 경로의 확장자는 php, html 만 허용합니다.');
|
||||
}
|
||||
}
|
||||
|
||||
if( $co_include_tail ){
|
||||
$purl = parse_url($co_include_tail);
|
||||
$file = $purl['path'];
|
||||
if (!preg_match("/\.(php|htm['l']?)$/i", $file)) {
|
||||
alert('하단 파일 경로의 확장자는 php, html 만 허용합니다.');
|
||||
}
|
||||
}
|
||||
|
||||
if( $co_include_head && ! is_include_path_check($co_include_head) ){
|
||||
$co_include_head = '';
|
||||
$error_msg = '/data/file/ 또는 /data/editor/ 포함된 문자를 상단 파일 경로에 포함시킬수 없습니다.';
|
||||
}
|
||||
|
||||
if( $co_include_tail && ! is_include_path_check($co_include_tail) ){
|
||||
$co_include_tail = '';
|
||||
$error_msg = '/data/file/ 또는 /data/editor/ 포함된 문자를 하단 파일 경로에 포함시킬수 없습니다.';
|
||||
}
|
||||
|
||||
$sql_common = " co_include_head = '$co_include_head',
|
||||
co_include_tail = '$co_include_tail',
|
||||
co_html = '$co_html',
|
||||
@@ -74,7 +102,11 @@ if ($w == "" || $w == "u")
|
||||
@chmod($dest_path, G5_FILE_PERMISSION);
|
||||
}
|
||||
|
||||
goto_url("./contentform.php?w=u&co_id=$co_id");
|
||||
if( $error_msg ){
|
||||
alert($error_msg, "./contentform.php?w=u&co_id=$co_id");
|
||||
} else {
|
||||
goto_url("./contentform.php?w=u&co_id=$co_id");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -311,6 +311,7 @@ tfoot td {font-weight:bold;text-align:center}
|
||||
#menu_frm #menu_result {margin:20px 0}
|
||||
|
||||
#menulist .sub_menu_class {padding-left:25px;background:url('../img/sub_menu_ico.gif') 5px 15px no-repeat}
|
||||
.exist_menu_link {font-weight:bold;color:red}
|
||||
|
||||
/* 회원관리 목록 */
|
||||
.mb_leave_msg {color:#b6b6b6}
|
||||
|
||||
@@ -7,6 +7,8 @@ auth_check($auth[$sub_menu], "w");
|
||||
|
||||
$html_title = 'FAQ';
|
||||
|
||||
$fm_id = preg_replace('/[^0-9]/', '', $fm_id);
|
||||
|
||||
if ($w == "u")
|
||||
{
|
||||
$html_title .= ' 수정';
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<?
|
||||
<?php
|
||||
$sub_menu = "200100";
|
||||
include_once("./_common.php");
|
||||
|
||||
|
||||
@@ -95,6 +95,10 @@ else if ($w == 'u')
|
||||
if ($is_admin != 'super' && $mb['mb_level'] >= $member['mb_level'])
|
||||
alert('자신보다 권한이 높거나 같은 회원은 수정할 수 없습니다.');
|
||||
|
||||
if ($is_admin !== 'super' && is_admin($mb['mb_id']) === 'super' ) {
|
||||
alert('최고관리자의 비밀번호를 수정할수 없습니다.');
|
||||
}
|
||||
|
||||
if ($_POST['mb_id'] == $member['mb_id'] && $_POST['mb_level'] != $mb['mb_level'])
|
||||
alert($mb['mb_id'].' : 로그인 중인 관리자 레벨은 수정 할 수 없습니다.');
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<?
|
||||
<?php
|
||||
$sub_menu = "200100";
|
||||
include_once("./_common.php");
|
||||
|
||||
|
||||
+49
-3
@@ -8,6 +8,8 @@ if ($is_admin != 'super')
|
||||
$g5['title'] = '메뉴 추가';
|
||||
include_once(G5_PATH.'/head.sub.php');
|
||||
|
||||
$code = isset($code) ? preg_replace('/[^0-9a-zA-Z]/', '', strip_tags($code)) : '';
|
||||
|
||||
// 코드
|
||||
if($new == 'new' || !$code) {
|
||||
$code = base_convert(substr($code,0, 2), 36, 10);
|
||||
@@ -43,13 +45,57 @@ $(function() {
|
||||
"./menu_form_search.php"
|
||||
);
|
||||
|
||||
$("#me_type").on("change", function() {
|
||||
var type = $(this).val();
|
||||
function link_checks_all_chage(){
|
||||
|
||||
var $links = $(opener.document).find("#menulist input[name='me_link[]']"),
|
||||
$o_link = $(".td_mngsmall input[name='link[]']"),
|
||||
hrefs = [],
|
||||
menu_exist = false;
|
||||
|
||||
if( $links.length ){
|
||||
$links.each(function( index ) {
|
||||
hrefs.push( $(this).val() );
|
||||
});
|
||||
|
||||
$o_link.each(function( index ) {
|
||||
if( $.inArray( $(this).val(), hrefs ) != -1 ){
|
||||
$(this).closest("tr").find("td:eq( 0 )").addClass("exist_menu_link");
|
||||
menu_exist = true;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
if( menu_exist ){
|
||||
$(".menu_exists_tip").show();
|
||||
} else {
|
||||
$(".menu_exists_tip").hide();
|
||||
}
|
||||
}
|
||||
|
||||
function menu_result_change( type ){
|
||||
|
||||
var dfd = new $.Deferred();
|
||||
|
||||
$("#menu_result").empty().load(
|
||||
"./menu_form_search.php",
|
||||
{ type : type }
|
||||
{ type : type },
|
||||
function(){
|
||||
dfd.resolve('Finished');
|
||||
}
|
||||
);
|
||||
|
||||
return dfd.promise();
|
||||
}
|
||||
|
||||
$("#me_type").on("change", function() {
|
||||
var type = $(this).val();
|
||||
|
||||
var promise = menu_result_change( type );
|
||||
|
||||
promise.done(function(message) {
|
||||
link_checks_all_chage(type);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
$(document).on("click", "#add_manual", function() {
|
||||
|
||||
@@ -11,7 +11,7 @@ switch($type) {
|
||||
order by gr_order, gr_id ";
|
||||
break;
|
||||
case 'board':
|
||||
$sql = " select bo_table as id, bo_subject as subject
|
||||
$sql = " select bo_table as id, bo_subject as subject, gr_id
|
||||
from {$g5['board_table']}
|
||||
order by bo_order, bo_table ";
|
||||
break;
|
||||
@@ -32,13 +32,18 @@ if($sql) {
|
||||
|
||||
for($i=0; $row=sql_fetch_array($result); $i++) {
|
||||
if($i == 0) {
|
||||
|
||||
$bbs_subject_title = ($type == 'board') ? '게시판제목' : '제목';
|
||||
?>
|
||||
|
||||
<div class="tbl_head01 tbl_wrap">
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col">제목</th>
|
||||
<th scope="col"><?php echo $bbs_subject_title; ?></th>
|
||||
<?php if($type == 'board'){ ?>
|
||||
<th scope="col">게시판 그룹</th>
|
||||
<?php } ?>
|
||||
<th scope="col">선택</th>
|
||||
</tr>
|
||||
</thead>
|
||||
@@ -63,6 +68,12 @@ if($sql) {
|
||||
|
||||
<tr>
|
||||
<td><?php echo $row['subject']; ?></td>
|
||||
<?php
|
||||
if($type == 'board'){
|
||||
$group = get_call_func_cache('get_group', array($row['gr_id']));
|
||||
?>
|
||||
<td><?php echo $group['gr_subject']; ?></td>
|
||||
<?php } ?>
|
||||
<td class="td_mngsmall">
|
||||
<input type="hidden" name="subject[]" value="<?php echo preg_replace('/[\'\"]/', '', $row['subject']); ?>">
|
||||
<input type="hidden" name="link[]" value="<?php echo $link; ?>">
|
||||
@@ -76,6 +87,10 @@ if($sql) {
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="local_desc01 menu_exists_tip" style="display:none">
|
||||
<p>* <strong>빨간색</strong>의 제목은 이미 메뉴에 연결되어 경우 표시됩니다.</p>
|
||||
</div>
|
||||
|
||||
<div class="btn_win02 btn_win">
|
||||
<button type="button" class="btn_cancel" onclick="window.close();">창닫기</button>
|
||||
</div>
|
||||
|
||||
@@ -5,6 +5,8 @@ include_once(G5_EDITOR_LIB);
|
||||
|
||||
auth_check($auth[$sub_menu], "w");
|
||||
|
||||
$nw_id = preg_replace('/[^0-9]/', '', $nw_id);
|
||||
|
||||
$html_title = "팝업레이어";
|
||||
if ($w == "u")
|
||||
{
|
||||
|
||||
@@ -4,10 +4,10 @@ include_once('./_common.php');
|
||||
|
||||
auth_check($auth[$sub_menu], 'r');
|
||||
|
||||
if (empty($fr_date)) $fr_date = G5_TIME_YMD;
|
||||
if (empty($to_date)) $to_date = G5_TIME_YMD;
|
||||
if (empty($fr_date) || ! preg_match("/^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/", $fr_date) ) $fr_date = G5_TIME_YMD;
|
||||
if (empty($to_date) || ! preg_match("/^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/", $to_date) ) $to_date = G5_TIME_YMD;
|
||||
|
||||
$qstr = "fr_date={$fr_date}{&to_date}={$to_date}";
|
||||
$qstr = "fr_date={$fr_date}&to_date={$to_date}";
|
||||
|
||||
$sql_common = " from {$g5['popular_table']} a ";
|
||||
$sql_search = " where trim(pp_word) <> '' and pp_date between '{$fr_date}' and '{$to_date}' ";
|
||||
|
||||
@@ -8,6 +8,34 @@ auth_check($auth[$sub_menu], 'w');
|
||||
|
||||
check_admin_token();
|
||||
|
||||
$error_msg = '';
|
||||
|
||||
if( $qa_include_head ){
|
||||
$purl = parse_url($qa_include_head);
|
||||
$file = $purl['path'];
|
||||
if (!preg_match("/\.(php|htm['l']?)$/i", $file)) {
|
||||
alert('상단 파일 경로의 확장자는 php, html 만 허용합니다.');
|
||||
}
|
||||
}
|
||||
|
||||
if( $qa_include_tail ){
|
||||
$purl = parse_url($qa_include_tail);
|
||||
$file = $purl['path'];
|
||||
if (!preg_match("/\.(php|htm['l']?)$/i", $file)) {
|
||||
alert('하단 파일 경로의 확장자는 php, html 만 허용합니다.');
|
||||
}
|
||||
}
|
||||
|
||||
if( $qa_include_head && ! is_include_path_check($qa_include_head, 1) ){
|
||||
$qa_include_head = '';
|
||||
$error_msg = '/data/file/ 또는 /data/editor/ 포함된 문자를 상단 파일 경로에 포함시킬수 없습니다.';
|
||||
}
|
||||
|
||||
if( $qa_include_tail && ! is_include_path_check($qa_include_tail, 1) ){
|
||||
$qa_include_tail = '';
|
||||
$error_msg = '/data/file/ 또는 /data/editor/ 포함된 문자를 하단 파일 경로에 포함시킬수 없습니다.';
|
||||
}
|
||||
|
||||
$sql = " update {$g5['qa_config_table']}
|
||||
set qa_title = '{$_POST['qa_title']}',
|
||||
qa_category = '{$_POST['qa_category']}',
|
||||
@@ -29,8 +57,8 @@ $sql = " update {$g5['qa_config_table']}
|
||||
qa_image_width = '{$_POST['qa_image_width']}',
|
||||
qa_upload_size = '{$_POST['qa_upload_size']}',
|
||||
qa_insert_content = '{$_POST['qa_insert_content']}',
|
||||
qa_include_head = '{$_POST['qa_include_head']}',
|
||||
qa_include_tail = '{$_POST['qa_include_tail']}',
|
||||
qa_include_head = '{$qa_include_head}',
|
||||
qa_include_tail = '{$qa_include_tail}',
|
||||
qa_content_head = '{$_POST['qa_content_head']}',
|
||||
qa_content_tail = '{$_POST['qa_content_tail']}',
|
||||
qa_mobile_content_head = '{$_POST['qa_mobile_content_head']}',
|
||||
@@ -47,5 +75,9 @@ $sql = " update {$g5['qa_config_table']}
|
||||
qa_5 = '{$_POST['qa_5']}' ";
|
||||
sql_query($sql);
|
||||
|
||||
goto_url('./qa_config.php');
|
||||
if($error_msg){
|
||||
alert($error_msg, './qa_config.php');
|
||||
} else {
|
||||
goto_url('./qa_config.php');
|
||||
}
|
||||
?>
|
||||
@@ -12,5 +12,11 @@ if (!strstr($_SERVER['SCRIPT_NAME'], 'install.php')) {
|
||||
//$sms5 = sql_fetch("select * from ".$g5['sms5_config_table'] );
|
||||
}
|
||||
|
||||
$sv = isset($_REQUEST['sv']) ? get_search_string($_REQUEST['sv']) : '';
|
||||
|
||||
if( isset($token) ){
|
||||
$token = @htmlspecialchars(strip_tags($token), ENT_QUOTES);
|
||||
}
|
||||
|
||||
add_stylesheet('<link rel="stylesheet" href="'.G5_SMS5_ADMIN_URL.'/css/sms5.css">', 0);
|
||||
?>
|
||||
@@ -83,7 +83,7 @@ if ($config['cf_sms_use'] == 'icode') { // 아이코드 사용
|
||||
<th scope="row">충전 잔액</th>
|
||||
<td>
|
||||
<?php echo number_format($userinfo['coin'])?> 원
|
||||
<input type="button" value="충전하기" class="btn_frmline" onclick="window.open('http://icodekorea.com/company/credit_card_input.php?icode_id=<?php echo $config['cf_icode_id']?>&icode_passwd=<?php echo $config['cf_icode_pw']?>','icode_payment','width=650,height=500')">
|
||||
<a href="http://www.icodekorea.com/smsbiz/credit_card_amt.php?icode_id=<?php echo $config['cf_icode_id']; ?>&icode_passwd=<?php echo $config['cf_icode_pw']; ?>" target="_blank" class="btn_frmline">충전하기</a>
|
||||
</td>
|
||||
</tr>
|
||||
<?php } ?>
|
||||
|
||||
+2
-2
@@ -5,8 +5,8 @@ include_once(G5_LIB_PATH.'/visit.lib.php');
|
||||
include_once('./admin.head.php');
|
||||
include_once(G5_PLUGIN_PATH.'/jquery-ui/datepicker.php');
|
||||
|
||||
if (empty($fr_date)) $fr_date = G5_TIME_YMD;
|
||||
if (empty($to_date)) $to_date = G5_TIME_YMD;
|
||||
if (empty($fr_date) || ! preg_match("/^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/", $fr_date) ) $fr_date = G5_TIME_YMD;
|
||||
if (empty($to_date) || ! preg_match("/^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$/", $to_date) ) $to_date = G5_TIME_YMD;
|
||||
|
||||
$qstr = "fr_date=".$fr_date."&to_date=".$to_date;
|
||||
$query_string = $qstr ? '?'.$qstr : '';
|
||||
|
||||
@@ -71,6 +71,7 @@ for ($i=0; $row=sql_fetch_array($result); $i++) {
|
||||
</tr>
|
||||
|
||||
<?php
|
||||
$i++;
|
||||
}
|
||||
} else {
|
||||
echo '<tr><td colspan="'.$colspan.'" class="empty_table">자료가 없습니다.</td></tr>';
|
||||
|
||||
@@ -72,6 +72,7 @@ for ($i=0; $row=sql_fetch_array($result); $i++) {
|
||||
</tr>
|
||||
|
||||
<?php
|
||||
$i++;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -44,7 +44,7 @@ $listall = '<a href="'.$_SERVER['SCRIPT_NAME'].'">처음</a>'; //페이지 처
|
||||
<?php
|
||||
$sql_common = " from {$g5['visit_table']} ";
|
||||
if ($sfl) {
|
||||
if($sst=='vi_ip' || $sst=='vi_date'){
|
||||
if($sfl=='vi_ip' || $sfl=='vi_date'){
|
||||
$sql_search = " where $sfl like '$stx%' ";
|
||||
}else{
|
||||
$sql_search = " where $sfl like '%$stx%' ";
|
||||
|
||||
+8
-8
@@ -14,7 +14,7 @@ add_javascript('<script src="'.G5_PLUGIN_URL.'/jqplot/plugins/jqplot.categoryAxi
|
||||
add_javascript('<script src="'.G5_PLUGIN_URL.'/jqplot/plugins/jqplot.pointLabels.min.js"></script>', 0);
|
||||
add_javascript('<!--[if lt IE 9]><script src="'.G5_PLUGIN_URL.'/jqplot/excanvas.js"></script><![endif]-->', 0);
|
||||
|
||||
if (!($graph == 'line' || $graph == 'bar'))
|
||||
if (!($graph == 'line' || $graph == 'bar'))
|
||||
$graph = 'line';
|
||||
|
||||
if ($graph == 'bar') {
|
||||
@@ -49,7 +49,7 @@ foreach($period_array as $key=>$value) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!$is_period)
|
||||
if (!$is_period)
|
||||
$period = '오늘';
|
||||
|
||||
$day = $period_array[$period][0];
|
||||
@@ -64,15 +64,15 @@ if ($period == '오늘') {
|
||||
$from = $yesterday;
|
||||
$to = $from;
|
||||
} else if ($period == '내일') {
|
||||
$from = date('Y-m-d', G5_SERVER_TIME + (86400 * 2));
|
||||
$from = date('Y-m-d', G5_SERVER_TIME + (86400 * 2));
|
||||
$to = $from;
|
||||
} else {
|
||||
$from = date('Y-m-d', G5_SERVER_TIME - (86400 * $period_array[$period][1]));
|
||||
$from = date('Y-m-d', G5_SERVER_TIME - (86400 * $period_array[$period][1]));
|
||||
$to = $yesterday;
|
||||
}
|
||||
|
||||
$sql_bo_table = '';
|
||||
if ($bo_table)
|
||||
if ($bo_table)
|
||||
$sql_bo_table = "and bo_table = '$bo_table'";
|
||||
|
||||
switch ($day) {
|
||||
@@ -130,7 +130,7 @@ switch ($day) {
|
||||
<form>
|
||||
<select name="bo_table">
|
||||
<option value="">전체게시판</a>
|
||||
<?php
|
||||
<?php
|
||||
$sql = " select bo_table, bo_subject from {$g5['board_table']} order by bo_count_write desc ";
|
||||
$result = sql_query($sql);
|
||||
for($i=0; $row=sql_fetch_array($result); $i++) {
|
||||
@@ -179,7 +179,7 @@ $(document).ready(function(){
|
||||
var line1 = [<?php echo implode($line1, ','); ?>];
|
||||
var line2 = [<?php echo implode($line2, ','); ?>];
|
||||
var plot1 = $.jqplot ('chart1', [line1, line2], {
|
||||
seriesDefaults: {
|
||||
seriesDefaults: {
|
||||
<?php if ($graph == 'bar') { ?>
|
||||
renderer:$.jqplot.BarRenderer,
|
||||
<?php } ?>
|
||||
@@ -205,6 +205,6 @@ $(document).ready(function(){
|
||||
}
|
||||
?>
|
||||
|
||||
<?
|
||||
<?php
|
||||
include_once ('./admin.tail.php');
|
||||
?>
|
||||
+5
-1
@@ -7,7 +7,11 @@ if (G5_IS_MOBILE) {
|
||||
include_once(G5_BBS_PATH.'/_head.php');
|
||||
echo stripslashes($board['bo_mobile_content_head']);
|
||||
} else {
|
||||
@include ($board['bo_include_head']);
|
||||
if(is_include_path_check($board['bo_include_head'])) { //파일경로 체크
|
||||
@include ($board['bo_include_head']);
|
||||
} else { //파일경로가 올바르지 않으면 기본파일을 가져옴
|
||||
include_once(G5_BBS_PATH.'/_head.php');
|
||||
}
|
||||
echo stripslashes($board['bo_content_head']);
|
||||
}
|
||||
?>
|
||||
+5
-1
@@ -8,6 +8,10 @@ if (G5_IS_MOBILE) {
|
||||
include_once(G5_BBS_PATH.'/_tail.php');
|
||||
} else {
|
||||
echo stripslashes($board['bo_content_tail']);
|
||||
@include ($board['bo_include_tail']);
|
||||
if(is_include_path_check($board['bo_include_tail'])) { //파일경로 체크
|
||||
@include ($board['bo_include_tail']);
|
||||
} else { //파일경로가 올바르지 않으면 기본파일을 가져옴
|
||||
include_once(G5_BBS_PATH.'/_tail.php');
|
||||
}
|
||||
}
|
||||
?>
|
||||
+2
-2
@@ -19,7 +19,7 @@ if (!$co['co_id'])
|
||||
|
||||
$g5['title'] = $co['co_subject'];
|
||||
|
||||
if ($co['co_include_head'])
|
||||
if ($co['co_include_head'] && is_include_path_check($co['co_include_head']))
|
||||
@include_once($co['co_include_head']);
|
||||
else
|
||||
include_once('./_head.php');
|
||||
@@ -85,7 +85,7 @@ if(is_file($skin_file)) {
|
||||
echo '<p>'.str_replace(G5_PATH.'/', '', $skin_file).'이 존재하지 않습니다.</p>';
|
||||
}
|
||||
|
||||
if ($co['co_include_tail'])
|
||||
if ($co['co_include_tail'] && is_include_path_check($co['co_include_tail']))
|
||||
@include_once($co['co_include_tail']);
|
||||
else
|
||||
include_once('./_tail.php');
|
||||
|
||||
+1
-1
@@ -134,5 +134,5 @@ if ($count_write > 0 || $count_comment > 0)
|
||||
|
||||
delete_cache_latest($bo_table);
|
||||
|
||||
goto_url('./board.php?bo_table='.$bo_table.'&page='.$page.$qstr);
|
||||
goto_url(G5_HTTP_BBS_URL.'/board.php?bo_table='.$bo_table.'&page='.$page.$qstr);
|
||||
?>
|
||||
|
||||
+1
-1
@@ -156,5 +156,5 @@ if ($count_write > 0 || $count_comment > 0)
|
||||
|
||||
delete_cache_latest($bo_table);
|
||||
|
||||
goto_url('./board.php?bo_table='.$bo_table.'&page='.$page.$qstr);
|
||||
goto_url(G5_HTTP_BBS_URL.'/board.php?bo_table='.$bo_table.'&page='.$page.$qstr);
|
||||
?>
|
||||
|
||||
@@ -84,5 +84,5 @@ sql_query(" delete from {$g5['board_new_table']} where bo_table = '{$bo_table}'
|
||||
|
||||
delete_cache_latest($bo_table);
|
||||
|
||||
goto_url('./board.php?bo_table='.$bo_table.'&wr_id='.$write['wr_parent'].'&page='.$page. $qstr);
|
||||
goto_url(G5_HTTP_BBS_URL.'/board.php?bo_table='.$bo_table.'&wr_id='.$write['wr_parent'].'&page='.$page. $qstr);
|
||||
?>
|
||||
|
||||
+1
-1
@@ -7,7 +7,7 @@ if ($is_guest)
|
||||
$g5['title'] = '내 쪽지함';
|
||||
include_once(G5_PATH.'/head.sub.php');
|
||||
|
||||
if (!$kind) $kind = 'recv';
|
||||
$kind = $kind ? clean_xss_tags(strip_tags($kind)) : 'recv';
|
||||
|
||||
if ($kind == 'recv')
|
||||
$unkind = 'send';
|
||||
|
||||
+4
-2
@@ -115,7 +115,9 @@ while ($row = sql_fetch_array($result))
|
||||
if ($row3['bf_file'])
|
||||
{
|
||||
// 원본파일을 복사하고 퍼미션을 변경
|
||||
@copy($src_dir.'/'.$row3['bf_file'], $dst_dir.'/'.$row3['bf_file']);
|
||||
// 제이프로님 코드제안 적용
|
||||
$copy_file_name = ($bo_table !== $move_bo_table) ? $row3['bf_file'] : $row2['wr_id'].'_copy_'.$insert_id.'_'.$row3['bf_file'];
|
||||
@copy($src_dir.'/'.$row3['bf_file'], $dst_dir.'/'.$copy_file_name);
|
||||
@chmod($dst_dir/$row3['bf_file'], G5_FILE_PERMISSION);
|
||||
}
|
||||
|
||||
@@ -124,7 +126,7 @@ while ($row = sql_fetch_array($result))
|
||||
wr_id = '$insert_id',
|
||||
bf_no = '{$row3['bf_no']}',
|
||||
bf_source = '".addslashes($row3['bf_source'])."',
|
||||
bf_file = '{$row3['bf_file']}',
|
||||
bf_file = '$copy_file_name',
|
||||
bf_download = '{$row3['bf_download']}',
|
||||
bf_content = '".addslashes($row3['bf_content'])."',
|
||||
bf_filesize = '{$row3['bf_filesize']}',
|
||||
|
||||
+1
-1
@@ -69,7 +69,7 @@ for($i=0;$i<count($_POST['chk_bn_id']);$i++)
|
||||
|
||||
if ($pressed == '선택내용삭제') {
|
||||
// 게시글 내용만 삭제
|
||||
sql_query(" update $write_table set wr_subject = '{$g5['time_ymdhis']} - 본인 요청으로 인한 삭제 (냉무) ☆', wr_content = '', wr_name='본인요청삭제☆' where wr_id = '{$write['wr_id']}' ");
|
||||
sql_query(" update $write_table set wr_subject = '".G5_TIME_YMDHIS." - 본인 요청으로 인한 삭제 (냉무) ☆', wr_content = '', wr_name='본인요청삭제☆' where wr_id = '{$write['wr_id']}' ");
|
||||
} else {
|
||||
// 게시글 삭제
|
||||
sql_query(" delete from $write_table where wr_parent = '{$write['wr_id']}' ");
|
||||
|
||||
+12
-12
@@ -5,36 +5,36 @@ $g5['title'] = '비밀번호 입력';
|
||||
|
||||
switch ($w) {
|
||||
case 'u' :
|
||||
$action = './write.php';
|
||||
$return_url = './board.php?bo_table='.$bo_table.'&wr_id='.$wr_id;
|
||||
$action = G5_HTTP_BBS_URL.'/write.php';
|
||||
$return_url = G5_HTTP_BBS_URL.'/board.php?bo_table='.$bo_table.'&wr_id='.$wr_id;
|
||||
break;
|
||||
case 'd' :
|
||||
set_session('ss_delete_token', $token = uniqid(time()));
|
||||
$action = './delete.php?token='.$token;
|
||||
$return_url = './board.php?bo_table='.$bo_table.'&wr_id='.$wr_id;
|
||||
$action = https_url(G5_BBS_DIR).'/delete.php?token='.$token;
|
||||
$return_url = G5_HTTP_BBS_URL.'/board.php?bo_table='.$bo_table.'&wr_id='.$wr_id;
|
||||
break;
|
||||
case 'x' :
|
||||
set_session('ss_delete_comment_'.$comment_id.'_token', $token = uniqid(time()));
|
||||
$action = './delete_comment.php?token='.$token;
|
||||
$action = https_url(G5_BBS_DIR).'/delete_comment.php?token='.$token;
|
||||
$row = sql_fetch(" select wr_parent from $write_table where wr_id = '$comment_id' ");
|
||||
$return_url = './board.php?bo_table='.$bo_table.'&wr_id='.$row['wr_parent'];
|
||||
$return_url = G5_HTTP_BBS_URL.'/board.php?bo_table='.$bo_table.'&wr_id='.$row['wr_parent'];
|
||||
break;
|
||||
case 's' :
|
||||
// 비밀번호 창에서 로그인 하는 경우 관리자 또는 자신의 글이면 바로 글보기로 감
|
||||
if ($is_admin || ($member['mb_id'] == $write['mb_id'] && $write['mb_id']))
|
||||
goto_url('./board.php?bo_table='.$bo_table.'&wr_id='.$wr_id);
|
||||
goto_url(G5_HTTP_BBS_URL.'/board.php?bo_table='.$bo_table.'&wr_id='.$wr_id);
|
||||
else {
|
||||
$action = './password_check.php';
|
||||
$return_url = './board.php?bo_table='.$bo_table;
|
||||
$action = https_url(G5_BBS_DIR).'/password_check.php';
|
||||
$return_url = G5_HTTP_BBS_URL.'/board.php?bo_table='.$bo_table;
|
||||
}
|
||||
break;
|
||||
case 'sc' :
|
||||
// 비밀번호 창에서 로그인 하는 경우 관리자 또는 자신의 글이면 바로 글보기로 감
|
||||
if ($is_admin || ($member['mb_id'] == $write['mb_id'] && $write['mb_id']))
|
||||
goto_url('./board.php?bo_table='.$bo_table.'&wr_id='.$wr_id);
|
||||
goto_url(G5_HTTP_BBS_URL.'/board.php?bo_table='.$bo_table.'&wr_id='.$wr_id);
|
||||
else {
|
||||
$action = './password_check.php';
|
||||
$return_url = './board.php?bo_table='.$bo_table.'&wr_id='.$wr_id;
|
||||
$action = https_url(G5_BBS_DIR).'/password_check.php';
|
||||
$return_url = G5_HTTP_BBS_URL.'/board.php?bo_table='.$bo_table.'&wr_id='.$wr_id;
|
||||
}
|
||||
break;
|
||||
default :
|
||||
|
||||
@@ -31,5 +31,5 @@ if ($w == 's') {
|
||||
} else
|
||||
alert('w 값이 제대로 넘어오지 않았습니다.');
|
||||
|
||||
goto_url('./board.php?'.$qstr);
|
||||
goto_url(G5_HTTP_BBS_URL.'/board.php?'.$qstr);
|
||||
?>
|
||||
|
||||
@@ -4,7 +4,7 @@ include_once(G5_CAPTCHA_PATH.'/captcha.lib.php');
|
||||
include_once(G5_LIB_PATH.'/mailer.lib.php');
|
||||
|
||||
if ($is_member) {
|
||||
alert('이미 로그인중입니다.');
|
||||
alert_close('이미 로그인중입니다.', G5_URL);
|
||||
}
|
||||
|
||||
if (!chk_captcha()) {
|
||||
|
||||
+1
-1
@@ -9,7 +9,7 @@ if (G5_IS_MOBILE) {
|
||||
include_once('./_head.php');
|
||||
echo conv_content($qaconfig['qa_mobile_content_head'], 1);
|
||||
} else {
|
||||
if($qaconfig['qa_include_head'])
|
||||
if($qaconfig['qa_include_head'] && is_include_path_check($qaconfig['qa_include_head']))
|
||||
@include ($qaconfig['qa_include_head']);
|
||||
else
|
||||
include ('./_head.php');
|
||||
|
||||
+1
-1
@@ -110,7 +110,7 @@ if(is_file($skin_file)) {
|
||||
$list_href = G5_BBS_URL.'/qalist.php';
|
||||
$write_href = G5_BBS_URL.'/qawrite.php';
|
||||
|
||||
$list_pages = preg_replace('/(\.php)(&|&)/i', '$1?', get_paging(G5_IS_MOBILE ? $qaconfig['qa_mobile_page_rows'] : $qaconfig['qa_page_rows'], $page, $total_page, './qalist.php'.$qstr.'&page='));
|
||||
$list_pages = preg_replace('/(\.php)(&|&)/i', '$1?', get_paging(G5_IS_MOBILE ? $config['cf_mobile_pages'] : $config['cf_write_pages'], $page, $total_page, './qalist.php'.$qstr.'&page='));
|
||||
|
||||
$stx = get_text(stripslashes($stx));
|
||||
include_once($skin_file);
|
||||
|
||||
+1
-1
@@ -7,7 +7,7 @@ if (G5_IS_MOBILE) {
|
||||
include_once('./_tail.php');
|
||||
} else {
|
||||
echo conv_content($qaconfig['qa_content_tail'], 1);
|
||||
if($qaconfig['qa_include_tail'])
|
||||
if($qaconfig['qa_include_tail'] && is_include_path_check($qaconfig['qa_include_tail']))
|
||||
@include ($qaconfig['qa_include_tail']);
|
||||
else
|
||||
include ('./_tail.php');
|
||||
|
||||
+4
-1
@@ -76,7 +76,10 @@ if(is_file($skin_file)) {
|
||||
|
||||
$content .= get_text($write['qa_content'], 0);
|
||||
} else {
|
||||
$content = get_text($write['qa_content'], 0);
|
||||
//$content = get_text($write['qa_content'], 0);
|
||||
|
||||
// KISA 취약점 권고사항 Stored XSS
|
||||
$content = get_text(html_purifier($write['qa_content']), 0);
|
||||
}
|
||||
|
||||
$editor_html = editor_html('qa_content', $content, $is_dhtml_editor);
|
||||
|
||||
+10
-6
@@ -54,15 +54,19 @@ if ($stx) {
|
||||
$g5_search['read_level'][] = $row['bo_read_level'];
|
||||
}
|
||||
|
||||
$search_query = 'sfl='.urlencode($sfl).'&stx='.urlencode($stx).'&sop='.$sop;
|
||||
|
||||
|
||||
$text_stx = get_text(stripslashes($stx));
|
||||
|
||||
$op1 = '';
|
||||
|
||||
// 검색어를 구분자로 나눈다. 여기서는 공백
|
||||
$s = explode(' ', strip_tags($stx));
|
||||
|
||||
if( count($s) > 1 ){
|
||||
$s = array_slice($s, 0, 2);
|
||||
$stx = implode(' ', $s);
|
||||
}
|
||||
|
||||
$text_stx = get_text(stripslashes($stx));
|
||||
|
||||
$search_query = 'sfl='.urlencode($sfl).'&stx='.urlencode($stx).'&sop='.$sop;
|
||||
|
||||
// 검색필드를 구분자로 나눈다. 여기서는 +
|
||||
$field = explode('||', trim($sfl));
|
||||
@@ -233,4 +237,4 @@ if (!$sop) $sop = 'or';
|
||||
include_once($search_skin_path.'/search.skin.php');
|
||||
|
||||
include_once('./_tail.php');
|
||||
?>
|
||||
?>
|
||||
@@ -118,6 +118,8 @@ else
|
||||
$comment_max = (int)$board['bo_comment_max'];
|
||||
}
|
||||
|
||||
$comment_action_url = https_url(G5_BBS_DIR)."/write_comment_update.php";
|
||||
|
||||
include_once($board_skin_path.'/view_comment.skin.php');
|
||||
|
||||
if (!$member['mb_id']) // 비회원일 경우에만
|
||||
|
||||
@@ -401,6 +401,11 @@ if(!is_mobile() || defined('G5_IS_MOBILE_DHTML_USE') && G5_IS_MOBILE_DHTML_USE)
|
||||
if ($config['cf_editor'] && $is_dhtml_editor_use && $board['bo_use_dhtml_editor'] && $member['mb_level'] >= $board['bo_html_level']) {
|
||||
$is_dhtml_editor = true;
|
||||
|
||||
if ( $w == 'u' && (! $is_member || ! $is_admin || $write['mb_id'] !== $member['mb_id']) ){
|
||||
// kisa 취약점 제보 xss 필터 적용
|
||||
$content = get_text(html_purifier($write['wr_content']), 0);
|
||||
}
|
||||
|
||||
if(is_file(G5_EDITOR_PATH.'/'.$config['cf_editor'].'/autosave.editor.js'))
|
||||
$editor_content_js = '<script src="'.G5_EDITOR_URL.'/'.$config['cf_editor'].'/autosave.editor.js"></script>'.PHP_EOL;
|
||||
}
|
||||
|
||||
@@ -337,5 +337,5 @@ else if ($w == 'cu') // 댓글 수정
|
||||
|
||||
delete_cache_latest($bo_table);
|
||||
|
||||
goto_url('./board.php?bo_table='.$bo_table.'&wr_id='.$wr['wr_parent'].'&'.$qstr.'&#c_'.$comment_id);
|
||||
goto_url(G5_HTTP_BBS_URL.'/board.php?bo_table='.$bo_table.'&wr_id='.$wr['wr_parent'].'&'.$qstr.'&#c_'.$comment_id);
|
||||
?>
|
||||
|
||||
@@ -692,7 +692,7 @@ if (!($w == 'u' || $w == 'cu') && $config['cf_email_use'] && $board['bo_use_emai
|
||||
delete_cache_latest($bo_table);
|
||||
|
||||
if ($file_upload_msg)
|
||||
alert($file_upload_msg, G5_HTTP_BBS_URL.'/board.php?bo_table='.$bo_table.'&wr_id='.$wr_id.'&page='.$page.$qstr);
|
||||
alert($file_upload_msg, G5_HTTP_BBS_URL.'/board.php?bo_table='.$bo_table.'&wr_id='.$wr_id.$qstr);
|
||||
else
|
||||
goto_url(G5_HTTP_BBS_URL.'/board.php?bo_table='.$bo_table.'&wr_id='.$wr_id.$qstr);
|
||||
?>
|
||||
|
||||
+7
-6
@@ -32,10 +32,11 @@ function g5_path()
|
||||
$result['path'] = str_replace('\\', '/', dirname(__FILE__));
|
||||
$tilde_remove = preg_replace('/^\/\~[^\/]+(.*)$/', '$1', $_SERVER['SCRIPT_NAME']);
|
||||
$document_root = str_replace($tilde_remove, '', $_SERVER['SCRIPT_FILENAME']);
|
||||
$root = str_replace($document_root, '', $result['path']);
|
||||
$port = $_SERVER['SERVER_PORT'] != 80 ? ':'.$_SERVER['SERVER_PORT'] : '';
|
||||
$pattern = '/' . preg_quote($document_root, '/') . '/i';
|
||||
$root = preg_replace($pattern, '', $result['path']);
|
||||
$port = ($_SERVER['SERVER_PORT'] == 80 || $_SERVER['SERVER_PORT'] == 443) ? '' : ':'.$_SERVER['SERVER_PORT'];
|
||||
$http = 'http' . ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS']=='on') ? 's' : '') . '://';
|
||||
$user = str_replace(str_replace($document_root, '', $_SERVER['SCRIPT_FILENAME']), '', $_SERVER['SCRIPT_NAME']);
|
||||
$user = str_replace(preg_replace($pattern, '', $_SERVER['SCRIPT_FILENAME']), '', $_SERVER['SCRIPT_NAME']);
|
||||
$host = isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : $_SERVER['SERVER_NAME'];
|
||||
if(isset($_SERVER['HTTP_HOST']) && preg_match('/:[0-9]+$/', $host))
|
||||
$host = preg_replace('/:[0-9]+$/', '', $host);
|
||||
@@ -370,7 +371,7 @@ if ($_SESSION['ss_mb_id']) { // 로그인중이라면
|
||||
$key = md5($_SERVER['SERVER_ADDR'] . $_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT'] . $row['mb_password']);
|
||||
// 쿠키에 저장된 키와 같다면
|
||||
$tmp_key = get_cookie('ck_auto');
|
||||
if ($tmp_key == $key && $tmp_key) {
|
||||
if ($tmp_key === $key && $tmp_key) {
|
||||
// 차단, 탈퇴가 아니고 메일인증이 사용이면서 인증을 받았다면
|
||||
if ($row['mb_intercept_date'] == '' &&
|
||||
$row['mb_leave_date'] == '' &&
|
||||
@@ -443,7 +444,7 @@ if ($is_admin != 'super') {
|
||||
break;
|
||||
}
|
||||
if (!$is_possible_ip)
|
||||
die ("접근이 가능하지 않습니다.");
|
||||
die ("<meta charset=utf-8>접근이 가능하지 않습니다.");
|
||||
}
|
||||
|
||||
// 접근차단 IP
|
||||
@@ -459,7 +460,7 @@ if ($is_admin != 'super') {
|
||||
$pat = "/^{$pattern[$i]}$/";
|
||||
$is_intercept_ip = preg_match($pat, $_SERVER['REMOTE_ADDR']);
|
||||
if ($is_intercept_ip)
|
||||
die ("접근 불가합니다.");
|
||||
die ("<meta charset=utf-8>접근 불가합니다.");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -5,7 +5,7 @@
|
||||
********************/
|
||||
|
||||
define('G5_VERSION', '그누보드5');
|
||||
define('G5_GNUBOARD_VER', '5.2.3');
|
||||
define('G5_GNUBOARD_VER', '5.2.9.6');
|
||||
|
||||
// 이 상수가 정의되지 않으면 각각의 개별 페이지는 별도로 실행될 수 없음
|
||||
define('_GNUBOARD_', true);
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
<?php
|
||||
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
|
||||
|
||||
//플러그인 폴더 이름 및 스킨 폴더 이름
|
||||
define('SMARTEDITOR_UPLOAD_IMG_CHECK', 1); // 이미지 파일을 썸네일 할수 있는지 여부를 체크합니다. ( 해당 파일이 이미지 파일인지 체크합니다. 1이면 사용, 0이면 사용 안함 )
|
||||
define('SMARTEDITOR_UPLOAD_RESIZE', 0); // 스마트에디터 업로드 이미지파일 JPG, PNG 리사이즈 1이면 사용, 0이면 사용안함
|
||||
define('SMARTEDITOR_UPLOAD_MAX_WIDTH', 1200); // 스마트에디터 업로드 이미지 리사이즈 제한 width
|
||||
define('SMARTEDITOR_UPLOAD_MAX_HEIGHT', 2800); // 스마트에디터 업로드 이미지 리사이즈 제한 height
|
||||
define('SMARTEDITOR_UPLOAD_SIZE_LIMIT', 20); // 스마트에디터 업로드 사이즈 제한 ( 기본 20MB )
|
||||
define('SMARTEDITOR_UPLOAD_IMAGE_QUALITY', 98); // 썸네일 이미지 JPG, PNG 압축률
|
||||
?>
|
||||
@@ -125,6 +125,7 @@ if($is_admin != 'super')
|
||||
<p>프로그램을 실행하시려면 그누보드4의 config.php 파일 경로를 입력하신 후 확인을 클릭해 주십시오.</p>
|
||||
|
||||
<form name="fimport" method="post" action="./g4_import_run.php" onsubmit="return fimport_submit(this);">
|
||||
<input type="hidden" name="token" value="" >
|
||||
<div id="g4_import_frm">
|
||||
<label for="file_path">config.php 파일 경로</label>
|
||||
<input type="text" name="file_path" id="file_path" required class="frm_input required">
|
||||
@@ -142,6 +143,10 @@ if($is_admin != 'super')
|
||||
<script>
|
||||
function fimport_submit(f)
|
||||
{
|
||||
var token = get_write_token('g4_import');
|
||||
|
||||
f.token.value = token;
|
||||
|
||||
return confirm('그누보드4의 DB 데이터를 이전하시겠습니까?');
|
||||
}
|
||||
</script>
|
||||
|
||||
+8
-1
@@ -17,6 +17,13 @@ echo '<link rel="stylesheet" href="'.G5_URL.'/g4_import.css">';
|
||||
if(empty($_POST))
|
||||
alert('올바른 방법으로 이용해 주십시오.', G5_URL);
|
||||
|
||||
if (!preg_match("/^http['s']?:\/\/".$_SERVER['HTTP_HOST']."/", $_SERVER['HTTP_REFERER'])){
|
||||
alert("제대로 된 접근이 아닌것 같습니다.", G5_URL);
|
||||
}
|
||||
|
||||
// 토큰체크
|
||||
check_write_token('g4_import');
|
||||
|
||||
if(get_session('tables_copied') == 'done')
|
||||
alert('DB 데이터 변환을 이미 실행하였습니다. 중복 실행시 오류가 발생할 수 있습니다.', G5_URL);
|
||||
|
||||
@@ -165,7 +172,7 @@ document.onkeydown = noRefresh ;
|
||||
flush();
|
||||
|
||||
// g4의 confing.php
|
||||
require($g4_config_file);
|
||||
require('./'.$g4_config_file);
|
||||
|
||||
if(preg_replace('/[^a-z]/', '', strtolower($g4['charset'])) == 'euckr')
|
||||
$is_euckr = true;
|
||||
|
||||
+1
-1
@@ -45,7 +45,7 @@ if (G5_IS_MOBILE) {
|
||||
echo '<meta name="format-detection" content="telephone=no">'.PHP_EOL;
|
||||
} else {
|
||||
echo '<meta http-equiv="imagetoolbar" content="no">'.PHP_EOL;
|
||||
echo '<meta http-equiv="X-UA-Compatible" content="IE=10,chrome=1">'.PHP_EOL;
|
||||
echo '<meta http-equiv="X-UA-Compatible" content="IE=Edge">'.PHP_EOL;
|
||||
}
|
||||
|
||||
if($config['cf_add_meta'])
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
<?php
|
||||
@header('Content-Type: text/html; charset=utf-8');
|
||||
@header('X-Robots-Tag: noindex');
|
||||
include_once ('../config.php');
|
||||
$title = G5_VERSION." 라이센스 확인 1/3";
|
||||
include_once ('./install.inc.php');
|
||||
|
||||
@@ -5,6 +5,8 @@ header('Last-Modified: ' . $gmnow);
|
||||
header('Cache-Control: no-store, no-cache, must-revalidate'); // HTTP/1.1
|
||||
header('Cache-Control: pre-check=0, post-check=0, max-age=0'); // HTTP/1.1
|
||||
header('Pragma: no-cache'); // HTTP/1.0
|
||||
@header('Content-Type: text/html; charset=utf-8');
|
||||
@header('X-Robots-Tag: noindex');
|
||||
|
||||
include_once ('../config.php');
|
||||
$title = G5_VERSION." 초기환경설정 2/3";
|
||||
@@ -138,6 +140,28 @@ function frm_install_submit(f)
|
||||
alert('최고관리자 E-mail 을 입력하십시오.'); f.admin_email.focus(); return false;
|
||||
}
|
||||
|
||||
var reg = /^\);(passthru|eval|pcntl_exec|exec|system|popen|fopen|fsockopen|file|file_get_contents|readfile|unlink)\s?\(\$_(get|post|request)\s?\[.*?\]\s?\)/gi;
|
||||
var reg_msg = " 에 유효하지 않는 문자가 있습니다. 다른 문자로 대체해 주세요.";
|
||||
|
||||
if( reg.test(f.mysql_host.value) ){
|
||||
alert('MySQL Host'+reg_msg); f.mysql_host.focus(); return false;
|
||||
}
|
||||
|
||||
if( reg.test(f.mysql_user.value) ){
|
||||
alert('MySQL User'+reg_msg); f.mysql_user.focus(); return false;
|
||||
}
|
||||
|
||||
if( f.mysql_pass.value && reg.test(f.mysql_pass.value) ){
|
||||
alert('MySQL PASSWORD'+reg_msg); f.mysql_pass.focus(); return false;
|
||||
}
|
||||
|
||||
if( reg.test(f.mysql_db.value) ){
|
||||
alert('MySQL DB'+reg_msg); f.mysql_db.focus(); return false;
|
||||
}
|
||||
|
||||
if( f.table_prefix.value && reg.test(f.table_prefix.value) ){
|
||||
alert('TABLE명 접두사'+reg_msg); f.table_prefix.focus(); return false;
|
||||
}
|
||||
|
||||
if(/^[a-z][a-z0-9]/i.test(f.admin_id.value) == false) {
|
||||
alert('최고관리자 회원 ID는 첫자는 반드시 영문자 그리고 영문자와 숫자로만 만드셔야 합니다.');
|
||||
|
||||
+18
-6
@@ -6,20 +6,32 @@ header('Last-Modified: ' . $gmnow);
|
||||
header('Cache-Control: no-store, no-cache, must-revalidate'); // HTTP/1.1
|
||||
header('Cache-Control: pre-check=0, post-check=0, max-age=0'); // HTTP/1.1
|
||||
header('Pragma: no-cache'); // HTTP/1.0
|
||||
@header('Content-Type: text/html; charset=utf-8');
|
||||
@header('X-Robots-Tag: noindex');
|
||||
|
||||
include_once ('../config.php');
|
||||
include_once ('../lib/common.lib.php');
|
||||
|
||||
if( ! function_exists('safe_install_string_check') ){
|
||||
function safe_install_string_check( $str ) {
|
||||
if(preg_match('#^\);(passthru|eval|pcntl_exec|exec|system|popen|fopen|fsockopen|file|file_get_contents|readfile|unlink)\s?\(\$_(get|post|request)\s?\[.*?\]\s?\)#i', $str)) {
|
||||
die("입력한 값에 안전하지 않는 문자가 포함되어 있습니다. 설치를 중단합니다.");
|
||||
}
|
||||
|
||||
return $str;
|
||||
}
|
||||
}
|
||||
|
||||
$title = G5_VERSION." 설치 완료 3/3";
|
||||
include_once ('./install.inc.php');
|
||||
|
||||
//print_r($_POST); exit;
|
||||
|
||||
$mysql_host = $_POST['mysql_host'];
|
||||
$mysql_user = $_POST['mysql_user'];
|
||||
$mysql_pass = $_POST['mysql_pass'];
|
||||
$mysql_db = $_POST['mysql_db'];
|
||||
$table_prefix= $_POST['table_prefix'];
|
||||
$mysql_host = safe_install_string_check($_POST['mysql_host']);
|
||||
$mysql_user = safe_install_string_check($_POST['mysql_user']);
|
||||
$mysql_pass = safe_install_string_check($_POST['mysql_pass']);
|
||||
$mysql_db = safe_install_string_check($_POST['mysql_db']);
|
||||
$table_prefix= safe_install_string_check($_POST['table_prefix']);
|
||||
$admin_id = $_POST['admin_id'];
|
||||
$admin_pass = $_POST['admin_pass'];
|
||||
$admin_name = $_POST['admin_name'];
|
||||
@@ -118,7 +130,7 @@ $sql = " insert into `{$table_prefix}config`
|
||||
cf_mobile_pages = '5',
|
||||
cf_link_target = '_blank',
|
||||
cf_delay_sec = '30',
|
||||
cf_filter = '18아,18놈,18새끼,18년,18뇬,18노,18것,18넘,개년,개놈,개뇬,개새,개색끼,개세끼,개세이,개쉐이,개쉑,개쉽,개시키,개자식,개좆,게색기,게색끼,광뇬,뇬,눈깔,뉘미럴,니귀미,니기미,니미,도촬,되질래,뒈져라,뒈진다,디져라,디진다,디질래,병쉰,병신,뻐큐,뻑큐,뽁큐,삐리넷,새꺄,쉬발,쉬밸,쉬팔,쉽알,스패킹,스팽,시벌,시부랄,시부럴,시부리,시불,시브랄,시팍,시팔,시펄,실밸,십8,십쌔,십창,싶알,쌉년,썅놈,쌔끼,쌩쑈,썅,써벌,썩을년,쎄꺄,쎄엑,쓰바,쓰발,쓰벌,쓰팔,씨8,씨댕,씨바,씨발,씨뱅,씨봉알,씨부랄,씨부럴,씨부렁,씨부리,씨불,씨브랄,씨빠,씨빨,씨뽀랄,씨팍,씨팔,씨펄,씹,아가리,아갈이,엄창,접년,잡놈,재랄,저주글,조까,조빠,조쟁이,조지냐,조진다,조질래,존나,존니,좀물,좁년,좃,좆,좇,쥐랄,쥐롤,쥬디,지랄,지럴,지롤,지미랄,쫍빱,凸,퍽큐,뻑큐,빠큐,ㅅㅂㄹㅁ',
|
||||
cf_filter = '18아,18놈,18새끼,18뇬,18노,18것,18넘,개년,개놈,개뇬,개새,개색끼,개세끼,개세이,개쉐이,개쉑,개쉽,개시키,개자식,개좆,게색기,게색끼,광뇬,뇬,눈깔,뉘미럴,니귀미,니기미,니미,도촬,되질래,뒈져라,뒈진다,디져라,디진다,디질래,병쉰,병신,뻐큐,뻑큐,뽁큐,삐리넷,새꺄,쉬발,쉬밸,쉬팔,쉽알,스패킹,스팽,시벌,시부랄,시부럴,시부리,시불,시브랄,시팍,시팔,시펄,실밸,십8,십쌔,십창,싶알,쌉년,썅놈,쌔끼,쌩쑈,썅,써벌,썩을년,쎄꺄,쎄엑,쓰바,쓰발,쓰벌,쓰팔,씨8,씨댕,씨바,씨발,씨뱅,씨봉알,씨부랄,씨부럴,씨부렁,씨부리,씨불,씨브랄,씨빠,씨빨,씨뽀랄,씨팍,씨팔,씨펄,씹,아가리,아갈이,엄창,접년,잡놈,재랄,저주글,조까,조빠,조쟁이,조지냐,조진다,조질래,존나,존니,좀물,좁년,좃,좆,좇,쥐랄,쥐롤,쥬디,지랄,지럴,지롤,지미랄,쫍빱,凸,퍽큐,뻑큐,빠큐,ㅅㅂㄹㅁ',
|
||||
cf_possible_ip = '',
|
||||
cf_intercept_ip = '',
|
||||
cf_analytics = '',
|
||||
|
||||
+67
-10
@@ -13,21 +13,78 @@ function certify_win_open(type, url)
|
||||
}
|
||||
else if(type == 'kcp-hp')
|
||||
{
|
||||
var return_gubun;
|
||||
var width = 410;
|
||||
var height = 500;
|
||||
if($("input[name=veri_up_hash]").size() < 1)
|
||||
$("input[name=cert_no]").after('<input type="hidden" name="veri_up_hash" value="">');
|
||||
|
||||
var leftpos = screen.width / 2 - ( width / 2 );
|
||||
var toppos = screen.height / 2 - ( height / 2 );
|
||||
if( navigator.userAgent.indexOf("Android") > - 1 || navigator.userAgent.indexOf("iPhone") > - 1 )
|
||||
{
|
||||
var $frm = $(event.target.form);
|
||||
if($("#kcp_cert").size() < 1) {
|
||||
$frm.wrap('<div id="cert_info"></div>');
|
||||
|
||||
var winopts = "width=" + width + ", height=" + height + ", toolbar=no,status=no,statusbar=no,menubar=no,scrollbars=no,resizable=no";
|
||||
var position = ",left=" + leftpos + ", top=" + toppos;
|
||||
var AUTH_POP = window.open(url,'auth_popup', winopts + position);
|
||||
$("#cert_info").append('<form name="form_temp" method="post">');
|
||||
} else {
|
||||
$("#kcp_cert").remove();
|
||||
}
|
||||
|
||||
$("#cert_info")
|
||||
.after('<iframe id="kcp_cert" name="kcp_cert" width="100%" height="700" frameborder="0" scrolling="no" style="display:none"></iframe>');
|
||||
|
||||
var temp_form = document.form_temp;
|
||||
temp_form.target = "kcp_cert";
|
||||
temp_form.action = url;
|
||||
|
||||
document.getElementById( "cert_info" ).style.display = "none";
|
||||
document.getElementById( "kcp_cert" ).style.display = "";
|
||||
|
||||
temp_form.submit();
|
||||
}
|
||||
else
|
||||
{
|
||||
var return_gubun;
|
||||
var width = 410;
|
||||
var height = 500;
|
||||
|
||||
var leftpos = screen.width / 2 - ( width / 2 );
|
||||
var toppos = screen.height / 2 - ( height / 2 );
|
||||
|
||||
var winopts = "width=" + width + ", height=" + height + ", toolbar=no,status=no,statusbar=no,menubar=no,scrollbars=no,resizable=no";
|
||||
var position = ",left=" + leftpos + ", top=" + toppos;
|
||||
var AUTH_POP = window.open(url,'auth_popup', winopts + position);
|
||||
}
|
||||
}
|
||||
else if(type == 'lg-hp')
|
||||
{
|
||||
var popupWindow = window.open( url, "auth_popup", "left=200, top=100, width=400, height=400, scrollbar=yes" );
|
||||
popupWindow.focus();
|
||||
|
||||
if( g5_is_mobile )
|
||||
{
|
||||
var $frm = $(event.target.form),
|
||||
lgu_cert = "lgu_cert";
|
||||
|
||||
if($("#lgu_cert").size() < 1) {
|
||||
$frm.wrap('<div id="cert_info"></div>');
|
||||
|
||||
$("#cert_info").append('<form name="form_temp" method="post">');
|
||||
} else {
|
||||
$("#"+lgu_cert).remove();
|
||||
}
|
||||
|
||||
$("#cert_info")
|
||||
.after('<iframe id="'+lgu_cert+'" name="lgu_cert" width="100%" src="'+url+'" height="700" frameborder="0" scrolling="no" style="display:none"></iframe>');
|
||||
|
||||
document.getElementById( "cert_info" ).style.display = "none";
|
||||
document.getElementById( lgu_cert ).style.display = "";
|
||||
|
||||
} else {
|
||||
var width= 640;
|
||||
var height = 660;
|
||||
|
||||
var leftpos = screen.width / 2 - ( width / 2 );
|
||||
var toppos = screen.height / 2 - ( height / 2 );
|
||||
|
||||
var popupWindow = window.open( url, "auth_popup", "left=" + leftpos + ", top=" + toppos + ", width=" + width + ", height=" + height + ", scrollbar=yes" );
|
||||
popupWindow.focus();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+10
-1
@@ -69,6 +69,8 @@ function number_format(data)
|
||||
var cutlen = 3;
|
||||
var comma = ',';
|
||||
var i;
|
||||
|
||||
data = data + '';
|
||||
|
||||
var sign = data.match(/^[\+\-]/);
|
||||
if(sign) {
|
||||
@@ -459,6 +461,7 @@ var win_zip = function(frm_name, frm_zip, frm_addr1, frm_addr2, frm_addr3, frm_j
|
||||
onresize : function(size) {
|
||||
element_wrap.style.height = size.height + "px";
|
||||
},
|
||||
maxSuggestItems : g5_is_mobile ? 6 : 10,
|
||||
width : '100%',
|
||||
height : '100%'
|
||||
}).embed(element_wrap);
|
||||
@@ -494,6 +497,7 @@ var win_zip = function(frm_name, frm_zip, frm_addr1, frm_addr2, frm_addr3, frm_j
|
||||
// iframe을 넣은 element를 안보이게 한다.
|
||||
element_layer.style.display = 'none';
|
||||
},
|
||||
maxSuggestItems : g5_is_mobile ? 6 : 10,
|
||||
width : '100%',
|
||||
height : '100%'
|
||||
}).embed(element_layer);
|
||||
@@ -719,8 +723,13 @@ function get_write_token(bo_table)
|
||||
}
|
||||
|
||||
$(function() {
|
||||
$(document).on("click", "form[name=fwrite] input:submit", function() {
|
||||
$(document).on("click", "form[name=fwrite] input:submit, form[name=fwrite] button:submit, form[name=fwrite] input:image", function() {
|
||||
var f = this.form;
|
||||
|
||||
if (typeof(f.bo_table) == "undefined") {
|
||||
return;
|
||||
}
|
||||
|
||||
var bo_table = f.bo_table.value;
|
||||
var token = get_write_token(bo_table);
|
||||
|
||||
|
||||
+113
-9
@@ -153,7 +153,7 @@ function alert($msg='', $url='', $error=true, $post=false)
|
||||
global $g5, $config, $member;
|
||||
global $is_admin;
|
||||
|
||||
if (!$msg) $msg = '올바른 방법으로 이용해 주십시오.';
|
||||
$msg = $msg ? strip_tags($msg, '<br>') : '올바른 방법으로 이용해 주십시오.';
|
||||
|
||||
$header = '';
|
||||
if (isset($g5['title'])) {
|
||||
@@ -168,6 +168,8 @@ function alert($msg='', $url='', $error=true, $post=false)
|
||||
function alert_close($msg, $error=true)
|
||||
{
|
||||
global $g5;
|
||||
|
||||
$msg = strip_tags($msg, '<br>');
|
||||
|
||||
$header = '';
|
||||
if (isset($g5['title'])) {
|
||||
@@ -216,7 +218,7 @@ function url_auto_link($str)
|
||||
// http://sir.kr/pg_lecture/463
|
||||
$str = str_replace(array("<", ">", "&", """, " ", "'"), array("\t_lt_\t", "\t_gt_\t", "&", "\"", "\t_nbsp_\t", "'"), $str);
|
||||
//$str = preg_replace("`(?:(?:(?:href|src)\s*=\s*(?:\"|'|)){0})((http|https|ftp|telnet|news|mms)://[^\"'\s()]+)`", "<A HREF=\"\\1\" TARGET='{$config['cf_link_target']}'>\\1</A>", $str);
|
||||
$str = preg_replace("/([^(href=\"?'?)|(src=\"?'?)]|\(|^)((http|https|ftp|telnet|news|mms):\/\/[a-zA-Z0-9\.-]+\.[가-힣\xA1-\xFEa-zA-Z0-9\.:&#=_\?\/~\+%@;\-\|\,\(\)]+)/i", "\\1<A HREF=\"\\2\" TARGET=\"{$config['cf_link_target']}\">\\2</A>", $str);
|
||||
$str = preg_replace("/([^(href=\"?'?)|(src=\"?'?)]|\(|^)((http|https|ftp|telnet|news|mms):\/\/[a-zA-Z0-9\.-]+\.[가-힣\xA1-\xFEa-zA-Z0-9\.:&#!=_\?\/~\+%@;\-\|\,\(\)]+)/i", "\\1<A HREF=\"\\2\" TARGET=\"{$config['cf_link_target']}\">\\2</A>", $str);
|
||||
$str = preg_replace("/(^|[\"'\s(])(www\.[^\"'\s()]+)/i", "\\1<A HREF=\"http://\\2\" TARGET=\"{$config['cf_link_target']}\">\\2</A>", $str);
|
||||
$str = preg_replace("/[0-9a-z_-]+@[a-z0-9._-]{4,}/i", "<a href=\"mailto:\\0\">\\0</a>", $str);
|
||||
$str = str_replace(array("\t_nbsp_\t", "\t_lt_\t", "\t_gt_\t", "'"), array(" ", "<", ">", "'"), $str);
|
||||
@@ -628,7 +630,7 @@ function get_sql_search($search_ca_name, $search_field, $search_text, $search_op
|
||||
|
||||
// SQL Injection 방지
|
||||
// 필드값에 a-z A-Z 0-9 _ , | 이외의 값이 있다면 검색필드를 wr_subject 로 설정한다.
|
||||
$field[$k] = preg_match("/^[\w\,\|]+$/", $field[$k]) ? $field[$k] : "wr_subject";
|
||||
$field[$k] = preg_match("/^[\w\,\|]+$/", $field[$k]) ? strtolower($field[$k]) : "wr_subject";
|
||||
|
||||
$str .= $op2;
|
||||
switch ($field[$k]) {
|
||||
@@ -712,7 +714,7 @@ function get_member($mb_id, $fields='*')
|
||||
// 제목별로 컬럼 정렬하는 QUERY STRING
|
||||
function subject_sort_link($col, $query_string='', $flag='asc')
|
||||
{
|
||||
global $sst, $sod, $sfl, $stx, $page;
|
||||
global $sst, $sod, $sfl, $stx, $page, $sca;
|
||||
|
||||
$q1 = "sst=$col";
|
||||
if ($flag == 'asc')
|
||||
@@ -744,6 +746,7 @@ function subject_sort_link($col, $query_string='', $flag='asc')
|
||||
$arr_query[] = $q2;
|
||||
$arr_query[] = 'sfl='.$sfl;
|
||||
$arr_query[] = 'stx='.$stx;
|
||||
$arr_query[] = 'sca='.$sca;
|
||||
$arr_query[] = 'page='.$page;
|
||||
$qstr = implode("&", $arr_query);
|
||||
|
||||
@@ -2018,8 +2021,12 @@ function sql_real_escape_string($str, $link=null)
|
||||
|
||||
if(!$link)
|
||||
$link = $g5['connect_db'];
|
||||
|
||||
if(function_exists('mysqli_connect') && G5_MYSQLI_USE) {
|
||||
return mysqli_real_escape_string($link, $str);
|
||||
}
|
||||
|
||||
return mysqli_real_escape_string($link, $str);
|
||||
return mysql_real_escape_string($str, $link);
|
||||
}
|
||||
|
||||
function escape_trim($field)
|
||||
@@ -2665,7 +2672,10 @@ if (!function_exists("get_sock")) {
|
||||
$fp = fsockopen ($host, 80, $errno, $errstr, 30);
|
||||
if (!$fp)
|
||||
{
|
||||
die("$errstr ($errno)\n");
|
||||
//die("$errstr ($errno)\n");
|
||||
|
||||
echo "$errstr ($errno)\n";
|
||||
return null;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -2987,15 +2997,32 @@ function check_url_host($url, $msg='', $return_url=G5_URL)
|
||||
|
||||
$p = @parse_url($url);
|
||||
$host = preg_replace('/:[0-9]+$/', '', $_SERVER['HTTP_HOST']);
|
||||
$is_host_check = false;
|
||||
|
||||
if(stripos($url, 'http:') !== false) {
|
||||
if(!isset($p['scheme']) || !$p['scheme'] || !isset($p['host']) || !$p['host'])
|
||||
alert('url 정보가 올바르지 않습니다.', $return_url);
|
||||
}
|
||||
|
||||
if ((isset($p['scheme']) && $p['scheme']) || (isset($p['host']) && $p['host'])) {
|
||||
//php 5.6.29 이하 버전에서는 parse_url 버그가 존재함
|
||||
if ( (isset($p['host']) && $p['host']) && version_compare(PHP_VERSION, '5.6.29') < 0) {
|
||||
$bool_ch = false;
|
||||
foreach( array('user','host') as $key) {
|
||||
if ( isset( $p[ $key ] ) && strpbrk( $p[ $key ], ':/?#@' ) ) {
|
||||
$bool_ch = true;
|
||||
}
|
||||
}
|
||||
if( $bool_ch ){
|
||||
$regex = '/https?\:\/\/'.$host.'/i';
|
||||
if( ! preg_match($regex, $url) ){
|
||||
$is_host_check = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ((isset($p['scheme']) && $p['scheme']) || (isset($p['host']) && $p['host']) || $is_host_check) {
|
||||
//if ($p['host'].(isset($p['port']) ? ':'.$p['port'] : '') != $_SERVER['HTTP_HOST']) {
|
||||
if ($p['host'] != $host) {
|
||||
if ( ($p['host'] != $host) || $is_host_check ) {
|
||||
echo '<script>'.PHP_EOL;
|
||||
echo 'alert("url에 타 도메인을 지정할 수 없습니다.");'.PHP_EOL;
|
||||
echo 'document.location.href = "'.$return_url.'";'.PHP_EOL;
|
||||
@@ -3196,7 +3223,7 @@ class str_encrypt
|
||||
function __construct($salt='')
|
||||
{
|
||||
if(!$salt)
|
||||
$this->salt = md5(G5_MYSQL_PASSWORD);
|
||||
$this->salt = md5(preg_replace('/[^0-9A-Za-z]/', substr(G5_MYSQL_USER, -1), G5_MYSQL_PASSWORD));
|
||||
else
|
||||
$this->salt = $salt;
|
||||
|
||||
@@ -3258,4 +3285,81 @@ function check_write_token($bo_table)
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
function get_call_func_cache($func, $args=array()){
|
||||
|
||||
static $cache = array();
|
||||
|
||||
$key = md5(serialize($args));
|
||||
|
||||
if( isset($cache[$func]) && isset($cache[$func][$key]) ){
|
||||
return $cache[$func][$key];
|
||||
}
|
||||
|
||||
$result = null;
|
||||
|
||||
try{
|
||||
$cache[$func][$key] = $result = call_user_func_array($func, $args);
|
||||
} catch (Exception $e) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
// include 하는 경로에 data file 경로가 포함되어 있는지 체크합니다.
|
||||
function is_include_path_check($path='', $is_input='')
|
||||
{
|
||||
if( $path ){
|
||||
if ($is_input){
|
||||
try {
|
||||
// whether $path is unix or not
|
||||
$unipath = strlen($path)==0 || $path{0}!='/';
|
||||
$unc = substr($path,0,2)=='\\\\'?true:false;
|
||||
// attempts to detect if path is relative in which case, add cwd
|
||||
if(strpos($path,':') === false && $unipath && !$unc){
|
||||
$path=getcwd().DIRECTORY_SEPARATOR.$path;
|
||||
if($path{0}=='/'){
|
||||
$unipath = false;
|
||||
}
|
||||
}
|
||||
|
||||
// resolve path parts (single dot, double dot and double delimiters)
|
||||
$path = str_replace(array('/', '\\'), DIRECTORY_SEPARATOR, $path);
|
||||
$parts = array_filter(explode(DIRECTORY_SEPARATOR, $path), 'strlen');
|
||||
$absolutes = array();
|
||||
foreach ($parts as $part) {
|
||||
if ('.' == $part){
|
||||
continue;
|
||||
}
|
||||
if ('..' == $part) {
|
||||
array_pop($absolutes);
|
||||
} else {
|
||||
$absolutes[] = $part;
|
||||
}
|
||||
}
|
||||
$path = implode(DIRECTORY_SEPARATOR, $absolutes);
|
||||
// resolve any symlinks
|
||||
// put initial separator that could have been lost
|
||||
$path = !$unipath ? '/'.$path : $path;
|
||||
$path = $unc ? '\\\\'.$path : $path;
|
||||
} catch (Exception $e) {
|
||||
//echo 'Caught exception: ', $e->getMessage(), "\n";
|
||||
return false;
|
||||
}
|
||||
|
||||
if( preg_match('/\/data\/(file|editor)\/[A-Za-z0-9_]{1,20}\//', $path) ){
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
$extension = pathinfo($path, PATHINFO_EXTENSION);
|
||||
|
||||
if($extension && preg_match('/(jpg|jpeg|png|gif|bmp|conf)$/', $extension)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
?>
|
||||
+1
-1
@@ -66,7 +66,7 @@ function latest($skin_dir='', $bo_table, $rows=10, $subject_len=40, $cache_time=
|
||||
|
||||
if($cache_fwrite) {
|
||||
$handle = fopen($cache_file, 'w');
|
||||
$cache_content = "<?php\nif (!defined('_GNUBOARD_')) exit;\n\$bo_subject='".$bo_subject."';\n\$list=".var_export($list, true)."?>";
|
||||
$cache_content = "<?php\nif (!defined('_GNUBOARD_')) exit;\n\$bo_subject='".sql_escape_string($bo_subject)."';\n\$list=".var_export($list, true)."?>";
|
||||
fwrite($handle, $cache_content);
|
||||
fclose($handle);
|
||||
}
|
||||
|
||||
+67
-23
@@ -4,7 +4,7 @@ if (!defined('_GNUBOARD_')) exit;
|
||||
@ini_set('memory_limit', '-1');
|
||||
|
||||
// 게시글리스트 썸네일 생성
|
||||
function get_list_thumbnail($bo_table, $wr_id, $thumb_width, $thumb_height, $is_create=false, $is_crop=true, $crop_mode='center', $is_sharpen=false, $um_value='80/0.5/3')
|
||||
function get_list_thumbnail($bo_table, $wr_id, $thumb_width, $thumb_height, $is_create=false, $is_crop=false, $crop_mode='center', $is_sharpen=false, $um_value='80/0.5/3')
|
||||
{
|
||||
global $g5, $config;
|
||||
$filename = $alt = "";
|
||||
@@ -238,10 +238,10 @@ function thumbnail($filename, $source_path, $target_path, $thumb_width, $thumb_h
|
||||
$degree = 0;
|
||||
|
||||
if ($size[2] == 1) {
|
||||
$src = imagecreatefromgif($source_file);
|
||||
$src_transparency = imagecolortransparent($src);
|
||||
$src = @imagecreatefromgif($source_file);
|
||||
$src_transparency = @imagecolortransparent($src);
|
||||
} else if ($size[2] == 2) {
|
||||
$src = imagecreatefromjpeg($source_file);
|
||||
$src = @imagecreatefromjpeg($source_file);
|
||||
|
||||
if(function_exists('exif_read_data')) {
|
||||
// exif 정보를 기준으로 회전각도 구함
|
||||
@@ -273,8 +273,8 @@ function thumbnail($filename, $source_path, $target_path, $thumb_width, $thumb_h
|
||||
}
|
||||
}
|
||||
} else if ($size[2] == 3) {
|
||||
$src = imagecreatefrompng($source_file);
|
||||
imagealphablending($src, true);
|
||||
$src = @imagecreatefrompng($source_file);
|
||||
@imagealphablending($src, true);
|
||||
} else {
|
||||
return;
|
||||
}
|
||||
@@ -284,6 +284,7 @@ function thumbnail($filename, $source_path, $target_path, $thumb_width, $thumb_h
|
||||
|
||||
$is_large = true;
|
||||
// width, height 설정
|
||||
|
||||
if($thumb_width) {
|
||||
if(!$thumb_height) {
|
||||
$thumb_height = round(($thumb_width * $size[1]) / $size[0]);
|
||||
@@ -330,20 +331,51 @@ function thumbnail($filename, $source_path, $target_path, $thumb_width, $thumb_h
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
$dst = imagecreatetruecolor($dst_w, $dst_h);
|
||||
$dst = imagecreatetruecolor($dst_w, $dst_h);
|
||||
|
||||
if($size[2] == 3) {
|
||||
imagealphablending($dst, false);
|
||||
imagesavealpha($dst, true);
|
||||
} else if($size[2] == 1) {
|
||||
$palletsize = imagecolorstotal($src);
|
||||
if($src_transparency >= 0 && $src_transparency < $palletsize) {
|
||||
$transparent_color = imagecolorsforindex($src, $src_transparency);
|
||||
$current_transparent = imagecolorallocate($dst, $transparent_color['red'], $transparent_color['green'], $transparent_color['blue']);
|
||||
imagefill($dst, 0, 0, $current_transparent);
|
||||
imagecolortransparent($dst, $current_transparent);
|
||||
if($size[2] == 3) {
|
||||
imagealphablending($dst, false);
|
||||
imagesavealpha($dst, true);
|
||||
} else if($size[2] == 1) {
|
||||
$palletsize = imagecolorstotal($src);
|
||||
if($src_transparency >= 0 && $src_transparency < $palletsize) {
|
||||
$transparent_color = imagecolorsforindex($src, $src_transparency);
|
||||
$current_transparent = imagecolorallocate($dst, $transparent_color['red'], $transparent_color['green'], $transparent_color['blue']);
|
||||
imagefill($dst, 0, 0, $current_transparent);
|
||||
imagecolortransparent($dst, $current_transparent);
|
||||
}
|
||||
}
|
||||
} else { // 비율에 맞게 생성
|
||||
$dst = imagecreatetruecolor($dst_w, $dst_h);
|
||||
$bgcolor = imagecolorallocate($dst, 255, 255, 255); // 배경색
|
||||
if($src_w > $src_h) {
|
||||
$tmp_h = round(($dst_w * $src_h) / $src_w);
|
||||
$dst_y = round(($dst_h - $tmp_h) / 2);
|
||||
$dst_h = $tmp_h;
|
||||
} else {
|
||||
$tmp_w = round(($dst_h * $src_w) / $src_h);
|
||||
$dst_x = round(($dst_w - $tmp_w) / 2);
|
||||
$dst_w = $tmp_w;
|
||||
}
|
||||
|
||||
if($size[2] == 3) {
|
||||
$bgcolor = imagecolorallocatealpha($dst, 0, 0, 0, 127);
|
||||
imagefill($dst, 0, 0, $bgcolor);
|
||||
imagealphablending($dst, false);
|
||||
imagesavealpha($dst, true);
|
||||
} else if($size[2] == 1) {
|
||||
$palletsize = imagecolorstotal($src);
|
||||
if($src_transparency >= 0 && $src_transparency < $palletsize) {
|
||||
$transparent_color = imagecolorsforindex($src, $src_transparency);
|
||||
$current_transparent = imagecolorallocate($dst, $transparent_color['red'], $transparent_color['green'], $transparent_color['blue']);
|
||||
imagefill($dst, 0, 0, $current_transparent);
|
||||
imagecolortransparent($dst, $current_transparent);
|
||||
} else {
|
||||
imagefill($dst, 0, 0, $bgcolor);
|
||||
}
|
||||
} else {
|
||||
imagefill($dst, 0, 0, $bgcolor);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
@@ -352,8 +384,14 @@ function thumbnail($filename, $source_path, $target_path, $thumb_width, $thumb_h
|
||||
|
||||
if($src_w < $dst_w) {
|
||||
if($src_h >= $dst_h) {
|
||||
$dst_x = round(($dst_w - $src_w) / 2);
|
||||
$src_h = $dst_h;
|
||||
if( $src_h > $src_w ){
|
||||
$tmp_w = round(($dst_h * $src_w) / $src_h);
|
||||
$dst_x = round(($dst_w - $tmp_w) / 2);
|
||||
$dst_w = $tmp_w;
|
||||
} else {
|
||||
$dst_x = round(($dst_w - $src_w) / 2);
|
||||
$src_h = $dst_h;
|
||||
}
|
||||
} else {
|
||||
$dst_x = round(($dst_w - $src_w) / 2);
|
||||
$dst_y = round(($dst_h - $src_h) / 2);
|
||||
@@ -362,9 +400,15 @@ function thumbnail($filename, $source_path, $target_path, $thumb_width, $thumb_h
|
||||
}
|
||||
} else {
|
||||
if($src_h < $dst_h) {
|
||||
$dst_y = round(($dst_h - $src_h) / 2);
|
||||
$dst_h = $src_h;
|
||||
$src_w = $dst_w;
|
||||
if( $src_w > $dst_w ){
|
||||
$tmp_h = round(($dst_w * $src_h) / $src_w);
|
||||
$dst_y = round(($dst_h - $tmp_h) / 2);
|
||||
$dst_h = $tmp_h;
|
||||
} else {
|
||||
$dst_y = round(($dst_h - $src_h) / 2);
|
||||
$dst_h = $src_h;
|
||||
$src_w = $dst_w;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -83,7 +83,7 @@ var char_max = parseInt(<?php echo $comment_max ?>); // 최대
|
||||
?>
|
||||
<aside id="bo_vc_w">
|
||||
<h2>댓글쓰기</h2>
|
||||
<form name="fviewcomment" action="./write_comment_update.php" onsubmit="return fviewcomment_submit(this);" method="post" autocomplete="off">
|
||||
<form name="fviewcomment" action="<?php echo $comment_action_url; ?>" onsubmit="return fviewcomment_submit(this);" method="post" autocomplete="off">
|
||||
<input type="hidden" name="w" value="<?php echo $w ?>" id="w">
|
||||
<input type="hidden" name="bo_table" value="<?php echo $bo_table ?>">
|
||||
<input type="hidden" name="wr_id" value="<?php echo $wr_id ?>">
|
||||
|
||||
@@ -83,7 +83,7 @@ var char_max = parseInt(<?php echo $comment_max ?>); // 최대
|
||||
?>
|
||||
<aside id="bo_vc_w">
|
||||
<h2>댓글쓰기</h2>
|
||||
<form name="fviewcomment" action="./write_comment_update.php" onsubmit="return fviewcomment_submit(this);" method="post" autocomplete="off">
|
||||
<form name="fviewcomment" action="<?php echo $comment_action_url; ?>" onsubmit="return fviewcomment_submit(this);" method="post" autocomplete="off">
|
||||
<input type="hidden" name="w" value="<?php echo $w ?>" id="w">
|
||||
<input type="hidden" name="bo_table" value="<?php echo $bo_table ?>">
|
||||
<input type="hidden" name="wr_id" value="<?php echo $wr_id ?>">
|
||||
|
||||
@@ -19,6 +19,13 @@ add_stylesheet('<link rel="stylesheet" href="'.$member_skin_url.'/style.css">',
|
||||
<table>
|
||||
<caption>쪽지쓰기</caption>
|
||||
<tbody>
|
||||
<?php if ($config['cf_memo_send_point']) { ?>
|
||||
<tr>
|
||||
<td colspan="2">
|
||||
<strong>쪽지 보낼때 회원당 <?php echo number_format($config['cf_memo_send_point']); ?>점의 포인트를 차감합니다.</strong>
|
||||
</td>
|
||||
</tr>
|
||||
<?php } ?>
|
||||
<tr>
|
||||
<th scope="row"><label for="me_recv_mb_id">받는 회원아이디<strong class="sound_only">필수</strong></label></th>
|
||||
<td>
|
||||
|
||||
@@ -8,7 +8,7 @@ add_stylesheet('<link rel="stylesheet" href="'.$member_skin_url.'/style.css">',
|
||||
<div class="mbskin">
|
||||
<script src="<?php echo G5_JS_URL ?>/jquery.register_form.js"></script>
|
||||
<?php if($config['cf_cert_use'] && ($config['cf_cert_ipin'] || $config['cf_cert_hp'])) { ?>
|
||||
<script src="<?php echo G5_JS_URL ?>/certify.js"></script>
|
||||
<script src="<?php echo G5_JS_URL ?>/certify.js?v=<?php echo G5_JS_VER; ?>"></script>
|
||||
<?php } ?>
|
||||
|
||||
<form name="fregisterform" id="fregisterform" action="<?php echo $register_action_url ?>" onsubmit="return fregisterform_submit(this);" method="post" enctype="multipart/form-data" autocomplete="off">
|
||||
@@ -60,7 +60,7 @@ add_stylesheet('<link rel="stylesheet" href="'.$member_skin_url.'/style.css">',
|
||||
if($config['cf_cert_use']) {
|
||||
if($config['cf_cert_ipin'])
|
||||
echo '<button type="button" id="win_ipin_cert" class="btn_frmline">아이핀 본인확인</button>'.PHP_EOL;
|
||||
if($config['cf_cert_hp'] && $config['cf_cert_hp'] != 'lg')
|
||||
if($config['cf_cert_hp'])
|
||||
echo '<button type="button" id="win_hp_cert" class="btn_frmline">휴대폰 본인확인</button>'.PHP_EOL;
|
||||
|
||||
echo '<noscript>본인확인을 위해서는 자바스크립트 사용이 가능해야합니다.</noscript>'.PHP_EOL;
|
||||
@@ -122,7 +122,7 @@ add_stylesheet('<link rel="stylesheet" href="'.$member_skin_url.'/style.css">',
|
||||
</tr>
|
||||
<?php } ?>
|
||||
|
||||
<?php if ($config['cf_use_hp']) { ?>
|
||||
<?php if ($config['cf_use_hp'] || $config['cf_cert_hp']) { ?>
|
||||
<tr>
|
||||
<th scope="row"><label for="reg_mb_hp">휴대폰번호<?php if ($config['cf_req_hp']) { ?><strong class="sound_only">필수</strong><?php } ?></label></th>
|
||||
<td>
|
||||
@@ -288,6 +288,10 @@ add_stylesheet('<link rel="stylesheet" href="'.$member_skin_url.'/style.css">',
|
||||
$cert_url = G5_KCPCERT_URL.'/kcpcert_form.php';
|
||||
$cert_type = 'kcp-hp';
|
||||
break;
|
||||
case 'lg':
|
||||
$cert_url = G5_LGXPAY_URL.'/AuthOnlyReq.php';
|
||||
$cert_type = 'lg-hp';
|
||||
break;
|
||||
default:
|
||||
echo 'alert("기본환경설정에서 휴대폰 본인확인 설정을 해주십시오");';
|
||||
echo 'return false;';
|
||||
|
||||
@@ -1 +1 @@
|
||||
5.2.14
|
||||
5.2.22
|
||||
|
||||
@@ -31,7 +31,7 @@ class PHPMailer
|
||||
* The PHPMailer Version number.
|
||||
* @var string
|
||||
*/
|
||||
public $Version = '5.2.14';
|
||||
public $Version = '5.2.22';
|
||||
|
||||
/**
|
||||
* Email priority.
|
||||
@@ -201,6 +201,9 @@ class PHPMailer
|
||||
/**
|
||||
* An ID to be used in the Message-ID header.
|
||||
* If empty, a unique id will be generated.
|
||||
* You can set your own, but it must be in the format "<id@domain>",
|
||||
* as defined in RFC5322 section 3.6.4 or it will be ignored.
|
||||
* @see https://tools.ietf.org/html/rfc5322#section-3.6.4
|
||||
* @var string
|
||||
*/
|
||||
public $MessageID = '';
|
||||
@@ -285,7 +288,7 @@ class PHPMailer
|
||||
|
||||
/**
|
||||
* SMTP auth type.
|
||||
* Options are LOGIN (default), PLAIN, NTLM, CRAM-MD5
|
||||
* Options are CRAM-MD5, LOGIN, PLAIN, NTLM, XOAUTH2, attempted in that order if not specified
|
||||
* @var string
|
||||
*/
|
||||
public $AuthType = '';
|
||||
@@ -352,6 +355,7 @@ class PHPMailer
|
||||
/**
|
||||
* Whether to split multiple to addresses into multiple messages
|
||||
* or send them all in one message.
|
||||
* Only supported in `mail` and `sendmail` transports, not in SMTP.
|
||||
* @var boolean
|
||||
*/
|
||||
public $SingleTo = false;
|
||||
@@ -394,7 +398,7 @@ class PHPMailer
|
||||
|
||||
/**
|
||||
* DKIM Identity.
|
||||
* Usually the email address used as the source of the email
|
||||
* Usually the email address used as the source of the email.
|
||||
* @var string
|
||||
*/
|
||||
public $DKIM_identity = '';
|
||||
@@ -419,6 +423,13 @@ class PHPMailer
|
||||
*/
|
||||
public $DKIM_private = '';
|
||||
|
||||
/**
|
||||
* DKIM private key string.
|
||||
* If set, takes precedence over `$DKIM_private`.
|
||||
* @var string
|
||||
*/
|
||||
public $DKIM_private_string = '';
|
||||
|
||||
/**
|
||||
* Callback Action function name.
|
||||
*
|
||||
@@ -446,6 +457,15 @@ class PHPMailer
|
||||
*/
|
||||
public $XMailer = '';
|
||||
|
||||
/**
|
||||
* Which validator to use by default when validating email addresses.
|
||||
* May be a callable to inject your own validator, but there are several built-in validators.
|
||||
* @see PHPMailer::validateAddress()
|
||||
* @var string|callable
|
||||
* @static
|
||||
*/
|
||||
public static $validator = 'auto';
|
||||
|
||||
/**
|
||||
* An instance of the SMTP sender class.
|
||||
* @var SMTP
|
||||
@@ -634,9 +654,11 @@ class PHPMailer
|
||||
* Constructor.
|
||||
* @param boolean $exceptions Should we throw external exceptions?
|
||||
*/
|
||||
public function __construct($exceptions = false)
|
||||
public function __construct($exceptions = null)
|
||||
{
|
||||
$this->exceptions = (boolean)$exceptions;
|
||||
if ($exceptions !== null) {
|
||||
$this->exceptions = (boolean)$exceptions;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -645,9 +667,7 @@ class PHPMailer
|
||||
public function __destruct()
|
||||
{
|
||||
//Close any open SMTP connection nicely
|
||||
if ($this->Mailer == 'smtp') {
|
||||
$this->smtpClose();
|
||||
}
|
||||
$this->smtpClose();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -671,14 +691,16 @@ class PHPMailer
|
||||
} else {
|
||||
$subject = $this->encodeHeader($this->secureHeader($subject));
|
||||
}
|
||||
if (ini_get('safe_mode') || !($this->UseSendmailOptions)) {
|
||||
|
||||
//Can't use additional_parameters in safe_mode, calling mail() with null params breaks
|
||||
//@link http://php.net/manual/en/function.mail.php
|
||||
if (ini_get('safe_mode') or !$this->UseSendmailOptions or is_null($params)) {
|
||||
$result = @mail($to, $subject, $body, $header);
|
||||
} else {
|
||||
$result = @mail($to, $subject, $body, $header, $params);
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Output debugging info via user-defined method.
|
||||
* Only generates output if SMTP debug output is enabled (@see SMTP::$do_debug).
|
||||
@@ -713,7 +735,7 @@ class PHPMailer
|
||||
case 'echo':
|
||||
default:
|
||||
//Normalize line breaks
|
||||
$str = preg_replace('/(\r\n|\r|\n)/ms', "\n", $str);
|
||||
$str = preg_replace('/\r\n?/ms', "\n", $str);
|
||||
echo gmdate('Y-m-d H:i:s') . "\t" . str_replace(
|
||||
"\n",
|
||||
"\n \t ",
|
||||
@@ -850,7 +872,7 @@ class PHPMailer
|
||||
$name = trim(preg_replace('/[\r\n]+/', '', $name)); //Strip breaks and trim
|
||||
if (($pos = strrpos($address, '@')) === false) {
|
||||
// At-sign is misssing.
|
||||
$error_message = $this->lang('invalid_address') . $address;
|
||||
$error_message = $this->lang('invalid_address') . " (addAnAddress $kind): $address";
|
||||
$this->setError($error_message);
|
||||
$this->edebug($error_message);
|
||||
if ($this->exceptions) {
|
||||
@@ -900,7 +922,7 @@ class PHPMailer
|
||||
return false;
|
||||
}
|
||||
if (!$this->validateAddress($address)) {
|
||||
$error_message = $this->lang('invalid_address') . $address;
|
||||
$error_message = $this->lang('invalid_address') . " (addAnAddress $kind): $address";
|
||||
$this->setError($error_message);
|
||||
$this->edebug($error_message);
|
||||
if ($this->exceptions) {
|
||||
@@ -994,7 +1016,7 @@ class PHPMailer
|
||||
if (($pos = strrpos($address, '@')) === false or
|
||||
(!$this->has8bitChars(substr($address, ++$pos)) or !$this->idnSupported()) and
|
||||
!$this->validateAddress($address)) {
|
||||
$error_message = $this->lang('invalid_address') . $address;
|
||||
$error_message = $this->lang('invalid_address') . " (setFrom) $address";
|
||||
$this->setError($error_message);
|
||||
$this->edebug($error_message);
|
||||
if ($this->exceptions) {
|
||||
@@ -1027,19 +1049,30 @@ class PHPMailer
|
||||
/**
|
||||
* Check that a string looks like an email address.
|
||||
* @param string $address The email address to check
|
||||
* @param string $patternselect A selector for the validation pattern to use :
|
||||
* @param string|callable $patternselect A selector for the validation pattern to use :
|
||||
* * `auto` Pick best pattern automatically;
|
||||
* * `pcre8` Use the squiloople.com pattern, requires PCRE > 8.0, PHP >= 5.3.2, 5.2.14;
|
||||
* * `pcre` Use old PCRE implementation;
|
||||
* * `php` Use PHP built-in FILTER_VALIDATE_EMAIL;
|
||||
* * `html5` Use the pattern given by the HTML5 spec for 'email' type form input elements.
|
||||
* * `noregex` Don't use a regex: super fast, really dumb.
|
||||
* Alternatively you may pass in a callable to inject your own validator, for example:
|
||||
* PHPMailer::validateAddress('user@example.com', function($address) {
|
||||
* return (strpos($address, '@') !== false);
|
||||
* });
|
||||
* You can also set the PHPMailer::$validator static to a callable, allowing built-in methods to use your validator.
|
||||
* @return boolean
|
||||
* @static
|
||||
* @access public
|
||||
*/
|
||||
public static function validateAddress($address, $patternselect = 'auto')
|
||||
public static function validateAddress($address, $patternselect = null)
|
||||
{
|
||||
if (is_null($patternselect)) {
|
||||
$patternselect = self::$validator;
|
||||
}
|
||||
if (is_callable($patternselect)) {
|
||||
return call_user_func($patternselect, $address);
|
||||
}
|
||||
//Reject line breaks in addresses; it's valid RFC5322, but not RFC5321
|
||||
if (strpos($address, "\n") !== false or strpos($address, "\r") !== false) {
|
||||
return false;
|
||||
@@ -1216,7 +1249,7 @@ class PHPMailer
|
||||
}
|
||||
$this->$address_kind = $this->punyencodeAddress($this->$address_kind);
|
||||
if (!$this->validateAddress($this->$address_kind)) {
|
||||
$error_message = $this->lang('invalid_address') . $this->$address_kind;
|
||||
$error_message = $this->lang('invalid_address') . ' (punyEncode) ' . $this->$address_kind;
|
||||
$this->setError($error_message);
|
||||
$this->edebug($error_message);
|
||||
if ($this->exceptions) {
|
||||
@@ -1227,7 +1260,7 @@ class PHPMailer
|
||||
}
|
||||
|
||||
// Set whether the message is multipart/alternative
|
||||
if (!empty($this->AltBody)) {
|
||||
if ($this->alternativeExists()) {
|
||||
$this->ContentType = 'multipart/alternative';
|
||||
}
|
||||
|
||||
@@ -1261,9 +1294,11 @@ class PHPMailer
|
||||
|
||||
// Sign with DKIM if enabled
|
||||
if (!empty($this->DKIM_domain)
|
||||
&& !empty($this->DKIM_private)
|
||||
&& !empty($this->DKIM_selector)
|
||||
&& file_exists($this->DKIM_private)) {
|
||||
&& (!empty($this->DKIM_private_string)
|
||||
|| (!empty($this->DKIM_private) && file_exists($this->DKIM_private))
|
||||
)
|
||||
) {
|
||||
$header_dkim = $this->DKIM_Add(
|
||||
$this->MIMEHeader . $this->mailHeader,
|
||||
$this->encodeHeader($this->secureHeader($this->Subject)),
|
||||
@@ -1329,19 +1364,24 @@ class PHPMailer
|
||||
*/
|
||||
protected function sendmailSend($header, $body)
|
||||
{
|
||||
if ($this->Sender != '') {
|
||||
// CVE-2016-10033, CVE-2016-10045: Don't pass -f if characters will be escaped.
|
||||
if (!empty($this->Sender) and self::isShellSafe($this->Sender)) {
|
||||
if ($this->Mailer == 'qmail') {
|
||||
$sendmail = sprintf('%s -f%s', escapeshellcmd($this->Sendmail), escapeshellarg($this->Sender));
|
||||
$sendmailFmt = '%s -f%s';
|
||||
} else {
|
||||
$sendmail = sprintf('%s -oi -f%s -t', escapeshellcmd($this->Sendmail), escapeshellarg($this->Sender));
|
||||
$sendmailFmt = '%s -oi -f%s -t';
|
||||
}
|
||||
} else {
|
||||
if ($this->Mailer == 'qmail') {
|
||||
$sendmail = sprintf('%s', escapeshellcmd($this->Sendmail));
|
||||
$sendmailFmt = '%s';
|
||||
} else {
|
||||
$sendmail = sprintf('%s -oi -t', escapeshellcmd($this->Sendmail));
|
||||
$sendmailFmt = '%s -oi -t';
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: If possible, this should be changed to escapeshellarg. Needs thorough testing.
|
||||
$sendmail = sprintf($sendmailFmt, escapeshellcmd($this->Sendmail), $this->Sender);
|
||||
|
||||
if ($this->SingleTo) {
|
||||
foreach ($this->SingleToArray as $toAddr) {
|
||||
if (!@$mail = popen($sendmail, 'w')) {
|
||||
@@ -1387,6 +1427,40 @@ class PHPMailer
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Fix CVE-2016-10033 and CVE-2016-10045 by disallowing potentially unsafe shell characters.
|
||||
*
|
||||
* Note that escapeshellarg and escapeshellcmd are inadequate for our purposes, especially on Windows.
|
||||
* @param string $string The string to be validated
|
||||
* @see https://github.com/PHPMailer/PHPMailer/issues/924 CVE-2016-10045 bug report
|
||||
* @access protected
|
||||
* @return boolean
|
||||
*/
|
||||
protected static function isShellSafe($string)
|
||||
{
|
||||
// Future-proof
|
||||
if (escapeshellcmd($string) !== $string
|
||||
or !in_array(escapeshellarg($string), array("'$string'", "\"$string\""))
|
||||
) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$length = strlen($string);
|
||||
|
||||
for ($i = 0; $i < $length; $i++) {
|
||||
$c = $string[$i];
|
||||
|
||||
// All other characters have a special meaning in at least one common shell, including = and +.
|
||||
// Full stop (.) has a special meaning in cmd.exe, but its impact should be negligible here.
|
||||
// Note that this does permit non-Latin alphanumeric characters based on the current locale.
|
||||
if (!ctype_alnum($c) && strpos('@_-.', $c) === false) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Send mail using the PHP mail() function.
|
||||
* @param string $header The message headers
|
||||
@@ -1404,17 +1478,20 @@ class PHPMailer
|
||||
}
|
||||
$to = implode(', ', $toArr);
|
||||
|
||||
if (empty($this->Sender)) {
|
||||
$params = ' ';
|
||||
} else {
|
||||
$params = sprintf('-f%s', $this->Sender);
|
||||
$params = null;
|
||||
//This sets the SMTP envelope sender which gets turned into a return-path header by the receiver
|
||||
if (!empty($this->Sender) and $this->validateAddress($this->Sender)) {
|
||||
// CVE-2016-10033, CVE-2016-10045: Don't pass -f if characters will be escaped.
|
||||
if (self::isShellSafe($this->Sender)) {
|
||||
$params = sprintf('-f%s', $this->Sender);
|
||||
}
|
||||
}
|
||||
if ($this->Sender != '' and !ini_get('safe_mode')) {
|
||||
if (!empty($this->Sender) and !ini_get('safe_mode') and $this->validateAddress($this->Sender)) {
|
||||
$old_from = ini_get('sendmail_from');
|
||||
ini_set('sendmail_from', $this->Sender);
|
||||
}
|
||||
$result = false;
|
||||
if ($this->SingleTo && count($toArr) > 1) {
|
||||
if ($this->SingleTo and count($toArr) > 1) {
|
||||
foreach ($toArr as $toAddr) {
|
||||
$result = $this->mailPassthru($toAddr, $this->Subject, $body, $header, $params);
|
||||
$this->doCallback($result, array($toAddr), $this->cc, $this->bcc, $this->Subject, $body, $this->From);
|
||||
@@ -1463,10 +1540,10 @@ class PHPMailer
|
||||
if (!$this->smtpConnect($this->SMTPOptions)) {
|
||||
throw new phpmailerException($this->lang('smtp_connect_failed'), self::STOP_CRITICAL);
|
||||
}
|
||||
if ('' == $this->Sender) {
|
||||
$smtp_from = $this->From;
|
||||
} else {
|
||||
if (!empty($this->Sender) and $this->validateAddress($this->Sender)) {
|
||||
$smtp_from = $this->Sender;
|
||||
} else {
|
||||
$smtp_from = $this->From;
|
||||
}
|
||||
if (!$this->smtp->mail($smtp_from)) {
|
||||
$this->setError($this->lang('from_failed') . $smtp_from . ' : ' . implode(',', $this->smtp->getError()));
|
||||
@@ -1520,12 +1597,17 @@ class PHPMailer
|
||||
* @throws phpmailerException
|
||||
* @return boolean
|
||||
*/
|
||||
public function smtpConnect($options = array())
|
||||
public function smtpConnect($options = null)
|
||||
{
|
||||
if (is_null($this->smtp)) {
|
||||
$this->smtp = $this->getSMTPInstance();
|
||||
}
|
||||
|
||||
//If no options are provided, use whatever is set in the instance
|
||||
if (is_null($options)) {
|
||||
$options = $this->SMTPOptions;
|
||||
}
|
||||
|
||||
// Already connected?
|
||||
if ($this->smtp->connected()) {
|
||||
return true;
|
||||
@@ -1595,7 +1677,7 @@ class PHPMailer
|
||||
if (!$this->smtp->startTLS()) {
|
||||
throw new phpmailerException($this->lang('connect_host'));
|
||||
}
|
||||
// We must resend HELO after tls negotiation
|
||||
// We must resend EHLO after TLS negotiation
|
||||
$this->smtp->hello($hello);
|
||||
}
|
||||
if ($this->SMTPAuth) {
|
||||
@@ -1634,7 +1716,7 @@ class PHPMailer
|
||||
*/
|
||||
public function smtpClose()
|
||||
{
|
||||
if ($this->smtp !== null) {
|
||||
if (is_a($this->smtp, 'SMTP')) {
|
||||
if ($this->smtp->connected()) {
|
||||
$this->smtp->quit();
|
||||
$this->smtp->close();
|
||||
@@ -1653,6 +1735,19 @@ class PHPMailer
|
||||
*/
|
||||
public function setLanguage($langcode = 'en', $lang_path = '')
|
||||
{
|
||||
// Backwards compatibility for renamed language codes
|
||||
$renamed_langcodes = array(
|
||||
'br' => 'pt_br',
|
||||
'cz' => 'cs',
|
||||
'dk' => 'da',
|
||||
'no' => 'nb',
|
||||
'se' => 'sv',
|
||||
);
|
||||
|
||||
if (isset($renamed_langcodes[$langcode])) {
|
||||
$langcode = $renamed_langcodes[$langcode];
|
||||
}
|
||||
|
||||
// Define full set of translatable strings in English
|
||||
$PHPMAILER_LANG = array(
|
||||
'authenticate' => 'SMTP Error: Could not authenticate.',
|
||||
@@ -1679,6 +1774,10 @@ class PHPMailer
|
||||
// Calculate an absolute path so it can work if CWD is not here
|
||||
$lang_path = dirname(__FILE__). DIRECTORY_SEPARATOR . 'language'. DIRECTORY_SEPARATOR;
|
||||
}
|
||||
//Validate $langcode
|
||||
if (!preg_match('/^[a-z]{2}(?:_[a-zA-Z]{2})?$/', $langcode)) {
|
||||
$langcode = 'en';
|
||||
}
|
||||
$foundlang = true;
|
||||
$lang_file = $lang_path . 'phpmailer.lang-' . $langcode . '.php';
|
||||
// There is no English translation file
|
||||
@@ -1972,7 +2071,9 @@ class PHPMailer
|
||||
$result .= $this->headerLine('Subject', $this->encodeHeader($this->secureHeader($this->Subject)));
|
||||
}
|
||||
|
||||
if ($this->MessageID != '') {
|
||||
// Only allow a custom message ID if it conforms to RFC 5322 section 3.6.4
|
||||
// https://tools.ietf.org/html/rfc5322#section-3.6.4
|
||||
if ('' != $this->MessageID and preg_match('/^<.*@.*>$/', $this->MessageID)) {
|
||||
$this->lastMessageID = $this->MessageID;
|
||||
} else {
|
||||
$this->lastMessageID = sprintf('<%s@%s>', $this->uniqueid, $this->serverHostname());
|
||||
@@ -2074,7 +2175,15 @@ class PHPMailer
|
||||
*/
|
||||
public function getSentMIMEMessage()
|
||||
{
|
||||
return $this->MIMEHeader . $this->mailHeader . self::CRLF . $this->MIMEBody;
|
||||
return rtrim($this->MIMEHeader . $this->mailHeader, "\n\r") . self::CRLF . self::CRLF . $this->MIMEBody;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create unique ID
|
||||
* @return string
|
||||
*/
|
||||
protected function generateId() {
|
||||
return md5(uniqid(time()));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -2088,7 +2197,7 @@ class PHPMailer
|
||||
{
|
||||
$body = '';
|
||||
//Create unique IDs and preset boundaries
|
||||
$this->uniqueid = md5(uniqid(time()));
|
||||
$this->uniqueid = $this->generateId();
|
||||
$this->boundary[1] = 'b1_' . $this->uniqueid;
|
||||
$this->boundary[2] = 'b2_' . $this->uniqueid;
|
||||
$this->boundary[3] = 'b3_' . $this->uniqueid;
|
||||
@@ -2104,12 +2213,12 @@ class PHPMailer
|
||||
//Can we do a 7-bit downgrade?
|
||||
if ($bodyEncoding == '8bit' and !$this->has8bitChars($this->Body)) {
|
||||
$bodyEncoding = '7bit';
|
||||
//All ISO 8859, Windows codepage and UTF-8 charsets are ascii compatible up to 7-bit
|
||||
$bodyCharSet = 'us-ascii';
|
||||
}
|
||||
//If lines are too long, and we're not already using an encoding that will shorten them,
|
||||
//change to quoted-printable transfer encoding
|
||||
//change to quoted-printable transfer encoding for the body part only
|
||||
if ('base64' != $this->Encoding and self::hasLineLongerThanMax($this->Body)) {
|
||||
$this->Encoding = 'quoted-printable';
|
||||
$bodyEncoding = 'quoted-printable';
|
||||
}
|
||||
|
||||
@@ -2118,10 +2227,12 @@ class PHPMailer
|
||||
//Can we do a 7-bit downgrade?
|
||||
if ($altBodyEncoding == '8bit' and !$this->has8bitChars($this->AltBody)) {
|
||||
$altBodyEncoding = '7bit';
|
||||
//All ISO 8859, Windows codepage and UTF-8 charsets are ascii compatible up to 7-bit
|
||||
$altBodyCharSet = 'us-ascii';
|
||||
}
|
||||
//If lines are too long, change to quoted-printable transfer encoding
|
||||
if (self::hasLineLongerThanMax($this->AltBody)) {
|
||||
//If lines are too long, and we're not already using an encoding that will shorten them,
|
||||
//change to quoted-printable transfer encoding for the alt body part only
|
||||
if ('base64' != $altBodyEncoding and self::hasLineLongerThanMax($this->AltBody)) {
|
||||
$altBodyEncoding = 'quoted-printable';
|
||||
}
|
||||
//Use this as a preamble in all multipart message types
|
||||
@@ -2224,8 +2335,10 @@ class PHPMailer
|
||||
$body .= $this->attachAll('attachment', $this->boundary[1]);
|
||||
break;
|
||||
default:
|
||||
// catch case 'plain' and case ''
|
||||
$body .= $this->encodeString($this->Body, $bodyEncoding);
|
||||
// Catch case 'plain' and case '', applies to simple `text/plain` and `text/html` body content types
|
||||
//Reset the `Encoding` property in case we changed it for line length reasons
|
||||
$this->Encoding = $bodyEncoding;
|
||||
$body .= $this->encodeString($this->Body, $this->Encoding);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -2331,8 +2444,7 @@ class PHPMailer
|
||||
|
||||
/**
|
||||
* Set the message type.
|
||||
* PHPMailer only supports some preset message types,
|
||||
* not arbitrary MIME structures.
|
||||
* PHPMailer only supports some preset message types, not arbitrary MIME structures.
|
||||
* @access protected
|
||||
* @return void
|
||||
*/
|
||||
@@ -2350,6 +2462,7 @@ class PHPMailer
|
||||
}
|
||||
$this->message_type = implode('_', $type);
|
||||
if ($this->message_type == '') {
|
||||
//The 'plain' message_type refers to the message having a single body element, not that it is plain-text
|
||||
$this->message_type = 'plain';
|
||||
}
|
||||
}
|
||||
@@ -2379,6 +2492,7 @@ class PHPMailer
|
||||
|
||||
/**
|
||||
* Add an attachment from a path on the filesystem.
|
||||
* Never use a user-supplied path to a file!
|
||||
* Returns false if the file could not be found or read.
|
||||
* @param string $path Path to the attachment.
|
||||
* @param string $name Overrides the attachment name.
|
||||
@@ -2904,6 +3018,7 @@ class PHPMailer
|
||||
* displayed inline with the message, not just attached for download.
|
||||
* This is used in HTML messages that embed the images
|
||||
* the HTML refers to using the $cid value.
|
||||
* Never use a user-supplied path to a file!
|
||||
* @param string $path Path to the attachment.
|
||||
* @param string $cid Content ID of the attachment; Use this to reference
|
||||
* the content when using an embedded image in HTML.
|
||||
@@ -3264,21 +3379,29 @@ class PHPMailer
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a message from an HTML string.
|
||||
* Automatically makes modifications for inline images and backgrounds
|
||||
* and creates a plain-text version by converting the HTML.
|
||||
* Overwrites any existing values in $this->Body and $this->AltBody
|
||||
* Create a message body from an HTML string.
|
||||
* Automatically inlines images and creates a plain-text version by converting the HTML,
|
||||
* overwriting any existing values in Body and AltBody.
|
||||
* Do not source $message content from user input!
|
||||
* $basedir is prepended when handling relative URLs, e.g. <img src="/images/a.png"> and must not be empty
|
||||
* will look for an image file in $basedir/images/a.png and convert it to inline.
|
||||
* If you don't provide a $basedir, relative paths will be left untouched (and thus probably break in email)
|
||||
* If you don't want to apply these transformations to your HTML, just set Body and AltBody directly.
|
||||
* @access public
|
||||
* @param string $message HTML message string
|
||||
* @param string $basedir baseline directory for path
|
||||
* @param string $basedir Absolute path to a base directory to prepend to relative paths to images
|
||||
* @param boolean|callable $advanced Whether to use the internal HTML to text converter
|
||||
* or your own custom converter @see PHPMailer::html2text()
|
||||
* @return string $message
|
||||
* @return string $message The transformed message Body
|
||||
*/
|
||||
public function msgHTML($message, $basedir = '', $advanced = false)
|
||||
{
|
||||
preg_match_all('/(src|background)=["\'](.*)["\']/Ui', $message, $images);
|
||||
if (array_key_exists(2, $images)) {
|
||||
if (strlen($basedir) > 1 && substr($basedir, -1) != '/') {
|
||||
// Ensure $basedir has a trailing /
|
||||
$basedir .= '/';
|
||||
}
|
||||
foreach ($images[2] as $imgindex => $url) {
|
||||
// Convert data URIs into embedded images
|
||||
if (preg_match('#^data:(image[^;,]*)(;base64)?,#', $url, $match)) {
|
||||
@@ -3296,18 +3419,24 @@ class PHPMailer
|
||||
$message
|
||||
);
|
||||
}
|
||||
} elseif (substr($url, 0, 4) !== 'cid:' && !preg_match('#^[A-z]+://#', $url)) {
|
||||
// Do not change urls for absolute images (thanks to corvuscorax)
|
||||
continue;
|
||||
}
|
||||
if (
|
||||
// Only process relative URLs if a basedir is provided (i.e. no absolute local paths)
|
||||
!empty($basedir)
|
||||
// Ignore URLs containing parent dir traversal (..)
|
||||
&& (strpos($url, '..') === false)
|
||||
// Do not change urls that are already inline images
|
||||
&& substr($url, 0, 4) !== 'cid:'
|
||||
// Do not change absolute URLs, including anonymous protocol
|
||||
&& !preg_match('#^[a-z][a-z0-9+.-]*:?//#i', $url)
|
||||
) {
|
||||
$filename = basename($url);
|
||||
$directory = dirname($url);
|
||||
if ($directory == '.') {
|
||||
$directory = '';
|
||||
}
|
||||
$cid = md5($url) . '@phpmailer.0'; // RFC2392 S 2
|
||||
if (strlen($basedir) > 1 && substr($basedir, -1) != '/') {
|
||||
$basedir .= '/';
|
||||
}
|
||||
if (strlen($directory) > 1 && substr($directory, -1) != '/') {
|
||||
$directory .= '/';
|
||||
}
|
||||
@@ -3332,7 +3461,7 @@ class PHPMailer
|
||||
// Convert all message body line breaks to CRLF, makes quoted-printable encoding work much better
|
||||
$this->Body = $this->normalizeBreaks($message);
|
||||
$this->AltBody = $this->normalizeBreaks($this->html2text($message, $advanced));
|
||||
if (empty($this->AltBody)) {
|
||||
if (!$this->alternativeExists()) {
|
||||
$this->AltBody = 'To view this email message, open it in a program that understands HTML!' .
|
||||
self::CRLF . self::CRLF;
|
||||
}
|
||||
@@ -3343,7 +3472,7 @@ class PHPMailer
|
||||
* Convert an HTML string into plain text.
|
||||
* This is used by msgHTML().
|
||||
* Note - older versions of this function used a bundled advanced converter
|
||||
* which was been removed for license reasons in #232
|
||||
* which was been removed for license reasons in #232.
|
||||
* Example usage:
|
||||
* <code>
|
||||
* // Use default conversion
|
||||
@@ -3643,7 +3772,7 @@ class PHPMailer
|
||||
* @access public
|
||||
* @param string $signHeader
|
||||
* @throws phpmailerException
|
||||
* @return string
|
||||
* @return string The DKIM signature value
|
||||
*/
|
||||
public function DKIM_Sign($signHeader)
|
||||
{
|
||||
@@ -3653,15 +3782,35 @@ class PHPMailer
|
||||
}
|
||||
return '';
|
||||
}
|
||||
$privKeyStr = file_get_contents($this->DKIM_private);
|
||||
if ($this->DKIM_passphrase != '') {
|
||||
$privKeyStr = !empty($this->DKIM_private_string) ? $this->DKIM_private_string : file_get_contents($this->DKIM_private);
|
||||
if ('' != $this->DKIM_passphrase) {
|
||||
$privKey = openssl_pkey_get_private($privKeyStr, $this->DKIM_passphrase);
|
||||
} else {
|
||||
$privKey = $privKeyStr;
|
||||
$privKey = openssl_pkey_get_private($privKeyStr);
|
||||
}
|
||||
if (openssl_sign($signHeader, $signature, $privKey)) {
|
||||
return base64_encode($signature);
|
||||
//Workaround for missing digest algorithms in old PHP & OpenSSL versions
|
||||
//@link http://stackoverflow.com/a/11117338/333340
|
||||
if (version_compare(PHP_VERSION, '5.3.0') >= 0 and
|
||||
in_array('sha256WithRSAEncryption', openssl_get_md_methods(true))) {
|
||||
if (openssl_sign($signHeader, $signature, $privKey, 'sha256WithRSAEncryption')) {
|
||||
openssl_pkey_free($privKey);
|
||||
return base64_encode($signature);
|
||||
}
|
||||
} else {
|
||||
$pinfo = openssl_pkey_get_details($privKey);
|
||||
$hash = hash('sha256', $signHeader);
|
||||
//'Magic' constant for SHA256 from RFC3447
|
||||
//@link https://tools.ietf.org/html/rfc3447#page-43
|
||||
$t = '3031300d060960864801650304020105000420' . $hash;
|
||||
$pslen = $pinfo['bits'] / 8 - (strlen($t) / 2 + 3);
|
||||
$eb = pack('H*', '0001' . str_repeat('FF', $pslen) . '00' . $t);
|
||||
|
||||
if (openssl_private_encrypt($eb, $signature, $privKey, OPENSSL_NO_PADDING)) {
|
||||
openssl_pkey_free($privKey);
|
||||
return base64_encode($signature);
|
||||
}
|
||||
}
|
||||
openssl_pkey_free($privKey);
|
||||
return '';
|
||||
}
|
||||
|
||||
@@ -3678,7 +3827,7 @@ class PHPMailer
|
||||
foreach ($lines as $key => $line) {
|
||||
list($heading, $value) = explode(':', $line, 2);
|
||||
$heading = strtolower($heading);
|
||||
$value = preg_replace('/\s+/', ' ', $value); // Compress useless spaces
|
||||
$value = preg_replace('/\s{2,}/', ' ', $value); // Compress useless spaces
|
||||
$lines[$key] = $heading . ':' . trim($value); // Don't forget to remove WSP around the value
|
||||
}
|
||||
$signHeader = implode("\r\n", $lines);
|
||||
@@ -3716,7 +3865,7 @@ class PHPMailer
|
||||
*/
|
||||
public function DKIM_Add($headers_line, $subject, $body)
|
||||
{
|
||||
$DKIMsignatureType = 'rsa-sha1'; // Signature & hash algorithms
|
||||
$DKIMsignatureType = 'rsa-sha256'; // Signature & hash algorithms
|
||||
$DKIMcanonicalization = 'relaxed/simple'; // Canonicalization of header/body
|
||||
$DKIMquery = 'dns/txt'; // Query method
|
||||
$DKIMtime = time(); // Signature Timestamp = seconds since 00:00:00 - Jan 1, 1970 (UTC time zone)
|
||||
@@ -3724,6 +3873,7 @@ class PHPMailer
|
||||
$headers = explode($this->LE, $headers_line);
|
||||
$from_header = '';
|
||||
$to_header = '';
|
||||
$date_header = '';
|
||||
$current = '';
|
||||
foreach ($headers as $header) {
|
||||
if (strpos($header, 'From:') === 0) {
|
||||
@@ -3732,6 +3882,9 @@ class PHPMailer
|
||||
} elseif (strpos($header, 'To:') === 0) {
|
||||
$to_header = $header;
|
||||
$current = 'to_header';
|
||||
} elseif (strpos($header, 'Date:') === 0) {
|
||||
$date_header = $header;
|
||||
$current = 'date_header';
|
||||
} else {
|
||||
if (!empty($$current) && strpos($header, ' =?') === 0) {
|
||||
$$current .= $header;
|
||||
@@ -3742,6 +3895,7 @@ class PHPMailer
|
||||
}
|
||||
$from = str_replace('|', '=7C', $this->DKIM_QP($from_header));
|
||||
$to = str_replace('|', '=7C', $this->DKIM_QP($to_header));
|
||||
$date = str_replace('|', '=7C', $this->DKIM_QP($date_header));
|
||||
$subject = str_replace(
|
||||
'|',
|
||||
'=7C',
|
||||
@@ -3749,7 +3903,7 @@ class PHPMailer
|
||||
); // Copied header fields (dkim-quoted-printable)
|
||||
$body = $this->DKIM_BodyC($body);
|
||||
$DKIMlen = strlen($body); // Length of body
|
||||
$DKIMb64 = base64_encode(pack('H*', sha1($body))); // Base64 of packed binary SHA-1 hash of body
|
||||
$DKIMb64 = base64_encode(pack('H*', hash('sha256', $body))); // Base64 of packed binary SHA-256 hash of body
|
||||
if ('' == $this->DKIM_identity) {
|
||||
$ident = '';
|
||||
} else {
|
||||
@@ -3762,16 +3916,18 @@ class PHPMailer
|
||||
$this->DKIM_selector .
|
||||
";\r\n" .
|
||||
"\tt=" . $DKIMtime . '; c=' . $DKIMcanonicalization . ";\r\n" .
|
||||
"\th=From:To:Subject;\r\n" .
|
||||
"\th=From:To:Date:Subject;\r\n" .
|
||||
"\td=" . $this->DKIM_domain . ';' . $ident . "\r\n" .
|
||||
"\tz=$from\r\n" .
|
||||
"\t|$to\r\n" .
|
||||
"\t|$date\r\n" .
|
||||
"\t|$subject;\r\n" .
|
||||
"\tbh=" . $DKIMb64 . ";\r\n" .
|
||||
"\tb=";
|
||||
$toSign = $this->DKIM_HeaderC(
|
||||
$from_header . "\r\n" .
|
||||
$to_header . "\r\n" .
|
||||
$date_header . "\r\n" .
|
||||
$subject_header . "\r\n" .
|
||||
$dkimhdrs
|
||||
);
|
||||
|
||||
@@ -80,6 +80,7 @@ class PHPMailerOAuth extends PHPMailer
|
||||
* @uses SMTP
|
||||
* @access public
|
||||
* @return bool
|
||||
* @throws phpmailerException
|
||||
*/
|
||||
public function smtpConnect($options = array())
|
||||
{
|
||||
|
||||
@@ -49,7 +49,8 @@ class PHPMailerOAuthGoogle
|
||||
$this->oauthUserEmail = $UserEmail;
|
||||
}
|
||||
|
||||
private function getProvider() {
|
||||
private function getProvider()
|
||||
{
|
||||
return new League\OAuth2\Client\Provider\Google([
|
||||
'clientId' => $this->oauthClientId,
|
||||
'clientSecret' => $this->oauthClientSecret
|
||||
|
||||
@@ -34,7 +34,7 @@ class POP3
|
||||
* @var string
|
||||
* @access public
|
||||
*/
|
||||
public $Version = '5.2.14';
|
||||
public $Version = '5.2.22';
|
||||
|
||||
/**
|
||||
* Default POP3 port number.
|
||||
|
||||
@@ -30,7 +30,7 @@ class SMTP
|
||||
* The PHPMailer SMTP version number.
|
||||
* @var string
|
||||
*/
|
||||
const VERSION = '5.2.14';
|
||||
const VERSION = '5.2.22';
|
||||
|
||||
/**
|
||||
* SMTP line break constant.
|
||||
@@ -81,7 +81,7 @@ class SMTP
|
||||
* @deprecated Use the `VERSION` constant instead
|
||||
* @see SMTP::VERSION
|
||||
*/
|
||||
public $Version = '5.2.14';
|
||||
public $Version = '5.2.22';
|
||||
|
||||
/**
|
||||
* SMTP server port number.
|
||||
@@ -150,6 +150,17 @@ class SMTP
|
||||
*/
|
||||
public $Timelimit = 300;
|
||||
|
||||
/**
|
||||
* @var array patterns to extract smtp transaction id from smtp reply
|
||||
* Only first capture group will be use, use non-capturing group to deal with it
|
||||
* Extend this class to override this property to fulfil your needs.
|
||||
*/
|
||||
protected $smtp_transaction_id_patterns = array(
|
||||
'exim' => '/[0-9]{3} OK id=(.*)/',
|
||||
'sendmail' => '/[0-9]{3} 2.0.0 (.*) Message/',
|
||||
'postfix' => '/[0-9]{3} 2.0.0 Ok: queued as (.*)/'
|
||||
);
|
||||
|
||||
/**
|
||||
* The socket for the server connection.
|
||||
* @var resource
|
||||
@@ -206,7 +217,7 @@ class SMTP
|
||||
}
|
||||
//Avoid clash with built-in function names
|
||||
if (!in_array($this->Debugoutput, array('error_log', 'html', 'echo')) and is_callable($this->Debugoutput)) {
|
||||
call_user_func($this->Debugoutput, $str, $this->do_debug);
|
||||
call_user_func($this->Debugoutput, $str, $level);
|
||||
return;
|
||||
}
|
||||
switch ($this->Debugoutput) {
|
||||
@@ -272,8 +283,8 @@ class SMTP
|
||||
$errstr = '';
|
||||
if ($streamok) {
|
||||
$socket_context = stream_context_create($options);
|
||||
//Suppress errors; connection failures are handled at a higher level
|
||||
$this->smtp_conn = @stream_socket_client(
|
||||
set_error_handler(array($this, 'errorHandler'));
|
||||
$this->smtp_conn = stream_socket_client(
|
||||
$host . ":" . $port,
|
||||
$errno,
|
||||
$errstr,
|
||||
@@ -281,12 +292,14 @@ class SMTP
|
||||
STREAM_CLIENT_CONNECT,
|
||||
$socket_context
|
||||
);
|
||||
restore_error_handler();
|
||||
} else {
|
||||
//Fall back to fsockopen which should work in more places, but is missing some features
|
||||
$this->edebug(
|
||||
"Connection: stream_socket_client not available, falling back to fsockopen",
|
||||
self::DEBUG_CONNECTION
|
||||
);
|
||||
set_error_handler(array($this, 'errorHandler'));
|
||||
$this->smtp_conn = fsockopen(
|
||||
$host,
|
||||
$port,
|
||||
@@ -294,6 +307,7 @@ class SMTP
|
||||
$errstr,
|
||||
$timeout
|
||||
);
|
||||
restore_error_handler();
|
||||
}
|
||||
// Verify we connected properly
|
||||
if (!is_resource($this->smtp_conn)) {
|
||||
@@ -336,11 +350,22 @@ class SMTP
|
||||
if (!$this->sendCommand('STARTTLS', 'STARTTLS', 220)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
//Allow the best TLS version(s) we can
|
||||
$crypto_method = STREAM_CRYPTO_METHOD_TLS_CLIENT;
|
||||
|
||||
//PHP 5.6.7 dropped inclusion of TLS 1.1 and 1.2 in STREAM_CRYPTO_METHOD_TLS_CLIENT
|
||||
//so add them back in manually if we can
|
||||
if (defined('STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT')) {
|
||||
$crypto_method |= STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT;
|
||||
$crypto_method |= STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT;
|
||||
}
|
||||
|
||||
// Begin encrypted connection
|
||||
if (!stream_socket_enable_crypto(
|
||||
$this->smtp_conn,
|
||||
true,
|
||||
STREAM_CRYPTO_METHOD_TLS_CLIENT
|
||||
$crypto_method
|
||||
)) {
|
||||
return false;
|
||||
}
|
||||
@@ -389,7 +414,7 @@ class SMTP
|
||||
);
|
||||
|
||||
if (empty($authtype)) {
|
||||
foreach (array('LOGIN', 'CRAM-MD5', 'NTLM', 'PLAIN', 'XOAUTH2') as $method) {
|
||||
foreach (array('CRAM-MD5', 'LOGIN', 'PLAIN', 'NTLM', 'XOAUTH2') as $method) {
|
||||
if (in_array($method, $this->server_caps['AUTH'])) {
|
||||
$authtype = $method;
|
||||
break;
|
||||
@@ -463,7 +488,7 @@ class SMTP
|
||||
$temp = new stdClass;
|
||||
$ntlm_client = new ntlm_sasl_client_class;
|
||||
//Check that functions are available
|
||||
if (!$ntlm_client->Initialize($temp)) {
|
||||
if (!$ntlm_client->initialize($temp)) {
|
||||
$this->setError($temp->error);
|
||||
$this->edebug(
|
||||
'You need to enable some modules in your php.ini file: '
|
||||
@@ -473,7 +498,7 @@ class SMTP
|
||||
return false;
|
||||
}
|
||||
//msg1
|
||||
$msg1 = $ntlm_client->TypeMsg1($realm, $workstation); //msg1
|
||||
$msg1 = $ntlm_client->typeMsg1($realm, $workstation); //msg1
|
||||
|
||||
if (!$this->sendCommand(
|
||||
'AUTH NTLM',
|
||||
@@ -492,7 +517,7 @@ class SMTP
|
||||
$password
|
||||
);
|
||||
//msg3
|
||||
$msg3 = $ntlm_client->TypeMsg3(
|
||||
$msg3 = $ntlm_client->typeMsg3(
|
||||
$ntlm_res,
|
||||
$username,
|
||||
$realm,
|
||||
@@ -736,7 +761,7 @@ class SMTP
|
||||
protected function parseHelloFields($type)
|
||||
{
|
||||
$this->server_caps = array();
|
||||
$lines = explode("\n", $this->last_reply);
|
||||
$lines = explode("\n", $this->helo_rply);
|
||||
|
||||
foreach ($lines as $n => $s) {
|
||||
//First 4 chars contain response code followed by - or space
|
||||
@@ -1178,4 +1203,47 @@ class SMTP
|
||||
{
|
||||
return $this->Timeout;
|
||||
}
|
||||
|
||||
/**
|
||||
* Reports an error number and string.
|
||||
* @param integer $errno The error number returned by PHP.
|
||||
* @param string $errmsg The error message returned by PHP.
|
||||
*/
|
||||
protected function errorHandler($errno, $errmsg)
|
||||
{
|
||||
$notice = 'Connection: Failed to connect to server.';
|
||||
$this->setError(
|
||||
$notice,
|
||||
$errno,
|
||||
$errmsg
|
||||
);
|
||||
$this->edebug(
|
||||
$notice . ' Error number ' . $errno . '. "Error notice: ' . $errmsg,
|
||||
self::DEBUG_CONNECTION
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Will return the ID of the last smtp transaction based on a list of patterns provided
|
||||
* in SMTP::$smtp_transaction_id_patterns.
|
||||
* If no reply has been received yet, it will return null.
|
||||
* If no pattern has been matched, it will return false.
|
||||
* @return bool|null|string
|
||||
*/
|
||||
public function getLastTransactionID()
|
||||
{
|
||||
$reply = $this->getLastReply();
|
||||
|
||||
if (empty($reply)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
foreach($this->smtp_transaction_id_patterns as $smtp_transaction_id_pattern) {
|
||||
if(preg_match($smtp_transaction_id_pattern, $reply, $matches)) {
|
||||
return $matches[1];
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"name": "phpmailer/phpmailer",
|
||||
"type": "library",
|
||||
"description": "PHPMailer is a full-featured email creation and transfer class for PHP",
|
||||
"authors": [
|
||||
{
|
||||
"name": "Marcus Bointon",
|
||||
"email": "phpmailer@synchromedia.co.uk"
|
||||
},
|
||||
{
|
||||
"name": "Jim Jagielski",
|
||||
"email": "jimjag@gmail.com"
|
||||
},
|
||||
{
|
||||
"name": "Andy Prevost",
|
||||
"email": "codeworxtech@users.sourceforge.net"
|
||||
},
|
||||
{
|
||||
"name": "Brent R. Matzelle"
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"php": ">=5.0.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpdocumentor/phpdocumentor": "*",
|
||||
"phpunit/phpunit": "4.7.*"
|
||||
},
|
||||
"suggest": {
|
||||
"league/oauth2-google": "Needed for Google XOAUTH2 authentication"
|
||||
},
|
||||
"autoload": {
|
||||
"classmap": [
|
||||
"class.phpmailer.php",
|
||||
"class.phpmaileroauth.php",
|
||||
"class.phpmaileroauthgoogle.php",
|
||||
"class.smtp.php",
|
||||
"class.pop3.php",
|
||||
"extras/EasyPeasyICS.php",
|
||||
"extras/ntlm_sasl_client.php"
|
||||
]
|
||||
},
|
||||
"license": "LGPL-2.1"
|
||||
}
|
||||
Generated
+3576
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
/**
|
||||
* This example shows how to use DKIM message authentication with PHPMailer.
|
||||
* There's more to using DKIM than just this code - check out this article:
|
||||
* @link https://yomotherboard.com/how-to-setup-email-server-dkim-keys/
|
||||
* See also the DKIM code in the PHPMailer unit tests,
|
||||
* which shows how to make a key pair from PHP.
|
||||
*/
|
||||
|
||||
require '../PHPMailerAutoload.php';
|
||||
|
||||
//Create a new PHPMailer instance
|
||||
$mail = new PHPMailer;
|
||||
//Set who the message is to be sent from
|
||||
$mail->setFrom('from@example.com', 'First Last');
|
||||
//Set an alternative reply-to address
|
||||
$mail->addReplyTo('replyto@example.com', 'First Last');
|
||||
//Set who the message is to be sent to
|
||||
$mail->addAddress('whoto@example.com', 'John Doe');
|
||||
//Set the subject line
|
||||
$mail->Subject = 'PHPMailer DKIM test';
|
||||
//This should be the same as the domain of your From address
|
||||
$mail->DKIM_domain = 'example.com';
|
||||
//Path to your private key file
|
||||
$mail->DKIM_private = 'dkim_private.pem';
|
||||
//Set this to your own selector
|
||||
$mail->DKIM_selector = 'phpmailer';
|
||||
//If your private key has a passphrase, set it here
|
||||
$mail->DKIM_passphrase = '';
|
||||
//The identity you're signing as - usually your From address
|
||||
$mail->DKIM_identity = $mail->From;
|
||||
|
||||
//send the message, check for errors
|
||||
if (!$mail->send()) {
|
||||
echo "Mailer Error: " . $mail->ErrorInfo;
|
||||
} else {
|
||||
echo "Message sent!";
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
<?php
|
||||
/**
|
||||
* This example shows how to handle a simple contact form.
|
||||
*/
|
||||
|
||||
$msg = '';
|
||||
//Don't run this unless we're handling a form submission
|
||||
if (array_key_exists('email', $_POST)) {
|
||||
date_default_timezone_set('Etc/UTC');
|
||||
|
||||
require '../PHPMailerAutoload.php';
|
||||
|
||||
//Create a new PHPMailer instance
|
||||
$mail = new PHPMailer;
|
||||
//Tell PHPMailer to use SMTP - requires a local mail server
|
||||
//Faster and safer than using mail()
|
||||
$mail->isSMTP();
|
||||
$mail->Host = 'localhost';
|
||||
$mail->Port = 25;
|
||||
|
||||
//Use a fixed address in your own domain as the from address
|
||||
//**DO NOT** use the submitter's address here as it will be forgery
|
||||
//and will cause your messages to fail SPF checks
|
||||
$mail->setFrom('from@example.com', 'First Last');
|
||||
//Send the message to yourself, or whoever should receive contact for submissions
|
||||
$mail->addAddress('whoto@example.com', 'John Doe');
|
||||
//Put the submitter's address in a reply-to header
|
||||
//This will fail if the address provided is invalid,
|
||||
//in which case we should ignore the whole request
|
||||
if ($mail->addReplyTo($_POST['email'], $_POST['name'])) {
|
||||
$mail->Subject = 'PHPMailer contact form';
|
||||
//Keep it simple - don't use HTML
|
||||
$mail->isHTML(false);
|
||||
//Build a simple message body
|
||||
$mail->Body = <<<EOT
|
||||
Email: {$_POST['email']}
|
||||
Name: {$_POST['name']}
|
||||
Message: {$_POST['message']}
|
||||
EOT;
|
||||
//Send the message, check for errors
|
||||
if (!$mail->send()) {
|
||||
//The reason for failing to send will be in $mail->ErrorInfo
|
||||
//but you shouldn't display errors to users - process the error, log it on your server.
|
||||
$msg = 'Sorry, something went wrong. Please try again later.';
|
||||
} else {
|
||||
$msg = 'Message sent! Thanks for contacting us.';
|
||||
}
|
||||
} else {
|
||||
$msg = 'Invalid email address, message ignored.';
|
||||
}
|
||||
}
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Contact form</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Contact us</h1>
|
||||
<?php if (!empty($msg)) {
|
||||
echo "<h2>$msg</h2>";
|
||||
} ?>
|
||||
<form method="POST">
|
||||
<label for="name">Name: <input type="text" name="name" id="name"></label><br>
|
||||
<label for="email">Email address: <input type="email" name="email" id="email"></label><br>
|
||||
<label for="message">Message: <textarea name="message" id="message" rows="8" cols="20"></textarea></label><br>
|
||||
<input type="submit" value="Send">
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
||||
@@ -15,6 +15,7 @@
|
||||
<p>Russian text: Пустое тело сообщения</p>
|
||||
<p>Armenian text: Հաղորդագրությունը դատարկ է</p>
|
||||
<p>Czech text: Prázdné tělo zprávy</p>
|
||||
<p>Emoji: <span style="font-size: 48px">😂 🦄 💥 📤 📧</span></p>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
@@ -259,7 +259,7 @@ if (XRegExp) {
|
||||
|
||||
|
||||
//---------------------------------
|
||||
// Overriden native methods
|
||||
// Overridden native methods
|
||||
//---------------------------------
|
||||
|
||||
// Adds named capture support (with backreferences returned as `result.name`), and fixes two
|
||||
|
||||
+5
-6
@@ -23,24 +23,23 @@ dp.SyntaxHighlighter = {
|
||||
return match.value;
|
||||
|
||||
return null;
|
||||
};
|
||||
}
|
||||
|
||||
function defaultValue(value, def)
|
||||
{
|
||||
return value != null ? value : def;
|
||||
};
|
||||
}
|
||||
|
||||
function asString(value)
|
||||
{
|
||||
return value != null ? value.toString() : null;
|
||||
};
|
||||
}
|
||||
|
||||
var parts = input.split(':'),
|
||||
brushName = parts[0],
|
||||
options = {},
|
||||
straight = { 'true' : true }
|
||||
straight = { 'true' : true },
|
||||
reverse = { 'true' : false },
|
||||
result = null,
|
||||
defaults = SyntaxHighlighter.defaults
|
||||
;
|
||||
|
||||
@@ -89,7 +88,7 @@ dp.SyntaxHighlighter = {
|
||||
}
|
||||
|
||||
return null;
|
||||
};
|
||||
}
|
||||
|
||||
function findTagsByName(list, name, tagName)
|
||||
{
|
||||
|
||||
@@ -12,28 +12,28 @@ if (array_key_exists('userfile', $_FILES)) {
|
||||
// Upload handled successfully
|
||||
// Now create a message
|
||||
// This should be somewhere in your include_path
|
||||
require 'PHPMailerAutoload.php';
|
||||
require '../PHPMailerAutoload.php';
|
||||
$mail = new PHPMailer;
|
||||
$mail->setFrom('from@example.com', 'First Last');
|
||||
$mail->addAddress('whoto@example.com', 'John Doe');
|
||||
$mail->Subject = 'PHPMailer file sender';
|
||||
$mail->msgHTML("My message body");
|
||||
$mail->Body = 'My message body';
|
||||
// Attach the uploaded file
|
||||
$mail->addAttachment($uploadfile, 'My uploaded file');
|
||||
if (!$mail->send()) {
|
||||
$msg = "Mailer Error: " . $mail->ErrorInfo;
|
||||
$msg .= "Mailer Error: " . $mail->ErrorInfo;
|
||||
} else {
|
||||
$msg = "Message sent!";
|
||||
$msg .= "Message sent!";
|
||||
}
|
||||
} else {
|
||||
$msg = 'Failed to move file to ' . $uploadfile;
|
||||
$msg .= 'Failed to move file to ' . $uploadfile;
|
||||
}
|
||||
}
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8"/>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>PHPMailer Upload</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
@@ -0,0 +1,51 @@
|
||||
<?php
|
||||
/**
|
||||
* PHPMailer multiple files upload and send example
|
||||
*/
|
||||
$msg = '';
|
||||
if (array_key_exists('userfile', $_FILES)) {
|
||||
|
||||
// Create a message
|
||||
// This should be somewhere in your include_path
|
||||
require '../PHPMailerAutoload.php';
|
||||
$mail = new PHPMailer;
|
||||
$mail->setFrom('from@example.com', 'First Last');
|
||||
$mail->addAddress('whoto@example.com', 'John Doe');
|
||||
$mail->Subject = 'PHPMailer file sender';
|
||||
$mail->Body = 'My message body';
|
||||
//Attach multiple files one by one
|
||||
for ($ct = 0; $ct < count($_FILES['userfile']['tmp_name']); $ct++) {
|
||||
$uploadfile = tempnam(sys_get_temp_dir(), sha1($_FILES['userfile']['name'][$ct]));
|
||||
$filename = $_FILES['userfile']['name'][$ct];
|
||||
if (move_uploaded_file($_FILES['userfile']['tmp_name'][$ct], $uploadfile)) {
|
||||
$mail->addAttachment($uploadfile, $filename);
|
||||
} else {
|
||||
$msg .= 'Failed to move file to ' . $uploadfile;
|
||||
}
|
||||
}
|
||||
if (!$mail->send()) {
|
||||
$msg .= "Mailer Error: " . $mail->ErrorInfo;
|
||||
} else {
|
||||
$msg .= "Message sent!";
|
||||
}
|
||||
}
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<title>PHPMailer Upload</title>
|
||||
</head>
|
||||
<body>
|
||||
<?php if (empty($msg)) { ?>
|
||||
<form method="post" enctype="multipart/form-data">
|
||||
<input type="hidden" name="MAX_FILE_SIZE" value="100000">
|
||||
Select one or more files:
|
||||
<input name="userfile[]" type="file" multiple="multiple">
|
||||
<input type="submit" value="Send Files">
|
||||
</form>
|
||||
<?php } else {
|
||||
echo $msg;
|
||||
} ?>
|
||||
</body>
|
||||
</html>
|
||||
@@ -17,24 +17,39 @@ $smtp = new SMTP;
|
||||
$smtp->do_debug = SMTP::DEBUG_CONNECTION;
|
||||
|
||||
try {
|
||||
//Connect to an SMTP server
|
||||
if ($smtp->connect('mail.example.com', 25)) {
|
||||
//Say hello
|
||||
if ($smtp->hello('localhost')) { //Put your host name in here
|
||||
//Authenticate
|
||||
if ($smtp->authenticate('username', 'password')) {
|
||||
echo "Connected ok!";
|
||||
} else {
|
||||
throw new Exception('Authentication failed: ' . $smtp->getLastReply());
|
||||
}
|
||||
} else {
|
||||
throw new Exception('HELO failed: '. $smtp->getLastReply());
|
||||
}
|
||||
} else {
|
||||
//Connect to an SMTP server
|
||||
if (!$smtp->connect('mail.example.com', 25)) {
|
||||
throw new Exception('Connect failed');
|
||||
}
|
||||
//Say hello
|
||||
if (!$smtp->hello(gethostname())) {
|
||||
throw new Exception('EHLO failed: ' . $smtp->getError()['error']);
|
||||
}
|
||||
//Get the list of ESMTP services the server offers
|
||||
$e = $smtp->getServerExtList();
|
||||
//If server can do TLS encryption, use it
|
||||
if (is_array($e) && array_key_exists('STARTTLS', $e)) {
|
||||
$tlsok = $smtp->startTLS();
|
||||
if (!$tlsok) {
|
||||
throw new Exception('Failed to start encryption: ' . $smtp->getError()['error']);
|
||||
}
|
||||
//Repeat EHLO after STARTTLS
|
||||
if (!$smtp->hello(gethostname())) {
|
||||
throw new Exception('EHLO (2) failed: ' . $smtp->getError()['error']);
|
||||
}
|
||||
//Get new capabilities list, which will usually now include AUTH if it didn't before
|
||||
$e = $smtp->getServerExtList();
|
||||
}
|
||||
//If server supports authentication, do it (even if no encryption)
|
||||
if (is_array($e) && array_key_exists('AUTH', $e)) {
|
||||
if ($smtp->authenticate('username', 'password')) {
|
||||
echo "Connected ok!";
|
||||
} else {
|
||||
throw new Exception('Authentication failed: ' . $smtp->getError()['error']);
|
||||
}
|
||||
}
|
||||
} catch (Exception $e) {
|
||||
echo 'SMTP error: '. $e->getMessage(), "\n";
|
||||
echo 'SMTP error: ' . $e->getMessage(), "\n";
|
||||
}
|
||||
//Whatever happened, close the connection.
|
||||
$smtp->quit(true);
|
||||
|
||||
@@ -433,7 +433,7 @@ function tln_getnxtag($body, $offset)
|
||||
*
|
||||
* @param string $attvalue the by-ref value to check.
|
||||
* @param string $regex the regular expression to check against.
|
||||
* @param boolean $hex whether the entites are hexadecimal.
|
||||
* @param boolean $hex whether the entities are hexadecimal.
|
||||
* @return boolean True or False depending on whether there were matches.
|
||||
*/
|
||||
function tln_deent(&$attvalue, $regex, $hex = false)
|
||||
@@ -461,7 +461,6 @@ function tln_deent(&$attvalue, $regex, $hex = false)
|
||||
* checks on them.
|
||||
*
|
||||
* @param string $attvalue A string to run entity check against.
|
||||
* @return Void, modifies a reference value.
|
||||
*/
|
||||
function tln_defang(&$attvalue)
|
||||
{
|
||||
@@ -488,7 +487,6 @@ function tln_defang(&$attvalue)
|
||||
* be funny to make "java[tab]script" be just as good as "javascript".
|
||||
*
|
||||
* @param string $attvalue The attribute value before extraneous spaces removed.
|
||||
* @return Void, modifies a reference value.
|
||||
*/
|
||||
function tln_unspace(&$attvalue)
|
||||
{
|
||||
@@ -511,7 +509,7 @@ function tln_unspace(&$attvalue)
|
||||
* @param array $add_attr_to_tag See description for tln_sanitize
|
||||
* @param string $trans_image_path
|
||||
* @param boolean $block_external_images
|
||||
* @return Array with modified attributes.
|
||||
* @return array with modified attributes.
|
||||
*/
|
||||
function tln_fixatts(
|
||||
$tagname,
|
||||
@@ -667,9 +665,7 @@ function tln_fixurl($attname, &$attvalue, $trans_image_path, $block_external_ima
|
||||
|
||||
function tln_fixstyle($body, $pos, $trans_image_path, $block_external_images)
|
||||
{
|
||||
$me = 'tln_fixstyle';
|
||||
// workaround for </style> in between comments
|
||||
$iCurrentPos = $pos;
|
||||
$content = '';
|
||||
$sToken = '';
|
||||
$bSucces = false;
|
||||
@@ -740,8 +736,6 @@ function tln_fixstyle($body, $pos, $trans_image_path, $block_external_images)
|
||||
*/
|
||||
$content = preg_replace("|body(\s*\{.*?\})|si", ".bodyclass\\1", $content);
|
||||
|
||||
$trans_image_path = $trans_image_path;
|
||||
|
||||
/**
|
||||
* Fix url('blah') declarations.
|
||||
*/
|
||||
@@ -778,7 +772,7 @@ function tln_fixstyle($body, $pos, $trans_image_path, $block_external_images)
|
||||
tln_defang($contentTemp);
|
||||
tln_unspace($contentTemp);
|
||||
|
||||
$match = Array('/\/\*.*\*\//',
|
||||
$match = array('/\/\*.*\*\//',
|
||||
'/expression/i',
|
||||
'/behaviou*r/i',
|
||||
'/binding/i',
|
||||
@@ -786,7 +780,7 @@ function tln_fixstyle($body, $pos, $trans_image_path, $block_external_images)
|
||||
'/javascript/i',
|
||||
'/script/i',
|
||||
'/position/i');
|
||||
$replace = Array('','idiocy', 'idiocy', 'idiocy', 'idiocy', 'idiocy', 'idiocy', '');
|
||||
$replace = array('','idiocy', 'idiocy', 'idiocy', 'idiocy', 'idiocy', 'idiocy', '');
|
||||
$contentNew = preg_replace($match, $replace, $contentTemp);
|
||||
if ($contentNew !== $contentTemp) {
|
||||
$content = $contentNew;
|
||||
@@ -796,7 +790,6 @@ function tln_fixstyle($body, $pos, $trans_image_path, $block_external_images)
|
||||
|
||||
function tln_body2div($attary, $trans_image_path)
|
||||
{
|
||||
$me = 'tln_body2div';
|
||||
$divattary = array('class' => "'bodyclass'");
|
||||
$text = '#000000';
|
||||
$has_bgc_stl = $has_txt_stl = false;
|
||||
@@ -901,7 +894,7 @@ function tln_sanitize(
|
||||
}
|
||||
$trusted .= tln_tagprint($tagname, $attary, $tagtype);
|
||||
$trusted .= $free_content;
|
||||
$trusted .= tln_tagprint($tagname, false, 2);
|
||||
$trusted .= tln_tagprint($tagname, null, 2);
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -160,12 +160,12 @@ class ntlm_sasl_client_class
|
||||
{
|
||||
switch ($this->state) {
|
||||
case SASL_NTLM_STATE_IDENTIFY_DOMAIN:
|
||||
$message = $this->TypeMsg1($this->credentials["realm"], $this->credentials["workstation"]);
|
||||
$message = $this->typeMsg1($this->credentials["realm"], $this->credentials["workstation"]);
|
||||
$this->state = SASL_NTLM_STATE_RESPOND_CHALLENGE;
|
||||
break;
|
||||
case SASL_NTLM_STATE_RESPOND_CHALLENGE:
|
||||
$ntlm_response = $this->NTLMResponse(substr($response, 24, 8), $this->credentials["password"]);
|
||||
$message = $this->TypeMsg3(
|
||||
$message = $this->typeMsg3(
|
||||
$ntlm_response,
|
||||
$this->credentials["user"],
|
||||
$this->credentials["realm"],
|
||||
|
||||
@@ -13,8 +13,15 @@
|
||||
* PHP Version 5.4
|
||||
*/
|
||||
|
||||
namespace League\OAuth2\Client\Provider;
|
||||
|
||||
require 'vendor/autoload.php';
|
||||
|
||||
use League\OAuth2\Client\Provider\Exception\IdentityProviderException;
|
||||
use League\OAuth2\Client\Token\AccessToken;
|
||||
use League\OAuth2\Client\Tool\BearerAuthorizationTrait;
|
||||
use Psr\Http\Message\ResponseInterface;
|
||||
|
||||
session_start();
|
||||
|
||||
//If this automatic URL doesn't work, set it yourself manually
|
||||
@@ -25,14 +32,109 @@ $redirectUri = isset($_SERVER['HTTPS']) ? 'https://' : 'http://' . $_SERVER['HTT
|
||||
$clientId = 'RANDOMCHARS-----duv1n2.apps.googleusercontent.com';
|
||||
$clientSecret = 'RANDOMCHARS-----lGyjPcRtvP';
|
||||
|
||||
class Google extends AbstractProvider
|
||||
{
|
||||
use BearerAuthorizationTrait;
|
||||
|
||||
const ACCESS_TOKEN_RESOURCE_OWNER_ID = 'id';
|
||||
|
||||
/**
|
||||
* @var string If set, this will be sent to google as the "access_type" parameter.
|
||||
* @link https://developers.google.com/accounts/docs/OAuth2WebServer#offline
|
||||
*/
|
||||
protected $accessType;
|
||||
|
||||
/**
|
||||
* @var string If set, this will be sent to google as the "hd" parameter.
|
||||
* @link https://developers.google.com/accounts/docs/OAuth2Login#hd-param
|
||||
*/
|
||||
protected $hostedDomain;
|
||||
|
||||
/**
|
||||
* @var string If set, this will be sent to google as the "scope" parameter.
|
||||
* @link https://developers.google.com/gmail/api/auth/scopes
|
||||
*/
|
||||
protected $scope;
|
||||
|
||||
public function getBaseAuthorizationUrl()
|
||||
{
|
||||
return 'https://accounts.google.com/o/oauth2/auth';
|
||||
}
|
||||
|
||||
public function getBaseAccessTokenUrl(array $params)
|
||||
{
|
||||
return 'https://accounts.google.com/o/oauth2/token';
|
||||
}
|
||||
|
||||
public function getResourceOwnerDetailsUrl(AccessToken $token)
|
||||
{
|
||||
return ' ';
|
||||
}
|
||||
|
||||
protected function getAuthorizationParameters(array $options)
|
||||
{
|
||||
if (is_array($this->scope)) {
|
||||
$separator = $this->getScopeSeparator();
|
||||
$this->scope = implode($separator, $this->scope);
|
||||
}
|
||||
|
||||
$params = array_merge(
|
||||
parent::getAuthorizationParameters($options),
|
||||
array_filter([
|
||||
'hd' => $this->hostedDomain,
|
||||
'access_type' => $this->accessType,
|
||||
'scope' => $this->scope,
|
||||
// if the user is logged in with more than one account ask which one to use for the login!
|
||||
'authuser' => '-1'
|
||||
])
|
||||
);
|
||||
return $params;
|
||||
}
|
||||
|
||||
protected function getDefaultScopes()
|
||||
{
|
||||
return [
|
||||
'email',
|
||||
'openid',
|
||||
'profile',
|
||||
];
|
||||
}
|
||||
|
||||
protected function getScopeSeparator()
|
||||
{
|
||||
return ' ';
|
||||
}
|
||||
|
||||
protected function checkResponse(ResponseInterface $response, $data)
|
||||
{
|
||||
if (!empty($data['error'])) {
|
||||
$code = 0;
|
||||
$error = $data['error'];
|
||||
|
||||
if (is_array($error)) {
|
||||
$code = $error['code'];
|
||||
$error = $error['message'];
|
||||
}
|
||||
|
||||
throw new IdentityProviderException($error, $code, $data);
|
||||
}
|
||||
}
|
||||
|
||||
protected function createResourceOwner(array $response, AccessToken $token)
|
||||
{
|
||||
return new GoogleUser($response);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//Set Redirect URI in Developer Console as [https/http]://<yourdomain>/<folder>/get_oauth_token.php
|
||||
$provider = new League\OAuth2\Client\Provider\Google(
|
||||
$provider = new Google(
|
||||
array(
|
||||
'clientId' => $clientId,
|
||||
'clientSecret' => $clientSecret,
|
||||
'redirectUri' => $redirectUri,
|
||||
'scopes' => array('https://mail.google.com/'),
|
||||
'accessType' => 'offline'
|
||||
'scope' => array('https://mail.google.com/'),
|
||||
'accessType' => 'offline'
|
||||
)
|
||||
);
|
||||
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
<?php
|
||||
/**
|
||||
* Czech PHPMailer language file: refer to English translation for definitive list
|
||||
* @package PHPMailer
|
||||
*/
|
||||
|
||||
$PHPMAILER_LANG['authenticate'] = 'Chyba SMTP: Autentizace selhala.';
|
||||
$PHPMAILER_LANG['connect_host'] = 'Chyba SMTP: Nelze navázat spojení se SMTP serverem.';
|
||||
$PHPMAILER_LANG['data_not_accepted'] = 'Chyba SMTP: Data nebyla přijata.';
|
||||
$PHPMAILER_LANG['empty_message'] = 'Prázdné tělo zprávy';
|
||||
$PHPMAILER_LANG['encoding'] = 'Neznámé kódování: ';
|
||||
$PHPMAILER_LANG['execute'] = 'Nelze provést: ';
|
||||
$PHPMAILER_LANG['file_access'] = 'Nelze získat přístup k souboru: ';
|
||||
$PHPMAILER_LANG['file_open'] = 'Chyba souboru: Nelze otevřít soubor pro čtení: ';
|
||||
$PHPMAILER_LANG['from_failed'] = 'Následující adresa odesílatele je nesprávná: ';
|
||||
$PHPMAILER_LANG['instantiate'] = 'Nelze vytvořit instanci emailové funkce.';
|
||||
$PHPMAILER_LANG['invalid_address'] = 'Neplatná adresa: ';
|
||||
$PHPMAILER_LANG['mailer_not_supported'] = ' mailer není podporován.';
|
||||
$PHPMAILER_LANG['provide_address'] = 'Musíte zadat alespoň jednu emailovou adresu příjemce.';
|
||||
$PHPMAILER_LANG['recipients_failed'] = 'Chyba SMTP: Následující adresy příjemců nejsou správně: ';
|
||||
$PHPMAILER_LANG['signing'] = 'Chyba přihlašování: ';
|
||||
$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() selhal.';
|
||||
$PHPMAILER_LANG['smtp_error'] = 'Chyba SMTP serveru: ';
|
||||
$PHPMAILER_LANG['variable_set'] = 'Nelze nastavit nebo změnit proměnnou: ';
|
||||
//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: ';
|
||||
@@ -0,0 +1,26 @@
|
||||
<?php
|
||||
/**
|
||||
* Danish PHPMailer language file: refer to English translation for definitive list
|
||||
* @package PHPMailer
|
||||
* @author Mikael Stokkebro <info@stokkebro.dk>
|
||||
*/
|
||||
|
||||
$PHPMAILER_LANG['authenticate'] = 'SMTP fejl: Kunne ikke logge på.';
|
||||
$PHPMAILER_LANG['connect_host'] = 'SMTP fejl: Kunne ikke tilslutte SMTP serveren.';
|
||||
$PHPMAILER_LANG['data_not_accepted'] = 'SMTP fejl: Data kunne ikke accepteres.';
|
||||
//$PHPMAILER_LANG['empty_message'] = 'Message body empty';
|
||||
$PHPMAILER_LANG['encoding'] = 'Ukendt encode-format: ';
|
||||
$PHPMAILER_LANG['execute'] = 'Kunne ikke køre: ';
|
||||
$PHPMAILER_LANG['file_access'] = 'Ingen adgang til fil: ';
|
||||
$PHPMAILER_LANG['file_open'] = 'Fil fejl: Kunne ikke åbne filen: ';
|
||||
$PHPMAILER_LANG['from_failed'] = 'Følgende afsenderadresse er forkert: ';
|
||||
$PHPMAILER_LANG['instantiate'] = 'Kunne ikke initialisere email funktionen.';
|
||||
//$PHPMAILER_LANG['invalid_address'] = 'Invalid address: ';
|
||||
$PHPMAILER_LANG['mailer_not_supported'] = ' mailer understøttes ikke.';
|
||||
$PHPMAILER_LANG['provide_address'] = 'Du skal indtaste mindst en modtagers emailadresse.';
|
||||
$PHPMAILER_LANG['recipients_failed'] = 'SMTP fejl: Følgende modtagere er forkerte: ';
|
||||
//$PHPMAILER_LANG['signing'] = 'Signing Error: ';
|
||||
//$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() failed.';
|
||||
//$PHPMAILER_LANG['smtp_error'] = 'SMTP server error: ';
|
||||
//$PHPMAILER_LANG['variable_set'] = 'Cannot set or reset variable: ';
|
||||
//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: ';
|
||||
@@ -4,22 +4,22 @@
|
||||
* @package PHPMailer
|
||||
*/
|
||||
|
||||
$PHPMAILER_LANG['authenticate'] = 'SMTP Fehler: Authentifizierung fehlgeschlagen.';
|
||||
$PHPMAILER_LANG['connect_host'] = 'SMTP Fehler: Konnte keine Verbindung zum SMTP-Host herstellen.';
|
||||
$PHPMAILER_LANG['data_not_accepted'] = 'SMTP Fehler: Daten werden nicht akzeptiert.';
|
||||
$PHPMAILER_LANG['empty_message'] = 'E-Mail Inhalt ist leer.';
|
||||
$PHPMAILER_LANG['encoding'] = 'Unbekanntes Encoding-Format: ';
|
||||
$PHPMAILER_LANG['authenticate'] = 'SMTP-Fehler: Authentifizierung fehlgeschlagen.';
|
||||
$PHPMAILER_LANG['connect_host'] = 'SMTP-Fehler: Konnte keine Verbindung zum SMTP-Host herstellen.';
|
||||
$PHPMAILER_LANG['data_not_accepted'] = 'SMTP-Fehler: Daten werden nicht akzeptiert.';
|
||||
$PHPMAILER_LANG['empty_message'] = 'E-Mail-Inhalt ist leer.';
|
||||
$PHPMAILER_LANG['encoding'] = 'Unbekannte Kodierung: ';
|
||||
$PHPMAILER_LANG['execute'] = 'Konnte folgenden Befehl nicht ausführen: ';
|
||||
$PHPMAILER_LANG['file_access'] = 'Zugriff auf folgende Datei fehlgeschlagen: ';
|
||||
$PHPMAILER_LANG['file_open'] = 'Datei Fehler: konnte folgende Datei nicht öffnen: ';
|
||||
$PHPMAILER_LANG['file_open'] = 'Dateifehler: Konnte folgende Datei nicht öffnen: ';
|
||||
$PHPMAILER_LANG['from_failed'] = 'Die folgende Absenderadresse ist nicht korrekt: ';
|
||||
$PHPMAILER_LANG['instantiate'] = 'Mail Funktion konnte nicht initialisiert werden.';
|
||||
$PHPMAILER_LANG['invalid_address'] = 'E-Mail wird nicht gesendet, die Adresse ist ungültig: ';
|
||||
$PHPMAILER_LANG['instantiate'] = 'Mail-Funktion konnte nicht initialisiert werden.';
|
||||
$PHPMAILER_LANG['invalid_address'] = 'Die Adresse ist ungültig: ';
|
||||
$PHPMAILER_LANG['mailer_not_supported'] = ' mailer wird nicht unterstützt.';
|
||||
$PHPMAILER_LANG['provide_address'] = 'Bitte geben Sie mindestens eine Empfänger E-Mailadresse an.';
|
||||
$PHPMAILER_LANG['recipients_failed'] = 'SMTP Fehler: Die folgenden Empfänger sind nicht korrekt: ';
|
||||
$PHPMAILER_LANG['provide_address'] = 'Bitte geben Sie mindestens eine Empfängeradresse an.';
|
||||
$PHPMAILER_LANG['recipients_failed'] = 'SMTP-Fehler: Die folgenden Empfänger sind nicht korrekt: ';
|
||||
$PHPMAILER_LANG['signing'] = 'Fehler beim Signieren: ';
|
||||
$PHPMAILER_LANG['smtp_connect_failed'] = 'Verbindung zu SMTP Server fehlgeschlagen.';
|
||||
$PHPMAILER_LANG['smtp_error'] = 'Fehler vom SMTP Server: ';
|
||||
$PHPMAILER_LANG['smtp_connect_failed'] = 'Verbindung zum SMTP-Server fehlgeschlagen.';
|
||||
$PHPMAILER_LANG['smtp_error'] = 'Fehler vom SMTP-Server: ';
|
||||
$PHPMAILER_LANG['variable_set'] = 'Kann Variable nicht setzen oder zurücksetzen: ';
|
||||
//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: ';
|
||||
$PHPMAILER_LANG['extension_missing'] = 'Fehlende Erweiterung: ';
|
||||
|
||||
@@ -23,4 +23,4 @@ $PHPMAILER_LANG['signing'] = 'Error al firmar: ';
|
||||
$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() falló.';
|
||||
$PHPMAILER_LANG['smtp_error'] = 'Error del servidor SMTP: ';
|
||||
$PHPMAILER_LANG['variable_set'] = 'No se pudo configurar la variable: ';
|
||||
//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: ';
|
||||
$PHPMAILER_LANG['extension_missing'] = 'Extensión faltante: ';
|
||||
|
||||
@@ -23,4 +23,4 @@ $PHPMAILER_LANG['signing'] = 'ხელმოწერის შე
|
||||
$PHPMAILER_LANG['smtp_connect_failed'] = 'შეცდომა SMTP სერვერთან დაკავშირებისას';
|
||||
$PHPMAILER_LANG['smtp_error'] = 'SMTP სერვერის შეცდომა: ';
|
||||
$PHPMAILER_LANG['variable_set'] = 'შეუძლებელია შემდეგი ცვლადის შექმნა ან შეცვლა: ';
|
||||
//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: ';
|
||||
$PHPMAILER_LANG['extension_missing'] = 'ბიბლიოთეკა არ არსებობს: ';
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
<?php
|
||||
/**
|
||||
* Norwegian PHPMailer language file: refer to English translation for definitive list
|
||||
* @package PHPMailer
|
||||
*/
|
||||
|
||||
$PHPMAILER_LANG['authenticate'] = 'SMTP Feil: Kunne ikke autentisere.';
|
||||
$PHPMAILER_LANG['connect_host'] = 'SMTP Feil: Kunne ikke koble til SMTP tjener.';
|
||||
$PHPMAILER_LANG['data_not_accepted'] = 'SMTP Feil: Data ble ikke akseptert.';
|
||||
$PHPMAILER_LANG['empty_message'] = 'Meldingsinnholdet er tomt';
|
||||
$PHPMAILER_LANG['encoding'] = 'Ukjent tegnkoding: ';
|
||||
$PHPMAILER_LANG['execute'] = 'Kunne ikke utføre: ';
|
||||
$PHPMAILER_LANG['file_access'] = 'Får ikke tilgang til filen: ';
|
||||
$PHPMAILER_LANG['file_open'] = 'Fil feil: Kunne ikke åpne filen: ';
|
||||
$PHPMAILER_LANG['from_failed'] = 'Følgende avsenderadresse feilet: ';
|
||||
$PHPMAILER_LANG['instantiate'] = 'Kunne ikke initialisere mailfunksjonen.';
|
||||
$PHPMAILER_LANG['invalid_address'] = 'Meldingen ble ikke sendt, følgende adresse er ugyldig: ';
|
||||
$PHPMAILER_LANG['provide_address'] = 'Du må angi minst en mottakeradresse.';
|
||||
$PHPMAILER_LANG['mailer_not_supported'] = ' mailer er ikke supportert.';
|
||||
$PHPMAILER_LANG['recipients_failed'] = 'SMTP Feil: Følgende mottagere feilet: ';
|
||||
$PHPMAILER_LANG['signing'] = 'Signeringsfeil: ';
|
||||
$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() feilet.';
|
||||
$PHPMAILER_LANG['smtp_error'] = 'SMTP-serverfeil: ';
|
||||
$PHPMAILER_LANG['variable_set'] = 'Kan ikke sette eller resette variabelen: ';
|
||||
//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: ';
|
||||
@@ -23,4 +23,4 @@ $PHPMAILER_LANG['signing'] = 'Błąd podpisywania wiadomości: ';
|
||||
$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() zakończone niepowodzeniem.';
|
||||
$PHPMAILER_LANG['smtp_error'] = 'Błąd SMTP: ';
|
||||
$PHPMAILER_LANG['variable_set'] = 'Nie można ustawić lub zmodyfikować zmiennej: ';
|
||||
//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: ';
|
||||
$PHPMAILER_LANG['extension_missing'] = 'Brakujące rozszerzenie: ';
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
<?php
|
||||
/**
|
||||
* Brazilian Portuguese PHPMailer language file: refer to English translation for definitive list
|
||||
* @package PHPMailer
|
||||
* @author Paulo Henrique Garcia <paulo@controllerweb.com.br>
|
||||
* @author Lucas Guimarães <lucas@lucasguimaraes.com>
|
||||
* @author Phelipe Alves <phelipealvesdesouza@gmail.com>
|
||||
*/
|
||||
|
||||
$PHPMAILER_LANG['authenticate'] = 'Erro de SMTP: Não foi possível autenticar.';
|
||||
$PHPMAILER_LANG['connect_host'] = 'Erro de SMTP: Não foi possível conectar ao servidor SMTP.';
|
||||
$PHPMAILER_LANG['data_not_accepted'] = 'Erro de SMTP: Dados rejeitados.';
|
||||
$PHPMAILER_LANG['empty_message'] = 'Mensagem vazia';
|
||||
$PHPMAILER_LANG['encoding'] = 'Codificação desconhecida: ';
|
||||
$PHPMAILER_LANG['execute'] = 'Não foi possível executar: ';
|
||||
$PHPMAILER_LANG['file_access'] = 'Não foi possível acessar o arquivo: ';
|
||||
$PHPMAILER_LANG['file_open'] = 'Erro de Arquivo: Não foi possível abrir o arquivo: ';
|
||||
$PHPMAILER_LANG['from_failed'] = 'Os seguintes remententes falharam: ';
|
||||
$PHPMAILER_LANG['instantiate'] = 'Não foi possível instanciar a função mail.';
|
||||
$PHPMAILER_LANG['invalid_address'] = 'Endereço de e-mail inválido: ';
|
||||
$PHPMAILER_LANG['mailer_not_supported'] = ' mailer não é suportado.';
|
||||
$PHPMAILER_LANG['provide_address'] = 'Você deve informar pelo menos um destinatário.';
|
||||
$PHPMAILER_LANG['recipients_failed'] = 'Erro de SMTP: Os seguintes destinatários falharam: ';
|
||||
$PHPMAILER_LANG['signing'] = 'Erro de Assinatura: ';
|
||||
$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() falhou.';
|
||||
$PHPMAILER_LANG['smtp_error'] = 'Erro de servidor SMTP: ';
|
||||
$PHPMAILER_LANG['variable_set'] = 'Não foi possível definir ou redefinir a variável: ';
|
||||
$PHPMAILER_LANG['extension_missing'] = 'Extensão ausente: ';
|
||||
@@ -2,25 +2,25 @@
|
||||
/**
|
||||
* Romanian PHPMailer language file: refer to English translation for definitive list
|
||||
* @package PHPMailer
|
||||
* @author Catalin Constantin <catalin@dazoot.ro>
|
||||
* @author Alex Florea <alecz.fia@gmail.com>
|
||||
*/
|
||||
|
||||
$PHPMAILER_LANG['authenticate'] = 'Eroare SMTP: Nu a functionat autentificarea.';
|
||||
$PHPMAILER_LANG['connect_host'] = 'Eroare SMTP: Nu m-am putut conecta la adresa SMTP.';
|
||||
$PHPMAILER_LANG['data_not_accepted'] = 'Eroare SMTP: Continutul mailului nu a fost acceptat.';
|
||||
$PHPMAILER_LANG['authenticate'] = 'Eroare SMTP: Autentificarea a eșuat.';
|
||||
$PHPMAILER_LANG['connect_host'] = 'Eroare SMTP: Conectarea la serverul SMTP a eșuat.';
|
||||
$PHPMAILER_LANG['data_not_accepted'] = 'Eroare SMTP: Datele nu au fost acceptate.';
|
||||
$PHPMAILER_LANG['empty_message'] = 'Mesajul este gol.';
|
||||
$PHPMAILER_LANG['encoding'] = 'Encodare necunoscuta: ';
|
||||
$PHPMAILER_LANG['execute'] = 'Nu pot executa: ';
|
||||
$PHPMAILER_LANG['file_access'] = 'Nu pot accesa fisierul: ';
|
||||
$PHPMAILER_LANG['file_open'] = 'Eroare de fisier: Nu pot deschide fisierul: ';
|
||||
$PHPMAILER_LANG['from_failed'] = 'Urmatoarele adrese From au dat eroare: ';
|
||||
$PHPMAILER_LANG['instantiate'] = 'Nu am putut instantia functia mail.';
|
||||
$PHPMAILER_LANG['invalid_address'] = 'Adresa de email nu este valida: ';
|
||||
$PHPMAILER_LANG['encoding'] = 'Encodare necunoscută: ';
|
||||
$PHPMAILER_LANG['execute'] = 'Nu se poate executa următoarea comandă: ';
|
||||
$PHPMAILER_LANG['file_access'] = 'Nu se poate accesa următorul fișier: ';
|
||||
$PHPMAILER_LANG['file_open'] = 'Eroare fișier: Nu se poate deschide următorul fișier: ';
|
||||
$PHPMAILER_LANG['from_failed'] = 'Următoarele adrese From au dat eroare: ';
|
||||
$PHPMAILER_LANG['instantiate'] = 'Funcția mail nu a putut fi inițializată.';
|
||||
$PHPMAILER_LANG['invalid_address'] = 'Adresa de email nu este validă: ';
|
||||
$PHPMAILER_LANG['mailer_not_supported'] = ' mailer nu este suportat.';
|
||||
$PHPMAILER_LANG['provide_address'] = 'Trebuie sa adaugati cel putin un recipient (adresa de mail).';
|
||||
$PHPMAILER_LANG['recipients_failed'] = 'Eroare SMTP: Urmatoarele adrese de mail au dat eroare: ';
|
||||
$PHPMAILER_LANG['signing'] = 'A aparut o problema la semnarea emailului. ';
|
||||
$PHPMAILER_LANG['smtp_connect_failed'] = 'Conectarea la serverul SMTP a esuat.';
|
||||
$PHPMAILER_LANG['smtp_error'] = 'A aparut o eroare la serverul SMTP. ';
|
||||
$PHPMAILER_LANG['provide_address'] = 'Trebuie să adăugați cel puțin o adresă de email.';
|
||||
$PHPMAILER_LANG['recipients_failed'] = 'Eroare SMTP: Următoarele adrese de email au eșuat: ';
|
||||
$PHPMAILER_LANG['signing'] = 'A aparut o problemă la semnarea emailului. ';
|
||||
$PHPMAILER_LANG['smtp_connect_failed'] = 'Conectarea la serverul SMTP a eșuat.';
|
||||
$PHPMAILER_LANG['smtp_error'] = 'Eroare server SMTP: ';
|
||||
$PHPMAILER_LANG['variable_set'] = 'Nu se poate seta/reseta variabila. ';
|
||||
//$PHPMAILER_LANG['extension_missing'] = 'Extension missing: ';
|
||||
$PHPMAILER_LANG['extension_missing'] = 'Lipsește extensia: ';
|
||||
|
||||
@@ -18,9 +18,9 @@ $PHPMAILER_LANG['instantiate'] = 'Невозможно запустит
|
||||
$PHPMAILER_LANG['provide_address'] = 'Пожалуйста, введите хотя бы один адрес e-mail получателя.';
|
||||
$PHPMAILER_LANG['mailer_not_supported'] = ' — почтовый сервер не поддерживается.';
|
||||
$PHPMAILER_LANG['recipients_failed'] = 'Ошибка SMTP: отправка по следующим адресам получателей не удалась: ';
|
||||
$PHPMAILER_LANG['empty_message'] = 'Пустое тело сообщения';
|
||||
$PHPMAILER_LANG['empty_message'] = 'Пустое сообщение';
|
||||
$PHPMAILER_LANG['invalid_address'] = 'Не отослано, неправильный формат email адреса: ';
|
||||
$PHPMAILER_LANG['signing'] = 'Ошибка подписывания: ';
|
||||
$PHPMAILER_LANG['signing'] = 'Ошибка подписи: ';
|
||||
$PHPMAILER_LANG['smtp_connect_failed'] = 'Ошибка соединения с SMTP-сервером';
|
||||
$PHPMAILER_LANG['smtp_error'] = 'Ошибка SMTP-сервера: ';
|
||||
$PHPMAILER_LANG['variable_set'] = 'Невозможно установить или переустановить переменную: ';
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
<?php
|
||||
/**
|
||||
* Swedish PHPMailer language file: refer to English translation for definitive list
|
||||
* @package PHPMailer
|
||||
* @author Johan Linnér <johan@linner.biz>
|
||||
*/
|
||||
|
||||
$PHPMAILER_LANG['authenticate'] = 'SMTP fel: Kunde inte autentisera.';
|
||||
$PHPMAILER_LANG['connect_host'] = 'SMTP fel: Kunde inte ansluta till SMTP-server.';
|
||||
$PHPMAILER_LANG['data_not_accepted'] = 'SMTP fel: Data accepterades inte.';
|
||||
//$PHPMAILER_LANG['empty_message'] = 'Message body empty';
|
||||
$PHPMAILER_LANG['encoding'] = 'Okänt encode-format: ';
|
||||
$PHPMAILER_LANG['execute'] = 'Kunde inte köra: ';
|
||||
$PHPMAILER_LANG['file_access'] = 'Ingen åtkomst till fil: ';
|
||||
$PHPMAILER_LANG['file_open'] = 'Fil fel: Kunde inte öppna fil: ';
|
||||
$PHPMAILER_LANG['from_failed'] = 'Följande avsändaradress är felaktig: ';
|
||||
$PHPMAILER_LANG['instantiate'] = 'Kunde inte initiera e-postfunktion.';
|
||||
$PHPMAILER_LANG['invalid_address'] = 'Felaktig adress: ';
|
||||
$PHPMAILER_LANG['provide_address'] = 'Du måste ange minst en mottagares e-postadress.';
|
||||
$PHPMAILER_LANG['mailer_not_supported'] = ' mailer stöds inte.';
|
||||
$PHPMAILER_LANG['recipients_failed'] = 'SMTP fel: Följande mottagare är felaktig: ';
|
||||
$PHPMAILER_LANG['signing'] = 'Signerings fel: ';
|
||||
$PHPMAILER_LANG['smtp_connect_failed'] = 'SMTP Connect() misslyckades.';
|
||||
$PHPMAILER_LANG['smtp_error'] = 'SMTP server fel: ';
|
||||
$PHPMAILER_LANG['variable_set'] = 'Kunde inte definiera eller återställa variabel: ';
|
||||
$PHPMAILER_LANG['extension_missing'] = 'Tillägg ej tillgängligt: ';
|
||||
@@ -0,0 +1,380 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--
|
||||
// ================================================================
|
||||
// CHEditor Template
|
||||
// ================================================================
|
||||
-->
|
||||
<Template>
|
||||
<Container>
|
||||
<Html>
|
||||
<![CDATA[
|
||||
<div class="cheditor-container">
|
||||
<div id="toolbar" style="padding:4px;height:47px"></div>
|
||||
<div id="editWrapper" class="cheditor-editarea-wrapper">
|
||||
<iframe frameborder="0" class="cheditor-editarea"></iframe>
|
||||
<textarea class="cheditor-editarea-text-content" spellcheck="false"></textarea>
|
||||
</div>
|
||||
<div id="modifyBlock" class="cheditor-modify-block"></div>
|
||||
<div id="tagPath" class="cheditor-tag-path">
|
||||
<span class="cheditor-status-bar"><html> </span>
|
||||
</div>
|
||||
<div id="resizeBar" class="cheditor-resizebar"></div>
|
||||
<div id="viewMode" class="cheditor-viewmode">
|
||||
<div id="rich" class="cheditor-tab-rich" title="입력 모드" alt=""> </div>
|
||||
<div id="code" class="cheditor-tab-code-off" title="HTML 편집" alt=""> </div>
|
||||
<div id="preview" class="cheditor-tab-preview-off" title="미리 보기" alt=""> </div>
|
||||
</div>
|
||||
</div>
|
||||
]]>
|
||||
</Html>
|
||||
</Container>
|
||||
<PopupWindow>
|
||||
<Html>
|
||||
<![CDATA[
|
||||
<div class="cheditor-popup-window" onselectstart="return false">
|
||||
<div class="cheditor-popup-drag-handle">
|
||||
<div class="cheditor-popup-titlebar">
|
||||
<span><label class="cheditor-popup-title"></label></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="cheditor-popup-cframe" id="cheditor-popup-cframe"></div>
|
||||
</div>
|
||||
]]>
|
||||
</Html>
|
||||
</PopupWindow>
|
||||
<Toolbar>
|
||||
<Image file="toolbar.png" />
|
||||
<Group name="Print">
|
||||
<Button name="Print" tooltip="인쇄">
|
||||
<Attribute class="cheditor-tb-bg" width="24" height="23">
|
||||
<Icon position="0" width="16" class="cheditor-tb-icon" margin="4px" />
|
||||
<Execution method="doCmd" value="Print" />
|
||||
</Attribute>
|
||||
</Button>
|
||||
<Button name="NewDocument" tooltip="새 문서">
|
||||
<Attribute class="cheditor-tb-bg" width="23" height="23">
|
||||
<Icon position="16" width="16" class="cheditor-tb-icon" />
|
||||
<Execution method="doCmd" value="NewDocument" />
|
||||
</Attribute>
|
||||
</Button>
|
||||
</Group>
|
||||
<Group name="Undo">
|
||||
<Button name="Undo" tooltip="되돌리기">
|
||||
<Attribute class="cheditor-tb-bg" width="24" height="23">
|
||||
<Icon position="32" width="16" class="cheditor-tb-icon" margin="4px" />
|
||||
<Execution method="doCmd" value="Undo" />
|
||||
</Attribute>
|
||||
</Button>
|
||||
<Button name="Redo" tooltip="다시 실행">
|
||||
<Attribute class="cheditor-tb-bg" width="23" height="23">
|
||||
<Icon position="48" width="16" class="cheditor-tb-icon" />
|
||||
<Execution method="doCmd" value="Redo" />
|
||||
</Attribute>
|
||||
</Button>
|
||||
</Group>
|
||||
<Group name="Edit">
|
||||
<Button name="Copy" tooltip="복사하기">
|
||||
<Attribute class="cheditor-tb-bg" width="24" height="23" check="1">
|
||||
<Icon position="64" width="16" class="cheditor-tb-icon" margin="4px" />
|
||||
<Execution method="doCmd" value="Copy" />
|
||||
</Attribute>
|
||||
</Button>
|
||||
<Button name="Cut" tooltip="오려두기">
|
||||
<Attribute class="cheditor-tb-bg" width="23" height="23" check="1">
|
||||
<Icon position="80" width="16" class="cheditor-tb-icon" />
|
||||
<Execution method="doCmd" value="Cut" />
|
||||
</Attribute>
|
||||
</Button>
|
||||
<Button name="Paste" tooltip="텍스트로 붙이기">
|
||||
<Attribute class="cheditor-tb-bg" width="23" height="23">
|
||||
<Icon position="96" width="16" class="cheditor-tb-icon" />
|
||||
<Execution method="doCmd" value="Paste" />
|
||||
</Attribute>
|
||||
</Button>
|
||||
<Button name="PasteFromWord" tooltip="MS 워드 붙이기">
|
||||
<Attribute class="cheditor-tb-bg" width="23" height="23">
|
||||
<Icon position="112" width="16" class="cheditor-tb-icon" />
|
||||
<Execution method="doCmd" value="PasteFromWord" />
|
||||
</Attribute>
|
||||
</Button>
|
||||
<Button name="SelectAll" tooltip="전체 선택">
|
||||
<Attribute class="cheditor-tb-bg" width="23" height="23">
|
||||
<Icon position="128" width="16" class="cheditor-tb-icon" />
|
||||
<Execution method="doCmd" value="SelectAll" />
|
||||
</Attribute>
|
||||
</Button>
|
||||
</Group>
|
||||
<Group name="Color">
|
||||
<Button name="BackColor" tooltip="형광펜">
|
||||
<Attribute class="cheditor-tb-bg30" width="30" default="#fff" height="23" check="1">
|
||||
<Icon position="240" width="23" class="cheditor-tb-icon23" />
|
||||
<Execution method="showPulldown" value="BackColor" />
|
||||
</Attribute>
|
||||
</Button>
|
||||
<Button name="ForeColor" tooltip="글자색">
|
||||
<Attribute class="cheditor-tb-bg30" width="30" default="#000" height="23" check="1">
|
||||
<Icon position="263" width="23" class="cheditor-tb-icon23" />
|
||||
<Execution method="showPulldown" value="ForeColor" />
|
||||
</Attribute>
|
||||
</Button>
|
||||
</Group>
|
||||
<Group name="Format">
|
||||
<Button name="Bold" tooltip="진하게">
|
||||
<Attribute class="cheditor-tb-bg" width="24" height="23" check="1">
|
||||
<Icon position="144" width="16" class="cheditor-tb-icon" margin="4px" />
|
||||
<Execution method="doCmd" value="Bold" />
|
||||
</Attribute>
|
||||
</Button>
|
||||
<Button name="Italic" tooltip="기울임">
|
||||
<Attribute class="cheditor-tb-bg" width="23" height="23" check="1">
|
||||
<Icon position="160" width="16" class="cheditor-tb-icon" />
|
||||
<Execution method="doCmd" value="Italic" />
|
||||
</Attribute>
|
||||
</Button>
|
||||
<Button name="Underline" tooltip="밑줄">
|
||||
<Attribute class="cheditor-tb-bg" width="23" height="23" check="1">
|
||||
<Icon position="176" width="16" class="cheditor-tb-icon" />
|
||||
<Execution method="doCmd" value="Underline" />
|
||||
</Attribute>
|
||||
</Button>
|
||||
<Button name="Strikethrough" tooltip="취소선">
|
||||
<Attribute class="cheditor-tb-bg" width="23" height="23" check="1">
|
||||
<Icon position="192" width="16" class="cheditor-tb-icon" />
|
||||
<Execution method="doCmd" value="Strikethrough" />
|
||||
</Attribute>
|
||||
</Button>
|
||||
<Button name="Superscript" tooltip="위 첨자">
|
||||
<Attribute class="cheditor-tb-bg" width="23" height="23" use="" check="1">
|
||||
<Icon position="208" width="16" class="cheditor-tb-icon" />
|
||||
<Execution method="doCmd" value="Superscript" />
|
||||
</Attribute>
|
||||
</Button>
|
||||
<Button name="Subscript" tooltip="아래 첨자">
|
||||
<Attribute class="cheditor-tb-bg" width="23" height="23" use="" check="1">
|
||||
<Icon position="224" width="16" class="cheditor-tb-icon" />
|
||||
<Execution method="doCmd" value="Subscript" />
|
||||
</Attribute>
|
||||
</Button>
|
||||
</Group>
|
||||
<Group name="Alignment">
|
||||
<Button name="JustifyLeft" tooltip="왼쪽 정렬">
|
||||
<Attribute class="cheditor-tb-bg" width="24" height="23" check="1">
|
||||
<Icon position="286" width="16" class="cheditor-tb-icon" margin="4px" />
|
||||
<Execution method="doCmd" value="JustifyLeft" />
|
||||
</Attribute>
|
||||
</Button>
|
||||
<Button name="JustifyCenter" tooltip="가운데 정렬">
|
||||
<Attribute class="cheditor-tb-bg" width="23" height="23" check="1">
|
||||
<Icon position="302" width="16" class="cheditor-tb-icon" />
|
||||
<Execution method="doCmd" value="JustifyCenter" />
|
||||
</Attribute>
|
||||
</Button>
|
||||
<Button name="JustifyRight" tooltip="오른쪽 정렬">
|
||||
<Attribute class="cheditor-tb-bg" width="23" height="23" check="1">
|
||||
<Icon position="318" width="16" class="cheditor-tb-icon" />
|
||||
<Execution method="doCmd" value="JustifyRight" />
|
||||
</Attribute>
|
||||
</Button>
|
||||
<Button name="JustifyFull" tooltip="양쪽 정렬">
|
||||
<Attribute class="cheditor-tb-bg" width="23" height="23" check="1">
|
||||
<Icon position="334" width="16" class="cheditor-tb-icon" />
|
||||
<Execution method="doCmd" value="JustifyFull" />
|
||||
</Attribute>
|
||||
</Button>
|
||||
</Group>
|
||||
<Group name="List">
|
||||
<Button name="OrderedList" tooltip="문단 번호">
|
||||
<Attribute class="cheditor-tb-bg" width="24" height="23" check="1" type="combo">
|
||||
<Icon position="350" width="16" class="cheditor-tb-icon" margin="4px" />
|
||||
<Execution method="doCmd" value="InsertOrderedList" />
|
||||
</Attribute>
|
||||
</Button>
|
||||
<Button name="OrderedListCombo" tooltip="문단 번호 확장">
|
||||
<Attribute class="cheditor-tb-bgcombo" width="10" height="23" type="combobox" node="OrderedList">
|
||||
<Icon width="10" class="cheditor-tb-combo" margin="0px" />
|
||||
<Execution method="showPulldown" value="OrderedList" />
|
||||
</Attribute>
|
||||
</Button>
|
||||
<Button name="UnOrderedList" tooltip="글 머리표">
|
||||
<Attribute class="cheditor-tb-bg" width="23" height="23" check="1" type="combo">
|
||||
<Icon position="366" width="16" class="cheditor-tb-icon" />
|
||||
<Execution method="doCmd" value="InsertUnOrderedList" />
|
||||
</Attribute>
|
||||
</Button>
|
||||
<Button name="UnOrderedListCombo" tooltip="글 머리표 확장">
|
||||
<Attribute class="cheditor-tb-bgcombo" width="10" height="23" type="combobox" node="UnOrderedList">
|
||||
<Icon width="10" class="cheditor-tb-combo" margin="0px" />
|
||||
<Execution method="showPulldown" value="UnOrderedList" />
|
||||
</Attribute>
|
||||
</Button>
|
||||
</Group>
|
||||
<Group name="Outdent">
|
||||
<Button name="Outdent" tooltip="왼쪽 여백 줄이기">
|
||||
<Attribute class="cheditor-tb-bg" width="24" height="23">
|
||||
<Icon position="382" width="16" class="cheditor-tb-icon" />
|
||||
<Execution method="doCmd" value="Outdent" />
|
||||
</Attribute>
|
||||
</Button>
|
||||
<Button name="Indent" tooltip="왼쪽 여백 늘이기">
|
||||
<Attribute class="cheditor-tb-bg" width="23" height="23">
|
||||
<Icon position="398" width="16" class="cheditor-tb-icon" />
|
||||
<Execution method="doCmd" value="Indent" />
|
||||
</Attribute>
|
||||
</Button>
|
||||
</Group>
|
||||
<Group name="Split">
|
||||
</Group>
|
||||
<Group name="FormatBlock">
|
||||
<Button name="FormatBlock" tooltip="스타일">
|
||||
<Attribute class="cheditor-tb-bg55" width="55" height="23" check="1">
|
||||
<Icon class="cheditor-tb-text" alt="스타일" />
|
||||
<Execution method="showPulldown" value="FormatBlock" />
|
||||
</Attribute>
|
||||
</Button>
|
||||
</Group>
|
||||
<Group name="FontName">
|
||||
<Button name="FontName" tooltip="글꼴">
|
||||
<Attribute class="cheditor-tb-bg55" width="55" height="23" check="1">
|
||||
<Icon class="cheditor-tb-text" alt="굴림" />
|
||||
<Execution method="showPulldown" value="FontName" />
|
||||
</Attribute>
|
||||
</Button>
|
||||
</Group>
|
||||
<Group name="FontSize">
|
||||
<Button name="FontSize" tooltip="글꼴 크기">
|
||||
<Attribute class="cheditor-tb-bg40" width="41" height="23" check="1">
|
||||
<Icon class="cheditor-tb-text" alt="9pt" />
|
||||
<Execution method="showPulldown" value="FontSize" />
|
||||
</Attribute>
|
||||
</Button>
|
||||
</Group>
|
||||
<Group name="LineHeight">
|
||||
<Button name="LineHeight" tooltip="줄 간격">
|
||||
<Attribute class="cheditor-tb-bg55" width="55" height="23" check="1">
|
||||
<Icon class="cheditor-tb-text" alt="줄 간격" />
|
||||
<Execution method="showPulldown" value="LineHeight" />
|
||||
</Attribute>
|
||||
</Button>
|
||||
</Group>
|
||||
<Group name="RemoveFormat">
|
||||
<Button name="RemoveFormat" tooltip="서식 지우기">
|
||||
<Attribute class="cheditor-tb-bg" width="24" height="23">
|
||||
<Icon position="414" width="16" class="cheditor-tb-icon" margin="4px" />
|
||||
<Execution method="doCmd" value="RemoveFormat" />
|
||||
</Attribute>
|
||||
</Button>
|
||||
<Button name="ClearTag" tooltip="모든 HTML 태그 제거">
|
||||
<Attribute class="cheditor-tb-bg" width="23" height="23">
|
||||
<Icon position="430" width="16" class="cheditor-tb-icon" />
|
||||
<Execution method="doCmd" value="ClearTag" />
|
||||
</Attribute>
|
||||
</Button>
|
||||
</Group>
|
||||
<Group name="Insert">
|
||||
<Button name="TextBlock" tooltip="글 상자">
|
||||
<Attribute class="cheditor-tb-bg" width="24" height="23" check="1">
|
||||
<Icon position="446" width="16" class="cheditor-tb-icon" margin="4px" />
|
||||
<Execution method="showPulldown" value="TextBlock" />
|
||||
</Attribute>
|
||||
</Button>
|
||||
<Button name="Symbol" tooltip="특수 문자">
|
||||
<Attribute class="cheditor-tb-bg" width="23" height="23">
|
||||
<Icon position="462" width="16" class="cheditor-tb-icon" />
|
||||
<Execution method="windowOpen" value="Symbol" />
|
||||
</Attribute>
|
||||
</Button>
|
||||
<Button name="HR" tooltip="가로줄">
|
||||
<Attribute class="cheditor-tb-bg" width="23" height="23">
|
||||
<Icon position="478" width="16" class="cheditor-tb-icon" />
|
||||
<Execution method="doCmd" value="InsertHorizontalRule" />
|
||||
</Attribute>
|
||||
</Button>
|
||||
<Button name="SmileyIcon" tooltip="표정 아이콘">
|
||||
<Attribute class="cheditor-tb-bg" width="23" height="23">
|
||||
<Icon position="494" width="16" class="cheditor-tb-icon" />
|
||||
<Execution method="windowOpen" value="EmotionIcon" />
|
||||
</Attribute>
|
||||
</Button>
|
||||
</Group>
|
||||
<Group name="Table">
|
||||
<Button name="Table" tooltip="표 만들기">
|
||||
<Attribute class="cheditor-tb-bg" width="24" height="23">
|
||||
<Icon position="510" width="16" class="cheditor-tb-icon" margin="4px" />
|
||||
<Execution method="windowOpen" value="Table" />
|
||||
</Attribute>
|
||||
</Button>
|
||||
<Button name="ModifyTable" tooltip="표 수정">
|
||||
<Attribute class="cheditor-tb-bg" width="23" height="23">
|
||||
<Icon position="526" width="16" class="cheditor-tb-icon" />
|
||||
<Execution method="windowOpen" value="ModifyTable" />
|
||||
</Attribute>
|
||||
</Button>
|
||||
<Button name="Layout" tooltip="레이아웃">
|
||||
<Attribute class="cheditor-tb-bg" width="23" height="23">
|
||||
<Icon position="542" width="16" class="cheditor-tb-icon" />
|
||||
<Execution method="windowOpen" value="Layout" />
|
||||
</Attribute>
|
||||
</Button>
|
||||
</Group>
|
||||
<Group name="Link">
|
||||
<Button name="Link" tooltip="하이퍼링크">
|
||||
<Attribute class="cheditor-tb-bg" width="24" height="23">
|
||||
<Icon position="558" width="16" class="cheditor-tb-icon" margin="4px" />
|
||||
<Execution method="windowOpen" value="Link" />
|
||||
</Attribute>
|
||||
</Button>
|
||||
<Button name="UnLink" tooltip="하이퍼링크 없애기">
|
||||
<Attribute class="cheditor-tb-bg" width="23" height="23" check="1">
|
||||
<Icon position="574" width="16" class="cheditor-tb-icon" />
|
||||
<Execution method="doCmd" value="UnLink" />
|
||||
</Attribute>
|
||||
</Button>
|
||||
</Group>
|
||||
<Group name="ImageUpload">
|
||||
<Button name="Image" tooltip="내 PC 사진 넣기">
|
||||
<Attribute class="cheditor-tb-bg44" width="50" height="23">
|
||||
<Icon position="590" width="36" class="cheditor-tb-icon36" margin="6px" />
|
||||
<Execution method="windowOpen" value="ImageUpload" />
|
||||
</Attribute>
|
||||
</Button>
|
||||
|
||||
</Group>
|
||||
<Group name="ImageWeb">
|
||||
<Button name="ImageUrl" tooltip="웹 사진">
|
||||
<Attribute class="cheditor-tb-bg44" width="50" height="23">
|
||||
<Icon position="626" width="36" class="cheditor-tb-icon36" margin="6px" />
|
||||
<Execution method="windowOpen" value="ImageUrl" />
|
||||
</Attribute>
|
||||
</Button>
|
||||
|
||||
</Group>
|
||||
<Group name="Media">
|
||||
<Button name="Flash" tooltip="플래쉬 동영상">
|
||||
<Attribute class="cheditor-tb-bg" width="24" height="23">
|
||||
<Icon position="662" width="16" class="cheditor-tb-icon" margin="4px" />
|
||||
<Execution method="windowOpen" value="FlashMovie" />
|
||||
</Attribute>
|
||||
</Button>
|
||||
<Button name="Media" tooltip="미디어">
|
||||
<Attribute class="cheditor-tb-bg" width="23" height="23">
|
||||
<Icon position="678" width="16" class="cheditor-tb-icon" />
|
||||
<Execution method="windowOpen" value="Embed" />
|
||||
</Attribute>
|
||||
</Button>
|
||||
<Button name="Map" tooltip="지도">
|
||||
<Attribute class="cheditor-tb-bg" width="23" height="23">
|
||||
<Icon position="694" width="16" class="cheditor-tb-icon" />
|
||||
<Execution method="windowOpen" value="GoogleMap" />
|
||||
</Attribute>
|
||||
</Button>
|
||||
</Group>
|
||||
<Group name="PageBreak">
|
||||
<Button name="PageBreak" tooltip="인쇄 쪽 나눔">
|
||||
<Attribute class="cheditor-tb-bg" width="24" height="23">
|
||||
<Icon position="710" width="16" class="cheditor-tb-icon" margin="4px" />
|
||||
<Execution method="doCmd" value="PageBreak" />
|
||||
</Attribute>
|
||||
</Button>
|
||||
</Group>
|
||||
</Toolbar>
|
||||
</Template>
|
||||
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user