Compare commits
1061 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| d0452e3bef | |||
| ec36dd7ba1 | |||
| 84d8c156a0 | |||
| c7ab3274c5 | |||
| 3d4f2d365f | |||
| bc9e5c5363 | |||
| 54a1fcc5e8 | |||
| c3d8c3d9c5 | |||
| bdfa1b3403 | |||
| aa190ca896 | |||
| 49ecddc646 | |||
| fad5406348 | |||
| 30b3c6c908 | |||
| 32dee33070 | |||
| 59e1c5643f | |||
| b253cc46d4 | |||
| 09bdb055fb | |||
| 449ac8f3e3 | |||
| 28be716c5f | |||
| f250594738 | |||
| 0fb7213e1a | |||
| bb2cb19a5c | |||
| 6e4079586a | |||
| d0bca94638 | |||
| 0302d1615b | |||
| 985fa24130 | |||
| ba5b6133cd | |||
| 0964f9cbcd | |||
| 06e448b4d0 | |||
| b773bb4cd4 | |||
| 65437d08ef | |||
| 87995a57de | |||
| a7dc1de980 | |||
| ce6f32906a | |||
| ef7470b503 | |||
| 853be230a8 | |||
| 2739a52e0f | |||
| f1c422db8e | |||
| 011630f8b9 | |||
| 6f11210edd | |||
| ce18c93419 | |||
| f3f80f2f55 | |||
| cae86f62e6 | |||
| ea4a365bf5 | |||
| 9c23a7dc3f | |||
| b0db87c683 | |||
| 200cea25c8 | |||
| 8d15e973e2 | |||
| 493ee7f534 | |||
| d6de831381 | |||
| 5ece51f8da | |||
| ca786e8102 | |||
| bde513d088 | |||
| c5f9652019 | |||
| 5e2aca8138 | |||
| 12331768bc | |||
| 7a1e0d4720 | |||
| 45c7fbb5ae | |||
| a852c31c6c | |||
| c8c4827626 | |||
| 4f33524842 | |||
| b5a76fb4de | |||
| c148ab4430 | |||
| a30d5875ed | |||
| 11574f0a43 | |||
| d65d04cc9a | |||
| 881cc42168 | |||
| 69a5a22810 | |||
| b34291762a | |||
| 6fd4315a0c | |||
| f4959c8b28 | |||
| f61f5beb5b | |||
| 74e86611ab | |||
| 155261f78a | |||
| e59043db2c | |||
| 87445bc74b | |||
| d8642fc7c2 | |||
| 19019bbe32 | |||
| 10481ed895 | |||
| feb2ad0664 | |||
| 5744d44e68 | |||
| 0870f32c59 | |||
| b86fe14ef0 | |||
| 6dbd1118a2 | |||
| 170ea134d6 | |||
| b405a3b61e | |||
| e3ff868fcd | |||
| 121fc716b0 | |||
| 152956c194 | |||
| 6cdb517454 | |||
| 94186a36d0 | |||
| f461bcb597 | |||
| 8065ec831e | |||
| 4c51f6e1fe | |||
| f19219f5a0 | |||
| 0f73d3f4d1 | |||
| 91c9b0446c | |||
| 68762146d7 | |||
| 5506b838c8 | |||
| 871e26a01e | |||
| ce8c2ca0fd | |||
| 1e1b72572f | |||
| 6afdf88e09 | |||
| 2f92dc40df | |||
| a846260d6e | |||
| dca49f508f | |||
| 3520869e36 | |||
| d5841785e1 | |||
| f721374321 | |||
| 7381b9db85 | |||
| 305792f409 | |||
| 35b8a042b8 | |||
| de8abc15a8 | |||
| 265e0610a3 | |||
| 231dfd776f | |||
| d4f288d3c6 | |||
| c407b73803 | |||
| be0175fb70 | |||
| 22b469f55d | |||
| aad04bba91 | |||
| da516d64d4 | |||
| a6f0feb23b | |||
| 7d7d08f980 | |||
| 2dc153751d | |||
| d4bf29e3ff | |||
| 4247501dc6 | |||
| b88fda9494 | |||
| f86055378d | |||
| f20e9e9b66 | |||
| 0ef2624b57 | |||
| b3211b1f71 | |||
| f7c7d784c4 | |||
| 0b9263bc15 | |||
| ba0d5e4dcf | |||
| 4d093ac03e | |||
| e63e8a6d38 | |||
| 37d2bdd90d | |||
| dda60fcf0d | |||
| 9661d06334 | |||
| bdd1a129c0 | |||
| 965196a2e8 | |||
| a7912f5344 | |||
| 6279cac932 | |||
| 25e0326f87 | |||
| c92478f7c2 | |||
| 3b30d5b0ed | |||
| adbccbe852 | |||
| 67b5de05c7 | |||
| 11c725018b | |||
| 9542cca0db | |||
| 8824a912ef | |||
| cae4fbb40b | |||
| 52ac941034 | |||
| 4579fd6ac7 | |||
| 7714046511 | |||
| 1b192987d2 | |||
| 585afcbc77 | |||
| 78aa187067 | |||
| adf0f87e99 | |||
| 259876cb74 | |||
| 20326e8908 | |||
| 03485f5e94 | |||
| 0f2d36dc53 | |||
| 8e88fa3884 | |||
| a9ac10e876 | |||
| 1fb908b70f | |||
| 1ce3bd256b | |||
| ce14c28faf | |||
| 03a11c63bd | |||
| 9ba20d26cb | |||
| cc7ebb86b4 | |||
| 79ddde3040 | |||
| 61dc89a068 | |||
| 7c9b47fb78 | |||
| dc81966938 | |||
| 59c9500944 | |||
| 8ccad7fada | |||
| 8a5d90797a | |||
| aa580b3f6e | |||
| 3841097428 | |||
| 5ff45e0f00 | |||
| 94a733c666 | |||
| e2b7717dd9 | |||
| 694d80b7fa | |||
| 84d23e60d1 | |||
| f4e2d278ba | |||
| d8be168cff | |||
| cde089ce9c | |||
| fdc664a318 | |||
| 4deff0513c | |||
| 46324385f2 | |||
| b5d8b22486 | |||
| 1b22368f6b | |||
| f88aa49913 | |||
| 200a842cb0 | |||
| 66bb4cbfa9 | |||
| aaa053829f | |||
| 0881c5941a | |||
| 3c46e6aba5 | |||
| fc34661b6f | |||
| a26c9d2475 | |||
| 536beedeb6 | |||
| 7196f46730 | |||
| 42bdb501ca | |||
| 24742031e9 | |||
| 7e07cba406 | |||
| 8b7da70b57 | |||
| a94209a0e0 | |||
| ed5ba1f645 | |||
| 1915f29d4b | |||
| 333eaef6dc | |||
| d1bfd6c90d | |||
| ca143c1873 | |||
| e10f2a9e47 | |||
| 0f9a0156c6 | |||
| 68ea5834c8 | |||
| 4a52042435 | |||
| 6b1f78e87a | |||
| 3f4423e996 | |||
| 8d8a3177e1 | |||
| 7897c3d0e1 | |||
| b173ec0a78 | |||
| 7fd0eefa30 | |||
| dab4c0cc10 | |||
| 0372878ba5 | |||
| ad3c91b86e | |||
| 75b133d968 | |||
| 89ad8a5502 | |||
| 15d3ebb842 | |||
| 689749a563 | |||
| a590e81922 | |||
| 405a5172d5 | |||
| 97b8373fd2 | |||
| bdd4e52699 | |||
| 03817de827 | |||
| 132ebb8f2d | |||
| 2cdda4cf49 | |||
| 4e014d23bd | |||
| b6a2eeebeb | |||
| 684ef60ec3 | |||
| 6e3df8e80b | |||
| c4f6c9dfe7 | |||
| 13cbd7c35d | |||
| 65a900668c | |||
| 2f1611f918 | |||
| 29dcc9b94c | |||
| 5d48329a3f | |||
| 5d0e599f17 | |||
| 5462a26a0a | |||
| 5f3c8dcca4 | |||
| 54c23a65db | |||
| 4d384b6bf5 | |||
| c2db003431 | |||
| d3aa329769 | |||
| db920b7d7b | |||
| 6b0fa44386 | |||
| 964cb3aaca | |||
| 1377dcf6d2 | |||
| 595b016019 | |||
| 85408662ff | |||
| d205e6ff1f | |||
| dd359a7328 | |||
| f74a715713 | |||
| af4b49f720 | |||
| ceeba3eea1 | |||
| cfc393a12e | |||
| c9c5839da4 | |||
| bf068f5659 | |||
| 32cf44827d | |||
| 0c403c0f0e | |||
| 3eb795357f | |||
| 2f5b15129a | |||
| f8167fc5d0 | |||
| 5abc03ff8f | |||
| 3114ce4ed2 | |||
| 868387a405 | |||
| caf07692db | |||
| 91350ad472 | |||
| d967103d89 | |||
| f77686481a | |||
| b0da69f050 | |||
| 9643e18be7 | |||
| ebf03a3745 | |||
| c952cc420b | |||
| 4d0503b6b3 | |||
| 8b6c90c2d9 | |||
| 655dcbcb74 | |||
| ac4f240261 | |||
| 506e2f3b97 | |||
| 30ae66e99e | |||
| f5038b86f8 | |||
| 9446b251fd | |||
| 94fb0a65b0 | |||
| 69d362595e | |||
| b7f7713fae | |||
| 8af66b0831 | |||
| 7e9c9703dd | |||
| 8d5025076f | |||
| 29751a6174 | |||
| 1b0e59bb13 | |||
| 8f8de0403b | |||
| 8afc320aba | |||
| 545a2f0097 | |||
| 14bf197be1 | |||
| 3e942bf4ac | |||
| fdfd202a30 | |||
| 5b0a28bbc9 | |||
| aefc374317 | |||
| 4c61ea9091 | |||
| d7e330c8ef | |||
| 99ffd9bb95 | |||
| 76c49f314f | |||
| ab5e726176 | |||
| b22779f018 | |||
| 41808a63a0 | |||
| ccb4328d06 | |||
| 2050cdffb4 | |||
| fce7fe8558 | |||
| 103e98b8da | |||
| 8e553decb0 | |||
| e3875482ba | |||
| 6e4e5a0190 | |||
| c96de092fe | |||
| cf72c5ee18 | |||
| 69fa79b154 | |||
| ea795e4bd7 | |||
| 537c8b966e | |||
| 142e494d52 | |||
| 50242cec78 | |||
| 33f821d4f7 | |||
| 9a823e5a16 | |||
| 686ce01534 | |||
| 4225f14e8b | |||
| a3478b7f0f | |||
| bab9543c1f | |||
| c3169e9eea | |||
| c04b6b2908 | |||
| 937e1c2e37 | |||
| 91763bbc61 | |||
| e0c9a6308d | |||
| e14cd5dd17 | |||
| e31919914b | |||
| fcbd72f2d7 | |||
| 4c5641a648 | |||
| 1fd452dca9 | |||
| f35d304582 | |||
| 8ca12d4d23 | |||
| 72e069d9ec | |||
| df8b0cb1a5 | |||
| a00a11e38a | |||
| 94949c9617 | |||
| e2aaca7cdd | |||
| 3afaacab76 | |||
| 57be0e38d8 | |||
| 27c69f263c | |||
| e22ed8081a | |||
| 5beaf50c67 | |||
| a07029dcad | |||
| 0de6f1c538 | |||
| 2e2667bbd7 | |||
| 271a9f097d | |||
| 7e3276f3a8 | |||
| 42fdac0b41 | |||
| 509331a563 | |||
| 08c2d0a83e | |||
| bb0c6e1e02 | |||
| 331a67f5f8 | |||
| e3e4dae583 | |||
| b669e4499c | |||
| 6e900d6a8f | |||
| 795addca7d | |||
| 774de2bdc5 | |||
| b5b2ad560a | |||
| b93fc4333c | |||
| d7c9809c59 | |||
| ac06161f30 | |||
| 0fe2aea709 | |||
| 21b021d912 | |||
| d5adcaea61 | |||
| 9d4c01d425 | |||
| ea97be9124 | |||
| 2458f55837 | |||
| 5f8114974f | |||
| 1ef9f28f2d | |||
| 3ed41e39f6 | |||
| 4ee10c155d | |||
| c2d8bc7b2f | |||
| b5bafca640 | |||
| 9a93562b94 | |||
| bf8b4acf01 | |||
| 41fd2afeb3 | |||
| 4520d5f3c1 | |||
| ccadbf45a2 | |||
| 2b0d724aef | |||
| 9010c35193 | |||
| 2c20414453 | |||
| 64f3f3287a | |||
| 1befa8d8b7 | |||
| 3b5ddf0254 | |||
| 33fd45a960 | |||
| 77ef03e104 | |||
| 70640e71f1 | |||
| 1ee64091b3 | |||
| 7b33499811 | |||
| d94bae241c | |||
| 58a623778f | |||
| 494ba9a635 | |||
| 95fa43aa96 | |||
| 16af8a4739 | |||
| 57202d958a | |||
| d741f6f5f2 | |||
| 20b4deffe3 | |||
| ee3796b925 | |||
| 8e08703833 | |||
| 3b716d2cb0 | |||
| 0f51a03d08 | |||
| 20247af6f6 | |||
| 2698024b82 | |||
| a142dc4b11 | |||
| 2844a2d73e | |||
| 160cd11c83 | |||
| 4fdebd296a | |||
| b18f622984 | |||
| f61607df65 | |||
| 5d0c0eb03d | |||
| ef1d9a0723 | |||
| 5465e7ed2f | |||
| 7edd9e3766 | |||
| 7a6425544c | |||
| 97e7f25e6e | |||
| 916653e234 | |||
| 6db228fcb3 | |||
| c2821be94c | |||
| 999d0af502 | |||
| 78c09789f7 | |||
| 5a8f1ca528 | |||
| 2d38d48a55 | |||
| dcc5d8704f | |||
| c10e4fa275 | |||
| e462f0a584 | |||
| 45bbbd0284 | |||
| 5b0f0d8352 | |||
| 54916caf65 | |||
| c8afb5ceb6 | |||
| b3374e1f99 | |||
| 4914b33f8c | |||
| 0ec69f0279 | |||
| 6f565147cb | |||
| f8a02f5d9d | |||
| 327dc31e62 | |||
| f77a163341 | |||
| c280d172b1 | |||
| b860a25c82 | |||
| ab2b499869 | |||
| 0a55e07326 | |||
| 22cc7cedff | |||
| cdbfd91ec4 | |||
| 9359bab677 | |||
| 0e93f70e38 | |||
| 10905b0447 | |||
| 4468c87115 | |||
| 4b83ec1204 | |||
| 03e62308e2 | |||
| c0dafc074d | |||
| 3bb89010fe | |||
| 3e4ebfae7e | |||
| c64df48978 | |||
| 1c74bb7131 | |||
| f577715468 | |||
| 1cd4f730b9 | |||
| edae3c9cc5 | |||
| 815030a4f0 | |||
| 82bd7e5d5b | |||
| 453d504fb7 | |||
| 627564983b | |||
| 7e8b59a0aa | |||
| 9bf37d7fdf | |||
| 02830a8b76 | |||
| d8f01080ce | |||
| 1f88a26f60 | |||
| c6f2d0c3eb | |||
| 13e1307ab1 | |||
| f6c6ff561a | |||
| c4d45ec08c | |||
| 7008ae231c | |||
| 14c8e1226f | |||
| 8b78d27f30 | |||
| 2fbd447f64 | |||
| 14d82fa600 | |||
| 33fc320f1d | |||
| 9fbea40721 | |||
| 9525978f26 | |||
| 75a4e23996 | |||
| 404ae56e07 | |||
| 2946df357c | |||
| 5318bf3743 | |||
| 0f43c2c528 | |||
| b5da0ffd7e | |||
| 7ee018ad23 | |||
| 31884f6c9d | |||
| c46bf7d56b | |||
| 1b155ed6e7 | |||
| e648cd7397 | |||
| 3c248745e5 | |||
| c45b526ec3 | |||
| bf1600891b | |||
| b139eb2fb3 | |||
| 9bd4f60c8a | |||
| ca5d5f3b4c | |||
| 7209486386 | |||
| bb8bdf57b3 | |||
| c8bec07c45 | |||
| b41ce8828c | |||
| 3720b42b0f | |||
| 69be0abdba | |||
| 09f5e2aa03 | |||
| 7da033f733 | |||
| 14871c54ac | |||
| 3c16f21413 | |||
| 14d87cb5e9 | |||
| 72ecf91f08 | |||
| 4bc57f76eb | |||
| 18c9f5eedf | |||
| 4495f0f0b9 | |||
| fad14ff319 | |||
| 8cb7ff7a88 | |||
| 96929a5084 | |||
| 1f194e417d | |||
| e3fd120fd4 | |||
| 7b8bd960c6 | |||
| d147c733bb | |||
| 3d7fa15be7 | |||
| 6a0b01fe7f | |||
| 2d79a69719 | |||
| a51e777c56 | |||
| 1c3a7b7c96 | |||
| 26ee3141a9 | |||
| 75c0443df2 | |||
| 5eab8450e7 | |||
| 22d76bd1a4 | |||
| bb397bb424 | |||
| b3d9c0d1f7 | |||
| d3aeed839d | |||
| c0b364839c | |||
| 6a6b771e0b | |||
| 58e28e82bb | |||
| d6e9e03422 | |||
| fca41796c0 | |||
| b1fec7dc29 | |||
| 8c5b312601 | |||
| ee3ecc6cc0 | |||
| f708bbe2e8 | |||
| f7004f793d | |||
| 5c3b3d22db | |||
| cfd1c710f2 | |||
| 601a61249e | |||
| 8180b6b54e | |||
| a260270483 | |||
| 9b9a2d380b | |||
| 5ec8cf9e09 | |||
| 248d8b8aff | |||
| f1fe3ce5dc | |||
| 5eb766e2d2 | |||
| 6e0161470e | |||
| e4225174d5 | |||
| faaee94060 | |||
| 3516d2053c | |||
| b977320091 | |||
| bb87b6f948 | |||
| 07d28c3898 | |||
| 6c2bd91f01 | |||
| b6f86187f3 | |||
| 8098b83114 | |||
| e4155b6f16 | |||
| 50ebe2e415 | |||
| adfcbfdcba | |||
| cfdd3aa4f8 | |||
| 0b55ded612 | |||
| 5af7532504 | |||
| e0101338af | |||
| 6efdbb17e4 | |||
| 5212b0aaa6 | |||
| a4b06df604 | |||
| c5f0dc6e5b | |||
| 72cf63c0a8 | |||
| bc08e75f75 | |||
| 9b1da6f5f5 | |||
| 2c06f48b6b | |||
| 3d1efd14dc | |||
| 7fc500dae6 | |||
| b6d90cc55c | |||
| e1a79ba1b0 | |||
| d01cd2976b | |||
| f98453fd28 | |||
| 1b559daef2 | |||
| db7197925c | |||
| 8232fb767c | |||
| 59d5cf4d47 | |||
| aff1a62607 | |||
| ea253ba914 | |||
| 95c157409b | |||
| 3906b5300c | |||
| 34f9eaa8e9 | |||
| 83cea3c23e | |||
| f96502607d | |||
| 1f492a4c8a | |||
| 557b9858c6 | |||
| 50f74c932b | |||
| 446cb485ac | |||
| 402b301eb5 | |||
| 3a371bfbe5 | |||
| a670451447 | |||
| 9be3d948b2 | |||
| d9588feae5 | |||
| 7844d86ea3 | |||
| e919171393 | |||
| d7087c3952 | |||
| 3bf51a0994 | |||
| 6f026ca26d | |||
| 4132aedb9c | |||
| b8178c79a7 | |||
| aefe3f8585 | |||
| cdb286d1d1 | |||
| c056002f7c | |||
| 1f60f5d8af | |||
| bd08f408ca | |||
| 3cf5ceb106 | |||
| 705f401961 | |||
| ac24d6ee9f | |||
| cb6322a3a7 | |||
| 9c221848d7 | |||
| 2f3063def6 | |||
| 9f851008f6 | |||
| 1b7502acbc | |||
| 2ab7da1e8f | |||
| 371c0777bb | |||
| 538eeb3d6f | |||
| 8d052fe339 | |||
| 65c5208905 | |||
| 778c84dac9 | |||
| 28186ddf19 | |||
| 8dfe7e977a | |||
| b345632a9a | |||
| 34e615d854 | |||
| d8d9ef32ad | |||
| a9ed26e484 | |||
| a76531b90b | |||
| d64e453364 | |||
| af9d642a71 | |||
| 6a659d7475 | |||
| 7da81249f8 | |||
| 8214a4fa79 | |||
| e048bc6712 | |||
| e5cad9be65 | |||
| 1dc0ecd1e9 | |||
| 0c09599d7b | |||
| e95ae66d3c | |||
| 5f9d480f6a | |||
| d34227cae1 | |||
| 72867f8d1e | |||
| 8f04491a4d | |||
| 0371b0f664 | |||
| 02cc212f16 | |||
| 0fe64674ee | |||
| e937ff62fe | |||
| d75d69d5d5 | |||
| f48f9fee2e | |||
| 5c6ffaafd6 | |||
| 3581d90d9d | |||
| 9e1f3862cb | |||
| c2a3f037bb | |||
| bf1aacefcb | |||
| e306cb0797 | |||
| 1c6221d8a0 | |||
| 2e8023158d | |||
| ff98cb4e15 | |||
| 0f01019e06 | |||
| f9b8dfd400 | |||
| 81e872c110 | |||
| 9ed2ca5079 | |||
| e7e9ca54df | |||
| 23a18b1a60 | |||
| 0a88f9c8a9 | |||
| de51ba331e | |||
| d37b2f851d | |||
| f40c5c304d | |||
| 37c75f556d | |||
| ec61c2f3dc | |||
| d02c7d3b3b | |||
| a2dfd2e0b9 | |||
| b4ea1625e4 | |||
| 7655e10ba4 | |||
| b64fff1faa | |||
| f1e04639bb | |||
| 73dbd34f95 | |||
| 6bbae4cea2 | |||
| b95d67aefb | |||
| 73f8aded17 | |||
| fdda572c9a | |||
| e4d6007293 | |||
| df58ee924f | |||
| d9c1befbfc | |||
| b173ca2fd0 | |||
| 27ed8f5647 | |||
| 714bc2d329 | |||
| d9cb6d1af7 | |||
| 583dd15beb | |||
| 604cc9bb3a | |||
| 0fc1aea379 | |||
| 385af01587 | |||
| d9feed54a9 | |||
| b89f3c442c | |||
| 9629601d0b | |||
| e9a053f7ac | |||
| a75966f1a2 | |||
| 43f813d6f8 | |||
| eada3b6e93 | |||
| 90e0293df3 | |||
| bd11a00f8f | |||
| 54af08799d | |||
| b71708aab9 | |||
| a3be28b5c4 | |||
| 743b25448a | |||
| 66c2f45bff | |||
| 8d969a4a9f | |||
| bf62cf3db6 | |||
| 8daea451e3 | |||
| 864188ad65 | |||
| 65260e2449 | |||
| b9926c6796 | |||
| e7575ab63f | |||
| 92913389a5 | |||
| 65be619907 | |||
| ee76581b49 | |||
| 842ec1494c | |||
| 8aa0f7073f | |||
| 8a645a2d3d | |||
| 4a54395561 | |||
| b109c5927e | |||
| 23beaa9fad | |||
| 839229b5f0 | |||
| b89b0f140a | |||
| 09454e1658 | |||
| 828c0ad1e0 | |||
| 87bbd9cb02 | |||
| 70507a694c | |||
| 1b168e7d5c | |||
| d5935fd1ad | |||
| 2bcd2c38a9 | |||
| 042cddb768 | |||
| e0b7fd72af | |||
| 9c5e4454e4 | |||
| 7fe0b8d274 | |||
| 90ca689123 | |||
| db2825342c | |||
| bc1de531cc | |||
| 2ea5f7856c | |||
| e5b66aadaf | |||
| cff7c4c100 | |||
| e30592c050 | |||
| ff92dab49e | |||
| f652f8c8d6 | |||
| 80a502782b | |||
| 3bf7fbc117 | |||
| 0ff5b44d15 | |||
| 61926a44be | |||
| ec5f369d9d | |||
| dbebcd08c7 | |||
| 768460b518 | |||
| 515dfc002b | |||
| 16645a3c0a | |||
| 38949bdeea | |||
| 5f3457dbd6 | |||
| b9108c4650 | |||
| a54c667c80 | |||
| bcd2cd7e93 | |||
| 337ba42953 | |||
| 4f5c00a83d | |||
| c6bbdafe92 | |||
| f2e81ed2a0 | |||
| 7efc208b9e | |||
| 266691f929 | |||
| 482917348b | |||
| 945a5cd09c | |||
| 9ea51d3295 | |||
| 77308e6aff | |||
| b0c6caa60e | |||
| 3cfc5c9633 | |||
| cd336369a5 | |||
| c62956ab7b | |||
| 1d7e29765e | |||
| c0f7008e96 | |||
| 2ca5712507 | |||
| 7a37483307 | |||
| 21312c79aa | |||
| 56d00e427d | |||
| 7bb4da2fee | |||
| f19b975e8d | |||
| 83fa637569 | |||
| 858bfb4b80 | |||
| 42c82c9e72 | |||
| 8efdd439f1 | |||
| 70977cbb13 | |||
| ad31fbee1e | |||
| 6f54b6ae3b | |||
| e94b89a57d | |||
| 44528d3fef | |||
| 4580feaa3c | |||
| f3b8dc9c0b | |||
| 9d923e8e6d | |||
| c861fa6a6a | |||
| d7d8085d3b | |||
| 5e70a47f20 | |||
| e286bb23db | |||
| 2c42bd07c8 | |||
| 2001540143 | |||
| d88a32992a | |||
| 64c09c20eb | |||
| c990704418 | |||
| edf5b3c7f0 | |||
| e5a2d42484 | |||
| 51e45516a4 | |||
| 41b06cb79e | |||
| d8509aec12 | |||
| 5649e35a64 | |||
| 865074603c | |||
| 6d13120e69 | |||
| e6a3b1fa68 | |||
| df66fa6a48 | |||
| 5d499c7173 | |||
| b1e967eaf3 | |||
| 151fa2ec50 | |||
| e4de03f3df | |||
| 724d09a510 | |||
| fba6a64648 | |||
| 0539637d30 | |||
| 4a7d42647f | |||
| b56663ef07 | |||
| 25597a4326 | |||
| 56c8f6b280 | |||
| abc3260e75 | |||
| 24a11fc8e8 | |||
| 6eb2f07274 | |||
| 9cd47d7085 | |||
| 69d1d62add | |||
| 3db9459591 | |||
| 6320dfd34e | |||
| 055fe744d3 | |||
| d7c696f97c | |||
| fc444ce503 | |||
| 88f392721b | |||
| c55e7b8499 | |||
| 1f7ca91670 | |||
| d9131c854d | |||
| 09a87f5a0c | |||
| 1db70edcf8 | |||
| 1a3533e4a2 | |||
| 3db9de26e9 | |||
| 78f0439e78 | |||
| b124e911d3 | |||
| c836dc66a8 | |||
| b1b3c4cdcf | |||
| b0f95975c2 | |||
| 2e48c24638 | |||
| 7359eb6246 | |||
| 99d21bca49 | |||
| 1b98084918 | |||
| d311eaf8f3 | |||
| 0355e15a42 | |||
| 101f7a6d63 | |||
| 4aa85c538c | |||
| 22980ed8a5 | |||
| cb1c0a3188 | |||
| 0705695e02 | |||
| c11922e2a2 | |||
| 37226dd41f | |||
| cd0b65f4d5 | |||
| b7c088d4b0 | |||
| e197b25e82 | |||
| b02506eaaf | |||
| 8694517c34 | |||
| 2febd1c220 | |||
| aa0ed37034 | |||
| da18245d9a | |||
| 5cc9a1fe44 | |||
| de0aead1cd | |||
| 624ba7e94f | |||
| 9bb3aee0e2 | |||
| 16585713f8 | |||
| e01e528235 | |||
| eac7e3488c | |||
| 762486d199 | |||
| 23493ce239 | |||
| 510ab53341 | |||
| 220cf73318 | |||
| f6d102f5e2 | |||
| 05b68764cc | |||
| 4e51e82ccf | |||
| 116fa8e9ca | |||
| ce6fd654a0 | |||
| 5ee2f48aea | |||
| ccb47a67c4 | |||
| a2e6d8bb6b | |||
| 1bd560f3f2 | |||
| 222bb1d55d | |||
| a5ea3fa282 | |||
| 6c52438128 | |||
| 0508dce2ed | |||
| 87dda1b638 | |||
| 5ec214386e | |||
| 73ba38ae35 | |||
| 1ffa9a0cf5 | |||
| 633b362577 | |||
| 150b7e7219 | |||
| e6065bf08f | |||
| c2aa5f77bf | |||
| 7caec56e96 | |||
| 97354426cf | |||
| 63e3fb92d1 | |||
| a2d1ffffe6 | |||
| f17d4c0adc | |||
| 92a09fdb71 | |||
| 039d786e1f | |||
| 2d707cc0d2 | |||
| 0a88d03dc9 | |||
| f12ee28660 | |||
| 260c289d34 | |||
| d8899ca9ac | |||
| 1e456065f6 | |||
| 82074190fb | |||
| 6fe7c5cac5 | |||
| e9d1201ea8 | |||
| 9a89b360c0 | |||
| b39a1e2d74 | |||
| 151b818af4 | |||
| df47e2a93f | |||
| d0e93f9219 | |||
| 47c5aba1e5 | |||
| 00abf5d42c | |||
| 9c25d1024a | |||
| ee736b1ab7 | |||
| 065e96d24b | |||
| 5f075f316f | |||
| a5987800c7 | |||
| 357e7e117d | |||
| 3947e64524 | |||
| e234ced107 | |||
| f0ba506fde | |||
| a19fdb717b | |||
| 9e1973a238 | |||
| e7c84b81b2 | |||
| 66a84b8d2b | |||
| 5574b21dd6 | |||
| b2f536ec8b | |||
| 87ea71c3c9 | |||
| fdb7e3e3fa | |||
| 2d32c66fd7 | |||
| 20c0fed457 | |||
| 75094df25e | |||
| 299360c8ed | |||
| ac8363095c | |||
| fb797fe071 | |||
| eb6449506f | |||
| 0ad2d2120c | |||
| 640f4bed82 | |||
| 453f6b0189 | |||
| 243dc06733 | |||
| ec035e3c41 | |||
| 430b9bef38 | |||
| ff193a1a6f | |||
| 74c01caf08 | |||
| a8f6c1db1d | |||
| 919c9d6fb1 | |||
| 6531fbb0f3 | |||
| f341699250 | |||
| 9f7daad46f | |||
| 06fe5c8cfe | |||
| 51745f696f | |||
| a9383597af | |||
| 4c61e465ca | |||
| 97da380acd | |||
| c40d8fe11b | |||
| 0e96d64e60 | |||
| 19e47375df | |||
| 248cc2d013 | |||
| 00ccb119ea | |||
| 8eccbade56 | |||
| bbe404abcc | |||
| c396271c00 | |||
| 4b3a1ec614 | |||
| 869826c818 | |||
| 24ac62eabd | |||
| f9120f75b0 | |||
| fbab446c24 | |||
| 142c2a2cf2 | |||
| 86742ee528 | |||
| 6e68ca2211 | |||
| 71c44bff8b | |||
| a9f3fd2179 | |||
| 2a35cadf80 | |||
| 910f6aa290 | |||
| de91618070 | |||
| 650bdae5d9 | |||
| 33a16090d3 | |||
| b47a2e9626 | |||
| 925998c360 | |||
| f6d7af1a2b | |||
| 3826a9ed58 | |||
| b7b76cc38b | |||
| 94b74c0cbe | |||
| c48e972573 | |||
| bb26d7c379 | |||
| 3a46612d88 | |||
| a420eb1f72 | |||
| a81324fc43 | |||
| 116c33f7e1 | |||
| 3e5ab8082b | |||
| 72f6835feb | |||
| 86c4f76c51 | |||
| f51ba687e2 | |||
| e2b79ea0b6 | |||
| a202818037 | |||
| b2651dae0f | |||
| f981a2ef17 | |||
| 02cb3d93fd | |||
| c7470f5107 | |||
| 7eda35b945 | |||
| e8fe68543e | |||
| f1a35cc9ac | |||
| 516950fb1e | |||
| e3962aea6e | |||
| c604bdb897 | |||
| d300a87059 | |||
| 1e30b85861 | |||
| 86bb77bfc2 | |||
| b5d4b86724 | |||
| e388805049 | |||
| 7a85e51237 | |||
| a23b6fb7ec | |||
| 9ff6cc25dc | |||
| e4a8afb15d | |||
| b1d458999a | |||
| a98e443501 | |||
| 9822535e70 | |||
| 3821208bb1 | |||
| e7a20d9fc5 | |||
| 211cc80fd4 | |||
| 8d571adca8 | |||
| 584a4b0a2b | |||
| 9df26a5740 | |||
| 5d549dca96 | |||
| 949e71efb6 | |||
| 20205c66c1 | |||
| 7fc272918a | |||
| 6ca5691792 | |||
| 0673b068e0 | |||
| 00c77dadd3 | |||
| c49edaca19 | |||
| 8f7fa38949 | |||
| 47d0eed3f1 | |||
| 026394a314 |
@@ -0,0 +1,4 @@
|
||||
# Update the VARIANT arg to pick an Elixir version: latest, 1.11.4, etc.
|
||||
ARG VARIANT=latest
|
||||
|
||||
FROM ghcr.io/processone/elixir:${VARIANT}
|
||||
@@ -0,0 +1,48 @@
|
||||
{
|
||||
"name": "ejabberd",
|
||||
// "dockerComposeFile": "docker-compose.yml",
|
||||
"build": {
|
||||
"dockerfile": "Dockerfile",
|
||||
"args": {
|
||||
"VARIANT": "latest" // 1.11.4
|
||||
}
|
||||
},
|
||||
"workspaceFolder": "/workspace",
|
||||
|
||||
// Set *default* container specific settings.json values on container create.
|
||||
"settings": {
|
||||
"terminal.integrated.defaultProfile.linux": "/bin/zsh",
|
||||
},
|
||||
|
||||
// Add the IDs of extensions you want installed when the container is created.
|
||||
"extensions": ["pgourlain.erlang", "jakebecker.elixir-ls"],
|
||||
|
||||
// Use 'forwardPorts' to make a list of ports inside the container available locally.
|
||||
"forwardPorts": [5222, 5280, 5269],
|
||||
|
||||
// Use 'postCreateCommand' to run commands after the container is created.
|
||||
// "postCreateCommand": "sh .devcontainer/post-create.sh",
|
||||
|
||||
// Uncomment to connect as a non-root user. See https://aka.ms/vscode-remote/containers/non-root.
|
||||
"remoteUser": "vscode",
|
||||
"portsAttributes": {
|
||||
"1883": {
|
||||
"label": "MQTT"
|
||||
},
|
||||
"5222": {
|
||||
"label": "XMPP C2S"
|
||||
},
|
||||
"5223": {
|
||||
"label": "Legacy XMPP C2S"
|
||||
},
|
||||
"5269": {
|
||||
"label": "XMPP S2S"
|
||||
},
|
||||
"5280": {
|
||||
"label": "ejabberd HTTP"
|
||||
},
|
||||
"5443": {
|
||||
"label": "ejabberd HTTPS"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
ejabberd:
|
||||
image: ejabberd/ecs
|
||||
ports:
|
||||
- 5222:5222
|
||||
- 5223:5223
|
||||
- 5269:5269
|
||||
- 5280:5280
|
||||
- 1883:1883
|
||||
@@ -2,11 +2,13 @@
|
||||
name: Bug report
|
||||
about: Create a report to help us improve
|
||||
title: ''
|
||||
labels: Kind:Bug
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
Before creating a ticket, please consider if this should fit the discussion forum better:
|
||||
https://github.com/processone/ejabberd/discussions
|
||||
|
||||
## Environment
|
||||
|
||||
- ejabberd version: 18.09
|
||||
|
||||
@@ -7,6 +7,9 @@ assignees: ''
|
||||
|
||||
---
|
||||
|
||||
Before creating a ticket, please consider if this should fit the discussion forum better:
|
||||
https://github.com/processone/ejabberd/discussions
|
||||
|
||||
**Is your feature request related to a problem? Please describe.**
|
||||
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
|
||||
|
||||
|
||||
@@ -0,0 +1,117 @@
|
||||
FROM alpine:3.15.4 AS build
|
||||
ARG VERSION=master
|
||||
|
||||
RUN apk upgrade --update musl \
|
||||
&& apk add \
|
||||
autoconf \
|
||||
automake \
|
||||
bash \
|
||||
build-base \
|
||||
curl \
|
||||
elixir \
|
||||
erlang-odbc \
|
||||
erlang-reltool \
|
||||
expat-dev \
|
||||
file \
|
||||
gd-dev \
|
||||
git \
|
||||
jpeg-dev \
|
||||
libpng-dev \
|
||||
libwebp-dev \
|
||||
linux-pam-dev \
|
||||
openssl \
|
||||
openssl-dev \
|
||||
sqlite-dev \
|
||||
yaml-dev \
|
||||
zlib-dev
|
||||
|
||||
RUN mix local.hex --force \
|
||||
&& mix local.rebar --force
|
||||
|
||||
WORKDIR ejabberd
|
||||
|
||||
RUN git clone https://github.com/processone/ejabberd.git . \
|
||||
&& git checkout $VERSION \
|
||||
&& mv .github/container/ejabberdctl.template . \
|
||||
&& ./autogen.sh \
|
||||
&& ./configure --with-rebar=mix --enable-all \
|
||||
&& mix deps.get \
|
||||
&& make rel
|
||||
|
||||
RUN cp -r _build/prod/rel/ejabberd/ /opt/ejabberd-$VERSION \
|
||||
&& mkdir -p /opt/ejabberd \
|
||||
&& mv /opt/ejabberd-$VERSION/conf /opt/ejabberd/conf
|
||||
|
||||
RUN DESCRIBE=$(git describe --tags) \
|
||||
&& MIXVER=$(echo $DESCRIBE.0 | sed -e 's/-g.*//' -e 's/-/./' | tr -d '[:space:]') \
|
||||
&& mkdir /opt/ejabberd-$VERSION/lib/ejabberd-$MIXVER/priv/bin \
|
||||
&& cp tools/captcha*.sh /opt/ejabberd-$VERSION/lib/ejabberd-$MIXVER/priv/bin/
|
||||
|
||||
RUN export PEM=/opt/ejabberd/conf/server.pem \
|
||||
&& curl -o "/opt/ejabberd/conf/cacert.pem" 'https://curl.se/ca/cacert.pem' \
|
||||
&& openssl req -x509 \
|
||||
-batch \
|
||||
-nodes \
|
||||
-newkey rsa:4096 \
|
||||
-keyout $PEM \
|
||||
-out $PEM \
|
||||
-days 3650 \
|
||||
-subj "/CN=localhost" \
|
||||
&& sed -i '/^loglevel:/a \ \
|
||||
\nca_file: /opt/ejabberd/conf/cacert.pem \
|
||||
\ncertfiles: \
|
||||
\n - /opt/ejabberd/conf/server.pem' "/opt/ejabberd/conf/ejabberd.yml"
|
||||
|
||||
FROM alpine:3.15.4
|
||||
ENV HOME=/opt/ejabberd
|
||||
|
||||
RUN apk upgrade --update musl \
|
||||
&& apk add \
|
||||
expat \
|
||||
freetds \
|
||||
gd \
|
||||
jpeg \
|
||||
libgd \
|
||||
libpng \
|
||||
libstdc++ \
|
||||
libwebp \
|
||||
linux-pam \
|
||||
ncurses-libs \
|
||||
openssl \
|
||||
sqlite \
|
||||
sqlite-libs \
|
||||
unixodbc \
|
||||
yaml \
|
||||
zlib \
|
||||
&& ln -fs /usr/lib/libtdsodbc.so.0 /usr/lib/libtdsodbc.so \
|
||||
&& rm -rf /var/cache/apk/*
|
||||
|
||||
COPY --from=build /opt /opt
|
||||
RUN echo -e \
|
||||
"#!/bin/sh \
|
||||
\n[ -z \$ERLANG_NODE_ARG ] && export ERLANG_NODE_ARG=ejabberd@localhost \
|
||||
\nexport CONFIG_DIR=/opt/ejabberd/conf \
|
||||
\nexport LOGS_DIR=/opt/ejabberd/logs \
|
||||
\nexport SPOOL_DIR=/opt/ejabberd/database \
|
||||
\nexec $(find /opt -name ejabberdctl) \"\$@\"" > /usr/local/bin/ejabberdctl \
|
||||
&& chmod +x /usr/local/bin/ejabberdctl
|
||||
|
||||
RUN addgroup ejabberd -g 9000 \
|
||||
&& adduser -s /bin/sh -D -G ejabberd ejabberd -u 9000 \
|
||||
&& mkdir -p $HOME/conf $HOME/database $HOME/logs $HOME/upload \
|
||||
&& chown -R ejabberd:ejabberd $HOME
|
||||
|
||||
HEALTHCHECK \
|
||||
--interval=5s \
|
||||
--timeout=5s \
|
||||
--start-period=5s \
|
||||
--retries=120 \
|
||||
CMD /usr/local/bin/ejabberdctl status
|
||||
|
||||
WORKDIR $HOME
|
||||
USER ejabberd
|
||||
VOLUME ["$HOME/conf", "$HOME/database", "$HOME/logs", "$HOME/upload"]
|
||||
EXPOSE 1883 4369-4399 5222 5269 5280 5443
|
||||
|
||||
ENTRYPOINT ["/usr/local/bin/ejabberdctl"]
|
||||
CMD ["foreground"]
|
||||
Executable
+369
@@ -0,0 +1,369 @@
|
||||
#!/bin/sh
|
||||
|
||||
# define default configuration
|
||||
POLL=true
|
||||
ERL_MAX_PORTS=32000
|
||||
ERL_PROCESSES=250000
|
||||
ERL_MAX_ETS_TABLES=1400
|
||||
FIREWALL_WINDOW=""
|
||||
INET_DIST_INTERFACE=""
|
||||
ERLANG_NODE=ejabberd@localhost
|
||||
|
||||
# define default environment variables
|
||||
[ -z "$SCRIPT" ] && SCRIPT=$0
|
||||
SCRIPT_DIR="$(cd "$(dirname "$SCRIPT")" && pwd -P)"
|
||||
# shellcheck disable=SC2034
|
||||
ERTS_VSN="{{erts_vsn}}"
|
||||
ERL="{{erl}}"
|
||||
IEX="{{bindir}}/iex"
|
||||
EPMD="{{epmd}}"
|
||||
[ -z "$ERLANG_COOKIE" ] && ERL_OPTIONS="-setcookie $(cat "${SCRIPT_DIR%/*}/releases/COOKIE")"
|
||||
[ -n "$ERLANG_COOKIE" ] && [ ! -f "$HOME"/.erlang.cookie ] && echo "$ERLANG_COOKIE" > "$HOME"/.erlang.cookie && chmod 400 "$HOME"/.erlang.cookie
|
||||
|
||||
# check the proper system user is used
|
||||
case $(id -un) in
|
||||
"$INSTALLUSER")
|
||||
EXEC_CMD="as_current_user"
|
||||
;;
|
||||
root)
|
||||
if [ -n "$INSTALLUSER" ] ; then
|
||||
EXEC_CMD="as_install_user"
|
||||
else
|
||||
EXEC_CMD="as_current_user"
|
||||
echo "WARNING: It is not recommended to run ejabberd as root" >&2
|
||||
fi
|
||||
;;
|
||||
*)
|
||||
if [ -n "$INSTALLUSER" ] ; then
|
||||
echo "ERROR: This command can only be run by root or the user $INSTALLUSER" >&2
|
||||
exit 7
|
||||
else
|
||||
EXEC_CMD="as_current_user"
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
# parse command line parameters
|
||||
while [ $# -gt 0 ]; do
|
||||
case $1 in
|
||||
-n|--node) ERLANG_NODE_ARG=$2; shift 2;;
|
||||
-s|--spool) SPOOL_DIR=$2; shift 2;;
|
||||
-l|--logs) LOGS_DIR=$2; shift 2;;
|
||||
-f|--config) EJABBERD_CONFIG_PATH=$2; shift 2;;
|
||||
-c|--ctl-config) EJABBERDCTL_CONFIG_PATH=$2; shift 2;;
|
||||
-d|--config-dir) CONFIG_DIR=$2; shift 2;;
|
||||
-t|--no-timeout) NO_TIMEOUT="--no-timeout"; shift;;
|
||||
*) break;;
|
||||
esac
|
||||
done
|
||||
|
||||
# define ejabberd variables if not already defined from the command line
|
||||
: "${CONFIG_DIR:="{{config_dir}}"}"
|
||||
: "${LOGS_DIR:="{{logs_dir}}"}"
|
||||
: "${SPOOL_DIR:="{{spool_dir}}"}"
|
||||
: "${EJABBERD_CONFIG_PATH:="$CONFIG_DIR/ejabberd.yml"}"
|
||||
: "${EJABBERDCTL_CONFIG_PATH:="$CONFIG_DIR/ejabberdctl.cfg"}"
|
||||
# Allows passing extra Erlang command-line arguments in vm.args file
|
||||
: "${VMARGS:="$CONFIG_DIR/vm.args"}"
|
||||
# shellcheck source=ejabberdctl.cfg.example
|
||||
[ -f "$EJABBERDCTL_CONFIG_PATH" ] && . "$EJABBERDCTL_CONFIG_PATH"
|
||||
[ -n "$ERLANG_NODE_ARG" ] && ERLANG_NODE="$ERLANG_NODE_ARG"
|
||||
[ "$ERLANG_NODE" = "${ERLANG_NODE%.*}" ] && S="-s"
|
||||
: "${EJABBERD_LOG_PATH:="$LOGS_DIR/ejabberd.log"}"
|
||||
|
||||
# define erl parameters
|
||||
ERLANG_OPTS="+K $POLL +P $ERL_PROCESSES $ERL_OPTIONS"
|
||||
if [ -n "$FIREWALL_WINDOW" ] ; then
|
||||
ERLANG_OPTS="$ERLANG_OPTS -kernel inet_dist_listen_min ${FIREWALL_WINDOW%-*} inet_dist_listen_max ${FIREWALL_WINDOW#*-}"
|
||||
fi
|
||||
if [ -n "$INET_DIST_INTERFACE" ] ; then
|
||||
INET_DIST_INTERFACE2=$("$ERL" -noshell -eval 'case inet:parse_address("'$INET_DIST_INTERFACE'") of {ok,IP} -> io:format("~p",[IP]); _ -> ok end.' -s erlang halt)
|
||||
if [ -n "$INET_DIST_INTERFACE2" ] ; then
|
||||
ERLANG_OPTS="$ERLANG_OPTS -kernel inet_dist_use_interface $INET_DIST_INTERFACE2"
|
||||
fi
|
||||
fi
|
||||
# if vm.args file exists in config directory, pass it to Erlang VM
|
||||
[ -f "$VMARGS" ] && ERLANG_OPTS="$ERLANG_OPTS -args_file $VMARGS"
|
||||
ERL_LIBS='{{libdir}}'
|
||||
ERL_CRASH_DUMP="$LOGS_DIR"/erl_crash_$(date "+%Y%m%d-%H%M%S").dump
|
||||
ERL_INETRC="$CONFIG_DIR"/inetrc
|
||||
|
||||
# define ejabberd parameters
|
||||
EJABBERD_OPTS="$EJABBERD_OPTS\
|
||||
$(sed '/^log_rotate_size/!d;s/:[ \t]*\([0-9]\{1,\}\).*/ \1/;s/:[ \t]*\(infinity\).*/ \1/;s/^/ /' "$EJABBERD_CONFIG_PATH")\
|
||||
$(sed '/^log_rotate_count/!d;s/:[ \t]*\([0-9]*\).*/ \1/;s/^/ /' "$EJABBERD_CONFIG_PATH")"
|
||||
[ -n "$EJABBERD_OPTS" ] && EJABBERD_OPTS="-ejabberd $EJABBERD_OPTS"
|
||||
EJABBERD_OPTS="-mnesia dir \"$SPOOL_DIR\" $MNESIA_OPTIONS $EJABBERD_OPTS -s ejabberd"
|
||||
|
||||
# export global variables
|
||||
export EJABBERD_CONFIG_PATH
|
||||
export EJABBERD_LOG_PATH
|
||||
export EJABBERD_PID_PATH
|
||||
export ERL_CRASH_DUMP
|
||||
export ERL_EPMD_ADDRESS
|
||||
export ERL_INETRC
|
||||
export ERL_MAX_PORTS
|
||||
export ERL_MAX_ETS_TABLES
|
||||
export CONTRIB_MODULES_PATH
|
||||
export CONTRIB_MODULES_CONF_DIR
|
||||
export ERL_LIBS
|
||||
export SCRIPT_DIR
|
||||
|
||||
# run command either directly or via su $INSTALLUSER
|
||||
run_cmd()
|
||||
{
|
||||
case $EXEC_CMD in
|
||||
as_install_user) su -s /bin/sh -c '"$0" "$@"' "$INSTALLUSER" -- "$@" ;;
|
||||
as_current_user) "$@" ;;
|
||||
esac
|
||||
}
|
||||
exec_cmd()
|
||||
{
|
||||
case $EXEC_CMD in
|
||||
as_install_user) su -s /bin/sh -c '"$0" "$@"' "$INSTALLUSER" -- "$@" ;;
|
||||
as_current_user) exec "$@" ;;
|
||||
esac
|
||||
}
|
||||
run_erl()
|
||||
{
|
||||
NODE=$1; shift
|
||||
run_cmd "$ERL" ${S:--}name "$NODE" $ERLANG_OPTS "$@"
|
||||
}
|
||||
exec_erl()
|
||||
{
|
||||
NODE=$1; shift
|
||||
exec_cmd "$ERL" ${S:--}name "$NODE" $ERLANG_OPTS "$@"
|
||||
}
|
||||
exec_iex()
|
||||
{
|
||||
NODE=$1; shift
|
||||
exec_cmd "$IEX" -${S:--}name "$NODE" --erl "$ERLANG_OPTS" "$@"
|
||||
}
|
||||
|
||||
# usage
|
||||
debugwarning()
|
||||
{
|
||||
if [ "$EJABBERD_BYPASS_WARNINGS" != "true" ] ; then
|
||||
echo "--------------------------------------------------------------------"
|
||||
echo ""
|
||||
echo "IMPORTANT: we will attempt to attach an INTERACTIVE shell"
|
||||
echo "to an already running ejabberd node."
|
||||
echo "If an ERROR is printed, it means the connection was not successful."
|
||||
echo "You can interact with the ejabberd node if you know how to use it."
|
||||
echo "Please be extremely cautious with your actions,"
|
||||
echo "and exit immediately if you are not completely sure."
|
||||
echo ""
|
||||
echo "To detach this shell from ejabberd, press:"
|
||||
echo " control+c, control+c"
|
||||
echo ""
|
||||
echo "--------------------------------------------------------------------"
|
||||
echo "To bypass permanently this warning, add to ejabberdctl.cfg the line:"
|
||||
echo " EJABBERD_BYPASS_WARNINGS=true"
|
||||
echo "Press return to continue"
|
||||
read -r _
|
||||
echo ""
|
||||
fi
|
||||
}
|
||||
|
||||
livewarning()
|
||||
{
|
||||
if [ "$EJABBERD_BYPASS_WARNINGS" != "true" ] ; then
|
||||
echo "--------------------------------------------------------------------"
|
||||
echo ""
|
||||
echo "IMPORTANT: ejabberd is going to start in LIVE (interactive) mode."
|
||||
echo "All log messages will be shown in the command shell."
|
||||
echo "You can interact with the ejabberd node if you know how to use it."
|
||||
echo "Please be extremely cautious with your actions,"
|
||||
echo "and exit immediately if you are not completely sure."
|
||||
echo ""
|
||||
echo "To exit this LIVE mode and stop ejabberd, press:"
|
||||
echo " q(). and press the Enter key"
|
||||
echo ""
|
||||
echo "--------------------------------------------------------------------"
|
||||
echo "To bypass permanently this warning, add to ejabberdctl.cfg the line:"
|
||||
echo " EJABBERD_BYPASS_WARNINGS=true"
|
||||
echo "Press return to continue"
|
||||
read -r _
|
||||
echo ""
|
||||
fi
|
||||
}
|
||||
|
||||
help()
|
||||
{
|
||||
echo ""
|
||||
echo "Commands to start an ejabberd node:"
|
||||
echo " start Start in server mode"
|
||||
echo " foreground Start in server mode (attached)"
|
||||
echo " foreground-quiet Start in server mode (attached), show only critical messages"
|
||||
echo " live Start in interactive mode, with Erlang shell"
|
||||
echo " iexlive Start in interactive mode, with Elixir shell"
|
||||
echo ""
|
||||
echo "Commands to interact with a running ejabberd node:"
|
||||
echo " debug Attach an interactive Erlang shell to a running node"
|
||||
echo " iexdebug Attach an interactive Elixir shell to a running node"
|
||||
echo " etop Attach to a running node and start Erlang Top"
|
||||
echo " ping Send ping to the node, returns pong or pang"
|
||||
echo " started|stopped Wait for the node to fully start|stop"
|
||||
echo ""
|
||||
echo "Optional parameters when starting an ejabberd node:"
|
||||
echo " --config-dir dir Config ejabberd: $CONFIG_DIR"
|
||||
echo " --config file Config ejabberd: $EJABBERD_CONFIG_PATH"
|
||||
echo " --ctl-config file Config ejabberdctl: $EJABBERDCTL_CONFIG_PATH"
|
||||
echo " --logs dir Directory for logs: $LOGS_DIR"
|
||||
echo " --spool dir Database spool dir: $SPOOL_DIR"
|
||||
echo " --node nodename ejabberd node name: $ERLANG_NODE"
|
||||
echo ""
|
||||
}
|
||||
|
||||
# dynamic node name helper
|
||||
uid()
|
||||
{
|
||||
uuid=$(uuidgen 2>/dev/null)
|
||||
random=$(awk 'BEGIN { srand(); print int(rand()*32768) }' /dev/null)
|
||||
[ -z "$uuid" ] && [ -f /proc/sys/kernel/random/uuid ] && uuid=$(cat /proc/sys/kernel/random/uuid)
|
||||
[ -z "$uuid" ] && uuid=$(printf "%X" "${random:-$$}$(date +%M%S)")
|
||||
uuid=$(printf '%s' $uuid | sed 's/^\(...\).*$/\1/')
|
||||
[ $# -eq 0 ] && echo "${uuid}-${ERLANG_NODE}"
|
||||
[ $# -eq 1 ] && echo "${uuid}-${1}-${ERLANG_NODE}"
|
||||
[ $# -eq 2 ] && echo "${uuid}-${1}@${2}"
|
||||
}
|
||||
|
||||
# stop epmd if there is no other running node
|
||||
stop_epmd()
|
||||
{
|
||||
"$EPMD" -names 2>/dev/null | grep -q name || "$EPMD" -kill >/dev/null
|
||||
}
|
||||
|
||||
# make sure node not already running and node name unregistered
|
||||
# if all ok, ensure runtime directory exists and make it current directory
|
||||
check_start()
|
||||
{
|
||||
"$EPMD" -names 2>/dev/null | grep -q " ${ERLANG_NODE%@*} " && {
|
||||
pgrep -f "$ERLANG_NODE" >/dev/null && {
|
||||
echo "ERROR: The ejabberd node '$ERLANG_NODE' is already running."
|
||||
exit 4
|
||||
}
|
||||
pgrep beam >/dev/null && {
|
||||
echo "ERROR: The ejabberd node '$ERLANG_NODE' is registered,"
|
||||
echo " but no related beam process has been found."
|
||||
echo "Shutdown all other erlang nodes, and call 'epmd -kill'."
|
||||
exit 5
|
||||
}
|
||||
"$EPMD" -kill >/dev/null
|
||||
}
|
||||
}
|
||||
|
||||
post_waiter_fork()
|
||||
{
|
||||
(FIRST_RUN=$FIRST_RUN "$0" post_waiter)&
|
||||
}
|
||||
|
||||
post_waiter_waiting()
|
||||
{
|
||||
$0 started
|
||||
[ -n "$FIRST_RUN" ] && [ -n "$CTL_ON_CREATE" ] && (post_waiter_loop $CTL_ON_CREATE)
|
||||
[ -n "$CTL_ON_START" ] && post_waiter_loop $CTL_ON_START
|
||||
}
|
||||
|
||||
post_waiter_loop()
|
||||
{
|
||||
LIST=$@
|
||||
HEAD=${LIST%% ; *}
|
||||
TAIL=${LIST#* ; }
|
||||
echo ":> ejabberdctl $HEAD"
|
||||
$0 $HEAD
|
||||
[ "$HEAD" = "$TAIL" ] || post_waiter_loop $TAIL
|
||||
}
|
||||
|
||||
# allow sync calls
|
||||
wait_status()
|
||||
{
|
||||
# args: status try delay
|
||||
# return: 0 OK, 1 KO
|
||||
timeout="$2"
|
||||
status=4
|
||||
while [ "$status" -ne "$1" ] ; do
|
||||
sleep "$3"
|
||||
timeout=$((timeout - 1))
|
||||
if [ $timeout -eq 0 ] ; then
|
||||
status="$1"
|
||||
else
|
||||
run_erl "$(uid ctl)" -hidden -noinput -s ejabberd_ctl \
|
||||
-extra "$ERLANG_NODE" $NO_TIMEOUT status > /dev/null
|
||||
status="$?"
|
||||
fi
|
||||
done
|
||||
[ $timeout -gt 0 ]
|
||||
}
|
||||
|
||||
# ensure we can change current directory to SPOOL_DIR
|
||||
[ -f "$SPOOL_DIR/schema.DAT" ] || FIRST_RUN=true
|
||||
[ -d "$SPOOL_DIR" ] || run_cmd mkdir -p "$SPOOL_DIR"
|
||||
cd "$SPOOL_DIR" || {
|
||||
echo "ERROR: can not access directory $SPOOL_DIR"
|
||||
exit 6
|
||||
}
|
||||
|
||||
# main
|
||||
case $1 in
|
||||
start)
|
||||
check_start
|
||||
exec_erl "$ERLANG_NODE" $EJABBERD_OPTS -detached
|
||||
;;
|
||||
foreground)
|
||||
check_start
|
||||
post_waiter_fork
|
||||
exec_erl "$ERLANG_NODE" $EJABBERD_OPTS -noinput
|
||||
;;
|
||||
foreground-quiet)
|
||||
check_start
|
||||
exec_erl "$ERLANG_NODE" $EJABBERD_OPTS -noinput -ejabberd quiet true
|
||||
;;
|
||||
live)
|
||||
livewarning
|
||||
check_start
|
||||
exec_erl "$ERLANG_NODE" $EJABBERD_OPTS
|
||||
;;
|
||||
debug)
|
||||
debugwarning
|
||||
exec_erl "$(uid debug)" -hidden -remsh "$ERLANG_NODE"
|
||||
;;
|
||||
etop)
|
||||
exec_erl "$(uid top)" -hidden -node "$ERLANG_NODE" -s etop \
|
||||
-s erlang halt -output text
|
||||
;;
|
||||
iexdebug)
|
||||
debugwarning
|
||||
exec_iex "$(uid debug)" --remsh "$ERLANG_NODE"
|
||||
;;
|
||||
iexlive)
|
||||
livewarning
|
||||
exec_iex "$ERLANG_NODE" --erl "$EJABBERD_OPTS" --app ejabberd
|
||||
;;
|
||||
ping)
|
||||
PEER=${2:-$ERLANG_NODE}
|
||||
[ "$PEER" = "${PEER%.*}" ] && PS="-s"
|
||||
exec_cmd "$ERL" ${PS:--}name "$(uid ping "$(hostname $PS)")" $ERLANG_OPTS \
|
||||
-noinput -hidden -eval 'io:format("~p~n",[net_adm:ping('"'$PEER'"')])' \
|
||||
-s erlang halt -output text
|
||||
;;
|
||||
started)
|
||||
wait_status 0 30 2 # wait 30x2s before timeout
|
||||
;;
|
||||
stopped)
|
||||
wait_status 3 30 2 && stop_epmd # wait 30x2s before timeout
|
||||
;;
|
||||
post_waiter)
|
||||
post_waiter_waiting
|
||||
;;
|
||||
*)
|
||||
run_erl "$(uid ctl)" -hidden -noinput -s ejabberd_ctl \
|
||||
-extra "$ERLANG_NODE" $NO_TIMEOUT "$@"
|
||||
result=$?
|
||||
case $result in
|
||||
2|3) help;;
|
||||
*) :;;
|
||||
esac
|
||||
exit $result
|
||||
;;
|
||||
esac
|
||||
@@ -0,0 +1,18 @@
|
||||
version: 2
|
||||
|
||||
updates:
|
||||
|
||||
- package-ecosystem: "docker"
|
||||
directory: "/.github/container/"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
|
||||
- package-ecosystem: "github-actions"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
|
||||
- package-ecosystem: "mix"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
@@ -0,0 +1,281 @@
|
||||
name: CI
|
||||
|
||||
on:
|
||||
push:
|
||||
paths-ignore:
|
||||
- '.devcontainer/**'
|
||||
- 'examples/**'
|
||||
- 'lib/**'
|
||||
- 'man/**'
|
||||
- 'priv/**'
|
||||
- '**.md'
|
||||
pull_request:
|
||||
paths-ignore:
|
||||
- '.devcontainer/**'
|
||||
- 'examples/**'
|
||||
- 'lib/**'
|
||||
- 'man/**'
|
||||
- 'priv/**'
|
||||
- '**.md'
|
||||
|
||||
jobs:
|
||||
|
||||
tests:
|
||||
name: Tests
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
otp: ['19.3', '24', '25.0-rc3']
|
||||
include:
|
||||
- otp: '19.3'
|
||||
rebar: 2
|
||||
os: ubuntu-18.04
|
||||
- otp: '24'
|
||||
rebar: 3
|
||||
os: ubuntu-20.04
|
||||
- otp: '25.0-rc3'
|
||||
rebar: 3
|
||||
os: ubuntu-20.04
|
||||
runs-on: ${{ matrix.os }}
|
||||
services:
|
||||
redis:
|
||||
image: redis
|
||||
ports:
|
||||
- 6379:6379
|
||||
|
||||
steps:
|
||||
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Test shell scripts
|
||||
if: matrix.otp == 24
|
||||
run: |
|
||||
shellcheck test/ejabberd_SUITE_data/gencerts.sh
|
||||
shellcheck tools/captcha.sh
|
||||
shellcheck ejabberd.init.template
|
||||
shellcheck -x ejabberdctl.template
|
||||
|
||||
- name: Get specific Erlang/OTP
|
||||
uses: ErlGang/setup-erlang@master
|
||||
if: matrix.otp != 24
|
||||
with:
|
||||
otp-version: ${{ matrix.otp }}
|
||||
|
||||
- name: Get a compatible Rebar
|
||||
if: matrix.rebar == 2
|
||||
run: |
|
||||
rm rebar
|
||||
wget https://github.com/processone/ejabberd/raw/21.12/rebar
|
||||
chmod +x rebar
|
||||
|
||||
- name: Prepare databases
|
||||
run: |
|
||||
sudo systemctl start mysql.service
|
||||
sudo systemctl start postgresql.service
|
||||
mysql -u root -proot -e "CREATE USER 'ejabberd_test'@'localhost'
|
||||
IDENTIFIED BY 'ejabberd_test';"
|
||||
mysql -u root -proot -e "CREATE DATABASE ejabberd_test;"
|
||||
mysql -u root -proot -e "GRANT ALL ON ejabberd_test.*
|
||||
TO 'ejabberd_test'@'localhost';"
|
||||
mysql -u root -proot ejabberd_test < sql/mysql.sql
|
||||
pg_isready
|
||||
sudo -u postgres psql -c "CREATE USER ejabberd_test
|
||||
WITH PASSWORD 'ejabberd_test';"
|
||||
sudo -u postgres psql -c "CREATE DATABASE ejabberd_test;"
|
||||
sudo -u postgres psql ejabberd_test -f sql/pg.sql
|
||||
sudo -u postgres psql -c "GRANT ALL PRIVILEGES
|
||||
ON DATABASE ejabberd_test TO ejabberd_test;"
|
||||
sudo -u postgres psql ejabberd_test -c "GRANT ALL PRIVILEGES ON ALL
|
||||
TABLES IN SCHEMA public
|
||||
TO ejabberd_test;"
|
||||
sudo -u postgres psql ejabberd_test -c "GRANT ALL PRIVILEGES ON ALL
|
||||
SEQUENCES IN SCHEMA public
|
||||
TO ejabberd_test;"
|
||||
|
||||
- name: Prepare libraries
|
||||
run: |
|
||||
sudo apt-get -qq update
|
||||
sudo apt-get -qq install libexpat1-dev libgd-dev libpam0g-dev \
|
||||
libsqlite3-dev libwebp-dev libyaml-dev
|
||||
|
||||
- name: Prepare rebar
|
||||
run: |
|
||||
echo '{xref_ignores, [{eldap_filter_yecc, return_error, 2}
|
||||
]}.' >>rebar.config
|
||||
echo '{xref_checks, [deprecated_function_calls, deprecated_functions,
|
||||
locals_not_used, undefined_function_calls, undefined_functions]}.
|
||||
% Disabled: exports_not_used,' >>rebar.config
|
||||
echo '{dialyzer, [{get_warnings, true}, {plt_extra_apps, [cache_tab,
|
||||
eimp, epam, esip, ezlib, fast_tls, fast_xml, fast_yaml,
|
||||
mqtree, p1_acme, p1_mysql, p1_oauth2, p1_pgsql, p1_utils, pkix,
|
||||
sqlite3, stringprep, stun, xmpp, yconf]} ]}.' >>rebar.config
|
||||
echo '{ct_extra_params, "-verbosity 20"}.' >>rebar.config
|
||||
echo "{ct_opts, [{verbosity, 20}, {keep_logs, 20}]}." >>rebar.config
|
||||
|
||||
- name: Cache rebar
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: |
|
||||
deps/
|
||||
dialyzer/
|
||||
ebin/
|
||||
~/.cache/rebar3/
|
||||
key: ${{matrix.otp}}-${{matrix.rebar}}-${{hashFiles('rebar.config')}}
|
||||
|
||||
- name: Download test logs
|
||||
if: matrix.otp == 24 && github.repository == 'processone/ejabberd'
|
||||
continue-on-error: true
|
||||
run: |
|
||||
mkdir -p _build/test
|
||||
curl -sSL https://github.com/processone/ecil/tarball/gh-pages |
|
||||
tar -C _build/test --strip-components=1 --wildcards -xzf -
|
||||
rm -rf _build/test/logs/last/
|
||||
|
||||
- name: Compile
|
||||
run: |
|
||||
./autogen.sh
|
||||
[[ ${{ matrix.rebar }} = 2 ]] && REBAR=rebar || REBAR=`which rebar3`
|
||||
./configure --with-rebar=$REBAR \
|
||||
--prefix=/tmp/ejabberd \
|
||||
--enable-all \
|
||||
--disable-elixir \
|
||||
--disable-mssql \
|
||||
--disable-odbc
|
||||
make update
|
||||
make
|
||||
|
||||
- run: make install -s
|
||||
- run: make hooks
|
||||
- run: make options
|
||||
- run: make xref
|
||||
- run: |
|
||||
make dialyzer
|
||||
[ ${{ matrix.rebar }} = 3 ] && true \
|
||||
|| { cat dialyzer/error.log ; test ! -s dialyzer/error.log ; }
|
||||
|
||||
- name: Check Production Release
|
||||
if: matrix.rebar == 3
|
||||
run: |
|
||||
make rel
|
||||
RE=_build/prod/rel/ejabberd
|
||||
$RE/bin/ejabberdctl start
|
||||
$RE/bin/ejabberdctl started
|
||||
$RE/bin/ejabberdctl stop
|
||||
$RE/bin/ejabberdctl stopped
|
||||
cat $RE/logs/ejabberd.log
|
||||
grep -q "is stopped in" $RE/logs/ejabberd.log
|
||||
|
||||
- name: Check Development Release
|
||||
if: matrix.rebar == 3
|
||||
run: |
|
||||
make dev
|
||||
RE=_build/dev/rel/ejabberd
|
||||
$RE/bin/ejabberdctl start
|
||||
$RE/bin/ejabberdctl started
|
||||
$RE/bin/ejabberdctl stop
|
||||
$RE/bin/ejabberdctl stopped
|
||||
cat $RE/logs/ejabberd.log
|
||||
grep -q "is stopped in" $RE/logs/ejabberd.log
|
||||
|
||||
- name: Run tests (OTP 19.3)
|
||||
if: matrix.otp == '19.3'
|
||||
id: ct2
|
||||
run: make test
|
||||
- name: Run tests
|
||||
if: matrix.otp != '19.3'
|
||||
id: ct
|
||||
run: |
|
||||
(cd priv && ln -sf ../sql)
|
||||
COMMIT=`echo $GITHUB_SHA | cut -c 1-7`
|
||||
DATE=`date +%s`
|
||||
REF_NAME=`echo $GITHUB_REF_NAME | tr "/" "_"`
|
||||
NODENAME=$DATE@$GITHUB_RUN_NUMBER-$GITHUB_ACTOR-$REF_NAME-$COMMIT
|
||||
LABEL=`git show -s --format=%s | cut -c 1-30`
|
||||
rebar3 ct --name $NODENAME --label "$LABEL"
|
||||
rebar3 cover
|
||||
|
||||
- name: Check results
|
||||
if: always() && (steps.ct.outcome != 'skipped' || steps.ct2.outcome != 'skipped')
|
||||
id: ctresults
|
||||
run: |
|
||||
[[ -d _build ]] && ln -s _build/test/logs/last/ logs || true
|
||||
ln `find logs/ -name suite.log` logs/suite.log
|
||||
grep 'TEST COMPLETE' logs/suite.log
|
||||
grep -q 'TEST COMPLETE,.* 0 failed' logs/suite.log
|
||||
test $(find logs/ -empty -name error.log)
|
||||
|
||||
- name: View logs failures
|
||||
if: failure() && steps.ctresults.outcome == 'failure'
|
||||
run: |
|
||||
cat logs/suite.log | awk \
|
||||
'BEGIN{RS="\n=case";FS="\n"} /=result\s*failed/ {print "=case" $0}'
|
||||
find logs/ -name error.log -exec cat '{}' ';'
|
||||
find logs/ -name exunit.log -exec cat '{}' ';'
|
||||
|
||||
- name: Send to coveralls
|
||||
if: matrix.otp == 24
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
run: |
|
||||
DIAGNOSTIC=1 rebar3 as test coveralls send
|
||||
curl -v -k https://coveralls.io/webhook \
|
||||
--header "Content-Type: application/json" \
|
||||
--data '{"repo_name":"$GITHUB_REPOSITORY",
|
||||
"repo_token":"$GITHUB_TOKEN",
|
||||
"payload":{"build_num":$GITHUB_RUN_ID,
|
||||
"status":"done"}}'
|
||||
|
||||
- name: Upload test logs
|
||||
if: always() && steps.ct.outcome == 'failure' && github.repository == 'processone/ejabberd'
|
||||
uses: peaceiris/actions-gh-pages@v3
|
||||
with:
|
||||
publish_dir: _build/test
|
||||
exclude_assets: '.github,lib,plugins'
|
||||
external_repository: processone/ecil
|
||||
deploy_key: ${{ secrets.ACTIONS_DEPLOY_KEY }}
|
||||
keep_files: true
|
||||
|
||||
- name: View ECIL address
|
||||
if: always() && steps.ct.outcome == 'failure' && github.repository == 'processone/ejabberd'
|
||||
run: |
|
||||
CTRUN=`ls -la _build/test/logs/last | sed 's|.*-> ||'`
|
||||
echo "::notice::View CT results: https://processone.github.io/ecil/logs/$CTRUN/"
|
||||
|
||||
- name: Prepare new schema
|
||||
run: |
|
||||
[[ -d logs ]] && rm -rf logs
|
||||
[[ -d _build/test/logs ]] && rm -rf _build/test/logs || true
|
||||
mysql -u root -proot -e "DROP DATABASE ejabberd_test;"
|
||||
sudo -u postgres psql -c "DROP DATABASE ejabberd_test;"
|
||||
mysql -u root -proot -e "CREATE DATABASE ejabberd_test;"
|
||||
mysql -u root -proot -e "GRANT ALL ON ejabberd_test.*
|
||||
TO 'ejabberd_test'@'localhost';"
|
||||
mysql -u root -proot ejabberd_test < sql/mysql.new.sql
|
||||
sudo -u postgres psql -c "CREATE DATABASE ejabberd_test;"
|
||||
sudo -u postgres psql ejabberd_test -f sql/pg.new.sql
|
||||
sudo -u postgres psql -c "GRANT ALL PRIVILEGES
|
||||
ON DATABASE ejabberd_test TO ejabberd_test;"
|
||||
sudo -u postgres psql ejabberd_test -c "GRANT ALL PRIVILEGES ON ALL
|
||||
TABLES IN SCHEMA public
|
||||
TO ejabberd_test;"
|
||||
sudo -u postgres psql ejabberd_test -c "GRANT ALL PRIVILEGES ON ALL
|
||||
SEQUENCES IN SCHEMA public
|
||||
TO ejabberd_test;"
|
||||
sudo sed -i 's|new_schema, false|new_schema, true|g' test/suite.erl
|
||||
- run: CT_BACKENDS=mysql,pgsql make test
|
||||
id: ctnewschema
|
||||
- name: Check results
|
||||
if: always() && steps.ctnewschema.outcome != 'skipped'
|
||||
run: |
|
||||
[[ -d _build ]] && ln -s _build/test/logs/last/ logs || true
|
||||
ln `find logs/ -name suite.log` logs/suite.log
|
||||
grep 'TEST COMPLETE' logs/suite.log
|
||||
grep -q 'TEST COMPLETE,.* 0 failed' logs/suite.log
|
||||
test $(find logs/ -empty -name error.log)
|
||||
- name: View logs failures
|
||||
if: failure() && steps.ctnewschema.outcome != 'skipped'
|
||||
run: |
|
||||
cat logs/suite.log | awk \
|
||||
'BEGIN{RS="\n=case";FS="\n"} /=result\s*failed/ {print "=case" $0}'
|
||||
find logs/ -name error.log -exec cat '{}' ';'
|
||||
find logs/ -name exunit.log -exec cat '{}' ';'
|
||||
@@ -0,0 +1,68 @@
|
||||
name: Container
|
||||
|
||||
on:
|
||||
push:
|
||||
paths-ignore:
|
||||
- '.devcontainer/**'
|
||||
- 'examples/**'
|
||||
- 'lib/**'
|
||||
- 'man/**'
|
||||
- 'priv/**'
|
||||
- '**.md'
|
||||
|
||||
env:
|
||||
REGISTRY: ghcr.io
|
||||
IMAGE_NAME: ${{ github.repository }}
|
||||
|
||||
jobs:
|
||||
container:
|
||||
name: Container
|
||||
runs-on: ubuntu-20.04
|
||||
permissions:
|
||||
packages: write
|
||||
steps:
|
||||
|
||||
- name: Check out repository code
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Log in to the Container registry
|
||||
uses: docker/login-action@v1.14.1
|
||||
with:
|
||||
registry: ${{ env.REGISTRY }}
|
||||
username: ${{ github.actor }}
|
||||
password: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Get git describe
|
||||
id: gitdescribe
|
||||
run: echo "::set-output name=ver::$(git describe --tags)"
|
||||
|
||||
- name: Extract metadata (tags, labels) for Docker
|
||||
id: meta
|
||||
uses: docker/metadata-action@v3.8.0
|
||||
with:
|
||||
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
|
||||
labels: |
|
||||
org.opencontainers.image.revision=${{ steps.gitdescribe.outputs.ver }}
|
||||
org.opencontainers.image.licenses=GPL-2.0
|
||||
org.opencontainers.image.vendor=ProcessOne
|
||||
|
||||
- name: Set up QEMU
|
||||
uses: docker/setup-qemu-action@v1
|
||||
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v1
|
||||
|
||||
- name: Build and push Docker image
|
||||
uses: docker/build-push-action@v2.10.0
|
||||
with:
|
||||
build-args: |
|
||||
VERSION=${{ steps.gitdescribe.outputs.ver }}
|
||||
cache-from: type=gha
|
||||
cache-to: type=gha,mode=max
|
||||
context: .github/container
|
||||
labels: ${{ steps.meta.outputs.labels }}
|
||||
platforms: linux/amd64,linux/arm64
|
||||
push: true
|
||||
tags: ${{ steps.meta.outputs.tags }}
|
||||
@@ -0,0 +1,84 @@
|
||||
name: Installers
|
||||
|
||||
on:
|
||||
push:
|
||||
paths-ignore:
|
||||
- '.devcontainer/**'
|
||||
- 'examples/**'
|
||||
- 'lib/**'
|
||||
- 'man/**'
|
||||
- 'priv/**'
|
||||
- '**.md'
|
||||
pull_request:
|
||||
paths-ignore:
|
||||
- '.devcontainer/**'
|
||||
- 'examples/**'
|
||||
- 'lib/**'
|
||||
- 'man/**'
|
||||
- 'priv/**'
|
||||
- '**.md'
|
||||
|
||||
jobs:
|
||||
binaries:
|
||||
name: Binaries
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Cache build directory
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: ~/build/
|
||||
key: ${{runner.os}}-ct-ng-1.25.0-RC2
|
||||
- name: Install prerequisites
|
||||
run: |
|
||||
sudo apt-get -qq update
|
||||
sudo apt-get -qq install makeself
|
||||
# https://github.com/crosstool-ng/crosstool-ng/blob/master/testing/docker/ubuntu21.10/Dockerfile
|
||||
sudo apt-get -qq install build-essential autoconf bison flex gawk
|
||||
sudo apt-get -qq install help2man libncurses5-dev libtool libtool-bin
|
||||
sudo apt-get -qq install python3-dev texinfo unzip
|
||||
- name: Install FPM
|
||||
run: |
|
||||
gem install --no-document --user-install fpm
|
||||
echo $HOME/.gem/ruby/*/bin >> $GITHUB_PATH
|
||||
- name: Check out repository code
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- name: Build binary archives
|
||||
run: CHECK_DEPS=false tools/make-binaries
|
||||
- name: Build DEB and RPM packages
|
||||
run: tools/make-packages
|
||||
- name: Build installers
|
||||
run: tools/make-installers
|
||||
- name: Collect packages
|
||||
run: |
|
||||
mkdir ejabberd-packages
|
||||
mv ejabberd_*.deb ejabberd-*.rpm ejabberd-*.run ejabberd-packages
|
||||
- name: Upload packages
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: ejabberd-packages
|
||||
#
|
||||
# Appending the wildcard character ("*") is a trick to make
|
||||
# "ejabberd-packages" the root directory of the uploaded ZIP file:
|
||||
#
|
||||
# https://github.com/actions/upload-artifact#upload-using-multiple-paths-and-exclusions
|
||||
#
|
||||
path: ejabberd-packages*
|
||||
retention-days: 14
|
||||
|
||||
release:
|
||||
name: Release
|
||||
needs: [binaries]
|
||||
runs-on: ubuntu-latest
|
||||
if: github.ref_type == 'tag'
|
||||
steps:
|
||||
- name: Download packages
|
||||
uses: actions/download-artifact@v3
|
||||
with:
|
||||
name: ejabberd-packages
|
||||
- name: Draft Release
|
||||
uses: softprops/action-gh-release@v1
|
||||
with:
|
||||
draft: true
|
||||
files: ejabberd-packages/*
|
||||
@@ -0,0 +1,268 @@
|
||||
name: Runtime
|
||||
|
||||
on:
|
||||
push:
|
||||
paths:
|
||||
- '*'
|
||||
- '!*.md'
|
||||
- '.github/workflows/runtime.yml'
|
||||
- 'checkouts/**'
|
||||
- 'config/**'
|
||||
- 'lib/**'
|
||||
- 'm4/**'
|
||||
- 'plugins/**'
|
||||
- 'rel/**'
|
||||
pull_request:
|
||||
paths:
|
||||
- '*'
|
||||
- '!*.md'
|
||||
- '.github/workflows/runtime.yml'
|
||||
- 'checkouts/**'
|
||||
- 'config/**'
|
||||
- 'lib/**'
|
||||
- 'm4/**'
|
||||
- 'plugins/**'
|
||||
- 'rel/**'
|
||||
|
||||
jobs:
|
||||
|
||||
rebars:
|
||||
name: Rebars
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
otp: ['19.3', '21.3', '22.0', '24.3', '25.0-rc3']
|
||||
rebar: ['rebar', 'rebar3']
|
||||
include:
|
||||
- otp: '19.3'
|
||||
os: ubuntu-18.04
|
||||
- otp: '21.3'
|
||||
os: ubuntu-20.04
|
||||
- otp: '22.0'
|
||||
os: ubuntu-20.04
|
||||
- otp: '24.3'
|
||||
os: ubuntu-20.04
|
||||
- otp: '25.0-rc3'
|
||||
os: ubuntu-20.04
|
||||
runs-on: ${{ matrix.os }}
|
||||
container:
|
||||
image: erlang:${{ matrix.otp }}
|
||||
|
||||
steps:
|
||||
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Prepare libraries
|
||||
run: |
|
||||
apt-get -qq update
|
||||
apt-get -qq install libexpat1-dev libgd-dev libpam0g-dev \
|
||||
libsqlite3-dev libwebp-dev libyaml-dev
|
||||
|
||||
- name: Compile
|
||||
run: |
|
||||
./autogen.sh
|
||||
./configure --with-rebar=`which ${{ matrix.rebar }}` \
|
||||
--prefix=/tmp/ejabberd \
|
||||
--enable-all \
|
||||
--disable-elixir \
|
||||
--disable-odbc
|
||||
make update
|
||||
make
|
||||
|
||||
- run: make xref
|
||||
|
||||
- name: Test rel (rebar2)
|
||||
if: matrix.rebar == 'rebar'
|
||||
run: |
|
||||
make rel
|
||||
rel/ejabberd/bin/ejabberdctl start \
|
||||
&& rel/ejabberd/bin/ejabberdctl started
|
||||
rel/ejabberd/bin/ejabberdctl register user1 localhost s0mePass
|
||||
rel/ejabberd/bin/ejabberdctl registered_users localhost
|
||||
cat rel/ejabberd/logs/*
|
||||
|
||||
- name: Test rel
|
||||
if: matrix.rebar != 'rebar'
|
||||
run: |
|
||||
make rel
|
||||
_build/prod/rel/ejabberd/bin/ejabberdctl start \
|
||||
&& _build/prod/rel/ejabberd/bin/ejabberdctl started
|
||||
_build/prod/rel/ejabberd/bin/ejabberdctl register user1 localhost s0mePass
|
||||
_build/prod/rel/ejabberd/bin/ejabberdctl registered_users localhost
|
||||
_build/prod/rel/ejabberd/bin/ejabberdctl stop \
|
||||
&& _build/prod/rel/ejabberd/bin/ejabberdctl stopped
|
||||
cat _build/prod/rel/ejabberd/logs/*
|
||||
|
||||
- name: Test dev
|
||||
if: matrix.rebar != 'rebar'
|
||||
run: |
|
||||
make dev
|
||||
_build/dev/rel/ejabberd/bin/ejabberdctl start \
|
||||
&& _build/dev/rel/ejabberd/bin/ejabberdctl started
|
||||
_build/dev/rel/ejabberd/bin/ejabberdctl register user1 localhost s0mePass
|
||||
_build/dev/rel/ejabberd/bin/ejabberdctl registered_users localhost
|
||||
_build/dev/rel/ejabberd/bin/ejabberdctl stop \
|
||||
&& _build/dev/rel/ejabberd/bin/ejabberdctl stopped
|
||||
cat _build/dev/rel/ejabberd/logs/*
|
||||
|
||||
mix:
|
||||
name: Mix
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
otp: ['21.3', '22.0', '24.3']
|
||||
elixir: ['1.10.3', '1.11.4', '1.12.3', '1.13.0']
|
||||
exclude:
|
||||
- otp: '21.3'
|
||||
elixir: '1.12.3'
|
||||
- otp: '21.3'
|
||||
elixir: '1.13.0'
|
||||
- otp: '24.3'
|
||||
elixir: '1.10.3'
|
||||
- otp: '24.3'
|
||||
elixir: '1.11.4'
|
||||
runs-on: ubuntu-20.04
|
||||
|
||||
steps:
|
||||
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Get specific Erlang/OTP
|
||||
uses: erlef/setup-beam@v1
|
||||
with:
|
||||
otp-version: ${{matrix.otp}}
|
||||
elixir-version: ${{matrix.elixir}}
|
||||
|
||||
- name: Prepare libraries
|
||||
run: |
|
||||
sudo apt-get -qq update
|
||||
sudo apt-get -qq install libexpat1-dev libgd-dev libpam0g-dev \
|
||||
libsqlite3-dev libwebp-dev libyaml-dev
|
||||
|
||||
- name: Remove Elixir Matchers
|
||||
run: |
|
||||
echo "::remove-matcher owner=elixir-mixCompileWarning::"
|
||||
echo "::remove-matcher owner=elixir-credoOutputDefault::"
|
||||
echo "::remove-matcher owner=elixir-mixCompileError::"
|
||||
echo "::remove-matcher owner=elixir-mixTestFailure::"
|
||||
echo "::remove-matcher owner=elixir-dialyzerOutputDefault::"
|
||||
|
||||
- name: Compile
|
||||
run: |
|
||||
./autogen.sh
|
||||
./configure --with-rebar=mix \
|
||||
--prefix=/tmp/ejabberd \
|
||||
--enable-all \
|
||||
--disable-elixir \
|
||||
--disable-odbc
|
||||
mix deps.get
|
||||
make
|
||||
|
||||
- run: make xref
|
||||
|
||||
- name: Run rel
|
||||
run: |
|
||||
make rel
|
||||
_build/prod/rel/ejabberd/bin/ejabberdctl start \
|
||||
&& _build/prod/rel/ejabberd/bin/ejabberdctl started
|
||||
_build/prod/rel/ejabberd/bin/ejabberdctl register user1 localhost s0mePass
|
||||
_build/prod/rel/ejabberd/bin/ejabberdctl registered_users localhost > registered.log
|
||||
_build/prod/rel/ejabberd/bin/ejabberdctl stop \
|
||||
&& _build/prod/rel/ejabberd/bin/ejabberdctl stopped
|
||||
|
||||
- name: Run dev
|
||||
run: |
|
||||
make dev
|
||||
_build/dev/rel/ejabberd/bin/ejabberdctl start \
|
||||
&& _build/dev/rel/ejabberd/bin/ejabberdctl started
|
||||
_build/dev/rel/ejabberd/bin/ejabberdctl register user2 localhost s0mePass
|
||||
_build/dev/rel/ejabberd/bin/ejabberdctl registered_users localhost >> registered.log
|
||||
_build/dev/rel/ejabberd/bin/ejabberdctl stop \
|
||||
&& _build/dev/rel/ejabberd/bin/ejabberdctl stopped
|
||||
|
||||
- name: Check rel
|
||||
if: always()
|
||||
run: |
|
||||
grep -q '^user1$' registered.log
|
||||
grep -q '^user2$' registered.log
|
||||
grep -q 'is started' _build/prod/rel/ejabberd/logs/ejabberd.log
|
||||
grep -q 'is stopped' _build/prod/rel/ejabberd/logs/ejabberd.log
|
||||
test $(find _build/prod/ -empty -name error.log)
|
||||
grep -q 'is started' _build/dev/rel/ejabberd/logs/ejabberd.log
|
||||
grep -q 'is stopped' _build/dev/rel/ejabberd/logs/ejabberd.log
|
||||
test $(find _build/dev/ -empty -name error.log)
|
||||
|
||||
- name: View logs failures
|
||||
if: failure()
|
||||
run: |
|
||||
cat _build/prod/rel/ejabberd/logs/ejabberd.log
|
||||
cat _build/prod/rel/ejabberd/logs/error.log
|
||||
cat _build/dev/rel/ejabberd/logs/ejabberd.log
|
||||
cat _build/dev/rel/ejabberd/logs/error.log
|
||||
|
||||
mix25:
|
||||
name: Mix 25
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
otp: ['25.0-rc3']
|
||||
runs-on: ubuntu-20.04
|
||||
|
||||
steps:
|
||||
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: Get specific Erlang/OTP
|
||||
uses: ErlGang/setup-erlang@master
|
||||
with:
|
||||
otp-version: ${{ matrix.otp }}
|
||||
|
||||
- name: Get Elixir
|
||||
run: |
|
||||
wget https://packages.erlang-solutions.com/erlang-solutions_2.0_all.deb \
|
||||
&& sudo dpkg -i erlang-solutions_2.0_all.deb
|
||||
sudo apt-get update
|
||||
sudo apt-get install elixir
|
||||
mix local.hex --force
|
||||
mix local.rebar --force
|
||||
|
||||
- name: Prepare libraries
|
||||
run: |
|
||||
sudo apt-get -qq update
|
||||
sudo apt-get -qq install libexpat1-dev libgd-dev libpam0g-dev \
|
||||
libsqlite3-dev libwebp-dev libyaml-dev
|
||||
|
||||
- name: Compile
|
||||
run: |
|
||||
./autogen.sh
|
||||
./configure --with-rebar=mix \
|
||||
--prefix=/tmp/ejabberd \
|
||||
--enable-all \
|
||||
--disable-elixir \
|
||||
--disable-odbc
|
||||
mix deps.get
|
||||
make
|
||||
|
||||
- run: make xref
|
||||
|
||||
- name: Test rel
|
||||
run: |
|
||||
make rel
|
||||
_build/prod/rel/ejabberd/bin/ejabberdctl start \
|
||||
&& _build/prod/rel/ejabberd/bin/ejabberdctl started
|
||||
_build/prod/rel/ejabberd/bin/ejabberdctl register user1 localhost s0mePass
|
||||
_build/prod/rel/ejabberd/bin/ejabberdctl registered_users localhost
|
||||
_build/prod/rel/ejabberd/bin/ejabberdctl stop \
|
||||
&& _build/prod/rel/ejabberd/bin/ejabberdctl stopped
|
||||
cat _build/prod/rel/ejabberd/logs/*
|
||||
|
||||
- name: Test dev
|
||||
run: |
|
||||
make dev
|
||||
_build/dev/rel/ejabberd/bin/ejabberdctl start \
|
||||
&& _build/dev/rel/ejabberd/bin/ejabberdctl started
|
||||
_build/dev/rel/ejabberd/bin/ejabberdctl register user1 localhost s0mePass
|
||||
_build/dev/rel/ejabberd/bin/ejabberdctl registered_users localhost
|
||||
_build/dev/rel/ejabberd/bin/ejabberdctl stop \
|
||||
&& _build/dev/rel/ejabberd/bin/ejabberdctl stopped
|
||||
cat _build/dev/rel/ejabberd/logs/*
|
||||
+14
-19
@@ -9,41 +9,36 @@
|
||||
/Makefile
|
||||
/config.log
|
||||
/config.status
|
||||
/config/releases.exs
|
||||
/configure
|
||||
/aclocal.m4
|
||||
/contrib/extract_translations/extract_translations.beam
|
||||
/*.cache
|
||||
/deps/
|
||||
/doc/*.aux
|
||||
/doc/*.haux
|
||||
/doc/*.html
|
||||
/doc/*.htoc
|
||||
/doc/*.idx
|
||||
/doc/*.ilg
|
||||
/doc/*.ind
|
||||
/doc/*.log
|
||||
/doc/*.out
|
||||
/doc/*.pdf
|
||||
/doc/*.toc
|
||||
/doc/contributed_modules.tex
|
||||
/doc/version.tex
|
||||
/.deps-update/
|
||||
/ebin/
|
||||
/ejabberd.init
|
||||
/ejabberd.service
|
||||
/ejabberdctl
|
||||
/ejabberdctl.example
|
||||
XmppAddr.hrl
|
||||
/rel/ejabberd/
|
||||
/src/XmppAddr.asn1db
|
||||
/src/XmppAddr.erl
|
||||
/src/ejabberd.app.src
|
||||
/rel/overlays/
|
||||
/src/eldap_filter_yecc.erl
|
||||
/vars.config
|
||||
/dialyzer/
|
||||
/test/*.beam
|
||||
/test/*.ctc
|
||||
/logs/
|
||||
/priv/bin/captcha*sh
|
||||
/priv/sql
|
||||
/rel/ejabberd
|
||||
/_build
|
||||
/mnesiadb
|
||||
/database/
|
||||
/.rebar
|
||||
/rebar.lock
|
||||
/log/
|
||||
Mnesia.nonode@nohost/
|
||||
# Binaries created with tools/make-{binaries,installers,packages}:
|
||||
/ejabberd_*.deb
|
||||
/ejabberd-*.rpm
|
||||
/ejabberd-*.run
|
||||
/ejabberd-*.tar.gz
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
disable=SC2016,SC2086,SC2089,SC2090
|
||||
external-sources=true
|
||||
source=ejabberdctl.cfg.example
|
||||
shell=sh
|
||||
-71
@@ -1,71 +0,0 @@
|
||||
language: erlang
|
||||
|
||||
otp_release:
|
||||
- 19.3
|
||||
- 20.3
|
||||
- 21.2
|
||||
|
||||
services:
|
||||
- redis-server
|
||||
- postgresql
|
||||
|
||||
before_install:
|
||||
#
|
||||
# We need MySQL 5.6 or newer in order to get support for FULLTEXT indexes
|
||||
# with InnoDB. As soon as Travis ships that version, the following lines
|
||||
# (except for the "apt-get update" call) can go away.
|
||||
#
|
||||
# See: https://github.com/travis-ci/travis-ci/issues/1986
|
||||
#
|
||||
- sudo sed -i -e s/table_cache/table_open_cache/ -e /log_slow_queries/d /etc/mysql/my.cnf
|
||||
- sudo apt-key adv --import .travis/mysql_repo_key.asc
|
||||
- sudo add-apt-repository 'deb http://repo.mysql.com/apt/ubuntu/ precise mysql-5.6'
|
||||
- sudo apt-get -qq update
|
||||
- sudo apt-get -qq -o Dpkg::Options::=--force-confold install mysql-server
|
||||
- sudo service mysql start
|
||||
- sudo mysql_upgrade
|
||||
# /END MYSQL 5.6
|
||||
- pip install --user coveralls-merge
|
||||
|
||||
install:
|
||||
- sudo apt-get -qq install libexpat1-dev libyaml-dev libpam0g-dev libsqlite3-dev libgd-dev libwebp-dev
|
||||
|
||||
before_script:
|
||||
# Ulimit: See Travis-CI issue report: https://github.com/travis-ci/travis-ci/issues/3328
|
||||
- mysql -u root -e "CREATE USER 'ejabberd_test'@'localhost' IDENTIFIED BY 'ejabberd_test';"
|
||||
- mysql -u root -e "CREATE DATABASE ejabberd_test;"
|
||||
- mysql -u root -e "GRANT ALL ON ejabberd_test.* TO 'ejabberd_test'@'localhost';"
|
||||
- mysql -u root ejabberd_test < sql/mysql.sql
|
||||
- psql -U postgres -c "CREATE USER ejabberd_test WITH PASSWORD 'ejabberd_test';"
|
||||
- psql -U postgres -c "CREATE DATABASE ejabberd_test;"
|
||||
- psql -U postgres ejabberd_test -f sql/pg.sql
|
||||
- psql -U postgres -c "GRANT ALL PRIVILEGES ON DATABASE ejabberd_test TO ejabberd_test;"
|
||||
- psql -U postgres ejabberd_test -c "GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO ejabberd_test;"
|
||||
|
||||
script:
|
||||
- ./autogen.sh
|
||||
- ./configure --prefix=/tmp/ejabberd --enable-all --disable-odbc --disable-elixir
|
||||
- make
|
||||
- make install -s
|
||||
- make xref
|
||||
- ./tools/hook_deps.sh ebin
|
||||
- sed -i -e 's/ct:pal/ct:log/' test/suite.erl
|
||||
- ln -sf ../sql priv/
|
||||
- echo "" >> rebar.config
|
||||
- echo '{ct_extra_params, "-verbosity 20"}.' >> rebar.config
|
||||
- escript ./rebar skip_deps=true ct -v
|
||||
- grep -q 'TEST COMPLETE,.* 0 failed' logs/raw.log
|
||||
|
||||
after_script:
|
||||
- find logs -name suite.log -exec cat '{}' ';'
|
||||
|
||||
after_failure:
|
||||
- find logs -name exunit.log -exec cat '{}' ';'
|
||||
- find logs -name ejabberd.log -exec cat '{}' ';'
|
||||
- find logs -name suite.log -exec cat '{}' ';' | awk 'BEGIN{RS="\n=case";FS="\n"} /=result\s*failed/ {print "=case" $0}
|
||||
|
||||
after_success:
|
||||
- coveralls-merge erlang.json
|
||||
|
||||
notifications:
|
||||
email: false
|
||||
@@ -1,432 +0,0 @@
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
Version: GnuPG v1
|
||||
|
||||
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
|
||||
roUTAKClYAhZuX2nUNwH4vlEJQHDqYa5yQ==
|
||||
=ghXk
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
||||
+301
-2
@@ -1,3 +1,302 @@
|
||||
# Version 21.12
|
||||
|
||||
Commands
|
||||
- `create_room_with_opts`: Fixed when using SQL storage
|
||||
- `change_room_option`: Add missing fields from config inside `mod_muc_admin:change_options`
|
||||
- piefxis: Fixed arguments of all commands
|
||||
|
||||
Modules
|
||||
- mod_caps: Don't forget caps on XEP-0198 resumption
|
||||
- mod_conversejs: New module to serve a simple page for Converse.js
|
||||
- mod_http_upload_quota: Avoid `max_days` race
|
||||
- mod_muc: Support MUC hats (XEP-0317, conversejs/prosody compatible)
|
||||
- mod_muc: Optimize MucSub processing
|
||||
- mod_muc: Fix exception in mucsub {un}subscription events multicast handler
|
||||
- mod_multicast: Improve and optimize multicast routing code
|
||||
- mod_offline: Allow storing non-composing x:events in offline
|
||||
- mod_ping: Send ping from server, not bare user JID
|
||||
- mod_push: Fix handling of MUC/Sub messages
|
||||
- mod_register: New allow_modules option to restrict registration modules
|
||||
- mod_register_web: Handle unknown host gracefully
|
||||
- mod_register_web: Use mod_register configured restrictions
|
||||
|
||||
PubSub
|
||||
- Add `delete_expired_pubsub_items` command
|
||||
- Add `delete_old_pubsub_items` command
|
||||
- Optimize publishing on large nodes (SQL)
|
||||
- Support unlimited number of items
|
||||
- Support `max_items=max` node configuration
|
||||
- Bump default value for `max_items` limit from 10 to 1000
|
||||
- Use configured `max_items` by default
|
||||
- node_flat: Avoid catch-all clauses for RSM
|
||||
- node_flat_sql: Avoid catch-all clauses for RSM
|
||||
|
||||
SQL
|
||||
- Use `INSERT ... ON CONFLICT` in SQL_UPSERT for PostgreSQL >= 9.5
|
||||
- mod_mam export: assign MUC entries to the MUC service
|
||||
- MySQL: Fix typo when creating index
|
||||
- PgSQL: Add SASL auth support, PostgreSQL 14
|
||||
- PgSQL: Add missing SQL migration for table `push_session`
|
||||
- PgSQL: Fix `vcard_search` definition in pgsql new schema
|
||||
|
||||
Other
|
||||
- `captcha-ng.sh`: "sort -R" command not POSIX, added "shuf" and "cat" as fallback
|
||||
- Make s2s connection table cleanup more robust
|
||||
- Update export/import of scram password to XEP-0227 1.1
|
||||
- Update Jose to 1.11.1 (the last in hex.pm correctly versioned)
|
||||
|
||||
# Version 21.07
|
||||
|
||||
Compilation
|
||||
- Add rebar3 3.15.2 binary
|
||||
- Add support for mix to: `./configure --enable-rebar=mix`
|
||||
- Improved `make rel` to work with rebar3 and mix
|
||||
- Add `make dev` to build a development release with rebar3 or mix
|
||||
- Hex: Add `sql/` and `vars.config` to Hex package files
|
||||
- Hex: Update mix applications list to fix error `p1_utils is listed as both...`
|
||||
- There are so many targets in Makefile... add `make help`
|
||||
- Fix extauth.py failure in test suite with Python 3
|
||||
- Added experimental support for GitHub Codespaces
|
||||
- Switch test service from TravisCI to GitHub Actions
|
||||
|
||||
Commands:
|
||||
- Display extended error message in ejabberdctl
|
||||
- Remove SMP option from ejabberdctl.cfg, `-smp` was removed in OTP 21
|
||||
- `create_room`: After creating room, store in DB if it's persistent
|
||||
- `help`: Major changes in its usage and output
|
||||
- `srg_create`: Update to use `label` parameter instead of `name`
|
||||
|
||||
Modules:
|
||||
- ejabberd_listener: New `send_timeout` option
|
||||
- mod_mix: Improvements to update to 0.14.1
|
||||
- mod_muc_room: Don't leak owner JIDs
|
||||
- mod_multicast: Routing for more MUC packets
|
||||
- mod_multicast: Correctly strip only other bcc addresses
|
||||
- mod_mqtt: Allow shared roster group placeholder in mqtt topic
|
||||
- mod_pubsub: Several fixes when using PubSub with RSM
|
||||
- mod_push: Handle MUC/Sub events correctly
|
||||
- mod_shared_roster: Delete cache after performing change to be sure that in cache will be up to date data
|
||||
- mod_shared_roster: Improve database and caching
|
||||
- mod_shared_roster: Reconfigure cache when options change
|
||||
- mod_vcard: Fix invalid_encoding error when using extended plane characters in vcard
|
||||
- mod_vcard: Update econf:vcard() to generate correct vcard_temp record
|
||||
- WebAdmin: New simple pages to view mnesia tables information and content
|
||||
- WebSocket: Fix typos
|
||||
|
||||
SQL:
|
||||
- MySQL Backend Patch for scram-sha512
|
||||
- SQLite: When exporting for SQLite, use its specific escape options
|
||||
- SQLite: Minor fixes for new_sql_schema support
|
||||
- mod_privacy: Cast as boolean when exporting privacy_list_data to PostgreSQL
|
||||
- mod_mqtt: Add mqtt_pub table definition for MSSQL
|
||||
- mod_shared_roster: Add missing indexes to `sr_group` tables in all SQL databases
|
||||
|
||||
# Version 21.04
|
||||
|
||||
API Commands:
|
||||
- `add_rosteritem/...`: Add argument guards to roster commands
|
||||
- `get_user_subscriptions`: New command for MUC/Sub
|
||||
- `remove_mam_for_user_with_peer`: Fix when removing room archive
|
||||
- `send_message`: Fix bug introduced in ejabberd 21.01
|
||||
- `set_vcard`: Return modules errors
|
||||
|
||||
Build and setup:
|
||||
- Allow ejabberd to be compatible as a dependency for an Erlang project using rebar3
|
||||
- CAPTCHA: New question/answer-based CAPTCHA script
|
||||
- `--enable-lua`: new configure option for luerl instead of --enable-tools
|
||||
- Remove support for HiPE, it was experimental and Erlang/OTP 24 removes it
|
||||
- Update `sql_query` record to handle the Erlang/OTP 24 compiler reports
|
||||
- Updated dependencies to fix Dialyzer warnings
|
||||
|
||||
Miscellaneous:
|
||||
- CAPTCHA: Update `FORM_TYPE` from captcha to register
|
||||
- LDAP: fix eldap certificate verification
|
||||
- MySQL: Fix for "specified key was too long"
|
||||
- Translations: updated the Esperanto, Greek, and Japanese translations
|
||||
- Websocket: Fix PONG responses
|
||||
|
||||
Modules:
|
||||
- `mod_block_strangers`: If stanza is type error, allow it passing
|
||||
- `mod_caps`: Don't request roster when not needed
|
||||
- `mod_caps`: Skip reading roster in one more case
|
||||
- `mod_mam`: Remove `queryid` from MAM fin element
|
||||
- `mod_mqtt`: When deregistering XMPP account, close its MQTT sessions
|
||||
- `mod_muc`: Take in account subscriber's affiliation when checking access to moderated room
|
||||
- `mod_muc`: Use monitors to track online and hard-killed rooms
|
||||
- `mod_muc`: When occupant is banned, remove his subscriptions too
|
||||
- `mod_privacy`: Make fetching roster lazy
|
||||
- `mod_pubsub`: Don't fail on PEP unsubscribe
|
||||
- `mod_pubsub`: Fix `gen_pubsub_node:get_state` return value
|
||||
- `mod_vcard`: Obtain and provide photo type in vCard LDAP
|
||||
|
||||
# Version 21.01
|
||||
|
||||
Miscellaneous changes:
|
||||
- `log_rotate_size` option: Fix handling of ‘infinity’ value
|
||||
- `mod_time`: Fix invalid timezone
|
||||
- Auth JWT: New `check_decoded_jwt` hook runs the default JWT verifier
|
||||
- MUC: Allow non-occupant non-subscribed service admin send private MUC message
|
||||
- MUC: New `max_password` and `max_captcha_whitelist` options
|
||||
- OAuth: New `oauth_cache_rest_failure_life_time` option
|
||||
- PEP: Skip reading pep nodes that we know won’t be requested due to caps
|
||||
- SQL: Add sql script to migrate mysql from old schema to new
|
||||
- SQL: Don’t use REPLACE for upsert when there are “-” fields.
|
||||
- Shared Rosters LDAP: Add multi-domain support (and flexibility)
|
||||
- Sqlite3: Fix dependency version
|
||||
- Stun: Block loopback addresses by default
|
||||
- Several documentation fixes and clarifications
|
||||
|
||||
Commands:
|
||||
- `decide_room`: Use better fallback value for room activity time when skipping room
|
||||
- `delete_old_message`: Fix when using sqlite spool table
|
||||
- `module_install`: Make ext_mod compile module with debug_info flags
|
||||
- `room_unused_*`: Don’t fetch subscribers list
|
||||
- `send_message`: Don’t include empty in messages
|
||||
- `set_room_affiliation`: Validate affiliations
|
||||
|
||||
Running:
|
||||
- Docker: New `Dockerfile` and `devcontainer.json`
|
||||
- New `ejabberdctl foreground-quiet`
|
||||
- Systemd: Allow for listening on privileged ports
|
||||
- Systemd: Integrate nicely with systemd
|
||||
|
||||
Translations:
|
||||
- Moved gettext PO files to a new `ejabberd-po` repository
|
||||
- Improved several translations: Catalan, Chinese, German, Greek, Indonesian, Norwegian, Portuguese (Brazil), Spanish.
|
||||
|
||||
# Version 20.12
|
||||
|
||||
- Add support for `SCRAM-SHA-{256,512}-{PLUS}` authentication
|
||||
- Don't use same value in cache for user don't exist and wrong password
|
||||
- `outgoing_s2s_ipv*_address`: New options to set ipv4/ipv6 outbound s2s out interface
|
||||
- s2s_send_packet: this hook now filters outgoing s2s stanzas
|
||||
- start_room: new hook runs when a room process is started
|
||||
- check_decoded_jwt: new hook to check decoded JWT after success authentication
|
||||
|
||||
* Admin
|
||||
- Docker: Fix DB initialization
|
||||
- New sql_odbc_driver option: choose the mssql ODBC driver
|
||||
- Rebar3: Fully supported. Enable with `./configure --with-rebar=/path/to/rebar3`
|
||||
- systemd: start ejabberd in foreground
|
||||
|
||||
* Modules:
|
||||
- MAM: Make sure that jid used as base in mam xml_compress is bare
|
||||
- MAM: Support for MAM Flipped Pages
|
||||
- MUC: Always show MucSub subscribers nicks
|
||||
- MUC: Don't forget not-persistent rooms in load_permanent_rooms
|
||||
- MUC Admin: Better error reporting
|
||||
- MUC Admin: Fix commands with hibernated rooms
|
||||
- MUC Admin: Many improvements in rooms_unused_list/destroy
|
||||
- MUC Admin: create_room_with_opts Store options only if room starts
|
||||
- Pubsub: Remove 'dag' node plugin documentation
|
||||
- Push: Fix API call return type on error
|
||||
- Push: Support cache config changes on reload
|
||||
- Register: Allow for account-removal-only setup again
|
||||
- Roster: Make roster subscriptions work better with invalid roster state in db
|
||||
- Vcard: Fix vCard search by User when using Mnesia
|
||||
- WebAdmin: Allow vhost admins to view WebAdmin menus
|
||||
- WebAdmin: Don't do double utf-8 conversion on translated strings
|
||||
- WebAdmin: Mark dangerous buttons with CSS
|
||||
- WebSocket: Make websocket send put back pressure on c2s process
|
||||
|
||||
# Version 20.07
|
||||
|
||||
* Changes in this version
|
||||
- Add support for using unix sockets in listeners.
|
||||
- Make this version compatible with erlang R23
|
||||
- Make room permissions checks more strict for subscribers
|
||||
- Fix problem with muc rooms crashing when using muc logger
|
||||
with some locales
|
||||
- Limit stat calls that logger module issues
|
||||
- Don't throw errors when using user_regexp acl rule and
|
||||
having non-matching host
|
||||
- Fix problem with leaving old data when updating shared rosters
|
||||
- Fix edge case that caused failure of resuming old sessions with
|
||||
stream management.
|
||||
- Fix crash when room that was started with logging enabled was later
|
||||
changed to logging disabled
|
||||
- Increase default shaper limits (this should help with delays for
|
||||
clients that are using jingle)
|
||||
- Fix couple compatibility problems which prevented working on
|
||||
erlang R19
|
||||
- Fix sending presence unavailable when session terminates for
|
||||
clients that only send directed presences (helps with sometimes
|
||||
not leaving muc rooms on disconnect).
|
||||
- Prevent supervisor errors for sockets that were closed before
|
||||
they were passed to handler modules
|
||||
- Make stun module work better with ipv6 addresses
|
||||
|
||||
# Version 20.03
|
||||
|
||||
* Changes in this version
|
||||
- Add support of ssl connection when connection to mysql
|
||||
database (configured with `sql_ssl: true` option)
|
||||
- Experimental support for cockroachdb when configured
|
||||
with postgres connector
|
||||
- Add cache and optimize queries issued by `mod_shared_roster`,
|
||||
this should greatly improve performance of this module when
|
||||
used with `sql` backend
|
||||
- Fix problem with accessing webadmin
|
||||
- Make webadmin work even when url is missing trailing slash
|
||||
- When compiling external modules with ext_mod, use flags
|
||||
that were detected during compilation of ejabberd
|
||||
- Make config changed to ldap options be updated when issued
|
||||
`reload_config` command
|
||||
- Fix `room_empty_destory` command
|
||||
- Fix reporting errors in `send_stanza` command when xml
|
||||
passed to it couldn't be passed correctly
|
||||
|
||||
# Version 20.02
|
||||
|
||||
* Changes in this version
|
||||
- Fix problems when trying to use string format with unicode
|
||||
values directly in xmpp nodes
|
||||
- Add missing oauth_client table declaration in lite.new.sql
|
||||
- Improve compatibility with CocroachDB
|
||||
- Fix importing of piefxis files that did use scram passwords
|
||||
- Fix importing of piefxis files that had multiple includes
|
||||
in them
|
||||
- Update jiffy dependency
|
||||
- Allow storage of emojis when using mssql database (Thanks
|
||||
to Christoph Scholz)
|
||||
- Make ejabberd_auth_http be able to use auth_opts
|
||||
- Make custom_headers options in http modules correctly
|
||||
override built-in values
|
||||
- Fix return value of reload_config and dump_config commands
|
||||
|
||||
# Version 20.01
|
||||
|
||||
* New features
|
||||
- Implement OAUTH authentication in mqtt
|
||||
- Make logging infrastructure use new logger introduced
|
||||
in Erlang (requires OTP22)
|
||||
- New configuration parser/validator
|
||||
- Initial work on being able to use CockroachDB as database backend
|
||||
- Add gc command
|
||||
- Add option to disable using prepared statements on Postgresql
|
||||
- Implement routine for converting password to SCRAM format
|
||||
for all backends not only SQL
|
||||
- Add infrastructure for having module documentation directly
|
||||
in individual module source code
|
||||
- Generate man page automatically
|
||||
- Implement copy feature in mod_carboncopy
|
||||
|
||||
* Fixes
|
||||
- Make webadmin work with configurable paths
|
||||
- Fix handling of result in xmlrpc module
|
||||
- Make webadmin work even when accessed through not declared domain
|
||||
- Better error reporting in xmlrpc
|
||||
- Limit amount of results returned by disco queries to pubsub nodes
|
||||
- Improve validation of configured JWT keys
|
||||
- Fix race condition in Redis/SQL startup
|
||||
- Fix loading order of third party modules
|
||||
- Fix reloading of ACL rules
|
||||
- Make account removal requests properly route response
|
||||
- Improve handling of malformed inputs in send_message command
|
||||
- Omit push notification if storing message in offline storage
|
||||
failed
|
||||
- Fix crash in stream management when timeout was not set
|
||||
|
||||
# Version 19.09
|
||||
|
||||
* Admin
|
||||
@@ -88,7 +387,7 @@
|
||||
- Improve handling of unexpected iq in mod_muc_room
|
||||
- Attach mod_muc_room processes to a supervisor
|
||||
- Restore room when receiving message or generic iq for not started room
|
||||
- Distribute routing of MUC messages accross all CPU cores
|
||||
- Distribute routing of MUC messages across all CPU cores
|
||||
|
||||
* PubSub
|
||||
- Fix pending nodes retrieval for SQL backend
|
||||
@@ -122,7 +421,7 @@
|
||||
- Make static hooks analyzer working again
|
||||
|
||||
* MUC
|
||||
- Service admins are allowed to recreate room even if archiv is nonempty
|
||||
- Service admins are allowed to recreate room even if archive is nonempty
|
||||
- New option user_mucsub_from_muc_archive
|
||||
- Avoid late arrival of get_disco_item response
|
||||
- Handle get_subscribed_rooms call from mod_muc_room pid
|
||||
|
||||
+126
@@ -0,0 +1,126 @@
|
||||
Compile and Install ejabberd
|
||||
============================
|
||||
|
||||
This document explains how to compile and install ejabberd
|
||||
from source code.
|
||||
|
||||
For a more detailed explanation, please check the
|
||||
ejabberd Docs: [Source Code Installation][docs-source].
|
||||
|
||||
[docs-source]: https://docs.ejabberd.im/admin/installation/#source-code
|
||||
|
||||
|
||||
Requirements
|
||||
------------
|
||||
|
||||
To compile ejabberd you need:
|
||||
|
||||
- GNU Make
|
||||
- GCC
|
||||
- Libexpat ≥ 1.95
|
||||
- Libyaml ≥ 0.1.4
|
||||
- Erlang/OTP ≥ 19.3
|
||||
- OpenSSL ≥ 1.0.0
|
||||
|
||||
Other optional libraries are:
|
||||
|
||||
- Zlib ≥ 1.2.3, for Stream Compression support (XEP-0138)
|
||||
- PAM library, for Pluggable Authentication Modules (PAM)
|
||||
- ImageMagick's Convert program and Ghostscript fonts, for CAPTCHA
|
||||
challenges
|
||||
- Elixir ≥ 1.10.3, to support Elixir, and alternative to rebar/rebar3
|
||||
|
||||
If your system splits packages in libraries and development headers,
|
||||
install the development packages too.
|
||||
|
||||
|
||||
Download Source Code
|
||||
--------------------
|
||||
|
||||
There are several ways to obtain the ejabberd source code:
|
||||
|
||||
- Source code archive from [ProcessOne Downloads][p1dl]
|
||||
- Source code package from [ejabberd GitHub Releases][ghr]
|
||||
- Latest development code from [ejabberd Git repository][gitrepo]
|
||||
|
||||
[p1dl]: https://www.process-one.net/en/ejabberd/downloads/
|
||||
[ghr]: https://github.com/processone/ejabberd/releases
|
||||
[gitrepo]: https://github.com/processone/ejabberd
|
||||
|
||||
|
||||
Compile
|
||||
-------
|
||||
|
||||
The general instructions to compile ejabberd are:
|
||||
|
||||
./configure
|
||||
make
|
||||
|
||||
If the source code doesn't contain a `configure` script,
|
||||
first of all install `autoconf` and run this to generate it:
|
||||
|
||||
./autogen.sh
|
||||
|
||||
To configure the compilation, features, install paths...
|
||||
|
||||
./configure --help
|
||||
|
||||
|
||||
Install in the System
|
||||
---------------------
|
||||
|
||||
To install ejabberd in the system, run this with system administrator rights (root user):
|
||||
|
||||
sudo make install
|
||||
|
||||
This will:
|
||||
|
||||
- Install the configuration files in `/etc/ejabberd/`
|
||||
- Install ejabberd binary, header and runtime files in `/lib/ejabberd/`
|
||||
- Install the administration script: `/sbin/ejabberdctl`
|
||||
- Install ejabberd documentation in `/share/doc/ejabberd/`
|
||||
- Create a spool directory: `/var/lib/ejabberd/`
|
||||
- Create a directory for log files: `/var/log/ejabberd/`
|
||||
|
||||
|
||||
Build an OTP Release
|
||||
--------------------
|
||||
|
||||
Instead of installing ejabberd in the system, you can build an OTP release
|
||||
that includes all necessary to run ejabberd in a subdirectory:
|
||||
|
||||
./configure --with-rebar=rebar3
|
||||
make rel
|
||||
|
||||
Or, if you have Elixir available and plan to develop Elixir code:
|
||||
|
||||
./configure --with-rebar=mix
|
||||
make dev
|
||||
|
||||
Check the full list of targets:
|
||||
|
||||
make help
|
||||
|
||||
|
||||
Start ejabberd
|
||||
--------------
|
||||
|
||||
You can use the `ejabberdctl` command line administration script to
|
||||
start and stop ejabberd. Some examples, depending on your installation method:
|
||||
|
||||
- When installed in the system:
|
||||
```
|
||||
ejabberdctl start
|
||||
/sbin/ejabberdctl start
|
||||
```
|
||||
|
||||
- When built an OTP production release:
|
||||
```
|
||||
_build/prod/rel/ejabberd/bin/ejabberdctl start
|
||||
_build/prod/rel/ejabberd/bin/ejabberdctl live
|
||||
```
|
||||
|
||||
- Start interactively without installing or building OTP release:
|
||||
```
|
||||
make relive
|
||||
```
|
||||
+288
@@ -0,0 +1,288 @@
|
||||
|
||||
[](https://github.com/processone/ejabberd/tags)
|
||||
[](https://github.com/processone/ejabberd/pkgs/container/ejabberd)
|
||||
[](https://hub.docker.com/r/ejabberd/ecs/)
|
||||
|
||||
|
||||
ejabberd Container
|
||||
==================
|
||||
|
||||
[ejabberd][home] is an open-source,
|
||||
robust, scalable and extensible realtime platform built using [Erlang/OTP][erlang],
|
||||
that includes [XMPP][xmpp] Server, [MQTT][mqtt] Broker and [SIP][sip] Service.
|
||||
|
||||
[home]: https://ejabberd.im/
|
||||
[erlang]: https://www.erlang.org/
|
||||
[xmpp]: https://xmpp.org/
|
||||
[mqtt]: https://mqtt.org/
|
||||
[sip]: https://en.wikipedia.org/wiki/Session_Initiation_Protocol
|
||||
|
||||
This document explains how to use the
|
||||
[ejabberd container images](https://github.com/processone/ejabberd/pkgs/container/ejabberd)
|
||||
available in the GitHub Container Registry,
|
||||
built using the files in `.github/container/`.
|
||||
|
||||
Alternatively, there are also
|
||||
[ejabberd-ecs Docker images](https://hub.docker.com/r/ejabberd/ecs/)
|
||||
available in Docker Hub,
|
||||
built using the
|
||||
[docker-ejabberd/ecs](https://github.com/processone/docker-ejabberd/tree/master/ecs)
|
||||
repository.
|
||||
|
||||
If you are using a Windows operating system, check the tutorials mentioned in
|
||||
[ejabberd Docs > Docker Image](https://docs.ejabberd.im/admin/installation/#docker-image).
|
||||
|
||||
|
||||
Start ejabberd
|
||||
--------------
|
||||
|
||||
### With default configuration
|
||||
|
||||
Start ejabberd in a new container:
|
||||
|
||||
```bash
|
||||
docker run --name ejabberd -d -p 5222:5222 ghcr.io/processone/ejabberd
|
||||
```
|
||||
|
||||
That runs the container as a daemon,
|
||||
using ejabberd default configuration file and XMPP domain "localhost".
|
||||
|
||||
Stop the running container:
|
||||
|
||||
```bash
|
||||
docker stop ejabberd
|
||||
```
|
||||
|
||||
Restart the stopped ejabberd container:
|
||||
|
||||
```bash
|
||||
docker restart ejabberd
|
||||
```
|
||||
|
||||
|
||||
### Start with Erlang console attached
|
||||
|
||||
Start ejabberd with an Erlang console attached using the `live` command:
|
||||
|
||||
```bash
|
||||
docker run --name ejabberd -it -p 5222:5222 ghcr.io/processone/ejabberd live
|
||||
```
|
||||
|
||||
That uses the default configuration file and XMPP domain "localhost".
|
||||
|
||||
|
||||
### Start with your configuration and database
|
||||
|
||||
Pass a configuration file as a volume
|
||||
and share the local directory to store database:
|
||||
|
||||
```bash
|
||||
mkdir database
|
||||
chown ejabberd database
|
||||
|
||||
cp ejabberd.yml.example ejabberd.yml
|
||||
|
||||
docker run --name ejabberd -it \
|
||||
-v $(pwd)/ejabberd.yml:/opt/ejabberd/conf/ejabberd.yml \
|
||||
-v $(pwd)/database:/opt/ejabberd/database \
|
||||
-p 5222:5222 ghcr.io/processone/ejabberd live
|
||||
```
|
||||
|
||||
Notice that ejabberd runs in the container with an account named `ejabberd`,
|
||||
and the volumes you mount must grant proper rights to that account.
|
||||
|
||||
|
||||
Next steps
|
||||
----------
|
||||
|
||||
### Register the administrator account
|
||||
|
||||
The default ejabberd configuration does not grant admin privileges
|
||||
to any account,
|
||||
you may want to register a new account in ejabberd
|
||||
and grant it admin rights.
|
||||
|
||||
Register an account using the `ejabberdctl` script:
|
||||
|
||||
```bash
|
||||
docker exec -it ejabberd ejabberdctl register admin localhost passw0rd
|
||||
```
|
||||
|
||||
Then edit conf/ejabberd.yml and add the ACL as explained in
|
||||
[ejabberd Docs: Administration Account](https://docs.ejabberd.im/admin/installation/#administration-account)
|
||||
|
||||
|
||||
### Check ejabberd log files
|
||||
|
||||
Check the content of the log files inside the container,
|
||||
even if you do not put it on a shared persistent drive:
|
||||
|
||||
```bash
|
||||
docker exec -it ejabberd tail -f logs/ejabberd.log
|
||||
```
|
||||
|
||||
|
||||
### Inspect the container files
|
||||
|
||||
The container uses Alpine Linux. Start a shell inside the container:
|
||||
|
||||
```bash
|
||||
docker exec -it ejabberd sh
|
||||
```
|
||||
|
||||
|
||||
### Open ejabberd debug console
|
||||
|
||||
Open an interactive debug Erlang console attached to a running ejabberd in a running container:
|
||||
|
||||
```bash
|
||||
docker exec -it ejabberd ejabberdctl debug
|
||||
```
|
||||
|
||||
|
||||
### CAPTCHA
|
||||
|
||||
ejabberd includes two example CAPTCHA scripts.
|
||||
If you want to use any of them, first install some additional required libraries:
|
||||
|
||||
```bash
|
||||
docker exec --user root ejabberd apk add imagemagick ghostscript-fonts bash
|
||||
```
|
||||
|
||||
Now update your ejabberd configuration file, for example:
|
||||
```bash
|
||||
docker exec -it ejabberd vi conf/ejabberd.yml
|
||||
```
|
||||
|
||||
and add the required options:
|
||||
```
|
||||
captcha_cmd: /opt/ejabberd-22.04/lib/ejabberd-22.04/priv/bin/captcha.sh
|
||||
captcha_url: https://localhost:5443/captcha
|
||||
```
|
||||
|
||||
Finally, reload the configuration file or restart the container:
|
||||
```bash
|
||||
docker exec ejabberd ejabberdctl reload_config
|
||||
```
|
||||
|
||||
|
||||
Advanced Container Configuration
|
||||
--------------------------------
|
||||
|
||||
### Ports
|
||||
|
||||
This container image exposes the ports:
|
||||
|
||||
- `5222`: The default port for XMPP clients.
|
||||
- `5269`: For XMPP federation. Only needed if you want to communicate with users on other servers.
|
||||
- `5280`: For admin interface.
|
||||
- `5443`: With encryption, used for admin interface, API, CAPTCHA, OAuth, Websockets and XMPP BOSH.
|
||||
- `1883`: Used for MQTT
|
||||
- `4369-4399`: EPMD and Erlang connectivity, used for `ejabberdctl` and clustering
|
||||
|
||||
|
||||
### Volumes
|
||||
|
||||
ejabberd produces two types of data: log files and database spool files (Mnesia).
|
||||
This is the kind of data you probably want to store on a persistent or local drive (at least the database).
|
||||
|
||||
The volumes you may want to map:
|
||||
|
||||
- `/opt/ejabberd/conf/`: Directory containing configuration and certificates
|
||||
- `/opt/ejabberd/database/`: Directory containing Mnesia database.
|
||||
You should back up or export the content of the directory to persistent storage
|
||||
(host storage, local storage, any storage plugin)
|
||||
- `/opt/ejabberd/logs/`: Directory containing log files
|
||||
- `/opt/ejabberd/upload/`: Directory containing uploaded files. This should also be backed up.
|
||||
|
||||
All these files are owned by `ejabberd` user inside the container.
|
||||
|
||||
It's possible to install additional ejabberd modules using volumes,
|
||||
[this comment](https://github.com/processone/docker-ejabberd/issues/81#issuecomment-1036115146)
|
||||
explains how to install an additional module using docker-compose.
|
||||
|
||||
|
||||
### Commands on start
|
||||
|
||||
The ejabberdctl script reads the `CTL_ON_CREATE` environment variable
|
||||
the first time the docker container is started,
|
||||
and reads `CTL_ON_START` every time the container is started.
|
||||
Those variables can contain one ejabberdctl command,
|
||||
or several commands separated with the blankspace and `;` characters.
|
||||
|
||||
Example usage (see full example [docker-compose.yml](https://github.com/processone/docker-ejabberd/issues/64#issuecomment-887741332)):
|
||||
```yaml
|
||||
environment:
|
||||
- CTL_ON_CREATE=register admin localhost asd
|
||||
- CTL_ON_START=stats registeredusers ;
|
||||
check_password admin localhost asd ;
|
||||
status
|
||||
```
|
||||
|
||||
|
||||
### Clustering
|
||||
|
||||
When setting several containers to form a
|
||||
[cluster of ejabberd nodes](https://docs.ejabberd.im/admin/guide/clustering/),
|
||||
each one must have a different
|
||||
[Erlang Node Name](https://docs.ejabberd.im/admin/guide/security/#erlang-node-name)
|
||||
and the same
|
||||
[Erlang Cookie](https://docs.ejabberd.im/admin/guide/security/#erlang-cookie).
|
||||
|
||||
For this you can either:
|
||||
- edit `conf/ejabberdctl.cfg` and set variables `ERLANG_NODE` and `ERLANG_COOKIE`
|
||||
- set the environment variables `ERLANG_NODE_ARG` and `ERLANG_COOKIE`
|
||||
|
||||
Example using environment variables (see full example [docker-compose.yml](https://github.com/processone/docker-ejabberd/issues/64#issuecomment-887741332)):
|
||||
```yaml
|
||||
environment:
|
||||
- ERLANG_NODE_ARG=ejabberd@node7
|
||||
- ERLANG_COOKIE=dummycookie123
|
||||
```
|
||||
|
||||
|
||||
Generating a Container Image
|
||||
----------------------------
|
||||
|
||||
This container image includes ejabberd as a standalone OTP release built using Elixir.
|
||||
|
||||
That OTP release is configured with:
|
||||
|
||||
- `mix.exs`: Customize ejabberd release
|
||||
- `vars.config`: ejabberd compilation configuration options
|
||||
- `config/runtime.exs`: Customize ejabberd paths
|
||||
- `ejabberd.yml.template`: ejabberd default config file
|
||||
|
||||
Build ejabberd Community Server base image from ejabberd master on GitHub:
|
||||
|
||||
```bash
|
||||
VERSION = master
|
||||
docker build \
|
||||
--build-arg VERSION=$(VERSION) \
|
||||
-t personal/ejabberd:$(VERSION) \
|
||||
.github/container
|
||||
```
|
||||
|
||||
Build ejabberd Community Server base image for a given ejabberd version,
|
||||
both for amd64 and arm64 architectures:
|
||||
|
||||
```bash
|
||||
VERSION = 22.05
|
||||
docker buildx build \
|
||||
--platform=linux/amd64,linux/arm64
|
||||
--build-arg VERSION=$(VERSION) \
|
||||
-t personal/ejabberd:$(VERSION) \
|
||||
.github/container
|
||||
```
|
||||
|
||||
It's also possible to use podman instead of docker, just notice:
|
||||
- `EXPOSE 4369-4399` port range is not supported, remove that in Dockerfile
|
||||
- It mentions that `healthcheck` is not supported by the Open Container Initiative image format
|
||||
- If you want to start with command `live`, add environment variable `EJABBERD_BYPASS_WARNINGS=true`
|
||||
```bash
|
||||
VERSION = master
|
||||
podman build \
|
||||
--build-arg VERSION=$(VERSION) \
|
||||
-t ja:$(version) \
|
||||
.github/container
|
||||
```
|
||||
+5
-3
@@ -36,6 +36,7 @@ support and redirect people to the section you are reading right now.
|
||||
Other channels for support are:
|
||||
- [ejabberd Mailing List][list]
|
||||
- [ejabberd XMPP room][muc]: ejabberd@conference.process-one.net
|
||||
- [ejabberd XMPP room logs][logs]
|
||||
|
||||
### <a name="issue"></a> Found an Issue or Bug?
|
||||
|
||||
@@ -95,10 +96,10 @@ Before you submit your pull request consider the following guidelines:
|
||||
git push origin my-fix-branch
|
||||
```
|
||||
|
||||
* In GitHub, send a pull request to `ejabberd:master`. This will trigger the Travis integration and run the test.
|
||||
* In GitHub, send a pull request to `ejabberd:master`. This will trigger the automated testing.
|
||||
We will also notify you if you have not yet signed the [contribution agreement][cla].
|
||||
|
||||
* If you find that the Travis integration has failed, look into the logs on Travis to find out
|
||||
* If you find that the tests have failed, look into the logs to find out
|
||||
if your changes caused test failures, the commit message was malformed etc. If you find that the
|
||||
tests failed or times out for unrelated reasons, you can ping a team member so that the build can be
|
||||
restarted.
|
||||
@@ -136,8 +137,9 @@ gives us the option to relicense the code with a more permissive license in the
|
||||
|
||||
[coc]: https://github.com/processone/ejabberd/blob/master/CODE_OF_CONDUCT.md
|
||||
[stackoverflow]: https://stackoverflow.com/questions/tagged/ejabberd?sort=newest
|
||||
[list]: http://lists.jabber.ru/mailman/listinfo/ejabberd
|
||||
[list]: https://lists.jabber.ru/mailman/listinfo/ejabberd
|
||||
[muc]: xmpp:ejabberd@conference.process-one.net
|
||||
[logs]: https://process-one.net/logs/ejabberd@conference.process-one.net/
|
||||
[github]: https://github.com/processone/ejabberd
|
||||
[github-issues]: https://github.com/processone/ejabberd/issues
|
||||
[github-new-issue]: https://github.com/processone/ejabberd/issues/new
|
||||
|
||||
+196
-68
@@ -1,4 +1,5 @@
|
||||
REBAR = @ESCRIPT@ rebar
|
||||
REBAR = @ESCRIPT@ @rebar@
|
||||
MIX = @rebar@
|
||||
INSTALL = @INSTALL@
|
||||
SED = @SED@
|
||||
ERL = @ERL@
|
||||
@@ -28,6 +29,9 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
datarootdir = @datarootdir@
|
||||
DOCDIR = $(DESTDIR)@docdir@
|
||||
|
||||
# /share/doc/man/man5
|
||||
MANDIR = $(DESTDIR)@mandir@/man5
|
||||
|
||||
# /usr/lib/ejabberd/ebin/
|
||||
BEAMDIR = $(EJABBERDDIR)/ebin
|
||||
|
||||
@@ -64,12 +68,6 @@ LUADIR = $(PRIVDIR)/lua
|
||||
# /var/lib/ejabberd/
|
||||
SPOOLDIR = $(DESTDIR)@localstatedir@/lib/ejabberd
|
||||
|
||||
# /var/lock/ejabberdctl
|
||||
CTLLOCKDIR = $(DESTDIR)@localstatedir@/lock/ejabberdctl
|
||||
|
||||
# /var/lib/ejabberd/.erlang.cookie
|
||||
COOKIEFILE = $(SPOOLDIR)/.erlang.cookie
|
||||
|
||||
# /var/log/ejabberd/
|
||||
LOGDIR = $(DESTDIR)@localstatedir@/log/ejabberd
|
||||
|
||||
@@ -94,39 +92,99 @@ ifneq ($(INSTALLGROUP),)
|
||||
G_USER=-g $(INSTALLGROUP)
|
||||
endif
|
||||
|
||||
ifeq "$(MIX)" "mix"
|
||||
REBAR_VER:=6
|
||||
REBAR_VER_318:=0
|
||||
else
|
||||
REBAR_VER:=$(shell $(REBAR) --version | awk -F '[ .]' '/rebar / {print $$2}')
|
||||
REBAR_VER_318:=$(shell $(REBAR) --version | awk -F '[ .]' '/rebar / {print ($$2 == 3 && $$3 >= 18 ? 1 : 0)}')
|
||||
endif
|
||||
|
||||
ifeq "$(REBAR_VER)" "6"
|
||||
REBAR=$(MIX)
|
||||
SKIPDEPS=
|
||||
LISTDEPS=deps.tree
|
||||
UPDATEDEPS=deps.update
|
||||
DEPSPATTERN="s/.*─ \([a-z0-9_]*\) .*/\1/p;"
|
||||
DEPSBASE=_build
|
||||
DEPSDIR=$(DEPSBASE)/dev/lib
|
||||
GET_DEPS= deps.get
|
||||
CONFIGURE_DEPS=
|
||||
EBINDIR=$(DEPSDIR)/ejabberd/ebin
|
||||
XREFOPTIONS=graph
|
||||
REBARREL=MIX_ENV=prod $(REBAR) release --overwrite
|
||||
REBARDEV=MIX_ENV=dev $(REBAR) release --overwrite
|
||||
RELIVECMD=escript rel/relive.escript && MIX_ENV=dev RELIVE=true iex --name ejabberd@localhost -S mix run
|
||||
else
|
||||
ifeq "$(REBAR_VER)" "3"
|
||||
SKIPDEPS=
|
||||
LISTDEPS=tree
|
||||
ifeq "$(REBAR_VER_318)" "1"
|
||||
UPDATEDEPS=upgrade --all
|
||||
else
|
||||
UPDATEDEPS=upgrade
|
||||
endif
|
||||
DEPSPATTERN="s/ (.*//; /^ / s/.* \([a-z0-9_]*\).*/\1/p;"
|
||||
DEPSBASE=_build
|
||||
DEPSDIR=$(DEPSBASE)/default/lib
|
||||
GET_DEPS= get-deps
|
||||
CONFIGURE_DEPS=$(REBAR) configure-deps
|
||||
EBINDIR=$(DEPSDIR)/ejabberd/ebin
|
||||
XREFOPTIONS=
|
||||
REBARREL=$(REBAR) as prod tar
|
||||
REBARDEV=REBAR_PROFILE=dev $(REBAR) release
|
||||
RELIVECMD=$(REBAR) relive
|
||||
else
|
||||
SKIPDEPS=skip_deps=true
|
||||
LISTDEPS=-q list-deps
|
||||
UPDATEDEPS=update-deps
|
||||
DEPSPATTERN="/ TAG / s/ .*// p; / REV / s/ .*// p; / BRANCH / s/ .*// p;"
|
||||
DEPSBASE=deps
|
||||
DEPSDIR=$(DEPSBASE)
|
||||
GET_DEPS= get-deps
|
||||
CONFIGURE_DEPS=$(REBAR) configure-deps
|
||||
EBINDIR=ebin
|
||||
XREFOPTIONS=
|
||||
REBARREL=$(REBAR) generate
|
||||
REBARDEV=
|
||||
RELIVECMD=@echo "Rebar2 detected... relive not supported.\
|
||||
\nTry: ./configure --with-rebar=./rebar3 ; make relive"
|
||||
endif
|
||||
endif
|
||||
|
||||
all: deps src
|
||||
|
||||
deps: deps/.got
|
||||
deps: $(DEPSDIR)/.got
|
||||
|
||||
deps/.got:
|
||||
rm -rf deps/.got
|
||||
rm -rf deps/.built
|
||||
mkdir -p deps
|
||||
$(REBAR) get-deps && :> deps/.got
|
||||
$(DEPSDIR)/.got:
|
||||
rm -rf $(DEPSDIR)/.got
|
||||
rm -rf $(DEPSDIR)/.built
|
||||
mkdir -p $(DEPSDIR)
|
||||
$(REBAR) $(GET_DEPS) && :> $(DEPSDIR)/.got
|
||||
|
||||
deps/.built: deps/.got
|
||||
$(REBAR) configure-deps
|
||||
$(REBAR) compile && :> deps/.built
|
||||
$(DEPSDIR)/.built: $(DEPSDIR)/.got
|
||||
$(CONFIGURE_DEPS)
|
||||
$(REBAR) compile && :> $(DEPSDIR)/.built
|
||||
|
||||
src: deps/.built
|
||||
$(REBAR) skip_deps=true compile
|
||||
src: $(DEPSDIR)/.built
|
||||
$(REBAR) $(SKIPDEPS) compile
|
||||
|
||||
update:
|
||||
rm -rf deps/.got
|
||||
rm -rf deps/.built
|
||||
$(REBAR) update-deps && :> deps/.got
|
||||
rm -rf $(DEPSDIR)/.got
|
||||
rm -rf $(DEPSDIR)/.built
|
||||
$(REBAR) $(UPDATEDEPS) && :> $(DEPSDIR)/.got
|
||||
|
||||
xref: all
|
||||
$(REBAR) skip_deps=true xref
|
||||
$(REBAR) $(SKIPDEPS) xref $(XREFOPTIONS)
|
||||
|
||||
hooks: all
|
||||
tools/hook_deps.sh ebin
|
||||
tools/hook_deps.sh $(EBINDIR)
|
||||
|
||||
options: all
|
||||
tools/opt_types.sh ejabberd_option ebin
|
||||
tools/opt_types.sh ejabberd_option $(EBINDIR)
|
||||
|
||||
translations:
|
||||
tools/prepare-tr.sh
|
||||
tools/prepare-tr.sh $(DEPSDIR)
|
||||
|
||||
edoc:
|
||||
$(ERL) -noinput +B -eval \
|
||||
@@ -136,10 +194,13 @@ JOIN_PATHS=$(if $(wordlist 2,1000,$(1)),$(firstword $(1))/$(call JOIN_PATHS,$(wo
|
||||
|
||||
VERSIONED_DEP=$(if $(DEP_$(1)_VERSION),$(DEP_$(1)_VERSION),$(1))
|
||||
|
||||
DEPIX:=$(words $(subst /, ,$(DEPSDIR)))
|
||||
LIBIX:=$(shell expr "$(DEPIX)" + 2)
|
||||
|
||||
ELIXIR_TO_DEST=$(LIBDIR) $(call VERSIONED_DEP,$(word 2,$(1))) $(wordlist 5,1000,$(1))
|
||||
DEPS_TO_DEST=$(LIBDIR) $(call VERSIONED_DEP,$(word 2,$(1))) $(wordlist 3,1000,$(1))
|
||||
MAIN_TO_DEST=$(LIBDIR) $(call VERSIONED_DEP,ejabberd) $(1)
|
||||
TO_DEST_SINGLE=$(if $(subst XdepsX,,X$(word 1,$(1))X),$(call MAIN_TO_DEST,$(1)),$(if $(subst XlibX,,X$(word 3,$(1))X),$(call DEPS_TO_DEST,$(1)),$(call ELIXIR_TO_DEST,$(1))))
|
||||
TO_DEST_SINGLE=$(if $(subst X$(DEPSBASE)X,,X$(word 1,$(1))X),$(call MAIN_TO_DEST,$(1)),$(if $(subst XlibX,,X$(word $(LIBIX),$(1))X),$(call DEPS_TO_DEST,$(wordlist $(DEPIX),1000,$(1))),$(call ELIXIR_TO_DEST,$(wordlist $(DEPIX),1000,$(1)))))
|
||||
TO_DEST=$(foreach path,$(1),$(call JOIN_PATHS,$(call TO_DEST_SINGLE,$(subst /, ,$(path)))))
|
||||
|
||||
FILTER_DIRS=$(foreach path,$(1),$(if $(wildcard $(path)/*),,$(path)))
|
||||
@@ -147,16 +208,16 @@ FILES_WILDCARD=$(call FILTER_DIRS,$(foreach w,$(1),$(wildcard $(w))))
|
||||
|
||||
ifeq ($(MAKECMDGOALS),copy-files-sub)
|
||||
|
||||
DEPS:=$(sort $(shell $(REBAR) -q list-deps|$(SED) -ne '/ TAG / s/ .*// p; / REV / s/ .*// p; / BRANCH / s/ .*// p'))
|
||||
DEPS:=$(sort $(shell QUIET=1 $(REBAR) $(LISTDEPS) | $(SED) -ne $(DEPSPATTERN) ))
|
||||
|
||||
DEPS_FILES=$(call FILES_WILDCARD,$(foreach DEP,$(DEPS),deps/$(DEP)/ebin/*.beam deps/$(DEP)/ebin/*.app deps/$(DEP)/priv/* deps/$(DEP)/priv/lib/* deps/$(DEP)/priv/bin/* deps/$(DEP)/include/*.hrl deps/$(DEP)/COPY* deps/$(DEP)/LICENSE* deps/$(DEP)/lib/*/ebin/*.beam deps/$(DEP)/lib/*/ebin/*.app))
|
||||
DEPS_FILES=$(call FILES_WILDCARD,$(foreach DEP,$(DEPS),$(DEPSDIR)/$(DEP)/ebin/*.beam $(DEPSDIR)/$(DEP)/ebin/*.app $(DEPSDIR)/$(DEP)/priv/* $(DEPSDIR)/$(DEP)/priv/lib/* $(DEPSDIR)/$(DEP)/priv/bin/* $(DEPSDIR)/$(DEP)/include/*.hrl $(DEPSDIR)/$(DEP)/COPY* $(DEPSDIR)/$(DEP)/LICENSE* $(DEPSDIR)/$(DEP)/lib/*/ebin/*.beam $(DEPSDIR)/$(DEP)/lib/*/ebin/*.app))
|
||||
|
||||
BINARIES=deps/epam/priv/bin/epam deps/eimp/priv/bin/eimp deps/fs/priv/mac_listener
|
||||
BINARIES=$(DEPSDIR)/epam/priv/bin/epam $(DEPSDIR)/eimp/priv/bin/eimp $(DEPSDIR)/fs/priv/mac_listener
|
||||
|
||||
DEPS_FILES_FILTERED=$(filter-out $(BINARIES) deps/elixir/ebin/elixir.app,$(DEPS_FILES))
|
||||
DEPS_DIRS=$(sort deps/ $(foreach DEP,$(DEPS),deps/$(DEP)/) $(dir $(DEPS_FILES)))
|
||||
DEPS_FILES_FILTERED=$(filter-out $(BINARIES) $(DEPSDIR)/elixir/ebin/elixir.app,$(DEPS_FILES))
|
||||
DEPS_DIRS=$(sort $(DEPSDIR)/ $(foreach DEP,$(DEPS),$(DEPSDIR)/$(DEP)/) $(dir $(DEPS_FILES)))
|
||||
|
||||
MAIN_FILES=$(filter-out %/configure.beam,$(call FILES_WILDCARD,ebin/*.beam ebin/*.app priv/msgs/*.msg priv/css/*.css priv/img/*.png priv/js/*.js priv/lib/* include/*.hrl COPYING))
|
||||
MAIN_FILES=$(filter-out %/configure.beam,$(call FILES_WILDCARD,$(EBINDIR)/*.beam $(EBINDIR)/*.app priv/msgs/*.msg priv/css/*.css priv/img/*.png priv/js/*.js priv/lib/* include/*.hrl COPYING))
|
||||
MAIN_DIRS=$(sort $(dir $(MAIN_FILES)) priv/bin priv/sql priv/lua)
|
||||
|
||||
define DEP_VERSION_template
|
||||
@@ -165,8 +226,8 @@ endef
|
||||
|
||||
DELETE_TARGET_SO=$(if $(subst X.soX,,X$(suffix $(1))X),,rm -f $(call TO_DEST,$(1));)
|
||||
|
||||
$(foreach DEP,$(DEPS),$(eval $(call DEP_VERSION_template,$(DEP),deps/$(DEP)/ebin/$(DEP).app)))
|
||||
$(eval $(call DEP_VERSION_template,ejabberd,ebin/ejabberd.app))
|
||||
$(foreach DEP,$(DEPS),$(eval $(call DEP_VERSION_template,$(DEP),$(DEPSDIR)/$(DEP)/ebin/$(DEP).app)))
|
||||
$(eval $(call DEP_VERSION_template,ejabberd,$(EBINDIR)/ejabberd.app))
|
||||
|
||||
define COPY_template
|
||||
$(call TO_DEST,$(1)): $(1) $(call TO_DEST,$(dir $(1))) ; $(call DELETE_TARGET_SO, $(1)) $$(INSTALL) -m 644 $(1) $(call TO_DEST,$(1))
|
||||
@@ -186,13 +247,24 @@ $(sort $(call TO_DEST,$(MAIN_DIRS) $(DEPS_DIRS))):
|
||||
$(call TO_DEST,priv/sql/lite.sql): sql/lite.sql $(call TO_DEST,priv/sql)
|
||||
$(INSTALL) -m 644 $< $@
|
||||
|
||||
$(call TO_DEST,priv/sql/lite.new.sql): sql/lite.new.sql $(call TO_DEST,priv/sql)
|
||||
$(INSTALL) -m 644 $< $@
|
||||
|
||||
$(call TO_DEST,priv/bin/captcha.sh): tools/captcha.sh $(call TO_DEST,priv/bin)
|
||||
$(INSTALL) -m 755 $(O_USER) $< $@
|
||||
|
||||
$(call TO_DEST,priv/lua/redis_sm.lua): priv/lua/redis_sm.lua $(call TO_DEST,priv/lua)
|
||||
$(INSTALL) -m 644 $< $@
|
||||
|
||||
copy-files-sub2: $(call TO_DEST,$(DEPS_FILES) $(MAIN_FILES) priv/bin/captcha.sh priv/sql/lite.sql priv/lua/redis_sm.lua)
|
||||
ifeq (@sqlite@,true)
|
||||
SQLITE_FILES = priv/sql/lite.sql priv/sql/lite.new.sql
|
||||
endif
|
||||
|
||||
ifeq (@redis@,true)
|
||||
REDIS_FILES = priv/lua/redis_sm.lua
|
||||
endif
|
||||
|
||||
copy-files-sub2: $(call TO_DEST,$(DEPS_FILES) $(MAIN_FILES) priv/bin/captcha.sh $(SQLITE_FILES) $(REDIS_FILES))
|
||||
|
||||
.PHONY: $(call TO_DEST,$(DEPS_FILES) $(MAIN_DIRS) $(DEPS_DIRS))
|
||||
|
||||
@@ -203,23 +275,46 @@ copy-files:
|
||||
|
||||
copy-files-sub: copy-files-sub2
|
||||
|
||||
install: all copy-files
|
||||
relive:
|
||||
$(RELIVECMD)
|
||||
|
||||
relivelibdir=$(shell pwd)/$(DEPSDIR)
|
||||
relivedir=$(shell pwd)/_build/relive
|
||||
iexpath=$(shell which iex)
|
||||
CONFIG_DIR = ${relivedir}/conf
|
||||
SPOOL_DIR = ${relivedir}/database
|
||||
LOGS_DIR = ${relivedir}/logs
|
||||
|
||||
ejabberdctl.relive:
|
||||
$(SED) -e "s*{{installuser}}*@INSTALLUSER@*g" \
|
||||
-e "s*{{config_dir}}*${CONFIG_DIR}*g" \
|
||||
-e "s*{{logs_dir}}*${LOGS_DIR}*g" \
|
||||
-e "s*{{spool_dir}}*${SPOOL_DIR}*g" \
|
||||
-e "s*{{bindir}}/iex*$(iexpath)*g" \
|
||||
-e "s*{{bindir}}*@bindir@*g" \
|
||||
-e "s*{{libdir}}*${relivelibdir}*g" \
|
||||
-e "s*{{erl}}*@ERL@*g" \
|
||||
-e "s*{{epmd}}*@EPMD@*g" ejabberdctl.template \
|
||||
> ejabberdctl.relive
|
||||
|
||||
ejabberdctl.example: vars.config
|
||||
$(SED) -e "s*{{installuser}}*@INSTALLUSER@*g" \
|
||||
-e "s*{{config_dir}}*${ETCDIR}*g" \
|
||||
-e "s*{{logs_dir}}*${LOGDIR}*g" \
|
||||
-e "s*{{spool_dir}}*${SPOOLDIR}*g" \
|
||||
-e "s*{{bindir}}*@bindir@*g" \
|
||||
-e "s*{{libdir}}*@libdir@*g" \
|
||||
-e "s*{{erl}}*@ERL@*g" \
|
||||
-e "s*{{epmd}}*@EPMD@*g" ejabberdctl.template \
|
||||
> ejabberdctl.example
|
||||
|
||||
install: copy-files ejabberdctl.example
|
||||
#
|
||||
# Configuration files
|
||||
$(INSTALL) -d -m 750 $(G_USER) $(ETCDIR)
|
||||
[ -f $(ETCDIR)/ejabberd.yml ] \
|
||||
&& $(INSTALL) -b -m 640 $(G_USER) ejabberd.yml.example $(ETCDIR)/ejabberd.yml-new \
|
||||
|| $(INSTALL) -b -m 640 $(G_USER) ejabberd.yml.example $(ETCDIR)/ejabberd.yml
|
||||
$(SED) -e "s*{{rootdir}}*@prefix@*g" \
|
||||
-e "s*{{installuser}}*@INSTALLUSER@*g" \
|
||||
-e "s*{{bindir}}*@bindir@*g" \
|
||||
-e "s*{{libdir}}*@libdir@*g" \
|
||||
-e "s*{{sysconfdir}}*@sysconfdir@*g" \
|
||||
-e "s*{{localstatedir}}*@localstatedir@*g" \
|
||||
-e "s*{{docdir}}*@docdir@*g" \
|
||||
-e "s*{{erl}}*@ERL@*g" \
|
||||
-e "s*{{epmd}}*@EPMD@*g" ejabberdctl.template \
|
||||
> ejabberdctl.example
|
||||
[ -f $(ETCDIR)/ejabberdctl.cfg ] \
|
||||
&& $(INSTALL) -b -m 640 $(G_USER) ejabberdctl.cfg.example $(ETCDIR)/ejabberdctl.cfg-new \
|
||||
|| $(INSTALL) -b -m 640 $(G_USER) ejabberdctl.cfg.example $(ETCDIR)/ejabberdctl.cfg
|
||||
@@ -230,9 +325,9 @@ install: all copy-files
|
||||
$(INSTALL) -m 550 $(G_USER) ejabberdctl.example $(SBINDIR)/ejabberdctl
|
||||
# Elixir binaries
|
||||
[ -d $(BINDIR) ] || $(INSTALL) -d -m 755 $(BINDIR)
|
||||
[ -f deps/elixir/bin/iex ] && $(INSTALL) -m 550 $(G_USER) deps/elixir/bin/iex $(BINDIR)/iex || true
|
||||
[ -f deps/elixir/bin/elixir ] && $(INSTALL) -m 550 $(G_USER) deps/elixir/bin/elixir $(BINDIR)/elixir || true
|
||||
[ -f deps/elixir/bin/mix ] && $(INSTALL) -m 550 $(G_USER) deps/elixir/bin/mix $(BINDIR)/mix || true
|
||||
[ -f $(DEPSDIR)/elixir/bin/iex ] && $(INSTALL) -m 550 $(G_USER) $(DEPSDIR)/elixir/bin/iex $(BINDIR)/iex || true
|
||||
[ -f $(DEPSDIR)/elixir/bin/elixir ] && $(INSTALL) -m 550 $(G_USER) $(DEPSDIR)/elixir/bin/elixir $(BINDIR)/elixir || true
|
||||
[ -f $(DEPSDIR)/elixir/bin/mix ] && $(INSTALL) -m 550 $(G_USER) $(DEPSDIR)/elixir/bin/mix $(BINDIR)/mix || true
|
||||
#
|
||||
# Init script
|
||||
$(SED) -e "s*@ctlscriptpath@*$(SBINDIR)*g" \
|
||||
@@ -241,7 +336,8 @@ install: all copy-files
|
||||
chmod 755 ejabberd.init
|
||||
#
|
||||
# Service script
|
||||
$(SED) -e "s*@ctlscriptpath@*$(SBINDIR)*g" ejabberd.service.template \
|
||||
$(SED) -e "s*@ctlscriptpath@*$(SBINDIR)*g" \
|
||||
-e "s*@installuser@*$(INIT_USER)*g" ejabberd.service.template \
|
||||
> ejabberd.service
|
||||
chmod 644 ejabberd.service
|
||||
#
|
||||
@@ -249,12 +345,6 @@ install: all copy-files
|
||||
$(INSTALL) -d -m 750 $(O_USER) $(SPOOLDIR)
|
||||
$(CHOWN_COMMAND) -R @INSTALLUSER@ $(SPOOLDIR) >$(CHOWN_OUTPUT)
|
||||
chmod -R 750 $(SPOOLDIR)
|
||||
[ ! -f $(COOKIEFILE) ] || { $(CHOWN_COMMAND) @INSTALLUSER@ $(COOKIEFILE) >$(CHOWN_OUTPUT) ; chmod 400 $(COOKIEFILE) ; }
|
||||
#
|
||||
# ejabberdctl lock directory
|
||||
$(INSTALL) -d -m 750 $(O_USER) $(CTLLOCKDIR)
|
||||
$(CHOWN_COMMAND) -R @INSTALLUSER@ $(CTLLOCKDIR) >$(CHOWN_OUTPUT)
|
||||
chmod -R 750 $(CTLLOCKDIR)
|
||||
#
|
||||
# Log directory
|
||||
$(INSTALL) -d -m 750 $(O_USER) $(LOGDIR)
|
||||
@@ -262,10 +352,11 @@ install: all copy-files
|
||||
chmod -R 750 $(LOGDIR)
|
||||
#
|
||||
# Documentation
|
||||
$(INSTALL) -d $(MANDIR)
|
||||
$(INSTALL) -d $(DOCDIR)
|
||||
[ -f doc/guide.html ] \
|
||||
&& $(INSTALL) -m 644 doc/guide.html $(DOCDIR) \
|
||||
|| echo "Documentation not included in sources"
|
||||
[ -f man/ejabberd.yml.5 ] \
|
||||
&& $(INSTALL) -m 644 man/ejabberd.yml.5 $(MANDIR) \
|
||||
|| echo "Man page not included in sources"
|
||||
$(INSTALL) -m 644 COPYING $(DOCDIR)
|
||||
|
||||
uninstall: uninstall-binary
|
||||
@@ -303,12 +394,11 @@ uninstall-all: uninstall-binary
|
||||
rm -rf $(ETCDIR)
|
||||
rm -rf $(EJABBERDDIR)
|
||||
rm -rf $(SPOOLDIR)
|
||||
rm -rf $(CTLLOCKDIR)
|
||||
rm -rf $(LOGDIR)
|
||||
|
||||
clean:
|
||||
rm -rf deps/.got
|
||||
rm -rf deps/.built
|
||||
rm -rf $(DEPSDIR)/.got
|
||||
rm -rf $(DEPSDIR)/.built
|
||||
rm -rf test/*.beam
|
||||
$(REBAR) clean
|
||||
|
||||
@@ -319,22 +409,32 @@ distclean: clean clean-rel
|
||||
rm -f config.status
|
||||
rm -f config.log
|
||||
rm -rf autom4te.cache
|
||||
rm -rf deps
|
||||
rm -rf ebin
|
||||
rm -rf $(EBINDIR)
|
||||
rm -rf $(DEPSBASE)
|
||||
rm -f Makefile
|
||||
rm -f vars.config
|
||||
rm -f src/ejabberd.app.src
|
||||
rm -f ejabberdctl.example ejabberd.init ejabberd.service
|
||||
[ ! -f ../ChangeLog ] || rm -f ../ChangeLog
|
||||
|
||||
rel: all
|
||||
$(REBAR) generate
|
||||
rel:
|
||||
$(REBARREL)
|
||||
|
||||
DEV_CONFIG = _build/dev/rel/ejabberd/conf/ejabberd.yml
|
||||
|
||||
dev $(DEV_CONFIG):
|
||||
$(REBARDEV)
|
||||
|
||||
TAGS:
|
||||
etags *.erl
|
||||
|
||||
Makefile: Makefile.in
|
||||
|
||||
deps := $(wildcard deps/*/ebin)
|
||||
ifeq "$(REBAR_VER)" "3"
|
||||
dialyzer:
|
||||
$(REBAR) dialyzer
|
||||
else
|
||||
deps := $(wildcard $(DEPSDIR)/*/ebin)
|
||||
|
||||
dialyzer/erlang.plt:
|
||||
@mkdir -p dialyzer
|
||||
@@ -372,14 +472,42 @@ dialyzer: erlang_plt deps_plt ejabberd_plt
|
||||
@dialyzer --plts dialyzer/*.plt --no_check_plt \
|
||||
--get_warnings -o dialyzer/error.log ebin; \
|
||||
status=$$? ; if [ $$status -ne 2 ]; then exit $$status; else exit 0; fi
|
||||
endif
|
||||
|
||||
test:
|
||||
@echo "************************** NOTICE ***************************************"
|
||||
@cat test/README
|
||||
@echo "*************************************************************************"
|
||||
@cd priv && ln -sf ../sql
|
||||
$(REBAR) skip_deps=true ct
|
||||
$(REBAR) $(SKIPDEPS) ct
|
||||
|
||||
.PHONY: src edoc dialyzer Makefile TAGS clean clean-rel distclean rel \
|
||||
install uninstall uninstall-binary uninstall-all translations deps test \
|
||||
quicktest erlang_plt deps_plt ejabberd_plt xref hooks options
|
||||
|
||||
help:
|
||||
@echo ""
|
||||
@echo " [all] Compile dependencies and ejabberd"
|
||||
@echo " src Compile ejabberd"
|
||||
@echo " deps Get dependencies"
|
||||
@echo " update Update dependencies' source code"
|
||||
@echo " clean Clean binary files"
|
||||
@echo " distclean Clean completely the development files"
|
||||
@echo ""
|
||||
@echo " install Install ejabberd to /usr/local"
|
||||
@echo " uninstall Uninstall ejabberd (buggy)"
|
||||
@echo " uninstall-all Uninstall also configuration, logs, mnesia... (buggy)"
|
||||
@echo ""
|
||||
@echo " rel Build a production release"
|
||||
@echo " dev Build a development release"
|
||||
@echo " relive Start a live ejabberd in _build/relive/"
|
||||
@echo ""
|
||||
@echo " edoc Generate edoc documentation (unused)"
|
||||
@echo " options Generate ejabberd_option.erl"
|
||||
@echo " translations Extract translation files (requires --enable-tools)"
|
||||
@echo " tags Generate tags file for text editors"
|
||||
@echo ""
|
||||
@echo " dialyzer Run Dialyzer static analyzer"
|
||||
@echo " hooks Run hooks validator"
|
||||
@echo " test Run Common Tests suite"
|
||||
@echo " xref Run cross reference analysis"
|
||||
|
||||
@@ -1,175 +1,128 @@
|
||||
ejabberd Community Edition
|
||||
==========================
|
||||
|
||||
[](https://travis-ci.org/processone/ejabberd) [](https://hex.pm/packages/ejabberd)
|
||||
|
||||
ejabberd is a distributed, fault-tolerant technology that allows the creation
|
||||
of large-scale instant messaging applications. The server can reliably support
|
||||
thousands of simultaneous users on a single node and has been designed to
|
||||
provide exceptional standards of fault tolerance. As an open source
|
||||
technology, based on industry-standards, ejabberd can be used to build bespoke
|
||||
solutions very cost effectively.
|
||||
<p align="center">
|
||||
<img src="https://www.process-one.net/wp-content/uploads/2022/05/ejabberd-logo-rounded-index.png"
|
||||
height="216">
|
||||
</p>
|
||||
<p align="center">
|
||||
<a href="https://github.com/processone/ejabberd/tags" alt="GitHub tag (latest SemVer)">
|
||||
<img src="https://img.shields.io/github/v/tag/processone/ejabberd?sort=semver&logo=embarcadero&label=&color=3fb0d2&logoWidth=20" /></a>
|
||||
<a href="https://hex.pm/packages/ejabberd" alt="Hex version">
|
||||
<img src="https://img.shields.io/hexpm/v/ejabberd.svg" /></a>
|
||||
<a href="https://github.com/processone/ejabberd/pkgs/container/ejabberd" alt="GitHub Container">
|
||||
<img src="https://img.shields.io/github/v/tag/processone/ejabberd?label=container&sort=semver" /></a>
|
||||
<a href="https://hub.docker.com/r/ejabberd/ecs/" alt="Docker Image Version (latest semver)">
|
||||
<img src="https://img.shields.io/docker/v/ejabberd/ecs?label=docker" /></a>
|
||||
<a href="https://formulae.brew.sh/formula/ejabberd" alt="homebrew version">
|
||||
<img src="https://img.shields.io/homebrew/v/ejabberd" /></a>
|
||||
<br />
|
||||
<a href="https://github.com/processone/ejabberd/actions/workflows/ci.yml" alt="CI">
|
||||
<img src="https://github.com/processone/ejabberd/actions/workflows/ci.yml/badge.svg" /></a>
|
||||
<a href="https://coveralls.io/github/processone/ejabberd?branch=master" alt="Coverage Status">
|
||||
<img src="https://coveralls.io/repos/github/processone/ejabberd/badge.svg?branch=master "Coverage in coveralls.io"" /></a>
|
||||
<a href="https://hosted.weblate.org/projects/ejabberd/ejabberd-po/" alt="Translation status">
|
||||
<img src="https://hosted.weblate.org/widgets/ejabberd/-/ejabberd-po/svg-badge.svg"" /></a>
|
||||
</p>
|
||||
|
||||
|
||||
Key Features
|
||||
[ejabberd][im] is an open-source,
|
||||
robust, scalable and extensible realtime platform built using [Erlang/OTP][erlang],
|
||||
that includes [XMPP][xmpp] Server, [MQTT][mqtt] Broker and [SIP][sip] Service.
|
||||
|
||||
Check the features in [ejabberd.im][im], [ejabberd Docs][features],
|
||||
[ejabberd at ProcessOne][p1home], and a list of [supported protocols and XEPs][xeps].
|
||||
|
||||
|
||||
Installation
|
||||
------------
|
||||
|
||||
- **Cross-platform**
|
||||
ejabberd runs under Microsoft Windows and Unix-derived systems such as
|
||||
Linux, FreeBSD and NetBSD.
|
||||
There are several ways to install ejabberd:
|
||||
|
||||
- **Distributed**
|
||||
You can run ejabberd on a cluster of machines and all of them will serve the
|
||||
same XMPP domain(s). When you need more capacity you can simply add a new
|
||||
cheap node to your cluster. Accordingly, you do not need to buy an expensive
|
||||
high-end machine to support tens of thousands concurrent users.
|
||||
|
||||
- **Fault-tolerant**
|
||||
You can deploy an ejabberd cluster so that all the information required for
|
||||
a properly working service will be replicated permanently on all nodes. This
|
||||
means that if one of the nodes crashes, the others will continue working
|
||||
without disruption. In addition, nodes also can be added or replaced ‘on
|
||||
the fly’.
|
||||
|
||||
- **Administrator-friendly**
|
||||
ejabberd is built on top of the Open Source Erlang. As a result you do not
|
||||
need to install an external database, an external web server, amongst others
|
||||
because everything is already included, and ready to run out of the box.
|
||||
Other administrator benefits include:
|
||||
- Comprehensive documentation.
|
||||
- Straightforward installers for Linux and Mac OS X.
|
||||
- Web administration.
|
||||
- Shared roster groups.
|
||||
- Command line administration tool.
|
||||
- Can integrate with existing authentication mechanisms.
|
||||
- Capability to send announce messages.
|
||||
|
||||
- **Internationalized**
|
||||
ejabberd leads in internationalization. Hence it is very well suited in a
|
||||
globalized world. Related features are:
|
||||
- Translated to 25 languages.
|
||||
- Support for IDNA.
|
||||
|
||||
- **Open Standards**
|
||||
ejabberd is the first Open Source Jabber server claiming to fully comply to
|
||||
the XMPP standard.
|
||||
- Fully XMPP-compliant.
|
||||
- XML-based protocol.
|
||||
- Many protocols supported.
|
||||
- Source code: compile yourself, see [COMPILE](COMPILE.md)
|
||||
- Installers from [ProcessOne Downloads][p1dl] (run/deb/rpm for x64)
|
||||
- Installers from [ejabberd GitHub Releases][releases] (run/deb/rpm for x64 and arm64)
|
||||
- Container image from [ejabberd Docker Hub][hubecs], see [ecs README][docker-ecs-readme] (for x64)
|
||||
- Container image from [ejabberd Github Packages][packages], see [CONTAINER](CONTAINER.md) (for x64 and arm64)
|
||||
- Using your [Operating System package][osp]
|
||||
- Using the [Homebrew][homebrew] package manager
|
||||
|
||||
|
||||
Additional Features
|
||||
-------------------
|
||||
Documentation
|
||||
-------------
|
||||
|
||||
Moreover, ejabberd comes with a wide range of other state-of-the-art features:
|
||||
Please check the [ejabberd Docs][docs] website.
|
||||
|
||||
- **Modularity**
|
||||
- Load only the modules you want.
|
||||
- Extend ejabberd with your own custom modules.
|
||||
When compiling from source code, you can get some help with:
|
||||
|
||||
- **Security**
|
||||
- SASL and STARTTLS for c2s and s2s connections.
|
||||
- STARTTLS and Dialback s2s connections.
|
||||
- Web Admin accessible via HTTPS secure access.
|
||||
./configure --help
|
||||
make help
|
||||
|
||||
- **Databases**
|
||||
- Internal database for fast deployment (Mnesia).
|
||||
- Native MySQL support.
|
||||
- Native PostgreSQL support.
|
||||
- ODBC data storage support.
|
||||
- Microsoft SQL Server support.
|
||||
Once ejabberd is installed, try:
|
||||
|
||||
- **Authentication**
|
||||
- Internal authentication.
|
||||
- PAM, LDAP and ODBC.
|
||||
- External authentication script.
|
||||
|
||||
- **Others**
|
||||
- Support for virtual hosting.
|
||||
- Compressing XML streams with Stream Compression (XEP-0138).
|
||||
- Statistics via Statistics Gathering (XEP-0039).
|
||||
- IPv6 support both for c2s and s2s connections.
|
||||
- Multi-User Chat module with support for clustering and HTML logging.
|
||||
- Users Directory based on users vCards.
|
||||
- Publish-Subscribe component with support for Personal Eventing.
|
||||
- Support for web clients: HTTP Polling and HTTP Binding (BOSH).
|
||||
- Component support: interface with networks such as AIM, ICQ and MSN.
|
||||
|
||||
|
||||
Quickstart guide
|
||||
----------------
|
||||
|
||||
### 0. Requirements
|
||||
|
||||
To compile ejabberd you need:
|
||||
|
||||
- GNU Make.
|
||||
- GCC.
|
||||
- Libexpat ≥ 1.95.
|
||||
- Libyaml ≥ 0.1.4.
|
||||
- Erlang/OTP ≥ 19.1.
|
||||
- OpenSSL ≥ 1.0.0.
|
||||
- Zlib ≥ 1.2.3, for Stream Compression support (XEP-0138). Optional.
|
||||
- PAM library. Optional. For Pluggable Authentication Modules (PAM).
|
||||
- ImageMagick's Convert program and Ghostscript fonts. Optional. For CAPTCHA
|
||||
challenges.
|
||||
|
||||
If your system splits packages in libraries and development headers, you must
|
||||
install the development packages also.
|
||||
|
||||
### 1. Compile and install on *nix systems
|
||||
|
||||
To compile ejabberd, execute the following commands. The first one is only
|
||||
necessary if your source tree didn't come with a `configure` script (In this
|
||||
case you need autoconf installed).
|
||||
|
||||
./autogen.sh
|
||||
./configure
|
||||
make
|
||||
|
||||
To install ejabberd, run this command with system administrator rights (root
|
||||
user):
|
||||
|
||||
sudo make install
|
||||
|
||||
These commands will:
|
||||
|
||||
- Install the configuration files in `/etc/ejabberd/`
|
||||
- Install ejabberd binary, header and runtime files in `/lib/ejabberd/`
|
||||
- Install the administration script: `/sbin/ejabberdctl`
|
||||
- Install ejabberd documentation in `/share/doc/ejabberd/`
|
||||
- Create a spool directory: `/var/lib/ejabberd/`
|
||||
- Create a directory for log files: `/var/log/ejabberd/`
|
||||
|
||||
|
||||
### 2. Start ejabberd
|
||||
|
||||
You can use the `ejabberdctl` command line administration script to
|
||||
start and stop ejabberd. For example:
|
||||
|
||||
ejabberdctl start
|
||||
|
||||
|
||||
For detailed information please refer to the ejabberd Installation and
|
||||
Operation Guide available online and in the `doc` directory of the source
|
||||
tarball.
|
||||
ejabberdctl help
|
||||
man ejabberd.yml
|
||||
|
||||
|
||||
Development
|
||||
-----------
|
||||
|
||||
In order to assist in the development of ejabberd, and particularly the
|
||||
execution of the test suite, a Vagrant environment is available at
|
||||
https://github.com/processone/ejabberd-vagrant-dev.
|
||||
Bug reports and features are tracked using [GitHub Issues][issues],
|
||||
please check [CONTRIBUTING](CONTRIBUTING.md) for details.
|
||||
|
||||
To start ejabberd in development mode from the repository directory, you can
|
||||
type a command like:
|
||||
Translations can be improved online [using Weblate][weblate]
|
||||
or in your local machine as explained in [Localization][localization].
|
||||
|
||||
EJABBERD_CONFIG_PATH=ejabberd.yml erl -pa ebin -pa deps/*/ebin -pa test -pa deps/elixir/lib/*/ebin/ -s ejabberd
|
||||
Documentation for developers is available in [ejabberd docs: Developers][docs-dev].
|
||||
|
||||
Links
|
||||
-----
|
||||
Security reports or concerns should preferably be reported privately,
|
||||
please send an email to the address: contact [at] process-one [dot] net
|
||||
or some other method from [ProcessOne Contact][p1contact].
|
||||
|
||||
- Documentation: https://docs.ejabberd.im
|
||||
- Community site: https://www.ejabberd.im
|
||||
- ejabberd commercial offering and support: https://www.process-one.net/en/ejabberd
|
||||
For commercial offering and support, including [ejabberd Business Edition][p1home]
|
||||
and [Fluux (ejabberd in the Cloud)][fluux], please check [ProcessOne ejabberd page][p1home].
|
||||
|
||||
|
||||
Community
|
||||
---------
|
||||
|
||||
There are several places to get in touch with other ejabberd developers and administrators:
|
||||
|
||||
- [ejabberd XMPP chatroom][muc]: ejabberd@conference.process-one.net
|
||||
- [Mailing list][list]
|
||||
- [GitHub Discussions][discussions]
|
||||
- [Stack Overflow][stackoverflow]
|
||||
|
||||
|
||||
License
|
||||
-------
|
||||
|
||||
ejabberd is released under the GNU General Public License v2 (see [COPYING](COPYING.md)),
|
||||
and [ejabberd translations](https://github.com/processone/ejabberd-po/) under MIT License.
|
||||
|
||||
|
||||
[discussions]: https://github.com/processone/ejabberd/discussions
|
||||
[docker-ecs-readme]: https://github.com/processone/docker-ejabberd/tree/master/ecs#readme
|
||||
[docs-dev]: https://docs.ejabberd.im/developer/
|
||||
[docs]: https://docs.ejabberd.im
|
||||
[erlang]: https://www.erlang.org/
|
||||
[features]: https://docs.ejabberd.im/admin/introduction/
|
||||
[fluux]: https://fluux.io/
|
||||
[github]: https://github.com/processone/ejabberd
|
||||
[homebrew]: https://docs.ejabberd.im/admin/installation/#homebrew
|
||||
[hubecs]: https://hub.docker.com/r/ejabberd/ecs/
|
||||
[im]: https://ejabberd.im/
|
||||
[issues]: https://github.com/processone/ejabberd/issues
|
||||
[list]: https://lists.jabber.ru/mailman/listinfo/ejabberd
|
||||
[localization]: https://docs.ejabberd.im/developer/extending-ejabberd/localization/
|
||||
[mqtt]: https://mqtt.org/
|
||||
[muc]: xmpp:ejabberd@conference.process-one.net
|
||||
[osp]: https://docs.ejabberd.im/admin/installation/#operating-system-packages
|
||||
[p1contact]: https://www.process-one.net/en/company/contact/
|
||||
[p1dl]: https://www.process-one.net/en/ejabberd/downloads/
|
||||
[p1home]: https://www.process-one.net/en/ejabberd/
|
||||
[packages]: https://github.com/processone/ejabberd/pkgs/container/ejabberd
|
||||
[releases]: https://github.com/processone/ejabberd/releases
|
||||
[sip]: https://en.wikipedia.org/wiki/Session_Initiation_Protocol
|
||||
[stackoverflow]: https://stackoverflow.com/questions/tagged/ejabberd?sort=newest
|
||||
[weblate]: https://hosted.weblate.org/projects/ejabberd/ejabberd-po/
|
||||
[xeps]: https://www.process-one.net/en/ejabberd/protocols/
|
||||
[xmpp]: https://xmpp.org/
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
{erl_opts, [debug_info]}.
|
||||
{deps, []}.
|
||||
@@ -0,0 +1,9 @@
|
||||
{application, configure_deps,
|
||||
[{description, "A rebar3 plugin to explicitly run configure on dependencies"},
|
||||
{vsn, "0.0.1"},
|
||||
{registered, []},
|
||||
{applications, [kernel, stdlib]},
|
||||
{env,[]},
|
||||
{modules, []},
|
||||
{links, []}
|
||||
]}.
|
||||
@@ -0,0 +1,8 @@
|
||||
-module(configure_deps).
|
||||
|
||||
-export([init/1]).
|
||||
|
||||
-spec init(rebar_state:t()) -> {ok, rebar_state:t()}.
|
||||
init(State) ->
|
||||
{ok, State1} = configure_deps_prv:init(State),
|
||||
{ok, State1}.
|
||||
@@ -0,0 +1,54 @@
|
||||
-module(configure_deps_prv).
|
||||
|
||||
-export([init/1, do/1, format_error/1]).
|
||||
|
||||
-define(PROVIDER, 'configure-deps').
|
||||
-define(DEPS, [install_deps]).
|
||||
|
||||
%% ===================================================================
|
||||
%% Public API
|
||||
%% ===================================================================
|
||||
-spec init(rebar_state:t()) -> {ok, rebar_state:t()}.
|
||||
init(State) ->
|
||||
Provider = providers:create([
|
||||
{namespace, default},
|
||||
{name, ?PROVIDER}, % The 'user friendly' name of the task
|
||||
{module, ?MODULE}, % The module implementation of the task
|
||||
{bare, true}, % The task can be run by the user, always true
|
||||
{deps, ?DEPS}, % The list of dependencies
|
||||
{example, "rebar3 configure-deps"}, % How to use the plugin
|
||||
{opts, []}, % list of options understood by the plugin
|
||||
{short_desc, "Explicitly run ./configure for dependencies"},
|
||||
{desc, "A rebar plugin to allow explicitly running ./configure on dependencies. Useful if dependencies might change prior to compilation when configure is run."}
|
||||
]),
|
||||
{ok, rebar_state:add_provider(State, Provider)}.
|
||||
|
||||
|
||||
-spec do(rebar_state:t()) -> {ok, rebar_state:t()} | {error, string()}.
|
||||
do(State) ->
|
||||
Apps = rebar_state:project_apps(State) ++ lists:usort(rebar_state:all_deps(State)),
|
||||
lists:foreach(fun do_app/1, Apps),
|
||||
{ok, State}.
|
||||
|
||||
exec_configure({'configure-deps', Cmd}, Dir) ->
|
||||
rebar_utils:sh(Cmd, [{cd, Dir}, {use_stdout, true}]);
|
||||
exec_configure(_, Acc) -> Acc.
|
||||
|
||||
parse_pre_hooks({pre_hooks, PreHooks}, Acc) ->
|
||||
lists:foldl(fun exec_configure/2, Acc, PreHooks);
|
||||
parse_pre_hooks(_, Acc) -> Acc.
|
||||
|
||||
parse_additions({add, App, Additions}, {MyApp, Dir}) when App == MyApp ->
|
||||
lists:foldl(fun parse_pre_hooks/2, Dir, Additions),
|
||||
{MyApp, Dir};
|
||||
parse_additions(_, Acc) -> Acc.
|
||||
|
||||
do_app(App) ->
|
||||
Dir = rebar_app_info:dir(App),
|
||||
Opts = rebar_app_info:opts(App),
|
||||
Overrides = rebar_opts:get(Opts, overrides),
|
||||
lists:foldl(fun parse_additions/2, {binary_to_atom(rebar_app_info:name(App), utf8), Dir}, Overrides).
|
||||
|
||||
-spec format_error(any()) -> iolist().
|
||||
format_error(Reason) ->
|
||||
io_lib:format("~p", [Reason]).
|
||||
@@ -1,10 +0,0 @@
|
||||
use Mix.Config
|
||||
|
||||
# This is standard path in the context of ejabberd release
|
||||
config :ejabberd,
|
||||
file: "config/ejabberd.yml",
|
||||
log_path: 'log/ejabberd.log'
|
||||
|
||||
# Customize Mnesia directory:
|
||||
config :mnesia,
|
||||
dir: 'database/'
|
||||
+1
-3
@@ -4,9 +4,7 @@ defmodule Ejabberd.ConfigFile do
|
||||
def start do
|
||||
[loglevel: 4,
|
||||
log_rotate_size: 10485760,
|
||||
log_rotate_date: "",
|
||||
log_rotate_count: 1,
|
||||
log_rate_limit: 100,
|
||||
auth_method: :internal,
|
||||
max_fsm_queue: 1000,
|
||||
language: "en",
|
||||
@@ -131,7 +129,7 @@ defmodule Ejabberd.ConfigFile do
|
||||
module :mod_register do
|
||||
@opts [welcome_message: [
|
||||
subject: "Welcome!",
|
||||
body: "Hi.\nWelcome to this XMPP Server"
|
||||
body: "Hi.\nWelcome to this XMPP server"
|
||||
],
|
||||
ip_access: :trusted_network,
|
||||
access: :register]
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
import Config
|
||||
|
||||
rootdefault = case System.get_env("RELIVE", "false") do
|
||||
"true" -> "_build/relive"
|
||||
"false" -> ""
|
||||
end
|
||||
|
||||
rootpath = System.get_env("RELEASE_ROOT", rootdefault)
|
||||
config :ejabberd,
|
||||
file: Path.join(rootpath, "conf/ejabberd.yml"),
|
||||
log_path: Path.join(rootpath, 'logs/ejabberd.log')
|
||||
config :mnesia,
|
||||
dir: Path.join(rootpath, 'database/')
|
||||
+198
-195
@@ -1,9 +1,9 @@
|
||||
# -*- Autoconf -*-
|
||||
# Process this file with autoconf to produce a configure script.
|
||||
|
||||
AC_PREREQ(2.53)
|
||||
AC_INIT(ejabberd, m4_esyscmd([echo `git describe --tags 2>/dev/null || echo 0.0` | sed 's/-g.*//;s/-/./' | tr -d '\012']), [ejabberd@process-one.net], [ejabberd])
|
||||
REQUIRE_ERLANG_MIN="8.1 (Erlang/OTP 19.1)"
|
||||
AC_PREREQ(2.59)
|
||||
AC_INIT(ejabberd, m4_esyscmd([echo `git describe --tags 2>/dev/null || echo 22.05` | sed 's/-g.*//;s/-/./' | tr -d '\012']), [ejabberd@process-one.net], [ejabberd])
|
||||
REQUIRE_ERLANG_MIN="8.3 (Erlang/OTP 19.3)"
|
||||
REQUIRE_ERLANG_MAX="100.0.0 (No Max)"
|
||||
|
||||
AC_CONFIG_MACRO_DIR([m4])
|
||||
@@ -19,8 +19,7 @@ fi
|
||||
|
||||
# Checks Erlang runtime and compiler
|
||||
AC_ARG_WITH(erlang,
|
||||
AC_HELP_STRING([--with-erlang=dir],
|
||||
[search for erlang in dir]),
|
||||
AS_HELP_STRING([--with-erlang=dir],[search for erlang in dir]),
|
||||
[if test "$withval" = "yes" -o "$withval" = "no" -o "X$with_erlang" = "X"; then
|
||||
extra_erl_path=""
|
||||
else
|
||||
@@ -28,6 +27,15 @@ else
|
||||
fi
|
||||
])
|
||||
|
||||
AC_ARG_WITH(rebar,
|
||||
AS_HELP_STRING([--with-rebar=bin],[use the rebar/rebar3/mix binary specified]),
|
||||
[if test "$withval" = "yes" -o "$withval" = "no" -o "X$with_rebar" = "X"; then
|
||||
rebar="rebar"
|
||||
else
|
||||
rebar="$with_rebar"
|
||||
fi
|
||||
], [rebar="rebar"])
|
||||
|
||||
AC_PATH_TOOL(ERL, erl, , [${extra_erl_path}$PATH])
|
||||
AC_PATH_TOOL(ERLC, erlc, , [${extra_erl_path}$PATH])
|
||||
AC_PATH_TOOL(EPMD, epmd, , [${extra_erl_path}$PATH])
|
||||
@@ -35,18 +43,6 @@ AC_PATH_TOOL(EPMD, epmd, , [${extra_erl_path}$PATH])
|
||||
AC_ERLANG_NEED_ERL
|
||||
AC_ERLANG_NEED_ERLC
|
||||
|
||||
AC_ARG_ENABLE(erlang-version-check,
|
||||
[AC_HELP_STRING([--enable-erlang-version-check],
|
||||
[Check Erlang/OTP version @<:@default=yes@:>@])])
|
||||
case "$enable_erlang_version_check" in
|
||||
yes|'')
|
||||
ERLANG_VERSION_CHECK([$REQUIRE_ERLANG_MIN],[$REQUIRE_ERLANG_MAX])
|
||||
;;
|
||||
no)
|
||||
ERLANG_VERSION_CHECK([$REQUIRE_ERLANG_MIN],[$REQUIRE_ERLANG_MAX],[warn])
|
||||
;;
|
||||
esac
|
||||
|
||||
# Checks and sets ERLANG_ROOT_DIR and ERLANG_LIB_DIR variable
|
||||
AC_ERLANG_SUBST_ROOT_DIR
|
||||
# AC_ERLANG_SUBST_LIB_DIR
|
||||
@@ -68,183 +64,52 @@ fi
|
||||
# Change default prefix
|
||||
AC_PREFIX_DEFAULT(/usr/local)
|
||||
|
||||
AC_ARG_ENABLE(hipe,
|
||||
[AC_HELP_STRING([--enable-hipe], [compile natively with HiPE, not recommended (default: no)])],
|
||||
[case "${enableval}" in
|
||||
yes) hipe=true ;;
|
||||
no) hipe=false ;;
|
||||
*) AC_MSG_ERROR(bad value ${enableval} for --enable-hipe) ;;
|
||||
esac],[hipe=false])
|
||||
|
||||
AC_ARG_ENABLE(roster_gateway_workaround,
|
||||
[AC_HELP_STRING([--enable-roster-gateway-workaround], [turn on workaround for processing gateway subscriptions (default: no)])],
|
||||
[case "${enableval}" in
|
||||
yes) roster_gateway_workaround=true ;;
|
||||
no) roster_gateway_workaround=false ;;
|
||||
*) AC_MSG_ERROR(bad value ${enableval} for --enable-roster-gateway-workaround) ;;
|
||||
esac],[roster_gateway_workaround=false])
|
||||
|
||||
AC_ARG_ENABLE(new_sql_schema,
|
||||
[AC_HELP_STRING([--enable-new-sql-schema], [use new SQL schema (default: no)])],
|
||||
[case "${enableval}" in
|
||||
yes) new_sql_schema=true ;;
|
||||
no) new_sql_schema=false ;;
|
||||
*) AC_MSG_ERROR(bad value ${enableval} for --enable-new-sql-schema) ;;
|
||||
esac],[new_sql_schema=false])
|
||||
|
||||
AC_ARG_ENABLE(full_xml,
|
||||
[AC_HELP_STRING([--enable-full-xml], [use XML features in XMPP stream (ex: CDATA) (default: no, requires XML compliant clients)])],
|
||||
[case "${enableval}" in
|
||||
yes) full_xml=true ;;
|
||||
no) full_xml=false ;;
|
||||
*) AC_MSG_ERROR(bad value ${enableval} for --enable-full-xml) ;;
|
||||
esac],[full_xml=false])
|
||||
|
||||
AC_ARG_ENABLE(mssql,
|
||||
[AC_HELP_STRING([--enable-mssql], [use Microsoft SQL Server database (default: no, requires --enable-odbc)])],
|
||||
[case "${enableval}" in
|
||||
yes) db_type=mssql ;;
|
||||
no) db_type=generic ;;
|
||||
*) AC_MSG_ERROR(bad value ${enableval} for --enable-mssql) ;;
|
||||
esac],[db_type=generic])
|
||||
AC_CONFIG_FILES([Makefile
|
||||
vars.config])
|
||||
|
||||
AC_ARG_ENABLE(all,
|
||||
[AC_HELP_STRING([--enable-all], [same as --enable-odbc --enable-mysql --enable-pgsql --enable-sqlite --enable-pam --enable-zlib --enable-redis --enable-elixir --enable-stun --enable-sip --enable-debug --enable-tools (useful for Dialyzer checks, default: no)])],
|
||||
[AS_HELP_STRING([--enable-all],[same as --enable-odbc --enable-mssql --enable-mysql --enable-pgsql --enable-sqlite --enable-pam --enable-zlib --enable-redis --enable-elixir --enable-stun --enable-sip --enable-debug --enable-lua --enable-tools (useful for Dialyzer checks, default: no)])],
|
||||
[case "${enableval}" in
|
||||
yes) odbc=true mysql=true pgsql=true sqlite=true pam=true zlib=true redis=true elixir=true stun=true sip=true debug=true tools=true ;;
|
||||
no) odbc=false mysql=false pgsql=false sqlite=false pam=false zlib=false redis=false elixir=false stun=false sip=false debug=false tools=false ;;
|
||||
yes) odbc=true mssql=true mysql=true pgsql=true sqlite=true pam=true zlib=true redis=true elixir=true stun=true sip=true debug=true lua=true tools=true ;;
|
||||
no) odbc=false mssql=false mysql=false pgsql=false sqlite=false pam=false zlib=false redis=false elixir=false stun=false sip=false debug=false lua=false tools=false ;;
|
||||
*) AC_MSG_ERROR(bad value ${enableval} for --enable-all) ;;
|
||||
esac],[])
|
||||
|
||||
AC_ARG_ENABLE(tools,
|
||||
[AC_HELP_STRING([--enable-tools], [build development tools (default: no)])],
|
||||
[case "${enableval}" in
|
||||
yes) tools=true ;;
|
||||
no) tools=false ;;
|
||||
*) AC_MSG_ERROR(bad value ${enableval} for --enable-tools) ;;
|
||||
esac],[if test "x$tools" = "x"; then tools=false; fi])
|
||||
|
||||
AC_ARG_ENABLE(odbc,
|
||||
[AC_HELP_STRING([--enable-odbc], [enable pure ODBC support (default: no)])],
|
||||
[case "${enableval}" in
|
||||
yes) odbc=true ;;
|
||||
no) odbc=false ;;
|
||||
*) AC_MSG_ERROR(bad value ${enableval} for --enable-odbc) ;;
|
||||
esac],[if test "x$odbc" = "x"; then odbc=false; fi])
|
||||
|
||||
AC_ARG_ENABLE(mysql,
|
||||
[AC_HELP_STRING([--enable-mysql], [enable MySQL support (default: no)])],
|
||||
[case "${enableval}" in
|
||||
yes) mysql=true ;;
|
||||
no) mysql=false ;;
|
||||
*) AC_MSG_ERROR(bad value ${enableval} for --enable-mysql) ;;
|
||||
esac],[if test "x$mysql" = "x"; then mysql=false; fi])
|
||||
|
||||
AC_ARG_ENABLE(pgsql,
|
||||
[AC_HELP_STRING([--enable-pgsql], [enable PostgreSQL support (default: no)])],
|
||||
[case "${enableval}" in
|
||||
yes) pgsql=true ;;
|
||||
no) pgsql=false ;;
|
||||
*) AC_MSG_ERROR(bad value ${enableval} for --enable-pgsql) ;;
|
||||
esac],[if test "x$pgsql" = "x"; then pgsql=false; fi])
|
||||
|
||||
AC_ARG_ENABLE(sqlite,
|
||||
[AC_HELP_STRING([--enable-sqlite], [enable SQLite support (default: no)])],
|
||||
[case "${enableval}" in
|
||||
yes) sqlite=true ;;
|
||||
no) sqlite=false ;;
|
||||
*) AC_MSG_ERROR(bad value ${enableval} for --enable-sqlite) ;;
|
||||
esac],[if test "x$sqlite" = "x"; then sqlite=false; fi])
|
||||
|
||||
AC_ARG_ENABLE(pam,
|
||||
[AC_HELP_STRING([--enable-pam], [enable PAM support (default: no)])],
|
||||
[case "${enableval}" in
|
||||
yes) pam=true ;;
|
||||
no) pam=false ;;
|
||||
*) AC_MSG_ERROR(bad value ${enableval} for --enable-pam) ;;
|
||||
esac],[if test "x$pam" = "x"; then pam=false; fi])
|
||||
|
||||
AC_ARG_ENABLE(zlib,
|
||||
[AC_HELP_STRING([--enable-zlib], [enable Stream Compression (XEP-0138) using zlib (default: yes)])],
|
||||
[case "${enableval}" in
|
||||
yes) zlib=true ;;
|
||||
no) zlib=false ;;
|
||||
*) AC_MSG_ERROR(bad value ${enableval} for --enable-zlib) ;;
|
||||
esac],[if test "x$zlib" = "x"; then zlib=true; fi])
|
||||
|
||||
AC_ARG_ENABLE(redis,
|
||||
[AC_HELP_STRING([--enable-redis], [enable Redis support (default: no)])],
|
||||
[case "${enableval}" in
|
||||
yes) redis=true ;;
|
||||
no) redis=false ;;
|
||||
*) AC_MSG_ERROR(bad value ${enableval} for --enable-redis) ;;
|
||||
esac],[if test "x$redis" = "x"; then redis=false; fi])
|
||||
|
||||
AC_ARG_ENABLE(elixir,
|
||||
[AC_HELP_STRING([--enable-elixir], [enable Elixir support (default: no)])],
|
||||
[case "${enableval}" in
|
||||
yes) elixir=true ;;
|
||||
no) elixir=false ;;
|
||||
*) AC_MSG_ERROR(bad value ${enableval} for --enable-elixir) ;;
|
||||
esac],[if test "x$elixir" = "x"; then elixir=false; fi])
|
||||
|
||||
AC_ARG_ENABLE(debug,
|
||||
[AC_HELP_STRING([--enable-debug], [enable debug information (default: yes)])],
|
||||
[AS_HELP_STRING([--enable-debug],[enable debug information (default: yes)])],
|
||||
[case "${enableval}" in
|
||||
yes) debug=true ;;
|
||||
no) debug=false ;;
|
||||
*) AC_MSG_ERROR(bad value ${enableval} for --enable-debug) ;;
|
||||
esac],[if test "x$debug" = "x"; then debug=true; fi])
|
||||
|
||||
AC_ARG_ENABLE(latest_deps,
|
||||
[AC_HELP_STRING([--enable-latest-deps], [makes rebar use latest commits for dependences instead of tagged versions (default: no)])],
|
||||
AC_ARG_ENABLE(elixir,
|
||||
[AS_HELP_STRING([--enable-elixir],[enable Elixir support (default: no)])],
|
||||
[case "${enableval}" in
|
||||
yes) latest_deps=true ;;
|
||||
no) latest_deps=false ;;
|
||||
*) AC_MSG_ERROR(bad value ${enableval} for --enable-latest-deps) ;;
|
||||
esac],[if test "x$latest_deps" = "x"; then latest_deps=false; fi])
|
||||
yes) elixir=true ;;
|
||||
no) elixir=false ;;
|
||||
*) AC_MSG_ERROR(bad value ${enableval} for --enable-elixir) ;;
|
||||
esac],[if test "x$elixir" = "x"; then elixir=false; fi])
|
||||
|
||||
AC_ARG_ENABLE(system_deps,
|
||||
[AC_HELP_STRING([--enable-system-deps], [makes rebar use localy installed dependences instead of downloading them (default: no)])],
|
||||
AC_ARG_ENABLE(erlang-version-check,
|
||||
[AS_HELP_STRING([--enable-erlang-version-check],[Check Erlang/OTP version (default: yes)])])
|
||||
case "$enable_erlang_version_check" in
|
||||
yes|'')
|
||||
ERLANG_VERSION_CHECK([$REQUIRE_ERLANG_MIN],[$REQUIRE_ERLANG_MAX])
|
||||
;;
|
||||
no)
|
||||
ERLANG_VERSION_CHECK([$REQUIRE_ERLANG_MIN],[$REQUIRE_ERLANG_MAX],[warn])
|
||||
;;
|
||||
esac
|
||||
|
||||
AC_ARG_ENABLE(full_xml,
|
||||
[AS_HELP_STRING([--enable-full-xml],[use XML features in XMPP stream (ex: CDATA) (default: no, requires XML compliant clients)])],
|
||||
[case "${enableval}" in
|
||||
yes) system_deps=true ;;
|
||||
no) system_deps=false ;;
|
||||
*) AC_MSG_ERROR(bad value ${enableval} for --enable-system-deps) ;;
|
||||
esac],[if test "x$system_deps" = "x"; then system_deps=false; fi])
|
||||
yes) full_xml=true ;;
|
||||
no) full_xml=false ;;
|
||||
*) AC_MSG_ERROR(bad value ${enableval} for --enable-full-xml) ;;
|
||||
esac],[full_xml=false])
|
||||
|
||||
AC_ARG_ENABLE(stun,
|
||||
[AC_HELP_STRING([--enable-stun], [enable STUN/TURN support (default: no)])],
|
||||
[case "${enableval}" in
|
||||
yes) stun=true ;;
|
||||
no) stun=false ;;
|
||||
*) AC_MSG_ERROR(bad value ${enableval} for --enable-stun) ;;
|
||||
esac],[if test "x$stun" = "x"; then stun=false; fi])
|
||||
|
||||
AC_ARG_ENABLE(sip,
|
||||
[AC_HELP_STRING([--enable-sip], [enable SIP support (default: no)])],
|
||||
[case "${enableval}" in
|
||||
yes) sip=true ;;
|
||||
no) sip=false ;;
|
||||
*) AC_MSG_ERROR(bad value ${enableval} for --enable-sip) ;;
|
||||
esac],[if test "x$sip" = "x"; then sip=false; fi])
|
||||
|
||||
AC_CONFIG_FILES([Makefile
|
||||
vars.config
|
||||
src/ejabberd.app.src])
|
||||
|
||||
ENABLEUSER=""
|
||||
AC_ARG_ENABLE(user,
|
||||
[AS_HELP_STRING([--enable-user[[[[=USER]]]]], [allow this system user to start ejabberd (default: no)])],
|
||||
[case "${enableval}" in
|
||||
yes) ENABLEUSER=`whoami` ;;
|
||||
no) ENABLEUSER="" ;;
|
||||
*) ENABLEUSER=$enableval
|
||||
esac],
|
||||
[])
|
||||
if test "$ENABLEUSER" != ""; then
|
||||
echo "allow this system user to start ejabberd: $ENABLEUSER"
|
||||
AC_SUBST([INSTALLUSER], [$ENABLEUSER])
|
||||
fi
|
||||
ENABLEGROUP=""
|
||||
AC_ARG_ENABLE(group,
|
||||
[AS_HELP_STRING([--enable-group[[[[=GROUP]]]]], [allow this system group to start ejabberd (default: no)])],
|
||||
@@ -259,46 +124,184 @@ if test "$ENABLEGROUP" != ""; then
|
||||
AC_SUBST([INSTALLGROUP], [$ENABLEGROUP])
|
||||
fi
|
||||
|
||||
if test "$sqlite" = "true"; then
|
||||
AX_LIB_SQLITE3([3.6.19])
|
||||
if test "x$SQLITE3_VERSION" = "x"; then
|
||||
AC_MSG_ERROR(SQLite3 library >= 3.6.19 was not found)
|
||||
fi
|
||||
AC_ARG_ENABLE(latest_deps,
|
||||
[AS_HELP_STRING([--enable-latest-deps],[makes rebar use latest commits for dependencies instead of tagged versions (default: no)])],
|
||||
[case "${enableval}" in
|
||||
yes) latest_deps=true ;;
|
||||
no) latest_deps=false ;;
|
||||
*) AC_MSG_ERROR(bad value ${enableval} for --enable-latest-deps) ;;
|
||||
esac],[if test "x$latest_deps" = "x"; then latest_deps=false; fi])
|
||||
|
||||
AC_ARG_ENABLE(lua,
|
||||
[AS_HELP_STRING([--enable-lua],[enable Lua support, to import from Prosody (default: no)])],
|
||||
[case "${enableval}" in
|
||||
yes) lua=true ;;
|
||||
no) lua=false ;;
|
||||
*) AC_MSG_ERROR(bad value ${enableval} for --enable-lua) ;;
|
||||
esac],[if test "x$lua" = "x"; then lua=false; fi])
|
||||
|
||||
AC_ARG_ENABLE(mssql,
|
||||
[AS_HELP_STRING([--enable-mssql],[use Microsoft SQL Server database (default: no, requires --enable-odbc)])],
|
||||
[case "${enableval}" in
|
||||
yes) mssql=true ;;
|
||||
no) mssql=false ;;
|
||||
*) AC_MSG_ERROR(bad value ${enableval} for --enable-mssql) ;;
|
||||
esac],[if test "x$mssql" = "x"; then mssql=false; fi])
|
||||
|
||||
AC_ARG_ENABLE(mysql,
|
||||
[AS_HELP_STRING([--enable-mysql],[enable MySQL support (default: no)])],
|
||||
[case "${enableval}" in
|
||||
yes) mysql=true ;;
|
||||
no) mysql=false ;;
|
||||
*) AC_MSG_ERROR(bad value ${enableval} for --enable-mysql) ;;
|
||||
esac],[if test "x$mysql" = "x"; then mysql=false; fi])
|
||||
|
||||
AC_ARG_ENABLE(new_sql_schema,
|
||||
[AS_HELP_STRING([--enable-new-sql-schema],[use new SQL schema by default (default: no)])],
|
||||
[case "${enableval}" in
|
||||
yes) new_sql_schema=true ;;
|
||||
no) new_sql_schema=false ;;
|
||||
*) AC_MSG_ERROR(bad value ${enableval} for --enable-new-sql-schema) ;;
|
||||
esac],[new_sql_schema=false])
|
||||
|
||||
AC_ARG_ENABLE(odbc,
|
||||
[AS_HELP_STRING([--enable-odbc],[enable pure ODBC support (default: no)])],
|
||||
[case "${enableval}" in
|
||||
yes) odbc=true ;;
|
||||
no) odbc=false ;;
|
||||
*) AC_MSG_ERROR(bad value ${enableval} for --enable-odbc) ;;
|
||||
esac],[if test "x$odbc" = "x"; then odbc=false; fi])
|
||||
|
||||
AC_ARG_ENABLE(pam,
|
||||
[AS_HELP_STRING([--enable-pam],[enable PAM support (default: no)])],
|
||||
[case "${enableval}" in
|
||||
yes) pam=true ;;
|
||||
no) pam=false ;;
|
||||
*) AC_MSG_ERROR(bad value ${enableval} for --enable-pam) ;;
|
||||
esac],[if test "x$pam" = "x"; then pam=false; fi])
|
||||
|
||||
AC_ARG_ENABLE(pgsql,
|
||||
[AS_HELP_STRING([--enable-pgsql],[enable PostgreSQL support (default: no)])],
|
||||
[case "${enableval}" in
|
||||
yes) pgsql=true ;;
|
||||
no) pgsql=false ;;
|
||||
*) AC_MSG_ERROR(bad value ${enableval} for --enable-pgsql) ;;
|
||||
esac],[if test "x$pgsql" = "x"; then pgsql=false; fi])
|
||||
|
||||
AC_ARG_ENABLE(redis,
|
||||
[AS_HELP_STRING([--enable-redis],[enable Redis support (default: no)])],
|
||||
[case "${enableval}" in
|
||||
yes) redis=true ;;
|
||||
no) redis=false ;;
|
||||
*) AC_MSG_ERROR(bad value ${enableval} for --enable-redis) ;;
|
||||
esac],[if test "x$redis" = "x"; then redis=false; fi])
|
||||
|
||||
AC_ARG_ENABLE(roster_gateway_workaround,
|
||||
[AS_HELP_STRING([--enable-roster-gateway-workaround],[turn on workaround for processing gateway subscriptions (default: no)])],
|
||||
[case "${enableval}" in
|
||||
yes) roster_gateway_workaround=true ;;
|
||||
no) roster_gateway_workaround=false ;;
|
||||
*) AC_MSG_ERROR(bad value ${enableval} for --enable-roster-gateway-workaround) ;;
|
||||
esac],[roster_gateway_workaround=false])
|
||||
|
||||
AC_ARG_ENABLE(sip,
|
||||
[AS_HELP_STRING([--enable-sip],[enable SIP support (default: no)])],
|
||||
[case "${enableval}" in
|
||||
yes) sip=true ;;
|
||||
no) sip=false ;;
|
||||
*) AC_MSG_ERROR(bad value ${enableval} for --enable-sip) ;;
|
||||
esac],[if test "x$sip" = "x"; then sip=false; fi])
|
||||
|
||||
AC_ARG_ENABLE(sqlite,
|
||||
[AS_HELP_STRING([--enable-sqlite],[enable SQLite support (default: no)])],
|
||||
[case "${enableval}" in
|
||||
yes) sqlite=true ;;
|
||||
no) sqlite=false ;;
|
||||
*) AC_MSG_ERROR(bad value ${enableval} for --enable-sqlite) ;;
|
||||
esac],[if test "x$sqlite" = "x"; then sqlite=false; fi])
|
||||
|
||||
AC_ARG_ENABLE(stun,
|
||||
[AS_HELP_STRING([--enable-stun],[enable STUN/TURN support (default: yes)])],
|
||||
[case "${enableval}" in
|
||||
yes) stun=true ;;
|
||||
no) stun=false ;;
|
||||
*) AC_MSG_ERROR(bad value ${enableval} for --enable-stun) ;;
|
||||
esac],[if test "x$stun" = "x"; then stun=true; fi])
|
||||
|
||||
AC_ARG_ENABLE(system_deps,
|
||||
[AS_HELP_STRING([--enable-system-deps],[makes rebar use locally installed dependencies instead of downloading them (default: no)])],
|
||||
[case "${enableval}" in
|
||||
yes) system_deps=true ;;
|
||||
no) system_deps=false ;;
|
||||
*) AC_MSG_ERROR(bad value ${enableval} for --enable-system-deps) ;;
|
||||
esac],[if test "x$system_deps" = "x"; then system_deps=false; fi])
|
||||
|
||||
AC_ARG_ENABLE(tools,
|
||||
[AS_HELP_STRING([--enable-tools],[build development tools (default: no)])],
|
||||
[case "${enableval}" in
|
||||
yes) tools=true ;;
|
||||
no) tools=false ;;
|
||||
*) AC_MSG_ERROR(bad value ${enableval} for --enable-tools) ;;
|
||||
esac],[if test "x$tools" = "x"; then tools=false; fi])
|
||||
|
||||
ENABLEUSER=""
|
||||
AC_ARG_ENABLE(user,
|
||||
[AS_HELP_STRING([--enable-user[[[[=USER]]]]], [allow this system user to start ejabberd (default: no)])],
|
||||
[case "${enableval}" in
|
||||
yes) ENABLEUSER=`whoami` ;;
|
||||
no) ENABLEUSER="" ;;
|
||||
*) ENABLEUSER=$enableval
|
||||
esac],
|
||||
[])
|
||||
if test "$ENABLEUSER" != ""; then
|
||||
echo "allow this system user to start ejabberd: $ENABLEUSER"
|
||||
AC_SUBST([INSTALLUSER], [$ENABLEUSER])
|
||||
fi
|
||||
|
||||
enabled_backends=""
|
||||
for backend in odbc mysql pgsql sqlite redis; do
|
||||
if eval test x\${$backend} = xtrue; then
|
||||
if test "x$enabled_backends" = "x"; then
|
||||
enabled_backends=$backend
|
||||
else
|
||||
enabled_backends="$enabled_backends, $backend"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
AC_ARG_ENABLE(zlib,
|
||||
[AS_HELP_STRING([--enable-zlib],[enable Stream Compression (XEP-0138) using zlib (default: yes)])],
|
||||
[case "${enableval}" in
|
||||
yes) zlib=true ;;
|
||||
no) zlib=false ;;
|
||||
*) AC_MSG_ERROR(bad value ${enableval} for --enable-zlib) ;;
|
||||
esac],[if test "x$zlib" = "x"; then zlib=true; fi])
|
||||
|
||||
case "`uname`" in
|
||||
"Darwin")
|
||||
# Darwin (macos) erlang-sqlite is built using amalgamated lib, so no external dependency
|
||||
;;
|
||||
*)
|
||||
if test "$sqlite" = "true"; then
|
||||
AX_LIB_SQLITE3([3.6.19])
|
||||
if test "x$SQLITE3_VERSION" = "x"; then
|
||||
AC_MSG_ERROR(SQLite3 library >= 3.6.19 was not found)
|
||||
fi
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
|
||||
AC_SUBST(hipe)
|
||||
AC_SUBST(roster_gateway_workaround)
|
||||
AC_SUBST(new_sql_schema)
|
||||
AC_SUBST(full_xml)
|
||||
AC_SUBST(db_type)
|
||||
AC_SUBST(odbc)
|
||||
AC_SUBST(mssql)
|
||||
AC_SUBST(mysql)
|
||||
AC_SUBST(pgsql)
|
||||
AC_SUBST(sqlite)
|
||||
AC_SUBST(pam)
|
||||
AC_SUBST(zlib)
|
||||
AC_SUBST(rebar)
|
||||
AC_SUBST(redis)
|
||||
AC_SUBST(elixir)
|
||||
AC_SUBST(stun)
|
||||
AC_SUBST(sip)
|
||||
AC_SUBST(debug)
|
||||
AC_SUBST(lua)
|
||||
AC_SUBST(tools)
|
||||
AC_SUBST(latest_deps)
|
||||
AC_SUBST(system_deps)
|
||||
AC_SUBST(CFLAGS)
|
||||
AC_SUBST(CPPFLAGS)
|
||||
AC_SUBST(LDFLAGS)
|
||||
AC_SUBST(enabled_backends)
|
||||
|
||||
AC_OUTPUT
|
||||
|
||||
@@ -6,8 +6,8 @@
|
||||
# Required-Stop: $remote_fs $network $named $time
|
||||
# Default-Start: 2 3 4 5
|
||||
# Default-Stop: 0 1 6
|
||||
# Short-Description: Starts ejabberd jabber server
|
||||
# Description: Starts ejabberd jabber server, an XMPP
|
||||
# Short-Description: Starts ejabberd XMPP server
|
||||
# Description: Starts ejabberd XMPP server, an XMPP
|
||||
# compliant server written in Erlang.
|
||||
### END INIT INFO
|
||||
|
||||
|
||||
@@ -3,16 +3,19 @@ Description=XMPP Server
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=forking
|
||||
User=ejabberd
|
||||
Group=ejabberd
|
||||
Type=notify
|
||||
User=@installuser@
|
||||
Group=@installuser@
|
||||
LimitNOFILE=65536
|
||||
Restart=on-failure
|
||||
RestartSec=5
|
||||
ExecStart=/bin/sh -c '@ctlscriptpath@/ejabberdctl start && @ctlscriptpath@/ejabberdctl started'
|
||||
WatchdogSec=30
|
||||
ExecStart=@ctlscriptpath@/ejabberdctl foreground
|
||||
ExecStop=/bin/sh -c '@ctlscriptpath@/ejabberdctl stop && @ctlscriptpath@/ejabberdctl stopped'
|
||||
ExecReload=@ctlscriptpath@/ejabberdctl reload_config
|
||||
NotifyAccess=all
|
||||
PrivateDevices=true
|
||||
AmbientCapabilities=CAP_NET_BIND_SERVICE
|
||||
TimeoutSec=300
|
||||
|
||||
[Install]
|
||||
|
||||
+33
-11
@@ -17,11 +17,7 @@
|
||||
hosts:
|
||||
- localhost
|
||||
|
||||
loglevel: 4
|
||||
log_rotate_size: 10485760
|
||||
log_rotate_date: ""
|
||||
log_rotate_count: 1
|
||||
log_rate_limit: 100
|
||||
loglevel: info
|
||||
|
||||
## If you already have certificates, list them here
|
||||
# certfiles:
|
||||
@@ -37,6 +33,15 @@ listen:
|
||||
shaper: c2s_shaper
|
||||
access: c2s
|
||||
starttls_required: true
|
||||
-
|
||||
port: 5223
|
||||
ip: "::"
|
||||
tls: true
|
||||
module: ejabberd_c2s
|
||||
max_stanza_size: 262144
|
||||
shaper: c2s_shaper
|
||||
access: c2s
|
||||
starttls_required: true
|
||||
-
|
||||
port: 5269
|
||||
ip: "::"
|
||||
@@ -61,6 +66,16 @@ listen:
|
||||
request_handlers:
|
||||
/admin: ejabberd_web_admin
|
||||
/.well-known/acme-challenge: ejabberd_acme
|
||||
-
|
||||
port: 3478
|
||||
ip: "::"
|
||||
transport: udp
|
||||
module: ejabberd_stun
|
||||
use_turn: true
|
||||
## The server's public IPv4 address:
|
||||
# turn_ipv4_address: "203.0.113.3"
|
||||
## The server's public IPv6 address:
|
||||
# turn_ipv6_address: "2001:db8::3"
|
||||
-
|
||||
port: 1883
|
||||
ip: "::"
|
||||
@@ -104,14 +119,14 @@ api_permissions:
|
||||
who:
|
||||
access:
|
||||
allow:
|
||||
acl: loopback
|
||||
acl: admin
|
||||
- acl: loopback
|
||||
- acl: admin
|
||||
oauth:
|
||||
scope: "ejabberd:admin"
|
||||
access:
|
||||
allow:
|
||||
acl: loopback
|
||||
acl: admin
|
||||
- acl: loopback
|
||||
- acl: admin
|
||||
what:
|
||||
- "*"
|
||||
- "!stop"
|
||||
@@ -124,8 +139,10 @@ api_permissions:
|
||||
- connected_users_number
|
||||
|
||||
shaper:
|
||||
normal: 1000
|
||||
fast: 50000
|
||||
normal:
|
||||
rate: 3000
|
||||
burst_size: 20000
|
||||
fast: 100000
|
||||
|
||||
shaper_rules:
|
||||
max_user_sessions: 10
|
||||
@@ -154,6 +171,10 @@ modules:
|
||||
mod_http_api: {}
|
||||
mod_http_upload:
|
||||
put_url: https://@HOST@:5443/upload
|
||||
custom_headers:
|
||||
"Access-Control-Allow-Origin": "https://@HOST@"
|
||||
"Access-Control-Allow-Methods": "GET,HEAD,PUT,OPTIONS"
|
||||
"Access-Control-Allow-Headers": "Content-Type"
|
||||
mod_last: {}
|
||||
mod_mam:
|
||||
## Mnesia is limited to 2GB, better to use an SQL backend
|
||||
@@ -207,6 +228,7 @@ modules:
|
||||
mod_shared_roster: {}
|
||||
mod_stream_mgmt:
|
||||
resend_on_timeout: if_offline
|
||||
mod_stun_disco: {}
|
||||
mod_vcard: {}
|
||||
mod_vcard_xupdate: {}
|
||||
mod_version:
|
||||
|
||||
+2
-18
@@ -12,25 +12,11 @@
|
||||
#
|
||||
#POLL=true
|
||||
|
||||
#.
|
||||
#' SMP: SMP support ([enable|auto|disable])
|
||||
#
|
||||
# Explanation in Erlang/OTP documentation:
|
||||
# enable: starts the Erlang runtime system with SMP support enabled.
|
||||
# This may fail if no runtime system with SMP support is available.
|
||||
# auto: starts the Erlang runtime system with SMP support enabled if it
|
||||
# is available and more than one logical processor are detected.
|
||||
# disable: starts a runtime system without SMP support.
|
||||
#
|
||||
# Default: auto
|
||||
#
|
||||
#SMP=auto
|
||||
|
||||
#.
|
||||
#' ERL_MAX_PORTS: Maximum number of simultaneously open Erlang ports
|
||||
#
|
||||
# ejabberd consumes two or three ports for every connection, either
|
||||
# from a client or from another Jabber server. So take this into
|
||||
# from a client or from another XMPP server. So take this into
|
||||
# account when setting this limit.
|
||||
#
|
||||
# Default: 65536 (or 8196 on Windows)
|
||||
@@ -41,7 +27,7 @@
|
||||
#.
|
||||
#' FIREWALL_WINDOW: Range of allowed ports to pass through a firewall
|
||||
#
|
||||
# If Ejabberd is configured to run in cluster, and a firewall is blocking ports,
|
||||
# If ejabberd is configured to run in cluster, and a firewall is blocking ports,
|
||||
# it's possible to make Erlang use a defined range of port (instead of dynamic
|
||||
# ports) for node communication.
|
||||
#
|
||||
@@ -63,8 +49,6 @@
|
||||
#.
|
||||
#' ERL_EPMD_ADDRESS: IP addresses where epmd listens for connections
|
||||
#
|
||||
# IMPORTANT: This option works only in Erlang/OTP R14B03 and newer.
|
||||
#
|
||||
# This environment variable may be set to a comma-separated
|
||||
# list of IP addresses, in which case the epmd daemon
|
||||
# will listen only on the specified address(es) and on the
|
||||
|
||||
+43
-28
@@ -2,7 +2,6 @@
|
||||
|
||||
# define default configuration
|
||||
POLL=true
|
||||
SMP=auto
|
||||
ERL_MAX_PORTS=32000
|
||||
ERL_PROCESSES=250000
|
||||
ERL_MAX_ETS_TABLES=1400
|
||||
@@ -11,7 +10,10 @@ INET_DIST_INTERFACE=""
|
||||
ERLANG_NODE=ejabberd@localhost
|
||||
|
||||
# define default environment variables
|
||||
SCRIPT_DIR=$(cd "${0%/*}" && pwd)
|
||||
[ -z "$SCRIPT" ] && SCRIPT=$0
|
||||
SCRIPT_DIR="$(cd "$(dirname "$SCRIPT")" && pwd -P)"
|
||||
# shellcheck disable=SC2034
|
||||
ERTS_VSN="{{erts_vsn}}"
|
||||
ERL="{{erl}}"
|
||||
IEX="{{bindir}}/iex"
|
||||
EPMD="{{epmd}}"
|
||||
@@ -48,26 +50,28 @@ while [ $# -gt 0 ]; do
|
||||
-l|--logs) LOGS_DIR=$2; shift 2;;
|
||||
-f|--config) EJABBERD_CONFIG_PATH=$2; shift 2;;
|
||||
-c|--ctl-config) EJABBERDCTL_CONFIG_PATH=$2; shift 2;;
|
||||
-d|--config-dir) ETC_DIR=$2; shift 2;;
|
||||
-d|--config-dir) CONFIG_DIR=$2; shift 2;;
|
||||
-t|--no-timeout) NO_TIMEOUT="--no-timeout"; shift;;
|
||||
*) break;;
|
||||
esac
|
||||
done
|
||||
|
||||
# define ejabberd variables if not already defined from the command line
|
||||
: "${ETC_DIR:="{{sysconfdir}}/ejabberd"}"
|
||||
: "${LOGS_DIR:="{{localstatedir}}/log/ejabberd"}"
|
||||
: "${SPOOL_DIR:="{{localstatedir}}/lib/ejabberd"}"
|
||||
: "${EJABBERD_CONFIG_PATH:="$ETC_DIR/ejabberd.yml"}"
|
||||
: "${EJABBERDCTL_CONFIG_PATH:="$ETC_DIR/ejabberdctl.cfg"}"
|
||||
: "${CONFIG_DIR:="{{config_dir}}"}"
|
||||
: "${LOGS_DIR:="{{logs_dir}}"}"
|
||||
: "${SPOOL_DIR:="{{spool_dir}}"}"
|
||||
: "${EJABBERD_CONFIG_PATH:="$CONFIG_DIR/ejabberd.yml"}"
|
||||
: "${EJABBERDCTL_CONFIG_PATH:="$CONFIG_DIR/ejabberdctl.cfg"}"
|
||||
# Allows passing extra Erlang command-line arguments in vm.args file
|
||||
: "${VMARGS:="$CONFIG_DIR/vm.args"}"
|
||||
# shellcheck source=ejabberdctl.cfg.example
|
||||
[ -f "$EJABBERDCTL_CONFIG_PATH" ] && . "$EJABBERDCTL_CONFIG_PATH"
|
||||
[ -n "$ERLANG_NODE_ARG" ] && ERLANG_NODE="$ERLANG_NODE_ARG"
|
||||
[ "$ERLANG_NODE" = "${ERLANG_NODE%.*}" ] && S="-s"
|
||||
: "${EJABBERD_DOC_PATH:="{{docdir}}"}"
|
||||
: "${EJABBERD_LOG_PATH:="$LOGS_DIR/ejabberd.log"}"
|
||||
|
||||
# define erl parameters
|
||||
ERLANG_OPTS="+K $POLL -smp $SMP +P $ERL_PROCESSES $ERL_OPTIONS"
|
||||
ERLANG_OPTS="+K $POLL +P $ERL_PROCESSES $ERL_OPTIONS"
|
||||
if [ -n "$FIREWALL_WINDOW" ] ; then
|
||||
ERLANG_OPTS="$ERLANG_OPTS -kernel inet_dist_listen_min ${FIREWALL_WINDOW%-*} inet_dist_listen_max ${FIREWALL_WINDOW#*-}"
|
||||
fi
|
||||
@@ -77,23 +81,22 @@ if [ -n "$INET_DIST_INTERFACE" ] ; then
|
||||
ERLANG_OPTS="$ERLANG_OPTS -kernel inet_dist_use_interface $INET_DIST_INTERFACE2"
|
||||
fi
|
||||
fi
|
||||
ERL_LIBS={{libdir}}
|
||||
# if vm.args file exists in config directory, pass it to Erlang VM
|
||||
[ -f "$VMARGS" ] && ERLANG_OPTS="$ERLANG_OPTS -args_file $VMARGS"
|
||||
ERL_LIBS='{{libdir}}'
|
||||
ERL_CRASH_DUMP="$LOGS_DIR"/erl_crash_$(date "+%Y%m%d-%H%M%S").dump
|
||||
ERL_INETRC="$ETC_DIR"/inetrc
|
||||
ERL_INETRC="$CONFIG_DIR"/inetrc
|
||||
|
||||
# define ejabberd parameters
|
||||
EJABBERD_OPTS="$EJABBERD_OPTS\
|
||||
$(sed '/^log_rate_limit/!d;s/:[ \t]*\([0-9]*\).*/ \1/;s/^/ /' "$EJABBERD_CONFIG_PATH")\
|
||||
$(sed '/^log_rotate_size/!d;s/:[ \t]*\([0-9]*\).*/ \1/;s/^/ /' "$EJABBERD_CONFIG_PATH")\
|
||||
$(sed '/^log_rotate_count/!d;s/:[ \t]*\([0-9]*\).*/ \1/;s/^/ /' "$EJABBERD_CONFIG_PATH")\
|
||||
$(sed '/^log_rotate_date/!d;s/:[ \t]*\(.[^ ]*\).*/ \1/;s/^/ /' "$EJABBERD_CONFIG_PATH")"
|
||||
$(sed '/^log_rotate_size/!d;s/:[ \t]*\([0-9]\{1,\}\).*/ \1/;s/:[ \t]*\(infinity\).*/ \1/;s/^/ /' "$EJABBERD_CONFIG_PATH")\
|
||||
$(sed '/^log_rotate_count/!d;s/:[ \t]*\([0-9]*\).*/ \1/;s/^/ /' "$EJABBERD_CONFIG_PATH")"
|
||||
[ -n "$EJABBERD_OPTS" ] && EJABBERD_OPTS="-ejabberd $EJABBERD_OPTS"
|
||||
EJABBERD_OPTS="-mnesia dir \"$SPOOL_DIR\" $MNESIA_OPTIONS $EJABBERD_OPTS -s ejabberd"
|
||||
|
||||
# export global variables
|
||||
export EJABBERD_CONFIG_PATH
|
||||
export EJABBERD_LOG_PATH
|
||||
export EJABBERD_DOC_PATH
|
||||
export EJABBERD_PID_PATH
|
||||
export ERL_CRASH_DUMP
|
||||
export ERL_EPMD_ADDRESS
|
||||
@@ -103,6 +106,7 @@ export ERL_MAX_ETS_TABLES
|
||||
export CONTRIB_MODULES_PATH
|
||||
export CONTRIB_MODULES_CONF_DIR
|
||||
export ERL_LIBS
|
||||
export SCRIPT_DIR
|
||||
|
||||
# run command either directly or via su $INSTALLUSER
|
||||
exec_cmd()
|
||||
@@ -143,7 +147,7 @@ debugwarning()
|
||||
echo "To bypass permanently this warning, add to ejabberdctl.cfg the line:"
|
||||
echo " EJABBERD_BYPASS_WARNINGS=true"
|
||||
echo "Press return to continue"
|
||||
read -r input
|
||||
read -r _
|
||||
echo ""
|
||||
fi
|
||||
}
|
||||
@@ -166,7 +170,7 @@ livewarning()
|
||||
echo "To bypass permanently this warning, add to ejabberdctl.cfg the line:"
|
||||
echo " EJABBERD_BYPASS_WARNINGS=true"
|
||||
echo "Press return to continue"
|
||||
read -r input
|
||||
read -r _
|
||||
echo ""
|
||||
fi
|
||||
}
|
||||
@@ -175,15 +179,21 @@ help()
|
||||
{
|
||||
echo ""
|
||||
echo "Commands to start an ejabberd node:"
|
||||
echo " start Start an ejabberd node in server mode"
|
||||
echo " debug Attach an interactive Erlang shell to a running ejabberd node"
|
||||
echo " iexdebug Attach an interactive Elixir shell to a running ejabberd node"
|
||||
echo " live Start an ejabberd node in live (interactive) mode"
|
||||
echo " iexlive Start an ejabberd node in live (interactive) mode, within an Elixir shell"
|
||||
echo " foreground Start an ejabberd node in server mode (attached)"
|
||||
echo " start Start in server mode"
|
||||
echo " foreground Start in server mode (attached)"
|
||||
echo " foreground-quiet Start in server mode (attached), show only critical messages"
|
||||
echo " live Start in interactive mode, with Erlang shell"
|
||||
echo " iexlive Start in interactive mode, with Elixir shell"
|
||||
echo ""
|
||||
echo "Commands to interact with a running ejabberd node:"
|
||||
echo " debug Attach an interactive Erlang shell to a running node"
|
||||
echo " iexdebug Attach an interactive Elixir shell to a running node"
|
||||
echo " etop Attach to a running node and start Erlang Top"
|
||||
echo " ping Send ping to the node, returns pong or pang"
|
||||
echo " started|stopped Wait for the node to fully start|stop"
|
||||
echo ""
|
||||
echo "Optional parameters when starting an ejabberd node:"
|
||||
echo " --config-dir dir Config ejabberd: $ETC_DIR"
|
||||
echo " --config-dir dir Config ejabberd: $CONFIG_DIR"
|
||||
echo " --config file Config ejabberd: $EJABBERD_CONFIG_PATH"
|
||||
echo " --ctl-config file Config ejabberdctl: $EJABBERDCTL_CONFIG_PATH"
|
||||
echo " --logs dir Directory for logs: $LOGS_DIR"
|
||||
@@ -196,9 +206,10 @@ help()
|
||||
uid()
|
||||
{
|
||||
uuid=$(uuidgen 2>/dev/null)
|
||||
random=$(awk 'BEGIN { srand(); print int(rand()*32768) }' /dev/null)
|
||||
[ -z "$uuid" ] && [ -f /proc/sys/kernel/random/uuid ] && uuid=$(cat /proc/sys/kernel/random/uuid)
|
||||
[ -z "$uuid" ] && uuid=$(printf "%X" "${RANDOM:-$$}$(date +%M%S)")
|
||||
uuid=${uuid%%-*}
|
||||
[ -z "$uuid" ] && uuid=$(printf "%X" "${random:-$$}$(date +%M%S)")
|
||||
uuid=$(printf '%s' $uuid | sed 's/^\(...\).*$/\1/')
|
||||
[ $# -eq 0 ] && echo "${uuid}-${ERLANG_NODE}"
|
||||
[ $# -eq 1 ] && echo "${uuid}-${1}-${ERLANG_NODE}"
|
||||
[ $# -eq 2 ] && echo "${uuid}-${1}@${2}"
|
||||
@@ -267,6 +278,10 @@ case $1 in
|
||||
check_start
|
||||
exec_erl "$ERLANG_NODE" $EJABBERD_OPTS -noinput
|
||||
;;
|
||||
foreground-quiet)
|
||||
check_start
|
||||
exec_erl "$ERLANG_NODE" $EJABBERD_OPTS -noinput -ejabberd quiet true
|
||||
;;
|
||||
live)
|
||||
livewarning
|
||||
check_start
|
||||
|
||||
@@ -1,77 +0,0 @@
|
||||
<!-- aim-transport.xml -->
|
||||
|
||||
<jabber>
|
||||
|
||||
<!--
|
||||
You need to add elogger and rlogger entries when using ejabberd.
|
||||
In this case the transport will do the logging.
|
||||
-->
|
||||
|
||||
<log id='elogger'>
|
||||
<host/>
|
||||
<logtype/>
|
||||
<format>%d: [%t] (%h): %s</format>
|
||||
<file>/var/log/jabber/aim-transport-error.log</file>
|
||||
</log>
|
||||
|
||||
<log id='rlogger'>
|
||||
<host/>
|
||||
<logtype>record</logtype>
|
||||
<format>%d %h %s</format>
|
||||
<file>/var/log/jabber/aim-transport-record.log</file>
|
||||
</log>
|
||||
|
||||
<!--
|
||||
ejabberd do not provide XDB services.
|
||||
xdb_file.so is loaded in to handle all XDB requests.
|
||||
-->
|
||||
|
||||
<xdb id="xdb">
|
||||
<host/>
|
||||
<load>
|
||||
<xdb_file>/usr/local/lib/jabber/libjabberdxdbfile.so</xdb_file> <!-- This file is part of jabberd-1.4.x. -->
|
||||
</load>
|
||||
<xdb_file xmlns="jabber:config:xdb_file">
|
||||
<spool><jabberd:cmdline flag='s'>/var/spool/jabber</jabberd:cmdline></spool>
|
||||
</xdb_file>
|
||||
</xdb>
|
||||
|
||||
<!--
|
||||
Make sure that all host names here are resolveable via DNS if you
|
||||
want the transport to be available to the public.
|
||||
-->
|
||||
|
||||
<service id='aim.SERVER.COM'>
|
||||
<!-- aim-transport configuration. -->
|
||||
<aimtrans xmlns='jabber:config:aimtrans'>
|
||||
<vCard>
|
||||
<FN>AIM/ICQ Transport</FN>
|
||||
<DESC>This is the AIM/ICQ Transport.</DESC>
|
||||
<MAIL>EMAIL@ADDRESS.COM</MAIL>
|
||||
<URL>http://aim-transport.jabberstudio.org/</URL>
|
||||
</vCard>
|
||||
<charset>cp1252</charset>
|
||||
</aimtrans>
|
||||
<!-- aim-transport module. -->
|
||||
<load>
|
||||
<aim_transport>/usr/local/lib/jabber/aim-transport.so</aim_transport>
|
||||
</load>
|
||||
</service>
|
||||
|
||||
<!--
|
||||
The settings below have to match the settings you made
|
||||
in your ejabberd.cfg configuration file.
|
||||
-->
|
||||
|
||||
<service id="icq-linker">
|
||||
<uplink/>
|
||||
<connect>
|
||||
<ip>127.0.0.1</ip>
|
||||
<port>5233</port>
|
||||
<secret>SECRET</secret>
|
||||
</connect>
|
||||
</service>
|
||||
|
||||
<pidfile>/var/run/jabber/aim-transport.pid</pidfile>
|
||||
|
||||
</jabber>
|
||||
@@ -1,136 +0,0 @@
|
||||
<!-- ile.xml -->
|
||||
|
||||
<config>
|
||||
<jabber>
|
||||
<server>127.0.0.1</server>
|
||||
<port>5238</port>
|
||||
<secret>SECRET</secret>
|
||||
<service>ile.SERVER.COM</service>
|
||||
<connectsleep>7</connectsleep> <!-- seconds to wait if we get disconnected -->
|
||||
<language>en</language>
|
||||
<vCard>
|
||||
<FN>I Love Email</FN>
|
||||
<DESC>With this service you can receive email notifications.
|
||||
|
||||
Security warning: Be careful when using this. Your password will travel in clear from your client to your jabber server if you don't use SSL and it will probably travel in clear from the jabber server to your email server. Use with care. This shouldn't be an issue in your Intranet, but it is if you use an ILE installed in a foreign jabber server.</DESC>
|
||||
<MAIL>EMAIL@ADDRESS.COM</MAIL>
|
||||
<URL>http://ile.jabberstudio.org/</URL>
|
||||
</vCard>
|
||||
</jabber>
|
||||
|
||||
<debug>
|
||||
<file>/var/log/jabber/ile.log</file>
|
||||
<level>1</level> <!-- man Net::Jabber::Debug -->
|
||||
</debug>
|
||||
|
||||
<mail>
|
||||
<checkinterval>10</checkinterval> <!-- in minutes -->
|
||||
<timeout>20</timeout> <!-- timeout for IMAP/POP connection, in seconds -->
|
||||
</mail>
|
||||
|
||||
<files>
|
||||
<users>/var/spool/jabber/ile.SERVER.COM/users.db</users>
|
||||
<passwords>/var/spool/jabber/ile.SERVER.COM/passwords.db</passwords>
|
||||
<hosts>/var/spool/jabber/ile.SERVER.COM/hosts.db</hosts>
|
||||
<types>/var/spool/jabber/ile.SERVER.COM/types.db</types>
|
||||
<notifyxa>/var/spool/jabber/ile.SERVER.COM/notifyxa.db</notifyxa>
|
||||
<notifydnd>/var/spool/jabber/ile.SERVER.COM/notifydnd.db</notifydnd>
|
||||
<urls>/var/spool/jabber/ile.SERVER.COM/urls.db</urls>
|
||||
</files>
|
||||
|
||||
<form>
|
||||
<en>
|
||||
<instructions>Please fill in the fields,according to your email account settings and notification preferences</instructions>
|
||||
<title>ILE: Email notification service</title>
|
||||
<email_options>Email account settings</email_options>
|
||||
<user>Username</user>
|
||||
<pass>Password</pass>
|
||||
<host>Hostname</host>
|
||||
<type>Type</type>
|
||||
<newmail>You have received NUM email messages since last time I checked, which was CHECKINTERVAL minutes ago.</newmail>
|
||||
<errorcheck>There was an error while trying to check mail for ACCOUNT.</errorcheck>
|
||||
<notify_options>Notification Options</notify_options>
|
||||
<notifyxa>Notify even when Xtended Away (XA)</notifyxa>
|
||||
<notifydnd>Notify even when Do Not Disturb (DND)</notifydnd>
|
||||
<webmail_url>Webmail URL</webmail_url>
|
||||
<webmail_login>Login to ACCOUNT</webmail_login>
|
||||
<iledesc>ILE: an email notifier component: http://ile.jabberstudio.org</iledesc>
|
||||
</en>
|
||||
|
||||
<es>
|
||||
<instructions>Por favor, rellene los campos del formulario.</instructions>
|
||||
<title>ILE: Servicio de notificación de correo</title>
|
||||
<email_options>Configuración de la cuenta de correo</email_options>
|
||||
<user>Usuario</user>
|
||||
<pass>Clave</pass>
|
||||
<host>Host</host>
|
||||
<type>Tipo</type>
|
||||
<newmail>Ha recibido NUM email(s) desde la última comprobación que fue hace CHECKINTERVAL minutos</newmail>
|
||||
<errorcheck>Ha habido un error en la comprobación del correo para la cuenta ACCOUNT.</errorcheck>
|
||||
<notify_options>Opciones de notificación</notify_options>
|
||||
<notifyxa>Notificar incluso si muy ausente (XA)</notifyxa>
|
||||
<notifydnd>Notificar incluso si no molestar (DND)</notifydnd>
|
||||
<webmail_url>Webmail URL</webmail_url>
|
||||
<webmail_login>Leer correo de ACCOUNT</webmail_login>
|
||||
<iledesc>ILE: un notificador de nuevo email - http://ile.jabberstudio.org</iledesc>
|
||||
</es>
|
||||
|
||||
<ca>
|
||||
<instructions>Ompli els camps del formulari.</instructions>
|
||||
<title>ILE: Servei de notificació de nou email</title>
|
||||
<email_options>Dades del compte de mail</email_options>
|
||||
<user>Usuari</user>
|
||||
<pass>Clau</pass>
|
||||
<host>Host</host>
|
||||
<type>Tipus</type>
|
||||
<newmail>Ha rebut NUM email(s) des de la última comprobació que va ser fa CHECKINTERVAL minuts.</newmail>
|
||||
<errorcheck>S'ha produit un error en la comprobació del correu per al compte ACCOUNT.</errorcheck>
|
||||
<notify_options>Opcions de notificació</notify_options>
|
||||
<notifyxa>Notificar si molt absent (XA)</notifyxa>
|
||||
<notifydnd>Notificar si no molestar (DND)</notifydnd>
|
||||
<webmail_url>Webmail URL</webmail_url>
|
||||
<webmail_login>Llegir correu de ACCOUNT</webmail_login>
|
||||
<iledesc>ILE: un notificador de nou email - http://ile.jabberstudio.org</iledesc>
|
||||
</ca>
|
||||
|
||||
<ro>
|
||||
<!-- Contributed by Adrian Rappa -->
|
||||
<instructions>Va rog completati urmatoarele campuri</instructions>
|
||||
<title>I Love Email: new email notification service</title>
|
||||
<email_options>Email account settings</email_options>
|
||||
<user>Nume utilizator</user>
|
||||
<pass>Parola</pass>
|
||||
<host>Nume gazda</host>
|
||||
<type>Tip</type>
|
||||
<newmail>Ati primit NUM mesaj(e) de la ultima verificare, care a fost acum CHECKINTERVAL minute.</newmail>
|
||||
<errorcheck>A fost eroare in timp ce incercam sa verific posta pentru ACCOUNT.</errorcheck>
|
||||
<notify_options>Notification Options</notify_options>
|
||||
<notifyxa>Notify even when Xtended Away (XA)</notifyxa>
|
||||
<notifydnd>Notify even when Do Not Disturb (DND)</notifydnd>
|
||||
<webmail_url>Webmail URL</webmail_url>
|
||||
<webmail_login>Login to ACCOUNT</webmail_login>
|
||||
<iledesc>ILE: an email notifier component: http://ile.jabberstudio.org</iledesc>
|
||||
</ro>
|
||||
|
||||
<nl>
|
||||
<!-- Contributed by Sander Devrieze -->
|
||||
<instructions>Vul volgende velden in.</instructions>
|
||||
<title>ILE: Dienst voor e-mailnotificaties</title>
|
||||
<email_options>Instellingen van e-mailaccount</email_options>
|
||||
<user>Gebruikersnaam</user>
|
||||
<pass>Wachtwoord</pass>
|
||||
<host>Inkomende mailserver</host>
|
||||
<type>Type verbinding</type>
|
||||
<newmail>U hebt NUM berichten ontvangen sinds CHECKINTERVAL minuten geleden.</newmail>
|
||||
<errorcheck>Fout tijdens controle op nieuwe e-mails bij ACCOUNT. ILE zal deze account niet meer opnieuw controleren tot u uw registratiegegevens wijzigt of opnieuw aanmeldt.</errorcheck>
|
||||
<notify_options>Notificatie-instellingen</notify_options>
|
||||
<notifyxa>Notificeer ook in de status Niet Beschikbaar (XA)</notifyxa>
|
||||
<notifydnd>Notificeer ook in de status Niet Storen (DND)</notifydnd>
|
||||
<webmail_url>URL van webmail</webmail_url>
|
||||
<webmail_login>Aanmelden op ACCOUNT</webmail_login>
|
||||
<iledesc>ILE: een dienst om e-mailnotificaties te ontvangen: http://ile.jabberstudio.org</iledesc>
|
||||
</nl>
|
||||
|
||||
</form>
|
||||
|
||||
</config>
|
||||
@@ -1,149 +0,0 @@
|
||||
<jggtrans>
|
||||
|
||||
<service jid="gg.SERVER.COM"/>
|
||||
|
||||
<!-- This connects the jabber-gg-transport process to ejabberd. -->
|
||||
<connect id="gglinker">
|
||||
<ip>127.0.0.1</ip>
|
||||
<port>5237</port>
|
||||
<secret>SECRET</secret>
|
||||
</connect>
|
||||
|
||||
<register>
|
||||
<!-- This tag contains the message displayed to users at registration time.
|
||||
You can use <p/> and/or <br/> to break lines. Multiple spaces and newlines
|
||||
are converted to just one, so formatting of config file doesn't really matter. -->
|
||||
<instructions>
|
||||
Fill in your GG number (after "username")
|
||||
and password to register on the transport.
|
||||
<p/>To change your information in the GaduGadu directory you need to fill in the other fields.
|
||||
<p/>To remove registration you need to leave the form blank.
|
||||
</instructions>
|
||||
</register>
|
||||
|
||||
<search>
|
||||
<!-- This tag contains the message displayed to users at search time. -->
|
||||
<instructions>
|
||||
To search people:<br/>
|
||||
First fill in surname or family name, nickname, city, birthyear or range of birthyears (eg. 1950-1960)
|
||||
and gender (you may fill in more fields at once).<br/>
|
||||
or<br/>
|
||||
Fill in phone number<br/>
|
||||
or<br/>
|
||||
Fill in the GG number of the person you are searching.
|
||||
</instructions>
|
||||
</search>
|
||||
|
||||
<gateway>
|
||||
<!-- This is message, that may be displayed to user when adding gg contact. -->
|
||||
<desc>Please fill in the GaduGadu number of the person you want to add.</desc>
|
||||
<!-- And this is the prompt for GG number. -->
|
||||
<prompt>GG Nummer</prompt>
|
||||
</gateway>
|
||||
|
||||
<vCard>
|
||||
<FN>Gadu-Gadu Transport</FN>
|
||||
<DESC>This is the Gadu-Gadu Transport.</DESC>
|
||||
<EMAIL>EMAIL@ADDRESS.COM</EMAIL>
|
||||
<URL>http://www.jabberstudio.org/projects/jabber-gg-transport/</URL>
|
||||
</vCard>
|
||||
|
||||
<!-- Default user locale (language).
|
||||
Empty means system locale setting,
|
||||
no (or commented-out) <default_locale> tag means no translations. -->
|
||||
<!-- <default_locale>pl_PL</default_locale> -->
|
||||
|
||||
<!-- Logger configuration.
|
||||
You may configure one logger of type "syslog" and/or one of type "file".
|
||||
You may also not configure logging at all. -->
|
||||
<log type="syslog" facility="local0"/>
|
||||
<log type="file">/var/log/jabber/jabber-gg-transport.log</log>
|
||||
|
||||
<!-- Uncomment this, if you want proxy to be used for Gadu-Gadu connection. -->
|
||||
<!--
|
||||
<proxy>
|
||||
<ip>127.0.0.1</ip>
|
||||
<port>8080</port>
|
||||
</proxy>
|
||||
-->
|
||||
|
||||
<!-- You can change these values according to your needs. -->
|
||||
<conn_timeout>60</conn_timeout>
|
||||
<ping_interval>10</ping_interval>
|
||||
|
||||
<!-- Gadu-Gadu server doesn't seem to answer pings anymore :-(
|
||||
So let's give it 10 year :-) -->
|
||||
<pong_timeout>315360000</pong_timeout>
|
||||
|
||||
<!-- This time after disconnection from Gadu-Gadu server the transport
|
||||
will try to connect again. -->
|
||||
<reconnect>300</reconnect>
|
||||
|
||||
<!-- How long to wait before restart, after jabber server connection is broken
|
||||
negative value means, that jggtrans should terminate. -->
|
||||
<restart_timeout>60</restart_timeout>
|
||||
|
||||
<!-- Delay between the unavailable presence is received from user and loggin out
|
||||
from Gadu-Gadu - for nice <presence type="invisible"/> support. -->
|
||||
<disconnect_delay>5</disconnect_delay>
|
||||
|
||||
<!-- list of Gadu-Gadu servers to use.
|
||||
<hub/> means "use GG hub to find server"
|
||||
<server/> tag should contain server address and may contain "port"
|
||||
attribute with port number. When TLS is available (supported by libgadu)
|
||||
it will be used unless "tls" attribute is set to "no". Please notice,
|
||||
that not all servers will accept TLS connections.
|
||||
Servers (including hub) are tried in order as they appear in <servers/>
|
||||
element.
|
||||
A reasonable default server list is hardcoded in jggtrans.
|
||||
-->
|
||||
<!--
|
||||
<servers>
|
||||
<hub/>
|
||||
<server port="443">217.17.41.90</server>
|
||||
<server tls="no">217.17.41.85</server>
|
||||
<server tls="no">217.17.41.88</server>
|
||||
</servers>
|
||||
-->
|
||||
|
||||
<!-- Spool directory. This is the place, where user info will be stored. -->
|
||||
<!-- Be careful about permissions - users' Gadu-Gadu passwords are stored there. -->
|
||||
<spool>/var/spool/jabber/gg.SERVER.COM/</spool>
|
||||
|
||||
<!-- Where to store pid file. This tag is optional. -->
|
||||
<pidfile>/var/run/jabber/jabber-gg-transport.pid</pidfile>
|
||||
|
||||
<!-- jid allowed to do some administrative task (eg. discovering online users).
|
||||
May be used multiple times. -->
|
||||
<admin>GG_TRANSPORT_ADMIN@SERVER.COM</admin>
|
||||
|
||||
<!-- ACL gives detailed access control to the transport. -->
|
||||
<acl>
|
||||
<!-- Example entries: -->
|
||||
|
||||
<allow who="admin@SERVER.COM" what="iq/query?xmlns=http://jabber.org/protocol/stats"/>
|
||||
<!-- will allow statistics gathering to admin@SERVER.COM -->
|
||||
|
||||
<deny who="*" what="iq/query?xmlns=http://jabber.org/protocol/stats"/>
|
||||
<!-- will deny statistics gathering for anybody else -->
|
||||
|
||||
<!-- <allow who="*@SERVER.COM"/> -->
|
||||
<!-- will allow anything else to users from "SERVER.COM" -->
|
||||
|
||||
<!-- <deny what="iq/query?xmlns=jabber:x:register"/> -->
|
||||
<!-- will deny registration for all other users -->
|
||||
|
||||
<!-- <allow what="presence"/> -->
|
||||
<!-- allow presence from anybody -->
|
||||
|
||||
<!-- <allow what="iq"/> -->
|
||||
<!-- allow iq from anybody -->
|
||||
|
||||
<!-- <allow what="message"/> -->
|
||||
<!-- allow message from anybody -->
|
||||
|
||||
<!-- <deny/> -->
|
||||
<!-- will deny anything else -->
|
||||
</acl>
|
||||
|
||||
</jggtrans>
|
||||
@@ -1,128 +0,0 @@
|
||||
<!-- jit.xml -->
|
||||
|
||||
<jabber>
|
||||
|
||||
<!--
|
||||
You need to add elogger and rlogger entries here when using ejabberd.
|
||||
In this case the transport will do the logging.
|
||||
-->
|
||||
|
||||
<log id='elogger'>
|
||||
<host/>
|
||||
<logtype/>
|
||||
<file>/var/log/jabber/jit-error</file> <!-- WPJabber logs with date. -->
|
||||
</log>
|
||||
|
||||
<log id='rlogger'>
|
||||
<host/>
|
||||
<logtype>record</logtype>
|
||||
<file>/var/log/jabber/jit-record</file> <!-- WPJabber logs with date. -->
|
||||
</log>
|
||||
|
||||
<!--
|
||||
ejabberd do not provide XDB services.
|
||||
xdb_file-jit.so (the renamed xdb_file.so from WPJabber) is
|
||||
loaded in to handle all XDB requests.
|
||||
Read also the documentation in xdb_file/README from the JIT package.
|
||||
-->
|
||||
|
||||
<xdb id="xdb">
|
||||
<host/>
|
||||
<load>
|
||||
<xdb_file>/usr/local/lib/jabber/xdb_file.so</xdb_file> <!-- The xdb_file.so from WPJabber/JIT. -->
|
||||
</load>
|
||||
<xdb_file xmlns="jabber:config:xdb_file">
|
||||
<spool><jabberd:cmdline flag='s'>/var/spool/jabber</jabberd:cmdline></spool>
|
||||
</xdb_file>
|
||||
</xdb>
|
||||
|
||||
<!--
|
||||
Make sure that all host names here are resolveable via DNS if you
|
||||
want the transport to be available to the public.
|
||||
-->
|
||||
|
||||
<service id="icq.SERVER.COM">
|
||||
<!--
|
||||
Replace SERVER.COM with the same as above to enable sms.
|
||||
-->
|
||||
<host>sms.icq.SERVER.COM</host>
|
||||
<!-- JIT configuration. -->
|
||||
<icqtrans xmlns="jabber:config:icqtrans">
|
||||
<sms>
|
||||
<host>sms.icq.SERVER.COM</host>
|
||||
<!-- Status of virtual "sms-contacts". -->
|
||||
<show>away</show>
|
||||
<status/>
|
||||
</sms>
|
||||
<instructions>Fill in your UIN and password.</instructions>
|
||||
<search>Search ICQ users.</search>
|
||||
<vCard>
|
||||
<FN>ICQ Transport (JIT)</FN>
|
||||
<DESC>This is the Jabber ICQ Transport.</DESC>
|
||||
<MAIL>EMAIL@ADDRESS.COM</MAIL>
|
||||
<URL>http://jit.jabberstudio.org/</URL>
|
||||
</vCard>
|
||||
<!-- Hashtable for users. -->
|
||||
<prime>3907</prime>
|
||||
<!-- Send messages from ICQ as chat to Jabber clients. -->
|
||||
<chat/>
|
||||
<!-- Enable this for ICQ web presence. -->
|
||||
<web/>
|
||||
<!--
|
||||
If you don't want jabber:x:data forms
|
||||
in reg and search uncomment this tag
|
||||
(Not recomended).
|
||||
-->
|
||||
<no_xdata/>
|
||||
<!--
|
||||
This tag is necessary when using ejabberd.
|
||||
In this way JIT will have its own contact list.
|
||||
-->
|
||||
<own_roster/>
|
||||
<!--
|
||||
When present, this tag will tell JIT not to try to
|
||||
get the user's roster (which will take a bit of time
|
||||
to fail in scenarios described above).
|
||||
-->
|
||||
<no_jabber_roster/>
|
||||
<!-- File with stats. -->
|
||||
<user_count_file>/var/spool/jabber/jit-count</user_count_file>
|
||||
<!--
|
||||
Interval beetween checking sessions: ping, messages, acks.
|
||||
-->
|
||||
<session_check>5</session_check>
|
||||
<!-- Reconnect retries. -->
|
||||
<reconnects>5</reconnects>
|
||||
<!--
|
||||
Time in sec when session can be inactive, 0=disabled.
|
||||
-->
|
||||
<session_timeout>18000</session_timeout>
|
||||
<charset>windows-1252</charset>
|
||||
<server>
|
||||
<host port="5190">login.icq.com</host>
|
||||
</server>
|
||||
</icqtrans>
|
||||
<!-- JIT module. -->
|
||||
<load>
|
||||
<icqtrans>/usr/local/lib/jabber/jit.so</icqtrans>
|
||||
</load>
|
||||
</service>
|
||||
|
||||
<!--
|
||||
The settings below have to match the settings you made
|
||||
in your ejabberd.cfg configuration file.
|
||||
-->
|
||||
|
||||
<service id="icq-linker">
|
||||
<host>SERVER.COM</host>
|
||||
<uplink/>
|
||||
<connect>
|
||||
<ip>127.0.0.1</ip>
|
||||
<port>5234</port>
|
||||
<secret>SECRET</secret>
|
||||
</connect>
|
||||
</service>
|
||||
|
||||
<pidfile>/var/run/jabber/jit.pid</pidfile>
|
||||
|
||||
</jabber>
|
||||
@@ -1,118 +0,0 @@
|
||||
<!-- msn-transport.xml -->
|
||||
|
||||
<jabber>
|
||||
|
||||
<!--
|
||||
You need to add elogger and rlogger entries here when using ejabberd.
|
||||
In this case the transport will do the logging.
|
||||
-->
|
||||
|
||||
<log id='elogger'>
|
||||
<host/>
|
||||
<logtype/>
|
||||
<format>%d: [%t] (%h): %s</format>
|
||||
<file>/var/log/jabber/msn-transport-error.log</file>
|
||||
</log>
|
||||
|
||||
<log id='rlogger'>
|
||||
<host/>
|
||||
<logtype>record</logtype>
|
||||
<format>%d %h %s</format>
|
||||
<file>/var/log/jabber/msn-transport-record.log</file>
|
||||
</log>
|
||||
|
||||
<!--
|
||||
ejabberd do not provide XDB services.
|
||||
xdb_file.so is loaded in to handle all XDB requests.
|
||||
-->
|
||||
|
||||
<xdb id="xdb">
|
||||
<host/>
|
||||
<load>
|
||||
<xdb_file>/usr/local/lib/jabber/libjabberdxdbfile.so</xdb_file>
|
||||
</load>
|
||||
<xdb_file xmlns="jabber:config:xdb_file">
|
||||
<spool><jabberd:cmdline flag='s'>/var/spool/jabber</jabberd:cmdline></spool>
|
||||
</xdb_file>
|
||||
</xdb>
|
||||
|
||||
<!--
|
||||
Make sure that all host names here are resolveable via DNS if you
|
||||
want the transport to be available to the public.
|
||||
-->
|
||||
|
||||
<service id="msn.SERVER.COM">
|
||||
<!-- msn-transport configuration. -->
|
||||
<msntrans xmlns="jabber:config:msntrans">
|
||||
<instructions>Fill in your MSN account and password (eg: user1@hotmail.com). A nickname is optional.</instructions>
|
||||
<vCard>
|
||||
<FN>MSN Transport</FN>
|
||||
<DESC>This is the MSN Transport.</DESC>
|
||||
<EMAIL>EMAIL@ADDRESS.COM</EMAIL>
|
||||
<URL>http://msn-transport.jabberstudio.org/</URL>
|
||||
</vCard>
|
||||
<!--
|
||||
Conference support allows you to create groupchat rooms on the
|
||||
msn-transport and invite MSN users to join.
|
||||
-->
|
||||
<conference id="conference.msn.SERVER.COM">
|
||||
<!--
|
||||
This will make MSN transport invite you to a special groupchat
|
||||
room when more then one user joins a normal one-on-one session.
|
||||
Joining this room will make MSN transport "switch" the session
|
||||
into groupchat mode. If you ignore it, MSN transport will
|
||||
continue to send the messages as one-on-one chats.
|
||||
-->
|
||||
<invite>More than one user entered this chat session. Enter this room to switch to groupchat modus.</invite>
|
||||
<notice>
|
||||
<join> is available</join>
|
||||
<leave> has leaved the room</leave>
|
||||
</notice>
|
||||
</conference>
|
||||
<!-- Enable Hotmail inbox notification. -->
|
||||
<headlines/>
|
||||
<!--
|
||||
Enable fancy friendly names
|
||||
If the user enters a nickname upon registration, and the user has
|
||||
a status message, their MSN friendly name will be "nickname - status message".
|
||||
|
||||
If the user does not enter a nickname on registration, but they do have
|
||||
a status message, their friendly name will just be their status message.
|
||||
|
||||
If the user did enter a nickname on registration, but they have a blank status message,
|
||||
then their friendly name will just be the registered nickname.
|
||||
|
||||
If the user did not enter a nickname on registration, and they have a blank status message,
|
||||
their nickname will just be the username portion of their JID.
|
||||
|
||||
If the above chosen friendly name is too long, then it will be truncated and "..." placed
|
||||
at the end. MSN only supports friendly names of 128 characters, so this is unavoidable.
|
||||
|
||||
If this is disabled, then the registered nick is always sent as the MSN friendly name,
|
||||
or if that is blank, the username portion of their JID is sent instead.
|
||||
-->
|
||||
<fancy_friendly/>
|
||||
</msntrans>
|
||||
<!-- msn-transport module. -->
|
||||
<load>
|
||||
<msntrans>/usr/local/lib/jabber/msn-transport.so</msntrans>
|
||||
</load>
|
||||
</service>
|
||||
|
||||
<!--
|
||||
The settings below have to match the settings you made
|
||||
in your ejabberd.cfg configuration file.
|
||||
-->
|
||||
|
||||
<service id="msn-linker">
|
||||
<uplink/>
|
||||
<connect>
|
||||
<ip>127.0.0.1</ip>
|
||||
<port>5235</port>
|
||||
<secret>SECRET</secret>
|
||||
</connect>
|
||||
</service>
|
||||
|
||||
<pidfile>/var/run/jabber/msn-transport.pid</pidfile>
|
||||
|
||||
</jabber>
|
||||
@@ -1,86 +0,0 @@
|
||||
<!-- yahoo-transport-2.xml -->
|
||||
|
||||
<jabber>
|
||||
|
||||
<!--
|
||||
You need to add the elogger entry here when using ejabberd.
|
||||
In this case the transport will do the logging.
|
||||
-->
|
||||
|
||||
<log id='elogger'>
|
||||
<host/>
|
||||
<logtype/>
|
||||
<format>%d: [%t] (%h): %s</format>
|
||||
<file>/var/log/jabber/yahoo-transport-2-error.log</file>
|
||||
<stderr/>
|
||||
</log>
|
||||
|
||||
<!--
|
||||
ejabberd do not provide XDB services.
|
||||
xdb_file.so is loaded in to handle all XDB requests.
|
||||
-->
|
||||
|
||||
<xdb id="xdb">
|
||||
<host/>
|
||||
<load>
|
||||
<xdb_file>/usr/local/lib/jabber/libjabberdxdbfile.so</xdb_file>
|
||||
</load>
|
||||
<xdb_file xmlns="jabber:config:xdb_file">
|
||||
<spool><jabberd:cmdline flag='s'>/var/spool/jabber</jabberd:cmdline></spool>
|
||||
</xdb_file>
|
||||
</xdb>
|
||||
|
||||
<!--
|
||||
Make sure that all host names here are resolveable via DNS if you
|
||||
want the transport to be available to the public.
|
||||
-->
|
||||
|
||||
<service id="yahoo.SERVER.COM">
|
||||
<!-- yahoo-transport-2 configuration. -->
|
||||
<config xmlns="jabber:config:yahoo">
|
||||
<vCard>
|
||||
<NAME>Yahoo! Transport</NAME>
|
||||
<FN>vCard not implemented in current version</FN>
|
||||
<DESC>This is the Yahoo! transport.</DESC>
|
||||
<MAIL>EMAIL@ADDRESS.COM</MAIL>
|
||||
<URL>http://yahoo-transport-2.jabberstudio.org/</URL>
|
||||
</vCard>
|
||||
<instructions>Fill in your YAHOO! Messenger username and password to register on this transport.</instructions>
|
||||
<server>scs.msg.yahoo.com</server>
|
||||
<port>5050</port>
|
||||
<!--
|
||||
The character map. This provides character set translation from UTF-8
|
||||
to the indicated character map. See the man page for 'iconv' for available
|
||||
character maps on your platform. CP1252 is the standard Windows character
|
||||
set.
|
||||
-->
|
||||
<charmap>CP1252</charmap>
|
||||
<!--
|
||||
When this element exists, the transport will send new mail notifications as
|
||||
well as a count of unread messages when the user initially logs in.
|
||||
-->
|
||||
<newmail/>
|
||||
</config>
|
||||
<!-- yahoo-transport-2 module. -->
|
||||
<load>
|
||||
<yahoo_transport>/usr/local/lib/jabber/yahoo-transport-2.so</yahoo_transport>
|
||||
</load>
|
||||
</service>
|
||||
|
||||
<!--
|
||||
The settings below have to match the settings you made
|
||||
in your ejabberd.cfg configuration file.
|
||||
-->
|
||||
|
||||
<service id="yahoo-linker">
|
||||
<uplink/>
|
||||
<connect>
|
||||
<ip>127.0.0.1</ip>
|
||||
<port>5236</port>
|
||||
<secret>SECRET</secret>
|
||||
</connect>
|
||||
</service>
|
||||
|
||||
<pidfile>/var/run/jabber/yahoo-transport-2.pid</pidfile>
|
||||
|
||||
</jabber>
|
||||
@@ -1,45 +0,0 @@
|
||||
#!/bin/sh
|
||||
#########################################################
|
||||
#
|
||||
# aim-transport -- script to start aim-transport.
|
||||
#
|
||||
#########################################################
|
||||
|
||||
DAEMON=/usr/local/sbin/jabberd-aim-transport
|
||||
CONF=/etc/jabber/aim-transport.xml
|
||||
NAME=jabberd-aim-transport
|
||||
HOME=/etc/jabber/
|
||||
USER=ejabberd
|
||||
|
||||
#########################################################
|
||||
|
||||
if [ "`/usr/bin/whoami`" != "$USER" ]; then
|
||||
|
||||
echo "You need to be" $USER "user to run this script."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
case "$1" in
|
||||
debug)
|
||||
test -f $DAEMON -a -f $CONF || exit 0
|
||||
echo "Starting $NAME in debugging mode."
|
||||
$DAEMON -D -H $HOME -c $CONF &
|
||||
;;
|
||||
start)
|
||||
test -f $DAEMON -a -f $CONF || exit 0
|
||||
echo "Starting $NAME."
|
||||
$DAEMON -H $HOME -c $CONF &
|
||||
;;
|
||||
stop)
|
||||
echo "Stopping $NAME."
|
||||
killall $NAME &
|
||||
;;
|
||||
restart|reload)
|
||||
$0 stop
|
||||
sleep 3
|
||||
$0 start
|
||||
;;
|
||||
*)
|
||||
echo "Usage: $0 {debug|start|stop|restart}"
|
||||
exit 1
|
||||
esac
|
||||
@@ -1,43 +0,0 @@
|
||||
#!/bin/sh
|
||||
#########################################################
|
||||
#
|
||||
# ile -- script to start ILE.
|
||||
#
|
||||
#########################################################
|
||||
|
||||
DAEMON=/usr/local/sbin/ile.pl
|
||||
NAME=ile.pl
|
||||
CONF=/etc/jabber/ile.xml
|
||||
USER=ejabberd
|
||||
|
||||
#########################################################
|
||||
|
||||
if [ "`/usr/bin/whoami`" != "$USER" ]; then
|
||||
|
||||
echo "You need to be" $USER "user to run this script."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
case "$1" in
|
||||
debug)
|
||||
echo "Not implemented yet. Starting in normal mode"
|
||||
$0 start
|
||||
;;
|
||||
start)
|
||||
test -f $DAEMON || exit 0
|
||||
echo "Starting $NAME."
|
||||
$DAEMON $CONF &
|
||||
;;
|
||||
stop)
|
||||
echo "Stopping $NAME."
|
||||
killall $NAME &
|
||||
;;
|
||||
restart|reload)
|
||||
$0 stop
|
||||
sleep 3
|
||||
$0 start
|
||||
;;
|
||||
*)
|
||||
echo "Usage: $0 {debug|start|stop|status|restart}"
|
||||
exit 1
|
||||
esac
|
||||
@@ -1,47 +0,0 @@
|
||||
#!/bin/sh
|
||||
#########################################################
|
||||
#
|
||||
# jabber-gg-transport -- script to start jabber-gg-transport.
|
||||
#
|
||||
#########################################################
|
||||
|
||||
DAEMON=/usr/local/sbin/jggtrans
|
||||
CONF=/etc/jabber/jabber-gg-transport.xml
|
||||
NAME=jggtrans
|
||||
HOME=/etc/jabber/
|
||||
USER=ejabberd
|
||||
|
||||
#########################################################
|
||||
|
||||
if [ "`/usr/bin/whoami`" != "$USER" ]; then
|
||||
|
||||
echo "You need to be" $USER "user to run this script."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
case "$1" in
|
||||
debug)
|
||||
test -f $DAEMON -a -f $CONF || exit 0
|
||||
echo "Starting $NAME in debugging mode."
|
||||
$DAEMON -D -H $HOME -c $CONF &
|
||||
;;
|
||||
start)
|
||||
test -f $DAEMON -a -f $CONF || exit 0
|
||||
echo "Starting $NAME."
|
||||
$DAEMON $CONF &
|
||||
;;
|
||||
stop)
|
||||
echo "Stopping $NAME."
|
||||
killall $NAME &
|
||||
rm /var/run/jabber/jabber-gg-transport.pid
|
||||
;;
|
||||
|
||||
restart|reload)
|
||||
$0 stop
|
||||
sleep 3
|
||||
$0 start
|
||||
;;
|
||||
*)
|
||||
echo "Usage: $0 {debug|start|stop|restart}"
|
||||
exit 1
|
||||
esac
|
||||
@@ -1,45 +0,0 @@
|
||||
#!/bin/sh
|
||||
#########################################################
|
||||
#
|
||||
# jit -- script to start JIT.
|
||||
#
|
||||
#########################################################
|
||||
|
||||
DAEMON=/usr/local/sbin/wpjabber-jit
|
||||
CONF=/etc/jabber/jit.xml
|
||||
NAME=wpjabber-jit
|
||||
HOME=/etc/jabber/
|
||||
USER=ejabberd
|
||||
|
||||
#########################################################
|
||||
|
||||
if [ "`/usr/bin/whoami`" != "$USER" ]; then
|
||||
|
||||
echo "You need to be" $USER "user to run this script."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
case "$1" in
|
||||
debug)
|
||||
test -f $DAEMON -a -f $CONF || exit 0
|
||||
echo "Starting $NAME in debugging mode."
|
||||
$DAEMON -D -H $HOME -c $CONF &
|
||||
;;
|
||||
start)
|
||||
test -f $DAEMON -a -f $CONF || exit 0
|
||||
echo "Starting $NAME."
|
||||
$DAEMON -H $HOME -c $CONF &
|
||||
;;
|
||||
stop)
|
||||
echo "Stopping $NAME."
|
||||
killall $NAME &
|
||||
;;
|
||||
restart|reload)
|
||||
$0 stop
|
||||
sleep 3
|
||||
$0 start
|
||||
;;
|
||||
*)
|
||||
echo "Usage: $0 {debug|start|stop|restart}"
|
||||
exit 1
|
||||
esac
|
||||
@@ -1,50 +0,0 @@
|
||||
#!/bin/sh
|
||||
#########################################################
|
||||
#
|
||||
# msn-transport -- script to start MSN Transport.
|
||||
#
|
||||
#########################################################
|
||||
|
||||
DAEMON=/usr/local/sbin/jabberd-msn-transport
|
||||
CONF=/etc/jabber/msn-transport.xml
|
||||
NAME=jabberd-msn-transport
|
||||
HOME=/etc/jabber/
|
||||
USER=ejabberd
|
||||
|
||||
#########################################################
|
||||
|
||||
if [ "`/usr/bin/whoami`" != "$USER" ]; then
|
||||
|
||||
echo "You need to be" $USER "user to run this script."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
case "$1" in
|
||||
strace)
|
||||
test -f $DAEMON -a -f $CONF || exit 0
|
||||
echo "Starting $NAME in strace mode."
|
||||
strace -o /opt/ejabberd/var/log/jabber/strace.log $DAEMON -H $HOME -c $CONF &
|
||||
;;
|
||||
debug)
|
||||
test -f $DAEMON -a -f $CONF || exit 0
|
||||
echo "Starting $NAME in debugging mode."
|
||||
$DAEMON -D -H $HOME -c $CONF &
|
||||
;;
|
||||
start)
|
||||
test -f $DAEMON -a -f $CONF || exit 0
|
||||
echo "Starting $NAME."
|
||||
$DAEMON -H $HOME -c $CONF &
|
||||
;;
|
||||
stop)
|
||||
echo "Stopping $NAME."
|
||||
killall $NAME &
|
||||
;;
|
||||
restart|reload)
|
||||
$0 stop
|
||||
sleep 3
|
||||
$0 start
|
||||
;;
|
||||
*)
|
||||
echo "Usage: $0 {debug|start|stop|restart}"
|
||||
exit 1
|
||||
esac
|
||||
@@ -1,45 +0,0 @@
|
||||
#!/bin/sh
|
||||
##############################################################
|
||||
#
|
||||
# yahoo-transport-2 -- script to start Yahoo-transport-2.
|
||||
#
|
||||
#############################################################
|
||||
|
||||
DAEMON=/usr/local/sbin/jabberd-yahoo-transport-2
|
||||
CONF=/etc/jabber/yahoo-transport-2.xml
|
||||
NAME=jabberd-yahoo-transport-2
|
||||
HOME=/etc/jabber/
|
||||
USER=ejabberd
|
||||
|
||||
#############################################################
|
||||
|
||||
if [ "`/usr/bin/whoami`" != "$USER" ]; then
|
||||
|
||||
echo "You need to be" $USER "user to run this script."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
case "$1" in
|
||||
debug)
|
||||
test -f $DAEMON -a -f $CONF || exit 0
|
||||
echo "Starting $NAME in debugging mode."
|
||||
$DAEMON -D -H $HOME -c $CONF &
|
||||
;;
|
||||
start)
|
||||
test -f $DAEMON -a -f $CONF || exit 0
|
||||
echo "Starting $NAME."
|
||||
$DAEMON -H $HOME -c $CONF &
|
||||
;;
|
||||
stop)
|
||||
echo "Stopping $NAME."
|
||||
killall $NAME &
|
||||
;;
|
||||
restart|reload)
|
||||
$0 stop
|
||||
sleep 3
|
||||
$0 start
|
||||
;;
|
||||
*)
|
||||
echo "Usage: $0 {debug|start|stop|restart}"
|
||||
exit 1
|
||||
esac
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
%%%----------------------------------------------------------------------
|
||||
%%%
|
||||
%%% ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2002-2022 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
%%%----------------------------------------------------------------------
|
||||
%%%
|
||||
%%% ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2002-2022 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
%%%----------------------------------------------------------------------
|
||||
%%%
|
||||
%%% ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2002-2022 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
%%%----------------------------------------------------------------------
|
||||
%%%
|
||||
%%% ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2002-2022 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
@@ -51,6 +51,7 @@
|
||||
desc = "" :: string() | '_' | '$3',
|
||||
longdesc = "" :: string() | '_',
|
||||
version = 0 :: integer(),
|
||||
note = "" :: string(),
|
||||
weight = 1 :: integer(),
|
||||
module :: atom() | '_',
|
||||
function :: atom() | '_',
|
||||
@@ -58,6 +59,7 @@
|
||||
policy = restricted :: open | restricted | admin | user,
|
||||
%% access is: [accessRuleName] or [{Module, AccessOption, DefaultAccessRuleName}]
|
||||
access = [] :: [{atom(),atom(),atom()}|atom()],
|
||||
definer = unknown :: atom(),
|
||||
result = {res, rescode} :: rterm() | '_' | '$2',
|
||||
args_rename = [] :: [{atom(),atom()}],
|
||||
args_desc = none :: none | [string()] | '_',
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
%%%----------------------------------------------------------------------
|
||||
%%%
|
||||
%%% ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2002-2022 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
%%%----------------------------------------------------------------------
|
||||
%%%
|
||||
%%% ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2002-2022 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
%%%----------------------------------------------------------------------
|
||||
%%%
|
||||
%%% ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2002-2022 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
@@ -21,6 +21,7 @@
|
||||
-record(request,
|
||||
{method :: method(),
|
||||
path = [] :: [binary()],
|
||||
raw_path :: binary(),
|
||||
q = [] :: [{binary() | nokey, binary()}],
|
||||
us = {<<>>, <<>>} :: {binary(), binary()},
|
||||
auth :: {binary(), binary()} | {oauth, binary(), []} | undefined | invalid,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
%%%----------------------------------------------------------------------
|
||||
%%%
|
||||
%%% ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2002-2022 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
@@ -24,3 +24,10 @@
|
||||
scope = [] :: [binary()] | '_',
|
||||
expire :: integer() | '$1' | '_'
|
||||
}).
|
||||
|
||||
-record(oauth_client, {
|
||||
client_id = <<"">> :: binary() | '_',
|
||||
client_name = <<"">> :: binary() | '_',
|
||||
grant_type :: password | implicit | '_',
|
||||
options :: [any()] | '_'
|
||||
}).
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
%%%----------------------------------------------------------------------
|
||||
%%%
|
||||
%%% ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2002-2022 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
%%%----------------------------------------------------------------------
|
||||
%%%
|
||||
%%% ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2002-2022 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
@@ -29,13 +29,22 @@
|
||||
-define(SQL_INSERT_MARK, sql_insert__mark_).
|
||||
-define(SQL_INSERT(Table, Fields), ?SQL_INSERT_MARK(Table, Fields)).
|
||||
|
||||
-ifdef(COMPILER_REPORTS_ONLY_LINES).
|
||||
-record(sql_query, {hash :: binary(),
|
||||
format_query :: fun(),
|
||||
format_res :: fun(),
|
||||
args :: fun(),
|
||||
loc :: {module(), pos_integer()}}).
|
||||
-else.
|
||||
-record(sql_query, {hash :: binary(),
|
||||
format_query :: fun(),
|
||||
format_res :: fun(),
|
||||
args :: fun(),
|
||||
loc :: {module(), {pos_integer(), pos_integer()}}}).
|
||||
-endif.
|
||||
|
||||
-record(sql_escape, {string :: fun((binary()) -> binary()),
|
||||
integer :: fun((integer()) -> binary()),
|
||||
boolean :: fun((boolean()) -> binary()),
|
||||
in_array_string :: fun((binary()) -> binary())}).
|
||||
in_array_string :: fun((binary()) -> binary()),
|
||||
like_escape :: fun(() -> binary())}).
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
%%%----------------------------------------------------------------------
|
||||
%%%
|
||||
%%% ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2002-2022 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
%%%----------------------------------------------------------------------
|
||||
%%%
|
||||
%%% ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2002-2022 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
%%%----------------------------------------------------------------------
|
||||
%%%
|
||||
%%% ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2002-2022 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
@@ -65,6 +65,14 @@
|
||||
-define(INPUTT(Type, Name, Value),
|
||||
?INPUT(Type, Name, (translate:translate(Lang, Value)))).
|
||||
|
||||
-define(INPUTD(Type, Name, Value),
|
||||
?XA(<<"input">>,
|
||||
[{<<"type">>, Type}, {<<"name">>, Name},
|
||||
{<<"class">>, <<"btn-danger">>}, {<<"value">>, Value}])).
|
||||
|
||||
-define(INPUTTD(Type, Name, Value),
|
||||
?INPUTD(Type, Name, (translate:translate(Lang, Value)))).
|
||||
|
||||
-define(INPUTS(Type, Name, Value, Size),
|
||||
?XA(<<"input">>,
|
||||
[{<<"type">>, Type}, {<<"name">>, Name},
|
||||
@@ -93,9 +101,9 @@
|
||||
-define(GL(Ref, Title),
|
||||
?XAE(<<"div">>, [{<<"class">>, <<"guidelink">>}],
|
||||
[?XAE(<<"a">>,
|
||||
[{<<"href">>, <<"/admin/doc/guide.html#", Ref/binary>>},
|
||||
[{<<"href">>, <<"https://docs.ejabberd.im/admin/configuration/", Ref/binary>>},
|
||||
{<<"target">>, <<"_blank">>}],
|
||||
[?C(<<"[Guide: ", Title/binary, "]">>)])])).
|
||||
[?C(<<"docs: ", Title/binary>>)])])).
|
||||
|
||||
%% h1 with a Guide Link
|
||||
-define(H1GL(Name, Ref, Title),
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
%%%----------------------------------------------------------------------
|
||||
%%%
|
||||
%%% ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2002-2022 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
%%%----------------------------------------------------------------------
|
||||
%%%
|
||||
%%% ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2002-2022 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
|
||||
+21
-2
@@ -1,6 +1,6 @@
|
||||
%%%----------------------------------------------------------------------
|
||||
%%%
|
||||
%%% ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2002-2022 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
@@ -17,8 +17,9 @@
|
||||
%%% 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
%%%
|
||||
%%%----------------------------------------------------------------------
|
||||
|
||||
-define(PRINT(Format, Args), io:format(Format, Args)).
|
||||
|
||||
-ifdef(LAGER).
|
||||
-compile([{parse_transform, lager_transform}]).
|
||||
|
||||
-define(DEBUG(Format, Args),
|
||||
@@ -35,6 +36,24 @@
|
||||
|
||||
-define(CRITICAL_MSG(Format, Args),
|
||||
begin lager:critical(Format, Args), ok end).
|
||||
-else.
|
||||
-include_lib("kernel/include/logger.hrl").
|
||||
|
||||
-define(DEBUG(Format, Args),
|
||||
begin ?LOG_DEBUG(Format, Args), ok end).
|
||||
|
||||
-define(INFO_MSG(Format, Args),
|
||||
begin ?LOG_INFO(Format, Args), ok end).
|
||||
|
||||
-define(WARNING_MSG(Format, Args),
|
||||
begin ?LOG_WARNING(Format, Args), ok end).
|
||||
|
||||
-define(ERROR_MSG(Format, Args),
|
||||
begin ?LOG_ERROR(Format, Args), ok end).
|
||||
|
||||
-define(CRITICAL_MSG(Format, Args),
|
||||
begin ?LOG_CRITICAL(Format, Args), ok end).
|
||||
-endif.
|
||||
|
||||
%% Use only when trying to troubleshoot test problem with ExUnit
|
||||
-define(EXUNIT_LOG(Format, Args),
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
%%%----------------------------------------------------------------------
|
||||
%%%
|
||||
%%% ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2002-2022 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
%%%----------------------------------------------------------------------
|
||||
%%%
|
||||
%%% ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2002-2022 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
%%%----------------------------------------------------------------------
|
||||
%%%
|
||||
%%% ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2002-2022 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
%%%----------------------------------------------------------------------
|
||||
%%%
|
||||
%%% ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2002-2022 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
%%%----------------------------------------------------------------------
|
||||
%%%
|
||||
%%% ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2002-2022 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
%%%----------------------------------------------------------------------
|
||||
%%%
|
||||
%%% ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2002-2022 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
@@ -65,6 +65,7 @@
|
||||
captcha_whitelist = (?SETS):empty() :: gb_sets:set(),
|
||||
mam = false :: boolean(),
|
||||
pubsub = <<"">> :: binary(),
|
||||
enable_hats = false :: boolean(),
|
||||
lang = ejabberd_option:language() :: binary()
|
||||
}).
|
||||
|
||||
@@ -87,6 +88,16 @@
|
||||
nick = <<>> :: binary(),
|
||||
nodes = [] :: [binary()]}).
|
||||
|
||||
-record(muc_subscribers,
|
||||
{subscribers = #{} :: subscribers(),
|
||||
subscriber_nicks = #{} :: subscriber_nicks(),
|
||||
subscriber_nodes = #{} :: subscriber_nodes()
|
||||
}).
|
||||
|
||||
-type subscribers() :: #{ljid() => #subscriber{}}.
|
||||
-type subscriber_nicks() :: #{binary() => [ljid()]}.
|
||||
-type subscriber_nodes() :: #{binary() => subscribers()}.
|
||||
|
||||
-record(activity,
|
||||
{
|
||||
message_time = 0 :: integer(),
|
||||
@@ -106,8 +117,7 @@
|
||||
jid = #jid{} :: jid(),
|
||||
config = #config{} :: config(),
|
||||
users = #{} :: users(),
|
||||
subscribers = #{} :: subscribers(),
|
||||
subscriber_nicks = #{} :: subscriber_nicks(),
|
||||
muc_subscribers = #muc_subscribers{} :: #muc_subscribers{},
|
||||
last_voice_request_time = treap:empty() :: treap:treap(),
|
||||
robots = #{} :: robots(),
|
||||
nicks = #{} :: nicks(),
|
||||
@@ -115,6 +125,7 @@
|
||||
history = #lqueue{} :: lqueue(),
|
||||
subject = [] :: [text()],
|
||||
subject_author = <<"">> :: binary(),
|
||||
hats_users = #{} :: map(), % FIXME on OTP 21+: #{ljid() => #{binary() => binary()}},
|
||||
just_created = erlang:system_time(microsecond) :: true | integer(),
|
||||
activity = treap:empty() :: treap:treap(),
|
||||
room_shaper = none :: ejabberd_shaper:shaper(),
|
||||
@@ -126,5 +137,3 @@
|
||||
-type robots() :: #{jid() => {binary(), stanza()}}.
|
||||
-type nicks() :: #{binary() => [ljid()]}.
|
||||
-type affiliations() :: #{ljid() => affiliation() | {affiliation(), binary()}}.
|
||||
-type subscribers() :: #{ljid() => #subscriber{}}.
|
||||
-type subscriber_nicks() :: #{binary() => [ljid()]}.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
%%%----------------------------------------------------------------------
|
||||
%%%
|
||||
%%% ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2002-2022 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
%%%----------------------------------------------------------------------
|
||||
%%%
|
||||
%%% ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2002-2022 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
%%%----------------------------------------------------------------------
|
||||
%%%
|
||||
%%% ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2002-2022 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
%%% RFC 1928 constants.
|
||||
%%%
|
||||
%%%
|
||||
%%% ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2002-2022 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
%%%----------------------------------------------------------------------
|
||||
%%% ejabberd, Copyright (C) 2017-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2017-2022 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
%%%----------------------------------------------------------------------
|
||||
%%%
|
||||
%%% ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2002-2022 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
%%%----------------------------------------------------------------------
|
||||
%%%
|
||||
%%% ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2002-2022 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
%%%----------------------------------------------------------------------
|
||||
%%%
|
||||
%%% ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2002-2022 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
%%%----------------------------------------------------------------------
|
||||
%%%
|
||||
%%% ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2002-2022 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
|
||||
+28
-2
@@ -1,6 +1,6 @@
|
||||
%%%-------------------------------------------------------------------
|
||||
%%% @author Evgeny Khramtsov <ekhramtsov@process-one.net>
|
||||
%%% @copyright (C) 2002-2019 ProcessOne, SARL. All Rights Reserved.
|
||||
%%% @copyright (C) 2002-2022 ProcessOne, SARL. All Rights Reserved.
|
||||
%%%
|
||||
%%% Licensed under the Apache License, Version 2.0 (the "License");
|
||||
%%% you may not use this file except in compliance with the License.
|
||||
@@ -86,7 +86,33 @@
|
||||
-type qos() :: 0|1|2.
|
||||
-type sub_opts() :: #sub_opts{}.
|
||||
-type utf8_pair() :: {binary(), binary()}.
|
||||
-type properties() :: map().
|
||||
-type properties() :: #{assigned_client_identifier => binary(),
|
||||
authentication_data => binary(),
|
||||
authentication_method => binary(),
|
||||
content_type => binary(),
|
||||
correlation_data => binary(),
|
||||
maximum_packet_size => pos_integer(),
|
||||
maximum_qos => 0|1,
|
||||
message_expiry_interval => non_neg_integer(),
|
||||
payload_format_indicator => binary | utf8,
|
||||
reason_string => binary(),
|
||||
receive_maximum => pos_integer(),
|
||||
request_problem_information => boolean(),
|
||||
request_response_information => boolean(),
|
||||
response_information => binary(),
|
||||
response_topic => binary(),
|
||||
retain_available => boolean(),
|
||||
server_keep_alive => non_neg_integer(),
|
||||
server_reference => binary(),
|
||||
session_expiry_interval => non_neg_integer(),
|
||||
shared_subscription_available => boolean(),
|
||||
subscription_identifier => [non_neg_integer()] | non_neg_integer(),
|
||||
subscription_identifiers_available => boolean(),
|
||||
topic_alias => pos_integer(),
|
||||
topic_alias_maximum => non_neg_integer(),
|
||||
user_property => [utf8_pair()],
|
||||
wildcard_subscription_available => boolean(),
|
||||
will_delay_interval => non_neg_integer()}.
|
||||
-type property() :: assigned_client_identifier |
|
||||
authentication_data |
|
||||
authentication_method |
|
||||
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
%%%----------------------------------------------------------------------
|
||||
%%%
|
||||
%%% ejabberd, Copyright (C) 2002-2019 ProcessOne
|
||||
%%% ejabberd, Copyright (C) 2002-2022 ProcessOne
|
||||
%%%
|
||||
%%% This program is free software; you can redistribute it and/or
|
||||
%%% modify it under the terms of the GNU General Public License as
|
||||
@@ -23,7 +23,7 @@
|
||||
-define(ERR_EXTENDED(E, C), mod_pubsub:extended_error(E, C)).
|
||||
|
||||
%% The actual limit can be configured with mod_pubsub's option max_items_node
|
||||
-define(MAXITEMS, 10).
|
||||
-define(MAXITEMS, 1000).
|
||||
|
||||
%% this is currently a hard limit.
|
||||
%% Would be nice to have it configurable.
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
defmodule Ejabberd.Logger do
|
||||
|
||||
def critical(message, args \\ []), do: :lager.log(:critical, [], message, args)
|
||||
def error(message, args \\ []), do: :lager.log(:error, [], message, args)
|
||||
def warning(message, args \\ []), do: :lager.log(:warning, [], message, args)
|
||||
def info(message, args \\ []), do: :lager.log(:info, [], message, args)
|
||||
def debug(message, args \\ []), do: :lager.log(:debug, [], message, args)
|
||||
def critical(message, args \\ []), do: :logger.critical(message, args)
|
||||
def error(message, args \\ []), do: :logger.error(message, args)
|
||||
def warning(message, args \\ []), do: :logger.warning(message, args)
|
||||
def info(message, args \\ []), do: :logger.info(message, args)
|
||||
def debug(message, args \\ []), do: :logger.debug( message, args)
|
||||
|
||||
end
|
||||
|
||||
@@ -25,5 +25,9 @@ defmodule ModPresenceDemo do
|
||||
def mod_options(_host) do
|
||||
[]
|
||||
end
|
||||
|
||||
|
||||
def mod_doc() do
|
||||
%{:desc => 'This is just a demonstration.'}
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
+7617
File diff suppressed because it is too large
Load Diff
@@ -1,11 +1,11 @@
|
||||
defmodule Ejabberd.Mixfile do
|
||||
defmodule Ejabberd.MixProject do
|
||||
use Mix.Project
|
||||
|
||||
def project do
|
||||
[app: :ejabberd,
|
||||
version: "19.9.0",
|
||||
version: version(),
|
||||
description: description(),
|
||||
elixir: "~> 1.4",
|
||||
elixir: elixir_required_version(),
|
||||
elixirc_paths: ["lib"],
|
||||
compile_path: ".",
|
||||
compilers: [:asn1] ++ Mix.compilers,
|
||||
@@ -13,36 +13,43 @@ defmodule Ejabberd.Mixfile do
|
||||
erlc_paths: ["asn1", "src"],
|
||||
# Elixir tests are starting the part of ejabberd they need
|
||||
aliases: [test: "test --no-start"],
|
||||
start_permanent: Mix.env() == :prod,
|
||||
language: :erlang,
|
||||
releases: releases(),
|
||||
package: package(),
|
||||
deps: deps()]
|
||||
end
|
||||
|
||||
def version do
|
||||
case config(:vsn) do
|
||||
:false -> "0.0.0" # ./configure wasn't run: vars.config not created
|
||||
'0.0' -> "0.0.0" # the full git repository wasn't downloaded
|
||||
'latest.0' -> "0.0.0" # running 'docker-ejabberd/ecs/build.sh latest'
|
||||
[_, _, ?., _, _] = x ->
|
||||
head = String.replace(:erlang.list_to_binary(x), ~r/\.0+([0-9])/, ".\\1")
|
||||
<<head::binary, ".0">>
|
||||
vsn -> String.replace(:erlang.list_to_binary(vsn), ~r/\.0+([0-9])/, ".\\1")
|
||||
end
|
||||
end
|
||||
|
||||
def description do
|
||||
"""
|
||||
Robust, ubiquitous and massively scalable Jabber / XMPP Instant Messaging platform.
|
||||
Robust, Ubiquitous and Massively Scalable Messaging Platform (XMPP, MQTT, SIP Server)
|
||||
"""
|
||||
end
|
||||
|
||||
def application do
|
||||
[mod: {:ejabberd_app, []},
|
||||
applications: [:kernel, :stdlib, :sasl, :ssl],
|
||||
included_applications: [:lager, :mnesia, :inets, :p1_utils, :cache_tab,
|
||||
:fast_tls, :stringprep, :fast_xml, :xmpp, :mqtree,
|
||||
:stun, :fast_yaml, :esip, :jiffy, :p1_oauth2,
|
||||
:eimp, :base64url, :jose, :pkix, :os_mon, :yconf,
|
||||
:p1_acme, :idna]
|
||||
extra_applications: [:mix],
|
||||
applications: [:idna, :inets, :kernel, :sasl, :ssl, :stdlib,
|
||||
:base64url, :fast_tls, :fast_xml, :fast_yaml, :jiffy, :jose,
|
||||
:p1_utils, :stringprep, :yconf],
|
||||
included_applications: [:mnesia, :os_mon,
|
||||
:cache_tab, :eimp, :mqtree, :p1_acme,
|
||||
:p1_oauth2, :pkix, :xmpp]
|
||||
++ cond_apps()]
|
||||
end
|
||||
|
||||
defp if_function_exported(mod, fun, arity, okResult) do
|
||||
:code.ensure_loaded(mod)
|
||||
if :erlang.function_exported(mod, fun, arity) do
|
||||
okResult
|
||||
else
|
||||
[]
|
||||
end
|
||||
end
|
||||
|
||||
defp if_version_above(ver, okResult) do
|
||||
if :erlang.system_info(:otp_release) > ver do
|
||||
okResult
|
||||
@@ -51,48 +58,63 @@ defmodule Ejabberd.Mixfile do
|
||||
end
|
||||
end
|
||||
|
||||
defp if_version_below(ver, okResult) do
|
||||
if :erlang.system_info(:otp_release) < ver do
|
||||
okResult
|
||||
else
|
||||
[]
|
||||
end
|
||||
end
|
||||
|
||||
defp erlc_options do
|
||||
# Use our own includes + includes from all dependencies
|
||||
includes = ["include"] ++ deps_include(["fast_xml", "xmpp", "p1_utils"])
|
||||
[:debug_info, {:d, :ELIXIR_ENABLED}] ++ cond_options() ++ Enum.map(includes, fn(path) -> {:i, path} end) ++
|
||||
if_version_above('20', [{:d, :DEPRECATED_GET_STACKTRACE}]) ++
|
||||
if_function_exported(:erl_error, :format_exception, 6, [{:d, :HAVE_ERL_ERROR}])
|
||||
result = [{:d, :ELIXIR_ENABLED}] ++
|
||||
cond_options() ++
|
||||
Enum.map(includes, fn (path) -> {:i, path} end) ++
|
||||
if_version_above('20', [{:d, :DEPRECATED_GET_STACKTRACE}]) ++
|
||||
if_version_above('20', [{:d, :HAVE_URI_STRING}]) ++
|
||||
if_version_above('20', [{:d, :HAVE_ERL_ERROR}]) ++
|
||||
if_version_below('21', [{:d, :USE_OLD_HTTP_URI}]) ++
|
||||
if_version_below('22', [{:d, :LAGER}]) ++
|
||||
if_version_below('21', [{:d, :NO_CUSTOMIZE_HOSTNAME_CHECK}]) ++
|
||||
if_version_below('23', [{:d, :USE_OLD_CRYPTO_HMAC}]) ++
|
||||
if_version_below('23', [{:d, :USE_OLD_PG2}]) ++
|
||||
if_version_below('24', [{:d, :COMPILER_REPORTS_ONLY_LINES}]) ++
|
||||
if_version_below('24', [{:d, :SYSTOOLS_APP_DEF_WITHOUT_OPTIONAL}])
|
||||
defines = for {:d, value} <- result, do: {:d, value}
|
||||
result ++ [{:d, :ALL_DEFS, defines}]
|
||||
end
|
||||
|
||||
defp cond_options do
|
||||
for {:true, option} <- [{config(:sip), {:d, :SIP}},
|
||||
{config(:stun), {:d, :STUN}},
|
||||
{config(:roster_gateway_workaround), {:d, :ROSTER_GATWAY_WORKAROUND}},
|
||||
{config(:debug), :debug_info},
|
||||
{not config(:debug), {:debug_info, false}},
|
||||
{config(:roster_gateway_workaround), {:d, :ROSTER_GATEWAY_WORKAROUND}},
|
||||
{config(:new_sql_schema), {:d, :NEW_SQL_SCHEMA}}
|
||||
], do:
|
||||
option
|
||||
end
|
||||
|
||||
defp deps do
|
||||
[{:lager, "~> 3.6.0"},
|
||||
{:p1_utils, "~> 1.0"},
|
||||
{:fast_xml, "~> 1.1"},
|
||||
{:xmpp, "~> 1.4.0"},
|
||||
[{:base64url, "~> 1.0"},
|
||||
{:cache_tab, "~> 1.0"},
|
||||
{:stringprep, "~> 1.0"},
|
||||
{:fast_yaml, "~> 1.0"},
|
||||
{:fast_tls, "~> 1.1"},
|
||||
{:stun, "~> 1.0"},
|
||||
{:esip, "~> 1.0"},
|
||||
{:p1_mysql, "~> 1.0"},
|
||||
{:mqtree, "~> 1.0"},
|
||||
{:p1_pgsql, "~> 1.1"},
|
||||
{:jiffy, "~> 1.0"},
|
||||
{:p1_oauth2, "~> 0.6.1"},
|
||||
{:distillery, "~> 2.0"},
|
||||
{:pkix, "~> 1.0"},
|
||||
{:ex_doc, ">= 0.0.0", only: :dev},
|
||||
{:eimp, "~> 1.0"},
|
||||
{:base64url, "~> 0.0.1"},
|
||||
{:yconf, "~> 1.0"},
|
||||
{:jose, "~> 1.8"},
|
||||
{:fast_tls, "~> 1.1"},
|
||||
{:fast_xml, "~> 1.1"},
|
||||
{:fast_yaml, "~> 1.0"},
|
||||
{:idna, "~> 6.0"},
|
||||
{:p1_acme, "~> 1.0"}]
|
||||
{:jiffy, "~> 1.1.1"},
|
||||
{:jose, "~> 1.11.1"},
|
||||
{:mqtree, "~> 1.0"},
|
||||
{:p1_acme, "~> 1.0"},
|
||||
{:p1_oauth2, "~> 0.6"},
|
||||
{:p1_utils, "~> 1.0"},
|
||||
{:pkix, "~> 1.0"},
|
||||
{:stringprep, ">= 1.0.26"},
|
||||
{:xmpp, "~> 1.5"},
|
||||
{:yconf, "~> 1.0"}]
|
||||
++ cond_deps()
|
||||
end
|
||||
|
||||
@@ -109,26 +131,37 @@ defmodule Ejabberd.Mixfile do
|
||||
end
|
||||
|
||||
defp cond_deps do
|
||||
for {:true, dep} <- [{config(:sqlite), {:sqlite3, "~> 1.1"}},
|
||||
{config(:redis), {:eredis, "~> 1.0"}},
|
||||
for {:true, dep} <- [{config(:pam), {:epam, "~> 1.0"}},
|
||||
{config(:redis), {:eredis, "~> 1.2.0"}},
|
||||
{config(:sip), {:esip, "~> 1.0"}},
|
||||
{config(:zlib), {:ezlib, "~> 1.0"}},
|
||||
{config(:pam), {:epam, "~> 1.0"}},
|
||||
{config(:tools), {:luerl, "~> 0.3.1"}}], do:
|
||||
{if_version_below('22', true), {:lager, "~> 3.9.1"}},
|
||||
{config(:lua), {:luerl, "~> 1.0"}},
|
||||
{config(:mysql), {:p1_mysql, "~> 1.0"}},
|
||||
{config(:pgsql), {:p1_pgsql, "~> 1.1"}},
|
||||
{config(:sqlite), {:sqlite3, "~> 1.1"}},
|
||||
{config(:stun), {:stun, "~> 1.0"}}], do:
|
||||
dep
|
||||
end
|
||||
|
||||
defp cond_apps do
|
||||
for {:true, app} <- [{config(:redis), :eredis},
|
||||
for {:true, app} <- [{config(:pam), :epam},
|
||||
{config(:lua), :luerl},
|
||||
{config(:redis), :eredis},
|
||||
{if_version_below('22', true), :lager},
|
||||
{config(:mysql), :p1_mysql},
|
||||
{config(:sip), :esip},
|
||||
{config(:odbc), :odbc},
|
||||
{config(:pgsql), :p1_pgsql},
|
||||
{config(:sqlite), :sqlite3},
|
||||
{config(:zlib), :ezlib}], do:
|
||||
{config(:sqlite), :sqlite3}], do:
|
||||
app
|
||||
end
|
||||
|
||||
defp package do
|
||||
[# These are the default files included in the package
|
||||
files: ["lib", "src", "priv", "mix.exs", "include", "README.md", "COPYING"],
|
||||
files: ["include", "lib", "priv", "sql", "src",
|
||||
"COPYING", "README.md",
|
||||
"mix.exs", "rebar.config", "rebar.config.script", "vars.config"],
|
||||
maintainers: ["ProcessOne"],
|
||||
licenses: ["GPLv2"],
|
||||
links: %{"Site" => "https://www.ejabberd.im",
|
||||
@@ -151,6 +184,148 @@ defmodule Ejabberd.Mixfile do
|
||||
end
|
||||
end
|
||||
|
||||
defp elixir_required_version do
|
||||
case {Map.get(System.get_env(), "RELIVE", "false"),
|
||||
MapSet.member?(MapSet.new(System.argv()), "release")}
|
||||
do
|
||||
{"true", _} ->
|
||||
case Version.match?(System.version(), "~> 1.11") do
|
||||
false ->
|
||||
IO.puts("ERROR: To use 'make relive', Elixir 1.11.0 or higher is required.")
|
||||
_ -> :ok
|
||||
end
|
||||
"~> 1.11"
|
||||
{_, true} ->
|
||||
case Version.match?(System.version(), "~> 1.10") do
|
||||
false ->
|
||||
IO.puts("ERROR: To build releases, Elixir 1.10.0 or higher is required.")
|
||||
_ -> :ok
|
||||
end
|
||||
case Version.match?(System.version(), "< 1.11.4")
|
||||
and :erlang.system_info(:otp_release) > '23' do
|
||||
true ->
|
||||
IO.puts("ERROR: To build releases with Elixir lower than 1.11.4, Erlang/OTP lower than 24 is required.")
|
||||
_ -> :ok
|
||||
end
|
||||
"~> 1.10"
|
||||
_ ->
|
||||
"~> 1.4"
|
||||
end
|
||||
end
|
||||
|
||||
defp releases do
|
||||
maybe_tar = case Mix.env() do
|
||||
:prod -> [:tar]
|
||||
_ -> []
|
||||
end
|
||||
[
|
||||
ejabberd: [
|
||||
include_executables_for: [:unix],
|
||||
# applications: [runtime_tools: :permanent]
|
||||
steps: [©_extra_files/1, :assemble | maybe_tar]
|
||||
]
|
||||
]
|
||||
end
|
||||
|
||||
defp copy_extra_files(release) do
|
||||
assigns = [
|
||||
version: version(),
|
||||
rootdir: config(:rootdir),
|
||||
installuser: config(:installuser),
|
||||
libdir: config(:libdir),
|
||||
sysconfdir: config(:sysconfdir),
|
||||
localstatedir: config(:localstatedir),
|
||||
config_dir: config(:config_dir),
|
||||
logs_dir: config(:logs_dir),
|
||||
spool_dir: config(:spool_dir),
|
||||
erl: config(:erl),
|
||||
epmd: config(:epmd),
|
||||
bindir: Path.join([config(:release_dir), "releases", version()]),
|
||||
release_dir: config(:release_dir),
|
||||
erts_dir: config(:erts_dir),
|
||||
erts_vsn: "erts-#{release.erts_version}"
|
||||
]
|
||||
ro = "rel/overlays"
|
||||
File.rm_rf(ro)
|
||||
|
||||
# Elixir lower than 1.12.0 don't have System.shell
|
||||
execute = fn(command) ->
|
||||
case function_exported?(System, :shell, 1) do
|
||||
true ->
|
||||
System.shell(command)
|
||||
false ->
|
||||
:os.cmd(to_charlist(command))
|
||||
end
|
||||
end
|
||||
|
||||
# Mix/Elixir lower than 1.11.0 use config/releases.exs instead of runtime.exs
|
||||
case Version.match?(System.version, "~> 1.11") do
|
||||
true ->
|
||||
:ok
|
||||
false ->
|
||||
execute.("cp config/runtime.exs config/releases.exs")
|
||||
end
|
||||
|
||||
execute.("sed -e 's|{{\\(\[_a-z\]*\\)}}|<%= @\\1 %>|g' ejabberdctl.template > ejabberdctl.example1")
|
||||
Mix.Generator.copy_template("ejabberdctl.example1", "ejabberdctl.example2", assigns)
|
||||
execute.("sed -e 's|{{\\(\[_a-z\]*\\)}}|<%= @\\1 %>|g' ejabberdctl.example2> ejabberdctl.example2a")
|
||||
Mix.Generator.copy_template("ejabberdctl.example2a", "ejabberdctl.example2b", assigns)
|
||||
execute.("sed -e 's|{{\\(\[_a-z\]*\\)}}|<%= @\\1 %>|g' ejabberdctl.example2b > ejabberdctl.example3")
|
||||
execute.("sed -e 's|^ERLANG_NODE=ejabberd@localhost|ERLANG_NODE=ejabberd|g' ejabberdctl.example3 > ejabberdctl.example4")
|
||||
execute.("sed -e 's|^ERLANG_OPTS=\"|ERLANG_OPTS=\"-boot ../releases/#{release.version}/start_clean -boot_var RELEASE_LIB ../lib |' ejabberdctl.example4 > ejabberdctl.example5")
|
||||
execute.("sed -e 's|^INSTALLUSER=|ERL_OPTIONS=\"-setcookie \\$\\(cat \"\\${SCRIPT_DIR%/*}/releases/COOKIE\")\"\\nINSTALLUSER=|g' ejabberdctl.example5 > ejabberdctl.example6")
|
||||
Mix.Generator.copy_template("ejabberdctl.example6", "#{ro}/bin/ejabberdctl", assigns)
|
||||
File.chmod("#{ro}/bin/ejabberdctl", 0o755)
|
||||
|
||||
File.rm("ejabberdctl.example1")
|
||||
File.rm("ejabberdctl.example2")
|
||||
File.rm("ejabberdctl.example2a")
|
||||
File.rm("ejabberdctl.example2b")
|
||||
File.rm("ejabberdctl.example3")
|
||||
File.rm("ejabberdctl.example4")
|
||||
File.rm("ejabberdctl.example5")
|
||||
File.rm("ejabberdctl.example6")
|
||||
|
||||
suffix = case Mix.env() do
|
||||
:dev ->
|
||||
Mix.Generator.copy_file("test/ejabberd_SUITE_data/ca.pem", "#{ro}/conf/ca.pem")
|
||||
Mix.Generator.copy_file("test/ejabberd_SUITE_data/cert.pem", "#{ro}/conf/cert.pem")
|
||||
".example"
|
||||
_ -> ""
|
||||
end
|
||||
|
||||
Mix.Generator.copy_file("ejabberd.yml.example", "#{ro}/conf/ejabberd.yml#{suffix}")
|
||||
Mix.Generator.copy_file("ejabberdctl.cfg.example", "#{ro}/conf/ejabberdctl.cfg#{suffix}")
|
||||
Mix.Generator.copy_file("inetrc", "#{ro}/conf/inetrc")
|
||||
|
||||
Enum.each(File.ls!("sql"),
|
||||
fn x ->
|
||||
Mix.Generator.copy_file("sql/#{x}", "#{ro}/lib/ejabberd-#{release.version}/priv/sql/#{x}")
|
||||
end)
|
||||
|
||||
File.cp_r!("include", "#{ro}/lib/ejabberd-#{release.version}/include")
|
||||
for {name, details} <- Map.to_list(release.applications) do
|
||||
{_, is_otp_app} = List.keyfind(details, :otp_app?, 0)
|
||||
{_, vsn} = List.keyfind(details, :vsn, 0)
|
||||
{_, path} = List.keyfind(details, :path, 0)
|
||||
source_dir = case is_otp_app do
|
||||
:true -> "#{path}/include"
|
||||
:false -> "deps/#{name}/include"
|
||||
end
|
||||
target_dir = "#{ro}/lib/#{name}-#{vsn}/include"
|
||||
File.exists?(source_dir)
|
||||
&& File.mkdir_p(target_dir)
|
||||
&& File.cp_r!(source_dir, target_dir)
|
||||
end
|
||||
|
||||
case Mix.env() do
|
||||
:dev -> execute.("REL_DIR_TEMP=$PWD/rel/overlays/ rel/setup-dev.sh")
|
||||
_ -> :ok
|
||||
end
|
||||
|
||||
release
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
defmodule Mix.Tasks.Compile.Asn1 do
|
||||
|
||||
@@ -1,38 +1,29 @@
|
||||
%{
|
||||
"artificery": {:hex, :artificery, "0.4.2", "3ded6e29e13113af52811c72f414d1e88f711410cac1b619ab3a2666bbd7efd4", [:mix], [], "hexpm"},
|
||||
"base64url": {:hex, :base64url, "0.0.1", "36a90125f5948e3afd7be97662a1504b934dd5dac78451ca6e9abf85a10286be", [:rebar], [], "hexpm"},
|
||||
"cache_tab": {:hex, :cache_tab, "1.0.20", "00a09975fa6d7ad30407b551ca62f0e901bf36cf4e18bd24cd8c1c517d25b5d4", [:rebar3], [{:p1_utils, "1.0.16", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm"},
|
||||
"distillery": {:hex, :distillery, "2.1.1", "f9332afc2eec8a1a2b86f22429e068ef35f84a93ea1718265e740d90dd367814", [:mix], [{:artificery, "~> 0.2", [hex: :artificery, repo: "hexpm", optional: false]}], "hexpm"},
|
||||
"earmark": {:hex, :earmark, "1.4.1", "07bb382826ee8d08d575a1981f971ed41bd5d7e86b917fd012a93c51b5d28727", [:mix], [], "hexpm"},
|
||||
"eimp": {:hex, :eimp, "1.0.12", "c00cdc0ef7159f07e8ec50826d1de9bd051a9538bac772e455927d7f6165abb4", [:rebar3], [{:p1_utils, "1.0.16", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm"},
|
||||
"epam": {:hex, :epam, "1.0.6", "6e57e1f5a330fa02a08ee0d4b16d9161f95177351e48c6dfede2f89b7e2f589f", [:rebar3], [], "hexpm"},
|
||||
"eredis": {:hex, :eredis, "1.2.0", "0b8e9cfc2c00fa1374cd107ea63b49be08d933df2cf175e6a89b73dd9c380de4", [:rebar3], [], "hexpm"},
|
||||
"esip": {:hex, :esip, "1.0.30", "23d020270590cd6e2785fb33c8bb954e992ed3d469a5b668ceccb56c703888db", [:rebar3], [{:fast_tls, "1.1.2", [hex: :fast_tls, repo: "hexpm", optional: false]}, {:p1_utils, "1.0.16", [hex: :p1_utils, repo: "hexpm", optional: false]}, {:stun, "1.0.29", [hex: :stun, repo: "hexpm", optional: false]}], "hexpm"},
|
||||
"ex_doc": {:hex, :ex_doc, "0.21.2", "caca5bc28ed7b3bdc0b662f8afe2bee1eedb5c3cf7b322feeeb7c6ebbde089d6", [:mix], [{:earmark, "~> 1.3.3 or ~> 1.4", [hex: :earmark, repo: "hexpm", optional: false]}, {:makeup_elixir, "~> 0.14", [hex: :makeup_elixir, repo: "hexpm", optional: false]}], "hexpm"},
|
||||
"ezlib": {:hex, :ezlib, "1.0.6", "d43a3377006f91c853f65d5efd563d61bbc289f0115a311657c728f5e6e8c39f", [:rebar3], [], "hexpm"},
|
||||
"fast_tls": {:hex, :fast_tls, "1.1.2", "ec3b5ba9c5e87f66190196ee8cedffe8f02b9c5b76bb5bc6e81f93d00013ae3a", [:rebar3], [{:p1_utils, "1.0.16", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm"},
|
||||
"fast_xml": {:hex, :fast_xml, "1.1.37", "e5276cd18d5ce5b179da34b6a1232805956f3057ee45833a0d62a9e414c86e07", [:rebar3], [{:p1_utils, "1.0.16", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm"},
|
||||
"fast_yaml": {:hex, :fast_yaml, "1.0.21", "3aea577eb57fbb62df79e7c406a453d54d450d35626a19998830e37c767eda67", [:rebar3], [{:p1_utils, "1.0.16", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm"},
|
||||
"goldrush": {:hex, :goldrush, "0.1.9", "f06e5d5f1277da5c413e84d5a2924174182fb108dabb39d5ec548b27424cd106", [:rebar3], [], "hexpm"},
|
||||
"idna": {:hex, :idna, "6.0.0", "689c46cbcdf3524c44d5f3dde8001f364cd7608a99556d8fbd8239a5798d4c10", [:rebar3], [{:unicode_util_compat, "0.4.1", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm"},
|
||||
"jiffy": {:hex, :jiffy, "1.0.1", "4f25639772ca41202f41ba9c8f6ca0933554283dd4742c90651e03471c55e341", [:rebar3], [], "hexpm"},
|
||||
"jose": {:hex, :jose, "1.8.4", "7946d1e5c03a76ac9ef42a6e6a20001d35987afd68c2107bcd8f01a84e75aa73", [:mix, :rebar3], [{:base64url, "~> 0.0.1", [hex: :base64url, repo: "hexpm", optional: false]}], "hexpm"},
|
||||
"lager": {:hex, :lager, "3.6.10", "6172b43ab720ac33914ccd0aeb21fdbdf88213847707d4b91e6af57b2ae5c4d2", [:rebar3], [{:goldrush, "0.1.9", [hex: :goldrush, repo: "hexpm", optional: false]}], "hexpm"},
|
||||
"luerl": {:hex, :luerl, "0.3.1", "5412807630aac1aaf59ffe5a1bc09259c447b4faeb1d3fe2d4ef41b87676cb04", [:rebar3], [], "hexpm"},
|
||||
"makeup": {:hex, :makeup, "1.0.0", "671df94cf5a594b739ce03b0d0316aa64312cee2574b6a44becb83cd90fb05dc", [:mix], [{:nimble_parsec, "~> 0.5.0", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm"},
|
||||
"makeup_elixir": {:hex, :makeup_elixir, "0.14.0", "cf8b7c66ad1cff4c14679698d532f0b5d45a3968ffbcbfd590339cb57742f1ae", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm"},
|
||||
"mqtree": {:hex, :mqtree, "1.0.5", "9448fd262ac5fd6b502c30abac00978779ae402558c7934b36cad481b2b7ebcd", [:rebar3], [{:p1_utils, "1.0.16", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm"},
|
||||
"nimble_parsec": {:hex, :nimble_parsec, "0.5.1", "c90796ecee0289dbb5ad16d3ad06f957b0cd1199769641c961cfe0b97db190e0", [:mix], [], "hexpm"},
|
||||
"p1_acme": {:hex, :p1_acme, "1.0.1", "c67acfa201b77de1eac47e4ed54308a3046da221ae63ba2eff6ecfb0340a5272", [:rebar3], [{:idna, "6.0.0", [hex: :idna, repo: "hexpm", optional: false]}, {:jiffy, "1.0.1", [hex: :jiffy, repo: "hexpm", optional: false]}, {:jose, "1.8.4", [hex: :jose, repo: "hexpm", optional: false]}, {:yconf, "1.0.1", [hex: :yconf, repo: "hexpm", optional: false]}], "hexpm"},
|
||||
"p1_mysql": {:hex, :p1_mysql, "1.0.11", "ae20e1daa2c0634bb61c1529d8401b08b855297b1c7d9af980b2e063d8b58482", [:rebar3], [], "hexpm"},
|
||||
"p1_oauth2": {:hex, :p1_oauth2, "0.6.5", "a39db41de0287d4d1af3190beaa80edf17335b20f1d0ccace6c09580e0853987", [:rebar3], [], "hexpm"},
|
||||
"p1_pgsql": {:hex, :p1_pgsql, "1.1.7", "ef64d34adbbe08258cc10b1532649446d8c086ff8663d44f430d837ec31a89f8", [:rebar3], [], "hexpm"},
|
||||
"p1_utils": {:hex, :p1_utils, "1.0.16", "05b5d4fb1f002d827b0d0d344eecdb4208b535bf95264d44f588affec644212b", [:rebar3], [], "hexpm"},
|
||||
"pkix": {:hex, :pkix, "1.0.4", "81d552f736b1cadb278069a332cc94891a1c3095eb6281b340969ee455bd6fea", [:rebar3], [], "hexpm"},
|
||||
"sqlite3": {:hex, :sqlite3, "1.1.6", "4ea71af0b45908b5f02c9b09e4c87177039ef404f20accb35049cd8924cc417c", [:rebar3], [], "hexpm"},
|
||||
"stringprep": {:hex, :stringprep, "1.0.17", "bf962fe2a4d01298d220b6474689755103f703942a043908ca6cd323e8fa0947", [:rebar3], [{:p1_utils, "1.0.16", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm"},
|
||||
"stun": {:hex, :stun, "1.0.29", "9678aa90302bda43af86949a6253b82c84535bd1aacdd8de7f052b68234f91b3", [:rebar3], [{:fast_tls, "1.1.2", [hex: :fast_tls, repo: "hexpm", optional: false]}, {:p1_utils, "1.0.16", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm"},
|
||||
"unicode_util_compat": {:hex, :unicode_util_compat, "0.4.1", "d869e4c68901dd9531385bb0c8c40444ebf624e60b6962d95952775cac5e90cd", [:rebar3], [], "hexpm"},
|
||||
"xmpp": {:hex, :xmpp, "1.4.2", "7a41bbeaebaceadcc16128449e1b6d535bb1b9479739064288abbe93f8870170", [:rebar3], [{:ezlib, "1.0.6", [hex: :ezlib, repo: "hexpm", optional: false]}, {:fast_tls, "1.1.2", [hex: :fast_tls, repo: "hexpm", optional: false]}, {:fast_xml, "1.1.37", [hex: :fast_xml, repo: "hexpm", optional: false]}, {:idna, "6.0.0", [hex: :idna, repo: "hexpm", optional: false]}, {:p1_utils, "1.0.16", [hex: :p1_utils, repo: "hexpm", optional: false]}, {:stringprep, "1.0.17", [hex: :stringprep, repo: "hexpm", optional: false]}], "hexpm"},
|
||||
"yconf": {:hex, :yconf, "1.0.1", "970fbbe53df7113914488909943abbbe788fff94166b4e39afaebc3e73f2a4f7", [:rebar3], [{:fast_yaml, "1.0.21", [hex: :fast_yaml, repo: "hexpm", optional: false]}], "hexpm"},
|
||||
"base64url": {:hex, :base64url, "1.0.1", "f8c7f2da04ca9a5d0f5f50258f055e1d699f0e8bf4cfdb30b750865368403cf6", [:rebar3], [], "hexpm", "f9b3add4731a02a9b0410398b475b33e7566a695365237a6bdee1bb447719f5c"},
|
||||
"cache_tab": {:hex, :cache_tab, "1.0.30", "6d35eecfb65fbe5fc85988503a27338d32de01243f3fc8ea3ee7161af08725a4", [:rebar3], [{:p1_utils, "1.0.25", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "6d8a5e00d8f84c42627706a6dbedb02e34d58495f3ed61935c8475ca0531cda0"},
|
||||
"eimp": {:hex, :eimp, "1.0.22", "fa9b376ef0b50e8455db15c7c11dea4522c6902e04412288aab436d26335f6eb", [:rebar3], [{:p1_utils, "1.0.25", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "b3b9ffb1d9a5f4a2ba88ac418a819164932d9a9d3a2fc3d32ca338ce855c4392"},
|
||||
"epam": {:hex, :epam, "1.0.12", "2a5625d4133bca4b3943791a3f723ba764455a461ae9b6ba5debb262efcf4b40", [:rebar3], [], "hexpm", "54c166c4459cef72f2990a3d89a8f0be27180fe0ab0f24b28ddcc3b815f49f7f"},
|
||||
"eredis": {:hex, :eredis, "1.2.0", "0b8e9cfc2c00fa1374cd107ea63b49be08d933df2cf175e6a89b73dd9c380de4", [:rebar3], [], "hexpm", "d9b5abef2c2c8aba8f32aa018203e0b3dc8b1157773b254ab1d4c2002317f1e1"},
|
||||
"esip": {:hex, :esip, "1.0.47", "fdd483ca7e9e46a6d5a62937cbacb147adbe0bdfca5ebc59774cc0a1afa381be", [:rebar3], [{:fast_tls, "1.1.15", [hex: :fast_tls, repo: "hexpm", optional: false]}, {:p1_utils, "1.0.25", [hex: :p1_utils, repo: "hexpm", optional: false]}, {:stun, "1.2.2", [hex: :stun, repo: "hexpm", optional: false]}], "hexpm", "99e703c49e8d325b24cb147c5087151c196406e8572e3a33db95099991fe8f3e"},
|
||||
"ezlib": {:hex, :ezlib, "1.0.12", "ffe906ba10d03aaee7977e1e0e81d9ffc3bb8b47fb9cd8e2e453507a2e56221f", [:rebar3], [{:p1_utils, "1.0.25", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "30e94355fb42260aab6e12582cb0c56bf233515e655c8aeaf48760e7561e4ebb"},
|
||||
"fast_tls": {:hex, :fast_tls, "1.1.15", "398e7ba1076db139307ebea839428e2836ab682e4dac61d95b4705a26aff06b7", [:rebar3], [{:p1_utils, "1.0.25", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "ef516aa226de9a4605704c18499284cd4fc115a73bd72490341972ce0c2b4d30"},
|
||||
"fast_xml": {:hex, :fast_xml, "1.1.49", "67d9bfcadd04efd930e0ee1412b5ea09d3e791f1fdbd4d3e9a8c8f29f8bfed8c", [:rebar3], [{:p1_utils, "1.0.25", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "01da064d2f740818956961036637fee2475c17bf8aab9442217f90dc77883593"},
|
||||
"fast_yaml": {:hex, :fast_yaml, "1.0.33", "5c735da21a4d23b7ed592603b1cd7aba25f91a735d3c0a8df2816d335a8def6e", [:rebar3], [{:p1_utils, "1.0.25", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "efa60a2acbcd2c2e72eb5e16f1475726b9d88afca3ad6dbb4bc549266863e7c8"},
|
||||
"idna": {:hex, :idna, "6.0.0", "689c46cbcdf3524c44d5f3dde8001f364cd7608a99556d8fbd8239a5798d4c10", [:rebar3], [{:unicode_util_compat, "0.4.1", [hex: :unicode_util_compat, repo: "hexpm", optional: false]}], "hexpm", "4bdd305eb64e18b0273864920695cb18d7a2021f31a11b9c5fbcd9a253f936e2"},
|
||||
"jiffy": {:hex, :jiffy, "1.1.1", "aca10f47aa91697bf24ab9582c74e00e8e95474c7ef9f76d4f1a338d0f5de21b", [:rebar3], [], "hexpm", "62e1f0581c3c19c33a725c781dfa88410d8bff1bbafc3885a2552286b4785c4c"},
|
||||
"jose": {:hex, :jose, "1.11.1", "59da64010c69aad6cde2f5b9248b896b84472e99bd18f246085b7b9fe435dcdb", [:mix, :rebar3], [], "hexpm", "078f6c9fb3cd2f4cfafc972c814261a7d1e8d2b3685c0a76eb87e158efff1ac5"},
|
||||
"luerl": {:hex, :luerl, "1.0.0", "1b68c30649323590d5339b967b419260500ffe520cd3abc1987482a82d3b5a6c", [:rebar3], [], "hexpm", "c17bc45cb4b0845ec975387f9a5d8c81ab60456698527a29c96f78992af86bd1"},
|
||||
"mqtree": {:hex, :mqtree, "1.0.15", "bc54d8b88698fdaebc1e27a9ac43688b927e3dbc05bd5cee4057e69a89a8cf17", [:rebar3], [{:p1_utils, "1.0.25", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "294ac43c9b3d372e24eeea56c259e19c655522dcff64a55c401a639663b9d829"},
|
||||
"p1_acme": {:hex, :p1_acme, "1.0.19", "5c4cb2bf627c526e242a0106eef0015b98b440b1aa03fd29e44c62c6b26cd545", [:rebar3], [{:base64url, "1.0.1", [hex: :base64url, repo: "hexpm", optional: false]}, {:idna, "6.0.0", [hex: :idna, repo: "hexpm", optional: false]}, {:jiffy, "1.1.1", [hex: :jiffy, repo: "hexpm", optional: false]}, {:jose, "1.11.1", [hex: :jose, repo: "hexpm", optional: false]}, {:yconf, "1.0.13", [hex: :yconf, repo: "hexpm", optional: false]}], "hexpm", "904023023ca1d5785d1f3ba5670676d30abafd52445e4b60236d2571cc7b550c"},
|
||||
"p1_mysql": {:hex, :p1_mysql, "1.0.19", "22f1be58397780a7d580a954e7af66cde32a29dee1a24ab2aa196272fc654a4a", [:rebar3], [], "hexpm", "88f6cdb510e8959c14b6ae84ccda04967e3de239228f859d8341da67949622b1"},
|
||||
"p1_oauth2": {:hex, :p1_oauth2, "0.6.11", "96b4e85c08355720523c2f892011a81a07994d15c179ce4dd82d704fecad15b2", [:rebar3], [], "hexpm", "9c3c6ae59382b9525473bb02a32949889808f33f95f6db10594fd92acd1f63db"},
|
||||
"p1_pgsql": {:hex, :p1_pgsql, "1.1.18", "db3473d1bba4b45815b05226433fc589a5934190c2afa05fdba45c6a238bf2c6", [:rebar3], [{:xmpp, "1.5.8", [hex: :xmpp, repo: "hexpm", optional: false]}], "hexpm", "4a3863a5d59fed9f64fec8497a7d4e3d34edf31932364a74371097da2b25fd46"},
|
||||
"p1_utils": {:hex, :p1_utils, "1.0.25", "2d39b5015a567bbd2cc7033eeb93a7c60d8c84efe1ef69a3473faa07fa268187", [:rebar3], [], "hexpm", "9219214428f2c6e5d3187ff8eb9a8783695c2427420be9a259840e07ada32847"},
|
||||
"pkix": {:hex, :pkix, "1.0.9", "eb20b2715d71a23b4fe7e754dae9281a964b51113d0bba8adf9da72bf9d65ac2", [:rebar3], [], "hexpm", "daab2c09cdd4eda05c9b45a5c00e994a1a5f27634929e1377e2e59b707103e3a"},
|
||||
"sqlite3": {:hex, :sqlite3, "1.1.13", "94a6e0508936514e1493efeb9b939a9bbfa861f4b8dc93ef174ae88a1d9381d3", [:rebar3], [], "hexpm", "b77fad096d1ae9553ad8551ea75bd0d64a2f5b09923a7ca48b14215564dbfc48"},
|
||||
"stringprep": {:hex, :stringprep, "1.0.28", "9a9823d8449309e4e8ca0bdb2547e43d5de4e1d943f23826c25015150b8daa66", [:rebar3], [{:p1_utils, "1.0.25", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "66df7d1181fec899c824bd8d00253f369103514828db5e04ee1ba7a0a61568e0"},
|
||||
"stun": {:hex, :stun, "1.2.2", "8c61f71c5094c69739dc6b3e916be734ce80c1a15551e00d547115a66e91e5bc", [:rebar3], [{:fast_tls, "1.1.15", [hex: :fast_tls, repo: "hexpm", optional: false]}, {:p1_utils, "1.0.25", [hex: :p1_utils, repo: "hexpm", optional: false]}], "hexpm", "4f54c7b86e2aa413faec35a9fb699048471e1c06a721c53e6ac44b405fd2a3b9"},
|
||||
"unicode_util_compat": {:hex, :unicode_util_compat, "0.4.1", "d869e4c68901dd9531385bb0c8c40444ebf624e60b6962d95952775cac5e90cd", [:rebar3], [], "hexpm", "1d1848c40487cdb0b30e8ed975e34e025860c02e419cb615d255849f3427439d"},
|
||||
"xmpp": {:hex, :xmpp, "1.5.8", "96c08537a4d7d9695326a01be8162cb980803be4358671b0fd1369ae9c5e05d8", [:rebar3], [{:ezlib, "1.0.12", [hex: :ezlib, repo: "hexpm", optional: false]}, {:fast_tls, "1.1.15", [hex: :fast_tls, repo: "hexpm", optional: false]}, {:fast_xml, "1.1.49", [hex: :fast_xml, repo: "hexpm", optional: false]}, {:idna, "6.0.0", [hex: :idna, repo: "hexpm", optional: false]}, {:p1_utils, "1.0.25", [hex: :p1_utils, repo: "hexpm", optional: false]}, {:stringprep, "1.0.28", [hex: :stringprep, repo: "hexpm", optional: false]}], "hexpm", "966a4539dea7331310be809eaccd5d02af5874303a90679d35bee2117f825b4a"},
|
||||
"yconf": {:hex, :yconf, "1.0.13", "25557689f71897e20c8630ae8865ce083437d325e7d5a6f8ee950c7e0e7be4e1", [:rebar3], [{:fast_yaml, "1.0.33", [hex: :fast_yaml, repo: "hexpm", optional: false]}], "hexpm", "3fd478212b3da121229684288f5154c3610ac6b6c3dbbbdd7886737cab82d851"},
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
-module(override_deps_versions).
|
||||
-module(override_deps_versions2).
|
||||
-export([preprocess/2, 'pre_update-deps'/2, new_replace/1, new_replace/0]).
|
||||
|
||||
preprocess(Config, _Dirs) ->
|
||||
@@ -55,7 +55,7 @@ replace_mod(Beam) ->
|
||||
Call = case Name of
|
||||
new ->
|
||||
[erl_syntax:application(
|
||||
erl_syntax:abstract(override_deps_versions),
|
||||
erl_syntax:abstract(override_deps_versions2),
|
||||
erl_syntax:abstract(new_replace),
|
||||
Args)];
|
||||
_ ->
|
||||
+8
-1
@@ -243,7 +243,6 @@ p[dir=ltr] a {
|
||||
|
||||
background: #3eaffa;
|
||||
|
||||
text-transform: uppercase;
|
||||
font-size: 0.75em;
|
||||
color: #fff;
|
||||
}
|
||||
@@ -277,3 +276,11 @@ p.result {
|
||||
*.alignright {
|
||||
text-align: right;
|
||||
}
|
||||
.btn-danger:hover {
|
||||
color: #fff;
|
||||
background-color: #cb2431;
|
||||
}
|
||||
.btn-danger {
|
||||
color: #cb2431;
|
||||
transition: none;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
%% Generated automatically
|
||||
%% DO NOT EDIT: run `make translations` instead
|
||||
%% To improve translations please read:
|
||||
%% https://docs.ejabberd.im/developer/extending-ejabberd/localization/
|
||||
|
||||
{" (Add * to the end of field to match substring)"," (أضف * في نهاية الحقل لمطابقة السلسلة الفرعية)"}.
|
||||
{" has set the subject to: "," حدد الموضوع إلى: "}.
|
||||
{"# participants","# المشاركين"}.
|
||||
{"A description of the node","وصف العقدة"}.
|
||||
{"A Web Page","موقع الكتروني"}.
|
||||
{"'Displayed groups' not added (they do not exist!): ","لم تتم إضافة \"المجموعات المعروضة\" (فهي غير موجودة!): "}.
|
||||
+215
-51
@@ -1,11 +1,26 @@
|
||||
%% -*- coding: utf-8 -*-
|
||||
%% Generated automatically
|
||||
%% DO NOT EDIT: run `make translations` instead
|
||||
%% To improve translations please read:
|
||||
%% https://docs.ejabberd.im/developer/extending-ejabberd/localization/
|
||||
|
||||
{" (Add * to the end of field to match substring)"," (Afegix * al final d'un camp per a buscar subcadenes)"}.
|
||||
{" has set the subject to: "," ha posat l'assumpte: "}.
|
||||
{" has set the subject to: "," ha posat el tema: "}.
|
||||
{"# participants","# participants"}.
|
||||
{"A description of the node","Una descripció del node"}.
|
||||
{"A friendly name for the node","Un nom per al node"}.
|
||||
{"A password is required to enter this room","Es necessita contrasenya per a entrar en aquesta sala"}.
|
||||
{"A Web Page","Una Pàgina Web"}.
|
||||
{"Accept","Acceptar"}.
|
||||
{"Access denied by service policy","Accés denegat per la política del servei"}.
|
||||
{"Access model of authorize","Model d'Accés de autoritzar"}.
|
||||
{"Access model of open","Model d'Accés de obert"}.
|
||||
{"Access model of presence","Model d'Accés de presència"}.
|
||||
{"Access model of roster","Model d'Accés de contactes"}.
|
||||
{"Access model of whitelist","Model d'Accés de llista blanca"}.
|
||||
{"Access model","Model d'Accés"}.
|
||||
{"Account doesn't exist","El compte no existeix"}.
|
||||
{"Action on user","Acció en l'usuari"}.
|
||||
{"Add a hat to a user","Afegir un barret a un usuari"}.
|
||||
{"Add Jabber ID","Afegir Jabber ID"}.
|
||||
{"Add New","Afegir nou"}.
|
||||
{"Add User","Afegir usuari"}.
|
||||
@@ -14,19 +29,36 @@
|
||||
{"Administrator privileges required","Es necessita tenir privilegis d'administrador"}.
|
||||
{"All activity","Tota l'activitat"}.
|
||||
{"All Users","Tots els usuaris"}.
|
||||
{"Allow users to change the subject","Permetre que els usuaris canviin el tema"}.
|
||||
{"Allow subscription","Permetre subscripcions"}.
|
||||
{"Allow this Jabber ID to subscribe to this pubsub node?","Permetre que aquesta Jabber ID es puga subscriure a aquest node pubsub?"}.
|
||||
{"Allow this person to register with the room?","Permetre a esta persona registrar-se a la sala?"}.
|
||||
{"Allow users to change the subject","Permetre que els usuaris canviïn el tema"}.
|
||||
{"Allow users to query other users","Permetre que els usuaris fagen peticions a altres usuaris"}.
|
||||
{"Allow users to send invites","Permetre que els usuaris envien invitacions"}.
|
||||
{"Allow users to send private messages","Permetre que els usuaris envien missatges privats"}.
|
||||
{"Allow visitors to change nickname","Permetre als visitants canviar el sobrenom"}.
|
||||
{"Allow visitors to send private messages to","Permetre als visitants enviar missatges privats a"}.
|
||||
{"Allow visitors to send status text in presence updates","Permetre als visitants enviar text d'estat en les actualitzacions de presència"}.
|
||||
{"Allow visitors to send voice requests","Permetre als visitants enviar peticions de veu"}.
|
||||
{"An associated LDAP group that defines room membership; this should be an LDAP Distinguished Name according to an implementation-specific or deployment-specific definition of a group.","Un grup LDAP associat que defineix membresía a la sala; esto deuria ser un Nombre Distinguible de LDAP, d'acord amb una definició de grup específica d'implementació o de instal·lació."}.
|
||||
{"Announcements","Anuncis"}.
|
||||
{"Answer associated with a picture","Resposta associada amb una imatge"}.
|
||||
{"Answer associated with a video","Resposta associada amb un vídeo"}.
|
||||
{"Answer associated with speech","Resposta associada amb un parlament"}.
|
||||
{"Answer to a question","Resposta a una pregunta"}.
|
||||
{"Anyone in the specified roster group(s) may subscribe and retrieve items","Qualsevol en el grup de contactes especificat pot subscriure's i recuperar elements"}.
|
||||
{"Anyone may associate leaf nodes with the collection","Qualsevol pot associar nodes fulla amb la col·lecció"}.
|
||||
{"Anyone may publish","Qualsevol pot publicar"}.
|
||||
{"Anyone may subscribe and retrieve items","Qualsevol pot publicar i recuperar elements"}.
|
||||
{"Anyone with a presence subscription of both or from may subscribe and retrieve items","Qualsevol amb una subscripció de presencia de 'both' o 'from' pot subscriure's i publicar elements"}.
|
||||
{"Anyone with Voice","Qualsevol amb Veu"}.
|
||||
{"Anyone","Qualsevol"}.
|
||||
{"April","Abril"}.
|
||||
{"Attribute 'channel' is required for this request","L'atribut 'channel' és necessari per a aquesta petició"}.
|
||||
{"Attribute 'id' is mandatory for MIX messages","L'atribut 'id' es necessari per a missatges MIX"}.
|
||||
{"Attribute 'jid' is not allowed here","L'atribut 'jid' no està permès ací"}.
|
||||
{"Attribute 'node' is not allowed here","L'atribut 'node' no està permès ací"}.
|
||||
{"Attribute 'to' of stanza that triggered challenge","L'atribut 'to' del paquet que va disparar la comprovació"}.
|
||||
{"August","Agost"}.
|
||||
{"Automatic node creation is not enabled","La creació automàtica de nodes no està activada"}.
|
||||
{"Backup Management","Gestió de còpia de seguretat"}.
|
||||
@@ -40,6 +72,7 @@
|
||||
{"Cannot remove active list","No es pot eliminar la llista activa"}.
|
||||
{"Cannot remove default list","No es pot eliminar la llista per defecte"}.
|
||||
{"CAPTCHA web page","Pàgina web del CAPTCHA"}.
|
||||
{"Challenge ID","ID de la comprovació"}.
|
||||
{"Change Password","Canviar Contrasenya"}.
|
||||
{"Change User Password","Canviar Contrasenya d'Usuari"}.
|
||||
{"Changing password is not allowed","No està permès canviar la contrasenya"}.
|
||||
@@ -55,7 +88,6 @@
|
||||
{"Chatroom is stopped","La sala s'ha aturat"}.
|
||||
{"Chatrooms","Sales de xat"}.
|
||||
{"Choose a username and password to register with this server","Tria nom d'usuari i contrasenya per a registrar-te en aquest servidor"}.
|
||||
{"Choose modules to stop","Selecciona mòduls a detindre"}.
|
||||
{"Choose storage type of tables","Selecciona el tipus d'almacenament de les taules"}.
|
||||
{"Choose whether to approve this entity's subscription.","Tria si aproves aquesta entitat de subscripció."}.
|
||||
{"City","Ciutat"}.
|
||||
@@ -65,8 +97,10 @@
|
||||
{"Configuration of room ~s","Configuració de la sala ~s"}.
|
||||
{"Configuration","Configuració"}.
|
||||
{"Connected Resources:","Recursos connectats:"}.
|
||||
{"Contact Addresses (normally, room owner or owners)","Adreces de contacte (normalment, propietaris de la sala)"}.
|
||||
{"Country","Pais"}.
|
||||
{"CPU Time:","Temps de CPU:"}.
|
||||
{"Current Discussion Topic","Assumpte de discussió actual"}.
|
||||
{"Database failure","Error a la base de dades"}.
|
||||
{"Database Tables at ~p","Taules de la base de dades en ~p"}.
|
||||
{"Database Tables Configuration at ","Configuració de la base de dades en "}.
|
||||
@@ -79,15 +113,20 @@
|
||||
{"Delete Selected","Eliminar els seleccionats"}.
|
||||
{"Delete table","Eliminar taula"}.
|
||||
{"Delete User","Eliminar Usuari"}.
|
||||
{"Deliver event notifications","Entrega de notificacions d'events"}.
|
||||
{"Deliver payloads with event notifications","Enviar payloads junt a les notificacions d'events"}.
|
||||
{"Description:","Descripció:"}.
|
||||
{"Disc only copy","Còpia sols en disc"}.
|
||||
{"Displayed Groups:","Mostrar grups:"}.
|
||||
{"Don't tell your password to anybody, not even the administrators of the Jabber server.","No li donis la teva contrasenya a ningú, ni tan sols als administradors del servidor Jabber."}.
|
||||
{"'Displayed groups' not added (they do not exist!): ","'Mostrats' no afegits (no existeixen!): "}.
|
||||
{"Displayed:","Mostrats:"}.
|
||||
{"Don't tell your password to anybody, not even the administrators of the XMPP server.","No li donis la teva contrasenya a ningú, ni tan sols als administradors del servidor XMPP."}.
|
||||
{"Dump Backup to Text File at ","Exporta còpia de seguretat a fitxer de text en "}.
|
||||
{"Dump to Text File","Exportar a fitxer de text"}.
|
||||
{"Duplicated groups are not allowed by RFC6121","No estan permesos els grups duplicats al RFC6121"}.
|
||||
{"Dynamically specify a replyto of the item publisher","Especifica dinàmicament l'adreça on respondre al publicador del element"}.
|
||||
{"Edit Properties","Editar propietats"}.
|
||||
{"Either approve or decline the voice request.","Aprova o denega la petició de veu."}.
|
||||
{"ejabberd HTTP Upload service","ejabberd - servei de HTTP Upload"}.
|
||||
{"ejabberd MUC module","mòdul ejabberd MUC"}.
|
||||
{"ejabberd Multicast service","ejabberd - servei de Multicast"}.
|
||||
{"ejabberd Publish-Subscribe module","ejabberd - Mòdul Publicar-Subscriure"}.
|
||||
@@ -96,20 +135,22 @@
|
||||
{"ejabberd Web Admin","ejabberd Web d'administració"}.
|
||||
{"ejabberd","ejabberd"}.
|
||||
{"Elements","Elements"}.
|
||||
{"Email","Email"}.
|
||||
{"Empty password","Contrasenya buida"}.
|
||||
{"Email Address","Adreça de correu"}.
|
||||
{"Email","Correu"}.
|
||||
{"Enable hats","Activar barrets"}.
|
||||
{"Enable logging","Habilitar el registre de la conversa"}.
|
||||
{"Enable message archiving","Activar l'emmagatzematge de missatges"}.
|
||||
{"Enabling push without 'node' attribute is not supported","No està suportat activar Push sense l'atribut 'node'"}.
|
||||
{"End User Session","Finalitzar Sesió d'Usuari"}.
|
||||
{"Enter list of {Module, [Options]}","Introdueix llista de {mòdul, [opcions]}"}.
|
||||
{"Enter nickname you want to register","Introdueix el sobrenom que vols registrar"}.
|
||||
{"Enter path to backup file","Introdueix ruta al fitxer de còpia de seguretat"}.
|
||||
{"Enter path to jabberd14 spool dir","Introdueix la ruta al directori de jabberd14 spools"}.
|
||||
{"Enter path to jabberd14 spool file","Introdueix ruta al fitxer jabberd14 spool"}.
|
||||
{"Enter path to text file","Introdueix ruta al fitxer de text"}.
|
||||
{"Enter the text you see","Introdueix el text que veus"}.
|
||||
{"Erlang Jabber Server","Servidor Erlang Jabber"}.
|
||||
{"Erlang XMPP Server","Servidor Erlang XMPP"}.
|
||||
{"Error","Error"}.
|
||||
{"Exclude Jabber IDs from CAPTCHA challenge","Excloure Jabber IDs de la comprovació CAPTCHA"}.
|
||||
{"Export all tables as SQL queries to a file:","Exporta totes les taules a un fitxer SQL:"}.
|
||||
{"Export data of all users in the server to PIEFXIS files (XEP-0227):","Exportar dades de tots els usuaris del servidor a arxius PIEFXIS (XEP-0227):"}.
|
||||
{"Export data of users in a host to PIEFXIS files (XEP-0227):","Exportar dades d'usuaris d'un host a arxius PIEFXIS (XEP-0227):"}.
|
||||
@@ -119,14 +160,17 @@
|
||||
{"Failed to extract JID from your voice request approval","No s'ha pogut extraure el JID de la teva aprovació de petició de veu"}.
|
||||
{"Failed to map delegated namespace to external component","Ha fallat mapejar la delegació de l'espai de noms al component extern"}.
|
||||
{"Failed to parse HTTP response","Ha fallat el processat de la resposta HTTP"}.
|
||||
{"Failed to process option '~s'","H fallat el processat de la opció '~s'"}.
|
||||
{"Failed to process option '~s'","Ha fallat el processat de la opció '~s'"}.
|
||||
{"Family Name","Cognom"}.
|
||||
{"FAQ Entry","Entrada a la FAQ"}.
|
||||
{"February","Febrer"}.
|
||||
{"File larger than ~w bytes","El fitxer es més gran que ~w bytes"}.
|
||||
{"Fill in the form to search for any matching Jabber User","Emplena camps per a buscar usuaris Jabber que concorden"}.
|
||||
{"Fill in the form to search for any matching XMPP User","Emplena camps per a buscar usuaris XMPP que concorden"}.
|
||||
{"Friday","Divendres"}.
|
||||
{"From ~s","De ~s"}.
|
||||
{"From ~ts","De ~ts"}.
|
||||
{"From","De"}.
|
||||
{"Full List of Room Admins","Llista completa de administradors de la sala"}.
|
||||
{"Full List of Room Owners","Llista completa de propietaris de la sala"}.
|
||||
{"Full Name","Nom complet"}.
|
||||
{"Get Number of Online Users","Obtenir Número d'Usuaris Connectats"}.
|
||||
{"Get Number of Registered Users","Obtenir Número d'Usuaris Registrats"}.
|
||||
@@ -135,13 +179,18 @@
|
||||
{"Get User Password","Obtenir Contrasenya d'usuari"}.
|
||||
{"Get User Statistics","Obtenir Estadístiques d'Usuari"}.
|
||||
{"Given Name","Nom propi"}.
|
||||
{"Group ","Grup "}.
|
||||
{"Grant voice to this person?","Concedir veu a aquesta persona?"}.
|
||||
{"Group","Grup"}.
|
||||
{"Groups that will be displayed to the members","Grups que seran mostrats als membres"}.
|
||||
{"Groups","Grups"}.
|
||||
{"has been banned","ha sigut bloquejat"}.
|
||||
{"has been kicked because of a system shutdown","ha sigut expulsat perquè el sistema va a apagar-se"}.
|
||||
{"has been kicked because of an affiliation change","ha sigut expulsat a causa d'un canvi d'afiliació"}.
|
||||
{"has been kicked because the room has been changed to members-only","ha sigut expulsat perquè la sala ara és només per a membres"}.
|
||||
{"has been kicked","ha sigut expulsat"}.
|
||||
{"Hat title","Títol del barret"}.
|
||||
{"Hat URI","URI del barret"}.
|
||||
{"Hats limit exceeded","El límit de tràfic ha sigut sobrepassat"}.
|
||||
{"Host unknown","Host desconegut"}.
|
||||
{"Host","Host"}.
|
||||
{"HTTP File Upload","HTTP File Upload"}.
|
||||
@@ -176,19 +225,26 @@
|
||||
{"It is not allowed to send private messages of type \"groupchat\"","No està permés enviar missatges del tipus \"groupchat\""}.
|
||||
{"It is not allowed to send private messages to the conference","No està permès l'enviament de missatges privats a la sala"}.
|
||||
{"It is not allowed to send private messages","No està permés enviar missatges privats"}.
|
||||
{"Jabber Account Registration","Registre de compte Jabber"}.
|
||||
{"Jabber ID","ID Jabber"}.
|
||||
{"January","Gener"}.
|
||||
{"JID normalization denied by service policy","S'ha denegat la normalització del JID per política del servei"}.
|
||||
{"JID normalization failed","Ha fallat la normalització del JID"}.
|
||||
{"joins the room","entra a la sala"}.
|
||||
{"July","Juliol"}.
|
||||
{"June","Juny"}.
|
||||
{"Just created","Creació recent"}.
|
||||
{"Label:","Etiqueta:"}.
|
||||
{"Last Activity","Última activitat"}.
|
||||
{"Last login","Últim login"}.
|
||||
{"Last message","Últim missatge"}.
|
||||
{"Last month","Últim mes"}.
|
||||
{"Last year","Últim any"}.
|
||||
{"Least significant bits of SHA-256 hash of text should equal hexadecimal label","Els bits menys significants del hash SHA-256 del text deurien ser iguals a l'etiqueta hexadecimal"}.
|
||||
{"leaves the room","surt de la sala"}.
|
||||
{"List of modules to start","Llista de mòduls a iniciar"}.
|
||||
{"List of rooms","Llista de sales"}.
|
||||
{"List of users with hats","Llista d'usuaris amb barrets"}.
|
||||
{"List users with hats","Llista d'usuaris amb barrets"}.
|
||||
{"Logging","Registre"}.
|
||||
{"Low level update script","Script d'actualització de baix nivell"}.
|
||||
{"Make participants list public","Crear una llista de participants pública"}.
|
||||
{"Make room CAPTCHA protected","Crear una sala protegida per CAPTCHA"}.
|
||||
@@ -200,26 +256,40 @@
|
||||
{"Malformed username","Nom d'usuari mal format"}.
|
||||
{"MAM preference modification denied by service policy","Se t'ha denegat la modificació de la preferència de MAM per política del servei"}.
|
||||
{"March","Març"}.
|
||||
{"Max # of items to persist, or `max` for no specific limit other than a server imposed maximum","Màxim # d'elements a persistir, o `max` per a no tindre altre límit més que el màxim imposat pel servidor"}.
|
||||
{"Max payload size in bytes","Màxim tamany del payload en bytes"}.
|
||||
{"Maximum file size","Mida màxima de fitxer"}.
|
||||
{"Maximum Number of History Messages Returned by Room","Numero màxim de missatges de l'historia que retorna la sala"}.
|
||||
{"Maximum number of items to persist","Número màxim d'elements que persistixen"}.
|
||||
{"Maximum Number of Occupants","Número màxim d'ocupants"}.
|
||||
{"May","Maig"}.
|
||||
{"Members not added (inexistent vhost!): ","Membres no afegits (perquè el vhost no existeix): "}.
|
||||
{"Membership is required to enter this room","Necessites ser membre d'aquesta sala per a poder entrar"}.
|
||||
{"Members:","Membre:"}.
|
||||
{"Memorize your password, or write it in a paper placed in a safe place. In Jabber there isn't an automated way to recover your password if you forget it.","Memoritza la teva contrasenya, o escriu-la en un paper guardat a un lloc segur.A Jabber no hi ha una forma automatitzada de recuperar la teva contrasenya si la oblides."}.
|
||||
{"Memorize your password, or write it in a paper placed in a safe place. In XMPP there isn't an automated way to recover your password if you forget it.","Memoritza la teva contrasenya, o escriu-la en un paper guardat a un lloc segur. A XMPP no hi ha una forma automatitzada de recuperar la teva contrasenya si la oblides."}.
|
||||
{"Memory","Memòria"}.
|
||||
{"Mere Availability in XMPP (No Show Value)","Simplement disponibilitat a XMPP (sense valor de 'show')"}.
|
||||
{"Message body","Missatge"}.
|
||||
{"Message not found in forwarded payload","Missatge no trobat al contingut reenviat"}.
|
||||
{"Messages from strangers are rejected","Els missatges de desconeguts son rebutjats"}.
|
||||
{"Messages of type headline","Missatges de tipus titular"}.
|
||||
{"Messages of type normal","Missatges de tipus normal"}.
|
||||
{"Middle Name","Segon nom"}.
|
||||
{"Minimum interval between voice requests (in seconds)","Interval mínim entre peticions de veu (en segons)"}.
|
||||
{"Moderator privileges required","Es necessita tenir privilegis de moderador"}.
|
||||
{"Moderator","Moderador"}.
|
||||
{"Moderators Only","Només moderadors"}.
|
||||
{"Modified modules","Mòduls modificats"}.
|
||||
{"Module failed to handle the query","El modul ha fallat al gestionar la petició"}.
|
||||
{"Modules","Mòduls"}.
|
||||
{"Monday","Dilluns"}.
|
||||
{"Multicast","Multicast"}.
|
||||
{"Multiple <item/> elements are not allowed by RFC6121","No estan permesos múltiples elements <item/> per RFC6121"}.
|
||||
{"Multi-User Chat","Multi-Usuari Converses"}.
|
||||
{"Name in the rosters where this group will be displayed","Nom a les llistes de contactes on es mostrarà aquest grup"}.
|
||||
{"Name","Nom"}.
|
||||
{"Name:","Nom:"}.
|
||||
{"Natural Language for Room Discussions","Llengua natural per a les discussions a les sales"}.
|
||||
{"Natural-Language Room Name","Nom de la sala a la seua llengua natural"}.
|
||||
{"Neither 'jid' nor 'nick' attribute found","No s'han trobat els atributs 'jid' ni 'nick'"}.
|
||||
{"Neither 'role' nor 'affiliation' attribute found","No s'han trobat els atributs 'role' ni 'affiliation'"}.
|
||||
{"Never","Mai"}.
|
||||
@@ -244,7 +314,6 @@
|
||||
{"No items found in this query","En aquesta petició no s'ha trobat cap element"}.
|
||||
{"No limit","Sense Llímit"}.
|
||||
{"No module is handling this query","Cap element està manegant esta petició"}.
|
||||
{"No 'modules' found in data form","No s'ha trobat 'modules' al formulari de dades"}.
|
||||
{"No node specified","No s'ha especificat node"}.
|
||||
{"No 'password' found in data form","No s'ha trobat 'password' al formulari de dades"}.
|
||||
{"No 'password' found in this query","No s'ha trobat 'password' en esta petició"}.
|
||||
@@ -256,19 +325,31 @@
|
||||
{"No services available","No n'hi ha serveis disponibles"}.
|
||||
{"No statistics found for this item","No n'hi ha estadístiques disponibles per a aquest element"}.
|
||||
{"No 'to' attribute found in the invitation","No s'ha trobat l'atribut 'to' en la invitació"}.
|
||||
{"Nobody","Ningú"}.
|
||||
{"Node already exists","El node ja existeix"}.
|
||||
{"Node ID","ID del Node"}.
|
||||
{"Node index not found","Index de node no trobat"}.
|
||||
{"Node not found","Node no trobat"}.
|
||||
{"Node ~p","Node ~p"}.
|
||||
{"Node","Node"}.
|
||||
{"Nodeprep has failed","Ha fallat Nodeprep"}.
|
||||
{"Nodes","Nodes"}.
|
||||
{"None","Cap"}.
|
||||
{"Not allowed","No permès"}.
|
||||
{"Not Found","No Trobat"}.
|
||||
{"Not subscribed","No subscrit"}.
|
||||
{"Notify subscribers when items are removed from the node","Notificar subscriptors quan els elements són eliminats del node"}.
|
||||
{"Notify subscribers when the node configuration changes","Notificar subscriptors quan canvia la configuració del node"}.
|
||||
{"Notify subscribers when the node is deleted","Notificar subscriptors quan el node és eliminat"}.
|
||||
{"November","Novembre"}.
|
||||
{"Number of answers required","Número de respostes requerides"}.
|
||||
{"Number of occupants","Número d'ocupants"}.
|
||||
{"Number of Offline Messages","Número de missatges offline"}.
|
||||
{"Number of online users","Número d'usuaris connectats"}.
|
||||
{"Number of registered users","Número d'Usuaris Registrats"}.
|
||||
{"Number of seconds after which to automatically purge items, or `max` for no specific limit other than a server imposed maximum","Número de segons després dels quals es purgaran automàticament elements, o `max` per a no tindre altre límit més que el màxim imposat pel servidor"}.
|
||||
{"Occupants are allowed to invite others","Els ocupants poden invitar a altres"}.
|
||||
{"Occupants May Change the Subject","Els ocupants poden canviar el Tema"}.
|
||||
{"October","Octubre"}.
|
||||
{"Offline Messages:","Missatges fora de línia:"}.
|
||||
{"Offline Messages","Missatges offline"}.
|
||||
@@ -277,15 +358,21 @@
|
||||
{"Online Users","Usuaris conectats"}.
|
||||
{"Online Users:","Usuaris en línia:"}.
|
||||
{"Online","Connectat"}.
|
||||
{"Only admins can see this","Només els administradors poden veure esto"}.
|
||||
{"Only collection node owners may associate leaf nodes with the collection","Només els propietaris de la col·lecció de nodes poden associar nodes fulla amb la col·lecció"}.
|
||||
{"Only deliver notifications to available users","Sols enviar notificacions als usuaris disponibles"}.
|
||||
{"Only <enable/> or <disable/> tags are allowed","Només es permeten etiquetes <enable/> o <disable/>"}.
|
||||
{"Only <list/> element is allowed in this query","En esta petició només es permet l'element <list/>"}.
|
||||
{"Only members may query archives of this room","Només membres poden consultar l'arxiu de missatges d'aquesta sala"}.
|
||||
{"Only moderators and participants are allowed to change the subject in this room","Només els moderadors i participants poden canviar l'assumpte d'aquesta sala"}.
|
||||
{"Only moderators are allowed to change the subject in this room","Només els moderadors poden canviar l'assumpte d'aquesta sala"}.
|
||||
{"Only moderators and participants are allowed to change the subject in this room","Només els moderadors i participants poden canviar el tema d'aquesta sala"}.
|
||||
{"Only moderators are allowed to change the subject in this room","Només els moderadors poden canviar el tema d'aquesta sala"}.
|
||||
{"Only moderators can approve voice requests","Només els moderadors poden aprovar les peticions de veu"}.
|
||||
{"Only occupants are allowed to send messages to the conference","Sols els ocupants poden enviar missatges a la sala"}.
|
||||
{"Only occupants are allowed to send queries to the conference","Sols els ocupants poden enviar sol·licituds a la sala"}.
|
||||
{"Only publishers may publish","Només els publicadors poden publicar"}.
|
||||
{"Only service administrators are allowed to send service messages","Sols els administradors del servei tenen permís per a enviar missatges de servei"}.
|
||||
{"Only those on a whitelist may associate leaf nodes with the collection","Només qui estiga a una llista blanca pot associar nodes fulla amb la col·lecció"}.
|
||||
{"Only those on a whitelist may subscribe and retrieve items","Només qui estiga a una llista blanca pot subscriure's i recuperar elements"}.
|
||||
{"Organization Name","Nom de la organizació"}.
|
||||
{"Organization Unit","Unitat de la organizació"}.
|
||||
{"Outgoing s2s Connections:","Connexions d'eixida s2s:"}.
|
||||
@@ -293,46 +380,60 @@
|
||||
{"Owner privileges required","Es requerixen privilegis de propietari de la sala"}.
|
||||
{"Packet relay is denied by service policy","S'ha denegat el reenviament del paquet per política del servei"}.
|
||||
{"Packet","Paquet"}.
|
||||
{"Parse failed","El processat ha fallat"}.
|
||||
{"Participant","Participant"}.
|
||||
{"Password Verification","Verificació de la Contrasenya"}.
|
||||
{"Password Verification:","Verificació de la Contrasenya:"}.
|
||||
{"Password","Contrasenya"}.
|
||||
{"Password:","Contrasenya:"}.
|
||||
{"Path to Dir","Ruta al directori"}.
|
||||
{"Path to File","Ruta al fitxer"}.
|
||||
{"Payload type","Tipus de payload"}.
|
||||
{"Pending","Pendent"}.
|
||||
{"Period: ","Període: "}.
|
||||
{"Persist items to storage","Persistir elements al guardar"}.
|
||||
{"Persistent","Persistent"}.
|
||||
{"Ping query is incorrect","La petició de Ping es incorrecta"}.
|
||||
{"Ping","Ping"}.
|
||||
{"Please note that these options will only backup the builtin Mnesia database. If you are using the ODBC module, you also need to backup your SQL database separately.","Recorda que aquestes opcions només fan còpia de seguretat de la base de dades Mnesia. Si estàs utilitzant el mòdul d'ODBC també deus de fer una còpia de seguretat de la base de dades de SQL a part."}.
|
||||
{"Please, wait for a while before sending new voice request","Si us plau, espera una mica abans d'enviar una nova petició de veu"}.
|
||||
{"Pong","Pong"}.
|
||||
{"Possessing 'ask' attribute is not allowed by RFC6121","Processar l'atribut 'ask' no està permès per RFC6121"}.
|
||||
{"Possessing 'ask' attribute is not allowed by RFC6121","Posseir l'atribut 'ask' no està permès per RFC6121"}.
|
||||
{"Present real Jabber IDs to","Presentar Jabber ID's reals a"}.
|
||||
{"Previous session not found","No s'ha trobat la sessió prèvia"}.
|
||||
{"Previous session PID has been killed","El procés de la sessió prèvia ha sigut matat"}.
|
||||
{"Previous session PID has exited","El procés de la sessió prèvia ha sortit"}.
|
||||
{"Previous session PID is dead","El procés de la sessió prèvia està mort"}.
|
||||
{"Previous session timed out","La sessió prèvia ha caducat"}.
|
||||
{"private, ","privat, "}.
|
||||
{"Public","Public"}.
|
||||
{"Publish model","Model de publicació"}.
|
||||
{"Publish-Subscribe","Publicar-subscriure't"}.
|
||||
{"PubSub subscriber request","Petició de subscriptor PubSub"}.
|
||||
{"Purge all items when the relevant publisher goes offline","Eliminar tots els elements quan el publicant relevant es desconnecti"}.
|
||||
{"Push record not found","No s'ha trobat l'element Push"}.
|
||||
{"Queries to the conference members are not allowed in this room","En aquesta sala no es permeten sol·licituds als membres"}.
|
||||
{"Query to another users is forbidden","Enviar peticions a altres usuaris no està permès"}.
|
||||
{"RAM and disc copy","Còpia en RAM i disc"}.
|
||||
{"RAM copy","Còpia en RAM"}.
|
||||
{"Really delete message of the day?","Segur que vols eliminar el missatge del dia?"}.
|
||||
{"Receive notification from all descendent nodes","Rebre notificació de tots els nodes descendents"}.
|
||||
{"Receive notification from direct child nodes only","Rebre notificació només de nodes fills directes"}.
|
||||
{"Receive notification of new items only","Rebre notificació només de nous elements"}.
|
||||
{"Receive notification of new nodes only","Rebre notificació només de nous nodes"}.
|
||||
{"Recipient is not in the conference room","El receptor no està en la sala de conferència"}.
|
||||
{"Register a Jabber account","Registrar un compte Jabber"}.
|
||||
{"Register an XMPP account","Registrar un compte XMPP"}.
|
||||
{"Registered Users","Usuaris registrats"}.
|
||||
{"Registered Users:","Usuaris registrats:"}.
|
||||
{"Register","Registrar"}.
|
||||
{"Remote copy","Còpia remota"}.
|
||||
{"Remove a hat from a user","Eliminar un barret d'un usuari"}.
|
||||
{"Remove All Offline Messages","Eliminar tots els missatges offline"}.
|
||||
{"Remove User","Eliminar usuari"}.
|
||||
{"Remove","Borrar"}.
|
||||
{"Replaced by new connection","Reemplaçat per una nova connexió"}.
|
||||
{"Request has timed out","La petició ha caducat"}.
|
||||
{"Request is ignored","La petició ha sigut ignorada"}.
|
||||
{"Requested role","Rol sol·licitat"}.
|
||||
{"Resources","Recursos"}.
|
||||
{"Restart Service","Reiniciar el Servei"}.
|
||||
{"Restart","Reiniciar"}.
|
||||
@@ -341,23 +442,28 @@
|
||||
{"Restore binary backup immediately:","Restaurar una còpia de seguretat binària ara mateix:"}.
|
||||
{"Restore plain text backup immediately:","Restaurar una còpia de seguretat en format de text pla ara mateix:"}.
|
||||
{"Restore","Restaurar"}.
|
||||
{"Roles and Affiliations that May Retrieve Member List","Rols i Afiliacions que poden recuperar la llista de membres"}.
|
||||
{"Roles for which Presence is Broadcasted","Rols per als que sí se difon la seua presencia"}.
|
||||
{"Roles that May Send Private Messages","Rols que poden enviar missatges privats"}.
|
||||
{"Room Configuration","Configuració de la sala"}.
|
||||
{"Room creation is denied by service policy","Se t'ha denegat el crear la sala per política del servei"}.
|
||||
{"Room description","Descripció de la sala"}.
|
||||
{"Room Occupants","Nombre d'ocupants"}.
|
||||
{"Room Occupants","Ocupants de la sala"}.
|
||||
{"Room terminates","La sala està terminant"}.
|
||||
{"Room title","Títol de la sala"}.
|
||||
{"Roster module has failed","El modul de Roster ha fallat"}.
|
||||
{"Roster of ","Llista de contactes de "}.
|
||||
{"Roster size","Tamany de la llista"}.
|
||||
{"Roster","Llista de contactes"}.
|
||||
{"Roster groups allowed to subscribe","Llista de grups que tenen permés subscriures"}.
|
||||
{"Roster of ~ts","Llista de contactes de ~ts"}.
|
||||
{"Roster size","Mida de la llista"}.
|
||||
{"Roster:","Llista de contactes:"}.
|
||||
{"RPC Call Error","Error de cridada RPC"}.
|
||||
{"Running Nodes","Nodes funcionant"}.
|
||||
{"~s invites you to the room ~s","~s et convida a la sala ~s"}.
|
||||
{"Saturday","Dissabte"}.
|
||||
{"Scan failed","L'escanejat ha fallat"}.
|
||||
{"Script check","Comprovar script"}.
|
||||
{"Search from the date","Buscar des de la data"}.
|
||||
{"Search Results for ","Resultats de la búsqueda "}.
|
||||
{"Search the text","Buscar el text"}.
|
||||
{"Search until the date","Buscar fins la data"}.
|
||||
{"Search users in ","Cerca usuaris en "}.
|
||||
{"Select All","Seleccionar Tots"}.
|
||||
{"Send announcement to all online users on all hosts","Enviar anunci a tots els usuaris connectats a tots els hosts"}.
|
||||
@@ -366,6 +472,7 @@
|
||||
{"Send announcement to all users","Enviar anunci a tots els usuaris"}.
|
||||
{"September","Setembre"}.
|
||||
{"Server:","Servidor:"}.
|
||||
{"Service list retrieval timed out","L'intent de recuperar la llista de serveis ha caducat"}.
|
||||
{"Session state copying timed out","La copia del estat de la sessió ha caducat"}.
|
||||
{"Set message of the day and send to online users","Configurar el missatge del dia i enviar a tots els usuaris"}.
|
||||
{"Set message of the day on all hosts and send to online users","Escriure missatge del dia en tots els hosts i enviar-ho als usuaris connectats"}.
|
||||
@@ -374,14 +481,14 @@
|
||||
{"Show Ordinary Table","Mostrar Taula Ordinaria"}.
|
||||
{"Shut Down Service","Apager el Servei"}.
|
||||
{"SOCKS5 Bytestreams","SOCKS5 Bytestreams"}.
|
||||
{"Some Jabber clients can store your password in the computer, but you should do this only in your personal computer for safety reasons.","Alguns clients Jabber poden emmagatzemar la teva contrasenya al teu ordinador. Fes servir aquesta característica només si saps que el teu ordinador és segur."}.
|
||||
{"~s's Offline Messages Queue","~s's cua de missatges offline"}.
|
||||
{"Start Modules at ","Iniciar mòduls en "}.
|
||||
{"Start Modules","Iniciar mòduls"}.
|
||||
{"Some XMPP clients can store your password in the computer, but you should do this only in your personal computer for safety reasons.","Alguns clients XMPP poden emmagatzemar la teva contrasenya al ordinador, però només hauries de fer això al teu ordinador personal, per raons de seguretat."}.
|
||||
{"Specify the access model","Especificar el model d'accés"}.
|
||||
{"Specify the event message type","Especifica el tipus de missatge d'event"}.
|
||||
{"Specify the publisher model","Especificar el model del publicant"}.
|
||||
{"Stanza ID","ID del paquet"}.
|
||||
{"Statically specify a replyto of the node owner(s)","Especifica estaticament una adreça on respondre al propietari del node"}.
|
||||
{"Statistics of ~p","Estadístiques de ~p"}.
|
||||
{"Statistics","Estadístiques"}.
|
||||
{"Stop Modules at ","Detindre mòduls en "}.
|
||||
{"Stop Modules","Parar mòduls"}.
|
||||
{"Stop","Detindre"}.
|
||||
{"Stopped Nodes","Nodes parats"}.
|
||||
{"Storage Type","Tipus d'emmagatzematge"}.
|
||||
@@ -389,36 +496,69 @@
|
||||
{"Store plain text backup:","Guardar una còpia de seguretat en format de text pla:"}.
|
||||
{"Stream management is already enabled","L'administració de la connexió (stream management) ja està activada"}.
|
||||
{"Stream management is not enabled","L'administració de la conexió (stream management) no està activada"}.
|
||||
{"Subject","Assumpte"}.
|
||||
{"Subject","Tema"}.
|
||||
{"Submit","Enviar"}.
|
||||
{"Submitted","Enviat"}.
|
||||
{"Subscriber Address","Adreça del Subscriptor"}.
|
||||
{"Subscribers may publish","Els subscriptors poden publicar"}.
|
||||
{"Subscription requests must be approved and only subscribers may retrieve items","Les peticiones de subscripció han de ser aprovades i només els subscriptors poden recuperar elements"}.
|
||||
{"Subscriptions are not allowed","Les subscripcions no estan permeses"}.
|
||||
{"Subscription","Subscripció"}.
|
||||
{"Sunday","Diumenge"}.
|
||||
{"Text associated with a picture","Text associat amb una imatge"}.
|
||||
{"Text associated with a sound","Text associat amb un so"}.
|
||||
{"Text associated with a video","Text associat amb un vídeo"}.
|
||||
{"Text associated with speech","Text associat amb una veu"}.
|
||||
{"That nickname is already in use by another occupant","El sobrenom ja l'està utilitzant una altra persona"}.
|
||||
{"That nickname is registered by another person","El sobrenom ja està registrat per una altra persona"}.
|
||||
{"The account already exists","El compte ha existeix"}.
|
||||
{"The account was not deleted","El compte no ha sigut esborrat"}.
|
||||
{"The account was not unregistered","El compte no ha sigut esborrat"}.
|
||||
{"The body text of the last received message","El contingut del text de l'ultim missatge rebut"}.
|
||||
{"The CAPTCHA is valid.","El CAPTCHA es vàlid."}.
|
||||
{"The CAPTCHA verification has failed","La verificació CAPTCHA ha fallat"}.
|
||||
{"The captcha you entered is wrong","El CAPTCHA que has proporcionat és incorrecte"}.
|
||||
{"The child nodes (leaf or collection) associated with a collection","El nodes fills (fulla o col·leccions) associats amb una col·lecció"}.
|
||||
{"The collections with which a node is affiliated","Les col.leccions amb les que un node està afiliat"}.
|
||||
{"The DateTime at which a leased subscription will end or has ended","La Data i Hora a la que una subscripció prestada terminarà o ha terminat"}.
|
||||
{"The datetime when the node was created","La data i hora a la que un node va ser creat"}.
|
||||
{"The default language of the node","El llenguatge per defecte d'un node"}.
|
||||
{"The feature requested is not supported by the conference","La característica sol·licitada no està suportada per la sala de conferència"}.
|
||||
{"The JID of the node creator","El JID del creador del node"}.
|
||||
{"The JIDs of those to contact with questions","Els JIDs a qui contactar amb preguntes"}.
|
||||
{"The JIDs of those with an affiliation of owner","Els JIDs de qui tenen una afiliació de propietaris"}.
|
||||
{"The JIDs of those with an affiliation of publisher","Els JIDs de qui tenen una afiliació de publicadors"}.
|
||||
{"The list of JIDs that may associate leaf nodes with a collection","La llista de JIDs que poden associar nodes fulla amb una col·lecció"}.
|
||||
{"The maximum number of child nodes that can be associated with a collection, or `max` for no specific limit other than a server imposed maximum","El màxim número de nodes fills que poden associar-se amb una col·lecció, o `max` per a no tindre altre límit més que el màxim imposat pel servidor"}.
|
||||
{"The minimum number of milliseconds between sending any two notification digests","El número mínim de mil·lisegons entre l'enviament de dos resums de notificacions"}.
|
||||
{"The name of the node","El nom del node"}.
|
||||
{"The node is a collection node","El node es una col·lecció"}.
|
||||
{"The node is a leaf node (default)","El node es un node fulla (per defecte)"}.
|
||||
{"The NodeID of the relevant node","El NodeID del node rellevant"}.
|
||||
{"The number of pending incoming presence subscription requests","El número de peticions rebudes de subscripció de presencia pendents"}.
|
||||
{"The number of subscribers to the node","El número de subscriptors al node"}.
|
||||
{"The number of unread or undelivered messages","El número de missatges no llegits o no enviats"}.
|
||||
{"The password contains unacceptable characters","La contrasenya conté caràcters inacceptables"}.
|
||||
{"The password is too weak","La contrasenya és massa simple"}.
|
||||
{"the password is","la contrasenya és"}.
|
||||
{"The password of your Jabber account was successfully changed.","La contrasenya del teu compte Jabber s'ha canviat correctament."}.
|
||||
{"The password of your XMPP account was successfully changed.","La contrasenya del teu compte XMPP s'ha canviat correctament."}.
|
||||
{"The password was not changed","La contrasenya no ha sigut canviada"}.
|
||||
{"The passwords are different","Les contrasenyes son diferents"}.
|
||||
{"The presence states for which an entity wants to receive notifications","El estats de presencia per als quals una entitat vol rebre notificacions"}.
|
||||
{"The query is only allowed from local users","La petició està permesa només d'usuaris locals"}.
|
||||
{"The query must not contain <item/> elements","La petició no pot contenir elements <item/>"}.
|
||||
{"The room subject can be modified by participants","El tema de la sala pot modificar-lo els participants"}.
|
||||
{"The sender of the last received message","Qui ha enviat l'ultim missatge rebut"}.
|
||||
{"The stanza MUST contain only one <active/> element, one <default/> element, or one <list/> element","El paquet DEU contindre només un element <active/>, un element <default/>, o un element <list/>"}.
|
||||
{"The username is not valid","El nom d'usuari no es vàlid"}.
|
||||
{"The subscription identifier associated with the subscription request","L'identificador de subscripció associat amb la petició de subscripció"}.
|
||||
{"The type of node data, usually specified by the namespace of the payload (if any)","El tipus de dades al node, usualment especificat pel namespace del payload (si n'hi ha)"}.
|
||||
{"The URL of an XSL transformation which can be applied to payloads in order to generate an appropriate message body element.","La URL de uns transformació XSL que pot ser aplicada als payloads per a generar un element apropiat de contingut de missatge."}.
|
||||
{"The URL of an XSL transformation which can be applied to the payload format in order to generate a valid Data Forms result that the client could display using a generic Data Forms rendering engine","La URL de una transformació XSL que pot ser aplicada al format de payload per a generar un resultat valid de Data Forms, que el client puga mostrar usant un métode generic de Data Forms"}.
|
||||
{"There was an error changing the password: ","Hi ha hagut un error canviant la contrasenya: "}.
|
||||
{"There was an error creating the account: ","Hi ha hagut un error creant el compte: "}.
|
||||
{"There was an error deleting the account: ","Hi ha hagut un error esborrant el compte: "}.
|
||||
{"This is case insensitive: macbeth is the same that MacBeth and Macbeth.","Això no distingeix majúscules de minúscules: macbeth es el mateix que MacBeth i Macbeth."}.
|
||||
{"This page allows to create a Jabber account in this Jabber server. Your JID (Jabber IDentifier) will be of the form: username@server. Please read carefully the instructions to fill correctly the fields.","Aquesta pàgina permet crear un compte Jabber en aquest servidor Jabber. El teu JID (Jabber IDentifier; Identificador Jabber) tindrà aquesta forma: usuari@servidor. Si us plau, llegeix amb cura les instruccions per emplenar correctament els camps."}.
|
||||
{"This page allows to unregister a Jabber account in this Jabber server.","Aquesta pàgina permet anul·lar el registre d'un compte Jabber en aquest servidor Jabber."}.
|
||||
{"This page allows to register an XMPP account in this XMPP server. Your JID (Jabber ID) will be of the form: username@server. Please read carefully the instructions to fill correctly the fields.","Aquesta pàgina permet crear un compte XMPP en aquest servidor XMPP. El teu JID (Jabber ID; Identificador Jabber) tindrà aquesta forma: usuari@servidor. Si us plau, llegeix amb cura les instruccions per emplenar correctament els camps."}.
|
||||
{"This page allows to unregister an XMPP account in this XMPP server.","Aquesta pàgina permet esborrar un compte XMPP en aquest servidor XMPP."}.
|
||||
{"This room is not anonymous","Aquesta sala no és anònima"}.
|
||||
{"This service can not process the address: ~s","Este servei no pot processar la direcció: ~s"}.
|
||||
{"Thursday","Dijous"}.
|
||||
@@ -426,7 +566,7 @@
|
||||
{"Timed out waiting for stream resumption","Massa temps esperant que es resumisca la connexió"}.
|
||||
{"Time","Data"}.
|
||||
{"To register, visit ~s","Per a registrar-te, visita ~s"}.
|
||||
{"To ~s","A ~s"}.
|
||||
{"To ~ts","A ~ts"}.
|
||||
{"Token TTL","Token TTL"}.
|
||||
{"Too many active bytestreams","N'hi ha massa Bytestreams actius"}.
|
||||
{"Too many CAPTCHA requests","Massa peticions de CAPTCHA"}.
|
||||
@@ -438,19 +578,20 @@
|
||||
{"Too many unacked stanzas","Massa missatges sense haver reconegut la seva recepció"}.
|
||||
{"Too many users in this conference","N'hi ha massa usuaris en esta sala de conferència"}.
|
||||
{"To","Per a"}.
|
||||
{"Total rooms","Nombre total de sales"}.
|
||||
{"Traffic rate limit is exceeded","El llímit de tràfic ha sigut sobrepassat"}.
|
||||
{"Total rooms","Sales totals"}.
|
||||
{"Traffic rate limit is exceeded","El límit de tràfic ha sigut sobrepassat"}.
|
||||
{"Transactions Aborted:","Transaccions Avortades:"}.
|
||||
{"Transactions Committed:","Transaccions Realitzades:"}.
|
||||
{"Transactions Logged:","Transaccions registrades:"}.
|
||||
{"Transactions Restarted:","Transaccions reiniciades:"}.
|
||||
{"~ts's Offline Messages Queue","~ts's cua de missatges offline"}.
|
||||
{"Tuesday","Dimarts"}.
|
||||
{"Unable to generate a CAPTCHA","No s'ha pogut generar un CAPTCHA"}.
|
||||
{"Unable to register route on existing local domain","No s'ha pogut registrar la ruta al domini local existent"}.
|
||||
{"Unauthorized","No autoritzat"}.
|
||||
{"Unexpected action","Acció inesperada"}.
|
||||
{"Unexpected error condition: ~p","Condició d'error inesperada: ~p"}.
|
||||
{"Unregister a Jabber account","Anul·lar el registre d'un compte Jabber"}.
|
||||
{"Unregister an XMPP account","Anul·lar el registre d'un compte XMPP"}.
|
||||
{"Unregister","Anul·lar el registre"}.
|
||||
{"Unselect All","Deseleccionar tots"}.
|
||||
{"Unsupported <index/> element","Element <index/> no soportat"}.
|
||||
@@ -462,13 +603,15 @@
|
||||
{"Update script","Script d'actualització"}.
|
||||
{"Update","Actualitzar"}.
|
||||
{"Uptime:","Temps en marxa:"}.
|
||||
{"URL for Archived Discussion Logs","URL dels Arxius de Discussions"}.
|
||||
{"User already exists","El usuari ja existeix"}.
|
||||
{"User JID","JID del usuari"}.
|
||||
{"User (jid)","Usuari (jid)"}.
|
||||
{"User Management","Gestió d'Usuaris"}.
|
||||
{"User removed","Usuari borrat"}.
|
||||
{"User session not found","Sessió d'usuari no trobada"}.
|
||||
{"User session terminated","Sessió d'usuari terminada"}.
|
||||
{"User ~s","Usuari ~s"}.
|
||||
{"User ~ts","Usuari ~ts"}.
|
||||
{"Username:","Nom d'usuari:"}.
|
||||
{"Users are not allowed to register accounts so quickly","Els usuaris no tenen permís per a crear comptes tan depresa"}.
|
||||
{"Users Last Activity","Última activitat d'usuari"}.
|
||||
@@ -481,18 +624,39 @@
|
||||
{"Value of '~s' should be integer","El valor de '~s' deuria ser un numero enter"}.
|
||||
{"Value 'set' of 'type' attribute is not allowed","El valor 'set' a l'atribut 'type' no és permès"}.
|
||||
{"vCard User Search","vCard recerca d'usuari"}.
|
||||
{"Virtual Hosting","Hosts virtuals"}.
|
||||
{"View Queue","Vore Cua"}.
|
||||
{"View Roster","Vore Llista de contactes"}.
|
||||
{"Virtual Hosts","Hosts virtuals"}.
|
||||
{"Visitors are not allowed to change their nicknames in this room","Els visitants no tenen permés canviar el seus Nicknames en esta sala"}.
|
||||
{"Visitors are not allowed to send messages to all occupants","Els visitants no poden enviar missatges a tots els ocupants"}.
|
||||
{"Visitor","Visitant"}.
|
||||
{"Voice request","Petició de veu"}.
|
||||
{"Voice requests are disabled in this conference","Les peticions de veu es troben desactivades en aquesta conferència"}.
|
||||
{"Wednesday","Dimecres"}.
|
||||
{"When a new subscription is processed and whenever a subscriber comes online","Quan es processa una nova subscripció i un subscriptor es connecta"}.
|
||||
{"When a new subscription is processed","Quan es processa una nova subscripció"}.
|
||||
{"When to send the last published item","Quan s'ha enviat l'última publicació"}.
|
||||
{"Whether an entity wants to receive an XMPP message body in addition to the payload format","Si una entitat vol rebre un missatge XMPP amb el format payload"}.
|
||||
{"Whether an entity wants to receive digests (aggregations) of notifications or all notifications individually","Si una entitat vol rebre resums (agregacions) de notificacions o totes les notificacions individualment"}.
|
||||
{"Whether an entity wants to receive or disable notifications","Si una entitat vol rebre notificacions o no"}.
|
||||
{"Whether owners or publisher should receive replies to items","Si el propietaris o publicadors deurien de rebre respostes als elements"}.
|
||||
{"Whether the node is a leaf (default) or a collection","Si el node es fulla (per defecte) o es una col·lecció"}.
|
||||
{"Whether to allow subscriptions","Permetre subscripcions"}.
|
||||
{"Whether to make all subscriptions temporary, based on subscriber presence","Si fer totes les subscripcions temporals, basat en la presencia del subscriptor"}.
|
||||
{"Whether to notify owners about new subscribers and unsubscribes","Si notificar als propietaris sobre noves subscripcions i desubscripcions"}.
|
||||
{"Who may associate leaf nodes with a collection","Qui pot associar nodes fulla amb una col·lecció"}.
|
||||
{"Wrong parameters in the web formulary","Paràmetres incorrectes en el formulari web"}.
|
||||
{"Wrong xmlns","El xmlns ès incorrecte"}.
|
||||
{"XMPP Account Registration","Registre de compte XMPP"}.
|
||||
{"XMPP Domains","Dominis XMPP"}.
|
||||
{"XMPP Show Value of Away","Valor 'show' de XMPP: Ausent"}.
|
||||
{"XMPP Show Value of Chat","Valor 'show' de XMPP: Disposat per a xarrar"}.
|
||||
{"XMPP Show Value of DND (Do Not Disturb)","Valor 'show' de XMPP: DND (No Molestar)"}.
|
||||
{"XMPP Show Value of XA (Extended Away)","Valor 'show' de XMPP: XA (Molt Ausent)"}.
|
||||
{"XMPP URI of Associated Publish-Subscribe Node","URI XMPP del Node Associat Publish-Subscribe"}.
|
||||
{"You are being removed from the room because of a system shutdown","Has sigut expulsat de la sala perquè el sistema va a apagar-se"}.
|
||||
{"You are not joined to the channel","No t'has unit al canal"}.
|
||||
{"You can later change your password using a Jabber client.","Podràs canviar la teva contrasenya més endavant utilitzant un client Jabber."}.
|
||||
{"You can later change your password using an XMPP client.","Podràs canviar la teva contrasenya més endavant utilitzant un client XMPP."}.
|
||||
{"You have been banned from this room","Has sigut bloquejat en aquesta sala"}.
|
||||
{"You have joined too many conferences","Has entrat en massa sales de conferència"}.
|
||||
{"You must fill in field \"Nickname\" in the form","Deus d'omplir el camp \"Nickname\" al formulari"}.
|
||||
@@ -501,7 +665,7 @@
|
||||
{"You need an x:data capable client to search","Necessites un client amb suport x:data per a poder buscar"}.
|
||||
{"Your active privacy list has denied the routing of this stanza.","La teva llista de privacitat activa ha denegat l'encaminament d'aquesta stanza."}.
|
||||
{"Your contact offline message queue is full. The message has been discarded.","La teua cua de missatges offline és plena. El missatge ha sigut descartat."}.
|
||||
{"Your Jabber account was successfully created.","El teu compte Jabber ha sigut creat correctament."}.
|
||||
{"Your Jabber account was successfully deleted.","El teu compte Jabber ha sigut esborrat correctament."}.
|
||||
{"Your subscription request and/or messages to ~s have been blocked. To unblock your subscription request, visit ~s","La teua petició de subscripció i/o missatges a ~s han sigut bloquejats. Per a desbloquejar-los, visita ~s"}.
|
||||
{"Your XMPP account was successfully registered.","El teu compte XMPP ha sigut creat correctament."}.
|
||||
{"Your XMPP account was successfully unregistered.","El teu compte XMPP ha sigut esborrat correctament."}.
|
||||
{"You're not allowed to create nodes","No tens permís per a crear nodes"}.
|
||||
|
||||
-2585
File diff suppressed because it is too large
Load Diff
+73
-76
@@ -1,14 +1,23 @@
|
||||
%% -*- coding: utf-8 -*-
|
||||
%% Generated automatically
|
||||
%% DO NOT EDIT: run `make translations` instead
|
||||
%% To improve translations please read:
|
||||
%% https://docs.ejabberd.im/developer/extending-ejabberd/localization/
|
||||
|
||||
{" has set the subject to: "," změnil(a) téma na: "}.
|
||||
{"A friendly name for the node","Přívětivé jméno pro uzel"}.
|
||||
{"A password is required to enter this room","Pro vstup do místnosti musíte zadat heslo"}.
|
||||
{"Accept","Přijmout"}.
|
||||
{"Access denied by service policy","Přístup byl zamítnut nastavením služby"}.
|
||||
{"Action on user","Akce aplikovaná na uživatele"}.
|
||||
{"Add Jabber ID","Přidat Jabber ID"}.
|
||||
{"Add New","Přidat nový"}.
|
||||
{"Add User","Přidat uživatele"}.
|
||||
{"Administration","Administrace"}.
|
||||
{"Administration of ","Administrace "}.
|
||||
{"Administration","Administrace"}.
|
||||
{"Administrator privileges required","Potřebujete práva administrátora"}.
|
||||
{"All activity","Všechny aktivity"}.
|
||||
{"All Users","Všichni uživatelé"}.
|
||||
{"Allow this Jabber ID to subscribe to this pubsub node?","Povolit tomuto Jabber ID odebírat tento pubsub uzel?"}.
|
||||
{"Allow users to change the subject","Povolit uživatelům měnit téma místnosti"}.
|
||||
{"Allow users to query other users","Povolit uživatelům odesílat požadavky (query) ostatním uživatelům"}.
|
||||
{"Allow users to send invites","Povolit uživatelům posílání pozvánek"}.
|
||||
@@ -16,9 +25,8 @@
|
||||
{"Allow visitors to change nickname","Povolit návštěvníkům měnit přezdívku"}.
|
||||
{"Allow visitors to send private messages to","Povolit návštěvníkům odesílat soukromé zprávy"}.
|
||||
{"Allow visitors to send status text in presence updates","Povolit návštěvníkům posílat stavové zprávy ve statusu"}.
|
||||
{"All Users","Všichni uživatelé"}.
|
||||
{"Allow visitors to send voice requests","Povolit uživatelům posílat žádosti o voice práva"}.
|
||||
{"Announcements","Oznámení"}.
|
||||
{"A password is required to enter this room","Pro vstup do místnosti musíte zadat heslo"}.
|
||||
{"April",". dubna"}.
|
||||
{"August",". srpna"}.
|
||||
{"Automatic node creation is not enabled","Automatické vytváření uzlů není povoleno"}.
|
||||
@@ -45,34 +53,32 @@
|
||||
{"Chatroom is stopped","Místnost zastavena"}.
|
||||
{"Chatrooms","Místnosti"}.
|
||||
{"Choose a username and password to register with this server","Zadejte jméno uživatele a heslo pro registraci na tomto serveru"}.
|
||||
{"Choose modules to stop","Vyberte moduly, které mají být zastaveny"}.
|
||||
{"Choose storage type of tables","Vyberte typ úložiště pro tabulky"}.
|
||||
{"Choose whether to approve this entity's subscription.","Zvolte, zda chcete schválit odebírání touto entitou."}.
|
||||
{"City","Město"}.
|
||||
{"Commands","Příkazy"}.
|
||||
{"Conference room does not exist","Místnost neexistuje"}.
|
||||
{"Configuration","Konfigurace"}.
|
||||
{"Configuration of room ~s","Konfigurace místnosti ~s"}.
|
||||
{"Configuration","Konfigurace"}.
|
||||
{"Connected Resources:","Připojené zdroje:"}.
|
||||
{"Country","Země"}.
|
||||
{"CPU Time:","Čas procesoru:"}.
|
||||
{"Database","Databáze"}.
|
||||
{"Database failure","Chyba databáze"}.
|
||||
{"Database Tables at ~p","Databázové tabulky na ~p"}.
|
||||
{"Database Tables Configuration at ","Konfigurace databázových tabulek "}.
|
||||
{"Database","Databáze"}.
|
||||
{"December",". prosince"}.
|
||||
{"Default users as participants","Uživatelé jsou implicitně členy"}.
|
||||
{"Delete message of the day on all hosts","Smazat zprávu dne na všech hostitelích"}.
|
||||
{"Delete message of the day","Smazat zprávu dne"}.
|
||||
{"Delete Selected","Smazat vybrané"}.
|
||||
{"Delete User","Smazat uživatele"}.
|
||||
{"Deliver event notifications","Doručovat upozornění na události"}.
|
||||
{"Deliver payloads with event notifications","Doručovat náklad s upozorněním na událost"}.
|
||||
{"Description:","Popis:"}.
|
||||
{"Disc only copy","Jen kopie disku"}.
|
||||
{"Displayed Groups:","Zobrazené skupiny:"}.
|
||||
{"Don't tell your password to anybody, not even the administrators of the Jabber server.","Nikdy nikomu nesdělujte své heslo, ani administrátorovi serveru Jabberu."}.
|
||||
{"Dump Backup to Text File at ","Uložit zálohu do textového souboru na "}.
|
||||
{"Dump to Text File","Uložit do textového souboru"}.
|
||||
{"Duplicated groups are not allowed by RFC6121","Duplicitní skupiny nejsou povoleny dle RFC6121"}.
|
||||
{"Edit Properties","Upravit vlastnosti"}.
|
||||
{"Either approve or decline the voice request.","Povolit nebo odmítnout voice žádost."}.
|
||||
{"ejabberd MUC module","ejabberd MUC modul"}.
|
||||
@@ -83,19 +89,18 @@
|
||||
{"ejabberd Web Admin","Webová administrace ejabberd"}.
|
||||
{"Elements","Položek"}.
|
||||
{"Email","E-mail"}.
|
||||
{"Empty password","Prázdné heslo"}.
|
||||
{"Enable logging","Zaznamenávat konverzace"}.
|
||||
{"Enable message archiving","Povolit ukládání historie zpráv"}.
|
||||
{"Enabling push without 'node' attribute is not supported","Aktivováno push bez atributu 'node' není podporováno"}.
|
||||
{"End User Session","Ukončit sezení uživatele"}.
|
||||
{"Enter list of {Module, [Options]}","Vložte seznam modulů {Modul, [Parametry]}"}.
|
||||
{"Enter nickname you want to register","Zadejte přezdívku, kterou chcete zaregistrovat"}.
|
||||
{"Enter path to backup file","Zadajte cestu k souboru se zálohou"}.
|
||||
{"Enter path to jabberd14 spool dir","Zadejte cestu k jabberd14 spool adresáři"}.
|
||||
{"Enter path to jabberd14 spool file","Zadejte cestu k spool souboru jabberd14"}.
|
||||
{"Enter path to text file","Zadajte cestu k textovému souboru"}.
|
||||
{"Enter the text you see","Zadejte text, který vidíte"}.
|
||||
{"Erlang Jabber Server","Erlang Jabber Server"}.
|
||||
{"Error","Chyba"}.
|
||||
{"Exclude Jabber IDs from CAPTCHA challenge","Vyloučit Jabber ID z procesu CAPTCHA ověřování"}.
|
||||
{"Export all tables as SQL queries to a file:","Zálohovat všechny tabulky jako SQL dotazy do souboru:"}.
|
||||
{"Export data of all users in the server to PIEFXIS files (XEP-0227):","Exportovat všechny uživatele do souboru ve formátu PIEFXIS (XEP-0227):"}.
|
||||
{"Export data of users in a host to PIEFXIS files (XEP-0227):","Exportovat uživatele na hostiteli do souboru ve formátu PIEFXIS (XEP-0227):"}.
|
||||
@@ -111,7 +116,6 @@
|
||||
{"File larger than ~w bytes","Soubor větší než ~w bytů"}.
|
||||
{"Friday","Pátek"}.
|
||||
{"From","Od"}.
|
||||
{"From ~s","Od ~s"}.
|
||||
{"Full Name","Celé jméno"}.
|
||||
{"Get Number of Online Users","Získat počet online uživatelů"}.
|
||||
{"Get Number of Registered Users","Získat počet registrovaných uživatelů"}.
|
||||
@@ -119,16 +123,16 @@
|
||||
{"Get User Password","Získat heslo uživatele"}.
|
||||
{"Get User Statistics","Získat statistiky uživatele"}.
|
||||
{"Given Name","Křestní jméno"}.
|
||||
{"Group ","Skupina "}.
|
||||
{"Grant voice to this person?","Udělit voice práva této osobě?"}.
|
||||
{"Group","Skupina"}.
|
||||
{"Groups","Skupiny"}.
|
||||
{"has been banned","byl(a) zablokován(a)"}.
|
||||
{"has been kicked because of an affiliation change","byl(a) vyhozen(a) kvůli změně přiřazení"}.
|
||||
{"has been kicked because of a system shutdown","byl(a) vyhozen(a), protože dojde k vypnutí systému"}.
|
||||
{"has been kicked because of an affiliation change","byl(a) vyhozen(a) kvůli změně přiřazení"}.
|
||||
{"has been kicked because the room has been changed to members-only","byl(a) vyhozen(a), protože mísnost je nyní pouze pro členy"}.
|
||||
{"has been kicked","byl(a) vyhozen(a) z místnosti"}.
|
||||
{" has set the subject to: "," změnil(a) téma na: "}.
|
||||
{"Host","Hostitel"}.
|
||||
{"Host unknown","Neznámý hostitel"}.
|
||||
{"Host","Hostitel"}.
|
||||
{"If you don't see the CAPTCHA image here, visit the web page.","Pokud zde nevidíte obrázek CAPTCHA, přejděte na webovou stránku."}.
|
||||
{"Import Directory","Import adresáře"}.
|
||||
{"Import File","Import souboru"}.
|
||||
@@ -153,10 +157,9 @@
|
||||
{"IP addresses","IP adresy"}.
|
||||
{"is now known as","se přejmenoval(a) na"}.
|
||||
{"It is not allowed to send error messages to the room. The participant (~s) has sent an error message (~s) and got kicked from the room","Není povoleno posílat chybové zprávy do místnosti. Účastník (~s) odeslal chybovou zprávu (~s) a byl vyhozen z místnosti"}.
|
||||
{"It is not allowed to send private messages","Je zakázáno posílat soukromé zprávy"}.
|
||||
{"It is not allowed to send private messages of type \"groupchat\"","Není dovoleno odeslání soukromé zprávy typu \"skupinová zpráva\" "}.
|
||||
{"It is not allowed to send private messages to the conference","Není povoleno odesílat soukromé zprávy v této místnosti"}.
|
||||
{"Jabber Account Registration","Registrace účtu Jabberu"}.
|
||||
{"It is not allowed to send private messages","Je zakázáno posílat soukromé zprávy"}.
|
||||
{"Jabber ID","Jabber ID"}.
|
||||
{"January",". ledna"}.
|
||||
{"joins the room","vstoupil(a) do místnosti"}.
|
||||
@@ -167,7 +170,6 @@
|
||||
{"Last month","Poslední měsíc"}.
|
||||
{"Last year","Poslední rok"}.
|
||||
{"leaves the room","opustil(a) místnost"}.
|
||||
{"List of modules to start","Seznam modulů, které mají být spuštěné"}.
|
||||
{"List of rooms","Seznam místností"}.
|
||||
{"Low level update script","Nízkoúrovňový aktualizační skript"}.
|
||||
{"Make participants list public","Nastavit seznam účastníků jako veřejný"}.
|
||||
@@ -179,22 +181,22 @@
|
||||
{"Make room public searchable","Nastavit místnost jako veřejnou"}.
|
||||
{"Malformed username","Chybně formátováné jméno uživatele"}.
|
||||
{"March",". března"}.
|
||||
{"Max payload size in bytes","Maximální náklad v bajtech"}.
|
||||
{"Maximum Number of Occupants","Počet účastníků"}.
|
||||
{"May",". května"}.
|
||||
{"Members:","Členové:"}.
|
||||
{"Membership is required to enter this room","Pro vstup do místnosti musíte být členem"}.
|
||||
{"Memorize your password, or write it in a paper placed in a safe place. In Jabber there isn't an automated way to recover your password if you forget it.","Svoje heslo si zapamatujte, nebo si jej poznamenejte na papírek a ten uschovejte v bezpečí. Jabber nemá žádný automatizovaný způsob obnovy hesla."}.
|
||||
{"Memory","Paměť"}.
|
||||
{"Message body","Tělo zprávy"}.
|
||||
{"Message not found in forwarded payload","Zpráva nebyla nalezena v přeposlaném obsahu"}.
|
||||
{"Middle Name","Druhé jméno"}.
|
||||
{"Minimum interval between voice requests (in seconds)","Minimální interval mezi žádostmi o voice práva (v sekundách)"}.
|
||||
{"Moderator privileges required","Potřebujete práva moderátora"}.
|
||||
{"Moderator","Moderátor"}.
|
||||
{"Modified modules","Aktualizované moduly"}.
|
||||
{"Module failed to handle the query","Modul chyboval při zpracování dotazu"}.
|
||||
{"Modules","Moduly"}.
|
||||
{"Monday","Pondělí"}.
|
||||
{"Multicast","Multicast"}.
|
||||
{"Multiple <item/> elements are not allowed by RFC6121","Vícenásobný element <item/> není povolen dle RFC6121"}.
|
||||
{"Multi-User Chat","Víceuživatelský chat"}.
|
||||
{"Name","Jméno"}.
|
||||
{"Name:","Jméno:"}.
|
||||
@@ -202,20 +204,14 @@
|
||||
{"Neither 'role' nor 'affiliation' attribute found","Nebyl nalezen atribut 'role' ani 'affiliation'"}.
|
||||
{"Never","Nikdy"}.
|
||||
{"New Password:","Nové heslo:"}.
|
||||
{"Nickname","Přezdívka"}.
|
||||
{"Nickname Registration at ","Registrace přezdívky na "}.
|
||||
{"Nickname ~s does not exist in the room","Přezdívka ~s v místnosti neexistuje"}.
|
||||
{"Nickname","Přezdívka"}.
|
||||
{"No 'affiliation' attribute found","Chybějící atribut 'affiliation'"}.
|
||||
{"No available resource found","Nebyl nalezen žádný dostupný zdroj"}.
|
||||
{"No body provided for announce message","Zpráva neobsahuje text"}.
|
||||
{"No data form found","Nebyl nalezen datový formulář"}.
|
||||
{"No Data","Žádná data"}.
|
||||
{"Node already exists","Uzel již existuje"}.
|
||||
{"Node index not found","Index uzlu nebyl nalezen"}.
|
||||
{"Node not found","Uzel nenalezen"}.
|
||||
{"Nodeprep has failed","Nodeprep chyboval"}.
|
||||
{"Node ~p","Uzel ~p"}.
|
||||
{"Nodes","Uzly"}.
|
||||
{"No features available","Žádné funce nejsou dostupné"}.
|
||||
{"No hook has processed this command","Žádný hook nebyl zpracován tímto příkazem"}.
|
||||
{"No info about last activity found","Nebyla žádná informace o poslední aktivitě"}.
|
||||
@@ -223,8 +219,6 @@
|
||||
{"No items found in this query","Žádné položky nebyly nalezeny v tomto dotazu"}.
|
||||
{"No limit","Bez limitu"}.
|
||||
{"No module is handling this query","Žádný modul neobsluhuje tento dotaz"}.
|
||||
{"No 'modules' found in data form","Chybějící atribut 'modules' v datovém formuláři"}.
|
||||
{"None","Nic"}.
|
||||
{"No node specified","Žádný uzel nebyl specifikován"}.
|
||||
{"No 'password' found in data form","Chybějící atribut 'password' v datovém formuláři"}.
|
||||
{"No 'password' found in this query","Chybějící atribut 'password' v tomto dotazu"}.
|
||||
@@ -235,10 +229,22 @@
|
||||
{"No running node found","Nebyl nalezen žádný běžící uzel"}.
|
||||
{"No services available","Žádné služby nejsou dostupné"}.
|
||||
{"No statistics found for this item","Nebyly nalezeny statistiky pro uvedenou položku"}.
|
||||
{"Not Found","Nenalezeno"}.
|
||||
{"No 'to' attribute found in the invitation","Chybějící atribut 'to' v pozvánce"}.
|
||||
{"Node already exists","Uzel již existuje"}.
|
||||
{"Node ID","ID uzlu"}.
|
||||
{"Node index not found","Index uzlu nebyl nalezen"}.
|
||||
{"Node not found","Uzel nenalezen"}.
|
||||
{"Node ~p","Uzel ~p"}.
|
||||
{"Nodeprep has failed","Nodeprep chyboval"}.
|
||||
{"Nodes","Uzly"}.
|
||||
{"None","Nic"}.
|
||||
{"Not Found","Nenalezeno"}.
|
||||
{"Not subscribed","Není odebíráno"}.
|
||||
{"Notify subscribers when items are removed from the node","Upozornit odběratele na odstranění položek z uzlu"}.
|
||||
{"Notify subscribers when the node configuration changes","Upozornit odběratele na změnu nastavení uzlu"}.
|
||||
{"Notify subscribers when the node is deleted","Upozornit odběratele na smazání uzlu"}.
|
||||
{"November",". listopadu"}.
|
||||
{"Number of occupants","Počet účastníků"}.
|
||||
{"Number of online users","Počet online uživatelů"}.
|
||||
{"Number of registered users","Počet registrovaných uživatelů"}.
|
||||
{"October",". října"}.
|
||||
@@ -246,9 +252,10 @@
|
||||
{"Offline Messages:","Offline zprávy:"}.
|
||||
{"OK","OK"}.
|
||||
{"Old Password:","Současné heslo:"}.
|
||||
{"Online","Online"}.
|
||||
{"Online Users","Připojení uživatelé"}.
|
||||
{"Online Users:","Připojení uživatelé:"}.
|
||||
{"Online","Online"}.
|
||||
{"Only deliver notifications to available users","Doručovat upozornění jen právě přihlášeným uživatelům"}.
|
||||
{"Only <enable/> or <disable/> tags are allowed","Pouze značky <enable/> nebo <disable/>jsou povoleny"}.
|
||||
{"Only <list/> element is allowed in this query","Pouze element <list/> je povolen v tomto dotazu"}.
|
||||
{"Only members may query archives of this room","Pouze moderátoři mají povoleno měnit téma místnosti"}.
|
||||
@@ -264,69 +271,67 @@
|
||||
{"Outgoing s2s Connections:","Odchozí s2s spojení:"}.
|
||||
{"Owner privileges required","Jsou vyžadována práva vlastníka"}.
|
||||
{"Packet","Paket"}.
|
||||
{"Parse failed","Došlo k chybě při parsování"}.
|
||||
{"Password","Heslo"}.
|
||||
{"Password:","Heslo:"}.
|
||||
{"Participant","Účastník"}.
|
||||
{"Password Verification","Ověření hesla"}.
|
||||
{"Password Verification:","Ověření hesla:"}.
|
||||
{"Password","Heslo"}.
|
||||
{"Password:","Heslo:"}.
|
||||
{"Path to Dir","Cesta k adresáři"}.
|
||||
{"Path to File","Cesta k souboru"}.
|
||||
{"Pending","Čekající"}.
|
||||
{"Period: ","Čas: "}.
|
||||
{"Ping","Ping"}.
|
||||
{"Persist items to storage","Uložit položky natrvalo do úložiště"}.
|
||||
{"Ping query is incorrect","Ping dotaz je nesprávný"}.
|
||||
{"Ping","Ping"}.
|
||||
{"Please note that these options will only backup the builtin Mnesia database. If you are using the ODBC module, you also need to backup your SQL database separately.","Podotýkáme, že tato nastavení budou zálohována do zabudované databáze Mnesia. Pokud používáte ODBC modul, musíte zálohovat svoji SQL databázi samostatně."}.
|
||||
{"Please, wait for a while before sending new voice request","Prosím, počkejte chvíli před posláním nové žádosti o voice práva"}.
|
||||
{"Pong","Pong"}.
|
||||
{"Possessing 'ask' attribute is not allowed by RFC6121","Atribut 'ask' není povolen dle RFC6121"}.
|
||||
{"Present real Jabber IDs to","Odhalovat skutečná Jabber ID"}.
|
||||
{"private, ","soukromá, "}.
|
||||
{"Publish-Subscribe","Publish-Subscribe"}.
|
||||
{"PubSub subscriber request","Žádost odběratele PubSub"}.
|
||||
{"Purge all items when the relevant publisher goes offline","Smazat všechny položky, pokud se příslušný poskytovatel odpojí"}.
|
||||
{"Queries to the conference members are not allowed in this room","Požadavky (queries) na členy místnosti nejsou v této místnosti povolené"}.
|
||||
{"Query to another users is forbidden","Dotaz na jiné uživatele je zakázán"}.
|
||||
{"RAM and disc copy","Kopie RAM a disku"}.
|
||||
{"RAM copy","Kopie RAM"}.
|
||||
{"Really delete message of the day?","Skutečně smazat zprávu dne?"}.
|
||||
{"Recipient is not in the conference room","Příjemce se nenachází v místnosti"}.
|
||||
{"Register a Jabber account","Zaregistrujte si účet Jabberu"}.
|
||||
{"Registered Users","Registrovaní uživatelé"}.
|
||||
{"Registered Users:","Registrovaní uživatelé:"}.
|
||||
{"Register","Zaregistrovat se"}.
|
||||
{"Remote copy","Vzdálená kopie"}.
|
||||
{"Remove All Offline Messages","Odstranit všechny offline zprávy"}.
|
||||
{"Remove","Odstranit"}.
|
||||
{"Remove User","Odstranit uživatele"}.
|
||||
{"Remove","Odstranit"}.
|
||||
{"Replaced by new connection","Nahrazeno novým spojením"}.
|
||||
{"Resources","Zdroje"}.
|
||||
{"Restart","Restart"}.
|
||||
{"Restart Service","Restartovat službu"}.
|
||||
{"Restart","Restart"}.
|
||||
{"Restore Backup from File at ","Obnovit zálohu ze souboru na "}.
|
||||
{"Restore binary backup after next ejabberd restart (requires less memory):","Obnovit binární zálohu při následujícím restartu ejabberd (vyžaduje méně paměti):"}.
|
||||
{"Restore binary backup immediately:","Okamžitě obnovit binární zálohu:"}.
|
||||
{"Restore","Obnovit"}.
|
||||
{"Restore plain text backup immediately:","Okamžitě obnovit zálohu z textového souboru:"}.
|
||||
{"Restore","Obnovit"}.
|
||||
{"Roles for which Presence is Broadcasted","Role, pro které je zpráva o stavu šířena"}.
|
||||
{"Room Configuration","Nastavení místnosti"}.
|
||||
{"Room creation is denied by service policy","Pravidla služby nepovolují vytvořit místnost"}.
|
||||
{"Room description","Popis místnosti"}.
|
||||
{"Room Occupants","Počet účastníků"}.
|
||||
{"Room title","Název místnosti"}.
|
||||
{"Roster module has failed","Modul Roster chyboval"}.
|
||||
{"Roster of ","Seznam kontaktů "}.
|
||||
{"Roster","Seznam kontaktů"}.
|
||||
{"Roster groups allowed to subscribe","Skupiny kontaktů, které mohou odebírat"}.
|
||||
{"Roster size","Velikost seznamu kontaktů"}.
|
||||
{"RPC Call Error","Chyba RPC volání"}.
|
||||
{"Running Nodes","Běžící uzly"}.
|
||||
{"Saturday","Sobota"}.
|
||||
{"Scan failed","Při skenování došlo k chybě"}.
|
||||
{"Script check","Kontrola skriptu"}.
|
||||
{"Search Results for ","Výsledky hledání pro "}.
|
||||
{"Search users in ","Hledat uživatele v "}.
|
||||
{"Send announcement to all online users","Odeslat oznámení všem online uživatelům"}.
|
||||
{"Send announcement to all online users on all hosts","Odeslat oznámení všem online uživatelům na všech hostitelích"}.
|
||||
{"Send announcement to all users","Odeslat oznámení všem uživatelům"}.
|
||||
{"Send announcement to all online users","Odeslat oznámení všem online uživatelům"}.
|
||||
{"Send announcement to all users on all hosts","Odeslat oznámení všem uživatelům na všech hostitelích"}.
|
||||
{"Send announcement to all users","Odeslat oznámení všem uživatelům"}.
|
||||
{"September",". září"}.
|
||||
{"Server connections to local subdomains are forbidden","Serverová spojení k lokálním subdoménám je zakázáno"}.
|
||||
{"Server:","Server:"}.
|
||||
{"Set message of the day and send to online users","Nastavit zprávu dne a odeslat ji online uživatelům"}.
|
||||
{"Set message of the day on all hosts and send to online users","Nastavit zprávu dne a odeslat ji online uživatelům"}.
|
||||
@@ -334,15 +339,11 @@
|
||||
{"Show Integral Table","Zobrazit kompletní tabulku"}.
|
||||
{"Show Ordinary Table","Zobrazit běžnou tabulku"}.
|
||||
{"Shut Down Service","Vypnout službu"}.
|
||||
{"~s invites you to the room ~s","~s vás zve do místnosti ~s"}.
|
||||
{"Some Jabber clients can store your password in the computer, but you should do this only in your personal computer for safety reasons.","Někteří klienti umí uložit vaše heslo na disk počítače. Tuto funkci používejte, pouze pokud věříte zabezpečení svého počítače."}.
|
||||
{"~s's Offline Messages Queue","Fronta offline zpráv uživatele ~s"}.
|
||||
{"Start Modules at ","Spustit moduly na "}.
|
||||
{"Start Modules","Spustit moduly"}.
|
||||
{"Specify the access model","Uveďte přístupový model"}.
|
||||
{"Specify the event message type","Zvolte typ zpráv pro události"}.
|
||||
{"Specify the publisher model","Specifikovat model pro publikování"}.
|
||||
{"Statistics of ~p","Statistiky ~p"}.
|
||||
{"Statistics","Statistiky"}.
|
||||
{"Stop Modules at ","Zastavit moduly na "}.
|
||||
{"Stop Modules","Zastavit moduly"}.
|
||||
{"Stopped Nodes","Zastavené uzly"}.
|
||||
{"Stop","Stop"}.
|
||||
{"Storage Type","Typ úložiště"}.
|
||||
@@ -351,6 +352,7 @@
|
||||
{"Subject","Předmět"}.
|
||||
{"Submit","Odeslat"}.
|
||||
{"Submitted","Odeslané"}.
|
||||
{"Subscriber Address","Adresa odběratele"}.
|
||||
{"Subscription","Přihlášení"}.
|
||||
{"Subscriptions are not allowed","Předplatné není povoleno"}.
|
||||
{"Sunday","Neděle"}.
|
||||
@@ -358,24 +360,21 @@
|
||||
{"That nickname is registered by another person","Přezdívka je zaregistrována jinou osobou"}.
|
||||
{"The CAPTCHA is valid.","CAPTCHA souhlasí."}.
|
||||
{"The CAPTCHA verification has failed","Ověření CAPTCHA se nezdařilo"}.
|
||||
{"The collections with which a node is affiliated","Kolekce, se kterými je uzel spřízněn"}.
|
||||
{"The feature requested is not supported by the conference","Požadovaná vlastnost není podporována touto místností"}.
|
||||
{"The password contains unacceptable characters","Heslo obsahuje nepovolené znaky"}.
|
||||
{"the password is","heslo je"}.
|
||||
{"The password is too weak","Heslo je příliš slabé"}.
|
||||
{"The password of your Jabber account was successfully changed.","Heslo vašeho účtu Jabberu bylo úspěšně změněno."}.
|
||||
{"the password is","heslo je"}.
|
||||
{"The query is only allowed from local users","Dotaz je povolen pouze pro místní uživatele"}.
|
||||
{"The query must not contain <item/> elements","Dotaz nesmí obsahovat elementy <item/>"}.
|
||||
{"There was an error changing the password: ","Při změně hesla došlo k chybě: "}.
|
||||
{"The stanza MUST contain only one <active/> element, one <default/> element, or one <list/> element","Stanza MUSÍ obsahovat pouze jeden element <active/>, jeden element <default/> nebo jeden element <list/>"}.
|
||||
{"There was an error creating the account: ","Při vytváření účtu došlo k chybě:"}.
|
||||
{"There was an error deleting the account: ","Při mazání účtu došlo k chybě: "}.
|
||||
{"The stanza MUST contain only one <active/> element, one <default/> element, or one <list/> element","Stanza MUSÍ obsahovat pouze jeden element <active/>, jeden element <default/> nebo jeden element <list/>"}.
|
||||
{"This is case insensitive: macbeth is the same that MacBeth and Macbeth.","Zde nezáleží na velikosti písmen: macbeth je stejný jako MacBeth a Macbeth."}.
|
||||
{"This page allows to create a Jabber account in this Jabber server. Your JID (Jabber IDentifier) will be of the form: username@server. Please read carefully the instructions to fill correctly the fields.","Na této stránce si můžete vytvořit účet na tomto serveru Jabberu. Vaše JID (Jabber IDentifikátor) bude mít tvar: uživatelskéjméno@server. Přečtěte si prosím pozorně instrukce pro vyplnění údajů."}.
|
||||
{"This page allows to unregister a Jabber account in this Jabber server.","Zde můžete zrušit registraci účtu na tomto serveru Jabberu."}.
|
||||
{"This room is not anonymous","Tato místnost není anonymní"}.
|
||||
{"Thursday","Čtvrtek"}.
|
||||
{"Time","Čas"}.
|
||||
{"Time delay","Časový posun"}.
|
||||
{"Time","Čas"}.
|
||||
{"To register, visit ~s","Pokud se chcete zaregistrovat, navštivte ~s"}.
|
||||
{"Token TTL","Token TTL"}.
|
||||
{"Too many active bytestreams","Příliš mnoho aktivních bytestreamů"}.
|
||||
{"Too many CAPTCHA requests","Přiliš mnoho CAPTCHA žádostí"}.
|
||||
@@ -385,8 +384,6 @@
|
||||
{"Too many unacked stanzas","Příliš mnoho nepotvrzených stanz"}.
|
||||
{"Too many users in this conference","Přiliš mnoho uživatelů v této místnosti"}.
|
||||
{"To","Pro"}.
|
||||
{"To register, visit ~s","Pokud se chcete zaregistrovat, navštivte ~s"}.
|
||||
{"To ~s","Pro ~s"}.
|
||||
{"Total rooms","Celkem místností"}.
|
||||
{"Traffic rate limit is exceeded","Byl překročen limit"}.
|
||||
{"Transactions Aborted:","Transakcí zrušených:"}.
|
||||
@@ -398,26 +395,25 @@
|
||||
{"Unable to register route on existing local domain","Není možné zaregistrovat routu na existující místní doménu"}.
|
||||
{"Unauthorized","Nemáte oprávnění"}.
|
||||
{"Unexpected action","Neočekávaná akce"}.
|
||||
{"Unregister a Jabber account","Zrušte registraci účtu Jabberu"}.
|
||||
{"Unregister","Zrušit registraci"}.
|
||||
{"Unsupported <index/> element","Nepodporovaný <index/> element"}.
|
||||
{"Update","Aktualizovat"}.
|
||||
{"Update message of the day (don't send)","Aktualizovat zprávu dne (neodesílat)"}.
|
||||
{"Update message of the day on all hosts (don't send)","Aktualizovat zprávu dne pro všechny hostitele (neodesílat)"}.
|
||||
{"Update ~p","Aktualizovat ~p"}.
|
||||
{"Update plan","Aktualizovat plán"}.
|
||||
{"Update script","Aktualizované skripty"}.
|
||||
{"Update","Aktualizovat"}.
|
||||
{"Uptime:","Čas běhu:"}.
|
||||
{"User already exists","Uživatel již existuje"}.
|
||||
{"User JID","Jabber ID uživatele"}.
|
||||
{"User (jid)","Uživatel (JID)"}.
|
||||
{"User Management","Správa uživatelů"}.
|
||||
{"Username:","Uživatelské jméno:"}.
|
||||
{"Users are not allowed to register accounts so quickly","Je zakázáno registrovat účty v tak rychlém sledu"}.
|
||||
{"User session not found","Sezení uživatele nebylo nalezeno"}.
|
||||
{"User session terminated","Sezení uživatele bylo ukončeno"}.
|
||||
{"Username:","Uživatelské jméno:"}.
|
||||
{"Users are not allowed to register accounts so quickly","Je zakázáno registrovat účty v tak rychlém sledu"}.
|
||||
{"Users Last Activity","Poslední aktivita uživatele"}.
|
||||
{"Users","Uživatelé"}.
|
||||
{"User ~s","Uživatel ~s"}.
|
||||
{"User","Uživatel"}.
|
||||
{"Validate","Ověřit"}.
|
||||
{"Value 'get' of 'type' attribute is not allowed","Hodnota 'get' atrubutu 'type' není povolena"}.
|
||||
@@ -427,12 +423,14 @@
|
||||
{"Value 'set' of 'type' attribute is not allowed","Hodnota 'set' atrubutu 'type' není povolena"}.
|
||||
{"vCard User Search","Hledání uživatelů ve vizitkách"}.
|
||||
{"Virtual Hosts","Virtuální hostitelé"}.
|
||||
{"Visitor","Návštěvník"}.
|
||||
{"Visitors are not allowed to change their nicknames in this room","Návštěvníkům této místnosti je zakázáno měnit přezdívku"}.
|
||||
{"Visitors are not allowed to send messages to all occupants","Návštevníci nemají povoleno zasílat zprávy všem účastníkům v této místnosti"}.
|
||||
{"Voice requests are disabled in this conference","Voice žádosti jsou v této místnosti zakázány"}.
|
||||
{"Voice request","Žádost o voice práva"}.
|
||||
{"Wednesday","Středa"}.
|
||||
{"You can later change your password using a Jabber client.","Později můžete své heslo změnit pomocí klienta Jabberu."}.
|
||||
{"When to send the last published item","Kdy odeslat poslední publikovanou položku"}.
|
||||
{"Whether to allow subscriptions","Povolit odebírání"}.
|
||||
{"You have been banned from this room","Byl jste vyloučen z této místnosti"}.
|
||||
{"You have joined too many conferences","Vstoupil jste do příliš velkého množství místností"}.
|
||||
{"You must fill in field \"Nickname\" in the form","Musíte vyplnit políčko \"Přezdívka\" ve formuláři"}.
|
||||
@@ -441,6 +439,5 @@
|
||||
{"You need an x:data capable client to search","K vyhledávání potřebujete klienta podporujícího x:data"}.
|
||||
{"Your active privacy list has denied the routing of this stanza.","Vaše nastavení soukromí znemožnilo směrování této stance."}.
|
||||
{"Your contact offline message queue is full. The message has been discarded.","Fronta offline zpráv pro váš kontakt je plná. Zpráva byla zahozena."}.
|
||||
{"Your subscription request and/or messages to ~s have been blocked. To unblock your subscription request, visit ~s","Nesmíte posílat zprávy na ~s. Pro povolení navštivte ~s"}.
|
||||
{"You're not allowed to create nodes","Nemáte povoleno vytvářet uzly"}.
|
||||
{"Your Jabber account was successfully created.","Váš účet Jabberu byl úspěšně vytvořen."}.
|
||||
{"Your Jabber account was successfully deleted.","Váš účet Jabberu byl úspěšně smazán."}.
|
||||
|
||||
-2594
File diff suppressed because it is too large
Load Diff
+405
-180
@@ -1,144 +1,210 @@
|
||||
%% -*- coding: utf-8 -*-
|
||||
%% Generated automatically
|
||||
%% DO NOT EDIT: run `make translations` instead
|
||||
%% To improve translations please read:
|
||||
%% https://docs.ejabberd.im/developer/extending-ejabberd/localization/
|
||||
|
||||
{" (Add * to the end of field to match substring)"," (Fügen Sie * am Ende des Feldes hinzu um nach Teilzeichenketten zu suchen)"}.
|
||||
{" has set the subject to: "," hat das Thema geändert auf: "}.
|
||||
{"# participants","# Teilnehmer"}.
|
||||
{"A description of the node","Eine Beschreibung des Knotens"}.
|
||||
{"A friendly name for the node","Ein benutzerfreundlicher Name für den Knoten"}.
|
||||
{"A password is required to enter this room","Ein Passwort ist erforderlich um diesen Raum zu betreten"}.
|
||||
{"A Web Page","Eine Webseite"}.
|
||||
{"Accept","Akzeptieren"}.
|
||||
{"Access denied by service policy","Zugang aufgrund der Dienstrichtlinien verweigert"}.
|
||||
{"Access denied by service policy","Zugriff aufgrund der Dienstrichtlinien verweigert"}.
|
||||
{"Access model of authorize","Zugriffsmodell von 'authorize'"}.
|
||||
{"Access model of open","Zugriffsmodell von 'open'"}.
|
||||
{"Access model of presence","Zugriffsmodell von 'presence'"}.
|
||||
{"Access model of roster","Zugriffsmodell der Kontaktliste"}.
|
||||
{"Access model of whitelist","Zugriffsmodell von 'whitelist'"}.
|
||||
{"Access model","Zugriffsmodell"}.
|
||||
{"Account doesn't exist","Konto existiert nicht"}.
|
||||
{"Action on user","Aktion auf Benutzer"}.
|
||||
{"Add a hat to a user","Funktion zu einem Benutzer hinzufügen"}.
|
||||
{"Add Jabber ID","Jabber-ID hinzufügen"}.
|
||||
{"Add New","Neue(n) hinzufügen"}.
|
||||
{"Add User","Benutzer hinzufügen"}.
|
||||
{"Administration of ","Administration von "}.
|
||||
{"Administration","Verwaltung"}.
|
||||
{"Administrator privileges required","Administratorenrechte benötigt"}.
|
||||
{"Administrator privileges required","Administratorrechte erforderlich"}.
|
||||
{"All activity","Alle Aktivitäten"}.
|
||||
{"All Users","Alle Benutzer"}.
|
||||
{"Allow subscription","Abonnement erlauben"}.
|
||||
{"Allow this Jabber ID to subscribe to this pubsub node?","Dieser Jabber-ID das Abonnement dieses pubsub-Knotens erlauben?"}.
|
||||
{"Allow this person to register with the room?","Dieser Person erlauben, sich beim Raum anzumelden?"}.
|
||||
{"Allow users to change the subject","Erlaube Benutzern das Thema zu ändern"}.
|
||||
{"Allow users to query other users","Erlaube Benutzern Informationen über andere Benutzer abzufragen"}.
|
||||
{"Allow users to send invites","Erlaube Benutzern Einladungen zu senden"}.
|
||||
{"Allow users to send private messages","Erlaube Benutzern private Nachrichten zu senden"}.
|
||||
{"Allow visitors to change nickname","Erlaube Besuchern ihren Benutzernamen zu ändern"}.
|
||||
{"Allow visitors to send private messages to","Erlaube Besuchern das Senden von privaten Nachrichten an"}.
|
||||
{"Allow visitors to send status text in presence updates","Erlaube Besuchern einen Text bei Statusänderung zu senden"}.
|
||||
{"All Users","Alle Benutzer"}.
|
||||
{"Allow visitors to send status text in presence updates","Erlaube Besuchern einen Statustext bei Präsenzupdates zu senden"}.
|
||||
{"Allow visitors to send voice requests","Erlaube Besuchern Sprachrecht-Anforderungen zu senden"}.
|
||||
{"An associated LDAP group that defines room membership; this should be an LDAP Distinguished Name according to an implementation-specific or deployment-specific definition of a group.","Eine zugehörige LDAP-Gruppe die Raummitgliedschaft definiert; dies sollte ein 'LDAP Distinguished Name' gemäß einer implementierungs- oder bereitstellungsspezifischen Definition einer Gruppe sein."}.
|
||||
{"Announcements","Ankündigungen"}.
|
||||
{"A password is required to enter this room","Sie brauchen ein Passwort um diesen Raum zu betreten"}.
|
||||
{"Answer associated with a picture","Antwort verbunden mit einem Bild"}.
|
||||
{"Answer associated with a video","Antwort verbunden mit einem Video"}.
|
||||
{"Answer associated with speech","Antwort verbunden mit Sprache"}.
|
||||
{"Answer to a question","Antwort auf eine Frage"}.
|
||||
{"Anyone in the specified roster group(s) may subscribe and retrieve items","Jeder in der/den angeführten Kontaktlistengruppe(n) darf Items abonnieren und abrufen"}.
|
||||
{"Anyone may associate leaf nodes with the collection","Jeder darf Blattknoten mit der Sammlung verknüpfen"}.
|
||||
{"Anyone may publish","Jeder darf veröffentlichen"}.
|
||||
{"Anyone may subscribe and retrieve items","Jeder darf Items abonnieren und abrufen"}.
|
||||
{"Anyone with a presence subscription of both or from may subscribe and retrieve items","Jeder mit einem Präsenzabonnement von beiden oder davon darf Items abonnieren oder abrufen"}.
|
||||
{"Anyone with Voice","Jeder mit Stimme"}.
|
||||
{"Anyone","Jeder"}.
|
||||
{"April","April"}.
|
||||
{"Attribute 'channel' is required for this request","Attribut 'channel' ist für diese Anforderung erforderlich"}.
|
||||
{"Attribute 'id' is mandatory for MIX messages","Attribut 'id' ist verpflichtend für MIX-Nachrichten"}.
|
||||
{"Attribute 'jid' is not allowed here","Attribut 'jid' ist hier nicht erlaubt"}.
|
||||
{"Attribute 'node' is not allowed here","Attribut 'node' ist hier nicht erlaubt"}.
|
||||
{"Attribute 'to' of stanza that triggered challenge","Attribut 'to' des Stanza das die Herausforderung ausgelöst hat"}.
|
||||
{"August","August"}.
|
||||
{"Automatic node creation is not enabled","Automatische Knoten-Erstellung ist nicht aktiviert"}.
|
||||
{"Backup","Datensicherung"}.
|
||||
{"Backup Management","Datensicherungsverwaltung"}.
|
||||
{"Backup of ~p","Sicherung von ~p"}.
|
||||
{"Backup to File at ","Datensicherung in die Datei "}.
|
||||
{"Automatic node creation is not enabled","Automatische Knotenerstellung ist nicht aktiviert"}.
|
||||
{"Backup Management","Backupverwaltung"}.
|
||||
{"Backup of ~p","Backup von ~p"}.
|
||||
{"Backup to File at ","Backup in Datei bei "}.
|
||||
{"Backup","Backup"}.
|
||||
{"Bad format","Ungültiges Format"}.
|
||||
{"Birthday","Geburtsdatum"}.
|
||||
{"Both the username and the resource are required","Sowohl der Benutzername als auch die Ressource werden benötigt"}.
|
||||
{"Both the username and the resource are required","Sowohl der Benutzername als auch die Ressource sind erforderlich"}.
|
||||
{"Bytestream already activated","Bytestream bereits aktiviert"}.
|
||||
{"Cannot remove active list","Kann aktive Liste nicht entfernen"}.
|
||||
{"Cannot remove default list","Kann Standardliste nicht entfernen"}.
|
||||
{"CAPTCHA web page","CAPTCHA -Webseite"}.
|
||||
{"Challenge ID","Herausforderungs-ID"}.
|
||||
{"Change Password","Passwort ändern"}.
|
||||
{"Change User Password","Benutzer-Passwort ändern"}.
|
||||
{"Change User Password","Benutzerpasswort ändern"}.
|
||||
{"Changing password is not allowed","Ändern des Passwortes ist nicht erlaubt"}.
|
||||
{"Changing role/affiliation is not allowed","Ändern der Rolle/Zugehörigkeit ist nicht erlaubt"}.
|
||||
{"Channel already exists","Kanal existiert bereits"}.
|
||||
{"Channel does not exist","Kanal existiert nicht"}.
|
||||
{"Channels","Kanäle"}.
|
||||
{"Characters not allowed:","Nicht erlaubte Zeichen:"}.
|
||||
{"Chatroom configuration modified","Chatraum-Konfiguration geändert"}.
|
||||
{"Chatroom is created","Chatraum wurde erstellt"}.
|
||||
{"Chatroom is destroyed","Chatraum wurde entfernt"}.
|
||||
{"Chatroom is started","Chatraum wurde gestartet"}.
|
||||
{"Chatroom is stopped","Chatraum wurde beendet"}.
|
||||
{"Chatroom is created","Chatraum ist erstellt"}.
|
||||
{"Chatroom is destroyed","Chatraum ist entfernt"}.
|
||||
{"Chatroom is started","Chatraum ist gestartet"}.
|
||||
{"Chatroom is stopped","Chatraum ist beendet"}.
|
||||
{"Chatrooms","Chaträume"}.
|
||||
{"Choose a username and password to register with this server","Wählen sie zum Registrieren auf diesem Server einen Benutzernamen und ein Passwort"}.
|
||||
{"Choose modules to stop","Wähle zu stoppende Module"}.
|
||||
{"Choose a username and password to register with this server","Wählen Sie zum Registrieren auf diesem Server einen Benutzernamen und ein Passwort"}.
|
||||
{"Choose storage type of tables","Wähle Speichertyp der Tabellen"}.
|
||||
{"Choose whether to approve this entity's subscription.","Wählen Sie, ob dieses Abonnement akzeptiert werden soll."}.
|
||||
{"Choose whether to approve this entity's subscription.","Wählen Sie, ob das Abonnement dieser Entität genehmigt werden soll."}.
|
||||
{"City","Stadt"}.
|
||||
{"Client acknowledged more stanzas than sent by server","Client bestätigte mehr Stanzas als vom Server gesendet"}.
|
||||
{"Commands","Befehle"}.
|
||||
{"Conference room does not exist","Konferenzraum existiert nicht"}.
|
||||
{"Configuration of room ~s","Konfiguration des Raumes ~s"}.
|
||||
{"Configuration","Konfiguration"}.
|
||||
{"Configuration of room ~s","Konfiguration für Raum ~s"}.
|
||||
{"Connected Resources:","Verbundene Ressourcen:"}.
|
||||
{"Contact Addresses (normally, room owner or owners)","Kontaktadresse (normalerweise Raumbesitzer)"}.
|
||||
{"Country","Land"}.
|
||||
{"CPU Time:","CPU-Zeit:"}.
|
||||
{"Database","Datenbank"}.
|
||||
{"Current Discussion Topic","Aktuelles Diskussionsthema"}.
|
||||
{"Database failure","Datenbankfehler"}.
|
||||
{"Database Tables at ~p","Datenbanktabellen auf ~p"}.
|
||||
{"Database Tables Configuration at ","Datenbanktabellen-Konfiguration auf "}.
|
||||
{"Database Tables at ~p","Datenbanktabellen bei ~p"}.
|
||||
{"Database Tables Configuration at ","Datenbanktabellen-Konfiguration bei "}.
|
||||
{"Database","Datenbank"}.
|
||||
{"December","Dezember"}.
|
||||
{"Default users as participants","Benutzer werden standardmäßig vollwertige Teilnehmer"}.
|
||||
{"Delete message of the day","Lösche Nachricht des Tages"}.
|
||||
{"Default users as participants","Benutzer werden standardmäßig Teilnehmer"}.
|
||||
{"Delete content","Inhalt löschen"}.
|
||||
{"Delete message of the day on all hosts","Lösche Nachricht des Tages auf allen Hosts"}.
|
||||
{"Delete message of the day","Lösche Nachricht des Tages"}.
|
||||
{"Delete Selected","Markierte löschen"}.
|
||||
{"Delete table","Tabelle löschen"}.
|
||||
{"Delete User","Benutzer löschen"}.
|
||||
{"Deliver event notifications","Ereignisbenachrichtigungen zustellen"}.
|
||||
{"Deliver payloads with event notifications","Nutzdaten mit Ereignisbenachrichtigungen zustellen"}.
|
||||
{"Description:","Beschreibung:"}.
|
||||
{"Disc only copy","Nur auf Festplatte"}.
|
||||
{"Displayed Groups:","Angezeigte Gruppen:"}.
|
||||
{"Don't tell your password to anybody, not even the administrators of the Jabber server.","Geben Sie niemandem Ihr Passwort, auch nicht den Administratoren des Jabber-Servers."}.
|
||||
{"Dump Backup to Text File at ","Ausgabe der Sicherung in diese Textdatei "}.
|
||||
{"'Displayed groups' not added (they do not exist!): ","'Angezeigte Gruppen' nicht hinzugefügt (sie existieren nicht!): "}.
|
||||
{"Displayed:","Angezeigt:"}.
|
||||
{"Don't tell your password to anybody, not even the administrators of the XMPP server.","Geben Sie niemandem Ihr Passwort, auch nicht den Administratoren des XMPP-Servers."}.
|
||||
{"Dump Backup to Text File at ","Gib Backup in Textdatei aus bei "}.
|
||||
{"Dump to Text File","Ausgabe in Textdatei"}.
|
||||
{"Duplicated groups are not allowed by RFC6121","Doppelte Gruppen sind laut RFC6121 nicht erlaubt"}.
|
||||
{"Edit Properties","Einstellungen ändern"}.
|
||||
{"Either approve or decline the voice request.","Anfrage für Sprachrechte entweder bestätigen oder ablehnen."}.
|
||||
{"Dynamically specify a replyto of the item publisher","Dynamisch ein 'replyto' des Item-Veröffentlichers angeben"}.
|
||||
{"Edit Properties","Eigenschaften ändern"}.
|
||||
{"Either approve or decline the voice request.","Sprachrecht-Anforderung entweder genehmigen oder ablehnen."}.
|
||||
{"ejabberd HTTP Upload service","ejabberd HTTP Upload-Dienst"}.
|
||||
{"ejabberd MUC module","ejabberd MUC-Modul"}.
|
||||
{"ejabberd Multicast service","ejabberd Multicast-Dienst"}.
|
||||
{"ejabberd Publish-Subscribe module","ejabberd Publish-Subscribe-Modul"}.
|
||||
{"ejabberd SOCKS5 Bytestreams module","ejabberd SOCKS5-Bytestreams-Modul"}.
|
||||
{"ejabberd vCard module","ejabberd vCard-Modul"}.
|
||||
{"ejabberd Web Admin","ejabberd Web-Admin"}.
|
||||
{"ejabberd","ejabberd"}.
|
||||
{"Elements","Elemente"}.
|
||||
{"Email Address","E-Mail-Adresse"}.
|
||||
{"Email","E-Mail"}.
|
||||
{"Empty password","Leeres Passwort"}.
|
||||
{"Enable hats","Funktion einschalten"}.
|
||||
{"Enable logging","Protokollierung aktivieren"}.
|
||||
{"Enable message archiving","Nachrichtenarchivierung aktivieren"}.
|
||||
{"Enabling push without 'node' attribute is not supported","push ohne 'node'-Attribut zu aktivieren wird nicht unterstützt"}.
|
||||
{"End User Session","Benutzer-Sitzung beenden"}.
|
||||
{"Enter list of {Module, [Options]}","Geben Sie eine Liste bestehend aus {Modul, [Optionen]} ein"}.
|
||||
{"Enter nickname you want to register","Geben Sie den zu registrierenden Benutzernamen ein"}.
|
||||
{"Enter path to backup file","Geben Sie den Pfad zur Datensicherungsdatei ein"}.
|
||||
{"Enter path to jabberd14 spool dir","Geben Sie den Pfad zum jabberd14-Spool-Verzeichnis ein"}.
|
||||
{"Enter path to jabberd14 spool file","Geben Sie den Pfad zur jabberd14-Spool-Datei ein"}.
|
||||
{"End User Session","Benutzersitzung beenden"}.
|
||||
{"Enter nickname you want to register","Geben Sie den Spitznamen ein den Sie registrieren wollen"}.
|
||||
{"Enter path to backup file","Geben Sie den Pfad zur Backupdatei ein"}.
|
||||
{"Enter path to jabberd14 spool dir","Geben Sie den Pfad zum jabberd14-Spoolverzeichnis ein"}.
|
||||
{"Enter path to jabberd14 spool file","Geben Sie den Pfad zur jabberd14-Spooldatei ein"}.
|
||||
{"Enter path to text file","Geben Sie den Pfad zur Textdatei ein"}.
|
||||
{"Enter the text you see","Geben Sie den Text den Sie sehen ein"}.
|
||||
{"Erlang Jabber Server","Erlang Jabber-Server"}.
|
||||
{"Enter the text you see","Geben Sie den Text ein den Sie sehen"}.
|
||||
{"Erlang XMPP Server","Erlang XMPP-Server"}.
|
||||
{"Error","Fehler"}.
|
||||
{"Exclude Jabber IDs from CAPTCHA challenge","Jabber-IDs von CAPTCHA-Herausforderung ausschließen"}.
|
||||
{"Export all tables as SQL queries to a file:","Alle Tabellen als SQL-Abfragen in eine Datei exportieren:"}.
|
||||
{"Export data of all users in the server to PIEFXIS files (XEP-0227):","Alle Benutzerdaten des Servers in PIEFXIS-Dateien (XEP-0227) exportieren:"}.
|
||||
{"Export data of users in a host to PIEFXIS files (XEP-0227):","Alle Benutzerdaten des Hosts in PIEFXIS-Dateien (XEP-0227) exportieren:"}.
|
||||
{"External component failure","Fehler externer Komponente"}.
|
||||
{"External component timeout","Zeitüberschreitung externer Komponente"}.
|
||||
{"Failed to activate bytestream","Konnte Bytestream nicht aktivieren"}.
|
||||
{"Failed to extract JID from your voice request approval","Fehler beim Auslesen der JID aus der Anfragenbestätigung für Sprachrechte"}.
|
||||
{"Failed to extract JID from your voice request approval","Konnte JID nicht aus Ihrer Genehmigung der Sprachrecht-Anforderung extrahieren"}.
|
||||
{"Failed to map delegated namespace to external component","Konnte delegierten Namensraum nicht externer Komponente zuordnen"}.
|
||||
{"Failed to parse HTTP response","Konnte HTTP-Antwort nicht parsen"}.
|
||||
{"Failed to process option '~s'","Konnte Option '~s' nicht verarbeiten"}.
|
||||
{"Family Name","Nachname"}.
|
||||
{"FAQ Entry","FAQ-Eintrag"}.
|
||||
{"February","Februar"}.
|
||||
{"File larger than ~w bytes","Datei größer als ~w Bytes"}.
|
||||
{"Fill in the form to search for any matching XMPP User","Füllen Sie das Formular aus, um nach jeglichen passenden XMPP-Benutzern zu suchen"}.
|
||||
{"Friday","Freitag"}.
|
||||
{"From ~s","Von ~s"}.
|
||||
{"From ~ts","Von ~ts"}.
|
||||
{"From","Von"}.
|
||||
{"Full List of Room Admins","Vollständige Liste der Raumadmins"}.
|
||||
{"Full List of Room Owners","Vollständige Liste der Raumbesitzer"}.
|
||||
{"Full Name","Vollständiger Name"}.
|
||||
{"Get Number of Online Users","Anzahl der angemeldeten Benutzer abrufen"}.
|
||||
{"Get Number of Registered Users","Anzahl der registrierten Benutzer abrufen"}.
|
||||
{"Get User Last Login Time","letzte Anmeldezeit abrufen"}.
|
||||
{"Get User Password","Benutzer-Passwort abrufen"}.
|
||||
{"Get User Statistics","Benutzer-Statistiken abrufen"}.
|
||||
{"Get Pending","Ausstehende abrufen"}.
|
||||
{"Get User Last Login Time","letzte Anmeldezeit des Benutzers abrufen"}.
|
||||
{"Get User Password","Benutzerpasswort abrufen"}.
|
||||
{"Get User Statistics","Benutzerstatistiken abrufen"}.
|
||||
{"Given Name","Vorname"}.
|
||||
{"Group ","Gruppe "}.
|
||||
{"Grant voice to this person?","Dieser Person Sprachrechte erteilen?"}.
|
||||
{"Group","Gruppe"}.
|
||||
{"Groups that will be displayed to the members","Gruppen, die den Mitgliedern angezeigt werden"}.
|
||||
{"Groups","Gruppen"}.
|
||||
{"has been banned","wurde gebannt"}.
|
||||
{"has been kicked because of an affiliation change","wurde wegen Änderung des Mitgliederstatus gekickt"}.
|
||||
{"has been kicked because of a system shutdown","wurde wegen einer Systemabschaltung gekickt"}.
|
||||
{"has been kicked because the room has been changed to members-only","wurde gekickt weil der Raum auf Nur-Mitglieder umgestellt wurde"}.
|
||||
{"has been kicked","wurde gekickt"}.
|
||||
{" has set the subject to: "," hat das Thema geändert auf: "}.
|
||||
{"Host","Host"}.
|
||||
{"has been kicked because of a system shutdown","wurde wegen einer Systemabschaltung hinausgeworfen"}.
|
||||
{"has been kicked because of an affiliation change","wurde wegen einer Änderung der Zugehörigkeit hinausgeworfen"}.
|
||||
{"has been kicked because the room has been changed to members-only","wurde hinausgeworfen weil der Raum zu Nur-Mitglieder geändert wurde"}.
|
||||
{"has been kicked","wurde hinausgeworfen"}.
|
||||
{"Hat title","Funktionstitel"}.
|
||||
{"Hat URI","Funktions-URI"}.
|
||||
{"Hats limit exceeded","Funktionslimit wurde überschritten"}.
|
||||
{"Host unknown","Host unbekannt"}.
|
||||
{"If you don't see the CAPTCHA image here, visit the web page.","Wenn Sie das CAPTCHA-Bild nicht sehen, besuchen Sie bitte die Webseite."}.
|
||||
{"Host","Host"}.
|
||||
{"HTTP File Upload","HTTP-Dateiupload"}.
|
||||
{"Idle connection","Inaktive Verbindung"}.
|
||||
{"If you don't see the CAPTCHA image here, visit the web page.","Wenn Sie das CAPTCHA-Bild nicht sehen, besuchen Sie die Webseite."}.
|
||||
{"Import Directory","Verzeichnis importieren"}.
|
||||
{"Import File","Datei importieren"}.
|
||||
{"Import user data from jabberd14 spool file:","Importiere Benutzer von jabberd14-Spool-Datei:"}.
|
||||
{"Import User from File at ","Benutzer aus dieser Datei importieren "}.
|
||||
{"Import user data from jabberd14 spool file:","Importiere Benutzer von jabberd14-Spooldatei:"}.
|
||||
{"Import User from File at ","Benutzer importieren aus Datei bei "}.
|
||||
{"Import users data from a PIEFXIS file (XEP-0227):","Benutzerdaten von einer PIEFXIS-Datei (XEP-0227) importieren:"}.
|
||||
{"Import users data from jabberd14 spool directory:","Importiere Benutzer von jabberd14-Spool-Verzeichnis:"}.
|
||||
{"Import Users from Dir at ","Benutzer importieren aus dem Verzeichnis "}.
|
||||
{"Import Users From jabberd14 Spool Files","Importiere Benutzer aus jabberd14-Spool-Dateien"}.
|
||||
{"Improper domain part of 'from' attribute","Falscher Domain-Teil des 'from'-Attributs"}.
|
||||
{"Import users data from jabberd14 spool directory:","Importiere Benutzer von jabberd14-Spoolverzeichnis:"}.
|
||||
{"Import Users from Dir at ","Benutzer importieren aus Verzeichnis bei "}.
|
||||
{"Import Users From jabberd14 Spool Files","Importiere Benutzer aus jabberd14-Spooldateien"}.
|
||||
{"Improper domain part of 'from' attribute","Falscher Domänenteil des 'from'-Attributs"}.
|
||||
{"Improper message type","Unzulässiger Nachrichtentyp"}.
|
||||
{"Incoming s2s Connections:","Eingehende s2s-Verbindungen:"}.
|
||||
{"Incorrect CAPTCHA submit","Falsche CAPTCHA-Eingabe"}.
|
||||
@@ -148,27 +214,37 @@
|
||||
{"Incorrect value of 'action' in data form","Falscher Wert von 'action' in Datenformular"}.
|
||||
{"Incorrect value of 'path' in data form","Falscher Wert von 'path' in Datenformular"}.
|
||||
{"Insufficient privilege","Unzureichende Privilegien"}.
|
||||
{"Internal server error","Interner Serverfehler"}.
|
||||
{"Invalid 'from' attribute in forwarded message","Ungültiges 'from'-Attribut in weitergeleiteter Nachricht"}.
|
||||
{"Invalid node name","Ungültiger Knotenname"}.
|
||||
{"Invalid 'previd' value","Ungültiger 'previd'-Wert"}.
|
||||
{"Invitations are not allowed in this conference","Einladungen sind in dieser Konferenz nicht erlaubt"}.
|
||||
{"IP addresses","IP-Adressen"}.
|
||||
{"is now known as","ist nun bekannt als"}.
|
||||
{"It is not allowed to send error messages to the room. The participant (~s) has sent an error message (~s) and got kicked from the room","Es ist nicht erlaubt Fehlermeldungen an den Raum zu senden. Der Teilnehmer (~s) hat eine Fehlermeldung (~s) gesendet und wurde aus dem Raum gekickt"}.
|
||||
{"It is not allowed to send error messages to the room. The participant (~s) has sent an error message (~s) and got kicked from the room","Es ist nicht erlaubt Fehlermeldungen an den Raum zu senden. Der Teilnehmer (~s) hat eine Fehlermeldung (~s) gesendet und wurde aus dem Raum geworfen"}.
|
||||
{"It is not allowed to send private messages of type \"groupchat\"","Es ist nicht erlaubt private Nachrichten des Typs \"groupchat\" zu senden"}.
|
||||
{"It is not allowed to send private messages to the conference","Es ist nicht erlaubt private Nachrichten an die Konferenz zu senden"}.
|
||||
{"It is not allowed to send private messages","Es ist nicht erlaubt private Nachrichten zu senden"}.
|
||||
{"It is not allowed to send private messages of type \"groupchat\"","Es ist nicht erlaubt private Nachrichten des Typs \"Gruppenchat\" zu senden"}.
|
||||
{"It is not allowed to send private messages to the conference","Es ist nicht erlaubt private Nachrichten an den Raum zu schicken"}.
|
||||
{"Jabber Account Registration","Jabber-Konto-Anmeldung"}.
|
||||
{"Jabber ID","Jabber-ID"}.
|
||||
{"January","Januar"}.
|
||||
{"JID normalization denied by service policy","JID-Normalisierung aufgrund der Dienstrichtlinien verweigert"}.
|
||||
{"JID normalization failed","JID-Normalisierung fehlgeschlagen"}.
|
||||
{"joins the room","betritt den Raum"}.
|
||||
{"July","Juli"}.
|
||||
{"June","Juni"}.
|
||||
{"Just created","Gerade erstellt"}.
|
||||
{"Label:","Label:"}.
|
||||
{"Last Activity","Letzte Aktivität"}.
|
||||
{"Last login","Letzte Anmeldung"}.
|
||||
{"Last message","Letzte Nachricht"}.
|
||||
{"Last month","Letzter Monat"}.
|
||||
{"Last year","Letztes Jahr"}.
|
||||
{"Least significant bits of SHA-256 hash of text should equal hexadecimal label","Niederwertigstes Bit des SHA-256-Hashes des Textes sollte hexadezimalem Label gleichen"}.
|
||||
{"leaves the room","verlässt den Raum"}.
|
||||
{"List of modules to start","Liste der zu startenden Module"}.
|
||||
{"List of rooms","Liste von Chaträumen"}.
|
||||
{"List of rooms","Liste von Räumen"}.
|
||||
{"List of users with hats","Liste der Benutzer mit Funktionen"}.
|
||||
{"List users with hats","Benutzer mit Funktionen auflisten"}.
|
||||
{"Logging","Protokollierung"}.
|
||||
{"Low level update script","Low-Level-Aktualisierungsscript"}.
|
||||
{"Make participants list public","Teilnehmerliste öffentlich machen"}.
|
||||
{"Make room CAPTCHA protected","Raum mittels CAPTCHA schützen"}.
|
||||
@@ -178,269 +254,418 @@
|
||||
{"Make room persistent","Raum persistent machen"}.
|
||||
{"Make room public searchable","Raum öffentlich suchbar machen"}.
|
||||
{"Malformed username","Ungültiger Benutzername"}.
|
||||
{"MAM preference modification denied by service policy","Modifikation der MAM-Präferenzen aufgrund der Dienstrichtlinien verweigert"}.
|
||||
{"March","März"}.
|
||||
{"Maximum Number of Occupants","Maximale Anzahl von Teilnehmern"}.
|
||||
{"Max # of items to persist, or `max` for no specific limit other than a server imposed maximum","Maximale Anzahl der aufzubewahrenden Elemente oder `max`, wenn es keine spezifische Begrenzung gibt, außer einer vom Server festgelegten Höchstzahl"}.
|
||||
{"Max payload size in bytes","Maximale Nutzdatengröße in Bytes"}.
|
||||
{"Maximum file size","Maximale Dateigröße"}.
|
||||
{"Maximum Number of History Messages Returned by Room","Maximale Anzahl der vom Raum zurückgegebenen History-Nachrichten"}.
|
||||
{"Maximum number of items to persist","Maximale Anzahl persistenter Items"}.
|
||||
{"Maximum Number of Occupants","Maximale Anzahl der Teilnehmer"}.
|
||||
{"May","Mai"}.
|
||||
{"Membership is required to enter this room","Um diesen Raum zu betreten müssen Sie Mitglied sein"}.
|
||||
{"Members not added (inexistent vhost!): ","Mitglieder nicht hinzugefügt (nicht existierender vhost!): "}.
|
||||
{"Membership is required to enter this room","Mitgliedschaft ist erforderlich um diesen Raum zu betreten"}.
|
||||
{"Members:","Mitglieder:"}.
|
||||
{"Memorize your password, or write it in a paper placed in a safe place. In Jabber there isn't an automated way to recover your password if you forget it.","Merken Sie sich Ihr Passwort, oder schreiben Sie es auf einen Zettel den Sie sicher verwahren. Bei Jabber gibt es keine automatische Möglichkeit, das Passwort wiederherzustellen."}.
|
||||
{"Memorize your password, or write it in a paper placed in a safe place. In XMPP there isn't an automated way to recover your password if you forget it.","Merken Sie sich Ihr Passwort, oder schreiben Sie es auf einen Zettel den Sie sicher verwahren. Bei XMPP gibt es keine automatische Möglichkeit, das Passwort wiederherzustellen falls Sie es vergessen."}.
|
||||
{"Memory","Speicher"}.
|
||||
{"Mere Availability in XMPP (No Show Value)","Bloße Verfügbarkeit in XMPP (kein Anzeigewert)"}.
|
||||
{"Message body","Nachrichtentext"}.
|
||||
{"Message not found in forwarded payload","Nachricht nicht in weitergeleiteten Nutzdaten gefunden"}.
|
||||
{"Messages from strangers are rejected","Nachrichten von Fremden werden zurückgewiesen"}.
|
||||
{"Messages of type headline","Nachrichten vom Typ 'headline'"}.
|
||||
{"Messages of type normal","Nachrichten vom Typ 'normal'"}.
|
||||
{"Middle Name","Zweiter Vorname"}.
|
||||
{"Moderator privileges required","Moderatorrechte benötigt"}.
|
||||
{"Minimum interval between voice requests (in seconds)","Mindestdauer zwischen Sprachrecht-Anforderung (in Sekunden)"}.
|
||||
{"Moderator privileges required","Moderatorrechte erforderlich"}.
|
||||
{"Moderator","Moderator"}.
|
||||
{"Moderators Only","nur Moderatoren"}.
|
||||
{"Modified modules","Geänderte Module"}.
|
||||
{"Module failed to handle the query","Modul konnte die Anfrage nicht verarbeiten"}.
|
||||
{"Modules","Module"}.
|
||||
{"Monday","Montag"}.
|
||||
{"Multicast","Multicast"}.
|
||||
{"Multiple <item/> elements are not allowed by RFC6121","Mehrere <item/>-Elemente sind laut RFC6121 nicht erlaubt"}.
|
||||
{"Multi-User Chat","Mehrbenutzer-Chat (MUC)"}.
|
||||
{"Name in the rosters where this group will be displayed","Name in den Kontaktlisten wo diese Gruppe angezeigt werden wird"}.
|
||||
{"Name:","Name:"}.
|
||||
{"Name","Vorname"}.
|
||||
{"Natural Language for Room Discussions","Natürliche Sprache für Raumdiskussionen"}.
|
||||
{"Natural-Language Room Name","Raumname in natürlicher Sprache"}.
|
||||
{"Neither 'jid' nor 'nick' attribute found","Weder 'jid'- noch 'nick'-Attribut gefunden"}.
|
||||
{"Neither 'role' nor 'affiliation' attribute found","Weder 'role'- noch 'affiliation'-Attribut gefunden"}.
|
||||
{"Never","Nie"}.
|
||||
{"New Password:","Neues Passwort:"}.
|
||||
{"Nickname","Benutzername"}.
|
||||
{"Nickname Registration at ","Registrieren des Benutzernames auf "}.
|
||||
{"Nickname ~s does not exist in the room","Der Benutzername ~s existiert im Raum nicht"}.
|
||||
{"Nickname can't be empty","Spitzname darf nicht leer sein"}.
|
||||
{"Nickname Registration at ","Registrieren des Spitznamens auf "}.
|
||||
{"Nickname ~s does not exist in the room","Der Spitzname ~s existiert nicht im Raum"}.
|
||||
{"Nickname","Spitzname"}.
|
||||
{"No address elements found","Keine 'address'-Elemente gefunden"}.
|
||||
{"No addresses element found","Kein 'addresses'-Element gefunden"}.
|
||||
{"No 'affiliation' attribute found","Kein 'affiliation'-Attribut gefunden"}.
|
||||
{"No available resource found","Keine verfügbare Ressource gefunden"}.
|
||||
{"No body provided for announce message","Kein Text für die Ankündigungsnachricht angegeben"}.
|
||||
{"No child elements found","Keine 'child'-Elemente gefunden"}.
|
||||
{"No data form found","Kein Datenformular gefunden"}.
|
||||
{"No Data","Keine Daten"}.
|
||||
{"Node already exists","Knoten existiert bereits"}.
|
||||
{"Node index not found","Knotenindex nicht gefunden"}.
|
||||
{"Node not found","Knoten nicht gefunden"}.
|
||||
{"Node ~p","Knoten ~p"}.
|
||||
{"Nodeprep has failed","Nodeprep schlug fehl"}.
|
||||
{"Nodes","Knoten"}.
|
||||
{"No features available","Keine Eigenschaften verfügbar"}.
|
||||
{"No <forwarded/> element found","Kein <forwarded/>-Element gefunden"}.
|
||||
{"No hook has processed this command","Kein Hook hat diesen Befehl verarbeitet"}.
|
||||
{"No info about last activity found","Keine Informationen über letzte Aktivität gefunden"}.
|
||||
{"No 'item' element found","Kein 'item'-Element gefunden"}.
|
||||
{"No items found in this query","Keine Elemente in dieser Anfrage gefunden"}.
|
||||
{"No items found in this query","Keine Items in dieser Anfrage gefunden"}.
|
||||
{"No limit","Keine Begrenzung"}.
|
||||
{"No module is handling this query","Kein Modul verarbeitet diese Anfrage"}.
|
||||
{"No 'modules' found in data form","Kein 'modules' in Datenformular gefunden"}.
|
||||
{"None","Keine"}.
|
||||
{"No node specified","Kein Knoten angegeben"}.
|
||||
{"No 'password' found in data form","Kein 'password' in Datenformular gefunden"}.
|
||||
{"No 'password' found in data form","Kein 'password' im Datenformular gefunden"}.
|
||||
{"No 'password' found in this query","Kein 'password' in dieser Anfrage gefunden"}.
|
||||
{"No 'path' found in data form","Kein 'path' in Datenformular gefunden"}.
|
||||
{"No 'path' found in data form","Kein 'path' im Datenformular gefunden"}.
|
||||
{"No pending subscriptions found","Keine ausstehenden Abonnements gefunden"}.
|
||||
{"No privacy list with this name found","Keine Privacy-Liste mit diesem Namen gefunden"}.
|
||||
{"No private data found in this query","Keine privaten Daten in dieser Anfrage gefunden"}.
|
||||
{"No running node found","Kein laufender Knoten gefunden"}.
|
||||
{"No services available","Keine Dienste verfügbar"}.
|
||||
{"No statistics found for this item","Keine Statistiken für dieses Element gefunden"}.
|
||||
{"Not Found","Nicht gefunden"}.
|
||||
{"No statistics found for this item","Keine Statistiken für dieses Item gefunden"}.
|
||||
{"No 'to' attribute found in the invitation","Kein 'to'-Attribut in der Einladung gefunden"}.
|
||||
{"Nobody","Niemand"}.
|
||||
{"Node already exists","Knoten existiert bereits"}.
|
||||
{"Node ID","Knoten-ID"}.
|
||||
{"Node index not found","Knotenindex nicht gefunden"}.
|
||||
{"Node not found","Knoten nicht gefunden"}.
|
||||
{"Node ~p","Knoten ~p"}.
|
||||
{"Node","Knoten"}.
|
||||
{"Nodeprep has failed","Nodeprep fehlgeschlagen"}.
|
||||
{"Nodes","Knoten"}.
|
||||
{"None","Keine"}.
|
||||
{"Not allowed","Nicht erlaubt"}.
|
||||
{"Not Found","Nicht gefunden"}.
|
||||
{"Not subscribed","Nicht abonniert"}.
|
||||
{"Notify subscribers when items are removed from the node","Abonnenten benachrichtigen, wenn Items vom Knoten entfernt werden"}.
|
||||
{"Notify subscribers when the node configuration changes","Abonnenten benachrichtigen, wenn sich die Knotenkonfiguration ändert"}.
|
||||
{"Notify subscribers when the node is deleted","Abonnenten benachrichtigen, wenn der Knoten gelöscht wird"}.
|
||||
{"November","November"}.
|
||||
{"Number of answers required","Anzahl der erforderlichen Antworten"}.
|
||||
{"Number of occupants","Anzahl der Teilnehmer"}.
|
||||
{"Number of Offline Messages","Anzahl der Offline-Nachrichten"}.
|
||||
{"Number of online users","Anzahl der angemeldeten Benutzer"}.
|
||||
{"Number of registered users","Anzahl der registrierten Benutzer"}.
|
||||
{"Number of seconds after which to automatically purge items, or `max` for no specific limit other than a server imposed maximum","Anzahl der Sekunden, nach denen Elemente automatisch gelöscht werden sollen, oder `max`, wenn es keine spezifische Grenze gibt, außer einer vom Server festgelegten Höchstgrenze"}.
|
||||
{"Occupants are allowed to invite others","Teilnehmer dürfen andere einladen"}.
|
||||
{"Occupants May Change the Subject","Teilnehmer dürfen das Thema ändern"}.
|
||||
{"October","Oktober"}.
|
||||
{"Offline Messages","Offline-Nachrichten"}.
|
||||
{"Offline Messages:","Offline-Nachrichten:"}.
|
||||
{"OK","OK"}.
|
||||
{"Old Password:","Altes Passwort:"}.
|
||||
{"Online","Angemeldet"}.
|
||||
{"Online Users","Angemeldete Benutzer"}.
|
||||
{"Online Users:","Angemeldete Benutzer:"}.
|
||||
{"Online","Angemeldet"}.
|
||||
{"Only admins can see this","Nur Admins können dies sehen"}.
|
||||
{"Only collection node owners may associate leaf nodes with the collection","Nur Sammlungsknoten-Besitzer dürfen Blattknoten mit der Sammlung verknüpfen"}.
|
||||
{"Only deliver notifications to available users","Benachrichtigungen nur an verfügbare Benutzer schicken"}.
|
||||
{"Only <enable/> or <disable/> tags are allowed","Nur <enable/>- oder <disable/>-Tags sind erlaubt"}.
|
||||
{"Only <list/> element is allowed in this query","Nur <list/>-Elemente sind in dieser Anfrage erlaubt"}.
|
||||
{"Only members may query archives of this room","Nur Mitglieder dürfen den Verlauf dieses Raumes abrufen"}.
|
||||
{"Only moderators and participants are allowed to change the subject in this room","Nur Moderatoren und Mitglieder dürfen das Thema in diesem Raum ändern"}.
|
||||
{"Only moderators and participants are allowed to change the subject in this room","Nur Moderatoren und Teilnehmer dürfen das Thema in diesem Raum ändern"}.
|
||||
{"Only moderators are allowed to change the subject in this room","Nur Moderatoren dürfen das Thema in diesem Raum ändern"}.
|
||||
{"Only moderators can approve voice requests","Nur Moderatoren können Anfragen für Sprachrechte bestätigen"}.
|
||||
{"Only occupants are allowed to send messages to the conference","Nur Teilnehmer dürfen Nachrichten an die Konferenz schicken"}.
|
||||
{"Only occupants are allowed to send queries to the conference","Nur Teilnehmer sind berechtigt Anfragen an die Konferenz zu senden"}.
|
||||
{"Only service administrators are allowed to send service messages","Nur Service-Administratoren sind berechtigt, Servicenachrichten zu versenden"}.
|
||||
{"Only moderators can approve voice requests","Nur Moderatoren können Sprachrecht-Anforderungen genehmigen"}.
|
||||
{"Only occupants are allowed to send messages to the conference","Nur Teilnehmer dürfen Nachrichten an die Konferenz senden"}.
|
||||
{"Only occupants are allowed to send queries to the conference","Nur Teilnehmer dürfen Anfragen an die Konferenz senden"}.
|
||||
{"Only publishers may publish","Nur Veröffentlicher dürfen veröffentlichen"}.
|
||||
{"Only service administrators are allowed to send service messages","Nur Service-Administratoren dürfen Servicenachrichten senden"}.
|
||||
{"Only those on a whitelist may associate leaf nodes with the collection","Nur jemand auf einer Whitelist darf Blattknoten mit der Sammlung verknüpfen"}.
|
||||
{"Only those on a whitelist may subscribe and retrieve items","Nur jemand auf einer Whitelist darf Items abonnieren und abrufen"}.
|
||||
{"Organization Name","Name der Organisation"}.
|
||||
{"Organization Unit","Abteilung"}.
|
||||
{"Outgoing s2s Connections","Ausgehende s2s-Verbindungen"}.
|
||||
{"Outgoing s2s Connections:","Ausgehende s2s-Verbindungen:"}.
|
||||
{"Owner privileges required","Besitzerrechte benötigt"}.
|
||||
{"Owner privileges required","Besitzerrechte erforderlich"}.
|
||||
{"Packet relay is denied by service policy","Paket-Relay aufgrund der Dienstrichtlinien verweigert"}.
|
||||
{"Packet","Paket"}.
|
||||
{"Parse failed","Parsen fehlgeschlagen"}.
|
||||
{"Password","Passwort"}.
|
||||
{"Password:","Passwort:"}.
|
||||
{"Participant","Teilnehmer"}.
|
||||
{"Password Verification","Passwort bestätigen"}.
|
||||
{"Password Verification:","Passwort bestätigen:"}.
|
||||
{"Password","Passwort"}.
|
||||
{"Password:","Passwort:"}.
|
||||
{"Path to Dir","Pfad zum Verzeichnis"}.
|
||||
{"Path to File","Pfad zur Datei"}.
|
||||
{"Payload type","Nutzdatentyp"}.
|
||||
{"Pending","Ausstehend"}.
|
||||
{"Period: ","Zeitraum: "}.
|
||||
{"Ping","Ping"}.
|
||||
{"Persist items to storage","Items dauerhaft speichern"}.
|
||||
{"Persistent","Persistent"}.
|
||||
{"Ping query is incorrect","Ping-Anfrage ist falsch"}.
|
||||
{"Please note that these options will only backup the builtin Mnesia database. If you are using the ODBC module, you also need to backup your SQL database separately.","Beachten Sie, dass diese Optionen nur die eingebaute Mnesia-Datenbank sichern. Wenn sie das ODBC-Modul verwenden, müssen Sie auch die SQL-Datenbank separat sichern."}.
|
||||
{"Please, wait for a while before sending new voice request","Bitte warten Sie ein wenig, bevor Sie eine weitere Anfrage für Sprachrechte senden"}.
|
||||
{"Ping","Ping"}.
|
||||
{"Please note that these options will only backup the builtin Mnesia database. If you are using the ODBC module, you also need to backup your SQL database separately.","Beachten Sie, dass diese Optionen nur die eingebaute Mnesia-Datenbank sichern. Wenn Sie das ODBC-Modul verwenden, müssen Sie auch Ihre SQL-Datenbank separat sichern."}.
|
||||
{"Please, wait for a while before sending new voice request","Bitte warten Sie ein wenig, bevor Sie eine weitere Sprachrecht-Anforderung senden"}.
|
||||
{"Pong","Pong"}.
|
||||
{"Possessing 'ask' attribute is not allowed by RFC6121","Ein 'ask'-Attribut zu besitzen ist laut RFC6121 nicht erlaubt"}.
|
||||
{"Present real Jabber IDs to","Echte Jabber-IDs anzeigen für"}.
|
||||
{"Previous session not found","Vorherige Sitzung nicht gefunden"}.
|
||||
{"Previous session PID has been killed","Vorherige Sitzungs-PID wurde getötet"}.
|
||||
{"Previous session PID has exited","Vorherige Sitzungs-PID wurde beendet"}.
|
||||
{"Previous session PID is dead","Vorherige Sitzungs-PID ist tot"}.
|
||||
{"Previous session timed out","Zeitüberschreitung bei vorheriger Sitzung"}.
|
||||
{"private, ","privat, "}.
|
||||
{"Public","Öffentlich"}.
|
||||
{"Publish model","Veröffentlichungsmodell"}.
|
||||
{"Publish-Subscribe","Publish-Subscribe"}.
|
||||
{"PubSub subscriber request","PubSub-Abonnenten-Anfrage"}.
|
||||
{"Queries to the conference members are not allowed in this room","Anfragen an die Teilnehmer sind in diesem Raum nicht erlaubt"}.
|
||||
{"PubSub subscriber request","PubSub-Abonnenten-Anforderung"}.
|
||||
{"Purge all items when the relevant publisher goes offline","Alle Items löschen, wenn der relevante Veröffentlicher offline geht"}.
|
||||
{"Push record not found","Push-Eintrag nicht gefunden"}.
|
||||
{"Queries to the conference members are not allowed in this room","Anfragen an die Konferenzteilnehmer sind in diesem Raum nicht erlaubt"}.
|
||||
{"Query to another users is forbidden","Anfrage an andere Benutzer ist verboten"}.
|
||||
{"RAM and disc copy","RAM und Festplatte"}.
|
||||
{"RAM copy","Nur RAM"}.
|
||||
{"Really delete message of the day?","Die Nachricht des Tages wirklich löschen?"}.
|
||||
{"Recipient is not in the conference room","Der Empfänger ist nicht im Raum"}.
|
||||
{"Register a Jabber account","Jabber-Konto registrieren"}.
|
||||
{"Really delete message of the day?","Nachricht des Tages wirklich löschen?"}.
|
||||
{"Receive notification from all descendent nodes","Benachrichtigung von allen abstammenden Nodes erhalten"}.
|
||||
{"Receive notification from direct child nodes only","Benachrichtigung nur von direkten Kindknoten erhalten"}.
|
||||
{"Receive notification of new items only","Benachrichtigung nur von neuen Items erhalten"}.
|
||||
{"Receive notification of new nodes only","Benachrichtigung nur von neuen Knoten erhalten"}.
|
||||
{"Recipient is not in the conference room","Empfänger ist nicht im Konferenzraum"}.
|
||||
{"Register an XMPP account","Ein XMPP-Konto registrieren"}.
|
||||
{"Register","Anmelden"}.
|
||||
{"Registered Users","Registrierte Benutzer"}.
|
||||
{"Registered Users:","Registrierte Benutzer:"}.
|
||||
{"Remote copy","Fernkopie"}.
|
||||
{"Remove a hat from a user","Eine Funktion bei einem Benutzer entfernen"}.
|
||||
{"Remove All Offline Messages","Alle Offline-Nachrichten löschen"}.
|
||||
{"Remove","Entfernen"}.
|
||||
{"Remove User","Benutzer löschen"}.
|
||||
{"Remove","Entfernen"}.
|
||||
{"Replaced by new connection","Durch neue Verbindung ersetzt"}.
|
||||
{"Request has timed out","Zeitüberschreitung bei Anforderung"}.
|
||||
{"Request is ignored","Anforderung wird ignoriert"}.
|
||||
{"Requested role","Angeforderte Rolle"}.
|
||||
{"Resources","Ressourcen"}.
|
||||
{"Restart","Neustart"}.
|
||||
{"Restart Service","Dienst neustarten"}.
|
||||
{"Restore Backup from File at ","Datenwiederherstellung aus der Datei "}.
|
||||
{"Restore binary backup after next ejabberd restart (requires less memory):","Stelle binäre Sicherung beim nächsten ejabberd-Neustart wieder her (benötigt weniger Speicher):"}.
|
||||
{"Restore binary backup immediately:","Stelle binäre Sicherung sofort wieder her:"}.
|
||||
{"Restore plain text backup immediately:","Stelle Klartext-Sicherung sofort wieder her:"}.
|
||||
{"Restart","Neustart"}.
|
||||
{"Restore Backup from File at ","Backup wiederherstellen aus Datei bei "}.
|
||||
{"Restore binary backup after next ejabberd restart (requires less memory):","Stelle binäres Backup beim nächsten ejabberd-Neustart wieder her (benötigt weniger Speicher):"}.
|
||||
{"Restore binary backup immediately:","Stelle binäres Backup sofort wieder her:"}.
|
||||
{"Restore plain text backup immediately:","Stelle Klartext-Backup sofort wieder her:"}.
|
||||
{"Restore","Wiederherstellung"}.
|
||||
{"Room Configuration","Raum-Konfiguration"}.
|
||||
{"Roles and Affiliations that May Retrieve Member List","Rollen und Zugehörigkeiten die Mitgliederliste abrufen dürfen"}.
|
||||
{"Roles for which Presence is Broadcasted","Rollen für welche die Präsenz übertragen wird"}.
|
||||
{"Roles that May Send Private Messages","Rollen die Privatnachrichten senden dürfen"}.
|
||||
{"Room Configuration","Raumkonfiguration"}.
|
||||
{"Room creation is denied by service policy","Anlegen des Raumes aufgrund der Dienstrichtlinien verweigert"}.
|
||||
{"Room description","Raumbeschreibung"}.
|
||||
{"Room Occupants","Teilnehmer in diesem Raum"}.
|
||||
{"Room Occupants","Raumteilnehmer"}.
|
||||
{"Room terminates","Raum wird beendet"}.
|
||||
{"Room title","Raumname"}.
|
||||
{"Roster","Kontaktliste"}.
|
||||
{"Roster module has failed","Roster-Modul schlug fehl"}.
|
||||
{"Roster of ","Kontaktliste von "}.
|
||||
{"Roster groups allowed to subscribe","Kontaktlistengruppen die abonnieren dürfen"}.
|
||||
{"Roster of ~ts","Kontaktliste von ~ts"}.
|
||||
{"Roster size","Kontaktlistengröße"}.
|
||||
{"Roster:","Kontaktliste:"}.
|
||||
{"RPC Call Error","Fehler bei RPC-Aufruf"}.
|
||||
{"Running Nodes","Aktive Knoten"}.
|
||||
{"Running Nodes","Laufende Knoten"}.
|
||||
{"~s invites you to the room ~s","~s lädt Sie in den Raum ~s ein"}.
|
||||
{"Saturday","Samstag"}.
|
||||
{"Scan failed","Scan fehlgeschlagen"}.
|
||||
{"Script check","Script-Überprüfung"}.
|
||||
{"Search from the date","Suche ab Datum"}.
|
||||
{"Search Results for ","Suchergebnisse für "}.
|
||||
{"Search users in ","Benutzer suchen in "}.
|
||||
{"Send announcement to all online users on all hosts","Sende Ankündigung an alle angemeldeten Benutzer auf allen Hosts"}.
|
||||
{"Send announcement to all online users","Sende Ankündigung an alle angemeldeten Benutzer"}.
|
||||
{"Send announcement to all users on all hosts","Sende Ankündigung an alle Benutzer auf allen Hosts"}.
|
||||
{"Send announcement to all users","Sende Ankündigung an alle Benutzer"}.
|
||||
{"Search the text","Text durchsuchen"}.
|
||||
{"Search until the date","Suche bis Datum"}.
|
||||
{"Search users in ","Suche Benutzer in "}.
|
||||
{"Select All","Alles auswählen"}.
|
||||
{"Send announcement to all online users on all hosts","Ankündigung an alle angemeldeten Benutzer auf allen Hosts senden"}.
|
||||
{"Send announcement to all online users","Ankündigung an alle angemeldeten Benutzer senden"}.
|
||||
{"Send announcement to all users on all hosts","Ankündigung an alle Benutzer auf allen Hosts senden"}.
|
||||
{"Send announcement to all users","Ankündigung an alle Benutzer senden"}.
|
||||
{"September","September"}.
|
||||
{"Server connections to local subdomains are forbidden","Serververbindungen zu lokalen Subdomains sind verboten"}.
|
||||
{"Server:","Server:"}.
|
||||
{"Set message of the day and send to online users","Setze Nachricht des Tages und sende sie an alle angemeldeten Benutzer"}.
|
||||
{"Set message of the day on all hosts and send to online users","Setze Nachricht des Tages auf allen Hosts und sende sie an alle angemeldeten Benutzer"}.
|
||||
{"Service list retrieval timed out","Zeitüberschreitung bei Abfrage der Serviceliste"}.
|
||||
{"Session state copying timed out","Zeitüberschreitung beim Kopieren des Sitzungszustandes"}.
|
||||
{"Set message of the day and send to online users","Nachricht des Tages setzen und an alle angemeldeten Benutzer senden"}.
|
||||
{"Set message of the day on all hosts and send to online users","Nachricht des Tages auf allen Hosts setzen und an alle angemeldeten Benutzer senden"}.
|
||||
{"Shared Roster Groups","Gruppen der gemeinsamen Kontaktliste"}.
|
||||
{"Show Integral Table","Integral-Tabelle anzeigen"}.
|
||||
{"Show Ordinary Table","Gewöhnliche Tabelle anzeigen"}.
|
||||
{"Shut Down Service","Dienst herunterfahren"}.
|
||||
{"~s invites you to the room ~s","~s lädt Sie in den Raum ~s ein"}.
|
||||
{"Some Jabber clients can store your password in the computer, but you should do this only in your personal computer for safety reasons.","Einige Jabber-Clients speichern Ihr Passwort auf dem Computer. Aus Sicherheitsgründen sollten Sie das nur auf Ihrem persönlichen Computer tun."}.
|
||||
{"~s's Offline Messages Queue","~ss Offline-Nachrichten-Warteschlange"}.
|
||||
{"Start Modules at ","Starte Module auf "}.
|
||||
{"Start Modules","Module starten"}.
|
||||
{"SOCKS5 Bytestreams","SOCKS5-Bytestreams"}.
|
||||
{"Some XMPP clients can store your password in the computer, but you should do this only in your personal computer for safety reasons.","Einige XMPP-Clients speichern Ihr Passwort auf dem Computer. Aus Sicherheitsgründen sollten Sie das nur auf Ihrem persönlichen Computer tun."}.
|
||||
{"Specify the access model","Geben Sie das Zugangsmodell an"}.
|
||||
{"Specify the event message type","Geben Sie den Ereignisnachrichtentyp an"}.
|
||||
{"Specify the publisher model","Geben Sie das Veröffentlichermodell an"}.
|
||||
{"Stanza ID","Stanza-ID"}.
|
||||
{"Statically specify a replyto of the node owner(s)","Ein 'replyto' des/der Nodebesitzer(s) statisch angeben"}.
|
||||
{"Statistics of ~p","Statistiken von ~p"}.
|
||||
{"Statistics","Statistiken"}.
|
||||
{"Stop Modules at ","Stoppe Module auf "}.
|
||||
{"Stop Modules","Module stoppen"}.
|
||||
{"Stop","Anhalten"}.
|
||||
{"Stopped Nodes","Angehaltene Knoten"}.
|
||||
{"Stop","Stoppen"}.
|
||||
{"Storage Type","Speichertyp"}.
|
||||
{"Store binary backup:","Speichere binäre Sicherung:"}.
|
||||
{"Store plain text backup:","Speichere Klartext-Sicherung:"}.
|
||||
{"Store binary backup:","Speichere binäres Backup:"}.
|
||||
{"Store plain text backup:","Speichere Klartext-Backup:"}.
|
||||
{"Stream management is already enabled","Stream-Verwaltung ist bereits aktiviert"}.
|
||||
{"Stream management is not enabled","Stream-Verwaltung ist nicht aktiviert"}.
|
||||
{"Subject","Betreff"}.
|
||||
{"Submit","Senden"}.
|
||||
{"Submitted","Gesendet"}.
|
||||
{"Subscriber Address","Abonnenten-Adresse"}.
|
||||
{"Subscribers may publish","Abonnenten dürfen veröffentlichen"}.
|
||||
{"Subscription requests must be approved and only subscribers may retrieve items","Abonnement-Anforderungen müssen genehmigt werden und nur Abonnenten dürfen Items abrufen"}.
|
||||
{"Subscription","Abonnement"}.
|
||||
{"Subscriptions are not allowed","Abonnements sind nicht erlaubt"}.
|
||||
{"Sunday","Sonntag"}.
|
||||
{"That nickname is already in use by another occupant","Dieser Benutzername wird bereits von einem anderen Teilnehmer genutzt"}.
|
||||
{"That nickname is registered by another person","Dieser Benutzername wurde bereits von jemand anderem registriert"}.
|
||||
{"Text associated with a picture","Text verbunden mit einem Bild"}.
|
||||
{"Text associated with a sound","Text verbunden mit einem Klang"}.
|
||||
{"Text associated with a video","Text verbunden mit einem Video"}.
|
||||
{"Text associated with speech","Text verbunden mit Sprache"}.
|
||||
{"That nickname is already in use by another occupant","Dieser Spitzname wird bereits von einem anderen Teilnehmer verwendet"}.
|
||||
{"That nickname is registered by another person","Dieser Spitzname wurde von jemand anderem registriert"}.
|
||||
{"The account already exists","Das Konto existiert bereits"}.
|
||||
{"The account was not unregistered","Das Konto wurde nicht entfernt"}.
|
||||
{"The body text of the last received message","Der Nachrichtenkörper der letzten erhaltenen Nachricht"}.
|
||||
{"The CAPTCHA is valid.","Das CAPTCHA ist gültig."}.
|
||||
{"The CAPTCHA verification has failed","Die CAPTCHA-Verifizierung schlug fehl"}.
|
||||
{"The feature requested is not supported by the conference","Die gewünschte Eigenschaft wird von der Konferenz nicht unterstützt"}.
|
||||
{"The CAPTCHA verification has failed","Die CAPTCHA-Verifizierung ist fehlgeschlagen"}.
|
||||
{"The captcha you entered is wrong","Das CAPTCHA das Sie eingegeben haben ist falsch"}.
|
||||
{"The child nodes (leaf or collection) associated with a collection","Die mit einer Sammlung verknüpften Kindknoten (Blatt oder Sammlung)"}.
|
||||
{"The collections with which a node is affiliated","Sammlungen, mit welchen ein Knoten in Verbindung steht"}.
|
||||
{"The DateTime at which a leased subscription will end or has ended","Das DateTime an welchem ein geleastes Abonnement enden wird oder geendet hat"}.
|
||||
{"The datetime when the node was created","Das DateTime an welchem der Knoten erstellt wurde"}.
|
||||
{"The default language of the node","Die voreingestellte Sprache des Knotens"}.
|
||||
{"The feature requested is not supported by the conference","Die angeforderte Eigenschaft wird von der Konferenz nicht unterstützt"}.
|
||||
{"The JID of the node creator","Die JID des Nodeerstellers"}.
|
||||
{"The JIDs of those to contact with questions","Die JIDs jener, die bei Fragen zu kontaktieren sind"}.
|
||||
{"The JIDs of those with an affiliation of owner","Die JIDs jener mit einer Zugehörigkeit von Besitzer"}.
|
||||
{"The JIDs of those with an affiliation of publisher","Die JIDs jener mit einer Zugehörigkeit von Veröffentlicher"}.
|
||||
{"The list of JIDs that may associate leaf nodes with a collection","Die Liste der JIDs die Blattknoten mit einer Sammlung verknüpfen dürfen"}.
|
||||
{"The maximum number of child nodes that can be associated with a collection, or `max` for no specific limit other than a server imposed maximum","Die Höchstzahl der untergeordneten Knoten, die einer Sammlung zugeordnet werden können, oder `max`, wenn es keine spezifische Begrenzung gibt, sondern nur eine vom Server festgelegte Höchstzahl"}.
|
||||
{"The minimum number of milliseconds between sending any two notification digests","Die minimale Anzahl an Millisekunden zwischen dem Senden von zwei Benachrichtigungs-Übersichten"}.
|
||||
{"The name of the node","Der Name des Knotens"}.
|
||||
{"The node is a collection node","Der Knoten ist ein Sammlungsknoten"}.
|
||||
{"The node is a leaf node (default)","Der Knoten ist ein Blattknoten (Voreinstellung)"}.
|
||||
{"The NodeID of the relevant node","Die NodeID des relevanten Knotens"}.
|
||||
{"The number of pending incoming presence subscription requests","Die Anzahl der ausstehenden eintreffenden Präsenzabonnement-Anforderungen"}.
|
||||
{"The number of subscribers to the node","Die Anzahl der Abonnenten des Knotens"}.
|
||||
{"The number of unread or undelivered messages","Die Anzahl der ungelesenen oder nicht zugestellten Nachrichten"}.
|
||||
{"The password contains unacceptable characters","Das Passwort enthält ungültige Zeichen"}.
|
||||
{"the password is","das Passwort lautet"}.
|
||||
{"The password is too weak","Das Passwort ist zu schwach"}.
|
||||
{"The password of your Jabber account was successfully changed.","Das Passwort von Ihrem Jabber-Konto wurde geändert."}.
|
||||
{"the password is","das Passwort lautet"}.
|
||||
{"The password of your XMPP account was successfully changed.","Das Passwort Ihres XMPP-Kontos wurde erfolgreich geändert."}.
|
||||
{"The password was not changed","Das Passwort wurde nicht geändert"}.
|
||||
{"The passwords are different","Die Passwörter sind unterschiedlich"}.
|
||||
{"The presence states for which an entity wants to receive notifications","Die Präsenzzustände für welche eine Entität Benachrichtigungen erhalten will"}.
|
||||
{"The query is only allowed from local users","Die Anfrage ist nur von lokalen Benutzern erlaubt"}.
|
||||
{"The query must not contain <item/> elements","Die Anfrage darf keine <item/>-Elemente enthalten"}.
|
||||
{"There was an error changing the password: ","Es trat ein Fehler beim Ändern des Passworts auf: "}.
|
||||
{"The room subject can be modified by participants","Das Raum-Thema kann von Teilnehmern geändert werden"}.
|
||||
{"The sender of the last received message","Der Absender der letzten erhaltenen Nachricht"}.
|
||||
{"The stanza MUST contain only one <active/> element, one <default/> element, or one <list/> element","Das Stanza darf nur ein <active/>-Element, ein <default/>-Element oder ein <list/>-Element enthalten"}.
|
||||
{"The subscription identifier associated with the subscription request","Die mit der Abonnement-Anforderung verknüpfte Abonnement-Bezeichnung"}.
|
||||
{"The type of node data, usually specified by the namespace of the payload (if any)","Die Art der Knotendaten, üblicherweise vom Namensraum der Nutzdaten angegeben (gegebenenfalls)"}.
|
||||
{"The URL of an XSL transformation which can be applied to payloads in order to generate an appropriate message body element.","Die URL einer XSL-Transformation welche auf Nutzdaten angewendet werden kann, um ein geeignetes Nachrichtenkörper-Element zu generieren."}.
|
||||
{"The URL of an XSL transformation which can be applied to the payload format in order to generate a valid Data Forms result that the client could display using a generic Data Forms rendering engine","Die URL einer XSL-Transformation welche auf das Nutzdaten-Format angewendet werden kann, um ein gültiges Data Forms-Ergebnis zu generieren das der Client mit Hilfe einer generischen Data Forms-Rendering-Engine anzeigen könnte"}.
|
||||
{"There was an error changing the password: ","Es trat ein Fehler beim Ändern des Passwortes auf: "}.
|
||||
{"There was an error creating the account: ","Es trat ein Fehler beim Erstellen des Kontos auf: "}.
|
||||
{"There was an error deleting the account: ","Es trat ein Fehler beim Löschen des Kontos auf: "}.
|
||||
{"The stanza MUST contain only one <active/> element, one <default/> element, or one <list/> element","Das Stanza darf nur ein <active/>-Element, ein <default/>-Element oder ein <list/>-Element enthalten."}.
|
||||
{"This is case insensitive: macbeth is the same that MacBeth and Macbeth.","Groß-/Kleinschreibung spielt hierbei keine Rolle: macbeth ist gleich MacBeth und Macbeth."}.
|
||||
{"This page allows to create a Jabber account in this Jabber server. Your JID (Jabber IDentifier) will be of the form: username@server. Please read carefully the instructions to fill correctly the fields.","Diese Seite erlaubt das Anlegen eines Jabber-Kontos auf diesem Jabber-Server. Ihre JID (Jabber IDentifier) setzt sich folgend zusammen: benutzername@server. Bitte lesen sie die Hinweise genau durch, um die Felder korrekt auszufüllen."}.
|
||||
{"This page allows to unregister a Jabber account in this Jabber server.","Diese Seite erlaubt es, ein Jabber-Konto von diesem Server zu entfernen."}.
|
||||
{"This is case insensitive: macbeth is the same that MacBeth and Macbeth.","Dies ist schreibungsunabhängig: macbeth ist gleich MacBeth und Macbeth."}.
|
||||
{"This page allows to register an XMPP account in this XMPP server. Your JID (Jabber ID) will be of the form: username@server. Please read carefully the instructions to fill correctly the fields.","Diese Seite erlaubt das Anlegen eines XMPP-Kontos auf diesem XMPP-Server. Ihre JID (Jabber-ID) wird diese Form aufweisen: benutzername@server. Bitte lesen Sie die Anweisungen genau durch, um die Felder korrekt auszufüllen."}.
|
||||
{"This page allows to unregister an XMPP account in this XMPP server.","Diese Seite erlaubt es, ein XMPP-Konto von diesem XMPP-Server zu entfernen."}.
|
||||
{"This room is not anonymous","Dieser Raum ist nicht anonym"}.
|
||||
{"This service can not process the address: ~s","Dieser Dienst kann die Adresse nicht verarbeiten: ~s"}.
|
||||
{"Thursday","Donnerstag"}.
|
||||
{"Time delay","Zeitverzögerung"}.
|
||||
{"Timed out waiting for stream resumption","Zeitüberschreitung beim Warten auf Streamfortsetzung"}.
|
||||
{"Time","Zeit"}.
|
||||
{"To register, visit ~s","Um sich zu registrieren, besuchen Sie ~s"}.
|
||||
{"To ~ts","An ~ts"}.
|
||||
{"To","An"}.
|
||||
{"Token TTL","Token TTL"}.
|
||||
{"Token TTL","Token-TTL"}.
|
||||
{"Too many active bytestreams","Zu viele aktive Bytestreams"}.
|
||||
{"Too many CAPTCHA requests","Zu viele CAPTCHA-Anfragen"}.
|
||||
{"Too many CAPTCHA requests","Zu viele CAPTCHA-Anforderungen"}.
|
||||
{"Too many child elements","Zu viele 'child'-Elemente"}.
|
||||
{"Too many <item/> elements","Zu viele <item/>-Elemente"}.
|
||||
{"Too many <list/> elements","Zu viele <list/>-Elemente"}.
|
||||
{"Too many (~p) failed authentications from this IP address (~s). The address will be unblocked at ~s UTC","Zu viele (~p) fehlgeschlagene Anmeldeversuche von dieser IP Adresse (~s). Die Adresse wird bis ~s UTC blockiert."}.
|
||||
{"Too many (~p) failed authentications from this IP address (~s). The address will be unblocked at ~s UTC","Zu viele (~p) fehlgeschlagene Authentifizierungen von dieser IP-Adresse (~s). Die Adresse wird an ~s UTC entsperrt"}.
|
||||
{"Too many receiver fields were specified","Zu viele Empfängerfelder wurden angegeben"}.
|
||||
{"Too many unacked stanzas","Zu viele unbestätigte Stanzas"}.
|
||||
{"Too many users in this conference","Zu viele Benutzer in dieser Konferenz"}.
|
||||
{"To register, visit ~s","Um sich anzumelden, besuchen Sie ~s"}.
|
||||
{"To ~s","An ~s"}.
|
||||
{"Total rooms","Alle Chaträume"}.
|
||||
{"Total rooms","Gesamte Räume"}.
|
||||
{"Traffic rate limit is exceeded","Datenratenlimit wurde überschritten"}.
|
||||
{"Transactions Aborted:","Abgebrochene Transaktionen:"}.
|
||||
{"Transactions Committed:","Durchgeführte Transaktionen:"}.
|
||||
{"Transactions Committed:","Übergebene Transaktionen:"}.
|
||||
{"Transactions Logged:","Protokollierte Transaktionen:"}.
|
||||
{"Transactions Restarted:","Neu gestartete Transaktionen:"}.
|
||||
{"~ts's Offline Messages Queue","Offline-Nachrichten-Warteschlange von ~ts"}.
|
||||
{"Tuesday","Dienstag"}.
|
||||
{"Unable to generate a CAPTCHA","Konnte CAPTCHA nicht erstellen"}.
|
||||
{"Unable to register route on existing local domain","Konnte Route auf existierender lokaler Domain nicht registrieren"}.
|
||||
{"Unauthorized","Nicht berechtigt"}.
|
||||
{"Unable to generate a CAPTCHA","Konnte kein CAPTCHA erstellen"}.
|
||||
{"Unable to register route on existing local domain","Konnte Route auf existierender lokaler Domäne nicht registrieren"}.
|
||||
{"Unauthorized","Nicht autorisiert"}.
|
||||
{"Unexpected action","Unerwartete Aktion"}.
|
||||
{"Unregister","Abmelden"}.
|
||||
{"Unregister a Jabber account","Jabber-Konto entfernen"}.
|
||||
{"Unexpected error condition: ~p","Unerwarteter Fehlerzustand: ~p"}.
|
||||
{"Unregister an XMPP account","Ein XMPP-Konto entfernen"}.
|
||||
{"Unregister","Deregistrieren"}.
|
||||
{"Unselect All","Alle abwählen"}.
|
||||
{"Unsupported <index/> element","Nicht unterstütztes <index/>-Element"}.
|
||||
{"Update","Aktualisieren"}.
|
||||
{"Unsupported version","Nicht unterstützte Version"}.
|
||||
{"Update message of the day (don't send)","Aktualisiere Nachricht des Tages (nicht senden)"}.
|
||||
{"Update message of the day on all hosts (don't send)","Aktualisiere Nachricht des Tages auf allen Hosts (nicht senden)"}.
|
||||
{"Update ~p","Aktualisierung ~p"}.
|
||||
{"Update plan","Aktualisierungsplan"}.
|
||||
{"Update ~p","~p aktualisieren"}.
|
||||
{"Update script","Aktualisierungsscript"}.
|
||||
{"Update","Aktualisieren"}.
|
||||
{"Uptime:","Betriebszeit:"}.
|
||||
{"URL for Archived Discussion Logs","URL für archivierte Diskussionsprotokolle"}.
|
||||
{"User already exists","Benutzer existiert bereits"}.
|
||||
{"User","Benutzer"}.
|
||||
{"User (jid)","Benutzer (JID)"}.
|
||||
{"User JID","Benutzer-JID"}.
|
||||
{"User Management","Benutzerverwaltung"}.
|
||||
{"Username:","Benutzername:"}.
|
||||
{"Users are not allowed to register accounts so quickly","Benutzer dürfen Konten nicht so schnell registrieren"}.
|
||||
{"Users","Benutzer"}.
|
||||
{"User ~s","Benutzer ~s"}.
|
||||
{"User removed","Benutzer entfernt"}.
|
||||
{"User session not found","Benutzersitzung nicht gefunden"}.
|
||||
{"User session terminated","Benutzersitzung beendet"}.
|
||||
{"User ~ts","Benutzer ~ts"}.
|
||||
{"User","Benutzer"}.
|
||||
{"Username:","Benutzername:"}.
|
||||
{"Users are not allowed to register accounts so quickly","Benutzer dürfen Konten nicht so schnell registrieren"}.
|
||||
{"Users Last Activity","Letzte Benutzeraktivität"}.
|
||||
{"Users","Benutzer"}.
|
||||
{"Validate","Validieren"}.
|
||||
{"Value 'get' of 'type' attribute is not allowed","Wert 'get' des 'type'-Attributs ist nicht erlaubt"}.
|
||||
{"Value of '~s' should be boolean","Wert von '~s' sollte boolesch sein"}.
|
||||
{"Value of '~s' should be datetime string","Wert von '~s' sollte datetime-String sein"}.
|
||||
{"Value of '~s' should be datetime string","Wert von '~s' sollte DateTime-Zeichenkette sein"}.
|
||||
{"Value of '~s' should be integer","Wert von '~s' sollte eine Ganzzahl sein"}.
|
||||
{"Value 'set' of 'type' attribute is not allowed","Wert 'set' des 'type'-Attributs ist nicht erlaubt"}.
|
||||
{"vCard User Search","vCard-Benutzer-Suche"}.
|
||||
{"View Queue","Warteschlange ansehen"}.
|
||||
{"View Roster","Kontaktliste ansehen"}.
|
||||
{"Virtual Hosts","Virtuelle Hosts"}.
|
||||
{"Visitors are not allowed to change their nicknames in this room","Besucher dürfen in diesem Raum ihren Benutzernamen nicht ändern"}.
|
||||
{"Visitors are not allowed to send messages to all occupants","Besucher dürfen nicht an alle Teilnehmer Nachrichten verschicken"}.
|
||||
{"Voice request","Anfrage für Sprachrechte"}.
|
||||
{"Voice requests are disabled in this conference","Anfragen für Sprachrechte sind in diesem Raum deaktiviert"}.
|
||||
{"Visitor","Besucher"}.
|
||||
{"Visitors are not allowed to change their nicknames in this room","Besucher dürfen in diesem Raum ihren Spitznamen nicht ändern"}.
|
||||
{"Visitors are not allowed to send messages to all occupants","Besucher dürfen nicht an alle Teilnehmer Nachrichten versenden"}.
|
||||
{"Voice requests are disabled in this conference","Sprachrecht-Anforderungen sind in diesem Raum deaktiviert"}.
|
||||
{"Voice request","Sprachrecht-Anforderung"}.
|
||||
{"Wednesday","Mittwoch"}.
|
||||
{"You can later change your password using a Jabber client.","Sie können das Passwort später mit einem Jabber-Client ändern."}.
|
||||
{"When a new subscription is processed and whenever a subscriber comes online","Sobald ein neues Abonnement verarbeitet wird und wann immer ein Abonnent sich anmeldet"}.
|
||||
{"When a new subscription is processed","Sobald ein neues Abonnement verarbeitet wird"}.
|
||||
{"When to send the last published item","Wann das letzte veröffentlichte Item gesendet werden soll"}.
|
||||
{"Whether an entity wants to receive an XMPP message body in addition to the payload format","Ob eine Entität zusätzlich zum Nutzdatenformat einen XMPP-Nachrichtenkörper erhalten will"}.
|
||||
{"Whether an entity wants to receive digests (aggregations) of notifications or all notifications individually","Ob eine Entität Übersichten (Gruppierungen) von Benachrichtigungen oder alle Benachrichtigungen separat erhalten will"}.
|
||||
{"Whether an entity wants to receive or disable notifications","Ob eine Entität Benachrichtigungen erhalten oder deaktivieren will"}.
|
||||
{"Whether owners or publisher should receive replies to items","Ob Besitzer oder Veröffentlicher Antworten auf Items erhalten sollen"}.
|
||||
{"Whether the node is a leaf (default) or a collection","Ob der Knoten ein Blatt (Voreinstellung) oder eine Sammlung ist"}.
|
||||
{"Whether to allow subscriptions","Ob Abonnements erlaubt sind"}.
|
||||
{"Whether to make all subscriptions temporary, based on subscriber presence","Ob alle Abonnements temporär gemacht werden sollen, basierend auf der Abonnentenpräsenz"}.
|
||||
{"Whether to notify owners about new subscribers and unsubscribes","Ob Besitzer über neue Abonnenten und Abbestellungen benachrichtigt werden sollen"}.
|
||||
{"Who may associate leaf nodes with a collection","Wer Blattknoten mit einer Sammlung verknüpfen darf"}.
|
||||
{"Wrong parameters in the web formulary","Falsche Parameter im Webformular"}.
|
||||
{"Wrong xmlns","Falscher xmlns"}.
|
||||
{"XMPP Account Registration","XMPP-Konto-Registrierung"}.
|
||||
{"XMPP Domains","XMPP-Domänen"}.
|
||||
{"XMPP Show Value of Away","XMPP-Anzeigewert von Abwesend"}.
|
||||
{"XMPP Show Value of Chat","XMPP-Anzeigewert von Chat"}.
|
||||
{"XMPP Show Value of DND (Do Not Disturb)","XMPP-Anzeigewert von DND (Do Not Disturb/Bitte nicht stören)"}.
|
||||
{"XMPP Show Value of XA (Extended Away)","XMPP-Anzeigewert von XA (Extended Away/für längere Zeit abwesend)"}.
|
||||
{"XMPP URI of Associated Publish-Subscribe Node","XMPP-URI des verknüpften Publish-Subscribe-Knotens"}.
|
||||
{"You are being removed from the room because of a system shutdown","Sie werden wegen einer Systemabschaltung aus dem Raum entfernt"}.
|
||||
{"You are not joined to the channel","Sie sind dem Raum nicht beigetreten"}.
|
||||
{"You can later change your password using an XMPP client.","Sie können Ihr Passwort später mit einem XMPP-Client ändern."}.
|
||||
{"You have been banned from this room","Sie wurden aus diesem Raum verbannt"}.
|
||||
{"You have joined too many conferences","Sie sind zu vielen Konferenzen beigetreten"}.
|
||||
{"You must fill in field \"Nickname\" in the form","Sie müssen das Feld \"Benutzername\" ausfüllen"}.
|
||||
{"You need a client that supports x:data and CAPTCHA to register","Sie benötigen einen Client der x:data und CAPTCHA unterstützt, um Ihren Benutzernamen zu registrieren"}.
|
||||
{"You need a client that supports x:data to register the nickname","Sie benötigen einen Client der x:data unterstützt, um Ihren Benutzernamen zu registrieren"}.
|
||||
{"You need an x:data capable client to search","Sie benötigen einen Client, der x:data unterstützt, um die Suche verwenden zu können"}.
|
||||
{"Your active privacy list has denied the routing of this stanza.","Ihre aktive Privacy-Liste hat die Weiterleitung des Stanzas unterbunden."}.
|
||||
{"Your contact offline message queue is full. The message has been discarded.","Ihre Offline-Nachrichten-Warteschlange ist voll. Die Nachricht wurde verworfen."}.
|
||||
{"You're not allowed to create nodes","Es ist Ihnen nicht erlaubt Knoten zu erstellen"}.
|
||||
{"Your Jabber account was successfully created.","Ihr Jabber Konto wurde erfolgreich erstellt."}.
|
||||
{"Your Jabber account was successfully deleted.","Ihr Jabber Konto wurde erfolgreich gelöscht."}.
|
||||
{"You must fill in field \"Nickname\" in the form","Sie müssen das Feld \"Spitzname\" im Formular ausfüllen"}.
|
||||
{"You need a client that supports x:data and CAPTCHA to register","Sie benötigen einen Client der x:data und CAPTCHA unterstützt, um sich zu registrieren"}.
|
||||
{"You need a client that supports x:data to register the nickname","Sie benötigen einen Client der x:data unterstützt, um Ihren Spitznamen zu registrieren"}.
|
||||
{"You need an x:data capable client to search","Sie benötigen einen Client der x:data unterstützt, um zu suchen"}.
|
||||
{"Your active privacy list has denied the routing of this stanza.","Ihre aktive Privacy-Liste hat das Routing dieses Stanzas verweigert."}.
|
||||
{"Your contact offline message queue is full. The message has been discarded.","Die Offline-Nachrichten-Warteschlange Ihres Kontaktes ist voll. Die Nachricht wurde verworfen."}.
|
||||
{"Your subscription request and/or messages to ~s have been blocked. To unblock your subscription request, visit ~s","Ihre Abonnement-Anforderung und/oder Nachrichten an ~s wurden blockiert. Um Ihre Abonnement-Anforderungen freizugeben, besuchen Sie ~s"}.
|
||||
{"Your XMPP account was successfully registered.","Ihr XMPP-Konto wurde erfolgreich registriert."}.
|
||||
{"Your XMPP account was successfully unregistered.","Ihr XMPP-Konto wurde erfolgreich entfernt."}.
|
||||
{"You're not allowed to create nodes","Sie dürfen keine Knoten erstellen"}.
|
||||
|
||||
-2639
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
+358
-144
@@ -1,6 +1,24 @@
|
||||
%% -*- coding: utf-8 -*-
|
||||
%% Generated automatically
|
||||
%% DO NOT EDIT: run `make translations` instead
|
||||
%% To improve translations please read:
|
||||
%% https://docs.ejabberd.im/developer/extending-ejabberd/localization/
|
||||
|
||||
{" (Add * to the end of field to match substring)"," (Προσθέστε * στο τέλος του πεδίου για ταίριασμα με το substring)"}.
|
||||
{" has set the subject to: "," έχει θέσει το θέμα σε: "}.
|
||||
{"# participants","# συμμετέχοντες"}.
|
||||
{"A description of the node","Μία περιγραφή του κόμβου"}.
|
||||
{"A friendly name for the node","Ένα φιλικό όνομα για τον κόμβο"}.
|
||||
{"A password is required to enter this room","Απαιτείται κωδικός πρόσβασης για είσοδο σε αυτή την αίθουσα"}.
|
||||
{"A Web Page","Μία ιστοσελίδα"}.
|
||||
{"Accept","Αποδοχή"}.
|
||||
{"Access denied by service policy","Άρνηση πρόσβασης, λόγω τακτικής παροχής υπηρεσιών"}.
|
||||
{"Access model of authorize","Μοντέλο πρόσβασης της πιστοποίησης"}.
|
||||
{"Access model of open","Μοντέλο πρόσβασης του ανοικτού"}.
|
||||
{"Access model of presence","Μοντέλο πρόσβασης της παρουσίας"}.
|
||||
{"Access model of roster","Μοντέλο πρόσβασης της Λίστας Επαφών"}.
|
||||
{"Access model of whitelist","Μοντέλο πρόσβασης της Λευκής Λίστας"}.
|
||||
{"Access model","Καθορίστε το μοντέλο πρόσβασης"}.
|
||||
{"Account doesn't exist","Ο λογαριασμός δεν υπάρχει"}.
|
||||
{"Action on user","Eνέργεια για το χρήστη"}.
|
||||
{"Add Jabber ID","Προσθήκη Jabber Ταυτότητας"}.
|
||||
{"Add New","Προσθήκη νέου"}.
|
||||
@@ -9,17 +27,37 @@
|
||||
{"Administration","Διαχείριση"}.
|
||||
{"Administrator privileges required","Aπαιτούνται προνόμια διαχειριστή"}.
|
||||
{"All activity","Όλες οι δραστηριότητες"}.
|
||||
{"Allow users to change the subject","Επιτρέψετε στους χρήστες να αλλάζουν το θέμα"}.
|
||||
{"Allow users to query other users","Επιτρέπστε στους χρήστες να ερωτούν άλλους χρήστες"}.
|
||||
{"Allow users to send invites","Επιτρέψετε στους χρήστες να αποστέλλουν προσκλήσεις"}.
|
||||
{"Allow users to send private messages","Επιτρέψετε στους χρήστες να αποστέλλουν ιδιωτικά μηνύματα"}.
|
||||
{"Allow visitors to change nickname","Επιτρέψετε στους επισκέπτες να αλλάζου ψευδώνυμο"}.
|
||||
{"Allow visitors to send private messages to","Επιτρέψετε στους χρήστες να αποστέλλουν ιδιωτικά μηνύματα σε"}.
|
||||
{"Allow visitors to send status text in presence updates","Επιτρέψτε στους επισκέπτες να αποστέλλουν κατάσταση στις ενημερώσεις παρουσίας"}.
|
||||
{"All Users","Όλοι οι χρήστες"}.
|
||||
{"Allow subscription","Επιτρέψτε την Συνδρομή"}.
|
||||
{"Allow this Jabber ID to subscribe to this pubsub node?","Επιτρέπετε σε αυτή την Jabber Ταυτότητα να εγγραφεί σε αυτό τον κόμβο Δημοσίευσης-Εγγραφής;"}.
|
||||
{"Allow this person to register with the room?","Επιτρέπτε στο άτομο να καταχωρηθεί στην αίθουσα;"}.
|
||||
{"Allow users to change the subject","Επιτρέψτε στους χρήστες να αλλάζουν το θέμα"}.
|
||||
{"Allow users to query other users","Επιτρέψτε στους χρήστες να ερωτούν άλλους χρήστες"}.
|
||||
{"Allow users to send invites","Επιτρέψτε στους χρήστες να αποστέλλουν προσκλήσεις"}.
|
||||
{"Allow users to send private messages","Επιτρέψτε στους χρήστες να αποστέλλουν ιδιωτικά μηνύματα"}.
|
||||
{"Allow visitors to change nickname","Επιτρέψτε στους επισκέπτες να αλλάζου ψευδώνυμο"}.
|
||||
{"Allow visitors to send private messages to","Επιτρέψτε στους χρήστες να αποστέλλουν ιδιωτικά μηνύματα σε"}.
|
||||
{"Allow visitors to send status text in presence updates","Επιτρέψτε στους επισκέπτες να αποστέλλουν κατάσταση στις ενημερώσεις παρουσίας"}.
|
||||
{"Allow visitors to send voice requests","Επιτρέψτε στους επισκέπτες να στέλνουν αιτήματα φωνής"}.
|
||||
{"An associated LDAP group that defines room membership; this should be an LDAP Distinguished Name according to an implementation-specific or deployment-specific definition of a group.","Μία σχετική LDAP ομάδα που καθορίζει τις συνδρομές στην αίθουσα: αυτό θα πρέπει να είναι ένα Διακεκριμένο Όνομα LDAP, σύμφωνα με τον προσδιορισμό κατεύθυνσης υλοποίησης ή ανάπτυξης της ομάδας."}.
|
||||
{"Announcements","Ανακοινώσεις"}.
|
||||
{"A password is required to enter this room","Απαιτείται κωδικός πρόσβασης για είσοδο σε αυτή την αίθουσα"}.
|
||||
{"Answer associated with a picture","Η απάντηση σχετίστηκε με μια εικόνα"}.
|
||||
{"Answer associated with a video","Η απάντηση σχετίστηκε με ένα βίντεο"}.
|
||||
{"Answer associated with speech","Η απάντηση σχετίστηκε με ομιλία"}.
|
||||
{"Answer to a question","Απάντηση σε ερώτηση"}.
|
||||
{"Anyone in the specified roster group(s) may subscribe and retrieve items","Οποιοσδήποτε στις ορισθείσες Λίστες Ομάδων δύναται να εγγραφεί και να παραλάβει αντικείμενα"}.
|
||||
{"Anyone may associate leaf nodes with the collection","Οποιοσδήποτε μπορεί να συσχετίσει κόμβους φύλλων με τη συλλογή"}.
|
||||
{"Anyone may publish","Οποιοσδήποτε δύναται να δημοσιέυει"}.
|
||||
{"Anyone may subscribe and retrieve items","Οποιοσδήποτε δύναται να εγγραφεί και να παραλάβει αντικείμενα"}.
|
||||
{"Anyone with a presence subscription of both or from may subscribe and retrieve items","Όποιος έχει συνδρομή παρουσίας και των δύο ή από μπορεί να εγγραφεί και να ανακτήσει στοιχεία"}.
|
||||
{"Anyone with Voice","Οποιοσδήποτε με Φωνή"}.
|
||||
{"Anyone","Οποιοσδήποτε"}.
|
||||
{"April","Απρίλιος"}.
|
||||
{"Attribute 'channel' is required for this request","Το δηλωτικό 'channel' απαιτείται για αυτό το Ερώτημα"}.
|
||||
{"Attribute 'id' is mandatory for MIX messages","Το δηλωτικό 'id' επιτακτικό για μηνύματα MIX"}.
|
||||
{"Attribute 'jid' is not allowed here","Το δηλωτικό 'jid' δεν επιτρέπεται εδώ"}.
|
||||
{"Attribute 'node' is not allowed here","Το δηλωτικό 'node' δεν επιτρέπεται εδώ"}.
|
||||
{"Attribute 'to' of stanza that triggered challenge","Το δηλωτικό 'to' του Δωματίου που ξεκίνησε την πρόκληση"}.
|
||||
{"August","Αύγουστος"}.
|
||||
{"Automatic node creation is not enabled","Η αυτόματη δημιουργία κόμβων δεν είναι ενεργοποιημένη"}.
|
||||
{"Backup Management","Διαχείριση Αντιγράφου Ασφαλείας"}.
|
||||
@@ -29,73 +67,88 @@
|
||||
{"Bad format","Ακατάλληλη μορφή"}.
|
||||
{"Birthday","Γενέθλια"}.
|
||||
{"Both the username and the resource are required","Τόσο το όνομα χρήστη όσο και ο πόρος είναι απαραίτητα"}.
|
||||
{"Bytestream already activated","Το Bytestream έχει ήδη ενεργοποιηθε"}.
|
||||
{"Bytestream already activated","Το Bytestream έχει ήδη ενεργοποιηθεί"}.
|
||||
{"Cannot remove active list","Δεν είναι δυνατή η κατάργηση της ενεργής λίστας"}.
|
||||
{"Cannot remove default list","Δεν μπορείτε να καταργήσετε την προεπιλεγμένη λίστα"}.
|
||||
{"CAPTCHA web page","Ιστοσελίδα CAPTCHA"}.
|
||||
{"Change Password","Αλλαγή κωδικού"}.
|
||||
{"Change User Password","Αλλαγή Κωδικού Πρόσβασης Χρήστη"}.
|
||||
{"Challenge ID","Ταυτότητα Πρόκλησης"}.
|
||||
{"Change Password","Αλλαγή κωδικού πρόσβασης"}.
|
||||
{"Change User Password","Αλλαγή κωδικού πρόσβασης χρήστη"}.
|
||||
{"Changing password is not allowed","Η αλλαγή του κωδικού πρόσβασης δεν επιτρέπεται"}.
|
||||
{"Changing role/affiliation is not allowed","Η αλλαγή ρόλου/ομάδας δεν επιτρέπεται"}.
|
||||
{"Characters not allowed:","Χαρακτήρες δεν επιτρέπονται:"}.
|
||||
{"Chatroom configuration modified","Διαμόρφωση Αίθουσaς σύνεδριασης τροποποιηθηκε"}.
|
||||
{"Chatroom is created","Η αίθουσα σύνεδριασης δημιουργήθηκε"}.
|
||||
{"Channel already exists","Το κανάλι υπάρχει ήδη"}.
|
||||
{"Channel does not exist","Το κανάλι δεν υπάρχει"}.
|
||||
{"Channels","Κανάλια"}.
|
||||
{"Characters not allowed:","Χαρακτήρες που δεν επιτρέπονται:"}.
|
||||
{"Chatroom configuration modified","Η ρύθμιση παραμέτρων της αίθουσας σύνεδριασης τροποποιηθηκε"}.
|
||||
{"Chatroom is created","Η αίθουσα συνομιλίας έχει δημιουργηθεί"}.
|
||||
{"Chatroom is destroyed","Η αίθουσα σύνεδριασης διαγράφηκε"}.
|
||||
{"Chatroom is started","Η αίθουσα σύνεδριασης έχει ξεκινήσει"}.
|
||||
{"Chatroom is stopped","Η αίθουσα σύνεδριασης έχει σταματήσει"}.
|
||||
{"Chatrooms","Αίθουσες σύνεδριασης"}.
|
||||
{"Choose a username and password to register with this server","Επιλέξτε ένα όνομα χρήστη και κωδικό πρόσβασης για να εγγραφείτε σε αυτό τον διακομιστή"}.
|
||||
{"Choose modules to stop","Επιλέξτε modules για να σταματήσουν"}.
|
||||
{"Choose storage type of tables","Επιλέξτε τύπο αποθήκευσης των πινάκων"}.
|
||||
{"Choose whether to approve this entity's subscription.","Επιλέξτε αν θα εγκρίθεί η εγγραφή αυτής της οντότητας."}.
|
||||
{"City","Πόλη"}.
|
||||
{"Client acknowledged more stanzas than sent by server","Ο πελάτης γνωρίζει περισσότερα δωμάτια από αυτά που στάλθηκαν από τον εξυπηρετητή"}.
|
||||
{"Commands","Εντολές"}.
|
||||
{"Conference room does not exist","Αίθουσα σύνεδριασης δεν υπάρχει"}.
|
||||
{"Configuration of room ~s","Διαμόρφωση Αίθουσας σύνεδριασης ~s"}.
|
||||
{"Configuration","Διαμόρφωση"}.
|
||||
{"Conference room does not exist","Η αίθουσα σύνεδριασης δεν υπάρχει"}.
|
||||
{"Configuration of room ~s","Διαμόρφωση δωματίου ~ s"}.
|
||||
{"Configuration","Ρύθμιση παραμέτρων"}.
|
||||
{"Connected Resources:","Συνδεδεμένοι Πόροι:"}.
|
||||
{"Contact Addresses (normally, room owner or owners)","Διευθύνσεις της Επαφής (κανονικά, ιδιοκτήτης (-ες) αίθουσας)"}.
|
||||
{"Country","Χώρα"}.
|
||||
{"CPU Time:","Ώρα CPU:"}.
|
||||
{"Current Discussion Topic","Τρέχων θέμα συζήτησης"}.
|
||||
{"Database failure","Αποτυχία βάσης δεδομένων"}.
|
||||
{"Database Tables at ~p","Πίνακες βάσης δεδομένων στο ~p"}.
|
||||
{"Database Tables Configuration at ","Διαμόρφωση Πίνακων βάσης δεδομένων στο "}.
|
||||
{"Database","Βάση δεδομένων"}.
|
||||
{"December","Δεκέμβριος"}.
|
||||
{"Default users as participants","Προεπιλογη χρήστων ως συμμετέχοντες"}.
|
||||
{"Default users as participants","Προρυθμισμένοι χρήστες ως συμμετέχοντες"}.
|
||||
{"Delete content","Διαγραφή περιεχομένων"}.
|
||||
{"Delete message of the day on all hosts","Διαγράψτε το μήνυμα της ημέρας σε όλους τους κεντρικούς υπολογιστές"}.
|
||||
{"Delete message of the day","Διαγράψτε το μήνυμα της ημέρας"}.
|
||||
{"Delete Selected","Διαγραφή επιλεγμένων"}.
|
||||
{"Delete table","Διαγραφή Πίνακα"}.
|
||||
{"Delete User","Διαγραφή Χρήστη"}.
|
||||
{"Deliver event notifications","Παράδοση ειδοποιήσεων συμβάντων"}.
|
||||
{"Deliver payloads with event notifications","Κοινοποίηση φόρτου εργασιών με τις ειδοποιήσεις συμβάντων"}.
|
||||
{"Description:","Περιγραφή:"}.
|
||||
{"Disc only copy","Αντίγραφο μόνο σε δίσκο"}.
|
||||
{"Displayed Groups:","Εμφανίσμενες Ομάδες:"}.
|
||||
{"Don't tell your password to anybody, not even the administrators of the Jabber server.","Μην πείτε τον κωδικό πρόσβασής σας σε κανέναν, ακόμη και στους διαχειριστές του διακομιστή Jabber."}.
|
||||
{"'Displayed groups' not added (they do not exist!): ","'Οι εμφανιζόμενες ομάδες' δεν προστέθηκαν (δεν υπάρχουν!): "}.
|
||||
{"Displayed:","Απεικονίζεται:"}.
|
||||
{"Don't tell your password to anybody, not even the administrators of the XMPP server.","Μην πείτε τον κωδικό πρόσβασής σας σε κανέναν, ούτε στους διαχειριστές του διακομιστή XMPP."}.
|
||||
{"Dump Backup to Text File at ","Αποθήκευση Αντιγράφου Ασφαλείας σε αρχείο κειμένου στο "}.
|
||||
{"Dump to Text File","Αποθήκευση σε αρχείο κειμένου"}.
|
||||
{"Duplicated groups are not allowed by RFC6121","Δεν επιτρέπονται διπλότυπες ομάδες από το RFC6121"}.
|
||||
{"Dynamically specify a replyto of the item publisher","Δυναμικά προσδιορίστε το Απάντηση σε του εκδότη του αντικειμένου"}.
|
||||
{"Edit Properties","Επεξεργασία ιδιοτήτων"}.
|
||||
{"Either approve or decline the voice request.","Είτε εγκρίνετε ή απορρίψτε το αίτημα φωνής."}.
|
||||
{"ejabberd MUC module","ejabberd MUC module"}.
|
||||
{"ejabberd HTTP Upload service","Υπηρεσία ανεβάσματος αρχείων του ejabberd"}.
|
||||
{"ejabberd MUC module","ενότητα ejabberd MUC"}.
|
||||
{"ejabberd Multicast service","υπηρεσία ejabberd Multicast"}.
|
||||
{"ejabberd Publish-Subscribe module","ejabberd module Δημοσίευσης-Εγγραφής"}.
|
||||
{"ejabberd SOCKS5 Bytestreams module","ejabberd SOCKS5 Bytestreams module"}.
|
||||
{"ejabberd SOCKS5 Bytestreams module","ενότητα ejabberd SOCKS5 Bytestreams"}.
|
||||
{"ejabberd vCard module","ejabberd vCard module"}.
|
||||
{"ejabberd Web Admin","ejabberd Web Admin"}.
|
||||
{"ejabberd","ejabberd"}.
|
||||
{"Elements","Στοιχεία"}.
|
||||
{"Email","Email"}.
|
||||
{"Empty password","Ο κωδικός πρόσβασης είναι κενός"}.
|
||||
{"Email Address","Ηλεκτρονική Διεύθυνση"}.
|
||||
{"Email","Ηλεκτρονικό ταχυδρομείο"}.
|
||||
{"Enable logging","Ενεργοποίηση καταγραφής"}.
|
||||
{"Enable message archiving","Ενεργοποιήστε την αρχειοθέτηση μηνυμάτων"}.
|
||||
{"Enabling push without 'node' attribute is not supported","Η ενεργοποίηση της ώθησης χωρίς το χαρακτηριστικό 'κόμβος' δεν υποστηρίζεται"}.
|
||||
{"End User Session","Τερματισμός Συνεδρίας Χρήστη"}.
|
||||
{"Enter list of {Module, [Options]}","Εισάγετε κατάλογο των (Module, [Options])"}.
|
||||
{"Enter nickname you want to register","Πληκτρολογήστε το ψευδώνυμο που θέλετε να εγγραφείτε"}.
|
||||
{"Enter nickname you want to register","Πληκτρολογήστε το ψευδώνυμο που θέλετε να καταχωρήσετε"}.
|
||||
{"Enter path to backup file","Εισάγετε τοποθεσία αρχείου αντιγράφου ασφαλείας"}.
|
||||
{"Enter path to jabberd14 spool dir","Εισάγετε κατάλογο αρχείων σειράς jabberd14"}.
|
||||
{"Enter path to jabberd14 spool file","Εισάγετε τοποθεσία αρχείου σειράς jabberd14"}.
|
||||
{"Enter path to text file","Εισάγετε Τοποθεσία Αρχείου Κειμένου"}.
|
||||
{"Enter the text you see","Πληκτρολογήστε το κείμενο που βλέπετε"}.
|
||||
{"Erlang Jabber Server","Erlang Jabber Διακομιστής"}.
|
||||
{"Erlang XMPP Server","Διακομιστής Erlang XMPP"}.
|
||||
{"Error","Σφάλμα"}.
|
||||
{"Exclude Jabber IDs from CAPTCHA challenge","Εξαίρεσε αυτές τις ταυτότητες Jabber από την CAPTCHA πρόκληση"}.
|
||||
{"Export all tables as SQL queries to a file:","Εξαγωγή όλων των πινάκων ως ερωτημάτων SQL σε ένα αρχείο:"}.
|
||||
{"Export data of all users in the server to PIEFXIS files (XEP-0227):","Εξαγωγή δεδομένων όλων των χρηστών του διακομιστή σε PIEFXIS αρχεία (XEP-0227):"}.
|
||||
{"Export data of users in a host to PIEFXIS files (XEP-0227):","Εξαγωγή δεδομένων των χρηστών κεντρικού υπολογιστή σε PIEFXIS αρχεία (XEP-0227):"}.
|
||||
@@ -105,30 +158,38 @@
|
||||
{"Failed to extract JID from your voice request approval","Απέτυχε η εξαγωγή JID από την έγκριση του αιτήματος φωνής σας"}.
|
||||
{"Failed to map delegated namespace to external component","Αποτυχία ταξιθέτησης μεταγεγραμμένου χώρου ονομάτων σε εξωτερικό στοιχείο"}.
|
||||
{"Failed to parse HTTP response","Αποτυχία ανάλυσης της απόκρισης HTTP"}.
|
||||
{"Failed to process option '~s'","Αποτυχία επεξεργασίας της επιλογής '~ s'"}.
|
||||
{"Failed to process option '~s'","Αποτυχία επεξεργασίας της επιλογής '~s'"}.
|
||||
{"Family Name","Επώνυμο"}.
|
||||
{"FAQ Entry","Καταχώριση συχνών ερωτήσεων"}.
|
||||
{"February","Φεβρουάριος"}.
|
||||
{"File larger than ~w bytes","Αρχείο μεγαλύτερο από ~w bytes"}.
|
||||
{"Fill in the form to search for any matching XMPP User","Συμπληρώστε την φόρμα για αναζήτηση χρηστών XMPP"}.
|
||||
{"Friday","Παρασκευή"}.
|
||||
{"From ~s","Από ~s"}.
|
||||
{"From ~ts","Από ~ts"}.
|
||||
{"From","Από"}.
|
||||
{"Full List of Room Admins","Πλήρης Κατάλογος Διαχειριστών αιθουσών"}.
|
||||
{"Full List of Room Owners","Πλήρης Κατάλογος Ιδιοκτητών αιθουσών"}.
|
||||
{"Full Name","Ονοματεπώνυμο"}.
|
||||
{"Get Number of Online Users","Έκθεση αριθμού συνδεδεμένων χρηστών"}.
|
||||
{"Get Number of Registered Users","Έκθεση αριθμού εγγεγραμμένων χρηστών"}.
|
||||
{"Get Pending","Λήψη των εκκρεμοτήτων"}.
|
||||
{"Get User Last Login Time","Έκθεση Τελευταίας Ώρας Σύνδεσης Χρήστη"}.
|
||||
{"Get User Password","Έκθεση Κωδικού Πρόσβασης Χρήστη"}.
|
||||
{"Get User Statistics","Έκθεση Στατιστικών Χρήστη"}.
|
||||
{"Given Name","Ονομα"}.
|
||||
{"Given Name","Όνομα"}.
|
||||
{"Grant voice to this person?","Παραχώρηση φωνής σε αυτό το άτομο;"}.
|
||||
{"Groups that will be displayed to the members","Ομάδες που θα εμφανίζονται στα μέλη"}.
|
||||
{"Groups","Ομάδες"}.
|
||||
{"Group ","Ομάδα "}.
|
||||
{"has been banned","έχει απαγορευθεί"}.
|
||||
{"has been kicked because of an affiliation change","έχει αποβληθεί λόγω αλλαγής υπαγωγής"}.
|
||||
{"Group","Ομάδα"}.
|
||||
{"has been banned","έχει αποβληθεί διαπαντώς"}.
|
||||
{"has been kicked because of a system shutdown","αποβλήθηκε λόγω τερματισμού συστήματος"}.
|
||||
{"has been kicked because of an affiliation change","έχει αποβληθεί λόγω αλλαγής υπαγωγής"}.
|
||||
{"has been kicked because the room has been changed to members-only","αποβλήθηκε επειδή η αίθουσα αλλάξε γιά μέλη μόνο"}.
|
||||
{"has been kicked","αποβλήθηκε"}.
|
||||
{" has set the subject to: "," έχει θέσει το θέμα σε: "}.
|
||||
{"Host unknown","Ο κεντρικός διακομιστής είναι άγνωστος"}.
|
||||
{"Host","Κεντρικός Υπολογιστής"}.
|
||||
{"Host unknown","Άγνωστος εξυπηρετητής"}.
|
||||
{"Host","Εξυπηρετητής"}.
|
||||
{"HTTP File Upload","Ανέβασμα αρχείου"}.
|
||||
{"Idle connection","Αδρανής σύνδεση"}.
|
||||
{"If you don't see the CAPTCHA image here, visit the web page.","Εάν δεν βλέπετε την εικόνα CAPTCHA εδώ, επισκεφθείτε την ιστοσελίδα."}.
|
||||
{"Import Directory","Εισαγωγή κατάλογου αρχείων"}.
|
||||
{"Import File","Εισαγωγή αρχείων"}.
|
||||
@@ -147,87 +208,107 @@
|
||||
{"Incorrect value of 'action' attribute","Λανθασμένη τιμή του χαρακτηριστικού 'action'"}.
|
||||
{"Incorrect value of 'action' in data form","Λανθασμένη τιμή 'action' στη φόρμα δεδομένων"}.
|
||||
{"Incorrect value of 'path' in data form","Λανθασμένη τιμή 'path' στη φόρμα δεδομένων"}.
|
||||
{"Insufficient privilege","Ανεπαρκές προνόμια"}.
|
||||
{"Insufficient privilege","Ανεπαρκή προνόμια"}.
|
||||
{"Internal server error","Εσωτερικό σφάλμα"}.
|
||||
{"Invalid 'from' attribute in forwarded message","Μη έγκυρο χαρακτηριστικό 'από' στο προωθούμενο μήνυμα"}.
|
||||
{"Invalid node name","Μη έγκυρο όνομα κόμβου"}.
|
||||
{"Invalid 'previd' value","Μη έγκυρη τιμή 'previd'"}.
|
||||
{"Invitations are not allowed in this conference","Οι προσκλήσεις δεν επιτρέπονται σε αυτή τη διάσκεψη"}.
|
||||
{"IP addresses","Διευθύνσεις IP"}.
|
||||
{"is now known as","είναι τώρα γνωστή ως"}.
|
||||
{"It is not allowed to send error messages to the room. The participant (~s) has sent an error message (~s) and got kicked from the room","Δεν επιτρέπεται η αποστολή μηνυμάτων σφάλματος στο δωμάτιο. Ο συμμετέχων (~ s) έχει στείλει ένα μήνυμα σφάλματος (~ s) και έχει πέταχτεί έξω από την αίθουσα"}.
|
||||
{"It is not allowed to send private messages of type \"groupchat\"","Δεν επιτρέπεται να στείλει προσωπικά μηνύματα του τύπου \"groupchat\""}.
|
||||
{"It is not allowed to send error messages to the room. The participant (~s) has sent an error message (~s) and got kicked from the room","Δεν επιτρέπεται η αποστολή μηνυμάτων σφάλματος στο δωμάτιο. Ο συμμετέχων (~s) έχει στείλει ένα μήνυμα σφάλματος (~s) και έχει πεταχτεί έξω από την αίθουσα"}.
|
||||
{"It is not allowed to send private messages of type \"groupchat\"","Δεν επιτρέπεται η αποστολή προσωπικών μηνυμάτων του τύπου \"groupchat\""}.
|
||||
{"It is not allowed to send private messages to the conference","Δεν επιτρέπεται να στείλει προσωπικά μηνύματα για τη διάσκεψη"}.
|
||||
{"It is not allowed to send private messages","Δεν επιτρέπεται η αποστολή προσωπικών μηνυμάτων"}.
|
||||
{"Jabber Account Registration","Εγγραφή λογαριασμού Jabber"}.
|
||||
{"Jabber ID","Ταυτότητα Jabber"}.
|
||||
{"January","Ιανουάριος"}.
|
||||
{"joins the room","συνδέετε στην αίθουσα"}.
|
||||
{"JID normalization denied by service policy","Απετράπη η κανονικοποίηση του JID, λόγω της τακτικής Παροχής Υπηρεσιών"}.
|
||||
{"JID normalization failed","Απετράπη η κανονικοποίηση του JID"}.
|
||||
{"joins the room","συνδέεται στην αίθουσα"}.
|
||||
{"July","Ιούλιος"}.
|
||||
{"June","Ιούνιος"}.
|
||||
{"Just created","Μόλις δημιουργήθηκε"}.
|
||||
{"Label:","Ετικέτα:"}.
|
||||
{"Last Activity","Τελευταία Δραστηριότητα"}.
|
||||
{"Last login","Τελευταία σύνδεση"}.
|
||||
{"Last message","Τελευταίο μήνυμα"}.
|
||||
{"Last month","Περασμένο μήνα"}.
|
||||
{"Last year","Πέρυσι"}.
|
||||
{"Least significant bits of SHA-256 hash of text should equal hexadecimal label","Τα ψηφία μικρότερης αξίας του αθροίσματος SHA-256 του κειμένου θα έπρεπε να ισούνται με την δεκαεξαδική ετικέτα"}.
|
||||
{"leaves the room","εγκαταλείπει την αίθουσα"}.
|
||||
{"List of modules to start","Λίστα των Module για Εκκίνηση"}.
|
||||
{"List of rooms","Κατάλογος αιθουσών"}.
|
||||
{"Logging","Καταγραφή"}.
|
||||
{"Low level update script","Προγράμα ενημέρωσης χαμηλού επίπεδου"}.
|
||||
{"Make participants list public","Κάντε κοινό τον κατάλογο συμμετεχόντων"}.
|
||||
{"Make room CAPTCHA protected","Κάντε την αίθουσα CAPTCHA προστατεύονομενη"}.
|
||||
{"Make participants list public","Κάντε δημόσιο τον κατάλογο συμμετεχόντων"}.
|
||||
{"Make room CAPTCHA protected","Κάντε την αίθουσα προστατεύομενη με CAPTCHA"}.
|
||||
{"Make room members-only","Κάντε την αίθουσα μόνο για μέλη"}.
|
||||
{"Make room moderated","Κάντε την αίθουσα εποπτεύονομενη"}.
|
||||
{"Make room moderated","Κάντε την αίθουσα εποπτεύομενη"}.
|
||||
{"Make room password protected","Κάντε την αίθουσα προστατεύομενη με κωδικό πρόσβασης"}.
|
||||
{"Make room persistent","Κάντε αίθουσα μόνιμη"}.
|
||||
{"Make room persistent","Κάντε την αίθουσα μόνιμη"}.
|
||||
{"Make room public searchable","Κάντε την δημόσια αναζήτηση δυνατή για αυτή την αίθουσα"}.
|
||||
{"Malformed username","Λανθασμένη μορφή ονόματος χρήστη"}.
|
||||
{"MAM preference modification denied by service policy","Άρνηση αλλαγής προτιμήσεων MAM, λόγω της τακτικής Παροχής Υπηρεσιών"}.
|
||||
{"March","Μάρτιος"}.
|
||||
{"Maximum Number of Occupants","Μέγιστος αριθμός συμετεχόντων"}.
|
||||
{"Max payload size in bytes","Μέγιστο μέγεθος φορτίου σε bytes"}.
|
||||
{"Maximum file size","Μέγιστο μέγεθος αρχείου"}.
|
||||
{"Maximum Number of History Messages Returned by Room","Μέγιστος αριθμός μηνυμάτων Ιστορικού που επιστρέφονται από την Αίθουσα"}.
|
||||
{"Maximum number of items to persist","Μέγιστος αριθμός μόνιμων στοιχείων"}.
|
||||
{"Maximum Number of Occupants","Μέγιστος αριθμός συμμετεχόντων"}.
|
||||
{"May","Μάιος"}.
|
||||
{"Members not added (inexistent vhost!): ","Τα μέλη δεν προστέθηκαν (ανύπαρκτος vhost!): "}.
|
||||
{"Membership is required to enter this room","Απαιτείται αίτηση συμετοχής για είσοδο σε αυτή την αίθουσα"}.
|
||||
{"Members:","Μέλη:"}.
|
||||
{"Memorize your password, or write it in a paper placed in a safe place. In Jabber there isn't an automated way to recover your password if you forget it.","Απομνημονεύστε τον κωδικό πρόσβασής σας, ή γράψετε τον σε ένα χαρτί που είχε τοποθετηθεί σε ασφαλές μέρος. Στο Jabber δεν υπάρχει αυτοματοποιημένος τρόπος για να ανακτήσετε τον κωδικό σας αν τον ξεχάσετε."}.
|
||||
{"Memorize your password, or write it in a paper placed in a safe place. In XMPP there isn't an automated way to recover your password if you forget it.","Απομνημονεύστε τον κωδικό πρόσβασής σας ή γράψτε τον σε χαρτί που βρίσκεται σε ασφαλές μέρος. Στο XMPP δεν υπάρχει αυτοματοποιημένος τρόπος ανάκτησης του κωδικού πρόσβασής σας εάν τον ξεχάσετε."}.
|
||||
{"Memory","Μνήμη"}.
|
||||
{"Message body","Περιεχόμενο μηνυμάτως"}.
|
||||
{"Message not found in forwarded payload","Δεν βρέθηκε μήνυμα στο προωθημένο ωφέλιμο φορτίο"}.
|
||||
{"Mere Availability in XMPP (No Show Value)","Διαθεσιμότητα στο XMPP (Χωρίς ένδειξη)"}.
|
||||
{"Message body","Περιεχόμενο μηνύματος"}.
|
||||
{"Message not found in forwarded payload","Δεν βρέθηκε μήνυμα στον προωθημένο φόρτο εργασίας"}.
|
||||
{"Messages from strangers are rejected","Τα μηνύματα από αγνώστους απορρίπτονται"}.
|
||||
{"Messages of type headline","Μηνύματα του τύπου headline"}.
|
||||
{"Messages of type normal","Μηνύματα του τύπου normal"}.
|
||||
{"Middle Name","Πατρώνυμο"}.
|
||||
{"Moderator privileges required","Aπαιτούνται προνόμια συντονιστή"}.
|
||||
{"Minimum interval between voice requests (in seconds)","Ελάχιστο χρονικό διάστημα μεταξύ αιτημάτων φωνής (σε δευτερόλεπτα)"}.
|
||||
{"Moderator privileges required","Aπαιτούνται προνόμια επόπτου"}.
|
||||
{"Moderators Only","Επόπτες μόμον"}.
|
||||
{"Moderator","Επόπτης"}.
|
||||
{"Modified modules","Τροποποιημένα modules"}.
|
||||
{"Module failed to handle the query","Το μodule απέτυχε να χειριστεί το ερώτημα"}.
|
||||
{"Modules","Modules"}.
|
||||
{"Module failed to handle the query","Το module απέτυχε να χειριστεί το ερώτημα"}.
|
||||
{"Monday","Δευτέρα"}.
|
||||
{"Multicast","Multicast"}.
|
||||
{"Multicast","Πολλαπλή διανομή (Multicast)"}.
|
||||
{"Multiple <item/> elements are not allowed by RFC6121","Πολλαπλά στοιχεία <item/> δεν επιτρέπονται από το RFC6121"}.
|
||||
{"Multi-User Chat","Συνομιλία με πολλούς χρήστες"}.
|
||||
{"Name in the rosters where this group will be displayed","Όνομα στις λίστες όπου αυτή η ομάδα θα εμφανίζεται"}.
|
||||
{"Name","Όνομα"}.
|
||||
{"Name:","Όνομα:"}.
|
||||
{"Natural Language for Room Discussions","Μητρική Γλώσσα για τις Συζητήσεις Αιθουσών"}.
|
||||
{"Natural-Language Room Name","Αίθουσα Μητρικής Γλώσσας"}.
|
||||
{"Neither 'jid' nor 'nick' attribute found","Δεν βρέθηκε κανένα χαρακτηριστικό 'jid' ούτε 'nick'"}.
|
||||
{"Neither 'role' nor 'affiliation' attribute found","Δεν βρέθηκε ούτε χαρακτηριστικό 'role' ούτε 'affiliation'"}.
|
||||
{"Never","Ποτέ"}.
|
||||
{"New Password:","Νέος κωδικός πρόσβασης:"}.
|
||||
{"Nickname can't be empty","Το Ψευδώνυμο δεν μπορεί να είναι άδειο"}.
|
||||
{"Nickname Registration at ","Εγγραφή με Ψευδώνυμο στο "}.
|
||||
{"Nickname ~s does not exist in the room","Ψευδώνυμο ~s δεν υπάρχει σε αυτή την αίθουσα"}.
|
||||
{"Nickname","Ψευδώνυμο"}.
|
||||
{"No 'affiliation' attribute found","Δεν βρέθηκε χαρακτηριστικό 'affiliation'"}.
|
||||
{"No address elements found","Δεν βρέθηκαν στοιχεία διεύθυνσης"}.
|
||||
{"No addresses element found","Δεν βρέθηκε στοιχείο διεύθυνσης"}.
|
||||
{"No 'affiliation' attribute found","Δεν βρέθηκε το χαρακτηριστικό 'affiliation'"}.
|
||||
{"No available resource found","Δεν βρέθηκε διαθέσιμος πόρος"}.
|
||||
{"No body provided for announce message","Δεν προμηθεύτικε περιεχόμενο ανακοινώσης"}.
|
||||
{"No body provided for announce message","Δεν προμηθεύτηκε περιεχόμενο ανακοινώσης"}.
|
||||
{"No child elements found","Δεν βρέθηκαν θυγατρικά στοιχεία"}.
|
||||
{"No data form found","Δεν βρέθηκε φόρμα δεδομένων"}.
|
||||
{"No Data","Κανένα στοιχείο"}.
|
||||
{"Node already exists","Ο κόμβος υπάρχει ήδη"}.
|
||||
{"Node index not found","Ο δείκτης κόμβου δεν βρέθηκε"}.
|
||||
{"Node not found","Κόμβος δεν βρέθηκε"}.
|
||||
{"Nodeprep has failed","Το Nodeprep απέτυχε"}.
|
||||
{"Node ~p","Κόμβος ~p"}.
|
||||
{"Nodes","Κόμβοι"}.
|
||||
{"No features available","Δεν υπάρχουν διαθέσιμες λειτουργίες"}.
|
||||
{"No <forwarded/> element found","Δεν βρέθηκε στοιχείο <forwarded/>"}.
|
||||
{"No hook has processed this command","Κανένα άγκιστρο δεν έχει επεξεργαστεί αυτήν την εντολή"}.
|
||||
{"No info about last activity found","Δεν βρέθηκαν πληροφορίες για την τελευταία δραστηριότητα"}.
|
||||
{"No 'item' element found","Δεν βρέθηκε στοιχείο 'item'"}.
|
||||
{"No 'item' element found","Δεν βρέθηκε το στοιχείο 'item'"}.
|
||||
{"No items found in this query","Δεν βρέθηκαν στοιχεία σε αυτό το ερώτημα"}.
|
||||
{"No limit","Χωρίς όριο"}.
|
||||
{"No module is handling this query","Καμνένα module δεν χειρίζεται αυτό το ερώτημα"}.
|
||||
{"No 'modules' found in data form","Δεν υπάρχει 'modules' στη φόρμα δεδομένων"}.
|
||||
{"None","Κανένα"}.
|
||||
{"No module is handling this query","Κανένα module δεν χειρίζεται αυτό το ερώτημα"}.
|
||||
{"No node specified","Δεν καθορίστηκε κόμβος"}.
|
||||
{"No 'password' found in data form","Δεν υπάρχει 'password' στη φόρμα δεδομένων"}.
|
||||
{"No 'password' found in this query","Δεν βρέθηκε \"password\" σε αυτό το ερώτημα"}.
|
||||
{"No 'password' found in this query","Δεν βρέθηκε 'password' σε αυτό το ερώτημα"}.
|
||||
{"No 'path' found in data form","Δεν υπάρχει 'path' στη φόρμα δεδομένων"}.
|
||||
{"No pending subscriptions found","Δεν βρέθηκαν εκκρεμείς συνδρομές"}.
|
||||
{"No privacy list with this name found","Δεν βρέθηκε κατάλογος απορρήτου με αυτό το όνομα"}.
|
||||
@@ -235,68 +316,113 @@
|
||||
{"No running node found","Δεν βρέθηκε ενεργός κόμβος"}.
|
||||
{"No services available","Δεν υπάρχουν διαθέσιμες υπηρεσίες"}.
|
||||
{"No statistics found for this item","Δεν βρέθηκαν στατιστικά στοιχεία για αυτό το στοιχείο"}.
|
||||
{"Not Found","Δεν Βρέθηκε"}.
|
||||
{"No 'to' attribute found in the invitation","Δεν υπάρχει χαρακτηριστικό 'to' που βρέθηκε στην πρόσκληση"}.
|
||||
{"No 'to' attribute found in the invitation","Δε βρέθηκε το χαρακτηριστικό 'to' στην πρόσκληση"}.
|
||||
{"Nobody","Κανείς"}.
|
||||
{"Node already exists","Ο κόμβος υπάρχει ήδη"}.
|
||||
{"Node ID","Ταυτότητα Κόμβου"}.
|
||||
{"Node index not found","Ο δείκτης κόμβου δεν βρέθηκε"}.
|
||||
{"Node not found","Κόμβος δεν βρέθηκε"}.
|
||||
{"Node ~p","Κόμβος ~p"}.
|
||||
{"Nodeprep has failed","Το Nodeprep απέτυχε"}.
|
||||
{"Nodes","Κόμβοι"}.
|
||||
{"None","Κανένα"}.
|
||||
{"Not allowed","Δεν επιτρέπεται"}.
|
||||
{"Not Found","Δε βρέθηκε"}.
|
||||
{"Not subscribed","Δεν έχετε εγγραφεί"}.
|
||||
{"Notify subscribers when items are removed from the node","Ειδοποιήστε τους συνδρομητές όταν αφαιρούνται στοιχεία από τον κόμβο"}.
|
||||
{"Notify subscribers when the node configuration changes","Ειδοποίηση στους συνδρομητές όταν αλλάζει η διαμόρφωση κόμβου"}.
|
||||
{"Notify subscribers when the node is deleted","Ειδοποίηση στους συνδρομητές όταν ο κόμβος διαγράφεται"}.
|
||||
{"November","Νοέμβριος"}.
|
||||
{"Number of answers required","Πλήθος αναζητημένων ερωτημάτων"}.
|
||||
{"Number of occupants","Αριθμός συμετεχόντων"}.
|
||||
{"Number of Offline Messages","Πλήθος μηνυμάτων Χωρίς Σύνδεση"}.
|
||||
{"Number of online users","Αριθμός συνδεδεμένων χρηστών"}.
|
||||
{"Number of registered users","Αριθμός εγγεγραμμένων χρηστών"}.
|
||||
{"Occupants are allowed to invite others","Οι συμμετέχοντες μπορούν να προσκαλέσουν και άλλους"}.
|
||||
{"Occupants May Change the Subject","Επιτρέψτε στους χρήστες να αλλάζουν το Θέμα"}.
|
||||
{"October","Οκτώβριος"}.
|
||||
{"Offline Messages","Χωρίς Σύνδεση Μηνύματα"}.
|
||||
{"Offline Messages:","Χωρίς Σύνδεση Μηνύματα:"}.
|
||||
{"OK","Όλλα Καλά"}.
|
||||
{"OK","Εντάξει"}.
|
||||
{"Old Password:","Παλαιός κωδικός πρόσβασης:"}.
|
||||
{"Online Users:","Online Χρήστες:"}.
|
||||
{"Online Users","Συνδεμένοι χρήστες"}.
|
||||
{"Online","Συνδεδεμένο"}.
|
||||
{"Only admins can see this","Μόνον οι διαχειριστές μπορούν να το δουν αυτό"}.
|
||||
{"Only collection node owners may associate leaf nodes with the collection","Μόνον οι ιδιοκτήτες των κόμβων μπορούν να συσχετίσουν leaf nodes με την Συλλογή"}.
|
||||
{"Only deliver notifications to available users","Παράδοση ειδοποιήσεων μόνο σε διαθέσιμους χρήστες"}.
|
||||
{"Only <enable/> or <disable/> tags are allowed","Επιτρέπονται μόνο tags <enable /> ή <disable />"}.
|
||||
{"Only <list/> element is allowed in this query","Στο ερώτημα αυτό επιτρέπεται μόνο το στοιχείο <list />"}.
|
||||
{"Only members may query archives of this room","Μόνο μέλη μπορούν να δούνε τα αρχεία αυτής της αίθουσας"}.
|
||||
{"Only moderators and participants are allowed to change the subject in this room","Μόνο οι συντονιστές και οι συμμετέχοντες μπορούν να αλλάξουν το θέμα αυτής της αίθουσας"}.
|
||||
{"Only moderators are allowed to change the subject in this room","Μόνο οι συντονιστές μπορούν να αλλάξουν το θέμα αυτής της αίθουσας"}.
|
||||
{"Only moderators can approve voice requests","Μόνο οι συντονιστές μπορούν να εγκρίνουν τις αιτήσεις φωνής"}.
|
||||
{"Only occupants are allowed to send messages to the conference","Μόνο οι συμμετέχωντες μπορούν να στέλνουν μηνύματα στο συνέδριο"}.
|
||||
{"Only occupants are allowed to send queries to the conference","Μόνο οι συμετεχόντες μπορούν να στείλουν ερωτήματα στη διάσκεψη"}.
|
||||
{"Only occupants are allowed to send messages to the conference","Μόνο οι συμμετέχοντες επιτρέπεται να στέλνουν μηνύματα στο συνέδριο"}.
|
||||
{"Only occupants are allowed to send queries to the conference","Μόνο οι συμμετέχοντες επιτρέπεται να στείλουν ερωτήματα στη διάσκεψη"}.
|
||||
{"Only publishers may publish","Μόνον εκδότες μπορούν να δημοσιεύσουν"}.
|
||||
{"Only service administrators are allowed to send service messages","Μόνο οι διαχειριστές των υπηρεσιών επιτρέπεται να στείλουν υπηρεσιακά μηνύματα"}.
|
||||
{"Only those on a whitelist may associate leaf nodes with the collection","Μόνον οι εξαιρεθέντες μπορούν να συσχετίσουν leaf nodes με τη συλλογή"}.
|
||||
{"Only those on a whitelist may subscribe and retrieve items","Μόνο όσοι βρίσκονται στη λίστα επιτρεπόμενων μπορούν να εγγραφούν και να ανακτήσουν αντικείμενα"}.
|
||||
{"Organization Name","Όνομα Οργανισμού"}.
|
||||
{"Organization Unit","Μονάδα Οργανισμού"}.
|
||||
{"Outgoing s2s Connections","Εξερχόμενες S2S Συνδέσεις"}.
|
||||
{"Outgoing s2s Connections:","Εξερχόμενες S2S Συνδέσεις:"}.
|
||||
{"Owner privileges required","Aπαιτούνται προνόμια ιδιοκτήτη"}.
|
||||
{"Packet relay is denied by service policy","Απαγορεύεται η αναμετάδοση πακέτων, λόγω της τακτικής Παροχής Υπηρεσιών"}.
|
||||
{"Packet","Πακέτο"}.
|
||||
{"Parse failed","Η ανάλυση απέτυχε"}.
|
||||
{"Participant","Συμμετέχων"}.
|
||||
{"Password Verification","Επαλήθευση κωδικού πρόσβασης"}.
|
||||
{"Password Verification:","Επαλήθευση κωδικού πρόσβασης:"}.
|
||||
{"Password","Κωδικός πρόσβασης"}.
|
||||
{"Password:","Κωδικός πρόσβασης:"}.
|
||||
{"Password","Κωδικός Πρόσβασης"}.
|
||||
{"Path to Dir","Τοποθεσία κατάλογου αρχείων"}.
|
||||
{"Path to File","Τοποθεσία Αρχείου"}.
|
||||
{"Payload type","Τύπος φόρτου εργασιών"}.
|
||||
{"Pending","Εκκρεμεί"}.
|
||||
{"Period: ","Περίοδος: "}.
|
||||
{"Persist items to storage","Μόνιμη αποθήκευση στοιχείων"}.
|
||||
{"Persistent","Μόνιμη"}.
|
||||
{"Ping query is incorrect","Το Ping είναι λανθασμένο"}.
|
||||
{"Ping","Πινγκ"}.
|
||||
{"Please note that these options will only backup the builtin Mnesia database. If you are using the ODBC module, you also need to backup your SQL database separately.","Παρακαλώ σημειώστε ότι οι επιλογές αυτές θα αποθήκευσουν Αντιγράφο Ασφαλείας μόνο της ενσωματωμένης βάσης δεδομένων Mnesia. Εάν χρησιμοποιείτε το module ODBC, θα πρέπει επίσης να κάνετε χωριστά Αντιγράφο Ασφαλείας της SQL βάση δεδομένων σας ."}.
|
||||
{"Ping","Ping"}.
|
||||
{"Please note that these options will only backup the builtin Mnesia database. If you are using the ODBC module, you also need to backup your SQL database separately.","Παρακαλώ σημειώστε ότι οι επιλογές αυτές θα αποθήκευσουν Αντιγράφο Ασφαλείας μόνο της ενσωματωμένης βάσης δεδομένων Mnesia. Εάν χρησιμοποιείτε το module ODBC, θα πρέπει επίσης να κάνετε χωριστά Αντιγράφο Ασφαλείας της SQL βάσης δεδομένων σας."}.
|
||||
{"Please, wait for a while before sending new voice request","Παρακαλώ, περιμένετε για λίγο πριν την αποστολή νέου αιτήματος φωνής"}.
|
||||
{"Pong","Pong"}.
|
||||
{"Possessing 'ask' attribute is not allowed by RFC6121","Η ιδιότητα 'ask' δεν επιτρέπεται από το RFC6121"}.
|
||||
{"Pong","Πονγκ"}.
|
||||
{"Possessing 'ask' attribute is not allowed by RFC6121","Η κατοχή χαρακτηριστικού \"ask\" δεν επιτρέπεται από το RFC6121"}.
|
||||
{"Present real Jabber IDs to","Παρούσιαση πραγματικών ταυτοτήτων Jabber σε"}.
|
||||
{"Previous session not found","Η προηγούμενη περίοδος σύνδεσης χρήστη δεν βρέθηκε"}.
|
||||
{"Previous session PID has been killed","Το προηγούμενο αναγνωριστικό περιόδου σύνδεσης PID αφαιρέθηκε"}.
|
||||
{"Previous session PID has exited","Το προηγούμενο αναγνωριστικό περιόδου σύνδεσης PID τερμάτισε"}.
|
||||
{"Previous session PID is dead","Το προηγούμενο αναγνωριστικό περιόδου σύνδεσης PID είναι νεκρό"}.
|
||||
{"Previous session timed out","Η προηγούμενη περίοδος σύνδεσης χρήστη έληξε"}.
|
||||
{"private, ","ιδιωτικό, "}.
|
||||
{"Public","Δημόσιο"}.
|
||||
{"Publish model","Δημοσιεύστε μοντέλο"}.
|
||||
{"Publish-Subscribe","Δημοσίευση-Εγγραφή"}.
|
||||
{"PubSub subscriber request","Αίτηση συνδρομητή Δημοσίευσης-Εγγραφής"}.
|
||||
{"Queries to the conference members are not allowed in this room","Ερωτήματα πρώς τα μέλη της διασκέψεως δεν επιτρέπονται σε αυτήν την αίθουσα"}.
|
||||
{"Purge all items when the relevant publisher goes offline","Διαγραφή όλων των στοιχείων όταν ο σχετικός εκδότης αποσυνδέεται"}.
|
||||
{"Push record not found","Το αρχείο Ώσης δεν βρέθηκε"}.
|
||||
{"Queries to the conference members are not allowed in this room","Ερωτήματα προς τα μέλη της διασκέψεως δεν επιτρέπονται σε αυτήν την αίθουσα"}.
|
||||
{"Query to another users is forbidden","Το ερώτημα σε άλλους χρήστες είναι απαγορευμένο"}.
|
||||
{"RAM and disc copy","Αντίγραφο μόνο σε RAM καί δίσκο"}.
|
||||
{"RAM copy","Αντίγραφο σε RAM"}.
|
||||
{"Really delete message of the day?","Πραγματικά να διαγράψετε το μήνυμα της ημέρας;"}.
|
||||
{"Recipient is not in the conference room","Παραλήπτης δεν είναι στην αίθουσα συνεδριάσεων"}.
|
||||
{"Register a Jabber account","Καταχωρήστε έναν λογαριασμό Jabber"}.
|
||||
{"Really delete message of the day?","Πραγματικά να διαγραφεί το μήνυμα της ημέρας;"}.
|
||||
{"Receive notification from all descendent nodes","Λάβετε ειδοποίηση από όλους τους υπό-κόμβους"}.
|
||||
{"Receive notification from direct child nodes only","Λάβετε ειδοποίηση μόνο από direct child κόμβους"}.
|
||||
{"Receive notification of new items only","Λάβετε ειδοποίηση μόνο από νέα αντικείμενα"}.
|
||||
{"Receive notification of new nodes only","Λάβετε ειδοποίηση μόνο από νέους κόμβους"}.
|
||||
{"Recipient is not in the conference room","Ο παραλήπτης δεν είναι στην αίθουσα συνεδριάσεων"}.
|
||||
{"Register an XMPP account","Καταχωρείστε έναν XMPP λογαριασμό χρήστη"}.
|
||||
{"Registered Users","Εγγεγραμμένοι Χρήστες"}.
|
||||
{"Registered Users:","Εγγεγραμμένοι Χρήστες:"}.
|
||||
{"Register","Καταχωρήστε"}.
|
||||
{"Remote copy","Απομεμακρυσμένο αντίγραφο"}.
|
||||
{"Remove All Offline Messages","Αφαίρεση Όλων των Χωρίς Σύνδεση Μηνύματων"}.
|
||||
{"Remote copy","Εξ αποστάσεως αντίγραφο"}.
|
||||
{"Remove All Offline Messages","Αφαίρεση όλων των μηνυμάτων χωρίς σύνδεση"}.
|
||||
{"Remove User","Αφαίρεση χρήστη"}.
|
||||
{"Remove","Αφαίρεστε"}.
|
||||
{"Replaced by new connection","Αντικαταστάθικε από νέα σύνδεση"}.
|
||||
{"Remove","Αφαίρεση"}.
|
||||
{"Replaced by new connection","Αντικαταστάθηκε από μια νέα σύνδεση"}.
|
||||
{"Request has timed out","Το αίτημα έληξε"}.
|
||||
{"Request is ignored","Το αίτημα θα αγνοηθεί"}.
|
||||
{"Requested role","Αιτούμενος ρόλος"}.
|
||||
{"Resources","Πόροι"}.
|
||||
{"Restart Service","Επανεκκίνηση Υπηρεσίας"}.
|
||||
{"Restart","Επανεκκίνηση"}.
|
||||
@@ -305,141 +431,229 @@
|
||||
{"Restore binary backup immediately:","Επαναφορά δυαδικού αντιγράφου ασφαλείας αμέσως:"}.
|
||||
{"Restore plain text backup immediately:","Επαναφορά αντιγράφου ασφαλείας από αρχείο κειμένου αμέσως:"}.
|
||||
{"Restore","Επαναφορά Αντιγράφου Ασφαλείας"}.
|
||||
{"Roles and Affiliations that May Retrieve Member List","Ρόλοι και δεσμοί που μπορούν να λάβουν την λίστα μελών"}.
|
||||
{"Roles for which Presence is Broadcasted","Ρόλοι των οποίων η παρουσία δηλώνεται δημόσια"}.
|
||||
{"Roles that May Send Private Messages","Ρόλοι που επιτρέπεται να αποστέλλουν ιδιωτικά μηνύματα"}.
|
||||
{"Room Configuration","Διαμόρφωση Αίθουσας σύνεδριασης"}.
|
||||
{"Room creation is denied by service policy","Άρνηση δημιουργίας αίθουσας , λόγω τακτικής παροχής υπηρεσιών"}.
|
||||
{"Room description","Περιγραφή Αίθουσας"}.
|
||||
{"Room Occupants","Συμετεχόντες Αίθουσας σύνεδριασης"}.
|
||||
{"Room creation is denied by service policy","Άρνηση δημιουργίας αίθουσας, λόγω της τακτικής Παροχής Υπηρεσιών"}.
|
||||
{"Room description","Περιγραφή αίθουσας"}.
|
||||
{"Room Occupants","Συμμετεχόντες Αίθουσας σύνεδριασης"}.
|
||||
{"Room terminates","Τερματισμός Αίθουσας"}.
|
||||
{"Room title","Τίτλος Αίθουσας"}.
|
||||
{"Roster module has failed","Το Roster module απέτυχε"}.
|
||||
{"Roster of ","Καταλόγος Επαφών τού "}.
|
||||
{"Roster groups allowed to subscribe","Ομάδες Καταλόγου Επαφών μπορούν να εγγραφούν"}.
|
||||
{"Roster of ~ts","Καταλόγου Επαφών του ~ts"}.
|
||||
{"Roster size","Μέγεθος Καταλόγου Επαφών"}.
|
||||
{"Roster","Καταλόγος Επαφών"}.
|
||||
{"Roster:","Καταλόγος Επαφών:"}.
|
||||
{"RPC Call Error","Σφάλμα RPC Κλήσης"}.
|
||||
{"Running Nodes","Ενεργοί Κόμβοι"}.
|
||||
{"~s invites you to the room ~s","~s Σας καλεί στο δωμάτιο ~s"}.
|
||||
{"Saturday","Σάββατο"}.
|
||||
{"Scan failed","Η σάρωση απέτυχε"}.
|
||||
{"Script check","Script ελέγχου"}.
|
||||
{"Search from the date","Αναζήτηση από της"}.
|
||||
{"Search Results for ","Αποτελέσματα αναζήτησης για "}.
|
||||
{"Search the text","Αναζήτηση του κειμένου"}.
|
||||
{"Search until the date","Αναζήτηση μέχρι της"}.
|
||||
{"Search users in ","Αναζήτηση χρηστών στο "}.
|
||||
{"Select All","Επιλογή όλων"}.
|
||||
{"Send announcement to all online users on all hosts","Αποστολή ανακοίνωσης σε όλους τους συνδεδεμένους χρήστες σε όλους τους κεντρικούς υπολογιστές"}.
|
||||
{"Send announcement to all online users","Αποστολή ανακοίνωσης σε όλους τους συνδεδεμένους χρήστες"}.
|
||||
{"Send announcement to all users on all hosts","Αποστολή ανακοίνωσης σε όλους τους χρήστες σε όλους τους κεντρικούς υπολογιστές"}.
|
||||
{"Send announcement to all users","Αποστολή ανακοίνωσης σε όλους τους χρήστες"}.
|
||||
{"September","Σεπτέμβριος"}.
|
||||
{"Server connections to local subdomains are forbidden","Οι συνδέσεις διακομιστή με τοπικούς υποτομείς απαγορεύονται"}.
|
||||
{"Server:","Διακομιστής:"}.
|
||||
{"Service list retrieval timed out","Η λήψη της λίστας Υπηρεσιών έληξε"}.
|
||||
{"Session state copying timed out","Η αντιγραφή της καταστασης περιόδου σύνδεσης έληξε"}.
|
||||
{"Set message of the day and send to online users","Ορίστε μήνυμα ημέρας και αποστολή στους συνδεδεμένους χρήστες"}.
|
||||
{"Set message of the day on all hosts and send to online users","Ορίστε μήνυμα ημέρας και άμεση αποστολή στους συνδεδεμένους χρήστες σε όλους τους κεντρικούς υπολογιστές"}.
|
||||
{"Shared Roster Groups","Κοινές Ομάδες Καταλόγων Επαφών"}.
|
||||
{"Show Integral Table","Δείτε Ολοκληρωτικό Πίνακα"}.
|
||||
{"Show Ordinary Table","Δείτε Κοινό Πίνακα"}.
|
||||
{"Shut Down Service","Κλείσιμο Υπηρεσίας"}.
|
||||
{"~s invites you to the room ~s","~s σας προσκαλεί στην αίθουσα ~s"}.
|
||||
{"Some Jabber clients can store your password in the computer, but you should do this only in your personal computer for safety reasons.","Μερικοί πελάτες Jabber μπορεί να αποθηκεύσουν τον κωδικό πρόσβασής σας στον υπολογιστή σας. Χρησιμοποιήστε αυτό το χαρακτηριστικό μόνο εάν εμπιστεύεστε την ασφάλεια του υπολογιστή σας."}.
|
||||
{"~s's Offline Messages Queue","Η Σειρά Χωρίς Σύνδεση Μηνύματων τού ~s"}.
|
||||
{"Start Modules at ","Εκκίνηση Modules στο "}.
|
||||
{"Start Modules","Εκκίνηση Modules"}.
|
||||
{"Shut Down Service","Τερματισμός Υπηρεσίας"}.
|
||||
{"SOCKS5 Bytestreams","Bytestreams του SOCKS5"}.
|
||||
{"Some XMPP clients can store your password in the computer, but you should do this only in your personal computer for safety reasons.","Ορισμένοι πελάτες XMPP μπορούν να αποθηκεύσουν τον κωδικό πρόσβασής σας στον υπολογιστή, αλλά θα πρέπει να το κάνετε μόνο στον προσωπικό σας υπολογιστή για λόγους ασφαλείας."}.
|
||||
{"Specify the access model","Καθορίστε το μοντέλο πρόσβασης"}.
|
||||
{"Specify the event message type","Καθορίστε τον τύπο μηνύματος συμβάντος"}.
|
||||
{"Specify the publisher model","Καθορίστε το μοντέλο εκδότη"}.
|
||||
{"Stanza ID","Ταυτότητα Δωματίου"}.
|
||||
{"Statically specify a replyto of the node owner(s)","Προσδιορίστε (στατικά) το Απάντηση Προς του ιδιοκτήτη-ων του κόμβου"}.
|
||||
{"Statistics of ~p","Στατιστικές του ~p"}.
|
||||
{"Statistics","Στατιστικές"}.
|
||||
{"Stop Modules at ","Παύση Modules στο "}.
|
||||
{"Stop Modules","ΠαύσηModules"}.
|
||||
{"Stopped Nodes","Σταματημένοι Κόμβοι"}.
|
||||
{"Stop","Σταμάτημα"}.
|
||||
{"Storage Type","Τύπος Αποθήκευσης"}.
|
||||
{"Store binary backup:","Αποθηκεύση δυαδικού αντιγράφου ασφαλείας:"}.
|
||||
{"Store plain text backup:","Αποθηκεύση αντιγράφου ασφαλείας σε αρχείο κειμένου:"}.
|
||||
{"Stream management is already enabled","Η διαχείριση Ροών επιτρέπεται ηδη"}.
|
||||
{"Stream management is not enabled","Η διαχείριση Ροών δεν είναι ενεργοποιημένη"}.
|
||||
{"Subject","Θέμα"}.
|
||||
{"Submitted","Υποβλήθηκε"}.
|
||||
{"Submit","Υποβοβολή"}.
|
||||
{"Submit","Υποβολή"}.
|
||||
{"Subscriber Address","Διεύθυνση Συνδρομητή"}.
|
||||
{"Subscribers may publish","Οι συνδρομητές μπορούν να δημοσιεύσουν"}.
|
||||
{"Subscription requests must be approved and only subscribers may retrieve items","Τα αιτήματα για συνδρομή πρέπει να εγκριθούν και μόνο οι συνδρομητές μπορούν να λάβουν αντικείμενα"}.
|
||||
{"Subscriptions are not allowed","Οι συνδρομές δεν επιτρέπονται"}.
|
||||
{"Subscription","Συνδρομή"}.
|
||||
{"Sunday","Κυριακή"}.
|
||||
{"That nickname is already in use by another occupant","Αυτό το ψευδώνυμο είναι ήδη σε χρήση από άλλον συμμετέχων"}.
|
||||
{"Text associated with a picture","Το κείμενο σχετίστηκε με μία εικόνα"}.
|
||||
{"Text associated with a sound","Το κείμενο σχετίστηκε με έναν ήχο"}.
|
||||
{"Text associated with a video","Το κείμενο σχετίστηκε με ένα βίντεο"}.
|
||||
{"Text associated with speech","Το κείμενο σχετίστηκε με ομιλία"}.
|
||||
{"That nickname is already in use by another occupant","Αυτό το ψευδώνυμο είναι ήδη σε χρήση από άλλον συμμετέχοντα"}.
|
||||
{"That nickname is registered by another person","Αυτό το ψευδώνυμο είναι καταχωρημένο από άλλο πρόσωπο"}.
|
||||
{"The account already exists","Ο λογαριασμός υπάρχει ήδη"}.
|
||||
{"The account was not unregistered","Ο λογαριασμός δεν καταχωρήθηκε"}.
|
||||
{"The body text of the last received message","Ο κορμός του κειμένου του τελευταίου μηνύματος"}.
|
||||
{"The CAPTCHA is valid.","Το CAPTCHA είναι έγκυρο."}.
|
||||
{"The CAPTCHA verification has failed","Η επαλήθευση της εικόνας CAPTCHA απέτυχε"}.
|
||||
{"The captcha you entered is wrong","Το captcha που εισαγάγατε είναι λάθος"}.
|
||||
{"The child nodes (leaf or collection) associated with a collection","Οι θυγατρικοί κόμβοι (leaf ή collection) που σχετίζονται με μια συλλογή"}.
|
||||
{"The collections with which a node is affiliated","Οι συλλογές με τις οποίες ένας κόμβος σχετίζεται"}.
|
||||
{"The DateTime at which a leased subscription will end or has ended","Ο Χρόνος στον οποίο μια μισθωμένη συνδρομή θα Εκπνεύσει ή Τελειώσει"}.
|
||||
{"The datetime when the node was created","Η χρονοσφραγίδα δημιουργίας του κόμβου"}.
|
||||
{"The default language of the node","Η προρυθμισμένη γλώσσα του κόμβου"}.
|
||||
{"The feature requested is not supported by the conference","Η λειτουργία που ζητήθηκε δεν υποστηρίζεται από τη διάσκεψη"}.
|
||||
{"The JID of the node creator","Το JID του δημιουγού του κόμβου"}.
|
||||
{"The JIDs of those to contact with questions","Το JID αυτών με τους οποίους θα επικοινωνήσετε με ερωτήσεις"}.
|
||||
{"The JIDs of those with an affiliation of owner","Το JID αυτών που σχετίζονται με τον ιδιοκτήτη"}.
|
||||
{"The JIDs of those with an affiliation of publisher","Το JID αυτών που σχετίζονται με τον εκδότη"}.
|
||||
{"The list of JIDs that may associate leaf nodes with a collection","Λίστα των JIDs που μπορούν να σχετίζουν leaf κόμβους με μια Συλλογή"}.
|
||||
{"The minimum number of milliseconds between sending any two notification digests","Το ελάχιστο πλήθος χιλιοστών του δευτερολέπτου μεταξύ της αποστολής δύο συγχωνεύσεων ειδοποιήσεων"}.
|
||||
{"The name of the node","Το όνομα του κόμβου"}.
|
||||
{"The node is a collection node","Ο κόμβος είναι κόμβος Συλλογής"}.
|
||||
{"The node is a leaf node (default)","Ο κόμβος είναι leaf κόμβος (προεπιλογή)"}.
|
||||
{"The NodeID of the relevant node","Το NodeID του σχετικού κόμβου"}.
|
||||
{"The number of pending incoming presence subscription requests","Το πλήθος των αιτημάτων εισερχομένων συνδρομών παρουσίας σε αναμονή"}.
|
||||
{"The number of subscribers to the node","Το πλήθος των συνδρομητών στον κόμβο"}.
|
||||
{"The number of unread or undelivered messages","Το πλήθος των μη αναγνωσμένων ή μη παραδοτέων μηνυμάτων"}.
|
||||
{"The password contains unacceptable characters","Ο κωδικός πρόσβασης περιέχει μη αποδεκτούς χαρακτήρες"}.
|
||||
{"The password is too weak","Ο κωδικός πρόσβασης είναι πολύ ασθενές"}.
|
||||
{"The password is too weak","Ο κωδικός πρόσβασης είναι πολύ αδύναμος"}.
|
||||
{"the password is","ο κωδικός πρόσβασης είναι"}.
|
||||
{"The password of your Jabber account was successfully changed.","Ο κωδικός πρόσβασης του Jabber λογαριασμού σας έχει αλλάξει επιτυχώς."}.
|
||||
{"The password of your XMPP account was successfully changed.","Ο κωδικός πρόσβασης του XMPP λογαριασμού σας έχει αλλάξει επιτυχώς."}.
|
||||
{"The password was not changed","Ο κωδικός πρόσβασης δεν άλλαξε"}.
|
||||
{"The passwords are different","Οι κωδικοί πρόσβασης δεν ταιριάζουν"}.
|
||||
{"The presence states for which an entity wants to receive notifications","Η παρουσία δηλώνει για ποιους θέλει κάποιος να λαμβάνει ειδοποιήσεις"}.
|
||||
{"The query is only allowed from local users","Το ερώτημα επιτρέπεται μόνο από τοπικούς χρήστες"}.
|
||||
{"The query must not contain <item/> elements","Το ερώτημα δεν πρέπει να περιέχει στοιχείο <item/>"}.
|
||||
{"There was an error changing the password: ","Υπήρξε ένα σφάλμα κατά την αλλαγή του κωδικού πρόσβασης: "}.
|
||||
{"The room subject can be modified by participants","Το θέμα μπορεί να τροποποιηθεί από τους συμμετέχοντες"}.
|
||||
{"The sender of the last received message","Ο αποστολέας του τελευταίου εισερχομένου μηνύματος"}.
|
||||
{"The stanza MUST contain only one <active/> element, one <default/> element, or one <list/> element","Η stanza ΠΡΕΠΕΙ να περιέχει μόνο ένα στοιχείο <active />, ένα στοιχείο <default /> ή ένα στοιχείο <list />"}.
|
||||
{"The subscription identifier associated with the subscription request","Το αναγνωριστικό συνδρομής συσχετίστηκε με το αίτημα συνδρομής"}.
|
||||
{"The type of node data, usually specified by the namespace of the payload (if any)","Ο τύπος των δεδομένων του κόμβου συνήθως προσδιορίζεται από το namespace του φόρτου εργασιών (αν υπάρχουν)"}.
|
||||
{"The URL of an XSL transformation which can be applied to payloads in order to generate an appropriate message body element.","Το URL ενός μετασχηματισμού XSL το οποίο μπορεί να εφαρμοστεί σε φόρτους εργασίας για να παραχθεί το κατάλληλο στοιχείο του σώματος του μηνύματος."}.
|
||||
{"The URL of an XSL transformation which can be applied to the payload format in order to generate a valid Data Forms result that the client could display using a generic Data Forms rendering engine","Το URL ενός μετασχηματισμού XSL, το οποίο μπορεί να εφαρμοστεί στους τύπους φόρτου εργασίας για να παραχθεί έγκυρο αποτέλεσμα Data Forms, τέτοιο που ο πελάτης μπορεί να εμφανίσει, χρησιμοποιώντας μια ευρείας χρήσης μηχανή επεξεργασίας Data Forms"}.
|
||||
{"There was an error changing the password: ","Παρουσιάστηκε σφάλμα κατά την αλλαγή του κωδικού πρόσβασης: "}.
|
||||
{"There was an error creating the account: ","Υπήρξε ένα σφάλμα κατά τη δημιουργία του λογαριασμού: "}.
|
||||
{"There was an error deleting the account: ","Υπήρξε ένα σφάλμα κατά τη διαγραφή του λογαριασμού: "}.
|
||||
{"The stanza MUST contain only one <active/> element, one <default/> element, or one <list/> element","Η stanza ΠΡΕΠΕΙ να περιέχει μόνο ένα στοιχείο <active />, ένα στοιχείο <default /> ή ένα στοιχείο <list />"}.
|
||||
{"This is case insensitive: macbeth is the same that MacBeth and Macbeth.","Ανεξαρτήτως με πεζά ή κεφαλαία: 'μιαλεξη' είναι το ίδιο με 'ΜιαΛέξη' και 'Μιαλέξη'."}.
|
||||
{"This page allows to create a Jabber account in this Jabber server. Your JID (Jabber IDentifier) will be of the form: username@server. Please read carefully the instructions to fill correctly the fields.","Αυτή η σελίδα σας επιτρέπει να δημιουργήσετε ένα λογαριασμό Jabber σε αυτόν το διακομιστή Jabber. JID σας (Jabber Identifier) θα είναι της μορφής: όνομα_χρήστη@διακομιστής_Jabber. Παρακαλώ διαβάστε προσεκτικά τις οδηγίες για να συμπληρώσετε σωστά τα πεδία."}.
|
||||
{"This page allows to unregister a Jabber account in this Jabber server.","Η σελίδα αυτή δίνει τη δυνατότητα να καταργήσετε την καταχώρηση ενός λογαριασμό Jabber σε αυτόν το διακομιστή Jabber."}.
|
||||
{"This is case insensitive: macbeth is the same that MacBeth and Macbeth.","Αυτό σημαίνει ότι δεν έχει σημασία αν είναι κεφαλαία ή πεζά γράμματα: \"κατσαντώνης\" είναι το ίδιο με \"ΚατσΑντώνης\" , όπως και \"Κατσαντώνης\"."}.
|
||||
{"This page allows to register an XMPP account in this XMPP server. Your JID (Jabber ID) will be of the form: username@server. Please read carefully the instructions to fill correctly the fields.","Αυτή η σελίδα επιτρέπει την εγγραφή ενός λογαριασμού XMPP σε αυτόν τον διακομιστή XMPP. Το JID (Jabber ID) θα έχει τη μορφή: όνομαχρήστη@διακομιστής. Διαβάστε προσεκτικά τις οδηγίες για να συμπληρώσετε σωστά τα πεδία."}.
|
||||
{"This page allows to unregister an XMPP account in this XMPP server.","Αυτή η σελίδα επιτρέπει την κατάργηση εγγραφής ενός λογαριασμού XMPP σε αυτόν τον διακομιστή XMPP."}.
|
||||
{"This room is not anonymous","Η αίθουσα αυτή δεν είναι ανώνυμη"}.
|
||||
{"This service can not process the address: ~s","Αυτή η υπηρεσία δεν μπορεί να επεξεργαστεί την διεύθυνση: ~s"}.
|
||||
{"Thursday","Πέμπτη"}.
|
||||
{"Time delay","Χρόνος καθυστέρησης"}.
|
||||
{"Timed out waiting for stream resumption","Υπερέβην το όριο αναμονής για επανασύνδεση της Ροής"}.
|
||||
{"Time","Χρόνος"}.
|
||||
{"Token TTL","Token TTL"}.
|
||||
{"To register, visit ~s","Για να εγγραφείτε, επισκεφθείτε το ~s"}.
|
||||
{"To ~ts","Προς ~ts"}.
|
||||
{"Token TTL","Διακριτικό TTL"}.
|
||||
{"Too many active bytestreams","Πάρα πολλά ενεργά bytestreams"}.
|
||||
{"Too many CAPTCHA requests","Πάρα πολλά αιτήματα CAPTCHA"}.
|
||||
{"Too many child elements","Πάρα πολλά θυγατρικά στοιχεία"}.
|
||||
{"Too many <item/> elements","Πάρα πολλά στοιχεία <item/>"}.
|
||||
{"Too many <list/> elements","Πάρα πολλά στοιχεία <list/>"}.
|
||||
{"Too many (~p) failed authentications from this IP address (~s). The address will be unblocked at ~s UTC","Πάρα πολλές (~p) αποτυχημένες προσπάθειες σύνδεσης από την IP σας (~s). Άρση φραγής στις ~s UTC"}.
|
||||
{"Too many receiver fields were specified","Πάρα πολλά πεδία δεκτών προσδιορίστηκαν"}.
|
||||
{"Too many unacked stanzas","Πάρα πολλές μη αναγνωρισμένες stanzas"}.
|
||||
{"Too many users in this conference","Πάρα πολλοί χρήστες σε αυτή τη διάσκεψη"}.
|
||||
{"To register, visit ~s","Για να εγγραφείτε, επισκεφθείτε το ~ s"}.
|
||||
{"To ~s","Πρώς ~s"}.
|
||||
{"Total rooms","Συνολικές Αίθουσες σύνεδριασης"}.
|
||||
{"To","Πρώς"}.
|
||||
{"To","Προς"}.
|
||||
{"Traffic rate limit is exceeded","Υπέρφορτωση"}.
|
||||
{"Transactions Aborted:","Αποτυχημένες συναλλαγές:"}.
|
||||
{"Transactions Committed:","Παραδοθείς συναλλαγές:"}.
|
||||
{"Transactions Logged:","Καταγραμμένες συναλλαγές:"}.
|
||||
{"Transactions Committed:","Παραδοθείσες συναλλαγές:"}.
|
||||
{"Transactions Logged:","Καταγεγραμμένες συναλλαγές:"}.
|
||||
{"Transactions Restarted:","Επανειλημμένες συναλλαγές:"}.
|
||||
{"~ts's Offline Messages Queue","~ts's Χωρίς Σύνδεση Μηνύματα"}.
|
||||
{"Tuesday","Τρίτη"}.
|
||||
{"Unable to generate a CAPTCHA","Αδήνατο να δημιουργηθεί CAPTCHA"}.
|
||||
{"Unable to generate a CAPTCHA","Αδύνατη η δημιουργία CAPTCHA"}.
|
||||
{"Unable to register route on existing local domain","Δεν είναι δυνατή η καταχώρηση της διαδρομής σε υπάρχοντα τοπικό τομέα"}.
|
||||
{"Unauthorized","Χορίς Εξουσιοδότηση"}.
|
||||
{"Unauthorized","Χωρίς Εξουσιοδότηση"}.
|
||||
{"Unexpected action","Απροσδόκητη ενέργεια"}.
|
||||
{"Unregister a Jabber account","Καταργήστε την εγγραφή ενός λογαριασμού Jabber"}.
|
||||
{"Unexpected error condition: ~p","Απροσδόκητες συνθήκες σφάλματος: ~p"}.
|
||||
{"Unregister an XMPP account","Καταργήση λογαριασμού XMPP"}.
|
||||
{"Unregister","Καταργήση εγγραφής"}.
|
||||
{"Unselect All","Αποεπιλογή όλων"}.
|
||||
{"Unsupported <index/> element","Μη υποστηριζόμενο στοιχείο <index />"}.
|
||||
{"Update message of the day (don't send)","Ενημέρωση μηνύματως ημέρας (χωρίς άμεση αποστολή)"}.
|
||||
{"Update message of the day on all hosts (don't send)","Ενημέρωση μηνύματως ημέρας σε όλους τους κεντρικούς υπολογιστές (χωρίς άμεση αποστολή)"}.
|
||||
{"Unsupported version","Μη υποστηριζόμενη έκδοση"}.
|
||||
{"Update message of the day (don't send)","Ενημέρωση μηνύματος ημέρας (χωρίς άμεση αποστολή)"}.
|
||||
{"Update message of the day on all hosts (don't send)","Ενημέρωση μηνύματος ημέρας σε όλους τους κεντρικούς υπολογιστές (χωρίς άμεση αποστολή)"}.
|
||||
{"Update plan","Σχέδιο ενημέρωσης"}.
|
||||
{"Update ~p","Ενημέρωση ~p"}.
|
||||
{"Update script","Προγράμα ενημέρωσης"}.
|
||||
{"Update","Ενημέρωση"}.
|
||||
{"Uptime:","Uptime:"}.
|
||||
{"Uptime:","Χρόνος σε λειτουργία:"}.
|
||||
{"URL for Archived Discussion Logs","URL αρχειοθετημένων καταγραφών συζητήσεων"}.
|
||||
{"User already exists","Ο χρήστης υπάρχει ήδη"}.
|
||||
{"User (jid)","Χρήστη (jid)"}.
|
||||
{"User JID","JID Χρήστη"}.
|
||||
{"User (jid)","Χρήστης (jid)"}.
|
||||
{"User Management","Διαχείριση χρηστών"}.
|
||||
{"User removed","Ο Χρήστης αφαιρέθηκε"}.
|
||||
{"User session not found","Η περίοδος σύνδεσης χρήστη δεν βρέθηκε"}.
|
||||
{"User session terminated","Η περίοδος σύνδεσης χρήστη τερματίστηκε"}.
|
||||
{"User ~ts","Χρήστης ~ts"}.
|
||||
{"Username:","Όνομα χρήστη:"}.
|
||||
{"Users are not allowed to register accounts so quickly","Οι χρήστες δεν επιτρέπεται να εγγραφούν λογαριασμούς τόσο γρήγορα"}.
|
||||
{"User session not found","Η συνάντηση χρήστη δεν βρέθηκε"}.
|
||||
{"User session terminated","Η σύνδεση χρήστη τερματίστηκε"}.
|
||||
{"Users are not allowed to register accounts so quickly","Οι χρήστες δεν επιτρέπεται να δημιουργούν λογαριασμούς τόσο γρήγορα"}.
|
||||
{"Users Last Activity","Τελευταία Δραστηριότητα Χρήστη"}.
|
||||
{"User ~s","Ο Χρήστης ~s"}.
|
||||
{"Users","Χρήστες"}.
|
||||
{"User","Χρήστης"}.
|
||||
{"Validate","Επαληθεύστε"}.
|
||||
{"Value 'get' of 'type' attribute is not allowed","Η τιμή 'get' του 'type' δεν επιτρέπεται"}.
|
||||
{"Value of '~s' should be boolean","Η τιμή του '~ s' πρέπει να είναι boolean"}.
|
||||
{"Value of '~s' should be datetime string","Η τιμή του '~ s' θα πρέπει να είναι χρονοσειρά"}.
|
||||
{"Value of '~s' should be integer","Η τιμή του '~ s' θα πρέπει να είναι ακέραιος"}.
|
||||
{"Value of '~s' should be boolean","Η τιμή του '~s' πρέπει να είναι boolean"}.
|
||||
{"Value of '~s' should be datetime string","Η τιμή του '~s' θα πρέπει να είναι χρονοσειρά"}.
|
||||
{"Value of '~s' should be integer","Η τιμή του '~s' θα πρέπει να είναι ακέραιος"}.
|
||||
{"Value 'set' of 'type' attribute is not allowed","Δεν επιτρέπεται η παράμετρος 'set' του 'type'"}.
|
||||
{"vCard User Search","vCard Αναζήτηση χρηστών"}.
|
||||
{"Virtual Hosts","Eεικονικοί κεντρικοί υπολογιστές"}.
|
||||
{"View Queue","Εμφάνιση λίστας αναμονής"}.
|
||||
{"View Roster","Εμφάνιση λίστας Επαφών"}.
|
||||
{"Virtual Hosts","Eικονικοί κεντρικοί υπολογιστές"}.
|
||||
{"Visitors are not allowed to change their nicknames in this room","Οι επισκέπτες δεν επιτρέπεται να αλλάξουν τα ψευδώνυμα τους σε αυτή την αίθουσα"}.
|
||||
{"Visitors are not allowed to send messages to all occupants","Οι επισκέπτες δεν επιτρέπεται να στείλουν μηνύματα σε όλους τους συμμετέχωντες"}.
|
||||
{"Visitors are not allowed to send messages to all occupants","Οι επισκέπτες δεν επιτρέπεται να στείλουν μηνύματα σε όλους τους συμμετέχοντες"}.
|
||||
{"Visitor","Επισκέπτης"}.
|
||||
{"Voice requests are disabled in this conference","Τα αιτήματα φωνής είναι απενεργοποιημένα, σε αυτό το συνέδριο"}.
|
||||
{"Voice request","Αίτημα φωνής"}.
|
||||
{"Wednesday","Τετάρτη"}.
|
||||
{"You can later change your password using a Jabber client.","Μπορείτε αργότερα να αλλάξετε τον κωδικό πρόσβασής σας χρησιμοποιώντας έναν πελάτη Jabber."}.
|
||||
{"When a new subscription is processed and whenever a subscriber comes online","Όταν μία νέα συνδρομή βρίσκεται εν επεξεργασία και όποτε ένας συνδρομητής συνδεθεί"}.
|
||||
{"When a new subscription is processed","Όταν μία νέα συνδρομή βρίσκεται εν επεξεργασία"}.
|
||||
{"When to send the last published item","Πότε να αποσταλεί το τελευταίο στοιχείο που δημοσιεύθηκε"}.
|
||||
{"Whether an entity wants to receive an XMPP message body in addition to the payload format","Εάν κάποιος θέλει να λάβει το κυρίως XMPP μήνυμα, επιπροσθέτως του τύπου φόρτου εργασιών"}.
|
||||
{"Whether an entity wants to receive digests (aggregations) of notifications or all notifications individually","Εάν μία οντότητα επιθυμεί να λαμβάνει αθροιστικές συνόψεις των ειδοποιήσεων ή όλες τις ειδοποιήσεις ξεχωριστά"}.
|
||||
{"Whether an entity wants to receive or disable notifications","Εάν μία οντότητα επιθυμεί να λαμβάνει ή όχι ειδοποιήσεις"}.
|
||||
{"Whether owners or publisher should receive replies to items","Εάν οι ιδιοκτήτες επιθυμούν να λαμβάνουν απαντήσεις στα αντικείμενα"}.
|
||||
{"Whether the node is a leaf (default) or a collection","Εάν ο κόμβος είναι leaf (προεπιλογή) ή συλλογή"}.
|
||||
{"Whether to allow subscriptions","Εάν επιτρέπονται συνδρομές"}.
|
||||
{"Whether to make all subscriptions temporary, based on subscriber presence","Αν επιτρέπεται να γίνουν όλες οι συνδρομές προσωρινές, βασιζόμενοι στην παρουσία του συνδρομητή"}.
|
||||
{"Whether to notify owners about new subscribers and unsubscribes","Αν πρέπει να ειδοποιούνται οι ιδιοκτήτες για νέους συνδρομητές και αποχωρήσεις"}.
|
||||
{"Who may associate leaf nodes with a collection","Ποιός μπορεί να συσχετίζει leaf nodes με μία συλλογή"}.
|
||||
{"Wrong parameters in the web formulary","Εσφαλμένες παράμετροι στην διαμόρφωση τυπικότητας του δυκτίου"}.
|
||||
{"Wrong xmlns","Εσφαλμένο xmlns"}.
|
||||
{"XMPP Account Registration","Εγγραφή λογαριασμού XMPP"}.
|
||||
{"XMPP Domains","Ονόματα χώρου XMPP"}.
|
||||
{"XMPP Show Value of Away","Δείξε τιμή XMPP Απεμακρύνθην"}.
|
||||
{"XMPP Show Value of Chat","Δείξε τιμή XMPP Αξία Συνομιλίας"}.
|
||||
{"XMPP Show Value of DND (Do Not Disturb)","Δείξε τιμή XMPP Αξία του Μην Ενοχλείτε"}.
|
||||
{"XMPP Show Value of XA (Extended Away)","Δείξε τιμή XMPP Αξία του Λίαν Απομακρυσμένος"}.
|
||||
{"XMPP URI of Associated Publish-Subscribe Node","XMPP URI του συσχετισμένου κόμβου Δημοσίευσης-Εγγραφής"}.
|
||||
{"You are being removed from the room because of a system shutdown","Απαιτείται η απομάκρυνσή σας από την αίθουσα, λόγω τερματισμού συστήματος"}.
|
||||
{"You are not joined to the channel","Δεν λαμβάνετε μέρος στο κανάλι"}.
|
||||
{"You can later change your password using an XMPP client.","Μπορείτε αργότερα να αλλάξετε τον κωδικό πρόσβασής σας χρησιμοποιώντας ένα πρόγραμμα-πελάτη XMPP."}.
|
||||
{"You have been banned from this room","Σας έχει απαγορευθεί η είσοδος σε αυτή την αίθουσα"}.
|
||||
{"You have joined too many conferences","Είσθε σε πάρα πολλά συνέδρια"}.
|
||||
{"You must fill in field \"Nickname\" in the form","Θα πρέπει να συμπληρώσετε το πεδίο \"Nickname\" στη φόρμα"}.
|
||||
{"You need a client that supports x:data and CAPTCHA to register","Χρειάζεστε ένα x:data και CAPTCHA ικανό πελάτη για εγγραφή"}.
|
||||
{"You need a client that supports x:data to register the nickname","Χρειάζεστε ένα x:data ικανό πελάτη για εγγραφή με ψευδώνυμο"}.
|
||||
{"You need an x:data capable client to search","Χρειάζεστε ένα x:data ικανό πελάτη για αναζήτηση"}.
|
||||
{"You must fill in field \"Nickname\" in the form","Απαιτείται να συμπληρώσετε το πεδίο \"Ψευδώνυμο\" στη φόρμα"}.
|
||||
{"You need a client that supports x:data and CAPTCHA to register","Χρειάζεστε έναν πελάτη που να υποστηρίζει x:data και CAPTCHA"}.
|
||||
{"You need a client that supports x:data to register the nickname","Χρειάζεστε έναν πελάτη που να υποστηρίζει x:data για εγγραφή του ψευδώνυμου"}.
|
||||
{"You need an x:data capable client to search","Χρειάζεστε έναν πελάτη που να υποστηρίζει x:data για να αναζητήσετε"}.
|
||||
{"Your active privacy list has denied the routing of this stanza.","Ο ενεργός κατάλογος απορρήτου, έχει αρνηθεί τη δρομολόγηση αυτής της στροφής (stanza)."}.
|
||||
{"Your contact offline message queue is full. The message has been discarded.","Η μνήμη χωρίς σύνδεση μήνυματών είναι πλήρης. Το μήνυμα έχει απορριφθεί."}.
|
||||
{"You're not allowed to create nodes","Δεν σου επιτρέπεται η δημιουργία κόμβων"}.
|
||||
{"Your Jabber account was successfully created.","Ο Jabber λογαριασμός σας δημιουργήθηκε με επιτυχία."}.
|
||||
{"Your Jabber account was successfully deleted.","Ο Jabber λογαριασμός σας διαγράφηκε με επιτυχία."}.
|
||||
{"Your contact offline message queue is full. The message has been discarded.","Η μνήμη μηνυμάτων χωρίς σύνδεση είναι πλήρης. Το μήνυμα έχει απορριφθεί."}.
|
||||
{"Your subscription request and/or messages to ~s have been blocked. To unblock your subscription request, visit ~s","Τα μηνύματά σας προς ~s είναι αποκλεισμένα. Για αποδεσμεύση, επισκεφθείτε ~s"}.
|
||||
{"Your XMPP account was successfully registered.","Ο λογαριασμός σας XMPP καταχωρήθηκε με επιτυχία."}.
|
||||
{"Your XMPP account was successfully unregistered.","Ο XMPP λογαριασμός σας διαγράφηκε με επιτυχία."}.
|
||||
{"You're not allowed to create nodes","Δεν σας επιτρέπεται η δημιουργία κόμβων"}.
|
||||
|
||||
-2621
File diff suppressed because it is too large
Load Diff
+120
-57
@@ -1,13 +1,33 @@
|
||||
%% -*- coding: utf-8 -*-
|
||||
%% Generated automatically
|
||||
%% DO NOT EDIT: run `make translations` instead
|
||||
%% To improve translations please read:
|
||||
%% https://docs.ejabberd.im/developer/extending-ejabberd/localization/
|
||||
|
||||
{" (Add * to the end of field to match substring)"," (Aldonu * al la fino de la kampo por kongruigi subĉenon)"}.
|
||||
{" has set the subject to: "," ŝanĝis la temon al: "}.
|
||||
{"# participants","Nombro de partoprenantoj"}.
|
||||
{"A description of the node","Priskribo de la nodo"}.
|
||||
{"A friendly name for the node","Kromnomo de la nodo"}.
|
||||
{"A password is required to enter this room","Pasvorto estas bezonata por eniri ĉi tiun babilejon"}.
|
||||
{"A Web Page","Retpaĝo"}.
|
||||
{"Accept","Akcepti"}.
|
||||
{"Access denied by service policy","Atingo rifuzita de serv-politiko"}.
|
||||
{"Access model of open","Atingomodelo de malfermo"}.
|
||||
{"Access model of presence","Atingomodelo de ĉeesto"}.
|
||||
{"Access model of whitelist","Atingomodelo de permesolisto"}.
|
||||
{"Access model","Atingomodelo"}.
|
||||
{"Account doesn't exist","Konto ne ekzistas"}.
|
||||
{"Action on user","Ago je uzanto"}.
|
||||
{"Add Jabber ID","Aldonu Jabber ID"}.
|
||||
{"Add New","Aldonu novan"}.
|
||||
{"Add User","Aldonu Uzanton"}.
|
||||
{"Administration","Administro"}.
|
||||
{"Administration of ","Mastrumado de "}.
|
||||
{"Administration","Administro"}.
|
||||
{"Administrator privileges required","Administrantaj rajtoj bezonata"}.
|
||||
{"All activity","Ĉiu aktiveco"}.
|
||||
{"All Users","Ĉiuj Uzantoj"}.
|
||||
{"Allow subscription","Permesi abonon"}.
|
||||
{"Allow this Jabber ID to subscribe to this pubsub node?","Ĉu permesi ĉi tiun Jabber ID aboni al la jena PubAbo-nodo?"}.
|
||||
{"Allow users to change the subject","Permesu uzantojn ŝanĝi la temon"}.
|
||||
{"Allow users to query other users","Permesu uzantojn informpeti aliajn uzantojn"}.
|
||||
{"Allow users to send invites","Permesu uzantojn sendi invitojn"}.
|
||||
@@ -15,20 +35,35 @@
|
||||
{"Allow visitors to change nickname","Permesu al vizitantoj ŝanĝi siajn kaŝnomojn"}.
|
||||
{"Allow visitors to send private messages to","Permesu uzantojn sendi privatajn mesaĝojn al"}.
|
||||
{"Allow visitors to send status text in presence updates","Permesu al vizitantoj sendi statmesaĝon en ĉeest-sciigoj"}.
|
||||
{"All Users","Ĉiuj Uzantoj"}.
|
||||
{"Allow visitors to send voice requests","Permesu uzantojn sendi voĉ-petojn"}.
|
||||
{"Announcements","Anoncoj"}.
|
||||
{"A password is required to enter this room","Pasvorto estas bezonata por eniri ĉi tiun babilejon"}.
|
||||
{"Answer associated with a picture","Respondo asociita kun bildo"}.
|
||||
{"Answer associated with a video","Respondo asociita kun filmeto"}.
|
||||
{"Answer associated with speech","Respondo asociita kun parolo"}.
|
||||
{"Answer to a question","Respondo al demando"}.
|
||||
{"Anyone may publish","Ĉiu rajtas publici"}.
|
||||
{"Anyone with Voice","Iu ajn kun Voĉo"}.
|
||||
{"Anyone","Iu ajn"}.
|
||||
{"April","Aprilo"}.
|
||||
{"Attribute 'channel' is required for this request","Atributo 'channel' necesas por ĉi tiu peto"}.
|
||||
{"Attribute 'id' is mandatory for MIX messages","Atributo 'id' estas deviga en MIX-mesaĝo"}.
|
||||
{"Attribute 'jid' is not allowed here","Atributo 'jid' ne estas permesita ĉi tie"}.
|
||||
{"Attribute 'node' is not allowed here","Atributo 'node' ne estas permesita ĉi tie"}.
|
||||
{"August","Aŭgusto"}.
|
||||
{"Backup","Faru Sekurkopion"}.
|
||||
{"Backup Management","Mastrumado de sekurkopioj"}.
|
||||
{"Backup of ~p","Sekurkopio de ~p"}.
|
||||
{"Backup to File at ","Faru sekurkopion je "}.
|
||||
{"Backup","Faru Sekurkopion"}.
|
||||
{"Bad format","Malĝusta formo"}.
|
||||
{"Birthday","Naskiĝtago"}.
|
||||
{"Cannot remove active list","Ne povas forigi aktivan liston"}.
|
||||
{"CAPTCHA web page","CAPTCHA teksaĵ-paĝo"}.
|
||||
{"Challenge ID","Identigilo de Defio"}.
|
||||
{"Change Password","Ŝanĝu pasvorton"}.
|
||||
{"Change User Password","Ŝanĝu pasvorton de uzanto"}.
|
||||
{"Channel already exists","Kanalo jam ekzistas"}.
|
||||
{"Channel does not exist","Kanalo ne ekzistas"}.
|
||||
{"Channels","Kanaloj"}.
|
||||
{"Characters not allowed:","Karaktroj ne permesata:"}.
|
||||
{"Chatroom configuration modified","Agordo de babilejo ŝanĝita"}.
|
||||
{"Chatroom is created","Babilejo kreita"}.
|
||||
@@ -37,32 +72,33 @@
|
||||
{"Chatroom is stopped","Babilejo haltita"}.
|
||||
{"Chatrooms","Babilejoj"}.
|
||||
{"Choose a username and password to register with this server","Elektu uzantnomon kaj pasvorton por registri je ĉi tiu servilo"}.
|
||||
{"Choose modules to stop","Elektu modulojn por fini"}.
|
||||
{"Choose storage type of tables","Elektu konserv-tipon de tabeloj"}.
|
||||
{"Choose whether to approve this entity's subscription.","Elektu ĉu permesi la abonon de ĉi tiu ento"}.
|
||||
{"Choose whether to approve this entity's subscription.","Elektu ĉu permesi la abonon de ĉi tiu ento."}.
|
||||
{"City","Urbo"}.
|
||||
{"Commands","Ordonoj"}.
|
||||
{"Conference room does not exist","Babilejo ne ekzistas"}.
|
||||
{"Configuration","Agordo"}.
|
||||
{"Configuration of room ~s","Agordo de babilejo ~s"}.
|
||||
{"Configuration","Agordo"}.
|
||||
{"Connected Resources:","Konektataj risurcoj:"}.
|
||||
{"Country","Lando"}.
|
||||
{"CPU Time:","CPU-tempo"}.
|
||||
{"Database","Datumbazo"}.
|
||||
{"Current Discussion Topic","Aktuala Diskuta Temo"}.
|
||||
{"Database Tables at ~p","Datumbaz-tabeloj je ~p"}.
|
||||
{"Database Tables Configuration at ","Agordo de datumbaz-tabeloj je "}.
|
||||
{"Database","Datumbazo"}.
|
||||
{"December","Decembro"}.
|
||||
{"Default users as participants","Kutime farigu uzantojn kiel partpoprenantoj"}.
|
||||
{"Delete message of the day","Forigu mesaĝo de la tago"}.
|
||||
{"Delete message of the day on all hosts","Forigu mesaĝo de la tago je ĉiu gastigo"}.
|
||||
{"Delete message of the day","Forigu mesaĝo de la tago"}.
|
||||
{"Delete Selected","Forigu elektata(j)n"}.
|
||||
{"Delete User","Forigu Uzanton"}.
|
||||
{"Deliver event notifications","Liveru event-sciigojn"}.
|
||||
{"Deliver payloads with event notifications","Liveru aĵojn de event-sciigoj"}.
|
||||
{"Description:","Priskribo:"}.
|
||||
{"Disc only copy","Nur disk-kopio"}.
|
||||
{"Displayed Groups:","Montrataj grupoj:"}.
|
||||
{"Don't tell your password to anybody, not even the administrators of the Jabber server.","Ne donu vian pasvorton al iun ajn, eĉ ne al la administrantoj de la Ĵabber-servilo."}.
|
||||
{"Dump Backup to Text File at ","Skribu sekurkopion en plata teksto al "}.
|
||||
{"Dump to Text File","Skribu en plata tekst-dosiero"}.
|
||||
{"Duplicated groups are not allowed by RFC6121","RFC 6121 ne permesas duplikatajn grupojn"}.
|
||||
{"Edit Properties","Redaktu atributojn"}.
|
||||
{"Either approve or decline the voice request.","Ĉu aprobu, aŭ malaprobu la voĉ-peton."}.
|
||||
{"ejabberd MUC module","ejabberd MUC-modulo"}.
|
||||
@@ -71,42 +107,45 @@
|
||||
{"ejabberd SOCKS5 Bytestreams module","ejabberd SOCKS5 Bajtfluo modulo"}.
|
||||
{"ejabberd vCard module","ejabberd vCard-modulo"}.
|
||||
{"ejabberd Web Admin","ejabberd Teksaĵa Administro"}.
|
||||
{"ejabberd","ejabberd"}.
|
||||
{"Elements","Eroj"}.
|
||||
{"Email Address","Retpoŝta Adreso"}.
|
||||
{"Email","Retpoŝto"}.
|
||||
{"Enable logging","Ŝaltu protokoladon"}.
|
||||
{"Enable message archiving","Ŝaltu mesaĝo-arkivo"}.
|
||||
{"End User Session","Haltigu Uzant-seancon"}.
|
||||
{"Enter list of {Module, [Options]}","Enmetu liston de {Modulo, [Elektebloj]}"}.
|
||||
{"Enter nickname you want to register","Enmetu kaŝnomon kiun vi volas registri"}.
|
||||
{"Enter path to backup file","Enmetu vojon por sekurkopio"}.
|
||||
{"Enter path to jabberd14 spool dir","Enmetu vojon al jabberd14-uzantdosierujo"}.
|
||||
{"Enter path to jabberd14 spool file","Enmetu vojon al jabberd14-uzantdosiero"}.
|
||||
{"Enter path to text file","Enmetu vojon al plata teksto"}.
|
||||
{"Enter the text you see","Enmetu montrita teksto"}.
|
||||
{"Erlang Jabber Server","Erlang-a Jabber-Servilo"}.
|
||||
{"Error","Eraro"}.
|
||||
{"Exclude Jabber IDs from CAPTCHA challenge","Esceptu Ĵabber-identigilojn je CAPTCHA-defio"}.
|
||||
{"Export all tables as SQL queries to a file:","Eksportu ĉiuj tabeloj kiel SQL-informmendo al dosierujo:"}.
|
||||
{"Export data of all users in the server to PIEFXIS files (XEP-0227):","Eksportu datumojn de ĉiuj uzantoj en servilo al PIEFXIS dosieroj (XEP-0227):"}.
|
||||
{"Export data of users in a host to PIEFXIS files (XEP-0227):","Eksportu datumoj de uzantoj en gastigo al PIEFXIS dosieroj (XEP-0227):"}.
|
||||
{"Failed to extract JID from your voice request approval","Malsukcesis ekstrakti JID-on de via voĉ-pet-aprobo"}.
|
||||
{"Family Name","Lasta Nomo"}.
|
||||
{"February","Februaro"}.
|
||||
{"File larger than ~w bytes","Dosiero pli granda ol ~w bajtoj"}.
|
||||
{"Friday","Vendredo"}.
|
||||
{"From","De"}.
|
||||
{"From ~s","De ~s"}.
|
||||
{"Full Name","Plena Nomo"}.
|
||||
{"Get Number of Online Users","Montru nombron de konektataj uzantoj"}.
|
||||
{"Get Number of Registered Users","Montru nombron de registritaj uzantoj"}.
|
||||
{"Get User Last Login Time","Montru tempon de lasta ensaluto"}.
|
||||
{"Get User Password","Montru pasvorton de uzanto"}.
|
||||
{"Get User Statistics","Montru statistikojn de uzanto"}.
|
||||
{"Group ","Grupo "}.
|
||||
{"Given Name","Persona Nomo"}.
|
||||
{"Grant voice to this person?","Koncedu voĉon al ĉi-persono?"}.
|
||||
{"Group","Grupo"}.
|
||||
{"Groups","Grupoj"}.
|
||||
{"has been banned","estas forbarita"}.
|
||||
{"has been kicked because of an affiliation change","estas forpelita pro aparteneca ŝanĝo"}.
|
||||
{"has been kicked because of a system shutdown","estas forpelita pro sistem-haltigo"}.
|
||||
{"has been kicked because of an affiliation change","estas forpelita pro aparteneca ŝanĝo"}.
|
||||
{"has been kicked because the room has been changed to members-only","estas forpelita ĉar la babilejo fariĝis sole por membroj"}.
|
||||
{"has been kicked","estas forpelita"}.
|
||||
{" has set the subject to: "," ŝanĝis la temon al: "}.
|
||||
{"Host","Gastigo"}.
|
||||
{"If you don't see the CAPTCHA image here, visit the web page.","Se vi ne vidas la CAPTCHA-imagon jene, vizitu la teksaĵ-paĝon."}.
|
||||
{"Import Directory","Importu dosierujo"}.
|
||||
@@ -118,64 +157,82 @@
|
||||
{"Import Users from Dir at ","Importu uzantojn de dosierujo ĉe "}.
|
||||
{"Import Users From jabberd14 Spool Files","Importu uzantojn de jabberd14-uzantdosieroj"}.
|
||||
{"Improper message type","Malĝusta mesaĝo-tipo"}.
|
||||
{"Incorrect CAPTCHA submit","Neĝusta CAPTCHA-submeto"}.
|
||||
{"Incorrect password","Nekorekta pasvorto"}.
|
||||
{"IP addresses","IP-adresoj"}.
|
||||
{"is now known as","nun nomiĝas"}.
|
||||
{"It is not allowed to send private messages","Ne estas permesata sendi privatajn mesaĝojn"}.
|
||||
{"It is not allowed to send private messages of type \"groupchat\"","Malpermesas sendi mesaĝojn de tipo \"groupchat\""}.
|
||||
{"It is not allowed to send private messages to the conference","Nur partoprenantoj rajtas sendi privatajn mesaĝojn al la babilejo"}.
|
||||
{"Jabber Account Registration","Ĵabber-konto registrado"}.
|
||||
{"It is not allowed to send private messages","Ne estas permesata sendi privatajn mesaĝojn"}.
|
||||
{"Jabber ID","Jabber ID"}.
|
||||
{"January","Januaro"}.
|
||||
{"joins the room","eniras la babilejo"}.
|
||||
{"July","Julio"}.
|
||||
{"June","Junio"}.
|
||||
{"Just created","Ĵus kreita"}.
|
||||
{"Label:","Etikedo:"}.
|
||||
{"Last Activity","Lasta aktiveco"}.
|
||||
{"Last login","Lasta ensaluto"}.
|
||||
{"Last month","Lasta monato"}.
|
||||
{"Last year","Lasta jaro"}.
|
||||
{"leaves the room","eliras la babilejo"}.
|
||||
{"List of modules to start","Listo de moduloj por starti"}.
|
||||
{"List of rooms","Listo de babilejoj"}.
|
||||
{"Low level update script","Bazanivela ĝisdatigo-skripto"}.
|
||||
{"Make participants list public","Farigu partoprento-liston publika"}.
|
||||
{"Make room CAPTCHA protected","Farigu babilejon protektata per CAPTCHA"}.
|
||||
{"Make room CAPTCHA protected","Protektu babilejon per CAPTCHA"}.
|
||||
{"Make room members-only","Farigu babilejon sole por membroj"}.
|
||||
{"Make room moderated","Farigu babilejon moderigata"}.
|
||||
{"Make room password protected","Farigu babilejon protektata per pasvorto"}.
|
||||
{"Make room persistent","Farigu babilejon daŭra"}.
|
||||
{"Make room public searchable","Farigu babilejon publike trovebla"}.
|
||||
{"March","Marĉo"}.
|
||||
{"Max payload size in bytes","Maksimuma aĵo-grando je bajtoj"}.
|
||||
{"Maximum file size","Maksimuma grando de dosiero"}.
|
||||
{"Maximum Number of Occupants","Limigo de nombro de partoprenantoj"}.
|
||||
{"May","Majo"}.
|
||||
{"Membership is required to enter this room","Membreco estas bezonata por eniri ĉi tiun babilejon"}.
|
||||
{"Members:","Membroj:"}.
|
||||
{"Memorize your password, or write it in a paper placed in a safe place. In Jabber there isn't an automated way to recover your password if you forget it.","Memoru vian pasvorton, aŭ skribu ĝin sur papero formetata je sekura loko. Je Ĵabber ne ekzistas aŭtomata metodo por reakiri vian pasvorton se vi forgesas ĝin."}.
|
||||
{"Memory","Memoro"}.
|
||||
{"Message body","Teksto de mesaĝo"}.
|
||||
{"Middle Name","Meza Nomo"}.
|
||||
{"Minimum interval between voice requests (in seconds)","Minimuma intervalo inter voĉ-petoj (je sekundoj)"}.
|
||||
{"Moderator privileges required","Moderantaj rajtoj bezonata"}.
|
||||
{"Modified modules","Ĝisdatigitaj moduloj"}.
|
||||
{"Modules","Moduloj"}.
|
||||
{"Module failed to handle the query","Modulo malsukcesis trakti la informpeton"}.
|
||||
{"Monday","Lundo"}.
|
||||
{"Multicast","Multicast"}.
|
||||
{"Multiple <item/> elements are not allowed by RFC6121","RFC 6121 ne permesas plurajn <item/>-elementojn"}.
|
||||
{"Multi-User Chat","Grupbabilado"}.
|
||||
{"Name","Nomo"}.
|
||||
{"Name:","Nomo:"}.
|
||||
{"Natural Language for Room Discussions","Homa Lingvo por Diskutoj en Babilejo"}.
|
||||
{"Never","Neniam"}.
|
||||
{"New Password:","Nova Pasvorto:"}.
|
||||
{"Nickname","Kaŝnomo"}.
|
||||
{"Nickname Registration at ","Kaŝnomo-registrado je "}.
|
||||
{"Nickname ~s does not exist in the room","Kaŝnomo ~s ne ekzistas en la babilejo"}.
|
||||
{"Nickname","Kaŝnomo"}.
|
||||
{"No address elements found","Adresa elemento ne trovita"}.
|
||||
{"No addresses element found","Adresa elemento ne trovita"}.
|
||||
{"No body provided for announce message","Neniu teksto donita por anonc-mesaĝo"}.
|
||||
{"No child elements found","Ida elemento ne trovita"}.
|
||||
{"No Data","Neniu datumo"}.
|
||||
{"No <forwarded/> element found","Elemento <forwarded/> ne trovita"}.
|
||||
{"No items found in this query","Neniu elemento <item/> trovita en ĉi tiu informpeto"}.
|
||||
{"No limit","Neniu limigo"}.
|
||||
{"No module is handling this query","Neniu modulo traktas ĉi tiun informpeton"}.
|
||||
{"No 'password' found in this query","Neniu pasvorto trovita en ĉi tiu informpeto"}.
|
||||
{"No private data found in this query","Neniu privata dateno trovita en ĉi tiu informpeto"}.
|
||||
{"Node ID","Nodo ID"}.
|
||||
{"Node not found","Nodo ne trovita"}.
|
||||
{"Node ~p","Nodo ~p"}.
|
||||
{"Nodes","Nodoj"}.
|
||||
{"No limit","Neniu limigo"}.
|
||||
{"None","Nenio"}.
|
||||
{"Not Found","Ne trovita"}.
|
||||
{"Notify subscribers when items are removed from the node","Sciigu abonantoj kiam eroj estas forigita de la nodo"}.
|
||||
{"Notify subscribers when the node configuration changes","Sciigu abonantoj kiam la agordo de la nodo ŝanĝas"}.
|
||||
{"Notify subscribers when the node is deleted","Sciigu abonantoj kiam la nodo estas forigita"}.
|
||||
{"November","Novembro"}.
|
||||
{"Number of occupants","Nombro de ĉeestantoj"}.
|
||||
{"Number of online users","Nombro de konektataj uzantoj"}.
|
||||
{"Number of registered users","Nombro de registritaj uzantoj"}.
|
||||
{"October","Oktobro"}.
|
||||
@@ -183,53 +240,62 @@
|
||||
{"Offline Messages:","Liverontaj mesaĝoj"}.
|
||||
{"OK","Bone"}.
|
||||
{"Old Password:","Malnova Pasvorto:"}.
|
||||
{"Online","Konektata"}.
|
||||
{"Online Users:","Konektataj uzantoj:"}.
|
||||
{"Online Users","Konektataj Uzantoj"}.
|
||||
{"Online","Konektata"}.
|
||||
{"Only deliver notifications to available users","Nur liveru sciigojn al konektataj uzantoj"}.
|
||||
{"Only <list/> element is allowed in this query","Nur la elemento <list/> estas permesita en ĉi tiu informpeto"}.
|
||||
{"Only moderators and participants are allowed to change the subject in this room","Nur moderigantoj kaj partoprenantoj rajtas ŝanĝi la temon en ĉi tiu babilejo"}.
|
||||
{"Only moderators are allowed to change the subject in this room","Nur moderigantoj rajtas ŝanĝi la temon en ĉi tiu babilejo"}.
|
||||
{"Only moderators can approve voice requests","Nur moderigantoj povas aprobi voĉ-petojn"}.
|
||||
{"Only occupants are allowed to send messages to the conference","Nur partoprenantoj rajtas sendi mesaĝojn al la babilejo"}.
|
||||
{"Only occupants are allowed to send queries to the conference","Nur partoprenantoj rajtas sendi informmendojn al la babilejoj"}.
|
||||
{"Only publishers may publish","Nur publicantoj rajtas publici"}.
|
||||
{"Only service administrators are allowed to send service messages","Nur servo-administrantoj rajtas sendi serv-mesaĝojn"}.
|
||||
{"Only those on a whitelist may associate leaf nodes with the collection","Nur tiuj en permesolisto rajtas asocii foliajn nodojn kun la kolekto"}.
|
||||
{"Only those on a whitelist may subscribe and retrieve items","Nur tiuj en permesolisto rajtas aboni kaj preni erojn"}.
|
||||
{"Organization Name","Organiz-nomo"}.
|
||||
{"Organization Unit","Organiz-parto"}.
|
||||
{"Outgoing s2s Connections","Elirantaj s-al-s-konektoj"}.
|
||||
{"Outgoing s2s Connections:","Elirantaj s-al-s-konektoj:"}.
|
||||
{"Owner privileges required","Mastraj rajtoj bezonata"}.
|
||||
{"Packet","Pakaĵo"}.
|
||||
{"Password","Pasvorto"}.
|
||||
{"Password:","Pasvorto:"}.
|
||||
{"Password Verification","Pasvortkontrolo"}.
|
||||
{"Password Verification:","Pasvortkontrolo:"}.
|
||||
{"Password","Pasvorto"}.
|
||||
{"Password:","Pasvorto:"}.
|
||||
{"Path to Dir","Vojo al dosierujo"}.
|
||||
{"Path to File","Voje de dosiero"}.
|
||||
{"Pending","Atendanta"}.
|
||||
{"Period: ","Periodo: "}.
|
||||
{"Persist items to storage","Savu erojn en konservado"}.
|
||||
{"Ping","Sondaĵo"}.
|
||||
{"Please note that these options will only backup the builtin Mnesia database. If you are using the ODBC module, you also need to backup your SQL database separately.","Rimarku ke ĉi tiuj elektebloj nur sekurkopias la propran Mnesia-datumbazon. Se vi uzas la ODBC-modulon, vi ankaŭ devas sekurkopii tiujn SQL-datumbazoj aparte."}.
|
||||
{"Please, wait for a while before sending new voice request","Bonvolu atendi iomete antaŭ ol sendi plian voĉ-peton"}.
|
||||
{"Pong","Resondaĵo"}.
|
||||
{"Present real Jabber IDs to","Montru verajn Jabber ID-ojn al"}.
|
||||
{"private, ","privata, "}.
|
||||
{"Publish-Subscribe","Public-Abonado"}.
|
||||
{"Publish model","Publici modelon"}.
|
||||
{"Publish-Subscribe","Publici-Aboni"}.
|
||||
{"PubSub subscriber request","PubAbo abonpeto"}.
|
||||
{"Purge all items when the relevant publisher goes offline","Forigu ĉiujn erojn kiam la rilata publicanto malkonektiĝas"}.
|
||||
{"Queries to the conference members are not allowed in this room","Malpermesas informmendoj al partoprenantoj en ĉi tiu babilejo"}.
|
||||
{"Query to another users is forbidden","Informpeto al aliaj uzantoj estas malpermesita"}.
|
||||
{"RAM and disc copy","RAM- kaj disk-kopio"}.
|
||||
{"RAM copy","RAM-kopio"}.
|
||||
{"Really delete message of the day?","Ĉu vere forigi mesaĝon de la tago?"}.
|
||||
{"Recipient is not in the conference room","Ricevanto ne ĉeestas en la babilejo "}.
|
||||
{"Register a Jabber account","Registru Ĵabber-konton"}.
|
||||
{"Recipient is not in the conference room","Ricevanto ne ĉeestas en la babilejo"}.
|
||||
{"Registered Users","Registritaj uzantoj"}.
|
||||
{"Registered Users:","Registritaj uzantoj:"}.
|
||||
{"Register","Registru"}.
|
||||
{"Remote copy","Fora kopio"}.
|
||||
{"Remove All Offline Messages","Forigu ĉiujn liverontajn mesaĝojn"}.
|
||||
{"Remove","Forigu"}.
|
||||
{"Remove User","Forigu uzanton"}.
|
||||
{"Remove","Forigu"}.
|
||||
{"Replaced by new connection","Anstataŭigita je nova konekto"}.
|
||||
{"Resources","Risurcoj"}.
|
||||
{"Restart","Restartu"}.
|
||||
{"Restart Service","Restartu Servon"}.
|
||||
{"Restart","Restartu"}.
|
||||
{"Restore Backup from File at ","Restaŭrigu de dosiero el "}.
|
||||
{"Restore binary backup after next ejabberd restart (requires less memory):","Restaŭrigu duuman sekurkopion post sekvonta ejabberd-restarto"}.
|
||||
{"Restore binary backup immediately:","Restaŭrigu duuman sekurkopion tuj:"}.
|
||||
@@ -240,8 +306,7 @@
|
||||
{"Room description","Babilejo-priskribo"}.
|
||||
{"Room Occupants","Nombro de ĉeestantoj"}.
|
||||
{"Room title","Babilejo-nomo"}.
|
||||
{"Roster","Kontaktlisto"}.
|
||||
{"Roster of ","Kontaktlisto de "}.
|
||||
{"Roster groups allowed to subscribe","Kontaktlist-grupoj kiuj rajtas aboni"}.
|
||||
{"Roster size","Kontaktlist-grando"}.
|
||||
{"RPC Call Error","Eraro de RPC-alvoko"}.
|
||||
{"Running Nodes","Funkciantaj Nodoj"}.
|
||||
@@ -261,16 +326,12 @@
|
||||
{"Show Integral Table","Montru integran tabelon"}.
|
||||
{"Show Ordinary Table","Montru ordinaran tabelon"}.
|
||||
{"Shut Down Service","Haltigu Servon"}.
|
||||
{"~s invites you to the room ~s","~s invitas vin al la babilejo ~s"}.
|
||||
{"Some Jabber clients can store your password in the computer, but you should do this only in your personal computer for safety reasons.","Kelkaj Ĵabber-klientoj povas memori vian pasvorton je via komputilo. Nur uzu tiun eblon se vi fidas ke via komputilo estas sekura."}.
|
||||
{"~s's Offline Messages Queue","Mesaĝo-atendovico de ~s"}.
|
||||
{"Start Modules at ","Startu modulojn je "}.
|
||||
{"Start Modules","Startu Modulojn"}.
|
||||
{"Specify the access model","Specifu atingo-modelon"}.
|
||||
{"Specify the event message type","Specifu tipo de event-mesaĝo"}.
|
||||
{"Specify the publisher model","Enmetu publikadan modelon"}.
|
||||
{"Statistics of ~p","Statistikoj de ~p"}.
|
||||
{"Statistics","Statistikoj"}.
|
||||
{"Stop","Haltigu"}.
|
||||
{"Stop Modules at ","Haltigu modulojn je "}.
|
||||
{"Stop Modules","Haltigu Modulojn"}.
|
||||
{"Stopped Nodes","Neaktivaj Nodoj"}.
|
||||
{"Storage Type","Konserv-tipo"}.
|
||||
{"Store binary backup:","Konservu duuman sekurkopion:"}.
|
||||
@@ -278,21 +339,22 @@
|
||||
{"Subject","Temo"}.
|
||||
{"Submit","Sendu"}.
|
||||
{"Submitted","Sendita"}.
|
||||
{"Subscriber Address","Abonanta adreso"}.
|
||||
{"Subscribers may publish","Abonantoj rajtas publici"}.
|
||||
{"Subscription","Abono"}.
|
||||
{"Sunday","Dimanĉo"}.
|
||||
{"That nickname is already in use by another occupant","Tiu kaŝnomo jam estas uzata de alia partoprenanto"}.
|
||||
{"That nickname is registered by another person","Kaŝnomo estas registrita de alia persono"}.
|
||||
{"The CAPTCHA is valid.","La CAPTCHA ĝustas"}.
|
||||
{"The CAPTCHA is valid.","La CAPTCHA ĝustas."}.
|
||||
{"The CAPTCHA verification has failed","La CAPTCHA-kontrolado malsukcesis"}.
|
||||
{"the password is","la pasvorto estas"}.
|
||||
{"The captcha you entered is wrong","La CAPTCHA enigita de vi malĝustas"}.
|
||||
{"The collections with which a node is affiliated","Aro kun kiu nodo estas filigita"}.
|
||||
{"The password is too weak","La pasvorto estas ne sufiĉe forta"}.
|
||||
{"The password of your Jabber account was successfully changed.","La pasvorto de via Ĵabber-konto estas sukcese ŝanĝata."}.
|
||||
{"There was an error changing the password: ","Estis eraro dum ŝanĝi de la pasvortro:"}.
|
||||
{"the password is","la pasvorto estas"}.
|
||||
{"The query is only allowed from local users","La informpeto estas permesita nur de lokaj uzantoj"}.
|
||||
{"The query must not contain <item/> elements","La informpeto devas ne enhavi elementojn <item/>"}.
|
||||
{"There was an error creating the account: ","Estis eraro dum kreado de la konto:"}.
|
||||
{"There was an error deleting the account: ","Estis eraro dum forigado de la konto:"}.
|
||||
{"This is case insensitive: macbeth is the same that MacBeth and Macbeth.","Uskleco ne signifas: macbeth estas la sama ol MacBeth kaj Macbeth."}.
|
||||
{"This page allows to create a Jabber account in this Jabber server. Your JID (Jabber IDentifier) will be of the form: username@server. Please read carefully the instructions to fill correctly the fields.","Jena paĝo ebligas kreadon de Ĵabber-konto je ĉi-Ĵabber-servilo. Via JID (Ĵabber-IDentigilo) estos ĉi-tiel: uzantnomo@servilo. Bonvolu legu bone la instrukciojn por korekta enmetigo de la kampoj. "}.
|
||||
{"This page allows to unregister a Jabber account in this Jabber server.","Jena pagxo ebligas malregistri Jxabber-konton je ĉi-servilo."}.
|
||||
{"This room is not anonymous","Ĉi tiu babilejo ne estas anonima"}.
|
||||
{"Thursday","Ĵaŭdo"}.
|
||||
{"Time delay","Prokrasto"}.
|
||||
@@ -301,7 +363,6 @@
|
||||
{"Too many CAPTCHA requests","Tro multaj CAPTCHA-petoj"}.
|
||||
{"Too many (~p) failed authentications from this IP address (~s). The address will be unblocked at ~s UTC","Tro da malsukcesaj aŭtentprovoj (~p) de ĉi tiu IP-adreso (~s). La adreso estos malbarata je ~s UTC."}.
|
||||
{"Too many unacked stanzas","Tro da neagnoskitaj stancoj"}.
|
||||
{"To ~s","Al ~s"}.
|
||||
{"Total rooms","Babilejoj"}.
|
||||
{"Traffic rate limit is exceeded","Trafikrapida limigo superita"}.
|
||||
{"Transactions Aborted:","Transakcioj nuligitaj"}.
|
||||
@@ -311,21 +372,21 @@
|
||||
{"Tuesday","Mardo"}.
|
||||
{"Unable to generate a CAPTCHA","Ne eblis krei CAPTCHA"}.
|
||||
{"Unauthorized","Nepermesita"}.
|
||||
{"Unregister a Jabber account","Malregistru Ĵabber-konton"}.
|
||||
{"Unregister","Malregistru"}.
|
||||
{"Update","Ĝisdatigu"}.
|
||||
{"Update message of the day (don't send)","Ŝanĝu mesaĝon de la tago (ne sendu)"}.
|
||||
{"Update message of the day on all hosts (don't send)","Ŝanĝu mesaĝon de la tago je ĉiu gastigo (ne sendu)"}.
|
||||
{"Update ~p","Ĝisdatigu ~p-n"}.
|
||||
{"Update plan","Ĝisdatigo-plano"}.
|
||||
{"Update script","Ĝisdatigo-skripto"}.
|
||||
{"Update","Ĝisdatigu"}.
|
||||
{"Uptime:","Daŭro de funkciado"}.
|
||||
{"URL for Archived Discussion Logs","Retpaĝa adreso de Enarkivigitaj Diskutprotokoloj"}.
|
||||
{"User JID","Uzant-JID"}.
|
||||
{"User Management","Uzanto-administrado"}.
|
||||
{"Username:","Uzantnomo"}.
|
||||
{"Users are not allowed to register accounts so quickly","Ne estas permesata al uzantoj registri tiel rapide"}.
|
||||
{"Users Last Activity","Lasta aktiveco de uzanto"}.
|
||||
{"Users","Uzantoj"}.
|
||||
{"User ~s","Uzanto ~s"}.
|
||||
{"User","Uzanto"}.
|
||||
{"Validate","Validigu"}.
|
||||
{"vCard User Search","Serĉado de vizitkartoj"}.
|
||||
@@ -335,7 +396,10 @@
|
||||
{"Voice requests are disabled in this conference","Voĉ-petoj estas malebligita en jena babilejo"}.
|
||||
{"Voice request","Voĉ-peto"}.
|
||||
{"Wednesday","Merkredo"}.
|
||||
{"You can later change your password using a Jabber client.","Poste vi povas ŝanĝi vian pasvorton per Ĵabber-kliento."}.
|
||||
{"When to send the last published item","Kiam sendi la laste publicitan eron"}.
|
||||
{"Whether to allow subscriptions","Ĉu permesi aboni"}.
|
||||
{"Wrong xmlns","Malĝusta XML-nomspaco (xmlns)"}.
|
||||
{"XMPP Account Registration","Registrado de XMPP-Konto"}.
|
||||
{"You have been banned from this room","Vi estas malpermesata en ĉi tiu babilejo"}.
|
||||
{"You must fill in field \"Nickname\" in the form","Vi devas kompletigi la \"Kaŝnomo\" kampon"}.
|
||||
{"You need a client that supports x:data and CAPTCHA to register","Vi bezonas klienton subtenante x:data-funkcio kaj CAPTCHA por registri kaŝnomon"}.
|
||||
@@ -343,5 +407,4 @@
|
||||
{"You need an x:data capable client to search","Vi bezonas klienton kun x:data-funkcio por serĉado"}.
|
||||
{"Your active privacy list has denied the routing of this stanza.","Via aktiva privatec-listo malpermesas enkursigi ĉi-tiun pakaĵon"}.
|
||||
{"Your contact offline message queue is full. The message has been discarded.","Mesaĝo-atendovico de la senkonekta kontakto estas plena. La mesaĝo estas forĵetita"}.
|
||||
{"Your Jabber account was successfully created.","Via Ĵabber-konto estis sukcese kreata."}.
|
||||
{"Your Jabber account was successfully deleted.","Via Ĵabber-konto estas sukcese forigita."}.
|
||||
{"Your subscription request and/or messages to ~s have been blocked. To unblock your subscription request, visit ~s","Viaj mesaĝoj al ~s estas blokata. Por malbloki ilin, iru al ~s"}.
|
||||
|
||||
-2558
File diff suppressed because it is too large
Load Diff
+234
-70
@@ -1,11 +1,26 @@
|
||||
%% -*- coding: utf-8 -*-
|
||||
{" (Add * to the end of field to match substring)","(Añade * al final del campo para buscar subcadenas)"}.
|
||||
%% Generated automatically
|
||||
%% DO NOT EDIT: run `make translations` instead
|
||||
%% To improve translations please read:
|
||||
%% https://docs.ejabberd.im/developer/extending-ejabberd/localization/
|
||||
|
||||
{" (Add * to the end of field to match substring)"," (Añade * al final del campo para buscar subcadenas)"}.
|
||||
{" has set the subject to: "," ha puesto el asunto: "}.
|
||||
{"A password is required to enter this room"," (Añade * al final del campo para buscar subcadenas)"}.
|
||||
{"# participants","# participantes"}.
|
||||
{"A description of the node","Una descripción del nodo"}.
|
||||
{"A friendly name for the node","Un nombre sencillo para el nodo"}.
|
||||
{"A password is required to enter this room","(Añade * al final del campo para buscar subcadenas)"}.
|
||||
{"A Web Page","Una página web"}.
|
||||
{"Accept","Aceptar"}.
|
||||
{"Access denied by service policy","Acceso denegado por la política del servicio"}.
|
||||
{"Access model of authorize","Modelo de acceso de Autorizar"}.
|
||||
{"Access model of open","Modelo de acceso de Abierto"}.
|
||||
{"Access model of presence","Modelo de acceso de Presencia"}.
|
||||
{"Access model of roster","Modelo de acceso de Roster"}.
|
||||
{"Access model of whitelist","Modelo de acceso de Lista Blanca"}.
|
||||
{"Access model","Modelo de Acceso"}.
|
||||
{"Account doesn't exist","La cuenta no existe"}.
|
||||
{"Action on user","Acción en el usuario"}.
|
||||
{"Add a hat to a user","Añade un sombrero a un usuario"}.
|
||||
{"Add Jabber ID","Añadir Jabber ID"}.
|
||||
{"Add New","Añadir nuevo"}.
|
||||
{"Add User","Añadir usuario"}.
|
||||
@@ -14,6 +29,9 @@
|
||||
{"Administrator privileges required","Se necesita privilegios de administrador"}.
|
||||
{"All activity","Toda la actividad"}.
|
||||
{"All Users","Todos los usuarios"}.
|
||||
{"Allow subscription","Permitir la subscripción"}.
|
||||
{"Allow this Jabber ID to subscribe to this pubsub node?","¿Deseas permitir a este Jabber ID que se subscriba a este nodo PubSub?"}.
|
||||
{"Allow this person to register with the room?","¿Permitir a esta persona que se registre en la sala?"}.
|
||||
{"Allow users to change the subject","Permitir a los usuarios cambiar el asunto"}.
|
||||
{"Allow users to query other users","Permitir a los usuarios consultar a otros usuarios"}.
|
||||
{"Allow users to send invites","Permitir a los usuarios enviar invitaciones"}.
|
||||
@@ -21,13 +39,27 @@
|
||||
{"Allow visitors to change nickname","Permitir a los visitantes cambiarse el apodo"}.
|
||||
{"Allow visitors to send private messages to","Permitir a los visitantes enviar mensajes privados a"}.
|
||||
{"Allow visitors to send status text in presence updates","Permitir a los visitantes enviar texto de estado en las actualizaciones de presencia"}.
|
||||
{"Allow visitors to send voice requests","Permitir a los visitantes enviar peticiones de voz"}.
|
||||
{"An associated LDAP group that defines room membership; this should be an LDAP Distinguished Name according to an implementation-specific or deployment-specific definition of a group.","Un grupo LDAP asociado que define la membresía a la sala; este debería ser un Nombre Distinguido de LDAP, de acuerdo con una definición de grupo específica de la implementación o de esta instalación."}.
|
||||
{"Announcements","Anuncios"}.
|
||||
{"April","abril"}.
|
||||
{"Answer associated with a picture","Respuesta asociada con una imagen"}.
|
||||
{"Answer associated with a video","Respuesta asociada con un video"}.
|
||||
{"Answer associated with speech","Respuesta asociada con un audio"}.
|
||||
{"Answer to a question","Responde a una pregunta"}.
|
||||
{"Anyone in the specified roster group(s) may subscribe and retrieve items","Cualquiera que esté en el grupo(s) de contactos especificado puede suscribirse y recibir elementos"}.
|
||||
{"Anyone may associate leaf nodes with the collection","Cualquiera puede asociar nodos hoja con la colección"}.
|
||||
{"Anyone may publish","Cualquiera puede publicar"}.
|
||||
{"Anyone may subscribe and retrieve items","Cualquiera puede suscribirse y recibir elementos"}.
|
||||
{"Anyone with a presence subscription of both or from may subscribe and retrieve items","Cualquiera con una suscripción a la presencia de 'ambos' o 'de' puede suscribirse y recibir elementos"}.
|
||||
{"Anyone with Voice","Cualquiera con Voz"}.
|
||||
{"Anyone","Cualquiera"}.
|
||||
{"April","Abril"}.
|
||||
{"Attribute 'channel' is required for this request","El atributo 'channel' es necesario para esta petición"}.
|
||||
{"Attribute 'id' is mandatory for MIX messages","El atributo 'id' es necesario para mensajes MIX"}.
|
||||
{"Attribute 'jid' is not allowed here","El atributo 'jid' no está permitido aqui"}.
|
||||
{"Attribute 'node' is not allowed here","El atributo 'node' no está permitido aqui"}.
|
||||
{"August","agosto"}.
|
||||
{"Attribute 'to' of stanza that triggered challenge","Atributo 'to' del paquete que disparó la comprobación"}.
|
||||
{"August","Agosto"}.
|
||||
{"Automatic node creation is not enabled","La creación automática de nodo no está activada"}.
|
||||
{"Backup Management","Gestión de copia de seguridad"}.
|
||||
{"Backup of ~p","Copia de seguridad de ~p"}.
|
||||
@@ -40,6 +72,7 @@
|
||||
{"Cannot remove active list","No se puede borrar la lista activa"}.
|
||||
{"Cannot remove default list","No se puede borrar la lista por defecto"}.
|
||||
{"CAPTCHA web page","Página web de CAPTCHA"}.
|
||||
{"Challenge ID","ID de la comprobación"}.
|
||||
{"Change Password","Cambiar contraseña"}.
|
||||
{"Change User Password","Cambiar contraseña de usuario"}.
|
||||
{"Changing password is not allowed","No está permitido cambiar la contraseña"}.
|
||||
@@ -55,7 +88,6 @@
|
||||
{"Chatroom is stopped","Se ha detenido la sala"}.
|
||||
{"Chatrooms","Salas de charla"}.
|
||||
{"Choose a username and password to register with this server","Escoge un nombre de usuario y contraseña para registrarte en este servidor"}.
|
||||
{"Choose modules to stop","Selecciona módulos a detener"}.
|
||||
{"Choose storage type of tables","Selecciona tipo de almacenamiento de las tablas"}.
|
||||
{"Choose whether to approve this entity's subscription.","Decidir si aprobar la subscripción de esta entidad."}.
|
||||
{"City","Ciudad"}.
|
||||
@@ -65,13 +97,15 @@
|
||||
{"Configuration of room ~s","Configuración para la sala ~s"}.
|
||||
{"Configuration","Configuración"}.
|
||||
{"Connected Resources:","Recursos conectados:"}.
|
||||
{"Contact Addresses (normally, room owner or owners)","Direcciones de contacto (normalmente la del dueño o dueños de la sala)"}.
|
||||
{"Country","País"}.
|
||||
{"CPU Time:","Tiempo consumido de CPU:"}.
|
||||
{"Current Discussion Topic","Tema de discusión actual"}.
|
||||
{"Database failure","Error en la base de datos"}.
|
||||
{"Database Tables at ~p","Tablas de la base de datos en ~p"}.
|
||||
{"Database Tables Configuration at ","Configuración de tablas de la base de datos en "}.
|
||||
{"Database","Base de datos"}.
|
||||
{"December","diciembre"}.
|
||||
{"December","Diciembre"}.
|
||||
{"Default users as participants","Los usuarios son participantes por defecto"}.
|
||||
{"Delete content","Borrar contenido"}.
|
||||
{"Delete message of the day on all hosts","Borrar el mensaje del día en todos los dominios"}.
|
||||
@@ -79,15 +113,20 @@
|
||||
{"Delete Selected","Borrar los seleccionados"}.
|
||||
{"Delete table","Borrar tabla"}.
|
||||
{"Delete User","Borrar usuario"}.
|
||||
{"Deliver event notifications","Entregar notificaciones de eventos"}.
|
||||
{"Deliver payloads with event notifications","Enviar contenidos junto con las notificaciones de eventos"}.
|
||||
{"Description:","Descripción:"}.
|
||||
{"Disc only copy","Copia en disco solamente"}.
|
||||
{"Displayed Groups:","Mostrar grupos:"}.
|
||||
{"Don't tell your password to anybody, not even the administrators of the Jabber server.","No le digas tu contraseña a nadie, ni siquiera a los administradores del servidor Jabber."}.
|
||||
{"'Displayed groups' not added (they do not exist!): ","'Mostrados' que no han sido añadidos (¡no existen!): "}.
|
||||
{"Displayed:","Mostrados:"}.
|
||||
{"Don't tell your password to anybody, not even the administrators of the XMPP server.","No le digas tu contraseña a nadie, ni siquiera a los administradores del servidor XMPP."}.
|
||||
{"Dump Backup to Text File at ","Exporta copia de seguridad a fichero de texto en "}.
|
||||
{"Dump to Text File","Exportar a fichero de texto"}.
|
||||
{"Duplicated groups are not allowed by RFC6121","Los grupos duplicados no están permitidos por RFC6121"}.
|
||||
{"Dynamically specify a replyto of the item publisher","Especificar dinámicamente como dirección de respuesta al publicador del elemento"}.
|
||||
{"Edit Properties","Editar propiedades"}.
|
||||
{"Either approve or decline the voice request.","Aprueba o rechaza la petición de voz."}.
|
||||
{"ejabberd HTTP Upload service","Servicio HTTP Upload de ejabberd"}.
|
||||
{"ejabberd MUC module","Módulo de MUC para ejabberd"}.
|
||||
{"ejabberd Multicast service","Servicio Multicast de ejabberd"}.
|
||||
{"ejabberd Publish-Subscribe module","Módulo de Publicar-Subscribir de ejabberd"}.
|
||||
@@ -96,20 +135,22 @@
|
||||
{"ejabberd Web Admin","ejabberd Web Admin"}.
|
||||
{"ejabberd","ejabberd"}.
|
||||
{"Elements","Elementos"}.
|
||||
{"Email","correo"}.
|
||||
{"Empty password","Contraseña vacía"}.
|
||||
{"Email Address","Dirección de correo electrónico"}.
|
||||
{"Email","Correo electrónico"}.
|
||||
{"Enable hats","Activar sombreros"}.
|
||||
{"Enable logging","Guardar históricos"}.
|
||||
{"Enable message archiving","Activar el almacenamiento de mensajes"}.
|
||||
{"Enabling push without 'node' attribute is not supported","No está soportado activar Push sin el atributo 'node'"}.
|
||||
{"End User Session","Cerrar sesión de usuario"}.
|
||||
{"Enter list of {Module, [Options]}","Introduce lista de {módulo, [opciones]}"}.
|
||||
{"Enter nickname you want to register","Introduce el apodo que quieras registrar"}.
|
||||
{"Enter path to backup file","Introduce ruta al fichero de copia de seguridad"}.
|
||||
{"Enter path to jabberd14 spool dir","Introduce la ruta al directorio de jabberd14 spools"}.
|
||||
{"Enter path to jabberd14 spool file","Introduce ruta al fichero jabberd14 spool"}.
|
||||
{"Enter path to text file","Introduce ruta al fichero de texto"}.
|
||||
{"Enter the text you see","Teclea el texto que ves"}.
|
||||
{"Erlang Jabber Server","Servidor Jabber en Erlang"}.
|
||||
{"Erlang XMPP Server","Servidor XMPP en Erlang"}.
|
||||
{"Error","Error"}.
|
||||
{"Exclude Jabber IDs from CAPTCHA challenge","Excluir Jabber IDs de las pruebas de CAPTCHA"}.
|
||||
{"Export all tables as SQL queries to a file:","Exportar todas las tablas a un fichero SQL:"}.
|
||||
{"Export data of all users in the server to PIEFXIS files (XEP-0227):","Exportar datos de todos los usuarios del servidor a ficheros PIEFXIS (XEP-0227):"}.
|
||||
{"Export data of users in a host to PIEFXIS files (XEP-0227):","Exportar datos de los usuarios de un dominio a ficheros PIEFXIS (XEP-0227):"}.
|
||||
@@ -121,12 +162,15 @@
|
||||
{"Failed to parse HTTP response","Falló la comprensión de la respuesta HTTP"}.
|
||||
{"Failed to process option '~s'","Falló el procesado de la opción '~s'"}.
|
||||
{"Family Name","Apellido"}.
|
||||
{"February","febrero"}.
|
||||
{"FAQ Entry","Apunte en la FAQ"}.
|
||||
{"February","Febrero"}.
|
||||
{"File larger than ~w bytes","El fichero es más grande que ~w bytes"}.
|
||||
{"Fill in the form to search for any matching Jabber User","Rellena campos para buscar usuarios Jabber que concuerden"}.
|
||||
{"Friday","viernes"}.
|
||||
{"From ~s","De ~s"}.
|
||||
{"Fill in the form to search for any matching XMPP User","Rellena campos para buscar usuarios XMPP que concuerden"}.
|
||||
{"Friday","Viernes"}.
|
||||
{"From ~ts","De ~ts"}.
|
||||
{"From","De"}.
|
||||
{"Full List of Room Admins","Lista completa de administradores de la sala"}.
|
||||
{"Full List of Room Owners","Lista completa de dueños de la sala"}.
|
||||
{"Full Name","Nombre completo"}.
|
||||
{"Get Number of Online Users","Ver número de usuarios conectados"}.
|
||||
{"Get Number of Registered Users","Ver número de usuarios registrados"}.
|
||||
@@ -135,13 +179,18 @@
|
||||
{"Get User Password","Ver contraseña de usuario"}.
|
||||
{"Get User Statistics","Ver estadísticas de usuario"}.
|
||||
{"Given Name","Nombre"}.
|
||||
{"Group ","Grupo "}.
|
||||
{"Grant voice to this person?","¿Conceder voz a esta persona?"}.
|
||||
{"Group","Grupo"}.
|
||||
{"Groups that will be displayed to the members","Grupos que se mostrarán a los miembros"}.
|
||||
{"Groups","Grupos"}.
|
||||
{"has been banned","ha sido bloqueado"}.
|
||||
{"has been kicked because of a system shutdown","ha sido expulsado porque el sistema se va a detener"}.
|
||||
{"has been kicked because of an affiliation change","ha sido expulsado por un cambio de su afiliación"}.
|
||||
{"has been kicked because the room has been changed to members-only","ha sido expulsado porque la sala es ahora solo para miembros"}.
|
||||
{"has been kicked","ha sido expulsado"}.
|
||||
{"Hat title","Título del sombrero"}.
|
||||
{"Hat URI","Dirección del sombrero"}.
|
||||
{"Hats limit exceeded","Se ha excedido el límite de sombreros"}.
|
||||
{"Host unknown","Dominio desconocido"}.
|
||||
{"Host","Dominio"}.
|
||||
{"HTTP File Upload","Subir fichero por HTTP"}.
|
||||
@@ -176,19 +225,26 @@
|
||||
{"It is not allowed to send private messages of type \"groupchat\"","No está permitido enviar mensajes privados del tipo \"groupchat\""}.
|
||||
{"It is not allowed to send private messages to the conference","Impedir el envio de mensajes privados a la sala"}.
|
||||
{"It is not allowed to send private messages","No está permitido enviar mensajes privados"}.
|
||||
{"Jabber Account Registration","Registro de Cuenta Jabber"}.
|
||||
{"Jabber ID","Jabber ID"}.
|
||||
{"January","enero"}.
|
||||
{"January","Enero"}.
|
||||
{"JID normalization denied by service policy","Se ha denegado la normalización del JID por política del servicio"}.
|
||||
{"JID normalization failed","Ha fallado la normalización del JID"}.
|
||||
{"joins the room","entra en la sala"}.
|
||||
{"July","julio"}.
|
||||
{"June","junio"}.
|
||||
{"July","Julio"}.
|
||||
{"June","Junio"}.
|
||||
{"Just created","Recién creada"}.
|
||||
{"Label:","Etiqueta:"}.
|
||||
{"Last Activity","Última actividad"}.
|
||||
{"Last login","Última conexión"}.
|
||||
{"Last message","Último mensaje"}.
|
||||
{"Last month","Último mes"}.
|
||||
{"Last year","Último año"}.
|
||||
{"Least significant bits of SHA-256 hash of text should equal hexadecimal label","Los bits menos significativos del hash SHA-256 del texto deberían ser iguales a la etiqueta hexadecimal"}.
|
||||
{"leaves the room","sale de la sala"}.
|
||||
{"List of modules to start","Lista de módulos a iniciar"}.
|
||||
{"List of rooms","Lista de salas"}.
|
||||
{"List of users with hats","Lista de usuarios con sombreros"}.
|
||||
{"List users with hats","Listar usuarios con sombreros"}.
|
||||
{"Logging","Histórico de mensajes"}.
|
||||
{"Low level update script","Script de actualización a bajo nivel"}.
|
||||
{"Make participants list public","La lista de participantes es pública"}.
|
||||
{"Make room CAPTCHA protected","Proteger la sala con CAPTCHA"}.
|
||||
@@ -199,27 +255,41 @@
|
||||
{"Make room public searchable","Sala públicamente visible"}.
|
||||
{"Malformed username","Nombre de usuario mal formado"}.
|
||||
{"MAM preference modification denied by service policy","Se ha denegado modificar la preferencia MAM por política del servicio"}.
|
||||
{"March","marzo"}.
|
||||
{"March","Marzo"}.
|
||||
{"Max # of items to persist, or `max` for no specific limit other than a server imposed maximum","Máximo # de elementos a persistir, o `max` para no especificar un límite, más que el máximo impuesto por el servidor"}.
|
||||
{"Max payload size in bytes","Máximo tamaño del contenido en bytes"}.
|
||||
{"Maximum file size","Tamaño máximo de fichero"}.
|
||||
{"Maximum Number of History Messages Returned by Room","Máximo número de mensajes del historial devueltos por la sala"}.
|
||||
{"Maximum number of items to persist","Máximo número de elementos que persisten"}.
|
||||
{"Maximum Number of Occupants","Número máximo de ocupantes"}.
|
||||
{"May","mayo"}.
|
||||
{"May","Mayo"}.
|
||||
{"Members not added (inexistent vhost!): ","Miembros no añadidos (el vhost no existe): "}.
|
||||
{"Membership is required to enter this room","Necesitas ser miembro de esta sala para poder entrar"}.
|
||||
{"Members:","Miembros:"}.
|
||||
{"Memorize your password, or write it in a paper placed in a safe place. In Jabber there isn't an automated way to recover your password if you forget it.","Memoriza tu contraseña, o apúntala en un papel en un lugar seguro. En Jabber no hay un método automatizado para recuperar la contraseña si la olvidas."}.
|
||||
{"Memorize your password, or write it in a paper placed in a safe place. In XMPP there isn't an automated way to recover your password if you forget it.","Memoriza tu contraseña, o apúntala en un papel en un lugar seguro. En XMPP no hay un método automatizado para recuperar la contraseña si la olvidas."}.
|
||||
{"Memory","Memoria"}.
|
||||
{"Mere Availability in XMPP (No Show Value)","Disponible en XMPP (sin valor de Mostrado)"}.
|
||||
{"Message body","Cuerpo del mensaje"}.
|
||||
{"Message not found in forwarded payload","Mensaje no encontrado en el contenido reenviado"}.
|
||||
{"Messages from strangers are rejected","Los mensajes de extraños son rechazados"}.
|
||||
{"Messages of type headline","Mensajes de tipo titular"}.
|
||||
{"Messages of type normal","Mensajes de tipo normal"}.
|
||||
{"Middle Name","Segundo nombre"}.
|
||||
{"Minimum interval between voice requests (in seconds)","Intervalo mínimo entre peticiones de voz (en segundos)"}.
|
||||
{"Moderator privileges required","Se necesita privilegios de moderador"}.
|
||||
{"Moderator","Moderador"}.
|
||||
{"Moderators Only","Solo moderadores"}.
|
||||
{"Modified modules","Módulos modificados"}.
|
||||
{"Module failed to handle the query","El módulo falló al gestionar la petición"}.
|
||||
{"Modules","Módulos"}.
|
||||
{"Monday","lunes"}.
|
||||
{"Monday","Lunes"}.
|
||||
{"Multicast","Multicast"}.
|
||||
{"Multiple <item/> elements are not allowed by RFC6121","No se permiten múltiples elementos <item/> en RFC6121"}.
|
||||
{"Multi-User Chat","Salas de Charla"}.
|
||||
{"Name in the rosters where this group will be displayed","Nombre del grupo con que aparecerá en las listas de contactos"}.
|
||||
{"Name","Nombre"}.
|
||||
{"Name:","Nombre:"}.
|
||||
{"Natural Language for Room Discussions","Idioma natural en las charlas de la sala"}.
|
||||
{"Natural-Language Room Name","Nombre de la sala en el idioma natural de la sala"}.
|
||||
{"Neither 'jid' nor 'nick' attribute found","No se encontraron los atributos 'jid' ni 'nick'"}.
|
||||
{"Neither 'role' nor 'affiliation' attribute found","No se encontraron los atributos 'role' ni 'affiliation'"}.
|
||||
{"Never","Nunca"}.
|
||||
@@ -244,7 +314,6 @@
|
||||
{"No items found in this query","No se han encontrado elementos en esta petición"}.
|
||||
{"No limit","Sin límite"}.
|
||||
{"No module is handling this query","Ningún modulo está gestionando esta petición"}.
|
||||
{"No 'modules' found in data form","No se encontró 'modules' en el formulario de datos"}.
|
||||
{"No node specified","No se ha especificado ningún nodo"}.
|
||||
{"No 'password' found in data form","No se encontró 'password' en el formulario de datos"}.
|
||||
{"No 'password' found in this query","No se encontró 'password' en esta petición"}.
|
||||
@@ -256,20 +325,32 @@
|
||||
{"No services available","No hay servicios disponibles"}.
|
||||
{"No statistics found for this item","No se han encontrado estadísticas para este elemento"}.
|
||||
{"No 'to' attribute found in the invitation","No se encontró el atributo 'to' en la invitación"}.
|
||||
{"Nobody","Nadie"}.
|
||||
{"Node already exists","El nodo ya existe"}.
|
||||
{"Node ID","Nodo ID"}.
|
||||
{"Node index not found","No se ha encontrado índice de nodo"}.
|
||||
{"Node not found","Nodo no encontrado"}.
|
||||
{"Node ~p","Nodo ~p"}.
|
||||
{"Node","Nodo"}.
|
||||
{"Nodeprep has failed","Ha fallado el procesado del nombre de nodo (nodeprep)"}.
|
||||
{"Nodes","Nodos"}.
|
||||
{"None","Ninguno"}.
|
||||
{"Not allowed","No permitido"}.
|
||||
{"Not Found","No encontrado"}.
|
||||
{"Not subscribed","No suscrito"}.
|
||||
{"November","noviembre"}.
|
||||
{"Notify subscribers when items are removed from the node","Notificar subscriptores cuando los elementos se borran del nodo"}.
|
||||
{"Notify subscribers when the node configuration changes","Notificar subscriptores cuando cambia la configuración del nodo"}.
|
||||
{"Notify subscribers when the node is deleted","Notificar subscriptores cuando el nodo se borra"}.
|
||||
{"November","Noviembre"}.
|
||||
{"Number of answers required","Número de respuestas necesarias"}.
|
||||
{"Number of occupants","Número de ocupantes"}.
|
||||
{"Number of Offline Messages","Número de mensajes diferidos"}.
|
||||
{"Number of online users","Número de usuarios conectados"}.
|
||||
{"Number of registered users","Número de usuarios registrados"}.
|
||||
{"October","octubre"}.
|
||||
{"Number of seconds after which to automatically purge items, or `max` for no specific limit other than a server imposed maximum","Número de segundos después de los cuales se purgarán elementos automáticamente, o `max` para no especificar un límite, más que el máximo impuesto por el servidor"}.
|
||||
{"Occupants are allowed to invite others","Los ocupantes pueden invitar a otras personas"}.
|
||||
{"Occupants May Change the Subject","Los ocupantes pueden cambiar el Asunto"}.
|
||||
{"October","Octubre"}.
|
||||
{"Offline Messages","Mensajes diferidos"}.
|
||||
{"Offline Messages:","Mensajes diferidos:"}.
|
||||
{"OK","Aceptar"}.
|
||||
@@ -277,6 +358,9 @@
|
||||
{"Online Users","Usuarios conectados"}.
|
||||
{"Online Users:","Usuarios conectados:"}.
|
||||
{"Online","Conectado"}.
|
||||
{"Only admins can see this","Solo los administradores pueden ver esto"}.
|
||||
{"Only collection node owners may associate leaf nodes with the collection","Solo los dueños e la colección de nodos pueden asociar nodos hoja a la colección"}.
|
||||
{"Only deliver notifications to available users","Solo enviar notificaciones a los usuarios disponibles"}.
|
||||
{"Only <enable/> or <disable/> tags are allowed","Solo se permiten las etiquetas <enable/> o <disable/>"}.
|
||||
{"Only <list/> element is allowed in this query","Solo se permite el elemento <list/> en esta petición"}.
|
||||
{"Only members may query archives of this room","Solo miembros pueden consultar el archivo de mensajes de la sala"}.
|
||||
@@ -285,7 +369,10 @@
|
||||
{"Only moderators can approve voice requests","Solo los moderadores pueden aprobar peticiones de voz"}.
|
||||
{"Only occupants are allowed to send messages to the conference","Solo los ocupantes pueden enviar mensajes a la sala"}.
|
||||
{"Only occupants are allowed to send queries to the conference","Solo los ocupantes pueden enviar solicitudes a la sala"}.
|
||||
{"Only publishers may publish","Solo los publicadores pueden publicar"}.
|
||||
{"Only service administrators are allowed to send service messages","Solo los administradores del servicio tienen permiso para enviar mensajes de servicio"}.
|
||||
{"Only those on a whitelist may associate leaf nodes with the collection","Solo quienes están en una lista blanca pueden asociar nodos hoja a la colección"}.
|
||||
{"Only those on a whitelist may subscribe and retrieve items","Solo quienes están en una lista blanca pueden suscribirse y recibir elementos"}.
|
||||
{"Organization Name","Nombre de la organización"}.
|
||||
{"Organization Unit","Unidad de la organización"}.
|
||||
{"Outgoing s2s Connections","Conexiones S2S salientes"}.
|
||||
@@ -293,46 +380,60 @@
|
||||
{"Owner privileges required","Se requieren privilegios de propietario de la sala"}.
|
||||
{"Packet relay is denied by service policy","Se ha denegado el reenvío del paquete por política del servicio"}.
|
||||
{"Packet","Paquete"}.
|
||||
{"Parse failed","El procesado falló"}.
|
||||
{"Participant","Participante"}.
|
||||
{"Password Verification","Verificación de la contraseña"}.
|
||||
{"Password Verification:","Verificación de la contraseña:"}.
|
||||
{"Password","Contraseña"}.
|
||||
{"Password:","Contraseña:"}.
|
||||
{"Path to Dir","Ruta al directorio"}.
|
||||
{"Path to File","Ruta al fichero"}.
|
||||
{"Payload type","Tipo de payload"}.
|
||||
{"Pending","Pendiente"}.
|
||||
{"Period: ","Periodo: "}.
|
||||
{"Persist items to storage","Persistir elementos al almacenar"}.
|
||||
{"Persistent","Permanente"}.
|
||||
{"Ping query is incorrect","La petición de Ping es incorrecta"}.
|
||||
{"Ping","Ping"}.
|
||||
{"Please note that these options will only backup the builtin Mnesia database. If you are using the ODBC module, you also need to backup your SQL database separately.","Ten en cuenta que estas opciones solo harán copia de seguridad de la base de datos Mnesia embebida. Si estás usando ODBC tendrás que hacer también copia de seguridad de tu base de datos SQL."}.
|
||||
{"Please, wait for a while before sending new voice request","Por favor, espera un poco antes de enviar otra petición de voz"}.
|
||||
{"Pong","Pong"}.
|
||||
{"Possessing 'ask' attribute is not allowed by RFC6121","Poseer el atributo 'ask' no está permitido por RFC6121"}.
|
||||
{"Present real Jabber IDs to","Los Jabber ID reales pueden verlos"}.
|
||||
{"Previous session not found","La sesión previa no ha sido encontrada"}.
|
||||
{"Previous session PID has been killed","El proceso de la sesión previa ha sido cerrado"}.
|
||||
{"Previous session PID has exited","El proceso de la sesión previa ha terminado"}.
|
||||
{"Previous session PID is dead","El proceso de la sesión previa está muerto"}.
|
||||
{"Previous session timed out","La sesión previa ha caducado"}.
|
||||
{"private, ","privado"}.
|
||||
{"private, ","privado, "}.
|
||||
{"Public","Público"}.
|
||||
{"Publish model","Modelo de publicación"}.
|
||||
{"Publish-Subscribe","Servicio de Publicar-Subscribir"}.
|
||||
{"PubSub subscriber request","Petición de subscriptor de PubSub"}.
|
||||
{"Purge all items when the relevant publisher goes offline","Borra todos los elementos cuando el publicador relevante se desconecta"}.
|
||||
{"Push record not found","No se encontró registro Push"}.
|
||||
{"Queries to the conference members are not allowed in this room","En esta sala no se permiten solicitudes a los miembros de la sala"}.
|
||||
{"Query to another users is forbidden","Enviar solicitudes a otros usuarios está prohibido"}.
|
||||
{"RAM and disc copy","Copia en RAM y disco"}.
|
||||
{"RAM copy","Copia en RAM"}.
|
||||
{"Really delete message of the day?","¿Está seguro de quere borrar el mensaje del dia?"}.
|
||||
{"Receive notification from all descendent nodes","Recibir notificaciones de todos los nodos descendientes"}.
|
||||
{"Receive notification from direct child nodes only","Recibir notificaciones solo de los nodos que son hijos directos"}.
|
||||
{"Receive notification of new items only","Recibir notificaciones solo de nuevos elementos"}.
|
||||
{"Receive notification of new nodes only","Recibir notificaciones solo de nuevos nodos"}.
|
||||
{"Recipient is not in the conference room","El receptor no está en la sala de conferencia"}.
|
||||
{"Register a Jabber account","Registrar una cuenta Jabber"}.
|
||||
{"Register an XMPP account","Registrar una cuenta XMPP"}.
|
||||
{"Registered Users","Usuarios registrados"}.
|
||||
{"Registered Users:","Usuarios registrados:"}.
|
||||
{"Register","Registrar"}.
|
||||
{"Remote copy","Copia remota"}.
|
||||
{"Remove a hat from a user","Quitarle un sombrero a un usuario"}.
|
||||
{"Remove All Offline Messages","Borrar todos los mensajes diferidos"}.
|
||||
{"Remove User","Eliminar usuario"}.
|
||||
{"Remove","Borrar"}.
|
||||
{"Replaced by new connection","Reemplazado por una nueva conexión"}.
|
||||
{"Request has timed out","La petición ha caducado"}.
|
||||
{"Request is ignored","La petición ha sido ignorada"}.
|
||||
{"Requested role","Rol solicitado"}.
|
||||
{"Resources","Recursos"}.
|
||||
{"Restart Service","Reiniciar el servicio"}.
|
||||
{"Restart","Reiniciar"}.
|
||||
@@ -341,31 +442,37 @@
|
||||
{"Restore binary backup immediately:","Restaurar inmediatamente copia de seguridad binaria:"}.
|
||||
{"Restore plain text backup immediately:","Restaurar copias de seguridad de texto plano inmediatamente:"}.
|
||||
{"Restore","Restaurar"}.
|
||||
{"Roles and Affiliations that May Retrieve Member List","Roles y Afiliaciones que pueden obtener la lista de miembros"}.
|
||||
{"Roles for which Presence is Broadcasted","Roles para los que sí se difunde su Presencia"}.
|
||||
{"Roles that May Send Private Messages","Roles que pueden enviar mensajes privados"}.
|
||||
{"Room Configuration","Configuración de la sala"}.
|
||||
{"Room creation is denied by service policy","Se te ha denegado crear la sala por política del servicio"}.
|
||||
{"Room description","Descripción de la sala"}.
|
||||
{"Room Occupants","Ocupantes de la sala"}.
|
||||
{"Room terminates","Cerrando la sala"}.
|
||||
{"Room title","Título de la sala"}.
|
||||
{"Roster module has failed","El módulo Roster ha fallado"}.
|
||||
{"Roster of ","Lista de contactos de "}.
|
||||
{"Roster groups allowed to subscribe","Grupos de contactos que pueden suscribirse"}.
|
||||
{"Roster of ~ts","Lista de contactos de ~ts"}.
|
||||
{"Roster size","Tamaño de la lista de contactos"}.
|
||||
{"Roster","Lista de contactos"}.
|
||||
{"Roster:","Lista de contactos:"}.
|
||||
{"RPC Call Error","Error en la llamada RPC"}.
|
||||
{"Running Nodes","Nodos funcionando"}.
|
||||
{"~s invites you to the room ~s","~s te invita a la sala ~s"}.
|
||||
{"Saturday","sábado"}.
|
||||
{"Scan failed","El escaneo ha fallado"}.
|
||||
{"Saturday","Sábado"}.
|
||||
{"Script check","Comprobación de script"}.
|
||||
{"Search from the date","Buscar desde la fecha"}.
|
||||
{"Search Results for ","Buscar resultados por "}.
|
||||
{"Search the text","Buscar el texto"}.
|
||||
{"Search until the date","Buscar hasta la fecha"}.
|
||||
{"Search users in ","Buscar usuarios en "}.
|
||||
{"Select All","Seleccionar todo"}.
|
||||
{"Send announcement to all online users on all hosts","Enviar anuncio a todos los usuarios conectados en todos los dominios"}.
|
||||
{"Send announcement to all online users","Enviar anuncio a todos los usuarios conectados"}.
|
||||
{"Send announcement to all users on all hosts","Enviar anuncio a todos los usuarios en todos los dominios"}.
|
||||
{"Send announcement to all users","Enviar anuncio a todos los usuarios"}.
|
||||
{"September","septiembre"}.
|
||||
{"September","Septiembre"}.
|
||||
{"Server:","Servidor:"}.
|
||||
{"Service list retrieval timed out","Ha caducado la obtención de la lista de servicio"}.
|
||||
{"Session state copying timed out","El copiado del estado de la sesión ha caducado"}.
|
||||
{"Set message of the day and send to online users","Poner mensaje del dia y enviar a todos los usuarios conectados"}.
|
||||
{"Set message of the day on all hosts and send to online users","Poner mensaje del día en todos los dominios y enviar a los usuarios conectados"}.
|
||||
@@ -374,14 +481,14 @@
|
||||
{"Show Ordinary Table","Mostrar Tabla Ordinaria"}.
|
||||
{"Shut Down Service","Detener el servicio"}.
|
||||
{"SOCKS5 Bytestreams","SOCKS5 Bytestreams"}.
|
||||
{"Some Jabber clients can store your password in the computer, but you should do this only in your personal computer for safety reasons.","Algunos clientes Jabber pueden recordar tu contraseña en la máquina. Usa esa opción solo si confías en que la máquina que usas es segura."}.
|
||||
{"~s's Offline Messages Queue","Cola de mensajes diferidos de ~s"}.
|
||||
{"Start Modules at ","Iniciar módulos en "}.
|
||||
{"Start Modules","Iniciar módulos"}.
|
||||
{"Some XMPP clients can store your password in the computer, but you should do this only in your personal computer for safety reasons.","Algunos clientes XMPP pueden guardar tu contraseña en la máquina, pero solo deberías hacer esto en tu propia máquina personal, por razones de seguridad."}.
|
||||
{"Specify the access model","Especifica el modelo de acceso"}.
|
||||
{"Specify the event message type","Especifica el tipo del mensaje de evento"}.
|
||||
{"Specify the publisher model","Especificar el modelo del publicante"}.
|
||||
{"Stanza ID","ID del paquete"}.
|
||||
{"Statically specify a replyto of the node owner(s)","Especificar de forma estática un 'replyto' de dueño(s) del nodo"}.
|
||||
{"Statistics of ~p","Estadísticas de ~p"}.
|
||||
{"Statistics","Estadísticas"}.
|
||||
{"Stop Modules at ","Detener módulos en "}.
|
||||
{"Stop Modules","Detener módulos"}.
|
||||
{"Stop","Detener"}.
|
||||
{"Stopped Nodes","Nodos detenidos"}.
|
||||
{"Storage Type","Tipo de almacenamiento"}.
|
||||
@@ -392,41 +499,74 @@
|
||||
{"Subject","Asunto"}.
|
||||
{"Submit","Enviar"}.
|
||||
{"Submitted","Enviado"}.
|
||||
{"Subscriber Address","Dirección del subscriptor"}.
|
||||
{"Subscribers may publish","Los suscriptores pueden publicar"}.
|
||||
{"Subscription requests must be approved and only subscribers may retrieve items","Las peticiones de suscripción deben ser aprobadas y solo los suscriptores pueden obtener elementos"}.
|
||||
{"Subscriptions are not allowed","Las subscripciones no están permitidas"}.
|
||||
{"Subscription","Subscripción"}.
|
||||
{"Sunday","domingo"}.
|
||||
{"Sunday","Domingo"}.
|
||||
{"Text associated with a picture","Texto asociado con una imagen"}.
|
||||
{"Text associated with a sound","Texto asociado con un sonido"}.
|
||||
{"Text associated with a video","Texto asociado con un vídeo"}.
|
||||
{"Text associated with speech","Texto asociado con una charla"}.
|
||||
{"That nickname is already in use by another occupant","Ese apodo ya está siendo usado por otro ocupante"}.
|
||||
{"That nickname is registered by another person","El apodo ya está registrado por otra persona"}.
|
||||
{"The account already exists","La cuenta ya existe"}.
|
||||
{"The account was not deleted","La cuenta no fue eliminada"}.
|
||||
{"The account was not unregistered","La cuenta no fue eliminada"}.
|
||||
{"The body text of the last received message","El contenido de texto del último mensaje recibido"}.
|
||||
{"The CAPTCHA is valid.","El CAPTCHA es válido."}.
|
||||
{"The CAPTCHA verification has failed","La verificación de CAPTCHA ha fallado"}.
|
||||
{"The captcha you entered is wrong","El CAPTCHA que has introducido es erróneo"}.
|
||||
{"The child nodes (leaf or collection) associated with a collection","Los nodos hijos (ya sean hojas o colecciones) asociados con una colección"}.
|
||||
{"The collections with which a node is affiliated","Las colecciones a las que un nodo está afiliado"}.
|
||||
{"The DateTime at which a leased subscription will end or has ended","La FechayHora en la que una suscripción prestada acabará o ha terminado"}.
|
||||
{"The datetime when the node was created","La fechayhora cuando el nodo fue creado"}.
|
||||
{"The default language of the node","El nombre por defecto del nodo"}.
|
||||
{"The feature requested is not supported by the conference","La característica solicitada no está soportada por la sala de conferencia"}.
|
||||
{"The JID of the node creator","El JID del creador del nodo"}.
|
||||
{"The JIDs of those to contact with questions","Los JIDs a quienes contactar con preguntas"}.
|
||||
{"The JIDs of those with an affiliation of owner","Los JIDs de quienes tienen una afiliación de dueños"}.
|
||||
{"The JIDs of those with an affiliation of publisher","Los JIDs de quienes tienen una afiliación de publicadores"}.
|
||||
{"The list of JIDs that may associate leaf nodes with a collection","La lista de JIDs que pueden asociar nodos hijo con una colección"}.
|
||||
{"The maximum number of child nodes that can be associated with a collection, or `max` for no specific limit other than a server imposed maximum","El número máximo de nodos hijo que pueden asociarse a una colección, o `max` para no especificar un límite, más que el máximo impuesto por el servidor"}.
|
||||
{"The minimum number of milliseconds between sending any two notification digests","El número mínimo de milisegundos entre dos envíos de resumen de notificaciones"}.
|
||||
{"The name of the node","El nombre del nodo"}.
|
||||
{"The node is a collection node","El nodo es una colección"}.
|
||||
{"The node is a leaf node (default)","El nodo es un nodo hoja (por defecto)"}.
|
||||
{"The NodeID of the relevant node","El NodoID del nodo relevante"}.
|
||||
{"The number of pending incoming presence subscription requests","El número de peticiones de suscripción a presencia que están pendientes de llegar"}.
|
||||
{"The number of subscribers to the node","El número de suscriptores al nodo"}.
|
||||
{"The number of unread or undelivered messages","El número de mensajes sin leer o sin entregar"}.
|
||||
{"The password contains unacceptable characters","La contraseña contiene caracteres inaceptables"}.
|
||||
{"The password is too weak","La contraseña es demasiado débil"}.
|
||||
{"the password is","la contraseña es"}.
|
||||
{"The password of your Jabber account was successfully changed.","La contraseña de tu cuenta Jabber se ha cambiado correctamente."}.
|
||||
{"The password of your XMPP account was successfully changed.","La contraseña de tu cuenta XMPP se ha cambiado correctamente."}.
|
||||
{"The password was not changed","La contraseña no fue cambiada"}.
|
||||
{"The passwords are different","Las contraseñas son diferentes"}.
|
||||
{"The presence states for which an entity wants to receive notifications","Los estados de presencia para los cuales una entidad quiere recibir notificaciones"}.
|
||||
{"The query is only allowed from local users","La solicitud está permitida solo para usuarios locales"}.
|
||||
{"The query must not contain <item/> elements","La solicitud no debe contener elementos <item/>"}.
|
||||
{"The room subject can be modified by participants","El asunto de la sala puede ser modificado por los participantes"}.
|
||||
{"The sender of the last received message","El emisor del último mensaje recibido"}.
|
||||
{"The stanza MUST contain only one <active/> element, one <default/> element, or one <list/> element","El paquete DEBE contener solo un elemento <active/>, un elemento <default/>, o un elemento <list/>"}.
|
||||
{"The username is not valid","El nombre de usuario no es válido"}.
|
||||
{"There was an error changing the password: ","Hubo un error cambiando la contraseña."}.
|
||||
{"There was an error creating the account: ","Hubo uno error al crear la cuenta:"}.
|
||||
{"There was an error deleting the account: ","Hubo un error borrando la cuenta."}.
|
||||
{"The subscription identifier associated with the subscription request","El identificador de suscripción asociado con la petición de suscripción"}.
|
||||
{"The type of node data, usually specified by the namespace of the payload (if any)","El tipo de datos del nodo, usualmente especificado por el namespace del payload (en caso de haberlo)"}.
|
||||
{"The URL of an XSL transformation which can be applied to payloads in order to generate an appropriate message body element.","La URL de una transformación XSL que puede aplicarse a payloads para generar un elemento de contenido del mensaje apropiado."}.
|
||||
{"The URL of an XSL transformation which can be applied to the payload format in order to generate a valid Data Forms result that the client could display using a generic Data Forms rendering engine","La URL de una transformación XSL que puede aplicarse al formato de payload para generar un resultado de Formulario de Datos válido, que el cliente pueda mostrar usando un mecanismo de dibujado genérico de Formulario de Datos"}.
|
||||
{"There was an error changing the password: ","Hubo uno error al cambiar la contaseña: "}.
|
||||
{"There was an error creating the account: ","Hubo uno error al crear la cuenta: "}.
|
||||
{"There was an error deleting the account: ","Hubo un error borrando la cuenta: "}.
|
||||
{"This is case insensitive: macbeth is the same that MacBeth and Macbeth.","No importa si usas mayúsculas: macbeth es lo mismo que MacBeth y Macbeth."}.
|
||||
{"This page allows to create a Jabber account in this Jabber server. Your JID (Jabber IDentifier) will be of the form: username@server. Please read carefully the instructions to fill correctly the fields.","Esta página te permite crear una cuenta Jabber este servidor Jabber. Tu JID (Jabber IDentificador) será de la forma: nombredeusuario@servidor. Por favor lee detenidamente las instrucciones para rellenar correctamente los campos."}.
|
||||
{"This page allows to unregister a Jabber account in this Jabber server.","Esta página te permite borrar tu cuenta Jabber en este servidor Jabber."}.
|
||||
{"This page allows to register an XMPP account in this XMPP server. Your JID (Jabber ID) will be of the form: username@server. Please read carefully the instructions to fill correctly the fields.","Esta página te permite crear una cuenta XMPP este servidor XMPP. Tu JID (Jabber ID) será de la forma: nombredeusuario@servidor. Por favor lee detenidamente las instrucciones para rellenar correctamente los campos."}.
|
||||
{"This page allows to unregister an XMPP account in this XMPP server.","Esta página te permite borrar tu cuenta XMPP en este servidor XMPP."}.
|
||||
{"This room is not anonymous","Sala no anónima"}.
|
||||
{"This service can not process the address: ~s","Este servicio no puede procesar la dirección: ~s"}.
|
||||
{"Thursday","jueves"}.
|
||||
{"Thursday","Jueves"}.
|
||||
{"Time delay","Retraso temporal"}.
|
||||
{"Timed out waiting for stream resumption","Ha pasado demasiado tiempo esperando que la conexión se restablezca"}.
|
||||
{"Time","Fecha"}.
|
||||
{"To register, visit ~s","Para registrarte, visita ~s"}.
|
||||
{"To ~s","A ~s"}.
|
||||
{"To ~ts","A ~ts"}.
|
||||
{"Token TTL","Token TTL"}.
|
||||
{"Too many active bytestreams","Demasiados bytestreams activos"}.
|
||||
{"Too many CAPTCHA requests","Demasiadas peticiones de CAPTCHA"}.
|
||||
@@ -435,22 +575,23 @@
|
||||
{"Too many <list/> elements","Demasiados elementos <list/>"}.
|
||||
{"Too many (~p) failed authentications from this IP address (~s). The address will be unblocked at ~s UTC","Demasiadas (~p) autenticaciones fallidas de esta dirección IP (~s). La dirección será desbloqueada en ~s UTC"}.
|
||||
{"Too many receiver fields were specified","Se han especificado demasiados campos de destinatario"}.
|
||||
{"Too many unacked stanzas","Demasiados mensajes sin haber reconocido recibirlos"}.
|
||||
{"Too many unacked stanzas","Demasiados mensajes sin haber reconocido recibirlos"}.
|
||||
{"Too many users in this conference","Demasiados usuarios en esta sala"}.
|
||||
{"To","Para"}.
|
||||
{"Total rooms","Salas totales"}.
|
||||
{"Traffic rate limit is exceeded","Se ha exedido el límite de tráfico"}.
|
||||
{"Traffic rate limit is exceeded","Se ha excedido el límite de tráfico"}.
|
||||
{"Transactions Aborted:","Transacciones abortadas:"}.
|
||||
{"Transactions Committed:","Transacciones finalizadas:"}.
|
||||
{"Transactions Logged:","Transacciones registradas:"}.
|
||||
{"Transactions Restarted:","Transacciones reiniciadas:"}.
|
||||
{"Tuesday","martes"}.
|
||||
{"~ts's Offline Messages Queue","Cola de mensajes diferidos de ~ts"}.
|
||||
{"Tuesday","Martes"}.
|
||||
{"Unable to generate a CAPTCHA","No se pudo generar un CAPTCHA"}.
|
||||
{"Unable to register route on existing local domain","No se ha podido registrar la ruta en este dominio local existente"}.
|
||||
{"Unauthorized","No autorizado"}.
|
||||
{"Unexpected action","Acción inesperada"}.
|
||||
{"Unexpected error condition: ~p","Condición de error inesperada: ~p"}.
|
||||
{"Unregister a Jabber account","Borrar una cuenta Jabber"}.
|
||||
{"Unregister an XMPP account","Borrar una cuenta XMPP"}.
|
||||
{"Unregister","Borrar"}.
|
||||
{"Unselect All","Deseleccionar todo"}.
|
||||
{"Unsupported <index/> element","Elemento <index/> no soportado"}.
|
||||
@@ -462,13 +603,15 @@
|
||||
{"Update script","Script de actualización"}.
|
||||
{"Update","Actualizar"}.
|
||||
{"Uptime:","Tiempo desde el inicio:"}.
|
||||
{"URL for Archived Discussion Logs","URL del registro de discusiones archivadas"}.
|
||||
{"User already exists","El usuario ya existe"}.
|
||||
{"User JID","Jabber ID del usuario"}.
|
||||
{"User (jid)","Usuario (jid)"}.
|
||||
{"User Management","Administración de usuarios"}.
|
||||
{"User removed","Usuario eliminado"}.
|
||||
{"User session not found","Sesión de usuario no encontrada"}.
|
||||
{"User session terminated","Sesión de usuario terminada"}.
|
||||
{"User ~s","Usuario ~s"}.
|
||||
{"User ~ts","Usuario ~ts"}.
|
||||
{"Username:","Nombre de usuario:"}.
|
||||
{"Users are not allowed to register accounts so quickly","Los usuarios no tienen permitido crear cuentas con tanta rapidez"}.
|
||||
{"Users Last Activity","Última actividad de los usuarios"}.
|
||||
@@ -480,19 +623,40 @@
|
||||
{"Value of '~s' should be datetime string","El valor de '~s' debería ser una fecha"}.
|
||||
{"Value of '~s' should be integer","El valor de '~s' debería ser un entero"}.
|
||||
{"Value 'set' of 'type' attribute is not allowed","El valor 'set' del atributo 'type' no está permitido"}.
|
||||
{"vCard User Search","Buscar vCard de usuario"}.
|
||||
{"Virtual Hosting","Dominios Virtuales"}.
|
||||
{"vCard User Search","Búsqueda de vCard de usuarios"}.
|
||||
{"View Queue","Ver Cola"}.
|
||||
{"View Roster","Ver Lista de contactos"}.
|
||||
{"Virtual Hosts","Dominios Virtuales"}.
|
||||
{"Visitors are not allowed to change their nicknames in this room","Los visitantes no tienen permitido cambiar sus apodos en esta sala"}.
|
||||
{"Visitors are not allowed to send messages to all occupants","Los visitantes no pueden enviar mensajes a todos los ocupantes"}.
|
||||
{"Visitor","Visitante"}.
|
||||
{"Voice request","Petición de voz"}.
|
||||
{"Voice requests are disabled in this conference","Las peticiones de voz están desactivadas en esta sala"}.
|
||||
{"Wednesday","miércoles"}.
|
||||
{"Wednesday","Miércoles"}.
|
||||
{"When a new subscription is processed and whenever a subscriber comes online","Cuando se procesa una nueva suscripción y cuando un suscriptor se conecta"}.
|
||||
{"When a new subscription is processed","Cuando se procesa una nueva suscripción"}.
|
||||
{"When to send the last published item","Cuando enviar el último elemento publicado"}.
|
||||
{"Whether an entity wants to receive an XMPP message body in addition to the payload format","Si una entidad quiere recibir un cuerpo de mensaje XMPP adicionalmente al formato de payload"}.
|
||||
{"Whether an entity wants to receive digests (aggregations) of notifications or all notifications individually","Si una entidad quiere recibir resúmenes (agregados) de notificaciones o todas las notificaciones individualmente"}.
|
||||
{"Whether an entity wants to receive or disable notifications","Si una entidad quiere recibir o desactivar las notificaciones"}.
|
||||
{"Whether owners or publisher should receive replies to items","Si dueños y publicadores deberían recibir respuestas de los elementos"}.
|
||||
{"Whether the node is a leaf (default) or a collection","Si el nodo es una hoja (por defecto) o una colección"}.
|
||||
{"Whether to allow subscriptions","Permitir subscripciones"}.
|
||||
{"Whether to make all subscriptions temporary, based on subscriber presence","Si hacer que todas las suscripciones sean temporales, basado en la presencia del suscriptor"}.
|
||||
{"Whether to notify owners about new subscribers and unsubscribes","Si notificar a los dueños sobre nuevas suscripciones y desuscripciones"}.
|
||||
{"Who may associate leaf nodes with a collection","Quien puede asociar nodos hoja con una colección"}.
|
||||
{"Wrong parameters in the web formulary","Parámetros incorrectos en el formulario web"}.
|
||||
{"Wrong xmlns","xmlns incorrecto"}.
|
||||
{"Wrong xmlns","XMLNS incorrecto"}.
|
||||
{"XMPP Account Registration","Registro de Cuenta XMPP"}.
|
||||
{"XMPP Domains","Dominios XMPP"}.
|
||||
{"XMPP Show Value of Away","Valor 'Show' de XMPP: Ausente"}.
|
||||
{"XMPP Show Value of Chat","Valor 'Show' de XMPP: Charlador"}.
|
||||
{"XMPP Show Value of DND (Do Not Disturb)","Valor 'Show' de XMPP: DND (No Molestar)"}.
|
||||
{"XMPP Show Value of XA (Extended Away)","Valor 'Show' de XMPP: XA (Ausente Extendido)"}.
|
||||
{"XMPP URI of Associated Publish-Subscribe Node","URI XMPP del Nodo Asociado de Publicar-Subscribir"}.
|
||||
{"You are being removed from the room because of a system shutdown","Estás siendo expulsado de la sala porque el sistema se va a detener"}.
|
||||
{"You are not joined to the channel","No has entrado en el canal"}.
|
||||
{"You can later change your password using a Jabber client.","Puedes cambiar tu contraseña después, usando un cliente Jabber."}.
|
||||
{"You can later change your password using an XMPP client.","Puedes cambiar tu contraseña después, usando un cliente XMPP."}.
|
||||
{"You have been banned from this room","Has sido bloqueado en esta sala"}.
|
||||
{"You have joined too many conferences","Has entrado en demasiadas salas de conferencia"}.
|
||||
{"You must fill in field \"Nickname\" in the form","Debes rellenar el campo \"Apodo\" en el formulario"}.
|
||||
@@ -501,7 +665,7 @@
|
||||
{"You need an x:data capable client to search","Necesitas un cliente con soporte de x:data para poder buscar"}.
|
||||
{"Your active privacy list has denied the routing of this stanza.","Tu lista de privacidad activa ha denegado el envío de este paquete."}.
|
||||
{"Your contact offline message queue is full. The message has been discarded.","Tu cola de mensajes diferidos de contactos está llena. El mensaje se ha descartado."}.
|
||||
{"Your Jabber account was successfully created.","Tu cuenta Jabber se ha creado correctamente."}.
|
||||
{"Your Jabber account was successfully deleted.","Tu cuenta Jabber se ha borrado correctamente."}.
|
||||
{"Your subscription request and/or messages to ~s have been blocked. To unblock your subscription request, visit ~s","Tu petición de suscripción y/o mensajes a ~s están siendo bloqueados. Para desbloquearlos, visita ~s"}.
|
||||
{"Your subscription request and/or messages to ~s have been blocked. To unblock your subscription request, visit ~s","Tu petición de suscripción y/o mensajes a ~s ha sido bloqueado. Para desbloquear tu petición de suscripción visita ~s"}.
|
||||
{"Your XMPP account was successfully registered.","Tu cuenta XMPP se ha registrado correctamente."}.
|
||||
{"Your XMPP account was successfully unregistered.","Tu cuenta XMPP se ha borrado correctamente."}.
|
||||
{"You're not allowed to create nodes","No tienes permitido crear nodos"}.
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user