From 93003f117af4df524444ad2f3c9eba6b5bb535df Mon Sep 17 00:00:00 2001 From: Benjamin Sonntag Date: Mon, 13 Jun 2011 14:14:01 +0000 Subject: [PATCH] tagging 1.0 (for good) --- .gitattributes | 485 +++ .gitignore | 12 + stable-1.0/.svnignore | 1 + stable-1.0/COPYING | 340 ++ stable-1.0/README.en | 46 + stable-1.0/README.fr | 53 + stable-1.0/aide/bin/build.sh | 20 + stable-1.0/aide/bin/frames.dsl | 144 + stable-1.0/aide/brouteur.sgml | 65 + stable-1.0/aide/domain.sgml | 69 + stable-1.0/aide/ftp.sgml | 37 + stable-1.0/aide/index.sgml | 42 + stable-1.0/aide/sommaire.sgml | 24 + stable-1.0/aide/stats.sgml | 37 + stable-1.0/aide/test.sgml | 16 + stable-1.0/bureau/admin/adm_add.php | 131 + stable-1.0/bureau/admin/adm_cancel.php | 35 + stable-1.0/bureau/admin/adm_deactivate.php | 143 + stable-1.0/bureau/admin/adm_defquotas.php | 112 + stable-1.0/bureau/admin/adm_del.php | 30 + stable-1.0/bureau/admin/adm_dnsweberror.php | 109 + stable-1.0/bureau/admin/adm_doadd.php | 76 + stable-1.0/bureau/admin/adm_dodefquotas.php | 98 + stable-1.0/bureau/admin/adm_dodel.php | 89 + stable-1.0/bureau/admin/adm_doedit.php | 63 + stable-1.0/bureau/admin/adm_domlock.php | 49 + stable-1.0/bureau/admin/adm_doms.php | 99 + stable-1.0/bureau/admin/adm_domstype.php | 90 + .../bureau/admin/adm_domstypedoedit.php | 17 + stable-1.0/bureau/admin/adm_domstypeedit.php | 130 + .../bureau/admin/adm_domstyperegenerate.php | 23 + stable-1.0/bureau/admin/adm_donosu.php | 52 + stable-1.0/bureau/admin/adm_dorenew.php | 49 + stable-1.0/bureau/admin/adm_dosu.php | 52 + stable-1.0/bureau/admin/adm_edit.php | 183 + stable-1.0/bureau/admin/adm_list.php | 287 ++ stable-1.0/bureau/admin/adm_login.php | 122 + stable-1.0/bureau/admin/adm_mxaccount.php | 116 + stable-1.0/bureau/admin/adm_panel.php | 90 + stable-1.0/bureau/admin/adm_passpolicy.php | 167 + stable-1.0/bureau/admin/adm_quotadoedit.php | 54 + stable-1.0/bureau/admin/adm_quotaedit.php | 92 + stable-1.0/bureau/admin/adm_slaveaccount.php | 114 + stable-1.0/bureau/admin/adm_slaveip.php | 112 + stable-1.0/bureau/admin/adm_tld.php | 88 + stable-1.0/bureau/admin/adm_tldadd.php | 74 + stable-1.0/bureau/admin/adm_tlddoadd.php | 46 + stable-1.0/bureau/admin/adm_tlddoedit.php | 46 + stable-1.0/bureau/admin/adm_tldedit.php | 75 + stable-1.0/bureau/admin/adm_variables.php | 76 + .../bureau/admin/aide/files/browser_set.png | Bin 0 -> 11744 bytes .../bureau/admin/aide/files/ftp_add.png | Bin 0 -> 12528 bytes .../bureau/admin/aide/files/ftp_list.png | Bin 0 -> 14214 bytes stable-1.0/bureau/admin/aide/files/readme | 1 + .../bureau/admin/aide/files/sta_add.png | Bin 0 -> 8066 bytes .../bureau/admin/aide/files/sta_view1.png | Bin 0 -> 47313 bytes .../bureau/admin/aide/files/sta_view2.png | Bin 0 -> 56970 bytes stable-1.0/bureau/admin/aide/help.php | 35 + stable-1.0/bureau/admin/aide/help.png | Bin 0 -> 717 bytes stable-1.0/bureau/admin/aide/html/book1.html | 228 + stable-1.0/bureau/admin/aide/html/c126.html | 186 + stable-1.0/bureau/admin/aide/html/c18.html | 171 + stable-1.0/bureau/admin/aide/html/c26.html | 234 + stable-1.0/bureau/admin/aide/html/c72.html | 177 + stable-1.0/bureau/admin/aide/html/c84.html | 206 + stable-1.0/bureau/admin/aide/html/docbook.css | 42 + .../admin/aide/html/files/browser_set.png | Bin 0 -> 11744 bytes .../bureau/admin/aide/html/files/ftp_add.png | Bin 0 -> 12528 bytes .../bureau/admin/aide/html/files/ftp_list.png | Bin 0 -> 14214 bytes .../bureau/admin/aide/html/files/readme | 1 + .../bureau/admin/aide/html/files/sta_add.png | Bin 0 -> 8066 bytes .../admin/aide/html/files/sta_view1.png | Bin 0 -> 47313 bytes .../admin/aide/html/files/sta_view2.png | Bin 0 -> 56970 bytes .../bureau/admin/aide/html/frameset.html | 14 + stable-1.0/bureau/admin/aide/html/plus.gif | Bin 0 -> 91 bytes stable-1.0/bureau/admin/aide/html/tiret.gif | Bin 0 -> 90 bytes stable-1.0/bureau/admin/aide/html/toc.htm | 144 + stable-1.0/bureau/admin/aide/html/x105.html | 190 + stable-1.0/bureau/admin/aide/html/x23.html | 149 + stable-1.0/bureau/admin/aide/html/x53.html | 206 + .../bureau/admin/aide/inline/docbook.css | 42 + .../bureau/admin/aide/inline/frameset.html | 14 + stable-1.0/bureau/admin/aide/inline/plus.gif | Bin 0 -> 91 bytes stable-1.0/bureau/admin/aide/inline/tiret.gif | Bin 0 -> 90 bytes stable-1.0/bureau/admin/alternc.jpg | Bin 0 -> 2399 bytes stable-1.0/bureau/admin/alternc.png | Bin 0 -> 4687 bytes stable-1.0/bureau/admin/alternc3.png | Bin 0 -> 3125 bytes stable-1.0/bureau/admin/bro_editor.php | 82 + stable-1.0/bureau/admin/bro_main.php | 590 +++ stable-1.0/bureau/admin/bro_pref.php | 140 + stable-1.0/bureau/admin/bro_tgzdown.php | 47 + stable-1.0/bureau/admin/bro_view.php | 35 + stable-1.0/bureau/admin/browseforfolder.php | 168 + stable-1.0/bureau/admin/direct.php | 54 + stable-1.0/bureau/admin/dom_add.php | 107 + stable-1.0/bureau/admin/dom_doadd.php | 69 + stable-1.0/bureau/admin/dom_dodel.php | 88 + stable-1.0/bureau/admin/dom_edit.inc.php | 145 + stable-1.0/bureau/admin/dom_edit.php | 229 + stable-1.0/bureau/admin/dom_editdns.php | 63 + stable-1.0/bureau/admin/dom_subdel.php | 83 + stable-1.0/bureau/admin/dom_subdodel.php | 73 + stable-1.0/bureau/admin/dom_subdoedit.php | 79 + stable-1.0/bureau/admin/dom_subedit.php | 77 + stable-1.0/bureau/admin/dom_substatus.php | 33 + stable-1.0/bureau/admin/domlist.php | 47 + stable-1.0/bureau/admin/foot.php | 7 + stable-1.0/bureau/admin/ftp_add.php | 77 + stable-1.0/bureau/admin/ftp_del.php | 48 + stable-1.0/bureau/admin/ftp_doadd.php | 48 + stable-1.0/bureau/admin/ftp_doedit.php | 62 + stable-1.0/bureau/admin/ftp_edit.php | 83 + stable-1.0/bureau/admin/ftp_list.php | 97 + stable-1.0/bureau/admin/head.php | 67 + stable-1.0/bureau/admin/hippo_bleue.gif | Bin 0 -> 43 bytes stable-1.0/bureau/admin/hoster.png | Bin 0 -> 6047 bytes stable-1.0/bureau/admin/hta_add.php | 66 + stable-1.0/bureau/admin/hta_adduser.php | 72 + stable-1.0/bureau/admin/hta_del.php | 48 + stable-1.0/bureau/admin/hta_doadd.php | 47 + stable-1.0/bureau/admin/hta_doadduser.php | 50 + stable-1.0/bureau/admin/hta_dodeluser.php | 46 + stable-1.0/bureau/admin/hta_doedituser.php | 63 + stable-1.0/bureau/admin/hta_edit.php | 122 + stable-1.0/bureau/admin/hta_edituser.php | 63 + stable-1.0/bureau/admin/hta_list.php | 94 + stable-1.0/bureau/admin/icon/browse.png | Bin 0 -> 123 bytes stable-1.0/bureau/admin/icon/delfile.png | Bin 0 -> 214 bytes stable-1.0/bureau/admin/icon/doc.png | Bin 0 -> 260 bytes stable-1.0/bureau/admin/icon/encrypted.png | Bin 0 -> 590 bytes stable-1.0/bureau/admin/icon/exe.png | Bin 0 -> 218 bytes stable-1.0/bureau/admin/icon/file.png | Bin 0 -> 198 bytes stable-1.0/bureau/admin/icon/folder.png | Bin 0 -> 726 bytes stable-1.0/bureau/admin/icon/htm.png | Bin 0 -> 745 bytes stable-1.0/bureau/admin/icon/jpg.png | Bin 0 -> 718 bytes stable-1.0/bureau/admin/icon/m3u.png | Bin 0 -> 334 bytes stable-1.0/bureau/admin/icon/move.png | Bin 0 -> 250 bytes stable-1.0/bureau/admin/icon/newfile.png | Bin 0 -> 141 bytes stable-1.0/bureau/admin/icon/newfolder.png | Bin 0 -> 208 bytes stable-1.0/bureau/admin/icon/newhtml.png | Bin 0 -> 153 bytes stable-1.0/bureau/admin/icon/openfold.png | Bin 0 -> 206 bytes stable-1.0/bureau/admin/icon/pdf.png | Bin 0 -> 346 bytes stable-1.0/bureau/admin/icon/php.png | Bin 0 -> 255 bytes stable-1.0/bureau/admin/icon/ppt.png | Bin 0 -> 260 bytes stable-1.0/bureau/admin/icon/properties.png | Bin 0 -> 192 bytes stable-1.0/bureau/admin/icon/protect.png | Bin 0 -> 623 bytes stable-1.0/bureau/admin/icon/ra.png | Bin 0 -> 253 bytes stable-1.0/bureau/admin/icon/selall.png | Bin 0 -> 165 bytes stable-1.0/bureau/admin/icon/sort0.png | Bin 0 -> 128 bytes stable-1.0/bureau/admin/icon/sort1.png | Bin 0 -> 130 bytes stable-1.0/bureau/admin/icon/swf.png | Bin 0 -> 348 bytes stable-1.0/bureau/admin/icon/sxc.png | 30 + stable-1.0/bureau/admin/icon/sxd.png | 33 + stable-1.0/bureau/admin/icon/sxi.png | 30 + stable-1.0/bureau/admin/icon/sxw.png | 28 + stable-1.0/bureau/admin/icon/txt.png | Bin 0 -> 724 bytes stable-1.0/bureau/admin/icon/wav.png | Bin 0 -> 687 bytes stable-1.0/bureau/admin/icon/winresize.gif | Bin 0 -> 896 bytes stable-1.0/bureau/admin/icon/xls.png | Bin 0 -> 257 bytes stable-1.0/bureau/admin/icon/zip.png | Bin 0 -> 723 bytes stable-1.0/bureau/admin/images/admin.png | Bin 0 -> 734 bytes stable-1.0/bureau/admin/images/bgborder.gif | Bin 0 -> 54 bytes stable-1.0/bureau/admin/images/blank.gif | Bin 0 -> 49 bytes stable-1.0/bureau/admin/images/config.png | Bin 0 -> 646 bytes stable-1.0/bureau/admin/images/delete.png | Bin 0 -> 825 bytes stable-1.0/bureau/admin/images/dom.png | Bin 0 -> 831 bytes stable-1.0/bureau/admin/images/edit.png | Bin 0 -> 741 bytes stable-1.0/bureau/admin/images/exit.png | Bin 0 -> 776 bytes stable-1.0/bureau/admin/images/folder.png | Bin 0 -> 739 bytes stable-1.0/bureau/admin/images/folderhta.png | Bin 0 -> 753 bytes stable-1.0/bureau/admin/images/ftp.png | Bin 0 -> 753 bytes stable-1.0/bureau/admin/images/help.png | Bin 0 -> 801 bytes stable-1.0/bureau/admin/images/home.png | Bin 0 -> 715 bytes stable-1.0/bureau/admin/images/lang.png | Bin 0 -> 852 bytes stable-1.0/bureau/admin/images/mail.png | Bin 0 -> 743 bytes stable-1.0/bureau/admin/images/minus.png | Bin 0 -> 98 bytes stable-1.0/bureau/admin/images/mysql.png | Bin 0 -> 564 bytes stable-1.0/bureau/admin/images/new.png | Bin 0 -> 390 bytes stable-1.0/bureau/admin/images/orig/admin.png | Bin 0 -> 703 bytes .../bureau/admin/images/orig/bgborder.gif | Bin 0 -> 54 bytes stable-1.0/bureau/admin/images/orig/blank.gif | Bin 0 -> 49 bytes .../bureau/admin/images/orig/config.png | Bin 0 -> 753 bytes .../bureau/admin/images/orig/delete.png | Bin 0 -> 892 bytes stable-1.0/bureau/admin/images/orig/dom.png | Bin 0 -> 925 bytes stable-1.0/bureau/admin/images/orig/edit.png | Bin 0 -> 946 bytes stable-1.0/bureau/admin/images/orig/exit.png | Bin 0 -> 882 bytes .../bureau/admin/images/orig/folder.png | Bin 0 -> 1080 bytes .../bureau/admin/images/orig/folderhta.png | Bin 0 -> 1080 bytes stable-1.0/bureau/admin/images/orig/ftp.png | Bin 0 -> 837 bytes stable-1.0/bureau/admin/images/orig/help.png | Bin 0 -> 997 bytes stable-1.0/bureau/admin/images/orig/home.png | Bin 0 -> 713 bytes stable-1.0/bureau/admin/images/orig/mail.png | Bin 0 -> 1001 bytes .../bureau/admin/images/orig/mailman.png | Bin 0 -> 902 bytes stable-1.0/bureau/admin/images/orig/minus.png | Bin 0 -> 98 bytes stable-1.0/bureau/admin/images/orig/mysql.png | Bin 0 -> 683 bytes stable-1.0/bureau/admin/images/orig/new.png | Bin 0 -> 483 bytes .../bureau/admin/images/orig/password.png | Bin 0 -> 693 bytes stable-1.0/bureau/admin/images/orig/plus.png | Bin 0 -> 185 bytes stable-1.0/bureau/admin/images/orig/quota.png | Bin 0 -> 728 bytes stable-1.0/bureau/admin/images/orig/stat.png | Bin 0 -> 624 bytes stable-1.0/bureau/admin/images/password.png | Bin 0 -> 612 bytes stable-1.0/bureau/admin/images/plus.png | Bin 0 -> 185 bytes stable-1.0/bureau/admin/images/quota.png | Bin 0 -> 556 bytes stable-1.0/bureau/admin/images/stat.png | Bin 0 -> 550 bytes stable-1.0/bureau/admin/index.php | 135 + stable-1.0/bureau/admin/js/alternc.js | 156 + stable-1.0/bureau/admin/js/jquery.min.js | 16 + .../images/ui-bg_flat_0_aaaaaa_40x100.png | Bin 0 -> 180 bytes .../images/ui-bg_flat_75_ffffff_40x100.png | Bin 0 -> 178 bytes .../images/ui-bg_glass_55_fbf9ee_1x400.png | Bin 0 -> 120 bytes .../images/ui-bg_glass_65_ffffff_1x400.png | Bin 0 -> 105 bytes .../images/ui-bg_glass_75_dadada_1x400.png | Bin 0 -> 111 bytes .../images/ui-bg_glass_75_e6e6e6_1x400.png | Bin 0 -> 110 bytes .../images/ui-bg_glass_95_fef1ec_1x400.png | Bin 0 -> 119 bytes .../ui-bg_highlight-soft_75_cccccc_1x100.png | Bin 0 -> 101 bytes .../images/ui-icons_222222_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_2e83ff_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_454545_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_888888_256x240.png | Bin 0 -> 4369 bytes .../images/ui-icons_cd0a0a_256x240.png | Bin 0 -> 4369 bytes .../smoothness/jquery-ui-1.8.10.custom.css | 573 +++ .../bureau/admin/js/jquery_ui/index.html | 395 ++ .../admin/js/jquery_ui/js/jquery-1.4.4.min.js | 167 + .../js/jquery-ui-1.8.10.custom.min.js | 782 ++++ .../jquery_ui/js/jquery.ui.datepicker-de.js | 23 + .../jquery_ui/js/jquery.ui.datepicker-es.js | 23 + .../jquery_ui/js/jquery.ui.datepicker-fr.js | 23 + stable-1.0/bureau/admin/js/prototype.js | 1781 ++++++++ stable-1.0/bureau/admin/login.php | 44 + stable-1.0/bureau/admin/logo.png | Bin 0 -> 9529 bytes stable-1.0/bureau/admin/logo2.png | Bin 0 -> 5310 bytes stable-1.0/bureau/admin/mail_add.php | 100 + stable-1.0/bureau/admin/mail_del.php | 92 + stable-1.0/bureau/admin/mail_doadd.php | 65 + stable-1.0/bureau/admin/mail_dodel.php | 51 + stable-1.0/bureau/admin/mail_doedit.php | 68 + stable-1.0/bureau/admin/mail_edit.php | 116 + stable-1.0/bureau/admin/mail_list.php | 143 + stable-1.0/bureau/admin/main.php | 102 + stable-1.0/bureau/admin/mem_admin.php | 52 + stable-1.0/bureau/admin/mem_chgmail.php | 54 + stable-1.0/bureau/admin/mem_cm.php | 52 + stable-1.0/bureau/admin/mem_cm2.php | 52 + stable-1.0/bureau/admin/mem_logout.php | 51 + stable-1.0/bureau/admin/mem_param.php | 115 + stable-1.0/bureau/admin/mem_passwd.php | 49 + stable-1.0/bureau/admin/menu.php | 52 + stable-1.0/bureau/admin/menu_adm.php | 50 + stable-1.0/bureau/admin/menu_aide.php | 33 + stable-1.0/bureau/admin/menu_brouteur.php | 35 + stable-1.0/bureau/admin/menu_dom.php | 58 + stable-1.0/bureau/admin/menu_ftp.php | 50 + stable-1.0/bureau/admin/menu_lang.php | 17 + stable-1.0/bureau/admin/menu_mail.php | 57 + stable-1.0/bureau/admin/menu_mem.php | 36 + stable-1.0/bureau/admin/menu_quota.php | 79 + stable-1.0/bureau/admin/menu_sql.php | 44 + stable-1.0/bureau/admin/menu_sta2.php | 39 + stable-1.0/bureau/admin/menu_web.php | 35 + stable-1.0/bureau/admin/mxlist.php | 47 + stable-1.0/bureau/admin/phpinfo.php | 5 + stable-1.0/bureau/admin/powered2.jpg | Bin 0 -> 2076 bytes stable-1.0/bureau/admin/quota_show.php | 68 + stable-1.0/bureau/admin/quotas_oneuser.php | 144 + stable-1.0/bureau/admin/quotas_users.php | 403 ++ stable-1.0/bureau/admin/sql_add.php | 63 + stable-1.0/bureau/admin/sql_addmain.php | 39 + stable-1.0/bureau/admin/sql_admin.php | 53 + stable-1.0/bureau/admin/sql_bck.php | 120 + stable-1.0/bureau/admin/sql_del.php | 84 + stable-1.0/bureau/admin/sql_doadd.php | 47 + stable-1.0/bureau/admin/sql_dobck.php | 51 + stable-1.0/bureau/admin/sql_dorestore.php | 61 + stable-1.0/bureau/admin/sql_getparam.php | 70 + stable-1.0/bureau/admin/sql_list.php | 106 + stable-1.0/bureau/admin/sql_pass.php | 42 + stable-1.0/bureau/admin/sql_passchg.php | 65 + stable-1.0/bureau/admin/sql_restore.php | 76 + stable-1.0/bureau/admin/sql_users_add.php | 91 + stable-1.0/bureau/admin/sql_users_del.php | 73 + stable-1.0/bureau/admin/sql_users_doadd.php | 54 + .../bureau/admin/sql_users_dopassword.php | 42 + .../bureau/admin/sql_users_dorights.php | 47 + stable-1.0/bureau/admin/sql_users_list.php | 95 + .../bureau/admin/sql_users_password.php | 71 + stable-1.0/bureau/admin/sql_users_rights.php | 113 + stable-1.0/bureau/admin/sta2_add_raw.php | 66 + stable-1.0/bureau/admin/sta2_del_raw.php | 49 + stable-1.0/bureau/admin/sta2_doadd_raw.php | 48 + stable-1.0/bureau/admin/sta2_doedit_raw.php | 46 + stable-1.0/bureau/admin/sta2_edit_raw.php | 70 + stable-1.0/bureau/admin/sta2_list.php | 85 + stable-1.0/bureau/admin/stats_members.php | 93 + stable-1.0/bureau/admin/styles/style.css | 441 ++ stable-1.0/bureau/admin/template.php | 39 + stable-1.0/bureau/admin/trash_dateselect.php | 107 + stable-1.0/bureau/admin/web_list.php | 4 + stable-1.0/bureau/admin/webmail/.htaccess | 0 stable-1.0/bureau/admin/webmail/index.php | 3 + stable-1.0/bureau/class/config.php | 170 + stable-1.0/bureau/class/config_nochk.php | 34 + stable-1.0/bureau/class/config_real.php | 160 + stable-1.0/bureau/class/db_mysql.php | 463 ++ stable-1.0/bureau/class/export_account.php | 23 + stable-1.0/bureau/class/functions.php | 506 +++ stable-1.0/bureau/class/hooks.php | 96 + stable-1.0/bureau/class/lang_env.php | 75 + stable-1.0/bureau/class/local.php | 46 + stable-1.0/bureau/class/m_admin.php | 1268 ++++++ stable-1.0/bureau/class/m_bro.php | 947 +++++ stable-1.0/bureau/class/m_dom.php | 1304 ++++++ stable-1.0/bureau/class/m_err.php | 154 + stable-1.0/bureau/class/m_ftp.php | 382 ++ stable-1.0/bureau/class/m_hta.php | 391 ++ stable-1.0/bureau/class/m_mail.php | 803 ++++ stable-1.0/bureau/class/m_mem.php | 531 +++ stable-1.0/bureau/class/m_mysql.php | 735 ++++ stable-1.0/bureau/class/m_quota.php | 382 ++ stable-1.0/bureau/class/m_sta2.php | 311 ++ stable-1.0/bureau/class/m_trash.php | 97 + stable-1.0/bureau/class/mime.php | 178 + stable-1.0/bureau/class/reset_stats_conf.php | 19 + stable-1.0/bureau/class/variables.php | 130 + stable-1.0/bureau/index.php | 3 + stable-1.0/bureau/locales/Makefile | 12 + stable-1.0/bureau/locales/README | 46 + .../locales/de_DE/LC_MESSAGES/messages.po | 2792 ++++++++++++ .../locales/en_US/LC_MESSAGES/manual.po | 1672 ++++++++ .../locales/en_US/LC_MESSAGES/messages.po | 2799 ++++++++++++ .../locales/es_ES/LC_MESSAGES/manual.po | 839 ++++ .../locales/es_ES/LC_MESSAGES/messages.po | 3379 +++++++++++++++ .../locales/fr_FR/LC_MESSAGES/manual.po | 857 ++++ .../locales/fr_FR/LC_MESSAGES/messages.po | 3357 +++++++++++++++ stable-1.0/bureau/locales/manual.pot | 710 ++++ stable-1.0/bureau/locales/messages.pot | 2730 ++++++++++++ .../locales/pt_BR/LC_MESSAGES/messages.po | 3756 +++++++++++++++++ stable-1.0/debian/.svnignore | 10 + stable-1.0/debian/NEWS | 43 + stable-1.0/debian/README.Debian | 9 + stable-1.0/debian/alternc-slave.config | 169 + stable-1.0/debian/alternc-slave.dirs | 17 + stable-1.0/debian/alternc-slave.install | 9 + stable-1.0/debian/alternc-slave.links | 1 + stable-1.0/debian/alternc-slave.lintian | 28 + stable-1.0/debian/alternc-slave.logrotate | 32 + stable-1.0/debian/alternc-slave.postinst | 226 + stable-1.0/debian/alternc-slave.postrm | 47 + stable-1.0/debian/alternc-slave.prerm | 27 + stable-1.0/debian/alternc-slave.templates | 178 + stable-1.0/debian/alternc.config | 177 + stable-1.0/debian/alternc.cron.d | 19 + stable-1.0/debian/alternc.dirs | 107 + stable-1.0/debian/alternc.links | 3 + stable-1.0/debian/alternc.lintian | 45 + stable-1.0/debian/alternc.logrotate | 32 + stable-1.0/debian/alternc.postinst | 254 ++ stable-1.0/debian/alternc.postrm | 74 + stable-1.0/debian/alternc.preinst | 79 + stable-1.0/debian/alternc.prerm | 43 + stable-1.0/debian/changelog | 380 ++ stable-1.0/debian/compat | 1 + stable-1.0/debian/control | 73 + stable-1.0/debian/copyright | 25 + stable-1.0/debian/docs | 2 + stable-1.0/debian/po/POTFILES.in | 1 + stable-1.0/debian/po/fr.po | 542 +++ stable-1.0/debian/po/templates.pot | 439 ++ stable-1.0/debian/rules | 149 + stable-1.0/debian/templates | 192 + stable-1.0/etc/alternc/alternc.ini | 2 + stable-1.0/etc/alternc/apache2-ssl.conf | 10 + stable-1.0/etc/alternc/apache2.conf | 71 + .../functions_hosting/hosting_massvhost.sh | 56 + stable-1.0/etc/alternc/menulist.txt | 12 + stable-1.0/etc/alternc/phpmyadmin.inc.php | 35 + stable-1.0/etc/alternc/postfix-slave.cf | 36 + stable-1.0/etc/alternc/postfix.cf | 34 + .../etc/alternc/templates/alternc/bureau.conf | 9 + .../etc/alternc/templates/apache2/panel.conf | 12 + .../etc/alternc/templates/apache2/url.conf | 11 + .../etc/alternc/templates/apache2/vhost.conf | 13 + .../alternc/templates/apache2/webmail.conf | 14 + .../etc/alternc/templates/bind/automatic.conf | 1 + .../alternc/templates/bind/named.conf.options | 30 + .../etc/alternc/templates/bind/slaveip.conf | 8 + .../templates/bind/templates/mx.template | 1 + .../templates/bind/templates/named.template | 1 + .../templates/bind/templates/slave.template | 1 + .../templates/bind/templates/zone.template | 18 + .../alternc/templates/courier/authdaemonrc | 17 + .../etc/alternc/templates/courier/authmysqlrc | 206 + .../etc/alternc/templates/default/saslauthd | 8 + .../templates/dovecot/dovecot-sql.conf | 131 + .../alternc/templates/dovecot/dovecot.conf | 1285 ++++++ .../etc/alternc/templates/postfix/ca.der | 21 + .../etc/alternc/templates/postfix/myalias.cf | 12 + .../etc/alternc/templates/postfix/mydomain.cf | 12 + .../etc/alternc/templates/postfix/mygid.cf | 11 + .../etc/alternc/templates/postfix/myrelay.cf | 13 + .../alternc/templates/postfix/myvirtual.cf | 12 + .../alternc/templates/postfix/sasl/smtpd.conf | 2 + .../alternc/templates/proftpd/modules.conf | 31 + .../alternc/templates/proftpd/proftpd.conf | 124 + .../etc/alternc/templates/proftpd/welcome.msg | 7 + .../templates/squirrelmail/apache.conf | 15 + stable-1.0/install/alternc.install | 369 ++ stable-1.0/install/body_checks | 9 + stable-1.0/install/domaines.template | 1 + stable-1.0/install/dopo.sh | 46 + stable-1.0/install/header_checks | 4 + stable-1.0/install/mysql.sh | 150 + stable-1.0/install/mysql.sql | 510 +++ stable-1.0/install/newone.php | 63 + stable-1.0/install/reset_root.php | 45 + stable-1.0/install/upgrade_check.sh | 60 + stable-1.0/install/upgrades/0.9.1.sql | 1 + stable-1.0/install/upgrades/0.9.10.sql | 48 + .../install/upgrades/0.9.1_migrationldap.php | 77 + stable-1.0/install/upgrades/0.9.2.php | 183 + stable-1.0/install/upgrades/0.9.2.sql | 44 + stable-1.0/install/upgrades/0.9.3.1.sql | 9 + stable-1.0/install/upgrades/0.9.3.sql | 53 + stable-1.0/install/upgrades/0.9.4.sql | 14 + stable-1.0/install/upgrades/0.9.5.sh | 8 + stable-1.0/install/upgrades/0.9.5.sql | 47 + stable-1.0/install/upgrades/0.9.6.sql | 9 + stable-1.0/install/upgrades/0.9.7.sql | 1 + stable-1.0/install/upgrades/0.9.9.sql | 1 + stable-1.0/install/upgrades/1.0.sql | 111 + stable-1.0/install/upgrades/README | 53 + stable-1.0/man/alternc-admintools.8 | 33 + stable-1.0/man/alternc-admintools.fr.8 | 34 + stable-1.0/man/alternc.install.8 | 24 + stable-1.0/man/alternc.install.fr.8 | 21 + stable-1.0/man/get_account_by_domain.8 | 30 + stable-1.0/man/get_domains_by_account.8 | 30 + stable-1.0/man/top_ftp_users.8 | 50 + stable-1.0/man/top_ftp_users.fr.8 | 47 + stable-1.0/man/top_http_users.8 | 61 + stable-1.0/man/top_http_users.fr.8 | 58 + stable-1.0/man/top_mysql_users.8 | 48 + stable-1.0/man/top_mysql_users.fr.8 | 45 + stable-1.0/nightlybuild/HEADER.html | 24 + stable-1.0/nightlybuild/README.html | 0 stable-1.0/nightlybuild/READMEFIRST | 10 + stable-1.0/nightlybuild/build.sh | 78 + stable-1.0/nightlybuild/nightly.key | 30 + stable-1.0/po/alternc-admintools.pot | 159 + stable-1.0/po/fr/LC_MESSAGES/.svnignore | 1 + .../po/fr/LC_MESSAGES/alternc-admintools.po | 159 + stable-1.0/quota_delete | 46 + stable-1.0/quota_init | 62 + stable-1.0/src/Makefile | 38 + stable-1.0/src/alternc-check | 212 + stable-1.0/src/alternc-dboptimize | 4 + stable-1.0/src/alternc-passwd | 55 + stable-1.0/src/alternc_reload | 74 + stable-1.0/src/du.pl | 39 + stable-1.0/src/fixperms.sh | 67 + stable-1.0/src/functions.sh | 49 + stable-1.0/src/functions_dns.sh | 138 + stable-1.0/src/functions_hosting.sh | 184 + stable-1.0/src/mail_add | 44 + stable-1.0/src/mail_del | 27 + stable-1.0/src/mem_add | 39 + stable-1.0/src/mem_del | 28 + stable-1.0/src/quota_delete | 46 + stable-1.0/src/quota_edit | 33 + stable-1.0/src/quota_edit.sh | 4 + stable-1.0/src/quota_get | 28 + stable-1.0/src/quota_get.sh | 46 + stable-1.0/src/quota_init | 62 + stable-1.0/src/rawstat.daily | 220 + stable-1.0/src/sendmail | 50 + stable-1.0/src/slave_dns | 57 + stable-1.0/src/spoolsize.php | 57 + stable-1.0/src/sqlbackup.sh | 393 ++ stable-1.0/src/update_domains.sh | 146 + stable-1.0/tests/mechdump.pm | 29 + stable-1.0/tests/test_demo.pl | 105 + stable-1.0/tests/whois_test.php | 26 + stable-1.0/tools/alternc_get_path | 10 + stable-1.0/tools/get_account_by_domain | 85 + stable-1.0/tools/get_domains_by_account | 84 + stable-1.0/tools/top_ftp_users | 201 + stable-1.0/tools/top_http_users | 245 ++ stable-1.0/tools/top_mysql_users | 191 + 487 files changed, 63110 insertions(+) create mode 100644 stable-1.0/.svnignore create mode 100644 stable-1.0/COPYING create mode 100644 stable-1.0/README.en create mode 100644 stable-1.0/README.fr create mode 100755 stable-1.0/aide/bin/build.sh create mode 100644 stable-1.0/aide/bin/frames.dsl create mode 100644 stable-1.0/aide/brouteur.sgml create mode 100644 stable-1.0/aide/domain.sgml create mode 100644 stable-1.0/aide/ftp.sgml create mode 100644 stable-1.0/aide/index.sgml create mode 100644 stable-1.0/aide/sommaire.sgml create mode 100644 stable-1.0/aide/stats.sgml create mode 100644 stable-1.0/aide/test.sgml create mode 100644 stable-1.0/bureau/admin/adm_add.php create mode 100644 stable-1.0/bureau/admin/adm_cancel.php create mode 100644 stable-1.0/bureau/admin/adm_deactivate.php create mode 100644 stable-1.0/bureau/admin/adm_defquotas.php create mode 100644 stable-1.0/bureau/admin/adm_del.php create mode 100644 stable-1.0/bureau/admin/adm_dnsweberror.php create mode 100644 stable-1.0/bureau/admin/adm_doadd.php create mode 100644 stable-1.0/bureau/admin/adm_dodefquotas.php create mode 100644 stable-1.0/bureau/admin/adm_dodel.php create mode 100644 stable-1.0/bureau/admin/adm_doedit.php create mode 100644 stable-1.0/bureau/admin/adm_domlock.php create mode 100644 stable-1.0/bureau/admin/adm_doms.php create mode 100644 stable-1.0/bureau/admin/adm_domstype.php create mode 100644 stable-1.0/bureau/admin/adm_domstypedoedit.php create mode 100644 stable-1.0/bureau/admin/adm_domstypeedit.php create mode 100644 stable-1.0/bureau/admin/adm_domstyperegenerate.php create mode 100644 stable-1.0/bureau/admin/adm_donosu.php create mode 100644 stable-1.0/bureau/admin/adm_dorenew.php create mode 100644 stable-1.0/bureau/admin/adm_dosu.php create mode 100644 stable-1.0/bureau/admin/adm_edit.php create mode 100644 stable-1.0/bureau/admin/adm_list.php create mode 100644 stable-1.0/bureau/admin/adm_login.php create mode 100644 stable-1.0/bureau/admin/adm_mxaccount.php create mode 100644 stable-1.0/bureau/admin/adm_panel.php create mode 100644 stable-1.0/bureau/admin/adm_passpolicy.php create mode 100644 stable-1.0/bureau/admin/adm_quotadoedit.php create mode 100644 stable-1.0/bureau/admin/adm_quotaedit.php create mode 100644 stable-1.0/bureau/admin/adm_slaveaccount.php create mode 100644 stable-1.0/bureau/admin/adm_slaveip.php create mode 100644 stable-1.0/bureau/admin/adm_tld.php create mode 100644 stable-1.0/bureau/admin/adm_tldadd.php create mode 100644 stable-1.0/bureau/admin/adm_tlddoadd.php create mode 100644 stable-1.0/bureau/admin/adm_tlddoedit.php create mode 100644 stable-1.0/bureau/admin/adm_tldedit.php create mode 100644 stable-1.0/bureau/admin/adm_variables.php create mode 100644 stable-1.0/bureau/admin/aide/files/browser_set.png create mode 100644 stable-1.0/bureau/admin/aide/files/ftp_add.png create mode 100644 stable-1.0/bureau/admin/aide/files/ftp_list.png create mode 100644 stable-1.0/bureau/admin/aide/files/readme create mode 100644 stable-1.0/bureau/admin/aide/files/sta_add.png create mode 100644 stable-1.0/bureau/admin/aide/files/sta_view1.png create mode 100644 stable-1.0/bureau/admin/aide/files/sta_view2.png create mode 100644 stable-1.0/bureau/admin/aide/help.php create mode 100644 stable-1.0/bureau/admin/aide/help.png create mode 100644 stable-1.0/bureau/admin/aide/html/book1.html create mode 100644 stable-1.0/bureau/admin/aide/html/c126.html create mode 100644 stable-1.0/bureau/admin/aide/html/c18.html create mode 100644 stable-1.0/bureau/admin/aide/html/c26.html create mode 100644 stable-1.0/bureau/admin/aide/html/c72.html create mode 100644 stable-1.0/bureau/admin/aide/html/c84.html create mode 100644 stable-1.0/bureau/admin/aide/html/docbook.css create mode 100644 stable-1.0/bureau/admin/aide/html/files/browser_set.png create mode 100644 stable-1.0/bureau/admin/aide/html/files/ftp_add.png create mode 100644 stable-1.0/bureau/admin/aide/html/files/ftp_list.png create mode 100644 stable-1.0/bureau/admin/aide/html/files/readme create mode 100644 stable-1.0/bureau/admin/aide/html/files/sta_add.png create mode 100644 stable-1.0/bureau/admin/aide/html/files/sta_view1.png create mode 100644 stable-1.0/bureau/admin/aide/html/files/sta_view2.png create mode 100644 stable-1.0/bureau/admin/aide/html/frameset.html create mode 100644 stable-1.0/bureau/admin/aide/html/plus.gif create mode 100644 stable-1.0/bureau/admin/aide/html/tiret.gif create mode 100644 stable-1.0/bureau/admin/aide/html/toc.htm create mode 100644 stable-1.0/bureau/admin/aide/html/x105.html create mode 100644 stable-1.0/bureau/admin/aide/html/x23.html create mode 100644 stable-1.0/bureau/admin/aide/html/x53.html create mode 100644 stable-1.0/bureau/admin/aide/inline/docbook.css create mode 100644 stable-1.0/bureau/admin/aide/inline/frameset.html create mode 100644 stable-1.0/bureau/admin/aide/inline/plus.gif create mode 100644 stable-1.0/bureau/admin/aide/inline/tiret.gif create mode 100644 stable-1.0/bureau/admin/alternc.jpg create mode 100644 stable-1.0/bureau/admin/alternc.png create mode 100644 stable-1.0/bureau/admin/alternc3.png create mode 100644 stable-1.0/bureau/admin/bro_editor.php create mode 100644 stable-1.0/bureau/admin/bro_main.php create mode 100644 stable-1.0/bureau/admin/bro_pref.php create mode 100644 stable-1.0/bureau/admin/bro_tgzdown.php create mode 100644 stable-1.0/bureau/admin/bro_view.php create mode 100644 stable-1.0/bureau/admin/browseforfolder.php create mode 100644 stable-1.0/bureau/admin/direct.php create mode 100644 stable-1.0/bureau/admin/dom_add.php create mode 100644 stable-1.0/bureau/admin/dom_doadd.php create mode 100644 stable-1.0/bureau/admin/dom_dodel.php create mode 100644 stable-1.0/bureau/admin/dom_edit.inc.php create mode 100644 stable-1.0/bureau/admin/dom_edit.php create mode 100644 stable-1.0/bureau/admin/dom_editdns.php create mode 100644 stable-1.0/bureau/admin/dom_subdel.php create mode 100644 stable-1.0/bureau/admin/dom_subdodel.php create mode 100644 stable-1.0/bureau/admin/dom_subdoedit.php create mode 100644 stable-1.0/bureau/admin/dom_subedit.php create mode 100644 stable-1.0/bureau/admin/dom_substatus.php create mode 100644 stable-1.0/bureau/admin/domlist.php create mode 100644 stable-1.0/bureau/admin/foot.php create mode 100644 stable-1.0/bureau/admin/ftp_add.php create mode 100644 stable-1.0/bureau/admin/ftp_del.php create mode 100644 stable-1.0/bureau/admin/ftp_doadd.php create mode 100644 stable-1.0/bureau/admin/ftp_doedit.php create mode 100644 stable-1.0/bureau/admin/ftp_edit.php create mode 100644 stable-1.0/bureau/admin/ftp_list.php create mode 100644 stable-1.0/bureau/admin/head.php create mode 100644 stable-1.0/bureau/admin/hippo_bleue.gif create mode 100644 stable-1.0/bureau/admin/hoster.png create mode 100644 stable-1.0/bureau/admin/hta_add.php create mode 100644 stable-1.0/bureau/admin/hta_adduser.php create mode 100644 stable-1.0/bureau/admin/hta_del.php create mode 100644 stable-1.0/bureau/admin/hta_doadd.php create mode 100644 stable-1.0/bureau/admin/hta_doadduser.php create mode 100644 stable-1.0/bureau/admin/hta_dodeluser.php create mode 100644 stable-1.0/bureau/admin/hta_doedituser.php create mode 100644 stable-1.0/bureau/admin/hta_edit.php create mode 100644 stable-1.0/bureau/admin/hta_edituser.php create mode 100644 stable-1.0/bureau/admin/hta_list.php create mode 100644 stable-1.0/bureau/admin/icon/browse.png create mode 100644 stable-1.0/bureau/admin/icon/delfile.png create mode 100644 stable-1.0/bureau/admin/icon/doc.png create mode 100644 stable-1.0/bureau/admin/icon/encrypted.png create mode 100644 stable-1.0/bureau/admin/icon/exe.png create mode 100644 stable-1.0/bureau/admin/icon/file.png create mode 100644 stable-1.0/bureau/admin/icon/folder.png create mode 100644 stable-1.0/bureau/admin/icon/htm.png create mode 100644 stable-1.0/bureau/admin/icon/jpg.png create mode 100644 stable-1.0/bureau/admin/icon/m3u.png create mode 100644 stable-1.0/bureau/admin/icon/move.png create mode 100644 stable-1.0/bureau/admin/icon/newfile.png create mode 100644 stable-1.0/bureau/admin/icon/newfolder.png create mode 100644 stable-1.0/bureau/admin/icon/newhtml.png create mode 100644 stable-1.0/bureau/admin/icon/openfold.png create mode 100644 stable-1.0/bureau/admin/icon/pdf.png create mode 100644 stable-1.0/bureau/admin/icon/php.png create mode 100644 stable-1.0/bureau/admin/icon/ppt.png create mode 100644 stable-1.0/bureau/admin/icon/properties.png create mode 100644 stable-1.0/bureau/admin/icon/protect.png create mode 100644 stable-1.0/bureau/admin/icon/ra.png create mode 100644 stable-1.0/bureau/admin/icon/selall.png create mode 100644 stable-1.0/bureau/admin/icon/sort0.png create mode 100644 stable-1.0/bureau/admin/icon/sort1.png create mode 100644 stable-1.0/bureau/admin/icon/swf.png create mode 100644 stable-1.0/bureau/admin/icon/sxc.png create mode 100644 stable-1.0/bureau/admin/icon/sxd.png create mode 100644 stable-1.0/bureau/admin/icon/sxi.png create mode 100644 stable-1.0/bureau/admin/icon/sxw.png create mode 100644 stable-1.0/bureau/admin/icon/txt.png create mode 100644 stable-1.0/bureau/admin/icon/wav.png create mode 100644 stable-1.0/bureau/admin/icon/winresize.gif create mode 100644 stable-1.0/bureau/admin/icon/xls.png create mode 100644 stable-1.0/bureau/admin/icon/zip.png create mode 100755 stable-1.0/bureau/admin/images/admin.png create mode 100755 stable-1.0/bureau/admin/images/bgborder.gif create mode 100755 stable-1.0/bureau/admin/images/blank.gif create mode 100755 stable-1.0/bureau/admin/images/config.png create mode 100755 stable-1.0/bureau/admin/images/delete.png create mode 100755 stable-1.0/bureau/admin/images/dom.png create mode 100755 stable-1.0/bureau/admin/images/edit.png create mode 100755 stable-1.0/bureau/admin/images/exit.png create mode 100755 stable-1.0/bureau/admin/images/folder.png create mode 100755 stable-1.0/bureau/admin/images/folderhta.png create mode 100755 stable-1.0/bureau/admin/images/ftp.png create mode 100755 stable-1.0/bureau/admin/images/help.png create mode 100755 stable-1.0/bureau/admin/images/home.png create mode 100644 stable-1.0/bureau/admin/images/lang.png create mode 100755 stable-1.0/bureau/admin/images/mail.png create mode 100755 stable-1.0/bureau/admin/images/minus.png create mode 100755 stable-1.0/bureau/admin/images/mysql.png create mode 100755 stable-1.0/bureau/admin/images/new.png create mode 100755 stable-1.0/bureau/admin/images/orig/admin.png create mode 100755 stable-1.0/bureau/admin/images/orig/bgborder.gif create mode 100755 stable-1.0/bureau/admin/images/orig/blank.gif create mode 100755 stable-1.0/bureau/admin/images/orig/config.png create mode 100755 stable-1.0/bureau/admin/images/orig/delete.png create mode 100755 stable-1.0/bureau/admin/images/orig/dom.png create mode 100755 stable-1.0/bureau/admin/images/orig/edit.png create mode 100755 stable-1.0/bureau/admin/images/orig/exit.png create mode 100755 stable-1.0/bureau/admin/images/orig/folder.png create mode 100755 stable-1.0/bureau/admin/images/orig/folderhta.png create mode 100755 stable-1.0/bureau/admin/images/orig/ftp.png create mode 100755 stable-1.0/bureau/admin/images/orig/help.png create mode 100755 stable-1.0/bureau/admin/images/orig/home.png create mode 100755 stable-1.0/bureau/admin/images/orig/mail.png create mode 100755 stable-1.0/bureau/admin/images/orig/mailman.png create mode 100755 stable-1.0/bureau/admin/images/orig/minus.png create mode 100755 stable-1.0/bureau/admin/images/orig/mysql.png create mode 100755 stable-1.0/bureau/admin/images/orig/new.png create mode 100755 stable-1.0/bureau/admin/images/orig/password.png create mode 100755 stable-1.0/bureau/admin/images/orig/plus.png create mode 100755 stable-1.0/bureau/admin/images/orig/quota.png create mode 100755 stable-1.0/bureau/admin/images/orig/stat.png create mode 100755 stable-1.0/bureau/admin/images/password.png create mode 100755 stable-1.0/bureau/admin/images/plus.png create mode 100755 stable-1.0/bureau/admin/images/quota.png create mode 100755 stable-1.0/bureau/admin/images/stat.png create mode 100644 stable-1.0/bureau/admin/index.php create mode 100644 stable-1.0/bureau/admin/js/alternc.js create mode 100644 stable-1.0/bureau/admin/js/jquery.min.js create mode 100644 stable-1.0/bureau/admin/js/jquery_ui/css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png create mode 100644 stable-1.0/bureau/admin/js/jquery_ui/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png create mode 100644 stable-1.0/bureau/admin/js/jquery_ui/css/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png create mode 100644 stable-1.0/bureau/admin/js/jquery_ui/css/smoothness/images/ui-bg_glass_65_ffffff_1x400.png create mode 100644 stable-1.0/bureau/admin/js/jquery_ui/css/smoothness/images/ui-bg_glass_75_dadada_1x400.png create mode 100644 stable-1.0/bureau/admin/js/jquery_ui/css/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png create mode 100644 stable-1.0/bureau/admin/js/jquery_ui/css/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png create mode 100644 stable-1.0/bureau/admin/js/jquery_ui/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png create mode 100644 stable-1.0/bureau/admin/js/jquery_ui/css/smoothness/images/ui-icons_222222_256x240.png create mode 100644 stable-1.0/bureau/admin/js/jquery_ui/css/smoothness/images/ui-icons_2e83ff_256x240.png create mode 100644 stable-1.0/bureau/admin/js/jquery_ui/css/smoothness/images/ui-icons_454545_256x240.png create mode 100644 stable-1.0/bureau/admin/js/jquery_ui/css/smoothness/images/ui-icons_888888_256x240.png create mode 100644 stable-1.0/bureau/admin/js/jquery_ui/css/smoothness/images/ui-icons_cd0a0a_256x240.png create mode 100644 stable-1.0/bureau/admin/js/jquery_ui/css/smoothness/jquery-ui-1.8.10.custom.css create mode 100644 stable-1.0/bureau/admin/js/jquery_ui/index.html create mode 100644 stable-1.0/bureau/admin/js/jquery_ui/js/jquery-1.4.4.min.js create mode 100644 stable-1.0/bureau/admin/js/jquery_ui/js/jquery-ui-1.8.10.custom.min.js create mode 100644 stable-1.0/bureau/admin/js/jquery_ui/js/jquery.ui.datepicker-de.js create mode 100644 stable-1.0/bureau/admin/js/jquery_ui/js/jquery.ui.datepicker-es.js create mode 100644 stable-1.0/bureau/admin/js/jquery_ui/js/jquery.ui.datepicker-fr.js create mode 100644 stable-1.0/bureau/admin/js/prototype.js create mode 100644 stable-1.0/bureau/admin/login.php create mode 100644 stable-1.0/bureau/admin/logo.png create mode 100644 stable-1.0/bureau/admin/logo2.png create mode 100644 stable-1.0/bureau/admin/mail_add.php create mode 100644 stable-1.0/bureau/admin/mail_del.php create mode 100644 stable-1.0/bureau/admin/mail_doadd.php create mode 100644 stable-1.0/bureau/admin/mail_dodel.php create mode 100644 stable-1.0/bureau/admin/mail_doedit.php create mode 100644 stable-1.0/bureau/admin/mail_edit.php create mode 100644 stable-1.0/bureau/admin/mail_list.php create mode 100644 stable-1.0/bureau/admin/main.php create mode 100644 stable-1.0/bureau/admin/mem_admin.php create mode 100644 stable-1.0/bureau/admin/mem_chgmail.php create mode 100644 stable-1.0/bureau/admin/mem_cm.php create mode 100644 stable-1.0/bureau/admin/mem_cm2.php create mode 100644 stable-1.0/bureau/admin/mem_logout.php create mode 100644 stable-1.0/bureau/admin/mem_param.php create mode 100644 stable-1.0/bureau/admin/mem_passwd.php create mode 100644 stable-1.0/bureau/admin/menu.php create mode 100644 stable-1.0/bureau/admin/menu_adm.php create mode 100644 stable-1.0/bureau/admin/menu_aide.php create mode 100644 stable-1.0/bureau/admin/menu_brouteur.php create mode 100644 stable-1.0/bureau/admin/menu_dom.php create mode 100644 stable-1.0/bureau/admin/menu_ftp.php create mode 100644 stable-1.0/bureau/admin/menu_lang.php create mode 100644 stable-1.0/bureau/admin/menu_mail.php create mode 100644 stable-1.0/bureau/admin/menu_mem.php create mode 100644 stable-1.0/bureau/admin/menu_quota.php create mode 100644 stable-1.0/bureau/admin/menu_sql.php create mode 100644 stable-1.0/bureau/admin/menu_sta2.php create mode 100644 stable-1.0/bureau/admin/menu_web.php create mode 100644 stable-1.0/bureau/admin/mxlist.php create mode 100644 stable-1.0/bureau/admin/phpinfo.php create mode 100644 stable-1.0/bureau/admin/powered2.jpg create mode 100644 stable-1.0/bureau/admin/quota_show.php create mode 100644 stable-1.0/bureau/admin/quotas_oneuser.php create mode 100644 stable-1.0/bureau/admin/quotas_users.php create mode 100644 stable-1.0/bureau/admin/sql_add.php create mode 100644 stable-1.0/bureau/admin/sql_addmain.php create mode 100644 stable-1.0/bureau/admin/sql_admin.php create mode 100644 stable-1.0/bureau/admin/sql_bck.php create mode 100644 stable-1.0/bureau/admin/sql_del.php create mode 100644 stable-1.0/bureau/admin/sql_doadd.php create mode 100644 stable-1.0/bureau/admin/sql_dobck.php create mode 100644 stable-1.0/bureau/admin/sql_dorestore.php create mode 100644 stable-1.0/bureau/admin/sql_getparam.php create mode 100644 stable-1.0/bureau/admin/sql_list.php create mode 100644 stable-1.0/bureau/admin/sql_pass.php create mode 100644 stable-1.0/bureau/admin/sql_passchg.php create mode 100644 stable-1.0/bureau/admin/sql_restore.php create mode 100644 stable-1.0/bureau/admin/sql_users_add.php create mode 100644 stable-1.0/bureau/admin/sql_users_del.php create mode 100644 stable-1.0/bureau/admin/sql_users_doadd.php create mode 100644 stable-1.0/bureau/admin/sql_users_dopassword.php create mode 100644 stable-1.0/bureau/admin/sql_users_dorights.php create mode 100644 stable-1.0/bureau/admin/sql_users_list.php create mode 100644 stable-1.0/bureau/admin/sql_users_password.php create mode 100644 stable-1.0/bureau/admin/sql_users_rights.php create mode 100644 stable-1.0/bureau/admin/sta2_add_raw.php create mode 100644 stable-1.0/bureau/admin/sta2_del_raw.php create mode 100644 stable-1.0/bureau/admin/sta2_doadd_raw.php create mode 100644 stable-1.0/bureau/admin/sta2_doedit_raw.php create mode 100644 stable-1.0/bureau/admin/sta2_edit_raw.php create mode 100644 stable-1.0/bureau/admin/sta2_list.php create mode 100644 stable-1.0/bureau/admin/stats_members.php create mode 100644 stable-1.0/bureau/admin/styles/style.css create mode 100644 stable-1.0/bureau/admin/template.php create mode 100644 stable-1.0/bureau/admin/trash_dateselect.php create mode 100644 stable-1.0/bureau/admin/web_list.php create mode 100644 stable-1.0/bureau/admin/webmail/.htaccess create mode 100644 stable-1.0/bureau/admin/webmail/index.php create mode 100644 stable-1.0/bureau/class/config.php create mode 100644 stable-1.0/bureau/class/config_nochk.php create mode 100644 stable-1.0/bureau/class/config_real.php create mode 100644 stable-1.0/bureau/class/db_mysql.php create mode 100644 stable-1.0/bureau/class/export_account.php create mode 100644 stable-1.0/bureau/class/functions.php create mode 100644 stable-1.0/bureau/class/hooks.php create mode 100644 stable-1.0/bureau/class/lang_env.php create mode 100644 stable-1.0/bureau/class/local.php create mode 100644 stable-1.0/bureau/class/m_admin.php create mode 100644 stable-1.0/bureau/class/m_bro.php create mode 100644 stable-1.0/bureau/class/m_dom.php create mode 100644 stable-1.0/bureau/class/m_err.php create mode 100644 stable-1.0/bureau/class/m_ftp.php create mode 100644 stable-1.0/bureau/class/m_hta.php create mode 100644 stable-1.0/bureau/class/m_mail.php create mode 100644 stable-1.0/bureau/class/m_mem.php create mode 100644 stable-1.0/bureau/class/m_mysql.php create mode 100644 stable-1.0/bureau/class/m_quota.php create mode 100644 stable-1.0/bureau/class/m_sta2.php create mode 100644 stable-1.0/bureau/class/m_trash.php create mode 100644 stable-1.0/bureau/class/mime.php create mode 100644 stable-1.0/bureau/class/reset_stats_conf.php create mode 100644 stable-1.0/bureau/class/variables.php create mode 100644 stable-1.0/bureau/index.php create mode 100644 stable-1.0/bureau/locales/Makefile create mode 100644 stable-1.0/bureau/locales/README create mode 100644 stable-1.0/bureau/locales/de_DE/LC_MESSAGES/messages.po create mode 100644 stable-1.0/bureau/locales/en_US/LC_MESSAGES/manual.po create mode 100644 stable-1.0/bureau/locales/en_US/LC_MESSAGES/messages.po create mode 100644 stable-1.0/bureau/locales/es_ES/LC_MESSAGES/manual.po create mode 100644 stable-1.0/bureau/locales/es_ES/LC_MESSAGES/messages.po create mode 100644 stable-1.0/bureau/locales/fr_FR/LC_MESSAGES/manual.po create mode 100644 stable-1.0/bureau/locales/fr_FR/LC_MESSAGES/messages.po create mode 100644 stable-1.0/bureau/locales/manual.pot create mode 100644 stable-1.0/bureau/locales/messages.pot create mode 100644 stable-1.0/bureau/locales/pt_BR/LC_MESSAGES/messages.po create mode 100644 stable-1.0/debian/.svnignore create mode 100644 stable-1.0/debian/NEWS create mode 100644 stable-1.0/debian/README.Debian create mode 100644 stable-1.0/debian/alternc-slave.config create mode 100644 stable-1.0/debian/alternc-slave.dirs create mode 100644 stable-1.0/debian/alternc-slave.install create mode 100644 stable-1.0/debian/alternc-slave.links create mode 100644 stable-1.0/debian/alternc-slave.lintian create mode 100644 stable-1.0/debian/alternc-slave.logrotate create mode 100644 stable-1.0/debian/alternc-slave.postinst create mode 100644 stable-1.0/debian/alternc-slave.postrm create mode 100644 stable-1.0/debian/alternc-slave.prerm create mode 100644 stable-1.0/debian/alternc-slave.templates create mode 100644 stable-1.0/debian/alternc.config create mode 100644 stable-1.0/debian/alternc.cron.d create mode 100644 stable-1.0/debian/alternc.dirs create mode 100644 stable-1.0/debian/alternc.links create mode 100644 stable-1.0/debian/alternc.lintian create mode 100644 stable-1.0/debian/alternc.logrotate create mode 100644 stable-1.0/debian/alternc.postinst create mode 100644 stable-1.0/debian/alternc.postrm create mode 100644 stable-1.0/debian/alternc.preinst create mode 100644 stable-1.0/debian/alternc.prerm create mode 100644 stable-1.0/debian/changelog create mode 100644 stable-1.0/debian/compat create mode 100644 stable-1.0/debian/control create mode 100644 stable-1.0/debian/copyright create mode 100644 stable-1.0/debian/docs create mode 100644 stable-1.0/debian/po/POTFILES.in create mode 100644 stable-1.0/debian/po/fr.po create mode 100644 stable-1.0/debian/po/templates.pot create mode 100755 stable-1.0/debian/rules create mode 100644 stable-1.0/debian/templates create mode 100644 stable-1.0/etc/alternc/alternc.ini create mode 100644 stable-1.0/etc/alternc/apache2-ssl.conf create mode 100644 stable-1.0/etc/alternc/apache2.conf create mode 100755 stable-1.0/etc/alternc/functions_hosting/hosting_massvhost.sh create mode 100644 stable-1.0/etc/alternc/menulist.txt create mode 100644 stable-1.0/etc/alternc/phpmyadmin.inc.php create mode 100644 stable-1.0/etc/alternc/postfix-slave.cf create mode 100644 stable-1.0/etc/alternc/postfix.cf create mode 100644 stable-1.0/etc/alternc/templates/alternc/bureau.conf create mode 100644 stable-1.0/etc/alternc/templates/apache2/panel.conf create mode 100644 stable-1.0/etc/alternc/templates/apache2/url.conf create mode 100644 stable-1.0/etc/alternc/templates/apache2/vhost.conf create mode 100644 stable-1.0/etc/alternc/templates/apache2/webmail.conf create mode 100644 stable-1.0/etc/alternc/templates/bind/automatic.conf create mode 100644 stable-1.0/etc/alternc/templates/bind/named.conf.options create mode 100644 stable-1.0/etc/alternc/templates/bind/slaveip.conf create mode 100644 stable-1.0/etc/alternc/templates/bind/templates/mx.template create mode 100644 stable-1.0/etc/alternc/templates/bind/templates/named.template create mode 100644 stable-1.0/etc/alternc/templates/bind/templates/slave.template create mode 100644 stable-1.0/etc/alternc/templates/bind/templates/zone.template create mode 100644 stable-1.0/etc/alternc/templates/courier/authdaemonrc create mode 100644 stable-1.0/etc/alternc/templates/courier/authmysqlrc create mode 100644 stable-1.0/etc/alternc/templates/default/saslauthd create mode 100644 stable-1.0/etc/alternc/templates/dovecot/dovecot-sql.conf create mode 100644 stable-1.0/etc/alternc/templates/dovecot/dovecot.conf create mode 100644 stable-1.0/etc/alternc/templates/postfix/ca.der create mode 100644 stable-1.0/etc/alternc/templates/postfix/myalias.cf create mode 100644 stable-1.0/etc/alternc/templates/postfix/mydomain.cf create mode 100644 stable-1.0/etc/alternc/templates/postfix/mygid.cf create mode 100644 stable-1.0/etc/alternc/templates/postfix/myrelay.cf create mode 100644 stable-1.0/etc/alternc/templates/postfix/myvirtual.cf create mode 100644 stable-1.0/etc/alternc/templates/postfix/sasl/smtpd.conf create mode 100644 stable-1.0/etc/alternc/templates/proftpd/modules.conf create mode 100644 stable-1.0/etc/alternc/templates/proftpd/proftpd.conf create mode 100644 stable-1.0/etc/alternc/templates/proftpd/welcome.msg create mode 100644 stable-1.0/etc/alternc/templates/squirrelmail/apache.conf create mode 100644 stable-1.0/install/alternc.install create mode 100644 stable-1.0/install/body_checks create mode 100644 stable-1.0/install/domaines.template create mode 100755 stable-1.0/install/dopo.sh create mode 100644 stable-1.0/install/header_checks create mode 100755 stable-1.0/install/mysql.sh create mode 100644 stable-1.0/install/mysql.sql create mode 100644 stable-1.0/install/newone.php create mode 100644 stable-1.0/install/reset_root.php create mode 100755 stable-1.0/install/upgrade_check.sh create mode 100644 stable-1.0/install/upgrades/0.9.1.sql create mode 100644 stable-1.0/install/upgrades/0.9.10.sql create mode 100644 stable-1.0/install/upgrades/0.9.1_migrationldap.php create mode 100644 stable-1.0/install/upgrades/0.9.2.php create mode 100644 stable-1.0/install/upgrades/0.9.2.sql create mode 100644 stable-1.0/install/upgrades/0.9.3.1.sql create mode 100644 stable-1.0/install/upgrades/0.9.3.sql create mode 100644 stable-1.0/install/upgrades/0.9.4.sql create mode 100755 stable-1.0/install/upgrades/0.9.5.sh create mode 100644 stable-1.0/install/upgrades/0.9.5.sql create mode 100644 stable-1.0/install/upgrades/0.9.6.sql create mode 100644 stable-1.0/install/upgrades/0.9.7.sql create mode 100644 stable-1.0/install/upgrades/0.9.9.sql create mode 100644 stable-1.0/install/upgrades/1.0.sql create mode 100644 stable-1.0/install/upgrades/README create mode 100644 stable-1.0/man/alternc-admintools.8 create mode 100644 stable-1.0/man/alternc-admintools.fr.8 create mode 100644 stable-1.0/man/alternc.install.8 create mode 100644 stable-1.0/man/alternc.install.fr.8 create mode 100644 stable-1.0/man/get_account_by_domain.8 create mode 100644 stable-1.0/man/get_domains_by_account.8 create mode 100644 stable-1.0/man/top_ftp_users.8 create mode 100644 stable-1.0/man/top_ftp_users.fr.8 create mode 100644 stable-1.0/man/top_http_users.8 create mode 100644 stable-1.0/man/top_http_users.fr.8 create mode 100644 stable-1.0/man/top_mysql_users.8 create mode 100644 stable-1.0/man/top_mysql_users.fr.8 create mode 100644 stable-1.0/nightlybuild/HEADER.html create mode 100644 stable-1.0/nightlybuild/README.html create mode 100644 stable-1.0/nightlybuild/READMEFIRST create mode 100755 stable-1.0/nightlybuild/build.sh create mode 100644 stable-1.0/nightlybuild/nightly.key create mode 100644 stable-1.0/po/alternc-admintools.pot create mode 100644 stable-1.0/po/fr/LC_MESSAGES/.svnignore create mode 100644 stable-1.0/po/fr/LC_MESSAGES/alternc-admintools.po create mode 100644 stable-1.0/quota_delete create mode 100644 stable-1.0/quota_init create mode 100644 stable-1.0/src/Makefile create mode 100755 stable-1.0/src/alternc-check create mode 100644 stable-1.0/src/alternc-dboptimize create mode 100755 stable-1.0/src/alternc-passwd create mode 100755 stable-1.0/src/alternc_reload create mode 100644 stable-1.0/src/du.pl create mode 100755 stable-1.0/src/fixperms.sh create mode 100755 stable-1.0/src/functions.sh create mode 100755 stable-1.0/src/functions_dns.sh create mode 100644 stable-1.0/src/functions_hosting.sh create mode 100755 stable-1.0/src/mail_add create mode 100755 stable-1.0/src/mail_del create mode 100755 stable-1.0/src/mem_add create mode 100755 stable-1.0/src/mem_del create mode 100644 stable-1.0/src/quota_delete create mode 100755 stable-1.0/src/quota_edit create mode 100755 stable-1.0/src/quota_edit.sh create mode 100755 stable-1.0/src/quota_get create mode 100755 stable-1.0/src/quota_get.sh create mode 100644 stable-1.0/src/quota_init create mode 100644 stable-1.0/src/rawstat.daily create mode 100644 stable-1.0/src/sendmail create mode 100644 stable-1.0/src/slave_dns create mode 100644 stable-1.0/src/spoolsize.php create mode 100755 stable-1.0/src/sqlbackup.sh create mode 100644 stable-1.0/src/update_domains.sh create mode 100644 stable-1.0/tests/mechdump.pm create mode 100755 stable-1.0/tests/test_demo.pl create mode 100755 stable-1.0/tests/whois_test.php create mode 100644 stable-1.0/tools/alternc_get_path create mode 100755 stable-1.0/tools/get_account_by_domain create mode 100755 stable-1.0/tools/get_domains_by_account create mode 100755 stable-1.0/tools/top_ftp_users create mode 100755 stable-1.0/tools/top_http_users create mode 100755 stable-1.0/tools/top_mysql_users diff --git a/.gitattributes b/.gitattributes index fe561408..ad5c85c4 100644 --- a/.gitattributes +++ b/.gitattributes @@ -475,6 +475,491 @@ src/slave_dns -text src/spoolsize.php -text src/sqlbackup.sh -text src/update_domains.sh -text +stable-1.0/.svnignore -text +stable-1.0/COPYING -text +stable-1.0/README.en -text +stable-1.0/README.fr -text +stable-1.0/aide/bin/build.sh -text +stable-1.0/aide/bin/frames.dsl -text +stable-1.0/aide/brouteur.sgml -text +stable-1.0/aide/domain.sgml -text +stable-1.0/aide/ftp.sgml -text +stable-1.0/aide/index.sgml -text +stable-1.0/aide/sommaire.sgml -text +stable-1.0/aide/stats.sgml -text +stable-1.0/aide/test.sgml -text +stable-1.0/bureau/admin/adm_add.php -text +stable-1.0/bureau/admin/adm_cancel.php -text +stable-1.0/bureau/admin/adm_deactivate.php -text +stable-1.0/bureau/admin/adm_defquotas.php -text +stable-1.0/bureau/admin/adm_del.php -text +stable-1.0/bureau/admin/adm_dnsweberror.php -text +stable-1.0/bureau/admin/adm_doadd.php -text +stable-1.0/bureau/admin/adm_dodefquotas.php -text +stable-1.0/bureau/admin/adm_dodel.php -text +stable-1.0/bureau/admin/adm_doedit.php -text +stable-1.0/bureau/admin/adm_domlock.php -text +stable-1.0/bureau/admin/adm_doms.php -text +stable-1.0/bureau/admin/adm_domstype.php -text +stable-1.0/bureau/admin/adm_domstypedoedit.php -text +stable-1.0/bureau/admin/adm_domstypeedit.php -text +stable-1.0/bureau/admin/adm_domstyperegenerate.php -text +stable-1.0/bureau/admin/adm_donosu.php -text +stable-1.0/bureau/admin/adm_dorenew.php -text +stable-1.0/bureau/admin/adm_dosu.php -text +stable-1.0/bureau/admin/adm_edit.php -text +stable-1.0/bureau/admin/adm_list.php -text +stable-1.0/bureau/admin/adm_login.php -text +stable-1.0/bureau/admin/adm_mxaccount.php -text +stable-1.0/bureau/admin/adm_panel.php -text +stable-1.0/bureau/admin/adm_passpolicy.php -text +stable-1.0/bureau/admin/adm_quotadoedit.php -text +stable-1.0/bureau/admin/adm_quotaedit.php -text +stable-1.0/bureau/admin/adm_slaveaccount.php -text +stable-1.0/bureau/admin/adm_slaveip.php -text +stable-1.0/bureau/admin/adm_tld.php -text +stable-1.0/bureau/admin/adm_tldadd.php -text +stable-1.0/bureau/admin/adm_tlddoadd.php -text +stable-1.0/bureau/admin/adm_tlddoedit.php -text +stable-1.0/bureau/admin/adm_tldedit.php -text +stable-1.0/bureau/admin/adm_variables.php -text +stable-1.0/bureau/admin/aide/files/browser_set.png -text +stable-1.0/bureau/admin/aide/files/ftp_add.png -text +stable-1.0/bureau/admin/aide/files/ftp_list.png -text +stable-1.0/bureau/admin/aide/files/readme -text +stable-1.0/bureau/admin/aide/files/sta_add.png -text +stable-1.0/bureau/admin/aide/files/sta_view1.png -text +stable-1.0/bureau/admin/aide/files/sta_view2.png -text +stable-1.0/bureau/admin/aide/help.php -text +stable-1.0/bureau/admin/aide/help.png -text +stable-1.0/bureau/admin/aide/html/book1.html -text +stable-1.0/bureau/admin/aide/html/c126.html -text +stable-1.0/bureau/admin/aide/html/c18.html -text +stable-1.0/bureau/admin/aide/html/c26.html -text +stable-1.0/bureau/admin/aide/html/c72.html -text +stable-1.0/bureau/admin/aide/html/c84.html -text +stable-1.0/bureau/admin/aide/html/docbook.css -text +stable-1.0/bureau/admin/aide/html/files/browser_set.png -text +stable-1.0/bureau/admin/aide/html/files/ftp_add.png -text +stable-1.0/bureau/admin/aide/html/files/ftp_list.png -text +stable-1.0/bureau/admin/aide/html/files/readme -text +stable-1.0/bureau/admin/aide/html/files/sta_add.png -text +stable-1.0/bureau/admin/aide/html/files/sta_view1.png -text +stable-1.0/bureau/admin/aide/html/files/sta_view2.png -text +stable-1.0/bureau/admin/aide/html/frameset.html -text +stable-1.0/bureau/admin/aide/html/plus.gif -text +stable-1.0/bureau/admin/aide/html/tiret.gif -text +stable-1.0/bureau/admin/aide/html/toc.htm -text +stable-1.0/bureau/admin/aide/html/x105.html -text +stable-1.0/bureau/admin/aide/html/x23.html -text +stable-1.0/bureau/admin/aide/html/x53.html -text +stable-1.0/bureau/admin/aide/inline/docbook.css -text +stable-1.0/bureau/admin/aide/inline/frameset.html -text +stable-1.0/bureau/admin/aide/inline/plus.gif -text +stable-1.0/bureau/admin/aide/inline/tiret.gif -text +stable-1.0/bureau/admin/alternc.jpg -text +stable-1.0/bureau/admin/alternc.png -text +stable-1.0/bureau/admin/alternc3.png -text +stable-1.0/bureau/admin/bro_editor.php -text +stable-1.0/bureau/admin/bro_main.php -text +stable-1.0/bureau/admin/bro_pref.php -text +stable-1.0/bureau/admin/bro_tgzdown.php -text +stable-1.0/bureau/admin/bro_view.php -text +stable-1.0/bureau/admin/browseforfolder.php -text +stable-1.0/bureau/admin/direct.php -text +stable-1.0/bureau/admin/dom_add.php -text +stable-1.0/bureau/admin/dom_doadd.php -text +stable-1.0/bureau/admin/dom_dodel.php -text +stable-1.0/bureau/admin/dom_edit.inc.php -text +stable-1.0/bureau/admin/dom_edit.php -text +stable-1.0/bureau/admin/dom_editdns.php -text +stable-1.0/bureau/admin/dom_subdel.php -text +stable-1.0/bureau/admin/dom_subdodel.php -text +stable-1.0/bureau/admin/dom_subdoedit.php -text +stable-1.0/bureau/admin/dom_subedit.php -text +stable-1.0/bureau/admin/dom_substatus.php -text +stable-1.0/bureau/admin/domlist.php -text +stable-1.0/bureau/admin/foot.php -text +stable-1.0/bureau/admin/ftp_add.php -text +stable-1.0/bureau/admin/ftp_del.php -text +stable-1.0/bureau/admin/ftp_doadd.php -text +stable-1.0/bureau/admin/ftp_doedit.php -text +stable-1.0/bureau/admin/ftp_edit.php -text +stable-1.0/bureau/admin/ftp_list.php -text +stable-1.0/bureau/admin/head.php -text +stable-1.0/bureau/admin/hippo_bleue.gif -text +stable-1.0/bureau/admin/hoster.png -text +stable-1.0/bureau/admin/hta_add.php -text +stable-1.0/bureau/admin/hta_adduser.php -text +stable-1.0/bureau/admin/hta_del.php -text +stable-1.0/bureau/admin/hta_doadd.php -text +stable-1.0/bureau/admin/hta_doadduser.php -text +stable-1.0/bureau/admin/hta_dodeluser.php -text +stable-1.0/bureau/admin/hta_doedituser.php -text +stable-1.0/bureau/admin/hta_edit.php -text +stable-1.0/bureau/admin/hta_edituser.php -text +stable-1.0/bureau/admin/hta_list.php -text +stable-1.0/bureau/admin/icon/browse.png -text +stable-1.0/bureau/admin/icon/delfile.png -text +stable-1.0/bureau/admin/icon/doc.png -text +stable-1.0/bureau/admin/icon/encrypted.png -text +stable-1.0/bureau/admin/icon/exe.png -text +stable-1.0/bureau/admin/icon/file.png -text +stable-1.0/bureau/admin/icon/folder.png -text +stable-1.0/bureau/admin/icon/htm.png -text +stable-1.0/bureau/admin/icon/jpg.png -text +stable-1.0/bureau/admin/icon/m3u.png -text +stable-1.0/bureau/admin/icon/move.png -text +stable-1.0/bureau/admin/icon/newfile.png -text +stable-1.0/bureau/admin/icon/newfolder.png -text +stable-1.0/bureau/admin/icon/newhtml.png -text +stable-1.0/bureau/admin/icon/openfold.png -text +stable-1.0/bureau/admin/icon/pdf.png -text +stable-1.0/bureau/admin/icon/php.png -text +stable-1.0/bureau/admin/icon/ppt.png -text +stable-1.0/bureau/admin/icon/properties.png -text +stable-1.0/bureau/admin/icon/protect.png -text +stable-1.0/bureau/admin/icon/ra.png -text +stable-1.0/bureau/admin/icon/selall.png -text +stable-1.0/bureau/admin/icon/sort0.png -text +stable-1.0/bureau/admin/icon/sort1.png -text +stable-1.0/bureau/admin/icon/swf.png -text +stable-1.0/bureau/admin/icon/sxc.png -text +stable-1.0/bureau/admin/icon/sxd.png -text +stable-1.0/bureau/admin/icon/sxi.png -text +stable-1.0/bureau/admin/icon/sxw.png -text +stable-1.0/bureau/admin/icon/txt.png -text +stable-1.0/bureau/admin/icon/wav.png -text +stable-1.0/bureau/admin/icon/winresize.gif -text +stable-1.0/bureau/admin/icon/xls.png -text +stable-1.0/bureau/admin/icon/zip.png -text +stable-1.0/bureau/admin/images/admin.png -text +stable-1.0/bureau/admin/images/bgborder.gif -text +stable-1.0/bureau/admin/images/blank.gif -text +stable-1.0/bureau/admin/images/config.png -text +stable-1.0/bureau/admin/images/delete.png -text +stable-1.0/bureau/admin/images/dom.png -text +stable-1.0/bureau/admin/images/edit.png -text +stable-1.0/bureau/admin/images/exit.png -text +stable-1.0/bureau/admin/images/folder.png -text +stable-1.0/bureau/admin/images/folderhta.png -text +stable-1.0/bureau/admin/images/ftp.png -text +stable-1.0/bureau/admin/images/help.png -text +stable-1.0/bureau/admin/images/home.png -text +stable-1.0/bureau/admin/images/lang.png -text +stable-1.0/bureau/admin/images/mail.png -text +stable-1.0/bureau/admin/images/minus.png -text +stable-1.0/bureau/admin/images/mysql.png -text +stable-1.0/bureau/admin/images/new.png -text +stable-1.0/bureau/admin/images/orig/admin.png -text +stable-1.0/bureau/admin/images/orig/bgborder.gif -text +stable-1.0/bureau/admin/images/orig/blank.gif -text +stable-1.0/bureau/admin/images/orig/config.png -text +stable-1.0/bureau/admin/images/orig/delete.png -text +stable-1.0/bureau/admin/images/orig/dom.png -text +stable-1.0/bureau/admin/images/orig/edit.png -text +stable-1.0/bureau/admin/images/orig/exit.png -text +stable-1.0/bureau/admin/images/orig/folder.png -text +stable-1.0/bureau/admin/images/orig/folderhta.png -text +stable-1.0/bureau/admin/images/orig/ftp.png -text +stable-1.0/bureau/admin/images/orig/help.png -text +stable-1.0/bureau/admin/images/orig/home.png -text +stable-1.0/bureau/admin/images/orig/mail.png -text +stable-1.0/bureau/admin/images/orig/mailman.png -text +stable-1.0/bureau/admin/images/orig/minus.png -text +stable-1.0/bureau/admin/images/orig/mysql.png -text +stable-1.0/bureau/admin/images/orig/new.png -text +stable-1.0/bureau/admin/images/orig/password.png -text +stable-1.0/bureau/admin/images/orig/plus.png -text +stable-1.0/bureau/admin/images/orig/quota.png -text +stable-1.0/bureau/admin/images/orig/stat.png -text +stable-1.0/bureau/admin/images/password.png -text +stable-1.0/bureau/admin/images/plus.png -text +stable-1.0/bureau/admin/images/quota.png -text +stable-1.0/bureau/admin/images/stat.png -text +stable-1.0/bureau/admin/index.php -text +stable-1.0/bureau/admin/js/alternc.js -text +stable-1.0/bureau/admin/js/jquery.min.js -text +stable-1.0/bureau/admin/js/jquery_ui/css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png -text +stable-1.0/bureau/admin/js/jquery_ui/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png -text +stable-1.0/bureau/admin/js/jquery_ui/css/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png -text +stable-1.0/bureau/admin/js/jquery_ui/css/smoothness/images/ui-bg_glass_65_ffffff_1x400.png -text +stable-1.0/bureau/admin/js/jquery_ui/css/smoothness/images/ui-bg_glass_75_dadada_1x400.png -text +stable-1.0/bureau/admin/js/jquery_ui/css/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png -text +stable-1.0/bureau/admin/js/jquery_ui/css/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png -text +stable-1.0/bureau/admin/js/jquery_ui/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png -text +stable-1.0/bureau/admin/js/jquery_ui/css/smoothness/images/ui-icons_222222_256x240.png -text +stable-1.0/bureau/admin/js/jquery_ui/css/smoothness/images/ui-icons_2e83ff_256x240.png -text +stable-1.0/bureau/admin/js/jquery_ui/css/smoothness/images/ui-icons_454545_256x240.png -text +stable-1.0/bureau/admin/js/jquery_ui/css/smoothness/images/ui-icons_888888_256x240.png -text +stable-1.0/bureau/admin/js/jquery_ui/css/smoothness/images/ui-icons_cd0a0a_256x240.png -text +stable-1.0/bureau/admin/js/jquery_ui/css/smoothness/jquery-ui-1.8.10.custom.css -text +stable-1.0/bureau/admin/js/jquery_ui/index.html -text +stable-1.0/bureau/admin/js/jquery_ui/js/jquery-1.4.4.min.js -text +stable-1.0/bureau/admin/js/jquery_ui/js/jquery-ui-1.8.10.custom.min.js -text +stable-1.0/bureau/admin/js/jquery_ui/js/jquery.ui.datepicker-de.js -text +stable-1.0/bureau/admin/js/jquery_ui/js/jquery.ui.datepicker-es.js -text +stable-1.0/bureau/admin/js/jquery_ui/js/jquery.ui.datepicker-fr.js -text +stable-1.0/bureau/admin/js/prototype.js -text +stable-1.0/bureau/admin/login.php -text +stable-1.0/bureau/admin/logo.png -text +stable-1.0/bureau/admin/logo2.png -text +stable-1.0/bureau/admin/mail_add.php -text +stable-1.0/bureau/admin/mail_del.php -text +stable-1.0/bureau/admin/mail_doadd.php -text +stable-1.0/bureau/admin/mail_dodel.php -text +stable-1.0/bureau/admin/mail_doedit.php -text +stable-1.0/bureau/admin/mail_edit.php -text +stable-1.0/bureau/admin/mail_list.php -text +stable-1.0/bureau/admin/main.php -text +stable-1.0/bureau/admin/mem_admin.php -text +stable-1.0/bureau/admin/mem_chgmail.php -text +stable-1.0/bureau/admin/mem_cm.php -text +stable-1.0/bureau/admin/mem_cm2.php -text +stable-1.0/bureau/admin/mem_logout.php -text +stable-1.0/bureau/admin/mem_param.php -text +stable-1.0/bureau/admin/mem_passwd.php -text +stable-1.0/bureau/admin/menu.php -text +stable-1.0/bureau/admin/menu_adm.php -text +stable-1.0/bureau/admin/menu_aide.php -text +stable-1.0/bureau/admin/menu_brouteur.php -text +stable-1.0/bureau/admin/menu_dom.php -text +stable-1.0/bureau/admin/menu_ftp.php -text +stable-1.0/bureau/admin/menu_lang.php -text +stable-1.0/bureau/admin/menu_mail.php -text +stable-1.0/bureau/admin/menu_mem.php -text +stable-1.0/bureau/admin/menu_quota.php -text +stable-1.0/bureau/admin/menu_sql.php -text +stable-1.0/bureau/admin/menu_sta2.php -text +stable-1.0/bureau/admin/menu_web.php -text +stable-1.0/bureau/admin/mxlist.php -text +stable-1.0/bureau/admin/phpinfo.php -text +stable-1.0/bureau/admin/powered2.jpg -text +stable-1.0/bureau/admin/quota_show.php -text +stable-1.0/bureau/admin/quotas_oneuser.php -text +stable-1.0/bureau/admin/quotas_users.php -text +stable-1.0/bureau/admin/sql_add.php -text +stable-1.0/bureau/admin/sql_addmain.php -text +stable-1.0/bureau/admin/sql_admin.php -text +stable-1.0/bureau/admin/sql_bck.php -text +stable-1.0/bureau/admin/sql_del.php -text +stable-1.0/bureau/admin/sql_doadd.php -text +stable-1.0/bureau/admin/sql_dobck.php -text +stable-1.0/bureau/admin/sql_dorestore.php -text +stable-1.0/bureau/admin/sql_getparam.php -text +stable-1.0/bureau/admin/sql_list.php -text +stable-1.0/bureau/admin/sql_pass.php -text +stable-1.0/bureau/admin/sql_passchg.php -text +stable-1.0/bureau/admin/sql_restore.php -text +stable-1.0/bureau/admin/sql_users_add.php -text +stable-1.0/bureau/admin/sql_users_del.php -text +stable-1.0/bureau/admin/sql_users_doadd.php -text +stable-1.0/bureau/admin/sql_users_dopassword.php -text +stable-1.0/bureau/admin/sql_users_dorights.php -text +stable-1.0/bureau/admin/sql_users_list.php -text +stable-1.0/bureau/admin/sql_users_password.php -text +stable-1.0/bureau/admin/sql_users_rights.php -text +stable-1.0/bureau/admin/sta2_add_raw.php -text +stable-1.0/bureau/admin/sta2_del_raw.php -text +stable-1.0/bureau/admin/sta2_doadd_raw.php -text +stable-1.0/bureau/admin/sta2_doedit_raw.php -text +stable-1.0/bureau/admin/sta2_edit_raw.php -text +stable-1.0/bureau/admin/sta2_list.php -text +stable-1.0/bureau/admin/stats_members.php -text +stable-1.0/bureau/admin/styles/style.css -text +stable-1.0/bureau/admin/template.php -text +stable-1.0/bureau/admin/trash_dateselect.php -text +stable-1.0/bureau/admin/web_list.php -text +stable-1.0/bureau/admin/webmail/.htaccess -text +stable-1.0/bureau/admin/webmail/index.php -text +stable-1.0/bureau/class/config.php -text +stable-1.0/bureau/class/config_nochk.php -text +stable-1.0/bureau/class/config_real.php -text +stable-1.0/bureau/class/db_mysql.php -text +stable-1.0/bureau/class/export_account.php -text +stable-1.0/bureau/class/functions.php -text +stable-1.0/bureau/class/hooks.php -text +stable-1.0/bureau/class/lang_env.php -text +stable-1.0/bureau/class/local.php -text +stable-1.0/bureau/class/m_admin.php -text +stable-1.0/bureau/class/m_bro.php -text +stable-1.0/bureau/class/m_dom.php -text +stable-1.0/bureau/class/m_err.php -text +stable-1.0/bureau/class/m_ftp.php -text +stable-1.0/bureau/class/m_hta.php -text +stable-1.0/bureau/class/m_mail.php -text +stable-1.0/bureau/class/m_mem.php -text +stable-1.0/bureau/class/m_mysql.php -text +stable-1.0/bureau/class/m_quota.php -text +stable-1.0/bureau/class/m_sta2.php -text +stable-1.0/bureau/class/m_trash.php -text +stable-1.0/bureau/class/mime.php -text +stable-1.0/bureau/class/reset_stats_conf.php -text +stable-1.0/bureau/class/variables.php -text +stable-1.0/bureau/index.php -text +stable-1.0/bureau/locales/Makefile -text +stable-1.0/bureau/locales/README -text +stable-1.0/bureau/locales/de_DE/LC_MESSAGES/messages.po -text +stable-1.0/bureau/locales/en_US/LC_MESSAGES/manual.po -text +stable-1.0/bureau/locales/en_US/LC_MESSAGES/messages.po -text +stable-1.0/bureau/locales/es_ES/LC_MESSAGES/manual.po -text +stable-1.0/bureau/locales/es_ES/LC_MESSAGES/messages.po -text +stable-1.0/bureau/locales/fr_FR/LC_MESSAGES/manual.po -text +stable-1.0/bureau/locales/fr_FR/LC_MESSAGES/messages.po -text +stable-1.0/bureau/locales/manual.pot -text +stable-1.0/bureau/locales/messages.pot -text +stable-1.0/bureau/locales/pt_BR/LC_MESSAGES/messages.po -text +stable-1.0/debian/.svnignore -text +stable-1.0/debian/NEWS -text +stable-1.0/debian/README.Debian -text +stable-1.0/debian/alternc-slave.config -text +stable-1.0/debian/alternc-slave.dirs -text +stable-1.0/debian/alternc-slave.install -text +stable-1.0/debian/alternc-slave.links -text +stable-1.0/debian/alternc-slave.lintian -text +stable-1.0/debian/alternc-slave.logrotate -text +stable-1.0/debian/alternc-slave.postinst -text +stable-1.0/debian/alternc-slave.postrm -text +stable-1.0/debian/alternc-slave.prerm -text +stable-1.0/debian/alternc-slave.templates -text +stable-1.0/debian/alternc.config -text +stable-1.0/debian/alternc.cron.d -text +stable-1.0/debian/alternc.dirs -text +stable-1.0/debian/alternc.links -text +stable-1.0/debian/alternc.lintian -text +stable-1.0/debian/alternc.logrotate -text +stable-1.0/debian/alternc.postinst -text +stable-1.0/debian/alternc.postrm -text +stable-1.0/debian/alternc.preinst -text +stable-1.0/debian/alternc.prerm -text +stable-1.0/debian/changelog -text +stable-1.0/debian/compat -text +stable-1.0/debian/control -text +stable-1.0/debian/copyright -text +stable-1.0/debian/docs -text +stable-1.0/debian/po/POTFILES.in -text +stable-1.0/debian/po/fr.po -text +stable-1.0/debian/po/templates.pot -text +stable-1.0/debian/rules -text +stable-1.0/debian/templates -text +stable-1.0/etc/alternc/alternc.ini -text +stable-1.0/etc/alternc/apache2-ssl.conf -text +stable-1.0/etc/alternc/apache2.conf -text +stable-1.0/etc/alternc/functions_hosting/hosting_massvhost.sh -text +stable-1.0/etc/alternc/menulist.txt -text +stable-1.0/etc/alternc/phpmyadmin.inc.php -text +stable-1.0/etc/alternc/postfix-slave.cf -text +stable-1.0/etc/alternc/postfix.cf -text +stable-1.0/etc/alternc/templates/alternc/bureau.conf -text +stable-1.0/etc/alternc/templates/apache2/panel.conf -text +stable-1.0/etc/alternc/templates/apache2/url.conf -text +stable-1.0/etc/alternc/templates/apache2/vhost.conf -text +stable-1.0/etc/alternc/templates/apache2/webmail.conf -text +stable-1.0/etc/alternc/templates/bind/automatic.conf -text +stable-1.0/etc/alternc/templates/bind/named.conf.options -text +stable-1.0/etc/alternc/templates/bind/slaveip.conf -text +stable-1.0/etc/alternc/templates/bind/templates/mx.template -text +stable-1.0/etc/alternc/templates/bind/templates/named.template -text +stable-1.0/etc/alternc/templates/bind/templates/slave.template -text +stable-1.0/etc/alternc/templates/bind/templates/zone.template -text +stable-1.0/etc/alternc/templates/courier/authdaemonrc -text +stable-1.0/etc/alternc/templates/courier/authmysqlrc -text +stable-1.0/etc/alternc/templates/default/saslauthd -text +stable-1.0/etc/alternc/templates/dovecot/dovecot-sql.conf -text +stable-1.0/etc/alternc/templates/dovecot/dovecot.conf -text +stable-1.0/etc/alternc/templates/postfix/ca.der -text +stable-1.0/etc/alternc/templates/postfix/myalias.cf -text +stable-1.0/etc/alternc/templates/postfix/mydomain.cf -text +stable-1.0/etc/alternc/templates/postfix/mygid.cf -text +stable-1.0/etc/alternc/templates/postfix/myrelay.cf -text +stable-1.0/etc/alternc/templates/postfix/myvirtual.cf -text +stable-1.0/etc/alternc/templates/postfix/sasl/smtpd.conf -text +stable-1.0/etc/alternc/templates/proftpd/modules.conf -text +stable-1.0/etc/alternc/templates/proftpd/proftpd.conf -text +stable-1.0/etc/alternc/templates/proftpd/welcome.msg -text +stable-1.0/etc/alternc/templates/squirrelmail/apache.conf -text +stable-1.0/install/alternc.install -text +stable-1.0/install/body_checks -text +stable-1.0/install/domaines.template -text +stable-1.0/install/dopo.sh -text +stable-1.0/install/header_checks -text +stable-1.0/install/mysql.sh -text +stable-1.0/install/mysql.sql -text +stable-1.0/install/newone.php -text +stable-1.0/install/reset_root.php -text +stable-1.0/install/upgrade_check.sh -text +stable-1.0/install/upgrades/0.9.1.sql -text +stable-1.0/install/upgrades/0.9.10.sql -text +stable-1.0/install/upgrades/0.9.1_migrationldap.php -text +stable-1.0/install/upgrades/0.9.2.php -text +stable-1.0/install/upgrades/0.9.2.sql -text +stable-1.0/install/upgrades/0.9.3.1.sql -text +stable-1.0/install/upgrades/0.9.3.sql -text +stable-1.0/install/upgrades/0.9.4.sql -text +stable-1.0/install/upgrades/0.9.5.sh -text +stable-1.0/install/upgrades/0.9.5.sql -text +stable-1.0/install/upgrades/0.9.6.sql -text +stable-1.0/install/upgrades/0.9.7.sql -text +stable-1.0/install/upgrades/0.9.9.sql -text +stable-1.0/install/upgrades/1.0.sql -text +stable-1.0/install/upgrades/README -text +stable-1.0/man/alternc-admintools.8 -text +stable-1.0/man/alternc-admintools.fr.8 -text +stable-1.0/man/alternc.install.8 -text +stable-1.0/man/alternc.install.fr.8 -text +stable-1.0/man/get_account_by_domain.8 -text +stable-1.0/man/get_domains_by_account.8 -text +stable-1.0/man/top_ftp_users.8 -text +stable-1.0/man/top_ftp_users.fr.8 -text +stable-1.0/man/top_http_users.8 -text +stable-1.0/man/top_http_users.fr.8 -text +stable-1.0/man/top_mysql_users.8 -text +stable-1.0/man/top_mysql_users.fr.8 -text +stable-1.0/nightlybuild/HEADER.html -text +stable-1.0/nightlybuild/README.html -text +stable-1.0/nightlybuild/READMEFIRST -text +stable-1.0/nightlybuild/build.sh -text +stable-1.0/nightlybuild/nightly.key -text +stable-1.0/po/alternc-admintools.pot -text +stable-1.0/po/fr/LC_MESSAGES/.svnignore -text +stable-1.0/po/fr/LC_MESSAGES/alternc-admintools.po -text +stable-1.0/quota_delete -text +stable-1.0/quota_init -text +stable-1.0/src/Makefile -text +stable-1.0/src/alternc-check -text +stable-1.0/src/alternc-dboptimize -text +stable-1.0/src/alternc-passwd -text +stable-1.0/src/alternc_reload -text +stable-1.0/src/du.pl -text +stable-1.0/src/fixperms.sh -text +stable-1.0/src/functions.sh -text +stable-1.0/src/functions_dns.sh -text +stable-1.0/src/functions_hosting.sh -text +stable-1.0/src/mail_add -text +stable-1.0/src/mail_del -text +stable-1.0/src/mem_add -text +stable-1.0/src/mem_del -text +stable-1.0/src/quota_delete -text +stable-1.0/src/quota_edit -text +stable-1.0/src/quota_edit.sh -text +stable-1.0/src/quota_get -text +stable-1.0/src/quota_get.sh -text +stable-1.0/src/quota_init -text +stable-1.0/src/rawstat.daily -text +stable-1.0/src/sendmail -text +stable-1.0/src/slave_dns -text +stable-1.0/src/spoolsize.php -text +stable-1.0/src/sqlbackup.sh -text +stable-1.0/src/update_domains.sh -text +stable-1.0/tests/mechdump.pm -text +stable-1.0/tests/test_demo.pl -text +stable-1.0/tests/whois_test.php -text +stable-1.0/tools/alternc_get_path -text +stable-1.0/tools/get_account_by_domain -text +stable-1.0/tools/get_domains_by_account -text +stable-1.0/tools/top_ftp_users -text +stable-1.0/tools/top_http_users -text +stable-1.0/tools/top_mysql_users -text tests/mechdump.pm -text tests/test_demo.pl -text tests/whois_test.php -text diff --git a/.gitignore b/.gitignore index ca46492a..49d0b309 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,15 @@ debian/alternc.postrm.debhelper debian/alternc.substvars debian/files po/fr/LC_MESSAGES/alternc-admintools.mo +stable-1.0/build-stamp +stable-1.0/debian/.svnignore +stable-1.0/debian/alternc +stable-1.0/debian/alternc-slave +stable-1.0/debian/alternc-slave.debhelper.log +stable-1.0/debian/alternc-slave.postrm.debhelper +stable-1.0/debian/alternc-slave.substvars +stable-1.0/debian/alternc.debhelper.log +stable-1.0/debian/alternc.postrm.debhelper +stable-1.0/debian/alternc.substvars +stable-1.0/debian/files +stable-1.0/po/fr/LC_MESSAGES/alternc-admintools.mo diff --git a/stable-1.0/.svnignore b/stable-1.0/.svnignore new file mode 100644 index 00000000..cca789ea --- /dev/null +++ b/stable-1.0/.svnignore @@ -0,0 +1 @@ +build-stamp \ No newline at end of file diff --git a/stable-1.0/COPYING b/stable-1.0/COPYING new file mode 100644 index 00000000..d60c31a9 --- /dev/null +++ b/stable-1.0/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/stable-1.0/README.en b/stable-1.0/README.en new file mode 100644 index 00000000..0d2c053c --- /dev/null +++ b/stable-1.0/README.en @@ -0,0 +1,46 @@ +AlternC: Hosting software suite +================================================= + +Introduction +------------ + +AlternC is a software suite helping system administrators in handling +Web Services management. It should be easy to install, based only on +OpenSource softwares. AlternC is GPL licensed. + +This software consist of an automatic install and configuration system, +a web control panel to manage hosted users and their web services such +as domains, email accounts, ftp accounts, web statistics ... + +Technically, AlternC is based on Debian GNU/Linux distribution, 'Sarge' +version, and it depends on other softwares such as Apache, Postfix, +Mailman ... It also contains an API documentation so that users can +easily customize their web desktop. + +This project native tongue is French. However, the packages are +available at least in French and English. They may also be available in +other languages (Some Spanish or German translation is in the pipe...) +depending on YOUR help on this part of the project. +Some part of the documentation are only available in french for now, but +will certainly be translated in a near future. + +AlternC was initially developped by system administrators at Lautre.Net, +then other guys came and helped us, such as Globenet, Netaktiv, +Neuronnexion or Koumbit. + +Install +------------ + +For now, AlternC can be installed as a Debian package. This package +depends on other softs used by AlternC. Just add those lines to your +/etc/apt/sources.list file : + + deb http://debian.alternc.org debian/ + deb-src http://debian.alternc.org debian/ + +then apt-get install alternc + +You may download and install additionnal plugins after installing AlternC. +Let's go to the developper page for more information. + + https://alternc.org/ diff --git a/stable-1.0/README.fr b/stable-1.0/README.fr new file mode 100644 index 00000000..745b454e --- /dev/null +++ b/stable-1.0/README.fr @@ -0,0 +1,53 @@ +AlternC: Architecture pour serveurs d'hébergement +================================================= + +Introduction +------------ + +AlternC est un ensemble de logiciels d'hébergement facile à utiliser, +facile à installer, basé uniquement sur des logiciels OpenSource, +AlternC étant sous licence GPL. + +Ce logiciel contient un système d'installation et de configuration +automatique, ainsi qu'un panneau de contrôle accessible par le web, pour +la gestion des utilisateurs et des services web (domaines, mails, +comptes ftp, statistiques ...) + +Techniquement, AlternC se base sur la distribution Debian GNU/Linux +'Sarge', et utilise d'autres logiciels tels Apache, Postfix, Mailman ... +Il contient aussi une documentation d'API, permettant une +personnalisation facile et rapide du bureau, le 'panneau de contrôle +web' d'AlternC. + +La langue natale de ce projet est le Français. Cependant, le paquet +debian contient le bureau en Français, Anglais, Espagnol. +Les traductions dans +d'autres langues auront lieu si vous nous y aidez. La documentation +n'est actuellement disponible qu'en Français, mais une traduction +multilingue devrait arriver un jour ... + +AlternC est développé par les administrateurs système de l'Autre Net, +les membres de l'Autre Net, ainsi que d'autres structures / développeurs +parmis lesquels Globenet, Neuronnexion ou Koumbit. + +Installation +------------ + +Pour l'instant, AlternC doit être installé en package Debian. Ceci prend +soin d'installer AlternC lui-même est toutes ses dépendances. Pour +télécharger les packages Debian d'alternc, veuillez insérer les linges +suivantes dans votre fichier /etc/apt/sources.list + + deb http://debian.alternc.org debian/ + deb-src http://debian.alternc.org debian/ + +lancez ensuite + aptitude update + aptitude install alternc + +Note: vous pouvez aussi installer les modules additionnels d'AlternC par +la suite. Pour plus d'information, rendez-vous sur le serveur de +développement à l'adresse : + + https://alternc.org/ + diff --git a/stable-1.0/aide/bin/build.sh b/stable-1.0/aide/bin/build.sh new file mode 100755 index 00000000..5e9730e4 --- /dev/null +++ b/stable-1.0/aide/bin/build.sh @@ -0,0 +1,20 @@ +#!/bin/sh + +# $Id: build.sh,v 1.1.1.1 2003/03/26 17:41:29 root Exp $ + +cd /data/bureau/admin/aide/ +# BUILD HTML +rm -rf html +mkdir html +docbook2html --dsl /data/bureau/admin/aide/bin/frames.dsl -o html index.sgml +rsync files/ html/files/ -a +rsync inline/ html/ -a +cd .. + +# Construction du fichier langue : +# fr_FR : +cd /data/bureau/admin/locale/fr_FR/LC_MESSAGES +msgfmt -o alternc.mo alternc.po +cd /data/bureau/admin/locale/en_US/LC_MESSAGES +msgfmt -o alternc.mo alternc.po + diff --git a/stable-1.0/aide/bin/frames.dsl b/stable-1.0/aide/bin/frames.dsl new file mode 100644 index 00000000..34de737f --- /dev/null +++ b/stable-1.0/aide/bin/frames.dsl @@ -0,0 +1,144 @@ + +]> + + + + + +(define %stylesheet-version% + "DocBook HTML Frames Stylesheet version 2.0") + + +(define %stylesheet% "docbook.css"); + + + +(root + (make sequence + (process-children) + (with-mode manifest + (process-children)) + (make-dhtml-toc))) + + + +(define (make-dhtml-toc) + (make entity + system-id: "toc.htm" + (make element gi: "HTML" + (make element gi: "HEAD" + (make element gi: "TITLE" (literal "DocBook TOC")) + ($standard-html-header$)) + (make element gi: "BODY" + (with-mode dhtmltoc + (process-children)) + ))) + ) + + + + + + + +(define (dhtml-toc-entry nd gilist) + (let* + + ( + (subdivnodes (node-list-filter-by-gi (children nd) gilist)) + (subdivs (and (> (node-list-length subdivnodes) 0) (not (node-list=? nd (sgml-root-element))) ) ) + + ) + + + (if (node-list=? nd (sgml-root-element)) + ; SEQUENCE 1 : ROOT element + (make sequence + (make element gi: "NOBR" + (make element gi: "A" + attributes: (list (list "HREF" (href-to (current-node))) + (list "TARGET" "right") + ) + (element-title-sosofo (current-node)) + ) + (make empty-element gi: "BR") + (make element gi: "UL" + attributes: (list (list "CLASS" "TOC")) + (process-children)) + ) + ) + ; SEQUENCE 2 : Children elements + (make sequence + (make empty-element gi: "LI") + (make element gi: "NOBR" + (make element gi: "A" + attributes: (list (list "HREF" (href-to (current-node))) + (list "TARGET" "right") + ) + (element-title-sosofo (current-node)) + )) + ; DIV ENFANT : + (make element gi: "UL" + attributes: (list (list "CLASS" "TOC2")) + (process-children)) + + ) ; sequence + ) ; if node-list ... + + )) + + + + + + + + + + +(mode dhtmltoc + (default (empty-sosofo)) + + (element set (dhtml-toc-entry (current-node) + (list (normalize "book")))) + + (element book (dhtml-toc-entry (current-node) + (list (normalize "part") + (normalize "preface") + (normalize "chapter") + (normalize "appendix") + (normalize "reference")))) + + (element preface (dhtml-toc-entry (current-node) + (list (normalize "sect1")))) + + (element part (dhtml-toc-entry (current-node) + (list (normalize "preface") + (normalize "chapter") + (normalize "appendix") + (normalize "reference")))) + + (element chapter (dhtml-toc-entry (current-node) + (list (normalize "sect1")))) + + (element appendix (dhtml-toc-entry (current-node) + (list (normalize "sect1")))) + + (element sect1 (dhtml-toc-entry (current-node) '())) + + (element reference (dhtml-toc-entry (current-node) + (list (normalize "refentry")))) + + (element refentry (dhtml-toc-entry (current-node) '())) + + ) + + + + + + + + + diff --git a/stable-1.0/aide/brouteur.sgml b/stable-1.0/aide/brouteur.sgml new file mode 100644 index 00000000..ecccc5e7 --- /dev/null +++ b/stable-1.0/aide/brouteur.sgml @@ -0,0 +1,65 @@ +Le gestionnaire de fichiers + +Introduction / Description + + +Sur AlternC, vous disposez d'un espace disque personnel sur lequel vous pouvez installer vos +domaines, sous-domaines, comptes ftp, statistiques web etc. Cet espace est en fait un dossier +sur le serveur, dans lequel vous pouvez stocker des fichiers, mais aussi des sous-dossiers, +afin d'organiser au mieux votre espace disponible. + + +Afin de pouvoir modifier facilement vos fichiers, vous pouvez utiliser le FTP, en créant un +compte sur votre bureau virtuel. Plus d'info sur le FTP dans la section FTP de l'Aide.. +Vous pouvez aussi utiliser le gestionnaire de fichier pour gérer vos fichiers directement depuis le +bureau virtuel. Pour cela, dans le menu principal, cliquez sur "Gestionnaire de fichiers" + + + +Le gestionnaire de fichier permet de gérer l'ensemble de vos fichiers, à savoir : + + Créer Supprimer et Renommer des fichiers + Créer Supprimer et Renommer des dossiers / Sous-dossiers + Editer les fichiers présents dans le compte (fichiers textes, html ...) + Visualiser les fichiers du compte (html, images, document ...) + Télécharger l'ensemble de votre compte dans un fichier compressé (plusieurs formats supportés) + Accéder aux autres fonctions du bureau, tels la création de comptes FTP ou la protection de + dossier par nom d'utilisateur et mot de passe. + + + + + + +Paramètres du gestionnaire de fichiers + + +Vous pouvez régler les préférences du gestionnaire de fichier en cliquant sur "Régler mes préférences" +en bas du gestionnaire. + +Les éléments ci-dessous peuvent être réglés : + +Type d'affichage du gestionnaire (1 colonne de fichiers, 2 colonnes, 3 colonnes) +L'affichage ou pas des icones des fichiers +L'affichage ou pas des types des fichiers (image jpeg, page html, ...) +Le format de compression utilisé pour téléchargé tout le site au format compressé. (zip, tgz, tar.z, tar.bz2 supportés) +La largeur et la hauteur de la fenêtre de l'éditeur de fichiers. +Si vous préférer aller à l'éditeur de fichiers ou au gestionnaire après la création d'un nouveau fichier. + + + + + + + + + + + + + + + + + + diff --git a/stable-1.0/aide/domain.sgml b/stable-1.0/aide/domain.sgml new file mode 100644 index 00000000..39d0eb93 --- /dev/null +++ b/stable-1.0/aide/domain.sgml @@ -0,0 +1,69 @@ +Les Noms de Domaines + +Introduction / Installation d'un nouveau domaine + + +AlternC propose de l'hébergement de noms de domaine personnels sur votre compte. +Un nom de domaine est toujours de la forme quelquechose.tld. Exemple : virtuel.org, masociete.com etc. + + +Un nom de domaine, pour être hébergé chez un hébergeur de site, doit être proprement installé. Pour cela, il faut procéder par étape : + + Acheter le nom de domaine voulu chez un registrar. + Exemple de registrar + On peut acheter par exemple un domaine en .fr auprès d'un partenaire de l'AFNIC, + ou un .com .org .net auprès de Gandi + + + Lors de l'achat du nom de domaine, préciser le nom des serveurs DNS d'AlternC au registrar. + Exemple de DNS + Chaque hébergeur dispose d'au moins 2 serveurs DNS. Votre hébergeur vous donnera les noms et adresse Internet des siens. + Exemple : ns1.alternc.net (80.67.172.5) et ns2.alternc.net (80.67.172.9) + + Installer le domaine sur AlternC. + Une fois acheté et ses DNS corrects, le domaine peut être installé sur + AlternC. Pour cela, cliquez sur le lien "Ajouter un domaine" dans le bureau virtuel. + + + + + + + +Configuration d'un domaine / sous-domaine + + +Lorsque vous avez installé un domaine sur AlternC, vous pouvez choisir dans quel dossier +de votre espace disque vous souhaitez connecter ce domaine, ou tout sous-domaine associé. +Pour cela, Cliquez sur le domaine dans le menu de gauche. Cela affiche l'ensemble des +sous-domaines installé. Vous pouvez ensuite modifier l'emplacement de ces sous-domaines, +ou en créer de nouveaux. + + + +Par défaut, les sous-domaines suivants sont installés : (exemple pour virtuel.org) + + virtuel.org Ce sous-domaine est en fait le domaine + lui-même. Vous pouvez choisir comment vous voulez rediriger le domaine lui-même. + Le plus simple est de le rediriger vers l'URL http://www.virtuel.org ou vers + le même dossier que www.virtuel.org + www.virtuel.org Ce sosu-domaine correspond à l'adresse + qu'utiliseront la plupart des internautes, l'adresse www de votre site web. Vous pouvez donc + l'héberger sur un dossier local. Par défaut, c'est la racine (nommé /) de votre espace + disque qui recoit ce domaine. + mail.virtuel.org Ce sous-domaine particulier recoit le webmail + de votre domaine. Vous pouvez donc accéder à votre mail par l'adresse http://mail.virtuel.org + Si vous souhaitez connecter le webmail sur un autre nom, détruisez ce sous-domaine et recréez-en un + en lui affectant le type "webmail". + + admin.virtuel.org Ce sous-domaine particulier recoit l'interface + du bureau virtuel. Ainsi, vous pouvez administrer votre domaine directement depuis le domaine lui-même. + Si vous souhaitez connecter le bureau d'administration sur un autre nom, détruisez ce sous-domaine et recréez-en un + en lui affectant le type "bureau virtuel". + + + + + + + diff --git a/stable-1.0/aide/ftp.sgml b/stable-1.0/aide/ftp.sgml new file mode 100644 index 00000000..33d67887 --- /dev/null +++ b/stable-1.0/aide/ftp.sgml @@ -0,0 +1,37 @@ +Comptes FTP + + Introduction + + +Le FTP est un moyen pratique de pouvoir échanger des fichiers entre un serveur et une +machine connectée à Internet. Pour cela, il faut disposer d'un compte FTP sur le serveur, +constitué d'un nom d'utilisateur et d'un mot de passe. + + + +Sur AlternC, vous pouvez créer des comptes FTP, en précisant le nom d'utilisateur, le mot de passe, +et le dossier dans lequel sera connecté ce compte FTP. Ainsi, chaque compte pourra accéder à son dossier +et ses sous-dossiers, en lecture et en écriture. + + + +Par exemple, si vous disposez des dossiers suivants dans votre compte : + +Vous pouvez créer, par exemple, un compte ftp pour philippe, que vous hébergez sur +http://virtuel.org/philippe/ +Pour cela, il suffit de cliquer sur "Comptes FTP" puis "Créer un compte FTP" et enfin, +entrez les paramètres de connexion, à savoir, un nom d'utilisateur, un mot de passe, et un répertoire. + + + +Philippe peut donc modifier les fichiers de son dossier en utilisant les paramètres suivants : + +Serveur ftp : "virtuel.org" +Nom d'utilisateur : "virtuel.org_philippe" +Mot de passe : "philpas" + + + + + + diff --git a/stable-1.0/aide/index.sgml b/stable-1.0/aide/index.sgml new file mode 100644 index 00000000..ee821a15 --- /dev/null +++ b/stable-1.0/aide/index.sgml @@ -0,0 +1,42 @@ + + + + + + + +]> + + +AlternC, Documentation Utilisateur + + + + AlternC Development Team +
tech@alternc.org
+
+
+ +2002-06-11 +0.1 + + +Bienvenue dans l'aide en ligne d'AlternC. + + + +AlternC +Hébergement + +
+ +&chap1; + +&hlpdomain; +&hlpftp; +&hlpbrouteur; +&hlpstats; + +
diff --git a/stable-1.0/aide/sommaire.sgml b/stable-1.0/aide/sommaire.sgml new file mode 100644 index 00000000..ab446e5a --- /dev/null +++ b/stable-1.0/aide/sommaire.sgml @@ -0,0 +1,24 @@ +Introduction + + Introduction à AlternC + +AlternC est un logiciel de gestion d'hébergeur de sites Internet, d'emails, de +noms de domaines et de tout service web disponible pour le public. Ce +logiciel utilise des programmes comme apache pour serveur web ou postfix +pour le courrier électronique. Il fournit une suite logicielle écrite en php4 +qui permet de gérer intégralement un serveur depuis une interface web, +et permet d'allouer à chaque utilisateur un certain nombre de ressources +sur le serveur. + + + +Fonctionnement de l'aide en ligne + +Cette aide en ligne est accessible par le lien "aide en ligne" du bureau virtuel. +vous pouvez aussi cliquer sur les "?" situés dans le bureau virtuel pour avoir +une aide contextuelle sur la page en cours. + + + + + diff --git a/stable-1.0/aide/stats.sgml b/stable-1.0/aide/stats.sgml new file mode 100644 index 00000000..5a8bc3f9 --- /dev/null +++ b/stable-1.0/aide/stats.sgml @@ -0,0 +1,37 @@ +Les statistiques Web. + +Introduction / Mode d'emploi + + +Sur AlternC, vous pouvez héberger des domaines / sous-domaines, sur lesquels vous hébergez un ou +plusieurs sites web. Maintenant que votre site est en marche, vous souhaitez savoir qui va voir votre +site, d'où ils viennent, quelles pages sont les plus vues etc. Pour cela, vous pouvez utiliser l'outil +de génération de statistiques web. + + +Ce menu vous permet de demander la génération quotidienne de pages html dans un dossier de votre espace disque. +Pour créer un jeu de statistiques associé à votre site web, cliquez sur "Statistiques web" puis sur +"Créer un jeu de statistiques". + +Ensuite, choisissez dans la liste le nom de domaine dont vous souhaitez obtenir des statistiques, +Choisissez la langue dans laquelle vous souhaitez que ces statistiques soit générées. +Enfin, Entrez le nom du dossier dans lequel vous voulez voir apparaitre les pages HTML de statistiques. + + +Notez qu'il faut attendre le lendemain pour voir apparaitre comme par magie les premiers +fichiers de statistique dans le dossier désigné. En effet, ceux-ci sont générés tous les matins. + + +Dès le lendemain, vous pourrez aller sur la page web du dossier contenant vos statistiques pour y retrouver +les pages générées: + +Une page index, contenant un résumé des visites par mois, ainsi qu'un graphique le représentant, +ainsi qu'une page par mois, détaillant les visites, les mots-clés utilisés sur les moteurs de recherche, +les liens vers le site etc. + + + + + + + diff --git a/stable-1.0/aide/test.sgml b/stable-1.0/aide/test.sgml new file mode 100644 index 00000000..46ee8c3d --- /dev/null +++ b/stable-1.0/aide/test.sgml @@ -0,0 +1,16 @@ +Coucou + + le Coucou premier + +Juste histoire de tester les manipulations à effectuer pour créer un fichier d'aide + + + +le coucou en second + +A voir donc + + + + + diff --git a/stable-1.0/bureau/admin/adm_add.php b/stable-1.0/bureau/admin/adm_add.php new file mode 100644 index 00000000..2bf2dd97 --- /dev/null +++ b/stable-1.0/bureau/admin/adm_add.php @@ -0,0 +1,131 @@ +enabled) { + __("This page is restricted to authorized staff"); + exit(); +} + +$fields = array ( + "canpass" => array ("request", "integer", 1), +); +getFields($fields); + +?> +

+
+
+$error

"; +} +?> +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +enum_domains()) { ?> + + + + + +
+ +
+ >
+ >
+
 / 
+
+ /> + + login. +
+ " /> + " onclick="document.location='adm_list.php'" /> +
+
+ + + diff --git a/stable-1.0/bureau/admin/adm_cancel.php b/stable-1.0/bureau/admin/adm_cancel.php new file mode 100644 index 00000000..ca3ec31f --- /dev/null +++ b/stable-1.0/bureau/admin/adm_cancel.php @@ -0,0 +1,35 @@ +enabled || !$admin->checkcreator($uid)) { + __("This page is restricted to authorized staff"); + include_once("foot.php"); + exit(); +} + +if (!$r=$admin->get($uid)) { + __("User does not exist"); + include_once("foot.php"); + exit(); +} + +if (! ($confirmed = ($_GET['submit'] == _("Confirm")) ) ) { + print '

' . _('WARNING: experimental feature, use at your own risk') . '

'; + __("The following domains will be deactivated and redirected to the URL entered in the following box. A backup of the domain configuration will be displayed as a serie of SQL request that you can run to restore the current configuration if you want. Click confirm if you are sure you want to deactivate all this user's domains."); + + ?> +
+ + + " /> + " onclick="document.location='adm_list.php'"/> +
" . _("Domains of user: ") . $r["login"] . ""; +} else { + if (!$_GET['redirect']) { + __("Missing redirect url."); + include_once("foot.php"); + exit(); + } else { + $redirect = $_GET['redirect']; + } +} + +# this string will contain an SQL request that will be printed at the end of the process and that can be used to reload the old domain configuration +$backup = ""; + +# 1. list the domains of the user +# 1.1 list the domains +global $cuid; +$old_cuid = $cuid; +$cuid = $uid; +$domains = $dom->enum_domains(); + +if ($confirmed) { + print "
";
+  printf(_("-- Redirecting all domains and subdomains of the user %s to %s\n"), $r['login'], $redirect);
+}
+
+reset($domains);
+# 1.2 foreach domain, list the subdomains
+foreach ($domains as $key => $domain) {
+  if (!$confirmed) print '

' . $domain . '

    '; + $dom->lock(); + if (!$r=$dom->get_domain_all($domain)) { + $error=$err->errstr(); + } + $dom->unlock(); + # 2. for each subdomain + if (is_array($r['sub'])) { + foreach ($r['sub'] as $k => $sub) { +# shortcuts + $type = $sub['type']; + $dest = $sub['dest']; + $sub = $sub['name']; +# if it's a real website + if ($type == $dom->type_local) { + if (!$confirmed) { + print "
  • "; + if ($sub) { + print $sub . '.'; + } + print "$domain -> $dest
  • "; + } else { + +# 2.1 keep a copy of where it was, in an SQL request + $backup .= "UPDATE `sub_domaines` SET `type`='$type', valeur='$dest',web_action='UPDATE' WHERE `domaine`='$domain' AND sub='$sub';\n"; + +# 2.2 change the subdomain to redirect to http://spam.koumbit.org/ + $dom->lock(); + if (!$dom->set_sub_domain($domain, $sub, $dom->type_url, "edit", $redirect)) { + print "-- error in $sub.$domain: " . $err->errstr() . "\n"; + } + $dom->unlock(); + } + } + } + } + if (!$confirmed) print '
'; +} + +# 3. wrap up (?) +if ($confirmed) { + print "-- The following is a serie of SQL request you can run, as root, to revert the user's domains to their previous state.\n"; + print $backup; + print "
"; +} +$cuid = $old_cuid; + +include_once("foot.php"); + +?> + diff --git a/stable-1.0/bureau/admin/adm_defquotas.php b/stable-1.0/bureau/admin/adm_defquotas.php new file mode 100644 index 00000000..20a5e8cc --- /dev/null +++ b/stable-1.0/bureau/admin/adm_defquotas.php @@ -0,0 +1,112 @@ +enabled) { + __("This page is restricted to authorized staff"); + exit(); +} + +include_once ("head.php"); + +?> +

+
+
+$error

"; + } + +?> +
+

+ + +" /> +

+
+ +
+

+ + +" /> +

+
+ +

+ +

+ +
+
+ +qlist(); +$qlist=$quota->getdefaults(); +reset($qlist); +foreach($qlist as $type => $q) { +?> +
+

+ + + $value) { + $key = $type . ":" . $name; + $col=3-$col; +?> + + + + + +
+
+ +" /> +
+
+ diff --git a/stable-1.0/bureau/admin/adm_del.php b/stable-1.0/bureau/admin/adm_del.php new file mode 100644 index 00000000..47ac1c8e --- /dev/null +++ b/stable-1.0/bureau/admin/adm_del.php @@ -0,0 +1,30 @@ + diff --git a/stable-1.0/bureau/admin/adm_dnsweberror.php b/stable-1.0/bureau/admin/adm_dnsweberror.php new file mode 100644 index 00000000..ee3067a6 --- /dev/null +++ b/stable-1.0/bureau/admin/adm_dnsweberror.php @@ -0,0 +1,109 @@ +enabled) { + __("This page is restricted to authorized staff"); + exit(); +} + +include_once("head.php"); + +?> +

+
+
+$error

"; + } + +?> +

+

+

+ + + + + + + + + + + +query("select sd.compte, m.login, sd.domaine, if(length(sub)>0,concat_ws('.',sd.sub,sd.domaine),sd.domaine) as fqdn, sd.valeur, dt.description, sd.web_result from sub_domaines sd,membres m, domaines_type dt where sd.web_action='OK' and length(sd.web_result)<>0 and upper(dt.name)=upper(sd.type) order by sd.domaine, sd.sub, sd.valeur;"); + +while($db->next_record()) { +++$pair; +print_r($d); +?> + + + + + + + + + + +
f('compte');?>f('login');?> f('domaine');?> f('fqdn');?>f('valeur');?>f('description');?>f('web_result');?>
+
+ +

+ + + + + + + + +query("select d.compte, m.login, d.domaine, d.dns_result from domaines d, membres m where d.dns_action='OK' and dns_result <> 0 and dns_result <> '' and m.uid = d.compte;"); + +while($db->next_record()) { +++$pair; +print_r($d); +?> + + + + + + + + + diff --git a/stable-1.0/bureau/admin/adm_doadd.php b/stable-1.0/bureau/admin/adm_doadd.php new file mode 100644 index 00000000..83d7acce --- /dev/null +++ b/stable-1.0/bureau/admin/adm_doadd.php @@ -0,0 +1,76 @@ +enabled) { + __("This page is restricted to authorized staff"); + exit; +} + +if ($pass != $passconf) { + $error = _("Passwords do not match"); + include("adm_add.php"); + exit(); +} +if (!($u=$admin->add_mem($login, $pass, $nom, $prenom, $nmail, $canpass, $type, 0, $notes))) { + $error=$err->errstr(); + include ("adm_add.php"); + exit; +} else { + + // Add here all what you want when an account is created ! + $mem->su($u); + + /* + * 1 = hébergement dns, en effet, les + * domaines *.koumbit.net ne sont pas forcément sur le serveur + * + * 1 = noerase = empêche à l'utilisateur de modifier le dns ou de + * supprimer le domaine + * + * 1 = force = ne tient pas compte du whois ou des droits de tld + */ + if (($create_dom == 1) && !is_null($create_dom_list)) { + // make sure we don't have multiple dots there + $dom->lock(); + $dom->add_domain($login.".".preg_replace("/^\.\.*/", "", $create_dom_list),1,1,1); + $dom->unlock(); + } + $ftp->add_ftp($login,"",$pass,"/"); + $mem->unsu(); + + $error=_("The new member has been successfully created"); + + include("adm_list.php"); + exit; +} +?> diff --git a/stable-1.0/bureau/admin/adm_dodefquotas.php b/stable-1.0/bureau/admin/adm_dodefquotas.php new file mode 100644 index 00000000..3ef666b3 --- /dev/null +++ b/stable-1.0/bureau/admin/adm_dodefquotas.php @@ -0,0 +1,98 @@ +enabled) { + __("This page is restricted to authorized staff"); + exit(); +} + +if($_POST["action"] == "add") { + $type = $_POST['type']; + + if($quota->addtype($type)) { + $error=_("Account type"). " \"$type\" "._("added"); + } else { + $error=_("Account type"). " \"$type\" "._("could not be added"); + } + include("adm_defquotas.php"); +} else if($_POST["action"] == "delete") { + if($_POST["del_confirm"] == "y"){ + if($_POST['type']) { + if($quota->deltype($_POST['type'])) { + $error=_("Account type"). " \"$type\" "._("deleted"); + } else { + $error=_("Account type"). " \"$type\" "._("could not be deleted"); + } + } + include("adm_defquotas.php"); + }else{ + include("head.php"); + ?> + + +

:

+ + + + " /> + +

+

+
+ " />   + " onclick="document.location='adm_defquotas.php';" /> +
+ + + + $val) { + if($key == "action") + continue; + + list($type, $q) = explode(":", $key, 2); + $c[$type][$q] = abs(floatval($val)); + } + + if($quota->setdefaults($c)) { + $error=_("Default quotas successfully changed"); + } else { + $error=_("Default quotas could not be set."); + } + include("adm_panel.php"); +} +?> diff --git a/stable-1.0/bureau/admin/adm_dodel.php b/stable-1.0/bureau/admin/adm_dodel.php new file mode 100644 index 00000000..b26103ca --- /dev/null +++ b/stable-1.0/bureau/admin/adm_dodel.php @@ -0,0 +1,89 @@ +enabled) { + __("This page is restricted to authorized staff"); + exit(); +} + +if($_POST["del_confirm"] == "y"){ + if (!is_array($d)) { + $d[]=$d; + } + + reset($d); + while (list($key,$val)=each($d)) { + if (!$admin->checkcreator($val)) { + __("This page is restricted to authorized staff"); + exit(); + } + if (!($u=$admin->get($val)) || !$admin->del_mem($val)) { + $error.=sprintf(_("Member '%s' does not exist"),$val)."
"; + } else { + $error.=sprintf(_("Member %s successfully deleted"),$u["login"])."
"; + } + } + include("adm_list.php"); + exit(); +} else { + if (!is_array($d) || count($d)==0) { + $error=_("Please check the accounts you want to delete"); + require("adm_list.php"); + exit(); + } + include("head.php"); + ?> + + +

:

+ + + +

+

+ get($userid); + echo "".$membre['login']."
"; + } + ?> +

+
+ " />   + " onclick="document.location='adm_list.php';" /> +
+ + + + diff --git a/stable-1.0/bureau/admin/adm_doedit.php b/stable-1.0/bureau/admin/adm_doedit.php new file mode 100644 index 00000000..4182e6c1 --- /dev/null +++ b/stable-1.0/bureau/admin/adm_doedit.php @@ -0,0 +1,63 @@ +enabled) { + __("This page is restricted to authorized staff"); + exit(); +} + +$subadmin=variable_get("subadmin_restriction"); + +if ($subadmin==0 && !$admin->checkcreator($uid)) { + __("This page is restricted to authorized staff"); + exit(); +} + +if ($pass != $passconf) { + $error = _("Passwords do not match"); + include("adm_edit.php"); + exit(); +} +// When changing its own account, enabled forced to 1. +if ($uid==$mem->user["uid"]) { + $enabled=1; + } + +if (!$admin->update_mem($uid, $nmail, $nom, $prenom, $pass, $enabled, $canpass, $type, $duration, $notes)){ + $error=$err->errstr(); + include("adm_edit.php"); +} else { + $error=_("The member has been successfully edited"); + include("adm_list.php"); +} +?> diff --git a/stable-1.0/bureau/admin/adm_domlock.php b/stable-1.0/bureau/admin/adm_domlock.php new file mode 100644 index 00000000..02f8dd65 --- /dev/null +++ b/stable-1.0/bureau/admin/adm_domlock.php @@ -0,0 +1,49 @@ +enabled) { + __("This page is restricted to authorized staff"); + exit(); +} + +$fields = array ( + "domain" => array ("request", "string", ""), +); +getFields($fields); + +if (!$admin->dom_lock($domain)) { + $error=$err->errstr(); +} + +include("adm_doms.php"); +exit; + +?> \ No newline at end of file diff --git a/stable-1.0/bureau/admin/adm_doms.php b/stable-1.0/bureau/admin/adm_doms.php new file mode 100644 index 00000000..2a6ddf0f --- /dev/null +++ b/stable-1.0/bureau/admin/adm_doms.php @@ -0,0 +1,99 @@ +enabled) { + __("This page is restricted to authorized staff"); + exit(); +} + +include_once ("head.php"); + +?> +

+$error

"; + } + +// List the domains. If the first parameter is true, also check their DNS & other IPs actual parameters. +// If the second parameter is true, check the domains whatever the dis cache is. +$forcecheck=($_REQUEST["force"]!=""); +$c=$admin->dom_list(true,$forcecheck); + +?> +

+ +

+

+ +

+

+ +

+ +
f('compte');?>f('login');?> f('domaine');?> f('dns_result');?>
+ + + + + + + + + + + + + +
"; + } ?>
+checkcreator($c[$i]['uid'])) { + ?> + + +">  +
+ + diff --git a/stable-1.0/bureau/admin/adm_domstype.php b/stable-1.0/bureau/admin/adm_domstype.php new file mode 100644 index 00000000..7f47f25a --- /dev/null +++ b/stable-1.0/bureau/admin/adm_domstype.php @@ -0,0 +1,90 @@ +enabled) { + __("This page is restricted to authorized staff"); + exit(); +} + +include_once("head.php"); + +?> +

+
+

+ +
+$error

"; + } + +?> +

+ +

+

+ + + + + + + + + + + + + +domains_type_lst() as $d) { +++$pair; +?> + + + + + + + + + + + + + + + + diff --git a/stable-1.0/bureau/admin/adm_domstypedoedit.php b/stable-1.0/bureau/admin/adm_domstypedoedit.php new file mode 100644 index 00000000..2eae6e7c --- /dev/null +++ b/stable-1.0/bureau/admin/adm_domstypedoedit.php @@ -0,0 +1,17 @@ +enabled) { + __("This page is restricted to authorized staff"); + exit(); +} + + +if ( ! $dom->domains_type_update($name, $description, $target, $entry, $compatibility, $enable, $only_dns, $need_dns, $advanced) ) { + die($err->errstr()); +} else { + include("adm_domstype.php"); +} + +?> + + diff --git a/stable-1.0/bureau/admin/adm_domstypeedit.php b/stable-1.0/bureau/admin/adm_domstypeedit.php new file mode 100644 index 00000000..d0071cf1 --- /dev/null +++ b/stable-1.0/bureau/admin/adm_domstypeedit.php @@ -0,0 +1,130 @@ +enabled) { + __("This page is restricted to authorized staff"); + exit(); +} + +include_once("head.php"); + +$fields = array ( + "name" => array ("request", "string", ""), + "description" => array ("request", "string", ""), + "target" => array ("request", "string", ""), + "entry" => array ("request", "string", ""), + "compatibility" => array ("request", "string", ""), + "enable" => array ("request", "string", ""), + "only_dns" => array ("request", "boolean", ""), + "need_dns" => array ("request", "boolean", ""), + "advanced" => array ("request", "boolean", ""), +); +getFields($fields); + + +if (! $d=$dom->domains_type_get($name)) { + $error=$err->errstr(); + echo $error; +} else { +?> + +

+
+
+$error_edit

"; + $error_edit=""; + +} ?> + + + +

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +

+ +
/>
/>
/>
+ " /> + " onclick="document.location='adm_domstype.php'"/> +
+ + + + + diff --git a/stable-1.0/bureau/admin/adm_domstyperegenerate.php b/stable-1.0/bureau/admin/adm_domstyperegenerate.php new file mode 100644 index 00000000..baca9b60 --- /dev/null +++ b/stable-1.0/bureau/admin/adm_domstyperegenerate.php @@ -0,0 +1,23 @@ +enabled) { + __("This page is restricted to authorized staff"); + exit(); +} + +$fields = array ( + "name" => array ("request", "string", ""), +); +getFields($fields); + + +if (empty($name) || (! $dom->domains_type_regenerate($name)) ) { + die($err->errstr()); +} else { + $error="Regenerate pending"; + include("adm_domstype.php"); +} + +?> + + diff --git a/stable-1.0/bureau/admin/adm_donosu.php b/stable-1.0/bureau/admin/adm_donosu.php new file mode 100644 index 00000000..5c7b8791 --- /dev/null +++ b/stable-1.0/bureau/admin/adm_donosu.php @@ -0,0 +1,52 @@ +enabled) { + __("This page is restricted to authorized staff"); + exit(); +} + +$fields = array ( + "uid" => array ("request", "integer", 0), +); +getFields($fields); + +if (!$admin->su2normal($uid)) { + $error=$err->errstr(); + } else { + $error=_("This account is now a normal account"); + } + +include("adm_edit.php"); + +exit(); + +?> \ No newline at end of file diff --git a/stable-1.0/bureau/admin/adm_dorenew.php b/stable-1.0/bureau/admin/adm_dorenew.php new file mode 100644 index 00000000..e85e1b5f --- /dev/null +++ b/stable-1.0/bureau/admin/adm_dorenew.php @@ -0,0 +1,49 @@ +enabled) { + __("This page is restricted to authorized staff"); + exit(); +} +if (!$admin->checkcreator($uid)) { + __("This page is restricted to authorized staff"); + exit(); +} + +if (!$admin->renew_mem($_REQUEST['uid'], $_REQUEST['periods'])){ + $error=$err->errstr(); + include("adm_edit.php"); +} else { + $error=_("The member has been successfully renewed"); + include("adm_list.php"); +} +?> diff --git a/stable-1.0/bureau/admin/adm_dosu.php b/stable-1.0/bureau/admin/adm_dosu.php new file mode 100644 index 00000000..2357c685 --- /dev/null +++ b/stable-1.0/bureau/admin/adm_dosu.php @@ -0,0 +1,52 @@ +enabled) { + __("This page is restricted to authorized staff"); + exit(); +} + +$fields = array ( + "uid" => array ("request", "integer", 0), +); +getFields($fields); + +if (!$admin->normal2su($uid)) { + $error=$err->errstr(); + } else { + $error=_("This account is now an administrator account"); + } + +include("adm_edit.php"); + +exit(); + +?> \ No newline at end of file diff --git a/stable-1.0/bureau/admin/adm_edit.php b/stable-1.0/bureau/admin/adm_edit.php new file mode 100644 index 00000000..0a46c430 --- /dev/null +++ b/stable-1.0/bureau/admin/adm_edit.php @@ -0,0 +1,183 @@ +enabled) { + __("This page is restricted to authorized staff"); + exit(); +} + +$fields = array ( + "uid" => array ("request", "integer", 0), +); +getFields($fields); + +$subadmin=variable_get("subadmin_restriction"); + +if ($subadmin==0 && !$admin->checkcreator($uid)) { + __("This page is restricted to authorized staff"); + exit(); +} + +if (!$r=$admin->get($uid)) { + $error=$err->errstr(); +} + +?> +

+
+
+$error

"; + } +?> +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ user["uid"]) { ?> + + + >
+ >
+ +
+ >
+ >
+
" size="20" maxlength="128" /> / " size="20" maxlength="128" />
" size="30" maxlength="128" />
 
+ " /> + " onclick="document.location='adm_list.php'" /> +
+
+ + +

+

+ + + + + + + + + +
" /> +
+
+

+ + +

+user["uid"]==2000 && $r["uid"]!=2000) { // Only ADMIN (2000) can change the admin status of accounts +if ($r["su"]) { +?> +

+onesu()) { + __("There is only one administrator account, you cannot turn this account back to normal"); +} else { +?> +

">

+ +

">

+ +

+ +

get($r["creator"])) { + printf(_("Account created by %s"),$c["login"]); + } +?> +

+ + diff --git a/stable-1.0/bureau/admin/adm_list.php b/stable-1.0/bureau/admin/adm_list.php new file mode 100644 index 00000000..ee2b3f54 --- /dev/null +++ b/stable-1.0/bureau/admin/adm_list.php @@ -0,0 +1,287 @@ +enabled) { + __("This page is restricted to authorized staff"); + exit(); +} + +$fields = array ( + "show" => array ("request", "string", ""), + "creator" => array("request", "integer", 0), + "short" => array("request", "integer", -1), +); +getFields($fields); + + +if ($short!=-1) { + $mem->adminpref($short); + $mem->user["admlist"]=$short; + } + +$subadmin=variable_get("subadmin_restriction"); + +if ($subadmin==0 && $show && $cuid != 2000) +{ + __("This page is restricted to authorized staff"); + exit(); +} + + +$r=$admin->get_list($show == 'all' ? 1 : 0, $creator); + +?> +

+
+
+$error

"; + } +?> +

+ () + +  +' . _('List all AlternC accounts') . ''; + if ($subadmin!=0 || $cuid==2000) { + $list_creators = $admin->get_creator_list(); + $infos_creators = array(); + + foreach ($list_creators as $key => $val) { + $infos_creators[] = '' . $val['login'] . ''; + } + + if (count($infos_creators)) { + echo ' ('._("Or only the accounts of:")." ". implode(', ', $infos_creators) . ')'; + } + echo "

"; + } +} else { + echo '

' . _('List only my accounts') . '

'; +} ?> +

+ +"._("No account defined for now")."

"; +} else { +?> + +
+user["admlist"]==0) { // Normal (large) mode +?> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +user["admlist"]==1) { // SHORT MODE +?> + + [  ]     + [  ]     + [  ]     + +
+5) { ?> +" /> + + +   + +
 " />>"> 
renew_get_expiry($val['uid']) ?>
+
+ lst"> + "> +  +   + lst" > + "> +  + lst" > + "> +  + + lst" > + "> +  + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + +"; + +$val=$r[$z+2*$rz]; +if (is_array($val)) { +?> + + + + + + + + +"; +} // for loop +} // Short Mode + + +?> + +
+50) { ?> +" /> + + +   + +
 " /> + " target="_parent">[  ] + ">[  ] +checkcreator($val['uid'])) { ?> + ">[  ] + + "> "> + " target="_parent">[  ] + ">[  ] +checkcreator($val['uid'])) { ?> + ">[  ] + + ">
 "> + " target="_parent">[  ] + ">[  ] +checkcreator($val['uid'])) { ?> + ">[  ] + + ">
" />
+
+ + diff --git a/stable-1.0/bureau/admin/adm_login.php b/stable-1.0/bureau/admin/adm_login.php new file mode 100644 index 00000000..254abbf5 --- /dev/null +++ b/stable-1.0/bureau/admin/adm_login.php @@ -0,0 +1,122 @@ +enabled=true; + $r=$admin->get($newuid); + if ($passcheck!=md5($r["pass"])) { + $error=_("Your authentication information are incorrect"); + include("index.php"); + exit(); + } + + // Ok, so we remove the cookie : + setcookie('oldid','',0,'/'); + unset($_COOKIE['oldid']); + + // And we go back to the former administrator account : + if (!$mem->setid($newuid)) { + $error=$err->errstr(); + include("index.php"); + exit(); + } + include_once("adm_list.php"); + exit(); +} + + +// * with a user id to go to (we check the current account is admin and is allowed to connect to this account) +if (!$admin->enabled) { + __("This page is restricted to authorized staff"); + exit(); +} + +$fields = array ( + "id" => array ("request", "integer", 0), + ); +getFields($fields); + +// Depending on subadmin_restriction, a subadmin can (or cannot) connect to account he didn't create +$subadmin=variable_get("subadmin_restriction"); +if ($subadmin==0 && !$admin->checkcreator($id)) { + __("This page is restricted to authorized staff"); + exit(); +} + +if (!$r=$admin->get($id)) { + $error=$err->errstr(); +} else { + $oldid=$cuid."/".md5($mem->user["pass"]); + setcookie('oldid',$oldid,0,'/'); + $_COOKIE['oldid']=$oldid; + + if (!$mem->setid($id)) { + $error=$err->errstr(); + include("index.php"); + exit(); + } + // Now we are the other user :) + include_once("main.php"); + exit(); +} + +// If there were an error, let's show it : +include_once("head.php"); + +?> +

+$error

"; + include_once("foot.php"); + exit(); +} + + include_once("foot.php"); + +?> \ No newline at end of file diff --git a/stable-1.0/bureau/admin/adm_mxaccount.php b/stable-1.0/bureau/admin/adm_mxaccount.php new file mode 100644 index 00000000..be5e98ca --- /dev/null +++ b/stable-1.0/bureau/admin/adm_mxaccount.php @@ -0,0 +1,116 @@ +enabled) { + __("This page is restricted to authorized staff"); + exit(); +} + +$fields = array ( + "delaccount" => array ("request", "string", ""), + + "newlogin" => array ("request", "string", ""), + "newpass" => array ("request", "string", ""), +); +getFields($fields); + +if ($delaccount) { + // Delete an account + if ($mail->del_slave_account($delaccount)) { + $error=_("The requested account has been deleted. It is now denied."); + } +} +if ($newlogin) { + // Add an account + if ($mail->add_slave_account($newlogin,$newpass)) { + $error=_("The requested account address has been created. It is now allowed."); + unset($newlogin); unset($newpass); + } +} + +include_once("head.php"); +?> + + +

+
+
+$error

"; + } + +$c=$mail->enum_slave_account(); + +if (is_array($c)) { + +?> +

+ +

+ + + + + + + + + + + +
+ +

+
+ + + + + + +
+ " class="inb" /> +
+ +
+ + + diff --git a/stable-1.0/bureau/admin/adm_panel.php b/stable-1.0/bureau/admin/adm_panel.php new file mode 100644 index 00000000..f36164c2 --- /dev/null +++ b/stable-1.0/bureau/admin/adm_panel.php @@ -0,0 +1,90 @@ +enabled) { + __("This page is restricted to authorized staff"); + exit(); +} + +include_once("head.php"); + +?> +

+
+
+$error

"; + include_once("foot.php"); + exit; + } +?> +
    +
  • +
  • +
  • +
  • +
+ + +

+ +
    +
  • +
  • +
  • +
  • +
  • +
  • + +
+ +"; + include($c); + echo "\n"; + $lst=3-$lst; + } + } +} + +closedir($d); +?> + + + diff --git a/stable-1.0/bureau/admin/adm_passpolicy.php b/stable-1.0/bureau/admin/adm_passpolicy.php new file mode 100644 index 00000000..56e984d4 --- /dev/null +++ b/stable-1.0/bureau/admin/adm_passpolicy.php @@ -0,0 +1,167 @@ +enabled) { + __("This page is restricted to authorized staff"); + exit(); +} + +$fields = array ( + "edit" => array ("request", "string", ""), + + "minsize" => array ("request", "integer", "0"), + "maxsize" => array ("request", "integer", "64"), + "classcount" => array ("request", "integer", "0"), + "allowlogin" => array ("request", "integer", "0"), +); + +getFields($fields); + + +include_once("head.php"); + +?> +

+
+
+$error

"; + } + +$c=$admin->listPasswordPolicies(); +//echo "
"; print_r($c); echo "
"; + +if ($doedit) { + if (!$c[$doedit]) { + echo "

"._("Policy not found")."

"; + } else { + // Change it ;) + if ($admin->editPolicy($doedit,$minsize,$maxsize,$classcount,$allowlogin)) { + echo "

"._("Policy changed")."

"; + unset($edit); + $c=$admin->listPasswordPolicies(); + } else { + echo "

"._("Cannot edit the policy, an error occurred")."

"; + } + } +} + +if ($edit) { + if (!$c[$edit]) { + echo "

"._("Policy not found")."

"; + } else { +?> + +

+ +

+ +
+ + + + + + + + + + + +
+ />  + />  +
+

" />   +" onclick="document.location='adm_passpolicy.php'" />

+
+ +

1. Low-case letters (a-z)
2. Upper-case letters (A-Z)
3. Figures (0-9)
4. Ascii symbols (!\"#$%&'()*+,-./:;<=>?@[\\]^_`)
5. Non-Ascii symbols (accents...)"); ?>

+

+ + +

+ +

+ + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + diff --git a/stable-1.0/bureau/admin/adm_quotadoedit.php b/stable-1.0/bureau/admin/adm_quotadoedit.php new file mode 100644 index 00000000..2cf940b7 --- /dev/null +++ b/stable-1.0/bureau/admin/adm_quotadoedit.php @@ -0,0 +1,54 @@ +enabled) { + __("This page is restricted to authorized staff"); + exit(); +} + +if ($submit) { + + $mem->su($uid); + $qlist=$quota->qlist(); + reset($qlist); + + while (list($key,$val)=each($qlist)) { + $var="q_".$key; + $quota->setquota($key,$_REQUEST[$var]); + } + $mem->unsu(); + $error=_("The quotas has been successfully edited"); + include("adm_list.php"); + exit; + +} + +?> \ No newline at end of file diff --git a/stable-1.0/bureau/admin/adm_quotaedit.php b/stable-1.0/bureau/admin/adm_quotaedit.php new file mode 100644 index 00000000..50ec2986 --- /dev/null +++ b/stable-1.0/bureau/admin/adm_quotaedit.php @@ -0,0 +1,92 @@ +enabled) { + __("This page is restricted to authorized staff"); + include_once("foot.php"); + exit(); +} + +$fields = array ( + "uid" => array ("request", "integer", 0), +); +getFields($fields); + +if (!$us=$admin->get($uid)) { + $error=$err->errstr(); +} + +$mem->su($uid); +if (!$r=$quota->getquota()) { + $error=$err->errstr(); +} +$mem->unsu(); + +?> +

+
+
+$error

"; + include_once("foot.php"); + exit(); + } +?> +
+ + + +qlist(); +reset($ql); +while (list($key,$val)=each($ql)) { + echo ""; + echo ""; + echo ""; + echo ""; + echo ""; +} +?> + +
+ 
"; + if ($r[$key]["t"]==$r[$key]["u"] && $r[$key]["u"]) echo ""; + echo ""; + if ($r[$key]["t"]==$r[$key]["u"] && $r[$key]["u"]) echo ""; + echo " 
+ " /> + " onclick="document.location='adm_list.php'" /> + +
+
+ diff --git a/stable-1.0/bureau/admin/adm_slaveaccount.php b/stable-1.0/bureau/admin/adm_slaveaccount.php new file mode 100644 index 00000000..63d684cf --- /dev/null +++ b/stable-1.0/bureau/admin/adm_slaveaccount.php @@ -0,0 +1,114 @@ +enabled) { + __("This page is restricted to authorized staff"); + exit(); +} + +$fields = array ( + "delaccount" => array ("request", "string", ""), + + "newlogin" => array ("request", "string", ""), + "newpass" => array ("request", "string", ""), +); +getFields($fields); + +if ($delaccount) { + // Delete an account + if ($dom->del_slave_account($delaccount)) { + $error=_("The requested account has been deleted. It is now denied."); + } +} +if ($newlogin) { + // Add an account + if ($dom->add_slave_account($newlogin,$newpass)) { + $error=_("The requested account address has been created. It is now allowed."); + unset($newlogin); unset($newpass); + } +} + +include_once ("head.php"); + +?> +

+
+
+$error

"; + } + +$c=$dom->enum_slave_account(); + +if (is_array($c)) { + +?> +

+ +

+ + + + + + + + + + + +
+ +

+
+ + + + + + +
+ " class="inb" /> +
+ + +
+ diff --git a/stable-1.0/bureau/admin/adm_slaveip.php b/stable-1.0/bureau/admin/adm_slaveip.php new file mode 100644 index 00000000..3586422b --- /dev/null +++ b/stable-1.0/bureau/admin/adm_slaveip.php @@ -0,0 +1,112 @@ +enabled) { + __("This page is restricted to authorized staff"); + exit(); +} + +$fields = array ( + "delip" => array ("request", "string", ""), + + "newip" => array ("request", "string", ""), + "newclass" => array ("request", "string", "32"), +); +getFields($fields); + +if ($delip) { + // Delete an ip address/class + if ($dom->del_slave_ip($delip)) { + $error=_("The requested ip address has been deleted. It will be denied in one hour."); + } +} +if ($newip) { + // Add an ip address/class + if ($dom->add_slave_ip($newip,$newclass)) { + $error=_("The requested ip address has been added to the list. It will be allowed in one hour."); + unset($newip); unset($newclass); + } +} + +include_once("head.php"); + +?> +

+
+
+$error

"; + } + +$c=$dom->enum_slave_ip(); + +if (is_array($c)) { + +?> +

+ +

+ + + + + + + + + + +
+ +

+
+ + + + + + +
/
+ " class="inb" /> +
+
+ + + diff --git a/stable-1.0/bureau/admin/adm_tld.php b/stable-1.0/bureau/admin/adm_tld.php new file mode 100644 index 00000000..c47035ec --- /dev/null +++ b/stable-1.0/bureau/admin/adm_tld.php @@ -0,0 +1,88 @@ +enabled) { + __("This page is restricted to authorized staff"); + exit(); +} + +if (is_array($sel)) { + $error=""; + for($i=0;$ideltld($sel[$i])) { + $error.=_("Some TLD cannot be deleted...")." : ".$sel[$i]."
"; + } + } + if (!$error) $error=_("The requested TLD has been deleted"); +} + +include_once("head.php"); + +?> +

+
+
+$error

"; + } + +$c=$admin->listtld(); + +?> +

+ +

+

+
+ + + + + + + + + + + + +
" />tldmode[$c[$i]["mode"]]); ?>
" />
+
+ +

+ diff --git a/stable-1.0/bureau/admin/adm_tldadd.php b/stable-1.0/bureau/admin/adm_tldadd.php new file mode 100644 index 00000000..970cc424 --- /dev/null +++ b/stable-1.0/bureau/admin/adm_tldadd.php @@ -0,0 +1,74 @@ +enabled) { + __("This page is restricted to authorized staff"); + exit(); +} + +include_once ("head.php"); + +?> +

+
+
+$error

"; + } + + +?> +

+

+
+ +

+ +
+ + + + + +
+ " /> + " onclick="document.location='adm_tld.php'"/> +
+
+ + + + diff --git a/stable-1.0/bureau/admin/adm_tlddoadd.php b/stable-1.0/bureau/admin/adm_tlddoadd.php new file mode 100644 index 00000000..6c788e9d --- /dev/null +++ b/stable-1.0/bureau/admin/adm_tlddoadd.php @@ -0,0 +1,46 @@ +enabled) { + __("This page is restricted to authorized staff"); + exit(); +} + +if (!$admin->addtld($tld,$mode)) { + $error=$err->errstr(); + include("adm_tldadd.php"); + exit(); +} else { + $error=_("The TLD has been successfully added"); + include("adm_tld.php"); + exit(); +} +?> \ No newline at end of file diff --git a/stable-1.0/bureau/admin/adm_tlddoedit.php b/stable-1.0/bureau/admin/adm_tlddoedit.php new file mode 100644 index 00000000..40d504a6 --- /dev/null +++ b/stable-1.0/bureau/admin/adm_tlddoedit.php @@ -0,0 +1,46 @@ +enabled) { + __("This page is restricted to authorized staff"); + exit(); +} + +if (!$admin->edittld($tld,$mode)) { + $error=$err->errstr(); + include("adm_tldedit.php"); + exit(); +} else { + $error=_("The TLD has been successfully edited"); + include("adm_tld.php"); + exit(); +} +?> \ No newline at end of file diff --git a/stable-1.0/bureau/admin/adm_tldedit.php b/stable-1.0/bureau/admin/adm_tldedit.php new file mode 100644 index 00000000..a42314f2 --- /dev/null +++ b/stable-1.0/bureau/admin/adm_tldedit.php @@ -0,0 +1,75 @@ +enabled) { + __("This page is restricted to authorized staff"); + exit(); +} + +$fields = array ( + "tld" => array ("request", "string", ""), +); +getFields($fields); + +$mode=$admin->gettld($tld); +if ($mode===false) { + $error=$err->errstr(); + include("adm_tld.php"); + exit(); +} + +include_once("head.php"); + +?> +

+
+
+$error

"; + } +?> +

+ +
+ + + + +
+ " /> + " onclick="document.location='adm_tld.php'"/> + +
+
+ diff --git a/stable-1.0/bureau/admin/adm_variables.php b/stable-1.0/bureau/admin/adm_variables.php new file mode 100644 index 00000000..8093eb39 --- /dev/null +++ b/stable-1.0/bureau/admin/adm_variables.php @@ -0,0 +1,76 @@ +enabled) { + __("This page is restricted to authorized staff"); + exit(); +} + +$conf = variable_init(); +foreach ($conf as $name => $val) { + if (isset($$name)) { + variable_set($name, $$name); + } +} + +include_once ("head.php"); + +?> +

+
+
+ +

+ +

+ +
+ + +query("SELECT * FROM `variable` WHERE `comment` IS NOT NULL ORDER BY `name`"); + +while ($db->next_record()) { + $vars = $db->Record; + $col=3-$col; + ?> + + + + + + + +
+

" />

+
+ diff --git a/stable-1.0/bureau/admin/aide/files/browser_set.png b/stable-1.0/bureau/admin/aide/files/browser_set.png new file mode 100644 index 0000000000000000000000000000000000000000..cd274b37b45ce7f012d4380e67345a6d44bb888d GIT binary patch literal 11744 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 literal 0 HcmV?d00001 diff --git a/stable-1.0/bureau/admin/aide/files/ftp_add.png b/stable-1.0/bureau/admin/aide/files/ftp_add.png new file mode 100644 index 0000000000000000000000000000000000000000..83c8d1299300cfc63d408f89c538ac6dca156ae4 GIT binary patch literal 12528 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 literal 0 HcmV?d00001 diff --git a/stable-1.0/bureau/admin/aide/files/ftp_list.png b/stable-1.0/bureau/admin/aide/files/ftp_list.png new file mode 100644 index 0000000000000000000000000000000000000000..40aa60be4bf9302200080455904370354cce8d0d GIT binary patch literal 14214 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 iquwXY*cWqw=d}lZqTjYE58Q-cr4z% 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
    BS43${<$(sk) z^!GQ$4YReKO_9g}KV)KP2-M=eSrW_~9dQA_%YC(!zSE6G;FV|T+%(+rrOG{B$a|#W zqc!l8*TUA-wOEZcUD#vld`DAEbRH$!$&}pw<}p_q>E^y4wZWLA5GL_L$BH=P1WGhc2?l< zFCM)h#J)NVOBcRqd`BM%_2;wbZYuS?(-9Ip=jYoKwViMlsEym%Nf8pNcXVXr;u>6- zmuaYnHo5N@tUcLr50B`nMGgLNcWF#O;E(xa+uBV1W#CPvlbqZ(m_q_1!=6|=M1ktj zz1n6Cs5+AQoZ}fsF>J_}0JtrBV5&Vvx5W7N#35b*ey>?LF6YA-u&QA1xQHE80 z9i5uAx$A)ePVlwQHU~kIKf0{wg#2{xXJc*cce0wY(0Fxsdy5iOd$kHvBu5RZa$7j8 z0LL3O-$w}t2Wah;`OBABz)vB!+fbZL!1)eL#OfIsOdK(zV=Op(WrgCTi+DB2#vX!V zMa6hq8H8rS!n_E?$tZKTbPv>IG-WV)qv2{2_JdhU{NE7gzC|oH}$(X5k%Ywne zT3Sq`qzVhRp6o9^rF#nmrKIc>XRHtjVqIP1!(8#!sDB+t%RgbqaGf>@Uk_Vj!^3b591fB1s)ej$xxpca^1ol=L(wg^T~# zK_G@As1ixXiUi_wiN<8fBuh>Hd?H(R^OyC;*-un2Hcr$Vr3gd2v+=jZKLCZ#`MYiK z2=~IO?%F^7ciZXbstgfzZJ)G{#?*{EzW&#yMAS^LAVts+$>@!`w=0li+!T>t<8 literal 0 HcmV?d00001 diff --git a/stable-1.0/bureau/admin/aide/files/sta_view1.png b/stable-1.0/bureau/admin/aide/files/sta_view1.png new file mode 100644 index 0000000000000000000000000000000000000000..d3f1924621d63d8a195d0b32cb4d72e5e5ff28f8 GIT binary patch literal 47313 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 z%0D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 literal 0 HcmV?d00001 diff --git a/stable-1.0/bureau/admin/aide/help.php b/stable-1.0/bureau/admin/aide/help.php new file mode 100644 index 00000000..59f4254f --- /dev/null +++ b/stable-1.0/bureau/admin/aide/help.php @@ -0,0 +1,35 @@ +2Ax8yK_rvW{t6P0#f37YW>WxU z1|ygQeX#3bdA*{SA+nLJfoavxvCetr!EOP7!uJBYt~1lzhyj>a!WbS8_TvfGb)Au1 z?hvGuLMg?9VMzK?P-IUem(59HG9kWBpM*h%K^}rkgNTSEpC!fL<(K_j*FLPJH-ve$ zpVX<7q@G$>&n*_;ENatAY2!+1dBC|h1|4`8|7GPaz?em%n$9H@2yq-IlEs5=BeAQ&Lh9b){ny9N}!85Q$RjP)lI zcVTGnn1i-<_^M^U!FZA;QhieVTvBcL7K;%Ixj=zs~dHR+gVJUF8x_AlternC, Documentation Utilisateur

        Suivant
        Introduction
      \ No newline at end of file diff --git a/stable-1.0/bureau/admin/aide/html/c126.html b/stable-1.0/bureau/admin/aide/html/c126.html new file mode 100644 index 00000000..afaddca9 --- /dev/null +++ b/stable-1.0/bureau/admin/aide/html/c126.html @@ -0,0 +1,186 @@ +Les statistiques Web.
      AlternC, Documentation Utilisateur
      Précédent 

      Chapitre 5. Les statistiques Web.

      Introduction / Mode d'emploi

      Sur AlternC, vous pouvez héberger des domaines / sous-domaines, sur lesquels vous hébergez un ou +plusieurs sites web. Maintenant que votre site est en marche, vous souhaitez savoir qui va voir votre +site, d'où ils viennent, quelles pages sont les plus vues etc. Pour cela, vous pouvez utiliser l'outil +de génération de statistiques web.

      Ce menu vous permet de demander la génération quotidienne de pages html dans un dossier de votre espace disque. +Pour créer un jeu de statistiques associé à votre site web, cliquez sur "Statistiques web" puis sur +"Créer un jeu de statistiques". +

      +Ensuite, choisissez dans la liste le nom de domaine dont vous souhaitez obtenir des statistiques, +Choisissez la langue dans laquelle vous souhaitez que ces statistiques soit générées. +Enfin, Entrez le nom du dossier dans lequel vous voulez voir apparaitre les pages HTML de statistiques.

      Attention
      Notez qu'il faut attendre le lendemain pour voir apparaitre comme par magie les premiers +fichiers de statistique dans le dossier désigné. En effet, ceux-ci sont générés tous les matins.

      Dès le lendemain, vous pourrez aller sur la page web du dossier contenant vos statistiques pour y retrouver +les pages générées: +

      +Une page index, contenant un résumé des visites par mois, ainsi qu'un graphique le représentant, +ainsi qu'une page par mois, détaillant les visites, les mots-clés utilisés sur les moteurs de recherche, +les liens vers le site etc. +


      PrécédentSommaire 
      Paramètres du gestionnaire de fichiers  
      \ No newline at end of file diff --git a/stable-1.0/bureau/admin/aide/html/c18.html b/stable-1.0/bureau/admin/aide/html/c18.html new file mode 100644 index 00000000..483dfef1 --- /dev/null +++ b/stable-1.0/bureau/admin/aide/html/c18.html @@ -0,0 +1,171 @@ +Introduction
      AlternC, Documentation Utilisateur
      PrécédentSuivant


      PrécédentSommaireSuivant
      AlternC, Documentation Utilisateur Fonctionnement de l'aide en ligne
      \ No newline at end of file diff --git a/stable-1.0/bureau/admin/aide/html/c26.html b/stable-1.0/bureau/admin/aide/html/c26.html new file mode 100644 index 00000000..0dc4274d --- /dev/null +++ b/stable-1.0/bureau/admin/aide/html/c26.html @@ -0,0 +1,234 @@ +Les Noms de Domaines
      AlternC, Documentation Utilisateur
      PrécédentSuivant

      Chapitre 2. Les Noms de Domaines

      Introduction / Installation d'un nouveau domaine

      AlternC propose de l'hébergement de noms de domaine personnels sur votre compte. +Un nom de domaine est toujours de la forme quelquechose.tld. Exemple : virtuel.org, masociete.com etc.

      Un nom de domaine, pour être hébergé chez un hébergeur de site, doit être proprement installé. Pour cela, il faut procéder par étape : +

      1. Acheter le nom de domaine voulu chez un registrar.

      2. Lors de l'achat du nom de domaine, préciser le nom des serveurs DNS d'AlternC au registrar.

      3. Installer le domaine sur AlternC.

        Une fois acheté et ses DNS corrects, le domaine peut être installé sur + AlternC. Pour cela, cliquez sur le lien "Ajouter un domaine" dans le bureau virtuel. +


      PrécédentSommaireSuivant
      Fonctionnement de l'aide en ligne Configuration d'un domaine / sous-domaine
      \ No newline at end of file diff --git a/stable-1.0/bureau/admin/aide/html/c72.html b/stable-1.0/bureau/admin/aide/html/c72.html new file mode 100644 index 00000000..57a790c7 --- /dev/null +++ b/stable-1.0/bureau/admin/aide/html/c72.html @@ -0,0 +1,177 @@ +Comptes FTP
      AlternC, Documentation Utilisateur
      PrécédentSuivant

      Chapitre 3. Comptes FTP

      Introduction

      Le FTP est un moyen pratique de pouvoir échanger des fichiers entre un serveur et une +machine connectée à Internet. Pour cela, il faut disposer d'un compte FTP sur le serveur, +constitué d'un nom d'utilisateur et d'un mot de passe.

      Sur AlternC, vous pouvez créer des comptes FTP, en précisant le nom d'utilisateur, le mot de passe, +et le dossier dans lequel sera connecté ce compte FTP. Ainsi, chaque compte pourra accéder à son dossier +et ses sous-dossiers, en lecture et en écriture.

      Par exemple, si vous disposez des dossiers suivants dans votre compte : +

      +Vous pouvez créer, par exemple, un compte ftp pour philippe, que vous hébergez sur +http://virtuel.org/philippe/ +Pour cela, il suffit de cliquer sur "Comptes FTP" puis "Créer un compte FTP" et enfin, +entrez les paramètres de connexion, à savoir, un nom d'utilisateur, un mot de passe, et un répertoire. +

      Philippe peut donc modifier les fichiers de son dossier en utilisant les paramètres suivants : +

      Serveur ftp : "virtuel.org"
      +Nom d'utilisateur : "virtuel.org_philippe"
      +Mot de passe : "philpas"


      PrécédentSommaireSuivant
      Configuration d'un domaine / sous-domaine Le gestionnaire de fichiers
      \ No newline at end of file diff --git a/stable-1.0/bureau/admin/aide/html/c84.html b/stable-1.0/bureau/admin/aide/html/c84.html new file mode 100644 index 00000000..eb3623d6 --- /dev/null +++ b/stable-1.0/bureau/admin/aide/html/c84.html @@ -0,0 +1,206 @@ +Le gestionnaire de fichiers
      AlternC, Documentation Utilisateur
      PrécédentSuivant

      Chapitre 4. Le gestionnaire de fichiers

      Introduction / Description

      Sur AlternC, vous disposez d'un espace disque personnel sur lequel vous pouvez installer vos +domaines, sous-domaines, comptes ftp, statistiques web etc. Cet espace est en fait un dossier +sur le serveur, dans lequel vous pouvez stocker des fichiers, mais aussi des sous-dossiers, +afin d'organiser au mieux votre espace disponible.

      Afin de pouvoir modifier facilement vos fichiers, vous pouvez utiliser le FTP, en créant un +compte sur votre bureau virtuel. Plus d'info sur le FTP dans la section FTP de l'Aide.. +Vous pouvez aussi utiliser le gestionnaire de fichier pour gérer vos fichiers directement depuis le +bureau virtuel. Pour cela, dans le menu principal, cliquez sur "Gestionnaire de fichiers"

      Le gestionnaire de fichier permet de gérer l'ensemble de vos fichiers, à savoir : +


      PrécédentSommaireSuivant
      Comptes FTP Paramètres du gestionnaire de fichiers
      \ No newline at end of file diff --git a/stable-1.0/bureau/admin/aide/html/docbook.css b/stable-1.0/bureau/admin/aide/html/docbook.css new file mode 100644 index 00000000..5f7c0040 --- /dev/null +++ b/stable-1.0/bureau/admin/aide/html/docbook.css @@ -0,0 +1,42 @@ + +BODY { + font-size: 12px; + font-family: Verdana, Helvetica, Sans-Serif; + font-weight: normal; +} + +/* Titres de chapitres : */ +H1 { + font-size: 18px; + font-family: Bookman Old Style, Times, Serif; + font-weight: bold; +} + +/* En-tete haut cache */ +.navheader { + position: absolute; + visibility: hidden; +} + +/* En-tete bas : petite police */ +.navfooter td, .navfooter { + font-size: 10px; + font-family: Verdana, Helvetica, Sans-Serif; +} + +/* Police standard pour le code */ +.literal, .programlisting, .screen { + font-size: 12px; +} + +/* Listes a puce pour la table des matieres : */ +.toc { + list-style-image: url(tiret.gif); + padding-left: 4px; + margin-left: 2px; +} +.toc2 { + list-style-image: url(plus.gif); + padding-left: 4px; + margin-left: 2px; +} diff --git a/stable-1.0/bureau/admin/aide/html/files/browser_set.png b/stable-1.0/bureau/admin/aide/html/files/browser_set.png new file mode 100644 index 0000000000000000000000000000000000000000..cd274b37b45ce7f012d4380e67345a6d44bb888d GIT binary patch literal 11744 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 literal 0 HcmV?d00001 diff --git a/stable-1.0/bureau/admin/aide/html/files/ftp_add.png b/stable-1.0/bureau/admin/aide/html/files/ftp_add.png new file mode 100644 index 0000000000000000000000000000000000000000..83c8d1299300cfc63d408f89c538ac6dca156ae4 GIT binary patch literal 12528 zcmX9_1wh+e*AB7`8SXONb%WtL+}+*X-C;1?Hhj3d6nBT=?(T(+0mB{syx*VRw&_iB zleEb>=aEJ#DM+Fq5h4KqfFdm=rUC#kj^Mm20xbBtEP#y%zQJ35k^ce!weiSL#&5vS zZ%t$+#emoU9=V+*iC_<+la#hA03c)j_k@|<2zUZJ-?>T4i@%$Fi-E(1lzsOA4oe0| zi+xe^$~?*PR8y74>tQX#5J6zRs+Q6$lu9g*h|&^P?hP|q(qFSY)1NoDxBVgxkMYHB z*{L>nSxKo)s^-Tg?6>)|c!)NhP z2Jlt*iGs{FSeVS`otZp3g4kIQj$Ws{-{Z~6T7cRcaH*RS1Yc8Alb)X5%2u9`knj)T zpR22@2gO=L7#}zRMn+jh!+2q`t7aAiv8~zV1K;qM{1DKwiz?1CgjH3 zPOW9+(Yu{^kQ3o_VwfAW8cjM#fhd5M2eZbs|qdthsE6rBrrid;5wV_`YI}adHSFIEhGZz z?ieq%Z7-S{{@BQLEfozR4kr7JEX+Su(BDrmdDJjEv)13)$OO2n${M3QgEM*oD~CFN zh+9OoNbfpwi2-~j)XvbseWzoBN^lcpf>2<3++t2wiwU*lxFE2!l(G^nX$5!o5^Wa6 zTIdi0mqL>tc5JX)-V&ogvk>iOl>(~A%e3$%PI&(0n5T6m zDoW;XN`IE5aE=t|Wz^5SxPRwDq05i-qqi5Iw&mp6U9YU8G(kMquZ0*uf z&f4XXhClQn9G{B@Z-r!F0c3UUsXRDdj{wdWQOqivx;%-Yaz^@lMHg!Y9hqvM@^f(< z^2n7{HAHW=AB)rD`%a2o!w{83b!@zaVihWJA#Z61986u!cc?=}2Wks&J-yCQub7Vj z|1eAE4~?E0fo-;!putR^>+F#o&IU*@W}QWb6->`{LvZ*?5daz2F_e`c1{T-jEFnBZ zlK3N$81aI#Q{|Nz=K0jp1Eg`XiR6*XHp5$^biCXS%c-OmCEHFdaU!_UgZH>05qE4S zBz51vqm#r#H9Ds>D~JLSKI86}JxV|BH3;sc)mYH?VMa z)<52a@f5v2d~=W?LHNNd)9*@~7ct&-LDk>T!1qeKEiolwPx#H-XcT~+v;t<^!NOV0 zWfQP=re&u7>Tt^z-Jf{zxoCiS!R%H@Ve^$+TQy2gZOx0l(^KHAK{H`;@V_?Sc-ENd&{jZr$Ex?%C3BD~iZ{{G0ek;&Pa z_~$w{F9pQut>u+b@V}4h-7+DNHtg28nG1E>I30fmmo{ zrElHld6k*qY%cD@YkiVNRId?IG}7sMbUH_Wdu6`eebnGo4vmzQR7y%pj9U|r|HYG& z?b_@tW{tLLVPT=Gt1I!}51w{wOU~RR@p#yNoZR~z-@ciNi{BTctV!_1!USE#%wy5U z&t%<=sCRd5| zg-H!2v*3L}4%1T`sbTnR)VhG8dq%taEmT#bEz7As z-Jww0(RdI#3(c@~B(Y8ccN`Pvq9$RiB*NLvg-OyLSV;if8F<^|GhO;c+TOjFL``jm zdOW4R!=&7PapJgjy?=-v`J;YJ%HLtAl!gYZH93w?j=%=Z&L;f%!$6a0ZR4P&adWOR zoIL!GP93MQwm?7pJ;Cbya+=}yp&b{Ppb3jZynPP#^!hp>FS(qL&cVKBUP(hqziAao z1JBv2_ndxc_P^fEO*wAm{Mb>}p^za@Jv0_QJ1&3DC!^gzVD=pn;4_s{H$e`>m zKz+;H zaA0C>k&E-cUg#rJ)cbfOe%DX*_b1S*W46tbcJG)B9#aJ~ulWJQQ_1*8TB?rImBhO@ z_YX+jTP?=c<{UNAIpyLrDi&>3e|BLzlXnSTon-JD?uW%x8~_Nmy7>;Amop1W*!ZiHVCBI5c*7 z$`PN@(9qocQ|D z^+x^hQR|D%M%L0~NYdw`VQP2zP9=#yj+hp5@{es zxwr^$gm#nYulgTxE6u2BhXq!#NZ;V+YY!P^``veio09q@^g&&wI$xA#c62vfW&RL` zY?>K=3l%9|GtAzR>M;@7f>yR)5(1pug!*X~mU$8x6`3&p(C)}7Nedg)l{p{=$MMqQ z>}@XbvNTUM$lwdvv)Bfhot@7ck2SOT15U@rkOry67dRHw$}2lM`syte2L=ZR@7%+718DLoywbPWxK#>Yhrr#=b^DLS1UbDd)&9jHhZZXiVa&Ukw9Zx)T=C1WR} zJv^^?M7Y~>;o#uNOKZDSozW;dkoKCx)S~NTb-Z zrC(%ByfV8w;DMu2nY(r!r9lLMENtkZT?YUpv>=6WYM*{Y5Kx{5(!l`XFi42h$=B~w z+V;D<7i6oh#GIFX-pay<*UlxyPckVdQ^EB79O3jJM553#2BT29c@d3e1wE@G4LBV7 zod_1QtU3>$ytg`H?MKD%67MQqO*Ja1)384U4as(&_hE!3Q~LJ4Scqp;6?cGTK|*T( z+&Y`RHWKj7n@3N2@^Fj88^XJF<~vfaZdFO8KQl~MZvR<1fd*(s|VSR)! zS&Wn0E}mw!Rz+oD@Sw@_&3y)8Mk7*cO<8$${v1(dl^v`?_LNr+Dj?{J2Lv^x#Fdw? zW|gMZA1V|T7kwWb9!seP0J!Jg01#At6N_?lKT65+{oP&Q^DI!AQ+bc_R`K#* z-_AdNk}1cW*N^PTK##F=ATh6p;E|k-PE=SMbQoh&T3Sf^pTN6z3>g`QGHd$&DtpU` zf4_E|qVZlN@|5lx_w+Zy2!F!%%HopV#OeL5N%la4vvVPO`=$}j+vZrjDn zmM6@%oiOBFNwtgP-v0OK-H?CLhp=$LQ{f{c zBXhs6LZc7sRw^OWw*DWnGy2W3Q*b?WZnt;f_;H2CTvHIF#Y!g>C-Ii+J>$P-&un(K zzeAno^}q0IUTAaU8L-?OAB~T-rzHOtYM6P9e zf8XrTK2cb6ys@828K5efvA5MX~QG$n987e zSwA4SqApexrOJnZp%0^-C*eiJ#!zw7Od<46M5Iaqi;u5;dV1QUF+Dv!_!tq3 zrnI6okZTZKA0Av?OiN2kv>=f^HiEUFtZZe`!_6$nf;L4X^y z+1x9J6)+-lFgPC*tt4}_u->B<6oh-+T}QOFwZ&Y$kA)!=`$59Y zMTRaUc=guD#-=>?&bnHNzjt%;#n<-AR#{6c?ML>faXb9c>+rjSycsL|DnuV5Niy_K zIGwrQqTIxj2N7e>RfB zzoHMPU-5YKOTMI)yu83czI{`MoSwbA$RIf`^^qbK6Q^2Z1P3%OSSYnU0O1 zkeG};dm`(KQ;ok56%0Q~d@mGXH``rC#JNbdr_)=LH?seQ@zcZ@GX+~^mQ!5(;leS7 z`2p#Wypzu(XPzOpC|R52?K4f0d+aA|Y5+Y^U8Ti19Sj}HsIjcQ{(?~X(V=wmmnAbP z3LM=|!KLEzGHRNN0pXY9+Ot5L>|cZF?g&_cFLrbQHa1kq54--U`7}IFf~-rZ^LOZh z<&CYZnvb!WjNt3TUu>cn$aIdgH84Hh$BUKon@_IY-jp}7@oE(r_=kTnBHe0vZw^z# z2GcX-LAm%#rAs=$lh| zpK`K{jqUfA>u22G(-^j#Z)R9+&CF6^q`J<4=nn@`MN8$h*w^v&J}!kkGKSByySPzz+$9t${7yuJe8O*+-IhdSX^Q^V$l3Jsur>P0DPgV`H(Y+Xie++rUqJ^(`1sZ8^ZCw5&nDj%yQ!)}hRH zlcCmedv5Ab{YXBnEy6yZ>yx`LYUj~&Cx}|(F|zTR8&Qt7@^@0vQJF5J4rMfaj7*#q zJZDaN=_w6&3YJ)|9NJja){)G;$EO_zHbtIPEX)NR9*tQ$ES8Bv*@dve7UKGS?U`3~ ztLjZ*zQ58)qU3jw`!^3#W-|Iah{4oo89M0D@@N4m#oJF&H81^wH)(NbMhl=T%lOWAy&flVw@8lT7Z|Ne8KJ8tr!EC!L4~ocsAd*i$@`4#uh*V&0&Uoqw*$a6Ql;5_;R}(*#Q@mmobP^uQ!A zK4v_JK*1VC}T_nBM93REx2(M=?2ieAS^XK2PAgM- z)}H{|wHY;%EfF7slGYqPdXDzmI6ry@ERZewj(;?7F{#~tCmy){6$j@Cvex3j*gY|(IYrwN ztKDgm_1bGnr93lSu_K^{|MgD8XJ&rN=3FVj3&Vt!#Lr9q@C9RP#Q; zUg1|XlRL7_k&g@JZ}Y}3&Fr^6%NG^z_y0S>$@myuSH6IW6R)vAl~)^?A466Z#6Ag_ znQ16M2u|VOcXV!Q!cqvRLh>1b)C%IkpGSo4E8|8(zx};EXuP}rnqpsvu=g!=??P~M zj0uW2p;oHASyS9mgrev*MUn~vt>YcPU9)oF@vp+>xBp8>0L@_{_6e|v@hn??kH}u_?^Gi z$!`hQL*7mK_95(Pbt|R1Z_gQUnm&u@%Fb&@8jswwymq_ZGwg;BN*-J4hzk5VXfl z$&k`2dcqP^Ykk4o1hKaxO7Qk!bTTN)Nj9E)=x@r%kxoK^kEf()EWkJi(Lgtu(Wl^J zR-;lf^W|biSM_qTL+iCQS|Sh3OYgcoAIUsl%RUk|;||@m-G;K)(=AuRl|P@epfe1a z0+(CZ=xXJ5YZQQ%?h4otqE=Vi03&mr^-&iuN84Cow`9`cRuG~D*aRGLWYw5d%lNnZ zgY88~$e@YkL}n4$7P5k#*eyDy z$m0Iv*Gg$p3M#6?%Jmmw0QS5hxC8Q^2y?f;QCM4hKD>cF9$ONXJc!dn3#a_mIytPZi#dkuOzQ)=VYxpc$an&K7L47TgTrs zIe;Ds85vwFHYP@?T4;b3Emp$TR{r}IJSaV(TFIB78M`j`_V)g-vP49Tl*XdHZpMAZ z`OfiM)JxAm$0xlbGrxuV;J6B-6K(0&EcCbvy%Qd+JL4KdKa5^42~=;i*f}0k(XWgU z%v67MdG^-?$3EY?pb(7PT%O+2A#0O))k>tn^<4__JR7rpG*rIrTT*!@XAE%P4Rv`VTQp;3quw0{+NQ$w z1dDG5yt@T6pfy(h+181;Ke`aN|1OuezS;=Xr37_`YNrRd{+%bz7j?qYrZI4eF;kwv=B6h=yg$Wq zi4rmhD=fAgyQ%W_Ty;9!KuZXZT^;cgfZ+GMW4$>E~NX16|D)0OTI2w`GDjkLG z2_Cit6Ce?B>fz{&H#wTfgVh=9)tW zj7sVwyYxt*44oc(QHNLB{!4*1mrEm*nk>y+t_TBocbfr;x!;)LzlS$GKr2Tdb^BJ-p+(Yp%t=H$J!Gu2k$d@`c zU!+WKD#vQU?3JNy2W+1Q4Ib3Bth;*})U-aQZ}urLmGRy%W#v#cl%@nQH*|IK?h^jKGENC09TeO~ zR?HTJzLpq%`64Ke^m^nhr|rG6_38HN9h%dvlYYYh9&mGi0v{wU>o3XM9JVLu4`n6b z!F=W29!K0Weqh(0d&c3;mX1yTB-pJFDCwzyDhMplU85!UqYsT^!Tr{$5kk`D`Kk~w zB`xjvrcdC}1L%oTm$myVBwfKIjl)Ca#lS-yNfBBy8V!!y=G(#>)4;&MA}1|hEVX0) zg0ULkz{J1;AJoyI$4G?biKfZ?0f$fWGCv+X+K?~>BjziXL1t+3<=jTO`*~c210(w9}04At^$BDZtFQG+`C3*rj2r@=atMEa< zmEp+cXyJU1_GG=YXfIcf#j}^f5e#boWS2k*A%$6=$8~Z(CZ<92oR#LkO2$Ut%u8(` zS=Moj8a@XNymfhD&hN6Mx!L6hzWRseu*{GS(~|6q8G5k3>?f4Tsc z%eBtH&w5%IVQJ}~ta=|E&#MJ=z4=MP`^{Yi5q}Su)Pe{1&x?ukxY@jdqQ3xaF=6=ceNvTsIJVT zfDZ?7OfUo6`2}?c0VdM=ruOV}yUX%GX)gQzz>5IkP&}J}jxGTu)79s*0?A>x|KbMu zl|3o|@z(ny3yaIHB8vf-)XBW*TRTIB>GA%~rlIB45=JZz|Jqa-rLi@y{0Z+v@)xzy zIwDp=?Z1*dp9_R)V1%_r>wjJ>&7Hc(kB%ahzsCUzi;DJkO<-~h3)6(j+~lsfR=xE! zdHt{-oi2+%!1L$jk_C?BZy_V|-J=|yd(GUQWpaCj1->}N)Q>ri;o-hq+D?%kIb7MZ zW4WrUy91DVce1D`SRiA<#=+wI>-oj-u#&ud7)%gYa;K+1Y#gmcA<4iR;}Nj0iaR+o zY;$KR99B@FXY>14=8_qTi@RrzeQRjIrWQW{C7)Bi<;Y~QCkS}0N8Ws3{+BTx>qYn@ zQ*&d!4|)L#FDGvsif3$7-xV|=A=2MdBCZ;wDACyI>h7G#vqLUKg>eIOTQWtO^a>Tt6~gK|4zs$}kp{vq zAq&k0>Ku(vXCC~~{rbkH=xiIPKrsQzHdjElp@zzmbiNRy z%F9Cg_b{CCEB{#vZQm&W5+hy=2!ic?E&r7g)3x$i=lL4fG$Y;YxPj$z?uT4&eyh;! z_$PeqfRp3-v0PnUz13j?dZK&#{)5d03w`aJ?!dtCJJge^vMQLMw?1%R$%6a+6Ed=x zBpj@bK@9@1va{QF_68u<$2ypiR95{vkc^BBnC-#T-=1 z2_Gd|vXs=4sA4c!7#Q3L*aIFH1=gBRy)S9H+S5|gJ1h`lMyH??l~I5NN(?|yeba?fkzgeG zcaZLIDCHmn-C)kVMXaTxwbkOi zVEH1K`l*__h#FK>Y<*2tRrf$yg7~lGX7{C6@ofVbdUnmuLtY-^KL{QiZMz-cbR##X zvg+sT3wq3@G=jjuEMV9!cL`2dU;kuf?v+FXtPWoG6ouS5u0b&rjezaysdd`CoAqfi z-09C%?d+@xQ0iD3-QuSzBSQ!%ydeffPawCti-qEE*kaF@n;S~#osYd<^BW*DYY2C) z?S41x2=8Ga9pvTz1<{IP?%;iR%OElCmV}4(1_;!=tmUoBQ(;y&e^ZYSEc4G={U|~O zS_n!n*>Mf8+@zkD+a}pYgg;PHsZAM)kGl<+>Zlrk6^7o0+i-dLT(L~VF66LewTp>~ zwb~XQV1qg1mqG;WJ|9q8@Qx-#08Vbf)LA35&$PzdpxRLD{rROas~Gm0G}Jd$969BO zlu0lJYIwUBdEdZ53>9b?VNk!>4Mh+Q=>_8=IP>Y#Cm?rJiPazi9T)d)5Kp~-nVL3D zB0Yo5gC_TwWyf*h@^Uz^&2RHw$a33nOZ*z;8X%*hqGFKgGx{hY@$1VW3l8=^OwXqN zI|;saASkkSWe^zy6B`MTl976w-8r1|Y2rE?&+ijDpi!l@q!GxW?%ph|y4kHrdh*xA z+86~8+`QbNk>6S3<&Np_A{UX8vZ}uAkjC18F*>~Q$94ww4){z3Mtq!h2<4x!r#fp{E z?PA^_^Ytg8%8)h+p=<7&FCg4ww5tAFiJo^}QDG}8dV96eI#uC&_tzrka!eDyTNEH> z@r4S?t}eIlI(kJx^UK2i5D)*o#q7XHFokpy6&(_b*ct*%kNMxbxD617G}^-fzeIKS zpcs+)!3=wOG`~cJ&IRe{=#Xpzb-N%P9e?j;0Fa=%{YgLpkAdPY-!)fjW8);PdgK>WZ747QaIa{Jh*tIa_<;7X z9H<_EU`vq}`Q$S!H8wmd<3TyL9PqoT|0DWAe~N-ab$6pMSr-=F4I%8; zqYr}KTzPZ9-#wvTr80EC0P)wk;JxNcBnLS0b)GL`^ zS{ND{LXP^t7M`9vo(Cd0*=ehWrbYPs|M~c)@6%CJ`^_66UG)qRIj}6L(SxSWUh7L4 z6fdT34)R|7B&q#xdi*TyL0w?x)650Z1uib`a}~mF_} zVc`D>eAxdd@UPY;AHu?X0t$(No;}3T(VU6-h3RP}W#!_$Pr_11YsLDF|4j>j{-g`2 zT=~u{OR+LO-bMa*)*98F=m1cvwo?9wf#q;(&nchklQ++Omj>q7JJ@GadHfhC7?SLA zx!z9`-|hb{xQMy{)ga!tzhQv4A?Irsq3+l2JE_&CwOhsZMoK|jUpE?dU&cK$vz~W0 zpZPBRa4`_Ru{L**x=z_bu?=%VDZVYDJK-}ex~`6Ie-{oopFKdQ7N^!FdI$VV%XmHCr6eGdwV_jvK9 zq*~gm2vNYtRqwy)3q&wMLwhG1-E+2!Ns^zY=&>U=RY||zy?xkWd>G0J;Bqiv9_2R z14?Bsoc(Y5B-Pb%`opvt7~R>d%S-7332)N^?QQp_S$@cCXjsVDV7}@|NGvY?%2se} zdG)lFa9~$O4v^S<4BRT1JATDT@Agj}wx|b;wtK#Wpu|Q+NADVTqhIkj^^p1d_ut*6 z0{@-{>uXJa!3cXOXt-SH281}XV4dIHIM=s_gN)S~JU;x^KjveV#Ow4E8Xhh)YRZ}g=_tA^GOFqW;#SPr;(?D(~Y2nKaatc%7^i*EUbZ2I=S-TwC>MqB%UCq+Ugb6tV>!ERO-epuSix zo%_DIh!HGJ3%{AI*VBGb&)VCgN05%~-|1s9I9Zkuw$d7|xJ!Mq#WJ0<*Y(&r*H2d@ z2VJmW^c@`)BoT7<%ATSK_(4VU79d8Il+k&($;xOxTZadjneBmX7w%b=Sy0$HXP>{Y zl<>Q2rQ|KDEmM|O);1Cw7!;EJDCJm)g#h1W7$!z>viZ9?V9y5Frd=P{JNF{)s;kR4 zZ8j-Xkl05K4GoPHoB1W-v&O)g0V3^sQ%zgWaRq@dV3usU%E1$c1~7LW}9X6lQvf$>=n9kAHU2kEakV}HS2n<%Y_JQO4hWNNlPnx&wd+$$AAT} zadD51jy|Plbn}*0RfVLN69V%~OUQc6S$&F+eI~V_mP$?C{!=z-!eVK@VM>*jf`V<- z`u&!cnubOk!A4P1Kf=J2h|rxp?znD#c`;PbT+hJ()zIbelzA_&*yTf$tX_M-!Rj@m zPup9t*)COq9uN2+Tdr!oPLf`{YVGd2($d6ln;*2>1E@0w7w0&rI^b|G7om6j5qe7X_xs)@}pPZ^jU<9~r3 zKXi7v*628uwn{VC(?ft=db1mqjBMY@Cjp1b{MhgvhHfvgFgq_uEjG^HUTFe zNHaXEv;T4uWRXh%K&%8Z64J%Z4OCL~m0TkN17Uy_sH5o&Ye>2RognX_;aW7JpoDys z6Hv2bBsAL_U>0Z#GM_{_jWnRNW~@2MSY~bj literal 0 HcmV?d00001 diff --git a/stable-1.0/bureau/admin/aide/html/files/ftp_list.png b/stable-1.0/bureau/admin/aide/html/files/ftp_list.png new file mode 100644 index 0000000000000000000000000000000000000000..40aa60be4bf9302200080455904370354cce8d0d GIT binary patch literal 14214 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 iquwXY*cWqw=d}lZqTjYE58Q-cr4z% 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
        BS43${<$(sk) z^!GQ$4YReKO_9g}KV)KP2-M=eSrW_~9dQA_%YC(!zSE6G;FV|T+%(+rrOG{B$a|#W zqc!l8*TUA-wOEZcUD#vld`DAEbRH$!$&}pw<}p_q>E^y4wZWLA5GL_L$BH=P1WGhc2?l< zFCM)h#J)NVOBcRqd`BM%_2;wbZYuS?(-9Ip=jYoKwViMlsEym%Nf8pNcXVXr;u>6- zmuaYnHo5N@tUcLr50B`nMGgLNcWF#O;E(xa+uBV1W#CPvlbqZ(m_q_1!=6|=M1ktj zz1n6Cs5+AQoZ}fsF>J_}0JtrBV5&Vvx5W7N#35b*ey>?LF6YA-u&QA1xQHE80 z9i5uAx$A)ePVlwQHU~kIKf0{wg#2{xXJc*cce0wY(0Fxsdy5iOd$kHvBu5RZa$7j8 z0LL3O-$w}t2Wah;`OBABz)vB!+fbZL!1)eL#OfIsOdK(zV=Op(WrgCTi+DB2#vX!V zMa6hq8H8rS!n_E?$tZKTbPv>IG-WV)qv2{2_JdhU{NE7gzC|oH}$(X5k%Ywne zT3Sq`qzVhRp6o9^rF#nmrKIc>XRHtjVqIP1!(8#!sDB+t%RgbqaGf>@Uk_Vj!^3b591fB1s)ej$xxpca^1ol=L(wg^T~# zK_G@As1ixXiUi_wiN<8fBuh>Hd?H(R^OyC;*-un2Hcr$Vr3gd2v+=jZKLCZ#`MYiK z2=~IO?%F^7ciZXbstgfzZJ)G{#?*{EzW&#yMAS^LAVts+$>@!`w=0li+!T>t<8 literal 0 HcmV?d00001 diff --git a/stable-1.0/bureau/admin/aide/html/files/sta_view1.png b/stable-1.0/bureau/admin/aide/html/files/sta_view1.png new file mode 100644 index 0000000000000000000000000000000000000000..d3f1924621d63d8a195d0b32cb4d72e5e5ff28f8 GIT binary patch literal 47313 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 z%0D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 literal 0 HcmV?d00001 diff --git a/stable-1.0/bureau/admin/aide/html/frameset.html b/stable-1.0/bureau/admin/aide/html/frameset.html new file mode 100644 index 00000000..56c75b94 --- /dev/null +++ b/stable-1.0/bureau/admin/aide/html/frameset.html @@ -0,0 +1,14 @@ + + +Documentation développeur d'AlternC + + + + + +<body> +Your browser does not support frames. +</body> + + + diff --git a/stable-1.0/bureau/admin/aide/html/plus.gif b/stable-1.0/bureau/admin/aide/html/plus.gif new file mode 100644 index 0000000000000000000000000000000000000000..720dd8bd6bf1ff70707d59a107b4564a45d161ab GIT binary patch literal 91 zcmZ?wbhEHbWMyDw*vtR||NjG#@&Es6|NqbY|NqQ?FaXP7ArybIFfuT(Gw6WiKxQzo QaC|sXd4T1|B}oQr0GQz#&j0`b literal 0 HcmV?d00001 diff --git a/stable-1.0/bureau/admin/aide/html/tiret.gif b/stable-1.0/bureau/admin/aide/html/tiret.gif new file mode 100644 index 0000000000000000000000000000000000000000..3ff978e4c65521d1f778756a79a559e1d6e7e670 GIT binary patch literal 90 zcmZ?wbhEHbWMyDw*vtR||NjG#@&Es6|NqbY|NqQ?FaXP7ArybIFfuT(Gw6WiKxQzo Puzxt=$-l$YoxvIacXAmz literal 0 HcmV?d00001 diff --git a/stable-1.0/bureau/admin/aide/html/toc.htm b/stable-1.0/bureau/admin/aide/html/toc.htm new file mode 100644 index 00000000..19177ff7 --- /dev/null +++ b/stable-1.0/bureau/admin/aide/html/toc.htm @@ -0,0 +1,144 @@ +DocBook TOCAlternC, Documentation Utilisateur
          \ No newline at end of file diff --git a/stable-1.0/bureau/admin/aide/html/x105.html b/stable-1.0/bureau/admin/aide/html/x105.html new file mode 100644 index 00000000..c0f5bdfe --- /dev/null +++ b/stable-1.0/bureau/admin/aide/html/x105.html @@ -0,0 +1,190 @@ +Paramètres du gestionnaire de fichiers
          AlternC, Documentation Utilisateur
          PrécédentChapitre 4. Le gestionnaire de fichiersSuivant


          PrécédentSommaireSuivant
          Le gestionnaire de fichiersNiveau supérieurLes statistiques Web.
          \ No newline at end of file diff --git a/stable-1.0/bureau/admin/aide/html/x23.html b/stable-1.0/bureau/admin/aide/html/x23.html new file mode 100644 index 00000000..dc39165e --- /dev/null +++ b/stable-1.0/bureau/admin/aide/html/x23.html @@ -0,0 +1,149 @@ +Fonctionnement de l'aide en ligne
          AlternC, Documentation Utilisateur
          PrécédentChapitre 1. IntroductionSuivant


          PrécédentSommaireSuivant
          IntroductionNiveau supérieurLes Noms de Domaines
          \ No newline at end of file diff --git a/stable-1.0/bureau/admin/aide/html/x53.html b/stable-1.0/bureau/admin/aide/html/x53.html new file mode 100644 index 00000000..57304698 --- /dev/null +++ b/stable-1.0/bureau/admin/aide/html/x53.html @@ -0,0 +1,206 @@ +Configuration d'un domaine / sous-domaine
          AlternC, Documentation Utilisateur
          PrécédentChapitre 2. Les Noms de DomainesSuivant

          Configuration d'un domaine / sous-domaine

          Lorsque vous avez installé un domaine sur AlternC, vous pouvez choisir dans quel dossier +de votre espace disque vous souhaitez connecter ce domaine, ou tout sous-domaine associé. +Pour cela, Cliquez sur le domaine dans le menu de gauche. Cela affiche l'ensemble des +sous-domaines installé. Vous pouvez ensuite modifier l'emplacement de ces sous-domaines, +ou en créer de nouveaux.

          Par défaut, les sous-domaines suivants sont installés : (exemple pour virtuel.org) +


          PrécédentSommaireSuivant
          Les Noms de DomainesNiveau supérieurComptes FTP
          \ No newline at end of file diff --git a/stable-1.0/bureau/admin/aide/inline/docbook.css b/stable-1.0/bureau/admin/aide/inline/docbook.css new file mode 100644 index 00000000..5f7c0040 --- /dev/null +++ b/stable-1.0/bureau/admin/aide/inline/docbook.css @@ -0,0 +1,42 @@ + +BODY { + font-size: 12px; + font-family: Verdana, Helvetica, Sans-Serif; + font-weight: normal; +} + +/* Titres de chapitres : */ +H1 { + font-size: 18px; + font-family: Bookman Old Style, Times, Serif; + font-weight: bold; +} + +/* En-tete haut cache */ +.navheader { + position: absolute; + visibility: hidden; +} + +/* En-tete bas : petite police */ +.navfooter td, .navfooter { + font-size: 10px; + font-family: Verdana, Helvetica, Sans-Serif; +} + +/* Police standard pour le code */ +.literal, .programlisting, .screen { + font-size: 12px; +} + +/* Listes a puce pour la table des matieres : */ +.toc { + list-style-image: url(tiret.gif); + padding-left: 4px; + margin-left: 2px; +} +.toc2 { + list-style-image: url(plus.gif); + padding-left: 4px; + margin-left: 2px; +} diff --git a/stable-1.0/bureau/admin/aide/inline/frameset.html b/stable-1.0/bureau/admin/aide/inline/frameset.html new file mode 100644 index 00000000..56c75b94 --- /dev/null +++ b/stable-1.0/bureau/admin/aide/inline/frameset.html @@ -0,0 +1,14 @@ + + +Documentation développeur d'AlternC + + + + + +<body> +Your browser does not support frames. +</body> + + + diff --git a/stable-1.0/bureau/admin/aide/inline/plus.gif b/stable-1.0/bureau/admin/aide/inline/plus.gif new file mode 100644 index 0000000000000000000000000000000000000000..720dd8bd6bf1ff70707d59a107b4564a45d161ab GIT binary patch literal 91 zcmZ?wbhEHbWMyDw*vtR||NjG#@&Es6|NqbY|NqQ?FaXP7ArybIFfuT(Gw6WiKxQzo QaC|sXd4T1|B}oQr0GQz#&j0`b literal 0 HcmV?d00001 diff --git a/stable-1.0/bureau/admin/aide/inline/tiret.gif b/stable-1.0/bureau/admin/aide/inline/tiret.gif new file mode 100644 index 0000000000000000000000000000000000000000..3ff978e4c65521d1f778756a79a559e1d6e7e670 GIT binary patch literal 90 zcmZ?wbhEHbWMyDw*vtR||NjG#@&Es6|NqbY|NqQ?FaXP7ArybIFfuT(Gw6WiKxQzo Puzxt=$-l$YoxvIacXAmz literal 0 HcmV?d00001 diff --git a/stable-1.0/bureau/admin/alternc.jpg b/stable-1.0/bureau/admin/alternc.jpg new file mode 100644 index 0000000000000000000000000000000000000000..baefb659a097c9c0dc18f760e8f8a2400cf8d6ae GIT binary patch literal 2399 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 Rxi$a*002ovPDHLkV1n3>y+Hr~ literal 0 HcmV?d00001 diff --git a/stable-1.0/bureau/admin/alternc3.png b/stable-1.0/bureau/admin/alternc3.png new file mode 100644 index 0000000000000000000000000000000000000000..8f1d0de519da33f4f14a5f3448588781166342fe GIT binary patch literal 3125 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 P00000NkvXXu0mjfCnf=> literal 0 HcmV?d00001 diff --git a/stable-1.0/bureau/admin/bro_editor.php b/stable-1.0/bureau/admin/bro_editor.php new file mode 100644 index 00000000..0d79d571 --- /dev/null +++ b/stable-1.0/bureau/admin/bro_editor.php @@ -0,0 +1,82 @@ +convertabsolute($R,1); +$p=$bro->GetPrefs(); + +if ($cancel) { + include("bro_main.php"); + exit(); +} +if ($saveret) { + if ($bro->Save($editfile,$R,$texte)) { + $error=sprintf(_("Your file %s has been saved"),$editfile)." (".format_date('%3$d-%2$d-%1$d %4$d:%5$d',date("Y-m-d H:i:s")).")"; + } else { + $error=$err->errstr(); + } + include("bro_main.php"); + exit(); +} +if ($save) { + if ($bro->Save($editfile,$R,$texte)) { + $error=sprintf(_("Your file %s has been saved"),$editfile)." (".format_date('%3$d-%2$d-%1$d %4$d:%5$d',date("Y-m-d H:i:s")).")"; + } else { + $error=$err->errstr(); + } +} + +include_once("head.php"); + +?> +

          +$error

          "; ?> +$R/$editfile
          "; ?> +

          +

          +
          px; height: px; cursor: auto;"> +".$err->errstr()."

          "; ?> + " /> + " /> + + " name="save" /> + " name="saveret" /> + " name="cancel" /> +
          + + \ No newline at end of file diff --git a/stable-1.0/bureau/admin/bro_main.php b/stable-1.0/bureau/admin/bro_main.php new file mode 100644 index 00000000..b9af82a4 --- /dev/null +++ b/stable-1.0/bureau/admin/bro_main.php @@ -0,0 +1,590 @@ + array ("request", "string", ""), + "formu" => array ("request", "integer", ""), + "actextract" => array ("request", "string", ""), + "fileextract" => array ("request", "string", ""), + "actdel" => array ("request", "string", ""), + "actcopy" => array ("request", "string", ""), + "actmove" => array ("request", "string", ""), + "actmoveto" => array ("request", "string", ""), + ); +getFields($fields); + + +$p=$bro->GetPrefs(); +if (! isset($R)) $R=''; +if (!$R && $p["golastdir"]) { + $R=$p["lastdir"]; +} +$R=$bro->convertabsolute($R,1); +// on fait ? +if (isset($formu) && $formu) { + switch ($formu) { + case 1: // Créer le répertoire $R.$nomfich + if (!$bro->CreateDir($R,$nomfich)) { + $error = $err->errstr(); + } + $p=$bro->GetPrefs(); + break; + case 6: // Créer le fichier $R.$nomfich + if (!$bro->CreateFile($R,$nomfich)) { + $error = $err->errstr(); + } + $p=$bro->GetPrefs(); + if ($p["createfile"]==1) { + $editfile=$nomfich; + include("bro_editor.php"); + exit(); + } + break; + case 2: // act vaut Supprimer Copier ou Renommer. + if ($actdel) { + if ($del_confirm != "") { + if (!$bro->DeleteFile($d,$R)) { + $error = $err->errstr(); + } + } elseif (!$cancel && is_array($d)) { + include_once("head.php"); +?> +

          :

          +
          + + + +

          + +

          + + +
          + " />   + " /> +
          +
          + + +CopyFile($d,$R,$actmoveto)) { + $error = $err->errstr(); + } + } + if ($actmove) { + if (!$bro->MoveFile($d,$R,$actmoveto)) { + $error = $err->errstr(); + } + } + break; + case 4: // Renommage Effectif... + if (!$bro->RenameFile($R,$o,$d)) { // Rename $R (directory) $o (old) $d (new) names + $error = $err->errstr(); + } + break; + case 3: // Upload de fichier... + if (!$bro->UploadFile($R)) { + $error = $err->errstr(); + } + break; + case 7: // Changement de permissions [ML] + if (!$bro->ChangePermissions($R, $d, $perm)) { + $error = $err->errstr(); + } + break; + } +} + +if (isset($actextract) && $actextract) { + print _("extracting...")."
          \n"; flush(); + if ($bro->ExtractFile($R. '/' . $fileextract, $R)) { + echo "

          "; + print $err->errstr(); + print _("failed")."
          \n"; + echo "

          "; + } else { + print _("done")."
          \n"; + } +} + +/* Creation de la liste des fichiers courants */ +$c=$bro->filelist($R, isset($_REQUEST['showdirsize'])?$_REQUEST['showdirsize']:null ); +if ($c===false) $error=$err->errstr(); + +?> +

          + + +"; + for ($i=0;$i"; + echo ""; + } + echo ""; + echo "
          + +
          + + + + +$error

          "; ?> + + + + + +
          + +
          + + + +
          + + +
          + " /> + +
          + +
            + +
          +
          + + + + +
          " />
          + /> + /> +
          +
          +
          + + +
          + +\n"; + echo "
          \n"; + echo "\n"; + echo "\n"; + echo "
          "._("Rename")."
          ".$d[$i]."
          \n"; + echo "
          \n"; +} + +/* [ML] Changer les permissions : */ +if (isset($formu) && $formu==2 && $_REQUEST['actperms'] && count($d)) { + echo "
          \n"; + echo "\n"; + echo "\n"; + echo "

          "._("Permissions")."

          "; + + $tmp_absdir = $bro->convertabsolute($R,0); + + echo ""; + echo ""; + echo ""; + echo ""; + + for ($i=0;$i"; + echo ""; + + // Owner + echo ""; + + echo ""; + } + + echo "
          " . _("File") . ""._("Permissions")."
          ".$d[$i].""; + echo ""; + echo " "; + echo "
          "; + + echo "

          "; + echo "
          \n"; + echo "
          \n"; +} + +/* We draw the file list and button bar only if there is files here ! */ +if (count($c)) { + +?> +
          + + + +
          + + + + + +
          + +" /> +" /> +" /> +  |  +" /> +" /> + + + + +
          + + +"; +?> + + + + + + + + + + + + + + +\n"; +if ($c[$i]["type"]) { +echo " "; +if ($p["showicons"]) { +echo "icon($c[$i]["name"])."\" width=\"16\" height=\"16\" alt=\"\" />"; +} +echo "
          ".htmlentities($c[$i]["name"])."\n"; +echo " ".format_size($c[$i]["size"]).""; +echo "".format_date('%3$d-%2$d-%1$d %4$d:%5$d',date("Y-m-d H:i:s",$c[$i]["date"]))."
          "; +if ($p["showtype"]) { +echo ""._($bro->mime($c[$i]["name"])).""; +} +$vu=$bro->viewurl($R,$c[$i]["name"]); +if ($vu) { +echo ""._("View").""; +} else { +echo " "; +} +$e = $bro->is_extractable($R,$c[$i]["name"]); +if ($e) { + echo " "; + echo _("Extract"); + echo ""; +} + +echo "\n"; +} else { // DOSSIER : +echo " "; +if ($p["showicons"]) { +echo "\"\""; +} +echo "".htmlentities($c[$i]["name"])."/\n"; +echo " ".format_size($c[$i]["size"]).""; +echo "".format_date('%3$d-%2$d-%1$d %4$d:%5$d',date("Y-m-d h:i:s",$c[$i]["date"]))."
          "; +if ($p["showtype"]) { + echo ""._("Folder").""; +} +echo " "; +echo "\n"; +} + +echo "\n"; +} +echo ""; +break; +case 1: +/* AFFICHE 2 COLONNES COURTES */ +reset($c); +echo ""; +echo ""; +echo "
          "; +echo ""; +$col=1; +for($i=0;$i\n"; +if ($c[$i]["type"]) { +echo " \n"; +echo " \n"; +} else { +echo " \n"; +echo " \n"; +} + +echo "\n"; +} +echo "
          ".htmlentities($c[$i]["name"])."".format_size($c[$i]["size"]).""; +$vu=$bro->viewurl($R,$c[$i]["name"]); +if ($vu) { +echo ""._("V").""; +} else { +echo " "; +} +echo "".htmlentities($c[$i]["name"])."/".format_size($c[$i]["size"]).""; +echo " "; +echo "
          "; +echo "
          "; +echo ""; +$col=1; +for($i=round(count($c)/2);$i\n"; +if ($c[$i]["type"]) { +echo " \n"; +echo " \n"; +} else { +echo " \n"; +echo " \n"; +} + +echo "\n"; +} +echo "
          ".htmlentities($c[$i]["name"])."".format_size($c[$i]["size"]).""; +$vu=$bro->viewurl($R,$c[$i]["name"]); +if ($vu) { +echo ""._("V").""; +} else { +echo " "; +} +echo "".htmlentities($c[$i]["name"])."/".format_size($c[$i]["size"]).""; +echo " "; +echo "
          "; +echo "
          "; +break; +case 2: +/* AFFICHE 3 COLONNES COURTES */ +reset($c); +echo ""; +echo ""; +echo "
          "; +echo ""; +$col=1; +for($i=0;$i\n"; +if ($c[$i]["type"]) { +echo " \n"; +echo " \n"; +} else { +echo " \n"; +echo " \n"; +} + +echo "\n"; +} +echo "
          ".htmlentities($c[$i]["name"])."".format_size($c[$i]["size"]).""; +$vu=$bro->viewurl($R,$c[$i]["name"]); +if ($vu) { +echo ""._("V").""; +} else { +echo " "; +} +echo "".htmlentities($c[$i]["name"])."/".format_size($c[$i]["size"]).""; +echo " "; +echo "
          "; +echo "
          "; +echo ""; +$col=1; +for($i=round(count($c)/3);$i\n"; +if ($c[$i]["type"]) { +echo " \n"; +echo " \n"; +} else { +echo " \n"; +echo " \n"; +} + +echo "\n"; +} +echo "
          ".htmlentities($c[$i]["name"])."".format_size($c[$i]["size"]).""; +$vu=$bro->viewurl($R,$c[$i]["name"]); +if ($vu) { +echo ""._("V").""; +} else { +echo " "; +} + +echo "".htmlentities($c[$i]["name"])."/".format_size($c[$i]["size"]).""; +echo " "; +echo "
          "; +echo "
          "; +echo ""; +$col=1; +for($i=round(2*count($c)/3);$i\n"; +if ($c[$i]["type"]) { +echo " \n"; +echo " \n"; +} else { +echo " \n"; +echo " \n"; +} + +echo "\n"; +} +echo "
          ".htmlentities($c[$i]["name"])."".format_size($c[$i]["size"]).""; +$vu=$bro->viewurl($R,$c[$i]["name"]); +if ($vu) { +echo ""._("View").""; +} else { +echo " "; +} +echo "".htmlentities($c[$i]["name"])."/".format_size($c[$i]["size"]).""; +echo " "; +echo "
          "; +echo "
          "; +break; +} +?> +
          +"._("No files in this folder")."

          "; +} +?> + + + + +

           

          + +

          + +

           

          +is_protected($R)) { +echo ""._("Edit this folder's protection").""; +} +else { + echo ""._("Protect this folder").""; +} +?> +

          + + +   + l_tgz[$p["downfmt"]]); ?> + +

          + is_ftp($R)) { +?> + + +   + + + +   + +

           

          +

          + + + +

          + + diff --git a/stable-1.0/bureau/admin/bro_pref.php b/stable-1.0/bureau/admin/bro_pref.php new file mode 100644 index 00000000..0dd19e85 --- /dev/null +++ b/stable-1.0/bureau/admin/bro_pref.php @@ -0,0 +1,140 @@ +SetPrefs($editsizex, $editsizey, $listmode, $showicons, $downfmt, $createfile, $showtype, $editor_font, $editor_size, $golastdir); + $error=_("Your preferences have been updated."); + include("bro_main.php"); + exit; +} +$p=$bro->GetPrefs(); + +include_once("head.php"); + +?> +$error
          "; ?> +

          +
          +
          +
          + + + + + + + + + + + + + + + +
          + " /> + " onclick="document.location='bro_main.php'"/> + +
          + +
          + diff --git a/stable-1.0/bureau/admin/bro_tgzdown.php b/stable-1.0/bureau/admin/bro_tgzdown.php new file mode 100644 index 00000000..ce00face --- /dev/null +++ b/stable-1.0/bureau/admin/bro_tgzdown.php @@ -0,0 +1,47 @@ +GetPrefs(); +switch ($p["downfmt"]) { + case 0: + $bro->DownloadTGZ($dir); + break; + case 1: + $bro->DownloadTBZ($dir); + break; + case 2: + $bro->DownloadZIP($dir); + break; + case 3: + $bro->DownloadZ($dir); + break; +} +?> diff --git a/stable-1.0/bureau/admin/bro_view.php b/stable-1.0/bureau/admin/bro_view.php new file mode 100644 index 00000000..8badd02d --- /dev/null +++ b/stable-1.0/bureau/admin/bro_view.php @@ -0,0 +1,35 @@ +content_send(dirname($PATH_INFO),basename($PATH_INFO)); + +?> + diff --git a/stable-1.0/bureau/admin/browseforfolder.php b/stable-1.0/bureau/admin/browseforfolder.php new file mode 100644 index 00000000..609670be --- /dev/null +++ b/stable-1.0/bureau/admin/browseforfolder.php @@ -0,0 +1,168 @@ + "directory" Nom du dossier + level => 0-n Niveau du dossier (0=racine 1,2 ...) + put => "/sub/sub/directory" Contenu de la variable post à ajouter pour la balise A si ="" c'est le dossier courant. + Si probleme, positionne $errbrowsefold + Sinon, retourne le tableau et $maxlevel contient le nombre maximum de sous-dossiers. +*/ +include("../class/config.php"); + +function _subbrowse($curdir,$pos,$level) { + global $maxlevel,$root,$brlist; + if ($level>$maxlevel) + $maxlevel=$level; + $rot=substr($curdir,0,$pos); + $next=@strpos($curdir,"/",$pos+1); + $nextstr=substr($curdir,$pos+1,$next-$pos-1); + $c=opendir($root.$rot); + $i=0; $tmp = array(); + while ($r=readdir($c)) { + if (is_dir($root.$rot."/".$r) && $r!="." && $r!="..") { $tmp[$i++]=$r; } + } + sort($tmp); + foreach ($tmp as $r) { + /* Ajout */ + $brlist[]=array("dir"=>$r,"level"=>$level,"put"=> ife($curdir==$rot."/".$r."/","",$rot."/".$r)); + if ($r==$nextstr) { + _subbrowse($curdir,$next,$level+1); + } + } +} + +function browseforfolder($curdir) { + global $maxlevel,$root,$brlist; + $maxlevel=0; + $pat=explode("/",$curdir); + $brlist=array(array("dir"=>"/","level"=>0,"put"=> ife($curdir=="/","","/") )); + _subbrowse($curdir,0,1); + return $brlist; +} + +$root="/var/alternc/html/".substr($mem->user["login"],0,1)."/".$mem->user["login"]."/"; +// pour utiliser 'la ou est browseforfolder', mettre dirname($HTTP_SERVER_VARS["PATH_TRANSLATED"]); + +if (substr($file,0,1)!="/") $file="/".$file; +if (substr($file,-1)!="/") $file.="/"; +if (!$file) $file="/"; + +$errbrowsefold=0; /* Erreur lors de la création d'un dossier */ +$brlist=array(); /* Liste des dossiers ... */ +$maxlevel=0; + + +if ($select) { + /* Go ahead, let's send the javascript ...*/ +?> + + +Browser for folder + + + +\n"; + echo ""; + exit(); +} + +?> + + + +Recherche d'un dossier + + + + + +

          +"; + /* Retour : */ + echo ""._("Back to the root folder")."
          "; +} else { + /* Sinon, tout va bien, on affiche le tableau */ + reset($ar); +?> +
          +

          + + + +
          + +" class="inb" />  +" class="inb" onclick="window.close();" />  +

          +
          + + + +\n"; + for ($i=0;$i<$val["level"];$i++) + echo ""; + if ($val["put"]!="") { + ?> + + + + "; + if ($val["put"]!="") { + echo "".$val["dir"].""; + } else { + echo "".$val["dir"].""; + } + echo "\n\n"; + } +} // OK ? +?> +
          + + diff --git a/stable-1.0/bureau/admin/direct.php b/stable-1.0/bureau/admin/direct.php new file mode 100644 index 00000000..7d609a74 --- /dev/null +++ b/stable-1.0/bureau/admin/direct.php @@ -0,0 +1,54 @@ +checkid()) { + $error=$err->errstr(); + include("index.php"); + exit(); +} + +?> + + + +Administration de <?php echo $host ?> + + + + + + + Votre navigateur doit supporter les cadres.<br /> + Your browser must support frames + + + diff --git a/stable-1.0/bureau/admin/dom_add.php b/stable-1.0/bureau/admin/dom_add.php new file mode 100644 index 00000000..20bf1a7b --- /dev/null +++ b/stable-1.0/bureau/admin/dom_add.php @@ -0,0 +1,107 @@ + array ("request", "string", ""), + "yndns" => array ("request", "integer", 0), + "newisslave" => array ("request", "integer", 0), + "slavedom" => array ("request", "string", ""), +); +getFields($fields); + +if (!isset($dns)) $dns="1"; + +?> +

          +
          +cancreate("dom")) { ?> +

          +$error

          "; +?> +
          +

          + www. +

          +

          + />  +

          +getquota("dom"); +if ($q["u"]>0) { +?> +

          + +
          + /> +
          + /> +
          +

          + + +

          + " /> +

          + +

          + +

          +show_help("add_domain"); ?> +
          +dns)) { + echo "
          "._("Whois result on the domain")." :
          ";
          +		reset($dom->dns);
          +		while (list($key,$val)=each($dom->dns)) {
          +			echo "nameserver: $val\n";
          +		}
          +		echo "
          "; + } +?> + + diff --git a/stable-1.0/bureau/admin/dom_doadd.php b/stable-1.0/bureau/admin/dom_doadd.php new file mode 100644 index 00000000..abd9f73f --- /dev/null +++ b/stable-1.0/bureau/admin/dom_doadd.php @@ -0,0 +1,69 @@ + array ("post", "string", ""), + "dns" => array ("post", "string", ""), + "newisslave" => array ("post", "integer" ,0), + "slavedom" => array ("post", "string" ,0), +); +getFields($fields); + +$dom->lock(); + +if (!$dom->add_domain($newdomain,$dns,0,0,$newisslave,$slavedom)) { + $error=$err->errstr(); + include("dom_add.php"); + exit(); +} + +$dom->unlock(); + +?> +

          +

          +

          +
          +show_help("add_domain"); ?> +
          +dns)) { + echo "
          "._("Whois result on the domain")." :

          ";
          +		reset($dom->dns);
          +		while (list($key,$val)=each($dom->dns)) {
          +			echo "nameserver: $val\n";
          +		}
          +		echo "
          "; + } +?> +

          + diff --git a/stable-1.0/bureau/admin/dom_dodel.php b/stable-1.0/bureau/admin/dom_dodel.php new file mode 100644 index 00000000..88942d27 --- /dev/null +++ b/stable-1.0/bureau/admin/dom_dodel.php @@ -0,0 +1,88 @@ + array ("request", "string", ""), + "del_confirm" => array ("post", "string", ""), + "del_cancel" => array ("request", "string", ""), +); +getFields($fields); + +$dom->lock(); +if ($del_confirm=="y") + if (!$dom->del_domain($domain)) { + $error=$err->errstr(); + include("dom_edit.php"); + $dom->unlock(); + exit(); + } + +$dom->unlock(); + +if (! empty($del_cancel)) { + $dom->del_domain_cancel($domain); + // The link to this function is disable : the del_domain_cancel function need some modification + __("Deletion have been successfully cancelled");?>
          +

          + +

          + +

          +
          +
          +



          + +

          +
          +

          + + +" /> - " onclick="history.back()" /> +

          + +

          +
          +
          +

          +

          + +show_help("del_domain"); ?> +

          + diff --git a/stable-1.0/bureau/admin/dom_edit.inc.php b/stable-1.0/bureau/admin/dom_edit.inc.php new file mode 100644 index 00000000..f8459f76 --- /dev/null +++ b/stable-1.0/bureau/admin/dom_edit.inc.php @@ -0,0 +1,145 @@ +lock(); +if (!$r=$dom->get_domain_all($domain)) { + $error=$err->errstr(); +} +/* +if (! empty($sub)) { + if (!$sd=$dom->get_sub_domain_all($domain,$sub,$type,$value)) { + $error=$err->errstr(); + } +} +*/ +$sd=$dom->get_sub_domain_all($domain,$sub,$type,$value); + +$dom->unlock(); +?> + +
          + + + + + domains_type_lst() as $dt) { + // If this type is disabled AND it's not the type in use here, continue + if ( $dt['enable'] == 'NONE' && strtoupper($type)!=strtoupper($dt['name'])) continue ; + // If this type is only for ADMIN and i'm not an admin, continue (oldid is to check if we are an admin who take user identity) + if (( $dt['enable'] == 'ADMIN') && (! $admin->enabled and ! intval($oldid))) continue; + + if ( (! $r['dns'] ) and ($dt['need_dns']) ) continue; + $targval=(strtoupper($type)==strtoupper($dt['name']))?$sd['dest']:''; + + if ($dt['advanced']) { + $lst_advanced[]=$dt['name']; + if ($first_advanced) { + $first_advanced=false; + echo ""; + echo ""; + echo ""; + echo ""; + } + } + ?> + + + + + + + + + + + + +
          + + + + + + +.
          + "; __("Show advanced options"); echo "
          + /> + + + + + + + + + + + + +
          " />
          +
          + + + + + diff --git a/stable-1.0/bureau/admin/dom_edit.php b/stable-1.0/bureau/admin/dom_edit.php new file mode 100644 index 00000000..48329520 --- /dev/null +++ b/stable-1.0/bureau/admin/dom_edit.php @@ -0,0 +1,229 @@ + array ("request", "string", ""), + "sub" => array ("request", "string", ""), +); +getFields($fields); + +$dom->lock(); +if (!$r=$dom->get_domain_all($domain)) { + $error=$err->errstr(); +} +$dom->unlock(); + +?> + +

          +$error

          "; + } +?> +
          + +

          + +

          +&del_cancel=true"> +*/ +?> + +
          + + + +domains_type_lst(); +for($i=0;$i<$r["nsub"];$i++) { + $col=3-$col; + +?> + + "; } else { ?> + + + + + + + + + +
          + + + + + + + + + + " target="_blank"> + '.htmlspecialchars($r["sub"][$i]["dest"]).''; +} else { + if ($r["sub"][$i]['type']) echo "
          ".htmlspecialchars($r["sub"][$i]["dest"]); +} +?>
          ";__("Disable");echo ""; + break; + case 'ENABLE': + __("Activation pending"); + break; + case 'DISABLED': + __("Disabled"); + echo "
          ";__("Enable");echo ""; + break; + case 'DISABLE': + __("Desactivation pending"); + break; + } + } + }?>
          +
          +
          + +
          +show_help("edit_domain"); ?> +

           

          + + + +
          +

          +
          " method="post" id="fdns" name="fdns"> + + + + + + +
          + />  + />  +
          + + + + + +
          + + + />  + />  +
          +
          + +" /> +
          + +

           

          +
          +

          + +
          +
          +
          +

          +" /> +

          +
          + +
          +
          + + + diff --git a/stable-1.0/bureau/admin/dom_editdns.php b/stable-1.0/bureau/admin/dom_editdns.php new file mode 100644 index 00000000..12353058 --- /dev/null +++ b/stable-1.0/bureau/admin/dom_editdns.php @@ -0,0 +1,63 @@ + array ("request", "string", ""), + "dns" => array ("request", "integer", 1), + "email" => array ("request", "integer", 1), +); +getFields($fields); + +$dom->lock(); + +if (!$dom->edit_domain($domain,$dns,$email)) { + $error=$err->errstr(); + include("dom_edit.php"); + $dom->unlock(); + exit(); + } +$dom->unlock(); + +?> +

          +
          +
          +

          + date('H:i:s', $t), '%time' => date('H:i:s', ($t-($t%300)+300)))); +?>

          + +

          + diff --git a/stable-1.0/bureau/admin/dom_subdel.php b/stable-1.0/bureau/admin/dom_subdel.php new file mode 100644 index 00000000..a5db0966 --- /dev/null +++ b/stable-1.0/bureau/admin/dom_subdel.php @@ -0,0 +1,83 @@ + array ("request", "string", ""), + "sub" => array ("request", "string", ""), + "type" => array ("request", "string", ""), + "value" => array ("request", "string", ""), +); +getFields($fields); + +$dt=$dom->domains_type_lst(); +if (!$isinvited && $dt[strtolower($type)]["enable"] != "ALL" ) { + __("This page is restricted to authorized staff"); + exit(); +} + + +$dom->lock(); +if (!$r=$dom->get_sub_domain_all($domain,$sub,$type)) { + $error=$err->errstr(); +} +$dom->unlock(); + + + +?> +

          :

          +$error

          "; + include_once("foot.php"); + exit(); + } +?> +
          +
          + +
          +

          + + + + + :

          +

          +
          + " />   + " onclick="history.back();" /> +
          +
          + diff --git a/stable-1.0/bureau/admin/dom_subdodel.php b/stable-1.0/bureau/admin/dom_subdodel.php new file mode 100644 index 00000000..e751cc5d --- /dev/null +++ b/stable-1.0/bureau/admin/dom_subdodel.php @@ -0,0 +1,73 @@ + array ("request", "string", ""), + "sub" => array ("request", "string", ""), + "type" => array ("request", "string", ""), + "value" => array ("request", "string", ""), +); +getFields($fields); + +$dt=$dom->domains_type_lst(); +if (!$isinvited && $dt[strtolower($type)]["enable"] != "ALL" ) { + __("This page is restricted to authorized staff"); + exit(); +} + + +$dom->lock(); + +if (!$dom->del_sub_domain($domain,$sub,$type,$value)) { + $error=$err->errstr(); +} + +$dom->unlock(); + +?> +

          +
          +
          +$error

          "; + include_once("foot.php"); + exit(); + } else { + $t = time(); + // XXX: we assume the cron job is at every 5 minutes + $error=strtr(_("The modifications will take effect at %time. Server time is %now."), array('%now' => date('H:i:s', $t), '%time' => date('H:i:s', ($t-($t%300)+300)))); + echo "

          ".$error."

          "; + } +?> +

          + diff --git a/stable-1.0/bureau/admin/dom_subdoedit.php b/stable-1.0/bureau/admin/dom_subdoedit.php new file mode 100644 index 00000000..f156671d --- /dev/null +++ b/stable-1.0/bureau/admin/dom_subdoedit.php @@ -0,0 +1,79 @@ + array ("request", "string", ""), + "sub" => array ("request", "string", ""), + "sub_old" => array ("request", "string", ""), + "type" => array ("request", "string", $dom->type_local), + "type_old" => array ("request", "string", ""), + "value_old" => array ("request", "string", ""), +); +getFields($fields); + +// here we get a dynamic-named value +$dynamicvar="t_$type"; +$fields = array ( + "$dynamicvar" => array ("request", "string", ""), +); +getFields($fields); +$value=$$dynamicvar; +// The dynamic value is now in $value + +$dom->lock(); + +$dt=$dom->domains_type_lst(); +if (!$isinvited && $dt[strtolower($type)]["enable"] != "ALL" ) { + __("This page is restricted to authorized staff"); + exit(); +} + + + +$r=$dom->set_sub_domain($domain,$sub,$type,$value, $type_old, $sub_old, $value_old); + +$dom->unlock(); + +if (!$r) { + $error=$err->errstr(); + $noread=true; + include("dom_subedit.php"); + exit(); +} else { + $t = time(); + // XXX: we assume the cron job is at every 5 minutes + $error=strtr(_("The modifications will take effect at %time. Server time is %now."), array('%now' => date('H:i:s', $t), '%time' => date('H:i:s', ($t-($t%300)+300)))); + foreach($fields as $k=>$v) unset($k); +} +include("dom_edit.php"); +exit; + +?> diff --git a/stable-1.0/bureau/admin/dom_subedit.php b/stable-1.0/bureau/admin/dom_subedit.php new file mode 100644 index 00000000..8f78325d --- /dev/null +++ b/stable-1.0/bureau/admin/dom_subedit.php @@ -0,0 +1,77 @@ + array ("request", "string", ""), + "sub" => array ("request", "string", ""), + "type" => array ("request", "string", $dom->type_local), + "value" => array ("request", "string", ""), +); +getFields($fields); + +$dom->lock(); +$domroot=$dom->get_domain_all($domain); + +$dt=$dom->domains_type_lst(); +if (!$isinvited && $dt[strtolower($type)]["enable"] != "ALL" ) { + __("This page is restricted to authorized staff"); + exit(); +} + + +if (!$noread) { + if (!$r=$dom->get_sub_domain_all($domain,$sub,$type,$value)) { + $error=$err->errstr(); + } +} + +echo "

          "; +__("Editing subdomain"); +echo " http://"; ecif($sub,$sub."."); echo $domain."

          "; +if ($error) { + echo "

          $error

          "; + include_once("foot.php"); + exit(); +} +$dom->unlock(); +?> + +
          +
          + diff --git a/stable-1.0/bureau/admin/dom_substatus.php b/stable-1.0/bureau/admin/dom_substatus.php new file mode 100644 index 00000000..71998be4 --- /dev/null +++ b/stable-1.0/bureau/admin/dom_substatus.php @@ -0,0 +1,33 @@ + array ("request", "string", ""), + "sub" => array ("request", "string", ""), + "type" => array ("request", "string", ""), + "value" => array ("request", "string", ""), + "status" => array ("request", "string", ""), +); +getFields($fields); + +$dom->lock(); + +$r=$dom->sub_domain_change_status($domain,$sub,$type,$value,$status); + +$dom->unlock(); + +if (!$r) { + $error=$err->errstr(); + $noread=true; + include("dom_edit.php"); + exit(); +} else { + $t = time(); + // XXX: we assume the cron job is at every 5 minutes + $error=strtr(_("The modifications will take effect at %time. Server time is %now."), array('%now' => date('H:i:s', $t), '%time' => date('H:i:s', ($t-($t%300)+300)))); + foreach($fields as $k=>$v) unset($k); +} +include("dom_edit.php"); +exit; + +?> diff --git a/stable-1.0/bureau/admin/domlist.php b/stable-1.0/bureau/admin/domlist.php new file mode 100644 index 00000000..06e6ae4b --- /dev/null +++ b/stable-1.0/bureau/admin/domlist.php @@ -0,0 +1,47 @@ +check_slave_account($_SERVER['PHP_AUTH_USER'],$_SERVER['PHP_AUTH_PW'])) { + $dom->echo_domain_list(); + } else { + header('WWW-Authenticate: Basic realm="Domain List Authentication"'); + header('HTTP/1.0 401 Unauthorized'); + exit; + } + } + +?> \ No newline at end of file diff --git a/stable-1.0/bureau/admin/foot.php b/stable-1.0/bureau/admin/foot.php new file mode 100644 index 00000000..07208307 --- /dev/null +++ b/stable-1.0/bureau/admin/foot.php @@ -0,0 +1,7 @@ +
          + + + + + + \ No newline at end of file diff --git a/stable-1.0/bureau/admin/ftp_add.php b/stable-1.0/bureau/admin/ftp_add.php new file mode 100644 index 00000000..328e83ec --- /dev/null +++ b/stable-1.0/bureau/admin/ftp_add.php @@ -0,0 +1,77 @@ +cancreate("ftp")) { + $error=_("You cannot add any new ftp account, your quota is over."); + $fatal=1; +} + +?> +

          +
          +
          +$error

          "; + if ($fatal) { + include_once("foot.php"); + exit(); + } + } +?> +
          + + + + + + +
          + +  _  +
          + +
          + " /> + " onclick="document.location='ftp_list.php'"/> +
          +
          +show_help("ftp_add"); ?> + + diff --git a/stable-1.0/bureau/admin/ftp_del.php b/stable-1.0/bureau/admin/ftp_del.php new file mode 100644 index 00000000..8fa254e3 --- /dev/null +++ b/stable-1.0/bureau/admin/ftp_del.php @@ -0,0 +1,48 @@ +delete_ftp($val); + if (!$r) { + $error.=$err->errstr()."
          "; + } else { + $error.=sprintf(_("The ftp account %s has been successfully deleted"),$r)."
          "; + } + } +} +include("ftp_list.php"); +exit(); +?> diff --git a/stable-1.0/bureau/admin/ftp_doadd.php b/stable-1.0/bureau/admin/ftp_doadd.php new file mode 100644 index 00000000..2322e4b1 --- /dev/null +++ b/stable-1.0/bureau/admin/ftp_doadd.php @@ -0,0 +1,48 @@ +add_ftp($prefixe,$login,$pass,$dir); +if (!$r) { + $error=$err->errstr(); + include("ftp_add.php"); + exit(); +} else { + $error=_("The FTP account has been successfully created"); + include("ftp_list.php"); + exit(); +} +?> diff --git a/stable-1.0/bureau/admin/ftp_doedit.php b/stable-1.0/bureau/admin/ftp_doedit.php new file mode 100644 index 00000000..ad9ae4b5 --- /dev/null +++ b/stable-1.0/bureau/admin/ftp_doedit.php @@ -0,0 +1,62 @@ +put_ftp_details($id,$prefixe,$login,$pass,$dir); + if (!$r) { + $error=$err->errstr(); + include("ftp_edit.php"); + exit(); + } else { + $error=_("The ftp account has been successfully changed"); + include("ftp_list.php"); + exit(); + } +} + +include_once("head.php"); + +?> +

          +$error

          "; + } +?> + diff --git a/stable-1.0/bureau/admin/ftp_edit.php b/stable-1.0/bureau/admin/ftp_edit.php new file mode 100644 index 00000000..d25486c7 --- /dev/null +++ b/stable-1.0/bureau/admin/ftp_edit.php @@ -0,0 +1,83 @@ + array ("request", "integer", ""), +); +getFields($fields); + +if (!$id) { + $error=_("No account selected!"); +} else { + $r=$ftp->get_ftp_details($id); + if (!$r) { + $error=$err->errstr(); + } +} + +?> +

          +$error

          "; + include_once("foot.php"); + exit(); + } +?> +
          + + + + + + + +
          + +  _ " size="20" maxlength="64" /> +
          " size="20" maxlength="64" /> + + +
          + " /> + " onclick="document.location='ftp_list.php'"/> +
          +
          + + diff --git a/stable-1.0/bureau/admin/ftp_list.php b/stable-1.0/bureau/admin/ftp_list.php new file mode 100644 index 00000000..d734ab55 --- /dev/null +++ b/stable-1.0/bureau/admin/ftp_list.php @@ -0,0 +1,97 @@ + array ("request", "string", ""), +); +getFields($fields); + +$noftp=false; +if (!$r=$ftp->get_list($domain)) { + $noftp=true; + $error=$err->errstr(); +} + +?> +

          +
          +
          + + +

          + + +cancreate("ftp")) { ?> +

          + +

          + + + + show_help("ftp_list_no"); ?> + + +
          + + + + + + + + + + + + +
          " name="del_" value="" />/
          " />
          +
          + +show_help("ftp_list"); +?> + diff --git a/stable-1.0/bureau/admin/head.php b/stable-1.0/bureau/admin/head.php new file mode 100644 index 00000000..01c7ceae --- /dev/null +++ b/stable-1.0/bureau/admin/head.php @@ -0,0 +1,67 @@ + + + + +Bureau + + + + + +"; +?> + + + +enabled) $isinvited=true; + +if ($oldid && $oldid!=$cuid) { + $isinvited=true; + echo "

          "; + __("Administrator session. you may return to your account or cancel this feature"); + echo "

          "; +} +?> +
          + + + +",""],legend:[1,"
          ","
          "],thead:[1,"
          diff --git a/stable-1.0/bureau/admin/hippo_bleue.gif b/stable-1.0/bureau/admin/hippo_bleue.gif new file mode 100644 index 0000000000000000000000000000000000000000..a23ffd3feb2c63d6f137394a572708007962ae1b GIT binary patch literal 43 vcmZ?wbh9u|3@AOMLlFmbi?uRQ&hfAO3(3=Gx)_{$7x literal 0 HcmV?d00001 diff --git a/stable-1.0/bureau/admin/hoster.png b/stable-1.0/bureau/admin/hoster.png new file mode 100644 index 0000000000000000000000000000000000000000..5ef5680e8bd1efd725d99694a19f1ae063a1c209 GIT binary patch literal 6047 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 Z{vVCew07W4m!SXv002ovPDHLkV1mpI+e82W literal 0 HcmV?d00001 diff --git a/stable-1.0/bureau/admin/hta_add.php b/stable-1.0/bureau/admin/hta_add.php new file mode 100644 index 00000000..3bfc4563 --- /dev/null +++ b/stable-1.0/bureau/admin/hta_add.php @@ -0,0 +1,66 @@ + +

          +
          +
          +

          + +

          +$error

          "; + include_once("foot.php"); + exit; + } +?> +
          + + + + + +
          + +
          +
          +" /> +
          + + diff --git a/stable-1.0/bureau/admin/hta_adduser.php b/stable-1.0/bureau/admin/hta_adduser.php new file mode 100644 index 00000000..3ed1bfdd --- /dev/null +++ b/stable-1.0/bureau/admin/hta_adduser.php @@ -0,0 +1,72 @@ + array ("request", "string", ""), +); +getFields($fields); + +?> +

          +$error

          "; + } +?> + +
          + + + + + + + + + + + + + + + + + +
          +
          +" /> + " onclick="document.location='hta_edit.php?dir=';" /> +
          + + \ No newline at end of file diff --git a/stable-1.0/bureau/admin/hta_del.php b/stable-1.0/bureau/admin/hta_del.php new file mode 100644 index 00000000..52ffe975 --- /dev/null +++ b/stable-1.0/bureau/admin/hta_del.php @@ -0,0 +1,48 @@ +DelDir($val); + if (!$r) { + $error.=$err->errstr()."
          "; + } else { + $error.=sprintf(_("The protected folder %s has been successfully unprotected"),$val)."
          "; + } + } +} +include("hta_list.php"); +exit(); +?> diff --git a/stable-1.0/bureau/admin/hta_doadd.php b/stable-1.0/bureau/admin/hta_doadd.php new file mode 100644 index 00000000..e1c666bb --- /dev/null +++ b/stable-1.0/bureau/admin/hta_doadd.php @@ -0,0 +1,47 @@ + array ("request", "string", ""), +); +getFields($fields); + +if(!$hta->CreateDir($dir)) { + $error=$err->errstr(); + include("hta_add.php"); + exit(); +} + +include("hta_list.php"); +exit(); + +?> diff --git a/stable-1.0/bureau/admin/hta_doadduser.php b/stable-1.0/bureau/admin/hta_doadduser.php new file mode 100644 index 00000000..d497ccd1 --- /dev/null +++ b/stable-1.0/bureau/admin/hta_doadduser.php @@ -0,0 +1,50 @@ + add_user($user, $password,$dir)) { + $error=$err->errstr(); + include ("hta_adduser.php"); + } else { + include ("hta_edit.php"); +} +?> diff --git a/stable-1.0/bureau/admin/hta_dodeluser.php b/stable-1.0/bureau/admin/hta_dodeluser.php new file mode 100644 index 00000000..5ebd0784 --- /dev/null +++ b/stable-1.0/bureau/admin/hta_dodeluser.php @@ -0,0 +1,46 @@ +del_user($d,$dir)) { + $error=$err->errstr(); + + +} + +include("hta_edit.php"); +exit(); +?> + diff --git a/stable-1.0/bureau/admin/hta_doedituser.php b/stable-1.0/bureau/admin/hta_doedituser.php new file mode 100644 index 00000000..2e6351d5 --- /dev/null +++ b/stable-1.0/bureau/admin/hta_doedituser.php @@ -0,0 +1,63 @@ + array ("request", "string", ""), + "dir" => array ("request", "string", ""), + "newpass" => array ("request", "string", ""), + "newpassconf" => array ("request", "string", ""), +); + +if ($newpass != $newpassconf) { + $error = _("Passwords do not match"); + include("hta_edituser.php"); + exit(); +} + +if (!$hta->change_pass($user,$newpass,$dir)) { + $error=$err->errstr(); +} + +?> +

          +
          +
          +$error

          "; + } + else { + echo "

          ".sprintf(_("The password of the user %s has been successfully changed"),$user)."

          "; + } + echo "

          "._("Click here to continue")."

          "; +?> + diff --git a/stable-1.0/bureau/admin/hta_edit.php b/stable-1.0/bureau/admin/hta_edit.php new file mode 100644 index 00000000..311d2103 --- /dev/null +++ b/stable-1.0/bureau/admin/hta_edit.php @@ -0,0 +1,122 @@ + array ("request", "string", ""), +); +getFields($fields); + +if (!$dir) { + $error=_("No folder selected!"); +} else { + $r=$hta->get_hta_detail($dir); + if (!$r) { + $error=$err->errstr(); + } +} + +?> +

          +
          +
          +".sprintf(_("No authorized user in %s"),$dir)."

          "; + } else { + reset($r); + +?> +
          + + + + + + + + + + + + +
          + +
          +
          +" /> +
          + + +

          + +

          + +

           

          + +
          +

          + +
          + + + + + + + + + + + + + + + + + +
          +
          +" /> +
          + + + diff --git a/stable-1.0/bureau/admin/hta_edituser.php b/stable-1.0/bureau/admin/hta_edituser.php new file mode 100644 index 00000000..6bde93ed --- /dev/null +++ b/stable-1.0/bureau/admin/hta_edituser.php @@ -0,0 +1,63 @@ + array ("request", "string", ""), + "dir" => array ("request", "string", ""), +); +getFields($fields); + +?> +

          +
          +
          +$error

          "; + } +?> +
          + + + + + + +
          + +
          " />
          +
          + + diff --git a/stable-1.0/bureau/admin/hta_list.php b/stable-1.0/bureau/admin/hta_list.php new file mode 100644 index 00000000..73d10b51 --- /dev/null +++ b/stable-1.0/bureau/admin/hta_list.php @@ -0,0 +1,94 @@ +ListDir()) { + $error=$err->errstr(); +} +else { + reset($r); +} + +?> +

          +
          +
          +$error

          "; + } + + if (!is_array($r)) { + echo "

          "._("Protect a folder")."
          "; + $mem->show_help("hta_list"); + echo "

          "; + include_once("foot.php"); + exit(); + } + +?> + +

          +show_help("hta_list2"); +?> +

          + +
          + + + + + + + + + +
          + +
          +
          +" /> + +
          + +

          +show_help("hta_list"); ?> +

          + diff --git a/stable-1.0/bureau/admin/icon/browse.png b/stable-1.0/bureau/admin/icon/browse.png new file mode 100644 index 0000000000000000000000000000000000000000..d5bbfcc7516b1832bd533e51653c6d9966e73cd9 GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@O3?%)b!qdeuq~cbx zhC2h>rJGKV6xyt2tbN9iqUCU;JLbme?i&kVb;}$$B(PV@=S@M`MCL<2qGCHN0&XxK z3rp13Z=4k@!?NVAVvg~ICLxa7EwT^iF&P}5Te6>l;jDbxsRQXc5<>&kwMg+cAc^E1*!Er;B3<$92`-i<}1(cv$6kIPh9D1pJTo zVizc3aNhi1>umS;QcDhgkN#ptk7surRKLk-)UAHH=kyHOAeW;tQL9(`Pghd%%G^3X t+vVb-w75UET>@f$H9FPWrxd2h{5gMLqVxY*xoV(I44$rjF6*2Ung9iaQO5uP literal 0 HcmV?d00001 diff --git a/stable-1.0/bureau/admin/icon/encrypted.png b/stable-1.0/bureau/admin/icon/encrypted.png new file mode 100644 index 0000000000000000000000000000000000000000..2153f182f294fefc55c685baf6d133e077668862 GIT binary patch literal 590 zcmV-U0%nSGg$pZu|xB-K)l%}-UJ)2GTd-r&eW)s~F9vGN2XXZEmnIqV7Ow-ic z_kO=G%JM3^io4w|!{IQGS(c?oqfsfOP&^n6v}u~!Fbr)NhBi%8_j*13ud1C2CX)%4 zWwGwq>2&mTI>oZALar=>O{dfUDlG#fYv;CmA-OE}*HS)xe69mO!d?34OcSRuX_9e1 zOK_LjO6Fe1&oeKt%VmH0{8Ha(NK$>D*1d-`8V_hRAAx|y;)3z`7in}wmiffVOrKw@ zAUPmSQ=WBR@aF9Y;#eW56U7>D=`wek935(|uUed*P7q=vJO|t?PG}#zqJ8iL`}cQT zM=_tT&0)DniIN(%dJ`#S5g=p*QSDHv9doyRh^WrVDvCrZA{0TU*w@$WH$3*_xbzpu zvUKesr7YN{8RdYj(GWr)geU;??OOrRs(nM}3O0bXFQr_?04YnBC`s|uSEAr4uKfeY zQ8>zGu528~#&Hy`vaxT@h{9;oXnTbB?~e7+mODN@d;kCd07*qoM6N<$g6u#2=Kufz literal 0 HcmV?d00001 diff --git a/stable-1.0/bureau/admin/icon/exe.png b/stable-1.0/bureau/admin/icon/exe.png new file mode 100644 index 0000000000000000000000000000000000000000..a6de4167eb1cdfc4250697d7b07402562ddb9df3 GIT binary patch literal 218 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFOqTmsppc2Di(?4K_2h&G#-oE;Tr#IT*wb93Zq*v-VS{jfyE`^o>`1NAd_y85}Sb4q9e0Off+ A3IG5A literal 0 HcmV?d00001 diff --git a/stable-1.0/bureau/admin/icon/file.png b/stable-1.0/bureau/admin/icon/file.png new file mode 100644 index 0000000000000000000000000000000000000000..25a06efb280471ec48cb56efb605be7520a90e8c GIT binary patch literal 198 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf67>k44ofy`glX(f`FeQ1ryD4mc_K%nx80VAZjbM0H)t!dv+C}xW?t>pe1c(x oze;^V(YeCujRv>>J^jcq?VauM#mo4908M4^boFyt=akR{0PM#;IRF3v literal 0 HcmV?d00001 diff --git a/stable-1.0/bureau/admin/icon/folder.png b/stable-1.0/bureau/admin/icon/folder.png new file mode 100644 index 0000000000000000000000000000000000000000..d2edbaadce6f573cb60e26fde78ff9a1599a9620 GIT binary patch literal 726 zcmV;{0xA88P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FZT01FZU(%pXi00007bV*G`2igP# z5jz&p5jRi(00LG?L_t(I%Z-yUXcJKw$A1Smyn`F=ib@U?@`gea5PIOy%hZBHy-sEj zB%SOiok9mGc5`%87wKf`(4tc_DD9$61#L34^fCySp>P4Axgl^53_OP`b z_v6q1`#!YRj3rE=!^Kcve*2e9M&;e~^g-hQnU^d*SkeH=Swi!;Y4EqwTC*^}pjmyV znSY|IYgN5d+tEkOBYl2;uEWJpkDaZrt?OaS#DSr;rdTNIx1Wx1Y}h*K^5XqI9Pd*N zJc8K(IW3X5C1bx+x2Diq8^91Cr=|8@Hxa*LN}fwNlfw}f^>)JZj}6peooe6?VFiiI zOO_ukv-^41FaeZO#7dBM5)=^kGo)=HOxRluah`?L+g+Bo8>lxgsRkax7Qo1qFa;`! z5Z#nWDO$n>6a3o_QQAY=E}jj0Yh@f!;loKxZ)0Twu!M!`Ca7+V=(}L12wM>KGg`I< zg9JbC(Kzej*@E(n$Np#tCVQ{fu#-5H8=3`6_(eEhpU<%eY~VZmUSl|l`j zT?bsdkE^g*pF*KPxELZVfn{3s`n}09{jUIBm?`LB&c8UQKTRcDW*O@Ww*UYD07*qo IM6N<$f-_q@zyJUM literal 0 HcmV?d00001 diff --git a/stable-1.0/bureau/admin/icon/htm.png b/stable-1.0/bureau/admin/icon/htm.png new file mode 100644 index 0000000000000000000000000000000000000000..125dc40b3c8a14c493ebbae9361e5435a508249b GIT binary patch literal 745 zcmVPx#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FZT01FZU(%pXi00007bV*G`2igP# z5jqGn1v_#800L=AL_t(I%Z-ykNEBfd$A2q(_y!bapuV9X!8%17D|c3K6%!M!kYpT3o5COYU6vI#rI3tH*F>+C)$UQ zGXcb4S=Nasz1ya;R%QIz_>t4nLMd?y;3}KklR2!*8h5W)dOs_l>v+D4si#QyWyoc-0CZ&@72BBs8<9?Ugbp-Airb?E$-z#{ zN@r=Ug16@p#UV;5q~&)2TGM4PZBqQ`5&26Lzgm=kjG$7vV^a|n8eZt30U`nFPyAg` zEI3;Mm>FiOX&zi~aP}19uOls=AP7NRga~3Gk^qGuA|1fSr&6NvZ5_{pKv_&R^1K>Y z<@v=`EPo!t8nisdZrKnC#B`SH_$CHU6}Q(!`4%DySJiN~6^al-4?$schiE+(5{D2A z@+ZiD7p@~Z%AhALIPL^z+NlI6!7(}9z4ghv)%L#zPx#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FZT01FZU(%pXi00007bV*G`2igP# z5ji+M@mL)I00K@)L_t(I%Z-x1YZGx8#y?jwd;<~gpu-(hxZ6BI@B)G@2sSuKp@V{h z$s`q*LI>%8;8g6`(c(~(Ma)!EaA-kD-7bPZB2;=srPm>F2My*$555kUq%CIfS>7)X zFVFkD-}f=J)|^MJTDwS0K)q2nM(@I;hV`{|BokCYjcfN)$mUjq%IylZYE6$sCJK;& z=Xn<>vs9tAv&YhtrLog`qi#$Vn7|gTA`~F(gkzC%P}WnUhRsWk28a`%T``GIAs$48 zQ8*T{ZJWkcgXNWFny;HVskP?Cw5|32E8TW&y%8Sjh326S9&PC3-=B50Ue&?fdEI{3 z*7}#$$KMZi`|Y-VzV=K9*8@FOF$`UKFh}yTLEMMd2}DtZ87H*9HR<*ul7i6MX%YR5 za7-Kj%2noq0D!5~wi*10i927g9@g+n3e`)PyP;@(-6c6nsay_7(uAZJGsseuQb_+K z7hu{!7HbG#&d)MCtuT8Lp6j3v9Ey>NrHTNEBov2L4L`ad2>1b%EWA4lSiO|mO%L0G zpcmlz`8kt*0vQY>K_Q4p?m!h3boTKU??WM<(NRQtniBXfAV`)%Cdi-UEHdH8&?pCGEqm|rTo2cC zhlv!-lEQa=Jl94kg~~u=aOPkXlCTpR0IN?|b@ko?B7@;XL1myy;LTWwB)Nl3CWkgY ziSwOHMMMM>g^(hB=za)u(SiKy;5;6$tn$D33y9bhzhj|&5dZ)H07*qoM6N<$f`sfEfy9*OW{er3uA#oMV>B>ArhBM&z}}MWWd34!R3h3 zWH%?_zyIyG>igQxJNJ%{TcJhQ@Q>Q3I|6~_X;KWY&YgVoLNNEx-srty4*I*hw@(jk zf3ZpXUeTv-H9I(j*7NqiVmtV5Yvh_%`|Gj1pDpTr8na**Z=?jGce3#Fb1MCX=w~I zXU;q`li|#nGyl&p{Qo}_EXyFi<5?h3J!46bUoeBivm0q3PLj8~3%C6BBL{$-a!(h> zkcwN$2?}f*+S=F-+*}>zYHYxD=tiKlganJio2k3YjU}|X8g6c07H({y)pRs`T}&iz zxbf+u(rM>TsTwcevBSdQ$nrBRO*aERN@}N-q%_~SvwQoQS8p0NNJ>Pcoq3VbyfMA3 pB;~+S>stwr?(BAK(C}Z#z);zy)%>RFJPXhX44$rjF6*2UngASBV0!=n literal 0 HcmV?d00001 diff --git a/stable-1.0/bureau/admin/icon/newfile.png b/stable-1.0/bureau/admin/icon/newfile.png new file mode 100644 index 0000000000000000000000000000000000000000..0fd3461b4e439044ef6e207c302da385686b36d5 GIT binary patch literal 141 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@K3?z5nYFPoKI0Jk_T>paskk|L+@Eah-SQ6wH z%;50sMjD8ds z#?d9IuqlG!!@t!D+KpCoW?z3PC46@Be%9SDlvk`%)j#@OwTMX~>V5CcT7ijEqCVMe zXuKo+dF`U94;5DwRyk?B0|S^~a7;_t4islB z3GxeOaCmkj4a7Hj+R~a|V{LgP7z{ns!Njz0u^lm9oCxfS}pUXO@geCwgmN3Eq literal 0 HcmV?d00001 diff --git a/stable-1.0/bureau/admin/icon/openfold.png b/stable-1.0/bureau/admin/icon/openfold.png new file mode 100644 index 0000000000000000000000000000000000000000..951766b6129eb8a571e096fa303859f1219220dc GIT binary patch literal 206 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPE^4e$wZ{r~^}%$W>l&ZPZ6GZV-J za)C15$($E}6k|z{UoeBivm0q3PLj8~3tM8^j#?lm%G1R$q~ca`LIbm#qa%m2iAe~9 zj=-ZwLK+$x3~4)B+EzJA=;>wgG$kxpbWDNk$t(%gMoG1Eex3rRYR8h29NIQ--n?;^ t#03Xo;pF6_CTuIr6qloY^V%cH!Rd^=DHwf9c1_9Ajr-XzMu8cE?@Z^>zna&jV4Xe?F=o zd{mXi4lUjKOf%#a`_Y7Hf0(D9w6i6CSTg-Cmv1T5TOI`=#_*{bXy4 eAG2Azb~A2FWt-<~T5%p|FN3G6pUXO@geCy1kA~6! literal 0 HcmV?d00001 diff --git a/stable-1.0/bureau/admin/icon/php.png b/stable-1.0/bureau/admin/icon/php.png new file mode 100644 index 0000000000000000000000000000000000000000..4078c56ae06513b6fe7db3bc61fe81ae8a01ddf0 GIT binary patch literal 255 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPHF4e$wZ{r~@e8VJlxOFNS`b7tDi zGc!Q|NdBLB=FH49|IdH`P}P59V`E0S%sQY(#*!evUYzWlug{yPx# literal 0 HcmV?d00001 diff --git a/stable-1.0/bureau/admin/icon/ppt.png b/stable-1.0/bureau/admin/icon/ppt.png new file mode 100644 index 0000000000000000000000000000000000000000..fb87643a199afdcd19b01d1db1f0ea912fa7b17f GIT binary patch literal 260 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFO>_%)r1c z48n{Iv*t(u1=&kHeO=jav9JhQn--P1DFKC|JzX3_IIf$XJ;=$R$m4R6QF}v2g;>j8 z?j%Mz9fuQN;+r~m{ZEl=V^|m=>98QQ;o-;A9%kCfM@%BthN}dIZb~}$RpsN!2mjrl rbgh*aJb%>h%d?_<+01$Nk20D2e<;j9+aSdbw1&ac)z4*}Q$iB}RkTxi literal 0 HcmV?d00001 diff --git a/stable-1.0/bureau/admin/icon/properties.png b/stable-1.0/bureau/admin/icon/properties.png new file mode 100644 index 0000000000000000000000000000000000000000..665f2cb68880f6abfe6b81998977517e6f59dd40 GIT binary patch literal 192 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@I3?$8F6>IGlAY9Ku)ZXyi*U z{eAvQ*LB9K_pcQ_9Tv$l$UN8RKC#y(_(@i}!`I@|(@$<#z1na3ULEZWqqIE3=4(3N hnO+^2_06gI!f?)0@LlUHMsJ|$44$rjF6*2UngB4*MdJVf literal 0 HcmV?d00001 diff --git a/stable-1.0/bureau/admin/icon/protect.png b/stable-1.0/bureau/admin/icon/protect.png new file mode 100644 index 0000000000000000000000000000000000000000..76a2671b179ba6902c0fcd12a3b9231dffc762cf GIT binary patch literal 623 zcmV-#0+9WQP)d+y}h_Tz11S2*t2apAb=_t-xP2!bF80<&tGRU}E0 zB;zE3S;c%lw`(?$h+VUf-X7)1LTc%t!5lXMCcutm!i^hELp3S}f57<$hXep?_trAP z3feLOfIJJ1KTX8>sA&|9iorF`%lz=gVZp4zamN6FofWs;4(hLek1l7&Clm2?)HGE8 z%Fh%4SSDKS8>VGKee<2mMOB8rQBnv!{oy<9S6PNVYp+!DZX3IJdM0FwIMT~1r%+{5 z-%?vIpG&Fw3i|x+J2IUTLa?rQm;QxZ1OQL~tD(D{>jdSq;kT(j3yEBW1Slozp&EW@ z{Wr9K^$S3>3`gGL{TI)lg?wEtd4s=0XP2$-|3r+1SRe)@AjaTiF!iQVUYmZ8rRZ*F ztjG#t2q6$d!~z1*GNKX%kcIB|SgQ@o#9$aO#`Gt;{z$Ly*D0Zh5yg>!h(weT4jRmH zGj!US^cTjMUePs8vuie?gi17AhM7W+Ug>4d)V4H5AsO?spm*mFxfj002ov JPDHLkV1ijY4$1%k literal 0 HcmV?d00001 diff --git a/stable-1.0/bureau/admin/icon/ra.png b/stable-1.0/bureau/admin/icon/ra.png new file mode 100644 index 0000000000000000000000000000000000000000..b76d8b9e89f5fd7a4d0e7e9d24de4e80ca10aafe GIT binary patch literal 253 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFBh%pwL(s%&9LXGvl8z2+0S;3eMOVmb2ryj9f5alhz^ruGegZe-VIaq6s>^fGkCiCxvXt<7&%iJfOfnQzMhgSQ z8B2ovf*Bm1-ADs*lDyqrm<4%!J^?vao-U3d6}OTT6c{8Le=svMOSepF;81I*?BPx5 z;$6g}^YyAClS?g+55sD1)|ClA6u6$%Bq*kc1D%obk?XE**9uvnDGZ*jelF{r5}E+} C-Y&@i literal 0 HcmV?d00001 diff --git a/stable-1.0/bureau/admin/icon/sort0.png b/stable-1.0/bureau/admin/icon/sort0.png new file mode 100644 index 0000000000000000000000000000000000000000..f986bcff0e00ad6ab806db4adc5397063f82b178 GIT binary patch literal 128 zcmeAS@N?(olHy`uVBq!ia0vp^AT~D(kYHH$b=^@Q#Z(gH7tFv=HuW^H)F&i3#B|Nr$4*O(Zz XYqrtBf Z*cL=^{n>W@?q;Ay22WQ%mvv4FO#u6!CPV-L literal 0 HcmV?d00001 diff --git a/stable-1.0/bureau/admin/icon/swf.png b/stable-1.0/bureau/admin/icon/swf.png new file mode 100644 index 0000000000000000000000000000000000000000..4a63816c2f64a5cc1e11cf644dd7968183bf5e1d GIT binary patch literal 348 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 W#t@ literal 0 HcmV?d00001 diff --git a/stable-1.0/bureau/admin/icon/xls.png b/stable-1.0/bureau/admin/icon/xls.png new file mode 100644 index 0000000000000000000000000000000000000000..cd92c6740491c345f7645eb691b29bb732d4b860 GIT binary patch literal 257 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFy|NpInR@8u$mIV0)GdMiEkp|)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FZT01FZU(%pXi00007bV*G`2igP# z5jY$h>5Yv500L7` zPBqY_;2<5lnMJ5>ItWgZ3PRhd*G?IV#4YI{rrTw^g9h#c1K)#wa1Pfb+77vP4@aUsCe;Yanizq@B4VO-WV4iR`70m)Hmv55&)->Yoq|J+WH&v z`8@gQJUGzlcBpUE0VowqX>O!J^V3!;7V7Jp93JmcUD+f#?-CsBgN5SKOM;_-IF2#a z(C_t$1`)Y5O=*7IN?mW}AECs8awc&ch1AzS5Dh}YvtP8kU3S0jUy7(^sIF{gnHL(Y z&^it%+$-R^3egd*B&2iNrgXQ6x|5|&2oNwKh`^K&4j2rsGW1RZ!mvm0EW-1jVXQ_e zg$(1r)@TLt^WYdv+yV!tosb{jyBH(L&>$ADhCGl+G9GVCV9q;;_CY*^2$2|LKC_fq+u@a|;v-C1zZOcgq7pwokTcFSjXE#<_ZFYN|+LeHQO4yx9V-Qi#>) zp`cGY+2Jj>;aeM4xlR!FLxQ8=G77Gpa*Y~g%CMTne*penIf7#f;64BV002ovPDHLk FV1l{`J3{~f literal 0 HcmV?d00001 diff --git a/stable-1.0/bureau/admin/images/admin.png b/stable-1.0/bureau/admin/images/admin.png new file mode 100755 index 0000000000000000000000000000000000000000..968f00b8917897e8fc0a27c71df686103a571628 GIT binary patch literal 734 zcmV<40wMj0P)8q!xRxp(E%OAmjE@KFW_`5UA{~=Szfg1nwwjz&D;Kg)^)44 zx^k;6FS2f2tyWe`7f#bqRLV4tP)86DCC@?Sa1{6*yKpn4dTzhZ=h^do;W+gRr4UXK z;9p8`yM_XpYr!cc&4g460Kj&bZH97qzB>PQ@9nS(#3o~mHxf%G_Scr@1%xnVo+`+2 zjYbXa{+0o3Z-#W5!rfR*A(zV%OojFo&&M$cVQq8g%L!*JNclY9(}4q?OC%CSBzd*F zrK!Gp&b5RSg!t&z*k)UtwnyouR4Q3wG6Mj@0iQ;OaU6#b`ZV)-m0l9;(tta#X5S;_CEs@VB( ztD#+wv(EX2z-h7y002kF?Bc`Z4}b7_f8WI96eCgP7pjl*{9bq6W{;_-SKv(#UqfTV zCCt6*{W$N23N3^%5DaBy%hDT@rN+0>fxW3=OvZFsB5Upi(ZJ2S26N4xe(S~+oe{??D#6Qd!qtEi!=7DoLo~?9r%wtOLNhcCj{B`8&6ab4rjW2 QFaQ7m07*qoM6N<$f_OSg0RR91 literal 0 HcmV?d00001 diff --git a/stable-1.0/bureau/admin/images/bgborder.gif b/stable-1.0/bureau/admin/images/bgborder.gif new file mode 100755 index 0000000000000000000000000000000000000000..47aa13a146016a8605b274dc471b8a4878c5cf54 GIT binary patch literal 54 zcmZ?wbhEHbyu-lA(7?z51poj4SNzGs$ORP80r5dH3{1Q|{VPwuGI*ad@?>jk%tXErbCMjip^SgrD{7k@=u)X(#+do$x<=}$I zMc~NBOVEkZ08A!+1veEA?D-hn4XL%$*6igriHxB zuD)5wX2$@O(xn^G=dUVYyORn;IZ&6bt(ERCWf;RTfMX8|yC=D9s?+Fi?R1N~y+NyY zFMD%yr+M)X=fKPSM*7Z*>7^D>!YOdl5i;mw=G^1A>xHXJ_qv_Bh%HWFy=@~B0FVH3 z2twEs0loIsc;MKaE9VKtVmUE8$B00MsTwmpXn0W77*iN0j&Ek6^0|De(m~UXh7GSy z%n1zpcqD*fKZg7m@S>r?R?dJupm!Fd3w?CS**Kiqce+`w%}BK1K}Z>bD*r)l0=v?_{8By2d$BV!N(mS-Q$@ gEzD0%r%rAE0a&rlI;T|?9RL6T07*qoM6N<$ffC6J%#~_b)K{GbsKw8ES8RZE}EabAWDh zf&M%oZ*+nAJ}Yl@g8n`taCL%jb%p*vA@@Tt`A$26g^~MKM1qErgNBp+SvZ4-l7okn zgolxYhm(bflZAC zp!c(=!^qae$koNk(Z$Kt_qVR?xxmHB*2c@&`?;z9yQj&{+RM=1%+TD}%+<`%+|JS5 z&(hw@)#K>O(dW$2(beG5*5T3C-Og9_2=pH;qCb5?)mKQ_u}*Y^X>5L@%Zra z{OtAp^Yixd^ZV`g{PXqs?)Uxk_WSYo{O$Su^7#Dq_xtzv`SSVw?EL=t`1|+y`}q0$ z^Zfqy`~3I&{qg?(^Zow*`S|$z{`vd-`TPC#{r>s;{`>s>{`~v>{r&v@{{8;`{{H^{ z007eW_$vSa00DGTPE!Ct=GbNc0004EOGiWihy@);00009a7bBm000XU000XU0RWnu z7ytkO2XskIMF-Xd4GkOvc>lCJ0002kNklE3o02F8+bEz{fDE3^EA`N0A+(lTfD^(5(7 zM#c$%1@di70;-d>IHW_<1;GLn19i2HG}%O*QgelX0%3D{yWA9|IAx+sGV;WL0^xI7 zCb)~UGx0{1XBUWoRn*uDbIGyJWwtLY76S|T@Ua^`_BWSRNdN_$RWvlzHPlpCE&(X+c1$5+zlM7*T9UxMpRoZl3?{2gc$$_wO(6t>_kokc z8zmTv>y*;_cSkOtKOO3BT`N|~)tV>>PT4^jLkLO^aWb47oftoJ;oRon*~p87orgo+ z-lgQSVOn(?>}+dpY4!jBO_Oi{x)k~G>-iGV`i6$!pX|!wqQz)+^nG|iEi7tg)kJQW zvbI*vWb*~RLhANvzTDNhefndnW>nFRU|&?Vlc_~PbmmLc*Pxsl2zs27qR0Zzi-Ks> ztU9svVlADu*Nr4rm-IHjKby7{CeTi)N<&KOANN_QT-^LktqJ0Pq=S)n%N5CrqT6Q6!)9N-DD7z5Fz zLS@}F4D#@KSj%Yp_5_>~-`L>5yE+;x21)&hKY9~cCkjLW0-#9z^ta`&Khu!~?akD@ z$EEBJG$B+DcDcdJ@5}dYzswieRCvyz_#_dF0*@e|l)0T^I#(o?wSAixB8N-RZr-|z zWyRUk+w%Bns-t7Kh=G8SAYcRmWy~;1Ym>*Ov}S>PCUN8XfJ2fo$8n*-!QAST@yTMK zy~QO#fd`NSjB&)KW}OzwmYRrNxfJZ}AKav|p=xGwB0L>$Y3^+DHHv~jIaVx{6G=@k zs>g>99vwLLAKw<;no*sL%w&=)reQM1VG*?jTDyBglB{ese*r>0bT^G@k<|bI002ov JPDHLkV1n2$hn)Zb literal 0 HcmV?d00001 diff --git a/stable-1.0/bureau/admin/images/edit.png b/stable-1.0/bureau/admin/images/edit.png new file mode 100755 index 0000000000000000000000000000000000000000..ca7f39ea0eb9d5b131833cd9fb24de912b84283f GIT binary patch literal 741 zcmV0cZAGpJ%NOgf`pKQhLVGZlEZXJgNKsrY7vBom4t|rg@}@YiKG5% z0EUZ~se)*RjF{SXJE(_?+= z3HZW8`^p{H#Jk4H)yB!z!^+(K(jUdk-u}-p$;;Qs%-YM$*!j$4%g@;R(?!eC-TTpC z&(Ye?(cJUUjnUHJ(bL_`)!_cuQqtAl(AMP7*W%UK;``H=*4X0K+T+*S*`{{EvoBC?6| z5&!@I0d!JMQvg8b*k%9#00Cl4M??UK1szBL000SaNLh0L01FcU01FcV0GgZ_00007 zbV*G`2i61)4I4OywaeH5006y7L_t&-(_;us0)j9fU0L}q1~5qN1cJtT8+#WGh(HoZ zpsm=}K$;mzpgqc3ONdDjAyDIFq0AyKi4e%MG?rrXQ$q;2yXo;N7O2AoNqIsF62Vo%HqzAl$WfOgeF3H3yTuU zN?vZf7P(kN4$XT^CX2<)#@g1|&j0N9`?*-2tLNgmd#Jgsci>i2_x|nqmE~?I>jARX z!oxdQ4>)JR0rj_aB=?>SSJ&ylt)|?yGfSF|{d#zxVlfhcl?5IoN{$)AYRstQ__qxW z0O(S_S$z5Eha(4r2}v>{YDhUbzm{2kx3;htR)GksNz6>O)SuFE6=mJeo&<%366WP4 z3aU2kj+NKoKLc-?Ki<4B91W6)&17Olh3d1B&ka*x@)8BLr|$vCwx&B?G>;lHwq)s= zc;&L{vV|{?ZOcVj5AxZFJwS#;P1UB|0KVTi{k(Bca&C2)EO~lp^N)KMVdB$QtR*!} z4DXq&1#7%`YOK5_+nR2FbemKYrL*(Psz~))`ab%9ja{&Uggvu!jx9V3!pSKBBQ=SD z2p|$6k)C&H0Evkuqz2A0yz?Mt0RWbf2p|whgft)~04APKtZ$+*y_`fy z6$B8G1|(ciQ3GJG=ci$@&NAQ}bEc;Yy+7iW%aY~QB$E5n)%WE+38xmV#OU$S*Eeip zmKDyavw#Szygq+mUj3OF8+N7I-*&!F6VrnAJEXV_h}s|Dg{mmSIpu&EAl1R%u9t^5 z&Rx63lvYeBtr!{SIzP8PxSq375RS3KLttos+xNVZNzvZ{63Io`S65C1@kBvt7S!~0 zd|?xVsu>**Q`5fPxoU?%caJyroo$%2v(9ER9>m0+nbZ)gVX>^DM#FL4>BpbW-I%bq zQNz`B09xv|#)=AkHiGxgIXDOBtg|EH;atSYeU0I&b^idVvIa!P_<76#0000I^{{gO9xm9Ci zZQPJZVl*s-a8(2vdZ&f9Gc9xbuH!;uTNi3nHD}m(w;;Zk#L_3@$^|XAb%GsuFf*Fy(*szo zl$}#TdwR8Bg@&a*xf5%4z~-Rpc7&JHcS{;Ef`cw7Sj9M+Xs zkLplq?3fdN`{7(B5Jl3_gdXmldg92CxkUrGb8&eUUeU$#$4TT`6 zfYi{_7p2WZK9~p>ie|3Xs^(i*3P37&A^q)_#+uP#gmEDR0}%f9e*4fw!;`717wDQy zZmraDqmG3yu>#8*PM;s>>j`)$WV*6_DhmW)e}`kkgr2|!Q> ztXZctJ*o{QyKu2gMpJ=-xON6$JPN%@)NZjs#AC$iM}oN^Y)))mDYNvsUW61}$XU~q z(V6o>Pyl+s8vw@v$Cl&vT002ovPDHLkV1nMnM=SsU literal 0 HcmV?d00001 diff --git a/stable-1.0/bureau/admin/images/folderhta.png b/stable-1.0/bureau/admin/images/folderhta.png new file mode 100755 index 0000000000000000000000000000000000000000..80ffec7729bcce6726111ae06c1b0de950118220 GIT binary patch literal 753 zcmVq-^6BBhMkQhOXAP|TIC@n1%IKm&H-Z_bnqFUPo8|1M=)Im{}b_Fz;WpN z4~3`CzSryc&tCYeVP(abp4uJAx5i@1$fx4%Te;szau45K-Sa0Gy{}8&yOG^<$JL1m zZF9rBcBwO+3du+;6fF*{ITijjNDSV;ej^oVQsk6kIWRR=I-5^kJl_H!S`Ef1WZKlX zA4}QxSS%_7fEWu4iMSXF0$!{2`o_aMx&Gb+AwVgJA~4Q&YE)H~(a)N0VBNroa^OB} z&Ftl)bm(T+fmcx=AOH_ak6u*finJ}Qt}oQ4i<-8kBhEk)!Bs-9zwJ#Mb>b1q7$X48 zpIbjj_F&7`5Xx_HfyJRITe>(NvS#9+~ zdO9LXQvC7*swH09lnMpDUUsz&TwAMR-4I+yOrT6V%5_IY5MX9jzc3J5G@#-H7E0VO zIicLee!c2o4VuUBbhpBlW4-TTO>vtU=8Xu zsJ20Rk46y^(Aw($P+#Q&A8H;F;6=Zn1SCMN|F{`&p3b!W4?Y%)u^(6H4w>0s zjaJKU8Dlhv(UA2wuU-`LU1;LO^jr%t&!v_9Y_~~Fms@<^8MrQ2);06am z#Rd*aNvY@-t4FB6BFIF}=NBYE2!1+c1W_D@k!9*p6dpY; zNuq#r?rVmbF|@R$2fzsuNYL?vIBr(U6)j^+(L4e|WNiZ>@@btpNdiC+5Ro9JQbbKD zmSw71N;X9cggkum=yB!XAeYOTrX{7Iw4v(;K$5YuBd4eKXsNF-6!D{#3{yXKcJi>^ zI5BwAwzCLH7&1*W5mD1r-L^e%XE-zPed8Md;L7IV&##|87heMsNaUX^A`$>d5&!@x jB?1T`MyF>-CnkRb4*^7=o#`QY00000NkvXXu0mjfY1c!v literal 0 HcmV?d00001 diff --git a/stable-1.0/bureau/admin/images/help.png b/stable-1.0/bureau/admin/images/help.png new file mode 100755 index 0000000000000000000000000000000000000000..b015275b050f83cf4aa04b2bac6c71573ee400d9 GIT binary patch literal 801 zcmV++1K#|JP)A{Jl6138&i&8~Znh2IQq}o^|%Z`u5nz44~KmQ((rtkKW_dC5G^ZC~)u45$V>XJD; zzZzIK8}F_WP;RNiB=&`oa2oXkkHr zQk~w~!KG!~0*4XO^1{8bmfP0G7Z%1H4o*?PFudE1-QCNnsg=II->FL0%h$FH7mLId z>FH3uuRLgJvE93;TNa<2%je|q+1aq$smCJ~7nd|Q=S23xJsmW0#nRxi^!80&bv5g7 z===Lgm6cp_GA1T4I7l})AxUt#Si=ZZRk7ov7r|xjIU$*+M~cq}RW%9<`22iKO<`<| zZfu-|!+b>r>vUS(-S+M6n5ypRx($o7vM3-NhNd|HTwY>k2BA>IFodQij%CT@q&_wV z)ARtr#aZSf$CbETNwN$=Kq&wa5>phWw>Qb}$H|FSR%UK)azG3i;W!%s*k}}*cC)7R z(lE@<&Q!nO3I_GsT61gb`T-WO0DN$HjsOd=00IzTPnP3HN0w>Ey_L z5k*FlE(Bo>xLem~O}z%L_O1k>kU?u6AzX z-Tkz*yp$ACQ7E8CA{%FC>&M6B>9hRS4*s8f003$vVyjE)@Id_A7xPfH04qZgipw%< f8&Z7%_Ezt|5cWK_BabmA00000NkvXXu0mjfOHOY$ literal 0 HcmV?d00001 diff --git a/stable-1.0/bureau/admin/images/home.png b/stable-1.0/bureau/admin/images/home.png new file mode 100755 index 0000000000000000000000000000000000000000..dae2d8caec61875cb9cff98ea0f2a747e07a2b34 GIT binary patch literal 715 zcmV;+0yO=JP)5=+$Xls6js+=8(Wolr_-5WG!)mVvmH89o}RHAst;RAYWS_qSR|5@pFhL# zzNS7+uDu|zIGuX4D8?plcF8MWvjDdJOjG}$AP9=0@V<2bX2zyTjS@m6S&l>mlQzbf zLDOJ0gy*B8C`yvV^ZcKqQ<_s0B$Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iXM| z4A;KQo#7>(We1 zioU1kIXoYpFFe4Z({-Kocsv#Ok24=OOG`_AnM~$>MMcFTA;eK%U%w5Y20(pDNy!xe zy|OItXS3O*LWU`bj*brJ%F4>4ot+(1GMSuSTU)!$^Ssq;Hs7U`zLX>>+1lFr-Y|?i z_^mboprN6mWov7zC=duVOOo`wy1Kd&07OwdS6*KJNl}zGmSrbPOG~f*@yGJ=vcPei zp{nYvD2m@ID=Q~$Hrsbi)7&nXYYG6Go0~5(471nR*jS|~%0ZUVbsaS|HJN-q|H&|n zd%0XLPbrP?JU<(Y#Wn$?y1Tmrb8~aAg2CWGB9XWdi^YBcQmGUGKoA7W$jC@ycX#*A z>gwt!fZAx`F#GX-|r7cB9R;bz~k|BIi1d10MOald0G_3 zD9`hW@$qq|&*!@YfDr`Y#j!)6l)~rpJ)x8yv_P(ZR_jnAyE`#hGFb84CC6~-ahfqY4SY3*wfSF^m@JB zvMkfV!9j;C%cC5}jRQb58vQ$f5Hjs{yR!_#d@L?5&Tt$T=6U{s*Xs>vns$7stgP%n zhr?mZ&t;x3Dk_>+RW;;rIIdMyRi#*#eK<5UWE&eB!|3SfQHaCg7zQv*2zg5gN!#uA z4M~!w+-`TjuIp@jdpltmhDwrjy^v{XX*qKMsH>~%;W+N8BuTwZO--kcYpN(pyQ-?4 e1s@89>V5$8#`Y?tjzkpz0000?P)4_DK>$tfiHPmdR005i@+Xb@ z?^DtSAIAgXu+QPZFBjHoty)b82C1>J!4DtlL^6sKn5~j$?}ezDXR&y^_flrJ2%#h?vfLgXrj$mjT&%zpbIQ=n%h`B; zzXt$dnkLIOmX>x{mV*#ZPDTlWuq=}xu(h?_a*an(9CcBhnGAbwfY9dixyHvsBO`r+ z(CX>w(sf-Bq-ImWFr3Nkq5y!taA5OiRutQAw_VrGdR@{qJre0wRlU_}BM4L!EtSd@ z%g4`OPon?;f+QSXcRIZ{KcA3go#)#w7ojMct{Xfr({y2T`(WgL@ZFoIPB(e+>Co8F z#<$G$bX3z!!!W&GQWVwI)xrwB;|~QE-p_US`u;fQhV002ovPDHLkV1jNRO6~vv literal 0 HcmV?d00001 diff --git a/stable-1.0/bureau/admin/images/minus.png b/stable-1.0/bureau/admin/images/minus.png new file mode 100755 index 0000000000000000000000000000000000000000..6ff906688af9463498977a826b9baa9f7557d86d GIT binary patch literal 98 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4^3?%3Nf7cA+1o(uwUbyq1uDc(|YY$R;1f)bf rT^vIyZY6W@mL@o~#c2opbf{#=Il{)C>3VS!P@cil)z4*}Q$iB}d>0za literal 0 HcmV?d00001 diff --git a/stable-1.0/bureau/admin/images/mysql.png b/stable-1.0/bureau/admin/images/mysql.png new file mode 100755 index 0000000000000000000000000000000000000000..e0eee9a6b4fcbe7dc5a092f29f873006675be32a GIT binary patch literal 564 zcmV-40?Yl0P)lO=0P-4cz5eADf>)oRrJuVzEdF5d;AM;QPL5nr~0u z?YubHc=+gV=FQ8aYPFipW+NK}!Q!{VFs#*Tdxys{v&90DR@?YhJM1bqMm@R#Xw01i$8ol8D~d9mP6;8Zs%o0n@Aup7c4CgM>y=7{F%}Ir7z_-FZbPM9O3`nx;`oDWw1a+qSLq-m~ZXG5^MK z-2CR+`O>;DKh1w$|2mGkku7X*K7JaX^Z(+x`|B1VTi~CM-dSV-0000 CU-@wW literal 0 HcmV?d00001 diff --git a/stable-1.0/bureau/admin/images/new.png b/stable-1.0/bureau/admin/images/new.png new file mode 100755 index 0000000000000000000000000000000000000000..e6980a668cecbd2739152966d2db4d27df8d04c3 GIT binary patch literal 390 zcmV;10eSw3P)GJC8^Xu#M?CkXJ?)C5Q_VDoc@$vZb^7-@g`SkSq_4WMr_Wk(y{`vX- z`uhL;{Qv#^|Nj2}|NsA-oVEv7{p0`u00DGTPE!Ct=GbNc0004EOGiWihy@);00009 za7bBm000XU000XU0RWnu7ytkO2XskIMF-Xd4GkG9Fg@sm0001iNkl5L%#m*1=f0B9+}5{fZe^W;TlaG#!|L#n_^o~8QGsAhhnwp;L-21w3BEODVF$q;q{SKhOG(b?y}(z`(2+KS(Q5is kpvOV>j23YE|B|Wzer=Ny{zyOVO8@`>07*qoM6N<$f?{0Du>b%7 literal 0 HcmV?d00001 diff --git a/stable-1.0/bureau/admin/images/orig/admin.png b/stable-1.0/bureau/admin/images/orig/admin.png new file mode 100755 index 0000000000000000000000000000000000000000..fa8d03bb87543f9a0d7a209b1ee72f58f5e5fc88 GIT binary patch literal 703 zcmV;w0zmzVP)oChoaHwx8~;N_F@KYZEfwTREomk@Rq?~xEu@yJ%S)?0;nzw zwYIkQPfSdN7-Ndv25Pmsdt+ncS0X)w#+Wky#`Aom+wG3V zVli4>T_v~Mof#b+eJU1<)kW{+I8Hk@HWp!wDeLR&Iltc@jmP5@3WZ3k)!G0w0Vvxm zF93j4Dpi|IrbUluF81+LmO{c3sZ^>d0Ok9Fd3APn)_LaUmR~F`(%QQP>b@{inZlc`h8Pazg=>-6cjEs1Bp1;9yoGO>gk=<@z2T)V&)~=H l56-Jjg!bz?*tl9~egjTo8#Lv&c8&l5002ovPDHLkV1n5vLNovX literal 0 HcmV?d00001 diff --git a/stable-1.0/bureau/admin/images/orig/bgborder.gif b/stable-1.0/bureau/admin/images/orig/bgborder.gif new file mode 100755 index 0000000000000000000000000000000000000000..47aa13a146016a8605b274dc471b8a4878c5cf54 GIT binary patch literal 54 zcmZ?wbhEHbyu-lA(7?z51poj4SNzGs$ORP80r5dH3{1Q|{VPwuaBcr+v(tkjD zqpPTkuDXgK5UPtXg1j*bf}$cSZxnaYi(r$)mYU|=T)yp9ch1hQD@CXFy?fyKJbd{+ zUts5uimtwkH~YpWp9iDK{^4ly>cinNTYX2@F5aEvK6(Ati;*mwUN%@buCZ`jV^b@P z^$spGOT*djLOX<^pr?b@hs*OIwGq&{w(F77O7a`tDAog^gjdi->>JwOx`L83_HfptQlaU68Y zVGRTcok5WW@RD4#mEpIF#N3Y%rzH)iy@WG~1{9HkF^2S-0mVeIxUi_FqTz`>H^AS} z;Mcc(ubmbFUZ;YpQV~^U5Y!eAd} z8SCo#l7UjzQfQ|ITB^Hn=l=OKZMCAVVJ4nKY*7QJYp@jCh3OSuijRGKxo1F8pz~7K zv;x6rZ81DHBO99LpAY`WC|)$2t-3&;OJp% zRbcZMHUnx}PMt1us4y!8#YH?E76GL;9u6xHyOoE{%tMs{m)lOfjcx54+~yy+t844M z`vhn?K$Qqo69^x8nv2GgE1c(|5eiTdr0*MK~=4E)!r= z2vn88BvRxu1i^t|{N3Z*_cE)o5CD*Z8uvSVM>=X7ngd>sr`%>XtDqcG*|ltB=J#AU j^!eN5=+JurlN-Q4SIze!Frs|m00000NkvXXu0mjfdKgzl literal 0 HcmV?d00001 diff --git a/stable-1.0/bureau/admin/images/orig/delete.png b/stable-1.0/bureau/admin/images/orig/delete.png new file mode 100755 index 0000000000000000000000000000000000000000..6d0d29d760d37e78d0ce975bc20f681369335a84 GIT binary patch literal 892 zcmV-?1B3jDP)g`JI!TT@Mjg8>Qr2O9R{*FT28e;63<-ha%%!_CQc_rdf1PoBLDWoKtU zfUFiEfS4Gt07gbe2B1X@j7^5sJtOdUV~VRZq>b|#=V{`~&KplhJP@aqRKFhBof zc=!A{11l>V!>JQT;c5W_2;qW%e;F9ApJHIRd6wZHkoyPdk3X!e3}5cuV_@nkVqo37 zj)9en8|W=o24-evxHf zQ|=hUZ*4OMCNXJXAR}B05I_h6B$XK$J1ZC%UVmixYh=Ojk6W05_3RA>VINlp z_H95HadJUzN4NkWfZ(yfa%2Ys>(mYgh8J%benloTd|tSd;cM?KhW~v049u@yF$fgr zGBCY*!SEj#jmQ8XfDm3Vb7Ek0@?-cfqr&hjr4XDSe*5||d|17afvc>5;cI#p!#`f2 zVZgM3>;-@TVu7V=Zb3c{w_fL{F1!2R_X0}Bf)N+1FR z5X;9;pT4$rPX5Eh!~)F+|A0PZ0&4yTHsC)rXZ#0q{sT2LF?{(1OqNgp5MTgah5&9K SO7D080000=7o^6kZx`mK}x!iVU>h>?gxw*^VLQVgl^EXoZ#0Td- z`gBxZ&z3~B-V|oj7PjpO!*s;Pc1>KkczGqBe&)4@$)29$uV1_|z9me<5j**^SX#}C zjcidAiVbnUP#49rAq-Q9k+F4=KJvnQ|A;a`ICbW&56_=}zpqPUdN#xArp{Krj4a8h zs*Gj3RQ4N`_YFGRBgB#egCiqXr<`VSQ3ij<>7jGO1AT3Q*}EC^Qj@|ysH%^ibQ{%b zjZ&pX!>~|fg=)P?NDE4H>-Mp&rJui$52l`dBYfz|mo_$+@%n=7Ra{~bjptAG5f1v% zv;baJ#pm_WFl?HZL#b>~srlkl(_`aGGYE~aS{j|MPp7u!*= z9SgH*q3>2$xVK9*946ZK*a@XQo=Ba3x(~nq2=kdGu8(I}-7JvXDUnJ9cy;JF{k@&+ zS4|XIWno3<#`rvrCq_#ka!8SoY|C~CNGfMeKE=J2HAW`#Wb+kDl{%3F0gfK-LumSrP^L}sl(wPw<2SbY7%1ljE@ z{kgo0ogCj^o8!vZ9N~~g zPpXYalOde)@~8xa24B8#OY(*L$0lZJ(PH?03O=uj?2&L?!GWNUoLhWnG)#+T)4_3F3|nG5yWXfReD)$# zuE+qkQOFdF*}eA8C(d>~l9ZG25Q$ce)`&(dq7jQ~91I6hy#e%{_4;1s(mTS^zj-ia z0K1;QUAw!SI-Y;XMNwpXV^<{*aN^_Vx3-ct!@s`>bqi46H0{3;+Ry)quaBJ~J?XSj52m z8_4<2#PIAXBg0pVFh+JBcH2kypF44Kam~GP<{HE8o0k~?0tl-C3?KJ1F#oy8!0>~O z;s49O3@@au7-U_78NS`V&T#4b=bvxiykyw3V+~N@9|nK`V#22X|HH`)th}5I3|}}H z-hbp{_@d#*AS5Hjz|8QMfrW*Y;mV~eKvn;Mn2iA-fG}L}_r(bYW{z7x&A^!b#K7>5 zM~y+yA(Vmh|4#-!9$tnc2M;mayK^3>l9deH=U0|9du%fr$es{1a&N2Ofs^ zGM)^AQql}8zy!d^%*gQO^-E5WZXgx`Vs3x{Vu3~JPf*mnxX8f5{*Zz3k06l4&hY9x zJA-IYEW@ua9~gfB`pNL=<0l3tMkZjIVT8Gy7a)M(Uib&{(%&CIhBN~M2QR~y=T8~l z2wO97{9|VL`T7k|BO}8A2nZd^1@wcFmECVAWI1(5D0*HkP2*F7gh&7GP8B`2R8JGoxfHwbT z_$|Q8z{<`B^!tAXHa2DkW@Z)!E-p@{@TgdZTeog9+`n_30U&@_?%sL$VbzK?JRm1B zG6Q1=6j*LX{7Jy;#>&w?K3pF07*qoM6N<$g5Dym0RR91 literal 0 HcmV?d00001 diff --git a/stable-1.0/bureau/admin/images/orig/exit.png b/stable-1.0/bureau/admin/images/orig/exit.png new file mode 100755 index 0000000000000000000000000000000000000000..3ce53009b13f9a88e6c5bb70d66fc29623b0cf50 GIT binary patch literal 882 zcmV-&1C9KNP)IWb2eLUZhL>* z?|Hg-$LMeloSV;=FXwy(;80sS7_)r1xvz(?R3ieC=j23)0rCh0LJpb;b7K?u#)hHY zlk*4VP+L0K)YUcI``i;;`T7`=ricORP=knIP6(=Ciu0a^%6iVc@FDr!jUoA<*~j}o zdX00hzC?0!1@VSCk2s}r&o)$ztD`4T^Qbd0L!GC5N0pQN-o)M1+s)rUeNWQbiWLhK z$}RNo-A~%HmH*fL>EoRL{5@8(MZ}DJVS#i*D=yYD;_?cTcnakfwjDSMKy7q{i4(_Z zXj(_dgF7kpZD*kSUQWIKG|O3yh!ATT8UgWwIZyxI{QzA0>;ON%{XCV;0~9MA{P6OV zOdfq7e2Lq3>_VJJMIlC1@*LDrYQL4VXDhYQ5yrp$0&$LV=Up^+_an}6apV}xU18mp z9f&DWl@J1&6H$ZW#wx%XEM_1A2x5kqG4tC90Oht0#CZq-B?cmbs@1Qhwg!OI+YE6D zq5^;~H6!X)1@eeFVe#4&0PO=0tpW}N5UInawDi_Lvp91ZuSOnn6aqn&g_&uXout&a zol4IDV#e~dX|7*5iVd@XYzB**+27j+gXiYK6!(rRHmhRCpgdbi3_Mt!8v?miDI>ji(h_9 zz6ADYOXK9#AJ0FsY3Bo2;;=#kK25+0wZ(s_-I&EYBbZ=LvBnaYzd6G1?;Iv+Dh~<3 z#~aIoD@#km>4sKfErS>dA;9Y7Az#}gfsiRlQ*r3Azh)2q2YikTFCmA3bN~PV07*qo IM6N<$g2%>}%K!iX literal 0 HcmV?d00001 diff --git a/stable-1.0/bureau/admin/images/orig/folder.png b/stable-1.0/bureau/admin/images/orig/folder.png new file mode 100755 index 0000000000000000000000000000000000000000..037c2da98d1c629fd33957baa64edc60197ef767 GIT binary patch literal 1080 zcmV-81jqY{P)mwqz<1P}`@lm7u-_Wk>BJ5^%+ZkvZGVS)t0! zQI3z3gPGyiuYU}Vb_%h}R$p1k!oqau&p$@6MF0WBqM^#0m>4g@@b(h}!`D9y4B8s( z3_q_w^hpYolhoD}Wcc=tf#J)Szd$E3FgV-F@E$t#qVw;?H{n3*AAt-22p}dlR)#Nv z0!$2?91IM<9)4iZ{{Nn#DPKoYS6h(b_iqMHl}znhny{{;vj7NEfl%s?A{uyZo3I`f9%-1|=qzkmK_`1AKK!(X5aKml{* z_D6>MAD9{BbmbYI{a|GfG?C$ZbNr>lpRZ5P0t67t-~ay@Sb(-1xcH4h^gkf9L(b$NR4`G5q_n7a#xtK>)u0 z1pfX10Pyqx0O{iN0E>Ge0QUL(00kEX0Mz3F0PfoV0P5-g0ORQY0PE-Y0Pp1O0P)-A z0Qu$e<^Toy3IGTG%mRpo1!(=Tv)>ss<#`y`g_#&mTxVc-``{nLgXhc)ckljVc=G56 z!?UNq7(P6F%kb;ndyo@=A;$QRf$8@nhW~%B0R#{e1JL;wF1};1Gv;Kt0hE9IosHot z(17Bh=mEkYL9e@C0dHCojgQhAQ zgQOS-13yrW79RtHkPI`!$9KOOq?rFO2>$%WAi?~X;Wse({sktKpI`qlK6(6)=k>F{ zml+rt{{RFK%l$i_8Jvyz8Qg$|fLy}>H2a4n12_SF`}&XJrv(ecH(j%TvAHNx{-T3?rD0v*1#25eqh>^u`|9ew25gu-KCI(>C15?dku-||G_yzPg2>)dG y1=REh$o}&Sltce8yt@Bq5yKybWRPV50R{k_prTmwqz<1P}`@lm7u-_Wk>BJ5^%+ZkvZGVS)t0! zQI3z3gPGyiuYU}Vb_%h}R$p1k!oqau&p$@6MF0WBqM^#0m>4g@@b(h}!`D9y4B8s( z3_q_w^hpYolhoD}Wcc=tf#J)Szd$E3FgV-F@E$t#qVw;?H{n3*AAt-22p}dlR)#Nv z0!$2?91IM<9)4iZ{{Nn#DPKoYS6h(b_iqMHl}znhny{{;vj7NEfl%s?A{uyZo3I`f9%-1|=qzkmK_`1AKK!(X5aKml{* z_D6>MAD9{BbmbYI{a|GfG?C$ZbNr>lpRZ5P0t67t-~ay@Sb(-1xcH4h^gkf9L(b$NR4`G5q_n7a#xtK>)u0 z1pfX10Pyqx0O{iN0E>Ge0QUL(00kEX0Mz3F0PfoV0P5-g0ORQY0PE-Y0Pp1O0P)-A z0Qu$e<^Toy3IGTG%mRpo1!(=Tv)>ss<#`y`g_#&mTxVc-``{nLgXhc)ckljVc=G56 z!?UNq7(P6F%kb;ndyo@=A;$QRf$8@nhW~%B0R#{e1JL;wF1};1Gv;Kt0hE9IosHot z(17Bh=mEkYL9e@C0dHCojgQhAQ zgQOS-13yrW79RtHkPI`!$9KOOq?rFO2>$%WAi?~X;Wse({sktKpI`qlK6(6)=k>F{ zml+rt{{RFK%l$i_8Jvyz8Qg$|fLy}>H2a4n12_SF`}&XJrv(ecH(j%TvAHNx{-T3?rD0v*1#25eqh>^u`|9ew25gu-KCI(>C15?dku-||G_yzPg2>)dG y1=REh$o}&Sltce8yt@Bq5yKybWRPV50R{k_prTp1 z0x1#_MPfsOtrJ6-sKmlRB?gcXWne5zD_9_cPJERhoTf_SgxL7(^Z9(f|1l&r74S~) zD?QJn_v;b<8~)}}-P2IkJ?fT7opWj;shX2EPC~T&#e*1n`DOF@D zD~4)VD5Z*v?_FF2ynn+>50Zt2=UzHBGyB+j_eXy#YnZnNw`g=4NG8~tO|R6iU3lh& zx26t1-oJ74v(@_>Yc~L7pYL5+`S8wx>G06zpiXjTi$li_(uf*JUyxMz?bqLV%6OK* zJj_qu{IYg+<(+w;z2AWyM0&IG23_}m5#~(G;H~u6(u|>V8v)Wl@r@e!;gnTzAX(Z%3IhW?%WU_P81}Xp=fMq$M z=hlp1bBdq8+F-p^XE)y^N+Q~En{M1iWr`P%Epci3GL~x@rIH!xW0qboR$9h6LyBgZE(j1rUgr-wmcnHekkX^9+w=z+X*$4lEXq|c z9F0&LJ2*b*CnQM^({`xXCS}*6Pl6^I6hgb#C(DNHG`2A-9-i<2vxC6*Cw$LF7|@HF z#O;Ct&;&#TO$1%nF!U0x>tL8V)v8~6=#};GlWQNdy|qOU1UQb1QaMr7!m@0jpyK(Q zeqxTzsLt`RN037IMgnQlxqE(bk-wTPPEOC@c|Jlxn#P!>gNR_72A1d1?cU{7yL)R;dg%n;lCwCr=VT< P00000NkvXXu0mjfUk#5E literal 0 HcmV?d00001 diff --git a/stable-1.0/bureau/admin/images/orig/help.png b/stable-1.0/bureau/admin/images/orig/help.png new file mode 100755 index 0000000000000000000000000000000000000000..b580f51ed4b819a99ebae503406acc6c6a14892a GIT binary patch literal 997 zcmVNzE(97{ z1~lLm$N+! zFf%j!2a2(BaxzFODl&Y(c1`)&yLZC>85ni|1P~KYvl%xdW1_O39|IH6)^E?BGjKaN zKs0XM%D}LAF~k2GHy9Xzni<5!8JK?mW-#&eWDsR%PXv0w3?P6&2BeAtB{+coWw>^Y zff3|v5ZDV0osAnA{_ohq@NxNahJV1YU;w)4AJ7||mo72Lv$26xr2+&H3o`?QlMp*Q z1H-dt3=ChtGH`)}zkg?7*uS5F;lTrjmp~iY)6y82nV1;r%ok0j)Cd@d$8>c|Nldr52U{X4gJ&7!XOCL{O{sLhHqhE41YkDKmijF zgVG2<05NQ4V0iKdsO29N|ApcwLPGz4ym|Bg-=9DKf9UJ~2O0kjih*h1|3e^d1L_3` zAQqs+zE=zku|f=}KfJ-{Qvcf;Sn(OdHMJl1UWd6bTcx10mjIspFcrKc{V@*u>k#Y>L~-m{PPS9 zi59@PX9Ow$+4{xIj6rP990qn!47~!n@z5b~TKEsNU>`8d?g8}xBk~kL0D%nn2~5vb z=YIZ_`TO;&s|hf!IfR55gh4TK;Q}}nf&*Aun&B(ZReN8&VA%ij=Wd{}RY0qL0t67_ zGN7w|La-PxfV#xk+2d7&g&C9u1Qo=i=7)s%e<{k0*6-B)dV* z>bYTh8-0F{>Q;J6!>vO+LS$&3LLcTM^kwLxf6YC?eb7}?K^9jYhqH1DkYMNV-*#}B6W3TB=z)U8MwJw!LtAU{RbNGm4TO+lR-~ULFVq=r_sND{hY+e z$jAT?KrBG#dN4CHMyjbvd1`A*i7G3LFmQ6Rp}6bq+pj?Ui9u0OltEWlj$zA|(_x=K zf0@h7%=8r?fSB0WSmro5XvKMY>WTslK+y~g3UFY4{`?c@f=>+0%*+gef?N#R+H#gZ zfBy3S_3JkSKmaiToqinX0*3G3e=%IS@{Hlag~tppUVMTZ^85FHhA&@!G5}o*jFG=U zni*(-JQE8Gix1EcHh=(PHa7PE$jQkOV`?hT$j!~h@Z-lHhP!uPGMqYf9~^K@OiT=q zAHN1`=I7^P0NKjL#li6K;cK-A51#G@2q0!l%iuR3K72J$Ru)qg5#eDF7UpJSUTGO)5T12G$ejEpGIP+l<2%E|!(lOZ8&h?mXWWo9@vJDAAd0L@UVk5fRgmbkKY-N9J#@8;J}4PPoBJ( z4zzR@J3HGufB<6o{{1)DR-n_CoH%hS$I($!43Z!IF$f890i*C2!|~%c820Wx_xaYX zN7I3Z&1Gd}x%KbgU$8!a0Al&~?+?V+jQ{W7x$}JGfde;kEiF}m{$*h}fBq3L(VY5v z?b`kI-@bkC04AKPEG(du`41k=00G1TihmdYW|Ac*Pu|P``jz$I!K?pHpT4>E>(_66 zz%+1xjg1wo5tO))0YCtO!vF?=3a?zecz@%C3->hNzyDYX%yIjGF8K=52y-$z00=Mu X-qxh@p`4T?00000NkvXXu0mjfZaU)6 literal 0 HcmV?d00001 diff --git a/stable-1.0/bureau/admin/images/orig/mailman.png b/stable-1.0/bureau/admin/images/orig/mailman.png new file mode 100755 index 0000000000000000000000000000000000000000..7777d352d5fb87497dcf2b2313f69595f0be7f38 GIT binary patch literal 902 zcmV;119|+3P)1vj*~1LW>~h$FJ+KQsP#09XKvZJuq0oaST8+kf zNQ~{Bku;c?5RIppG+s!PV!Sb_ZN2cSF^WVh#)jG;ZIlv_B0)?oP=uC33%l&@EIT{D zH;BRa3{CJ?jaRMman3vWc&(`zQ-Ug#{ zQ>ZkOv~(^es!tbKOTik)*aOAoL5AiFFCXt3Zl9RB+4B!eV~~QjW_QOAZ%6In4`QPC z^^mym@ryzTA*O!*N_^fL5z|B82_b|S{`#2pOufHF-3-NENeBQ=uy zo;O*#l^|bGNmYFde@u*_c%#(qJH*n=2+}X_%X{Nm(^f-%bo^TScV%Cldg7HQHtlvg zBuraHz58VX@%{KqJrw$*xV&Mi;w>y*zsB4*htcwLxK$5^E|;GlNu-r4*R5&8liyQQ zsrxPsPOvOhQfu78rFl_&Q5+5@Znwgv{)=>daulPufaTPxce(5>WP#aZhX2-?sg$k#*0?wVRiN#SNm4TE}59N3)_Z)v74D!Kb<``Ix9NXh7@Rj zq-3zAF&GN_L3M#l9?Rij^tUXjl!em;9u*p*2|ByyE_8e^b^yqK3l?MvGn0keDI13Z z3rQPAQi*K~vXF$;oXmZ-Dxr`@ChuHbTd}gX#$+a|ZZYI0!>73trj4-kRD{d%2P5dZ zlZP5hNt6AZ{c@f8W?jpG!7l+pDxl)NrDD1L)xxfg**j-d~dk zJ4TN7jAmOcoAHfLwI01`vvTD0VSn2E_Bk=x-6jq-htC5K{$J@|_}nzV^svz#3%T9_ c^#98J1;M>LZ;|9CegFUf07*qoM6N<$g30}~4gdfE literal 0 HcmV?d00001 diff --git a/stable-1.0/bureau/admin/images/orig/minus.png b/stable-1.0/bureau/admin/images/orig/minus.png new file mode 100755 index 0000000000000000000000000000000000000000..6ff906688af9463498977a826b9baa9f7557d86d GIT binary patch literal 98 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4^3?%3Nf7cA+1o(uwUbyq1uDc(|YY$R;1f)bf rT^vIyZY6W@mL@o~#c2opbf{#=Il{)C>3VS!P@cil)z4*}Q$iB}d>0za literal 0 HcmV?d00001 diff --git a/stable-1.0/bureau/admin/images/orig/mysql.png b/stable-1.0/bureau/admin/images/orig/mysql.png new file mode 100755 index 0000000000000000000000000000000000000000..ea93206774a86421b82665251097b55ec19ce332 GIT binary patch literal 683 zcmV;c0#yBpP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;AxT6*RCwBA{Qv(y1El~UfLPE4A|fIbfK)yk8=Hfm zpr8Q@3kw4XzkdDt!nbeVHUi})tXQ$)1F{}~0AfUT3DAH95fPF34h{|s#>U1Byu7>& z%*@OTjEsy7zkmN`xPJXQ!@70rKD>DG!VzfD1(-g708EUr5da_v#GIIs*?^;2#l>*v&K~3{RdsVYqbZ z5{7z!0K#wy$RKrCo!J0HGKHOh}Hqckf;=D=VuYDk=*00w`uc(G3b8P^=w0cI*OBT_UnR zfB<4dFA9K}Pyk2;0I@$13m{270OF0njJE;ZB>(}$NR9FYAb^+{r~m*03;?Jm1GjFg RW&Z#G002ovPDHLkV1nn<4O0LB literal 0 HcmV?d00001 diff --git a/stable-1.0/bureau/admin/images/orig/new.png b/stable-1.0/bureau/admin/images/orig/new.png new file mode 100755 index 0000000000000000000000000000000000000000..b5a26fa16854e845eed008e14598af8c6fb8a046 GIT binary patch literal 483 zcmV<90UZ8`P)t~h5P@J!Ox%n{(t@Y=l{!>pZ>po z{pCMMe$Je2|6%H37$AU{aM{Sr%m~CxU|7BodVP^RE57kb90K#ejC}w~E{?G8|&p)uuKY#vV zU}t9qin9O>`-h?yAb?n~X$E1Ctv`SM1hZLLnZa`Z{{07g2^jzc5DPY^gKYox>lZ`; z*x3+UK`vrqLNx#&fG`3Pr1tmkKVX|+7!(t*z(fZC0fb?|-@gnDu;h*IGMItL03d)c z3;=~TLKAjdkpVyeVe!IWXh1^JIw;^^fr||Q1P~Lt^O2p4tdS9iLjVGZ1v$HdFsT3_ ZzyOg002ovPDHLkV1k28$;ki! literal 0 HcmV?d00001 diff --git a/stable-1.0/bureau/admin/images/orig/password.png b/stable-1.0/bureau/admin/images/orig/password.png new file mode 100755 index 0000000000000000000000000000000000000000..ca93f0d149f25ec249f8964ee93267f3f3208dd0 GIT binary patch literal 693 zcmV;m0!safP)hd-OLGsikAyx;m5E(CC6E+5`r_2UxZu9A$i{^YC${6#B-_w`h z@B9D2_xC5zqVe(ZU^pCpTCG-Hnx-{1P1{>uUVbTx;yYZVp`oGM^Yin?;o;$D06YL( z0|NsSu~;lWIy(CBLO?VceZ%wo^Y(cl5O@%cMn3{D>b)aRjoEBwi^bwrd!Vzk^LxEs zHv{O<1N^71udja)1Yv?82!|jDcN9fAvD@wLo}M0WCX*>GEG*dS^}5;)AX@z8cswo* z4h}j=l7ylt@cDem=kstl99UahOGF}(y8wRcR_O2VzdANHcE#uOfh7Nq3xxulPA77? z973T`&~CQ}&aGfH8aoUI1Hmv1dV708(=-ka4nR>9Y&IKYSw2!#_2}FqX0zE(D=RCT zl}ZJTMgtT@!R>aVR;z*IIPC83mQ_{#*$yzY_(nRNP6va*$*!(0QkLbt#l^+1&1Tc& z@px#Orn@PMG9;79_hZO-;Q90G4HMEG;el5Jgej*w{D;g+i0M z6##%?m|vw*>E!tM7`a?-3jh>F5oc#-?`N~wywz$Y=H}*J_4V~#(*qd7;qViVuunYRF__6)~yw?;-r93?#4ne^UZdEa{HEjtmUzPnffIy#(?lOI#yL zg7ec#$`gxH85~pclTsBta}(23gHjVyDhp4h+5i=?1^9%x{{R0!Ep6uFH_f_05lc@O z$B>F!NeL~C4Gc*MDGdy64Gc`14@f992_RGjOnTFfcFz1%ZxZ z0zwe`9}u$sXJ#nyk7wZJ;pKwq0|+3v0e}AfVfe@Rk3mpEl!1$ji-8gD2}TAcCJ5{A z&p!;me*Xfig#my7f*bJv?_Y-RK*VEXjw)A!ArH}?V6Tm*>$1Q-Cc88t}ug5!(;0000< KMNUMnLSTYF3Ng9> literal 0 HcmV?d00001 diff --git a/stable-1.0/bureau/admin/images/orig/stat.png b/stable-1.0/bureau/admin/images/orig/stat.png new file mode 100755 index 0000000000000000000000000000000000000000..cf47864f8e76fcdfad1555902b54900d28bfb96d GIT binary patch literal 624 zcmV-$0+0QPP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ-=1D|BRCwBA{Qv(y10?_;fS4F41ONfVLX0BDVsi{< z{_j1>2%-T3h=q}nk+2CxW(+ZE!VD~&91Q>d{bg8m`2_<^A3y+sU2wgX0mTN5s{deF zWW)KTBpI&#z0L6T$5#}G0|XE}3^ei`7&MX{7#Ktp5Y7Y!Ff5RN{{GGI?dLa!uRp(| zI1V6y5Jr7Jz`*bsNdI79I3U6Z*2T*P6#4~Z#G5hv`t=*A`5VKxAKySSaBTnqgfQS2 z6#s>A)rA=tBzb^_J%sQVzFWb-z|6rQ@sk(D1ponrh{m6&1~9O(GB6}FFgP?J6#xGH z2keSpisu;qPh|l61t5TMxbK6a&NYXTT6X1!h0}@Q>m3(iaSW^_du0ZKPiQ zXL$A>Ab@Zh@O-m0gCxUKpvG7R21|XQh!%r_0FcVQ1|%*rFicx4&zQ}?2oOMwbLPy! zo0gM*rZ6xV0vVQPAOgot7#PkoFl?0G!0_hH8wP*?0=pnNIT^d|X^apTFo0a}3L<9N z1H=~@{HFyl%w?a$01!YpT>!Qj8U`R6LF_MI1Q@s$-C|%cU|{&Br^dju=o$k+05Rgt zjng3MfguZ+G9m0=KsGy&4T>{1kT^g9;m=H2{~2+Jv%{DG0R{j=9iVmR5?N9J0000< KMNUMnLSTY#yYWT< literal 0 HcmV?d00001 diff --git a/stable-1.0/bureau/admin/images/password.png b/stable-1.0/bureau/admin/images/password.png new file mode 100755 index 0000000000000000000000000000000000000000..41d494be8d0e017b20ebff8766a5e8ceaf8174aa GIT binary patch literal 612 zcmV-q0-ODbP)sXN@kaj3&^P?^H)JzR^Q8$_j&Tk^B!KJq!|DJ0A1}nvPUC*06Uc=6bD27N?Z&8mL^Y&L6ly1TDlf31E)2(4$Xck5pQ003}oi(%-=WKucQ9zEZgM&Gy0+^VvKoFTA1s%@BM7{TCH~W zhN8EBECFZOBz&LaIBeM~$<@CZMLm4-LhJl848xi_OTe(-yOvz>egB|-Bua^kJ0mO? yNoDs+6*;3W9OB}=KfHZoTX_5NGmaPF|MLg&i_3?#4ne^UZdEa{HEjtmUzPnffIy#(?lOI#yL zg7ec#$`gxH85~pclTsBta}(23gHjVyDhp4h+5i=?1^9%x{{R0!Ep6uFH_f_05lc@O z$B>F!NeL~C4Gc*MDGdy64Gc`14@f992@o}F{?waN;52#P2ua%g5?WF%;C$VFmqpyL0axdvijY<8Fm zCMQN0D1w3b2-d_zlr!3!?s^!^-m*JZ)LqoCitnqUt?xSkK5oA|6jEJRW{%|u%zt+N z+HidC;w1n@mp#Dk?TvMT&FdJn_;~!}ITnE?#!o-Kz1n_L#~K7U7z~2JN)Hci-YG-q zDrbPI8ri||k)~;AHino1KwC*Uso4_XX49OuKEID;6#_Fc69r}f!>TcNxGw>sa{Acn z#^q~7U}6RlGZ8?vuN(}jXr?_tN6r3Q7p?+ucM#255_RI|=FI?epH8Qf$)qR>RSh9z z)mT->pFYFt34VBg?%tjTcQY%?l9`z~gh0eaQGB?uR;>)rr)+zod5)%(L_}3{&LW~B zn&kEP%iGac?Am`5%tWM{5 uvMety9zFTu0@?kEP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FZT01FZU(%pXi00007bV*G`2igV# z6&@;2FF#NK00E{+L_t(I%cYaOOCwPf#eXkqbj7d(f|}U4jVmHXLDUqQG;T`mY*w}y z8^^-`!P+{-5(^`Oc8ZnSBsPMGA`4;Jwa~&{jX?&?jF}lH&tfD?+$0EIc<}DwzH`sJ zA0mCB^B(i@PHTKiP%QC9zQ)qpzIZbMz}Mb(8b7p9D!HV7+*B&)+)^qs+|KIaHNnSF zkgWR~qi9s*E#LZAY05U5gv$22?uMUZ2jqJSSBY~b4{w(Ve8 zCT7vBL14ce*K%VHv!!Qsz@qnWdID?(;ZSwiN_XSl|tG`YNPXS>d=V6f*h@3N>m|?X! zNlgW+HD9g)XMh%>P*7-1{emGd2YYEtWfAqZF}ml?Lnf|^=$;~_&(GmhPD~zjNKvxM o#C1`37c%kxM;hR8Dp$sz0Vm&~?z^GOi~s-t07*qoM6N<$f;0f^SpWb4 literal 0 HcmV?d00001 diff --git a/stable-1.0/bureau/admin/index.php b/stable-1.0/bureau/admin/index.php new file mode 100644 index 00000000..834c8685 --- /dev/null +++ b/stable-1.0/bureau/admin/index.php @@ -0,0 +1,135 @@ +del_session()) { + // No need to draw an error message ... + //$error=$err->errstr(); +} + +$H=getenv("HTTP_HOST"); + +if (!isset($restrictip)) { + $restrictip=1; +} +if (!$charset) $charset="UTF-8"; +@header("Content-Type: text/html; charset=$charset"); + +?> + + + +AlternC Desktop + + + + + + +
          + + +

           

          +$error"; ?> +ATTENTION : vous allez accéder à votre panel en mode *non sécurisé*
          +Cliquez ici pour passer en mode sécurisé"; +} +*/ +?> +
          + + + +
          + + +
          + + + + + +
          " />
          +
          + +
          + + + + + +
          + + + + + + +
          " />
          +
          +
          + +
          + + + + + +
          + +
          + +
          + + + +
          +show_help("login",true); +?> +
          +

          +powered by AlternC +

          +
          + + +
          + + + diff --git a/stable-1.0/bureau/admin/js/alternc.js b/stable-1.0/bureau/admin/js/alternc.js new file mode 100644 index 00000000..2f5c83ab --- /dev/null +++ b/stable-1.0/bureau/admin/js/alternc.js @@ -0,0 +1,156 @@ +var menulist = new Array(); + +/* +menulist[0] = "menu-dom"; +menulist[1] = "menu-mail"; +menulist[2] = "menu-ftp"; +menulist[3] = "menu-sql"; +menulist[4] = "menu-adm"; +*/ + +var menu_opened = ""; + +function deploy(menu) +{ + for (var i = 0; i < menulist.length; i++) + { + if (checkObj(menulist[i])) + { + var div_content = new getObj(menulist[i]); + var div_img = new getObj("img-" + menulist[i]); + + div_content.style.display = "none"; + div_img.obj.src = "/admin/images/plus.png"; + } + } + + if (menu == 0) + return; + + var div_content = new getObj(menu); + var div_img = new getObj("img-" + menu); + + if (menu_opened == menu) + { + div_content.style.display = "none"; + div_img.obj.src = "/admin/images/plus.png"; + menu_opened = ""; + } + else + { + div_content.style.display = "block"; + div_img.obj.src = "/admin/images/minus.png"; + menu_opened = menu; + } +} + +function getObj(name) +{ + if (document.getElementById) + { + this.obj = document.getElementById(name); + this.style = document.getElementById(name).style; + } + else if (document.all) + { + this.obj = document.all[name]; + this.style = document.all[name].style; + } + else if (document.layers) + { + this.obj = document.layers[name]; + this.style = document.layers[name]; + } +} + +function checkObj(name) +{ + if (document.getElementById) + { + if (document.getElementById(name)) + return true; + } + else if (document.all) + { + if (document.all[name]) + return true; + } + else if (document.layers) + { + if (document.layers[name]) + return true; + } + return false; +} + +function help(hid) { + var top=100; /* (10-screen.height); */ + var left=100; /*(10-screen.width); */ + var largeur=700; + var hauteur=550; + window.open('./aide/help.php?hid='+hid,'help','top='+top+',left='+left+',width='+largeur+',height='+hauteur+',scrollbars=yes'); +} + +function browseforfolder(caller) { + eval("file=document."+caller+".value"); + w=window.open("browseforfolder.php?caller="+caller+"&file="+file,"browseforfolder","width=300,height=400,scrollbars,left=100,top=100"); +} + +function CheckAll() { + chk=document.getElementById('checkall').checked; + for (var i = 0; i < document.main.elements.length; i++) { + if(document.main.elements[i].type == 'checkbox'){ + document.main.elements[i].checked = chk; + } + } +} + +function hide(s) { + if (document.all) { + if (document.all[s]) { + document.all[s].visibility="invisible"; + eval("document.all."+s+".style.display=\"none\""); + } + } else { + if (document.getElementById(s)) { + document.getElementById(s).visibility="invisible"; + document.getElementById(s).style.display="none"; + } + } +} + +/* Affiche le composant s */ +function show(s,shm) { + if (!shm) shm="block"; + if (document.all) { + if (document.all[s]) { + document.all[s].visibility="visible"; + eval("document.all."+s+".style.display=\""+shm+"\""); + } + } else { + if (document.getElementById(s)) { + document.getElementById(s).visibility="visible"; + document.getElementById(s).style.display=shm; + } + } +} +/* Affiche / Cache le composant s */ +function swap(s,shm) { + if (document.all) { + if (document.all[s]) { + if (document.all[s].visibility=="visible") { + hide(s); + } else { + show(s,shm); + } + } + } else { + if (document.getElementById(s)) { + if (document.getElementById(s).visibility=="visible") { + hide(s); + } else { + show(s,shm); + } + } + } +} diff --git a/stable-1.0/bureau/admin/js/jquery.min.js b/stable-1.0/bureau/admin/js/jquery.min.js new file mode 100644 index 00000000..6437874c --- /dev/null +++ b/stable-1.0/bureau/admin/js/jquery.min.js @@ -0,0 +1,16 @@ +/*! + * jQuery JavaScript Library v1.5.1 + * http://jquery.com/ + * + * Copyright 2011, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Wed Feb 23 13:55:29 2011 -0500 + */ +(function(a,b){function cg(a){return d.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cd(a){if(!bZ[a]){var b=d("<"+a+">").appendTo("body"),c=b.css("display");b.remove();if(c==="none"||c==="")c="block";bZ[a]=c}return bZ[a]}function cc(a,b){var c={};d.each(cb.concat.apply([],cb.slice(0,b)),function(){c[this]=a});return c}function bY(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function bX(){try{return new a.XMLHttpRequest}catch(b){}}function bW(){d(a).unload(function(){for(var a in bU)bU[a](0,1)})}function bQ(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var e=a.dataTypes,f={},g,h,i=e.length,j,k=e[0],l,m,n,o,p;for(g=1;g=0===c})}function N(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function F(a,b){return(a&&a!=="*"?a+".":"")+b.replace(r,"`").replace(s,"&")}function E(a){var b,c,e,f,g,h,i,j,k,l,m,n,o,q=[],r=[],s=d._data(this,"events");if(a.liveFired!==this&&s&&s.live&&!a.target.disabled&&(!a.button||a.type!=="click")){a.namespace&&(n=new RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)")),a.liveFired=this;var t=s.live.slice(0);for(i=0;ic)break;a.currentTarget=f.elem,a.data=f.handleObj.data,a.handleObj=f.handleObj,o=f.handleObj.origHandler.apply(f.elem,arguments);if(o===!1||a.isPropagationStopped()){c=f.level,o===!1&&(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function C(a,c,e){var f=d.extend({},e[0]);f.type=a,f.originalEvent={},f.liveFired=b,d.event.handle.call(c,f),f.isDefaultPrevented()&&e[0].preventDefault()}function w(){return!0}function v(){return!1}function g(a){for(var b in a)if(b!=="toJSON")return!1;return!0}function f(a,c,f){if(f===b&&a.nodeType===1){f=a.getAttribute("data-"+c);if(typeof f==="string"){try{f=f==="true"?!0:f==="false"?!1:f==="null"?null:d.isNaN(f)?e.test(f)?d.parseJSON(f):f:parseFloat(f)}catch(g){}d.data(a,c,f)}else f=b}return f}var c=a.document,d=function(){function I(){if(!d.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(I,1);return}d.ready()}}var d=function(a,b){return new d.fn.init(a,b,g)},e=a.jQuery,f=a.$,g,h=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]+)$)/,i=/\S/,j=/^\s+/,k=/\s+$/,l=/\d/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=navigator.userAgent,w,x=!1,y,z="then done fail isResolved isRejected promise".split(" "),A,B=Object.prototype.toString,C=Object.prototype.hasOwnProperty,D=Array.prototype.push,E=Array.prototype.slice,F=String.prototype.trim,G=Array.prototype.indexOf,H={};d.fn=d.prototype={constructor:d,init:function(a,e,f){var g,i,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!e&&c.body){this.context=c,this[0]=c.body,this.selector="body",this.length=1;return this}if(typeof a==="string"){g=h.exec(a);if(!g||!g[1]&&e)return!e||e.jquery?(e||f).find(a):this.constructor(e).find(a);if(g[1]){e=e instanceof d?e[0]:e,k=e?e.ownerDocument||e:c,j=m.exec(a),j?d.isPlainObject(e)?(a=[c.createElement(j[1])],d.fn.attr.call(a,e,!0)):a=[k.createElement(j[1])]:(j=d.buildFragment([g[1]],[k]),a=(j.cacheable?d.clone(j.fragment):j.fragment).childNodes);return d.merge(this,a)}i=c.getElementById(g[2]);if(i&&i.parentNode){if(i.id!==g[2])return f.find(a);this.length=1,this[0]=i}this.context=c,this.selector=a;return this}if(d.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return d.makeArray(a,this)},selector:"",jquery:"1.5.1",length:0,size:function(){return this.length},toArray:function(){return E.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var e=this.constructor();d.isArray(a)?D.apply(e,a):d.merge(e,a),e.prevObject=this,e.context=this.context,b==="find"?e.selector=this.selector+(this.selector?" ":"")+c:b&&(e.selector=this.selector+"."+b+"("+c+")");return e},each:function(a,b){return d.each(this,a,b)},ready:function(a){d.bindReady(),y.done(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(E.apply(this,arguments),"slice",E.call(arguments).join(","))},map:function(a){return this.pushStack(d.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:D,sort:[].sort,splice:[].splice},d.fn.init.prototype=d.fn,d.extend=d.fn.extend=function(){var a,c,e,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i==="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!=="object"&&!d.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j0)return;y.resolveWith(c,[d]),d.fn.trigger&&d(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!x){x=!0;if(c.readyState==="complete")return setTimeout(d.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",A,!1),a.addEventListener("load",d.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",A),a.attachEvent("onload",d.ready);var b=!1;try{b=a.frameElement==null}catch(e){}c.documentElement.doScroll&&b&&I()}}},isFunction:function(a){return d.type(a)==="function"},isArray:Array.isArray||function(a){return d.type(a)==="array"},isWindow:function(a){return a&&typeof a==="object"&&"setInterval"in a},isNaN:function(a){return a==null||!l.test(a)||isNaN(a)},type:function(a){return a==null?String(a):H[B.call(a)]||"object"},isPlainObject:function(a){if(!a||d.type(a)!=="object"||a.nodeType||d.isWindow(a))return!1;if(a.constructor&&!C.call(a,"constructor")&&!C.call(a.constructor.prototype,"isPrototypeOf"))return!1;var c;for(c in a){}return c===b||C.call(a,c)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!=="string"||!b)return null;b=d.trim(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return a.JSON&&a.JSON.parse?a.JSON.parse(b):(new Function("return "+b))();d.error("Invalid JSON: "+b)},parseXML:function(b,c,e){a.DOMParser?(e=new DOMParser,c=e.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b)),e=c.documentElement,(!e||!e.nodeName||e.nodeName==="parsererror")&&d.error("Invalid XML: "+b);return c},noop:function(){},globalEval:function(a){if(a&&i.test(a)){var b=c.head||c.getElementsByTagName("head")[0]||c.documentElement,e=c.createElement("script");d.support.scriptEval()?e.appendChild(c.createTextNode(a)):e.text=a,b.insertBefore(e,b.firstChild),b.removeChild(e)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,e){var f,g=0,h=a.length,i=h===b||d.isFunction(a);if(e){if(i){for(f in a)if(c.apply(a[f],e)===!1)break}else for(;g1){var f=E.call(arguments,0),g=b,h=function(a){return function(b){f[a]=arguments.length>1?E.call(arguments,0):b,--g||c.resolveWith(e,f)}};while(b--)a=f[b],a&&d.isFunction(a.promise)?a.promise().then(h(b),c.reject):--g;g||c.resolveWith(e,f)}else c!==a&&c.resolve(a);return e},uaMatch:function(a){a=a.toLowerCase();var b=r.exec(a)||s.exec(a)||t.exec(a)||a.indexOf("compatible")<0&&u.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}d.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.subclass=this.subclass,a.fn.init=function b(b,c){c&&c instanceof d&&!(c instanceof a)&&(c=a(c));return d.fn.init.call(this,b,c,e)},a.fn.init.prototype=a.fn;var e=a(c);return a},browser:{}}),y=d._Deferred(),d.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){H["[object "+b+"]"]=b.toLowerCase()}),w=d.uaMatch(v),w.browser&&(d.browser[w.browser]=!0,d.browser.version=w.version),d.browser.webkit&&(d.browser.safari=!0),G&&(d.inArray=function(a,b){return G.call(b,a)}),i.test(" ")&&(j=/^[\s\xA0]+/,k=/[\s\xA0]+$/),g=d(c),c.addEventListener?A=function(){c.removeEventListener("DOMContentLoaded",A,!1),d.ready()}:c.attachEvent&&(A=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",A),d.ready())});return d}();(function(){d.support={};var b=c.createElement("div");b.style.display="none",b.innerHTML="
          a";var e=b.getElementsByTagName("*"),f=b.getElementsByTagName("a")[0],g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=b.getElementsByTagName("input")[0];if(e&&e.length&&f){d.support={leadingWhitespace:b.firstChild.nodeType===3,tbody:!b.getElementsByTagName("tbody").length,htmlSerialize:!!b.getElementsByTagName("link").length,style:/red/.test(f.getAttribute("style")),hrefNormalized:f.getAttribute("href")==="/a",opacity:/^0.55$/.test(f.style.opacity),cssFloat:!!f.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,deleteExpando:!0,optDisabled:!1,checkClone:!1,noCloneEvent:!0,noCloneChecked:!0,boxModel:null,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableHiddenOffsets:!0},i.checked=!0,d.support.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,d.support.optDisabled=!h.disabled;var j=null;d.support.scriptEval=function(){if(j===null){var b=c.documentElement,e=c.createElement("script"),f="script"+d.now();try{e.appendChild(c.createTextNode("window."+f+"=1;"))}catch(g){}b.insertBefore(e,b.firstChild),a[f]?(j=!0,delete a[f]):j=!1,b.removeChild(e),b=e=f=null}return j};try{delete b.test}catch(k){d.support.deleteExpando=!1}!b.addEventListener&&b.attachEvent&&b.fireEvent&&(b.attachEvent("onclick",function l(){d.support.noCloneEvent=!1,b.detachEvent("onclick",l)}),b.cloneNode(!0).fireEvent("onclick")),b=c.createElement("div"),b.innerHTML="";var m=c.createDocumentFragment();m.appendChild(b.firstChild),d.support.checkClone=m.cloneNode(!0).cloneNode(!0).lastChild.checked,d(function(){var a=c.createElement("div"),b=c.getElementsByTagName("body")[0];if(b){a.style.width=a.style.paddingLeft="1px",b.appendChild(a),d.boxModel=d.support.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,d.support.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="
          ",d.support.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="
          t
          ";var e=a.getElementsByTagName("td");d.support.reliableHiddenOffsets=e[0].offsetHeight===0,e[0].style.display="",e[1].style.display="none",d.support.reliableHiddenOffsets=d.support.reliableHiddenOffsets&&e[0].offsetHeight===0,a.innerHTML="",b.removeChild(a).style.display="none",a=e=null}});var n=function(a){var b=c.createElement("div");a="on"+a;if(!b.attachEvent)return!0;var d=a in b;d||(b.setAttribute(a,"return;"),d=typeof b[a]==="function"),b=null;return d};d.support.submitBubbles=n("submit"),d.support.changeBubbles=n("change"),b=e=f=null}})();var e=/^(?:\{.*\}|\[.*\])$/;d.extend({cache:{},uuid:0,expando:"jQuery"+(d.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?d.cache[a[d.expando]]:a[d.expando];return!!a&&!g(a)},data:function(a,c,e,f){if(d.acceptData(a)){var g=d.expando,h=typeof c==="string",i,j=a.nodeType,k=j?d.cache:a,l=j?a[d.expando]:a[d.expando]&&d.expando;if((!l||f&&l&&!k[l][g])&&h&&e===b)return;l||(j?a[d.expando]=l=++d.uuid:l=d.expando),k[l]||(k[l]={},j||(k[l].toJSON=d.noop));if(typeof c==="object"||typeof c==="function")f?k[l][g]=d.extend(k[l][g],c):k[l]=d.extend(k[l],c);i=k[l],f&&(i[g]||(i[g]={}),i=i[g]),e!==b&&(i[c]=e);if(c==="events"&&!i[c])return i[g]&&i[g].events;return h?i[c]:i}},removeData:function(b,c,e){if(d.acceptData(b)){var f=d.expando,h=b.nodeType,i=h?d.cache:b,j=h?b[d.expando]:d.expando;if(!i[j])return;if(c){var k=e?i[j][f]:i[j];if(k){delete k[c];if(!g(k))return}}if(e){delete i[j][f];if(!g(i[j]))return}var l=i[j][f];d.support.deleteExpando||i!=a?delete i[j]:i[j]=null,l?(i[j]={},h||(i[j].toJSON=d.noop),i[j][f]=l):h&&(d.support.deleteExpando?delete b[d.expando]:b.removeAttribute?b.removeAttribute(d.expando):b[d.expando]=null)}},_data:function(a,b,c){return d.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=d.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),d.fn.extend({data:function(a,c){var e=null;if(typeof a==="undefined"){if(this.length){e=d.data(this[0]);if(this[0].nodeType===1){var g=this[0].attributes,h;for(var i=0,j=g.length;i-1)return!0;return!1},val:function(a){if(!arguments.length){var c=this[0];if(c){if(d.nodeName(c,"option")){var e=c.attributes.value;return!e||e.specified?c.value:c.text}if(d.nodeName(c,"select")){var f=c.selectedIndex,g=[],h=c.options,i=c.type==="select-one";if(f<0)return null;for(var k=i?f:0,l=i?f+1:h.length;k=0;else if(d.nodeName(this,"select")){var f=d.makeArray(e);d("option",this).each(function(){this.selected=d.inArray(d(this).val(),f)>=0}),f.length||(this.selectedIndex=-1)}else this.value=e}})}}),d.extend({attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,e,f){if(!a||a.nodeType===3||a.nodeType===8||a.nodeType===2)return b;if(f&&c in d.attrFn)return d(a)[c](e);var g=a.nodeType!==1||!d.isXMLDoc(a),h=e!==b;c=g&&d.props[c]||c;if(a.nodeType===1){var i=k.test(c);if(c==="selected"&&!d.support.optSelected){var j=a.parentNode;j&&(j.selectedIndex,j.parentNode&&j.parentNode.selectedIndex)}if((c in a||a[c]!==b)&&g&&!i){h&&(c==="type"&&l.test(a.nodeName)&&a.parentNode&&d.error("type property can't be changed"),e===null?a.nodeType===1&&a.removeAttribute(c):a[c]=e);if(d.nodeName(a,"form")&&a.getAttributeNode(c))return a.getAttributeNode(c).nodeValue;if(c==="tabIndex"){var o=a.getAttributeNode("tabIndex");return o&&o.specified?o.value:m.test(a.nodeName)||n.test(a.nodeName)&&a.href?0:b}return a[c]}if(!d.support.style&&g&&c==="style"){h&&(a.style.cssText=""+e);return a.style.cssText}h&&a.setAttribute(c,""+e);if(!a.attributes[c]&&(a.hasAttribute&&!a.hasAttribute(c)))return b;var p=!d.support.hrefNormalized&&g&&i?a.getAttribute(c,2):a.getAttribute(c);return p===null?b:p}h&&(a[c]=e);return a[c]}});var p=/\.(.*)$/,q=/^(?:textarea|input|select)$/i,r=/\./g,s=/ /g,t=/[^\w\s.|`]/g,u=function(a){return a.replace(t,"\\$&")};d.event={add:function(c,e,f,g){if(c.nodeType!==3&&c.nodeType!==8){try{d.isWindow(c)&&(c!==a&&!c.frameElement)&&(c=a)}catch(h){}if(f===!1)f=v;else if(!f)return;var i,j;f.handler&&(i=f,f=i.handler),f.guid||(f.guid=d.guid++);var k=d._data(c);if(!k)return;var l=k.events,m=k.handle;l||(k.events=l={}),m||(k.handle=m=function(){return typeof d!=="undefined"&&!d.event.triggered?d.event.handle.apply(m.elem,arguments):b}),m.elem=c,e=e.split(" ");var n,o=0,p;while(n=e[o++]){j=i?d.extend({},i):{handler:f,data:g},n.indexOf(".")>-1?(p=n.split("."),n=p.shift(),j.namespace=p.slice(0).sort().join(".")):(p=[],j.namespace=""),j.type=n,j.guid||(j.guid=f.guid);var q=l[n],r=d.event.special[n]||{};if(!q){q=l[n]=[];if(!r.setup||r.setup.call(c,g,p,m)===!1)c.addEventListener?c.addEventListener(n,m,!1):c.attachEvent&&c.attachEvent("on"+n,m)}r.add&&(r.add.call(c,j),j.handler.guid||(j.handler.guid=f.guid)),q.push(j),d.event.global[n]=!0}c=null}},global:{},remove:function(a,c,e,f){if(a.nodeType!==3&&a.nodeType!==8){e===!1&&(e=v);var g,h,i,j,k=0,l,m,n,o,p,q,r,s=d.hasData(a)&&d._data(a),t=s&&s.events;if(!s||!t)return;c&&c.type&&(e=c.handler,c=c.type);if(!c||typeof c==="string"&&c.charAt(0)==="."){c=c||"";for(h in t)d.event.remove(a,h+c);return}c=c.split(" ");while(h=c[k++]){r=h,q=null,l=h.indexOf(".")<0,m=[],l||(m=h.split("."),h=m.shift(),n=new RegExp("(^|\\.)"+d.map(m.slice(0).sort(),u).join("\\.(?:.*\\.)?")+"(\\.|$)")),p=t[h];if(!p)continue;if(!e){for(j=0;j=0&&(a.type=f=f.slice(0,-1),a.exclusive=!0),e||(a.stopPropagation(),d.event.global[f]&&d.each(d.cache,function(){var b=d.expando,e=this[b];e&&e.events&&e.events[f]&&d.event.trigger(a,c,e.handle.elem)}));if(!e||e.nodeType===3||e.nodeType===8)return b;a.result=b,a.target=e,c=d.makeArray(c),c.unshift(a)}a.currentTarget=e;var h=d._data(e,"handle");h&&h.apply(e,c);var i=e.parentNode||e.ownerDocument;try{e&&e.nodeName&&d.noData[e.nodeName.toLowerCase()]||e["on"+f]&&e["on"+f].apply(e,c)===!1&&(a.result=!1,a.preventDefault())}catch(j){}if(!a.isPropagationStopped()&&i)d.event.trigger(a,c,i,!0);else if(!a.isDefaultPrevented()){var k,l=a.target,m=f.replace(p,""),n=d.nodeName(l,"a")&&m==="click",o=d.event.special[m]||{};if((!o._default||o._default.call(e,a)===!1)&&!n&&!(l&&l.nodeName&&d.noData[l.nodeName.toLowerCase()])){try{l[m]&&(k=l["on"+m],k&&(l["on"+m]=null),d.event.triggered=!0,l[m]())}catch(q){}k&&(l["on"+m]=k),d.event.triggered=!1}}},handle:function(c){var e,f,g,h,i,j=[],k=d.makeArray(arguments);c=k[0]=d.event.fix(c||a.event),c.currentTarget=this,e=c.type.indexOf(".")<0&&!c.exclusive,e||(g=c.type.split("."),c.type=g.shift(),j=g.slice(0).sort(),h=new RegExp("(^|\\.)"+j.join("\\.(?:.*\\.)?")+"(\\.|$)")),c.namespace=c.namespace||j.join("."),i=d._data(this,"events"),f=(i||{})[c.type];if(i&&f){f=f.slice(0);for(var l=0,m=f.length;l-1?d.map(a.options,function(a){return a.selected}).join("-"):"":a.nodeName.toLowerCase()==="select"&&(c=a.selectedIndex);return c},B=function B(a){var c=a.target,e,f;if(q.test(c.nodeName)&&!c.readOnly){e=d._data(c,"_change_data"),f=A(c),(a.type!=="focusout"||c.type!=="radio")&&d._data(c,"_change_data",f);if(e===b||f===e)return;if(e!=null||f)a.type="change",a.liveFired=b,d.event.trigger(a,arguments[1],c)}};d.event.special.change={filters:{focusout:B,beforedeactivate:B,click:function(a){var b=a.target,c=b.type;(c==="radio"||c==="checkbox"||b.nodeName.toLowerCase()==="select")&&B.call(this,a)},keydown:function(a){var b=a.target,c=b.type;(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(c==="checkbox"||c==="radio")||c==="select-multiple")&&B.call(this,a)},beforeactivate:function(a){var b=a.target;d._data(b,"_change_data",A(b))}},setup:function(a,b){if(this.type==="file")return!1;for(var c in z)d.event.add(this,c+".specialChange",z[c]);return q.test(this.nodeName)},teardown:function(a){d.event.remove(this,".specialChange");return q.test(this.nodeName)}},z=d.event.special.change.filters,z.focus=z.beforeactivate}c.addEventListener&&d.each({focus:"focusin",blur:"focusout"},function(a,b){function c(a){a=d.event.fix(a),a.type=b;return d.event.handle.call(this,a)}d.event.special[b]={setup:function(){this.addEventListener(a,c,!0)},teardown:function(){this.removeEventListener(a,c,!0)}}}),d.each(["bind","one"],function(a,c){d.fn[c]=function(a,e,f){if(typeof a==="object"){for(var g in a)this[c](g,e,a[g],f);return this}if(d.isFunction(e)||e===!1)f=e,e=b;var h=c==="one"?d.proxy(f,function(a){d(this).unbind(a,h);return f.apply(this,arguments)}):f;if(a==="unload"&&c!=="one")this.one(a,e,f);else for(var i=0,j=this.length;i0?this.bind(b,a,c):this.trigger(b)},d.attrFn&&(d.attrFn[b]=!0)}),function(){function u(a,b,c,d,e,f){for(var g=0,h=d.length;g0){j=i;break}}i=i[a]}d[g]=j}}}function t(a,b,c,d,e,f){for(var g=0,h=d.length;g+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,e=0,f=Object.prototype.toString,g=!1,h=!0,i=/\\/g,j=/\W/;[0,0].sort(function(){h=!1;return 0});var k=function(b,d,e,g){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!=="string")return e;var i,j,n,o,q,r,s,t,u=!0,w=k.isXML(d),x=[],y=b;do{a.exec(""),i=a.exec(y);if(i){y=i[3],x.push(i[1]);if(i[2]){o=i[3];break}}}while(i);if(x.length>1&&m.exec(b))if(x.length===2&&l.relative[x[0]])j=v(x[0]+x[1],d);else{j=l.relative[x[0]]?[d]:k(x.shift(),d);while(x.length)b=x.shift(),l.relative[b]&&(b+=x.shift()),j=v(b,j)}else{!g&&x.length>1&&d.nodeType===9&&!w&&l.match.ID.test(x[0])&&!l.match.ID.test(x[x.length-1])&&(q=k.find(x.shift(),d,w),d=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]);if(d){q=g?{expr:x.pop(),set:p(g)}:k.find(x.pop(),x.length===1&&(x[0]==="~"||x[0]==="+")&&d.parentNode?d.parentNode:d,w),j=q.expr?k.filter(q.expr,q.set):q.set,x.length>0?n=p(j):u=!1;while(x.length)r=x.pop(),s=r,l.relative[r]?s=x.pop():r="",s==null&&(s=d),l.relative[r](n,s,w)}else n=x=[]}n||(n=j),n||k.error(r||b);if(f.call(n)==="[object Array]")if(u)if(d&&d.nodeType===1)for(t=0;n[t]!=null;t++)n[t]&&(n[t]===!0||n[t].nodeType===1&&k.contains(d,n[t]))&&e.push(j[t]);else for(t=0;n[t]!=null;t++)n[t]&&n[t].nodeType===1&&e.push(j[t]);else e.push.apply(e,n);else p(n,e);o&&(k(o,h,e,g),k.uniqueSort(e));return e};k.uniqueSort=function(a){if(r){g=h,a.sort(r);if(g)for(var b=1;b0},k.find=function(a,b,c){var d;if(!a)return[];for(var e=0,f=l.order.length;e":function(a,b){var c,d=typeof b==="string",e=0,f=a.length;if(d&&!j.test(b)){b=b.toLowerCase();for(;e=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(i,"")},TAG:function(a,b){return a[1].replace(i,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||k.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&k.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(i,"");!f&&l.attrMap[g]&&(a[1]=l.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(i,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=k(b[3],null,null,c);else{var g=k.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(l.match.POS.test(b[0])||l.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!k(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){return"text"===a.getAttribute("type")},radio:function(a){return"radio"===a.type},checkbox:function(a){return"checkbox"===a.type},file:function(a){return"file"===a.type},password:function(a){return"password"===a.type},submit:function(a){return"submit"===a.type},image:function(a){return"image"===a.type},reset:function(a){return"reset"===a.type},button:function(a){return"button"===a.type||a.nodeName.toLowerCase()==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return bc[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=l.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||k.getText([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=l.attrHandle[c]?l.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=l.setFilters[e];if(f)return f(a,c,b,d)}}},m=l.match.POS,n=function(a,b){return"\\"+(b-0+1)};for(var o in l.match)l.match[o]=new RegExp(l.match[o].source+/(?![^\[]*\])(?![^\(]*\))/.source),l.leftMatch[o]=new RegExp(/(^(?:.|\r|\n)*?)/.source+l.match[o].source.replace(/\\(\d+)/g,n));var p=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(q){p=function(a,b){var c=0,d=b||[];if(f.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length==="number")for(var e=a.length;c",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(l.find.ID=function(a,c,d){if(typeof c.getElementById!=="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!=="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},l.filter.ID=function(a,b){var c=typeof a.getAttributeNode!=="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(l.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="",a.firstChild&&typeof a.firstChild.getAttribute!=="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(l.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=k,b=c.createElement("div"),d="__sizzle__";b.innerHTML="

          ";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){k=function(b,e,f,g){e=e||c;if(!g&&!k.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return p(e.getElementsByTagName(b),f);if(h[2]&&l.find.CLASS&&e.getElementsByClassName)return p(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return p([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return p([],f);if(i.id===h[3])return p([i],f)}try{return p(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var m=e,n=e.getAttribute("id"),o=n||d,q=e.parentNode,r=/^\s*[+~]/.test(b);n?o=o.replace(/'/g,"\\$&"):e.setAttribute("id",o),r&&q&&(e=e.parentNode);try{if(!r||q)return p(e.querySelectorAll("[id='"+o+"'] "+b),f)}catch(s){}finally{n||m.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)k[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector,d=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(e){d=!0}b&&(k.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(a))try{if(d||!l.match.PSEUDO.test(c)&&!/!=/.test(c))return b.call(a,c)}catch(e){}return k(c,null,null,[a]).length>0})}(),function(){var a=c.createElement("div");a.innerHTML="
          ";if(a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;l.order.splice(1,0,"CLASS"),l.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!=="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?k.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?k.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:k.contains=function(){return!1},k.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var v=function(a,b){var c,d=[],e="",f=b.nodeType?[b]:b;while(c=l.match.PSEUDO.exec(a))e+=c[0],a=a.replace(l.match.PSEUDO,"");a=l.relative[a]?a+"*":a;for(var g=0,h=f.length;g0)for(var g=c;g0},closest:function(a,b){var c=[],e,f,g=this[0];if(d.isArray(a)){var h,i,j={},k=1;if(g&&a.length){for(e=0,f=a.length;e-1:d(g).is(h))&&c.push({selector:i,elem:g,level:k});g=g.parentNode,k++}}return c}var l=L.test(a)?d(a,b||this.context):null;for(e=0,f=this.length;e-1:d.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b)break}}c=c.length>1?d.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a||typeof a==="string")return d.inArray(this[0],a?d(a):this.parent().children());return d.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a==="string"?d(a,b):d.makeArray(a),e=d.merge(this.get(),c);return this.pushStack(N(c[0])||N(e[0])?e:d.unique(e))},andSelf:function(){return this.add(this.prevObject)}}),d.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return d.dir(a,"parentNode")},parentsUntil:function(a,b,c){return d.dir(a,"parentNode",c)},next:function(a){return d.nth(a,2,"nextSibling")},prev:function(a){return d.nth(a,2,"previousSibling")},nextAll:function(a){return d.dir(a,"nextSibling")},prevAll:function(a){return d.dir(a,"previousSibling")},nextUntil:function(a,b,c){return d.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return d.dir(a,"previousSibling",c)},siblings:function(a){return d.sibling(a.parentNode.firstChild,a)},children:function(a){return d.sibling(a.firstChild)},contents:function(a){return d.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:d.makeArray(a.childNodes)}},function(a,b){d.fn[a]=function(c,e){var f=d.map(this,b,c),g=K.call(arguments);G.test(a)||(e=c),e&&typeof e==="string"&&(f=d.filter(e,f)),f=this.length>1&&!M[a]?d.unique(f):f,(this.length>1||I.test(e))&&H.test(a)&&(f=f.reverse());return this.pushStack(f,a,g.join(","))}}),d.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?d.find.matchesSelector(b[0],a)?[b[0]]:[]:d.find.matches(a,b)},dir:function(a,c,e){var f=[],g=a[c];while(g&&g.nodeType!==9&&(e===b||g.nodeType!==1||!d(g).is(e)))g.nodeType===1&&f.push(g),g=g[c];return f},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var P=/ jQuery\d+="(?:\d+|null)"/g,Q=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,S=/<([\w:]+)/,T=/
          ","
          "],tr:[2,"","
          "],td:[3,"","
          "],col:[2,"","
          "],area:[1,"",""],_default:[0,"",""]};X.optgroup=X.option,X.tbody=X.tfoot=X.colgroup=X.caption=X.thead,X.th=X.td,d.support.htmlSerialize||(X._default=[1,"div
          ","
          "]),d.fn.extend({text:function(a){if(d.isFunction(a))return this.each(function(b){var c=d(this);c.text(a.call(this,b,c.text()))});if(typeof a!=="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return d.text(this)},wrapAll:function(a){if(d.isFunction(a))return this.each(function(b){d(this).wrapAll(a.call(this,b))});if(this[0]){var b=d(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(d.isFunction(a))return this.each(function(b){d(this).wrapInner(a.call(this,b))});return this.each(function(){var b=d(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){d(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){d.nodeName(this,"body")||d(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=d(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,d(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,e;(e=this[c])!=null;c++)if(!a||d.filter(a,[e]).length)!b&&e.nodeType===1&&(d.cleanData(e.getElementsByTagName("*")),d.cleanData([e])),e.parentNode&&e.parentNode.removeChild(e);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&d.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return d.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(P,""):null;if(typeof a!=="string"||V.test(a)||!d.support.leadingWhitespace&&Q.test(a)||X[(S.exec(a)||["",""])[1].toLowerCase()])d.isFunction(a)?this.each(function(b){var c=d(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);else{a=a.replace(R,"<$1>");try{for(var c=0,e=this.length;c1&&l0?this.clone(!0):this).get();d(f[h])[b](j),e=e.concat(j)}return this.pushStack(e,a,f.selector)}}),d.extend({clone:function(a,b,c){var e=a.cloneNode(!0),f,g,h;if((!d.support.noCloneEvent||!d.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!d.isXMLDoc(a)){$(a,e),f=_(a),g=_(e);for(h=0;f[h];++h)$(f[h],g[h])}if(b){Z(a,e);if(c){f=_(a),g=_(e);for(h=0;f[h];++h)Z(f[h],g[h])}}return e},clean:function(a,b,e,f){b=b||c,typeof b.createElement==="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var g=[];for(var h=0,i;(i=a[h])!=null;h++){typeof i==="number"&&(i+="");if(!i)continue;if(typeof i!=="string"||U.test(i)){if(typeof i==="string"){i=i.replace(R,"<$1>");var j=(S.exec(i)||["",""])[1].toLowerCase(),k=X[j]||X._default,l=k[0],m=b.createElement("div");m.innerHTML=k[1]+i+k[2];while(l--)m=m.lastChild;if(!d.support.tbody){var n=T.test(i),o=j==="table"&&!n?m.firstChild&&m.firstChild.childNodes:k[1]===""&&!n?m.childNodes:[];for(var p=o.length-1;p>=0;--p)d.nodeName(o[p],"tbody")&&!o[p].childNodes.length&&o[p].parentNode.removeChild(o[p])}!d.support.leadingWhitespace&&Q.test(i)&&m.insertBefore(b.createTextNode(Q.exec(i)[0]),m.firstChild),i=m.childNodes}}else i=b.createTextNode(i);i.nodeType?g.push(i):g=d.merge(g,i)}if(e)for(h=0;g[h];h++)!f||!d.nodeName(g[h],"script")||g[h].type&&g[h].type.toLowerCase()!=="text/javascript"?(g[h].nodeType===1&&g.splice.apply(g,[h+1,0].concat(d.makeArray(g[h].getElementsByTagName("script")))),e.appendChild(g[h])):f.push(g[h].parentNode?g[h].parentNode.removeChild(g[h]):g[h]);return g},cleanData:function(a){var b,c,e=d.cache,f=d.expando,g=d.event.special,h=d.support.deleteExpando;for(var i=0,j;(j=a[i])!=null;i++){if(j.nodeName&&d.noData[j.nodeName.toLowerCase()])continue;c=j[d.expando];if(c){b=e[c]&&e[c][f];if(b&&b.events){for(var k in b.events)g[k]?d.event.remove(j,k):d.removeEvent(j,k,b.handle);b.handle&&(b.handle.elem=null)}h?delete j[d.expando]:j.removeAttribute&&j.removeAttribute(d.expando),delete e[c]}}}});var bb=/alpha\([^)]*\)/i,bc=/opacity=([^)]*)/,bd=/-([a-z])/ig,be=/([A-Z])/g,bf=/^-?\d+(?:px)?$/i,bg=/^-?\d/,bh={position:"absolute",visibility:"hidden",display:"block"},bi=["Left","Right"],bj=["Top","Bottom"],bk,bl,bm,bn=function(a,b){return b.toUpperCase()};d.fn.css=function(a,c){if(arguments.length===2&&c===b)return this;return d.access(this,a,c,!0,function(a,c,e){return e!==b?d.style(a,c,e):d.css(a,c)})},d.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bk(a,"opacity","opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{zIndex:!0,fontWeight:!0,opacity:!0,zoom:!0,lineHeight:!0},cssProps:{"float":d.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,e,f){if(a&&a.nodeType!==3&&a.nodeType!==8&&a.style){var g,h=d.camelCase(c),i=a.style,j=d.cssHooks[h];c=d.cssProps[h]||h;if(e===b){if(j&&"get"in j&&(g=j.get(a,!1,f))!==b)return g;return i[c]}if(typeof e==="number"&&isNaN(e)||e==null)return;typeof e==="number"&&!d.cssNumber[h]&&(e+="px");if(!j||!("set"in j)||(e=j.set(a,e))!==b)try{i[c]=e}catch(k){}}},css:function(a,c,e){var f,g=d.camelCase(c),h=d.cssHooks[g];c=d.cssProps[g]||g;if(h&&"get"in h&&(f=h.get(a,!0,e))!==b)return f;if(bk)return bk(a,c,g)},swap:function(a,b,c){var d={};for(var e in b)d[e]=a.style[e],a.style[e]=b[e];c.call(a);for(e in b)a.style[e]=d[e]},camelCase:function(a){return a.replace(bd,bn)}}),d.curCSS=d.css,d.each(["height","width"],function(a,b){d.cssHooks[b]={get:function(a,c,e){var f;if(c){a.offsetWidth!==0?f=bo(a,b,e):d.swap(a,bh,function(){f=bo(a,b,e)});if(f<=0){f=bk(a,b,b),f==="0px"&&bm&&(f=bm(a,b,b));if(f!=null)return f===""||f==="auto"?"0px":f}if(f<0||f==null){f=a.style[b];return f===""||f==="auto"?"0px":f}return typeof f==="string"?f:f+"px"}},set:function(a,b){if(!bf.test(b))return b;b=parseFloat(b);if(b>=0)return b+"px"}}}),d.support.opacity||(d.cssHooks.opacity={get:function(a,b){return bc.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style;c.zoom=1;var e=d.isNaN(b)?"":"alpha(opacity="+b*100+")",f=c.filter||"";c.filter=bb.test(f)?f.replace(bb,e):c.filter+" "+e}}),c.defaultView&&c.defaultView.getComputedStyle&&(bl=function(a,c,e){var f,g,h;e=e.replace(be,"-$1").toLowerCase();if(!(g=a.ownerDocument.defaultView))return b;if(h=g.getComputedStyle(a,null))f=h.getPropertyValue(e),f===""&&!d.contains(a.ownerDocument.documentElement,a)&&(f=d.style(a,e));return f}),c.documentElement.currentStyle&&(bm=function(a,b){var c,d=a.currentStyle&&a.currentStyle[b],e=a.runtimeStyle&&a.runtimeStyle[b],f=a.style;!bf.test(d)&&bg.test(d)&&(c=f.left,e&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":d||0,d=f.pixelLeft+"px",f.left=c,e&&(a.runtimeStyle.left=e));return d===""?"auto":d}),bk=bl||bm,d.expr&&d.expr.filters&&(d.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!d.support.reliableHiddenOffsets&&(a.style.display||d.css(a,"display"))==="none"},d.expr.filters.visible=function(a){return!d.expr.filters.hidden(a)});var bp=/%20/g,bq=/\[\]$/,br=/\r?\n/g,bs=/#.*$/,bt=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bu=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bv=/(?:^file|^widget|\-extension):$/,bw=/^(?:GET|HEAD)$/,bx=/^\/\//,by=/\?/,bz=/)<[^<]*)*<\/script>/gi,bA=/^(?:select|textarea)/i,bB=/\s+/,bC=/([?&])_=[^&]*/,bD=/(^|\-)([a-z])/g,bE=function(a,b,c){return b+c.toUpperCase()},bF=/^([\w\+\.\-]+:)\/\/([^\/?#:]*)(?::(\d+))?/,bG=d.fn.load,bH={},bI={},bJ,bK;try{bJ=c.location.href}catch(bL){bJ=c.createElement("a"),bJ.href="",bJ=bJ.href}bK=bF.exec(bJ.toLowerCase()),d.fn.extend({load:function(a,c,e){if(typeof a!=="string"&&bG)return bG.apply(this,arguments);if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var g=a.slice(f,a.length);a=a.slice(0,f)}var h="GET";c&&(d.isFunction(c)?(e=c,c=b):typeof c==="object"&&(c=d.param(c,d.ajaxSettings.traditional),h="POST"));var i=this;d.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?d("
          ").append(c.replace(bz,"")).find(g):c)),e&&i.each(e,[c,b,a])}});return this},serialize:function(){return d.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?d.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bA.test(this.nodeName)||bu.test(this.type))}).map(function(a,b){var c=d(this).val();return c==null?null:d.isArray(c)?d.map(c,function(a,c){return{name:b.name,value:a.replace(br,"\r\n")}}):{name:b.name,value:c.replace(br,"\r\n")}}).get()}}),d.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){d.fn[b]=function(a){return this.bind(b,a)}}),d.each(["get","post"],function(a,c){d[c]=function(a,e,f,g){d.isFunction(e)&&(g=g||f,f=e,e=b);return d.ajax({type:c,url:a,data:e,success:f,dataType:g})}}),d.extend({getScript:function(a,c){return d.get(a,b,c,"script")},getJSON:function(a,b,c){return d.get(a,b,c,"json")},ajaxSetup:function(a,b){b?d.extend(!0,a,d.ajaxSettings,b):(b=a,a=d.extend(!0,d.ajaxSettings,b));for(var c in {context:1,url:1})c in b?a[c]=b[c]:c in d.ajaxSettings&&(a[c]=d.ajaxSettings[c]);return a},ajaxSettings:{url:bJ,isLocal:bv.test(bK[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":"*/*"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":d.parseJSON,"text xml":d.parseXML}},ajaxPrefilter:bM(bH),ajaxTransport:bM(bI),ajax:function(a,c){function v(a,c,l,n){if(r!==2){r=2,p&&clearTimeout(p),o=b,m=n||"",u.readyState=a?4:0;var q,t,v,w=l?bP(e,u,l):b,x,y;if(a>=200&&a<300||a===304){if(e.ifModified){if(x=u.getResponseHeader("Last-Modified"))d.lastModified[k]=x;if(y=u.getResponseHeader("Etag"))d.etag[k]=y}if(a===304)c="notmodified",q=!0;else try{t=bQ(e,w),c="success",q=!0}catch(z){c="parsererror",v=z}}else{v=c;if(!c||a)c="error",a<0&&(a=0)}u.status=a,u.statusText=c,q?h.resolveWith(f,[t,c,u]):h.rejectWith(f,[u,c,v]),u.statusCode(j),j=b,s&&g.trigger("ajax"+(q?"Success":"Error"),[u,e,q?t:v]),i.resolveWith(f,[u,c]),s&&(g.trigger("ajaxComplete",[u,e]),--d.active||d.event.trigger("ajaxStop"))}}typeof a==="object"&&(c=a,a=b),c=c||{};var e=d.ajaxSetup({},c),f=e.context||e,g=f!==e&&(f.nodeType||f instanceof d)?d(f):d.event,h=d.Deferred(),i=d._Deferred(),j=e.statusCode||{},k,l={},m,n,o,p,q,r=0,s,t,u={readyState:0,setRequestHeader:function(a,b){r||(l[a.toLowerCase().replace(bD,bE)]=b);return this},getAllResponseHeaders:function(){return r===2?m:null},getResponseHeader:function(a){var c;if(r===2){if(!n){n={};while(c=bt.exec(m))n[c[1].toLowerCase()]=c[2]}c=n[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){r||(e.mimeType=a);return this},abort:function(a){a=a||"abort",o&&o.abort(a),v(0,a);return this}};h.promise(u),u.success=u.done,u.error=u.fail,u.complete=i.done,u.statusCode=function(a){if(a){var b;if(r<2)for(b in a)j[b]=[j[b],a[b]];else b=a[u.status],u.then(b,b)}return this},e.url=((a||e.url)+"").replace(bs,"").replace(bx,bK[1]+"//"),e.dataTypes=d.trim(e.dataType||"*").toLowerCase().split(bB),e.crossDomain||(q=bF.exec(e.url.toLowerCase()),e.crossDomain=q&&(q[1]!=bK[1]||q[2]!=bK[2]||(q[3]||(q[1]==="http:"?80:443))!=(bK[3]||(bK[1]==="http:"?80:443)))),e.data&&e.processData&&typeof e.data!=="string"&&(e.data=d.param(e.data,e.traditional)),bN(bH,e,c,u);if(r===2)return!1;s=e.global,e.type=e.type.toUpperCase(),e.hasContent=!bw.test(e.type),s&&d.active++===0&&d.event.trigger("ajaxStart");if(!e.hasContent){e.data&&(e.url+=(by.test(e.url)?"&":"?")+e.data),k=e.url;if(e.cache===!1){var w=d.now(),x=e.url.replace(bC,"$1_="+w);e.url=x+(x===e.url?(by.test(e.url)?"&":"?")+"_="+w:"")}}if(e.data&&e.hasContent&&e.contentType!==!1||c.contentType)l["Content-Type"]=e.contentType;e.ifModified&&(k=k||e.url,d.lastModified[k]&&(l["If-Modified-Since"]=d.lastModified[k]),d.etag[k]&&(l["If-None-Match"]=d.etag[k])),l.Accept=e.dataTypes[0]&&e.accepts[e.dataTypes[0]]?e.accepts[e.dataTypes[0]]+(e.dataTypes[0]!=="*"?", */*; q=0.01":""):e.accepts["*"];for(t in e.headers)u.setRequestHeader(t,e.headers[t]);if(e.beforeSend&&(e.beforeSend.call(f,u,e)===!1||r===2)){u.abort();return!1}for(t in {success:1,error:1,complete:1})u[t](e[t]);o=bN(bI,e,c,u);if(o){u.readyState=1,s&&g.trigger("ajaxSend",[u,e]),e.async&&e.timeout>0&&(p=setTimeout(function(){u.abort("timeout")},e.timeout));try{r=1,o.send(l,v)}catch(y){status<2?v(-1,y):d.error(y)}}else v(-1,"No Transport");return u},param:function(a,c){var e=[],f=function(a,b){b=d.isFunction(b)?b():b,e[e.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=d.ajaxSettings.traditional);if(d.isArray(a)||a.jquery&&!d.isPlainObject(a))d.each(a,function(){f(this.name,this.value)});else for(var g in a)bO(g,a[g],c,f);return e.join("&").replace(bp,"+")}}),d.extend({active:0,lastModified:{},etag:{}});var bR=d.now(),bS=/(\=)\?(&|$)|()\?\?()/i;d.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return d.expando+"_"+bR++}}),d.ajaxPrefilter("json jsonp",function(b,c,e){var f=typeof b.data==="string";if(b.dataTypes[0]==="jsonp"||c.jsonpCallback||c.jsonp!=null||b.jsonp!==!1&&(bS.test(b.url)||f&&bS.test(b.data))){var g,h=b.jsonpCallback=d.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2",m=function(){a[h]=i,g&&d.isFunction(i)&&a[h](g[0])};b.jsonp!==!1&&(j=j.replace(bS,l),b.url===j&&(f&&(k=k.replace(bS,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},e.then(m,m),b.converters["script json"]=function(){g||d.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),d.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){d.globalEval(a);return a}}}),d.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),d.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var bT=d.now(),bU,bV;d.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&bX()||bY()}:bX,bV=d.ajaxSettings.xhr(),d.support.ajax=!!bV,d.support.cors=bV&&"withCredentials"in bV,bV=b,d.support.ajax&&d.ajaxTransport(function(a){if(!a.crossDomain||d.support.cors){var c;return{send:function(e,f){var g=a.xhr(),h,i;a.username?g.open(a.type,a.url,a.async,a.username,a.password):g.open(a.type,a.url,a.async);if(a.xhrFields)for(i in a.xhrFields)g[i]=a.xhrFields[i];a.mimeType&&g.overrideMimeType&&g.overrideMimeType(a.mimeType),(!a.crossDomain||a.hasContent)&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(i in e)g.setRequestHeader(i,e[i])}catch(j){}g.send(a.hasContent&&a.data||null),c=function(e,i){var j,k,l,m,n;try{if(c&&(i||g.readyState===4)){c=b,h&&(g.onreadystatechange=d.noop,delete bU[h]);if(i)g.readyState!==4&&g.abort();else{j=g.status,l=g.getAllResponseHeaders(),m={},n=g.responseXML,n&&n.documentElement&&(m.xml=n),m.text=g.responseText;try{k=g.statusText}catch(o){k=""}j||!a.isLocal||a.crossDomain?j===1223&&(j=204):j=m.text?200:404}}}catch(p){i||f(-1,p)}m&&f(j,k,m,l)},a.async&&g.readyState!==4?(bU||(bU={},bW()),h=bT++,g.onreadystatechange=bU[h]=c):c()},abort:function(){c&&c(0,1)}}}});var bZ={},b$=/^(?:toggle|show|hide)$/,b_=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,ca,cb=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];d.fn.extend({show:function(a,b,c){var e,f;if(a||a===0)return this.animate(cc("show",3),a,b,c);for(var g=0,h=this.length;g=0;a--)c[a].elem===this&&(b&&c[a](!0),c.splice(a,1))}),b||this.dequeue();return this}}),d.each({slideDown:cc("show",1),slideUp:cc("hide",1),slideToggle:cc("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){d.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),d.extend({speed:function(a,b,c){var e=a&&typeof a==="object"?d.extend({},a):{complete:c||!c&&b||d.isFunction(a)&&a,duration:a,easing:c&&b||b&&!d.isFunction(b)&&b};e.duration=d.fx.off?0:typeof e.duration==="number"?e.duration:e.duration in d.fx.speeds?d.fx.speeds[e.duration]:d.fx.speeds._default,e.old=e.complete,e.complete=function(){e.queue!==!1&&d(this).dequeue(),d.isFunction(e.old)&&e.old.call(this)};return e},easing:{linear:function(a,b,c,d){return c+d*a},swing:function(a,b,c,d){return(-Math.cos(a*Math.PI)/2+.5)*d+c}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig||(b.orig={})}}),d.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(d.fx.step[this.prop]||d.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=d.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,b,c){function g(a){return e.step(a)}var e=this,f=d.fx;this.startTime=d.now(),this.start=a,this.end=b,this.unit=c||this.unit||(d.cssNumber[this.prop]?"":"px"),this.now=this.start,this.pos=this.state=0,g.elem=this.elem,g()&&d.timers.push(g)&&!ca&&(ca=setInterval(f.tick,f.interval))},show:function(){this.options.orig[this.prop]=d.style(this.elem,this.prop),this.options.show=!0,this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),d(this.elem).show()},hide:function(){this.options.orig[this.prop]=d.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b=d.now(),c=!0;if(a||b>=this.options.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),this.options.curAnim[this.prop]=!0;for(var e in this.options.curAnim)this.options.curAnim[e]!==!0&&(c=!1);if(c){if(this.options.overflow!=null&&!d.support.shrinkWrapBlocks){var f=this.elem,g=this.options;d.each(["","X","Y"],function(a,b){f.style["overflow"+b]=g.overflow[a]})}this.options.hide&&d(this.elem).hide();if(this.options.hide||this.options.show)for(var h in this.options.curAnim)d.style(this.elem,h,this.options.orig[h]);this.options.complete.call(this.elem)}return!1}var i=b-this.startTime;this.state=i/this.options.duration;var j=this.options.specialEasing&&this.options.specialEasing[this.prop],k=this.options.easing||(d.easing.swing?"swing":"linear");this.pos=d.easing[j||k](this.state,i,0,1,this.options.duration),this.now=this.start+(this.end-this.start)*this.pos,this.update();return!0}},d.extend(d.fx,{tick:function(){var a=d.timers;for(var b=0;b
          ";d.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"}),b.innerHTML=j,a.insertBefore(b,a.firstChild),e=b.firstChild,f=e.firstChild,h=e.nextSibling.firstChild.firstChild,this.doesNotAddBorder=f.offsetTop!==5,this.doesAddBorderForTableAndCells=h.offsetTop===5,f.style.position="fixed",f.style.top="20px",this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15,f.style.position=f.style.top="",e.style.overflow="hidden",e.style.position="relative",this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5,this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==i,a.removeChild(b),a=b=e=f=g=h=null,d.offset.initialize=d.noop},bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;d.offset.initialize(),d.offset.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(d.css(a,"marginTop"))||0,c+=parseFloat(d.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var e=d.css(a,"position");e==="static"&&(a.style.position="relative");var f=d(a),g=f.offset(),h=d.css(a,"top"),i=d.css(a,"left"),j=e==="absolute"&&d.inArray("auto",[h,i])>-1,k={},l={},m,n;j&&(l=f.position()),m=j?l.top:parseInt(h,10)||0,n=j?l.left:parseInt(i,10)||0,d.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):f.css(k)}},d.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),e=cf.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(d.css(a,"marginTop"))||0,c.left-=parseFloat(d.css(a,"marginLeft"))||0,e.top+=parseFloat(d.css(b[0],"borderTopWidth"))||0,e.left+=parseFloat(d.css(b[0],"borderLeftWidth"))||0;return{top:c.top-e.top,left:c.left-e.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&(!cf.test(a.nodeName)&&d.css(a,"position")==="static"))a=a.offsetParent;return a})}}),d.each(["Left","Top"],function(a,c){var e="scroll"+c;d.fn[e]=function(c){var f=this[0],g;if(!f)return null;if(c!==b)return this.each(function(){g=cg(this),g?g.scrollTo(a?d(g).scrollLeft():c,a?c:d(g).scrollTop()):this[e]=c});g=cg(f);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:d.support.boxModel&&g.document.documentElement[e]||g.document.body[e]:f[e]}}),d.each(["Height","Width"],function(a,c){var e=c.toLowerCase();d.fn["inner"+c]=function(){return this[0]?parseFloat(d.css(this[0],e,"padding")):null},d.fn["outer"+c]=function(a){return this[0]?parseFloat(d.css(this[0],e,a?"margin":"border")):null},d.fn[e]=function(a){var f=this[0];if(!f)return a==null?null:this;if(d.isFunction(a))return this.each(function(b){var c=d(this);c[e](a.call(this,b,c[e]()))});if(d.isWindow(f)){var g=f.document.documentElement["client"+c];return f.document.compatMode==="CSS1Compat"&&g||f.document.body["client"+c]||g}if(f.nodeType===9)return Math.max(f.documentElement["client"+c],f.body["scroll"+c],f.documentElement["scroll"+c],f.body["offset"+c],f.documentElement["offset"+c]);if(a===b){var h=d.css(f,e),i=parseFloat(h);return d.isNaN(i)?h:i}return this.css(e,typeof a==="string"?a:a+"px")}}),a.jQuery=a.$=d})(window); \ No newline at end of file diff --git a/stable-1.0/bureau/admin/js/jquery_ui/css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png b/stable-1.0/bureau/admin/js/jquery_ui/css/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png new file mode 100644 index 0000000000000000000000000000000000000000..5b5dab2ab7b1c50dea9cfe73dc5a269a92d2d4b4 GIT binary patch literal 180 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F!3HG1q!d*FscKIb$B>N1x91EQ4=4yQ7#`R^ z$vje}bP0l+XkK DSH>_4 literal 0 HcmV?d00001 diff --git a/stable-1.0/bureau/admin/js/jquery_ui/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png b/stable-1.0/bureau/admin/js/jquery_ui/css/smoothness/images/ui-bg_flat_75_ffffff_40x100.png new file mode 100644 index 0000000000000000000000000000000000000000..ac8b229af950c29356abf64a6c4aa894575445f0 GIT binary patch literal 178 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F!3HG1q!d*FsY*{5$B>N1x91EQ4=4yQYz+E8 zPo9&<{J;c_6SHRil>2s{Zw^OT)6@jj2u|u!(plXsM>LJD`vD!n;OXk;vd$@?2>^GI BH@yG= literal 0 HcmV?d00001 diff --git a/stable-1.0/bureau/admin/js/jquery_ui/css/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png b/stable-1.0/bureau/admin/js/jquery_ui/css/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png new file mode 100644 index 0000000000000000000000000000000000000000..ad3d6346e00f246102f72f2e026ed0491988b394 GIT binary patch literal 120 zcmeAS@N?(olHy`uVBq!ia0vp^j6gJjgAK^akKnour0hLi978O6-<~(*I$*%ybaDOn z{W;e!B}_MSUQoPXhYd^Y6RUoS1yepnPx`2Kz)7OXQG!!=-jY=F+d2OOy?#DnJ32>z UEim$g7SJdLPgg&ebxsLQ09~*s;{X5v literal 0 HcmV?d00001 diff --git a/stable-1.0/bureau/admin/js/jquery_ui/css/smoothness/images/ui-bg_glass_65_ffffff_1x400.png b/stable-1.0/bureau/admin/js/jquery_ui/css/smoothness/images/ui-bg_glass_65_ffffff_1x400.png new file mode 100644 index 0000000000000000000000000000000000000000..42ccba269b6e91bef12ad0fa18be651b5ef0ee68 GIT binary patch literal 105 zcmeAS@N?(olHy`uVBq!ia0vp^j6gJjgAK^akKnouqzpV=978O6-=0?FV^9z|eBtf= z|7WztIJ;WT>{+tN>ySr~=F{k$>;_x^_y?afmf9pRKH0)6?eSP?3s5hEr>mdKI;Vst E0O;M1& literal 0 HcmV?d00001 diff --git a/stable-1.0/bureau/admin/js/jquery_ui/css/smoothness/images/ui-bg_glass_75_dadada_1x400.png b/stable-1.0/bureau/admin/js/jquery_ui/css/smoothness/images/ui-bg_glass_75_dadada_1x400.png new file mode 100644 index 0000000000000000000000000000000000000000..5a46b47cb16631068aee9e0bd61269fc4e95e5cd GIT binary patch literal 111 zcmeAS@N?(olHy`uVBq!ia0vp^j6gJjgAK^akKnouq|7{B978O6lPf+wIa#m9#>Unb zm^4K~wN3Zq+uP{vDV26o)#~38k_!`W=^oo1w6ixmPC4R1b Tyd6G3lNdZ*{an^LB{Ts5`idse literal 0 HcmV?d00001 diff --git a/stable-1.0/bureau/admin/js/jquery_ui/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/stable-1.0/bureau/admin/js/jquery_ui/css/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png new file mode 100644 index 0000000000000000000000000000000000000000..7c9fa6c6edcfcdd3e5b77e6f547b719e6fc66e30 GIT binary patch literal 101 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 literal 0 HcmV?d00001 diff --git a/stable-1.0/bureau/admin/js/jquery_ui/css/smoothness/images/ui-icons_2e83ff_256x240.png b/stable-1.0/bureau/admin/js/jquery_ui/css/smoothness/images/ui-icons_2e83ff_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..09d1cdc856c292c4ab6dd818c7543ac0828bd616 GIT binary patch literal 4369 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 literal 0 HcmV?d00001 diff --git a/stable-1.0/bureau/admin/js/jquery_ui/css/smoothness/images/ui-icons_454545_256x240.png b/stable-1.0/bureau/admin/js/jquery_ui/css/smoothness/images/ui-icons_454545_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..59bd45b907c4fd965697774ce8c5fc6b2fd9c105 GIT binary patch literal 4369 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 oBo%DI*Kv;w;*%(i9W@f3_WCF#rGn literal 0 HcmV?d00001 diff --git a/stable-1.0/bureau/admin/js/jquery_ui/css/smoothness/images/ui-icons_cd0a0a_256x240.png b/stable-1.0/bureau/admin/js/jquery_ui/css/smoothness/images/ui-icons_cd0a0a_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..2ab019b73ec11a485fa09378f3a0e155194f6a5d GIT binary patch literal 4369 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 + + + + jQuery UI Example Page + + + + + + + +

          Welcome to jQuery UI!

          +

          This page demonstrates the widgets you downloaded using the theme you selected in the download builder. We've included and linked to minified versions of jQuery, your personalized copy of jQuery UI (js/jquery-ui-1.8.10.custom.min.js), and css/smoothness/jquery-ui-1.8.10.custom.css which imports the entire jQuery UI CSS Framework. You can choose to link a subset of the CSS Framework depending on your needs.

          +

          You've downloaded components and a theme that are compatible with jQuery 1.3+. Please make sure you are using jQuery 1.3+ in your production environment.

          + +

          YOUR COMPONENTS:

          + + +

          Accordion

          +
          +
          +

          First

          +
          Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet.
          +
          +
          +

          Second

          +
          Phasellus mattis tincidunt nibh.
          +
          +
          +

          Third

          +
          Nam dui erat, auctor a, dignissim quis.
          +
          +
          + + +

          Autocomplete

          +
          + +
          + + + +

          Button

          + +
          +
          + + + +
          +
          + + + +

          Tabs

          +
          + +
          Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
          +
          Phasellus mattis tincidunt nibh. Cras orci urna, blandit id, pretium vel, aliquet ornare, felis. Maecenas scelerisque sem non nisl. Fusce sed lorem in enim dictum bibendum.
          +
          Nam dui erat, auctor a, dignissim quis, sollicitudin eu, felis. Pellentesque nisi urna, interdum eget, sagittis et, consequat vestibulum, lacus. Mauris porttitor ullamcorper augue.
          +
          + + +

          Dialog

          +

          Open Dialog

          + + +

          Overlay and Shadow Classes (not currently used in UI widgets)

          +
          +

          Lorem ipsum dolor sit amet, Nulla nec tortor. Donec id elit quis purus consectetur consequat.

          Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. Aliquam ante. Suspendisse scelerisque dui nec velit. Duis augue augue, gravida euismod, vulputate ac, facilisis id, sem. Morbi in orci.

          Nulla purus lacus, pulvinar vel, malesuada ac, mattis nec, quam. Nam molestie scelerisque quam. Nullam feugiat cursus lacus.orem ipsum dolor sit amet, consectetur adipiscing elit. Donec libero risus, commodo vitae, pharetra mollis, posuere eu, pede. Nulla nec tortor. Donec id elit quis purus consectetur consequat.

          Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. Aliquam ante. Suspendisse scelerisque dui nec velit. Duis augue augue, gravida euismod, vulputate ac, facilisis id, sem. Morbi in orci. Nulla purus lacus, pulvinar vel, malesuada ac, mattis nec, quam. Nam molestie scelerisque quam.

          Nullam feugiat cursus lacus.orem ipsum dolor sit amet, consectetur adipiscing elit. Donec libero risus, commodo vitae, pharetra mollis, posuere eu, pede. Nulla nec tortor. Donec id elit quis purus consectetur consequat. Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. Aliquam ante.

          Suspendisse scelerisque dui nec velit. Duis augue augue, gravida euismod, vulputate ac, facilisis id, sem. Morbi in orci. Nulla purus lacus, pulvinar vel, malesuada ac, mattis nec, quam. Nam molestie scelerisque quam. Nullam feugiat cursus lacus.orem ipsum dolor sit amet, consectetur adipiscing elit. Donec libero risus, commodo vitae, pharetra mollis, posuere eu, pede. Nulla nec tortor. Donec id elit quis purus consectetur consequat. Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi.

          + + +
          +
          +
          +

          Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

          +
          +
          + +
          + + + +
          +

          Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

          +
          + + + +

          Framework Icons (content color preview)

          +
            + +
          • +
          • +
          • + +
          • +
          • +
          • +
          • +
          • +
          • +
          • +
          • +
          • + +
          • +
          • +
          • +
          • +
          • +
          • +
          • +
          • +
          • + +
          • +
          • +
          • +
          • +
          • +
          • +
          • +
          • +
          • + +
          • +
          • +
          • +
          • +
          • +
          • +
          • +
          • +
          • + +
          • +
          • +
          • +
          • +
          • +
          • +
          • +
          • +
          • + +
          • +
          • +
          • +
          • +
          • +
          • +
          • +
          • +
          • + +
          • +
          • +
          • +
          • +
          • +
          • +
          • +
          • +
          • + +
          • +
          • +
          • +
          • +
          • +
          • +
          • +
          • +
          • + +
          • +
          • +
          • +
          • +
          • +
          • +
          • +
          • +
          • + +
          • +
          • +
          • +
          • +
          • +
          • +
          • +
          • +
          • + +
          • +
          • +
          • +
          • +
          • +
          • +
          • +
          • +
          • + +
          • +
          • +
          • +
          • +
          • +
          • +
          • +
          • +
          • + +
          • +
          • +
          • +
          • +
          • +
          • +
          • +
          • +
          • +
          • + +
          • +
          • +
          • +
          • +
          • +
          • +
          • +
          • +
          • +
          • +
          • + +
          • +
          • +
          • +
          • +
          • +
          • +
          • +
          • +
          • + +
          • +
          • +
          • +
          • +
          • +
          • +
          • +
          • +
          • + +
          • +
          • +
          • +
          • +
          • +
          • +
          • +
          • +
          • + +
          • +
          • +
          • +
          • +
          • +
          • +
          • +
          • +
          • + +
          • +
          • +
          • +
          • +
          • +
          + + + +

          Slider

          +
          + + +

          Datepicker

          +
          + + +

          Progressbar

          +
          + + +

          Highlight / Error

          +
          +
          +

          + Hey! Sample ui-state-highlight style.

          +
          +
          +
          +
          +
          +

          + Alert: Sample ui-state-error style.

          +
          +
          + + + + + diff --git a/stable-1.0/bureau/admin/js/jquery_ui/js/jquery-1.4.4.min.js b/stable-1.0/bureau/admin/js/jquery_ui/js/jquery-1.4.4.min.js new file mode 100644 index 00000000..8f3ca2e2 --- /dev/null +++ b/stable-1.0/bureau/admin/js/jquery_ui/js/jquery-1.4.4.min.js @@ -0,0 +1,167 @@ +/*! + * jQuery JavaScript Library v1.4.4 + * http://jquery.com/ + * + * Copyright 2010, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2010, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Thu Nov 11 19:04:53 2010 -0500 + */ +(function(E,B){function ka(a,b,d){if(d===B&&a.nodeType===1){d=a.getAttribute("data-"+b);if(typeof d==="string"){try{d=d==="true"?true:d==="false"?false:d==="null"?null:!c.isNaN(d)?parseFloat(d):Ja.test(d)?c.parseJSON(d):d}catch(e){}c.data(a,b,d)}else d=B}return d}function U(){return false}function ca(){return true}function la(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function Ka(a){var b,d,e,f,h,l,k,o,x,r,A,C=[];f=[];h=c.data(this,this.nodeType?"events":"__events__");if(typeof h==="function")h= +h.events;if(!(a.liveFired===this||!h||!h.live||a.button&&a.type==="click")){if(a.namespace)A=RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)");a.liveFired=this;var J=h.live.slice(0);for(k=0;kd)break;a.currentTarget=f.elem;a.data=f.handleObj.data;a.handleObj=f.handleObj;A=f.handleObj.origHandler.apply(f.elem,arguments);if(A===false||a.isPropagationStopped()){d=f.level;if(A===false)b=false;if(a.isImmediatePropagationStopped())break}}return b}}function Y(a,b){return(a&&a!=="*"?a+".":"")+b.replace(La, +"`").replace(Ma,"&")}function ma(a,b,d){if(c.isFunction(b))return c.grep(a,function(f,h){return!!b.call(f,h,f)===d});else if(b.nodeType)return c.grep(a,function(f){return f===b===d});else if(typeof b==="string"){var e=c.grep(a,function(f){return f.nodeType===1});if(Na.test(b))return c.filter(b,e,!d);else b=c.filter(b,e)}return c.grep(a,function(f){return c.inArray(f,b)>=0===d})}function na(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var e=c.data(a[d++]),f=c.data(this, +e);if(e=e&&e.events){delete f.handle;f.events={};for(var h in e)for(var l in e[h])c.event.add(this,h,e[h][l],e[h][l].data)}}})}function Oa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function oa(a,b,d){var e=b==="width"?a.offsetWidth:a.offsetHeight;if(d==="border")return e;c.each(b==="width"?Pa:Qa,function(){d||(e-=parseFloat(c.css(a,"padding"+this))||0);if(d==="margin")e+=parseFloat(c.css(a, +"margin"+this))||0;else e-=parseFloat(c.css(a,"border"+this+"Width"))||0});return e}function da(a,b,d,e){if(c.isArray(b)&&b.length)c.each(b,function(f,h){d||Ra.test(a)?e(a,h):da(a+"["+(typeof h==="object"||c.isArray(h)?f:"")+"]",h,d,e)});else if(!d&&b!=null&&typeof b==="object")c.isEmptyObject(b)?e(a,""):c.each(b,function(f,h){da(a+"["+f+"]",h,d,e)});else e(a,b)}function S(a,b){var d={};c.each(pa.concat.apply([],pa.slice(0,b)),function(){d[this]=a});return d}function qa(a){if(!ea[a]){var b=c("<"+ +a+">").appendTo("body"),d=b.css("display");b.remove();if(d==="none"||d==="")d="block";ea[a]=d}return ea[a]}function fa(a){return c.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var t=E.document,c=function(){function a(){if(!b.isReady){try{t.documentElement.doScroll("left")}catch(j){setTimeout(a,1);return}b.ready()}}var b=function(j,s){return new b.fn.init(j,s)},d=E.jQuery,e=E.$,f,h=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]+)$)/,l=/\S/,k=/^\s+/,o=/\s+$/,x=/\W/,r=/\d/,A=/^<(\w+)\s*\/?>(?:<\/\1>)?$/, +C=/^[\],:{}\s]*$/,J=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,w=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,I=/(?:^|:|,)(?:\s*\[)+/g,L=/(webkit)[ \/]([\w.]+)/,g=/(opera)(?:.*version)?[ \/]([\w.]+)/,i=/(msie) ([\w.]+)/,n=/(mozilla)(?:.*? rv:([\w.]+))?/,m=navigator.userAgent,p=false,q=[],u,y=Object.prototype.toString,F=Object.prototype.hasOwnProperty,M=Array.prototype.push,N=Array.prototype.slice,O=String.prototype.trim,D=Array.prototype.indexOf,R={};b.fn=b.prototype={init:function(j, +s){var v,z,H;if(!j)return this;if(j.nodeType){this.context=this[0]=j;this.length=1;return this}if(j==="body"&&!s&&t.body){this.context=t;this[0]=t.body;this.selector="body";this.length=1;return this}if(typeof j==="string")if((v=h.exec(j))&&(v[1]||!s))if(v[1]){H=s?s.ownerDocument||s:t;if(z=A.exec(j))if(b.isPlainObject(s)){j=[t.createElement(z[1])];b.fn.attr.call(j,s,true)}else j=[H.createElement(z[1])];else{z=b.buildFragment([v[1]],[H]);j=(z.cacheable?z.fragment.cloneNode(true):z.fragment).childNodes}return b.merge(this, +j)}else{if((z=t.getElementById(v[2]))&&z.parentNode){if(z.id!==v[2])return f.find(j);this.length=1;this[0]=z}this.context=t;this.selector=j;return this}else if(!s&&!x.test(j)){this.selector=j;this.context=t;j=t.getElementsByTagName(j);return b.merge(this,j)}else return!s||s.jquery?(s||f).find(j):b(s).find(j);else if(b.isFunction(j))return f.ready(j);if(j.selector!==B){this.selector=j.selector;this.context=j.context}return b.makeArray(j,this)},selector:"",jquery:"1.4.4",length:0,size:function(){return this.length}, +toArray:function(){return N.call(this,0)},get:function(j){return j==null?this.toArray():j<0?this.slice(j)[0]:this[j]},pushStack:function(j,s,v){var z=b();b.isArray(j)?M.apply(z,j):b.merge(z,j);z.prevObject=this;z.context=this.context;if(s==="find")z.selector=this.selector+(this.selector?" ":"")+v;else if(s)z.selector=this.selector+"."+s+"("+v+")";return z},each:function(j,s){return b.each(this,j,s)},ready:function(j){b.bindReady();if(b.isReady)j.call(t,b);else q&&q.push(j);return this},eq:function(j){return j=== +-1?this.slice(j):this.slice(j,+j+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(N.apply(this,arguments),"slice",N.call(arguments).join(","))},map:function(j){return this.pushStack(b.map(this,function(s,v){return j.call(s,v,s)}))},end:function(){return this.prevObject||b(null)},push:M,sort:[].sort,splice:[].splice};b.fn.init.prototype=b.fn;b.extend=b.fn.extend=function(){var j,s,v,z,H,G=arguments[0]||{},K=1,Q=arguments.length,ga=false; +if(typeof G==="boolean"){ga=G;G=arguments[1]||{};K=2}if(typeof G!=="object"&&!b.isFunction(G))G={};if(Q===K){G=this;--K}for(;K0))if(q){var s=0,v=q;for(q=null;j=v[s++];)j.call(t,b);b.fn.trigger&&b(t).trigger("ready").unbind("ready")}}},bindReady:function(){if(!p){p=true;if(t.readyState==="complete")return setTimeout(b.ready,1);if(t.addEventListener){t.addEventListener("DOMContentLoaded",u,false);E.addEventListener("load",b.ready,false)}else if(t.attachEvent){t.attachEvent("onreadystatechange",u);E.attachEvent("onload", +b.ready);var j=false;try{j=E.frameElement==null}catch(s){}t.documentElement.doScroll&&j&&a()}}},isFunction:function(j){return b.type(j)==="function"},isArray:Array.isArray||function(j){return b.type(j)==="array"},isWindow:function(j){return j&&typeof j==="object"&&"setInterval"in j},isNaN:function(j){return j==null||!r.test(j)||isNaN(j)},type:function(j){return j==null?String(j):R[y.call(j)]||"object"},isPlainObject:function(j){if(!j||b.type(j)!=="object"||j.nodeType||b.isWindow(j))return false;if(j.constructor&& +!F.call(j,"constructor")&&!F.call(j.constructor.prototype,"isPrototypeOf"))return false;for(var s in j);return s===B||F.call(j,s)},isEmptyObject:function(j){for(var s in j)return false;return true},error:function(j){throw j;},parseJSON:function(j){if(typeof j!=="string"||!j)return null;j=b.trim(j);if(C.test(j.replace(J,"@").replace(w,"]").replace(I,"")))return E.JSON&&E.JSON.parse?E.JSON.parse(j):(new Function("return "+j))();else b.error("Invalid JSON: "+j)},noop:function(){},globalEval:function(j){if(j&& +l.test(j)){var s=t.getElementsByTagName("head")[0]||t.documentElement,v=t.createElement("script");v.type="text/javascript";if(b.support.scriptEval)v.appendChild(t.createTextNode(j));else v.text=j;s.insertBefore(v,s.firstChild);s.removeChild(v)}},nodeName:function(j,s){return j.nodeName&&j.nodeName.toUpperCase()===s.toUpperCase()},each:function(j,s,v){var z,H=0,G=j.length,K=G===B||b.isFunction(j);if(v)if(K)for(z in j){if(s.apply(j[z],v)===false)break}else for(;H
          a";var f=d.getElementsByTagName("*"),h=d.getElementsByTagName("a")[0],l=t.createElement("select"), +k=l.appendChild(t.createElement("option"));if(!(!f||!f.length||!h)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(h.getAttribute("style")),hrefNormalized:h.getAttribute("href")==="/a",opacity:/^0.55$/.test(h.style.opacity),cssFloat:!!h.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:k.selected,deleteExpando:true,optDisabled:false,checkClone:false, +scriptEval:false,noCloneEvent:true,boxModel:null,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableHiddenOffsets:true};l.disabled=true;c.support.optDisabled=!k.disabled;b.type="text/javascript";try{b.appendChild(t.createTextNode("window."+e+"=1;"))}catch(o){}a.insertBefore(b,a.firstChild);if(E[e]){c.support.scriptEval=true;delete E[e]}try{delete b.test}catch(x){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function r(){c.support.noCloneEvent= +false;d.detachEvent("onclick",r)});d.cloneNode(true).fireEvent("onclick")}d=t.createElement("div");d.innerHTML="";a=t.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var r=t.createElement("div");r.style.width=r.style.paddingLeft="1px";t.body.appendChild(r);c.boxModel=c.support.boxModel=r.offsetWidth===2;if("zoom"in r.style){r.style.display="inline";r.style.zoom= +1;c.support.inlineBlockNeedsLayout=r.offsetWidth===2;r.style.display="";r.innerHTML="
          ";c.support.shrinkWrapBlocks=r.offsetWidth!==2}r.innerHTML="
          t
          ";var A=r.getElementsByTagName("td");c.support.reliableHiddenOffsets=A[0].offsetHeight===0;A[0].style.display="";A[1].style.display="none";c.support.reliableHiddenOffsets=c.support.reliableHiddenOffsets&&A[0].offsetHeight===0;r.innerHTML="";t.body.removeChild(r).style.display= +"none"});a=function(r){var A=t.createElement("div");r="on"+r;var C=r in A;if(!C){A.setAttribute(r,"return;");C=typeof A[r]==="function"}return C};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=f=h=null}})();var ra={},Ja=/^(?:\{.*\}|\[.*\])$/;c.extend({cache:{},uuid:0,expando:"jQuery"+c.now(),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},data:function(a,b,d){if(c.acceptData(a)){a=a==E?ra:a;var e=a.nodeType,f=e?a[c.expando]:null,h= +c.cache;if(!(e&&!f&&typeof b==="string"&&d===B)){if(e)f||(a[c.expando]=f=++c.uuid);else h=a;if(typeof b==="object")if(e)h[f]=c.extend(h[f],b);else c.extend(h,b);else if(e&&!h[f])h[f]={};a=e?h[f]:h;if(d!==B)a[b]=d;return typeof b==="string"?a[b]:a}}},removeData:function(a,b){if(c.acceptData(a)){a=a==E?ra:a;var d=a.nodeType,e=d?a[c.expando]:a,f=c.cache,h=d?f[e]:e;if(b){if(h){delete h[b];d&&c.isEmptyObject(h)&&c.removeData(a)}}else if(d&&c.support.deleteExpando)delete a[c.expando];else if(a.removeAttribute)a.removeAttribute(c.expando); +else if(d)delete f[e];else for(var l in a)delete a[l]}},acceptData:function(a){if(a.nodeName){var b=c.noData[a.nodeName.toLowerCase()];if(b)return!(b===true||a.getAttribute("classid")!==b)}return true}});c.fn.extend({data:function(a,b){var d=null;if(typeof a==="undefined"){if(this.length){var e=this[0].attributes,f;d=c.data(this[0]);for(var h=0,l=e.length;h-1)return true;return false},val:function(a){if(!arguments.length){var b=this[0];if(b){if(c.nodeName(b,"option")){var d=b.attributes.value;return!d||d.specified?b.value:b.text}if(c.nodeName(b,"select")){var e=b.selectedIndex;d=[];var f=b.options;b=b.type==="select-one"; +if(e<0)return null;var h=b?e:0;for(e=b?e+1:f.length;h=0;else if(c.nodeName(this,"select")){var A=c.makeArray(r);c("option",this).each(function(){this.selected=c.inArray(c(this).val(),A)>=0});if(!A.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true}, +attr:function(a,b,d,e){if(!a||a.nodeType===3||a.nodeType===8)return B;if(e&&b in c.attrFn)return c(a)[b](d);e=a.nodeType!==1||!c.isXMLDoc(a);var f=d!==B;b=e&&c.props[b]||b;var h=Ta.test(b);if((b in a||a[b]!==B)&&e&&!h){if(f){b==="type"&&Ua.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");if(d===null)a.nodeType===1&&a.removeAttribute(b);else a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&& +b.specified?b.value:Va.test(a.nodeName)||Wa.test(a.nodeName)&&a.href?0:B;return a[b]}if(!c.support.style&&e&&b==="style"){if(f)a.style.cssText=""+d;return a.style.cssText}f&&a.setAttribute(b,""+d);if(!a.attributes[b]&&a.hasAttribute&&!a.hasAttribute(b))return B;a=!c.support.hrefNormalized&&e&&h?a.getAttribute(b,2):a.getAttribute(b);return a===null?B:a}});var X=/\.(.*)$/,ia=/^(?:textarea|input|select)$/i,La=/\./g,Ma=/ /g,Xa=/[^\w\s.|`]/g,Ya=function(a){return a.replace(Xa,"\\$&")},ua={focusin:0,focusout:0}; +c.event={add:function(a,b,d,e){if(!(a.nodeType===3||a.nodeType===8)){if(c.isWindow(a)&&a!==E&&!a.frameElement)a=E;if(d===false)d=U;else if(!d)return;var f,h;if(d.handler){f=d;d=f.handler}if(!d.guid)d.guid=c.guid++;if(h=c.data(a)){var l=a.nodeType?"events":"__events__",k=h[l],o=h.handle;if(typeof k==="function"){o=k.handle;k=k.events}else if(!k){a.nodeType||(h[l]=h=function(){});h.events=k={}}if(!o)h.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem, +arguments):B};o.elem=a;b=b.split(" ");for(var x=0,r;l=b[x++];){h=f?c.extend({},f):{handler:d,data:e};if(l.indexOf(".")>-1){r=l.split(".");l=r.shift();h.namespace=r.slice(0).sort().join(".")}else{r=[];h.namespace=""}h.type=l;if(!h.guid)h.guid=d.guid;var A=k[l],C=c.event.special[l]||{};if(!A){A=k[l]=[];if(!C.setup||C.setup.call(a,e,r,o)===false)if(a.addEventListener)a.addEventListener(l,o,false);else a.attachEvent&&a.attachEvent("on"+l,o)}if(C.add){C.add.call(a,h);if(!h.handler.guid)h.handler.guid= +d.guid}A.push(h);c.event.global[l]=true}a=null}}},global:{},remove:function(a,b,d,e){if(!(a.nodeType===3||a.nodeType===8)){if(d===false)d=U;var f,h,l=0,k,o,x,r,A,C,J=a.nodeType?"events":"__events__",w=c.data(a),I=w&&w[J];if(w&&I){if(typeof I==="function"){w=I;I=I.events}if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(f in I)c.event.remove(a,f+b)}else{for(b=b.split(" ");f=b[l++];){r=f;k=f.indexOf(".")<0;o=[];if(!k){o=f.split(".");f=o.shift();x=RegExp("(^|\\.)"+ +c.map(o.slice(0).sort(),Ya).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(A=I[f])if(d){r=c.event.special[f]||{};for(h=e||0;h=0){a.type=f=f.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[f]&&c.each(c.cache,function(){this.events&&this.events[f]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType=== +8)return B;a.result=B;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(e=d.nodeType?c.data(d,"handle"):(c.data(d,"__events__")||{}).handle)&&e.apply(d,b);e=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+f]&&d["on"+f].apply(d,b)===false){a.result=false;a.preventDefault()}}catch(h){}if(!a.isPropagationStopped()&&e)c.event.trigger(a,b,e,true);else if(!a.isDefaultPrevented()){var l;e=a.target;var k=f.replace(X,""),o=c.nodeName(e,"a")&&k=== +"click",x=c.event.special[k]||{};if((!x._default||x._default.call(d,a)===false)&&!o&&!(e&&e.nodeName&&c.noData[e.nodeName.toLowerCase()])){try{if(e[k]){if(l=e["on"+k])e["on"+k]=null;c.event.triggered=true;e[k]()}}catch(r){}if(l)e["on"+k]=l;c.event.triggered=false}}},handle:function(a){var b,d,e,f;d=[];var h=c.makeArray(arguments);a=h[0]=c.event.fix(a||E.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive;if(!b){e=a.type.split(".");a.type=e.shift();d=e.slice(0).sort();e=RegExp("(^|\\.)"+ +d.join("\\.(?:.*\\.)?")+"(\\.|$)")}a.namespace=a.namespace||d.join(".");f=c.data(this,this.nodeType?"events":"__events__");if(typeof f==="function")f=f.events;d=(f||{})[a.type];if(f&&d){d=d.slice(0);f=0;for(var l=d.length;f-1?c.map(a.options,function(e){return e.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},Z=function(a,b){var d=a.target,e,f;if(!(!ia.test(d.nodeName)||d.readOnly)){e=c.data(d,"_change_data");f=xa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data",f);if(!(e===B||f===e))if(e!=null||f){a.type="change";a.liveFired= +B;return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:Z,beforedeactivate:Z,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return Z.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return Z.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a,"_change_data",xa(a))}},setup:function(){if(this.type=== +"file")return false;for(var a in V)c.event.add(this,a+".specialChange",V[a]);return ia.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return ia.test(this.nodeName)}};V=c.event.special.change.filters;V.focus=V.beforeactivate}t.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(e){e=c.event.fix(e);e.type=b;return c.event.trigger(e,null,e.target)}c.event.special[b]={setup:function(){ua[b]++===0&&t.addEventListener(a,d,true)},teardown:function(){--ua[b]=== +0&&t.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,e,f){if(typeof d==="object"){for(var h in d)this[b](h,e,d[h],f);return this}if(c.isFunction(e)||e===false){f=e;e=B}var l=b==="one"?c.proxy(f,function(o){c(this).unbind(o,l);return f.apply(this,arguments)}):f;if(d==="unload"&&b!=="one")this.one(d,e,f);else{h=0;for(var k=this.length;h0?this.bind(b,d,e):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});E.attachEvent&&!E.addEventListener&&c(E).bind("unload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}}); +(function(){function a(g,i,n,m,p,q){p=0;for(var u=m.length;p0){F=y;break}}y=y[g]}m[p]=F}}}var d=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,e=0,f=Object.prototype.toString,h=false,l=true;[0,0].sort(function(){l=false;return 0});var k=function(g,i,n,m){n=n||[];var p=i=i||t;if(i.nodeType!==1&&i.nodeType!==9)return[];if(!g||typeof g!=="string")return n;var q,u,y,F,M,N=true,O=k.isXML(i),D=[],R=g;do{d.exec("");if(q=d.exec(R)){R=q[3];D.push(q[1]);if(q[2]){F=q[3]; +break}}}while(q);if(D.length>1&&x.exec(g))if(D.length===2&&o.relative[D[0]])u=L(D[0]+D[1],i);else for(u=o.relative[D[0]]?[i]:k(D.shift(),i);D.length;){g=D.shift();if(o.relative[g])g+=D.shift();u=L(g,u)}else{if(!m&&D.length>1&&i.nodeType===9&&!O&&o.match.ID.test(D[0])&&!o.match.ID.test(D[D.length-1])){q=k.find(D.shift(),i,O);i=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]}if(i){q=m?{expr:D.pop(),set:C(m)}:k.find(D.pop(),D.length===1&&(D[0]==="~"||D[0]==="+")&&i.parentNode?i.parentNode:i,O);u=q.expr?k.filter(q.expr, +q.set):q.set;if(D.length>0)y=C(u);else N=false;for(;D.length;){q=M=D.pop();if(o.relative[M])q=D.pop();else M="";if(q==null)q=i;o.relative[M](y,q,O)}}else y=[]}y||(y=u);y||k.error(M||g);if(f.call(y)==="[object Array]")if(N)if(i&&i.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&k.contains(i,y[g])))n.push(u[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&n.push(u[g]);else n.push.apply(n,y);else C(y,n);if(F){k(F,p,n,m);k.uniqueSort(n)}return n};k.uniqueSort=function(g){if(w){h= +l;g.sort(w);if(h)for(var i=1;i0};k.find=function(g,i,n){var m;if(!g)return[];for(var p=0,q=o.order.length;p":function(g,i){var n,m=typeof i==="string",p=0,q=g.length;if(m&&!/\W/.test(i))for(i=i.toLowerCase();p=0))n||m.push(u);else if(n)i[q]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},CHILD:function(g){if(g[1]==="nth"){var i=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=i[1]+(i[2]||1)-0;g[3]=i[3]-0}g[0]=e++;return g},ATTR:function(g,i,n, +m,p,q){i=g[1].replace(/\\/g,"");if(!q&&o.attrMap[i])g[1]=o.attrMap[i];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,i,n,m,p){if(g[1]==="not")if((d.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,i);else{g=k.filter(g[3],i,n,true^p);n||m.push.apply(m,g);return false}else if(o.match.POS.test(g[0])||o.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled=== +true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,i,n){return!!k(n[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"=== +g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},setFilters:{first:function(g,i){return i===0},last:function(g,i,n,m){return i===m.length-1},even:function(g,i){return i%2===0},odd:function(g,i){return i%2===1},lt:function(g,i,n){return in[3]-0},nth:function(g,i,n){return n[3]- +0===i},eq:function(g,i,n){return n[3]-0===i}},filter:{PSEUDO:function(g,i,n,m){var p=i[1],q=o.filters[p];if(q)return q(g,n,i,m);else if(p==="contains")return(g.textContent||g.innerText||k.getText([g])||"").indexOf(i[3])>=0;else if(p==="not"){i=i[3];n=0;for(m=i.length;n=0}},ID:function(g,i){return g.nodeType===1&&g.getAttribute("id")===i},TAG:function(g,i){return i==="*"&&g.nodeType===1||g.nodeName.toLowerCase()=== +i},CLASS:function(g,i){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(i)>-1},ATTR:function(g,i){var n=i[1];n=o.attrHandle[n]?o.attrHandle[n](g):g[n]!=null?g[n]:g.getAttribute(n);var m=n+"",p=i[2],q=i[4];return n==null?p==="!=":p==="="?m===q:p==="*="?m.indexOf(q)>=0:p==="~="?(" "+m+" ").indexOf(q)>=0:!q?m&&n!==false:p==="!="?m!==q:p==="^="?m.indexOf(q)===0:p==="$="?m.substr(m.length-q.length)===q:p==="|="?m===q||m.substr(0,q.length+1)===q+"-":false},POS:function(g,i,n,m){var p=o.setFilters[i[2]]; +if(p)return p(g,n,i,m)}}},x=o.match.POS,r=function(g,i){return"\\"+(i-0+1)},A;for(A in o.match){o.match[A]=RegExp(o.match[A].source+/(?![^\[]*\])(?![^\(]*\))/.source);o.leftMatch[A]=RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[A].source.replace(/\\(\d+)/g,r))}var C=function(g,i){g=Array.prototype.slice.call(g,0);if(i){i.push.apply(i,g);return i}return g};try{Array.prototype.slice.call(t.documentElement.childNodes,0)}catch(J){C=function(g,i){var n=0,m=i||[];if(f.call(g)==="[object Array]")Array.prototype.push.apply(m, +g);else if(typeof g.length==="number")for(var p=g.length;n";n.insertBefore(g,n.firstChild);if(t.getElementById(i)){o.find.ID=function(m,p,q){if(typeof p.getElementById!=="undefined"&&!q)return(p=p.getElementById(m[1]))?p.id===m[1]||typeof p.getAttributeNode!=="undefined"&&p.getAttributeNode("id").nodeValue===m[1]?[p]:B:[]};o.filter.ID=function(m,p){var q=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&q&&q.nodeValue===p}}n.removeChild(g); +n=g=null})();(function(){var g=t.createElement("div");g.appendChild(t.createComment(""));if(g.getElementsByTagName("*").length>0)o.find.TAG=function(i,n){var m=n.getElementsByTagName(i[1]);if(i[1]==="*"){for(var p=[],q=0;m[q];q++)m[q].nodeType===1&&p.push(m[q]);m=p}return m};g.innerHTML="";if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")o.attrHandle.href=function(i){return i.getAttribute("href",2)};g=null})();t.querySelectorAll&& +function(){var g=k,i=t.createElement("div");i.innerHTML="

          ";if(!(i.querySelectorAll&&i.querySelectorAll(".TEST").length===0)){k=function(m,p,q,u){p=p||t;m=m.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!u&&!k.isXML(p))if(p.nodeType===9)try{return C(p.querySelectorAll(m),q)}catch(y){}else if(p.nodeType===1&&p.nodeName.toLowerCase()!=="object"){var F=p.getAttribute("id"),M=F||"__sizzle__";F||p.setAttribute("id",M);try{return C(p.querySelectorAll("#"+M+" "+m),q)}catch(N){}finally{F|| +p.removeAttribute("id")}}return g(m,p,q,u)};for(var n in g)k[n]=g[n];i=null}}();(function(){var g=t.documentElement,i=g.matchesSelector||g.mozMatchesSelector||g.webkitMatchesSelector||g.msMatchesSelector,n=false;try{i.call(t.documentElement,"[test!='']:sizzle")}catch(m){n=true}if(i)k.matchesSelector=function(p,q){q=q.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(p))try{if(n||!o.match.PSEUDO.test(q)&&!/!=/.test(q))return i.call(p,q)}catch(u){}return k(q,null,null,[p]).length>0}})();(function(){var g= +t.createElement("div");g.innerHTML="
          ";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){o.order.splice(1,0,"CLASS");o.find.CLASS=function(i,n,m){if(typeof n.getElementsByClassName!=="undefined"&&!m)return n.getElementsByClassName(i[1])};g=null}}})();k.contains=t.documentElement.contains?function(g,i){return g!==i&&(g.contains?g.contains(i):true)}:t.documentElement.compareDocumentPosition? +function(g,i){return!!(g.compareDocumentPosition(i)&16)}:function(){return false};k.isXML=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false};var L=function(g,i){for(var n,m=[],p="",q=i.nodeType?[i]:i;n=o.match.PSEUDO.exec(g);){p+=n[0];g=g.replace(o.match.PSEUDO,"")}g=o.relative[g]?g+"*":g;n=0;for(var u=q.length;n0)for(var h=d;h0},closest:function(a,b){var d=[],e,f,h=this[0];if(c.isArray(a)){var l,k={},o=1;if(h&&a.length){e=0;for(f=a.length;e-1:c(h).is(e))d.push({selector:l,elem:h,level:o})}h= +h.parentNode;o++}}return d}l=cb.test(a)?c(a,b||this.context):null;e=0;for(f=this.length;e-1:c.find.matchesSelector(h,a)){d.push(h);break}else{h=h.parentNode;if(!h||!h.ownerDocument||h===b)break}d=d.length>1?c.unique(d):d;return this.pushStack(d,"closest",a)},index:function(a){if(!a||typeof a==="string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var d=typeof a==="string"?c(a,b||this.context): +c.makeArray(a),e=c.merge(this.get(),d);return this.pushStack(!d[0]||!d[0].parentNode||d[0].parentNode.nodeType===11||!e[0]||!e[0].parentNode||e[0].parentNode.nodeType===11?e:c.unique(e))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a, +2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a, +b){c.fn[a]=function(d,e){var f=c.map(this,b,d);Za.test(a)||(e=d);if(e&&typeof e==="string")f=c.filter(e,f);f=this.length>1?c.unique(f):f;if((this.length>1||ab.test(e))&&$a.test(a))f=f.reverse();return this.pushStack(f,a,bb.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return b.length===1?c.find.matchesSelector(b[0],a)?[b[0]]:[]:c.find.matches(a,b)},dir:function(a,b,d){var e=[];for(a=a[b];a&&a.nodeType!==9&&(d===B||a.nodeType!==1||!c(a).is(d));){a.nodeType===1&& +e.push(a);a=a[b]}return e},nth:function(a,b,d){b=b||1;for(var e=0;a;a=a[d])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var za=/ jQuery\d+="(?:\d+|null)"/g,$=/^\s+/,Aa=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Ba=/<([\w:]+)/,db=/\s]+\/)>/g,P={option:[1, +""],legend:[1,"
          ","
          "],thead:[1,"","
          "],tr:[2,"","
          "],td:[3,"","
          "],col:[2,"","
          "],area:[1,"",""],_default:[0,"",""]};P.optgroup=P.option;P.tbody=P.tfoot=P.colgroup=P.caption=P.thead;P.th=P.td;if(!c.support.htmlSerialize)P._default=[1,"div
          ","
          "];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d= +c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==B)return this.empty().append((this[0]&&this[0].ownerDocument||t).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this}, +wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})}, +prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b, +this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,e;(e=this[d])!=null;d++)if(!a||c.filter(a,[e]).length){if(!b&&e.nodeType===1){c.cleanData(e.getElementsByTagName("*"));c.cleanData([e])}e.parentNode&&e.parentNode.removeChild(e)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild); +return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,e=this.ownerDocument;if(!d){d=e.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(za,"").replace(fb,'="$1">').replace($,"")],e)[0]}else return this.cloneNode(true)});if(a===true){na(this,b);na(this.find("*"),b.find("*"))}return b},html:function(a){if(a===B)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(za,""):null; +else if(typeof a==="string"&&!Ca.test(a)&&(c.support.leadingWhitespace||!$.test(a))&&!P[(Ba.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Aa,"<$1>");try{for(var b=0,d=this.length;b0||e.cacheable||this.length>1?h.cloneNode(true):h)}k.length&&c.each(k,Oa)}return this}});c.buildFragment=function(a,b,d){var e,f,h;b=b&&b[0]?b[0].ownerDocument||b[0]:t;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===t&&!Ca.test(a[0])&&(c.support.checkClone||!Da.test(a[0]))){f=true;if(h=c.fragments[a[0]])if(h!==1)e=h}if(!e){e=b.createDocumentFragment();c.clean(a,b,e,d)}if(f)c.fragments[a[0]]=h?e:1;return{fragment:e,cacheable:f}};c.fragments={};c.each({appendTo:"append", +prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var e=[];d=c(d);var f=this.length===1&&this[0].parentNode;if(f&&f.nodeType===11&&f.childNodes.length===1&&d.length===1){d[b](this[0]);return this}else{f=0;for(var h=d.length;f0?this.clone(true):this).get();c(d[f])[b](l);e=e.concat(l)}return this.pushStack(e,a,d.selector)}}});c.extend({clean:function(a,b,d,e){b=b||t;if(typeof b.createElement==="undefined")b=b.ownerDocument|| +b[0]&&b[0].ownerDocument||t;for(var f=[],h=0,l;(l=a[h])!=null;h++){if(typeof l==="number")l+="";if(l){if(typeof l==="string"&&!eb.test(l))l=b.createTextNode(l);else if(typeof l==="string"){l=l.replace(Aa,"<$1>");var k=(Ba.exec(l)||["",""])[1].toLowerCase(),o=P[k]||P._default,x=o[0],r=b.createElement("div");for(r.innerHTML=o[1]+l+o[2];x--;)r=r.lastChild;if(!c.support.tbody){x=db.test(l);k=k==="table"&&!x?r.firstChild&&r.firstChild.childNodes:o[1]===""&&!x?r.childNodes:[];for(o=k.length- +1;o>=0;--o)c.nodeName(k[o],"tbody")&&!k[o].childNodes.length&&k[o].parentNode.removeChild(k[o])}!c.support.leadingWhitespace&&$.test(l)&&r.insertBefore(b.createTextNode($.exec(l)[0]),r.firstChild);l=r.childNodes}if(l.nodeType)f.push(l);else f=c.merge(f,l)}}if(d)for(h=0;f[h];h++)if(e&&c.nodeName(f[h],"script")&&(!f[h].type||f[h].type.toLowerCase()==="text/javascript"))e.push(f[h].parentNode?f[h].parentNode.removeChild(f[h]):f[h]);else{f[h].nodeType===1&&f.splice.apply(f,[h+1,0].concat(c.makeArray(f[h].getElementsByTagName("script")))); +d.appendChild(f[h])}return f},cleanData:function(a){for(var b,d,e=c.cache,f=c.event.special,h=c.support.deleteExpando,l=0,k;(k=a[l])!=null;l++)if(!(k.nodeName&&c.noData[k.nodeName.toLowerCase()]))if(d=k[c.expando]){if((b=e[d])&&b.events)for(var o in b.events)f[o]?c.event.remove(k,o):c.removeEvent(k,o,b.handle);if(h)delete k[c.expando];else k.removeAttribute&&k.removeAttribute(c.expando);delete e[d]}}});var Ea=/alpha\([^)]*\)/i,gb=/opacity=([^)]*)/,hb=/-([a-z])/ig,ib=/([A-Z])/g,Fa=/^-?\d+(?:px)?$/i, +jb=/^-?\d/,kb={position:"absolute",visibility:"hidden",display:"block"},Pa=["Left","Right"],Qa=["Top","Bottom"],W,Ga,aa,lb=function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){if(arguments.length===2&&b===B)return this;return c.access(this,a,b,true,function(d,e,f){return f!==B?c.style(d,e,f):c.css(d,e)})};c.extend({cssHooks:{opacity:{get:function(a,b){if(b){var d=W(a,"opacity","opacity");return d===""?"1":d}else return a.style.opacity}}},cssNumber:{zIndex:true,fontWeight:true,opacity:true, +zoom:true,lineHeight:true},cssProps:{"float":c.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,d,e){if(!(!a||a.nodeType===3||a.nodeType===8||!a.style)){var f,h=c.camelCase(b),l=a.style,k=c.cssHooks[h];b=c.cssProps[h]||h;if(d!==B){if(!(typeof d==="number"&&isNaN(d)||d==null)){if(typeof d==="number"&&!c.cssNumber[h])d+="px";if(!k||!("set"in k)||(d=k.set(a,d))!==B)try{l[b]=d}catch(o){}}}else{if(k&&"get"in k&&(f=k.get(a,false,e))!==B)return f;return l[b]}}},css:function(a,b,d){var e,f=c.camelCase(b), +h=c.cssHooks[f];b=c.cssProps[f]||f;if(h&&"get"in h&&(e=h.get(a,true,d))!==B)return e;else if(W)return W(a,b,f)},swap:function(a,b,d){var e={},f;for(f in b){e[f]=a.style[f];a.style[f]=b[f]}d.call(a);for(f in b)a.style[f]=e[f]},camelCase:function(a){return a.replace(hb,lb)}});c.curCSS=c.css;c.each(["height","width"],function(a,b){c.cssHooks[b]={get:function(d,e,f){var h;if(e){if(d.offsetWidth!==0)h=oa(d,b,f);else c.swap(d,kb,function(){h=oa(d,b,f)});if(h<=0){h=W(d,b,b);if(h==="0px"&&aa)h=aa(d,b,b); +if(h!=null)return h===""||h==="auto"?"0px":h}if(h<0||h==null){h=d.style[b];return h===""||h==="auto"?"0px":h}return typeof h==="string"?h:h+"px"}},set:function(d,e){if(Fa.test(e)){e=parseFloat(e);if(e>=0)return e+"px"}else return e}}});if(!c.support.opacity)c.cssHooks.opacity={get:function(a,b){return gb.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var d=a.style;d.zoom=1;var e=c.isNaN(b)?"":"alpha(opacity="+b*100+")",f= +d.filter||"";d.filter=Ea.test(f)?f.replace(Ea,e):d.filter+" "+e}};if(t.defaultView&&t.defaultView.getComputedStyle)Ga=function(a,b,d){var e;d=d.replace(ib,"-$1").toLowerCase();if(!(b=a.ownerDocument.defaultView))return B;if(b=b.getComputedStyle(a,null)){e=b.getPropertyValue(d);if(e===""&&!c.contains(a.ownerDocument.documentElement,a))e=c.style(a,d)}return e};if(t.documentElement.currentStyle)aa=function(a,b){var d,e,f=a.currentStyle&&a.currentStyle[b],h=a.style;if(!Fa.test(f)&&jb.test(f)){d=h.left; +e=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;h.left=b==="fontSize"?"1em":f||0;f=h.pixelLeft+"px";h.left=d;a.runtimeStyle.left=e}return f===""?"auto":f};W=Ga||aa;if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b=a.offsetHeight;return a.offsetWidth===0&&b===0||!c.support.reliableHiddenOffsets&&(a.style.display||c.css(a,"display"))==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var mb=c.now(),nb=/)<[^<]*)*<\/script>/gi, +ob=/^(?:select|textarea)/i,pb=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,qb=/^(?:GET|HEAD)$/,Ra=/\[\]$/,T=/\=\?(&|$)/,ja=/\?/,rb=/([?&])_=[^&]*/,sb=/^(\w+:)?\/\/([^\/?#]+)/,tb=/%20/g,ub=/#.*$/,Ha=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!=="string"&&Ha)return Ha.apply(this,arguments);else if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var f=a.slice(e,a.length);a=a.slice(0,e)}e="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b=== +"object"){b=c.param(b,c.ajaxSettings.traditional);e="POST"}var h=this;c.ajax({url:a,type:e,dataType:"html",data:b,complete:function(l,k){if(k==="success"||k==="notmodified")h.html(f?c("
          ").append(l.responseText.replace(nb,"")).find(f):l.responseText);d&&h.each(d,[l.responseText,k,l])}});return this},serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&& +!this.disabled&&(this.checked||ob.test(this.nodeName)||pb.test(this.type))}).map(function(a,b){var d=c(this).val();return d==null?null:c.isArray(d)?c.map(d,function(e){return{name:b.name,value:e}}):{name:b.name,value:d}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,e){if(c.isFunction(b)){e=e||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:e})}, +getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,e){if(c.isFunction(b)){e=e||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:e})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return new E.XMLHttpRequest},accepts:{xml:"application/xml, text/xml",html:"text/html", +script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},ajax:function(a){var b=c.extend(true,{},c.ajaxSettings,a),d,e,f,h=b.type.toUpperCase(),l=qb.test(h);b.url=b.url.replace(ub,"");b.context=a&&a.context!=null?a.context:b;if(b.data&&b.processData&&typeof b.data!=="string")b.data=c.param(b.data,b.traditional);if(b.dataType==="jsonp"){if(h==="GET")T.test(b.url)||(b.url+=(ja.test(b.url)?"&":"?")+(b.jsonp||"callback")+"=?");else if(!b.data|| +!T.test(b.data))b.data=(b.data?b.data+"&":"")+(b.jsonp||"callback")+"=?";b.dataType="json"}if(b.dataType==="json"&&(b.data&&T.test(b.data)||T.test(b.url))){d=b.jsonpCallback||"jsonp"+mb++;if(b.data)b.data=(b.data+"").replace(T,"="+d+"$1");b.url=b.url.replace(T,"="+d+"$1");b.dataType="script";var k=E[d];E[d]=function(m){if(c.isFunction(k))k(m);else{E[d]=B;try{delete E[d]}catch(p){}}f=m;c.handleSuccess(b,w,e,f);c.handleComplete(b,w,e,f);r&&r.removeChild(A)}}if(b.dataType==="script"&&b.cache===null)b.cache= +false;if(b.cache===false&&l){var o=c.now(),x=b.url.replace(rb,"$1_="+o);b.url=x+(x===b.url?(ja.test(b.url)?"&":"?")+"_="+o:"")}if(b.data&&l)b.url+=(ja.test(b.url)?"&":"?")+b.data;b.global&&c.active++===0&&c.event.trigger("ajaxStart");o=(o=sb.exec(b.url))&&(o[1]&&o[1].toLowerCase()!==location.protocol||o[2].toLowerCase()!==location.host);if(b.dataType==="script"&&h==="GET"&&o){var r=t.getElementsByTagName("head")[0]||t.documentElement,A=t.createElement("script");if(b.scriptCharset)A.charset=b.scriptCharset; +A.src=b.url;if(!d){var C=false;A.onload=A.onreadystatechange=function(){if(!C&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){C=true;c.handleSuccess(b,w,e,f);c.handleComplete(b,w,e,f);A.onload=A.onreadystatechange=null;r&&A.parentNode&&r.removeChild(A)}}}r.insertBefore(A,r.firstChild);return B}var J=false,w=b.xhr();if(w){b.username?w.open(h,b.url,b.async,b.username,b.password):w.open(h,b.url,b.async);try{if(b.data!=null&&!l||a&&a.contentType)w.setRequestHeader("Content-Type", +b.contentType);if(b.ifModified){c.lastModified[b.url]&&w.setRequestHeader("If-Modified-Since",c.lastModified[b.url]);c.etag[b.url]&&w.setRequestHeader("If-None-Match",c.etag[b.url])}o||w.setRequestHeader("X-Requested-With","XMLHttpRequest");w.setRequestHeader("Accept",b.dataType&&b.accepts[b.dataType]?b.accepts[b.dataType]+", */*; q=0.01":b.accepts._default)}catch(I){}if(b.beforeSend&&b.beforeSend.call(b.context,w,b)===false){b.global&&c.active--===1&&c.event.trigger("ajaxStop");w.abort();return false}b.global&& +c.triggerGlobal(b,"ajaxSend",[w,b]);var L=w.onreadystatechange=function(m){if(!w||w.readyState===0||m==="abort"){J||c.handleComplete(b,w,e,f);J=true;if(w)w.onreadystatechange=c.noop}else if(!J&&w&&(w.readyState===4||m==="timeout")){J=true;w.onreadystatechange=c.noop;e=m==="timeout"?"timeout":!c.httpSuccess(w)?"error":b.ifModified&&c.httpNotModified(w,b.url)?"notmodified":"success";var p;if(e==="success")try{f=c.httpData(w,b.dataType,b)}catch(q){e="parsererror";p=q}if(e==="success"||e==="notmodified")d|| +c.handleSuccess(b,w,e,f);else c.handleError(b,w,e,p);d||c.handleComplete(b,w,e,f);m==="timeout"&&w.abort();if(b.async)w=null}};try{var g=w.abort;w.abort=function(){w&&Function.prototype.call.call(g,w);L("abort")}}catch(i){}b.async&&b.timeout>0&&setTimeout(function(){w&&!J&&L("timeout")},b.timeout);try{w.send(l||b.data==null?null:b.data)}catch(n){c.handleError(b,w,null,n);c.handleComplete(b,w,e,f)}b.async||L();return w}},param:function(a,b){var d=[],e=function(h,l){l=c.isFunction(l)?l():l;d[d.length]= +encodeURIComponent(h)+"="+encodeURIComponent(l)};if(b===B)b=c.ajaxSettings.traditional;if(c.isArray(a)||a.jquery)c.each(a,function(){e(this.name,this.value)});else for(var f in a)da(f,a[f],b,e);return d.join("&").replace(tb,"+")}});c.extend({active:0,lastModified:{},etag:{},handleError:function(a,b,d,e){a.error&&a.error.call(a.context,b,d,e);a.global&&c.triggerGlobal(a,"ajaxError",[b,a,e])},handleSuccess:function(a,b,d,e){a.success&&a.success.call(a.context,e,d,b);a.global&&c.triggerGlobal(a,"ajaxSuccess", +[b,a])},handleComplete:function(a,b,d){a.complete&&a.complete.call(a.context,b,d);a.global&&c.triggerGlobal(a,"ajaxComplete",[b,a]);a.global&&c.active--===1&&c.event.trigger("ajaxStop")},triggerGlobal:function(a,b,d){(a.context&&a.context.url==null?c(a.context):c.event).trigger(b,d)},httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status===1223}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"), +e=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(e)c.etag[b]=e;return a.status===304},httpData:function(a,b,d){var e=a.getResponseHeader("content-type")||"",f=b==="xml"||!b&&e.indexOf("xml")>=0;a=f?a.responseXML:a.responseText;f&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b==="json"||!b&&e.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&e.indexOf("javascript")>=0)c.globalEval(a);return a}}); +if(E.ActiveXObject)c.ajaxSettings.xhr=function(){if(E.location.protocol!=="file:")try{return new E.XMLHttpRequest}catch(a){}try{return new E.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}};c.support.ajax=!!c.ajaxSettings.xhr();var ea={},vb=/^(?:toggle|show|hide)$/,wb=/^([+\-]=)?([\d+.\-]+)(.*)$/,ba,pa=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b,d){if(a||a===0)return this.animate(S("show", +3),a,b,d);else{d=0;for(var e=this.length;d=0;e--)if(d[e].elem===this){b&&d[e](true);d.splice(e,1)}});b||this.dequeue();return this}});c.each({slideDown:S("show",1),slideUp:S("hide",1),slideToggle:S("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){c.fn[a]=function(d,e,f){return this.animate(b, +d,e,f)}});c.extend({speed:function(a,b,d){var e=a&&typeof a==="object"?c.extend({},a):{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};e.duration=c.fx.off?0:typeof e.duration==="number"?e.duration:e.duration in c.fx.speeds?c.fx.speeds[e.duration]:c.fx.speeds._default;e.old=e.complete;e.complete=function(){e.queue!==false&&c(this).dequeue();c.isFunction(e.old)&&e.old.call(this)};return e},easing:{linear:function(a,b,d,e){return d+e*a},swing:function(a,b,d,e){return(-Math.cos(a* +Math.PI)/2+0.5)*e+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]||c.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a=parseFloat(c.css(this.elem,this.prop));return a&&a>-1E4?a:0},custom:function(a,b,d){function e(l){return f.step(l)} +var f=this,h=c.fx;this.startTime=c.now();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start;this.pos=this.state=0;e.elem=this.elem;if(e()&&c.timers.push(e)&&!ba)ba=setInterval(h.tick,h.interval)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true; +this.custom(this.cur(),0)},step:function(a){var b=c.now(),d=true;if(a||b>=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var e in this.options.curAnim)if(this.options.curAnim[e]!==true)d=false;if(d){if(this.options.overflow!=null&&!c.support.shrinkWrapBlocks){var f=this.elem,h=this.options;c.each(["","X","Y"],function(k,o){f.style["overflow"+o]=h.overflow[k]})}this.options.hide&&c(this.elem).hide();if(this.options.hide|| +this.options.show)for(var l in this.options.curAnim)c.style(this.elem,l,this.options.orig[l]);this.options.complete.call(this.elem)}return false}else{a=b-this.startTime;this.state=a/this.options.duration;b=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||b](this.state,a,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a= +c.timers,b=0;b-1;e={};var x={};if(o)x=f.position();l=o?x.top:parseInt(l,10)||0;k=o?x.left:parseInt(k,10)||0;if(c.isFunction(b))b=b.call(a,d,h);if(b.top!=null)e.top=b.top-h.top+l;if(b.left!=null)e.left=b.left-h.left+k;"using"in b?b.using.call(a, +e):f.css(e)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),e=Ia.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.css(a,"marginTop"))||0;d.left-=parseFloat(c.css(a,"marginLeft"))||0;e.top+=parseFloat(c.css(b[0],"borderTopWidth"))||0;e.left+=parseFloat(c.css(b[0],"borderLeftWidth"))||0;return{top:d.top-e.top,left:d.left-e.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||t.body;a&&!Ia.test(a.nodeName)&& +c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(e){var f=this[0],h;if(!f)return null;if(e!==B)return this.each(function(){if(h=fa(this))h.scrollTo(!a?e:c(h).scrollLeft(),a?e:c(h).scrollTop());else this[d]=e});else return(h=fa(f))?"pageXOffset"in h?h[a?"pageYOffset":"pageXOffset"]:c.support.boxModel&&h.document.documentElement[d]||h.document.body[d]:f[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase(); +c.fn["inner"+b]=function(){return this[0]?parseFloat(c.css(this[0],d,"padding")):null};c.fn["outer"+b]=function(e){return this[0]?parseFloat(c.css(this[0],d,e?"margin":"border")):null};c.fn[d]=function(e){var f=this[0];if(!f)return e==null?null:this;if(c.isFunction(e))return this.each(function(l){var k=c(this);k[d](e.call(this,l,k[d]()))});if(c.isWindow(f))return f.document.compatMode==="CSS1Compat"&&f.document.documentElement["client"+b]||f.document.body["client"+b];else if(f.nodeType===9)return Math.max(f.documentElement["client"+ +b],f.body["scroll"+b],f.documentElement["scroll"+b],f.body["offset"+b],f.documentElement["offset"+b]);else if(e===B){f=c.css(f,d);var h=parseFloat(f);return c.isNaN(h)?f:h}else return this.css(d,typeof e==="string"?e:e+"px")}})})(window); diff --git a/stable-1.0/bureau/admin/js/jquery_ui/js/jquery-ui-1.8.10.custom.min.js b/stable-1.0/bureau/admin/js/jquery_ui/js/jquery-ui-1.8.10.custom.min.js new file mode 100644 index 00000000..7d4ff1ce --- /dev/null +++ b/stable-1.0/bureau/admin/js/jquery_ui/js/jquery-ui-1.8.10.custom.min.js @@ -0,0 +1,782 @@ +/*! + * jQuery UI 1.8.10 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI + */ +(function(c,j){function k(a){return!c(a).parents().andSelf().filter(function(){return c.curCSS(this,"visibility")==="hidden"||c.expr.filters.hidden(this)}).length}c.ui=c.ui||{};if(!c.ui.version){c.extend(c.ui,{version:"1.8.10",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106, +NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});c.fn.extend({_focus:c.fn.focus,focus:function(a,b){return typeof a==="number"?this.each(function(){var d=this;setTimeout(function(){c(d).focus();b&&b.call(d)},a)}):this._focus.apply(this,arguments)},scrollParent:function(){var a;a=c.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?this.parents().filter(function(){return/(relative|absolute|fixed)/.test(c.curCSS(this, +"position",1))&&/(auto|scroll)/.test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0):this.parents().filter(function(){return/(auto|scroll)/.test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0);return/fixed/.test(this.css("position"))||!a.length?c(document):a},zIndex:function(a){if(a!==j)return this.css("zIndex",a);if(this.length){a=c(this[0]);for(var b;a.length&&a[0]!==document;){b=a.css("position"); +if(b==="absolute"||b==="relative"||b==="fixed"){b=parseInt(a.css("zIndex"),10);if(!isNaN(b)&&b!==0)return b}a=a.parent()}}return 0},disableSelection:function(){return this.bind((c.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(a){a.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});c.each(["Width","Height"],function(a,b){function d(f,g,l,m){c.each(e,function(){g-=parseFloat(c.curCSS(f,"padding"+this,true))||0;if(l)g-=parseFloat(c.curCSS(f, +"border"+this+"Width",true))||0;if(m)g-=parseFloat(c.curCSS(f,"margin"+this,true))||0});return g}var e=b==="Width"?["Left","Right"]:["Top","Bottom"],h=b.toLowerCase(),i={innerWidth:c.fn.innerWidth,innerHeight:c.fn.innerHeight,outerWidth:c.fn.outerWidth,outerHeight:c.fn.outerHeight};c.fn["inner"+b]=function(f){if(f===j)return i["inner"+b].call(this);return this.each(function(){c(this).css(h,d(this,f)+"px")})};c.fn["outer"+b]=function(f,g){if(typeof f!=="number")return i["outer"+b].call(this,f);return this.each(function(){c(this).css(h, +d(this,f,true,g)+"px")})}});c.extend(c.expr[":"],{data:function(a,b,d){return!!c.data(a,d[3])},focusable:function(a){var b=a.nodeName.toLowerCase(),d=c.attr(a,"tabindex");if("area"===b){b=a.parentNode;d=b.name;if(!a.href||!d||b.nodeName.toLowerCase()!=="map")return false;a=c("img[usemap=#"+d+"]")[0];return!!a&&k(a)}return(/input|select|textarea|button|object/.test(b)?!a.disabled:"a"==b?a.href||!isNaN(d):!isNaN(d))&&k(a)},tabbable:function(a){var b=c.attr(a,"tabindex");return(isNaN(b)||b>=0)&&c(a).is(":focusable")}}); +c(function(){var a=document.body,b=a.appendChild(b=document.createElement("div"));c.extend(b.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});c.support.minHeight=b.offsetHeight===100;c.support.selectstart="onselectstart"in b;a.removeChild(b).style.display="none"});c.extend(c.ui,{plugin:{add:function(a,b,d){a=c.ui[a].prototype;for(var e in d){a.plugins[e]=a.plugins[e]||[];a.plugins[e].push([b,d[e]])}},call:function(a,b,d){if((b=a.plugins[b])&&a.element[0].parentNode)for(var e=0;e0)return true;a[b]=1;d=a[b]>0;a[b]=0;return d},isOverAxis:function(a,b,d){return a>b&&a=9)&&!a.button)return this._mouseUp(a);if(this._mouseStarted){this._mouseDrag(a); +return a.preventDefault()}if(this._mouseDistanceMet(a)&&this._mouseDelayMet(a))(this._mouseStarted=this._mouseStart(this._mouseDownEvent,a)!==false)?this._mouseDrag(a):this._mouseUp(a);return!this._mouseStarted},_mouseUp:function(a){c(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;a.target==this._mouseDownEvent.target&&c.data(a.target,this.widgetName+".preventClickEvent", +true);this._mouseStop(a)}return false},_mouseDistanceMet:function(a){return Math.max(Math.abs(this._mouseDownEvent.pageX-a.pageX),Math.abs(this._mouseDownEvent.pageY-a.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return true}})})(jQuery); +;/* + * jQuery UI Position 1.8.10 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Position + */ +(function(c){c.ui=c.ui||{};var n=/left|center|right/,o=/top|center|bottom/,t=c.fn.position,u=c.fn.offset;c.fn.position=function(b){if(!b||!b.of)return t.apply(this,arguments);b=c.extend({},b);var a=c(b.of),d=a[0],g=(b.collision||"flip").split(" "),e=b.offset?b.offset.split(" "):[0,0],h,k,j;if(d.nodeType===9){h=a.width();k=a.height();j={top:0,left:0}}else if(d.setTimeout){h=a.width();k=a.height();j={top:a.scrollTop(),left:a.scrollLeft()}}else if(d.preventDefault){b.at="left top";h=k=0;j={top:b.of.pageY, +left:b.of.pageX}}else{h=a.outerWidth();k=a.outerHeight();j=a.offset()}c.each(["my","at"],function(){var f=(b[this]||"").split(" ");if(f.length===1)f=n.test(f[0])?f.concat(["center"]):o.test(f[0])?["center"].concat(f):["center","center"];f[0]=n.test(f[0])?f[0]:"center";f[1]=o.test(f[1])?f[1]:"center";b[this]=f});if(g.length===1)g[1]=g[0];e[0]=parseInt(e[0],10)||0;if(e.length===1)e[1]=e[0];e[1]=parseInt(e[1],10)||0;if(b.at[0]==="right")j.left+=h;else if(b.at[0]==="center")j.left+=h/2;if(b.at[1]==="bottom")j.top+= +k;else if(b.at[1]==="center")j.top+=k/2;j.left+=e[0];j.top+=e[1];return this.each(function(){var f=c(this),l=f.outerWidth(),m=f.outerHeight(),p=parseInt(c.curCSS(this,"marginLeft",true))||0,q=parseInt(c.curCSS(this,"marginTop",true))||0,v=l+p+(parseInt(c.curCSS(this,"marginRight",true))||0),w=m+q+(parseInt(c.curCSS(this,"marginBottom",true))||0),i=c.extend({},j),r;if(b.my[0]==="right")i.left-=l;else if(b.my[0]==="center")i.left-=l/2;if(b.my[1]==="bottom")i.top-=m;else if(b.my[1]==="center")i.top-= +m/2;i.left=Math.round(i.left);i.top=Math.round(i.top);r={left:i.left-p,top:i.top-q};c.each(["left","top"],function(s,x){c.ui.position[g[s]]&&c.ui.position[g[s]][x](i,{targetWidth:h,targetHeight:k,elemWidth:l,elemHeight:m,collisionPosition:r,collisionWidth:v,collisionHeight:w,offset:e,my:b.my,at:b.at})});c.fn.bgiframe&&f.bgiframe();f.offset(c.extend(i,{using:b.using}))})};c.ui.position={fit:{left:function(b,a){var d=c(window);d=a.collisionPosition.left+a.collisionWidth-d.width()-d.scrollLeft();b.left= +d>0?b.left-d:Math.max(b.left-a.collisionPosition.left,b.left)},top:function(b,a){var d=c(window);d=a.collisionPosition.top+a.collisionHeight-d.height()-d.scrollTop();b.top=d>0?b.top-d:Math.max(b.top-a.collisionPosition.top,b.top)}},flip:{left:function(b,a){if(a.at[0]!=="center"){var d=c(window);d=a.collisionPosition.left+a.collisionWidth-d.width()-d.scrollLeft();var g=a.my[0]==="left"?-a.elemWidth:a.my[0]==="right"?a.elemWidth:0,e=a.at[0]==="left"?a.targetWidth:-a.targetWidth,h=-2*a.offset[0];b.left+= +a.collisionPosition.left<0?g+e+h:d>0?g+e+h:0}},top:function(b,a){if(a.at[1]!=="center"){var d=c(window);d=a.collisionPosition.top+a.collisionHeight-d.height()-d.scrollTop();var g=a.my[1]==="top"?-a.elemHeight:a.my[1]==="bottom"?a.elemHeight:0,e=a.at[1]==="top"?a.targetHeight:-a.targetHeight,h=-2*a.offset[1];b.top+=a.collisionPosition.top<0?g+e+h:d>0?g+e+h:0}}}};if(!c.offset.setOffset){c.offset.setOffset=function(b,a){if(/static/.test(c.curCSS(b,"position")))b.style.position="relative";var d=c(b), +g=d.offset(),e=parseInt(c.curCSS(b,"top",true),10)||0,h=parseInt(c.curCSS(b,"left",true),10)||0;g={top:a.top-g.top+e,left:a.left-g.left+h};"using"in a?a.using.call(b,g):d.css(g)};c.fn.offset=function(b){var a=this[0];if(!a||!a.ownerDocument)return null;if(b)return this.each(function(){c.offset.setOffset(this,b)});return u.call(this)}}})(jQuery); +;/* + * jQuery UI Draggable 1.8.10 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Draggables + * + * Depends: + * jquery.ui.core.js + * jquery.ui.mouse.js + * jquery.ui.widget.js + */ +(function(d){d.widget("ui.draggable",d.ui.mouse,{widgetEventPrefix:"drag",options:{addClasses:true,appendTo:"parent",axis:false,connectToSortable:false,containment:false,cursor:"auto",cursorAt:false,grid:false,handle:false,helper:"original",iframeFix:false,opacity:false,refreshPositions:false,revert:false,revertDuration:500,scope:"default",scroll:true,scrollSensitivity:20,scrollSpeed:20,snap:false,snapMode:"both",snapTolerance:20,stack:false,zIndex:false},_create:function(){if(this.options.helper== +"original"&&!/^(?:r|a|f)/.test(this.element.css("position")))this.element[0].style.position="relative";this.options.addClasses&&this.element.addClass("ui-draggable");this.options.disabled&&this.element.addClass("ui-draggable-disabled");this._mouseInit()},destroy:function(){if(this.element.data("draggable")){this.element.removeData("draggable").unbind(".draggable").removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled");this._mouseDestroy();return this}},_mouseCapture:function(a){var b= +this.options;if(this.helper||b.disabled||d(a.target).is(".ui-resizable-handle"))return false;this.handle=this._getHandle(a);if(!this.handle)return false;return true},_mouseStart:function(a){var b=this.options;this.helper=this._createHelper(a);this._cacheHelperProportions();if(d.ui.ddmanager)d.ui.ddmanager.current=this;this._cacheMargins();this.cssPosition=this.helper.css("position");this.scrollParent=this.helper.scrollParent();this.offset=this.positionAbs=this.element.offset();this.offset={top:this.offset.top- +this.margins.top,left:this.offset.left-this.margins.left};d.extend(this.offset,{click:{left:a.pageX-this.offset.left,top:a.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this.position=this._generatePosition(a);this.originalPageX=a.pageX;this.originalPageY=a.pageY;b.cursorAt&&this._adjustOffsetFromHelper(b.cursorAt);b.containment&&this._setContainment();if(this._trigger("start",a)===false){this._clear();return false}this._cacheHelperProportions(); +d.ui.ddmanager&&!b.dropBehaviour&&d.ui.ddmanager.prepareOffsets(this,a);this.helper.addClass("ui-draggable-dragging");this._mouseDrag(a,true);return true},_mouseDrag:function(a,b){this.position=this._generatePosition(a);this.positionAbs=this._convertPositionTo("absolute");if(!b){b=this._uiHash();if(this._trigger("drag",a,b)===false){this._mouseUp({});return false}this.position=b.position}if(!this.options.axis||this.options.axis!="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis|| +this.options.axis!="x")this.helper[0].style.top=this.position.top+"px";d.ui.ddmanager&&d.ui.ddmanager.drag(this,a);return false},_mouseStop:function(a){var b=false;if(d.ui.ddmanager&&!this.options.dropBehaviour)b=d.ui.ddmanager.drop(this,a);if(this.dropped){b=this.dropped;this.dropped=false}if((!this.element[0]||!this.element[0].parentNode)&&this.options.helper=="original")return false;if(this.options.revert=="invalid"&&!b||this.options.revert=="valid"&&b||this.options.revert===true||d.isFunction(this.options.revert)&& +this.options.revert.call(this.element,b)){var c=this;d(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){c._trigger("stop",a)!==false&&c._clear()})}else this._trigger("stop",a)!==false&&this._clear();return false},cancel:function(){this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear();return this},_getHandle:function(a){var b=!this.options.handle||!d(this.options.handle,this.element).length?true:false;d(this.options.handle,this.element).find("*").andSelf().each(function(){if(this== +a.target)b=true});return b},_createHelper:function(a){var b=this.options;a=d.isFunction(b.helper)?d(b.helper.apply(this.element[0],[a])):b.helper=="clone"?this.element.clone():this.element;a.parents("body").length||a.appendTo(b.appendTo=="parent"?this.element[0].parentNode:b.appendTo);a[0]!=this.element[0]&&!/(fixed|absolute)/.test(a.css("position"))&&a.css("position","absolute");return a},_adjustOffsetFromHelper:function(a){if(typeof a=="string")a=a.split(" ");if(d.isArray(a))a={left:+a[0],top:+a[1]|| +0};if("left"in a)this.offset.click.left=a.left+this.margins.left;if("right"in a)this.offset.click.left=this.helperProportions.width-a.right+this.margins.left;if("top"in a)this.offset.click.top=a.top+this.margins.top;if("bottom"in a)this.offset.click.top=this.helperProportions.height-a.bottom+this.margins.top},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var a=this.offsetParent.offset();if(this.cssPosition=="absolute"&&this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0], +this.offsetParent[0])){a.left+=this.scrollParent.scrollLeft();a.top+=this.scrollParent.scrollTop()}if(this.offsetParent[0]==document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()=="html"&&d.browser.msie)a={top:0,left:0};return{top:a.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:a.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition=="relative"){var a=this.element.position();return{top:a.top- +(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:a.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}else return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var a=this.options;if(a.containment== +"parent")a.containment=this.helper[0].parentNode;if(a.containment=="document"||a.containment=="window")this.containment=[(a.containment=="document"?0:d(window).scrollLeft())-this.offset.relative.left-this.offset.parent.left,(a.containment=="document"?0:d(window).scrollTop())-this.offset.relative.top-this.offset.parent.top,(a.containment=="document"?0:d(window).scrollLeft())+d(a.containment=="document"?document:window).width()-this.helperProportions.width-this.margins.left,(a.containment=="document"? +0:d(window).scrollTop())+(d(a.containment=="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(a.containment)&&a.containment.constructor!=Array){var b=d(a.containment)[0];if(b){a=d(a.containment).offset();var c=d(b).css("overflow")!="hidden";this.containment=[a.left+(parseInt(d(b).css("borderLeftWidth"),10)||0)+(parseInt(d(b).css("paddingLeft"),10)||0)-this.margins.left,a.top+(parseInt(d(b).css("borderTopWidth"), +10)||0)+(parseInt(d(b).css("paddingTop"),10)||0)-this.margins.top,a.left+(c?Math.max(b.scrollWidth,b.offsetWidth):b.offsetWidth)-(parseInt(d(b).css("borderLeftWidth"),10)||0)-(parseInt(d(b).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,a.top+(c?Math.max(b.scrollHeight,b.offsetHeight):b.offsetHeight)-(parseInt(d(b).css("borderTopWidth"),10)||0)-(parseInt(d(b).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top]}}else if(a.containment.constructor== +Array)this.containment=a.containment},_convertPositionTo:function(a,b){if(!b)b=this.position;a=a=="absolute"?1:-1;var c=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,f=/(html|body)/i.test(c[0].tagName);return{top:b.top+this.offset.relative.top*a+this.offset.parent.top*a-(d.browser.safari&&d.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollTop(): +f?0:c.scrollTop())*a),left:b.left+this.offset.relative.left*a+this.offset.parent.left*a-(d.browser.safari&&d.browser.version<526&&this.cssPosition=="fixed"?0:(this.cssPosition=="fixed"?-this.scrollParent.scrollLeft():f?0:c.scrollLeft())*a)}},_generatePosition:function(a){var b=this.options,c=this.cssPosition=="absolute"&&!(this.scrollParent[0]!=document&&d.ui.contains(this.scrollParent[0],this.offsetParent[0]))?this.offsetParent:this.scrollParent,f=/(html|body)/i.test(c[0].tagName),e=a.pageX,g=a.pageY; +if(this.originalPosition){if(this.containment){if(a.pageX-this.offset.click.leftthis.containment[2])e=this.containment[2]+this.offset.click.left;if(a.pageY-this.offset.click.top>this.containment[3])g=this.containment[3]+this.offset.click.top}if(b.grid){g=this.originalPageY+Math.round((g-this.originalPageY)/ +b.grid[1])*b.grid[1];g=this.containment?!(g-this.offset.click.topthis.containment[3])?g:!(g-this.offset.click.topthis.containment[2])?e:!(e-this.offset.click.left
          ').css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1E3}).css(d(this).offset()).appendTo("body")})}, +stop:function(){d("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)})}});d.ui.plugin.add("draggable","opacity",{start:function(a,b){a=d(b.helper);b=d(this).data("draggable").options;if(a.css("opacity"))b._opacity=a.css("opacity");a.css("opacity",b.opacity)},stop:function(a,b){a=d(this).data("draggable").options;a._opacity&&d(b.helper).css("opacity",a._opacity)}});d.ui.plugin.add("draggable","scroll",{start:function(){var a=d(this).data("draggable");if(a.scrollParent[0]!= +document&&a.scrollParent[0].tagName!="HTML")a.overflowOffset=a.scrollParent.offset()},drag:function(a){var b=d(this).data("draggable"),c=b.options,f=false;if(b.scrollParent[0]!=document&&b.scrollParent[0].tagName!="HTML"){if(!c.axis||c.axis!="x")if(b.overflowOffset.top+b.scrollParent[0].offsetHeight-a.pageY=0;h--){var i=c.snapElements[h].left,k=i+c.snapElements[h].width,j=c.snapElements[h].top,l=j+c.snapElements[h].height;if(i-e=j&&f<=l||h>=j&&h<=l||fl)&&(e>= +i&&e<=k||g>=i&&g<=k||ek);default:return false}};d.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(a,b){var c=d.ui.ddmanager.droppables[a.options.scope]||[],e=b?b.type:null,g=(a.currentItem||a.element).find(":data(droppable)").andSelf(),f=0;a:for(;f').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(), +top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle= +this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=a.handles||(!e(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne", +nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all")this.handles="n,e,s,w,se,sw,ne,nw";var c=this.handles.split(",");this.handles={};for(var d=0;d');/sw|se|ne|nw/.test(f)&&g.css({zIndex:++a.zIndex});"se"==f&&g.addClass("ui-icon ui-icon-gripsmall-diagonal-se");this.handles[f]=".ui-resizable-"+f;this.element.append(g)}}this._renderAxis=function(h){h=h||this.element;for(var i in this.handles){if(this.handles[i].constructor== +String)this.handles[i]=e(this.handles[i],this.element).show();if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var j=e(this.handles[i],this.element),k=0;k=/sw|ne|nw|se|n|s/.test(i)?j.outerHeight():j.outerWidth();j=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join("");h.css(j,k);this._proportionallyResize()}e(this.handles[i])}};this._renderAxis(this.element);this._handles=e(".ui-resizable-handle",this.element).disableSelection(); +this._handles.mouseover(function(){if(!b.resizing){if(this.className)var h=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);b.axis=h&&h[1]?h[1]:"se"}});if(a.autoHide){this._handles.hide();e(this.element).addClass("ui-resizable-autohide").hover(function(){e(this).removeClass("ui-resizable-autohide");b._handles.show()},function(){if(!b.resizing){e(this).addClass("ui-resizable-autohide");b._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var b=function(c){e(c).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()}; +if(this.elementIsWrapper){b(this.element);var a=this.element;a.after(this.originalElement.css({position:a.css("position"),width:a.outerWidth(),height:a.outerHeight(),top:a.css("top"),left:a.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);b(this.originalElement);return this},_mouseCapture:function(b){var a=false;for(var c in this.handles)if(e(this.handles[c])[0]==b.target)a=true;return!this.options.disabled&&a},_mouseStart:function(b){var a=this.options,c=this.element.position(), +d=this.element;this.resizing=true;this.documentScroll={top:e(document).scrollTop(),left:e(document).scrollLeft()};if(d.is(".ui-draggable")||/absolute/.test(d.css("position")))d.css({position:"absolute",top:c.top,left:c.left});e.browser.opera&&/relative/.test(d.css("position"))&&d.css({position:"relative",top:"auto",left:"auto"});this._renderProxy();c=m(this.helper.css("left"));var f=m(this.helper.css("top"));if(a.containment){c+=e(a.containment).scrollLeft()||0;f+=e(a.containment).scrollTop()||0}this.offset= +this.helper.offset();this.position={left:c,top:f};this.size=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalSize=this._helper?{width:d.outerWidth(),height:d.outerHeight()}:{width:d.width(),height:d.height()};this.originalPosition={left:c,top:f};this.sizeDiff={width:d.outerWidth()-d.width(),height:d.outerHeight()-d.height()};this.originalMousePosition={left:b.pageX,top:b.pageY};this.aspectRatio=typeof a.aspectRatio=="number"?a.aspectRatio: +this.originalSize.width/this.originalSize.height||1;a=e(".ui-resizable-"+this.axis).css("cursor");e("body").css("cursor",a=="auto"?this.axis+"-resize":a);d.addClass("ui-resizable-resizing");this._propagate("start",b);return true},_mouseDrag:function(b){var a=this.helper,c=this.originalMousePosition,d=this._change[this.axis];if(!d)return false;c=d.apply(this,[b,b.pageX-c.left||0,b.pageY-c.top||0]);if(this._aspectRatio||b.shiftKey)c=this._updateRatio(c,b);c=this._respectSize(c,b);this._propagate("resize", +b);a.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize();this._updateCache(c);this._trigger("resize",b,this.ui());return false},_mouseStop:function(b){this.resizing=false;var a=this.options,c=this;if(this._helper){var d=this._proportionallyResizeElements,f=d.length&&/textarea/i.test(d[0].nodeName);d=f&&e.ui.hasScroll(d[0],"left")?0:c.sizeDiff.height; +f=f?0:c.sizeDiff.width;f={width:c.helper.width()-f,height:c.helper.height()-d};d=parseInt(c.element.css("left"),10)+(c.position.left-c.originalPosition.left)||null;var g=parseInt(c.element.css("top"),10)+(c.position.top-c.originalPosition.top)||null;a.animate||this.element.css(e.extend(f,{top:g,left:d}));c.helper.height(c.size.height);c.helper.width(c.size.width);this._helper&&!a.animate&&this._proportionallyResize()}e("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing"); +this._propagate("stop",b);this._helper&&this.helper.remove();return false},_updateCache:function(b){this.offset=this.helper.offset();if(l(b.left))this.position.left=b.left;if(l(b.top))this.position.top=b.top;if(l(b.height))this.size.height=b.height;if(l(b.width))this.size.width=b.width},_updateRatio:function(b){var a=this.position,c=this.size,d=this.axis;if(b.height)b.width=c.height*this.aspectRatio;else if(b.width)b.height=c.width/this.aspectRatio;if(d=="sw"){b.left=a.left+(c.width-b.width);b.top= +null}if(d=="nw"){b.top=a.top+(c.height-b.height);b.left=a.left+(c.width-b.width)}return b},_respectSize:function(b){var a=this.options,c=this.axis,d=l(b.width)&&a.maxWidth&&a.maxWidthb.width,h=l(b.height)&&a.minHeight&&a.minHeight>b.height;if(g)b.width=a.minWidth;if(h)b.height=a.minHeight;if(d)b.width=a.maxWidth;if(f)b.height=a.maxHeight;var i=this.originalPosition.left+this.originalSize.width,j=this.position.top+ +this.size.height,k=/sw|nw|w/.test(c);c=/nw|ne|n/.test(c);if(g&&k)b.left=i-a.minWidth;if(d&&k)b.left=i-a.maxWidth;if(h&&c)b.top=j-a.minHeight;if(f&&c)b.top=j-a.maxHeight;if((a=!b.width&&!b.height)&&!b.left&&b.top)b.top=null;else if(a&&!b.top&&b.left)b.left=null;return b},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var b=this.helper||this.element,a=0;a');var a=e.browser.msie&&e.browser.version<7,c=a?1:0;a=a?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+a,height:this.element.outerHeight()+a,position:"absolute",left:this.elementOffset.left-c+"px",top:this.elementOffset.top-c+"px",zIndex:++b.zIndex});this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(b, +a){return{width:this.originalSize.width+a}},w:function(b,a){return{left:this.originalPosition.left+a,width:this.originalSize.width-a}},n:function(b,a,c){return{top:this.originalPosition.top+c,height:this.originalSize.height-c}},s:function(b,a,c){return{height:this.originalSize.height+c}},se:function(b,a,c){return e.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[b,a,c]))},sw:function(b,a,c){return e.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[b,a, +c]))},ne:function(b,a,c){return e.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[b,a,c]))},nw:function(b,a,c){return e.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[b,a,c]))}},_propagate:function(b,a){e.ui.plugin.call(this,b,[a,this.ui()]);b!="resize"&&this._trigger(b,a,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize, +originalPosition:this.originalPosition}}});e.extend(e.ui.resizable,{version:"1.8.10"});e.ui.plugin.add("resizable","alsoResize",{start:function(){var b=e(this).data("resizable").options,a=function(c){e(c).each(function(){var d=e(this);d.data("resizable-alsoresize",{width:parseInt(d.width(),10),height:parseInt(d.height(),10),left:parseInt(d.css("left"),10),top:parseInt(d.css("top"),10),position:d.css("position")})})};if(typeof b.alsoResize=="object"&&!b.alsoResize.parentNode)if(b.alsoResize.length){b.alsoResize= +b.alsoResize[0];a(b.alsoResize)}else e.each(b.alsoResize,function(c){a(c)});else a(b.alsoResize)},resize:function(b,a){var c=e(this).data("resizable");b=c.options;var d=c.originalSize,f=c.originalPosition,g={height:c.size.height-d.height||0,width:c.size.width-d.width||0,top:c.position.top-f.top||0,left:c.position.left-f.left||0},h=function(i,j){e(i).each(function(){var k=e(this),q=e(this).data("resizable-alsoresize"),p={},r=j&&j.length?j:k.parents(a.originalElement[0]).length?["width","height"]:["width", +"height","top","left"];e.each(r,function(n,o){if((n=(q[o]||0)+(g[o]||0))&&n>=0)p[o]=n||null});if(e.browser.opera&&/relative/.test(k.css("position"))){c._revertToRelativePosition=true;k.css({position:"absolute",top:"auto",left:"auto"})}k.css(p)})};typeof b.alsoResize=="object"&&!b.alsoResize.nodeType?e.each(b.alsoResize,function(i,j){h(i,j)}):h(b.alsoResize)},stop:function(){var b=e(this).data("resizable"),a=b.options,c=function(d){e(d).each(function(){var f=e(this);f.css({position:f.data("resizable-alsoresize").position})})}; +if(b._revertToRelativePosition){b._revertToRelativePosition=false;typeof a.alsoResize=="object"&&!a.alsoResize.nodeType?e.each(a.alsoResize,function(d){c(d)}):c(a.alsoResize)}e(this).removeData("resizable-alsoresize")}});e.ui.plugin.add("resizable","animate",{stop:function(b){var a=e(this).data("resizable"),c=a.options,d=a._proportionallyResizeElements,f=d.length&&/textarea/i.test(d[0].nodeName),g=f&&e.ui.hasScroll(d[0],"left")?0:a.sizeDiff.height;f={width:a.size.width-(f?0:a.sizeDiff.width),height:a.size.height- +g};g=parseInt(a.element.css("left"),10)+(a.position.left-a.originalPosition.left)||null;var h=parseInt(a.element.css("top"),10)+(a.position.top-a.originalPosition.top)||null;a.element.animate(e.extend(f,h&&g?{top:h,left:g}:{}),{duration:c.animateDuration,easing:c.animateEasing,step:function(){var i={width:parseInt(a.element.css("width"),10),height:parseInt(a.element.css("height"),10),top:parseInt(a.element.css("top"),10),left:parseInt(a.element.css("left"),10)};d&&d.length&&e(d[0]).css({width:i.width, +height:i.height});a._updateCache(i);a._propagate("resize",b)}})}});e.ui.plugin.add("resizable","containment",{start:function(){var b=e(this).data("resizable"),a=b.element,c=b.options.containment;if(a=c instanceof e?c.get(0):/parent/.test(c)?a.parent().get(0):c){b.containerElement=e(a);if(/document/.test(c)||c==document){b.containerOffset={left:0,top:0};b.containerPosition={left:0,top:0};b.parentData={element:e(document),left:0,top:0,width:e(document).width(),height:e(document).height()||document.body.parentNode.scrollHeight}}else{var d= +e(a),f=[];e(["Top","Right","Left","Bottom"]).each(function(i,j){f[i]=m(d.css("padding"+j))});b.containerOffset=d.offset();b.containerPosition=d.position();b.containerSize={height:d.innerHeight()-f[3],width:d.innerWidth()-f[1]};c=b.containerOffset;var g=b.containerSize.height,h=b.containerSize.width;h=e.ui.hasScroll(a,"left")?a.scrollWidth:h;g=e.ui.hasScroll(a)?a.scrollHeight:g;b.parentData={element:a,left:c.left,top:c.top,width:h,height:g}}}},resize:function(b){var a=e(this).data("resizable"),c=a.options, +d=a.containerOffset,f=a.position;b=a._aspectRatio||b.shiftKey;var g={top:0,left:0},h=a.containerElement;if(h[0]!=document&&/static/.test(h.css("position")))g=d;if(f.left<(a._helper?d.left:0)){a.size.width+=a._helper?a.position.left-d.left:a.position.left-g.left;if(b)a.size.height=a.size.width/c.aspectRatio;a.position.left=c.helper?d.left:0}if(f.top<(a._helper?d.top:0)){a.size.height+=a._helper?a.position.top-d.top:a.position.top;if(b)a.size.width=a.size.height*c.aspectRatio;a.position.top=a._helper? +d.top:0}a.offset.left=a.parentData.left+a.position.left;a.offset.top=a.parentData.top+a.position.top;c=Math.abs((a._helper?a.offset.left-g.left:a.offset.left-g.left)+a.sizeDiff.width);d=Math.abs((a._helper?a.offset.top-g.top:a.offset.top-d.top)+a.sizeDiff.height);f=a.containerElement.get(0)==a.element.parent().get(0);g=/relative|absolute/.test(a.containerElement.css("position"));if(f&&g)c-=a.parentData.left;if(c+a.size.width>=a.parentData.width){a.size.width=a.parentData.width-c;if(b)a.size.height= +a.size.width/a.aspectRatio}if(d+a.size.height>=a.parentData.height){a.size.height=a.parentData.height-d;if(b)a.size.width=a.size.height*a.aspectRatio}},stop:function(){var b=e(this).data("resizable"),a=b.options,c=b.containerOffset,d=b.containerPosition,f=b.containerElement,g=e(b.helper),h=g.offset(),i=g.outerWidth()-b.sizeDiff.width;g=g.outerHeight()-b.sizeDiff.height;b._helper&&!a.animate&&/relative/.test(f.css("position"))&&e(this).css({left:h.left-d.left-c.left,width:i,height:g});b._helper&&!a.animate&& +/static/.test(f.css("position"))&&e(this).css({left:h.left-d.left-c.left,width:i,height:g})}});e.ui.plugin.add("resizable","ghost",{start:function(){var b=e(this).data("resizable"),a=b.options,c=b.size;b.ghost=b.originalElement.clone();b.ghost.css({opacity:0.25,display:"block",position:"relative",height:c.height,width:c.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof a.ghost=="string"?a.ghost:"");b.ghost.appendTo(b.helper)},resize:function(){var b=e(this).data("resizable"); +b.ghost&&b.ghost.css({position:"relative",height:b.size.height,width:b.size.width})},stop:function(){var b=e(this).data("resizable");b.ghost&&b.helper&&b.helper.get(0).removeChild(b.ghost.get(0))}});e.ui.plugin.add("resizable","grid",{resize:function(){var b=e(this).data("resizable"),a=b.options,c=b.size,d=b.originalSize,f=b.originalPosition,g=b.axis;a.grid=typeof a.grid=="number"?[a.grid,a.grid]:a.grid;var h=Math.round((c.width-d.width)/(a.grid[0]||1))*(a.grid[0]||1);a=Math.round((c.height-d.height)/ +(a.grid[1]||1))*(a.grid[1]||1);if(/^(se|s|e)$/.test(g)){b.size.width=d.width+h;b.size.height=d.height+a}else if(/^(ne)$/.test(g)){b.size.width=d.width+h;b.size.height=d.height+a;b.position.top=f.top-a}else{if(/^(sw)$/.test(g)){b.size.width=d.width+h;b.size.height=d.height+a}else{b.size.width=d.width+h;b.size.height=d.height+a;b.position.top=f.top-a}b.position.left=f.left-h}}});var m=function(b){return parseInt(b,10)||0},l=function(b){return!isNaN(parseInt(b,10))}})(jQuery); +;/* + * jQuery UI Selectable 1.8.10 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Selectables + * + * Depends: + * jquery.ui.core.js + * jquery.ui.mouse.js + * jquery.ui.widget.js + */ +(function(e){e.widget("ui.selectable",e.ui.mouse,{options:{appendTo:"body",autoRefresh:true,distance:0,filter:"*",tolerance:"touch"},_create:function(){var c=this;this.element.addClass("ui-selectable");this.dragged=false;var f;this.refresh=function(){f=e(c.options.filter,c.element[0]);f.each(function(){var d=e(this),b=d.offset();e.data(this,"selectable-item",{element:this,$element:d,left:b.left,top:b.top,right:b.left+d.outerWidth(),bottom:b.top+d.outerHeight(),startselected:false,selected:d.hasClass("ui-selected"), +selecting:d.hasClass("ui-selecting"),unselecting:d.hasClass("ui-unselecting")})})};this.refresh();this.selectees=f.addClass("ui-selectee");this._mouseInit();this.helper=e("
          ")},destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item");this.element.removeClass("ui-selectable ui-selectable-disabled").removeData("selectable").unbind(".selectable");this._mouseDestroy();return this},_mouseStart:function(c){var f=this;this.opos=[c.pageX, +c.pageY];if(!this.options.disabled){var d=this.options;this.selectees=e(d.filter,this.element[0]);this._trigger("start",c);e(d.appendTo).append(this.helper);this.helper.css({left:c.clientX,top:c.clientY,width:0,height:0});d.autoRefresh&&this.refresh();this.selectees.filter(".ui-selected").each(function(){var b=e.data(this,"selectable-item");b.startselected=true;if(!c.metaKey){b.$element.removeClass("ui-selected");b.selected=false;b.$element.addClass("ui-unselecting");b.unselecting=true;f._trigger("unselecting", +c,{unselecting:b.element})}});e(c.target).parents().andSelf().each(function(){var b=e.data(this,"selectable-item");if(b){var g=!c.metaKey||!b.$element.hasClass("ui-selected");b.$element.removeClass(g?"ui-unselecting":"ui-selected").addClass(g?"ui-selecting":"ui-unselecting");b.unselecting=!g;b.selecting=g;(b.selected=g)?f._trigger("selecting",c,{selecting:b.element}):f._trigger("unselecting",c,{unselecting:b.element});return false}})}},_mouseDrag:function(c){var f=this;this.dragged=true;if(!this.options.disabled){var d= +this.options,b=this.opos[0],g=this.opos[1],h=c.pageX,i=c.pageY;if(b>h){var j=h;h=b;b=j}if(g>i){j=i;i=g;g=j}this.helper.css({left:b,top:g,width:h-b,height:i-g});this.selectees.each(function(){var a=e.data(this,"selectable-item");if(!(!a||a.element==f.element[0])){var k=false;if(d.tolerance=="touch")k=!(a.left>h||a.righti||a.bottomb&&a.rightg&&a.bottom *",opacity:false,placeholder:false,revert:false,scroll:true,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1E3},_create:function(){this.containerCache={};this.element.addClass("ui-sortable"); +this.refresh();this.floating=this.items.length?/left|right/.test(this.items[0].item.css("float")):false;this.offset=this.element.offset();this._mouseInit()},destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled").removeData("sortable").unbind(".sortable");this._mouseDestroy();for(var a=this.items.length-1;a>=0;a--)this.items[a].item.removeData("sortable-item");return this},_setOption:function(a,b){if(a==="disabled"){this.options[a]=b;this.widget()[b?"addClass":"removeClass"]("ui-sortable-disabled")}else d.Widget.prototype._setOption.apply(this, +arguments)},_mouseCapture:function(a,b){if(this.reverting)return false;if(this.options.disabled||this.options.type=="static")return false;this._refreshItems(a);var c=null,e=this;d(a.target).parents().each(function(){if(d.data(this,"sortable-item")==e){c=d(this);return false}});if(d.data(a.target,"sortable-item")==e)c=d(a.target);if(!c)return false;if(this.options.handle&&!b){var f=false;d(this.options.handle,c).find("*").andSelf().each(function(){if(this==a.target)f=true});if(!f)return false}this.currentItem= +c;this._removeCurrentsFromItems();return true},_mouseStart:function(a,b,c){b=this.options;var e=this;this.currentContainer=this;this.refreshPositions();this.helper=this._createHelper(a);this._cacheHelperProportions();this._cacheMargins();this.scrollParent=this.helper.scrollParent();this.offset=this.currentItem.offset();this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left};this.helper.css("position","absolute");this.cssPosition=this.helper.css("position");d.extend(this.offset, +{click:{left:a.pageX-this.offset.left,top:a.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()});this.originalPosition=this._generatePosition(a);this.originalPageX=a.pageX;this.originalPageY=a.pageY;b.cursorAt&&this._adjustOffsetFromHelper(b.cursorAt);this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]};this.helper[0]!=this.currentItem[0]&&this.currentItem.hide();this._createPlaceholder();b.containment&&this._setContainment(); +if(b.cursor){if(d("body").css("cursor"))this._storedCursor=d("body").css("cursor");d("body").css("cursor",b.cursor)}if(b.opacity){if(this.helper.css("opacity"))this._storedOpacity=this.helper.css("opacity");this.helper.css("opacity",b.opacity)}if(b.zIndex){if(this.helper.css("zIndex"))this._storedZIndex=this.helper.css("zIndex");this.helper.css("zIndex",b.zIndex)}if(this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML")this.overflowOffset=this.scrollParent.offset();this._trigger("start", +a,this._uiHash());this._preserveHelperProportions||this._cacheHelperProportions();if(!c)for(c=this.containers.length-1;c>=0;c--)this.containers[c]._trigger("activate",a,e._uiHash(this));if(d.ui.ddmanager)d.ui.ddmanager.current=this;d.ui.ddmanager&&!b.dropBehaviour&&d.ui.ddmanager.prepareOffsets(this,a);this.dragging=true;this.helper.addClass("ui-sortable-helper");this._mouseDrag(a);return true},_mouseDrag:function(a){this.position=this._generatePosition(a);this.positionAbs=this._convertPositionTo("absolute"); +if(!this.lastPositionAbs)this.lastPositionAbs=this.positionAbs;if(this.options.scroll){var b=this.options,c=false;if(this.scrollParent[0]!=document&&this.scrollParent[0].tagName!="HTML"){if(this.overflowOffset.top+this.scrollParent[0].offsetHeight-a.pageY=0;b--){c=this.items[b];var e=c.item[0],f=this._intersectsWithPointer(c);if(f)if(e!=this.currentItem[0]&&this.placeholder[f==1?"next":"prev"]()[0]!=e&&!d.ui.contains(this.placeholder[0],e)&&(this.options.type=="semi-dynamic"?!d.ui.contains(this.element[0],e):true)){this.direction=f==1?"down":"up";if(this.options.tolerance=="pointer"||this._intersectsWithSides(c))this._rearrange(a, +c);else break;this._trigger("change",a,this._uiHash());break}}this._contactContainers(a);d.ui.ddmanager&&d.ui.ddmanager.drag(this,a);this._trigger("sort",a,this._uiHash());this.lastPositionAbs=this.positionAbs;return false},_mouseStop:function(a,b){if(a){d.ui.ddmanager&&!this.options.dropBehaviour&&d.ui.ddmanager.drop(this,a);if(this.options.revert){var c=this;b=c.placeholder.offset();c.reverting=true;d(this.helper).animate({left:b.left-this.offset.parent.left-c.margins.left+(this.offsetParent[0]== +document.body?0:this.offsetParent[0].scrollLeft),top:b.top-this.offset.parent.top-c.margins.top+(this.offsetParent[0]==document.body?0:this.offsetParent[0].scrollTop)},parseInt(this.options.revert,10)||500,function(){c._clear(a)})}else this._clear(a,b);return false}},cancel:function(){var a=this;if(this.dragging){this._mouseUp({target:null});this.options.helper=="original"?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var b=this.containers.length- +1;b>=0;b--){this.containers[b]._trigger("deactivate",null,a._uiHash(this));if(this.containers[b].containerCache.over){this.containers[b]._trigger("out",null,a._uiHash(this));this.containers[b].containerCache.over=0}}}if(this.placeholder){this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]);this.options.helper!="original"&&this.helper&&this.helper[0].parentNode&&this.helper.remove();d.extend(this,{helper:null,dragging:false,reverting:false,_noFinalSort:null}); +this.domPosition.prev?d(this.domPosition.prev).after(this.currentItem):d(this.domPosition.parent).prepend(this.currentItem)}return this},serialize:function(a){var b=this._getItemsAsjQuery(a&&a.connected),c=[];a=a||{};d(b).each(function(){var e=(d(a.item||this).attr(a.attribute||"id")||"").match(a.expression||/(.+)[-=_](.+)/);if(e)c.push((a.key||e[1]+"[]")+"="+(a.key&&a.expression?e[1]:e[2]))});!c.length&&a.key&&c.push(a.key+"=");return c.join("&")},toArray:function(a){var b=this._getItemsAsjQuery(a&& +a.connected),c=[];a=a||{};b.each(function(){c.push(d(a.item||this).attr(a.attribute||"id")||"")});return c},_intersectsWith:function(a){var b=this.positionAbs.left,c=b+this.helperProportions.width,e=this.positionAbs.top,f=e+this.helperProportions.height,g=a.left,h=g+a.width,i=a.top,k=i+a.height,j=this.offset.click.top,l=this.offset.click.left;j=e+j>i&&e+jg&&b+la[this.floating?"width":"height"]?j:g0?"down":"up")},_getDragHorizontalDirection:function(){var a=this.positionAbs.left-this.lastPositionAbs.left;return a!=0&&(a>0?"right":"left")},refresh:function(a){this._refreshItems(a);this.refreshPositions();return this},_connectWith:function(){var a=this.options;return a.connectWith.constructor==String?[a.connectWith]:a.connectWith},_getItemsAsjQuery:function(a){var b=[],c=[],e=this._connectWith();if(e&&a)for(a=e.length-1;a>=0;a--)for(var f=d(e[a]),g=f.length-1;g>=0;g--){var h= +d.data(f[g],"sortable");if(h&&h!=this&&!h.options.disabled)c.push([d.isFunction(h.options.items)?h.options.items.call(h.element):d(h.options.items,h.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),h])}c.push([d.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):d(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]);for(a=c.length-1;a>=0;a--)c[a][0].each(function(){b.push(this)}); +return d(b)},_removeCurrentsFromItems:function(){for(var a=this.currentItem.find(":data(sortable-item)"),b=0;b=0;f--)for(var g= +d(e[f]),h=g.length-1;h>=0;h--){var i=d.data(g[h],"sortable");if(i&&i!=this&&!i.options.disabled){c.push([d.isFunction(i.options.items)?i.options.items.call(i.element[0],a,{item:this.currentItem}):d(i.options.items,i.element),i]);this.containers.push(i)}}for(f=c.length-1;f>=0;f--){a=c[f][1];e=c[f][0];h=0;for(g=e.length;h=0;b--){var c=this.items[b],e=this.options.toleranceElement?d(this.options.toleranceElement,c.item):c.item;if(!a){c.width=e.outerWidth();c.height=e.outerHeight()}e=e.offset();c.left=e.left;c.top=e.top}if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(b=this.containers.length-1;b>=0;b--){e=this.containers[b].element.offset();this.containers[b].containerCache.left=e.left;this.containers[b].containerCache.top= +e.top;this.containers[b].containerCache.width=this.containers[b].element.outerWidth();this.containers[b].containerCache.height=this.containers[b].element.outerHeight()}return this},_createPlaceholder:function(a){var b=a||this,c=b.options;if(!c.placeholder||c.placeholder.constructor==String){var e=c.placeholder;c.placeholder={element:function(){var f=d(document.createElement(b.currentItem[0].nodeName)).addClass(e||b.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper")[0]; +if(!e)f.style.visibility="hidden";return f},update:function(f,g){if(!(e&&!c.forcePlaceholderSize)){g.height()||g.height(b.currentItem.innerHeight()-parseInt(b.currentItem.css("paddingTop")||0,10)-parseInt(b.currentItem.css("paddingBottom")||0,10));g.width()||g.width(b.currentItem.innerWidth()-parseInt(b.currentItem.css("paddingLeft")||0,10)-parseInt(b.currentItem.css("paddingRight")||0,10))}}}}b.placeholder=d(c.placeholder.element.call(b.element,b.currentItem));b.currentItem.after(b.placeholder); +c.placeholder.update(b,b.placeholder)},_contactContainers:function(a){for(var b=null,c=null,e=this.containers.length-1;e>=0;e--)if(!d.ui.contains(this.currentItem[0],this.containers[e].element[0]))if(this._intersectsWith(this.containers[e].containerCache)){if(!(b&&d.ui.contains(this.containers[e].element[0],b.element[0]))){b=this.containers[e];c=e}}else if(this.containers[e].containerCache.over){this.containers[e]._trigger("out",a,this._uiHash(this));this.containers[e].containerCache.over=0}if(b)if(this.containers.length=== +1){this.containers[c]._trigger("over",a,this._uiHash(this));this.containers[c].containerCache.over=1}else if(this.currentContainer!=this.containers[c]){b=1E4;e=null;for(var f=this.positionAbs[this.containers[c].floating?"left":"top"],g=this.items.length-1;g>=0;g--)if(d.ui.contains(this.containers[c].element[0],this.items[g].item[0])){var h=this.items[g][this.containers[c].floating?"left":"top"];if(Math.abs(h-f)this.containment[2])f=this.containment[2]+this.offset.click.left;if(a.pageY-this.offset.click.top>this.containment[3])g=this.containment[3]+this.offset.click.top}if(b.grid){g=this.originalPageY+Math.round((g-this.originalPageY)/b.grid[1])*b.grid[1];g=this.containment?!(g-this.offset.click.top< +this.containment[1]||g-this.offset.click.top>this.containment[3])?g:!(g-this.offset.click.topthis.containment[2])?f:!(f-this.offset.click.left=0;e--)if(d.ui.contains(this.containers[e].element[0], +this.currentItem[0])&&!b){c.push(function(f){return function(g){f._trigger("receive",g,this._uiHash(this))}}.call(this,this.containers[e]));c.push(function(f){return function(g){f._trigger("update",g,this._uiHash(this))}}.call(this,this.containers[e]))}}for(e=this.containers.length-1;e>=0;e--){b||c.push(function(f){return function(g){f._trigger("deactivate",g,this._uiHash(this))}}.call(this,this.containers[e]));if(this.containers[e].containerCache.over){c.push(function(f){return function(g){f._trigger("out", +g,this._uiHash(this))}}.call(this,this.containers[e]));this.containers[e].containerCache.over=0}}this._storedCursor&&d("body").css("cursor",this._storedCursor);this._storedOpacity&&this.helper.css("opacity",this._storedOpacity);if(this._storedZIndex)this.helper.css("zIndex",this._storedZIndex=="auto"?"":this._storedZIndex);this.dragging=false;if(this.cancelHelperRemoval){if(!b){this._trigger("beforeStop",a,this._uiHash());for(e=0;e li > :first-child,> :not(li):even",icons:{header:"ui-icon-triangle-1-e",headerSelected:"ui-icon-triangle-1-s"},navigation:false,navigationFilter:function(){return this.href.toLowerCase()===location.href.toLowerCase()}},_create:function(){var a=this,b=a.options;a.running=0;a.element.addClass("ui-accordion ui-widget ui-helper-reset").children("li").addClass("ui-accordion-li-fix"); +a.headers=a.element.find(b.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all").bind("mouseenter.accordion",function(){b.disabled||c(this).addClass("ui-state-hover")}).bind("mouseleave.accordion",function(){b.disabled||c(this).removeClass("ui-state-hover")}).bind("focus.accordion",function(){b.disabled||c(this).addClass("ui-state-focus")}).bind("blur.accordion",function(){b.disabled||c(this).removeClass("ui-state-focus")});a.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom"); +if(b.navigation){var d=a.element.find("a").filter(b.navigationFilter).eq(0);if(d.length){var h=d.closest(".ui-accordion-header");a.active=h.length?h:d.closest(".ui-accordion-content").prev()}}a.active=a._findActive(a.active||b.active).addClass("ui-state-default ui-state-active").toggleClass("ui-corner-all").toggleClass("ui-corner-top");a.active.next().addClass("ui-accordion-content-active");a._createIcons();a.resize();a.element.attr("role","tablist");a.headers.attr("role","tab").bind("keydown.accordion", +function(f){return a._keydown(f)}).next().attr("role","tabpanel");a.headers.not(a.active||"").attr({"aria-expanded":"false",tabIndex:-1}).next().hide();a.active.length?a.active.attr({"aria-expanded":"true",tabIndex:0}):a.headers.eq(0).attr("tabIndex",0);c.browser.safari||a.headers.find("a").attr("tabIndex",-1);b.event&&a.headers.bind(b.event.split(" ").join(".accordion ")+".accordion",function(f){a._clickHandler.call(a,f,this);f.preventDefault()})},_createIcons:function(){var a=this.options;if(a.icons){c("").addClass("ui-icon "+ +a.icons.header).prependTo(this.headers);this.active.children(".ui-icon").toggleClass(a.icons.header).toggleClass(a.icons.headerSelected);this.element.addClass("ui-accordion-icons")}},_destroyIcons:function(){this.headers.children(".ui-icon").remove();this.element.removeClass("ui-accordion-icons")},destroy:function(){var a=this.options;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role");this.headers.unbind(".accordion").removeClass("ui-accordion-header ui-accordion-disabled ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-expanded").removeAttr("tabIndex"); +this.headers.find("a").removeAttr("tabIndex");this._destroyIcons();var b=this.headers.next().css("display","").removeAttr("role").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-accordion-disabled ui-state-disabled");if(a.autoHeight||a.fillHeight)b.css("height","");return c.Widget.prototype.destroy.call(this)},_setOption:function(a,b){c.Widget.prototype._setOption.apply(this,arguments);a=="active"&&this.activate(b);if(a=="icons"){this._destroyIcons(); +b&&this._createIcons()}if(a=="disabled")this.headers.add(this.headers.next())[b?"addClass":"removeClass"]("ui-accordion-disabled ui-state-disabled")},_keydown:function(a){if(!(this.options.disabled||a.altKey||a.ctrlKey)){var b=c.ui.keyCode,d=this.headers.length,h=this.headers.index(a.target),f=false;switch(a.keyCode){case b.RIGHT:case b.DOWN:f=this.headers[(h+1)%d];break;case b.LEFT:case b.UP:f=this.headers[(h-1+d)%d];break;case b.SPACE:case b.ENTER:this._clickHandler({target:a.target},a.target); +a.preventDefault()}if(f){c(a.target).attr("tabIndex",-1);c(f).attr("tabIndex",0);f.focus();return false}return true}},resize:function(){var a=this.options,b;if(a.fillSpace){if(c.browser.msie){var d=this.element.parent().css("overflow");this.element.parent().css("overflow","hidden")}b=this.element.parent().height();c.browser.msie&&this.element.parent().css("overflow",d);this.headers.each(function(){b-=c(this).outerHeight(true)});this.headers.next().each(function(){c(this).height(Math.max(0,b-c(this).innerHeight()+ +c(this).height()))}).css("overflow","auto")}else if(a.autoHeight){b=0;this.headers.next().each(function(){b=Math.max(b,c(this).height("").height())}).height(b)}return this},activate:function(a){this.options.active=a;a=this._findActive(a)[0];this._clickHandler({target:a},a);return this},_findActive:function(a){return a?typeof a==="number"?this.headers.filter(":eq("+a+")"):this.headers.not(this.headers.not(a)):a===false?c([]):this.headers.filter(":eq(0)")},_clickHandler:function(a,b){var d=this.options; +if(!d.disabled)if(a.target){a=c(a.currentTarget||b);b=a[0]===this.active[0];d.active=d.collapsible&&b?false:this.headers.index(a);if(!(this.running||!d.collapsible&&b)){var h=this.active;j=a.next();g=this.active.next();e={options:d,newHeader:b&&d.collapsible?c([]):a,oldHeader:this.active,newContent:b&&d.collapsible?c([]):j,oldContent:g};var f=this.headers.index(this.active[0])>this.headers.index(a[0]);this.active=b?c([]):a;this._toggle(j,g,e,b,f);h.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header); +if(!b){a.removeClass("ui-state-default ui-corner-all").addClass("ui-state-active ui-corner-top").children(".ui-icon").removeClass(d.icons.header).addClass(d.icons.headerSelected);a.next().addClass("ui-accordion-content-active")}}}else if(d.collapsible){this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all").children(".ui-icon").removeClass(d.icons.headerSelected).addClass(d.icons.header);this.active.next().addClass("ui-accordion-content-active");var g=this.active.next(), +e={options:d,newHeader:c([]),oldHeader:d.active,newContent:c([]),oldContent:g},j=this.active=c([]);this._toggle(j,g,e)}},_toggle:function(a,b,d,h,f){var g=this,e=g.options;g.toShow=a;g.toHide=b;g.data=d;var j=function(){if(g)return g._completed.apply(g,arguments)};g._trigger("changestart",null,g.data);g.running=b.size()===0?a.size():b.size();if(e.animated){d={};d=e.collapsible&&h?{toShow:c([]),toHide:b,complete:j,down:f,autoHeight:e.autoHeight||e.fillSpace}:{toShow:a,toHide:b,complete:j,down:f,autoHeight:e.autoHeight|| +e.fillSpace};if(!e.proxied)e.proxied=e.animated;if(!e.proxiedDuration)e.proxiedDuration=e.duration;e.animated=c.isFunction(e.proxied)?e.proxied(d):e.proxied;e.duration=c.isFunction(e.proxiedDuration)?e.proxiedDuration(d):e.proxiedDuration;h=c.ui.accordion.animations;var i=e.duration,k=e.animated;if(k&&!h[k]&&!c.easing[k])k="slide";h[k]||(h[k]=function(l){this.slide(l,{easing:k,duration:i||700})});h[k](d)}else{if(e.collapsible&&h)a.toggle();else{b.hide();a.show()}j(true)}b.prev().attr({"aria-expanded":"false", +tabIndex:-1}).blur();a.prev().attr({"aria-expanded":"true",tabIndex:0}).focus()},_completed:function(a){this.running=a?0:--this.running;if(!this.running){this.options.clearStyle&&this.toShow.add(this.toHide).css({height:"",overflow:""});this.toHide.removeClass("ui-accordion-content-active");if(this.toHide.length)this.toHide.parent()[0].className=this.toHide.parent()[0].className;this._trigger("change",null,this.data)}}});c.extend(c.ui.accordion,{version:"1.8.10",animations:{slide:function(a,b){a= +c.extend({easing:"swing",duration:300},a,b);if(a.toHide.size())if(a.toShow.size()){var d=a.toShow.css("overflow"),h=0,f={},g={},e;b=a.toShow;e=b[0].style.width;b.width(parseInt(b.parent().width(),10)-parseInt(b.css("paddingLeft"),10)-parseInt(b.css("paddingRight"),10)-(parseInt(b.css("borderLeftWidth"),10)||0)-(parseInt(b.css("borderRightWidth"),10)||0));c.each(["height","paddingTop","paddingBottom"],function(j,i){g[i]="hide";j=(""+c.css(a.toShow[0],i)).match(/^([\d+-.]+)(.*)$/);f[i]={value:j[1], +unit:j[2]||"px"}});a.toShow.css({height:0,overflow:"hidden"}).show();a.toHide.filter(":hidden").each(a.complete).end().filter(":visible").animate(g,{step:function(j,i){if(i.prop=="height")h=i.end-i.start===0?0:(i.now-i.start)/(i.end-i.start);a.toShow[0].style[i.prop]=h*f[i.prop].value+f[i.prop].unit},duration:a.duration,easing:a.easing,complete:function(){a.autoHeight||a.toShow.css("height","");a.toShow.css({width:e,overflow:d});a.complete()}})}else a.toHide.animate({height:"hide",paddingTop:"hide", +paddingBottom:"hide"},a);else a.toShow.animate({height:"show",paddingTop:"show",paddingBottom:"show"},a)},bounceslide:function(a){this.slide(a,{easing:a.down?"easeOutBounce":"swing",duration:a.down?1E3:200})}}})})(jQuery); +;/* + * jQuery UI Autocomplete 1.8.10 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Autocomplete + * + * Depends: + * jquery.ui.core.js + * jquery.ui.widget.js + * jquery.ui.position.js + */ +(function(d){var e=0;d.widget("ui.autocomplete",{options:{appendTo:"body",delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null},pending:0,_create:function(){var a=this,b=this.element[0].ownerDocument,g;this.element.addClass("ui-autocomplete-input").attr("autocomplete","off").attr({role:"textbox","aria-autocomplete":"list","aria-haspopup":"true"}).bind("keydown.autocomplete",function(c){if(!(a.options.disabled||a.element.attr("readonly"))){g=false;var f=d.ui.keyCode; +switch(c.keyCode){case f.PAGE_UP:a._move("previousPage",c);break;case f.PAGE_DOWN:a._move("nextPage",c);break;case f.UP:a._move("previous",c);c.preventDefault();break;case f.DOWN:a._move("next",c);c.preventDefault();break;case f.ENTER:case f.NUMPAD_ENTER:if(a.menu.active){g=true;c.preventDefault()}case f.TAB:if(!a.menu.active)return;a.menu.select(c);break;case f.ESCAPE:a.element.val(a.term);a.close(c);break;default:clearTimeout(a.searching);a.searching=setTimeout(function(){if(a.term!=a.element.val()){a.selectedItem= +null;a.search(null,c)}},a.options.delay);break}}}).bind("keypress.autocomplete",function(c){if(g){g=false;c.preventDefault()}}).bind("focus.autocomplete",function(){if(!a.options.disabled){a.selectedItem=null;a.previous=a.element.val()}}).bind("blur.autocomplete",function(c){if(!a.options.disabled){clearTimeout(a.searching);a.closing=setTimeout(function(){a.close(c);a._change(c)},150)}});this._initSource();this.response=function(){return a._response.apply(a,arguments)};this.menu=d("
            ").addClass("ui-autocomplete").appendTo(d(this.options.appendTo|| +"body",b)[0]).mousedown(function(c){var f=a.menu.element[0];d(c.target).closest(".ui-menu-item").length||setTimeout(function(){d(document).one("mousedown",function(h){h.target!==a.element[0]&&h.target!==f&&!d.ui.contains(f,h.target)&&a.close()})},1);setTimeout(function(){clearTimeout(a.closing)},13)}).menu({focus:function(c,f){f=f.item.data("item.autocomplete");false!==a._trigger("focus",c,{item:f})&&/^key/.test(c.originalEvent.type)&&a.element.val(f.value)},selected:function(c,f){var h=f.item.data("item.autocomplete"), +i=a.previous;if(a.element[0]!==b.activeElement){a.element.focus();a.previous=i;setTimeout(function(){a.previous=i;a.selectedItem=h},1)}false!==a._trigger("select",c,{item:h})&&a.element.val(h.value);a.term=a.element.val();a.close(c);a.selectedItem=h},blur:function(){a.menu.element.is(":visible")&&a.element.val()!==a.term&&a.element.val(a.term)}}).zIndex(this.element.zIndex()+1).css({top:0,left:0}).hide().data("menu");d.fn.bgiframe&&this.menu.element.bgiframe()},destroy:function(){this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete").removeAttr("role").removeAttr("aria-autocomplete").removeAttr("aria-haspopup"); +this.menu.element.remove();d.Widget.prototype.destroy.call(this)},_setOption:function(a,b){d.Widget.prototype._setOption.apply(this,arguments);a==="source"&&this._initSource();if(a==="appendTo")this.menu.element.appendTo(d(b||"body",this.element[0].ownerDocument)[0]);a==="disabled"&&b&&this.xhr&&this.xhr.abort()},_initSource:function(){var a=this,b,g;if(d.isArray(this.options.source)){b=this.options.source;this.source=function(c,f){f(d.ui.autocomplete.filter(b,c.term))}}else if(typeof this.options.source=== +"string"){g=this.options.source;this.source=function(c,f){a.xhr&&a.xhr.abort();a.xhr=d.ajax({url:g,data:c,dataType:"json",autocompleteRequest:++e,success:function(h){this.autocompleteRequest===e&&f(h)},error:function(){this.autocompleteRequest===e&&f([])}})}}else this.source=this.options.source},search:function(a,b){a=a!=null?a:this.element.val();this.term=this.element.val();if(a.length").data("item.autocomplete",b).append(d("").text(b.label)).appendTo(a)},_move:function(a,b){if(this.menu.element.is(":visible"))if(this.menu.first()&&/^previous/.test(a)||this.menu.last()&&/^next/.test(a)){this.element.val(this.term);this.menu.deactivate()}else this.menu[a](b); +else this.search(null,b)},widget:function(){return this.menu.element}});d.extend(d.ui.autocomplete,{escapeRegex:function(a){return a.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")},filter:function(a,b){var g=new RegExp(d.ui.autocomplete.escapeRegex(b),"i");return d.grep(a,function(c){return g.test(c.label||c.value||c)})}})})(jQuery); +(function(d){d.widget("ui.menu",{_create:function(){var e=this;this.element.addClass("ui-menu ui-widget ui-widget-content ui-corner-all").attr({role:"listbox","aria-activedescendant":"ui-active-menuitem"}).click(function(a){if(d(a.target).closest(".ui-menu-item a").length){a.preventDefault();e.select(a)}});this.refresh()},refresh:function(){var e=this;this.element.children("li:not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","menuitem").children("a").addClass("ui-corner-all").attr("tabindex", +-1).mouseenter(function(a){e.activate(a,d(this).parent())}).mouseleave(function(){e.deactivate()})},activate:function(e,a){this.deactivate();if(this.hasScroll()){var b=a.offset().top-this.element.offset().top,g=this.element.attr("scrollTop"),c=this.element.height();if(b<0)this.element.attr("scrollTop",g+b);else b>=c&&this.element.attr("scrollTop",g+b-c+a.height())}this.active=a.eq(0).children("a").addClass("ui-state-hover").attr("id","ui-active-menuitem").end();this._trigger("focus",e,{item:a})}, +deactivate:function(){if(this.active){this.active.children("a").removeClass("ui-state-hover").removeAttr("id");this._trigger("blur");this.active=null}},next:function(e){this.move("next",".ui-menu-item:first",e)},previous:function(e){this.move("prev",".ui-menu-item:last",e)},first:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},last:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},move:function(e,a,b){if(this.active){e=this.active[e+"All"](".ui-menu-item").eq(0); +e.length?this.activate(b,e):this.activate(b,this.element.children(a))}else this.activate(b,this.element.children(a))},nextPage:function(e){if(this.hasScroll())if(!this.active||this.last())this.activate(e,this.element.children(".ui-menu-item:first"));else{var a=this.active.offset().top,b=this.element.height(),g=this.element.children(".ui-menu-item").filter(function(){var c=d(this).offset().top-a-b+d(this).height();return c<10&&c>-10});g.length||(g=this.element.children(".ui-menu-item:last"));this.activate(e, +g)}else this.activate(e,this.element.children(".ui-menu-item").filter(!this.active||this.last()?":first":":last"))},previousPage:function(e){if(this.hasScroll())if(!this.active||this.first())this.activate(e,this.element.children(".ui-menu-item:last"));else{var a=this.active.offset().top,b=this.element.height();result=this.element.children(".ui-menu-item").filter(function(){var g=d(this).offset().top-a+b-d(this).height();return g<10&&g>-10});result.length||(result=this.element.children(".ui-menu-item:first")); +this.activate(e,result)}else this.activate(e,this.element.children(".ui-menu-item").filter(!this.active||this.first()?":last":":first"))},hasScroll:function(){return this.element.height()").addClass("ui-button-text").html(this.options.label).appendTo(b.empty()).text(),d=this.options.icons,f=d.primary&&d.secondary,e=[];if(d.primary||d.secondary){e.push("ui-button-text-icon"+(f?"s":d.primary?"-primary":"-secondary"));d.primary&&b.prepend("");d.secondary&&b.append("");if(!this.options.text){e.push(f?"ui-button-icons-only":"ui-button-icon-only"); +b.removeClass("ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary");this.hasTitle||b.attr("title",c)}}else e.push("ui-button-text-only");b.addClass(e.join(" "))}}});a.widget("ui.buttonset",{options:{items:":button, :submit, :reset, :checkbox, :radio, a, :data(button)"},_create:function(){this.element.addClass("ui-buttonset")},_init:function(){this.refresh()},_setOption:function(b,c){b==="disabled"&&this.buttons.button("option",b,c);a.Widget.prototype._setOption.apply(this, +arguments)},refresh:function(){this.buttons=this.element.find(this.options.items).filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass("ui-corner-left").end().filter(":last").addClass("ui-corner-right").end().end()},destroy:function(){this.element.removeClass("ui-buttonset");this.buttons.map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy"); +a.Widget.prototype.destroy.call(this)}})})(jQuery); +;/* + * jQuery UI Dialog 1.8.10 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Dialog + * + * Depends: + * jquery.ui.core.js + * jquery.ui.widget.js + * jquery.ui.button.js + * jquery.ui.draggable.js + * jquery.ui.mouse.js + * jquery.ui.position.js + * jquery.ui.resizable.js + */ +(function(c,j){var k={buttons:true,height:true,maxHeight:true,maxWidth:true,minHeight:true,minWidth:true,width:true},l={maxHeight:true,maxWidth:true,minHeight:true,minWidth:true};c.widget("ui.dialog",{options:{autoOpen:true,buttons:{},closeOnEscape:true,closeText:"close",dialogClass:"",draggable:true,hide:null,height:"auto",maxHeight:false,maxWidth:false,minHeight:150,minWidth:150,modal:false,position:{my:"center",at:"center",collision:"fit",using:function(a){var b=c(this).css(a).offset().top;b<0&& +c(this).css("top",a.top-b)}},resizable:true,show:null,stack:true,title:"",width:300,zIndex:1E3},_create:function(){this.originalTitle=this.element.attr("title");if(typeof this.originalTitle!=="string")this.originalTitle="";this.options.title=this.options.title||this.originalTitle;var a=this,b=a.options,d=b.title||" ",e=c.ui.dialog.getTitleId(a.element),g=(a.uiDialog=c("
            ")).appendTo(document.body).hide().addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+b.dialogClass).css({zIndex:b.zIndex}).attr("tabIndex", +-1).css("outline",0).keydown(function(i){if(b.closeOnEscape&&i.keyCode&&i.keyCode===c.ui.keyCode.ESCAPE){a.close(i);i.preventDefault()}}).attr({role:"dialog","aria-labelledby":e}).mousedown(function(i){a.moveToTop(false,i)});a.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(g);var f=(a.uiDialogTitlebar=c("
            ")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(g),h=c('').addClass("ui-dialog-titlebar-close ui-corner-all").attr("role", +"button").hover(function(){h.addClass("ui-state-hover")},function(){h.removeClass("ui-state-hover")}).focus(function(){h.addClass("ui-state-focus")}).blur(function(){h.removeClass("ui-state-focus")}).click(function(i){a.close(i);return false}).appendTo(f);(a.uiDialogTitlebarCloseText=c("")).addClass("ui-icon ui-icon-closethick").text(b.closeText).appendTo(h);c("").addClass("ui-dialog-title").attr("id",e).html(d).prependTo(f);if(c.isFunction(b.beforeclose)&&!c.isFunction(b.beforeClose))b.beforeClose= +b.beforeclose;f.find("*").add(f).disableSelection();b.draggable&&c.fn.draggable&&a._makeDraggable();b.resizable&&c.fn.resizable&&a._makeResizable();a._createButtons(b.buttons);a._isOpen=false;c.fn.bgiframe&&g.bgiframe()},_init:function(){this.options.autoOpen&&this.open()},destroy:function(){var a=this;a.overlay&&a.overlay.destroy();a.uiDialog.hide();a.element.unbind(".dialog").removeData("dialog").removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body");a.uiDialog.remove();a.originalTitle&& +a.element.attr("title",a.originalTitle);return a},widget:function(){return this.uiDialog},close:function(a){var b=this,d,e;if(false!==b._trigger("beforeClose",a)){b.overlay&&b.overlay.destroy();b.uiDialog.unbind("keypress.ui-dialog");b._isOpen=false;if(b.options.hide)b.uiDialog.hide(b.options.hide,function(){b._trigger("close",a)});else{b.uiDialog.hide();b._trigger("close",a)}c.ui.dialog.overlay.resize();if(b.options.modal){d=0;c(".ui-dialog").each(function(){if(this!==b.uiDialog[0]){e=c(this).css("z-index"); +isNaN(e)||(d=Math.max(d,e))}});c.ui.dialog.maxZ=d}return b}},isOpen:function(){return this._isOpen},moveToTop:function(a,b){var d=this,e=d.options;if(e.modal&&!a||!e.stack&&!e.modal)return d._trigger("focus",b);if(e.zIndex>c.ui.dialog.maxZ)c.ui.dialog.maxZ=e.zIndex;if(d.overlay){c.ui.dialog.maxZ+=1;d.overlay.$el.css("z-index",c.ui.dialog.overlay.maxZ=c.ui.dialog.maxZ)}a={scrollTop:d.element.attr("scrollTop"),scrollLeft:d.element.attr("scrollLeft")};c.ui.dialog.maxZ+=1;d.uiDialog.css("z-index",c.ui.dialog.maxZ); +d.element.attr(a);d._trigger("focus",b);return d},open:function(){if(!this._isOpen){var a=this,b=a.options,d=a.uiDialog;a.overlay=b.modal?new c.ui.dialog.overlay(a):null;a._size();a._position(b.position);d.show(b.show);a.moveToTop(true);b.modal&&d.bind("keypress.ui-dialog",function(e){if(e.keyCode===c.ui.keyCode.TAB){var g=c(":tabbable",this),f=g.filter(":first");g=g.filter(":last");if(e.target===g[0]&&!e.shiftKey){f.focus(1);return false}else if(e.target===f[0]&&e.shiftKey){g.focus(1);return false}}}); +c(a.element.find(":tabbable").get().concat(d.find(".ui-dialog-buttonpane :tabbable").get().concat(d.get()))).eq(0).focus();a._isOpen=true;a._trigger("open");return a}},_createButtons:function(a){var b=this,d=false,e=c("
            ").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),g=c("
            ").addClass("ui-dialog-buttonset").appendTo(e);b.uiDialog.find(".ui-dialog-buttonpane").remove();typeof a==="object"&&a!==null&&c.each(a,function(){return!(d=true)});if(d){c.each(a,function(f, +h){h=c.isFunction(h)?{click:h,text:f}:h;f=c('').attr(h,true).unbind("click").click(function(){h.click.apply(b.element[0],arguments)}).appendTo(g);c.fn.button&&f.button()});e.appendTo(b.uiDialog)}},_makeDraggable:function(){function a(f){return{position:f.position,offset:f.offset}}var b=this,d=b.options,e=c(document),g;b.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(f,h){g= +d.height==="auto"?"auto":c(this).height();c(this).height(c(this).height()).addClass("ui-dialog-dragging");b._trigger("dragStart",f,a(h))},drag:function(f,h){b._trigger("drag",f,a(h))},stop:function(f,h){d.position=[h.position.left-e.scrollLeft(),h.position.top-e.scrollTop()];c(this).removeClass("ui-dialog-dragging").height(g);b._trigger("dragStop",f,a(h));c.ui.dialog.overlay.resize()}})},_makeResizable:function(a){function b(f){return{originalPosition:f.originalPosition,originalSize:f.originalSize, +position:f.position,size:f.size}}a=a===j?this.options.resizable:a;var d=this,e=d.options,g=d.uiDialog.css("position");a=typeof a==="string"?a:"n,e,s,w,se,sw,ne,nw";d.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:d.element,maxWidth:e.maxWidth,maxHeight:e.maxHeight,minWidth:e.minWidth,minHeight:d._minHeight(),handles:a,start:function(f,h){c(this).addClass("ui-dialog-resizing");d._trigger("resizeStart",f,b(h))},resize:function(f,h){d._trigger("resize",f,b(h))},stop:function(f, +h){c(this).removeClass("ui-dialog-resizing");e.height=c(this).height();e.width=c(this).width();d._trigger("resizeStop",f,b(h));c.ui.dialog.overlay.resize()}}).css("position",g).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_minHeight:function(){var a=this.options;return a.height==="auto"?a.minHeight:Math.min(a.minHeight,a.height)},_position:function(a){var b=[],d=[0,0],e;if(a){if(typeof a==="string"||typeof a==="object"&&"0"in a){b=a.split?a.split(" "):[a[0],a[1]];if(b.length=== +1)b[1]=b[0];c.each(["left","top"],function(g,f){if(+b[g]===b[g]){d[g]=b[g];b[g]=f}});a={my:b.join(" "),at:b.join(" "),offset:d.join(" ")}}a=c.extend({},c.ui.dialog.prototype.options.position,a)}else a=c.ui.dialog.prototype.options.position;(e=this.uiDialog.is(":visible"))||this.uiDialog.show();this.uiDialog.css({top:0,left:0}).position(c.extend({of:window},a));e||this.uiDialog.hide()},_setOptions:function(a){var b=this,d={},e=false;c.each(a,function(g,f){b._setOption(g,f);if(g in k)e=true;if(g in +l)d[g]=f});e&&this._size();this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option",d)},_setOption:function(a,b){var d=this,e=d.uiDialog;switch(a){case "beforeclose":a="beforeClose";break;case "buttons":d._createButtons(b);break;case "closeText":d.uiDialogTitlebarCloseText.text(""+b);break;case "dialogClass":e.removeClass(d.options.dialogClass).addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+b);break;case "disabled":b?e.addClass("ui-dialog-disabled"):e.removeClass("ui-dialog-disabled"); +break;case "draggable":var g=e.is(":data(draggable)");g&&!b&&e.draggable("destroy");!g&&b&&d._makeDraggable();break;case "position":d._position(b);break;case "resizable":(g=e.is(":data(resizable)"))&&!b&&e.resizable("destroy");g&&typeof b==="string"&&e.resizable("option","handles",b);!g&&b!==false&&d._makeResizable(b);break;case "title":c(".ui-dialog-title",d.uiDialogTitlebar).html(""+(b||" "));break}c.Widget.prototype._setOption.apply(d,arguments)},_size:function(){var a=this.options,b,d,e= +this.uiDialog.is(":visible");this.element.show().css({width:"auto",minHeight:0,height:0});if(a.minWidth>a.width)a.width=a.minWidth;b=this.uiDialog.css({height:"auto",width:a.width}).height();d=Math.max(0,a.minHeight-b);if(a.height==="auto")if(c.support.minHeight)this.element.css({minHeight:d,height:"auto"});else{this.uiDialog.show();a=this.element.css("height","auto").height();e||this.uiDialog.hide();this.element.height(Math.max(a,d))}else this.element.height(Math.max(a.height-b,0));this.uiDialog.is(":data(resizable)")&& +this.uiDialog.resizable("option","minHeight",this._minHeight())}});c.extend(c.ui.dialog,{version:"1.8.10",uuid:0,maxZ:0,getTitleId:function(a){a=a.attr("id");if(!a){this.uuid+=1;a=this.uuid}return"ui-dialog-title-"+a},overlay:function(a){this.$el=c.ui.dialog.overlay.create(a)}});c.extend(c.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:c.map("focus,mousedown,mouseup,keydown,keypress,click".split(","),function(a){return a+".dialog-overlay"}).join(" "),create:function(a){if(this.instances.length=== +0){setTimeout(function(){c.ui.dialog.overlay.instances.length&&c(document).bind(c.ui.dialog.overlay.events,function(d){if(c(d.target).zIndex()").addClass("ui-widget-overlay")).appendTo(document.body).css({width:this.width(), +height:this.height()});c.fn.bgiframe&&b.bgiframe();this.instances.push(b);return b},destroy:function(a){var b=c.inArray(a,this.instances);b!=-1&&this.oldInstances.push(this.instances.splice(b,1)[0]);this.instances.length===0&&c([document,window]).unbind(".dialog-overlay");a.remove();var d=0;c.each(this.instances,function(){d=Math.max(d,this.css("z-index"))});this.maxZ=d},height:function(){var a,b;if(c.browser.msie&&c.browser.version<7){a=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight); +b=Math.max(document.documentElement.offsetHeight,document.body.offsetHeight);return a");if(!a.values)a.values=[this._valueMin(),this._valueMin()];if(a.values.length&&a.values.length!==2)a.values=[a.values[0],a.values[0]]}else this.range=d("
            ");this.range.appendTo(this.element).addClass("ui-slider-range");if(a.range==="min"||a.range==="max")this.range.addClass("ui-slider-range-"+a.range);this.range.addClass("ui-widget-header")}d(".ui-slider-handle",this.element).length===0&&d("").appendTo(this.element).addClass("ui-slider-handle"); +if(a.values&&a.values.length)for(;d(".ui-slider-handle",this.element).length").appendTo(this.element).addClass("ui-slider-handle");this.handles=d(".ui-slider-handle",this.element).addClass("ui-state-default ui-corner-all");this.handle=this.handles.eq(0);this.handles.add(this.range).filter("a").click(function(c){c.preventDefault()}).hover(function(){a.disabled||d(this).addClass("ui-state-hover")},function(){d(this).removeClass("ui-state-hover")}).focus(function(){if(a.disabled)d(this).blur(); +else{d(".ui-slider .ui-state-focus").removeClass("ui-state-focus");d(this).addClass("ui-state-focus")}}).blur(function(){d(this).removeClass("ui-state-focus")});this.handles.each(function(c){d(this).data("index.ui-slider-handle",c)});this.handles.keydown(function(c){var e=true,f=d(this).data("index.ui-slider-handle"),h,g,i;if(!b.options.disabled){switch(c.keyCode){case d.ui.keyCode.HOME:case d.ui.keyCode.END:case d.ui.keyCode.PAGE_UP:case d.ui.keyCode.PAGE_DOWN:case d.ui.keyCode.UP:case d.ui.keyCode.RIGHT:case d.ui.keyCode.DOWN:case d.ui.keyCode.LEFT:e= +false;if(!b._keySliding){b._keySliding=true;d(this).addClass("ui-state-active");h=b._start(c,f);if(h===false)return}break}i=b.options.step;h=b.options.values&&b.options.values.length?(g=b.values(f)):(g=b.value());switch(c.keyCode){case d.ui.keyCode.HOME:g=b._valueMin();break;case d.ui.keyCode.END:g=b._valueMax();break;case d.ui.keyCode.PAGE_UP:g=b._trimAlignValue(h+(b._valueMax()-b._valueMin())/5);break;case d.ui.keyCode.PAGE_DOWN:g=b._trimAlignValue(h-(b._valueMax()-b._valueMin())/5);break;case d.ui.keyCode.UP:case d.ui.keyCode.RIGHT:if(h=== +b._valueMax())return;g=b._trimAlignValue(h+i);break;case d.ui.keyCode.DOWN:case d.ui.keyCode.LEFT:if(h===b._valueMin())return;g=b._trimAlignValue(h-i);break}b._slide(c,f,g);return e}}).keyup(function(c){var e=d(this).data("index.ui-slider-handle");if(b._keySliding){b._keySliding=false;b._stop(c,e);b._change(c,e);d(this).removeClass("ui-state-active")}});this._refreshValue();this._animateOff=false},destroy:function(){this.handles.remove();this.range.remove();this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-slider-disabled ui-widget ui-widget-content ui-corner-all").removeData("slider").unbind(".slider"); +this._mouseDestroy();return this},_mouseCapture:function(b){var a=this.options,c,e,f,h,g;if(a.disabled)return false;this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()};this.elementOffset=this.element.offset();c=this._normValueFromMouse({x:b.pageX,y:b.pageY});e=this._valueMax()-this._valueMin()+1;h=this;this.handles.each(function(i){var j=Math.abs(c-h.values(i));if(e>j){e=j;f=d(this);g=i}});if(a.range===true&&this.values(1)===a.min){g+=1;f=d(this.handles[g])}if(this._start(b, +g)===false)return false;this._mouseSliding=true;h._handleIndex=g;f.addClass("ui-state-active").focus();a=f.offset();this._clickOffset=!d(b.target).parents().andSelf().is(".ui-slider-handle")?{left:0,top:0}:{left:b.pageX-a.left-f.width()/2,top:b.pageY-a.top-f.height()/2-(parseInt(f.css("borderTopWidth"),10)||0)-(parseInt(f.css("borderBottomWidth"),10)||0)+(parseInt(f.css("marginTop"),10)||0)};this.handles.hasClass("ui-state-hover")||this._slide(b,g,c);return this._animateOff=true},_mouseStart:function(){return true}, +_mouseDrag:function(b){var a=this._normValueFromMouse({x:b.pageX,y:b.pageY});this._slide(b,this._handleIndex,a);return false},_mouseStop:function(b){this.handles.removeClass("ui-state-active");this._mouseSliding=false;this._stop(b,this._handleIndex);this._change(b,this._handleIndex);this._clickOffset=this._handleIndex=null;return this._animateOff=false},_detectOrientation:function(){this.orientation=this.options.orientation==="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(b){var a; +if(this.orientation==="horizontal"){a=this.elementSize.width;b=b.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)}else{a=this.elementSize.height;b=b.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)}a=b/a;if(a>1)a=1;if(a<0)a=0;if(this.orientation==="vertical")a=1-a;b=this._valueMax()-this._valueMin();return this._trimAlignValue(this._valueMin()+a*b)},_start:function(b,a){var c={handle:this.handles[a],value:this.value()};if(this.options.values&&this.options.values.length){c.value= +this.values(a);c.values=this.values()}return this._trigger("start",b,c)},_slide:function(b,a,c){var e;if(this.options.values&&this.options.values.length){e=this.values(a?0:1);if(this.options.values.length===2&&this.options.range===true&&(a===0&&c>e||a===1&&c1){this.options.values[b]=this._trimAlignValue(a);this._refreshValue();this._change(null,b)}if(arguments.length)if(d.isArray(arguments[0])){c=this.options.values;e=arguments[0];for(f=0;f=this._valueMax())return this._valueMax();var a=this.options.step>0?this.options.step:1,c=(b-this._valueMin())%a;alignValue=b-c;if(Math.abs(c)*2>=a)alignValue+=c>0?a:-a;return parseFloat(alignValue.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max}, +_refreshValue:function(){var b=this.options.range,a=this.options,c=this,e=!this._animateOff?a.animate:false,f,h={},g,i,j,l;if(this.options.values&&this.options.values.length)this.handles.each(function(k){f=(c.values(k)-c._valueMin())/(c._valueMax()-c._valueMin())*100;h[c.orientation==="horizontal"?"left":"bottom"]=f+"%";d(this).stop(1,1)[e?"animate":"css"](h,a.animate);if(c.options.range===true)if(c.orientation==="horizontal"){if(k===0)c.range.stop(1,1)[e?"animate":"css"]({left:f+"%"},a.animate); +if(k===1)c.range[e?"animate":"css"]({width:f-g+"%"},{queue:false,duration:a.animate})}else{if(k===0)c.range.stop(1,1)[e?"animate":"css"]({bottom:f+"%"},a.animate);if(k===1)c.range[e?"animate":"css"]({height:f-g+"%"},{queue:false,duration:a.animate})}g=f});else{i=this.value();j=this._valueMin();l=this._valueMax();f=l!==j?(i-j)/(l-j)*100:0;h[c.orientation==="horizontal"?"left":"bottom"]=f+"%";this.handle.stop(1,1)[e?"animate":"css"](h,a.animate);if(b==="min"&&this.orientation==="horizontal")this.range.stop(1, +1)[e?"animate":"css"]({width:f+"%"},a.animate);if(b==="max"&&this.orientation==="horizontal")this.range[e?"animate":"css"]({width:100-f+"%"},{queue:false,duration:a.animate});if(b==="min"&&this.orientation==="vertical")this.range.stop(1,1)[e?"animate":"css"]({height:f+"%"},a.animate);if(b==="max"&&this.orientation==="vertical")this.range[e?"animate":"css"]({height:100-f+"%"},{queue:false,duration:a.animate})}}});d.extend(d.ui.slider,{version:"1.8.10"})})(jQuery); +;/* + * jQuery UI Tabs 1.8.10 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Tabs + * + * Depends: + * jquery.ui.core.js + * jquery.ui.widget.js + */ +(function(d,p){function u(){return++v}function w(){return++x}var v=0,x=0;d.widget("ui.tabs",{options:{add:null,ajaxOptions:null,cache:false,cookie:null,collapsible:false,disable:null,disabled:[],enable:null,event:"click",fx:null,idPrefix:"ui-tabs-",load:null,panelTemplate:"
            ",remove:null,select:null,show:null,spinner:"Loading…",tabTemplate:"
          • #{label}
          • "},_create:function(){this._tabify(true)},_setOption:function(b,e){if(b=="selected")this.options.collapsible&& +e==this.options.selected||this.select(e);else{this.options[b]=e;this._tabify()}},_tabId:function(b){return b.title&&b.title.replace(/\s/g,"_").replace(/[^\w\u00c0-\uFFFF-]/g,"")||this.options.idPrefix+u()},_sanitizeSelector:function(b){return b.replace(/:/g,"\\:")},_cookie:function(){var b=this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+w());return d.cookie.apply(null,[b].concat(d.makeArray(arguments)))},_ui:function(b,e){return{tab:b,panel:e,index:this.anchors.index(b)}},_cleanup:function(){this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function(){var b= +d(this);b.html(b.data("label.tabs")).removeData("label.tabs")})},_tabify:function(b){function e(g,f){g.css("display","");!d.support.opacity&&f.opacity&&g[0].style.removeAttribute("filter")}var a=this,c=this.options,h=/^#.+/;this.list=this.element.find("ol,ul").eq(0);this.lis=d(" > li:has(a[href])",this.list);this.anchors=this.lis.map(function(){return d("a",this)[0]});this.panels=d([]);this.anchors.each(function(g,f){var i=d(f).attr("href"),l=i.split("#")[0],q;if(l&&(l===location.toString().split("#")[0]|| +(q=d("base")[0])&&l===q.href)){i=f.hash;f.href=i}if(h.test(i))a.panels=a.panels.add(a.element.find(a._sanitizeSelector(i)));else if(i&&i!=="#"){d.data(f,"href.tabs",i);d.data(f,"load.tabs",i.replace(/#.*$/,""));i=a._tabId(f);f.href="#"+i;f=a.element.find("#"+i);if(!f.length){f=d(c.panelTemplate).attr("id",i).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(a.panels[g-1]||a.list);f.data("destroy.tabs",true)}a.panels=a.panels.add(f)}else c.disabled.push(g)});if(b){this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all"); +this.list.addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.lis.addClass("ui-state-default ui-corner-top");this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom");if(c.selected===p){location.hash&&this.anchors.each(function(g,f){if(f.hash==location.hash){c.selected=g;return false}});if(typeof c.selected!=="number"&&c.cookie)c.selected=parseInt(a._cookie(),10);if(typeof c.selected!=="number"&&this.lis.filter(".ui-tabs-selected").length)c.selected= +this.lis.index(this.lis.filter(".ui-tabs-selected"));c.selected=c.selected||(this.lis.length?0:-1)}else if(c.selected===null)c.selected=-1;c.selected=c.selected>=0&&this.anchors[c.selected]||c.selected<0?c.selected:0;c.disabled=d.unique(c.disabled.concat(d.map(this.lis.filter(".ui-state-disabled"),function(g){return a.lis.index(g)}))).sort();d.inArray(c.selected,c.disabled)!=-1&&c.disabled.splice(d.inArray(c.selected,c.disabled),1);this.panels.addClass("ui-tabs-hide");this.lis.removeClass("ui-tabs-selected ui-state-active"); +if(c.selected>=0&&this.anchors.length){a.element.find(a._sanitizeSelector(a.anchors[c.selected].hash)).removeClass("ui-tabs-hide");this.lis.eq(c.selected).addClass("ui-tabs-selected ui-state-active");a.element.queue("tabs",function(){a._trigger("show",null,a._ui(a.anchors[c.selected],a.element.find(a._sanitizeSelector(a.anchors[c.selected].hash))[0]))});this.load(c.selected)}d(window).bind("unload",function(){a.lis.add(a.anchors).unbind(".tabs");a.lis=a.anchors=a.panels=null})}else c.selected=this.lis.index(this.lis.filter(".ui-tabs-selected")); +this.element[c.collapsible?"addClass":"removeClass"]("ui-tabs-collapsible");c.cookie&&this._cookie(c.selected,c.cookie);b=0;for(var j;j=this.lis[b];b++)d(j)[d.inArray(b,c.disabled)!=-1&&!d(j).hasClass("ui-tabs-selected")?"addClass":"removeClass"]("ui-state-disabled");c.cache===false&&this.anchors.removeData("cache.tabs");this.lis.add(this.anchors).unbind(".tabs");if(c.event!=="mouseover"){var k=function(g,f){f.is(":not(.ui-state-disabled)")&&f.addClass("ui-state-"+g)},n=function(g,f){f.removeClass("ui-state-"+ +g)};this.lis.bind("mouseover.tabs",function(){k("hover",d(this))});this.lis.bind("mouseout.tabs",function(){n("hover",d(this))});this.anchors.bind("focus.tabs",function(){k("focus",d(this).closest("li"))});this.anchors.bind("blur.tabs",function(){n("focus",d(this).closest("li"))})}var m,o;if(c.fx)if(d.isArray(c.fx)){m=c.fx[0];o=c.fx[1]}else m=o=c.fx;var r=o?function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.hide().removeClass("ui-tabs-hide").animate(o,o.duration||"normal", +function(){e(f,o);a._trigger("show",null,a._ui(g,f[0]))})}:function(g,f){d(g).closest("li").addClass("ui-tabs-selected ui-state-active");f.removeClass("ui-tabs-hide");a._trigger("show",null,a._ui(g,f[0]))},s=m?function(g,f){f.animate(m,m.duration||"normal",function(){a.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");e(f,m);a.element.dequeue("tabs")})}:function(g,f){a.lis.removeClass("ui-tabs-selected ui-state-active");f.addClass("ui-tabs-hide");a.element.dequeue("tabs")}; +this.anchors.bind(c.event+".tabs",function(){var g=this,f=d(g).closest("li"),i=a.panels.filter(":not(.ui-tabs-hide)"),l=a.element.find(a._sanitizeSelector(g.hash));if(f.hasClass("ui-tabs-selected")&&!c.collapsible||f.hasClass("ui-state-disabled")||f.hasClass("ui-state-processing")||a.panels.filter(":animated").length||a._trigger("select",null,a._ui(this,l[0]))===false){this.blur();return false}c.selected=a.anchors.index(this);a.abort();if(c.collapsible)if(f.hasClass("ui-tabs-selected")){c.selected= +-1;c.cookie&&a._cookie(c.selected,c.cookie);a.element.queue("tabs",function(){s(g,i)}).dequeue("tabs");this.blur();return false}else if(!i.length){c.cookie&&a._cookie(c.selected,c.cookie);a.element.queue("tabs",function(){r(g,l)});a.load(a.anchors.index(this));this.blur();return false}c.cookie&&a._cookie(c.selected,c.cookie);if(l.length){i.length&&a.element.queue("tabs",function(){s(g,i)});a.element.queue("tabs",function(){r(g,l)});a.load(a.anchors.index(this))}else throw"jQuery UI Tabs: Mismatching fragment identifier."; +d.browser.msie&&this.blur()});this.anchors.bind("click.tabs",function(){return false})},_getIndex:function(b){if(typeof b=="string")b=this.anchors.index(this.anchors.filter("[href$="+b+"]"));return b},destroy:function(){var b=this.options;this.abort();this.element.unbind(".tabs").removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible").removeData("tabs");this.list.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all");this.anchors.each(function(){var e= +d.data(this,"href.tabs");if(e)this.href=e;var a=d(this).unbind(".tabs");d.each(["href","load","cache"],function(c,h){a.removeData(h+".tabs")})});this.lis.unbind(".tabs").add(this.panels).each(function(){d.data(this,"destroy.tabs")?d(this).remove():d(this).removeClass("ui-state-default ui-corner-top ui-tabs-selected ui-state-active ui-state-hover ui-state-focus ui-state-disabled ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide")});b.cookie&&this._cookie(null,b.cookie);return this},add:function(b, +e,a){if(a===p)a=this.anchors.length;var c=this,h=this.options;e=d(h.tabTemplate.replace(/#\{href\}/g,b).replace(/#\{label\}/g,e));b=!b.indexOf("#")?b.replace("#",""):this._tabId(d("a",e)[0]);e.addClass("ui-state-default ui-corner-top").data("destroy.tabs",true);var j=c.element.find("#"+b);j.length||(j=d(h.panelTemplate).attr("id",b).data("destroy.tabs",true));j.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide");if(a>=this.lis.length){e.appendTo(this.list);j.appendTo(this.list[0].parentNode)}else{e.insertBefore(this.lis[a]); +j.insertBefore(this.panels[a])}h.disabled=d.map(h.disabled,function(k){return k>=a?++k:k});this._tabify();if(this.anchors.length==1){h.selected=0;e.addClass("ui-tabs-selected ui-state-active");j.removeClass("ui-tabs-hide");this.element.queue("tabs",function(){c._trigger("show",null,c._ui(c.anchors[0],c.panels[0]))});this.load(0)}this._trigger("add",null,this._ui(this.anchors[a],this.panels[a]));return this},remove:function(b){b=this._getIndex(b);var e=this.options,a=this.lis.eq(b).remove(),c=this.panels.eq(b).remove(); +if(a.hasClass("ui-tabs-selected")&&this.anchors.length>1)this.select(b+(b+1=b?--h:h});this._tabify();this._trigger("remove",null,this._ui(a.find("a")[0],c[0]));return this},enable:function(b){b=this._getIndex(b);var e=this.options;if(d.inArray(b,e.disabled)!=-1){this.lis.eq(b).removeClass("ui-state-disabled");e.disabled=d.grep(e.disabled,function(a){return a!=b});this._trigger("enable",null, +this._ui(this.anchors[b],this.panels[b]));return this}},disable:function(b){b=this._getIndex(b);var e=this.options;if(b!=e.selected){this.lis.eq(b).addClass("ui-state-disabled");e.disabled.push(b);e.disabled.sort();this._trigger("disable",null,this._ui(this.anchors[b],this.panels[b]))}return this},select:function(b){b=this._getIndex(b);if(b==-1)if(this.options.collapsible&&this.options.selected!=-1)b=this.options.selected;else return this;this.anchors.eq(b).trigger(this.options.event+".tabs");return this}, +load:function(b){b=this._getIndex(b);var e=this,a=this.options,c=this.anchors.eq(b)[0],h=d.data(c,"load.tabs");this.abort();if(!h||this.element.queue("tabs").length!==0&&d.data(c,"cache.tabs"))this.element.dequeue("tabs");else{this.lis.eq(b).addClass("ui-state-processing");if(a.spinner){var j=d("span",c);j.data("label.tabs",j.html()).html(a.spinner)}this.xhr=d.ajax(d.extend({},a.ajaxOptions,{url:h,success:function(k,n){e.element.find(e._sanitizeSelector(c.hash)).html(k);e._cleanup();a.cache&&d.data(c, +"cache.tabs",true);e._trigger("load",null,e._ui(e.anchors[b],e.panels[b]));try{a.ajaxOptions.success(k,n)}catch(m){}},error:function(k,n){e._cleanup();e._trigger("load",null,e._ui(e.anchors[b],e.panels[b]));try{a.ajaxOptions.error(k,n,b,c)}catch(m){}}}));e.element.dequeue("tabs");return this}},abort:function(){this.element.queue([]);this.panels.stop(false,true);this.element.queue("tabs",this.element.queue("tabs").splice(-2,2));if(this.xhr){this.xhr.abort();delete this.xhr}this._cleanup();return this}, +url:function(b,e){this.anchors.eq(b).removeData("cache.tabs").data("load.tabs",e);return this},length:function(){return this.anchors.length}});d.extend(d.ui.tabs,{version:"1.8.10"});d.extend(d.ui.tabs.prototype,{rotation:null,rotate:function(b,e){var a=this,c=this.options,h=a._rotate||(a._rotate=function(j){clearTimeout(a.rotation);a.rotation=setTimeout(function(){var k=c.selected;a.select(++k')}function E(a,b){d.extend(a,b);for(var c in b)if(b[c]== +null||b[c]==G)a[c]=b[c];return a}d.extend(d.ui,{datepicker:{version:"1.8.10"}});var y=(new Date).getTime();d.extend(K.prototype,{markerClassName:"hasDatepicker",log:function(){this.debug&&console.log.apply("",arguments)},_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(a){E(this._defaults,a||{});return this},_attachDatepicker:function(a,b){var c=null;for(var e in this._defaults){var f=a.getAttribute("date:"+e);if(f){c=c||{};try{c[e]=eval(f)}catch(h){c[e]=f}}}e=a.nodeName.toLowerCase(); +f=e=="div"||e=="span";if(!a.id){this.uuid+=1;a.id="dp"+this.uuid}var i=this._newInst(d(a),f);i.settings=d.extend({},b||{},c||{});if(e=="input")this._connectDatepicker(a,i);else f&&this._inlineDatepicker(a,i)},_newInst:function(a,b){return{id:a[0].id.replace(/([^A-Za-z0-9_-])/g,"\\\\$1"),input:a,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:b,dpDiv:!b?this.dpDiv:d('
            ')}}, +_connectDatepicker:function(a,b){var c=d(a);b.append=d([]);b.trigger=d([]);if(!c.hasClass(this.markerClassName)){this._attachments(c,b);c.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp).bind("setData.datepicker",function(e,f,h){b.settings[f]=h}).bind("getData.datepicker",function(e,f){return this._get(b,f)});this._autoSize(b);d.data(a,"datepicker",b)}},_attachments:function(a,b){var c=this._get(b,"appendText"),e=this._get(b,"isRTL");b.append&& +b.append.remove();if(c){b.append=d(''+c+"");a[e?"before":"after"](b.append)}a.unbind("focus",this._showDatepicker);b.trigger&&b.trigger.remove();c=this._get(b,"showOn");if(c=="focus"||c=="both")a.focus(this._showDatepicker);if(c=="button"||c=="both"){c=this._get(b,"buttonText");var f=this._get(b,"buttonImage");b.trigger=d(this._get(b,"buttonImageOnly")?d("").addClass(this._triggerClass).attr({src:f,alt:c,title:c}):d('').addClass(this._triggerClass).html(f== +""?c:d("").attr({src:f,alt:c,title:c})));a[e?"before":"after"](b.trigger);b.trigger.click(function(){d.datepicker._datepickerShowing&&d.datepicker._lastInput==a[0]?d.datepicker._hideDatepicker():d.datepicker._showDatepicker(a[0]);return false})}},_autoSize:function(a){if(this._get(a,"autoSize")&&!a.inline){var b=new Date(2009,11,20),c=this._get(a,"dateFormat");if(c.match(/[DM]/)){var e=function(f){for(var h=0,i=0,g=0;gh){h=f[g].length;i=g}return i};b.setMonth(e(this._get(a, +c.match(/MM/)?"monthNames":"monthNamesShort")));b.setDate(e(this._get(a,c.match(/DD/)?"dayNames":"dayNamesShort"))+20-b.getDay())}a.input.attr("size",this._formatDate(a,b).length)}},_inlineDatepicker:function(a,b){var c=d(a);if(!c.hasClass(this.markerClassName)){c.addClass(this.markerClassName).append(b.dpDiv).bind("setData.datepicker",function(e,f,h){b.settings[f]=h}).bind("getData.datepicker",function(e,f){return this._get(b,f)});d.data(a,"datepicker",b);this._setDate(b,this._getDefaultDate(b), +true);this._updateDatepicker(b);this._updateAlternate(b);b.dpDiv.show()}},_dialogDatepicker:function(a,b,c,e,f){a=this._dialogInst;if(!a){this.uuid+=1;this._dialogInput=d('');this._dialogInput.keydown(this._doKeyDown);d("body").append(this._dialogInput);a=this._dialogInst=this._newInst(this._dialogInput,false);a.settings={};d.data(this._dialogInput[0],"datepicker",a)}E(a.settings,e||{}); +b=b&&b.constructor==Date?this._formatDate(a,b):b;this._dialogInput.val(b);this._pos=f?f.length?f:[f.pageX,f.pageY]:null;if(!this._pos)this._pos=[document.documentElement.clientWidth/2-100+(document.documentElement.scrollLeft||document.body.scrollLeft),document.documentElement.clientHeight/2-150+(document.documentElement.scrollTop||document.body.scrollTop)];this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px");a.settings.onSelect=c;this._inDialog=true;this.dpDiv.addClass(this._dialogClass); +this._showDatepicker(this._dialogInput[0]);d.blockUI&&d.blockUI(this.dpDiv);d.data(this._dialogInput[0],"datepicker",a);return this},_destroyDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();d.removeData(a,"datepicker");if(e=="input"){c.append.remove();c.trigger.remove();b.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup", +this._doKeyUp)}else if(e=="div"||e=="span")b.removeClass(this.markerClassName).empty()}},_enableDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();if(e=="input"){a.disabled=false;c.trigger.filter("button").each(function(){this.disabled=false}).end().filter("img").css({opacity:"1.0",cursor:""})}else if(e=="div"||e=="span")b.children("."+this._inlineClass).children().removeClass("ui-state-disabled");this._disabledInputs=d.map(this._disabledInputs, +function(f){return f==a?null:f})}},_disableDatepicker:function(a){var b=d(a),c=d.data(a,"datepicker");if(b.hasClass(this.markerClassName)){var e=a.nodeName.toLowerCase();if(e=="input"){a.disabled=true;c.trigger.filter("button").each(function(){this.disabled=true}).end().filter("img").css({opacity:"0.5",cursor:"default"})}else if(e=="div"||e=="span")b.children("."+this._inlineClass).children().addClass("ui-state-disabled");this._disabledInputs=d.map(this._disabledInputs,function(f){return f==a?null: +f});this._disabledInputs[this._disabledInputs.length]=a}},_isDisabledDatepicker:function(a){if(!a)return false;for(var b=0;b-1}},_doKeyUp:function(a){a=d.datepicker._getInst(a.target);if(a.input.val()!=a.lastVal)try{if(d.datepicker.parseDate(d.datepicker._get(a,"dateFormat"),a.input?a.input.val():null,d.datepicker._getFormatConfig(a))){d.datepicker._setDateFromField(a);d.datepicker._updateAlternate(a);d.datepicker._updateDatepicker(a)}}catch(b){d.datepicker.log(b)}return true}, +_showDatepicker:function(a){a=a.target||a;if(a.nodeName.toLowerCase()!="input")a=d("input",a.parentNode)[0];if(!(d.datepicker._isDisabledDatepicker(a)||d.datepicker._lastInput==a)){var b=d.datepicker._getInst(a);d.datepicker._curInst&&d.datepicker._curInst!=b&&d.datepicker._curInst.dpDiv.stop(true,true);var c=d.datepicker._get(b,"beforeShow");E(b.settings,c?c.apply(a,[a,b]):{});b.lastVal=null;d.datepicker._lastInput=a;d.datepicker._setDateFromField(b);if(d.datepicker._inDialog)a.value="";if(!d.datepicker._pos){d.datepicker._pos= +d.datepicker._findPos(a);d.datepicker._pos[1]+=a.offsetHeight}var e=false;d(a).parents().each(function(){e|=d(this).css("position")=="fixed";return!e});if(e&&d.browser.opera){d.datepicker._pos[0]-=document.documentElement.scrollLeft;d.datepicker._pos[1]-=document.documentElement.scrollTop}c={left:d.datepicker._pos[0],top:d.datepicker._pos[1]};d.datepicker._pos=null;b.dpDiv.empty();b.dpDiv.css({position:"absolute",display:"block",top:"-1000px"});d.datepicker._updateDatepicker(b);c=d.datepicker._checkOffset(b, +c,e);b.dpDiv.css({position:d.datepicker._inDialog&&d.blockUI?"static":e?"fixed":"absolute",display:"none",left:c.left+"px",top:c.top+"px"});if(!b.inline){c=d.datepicker._get(b,"showAnim");var f=d.datepicker._get(b,"duration"),h=function(){d.datepicker._datepickerShowing=true;var i=b.dpDiv.find("iframe.ui-datepicker-cover");if(i.length){var g=d.datepicker._getBorders(b.dpDiv);i.css({left:-g[0],top:-g[1],width:b.dpDiv.outerWidth(),height:b.dpDiv.outerHeight()})}};b.dpDiv.zIndex(d(a).zIndex()+1);d.effects&& +d.effects[c]?b.dpDiv.show(c,d.datepicker._get(b,"showOptions"),f,h):b.dpDiv[c||"show"](c?f:null,h);if(!c||!f)h();b.input.is(":visible")&&!b.input.is(":disabled")&&b.input.focus();d.datepicker._curInst=b}}},_updateDatepicker:function(a){var b=this,c=d.datepicker._getBorders(a.dpDiv);a.dpDiv.empty().append(this._generateHTML(a));var e=a.dpDiv.find("iframe.ui-datepicker-cover");e.length&&e.css({left:-c[0],top:-c[1],width:a.dpDiv.outerWidth(),height:a.dpDiv.outerHeight()});a.dpDiv.find("button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a").bind("mouseout", +function(){d(this).removeClass("ui-state-hover");this.className.indexOf("ui-datepicker-prev")!=-1&&d(this).removeClass("ui-datepicker-prev-hover");this.className.indexOf("ui-datepicker-next")!=-1&&d(this).removeClass("ui-datepicker-next-hover")}).bind("mouseover",function(){if(!b._isDisabledDatepicker(a.inline?a.dpDiv.parent()[0]:a.input[0])){d(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover");d(this).addClass("ui-state-hover");this.className.indexOf("ui-datepicker-prev")!= +-1&&d(this).addClass("ui-datepicker-prev-hover");this.className.indexOf("ui-datepicker-next")!=-1&&d(this).addClass("ui-datepicker-next-hover")}}).end().find("."+this._dayOverClass+" a").trigger("mouseover").end();c=this._getNumberOfMonths(a);e=c[1];e>1?a.dpDiv.addClass("ui-datepicker-multi-"+e).css("width",17*e+"em"):a.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width("");a.dpDiv[(c[0]!=1||c[1]!=1?"add":"remove")+"Class"]("ui-datepicker-multi");a.dpDiv[(this._get(a, +"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl");a==d.datepicker._curInst&&d.datepicker._datepickerShowing&&a.input&&a.input.is(":visible")&&!a.input.is(":disabled")&&a.input[0]!=document.activeElement&&a.input.focus();if(a.yearshtml){var f=a.yearshtml;setTimeout(function(){f===a.yearshtml&&a.dpDiv.find("select.ui-datepicker-year:first").replaceWith(a.yearshtml);f=a.yearshtml=null},0)}},_getBorders:function(a){var b=function(c){return{thin:1,medium:2,thick:3}[c]||c};return[parseFloat(b(a.css("border-left-width"))), +parseFloat(b(a.css("border-top-width")))]},_checkOffset:function(a,b,c){var e=a.dpDiv.outerWidth(),f=a.dpDiv.outerHeight(),h=a.input?a.input.outerWidth():0,i=a.input?a.input.outerHeight():0,g=document.documentElement.clientWidth+d(document).scrollLeft(),j=document.documentElement.clientHeight+d(document).scrollTop();b.left-=this._get(a,"isRTL")?e-h:0;b.left-=c&&b.left==a.input.offset().left?d(document).scrollLeft():0;b.top-=c&&b.top==a.input.offset().top+i?d(document).scrollTop():0;b.left-=Math.min(b.left, +b.left+e>g&&g>e?Math.abs(b.left+e-g):0);b.top-=Math.min(b.top,b.top+f>j&&j>f?Math.abs(f+i):0);return b},_findPos:function(a){for(var b=this._get(this._getInst(a),"isRTL");a&&(a.type=="hidden"||a.nodeType!=1||d.expr.filters.hidden(a));)a=a[b?"previousSibling":"nextSibling"];a=d(a).offset();return[a.left,a.top]},_hideDatepicker:function(a){var b=this._curInst;if(!(!b||a&&b!=d.data(a,"datepicker")))if(this._datepickerShowing){a=this._get(b,"showAnim");var c=this._get(b,"duration"),e=function(){d.datepicker._tidyDialog(b); +this._curInst=null};d.effects&&d.effects[a]?b.dpDiv.hide(a,d.datepicker._get(b,"showOptions"),c,e):b.dpDiv[a=="slideDown"?"slideUp":a=="fadeIn"?"fadeOut":"hide"](a?c:null,e);a||e();if(a=this._get(b,"onClose"))a.apply(b.input?b.input[0]:null,[b.input?b.input.val():"",b]);this._datepickerShowing=false;this._lastInput=null;if(this._inDialog){this._dialogInput.css({position:"absolute",left:"0",top:"-100px"});if(d.blockUI){d.unblockUI();d("body").append(this.dpDiv)}}this._inDialog=false}},_tidyDialog:function(a){a.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")}, +_checkExternalClick:function(a){if(d.datepicker._curInst){a=d(a.target);a[0].id!=d.datepicker._mainDivId&&a.parents("#"+d.datepicker._mainDivId).length==0&&!a.hasClass(d.datepicker.markerClassName)&&!a.hasClass(d.datepicker._triggerClass)&&d.datepicker._datepickerShowing&&!(d.datepicker._inDialog&&d.blockUI)&&d.datepicker._hideDatepicker()}},_adjustDate:function(a,b,c){a=d(a);var e=this._getInst(a[0]);if(!this._isDisabledDatepicker(a[0])){this._adjustInstDate(e,b+(c=="M"?this._get(e,"showCurrentAtPos"): +0),c);this._updateDatepicker(e)}},_gotoToday:function(a){a=d(a);var b=this._getInst(a[0]);if(this._get(b,"gotoCurrent")&&b.currentDay){b.selectedDay=b.currentDay;b.drawMonth=b.selectedMonth=b.currentMonth;b.drawYear=b.selectedYear=b.currentYear}else{var c=new Date;b.selectedDay=c.getDate();b.drawMonth=b.selectedMonth=c.getMonth();b.drawYear=b.selectedYear=c.getFullYear()}this._notifyChange(b);this._adjustDate(a)},_selectMonthYear:function(a,b,c){a=d(a);var e=this._getInst(a[0]);e._selectingMonthYear= +false;e["selected"+(c=="M"?"Month":"Year")]=e["draw"+(c=="M"?"Month":"Year")]=parseInt(b.options[b.selectedIndex].value,10);this._notifyChange(e);this._adjustDate(a)},_clickMonthYear:function(a){var b=this._getInst(d(a)[0]);b.input&&b._selectingMonthYear&&setTimeout(function(){b.input.focus()},0);b._selectingMonthYear=!b._selectingMonthYear},_selectDay:function(a,b,c,e){var f=d(a);if(!(d(e).hasClass(this._unselectableClass)||this._isDisabledDatepicker(f[0]))){f=this._getInst(f[0]);f.selectedDay=f.currentDay= +d("a",e).html();f.selectedMonth=f.currentMonth=b;f.selectedYear=f.currentYear=c;this._selectDate(a,this._formatDate(f,f.currentDay,f.currentMonth,f.currentYear))}},_clearDate:function(a){a=d(a);this._getInst(a[0]);this._selectDate(a,"")},_selectDate:function(a,b){a=this._getInst(d(a)[0]);b=b!=null?b:this._formatDate(a);a.input&&a.input.val(b);this._updateAlternate(a);var c=this._get(a,"onSelect");if(c)c.apply(a.input?a.input[0]:null,[b,a]);else a.input&&a.input.trigger("change");if(a.inline)this._updateDatepicker(a); +else{this._hideDatepicker();this._lastInput=a.input[0];typeof a.input[0]!="object"&&a.input.focus();this._lastInput=null}},_updateAlternate:function(a){var b=this._get(a,"altField");if(b){var c=this._get(a,"altFormat")||this._get(a,"dateFormat"),e=this._getDate(a),f=this.formatDate(c,e,this._getFormatConfig(a));d(b).each(function(){d(this).val(f)})}},noWeekends:function(a){a=a.getDay();return[a>0&&a<6,""]},iso8601Week:function(a){a=new Date(a.getTime());a.setDate(a.getDate()+4-(a.getDay()||7));var b= +a.getTime();a.setMonth(0);a.setDate(1);return Math.floor(Math.round((b-a)/864E5)/7)+1},parseDate:function(a,b,c){if(a==null||b==null)throw"Invalid arguments";b=typeof b=="object"?b.toString():b+"";if(b=="")return null;var e=(c?c.shortYearCutoff:null)||this._defaults.shortYearCutoff;e=typeof e!="string"?e:(new Date).getFullYear()%100+parseInt(e,10);for(var f=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,h=(c?c.dayNames:null)||this._defaults.dayNames,i=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort, +g=(c?c.monthNames:null)||this._defaults.monthNames,j=c=-1,l=-1,u=-1,k=false,o=function(p){(p=z+1-1){j=1;l=u;do{e=this._getDaysInMonth(c,j-1);if(l<=e)break;j++;l-=e}while(1)}w=this._daylightSavingAdjust(new Date(c,j-1,l));if(w.getFullYear()!=c||w.getMonth()+1!=j||w.getDate()!=l)throw"Invalid date";return w},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y", +RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925))*24*60*60*1E7,formatDate:function(a,b,c){if(!b)return"";var e=(c?c.dayNamesShort:null)||this._defaults.dayNamesShort,f=(c?c.dayNames:null)||this._defaults.dayNames,h=(c?c.monthNamesShort:null)||this._defaults.monthNamesShort;c=(c?c.monthNames:null)||this._defaults.monthNames;var i=function(o){(o=k+112?a.getHours()+2:0);return a},_setDate:function(a,b,c){var e=!b,f=a.selectedMonth,h=a.selectedYear;b=this._restrictMinMax(a,this._determineDate(a,b,new Date));a.selectedDay= +a.currentDay=b.getDate();a.drawMonth=a.selectedMonth=a.currentMonth=b.getMonth();a.drawYear=a.selectedYear=a.currentYear=b.getFullYear();if((f!=a.selectedMonth||h!=a.selectedYear)&&!c)this._notifyChange(a);this._adjustInstDate(a);if(a.input)a.input.val(e?"":this._formatDate(a))},_getDate:function(a){return!a.currentYear||a.input&&a.input.val()==""?null:this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay))},_generateHTML:function(a){var b=new Date;b=this._daylightSavingAdjust(new Date(b.getFullYear(), +b.getMonth(),b.getDate()));var c=this._get(a,"isRTL"),e=this._get(a,"showButtonPanel"),f=this._get(a,"hideIfNoPrevNext"),h=this._get(a,"navigationAsDateFormat"),i=this._getNumberOfMonths(a),g=this._get(a,"showCurrentAtPos"),j=this._get(a,"stepMonths"),l=i[0]!=1||i[1]!=1,u=this._daylightSavingAdjust(!a.currentDay?new Date(9999,9,9):new Date(a.currentYear,a.currentMonth,a.currentDay)),k=this._getMinMaxDate(a,"min"),o=this._getMinMaxDate(a,"max");g=a.drawMonth-g;var m=a.drawYear;if(g<0){g+=12;m--}if(o){var n= +this._daylightSavingAdjust(new Date(o.getFullYear(),o.getMonth()-i[0]*i[1]+1,o.getDate()));for(n=k&&nn;){g--;if(g<0){g=11;m--}}}a.drawMonth=g;a.drawYear=m;n=this._get(a,"prevText");n=!h?n:this.formatDate(n,this._daylightSavingAdjust(new Date(m,g-j,1)),this._getFormatConfig(a));n=this._canAdjustMonth(a,-1,m,g)?''+n+"":f?"":''+n+"";var r=this._get(a,"nextText");r=!h?r:this.formatDate(r,this._daylightSavingAdjust(new Date(m,g+j,1)),this._getFormatConfig(a));f=this._canAdjustMonth(a,+1,m,g)?''+r+"":f?"":''+r+"";j=this._get(a,"currentText");r=this._get(a,"gotoCurrent")&&a.currentDay?u:b;j=!h?j:this.formatDate(j,r,this._getFormatConfig(a));h=!a.inline?'":"";e=e?'
            '+(c?h:"")+(this._isInRange(a,r)?'":"")+(c?"":h)+"
            ":"";h=parseInt(this._get(a,"firstDay"),10);h=isNaN(h)?0:h;j=this._get(a,"showWeek");r=this._get(a,"dayNames");this._get(a,"dayNamesShort");var s=this._get(a,"dayNamesMin"),z= +this._get(a,"monthNames"),w=this._get(a,"monthNamesShort"),p=this._get(a,"beforeShowDay"),v=this._get(a,"showOtherMonths"),H=this._get(a,"selectOtherMonths");this._get(a,"calculateWeek");for(var L=this._getDefaultDate(a),I="",C=0;C1)switch(D){case 0:x+=" ui-datepicker-group-first";t=" ui-corner-"+(c?"right":"left");break;case i[1]- +1:x+=" ui-datepicker-group-last";t=" ui-corner-"+(c?"left":"right");break;default:x+=" ui-datepicker-group-middle";t="";break}x+='">'}x+='
            '+(/all|left/.test(t)&&C==0?c?f:n:"")+(/all|right/.test(t)&&C==0?c?n:f:"")+this._generateMonthYearHeader(a,g,m,k,o,C>0||D>0,z,w)+'
            ';var A=j?'":"";for(t=0;t<7;t++){var q= +(t+h)%7;A+="=5?' class="ui-datepicker-week-end"':"")+'>'+s[q]+""}x+=A+"";A=this._getDaysInMonth(m,g);if(m==a.selectedYear&&g==a.selectedMonth)a.selectedDay=Math.min(a.selectedDay,A);t=(this._getFirstDayOfMonth(m,g)-h+7)%7;A=l?6:Math.ceil((t+A)/7);q=this._daylightSavingAdjust(new Date(m,g,1-t));for(var O=0;O";var P=!j?"":'";for(t=0;t<7;t++){var F= +p?p.apply(a.input?a.input[0]:null,[q]):[true,""],B=q.getMonth()!=g,J=B&&!H||!F[0]||k&&qo;P+='";q.setDate(q.getDate()+1);q=this._daylightSavingAdjust(q)}x+= +P+""}g++;if(g>11){g=0;m++}x+="
            '+this._get(a,"weekHeader")+"
            '+this._get(a,"calculateWeek")(q)+""+(B&&!v?" ":J?''+q.getDate()+"":''+q.getDate()+"")+"
            "+(l?"
            "+(i[0]>0&&D==i[1]-1?'
            ':""):"");M+=x}I+=M}I+=e+(d.browser.msie&&parseInt(d.browser.version,10)<7&&!a.inline?'':"");a._keyEvent=false;return I},_generateMonthYearHeader:function(a,b,c,e,f,h,i,g){var j=this._get(a,"changeMonth"),l=this._get(a,"changeYear"),u=this._get(a,"showMonthAfterYear"),k='
            ', +o="";if(h||!j)o+=''+i[b]+"";else{i=e&&e.getFullYear()==c;var m=f&&f.getFullYear()==c;o+='"}u||(k+=o+(h||!(j&& +l)?" ":""));a.yearshtml="";if(h||!l)k+=''+c+"";else{g=this._get(a,"yearRange").split(":");var r=(new Date).getFullYear();i=function(s){s=s.match(/c[+-].*/)?c+parseInt(s.substring(1),10):s.match(/[+-].*/)?r+parseInt(s,10):parseInt(s,10);return isNaN(s)?r:s};b=i(g[0]);g=Math.max(b,i(g[1]||""));b=e?Math.max(b,e.getFullYear()):b;g=f?Math.min(g,f.getFullYear()):g;for(a.yearshtml+='";if(d.browser.mozilla)k+='";else{k+=a.yearshtml;a.yearshtml=null}}k+=this._get(a,"yearSuffix");if(u)k+=(h||!(j&&l)?" ":"")+o;k+="
            ";return k},_adjustInstDate:function(a,b,c){var e= +a.drawYear+(c=="Y"?b:0),f=a.drawMonth+(c=="M"?b:0);b=Math.min(a.selectedDay,this._getDaysInMonth(e,f))+(c=="D"?b:0);e=this._restrictMinMax(a,this._daylightSavingAdjust(new Date(e,f,b)));a.selectedDay=e.getDate();a.drawMonth=a.selectedMonth=e.getMonth();a.drawYear=a.selectedYear=e.getFullYear();if(c=="M"||c=="Y")this._notifyChange(a)},_restrictMinMax:function(a,b){var c=this._getMinMaxDate(a,"min");a=this._getMinMaxDate(a,"max");b=c&&ba?a:b},_notifyChange:function(a){var b=this._get(a, +"onChangeMonthYear");if(b)b.apply(a.input?a.input[0]:null,[a.selectedYear,a.selectedMonth+1,a])},_getNumberOfMonths:function(a){a=this._get(a,"numberOfMonths");return a==null?[1,1]:typeof a=="number"?[1,a]:a},_getMinMaxDate:function(a,b){return this._determineDate(a,this._get(a,b+"Date"),null)},_getDaysInMonth:function(a,b){return 32-this._daylightSavingAdjust(new Date(a,b,32)).getDate()},_getFirstDayOfMonth:function(a,b){return(new Date(a,b,1)).getDay()},_canAdjustMonth:function(a,b,c,e){var f=this._getNumberOfMonths(a); +c=this._daylightSavingAdjust(new Date(c,e+(b<0?b:f[0]*f[1]),1));b<0&&c.setDate(this._getDaysInMonth(c.getFullYear(),c.getMonth()));return this._isInRange(a,c)},_isInRange:function(a,b){var c=this._getMinMaxDate(a,"min");a=this._getMinMaxDate(a,"max");return(!c||b.getTime()>=c.getTime())&&(!a||b.getTime()<=a.getTime())},_getFormatConfig:function(a){var b=this._get(a,"shortYearCutoff");b=typeof b!="string"?b:(new Date).getFullYear()%100+parseInt(b,10);return{shortYearCutoff:b,dayNamesShort:this._get(a, +"dayNamesShort"),dayNames:this._get(a,"dayNames"),monthNamesShort:this._get(a,"monthNamesShort"),monthNames:this._get(a,"monthNames")}},_formatDate:function(a,b,c,e){if(!b){a.currentDay=a.selectedDay;a.currentMonth=a.selectedMonth;a.currentYear=a.selectedYear}b=b?typeof b=="object"?b:this._daylightSavingAdjust(new Date(e,c,b)):this._daylightSavingAdjust(new Date(a.currentYear,a.currentMonth,a.currentDay));return this.formatDate(this._get(a,"dateFormat"),b,this._getFormatConfig(a))}});d.fn.datepicker= +function(a){if(!this.length)return this;if(!d.datepicker.initialized){d(document).mousedown(d.datepicker._checkExternalClick).find("body").append(d.datepicker.dpDiv);d.datepicker.initialized=true}var b=Array.prototype.slice.call(arguments,1);if(typeof a=="string"&&(a=="isDisabled"||a=="getDate"||a=="widget"))return d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this[0]].concat(b));if(a=="option"&&arguments.length==2&&typeof arguments[1]=="string")return d.datepicker["_"+a+"Datepicker"].apply(d.datepicker, +[this[0]].concat(b));return this.each(function(){typeof a=="string"?d.datepicker["_"+a+"Datepicker"].apply(d.datepicker,[this].concat(b)):d.datepicker._attachDatepicker(this,a)})};d.datepicker=new K;d.datepicker.initialized=false;d.datepicker.uuid=(new Date).getTime();d.datepicker.version="1.8.10";window["DP_jQuery_"+y]=d})(jQuery); +;/* + * jQuery UI Progressbar 1.8.10 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Progressbar + * + * Depends: + * jquery.ui.core.js + * jquery.ui.widget.js + */ +(function(b,d){b.widget("ui.progressbar",{options:{value:0,max:100},min:0,_create:function(){this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min,"aria-valuemax":this.options.max,"aria-valuenow":this._value()});this.valueDiv=b("
            ").appendTo(this.element);this.oldValue=this._value();this._refreshValue()},destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"); +this.valueDiv.remove();b.Widget.prototype.destroy.apply(this,arguments)},value:function(a){if(a===d)return this._value();this._setOption("value",a);return this},_setOption:function(a,c){if(a==="value"){this.options.value=c;this._refreshValue();this._value()===this.options.max&&this._trigger("complete")}b.Widget.prototype._setOption.apply(this,arguments)},_value:function(){var a=this.options.value;if(typeof a!=="number")a=0;return Math.min(this.options.max,Math.max(this.min,a))},_percentage:function(){return 100* +this._value()/this.options.max},_refreshValue:function(){var a=this.value(),c=this._percentage();if(this.oldValue!==a){this.oldValue=a;this._trigger("change")}this.valueDiv.toggleClass("ui-corner-right",a===this.options.max).width(c.toFixed(0)+"%");this.element.attr("aria-valuenow",a)}});b.extend(b.ui.progressbar,{version:"1.8.10"})})(jQuery); +;/* + * jQuery UI Effects 1.8.10 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Effects/ + */ +jQuery.effects||function(f,j){function n(c){var a;if(c&&c.constructor==Array&&c.length==3)return c;if(a=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(c))return[parseInt(a[1],10),parseInt(a[2],10),parseInt(a[3],10)];if(a=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(c))return[parseFloat(a[1])*2.55,parseFloat(a[2])*2.55,parseFloat(a[3])*2.55];if(a=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(c))return[parseInt(a[1], +16),parseInt(a[2],16),parseInt(a[3],16)];if(a=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(c))return[parseInt(a[1]+a[1],16),parseInt(a[2]+a[2],16),parseInt(a[3]+a[3],16)];if(/rgba\(0, 0, 0, 0\)/.exec(c))return o.transparent;return o[f.trim(c).toLowerCase()]}function s(c,a){var b;do{b=f.curCSS(c,a);if(b!=""&&b!="transparent"||f.nodeName(c,"body"))break;a="backgroundColor"}while(c=c.parentNode);return n(b)}function p(){var c=document.defaultView?document.defaultView.getComputedStyle(this,null):this.currentStyle, +a={},b,d;if(c&&c.length&&c[0]&&c[c[0]])for(var e=c.length;e--;){b=c[e];if(typeof c[b]=="string"){d=b.replace(/\-(\w)/g,function(g,h){return h.toUpperCase()});a[d]=c[b]}}else for(b in c)if(typeof c[b]==="string")a[b]=c[b];return a}function q(c){var a,b;for(a in c){b=c[a];if(b==null||f.isFunction(b)||a in t||/scrollbar/.test(a)||!/color/i.test(a)&&isNaN(parseFloat(b)))delete c[a]}return c}function u(c,a){var b={_:0},d;for(d in a)if(c[d]!=a[d])b[d]=a[d];return b}function k(c,a,b,d){if(typeof c=="object"){d= +a;b=null;a=c;c=a.effect}if(f.isFunction(a)){d=a;b=null;a={}}if(typeof a=="number"||f.fx.speeds[a]){d=b;b=a;a={}}if(f.isFunction(b)){d=b;b=null}a=a||{};b=b||a.duration;b=f.fx.off?0:typeof b=="number"?b:b in f.fx.speeds?f.fx.speeds[b]:f.fx.speeds._default;d=d||a.complete;return[c,a,b,d]}function m(c){if(!c||typeof c==="number"||f.fx.speeds[c])return true;if(typeof c==="string"&&!f.effects[c])return true;return false}f.effects={};f.each(["backgroundColor","borderBottomColor","borderLeftColor","borderRightColor", +"borderTopColor","borderColor","color","outlineColor"],function(c,a){f.fx.step[a]=function(b){if(!b.colorInit){b.start=s(b.elem,a);b.end=n(b.end);b.colorInit=true}b.elem.style[a]="rgb("+Math.max(Math.min(parseInt(b.pos*(b.end[0]-b.start[0])+b.start[0],10),255),0)+","+Math.max(Math.min(parseInt(b.pos*(b.end[1]-b.start[1])+b.start[1],10),255),0)+","+Math.max(Math.min(parseInt(b.pos*(b.end[2]-b.start[2])+b.start[2],10),255),0)+")"}});var o={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0, +0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211, +211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0],transparent:[255,255,255]},r=["add","remove","toggle"],t={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};f.effects.animateClass=function(c,a,b, +d){if(f.isFunction(b)){d=b;b=null}return this.queue("fx",function(){var e=f(this),g=e.attr("style")||" ",h=q(p.call(this)),l,v=e.attr("className");f.each(r,function(w,i){c[i]&&e[i+"Class"](c[i])});l=q(p.call(this));e.attr("className",v);e.animate(u(h,l),a,b,function(){f.each(r,function(w,i){c[i]&&e[i+"Class"](c[i])});if(typeof e.attr("style")=="object"){e.attr("style").cssText="";e.attr("style").cssText=g}else e.attr("style",g);d&&d.apply(this,arguments)});h=f.queue(this);l=h.splice(h.length-1,1)[0]; +h.splice(1,0,l);f.dequeue(this)})};f.fn.extend({_addClass:f.fn.addClass,addClass:function(c,a,b,d){return a?f.effects.animateClass.apply(this,[{add:c},a,b,d]):this._addClass(c)},_removeClass:f.fn.removeClass,removeClass:function(c,a,b,d){return a?f.effects.animateClass.apply(this,[{remove:c},a,b,d]):this._removeClass(c)},_toggleClass:f.fn.toggleClass,toggleClass:function(c,a,b,d,e){return typeof a=="boolean"||a===j?b?f.effects.animateClass.apply(this,[a?{add:c}:{remove:c},b,d,e]):this._toggleClass(c, +a):f.effects.animateClass.apply(this,[{toggle:c},a,b,d])},switchClass:function(c,a,b,d,e){return f.effects.animateClass.apply(this,[{add:a,remove:c},b,d,e])}});f.extend(f.effects,{version:"1.8.10",save:function(c,a){for(var b=0;b").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent", +border:"none",margin:0,padding:0});c.wrap(b);b=c.parent();if(c.css("position")=="static"){b.css({position:"relative"});c.css({position:"relative"})}else{f.extend(a,{position:c.css("position"),zIndex:c.css("z-index")});f.each(["top","left","bottom","right"],function(d,e){a[e]=c.css(e);if(isNaN(parseInt(a[e],10)))a[e]="auto"});c.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})}return b.css(a).show()},removeWrapper:function(c){if(c.parent().is(".ui-effects-wrapper"))return c.parent().replaceWith(c); +return c},setTransition:function(c,a,b,d){d=d||{};f.each(a,function(e,g){unit=c.cssUnit(g);if(unit[0]>0)d[g]=unit[0]*b+unit[1]});return d}});f.fn.extend({effect:function(c){var a=k.apply(this,arguments),b={options:a[1],duration:a[2],callback:a[3]};a=b.options.mode;var d=f.effects[c];if(f.fx.off||!d)return a?this[a](b.duration,b.callback):this.each(function(){b.callback&&b.callback.call(this)});return d.call(this,b)},_show:f.fn.show,show:function(c){if(m(c))return this._show.apply(this,arguments); +else{var a=k.apply(this,arguments);a[1].mode="show";return this.effect.apply(this,a)}},_hide:f.fn.hide,hide:function(c){if(m(c))return this._hide.apply(this,arguments);else{var a=k.apply(this,arguments);a[1].mode="hide";return this.effect.apply(this,a)}},__toggle:f.fn.toggle,toggle:function(c){if(m(c)||typeof c==="boolean"||f.isFunction(c))return this.__toggle.apply(this,arguments);else{var a=k.apply(this,arguments);a[1].mode="toggle";return this.effect.apply(this,a)}},cssUnit:function(c){var a=this.css(c), +b=[];f.each(["em","px","%","pt"],function(d,e){if(a.indexOf(e)>0)b=[parseFloat(a),e]});return b}});f.easing.jswing=f.easing.swing;f.extend(f.easing,{def:"easeOutQuad",swing:function(c,a,b,d,e){return f.easing[f.easing.def](c,a,b,d,e)},easeInQuad:function(c,a,b,d,e){return d*(a/=e)*a+b},easeOutQuad:function(c,a,b,d,e){return-d*(a/=e)*(a-2)+b},easeInOutQuad:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a+b;return-d/2*(--a*(a-2)-1)+b},easeInCubic:function(c,a,b,d,e){return d*(a/=e)*a*a+b},easeOutCubic:function(c, +a,b,d,e){return d*((a=a/e-1)*a*a+1)+b},easeInOutCubic:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a+b;return d/2*((a-=2)*a*a+2)+b},easeInQuart:function(c,a,b,d,e){return d*(a/=e)*a*a*a+b},easeOutQuart:function(c,a,b,d,e){return-d*((a=a/e-1)*a*a*a-1)+b},easeInOutQuart:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a*a+b;return-d/2*((a-=2)*a*a*a-2)+b},easeInQuint:function(c,a,b,d,e){return d*(a/=e)*a*a*a*a+b},easeOutQuint:function(c,a,b,d,e){return d*((a=a/e-1)*a*a*a*a+1)+b},easeInOutQuint:function(c, +a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a*a*a+b;return d/2*((a-=2)*a*a*a*a+2)+b},easeInSine:function(c,a,b,d,e){return-d*Math.cos(a/e*(Math.PI/2))+d+b},easeOutSine:function(c,a,b,d,e){return d*Math.sin(a/e*(Math.PI/2))+b},easeInOutSine:function(c,a,b,d,e){return-d/2*(Math.cos(Math.PI*a/e)-1)+b},easeInExpo:function(c,a,b,d,e){return a==0?b:d*Math.pow(2,10*(a/e-1))+b},easeOutExpo:function(c,a,b,d,e){return a==e?b+d:d*(-Math.pow(2,-10*a/e)+1)+b},easeInOutExpo:function(c,a,b,d,e){if(a==0)return b;if(a== +e)return b+d;if((a/=e/2)<1)return d/2*Math.pow(2,10*(a-1))+b;return d/2*(-Math.pow(2,-10*--a)+2)+b},easeInCirc:function(c,a,b,d,e){return-d*(Math.sqrt(1-(a/=e)*a)-1)+b},easeOutCirc:function(c,a,b,d,e){return d*Math.sqrt(1-(a=a/e-1)*a)+b},easeInOutCirc:function(c,a,b,d,e){if((a/=e/2)<1)return-d/2*(Math.sqrt(1-a*a)-1)+b;return d/2*(Math.sqrt(1-(a-=2)*a)+1)+b},easeInElastic:function(c,a,b,d,e){c=1.70158;var g=0,h=d;if(a==0)return b;if((a/=e)==1)return b+d;g||(g=e*0.3);if(h").css({position:"absolute",visibility:"visible",left:-f*(h/d),top:-e*(i/c)}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:h/d,height:i/c,left:g.left+f*(h/d)+(a.options.mode=="show"?(f-Math.floor(d/2))*(h/d):0),top:g.top+e*(i/c)+(a.options.mode=="show"?(e-Math.floor(c/2))*(i/c):0),opacity:a.options.mode=="show"?0:1}).animate({left:g.left+f*(h/d)+(a.options.mode=="show"?0:(f-Math.floor(d/2))*(h/d)),top:g.top+ +e*(i/c)+(a.options.mode=="show"?0:(e-Math.floor(c/2))*(i/c)),opacity:a.options.mode=="show"?1:0},a.duration||500);setTimeout(function(){a.options.mode=="show"?b.css({visibility:"visible"}):b.css({visibility:"visible"}).hide();a.callback&&a.callback.apply(b[0]);b.dequeue();j("div.ui-effects-explode").remove()},a.duration||500)})}})(jQuery); +;/* + * jQuery UI Effects Fade 1.8.10 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Effects/Fade + * + * Depends: + * jquery.effects.core.js + */ +(function(b){b.effects.fade=function(a){return this.queue(function(){var c=b(this),d=b.effects.setMode(c,a.options.mode||"hide");c.animate({opacity:d},{queue:false,duration:a.duration,easing:a.options.easing,complete:function(){a.callback&&a.callback.apply(this,arguments);c.dequeue()}})})}})(jQuery); +;/* + * jQuery UI Effects Fold 1.8.10 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Effects/Fold + * + * Depends: + * jquery.effects.core.js + */ +(function(c){c.effects.fold=function(a){return this.queue(function(){var b=c(this),j=["position","top","bottom","left","right"],d=c.effects.setMode(b,a.options.mode||"hide"),g=a.options.size||15,h=!!a.options.horizFirst,k=a.duration?a.duration/2:c.fx.speeds._default/2;c.effects.save(b,j);b.show();var e=c.effects.createWrapper(b).css({overflow:"hidden"}),f=d=="show"!=h,l=f?["width","height"]:["height","width"];f=f?[e.width(),e.height()]:[e.height(),e.width()];var i=/([0-9]+)%/.exec(g);if(i)g=parseInt(i[1], +10)/100*f[d=="hide"?0:1];if(d=="show")e.css(h?{height:0,width:g}:{height:g,width:0});h={};i={};h[l[0]]=d=="show"?f[0]:g;i[l[1]]=d=="show"?f[1]:0;e.animate(h,k,a.options.easing).animate(i,k,a.options.easing,function(){d=="hide"&&b.hide();c.effects.restore(b,j);c.effects.removeWrapper(b);a.callback&&a.callback.apply(b[0],arguments);b.dequeue()})})}})(jQuery); +;/* + * jQuery UI Effects Highlight 1.8.10 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Effects/Highlight + * + * Depends: + * jquery.effects.core.js + */ +(function(b){b.effects.highlight=function(c){return this.queue(function(){var a=b(this),e=["backgroundImage","backgroundColor","opacity"],d=b.effects.setMode(a,c.options.mode||"show"),f={backgroundColor:a.css("backgroundColor")};if(d=="hide")f.opacity=0;b.effects.save(a,e);a.show().css({backgroundImage:"none",backgroundColor:c.options.color||"#ffff99"}).animate(f,{queue:false,duration:c.duration,easing:c.options.easing,complete:function(){d=="hide"&&a.hide();b.effects.restore(a,e);d=="show"&&!b.support.opacity&& +this.style.removeAttribute("filter");c.callback&&c.callback.apply(this,arguments);a.dequeue()}})})}})(jQuery); +;/* + * jQuery UI Effects Pulsate 1.8.10 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Effects/Pulsate + * + * Depends: + * jquery.effects.core.js + */ +(function(d){d.effects.pulsate=function(a){return this.queue(function(){var b=d(this),c=d.effects.setMode(b,a.options.mode||"show");times=(a.options.times||5)*2-1;duration=a.duration?a.duration/2:d.fx.speeds._default/2;isVisible=b.is(":visible");animateTo=0;if(!isVisible){b.css("opacity",0).show();animateTo=1}if(c=="hide"&&isVisible||c=="show"&&!isVisible)times--;for(c=0;c').appendTo(document.body).addClass(a.options.className).css({top:d.top,left:d.left,height:b.innerHeight(),width:b.innerWidth(),position:"absolute"}).animate(c,a.duration,a.options.easing,function(){f.remove();a.callback&&a.callback.apply(b[0],arguments); +b.dequeue()})})}})(jQuery); +; \ No newline at end of file diff --git a/stable-1.0/bureau/admin/js/jquery_ui/js/jquery.ui.datepicker-de.js b/stable-1.0/bureau/admin/js/jquery_ui/js/jquery.ui.datepicker-de.js new file mode 100644 index 00000000..ac2d516a --- /dev/null +++ b/stable-1.0/bureau/admin/js/jquery_ui/js/jquery.ui.datepicker-de.js @@ -0,0 +1,23 @@ +/* German initialisation for the jQuery UI date picker plugin. */ +/* Written by Milian Wolff (mail@milianw.de). */ +jQuery(function($){ + $.datepicker.regional['de'] = { + closeText: 'schließen', + prevText: '<zurück', + nextText: 'Vor>', + currentText: 'heute', + monthNames: ['Januar','Februar','März','April','Mai','Juni', + 'Juli','August','September','Oktober','November','Dezember'], + monthNamesShort: ['Jan','Feb','Mär','Apr','Mai','Jun', + 'Jul','Aug','Sep','Okt','Nov','Dez'], + dayNames: ['Sonntag','Montag','Dienstag','Mittwoch','Donnerstag','Freitag','Samstag'], + dayNamesShort: ['So','Mo','Di','Mi','Do','Fr','Sa'], + dayNamesMin: ['So','Mo','Di','Mi','Do','Fr','Sa'], + weekHeader: 'Wo', + dateFormat: 'dd.mm.yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['de']); +}); diff --git a/stable-1.0/bureau/admin/js/jquery_ui/js/jquery.ui.datepicker-es.js b/stable-1.0/bureau/admin/js/jquery_ui/js/jquery.ui.datepicker-es.js new file mode 100644 index 00000000..a02133de --- /dev/null +++ b/stable-1.0/bureau/admin/js/jquery_ui/js/jquery.ui.datepicker-es.js @@ -0,0 +1,23 @@ +/* Inicialización en español para la extensión 'UI date picker' para jQuery. */ +/* Traducido por Vester (xvester@gmail.com). */ +jQuery(function($){ + $.datepicker.regional['es'] = { + closeText: 'Cerrar', + prevText: '<Ant', + nextText: 'Sig>', + currentText: 'Hoy', + monthNames: ['Enero','Febrero','Marzo','Abril','Mayo','Junio', + 'Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre'], + monthNamesShort: ['Ene','Feb','Mar','Abr','May','Jun', + 'Jul','Ago','Sep','Oct','Nov','Dic'], + dayNames: ['Domingo','Lunes','Martes','Miércoles','Jueves','Viernes','Sábado'], + dayNamesShort: ['Dom','Lun','Mar','Mié','Juv','Vie','Sáb'], + dayNamesMin: ['Do','Lu','Ma','Mi','Ju','Vi','Sá'], + weekHeader: 'Sm', + dateFormat: 'dd/mm/yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['es']); +}); \ No newline at end of file diff --git a/stable-1.0/bureau/admin/js/jquery_ui/js/jquery.ui.datepicker-fr.js b/stable-1.0/bureau/admin/js/jquery_ui/js/jquery.ui.datepicker-fr.js new file mode 100644 index 00000000..134bda65 --- /dev/null +++ b/stable-1.0/bureau/admin/js/jquery_ui/js/jquery.ui.datepicker-fr.js @@ -0,0 +1,23 @@ +/* French initialisation for the jQuery UI date picker plugin. */ +/* Written by Keith Wood (kbwood{at}iinet.com.au) and Stéphane Nahmani (sholby@sholby.net). */ +jQuery(function($){ + $.datepicker.regional['fr'] = { + closeText: 'Fermer', + prevText: '<Préc', + nextText: 'Suiv>', + currentText: 'Courant', + monthNames: ['Janvier','Février','Mars','Avril','Mai','Juin', + 'Juillet','Août','Septembre','Octobre','Novembre','Décembre'], + monthNamesShort: ['Jan','Fév','Mar','Avr','Mai','Jun', + 'Jul','Aoû','Sep','Oct','Nov','Déc'], + dayNames: ['Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi'], + dayNamesShort: ['Dim','Lun','Mar','Mer','Jeu','Ven','Sam'], + dayNamesMin: ['Di','Lu','Ma','Me','Je','Ve','Sa'], + weekHeader: 'Sm', + dateFormat: 'dd/mm/yy', + firstDay: 1, + isRTL: false, + showMonthAfterYear: false, + yearSuffix: ''}; + $.datepicker.setDefaults($.datepicker.regional['fr']); +}); \ No newline at end of file diff --git a/stable-1.0/bureau/admin/js/prototype.js b/stable-1.0/bureau/admin/js/prototype.js new file mode 100644 index 00000000..0e85338b --- /dev/null +++ b/stable-1.0/bureau/admin/js/prototype.js @@ -0,0 +1,1781 @@ +/* Prototype JavaScript framework, version 1.4.0 + * (c) 2005 Sam Stephenson + * + * Prototype is freely distributable under the terms of an MIT-style license. + * For details, see the Prototype web site: http://prototype.conio.net/ + * +/*--------------------------------------------------------------------------*/ + +var Prototype = { + Version: '1.4.0', + ScriptFragment: '(?:)((\n|\r|.)*?)(?:<\/script>)', + + emptyFunction: function() {}, + K: function(x) {return x} +} + +var Class = { + create: function() { + return function() { + this.initialize.apply(this, arguments); + } + } +} + +var Abstract = new Object(); + +Object.extend = function(destination, source) { + for (property in source) { + destination[property] = source[property]; + } + return destination; +} + +Object.inspect = function(object) { + try { + if (object == undefined) return 'undefined'; + if (object == null) return 'null'; + return object.inspect ? object.inspect() : object.toString(); + } catch (e) { + if (e instanceof RangeError) return '...'; + throw e; + } +} + +Function.prototype.bind = function() { + var __method = this, args = $A(arguments), object = args.shift(); + return function() { + return __method.apply(object, args.concat($A(arguments))); + } +} + +Function.prototype.bindAsEventListener = function(object) { + var __method = this; + return function(event) { + return __method.call(object, event || window.event); + } +} + +Object.extend(Number.prototype, { + toColorPart: function() { + var digits = this.toString(16); + if (this < 16) return '0' + digits; + return digits; + }, + + succ: function() { + return this + 1; + }, + + times: function(iterator) { + $R(0, this, true).each(iterator); + return this; + } +}); + +var Try = { + these: function() { + var returnValue; + + for (var i = 0; i < arguments.length; i++) { + var lambda = arguments[i]; + try { + returnValue = lambda(); + break; + } catch (e) {} + } + + return returnValue; + } +} + +/*--------------------------------------------------------------------------*/ + +var PeriodicalExecuter = Class.create(); +PeriodicalExecuter.prototype = { + initialize: function(callback, frequency) { + this.callback = callback; + this.frequency = frequency; + this.currentlyExecuting = false; + + this.registerCallback(); + }, + + registerCallback: function() { + setInterval(this.onTimerEvent.bind(this), this.frequency * 1000); + }, + + onTimerEvent: function() { + if (!this.currentlyExecuting) { + try { + this.currentlyExecuting = true; + this.callback(); + } finally { + this.currentlyExecuting = false; + } + } + } +} + +/*--------------------------------------------------------------------------*/ + +function $() { + var elements = new Array(); + + for (var i = 0; i < arguments.length; i++) { + var element = arguments[i]; + if (typeof element == 'string') + element = document.getElementById(element); + + if (arguments.length == 1) + return element; + + elements.push(element); + } + + return elements; +} +Object.extend(String.prototype, { + stripTags: function() { + return this.replace(/<\/?[^>]+>/gi, ''); + }, + + stripScripts: function() { + return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), ''); + }, + + extractScripts: function() { + var matchAll = new RegExp(Prototype.ScriptFragment, 'img'); + var matchOne = new RegExp(Prototype.ScriptFragment, 'im'); + return (this.match(matchAll) || []).map(function(scriptTag) { + return (scriptTag.match(matchOne) || ['', ''])[1]; + }); + }, + + evalScripts: function() { + return this.extractScripts().map(eval); + }, + + escapeHTML: function() { + var div = document.createElement('div'); + var text = document.createTextNode(this); + div.appendChild(text); + return div.innerHTML; + }, + + unescapeHTML: function() { + var div = document.createElement('div'); + div.innerHTML = this.stripTags(); + return div.childNodes[0] ? div.childNodes[0].nodeValue : ''; + }, + + toQueryParams: function() { + var pairs = this.match(/^\??(.*)$/)[1].split('&'); + return pairs.inject({}, function(params, pairString) { + var pair = pairString.split('='); + params[pair[0]] = pair[1]; + return params; + }); + }, + + toArray: function() { + return this.split(''); + }, + + camelize: function() { + var oStringList = this.split('-'); + if (oStringList.length == 1) return oStringList[0]; + + var camelizedString = this.indexOf('-') == 0 + ? oStringList[0].charAt(0).toUpperCase() + oStringList[0].substring(1) + : oStringList[0]; + + for (var i = 1, len = oStringList.length; i < len; i++) { + var s = oStringList[i]; + camelizedString += s.charAt(0).toUpperCase() + s.substring(1); + } + + return camelizedString; + }, + + inspect: function() { + return "'" + this.replace('\\', '\\\\').replace("'", '\\\'') + "'"; + } +}); + +String.prototype.parseQuery = String.prototype.toQueryParams; + +var $break = new Object(); +var $continue = new Object(); + +var Enumerable = { + each: function(iterator) { + var index = 0; + try { + this._each(function(value) { + try { + iterator(value, index++); + } catch (e) { + if (e != $continue) throw e; + } + }); + } catch (e) { + if (e != $break) throw e; + } + }, + + all: function(iterator) { + var result = true; + this.each(function(value, index) { + result = result && !!(iterator || Prototype.K)(value, index); + if (!result) throw $break; + }); + return result; + }, + + any: function(iterator) { + var result = true; + this.each(function(value, index) { + if (result = !!(iterator || Prototype.K)(value, index)) + throw $break; + }); + return result; + }, + + collect: function(iterator) { + var results = []; + this.each(function(value, index) { + results.push(iterator(value, index)); + }); + return results; + }, + + detect: function (iterator) { + var result; + this.each(function(value, index) { + if (iterator(value, index)) { + result = value; + throw $break; + } + }); + return result; + }, + + findAll: function(iterator) { + var results = []; + this.each(function(value, index) { + if (iterator(value, index)) + results.push(value); + }); + return results; + }, + + grep: function(pattern, iterator) { + var results = []; + this.each(function(value, index) { + var stringValue = value.toString(); + if (stringValue.match(pattern)) + results.push((iterator || Prototype.K)(value, index)); + }) + return results; + }, + + include: function(object) { + var found = false; + this.each(function(value) { + if (value == object) { + found = true; + throw $break; + } + }); + return found; + }, + + inject: function(memo, iterator) { + this.each(function(value, index) { + memo = iterator(memo, value, index); + }); + return memo; + }, + + invoke: function(method) { + var args = $A(arguments).slice(1); + return this.collect(function(value) { + return value[method].apply(value, args); + }); + }, + + max: function(iterator) { + var result; + this.each(function(value, index) { + value = (iterator || Prototype.K)(value, index); + if (value >= (result || value)) + result = value; + }); + return result; + }, + + min: function(iterator) { + var result; + this.each(function(value, index) { + value = (iterator || Prototype.K)(value, index); + if (value <= (result || value)) + result = value; + }); + return result; + }, + + partition: function(iterator) { + var trues = [], falses = []; + this.each(function(value, index) { + ((iterator || Prototype.K)(value, index) ? + trues : falses).push(value); + }); + return [trues, falses]; + }, + + pluck: function(property) { + var results = []; + this.each(function(value, index) { + results.push(value[property]); + }); + return results; + }, + + reject: function(iterator) { + var results = []; + this.each(function(value, index) { + if (!iterator(value, index)) + results.push(value); + }); + return results; + }, + + sortBy: function(iterator) { + return this.collect(function(value, index) { + return {value: value, criteria: iterator(value, index)}; + }).sort(function(left, right) { + var a = left.criteria, b = right.criteria; + return a < b ? -1 : a > b ? 1 : 0; + }).pluck('value'); + }, + + toArray: function() { + return this.collect(Prototype.K); + }, + + zip: function() { + var iterator = Prototype.K, args = $A(arguments); + if (typeof args.last() == 'function') + iterator = args.pop(); + + var collections = [this].concat(args).map($A); + return this.map(function(value, index) { + iterator(value = collections.pluck(index)); + return value; + }); + }, + + inspect: function() { + return '#'; + } +} + +Object.extend(Enumerable, { + map: Enumerable.collect, + find: Enumerable.detect, + select: Enumerable.findAll, + member: Enumerable.include, + entries: Enumerable.toArray +}); +var $A = Array.from = function(iterable) { + if (!iterable) return []; + if (iterable.toArray) { + return iterable.toArray(); + } else { + var results = []; + for (var i = 0; i < iterable.length; i++) + results.push(iterable[i]); + return results; + } +} + +Object.extend(Array.prototype, Enumerable); + +Array.prototype._reverse = Array.prototype.reverse; + +Object.extend(Array.prototype, { + _each: function(iterator) { + for (var i = 0; i < this.length; i++) + iterator(this[i]); + }, + + clear: function() { + this.length = 0; + return this; + }, + + first: function() { + return this[0]; + }, + + last: function() { + return this[this.length - 1]; + }, + + compact: function() { + return this.select(function(value) { + return value != undefined || value != null; + }); + }, + + flatten: function() { + return this.inject([], function(array, value) { + return array.concat(value.constructor == Array ? + value.flatten() : [value]); + }); + }, + + without: function() { + var values = $A(arguments); + return this.select(function(value) { + return !values.include(value); + }); + }, + + indexOf: function(object) { + for (var i = 0; i < this.length; i++) + if (this[i] == object) return i; + return -1; + }, + + reverse: function(inline) { + return (inline !== false ? this : this.toArray())._reverse(); + }, + + shift: function() { + var result = this[0]; + for (var i = 0; i < this.length - 1; i++) + this[i] = this[i + 1]; + this.length--; + return result; + }, + + inspect: function() { + return '[' + this.map(Object.inspect).join(', ') + ']'; + } +}); +var Hash = { + _each: function(iterator) { + for (key in this) { + var value = this[key]; + if (typeof value == 'function') continue; + + var pair = [key, value]; + pair.key = key; + pair.value = value; + iterator(pair); + } + }, + + keys: function() { + return this.pluck('key'); + }, + + values: function() { + return this.pluck('value'); + }, + + merge: function(hash) { + return $H(hash).inject($H(this), function(mergedHash, pair) { + mergedHash[pair.key] = pair.value; + return mergedHash; + }); + }, + + toQueryString: function() { + return this.map(function(pair) { + return pair.map(encodeURIComponent).join('='); + }).join('&'); + }, + + inspect: function() { + return '#'; + } +} + +function $H(object) { + var hash = Object.extend({}, object || {}); + Object.extend(hash, Enumerable); + Object.extend(hash, Hash); + return hash; +} +ObjectRange = Class.create(); +Object.extend(ObjectRange.prototype, Enumerable); +Object.extend(ObjectRange.prototype, { + initialize: function(start, end, exclusive) { + this.start = start; + this.end = end; + this.exclusive = exclusive; + }, + + _each: function(iterator) { + var value = this.start; + do { + iterator(value); + value = value.succ(); + } while (this.include(value)); + }, + + include: function(value) { + if (value < this.start) + return false; + if (this.exclusive) + return value < this.end; + return value <= this.end; + } +}); + +var $R = function(start, end, exclusive) { + return new ObjectRange(start, end, exclusive); +} + +var Ajax = { + getTransport: function() { + return Try.these( + function() {return new ActiveXObject('Msxml2.XMLHTTP')}, + function() {return new ActiveXObject('Microsoft.XMLHTTP')}, + function() {return new XMLHttpRequest()} + ) || false; + }, + + activeRequestCount: 0 +} + +Ajax.Responders = { + responders: [], + + _each: function(iterator) { + this.responders._each(iterator); + }, + + register: function(responderToAdd) { + if (!this.include(responderToAdd)) + this.responders.push(responderToAdd); + }, + + unregister: function(responderToRemove) { + this.responders = this.responders.without(responderToRemove); + }, + + dispatch: function(callback, request, transport, json) { + this.each(function(responder) { + if (responder[callback] && typeof responder[callback] == 'function') { + try { + responder[callback].apply(responder, [request, transport, json]); + } catch (e) {} + } + }); + } +}; + +Object.extend(Ajax.Responders, Enumerable); + +Ajax.Responders.register({ + onCreate: function() { + Ajax.activeRequestCount++; + }, + + onComplete: function() { + Ajax.activeRequestCount--; + } +}); + +Ajax.Base = function() {}; +Ajax.Base.prototype = { + setOptions: function(options) { + this.options = { + method: 'post', + asynchronous: true, + parameters: '' + } + Object.extend(this.options, options || {}); + }, + + responseIsSuccess: function() { + return this.transport.status == undefined + || this.transport.status == 0 + || (this.transport.status >= 200 && this.transport.status < 300); + }, + + responseIsFailure: function() { + return !this.responseIsSuccess(); + } +} + +Ajax.Request = Class.create(); +Ajax.Request.Events = + ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete']; + +Ajax.Request.prototype = Object.extend(new Ajax.Base(), { + initialize: function(url, options) { + this.transport = Ajax.getTransport(); + this.setOptions(options); + this.request(url); + }, + + request: function(url) { + var parameters = this.options.parameters || ''; + if (parameters.length > 0) parameters += '&_='; + + try { + this.url = url; + if (this.options.method == 'get' && parameters.length > 0) + this.url += (this.url.match(/\?/) ? '&' : '?') + parameters; + + Ajax.Responders.dispatch('onCreate', this, this.transport); + + this.transport.open(this.options.method, this.url, + this.options.asynchronous); + + if (this.options.asynchronous) { + this.transport.onreadystatechange = this.onStateChange.bind(this); + setTimeout((function() {this.respondToReadyState(1)}).bind(this), 10); + } + + this.setRequestHeaders(); + + var body = this.options.postBody ? this.options.postBody : parameters; + this.transport.send(this.options.method == 'post' ? body : null); + + } catch (e) { + this.dispatchException(e); + } + }, + + setRequestHeaders: function() { + var requestHeaders = + ['X-Requested-With', 'XMLHttpRequest', + 'X-Prototype-Version', Prototype.Version]; + + if (this.options.method == 'post') { + requestHeaders.push('Content-type', + 'application/x-www-form-urlencoded'); + + /* Force "Connection: close" for Mozilla browsers to work around + * a bug where XMLHttpReqeuest sends an incorrect Content-length + * header. See Mozilla Bugzilla #246651. + */ + if (this.transport.overrideMimeType) + requestHeaders.push('Connection', 'close'); + } + + if (this.options.requestHeaders) + requestHeaders.push.apply(requestHeaders, this.options.requestHeaders); + + for (var i = 0; i < requestHeaders.length; i += 2) + this.transport.setRequestHeader(requestHeaders[i], requestHeaders[i+1]); + }, + + onStateChange: function() { + var readyState = this.transport.readyState; + if (readyState != 1) + this.respondToReadyState(this.transport.readyState); + }, + + header: function(name) { + try { + return this.transport.getResponseHeader(name); + } catch (e) {} + }, + + evalJSON: function() { + try { + return eval(this.header('X-JSON')); + } catch (e) {} + }, + + evalResponse: function() { + try { + return eval(this.transport.responseText); + } catch (e) { + this.dispatchException(e); + } + }, + + respondToReadyState: function(readyState) { + var event = Ajax.Request.Events[readyState]; + var transport = this.transport, json = this.evalJSON(); + + if (event == 'Complete') { + try { + (this.options['on' + this.transport.status] + || this.options['on' + (this.responseIsSuccess() ? 'Success' : 'Failure')] + || Prototype.emptyFunction)(transport, json); + } catch (e) { + this.dispatchException(e); + } + + if ((this.header('Content-type') || '').match(/^text\/javascript/i)) + this.evalResponse(); + } + + try { + (this.options['on' + event] || Prototype.emptyFunction)(transport, json); + Ajax.Responders.dispatch('on' + event, this, transport, json); + } catch (e) { + this.dispatchException(e); + } + + /* Avoid memory leak in MSIE: clean up the oncomplete event handler */ + if (event == 'Complete') + this.transport.onreadystatechange = Prototype.emptyFunction; + }, + + dispatchException: function(exception) { + (this.options.onException || Prototype.emptyFunction)(this, exception); + Ajax.Responders.dispatch('onException', this, exception); + } +}); + +Ajax.Updater = Class.create(); + +Object.extend(Object.extend(Ajax.Updater.prototype, Ajax.Request.prototype), { + initialize: function(container, url, options) { + this.containers = { + success: container.success ? $(container.success) : $(container), + failure: container.failure ? $(container.failure) : + (container.success ? null : $(container)) + } + + this.transport = Ajax.getTransport(); + this.setOptions(options); + + var onComplete = this.options.onComplete || Prototype.emptyFunction; + this.options.onComplete = (function(transport, object) { + this.updateContent(); + onComplete(transport, object); + }).bind(this); + + this.request(url); + }, + + updateContent: function() { + var receiver = this.responseIsSuccess() ? + this.containers.success : this.containers.failure; + var response = this.transport.responseText; + + if (!this.options.evalScripts) + response = response.stripScripts(); + + if (receiver) { + if (this.options.insertion) { + new this.options.insertion(receiver, response); + } else { + Element.update(receiver, response); + } + } + + if (this.responseIsSuccess()) { + if (this.onComplete) + setTimeout(this.onComplete.bind(this), 10); + } + } +}); + +Ajax.PeriodicalUpdater = Class.create(); +Ajax.PeriodicalUpdater.prototype = Object.extend(new Ajax.Base(), { + initialize: function(container, url, options) { + this.setOptions(options); + this.onComplete = this.options.onComplete; + + this.frequency = (this.options.frequency || 2); + this.decay = (this.options.decay || 1); + + this.updater = {}; + this.container = container; + this.url = url; + + this.start(); + }, + + start: function() { + this.options.onComplete = this.updateComplete.bind(this); + this.onTimerEvent(); + }, + + stop: function() { + this.updater.onComplete = undefined; + clearTimeout(this.timer); + (this.onComplete || Prototype.emptyFunction).apply(this, arguments); + }, + + updateComplete: function(request) { + if (this.options.decay) { + this.decay = (request.responseText == this.lastText ? + this.decay * this.options.decay : 1); + + this.lastText = request.responseText; + } + this.timer = setTimeout(this.onTimerEvent.bind(this), + this.decay * this.frequency * 1000); + }, + + onTimerEvent: function() { + this.updater = new Ajax.Updater(this.container, this.url, this.options); + } +}); +document.getElementsByClassName = function(className, parentElement) { + var children = ($(parentElement) || document.body).getElementsByTagName('*'); + return $A(children).inject([], function(elements, child) { + if (child.className.match(new RegExp("(^|\\s)" + className + "(\\s|$)"))) + elements.push(child); + return elements; + }); +} + +/*--------------------------------------------------------------------------*/ + +if (!window.Element) { + var Element = new Object(); +} + +Object.extend(Element, { + visible: function(element) { + return $(element).style.display != 'none'; + }, + + toggle: function() { + for (var i = 0; i < arguments.length; i++) { + var element = $(arguments[i]); + Element[Element.visible(element) ? 'hide' : 'show'](element); + } + }, + + hide: function() { + for (var i = 0; i < arguments.length; i++) { + var element = $(arguments[i]); + element.style.display = 'none'; + } + }, + + show: function() { + for (var i = 0; i < arguments.length; i++) { + var element = $(arguments[i]); + element.style.display = ''; + } + }, + + remove: function(element) { + element = $(element); + element.parentNode.removeChild(element); + }, + + update: function(element, html) { + $(element).innerHTML = html.stripScripts(); + setTimeout(function() {html.evalScripts()}, 10); + }, + + getHeight: function(element) { + element = $(element); + return element.offsetHeight; + }, + + classNames: function(element) { + return new Element.ClassNames(element); + }, + + hasClassName: function(element, className) { + if (!(element = $(element))) return; + return Element.classNames(element).include(className); + }, + + addClassName: function(element, className) { + if (!(element = $(element))) return; + return Element.classNames(element).add(className); + }, + + removeClassName: function(element, className) { + if (!(element = $(element))) return; + return Element.classNames(element).remove(className); + }, + + // removes whitespace-only text node children + cleanWhitespace: function(element) { + element = $(element); + for (var i = 0; i < element.childNodes.length; i++) { + var node = element.childNodes[i]; + if (node.nodeType == 3 && !/\S/.test(node.nodeValue)) + Element.remove(node); + } + }, + + empty: function(element) { + return $(element).innerHTML.match(/^\s*$/); + }, + + scrollTo: function(element) { + element = $(element); + var x = element.x ? element.x : element.offsetLeft, + y = element.y ? element.y : element.offsetTop; + window.scrollTo(x, y); + }, + + getStyle: function(element, style) { + element = $(element); + var value = element.style[style.camelize()]; + if (!value) { + if (document.defaultView && document.defaultView.getComputedStyle) { + var css = document.defaultView.getComputedStyle(element, null); + value = css ? css.getPropertyValue(style) : null; + } else if (element.currentStyle) { + value = element.currentStyle[style.camelize()]; + } + } + + if (window.opera && ['left', 'top', 'right', 'bottom'].include(style)) + if (Element.getStyle(element, 'position') == 'static') value = 'auto'; + + return value == 'auto' ? null : value; + }, + + setStyle: function(element, style) { + element = $(element); + for (name in style) + element.style[name.camelize()] = style[name]; + }, + + getDimensions: function(element) { + element = $(element); + if (Element.getStyle(element, 'display') != 'none') + return {width: element.offsetWidth, height: element.offsetHeight}; + + // All *Width and *Height properties give 0 on elements with display none, + // so enable the element temporarily + var els = element.style; + var originalVisibility = els.visibility; + var originalPosition = els.position; + els.visibility = 'hidden'; + els.position = 'absolute'; + els.display = ''; + var originalWidth = element.clientWidth; + var originalHeight = element.clientHeight; + els.display = 'none'; + els.position = originalPosition; + els.visibility = originalVisibility; + return {width: originalWidth, height: originalHeight}; + }, + + makePositioned: function(element) { + element = $(element); + var pos = Element.getStyle(element, 'position'); + if (pos == 'static' || !pos) { + element._madePositioned = true; + element.style.position = 'relative'; + // Opera returns the offset relative to the positioning context, when an + // element is position relative but top and left have not been defined + if (window.opera) { + element.style.top = 0; + element.style.left = 0; + } + } + }, + + undoPositioned: function(element) { + element = $(element); + if (element._madePositioned) { + element._madePositioned = undefined; + element.style.position = + element.style.top = + element.style.left = + element.style.bottom = + element.style.right = ''; + } + }, + + makeClipping: function(element) { + element = $(element); + if (element._overflow) return; + element._overflow = element.style.overflow; + if ((Element.getStyle(element, 'overflow') || 'visible') != 'hidden') + element.style.overflow = 'hidden'; + }, + + undoClipping: function(element) { + element = $(element); + if (element._overflow) return; + element.style.overflow = element._overflow; + element._overflow = undefined; + } +}); + +var Toggle = new Object(); +Toggle.display = Element.toggle; + +/*--------------------------------------------------------------------------*/ + +Abstract.Insertion = function(adjacency) { + this.adjacency = adjacency; +} + +Abstract.Insertion.prototype = { + initialize: function(element, content) { + this.element = $(element); + this.content = content.stripScripts(); + + if (this.adjacency && this.element.insertAdjacentHTML) { + try { + this.element.insertAdjacentHTML(this.adjacency, this.content); + } catch (e) { + if (this.element.tagName.toLowerCase() == 'tbody') { + this.insertContent(this.contentFromAnonymousTable()); + } else { + throw e; + } + } + } else { + this.range = this.element.ownerDocument.createRange(); + if (this.initializeRange) this.initializeRange(); + this.insertContent([this.range.createContextualFragment(this.content)]); + } + + setTimeout(function() {content.evalScripts()}, 10); + }, + + contentFromAnonymousTable: function() { + var div = document.createElement('div'); + div.innerHTML = '' + this.content + '
            '; + return $A(div.childNodes[0].childNodes[0].childNodes); + } +} + +var Insertion = new Object(); + +Insertion.Before = Class.create(); +Insertion.Before.prototype = Object.extend(new Abstract.Insertion('beforeBegin'), { + initializeRange: function() { + this.range.setStartBefore(this.element); + }, + + insertContent: function(fragments) { + fragments.each((function(fragment) { + this.element.parentNode.insertBefore(fragment, this.element); + }).bind(this)); + } +}); + +Insertion.Top = Class.create(); +Insertion.Top.prototype = Object.extend(new Abstract.Insertion('afterBegin'), { + initializeRange: function() { + this.range.selectNodeContents(this.element); + this.range.collapse(true); + }, + + insertContent: function(fragments) { + fragments.reverse(false).each((function(fragment) { + this.element.insertBefore(fragment, this.element.firstChild); + }).bind(this)); + } +}); + +Insertion.Bottom = Class.create(); +Insertion.Bottom.prototype = Object.extend(new Abstract.Insertion('beforeEnd'), { + initializeRange: function() { + this.range.selectNodeContents(this.element); + this.range.collapse(this.element); + }, + + insertContent: function(fragments) { + fragments.each((function(fragment) { + this.element.appendChild(fragment); + }).bind(this)); + } +}); + +Insertion.After = Class.create(); +Insertion.After.prototype = Object.extend(new Abstract.Insertion('afterEnd'), { + initializeRange: function() { + this.range.setStartAfter(this.element); + }, + + insertContent: function(fragments) { + fragments.each((function(fragment) { + this.element.parentNode.insertBefore(fragment, + this.element.nextSibling); + }).bind(this)); + } +}); + +/*--------------------------------------------------------------------------*/ + +Element.ClassNames = Class.create(); +Element.ClassNames.prototype = { + initialize: function(element) { + this.element = $(element); + }, + + _each: function(iterator) { + this.element.className.split(/\s+/).select(function(name) { + return name.length > 0; + })._each(iterator); + }, + + set: function(className) { + this.element.className = className; + }, + + add: function(classNameToAdd) { + if (this.include(classNameToAdd)) return; + this.set(this.toArray().concat(classNameToAdd).join(' ')); + }, + + remove: function(classNameToRemove) { + if (!this.include(classNameToRemove)) return; + this.set(this.select(function(className) { + return className != classNameToRemove; + }).join(' ')); + }, + + toString: function() { + return this.toArray().join(' '); + } +} + +Object.extend(Element.ClassNames.prototype, Enumerable); +var Field = { + clear: function() { + for (var i = 0; i < arguments.length; i++) + $(arguments[i]).value = ''; + }, + + focus: function(element) { + $(element).focus(); + }, + + present: function() { + for (var i = 0; i < arguments.length; i++) + if ($(arguments[i]).value == '') return false; + return true; + }, + + select: function(element) { + $(element).select(); + }, + + activate: function(element) { + element = $(element); + element.focus(); + if (element.select) + element.select(); + } +} + +/*--------------------------------------------------------------------------*/ + +var Form = { + serialize: function(form) { + var elements = Form.getElements($(form)); + var queryComponents = new Array(); + + for (var i = 0; i < elements.length; i++) { + var queryComponent = Form.Element.serialize(elements[i]); + if (queryComponent) + queryComponents.push(queryComponent); + } + + return queryComponents.join('&'); + }, + + getElements: function(form) { + form = $(form); + var elements = new Array(); + + for (tagName in Form.Element.Serializers) { + var tagElements = form.getElementsByTagName(tagName); + for (var j = 0; j < tagElements.length; j++) + elements.push(tagElements[j]); + } + return elements; + }, + + getInputs: function(form, typeName, name) { + form = $(form); + var inputs = form.getElementsByTagName('input'); + + if (!typeName && !name) + return inputs; + + var matchingInputs = new Array(); + for (var i = 0; i < inputs.length; i++) { + var input = inputs[i]; + if ((typeName && input.type != typeName) || + (name && input.name != name)) + continue; + matchingInputs.push(input); + } + + return matchingInputs; + }, + + disable: function(form) { + var elements = Form.getElements(form); + for (var i = 0; i < elements.length; i++) { + var element = elements[i]; + element.blur(); + element.disabled = 'true'; + } + }, + + enable: function(form) { + var elements = Form.getElements(form); + for (var i = 0; i < elements.length; i++) { + var element = elements[i]; + element.disabled = ''; + } + }, + + findFirstElement: function(form) { + return Form.getElements(form).find(function(element) { + return element.type != 'hidden' && !element.disabled && + ['input', 'select', 'textarea'].include(element.tagName.toLowerCase()); + }); + }, + + focusFirstElement: function(form) { + Field.activate(Form.findFirstElement(form)); + }, + + reset: function(form) { + $(form).reset(); + } +} + +Form.Element = { + serialize: function(element) { + element = $(element); + var method = element.tagName.toLowerCase(); + var parameter = Form.Element.Serializers[method](element); + + if (parameter) { + var key = encodeURIComponent(parameter[0]); + if (key.length == 0) return; + + if (parameter[1].constructor != Array) + parameter[1] = [parameter[1]]; + + return parameter[1].map(function(value) { + return key + '=' + encodeURIComponent(value); + }).join('&'); + } + }, + + getValue: function(element) { + element = $(element); + var method = element.tagName.toLowerCase(); + var parameter = Form.Element.Serializers[method](element); + + if (parameter) + return parameter[1]; + } +} + +Form.Element.Serializers = { + input: function(element) { + switch (element.type.toLowerCase()) { + case 'submit': + case 'hidden': + case 'password': + case 'text': + return Form.Element.Serializers.textarea(element); + case 'checkbox': + case 'radio': + return Form.Element.Serializers.inputSelector(element); + } + return false; + }, + + inputSelector: function(element) { + if (element.checked) + return [element.name, element.value]; + }, + + textarea: function(element) { + return [element.name, element.value]; + }, + + select: function(element) { + return Form.Element.Serializers[element.type == 'select-one' ? + 'selectOne' : 'selectMany'](element); + }, + + selectOne: function(element) { + var value = '', opt, index = element.selectedIndex; + if (index >= 0) { + opt = element.options[index]; + value = opt.value; + if (!value && !('value' in opt)) + value = opt.text; + } + return [element.name, value]; + }, + + selectMany: function(element) { + var value = new Array(); + for (var i = 0; i < element.length; i++) { + var opt = element.options[i]; + if (opt.selected) { + var optValue = opt.value; + if (!optValue && !('value' in opt)) + optValue = opt.text; + value.push(optValue); + } + } + return [element.name, value]; + } +} + +/*--------------------------------------------------------------------------*/ + +var $F = Form.Element.getValue; + +/*--------------------------------------------------------------------------*/ + +Abstract.TimedObserver = function() {} +Abstract.TimedObserver.prototype = { + initialize: function(element, frequency, callback) { + this.frequency = frequency; + this.element = $(element); + this.callback = callback; + + this.lastValue = this.getValue(); + this.registerCallback(); + }, + + registerCallback: function() { + setInterval(this.onTimerEvent.bind(this), this.frequency * 1000); + }, + + onTimerEvent: function() { + var value = this.getValue(); + if (this.lastValue != value) { + this.callback(this.element, value); + this.lastValue = value; + } + } +} + +Form.Element.Observer = Class.create(); +Form.Element.Observer.prototype = Object.extend(new Abstract.TimedObserver(), { + getValue: function() { + return Form.Element.getValue(this.element); + } +}); + +Form.Observer = Class.create(); +Form.Observer.prototype = Object.extend(new Abstract.TimedObserver(), { + getValue: function() { + return Form.serialize(this.element); + } +}); + +/*--------------------------------------------------------------------------*/ + +Abstract.EventObserver = function() {} +Abstract.EventObserver.prototype = { + initialize: function(element, callback) { + this.element = $(element); + this.callback = callback; + + this.lastValue = this.getValue(); + if (this.element.tagName.toLowerCase() == 'form') + this.registerFormCallbacks(); + else + this.registerCallback(this.element); + }, + + onElementEvent: function() { + var value = this.getValue(); + if (this.lastValue != value) { + this.callback(this.element, value); + this.lastValue = value; + } + }, + + registerFormCallbacks: function() { + var elements = Form.getElements(this.element); + for (var i = 0; i < elements.length; i++) + this.registerCallback(elements[i]); + }, + + registerCallback: function(element) { + if (element.type) { + switch (element.type.toLowerCase()) { + case 'checkbox': + case 'radio': + Event.observe(element, 'click', this.onElementEvent.bind(this)); + break; + case 'password': + case 'text': + case 'textarea': + case 'select-one': + case 'select-multiple': + Event.observe(element, 'change', this.onElementEvent.bind(this)); + break; + } + } + } +} + +Form.Element.EventObserver = Class.create(); +Form.Element.EventObserver.prototype = Object.extend(new Abstract.EventObserver(), { + getValue: function() { + return Form.Element.getValue(this.element); + } +}); + +Form.EventObserver = Class.create(); +Form.EventObserver.prototype = Object.extend(new Abstract.EventObserver(), { + getValue: function() { + return Form.serialize(this.element); + } +}); +if (!window.Event) { + var Event = new Object(); +} + +Object.extend(Event, { + KEY_BACKSPACE: 8, + KEY_TAB: 9, + KEY_RETURN: 13, + KEY_ESC: 27, + KEY_LEFT: 37, + KEY_UP: 38, + KEY_RIGHT: 39, + KEY_DOWN: 40, + KEY_DELETE: 46, + + element: function(event) { + return event.target || event.srcElement; + }, + + isLeftClick: function(event) { + return (((event.which) && (event.which == 1)) || + ((event.button) && (event.button == 1))); + }, + + pointerX: function(event) { + return event.pageX || (event.clientX + + (document.documentElement.scrollLeft || document.body.scrollLeft)); + }, + + pointerY: function(event) { + return event.pageY || (event.clientY + + (document.documentElement.scrollTop || document.body.scrollTop)); + }, + + stop: function(event) { + if (event.preventDefault) { + event.preventDefault(); + event.stopPropagation(); + } else { + event.returnValue = false; + event.cancelBubble = true; + } + }, + + // find the first node with the given tagName, starting from the + // node the event was triggered on; traverses the DOM upwards + findElement: function(event, tagName) { + var element = Event.element(event); + while (element.parentNode && (!element.tagName || + (element.tagName.toUpperCase() != tagName.toUpperCase()))) + element = element.parentNode; + return element; + }, + + observers: false, + + _observeAndCache: function(element, name, observer, useCapture) { + if (!this.observers) this.observers = []; + if (element.addEventListener) { + this.observers.push([element, name, observer, useCapture]); + element.addEventListener(name, observer, useCapture); + } else if (element.attachEvent) { + this.observers.push([element, name, observer, useCapture]); + element.attachEvent('on' + name, observer); + } + }, + + unloadCache: function() { + if (!Event.observers) return; + for (var i = 0; i < Event.observers.length; i++) { + Event.stopObserving.apply(this, Event.observers[i]); + Event.observers[i][0] = null; + } + Event.observers = false; + }, + + observe: function(element, name, observer, useCapture) { + var element = $(element); + useCapture = useCapture || false; + + if (name == 'keypress' && + (navigator.appVersion.match(/Konqueror|Safari|KHTML/) + || element.attachEvent)) + name = 'keydown'; + + this._observeAndCache(element, name, observer, useCapture); + }, + + stopObserving: function(element, name, observer, useCapture) { + var element = $(element); + useCapture = useCapture || false; + + if (name == 'keypress' && + (navigator.appVersion.match(/Konqueror|Safari|KHTML/) + || element.detachEvent)) + name = 'keydown'; + + if (element.removeEventListener) { + element.removeEventListener(name, observer, useCapture); + } else if (element.detachEvent) { + element.detachEvent('on' + name, observer); + } + } +}); + +/* prevent memory leaks in IE */ +Event.observe(window, 'unload', Event.unloadCache, false); +var Position = { + // set to true if needed, warning: firefox performance problems + // NOT neeeded for page scrolling, only if draggable contained in + // scrollable elements + includeScrollOffsets: false, + + // must be called before calling withinIncludingScrolloffset, every time the + // page is scrolled + prepare: function() { + this.deltaX = window.pageXOffset + || document.documentElement.scrollLeft + || document.body.scrollLeft + || 0; + this.deltaY = window.pageYOffset + || document.documentElement.scrollTop + || document.body.scrollTop + || 0; + }, + + realOffset: function(element) { + var valueT = 0, valueL = 0; + do { + valueT += element.scrollTop || 0; + valueL += element.scrollLeft || 0; + element = element.parentNode; + } while (element); + return [valueL, valueT]; + }, + + cumulativeOffset: function(element) { + var valueT = 0, valueL = 0; + do { + valueT += element.offsetTop || 0; + valueL += element.offsetLeft || 0; + element = element.offsetParent; + } while (element); + return [valueL, valueT]; + }, + + positionedOffset: function(element) { + var valueT = 0, valueL = 0; + do { + valueT += element.offsetTop || 0; + valueL += element.offsetLeft || 0; + element = element.offsetParent; + if (element) { + p = Element.getStyle(element, 'position'); + if (p == 'relative' || p == 'absolute') break; + } + } while (element); + return [valueL, valueT]; + }, + + offsetParent: function(element) { + if (element.offsetParent) return element.offsetParent; + if (element == document.body) return element; + + while ((element = element.parentNode) && element != document.body) + if (Element.getStyle(element, 'position') != 'static') + return element; + + return document.body; + }, + + // caches x/y coordinate pair to use with overlap + within: function(element, x, y) { + if (this.includeScrollOffsets) + return this.withinIncludingScrolloffsets(element, x, y); + this.xcomp = x; + this.ycomp = y; + this.offset = this.cumulativeOffset(element); + + return (y >= this.offset[1] && + y < this.offset[1] + element.offsetHeight && + x >= this.offset[0] && + x < this.offset[0] + element.offsetWidth); + }, + + withinIncludingScrolloffsets: function(element, x, y) { + var offsetcache = this.realOffset(element); + + this.xcomp = x + offsetcache[0] - this.deltaX; + this.ycomp = y + offsetcache[1] - this.deltaY; + this.offset = this.cumulativeOffset(element); + + return (this.ycomp >= this.offset[1] && + this.ycomp < this.offset[1] + element.offsetHeight && + this.xcomp >= this.offset[0] && + this.xcomp < this.offset[0] + element.offsetWidth); + }, + + // within must be called directly before + overlap: function(mode, element) { + if (!mode) return 0; + if (mode == 'vertical') + return ((this.offset[1] + element.offsetHeight) - this.ycomp) / + element.offsetHeight; + if (mode == 'horizontal') + return ((this.offset[0] + element.offsetWidth) - this.xcomp) / + element.offsetWidth; + }, + + clone: function(source, target) { + source = $(source); + target = $(target); + target.style.position = 'absolute'; + var offsets = this.cumulativeOffset(source); + target.style.top = offsets[1] + 'px'; + target.style.left = offsets[0] + 'px'; + target.style.width = source.offsetWidth + 'px'; + target.style.height = source.offsetHeight + 'px'; + }, + + page: function(forElement) { + var valueT = 0, valueL = 0; + + var element = forElement; + do { + valueT += element.offsetTop || 0; + valueL += element.offsetLeft || 0; + + // Safari fix + if (element.offsetParent==document.body) + if (Element.getStyle(element,'position')=='absolute') break; + + } while (element = element.offsetParent); + + element = forElement; + do { + valueT -= element.scrollTop || 0; + valueL -= element.scrollLeft || 0; + } while (element = element.parentNode); + + return [valueL, valueT]; + }, + + clone: function(source, target) { + var options = Object.extend({ + setLeft: true, + setTop: true, + setWidth: true, + setHeight: true, + offsetTop: 0, + offsetLeft: 0 + }, arguments[2] || {}) + + // find page position of source + source = $(source); + var p = Position.page(source); + + // find coordinate system to use + target = $(target); + var delta = [0, 0]; + var parent = null; + // delta [0,0] will do fine with position: fixed elements, + // position:absolute needs offsetParent deltas + if (Element.getStyle(target,'position') == 'absolute') { + parent = Position.offsetParent(target); + delta = Position.page(parent); + } + + // correct by body offsets (fixes Safari) + if (parent == document.body) { + delta[0] -= document.body.offsetLeft; + delta[1] -= document.body.offsetTop; + } + + // set position + if(options.setLeft) target.style.left = (p[0] - delta[0] + options.offsetLeft) + 'px'; + if(options.setTop) target.style.top = (p[1] - delta[1] + options.offsetTop) + 'px'; + if(options.setWidth) target.style.width = source.offsetWidth + 'px'; + if(options.setHeight) target.style.height = source.offsetHeight + 'px'; + }, + + absolutize: function(element) { + element = $(element); + if (element.style.position == 'absolute') return; + Position.prepare(); + + var offsets = Position.positionedOffset(element); + var top = offsets[1]; + var left = offsets[0]; + var width = element.clientWidth; + var height = element.clientHeight; + + element._originalLeft = left - parseFloat(element.style.left || 0); + element._originalTop = top - parseFloat(element.style.top || 0); + element._originalWidth = element.style.width; + element._originalHeight = element.style.height; + + element.style.position = 'absolute'; + element.style.top = top + 'px';; + element.style.left = left + 'px';; + element.style.width = width + 'px';; + element.style.height = height + 'px';; + }, + + relativize: function(element) { + element = $(element); + if (element.style.position == 'relative') return; + Position.prepare(); + + element.style.position = 'relative'; + var top = parseFloat(element.style.top || 0) - (element._originalTop || 0); + var left = parseFloat(element.style.left || 0) - (element._originalLeft || 0); + + element.style.top = top + 'px'; + element.style.left = left + 'px'; + element.style.height = element._originalHeight; + element.style.width = element._originalWidth; + } +} + +// Safari returns margins on body which is incorrect if the child is absolutely +// positioned. For performance reasons, redefine Position.cumulativeOffset for +// KHTML/WebKit only. +if (/Konqueror|Safari|KHTML/.test(navigator.userAgent)) { + Position.cumulativeOffset = function(element) { + var valueT = 0, valueL = 0; + do { + valueT += element.offsetTop || 0; + valueL += element.offsetLeft || 0; + if (element.offsetParent == document.body) + if (Element.getStyle(element, 'position') == 'absolute') break; + + element = element.offsetParent; + } while (element); + + return [valueL, valueT]; + } +} \ No newline at end of file diff --git a/stable-1.0/bureau/admin/login.php b/stable-1.0/bureau/admin/login.php new file mode 100644 index 00000000..82e5ca72 --- /dev/null +++ b/stable-1.0/bureau/admin/login.php @@ -0,0 +1,44 @@ +checkid()) +{ + $error = $err->errstr(); + include("index.php"); + exit(); +} + +include("main.php"); +exit; + +?> diff --git a/stable-1.0/bureau/admin/logo.png b/stable-1.0/bureau/admin/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..418fdc3cd58a2c02d1c8dbfa0a11cc342580b86f GIT binary patch literal 9529 zcmZ`H;!xa+yIhboWx7fBM)woJi&m6nB9DY4?5smiUFX{5sJ;`}wwPRlb0=m^a_H4JlO_E-PMc zU{i^O4OC4Oht?89a}^dMF@lGdlN$PwIyT1NEjW?6H!%)fH%5^#=H9J;leRWIrZ>U= z;5Feial;48ju$17KW*{3&KE4!ST!Ro%CprwRFJ!$X z9<{a9c~s|MI#SHYHrHjzO*0d6@4zOK+{N@K`u<^{JKLg#TZkP?zVO zqVTUBPq!$1e5#(muYIZV~#|G-@5 z*-m{OY2pj<^x>Z3a#gLqb6i~LXVF!CI2CkXL#8K&F5}%|yax!Jbka{Da)@G{a4(^p z0s`8!rYsu#PEi-rs3oeCd7Du{MPXYWI@yiWtx6 z^OcA)ezT~}FGGeNE*4{*_<|7c2o(jr){4s4Du%4~Tw6{0@~zzvvKD2(XLF9ABftEG z5cL!ATP#}@?`iHKGi=0)HLLm8Yb5Hp-WyccP{2tMV?R(Q5eNtrw)6nynVyt0wR|K6 zsD%lf!zRSw$Lch;`_+_=NWj@gw5kh%YtP;t? zQoy>cdBDK1@47zqh-^vpY-T{=l`7XIFcJULzd3DbZEZB&O!JiW&^eQtK`6nK#~`6} zSM&7D^hq%vWCRghyOJ=*fjI(ibAo3A3r#Y-teHx-v+)5M=va&SLYVeUvGXG+$_DEw zmOLbiP%nP;X|zNDDF1TC6O%S9G}s$r0-mkn{AY$AoOXQRiqg0k@i2{;q|ZEPGnCDD$XQOA`lU zWaYU5swx215&}ZN!(?x=J%|ortn!H(ffS8UfxiOZ6ep#ZgxqWJk1bFA%c3CR@?D?U zTK9E0FivU`$*+Q*T4kZJ)LlJD9%cfn3u-2v1R9-#o5;SSLDPbVmETW~Ml!C&S*`Lx z&X9A8vha(^cH%a*Y4Y1;o0gtD?0i%(*-x1@Ow+%F=KJG3P6NV|P_0*de+N|-)M2hY z1ave&friT~-oxtOTp^rL3?1OMM7OMS@U0yAChtcee5Pz-i=gVO;uKg9XT4Fzfl zXt;VF$S3C@sF!#v{rG&wb0RzJ_uE;4v$O;KOk{BW)LYoDS*drcSN-js*mmWHZwLIS zQq9fkYK+6A{A>l4d5x|{8}Mt``7@GDe|ngK7)QmBH-5@FGpu*y)!H`x7ChfMq1G!8 zmAJC}QT;F~qZ5SO$)jN>MBL4g>jW;s@RHw~zLIjUd2A@l3hB4Jhc;kDpEnArtDBMY z6z8X+Z6Q9lzGSRTLwUYzz@UUJcER3FaKp2msy~yqK68OuEOZUlU{HY=GmF{$FnczjPK{A(aJXPn(DI#Vl%m;6DM>`5Pq}5S znQ_Q@-BDHGgw>}eeX9w-{{&t{a#m!CN2L193q6D%<)05#Exqw<$A0Aw=2Y!J%a=RY z;3zoUFMc4}Q~<3aKf03dC`CBxb*MGdr+wRUoLkF&<3{UYR6i`GVG>#LnSPu@pw zM?SWuY~QJ!)^Kyh?nqJogQ1K*F}A%!jUd4AN_zQg4qCJR=`pMp)g6IzeMQqNG7){- zMP=)x^A+?^AwbViYL!pV?uS0-6*H?Fld|KfU9(Ac((J+nu`y+nNEN0Ph!>CUU^~gL zZay{)>Zwt%^M8F>d&k`~ez< z0r9U4Z8`&ig4`@c;%pR)Yt@$)*@y^ZB?#~Vw&IWZr-@8A$7oe5rbuMG4rDlw#3(?EtC_hqP+Am zir+%;pI&n`A!lfVYofU-ULdWkW*S_?B0|w1Ez^dC09txcw;G}}CU1fQ3&oZ)RFSv# zQk!F0Jp){erL%ZXuQ1*r9BBhchG@L6q-Mz*D9j``#9S_Lya*C9jd%&_u@Zq4N;tv( zNOPBa``%Iyc-;UWbntpM-flhSbCnf4eEx`$r5LoSO7XYYj*e5X2~9yr)rv;pKVeEl zTS0be=G7Y{`LVraXoe=eJ$(uXx8H@NoDD)(3 zcDydJwZB&FOd{{b`wh>>p{~BXJx_pZcp}Fbi1d#S$0=7! zqqZZA;Bc0x6G}CZOk!z5?4{l&zUMK1t%g;7&j|4soT|$(iK-N@(b!~+qT>EnBdQsK zJmRAZ1Bqt5v-TZnL3RJTx4J;n-}0u86$Co5GrOxSm(wD2Z-m)m7L39+1+@QOa>cA+i+UzmfccUyy@Y|cmjF@Bwo zqDmBu{=?nrB&uq!ny)(UX+4lzw1$*)H8kObo>oL1$8nA3*#dRoaZt>W%VV6o5veW= zh+kib7wdR&&SB=xU2uXOW-Xe40 zXctka^PK&>UQaDb`Mr^9_+2tzi=+-}S3>WAIT3~RZ-xvaWBDjCU+5%Qq`3e!z16KI zwb@7XuJIoNj1G44)HATJD`oUV;4Wi+%|!_2skWSENLexM>n(j_Lcyi*T{|&KHa_5z zUs!m=v!J#BDo%uo5~2k6k=48?Bgu>L{bn?O1Fzi;njfsrOBAuzD;i_APvJKJ`;R7&l501%Vj` zomS7mGdr=a4cm9|GB>2kGDy`iyjag#^;L5lVUK^&SCSalez(rk6GIR{=q@2#EfH67 zb@3>}mLVjymvbL_<=oZvGk%Ntn(QVeX|DQ1n2&-E=eC1OOKJQ~AG=)tUS^IQYnSK^ zW&f3>rM{7x&QD@Si$+R#NDbfXQJbmGJL(u~jPyrA3rFJDa zCwM|)bz(k3hHpvvgkGeltx4`!m%(D&|jrVxtdTPDbJJe zSI<2Njc4r2t0k=vOQ;al9N&hPB{)TX74+*KFxpg6N(G%IPvgp?<-aeup6a`Qh>qtr z{5`g?!oTO;;y!tabJVhe7m|&+*o<+z6CL->AQH7!v@^kxK{cWbH;sAUles??SfVAO zk^@)!dQ8g8H90l$-6WiI`IRrBu zQ0Xf}`9RSa8O3^T>3=<&g4F;qf2H|ye7uu~C|>=jv{_dfzxLk07-*@> z=v)TOKdy|LX3VEh2M{LLWSQ01k%9F?@ebxiHEn{biyXBpoXe>_Y3>uP5-ZPv+*+%ca!*Yw|wu%ZVLisvtQk|@nSSJITp%QGOo`@@9_>~yyf}3Q* zvWT^!9o-io<1N(r1dd&5oqll^k5+y@(U_P`zQ$B3Gi1YJHQ}^%opn{9?HxyWV*3%%ERhfU)TWnQMd&|hwk_J=`-O>>^63)^0SjXL;Hv2o0bU;Wol z*xv{5bu(sQzzk3*;)5Y#(W~oL#phFy@rE7m;pN8r)vQRp@$t^#G6DC&jy#M=+HH={ z4@tywgjb^kk?u1{5pH84VpNYH(7yd7M*2^9u2<))g{}XP=W}HyYUNaG# zcObG7jy_5k;Y_en237lIAHXt7m4(sZN0HK+5S%UbgbEczewbt_bMMZU%0+JV@7P!s zs1gAW^NVwfwIJ3^_iqi7C@^&)h?nRoTBzonPqbwC&Z&(PMB;IP$Bc%uEbsVx$ClG|f~oew#0oe)^`dRgGDK&D;{cDu zB9EbhqkAPM;BUC@{%PrM0y;~4KW)X%q++@f45}UIXP5tuROLfuC02~LPwRwk6=@J5 zdAyaI%emA=!M`{p=Ap(*uzIqD(!5?fhS>X|CmwK2)pw3Q3+!OrhL?Cxv3mx^*yV0qH!2iK|JUqXlWs;cchNN zC24Mnc!)MxOV^)j-kz#zEy)nV0{N@!%J3Ob!I*H>CbfAam9sJ(D|Udy!_@N-j*a0o zOQXm#V0CoYscE&leZq=M$A){)WjvFnK>C*k7dz5p33~{g2UU|Bz?KvG?+SjbWEM1#n;p8MNcNo{E zes8*3{(5f0);`KJf}wz6FiLSt35f0ZGXc_np2#UFuw`n2;fT|iSuvhyJxSR(CvGxe z(uuQ`YF$Gxvzz=mGOBdL#!(^-PDZA6KDy=>pYK1znm8tF=D#mosN=iOl~&8Z{pm{a z=!QvH)3q+tkTBeSW{)yhayl6IV=3p4S*3zDA_ZslXeTRyO94Y%;5t!OX8rv8{C-K; zKlRz&oD4x(Uk>Duu{2U5Th5pY2e$ovno&b$x=Gd1xA9pvfm&ENyx^@&=Fzi$c;Z}T zX$xg+kTGu(55{s2`_}Q>?Yo3lCd11|adUqwPf%w+it%UF&w5yu3#BW*>O*DRa@Lh~ zQAnjqy^usB_yFXKJ}F(}71rV#C+><@-jTUsakpfw2ZWJ+&o@v09BC7ht@>aXnp~|LDn*_%gcnDk8$Ft=G5Ea6$jk2q* zpZSJU+5{CzUd3J-jC#rTLGt3ml3=NjxEdJzK7OyKhu9vUsudRPS;UC$5FB*$9c;c(3T zLJ_8UwFJ+pte?Dny6vl;^|v`akKr0zDZ#_EZ+K42lh0jLKuaklom-BGE!dtORDQoi ze<3m&sZZRDzwbf_flf-2ILpy-d(*c2g;7?H8gH(EbuqVYb7he-Y`$w;QoJ8@M0OGg zxl_)NNkK?!fgBUk-Hp3%^FT<~Z=tKnzq^Mm968^O&JyyRYZo{b<#ekh&jNv4%IL0VQ+&VAo=%p;~! zW{YL6X8yn}d9+^xW#os9%bSc01(BlL0j$oM$OF2^qfCC7{g=xcQ89`U8<$R|ECo6e zyEPVy)kdciyHn&=ZJ+s3ay#)a;XYv_LwMNHL~A$5pLOH|r+d``K^$EF7QQcvV0u%S zE9j!m)9G6dU!|=GrDP<&(*@y*@2iqtS3D+WstBCYbmaxUnooWC-G%a&nqCw~8V!|p zKH$DlkSw)ra%ylE{>$E$kKUn@&Pf>iUQv>_tBWw+>PbjwKnb6sgBI)EpVEGC#96wc zvEU7C5v?$sTnq@@ZSSyudp9RWEuQhm5jWCPV)_dzir^iIRxM?R=K~2Tbe>{&wLDgh~5;MqQOgDlz#3*Bq4WBzuh z#23w-qc|aZI&`s;GW!{ABOBPMCMtgpn=7?$SowA9RJWM7>pji2__n!XzAE9s)U68Z zyh^OxCfI6WiWGVg8Dh+ILw+pGYvfy^Bl>U8dD2S|y_PH8fK;5natHzRlzK~8X&GbH z*#5q$oNjPXctGmZQ6>(qGuzfgfLY6@Z8^%#GuRbRX>f??H*o$W2dRS?lwqB*g>mv6qb_=mO{1FGq3!t6lTu_O>=;FV1GMhO7Gq^yVYgGp@=Xy_ zHE+zuHFFlLp;MMEHs{+4iCN_zTA8(#D6$2DHreU|sZW3;Tfsi#h0qW=1c+4E4~N~^ z2P}EvG$E4>(Vs0y@2?(VYg)P(4(*6KJGFTn;B?=Qn*278Kg4yvWl>+myfa0l!nPe* zoSb-Ky1Izi+EN6>o|2pQM|{+hj}P;bR~YsI$H z{f_Z}A+^}=9#!h;BLqplm7D-dUKIi~Zf2kMRx|rtt}k*H5N&IVr}HeqnQ1EZc1)h- zUU1X)xiqvaUY2stHNmdQc6B-eKBFDp@lA@JB-6r*c=CBPl9hj|EJIQ87(yw4<$AVu z8vmW^GMAgflz7Nc=!^RjLk#7h79Ss*)yA&QmSO|hf$>77Bw?J2*0nzpw2A0C(7mt# zJR0Rhr+KAT+gZ~Dh2hscZCi&IMfLl8=$YOeb+TW>GR5;NY)JMJW5)&JQT0PhxF%73 zlj-*>1En1$1YJe?`qb~mD@;V_Nu$S*bAgRmsGmrX z5~9mA6V^~)h{SuI?0!~i-48U(6Vkxmx;pEku8!V~7iMA81>Loo-AWI$SB8AUesNax z2_i}YNTZe^RC9+n#8n!)`^7i>B#$@jImJ55PrR%sZa)r#j)XINlle`<95rpU>Gg^( zuT7s1DJI0%>nE#|QsTZ+u#Cjgj`U682aZFsQq2{ar{T{`9$Xlao;+e!cQt||@T zjss@pZA)1h!aia(_F=|gN@`->vdY`YK<{^d#4Xy&Y>KwLo%34 z4lDOzb!J7+`*j2B$Hy?G2R8&nDrxD=Se#(tsqZO2e(}BwaghgcbFovV8~D9T zCyV%y8*i^xzO|eWz3vEY75C`0(NQ2*;be30V6Rz2XmRYm8n0nK8GK>A&I095Y3u&& zWx^GhC}9$mNyI)>!j%wr*AbNx0d9|!c>5+CdB1m_)_#~jt0NqIcy`60dFP!bIw(@&mql9w z2X6VXb-4afg}5PX2m%IaJ`t6n#% zW`InJw9lf%8x5T;3#g4XTWpt}eC)h@VVi3T`%Y<|H5HMH*!&0Y$7=CO1l4c|Di8id zu++cREY&rFT_3eUH6f_K z)MFbD`%cA*W$O+1q?Y@wkS#vCSZvsk_KBud^T#~-(&*tTmubyMt6A(OISY}^ifnMI zKXy|ZMiA*4wDd7p!7u@9*l^eKHlY`}=XaQwFqa>GN+k?U<(B=V`MKQ&T;sFF7aCu$ zVwHDF*T704`+!KHLbnBr_(D$oILO7*hB}$w98!1_mIHJh-L=F6{fOl~=pnQy!U*|0 z^efFxX16aYQ)&$vKsZw9BHE{ZOYasV6?ZIqT)Jyr$&6nsf3j#T{BLK}HD<2!`k!M< z9%C5cYlR5ra`@88s)bk+hgiCOoq`UxM3W^(2EIe*x4#@MvhnA&w6<+ntc3MOpQ+kY z5+5wROKAKl*b*j52$ue4u)G-)sY-*pJ>tPVG6eVK>5jG&0tJR?`nTk)LWb?hk$<@C z@oA*1<}0r=hg5j<7-94z*~7p4MC@4a!u^P#NgV@LW!7gy&Jxm&UrLBvmh3jeIL9G1 zWJk^}uGhbQ_^A+f>N1j?MWABNppEj{im2FH6q~ONm~PIte@Nb^Bz0{7jx3LI0-A#> z?&;D10O-p9xB$l<1(wD{PSyq>$i>$t;}>pc0(H*_uzuo0lD#IeC-4{PCoEaAgq=bK zEhQ^%V#6rNTie`#a3!Y)Vz(LE@40FU;ehT~8?JtmQe8o}Y(GeMRsPVFY0sOc2>9dwu@sC1O_yq(gJIxAWmUJ< zC3h^6qpT6)Vnkx7#?{W)?OAaEPu#v60bGJut^;8DDUB2nV0_1QeaKn?mp9g)BUq zx-9;_6Q}xjUKwU>qJycIFZ~S!*jy%>lTti*RPgAG%Q{8L+eLuB+b~aij5~KT)y%u% zRRy}j-=$_-4qUg4*D0h$@+Qe}8R8*&g>L8Y)pn$~ke-#D)lQ z{0m(4!lR?9WJaF-sT+CyJUsyN0yjncEAf4~G-9~oLe`vH`%{$Y_YE7=y&@U98kl6c zLEm@pOZ;i7CD3I)-Y?Uw9k}a~N-Eh?`-D zx5HrQ)9kCAKi+E?%H%18Hc=6Na`lFNvVxl{fWjdgxoZVg{gLK`p2?Wp6_!<5!Rg6P ztFiMRf%Mj9yh`H)n4@hDgvHN|?a}Y3+BWuN_VibtaTg*9lM{Sn(&(|>#g)iR zTGVS^mbQ$S1$**AO_mY9V3&yH$a}|{Vh}CBQTA*CPZ%j=`1+!aLv}ho4$iBWtO|Sx zB(F;3(XV0~)|{$VlmxBPu2$`ImY0{q(hjA5Rk{^q_#p{!X)q>R7)c;X1>4pqgd-d$ zv`e43$dh%QS8*-}3gwaYrl+MJiG%G5cXdTeNLuau6a0vJ_Mkz_y0T(&CvS~h7rtd@ z&l%M-5l%Hni_k=&w$JyhI-~Wjd_-`j|n!!_?B6`PG4(G1Rr|e z!xL3->FhaR8!eX4hJT{`rpf9$u-|>`a%7&LZ}qES>DbvTU4>6K0xH!Vp1ANH{X=l8 zfF=D}+FcKHKp<6BwRQ4vS-0RqVyFnt#cGV#(W&O#6?ey6$iadP=S&@lPGzl>n7*h9 zME9Tcu&Z85bv{|&4EJ`c@SLCVOa#9dlk}-)qEOUjC|jZI<(%uo`?mp@x}C)b^11ub z)0#}}0v-&cN1;|^;%hprFue5D;L(c?rZ$8@?_8(kQYSMl6oWi;v>btrgU2mE!zK$_EA`|!31x+=dS1_!w_g9b*mSBRCr(7c>ZJKV8y~zxIgcl?L7tn0vRRxL{^aX4__6n-$0alV`h|>!9-G@B_w>BeH`HC&B=jGX2T@8c@DlSG zh4)%-hAm)bAKmFktJv>GK~^uda0Hi6q~|lo`f+k7kjiGZv^|M_*8D*StMDb~KN=9S zs8TQ2eo0cZ!jyR4r(#^R;Ih#i;!OzxxT$mTf02cFU_XdO{!Ro|N-IEq@|pnB;tFC_ IB8CC~12NK%0{{R3 literal 0 HcmV?d00001 diff --git a/stable-1.0/bureau/admin/logo2.png b/stable-1.0/bureau/admin/logo2.png new file mode 100644 index 0000000000000000000000000000000000000000..a4c5c1a30f34f70a2f5b4b4bf9e9468ff0fbe8ed GIT binary patch literal 5310 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�@QIx7@O(zijIuW?MQdYeBnCLoAIR`mTI}&->z13Bp3Es5asg z#eJ4F{assath+6rf04oyUWbYvO?9{}M!TeCk+Rl|?Phn*@ocQKExW)Y+K98!b+K9B zfI(Do;8shlb1mYtfo2}kXroKuL+yfyi+B>t>VXc?f&v&ex;C6G_&#RvC5l7>@?2Wy zx8)o$4dt{;6h7iqOtv6hk1_THr-)@omFR}RIKkY6ExYYR(5*>dQGK(AIwP@~F5r0L zxbii^B=$(Nf1=`_CITO~@;BrIUrca;4B)T8cjH`_4Lk{q1x^Dz`Zv{}k~rp~in%q1 zQNWI7Zn{eS{awV*kRFLTn{`-7?FCBo?|%rW>P!;tc8)zmYU#_2<8FvucWoQSSdOaP za=e#yEKzNAZjRI6U@ZltMY05RTWfze#_8vqmTMcDyu6mVk-(L4`nt+;?GY{MLQTf= z;}!@A(=sQMJ6dA3)@RaQYO}cw#-Jt=D~t-)nW_K&3-D`{=lGL2{jJpM?=b2h{bQ~E zT>1vN8@L#ib-h+go_H9j)uPn|7=j8X8iEQx8iIOaMm!8h9Rhbp#lqc(iZWTICG5?e zO=3k+XGe*?qQrNQ#=bup5C8V*zVlnqW|U=2qnf#{LSOU81SM8;Hdu|mW>v&je z`F>6^NUW9+>!7~#`X%tn)pv475$h65-?=SlH&?fbcUE|vzOJ^7!~*r0xY%`Pwvt$& zN({stp8Y$MDvY9zbP^3I>BxsH$Iki+Tj+Z`$6_qUBZSl&l*~5nYByLupRLE-8r%mioyE*(^j}HT4FzXXrJOCv76A*hCaO7js*B#XL2`mCUn>DWvy(V zk2*JO&OheRE`YWM1rD{`;BC#oUdGY#m=^%sZDO_WPBi92t7~N+Wx%?VFt&+&zBG8O z2+0B3Uh%KN^0|LUE<&oR!dTdg|0KIfT7vh0H&IcT4!x;(mZKR#SG4p0b9Ceaq^c^6 z5hIz3rxl=*5oV!0|G6AJi=9sEPacvIDf=MIB*ZOxXFUyd1SL=|oSRTJzETQ?z22u3 zx1pZz9FwResYoiDSRI3zsG}l)aj0XQem1devKsV>T$pQZDQGI4?K@5q#H#= zW$vS8ab+FFmnr(DaM;93UMvSL)1T9TNl8B5k*G+F-xJ3@ViT+5v02+%zXaAN`B=}l zeEx>*Zb*LQ)3WfMj)JuoM_*fF**F>Sr2?^XP|x@4nIz*8z^~$|gA|1IsH-Lwi1lOO zXC%*KZun58%uC^P5RBraSffU%QC3+Q_kak$1#v&>1Aw^ZGrIBnx>1M`P+!y`ENg zR4Dbi9L-w#P9i2rvJ>kXj;5b~Hwnhm8(6A8F9(WKm{gNd@nV-)RNzYBr9>Jhiz;lI z!{&JQ4wY53<77yZSj~WkTiA9H@rzyT<@2SF4r`xDk2Z{Zf$nQc3)|gw zoblA7573!-fqTHf$*T8@f59nnPUp Qc>n+a07*qoM6N<$g1SK^7ytkO literal 0 HcmV?d00001 diff --git a/stable-1.0/bureau/admin/mail_add.php b/stable-1.0/bureau/admin/mail_add.php new file mode 100644 index 00000000..a45e5a95 --- /dev/null +++ b/stable-1.0/bureau/admin/mail_add.php @@ -0,0 +1,100 @@ + array ("request", "string", ""), + "dst_mail" => array ("request", "string", ""), + "many" => array ("request", "integer", 0), + "pop" => array ("request", "integer", 1), +); +getFields($fields); + +?> +

            :

            +$error

            "; +} + +// If a dst email is indicated, it's for an alias +// So we desactivate pop by default +if (!empty($dst_mail)) $pop=0; + +?> +
            +
            +
            + + + + + + + + + + +
            + @ +
            +

            + onclick="hide('poptbl');"> + onclick="show('poptbl');"> +

            +
            + + + +
            +
            +
            ()
            + + " /> + " onclick="document.location='mail_list.php?domain='"/> +
            +
            + +

            + +

            + + array ("request", "array", ""), + "domain" => array ("request", "string", ""), +); +getFields($fields); + +if (!is_array($d)) { + $d[]=$d; +} + +reset($d); + +include_once ("head.php"); + +if ($confirm=="y") { + +while (list($key,$val)=each($d)) { + if (!$mail->del_mail($val)) { + $error.=sprintf(_("The email address %s does not exist!")."
            ",$val); + } else { + $error.=sprintf(_("The email address %s has been deleted!")."
            ",$val); + } +} +include("mail_list.php"); + exit(); +} + +?> + + +

            :

            +
            +
            +

            +
            + + + diff --git a/stable-1.0/bureau/admin/mail_doadd.php b/stable-1.0/bureau/admin/mail_doadd.php new file mode 100644 index 00000000..b5a4217f --- /dev/null +++ b/stable-1.0/bureau/admin/mail_doadd.php @@ -0,0 +1,65 @@ +getfromform(); + +$fields = array ( + "domain" => array ("request", "string", ""), + "email" => array ("request", "string", ""), + "pop" => array ("request", "integer", 0), + "pass" => array ("request", "string", ""), + "passconf" => array ("request", "string", ""), + "alias" => array ("request", "string", ""), +); +getFields($fields); + +if ($pass != $passconf) { + $error = _("Passwords do not match"); + include("mail_add.php"); + exit(); +} + +if (!$mail->add_mail($domain,$email,$pop,$pass,$alias,$trash->expiration_date_db)) { + $error=$err->errstr(); + $addok=0; + include ("mail_add.php"); +} else { + $addok=1; + $error=sprintf (_("The email address %s has been successfully created"),"$email@$domain"); + if ($many) { + unset($email,$pass,$alias); + include("mail_add.php"); + } else { + include("mail_list.php"); + } + exit(); +} + +?> diff --git a/stable-1.0/bureau/admin/mail_dodel.php b/stable-1.0/bureau/admin/mail_dodel.php new file mode 100644 index 00000000..28b274b5 --- /dev/null +++ b/stable-1.0/bureau/admin/mail_dodel.php @@ -0,0 +1,51 @@ +del_mail($val)) { + $error.=sprintf(_("The mailbox %s does not exist!")."
            ",$val); + echo $error; + } else { + $error.=sprintf(_("The mailbox %s has been deleted!")."
            ",$val); + echo $error; + } +include("mail_list.php"); +} + +exit(); + +?> \ No newline at end of file diff --git a/stable-1.0/bureau/admin/mail_doedit.php b/stable-1.0/bureau/admin/mail_doedit.php new file mode 100644 index 00000000..9847156e --- /dev/null +++ b/stable-1.0/bureau/admin/mail_doedit.php @@ -0,0 +1,68 @@ +getfromform(); + + +$fields = array ( + "domain" => array ("request", "string", ""), + "email" => array ("request", "string", ""), + "pop" => array ("request", "integer", 0), + "pass" => array ("request", "string", ""), + "passconf" => array ("request", "string", ""), + "alias" => array ("request", "string", ""), +); +getFields($fields); + + +if ($pass != $passconf) { + $error = _("Passwords do not match"); + include ("mail_edit.php"); + exit(); +} + +if (!$mail->put_mail_details($email,$pop,$pass,$alias,$trash->expiration_date_db)) { + $error_edit=$err->errstr(); + $addok=0; + include ("mail_edit.php"); + +} else { + $ok=sprintf(_("The email address %s has been successfully changed"),$email)."
            "; + $addok=1; + $t=explode("@",$email); + $email=$t[0]; + $error=$ok; + include("mail_list.php"); + exit(); +} +?> diff --git a/stable-1.0/bureau/admin/mail_edit.php b/stable-1.0/bureau/admin/mail_edit.php new file mode 100644 index 00000000..e70f6b58 --- /dev/null +++ b/stable-1.0/bureau/admin/mail_edit.php @@ -0,0 +1,116 @@ + array ("request", "string", ""), + "domain" => array ("request", "string", ""), +); +getFields($fields); + +if (!$res=$mail->get_mail_details($email)) +{ + $error=$err->errstr(); + echo $error; +} +else +{ + +?> +

            :

            +
            +
            +$error_edit

            "; + $error_edit=""; + +} else { + $pop=$res["pop"]; + $pass=$res["password"]; + $alias=$res["alias"]; +} ?> + +
            + + +is_trash ) { ?> + + + + + + + + +
            + +%s"),$email); ?>
            It will be delete on "); echo $res['trash_info']->human_display(); ?>
            +

            + onclick="hide('poptbl');"> + onclick="show('poptbl');"> +

            +
            + + + +
            +
            +
            + "._("WARNING: turning POP/IMAP off will DELETE the stored messages in this email address. This email address will become a simple redirection.").""; +} ?> +
            ()
            + " /> + " onclick="document.location='mail_list.php?domain='"/> +
            +
            + +

            + +

            + + + diff --git a/stable-1.0/bureau/admin/mail_list.php b/stable-1.0/bureau/admin/mail_list.php new file mode 100644 index 00000000..335ce077 --- /dev/null +++ b/stable-1.0/bureau/admin/mail_list.php @@ -0,0 +1,143 @@ + array ("request", "string", ""), + + "letter" => array ("get", "string", ""), +); +getFields($fields); + +if(!$domain) +{ + include("main.php"); + exit(); +} + +if(!$res=$mail->enum_doms_mails($domain,1,$letter)) { + $error=$err->errstr(); +?> +

            :

            +$error

            "; +} +?> +
            +
            +
            +

            + + + +"; + echo $val."
            "; +} + +?> +

            +

            +" /> - "/> +

            + +

            +NOT be able to get it back!"); ?> +

            + +

            + %s"),$domain); ?> +

            + %s"),$domain); ?> +

            + +

            :

            +$error

            "; +} +?> +
            +
            +

            + %s"),$domain); ?> +

            + %s"),$domain); ?> +

            +enum_doms_mails_letters($domain)) + $error=$err->errstr(); +else{ + echo "

            "; + __("Show only mail starting by:"); + echo " "; + for($i=0;$i$val "; + } + echo " ".sprintf(_("All")).""; + echo "

            "; +} + + if ($res["count"]) { +?> +
            + + + + + +"; + echo ""; +?> + + +"; + if ($val["pop"]) { + echo ""; + } else { + echo ""; + } + echo ""; + echo ""; + +} +?> +
            ".format_size($val["size"])." "; + if (! is_null($val['expiration_date'])) { + // It's a temporary account + $trash_info=new m_trash(); + $trash_info->set_from_db($val["expiration_date"]); + echo __("This account will be deleted on"); echo "
            ".$trash_info->human_display(); + } + echo "
            +
            +" /> +
            + + + diff --git a/stable-1.0/bureau/admin/main.php b/stable-1.0/bureau/admin/main.php new file mode 100644 index 00000000..f01130cc --- /dev/null +++ b/stable-1.0/bureau/admin/main.php @@ -0,0 +1,102 @@ +"; +__("Last Login: "); + +echo format_date('the %3$d-%2$d-%1$d at %4$d:%5$d',$mem->user["lastlogin"]); +printf(" "._('from: %1$s ')."
            ",$mem->user["lastip"]); +echo "

            "; + +if ($mem->user["lastfail"]) { + printf(_("%1\$d login failed since last login")."
            ",$mem->user["lastfail"]); +} + +$mem->resetlast(); + +/* + use MagpieRSS to syndicate content from another site if available + this should work, since the debian package installs it in + /usr/share/php, which is in the include path +*/ +$rss_url = variable_get('rss_feed'); +$inc = @include_once('magpierss/rss_fetch.inc'); +if ($inc && $rss_url) { + $rss = fetch_rss($rss_url); + + if ($rss) { + echo "

            " . _("Latest news") . "

            "; + foreach ($rss->items as $item) { + $href = $item['link']; + $title = $item['title']; + echo "

            $title

            "; + echo ''.$item['pubdate'] .' - '; + echo ''.$item['dc']['creator'].''; + echo $item['summary']; + } + } + } + + +if($admin->enabled) { + $expiring = $admin->renew_get_expiring_accounts(); + + if(count($expiring) > 0) { + echo "

            " . _("Expired or about to expire accounts") . "

            \n"; + echo "\n"; + echo "\n"; + if (is_array($expiring)) { + foreach($expiring as $account) { + echo ""; + if($admin->checkcreator($account['uid'])) + echo ""; + else + echo ""; + echo "\n"; + } +} + echo "
            "._("uid").""._("Last name, surname").""._("Expiry")."
            {$account['uid']}{$account['nom']}, {$account['prenom']}{$account['nom']}, {$account['prenom']}{$account['expiry']}
            \n"; + } +} + +$c=@mysql_fetch_array(mysql_query("SELECT * FROM membres WHERE uid='".$cuid."';")); + +define("QUOTASONE","1"); +require_once("quotas_oneuser.php"); + + +?> + diff --git a/stable-1.0/bureau/admin/mem_admin.php b/stable-1.0/bureau/admin/mem_admin.php new file mode 100644 index 00000000..8926be72 --- /dev/null +++ b/stable-1.0/bureau/admin/mem_admin.php @@ -0,0 +1,52 @@ + + Purpose of file: Manage administrators preferences + ---------------------------------------------------------------------- +*/ +require_once("../class/config.php"); + +$fields = array ( + "admlist" => array ("request", "string", ""), +); +getFields($fields); + +if (!$mem->adminpref($admlist)) { + $error=$err->errstr(); +} else { + $error=_("Your administrator preferences has been successfully changed."); +} + +include_once("head.php"); + +?> +

            +$error

            "; + } +?> + diff --git a/stable-1.0/bureau/admin/mem_chgmail.php b/stable-1.0/bureau/admin/mem_chgmail.php new file mode 100644 index 00000000..25237fdb --- /dev/null +++ b/stable-1.0/bureau/admin/mem_chgmail.php @@ -0,0 +1,54 @@ + array ("request", "string", ""), +); +getFields($fields); + +if (!($cle=$mem->ChangeMail1($newmail))) { + $error=$err->errstr(); +} + +include_once("head.php"); + +?> +

            +$error

            "; + include_once("foot.php"); + exit(); + } +printf(_("help_mem_chgmail %s"),$newmail); +?> +

            + \ No newline at end of file diff --git a/stable-1.0/bureau/admin/mem_cm.php b/stable-1.0/bureau/admin/mem_cm.php new file mode 100644 index 00000000..ccdffa65 --- /dev/null +++ b/stable-1.0/bureau/admin/mem_cm.php @@ -0,0 +1,52 @@ + +

            +$error

            "; + include_once("foot.php"); + exit(); + } +?> +
            + + + + +
            +
            +
            " />
            +
            + \ No newline at end of file diff --git a/stable-1.0/bureau/admin/mem_cm2.php b/stable-1.0/bureau/admin/mem_cm2.php new file mode 100644 index 00000000..48f09429 --- /dev/null +++ b/stable-1.0/bureau/admin/mem_cm2.php @@ -0,0 +1,52 @@ +ChangeMail2($cookie,$cle,$usr)) { + $error=$err->errstr(); +} + +include_once("head.php"); + +?> +

            +$error

            "; + include_once("foot.php"); + exit(); + } + +__("The mailbox has been successfully changed."); + +include_once("foot.php"); + +?> \ No newline at end of file diff --git a/stable-1.0/bureau/admin/mem_logout.php b/stable-1.0/bureau/admin/mem_logout.php new file mode 100644 index 00000000..d8884e60 --- /dev/null +++ b/stable-1.0/bureau/admin/mem_logout.php @@ -0,0 +1,51 @@ +del_session(); + +if (!$charset) $charset="UTF-8"; +@header("Content-Type: text/html; charset=$charset"); + +?> + + + +<?php __("Disconnected"); ?> + + + + +

            + +
            + + + \ No newline at end of file diff --git a/stable-1.0/bureau/admin/mem_param.php b/stable-1.0/bureau/admin/mem_param.php new file mode 100644 index 00000000..c6b59da5 --- /dev/null +++ b/stable-1.0/bureau/admin/mem_param.php @@ -0,0 +1,115 @@ +set_help_param($showhelp); + $error=_("Your help setting has been updated."); +} + +?> +

            +$error"; + include_once("foot.php"); + exit(); + } +?> +
            +

            + :
            +user["canpass"]) { + __("You cannot change your password"); + echo "

            "; + +} else { + + __("help_chg_passwd"); ?> +

            +
            + + + + + +
            (1)
            (2)
            " />
            +
            +
            + +
            +
            + + + + + +

            +
            user["mail"]; ?>
            " />
            +
            +
            +
            +
            + + + + +

            +
            get_help_param()) echo "checked=\"checked\""; ?> />
            " />
            +
            +
            +user["su"]) { +?> +
            +

            + : +

            +
            + + + +
            " />
            +
            +
            + +
            + + + diff --git a/stable-1.0/bureau/admin/mem_passwd.php b/stable-1.0/bureau/admin/mem_passwd.php new file mode 100644 index 00000000..da2bdc67 --- /dev/null +++ b/stable-1.0/bureau/admin/mem_passwd.php @@ -0,0 +1,49 @@ +passwd($oldpass,$newpass,$newpass2)) { + $error=$err->errstr(); +} else { + $error=_("Your password has been successfully changed."); +} + +include_once("head.php"); + +?> +

            +$error"; + include("foot.php"); + exit(); + } +?> + \ No newline at end of file diff --git a/stable-1.0/bureau/admin/menu.php b/stable-1.0/bureau/admin/menu.php new file mode 100644 index 00000000..84a2af30 --- /dev/null +++ b/stable-1.0/bureau/admin/menu.php @@ -0,0 +1,52 @@ + +

            Menu user["login"]; ?>

            + + + +

            AlternC +
            + +

            diff --git a/stable-1.0/bureau/admin/menu_adm.php b/stable-1.0/bureau/admin/menu_adm.php new file mode 100644 index 00000000..6cfc1677 --- /dev/null +++ b/stable-1.0/bureau/admin/menu_adm.php @@ -0,0 +1,50 @@ +checkRight()) { ?> + + diff --git a/stable-1.0/bureau/admin/menu_aide.php b/stable-1.0/bureau/admin/menu_aide.php new file mode 100644 index 00000000..a2169a83 --- /dev/null +++ b/stable-1.0/bureau/admin/menu_aide.php @@ -0,0 +1,33 @@ + + diff --git a/stable-1.0/bureau/admin/menu_brouteur.php b/stable-1.0/bureau/admin/menu_brouteur.php new file mode 100644 index 00000000..5f08273d --- /dev/null +++ b/stable-1.0/bureau/admin/menu_brouteur.php @@ -0,0 +1,35 @@ + + \ No newline at end of file diff --git a/stable-1.0/bureau/admin/menu_dom.php b/stable-1.0/bureau/admin/menu_dom.php new file mode 100644 index 00000000..8c251846 --- /dev/null +++ b/stable-1.0/bureau/admin/menu_dom.php @@ -0,0 +1,58 @@ +getquota("dom"); + +if ($q["t"] > 0) +{ + +?> + + \ No newline at end of file diff --git a/stable-1.0/bureau/admin/menu_ftp.php b/stable-1.0/bureau/admin/menu_ftp.php new file mode 100644 index 00000000..58b204a7 --- /dev/null +++ b/stable-1.0/bureau/admin/menu_ftp.php @@ -0,0 +1,50 @@ +getquota("ftp"); + +if ($q["t"] > 0) { + +?> + + \ No newline at end of file diff --git a/stable-1.0/bureau/admin/menu_lang.php b/stable-1.0/bureau/admin/menu_lang.php new file mode 100644 index 00000000..5faebb34 --- /dev/null +++ b/stable-1.0/bureau/admin/menu_lang.php @@ -0,0 +1,17 @@ + + diff --git a/stable-1.0/bureau/admin/menu_mail.php b/stable-1.0/bureau/admin/menu_mail.php new file mode 100644 index 00000000..38434c9d --- /dev/null +++ b/stable-1.0/bureau/admin/menu_mail.php @@ -0,0 +1,57 @@ +getquota("mail"); +$r = $quota->getquota("dom"); +if ($q["t"] > 0 && $r["u"] > 0) { + +?> + + \ No newline at end of file diff --git a/stable-1.0/bureau/admin/menu_mem.php b/stable-1.0/bureau/admin/menu_mem.php new file mode 100644 index 00000000..0bc158c4 --- /dev/null +++ b/stable-1.0/bureau/admin/menu_mem.php @@ -0,0 +1,36 @@ + + + \ No newline at end of file diff --git a/stable-1.0/bureau/admin/menu_quota.php b/stable-1.0/bureau/admin/menu_quota.php new file mode 100644 index 00000000..c71d0bc8 --- /dev/null +++ b/stable-1.0/bureau/admin/menu_quota.php @@ -0,0 +1,79 @@ + + diff --git a/stable-1.0/bureau/admin/menu_sql.php b/stable-1.0/bureau/admin/menu_sql.php new file mode 100644 index 00000000..0918ae86 --- /dev/null +++ b/stable-1.0/bureau/admin/menu_sql.php @@ -0,0 +1,44 @@ +getquota("mysql"); +if ($q["t"]) { +?> + + diff --git a/stable-1.0/bureau/admin/menu_sta2.php b/stable-1.0/bureau/admin/menu_sta2.php new file mode 100644 index 00000000..95eababb --- /dev/null +++ b/stable-1.0/bureau/admin/menu_sta2.php @@ -0,0 +1,39 @@ +getquota("sta2"); +$r = $quota->getquota("dom"); +if ($q["t"] > 0 && $r["u"] > 0) { +?> + + \ No newline at end of file diff --git a/stable-1.0/bureau/admin/menu_web.php b/stable-1.0/bureau/admin/menu_web.php new file mode 100644 index 00000000..de3d19ba --- /dev/null +++ b/stable-1.0/bureau/admin/menu_web.php @@ -0,0 +1,35 @@ + + \ No newline at end of file diff --git a/stable-1.0/bureau/admin/mxlist.php b/stable-1.0/bureau/admin/mxlist.php new file mode 100644 index 00000000..cc8372d3 --- /dev/null +++ b/stable-1.0/bureau/admin/mxlist.php @@ -0,0 +1,47 @@ +check_slave_account($_SERVER['PHP_AUTH_USER'],$_SERVER['PHP_AUTH_PW'])) { + $mail->echo_domain_list(); + } else { + header('WWW-Authenticate: Basic realm="MX List Authentication"'); + header('HTTP/1.0 401 Unauthorized'); + exit; + } + } + +?> \ No newline at end of file diff --git a/stable-1.0/bureau/admin/phpinfo.php b/stable-1.0/bureau/admin/phpinfo.php new file mode 100644 index 00000000..9f016e1f --- /dev/null +++ b/stable-1.0/bureau/admin/phpinfo.php @@ -0,0 +1,5 @@ + diff --git a/stable-1.0/bureau/admin/powered2.jpg b/stable-1.0/bureau/admin/powered2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..063f8039f420fa1dc675fbdb50b2109304a98b52 GIT binary patch literal 2076 zcmb7;c|6mPAICr2Y$FNE5xFaV+mbC zjtPsByUaIR5+aPkwx9m^{T`3spWoN(&)56?e7%Gt!bw2N)yc&P0D(XNVatF}0BpC5 zIv*N)#@--0HcU7U*aM<47#s!_g~Q=uVxrq5=%uG$&($-?PjghID$sY(vOiWBdTtWeXP%uHG&?f&{!WIB23aA0e z5D*#wBS8=(NZ1Z20{|HEXZ-&p0)@cf0QgUclLEkCFbD#Hh=4$1e=a~^hzJxZ4Zzf8 zjP2lPcUfHE6%Bcl-5x45Pe?mB% zq!X0Q^YMn?6-Xi^*Y4yZ=@vx(_-7Z)QoJN@aF4Zzgp)7J=VZiGCjN#O$wa1D3d(2I zG4WAFO6<%R0*LjE)`Ne)b+190Kj8UlKi*MWdK`2+`EVkl;FZ9+@L9y&OucqxE<19K zXVG^v6@WaPUnr>fx{=bbL%#8R1L+%6HdZ^rIb)H1b#mb?8PD)u_My8n%0WS5WsKCVlrQVqo>_Mx3a3_`Z8;}vQO@%JIGv(WPtx=cun zw?QcVF)=r?K?pEqvy!d{NKCp^yC{wt(CEPIIBQrY=cb|WaU-YMZGD>BteT~>LD$kY zX;({^tTtC(BUo?xJ3rGi%Td9R^oo!(9=Q|;=+5*Fr@ryY^KrT>8%bi`w+_fR5xh0o zUG7yy(=;dR1TO;lYi{MzAYJA_;Aj@}TEN2czomj2q4=v&Ru?!niIbOjBG0alqe`vJF~}Y%ll@lRDlRuv z&oNdxcvU3;3IL{|v+eKK`(2Ph4?fnYS7lJ9nf&$JLA7xoGq^jnkYk=NO&YXYUCZKo zT&Uf?w+`ulO4Xw-`{z0?&j`LqW-~|ce2eT!PLAQIr`-1SeL<}s)8n*oV)y(tEWu0om31Q--wzG^GA!tpP9~o zg$;^HDB){u8^k=tvi2aY!+9aM3|Iud;z z$Q9atU}BTkc_PJ(6J{hx@e9OHMk68;vC0U#2Il?ndWdZJQJAw&r!3+s!tS>M=L3}% zt8o!1%;*d%h_!B6t90u3ecN%e*+x%6>*9Ci01+4D&}K@pK$4JN``mA&+bgew5qsTU zC-JVcwnJo@;;xk@8_~Tw1fM;)L%*n(TZ2cB*uw`3M@Sq(|CCO#K?|6r1XW3NQImYD z@yK|D%$w>+KlRfnEPCwr!jVoLrT0#2%gx@lkS;D~J4*Xa(91OS)cM}+n;|2Anctwh zL`Gn)J2&bnp*1}XJND9|{HW~+izR|XlV2@%h-794KQ`M&{gG~1(d7`MqH9`vDN!;d zfw6gt+2{7MR5AON=aHPUBI-}ZoU>rvw!s)TrEOH}$-?{)pR?{; +

            :

            +
            +
            +getquota(); +if (!is_array($q)) { + echo "

            "._("No quotas for this account, or quotas currently unavailable!")."

            "; +} else { + echo ""; + $qlist=$quota->qlist(); + reset($qlist); + $col=1; + while (list($key,$val)=each($qlist)) { + if (!$q[$key]["t"]) continue; + $col=3-$col; + echo ""; + echo ""; + } elseif ($key == 'web') { + echo " "; + } else { + echo " "; + } + + echo ""; + } + echo "
            "._("Quota").""._("Used").""._("Total")."
            "; + if ($q[$key]["u"] >= $q[$key]["t"]) echo ""; + echo _($val); + if ($q[$key]["u"] >= $q[$key]["t"]) echo ""; + + if ($key == 'bw_web') { + echo " ". format_size($q[$key]["u"]) ." ". format_size($q[$key]["t"]) ." ". format_size($q[$key]["u"] * 1024) . " ". format_size($q[$key]["t"] * 1024) ." ".$q[$key]["u"]." ".$q[$key]["t"]." 
            "; +} +?> + diff --git a/stable-1.0/bureau/admin/quotas_oneuser.php b/stable-1.0/bureau/admin/quotas_oneuser.php new file mode 100644 index 00000000..099aebe3 --- /dev/null +++ b/stable-1.0/bureau/admin/quotas_oneuser.php @@ -0,0 +1,144 @@ + +
            +

            +"._("Web Space:")." "; + echo sprintf("%.1f", $totalweb / 1024)." "._("MB"); + echo "

            "; + +?> +
            + + + + + + + + + +"; + echo ""; + echo ""; + $ms=$e["size"]; + if ($totalmail) + $pc=intval(100*$ms/$totalmail); + else + $pc=0; + if ($mode==0) { + echo sprintf("%.1f", $ms / 1024)." "._("MB"); + } elseif ($mode==1) { + echo sprintf("%.1f", $pc)." %"; + } else { + echo "\"".$pc."%\""; + } + echo ""; + } + } +?> + +
            ".$d["domaine"]."".str_replace("_","@",$e["alias"])."
            +

             

            + + + + + + + + + +"; + $ds=$d["size"]; + if ($totaldb) + $pc=intval(100*$ds/$totaldb); + else + $pc=0; + if ($mode==0) { + echo sprintf("%.1f", $ds / 1024/1024)." "._("MB"); + } elseif ($mode==1) { + echo sprintf("%.1f", $pc)." %"; + } else { + echo "\"".$pc."%\""; + } + echo ""; + } +?> + +
            ".$d["db"]."
            + + +

             

            + + + + + + + + + +"; + $ds=$d["size"]; + if ($totallist) + $pc=intval(100*$ds/$totallist); + else + $pc=0; + if ($mode==0) { + echo sprintf("%.1f", $ds / 1024)." "._("MB"); + } elseif ($mode==1) { + echo sprintf("%.1f", $pc)." %"; + } else { + echo "\"".$pc."%\""; + } + echo ""; + } +?> + +
            ".$d["list"]."
            + + +
            +
            diff --git a/stable-1.0/bureau/admin/quotas_users.php b/stable-1.0/bureau/admin/quotas_users.php new file mode 100644 index 00000000..1a40eaae --- /dev/null +++ b/stable-1.0/bureau/admin/quotas_users.php @@ -0,0 +1,403 @@ +enabled) { + __("This page is restricted to authorized staff"); + exit(); +} + +include_once ("head.php"); + +?> +

            Tableau de bord

            +
            +
            +$error

            "; +} +?> +

            + + +

            +

            +

            + + + + + + + + + + + + + + + + + + + + + + +

            + + $n["login"], + "domaines" => $domList, + ); + } + + $totalweb = 0; $totalmail = 0; $totallist = 0; $totaldb = 0; + $dc = 0; $mc = 0; $mlc = 0; $dbc = 0; + + foreach ($mList as $mUID => $mData) + { + list($tmpweb) = @mysql_fetch_array(mysql_query("SELECT SUM(size) FROM size_web WHERE uid = '" . $mUID . "'")); + $totalweb += $tmpweb; + + if (!empty($mData["domaines"])) + { + foreach ($mData["domaines"] as $domaine) + { + $dc++; + + list($tmpmail) = @mysql_fetch_array(mysql_query("SELECT SUM(size) FROM size_mail WHERE alias LIKE '%\_" . $domaine . "'")); + $totalmail += $tmpmail; + list($mc) = @mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM size_mail WHERE alias LIKE '%\_" . $domaine . "'")); + + list($tmplist) = @mysql_fetch_array(mysql_query("SELECT SUM(size) FROM size_mailman WHERE list LIKE '%@" . $domaine . "'")); + $totallist += $tmplist; + } + } + + list($mlc) = @mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM size_mailman WHERE uid = '" . $mUID . "'")); + list($tmpdb) = @mysql_fetch_array(mysql_query("SELECT SUM(size) FROM size_db WHERE db = '" . $mData["login"] . "' OR db LIKE '" . $mData["login"] . "\_%'")); + $totaldb += $tmpdb; + list($dbc) = @mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM size_db WHERE db = '" . $mData["login"] . "' OR db LIKE '" . $mData["login"] . "\_%'")); + } + + $totaltotal=$totalweb+$totallist+$totalmail+($totaldb/1024); // en Ko + } + else + { + list($totalweb)=@mysql_fetch_array(mysql_query("SELECT SUM(size) FROM size_web;")); + list($totalmail)=@mysql_fetch_array(mysql_query("SELECT SUM(size) FROM size_mail;")); + list($totallist)=@mysql_fetch_array(mysql_query("SELECT SUM(size) FROM size_mailman;")); + list($totaldb)=@mysql_fetch_array(mysql_query("SELECT SUM(size) FROM size_db;")); + + $totaltotal=$totalweb+$totallist+$totalmail+($totaldb/1024); // en Ko + + list($dc)=@mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM domaines;")); + list($mc)=@mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM size_mail;")); + list($mlc)=@mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM size_mailman;")); + list($dbc)=@mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM size_db;")); + } + +?> +
            +
            + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
             
             Mo
             Mo
             Mo
             Mo
             Mo
            +
            +
            + +
            + +
            + + + + + + + + + + + + + + + + $n["login"], + "domaines" => $domList, + ); + } + + $totalweb = 0; $totalmail = 0; $totallist = 0; $totaldb = 0; + $dc = 0; $mc = 0; $mlc = 0; $dbc = 0; + + foreach ($mList as $mUID => $mData) + { + list($tmpweb) = @mysql_fetch_array(mysql_query("SELECT SUM(size) FROM size_web WHERE uid = '" . $mUID . "'")); + $totalweb += $tmpweb; + + if (!empty($mData["domaines"])) + { + foreach ($mData["domaines"] as $domaine) + { + $dc++; + + list($tmpmail) = @mysql_fetch_array(mysql_query("SELECT SUM(size) FROM size_mail WHERE alias LIKE '%\_" . $domaine . "'")); + $totalmail += $tmpmail; + list($mc) = @mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM size_mail WHERE alias LIKE '%\_" . $domaine . "'")); + + list($tmplist) = @mysql_fetch_array(mysql_query("SELECT SUM(size) FROM size_mailman WHERE list LIKE '%@" . $domaine . "'")); + $totallist += $tmplist; + } + } + + list($mlc) = @mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM size_mailman WHERE uid = '" . $mUID . "'")); + list($tmpdb) = @mysql_fetch_array(mysql_query("SELECT SUM(size) FROM size_db WHERE db = '" . $mData["login"] . "' OR db LIKE '" . $mData["login"] . "\_%'")); + $totaldb += $tmpdb; + list($dbc) = @mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM size_db WHERE db = '" . $mData["login"] . "' OR db LIKE '" . $mData["login"] . "\_%'")); + } + +} +else +{ + list($totalweb)=@mysql_fetch_array(mysql_query("SELECT SUM(size) FROM size_web;")); + list($totalmail)=@mysql_fetch_array(mysql_query("SELECT SUM(size) FROM size_mail;")); + list($totallist)=@mysql_fetch_array(mysql_query("SELECT SUM(size) FROM size_mailman;")); + list($totaldb)=@mysql_fetch_array(mysql_query("SELECT SUM(size) FROM size_db;")); +} + +$totaltotal=$totalweb+$totallist+$totalmail+($totaldb/1024); // en Ko + +if ($cuid != 2000) +{ + $r = mysql_query("SELECT * FROM membres WHERE creator = '" . $cuid . "' ORDER BY login;"); +} +else +{ + $r=mysql_query("SELECT * FROM membres ORDER BY login;"); +} + +while ($c=mysql_fetch_array($r)) { + + echo ""; + + // Espace WEB + list($ws)=@mysql_fetch_array(mysql_query("SELECT size FROM size_web WHERE uid='".$c["uid"]."';")); + + if ($totalweb) + $pc=intval(100*$ws/$totalweb); + else + $pc=0; + +if ($mode==0) { + echo sprintf("%.1f", $ws / 1024)." "._("MB"); +} elseif ($mode==1) { + echo sprintf("%.1f",$pc)." %"; +} else { + echo "\"".$pc."%\""; +} + echo ""; + + // Espace Mail : + +if ($totalmail) + $pc=intval(100*$ms/$totalmail); +else + $pc=0; + +if ($mode==0) { + echo sprintf("%.1f", $ms / 1024)." Mo"; +} elseif ($mode==1) { + echo sprintf("%.1f",$pc)." %"; +} else { + echo "\"".$pc."%\""; +} + + echo ""; + + // Espace Mailman : +if ($totallist) + $pc=intval(100*$mls/$totallist); +else + $pc=0; + +if ($mode==0) { + echo sprintf("%.1f", $mls / 1024)." "._("MB"); +} elseif ($mode==1) { + echo sprintf("%.1f",$pc)." %"; +} else { + echo "\"".$pc."%\""; +} + +echo ""; + +// Espace DB : +list($ds)=@mysql_fetch_array(mysql_query("SELECT SUM(size) FROM size_db WHERE db='".$c["login"]."' OR db LIKE '".$c["login"]."\_%';")); + +if ($totaldb) + $pc=intval(100*$ds/$totaldb); +else + $pc=0; + +if ($mode==0) { + echo sprintf("%.1f", $ds / 1024/1024)." "._("MB"); +} elseif ($mode==1) { + echo sprintf("%.1f",$pc)." %"; +} else { + echo "\"".$pc."%\""; +} + +echo ""; + +$ts=$ds/1024+$ws+$ms+$mls; +if ($mode==0) { + echo sprintf("%.1f", $ts/1024)." "._("MB"); +} elseif ($mode==1) { + echo sprintf("%.1f",(100*$ts/$totaltotal))." %"; +} else { + if ($totaltotal) { + $pc=intval(100*$ts/$totaltotal); + } else { + $pc=0; + } + echo "\"".$pc."%\""; +} + + +echo ""; + +echo ""; + +} + +?> + + + +
            "; + + // On affiche le compte et ses domaines : + echo "".$c["login"]."
            \n"; + $s=mysql_query("SELECT * FROM domaines WHERE compte='".$c["uid"]."';"); + $dc=0; // Domain Count + $ms=0; // Mail Space + $mls=0; + while ($d=mysql_fetch_array($s)) { +if ($sd) echo "   - ".$d["domaine"]."
            \n"; + $dc++; + list($mstmp)=@mysql_fetch_array(mysql_query("SELECT SUM(size) FROM size_mail WHERE alias LIKE '%\_".$d["domaine"]."';")); + $ms+=$mstmp; + list($mlstmp)=@mysql_fetch_array(mysql_query("SELECT SUM(size) FROM size_mailman WHERE list LIKE '%@".$d["domaine"]."';")); + $mls+=$mlstmp; + } + + // Mail Count + list($mc)=@mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM mail_domain WHERE type=0 AND uid='".$c["uid"]."';")); + // Mailman List Count + list($mlc)=@mysql_fetch_array(mysql_query("SELECT COUNT(*) FROM mailman WHERE uid='".$c["uid"]."';")); + echo "
            $dc$mc$mlc
            +
            +
            + + + diff --git a/stable-1.0/bureau/admin/sql_add.php b/stable-1.0/bureau/admin/sql_add.php new file mode 100644 index 00000000..761d8b33 --- /dev/null +++ b/stable-1.0/bureau/admin/sql_add.php @@ -0,0 +1,63 @@ +cancreate("mysql")) { + $error=_("err_mysql_1"); + $fatal=1; +} + +?> +

            +$error

            "; + if ($fatal) { + include_once("foot.php"); + exit(); + } + } +?> +
            + + +
            + user["login"]; ?>_ +
            +
            +" /> +
            + + + + diff --git a/stable-1.0/bureau/admin/sql_addmain.php b/stable-1.0/bureau/admin/sql_addmain.php new file mode 100644 index 00000000..bb7dd6af --- /dev/null +++ b/stable-1.0/bureau/admin/sql_addmain.php @@ -0,0 +1,39 @@ +new_mysql($pass)) { + $error=$err->errstr(); +} else { + $error=_("Your database has been successfully created"); +} +include("sql_list.php"); +exit(); +?> diff --git a/stable-1.0/bureau/admin/sql_admin.php b/stable-1.0/bureau/admin/sql_admin.php new file mode 100644 index 00000000..4e6c2cd1 --- /dev/null +++ b/stable-1.0/bureau/admin/sql_admin.php @@ -0,0 +1,53 @@ +get_dblist()) { + $error=$err->errstr(); +} else { + setcookie("REMOTE_USER",$r[0]["login"],0,"/"); + setcookie("REMOTE_PASSWORD",$r[0]["pass"],0,"/"); + if ($lang) $l="&lang=".substr($lang,0,2); + // TODO : make it an absolute url ! (even in httpS :)) + header("Location: /alternc-sql/index.php?server=1"); + exit(); +} + +include_once("head.php"); + +?> +

            +$error

            "; + } +?> + diff --git a/stable-1.0/bureau/admin/sql_bck.php b/stable-1.0/bureau/admin/sql_bck.php new file mode 100644 index 00000000..a5acb4bd --- /dev/null +++ b/stable-1.0/bureau/admin/sql_bck.php @@ -0,0 +1,120 @@ + array ("request", "string", ""), + "bck_mode" => array ("request", "integer", 0), + "bck_history" => array ("request", "integer", 7), + "bck_gzip" => array ("request", "integer", 0), + "bck_dir" => array ("request", "string", "/"), + +); +getFields($fields); + +if (!$r=$mysql->get_mysql_details($id)) { + $error=$err->errstr(); +} + +?> +

            +
            +
            +$error

             

            "; + } + +if (is_array($r)) { +?> +

            + +
            + + + + + + + + + + + + + + + + + + + +
            + + >
            + >
            + >
            +
            + + >
            + >
            + +
            " /> + +
            + " /> + " onclick="document.location='sql_list.php'"/> +
            +
            +show_help("sql_bck"); + } else { + echo "

            "; +__("You currently have no database defined"); + echo "

            "; + } +?> + + diff --git a/stable-1.0/bureau/admin/sql_del.php b/stable-1.0/bureau/admin/sql_del.php new file mode 100644 index 00000000..f99bfbbf --- /dev/null +++ b/stable-1.0/bureau/admin/sql_del.php @@ -0,0 +1,84 @@ +del_db(substr($key,4)); + if (!$r) { + $error.=$err->errstr()."
            "; + } else { + $error.=sprintf(_("The database %s has been successfully deleted"),$mem->user["login"].(($val)?"_":"").$val)."
            "; + } + } + } + include("sql_list.php"); + exit(); +} + +$found=false; +foreach($_POST as $key=>$val) { + if (substr($key,0,4)=="del_") { + $found=true; + } +} +if (!$found) { + $error=_("Please check which databases you want to delete"); + include("sql_list.php"); + exit(); + } + +?> +

            +
            +
            +



            +

            +
            +

            + +".$mem->user["login"].(($val)?"_":"")."$val
            \n"; + } +} + +?> +
            +" /> " onclick="history.back()" /> +

            +
            + diff --git a/stable-1.0/bureau/admin/sql_doadd.php b/stable-1.0/bureau/admin/sql_doadd.php new file mode 100644 index 00000000..4270ffb4 --- /dev/null +++ b/stable-1.0/bureau/admin/sql_doadd.php @@ -0,0 +1,47 @@ +cancreate("mysql")) { + $error=_("err_mysql_1"); + include("sql_add.php"); + exit; +} + +if (!$mysql->add_db($dbn)) { + $error=$err->errstr(); + include("sql_add.php"); + exit; +} + +include("sql_list.php"); + +?> \ No newline at end of file diff --git a/stable-1.0/bureau/admin/sql_dobck.php b/stable-1.0/bureau/admin/sql_dobck.php new file mode 100644 index 00000000..11f04c4f --- /dev/null +++ b/stable-1.0/bureau/admin/sql_dobck.php @@ -0,0 +1,51 @@ + array ("request", "string", ""), + "bck_mode" => array ("request", "integer", 0), + "bck_history" => array ("request", "integer", 7), + "bck_gzip" => array ("request", "integer", 0), + "bck_dir" => array ("request", "string", "/"), + +); +getFields($fields); + + +if (!$mysql->put_mysql_backup($id,$bck_mode,$bck_history,$bck_gzip,$bck_dir)) { + $error=$err->errstr(); + include("sql_bck.php"); + exit(); +} else { + $error=_("Your backup parameters has been successfully changed."); +} +include("sql_list.php"); +?> diff --git a/stable-1.0/bureau/admin/sql_dorestore.php b/stable-1.0/bureau/admin/sql_dorestore.php new file mode 100644 index 00000000..c1aad8d0 --- /dev/null +++ b/stable-1.0/bureau/admin/sql_dorestore.php @@ -0,0 +1,61 @@ +get_mysql_details($id)) { + $error=$err->errstr(); +} +?> +

            +
            +
            + +

            +

            +restore($restfile,true,$id)) { + $error=$err->errstr(); +} else { + $error=_("Your database has been restored, check out the previous text for error messages."); +} + +echo "

            $error

             

            "; +} else { + +__("You currently have no database defined"); + +} +?> +

            + diff --git a/stable-1.0/bureau/admin/sql_getparam.php b/stable-1.0/bureau/admin/sql_getparam.php new file mode 100644 index 00000000..2ab4283b --- /dev/null +++ b/stable-1.0/bureau/admin/sql_getparam.php @@ -0,0 +1,70 @@ +get_dblist()) { + $error=$err->errstr(); +} + +?> +

            +
            +
            +$error

             

            "; + } + +?> +

            :

            + + + + + + + + + + + + + + + + + +
            user["login"]; ?>
            server; ?>
            + +

            + + + diff --git a/stable-1.0/bureau/admin/sql_list.php b/stable-1.0/bureau/admin/sql_list.php new file mode 100644 index 00000000..dd585fdd --- /dev/null +++ b/stable-1.0/bureau/admin/sql_list.php @@ -0,0 +1,106 @@ +get_dblist(); + +?> +

            +
            +
            +$error

            "; + } + +if ($r) { + +echo "

            "._("help_sql_list_ok")."

            "; +?> + +
            + + + +get_db_size($val['db']); + $col=3-$col; +?> + + + + + + + + + +
             
            " name="del_" value="" />
            + " class="inb" /> +
            +
            + +

             

            + +cancreate("mysql")) { ?> +

            + +

            +

            + + +"._("help_sql_list_no")."

            "; + +?> +
            + + + + + + +
            user["login"]; ?>
            server; ?>
            user["login"]; ?>
            " />
            +
            + + + diff --git a/stable-1.0/bureau/admin/sql_pass.php b/stable-1.0/bureau/admin/sql_pass.php new file mode 100644 index 00000000..74916969 --- /dev/null +++ b/stable-1.0/bureau/admin/sql_pass.php @@ -0,0 +1,42 @@ +put_mysql_details($pass)) { + $error=$err->errstr(); + include("sql_passchg.php"); + exit(); +} else { + $error=_("Your password has been successfully changed."); + include("sql_list.php"); + exit(); +} +?> diff --git a/stable-1.0/bureau/admin/sql_passchg.php b/stable-1.0/bureau/admin/sql_passchg.php new file mode 100644 index 00000000..61ed7216 --- /dev/null +++ b/stable-1.0/bureau/admin/sql_passchg.php @@ -0,0 +1,65 @@ +get_dblist()) { + $error=$err->errstr(); +} + +?> +

            +
            +
            +$error

            "; + } + +echo "

            "._("Enter the new password of your MySQL database and click 'change the password' to change it")."

            "; +?> + +
            + + + + + + +
            user["login"]; ?>
            server; ?>
            + " /> + " onclick="document.location='sql_list.php'"/> +
            +
            + + diff --git a/stable-1.0/bureau/admin/sql_restore.php b/stable-1.0/bureau/admin/sql_restore.php new file mode 100644 index 00000000..62f6af58 --- /dev/null +++ b/stable-1.0/bureau/admin/sql_restore.php @@ -0,0 +1,76 @@ + array ("request", "string", ""), +); +getFields($fields); + +if (!$r=$mysql->get_mysql_details($id)) { + $error=$err->errstr(); +} + +?> +

            +
            +
            +$error

             

            "; + } + +if (is_array($r)) { +?> +

            +"; +__("Warning: Write the complete path and the filename.
            For example if your backups are in the directory /Backups,
            write /Backups/file.sql.gz (where file.sql.gz is the filename)."); +echo "

            "; +?> +
            + +

            +

            " />

            +
            +"; +__("Note: If the filename ends with .gz, it will be uncompressed before."); +echo "

            "; + } else { + +echo "

            "; +__("You currently have no database defined"); + echo "

            "; + + } +?> + diff --git a/stable-1.0/bureau/admin/sql_users_add.php b/stable-1.0/bureau/admin/sql_users_add.php new file mode 100644 index 00000000..870a0ffc --- /dev/null +++ b/stable-1.0/bureau/admin/sql_users_add.php @@ -0,0 +1,91 @@ + array ("request", "string", ""), + "password" => array ("request", "string", ""), + "passconf" => array ("request", "string", ""), +); +getFields($fields); + +if (!$quota->cancreate("mysql_users")) { + $error=_("err_mysql_13"); + $fatal=1; +} + +?> +

            +
            +
            +$error

            "; + if ($fatal) { +?> + + + +
            + + + + + + + + + + + + + + + +
            user["login"]; ?>_
            + " /> + " onclick="document.location='sql_users_list.php'"/> +
            +
            + + diff --git a/stable-1.0/bureau/admin/sql_users_del.php b/stable-1.0/bureau/admin/sql_users_del.php new file mode 100644 index 00000000..3166e892 --- /dev/null +++ b/stable-1.0/bureau/admin/sql_users_del.php @@ -0,0 +1,73 @@ +del_user($val); + if (!$r) { + $error.=$err->errstr()."
            "; + } else { + $error.=sprintf(_("The user %s has been successfully deleted"),$mem->user["login"]."_$val")."
            "; + } + } + } + include("sql_users_list.php"); + exit(); +} + +include_once("head.php"); + +?> +

            +
            +
            +



            +

            +
            +

            + +".$mem->user["login"]."_$val
            \n"; + } +} + +?> +
            +" /> - " onclick="history.back()" /> +

            +
            + diff --git a/stable-1.0/bureau/admin/sql_users_doadd.php b/stable-1.0/bureau/admin/sql_users_doadd.php new file mode 100644 index 00000000..f483af41 --- /dev/null +++ b/stable-1.0/bureau/admin/sql_users_doadd.php @@ -0,0 +1,54 @@ + array ("request", "string", ""), + "password" => array ("request", "string", ""), + "passconf" => array ("request", "string", ""), +); +getFields($fields); + + +if (!$quota->cancreate("mysql_users")) { +// $error=_("err_mysql_1"); + include("sql_users_add.php"); + exit; +} + +if (!$mysql->add_user($usern,$password,$passconf)) { + $error=$err->errstr(); + include("sql_users_add.php"); + exit; +} + +include("sql_users_list.php"); + +?> diff --git a/stable-1.0/bureau/admin/sql_users_dopassword.php b/stable-1.0/bureau/admin/sql_users_dopassword.php new file mode 100644 index 00000000..f6998609 --- /dev/null +++ b/stable-1.0/bureau/admin/sql_users_dopassword.php @@ -0,0 +1,42 @@ + array ("request", "string", ""), + "password" => array ("request", "string", ""), + "passwordconf" => array ("request", "string", ""), +); +getFields($fields); + +$mysql->change_user_password($id,$password,$passwordconf); + +include("sql_users_list.php"); + +?> diff --git a/stable-1.0/bureau/admin/sql_users_dorights.php b/stable-1.0/bureau/admin/sql_users_dorights.php new file mode 100644 index 00000000..2cb78e5c --- /dev/null +++ b/stable-1.0/bureau/admin/sql_users_dorights.php @@ -0,0 +1,47 @@ +get_dblist(); + +for( $i=0 ; $iset_user_rights($id,$dblist[$i]["name"],$rights); +} + +$error=_("The rights has been successfully applied to the user"); +include("sql_users_list.php"); + +?> diff --git a/stable-1.0/bureau/admin/sql_users_list.php b/stable-1.0/bureau/admin/sql_users_list.php new file mode 100644 index 00000000..677fd213 --- /dev/null +++ b/stable-1.0/bureau/admin/sql_users_list.php @@ -0,0 +1,95 @@ +get_userslist(); +$rdb=$mysql->get_dblist(); + +?> +

            +
            +
            +$error

             

            "; + } + +if ($rdb) { + if($r){ +echo "

            "._("help_sql_users_list_ok")."

            "; +?> + +
            + + + + + + + + + + + + +
             
            + " name="del_" value="" /> + ">">
            + " class="inb" /> +
            +
            + +

             

            + +cancreate("mysql_users")) { +?> +

            +
            +

            + + diff --git a/stable-1.0/bureau/admin/sql_users_password.php b/stable-1.0/bureau/admin/sql_users_password.php new file mode 100644 index 00000000..a20e9ccf --- /dev/null +++ b/stable-1.0/bureau/admin/sql_users_password.php @@ -0,0 +1,71 @@ + array ("request", "string", ""), +); +getFields($fields); + +$r=$mysql->get_user_dblist($id); + +?> +

            user["login"]."_".$id ?>

            +
            +
            +$error

             

            "; + } + +?> + +
            + + + + + + + + + + + + + +
            + " /> + " onclick="document.location='sql_users_list.php'"/> +
            +
            + + diff --git a/stable-1.0/bureau/admin/sql_users_rights.php b/stable-1.0/bureau/admin/sql_users_rights.php new file mode 100644 index 00000000..16897b8c --- /dev/null +++ b/stable-1.0/bureau/admin/sql_users_rights.php @@ -0,0 +1,113 @@ + array ("request", "string", ""), +); +getFields($fields); + +$r=$mysql->get_user_dblist($id); + +?> +

            user["login"]."_".$id) ?>

            +
            +
            +$error

             

            "; + } + +if ($r) { + +echo "

            "._("help_sql_users_rights_ok")."

            "; +?> + +
            + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
              SELECTINSERTUPDATEDELETECREATEDROPREFERENCESINDEXALTERCREATE_TMP_TABLELOCK
            user["login"].($val["db"]?"_":"").$val["db"] ?>');"> + " name="" /> +
            + " class="inb" /> +
            +
            +

             

            + + + diff --git a/stable-1.0/bureau/admin/sta2_add_raw.php b/stable-1.0/bureau/admin/sta2_add_raw.php new file mode 100644 index 00000000..bb720e86 --- /dev/null +++ b/stable-1.0/bureau/admin/sta2_add_raw.php @@ -0,0 +1,66 @@ +cancreate("sta2")) { + $error=_("You cannot add any new statistics, your quota is over."); +} + +include_once("head.php"); +?> +

            +
            +
            +$error

            "; + include_once("foot.php"); + exit(); + } +?> +
            + + + +
            + + +
            + +
            +
            +" /> +
            +show_help("sta2_add"); ?> + diff --git a/stable-1.0/bureau/admin/sta2_del_raw.php b/stable-1.0/bureau/admin/sta2_del_raw.php new file mode 100644 index 00000000..4cff24f7 --- /dev/null +++ b/stable-1.0/bureau/admin/sta2_del_raw.php @@ -0,0 +1,49 @@ +delete_stats_raw($val); + if (!$r) { + $error.=$err->errstr()."
            "; + } else { + $error.=sprintf(_("The statistics %s has been successfully deleted (the stats files must be manually deleted)"),$r)."
            "; + } + } +} + +include("sta2_list.php"); +exit(); +?> diff --git a/stable-1.0/bureau/admin/sta2_doadd_raw.php b/stable-1.0/bureau/admin/sta2_doadd_raw.php new file mode 100644 index 00000000..d7aed651 --- /dev/null +++ b/stable-1.0/bureau/admin/sta2_doadd_raw.php @@ -0,0 +1,48 @@ + array ("post", "string", ""), + "dir" => array ("post", "string", ""), +); +getFields($fields); + +$r=$sta2->add_stats_raw($hostname,$dir); +if (!$r) { + $error=$err->errstr(); + include("sta2_add_raw.php"); + exit(); +} else { + $error=_("The statistics has been successfully created"); + include("sta2_list.php"); + exit(); +} +?> \ No newline at end of file diff --git a/stable-1.0/bureau/admin/sta2_doedit_raw.php b/stable-1.0/bureau/admin/sta2_doedit_raw.php new file mode 100644 index 00000000..ad33a402 --- /dev/null +++ b/stable-1.0/bureau/admin/sta2_doedit_raw.php @@ -0,0 +1,46 @@ +put_stats_details_raw($id,$dir); + if (!$r) { + $error=$err->errstr(); + include("sta2_edit_raw.php"); + exit(); + } else { + $error=_("The Statistics has been successfully changed"); + include("sta2_list.php"); + exit(); + } +} +?> diff --git a/stable-1.0/bureau/admin/sta2_edit_raw.php b/stable-1.0/bureau/admin/sta2_edit_raw.php new file mode 100644 index 00000000..a8774742 --- /dev/null +++ b/stable-1.0/bureau/admin/sta2_edit_raw.php @@ -0,0 +1,70 @@ +get_stats_details_raw($id); + if (!$r) { + $error=$err->errstr(); + } +} + +?> +

            +
            +
            +$error

            "; + include_once("foot.php"); + exit(); + } +?> +
            + + + + +
            + + +
            " size="20" maxlength="255" /> + +
            " />
            +
            + diff --git a/stable-1.0/bureau/admin/sta2_list.php b/stable-1.0/bureau/admin/sta2_list.php new file mode 100644 index 00000000..930387c4 --- /dev/null +++ b/stable-1.0/bureau/admin/sta2_list.php @@ -0,0 +1,85 @@ + +

            +
            +
            +cancreate("sta2")) { ?> +

            + +

            +$error

            "; + } + +if (!$r=$sta2->get_list_raw()) { + $error=$err->errstr(); + echo "

            $error

            "; +} else { + +?> + +
            + + + + + + + + + + + + + +
            " value="" />/viewurl($val["folder"], $val["hostname"].'.log')) echo ""._("View").""; +?> 
            " />
            +
            + + + + diff --git a/stable-1.0/bureau/admin/stats_members.php b/stable-1.0/bureau/admin/stats_members.php new file mode 100644 index 00000000..21af3754 --- /dev/null +++ b/stable-1.0/bureau/admin/stats_members.php @@ -0,0 +1,93 @@ +". _("Image_Graph not installed. use 'aptitude install php-pear' then 'pear install --alldeps Image_Graph-devel' to see the graph.")."

            "; + exit(0); +} + +$db->query("SELECT COUNT(login) AS count,date_format(created, '%Y-%m') as month FROM `membres` where created is NOT null GROUP BY month ORDER BY month ASC"); + +$Graph =& Image_Graph::factory('graph', array(800, 600)); +$Graph->add( + Image_Graph::vertical( + Image_Graph::factory('title', array(_('Account creation per month'), 12)), + Image_Graph::vertical( + $Plotarea = Image_Graph::factory('plotarea'), + $Legend = Image_Graph::factory('legend'), + 90 + ), + 5 + ) +); + +$Legend->setPlotarea($Plotarea); + +$total =& Image_Graph::factory('Image_Graph_Dataset_Trivial'); +$total->setName(_('before the month')); +$units =& Image_Graph::factory('Image_Graph_Dataset_Trivial'); +$units->setName(_('during the month')); + +$i = 0; +while ($db->next_record()) { + $units->addPoint($db->f('month'), $db->f('count')); + $total->addPoint($db->f('month'), $i); + $i += $db->f('count'); +} +$Datasets[]= $total; +$Datasets[]= $units; +$Plot =& $Plotarea->addNew('bar', array($Datasets, 'stacked')); + +$AxisX =& $Plotarea->getAxis(IMAGE_GRAPH_AXIS_X); +$AxisX->setLabelOption('showoffset', 1); +$AxisX->setLabelInterval(2); + +// set a line color +$Plot->setLineColor('gray'); + +// create a fill array +$FillArray =& Image_Graph::factory('Image_Graph_Fill_Array'); +$FillArray->addColor('blue@0.2'); +$FillArray->addColor('yellow@0.2'); +$FillArray->addColor('green@0.2'); + +// set a standard fill style +$Plot->setFillStyle($FillArray); + +// create a Y data value marker +$Marker =& $Plot->addNew('Image_Graph_Marker_Value', IMAGE_GRAPH_VALUE_Y); +// and use the marker on the 1st plot +$Plot->setMarker($Marker); + +$Plot->setDataSelector(Image_Graph::factory('Image_Graph_DataSelector_NoZeros')); + +$Graph->Done(); + +?> diff --git a/stable-1.0/bureau/admin/styles/style.css b/stable-1.0/bureau/admin/styles/style.css new file mode 100644 index 00000000..d8dccdc2 --- /dev/null +++ b/stable-1.0/bureau/admin/styles/style.css @@ -0,0 +1,441 @@ +html, body { + margin: 0px; + padding: 0px; +} + +body { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 11px; + color: #000000; + background-color: #F0F0FA; +/* background-color: cyan; */ +} + +body.light { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 11px; + color: #000000; + background-color: #F0F0FA; +/* background-color: cyan; */ +} + +.hlp { + font-family: Helvetica, Tahoma, sans-serif; + font-size: 11px; + color: #202020; +} + +table { + border-collapse: collapse; +} + +td { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 11px; + color: #000000; + padding-right: 6px; +} + +th { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 11px; + color: black; + background: #F1F8FD; + font-weight: normal; + text-align: left; +} + +h3 { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 18px; + font-weight: bold; + color: #10507C; + text-align: left; + padding: 11px; + padding-left: 0; + margin: 0px; +} + +.trbtn { + text-align: right; +} + +h4 { + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 16px; + font-weight: bold; + color: #007777 +} + +hr { + color: #007799; + height: 1px; + border: 1px solid #007799; +} + +.inp { + /* Should not be use anymore !!! */ + border-color: blue; + border-width: 5px; + background-color: #500000; + color: white; +} + +.inc, .inl { + border: 1px solid black; + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 10px; + border-style: none; + color: black; + background: white; +} + +.inb { + border: 1px solid #999; + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 11px; + padding: 4px; + padding-left: 6px; + padding-right: 6px; + color: black; + background-color: #CFE3F1; + cursor: pointer; + margin-right: 4px; +} +.inb:hover { + background-color: #BFD3E1; +} + +.ina:hover, .ina, .inav, .inav:hover { + border: 1px solid #999; + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 10px; + padding: 2px 4px 2px 4px; + color: black; + cursor: pointer; +} +.ina { + background-color: #F1F8FD; +} +.ina:hover, .inav { + background-color: #CFE3F1; +} +.inav:hover { + background-color: #F1F8FD; +} + +.ina a, .inav a { + color: black; +} +.ina a:hover, .inav a:hover { + text-decoration: none; + color: black; +} + +.ina img, .ina img { + vertical-align: middle; + padding: 2px; +} +.bff { + border: 1px solid #999; + background-color: #F1F8FD; + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 10px; + padding-left: 2px; + padding-right: 4px; + color: black; + cursor: pointer; +} +.int { + border: 1px dotted black; + background-color: white; + font-family: Verdana, Arial, Helvetica, sans-serif; + font-size: 11px; + padding: 2px; + color: black; +} + +.lst1 { + background-color: #F1F8FD; +} +.lst2 { + background-color: #CFE3F1; +} + +.dlogin { + text-align: center; +} + +.login { + margin-left: auto; + margin-right: auto; +} + +img { + border: 0px; + vertical-align: middle; +} + +.error { + color: red; + font-weight: bold; +} + +/* Over quota class */ +.over { + color: red; +} + +.code { + font-size: 16px; + font-family: Courier New, Fixed; + font-weight: bold; + text-align: center; +} + +#global { + display: block; + margin-left: auto; + margin-right: auto; + margin-top: 20px; + margin-bottom: 20px; + width: 1020px; + border: 5px solid #1D6A9F; + -webkit-border-radius: 10px; + -moz-border-radius: 10px; + border-radius: 10px; + background-color: #F0F0FA; +/* background: #F1F8FD url(/admin/images/bgborder.gif) repeat-y scroll top left; */ +} + +/* Main container */ + +#tdMenu, #tdContent { + vertical-align: top; +} + +#tdMenu { + border-right: 1px dotted #1D6A9F; +} + +#content { + display: block; + width: 770px; + padding-left: 10px; + padding-right: 10px; + vertical-align: top; +} + +/* Menu */ + +#menu { + display: block; + float: left; + padding: 0px; + margin: 0px; + width: 200px; + padding-right: 10px; + padding-bottom: 10px; + padding-left: 10px; +} + +.menu-box { + margin-bottom: 10px; + font-size: 11px; +} + +.menu-box .menu-title { + color: #000000; + border: 1px solid #1D6A9F; + background-color: #C0DCF0; + padding: 3px; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.menu-box .menu-content { + margin-top: 1px; +} + +.menu-box ul { + margin: 0px; + padding: 0px; + list-style-type: none; +} + +.menu-box a { + text-decoration: none; + color: #0D5689; +} + +.menu-box a:hover { + text-decoration: underline; + color: #000000; +} + +.menu-box li a { + display: block; + height: 18px; + color: #0D5689; + padding-left: 2px; + text-decoration: none; + border: 1px solid #F1F8FD; + line-height: 0.75em; +} + +.menu-box li a img { + float: left; + width: 16px; + height: 16px; + margin: 0px; + padding: 0px; + padding-top: 1px; +} + +.menu-box li a:hover { + color: #000000; + height: 18px; + border: 1px solid #1D6A9F; + text-decoration: none; + background-color: #DFEEF8; +} + +.menu-box .full { + color: red; +} + +/* Bars */ + +.barempty { + background-color: white; + border: 1px solid black; + height: 8px; + -webkit-border-radius:4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.barfill { + float: left; + background-color: red; + height: 8px; +} + +/* Infos */ +#recap table { + text-align: center; + margin-left: auto; + margin-right: auto; +} + +/* Others */ +.center { + text-align: center; + margin-left: auto; + margin-right: auto; +} + +a { + text-decoration: none; + color: #0D5689; +} + +a:hover { + text-decoration: underline; + color: #000000; +} + +.border { + border: 1px solid #C0DCF0; +} + +.bold { + font-weight: bold; +} + + +#sendthisfile { + margin-top: 6px; +} + +.breadcrumb { + font-size: 12px; + +} + +#newdomwww, #sub, #usernpfx, #dbnpfx { + border-right: 0; + padding-right: 0; +} +#newdomain, #newsubname, #usern, #dbn { + border-left: 0; + padding-left: 0; +} + +#create_dom_list_pfx { + border-right: 0; + padding: 3px; +} +#create_dom_list { + border-left: 0; + padding-left: 0; +} + + + +input#email { + border-right: 0; + padding-right: 0; + text-align: right; +} + +span#emaildom { + border-left: 0; + padding-left: 2px; +} + +.tedit { + border: 1px solid #aaa; + padding: 6px; + margin: 0; + border-collapse: collapse; + } +.tedit td, .tedit th { + border: 1px solid #aaa; + padding: 6px; + margin: 0; + } + +.formcell { + vertical-align: top; + border: 1px solid #aaa; + padding: 10px; + } + +.tlist, .tlist td, .tlist th { + padding: 4px; + margin: 0; + border-collapse: collapse; + } + +input#dir, input#sub_local { + width: 200px; + } + +.warningmsg { + width: 500px; +} + +#mx { + width: 300px; +} + +#admlistbtn { + padding-bottom: 6px; +} + +.advdom { + padding-top: 6px; +} + diff --git a/stable-1.0/bureau/admin/template.php b/stable-1.0/bureau/admin/template.php new file mode 100644 index 00000000..87188ecd --- /dev/null +++ b/stable-1.0/bureau/admin/template.php @@ -0,0 +1,39 @@ + +Administration du compte + + + + + diff --git a/stable-1.0/bureau/admin/trash_dateselect.php b/stable-1.0/bureau/admin/trash_dateselect.php new file mode 100644 index 00000000..86b79972 --- /dev/null +++ b/stable-1.0/bureau/admin/trash_dateselect.php @@ -0,0 +1,107 @@ +is_trash ) { + $istrash=true; +} +?> + +

            + onclick="hide('trash_expire_picker');"> + onclick="show('trash_expire_picker');"> +

            + +
            + + + + + + + + +
            + + +
            + + +
            + + +
            + " /> +
            +
            + + +
            + + + diff --git a/stable-1.0/bureau/admin/web_list.php b/stable-1.0/bureau/admin/web_list.php new file mode 100644 index 00000000..b9a6aadc --- /dev/null +++ b/stable-1.0/bureau/admin/web_list.php @@ -0,0 +1,4 @@ + +cancreate("webaccess")) { ?> +
            + \ No newline at end of file diff --git a/stable-1.0/bureau/admin/webmail/.htaccess b/stable-1.0/bureau/admin/webmail/.htaccess new file mode 100644 index 00000000..e69de29b diff --git a/stable-1.0/bureau/admin/webmail/index.php b/stable-1.0/bureau/admin/webmail/index.php new file mode 100644 index 00000000..2e024f9f --- /dev/null +++ b/stable-1.0/bureau/admin/webmail/index.php @@ -0,0 +1,3 @@ + diff --git a/stable-1.0/bureau/class/config.php b/stable-1.0/bureau/class/config.php new file mode 100644 index 00000000..1abf758d --- /dev/null +++ b/stable-1.0/bureau/class/config.php @@ -0,0 +1,170 @@ + +Merci de revenir plus tard."; + exit(); +} +*/ + +// 1. Get a semaphore id for the alternc magic number (18577) +$alternc_sem = sem_get ( 18577 ); +// 2. Declare the shutdown function, that release the semaphore +function alternc_shutdown() { + global $alternc_sem; + @sem_release( $alternc_sem ); +} +// 3. Register the shutdown function +register_shutdown_function("alternc_shutdown"); +// 4. Acquire the semaphore : with that process, +sem_acquire( $alternc_sem ); + +if (ini_get("safe_mode")) { + echo "SAFE MODE IS ENABLED for the web panel ! It's a bug in your php or apache configuration, please fix it !!"; + exit(); +} + +// For people who want to authenticate with HTTP AUTH +if (isset($_GET['http_auth'])) $http_auth=strval($_GET['http_auth']); +if (isset($http_auth) && $http_auth) { + if (empty($_SERVER['PHP_AUTH_USER']) || empty($_SERVER['PHP_AUTH_PW'])) { + header('WWW-Authenticate: Basic realm="Test Authentication System"'); + header('HTTP/1.0 401 Unauthorized'); + exit(); + } +} +if (!empty($_SERVER['PHP_AUTH_USER']) && !empty($_SERVER['PHP_AUTH_PW'])) { + // Gruiiik + $_REQUEST["username"]=$_SERVER['PHP_AUTH_USER']; + $_REQUEST["password"]=$_SERVER['PHP_AUTH_PW']; + } + + +$help_baseurl="http://www.aide-alternc.org/"; + +/* Server Domain Name */ +$host=getenv("HTTP_HOST"); + +/* Global variables (AlternC configuration) */ +require_once(dirname(__FILE__)."/local.php"); +/* PHPLIB inclusions : */ +$root=$L_ALTERNC_LOC."/bureau/"; + +require_once($root."class/db_mysql.php"); +require_once($root."class/functions.php"); +require_once($root."class/variables.php"); + +// Redirection si appel à https://(!fqdn)/ +if (isset($_SERVER["HTTPS"]) && $_SERVER["HTTPS"]=="on" && $host!=$L_FQDN) { + header("Location: https://$L_FQDN/"); +} + + +// Classe héritée de la classe db de la phplib. +/** +* Class for MySQL management in the bureau +* +* This class heriting from the db class of the phplib manages +* the connection to the MySQL database. +*/ + +class DB_system extends DB_Sql { + var $Host,$Database,$User,$Password; + + /** + * Creator + */ + function DB_system() { + global $L_MYSQL_HOST,$L_MYSQL_DATABASE,$L_MYSQL_LOGIN,$L_MYSQL_PWD; + $this->Host = $L_MYSQL_HOST; + $this->Database = $L_MYSQL_DATABASE; + $this->User = $L_MYSQL_LOGIN; + $this->Password = $L_MYSQL_PWD; + } +} + +$db= new DB_system(); + +// Current User ID = the user whose commands are made on behalf of. +$cuid=0; + + +$classes=array(); +/* CLASSES PHP : automatic include : */ +$c=opendir($root."class/"); +while ($di=readdir($c)) { + if (ereg("^m_(.*)\\.php$",$di,$match)) { // $ + $name1="m_".$match[1]; + $name2=$match[1]; + $classes[]=$name2; + require_once($root."class/".$name1.".php"); + } +} +closedir($c); +/* THE DEFAULT CLASSES ARE : + dom, ftp, mail, quota, bro, admin, mem, mysql, err +*/ + + +/* Language */ +include_once("lang_env.php"); + +$mem=new m_mem(); +$err=new m_err(); + +/* Check the User identity (if required) */ +if (!defined('NOCHECK')) { + if (!$mem->checkid()) { + $error=$err->errstr(); + include("index.php"); + exit(); + } +} + +for($i=0;$i diff --git a/stable-1.0/bureau/class/config_nochk.php b/stable-1.0/bureau/class/config_nochk.php new file mode 100644 index 00000000..86e8af19 --- /dev/null +++ b/stable-1.0/bureau/class/config_nochk.php @@ -0,0 +1,34 @@ + \ No newline at end of file diff --git a/stable-1.0/bureau/class/config_real.php b/stable-1.0/bureau/class/config_real.php new file mode 100644 index 00000000..6a770acb --- /dev/null +++ b/stable-1.0/bureau/class/config_real.php @@ -0,0 +1,160 @@ + +Merci de revenir plus tard."; + exit(); +} +*/ + +// 1. Get a semaphore id for the alternc magic number (18577) +$alternc_sem = sem_get ( 18577 ); +// 2. Declare the shutdown function, that release the semaphore +function alternc_shutdown() { + global $alternc_sem; + sem_release( $alternc_sem ); +} +// 3. Register the shutdown function +register_shutdown_function("alternc_shutdown"); +// 4. Acquire the semaphore : with that process, +sem_acquire( $alternc_sem ); + +/* PHPLIB inclusions : */ +$root="/var/alternc/bureau/"; +/* Server Domain Name */ +$host=getenv("HTTP_HOST"); + +/* Global variables (AlternC configuration) */ +require_once($root."class/local.php"); + +require_once($root."class/db_mysql.php"); +require_once($root."class/functions.php"); + +// Classe héritée de la classe db de la phplib. +class DB_system extends DB_Sql { + var $Host,$Database,$User,$Password; + function DB_system() { + global $L_MYSQL_HOST,$L_MYSQL_DATABASE,$L_MYSQL_LOGIN,$L_MYSQL_PWD; + $this->Host = $L_MYSQL_HOST; + $this->Database = $L_MYSQL_DATABASE; + $this->User = $L_MYSQL_LOGIN; + $this->Password = $L_MYSQL_PWD; + } +} + +$db= new DB_system(); + +// Current User ID = the user whose commands are made on behalf of. +$cuid=0; + +$classes=array(); +/* CLASSES PHP : automatic include : */ +$c=opendir($root."class/"); +while ($di=readdir($c)) { + if (ereg("^m_(.*)\\.php$",$di,$match)) { // $ + $name1="m_".$match[1]; + $name2=$match[1]; + $classes[]=$name2; + require_once($root."class/".$name1.".php"); + } +} +closedir($c); +/* THE DEFAULT CLASSES ARE : + dom, ftp, mail, quota, bro, admin, mem, mysql, err +*/ + + +/* Language */ +bindtextdomain("alternc", "/var/alternc/bureau/locales"); + +if (!$do_not_set_lang_env) { + // setlang is on the link at the login page + if ($setlang) { + $lang=$setlang; + } + // default language (can be changed here) + $language="fr_FR"; + if (!$lang) { + // Use the browser first preferred language + $lang=strtolower(substr(trim($HTTP_ACCEPT_LANGUAGE),0,5)); + } + // treat special cases such as en_UK or fr_BF : + if (substr($lang,0,2)=="en") { + $language ='en_US'; + } + if (substr($lang,0,2)=="fr") { + $language ='fr_FR'; + } + if (substr($lang,0,5)=="fr_LU") { + $language ='fr_LU'; + } + if (substr($lang,0,2)=="es") { + $language ='es_ES'; + } + if ($setlang && $language) { + setcookie("lang",$lang); + } + /* Language*/ + putenv("LC_MESSAGES=$language"); + putenv("LANG=$language"); + putenv("LANGUAGE=$language"); + // this locale MUST be selected in "dpkg-reconfigure locales" + setlocale(LC_ALL,$language); + textdomain("alternc"); +} + +$mem=new m_mem(); +$err=new m_err(); + +/* Check the User identity (if required) */ +if (!$nocheck) { + if (!$mem->checkid()) { + $error=$err->errstr(); + include("index.php"); + exit(); + } +} + +for($i=0;$i \ No newline at end of file diff --git a/stable-1.0/bureau/class/db_mysql.php b/stable-1.0/bureau/class/db_mysql.php new file mode 100644 index 00000000..54660010 --- /dev/null +++ b/stable-1.0/bureau/class/db_mysql.php @@ -0,0 +1,463 @@ +query($query); + } + + /** + * @return the class variable Link_ID + */ + function link_id() { + return $this->Link_ID; + } + + /** + * @return the class variable Query_ID + */ + function query_id() { + return $this->Query_ID; + } + + /** + * function for MySQL database connection management + * + * This function manages the connection to the MySQL database. + * + * @param $Database name of the database + * @param $Host DNS of the MySQL hosting server + * @param $User the user's name + * @param $Password the user's password + * + * @return the class variable $Link_ID + */ + function connect($Database = "", $Host = "", $User = "", $Password = "") { + /* Handle defaults */ + if ("" == $Database) + $Database = $this->Database; + if ("" == $Host) + $Host = $this->Host; + if ("" == $User) + $User = $this->User; + if ("" == $Password) + $Password = $this->Password; + + /* establish connection, select database */ + if ( 0 == $this->Link_ID ) { + + $this->Link_ID=mysql_pconnect($Host, $User, $Password); + if (!$this->Link_ID) { + $this->halt("pconnect($Host, $User, \$Password) failed."); + return 0; + } + + if (!@mysql_select_db($Database,$this->Link_ID)) { + $this->halt("cannot use database ".$this->Database); + return 0; + } + } + + return $this->Link_ID; + } + + /** + * Discard the query result + * + * This function discards the last query result. + */ + function free() { + @mysql_free_result($this->Query_ID); + $this->Query_ID = 0; + } + + /** + * Perform a query + * + * This function performs the MySQL query described in the string parameter + * + * @param a string describing the MySQL query + * @return the $Query_ID class variable (null if fails) + */ + function query($Query_String) { + /* No empty queries, please, since PHP4 chokes on them. */ + if ($Query_String == "") + /* The empty query string is passed on from the constructor, + * when calling the class without a query, e.g. in situations + * like these: '$db = new DB_Sql_Subclass;' + */ + return 0; + + if (!$this->connect()) { + return 0; /* we already complained in connect() about that. */ + }; + + # New query, discard previous result. + if ($this->Query_ID) { + $this->free(); + } + + if ($this->Debug) + printf("Debug: query = %s
            \n", $Query_String); + + $this->Query_ID = @mysql_query($Query_String,$this->Link_ID); + $this->Row = 0; + $this->Errno = mysql_errno(); + $this->Error = mysql_error(); + if (!$this->Query_ID) { + $this->halt("Invalid SQL: ".$Query_String); + } + + # Will return nada if it fails. That's fine. + return $this->Query_ID; + } + + /** + * walk result set + * + * This function tests if a new record is available in the current + * query result. + * + * @return TRUE if a new record is available + */ + function next_record() { + if (!$this->Query_ID) { + $this->halt("next_record called with no query pending."); + return 0; + } + + $this->Record = @mysql_fetch_array($this->Query_ID); + $this->Row += 1; + $this->Errno = mysql_errno(); + $this->Error = mysql_error(); + + $stat = is_array($this->Record); + if (!$stat && $this->Auto_Free) { + $this->free(); + } + return $stat; + } + + /** + * + * public: position in result set + */ + + function seek($pos = 0) { + $status = @mysql_data_seek($this->Query_ID, $pos); + if ($status) + $this->Row = $pos; + else { + $this->halt("seek($pos) failed: result has ".$this->num_rows()." rows"); + + /* half assed attempt to save the day, + * but do not consider this documented or even + * desireable behaviour. + */ + @mysql_data_seek($this->Query_ID, $this->num_rows()); + $this->Row = $this->num_rows; + return 0; + } + + return 1; + } + + /* public: table locking */ + function lock($table, $mode="write") { + $this->connect(); + + $query="lock tables "; + if (is_array($table)) { + while (list($key,$value)=each($table)) { + if ($key=="read" && $key!=0) { + $query.="$value read, "; + } else { + $query.="$value $mode, "; + } + } + $query=substr($query,0,-2); + } else { + $query.="$table $mode"; + } + $res = @mysql_query($query, $this->Link_ID); + if (!$res) { + $this->halt("lock($table, $mode) failed."); + return 0; + } + return $res; + } + + function unlock() { + $this->connect(); + + $res = @mysql_query("unlock tables", $this->Link_ID); + if (!$res) { + $this->halt("unlock() failed."); + return 0; + } + return $res; + } + + + /* public: evaluate the result (size, width) */ + function affected_rows() { + return @mysql_affected_rows($this->Link_ID); + } + + function num_rows() { + return @mysql_num_rows($this->Query_ID); + } + + function num_fields() { + return @mysql_num_fields($this->Query_ID); + } + + /* public: shorthand notation */ + function nf() { + return $this->num_rows(); + } + + function np() { + print $this->num_rows(); + } + + function f($Name) { + return $this->Record[$Name]; + } + + function p($Name) { + print $this->Record[$Name]; + } + + function lastid() { + return @mysql_insert_id($this->Link_ID); + } + + /* public: sequence numbers */ + function nextid($seq_name) { + $this->connect(); + + if ($this->lock($this->Seq_Table)) { + /* get sequence number (locked) and increment */ + $q = sprintf("select nextid from %s where seq_name = '%s'", + $this->Seq_Table, + $seq_name); + $id = @mysql_query($q, $this->Link_ID); + $res = @mysql_fetch_array($id); + + /* No current value, make one */ + if (!is_array($res)) { + $currentid = 0; + $q = sprintf("insert into %s values('%s', %s)", + $this->Seq_Table, + $seq_name, + $currentid); + $id = @mysql_query($q, $this->Link_ID); + } else { + $currentid = $res["nextid"]; + } + $nextid = $currentid + 1; + $q = sprintf("update %s set nextid = '%s' where seq_name = '%s'", + $this->Seq_Table, + $nextid, + $seq_name); + $id = @mysql_query($q, $this->Link_ID); + $this->unlock(); + } else { + $this->halt("cannot lock ".$this->Seq_Table." - has it been created?"); + return 0; + } + return $nextid; + } + + /* public: return table metadata */ + function metadata($table='',$full=false) { + $count = 0; + $id = 0; + $res = array(); + + /* + * Due to compatibility problems with Table we changed the behavior + * of metadata(); + * depending on $full, metadata returns the following values: + * + * - full is false (default): + * $result[]: + * [0]["table"] table name + * [0]["name"] field name + * [0]["type"] field type + * [0]["len"] field length + * [0]["flags"] field flags + * + * - full is true + * $result[]: + * ["num_fields"] number of metadata records + * [0]["table"] table name + * [0]["name"] field name + * [0]["type"] field type + * [0]["len"] field length + * [0]["flags"] field flags + * ["meta"][field name] index of field named "field name" + * The last one is used, if you have a field name, but no index. + * Test: if (isset($result['meta']['myfield'])) { ... + */ + + // if no $table specified, assume that we are working with a query + // result + if ($table) { + $this->connect(); + $id = @mysql_list_fields($this->Database, $table); + if (!$id) + $this->halt("Metadata query failed."); + } else { + $id = $this->Query_ID; + if (!$id) + $this->halt("No query specified."); + } + + $count = @mysql_num_fields($id); + + // made this IF due to performance (one if is faster than $count if's) + if (!$full) { + for ($i=0; $i<$count; $i++) { + $res[$i]["table"] = @mysql_field_table ($id, $i); + $res[$i]["name"] = @mysql_field_name ($id, $i); + $res[$i]["type"] = @mysql_field_type ($id, $i); + $res[$i]["len"] = @mysql_field_len ($id, $i); + $res[$i]["flags"] = @mysql_field_flags ($id, $i); + } + } else { // full + $res["num_fields"]= $count; + + for ($i=0; $i<$count; $i++) { + $res[$i]["table"] = @mysql_field_table ($id, $i); + $res[$i]["name"] = @mysql_field_name ($id, $i); + $res[$i]["type"] = @mysql_field_type ($id, $i); + $res[$i]["len"] = @mysql_field_len ($id, $i); + $res[$i]["flags"] = @mysql_field_flags ($id, $i); + $res["meta"][$res[$i]["name"]] = $i; + } + } + + // free the result only if we were called on a table + if ($table) @mysql_free_result($id); + return $res; + } + +/********************************************************************************************************/ +// AJOUT PERSO : TEST + +/* public: return table metadata + function retourneNameField($this->Query_ID,$full=false) { + $count = 0; + $id = 0; + $res = array(); + + + $count = @mysql_num_fields($this->Query_ID); + + // made this IF due to performance (one if is faster than $count if's) + if (!$full) { + for ($i=0; $i<$count; $i++) { + $res[$i]["table"] = @mysql_field_table ($id, $i); + $res[$i]["name"] = @mysql_field_name ($id, $i); + $res[$i]["type"] = @mysql_field_type ($id, $i); + $res[$i]["len"] = @mysql_field_len ($id, $i); + $res[$i]["flags"] = @mysql_field_flags ($id, $i); + } + } else { // full + $res["num_fields"]= $count; + + for ($i=0; $i<$count; $i++) { + $res[$i]["table"] = @mysql_field_table ($id, $i); + $res[$i]["name"] = @mysql_field_name ($id, $i); + $res[$i]["type"] = @mysql_field_type ($id, $i); + $res[$i]["len"] = @mysql_field_len ($id, $i); + $res[$i]["flags"] = @mysql_field_flags ($id, $i); + $res["meta"][$res[$i]["name"]] = $i; + } + } + + // free the result only if we were called on a table + if ($table) @mysql_free_result($id); + return $res; + }*/ + +/********************************************************************************************************/ + /* private: error handling */ + function halt($msg) { + $this->Error = @mysql_error($this->Link_ID); + $this->Errno = @mysql_errno($this->Link_ID); + if ($this->Halt_On_Error == "no") + return; + + $this->haltmsg($msg); + + if ($this->Halt_On_Error != "report") + die("Session halted."); + } + + function haltmsg($msg) { + printf("Database error: %s
            \n", $msg); + printf("MySQL Error: %s (%s)
            \n", + $this->Errno, + $this->Error); + } + + function table_names() { + $this->query("SHOW TABLES"); + $i=0; + while ($info=mysql_fetch_row($this->Query_ID)) + { + $return[$i]["table_name"]= $info[0]; + $return[$i]["tablespace_name"]=$this->Database; + $return[$i]["database"]=$this->Database; + $i++; + } + return $return; + } +} +?> diff --git a/stable-1.0/bureau/class/export_account.php b/stable-1.0/bureau/class/export_account.php new file mode 100644 index 00000000..16735799 --- /dev/null +++ b/stable-1.0/bureau/class/export_account.php @@ -0,0 +1,23 @@ +su($id); + +$dom->lock(); + +foreach($classes as $c) { + if (method_exists($GLOBALS[$c],"alternc_export")) { + $GLOBALS[$c]->alternc_export("/tmp"); + } +} + +$dom->unlock(); + +$mem->unsu(); + +?> \ No newline at end of file diff --git a/stable-1.0/bureau/class/functions.php b/stable-1.0/bureau/class/functions.php new file mode 100644 index 00000000..f3ce2a7b --- /dev/null +++ b/stable-1.0/bureau/class/functions.php @@ -0,0 +1,506 @@ +query("SELECT tld,mode FROM tld;"); + while ($db->next_record()) { + list($key,$val)=$db->Record; + if (substr($domain,-1-strlen($key))==".".$key) { + if ($sizefound2) // OK, in the case 3 4 5 + return $found; + $n1=false; $n2=false; + for ($i=0;$iquery("SELECT tld,mode FROM tld;"); + while ($db->next_record()) { + list($key,$val)=$db->Record; + if (substr($domain,-1-strlen($key))==".".$key) { + if ($sizefound2) { + return 1; + } + return 0; +} + +/* Check that $url is a correct url (http:// or https:// or ftp://) */ +function checkurl($url) { + // TODO : add a path/file check + if (substr($url,0,7)!="http://" && substr($url,0,8)!="https://" && substr($url,0,6)!="ftp://") return false; + if (substr($url,0,7)=="http://" ) $fq=substr($url,7); + if (substr($url,0,8)=="https://") $fq=substr($url,8); + if (substr($url,0,6)=="ftp://" ) $fq=substr($url,6); + $f=explode("/",$fq); + if (!is_array($f)) $f=array($f); + $t=checkfqdn($f[0]); + if ($t) return false; + return true; +} + +/* Check that TXT domain is correct */ +function checksubtxt($txt) { + return true; +} +/* Check that CNAME domain is correct */ +function checkcname($cname) { + return true; +} + +/* Check that $ip is a correct 4 Dotted ip */ +function checkip($ip) { + // return true or false whether the ip is correctly formatted + return filter_var($ip,FILTER_VALIDATE_IP, FILTER_FLAG_IPV4); +} + +/* Check that $ip is a correct ipv6 ip */ +function checkipv6($ip) { + // return true or false whether the ip is correctly formatted + return filter_var($ip,FILTER_VALIDATE_IP, FILTER_FLAG_IPV6); +} + +/* Check a login mail */ +function checkloginmail($mail) { + if (!preg_match("/^[a-zA-Z0-9_\.:\+\-]*[a-zA-Z0-9_]$/",$mail)) { + return false; + } else { + return true; + } +} +/* " */ + +/* Check an email address, use checkloginmail and checkfqdn */ +function checkmail($mail) { + // Retourne 0 si tout va bien, sinon retourne un code erreur... + // 1 s'il n'y a rien devant l'@ + // 2 3 ou 4 si le domaine est incorrect. + // 5 s'il y a caractères interdits dans la partie gauche du @ + // 6 si le mail contient aucun ou plus d'un @ + $t=explode("@",$mail); + if (count($t)!=2) { + return 6; + } + $c=checkfqdn($t[1]); + if ($c) + return $c; + // Verification de la partie gauche : + if (!checkloginmail($t[0])) { + if ($t[0]=="") { + return 1; + } else { + return 5; + } + } + return 0; +} + +/* Check that a domain name is fqdn compliant */ +function checkfqdn($fqdn) { + // (RFC 1035 http://www.ietf.org/rfc/rfc1035.txt) + // Retourne 0 si tout va bien, sinon, retourne un code erreur... + // 1. Nom de domaine complet trop long. + // 2. L'un des membres est trop long. + // 3. Caractere interdit dans l'un des membres. + // 4. Le fqdn ne fait qu'un seul membre (il n'est donc pas fq...) + if (strlen($fqdn)>255) + return 1; + $members=explode(".", $fqdn); + if (count($members)>1) $ret=0; else $ret=4; + reset($members); + while (list ($key, $val) = each ($members)) { + if (strlen($val)>63) + return 2; + + // Note: a.foo.net is a valid domain + // Note: RFC1035 tells us that a domain should not start by a digit, but every registrar allows such a domain to be created ... too bad. + if (!eregi("^[a-z0-9]([a-z0-9-]*[a-z0-9])?$",$val)) { + return 3; + } + } + return $ret; +} + +function checkuserpath($path) { + /* + return 0 if the path is not in the user's space + return 1 if this is a directory + return 2 if this is a regular file + */ + global $mem; + $user=$mem->user["login"]; + $usar=substr($user,0,1); + if (substr($path,0,1)=="/") + $path="/".$path; + + $rpath = realpath("/var/alternc/html/$usar/$user$path"); + $userpath = realpath("/var/alternc/html/$usar/$user"); + if(strpos($rpath,$userpath) === 0){ + if (is_dir("/var/alternc/html/$usar/$user$path")) { + return 1; + } + if (is_file("/var/alternc/html/$usar/$user$path")) { + return 2; + } + } + return 0; +} + +/** + * get the home of the user + * + * @args string $user the username, if null will use the global $mem. no + * security checks performed on path + * @returns string the actual absolute path + * @see $L_ALTERNC_LOC + */ +function getuserpath($user = null) { + global $L_ALTERNC_LOC; + if (is_null($user)) { + global $mem; + $user = $mem->user['login']; + } + return $L_ALTERNC_LOC . "/html/".substr($user,0,1)."/".$user; +} + +/* ECHOes checked="checked" only if the parameter is true + * useful for checkboxes and radio buttons + */ +function cbox($test) { + if ($test) echo (" checked=\"checked\""); +} + + +/* ECHOes selected="selected" only if the parameter is true + * useful for checkboxes and radio buttons + */ +function selected($bool) { + if ($bool) { + echo " selected=\"selected\""; + } +} + +function ecif($test,$tr,$fa="") { + if ($test) + echo $tr; + else + echo $fa; +} + +function __($str) { + echo _($str); +} + +function ife($test,$tr,$fa="") { + if ($test) + return $tr; + else + return $fa; +} + +function format_size($size) { + // Retourne une taille formattée en Octets, Kilo-octets, Méga-octets ou Giga-Octets, avec 2 décimales. + if ("-" == $size) { + return $size; + } + $size=(float)$size; + if ($size<1024) { + $r=$size; + if ($size!=1) { + $r.=" "._("Bytes"); + } else { + $r.=" "._("Byte"); + } + } else { + $size=$size/1024; + if ($size<1024) { + $r=round($size,2)." "._("Kb"); + } else { + $size=$size/1024; + if ($size<1024) { + $r=round($size,2)." "._("Mb"); + } else { + $size=$size/1024; + if ($size<1024) { + $r=round($size,2)." "._("Gb"); + } else { + $r=round($size/1024,2)." "._("Tb"); + } + } + } + } + return $r; +} + +function getlinkhelp($hid) { + return "(?)"; +} +function linkhelp($hid) { + echo getlinkhelp($hid); +} + +function format_date($format,$date) { + $d=substr($date,8,2); + $m=substr($date,5,2); + $y=substr($date,0,4); + $h=substr($date,11,2); + $i=substr($date,14,2); + if ($h>12) { + $hh=$h-12; + $am="pm"; + } else { + $hh=$h; + $am="am"; + } + return sprintf(_($format),$d,$m,$y,$h,$i,$hh,$am); +} + +/* Strip slashes if needed : */ +function ssla($str) { + if (get_magic_quotes_gpc()) { + return stripslashes($str); + } else { + return $str; + } +} + + /* ----------------------------------------------------------------- */ + /** Hashe un mot de passe en clair en MD5 avec un salt aléatoire + * @param string $pass Mot de passe à crypter (max 32 caractères) + * @return string Retourne le mot de passe crypté + * @access private + */ + function _md5cr($pass,$salt="") { + if (!$salt) { + $chars="./0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; + for ($i=0;$i<12;$i++) { + $salt.=substr($chars,(mt_rand(0,strlen($chars))),1); + } + $salt="$1$".$salt; + } + return crypt($pass,$salt); + } + +/** split mysql database name between username and custom database name + * @param string $dbname database name + * @return array returns username as first element, custom name as second + */ +function split_mysql_database_name($dbname) { + $db_exploded_name = explode("_",$dbname); + return array($db_exploded_name[0], + implode("_", array_slice($db_exploded_name, 1))); +} + + +/* ----------------------------------------------------------------- */ +/** Echappe les caractères pouvant perturber un flux XML standard : + * @param string $string Chaine de caractère à encoder en valeur xml. + * @return string Retourne la chaîne modifiée si besoin. + * @access private + */ +function xml_entities($string) { + return str_replace("<","<",str_replace(">",">",str_replace("&","&",$string))); +} + +/* ----------------------------------------------------------------- */ +/** Converti un nombre de mois en une chaine plus lisible + * @param number $months Nombre de mois + * @return string Chaîne représentant le nombre de mois + * @access private + */ +function pretty_months($months) { + if( $months % 12 == 0 && $months > 11) { + $years = $months / 12; + return "$years " . ($years > 1 ? _("years") : _("year")); + } else { + return "$months " . ($months > 1 ? _("months") : _("month")); + } +} + +/* ----------------------------------------------------------------- */ +/** Fabrique un drop-down pour les durées de comptes + * @name string $name Nom pour le composasnt + * @selected number Option selectionée du composant + * @return string Code html pour le drop-down + * @access private + */ +function duration_list($name, $selected=0) { + $res = " + * Use the charset of the current language for transcription + */ +function ehe($str) { + global $charset; + echo htmlspecialchars($str,ENT_COMPAT,$charset); +} + + +/* Get the Fields of the posted form from $_REQUEST or POST or GET + * and check their type + */ +function getFields($fields, $requestOnly = false) { + $vars = array(); + $methodType = array ("get", "post", "request", "files"); + + foreach ($fields AS $name => $options) { + if (in_array($options[0], $methodType) === false) + die ("Illegal method type used for field " . $name . " : " . $options[0]); + + if ($requestOnly === true) + $method = "_REQUEST"; + else + $method = "_" . strtoupper($options[0]); + + switch ($options[1]) { + case "integer": + $vars[$name] = (isset($GLOBALS[$method][$name]) && is_numeric($GLOBALS[$method][$name]) ? intval($GLOBALS[$method][$name]) : $options[2]); + break; + case "float": + $vars[$name] = (isset($GLOBALS[$method][$name]) && is_numeric($GLOBALS[$method][$name]) ? floatval($GLOBALS[$method][$name]) : $options[2]); + break; + case "string": + $vars[$name] = (isset($GLOBALS[$method][$name]) ? trim($GLOBALS[$method][$name]) : $options[2]); + break; + case "array": + $vars[$name] = (isset($GLOBALS[$method][$name]) && is_array($GLOBALS[$method][$name]) ? $GLOBALS[$method][$name] : $options[2]); + break; + case "boolean": + $vars[$name] = (isset($GLOBALS[$method][$name]) ? $GLOBALS[$method][$name] : $options[2]); + break; + case "file": + $vars[$name] = (isset($GLOBALS[$method][$name]) ? $GLOBALS[$method][$name] : $options[2]); + break; + default: + die ("Illegal method type used for field " . $name . " : " . $options[1]); + } + } + + // Insert into $GLOBALS. FIXME : Use stripslashes if the magic_quotes_gpc is ON ! + foreach ($vars AS $var => $value) + $GLOBALS[$var] = $value; + + return $vars; +} + +function printVar($array) { + echo "
            \n";
            +  print_r($array);
            +  echo "
            \n"; +} + + +?> diff --git a/stable-1.0/bureau/class/hooks.php b/stable-1.0/bureau/class/hooks.php new file mode 100644 index 00000000..a2e7eba3 --- /dev/null +++ b/stable-1.0/bureau/class/hooks.php @@ -0,0 +1,96 @@ +load_hooks(); + return $this->run_hook($name,$data); + } + /* + * charge l'ensemble des hooks disponibles + * pas de gestion de cache, on charge tout à l'invocation + */ + private function load_hooks() { + $numargs = func_num_args(); + if ($numargs <> 0) + return false; + $args = func_get_args(); + if (!is_dir($this->dir_hook)) + return false; + foreach(scandir($this->dir_hook) as $file) { + if ($file === '.' || $file === '..') + continue; + $this->plugins[] = basename($file,'.php'); + include($this->dir_hook.$file); + + } + } + + /* + * charge l'ensemble des fonctions disponible pour un hook donné + */ + private function run_hook() { + $output = ''; + $numargs = func_num_args(); + if ($numargs <> 2) + return false; + $args = func_get_args(); + $hook = $args[0]; + foreach($this->plugins as $plugin) { + if (function_exists($plugin."_".$hook)) + $output .= call_user_func_array($plugin."_".$hook,array($args[1])); + } + return $output; + } +} /* Class hooks */ + +?> diff --git a/stable-1.0/bureau/class/lang_env.php b/stable-1.0/bureau/class/lang_env.php new file mode 100644 index 00000000..10b4c243 --- /dev/null +++ b/stable-1.0/bureau/class/lang_env.php @@ -0,0 +1,75 @@ +"en_US"); + } + return $locales; +} + + +// setlang is on the link at the login page +if (isset($_REQUEST["setlang"])) { + $lang=$_REQUEST["setlang"]; +} + +$langpath = bindtextdomain("alternc", "/var/alternc/bureau/locales"); + +// Create or update a locale.php file if it is outdated. +$locales = update_locale($langpath); + +// Default to en_US : +if (!isset($_SERVER["HTTP_ACCEPT_LANGUAGE"])) { + $_SERVER["HTTP_ACCEPT_LANGUAGE"]="en_US"; +} + +if (!(isset($lang))) { // Use the browser first preferred language + $lang=strtolower(substr(trim($_SERVER["HTTP_ACCEPT_LANGUAGE"]),0,5)); +} + + +if (! isset($locales[$lang])) { // Requested language not found in locales + // treat special cases such as en_AU or fr_BF : use the language only, not the country. + $ll=substr($lang,0,2); + foreach($locales as $l) { + if (substr($l,0,2)==$ll) { + $lang=$l; + break; + } + } +} + +if (!isset($locales[$lang])) list($lang)=each($locales); + +if (isset($setlang) && isset($lang)) { + setcookie("lang",$lang); +} + +// User chose a non existent language, select the first available one +if ($lang == NULL) { + $lang = "en_US"; +} + +/* Language ok, set the locale environment */ +putenv("LC_MESSAGES=".$lang); +putenv("LANG=".$lang); +putenv("LANGUAGE=".$lang); +// this locale MUST be selected in "dpkg-reconfigure locales" +setlocale(LC_ALL,$lang); +textdomain("alternc"); + +if (_("") && preg_match("#charset=([A-Za-z0-9\.-]*)#",_(""),$mat)) { + $charset=$mat[1]; + } +if (!$charset) $charset="UTF-8"; +bind_textdomain_codeset("alternc","$charset"); + +?> diff --git a/stable-1.0/bureau/class/local.php b/stable-1.0/bureau/class/local.php new file mode 100644 index 00000000..795598dd --- /dev/null +++ b/stable-1.0/bureau/class/local.php @@ -0,0 +1,46 @@ + 'MX', + 'MYSQL_USER' => 'MYSQL_LOGIN', + 'MYSQL_PASS' => 'MYSQL_PWD', + 'NS1_HOSTNAME' => 'NS1', + 'NS2_HOSTNAME' => 'NS2'); + + +$config_file = fopen('/etc/alternc/local.sh', 'r'); +while (FALSE !== ($line = fgets($config_file))) { + if (preg_match('/^([A-Za-z0-9_]*) *= *"?(.*?)"?$/', trim($line), $regs)) { + $GLOBALS['L_'.$regs[1]] = $regs[2]; + if (isset($compat[$regs[1]])) { + $GLOBALS['L_'.$compat[$regs[1]]] = $regs[2]; + } + } +} + +fclose($config_file); + +$config_file = fopen('/etc/alternc/my.cnf', 'r'); +while (FALSE !== ($line = fgets($config_file))) { + if (preg_match('/^([A-Za-z0-9_]*) *= *"?(.*?)"?$/', trim($line), $regs)) { + switch ($regs[1]) { + case "user": + $GLOBALS['L_MYSQL_LOGIN'] = $regs[2]; + break; + case "password": + $GLOBALS['L_MYSQL_PWD'] = $regs[2]; + break; + case "host": + $GLOBALS['L_MYSQL_HOST'] = $regs[2]; + break; + case "database": + $GLOBALS['L_MYSQL_DATABASE'] = $regs[2]; + break; + } + } +} + +fclose($config_file); diff --git a/stable-1.0/bureau/class/m_admin.php b/stable-1.0/bureau/class/m_admin.php new file mode 100644 index 00000000..7c4f6f9c --- /dev/null +++ b/stable-1.0/bureau/class/m_admin.php @@ -0,0 +1,1268 @@ + +* Copyleft {@link http://alternc.net/ AlternC Team} +* +* +*/ +class m_admin { + + /* ----------------------------------------------------------------- */ + /** + * $enabled precises if the logged user is super-admin or not + */ + var $enabled=0; + + /* ----------------------------------------------------------------- */ + /** List of the controls made for each TLD + * + * $tldmode is used by the administration panel, while choosing + * the authorized TLDs. It's an array of strings explaining the current state of the TLD. + */ + + var $tldmode=array( + 0 => "This TLD is forbidden", + 1 => "primary DNS is checked in WHOIS db", + 2 => "primary & secondary DNS are checked in WHOIS db", + 3 => "Domain must exist, but don't do any DNS check", + 4 => "Domain can be installed, no check at all", + 5 => "Domain can be installed, force NO DNS hosting", + ); + + /* ----------------------------------------------------------------- */ + /** + * Constructeur + */ + function m_admin() { + global $db,$cuid; + $db->query("SELECT su FROM membres WHERE uid='$cuid';"); + $db->next_record(); + $this->enabled=$db->f("su"); + } + + /* ----------------------------------------------------------------- */ + /** + * Returns the known information about a hosted account + * + * Returns all what we know about an account (contents of the tables + * membres et local) + * Ckecks if the account is super-admin + * @param integer $uid a unique integer identifying the account + * @return an associative array containing all the fields of the + * table membres and local of the corresponding account. + * Returns FALSE if an error occurs. + * + * Retourne tout ce que l'on sait sur un membre (contenu des tables membres et local) + * vérifie que le compte appelant est super-admin + * @param integer $uid Numéro de l'utilisateur dont on veut les informations. + * @return array Retourne un tableau associatif contenant l'ensemble des champs des tables 'membres' + * et 'local' pour le membre demandé. Retourne FALSE si une erreur s'est produite. + * + */ + function get($uid) { + global $err,$db; + // $err->log("admin","get",$uid); + if (!$this->enabled) { + $err->raise("admin",1); + return false; + } + $db->query("SELECT m.*, parent.login as parentlogin FROM membres as m LEFT JOIN membres as parent ON (parent.uid = m.creator) WHERE m.uid='$uid';"); + if ($db->num_rows()) { + $db->next_record(); + $c=$db->Record; + } else { + $err->raise("admin",2); + return false; + } + $db->query("SELECT * FROM local WHERE uid='$uid';"); + if ($db->num_rows()) { + $db->next_record(); + reset($db->Record); + while (list($key,$val)=each($db->Record)) { + $c[$key]=$val; + } + } + return $c; + } + + /** + * Returns the known information about a specific hosted account + * Similar to get_list() but for creators/resellers. + */ + function get_creator($uid) { + global $err,$db; + // $err->log("admin","get",$uid); + if (!$this->enabled) { + $err->raise("admin",1); + return false; + } + + $db->query("SELECT m.*, parent.login as parentlogin FROM membres as m LEFT JOIN membres as parent ON (parent.uid = m.creator) WHERE m.uid='$uid';"); + + if ($db->num_rows()) { + $db->next_record(); + $c=$db->Record; + } else { + $err->raise("admin",2); + return false; + } + + $db->query("SELECT * FROM local WHERE uid='$uid';"); + if ($db->num_rows()) { + $db->next_record(); + reset($db->Record); + while (list($key,$val)=each($db->Record)) { + $c[$key]=$val; + } + } + + $db->query("SELECT count(*) as nbcreated FROM membres WHERE creator='$uid';"); + if ($db->num_rows()) { + $db->next_record(); + reset($db->Record); + while (list($key,$val)=each($db->Record)) { + $c[$key]=$val; + } + } + + return $c; + } + + /* ----------------------------------------------------------------- */ + /** + * @return TRUE if there's only ONE admin account + * Retourne true s'il n'existe qu'un seul compte administrateur + */ + function onesu() { + global $db; + $db->query("SELECT COUNT(*) AS cnt FROM membres WHERE su=1"); + $db->next_record(); + return ($db->f("cnt")==1); + } + + /* ----------------------------------------------------------------- */ + /** + * Returns the list of the hosted accounts + * Retourne la liste des membres hébergés + * + * Returns all what we know about ALL the accounts (contents of the tables + * membres et local) + * Check for super-admin accounts + * @param + * @return an associative array containing all the fields of the + * table membres and local of all the accounts. + * Returns FALSE if an error occurs. + * + * Retourne tout ce que l'on sait sur LES membres (contenu de membres et local) + * vérifie que le compte appelant est super-admin + * @return array Retourne un tableau indexé de tableaux associatifs contenant l'ensemble des + * champs des tables 'membres' et 'local' pour les membre. Retourne FALSE si une erreur s'est + * produite. + * + */ + function get_list($all=0,$creator=0) { + global $err,$mem,$cuid; + $err->log("admin","get_list"); + if (!$this->enabled) { + $err->raise("admin",1); + return false; + } + $db=new DB_System(); + if ($creator) { + // Limit listing to a specific reseller + $db->query("SELECT uid FROM membres WHERE creator='".$creator."' ORDER BY login;"); + } elseif ($mem->user['uid']==2000 || $all) { + $db->query("SELECT uid FROM membres ORDER BY login;"); + } else { + $db->query("SELECT uid FROM membres WHERE creator='".$cuid."' ORDER BY login;"); + } + if ($db->num_rows()) { + while ($db->next_record()) { + $c[]=$this->get($db->f("uid")); + } + return $c; + } else { + return false; + } + } + + + /** + * Returns an array with the known information about resellers (uid, login, number of accounts) + * Does not include account 2000 in the list. + * May only be called by the admin account (2000) + * If there are no reseller accounts, returns an empty array. + */ + function get_creator_list() { + global $err,$mem,$cuid; + + $creators = array(); + + $err->log("admin","get_reseller_list"); + if (!$this->enabled) { + $err->raise("admin",1); + return false; + } + + if ($cuid != 2000) { + $err->raise("admin",1); + return $creators; + } + + $db=new DB_System(); + + $db->query("SELECT distinct creator FROM membres WHERE creator <> 0 ORDER BY creator asc;"); + + if ($db->num_rows()) { + while ($db->next_record()) { + $creators[] = $this->get_creator($db->f("creator")); + } + } + + return $creators; + } + + /* ----------------------------------------------------------------- */ + /** + * Check if I am the creator of the member $uid + * + * @param integer $uid a unique integer identifying the account + */ + function checkcreator($uid) { + global $err,$mem,$db,$cuid; + // Check that the current user is editing one of it's own account ! + // but ADMIN (always uid 2000) is almighty + if ($cuid==2000) { + return true; + } + $db->query("SELECT creator FROM membres WHERE uid='$uid';"); + $db->next_record(); + if ($db->Record["creator"]!=$cuid) { + $err->raise("admin",1); + return false; + } + return true; + } + + /* ----------------------------------------------------------------- */ + /** + * Creates a new hosted account + * + * Creates a new hosted account (in the tables membres + * and local). Prevents any manipulation of the account if + * the account $mid is not super-admin. + * + * @param $login string Login name like [a-z][a-z0-9]* + * @param $pass string Password (max. 64 characters) + * @param $nom string Name of the account owner + * @param $prenom string First name of the account owner + * @param $mail string Email address of the account owner, useful to get + * one's lost password + * @pararm $type string Account type for quotas + * @return boolean Returns FALSE if an error occurs, TRUE if not. + * + * + * Crée un nouveau membre hébergé + * Création d'un nouveau membre (dans membres et local) Refuse l'utilisation de l'objet + * si le compte $mid n'est pas super-admin + * + * @param $login Nom d'utilisateur, de la forme [a-z][a-z0-9]* + * @param $pass Mot de passe, maxi 64 caractères + * @param $nom Nom de la personne ou structure + * @param $prenom Prénom de la personne ou structure + * @param $mail Adresse email du propriétaire du compte, permet de récupérer son mot de passe + * @param $type Type de compte pour les quotas + * @param $duration integer Durée du compte en mois + * @return boolean Retourne FALSE si une erreur s'est produite, TRUE sinon. + * + */ + function add_mem($login, $pass, $nom, $prenom, $mail, $canpass=1, $type='default', $duration=0, $notes = "", $force=0) { + global $err,$quota,$classes,$cuid,$mem,$L_MYSQL_DATABASE,$L_MYSQL_LOGIN; + $err->log("admin","add_mem",$login."/".$mail); + if (!$this->enabled) { + $err->raise("admin",1); + return false; + } + if (($login=="")||($pass=="")) { + $err->raise("admin",6); + return false; + } + if (!$force) { + if ($mail=="") { + $err->raise("admin",6); + return false; + } + if (checkmail($mail)!=0){ + $err->raise("admin",5); + return false; + } + } + // Vérification de la conformité du login + $login=strtolower($login); + if (!ereg("^[a-z0-9]*$",$login)) { //$ + $err->raise("admin", "Login can only contains characters a-z and 0-9"); + return false; + } + if (strlen($login) > 16) { + $err->raise("admin",13); + return false; + } + // Il ne peut pas être égal au login ou au nom de base systeme ! + if ($login==$L_MYSQL_DATABASE || $login==$L_MYSQL_LOGIN || $login=="mysql" || $login=="root") { + $err->raise("admin",10); + return false; + } + //$pass=stripslashes($pass); + $pass=_md5cr($pass); + $db=new DB_System(); + // vérification de l'inexistence du membre dans system.membres + $db->query("SELECT count(*) AS cnt FROM membres WHERE login='$login';"); + $db->next_record(); + if (!$db->f("cnt")) { + $db->query("SELECT max(m.uid)+1 as nextid FROM membres m"); + if (!$db->next_record()) { + $uid=2000; + } else { + $uid=$db->Record["nextid"]; + if ($uid<=2000) $uid=2000; + } + // on le créé ensuite dans system.membres et system.local + $db->query("INSERT INTO membres (uid,login,pass,mail,creator,canpass,type,created, notes) VALUES ('$uid','$login','$pass','$mail','$cuid','$canpass', '$type', NOW(), '$notes');"); + $db->query("INSERT INTO local(uid,nom,prenom) VALUES('$uid','$nom','$prenom');"); + $this->renew_update($uid, $duration); + exec("/usr/lib/alternc/mem_add ".$login." ".$uid); + // Declenchons les autres classes. + $mem->su($uid); + foreach($classes as $c) { + if (method_exists($GLOBALS[$c],"alternc_add_member")) { + $GLOBALS[$c]->alternc_add_member(); + } + } + $mem->unsu(); + return $uid; + } else { + $err->raise("admin",3); + return false; + } + } + + /** + * AlternC's standard function called when a user is created + * + * This sends an email if configured through the interface. + */ + function alternc_add_member() { + global $cuid, $L_FQDN, $L_HOSTING; + $dest = variable_get('new_email'); + if (!$dest) { + return false; + } + $db=new DB_System(); + if (!$db->query("SELECT m.*, parent.login as parentlogin FROM membres m LEFT JOIN membres parent ON parent.uid=m.creator WHERE m.uid='$cuid'")) { + echo "query failed: " . $db->Error; + return false; + } + if ($db->next_record()) { + $mail = << $L_FQDN, + '%creator' => $db->Record['parentlogin'], + '%uid' => $db->Record['uid'], + '%login' => $db->Record['login'], + '%mail' => $db->Record['mail'], + '%cuid' => $db->Record['creator'], + '%canpass' => $db->Record['canpass'], + '%type' => $db->Record['type'], + '%notes' => $db->Record['notes'])); + if (mail($dest,"New account (" . $db->Record['login']." from ".$db->Record['parentlogin'].") on $L_HOSTING",$mail,"From: postmaster@$L_FQDN")) { + echo "Successfully sent email to $dest"; + } else { + echo "Cannot send email to $dest"; + } + } else { + echo "query failed: " . $db->Error; + } + } + + /* ----------------------------------------------------------------- */ + /** + * Modifies an account + * + * Modifies an account (in the tables membres + * and local). Prevents any manipulation of the account if + * the account $mid is not super-admin. + * + * @param $uid integer the uid number of the account we want to modify + * @param login string new login name like [a-z][a-z0-9]* + * @param $pass string new password (max. 64 characters) + * @param $nom string new name of the account owner + * @param $prenom string new first name of the account owner + * @param $mail string new email address of the account owner + * @param $enabled integer (value: 0 or 1) activates or desactivates the + * @param $type string new type of account + * access to the virtual desktop of this account. + * @return boolean Returns FALSE if an error occurs, TRUE if not. + * + * Modifie un membre hébergé + * + * modifie les données d'un membre. Refuse l'utilisation de l'objet + * si le compte $mid n'est pas super-admin + * + * @param $uid integer Numéro uid de l'utilisateur que l'on souhaite modifier. + * @param $mail string Nouvelle adresse email + * @param $nom $prenom string Nouveaux nom et prénom de l'utilisateur + * @param $pass string Nouveau mot de passe. + * @param $enabled integer vaut 0 ou 1, active ou désactive l'accès au bureau virtuel de ce compte. + * @param $type string Nouveau type de compte + * @param $duration integer Durée du compte en mois + * @return boolean Retourne FALSE si une erreur s'est produite, TRUE sinon. + * + */ + function update_mem($uid, $mail, $nom, $prenom, $pass, $enabled, $canpass, $type='default', $duration=0, $notes = "") { + global $err,$db; + global $cuid, $quota; + + $err->log("admin","update_mem",$uid); + if (!$this->enabled) { + $err->raise("admin",1); + return false; + } + $db=new DB_System(); + if ($pass) { + // on modifie aussi le password : + $pass=_md5cr($pass); + $ssq=" ,pass='$pass' "; + } else { + $ssq=""; + } + + if (($db->query("UPDATE local SET nom='$nom', prenom='$prenom' WHERE uid='$uid';")) + &&($db->query("UPDATE membres SET mail='$mail', canpass='$canpass', enabled='$enabled', `type`='$type', notes='$notes' $ssq WHERE uid='$uid';"))){ + if($_POST['reset_quotas'] == "on") + $quota->addquotas(); + $this->renew_update($uid, $duration); + return true; + } + else { + $err->raise("admin",2); + return false; + } + } + + /* ----------------------------------------------------------------- */ + /** + * Lock an account + * + * Lock an account and prevent the user to access its account. + * + * @param $uid integer the uid number of the account we want to lock + * @return boolean Returns FALSE if an error occurs, TRUE if not. + */ + function lock_mem($uid) { + global $err,$db; + $err->log("admin","lock_mem",$uid); + if (!$this->enabled) { + $err->raise("admin",1); + return false; + } + $db=new DB_System(); + if ($db->query("UPDATE membres SET enabled='0' WHERE uid='$uid';")) { + return true; + } + else { + $err->raise("admin",2); + return false; + } + } + + + /* ----------------------------------------------------------------- */ + /** + * UnLock an account + * + * UnLock an account and prevent the user to access its account. + * + * @param $uid integer the uid number of the account we want to unlock + * @return boolean Returns FALSE if an error occurs, TRUE if not. + */ + function unlock_mem($uid) { + global $err,$db; + $err->log("admin","unlock_mem",$uid); + if (!$this->enabled) { + $err->raise("admin",1); + return false; + } + $db=new DB_System(); + if ($db->query("UPDATE membres SET enabled='1' WHERE uid='$uid';")) { + return true; + } + else { + $err->raise("admin",2); + return false; + } + } + + + + /* ----------------------------------------------------------------- */ + /** + * Deletes an account + * + * Deletes the specified account. Prevents any manipulation of the account if + * the account $mid is not super-admin. + * + * @param $uid integer the uid number of the account we want to delete + * @return boolean Returns FALSE if an error occurs, TRUE if not. + * + * + * Efface un membre hébergé + * + * Supprime le membre spécifié. Refuse l'utilisation de l'objet si le compte $mid n'est pas super-admin + * @param $uid Numéro du membre à supprimer. + * @return Retourne FALSE si une erreur s'est produite, TRUE sinon. + * + */ + function del_mem($uid) { + global $err,$quota,$classes,$cuid,$mem,$dom; + $err->log("admin","del_mem",$uid); + + if (!$this->enabled) { + $err->raise("admin",1); + return false; + } + $db=new DB_System(); + $tt=$this->get($uid); + + // On devient l'utilisateur : + $mem->su($uid); + + // This script may take a long time on big accounts, let's give us some time ... Fixes 1132 + @set_time_limit(0); + + // WE MUST call m_dom before all others because of conflicts ... + $dom->alternc_del_member(); + + // Send the event to the other classes : + foreach($classes as $c) { + if (method_exists($GLOBALS[$c],"alternc_del_member")) { + $GLOBALS[$c]->alternc_del_member(); + } + } + if (($db->query("DELETE FROM membres WHERE uid='$uid';")) && + ($db->query("DELETE FROM local WHERE uid='$uid';"))) { + exec("/usr/lib/alternc/mem_del ".$tt["login"]); + $mem->unsu(); + // If this user was (one day) an administrator one, he may have a list of his own accounts. Let's associate those accounts to nobody as a creator. + $db->query("UPDATE membres SET creator=2000 WHERE creator='$uid';"); + return true; + } else { + $err->raise("admin",2); + $mem->unsu(); + return false; + } + } + + /* ----------------------------------------------------------------- */ + /** + * Renew an account + * + * Renew an account for its duration + * + * @param $uid integer the uid number of the account we want to renew + * @param $periods integer the number of periods we renew for + * @return boolean Returns FALSE if an error occurs, TRUE if not. + */ + function renew_mem($uid, $periods=1) { + global $err,$db; + + $periods = intval($periods); + if($periods == 0) + return false; + + $query = + "UPDATE membres SET renewed = renewed + INTERVAL (duration * $periods) MONTH WHERE uid=${uid};"; + + if ($db->query($query)) { + return true; + } else { + $err->raise("admin",2); + return false; + } + } + + /* ----------------------------------------------------------------- */ + /** + * Update the duration information for an account + * + * @param $uid integer the uid number of the account we want to update + * @param $duration integer the new duration, in months, of the account + * @return boolean Returns FALSE if an error occurs, TRUE if not. + */ + function renew_update($uid, $duration) { + global $err,$db; + + if($duration == 0) { + if($db->query("UPDATE membres SET duration = NULL, renewed = NULL WHERE uid=$uid;")) + return true; + } else { + if($db->query("UPDATE membres SET duration = $duration WHERE uid=$uid") && + $db->query("UPDATE membres SET renewed = NOW() WHERE uid=$uid and renewed is null;")) + return true; + } + + $err->raise("admin",2); + return false; + } + + /* ----------------------------------------------------------------- */ + /** + * + * Get the expiry date for an account + * + * @param $uid integer The uid number of the account + * @return string The expiry date, a string as printed by MySQL + */ + function renew_get_expiry($uid) { + global $db; + + $db->query("SELECT renewed + INTERVAL duration MONTH 'expiry' FROM membres WHERE uid='$uid' ;"); + if ($db->num_rows()) { + $db->next_record(); + return $db->Record['expiry']; + } + + return ''; + } + + /* ----------------------------------------------------------------- */ + /** + * + * Get the expiry status for an account + * + * @param $uid integer The uid number of the account + * @return integer The expiry status: + * 0: account does not expire + * 1: expires in more than duration, + * 2: expires within the duration + * 3: has expired past the duration + */ + function renew_get_status($uid) { + global $db; + + $db->query( + "SELECT CASE" . + " WHEN duration IS NULL THEN 0" . + " WHEN renewed + INTERVAL duration MONTH <= NOW() THEN 3" . + " WHEN renewed <= NOW() THEN 2" . + " ELSE 1 END 'status' FROM membres where uid=$uid;"); + + if($db->num_rows()) { + $db->next_record(); + return $db->Record['status']; + } + + return 0; + } + + /* ----------------------------------------------------------------- */ + /** + * + * Get the expired/about to expire accounts. + * + * @return resource The recordset of the corresponding accounts + */ + function renew_get_expiring_accounts() { + global $db; + + if(!$db->query("SELECT *, m.renewed + INTERVAL duration MONTH 'expiry'," . + " CASE WHEN m.duration IS NULL THEN 0" . + " WHEN m.renewed + INTERVAL m.duration MONTH <= NOW() THEN 3" . + " WHEN m.renewed <= NOW() THEN 2" . + " ELSE 1 END 'status' FROM membres m, local l" . + " WHERE m.uid = l.uid" . + " HAVING status=2 or status=3 ORDER BY status DESC, expiry;")) + return false; + else { + $res=array(); + while($db->next_record()) + $res[] = $db->Record; + return $res; + } + } + + + + /* ----------------------------------------------------------------- */ + /** + * Turns a common account into a super-admin account + * + * @param $uid integer the uid number of the common account we want to turn into a + * super-admin account. + * @return Returns FALSE if an error occurs, TRUE if not. + * + * + * Transforme un membre Normal en membre Administrateur + * + * @param $uid Numéro du compte à transformer + * @return Retourne FALSE si une erreur s'est produite. + * + */ + function normal2su($uid) { + global $err,$db; + $db->query("SELECT su FROM membres WHERE uid='$uid';"); + if (!$db->next_record()) { + $err->raise("admin",2); + return false; + } + if ($db->Record["su"]!=0) { + $err->raise("admin",8); + return false; + } + $db->query("UPDATE membres SET su=1 WHERE uid='$uid';"); + return true; + } + + /* ----------------------------------------------------------------- */ + /** + * Turns a super-admin account into a common account + * + * @param $uid integer the uid number of the super-admin account we want to turn into a + * common account. + * @return boolean Returns FALSE if an error occurs, TRUE if not. + * + * + * Transforme un membre Administrateur en membre Normal + * @param integer $uid Numéro du compte à transformer + * @return boolean Retourne FALSE si une erreur s'est produite. + * + */ + function su2normal($uid) { + global $err,$db; + $db->query("SELECT su FROM membres WHERE uid='$uid';"); + if (!$db->next_record()) { + $err->raise("admin",2); + return false; + } + if ($db->Record["su"]!=1) { + $err->raise("admin",9); + return false; + } + $db->query("UPDATE membres SET su=0 WHERE uid='$uid';"); + return true; + } + + /* ----------------------------------------------------------------- */ + /** + * List of the authorized TLDs + * + * Returns the list of the authorized TLDs and also the way they are + * authorized. A TLD is the last members (or the last two) of a + * domain. For example, "com", "org" etc... AlternC keeps a table + * containing the list of the TLDs authorized to be installed on the + * server with the instructions to validate the installation of a + * domain for each TLD (if necessary). + * + * @return array An associative array like $r["tld"], $r["mode"] where tld + * is the tld and mode is the authorized mode. + * + * + * Liste des TLD autorisés + * + * Retourne la liste des tld autorisés, ainsi que la façon dont ils sont autorisés. + * Les tld sont le dernier membre (ou parfois les 2 derniers membres) d'un domaine. + * Par exemple "org" "com" etc. AlternC conserve une table "tld" qui contient la liste + * des TLD autorisés à être installé sur le serveur, accompagné des vérifications à effectuer + * pour chaque TLD. Par exemple, on peux vérifier que les DNS du domaine pointent bien vers + * notre serveur, ou juste que le domaine existe etc. + *

            Note : Il faudrait pouvoir effectuer une requete DNS, et pouvoir juste vérifier les DNS + * via DIG et pas seulement via Whois

            + * + * @return array Retourne un tableau de tableau associatif du type $r["tld"], $r["mode"]. + * TLD est le tld et MODE est le mode autorisé + * + */ + function listtld() { + global $db; + $db->query("SELECT tld,mode FROM tld ORDER BY tld;"); + while ($db->next_record()) { + $c[]=$db->Record; + } + return $c; + } + + /* ----------------------------------------------------------------- */ + /** + * List the hosted domains on this server + * + * Return the list of hosted domains on this server, (an array of associative arrays) + * @param boolean $alsocheck Returns also errstr and errno telling the domains dig checks + * @param boolean $forcecheck Force the check of dig domain even if a cache exists. + * @return array $r[$i] / [domaine][member][noerase][gesdns][gesmx] + */ + function dom_list($alsocheck=false,$forcecheck=false) { + global $db; + $cachefile="/tmp/alternc_dig_check_cache"; + $cachetime=3600; // The dns cache file can be up to 1H old + if ($alsocheck) { + if (!$forcecheck && file_exists($cachefile) && filemtime($cachefile)+$cachetime>time()) { + $checked=unserialize(file_get_contents($cachefile)); + } else { + // TODO : do the check here (cf checkdom.php) and store it in $checked + $checked=$this->checkalldom(); + file_put_contents($cachefile,serialize($checked)); + } + } + $db->query("SELECT m.login,d.domaine,d.gesdns,d.gesmx,d.noerase FROM domaines d LEFT JOIN membres m ON m.uid=d.compte ORDER BY domaine;"); + while ($db->next_record()) { + $tmp=$db->Record; + if ($alsocheck) { + $tmp["errstr"]=$checked[$tmp["domaine"]]["errstr"]; + $tmp["errno"]=$checked[$tmp["domaine"]]["errno"]; + } + $c[]=$tmp; + } + return $c; + } + + /** Check all the domains for their NS MX and IPs + */ + function checkalldom() { + global $db,$L_NS1,$L_NS2,$L_MX,$L_PUBLIC_IP; + $checked=array(); + $r=$db->query("SELECT * FROM domaines ORDER BY domaine;"); + $dl=array(); + while ($db->next_record()) { + $dl[$db->Record["domaine"]]=$db->Record; + } + sort($dl); + foreach($dl as $c) { + // Pour chaque domaine on verifie son etat : + $errno=0; + $errstr=""; + $dontexist=false; + // Check du domaine + if ($c["gesdns"]==1) { + // Check du NS qui pointe chez nous + $out=array(); + exec("dig +short NS ".escapeshellarg($c["domaine"]),$out); + if (count($out)==0) { + $dontexist=true; + } else { + if (!in_array($L_NS1.".",$out) || !in_array($L_NS2.".",$out)) { + $errno=1; $errstr.="NS for this domain are not $L_NS1 and $L_NS2 BUT ".implode(",",$out)."\n"; + } + } + } + if ($c["gesmx"]==1 && !$dontexist) { + $out=array(); + exec("dig +short MX ".escapeshellarg($c["domaine"]),$out); + $out2=array(); + foreach($out as $o) { + list($t,$out2[])=explode(" ",$o); + } + if (!in_array($L_MX.".",$out2)) { + $errno=1; $errstr.="MX is not $L_MX BUT ".implode(",",$out2)."\n"; + } + } + if (!$dontexist) { + // On liste les sous-domaine et on verifie qu'ils pointent bien chez nous... + $db->query("SELECT * FROM sub_domaines WHERE domaine='".addslashes($c["domaine"])."' ORDER BY sub;"); + while ($db->next_record()) { + $d=$db->Record; + if ($d["type"]==0) { + // Check l'IP : + $out=array(); + exec("dig +short A ".escapeshellarg($d["sub"].(($d["sub"]!="")?".":"").$c["domaine"]),$out); + if (!in_array($L_PUBLIC_IP,$out)) { + $errstr.="subdomain '".$d["sub"]."' don't point to $L_PUBLIC_IP but to ".implode(",",$out)."\n"; + $errno=1; + } + } + } + } + if ($dontexist) { + $errno=2; + $errstr="Domain don't exist anymore !"; + } + if ($errno==0) $errstr="OK"; + $checked[$c["domaine"]]=array("errno"=>$errno, "errstr"=>$errstr); + } + return $checked; + } + + + /* ----------------------------------------------------------------- */ + /** + * Lock / Unlock a domain + * + * Lock (or unlock) a domain, so that the member will be (not be) able to delete it + * from its account + * @param $dom string Domain name to lock / unlock + * @return boolean TRUE if the domain has been locked/unlocked or FALSE if it does not exist. + */ + function dom_lock($domain) { + global $db,$err; + $db->query("SELECT compte FROM domaines WHERE domaine='$domain';"); + if (!$db->next_record()) { + $err->raise("dom",1); + return false; + } + $db->query("UPDATE domaines SET noerase=1-noerase WHERE domaine='$domain';"); + return true; + } + + + /* ----------------------------------------------------------------- */ + /** + * Add a new TLD to the list of the authorized TLDs + * + * @param $tld string top-level domain to add (org, com...) + * @param $mode integer number of the authorized mode (0 to 5) + * @return boolean TRUE if the tld has been successfully added, FALSE if not. + * + * + * Ajoute un nouveau TLD autorisé à la liste des tld autorisés. + * + * @param $tld Top-Level Domain à ajouter (org, com ...) + * @param $mode Numéro du mode autorisé (0->5) + * @return boolean True si le tld a bien été ajouté, False sinon. + * + */ + function gettld($tld) { + global $db,$err; + $db->query("SELECT mode FROM tld WHERE tld='$tld';"); + if (!$db->next_record()) { + $err->raise("admin",11); + return false; + } + return $db->Record["mode"]; + } + + /* ----------------------------------------------------------------- */ + /** + * Prints the list of the actually authorized TLDs + * + * @param $current integer Value to select in the list + * + * Affiche (echo) la liste déroulante des TLD actuellement autorisés. + * + * @param $current Valeur par défaut à sélectionner dans la liste + * + */ + function selecttldmode($current=false) { + for($i=0;$itldmode);$i++) { + echo "\n"; + } + } + + /* ----------------------------------------------------------------- */ + /** + * Deletes the specified tld in the list of the authorized TLDs + * Note : This function does not delete the domains depending + * on this TLD + * + * @param $tld string The TLD you want to delete + * @return boolean returns true if the TLD has been deleted, or + * false if an error occured. + * + * + * Supprime le tld indiqué de la liste des TLD autorisés à l'installation + * + * Note : Cela ne supprime pas les domaines utilisant ce TLD ! + * + * @param $tld TLD que l'on souhaite détruire + * @return boolean retourne true si le TLD a bien été effacé, false sinon + * + */ + function deltld($tld) { + global $db,$err; + $db->query("SELECT tld FROM tld WHERE tld='$tld';"); + if (!$db->next_record()) { + $err->raise("admin",11); + return false; + } + $db->query("DELETE FROM tld WHERE tld='$tld';"); + return true; + } + + /* ----------------------------------------------------------------- */ + /** + * Add a TLD to the list of the authorized TLDs during the + * installation + * + * @param $tld string TLD we want to authorize + * @param $mode integer Controls to make on this TLD. + * Note: If you check in the whois, be sure that + * m_domains knows how to name the whois of the specified + * domain ! + * @return boolean TRUE if the TLD has been successfully + * added. FALSE if not. + * + * + * + * Ajoute un TLD à la liste des TLD autorisés à l'installation + * + * @param $tld TLD que l'on souhaite autoriser. + * @param $mode Contrôles à effectuer sur ce TLD. Note : + * Si vous demandez le controle dans le Whois, assurez-vous que m_domains + * connaisse bien comment appeler le whois du domaine correspondant ! + * @return boolean retourne true si le TLD a bien été ajouté, false sinon + * + */ + function addtld($tld,$mode) { + global $db,$err; + if (!$tld) { + $err->raise("admin",12); + return false; + } + $db->query("SELECT tld FROM tld WHERE tld='$tld';"); + if ($db->next_record()) { + $err->raise("admin",12); + return false; + } + if (substr($tld,0,1)==".") $tld=substr($tld,1); + $mode=intval($mode); + if ($mode==0) $mode="0"; + $db->query("INSERT INTO tld (tld,mode) VALUES ('$tld','$mode');"); + return true; + } + + /* ----------------------------------------------------------------- */ + /** + * Modify a TLD of the list of the authorized TLDs + * + * @param $tld string TLD we want to modify + * @param $mode integer Controls to make on this TLD. + * @return boolean TRUE if the TLD has been successfully + * modified. FALSE if not. + * + * + * Modifie un TLD autorisé de la liste des tld autorisés. + * + * @param $tld Top-Level Domain à modifier (org, com ...) + * @param $mode Numéro du mode autorisé (0->5) + * @return boolean True si le tld a bien été modifié, False sinon. + * + */ + function edittld($tld,$mode) { + global $db,$err; + $db->query("SELECT tld FROM tld WHERE tld='$tld';"); + if (!$db->next_record()) { + $err->raise("admin",11); + return false; + } + $mode=intval($mode); + if ($mode==0) $mode="0"; + $db->query("UPDATE tld SET mode='$mode' WHERE tld='$tld';"); + return true; + } + + /* ----------------------------------------------------------------- */ + /** + * Donne le login du compte administrateur principal d'AlternC + * + * @return string Retourne le login du compte admin ou root. + * + */ + function getadmin() { + global $db; + $db->query("SELECT login FROM membres WHERE uid = '2000';"); + $db->next_record(); + return $db->f("login"); + } + + + /* ----------------------------------------------------------------- */ + /** + * List the password policies currently installed in the policy table + * + * @return array an indexed array of associative array from the MySQL "policy" table + * + */ + function listPasswordPolicies() { + global $db,$classes; + $tmp1=array(); + $tmp2=array(); + $policies=array(); + $db->query("SELECT * FROM policy;"); + while ($db->next_record()) { + $tmp1[$db->Record["name"]]=$db->Record; + } + foreach($classes as $c) { + if (method_exists($GLOBALS[$c],"alternc_password_policy")) { + $res=$GLOBALS[$c]->alternc_password_policy(); // returns an array + foreach($res as $k=>$v) { + $tmp2[$k]=$v; + } + } + } + foreach($tmp2 as $k=>$v) { + if (!isset($tmp1[$k])) { + // Default policy : + $db->query("INSERT INTO policy SET name='".addslashes($k)."', minsize=0, maxsize=64, classcount=0, allowlogin=0;"); + $tmp1[$k]=array( + "minsize"=>0, "maxsize"=>64, "classcount"=>0, "allowlogin"=>0 + ); + } + $policies[$k]=$tmp1[$k]; + $policies[$k]["description"]=_($v); + unset($tmp1[$k]); + } + foreach ($tmp1 as $k=>$v) { + // Delete disabled modules : + $db->query("DELETE FROM policy WHERE name='".addslashes($k)."';"); + } + return $policies; + } + + + /* ----------------------------------------------------------------- */ + /** + * Change a password policy for one kind of password + * + * @param $policy string Name of the policy to edit + * @param $minsize integer Minimum Password size + * @param $maxsize integer Maximum Password size + * @param $classcount integer How many class of characters must this password have + * @param $allowlogin boolean Do we allow the password to be like the login ? + * @return boolean TRUE if the policy has been edited, or FALSE if an error occured. + * + */ + function editPolicy($policy,$minsize,$maxsize,$classcount,$allowlogin) { + global $db; + $minsize=intval($minsize); + $maxsize=intval($maxsize); + $classcount=intval($classcount); + $allowlogin=intval($allowlogin); + + $db->query("SELECT * FROM policy WHERE name='".addslashes($policy)."';"); + if (!$db->next_record()) { + return false; // Policy not found + } + if ($minsize<0 || $minsize>64 || $maxsize<0 || $maxsize>64 || $maxsize<$minsize || $classcount<0 || $classcount>4) { + return false; // Incorrect policy ... + } + $allowlogin=($allowlogin)?1:0; + $db->query("UPDATE policy SET minsize=$minsize, maxsize=$maxsize, classcount=$classcount, allowlogin=$allowlogin WHERE name='".addslashes($policy)."';"); + return true; + + } + + + /* ----------------------------------------------------------------- */ + /** + * Check a password and a login for a specific policy + * + * @param $policy string Name of the policy to check for + * @param $login The login that will be set + * @param $password The password we have to check + * @return boolean TRUE if the password if OK for this login and this policy, FALSE if it is not. + * + */ + function checkPolicy($policy,$login,$password) { + global $db,$err; + $pol=$this->listPasswordPolicies(); + if (!$pol[$policy]) { + $err->raise("admin",14); + return false; + } + $pol=$pol[$policy]; + // Ok, now let's check it : + $plen=strlen($password); + + if ($plen<$pol["minsize"]) { + $err->raise("admin",15); + return false; + } + + if ($plen>$pol["maxsize"]) { + $err->raise("admin",16); + return false; + } + + if (!$pol["allowlogin"]) { + // We do misc check on password versus login : + $l2=str_replace("_","@",$l2); + $l2=str_replace(".","@",$l2); + $logins=explode("@",$login); + $logins[]=$login; + foreach($logins as $l) { + if (strpos($password,$l)!==false) { + $err->raise("admin",17); + return false; + } + } + } + + if ($pol["classcount"]>0) { + $cls=array(0,0,0,0,0); + for($i=0;$i?@[\\]^_`',$p)!==false) { + $cls[3]=1; + } else { + $cls[4]=1; + } + } // foreach + $clc=array_sum($cls); + if ($clc<$pol["classcount"]) { + $err->raise("admin",18,$pol["classcount"],$clc); + return false; + } + } + + return true; // congratulations ! + } + + +} /* Classe ADMIN */ + +?> diff --git a/stable-1.0/bureau/class/m_bro.php b/stable-1.0/bureau/class/m_bro.php new file mode 100644 index 00000000..4a3fd04d --- /dev/null +++ b/stable-1.0/bureau/class/m_bro.php @@ -0,0 +1,947 @@ + +* Copyleft {@link http://alternc.net/ AlternC Team} +* +* @copyright AlternC-Team 2002-11-01 http://alternc.net/ +* +*/ + + +class m_bro { + + /** Mode d'affichage des fichiers en colonne */ + var $l_mode=array(0=>"1 column, detailed",1=>"2 columns, short",2=>"3 columns, short"); + + /** Mode de téléchargement d'un dossier compressé (zip,bz,tar,..) */ + var $l_tgz=array(0=>"tgz (Linux)",1=>"tar.bz2 (Linux)",2=>"zip (Windows/Dos)",3=>"tar.Z (Unix)"); + + /** Faut-il afficher ou non les icones ? */ + var $l_icons=array(0=>"No",1=>"Yes"); + + /** Que fait-on après la création d'un fichier ? */ + var $l_createfile=array(0=>"Go back to the file manager",1=>"Edit the newly created file"); + + /** Cache des descriptions de fichier extraits de la base + * @access private + */ + var $mime_desc=array(); + + /** Cache des icones extraits de la base + * @access private + */ + var $mime_icon=array(); + + /** Cache des types mimes extraits de la base + * @access private + */ + var $mime_type=array(); + + /** Choix des polices d'édition de fichiers */ + var $l_editor_font=array("Arial, Helvetica, Sans-serif","Times, Bookman, Serif","Courier New, Courier, Fixed"); + + /** Choix des tailles de police d'édition de fichiers */ + var $l_editor_size=array("18px","14px","12px","10px","8px","0.8em","0.9em","1em","1.1em","1.2em"); + + /* ----------------------------------------------------------------- */ + /** Constructeur */ + function m_bro() { + } + + /* ----------------------------------------------------------------- */ + /** Vérifie un dossier relatif au dossier de l'utilisateur courant + * + * @param string $dir Dossier (absolu que l'on souhaite vérifier + * @return string Retourne le nom du dossier vérifié, relatif au + * dossier de l'utilisateur courant, éventuellement corrigé. + * ou FALSE si le dossier n'est pas dans le dossier de l'utilisateur. + */ + function convertabsolute($dir,$strip=1) { + global $mem; + $root=$this->get_user_root($mem->user["login"]); + // Sauvegarde du chemin de base. + $root_alternc = $root ; + // Passage du root en chemin réel (différent avec un lien) + $root=realpath($root) ; + // separer le chemin entre le repertoire et le fichier + $file = basename($dir); + $dir = dirname($dir); + $dir=realpath($root."/".$dir); + // verifier que le repertoire est dans le home de l'usgaer + if (substr($dir,0,strlen($root))!=$root) { + return false; + } + // recomposer le chemin + $dir = $dir . '/' . $file; + if ($strip) { + $dir=substr($dir,strlen($root)); + } else { + // si on ne strip pas, il faut enlever le chemin réel + // et mettre la racine d'alternc pour éviter les + // problèmes de lien depuis /var/alternc ! + $dir=$root_alternc . substr($dir,strlen($root)); + } + if (substr($dir,-1)=="/") { + return substr($dir,0,strlen($dir)-1); + } else + return $dir; + } + + /** Retourne le chemin complet vers la racine du repertoire de l'utilisateur. + * Returns the complete path to the root of the user's directory. + * + * @param string $login Username + * @return string Returns the complete path to the root of the user's directory. + */ + function get_user_root($login) { + return "/var/alternc/html/".substr($login,0,1)."/".$login; + } + + /** Retourne le chemin complet vers la racine du repertoire de l'utilisateur. + * Returns the complete path to the root of the user's directory. + * + * @param string $uid User id. + * @return string Returns the complete path to the root of the user's directory. + */ + function get_userid_root($uid) { + global $admin; + + // FIXME [ML] Comment faire ca correctement? + // C'est utilise' dans class/m_dom.php quand un utilisateur ajoute un domaine dans son compte + // et nous devons savoir quel est le chemin complet vers la racine de son compte.. + + $old_enabled = $admin->enabled; + $admin->enabled = true; + $member = $admin->get($uid); + $admin->enabled = $old_enabled; + + return $this->get_user_root($member['login']); + } + + /* ----------------------------------------------------------------- */ + /** Retourne un tableau contenant la liste des fichiers du dossier courant + * Ce tableau contient tous les paramètres des fichiers du dossier courant + * sous la forme d'un tableau indexé de tableaux associatifs comme suit : + * $a["name"]=nom du fichier / dossier + * $a["size"]=Taille totale du fichier / dossier + sous-dossier + * $a["date"]=Date de dernière modification + * $a["type"]=Type du fichier (1 pour fichier, 0 pour dossier) + * @param string $dir dossier relatif au dossier racine du compte du + * membre courant + * @return array le tableau contenant les fichiers de $dir, et + */ + function filelist($dir="", $showdirsize = false) { + global $db,$cuid; + $db->query("UPDATE browser SET lastdir='$dir' WHERE uid='$cuid';"); + $absolute=$this->convertabsolute($dir,0); + if ($dir = @opendir($absolute)) { + while (($file = readdir($dir)) !== false) { + if ($file!="." && $file!="..") { + $c[]=array("name"=>$file, "size"=>$this->fsize($absolute."/".$file, $showdirsize), "date"=>filemtime($absolute."/".$file), "type"=> (!is_dir($absolute."/".$file)) ); + } + } + closedir($dir); + } + if (is_array($c)) { + usort ($c, array("m_bro","_sort_filelist_name")); + return $c; + } else { + return array(); + } + } + + /* ----------------------------------------------------------------- */ + /** Retourne un tableau contenant les préférences de l'utilisateur courant + * Ce tableau aqssociatif contient les valeurs des champs de la table "browser" + * pour l'utilisateur courant. + * @return array Tableau des préférences de l'utilisateur courant. + */ + function GetPrefs() { + global $db,$cuid; + $db->query("SELECT * FROM browser WHERE uid='$cuid';"); + if ($db->num_rows()==0) { + $db->query("INSERT INTO browser (editsizex, editsizey, listmode, showicons, downfmt, createfile, showtype, uid, editor_font, editor_size) VALUES (70, 21, 0, 0, 0, 0, 0, '$cuid','Arial, Helvetica, Sans-serif','12px');"); + $db->query("SELECT * FROM browser WHERE uid='$cuid';"); + } + $db->next_record(); + return $db->Record; + } + + /* ----------------------------------------------------------------- */ + /** Modifie les préférences de l'utilisateur courant. + * + * @param integer $editsizex Taille de l'éditeur (nombre de colonnes) + * @param integer $editsizey Taille de l'éditeur (nombre de lignes) + * @param integer $listmode Mode d'affichage de la liste des fichiers + * @param integer $showicons Faut-il afficher / cacher les icones des fichiers + * @param integer $downfmt Dans quel format faut-il télécharger les dossiers compressés + * @param integer $createfile Faut-il editer/revenir au browser après création d'un fichier + * @param integer $showtype Faut-il afficher le type mime des fichiers + * @param integer $editor_font Quelle police faut-il utiliser pour l'éditeur + * @param integer $editor_size Quelle taille de police faut-il utiliser pour l'éditeur + * @param integer $golastdir Faut-il revenir à la racine ou au dernier dossier visité ? + * @return boolean TRUE + */ + function SetPrefs($editsizex, $editsizey, $listmode, $showicons, $downfmt, $createfile, $showtype, $editor_font, $editor_size, $golastdir) { + global $db,$cuid; + $editsizex=intval($editsizex); $editsizey=intval($editsizey); + $listmode=intval($listmode); $showicons=intval($showicons); + $showtype=intval($showtype); $downfmt=intval($downfmt); + $createfile=intval($createfile); $golastdir=intval($golastdir); + $db->query("SELECT * FROM browser WHERE uid='$cuid';"); + if ($db->num_rows()==0) { + $db->query("INSERT INTO browser (editsizex, editsizey, listmode, showicons, downfmt, createfile, showtype, uid, editor_font, editor_size, golastdir) VALUES (70, 21, 0, 0, 0, 0, 0, '".$this->uid."','Arial, Helvetica, Sans-serif','12px',1);"); + } + $db->query("UPDATE browser SET editsizex='$editsizex', editsizey='$editsizey', listmode='$listmode', showicons='$showicons', downfmt='$downfmt', createfile='$createfile', showtype='$showtype', editor_font='$editor_font', editor_size='$editor_size', golastdir='$golastdir' WHERE uid='$cuid';"); + return true; + } + + /* ----------------------------------------------------------------- */ + /** Retourne le nom du fichier icone associé au fichier donc le nom est $file + * Note: Les fichiers icones sont mis en cache sur la page courante. + * @param string $file Fichier dont on souhaite connaitre le fichier icone + * @return string Fichier icone correspondant. + */ + function icon($file) { + global $bro_icon; + if (!strpos($file,".") && substr($file,0,1)!=".") { + return "file.png"; + } + $t=explode(".",$file); + if (!is_array($t)) + $ext=$t; + else + $ext=$t[count($t)-1]; + // Now seek the extension + if (!$bro_icon[$ext]) { + return "file.png"; + } else { + return $bro_icon[$ext].".png"; + } + } + + /* ----------------------------------------------------------------- */ + /** Retourne le type mime associé au fichier donc le nom est $file + * Note: Les types mimes sont mis en cache sur la page courante. + * Le type mime est déterminé d'après l'extension du fichier. + * @param string $file Fichier dont on souhaite connaitre le type mime + * @return string Type mime / Sous type du fichier demandé + */ + function mime($file) { + global $bro_type; + if (!strpos($file,".") && substr($file,0,1)!=".") { + return "File"; + } + $t=explode(".",$file); + if (!is_array($t)) + $ext=$t; + else + $ext=$t[count($t)-1]; + // Now seek the extension + if (!$bro_type[$ext]) { + return "File"; + } else { + return $bro_type[$ext]; + } + } + + /* ----------------------------------------------------------------- */ + /** Retourne la taille du fichier $file + * si $file est un dossier, retourne la taille de ce dossier et de tous + * ses sous dossiers. + * @param string $file Fichier dont on souhaite connaitre la taille + * @param boolean $showdirsize recursively compute the directory size. + * @return integer Taille du fichier en octets. + */ + function fsize($file, $showdirsize = false) { + if (is_dir($file)) { + if ($showdirsize) { + return $this->dirsize($file); + } else { + return "-"; + } + } else { + return filesize($file); + } + } + + + /* ----------------------------------------------------------------- */ + /** Returns the size of a directory, by adding all it's files sizes + * @param string $dir the directory whose size we want to compute + * @return integer the total size in bytes. + */ + function dirsize($dir) { + $totalsize = 0; + + if ($handle = opendir($dir)) { + while (false !== ($file = readdir($handle))) { + $nextpath = $dir . '/' . $file; + + if ($file != '.' && $file != '..' && !is_link($nextpath)) { + if (is_dir($nextpath)) { + $totalsize += $this->dirsize($nextpath); + } elseif (is_file ($nextpath)) { + $totalsize += filesize($nextpath); + } + } + } + closedir($handle); + } + return $totalsize; + } + + /* ----------------------------------------------------------------- */ + /** Crée le dossier $file dans le dossier (parent) $dir + * @param string $dir dossier dans lequel on veut créer un sous-dossier + * @param string $file nom du dossier à créer + * @return boolean TRUE si le dossier a été créé, FALSE si une erreur s'est produite. + */ + function CreateDir($dir,$file) { + global $db,$cuid,$err; + $file=ssla($file); + $absolute=$this->convertabsolute($dir."/".$file,0); + if ($absolute && !file_exists($absolute)) { + if (!@mkdir($absolute,00777)) { + $err->raise("bro",4); + return false; + } + $db->query("UPDATE browser SET crff=1 WHERE uid='$cuid';"); + return true; + } else { + $err->raise("bro",1); + return false; + } + } + + + /* ----------------------------------------------------------------- */ + /** Crée un fichier vide dans un dossier + * @param string $dir Dossier dans lequel on crée le nouveau fichier + * @param string $file Fichier que l'on souhaite créer. + * @return boolean TRUE si le dossier a été créé, FALSE si une erreur s'est produite. + */ + function CreateFile($dir,$file) { + global $db,$err,$cuid; + $file=ssla($file); + $absolute=$this->convertabsolute($dir."/".$file,0); + if (!$absolute || file_exists($absolute)) { + $err->raise("bro",1); + return false; + } + if (!file_exists($absolute)) { + if (!@touch($absolute)) { + $err->raise("bro",3); + return false; + } + } + $db->query("UPDATE browser SET crff=0 WHERE uid='$cuid';"); + return true; + } + + + /* ----------------------------------------------------------------- */ + /** Efface les fichiers du tableau $file_list dans le dossier $R + * @param array $file_list Liste des fichiers à effacer. + * @param string $R Dossier dans lequel on efface les fichiers + * @return boolean TRUE si les fichiers ont été effacés, FALSE si une erreur s'est produite. + */ + function DeleteFile($file_list,$R) { + global $err, $mem; + $root=realpath("/var/alternc/html/".substr($mem->user["login"],0,1)."/".$mem->user["login"]); + $absolute=$this->convertabsolute($R,0); + if (!$absolute && strpos($root,$absolute) === 0 && strlen($absolute) > (strlen($root)+1) ) { + $err->raise("bro",1); + return false; + } + for ($i=0;$i_delete($absolute."/".$file_list[$i]); + } + } + return true; + } + + + /* ----------------------------------------------------------------- */ + /** Renomme les fichier de $old du dossier $R en $new + * @param string $R dossier dans lequel se trouve les fichiers à renommer. + * @param array of string $old Ancien nom des fichiers + * @param array of string $new Nouveau nom des fichiers + * @return boolean TRUE si les fichiers ont été renommés, FALSE si une erreur s'est produite. + */ + function RenameFile($R,$old,$new) { + global $err; + $absolute=$this->convertabsolute($R,0); + if (!$absolute) { + $err->raise("bro",1); + return false; + } + $alea=".".time().rand(1000,9999); + for ($i=0;$iconvertabsolute($old,0); + if (!$old) { + $err->raise("bro",1); + return false; + } + + if ($new[0] != '/') { + $new = $old . '/' . $new; + } else { + $new = $this->convertabsolute($new,0); + } + + if (!$new) { + $err->raise("bro",1); + return false; + } + if ($old==$new) { + $err->raise("bro",2); + return false; + } + for ($i=0;$iconvertabsolute($R,0); + if (!$absolute) { + $err->raise("bro",1); + return false; + } + for ($i=0;$iconvertabsolute($R,0); + if (!$absolute) { + $err->raise("bro",1); + return false; + } + if (!strpos($_FILES['userfile']['name'],"/")) { + if (is_uploaded_file($_FILES['userfile']['tmp_name'])) { + if (!file_exists($absolute."/".$_FILES['userfile']['name'])) { + @touch($absolute."/".$_FILES['userfile']['name']); + } + if (@move_uploaded_file($_FILES['userfile']['tmp_name'], $absolute."/".$_FILES['userfile']['name'])) { + return $absolute."/".$_FILES['userfile']['name']; + } else { + $err->raise("bro",3); + return false; + } + } else { + $err->log("bro","uploadfile","Tentative d'attaque : ".$_FILES['userfile']['tmp_name']); + return false; + } + } + return $absolute."/".$_FILES['userfile']['name']; + } + + /** + * Extract an archive by using GNU and non-GNU tools + * @param string $file is the full or relative path to the archive + * @param string $dest is the path of the extract destination, the + * same directory as the archive by default + * @return boolean != 0 on error + */ + function ExtractFile($file, $dest=null) + { + global $err; + $file = $this->convertabsolute($file,0); + if (is_null($dest)) { + $dest = dirname($file); + } else { + $dest = $this->convertabsolute($dest,0); + } + if (!$file || !$dest) { + $err->raise("bro",1); + return 1; + } + $file = escapeshellarg($file); + $dest = escapeshellarg($dest); + // TODO new version of tar supports `tar xf ...` so there is no + // need to specify the compression format + exec("tar -xzf $file -C $dest", $void, $ret); + if ($ret) { + exec("tar -xjf $file -C $dest", $void, $ret); + } + if ($ret) { + $cmd = "unzip -o $file -d $dest"; + exec($cmd, $void, $ret); + } + if ($ret) { + $cmd = "gunzip $file"; + exec($cmd, $void, $ret); + } + if ($ret) { + $err->raise("bro","could not find a way to extract file %s, unsupported format?", $file); + } + + return $ret; + } + + + /** + * Copy many files from point A to point B + */ + function CopyFile($d,$old,$new) { + global $err; + $old=$this->convertabsolute($old,0); + if (!$old) { + $err->raise("bro",1); + return false; + } + $new=$this->convertabsolute($new,0); + if (!$new) { + $err->raise("bro",1); + return false; + } + if ($old==$new) { + $err->raise("bro",2); + return false; + } + for ($i=0;$iCopyOneFile($old."/".$d[$i],$new); + } + } + return true; + } + + /** + * Copy a source to a destination by either copying recursively a + * directory or by downloading a file with a URL (only http:// is + * supported) + * @param string $src is the path or URL + * @param string $dest is the absolute path inside the users directory + * @return boolean false on error + * + * Note that we assume that the inputs have been convertabsolute()'d + */ + function CopyOneFile($src, $dest) + { + global $err; + $src = escapeshellarg($src); + $dest = escapeshellarg($dest); + exec("cp -Rpf $src $dest", $void, $ret); + if ($ret) { + $err->raise("bro","Errors happened while copying the source to destination. cp return value: %d", $ret); + return false; + } + + return true; + } + + /* ----------------------------------------------------------------- */ + /** Affiche le chemin et les liens de la racine au dossier $path + * Affiche autant de liens HTML (anchor) que le chemin $path contient de + * niveaux de dossier. Chaque lien est associé à la page web $action + * à laquelle on ajoute le paramètre R=+Le nom du dossier courant. + * @param string $path Dossier vers lequel on trace le chemin + * @param string $action Page web de destination des liens + * @return string le code HTML ainsi obtenu. + */ + function PathList($path,$action) { + $path=$this->convertabsolute($path,1); + $a=explode("/",$path); + if (!is_array($a)) $a=array($a); + $c=''; + for($i=0;$i".$a[$i]." / "; + } + } + return $c; + } + + /* ----------------------------------------------------------------- */ + /** Affiche le contenu d'un fichier pour un champ VALUE de textarea + * Affiche le contenu du fichier $file dans le dossier $R. Le contenu + * du fichier est reformaté pour pouvoir entrer dans un champs TextArea + * @param string $R Dossier dans lequel on cherche le fichier + * @param string $file Fichier dont on souhaite obtenir le contenu. + * @return boolean retourne TRUE si le fichier a bien été émis sur + * echo, ou FALSE si une erreur est survenue. + */ + function content($R,$file) { + global $err; + $absolute=$this->convertabsolute($R,0); + if (!strpos($file,"/")) { + $absolute.="/".$file; + if (file_exists($absolute)) { + $f=fopen($absolute,"rb"); + if ($f) { + while ($s=fgets($f,1024)) { + echo str_replace("<","<",str_replace("&","&",$s)); + } + fclose($f); + } else { + $err->raise("bro",6); + return false; + } + } else { + $err->raise("bro",6); + return false; + } + } else { + $err->raise("bro",1); + return false; + } + } + + /** Cache des urls pour VIEW + * @access private + */ + var $cacheurl=array(); + + // Return a browsing url if available. + // Maintain a url cache (positive AND negative(-) cache) + /* ----------------------------------------------------------------- */ + /** Retourne une url de navigation pour le fichier $name du dossier $dir + * Les url sont mises en caches. Il se peut qu'aucune url n'existe, ou que + * celle-ci soit protégée par un .htaccess. + * @param string $dir Dossier concerné + * @param string $name Fichier dont on souhaite obtenir une URL + * @return string URL concernée, ou FALSE si aucune URL n'est disponible pour ce fichier + */ + function viewurl($dir,$name) { + global $db,$cuid; + // Is it in cache ? + if (substr($dir,0,1)=="/") $dir=substr($dir,1); + if (substr($dir,-1)=="/") $dir=substr($dir,0,-1); + $dir=str_replace("%2F", "/", urlencode($dir)); + $name=urlencode($name); + if (!$this->cacheurl["d".$dir]) { + // On parcours $dir en remontant les / + $end=""; $beg=$dir; $tofind=true; + while ($tofind) { + $db->query("SELECT sub,domaine FROM sub_domaines WHERE compte='$cuid' + AND type=0 AND (valeur='/$beg/' or valeur='/$beg');"); + $db->next_record(); + if ($db->num_rows()) { + $tofind=false; + $this->cacheurl["d".$dir]="http://".$db->f("sub").ife($db->f("sub"),".").$db->f("domaine").$end; + } + if (!$beg && $tofind) { + $tofind=false; + $this->cacheurl["d".$dir]="-"; + // We did not find it ;( + } + if (($tt=strrpos($beg,"/"))!==false) { + $end=substr($beg,$tt).$end; // = /topdir$end so $end starts AND ends with / + $beg=substr($beg,0,$tt); + } else { + $end="/".$beg.$end; + $beg="/"; + } + } + } + if ($this->cacheurl["d".$dir] && $this->cacheurl["d".$dir]!="-") { + return $this->cacheurl["d".$dir]."/".$name; + } else { + return false; + } + } + + + /** + * Return a HTML snippet representing an extraction function only if the mimetype of $name is supported + */ + function is_extractable($dir,$name) { + if ($parts = explode(".", $name)) { + $ext = array_pop($parts); + switch ($ext) { + case "gz": + case "bz": + case "bz2": + $ext = array_pop($parts) . $ext; + /* FALLTHROUGH */ + case "tar.gz": + case "tar.bz": + case "tar.bz2": + case "tgz": + case "tbz": + case "tbz2": + case "tar": + case "Z": + case "zip": + return true; + } + } + return false; + } + + + /* ------------------------------------------------------------------ */ + /** Echoes the content of the file $file located in directory $R + */ + function content_send($R,$file) { + global $err; + $absolute=$this->convertabsolute($R,0); + if (!strpos($file,"/")) { + $absolute.="/".$file; + if (file_exists($absolute)) { + readfile($absolute); + } + } else { + $err->raise("bro",1); + return false; + } + } + + + /* ----------------------------------------------------------------- */ + /** Sauve le fichier $file dans le dossier $R avec pour contenu $texte + * le contenu est issu d'un textarea, et ne DOIT PAS contenir de \ ajoutés + * automatiquement par addslashes + * @param string $file Nom du fichier à sauver. S'il existe déjà, il sera + * écrasé sans confirmation. + * @param string $R Dossier dans lequel on modifie le fichier + * @param string $texte texte du fichier à sauver dedans + * @return boolean TRUE si tout s'est bien passé, FALSE si une erreur s'est produite. + */ + function save($file,$R,$texte) { + global $err; + $absolute=$this->convertabsolute($R,0); + if (!strpos($file,"/")) { + $absolute.="/".$file; + if (file_exists($absolute)) { + $f=@fopen($absolute,"wb"); + if ($f) { + fputs($f,$texte,strlen($texte)); + fclose($f); + } else { + $err->raise("bro",5); + return false; + } + } + } else { + $err->raise("bro",1); + return false; + } + } + + + /* ----------------------------------------------------------------- */ + /** Echo d'un flux .tar.Z contenant tout le contenu du dossier $dir + * @param string $dir dossier à dumper, relatif à la racine du compte du membre. + * @return void NE RETOURNE RIEN, et il faut Quitter le script immédiatement après + */ + function DownloadZ($dir="") { + global $mem,$L_ALTERNC_LOC; + header("Content-Disposition: attachment; filename=".$mem->user["login"].".Z"); + header("Content-Type: application/x-Z"); + header("Content-Transfer-Encoding: binary"); + $d=escapeshellarg(".".$this->convertabsolute($dir,1)); + set_time_limit(0); + passthru("/bin/tar -cZ -C ".$L_ALTERNC_LOC."/html/".substr($mem->user["login"],0,1)."/".$mem->user["login"]."/ $d"); + } + + + /* ----------------------------------------------------------------- */ + /** Echo d'un flux .tgz contenant tout le contenu du dossier $dir + * @param string $dir dossier à dumper, relatif à la racine du compte du membre. + * @return void NE RETOURNE RIEN, et il faut Quitter le script immédiatement après + */ + function DownloadTGZ($dir="") { + global $mem,$L_ALTERNC_LOC; + header("Content-Disposition: attachment; filename=".$mem->user["login"].".tgz"); + header("Content-Type: application/x-tgz"); + header("Content-Transfer-Encoding: binary"); + $d=escapeshellarg(".".$this->convertabsolute($dir,1)); + set_time_limit(0); + passthru("/bin/tar -cz -C ".$L_ALTERNC_LOC."/html/".substr($mem->user["login"],0,1)."/".$mem->user["login"]."/ $d"); + } + + + /* ----------------------------------------------------------------- */ + /** Echo d'un flux .tar.bz2 contenant tout le contenu du dossier $dir + * @param string $dir dossier à dumper, relatif à la racine du compte du membre. + * @return void NE RETOURNE RIEN, et il faut Quitter le script immédiatement après + */ + function DownloadTBZ($dir="") { + global $mem,$L_ALTERNC_LOC; + header("Content-Disposition: attachment; filename=".$mem->user["login"].".tar.bz2"); + header("Content-Type: application/x-bzip2"); + header("Content-Transfer-Encoding: binary"); + $d=escapeshellarg(".".$this->convertabsolute($dir,1)); + set_time_limit(0); + passthru("/bin/tar -cj -C ".$L_ALTERNC_LOC."/html/".substr($mem->user["login"],0,1)."/".$mem->user["login"]."/ $d"); + } + + + /* ----------------------------------------------------------------- */ + /** Echo d'un flux .ZIP contenant tout le contenu du dossier $dir + * @param string $dir dossier à dumper, relatif à la racine du compte du membre. + * @return void NE RETOURNE RIEN, et il faut Quitter le script immédiatement après + */ + function DownloadZIP($dir="") { + global $mem,$L_ALTERNC_LOC; + header("Content-Disposition: attachment; filename=".$mem->user["login"].".zip"); + header("Content-Type: application/x-zip"); + header("Content-Transfer-Encoding: binary"); + $d=escapeshellarg($this->convertabsolute($dir,0)); + set_time_limit(0); + passthru("/usr/bin/zip -r - $d"); + } + + + /* ----------------------------------------------------------------- */ + /** Fonction de tri perso utilisé par filelist. + * @access private + */ + function _sort_filelist_name($a,$b) { + if ($a["type"] && !$b["type"]) return 1; + if ($b["type"] && !$a["type"]) return -1; + return $a["name"]>$b["name"]; + } + + + /* ----------------------------------------------------------------- */ + /** Efface $file et tous ses sous-dossiers s'il s'agit d'un dossier + * A UTILISER AVEC PRECAUTION !!! + * @param string $file Fichier ou dossier à supprimer. + * @access private + */ + function _delete($file) { + // permet d'effacer de nombreux fichiers + @set_time_limit(0); + //chmod($file,0777); + if (is_dir($file)) { + $handle = opendir($file); + while($filename = readdir($handle)) { + if ($filename != "." && $filename != "..") { + $this->_delete($file."/".$filename); + } + } + closedir($handle); + rmdir($file); + } else { + unlink($file); + } + } + + + /* ----------------------------------------------------------------- */ + /** + * Exporte toutes les informations ftp du compte AlternC + * @access private + * EXPERIMENTAL 'sid' function ;) + */ + function alternc_export() { + global $db,$err; + $err->log("bro","export"); + $str="\n"; + $pref=$this->GetPrefs(); + foreach ($pref as $k=>$v) { + $str.=" \n"; + $str.=" <".$k.">".xml_entities($v)."\n"; + $str.=" \n"; + } + $str.="\n"; + + return $str; + } + + +} /* Classe BROUTEUR */ + +?> diff --git a/stable-1.0/bureau/class/m_dom.php b/stable-1.0/bureau/class/m_dom.php new file mode 100644 index 00000000..2a47d71e --- /dev/null +++ b/stable-1.0/bureau/class/m_dom.php @@ -0,0 +1,1304 @@ + +* Copyleft {@link http://alternc.net/ AlternC Team} +* +* @copyright AlternC-Team 2002-11-01 http://alternc.net/ +* +*/ +class m_dom { + + /** $domains : Cache des domaines du membre + * @access private + */ + var $domains; + + /** $dns : Liste des dns trouvés par la fonction whois + * @access private + */ + var $dns; + + /** Flag : a-t-on trouvé un sous-domaine Webmail pour ce domaine ? + * @access private + */ + var $webmail; + + /** + * Système de verrouillage du cron + * Ce fichier permet de verrouiller le cron en attendant la validation + * du domaine par update_domains.sh + * @access private + */ + var $fic_lock_cron="/var/run/alternc/cron.lock"; + + /** + * Le cron a-t-il été bloqué ? + * Il faut appeler les fonctions privées lock et unlock entre les + * appels aux domaines. + * @access private + */ + var $islocked=false; + + var $type_local = "VHOST"; + var $type_url = "URL"; + var $type_ip = "IP"; + var $type_webmail = "WEBMAIL"; + var $type_ipv6 = "IPV6"; + var $type_cname = "CNAME"; + var $type_txt = "TXT"; + var $type_defmx = "DEFMX"; + var $type_defmx2 = "DEFMX2"; + + var $action_insert = "0"; + var $action_update= "1"; + var $action_delete = "2"; + + /* ----------------------------------------------------------------- */ + /** + * Constructeur + */ + function m_dom() { + } + + /* ----------------------------------------------------------------- */ + /** + * Quota name + */ + function alternc_quota_names() { + return "dom"; + } + /* ----------------------------------------------------------------- */ + /** + * Retourne un tableau contenant les types de domaines + * + * @return array retourne un tableau indexé contenant la liste types de domaines + * authorisé. Retourne FALSE si une erreur s'est produite. + */ + function domains_type_lst() { + global $db,$err,$cuid; + $err->log("dom","domains_type_lst"); + $db->query("select * from domaines_type order by advanced;"); + $this->domains_type_lst=false; + while ($db->next_record()) { + $this->domains_type_lst[strtolower($db->Record["name"])] = $db->Record; + } + return $this->domains_type_lst; + } + + function domains_type_enable_values() { + global $db,$err,$cuid; + $err->log("dom","domains_type_target_values"); + $db->query("desc domaines_type;"); + $r = array(); + while ($db->next_record()) { + if ($db->f('Field') == 'enable') { + $tab = explode(",", substr($db->f('Type'), 5, -1)); + foreach($tab as $t) { $r[]=substr($t,1,-1); } + } + } + return $r; + } + + function domains_type_target_values($type=null) { + global $db,$err,$cuid; + $err->log("dom","domains_type_target_values"); + if (is_null($type)) { + $db->query("desc domaines_type;"); + $r = array(); + while ($db->next_record()) { + if ($db->f('Field') == 'target') { + $tab = explode(",", substr($db->f('Type'), 5, -1)); + foreach($tab as $t) { $r[]=substr($t,1,-1); } + } + } + return $r; + } else { + $db->query("select target from domaines_type where name='$type';"); + if (! $db->next_record()) return false; + return $db->f('target'); + } + } + + function domains_type_regenerate($name) { + global $db,$err,$cuid; + $name=mysql_real_escape_string($name); + $db->query("update sub_domaines set web_action='UPDATE' where lower(type) = lower('$name') ;"); + $db->query("update domaines d, sub_domaines sd set d.dns_action = 'UPDATE' where lower(sd.type)=lower('$name');"); + return true; + } + + function domains_type_get($name) { + global $db,$err,$cuid; + $name=mysql_real_escape_string($name); + $db->query("select * from domaines_type where name='$name' ;"); + $db->next_record(); + return $db->Record; + } + + function domains_type_del($name) { + global $db,$err,$cuid; + $name=mysql_real_escape_string($name); + $db->query("delete domaines_type where name='$name';"); + return true; + } + + function domains_type_disable($id) { + global $db,$err,$cuid; + $id=intval($id); + $db->query("update domaines_type set enable=false where id=$id;"); + return true; + } + + function domains_type_enable($id) { + global $db,$err,$cuid; + $id=intval($id); + $db->query("update domaines_type set enable=true where id=$id;"); + return true; + } + + function domains_type_update($name, $description, $target, $entry, $compatibility, $enable, $only_dns, $need_dns,$advanced) { + global $err,$cuid,$db; + $id=intval($id); + $name=mysql_real_escape_string($name); + $description=mysql_real_escape_string($description); + $target=mysql_real_escape_string($target); + $entry=mysql_real_escape_string($entry); + $compatibility=mysql_real_escape_string($compatibility); + $enable=mysql_real_escape_string($enable); + $only_dns=intval($only_dns); + $need_dns=intval($need_dns); + $advanced=intval($advanced); + $db->query("UPDATE domaines_type SET description='$description', target='$target', entry='$entry', compatibility='$compatibility', enable='$enable', need_dns=$need_dns, only_dns=$only_dns, advanced='$advanced' where name='$name';"); + return true; + } + + function sub_domain_change_status($domain,$sub,$type,$value,$status) { + global $db,$err,$cuid; + $err->log("dom","sub_domain_change_status"); + $status=strtoupper($status); + if (! in_array($status,array('ENABLE', 'DISABLE'))) return false; + + $db->query("update sub_domaines set enable='$status' where domaine='$domain' and sub='$sub' and lower(type)=lower('$type') and valeur='$value'"); + + return true; + } + + /* ----------------------------------------------------------------- */ + /** + * Retourne un tableau contenant les domaines d'un membre. + * + * @return array retourne un tableau indexé contenant la liste des + * domaines hébergés sur le compte courant. Retourne FALSE si une + * erreur s'est produite. + */ + function enum_domains() { + global $db,$err,$cuid; + $err->log("dom","enum_domains"); + $db->query("select * from domaines where compte='$cuid' order by domaine asc;"); + $this->domains=array(); + if ($db->num_rows()>0) { + while ($db->next_record()) { + $this->domains[]=$db->f("domaine"); + } + } + return $this->domains; + } + + function del_domain_cancel($dom) { + global $db,$err,$classes,$cuid; + $err->log("dom","del_domaini_canl",$dom); + $dom=strtolower($dom); + $db->query("UPDATE sub_domaines SET web_action='UPDATE' WHERE domaine='$dom';"); + $db->query("UPDATE domaines SET dns_action='UPDATE' WHERE domaine='$dom';"); + + # TODO : some work with domain sensitive classes + + return true; + } + + /* ----------------------------------------------------------------- */ + /** + * Efface un domaine du membre courant, et tous ses sous-domaines + * + * Cette fonction efface un domaine et tous ses sous-domaines, ainsi que + * les autres services attachés à celui-ci. Elle appelle donc les autres + * classe. Chaque classe peut déclarer une fonction del_dom qui sera + * appellée lors de la destruction d'un domaine. + * + * @param string $dom nom de domaine à effacer + * @return boolean Retourne FALSE si une erreur s'est produite, TRUE sinon. + */ + function del_domain($dom) { + global $db,$err,$classes,$cuid; + $err->log("dom","del_domain",$dom); + $dom=strtolower($dom); + $db->query("SELECT * FROM domaines WHERE domaine='$dom';"); + if ($db->num_rows()==0) { + $err->raise("dom",1,$dom); + return false; + } + $db->next_record(); + if ($db->f("compte")!=$cuid) { + $err->raise("dom",2,$dom); + return false; + } + $db->query("UPDATE sub_domaines SET web_action='DELETE' WHERE domaine='$dom';"); + $db->query("UPDATE domaines SET dns_action='DELETE' WHERE domaine='$dom';"); + + // DEPENDANCE : + // Lancement de del_dom sur les classes domain_sensitive : + // Declenchons les autres classes. + foreach($classes as $c) { + if (method_exists($GLOBALS[$c],"alternc_del_domain")) { + $GLOBALS[$c]->alternc_del_domain($dom); + } + } + foreach($classes as $c) { + if (method_exists($GLOBALS[$c],"alternc_del_mx_domain")) { + $GLOBALS[$c]->alternc_del_mx_domain($dom); + } + } + return true; + } + + /* ----------------------------------------------------------------- */ + /** + * Installe un domaine sur le compte courant. + * + *

            Si le domaine existe déjà ou est interdit, ou est celui du serveur, + * l'installation est refusée. Si l'hébergement DNS est demandé, la fonction + * checkhostallow vérifiera que le domaine peut être installé conformément + * aux demandes des super-admin. + * Si le dns n'est pas demandé, le domaine peut être installé s'il est en + * seconde main d'un tld (exemple : test.eu.org ou test.com, mais pas + * toto.test.org ou test.test.asso.fr)

            + *

            Chaque classe peut définir une fonction add_dom($dom) qui sera + * appellée lors de l'installation d'un nouveau domaine.

            + * + * @param string $dom nom fqdn du domaine à installer + * @param integer $dns 1 ou 0 pour héberger le DNS du domaine ou pas. + * @param integer $noerase 1 ou 0 pour rendre le domaine inamovible ou non + * @param integer $force 1 ou 0, si 1, n'effectue pas les tests de DNS. + * force ne devrait être utilisé que par le super-admin. + $ @return boolean Retourne FALSE si une erreur s'est produite, TRUE sinon. + */ + function add_domain($domain,$dns,$noerase=0,$force=0,$isslave=0,$slavedom="") { + global $db,$err,$quota,$classes,$L_MX,$L_FQDN,$tld,$cuid,$bro; + $err->log("dom","add_domain",$domain); + + // Locked ? + if (!$this->islocked) { + $err->raise("dom",3); + return false; + } + // Verifie que le domaine est rfc-compliant + $domain=strtolower($domain); + $t=checkfqdn($domain); + if ($t) { + $err->raise("dom",3+$t); + return false; + } + // Interdit les domaines clés (table forbidden_domains) sauf en cas FORCE + $db->query("select domain from forbidden_domains where domain='$domain'"); + if ($db->num_rows() && !$force) { + $err->raise("dom",22); + return false; + } + if ($domain==$L_FQDN || $domain=="www.$L_FQDN") { + $err->raise("dom",18); + return false; + } + $db->query("SELECT compte FROM domaines WHERE domaine='$domain';"); + if ($db->num_rows()) { + $err->raise("dom",8); + return false; + } + $db->query("SELECT compte FROM `sub_domaines` WHERE sub != \"\" AND concat( sub, \".\", domaine )='$domain' OR domaine='$domain';"); + if ($db->num_rows()) { + $err->raise("dom",8); + return false; + } + $this->dns=$this->whois($domain); + if (!$force) { + $v=checkhostallow($domain,$this->dns); + if ($v==-1) { + $err->raise("dom",7); // TLD interdit + return false; + } + if ($dns && $v==-2) { + $err->raise("dom",12); // Domaine non trouvé dans le whois + return false; + } + if ($dns && $v==-3) { + $err->raise("dom",23); // Domaine non trouvé dans le whois + return false; + } + + if ($dns) $dns="1"; else $dns="0"; + + // mode 5 : force DNS to NO. + if ($tld[$v]==5) $dns=0; + // It must be a real domain (no subdomain) + if (!$dns) { + $v=checkhostallow_nodns($domain); + if ($v) { + $err->raise("dom",22); + return false; + } + } + } + // Check the quota : + if (!$quota->cancreate("dom")) { + $err->raise("dom",10); + return false; + } + if ($noerase) $noerase="1"; else $noerase="0"; + $db->query("insert into domaines (compte,domaine,gesdns,gesmx,noerase,dns_action) values ('$cuid','$domain','$dns','1','$noerase','UPDATE');"); + + if ($isslave) { + $isslave=true; + $db->query("SELECT domaine FROM domaines WHERE compte='$cuid' AND domaine='$slavedom';"); + $db->next_record(); + if (!$db->Record["domaine"]) { + $err->raise("dom",1,$slavedom); + $isslave=false; + } + // Point to the master domain : + $this->set_sub_domain($domain, '', $this->type_url, 'http://www.'.$slavedom); + $this->set_sub_domain($domain, 'www', $this->type_url, 'http://www.'.$slavedom); + $this->set_sub_domain($domain, 'mail', $this->type_url, 'http://mail.'.$slavedom); + } + if (!$isslave) { + // Creation du repertoire dans www + $dest_root = $bro->get_userid_root($cuid); + $domshort=str_replace("-","",str_replace(".","",$domain)); + + if (! is_dir($dest_root . "/". $domshort)) { + mkdir($dest_root . "/". $domshort); + } + + // Creation des 3 sous-domaines par défaut : Vide, www et mail + $this->set_sub_domain($domain, '', $this->type_url, 'http://www.'.$domain); + $this->set_sub_domain($domain, 'www', $this->type_local, '/'. $domshort); + $this->set_sub_domain($domain, 'mail', $this->type_webmail, ''); + } + + // DEPENDANCE : + // Lancement de add_dom sur les classes domain_sensitive : + // Declenchons les autres classes. + foreach($classes as $c) { + if (method_exists($GLOBALS[$c],"alternc_add_domain")) { + $GLOBALS[$c]->alternc_add_domain($domain); + } + } + foreach($classes as $c) { + if (method_exists($GLOBALS[$c],"alternc_add_mx_domain")) { + $GLOBALS[$c]->alternc_add_mx_domain($domain); + } + } + if ($isslave) { + foreach($classes as $c) { + if (method_exists($GLOBALS[$c],"alternc_add_slave_domain")) { + $GLOBALS[$c]->alternc_add_slave_domain($domain,$slavedom); + } + } + } + return true; + } + + /* ----------------------------------------------------------------- */ + /** + * Retourne les entrées DNS du domaine $domain issues du WHOIS. + * + * Cette fonction effectue un appel WHOIS($domain) sur Internet, + * et extrait du whois les serveurs DNS du domaine demandé. En fonction + * du TLD, on sait (ou pas) faire le whois correspondant. + * Actuellement, les tld suivants sont supportés : + * .com .net .org .be .info .ca .cx .fr .biz .name + * + * @param string $domain Domaine fqdn dont on souhaite les serveurs DNS + * @return array Retourne un tableau indexé avec les NOMS fqdn des dns + * du domaine demandé. Retourne FALSE si une erreur s'est produite. + * + */ + function whois($domain) { + global $db,$err; + $err->log("dom","whois",$domain); + // pour ajouter un nouveau TLD, utiliser le code ci-dessous. + // echo "whois : $domain
            "; + ereg(".*\.([^\.]*)",$domain,$out); + $ext=$out[1]; + // pour ajouter un nouveau TLD, utiliser le code ci-dessous. + // echo "ext: $ext
            "; + + if (($fp=@fsockopen("whois.iana.org", 43))>0) { + fputs($fp, "$domain\r\n"); + $found = false; + $state=0; + while (!feof($fp)) { + $ligne = fgets($fp,128); + if (ereg('^whois:[[:space:]]+.*$', $ligne)) { $serveur=preg_replace('/whois:\ */','',$ligne,1); } + } + } + + $egal=""; + switch($ext) { + case "net": + $egal="="; + break; + case "name": + $egal="domain = "; + break; + } + // pour ajouter un nouveau TLD, utiliser le code ci-dessous. + // echo "serveur : $serveur
            "; + if (($fp=@fsockopen($serveur, 43))>0) { + fputs($fp, "$egal$domain\r\n"); + $found = false; + $state=0; + while (!feof($fp)) { + $ligne = fgets($fp,128); + // pour ajouter un nouveau TLD, utiliser le code ci-dessous. + // echo "| $ligne
            "; + switch($ext) { + case "org": + case "com": + case "net": + case "info": + case "biz": + case "name": + case "cc": + if (ereg("Name Server:", $ligne)) { + $found = true; + $tmp=strtolower(ereg_replace(chr(10), "",ereg_replace(chr(13),"",ereg_replace(" ","", ereg_replace("Name Server:","", $ligne))))); + if ($tmp) + $server[]=$tmp; + } + break; + case "cx": + $ligne = ereg_replace(chr(10), "",ereg_replace(chr(13),"",ereg_replace(" ","", $ligne))); + if ($ligne=="" && $state==1) + $state=2; + if ($state==1) + $server[]=strtolower($ligne); + if ($ligne=="Nameservers:" && $state==0) { + $state=1; + $found = true; + } + break; + case "eu": + case "be": + $ligne=preg_replace("/^ *([^ ]*) \(.*\)$/","\\1",trim($ligne)); + if($found) + $tmp = trim($ligne); + if ($tmp) + $server[]=$tmp; + if ($ligne=="Nameservers:") { + $state=1; + $found=true; + } + break; + case "im": + if (preg_match('/Name Server:/', $ligne)) { + $found = true; + // weird regexp (trailing garbage after name server), but I could not make it work otherwise + $tmp = strtolower(preg_replace('/Name Server: ([^ ]+)\..$/',"\\1", $ligne)); + $tmp = preg_replace('/[^-_a-z0-9\.]/', '', $tmp); + if ($tmp) + $server[]=$tmp; + } + break; + case "it": + if (ereg("nserver:", $ligne)) { + $found=true; + $tmp=strtolower(preg_replace("/nserver:\s*[^ ]*\s*([^\s]*)$/","\\1", $ligne)); + if ($tmp) + $server[]=$tmp; + } + break; + case "fr": + case "re": + if (ereg("nserver:", $ligne)) { + $found=true; + $tmp=strtolower(preg_replace("/nserver:\s*([^\s]*)\s*.*$/","\\1", $ligne)); + if ($tmp) + $server[]=$tmp; + } + break; + case "ca": + case "ws"; + if (ereg('^[[:space:]]*Name servers:[[:space:]]*$', $ligne)) { + // found the server + $state = 1; + } elseif ($state) { + if (ereg('^[^%]', $ligne) && $ligne = ereg_replace('[[:space:]]', "", $ligne)) { + // first non-whitespace line is considered to be the nameservers themselves + $found = true; + $server[] = $ligne; + } + } + break; + case "coop": + if (preg_match('/Host Name:\s*([^\s]+)/', $ligne, $matches)) { + $found = true; + $server[] = $matches[1]; + } + } // switch + } // while + fclose($fp); + } else { + $err->raise("dom",11); + return false; + } + + if ($found) { + return $server; + } else { + $err->raise("dom",12); + return false; + } + } // whois + + /* ----------------------------------------------------------------- */ + /** + * vérifie la presence d'un champs mx valide sur un serveur DNS + * + */ + + function checkmx($domaine,$mx) { + //initialise variables + $mxhosts = array(); + + //récupére les champs mx + if (!getmxrr($domaine,$mxhosts)) { + //aucune hôte mx spécifié + return 1; + } + else { + //vérifie qu'un des hôtes est bien sur alternc + $bolmx = 0; + //décompose les différents champ MX coté alternc + $arrlocalmx = split(",",$mx); + //parcours les différents champ MX retournés + foreach($mxhosts as $mxhost) { + foreach($arrlocalmx as $localmx) { + if ($mxhost==$localmx) { + $bolmx = 1; + } + } + } + //définition de l'erreur selon reponse du parcours de mxhosts + if ($bolmx == 0) { + //aucun des champs MX ne correspond au serveur + return 2; + } + else { + //un champ mx correct a été trouvé + return 0; + } + } + } //checkmx + + + /* ----------------------------------------------------------------- */ + /** + * retourne TOUTES les infos d'un domaine + * + * @param string $dom Domaine dont on souhaite les informations + * @return array Retourne toutes les infos du domaine sous la forme d'un + * tableau associatif comme suit :
            +   *  $r["name"] =  Nom fqdn
            +   *  $r["dns"]  =  Gestion du dns ou pas ?
            +   *  $r["mx"]   =  Valeur du champs MX si "dns"=true
            +   *  $r["mail"] =  Heberge-t-on le mail ou pas ? (si "dns"=false)
            +   *  $r["nsub"] =  Nombre de sous-domaines
            +   *  $r["sub"]  =  tableau associatif des sous-domaines
            +   *  $r["sub"][0-(nsub-1)]["name"] = nom du sous-domaine (NON-complet)
            +   *  $r["sub"][0-(nsub-1)]["dest"] = Destination (url, ip, local ...)
            +   *  $r["sub"][0-(nsub-1)]["type"] = Type (0-n) de la redirection.
            +   *  
            + * Retourne FALSE si une erreur s'est produite. + * + */ + function get_domain_all($dom) { + global $db,$err,$cuid; + $err->log("dom","get_domain_all",$dom); + // Locked ? + if (!$this->islocked) { + $err->raise("dom",3); + return false; + } + $t=checkfqdn($dom); + if ($t) { + $err->raise("dom",3+$t); + return false; + } + $r["name"]=$dom; + $db->query("select * from domaines where compte='$cuid' and domaine='$dom'"); + if ($db->num_rows()==0) { + $err->raise("dom",1,$dom); + return false; + } + $db->next_record(); + $r["dns"]=$db->Record["gesdns"]; + $r["dns_action"]=$db->Record["dns_action"]; + $r["dns_result"]=$db->Record["dns_result"]; + $r["mail"]=$db->Record["gesmx"]; + $r["mx"]=$db->Record["mx"]; + $r['noerase']=$db->Record['noerase']; + $db->free(); + $db->query("select count(*) as cnt from sub_domaines where compte='$cuid' and domaine='$dom'"); + $db->next_record(); + $r["nsub"]=$db->Record["cnt"]; + $db->free(); + $db->query("select sd.*, dt.description as type_desc, dt.only_dns from sub_domaines sd, domaines_type dt where compte='$cuid' and domaine='$dom' and upper(dt.name)=upper(sd.type) order by sd.sub,sd.type"); + // Pas de webmail, on le cochera si on le trouve. + $this->webmail=0; + for($i=0;$i<$r["nsub"];$i++) { + $db->next_record(); + $r["sub"][$i]=array(); + $r["sub"][$i]["name"]=$db->Record["sub"]; + $r["sub"][$i]["dest"]=$db->Record["valeur"]; + $r["sub"][$i]["type"]=$db->Record["type"]; + $r["sub"][$i]["enable"]=$db->Record["enable"]; + $r["sub"][$i]["type_desc"]=$db->Record["type_desc"]; + $r["sub"][$i]["only_dns"]=$db->Record["only_dns"]; + $r["sub"][$i]["web_action"]=$db->Record["web_action"]; +/* + if ($db->Record["type"]==3) { // Webmail + $this->webmail=1; + $r["sub"][$i]["dest"]=_("Webmail access"); + } +*/ + } + $db->free(); + return $r; + } // get_domain_all + + + /* ----------------------------------------------------------------- */ + /** + * Retourne TOUTES les infos d'un sous domaine du compte courant. + * + * @param string $dom Domaine fqdn concerné + * @param string $sub Sous-domaine dont on souhaite les informations + * @return arrray Retourne un tableau associatif contenant les + * informations du sous-domaine demandé.
            +   *  $r["name"]= nom du sous-domaine (NON-complet)
            +   *  $r["dest"]= Destination (url, ip, local ...)
            +   *  
            + * $r["type"]= Type (0-n) de la redirection. + * Retourne FALSE si une erreur s'est produite. + */ + function get_sub_domain_all($dom,$sub, $type="", $value='') { + global $db,$err,$cuid; + $err->log("dom","get_sub_domain_all",$dom."/".$sub); + // Locked ? + if (!$this->islocked) { + $err->raise("dom",3); + return false; + } + $t=checkfqdn($dom); + if ($t) { + $err->raise("dom",3+$t); + return false; + } +/* + if ( ! empty($value)) { + $type = " and valeur=\"".mysql_real_escape_string($value)."\""; + } + if ( ! empty($type)) { + $type = " and type=\"".mysql_real_escape_string($type)."\""; + } +*/ + $db->query("select sd.*, dt.description as type_desc, dt.only_dns from sub_domaines sd, domaines_type dt where compte='$cuid' and domaine='$dom' and sub='$sub' and ( length('$type')=0 or type='$type') and (length('$value')=0 or '$value'=valeur) and upper(dt.name)=upper(sd.type);"); + if ($db->num_rows()==0) { + $err->raise("dom",14); + return false; + } + $db->next_record(); + $r=array(); + $r["name"]=$db->Record["sub"]; + $r["dest"]=$db->Record["valeur"]; + $r["enable"]=$db->Record["enable"]; + $r["type_desc"]=$db->Record["type_desc"]; + $r["only_dns"]=$db->Record["only_dns"]; + $r["web_action"]=$db->Record["web_action"]; + $db->free(); + return $r; + } // get_sub_domain_all + + + function check_type_value($type, $value) { + global $db,$err,$cuid; + + // check the type we can have in domaines_type.target + + switch ($this->domains_type_target_values($type)) { + case 'NONE': + if (empty($value) or is_null($value)) {return true;} + break; + case 'URL': + if ( $value == strval($value)) {return true;} + break; + case 'DIRECTORY': + if (substr($value,0,1)!="/") { + $value="/".$value; + } + if (!checkuserpath($value)) { + $err->raise("dom",21); + return false; + } + return true; + break; + case 'IP': + if (checkip($value)) {return true;} + break; + case 'IPV6': + if (checkipv6($value)) {return true;} + break; + case 'DOMAIN': + if (checkcname($value)) {return true;} + break; + case 'TXT': + if ( $value == strval($value)) {return true;} + break; + default: + return false; + break; + } + return false; + } //check_type_value + + + function can_create_subdomain($dom,$sub,$type,$type_old='', $value_old='') { + global $db,$err,$cuid; + $err->log("dom","can_create_subdomain",$dom."/".$sub); + + # Get the compatibility list for this domain type + $db->query("select upper(compatibility) as compatibility from domaines_type where upper(name)=upper('$type');"); + if (!$db->next_record()) return false; + $compatibility_lst = explode(",",$db->f('compatibility')); + + # Get the list of type of subdomains already here who have the same name + $db->query("select * from sub_domaines where sub='$sub' and domaine='$dom' and not (type='$type_old' and valeur='$value_old') and web_action != 'DELETE'"); + #$db->query("select * from sub_domaines where sub='$sub' and domaine='$dom';"); + while ($db->next_record()) { + # And if there is a domain with a incompatible type, return false + if (! in_array(strtoupper($db->f('type')),$compatibility_lst)) return false; + } + + # All is right, go ! Create ur domain ! + return true; + } + + // /* ----------------------------------------------------------------- */ + /** + * Modifier les information du sous-domaine demandé. + * + * Note : si le sous-domaine $sub.$dom n'existe pas, il est créé.
            + * Note : TODO : vérification de concordance de $dest
            + * + * @param string $dom Domaine dont on souhaite modifier/ajouter un sous domaine + * @param string $subk Sous domaine à modifier / créer + * @param integer $type Type de sous-domaine (local, ip, url ...) + * @param string $action Action : vaut "add" ou "edit" selon que l'on + * Crée (add) ou Modifie (edit) le sous-domaine + * @param string $dest Destination du sous-domaine, dépend de la valeur + * de $type (url, ip, dossier...) + * @return boolean Retourne FALSE si une erreur s'est produite, TRUE sinon. + */ + // TODO : j'ai viré le type action, valider que plus personne ne l'utilise (quatrieme argument) + function set_sub_domain($dom,$sub,$type,$dest, $type_old=null,$sub_old=null,$value_old=null) { + global $db,$err,$cuid; + $err->log("dom","set_sub_domain",$dom."/".$sub."/".$type."/".$dest); + // Locked ? + if (!$this->islocked) { + $err->raise("dom",3); + return false; + } + $dest=trim($dest); + $sub=trim(trim($sub),"."); + $dom=strtolower($dom); + $sub=strtolower($sub); + + // if (!(($sub == '*') || ($sub=="") || (preg_match('/([a-z0-9][\.\-a-z0-9]*)?[a-z0-9]/', $sub)))) { + $fqdn=checkfqdn($sub); + // Special cases : * (all subdomains at once) and '' empty subdomain are allowed. + if (($sub != '*' && $sub!='') && !($fqdn==0 || $fqdn==4)) { + $err->raise("dom",24); + return false; + } + + if (! $this->check_type_value($type,$dest)) { + # TODO have a real err code + $err->raise("dom",667); + return false; + } + + // On a épuré $dir des problèmes eventuels ... On est en DESSOUS du dossier de l'utilisateur. + if ($t=checkfqdn($dom)) { + $err->raise("dom",3+$t); + return false; + } + + if (! $this->can_create_subdomain($dom,$sub,$type,$type_old,$value_old)) { + # TODO have a real error code + $err->raise("dom", 654); + return false; + } + + if (! is_null($type_old )) { // It's not a creation, it's an edit. Delete the old one + $db->query("update sub_domaines set web_action='DELETE' where domaine='$dom' and sub='$sub' and upper(type)=upper('$type_old') and valeur='$value_old';"); + } + + // Re-create the one we want + if (! $db->query("insert into sub_domaines (compte,domaine,sub,valeur,type,web_action) values ('$cuid','$dom','$sub','$dest','$type','UPDATE');") ) { + echo "query failed: ".$db->Error; + return false; + } + + // Tell to update the DNS file + $db->query("update domaines set dns_action='UPDATE' where domaine='$dom';"); + + return true; + } // set_sub_domain + + + /* ----------------------------------------------------------------- */ + /** + * Supprime le sous-domaine demandé + * + * @param string $dom Domaine dont on souhaite supprimer un sous-domaine + * @param string $sub Sous-domaine que l'on souhaite supprimer + * @return boolean Retourne FALSE si une erreur s'est produite, TRUE sinon. + * + */ + function del_sub_domain($dom,$sub,$type,$value='') { + global $db,$err,$cuid; + $err->log("dom","del_sub_domain",$dom."/".$sub); + // Locked ? + if (!$this->islocked) { + $err->raise("dom",3); + return false; + } + $t=checkfqdn($dom); + if ($t) { + $err->raise("dom",3+$t); + return false; + } + if (!$r=$this->get_sub_domain_all($dom,$sub,$type)) { + // Le sous-domaine n'existe pas, erreur + $err->raise("dom",14); + return false; + } else { + // OK, on valide : + $db->query("update sub_domaines set web_action='DELETE' where domaine='$dom' and sub='$sub' and type='$type' and ( length('$value')=0 or valeur='$value') "); + $db->query("update domaines set dns_action='UPDATE' where domaine='$dom';"); + } + return true; + } // del_sub_domain + + /* ----------------------------------------------------------------- */ + /** + * Modifie les information du domaine précisé. + * + * @param string $dom Domaine du compte courant que l'on souhaite modifier + * @param integer $dns Vaut 1 ou 0 pour héberger ou pas le DNS du domaine + * @param integer $gesmx Héberge-t-on le emails du domaines sur ce serveur ? + * @param boolean $force Faut-il passer les checks DNS ou MX ? (admin only) + * @return boolean appelle $mail->add_dom ou $ma->del_dom si besoin, en + * fonction du champs MX. Retourne FALSE si une erreur s'est produite, + * TRUE sinon. + * + */ + function edit_domain($dom,$dns,$gesmx,$force=0) { + global $db,$err,$L_MX,$classes,$cuid; + $err->log("dom","edit_domain",$dom."/".$dns."/".$gesmx); + // Locked ? + if (!$this->islocked && !$force) { + $err->raise("dom",3); + return false; + } + if ($dns == 1 && !$force) { + $this->dns=$this->whois($dom); + $v=checkhostallow($dom,$this->dns); + if ($v==-1) { + $err->raise("dom",7); // TLD interdit + return false; + } + if ($dns && $v==-2) { + $err->raise("dom",12); // Domaine non trouvé dans le whois + return false; + } + if ($dns && $v==-3) { + $err->raise("dom",23); // Domaine non trouvé dans le whois + return false; + } + } + $t=checkfqdn($dom); + if ($t) { + $err->raise("dom",3+$t); + return false; + } + if (!$r=$this->get_domain_all($dom)) { + // Le domaine n'existe pas, Failure + $err->raise("dom",4,$dom); + return false; + } + if ($dns!="1") $dns="0"; + // On vérifie que des modifications ont bien eu lieu :) + if ($r["dns"]==$dns && $r["mail"]==$gesmx) { + $err->raise("dom",15); + return false; + } + + //si gestion mx uniquement, vérification du dns externe + if ($dns=="0" && $gesmx=="1" && !$force) { + $vmx = $this->checkmx($dom,$mx); + if ($vmx == 1) { + // Aucun champ mx de spécifié sur le dns + $err->raise("dom",25); + return false; + } + + if ($vmx == 2) { + // Serveur non spécifié parmi les champx mx + $err->raise("dom",25); + return false; + } + } + + // OK, des modifs ont été faites, on valide : + // DEPENDANCE : + if ($gesmx && !$r["mail"]) { // on a associé le MX : on cree donc l'entree dans MySQL + // Lancement de add_dom sur les classes domain_sensitive : + foreach($classes as $c) { + if (method_exists($GLOBALS[$c],"alternc_add_mx_domain")) { + $GLOBALS[$c]->alternc_add_mx_domain($dom); + } + } + } + + if (!$gesmx && $r["mail"]) { // on a dissocié le MX : on détruit donc l'entree dans LDAP + // Lancement de del_dom sur les classes domain_sensitive : + foreach($classes as $c) { + if (method_exists($GLOBALS[$c],"alternc_del_mx_domain")) { + $GLOBALS[$c]->alternc_del_mx_domain($dom); + } + } + } + + $db->query("UPDATE domaines SET gesdns='$dns', gesmx='$gesmx' WHERE domaine='$dom'"); + $db->query("UPDATE domaines set dns_action='UPDATE' where domaine='$dom';"); + + return true; + } // edit_domain + + + + /****************************/ + /* Slave dns ip managment */ + /****************************/ + /* ----------------------------------------------------------------- */ + /** + * Return the list of ip addresses and classes that are allowed access to domain list + * through AXFR Transfers from the bind server. + */ + function enum_slave_ip() { + global $db,$err; + $db->query("SELECT * FROM slaveip;"); + if (!$db->next_record()) { + return false; + } + do { + $res[]=$db->Record; + } while ($db->next_record()); + return $res; + } + + /* ----------------------------------------------------------------- */ + /** + * Add an ip address (or a ip class) to the list of allowed slave ip access list. + */ + function add_slave_ip($ip,$class="32") { + global $db,$err; + if (!checkip($ip)) { + $err->raise("dom",19); + return false; + } + $class=intval($class); + if ($class<8 || $class>32) $class=32; + $db->query("SELECT * FROM slaveip WHERE ip='$ip' AND class='$class';"); + if ($db->next_record()) { + $err->raise("err",22); + return false; + } + $db->query("INSERT INTO slaveip (ip,class) VALUES ('$ip','$class');"); + $f=fopen(SLAVE_FLAG,"w"); + fputs($f,"yopla"); + fclose($f); + return true; + } + + /* ----------------------------------------------------------------- */ + /** + * Remove an ip address (or a ip class) from the list of allowed slave ip access list. + */ + function del_slave_ip($ip) { + global $db,$err; + if (!checkip($ip)) { + $err->raise("dom",19); + return false; + } + $db->query("DELETE FROM slaveip WHERE ip='$ip'"); + $f=fopen(SLAVE_FLAG,"w"); + fputs($f,"yopla"); + fclose($f); + return true; + } + + + + /* ----------------------------------------------------------------- */ + /** + * Check for a slave account + */ + function check_slave_account($login,$pass) { + global $db,$err; + $db->query("SELECT * FROM slaveaccount WHERE login='$login' AND pass='$pass';"); + if ($db->next_record()) { + return true; + } + return false; + } + + /* ----------------------------------------------------------------- */ + /** + * Out (echo) the complete hosted domain list : + */ + function echo_domain_list() { + global $db,$err; + $db->query("SELECT domaine FROM domaines WHERE gesdns=1 ORDER BY domaine"); + while ($db->next_record()) { + echo $db->f("domaine")."\n"; + } + return true; + } + + + /* ----------------------------------------------------------------- */ + /** + * Returns the complete hosted domain list : + */ + function get_domain_list($uid=-1) { + global $db,$err; + $uid=intval($uid); + $res=array(); + if ($uid!=-1) { + $sql=" AND compte='$uid' "; + } + $db->query("SELECT domaine FROM domaines WHERE gesdns=1 $sql ORDER BY domaine"); + while ($db->next_record()) { + $res[]=$db->f("domaine"); + } + return $res; + } + + + /* ----------------------------------------------------------------- */ + /** + * Return the list of allowed slave accounts + */ + function enum_slave_account() { + global $db,$err; + $db->query("SELECT * FROM slaveaccount;"); + $res=array(); + while ($db->next_record()) { + $res[]=$db->Record; + } + if (!count($res)) return false; + return $res; + } + + /* ----------------------------------------------------------------- */ + /** + * Add a slave account that will be allowed to access the domain list + */ + function add_slave_account($login,$pass) { + global $db,$err; + $db->query("SELECT * FROM slaveaccount WHERE login='$login'"); + if ($db->next_record()) { + $err->raise("err",23); + return false; + } + $db->query("INSERT INTO slaveaccount (login,pass) VALUES ('$login','$pass')"); + return true; + } + + /* ----------------------------------------------------------------- */ + /** + * Remove a slave account + */ + function del_slave_account($login) { + global $db,$err; + $db->query("DELETE FROM slaveaccount WHERE login='$login'"); + return true; + } + + /*************/ + /* Private */ + /*************/ + + + /* ----------------------------------------------------------------- */ + /** + * Lock tente de verrouiller le fichier lock du cron. Si tout va bien (toujours?) + * retourne True, sinon retourne False + * NOTE : le systeme de lock est asymétrique, si on a un fichier CRONLOCK, on + * attends (que le cron ait fini son execution). + * @access private + */ + function lock() { + global $db,$err; + $err->log("dom","lock"); + if ($this->islocked) { + $err->raise("dom",17); + } + while (file_exists($this->fic_lock_cron)) { + sleep(2); + } + $this->islocked=true; + return true; + } + + /* ----------------------------------------------------------------- */ + /** + * unlock déverrouille le fichier lock du cron. Si tout va bien (toujours?) + * retourne True, sinon retourne False + * NOTE : actuellement, vu le système de lock asymetrique, on ne fait rien ;) + * @access private + */ + function unlock() { + global $db,$err; + $err->log("dom","unlock"); + if (!$this->islocked) { + $err->raise("dom",3); + } + $this->islocked=false; + return true; + } + + + /* ----------------------------------------------------------------- */ + /** + * Declare that a domain's emails are hosted in this server : + * This adds 2 MX entries in this domain (if required) + */ + function alternc_add_mx_domain($domain) { + global $err; + $err->log("dom","alternc_add_mx_domain"); + $this->set_sub_domain($domain, '', $this->type_defmx, ''); + if (! empty($GLOBALS['L_DEFAULT_SECONDARY_MX'])) { + $this->set_sub_domain($domain, '', $this->type_defmx2, ''); + } + return true; + } + + + /* ----------------------------------------------------------------- */ + /** + * Efface un compte (tous ses domaines) + */ + function alternc_del_member() { + global $err; + $err->log("dom","alternc_del_member"); + $li=$this->enum_domains(); + foreach($li as $dom) { + $this->del_domain($dom); + } + return true; + } + + + /* ----------------------------------------------------------------- */ + /** + * Returns the used quota for the $name service for the current user. + * @param $name string name of the quota + * @return integer the number of service used or false if an error occured + * @access private + */ + function alternc_get_quota($name) { + global $db,$err,$cuid; + if ($name=="dom") { + $err->log("dom","get_quota"); + $db->query("SELECT COUNT(*) AS cnt FROM domaines WHERE compte='$cuid'"); + $db->next_record(); + return $db->f("cnt"); + } else return false; + } + + + /* ----------------------------------------------------------------- */ + /** + * Exporte toutes les informations domaine du compte. + * @access private + * EXPERIMENTAL 'sid' function ;) + */ + function alternc_export() { + global $db,$err; + $err->log("dom","export"); + $this->enum_domains(); + $str="\n"; + foreach ($this->domains as $d) { + $str.=" \n ".xml_entities($d)."\n"; + $s=$this->get_domain_all($d); + $str.=" ".xml_entities($s[dns])."\n"; + $str.=" ".xml_entities($s[mx])."\n"; + $str.=" ".xml_entities($s[mail])."\n"; + if (is_array($s[sub])) { + foreach ($s[sub] as $sub) { + $str.=" "; + $str.="".xml_entities($sub[name]).""; + $str.="".xml_entities($sub[dest]).""; + $str.="".xml_entities($sub[type]).""; + $str.="\n"; + } + } + $str.=" \n"; + } + $str.="\n"; + return $str; + } + + +} /* Class m_domains */ + +?> diff --git a/stable-1.0/bureau/class/m_err.php b/stable-1.0/bureau/class/m_err.php new file mode 100644 index 00000000..2fe424a4 --- /dev/null +++ b/stable-1.0/bureau/class/m_err.php @@ -0,0 +1,154 @@ +Cette classe gère les erreurs qui peuvent apparaitre lors d'appels +* à l'API d'AlternC. Ces erreurs sont stockées sous la forme de 2 nombres +* (Classe ID et Numéro d'erreur) ainsi qu'un texte facultatif associé. +* Des textes d'erreurs localisés sont aussi disponibles.

            +*

            Cette classe se charge aussi d'insérer les appels à l'API d'AlternC +* dans les logs du système dans /var/log/alternc/bureau.log +*

            +* Copyleft {@link http://alternc.net/ AlternC Team} +* +* @copyright AlternC-Team 2002-11-01 http://alternc.net/ +*/ +class m_err { + + /** Numero de classe d'erreur actuelle */ + var $clsid=0; + + /** Dernière erreur enregistrée par la classe */ + var $error=0; + + /** Paramètre chaine eventuellement associé à la dernière erreur */ + var $param=""; + + /** Emplacement du fichier de logs d'AlternC */ + var $logfile="/var/log/alternc/bureau.log"; + + /** + * Leve une erreur, signale celle-ci dans les logs et stocke le code erreur + * + * Cette fonction lance une erreur, l'ajoute dans les logs d'AlternC, + * et la met à disposition pour le bureau virtuel pour affichage ultérieur. + * + * @todo ne plus utiliser $error de façon numérique, nulle part + * + * @param integer $clsid Classe qui lève l'erreur + * @param mixed $error Numéro de l'erreur ou chaîne décrivant l'erreur + * @param string $param Paramètre chaine associé à l'erreur (facultatif) + * @return boolean TRUE si l'erreur est connue, FALSE sinon. + * + */ + function raise($clsid,$error,$param="") { + /* Leve une exception. Si elle existe, sinon, stocke un message d'erreur sur erreur ...*/ + if (_("err_".$clsid."_".$error)!="err_".$clsid."_".$error || is_string($error)) { + $this->clsid=$clsid; + $this->error=$error; + $args = func_get_args(); + $this->param=array_slice($args, 2); + $this->logerr(); + return true; + } else { + $this->clsid="err"; + $this->error=1; + $this->param="Numéro $error, Classe $clsid, Valeur $param"; + $this->logerr(); + return false; + } + } + + /** + * Retourne la chaine d'erreur correspondant à la dernière erreur rencontrée + * + * Si la dernière erreur rencontrée est connue, retourne l'erreur en toute lettre + * dans la langue actuellement sélectionnée, ou en anglais par défaut. + * Si l'erreur n'est pas connue, retourne son numéro de classe et d'ereur. + * + * @return string Chaine d'erreur. + * + */ + function errstr() { + if (is_string($this->error)) { + $str = _("err_".$this->clsid."_generic: ")._($this->error)."\n"; + } else { + $str = _("err_".$this->clsid."_".$this->error)."\n"; + } + $args = $this->param; + if (is_array($args)) { + array_unshift($args, $str); + $msg = call_user_func_array("sprintf", $args); + return $msg; + } else { + return $args; + } + } + + /** + * Envoi un log d'erreur dans /var/log/alternc/bureau.log + * + * Cette fonction Loggue la dernière erreur dans /var/log sur la machine, + * permettant ainsi aux admins de savoir ce qu'il se passe... + * Elle est appelée automatiquement par error + * @access private + */ + function logerr() { + global $mem; + $f=@fopen($this->logfile,"ab"); + if ($f) { + fputs($f,date("d/m/Y H:i:s")." - ERROR - "); + fputs($f,$mem->user["login"]." - "); + fputs($f,$this->errstr()); + fclose($f); + } + } + + /** + * Envoi un log d'appel d'API dans /var/log/alternc/bureau.log + * + * Cette fonction loggue dans /var/log l'appel à la fonction de l'API + * d'AlternC. + * + * @param integer $clsid Numéro de la classe dont on a appelé une fonction + * @param string $function Nom de la fonction appelée + * @param string $param Paramètre (facultatif) passés à la fonction de l'API. + * @return boolean TRUE si le log a été ajouté, FALSE sinon + * + */ + function log($clsid,$function,$param="") { + global $mem,$cuid; + $f=@fopen($this->logfile,"ab"); + if ($f) { + if (!isset($_SERVER['REMOTE_ADDR'])) $_SERVER['REMOTE_ADDR']="::1"; + fputs($f,date("d/m/Y H:i:s")." - " . $_SERVER['REMOTE_ADDR'] . " - CALL - "); + fputs($f,$mem->user["login"]." - "); + fputs($f,$clsid." - ".$function." - ".$param."\n"); + fclose($f); + return true; + } else { + return false; + } + } + +}; /* Classe m_err */ diff --git a/stable-1.0/bureau/class/m_ftp.php b/stable-1.0/bureau/class/m_ftp.php new file mode 100644 index 00000000..31b4bcb3 --- /dev/null +++ b/stable-1.0/bureau/class/m_ftp.php @@ -0,0 +1,382 @@ + +* Copyleft {@link http://alternc.net/ AlternC Team} +* +* @copyright AlternC-Team 2002-11-01 http://alternc.net/ +* +*/ +class m_ftp { + + /* ----------------------------------------------------------------- */ + /** + * Constructeur + */ + function m_ftp() { + } + + /* ----------------------------------------------------------------- */ + /** + * Quota name + */ + function alternc_quota_names() { + return "ftp"; + } + + + /* ----------------------------------------------------------------- */ + /** + * Password kind used in this class (hook for admin class) + */ + function alternc_password_policy() { + return array("ftp"=>"FTP accounts"); + } + + + /* ----------------------------------------------------------------- */ + /** Retourne la liste des comptes FTP du compte hébergé + * Retourne la liste des comptes FTP sous forme de tableau indexé de + * tableaus associatifs comme suit : + * $a["id"]= ID du compte ftp + * $a["login"]= Nom de login du compte + * $a["pass"]= Mot de passe du compte + * $a["dir"]= Dossier relatif à la racine du compte de l'utilisateur + * @return array Retourne le tableau des comptes ou FALSE si une erreur s'est produite. + */ + function get_list() { + global $db,$err,$cuid; + $err->log("ftp","get_list"); + $r=array(); + $db->query("SELECT id, name, homedir FROM ftpusers WHERE uid='$cuid' ORDER BY homedir;"); + if ($db->num_rows()) { + while ($db->next_record()) { + // On passe /var/alternc/html/u/user + $tr=preg_match("/^\/var\/alternc\/html\/.\/[^\/]*\/(.*)$/", $db->f("homedir"),$match); /* " */ + $r[]=array( + "id"=>$db->f("id"), + "login"=>$db->f("name"), + "dir"=>$match[1] + ); + } + return $r; + } else { + $err->raise("ftp",1); + return false; + } + } + + /* ----------------------------------------------------------------- */ + /** Retourne les détails d'un compte FTP (voir get_list) + * Le tableau est celui du compte d'id spécifié + * @param integer $id Numéro du compte dont on souhaite obtenir les détails + * @return array Tableau associatif contenant les infos du comptes ftp + */ + function get_ftp_details($id) { + global $db,$err,$cuid; + $err->log("ftp","get_ftp_details",$id); + $r=array(); + $db->query("SELECT id, name, homedir FROM ftpusers WHERE uid='$cuid' AND id='$id';"); + if ($db->num_rows()) { + $db->next_record(); + $tr=preg_match("/^\/var\/alternc\/html\/.\/[^\/]*\/(.*)$/", $db->f("homedir"),$match); /*"*/ + $lg=explode("_",$db->f("name")); + if (!is_array($lg)) { + $lg[0]=$db->f("name"); + $lg[1]=""; + } + return array( + "id"=>$db->f("id"), + "prefixe"=> $lg[0], + "login"=>$lg[1], + "dir"=>$match[1] + ); + } else { + $err->raise("ftp",2); + return false; + } + } + + /* ----------------------------------------------------------------- */ + /** Retourne la liste des prefixes utilisables par le compte courant + * @return array tableau contenant la liste des prefixes (domaines + login) + * du compte actuel. + */ + function prefix_list() { + global $db,$mem,$cuid; + $r=array(); + $r[]=$mem->user["login"]; + $db->query("SELECT domaine FROM domaines WHERE compte='$cuid' ORDER BY domaine;"); + while ($db->next_record()) { + $r[]=$db->f("domaine"); + } + return $r; + } + + /* ----------------------------------------------------------------- */ + /** Affiche (ECHO) la liste des prefixes disponibles sous forme de champs d'option + * Les champs sont affichés sous la forme ... + * La valeur $current se voit affublée de la balise SELECTED. + * @param string $current Prefixe sélectionné par défaut + * @return boolean TRUE. + */ + function select_prefix_list($current) { + $r=$this->prefix_list(); + reset($r); + while (list($key,$val)=each($r)) { + if ($current==$val) $c=" selected=\"selected\""; else $c=""; + echo "$val"; + } + return true; + } + + /* ----------------------------------------------------------------- */ + /** Modifie les paramètres du comptes FTP $id. + * @param integer $id Numéro du compte dont on veut modifier les paramètres + * @param string $prefixe Prefixe du compte FTP + * @param string $login login ajouté au préfixe ($prefixe_$login) + * @param string $pass mot de passe + * @param string $dir Répertoire racine du compte + * @return boolean TRUE si le compte a été modifié, FALSE si une erreur est survenue. + */ + function put_ftp_details($id,$prefixe,$login,$pass,$dir) { + global $mem,$db,$err,$bro,$cuid,$admin; + $err->log("ftp","put_ftp_details",$id); + $db->query("SELECT count(*) AS cnt FROM ftpusers WHERE id='$id' and uid='$cuid';"); + $db->next_record(); + if (!$db->f("cnt")) { + $err->raise("ftp",2); + return false; + } + $dir=$bro->convertabsolute($dir); + if (substr($dir,0,1)=="/") { + $dir=substr($dir,1); + } + $r=$this->prefix_list(); + if (!in_array($prefixe,$r)) { + $err->raise("ftp",3); + return false; + } + $lo=$mem->user["login"]; + $l=substr($lo,0,1); + if ($login) $login="_".$login; + $db->query("SELECT COUNT(*) AS cnt FROM ftpusers WHERE id!='$id' AND name='$prefixe$login';"); + $db->next_record(); + if ($db->f("cnt")) { + $err->raise("ftp",4); + return false; + } + $absolute="/var/alternc/html/".substr($mem->user["login"],0,1)."/".$mem->user["login"]."/$dir"; + if (!file_exists($absolute)) { + system("/bin/mkdir -p $absolute"); + } + if (!is_dir($absolute)) { + $err->raise("ftp",6); + return false; + } + if (trim($pass)) { + + // Check this password against the password policy using common API : + if (is_callable(array($admin,"checkPolicy"))) { + if (!$admin->checkPolicy("ftp",$prefixe.$login,$pass)) { + return false; // The error has been raised by checkPolicy() + } + } + + $db->query("UPDATE ftpusers SET name='".$prefixe.$login."', password='', encrypted_password=ENCRYPT('$pass'), homedir='/var/alternc/html/$l/$lo/$dir', uid='$cuid' WHERE id='$id';"); + } else { + $db->query("UPDATE ftpusers SET name='".$prefixe.$login."', homedir='/var/alternc/html/$l/$lo/$dir', uid='$cuid' WHERE id='$id';"); + } + return true; + } + + + /* ----------------------------------------------------------------- */ + /** Efface le compte ftp spécifié. + * @param integer $id Numéro du compte FTP à supprimer. + * @return boolean TRUE si le compte a été effacé, FALSE sinon. + */ + function delete_ftp($id) { + global $db,$err,$cuid; + $err->log("ftp","delete_ftp",$id); + $db->query("SELECT name FROM ftpusers WHERE id='$id' and uid='$cuid';"); + $db->next_record(); + $name=$db->f("name"); + if (!$name) { + $err->raise("ftp",2); + return false; + } + $db->query("DELETE FROM ftpusers WHERE id='$id'"); + return $name; + } + + /* ----------------------------------------------------------------- */ + /** Crée un nouveau compte FTP. + * @param string $prefixe Prefixe au login + * @param string $login Login ftp (login=prefixe_login) + * @param string $pass Mot de passe FTP + * @param string $dir Répertoire racine du compte relatif à la racine du membre + * @return boolean TRUE si le compte a été créé, FALSE sinon. + * + */ + function add_ftp($prefixe,$login,$pass,$dir) { + global $mem,$db,$err,$quota,$bro,$cuid,$admin; + $err->log("ftp","add_ftp",$prefixe."_".$login); + $dir=$bro->convertabsolute($dir); + if (substr($dir,0,1)=="/") { + $dir=substr($dir,1); + } + $r=$this->prefix_list(); + if (!in_array($prefixe,$r) || $prefixe=="") { + $err->raise("ftp",3); + return false; + } + if ($login) $login="_".$login; + $db->query("SELECT count(*) AS cnt FROM ftpusers WHERE name='".$prefixe.$login."'"); + $db->next_record(); + if ($db->f("cnt")) { + $err->raise("ftp",4); + return false; + } + $db->query("SELECT login FROM membres WHERE uid='$cuid';"); + $db->next_record(); + $lo=$db->f("login"); + $l=substr($lo,0,1); + $absolute="/var/alternc/html/".substr($mem->user["login"],0,1)."/".$mem->user["login"]."/$dir"; + if (!file_exists($absolute)) { + system("/bin/mkdir -p $absolute"); + } + if (!is_dir($absolute)) { + $err->raise("ftp",6); + return false; + } + + // Check this password against the password policy using common API : + if (is_callable(array($admin,"checkPolicy"))) { + if (!$admin->checkPolicy("ftp",$prefixe.$login,$pass)) { + return false; // The error has been raised by checkPolicy() + } + } + + if ($quota->cancreate("ftp")) { + $db->query("INSERT INTO ftpusers (name,password, encrypted_password,homedir,uid) VALUES ('".$prefixe.$login."', '', ENCRYPT('$pass'), '/var/alternc/html/$l/$lo/$dir', '$cuid')"); + return true; + } else { + $err->raise("ftp",5); + return false; + } + } + + /* ----------------------------------------------------------------- */ + /** Retourne TRUE si $dir possède un compte FTP + * @param string $dir Dossier à tester, relatif à la racine du compte courant + * @return boolean retourne TRUE si $dir à un compte FTP, FALSE sinon. + */ + function is_ftp($dir) { + global $mem,$db,$err; + $err->log("ftp","is_ftp",$dir); + $lo=$mem->user["login"]; + $l=substr($lo,0,1); + if (substr($dir,0,1)=="/") $dir=substr($dir,1); + $db->query("SELECT id FROM ftpusers WHERE homedir='/var/alternc/html/$l/$lo/$dir';"); + if ($db->num_rows()) { + $db->next_record(); + return $db->f("id"); + } else { + return false; + } + } + + /* ----------------------------------------------------------------- */ + /** Fonction appellée par domains quand un deomaine est supprimé pour le membre + * @param string $dom Domaine à détruire. + * @access private + */ + function alternc_del_domain($dom) { + global $db,$err,$cuid; + $err->log("ftp","del_dom",$dom); + $db->query("SELECT COUNT(*) AS cnt FROM ftpusers WHERE uid='$cuid' AND name LIKE '$dom%'"); + $db->next_record(); + $cnt=$db->Record["cnt"]; + $db->query("DELETE FROM ftpusers WHERE uid='$cuid' AND name LIKE '$dom%'"); + return true; + } + + /* ----------------------------------------------------------------- */ + /** Fonction appellée par membres quand un membre est effacé. + * @param integer $uid Numéro de membre effacé. + * @access private + */ + function alternc_del_member() { + global $db,$err,$cuid; + $err->log("ftp","del_member"); + $db->query("DELETE FROM ftpusers WHERE uid='$cuid'"); + return true; + } + + /* ----------------------------------------------------------------- */ + /** + * Returns the used quota for the $name service for the current user. + * @param $name string name of the quota + * @return integer the number of service used or false if an error occured + * @access private + */ + function alternc_get_quota($name) { + global $db,$err,$cuid; + if ($name=="ftp") { + $err->log("ftp","getquota"); + $db->query("SELECT COUNT(*) AS cnt FROM ftpusers WHERE uid='$cuid'"); + $db->next_record(); + return $db->f("cnt"); + } else return false; + } + + + /* ----------------------------------------------------------------- */ + /** + * Exporte toutes les informations ftp du compte AlternC + * @access private + * EXPERIMENTAL 'sid' function ;) + */ + function alternc_export() { + global $db,$err; + $err->log("ftp","export"); + $f=$this->get_list(); + $str="\n"; + foreach ($f as $d) { + $str.=" \n"; + $str.=" ".xml_entities($s[login])."\n"; + $str.=" ".xml_entities($s[pass])."\n"; + $str.=" ".xml_entities($s[dir])."\n"; + $str.=" \n"; + } + $str.="\n"; + return $str; + } + + +} /* Class m_ftp */ + +?> diff --git a/stable-1.0/bureau/class/m_hta.php b/stable-1.0/bureau/class/m_hta.php new file mode 100644 index 00000000..d2bcf396 --- /dev/null +++ b/stable-1.0/bureau/class/m_hta.php @@ -0,0 +1,391 @@ +"Protected folders passwords"); + } + + + /*---------------------------------------------------------------------------*/ + /** + * Create a protected folder (.htaccess et .htpasswd) + * @param string $dir Folder to protect (relative to user root) + * @return boolean TRUE if the folder has been protected, or FALSE if an error occurred + */ + function CreateDir($dir) { + global $mem,$bro,$err,$L_ALTERNC_LOC; + $err->log("hta","createdir",$dir); + $absolute=$bro->convertabsolute($dir,0); + if (!$absolute) { + $err->raise("hta",8,$dir); + return false; + } + if (!file_exists($absolute)) { + @mkdir($absolute,00777); + } + if (!file_exists("$absolute/.htaccess")) { + if (!@touch("$absolute/.htaccess")) { + $err->raise("hta",12); + return false; + } + $file = @fopen("$absolute/.htaccess","r+"); + if (!$file) { + $err->raise("hta",12); + return false; + } + fseek($file,0); + $param="AuthUserFile $absolute/.htpasswd\nAuthName \"Zone Protégée\"\nAuthType Basic\nrequire valid-user\n"; + fwrite($file, $param); + fclose($file); + } + if (!file_exists("$absolute/.htpasswd")) { + if (!touch("$absolute/.htpasswd")) { + $err->raise("hta",12); + return false; + } + return true; + } + return true; + } + + + /*---------------------------------------------------------------------------*/ + /** + * Returns the list of all user folder currently protected by a .htpasswd file + * @return array Array containing user folder list + */ + function ListDir() { + global $err,$mem,$L_ALTERNC_LOC; + $err->log("hta","listdir"); + $sortie=array(); + $absolute="$L_ALTERNC_LOC/html/".substr($mem->user["login"],0,1)."/".$mem->user["login"]; + exec("find $absolute -name .htpasswd | sort", $sortie); + if (!count($sortie)) { + $err->raise("hta",4); + return false; + } + for ($i=0;$ilog("hta","is_protected",$dir); + $absolute="$L_ALTERNC_LOC/html/".substr($mem->user["login"],0,1)."/".$mem->user["login"]."/$dir"; + $sortie=array(); + if (file_exists("$absolute/.htpasswd")){ + return true; + } + else { + return false; + } + } + + + /*---------------------------------------------------------------------------*/ + /** + * Returns the list of login for a protected folder. + * @param string $dir The folder to lookup (relative to user root) + * @return array An array containing the list of logins from the .htpasswd file, or FALSE + */ + function get_hta_detail($dir) { + global $mem,$err,$L_ALTERNC_LOC; + $err->log("hta","get_hta_detail"); + $absolute="$L_ALTERNC_LOC/html/".substr($mem->user["login"],0,1)."/".$mem->user["login"]."/$dir"; + if (file_exists("$absolute/.htaccess")) { + /* if (!_reading_htaccess($absolute)) { + return false; + } + */ } + $file = @fopen("$absolute/.htpasswd","r"); + $i=0; + $res=array(); + if (!$file) { + return false; + } + // TODO: Tester la validité du .htpasswd + while (!feof($file)) { + $s=fgets($file,1024); + $t=explode(":",$s); + if ($t[0]!=$s) { + $res[$i]=$t[0]; + $i=$i+1; + } + } + fclose($file); + return $res; + } + + + /*---------------------------------------------------------------------------*/ + /** + * Unprotect a folder + * @param string $dir Folder to unprotect, relative to user root + * @return boolean TRUE if the folder has been unprotected, or FALSE if an error occurred + */ + function DelDir($dir) { + global $mem,$bro,$err; + $err->log("hta","deldir",$dir); + $dir=$bro->convertabsolute($dir,0); + if (!$dir) { + $err->raise("hta",8,$dir); + return false; + } + if (!unlink("$dir/.htaccess")) { + $err->raise("hta",5,$dir); + return false; + } + if (!unlink("$dir/.htpasswd")) { + $err->raise("hta",6,$dir); + return false; + } + return true; + } + + + /*---------------------------------------------------------------------------*/ + /** + * Add a user to a protected folder + * @param string $login The user login to add + * @param string $password The password to add (cleartext) + * @param string $dir The folder we add it to (relative to user root). + * @return boolean TRUE if the user has been added, or FALSE if an error occurred + */ + function add_user($user,$password,$dir) { + global $err, $bro, $admin; + $err->log("hta","add_user",$user."/".$dir); + $absolute=$bro->convertabsolute($dir,0); + if (!file_exists($absolute)) { + $err->raise("hta",8,$dir); + return false; + } + if (checkloginmail($user)){ + // Check this password against the password policy using common API : + if (is_callable(array($admin,"checkPolicy"))) { + if (!$admin->checkPolicy("hta",$user,$password)) { + return false; // The error has been raised by checkPolicy() + } + } + + $file = @fopen("$absolute/.htpasswd","a+"); + if (!$file) { + $err->raise("hta",12); + return false; + } + fseek($file,0); + while (!feof($file)) { + $s=fgets($file,1024); + $t=explode(":",$s); + if ($t[0]==$user) { + $err->raise("hta",10,$user); + return false; + } + } + fseek($file,SEEK_END); + if (substr($t[1],-1)!="\n") { + fwrite($file,"\n"); + } + fwrite($file, "$user:"._md5cr($password)."\n"); + fclose($file); + return true; + } else { + $err->raise("hta",11); + return false; + } + } + + + /*---------------------------------------------------------------------------*/ + /** + * Delete a user from a protected folder. + * @param array $lst An array with login to delete. + * @param string $dir The folder, relative to user root, where we want to delete users. + * @return boolean TRUE if users has been deleted, or FALSE if an error occurred. + */ + function del_user($lst,$dir) { + global $bro,$err; + $err->log("hta","del_user",$lst."/".$dir); + $absolute=$bro->convertabsolute($dir,0); + if (!file_exists($absolute)) { + $err->raise("hta",8,$dir); + return false; + } + touch("$absolute/.htpasswd.new"); + $file = fopen("$absolute/.htpasswd","r"); + $newf = fopen("$absolute/.htpasswd.new","a"); + if (!$file || !$newf) { + $err->raise("hta",12); + return false; + } + reset($lst); + fseek($file,0); + while (!feof($file)) { + $s=fgets($file,1024); + $t=explode(":",$s); + if (!in_array($t[0],$lst) && ($t[0]!="\n")) { + fseek($newf,0); + fwrite($newf, "$s"); + } + } + fclose($file); + fclose($newf); + unlink("$absolute/.htpasswd"); + rename("$absolute/.htpasswd.new", "$absolute/.htpasswd"); + return true; + } + + + /*---------------------------------------------------------------------------*/ + /** + * Change the password of a user in a protected folder + * @param string $user The users whose password should be changed + * @param string $newpass The new password of this user + * @param string $dir The folder, relative to user root, in which we will change a password + * @return boolean TRUE if the password has been changed, or FALSE if an error occurred + */ + function change_pass($user,$newpass,$dir) { + global $bro,$err,$admin; + $err->log("hta","change_pass",$user."/".$dir); + $absolute=$bro->convertabsolute($dir,0); + if (!file_exists($absolute)) { + $err->raise("hta",8,$dir); + return false; + } + + // Check this password against the password policy using common API : + if (is_callable(array($admin,"checkPolicy"))) { + if (!$admin->checkPolicy("hta",$user,$password)) { + return false; // The error has been raised by checkPolicy() + } + } + + touch("$absolute/.htpasswd.new"); + $file = fopen("$absolute/.htpasswd","r"); + $newf = fopen("$absolute/.htpasswd.new","a"); + if (!$file || !$newf) { + $err->raise("hta",12); + return false; + } + while (!feof($file)) { + $s=fgets($file,1024); + $t=explode(":",$s); + if ($t[0]!=$user) { + fwrite($newf, "$s"); + } + } + fwrite($newf, "$user:"._md5cr($newpass)."\n"); + fclose($file); + fclose($newf); + unlink("$absolute/.htpasswd"); + rename("$absolute/.htpasswd.new", "$absolute/.htpasswd"); + return true; + } + + + /*---------------------------------------------------------------------------*/ + /** + * Check that a .htaccess file is valid (for authentication) + * @param string $absolute Folder we want to check (relative to user root) + * @return boolean TRUE is the .htaccess is protecting this folder, or FALSE else + * @access private + */ + function _reading_htaccess($absolute) { + global $err; + $err->log("hta","_reading_htaccess",$absolute); + $file = fopen("$absolute/.htaccess","r+"); + $lignes=array(1,1,1); + $errr=0; + if (!$file) { + return false; + } + while (!feof($file) && !$errr) { + $s=fgets($file,1024); + if (substr($s,0,12)!="RewriteCond " && substr($s,0,14)!="ErrorDocument " && substr($s,0,12)!="RewriteRule " && substr($s,0,14)!="RewriteEngine " && trim($s)!="") { + $errr=1; + } + if (strtolower(trim($s))==strtolower("authuserfile $absolute/.htpasswd")) { + $lignes[0]=0; + $errr=0; + } // authuserfile + if (strtolower(trim($s))=="require valid-user") { + $lignes[1]=0; + $errr=0; + } //require + if (strtolower(trim($s))=="authtype basic") { + $lignes[2]=0; + $errr=0; + } //authtype + } // Reading config file + fclose($file); + if ($errr ||  in_array(0,$lignes)) { + $err->raise("hta",1); + return false; + } + return true; + } + +} /* CLASS m_hta */ + + + +?> diff --git a/stable-1.0/bureau/class/m_mail.php b/stable-1.0/bureau/class/m_mail.php new file mode 100644 index 00000000..0a54083d --- /dev/null +++ b/stable-1.0/bureau/class/m_mail.php @@ -0,0 +1,803 @@ +"POP/IMAP account passwords"); + } + + + /* ----------------------------------------------------------------- */ + /** Returns the list of mail-hosted domains for a user + * @return array indexed array of hosted domains + */ + function enum_domains() { + global $db,$err,$cuid; + $err->log("mail","enum_domains"); + if (!is_array($this->domains)) { + $db->query("select * from domaines where compte='$cuid' AND gesmx=1 order by domaine asc;"); + $this->domains=array(); + if ($db->num_rows()>0) { + while ($db->next_record()) { + $this->domains[]=$db->f("domaine"); + } + } + } + return $this->domains; + } + + + /* ----------------------------------------------------------------- */ + /** Returns the first letters used as email for a domain + * @param string $dom Domain whose mail we want to search for + * @return array An indexed array of letters or false if something bad happened + */ + function enum_doms_mails_letters($dom) { + global $err,$cuid,$db; + $err->log("mail","enum_doms_mails_letters",$dom); + $db->query("SELECT LEFT(mail,1) as letter FROM mail_domain where uid='$cuid' AND type=0 and mail like '%@".addslashes($dom)."' GROUP BY letter ORDER BY letter;"); + $res=array(); + while($db->next_record()) { + $res[]=$db->f("letter"); + } + return $res; + } + + + /* ----------------------------------------------------------------- */ + /** Retourne la liste des mails du domaine $dom et si une lettre est + * définie, cela retourne les mail qui commencent par celle ci + * Retourne un tableau indexé de tableaux associatifs sous la forme : + * $a["mail"]=Adresse email + * $a["pop"]=1 ou 0 selon s'il s'agit d'un compte pop ou pas + * $a["size"]=taille en octets de la boite s'il s'agit d'un compte pop. + * @param string $dom Domaine dont on veut les mails + * @param integer $sort Champs de tri (0 pour non trié (default), 1 pour email, 2 pour type) + * @param string $letter Première lettre des mails à retourner, ou "" pour les retourner tous + * @return array Tableau de mails comme indiqué ci-dessus ou FALSE si une erreur + * s'est produite + */ + function enum_doms_mails($dom,$sort=0,$letter="") { + global $err,$cuid,$db; + $err->log("mail","enum_doms_mails",$dom); + if($letter == "@") + $letter = ""; + else + $letter .= "%"; + $db->query("SELECT mail,pop,alias,expiration_date FROM mail_domain WHERE mail LIKE '".addslashes($letter)."@".addslashes($dom)."' AND uid='$cuid' AND type=0;"); + $res=array(); $i=0; + while ($db->next_record()) { + if ($db->f("pop")) { + $size=0; + $r=mysql_query("SELECT size FROM size_mail WHERE alias='".str_replace("@","_",$db->f("mail"))."';"); + list($size)=@mysql_fetch_array($r); + $size=$size*1024; + } else $size=0; + if ($db->f("pop")) { + $login=str_replace("@","_",$db->f("mail")); + $account=str_replace($login,"",$db->f("alias")); + } else { + $account=$db->f("alias"); + } + $res[]=array("mail" => $db->f("mail"), "pop" => $db->f("pop"), + "alias"=>$account,"size"=>$size, "expiration_date"=>$db->f("expiration_date")); + $i++; + } + if ($sort==1) { + usort($res,array("m_mail","_cmp_mail")); + } + if ($sort==2) { + usort($res,array("m_mail","_cmp_type")); + } + $res["count"]=$i; + return $res; + } + + function _cmp_mail($a, $b) + { + $al = strtolower($a["mail"]); + $bl = strtolower($b["mail"]); + if ($al == $bl) return 0; + return ($al > $bl) ? +1 : -1; + } + function _cmp_type($a, $b) + { + $al = strtolower($a["pop"]); + $bl = strtolower($b["pop"]); + if ($al == $bl) { + $al = strtolower($a["mail"]); + $bl = strtolower($b["mail"]); + if ($al == $bl) return 0; + } + return ($al > $bl) ? +1 : -1; + } + + + /* ----------------------------------------------------------------- */ + /** Retourne les détails d'un mail + * Le mail $mail est retourné sous la forme d'un tableaau associatif comme suit : + * $a["mail"]= Adresse email + * $a["login"]= Login pop + * $a["password"]= Mot de passe pop (crypté) + * $a["alias"]= Alias destination, 1 par ligne + * $a["pop"]= 1 ou 0 s'il s'agit d'un compte pop + * @param string $mail Mail dont on veut retourner le détail + * @return array Tableau associatif comme ci-dessus. + */ + function get_mail_details($mail) { + global $err,$db,$cuid; + $err->log("mail","get_mail_details",$mail); + $db->query("SELECT mail,pop,alias,expiration_date FROM mail_domain WHERE mail='$mail' AND uid='$cuid';"); + if (!$db->next_record()) { + $err->raise("mail",3,$mail); + return false; + } + $pop=$db->f("pop"); + $trash_info=new m_trash(); + $trash_info->set_from_db($db->f("expiration_date")); + if ($pop) { + $login=str_replace("@","_",$db->f("mail")); + $account=str_replace($login,"",$db->f("alias")); + } else { + $account=$db->f("alias"); + } + return array("mail" => $mail, "login" => $login, "alias" => $account, "pop" => $pop, "trash_info"=> $trash_info); + } + + + /* ----------------------------------------------------------------- */ + /** Tell if a mail is available or not + * @param string $mail the email address (with its fqdn domain) + * @return boolean true if this email is available, false if it is already defined. + */ + function available($mail) { + global $err,$db,$cuid; + $err->log("mail","available",$mail); + $db->query("SELECT mail FROM mail_domain WHERE mail='$mail';"); + if ($db->next_record()) { + return false; + } else { + return true; + } + } + + + /* ----------------------------------------------------------------- */ + /** Create a wrapper for $login@$domain email + * @param string $login left part of the @ for the email creation + * @param string $domain domain-part of the email + * @param string $command The command we want to execute, without " nor | (raw command) + * @param string $type now unused (was a ldap class name) + * @return boolean TRUE if the wrapper has been created, false if an error occurred. + */ + function add_wrapper($login,$domain,$command,$type="") { + global $err,$cuid,$db; + if (!$this->available($login."@".$domain)) { + $err->raise("mail",7,$login."@".$domain); + return false; + } + $db->query("INSERT INTO mail_domain (mail,alias,uid,pop,type) VALUES ('".$login."@".$domain."','".$login."_".$domain."','$cuid',0,1);"); + $db->query("INSERT INTO mail_alias (mail,alias) VALUES ('".$login."_".$domain."','\"| $command\"');"); + return true; + } + + + /* ----------------------------------------------------------------- */ + /** Delete a wrapper email + * @param string $login left part of the @ for the email creation + * @param string $domain domain-part of the email + * @return boolean TRUE if the wrapper has been deleted, FALSE if an error occurred. + */ + function del_wrapper($login,$domain) { + global $err,$cuid,$db; + $db->query("DELETE FROM mail_domain WHERE mail='".$login."@".$domain."' AND uid='$cuid' AND type=1;"); + $db->query("DELETE FROM mail_alias WHERE mail='".$login."_".$domain."';"); + return true; + } + + + /* ----------------------------------------------------------------- */ + /** Change the password of the email account $mail + * @param string $mail Pop/Imap email account + * @param string $pass New password + * @return boolean TRUE if the password has been changed, FALSE if an error occurred. + */ + function change_password($mail,$pass) { + global $err,$db,$cuid; + $err->log("mail","change_password",$mail); + $t=explode("@",$mail); + $email=$t[0]; + $dom=$t[1]; + $db->query("SELECT mail,alias,pop FROM mail_domain WHERE mail='$mail' AND uid='$cuid';"); + if (!$db->next_record()) { + $err->raise("mail",3,$mail); + return false; + } + if (!$db->f("pop")) { + $err->raise("mail",15); + return false; + } + // Check this password against the password policy using common API : + if (is_callable(array($admin,"checkPolicy"))) { + if (!$admin->checkPolicy("pop",$email."@".$dom,$pass)) { + return false; // The error has been raised by checkPolicy() + } + } + if (!$this->_updatepop($email,$dom,$pass)) { + return false; + } + return true; + } + + + /* ----------------------------------------------------------------- */ + /** Modifie les paramètres d'un compte email + * Tout peut être modifié dans l'email (sauf l'adresse elle-même) + * @param string $mail Adresse à modifier. Le domaine doit appartenir au membre + * @param integer $pop Doit-il etre un compte pop (1) ou juste un alias (0) + * @param string $pass Nouveau mot de passe pop, si pop=1 + * @param string $alias Liste des destinataires auxiliaires, un par ligne. + * @return boolean TRUE si l'email a bien été modifié, FALSE si une erreur s'est produite. + */ + function put_mail_details($mail,$pop,$pass,$alias, $expiration_date=null) { + global $err,$cuid,$db,$admin; + $err->log("mail","put_mail_details",$mail); + $mail=trim(strtolower($mail)); // remove spaces also + $t=explode("@",$mail); + $email=trim($t[0]); // remove spaces also + $dom=$t[1]; + + $account=array(); + + if ($pop) $pop="1"; else $pop="0"; + + if ($pop=="0" && $alias=="") { + $err->raise("mail",4); + return false; + } + if ($pop=="1"){ + $account[]=$email."_".$dom; + } + + if ($alias){ + $a=explode("\n",$alias); + if (count($a)>0) { + reset($a); + for ($i=0;$i1){ + $err->raise("mail",14); + return false; + } + } + $account[]=$a[$i]; + } + } + } + + $db->query("SELECT mail,alias,pop,expiration_date FROM mail_domain WHERE mail='$mail' AND uid='$cuid' AND type=0;"); + if (!$db->next_record()) { + $err->raise("mail",3,$mail); + return false; + } + $oldpop= $db->f("pop"); + // When we CREATE a pop account, we MUST give a password + if ($pop=="1" && $oldpop!=1) { + if (!$pass) { + $err->raise("mail",4); + return false; + } + // Check this password against the password policy using common API : + if (is_callable(array($admin,"checkPolicy"))) { + if (!$admin->checkPolicy("pop",$email."@".$dom,$pass)) { + return false; // The error has been raised by checkPolicy() + } + } + } + + $expiration_sql = (is_null($expiration_date))?"null":"'$expiration_date'"; + $db->query("UPDATE mail_domain SET alias='".implode("\n",$account)."', pop='$pop',expiration_date=$expiration_sql WHERE mail='$mail';"); + + if ($pop=="1" && $oldpop!=1) { /* POP Creation */ + if (!$this->_createpop($email,$dom,$pass)) { + return false; + } + } + if ($pop!="1" && $oldpop==1) { /* POP Destruction */ + if (!$this->_deletepop($email,$dom)) { + return false; + } + } + if ($pop=="1" && $oldpop==1 && $pass!="") { /* POP Account Edition */ + // Check this password against the password policy using common API : + if (is_callable(array($admin,"checkPolicy"))) { + if (!$admin->checkPolicy("pop",$email."@".$dom,$pass)) { + return false; // The error has been raised by checkPolicy() + } + } + if (!$this->_updatepop($email,$dom,$pass)) { + return false; + } + } + return true; + } + + + /* ----------------------------------------------------------------- */ + /** Crée un compte email $mail sur le domaine $dom + * @param string $dom Domaine concerné, il doit appartenir au membre + * @param string $mail Email à créer, il ne doit pas exister ni en mail, ni en liste. + * @param integer $pop vaut 1 pour créer un compte pop, 0 pour un alias + * @param string $alias Liste des alias, un par ligne + * @return boolean TRUE si le compte a bien été créé, FALSE si une erreur s'est produite. + */ + function add_mail($dom,$mail,$pop,$pass,$alias, $expiration_date=null) { + global $quota,$err,$cuid,$db,$admin,$L_FQDN; + $err->log("mail","add_mail",$dom."/".$mail); + $account=array(); + $mail=trim(strtolower($mail)); // remove spaces also + if ($pop) $pop="1"; else $pop="0"; + if ($mail || $dom==$L_FQDN) { + if (!checkloginmail($mail)) { + $err->raise("mail",13); + return false; + } + } + + if (($pop=="1" && $pass=="")||($pop!="1" && $alias=="")){ + $err->raise("mail",4); + return false; + } + + if ($pop=="1") { + // Check this password against the password policy using common API : + if (is_callable(array($admin,"checkPolicy"))) { + if (!$admin->checkPolicy("pop",$mail."@".$dom,$pass)) { + return false; // The error has been raised by checkPolicy() + } + } + } + + if ($pop=="1"){ + $account[]=$mail."_".$dom; + } + + if ($alias){ + $a=explode("\n",$alias); + if (count($a)>0) { + reset($a); + for ($i=0;$i1){ + $err->raise("mail",14); + return false; + } + } + $account[]=$a[$i]; + } + } + } + + // check that the domain is a user's own ... + $db->query("SELECT domaine FROM domaines WHERE compte='$cuid' AND domaine='$dom';"); + if (!$db->next_record()) { + $err->raise("mail",6,$dom); + return false; + } + $db->query("SELECT mail FROM mail_domain WHERE mail='".$mail."@".$dom."' AND uid='$cuid';"); + if ($db->next_record()) { + $err->raise("mail",7,$mail."@".$dom); + return false; + } + + /* QuotaCheck */ + if (!$quota->cancreate("mail")) { + $err->raise("mail",8); + return false; + } + $expiration_sql = (is_null($expiration_date))?"null":"'$expiration_date'"; + $db->query("INSERT INTO mail_domain (mail,alias,uid,pop,type,expiration_date) VALUES ('".$mail."@".$dom."','".implode("\n",$account)."','$cuid','$pop',0, $expiration_sql);"); + + if ($pop=="1") { + if (!$this->_createpop($mail,$dom,$pass)) + return false; + } + return true; + } + + + /* ----------------------------------------------------------------- */ + /** Delete an email account (pop or alias) $mail + * @param string $mail Email to delete + * @return boolean TRUE if the email has been deleted, or FALSE if an error occurred + */ + function del_mail($mail) { + global $err,$cuid,$db; + $err->log("mail","del_mail",$mail); + $mail=strtolower($mail); + + $db->query("SELECT pop,mail FROM mail_domain WHERE mail='$mail' AND uid='$cuid' AND type=0;"); + if (!$db->next_record()) { + $err->raise("mail",3,$dom); + return false; + } + $t=explode("@",$mail); + $mdom=$t[0]; $dom=$t[1]; + $pop=$db->f("pop"); + + $db->query("DELETE FROM mail_domain WHERE mail='$mail' AND uid='$cuid';"); + + if ($pop=="1") { + if (!$this->_deletepop($mdom,$dom)) { + return false; + } + } + return true; + } + + + /* ----------------------------------------------------------------- */ + /** + * Check for a slave account (secondary mx) + * @param string $login the login to check + * @param string $pass the password to check + * @return boolean TRUE if the password is correct, or FALSE if an error occurred. + */ + function check_slave_account($login,$pass) { + global $db,$err; + $db->query("SELECT * FROM mxaccount WHERE login='$login' AND pass='$pass';"); + if ($db->next_record()) { + return true; + } + return false; + } + + + /* ----------------------------------------------------------------- */ + /** + * Out (echo) the complete mx-hosted domain list : + */ + function echo_domain_list() { + global $db,$err; + $db->query("SELECT domaine FROM domaines WHERE gesmx=1 ORDER BY domaine"); + while ($db->next_record()) { + echo $db->f("domaine")."\n"; + } + return true; + } + + + /* ----------------------------------------------------------------- */ + /** + * Return the list of allowed slave accounts (secondary-mx) + * @return array + */ + function enum_slave_account() { + global $db,$err; + $db->query("SELECT * FROM mxaccount;"); + $res=array(); + while ($db->next_record()) { + $res[]=$db->Record; + } + if (!count($res)) return false; + return $res; + } + + + /* ----------------------------------------------------------------- */ + /** + * Add a slave account that will be allowed to access the mxdomain list + * @param string $login the login to add + * @param string $pass the password to add + * @return boolean TRUE if the account has been created, or FALSE if an error occurred. + */ + function add_slave_account($login,$pass) { + global $db,$err; + $db->query("SELECT * FROM mxaccount WHERE login='$login'"); + if ($db->next_record()) { + $err->raise("mail",16); + return false; + } + $db->query("INSERT INTO mxaccount (login,pass) VALUES ('$login','$pass')"); + return true; + } + + + /* ----------------------------------------------------------------- */ + /** + * Remove a slave account + * @param string $login the login to delete + */ + function del_slave_account($login) { + global $db,$err; + $db->query("DELETE FROM mxaccount WHERE login='$login'"); + return true; + } + + + /* ----------------------------------------------------------------- */ + /** Crée le compte pop $mail@$dom, avec pour mot de passe $pass + * @param string $mail Compte email à créer en pop + * @param string $dom Domaine sur lequel on crée le compte email + * @param string $pass Mot de passe du compte email. + * @return boolean TRUE si le compte pop a bien été créé, FALSE si une erreur est survenur + * @access private + */ + function _createpop($mail,$dom,$pass) { + global $err,$cuid,$db; + $err->log("mail","_createpop",$mail."@".$dom); + $m=substr($mail,0,1); + $gecos=$mail; + if (!$mail) { + // Cas du CATCH-ALL + $gecos="Catch-All"; + $m="_"; + } + $db->query("INSERT INTO mail_users (uid,alias,path,password) VALUES ('$cuid','".$mail."_".$dom."','/var/alternc/mail/".$m."/".$mail."_".$dom."','"._md5cr($pass)."');"); + $db->query("INSERT INTO mail_users (uid,alias,path,password) VALUES ('$cuid','".$mail."@".$dom."','/var/alternc/mail/".$m."/".$mail."_".$dom."','"._md5cr($pass)."');"); + $db->query("INSERT INTO mail_alias (mail,alias) VALUES ('".$mail."_".$dom."','/var/alternc/mail/".$m."/".$mail."_".$dom."/Maildir/');"); + + // Webmail data (squirrelmail default preferences) + $f=fopen("/var/lib/squirrelmail/data/".$mail."_".$dom.".pref","wb"); + $g=0; $g=@fopen("/etc/squirrelmail/default_pref","rb"); + fputs($f,"email_address=$mail@$dom\nchosen_theme=default_theme.php\n"); + if ($g) { + while ($s=fgets($g,1024)) { + if (substr($s,0,14)!="email_address=" && substr($s,0,13)!="chosen_theme=") { + fputs($f,$s); + } + } + fclose($g); + } + fclose($f); + @copy("/var/lib/squirrelmail/data/".$mail."_".$dom.".pref","/var/lib/squirrelmail/data/".$mail."@".$dom.".pref"); + exec("/usr/lib/alternc/mail_add ".$mail."_".$dom." ".$cuid); + return true; + } + + + /* ----------------------------------------------------------------- */ + /** Met à jour un compte pop existant + * @param string $mail mail à modifier + * @param string $dom Domaine dont on modifie le compte pop + * @param string $pass Nouveau mot de passe. + * @return boolean TRUE si le compte pop a bien été modifié, FALSE si une erreur s'est produite. + * @access private + */ + function _updatepop($mail,$dom,$pass) { + global $err,$cuid,$db; + $err->log("mail","_updatepop",$mail."@".$dom); + $m=substr($mail,0,1); + $gecos=$mail; + $db->query("UPDATE mail_users SET password='"._md5cr($pass)."' WHERE ( alias='". $mail."_".$dom."' OR alias='". $mail."@".$dom."' ) AND uid='$cuid';"); + return true; + } + + + /* ----------------------------------------------------------------- */ + /** Détruit le compte pop $mail@$dom. + * @param string $mail Email dont on souhaite détruire le compte pop + * @param string $dom Domaine dont on souhaite détuire le compte pop. + * @return boolean TRUE si le compte pop a bien été détruit, FALSE si une erreur s'est produite. + * @access private + */ + function _deletepop($mail,$dom) { + global $err,$cuid,$db; + $err->log("mail","_deletepop",$mail."@".$dom); + $db->query("DELETE FROM mail_users WHERE uid='$cuid' AND ( alias='". $mail."_".$dom."' OR alias='". $mail."@".$dom."' ) ;"); + $db->query("DELETE FROM mail_alias WHERE mail='".$mail."_".$dom."';"); + $db->query("DELETE FROM size_mail WHERE alias='".$mail."_".$dom."';"); + @unlink("/var/lib/squirrelmail/data/".$mail."_".$dom.".pref"); + @unlink("/var/lib/squirrelmail/data/".$mail."_".$dom.".abook"); + @unlink("/var/lib/squirrelmail/data/".$mail."@".$dom.".pref"); + @unlink("/var/lib/squirrelmail/data/".$mail."@".$dom.".abook"); + exec("/usr/lib/alternc/mail_del ".$mail."_".$dom); + return true; + } + + + /* ----------------------------------------------------------------- */ + /** Fonction appellée par domaines lorsqu'un domaine est effacé. + * Cette fonction efface tous les comptes mails du domaine concerné. + * @param string $dom Domaine à effacer + * @return boolean TRUE si le domaine a bien été effacé, FALSE si une erreur s'est produite. + * @access private + */ + function alternc_del_mx_domain($dom) { + global $err,$db,$cuid; + $err->error=0; + $err->log("mail","alternc_del_mx_domain",$dom); + + /* FIXME / Why on hell is it commented out ? + $db->query("SELECT domaine FROM domaines WHERE compte='$cuid' AND domaine='$dom';"); + if (!$db->next_record()) { + $err->raise("mail",6,$dom); + return false; + } + */ + + /* Effacement de tous les mails de ce domaine : */ + $a=$this->enum_doms_mails($dom); + if (is_array($a)) { + reset($a); + for($i=0;$i<$a["count"];$i++) { + $val=$a[$i]; + if (!$this->del_mail($val["mail"])) { + $err->raise("mail",5); + } + } + } + /* Effacement du domaine himself */ + $db->query("DELETE FROM mail_domain WHERE mail LIKE '%@$dom';"); + $db->query("DELETE FROM mail_users WHERE alias LIKE '%@$dom' OR alias LIKE '%\\_$dom';"); + $db->query("DELETE FROM mail_alias WHERE mail LIKE '%\\_$dom';"); + $db->query("DELETE FROM mail_domain WHERE mail='$dom';"); + return true; + } + + + /* ----------------------------------------------------------------- */ + /** hook function called by AlternC when a domain is created for + * the current user account + * This function create default email accuonts (postmaster) for the newly hosted domain + * @param string $dom Domain that has just been created + * @return boolean TRUE if the domain has been successfully created in the email db or FALSE if an error occurred. + * @access private + */ + function alternc_add_mx_domain($dom) { + global $err,$cuid,$db,$mem; + $err->log("mail","alternc_add_mx_domain",$dom); + $db->query("INSERT INTO mail_domain (mail,alias,uid) VALUES ('$dom','$dom', '$cuid');"); + $this->add_mail($dom,"postmaster",0,"",$mem->user["mail"]); + return true; + } + + + /* ----------------------------------------------------------------- */ + /** hook function called by AlternC when a domain is created for + * the current user account using the SLAVE DOMAIN feature + * This function create a CATCHALL to the master domain + * @param string $dom Domain that has just been created + * @param string $master Master domain + * @access private + */ + function alternc_add_slave_domain($dom,$slave) { + global $err; + $err->log("mail","alternc_add_slave_domain",$dom); + $this->add_mail($dom,"",0,"","@".$slave); + return true; + } + + + /* ----------------------------------------------------------------- */ + /** + * Returns the used quota for the $name service for the current user. + * @param $name string name of the quota + * @return integer the number of service used or false if an error occured + * @access private + */ + function alternc_get_quota($name) { + global $db,$err,$cuid; + if ($name=="mail") { + $err->log("mail","getquota"); + $db->query("SELECT COUNT(*) AS cnt FROM mail_domain WHERE type=0 AND uid='$cuid'"); + $db->next_record(); + return $db->f("cnt"); + } + } + + + /* ----------------------------------------------------------------- */ + /** + * Exports all the mail related information for an account. + * @access private + * EXPERIMENTAL 'sid' function ;) + */ + function alternc_export($tmpdir) { + global $db,$err; + $err->log("mail","export"); + $domain=$this->enum_domains(); + $str="\n"; + $tmpfile=$tmpdir."/mail_filelist.txt"; + $f=fopen($tmpfile,"wb"); + $onepop=false; + foreach ($domain as $d) { + $str.=" \n ".xml_entities($d)."\n"; + $s=$this->enum_doms_mails($d); + unset($s["count"]); + if (count($s)) { + foreach($s as $e) { + $str.="
            \n"; + $str.=" ".xml_entities($e["mail"])."\n"; + $str.=" ".xml_entities($e["pop"])."\n"; + $acc=explode("\n",$e["alias"]); + foreach($acc as $f) { + $f=trim($f); + if ($f) { + $str.=" ".xml_entities($f)."\n"; + } + } + if ($e["pop"]) { + $db->query("SELECT path FROM mail_users WHERE alias='".str_replace("@","_",$e["mail"])."';"); + if ($db->next_record()) { + fputs($f,$db->Record["path"]."\n"); + $onepop=true; + } + } + $str.="
            \n"; + } + } + $str.="
            \n"; + } + $str.="
            \n"; + fclose($f); + if ($onepop) { + // Now do the tarball of all pop accounts : + exec("/bin/tar -czf ".escapeshellarg($tmpdir."/mail.tar.gz")." -T ".escapeshellarg($tmpfile)); + } + @unlink($tmpfile); + return $str; + } + + +} /* Class m_mail */ + +?> diff --git a/stable-1.0/bureau/class/m_mem.php b/stable-1.0/bureau/class/m_mem.php new file mode 100644 index 00000000..946dda73 --- /dev/null +++ b/stable-1.0/bureau/class/m_mem.php @@ -0,0 +1,531 @@ +"AlternC's account password"); + } + + + /* ----------------------------------------------------------------- */ + /** Check that the current user is an admnistrator. + * @return boolean TRUE if we are super user, or FALSE if we are not. + */ + function checkright() { + return ($this->user["su"]=="1"); + } + + /* ----------------------------------------------------------------- */ + /** Start a session in the web desktop. Check username and password. + * Note : If the user entered a bas password, the failure will be logged + * and told to the corresponding user on next successfull login. + * @param $username string Username that want to get connected. + * @param $password string User Password. + * @return boolean TRUE if the user has been successfully connected, or FALSE if an error occured. + */ + function login($username,$password,$restrictip=0) { + global $db,$err,$cuid; + $err->log("mem","login",$username); + // $username=addslashes($username); + // $password=addslashes($password); + $db->query("select * from membres where login='$username';"); + if ($db->num_rows()==0) { + $err->raise("mem",1); + return false; + } + $db->next_record(); + if (_md5cr($password,$db->f("pass"))!=$db->f("pass")) { + $db->query("UPDATE membres SET lastfail=lastfail+1 WHERE uid='".$db->f("uid")."';"); + $err->raise("mem",1); + return false; + } + if (!$db->f("enabled")) { + $err->raise("mem",2); + return false; + } + $this->user=$db->Record; + $cuid=$db->f("uid"); + if ($restrictip) { + $ip="'".getenv("REMOTE_ADDR")."'"; + } else $ip="''"; + /* Close sessions that are more than 2 days old. */ + $db->query("DELETE FROM sessions WHERE DATE_ADD(ts,INTERVAL 2 DAY)query("insert into sessions (sid,ip,uid) values ('".$_REQUEST["session"]."',$ip,'$cuid');"); + setcookie("session",$_REQUEST["session"],0,"/"); + $err->error=0; + /* Fill in $local */ + $db->query("SELECT * FROM local WHERE uid='$cuid';"); + if ($db->num_rows()) { + $db->next_record(); + $this->local=$db->Record; + } + return true; + } + + /* ----------------------------------------------------------------- */ + /** Start a session as another user from an administrator account. + * This function is not the same as su. setid connect the current user in the destination + * account (for good), and su allow any user to become another account for some commands only. + * (del_user, add_user ...) and allow to bring back admin rights with unsu + * + * @param $id integer User id where we will connect to. + * @return boolean TRUE if the user has been successfully connected, FALSE else. + */ + function setid($id) { + global $db,$err,$cuid; + $err->log("mem","setid",$username); + $db->query("select * from membres where uid='$id';"); + if ($db->num_rows()==0) { + $err->raise("mem",1); + return false; + } + $db->next_record(); + $this->user=$db->Record; + $cuid=$db->f("uid"); + $ip=getenv("REMOTE_ADDR"); + $_REQUEST["session"]=md5(uniqid(mt_rand())); + $db->query("insert into sessions (sid,ip,uid) values ('".$_REQUEST["session"]."','$ip','$cuid');"); + setcookie("session",$_REQUEST["session"],0,"/"); + $err->error=0; + /* Fill in $local */ + $db->query("SELECT * FROM local WHERE uid='$cuid';"); + if ($db->num_rows()) { + $db->next_record(); + $this->local=$db->Record; + } + return true; + } + + /* ----------------------------------------------------------------- */ + /** Suite à la connexion de l'utilisateur, réinitialise ses paramètres de dernière connexion + */ + function resetlast() { + global $db,$cuid; + $ip=addslashes(getenv("REMOTE_HOST")); + if (!$ip) $ip=addslashes(getenv("REMOTE_ADDR")); + $db->query("UPDATE membres SET lastlogin=NOW(), lastfail=0, lastip='$ip' WHERE uid='$cuid';"); + } + + /* ----------------------------------------------------------------- */ + /** Vérifie que la session courante est correcte (cookie ok et ip valide). + * Si besoin, et si réception des champs username & password, crée une nouvelle + * session pour l'utilisateur annoncé. + * Cette fonction doit être appellée à chaque page devant être authentifiée. + * et AVANT d'émettre des données. (un cookie peut être envoyé) + * @global string $session Le cookie de session eventuel + * @global string $username/password le login/pass de l'utilisateur + * @return TRUE si la session est correcte, FALSE sinon. + */ + function checkid() { + global $db,$err,$cuid,$restrictip; + if ($_REQUEST["username"] && $_REQUEST["password"]) { + return $this->login($_REQUEST["username"],$_REQUEST["password"],$_REQUEST["restrictip"]); + } + $_COOKIE["session"]=addslashes($_COOKIE["session"]); + if (strlen($_COOKIE["session"])!=32) { + $err->raise("mem",3); + return false; + } + $ip=getenv("REMOTE_ADDR"); + $db->query("select uid,'$ip' as me,ip from sessions where sid='".$_COOKIE["session"]."'"); + if ($db->num_rows()==0) { + $err->raise("mem",4); + return false; + } + $db->next_record(); + if ($db->f("ip")) { + if ($db->f("me")!=$db->f("ip")) { + $err->raise("mem",5); + return false; + } + } + $cuid=$db->f("uid"); + $db->query("select * from membres where uid='$cuid';"); + $db->next_record(); + $this->user=$db->Record; + $err->error=0; + /* Remplissage de $local */ + $db->query("SELECT * FROM local WHERE uid='$cuid';"); + if ($db->num_rows()) { + $db->next_record(); + $this->local=$db->Record; + } + return true; + } + + /* ----------------------------------------------------------------- */ + /** Change l'identité d'un utilisateur temporairement. + * @global string $uid Utilisateur dont on prends l'identité + * @return TRUE si la session est correcte, FALSE sinon. + */ + function su($uid) { + global $cuid,$db,$err; + if (!$this->olduid) + $this->olduid=$cuid; + $db->query("select * from membres where uid='$uid';"); + if ($db->num_rows()==0) { + $err->raise("mem",1); + return false; + } + $db->next_record(); + $this->user=$db->Record; + $cuid=$db->f("uid"); + return true; + } + + /* ----------------------------------------------------------------- */ + /** Retourne a l'identite d'origine de l'utilisateur apres su. + * @return TRUE si la session est correcte, FALSE sinon. + */ + function unsu() { + global $cuid; + if (!$this->olduid) + return false; + $this->su($this->olduid); + $this->olduid=0; + return true; + } + + + /* ----------------------------------------------------------------- */ + /** Termine une session du bureau virtuel (logout) + * @return boolean TRUE si la session a bien été détruite, FALSE sinon. + */ + function del_session() { + global $db,$user,$err,$cuid,$classes; + $err->log("mem","del_session"); + $_COOKIE["session"]=addslashes(isset($_COOKIE["session"])?$_COOKIE["session"]:''); + setcookie("session","",0,"/"); + setcookie("oldid","",0,"/admin/"); + if ($_COOKIE["session"]=="") { + $err->error=0; + return true; + } + if (strlen($_COOKIE["session"])!=32) { + $err->raise("mem",3); + return false; + } + $ip=getenv("REMOTE_ADDR"); + $db->query("select uid,'$ip' as me,ip from sessions where sid='".$_COOKIE["session"]."'"); + if ($db->num_rows()==0) { + $err->raise("mem",4); + return false; + } + $db->next_record(); + if ($db->f("me")!=$db->f("ip")) { + $err->raise("mem",5); + return false; + } + $cuid=$db->f("uid"); + $db->query("delete from sessions where sid='".$_COOKIE["session"]."';"); + $err->error=0; + + # Invoker le logout dans toutes les autres classes + foreach($classes as $c) { + if (method_exists($GLOBALS[$c],"alternc_del_session")) { + $GLOBALS[$c]->alternc_del_session($dom); + } + } + return true; + } + + /* ----------------------------------------------------------------- */ + /** Change le mot de passe de l'utilisateur courant. + * @param string $oldpass Ancien mot de passe. + * @param string $newpass Nouveau mot de passe + * @param string $newpass2 Nouveau mot de passe (à nouveau) + * @return boolean TRUE si le mot de passe a été changé, FALSE sinon. + */ + function passwd($oldpass,$newpass,$newpass2) { + global $db,$err,$cuid,$admin; + $err->log("mem","passwd"); + $oldpass=stripslashes($oldpass); + $newpass=stripslashes($newpass); + $newpass2=stripslashes($newpass2); + if (!$this->user["canpass"]) { + $err->raise("mem",11); + return false; + } + if ($this->user["pass"]!=_md5cr($oldpass,$this->user["pass"])) { + $err->raise("mem",6); + return false; + } + if ($newpass!=$newpass2) { + $err->raise("mem",7); + return false; + } + if (strlen($newpass)<3) { + $err->raise("mem",8); + return false; + } + $db->query("SELECT login FROM membres WHERE uid='$cuid';"); + $db->next_record(); + $login=$db->Record["login"]; + if (!$admin->checkPolicy("mem",$login,$newpass)) { + return false; // The error has been raised by checkPolicy() + } + $newpass=_md5cr($newpass); + $db->query("UPDATE membres SET pass='$newpass' WHERE uid='$cuid';"); + $err->error=0; + return true; + } + + /* ----------------------------------------------------------------- */ + /** Change les préférences administrateur d'un compte + * @param integer $admlist Mode de visualisation des membres (0=large 1=courte) + * @return boolean TRUE si les préférences ont été changées, FALSE sinon. + */ + function adminpref($admlist) { + global $db,$err,$cuid; + $err->log("mem","admlist"); + if (!$this->user["su"]) { + $err->raise("mem",12); + return false; + } + $db->query("UPDATE membres SET admlist='$admlist' WHERE uid='$cuid';"); + $err->error=0; + return true; + } + + /* ----------------------------------------------------------------- */ + /** Envoie en mail le mot de passe d'un compte. + * Note : On ne peut demander le mot de passe qu'une seule fois par jour. + * TODO : Translate this mail into the localization program. + * TODO : Check this function's ! + * @return boolean TRUE si le mot de passe a été envoyé avec succès, FALSE sinon. + */ + function send_pass($login) { + global $err,$db,$L_HOSTING,$L_FQDN; + $err->log("mem","send_pass"); + $db->query("SELECT * FROM membres WHERE login='$login';"); + if (!$db->num_rows()) { + $err->raise("mem",2); + return false; + } + $db->next_record(); + if (time()-$db->f("lastaskpass")<86400) { + $err->raise("mem",7); + return false; + } + $txt="Bonjour, +Il semblerait que vous ayez demandé à recevoir le mot de passe du +compte ".$login." sur $L_HOSTING +Voici donc le nom d'utilisateur et le mot de passe qui vous +permettront de rentrer sur le bureau virtuel : + +-------------------------------------- + +Nom d'utilisateur : ".$db->f("login")." + +Mot de passe : ".$db->f("pass")." + +-------------------------------------- + +Note : si vous n'avez pas fait cette demande, cela signifie que +quelqu'un l'a faite pour vous. Vous pouvez donc ignorer ce message. +Si cela se reproduit, n'hésitez pas à contacter l'administrateur +de votre serveur. + +Cordialement. +"; + mail($db->f("mail"),"Votre mot de passe sur $L_HOSTING",$txt,"From: postmaster@$L_FQDN\nReply-to: postmaster@$L_FQDN"); + $db->query("UPDATE membres SET lastaskpass=".time()." WHERE login='$login';"); + return true; + } + + /* ----------------------------------------------------------------- */ + /** Change le mail d'un membre (première etape, envoi du CookiE) + * TODO : insert this mail string into the localization system + * @param string $newmail Nouveau mail souhaité pour le membre. + * @return string le cookie si le mail a bien été envoyé, FALSE sinon + */ + function ChangeMail1($newmail) { + global $err,$db,$L_HOSTING,$L_FQDN,$cuid; + $err->log("mem","changemail1",$newmail); + $db->query("SELECT * FROM membres WHERE uid='$cuid';"); + if (!$db->num_rows()) { + $err->raise("mem",2); + return false; + } + $db->next_record(); + + // un cookie de 20 caractères pour le mail + $COOKIE=substr(md5(uniqid(rand(),1)),0,20); + // et de 6 pour la clé à entrer. ca me semble suffisant... + $KEY=substr(md5(uniqid(rand(),1)),0,6); + // TODO : Translate this and insert this in alternc.po + $txt="Bonjour, +Quelqu'un (peut-etre vous) a demandé le changement de l'email du compte +".$db->f("login")." sur $L_HOSTING +Afin de confirmer que cet email est valide, merci de vous rendre à l'adresse +ci-dessous : + +https://$L_FQDN/admin/mem_cm.php?usr=$cuid&cookie=$COOKIE + +(attention : si cette adresse est coupée sur 2 lignes, ne pas oublier de +reconstituer sur une seule ligne). Le bureau vous demandera la clé qui vous +a été donnée lors de la demande de changement d'email. + +Note : si vous n'avez pas fait cette demande, cela signifie que quelqu'un +l'a faite pour vous. Vous pouvez donc ignorer ce message. Si cela se +reproduit, n'hésitez pas à contacter l'administrateur de votre serveur. + +Cordialement. +"; + mail($newmail,"Changement d'email sur $L_HOSTING",$txt,"From: postmaster@$L_FQDN\nReply-to: postmaster@$L_FQDN"); + // Supprime les demandes précédentes de ce compte ! + $db->query("DELETE FROM chgmail WHERE uid='$cuid';"); + $db->query("INSERT INTO chgmail (cookie,ckey,uid,mail,ts) VALUES ('$COOKIE','$KEY','$cuid','$newmail',".time().");"); + // Supprime les cookies de la veille :) + $lts=time()-86400; + $db->query("DELETE FROM chgmail WHERE ts<'$lts';"); + return $KEY; + } + + /* ----------------------------------------------------------------- */ + /** Change le mail d'un membre (seconde etape, CookiE+clé = application) + * @param string $COOKIE Cookie envoyé par mail + * @param string $KEY clé affichée à l'écran + * @param integer $uid Utilisateur concerné (on est hors session) + * @return TRUE si le mail a bien été modifié, FALSE sinon + */ + function ChangeMail2($COOKIE,$KEY,$uid) { + global $err,$db,$L_HOSTING,$L_FQDN; + $err->log("mem","changemail2",$uid); + $db->query("SELECT * FROM chgmail WHERE cookie='$COOKIE' and ckey='$KEY' and uid='$uid';"); + if (!$db->num_rows()) { + $err->raise("mem",9); + return false; + } + $db->next_record(); + + // met à jour le compte : + $db->query("UPDATE membres SET mail='".$db->f("mail")."' WHERE uid='$uid';"); + + $db->query("DELETE FROM chgmail WHERE uid='$uid';"); + // Supprime les cookies de la veille :) + $lts=time()-86400; + $db->query("DELETE FROM chgmail WHERE ts<'$lts';"); + return true; + } + + /* ----------------------------------------------------------------- */ + /** Modifie le paramètre d'aide en ligne (1/0) + * @param integer $show Faut-il (1) ou non (0) afficher l'aide en ligne + */ + function set_help_param($show) { + global $db,$err,$cuid; + $err->log("mem","set_help_param",$show); + $db->query("UPDATE membres SET show_help='$show' WHERE uid='$cuid';"); + } + + /* ----------------------------------------------------------------- */ + /** Dit si l'aide en ligne est demandée + * @return boolean TRUE si l'aide en ligne est demandée, FALSE sinon. + */ + function get_help_param() { + return $this->user["show_help"]; + } + + /* ----------------------------------------------------------------- */ + /** Affiche (echo) l'aide contextuelle + * @param integer $file Numéro de fichier d'aide à afficher. + * @return TRUE si l'aide contextuelle a été trouvée, FALSE sinon + */ + function show_help($file,$force=false) { + global $err; + $err->log("mem","show_help"); + if ($this->user["show_help"] || $force) { + $hlp=_("hlp_$file"); + if ($hlp!="hlp_$file") { + $hlp=ereg_replace( + "HELPID_([0-9]*)", + "\""._("Help")."\"",$hlp); + echo "

            ".$hlp."

            "; + return true; + } + return false; + } else { + return true; + } + } + + + /* ----------------------------------------------------------------- */ + /** + * Exports all the personnal user related information for an account. + * @access private + * EXPERIMENTAL 'sid' function ;) + */ + function alternc_export($tmpdir) { + global $db,$err; + $err->log("mem","export"); + $str="\n"; + + foreach ($this->user as $k=>$v) { + $str.=" <$k>".xml_entities($v)."\n"; + } + $str.="\n"; + return $str; + } + + + + +} /* Classe Membre */ + +?> diff --git a/stable-1.0/bureau/class/m_mysql.php b/stable-1.0/bureau/class/m_mysql.php new file mode 100644 index 00000000..f900ddd4 --- /dev/null +++ b/stable-1.0/bureau/class/m_mysql.php @@ -0,0 +1,735 @@ +server = $GLOBALS['L_MYSQL_HOST']; + $this->client = $GLOBALS['L_MYSQL_CLIENT']; + } + + + /* ----------------------------------------------------------------- */ + /** Hook called by m_quota to obtain the quota managed by this class. + * Quota name + */ + function alternc_quota_names() { + return array("mysql","mysql_users"); + } + + + /* ----------------------------------------------------------------- */ + /** + * Password kind used in this class (hook for admin class) + */ + function alternc_password_policy() { + return array("mysql"=>"MySQL users"); + } + + + /*---------------------------------------------------------------------------*/ + /** Get the list of the database for the current user. + * @return array returns an associative array as follow :
            + * "db" => database name "bck" => backup mode for this db + * "dir" => Backup folder. + * Returns FALSE if the user has no database. + */ + function get_dblist() { + global $db,$err,$bro,$cuid; + $err->log("mysql","get_dblist"); + $db->query("SELECT login,pass,db, bck_mode, bck_dir FROM db WHERE uid='$cuid' ORDER BY db;"); + if (!$db->num_rows()) { + $err->raise("mysql",11); + return false; + } + $c=array(); + while ($db->next_record()) { + list($dbu,$dbn)=split_mysql_database_name($db->f("db")); + $c[]=array("db"=>$db->f("db"), "name"=>$dbn,"bck"=>$db->f("bck_mode"), "dir"=>$db->f("bck_dir"), "login"=>$db->f("login"), "pass"=>$db->f("pass")); + } + return $c; + } + + + /*---------------------------------------------------------------------------*/ + /** Returns the details of a user's database. + * $dbn is the name of the database (after the _) or nothing for the database "$user" + * @return array returns an associative array as follow : + * "db" => Name of the database + * "bck" => Current bckup mode + * "dir" => Backup directory + * "size" => Size of the database (in bytes) + * "pass" => Password of the user + * "history" => Number of backup we keep + * "gzip" => Does we compress the dumps ? + * Returns FALSE if the user has no database of if the database does not exist. + */ + function get_mysql_details($dbn) { + global $db,$err,$bro,$mem,$cuid; + $root="/var/alternc/html/".substr($mem->user["login"],0,1)."/".$mem->user["login"]; + $err->log("mysql","get_mysql_details"); + $dbname=$mem->user["login"].($dbn?"_":"").$dbn; + $size=$this->get_db_size($dbname); + $db->query("SELECT login,pass,db, bck_mode, bck_gzip, bck_dir, bck_history FROM db WHERE uid='$cuid' AND db='$dbname';"); + if (!$db->num_rows()) { + $err->raise("mysql",4); + return array("enabled"=>false); + } + $c=array(); + $db->next_record(); + list($dbu,$dbn)=split_mysql_database_name($db->f("db")); + return array("enabled"=>true,"login"=>$db->f("login"),"db"=>$db->f("db"), "name"=>$dbn,"bck"=>$db->f("bck_mode"), "dir"=>substr($db->f("bck_dir"),strlen($root)), "size"=>$size, "pass"=>$db->f("pass"), "history"=>$db->f("bck_history"), "gzip"=>$db->f("bck_gzip")); + } + + + /*---------------------------------------------------------------------------*/ + /** Create a new database for the current user. + * @param $dbn string Database name ($user_$dbn is the mysql db name) + * @return TRUE if the database $user_$db has been successfully created, or FALSE if + * an error occured, such as over quota user. + */ + function add_db($dbn) { + global $db,$err,$quota,$mem,$cuid; + $err->log("mysql","add_db",$dbn); + if (!$quota->cancreate("mysql")) { + $err->raise("mysql",1); + return false; + } + if (!ereg("^[0-9a-z]*$",$dbn)) { + $err->raise("mysql",2); + return false; + } + $dbname=$mem->user["login"].($dbn?"_":"").$dbn; + if (strlen($dbname) > 64) { + $err->raise("mysql",12); + return false; + } + $db->query("SELECT * FROM db WHERE db='$dbname';"); + if ($db->num_rows()) { + $err->raise("mysql",3); + return false; + } + // find the login/pass for this user : + $db->query("SELECT login,pass FROM db WHERE uid='$cuid' LIMIT 0,1;"); + if (!$db->num_rows()) { + $lo=$mem->user["login"]; + $pa=""; + } else { + $db->next_record(); + $lo=addslashes($db->f("login")); + $pa=addslashes($db->f("pass")); + } + if ($db->query("CREATE DATABASE `$dbname`;")) { + // Ok, database does not exist, quota is ok and dbname is compliant. Let's proceed + $db->query("INSERT INTO db (uid,login,pass,db,bck_mode) VALUES ('$cuid','$lo','$pa','$dbname',0);"); + // give everything but GRANT on db.* + // we assume there's already a user + $db->query("GRANT ALL PRIVILEGES ON `".$dbname."`.* TO '".$lo."'@'$this->client'"); + return true; + } else { + $err->raise("mysql",3); + return false; + } + } + + + /*---------------------------------------------------------------------------*/ + /** Delete a database for the current user. + * @param $dbn string Name of the database to delete. The db name is $user_$dbn + * @return TRUE if the database $user_$db has been successfully deleted, or FALSE if + * an error occured, such as db does not exist. + */ + function del_db($dbn) { + global $db,$err,$mem,$cuid; + $err->log("mysql","del_db",$dbn); + + $dbname=addslashes($mem->user["login"].($dbn?"_":"").$dbn); + $db->query("SELECT login FROM db WHERE db='$dbname';"); + if (!$db->num_rows()) { + $err->raise("mysql",4); + return false; + } + $db->next_record(); + $login=$db->f("login"); + + // Ok, database exists and dbname is compliant. Let's proceed + $db->query("DELETE FROM db WHERE uid='$cuid' AND db='$dbname';"); + $db->query("DROP DATABASE `$dbname`;"); + $db->query("SELECT COUNT(*) AS cnt FROM db WHERE uid='$cuid';"); + $db->next_record(); + $db->query("REVOKE ALL PRIVILEGES ON `".$dbname."`.* FROM '".$login."'@'$this->client'"); + if ($db->f("cnt")==0) { + $db->query("DELETE FROM mysql.user WHERE User='".$login."';"); + $db->query("FLUSH PRIVILEGES;"); + } + return true; + } + + + /*---------------------------------------------------------------------------*/ + /** Set the backup parameters for the database $db + * @param $db string database name + * @param $bck_mode integer Backup mode (0 = none 1 = daily 2 = weekly) + * @param $bck_history integer How many backup should we keep ? + * @param $bck_gzip boolean shall we compress the backup ? + * @param $bck_dir string Directory relative to the user account where the backup will be stored + * @return boolean true if the backup parameters has been successfully changed, false if not. + */ + function put_mysql_backup($dbn,$bck_mode,$bck_history,$bck_gzip,$bck_dir) { + global $db,$err,$mem,$bro,$cuid; + $err->log("mysql","put_mysql_backup"); + if (!ereg("^[0-9a-z]*$",$dbn)) { + $err->raise("mysql",2); + return false; + } + $dbname=$mem->user["login"].($dbn?"_":"").$dbn; + $db->query("SELECT * FROM db WHERE uid='$cuid' AND db='$dbname';"); + if (!$db->num_rows()) { + $err->raise("mysql",4); + return false; + } + $db->next_record(); + $bck_mode=intval($bck_mode); + $bck_history=intval($bck_history); + if ($bck_gzip) + $bck_gzip="1"; + else + $bck_gzip="0"; + if (!$bck_mode) + $bck_mode="0"; + if (!$bck_history) { + $err->raise("mysql",5); + return false; + } + if (($bck_dir=$bro->convertabsolute($bck_dir,0))===false) { // return a full path or FALSE + $err->raise("mysql",6); + return false; + } + $db->query("UPDATE db SET bck_mode='$bck_mode', bck_history='$bck_history', bck_gzip='$bck_gzip', bck_dir='$bck_dir' WHERE uid='$cuid' AND db='$dbname';"); + return true; + } + + + /*---------------------------------------------------------------------------*/ + /** Change the password of the user in MySQL + * @param $password string new password (cleartext) + * @return boolean TRUE if the password has been successfully changed, FALSE else. + */ + function put_mysql_details($password) { + global $db,$err,$mem,$cuid,$admin; + $err->log("mysql","put_mysql_details"); + $db->query("SELECT * FROM db WHERE uid='$cuid';"); + if (!$db->num_rows()) { + $err->raise("mysql",7); + return false; + } + $db->next_record(); + $login=$db->f("login"); + + if (strlen($password)>16) { + $err->raise("mysql",8); + return false; + } + if (!$password) { + $err->raise("mysql",20); + return false; + } + + // Check this password against the password policy using common API : + if (is_callable(array($admin,"checkPolicy"))) { + if (!$admin->checkPolicy("mysql",$login,$password)) { + return false; // The error has been raised by checkPolicy() + } + } + + // Update all the "pass" fields for this user : + $db->query("UPDATE db SET pass='$password' WHERE uid='$cuid';"); + $db->query("SET PASSWORD FOR '$login'@'$this->client' = PASSWORD('$password')"); + return true; + } + + + /* ----------------------------------------------------------------- */ + /** Create a new mysql account for this user + * @param string cleartext password for the new account + * It also create the first database. + */ + function new_mysql($password) { + global $db,$err,$mem,$cuid,$admin; + $err->log("mysql","new_mysql"); + if (strlen($password)>16) { + $err->raise("mysql",8); + return false; + } + if (!$password) { + $err->raise("mysql",20); + return false; + } + $db->query("SELECT * FROM db WHERE uid='$cuid';"); + if ($db->num_rows()) { + $err->raise("mysql",10); + return false; + } + $login=$mem->user["login"]; + $dbname=$mem->user["login"]; + + // Username cannot be longer than 16 characters + if (strlen($login)>16) { + $err->raise("mysql",15); + return false; + } + + // Check this password against the password policy using common API : + if (is_callable(array($admin,"checkPolicy"))) { + if (!$admin->checkPolicy("mysql",$login,$password)) { + return false; // The error has been raised by checkPolicy() + } + } + + // OK, creation now... + $db->query("INSERT INTO db (uid,login,pass,db) VALUES ('$cuid','".$login."','$password','".$dbname."');"); + // give everything but GRANT on $user.* + $db->query("GRANT ALL PRIVILEGES ON `".$dbname."`.* TO '".$login."'@'$this->client' IDENTIFIED BY '".addslashes($password)."'"); + $db->query("CREATE DATABASE `".$dbname."`;"); + return true; + } + + + /* ----------------------------------------------------------------- */ + /** Restore a sql database. + * @param $file string The filename, relative to the user root dir, which contains a sql dump + * @param $stdout boolean shall-we dump the error to stdout ? + * @param $id integer The ID of the database to dump to. + * @return boolean TRUE if the database has been restored, or FALSE if an error occurred + */ + function restore($file,$stdout,$id) { + global $err,$bro,$mem,$L_MYSQL_HOST; + if (!$r=$this->get_mysql_details($id)) { + return false; + } + if (!($fi=$bro->convertabsolute($file,0))) { + $err->raise("mysql",9); + return false; + } + if (substr($fi,-3)==".gz") { + $exe="/bin/gzip -d -c <".escapeshellarg($fi)." | /usr/bin/mysql -h".escapeshellarg($L_MYSQL_HOST)." -u".escapeshellarg($r["login"])." -p".escapeshellarg($r["pass"])." ".escapeshellarg($r["db"]); + } elseif (substr($fi,-4)==".bz2") { + $exe="/usr/bin/bunzip2 -d -c <".escapeshellarg($fi)." | /usr/bin/mysql -h".escapeshellarg($L_MYSQL_HOST)." -u".escapeshellarg($r["login"])." -p".escapeshellarg($r["pass"])." ".escapeshellarg($r["db"]); + } else { + $exe="/usr/bin/mysql -h".escapeshellarg($L_MYSQL_HOST)." -u".escapeshellarg($r["login"])." -p".escapeshellarg($r["pass"])." ".escapeshellarg($r["db"])." <".escapeshellarg($fi); + } + $exe .= " 2>&1"; + + echo "
            " ;
            +    if ($stdout) {
            +      passthru($exe,$ret);
            +    } else {
            +      exec ($exe,$ret);
            +    }
            +    echo "
            " ; + if ($ret != 0) { + return false ; + } else { + return true ; + } + } + + + /* ----------------------------------------------------------------- */ + /** Get the size of a database + * @param $dbname name of the database + * @return integer database size + * @access private + */ + function get_db_size($dbname) { + global $db,$err; + + $db->query("SHOW TABLE STATUS FROM `$dbname`;"); + $size = 0; + while ($db->next_record()) { + $size += $db->f('Data_length') + $db->f('Index_length') + + $db->f('Data_free'); + } + return $size; + } + + + /* ------------------------------------------------------------ */ + /** + * Returns the list of database users of an account + **/ + function get_userslist() { + global $db,$err,$bro,$cuid; + $err->log("mysql","get_userslist"); + $db->query("SELECT name FROM dbusers WHERE uid='$cuid' ORDER BY name;"); + if (!$db->num_rows()) { + $err->raise("mysql",19); + return false; + } + $c=array(); + while ($db->next_record()) { + $c[]=array("name"=>substr($db->f("name"),strpos($db->f("name"),"_")+1)); + } + + return $c; + } + + + /* ------------------------------------------------------------ */ + /** + * Create a new user in MySQL rights tables + * @param $usern the username (we will add _[alternc-account] to it) + * @param $password The password for this username + * @param $passconf The password confirmation + * @return TRUE if the user has been created in MySQL or FALSE if an error occurred + **/ + function add_user($usern,$password,$passconf) { + global $db,$err,$quota,$mem,$cuid,$admin; + $err->log("mysql","add_user",$usern); + + $usern=trim($usern); + $user=addslashes($mem->user["login"]."_".$usern); + $pass=addslashes($password); + + if (!$usern) { + $err->raise("mysql",21); + return false; + } + if (!$pass) { + $err->raise("mysql",20); + return false; + } + if (!$quota->cancreate("mysql_users")) { + $err->raise("mysql",13); + return false; + } + if (!ereg("^[0-9a-z]",$usern)) { + $err->raise("mysql",14); + return false; + } + + // We check the length of the COMPLETE username, not only the part after _ + if (strlen($user) > 16) { + $err->raise("mysql",15); + return false; + } + $db->query("SELECT * FROM dbusers WHERE name='$user';"); + if ($db->num_rows()) { + $err->raise("mysql",16); + return false; + } + if ($password != $passconf || !$password) { + $err->raise("mysql",17); + return false; + } + + // Check this password against the password policy using common API : + if (is_callable(array($admin,"checkPolicy"))) { + if (!$admin->checkPolicy("mysql",$user,$password)) { + return false; // The error has been raised by checkPolicy() + } + } + + // We create the user account (the "file" right is the only one we need globally to be able to use load data into outfile) + $db->query("GRANT file ON *.* TO '$user'@'$this->client' IDENTIFIED BY '$pass';"); + // We add him to the user table + $db->query("INSERT INTO dbusers (uid,name) VALUES($cuid,'$user');"); + return true; + } + + /* ------------------------------------------------------------ */ + /** + * Change a user's MySQL password + * @param $usern the username + * @param $password The password for this username + * @param $passconf The password confirmation + * @return TRUE if the password has been changed in MySQL or FALSE if an error occurred + **/ + function change_user_password($usern,$password,$passconf) { + global $db,$err,$quota,$mem,$cuid,$admin; + $err->log("mysql","add_user",$usern); + + $usern=trim($usern); + $user=addslashes($mem->user["login"]."_".$usern); + $pass=addslashes($password); + if ($password != $passconf || !$password) { + $err->raise("mysql",17); + return false; + } + + // Check this password against the password policy using common API : + if (is_callable(array($admin,"checkPolicy"))) { + if (!$admin->checkPolicy("mysql",$user,$password)) { + return false; // The error has been raised by checkPolicy() + } + } + + $db->query("SET PASSWORD FOR '$user'@'$this->client' = PASSWORD('$pass')"); + return true; + } + + + + /* ------------------------------------------------------------ */ + /** + * Delete a user in MySQL rights tables + * @param $user the username (we will add "[alternc-account]_" to it) to delete + * @return TRUE if the user has been deleted in MySQL or FALSE if an error occurred + **/ + function del_user($user) { + global $db,$err,$mem,$cuid,$L_MYSQL_DATABASE; + $err->log("mysql","del_user",$user); + if (!ereg("^[0-9a-z]",$user)) { + $err->raise("mysql",14); + return false; + } + $db->query("SELECT name FROM dbusers WHERE name='".$mem->user["login"]."_$user';"); + if (!$db->num_rows()) { + $err->raise("mysql",18); + return false; + } + $db->next_record(); + $login=$db->f("name"); + + // Ok, database exists and dbname is compliant. Let's proceed + $db->query("REVOKE ALL PRIVILEGES ON *.* FROM '".$mem->user["login"]."_$user'@'$this->client';"); + $db->query("DELETE FROM mysql.db WHERE User='".$mem->user["login"]."_$user' AND Host='$this->client';"); + $db->query("DELETE FROM mysql.user WHERE User='".$mem->user["login"]."_$user' AND Host='$this->client';"); + $db->query("FLUSH PRIVILEGES"); + $db->query("DELETE FROM dbusers WHERE uid='$cuid' AND name='".$mem->user["login"]."_$user';"); + return true; + } + + + /* ------------------------------------------------------------ */ + /** + * Return the list of the database rights of user $user + * @param $user the username + * @return array An array of database name and rights + **/ + function get_user_dblist($user) { + global $db,$err,$mem,$cuid,$L_MYSQL_DATABASE; + $err->log("mysql","get_user_dblist"); + + $r=array(); + $dblist=$this->get_dblist(); + + for ( $i=0 ; $iquery("SELECT Db, Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv, References_priv, Index_priv, Alter_priv, Create_tmp_table_priv, Lock_tables_priv FROM mysql.db WHERE User='".$mem->user["login"].($user?"_":"").$user."' AND Host='$this->client' AND Db='".$dblist[$i]["db"]."';"); + if ($db->next_record()) + $r[]=array("db"=>$dblist[$i]["name"], "select"=>$db->f("Select_priv"), "insert"=>$db->f("Insert_priv"), "update"=>$db->f("Update_priv"), "delete"=>$db->f("Delete_priv"), "create"=>$db->f("Create_priv"), "drop"=>$db->f("Drop_priv"), "references"=>$db->f("References_priv"), "index"=>$db->f("Index_priv"), "alter"=>$db->f("Alter_priv"), "create_tmp"=>$db->f("Create_tmp_table_priv"), "lock"=>$db->f("Lock_tables_priv")); + else + $r[]=array("db"=>$dblist[$i]["name"], "select"=>"N", "insert"=>"N", "update"=>"N", "delete"=>"N", "create"=>"N", "drop"=>"N", "references"=>"N", "index"=>"N", "alter"=>"N", "Create_tmp"=>"N", "lock"=>"N" ); + } + + return $r; + } + + /* ------------------------------------------------------------ */ + /** + * Set the access rights of user $user to database $dbn to be rights $rights + * @param $user the username to give rights to + * @param $dbn The database to give rights to + * @param $rights The rights as an array of MySQL keywords (insert, select ...) + * @return boolean TRUE if the rights has been applied or FALSE if an error occurred + * + **/ + function set_user_rights($user,$dbn,$rights) { + global $mem, $db; + + $usern=addslashes($mem->user["login"].($user?"_":"").$user); + $dbname=addslashes($mem->user["login"].($dbn?"_":"").$dbn); + // On génère les droits en fonction du tableau de droits + for( $i=0 ; $iquery("SELECT * FROM mysql.db WHERE User = '$usern' AND Db = '$dbname';"); + if($db->num_rows()) + $db->query("REVOKE ALL PRIVILEGES ON $dbname.* FROM '$usern'@'$this->client';"); + if( $strrights ){ + $strrights=substr($strrights,0,strlen($strrights)-1); + $db->query("GRANT $strrights ON $dbname.* TO '$usern'@'$this->client';"); + } + $db->query("FLUSH PRIVILEGES"); + return TRUE; + } + + + /* ----------------------------------------------------------------- */ + /** Hook function called by the quota class to compute user used quota + * Returns the used quota for the $name service for the current user. + * @param $name string name of the quota + * @return integer the number of service used or false if an error occured + * @access private + */ + function alternc_get_quota($name) { + global $err,$db,$cuid; + if ($name=="mysql") { + $err->log("mysql","alternc_get_quota"); + $c=$this->get_dblist(); + if (is_array($c)) { + return count($c); + } else { + return 0; + } + } elseif ($name=="mysql_users") { + $err->log("mysql","alternc_get_quota"); + $c=$this->get_userslist(); + if(is_array($c)) + return count($c); + else + return 0; + } else return false; + } + + + /* ----------------------------------------------------------------- */ + /** Hook function called when a user is deleted. + * AlternC's standard function that delete a member + * @access private + */ + function alternc_del_member() { + global $db,$err,$cuid; + $err->log("mysql","alternc_del_member"); + $c=$this->get_dblist(); + if (is_array($c)) { + for($i=0;$idel_db($c[$i]["name"]); + } + } + $d=$this->get_userslist(); + if (is_array($d)) { + for($i=0;$idel_user($d[$i]["name"]); + } + } + return true; + } + + + /* ----------------------------------------------------------------- */ + /** Hook function called when a user is logged out. + * We just remove the cookie created in admin/sql_admin.php + * @access private + */ + function alternc_del_session() { + setcookie("REMOTE_USER",""); + setcookie("REMOTE_PASSWORD",""); + } + + + /* ----------------------------------------------------------------- */ + /** + * Exporte all the mysql information of an account + * @access private + * EXPERIMENTAL 'sid' function ;) + */ + function alternc_export($tmpdir) { + global $db,$err,$cuid; + $err->log("mysql","export"); + $db->query("SELECT login, pass, db, bck_mode, bck_dir, bck_history, bck_gzip FROM db WHERE uid='$cuid';"); + if ($db->next_record()) { + $str="\n"; + $str.=" ".xml_entities($db->Record["login"]).""; + $str.=" ".xml_entities($db->Record["pass"]).""; + do { + // Do the dump : + $filename=$tmpdir."/mysql.".$db->Record["db"].".sql.gz"; + exec("/usr/bin/mysqldump --add-drop-table --allow-keywords -Q -f -q -a -e -u".escapeshellarg($db->Record["login"])." -p".escapeshellarg($db->Record["pass"])." ".escapeshellarg($db->Record["db"])." |/bin/gzip >".escapeshellarg($filename)); + $str.=" \n"; + $str.=" ".xml_entities($db->Record["db"])."\n"; + if ($s["bck_mode"]!=0) { + $str.=" \n"; + $str.=" ".xml_entities($db->Record["bck_mode"])."\n"; + $str.=" ".xml_entities($db->Record["bck_dir"])."\n"; + $str.=" ".xml_entities($db->Record["bck_history"])."\n"; + $str.=" ".xml_entities($db->Record["bck_gzip"])."\n"; + $str.=" \n"; + } + $str.=" \n"; + } while ($db->next_record()); + $str.="\n"; + } + return $str; + } + + +} /* Class m_mysql */ + +?> diff --git a/stable-1.0/bureau/class/m_quota.php b/stable-1.0/bureau/class/m_quota.php new file mode 100644 index 00000000..3c51eef4 --- /dev/null +++ b/stable-1.0/bureau/class/m_quota.php @@ -0,0 +1,382 @@ +alternc_quota_check($uid) that +* may by exported by each service class.
            +* each class may also export a function alternc_quota_names() +* that returns an array with the quotas names managed by this class. +* +* @copyright AlternC-Team 2001-2005 http://alternc.org/ +* +*/ +class m_quota { + + var $disk=Array( /* Liste des ressources disque soumises a quota */ + "web"=>"web"); + + var $quotas; + var $clquota; // Which class manage which quota. + + + /* ----------------------------------------------------------------- */ + /** + * Constructor + */ + function m_quota() { + } + + + /* ----------------------------------------------------------------- */ + /** Check if a user can use a ressource. + * @param string $ressource the ressource name (a named quota) + * @Return TRUE if the user can create a ressource (= is there any quota left ?) + */ + function cancreate($ressource="") { + $t=$this->getquota($ressource); + return $t["u"]<$t["t"]; + } + + + /* ----------------------------------------------------------------- */ + /** + * @Return an array with the list of quota-managed services in the server + */ + function qlist() { + global $classes; + $qlist=array(); + reset($this->disk); + while (list($key,$val)=each($this->disk)) { + $qlist[$key]=_("quota_".$key); // those are specific disks quotas. + } + foreach($classes as $c) { + if (method_exists($GLOBALS[$c],"alternc_quota_names")) { + $res=$GLOBALS[$c]->alternc_quota_names(); // returns a string or an array. + if($res != "") { + if (is_array($res)) { + foreach($res as $k) { + $qlist[$k]=_("quota_".$k); + $this->clquota[$k]=$c; + } + } else { + $qlist[$res]=_("quota_".$res); + $this->clquota[$res]=$c; + } + } + } + } + return $qlist; + } + + + /* ----------------------------------------------------------------- */ + /** Return a ressource usage (u) and total quota (t) + * @param string $ressource ressource to get quota of + * @Return array the quota used and total for this ressource (or for all ressource if unspecified) + */ + function getquota($ressource="") { + global $db,$err,$cuid,$get_quota_cache; + $err->log("quota","getquota",$ressource); + if (! empty($get_quota_cache[$cuid]) ) { + // This function is called many time each webpage, so I cache the result + $this->quotas = $get_quota_cache[$cuid]; + } else { + $this->qlist(); // Generate the quota list. + $db->query("select * from quotas where uid='$cuid';"); + if ($db->num_rows()==0) { + return array("t"=>0, "u"=>0); + } else { + while ($db->next_record()) { + $ttmp[]=$db->Record; + } + foreach ($ttmp as $tt) { + $g=array("t"=>$tt["total"],"u"=>0); + if (method_exists($GLOBALS[$this->clquota[$tt["name"]]],"alternc_get_quota")) { + $g["u"]=$GLOBALS[$this->clquota[$tt["name"]]]->alternc_get_quota($tt["name"]); + } + $this->quotas[$tt["name"]]=$g; + } + } + reset($this->disk); + while (list($key,$val)=each($this->disk)) { + $a=array(); + exec("/usr/lib/alternc/quota_get ".$cuid." ".$val,$a); + $this->quotas[$val]=array("t"=>$a[1],"u"=>$a[0]); + } + $get_quota_cache[$cuid] = $this->quotas; + } + + if ($ressource) { + return $this->quotas[$ressource]; + } else { + return $this->quotas; + } + } + + + + /* ----------------------------------------------------------------- */ + /** Set the quota for a user (and for a ressource) + * @param string $ressource ressource to set quota of + * @param integer size of the quota (available or used) + */ + function setquota($ressource,$size) { + global $err,$db,$cuid; + $err->log("quota","setquota",$ressource."/".$size); + if (floatval($size)==0) $size="0"; + if (isset($this->disk[$ressource])) { + // It's a disk resource, update it with shell command + exec("/usr/lib/alternc/quota_edit $cuid $size"); + // Now we check that the value has been written properly : + exec("/usr/lib/alternc/quota_get ".$cuid,$a); + if ($size!=$a[1]) { + $err->raise("quota",1); + return false; + } + } + // We check that this ressource exists for this client : + $db->query("SELECT * FROM quotas WHERE uid='$cuid' AND name='$ressource'"); + if ($db->num_rows()) { + $db->query("UPDATE quotas SET total='$size' WHERE uid='$cuid' AND name='$ressource';"); + } else { + $db->query("INSERT INTO quotas (uid,name,total) VALUES ('$cuid','$ressource','$size');"); + } + return true; + } + + + /* ----------------------------------------------------------------- */ + /** + * Erase all quota information about the user. + */ + function delquotas() { + global $db,$err,$cuid; + $err->log("quota","delquota"); + $db->query("DELETE FROM quotas WHERE uid='$cuid';"); + return true; + } + + + /* ----------------------------------------------------------------- */ + /** + * Get the default quotas as an associative array + * @return array the array of the default quotas + */ + function getdefaults() { + global $db; + $c=array(); + + $db->query("SELECT type,quota FROM defquotas WHERE type='default'"); + if(!$db->next_record()) + $this->addtype('default'); + + $db->query("SELECT value,quota,type FROM defquotas ORDER BY type,quota"); + while($db->next_record()) { + $type = $db->f("type"); + + $c[$type][$db->f("quota")] = $db->f("value"); + } + return $c; + } + + + /* ----------------------------------------------------------------- */ + /** + * Set the default quotas + * @param array associative array of quota (key=>val) + */ + function setdefaults($newq) { + global $db; + $qlist=$this->qlist(); + + foreach($newq as $type => $quotas) { + foreach($quotas as $qname => $value) { + if(array_key_exists($qname, $qlist)) { + if(!$db->query("REPLACE INTO defquotas (value,quota,type) VALUES ($value,'$qname','$type');")) + return false; + } + } + } + return true; + } + + + /* ----------------------------------------------------------------- */ + /** + * Add an account type for quotas + * @param string $type account type to be added + * @return boolean true if all went ok + */ + function addtype($type) { + global $db; + $qlist=$this->qlist(); + reset($qlist); + if(empty($type)) + return false; + while (list($key,$val)=each($qlist)) { + if(!$db->query("INSERT IGNORE INTO defquotas (quota,type) VALUES('$key', '$type');") + || $db->affected_rows() == 0) + return false; + } + return true; + } + + + /* ----------------------------------------------------------------- */ + /** + * Delete an account type for quotas + * @param string $type account type to be deleted + * @return boolean true if all went ok + */ + function deltype($type) { + global $db; + $qlist=$this->qlist(); + reset($qlist); + + if($db->query("UPDATE membres SET type='default' WHERE type='$type'") && + $db->query("DELETE FROM defquotas WHERE type='$type'")) { + return true; + } else { + return false; + } + } + + + /* ----------------------------------------------------------------- */ + /** + * Create default quotas entries for a new user. + * The user we are talking about is in the global $cuid. + */ + function addquotas() { + global $db,$err,$cuid; + $err->log("quota","addquota"); + $ql=$this->qlist(); + reset($ql); + + $db->query("SELECT type,quota FROM defquotas WHERE type='default'"); + if(!$db->next_record()) + $this->addtype('default'); + + $db->query("SELECT type FROM membres WHERE uid='$cuid'"); + $db->next_record(); + $t = $db->f("type"); + + foreach($ql as $res => $val) { + $db->query("SELECT value FROM defquotas WHERE quota='$res' AND type='$t'"); + $q = $db->next_record() ? $db->f("value") : 0; + $this->setquota($res, $q); + } + return true; + } + + + /* ----------------------------------------------------------------- */ + /** Return a quota value with its unit (when it is a space quota) + * in MB, GB, TB ... + * @param string $type The quota type + * @param integer $value The quota value + * @return string a quota value with its unit. + */ + function display_val($type, $value) { + switch ($type) { + case 'bw_web': + return format_size($value); + case 'web': + return format_size($value*1024); + default: + return $value; + } + } + + + /* ----------------------------------------------------------------- */ + /** Hook function call when a user is deleted + * AlternC's standard function called when a user is deleted + */ + function alternc_del_member() { + $this->delquotas(); + } + + + /* ----------------------------------------------------------------- */ + /** Hook function called when a user is created + * This function initialize the user's quotas. + */ + function alternc_add_member() { + $this->addquotas(); + } + + + /* ----------------------------------------------------------------- */ + /** + * Exports all the quota related information for an account. + * @access private + * EXPERIMENTAL 'sid' function ;) + */ + function alternc_export($tmpdir) { + global $db,$err; + $err->log("quota","export"); + $str="\n"; + + $q=$this->getquota(); + foreach ($q as $k=>$v) { + $str.=" \n ".xml_entities($k)."\n"; + $str.=" ".xml_entities($v)."\n \n"; + } + $str.="\n"; + return $str; + } + + +} /* Class m_quota */ + +?> diff --git a/stable-1.0/bureau/class/m_sta2.php b/stable-1.0/bureau/class/m_sta2.php new file mode 100644 index 00000000..df26cd42 --- /dev/null +++ b/stable-1.0/bureau/class/m_sta2.php @@ -0,0 +1,311 @@ + +* The file is stored in the user space and will grow from time to time... +* +* @copyright AlternC's Team 2002-2005 http://alternc.org/ +* +*/ +class m_sta2 { + + /* ----------------------------------------------------------------- */ + /** + * Constructor, dummy + */ + function m_sta2() { + } + + /* ----------------------------------------------------------------- */ + /** Hook function that returns the quota names for this class + * + * @return string the quota names for this class + */ + function alternc_quota_names() { + return "sta2"; + } + + + /* ----------------------------------------------------------------- */ + /** Returns the list of domains and/or subdomains for this account + * + * @return array returns an array with all the domains / subdomains for this account. + */ + function host_list() { + global $db,$err,$cuid; + $r=array(); + $db->query("SELECT domaine,sub FROM sub_domaines WHERE compte='$cuid' ORDER BY domaine,sub;"); + while ($db->next_record()) { + if ($db->f("sub")) { + $r[]=$db->f("sub").".".$db->f("domaine"); + } else { + $r[]=$db->f("domaine"); + } + } + return $r; + } + + /* ----------------------------------------------------------------- */ + /** Draw option html tags of ths allowed domains / subdomains for the account. + * + * @param $current string The current selected value in the list + */ + function select_host_list($current) { + $r=$this->host_list(); + reset($r); + while (list($key,$val)=each($r)) { + if ($current==$val) $c=" selected=\"selected\""; else $c=""; + echo "$val"; + } + return true; + } + + /* ----------------------------------------------------------------- */ + /** Hook function that delete a user's raw stats. + */ + function alternc_del_member() { + global $db,$err,$cuid; + $err->log("sta2","del_member"); + $db->query("DELETE FROM stats2 WHERE mid='$cuid';"); + return true; + } + + /* ----------------------------------------------------------------- */ + /** Hook function that delete a user's domain, called by m_dom. + * @param string $dom is the domain that is to be deleted. + */ + function alternc_del_domain($dom) { + global $db,$err,$cuid; + $err->log("sta2","del_dom",$dom); + // Suppression des stats apache brutes : + $db->query("SELECT * FROM stats2 WHERE mid='$cuid' AND hostname like '%$dom'"); + $cnt=0; + $t=array(); + while ($db->next_record()) { + $cnt++; + $t[]=$db->f("hostname"); + } + // on détruit les jeux de stats associés au préfixe correspondant : + for($i=0;$iquery("DELETE FROM stats2 WHERE mid='$cuid' AND hostname='".$t[$i]."';"); + } + return true; + } + + /* ----------------------------------------------------------------- */ + /** Returns an array with the user's raw stat list + * The returned array is as follow : + * $r[0-n]["id"] = Id of the raw stat set. + * $r[0-n]["hostname"]= Domain + * $r[0-n]["folder"]= Destination's folder (in the user space) + * + * @return array Returns the array or FALSE if an error occured. + */ + function get_list_raw() { + global $db,$err,$cuid; + $err->log("sta2","get_list_raw"); + $r=array(); + $db->query("SELECT id, hostname, folder FROM stats2 WHERE mid='$cuid' ORDER BY hostname;"); + if ($db->num_rows()) { + while ($db->next_record()) { + // We skip /var/alternc/html/u/user + preg_match("/^\/var\/alternc\/html\/.\/[^\/]*\/(.*)/", $db->f("folder"),$match); + $r[]=array( + "id"=>$db->f("id"), + "hostname"=>$db->f("hostname"), + "folder"=>$match[1] + ); + } + return $r; + } else { + $err->raise("sta2",2); + return false; + } + } + + /* ----------------------------------------------------------------- */ + /** Get the details of a raw statistic set. + * + * This function returns the details of a raw statistic set (raw logs) + * The returned value is an associative array as follow : + * $ret["id"] = raw stat id. + * $ret["hostname"] = the domain we get the raw log. + * $ret["folder"] = the destination folder for the logs (inside the user space) + * @param $id string The raw stat number we want details of. + * @return array returns an array with the raw log parameters or FALSE if an error occured. + */ + function get_stats_details_raw($id) { + global $db,$err,$cuid; + $err->log("sta2","get_stats_details_raw",$id); + $r=array(); + $db->query("SELECT id, hostname, folder FROM stats2 WHERE mid='$cuid' AND id='$id';"); + if ($db->num_rows()) { + $db->next_record(); + // We skip /var/alternc/html/u/user + preg_match("/^\/var\/alternc\/html\/.\/[^\/]*\/(.*)/", $db->f("folder"),$match); + return array( + "id"=>$db->f("id"), + "hostname"=> $db->f("hostname"), + "folder"=>$match[1] + ); + } else { + $err->raise("sta2",3); + return false; + } + } + + /* ----------------------------------------------------------------- */ + /** Edit a raw statistic set. + * + * This function edit a raw statistic set. + * $folder is the new destination folder inside the user space where the log + * file will be put. + * @param $id integer The raw statistic number we are changing + * @param $folder string new destination folder + * @return boolean TRUE if the set has been changed, FALSE if an error occured. + */ + function put_stats_details_raw($id,$folder) { + global $db,$err,$bro,$mem,$cuid; + $err->log("sta2","put_stats_details_raw",$id); + $db->query("SELECT count(*) AS cnt FROM stats2 WHERE id='$id' and mid='$cuid';"); + $db->next_record(); + if (!$db->f("cnt")) { + $err->raise("sta2",3); + return false; + } + // TODO : replace with ,1 on convertabsolute call, and delete "/Var/alternc.../" at the query. ??? + $folder=$bro->convertabsolute($folder); + if (substr($folder,0,1)=="/") { + $folder=substr($folder,1); + } + $lo=$mem->user["login"]; + $l=substr($lo,0,1); + $db->query("UPDATE stats2 SET folder='/var/alternc/html/$l/$lo/$folder', mid='$cuid' WHERE id='$id';"); + return true; + } + + /* ----------------------------------------------------------------- */ + /** Delete a raw statistic set + * + * This function erase the raw statistic set pointed to by $id. + * The raw log files that may be present in the folder will NOT be deleted. + * @param $id integer is the set that has to be deleted. + * @return boolean TRUE if the raw stat has been deleted, FALSE if an error occured. + */ + function delete_stats_raw($id) { + global $db,$err,$cuid; + $err->log("sta2","delete_stats_raw",$id); + $db->query("SELECT hostname FROM stats2 WHERE id='$id' and mid='$cuid';"); + if (!$db->num_rows()) { + $err->raise("sta2",3); + return false; + } + $db->next_record(); + $db->query("DELETE FROM stats2 WHERE id='$id'"); + return true; + } + + /* ----------------------------------------------------------------- */ + /** Create a new raw statistic set (raw log) + * This function create a new raw log set for the current user. + * The raw statistics allow any user to get its raw apache log put daily in + * one of its folders in its user space. + * @param $hostname string this is the domain name (hosted by the current user) + * for which we want raw logs + * @param $dir string this is the folder where we will put the raw log files. + * @return boolean TRUE if the set has been created, or FALSE if an error occured. + */ + function add_stats_raw($hostname,$dir) { + global $db,$err,$quota,$bro,$mem,$cuid; + $err->log("sta2","add_stats_raw",$hostname); + // TODO : utiliser le second param de convertabsolute pour simplification. + $dir=$bro->convertabsolute($dir); + if (substr($dir,0,1)=="/") { + $dir=substr($dir,1); + } + $lo=$mem->user["login"]; + $l=substr($lo,0,1); + if ($quota->cancreate("sta2")) { + $db->query("INSERT INTO stats2 (hostname,folder,mid) VALUES ('$hostname','/var/alternc/html/$l/$lo/$dir','$cuid')"); + return true; + } else { + $err->raise("sta2",1); + return false; + } + } + + /* ----------------------------------------------------------------- */ + /** Quota computing Hook function + * This is the quota computing hook function for sta2. It computes the + * used quota of raw stats for the current user. + * @param $name string name of the quota + * @return integer the number of service used or false if an error occured + * @access private + */ + function alternc_get_quota($name) { + global $db,$err,$cuid; + if ($name=="sta2") { + $err->log("sta2","get_quota"); + $db->query("SELECT COUNT(*) AS cnt FROM stats2 WHERE mid='$cuid'"); + $db->next_record(); + return $db->f("cnt"); + } else return false; + } + + + /* ----------------------------------------------------------------- */ + /** + * Exporte toutes les informations states brutes du compte. + * @access private + * EXPERIMENTAL 'sid' function ;) + */ + function alternc_export($tmpdir) { + global $db,$err; + $err->log("sta2","export"); + $this->get_list_raw(); + $str="\n"; + foreach ($f as $d) { + $str.=" \n"; + $str.=" ".xml_entities($s[hostname])."\n"; + $str.=" ".xml_entities($s[folder])."\n"; + $str.=" \n"; + } + $str.="\n"; + return $str; + } + + +} /* CLASSE m_sta2 */ + +?> \ No newline at end of file diff --git a/stable-1.0/bureau/class/m_trash.php b/stable-1.0/bureau/class/m_trash.php new file mode 100644 index 00000000..962a59b4 --- /dev/null +++ b/stable-1.0/bureau/class/m_trash.php @@ -0,0 +1,97 @@ +expiration_date_db=$expiration_date_db; + $this->expiration_date=strtotime($this->expiration_date_db); + if ($this->expiration_date_db) $this->is_trash=true; + } + + function human_display() { + return strftime("%d/%m/%Y",$this->expiration_date); + } + + function getfromform() { + $fields = array ( + "istrash" => array ("request", "boolean", false), + "trash_type_expiration" => array ("request", "string", ""), + "trash_exp_in_value" => array ("request", "string", ""), + "trash_exp_in_unit" => array ("request", "string", ""), + "trash_datepicker" => array ("request", "string", ""), + ); + $champs=getFields($fields); + foreach($champs as $k=>$v) $$k = $v; + + if (!$istrash) $trash_type_expiration="no_exp"; + + switch($trash_type_expiration) { + case "trash_at_x": + // We can use date_parse_from_format if we have php 5.3 + //$this->expiration_date=date_parse_from_format("%d/%m/%Y",$trash_datepicker); + $mydate=strptime($trash_datepicker, "%d/%m/%Y"); + if ($mydate){ + $this->expiration_date=new DateTime("@".mktime( 0, 0, 0, $mydate['tm_mon']+1, $mydate['tm_mday']+1, 1900+$mydate['tm_year'])); + } else { + $this->expiration_date=new DateTime("@".(time() + (7*24*3600))); + } + $this->is_trash=true; + break; + case "trash_in_x": + $this->is_trash=true; + switch ($trash_exp_in_unit) { + case "weeks": + $trash_unit = 7*24*3600; + break; + case "days": + $trash_unit = 24*3600; + break; + case "hours": + $trash_unit = 3600; + break; + } + $this->expiration_date= new DateTime("@".(time() + ($trash_exp_in_value*$trash_unit)) ); + break; + case "no_exp": + $this->is_trash=false; + break; + default: + $this->is_trash=false; + } // switch + + if (!is_null($this->expiration_date)) $this->expiration_date_db=$this->expiration_date->format('Y-m-d H:i:s'); + } + +} diff --git a/stable-1.0/bureau/class/mime.php b/stable-1.0/bureau/class/mime.php new file mode 100644 index 00000000..84d898a5 --- /dev/null +++ b/stable-1.0/bureau/class/mime.php @@ -0,0 +1,178 @@ + "text/css", + "csv" => "text/comma-separated-values", + "dia" => "application/x-dia", + "doc" => "application/msword", + "dot" => "application/msword", + "epf" => "application/postscript", + "gif" => "image/gif", + "hqx" => "application/mac-binhex40", + "htm" => "text/html", + "html"=> "text/html", + "jpeg" => "image/jpeg", + "jpg" => "image/jpeg", + "m3u" => "audio/mpegurl", + "mp3" => "audio/mpeg", + "ogg" => "application/ogg", + "pdf" => "application/pdf", + "php" => "text/plain", + "png" => "image/png", + "pps" => "application/powerpoint", + "ppt" => "application/powerpoint", + "ps" => "application/postscript", + "psd" => "image/psd", + "ra" => "audio/x-pn-realaudio", + "ram" => "audio/x-pn-realaudio", + "rar" => "application/rar", + "rm" => "audio/x-pn-realaudio", + "rtf" => "text/rtf", + "swf" => "application/x-shockwave-flash", + "sxc" => "application/vnd.sun.xml.calc", + "sxd" => "application/vnd.sun.xml.draw", + "sxi" => "application/vnd.sun.xml.impress", + "sxw" => "application/vnd.sun.xml.writer", + "tif" => "image/tiff", + "tiff" => "image/tiff", + "txt" => "text/plain", + "vcf" => "text/x-vCard", + "vcs" => "text/x-vCalendar", + "xcf" => "image/xcf", + "xls" => "application/vnd.ms-excel", + "zip" => "application/zip", + ); + + $bro_icon= + array( + "css" => "txt", + "csv" => "xls", + "dia" => "jpg", + "doc" => "doc", + "dot" => "doc", + "epf" => "txt", + "gif" => "jpg", + "hqx" => "exe", + "htm" => "htm", + "html"=> "htm", + "jpeg" => "jpg", + "jpg" => "jpg", + "m3u" => "m3u", + "mp3" => "wav", + "ogg" => "wav", + "pdf" => "pdf", + "php" => "php", + "png" => "jpg", + "pps" => "ppt", + "ppt" => "ppt", + "ps" => "txt", + "psd" => "jpg", + "ra" => "ra", + "ram" => "ra", + "rar" => "zip", + "rm" => "ra", + "rtf" => "doc", + "swf" => "swf", + "sxc" => "sxc", + "sxd" => "sxd", + "sxi" => "sxi", + "sxw" => "sxw", + "tif" => "jpg", + "tiff" => "jpg", + "txt" => "txt", + "vcf" => "file", + "vcs" => "file", + "xcf" => "jpg", + "xls" => "xls", + "zip" => "zip", + ); + + $bro_type= + array( + "css" => _("CSS Stylesheet"), + "csv" => _("Comma Separated Values data"), + "dia" => _("DIA Diagram"), + "doc" => _("Word Document"), + "dot" => _("Word Document Template"), + "epf" => _("Encapsulated Postscript"), + "gif" => _("GIF Image"), + "hqx" => _("Macintosh Executable"), + "htm" => _("HTML Document"), + "html"=> _("HTML Document"), + "jpeg" => _("JPEG Image"), + "jpg" => _("JPEG Image"), + "m3u" => _("Music Playlist"), + "mp3" => _("MP3 Music File"), + "ogg" => _("Ogg Music File"), + "pdf" => _("Acrobat PDF"), + "php" => _("PHP Source"), + "png" => _("PNG Image"), + "pps" => _("Powerpoint Slideshow"), + "ppt" => _("Powerpoint Slideshow"), + "ps" => _("Postscript Document"), + "psd" => _("Photoshop Image"), + "rar" => _("Rar Compressed Files"), + "rtf" => _("Rich Text Document"), + "sxc" => _("OpenOffice Spreadsheet"), + "sxd" => _("OpenOffice Drawing"), + "sxi" => _("OpenOffice Presentation"), + "sxw" => _("OpenOffice Writer"), + "tif" => _("TIFF Image"), + "tiff" => _("TIFF Image"), + "txt" => _("Text Document"), + "vcf" => _("Virtual Card"), + "vcs" => _("Virtual Card"), + "xcf" => _("Gimp Image"), + "xls" => _("Excel Spreadsheet"), + "zip" => _("Zip Compressed Files"), + "sxw" => _("Flash Animation"), + "ra" => _("Real Media File"), + "rm" => _("Real Media File"), + "ram" => _("Real Media File"), + ); + +} +?> diff --git a/stable-1.0/bureau/class/reset_stats_conf.php b/stable-1.0/bureau/class/reset_stats_conf.php new file mode 100644 index 00000000..28f84a40 --- /dev/null +++ b/stable-1.0/bureau/class/reset_stats_conf.php @@ -0,0 +1,19 @@ +enabled) { + __("This page is restricted to authorized staff"); + exit(); +} + +$db->query("SELECT id,hostname FROM stats;"); +while ($db->next_record()) { + $d[]=$db->Record; +} +foreach ($d as $r) { + echo "Stats de ".$r[0]." ".$r[1]."
            \n"; flush(); + $stats->_createconf($r[0],1); +} + +?> \ No newline at end of file diff --git a/stable-1.0/bureau/class/variables.php b/stable-1.0/bureau/class/variables.php new file mode 100644 index 00000000..070f0ea1 --- /dev/null +++ b/stable-1.0/bureau/class/variables.php @@ -0,0 +1,130 @@ +query('SELECT * FROM `variable`'); + while ($db->next_record($result)) { + /* maybe the data is *not* serialized, in that case, take it verbatim */ + $variable = $db->Record; + if (($variables[$variable['name']] = @unserialize($variable['value'])) === FALSE) { + $variables[$variable['name']] = $variable['value']; + } + } + + foreach ($conf as $name => $value) { + $variables[$name] = $value; + } + + return $variables; +} + +/** + * Initialize the global $conf array if necessary + * + * @global $conf the global conf array + * @uses variable_init() + */ +function variable_init_maybe() { + global $conf; + if (!isset($conf)) { + $conf = variable_init(); + } +} + +/** + * Return a persistent variable. + * + * @param $name + * The name of the variable to return. + * @param $default + * The default value to use if this variable has never been set. + * @return + * The value of the variable. + * @global $conf + * A cache of the configuration. + */ +function variable_get($name, $default = null) { + global $conf; + + variable_init_maybe(); + return isset($conf[$name]) ? $conf[$name] : $default; +} + +/** + * Set a persistent variable. + * + * @param $name + * The name of the variable to set. + * @param $value + * The value to set. This can be any PHP data type; these functions take care + * of serialization as necessary. + */ +function variable_set($name, $value) { + global $conf, $db; + + $conf[$name] = $value; + if (is_object($value) || is_array($value)) { + $value = serialize($value); + } + @$db->query("INSERT IGNORE INTO `variable` (name, value) VALUES ('".$name."', '".$value."')"); + if ($db->affected_rows() < 1) { + $db->query("UPDATE `variable` SET value = '".$value."' WHERE name = '".$name."'"); + } + + variable_init_maybe(); +} + +/** + * Unset a persistent variable. + * + * @param $name + * The name of the variable to undefine. + */ +function variable_del($name) { + global $conf, $db; + + $db->query("DELETE FROM `variable` WHERE name = '".$name."'"); + + unset($conf[$name]); +} +?> diff --git a/stable-1.0/bureau/index.php b/stable-1.0/bureau/index.php new file mode 100644 index 00000000..55485cba --- /dev/null +++ b/stable-1.0/bureau/index.php @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/stable-1.0/bureau/locales/Makefile b/stable-1.0/bureau/locales/Makefile new file mode 100644 index 00000000..182c83e2 --- /dev/null +++ b/stable-1.0/bureau/locales/Makefile @@ -0,0 +1,12 @@ +all: manual.pot messages.pot */LC_MESSAGES/manual.po */LC_MESSAGES/messages.po + + +messages.pot: ../*/*.php + [ -r $@ ] || touch $@ + xgettext --force-po --omit-header -o $@ --keyword=__ --keyword=_ -L PHP --from-code UTF-8 -j $^ + +%/LC_MESSAGES/messages.po: messages.pot + msgmerge -v -U $@ $^ + +%/LC_MESSAGES/manual.po: manual.pot + msgmerge -v -U $@ $^ diff --git a/stable-1.0/bureau/locales/README b/stable-1.0/bureau/locales/README new file mode 100644 index 00000000..ab6f871a --- /dev/null +++ b/stable-1.0/bureau/locales/README @@ -0,0 +1,46 @@ +Le système de langue fonctionne ainsi : + +dans bureau/locales/ on trouve un DOSSIER par langue sous la forme +major_minor/ +exemple : fr_FR en_US ... +dans lequel on a un sous-dossier LC_MESSAGES +dans lequel on a des fichiers .po en vrac (normalement 1 ou 2 fichiers .po par module d'AlternC.) + +Le fichier alternc.mo est donc construit à partir de TOUS les fichiers .po d'une même langue. + +Pour mettre a jour les fichiers .po a partir des sources : + +cd bureau/locales +make + +puis allez voir les fichiers .po pour les mettre a jour (cherchez les fuzzy et les msgstr vide a remplir) + +une fois les modifications effectuees, lancer svn commit pour valider vos modifications dans les sources officielles d'AlternC. + +Howto translate AlternC in a new language +========================================= + +This folder contains po and pot files, who are templates that allows you +to translate AlternC in any language. + +1. How to add a language : +- create a folder with your iso language code (ex: de_DE for + German from Germany see `dpkg-reconfigure locales` for available codes.) +- create a subfolder LC_MESSAGES in this folder +- copy .po and .pot files and rename .pot to .po +- Translate them ;) +- Send them to us so that we can add them to the next release or as a language pack. + +2. How to update language files. + +When the programm is updated, the po files in locales/ are changed to +reflect the new developped features. + +You can just call the makefile to have the files regenerated: + +cd bureau/locales +make + +from "locales/" to update your language po files. New strings will have +an empty "msgstr" value, and obsoletes one will be commented out with +#~ diff --git a/stable-1.0/bureau/locales/de_DE/LC_MESSAGES/messages.po b/stable-1.0/bureau/locales/de_DE/LC_MESSAGES/messages.po new file mode 100644 index 00000000..5e78ab84 --- /dev/null +++ b/stable-1.0/bureau/locales/de_DE/LC_MESSAGES/messages.po @@ -0,0 +1,2792 @@ +#: ../admin/adm_add.php:36 ../admin/adm_deactivate.php:41 +#: ../admin/adm_defquotas.php:35 ../admin/adm_dnsweberror.php:33 +#: ../admin/adm_doadd.php:35 ../admin/adm_dodefquotas.php:35 +#: ../admin/adm_dodel.php:33 ../admin/adm_dodel.php:45 +#: ../admin/adm_doedit.php:35 ../admin/adm_doedit.php:42 +#: ../admin/adm_domlock.php:33 ../admin/adm_doms.php:33 +#: ../admin/adm_domstypedoedit.php:4 ../admin/adm_domstypeedit.php:32 +#: ../admin/adm_domstype.php:33 ../admin/adm_domstyperegenerate.php:4 +#: ../admin/adm_donosu.php:33 ../admin/adm_dorenew.php:34 +#: ../admin/adm_dorenew.php:38 ../admin/adm_dosu.php:33 +#: ../admin/adm_edit.php:36 ../admin/adm_edit.php:48 ../admin/adm_list.php:37 +#: ../admin/adm_list.php:58 ../admin/adm_login.php:74 +#: ../admin/adm_login.php:86 ../admin/adm_mxaccount.php:33 +#: ../admin/adm_panel.php:33 ../admin/adm_passpolicy.php:30 +#: ../admin/adm_quotadoedit.php:33 ../admin/adm_quotaedit.php:34 +#: ../admin/adm_slaveaccount.php:33 ../admin/adm_slaveip.php:33 +#: ../admin/adm_tldadd.php:33 ../admin/adm_tlddoadd.php:33 +#: ../admin/adm_tlddoedit.php:33 ../admin/adm_tldedit.php:33 +#: ../admin/adm_tld.php:33 ../admin/adm_variables.php:33 +#: ../admin/quotas_users.php:10 ../class/reset_stats_conf.php:6 +msgid "This page is restricted to authorized staff" +msgstr "" + +#: ../admin/adm_add.php:46 +msgid "New AlternC account" +msgstr "" + +#: ../admin/adm_add.php:56 ../admin/adm_edit.php:69 +#: ../admin/adm_quotaedit.php:68 ../admin/ftp_add.php:54 +#: ../admin/ftp_edit.php:59 ../admin/ftp_list.php:72 +#: ../admin/hta_adduser.php:53 ../admin/hta_edit.php:62 +#: ../admin/hta_edit.php:102 ../admin/index.php:76 +#: ../admin/sql_getparam.php:50 ../admin/sql_list.php:94 +#: ../admin/sql_passchg.php:51 ../admin/sql_users_add.php:64 +msgid "Username" +msgstr "" + +#: ../admin/adm_add.php:60 +msgid "Initial password" +msgstr "" + +#: ../admin/adm_add.php:64 ../admin/adm_edit.php:89 ../admin/ftp_add.php:65 +#: ../admin/ftp_edit.php:71 ../admin/hta_adduser.php:61 +#: ../admin/hta_edit.php:110 ../admin/hta_edituser.php:55 +#: ../admin/mail_add.php:71 ../admin/mail_edit.php:79 +#: ../admin/sql_users_add.php:72 ../admin/sql_users_password.php:59 +msgid "Confirm password" +msgstr "" + +#: ../admin/adm_add.php:68 ../admin/adm_edit.php:93 +msgid "Can he change its password" +msgstr "" + +#: ../admin/adm_add.php:70 ../admin/adm_dodefquotas.php:73 +#: ../admin/adm_dodel.php:81 ../admin/adm_domstype.php:83 +#: ../admin/adm_domstype.php:84 ../admin/adm_domstype.php:85 +#: ../admin/adm_edit.php:78 ../admin/adm_edit.php:95 +#: ../admin/adm_passpolicy.php:112 ../admin/adm_passpolicy.php:158 +#: ../admin/bro_main.php:94 ../admin/dom_dodel.php:74 +#: ../admin/dom_edit.php:182 ../admin/dom_edit.php:194 +#: ../admin/dom_subdel.php:71 ../admin/mail_add.php:65 +#: ../admin/mail_edit.php:73 ../admin/sql_bck.php:87 ../admin/sql_del.php:81 +#: ../admin/sql_users_del.php:70 ../admin/trash_dateselect.php:39 +msgid "No" +msgstr "Nein" + +#: ../admin/adm_add.php:71 ../admin/adm_dodefquotas.php:72 +#: ../admin/adm_dodel.php:80 ../admin/adm_domstype.php:83 +#: ../admin/adm_domstype.php:84 ../admin/adm_domstype.php:85 +#: ../admin/adm_edit.php:79 ../admin/adm_edit.php:96 +#: ../admin/adm_passpolicy.php:113 ../admin/adm_passpolicy.php:158 +#: ../admin/bro_main.php:93 ../admin/dom_dodel.php:74 +#: ../admin/dom_edit.php:181 ../admin/dom_edit.php:193 +#: ../admin/dom_subdel.php:70 ../admin/mail_add.php:66 +#: ../admin/mail_edit.php:74 ../admin/sql_bck.php:88 ../admin/sql_del.php:81 +#: ../admin/sql_users_del.php:70 ../admin/trash_dateselect.php:40 +msgid "Yes" +msgstr "Ja" + +#: ../admin/adm_add.php:75 ../admin/adm_edit.php:100 +#, fuzzy +msgid "Notes" +msgstr "Bytes" + +#: ../admin/adm_add.php:79 ../admin/adm_edit.php:104 +msgid "Surname" +msgstr "Name" + +#: ../admin/adm_add.php:79 ../admin/adm_edit.php:104 +msgid "First Name" +msgstr "Vorname" + +#: ../admin/adm_add.php:83 ../admin/adm_edit.php:108 ../admin/mail_add.php:60 +#: ../admin/mail_list.php:104 +msgid "Email address" +msgstr "" + +#: ../admin/adm_add.php:87 ../admin/adm_dodefquotas.php:43 +#: ../admin/adm_dodefquotas.php:45 ../admin/adm_dodefquotas.php:52 +#: ../admin/adm_dodefquotas.php:54 ../admin/adm_edit.php:112 +msgid "Account type" +msgstr "" + +#: ../admin/adm_add.php:105 +#, php-format +msgid "Install the domain" +msgstr "" + +#: ../admin/adm_add.php:121 +msgid "Create this AlternC account" +msgstr "" + +#: ../admin/adm_add.php:122 ../admin/adm_deactivate.php:61 +#: ../admin/adm_domstypeedit.php:122 ../admin/adm_edit.php:131 +#: ../admin/adm_quotaedit.php:87 ../admin/adm_tldadd.php:65 +#: ../admin/adm_tldedit.php:70 ../admin/bro_pref.php:134 +#: ../admin/browseforfolder.php:136 ../admin/ftp_add.php:68 +#: ../admin/ftp_edit.php:75 ../admin/hta_adduser.php:67 +#: ../admin/mail_add.php:88 ../admin/mail_edit.php:98 ../admin/sql_bck.php:105 +#: ../admin/sql_passchg.php:57 ../admin/sql_users_add.php:78 +#: ../admin/sql_users_password.php:65 +msgid "Cancel" +msgstr "" + +#: ../admin/adm_deactivate.php:36 +msgid "Missing uid" +msgstr "" + +#: ../admin/adm_deactivate.php:47 +#, fuzzy +msgid "User does not exist" +msgstr "Miglied '%s' existiert nicht" + +#: ../admin/adm_deactivate.php:52 ../admin/adm_deactivate.php:60 +msgid "Confirm" +msgstr "" + +#: ../admin/adm_deactivate.php:53 +msgid "WARNING: experimental feature, use at your own risk" +msgstr "" + +#: ../admin/adm_deactivate.php:54 +msgid "" +"The following domains will be deactivated and redirected to the URL entered " +"in the following box. A backup of the domain configuration will be displayed " +"as a serie of SQL request that you can run to restore the current " +"configuration if you want. Click confirm if you are sure you want to " +"deactivate all this user's domains." +msgstr "" + +#: ../admin/adm_deactivate.php:59 +msgid "Redirection URL:" +msgstr "" + +#: ../admin/adm_deactivate.php:64 +msgid "Domains of user: " +msgstr "" + +#: ../admin/adm_deactivate.php:67 +msgid "Missing redirect url." +msgstr "" + +#: ../admin/adm_deactivate.php:87 +#, php-format +msgid "-- Redirecting all domains and subdomains of the user %s to %s\n" +msgstr "" + +#: ../admin/adm_defquotas.php:42 ../admin/adm_panel.php:54 +msgid "Change the default quotas" +msgstr "" + +#: ../admin/adm_defquotas.php:55 +msgid "Add account type" +msgstr "" + +#: ../admin/adm_defquotas.php:70 +msgid "Delete account type" +msgstr "" + +#: ../admin/adm_defquotas.php:75 +msgid "" +"Here is the list of the quotas on the server for the new accounts. If you " +"want to change them, enter new values" +msgstr "" + +#: ../admin/adm_defquotas.php:89 +msgid "Accounts of type" +msgstr "" + +#: ../admin/adm_defquotas.php:91 ../admin/adm_list.php:128 +#: ../admin/adm_list.php:173 ../admin/adm_list.php:193 +#: ../admin/menu_quota.php:52 +msgid "Quotas" +msgstr "Quotas" + +#: ../admin/adm_defquotas.php:91 +msgid "Default Value" +msgstr "" + +#: ../admin/adm_defquotas.php:109 +msgid "Edit the default quotas" +msgstr "" + +#: ../admin/adm_dnsweberror.php:40 +msgid "Domains and Websites having errors" +msgstr "" + +#: ../admin/adm_dnsweberror.php:50 +msgid "List of the websites having errors in the domain database." +msgstr "" + +#: ../admin/adm_dnsweberror.php:54 ../admin/adm_dnsweberror.php:87 +msgid "Uid" +msgstr "" + +#: ../admin/adm_dnsweberror.php:55 ../admin/adm_dnsweberror.php:88 +#: ../admin/adm_list.php:124 ../admin/adm_list.php:207 +#: ../admin/adm_list.php:208 ../admin/adm_list.php:209 +#: ../admin/quotas_oneuser.php:8 ../admin/quotas_users.php:168 +msgid "Account" +msgstr "" + +#: ../admin/adm_dnsweberror.php:56 ../admin/adm_dnsweberror.php:89 +#: ../admin/dom_add.php:57 ../admin/sta2_list.php:58 +msgid "Domain name" +msgstr "" + +#: ../admin/adm_dnsweberror.php:57 +msgid "FQDN" +msgstr "" + +#: ../admin/adm_dnsweberror.php:58 ../admin/adm_variables.php:57 +msgid "Value" +msgstr "" + +#: ../admin/adm_dnsweberror.php:59 ../admin/adm_domstypeedit.php:76 +#: ../admin/adm_domstype.php:59 +msgid "Description" +msgstr "" + +#: ../admin/adm_dnsweberror.php:60 +msgid "Web Result field" +msgstr "" + +#: ../admin/adm_dnsweberror.php:84 +msgid "List of the domain names having errors in the domain database." +msgstr "" + +#: ../admin/adm_dnsweberror.php:90 +msgid "DNS Result field" +msgstr "" + +#: ../admin/adm_doadd.php:40 ../admin/adm_doedit.php:47 +#: ../admin/ftp_doadd.php:33 ../admin/ftp_doedit.php:36 +#: ../admin/hta_doadduser.php:33 ../admin/hta_doedituser.php:41 +#: ../admin/mail_doadd.php:44 ../admin/mail_doedit.php:49 +msgid "Passwords do not match" +msgstr "" + +#: ../admin/adm_doadd.php:71 +msgid "The new member has been successfully created" +msgstr "" + +#: ../admin/adm_dodefquotas.php:43 +msgid "added" +msgstr "" + +#: ../admin/adm_dodefquotas.php:45 +msgid "could not be added" +msgstr "" + +#: ../admin/adm_dodefquotas.php:52 +msgid "deleted" +msgstr "" + +#: ../admin/adm_dodefquotas.php:54 +msgid "could not be deleted" +msgstr "" + +#: ../admin/adm_dodefquotas.php:63 +#, php-format +msgid "Deleting quota %s" +msgstr "" + +#: ../admin/adm_dodefquotas.php:69 +msgid "WARNING : Confirm the deletion of the quota" +msgstr "" + +#: ../admin/adm_dodefquotas.php:92 +msgid "Default quotas successfully changed" +msgstr "" + +#: ../admin/adm_dodefquotas.php:94 +msgid "Default quotas could not be set." +msgstr "" + +#: ../admin/adm_dodel.php:49 +#, php-format +msgid "Member '%s' does not exist" +msgstr "Miglied '%s' existiert nicht" + +#: ../admin/adm_dodel.php:51 +#, php-format +msgid "Member %s successfully deleted" +msgstr "" + +#: ../admin/adm_dodel.php:58 +msgid "Please check the accounts you want to delete" +msgstr "" + +#: ../admin/adm_dodel.php:66 +#, php-format +msgid "Deleting users" +msgstr "" + +#: ../admin/adm_dodel.php:70 +msgid "WARNING : Confirm the deletion of the users" +msgstr "" + +#: ../admin/adm_doedit.php:60 +msgid "The member has been successfully edited" +msgstr "" + +#: ../admin/adm_doms.php:40 ../admin/adm_panel.php:53 +msgid "Manage installed domains" +msgstr "" + +#: ../admin/adm_doms.php:53 +msgid "" +"Here is the list of the domains installed on this server. You can remove a " +"domain if it does not exist or does not point to our server anymore. You can " +"also set the 'Lock' flag on a domain so that the user will not be able to " +"change any DNS parameter or delete this domain from his account." +msgstr "" + +#: ../admin/adm_doms.php:56 +msgid "" +"The domain OK column are green when the domain exists in the worldwide " +"registry and has a proper NS,MX and IP depending on its configuration. It is " +"red if we have serious doubts about its NS, MX or IP configuration. Contact " +"the user of this domain or a system administrator." +msgstr "" + +#: ../admin/adm_doms.php:59 +msgid "If you want to force the check of NS, MX, IP on domains, click the link" +msgstr "" + +#: ../admin/adm_doms.php:59 +msgid "Show domain list with refreshed checked NS, MX, IP information" +msgstr "" + +#: ../admin/adm_doms.php:63 ../admin/adm_mxaccount.php:81 +#: ../admin/adm_slaveaccount.php:80 ../admin/adm_slaveip.php:80 +msgid "Action" +msgstr "" + +#: ../admin/adm_doms.php:63 +msgid "Domain" +msgstr "" + +#: ../admin/adm_doms.php:63 +msgid "Creator" +msgstr "" + +#: ../admin/adm_doms.php:63 ../admin/adm_doms.php:81 ../admin/adm_list.php:166 +#: ../admin/adm_list.php:191 +msgid "Connect as" +msgstr "" + +#: ../admin/adm_doms.php:63 +msgid "OK?" +msgstr "" + +#: ../admin/adm_doms.php:63 ../admin/dom_edit.php:97 +msgid "Status" +msgstr "" + +#: ../admin/adm_doms.php:72 +msgid "Locked Domain" +msgstr "" + +#: ../admin/adm_doms.php:75 +msgid "Unlock" +msgstr "" + +#: ../admin/adm_doms.php:75 +msgid "Lock" +msgstr "" + +#: ../admin/adm_domstypeedit.php:58 +msgid "Edit a domain type" +msgstr "" + +#: ../admin/adm_domstypeedit.php:72 ../admin/adm_domstype.php:58 +#, fuzzy +msgid "Name" +msgstr "Neuer Mitglied" + +#: ../admin/adm_domstypeedit.php:80 +msgid "Target type" +msgstr "" + +#: ../admin/adm_domstypeedit.php:90 ../admin/adm_domstype.php:61 +msgid "Entry" +msgstr "" + +#: ../admin/adm_domstypeedit.php:94 +msgid "Compatibility" +msgstr "" + +#: ../admin/adm_domstypeedit.php:94 ../admin/adm_domstype.php:62 +msgid "Enter comma-separated name of other types" +msgstr "" + +#: ../admin/adm_domstypeedit.php:98 ../admin/dom_edit.php:125 +msgid "Enabled" +msgstr "" + +#: ../admin/adm_domstypeedit.php:108 +msgid "Do only a DNS entry" +msgstr "" + +#: ../admin/adm_domstypeedit.php:112 +msgid "Domain must have our DNS" +msgstr "" + +#: ../admin/adm_domstypeedit.php:116 +msgid "Is it an advanced option?" +msgstr "" + +#: ../admin/adm_domstypeedit.php:121 +msgid "Change this domain type" +msgstr "" + +#: ../admin/adm_domstype.php:40 ../admin/adm_panel.php:65 +msgid "Manage domains type" +msgstr "" + +#: ../admin/adm_domstype.php:42 +msgid "" +"If you don't know what this page is about, don't touch anything, and read " +"AlternC documentation about domain types" +msgstr "" + +#: ../admin/adm_domstype.php:52 +msgid "Here is the list of domain types." +msgstr "" + +#: ../admin/adm_domstype.php:54 +msgid "Create a domain type" +msgstr "" + +#: ../admin/adm_domstype.php:60 +msgid "Target" +msgstr "" + +#: ../admin/adm_domstype.php:62 +msgid "Compatible with" +msgstr "" + +#: ../admin/adm_domstype.php:63 +msgid "Enabled?" +msgstr "" + +#: ../admin/adm_domstype.php:64 +msgid "Only DNS?" +msgstr "" + +#: ../admin/adm_domstype.php:65 +msgid "Need to be DNS?" +msgstr "" + +#: ../admin/adm_domstype.php:66 +msgid "Advanced?" +msgstr "" + +#: ../admin/adm_domstype.php:75 ../admin/adm_list.php:170 +#: ../admin/adm_list.php:192 ../admin/adm_passpolicy.php:152 +#: ../admin/adm_tld.php:76 ../admin/dom_edit.php:106 ../admin/ftp_list.php:82 +#: ../admin/mail_list.php:113 ../admin/sta2_list.php:68 +msgid "Edit" +msgstr "" + +#: ../admin/adm_domstype.php:76 +msgid "Regenerate" +msgstr "" + +#: ../admin/adm_donosu.php:45 +msgid "This account is now a normal account" +msgstr "" + +#: ../admin/adm_dorenew.php:46 +msgid "The member has been successfully renewed" +msgstr "" + +#: ../admin/adm_dosu.php:45 +msgid "This account is now an administrator account" +msgstr "" + +#: ../admin/adm_edit.php:57 +msgid "Member Edition" +msgstr "" + +#: ../admin/adm_edit.php:73 +msgid "Account Enabled?" +msgstr "" + +#: ../admin/adm_edit.php:76 +msgid "You cannot disable your own account." +msgstr "" + +#: ../admin/adm_edit.php:85 ../admin/adm_mxaccount.php:81 +#: ../admin/adm_mxaccount.php:101 ../admin/adm_slaveaccount.php:80 +#: ../admin/adm_slaveaccount.php:100 ../admin/ftp_add.php:64 +#: ../admin/ftp_edit.php:70 ../admin/hta_adduser.php:57 +#: ../admin/hta_edit.php:106 ../admin/index.php:77 ../admin/index.php:94 +#: ../admin/sql_getparam.php:54 ../admin/sql_list.php:95 +#: ../admin/sql_passchg.php:52 ../admin/sql_users_add.php:68 +#: ../admin/sql_users_list.php:52 ../admin/sql_users_password.php:55 +msgid "Password" +msgstr "Passwört" + +#: ../admin/adm_edit.php:123 +msgid "Reset quotas to default?" +msgstr "" + +#: ../admin/adm_edit.php:126 +msgid "Period" +msgstr "" + +#: ../admin/adm_edit.php:130 +msgid "Edit this account" +msgstr "" + +#: ../admin/adm_edit.php:143 +msgid "Renew for" +msgstr "" + +#: ../admin/adm_edit.php:144 +msgid "period(s)" +msgstr "" + +#: ../admin/adm_edit.php:147 +msgid "Renew" +msgstr "" + +#: ../admin/adm_edit.php:160 +msgid "This account is a super-admin account" +msgstr "" + +#: ../admin/adm_edit.php:162 +msgid "" +"There is only one administrator account, you cannot turn this account back " +"to normal" +msgstr "" + +#: ../admin/adm_edit.php:165 +msgid "Turn this account back to normal" +msgstr "" + +#: ../admin/adm_edit.php:168 +msgid "Make this account a super admin one" +msgstr "" + +#: ../admin/adm_edit.php:175 +#, php-format +msgid "Account created by %s" +msgstr "" + +#: ../admin/adm_list.php:66 +msgid "AlternC account list" +msgstr "" + +#: ../admin/adm_list.php:75 +msgid "Here is the list of hosted AlternC accounts" +msgstr "" + +#: ../admin/adm_list.php:75 +#, php-format +msgid "%s accounts" +msgstr "" + +#: ../admin/adm_list.php:79 +msgid "List all AlternC accounts" +msgstr "" + +#: ../admin/adm_list.php:89 +msgid "Or only the accounts of:" +msgstr "" + +#: ../admin/adm_list.php:94 +msgid "List only my accounts" +msgstr "" + +#: ../admin/adm_list.php:96 +msgid "Create a new AlternC account" +msgstr "" + +#: ../admin/adm_list.php:100 +msgid "No account defined for now" +msgstr "" + +#: ../admin/adm_list.php:114 ../admin/adm_list.php:198 +#: ../admin/adm_list.php:281 ../admin/ftp_list.php:90 +msgid "Delete checked accounts" +msgstr "" + +#: ../admin/adm_list.php:118 ../admin/adm_list.php:202 +msgid "Minimal view" +msgstr "" + +#: ../admin/adm_list.php:119 ../admin/adm_list.php:203 +msgid "Complete view" +msgstr "" + +#: ../admin/adm_list.php:125 +msgid "Manager" +msgstr "" + +#: ../admin/adm_list.php:126 +msgid "Created by" +msgstr "" + +#: ../admin/adm_list.php:127 +msgid "Created on" +msgstr "" + +#: ../admin/adm_list.php:129 +msgid "Last login" +msgstr "" + +#: ../admin/adm_list.php:130 +msgid "Last ip" +msgstr "" + +#: ../admin/adm_list.php:131 +msgid "Fails" +msgstr "" + +#: ../admin/adm_list.php:132 ../admin/main.php:80 +msgid "Expiry" +msgstr "" + +#: ../admin/adm_list.php:177 ../admin/dom_edit.php:126 +msgid "Disable" +msgstr "" + +#: ../admin/adm_list.php:191 ../admin/adm_list.php:229 +#: ../admin/adm_list.php:246 ../admin/adm_list.php:266 +msgid "C" +msgstr "" + +#: ../admin/adm_list.php:192 ../admin/adm_list.php:230 +#: ../admin/adm_list.php:247 ../admin/adm_list.php:267 +msgid "E" +msgstr "" + +#: ../admin/adm_list.php:193 ../admin/adm_list.php:232 +#: ../admin/adm_list.php:249 ../admin/adm_list.php:269 +msgid "Q" +msgstr "" + +#: ../admin/adm_login.php:45 ../admin/adm_login.php:52 +msgid "Your authentication information are incorrect" +msgstr "" + +#: ../admin/adm_login.php:111 +msgid "Member login" +msgstr "" + +#: ../admin/adm_mxaccount.php:48 ../admin/adm_slaveaccount.php:48 +msgid "The requested account has been deleted. It is now denied." +msgstr "" + +#: ../admin/adm_mxaccount.php:54 ../admin/adm_slaveaccount.php:54 +msgid "The requested account address has been created. It is now allowed." +msgstr "" + +#: ../admin/adm_mxaccount.php:63 ../admin/adm_panel.php:63 +msgid "Manage allowed accounts for secondary mx" +msgstr "" + +#: ../admin/adm_mxaccount.php:77 +msgid "" +"Here is the list of the allowed accounts for secondary mx management. You " +"can configure the alternc-secondarymx package on your secondary mx server " +"and give him the login/pass that will grant him access to your server's mx-" +"hosted domain list. " +msgstr "" + +#: ../admin/adm_mxaccount.php:81 ../admin/adm_mxaccount.php:101 +#: ../admin/adm_slaveaccount.php:80 ../admin/adm_slaveaccount.php:100 +msgid "Login" +msgstr "" + +#: ../admin/adm_mxaccount.php:89 ../admin/adm_slaveaccount.php:88 +#: ../admin/adm_slaveip.php:88 ../admin/bro_main.php:269 +#: ../admin/dom_edit.php:109 +msgid "Delete" +msgstr "" + +#: ../admin/adm_mxaccount.php:98 +msgid "" +"If you want to allow a new server to access your mx-hosted domain list, give " +"him an account." +msgstr "" + +#: ../admin/adm_mxaccount.php:107 ../admin/adm_slaveaccount.php:106 +msgid "Add this account to the allowed list" +msgstr "" + +#: ../admin/adm_panel.php:40 ../admin/menu_adm.php:44 +msgid "Admin Control Panel" +msgstr "" + +#: ../admin/adm_panel.php:51 ../admin/adm_tldadd.php:40 +#: ../admin/adm_tldedit.php:52 ../admin/adm_tld.php:50 +msgid "Manage allowed domains (TLD)" +msgstr "" + +#: ../admin/adm_panel.php:52 +#, fuzzy +msgid "Password Policies" +msgstr "Passwört" + +#: ../admin/adm_panel.php:58 +msgid "Advanced features" +msgstr "" + +#: ../admin/adm_panel.php:61 ../admin/adm_slaveip.php:62 +msgid "Manage allowed ip for slave zone transfers" +msgstr "" + +#: ../admin/adm_panel.php:62 ../admin/adm_slaveaccount.php:62 +msgid "Manage allowed accounts for slave zone transfers" +msgstr "" + +#: ../admin/adm_panel.php:64 ../admin/adm_variables.php:47 +msgid "Configure AlternC variables" +msgstr "" + +#: ../admin/adm_panel.php:66 +msgid "DNS and website having errors" +msgstr "" + +#: ../admin/adm_panel.php:67 +msgid "Account creation statistics" +msgstr "" + +#: ../admin/adm_passpolicy.php:49 +msgid "Manage Password Policy" +msgstr "" + +#: ../admin/adm_passpolicy.php:62 ../admin/adm_passpolicy.php:77 +msgid "Policy not found" +msgstr "" + +#: ../admin/adm_passpolicy.php:66 +msgid "Policy changed" +msgstr "" + +#: ../admin/adm_passpolicy.php:70 +msgid "Cannot edit the policy, an error occurred" +msgstr "" + +#: ../admin/adm_passpolicy.php:81 +msgid "Please choose which policy you want to apply to this password kind:" +msgstr "" + +#: ../admin/adm_passpolicy.php:89 +msgid "Minimum Password Size:" +msgstr "" + +#: ../admin/adm_passpolicy.php:96 +msgid "Maximum Password Size:" +msgstr "" + +#: ../admin/adm_passpolicy.php:103 +msgid "In how many classes of characters must be the password (at least):" +msgstr "" + +#: ../admin/adm_passpolicy.php:110 +msgid "Do we allow the password to be like the login?" +msgstr "" + +#: ../admin/adm_passpolicy.php:116 +msgid "Apply this password policy" +msgstr "" + +#: ../admin/adm_passpolicy.php:117 +msgid "Cancel and go back to the policy list" +msgstr "" + +#: ../admin/adm_passpolicy.php:120 +msgid "" +"The classes of characters are :
            1. Low-case letters (a-z)
            2. " +"Upper-case letters (A-Z)
            3. Figures (0-9)
            4. Ascii symbols (!\"#$" +"%&'()*+,-./:;<=>?@[\\]^_`)
            5. Non-Ascii symbols (accents...)" +msgstr "" + +#: ../admin/adm_passpolicy.php:133 +msgid "" +"Here is the list of the password policies for each place a password may be " +"needed in AlternC's services. For each of those password kind, you can " +"choose which policy will be applied to passwords. A policy is a minimum and " +"maximum password size, and how many classes of characters must appear in the " +"password. You can also forbid (or not) to use the login or part of it as a " +"password." +msgstr "" + +#: ../admin/adm_passpolicy.php:137 +#, fuzzy +msgid "Password Kind" +msgstr "Passwört" + +#: ../admin/adm_passpolicy.php:137 +#, fuzzy +msgid "Password Policy" +msgstr "Passwört" + +#: ../admin/adm_passpolicy.php:139 +msgid "Min Size" +msgstr "" + +#: ../admin/adm_passpolicy.php:140 +msgid "Max Size" +msgstr "" + +#: ../admin/adm_passpolicy.php:141 +msgid "Complexity" +msgstr "" + +#: ../admin/adm_passpolicy.php:142 +msgid "Allow Password=Login?" +msgstr "" + +#: ../admin/adm_quotadoedit.php:48 +msgid "The quotas has been successfully edited" +msgstr "" + +#: ../admin/adm_quotaedit.php:55 +msgid "Editing the quotas of a member" +msgstr "" + +#: ../admin/adm_quotaedit.php:69 ../admin/quota_show.php:42 +msgid "Quota" +msgstr "" + +#: ../admin/adm_quotaedit.php:69 ../admin/quota_show.php:42 +#: ../admin/quotas_users.php:153 ../admin/quotas_users.php:177 +msgid "Total" +msgstr "" + +#: ../admin/adm_quotaedit.php:69 ../admin/quota_show.php:42 +msgid "Used" +msgstr "Benützt" + +#: ../admin/adm_quotaedit.php:77 ../class/m_quota.php:99 +#: ../class/m_quota.php:107 ../class/m_quota.php:111 +msgid "quota_" +msgstr "quota_" + +#: ../admin/adm_quotaedit.php:86 +msgid "Edit the quotas" +msgstr "" + +#: ../admin/adm_slaveaccount.php:76 +msgid "" +"Here is the list of the allowed accounts for slave dns synchronization. You " +"can configure the alternc-slavedns package on your slave server and give him " +"the login/pass that will grant him access to your server's domain list. " +msgstr "" + +#: ../admin/adm_slaveaccount.php:97 +msgid "" +"If you want to allow a new server to access your domain list, give him an " +"account." +msgstr "" + +#: ../admin/adm_slaveip.php:48 +msgid "" +"The requested ip address has been deleted. It will be denied in one hour." +msgstr "" + +#: ../admin/adm_slaveip.php:54 +msgid "" +"The requested ip address has been added to the list. It will be allowed in " +"one hour." +msgstr "" + +#: ../admin/adm_slaveip.php:76 +msgid "" +"Here is the list of the allowed ip or ip class for slave dns zone transfer " +"requests (AXFR). You must add the ip address of all the slave DNS you have " +"so that those slaves will be allowed to transfer the zone files. There is " +"also some defaults ip from DNS checks made by some third-party technical " +"offices such as afnic (for .fr domains)" +msgstr "" + +#: ../admin/adm_slaveip.php:80 ../admin/adm_slaveip.php:99 +msgid "IP Address" +msgstr "" + +#: ../admin/adm_slaveip.php:96 +msgid "" +"If you want to allow an ip address or class to connect to your dns server, " +"enter it here. Choose 32 as a prefix for single ip address." +msgstr "" + +#: ../admin/adm_slaveip.php:99 +msgid "Prefix" +msgstr "" + +#: ../admin/adm_slaveip.php:105 +msgid "Add this ip to the slave list" +msgstr "" + +#: ../admin/adm_tldadd.php:50 ../admin/adm_tldadd.php:64 +#: ../admin/adm_tld.php:64 ../admin/adm_tld.php:87 +msgid "Add a new TLD" +msgstr "" + +#: ../admin/adm_tldadd.php:52 +msgid "" +"Enter the new TLD (without the first dot) and choose what check should be " +"done." +msgstr "" + +#: ../admin/adm_tldadd.php:53 +msgid "" +"Warning : only some final tld are known in the whois function of AlternC, " +"please check m_dom.php accordingly." +msgstr "" + +#: ../admin/adm_tldadd.php:59 ../admin/adm_tldedit.php:64 +#: ../admin/adm_tld.php:67 +msgid "TLD" +msgstr "" + +#: ../admin/adm_tldadd.php:60 ../admin/adm_tldedit.php:65 +#: ../admin/adm_tld.php:67 +msgid "Allowed Mode" +msgstr "" + +#: ../admin/adm_tlddoadd.php:42 +msgid "The TLD has been successfully added" +msgstr "" + +#: ../admin/adm_tlddoedit.php:42 +msgid "The TLD has been successfully edited" +msgstr "" + +#: ../admin/adm_tldedit.php:60 +msgid "Edit a TLD" +msgstr "" + +#: ../admin/adm_tldedit.php:69 +msgid "Edit this TLD" +msgstr "" + +#: ../admin/adm_tld.php:41 +msgid "Some TLD cannot be deleted..." +msgstr "" + +#: ../admin/adm_tld.php:44 +msgid "The requested TLD has been deleted" +msgstr "" + +#: ../admin/adm_tld.php:62 +msgid "" +"Here is the list of the TLD allowed on this server. Each TLD can be allowed " +"or denied after some checks (whois, ns, domain exists...)" +msgstr "" + +#: ../admin/adm_tld.php:83 +msgid "Delete the checked TLD" +msgstr "" + +#: ../admin/adm_variables.php:52 +msgid "Here are the internal AlternC variables that are currently being used." +msgstr "" + +#: ../admin/adm_variables.php:57 +msgid "Names" +msgstr "" + +#: ../admin/adm_variables.php:57 +msgid "Comment" +msgstr "" + +#: ../admin/adm_variables.php:74 +msgid "Save variables" +msgstr "" + +#: ../admin/bro_editor.php:44 ../admin/bro_editor.php:50 +#, php-format +msgid "Your file %s has been saved" +msgstr "" + +#: ../admin/bro_editor.php:58 +msgid "File editing" +msgstr "" + +#: ../admin/bro_editor.php:63 +msgid "ctrl+click or shift+click and drag to resize the editing zone" +msgstr "" + +#: ../admin/bro_editor.php:67 +msgid "Save" +msgstr "Speichern" + +#: ../admin/bro_editor.php:68 +msgid "Save & Quit" +msgstr "" + +#: ../admin/bro_editor.php:69 +msgid "Quit" +msgstr "" + +#: ../admin/bro_main.php:82 +#, php-format +msgid "Deleting files and/or directories" +msgstr "" + +#: ../admin/bro_main.php:87 +msgid "WARNING: Confirm the deletion of this files" +msgstr "" + +#: ../admin/bro_main.php:133 +msgid "extracting..." +msgstr "" + +#: ../admin/bro_main.php:137 +#, fuzzy +msgid "failed" +msgstr "Datei" + +#: ../admin/bro_main.php:140 +msgid "done" +msgstr "" + +#: ../admin/bro_main.php:149 ../admin/menu_brouteur.php:34 +msgid "File browser" +msgstr "Dateimanager" + +#: ../admin/bro_main.php:157 +msgid "Path" +msgstr "" + +#: ../admin/bro_main.php:169 +msgid "Send one file:" +msgstr "" + +#: ../admin/bro_main.php:173 +msgid "Send this file" +msgstr "" + +#: ../admin/bro_main.php:181 +msgid "New file or folder:" +msgstr "" + +#: ../admin/bro_main.php:186 +msgid "Create" +msgstr "" + +#: ../admin/bro_main.php:188 ../admin/bro_main.php:228 +msgid "File" +msgstr "Datei" + +#: ../admin/bro_main.php:189 ../admin/bro_main.php:357 ../admin/ftp_add.php:57 +#: ../admin/ftp_edit.php:62 ../admin/ftp_list.php:72 ../admin/hta_add.php:50 +#: ../admin/hta_adduser.php:49 ../admin/hta_edit.php:98 +#: ../admin/hta_edituser.php:52 ../admin/hta_list.php:67 +#: ../admin/sta2_list.php:58 +msgid "Folder" +msgstr "" + +#: ../admin/bro_main.php:206 ../admin/bro_main.php:212 +#: ../admin/bro_main.php:270 +msgid "Rename" +msgstr "" + +#: ../admin/bro_main.php:222 ../admin/bro_main.php:228 +#: ../admin/bro_main.php:271 +msgid "Permissions" +msgstr "" + +#: ../admin/bro_main.php:242 +msgid "write" +msgstr "" + +#: ../admin/bro_main.php:250 +msgid "Change permissions" +msgstr "" + +#: ../admin/bro_main.php:273 +msgid "Copy" +msgstr "" + +#: ../admin/bro_main.php:274 +msgid "Move" +msgstr "" + +#: ../admin/bro_main.php:275 +msgid "To" +msgstr "" + +#: ../admin/bro_main.php:305 +#, fuzzy +msgid "Filename" +msgstr "Datei" + +#: ../admin/bro_main.php:306 ../admin/mail_list.php:104 +#: ../admin/sql_list.php:51 +msgid "Size" +msgstr "" + +#: ../admin/bro_main.php:307 +msgid "Last modification" +msgstr "" + +#: ../admin/bro_main.php:309 +#, fuzzy +msgid "File Type" +msgstr "Datei" + +#: ../admin/bro_main.php:334 ../admin/bro_main.php:512 +#: ../admin/sta2_list.php:58 ../admin/sta2_list.php:72 +msgid "View" +msgstr "" + +#: ../admin/bro_main.php:341 +msgid "Extract" +msgstr "" + +#: ../admin/bro_main.php:384 ../admin/bro_main.php:414 +#: ../admin/bro_main.php:451 ../admin/bro_main.php:481 +msgid "V" +msgstr "" + +#: ../admin/bro_main.php:538 +msgid "No files in this folder" +msgstr "" + +#: ../admin/bro_main.php:548 +msgid "Show size of directories" +msgstr "" + +#: ../admin/bro_main.php:548 +msgid "(slow)" +msgstr "" + +#: ../admin/bro_main.php:552 +msgid "Edit this folder's protection" +msgstr "" + +#: ../admin/bro_main.php:555 ../admin/hta_add.php:61 +msgid "Protect this folder" +msgstr "" + +#: ../admin/bro_main.php:557 +msgid "with a login and a password" +msgstr "" + +#: ../admin/bro_main.php:560 +msgid "Download this folder" +msgstr "" + +#: ../admin/bro_main.php:562 +#, php-format +msgid "as a %s file" +msgstr "" + +#: ../admin/bro_main.php:570 +msgid "Edit the ftp account" +msgstr "" + +#: ../admin/bro_main.php:571 +msgid "that exists in this folder" +msgstr "" + +#: ../admin/bro_main.php:577 +msgid "Create an ftp account in this folder" +msgstr "" + +#: ../admin/bro_main.php:586 +msgid "Configure the file editor" +msgstr "" + +#: ../admin/bro_pref.php:34 +msgid "Your preferences have been updated." +msgstr "" + +#: ../admin/bro_pref.php:44 +msgid "File browser preferences" +msgstr "" + +#: ../admin/bro_pref.php:51 +msgid "Horizontal window size" +msgstr "" + +#: ../admin/bro_pref.php:59 +msgid "Vertical window size" +msgstr "" + +#: ../admin/bro_pref.php:67 +msgid "File editor font name" +msgstr "" + +#: ../admin/bro_pref.php:75 +msgid "File editor font size" +msgstr "" + +#: ../admin/bro_pref.php:83 +msgid "File list view" +msgstr "" + +#: ../admin/bro_pref.php:91 +msgid "Downloading file format" +msgstr "" + +#: ../admin/bro_pref.php:99 +msgid "What to do after creating a file" +msgstr "" + +#: ../admin/bro_pref.php:107 +msgid "Show icons?" +msgstr "" + +#: ../admin/bro_pref.php:115 +msgid "Show file types?" +msgstr "" + +#: ../admin/bro_pref.php:123 +msgid "Remember last visited directory?" +msgstr "" + +#: ../admin/bro_pref.php:133 +msgid "Change my settings" +msgstr "" + +#: ../admin/browseforfolder.php:115 +msgid "Searching for a folder" +msgstr "" + +#: ../admin/browseforfolder.php:121 +msgid "Error, cannot find this folder" +msgstr "" + +#: ../admin/browseforfolder.php:123 +msgid "Back to the root folder" +msgstr "" + +#: ../admin/browseforfolder.php:135 +msgid "Select" +msgstr "" + +#: ../admin/dom_add.php:45 +msgid "Domain hosting" +msgstr "" + +#: ../admin/dom_add.php:49 +msgid "You cannot add any new domain, your quota is over." +msgstr "" + +#: ../admin/dom_add.php:49 +msgid "Contact your administrator for more information." +msgstr "" + +#: ../admin/dom_add.php:60 +msgid "host my dns here" +msgstr "" + +#: ../admin/dom_add.php:67 +msgid "" +"Do you want to point this domain to another domain already installed in your " +"account?" +msgstr "" + +#: ../admin/dom_add.php:69 +msgid "No: This domain will have its own folder." +msgstr "" + +#: ../admin/dom_add.php:71 +msgid "Yes, redirect this new domain to this one:" +msgstr "" + +#: ../admin/dom_add.php:72 +msgid "-- Choose a domain --" +msgstr "" + +#: ../admin/dom_add.php:86 +msgid "Add this domain" +msgstr "" + +#: ../admin/dom_add.php:91 +msgid "" +"If you don't want to host in our server the DNS of your domain, don't check " +"the box 'host my dns here'. If you don't know what it mean, leave it checked." +msgstr "" + +#: ../admin/dom_add.php:96 ../admin/dom_doadd.php:60 +msgid "Whois result on the domain" +msgstr "" + +#: ../admin/dom_doadd.php:52 ../admin/menu_dom.php:44 +msgid "Add a domain" +msgstr "" + +#: ../admin/dom_doadd.php:54 +#, php-format +msgid "Your new domain %s has been successfully installed" +msgstr "" + +#: ../admin/dom_doadd.php:55 ../admin/dom_dodel.php:56 +#: ../admin/dom_dodel.php:85 ../admin/dom_editdns.php:70 +#: ../admin/dom_subdodel.php:65 ../admin/hta_doedituser.php:61 +msgid "Click here to continue" +msgstr "" + +#: ../admin/dom_dodel.php:54 +msgid "Deletion have been successfully cancelled" +msgstr "" + +#: ../admin/dom_dodel.php:64 ../admin/dom_dodel.php:67 +#, php-format +msgid "Confirm the deletion of domain %s" +msgstr "" + +#: ../admin/dom_dodel.php:67 ../admin/sql_del.php:66 +#: ../admin/sql_users_del.php:55 +msgid "WARNING" +msgstr "" + +#: ../admin/dom_dodel.php:69 +msgid "This will delete the related sub-domains too." +msgstr "" + +#: ../admin/dom_dodel.php:80 +#, php-format +msgid "Domain %s deleted" +msgstr "" + +#: ../admin/dom_dodel.php:84 +#, php-format +msgid "The domain %s has been successfully deleted." +msgstr "" + +#: ../admin/dom_editdns.php:60 +#, php-format +msgid "Editing domain %s" +msgstr "" + +#: ../admin/dom_editdns.php:65 +#, php-format +msgid "The domain %s has been changed." +msgstr "" + +#: ../admin/dom_editdns.php:68 ../admin/dom_subdodel.php:61 +msgid "The modifications will take effect at %time. Server time is %now." +msgstr "" + +#: ../admin/dom_edit.inc.php:40 +msgid "Edit a subdomain:" +msgstr "" + +#: ../admin/dom_edit.inc.php:42 +msgid "Create a subdomain:" +msgstr "" + +#: ../admin/dom_edit.inc.php:63 +msgid "Show advanced options" +msgstr "" + +#: ../admin/dom_edit.inc.php:64 +msgid "Hide advanced options" +msgstr "" + +#: ../admin/dom_edit.inc.php:85 ../admin/ftp_add.php:60 +#: ../admin/ftp_edit.php:66 ../admin/hta_add.php:54 ../admin/sql_bck.php:97 +#: ../admin/sta2_add_raw.php:57 ../admin/sta2_edit_raw.php:63 +msgid "Choose a folder..." +msgstr "" + +#: ../admin/dom_edit.inc.php:91 +msgid "(enter an URL here)" +msgstr "" + +#: ../admin/dom_edit.inc.php:95 +msgid "(enter an IPv4 address, for example 192.168.1.2)" +msgstr "" + +#: ../admin/dom_edit.inc.php:99 +msgid "(enter an IPv6 address, for example 2001:0910::0)" +msgstr "" + +#: ../admin/dom_edit.inc.php:103 +msgid "(enter a TXT informations for this domain)" +msgstr "" + +#: ../admin/dom_edit.inc.php:107 +msgid "(enter a domain name or subdomain)" +msgstr "" + +#: ../admin/dom_edit.inc.php:117 +msgid "Edit this subdomain" +msgstr "" + +#: ../admin/dom_edit.inc.php:119 +msgid "Add this subdomain" +msgstr "" + +#: ../admin/dom_edit.php:66 +#, php-format +msgid "Editing subdomains of %s" +msgstr "" + +#: ../admin/dom_edit.php:76 +msgid "This domain have some DNS change pending. Please wait." +msgstr "" + +#: ../admin/dom_edit.php:79 +msgid "You requested deletion of this domain." +msgstr "" + +#: ../admin/dom_edit.php:97 +msgid "Subdomain" +msgstr "" + +#: ../admin/dom_edit.php:97 +msgid "Type" +msgstr "" + +#: ../admin/dom_edit.php:129 +msgid "Activation pending" +msgstr "" + +#: ../admin/dom_edit.php:132 +msgid "Disabled" +msgstr "" + +#: ../admin/dom_edit.php:133 +msgid "Enable" +msgstr "" + +#: ../admin/dom_edit.php:136 +msgid "Desactivation pending" +msgstr "" + +#: ../admin/dom_edit.php:143 +msgid "Update pending" +msgstr "" + +#: ../admin/dom_edit.php:146 +msgid "Deletion pending" +msgstr "" + +#: ../admin/dom_edit.php:174 +msgid "DNS & Email parameters" +msgstr "" + +#: ../admin/dom_edit.php:179 +msgid "Manage the DNS on the server ?" +msgstr "" + +#: ../admin/dom_edit.php:190 +msgid "Manage the Emails Addresses of this domain on the server?" +msgstr "" + +#: ../admin/dom_edit.php:197 +msgid "" +"Warning: If you set this to 'no', all your email accounts and aliases on " +"this domain will be immediately deleted." +msgstr "" + +#: ../admin/dom_edit.php:199 +msgid "Submit the changes" +msgstr "" + +#: ../admin/dom_edit.php:204 +msgid "Domain removal" +msgstr "" + +#: ../admin/dom_edit.php:207 +#, php-format +msgid "help_domain_del %s" +msgstr "" + +#: ../admin/dom_edit.php:210 +#, php-format +msgid "Delete %s from this server" +msgstr "" + +#: ../admin/dom_subdel.php:48 +#, php-format +msgid "Deleting subdomain %s" +msgstr "" + +#: ../admin/dom_subdel.php:67 +msgid "WARNING : Confirm the deletion of the subdomain" +msgstr "" + +#: ../admin/dom_subdodel.php:50 +#, php-format +msgid "Deleting the subdomain %s:" +msgstr "" + +#: ../admin/dom_subdoedit.php:65 ../admin/dom_substatus.php:27 +msgid "The modifications will take effect at %time. Server time is %now." +msgstr "" + +#: ../admin/dom_subedit.php:51 +msgid "Editing subdomain" +msgstr "" + +#: ../admin/ftp_add.php:34 +msgid "You cannot add any new ftp account, your quota is over." +msgstr "" + +#: ../admin/ftp_add.php:39 ../admin/ftp_list.php:57 ../admin/menu_ftp.php:44 +msgid "Create a new ftp account" +msgstr "" + +#: ../admin/ftp_add.php:67 +msgid "Create this new FTP account." +msgstr "" + +#: ../admin/ftp_del.php:42 +#, php-format +msgid "The ftp account %s has been successfully deleted" +msgstr "" + +#: ../admin/ftp_doadd.php:44 +msgid "The FTP account has been successfully created" +msgstr "" + +#: ../admin/ftp_doedit.php:33 ../admin/ftp_edit.php:39 +msgid "No account selected!" +msgstr "" + +#: ../admin/ftp_doedit.php:47 +msgid "The ftp account has been successfully changed" +msgstr "" + +#: ../admin/ftp_doedit.php:56 ../admin/ftp_edit.php:48 +msgid "Editing an FTP account" +msgstr "" + +#: ../admin/ftp_edit.php:74 +msgid "Change this FTP account" +msgstr "" + +#: ../admin/ftp_list.php:45 ../admin/menu_ftp.php:46 +msgid "FTP accounts list" +msgstr "" + +#: ../admin/head.php:55 +msgid "" +"Administrator session. you may return to your " +"account or cancel this feature" +msgstr "" + +#: ../admin/hta_add.php:34 ../admin/hta_list.php:50 ../admin/hta_list.php:88 +#: ../admin/web_list.php:3 +msgid "Protect a folder" +msgstr "" + +#: ../admin/hta_add.php:38 +msgid "" +"Enter the name of the folder you want to protect. It must already exists." +msgstr "" + +#: ../admin/hta_adduser.php:39 +#, php-format +msgid "Adding a username in %s" +msgstr "" + +#: ../admin/hta_adduser.php:66 ../admin/hta_edit.php:115 +msgid "Add this user" +msgstr "" + +#: ../admin/hta_del.php:42 +#, php-format +msgid "The protected folder %s has been successfully unprotected" +msgstr "" + +#: ../admin/hta_doadduser.php:39 +msgid "Please enter a password" +msgstr "" + +#: ../admin/hta_doedituser.php:51 +#, php-format +msgid "Change the user %s in the protected folder %s" +msgstr "" + +#: ../admin/hta_doedituser.php:59 +#, php-format +msgid "The password of the user %s has been successfully changed" +msgstr "" + +#: ../admin/hta_edit.php:39 +msgid "No folder selected!" +msgstr "" + +#: ../admin/hta_edit.php:48 +#, php-format +msgid "List of authorized user in folder %s" +msgstr "" + +#: ../admin/hta_edit.php:53 +#, php-format +msgid "No authorized user in %s" +msgstr "" + +#: ../admin/hta_edit.php:73 ../admin/sql_users_password.php:41 +msgid "Change this user's password" +msgstr "" + +#: ../admin/hta_edit.php:82 ../admin/sql_users_list.php:74 +msgid "Delete the checked users" +msgstr "" + +#: ../admin/hta_edit.php:87 +msgid "Show this folder's content in the File Browser" +msgstr "" + +#: ../admin/hta_edit.php:93 +msgid "Adding an authorized user" +msgstr "" + +#: ../admin/hta_edituser.php:40 +#, php-format +msgid "Editing user %s in the protected folder %s" +msgstr "" + +#: ../admin/hta_edituser.php:53 ../admin/sql_users_list.php:52 +msgid "User" +msgstr "" + +#: ../admin/hta_edituser.php:54 ../admin/mem_param.php:64 +#: ../admin/mem_param.php:65 +msgid "New password" +msgstr "" + +#: ../admin/hta_edituser.php:56 ../admin/sql_passchg.php:56 +msgid "Change the password" +msgstr "" + +#: ../admin/hta_list.php:41 +msgid "Protected folders list" +msgstr "" + +#: ../admin/hta_list.php:60 +msgid "help_hta_list" +msgstr "" + +#: ../admin/hta_list.php:78 +msgid "Edit login and passwords" +msgstr "" + +#: ../admin/hta_list.php:87 +msgid "Unprotect the checked folders" +msgstr "" + +#: ../admin/index.php:57 +msgid "Web Hosting Control Panel" +msgstr "" + +#: ../admin/index.php:71 +msgid "" +"To connect to the hosting control panel, enter your AlternC's login and " +"password in the following form and click 'Enter'" +msgstr "" + +#: ../admin/index.php:75 +msgid "AlternC access" +msgstr "" + +#: ../admin/index.php:78 ../admin/index.php:95 +msgid "Enter" +msgstr "" + +#: ../admin/index.php:85 +msgid "" +"If you want to read your mail, enter your Email address and password in the " +"following form and click 'Enter'" +msgstr "" + +#: ../admin/index.php:91 +msgid "Webmail Access" +msgstr "" + +#: ../admin/index.php:92 +msgid "Email Address" +msgstr "" + +#: ../admin/index.php:106 +msgid "You must accept the session cookie to log-in" +msgstr "" + +#: ../admin/mail_add.php:43 +#, php-format +msgid "Add a mail to the domain %s" +msgstr "" + +#: ../admin/mail_add.php:62 ../admin/mail_edit.php:70 +msgid "Is it a POP/IMAP account?" +msgstr "" + +#: ../admin/mail_add.php:70 ../admin/mail_edit.php:78 +#, fuzzy +msgid "POP/IMAP password" +msgstr "Passwört" + +#: ../admin/mail_add.php:76 ../admin/mail_edit.php:88 +msgid "Redirections
            Other recipients:" +msgstr "" + +#: ../admin/mail_add.php:76 ../admin/mail_edit.php:88 +msgid "one email per line" +msgstr "" + +#: ../admin/mail_add.php:80 ../admin/mail_edit.php:91 +msgid "Is it a temporary mail account?" +msgstr "" + +#: ../admin/mail_add.php:87 +msgid "Create this email address" +msgstr "" + +#: ../admin/mail_add.php:94 +msgid "help_mail_add" +msgstr "" + +#: ../admin/mail_del.php:51 +#, fuzzy, php-format +msgid "The email address %s does not exist!" +msgstr "Miglied '%s' existiert nicht" + +#: ../admin/mail_del.php:53 +#, php-format +msgid "The email address %s has been deleted!" +msgstr "" + +#: ../admin/mail_del.php:63 +msgid "Deleting mail accounts" +msgstr "" + +#: ../admin/mail_del.php:66 +msgid "Please confirm the deletion of the following mail accounts:" +msgstr "" + +#: ../admin/mail_del.php:82 +msgid "Confirm the deletion" +msgstr "" + +#: ../admin/mail_del.php:82 +msgid "Don't delete anything and go back to the email list" +msgstr "" + +#: ../admin/mail_del.php:86 +msgid "" +"Warning: Deleting an email address will destroy all the messages it " +"contains! You will NOT be able to get it back!" +msgstr "" + +#: ../admin/mail_doadd.php:55 +#, php-format +msgid "The email address %s has been successfully created" +msgstr "" + +#: ../admin/mail_dodel.php:40 +#, php-format +msgid "The mailbox %s does not exist!" +msgstr "" + +#: ../admin/mail_dodel.php:43 +#, php-format +msgid "The mailbox %s has been deleted!" +msgstr "" + +#: ../admin/mail_doedit.php:60 +#, php-format +msgid "The email address %s has been successfully changed" +msgstr "" + +#: ../admin/mail_edit.php:48 +#, php-format +msgid "Edit an email address of the domain %s" +msgstr "" + +#: ../admin/mail_edit.php:66 +#, php-format +msgid "Edit the email address %s" +msgstr "" + +#: ../admin/mail_edit.php:68 +msgid "This account is a temporary account.
            It will be delete on " +msgstr "" + +#: ../admin/mail_edit.php:84 +msgid "" +"WARNING: turning POP/IMAP off will DELETE the stored messages in this email " +"address. This email address will become a simple redirection." +msgstr "" + +#: ../admin/mail_edit.php:97 +msgid "Change this email address" +msgstr "" + +#: ../admin/mail_edit.php:104 +msgid "help_mail_edit" +msgstr "" + +#: ../admin/mail_list.php:49 ../admin/mail_list.php:68 +#, php-format +msgid "Email addresses of the domain %s" +msgstr "" + +#: ../admin/mail_list.php:58 ../admin/mail_list.php:77 +#, php-format +msgid "Add a mailbox on %s" +msgstr "" + +#: ../admin/mail_list.php:60 ../admin/mail_list.php:79 +#, php-format +msgid "Add many mailboxes on %s" +msgstr "" + +#: ../admin/mail_list.php:87 +msgid "Show only mail starting by:" +msgstr "" + +#: ../admin/mail_list.php:93 +#, php-format +msgid "All" +msgstr "" + +#: ../admin/mail_list.php:127 +msgid "This account will be deleted on" +msgstr "" + +#: ../admin/mail_list.php:136 +msgid "Delete the checked email addresses" +msgstr "" + +#: ../admin/main.php:38 +msgid "Last Login: " +msgstr "" + +#: ../admin/main.php:41 +#, php-format +msgid "from: %1$s " +msgstr "" + +#: ../admin/main.php:45 +#, php-format +msgid "%1$d login failed since last login" +msgstr "" + +#: ../admin/main.php:61 +msgid "Latest news" +msgstr "" + +#: ../admin/main.php:78 +msgid "Expired or about to expire accounts" +msgstr "" + +#: ../admin/main.php:80 +msgid "uid" +msgstr "" + +#: ../admin/main.php:80 +msgid "Last name, surname" +msgstr "" + +#: ../admin/mem_admin.php:40 +msgid "Your administrator preferences has been successfully changed." +msgstr "" + +#: ../admin/mem_admin.php:46 ../admin/mem_param.php:97 +msgid "Admin preferences" +msgstr "" + +#: ../admin/mem_chgmail.php:44 ../admin/mem_cm2.php:40 ../admin/mem_cm.php:35 +#: ../admin/mem_cm.php:46 ../admin/mem_param.php:74 +msgid "Change the email of the account" +msgstr "" + +#: ../admin/mem_chgmail.php:51 +#, php-format +msgid "help_mem_chgmail %s" +msgstr "" + +#: ../admin/mem_cm2.php:48 +msgid "The mailbox has been successfully changed." +msgstr "" + +#: ../admin/mem_cm.php:47 +msgid "" +"Enter the key you got when you requested the mailbox change, then click the " +"OK button." +msgstr "" + +#: ../admin/mem_cm.php:48 +msgid "Key" +msgstr "" + +#: ../admin/mem_cm.php:49 +msgid "OK" +msgstr "" + +#: ../admin/mem_logout.php:38 ../admin/mem_logout.php:43 +msgid "Disconnected" +msgstr "" + +#: ../admin/mem_logout.php:45 +msgid "You have been logged out of your administration desktop." +msgstr "" + +#: ../admin/mem_logout.php:46 +msgid "Click here to log in" +msgstr "" + +#: ../admin/mem_param.php:36 +msgid "Your help setting has been updated." +msgstr "" + +#: ../admin/mem_param.php:40 +msgid "Settings of your account" +msgstr "" + +#: ../admin/mem_param.php:50 ../admin/mem_passwd.php:41 +#: ../admin/sql_users_list.php:65 +msgid "Password change" +msgstr "" + +#: ../admin/mem_param.php:54 +msgid "You cannot change your password" +msgstr "" + +#: ../admin/mem_param.php:59 +msgid "help_chg_passwd" +msgstr "" + +#: ../admin/mem_param.php:63 +msgid "Old password" +msgstr "" + +#: ../admin/mem_param.php:66 +msgid "Change my password" +msgstr "" + +#: ../admin/mem_param.php:75 +msgid "help_chg_mail" +msgstr "" + +#: ../admin/mem_param.php:76 +msgid "Current mailbox" +msgstr "" + +#: ../admin/mem_param.php:77 +msgid "New mailbox" +msgstr "" + +#: ../admin/mem_param.php:78 +msgid "Change my email address" +msgstr "" + +#: ../admin/mem_param.php:85 +msgid "Online help settings" +msgstr "" + +#: ../admin/mem_param.php:86 +msgid "help_help_settings" +msgstr "" + +#: ../admin/mem_param.php:87 +msgid "Do you want to see the help texts and links on each page?" +msgstr "" + +#: ../admin/mem_param.php:88 +msgid "Change these settings" +msgstr "" + +#: ../admin/mem_param.php:101 +msgid "Members list view" +msgstr "" + +#: ../admin/mem_param.php:102 +msgid "Large view" +msgstr "" + +#: ../admin/mem_param.php:103 +msgid "Short view" +msgstr "" + +#: ../admin/mem_param.php:105 +msgid "Change my admin preferences" +msgstr "" + +#: ../admin/mem_passwd.php:35 ../admin/sql_pass.php:38 +msgid "Your password has been successfully changed." +msgstr "" + +#: ../admin/menu_adm.php:38 +msgid "Administration" +msgstr "" + +#: ../admin/menu_adm.php:41 +msgid "Manage the Alternc accounts" +msgstr "" + +#: ../admin/menu_adm.php:42 +#, fuzzy +msgid "User Quotas" +msgstr "Quotas" + +#: ../admin/menu_adm.php:45 +msgid "General PhpMyAdmin" +msgstr "" + +#: ../admin/menu_aide.php:32 +msgid "Online help" +msgstr "" + +#: ../admin/menu_dom.php:40 ../admin/quotas_oneuser.php:22 +#: ../admin/quotas_users.php:131 +msgid "Domains" +msgstr "" + +#: ../admin/menu_ftp.php:40 +msgid "FTP accounts" +msgstr "" + +#: ../admin/menu_lang.php:3 +msgid "Langues" +msgstr "" + +#: ../admin/menu_mail.php:40 +msgid "Email Addresses" +msgstr "" + +#: ../admin/menu_mem.php:32 +msgid "Settings" +msgstr "" + +#: ../admin/menu_mem.php:35 +msgid "Logout" +msgstr "" + +#: ../admin/menu.php:36 +msgid "Home / Information" +msgstr "" + +#: ../admin/menu_quota.php:32 +msgid "Show my quotas" +msgstr "" + +#: ../admin/menu_sql.php:38 +msgid "Databases" +msgstr "" + +#: ../admin/menu_sql.php:39 ../admin/sql_users_list.php:37 +msgid "MySQL Users" +msgstr "" + +#: ../admin/menu_sql.php:40 +msgid "PhpMyAdmin" +msgstr "" + +#: ../admin/menu_sta2.php:37 +msgid "Raw web statistics" +msgstr "" + +#: ../admin/menu_web.php:34 +msgid "Protected folders" +msgstr "" + +#: ../admin/quota_show.php:34 +msgid "Account's quotas" +msgstr "" + +#: ../admin/quota_show.php:40 +msgid "No quotas for this account, or quotas currently unavailable!" +msgstr "" + +#: ../admin/quotas_oneuser.php:13 +msgid "Web Space:" +msgstr "" + +#: ../admin/quotas_oneuser.php:14 ../admin/quotas_oneuser.php:53 +#: ../admin/quotas_oneuser.php:90 ../admin/quotas_oneuser.php:130 +#: ../admin/quotas_users.php:286 ../admin/quotas_users.php:322 +#: ../admin/quotas_users.php:342 ../admin/quotas_users.php:355 +msgid "MB" +msgstr "" + +#: ../admin/quotas_oneuser.php:23 +msgid "Emails" +msgstr "" + +#: ../admin/quotas_oneuser.php:24 ../admin/quotas_oneuser.php:71 +#: ../admin/quotas_oneuser.php:112 ../admin/quotas_users.php:127 +#: ../admin/quotas_users.php:168 +msgid "Space" +msgstr "" + +#: ../admin/quotas_oneuser.php:70 ../admin/quotas_users.php:176 +msgid "DB" +msgstr "" + +#: ../admin/quotas_oneuser.php:111 ../admin/quotas_users.php:172 +#: ../admin/quotas_users.php:175 +msgid "Lists" +msgstr "" + +#: ../admin/quotas_users.php:26 +msgid "" +"This page shows the space and service count of your AlternC server and each " +"AlternC accounts." +msgstr "" + +#: ../admin/quotas_users.php:27 +#, php-format +msgid "Sizes are shown as %s" +msgstr "" + +#: ../admin/quotas_users.php:27 +msgid "MB." +msgstr "" + +#: ../admin/quotas_users.php:27 +#, php-format +msgid "% of the total." +msgstr "" + +#: ../admin/quotas_users.php:30 +msgid "Server-side view:" +msgstr "" + +#: ../admin/quotas_users.php:30 +msgid "Global" +msgstr "" + +#: ../admin/quotas_users.php:31 +msgid "Detailed view:" +msgstr "" + +#: ../admin/quotas_users.php:33 ../admin/quotas_users.php:40 +msgid "Percentage" +msgstr "" + +#: ../admin/quotas_users.php:34 ../admin/quotas_users.php:37 +msgid "Graphical" +msgstr "" + +#: ../admin/quotas_users.php:36 ../admin/quotas_users.php:39 +msgid "In MB" +msgstr "" + +#: ../admin/quotas_users.php:45 +msgid "Show the domain names" +msgstr "" + +#: ../admin/quotas_users.php:47 +msgid "Hide the domain names" +msgstr "" + +#: ../admin/quotas_users.php:50 +msgid "All accounts" +msgstr "" + +#: ../admin/quotas_users.php:127 ../admin/quotas_users.php:168 +msgid "Count" +msgstr "" + +#: ../admin/quotas_users.php:136 +msgid "Email addresses" +msgstr "" + +#: ../admin/quotas_users.php:142 +msgid "Mailman lists" +msgstr "" + +#: ../admin/quotas_users.php:148 ../admin/sql_bck.php:48 +#: ../admin/sql_del.php:63 ../admin/sql_dorestore.php:38 +#: ../admin/sql_getparam.php:38 ../admin/sql_list.php:36 +#: ../admin/sql_passchg.php:38 ../admin/sql_restore.php:43 +msgid "MySQL Databases" +msgstr "" + +#: ../admin/quotas_users.php:170 +msgid "Dom" +msgstr "" + +#: ../admin/quotas_users.php:171 ../admin/quotas_users.php:174 +msgid "Mails" +msgstr "" + +#: ../admin/quotas_users.php:173 +msgid "Web" +msgstr "" + +#: ../admin/sql_addmain.php:35 +msgid "Your database has been successfully created" +msgstr "" + +#: ../admin/sql_add.php:34 ../admin/sql_doadd.php:34 +msgid "err_mysql_1" +msgstr "" + +#: ../admin/sql_add.php:39 ../admin/sql_list.php:81 +msgid "Create a new MySQL database" +msgstr "" + +#: ../admin/sql_add.php:51 +msgid "MySQL Database" +msgstr "" + +#: ../admin/sql_add.php:56 +msgid "Create this new MySQL database." +msgstr "" + +#: ../admin/sql_admin.php:47 +msgid "SQL Admin" +msgstr "" + +#: ../admin/sql_bck.php:58 +#, php-format +msgid "Manage the SQL backup for database %s" +msgstr "" + +#: ../admin/sql_bck.php:63 +msgid "Do MySQL backup?" +msgstr "" + +#: ../admin/sql_bck.php:66 +msgid "No backup" +msgstr "" + +#: ../admin/sql_bck.php:67 +msgid "Weekly backup" +msgstr "" + +#: ../admin/sql_bck.php:68 +msgid "Daily backup" +msgstr "" + +#: ../admin/sql_bck.php:72 +msgid "How many backups should be kept?" +msgstr "" + +#: ../admin/sql_bck.php:84 +msgid "Compress the backups? (gzip)" +msgstr "" + +#: ../admin/sql_bck.php:93 +msgid "In which folder do you want to store the backups?" +msgstr "" + +#: ../admin/sql_bck.php:104 +msgid "Change the MySQL backup parameters" +msgstr "" + +#: ../admin/sql_bck.php:113 ../admin/sql_dorestore.php:56 +#: ../admin/sql_restore.php:71 +msgid "You currently have no database defined" +msgstr "" + +#: ../admin/sql_del.php:42 +#, php-format +msgid "The database %s has been successfully deleted" +msgstr "" + +#: ../admin/sql_del.php:57 +msgid "Please check which databases you want to delete" +msgstr "" + +#: ../admin/sql_del.php:66 +msgid "Confirm the deletion of the following SQL databases" +msgstr "" + +#: ../admin/sql_del.php:67 +msgid "This will delete all the tables currently in those db." +msgstr "" + +#: ../admin/sql_dobck.php:48 +msgid "Your backup parameters has been successfully changed." +msgstr "" + +#: ../admin/sql_dorestore.php:44 +msgid "Restore a SQL backup" +msgstr "" + +#: ../admin/sql_dorestore.php:50 +msgid "" +"Your database has been restored, check out the previous text for error " +"messages." +msgstr "" + +#: ../admin/sql_getparam.php:47 +msgid "Your current settings are" +msgstr "" + +#: ../admin/sql_getparam.php:58 +msgid "MySQL Server" +msgstr "" + +#: ../admin/sql_getparam.php:62 +msgid "Main database" +msgstr "" + +#: ../admin/sql_getparam.php:67 +msgid "Back to the MySQL database list" +msgstr "" + +#: ../admin/sql_list.php:46 +msgid "help_sql_list_ok" +msgstr "" + +#: ../admin/sql_list.php:51 ../admin/sql_list.php:97 +#: ../admin/sql_passchg.php:54 +msgid "Database" +msgstr "" + +#: ../admin/sql_list.php:51 ../admin/sql_list.php:63 +msgid "Backup" +msgstr "" + +#: ../admin/sql_list.php:51 ../admin/sql_list.php:64 +msgid "Restore" +msgstr "" + +#: ../admin/sql_list.php:73 +msgid "Delete the checked databases" +msgstr "" + +#: ../admin/sql_list.php:83 +msgid "Change the MySQL password" +msgstr "" + +#: ../admin/sql_list.php:84 +msgid "Get the current MySQL parameters" +msgstr "" + +#: ../admin/sql_list.php:89 +msgid "help_sql_list_no" +msgstr "" + +#: ../admin/sql_list.php:96 ../admin/sql_passchg.php:53 +msgid "SQL Server" +msgstr "" + +#: ../admin/sql_list.php:98 +msgid "Create my main database" +msgstr "" + +#: ../admin/sql_passchg.php:46 +msgid "" +"Enter the new password of your MySQL database and click 'change the " +"password' to change it" +msgstr "" + +#: ../admin/sql_restore.php:53 +#, php-format +msgid "Restore a MySQL backup for database %s" +msgstr "" + +#: ../admin/sql_restore.php:56 +msgid "" +"Warning: Write the complete path and the filename.
            For example if your " +"backups are in the directory /Backups,
            write /Backups/file.sql.gz " +"(where file.sql.gz is the filename)." +msgstr "" + +#: ../admin/sql_restore.php:61 +msgid "" +"Please enter the path and the filename containing SQL data to be restored." +msgstr "" + +#: ../admin/sql_restore.php:62 +msgid "Restore my database" +msgstr "" + +#: ../admin/sql_restore.php:66 +msgid "Note: If the filename ends with .gz, it will be uncompressed before." +msgstr "" + +#: ../admin/sql_users_add.php:41 +msgid "err_mysql_13" +msgstr "" + +#: ../admin/sql_users_add.php:46 ../admin/sql_users_list.php:86 +msgid "Create a new MySQL user" +msgstr "" + +#: ../admin/sql_users_add.php:77 +msgid "Create this new MySQL user" +msgstr "" + +#: ../admin/sql_users_del.php:41 +#, php-format +msgid "The user %s has been successfully deleted" +msgstr "" + +#: ../admin/sql_users_del.php:52 +msgid "MySQL users" +msgstr "" + +#: ../admin/sql_users_del.php:55 +msgid "Confirm the deletion of the following MySQL users" +msgstr "" + +#: ../admin/sql_users_dorights.php:44 +msgid "The rights has been successfully applied to the user" +msgstr "" + +#: ../admin/sql_users_list.php:47 +msgid "help_sql_users_list_ok" +msgstr "" + +#: ../admin/sql_users_list.php:52 +msgid "Rights" +msgstr "" + +#: ../admin/sql_users_list.php:64 +msgid "Manage the rights" +msgstr "" + +#: ../admin/sql_users_password.php:64 +msgid "Change user password" +msgstr "" + +#: ../admin/sql_users_rights.php:41 +#, php-format +msgid "MySQL Rights for %s" +msgstr "" + +#: ../admin/sql_users_rights.php:51 +msgid "help_sql_users_rights_ok" +msgstr "" + +#: ../admin/sql_users_rights.php:82 +msgid "Reverse selection" +msgstr "" + +#: ../admin/sql_users_rights.php:95 +msgid "Apply" +msgstr "" + +#: ../admin/sta2_add_raw.php:33 +msgid "You cannot add any new statistics, your quota is over." +msgstr "" + +#: ../admin/sta2_add_raw.php:38 +msgid "New Raw Statistics (apache)" +msgstr "" + +#: ../admin/sta2_add_raw.php:51 ../admin/sta2_edit_raw.php:57 +msgid "Domain name:" +msgstr "" + +#: ../admin/sta2_add_raw.php:54 ../admin/sta2_edit_raw.php:60 +msgid "Folder where we will put the log file:" +msgstr "" + +#: ../admin/sta2_add_raw.php:63 +msgid "Create those raw statistics" +msgstr "" + +#: ../admin/sta2_del_raw.php:42 +#, php-format +msgid "" +"The statistics %s has been successfully deleted (the stats files must be " +"manually deleted)" +msgstr "" + +#: ../admin/sta2_doadd_raw.php:44 +msgid "The statistics has been successfully created" +msgstr "" + +#: ../admin/sta2_doedit_raw.php:33 ../admin/sta2_edit_raw.php:35 +msgid "No Statistics selected!" +msgstr "" + +#: ../admin/sta2_doedit_raw.php:41 +msgid "The Statistics has been successfully changed" +msgstr "" + +#: ../admin/sta2_edit_raw.php:44 +msgid "Change the Raw Statistics" +msgstr "" + +#: ../admin/sta2_edit_raw.php:67 +msgid "Change those Raw Statistics." +msgstr "" + +#: ../admin/sta2_list.php:35 +msgid "Raw Statistics List" +msgstr "" + +#: ../admin/sta2_list.php:41 +msgid "Create new Raw Statistics (apache)" +msgstr "" + +#: ../admin/sta2_list.php:79 +msgid "Delete the checked Raw Statistics (apache)" +msgstr "" + +#: ../admin/stats_members.php:32 +msgid "" +"Image_Graph not installed. use 'aptitude install php-pear' then 'pear " +"install --alldeps Image_Graph-devel' to see the graph." +msgstr "" + +#: ../admin/stats_members.php:41 +msgid "Account creation per month" +msgstr "" + +#: ../admin/stats_members.php:54 +msgid "before the month" +msgstr "" + +#: ../admin/stats_members.php:56 +msgid "during the month" +msgstr "" + +#: ../admin/trash_dateselect.php:50 +msgid "You want it to be deleted in" +msgstr "" + +#: ../admin/trash_dateselect.php:57 +msgid "Hours" +msgstr "" + +#: ../admin/trash_dateselect.php:58 +msgid "Days" +msgstr "" + +#: ../admin/trash_dateselect.php:59 +msgid "Weeks" +msgstr "" + +#: ../admin/trash_dateselect.php:66 +msgid "" +"Delete this email the following day,
            enter the date using DD/MM/YYYY " +"format" +msgstr "" + +#: ../admin/trash_dateselect.php:79 +msgid "All this account information will be deleted at expiration" +msgstr "" + +#: ../class/functions.php:286 +msgid "Bytes" +msgstr "Bytes" + +#: ../class/functions.php:288 +msgid "Byte" +msgstr "Byte" + +#: ../class/functions.php:293 +msgid "Kb" +msgstr "Kb" + +#: ../class/functions.php:297 +msgid "Mb" +msgstr "Mb" + +#: ../class/functions.php:301 +msgid "Gb" +msgstr "Gb" + +#: ../class/functions.php:303 +msgid "Tb" +msgstr "Tb" + +#: ../class/functions.php:390 +#, fuzzy +msgid "years" +msgstr "Bytes" + +#: ../class/functions.php:390 +msgid "year" +msgstr "" + +#: ../class/functions.php:392 +msgid "months" +msgstr "" + +#: ../class/functions.php:392 +msgid "month" +msgstr "" + +#: ../class/functions.php:415 +msgid "Not managed" +msgstr "" + +# translation of alternc.po to Espagnol +# This file is distributed under the same license as the PACKAGE package. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER. +# Bruno Marmier , 2004. +# +#: ../class/lang_env.php:61 +msgid "" +msgstr "" +"Project-Id-Version: alternc\n" +"Report-Msgid-Bugs-To: i18n@alternc.org\n" +"POT-Creation-Date: 2006-05-09 17:16+0200\n" +"PO-Revision-Date: 2004-02-14 19:53-0400\n" +"Last-Translator: Bruno Marmier \n" +"Language-Team: Espagnol \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-1\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.0.2\n" + +#: ../class/m_err.php:66 ../class/m_err.php:94 ../class/m_err.php:96 +msgid "err_" +msgstr "err_" + +#: ../class/mime.php:135 +msgid "CSS Stylesheet" +msgstr "" + +#: ../class/mime.php:136 +msgid "Comma Separated Values data" +msgstr "" + +#: ../class/mime.php:137 +msgid "DIA Diagram" +msgstr "" + +#: ../class/mime.php:138 +msgid "Word Document" +msgstr "" + +#: ../class/mime.php:139 +msgid "Word Document Template" +msgstr "" + +#: ../class/mime.php:140 +msgid "Encapsulated Postscript" +msgstr "" + +#: ../class/mime.php:141 +msgid "GIF Image" +msgstr "" + +#: ../class/mime.php:142 +msgid "Macintosh Executable" +msgstr "" + +#: ../class/mime.php:143 ../class/mime.php:144 +msgid "HTML Document" +msgstr "" + +#: ../class/mime.php:145 ../class/mime.php:146 +msgid "JPEG Image" +msgstr "" + +#: ../class/mime.php:147 +msgid "Music Playlist" +msgstr "" + +#: ../class/mime.php:148 +msgid "MP3 Music File" +msgstr "" + +#: ../class/mime.php:149 +msgid "Ogg Music File" +msgstr "" + +#: ../class/mime.php:150 +msgid "Acrobat PDF" +msgstr "" + +#: ../class/mime.php:151 +msgid "PHP Source" +msgstr "" + +#: ../class/mime.php:152 +msgid "PNG Image" +msgstr "" + +#: ../class/mime.php:153 ../class/mime.php:154 +msgid "Powerpoint Slideshow" +msgstr "" + +#: ../class/mime.php:155 +msgid "Postscript Document" +msgstr "" + +#: ../class/mime.php:156 +msgid "Photoshop Image" +msgstr "" + +#: ../class/mime.php:157 +msgid "Rar Compressed Files" +msgstr "" + +#: ../class/mime.php:158 +msgid "Rich Text Document" +msgstr "" + +#: ../class/mime.php:159 +msgid "OpenOffice Spreadsheet" +msgstr "" + +#: ../class/mime.php:160 +msgid "OpenOffice Drawing" +msgstr "" + +#: ../class/mime.php:161 +msgid "OpenOffice Presentation" +msgstr "" + +#: ../class/mime.php:162 +msgid "OpenOffice Writer" +msgstr "" + +#: ../class/mime.php:163 ../class/mime.php:164 +msgid "TIFF Image" +msgstr "" + +#: ../class/mime.php:165 +msgid "Text Document" +msgstr "" + +#: ../class/mime.php:166 ../class/mime.php:167 +msgid "Virtual Card" +msgstr "" + +#: ../class/mime.php:168 +msgid "Gimp Image" +msgstr "" + +#: ../class/mime.php:169 +msgid "Excel Spreadsheet" +msgstr "" + +#: ../class/mime.php:170 +msgid "Zip Compressed Files" +msgstr "" + +#: ../class/mime.php:171 +msgid "Flash Animation" +msgstr "" + +#: ../class/mime.php:172 ../class/mime.php:173 ../class/mime.php:174 +msgid "Real Media File" +msgstr "" + +#: ../class/m_mem.php:497 +msgid "Help" +msgstr "Hilfe" + +#~ msgid "New member" +#~ msgstr "Neuer Mitglied" + +#~ msgid "Member" +#~ msgstr "Mitglied" + +#~ msgid "mode" +#~ msgstr "mode" + +#, fuzzy +#~ msgid "You can use a different language: " +#~ msgstr "Für eine andere Sprache, click über die Fahne" + +#, fuzzy +#~ msgid "Front page" +#~ msgstr "Vorname" + +#~ msgid "_" +#~ msgstr "_" + +#, fuzzy +#~ msgid "New Name:" +#~ msgstr "Neuer Mitglied" + +#, fuzzy +#~ msgid "Users" +#~ msgstr "Benützt" + +#~ msgid "If you want to use a different language, click on the flag below" +#~ msgstr "Für eine andere Sprache, click über die Fahne" + +#~ msgid "lang" +#~ msgstr "lang" diff --git a/stable-1.0/bureau/locales/en_US/LC_MESSAGES/manual.po b/stable-1.0/bureau/locales/en_US/LC_MESSAGES/manual.po new file mode 100644 index 00000000..549137f0 --- /dev/null +++ b/stable-1.0/bureau/locales/en_US/LC_MESSAGES/manual.po @@ -0,0 +1,1672 @@ +# English AlternC Translation +# Copyright (c) 2002 the AlternC Development Team +# +# $Id: admin.po,v 1.4 2006/02/09 20:12:23 benjamin Exp $ +#. Template for AlternC Translation +#. Copyright (c) 2002 the AlternC Development Team +#. +#. $Id: admin.po,v 1.4 2006/02/09 20:12:23 benjamin Exp $ +msgid "" +msgstr "" +"Project-Id-Version: $Id: admin.po,v 1.4 2006/02/09 20:12:23 benjamin Exp $\n" +"Report-Msgid-Bugs-To: i18n@alternc.org\n" +"POT-Creation-Date: 2004-05-24 19:34+0200\n" +"PO-Revision-Date: 2002-06-16 13:50CEST\n" +"Last-Translator: Benjamin Sonntag \n" +"Language-Team: English \n" +"Language: en\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-1\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Emacs 21\n" + +#. -- Only administrators can access this page !! -- +msgid "err_admin_1" +msgstr "-- Only administrators can access this page !! --" + +#. Account not found +msgid "err_admin_2" +msgstr "Account not found" + +#. This login already exists +msgid "err_admin_3" +msgstr "This login already exists" + +#. -- I cannot create this account -- +msgid "err_admin_4" +msgstr "-- I cannot create this account --" + +#. Please enter a valid email address +msgid "err_admin_5" +msgstr "Please enter a valid email address" + +#. All fields are mandatory +msgid "err_admin_6" +msgstr "All fields are mandatory" + +#. You can ask for your password only once a day ! +msgid "err_admin_7" +msgstr "You can ask for your password only once a day !" + +#. This account is ALREADY an administrator account +msgid "err_admin_8" +msgstr "This account is ALREADY an administrator account" + +#. This account is NOT an administrator account ! +msgid "err_admin_9" +msgstr "This account is NOT an administrator account !" + +#. Login can only contains characters a-z, 0-9 and - +msgid "err_admin_10" +msgstr "Login can only contains characters a-z, 0-9 and -" + +#. This TLD does not exist +msgid "err_admin_11" +msgstr "This TLD does not exist" + +#. This TLD already exists +msgid "err_admin_12" +msgstr "This TLD already exists" + +#. The login is too long (16 chars max) +msgid "err_admin_13" +msgstr "The login is too long (16 chars max)" + +#. Domain names +msgid "quota_dom" +msgstr "Domain names" + +#. Domain '%s' not found. +msgid "err_dom_1" +msgstr "Domain '%s' not found." + +#. The domaine '%s' does not belong to you. +msgid "err_dom_2" +msgstr "The domaine '%s' does not belong to you." + +#. --- Programm error --- No lock on the domains ! +msgid "err_dom_3" +msgstr "--- Programm error --- No lock on the domains !" + +#. The domain name is too long. +msgid "err_dom_4" +msgstr "The domain name is too long." + +#. One of the domain name member is too long. +msgid "err_dom_5" +msgstr "One of the domain name member is too long." + +#. There is some forbidden characters in the domain name (only A-Z 0-9 and - are allowed). +msgid "err_dom_6" +msgstr "" +"There is some forbidden characters in the domain name (only A-Z 0-9 and - " +"are allowed)." + +#. The last member of the domain name is incorrect or cannot be hosted in that server. +msgid "err_dom_7" +msgstr "" +"The last member of the domain name is incorrect or cannot be hosted in that " +"server." + +#. The domain already exists. +msgid "err_dom_8" +msgstr "The domain already exists." + +#. The domain has been deleted less than 5 minutes ago, please try again later. +msgid "err_dom_9" +msgstr "" +"The domain has been deleted less than 5 minutes ago, please try again later." + +#. Your domain quota is over, you cannot create more domain names. +msgid "err_dom_10" +msgstr "Your domain quota is over, you cannot create more domain names." + +#. The Whois database is unavailable, please try again later. +msgid "err_dom_11" +msgstr "The Whois database is unavailable, please try again later." + +#. The domain cannot be found in the whois database. +msgid "err_dom_12" +msgstr "The domain cannot be found in the whois database." + +#. The domain has been changed less than 5 minutes ago. Please try again in a few minutes. +msgid "err_dom_13" +msgstr "" +"The domain has been changed less than 5 minutes ago. Please try again in a " +"few minutes." + +#. The sub-domain does not exist. +msgid "err_dom_14" +msgstr "The sub-domain does not exist." + +#. No change has been requested... +msgid "err_dom_15" +msgstr "No change has been requested..." + +#. The sub-domain already exists. +msgid "err_dom_16" +msgstr "The sub-domain already exists." + +#. --- Programm error --- Lock already obtained ! +msgid "err_dom_17" +msgstr "--- Programm error --- Lock already obtained !" + +#. This domain is the server's domain !!! You cannot host it on your account ! +msgid "err_dom_18" +msgstr "" +"This domain is the server's domain !!! You cannot host it on your account !" + +#. The IP address you entered is incorrect. +msgid "err_dom_19" +msgstr "The IP address you entered is incorrect." + +#. The URL you entered is incorrect. +msgid "err_dom_20" +msgstr "The URL you entered is incorrect." + +#. The folder you entered is incorrect or does not exist. +msgid "err_dom_21" +msgstr "The folder you entered is incorrect or does not exist." + +#. The requested domain is forbidden in this server, please contact the administrator +msgid "err_dom_22" +msgstr "" +"The requested domain is forbidden in this server, please contact the " +"administrator" + +#. The DNS of this domain do not match the server's DNS. Please change your +#. domain's DNS (and eventually wait 1 day) before you install it again. +msgid "err_dom_23" +msgstr "" +"The DNS of this domain do not match the server's DNS. Please change your " +"domain's DNS (and eventually wait 1 day) before you install it again." + +#. There is some forbidden characters in the sub domain (only A-Z 0-9 and - are allowed). +msgid "err_dom_24" +msgstr "" +"There is some forbidden characters in the sub domain (only A-Z 0-9 and - are " +"allowed)." + +#. There is no MX record pointing to this server, and you are asking us to host the Mail here +#, fuzzy +msgid "err_dom_25" +msgstr "The domaine '%s' does not belong to you." + +#. - Entrez le nom du domaine que vous souhaitez héberger. Le nom de domaine +#. doit être complet, mais sans le www.
            IMPORTANT : Si vous voulez +#. un hébergement réel de domaine, il faut que les DNS de votre domaine +#. pointent vers nos serveurs DNS. Contacter votre hébergeur pour plus +#. d'information.
            Exemples : globenet.org / demo.com / test.eu.org etc. +#.
            Plus d'info sur la gestion des domaines dans l'aide en ligne +#. HELPID_200
            +msgid "hlp_add_domain" +msgstr "" +"- Entrez le nom du domaine que vous souhaitez héberger. Le nom de domaine " +"doit être complet, mais sans le www.
            IMPORTANT : Si vous voulez " +"un hébergement réel de domaine, il faut que les DNS de votre domaine " +"pointent vers nos serveurs DNS. Contacter votre hébergeur pour plus " +"d'information.
            Exemples : globenet.org / demo.com / test.eu.org etc." +"
            Plus d'info sur la gestion des domaines dans l'aide en ligne " +"HELPID_200
            " + +#. Cliquez sur le lien ci-dessus. Vous pourrez ensuite accéder aux paremètres +#. du domaine dans le menu à gauche.2 liens vont apparaitre :
            - un +#. premier pour modifier les paramètres d'hébergement du domaine (sous- +#. domaines, redirections, hébergement mails ...)
            - un second pour gérer +#. les comptes emails du domaine (si vous souhaitez créer des boites aux +#. lettres).
            Plus d'info sur la gestion des domaines dans l'aide en ligne +#. HELPID_200
            +msgid "hlp_add_domain_2" +msgstr "" +"Cliquez sur le lien ci-dessus. Vous pourrez ensuite accéder aux paremètres " +"du domaine dans le menu à gauche.2 liens vont apparaitre :
            - un " +"premier pour modifier les paramètres d'hébergement du domaine (sous-" +"domaines, redirections, hébergement mails ...)
            - un second pour gérer " +"les comptes emails du domaine (si vous souhaitez créer des boites aux " +"lettres).
            Plus d'info sur la gestion des domaines dans l'aide en ligne " +"HELPID_200
            " + +#. Le domaine a été effacé, mais les fichiers de votre site n'ont pas été +#. détruits.
            Si vous souhaitez détruire les fichiers du site web, utilisez +#. le Gestionnaire de Fichier
            Plus d'info sur la gestion des domaines dans +#. l'aide en ligne HELPID_200
            +msgid "hlp_del_domain" +msgstr "" +"Le domaine a été effacé, mais les fichiers de votre site n'ont pas été " +"détruits.
            Si vous souhaitez détruire les fichiers du site web, utilisez " +"le Gestionnaire de Fichier
            Plus d'info sur la gestion des domaines dans " +"l'aide en ligne HELPID_200
            " + +#. Cette zone vous permet de modifier les paramètres de votre domaine, ainsi +#. que des sous-domaines installés
            Vous pouvez créer un nouveau sous- +#. domaine et choisir, soit de le rediriger vers votre espace disque, vers une +#. autre adresse Internet, ou vers une adresse IP (utilisateurs avancés)
            +#. Plus d'info sur la gestion des domaines dans l'aide en ligne HELPID_200
            +msgid "hlp_edit_domain" +msgstr "" +"Cette zone vous permet de modifier les paramètres de votre domaine, ainsi " +"que des sous-domaines installés
            Vous pouvez créer un nouveau sous-" +"domaine et choisir, soit de le rediriger vers votre espace disque, vers une " +"autre adresse Internet, ou vers une adresse IP (utilisateurs avancés)
            Plus d'info sur la gestion des domaines dans l'aide en ligne HELPID_200
            " + +#. FTP Accounts +msgid "quota_ftp" +msgstr "FTP Accounts" + +#. No ftp account found +msgid "err_ftp_1" +msgstr "No ftp account found" + +#. This ftp account does not exist +msgid "err_ftp_2" +msgstr "This ftp account does not exist" + +#. The chosen prefix is not allowed +msgid "err_ftp_3" +msgstr "The chosen prefix is not allowed" + +#. This ftp account already exists +msgid "err_ftp_4" +msgstr "This ftp account already exists" + +#. Your ftp account quota is over. You cannot create more ftp accounts. +msgid "err_ftp_5" +msgstr "Your ftp account quota is over. You cannot create more ftp accounts." + +#. The directory cannot be created. +msgid "err_ftp_6" +msgstr "The directory cannot be created." + +#. Voici la liste des comptes ftp ayant accès à votre compte. Cliquez sur +#. 'Modifier' pour changer le nom d'utilisateur, le mot de passe, ou le dossier +#. racine.
            Pour supprimer un compte, cochez la case correspondante et +#. cliquez sur le bouton 'Supprimer les comptes cochés'
            Pour pouvoir +#. accéder à vos fichiers avec un logiciel de ftp, vous devez créer au moins un +#. compte. Chaque compte est associé à un dossier, et n'aura donc accès qu'aux +#. fichiers situés dans ce dossier ou en dessous.
            Plus d'info sur le FTP +#. dans l'aide en ligne HELPID_100
            +msgid "hlp_ftp_list" +msgstr "" +"Voici la liste des comptes ftp ayant accès à votre compte. Cliquez sur " +"'Modifier' pour changer le nom d'utilisateur, le mot de passe, ou le dossier " +"racine.
            Pour supprimer un compte, cochez la case correspondante et " +"cliquez sur le bouton 'Supprimer les comptes cochés'
            Pour pouvoir " +"accéder à vos fichiers avec un logiciel de ftp, vous devez créer au moins un " +"compte. Chaque compte est associé à un dossier, et n'aura donc accès qu'aux " +"fichiers situés dans ce dossier ou en dessous.
            Plus d'info sur le FTP " +"dans l'aide en ligne HELPID_100
            " + +#. Vous n'avez actuellement aucun Compte FTP de disponible. Cliquez sur +#. 'Création d'un compte ftp' pour en créer un.
            Pour pouvoir accéder à vos +#. fichiers avec un logiciel de ftp, vous devez créer au moins un compte. +#. Chaque compte est associé à un dossier, et n'aura donc accès qu'aux fichiers +#. situés dans ce dossier ou en dessous.
            Plus d'info sur le FTP dans +#. l'aide en ligne HELPID_100
            +msgid "hlp_ftp_list_no" +msgstr "" +"Vous n'avez actuellement aucun Compte FTP de disponible. Cliquez sur " +"'Création d'un compte ftp' pour en créer un.
            Pour pouvoir accéder à vos " +"fichiers avec un logiciel de ftp, vous devez créer au moins un compte. " +"Chaque compte est associé à un dossier, et n'aura donc accès qu'aux fichiers " +"situés dans ce dossier ou en dessous.
            Plus d'info sur le FTP dans " +"l'aide en ligne HELPID_100
            " + +#. Pour ajouter un compte ftp, vous devez choisir un Nom d'utilisateur, un mot +#. de passe, et un répertoire racine
            Le nom d'utilisateur commence +#. toujours par votre nom de login ou le nom d'un de vos domaines.
            Le +#. répertoire racine, s'il n'existe pas, sera créé automatiquement.
            Note : +#. Le compte que vous créez ainsi aura accès en lecture et en écriture aux +#. fichiers situés dans le répertoire et tous ses sous-répertoires.
            Plus +#. d'info sur le FTP dans l'aide en ligne HELPID_100
            +msgid "hlp_ftp_add" +msgstr "" +"Pour ajouter un compte ftp, vous devez choisir un Nom d'utilisateur, un mot " +"de passe, et un répertoire racine
            Le nom d'utilisateur commence " +"toujours par votre nom de login ou le nom d'un de vos domaines.
            Le " +"répertoire racine, s'il n'existe pas, sera créé automatiquement.
            Note : " +"Le compte que vous créez ainsi aura accès en lecture et en écriture aux " +"fichiers situés dans le répertoire et tous ses sous-répertoires.
            Plus " +"d'info sur le FTP dans l'aide en ligne HELPID_100
            " + +#. An incompatible .htaccess file exists in this folder. +msgid "err_hta_1" +msgstr "An incompatible .htaccess file exists in this folder." + +#. .htaccess parsed and syntaxically correct, a .htpassword file has been created. +msgid "err_hta_2" +msgstr "" +".htaccess parsed and syntaxically correct, a .htpassword file has been " +"created." + +#. .htaccess parsed and syntaxically correct, a .htpasswd already exist. +msgid "err_hta_3" +msgstr ".htaccess parsed and syntaxically correct, a .htpasswd already exist." + +#. No protected folder +msgid "err_hta_4" +msgstr "No protected folder" + +#. I cannot delete the file '%s'/.htaccess +msgid "err_hta_5" +msgstr "I cannot delete the file '%s'/.htaccess" + +#. I cannot delete the file '%s'/.htpasswd +msgid "err_hta_6" +msgstr "I cannot delete the file '%s'/.htpasswd" + +#. The file .htaccess does not exist +msgid "err_hta_7" +msgstr "The file .htaccess does not exist" + +#. The folder '%s' does not exist +msgid "err_hta_8" +msgstr "The folder '%s' does not exist" + +#. The file '%s' is not correct +msgid "err_hta_9" +msgstr "The file '%s' is not correct" + +#. The user '%s' already exist for this folder +msgid "err_hta_10" +msgstr "The user '%s' already exist for this folder" + +#. Please enter a valid username +msgid "err_hta_11" +msgstr "Please enter a valid username" + +#. Cannot write inside the requested folder. Please check your permissions +msgid "err_hta_12" +msgstr "Cannot write inside the requested folder. Please check your permissions." + +#. Email Accounts +msgid "quota_mail" +msgstr "Email Accounts" + +#. DB connection impossible, please try again later. +msgid "err_mail_1" +msgstr "ldap connexion impossible, please try again later." + +#. No email on domain '%s' +msgid "err_mail_2" +msgstr "No email on domain '%s'" + +#. The email '%s' does not exist +msgid "err_mail_3" +msgstr "The email '%s' does not exist" + +#. Please check 'pop account' and choose a password pop, or enter some +#. redirections, or both +msgid "err_mail_4" +msgstr "" +"Please check 'pop account' and choose a password pop, or enter some " +"redirections, or both" + +#. -- Server error --- Parameter is incorrect (%s) +msgid "err_mail_5" +msgstr "-- Server error --- Parameter is incorrect (%s)" + +#. The domain '%s' does not exist. +msgid "err_mail_6" +msgstr "The domain '%s' does not exist." + +#. The email '%s' already exists. +msgid "err_mail_7" +msgstr "The email '%s' already exists." + +#. Your mail account quota is over. You cannot create more email accounts. +msgid "err_mail_8" +msgstr "" +"Your mail account quota is over. You cannot create more email accounts." + +#. The domain '%s' does not exist. +msgid "err_mail_9" +msgstr "The domain '%s' does not exist." + +#. -- Programm error -- Mail quota does not exist +msgid "err_mail_10" +msgstr "-- Programm error -- Mail quota does not exist" + +#. Please enter an Email address +msgid "err_mail_11" +msgstr "Please enter an Email address" + +#. Please enter a pop password +msgid "err_mail_12" +msgstr "Please enter a pop password" + +#. Please enter a valid email +msgid "err_mail_13" +msgstr "Please enter a valid email" + +#. One or more email redirection are invalid +msgid "err_mail_14" +msgstr "One or more email redirection are invalid" + +#. This mail is not a pop account. It's impossible to change the password ! +msgid "err_mail_15" +msgstr "" +"This mail is not a pop account. It's impossible to change the password !" + +#. OK +msgid "err_err_0" +msgstr "OK" + +#. The error message does not exist (%s) +msgid "err_err_1" +msgstr "The error message does not exist (%s)" + +#. This is a date representation : parameters are the date as follow : +#. $d,$m,$y,$h,$i,$hh,$am +#. 1 2 3 4 5 6 7 +#. hh is the hour in 12 hours format, and am is 'am' or 'pm'. +#. eg: english : %3$d/%1$d/%2$d, at %6$d:%5$d %7$s +msgid "the %3$d-%2$d-%1$d at %4$d:%5$d" +msgstr "%3$d/%1$d/%2$d, at %6$d:%5$d %7$s" + +#. User or password incorrect +msgid "err_mem_1" +msgstr "User or password incorrect" + +#. This account is locked, contact the administrator +msgid "err_mem_2" +msgstr "This account is locked, contact the administrator" + +#. Cookie incorrect, please accept the session cookie +msgid "err_mem_3" +msgstr "Cookie incorrect, please accept the session cookie" + +#. Session unknown, contact the administrator +msgid "err_mem_4" +msgstr "Session unknown, contact the administrator" + +#. IP address incorrect, please contact the administrator +msgid "err_mem_5" +msgstr "IP address incorrect, please contact the administrator" + +# PROBLEME : il y avait 2 fois le 5, les autres messages doivent surement etre décalés (TODO) +#. The old password is incorrect +#. PROBLEME : il y avait 2 fois le 5, les autres messages doivent surement etre décalés (TODO) +msgid "err_mem_6" +msgstr "The old password is incorrect" + +#. The new passwords are differents, please retry +msgid "err_mem_7" +msgstr "The new passwords are differents, please retry" + +#. A password must be at least 3 characters long. +msgid "err_mem_8" +msgstr "A password must be at least 3 characters long." + +#. The information you entered is incorrect +msgid "err_mem_9" +msgstr "The information you entered is incorrect" + +#. You are not allowed to change your password. +msgid "err_mem_11" +msgstr "You are not allowed to change your password." + +#. You must be a system administrator to do this +msgid "err_mem_12" +msgstr "You must be a system administrator to do this" + +# Please do NOT translate those strings to each language. Use the original language instead +#. Français (France) +#. Please do NOT translate those strings to each language. Use the original language instead +msgid "fr_FR" +msgstr "Français (France)" + +#. Français (Canada) +#. Please do NOT translate those strings to each language. Use the original language instead +msgid "fr_CA" +msgstr "Français (Canada)" + +#. English (United States) +#. Please do NOT translate those strings to each language. Use the original language instead +msgid "en_US" +msgstr "English (United States)" + +#. English (United Kingdom) +#. Please do NOT translate those strings to each language. Use the original language instead +msgid "en_UK" +msgstr "English (United Kingdom)" + +#. Deutsch (Germany) +#. Please do NOT translate those strings to each language. Use the original language instead +msgid "de_DE" +msgstr "Deutsch (Germany)" + +#. Español (Spania) +#. Please do NOT translate those strings to each language. Use the original language instead +msgid "es_ES" +msgstr "Español (Spania)" + +#. Español (Venezuela) +#. Please do NOT translate those strings to each language. Use the original language instead +msgid "es_VE" +msgstr "Español (Venezuela)" + +#. OK +#, fuzzy +msgid "err_quota_0" +msgstr "Error writing the quota entry !" + +#. Error writing the quota entry ! +msgid "err_quota_1" +msgstr "Error writing the quota entry !" + +#. MySQL Databases +msgid "quota_mysql" +msgstr "MySQL Databases" + +#. MySQL Users +msgid "quota_mysql_users" +msgstr "MySQL Users" + +#. Disk space +msgid "quota_web" +msgstr "Disk space" + +#. Data base name can contain only digits or lowercase alphabetic characters +msgid "err_mysql_2" +msgstr "" +"Data base name can contain only digits or lowercase alphabetic characters" + +#. The database does not exist, you'll get an access by creating it. +msgid "err_mysql_3" +msgstr "The database does not exist, you'll get an access by creating it." + +#. This database already exists! +msgid "err_mysql_4" +msgstr "This database already exists!" + +#. Your backup number is incorrect. +msgid "err_mysql_5" +msgstr "Your backup number is incorrect." + +#. The folder is incorrect! +msgid "err_mysql_6" +msgstr "The folder is incorrect!" + +#. The file name you chose does not exist or is incorrect. +msgid "err_mysql_7" +msgstr "The file name you chose does not exist or is incorrect." + +#. The password is too long (16 chars max) +msgid "err_mysql_8" +msgstr "The password is too long (16 chars max)" + +#. The file is incorrect or does not exist. +msgid "err_mysql_9" +msgstr "The file is incorrect or does not exist." + +#. Your cannot create your main database : you still have other dbs ! +msgid "err_mysql_10" +msgstr "Your cannot create your main database : you still have other dbs !" + +#. You have no database, click on 'Databases' to create the first one +msgid "err_mysql_11" +msgstr "You have no database, click on 'Databases' to create the first one" + +#. The data base name is too long (64 chars max) +msgid "err_mysql_12" +msgstr "The data base name is too long (64 chars max)" + +#. You cannot create more MySQL users +msgid "err_mysql_13" +msgstr "You cannot create more MySQL users" + +#. MySQL users can only have a-z and 0-9 characters. +msgid "err_mysql_14" +msgstr "MySQL users can only have a-z and 0-9 characters." + +#. MySQL users must be less than 16 characters long. +msgid "err_mysql_15" +msgstr "MySQL users must be less than 16 characters long." + +#. This MySQL user already exists. +msgid "err_mysql_16" +msgstr "This MySQL user already exists." + +#. Passwords do not match. +msgid "err_mysql_17" +msgstr "Passwords do not match." + +#. The requested MySQL user does not exist. +msgid "err_mysql_18" +msgstr "The requested MySQL user does not exist." + +#. You have no MySQL users at the moment. +msgid "err_mysql_19" +msgstr "You have no MySQL users at the moment." + +#. Your MySQL backups are stored in the chosen folder from db.sql.1 to db.sql.19
            your database name replaces 'db'.
            WARNING: If you modify backup settings (backups, compression...) previous +#. backups may remain in the backup folder. Go to the file manager to delete +#. them. +msgid "hlp_sql_bck" +msgstr "" +"Your MySQL backups are stored in the chosen folder from db.sql.1 to db.sql.19
            your database name replaces 'db'.
            WARNING: If you modify backup settings (backups, compression...) previous " +"backups may remain in the backup folder. Go to the file manager to delete " +"them." + +#. Web Statistics +msgid "quota_sta2" +msgstr "Web Statistics" + +#. You cannot create more raw statistic set. +msgid "err_sta2_1" +msgstr "You cannot create more raw statistic set." + +#. There is currently no raw statistic set. +msgid "err_sta2_2" +msgstr "There is currently no raw statistic set." + +#. The requested raw statistic set has not been found. +msgid "err_sta2_3" +msgstr "The requested raw statistic set has not been found." + +#. File or folder name is incorrect +msgid "err_bro_1" +msgstr "File or folder name is incorrect" + +#. You cannot move or copy a file to the same folder +msgid "err_bro_2" +msgstr "You cannot move or copy a file to the same folder" + +#. Cannot create the requested file. Please check permissions. +msgid "err_bro_3" +msgstr "Cannot create the requested file. Please check permissions." + +#. Cannot create the requested directory. Please check permissions. +msgid "err_bro_4" +msgstr "Cannot create the requested directory. Please check permissions." + +#. Cannot edit the requested file. Please check permissions. +msgid "err_bro_5" +msgstr "Cannot edit the requested file. Please check permissions." + +#. Cannot read the requested file. Please check permissions. +msgid "err_bro_6" +msgstr "Cannot read the requested file. Please check permissions." + +#. If we manage your DNS
            You can manage your mails elsewhere if you want +#. (MX field).
            Write %s in this field if your mail +#. must be managed by %s
            or put the IP address or name of the mail server +#. used to manage your mails.Warning : if you put nothing in this field, +#. your mails will be unavailable +msgid "help_dns_mx %s %s" +msgstr "" +"If we manage your DNS
            You can manage your mails elsewhere if you want " +"(MX field).
            Write %s in this field if your mail " +"must be managed by %s
            or put the IP address or name of the mail server " +"used to manage your mails.Warning : if you put nothing in this field, " +"your mails will be unavailable" + +#. If we don't manage the DNS for this domain
            do we manage your mails? +msgid "help_dns_mail" +msgstr "" +"If we don't manage the DNS for this domain
            do we manage your mails?" + +#. If you want to delete the domain %s, click the button below.Warning : this +#. delete all the ftp, mails, mailing-lists ... associated with thisdomain and +#. all its subdomains! +msgid "help_domain_del %s" +msgstr "" +"If you want to delete the domain %s, click the button below.Warning : this " +"delete all the ftp, mails, mailing-lists ... associated with thisdomain and " +"all its subdomains!" + +#. You can create various databases
            Click on 'SQL Admin' in the menu to +#. manage them
            or use the table below to backup, retrieve or delete them: +msgid "help_sql_list_ok" +msgstr "" +"You can create various databases
            Click on 'SQL Admin' in the menu to " +"manage them
            or use the table below to backup, retrieve or delete them:" + +#. Your haven't created your main database yet, please enter a password to create it. +msgid "help_sql_list_no" +msgstr "" +"Your haven't created your main database yet, please enter a password to " +"create it." + +# $d,$m,$y,$h,$i,$hh,$am +# 1 2 3 4 5 6 7 +#. This is a date representation : parameters are the date as follow : +#. $d,$m,$y,$h,$i,$hh,$am +#. 1 2 3 4 5 6 7 +#. hh is the hour in 12 hours format, and am is 'am' or 'pm'. +#. eg: english : %3$d/%1$d/%2$d, at %6$d:%5$d %7$s +msgid "%3$d-%2$d-%1$d %4$d:%5$d" +msgstr "%2$d/%1$d/%3$d %6$d:%5$d %7$d" + +msgid "1 column, detailed" +msgstr "1 column, detailed" + +msgid "2 columns, short" +msgstr "2 columns, short" + +msgid "3 columns, short" +msgstr "3 columns, short" + +msgid "Go back to the file manager" +msgstr "Go back to the file manager" + +msgid "Edit the newly created file" +msgstr "Edit the newly created file" + +#, fuzzy +msgid "hlp_login" +msgstr "" +"Le domaine a été effacé, mais les fichiers de votre site n'ont pas été " +"détruits.
            Si vous souhaitez détruire les fichiers du site web, utilisez " +"le Gestionnaire de Fichier
            Plus d'info sur la gestion des domaines dans " +"l'aide en ligne HELPID_200
            " + +#, fuzzy +msgid "err_admin_14" +msgstr "-- Only administrators can access this page !! --" + +#, fuzzy +msgid "err_admin_15" +msgstr "-- Only administrators can access this page !! --" + +#, fuzzy +msgid "err_admin_16" +msgstr "-- Only administrators can access this page !! --" + +#, fuzzy +msgid "err_admin_17" +msgstr "-- Only administrators can access this page !! --" + +#, fuzzy +msgid "err_admin_18" +msgstr "-- Only administrators can access this page !! --" + +#, fuzzy +msgid "err_mail_16" +msgstr "ldap connexion impossible, please try again later." + +msgid "err_mysql_20" +msgstr "The password is mandatory" + +msgid "err_mysql_21" +msgstr "The username cannot be empty" + +# $d,$m,$y,$h,$i,$hh,$am +# 1 2 3 4 5 6 7 +#, fuzzy +msgid "%3$d-%2$d-%1$d" +msgstr "%2$d/%1$d/%3$d %6$d:%5$d %7$d" + +#, fuzzy +msgid "AlternC's account password" +msgstr "Please enter a password" + +#, fuzzy +msgid "POP/IMAP account passwords" +msgstr "POP password" + +#, fuzzy +msgid "Protected folders passwords" +msgstr "Protected folders list" + +#~ msgid "Editing subdomain %s" +#~ msgstr "Editing subdomain %s" + +#~ msgid "err_stats_4" +#~ msgstr "This statistic set already exists !" + +#~ msgid "err_stats_5" +#~ msgstr "" +#~ "Your statistic set quota is over. You cannot create more statistic sets." + +#~ msgid "err_stats_6" +#~ msgstr "This language is not supported." + +#~ msgid "err_stats_7" +#~ msgstr "Aucune jeu de statistiques brutes" + +#~ msgid "Description" +#~ msgstr "Description" + +#~ msgid "Number of mailing-lists" +#~ msgstr "Number of mailing-lists" + +#~ msgid "Number of domains" +#~ msgstr "Number of domains" + +#~ msgid "Number of FTP accounts" +#~ msgstr "Number of FTP accounts" + +#~ msgid "Number of web statistics" +#~ msgstr "Number of web statistics" + +#~ msgid "Number of email accounts" +#~ msgstr "Number of email accounts" + +#~ msgid "This TLD is forbidden" +#~ msgstr "This TLD is forbidden" + +#~ msgid "primary DNS is checked in WHOIS db" +#~ msgstr "primary DNS is checked in WHOIS db" + +#~ msgid "primary & secondary DNS are checked in WHOIS db" +#~ msgstr "primary & secondary DNS are checked in WHOIS db" + +#~ msgid "Domain must exist, but don't do any DNS check" +#~ msgstr "Domain must exist, but don't do any DNS check" + +#~ msgid "Domain can be installed, no check at all" +#~ msgstr "Domain can be installed, no check at all" + +#~ msgid "Domain can be installed, force NO DNS hosting" +#~ msgstr "Domain can be installed, force NO DNS hosting" + +#~ msgid "The user has no database" +#~ msgstr "The user has no database" + +#~ msgid "Enable the database" +#~ msgstr "Enable the database" + +#~ msgid "The user has a MySQL database" +#~ msgstr "The user has a MySQL database" + +#~ msgid "Disable the database" +#~ msgstr "Disable the database" + +#~ msgid "Disk space (in KB)" +#~ msgstr "Disk space (in KB)" + +#~ msgid "Delete my SQL database" +#~ msgstr "Delete my SQL database" + +#~ msgid "Manage the SQL backup" +#~ msgstr "Manage SQL backups" + +#~ msgid "Destroy my database" +#~ msgstr "Destroy my database" + +#~ msgid "Click here to continue" +#~ msgstr "Click here to continue" + +#~ msgid "Yes" +#~ msgstr "Yes" + +#~ msgid "No" +#~ msgstr "No" + +#~ msgid "General SQL Admin" +#~ msgstr "General SQL Admin" + +#~ msgid "This page is restricted to authorized staff" +#~ msgstr "This page is restricted to authorized staff" + +#~ msgid "New member" +#~ msgstr "New member" + +#~ msgid "Initial password" +#~ msgstr "Initial password" + +#~ msgid "Surname" +#~ msgstr "Surname" + +#~ msgid "First Name" +#~ msgstr "First Name" + +#~ msgid "Email address" +#~ msgstr "Email address" + +#~ msgid "Create a new member" +#~ msgstr "Create a new member" + +#~ msgid "The new member has been successfully created" +#~ msgstr "The new member has been successfully created" + +#~ msgid "Member '%s' does not exist" +#~ msgstr "Member '%s' does not exist" + +#~ msgid "Member %s successfully deleted" +#~ msgstr "Member %s successfully deleted" + +#~ msgid "Member Edition" +#~ msgstr "Member Edition" + +#~ msgid "The member has been successfully edited" +#~ msgstr "The member has been successfully edited" + +#~ msgid "Account Enabled ?" +#~ msgstr "Account Enabled ?" + +#~ msgid "Edit this account" +#~ msgstr "Edit this account" + +#~ msgid "Member list" +#~ msgstr "Member list" + +#~ msgid "Here is the list of hosted members" +#~ msgstr "Here is the list of hosted members" + +#~ msgid "Edit" +#~ msgstr "Edit" + +#~ msgid "Quotas" +#~ msgstr "Quotas" + +#~ msgid "Connect as" +#~ msgstr "Connect as" + +#~ msgid "Delete checked accounts" +#~ msgstr "Delete checked accounts" + +#~ msgid "Editing the quotas of a member" +#~ msgstr "Editing the quotas of a member" + +#~ msgid "The quotas has been successfully edited" +#~ msgstr "The quotas has been successfully edited" + +#~ msgid "Quota" +#~ msgstr "Quota" + +#~ msgid "Total" +#~ msgstr "Total" + +#~ msgid "Used" +#~ msgstr "Used" + +#~ msgid "Edit the quotas" +#~ msgstr "Edit the quotas" + +#~ msgid "Recalculate the quotas of the account" +#~ msgstr "Recalculate the quotas of the account" + +#~ msgid "" +#~ "There is only one administrator account, you cannot turn this account " +#~ "back to normal" +#~ msgstr "" +#~ "There is only one administrator account, you cannot turn this account " +#~ "back to normal" + +#~ msgid "This account is a super-admin account" +#~ msgstr "This account is a super-admin account" + +#~ msgid "Turn this account back to normal" +#~ msgstr "Turn this account back to normal" + +#~ msgid "Make this account a super admin one" +#~ msgstr "Make this account a super admin one" + +#~ msgid "Some TLD cannot be deleted..." +#~ msgstr "Some TLD cannot be deleted..." + +#~ msgid "The requested TLD has been deleted" +#~ msgstr "The requested TLD has been deleted" + +#~ msgid "Manage allowed domains (TLD)" +#~ msgstr "Manage allowed domains (TLD)" + +#~ msgid "" +#~ "Here is the list of the TLD allowed on this server. Each TLD can be " +#~ "allowed or denied after some checks (whois, ns, domain exists...)" +#~ msgstr "" +#~ "Here is the list of the TLD allowed on this server. Each TLD can be " +#~ "allowed or denied after some checks (whois, ns, domain exists...)" + +#~ msgid "TLD" +#~ msgstr "TLD" + +#~ msgid "Allowed Mode" +#~ msgstr "Allowed Mode" + +#~ msgid "Delete the checked TLD" +#~ msgstr "Delete the checked TLD" + +#~ msgid "Add a new TLD" +#~ msgstr "Add a new TLD" + +#~ msgid "The TLD has been successfully added" +#~ msgstr "The TLD has been successfully added" + +#~ msgid "" +#~ "Enter the new TLD (without the first dot) and choose what check should be " +#~ "done." +#~ msgstr "" +#~ "Enter the new TLD (without the first dot) and choose what check should be " +#~ "done." + +#~ msgid "" +#~ "Warning : only some final tld are known in the whois function of AlternC, " +#~ "please check m_domains.php accordingly." +#~ msgstr "" +#~ "Warning : only some final tld are known in the whois function of AlternC, " +#~ "please check m_domains.php accordingly." + +#~ msgid "Edit a TLD" +#~ msgstr "Edit a TLD" + +#~ msgid "Edit this TLD" +#~ msgstr "Edit this TLD" + +#~ msgid "The TLD has been successfully edited" +#~ msgstr "The TLD has been successfully edited" + +#~ msgid "Change the default quotas" +#~ msgstr "Change the default quotas" + +#~ msgid "Manage the members" +#~ msgstr "Manage the members" + +#~ msgid "Admin Control Panel" +#~ msgstr "Admin Control Panel" + +#~ msgid "Default quotas successfully changed" +#~ msgstr "Default quotas successfully changed" + +#~ msgid "Can he change its password" +#~ msgstr "Can he change its password" + +#~ msgid "Account created by %s" +#~ msgstr "Account created by %s" + +#~ msgid "Locked Account" +#~ msgstr "Locked Account" + +#~ msgid "Your file %s has been saved" +#~ msgstr "Your file %s has been saved" + +#~ msgid "Back to the file browser" +#~ msgstr "Back to the file browser" + +#~ msgid "File editing" +#~ msgstr "File editing" + +#~ msgid "File browser" +#~ msgstr "File browser" + +#~ msgid "Rename" +#~ msgstr "Rename" + +#~ msgid "Delete" +#~ msgstr "Delete" + +#~ msgid "Copy" +#~ msgstr "Copy" + +#~ msgid "Move" +#~ msgstr "Move" + +#~ msgid "Create" +#~ msgstr "Create" + +#~ msgid "File" +#~ msgstr "File" + +#~ msgid "Folder" +#~ msgstr "Folder" + +#~ msgid "Import this file" +#~ msgstr "Import this file" + +#~ msgid "Send" +#~ msgstr "Send" + +#~ msgid "There is an ftp account in this folder" +#~ msgstr "There is an ftp account in this folder" + +#~ msgid "click here to edit this ftp account" +#~ msgstr "click here to edit this ftp account" + +#~ msgid "click here to create an ftp account in this folder" +#~ msgstr "click here to create an ftp account in this folder" + +#~ msgid "This folder has restricted access" +#~ msgstr "This folder has restricted access" + +#~ msgid "Click here to protect this folder with login/password" +#~ msgstr "Click here to protect this folder with login/password" + +#~ msgid "Download" +#~ msgstr "Download" + +#~ msgid "this folder and its subfolders as a compressed file" +#~ msgstr "this folder and its subfolders as a compressed file" + +#~ msgid "Configure the file browser" +#~ msgstr "Configure the file browser" + +#~ msgid "Your preferences have been updated." +#~ msgstr "Your preferences have been updated." + +#~ msgid "File editor preferences" +#~ msgstr "File editor preferences" + +#~ msgid "File browser preferences" +#~ msgstr "File browser preferences" + +#~ msgid "File editor font name" +#~ msgstr "File editor font name" + +#~ msgid "File editor font size" +#~ msgstr "File editor font size" + +#~ msgid "Horizontal window size" +#~ msgstr "Horizontal window size" + +#~ msgid "Vertical window size" +#~ msgstr "Vertical window size" + +#~ msgid "File list view" +#~ msgstr "File list view" + +#~ msgid "Downloading file format" +#~ msgstr "Downloading file format" + +#~ msgid "What to do after creating a file" +#~ msgstr "What to do after creating a file" + +#~ msgid "Show icons?" +#~ msgstr "Show icons?" + +#~ msgid "Show file types?" +#~ msgstr "Show file types?" + +#~ msgid "Change my settings" +#~ msgstr "Change my settings" + +#~ msgid "View" +#~ msgstr "View" + +#~ msgid "V" +#~ msgstr "V" + +#~ msgid "Remember last visited directory?" +#~ msgstr "Remember last visited directory?" + +#~ msgid "Save" +#~ msgstr "Save" + +#~ msgid "Save & Quit" +#~ msgstr "Save & Quit" + +#~ msgid "Quit" +#~ msgstr "Quit" + +#~ msgid "all/none" +#~ msgstr "all/none" + +#~ msgid "No files in this folder" +#~ msgstr "No files in this folder" + +#~ msgid "Domain hosting" +#~ msgstr "Domain hosting" + +#~ msgid "You cannot add any new domain, your quota is over." +#~ msgstr "You cannot add any new domain, your quota is over." + +#~ msgid "Contact your administrator for more information." +#~ msgstr "Contact your administrator for more information." + +#~ msgid "Domain name" +#~ msgstr "Domain name" + +#~ msgid "" +#~ "If you don't want to host in our server the DNS of your domain, don't " +#~ "check the box 'host my dns here'. If you don't know what it mean, leave " +#~ "it checked." +#~ msgstr "" +#~ "If you don't want to host in our server the DNS of your domain, don't " +#~ "check the box 'host my dns here'. If you don't know what it mean, leave " +#~ "it checked." + +#~ msgid "host my dns here" +#~ msgstr "host my dns here" + +#~ msgid "Add a domain" +#~ msgstr "Add a domain" + +#~ msgid "Add this domain" +#~ msgstr "Add this domain" + +#~ msgid "Your new domain %s has been successfully installed" +#~ msgstr "Your new domain %s has been successfully installed" + +#~ msgid "Whois result on the domain" +#~ msgstr "Whois result on the domain" + +#~ msgid "Confirm the deletion of domain %s" +#~ msgstr "Confirm the deletion of domain %s" + +#~ msgid "This will delete the related sub-domains too." +#~ msgstr "This will delete the related sub-domains too." + +#~ msgid "Domain %s deleted" +#~ msgstr "Domain %s deleted" + +#~ msgid "The domain %s has been successfully deleted." +#~ msgstr "The domain %s has been successfully deleted." + +#~ msgid "Editing domain %s" +#~ msgstr "Editing domain %s" + +#~ msgid "Subdomains" +#~ msgstr "Subdomains" + +#~ msgid "Domains" +#~ msgstr "Domains" + +#~ msgid "Add a subdomain" +#~ msgstr "Add a subdomain" + +#~ msgid "Locally managed" +#~ msgstr "Locally managed" + +#~ msgid "URL redirection" +#~ msgstr "URL redirection" + +#~ msgid "IP redirection" +#~ msgstr "IP redirection" + +#~ msgid "Webmail access" +#~ msgstr "Webmail access" + +#~ msgid "DNS parameters" +#~ msgstr "DNS parameters" + +#~ msgid "Manage the DNS on the server ?" +#~ msgstr "Manage the DNS on the server ?" + +#~ msgid "MX Field" +#~ msgstr "MX Field" + +#~ msgid "Submit the changes" +#~ msgstr "Submit the changes" + +#~ msgid "Delete %s" +#~ msgstr "Delete %s" + +#~ msgid "" +#~ "The domain %s has been changed. The modifications will take effect in 5 " +#~ "minutes." +#~ msgstr "" +#~ "The domain %s has been changed. The modifications will take effect in 5 " +#~ "minutes." + +#~ msgid "Deleting subdomain %s" +#~ msgstr "Deleting subdomain %s" + +#~ msgid "WARNING : Confirm the deletion of the subdomain" +#~ msgstr "WARNING : Confirm the deletion of the subdomain" + +#~ msgid "The modifications will take effect in 5 minutes." +#~ msgstr "The modifications will take effect in 5 minutes." + +#~ msgid "You cannot add any new ftp account, your quota is over." +#~ msgstr "You cannot add any new ftp account, your quota is over." + +#~ msgid "Create a new ftp account" +#~ msgstr "Create a new ftp account" + +#~ msgid "Create this new FTP account." +#~ msgstr "Create this new FTP account." + +#~ msgid "The ftp account %s has been successfully deleted" +#~ msgstr "The ftp account %s has been successfully deleted" + +#~ msgid "Deleting an FTP account" +#~ msgstr "Deleting an FTP account" + +#~ msgid "The FTP account has been successfully created" +#~ msgstr "The FTP account has been successfully created" + +#~ msgid "No account selected!" +#~ msgstr "No account selected!" + +#~ msgid "The ftp account has been successfully changed" +#~ msgstr "The ftp account has been successfully changed" + +#~ msgid "Editing an FTP account" +#~ msgstr "Editing an FTP account" + +#~ msgid "Change this FTP account" +#~ msgstr "Change this FTP account" + +#~ msgid "FTP accounts list" +#~ msgstr "FTP accounts list" + +#~ msgid "<-No Password->" +#~ msgstr "<-No Password->" + +#~ msgid "FTP accounts" +#~ msgstr "FTP accounts" + +#~ msgid "Protect a folder" +#~ msgstr "Protect a folder" + +#~ msgid "The folder must exists." +#~ msgstr "The folder must exists." + +#~ msgid "Protect this folder" +#~ msgstr "Protect this folder" + +#~ msgid "Adding a username in %s" +#~ msgstr "Adding a username in %s" + +#~ msgid "Add this user" +#~ msgstr "Add this user" + +#~ msgid "The protected folder %s has been successfully unprotected" +#~ msgstr "The protected folder %s has been successfully unprotected" + +#~ msgid "Delete a protected folder" +#~ msgstr "Delete a protected folder" + +#~ msgid "Change the user %s in the protected folder %s" +#~ msgstr "Change the user %s in the protected folder %s" + +#~ msgid "The password of the user %s has been successfully changed" +#~ msgstr "The password of the user %s has been successfully changed" + +#~ msgid "No folder selected!" +#~ msgstr "No folder selected!" + +#~ msgid "List of authorized user in folder %s" +#~ msgstr "List of authorized user in folder %s" + +#~ msgid "No authorized user in %s" +#~ msgstr "No authorized user in %s" + +#~ msgid "Add a username" +#~ msgstr "Add a username" + +#~ msgid "Delete the checked users" +#~ msgstr "Delete the checked users" + +#~ msgid "Editing user %s in the protected folder %s" +#~ msgstr "Editing user %s in the protected folder %s" + +#~ msgid "New password" +#~ msgstr "New password" + +#~ msgid "Change the password" +#~ msgstr "Change the password" + +#~ msgid "Unprotect the checked folders" +#~ msgstr "Unprotect the checked folders" + +#~ msgid "Protected folders" +#~ msgstr "Protected folders" + +#~ msgid "Add a mail to the domain %s" +#~ msgstr "Add a mail to the domain %s" + +#~ msgid "Create this mailbox" +#~ msgstr "Create this mailbox" + +#~ msgid "Is it a POP account?" +#~ msgstr "Is it a POP account?" + +#~ msgid "Other recipients" +#~ msgstr "Other recipients" + +#~ msgid "One email per line" +#~ msgstr "One email per line" + +#~ msgid "The mailbox %s has been successfully created" +#~ msgstr "The mailbox %s has been successfully created" + +#~ msgid "The mailbox %s does not exist!" +#~ msgstr "The mailbox %s does not exist!" + +#~ msgid "The mailbox %s has been successfully changed" +#~ msgstr "The mailbox %s has been successfully changed" + +#~ msgid "Edit a mailbox of the domain %s" +#~ msgstr "Edit a mailbox of the domain %s" + +#~ msgid "Edit the mailbox %s" +#~ msgstr "Edit the mailbox %s" + +#~ msgid "Change this mailbox" +#~ msgstr "Change this mailbox" + +#~ msgid "The mailbox %s has been successfully changed" +#~ msgstr "The mailbox %s has been successfully changed" + +#~ msgid "Mailbox list of the domain %s" +#~ msgstr "Mailbox list of the domain %s" + +#~ msgid "Action" +#~ msgstr "Action" + +#~ msgid "Size" +#~ msgstr "Size" + +#~ msgid "Delete the selected mailboxes" +#~ msgstr "Delete the selected mailboxes" + +#~ msgid "Add a mailbox on %s" +#~ msgstr "Add a mailbox on %s" + +#~ msgid "Mailboxes" +#~ msgstr "Mailboxes" + +#~ msgid "" +#~ "Enter your username and your password to connect to the virtual desktop " +#~ "interface" +#~ msgstr "" +#~ "Enter your username and your password to connect to the virtual desktop " +#~ "interface" + +#~ msgid "You must accept the session cookie to log-in" +#~ msgstr "You must accept the session cookie to log-in" + +#~ msgid "If you want to use a different language, click on the flag below" +#~ msgstr "If you want to use a different language, click on the flag below" + +#~ msgid "Username" +#~ msgstr "Username" + +#~ msgid "Password" +#~ msgstr "Password" + +#~ msgid "You cannot change your password" +#~ msgstr "You cannot change your password" + +#~ msgid "Administration of" +#~ msgstr "Administration of" + +#~ msgid "AlternC Desktop" +#~ msgstr "AlternC Desktop" + +#~ msgid "Last Login: " +#~ msgstr "Last Login: " + +#~ msgid "%1$d login failed since last login" +#~ msgstr "%1$d login failed since last login" + +#~ msgid "from: %1$s " +#~ msgstr "from: %1$s " + +#~ msgid "Online help" +#~ msgstr "Online help" + +#~ msgid "Change the email of the account" +#~ msgstr "Change the email of the account" + +#~ msgid "Help" +#~ msgstr "Help" + +#~ msgid "MySQL Databases" +#~ msgstr "MySQL Databases" + +#~ msgid "SQL Server" +#~ msgstr "SQL Server" + +#~ msgid "Database" +#~ msgstr "Database" + +#~ msgid "Delete the checked databases" +#~ msgstr "Delete the chosen databases" + +#~ msgid "Get the current SQL parameters" +#~ msgstr "Get the current SQL settings" + +#~ msgid "Confirm the deletion of the following SQL databases" +#~ msgstr "Confirm the deletion of the following SQL databases" + +#~ msgid "This will delete all the tables currently in those db." +#~ msgstr "This will delete all the tables in the database." + +#~ msgid "The database %s has been successfully deleted" +#~ msgstr "The database '%s' has been successfully deleted" + +#~ msgid "You currently have no database defined" +#~ msgstr "Your don't have a database yet" + +#~ msgid "Restore a SQL backup" +#~ msgstr "Restore a SQL backup" + +#~ msgid "Please enter the filename containing SQL data to be restored." +#~ msgstr "" +#~ "Please enter the filename containing the SQL data that need restoring." + +#~ msgid "Note: If the filename ends with .gz, it will be uncompressed before." +#~ msgstr "" +#~ "Note: If the filename ends up with .gz, it will be uncompressed first." + +#~ msgid "Restore my database" +#~ msgstr "Restore a database" + +#~ msgid "" +#~ "Your database has been restored, check out the previous text for error " +#~ "messages." +#~ msgstr "" +#~ "Your database has been restored, check the previous text for error " +#~ "messages." + +#~ msgid "" +#~ "Enter the new password of your SQL database and click 'change the " +#~ "password' to change it" +#~ msgstr "Enter your new password to your SQL database" + +#~ msgid "No backup" +#~ msgstr "No backup" + +#~ msgid "Weekly backup" +#~ msgstr "Weekly backup" + +#~ msgid "Daily backup" +#~ msgstr "Daily backup" + +#~ msgid "Change the SQL password" +#~ msgstr "Change your SQL password" + +#~ msgid "Do sql backup?" +#~ msgstr "Backup frequency:" + +#~ msgid "Change the SQL backup parameters" +#~ msgstr "Modify SQL backup settings" + +#~ msgid "How many backup should be kept?" +#~ msgstr "How long do you want to keep them (days/weeks)?" + +#~ msgid "Compress the backups? (gzip)" +#~ msgstr "Do you want to compress the backups? (gzip)" + +#~ msgid "In which folder do you want to store the backups?" +#~ msgstr "Which folder do you want to store the backups in?" + +#~ msgid "Your current settings are" +#~ msgstr "Your current settings are:" + +#~ msgid "Create my main database" +#~ msgstr "Create my main database" + +#~ msgid "Databases" +#~ msgstr "Databases" + +#~ msgid "SQL Admin" +#~ msgstr "SQL Admin" + +#~ msgid "Create a new database" +#~ msgstr "Create a database" + +#~ msgid "Create this new database." +#~ msgstr "Create the database." + +#~ msgid "Backup" +#~ msgstr "Backup" + +#~ msgid "Restore" +#~ msgstr "Restore" + +#~ msgid "Web Statistics" +#~ msgstr "Web Statistics" + +#~ msgid "You cannot add any new statistics, your quota is over." +#~ msgstr "You cannot add any new statistics, your quota is over." + +#~ msgid "Your backup parameters has been successfully changed." +#~ msgstr "Your backup parameters has been successfully changed." + +#~ msgid "New Statistics" +#~ msgstr "New Statistics" + +#~ msgid "Language" +#~ msgstr "Language" + +#~ msgid "Create those statistics" +#~ msgstr "Create those statistics" + +#~ msgid "WARNING" +#~ msgstr "WARNING" + +#~ msgid "" +#~ "The statistics %s has been successfully deleted (the stats files must be " +#~ "manually deleted)" +#~ msgstr "" +#~ "The statistics %s has been successfully deleted (the stats files must be " +#~ "manually deleted)" + +#~ msgid "Delete statistics" +#~ msgstr "Delete statistics" + +#~ msgid "The statistics has been successfully created" +#~ msgstr "The statistics has been successfully created" + +#~ msgid "No Statistics selected!" +#~ msgstr "No Statistics selected!" + +#~ msgid "The Statistics has been successfully changed" +#~ msgstr "The Statistics has been successfully changed" + +#~ msgid "Change the Statistics" +#~ msgstr "Change the Statistics" + +#~ msgid "Change those Statistics." +#~ msgstr "Change those Statistics." + +#~ msgid "Statistics List" +#~ msgstr "Statistics List" + +#~ msgid "Create new Statistics" +#~ msgstr "Create new Statistics" + +#~ msgid "Delete the checked Statistics" +#~ msgstr "Delete the checked Statistics" + +#~ msgid "Byte" +#~ msgstr "Byte" + +#~ msgid "Create new Raw Statistics (apache)" +#~ msgstr "Create new Raw Statistics (apache)" + +#~ msgid "Create those raw statistics" +#~ msgstr "Create those raw statistics" + +#~ msgid "New Raw Statistics (apache)" +#~ msgstr "New Raw Statistics (apache)" diff --git a/stable-1.0/bureau/locales/en_US/LC_MESSAGES/messages.po b/stable-1.0/bureau/locales/en_US/LC_MESSAGES/messages.po new file mode 100644 index 00000000..4eef0835 --- /dev/null +++ b/stable-1.0/bureau/locales/en_US/LC_MESSAGES/messages.po @@ -0,0 +1,2799 @@ +#: ../admin/adm_add.php:36 ../admin/adm_deactivate.php:41 +#: ../admin/adm_defquotas.php:35 ../admin/adm_dnsweberror.php:33 +#: ../admin/adm_doadd.php:35 ../admin/adm_dodefquotas.php:35 +#: ../admin/adm_dodel.php:33 ../admin/adm_dodel.php:45 +#: ../admin/adm_doedit.php:35 ../admin/adm_doedit.php:42 +#: ../admin/adm_domlock.php:33 ../admin/adm_doms.php:33 +#: ../admin/adm_domstypedoedit.php:4 ../admin/adm_domstypeedit.php:32 +#: ../admin/adm_domstype.php:33 ../admin/adm_domstyperegenerate.php:4 +#: ../admin/adm_donosu.php:33 ../admin/adm_dorenew.php:34 +#: ../admin/adm_dorenew.php:38 ../admin/adm_dosu.php:33 +#: ../admin/adm_edit.php:36 ../admin/adm_edit.php:48 ../admin/adm_list.php:37 +#: ../admin/adm_list.php:58 ../admin/adm_login.php:74 +#: ../admin/adm_login.php:86 ../admin/adm_mxaccount.php:33 +#: ../admin/adm_panel.php:33 ../admin/adm_passpolicy.php:30 +#: ../admin/adm_quotadoedit.php:33 ../admin/adm_quotaedit.php:34 +#: ../admin/adm_slaveaccount.php:33 ../admin/adm_slaveip.php:33 +#: ../admin/adm_tldadd.php:33 ../admin/adm_tlddoadd.php:33 +#: ../admin/adm_tlddoedit.php:33 ../admin/adm_tldedit.php:33 +#: ../admin/adm_tld.php:33 ../admin/adm_variables.php:33 +#: ../admin/quotas_users.php:10 ../class/reset_stats_conf.php:6 +msgid "This page is restricted to authorized staff" +msgstr "" + +#: ../admin/adm_add.php:46 +msgid "New AlternC account" +msgstr "" + +#: ../admin/adm_add.php:56 ../admin/adm_edit.php:69 +#: ../admin/adm_quotaedit.php:68 ../admin/ftp_add.php:54 +#: ../admin/ftp_edit.php:59 ../admin/ftp_list.php:72 +#: ../admin/hta_adduser.php:53 ../admin/hta_edit.php:62 +#: ../admin/hta_edit.php:102 ../admin/index.php:76 +#: ../admin/sql_getparam.php:50 ../admin/sql_list.php:94 +#: ../admin/sql_passchg.php:51 ../admin/sql_users_add.php:64 +msgid "Username" +msgstr "" + +#: ../admin/adm_add.php:60 +msgid "Initial password" +msgstr "" + +#: ../admin/adm_add.php:64 ../admin/adm_edit.php:89 ../admin/ftp_add.php:65 +#: ../admin/ftp_edit.php:71 ../admin/hta_adduser.php:61 +#: ../admin/hta_edit.php:110 ../admin/hta_edituser.php:55 +#: ../admin/mail_add.php:71 ../admin/mail_edit.php:79 +#: ../admin/sql_users_add.php:72 ../admin/sql_users_password.php:59 +msgid "Confirm password" +msgstr "" + +#: ../admin/adm_add.php:68 ../admin/adm_edit.php:93 +msgid "Can he change its password" +msgstr "" + +#: ../admin/adm_add.php:70 ../admin/adm_dodefquotas.php:73 +#: ../admin/adm_dodel.php:81 ../admin/adm_domstype.php:83 +#: ../admin/adm_domstype.php:84 ../admin/adm_domstype.php:85 +#: ../admin/adm_edit.php:78 ../admin/adm_edit.php:95 +#: ../admin/adm_passpolicy.php:112 ../admin/adm_passpolicy.php:158 +#: ../admin/bro_main.php:94 ../admin/dom_dodel.php:74 +#: ../admin/dom_edit.php:182 ../admin/dom_edit.php:194 +#: ../admin/dom_subdel.php:71 ../admin/mail_add.php:65 +#: ../admin/mail_edit.php:73 ../admin/sql_bck.php:87 ../admin/sql_del.php:81 +#: ../admin/sql_users_del.php:70 ../admin/trash_dateselect.php:39 +msgid "No" +msgstr "" + +#: ../admin/adm_add.php:71 ../admin/adm_dodefquotas.php:72 +#: ../admin/adm_dodel.php:80 ../admin/adm_domstype.php:83 +#: ../admin/adm_domstype.php:84 ../admin/adm_domstype.php:85 +#: ../admin/adm_edit.php:79 ../admin/adm_edit.php:96 +#: ../admin/adm_passpolicy.php:113 ../admin/adm_passpolicy.php:158 +#: ../admin/bro_main.php:93 ../admin/dom_dodel.php:74 +#: ../admin/dom_edit.php:181 ../admin/dom_edit.php:193 +#: ../admin/dom_subdel.php:70 ../admin/mail_add.php:66 +#: ../admin/mail_edit.php:74 ../admin/sql_bck.php:88 ../admin/sql_del.php:81 +#: ../admin/sql_users_del.php:70 ../admin/trash_dateselect.php:40 +msgid "Yes" +msgstr "" + +#: ../admin/adm_add.php:75 ../admin/adm_edit.php:100 +msgid "Notes" +msgstr "" + +#: ../admin/adm_add.php:79 ../admin/adm_edit.php:104 +msgid "Surname" +msgstr "" + +#: ../admin/adm_add.php:79 ../admin/adm_edit.php:104 +msgid "First Name" +msgstr "" + +#: ../admin/adm_add.php:83 ../admin/adm_edit.php:108 ../admin/mail_add.php:60 +#: ../admin/mail_list.php:104 +msgid "Email address" +msgstr "" + +#: ../admin/adm_add.php:87 ../admin/adm_dodefquotas.php:43 +#: ../admin/adm_dodefquotas.php:45 ../admin/adm_dodefquotas.php:52 +#: ../admin/adm_dodefquotas.php:54 ../admin/adm_edit.php:112 +msgid "Account type" +msgstr "" + +#: ../admin/adm_add.php:105 +#, php-format +msgid "Install the domain" +msgstr "" + +#: ../admin/adm_add.php:121 +msgid "Create this AlternC account" +msgstr "" + +#: ../admin/adm_add.php:122 ../admin/adm_deactivate.php:61 +#: ../admin/adm_domstypeedit.php:122 ../admin/adm_edit.php:131 +#: ../admin/adm_quotaedit.php:87 ../admin/adm_tldadd.php:65 +#: ../admin/adm_tldedit.php:70 ../admin/bro_pref.php:134 +#: ../admin/browseforfolder.php:136 ../admin/ftp_add.php:68 +#: ../admin/ftp_edit.php:75 ../admin/hta_adduser.php:67 +#: ../admin/mail_add.php:88 ../admin/mail_edit.php:98 ../admin/sql_bck.php:105 +#: ../admin/sql_passchg.php:57 ../admin/sql_users_add.php:78 +#: ../admin/sql_users_password.php:65 +msgid "Cancel" +msgstr "" + +#: ../admin/adm_deactivate.php:36 +msgid "Missing uid" +msgstr "" + +#: ../admin/adm_deactivate.php:47 +msgid "User does not exist" +msgstr "" + +#: ../admin/adm_deactivate.php:52 ../admin/adm_deactivate.php:60 +msgid "Confirm" +msgstr "" + +#: ../admin/adm_deactivate.php:53 +msgid "WARNING: experimental feature, use at your own risk" +msgstr "" + +#: ../admin/adm_deactivate.php:54 +msgid "" +"The following domains will be deactivated and redirected to the URL entered " +"in the following box. A backup of the domain configuration will be displayed " +"as a serie of SQL request that you can run to restore the current " +"configuration if you want. Click confirm if you are sure you want to " +"deactivate all this user's domains." +msgstr "" + +#: ../admin/adm_deactivate.php:59 +msgid "Redirection URL:" +msgstr "" + +#: ../admin/adm_deactivate.php:64 +msgid "Domains of user: " +msgstr "" + +#: ../admin/adm_deactivate.php:67 +msgid "Missing redirect url." +msgstr "" + +#: ../admin/adm_deactivate.php:87 +#, php-format +msgid "-- Redirecting all domains and subdomains of the user %s to %s\n" +msgstr "" + +#: ../admin/adm_defquotas.php:42 ../admin/adm_panel.php:54 +msgid "Change the default quotas" +msgstr "" + +#: ../admin/adm_defquotas.php:55 +msgid "Add account type" +msgstr "" + +#: ../admin/adm_defquotas.php:70 +msgid "Delete account type" +msgstr "" + +#: ../admin/adm_defquotas.php:75 +msgid "" +"Here is the list of the quotas on the server for the new accounts. If you " +"want to change them, enter new values" +msgstr "" + +#: ../admin/adm_defquotas.php:89 +msgid "Accounts of type" +msgstr "" + +#: ../admin/adm_defquotas.php:91 ../admin/adm_list.php:128 +#: ../admin/adm_list.php:173 ../admin/adm_list.php:193 +#: ../admin/menu_quota.php:52 +msgid "Quotas" +msgstr "" + +#: ../admin/adm_defquotas.php:91 +msgid "Default Value" +msgstr "" + +#: ../admin/adm_defquotas.php:109 +msgid "Edit the default quotas" +msgstr "" + +#: ../admin/adm_dnsweberror.php:40 +msgid "Domains and Websites having errors" +msgstr "" + +#: ../admin/adm_dnsweberror.php:50 +msgid "List of the websites having errors in the domain database." +msgstr "" + +#: ../admin/adm_dnsweberror.php:54 ../admin/adm_dnsweberror.php:87 +msgid "Uid" +msgstr "" + +#: ../admin/adm_dnsweberror.php:55 ../admin/adm_dnsweberror.php:88 +#: ../admin/adm_list.php:124 ../admin/adm_list.php:207 +#: ../admin/adm_list.php:208 ../admin/adm_list.php:209 +#: ../admin/quotas_oneuser.php:8 ../admin/quotas_users.php:168 +msgid "Account" +msgstr "" + +#: ../admin/adm_dnsweberror.php:56 ../admin/adm_dnsweberror.php:89 +#: ../admin/dom_add.php:57 ../admin/sta2_list.php:58 +msgid "Domain name" +msgstr "" + +#: ../admin/adm_dnsweberror.php:57 +msgid "FQDN" +msgstr "" + +#: ../admin/adm_dnsweberror.php:58 ../admin/adm_variables.php:57 +msgid "Value" +msgstr "" + +#: ../admin/adm_dnsweberror.php:59 ../admin/adm_domstypeedit.php:76 +#: ../admin/adm_domstype.php:59 +msgid "Description" +msgstr "" + +#: ../admin/adm_dnsweberror.php:60 +msgid "Web Result field" +msgstr "" + +#: ../admin/adm_dnsweberror.php:84 +msgid "List of the domain names having errors in the domain database." +msgstr "" + +#: ../admin/adm_dnsweberror.php:90 +msgid "DNS Result field" +msgstr "" + +#: ../admin/adm_doadd.php:40 ../admin/adm_doedit.php:47 +#: ../admin/ftp_doadd.php:33 ../admin/ftp_doedit.php:36 +#: ../admin/hta_doadduser.php:33 ../admin/hta_doedituser.php:41 +#: ../admin/mail_doadd.php:44 ../admin/mail_doedit.php:49 +msgid "Passwords do not match" +msgstr "" + +#: ../admin/adm_doadd.php:71 +msgid "The new member has been successfully created" +msgstr "" + +#: ../admin/adm_dodefquotas.php:43 +msgid "added" +msgstr "" + +#: ../admin/adm_dodefquotas.php:45 +msgid "could not be added" +msgstr "" + +#: ../admin/adm_dodefquotas.php:52 +msgid "deleted" +msgstr "" + +#: ../admin/adm_dodefquotas.php:54 +msgid "could not be deleted" +msgstr "" + +#: ../admin/adm_dodefquotas.php:63 +#, php-format +msgid "Deleting quota %s" +msgstr "" + +#: ../admin/adm_dodefquotas.php:69 +msgid "WARNING : Confirm the deletion of the quota" +msgstr "" + +#: ../admin/adm_dodefquotas.php:92 +msgid "Default quotas successfully changed" +msgstr "" + +#: ../admin/adm_dodefquotas.php:94 +msgid "Default quotas could not be set." +msgstr "" + +#: ../admin/adm_dodel.php:49 +#, php-format +msgid "Member '%s' does not exist" +msgstr "" + +#: ../admin/adm_dodel.php:51 +#, php-format +msgid "Member %s successfully deleted" +msgstr "" + +#: ../admin/adm_dodel.php:58 +msgid "Please check the accounts you want to delete" +msgstr "" + +#: ../admin/adm_dodel.php:66 +#, php-format +msgid "Deleting users" +msgstr "" + +#: ../admin/adm_dodel.php:70 +msgid "WARNING : Confirm the deletion of the users" +msgstr "" + +#: ../admin/adm_doedit.php:60 +msgid "The member has been successfully edited" +msgstr "" + +#: ../admin/adm_doms.php:40 ../admin/adm_panel.php:53 +msgid "Manage installed domains" +msgstr "" + +#: ../admin/adm_doms.php:53 +msgid "" +"Here is the list of the domains installed on this server. You can remove a " +"domain if it does not exist or does not point to our server anymore. You can " +"also set the 'Lock' flag on a domain so that the user will not be able to " +"change any DNS parameter or delete this domain from his account." +msgstr "" + +#: ../admin/adm_doms.php:56 +msgid "" +"The domain OK column are green when the domain exists in the worldwide " +"registry and has a proper NS,MX and IP depending on its configuration. It is " +"red if we have serious doubts about its NS, MX or IP configuration. Contact " +"the user of this domain or a system administrator." +msgstr "" + +#: ../admin/adm_doms.php:59 +msgid "If you want to force the check of NS, MX, IP on domains, click the link" +msgstr "" + +#: ../admin/adm_doms.php:59 +msgid "Show domain list with refreshed checked NS, MX, IP information" +msgstr "" + +#: ../admin/adm_doms.php:63 ../admin/adm_mxaccount.php:81 +#: ../admin/adm_slaveaccount.php:80 ../admin/adm_slaveip.php:80 +msgid "Action" +msgstr "" + +#: ../admin/adm_doms.php:63 +msgid "Domain" +msgstr "" + +#: ../admin/adm_doms.php:63 +msgid "Creator" +msgstr "" + +#: ../admin/adm_doms.php:63 ../admin/adm_doms.php:81 ../admin/adm_list.php:166 +#: ../admin/adm_list.php:191 +msgid "Connect as" +msgstr "" + +#: ../admin/adm_doms.php:63 +msgid "OK?" +msgstr "" + +#: ../admin/adm_doms.php:63 ../admin/dom_edit.php:97 +msgid "Status" +msgstr "" + +#: ../admin/adm_doms.php:72 +msgid "Locked Domain" +msgstr "" + +#: ../admin/adm_doms.php:75 +msgid "Unlock" +msgstr "" + +#: ../admin/adm_doms.php:75 +msgid "Lock" +msgstr "" + +#: ../admin/adm_domstypeedit.php:58 +msgid "Edit a domain type" +msgstr "" + +#: ../admin/adm_domstypeedit.php:72 ../admin/adm_domstype.php:58 +msgid "Name" +msgstr "" + +#: ../admin/adm_domstypeedit.php:80 +msgid "Target type" +msgstr "" + +#: ../admin/adm_domstypeedit.php:90 ../admin/adm_domstype.php:61 +msgid "Entry" +msgstr "" + +#: ../admin/adm_domstypeedit.php:94 +msgid "Compatibility" +msgstr "" + +#: ../admin/adm_domstypeedit.php:94 ../admin/adm_domstype.php:62 +msgid "Enter comma-separated name of other types" +msgstr "" + +#: ../admin/adm_domstypeedit.php:98 ../admin/dom_edit.php:125 +msgid "Enabled" +msgstr "" + +#: ../admin/adm_domstypeedit.php:108 +msgid "Do only a DNS entry" +msgstr "" + +#: ../admin/adm_domstypeedit.php:112 +msgid "Domain must have our DNS" +msgstr "" + +#: ../admin/adm_domstypeedit.php:116 +msgid "Is it an advanced option?" +msgstr "" + +#: ../admin/adm_domstypeedit.php:121 +msgid "Change this domain type" +msgstr "" + +#: ../admin/adm_domstype.php:40 ../admin/adm_panel.php:65 +msgid "Manage domains type" +msgstr "" + +#: ../admin/adm_domstype.php:42 +msgid "" +"If you don't know what this page is about, don't touch anything, and read " +"AlternC documentation about domain types" +msgstr "" + +#: ../admin/adm_domstype.php:52 +msgid "Here is the list of domain types." +msgstr "" + +#: ../admin/adm_domstype.php:54 +msgid "Create a domain type" +msgstr "" + +#: ../admin/adm_domstype.php:60 +msgid "Target" +msgstr "" + +#: ../admin/adm_domstype.php:62 +msgid "Compatible with" +msgstr "" + +#: ../admin/adm_domstype.php:63 +msgid "Enabled?" +msgstr "" + +#: ../admin/adm_domstype.php:64 +msgid "Only DNS?" +msgstr "" + +#: ../admin/adm_domstype.php:65 +msgid "Need to be DNS?" +msgstr "" + +#: ../admin/adm_domstype.php:66 +msgid "Advanced?" +msgstr "" + +#: ../admin/adm_domstype.php:75 ../admin/adm_list.php:170 +#: ../admin/adm_list.php:192 ../admin/adm_passpolicy.php:152 +#: ../admin/adm_tld.php:76 ../admin/dom_edit.php:106 ../admin/ftp_list.php:82 +#: ../admin/mail_list.php:113 ../admin/sta2_list.php:68 +msgid "Edit" +msgstr "" + +#: ../admin/adm_domstype.php:76 +msgid "Regenerate" +msgstr "" + +#: ../admin/adm_donosu.php:45 +msgid "This account is now a normal account" +msgstr "" + +#: ../admin/adm_dorenew.php:46 +msgid "The member has been successfully renewed" +msgstr "" + +#: ../admin/adm_dosu.php:45 +msgid "This account is now an administrator account" +msgstr "" + +#: ../admin/adm_edit.php:57 +msgid "Member Edition" +msgstr "" + +#: ../admin/adm_edit.php:73 +msgid "Account Enabled?" +msgstr "" + +#: ../admin/adm_edit.php:76 +msgid "You cannot disable your own account." +msgstr "" + +#: ../admin/adm_edit.php:85 ../admin/adm_mxaccount.php:81 +#: ../admin/adm_mxaccount.php:101 ../admin/adm_slaveaccount.php:80 +#: ../admin/adm_slaveaccount.php:100 ../admin/ftp_add.php:64 +#: ../admin/ftp_edit.php:70 ../admin/hta_adduser.php:57 +#: ../admin/hta_edit.php:106 ../admin/index.php:77 ../admin/index.php:94 +#: ../admin/sql_getparam.php:54 ../admin/sql_list.php:95 +#: ../admin/sql_passchg.php:52 ../admin/sql_users_add.php:68 +#: ../admin/sql_users_list.php:52 ../admin/sql_users_password.php:55 +msgid "Password" +msgstr "" + +#: ../admin/adm_edit.php:123 +msgid "Reset quotas to default?" +msgstr "" + +#: ../admin/adm_edit.php:126 +msgid "Period" +msgstr "" + +#: ../admin/adm_edit.php:130 +msgid "Edit this account" +msgstr "" + +#: ../admin/adm_edit.php:143 +msgid "Renew for" +msgstr "" + +#: ../admin/adm_edit.php:144 +msgid "period(s)" +msgstr "" + +#: ../admin/adm_edit.php:147 +msgid "Renew" +msgstr "" + +#: ../admin/adm_edit.php:160 +msgid "This account is a super-admin account" +msgstr "" + +#: ../admin/adm_edit.php:162 +msgid "" +"There is only one administrator account, you cannot turn this account back " +"to normal" +msgstr "" + +#: ../admin/adm_edit.php:165 +msgid "Turn this account back to normal" +msgstr "" + +#: ../admin/adm_edit.php:168 +msgid "Make this account a super admin one" +msgstr "" + +#: ../admin/adm_edit.php:175 +#, php-format +msgid "Account created by %s" +msgstr "" + +#: ../admin/adm_list.php:66 +msgid "AlternC account list" +msgstr "" + +#: ../admin/adm_list.php:75 +msgid "Here is the list of hosted AlternC accounts" +msgstr "" + +#: ../admin/adm_list.php:75 +#, php-format +msgid "%s accounts" +msgstr "" + +#: ../admin/adm_list.php:79 +msgid "List all AlternC accounts" +msgstr "" + +#: ../admin/adm_list.php:89 +msgid "Or only the accounts of:" +msgstr "" + +#: ../admin/adm_list.php:94 +msgid "List only my accounts" +msgstr "" + +#: ../admin/adm_list.php:96 +msgid "Create a new AlternC account" +msgstr "" + +#: ../admin/adm_list.php:100 +msgid "No account defined for now" +msgstr "" + +#: ../admin/adm_list.php:114 ../admin/adm_list.php:198 +#: ../admin/adm_list.php:281 ../admin/ftp_list.php:90 +msgid "Delete checked accounts" +msgstr "" + +#: ../admin/adm_list.php:118 ../admin/adm_list.php:202 +msgid "Minimal view" +msgstr "" + +#: ../admin/adm_list.php:119 ../admin/adm_list.php:203 +msgid "Complete view" +msgstr "" + +#: ../admin/adm_list.php:125 +msgid "Manager" +msgstr "" + +#: ../admin/adm_list.php:126 +msgid "Created by" +msgstr "" + +#: ../admin/adm_list.php:127 +msgid "Created on" +msgstr "" + +#: ../admin/adm_list.php:129 +msgid "Last login" +msgstr "" + +#: ../admin/adm_list.php:130 +msgid "Last ip" +msgstr "" + +#: ../admin/adm_list.php:131 +msgid "Fails" +msgstr "" + +#: ../admin/adm_list.php:132 ../admin/main.php:80 +msgid "Expiry" +msgstr "" + +#: ../admin/adm_list.php:177 ../admin/dom_edit.php:126 +msgid "Disable" +msgstr "" + +#: ../admin/adm_list.php:191 ../admin/adm_list.php:229 +#: ../admin/adm_list.php:246 ../admin/adm_list.php:266 +msgid "C" +msgstr "" + +#: ../admin/adm_list.php:192 ../admin/adm_list.php:230 +#: ../admin/adm_list.php:247 ../admin/adm_list.php:267 +msgid "E" +msgstr "" + +#: ../admin/adm_list.php:193 ../admin/adm_list.php:232 +#: ../admin/adm_list.php:249 ../admin/adm_list.php:269 +msgid "Q" +msgstr "" + +#: ../admin/adm_login.php:45 ../admin/adm_login.php:52 +msgid "Your authentication information are incorrect" +msgstr "" + +#: ../admin/adm_login.php:111 +msgid "Member login" +msgstr "" + +#: ../admin/adm_mxaccount.php:48 ../admin/adm_slaveaccount.php:48 +msgid "The requested account has been deleted. It is now denied." +msgstr "" + +#: ../admin/adm_mxaccount.php:54 ../admin/adm_slaveaccount.php:54 +msgid "The requested account address has been created. It is now allowed." +msgstr "" + +#: ../admin/adm_mxaccount.php:63 ../admin/adm_panel.php:63 +msgid "Manage allowed accounts for secondary mx" +msgstr "" + +#: ../admin/adm_mxaccount.php:77 +msgid "" +"Here is the list of the allowed accounts for secondary mx management. You " +"can configure the alternc-secondarymx package on your secondary mx server " +"and give him the login/pass that will grant him access to your server's mx-" +"hosted domain list. " +msgstr "" + +#: ../admin/adm_mxaccount.php:81 ../admin/adm_mxaccount.php:101 +#: ../admin/adm_slaveaccount.php:80 ../admin/adm_slaveaccount.php:100 +msgid "Login" +msgstr "" + +#: ../admin/adm_mxaccount.php:89 ../admin/adm_slaveaccount.php:88 +#: ../admin/adm_slaveip.php:88 ../admin/bro_main.php:269 +#: ../admin/dom_edit.php:109 +msgid "Delete" +msgstr "" + +#: ../admin/adm_mxaccount.php:98 +msgid "" +"If you want to allow a new server to access your mx-hosted domain list, give " +"him an account." +msgstr "" + +#: ../admin/adm_mxaccount.php:107 ../admin/adm_slaveaccount.php:106 +msgid "Add this account to the allowed list" +msgstr "" + +#: ../admin/adm_panel.php:40 ../admin/menu_adm.php:44 +msgid "Admin Control Panel" +msgstr "" + +#: ../admin/adm_panel.php:51 ../admin/adm_tldadd.php:40 +#: ../admin/adm_tldedit.php:52 ../admin/adm_tld.php:50 +msgid "Manage allowed domains (TLD)" +msgstr "" + +#: ../admin/adm_panel.php:52 +msgid "Password Policies" +msgstr "" + +#: ../admin/adm_panel.php:58 +msgid "Advanced features" +msgstr "" + +#: ../admin/adm_panel.php:61 ../admin/adm_slaveip.php:62 +msgid "Manage allowed ip for slave zone transfers" +msgstr "" + +#: ../admin/adm_panel.php:62 ../admin/adm_slaveaccount.php:62 +msgid "Manage allowed accounts for slave zone transfers" +msgstr "" + +#: ../admin/adm_panel.php:64 ../admin/adm_variables.php:47 +msgid "Configure AlternC variables" +msgstr "" + +#: ../admin/adm_panel.php:66 +msgid "DNS and website having errors" +msgstr "" + +#: ../admin/adm_panel.php:67 +msgid "Account creation statistics" +msgstr "" + +#: ../admin/adm_passpolicy.php:49 +msgid "Manage Password Policy" +msgstr "" + +#: ../admin/adm_passpolicy.php:62 ../admin/adm_passpolicy.php:77 +msgid "Policy not found" +msgstr "" + +#: ../admin/adm_passpolicy.php:66 +msgid "Policy changed" +msgstr "" + +#: ../admin/adm_passpolicy.php:70 +msgid "Cannot edit the policy, an error occurred" +msgstr "" + +#: ../admin/adm_passpolicy.php:81 +msgid "Please choose which policy you want to apply to this password kind:" +msgstr "" + +#: ../admin/adm_passpolicy.php:89 +msgid "Minimum Password Size:" +msgstr "" + +#: ../admin/adm_passpolicy.php:96 +msgid "Maximum Password Size:" +msgstr "" + +#: ../admin/adm_passpolicy.php:103 +msgid "In how many classes of characters must be the password (at least):" +msgstr "" + +#: ../admin/adm_passpolicy.php:110 +msgid "Do we allow the password to be like the login?" +msgstr "" + +#: ../admin/adm_passpolicy.php:116 +msgid "Apply this password policy" +msgstr "" + +#: ../admin/adm_passpolicy.php:117 +msgid "Cancel and go back to the policy list" +msgstr "" + +#: ../admin/adm_passpolicy.php:120 +msgid "" +"The classes of characters are :
            1. Low-case letters (a-z)
            2. " +"Upper-case letters (A-Z)
            3. Figures (0-9)
            4. Ascii symbols (!\"#$" +"%&'()*+,-./:;<=>?@[\\]^_`)
            5. Non-Ascii symbols (accents...)" +msgstr "" + +#: ../admin/adm_passpolicy.php:133 +msgid "" +"Here is the list of the password policies for each place a password may be " +"needed in AlternC's services. For each of those password kind, you can " +"choose which policy will be applied to passwords. A policy is a minimum and " +"maximum password size, and how many classes of characters must appear in the " +"password. You can also forbid (or not) to use the login or part of it as a " +"password." +msgstr "" + +#: ../admin/adm_passpolicy.php:137 +msgid "Password Kind" +msgstr "" + +#: ../admin/adm_passpolicy.php:137 +msgid "Password Policy" +msgstr "" + +#: ../admin/adm_passpolicy.php:139 +msgid "Min Size" +msgstr "" + +#: ../admin/adm_passpolicy.php:140 +msgid "Max Size" +msgstr "" + +#: ../admin/adm_passpolicy.php:141 +msgid "Complexity" +msgstr "" + +#: ../admin/adm_passpolicy.php:142 +msgid "Allow Password=Login?" +msgstr "" + +#: ../admin/adm_quotadoedit.php:48 +msgid "The quotas has been successfully edited" +msgstr "" + +#: ../admin/adm_quotaedit.php:55 +msgid "Editing the quotas of a member" +msgstr "" + +#: ../admin/adm_quotaedit.php:69 ../admin/quota_show.php:42 +msgid "Quota" +msgstr "" + +#: ../admin/adm_quotaedit.php:69 ../admin/quota_show.php:42 +#: ../admin/quotas_users.php:153 ../admin/quotas_users.php:177 +msgid "Total" +msgstr "" + +#: ../admin/adm_quotaedit.php:69 ../admin/quota_show.php:42 +msgid "Used" +msgstr "" + +#: ../admin/adm_quotaedit.php:77 ../class/m_quota.php:99 +#: ../class/m_quota.php:107 ../class/m_quota.php:111 +msgid "quota_" +msgstr "" + +#: ../admin/adm_quotaedit.php:86 +msgid "Edit the quotas" +msgstr "" + +#: ../admin/adm_slaveaccount.php:76 +msgid "" +"Here is the list of the allowed accounts for slave dns synchronization. You " +"can configure the alternc-slavedns package on your slave server and give him " +"the login/pass that will grant him access to your server's domain list. " +msgstr "" + +#: ../admin/adm_slaveaccount.php:97 +msgid "" +"If you want to allow a new server to access your domain list, give him an " +"account." +msgstr "" + +#: ../admin/adm_slaveip.php:48 +msgid "" +"The requested ip address has been deleted. It will be denied in one hour." +msgstr "" + +#: ../admin/adm_slaveip.php:54 +msgid "" +"The requested ip address has been added to the list. It will be allowed in " +"one hour." +msgstr "" + +#: ../admin/adm_slaveip.php:76 +msgid "" +"Here is the list of the allowed ip or ip class for slave dns zone transfer " +"requests (AXFR). You must add the ip address of all the slave DNS you have " +"so that those slaves will be allowed to transfer the zone files. There is " +"also some defaults ip from DNS checks made by some third-party technical " +"offices such as afnic (for .fr domains)" +msgstr "" + +#: ../admin/adm_slaveip.php:80 ../admin/adm_slaveip.php:99 +msgid "IP Address" +msgstr "" + +#: ../admin/adm_slaveip.php:96 +msgid "" +"If you want to allow an ip address or class to connect to your dns server, " +"enter it here. Choose 32 as a prefix for single ip address." +msgstr "" + +#: ../admin/adm_slaveip.php:99 +msgid "Prefix" +msgstr "" + +#: ../admin/adm_slaveip.php:105 +msgid "Add this ip to the slave list" +msgstr "" + +#: ../admin/adm_tldadd.php:50 ../admin/adm_tldadd.php:64 +#: ../admin/adm_tld.php:64 ../admin/adm_tld.php:87 +msgid "Add a new TLD" +msgstr "" + +#: ../admin/adm_tldadd.php:52 +msgid "" +"Enter the new TLD (without the first dot) and choose what check should be " +"done." +msgstr "" + +#: ../admin/adm_tldadd.php:53 +msgid "" +"Warning : only some final tld are known in the whois function of AlternC, " +"please check m_dom.php accordingly." +msgstr "" + +#: ../admin/adm_tldadd.php:59 ../admin/adm_tldedit.php:64 +#: ../admin/adm_tld.php:67 +msgid "TLD" +msgstr "" + +#: ../admin/adm_tldadd.php:60 ../admin/adm_tldedit.php:65 +#: ../admin/adm_tld.php:67 +msgid "Allowed Mode" +msgstr "" + +#: ../admin/adm_tlddoadd.php:42 +msgid "The TLD has been successfully added" +msgstr "" + +#: ../admin/adm_tlddoedit.php:42 +msgid "The TLD has been successfully edited" +msgstr "" + +#: ../admin/adm_tldedit.php:60 +msgid "Edit a TLD" +msgstr "" + +#: ../admin/adm_tldedit.php:69 +msgid "Edit this TLD" +msgstr "" + +#: ../admin/adm_tld.php:41 +msgid "Some TLD cannot be deleted..." +msgstr "" + +#: ../admin/adm_tld.php:44 +msgid "The requested TLD has been deleted" +msgstr "" + +#: ../admin/adm_tld.php:62 +msgid "" +"Here is the list of the TLD allowed on this server. Each TLD can be allowed " +"or denied after some checks (whois, ns, domain exists...)" +msgstr "" + +#: ../admin/adm_tld.php:83 +msgid "Delete the checked TLD" +msgstr "" + +#: ../admin/adm_variables.php:52 +msgid "Here are the internal AlternC variables that are currently being used." +msgstr "" + +#: ../admin/adm_variables.php:57 +msgid "Names" +msgstr "" + +#: ../admin/adm_variables.php:57 +msgid "Comment" +msgstr "" + +#: ../admin/adm_variables.php:74 +msgid "Save variables" +msgstr "" + +#: ../admin/bro_editor.php:44 ../admin/bro_editor.php:50 +#, php-format +msgid "Your file %s has been saved" +msgstr "" + +#: ../admin/bro_editor.php:58 +msgid "File editing" +msgstr "" + +#: ../admin/bro_editor.php:63 +msgid "ctrl+click or shift+click and drag to resize the editing zone" +msgstr "" + +#: ../admin/bro_editor.php:67 +msgid "Save" +msgstr "" + +#: ../admin/bro_editor.php:68 +msgid "Save & Quit" +msgstr "" + +#: ../admin/bro_editor.php:69 +msgid "Quit" +msgstr "" + +#: ../admin/bro_main.php:82 +#, php-format +msgid "Deleting files and/or directories" +msgstr "" + +#: ../admin/bro_main.php:87 +msgid "WARNING: Confirm the deletion of this files" +msgstr "" + +#: ../admin/bro_main.php:133 +msgid "extracting..." +msgstr "" + +#: ../admin/bro_main.php:137 +msgid "failed" +msgstr "" + +#: ../admin/bro_main.php:140 +msgid "done" +msgstr "" + +#: ../admin/bro_main.php:149 ../admin/menu_brouteur.php:34 +msgid "File browser" +msgstr "" + +#: ../admin/bro_main.php:157 +msgid "Path" +msgstr "" + +#: ../admin/bro_main.php:169 +msgid "Send one file:" +msgstr "" + +#: ../admin/bro_main.php:173 +msgid "Send this file" +msgstr "" + +#: ../admin/bro_main.php:181 +msgid "New file or folder:" +msgstr "" + +#: ../admin/bro_main.php:186 +msgid "Create" +msgstr "" + +#: ../admin/bro_main.php:188 ../admin/bro_main.php:228 +msgid "File" +msgstr "" + +#: ../admin/bro_main.php:189 ../admin/bro_main.php:357 ../admin/ftp_add.php:57 +#: ../admin/ftp_edit.php:62 ../admin/ftp_list.php:72 ../admin/hta_add.php:50 +#: ../admin/hta_adduser.php:49 ../admin/hta_edit.php:98 +#: ../admin/hta_edituser.php:52 ../admin/hta_list.php:67 +#: ../admin/sta2_list.php:58 +msgid "Folder" +msgstr "" + +#: ../admin/bro_main.php:206 ../admin/bro_main.php:212 +#: ../admin/bro_main.php:270 +msgid "Rename" +msgstr "" + +#: ../admin/bro_main.php:222 ../admin/bro_main.php:228 +#: ../admin/bro_main.php:271 +msgid "Permissions" +msgstr "" + +#: ../admin/bro_main.php:242 +msgid "write" +msgstr "" + +#: ../admin/bro_main.php:250 +msgid "Change permissions" +msgstr "" + +#: ../admin/bro_main.php:273 +msgid "Copy" +msgstr "" + +#: ../admin/bro_main.php:274 +msgid "Move" +msgstr "" + +#: ../admin/bro_main.php:275 +msgid "To" +msgstr "" + +#: ../admin/bro_main.php:305 +msgid "Filename" +msgstr "" + +#: ../admin/bro_main.php:306 ../admin/mail_list.php:104 +#: ../admin/sql_list.php:51 +msgid "Size" +msgstr "" + +#: ../admin/bro_main.php:307 +msgid "Last modification" +msgstr "" + +#: ../admin/bro_main.php:309 +msgid "File Type" +msgstr "" + +#: ../admin/bro_main.php:334 ../admin/bro_main.php:512 +#: ../admin/sta2_list.php:58 ../admin/sta2_list.php:72 +msgid "View" +msgstr "" + +#: ../admin/bro_main.php:341 +msgid "Extract" +msgstr "" + +#: ../admin/bro_main.php:384 ../admin/bro_main.php:414 +#: ../admin/bro_main.php:451 ../admin/bro_main.php:481 +msgid "V" +msgstr "" + +#: ../admin/bro_main.php:538 +msgid "No files in this folder" +msgstr "" + +#: ../admin/bro_main.php:548 +msgid "Show size of directories" +msgstr "" + +#: ../admin/bro_main.php:548 +msgid "(slow)" +msgstr "" + +#: ../admin/bro_main.php:552 +msgid "Edit this folder's protection" +msgstr "" + +#: ../admin/bro_main.php:555 ../admin/hta_add.php:61 +msgid "Protect this folder" +msgstr "" + +#: ../admin/bro_main.php:557 +msgid "with a login and a password" +msgstr "" + +#: ../admin/bro_main.php:560 +msgid "Download this folder" +msgstr "" + +#: ../admin/bro_main.php:562 +#, php-format +msgid "as a %s file" +msgstr "" + +#: ../admin/bro_main.php:570 +msgid "Edit the ftp account" +msgstr "" + +#: ../admin/bro_main.php:571 +msgid "that exists in this folder" +msgstr "" + +#: ../admin/bro_main.php:577 +msgid "Create an ftp account in this folder" +msgstr "" + +#: ../admin/bro_main.php:586 +msgid "Configure the file editor" +msgstr "" + +#: ../admin/bro_pref.php:34 +msgid "Your preferences have been updated." +msgstr "" + +#: ../admin/bro_pref.php:44 +msgid "File browser preferences" +msgstr "" + +#: ../admin/bro_pref.php:51 +msgid "Horizontal window size" +msgstr "" + +#: ../admin/bro_pref.php:59 +msgid "Vertical window size" +msgstr "" + +#: ../admin/bro_pref.php:67 +msgid "File editor font name" +msgstr "" + +#: ../admin/bro_pref.php:75 +msgid "File editor font size" +msgstr "" + +#: ../admin/bro_pref.php:83 +msgid "File list view" +msgstr "" + +#: ../admin/bro_pref.php:91 +msgid "Downloading file format" +msgstr "" + +#: ../admin/bro_pref.php:99 +msgid "What to do after creating a file" +msgstr "" + +#: ../admin/bro_pref.php:107 +msgid "Show icons?" +msgstr "" + +#: ../admin/bro_pref.php:115 +msgid "Show file types?" +msgstr "" + +#: ../admin/bro_pref.php:123 +msgid "Remember last visited directory?" +msgstr "" + +#: ../admin/bro_pref.php:133 +msgid "Change my settings" +msgstr "" + +#: ../admin/browseforfolder.php:115 +msgid "Searching for a folder" +msgstr "" + +#: ../admin/browseforfolder.php:121 +msgid "Error, cannot find this folder" +msgstr "" + +#: ../admin/browseforfolder.php:123 +msgid "Back to the root folder" +msgstr "" + +#: ../admin/browseforfolder.php:135 +msgid "Select" +msgstr "" + +#: ../admin/dom_add.php:45 +msgid "Domain hosting" +msgstr "" + +#: ../admin/dom_add.php:49 +msgid "You cannot add any new domain, your quota is over." +msgstr "" + +#: ../admin/dom_add.php:49 +msgid "Contact your administrator for more information." +msgstr "" + +#: ../admin/dom_add.php:60 +msgid "host my dns here" +msgstr "" + +#: ../admin/dom_add.php:67 +msgid "" +"Do you want to point this domain to another domain already installed in your " +"account?" +msgstr "" + +#: ../admin/dom_add.php:69 +msgid "No: This domain will have its own folder." +msgstr "" + +#: ../admin/dom_add.php:71 +msgid "Yes, redirect this new domain to this one:" +msgstr "" + +#: ../admin/dom_add.php:72 +msgid "-- Choose a domain --" +msgstr "" + +#: ../admin/dom_add.php:86 +msgid "Add this domain" +msgstr "" + +#: ../admin/dom_add.php:91 +msgid "" +"If you don't want to host in our server the DNS of your domain, don't check " +"the box 'host my dns here'. If you don't know what it mean, leave it checked." +msgstr "" + +#: ../admin/dom_add.php:96 ../admin/dom_doadd.php:60 +msgid "Whois result on the domain" +msgstr "" + +#: ../admin/dom_doadd.php:52 ../admin/menu_dom.php:44 +msgid "Add a domain" +msgstr "" + +#: ../admin/dom_doadd.php:54 +#, php-format +msgid "Your new domain %s has been successfully installed" +msgstr "" + +#: ../admin/dom_doadd.php:55 ../admin/dom_dodel.php:56 +#: ../admin/dom_dodel.php:85 ../admin/dom_editdns.php:70 +#: ../admin/dom_subdodel.php:65 ../admin/hta_doedituser.php:61 +msgid "Click here to continue" +msgstr "" + +#: ../admin/dom_dodel.php:54 +msgid "Deletion have been successfully cancelled" +msgstr "" + +#: ../admin/dom_dodel.php:64 ../admin/dom_dodel.php:67 +#, php-format +msgid "Confirm the deletion of domain %s" +msgstr "" + +#: ../admin/dom_dodel.php:67 ../admin/sql_del.php:66 +#: ../admin/sql_users_del.php:55 +msgid "WARNING" +msgstr "" + +#: ../admin/dom_dodel.php:69 +msgid "This will delete the related sub-domains too." +msgstr "" + +#: ../admin/dom_dodel.php:80 +#, php-format +msgid "Domain %s deleted" +msgstr "" + +#: ../admin/dom_dodel.php:84 +#, php-format +msgid "The domain %s has been successfully deleted." +msgstr "" + +#: ../admin/dom_editdns.php:60 +#, php-format +msgid "Editing domain %s" +msgstr "" + +#: ../admin/dom_editdns.php:65 +#, php-format +msgid "The domain %s has been changed." +msgstr "" + +#: ../admin/dom_editdns.php:68 ../admin/dom_subdodel.php:61 +msgid "The modifications will take effect at %time. Server time is %now." +msgstr "" + +#: ../admin/dom_edit.inc.php:40 +msgid "Edit a subdomain:" +msgstr "" + +#: ../admin/dom_edit.inc.php:42 +msgid "Create a subdomain:" +msgstr "" + +#: ../admin/dom_edit.inc.php:63 +msgid "Show advanced options" +msgstr "" + +#: ../admin/dom_edit.inc.php:64 +msgid "Hide advanced options" +msgstr "" + +#: ../admin/dom_edit.inc.php:85 ../admin/ftp_add.php:60 +#: ../admin/ftp_edit.php:66 ../admin/hta_add.php:54 ../admin/sql_bck.php:97 +#: ../admin/sta2_add_raw.php:57 ../admin/sta2_edit_raw.php:63 +msgid "Choose a folder..." +msgstr "" + +#: ../admin/dom_edit.inc.php:91 +msgid "(enter an URL here)" +msgstr "" + +#: ../admin/dom_edit.inc.php:95 +msgid "(enter an IPv4 address, for example 192.168.1.2)" +msgstr "" + +#: ../admin/dom_edit.inc.php:99 +msgid "(enter an IPv6 address, for example 2001:0910::0)" +msgstr "" + +#: ../admin/dom_edit.inc.php:103 +msgid "(enter a TXT informations for this domain)" +msgstr "" + +#: ../admin/dom_edit.inc.php:107 +msgid "(enter a domain name or subdomain)" +msgstr "" + +#: ../admin/dom_edit.inc.php:117 +msgid "Edit this subdomain" +msgstr "" + +#: ../admin/dom_edit.inc.php:119 +msgid "Add this subdomain" +msgstr "" + +#: ../admin/dom_edit.php:66 +#, php-format +msgid "Editing subdomains of %s" +msgstr "" + +#: ../admin/dom_edit.php:76 +msgid "This domain have some DNS change pending. Please wait." +msgstr "" + +#: ../admin/dom_edit.php:79 +msgid "You requested deletion of this domain." +msgstr "" + +#: ../admin/dom_edit.php:97 +msgid "Subdomain" +msgstr "" + +#: ../admin/dom_edit.php:97 +msgid "Type" +msgstr "" + +#: ../admin/dom_edit.php:129 +msgid "Activation pending" +msgstr "" + +#: ../admin/dom_edit.php:132 +msgid "Disabled" +msgstr "" + +#: ../admin/dom_edit.php:133 +msgid "Enable" +msgstr "" + +#: ../admin/dom_edit.php:136 +msgid "Desactivation pending" +msgstr "" + +#: ../admin/dom_edit.php:143 +msgid "Update pending" +msgstr "" + +#: ../admin/dom_edit.php:146 +msgid "Deletion pending" +msgstr "" + +#: ../admin/dom_edit.php:174 +msgid "DNS & Email parameters" +msgstr "" + +#: ../admin/dom_edit.php:179 +msgid "Manage the DNS on the server ?" +msgstr "" + +#: ../admin/dom_edit.php:190 +msgid "Manage the Emails Addresses of this domain on the server?" +msgstr "" + +#: ../admin/dom_edit.php:197 +msgid "" +"Warning: If you set this to 'no', all your email accounts and aliases on " +"this domain will be immediately deleted." +msgstr "" + +#: ../admin/dom_edit.php:199 +msgid "Submit the changes" +msgstr "" + +#: ../admin/dom_edit.php:204 +msgid "Domain removal" +msgstr "" + +#: ../admin/dom_edit.php:207 +#, php-format +msgid "help_domain_del %s" +msgstr "" +"If you want to destroy the domain %s, click on the button below. Warning: " +"this also deletes all FTP accounts, email, mailing lists associated with the " +"domain and subdomains." + +#: ../admin/dom_edit.php:210 +#, php-format +msgid "Delete %s from this server" +msgstr "" + +#: ../admin/dom_subdel.php:48 +#, php-format +msgid "Deleting subdomain %s" +msgstr "" + +#: ../admin/dom_subdel.php:67 +msgid "WARNING : Confirm the deletion of the subdomain" +msgstr "" + +#: ../admin/dom_subdodel.php:50 +#, php-format +msgid "Deleting the subdomain %s:" +msgstr "" + +#: ../admin/dom_subdoedit.php:65 ../admin/dom_substatus.php:27 +msgid "The modifications will take effect at %time. Server time is %now." +msgstr "" + +#: ../admin/dom_subedit.php:51 +msgid "Editing subdomain" +msgstr "" + +#: ../admin/ftp_add.php:34 +msgid "You cannot add any new ftp account, your quota is over." +msgstr "" + +#: ../admin/ftp_add.php:39 ../admin/ftp_list.php:57 ../admin/menu_ftp.php:44 +msgid "Create a new ftp account" +msgstr "" + +#: ../admin/ftp_add.php:67 +msgid "Create this new FTP account." +msgstr "" + +#: ../admin/ftp_del.php:42 +#, php-format +msgid "The ftp account %s has been successfully deleted" +msgstr "" + +#: ../admin/ftp_doadd.php:44 +msgid "The FTP account has been successfully created" +msgstr "" + +#: ../admin/ftp_doedit.php:33 ../admin/ftp_edit.php:39 +msgid "No account selected!" +msgstr "" + +#: ../admin/ftp_doedit.php:47 +msgid "The ftp account has been successfully changed" +msgstr "" + +#: ../admin/ftp_doedit.php:56 ../admin/ftp_edit.php:48 +msgid "Editing an FTP account" +msgstr "" + +#: ../admin/ftp_edit.php:74 +msgid "Change this FTP account" +msgstr "" + +#: ../admin/ftp_list.php:45 ../admin/menu_ftp.php:46 +msgid "FTP accounts list" +msgstr "" + +#: ../admin/head.php:55 +msgid "" +"Administrator session. you may return to your " +"account or cancel this feature" +msgstr "" + +#: ../admin/hta_add.php:34 ../admin/hta_list.php:50 ../admin/hta_list.php:88 +#: ../admin/web_list.php:3 +msgid "Protect a folder" +msgstr "" + +#: ../admin/hta_add.php:38 +msgid "" +"Enter the name of the folder you want to protect. It must already exists." +msgstr "" + +#: ../admin/hta_adduser.php:39 +#, php-format +msgid "Adding a username in %s" +msgstr "" + +#: ../admin/hta_adduser.php:66 ../admin/hta_edit.php:115 +msgid "Add this user" +msgstr "" + +#: ../admin/hta_del.php:42 +#, php-format +msgid "The protected folder %s has been successfully unprotected" +msgstr "" + +#: ../admin/hta_doadduser.php:39 +msgid "Please enter a password" +msgstr "" + +#: ../admin/hta_doedituser.php:51 +#, php-format +msgid "Change the user %s in the protected folder %s" +msgstr "" + +#: ../admin/hta_doedituser.php:59 +#, php-format +msgid "The password of the user %s has been successfully changed" +msgstr "" + +#: ../admin/hta_edit.php:39 +msgid "No folder selected!" +msgstr "" + +#: ../admin/hta_edit.php:48 +#, php-format +msgid "List of authorized user in folder %s" +msgstr "" + +#: ../admin/hta_edit.php:53 +#, php-format +msgid "No authorized user in %s" +msgstr "" + +#: ../admin/hta_edit.php:73 ../admin/sql_users_password.php:41 +msgid "Change this user's password" +msgstr "" + +#: ../admin/hta_edit.php:82 ../admin/sql_users_list.php:74 +msgid "Delete the checked users" +msgstr "" + +#: ../admin/hta_edit.php:87 +msgid "Show this folder's content in the File Browser" +msgstr "" + +#: ../admin/hta_edit.php:93 +msgid "Adding an authorized user" +msgstr "" + +#: ../admin/hta_edituser.php:40 +#, php-format +msgid "Editing user %s in the protected folder %s" +msgstr "" + +#: ../admin/hta_edituser.php:53 ../admin/sql_users_list.php:52 +msgid "User" +msgstr "" + +#: ../admin/hta_edituser.php:54 ../admin/mem_param.php:64 +#: ../admin/mem_param.php:65 +msgid "New password" +msgstr "" + +#: ../admin/hta_edituser.php:56 ../admin/sql_passchg.php:56 +msgid "Change the password" +msgstr "" + +#: ../admin/hta_list.php:41 +msgid "Protected folders list" +msgstr "" + +#: ../admin/hta_list.php:60 +msgid "help_hta_list" +msgstr "Here is the list of protected directories in your account" + +#: ../admin/hta_list.php:78 +msgid "Edit login and passwords" +msgstr "" + +#: ../admin/hta_list.php:87 +msgid "Unprotect the checked folders" +msgstr "" + +#: ../admin/index.php:57 +msgid "Web Hosting Control Panel" +msgstr "" + +#: ../admin/index.php:71 +msgid "" +"To connect to the hosting control panel, enter your AlternC's login and " +"password in the following form and click 'Enter'" +msgstr "" + +#: ../admin/index.php:75 +msgid "AlternC access" +msgstr "" + +#: ../admin/index.php:78 ../admin/index.php:95 +msgid "Enter" +msgstr "" + +#: ../admin/index.php:85 +msgid "" +"If you want to read your mail, enter your Email address and password in the " +"following form and click 'Enter'" +msgstr "" + +#: ../admin/index.php:91 +msgid "Webmail Access" +msgstr "" + +#: ../admin/index.php:92 +msgid "Email Address" +msgstr "" + +#: ../admin/index.php:106 +msgid "You must accept the session cookie to log-in" +msgstr "" + +#: ../admin/mail_add.php:43 +#, php-format +msgid "Add a mail to the domain %s" +msgstr "" + +#: ../admin/mail_add.php:62 ../admin/mail_edit.php:70 +msgid "Is it a POP/IMAP account?" +msgstr "" + +#: ../admin/mail_add.php:70 ../admin/mail_edit.php:78 +msgid "POP/IMAP password" +msgstr "" + +#: ../admin/mail_add.php:76 ../admin/mail_edit.php:88 +msgid "Redirections
            Other recipients:" +msgstr "" + +#: ../admin/mail_add.php:76 ../admin/mail_edit.php:88 +msgid "one email per line" +msgstr "" + +#: ../admin/mail_add.php:80 ../admin/mail_edit.php:91 +msgid "Is it a temporary mail account?" +msgstr "" + +#: ../admin/mail_add.php:87 +msgid "Create this email address" +msgstr "" + +#: ../admin/mail_add.php:94 +msgid "help_mail_add" +msgstr "" +"- To create this email
            * If you want to store emails received and " +"access with webmail or email software, check the box \"POP account'. In this " +"case, choose a password for the POP account.
            * If you want to redirect " +"this mail to other accounts, enter the list of emails, one email per line " +"(with the @ in every case).
            Note: you need to either check the box " +"\"POP account\" or enter redirections, or both.
            * To access your " +"emails, use the address http:///webmail/ or any subdomain of " +"type 'Webmail access'
            The username is the email address in full (for " +"example login@example.com) and the password is the one entered " +"in this form." + +#: ../admin/mail_del.php:51 +#, php-format +msgid "The email address %s does not exist!" +msgstr "" + +#: ../admin/mail_del.php:53 +#, php-format +msgid "The email address %s has been deleted!" +msgstr "" + +#: ../admin/mail_del.php:63 +msgid "Deleting mail accounts" +msgstr "" + +#: ../admin/mail_del.php:66 +msgid "Please confirm the deletion of the following mail accounts:" +msgstr "" + +#: ../admin/mail_del.php:82 +msgid "Confirm the deletion" +msgstr "" + +#: ../admin/mail_del.php:82 +msgid "Don't delete anything and go back to the email list" +msgstr "" + +#: ../admin/mail_del.php:86 +msgid "" +"Warning: Deleting an email address will destroy all the messages it " +"contains! You will NOT be able to get it back!" +msgstr "" + +#: ../admin/mail_doadd.php:55 +#, php-format +msgid "The email address %s has been successfully created" +msgstr "" + +#: ../admin/mail_dodel.php:40 +#, php-format +msgid "The mailbox %s does not exist!" +msgstr "" + +#: ../admin/mail_dodel.php:43 +#, php-format +msgid "The mailbox %s has been deleted!" +msgstr "" + +#: ../admin/mail_doedit.php:60 +#, php-format +msgid "The email address %s has been successfully changed" +msgstr "" + +#: ../admin/mail_edit.php:48 +#, php-format +msgid "Edit an email address of the domain %s" +msgstr "" + +#: ../admin/mail_edit.php:66 +#, php-format +msgid "Edit the email address %s" +msgstr "" + +#: ../admin/mail_edit.php:68 +msgid "This account is a temporary account.
            It will be delete on " +msgstr "" + +#: ../admin/mail_edit.php:84 +msgid "" +"WARNING: turning POP/IMAP off will DELETE the stored messages in this email " +"address. This email address will become a simple redirection." +msgstr "" + +#: ../admin/mail_edit.php:97 +msgid "Change this email address" +msgstr "" + +#: ../admin/mail_edit.php:104 +msgid "help_mail_edit" +msgstr "" +"- To modify this email
            * If you want to store emails received and " +"access with webmail or email software, check the box \\\"POP account'. In " +"this case, choose a password for the POP account.
            * If you want to " +"redirect this mail to other accounts, enter the list of emails, one email " +"per line (with the @ in every case).
            Note: you need to either check the " +"box \\\"POP account\\\" or enter redirections, or both.
            * To access " +"your emails, use the address http:///webmail/ or any subdomain " +"of type 'Webmail access'
            The username is the email address in full (for " +"example login@example.com) and the password is the one entered " +"in this form." + +#: ../admin/mail_list.php:49 ../admin/mail_list.php:68 +#, php-format +msgid "Email addresses of the domain %s" +msgstr "" + +#: ../admin/mail_list.php:58 ../admin/mail_list.php:77 +#, php-format +msgid "Add a mailbox on %s" +msgstr "" + +#: ../admin/mail_list.php:60 ../admin/mail_list.php:79 +#, php-format +msgid "Add many mailboxes on %s" +msgstr "" + +#: ../admin/mail_list.php:87 +msgid "Show only mail starting by:" +msgstr "" + +#: ../admin/mail_list.php:93 +#, php-format +msgid "All" +msgstr "" + +#: ../admin/mail_list.php:127 +msgid "This account will be deleted on" +msgstr "" + +#: ../admin/mail_list.php:136 +msgid "Delete the checked email addresses" +msgstr "" + +#: ../admin/main.php:38 +msgid "Last Login: " +msgstr "" + +#: ../admin/main.php:41 +#, php-format +msgid "from: %1$s " +msgstr "" + +#: ../admin/main.php:45 +#, php-format +msgid "%1$d login failed since last login" +msgstr "" + +#: ../admin/main.php:61 +msgid "Latest news" +msgstr "" + +#: ../admin/main.php:78 +msgid "Expired or about to expire accounts" +msgstr "" + +#: ../admin/main.php:80 +msgid "uid" +msgstr "" + +#: ../admin/main.php:80 +msgid "Last name, surname" +msgstr "" + +#: ../admin/mem_admin.php:40 +msgid "Your administrator preferences has been successfully changed." +msgstr "" + +#: ../admin/mem_admin.php:46 ../admin/mem_param.php:97 +msgid "Admin preferences" +msgstr "" + +#: ../admin/mem_chgmail.php:44 ../admin/mem_cm2.php:40 ../admin/mem_cm.php:35 +#: ../admin/mem_cm.php:46 ../admin/mem_param.php:74 +msgid "Change the email of the account" +msgstr "" + +#: ../admin/mem_chgmail.php:51 +#, php-format +msgid "help_mem_chgmail %s" +msgstr "" +"An email was sent to the address %s to confirm.
            This email contains a link where you should go to confirm the modification." +"
            On this page, the following key will be requested from you :
            " + +#: ../admin/mem_cm2.php:48 +msgid "The mailbox has been successfully changed." +msgstr "" + +#: ../admin/mem_cm.php:47 +msgid "" +"Enter the key you got when you requested the mailbox change, then click the " +"OK button." +msgstr "" + +#: ../admin/mem_cm.php:48 +msgid "Key" +msgstr "" + +#: ../admin/mem_cm.php:49 +msgid "OK" +msgstr "" + +#: ../admin/mem_logout.php:38 ../admin/mem_logout.php:43 +msgid "Disconnected" +msgstr "" + +#: ../admin/mem_logout.php:45 +msgid "You have been logged out of your administration desktop." +msgstr "" + +#: ../admin/mem_logout.php:46 +msgid "Click here to log in" +msgstr "" + +#: ../admin/mem_param.php:36 +msgid "Your help setting has been updated." +msgstr "" + +#: ../admin/mem_param.php:40 +msgid "Settings of your account" +msgstr "" + +#: ../admin/mem_param.php:50 ../admin/mem_passwd.php:41 +#: ../admin/sql_users_list.php:65 +msgid "Password change" +msgstr "" + +#: ../admin/mem_param.php:54 +msgid "You cannot change your password" +msgstr "" + +#: ../admin/mem_param.php:59 +msgid "help_chg_passwd" +msgstr "" +"You can change here the password for this account. Do not forget it!
            " +"Enter here your current password then a new password (twice for security " +"reasons), then click on \"Change my password\"." + +#: ../admin/mem_param.php:63 +msgid "Old password" +msgstr "" + +#: ../admin/mem_param.php:66 +msgid "Change my password" +msgstr "" + +#: ../admin/mem_param.php:75 +msgid "help_chg_mail" +msgstr "" +"You can modify here the email corresponding to your account.
            Enter the " +"new email here. A message is sent to this addresse for confirmation." + +#: ../admin/mem_param.php:76 +msgid "Current mailbox" +msgstr "" + +#: ../admin/mem_param.php:77 +msgid "New mailbox" +msgstr "" + +#: ../admin/mem_param.php:78 +msgid "Change my email address" +msgstr "" + +#: ../admin/mem_param.php:85 +msgid "Online help settings" +msgstr "" + +#: ../admin/mem_param.php:86 +msgid "help_help_settings" +msgstr "" +"Each page of the interface can present simple help, accompanied by a link to " +"the online help system.
            If you want this help system to be shown, check " +"the box below." + +#: ../admin/mem_param.php:87 +msgid "Do you want to see the help texts and links on each page?" +msgstr "" + +#: ../admin/mem_param.php:88 +msgid "Change these settings" +msgstr "" + +#: ../admin/mem_param.php:101 +msgid "Members list view" +msgstr "" + +#: ../admin/mem_param.php:102 +msgid "Large view" +msgstr "" + +#: ../admin/mem_param.php:103 +msgid "Short view" +msgstr "" + +#: ../admin/mem_param.php:105 +msgid "Change my admin preferences" +msgstr "" + +#: ../admin/mem_passwd.php:35 ../admin/sql_pass.php:38 +msgid "Your password has been successfully changed." +msgstr "" + +#: ../admin/menu_adm.php:38 +msgid "Administration" +msgstr "" + +#: ../admin/menu_adm.php:41 +msgid "Manage the Alternc accounts" +msgstr "" + +#: ../admin/menu_adm.php:42 +msgid "User Quotas" +msgstr "" + +#: ../admin/menu_adm.php:45 +msgid "General PhpMyAdmin" +msgstr "" + +#: ../admin/menu_aide.php:32 +msgid "Online help" +msgstr "" + +#: ../admin/menu_dom.php:40 ../admin/quotas_oneuser.php:22 +#: ../admin/quotas_users.php:131 +msgid "Domains" +msgstr "" + +#: ../admin/menu_ftp.php:40 +msgid "FTP accounts" +msgstr "" + +#: ../admin/menu_lang.php:3 +msgid "Langues" +msgstr "" + +#: ../admin/menu_mail.php:40 +msgid "Email Addresses" +msgstr "" + +#: ../admin/menu_mem.php:32 +msgid "Settings" +msgstr "" + +#: ../admin/menu_mem.php:35 +msgid "Logout" +msgstr "" + +#: ../admin/menu.php:36 +msgid "Home / Information" +msgstr "" + +#: ../admin/menu_quota.php:32 +msgid "Show my quotas" +msgstr "" + +#: ../admin/menu_sql.php:38 +msgid "Databases" +msgstr "" + +#: ../admin/menu_sql.php:39 ../admin/sql_users_list.php:37 +msgid "MySQL Users" +msgstr "" + +#: ../admin/menu_sql.php:40 +msgid "PhpMyAdmin" +msgstr "" + +#: ../admin/menu_sta2.php:37 +msgid "Raw web statistics" +msgstr "" + +#: ../admin/menu_web.php:34 +msgid "Protected folders" +msgstr "" + +#: ../admin/quota_show.php:34 +msgid "Account's quotas" +msgstr "" + +#: ../admin/quota_show.php:40 +msgid "No quotas for this account, or quotas currently unavailable!" +msgstr "" + +#: ../admin/quotas_oneuser.php:13 +msgid "Web Space:" +msgstr "" + +#: ../admin/quotas_oneuser.php:14 ../admin/quotas_oneuser.php:53 +#: ../admin/quotas_oneuser.php:90 ../admin/quotas_oneuser.php:130 +#: ../admin/quotas_users.php:286 ../admin/quotas_users.php:322 +#: ../admin/quotas_users.php:342 ../admin/quotas_users.php:355 +msgid "MB" +msgstr "" + +#: ../admin/quotas_oneuser.php:23 +msgid "Emails" +msgstr "" + +#: ../admin/quotas_oneuser.php:24 ../admin/quotas_oneuser.php:71 +#: ../admin/quotas_oneuser.php:112 ../admin/quotas_users.php:127 +#: ../admin/quotas_users.php:168 +msgid "Space" +msgstr "" + +#: ../admin/quotas_oneuser.php:70 ../admin/quotas_users.php:176 +msgid "DB" +msgstr "" + +#: ../admin/quotas_oneuser.php:111 ../admin/quotas_users.php:172 +#: ../admin/quotas_users.php:175 +msgid "Lists" +msgstr "" + +#: ../admin/quotas_users.php:26 +msgid "" +"This page shows the space and service count of your AlternC server and each " +"AlternC accounts." +msgstr "" + +#: ../admin/quotas_users.php:27 +#, php-format +msgid "Sizes are shown as %s" +msgstr "" + +#: ../admin/quotas_users.php:27 +msgid "MB." +msgstr "" + +#: ../admin/quotas_users.php:27 +#, php-format +msgid "% of the total." +msgstr "" + +#: ../admin/quotas_users.php:30 +msgid "Server-side view:" +msgstr "" + +#: ../admin/quotas_users.php:30 +msgid "Global" +msgstr "" + +#: ../admin/quotas_users.php:31 +msgid "Detailed view:" +msgstr "" + +#: ../admin/quotas_users.php:33 ../admin/quotas_users.php:40 +msgid "Percentage" +msgstr "" + +#: ../admin/quotas_users.php:34 ../admin/quotas_users.php:37 +msgid "Graphical" +msgstr "" + +#: ../admin/quotas_users.php:36 ../admin/quotas_users.php:39 +msgid "In MB" +msgstr "" + +#: ../admin/quotas_users.php:45 +msgid "Show the domain names" +msgstr "" + +#: ../admin/quotas_users.php:47 +msgid "Hide the domain names" +msgstr "" + +#: ../admin/quotas_users.php:50 +msgid "All accounts" +msgstr "" + +#: ../admin/quotas_users.php:127 ../admin/quotas_users.php:168 +msgid "Count" +msgstr "" + +#: ../admin/quotas_users.php:136 +msgid "Email addresses" +msgstr "" + +#: ../admin/quotas_users.php:142 +msgid "Mailman lists" +msgstr "" + +#: ../admin/quotas_users.php:148 ../admin/sql_bck.php:48 +#: ../admin/sql_del.php:63 ../admin/sql_dorestore.php:38 +#: ../admin/sql_getparam.php:38 ../admin/sql_list.php:36 +#: ../admin/sql_passchg.php:38 ../admin/sql_restore.php:43 +msgid "MySQL Databases" +msgstr "" + +#: ../admin/quotas_users.php:170 +msgid "Dom" +msgstr "" + +#: ../admin/quotas_users.php:171 ../admin/quotas_users.php:174 +msgid "Mails" +msgstr "" + +#: ../admin/quotas_users.php:173 +msgid "Web" +msgstr "" + +#: ../admin/sql_addmain.php:35 +msgid "Your database has been successfully created" +msgstr "" + +#: ../admin/sql_add.php:34 ../admin/sql_doadd.php:34 +msgid "err_mysql_1" +msgstr "" + +#: ../admin/sql_add.php:39 ../admin/sql_list.php:81 +msgid "Create a new MySQL database" +msgstr "" + +#: ../admin/sql_add.php:51 +msgid "MySQL Database" +msgstr "" + +#: ../admin/sql_add.php:56 +msgid "Create this new MySQL database." +msgstr "" + +#: ../admin/sql_admin.php:47 +msgid "SQL Admin" +msgstr "" + +#: ../admin/sql_bck.php:58 +#, php-format +msgid "Manage the SQL backup for database %s" +msgstr "" + +#: ../admin/sql_bck.php:63 +msgid "Do MySQL backup?" +msgstr "" + +#: ../admin/sql_bck.php:66 +msgid "No backup" +msgstr "" + +#: ../admin/sql_bck.php:67 +msgid "Weekly backup" +msgstr "" + +#: ../admin/sql_bck.php:68 +msgid "Daily backup" +msgstr "" + +#: ../admin/sql_bck.php:72 +msgid "How many backups should be kept?" +msgstr "" + +#: ../admin/sql_bck.php:84 +msgid "Compress the backups? (gzip)" +msgstr "" + +#: ../admin/sql_bck.php:93 +msgid "In which folder do you want to store the backups?" +msgstr "" + +#: ../admin/sql_bck.php:104 +msgid "Change the MySQL backup parameters" +msgstr "" + +#: ../admin/sql_bck.php:113 ../admin/sql_dorestore.php:56 +#: ../admin/sql_restore.php:71 +msgid "You currently have no database defined" +msgstr "" + +#: ../admin/sql_del.php:42 +#, php-format +msgid "The database %s has been successfully deleted" +msgstr "" + +#: ../admin/sql_del.php:57 +msgid "Please check which databases you want to delete" +msgstr "" + +#: ../admin/sql_del.php:66 +msgid "Confirm the deletion of the following SQL databases" +msgstr "" + +#: ../admin/sql_del.php:67 +msgid "This will delete all the tables currently in those db." +msgstr "" + +#: ../admin/sql_dobck.php:48 +msgid "Your backup parameters has been successfully changed." +msgstr "" + +#: ../admin/sql_dorestore.php:44 +msgid "Restore a SQL backup" +msgstr "" + +#: ../admin/sql_dorestore.php:50 +msgid "" +"Your database has been restored, check out the previous text for error " +"messages." +msgstr "" + +#: ../admin/sql_getparam.php:47 +msgid "Your current settings are" +msgstr "" + +#: ../admin/sql_getparam.php:58 +msgid "MySQL Server" +msgstr "" + +#: ../admin/sql_getparam.php:62 +msgid "Main database" +msgstr "" + +#: ../admin/sql_getparam.php:67 +msgid "Back to the MySQL database list" +msgstr "" + +#: ../admin/sql_list.php:46 +msgid "help_sql_list_ok" +msgstr "" +"You have one or many databases
            Click on 'Admin SQL' in the " +"administrator menu
            Or use the table below to manage backups/restore, " +"erase your databases :" + +#: ../admin/sql_list.php:51 ../admin/sql_list.php:97 +#: ../admin/sql_passchg.php:54 +msgid "Database" +msgstr "" + +#: ../admin/sql_list.php:51 ../admin/sql_list.php:63 +msgid "Backup" +msgstr "" + +#: ../admin/sql_list.php:51 ../admin/sql_list.php:64 +msgid "Restore" +msgstr "" + +#: ../admin/sql_list.php:73 +msgid "Delete the checked databases" +msgstr "" + +#: ../admin/sql_list.php:83 +msgid "Change the MySQL password" +msgstr "" + +#: ../admin/sql_list.php:84 +msgid "Get the current MySQL parameters" +msgstr "" + +#: ../admin/sql_list.php:89 +msgid "help_sql_list_no" +msgstr "Your main database doesn't exist, enter a password here to create it." + +#: ../admin/sql_list.php:96 ../admin/sql_passchg.php:53 +msgid "SQL Server" +msgstr "" + +#: ../admin/sql_list.php:98 +msgid "Create my main database" +msgstr "" + +#: ../admin/sql_passchg.php:46 +msgid "" +"Enter the new password of your MySQL database and click 'change the " +"password' to change it" +msgstr "" + +#: ../admin/sql_restore.php:53 +#, php-format +msgid "Restore a MySQL backup for database %s" +msgstr "" + +#: ../admin/sql_restore.php:56 +msgid "" +"Warning: Write the complete path and the filename.
            For example if your " +"backups are in the directory /Backups,
            write /Backups/file.sql.gz " +"(where file.sql.gz is the filename)." +msgstr "" + +#: ../admin/sql_restore.php:61 +msgid "" +"Please enter the path and the filename containing SQL data to be restored." +msgstr "" + +#: ../admin/sql_restore.php:62 +msgid "Restore my database" +msgstr "" + +#: ../admin/sql_restore.php:66 +msgid "Note: If the filename ends with .gz, it will be uncompressed before." +msgstr "" + +#: ../admin/sql_users_add.php:41 +msgid "err_mysql_13" +msgstr "" + +#: ../admin/sql_users_add.php:46 ../admin/sql_users_list.php:86 +msgid "Create a new MySQL user" +msgstr "" + +#: ../admin/sql_users_add.php:77 +msgid "Create this new MySQL user" +msgstr "" + +#: ../admin/sql_users_del.php:41 +#, php-format +msgid "The user %s has been successfully deleted" +msgstr "" + +#: ../admin/sql_users_del.php:52 +msgid "MySQL users" +msgstr "" + +#: ../admin/sql_users_del.php:55 +msgid "Confirm the deletion of the following MySQL users" +msgstr "" + +#: ../admin/sql_users_dorights.php:44 +msgid "The rights has been successfully applied to the user" +msgstr "" + +#: ../admin/sql_users_list.php:47 +msgid "help_sql_users_list_ok" +msgstr "" +"You have one or many databases.
            Click on 'Admin SQL' on the menu for " +"administrator
            Or use the following table to manage your backups/" +"restores, deletion of your databases :" + +#: ../admin/sql_users_list.php:52 +msgid "Rights" +msgstr "" + +#: ../admin/sql_users_list.php:64 +msgid "Manage the rights" +msgstr "" + +#: ../admin/sql_users_password.php:64 +msgid "Change user password" +msgstr "" + +#: ../admin/sql_users_rights.php:41 +#, php-format +msgid "MySQL Rights for %s" +msgstr "" + +#: ../admin/sql_users_rights.php:51 +msgid "help_sql_users_rights_ok" +msgstr "" +"Your main database doesn't exist, enter here a database password to create " +"it." + +#: ../admin/sql_users_rights.php:82 +msgid "Reverse selection" +msgstr "" + +#: ../admin/sql_users_rights.php:95 +msgid "Apply" +msgstr "" + +#: ../admin/sta2_add_raw.php:33 +msgid "You cannot add any new statistics, your quota is over." +msgstr "" + +#: ../admin/sta2_add_raw.php:38 +msgid "New Raw Statistics (apache)" +msgstr "" + +#: ../admin/sta2_add_raw.php:51 ../admin/sta2_edit_raw.php:57 +msgid "Domain name:" +msgstr "" + +#: ../admin/sta2_add_raw.php:54 ../admin/sta2_edit_raw.php:60 +msgid "Folder where we will put the log file:" +msgstr "" + +#: ../admin/sta2_add_raw.php:63 +msgid "Create those raw statistics" +msgstr "" + +#: ../admin/sta2_del_raw.php:42 +#, php-format +msgid "" +"The statistics %s has been successfully deleted (the stats files must be " +"manually deleted)" +msgstr "" + +#: ../admin/sta2_doadd_raw.php:44 +msgid "The statistics has been successfully created" +msgstr "" + +#: ../admin/sta2_doedit_raw.php:33 ../admin/sta2_edit_raw.php:35 +msgid "No Statistics selected!" +msgstr "" + +#: ../admin/sta2_doedit_raw.php:41 +msgid "The Statistics has been successfully changed" +msgstr "" + +#: ../admin/sta2_edit_raw.php:44 +msgid "Change the Raw Statistics" +msgstr "" + +#: ../admin/sta2_edit_raw.php:67 +msgid "Change those Raw Statistics." +msgstr "" + +#: ../admin/sta2_list.php:35 +msgid "Raw Statistics List" +msgstr "" + +#: ../admin/sta2_list.php:41 +msgid "Create new Raw Statistics (apache)" +msgstr "" + +#: ../admin/sta2_list.php:79 +msgid "Delete the checked Raw Statistics (apache)" +msgstr "" + +#: ../admin/stats_members.php:32 +msgid "" +"Image_Graph not installed. use 'aptitude install php-pear' then 'pear " +"install --alldeps Image_Graph-devel' to see the graph." +msgstr "" + +#: ../admin/stats_members.php:41 +msgid "Account creation per month" +msgstr "" + +#: ../admin/stats_members.php:54 +msgid "before the month" +msgstr "" + +#: ../admin/stats_members.php:56 +msgid "during the month" +msgstr "" + +#: ../admin/trash_dateselect.php:50 +msgid "You want it to be deleted in" +msgstr "" + +#: ../admin/trash_dateselect.php:57 +msgid "Hours" +msgstr "" + +#: ../admin/trash_dateselect.php:58 +msgid "Days" +msgstr "" + +#: ../admin/trash_dateselect.php:59 +msgid "Weeks" +msgstr "" + +#: ../admin/trash_dateselect.php:66 +msgid "" +"Delete this email the following day,
            enter the date using DD/MM/YYYY " +"format" +msgstr "" + +#: ../admin/trash_dateselect.php:79 +msgid "All this account information will be deleted at expiration" +msgstr "" + +#: ../class/functions.php:286 +msgid "Bytes" +msgstr "" + +#: ../class/functions.php:288 +msgid "Byte" +msgstr "" + +#: ../class/functions.php:293 +msgid "Kb" +msgstr "" + +#: ../class/functions.php:297 +msgid "Mb" +msgstr "" + +#: ../class/functions.php:301 +msgid "Gb" +msgstr "" + +#: ../class/functions.php:303 +msgid "Tb" +msgstr "" + +#: ../class/functions.php:390 +msgid "years" +msgstr "" + +#: ../class/functions.php:390 +msgid "year" +msgstr "" + +#: ../class/functions.php:392 +msgid "months" +msgstr "" + +#: ../class/functions.php:392 +msgid "month" +msgstr "" + +#: ../class/functions.php:415 +msgid "Not managed" +msgstr "" + +# English AlternC Translation +# Copyright (c) 2008 the AlternC Development Team +# +# $Id: admin.po,v 1.10 2004/11/01 15:55:44 anonymous Exp $ +#: ../class/lang_env.php:61 +msgid "" +msgstr "" +"Project-Id-Version: $Id: admin.po,v 1.10 2004/11/01 15:55:44 anonymous Exp " +"$\n" +"Report-Msgid-Bugs-To: i18n@alternc.org\n" +"POT-Creation-Date: 2006-05-09 17:16+0200\n" +"PO-Revision-Date: 2002-06-16 13:50CEST\n" +"Last-Translator: Benjamin Sonntag \n" +"Language-Team: French \n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-1\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Emacs 21\n" + +#: ../class/m_err.php:66 ../class/m_err.php:94 ../class/m_err.php:96 +msgid "err_" +msgstr "" + +#: ../class/mime.php:135 +msgid "CSS Stylesheet" +msgstr "" + +#: ../class/mime.php:136 +msgid "Comma Separated Values data" +msgstr "" + +#: ../class/mime.php:137 +msgid "DIA Diagram" +msgstr "" + +#: ../class/mime.php:138 +msgid "Word Document" +msgstr "" + +#: ../class/mime.php:139 +msgid "Word Document Template" +msgstr "" + +#: ../class/mime.php:140 +msgid "Encapsulated Postscript" +msgstr "" + +#: ../class/mime.php:141 +msgid "GIF Image" +msgstr "" + +#: ../class/mime.php:142 +msgid "Macintosh Executable" +msgstr "" + +#: ../class/mime.php:143 ../class/mime.php:144 +msgid "HTML Document" +msgstr "" + +#: ../class/mime.php:145 ../class/mime.php:146 +msgid "JPEG Image" +msgstr "" + +#: ../class/mime.php:147 +msgid "Music Playlist" +msgstr "" + +#: ../class/mime.php:148 +msgid "MP3 Music File" +msgstr "" + +#: ../class/mime.php:149 +msgid "Ogg Music File" +msgstr "" + +#: ../class/mime.php:150 +msgid "Acrobat PDF" +msgstr "" + +#: ../class/mime.php:151 +msgid "PHP Source" +msgstr "" + +#: ../class/mime.php:152 +msgid "PNG Image" +msgstr "" + +#: ../class/mime.php:153 ../class/mime.php:154 +msgid "Powerpoint Slideshow" +msgstr "" + +#: ../class/mime.php:155 +msgid "Postscript Document" +msgstr "" + +#: ../class/mime.php:156 +msgid "Photoshop Image" +msgstr "" + +#: ../class/mime.php:157 +msgid "Rar Compressed Files" +msgstr "" + +#: ../class/mime.php:158 +msgid "Rich Text Document" +msgstr "" + +#: ../class/mime.php:159 +msgid "OpenOffice Spreadsheet" +msgstr "" + +#: ../class/mime.php:160 +msgid "OpenOffice Drawing" +msgstr "" + +#: ../class/mime.php:161 +msgid "OpenOffice Presentation" +msgstr "" + +#: ../class/mime.php:162 +msgid "OpenOffice Writer" +msgstr "" + +#: ../class/mime.php:163 ../class/mime.php:164 +msgid "TIFF Image" +msgstr "" + +#: ../class/mime.php:165 +msgid "Text Document" +msgstr "" + +#: ../class/mime.php:166 ../class/mime.php:167 +msgid "Virtual Card" +msgstr "" + +#: ../class/mime.php:168 +msgid "Gimp Image" +msgstr "" + +#: ../class/mime.php:169 +msgid "Excel Spreadsheet" +msgstr "" + +#: ../class/mime.php:170 +msgid "Zip Compressed Files" +msgstr "" + +#: ../class/mime.php:171 +msgid "Flash Animation" +msgstr "" + +#: ../class/mime.php:172 ../class/mime.php:173 ../class/mime.php:174 +msgid "Real Media File" +msgstr "" + +#: ../class/m_mem.php:497 +msgid "Help" +msgstr "" + +#~ msgid "help_dns_mx %s %s" +#~ msgstr "" +#~ "If we manage your DNS:
            You can decide to manage your mails elsewhere " +#~ "(MX field).
            Put %s in this field to manage your " +#~ "mails with %s
            Otherwise put the ip or the name of the server you " +#~ "want to use to manage your emails.\\tWarning: if you leave this " +#~ "field empty, you will not be able to use emails on this domain." + +#~ msgid "help_dns_mail" +#~ msgstr "If we do not manage your DNS:
            do we manage your emails?" diff --git a/stable-1.0/bureau/locales/es_ES/LC_MESSAGES/manual.po b/stable-1.0/bureau/locales/es_ES/LC_MESSAGES/manual.po new file mode 100644 index 00000000..fb3e433c --- /dev/null +++ b/stable-1.0/bureau/locales/es_ES/LC_MESSAGES/manual.po @@ -0,0 +1,839 @@ +# translation of manual.po to Spanish +# Spanish AlternC Translation +# Copyright (c) 2002 the AlternC Development Team +# +# +# Bruno Marmier , 2003. +# Daniel Viñar Ulriksen , 2008. +#. Template for AlternC Translation +#. Copyright (c) 2002 the AlternC Development Team +#. +#. $Id: admin.po,v 1.4 2006/02/09 20:12:23 benjamin Exp $ +msgid "" +msgstr "" +"Project-Id-Version: manual\n" +"Report-Msgid-Bugs-To: i18n@alternc.org\n" +"POT-Creation-Date: 2004-05-24 19:34+0200\n" +"PO-Revision-Date: 2008-02-17 00:27-0400\n" +"Last-Translator: Daniel Viñar Ulriksen \n" +"Language-Team: Spanish \n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-1\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" + +# m_membre +#. -- Only administrators can access this page !! -- +msgid "err_admin_1" +msgstr "-- ¡¡Sólo los administradores tienen acceso a estas páginas!! --" + +#. Account not found +msgid "err_admin_2" +msgstr "No se encuentra el miembro" + +#. This login already exists +msgid "err_admin_3" +msgstr "¡Este login ya existe!" + +#. -- I cannot create this account -- +msgid "err_admin_4" +msgstr "--Imposible crear la cuenta--" + +#. Please enter a valid email address +msgid "err_admin_5" +msgstr "Por favor, entre un email válido." + +#. All fields are mandatory +msgid "err_admin_6" +msgstr "Los campos login, contraseña y correo son obligatorios." + +#. You can ask for your password only once a day ! +msgid "err_admin_7" +msgstr "¡Solo puedes pedir tu contraseña una vez por día!" + +#. This account is ALREADY an administrator account +msgid "err_admin_8" +msgstr "¡El usuario seleccionado YA es administrador!" + +#. This account is NOT an administrator account ! +msgid "err_admin_9" +msgstr "¡El usuario seleccionado NO es administrador!" + +# m_membre +#. Login can only contains characters a-z, 0-9 and - +msgid "err_admin_10" +msgstr "Los únicos caracteres autorizados son a-z 0-9 y -." + +# m_membre +#. This TLD does not exist +msgid "err_admin_11" +msgstr "Este TLD no existe" + +#. This TLD already exists +msgid "err_admin_12" +msgstr "Este TLD ya existe." + +# m_membre +#. The login is too long (16 chars max) +msgid "err_admin_13" +msgstr "El login es demasiado largo (16 caracteres máximo)" + +#. Domain names +msgid "quota_dom" +msgstr "Nombres de dominio" + +#. Domain '%s' not found. +msgid "err_dom_1" +msgstr "El dominio '%s' no existe." + +#. The domaine '%s' does not belong to you. +msgid "err_dom_2" +msgstr "El dominio '%s' no te pertenece." + +#. --- Programm error --- No lock on the domains ! +msgid "err_dom_3" +msgstr "--- Error de programación --- ¡Ningún Lock en los dominios!" + +#. The domain name is too long. +msgid "err_dom_4" +msgstr "El nombre de dominio es demasiado largo." + +#. One of the domain name member is too long. +msgid "err_dom_5" +msgstr "Uno de los componentes del nombre de dominio es demasiado largo." + +#. There is some forbidden characters in the domain name (only A-Z 0-9 and - are allowed). +msgid "err_dom_6" +msgstr "" +"Hay caracteres prohibidos en el nombre de dominio (sólo A-Z 0-9 y - son " +"autorizados)." + +#. The last member of the domain name is incorrect or cannot be hosted in that server. +msgid "err_dom_7" +msgstr "" +"El último componente (TLD) del dominio es incorrecto o no se puede hospedar " +"en este servidor." + +#. The domain already exists. +msgid "err_dom_8" +msgstr "El dominio ya existe." + +#. The domain has been deleted less than 5 minutes ago, please try again later. +msgid "err_dom_9" +msgstr "El dominio fue borrado hace menos de 5 minutos, intenta más tarde." + +#. Your domain quota is over, you cannot create more domain names. +msgid "err_dom_10" +msgstr "Alcanzaste el limite de tu cuota de dominios, no se pueden crear más." + +#. The Whois database is unavailable, please try again later. +msgid "err_dom_11" +msgstr "¡Conexión a la base Whois imposible!" + +#. The domain cannot be found in the whois database. +msgid "err_dom_12" +msgstr "No se encuentra el dominio en la base Whois" + +#. The domain has been changed less than 5 minutes ago. Please try again in a few minutes. +msgid "err_dom_13" +msgstr "El dominio fue modificado hace menos de 5 minutos, intenta más tarde." + +#. The sub-domain does not exist. +msgid "err_dom_14" +msgstr "El subdominio no existe." + +#. No change has been requested... +msgid "err_dom_15" +msgstr "No se pidió ninguna modificación..." + +#. The sub-domain already exists. +msgid "err_dom_16" +msgstr "El subdominio ya existe." + +#. --- Programm error --- Lock already obtained ! +msgid "err_dom_17" +msgstr "--- Error de programación --- ¡Lock sobre los dominios ya obtenidos!" + +#. This domain is the server's domain !!! You cannot host it on your account ! +msgid "err_dom_18" +msgstr "¡¡Este dominio es el del servidor!! No puedes instalarlo en tu cuenta." + +#. The IP address you entered is incorrect. +msgid "err_dom_19" +msgstr "La dirección IP ingresada es incorrecta." + +#. The URL you entered is incorrect. +msgid "err_dom_20" +msgstr "La URL es incorrecta. " + +#. The folder you entered is incorrect or does not exist. +msgid "err_dom_21" +msgstr "La carpeta especificada es incorrecta o no existe." + +#. The requested domain is forbidden in this server, please contact the administrator +msgid "err_dom_22" +msgstr "" +"El dominio solicitado está prohibido en este servidor, contacta al " +"administrador." + +#. The DNS of this domain do not match the server's DNS. Please change your +#. domain's DNS (and eventually wait 1 day) before you install it again. +msgid "err_dom_23" +msgstr "" +"Los DNS de este dominio no coinciden con los de este servidor. Tienes que " +"modificar los DNS del dominio (y esperar, a veces 24 horas) antes de poder " +"instalarlo." + +#. There is some forbidden characters in the sub domain (only A-Z 0-9 and - are allowed). +msgid "err_dom_24" +msgstr "" +"Hay caracteres prohibidos en el sub-dominio (sólo A-Z a-z 0-9 y - están " +"autorizados)." + +#. There is no MX record pointing to this server, and you are asking us to host the Mail here +msgid "err_dom_25" +msgstr "El dominio '%s' no te pertenece." + +#. - Entrez le nom du domaine que vous souhaitez héberger. Le nom de domaine +#. doit être complet, mais sans le www.
            IMPORTANT : Si vous voulez +#. un hébergement réel de domaine, il faut que les DNS de votre domaine +#. pointent vers nos serveurs DNS. Contacter votre hébergeur pour plus +#. d'information.
            Exemples : globenet.org / demo.com / test.eu.org etc. +#.
            Plus d'info sur la gestion des domaines dans l'aide en ligne +#. HELPID_200
            +msgid "hlp_add_domain" +msgstr "" +"- Entra el nombre de dominio que quieres hospedar. Debe estar completo pero " +"sin el www.
            IMPORTANTE: Si quieres un hospedaje efectivo del " +"dominio, es necesario que los DNS de tu dominio apunten a los servidores DNS " +"de este hospedaje. Contacta a tu hospedaje para mayor información.
            " +"Ejemplos: globenet.org / demo.com / test.eu.org etc.
            Más información " +"acerca de la gestión de dominios en la ayuda en línea HELPID_200
            " + +#. Cliquez sur le lien ci-dessus. Vous pourrez ensuite accéder aux paremètres +#. du domaine dans le menu à gauche.2 liens vont apparaitre :
            - un +#. premier pour modifier les paramètres d'hébergement du domaine (sous- +#. domaines, redirections, hébergement mails ...)
            - un second pour gérer +#. les comptes emails du domaine (si vous souhaitez créer des boites aux +#. lettres).
            Plus d'info sur la gestion des domaines dans l'aide en ligne +#. HELPID_200
            +msgid "hlp_add_domain_2" +msgstr "" +"Presiona sobre el enlace aquí abajo. Podrás entonces acceder a los " +"parámetros del dominio en el menú de la izquierda. Aparecerán dos enlaces: " +"
            - uno para modificar los paráetros de hospedaje del dominio (sub-" +"dominios, redirecciones, hospedaje de correo, ...)
            - otro para manejar " +"los buzones email del dominio (si deseas crear estos buzones).
            Más " +"información acerca del manejo de dominios en la ayuda en línea " +"HELPID_200
            " + +#. Le domaine a été effacé, mais les fichiers de votre site n'ont pas été +#. détruits.
            Si vous souhaitez détruire les fichiers du site web, utilisez +#. le Gestionnaire de Fichier
            Plus d'info sur la gestion des domaines dans +#. l'aide en ligne HELPID_200
            +msgid "hlp_del_domain" +msgstr "" +"El dominio fue borrado, pero los archivos de tu sitio no fueron destruídos. " +"
            Si quieres destruir los archivos del sitio (fuente de las pa?inas web) " +"Utiliza el manejador de archivos.
            Más información sobre el manejo de " +"dominios en la ayuda en línea HELPID_200
            " + +#. Cette zone vous permet de modifier les paramètres de votre domaine, ainsi +#. que des sous-domaines installés
            Vous pouvez créer un nouveau sous- +#. domaine et choisir, soit de le rediriger vers votre espace disque, vers une +#. autre adresse Internet, ou vers une adresse IP (utilisateurs avancés)
            +#. Plus d'info sur la gestion des domaines dans l'aide en ligne HELPID_200
            +msgid "hlp_edit_domain" +msgstr "" +"Esta zona permite modificar los parámetros de tu dominio y los sub-dominios " +"instalados. .
            Puedes crear un nuevo sub-dominio y elegir, ya sea que " +"responda con archivos de tu espacio de disco en este servidor, ya sea " +"redirigirlo hacia otra dirección internet o una dirección IP, ya sea hacia " +"la interfaz de webmail en este servidor. Esta última opción permitirá a los " +"usuarios de buzones email que puedas crear consultar su correo electrónico " +"por una iterfaz web.
            Más información sobre el manejo de dominios en la " +"ayuda en línea HELPID_200
            " + +#. FTP Accounts +msgid "quota_ftp" +msgstr "Cuentas FTP" + +#. No ftp account found +msgid "err_ftp_1" +msgstr "No se encontró ninguna cuenta FTP" + +#. This ftp account does not exist +msgid "err_ftp_2" +msgstr "Esta cuenta FTP no existe" + +#. The chosen prefix is not allowed +msgid "err_ftp_3" +msgstr "El prefijo escogido no está autorizado" + +#. This ftp account already exists +msgid "err_ftp_4" +msgstr "¡Esta cuenta FTP ya existe!" + +#. Your ftp account quota is over. You cannot create more ftp accounts. +msgid "err_ftp_5" +msgstr "" +"Alcanzaste el limite de tu cuota de cuentas FTP, no se pueden crear más." + +#. The directory cannot be created. +msgid "err_ftp_6" +msgstr "Imposible crear la carpeta." + +#. Voici la liste des comptes ftp ayant accès à votre compte. Cliquez sur +#. 'Modifier' pour changer le nom d'utilisateur, le mot de passe, ou le dossier +#. racine.
            Pour supprimer un compte, cochez la case correspondante et +#. cliquez sur le bouton 'Supprimer les comptes cochés'
            Pour pouvoir +#. accéder à vos fichiers avec un logiciel de ftp, vous devez créer au moins un +#. compte. Chaque compte est associé à un dossier, et n'aura donc accès qu'aux +#. fichiers situés dans ce dossier ou en dessous.
            Plus d'info sur le FTP +#. dans l'aide en ligne HELPID_100
            +msgid "hlp_ftp_list" +msgstr "" +"He aquí la lista de cuentas FTP que tienen acceso a tu cuenta. Presiona en " +"'Modificar' para cambiar el nombre de usuario, la contraseña, o la carpeta " +"raíz.
            Para suprimir una cuenta, selecciona la casilla correspondiente " +"y presiona el botón 'Suprimir las cuentas marcadas'
            Para acceder a tus " +"archivos con una cuenta FTP, debes crear al menos una cuenta. Cada cuenta " +"está asociada a una carpeta, y por ende sólo tendrá acceso a los archivos " +"situados en ésta y en sub-carpetas.
            Más información sobre el FTP en la " +"ayuda en línea HELPID_100
            " + +#. Vous n'avez actuellement aucun Compte FTP de disponible. Cliquez sur +#. 'Création d'un compte ftp' pour en créer un.
            Pour pouvoir accéder à vos +#. fichiers avec un logiciel de ftp, vous devez créer au moins un compte. +#. Chaque compte est associé à un dossier, et n'aura donc accès qu'aux fichiers +#. situés dans ce dossier ou en dessous.
            Plus d'info sur le FTP dans +#. l'aide en ligne HELPID_100
            +msgid "hlp_ftp_list_no" +msgstr "" +"Actualmente no tienes ninguna cuenta FTP disponible. Si quieres una, " +"presiona en 'Crear una nueva cuenta FTP'.
            Para acceder a tus archivos " +"con un software cliente FTP, tendrás que crear al menos una cuenta. Cada " +"cuenta está asociada a una carpeta, y por ende sólo tendrá acceso a los " +"archivos situados en ésta y en sub-carpetas.
            Más información sobre el " +"FTP en la ayuda en línea HELPID_100
            " + +#. Pour ajouter un compte ftp, vous devez choisir un Nom d'utilisateur, un mot +#. de passe, et un répertoire racine
            Le nom d'utilisateur commence +#. toujours par votre nom de login ou le nom d'un de vos domaines.
            Le +#. répertoire racine, s'il n'existe pas, sera créé automatiquement.
            Note : +#. Le compte que vous créez ainsi aura accès en lecture et en écriture aux +#. fichiers situés dans le répertoire et tous ses sous-répertoires.
            Plus +#. d'info sur le FTP dans l'aide en ligne HELPID_100
            +msgid "hlp_ftp_add" +msgstr "" +"Para agregar una cuenta FTP. tines que elegir un login de conexión, una " +"contraseña y una carpeta raíz. .
            El login de conexión empieza siempre " +"por tu nombre de usuario o por uno de tus dominios.
            La carpeta raíz, " +"si no existe, será creada automáticamente.
            Nota: La cuenta que creas " +"así tendrá acceso en lectura y en escritura a los archivos situados en la " +"carpeta raíz asociada y en sus sub-carpetas.
            Plus d'info sur le FTP " +"dans l'aide en ligne HELPID_100
            " + +#. An incompatible .htaccess file exists in this folder. +msgid "err_hta_1" +msgstr "Un archivo .htaccess incompatible se encuentra en la carpeta. " + +#. .htaccess parsed and syntaxically correct, a .htpassword file has been created. +msgid "err_hta_2" +msgstr ".htaccess reconocido y sintaxis correcta, un .htpasswd fue creado." + +#. .htaccess parsed and syntaxically correct, a .htpasswd already exist. +msgid "err_hta_3" +msgstr ".htaccess reconocido y sintaxis correcta, .htpasswd ya existe" + +#. No protected folder +msgid "err_hta_4" +msgstr "No hay ninguna carpeta protegida" + +#. I cannot delete the file '%s'/.htaccess +msgid "err_hta_5" +msgstr "Imposible suprimir el archivo '%s'/.htaccess" + +#. I cannot delete the file '%s'/.htpasswd +msgid "err_hta_6" +msgstr "Imposible suprimir el archivo '%s'/.htpasswd" + +#. The file .htaccess does not exist +msgid "err_hta_7" +msgstr "El archivo .htaccess no existe" + +#. The folder '%s' does not exist +msgid "err_hta_8" +msgstr "La carpeta '%s' no existe" + +#. The file '%s' is not correct +msgid "err_hta_9" +msgstr "El archivo '%s' no es válido" + +#. The user '%s' already exist for this folder +msgid "err_hta_10" +msgstr "El usuario '%s' ya está existe para esta carpeta" + +#. Please enter a valid username +msgid "err_hta_11" +msgstr "Por favor entra un nombre de usuario válido" + +#. Email Accounts +msgid "quota_mail" +msgstr "Buzones de correos" + +#. DB connection impossible, please try again later. +msgid "err_mail_1" +msgstr "Conexión LDAP imposible. Intenta más tarde." + +#. No email on domain '%s' +msgid "err_mail_2" +msgstr "Ningún buzón de correo en el dominio '%s'." + +#. The email '%s' does not exist +msgid "err_mail_3" +msgstr "El buzón '%s' no existe." + +#. Please check 'pop account' and choose a password pop, or enter some +#. redirections, or both +msgid "err_mail_4" +msgstr "" +"Por favor, marca 'cuenta POP' e ingresa una contraseña POP o entra " +"direcciones dónde redirigir los mensajes o ambas cosas." + +#. -- Server error --- Parameter is incorrect (%s) +msgid "err_mail_5" +msgstr "-- Error Servidor--- Parámetro incorrecto (%s)" + +#. The domain '%s' does not exist. +msgid "err_mail_6" +msgstr "El dominio '%s' no existe." + +#. The email '%s' already exists. +msgid "err_mail_7" +msgstr "El buzón '%s' ya existe." + +#. Your mail account quota is over. You cannot create more email accounts. +msgid "err_mail_8" +msgstr "" +"Alcanzaste el limite de tu cuota de buzones de correo, no se pueden crear " +"más." + +#. The domain '%s' does not exist. +msgid "err_mail_9" +msgstr "El dominio '%s' ya existe." + +#. -- Programm error -- Mail quota does not exist +msgid "err_mail_10" +msgstr "-- Error de programación -- la cuota Mail no existe." + +#. Please enter an Email address +msgid "err_mail_11" +msgstr "Ingresa una dirección de correo" + +#. Please enter a pop password +msgid "err_mail_12" +msgstr "Ingresa una contraseña pop" + +#. Please enter a valid email +msgid "err_mail_13" +msgstr "Ingresa una dirección de correo válida." + +#. One or more email redirection are invalid +msgid "err_mail_14" +msgstr "Una o más direcciones de correos para la redirección no son válidas." + +#. This mail is not a pop account. It's impossible to change the password ! +msgid "err_mail_15" +msgstr "" +"Esta cuenta no es una cuenta POP. ¡Es imposible cambiarle la contraseña!" + +#. OK +msgid "err_err_0" +msgstr "OK" + +#. The error message does not exist (%s) +msgid "err_err_1" +msgstr "El mensaje de error no existe (%s)" + +#. This is a date representation : parameters are the date as follow : +#. $d,$m,$y,$h,$i,$hh,$am +#. 1 2 3 4 5 6 7 +#. hh is the hour in 12 hours format, and am is 'am' or 'pm'. +#. eg: english : %3$d/%1$d/%2$d, at %6$d:%5$d %7$s +msgid "the %3$d-%2$d-%1$d at %4$d:%5$d" +msgstr "el %1$d/%2$d/%3$d, a las %4$dh%5$d" + +#. User or password incorrect +msgid "err_mem_1" +msgstr "Usuario o contraseña incorrecta." + +#. This account is locked, contact the administrator +msgid "err_mem_2" +msgstr "Cuenta bloqueada, contacta al administrador." + +#. Cookie incorrect, please accept the session cookie +msgid "err_mem_3" +msgstr "Cookie incorrecto, tu navegador tiene que aceptar los cookies." + +#. Session unknown, contact the administrator +msgid "err_mem_4" +msgstr "Sesión inexistente, contacta al administrador." + +#. IP address incorrect, please contact the administrator +msgid "err_mem_5" +msgstr "IP incorrecta, contacta al administrador." + +#. The old password is incorrect +#. PROBLEME : il y avait 2 fois le 5, les autres messages doivent surement etre décalés (TODO) +msgid "err_mem_6" +msgstr "La antigua contraseña es incorrecta." + +#. The new passwords are differents, please retry +msgid "err_mem_7" +msgstr "Las dos versiones de la nueva contraseña son distintas." + +#. A password must be at least 3 characters long. +msgid "err_mem_8" +msgstr "Una contraseña debe estar compuesta por lo menos de 3 caracteres." + +#. The information you entered is incorrect +msgid "err_mem_9" +msgstr "Los datos proporcionados son incorrectos." + +#. You are not allowed to change your password. +msgid "err_mem_11" +msgstr "No estás autorizado a cambiar tu contraseña." + +#. You must be a system administrator to do this +msgid "err_mem_12" +msgstr "" +"Debes ser administrador para cambiar las preferencias de Administrador." + +# Please do NOT translate those strings to each language. Use the original language instead +#. Français (France) +#. Please do NOT translate those strings to each language. Use the original language instead +msgid "fr_FR" +msgstr "Français (France)" + +#. Français (Canada) +#. Please do NOT translate those strings to each language. Use the original language instead +msgid "fr_CA" +msgstr "Français (Canada)" + +#. English (United States) +#. Please do NOT translate those strings to each language. Use the original language instead +msgid "en_US" +msgstr "English (United States)" + +#. English (United Kingdom) +#. Please do NOT translate those strings to each language. Use the original language instead +msgid "en_UK" +msgstr "English (United Kingdom)" + +#. Deutsch (Germany) +#. Please do NOT translate those strings to each language. Use the original language instead +msgid "de_DE" +msgstr "Deutsch (Germany)" + +#. Español (Spania) +#. Please do NOT translate those strings to each language. Use the original language instead +msgid "es_ES" +msgstr "Español (España)" + +#. Español (Venezuela) +#. Please do NOT translate those strings to each language. Use the original language instead +msgid "es_VE" +msgstr "Español (Venezuela)" + +#. OK +msgid "err_quota_0" +msgstr "OK" + +#. Error writing the quota entry ! +msgid "err_quota_1" +msgstr "Les cuotas de disco no están activadas en este servidor." + +#. MySQL Databases +msgid "quota_mysql" +msgstr "Bases de datos MySQL" + +#. MySQL Users +#, fuzzy +msgid "quota_mysql_users" +msgstr "Usarios MySQL" + +#. Disk space +msgid "quota_web" +msgstr "Espacio disco (Ko)" + +#. Data base name can contain only digits or lowercase alphabetic characters +msgid "err_mysql_2" +msgstr "" +"El nombre de la base de datos sólo puede contener cifras y letras minúsculas." + +#. The database does not exist, you'll get an access by creating it. +msgid "err_mysql_3" +msgstr "Esta base de datos ya existe, utiliza otro nombre." + +#. This database already exists! +msgid "err_mysql_4" +msgstr "¡Esta base de datos no existe!" + +#. Your backup number is incorrect. +msgid "err_mysql_5" +msgstr "¡El número de copias de respaldo es incorrecto!" + +#. The folder is incorrect! +msgid "err_mysql_6" +msgstr "¡La carpeta es incorrecta!" + +#. The file name you chose does not exist or is incorrect. +msgid "err_mysql_7" +msgstr "No tienes ninguna base de datos, no puedes cambiar la contraseña." + +#. The password is too long (16 chars max) +msgid "err_mysql_8" +msgstr "La contraseña es demasiado larga (16 caracteres máximo)." + +#. The file is incorrect or does not exist. +msgid "err_mysql_9" +msgstr "El archivo especificado no existe o es incorrecto." + +# ################################################################# +# m_webaccess +#. Your cannot create your main database : you still have other dbs ! +msgid "err_mysql_10" +msgstr "Error: no puedes crear tu base principal. ¡Te quedan otras bases!" + +# ################################################################# +# m_webaccess +#. You have no database, click on 'Databases' to create the first one +msgid "err_mysql_11" +msgstr "" +"No tienes ninguna base de datos disponible. Presiona en «Bases de datos» " +"para crear una." + +# ################################################################# +# m_webaccess +#. The data base name is too long (64 chars max) +msgid "err_mysql_12" +msgstr "No tienes ninguna base de datos disponible." + +# ################################################################# +# m_webaccess +#. You cannot create more MySQL users +msgid "err_mysql_13" +msgstr "No tienes ninguna base de datos disponible." + +# ################################################################# +# m_webaccess +#. MySQL users can only have a-z and 0-9 characters. +msgid "err_mysql_14" +msgstr "El nombre de usuario sólo puede contener cifras y/o letras minúsculas." + +# ################################################################# +# m_webaccess +#. MySQL users must be less than 16 characters long. +msgid "err_mysql_15" +msgstr "Nombre de usuario demasiado largo (16 caracteres máximo)" + +# ################################################################# +# m_webaccess +#. This MySQL user already exists. +msgid "err_mysql_16" +msgstr "Ya existe un usuario con el mismo nombre" + +# ################################################################# +# m_webaccess +#. Passwords do not match. +msgid "err_mysql_17" +msgstr "Las contraseñas no corresponden." + +# ################################################################# +# m_webaccess +#. The requested MySQL user does not exist. +msgid "err_mysql_18" +msgstr "El usuario no existe." + +# ################################################################# +# m_webaccess +#. You have no MySQL users at the moment. +msgid "err_mysql_19" +msgstr "Ningún usuario está definido en MySQL." + +#. Your MySQL backups are stored in the chosen folder from db.sql.1 to db.sql.19
            your database name replaces 'db'.
            WARNING: If you modify backup settings (backups, compression...) previous +#. backups may remain in the backup folder. Go to the file manager to delete +#. them. +msgid "hlp_sql_bck" +msgstr "" +"Los respaldos de tu base de datos MySQL se almacenan en la carpeta elegida " +"con los nombres db.sql.1 a db.sql.19
            donde " +"'db' se remplaza por el nombre de la base de datos.
            CUIDADO: si " +"modificas los parámetros de respaldo (número de respaldos, compresiones...) " +"viejos respaldos pueden quedar en la carpta correspondiente. Los puedes " +"borrar a través del manejador de archivos." + +#. Web Statistics +msgid "quota_sta2" +msgstr "Estadísticas Web en bruto" + +# ################################################################# +# m_webaccess +#. You cannot create more raw statistic set. +msgid "err_sta2_1" +msgstr "" +"Alcanzaste tu cuota de juegos de estadísticas, ya no puedes crear más. " + +#. There is currently no raw statistic set. +msgid "err_sta2_2" +msgstr "Ningún juego de estadísticas en bruto." + +#. The requested raw statistic set has not been found. +msgid "err_sta2_3" +msgstr "No se encuentra este juego de estadísticas en bruto." + +#. File or folder name is incorrect +msgid "err_bro_1" +msgstr "¡Carpeta o archivo incorrecto!" + +#. You cannot move or copy a file to the same folder +msgid "err_bro_2" +msgstr "¡No se puede desplazar un archivo hacia la misma carpeta!" + +#. If we manage your DNS
            You can manage your mails elsewhere if you want +#. (MX field).
            Write %s in this field if your mail +#. must be managed by %s
            or put the IP address or name of the mail server +#. used to manage your mails.Warning : if you put nothing in this field, +#. your mails will be unavailable +msgid "help_dns_mx %s %s" +msgstr "" +"Si este servidor maneja tu DNS:
            Si quieres, puedes manejar tus buzones " +"de correo en otro lado (campo MX).
            Ingresa %s en " +"este campo si tus buzones deben ser manejados por %s
            o ingresa la " +"dirección IP o el nombre del servidor de mail utilizado para tus buzones " +"Cuidado: si no pones nada en este campo, tus direcciones de correo " +"estarán indisponibles." + +#. If we don't manage the DNS for this domain
            do we manage your mails? +msgid "help_dns_mail" +msgstr "" +"Si este servidor no maneja el DNS de este dominio
            ¿maneja sus buzones " +"de correo?" + +#. If you want to delete the domain %s, click the button below.Warning : this +#. delete all the ftp, mails, mailing-lists ... associated with thisdomain and +#. all its subdomains! +msgid "help_domain_del %s" +msgstr "" +"Si quieres borrar el dominio %s, presiona el botón aquí abajo. ¡Cuidado: " +"esto borrará todas las cuentas FTP, los buzones, las listas de correo, ... " +"asociadas con el dominio y todos sus subdominios!" + +#. You can create various databases
            Click on 'SQL Admin' in the menu to +#. manage them
            or use the table below to backup, retrieve or delete them: +msgid "help_sql_list_ok" +msgstr "" +"Puedes crear varias bases de datos
            Presiona en 'Admin SQL' en el menu " +"para manejarlas
            o utiliza el menú a continuación para respaldarlas, " +"restaurarlas o borrarlas:" + +#. Your haven't created your main database yet, please enter a password to create it. +msgid "help_sql_list_no" +msgstr "" +"Aún no has creado tu base de datos principal, por favor entra una contraseña " +"para crearla." + +#. This is a date representation : parameters are the date as follow : +#. $d,$m,$y,$h,$i,$hh,$am +#. 1 2 3 4 5 6 7 +#. hh is the hour in 12 hours format, and am is 'am' or 'pm'. +#. eg: english : %3$d/%1$d/%2$d, at %6$d:%5$d %7$s +msgid "%3$d-%2$d-%1$d %4$d:%5$d" +msgstr "%1$d/%2$d/%3$d %6$d:%5$d %7$d" + +msgid "1 column, detailed" +msgstr "" + +msgid "2 columns, short" +msgstr "" + +msgid "3 columns, short" +msgstr "" + +msgid "Go back to the file manager" +msgstr "" + +msgid "Edit the newly created file" +msgstr "" + +#, fuzzy +msgid "hlp_login" +msgstr "" +"El dominio fue borrado, pero los archivos de tu sitio no fueron destruídos. " +"
            Si quieres destruir los archivos del sitio (fuente de las pa?inas web) " +"Utiliza el manejador de archivos.
            Más información sobre el manejo de " +"dominios en la ayuda en línea HELPID_200
            " + +# m_membre +#, fuzzy +msgid "err_admin_14" +msgstr "-- ¡¡Sólo los administradores tienen acceso a estas páginas!! --" + +# m_membre +#, fuzzy +msgid "err_admin_15" +msgstr "-- ¡¡Sólo los administradores tienen acceso a estas páginas!! --" + +# m_membre +#, fuzzy +msgid "err_admin_16" +msgstr "-- ¡¡Sólo los administradores tienen acceso a estas páginas!! --" + +# m_membre +#, fuzzy +msgid "err_admin_17" +msgstr "-- ¡¡Sólo los administradores tienen acceso a estas páginas!! --" + +# m_membre +#, fuzzy +msgid "err_admin_18" +msgstr "-- ¡¡Sólo los administradores tienen acceso a estas páginas!! --" + +#, fuzzy +msgid "err_hta_12" +msgstr "Un archivo .htaccess incompatible se encuentra en la carpeta. " + +#, fuzzy +msgid "err_mail_16" +msgstr "Conexión LDAP imposible. Intenta más tarde." + +#, fuzzy +msgid "err_mysql_20" +msgstr "" +"El nombre de la base de datos sólo puede contener cifras y letras minúsculas." + +#, fuzzy +msgid "err_mysql_21" +msgstr "" +"El nombre de la base de datos sólo puede contener cifras y letras minúsculas." + +#, fuzzy +msgid "err_bro_3" +msgstr "¡Carpeta o archivo incorrecto!" + +#, fuzzy +msgid "%3$d-%2$d-%1$d" +msgstr "%1$d/%2$d/%3$d %6$d:%5$d %7$d" + +msgid "AlternC's account password" +msgstr "Mots de passe des comptes AlternC" + +msgid "POP/IMAP account passwords" +msgstr "Mots de passe des comptes POP/IMAP" + +msgid "Protected folders passwords" +msgstr "Mots de passe des dossiers protégés" diff --git a/stable-1.0/bureau/locales/es_ES/LC_MESSAGES/messages.po b/stable-1.0/bureau/locales/es_ES/LC_MESSAGES/messages.po new file mode 100644 index 00000000..c28c0cc8 --- /dev/null +++ b/stable-1.0/bureau/locales/es_ES/LC_MESSAGES/messages.po @@ -0,0 +1,3379 @@ +#: ../admin/adm_add.php:36 ../admin/adm_deactivate.php:41 +#: ../admin/adm_defquotas.php:35 ../admin/adm_dnsweberror.php:33 +#: ../admin/adm_doadd.php:35 ../admin/adm_dodefquotas.php:35 +#: ../admin/adm_dodel.php:33 ../admin/adm_dodel.php:45 +#: ../admin/adm_doedit.php:35 ../admin/adm_doedit.php:42 +#: ../admin/adm_domlock.php:33 ../admin/adm_doms.php:33 +#: ../admin/adm_domstypedoedit.php:4 ../admin/adm_domstypeedit.php:32 +#: ../admin/adm_domstype.php:33 ../admin/adm_domstyperegenerate.php:4 +#: ../admin/adm_donosu.php:33 ../admin/adm_dorenew.php:34 +#: ../admin/adm_dorenew.php:38 ../admin/adm_dosu.php:33 +#: ../admin/adm_edit.php:36 ../admin/adm_edit.php:48 ../admin/adm_list.php:37 +#: ../admin/adm_list.php:58 ../admin/adm_login.php:74 +#: ../admin/adm_login.php:86 ../admin/adm_mxaccount.php:33 +#: ../admin/adm_panel.php:33 ../admin/adm_passpolicy.php:30 +#: ../admin/adm_quotadoedit.php:33 ../admin/adm_quotaedit.php:34 +#: ../admin/adm_slaveaccount.php:33 ../admin/adm_slaveip.php:33 +#: ../admin/adm_tldadd.php:33 ../admin/adm_tlddoadd.php:33 +#: ../admin/adm_tlddoedit.php:33 ../admin/adm_tldedit.php:33 +#: ../admin/adm_tld.php:33 ../admin/adm_variables.php:33 +#: ../admin/quotas_users.php:10 ../class/reset_stats_conf.php:6 +msgid "This page is restricted to authorized staff" +msgstr "Esta página está reservada a los administradores" + +#: ../admin/adm_add.php:46 +#, fuzzy +msgid "New AlternC account" +msgstr "Suprimir este tipo de cuenta" + +#: ../admin/adm_add.php:56 ../admin/adm_edit.php:69 +#: ../admin/adm_quotaedit.php:68 ../admin/ftp_add.php:54 +#: ../admin/ftp_edit.php:59 ../admin/ftp_list.php:72 +#: ../admin/hta_adduser.php:53 ../admin/hta_edit.php:62 +#: ../admin/hta_edit.php:102 ../admin/index.php:76 +#: ../admin/sql_getparam.php:50 ../admin/sql_list.php:94 +#: ../admin/sql_passchg.php:51 ../admin/sql_users_add.php:64 +msgid "Username" +msgstr "Nombre de usuario" + +#: ../admin/adm_add.php:60 +msgid "Initial password" +msgstr "Contraseña inicial" + +# msgid "New password" +# msgstr "Nueva contraseña" +#: ../admin/adm_add.php:64 ../admin/adm_edit.php:89 ../admin/ftp_add.php:65 +#: ../admin/ftp_edit.php:71 ../admin/hta_adduser.php:61 +#: ../admin/hta_edit.php:110 ../admin/hta_edituser.php:55 +#: ../admin/mail_add.php:71 ../admin/mail_edit.php:79 +#: ../admin/sql_users_add.php:72 ../admin/sql_users_password.php:59 +msgid "Confirm password" +msgstr "Confirmar contraseña" + +#: ../admin/adm_add.php:68 ../admin/adm_edit.php:93 +msgid "Can he change its password" +msgstr "¿Puede cambiar su contraseña?" + +#: ../admin/adm_add.php:70 ../admin/adm_dodefquotas.php:73 +#: ../admin/adm_dodel.php:81 ../admin/adm_domstype.php:83 +#: ../admin/adm_domstype.php:84 ../admin/adm_domstype.php:85 +#: ../admin/adm_edit.php:78 ../admin/adm_edit.php:95 +#: ../admin/adm_passpolicy.php:112 ../admin/adm_passpolicy.php:158 +#: ../admin/bro_main.php:94 ../admin/dom_dodel.php:74 +#: ../admin/dom_edit.php:182 ../admin/dom_edit.php:194 +#: ../admin/dom_subdel.php:71 ../admin/mail_add.php:65 +#: ../admin/mail_edit.php:73 ../admin/sql_bck.php:87 ../admin/sql_del.php:81 +#: ../admin/sql_users_del.php:70 ../admin/trash_dateselect.php:39 +msgid "No" +msgstr "No" + +#: ../admin/adm_add.php:71 ../admin/adm_dodefquotas.php:72 +#: ../admin/adm_dodel.php:80 ../admin/adm_domstype.php:83 +#: ../admin/adm_domstype.php:84 ../admin/adm_domstype.php:85 +#: ../admin/adm_edit.php:79 ../admin/adm_edit.php:96 +#: ../admin/adm_passpolicy.php:113 ../admin/adm_passpolicy.php:158 +#: ../admin/bro_main.php:93 ../admin/dom_dodel.php:74 +#: ../admin/dom_edit.php:181 ../admin/dom_edit.php:193 +#: ../admin/dom_subdel.php:70 ../admin/mail_add.php:66 +#: ../admin/mail_edit.php:74 ../admin/sql_bck.php:88 ../admin/sql_del.php:81 +#: ../admin/sql_users_del.php:70 ../admin/trash_dateselect.php:40 +msgid "Yes" +msgstr "Sí" + +#: ../admin/adm_add.php:75 ../admin/adm_edit.php:100 +#, fuzzy +msgid "Notes" +msgstr "Nombres" + +#: ../admin/adm_add.php:79 ../admin/adm_edit.php:104 +msgid "Surname" +msgstr "Apellido" + +#: ../admin/adm_add.php:79 ../admin/adm_edit.php:104 +msgid "First Name" +msgstr "Nombre" + +#: ../admin/adm_add.php:83 ../admin/adm_edit.php:108 ../admin/mail_add.php:60 +#: ../admin/mail_list.php:104 +msgid "Email address" +msgstr "Dirección de correo" + +#: ../admin/adm_add.php:87 ../admin/adm_dodefquotas.php:43 +#: ../admin/adm_dodefquotas.php:45 ../admin/adm_dodefquotas.php:52 +#: ../admin/adm_dodefquotas.php:54 ../admin/adm_edit.php:112 +msgid "Account type" +msgstr "Tipo de cuenta" + +#: ../admin/adm_add.php:105 +#, fuzzy, php-format +msgid "Install the domain" +msgstr "Administración de los dominios instalados" + +#: ../admin/adm_add.php:121 +#, fuzzy +msgid "Create this AlternC account" +msgstr "Crear la cuenta FTP." + +#: ../admin/adm_add.php:122 ../admin/adm_deactivate.php:61 +#: ../admin/adm_domstypeedit.php:122 ../admin/adm_edit.php:131 +#: ../admin/adm_quotaedit.php:87 ../admin/adm_tldadd.php:65 +#: ../admin/adm_tldedit.php:70 ../admin/bro_pref.php:134 +#: ../admin/browseforfolder.php:136 ../admin/ftp_add.php:68 +#: ../admin/ftp_edit.php:75 ../admin/hta_adduser.php:67 +#: ../admin/mail_add.php:88 ../admin/mail_edit.php:98 ../admin/sql_bck.php:105 +#: ../admin/sql_passchg.php:57 ../admin/sql_users_add.php:78 +#: ../admin/sql_users_password.php:65 +msgid "Cancel" +msgstr "Cancelar" + +#: ../admin/adm_deactivate.php:36 +msgid "Missing uid" +msgstr "Usuario faltante" + +#: ../admin/adm_deactivate.php:47 +msgid "User does not exist" +msgstr "El usuario no existe" + +# msgid "New password" +# msgstr "Nueva contraseña" +#: ../admin/adm_deactivate.php:52 ../admin/adm_deactivate.php:60 +msgid "Confirm" +msgstr "Confirmar" + +#: ../admin/adm_deactivate.php:53 +msgid "WARNING: experimental feature, use at your own risk" +msgstr "CUIDADO: funcionalidad experimental, úsala a tus propios riesgos" + +#: ../admin/adm_deactivate.php:54 +msgid "" +"The following domains will be deactivated and redirected to the URL entered " +"in the following box. A backup of the domain configuration will be displayed " +"as a serie of SQL request that you can run to restore the current " +"configuration if you want. Click confirm if you are sure you want to " +"deactivate all this user's domains." +msgstr "" +"Los dominios siguientes serán desactivados y redirigidos hacia la URL " +"ingresada en el cuadro a continuación. Se mostrará un respaldo de tu " +"configuración como una serie de solicitudes SQL que podrás volver a cargar " +"para recuperar tu configuración actual. Confirma si estás seguro de " +"desactivar todos los dominios de este usuario. " + +#: ../admin/adm_deactivate.php:59 +msgid "Redirection URL:" +msgstr "Redirección hacía la URL:" + +#: ../admin/adm_deactivate.php:64 +msgid "Domains of user: " +msgstr "Dominio del usuario:" + +#: ../admin/adm_deactivate.php:67 +msgid "Missing redirect url." +msgstr "Falta la URL de redirección" + +#: ../admin/adm_deactivate.php:87 +#, php-format +msgid "-- Redirecting all domains and subdomains of the user %s to %s\n" +msgstr "" +"-- Redirigir todos los dominios y subdominios del usuario %s hacia %s\n" + +#: ../admin/adm_defquotas.php:42 ../admin/adm_panel.php:54 +msgid "Change the default quotas" +msgstr "Modificar las cuotas por omisión" + +#: ../admin/adm_defquotas.php:55 +msgid "Add account type" +msgstr "Agregar este tipo de cuenta" + +#: ../admin/adm_defquotas.php:70 +msgid "Delete account type" +msgstr "Suprimir este tipo de cuenta" + +#: ../admin/adm_defquotas.php:75 +msgid "" +"Here is the list of the quotas on the server for the new accounts. If you " +"want to change them, enter new values" +msgstr "" +"He aquí la lista de cuotas por omisión en este servidor para las nuevas " +"cuentas." + +#: ../admin/adm_defquotas.php:89 +msgid "Accounts of type" +msgstr "Tipo de cuentas" + +#: ../admin/adm_defquotas.php:91 ../admin/adm_list.php:128 +#: ../admin/adm_list.php:173 ../admin/adm_list.php:193 +#: ../admin/menu_quota.php:52 +msgid "Quotas" +msgstr "Cuotas" + +#: ../admin/adm_defquotas.php:91 +msgid "Default Value" +msgstr "Valores por omisión" + +#: ../admin/adm_defquotas.php:109 +msgid "Edit the default quotas" +msgstr "Modificar las cuotas por omisión" + +#: ../admin/adm_dnsweberror.php:40 +msgid "Domains and Websites having errors" +msgstr "" + +#: ../admin/adm_dnsweberror.php:50 +msgid "List of the websites having errors in the domain database." +msgstr "" + +#: ../admin/adm_dnsweberror.php:54 ../admin/adm_dnsweberror.php:87 +#, fuzzy +msgid "Uid" +msgstr "uid" + +#: ../admin/adm_dnsweberror.php:55 ../admin/adm_dnsweberror.php:88 +#: ../admin/adm_list.php:124 ../admin/adm_list.php:207 +#: ../admin/adm_list.php:208 ../admin/adm_list.php:209 +#: ../admin/quotas_oneuser.php:8 ../admin/quotas_users.php:168 +#, fuzzy +msgid "Account" +msgstr "Tipo de cuenta" + +#: ../admin/adm_dnsweberror.php:56 ../admin/adm_dnsweberror.php:89 +#: ../admin/dom_add.php:57 ../admin/sta2_list.php:58 +msgid "Domain name" +msgstr "Nombre de dominio" + +#: ../admin/adm_dnsweberror.php:57 +msgid "FQDN" +msgstr "" + +#: ../admin/adm_dnsweberror.php:58 ../admin/adm_variables.php:57 +msgid "Value" +msgstr "Valor" + +#: ../admin/adm_dnsweberror.php:59 ../admin/adm_domstypeedit.php:76 +#: ../admin/adm_domstype.php:59 +msgid "Description" +msgstr "" + +#: ../admin/adm_dnsweberror.php:60 +msgid "Web Result field" +msgstr "" + +#: ../admin/adm_dnsweberror.php:84 +msgid "List of the domain names having errors in the domain database." +msgstr "" + +#: ../admin/adm_dnsweberror.php:90 +msgid "DNS Result field" +msgstr "" + +#: ../admin/adm_doadd.php:40 ../admin/adm_doedit.php:47 +#: ../admin/ftp_doadd.php:33 ../admin/ftp_doedit.php:36 +#: ../admin/hta_doadduser.php:33 ../admin/hta_doedituser.php:41 +#: ../admin/mail_doadd.php:44 ../admin/mail_doedit.php:49 +msgid "Passwords do not match" +msgstr "Las contraseñas no corresponden" + +#: ../admin/adm_doadd.php:71 +msgid "The new member has been successfully created" +msgstr "El nuevo miembro fue creado con éxito" + +#: ../admin/adm_dodefquotas.php:43 +msgid "added" +msgstr "añadido" + +#: ../admin/adm_dodefquotas.php:45 +msgid "could not be added" +msgstr "no pudo ser añadido" + +#: ../admin/adm_dodefquotas.php:52 +msgid "deleted" +msgstr "borrado" + +#: ../admin/adm_dodefquotas.php:54 +msgid "could not be deleted" +msgstr "no pudo ser borrado" + +#: ../admin/adm_dodefquotas.php:63 +#, php-format +msgid "Deleting quota %s" +msgstr "Supresión de la cuota %s" + +#: ../admin/adm_dodefquotas.php:69 +msgid "WARNING : Confirm the deletion of the quota" +msgstr "ADVERTENCIA : Confirma la supresión de la cuota" + +#: ../admin/adm_dodefquotas.php:92 +msgid "Default quotas successfully changed" +msgstr "Cuotas por omisión modificadas con éxito" + +#: ../admin/adm_dodefquotas.php:94 +msgid "Default quotas could not be set." +msgstr "No se pudieron modificar las cuotas por omisión" + +#: ../admin/adm_dodel.php:49 +#, php-format +msgid "Member '%s' does not exist" +msgstr "El miembro '%s' no existe" + +#: ../admin/adm_dodel.php:51 +#, php-format +msgid "Member %s successfully deleted" +msgstr "El miembro %s fue borrado con éxito" + +#: ../admin/adm_dodel.php:58 +#, fuzzy +msgid "Please check the accounts you want to delete" +msgstr "Elige el archivo que contiene los datos SQL por restaurar en la base." + +#: ../admin/adm_dodel.php:66 +#, php-format +msgid "Deleting users" +msgstr "Suprimir un usuario" + +#: ../admin/adm_dodel.php:70 +msgid "WARNING : Confirm the deletion of the users" +msgstr "ADVERTENCIA : Confirma la supresión de este usuario" + +#: ../admin/adm_doedit.php:60 +msgid "The member has been successfully edited" +msgstr "La cuenta fue modificada con éxito" + +#: ../admin/adm_doms.php:40 ../admin/adm_panel.php:53 +msgid "Manage installed domains" +msgstr "Administración de los dominios instalados" + +#: ../admin/adm_doms.php:53 +msgid "" +"Here is the list of the domains installed on this server. You can remove a " +"domain if it does not exist or does not point to our server anymore. You can " +"also set the 'Lock' flag on a domain so that the user will not be able to " +"change any DNS parameter or delete this domain from his account." +msgstr "" +"He aquí la lista de dominios instalados en este servidor. Puedes suprimir un " +"dominio si ya no existe o si ya no apunta a este servidor. También puedes " +"bloquear un dominio para que el usuario ya no pueda modificar sus parámetros " +"DNS o borrarlo." + +#: ../admin/adm_doms.php:56 +msgid "" +"The domain OK column are green when the domain exists in the worldwide " +"registry and has a proper NS,MX and IP depending on its configuration. It is " +"red if we have serious doubts about its NS, MX or IP configuration. Contact " +"the user of this domain or a system administrator." +msgstr "" + +#: ../admin/adm_doms.php:59 +msgid "If you want to force the check of NS, MX, IP on domains, click the link" +msgstr "" + +#: ../admin/adm_doms.php:59 +msgid "Show domain list with refreshed checked NS, MX, IP information" +msgstr "" + +#: ../admin/adm_doms.php:63 ../admin/adm_mxaccount.php:81 +#: ../admin/adm_slaveaccount.php:80 ../admin/adm_slaveip.php:80 +msgid "Action" +msgstr "Acción" + +#: ../admin/adm_doms.php:63 +msgid "Domain" +msgstr "Dominio" + +#: ../admin/adm_doms.php:63 +#, fuzzy +msgid "Creator" +msgstr "Crear" + +#: ../admin/adm_doms.php:63 ../admin/adm_doms.php:81 ../admin/adm_list.php:166 +#: ../admin/adm_list.php:191 +msgid "Connect as" +msgstr "Conectarse como" + +#: ../admin/adm_doms.php:63 +#, fuzzy +msgid "OK?" +msgstr "OK" + +#: ../admin/adm_doms.php:63 ../admin/dom_edit.php:97 +msgid "Status" +msgstr "" + +#: ../admin/adm_doms.php:72 +msgid "Locked Domain" +msgstr "Dominio bloqueado" + +#: ../admin/adm_doms.php:75 +msgid "Unlock" +msgstr "Desbloquear" + +#: ../admin/adm_doms.php:75 +msgid "Lock" +msgstr "Bloquear" + +#: ../admin/adm_domstypeedit.php:58 +#, fuzzy +msgid "Edit a domain type" +msgstr "Modificar dominio %s" + +#: ../admin/adm_domstypeedit.php:72 ../admin/adm_domstype.php:58 +#, fuzzy +msgid "Name" +msgstr "Nombres" + +#: ../admin/adm_domstypeedit.php:80 +msgid "Target type" +msgstr "" + +#: ../admin/adm_domstypeedit.php:90 ../admin/adm_domstype.php:61 +msgid "Entry" +msgstr "" + +#: ../admin/adm_domstypeedit.php:94 +msgid "Compatibility" +msgstr "" + +#: ../admin/adm_domstypeedit.php:94 ../admin/adm_domstype.php:62 +msgid "Enter comma-separated name of other types" +msgstr "" + +#: ../admin/adm_domstypeedit.php:98 ../admin/dom_edit.php:125 +msgid "Enabled" +msgstr "" + +#: ../admin/adm_domstypeedit.php:108 +msgid "Do only a DNS entry" +msgstr "" + +#: ../admin/adm_domstypeedit.php:112 +msgid "Domain must have our DNS" +msgstr "" + +#: ../admin/adm_domstypeedit.php:116 +msgid "Is it an advanced option?" +msgstr "" + +#: ../admin/adm_domstypeedit.php:121 +#, fuzzy +msgid "Change this domain type" +msgstr "Modificar este buzón" + +#: ../admin/adm_domstype.php:40 ../admin/adm_panel.php:65 +#, fuzzy +msgid "Manage domains type" +msgstr "Administración de los dominios instalados" + +#: ../admin/adm_domstype.php:42 +msgid "" +"If you don't know what this page is about, don't touch anything, and read " +"AlternC documentation about domain types" +msgstr "" + +#: ../admin/adm_domstype.php:52 +#, fuzzy +msgid "Here is the list of domain types." +msgstr "He aquí la lista de miembros hospedados" + +#: ../admin/adm_domstype.php:54 +#, fuzzy +msgid "Create a domain type" +msgstr "Creación de un subdominio:" + +#: ../admin/adm_domstype.php:60 +msgid "Target" +msgstr "" + +#: ../admin/adm_domstype.php:62 +msgid "Compatible with" +msgstr "" + +#: ../admin/adm_domstype.php:63 +#, fuzzy +msgid "Enabled?" +msgstr "¿Cuenta activa?" + +#: ../admin/adm_domstype.php:64 +msgid "Only DNS?" +msgstr "" + +#: ../admin/adm_domstype.php:65 +msgid "Need to be DNS?" +msgstr "" + +#: ../admin/adm_domstype.php:66 +msgid "Advanced?" +msgstr "" + +#: ../admin/adm_domstype.php:75 ../admin/adm_list.php:170 +#: ../admin/adm_list.php:192 ../admin/adm_passpolicy.php:152 +#: ../admin/adm_tld.php:76 ../admin/dom_edit.php:106 ../admin/ftp_list.php:82 +#: ../admin/mail_list.php:113 ../admin/sta2_list.php:68 +msgid "Edit" +msgstr "Modificar" + +#: ../admin/adm_domstype.php:76 +msgid "Regenerate" +msgstr "" + +#: ../admin/adm_donosu.php:45 +#, fuzzy +msgid "This account is now a normal account" +msgstr "Esta cuenta es un cuenta de administrador" + +#: ../admin/adm_dorenew.php:46 +msgid "The member has been successfully renewed" +msgstr "La cuenta fue renovada con éxito" + +#: ../admin/adm_dosu.php:45 +#, fuzzy +msgid "This account is now an administrator account" +msgstr "Esta cuenta es un cuenta de administrador" + +#: ../admin/adm_edit.php:57 +msgid "Member Edition" +msgstr "Modificar miembro" + +#: ../admin/adm_edit.php:73 +#, fuzzy +msgid "Account Enabled?" +msgstr "¿Cuenta activa?" + +#: ../admin/adm_edit.php:76 +#, fuzzy +msgid "You cannot disable your own account." +msgstr "No estás autorizado a cambiar tu contraseña" + +#: ../admin/adm_edit.php:85 ../admin/adm_mxaccount.php:81 +#: ../admin/adm_mxaccount.php:101 ../admin/adm_slaveaccount.php:80 +#: ../admin/adm_slaveaccount.php:100 ../admin/ftp_add.php:64 +#: ../admin/ftp_edit.php:70 ../admin/hta_adduser.php:57 +#: ../admin/hta_edit.php:106 ../admin/index.php:77 ../admin/index.php:94 +#: ../admin/sql_getparam.php:54 ../admin/sql_list.php:95 +#: ../admin/sql_passchg.php:52 ../admin/sql_users_add.php:68 +#: ../admin/sql_users_list.php:52 ../admin/sql_users_password.php:55 +msgid "Password" +msgstr "Contraseña" + +#: ../admin/adm_edit.php:123 +#, fuzzy +msgid "Reset quotas to default?" +msgstr "¿Reincializar las cuotas al valor por omisión?" + +#: ../admin/adm_edit.php:126 +msgid "Period" +msgstr "Periodicidad de facturación" + +#: ../admin/adm_edit.php:130 +msgid "Edit this account" +msgstr "Modificar cuenta" + +#: ../admin/adm_edit.php:143 +msgid "Renew for" +msgstr "Renovar por" + +#: ../admin/adm_edit.php:144 +msgid "period(s)" +msgstr "período(s)" + +#: ../admin/adm_edit.php:147 +msgid "Renew" +msgstr "Renovar" + +#: ../admin/adm_edit.php:160 +msgid "This account is a super-admin account" +msgstr "Esta cuenta es un cuenta de administrador" + +#: ../admin/adm_edit.php:162 +msgid "" +"There is only one administrator account, you cannot turn this account back " +"to normal" +msgstr "" +"Sólo queda una cuenta de administrador, no se puede transformar esta cuenta " +"de administrador en cuenta corriente." + +#: ../admin/adm_edit.php:165 +msgid "Turn this account back to normal" +msgstr "Transformar esta cuenta de Administrador en cuenta corriente" + +#: ../admin/adm_edit.php:168 +msgid "Make this account a super admin one" +msgstr "Transformar esta cuenta en cuenta de administrador" + +#: ../admin/adm_edit.php:175 +#, php-format +msgid "Account created by %s" +msgstr "Cuenta creada por %s" + +#: ../admin/adm_list.php:66 +#, fuzzy +msgid "AlternC account list" +msgstr "Lista de cuentas FTP" + +#: ../admin/adm_list.php:75 +#, fuzzy +msgid "Here is the list of hosted AlternC accounts" +msgstr "He aquí la lista de miembros hospedados" + +#: ../admin/adm_list.php:75 +#, php-format +msgid "%s accounts" +msgstr "%s cuentas" + +#: ../admin/adm_list.php:79 +#, fuzzy +msgid "List all AlternC accounts" +msgstr "Listar todas las cuentas" + +#: ../admin/adm_list.php:89 +#, fuzzy +msgid "Or only the accounts of:" +msgstr "Listar todas las cuentas" + +#: ../admin/adm_list.php:94 +msgid "List only my accounts" +msgstr "Listar sólo mis cuentas" + +#: ../admin/adm_list.php:96 +#, fuzzy +msgid "Create a new AlternC account" +msgstr "Crear una nueva cuenta FTP" + +#: ../admin/adm_list.php:100 +msgid "No account defined for now" +msgstr "No existe ninguna cuenta por el momento" + +#: ../admin/adm_list.php:114 ../admin/adm_list.php:198 +#: ../admin/adm_list.php:281 ../admin/ftp_list.php:90 +msgid "Delete checked accounts" +msgstr "Suprimir las cuentas marcadas" + +#: ../admin/adm_list.php:118 ../admin/adm_list.php:202 +msgid "Minimal view" +msgstr "" + +#: ../admin/adm_list.php:119 ../admin/adm_list.php:203 +#, fuzzy +msgid "Complete view" +msgstr "Vista reducida" + +#: ../admin/adm_list.php:125 +msgid "Manager" +msgstr "" + +#: ../admin/adm_list.php:126 +#, fuzzy +msgid "Created by" +msgstr "Crear" + +#: ../admin/adm_list.php:127 +#, fuzzy +msgid "Created on" +msgstr "Crear" + +#: ../admin/adm_list.php:129 +msgid "Last login" +msgstr "Última conexión" + +#: ../admin/adm_list.php:130 +msgid "Last ip" +msgstr "Última IP" + +#: ../admin/adm_list.php:131 +msgid "Fails" +msgstr "" + +#: ../admin/adm_list.php:132 ../admin/main.php:80 +msgid "Expiry" +msgstr "Expiración" + +#: ../admin/adm_list.php:177 ../admin/dom_edit.php:126 +msgid "Disable" +msgstr "" + +#: ../admin/adm_list.php:191 ../admin/adm_list.php:229 +#: ../admin/adm_list.php:246 ../admin/adm_list.php:266 +msgid "C" +msgstr "C" + +#: ../admin/adm_list.php:192 ../admin/adm_list.php:230 +#: ../admin/adm_list.php:247 ../admin/adm_list.php:267 +msgid "E" +msgstr "M" + +#: ../admin/adm_list.php:193 ../admin/adm_list.php:232 +#: ../admin/adm_list.php:249 ../admin/adm_list.php:269 +msgid "Q" +msgstr "Q" + +#: ../admin/adm_login.php:45 ../admin/adm_login.php:52 +msgid "Your authentication information are incorrect" +msgstr "" + +#: ../admin/adm_login.php:111 +msgid "Member login" +msgstr "Nombre de usuario del miembro" + +#: ../admin/adm_mxaccount.php:48 ../admin/adm_slaveaccount.php:48 +msgid "The requested account has been deleted. It is now denied." +msgstr "La cuenta esclava fue borrada. Ahora se la rechaza." + +#: ../admin/adm_mxaccount.php:54 ../admin/adm_slaveaccount.php:54 +msgid "The requested account address has been created. It is now allowed." +msgstr "La cuenta esclava fue creada. Ahora está autorizada." + +#: ../admin/adm_mxaccount.php:63 ../admin/adm_panel.php:63 +msgid "Manage allowed accounts for secondary mx" +msgstr "Manejar las cuentas autorizadas para los MX secundarios" + +#: ../admin/adm_mxaccount.php:77 +msgid "" +"Here is the list of the allowed accounts for secondary mx management. You " +"can configure the alternc-secondarymx package on your secondary mx server " +"and give him the login/pass that will grant him access to your server's mx-" +"hosted domain list. " +msgstr "" +"He aquí la lista de cuentas que pueden sincronizar la lista de dominios " +"cuyos mails se hospedan aquí. Puedes utilizar el paquete alternc-secondarymx " +"en tu servidor de mx secundario dándole un login/password con acceso a este " +"servidor." + +#: ../admin/adm_mxaccount.php:81 ../admin/adm_mxaccount.php:101 +#: ../admin/adm_slaveaccount.php:80 ../admin/adm_slaveaccount.php:100 +msgid "Login" +msgstr "Nombre de usuario" + +#: ../admin/adm_mxaccount.php:89 ../admin/adm_slaveaccount.php:88 +#: ../admin/adm_slaveip.php:88 ../admin/bro_main.php:269 +#: ../admin/dom_edit.php:109 +msgid "Delete" +msgstr "Borrar" + +#: ../admin/adm_mxaccount.php:98 +msgid "" +"If you want to allow a new server to access your mx-hosted domain list, give " +"him an account." +msgstr "" +"Si quieres autorizar un nuevo servidor a sincronizar la lista de dominios " +"cuyo mail se hospeda aquí, créale una cuenta." + +#: ../admin/adm_mxaccount.php:107 ../admin/adm_slaveaccount.php:106 +msgid "Add this account to the allowed list" +msgstr "Añadir esta cuenta a la lista de aquellas autorizadas." + +#: ../admin/adm_panel.php:40 ../admin/menu_adm.php:44 +msgid "Admin Control Panel" +msgstr "Panel Administrador" + +#: ../admin/adm_panel.php:51 ../admin/adm_tldadd.php:40 +#: ../admin/adm_tldedit.php:52 ../admin/adm_tld.php:50 +msgid "Manage allowed domains (TLD)" +msgstr "Administración de los dominios autorizados (TLD)" + +#: ../admin/adm_panel.php:52 +#, fuzzy +msgid "Password Policies" +msgstr "Cambio de contraseña" + +#: ../admin/adm_panel.php:58 +msgid "Advanced features" +msgstr "" + +#: ../admin/adm_panel.php:61 ../admin/adm_slaveip.php:62 +msgid "Manage allowed ip for slave zone transfers" +msgstr "Manejar las IP autorizadas a hacer transferencias de zona DNS esclava" + +#: ../admin/adm_panel.php:62 ../admin/adm_slaveaccount.php:62 +msgid "Manage allowed accounts for slave zone transfers" +msgstr "" +"Manejar las cuentas autorizadas para las transferencias de zonas DNS esclavos" + +#: ../admin/adm_panel.php:64 ../admin/adm_variables.php:47 +msgid "Configure AlternC variables" +msgstr "Configurar las variables de AlternC" + +#: ../admin/adm_panel.php:66 +msgid "DNS and website having errors" +msgstr "" + +#: ../admin/adm_panel.php:67 +msgid "Account creation statistics" +msgstr "Estadísticas de creación de cuentas" + +# msgid "New password" +# msgstr "Nueva contraseña" +#: ../admin/adm_passpolicy.php:49 +#, fuzzy +msgid "Manage Password Policy" +msgstr "Cambiar mi contraseña" + +#: ../admin/adm_passpolicy.php:62 ../admin/adm_passpolicy.php:77 +msgid "Policy not found" +msgstr "" + +#: ../admin/adm_passpolicy.php:66 +#, fuzzy +msgid "Policy changed" +msgstr "Cambio de contraseña" + +#: ../admin/adm_passpolicy.php:70 +msgid "Cannot edit the policy, an error occurred" +msgstr "" + +#: ../admin/adm_passpolicy.php:81 +msgid "Please choose which policy you want to apply to this password kind:" +msgstr "" + +#: ../admin/adm_passpolicy.php:89 +msgid "Minimum Password Size:" +msgstr "" + +#: ../admin/adm_passpolicy.php:96 +msgid "Maximum Password Size:" +msgstr "" + +#: ../admin/adm_passpolicy.php:103 +msgid "In how many classes of characters must be the password (at least):" +msgstr "" + +#: ../admin/adm_passpolicy.php:110 +msgid "Do we allow the password to be like the login?" +msgstr "" + +#: ../admin/adm_passpolicy.php:116 +msgid "Apply this password policy" +msgstr "" + +#: ../admin/adm_passpolicy.php:117 +#, fuzzy +msgid "Cancel and go back to the policy list" +msgstr "No borrar nada, volver a la lista de buzones de correo" + +#: ../admin/adm_passpolicy.php:120 +msgid "" +"The classes of characters are :
            1. Low-case letters (a-z)
            2. " +"Upper-case letters (A-Z)
            3. Figures (0-9)
            4. Ascii symbols (!\"#$" +"%&'()*+,-./:;<=>?@[\\]^_`)
            5. Non-Ascii symbols (accents...)" +msgstr "" + +#: ../admin/adm_passpolicy.php:133 +msgid "" +"Here is the list of the password policies for each place a password may be " +"needed in AlternC's services. For each of those password kind, you can " +"choose which policy will be applied to passwords. A policy is a minimum and " +"maximum password size, and how many classes of characters must appear in the " +"password. You can also forbid (or not) to use the login or part of it as a " +"password." +msgstr "" + +#: ../admin/adm_passpolicy.php:137 +#, fuzzy +msgid "Password Kind" +msgstr "Contraseña" + +#: ../admin/adm_passpolicy.php:137 +#, fuzzy +msgid "Password Policy" +msgstr "Contraseña" + +#: ../admin/adm_passpolicy.php:139 +#, fuzzy +msgid "Min Size" +msgstr "Tamaño" + +#: ../admin/adm_passpolicy.php:140 +#, fuzzy +msgid "Max Size" +msgstr "Tamaño" + +#: ../admin/adm_passpolicy.php:141 +msgid "Complexity" +msgstr "" + +#: ../admin/adm_passpolicy.php:142 +msgid "Allow Password=Login?" +msgstr "" + +#: ../admin/adm_quotadoedit.php:48 +msgid "The quotas has been successfully edited" +msgstr "Cuotas modificadas con éxito" + +#: ../admin/adm_quotaedit.php:55 +msgid "Editing the quotas of a member" +msgstr "Modificar cuotas del miembro" + +#: ../admin/adm_quotaedit.php:69 ../admin/quota_show.php:42 +msgid "Quota" +msgstr "Cuota" + +#: ../admin/adm_quotaedit.php:69 ../admin/quota_show.php:42 +#: ../admin/quotas_users.php:153 ../admin/quotas_users.php:177 +msgid "Total" +msgstr "Total" + +#: ../admin/adm_quotaedit.php:69 ../admin/quota_show.php:42 +msgid "Used" +msgstr "Usado" + +#: ../admin/adm_quotaedit.php:77 ../class/m_quota.php:99 +#: ../class/m_quota.php:107 ../class/m_quota.php:111 +msgid "quota_" +msgstr "quota_" + +#: ../admin/adm_quotaedit.php:86 +msgid "Edit the quotas" +msgstr "Modificar cuotas" + +#: ../admin/adm_slaveaccount.php:76 +msgid "" +"Here is the list of the allowed accounts for slave dns synchronization. You " +"can configure the alternc-slavedns package on your slave server and give him " +"the login/pass that will grant him access to your server's domain list. " +msgstr "" +"He aquí la lista de cuentas autorizadas a sincronizar la lista de dominios " +"hspedados. Puedes utilizar el paquete alternc-slavedns en tu servidor " +"esclavo, dándole un login/contraseña con acceso a este servidor." + +#: ../admin/adm_slaveaccount.php:97 +msgid "" +"If you want to allow a new server to access your domain list, give him an " +"account." +msgstr "" +"Si quieres autorizar un nuevo servidor a acceder la lista de tus dominios, " +"créale una cuenta." + +#: ../admin/adm_slaveip.php:48 +msgid "" +"The requested ip address has been deleted. It will be denied in one hour." +msgstr "" +"La dirección IP seleccionada fue borrada. El acceso será denegado en una " +"hora, a más tardar." + +#: ../admin/adm_slaveip.php:54 +msgid "" +"The requested ip address has been added to the list. It will be allowed in " +"one hour." +msgstr "" +"La dirección IP fue añadida. El acceso le será permitido en una hora a más " +"tardar." + +#: ../admin/adm_slaveip.php:76 +msgid "" +"Here is the list of the allowed ip or ip class for slave dns zone transfer " +"requests (AXFR). You must add the ip address of all the slave DNS you have " +"so that those slaves will be allowed to transfer the zone files. There is " +"also some defaults ip from DNS checks made by some third-party technical " +"offices such as afnic (for .fr domains)" +msgstr "" +"He aquí la lista de IPs o clases de IPs autorizadas a efectuar " +"transferencias de zonas (AXFR). Tienes que agregar aquí las direcciones IP " +"de los DNS esclavos de manera a que puedan sincronizar sus zonas. También " +"hay algunas IPs por omisión que corresponden a organismos técnicos oficiales " +"(como las del afnic para los dominios .fr)" + +#: ../admin/adm_slaveip.php:80 ../admin/adm_slaveip.php:99 +msgid "IP Address" +msgstr "Dirección IP" + +#: ../admin/adm_slaveip.php:96 +msgid "" +"If you want to allow an ip address or class to connect to your dns server, " +"enter it here. Choose 32 as a prefix for single ip address." +msgstr "" +"Si quieres autorizar una dirección IP o una clase de direcciones IP a " +"conectarse a tu servidor DNS, ingrésala aquí. Elige un prefijo de 32 si se " +"trata de una sola dirección IP." + +#: ../admin/adm_slaveip.php:99 +msgid "Prefix" +msgstr "Prefijo" + +#: ../admin/adm_slaveip.php:105 +msgid "Add this ip to the slave list" +msgstr "Agregar esta IP o clase a la lista de los DNS esclavos" + +#: ../admin/adm_tldadd.php:50 ../admin/adm_tldadd.php:64 +#: ../admin/adm_tld.php:64 ../admin/adm_tld.php:87 +msgid "Add a new TLD" +msgstr "Añadir un nuevo TLD" + +#: ../admin/adm_tldadd.php:52 +msgid "" +"Enter the new TLD (without the first dot) and choose what check should be " +"done." +msgstr "" +"Ingresa el nuevo TLD (sin el punto inicial) y escoge que control se " +"debeefectuar." + +#: ../admin/adm_tldadd.php:53 +msgid "" +"Warning : only some final tld are known in the whois function of AlternC, " +"please check m_dom.php accordingly." +msgstr "" +"ADVERTENCIA: sólo algunos TLD son conocidos en la función whois de AlternC, " +"por favor, verifica el archivo m_dom.php." + +#: ../admin/adm_tldadd.php:59 ../admin/adm_tldedit.php:64 +#: ../admin/adm_tld.php:67 +msgid "TLD" +msgstr "TLD" + +#: ../admin/adm_tldadd.php:60 ../admin/adm_tldedit.php:65 +#: ../admin/adm_tld.php:67 +msgid "Allowed Mode" +msgstr "Control efectuado" + +#: ../admin/adm_tlddoadd.php:42 +msgid "The TLD has been successfully added" +msgstr "El nuevo TLD fue añadido" + +#: ../admin/adm_tlddoedit.php:42 +msgid "The TLD has been successfully edited" +msgstr "El TLD fue modificado con éxito" + +#: ../admin/adm_tldedit.php:60 +msgid "Edit a TLD" +msgstr "Modificar un TLD" + +#: ../admin/adm_tldedit.php:69 +msgid "Edit this TLD" +msgstr "Modificar este TLD" + +#: ../admin/adm_tld.php:41 +msgid "Some TLD cannot be deleted..." +msgstr "Algunos TLD no pueden ser borrados..." + +#: ../admin/adm_tld.php:44 +msgid "The requested TLD has been deleted" +msgstr "El TLD fue borrado" + +#: ../admin/adm_tld.php:62 +msgid "" +"Here is the list of the TLD allowed on this server. Each TLD can be allowed " +"or denied after some checks (whois, ns, domain exists...)" +msgstr "" +"Aquí esta la lista de los TLD autorizados en este servidor. Cada TLD puede " +"ser autorizado o prohibido según ciertos criterios (whois, ns, dominio " +"existe...)" + +#: ../admin/adm_tld.php:83 +msgid "Delete the checked TLD" +msgstr "Suprimir los TLD marcados" + +#: ../admin/adm_variables.php:52 +msgid "Here are the internal AlternC variables that are currently being used." +msgstr "He aquí las variables internas confirgurables de AlternC." + +#: ../admin/adm_variables.php:57 +msgid "Names" +msgstr "Nombres" + +#: ../admin/adm_variables.php:57 +msgid "Comment" +msgstr "Comentario" + +#: ../admin/adm_variables.php:74 +msgid "Save variables" +msgstr "Guardar la configuración" + +#: ../admin/bro_editor.php:44 ../admin/bro_editor.php:50 +#, php-format +msgid "Your file %s has been saved" +msgstr "Tu archivo %s fue guardado" + +#: ../admin/bro_editor.php:58 +msgid "File editing" +msgstr "Editar archivo" + +#: ../admin/bro_editor.php:63 +msgid "ctrl+click or shift+click and drag to resize the editing zone" +msgstr "" + +#: ../admin/bro_editor.php:67 +msgid "Save" +msgstr "Guardar" + +#: ../admin/bro_editor.php:68 +msgid "Save & Quit" +msgstr "Guardar y Salir" + +#: ../admin/bro_editor.php:69 +msgid "Quit" +msgstr "Salir" + +#: ../admin/bro_main.php:82 +#, php-format +msgid "Deleting files and/or directories" +msgstr "Borrar archivos y/o carpetas" + +#: ../admin/bro_main.php:87 +msgid "WARNING: Confirm the deletion of this files" +msgstr "ADVERTENCIA : Confirma la supresión de estos archivos" + +#: ../admin/bro_main.php:133 +msgid "extracting..." +msgstr "extrayendo..." + +#: ../admin/bro_main.php:137 +msgid "failed" +msgstr "fallado" + +#: ../admin/bro_main.php:140 +msgid "done" +msgstr "hecho" + +#: ../admin/bro_main.php:149 ../admin/menu_brouteur.php:34 +msgid "File browser" +msgstr "Manejador de archivos" + +#: ../admin/bro_main.php:157 +msgid "Path" +msgstr "" + +#: ../admin/bro_main.php:169 +msgid "Send one file:" +msgstr "" + +#: ../admin/bro_main.php:173 +#, fuzzy +msgid "Send this file" +msgstr "Importar este archivo" + +#: ../admin/bro_main.php:181 +#, fuzzy +msgid "New file or folder:" +msgstr "No hay ningún archivo en esta carpeta" + +#: ../admin/bro_main.php:186 +msgid "Create" +msgstr "Crear" + +#: ../admin/bro_main.php:188 ../admin/bro_main.php:228 +msgid "File" +msgstr "Archivo" + +#: ../admin/bro_main.php:189 ../admin/bro_main.php:357 ../admin/ftp_add.php:57 +#: ../admin/ftp_edit.php:62 ../admin/ftp_list.php:72 ../admin/hta_add.php:50 +#: ../admin/hta_adduser.php:49 ../admin/hta_edit.php:98 +#: ../admin/hta_edituser.php:52 ../admin/hta_list.php:67 +#: ../admin/sta2_list.php:58 +msgid "Folder" +msgstr "Carpeta" + +#: ../admin/bro_main.php:206 ../admin/bro_main.php:212 +#: ../admin/bro_main.php:270 +msgid "Rename" +msgstr "Cambiar nombre" + +#: ../admin/bro_main.php:222 ../admin/bro_main.php:228 +#: ../admin/bro_main.php:271 +msgid "Permissions" +msgstr "Permisos" + +#: ../admin/bro_main.php:242 +msgid "write" +msgstr "" + +#: ../admin/bro_main.php:250 +msgid "Change permissions" +msgstr "Modificar preferencias" + +#: ../admin/bro_main.php:273 +#, fuzzy +msgid "Copy" +msgstr "Copiar a" + +#: ../admin/bro_main.php:274 +msgid "Move" +msgstr "Mover" + +#: ../admin/bro_main.php:275 +msgid "To" +msgstr "" + +#: ../admin/bro_main.php:305 +#, fuzzy +msgid "Filename" +msgstr "Cambiar nombre" + +#: ../admin/bro_main.php:306 ../admin/mail_list.php:104 +#: ../admin/sql_list.php:51 +msgid "Size" +msgstr "Tamaño" + +#: ../admin/bro_main.php:307 +#, fuzzy +msgid "Last modification" +msgstr "Último fracaso de conexión" + +#: ../admin/bro_main.php:309 +#, fuzzy +msgid "File Type" +msgstr "Archivo" + +#: ../admin/bro_main.php:334 ../admin/bro_main.php:512 +#: ../admin/sta2_list.php:58 ../admin/sta2_list.php:72 +msgid "View" +msgstr "Ver" + +#: ../admin/bro_main.php:341 +msgid "Extract" +msgstr "Extraer" + +#: ../admin/bro_main.php:384 ../admin/bro_main.php:414 +#: ../admin/bro_main.php:451 ../admin/bro_main.php:481 +msgid "V" +msgstr "V" + +#: ../admin/bro_main.php:538 +msgid "No files in this folder" +msgstr "No hay ningún archivo en esta carpeta" + +#: ../admin/bro_main.php:548 +#, fuzzy +msgid "Show size of directories" +msgstr "Archivos y carpetas" + +#: ../admin/bro_main.php:548 +msgid "(slow)" +msgstr "" + +#: ../admin/bro_main.php:552 +msgid "Edit this folder's protection" +msgstr "" + +#: ../admin/bro_main.php:555 ../admin/hta_add.php:61 +msgid "Protect this folder" +msgstr "Proteger esta carpeta" + +#: ../admin/bro_main.php:557 +#, fuzzy +msgid "with a login and a password" +msgstr "Contraseña inicial" + +#: ../admin/bro_main.php:560 +#, fuzzy +msgid "Download this folder" +msgstr "Proteger esta carpeta" + +#: ../admin/bro_main.php:562 +#, php-format +msgid "as a %s file" +msgstr "" + +#: ../admin/bro_main.php:570 +#, fuzzy +msgid "Edit the ftp account" +msgstr "Modificar cuenta" + +#: ../admin/bro_main.php:571 +#, fuzzy +msgid "that exists in this folder" +msgstr "No hay ningún archivo en esta carpeta" + +#: ../admin/bro_main.php:577 +#, fuzzy +msgid "Create an ftp account in this folder" +msgstr "Existe una cuenta FTP en esta carpeta" + +#: ../admin/bro_main.php:586 +#, fuzzy +msgid "Configure the file editor" +msgstr "Configurar el manejador de archivos" + +#: ../admin/bro_pref.php:34 +msgid "Your preferences have been updated." +msgstr "Tus preferencias fueron actualizadas" + +#: ../admin/bro_pref.php:44 +msgid "File browser preferences" +msgstr "Preferencias del manejador de archivos" + +#: ../admin/bro_pref.php:51 +msgid "Horizontal window size" +msgstr "Tamaño horizontal de la ventana" + +#: ../admin/bro_pref.php:59 +msgid "Vertical window size" +msgstr "Tamaño vertical de la ventana" + +#: ../admin/bro_pref.php:67 +msgid "File editor font name" +msgstr "Fuente de caracteres del editor de archivos" + +#: ../admin/bro_pref.php:75 +msgid "File editor font size" +msgstr "Tamaño de los caracteres del editor de archivos" + +#: ../admin/bro_pref.php:83 +msgid "File list view" +msgstr "Modo de visualización de los archivos" + +#: ../admin/bro_pref.php:91 +msgid "Downloading file format" +msgstr "¿Formato de descarga de archivo?" + +#: ../admin/bro_pref.php:99 +msgid "What to do after creating a file" +msgstr "Que hacer después de la creación de un archivo" + +#: ../admin/bro_pref.php:107 +msgid "Show icons?" +msgstr "¿Mostrar iconos?" + +#: ../admin/bro_pref.php:115 +msgid "Show file types?" +msgstr "¿Mostrar tipos de archivos?" + +#: ../admin/bro_pref.php:123 +msgid "Remember last visited directory?" +msgstr "¿Regresar a la última carpeta visitada?" + +#: ../admin/bro_pref.php:133 +msgid "Change my settings" +msgstr "Modificar mis preferencias" + +#: ../admin/browseforfolder.php:115 +msgid "Searching for a folder" +msgstr "Búsqueda de una carpeta" + +#: ../admin/browseforfolder.php:121 +msgid "Error, cannot find this folder" +msgstr "Error, no se puede conseguir esta carpeta" + +#: ../admin/browseforfolder.php:123 +msgid "Back to the root folder" +msgstr "Regresar al directorio raíz" + +#: ../admin/browseforfolder.php:135 +msgid "Select" +msgstr "Seleccionar" + +#: ../admin/dom_add.php:45 +msgid "Domain hosting" +msgstr "Hospedaje de dominio" + +#: ../admin/dom_add.php:49 +msgid "You cannot add any new domain, your quota is over." +msgstr "No puedes hospedar más dominio, tu cuota alcanzó su limite." + +#: ../admin/dom_add.php:49 +msgid "Contact your administrator for more information." +msgstr "Contacta el administrador para obtener más información." + +#: ../admin/dom_add.php:60 +msgid "host my dns here" +msgstr "Hospedar el DNS en el servidor" + +#: ../admin/dom_add.php:67 +msgid "" +"Do you want to point this domain to another domain already installed in your " +"account?" +msgstr "" + +#: ../admin/dom_add.php:69 +msgid "No: This domain will have its own folder." +msgstr "" + +#: ../admin/dom_add.php:71 +msgid "Yes, redirect this new domain to this one:" +msgstr "" + +#: ../admin/dom_add.php:72 +msgid "-- Choose a domain --" +msgstr "" + +#: ../admin/dom_add.php:86 +msgid "Add this domain" +msgstr "Añadir este dominio" + +#: ../admin/dom_add.php:91 +msgid "" +"If you don't want to host in our server the DNS of your domain, don't check " +"the box 'host my dns here'. If you don't know what it mean, leave it checked." +msgstr "" +"Si no deseas que el DNS del dominio esté hospedado aquí, quita la selección " +"'Hospedar el DNS en el servidor'. Si no entiendes, deja la selección tal " +"cual." + +#: ../admin/dom_add.php:96 ../admin/dom_doadd.php:60 +msgid "Whois result on the domain" +msgstr "Resultado de la búsqueda Whois sobre el dominio" + +#: ../admin/dom_doadd.php:52 ../admin/menu_dom.php:44 +msgid "Add a domain" +msgstr "Hospedar un dominio" + +#: ../admin/dom_doadd.php:54 +#, php-format +msgid "Your new domain %s has been successfully installed" +msgstr "Tu nuevo dominio %s fue instalado con éxito" + +#: ../admin/dom_doadd.php:55 ../admin/dom_dodel.php:56 +#: ../admin/dom_dodel.php:85 ../admin/dom_editdns.php:70 +#: ../admin/dom_subdodel.php:65 ../admin/hta_doedituser.php:61 +msgid "Click here to continue" +msgstr "Presiona aquí para seguir" + +#: ../admin/dom_dodel.php:54 +#, fuzzy +msgid "Deletion have been successfully cancelled" +msgstr "Se cambió con éxito la dirección de correo." + +#: ../admin/dom_dodel.php:64 ../admin/dom_dodel.php:67 +#, php-format +msgid "Confirm the deletion of domain %s" +msgstr "Confirmar la supresión del dominio %s" + +#: ../admin/dom_dodel.php:67 ../admin/sql_del.php:66 +#: ../admin/sql_users_del.php:55 +msgid "WARNING" +msgstr "ADVERTENCIA" + +#: ../admin/dom_dodel.php:69 +msgid "This will delete the related sub-domains too." +msgstr "" +"Esto va a suprimir todos los emails y los subdominios correspondientes.." + +#: ../admin/dom_dodel.php:80 +#, php-format +msgid "Domain %s deleted" +msgstr "Dominio %s borrado" + +#: ../admin/dom_dodel.php:84 +#, php-format +msgid "The domain %s has been successfully deleted." +msgstr "El dominio %s fue borrado." + +#: ../admin/dom_editdns.php:60 +#, php-format +msgid "Editing domain %s" +msgstr "Modificar dominio %s" + +#: ../admin/dom_editdns.php:65 +#, php-format +msgid "The domain %s has been changed." +msgstr "El dominio %s fue modificado." + +#: ../admin/dom_editdns.php:68 ../admin/dom_subdodel.php:61 +msgid "The modifications will take effect at %time. Server time is %now." +msgstr "" +"Las modificaciones serán efectivas a las %time. La hora del servidor es " +"acutalmente %now." + +#: ../admin/dom_edit.inc.php:40 +#, fuzzy +msgid "Edit a subdomain:" +msgstr "Modificar dominio %s" + +#: ../admin/dom_edit.inc.php:42 +msgid "Create a subdomain:" +msgstr "Creación de un subdominio:" + +#: ../admin/dom_edit.inc.php:63 +msgid "Show advanced options" +msgstr "" + +#: ../admin/dom_edit.inc.php:64 +msgid "Hide advanced options" +msgstr "" + +#: ../admin/dom_edit.inc.php:85 ../admin/ftp_add.php:60 +#: ../admin/ftp_edit.php:66 ../admin/hta_add.php:54 ../admin/sql_bck.php:97 +#: ../admin/sta2_add_raw.php:57 ../admin/sta2_edit_raw.php:63 +#, fuzzy +msgid "Choose a folder..." +msgstr "Proteger una carpeta" + +#: ../admin/dom_edit.inc.php:91 +msgid "(enter an URL here)" +msgstr "" + +#: ../admin/dom_edit.inc.php:95 +msgid "(enter an IPv4 address, for example 192.168.1.2)" +msgstr "" + +#: ../admin/dom_edit.inc.php:99 +msgid "(enter an IPv6 address, for example 2001:0910::0)" +msgstr "" + +#: ../admin/dom_edit.inc.php:103 +msgid "(enter a TXT informations for this domain)" +msgstr "" + +#: ../admin/dom_edit.inc.php:107 +msgid "(enter a domain name or subdomain)" +msgstr "" + +#: ../admin/dom_edit.inc.php:117 +#, fuzzy +msgid "Edit this subdomain" +msgstr "Añadir este dominio" + +#: ../admin/dom_edit.inc.php:119 +#, fuzzy +msgid "Add this subdomain" +msgstr "Añadir este dominio" + +#: ../admin/dom_edit.php:66 +#, fuzzy, php-format +msgid "Editing subdomains of %s" +msgstr "Modificar dominio %s" + +#: ../admin/dom_edit.php:76 +msgid "This domain have some DNS change pending. Please wait." +msgstr "" + +#: ../admin/dom_edit.php:79 +#, fuzzy +msgid "You requested deletion of this domain." +msgstr "Confirmar la supresión del dominio %s" + +#: ../admin/dom_edit.php:97 +#, fuzzy +msgid "Subdomain" +msgstr "Subdominios" + +#: ../admin/dom_edit.php:97 +msgid "Type" +msgstr "" + +#: ../admin/dom_edit.php:129 +msgid "Activation pending" +msgstr "" + +#: ../admin/dom_edit.php:132 +msgid "Disabled" +msgstr "" + +#: ../admin/dom_edit.php:133 +msgid "Enable" +msgstr "" + +#: ../admin/dom_edit.php:136 +#, fuzzy +msgid "Desactivation pending" +msgstr "Desactivar" + +#: ../admin/dom_edit.php:143 +#, fuzzy +msgid "Update pending" +msgstr "Volver a cargar esta página" + +#: ../admin/dom_edit.php:146 +#, fuzzy +msgid "Deletion pending" +msgstr "Suprimir un usuario" + +#: ../admin/dom_edit.php:174 +#, fuzzy +msgid "DNS & Email parameters" +msgstr "Parámetros DNS" + +#: ../admin/dom_edit.php:179 +msgid "Manage the DNS on the server ?" +msgstr "¿Administrar el DNS de este dominio?" + +#: ../admin/dom_edit.php:190 +#, fuzzy +msgid "Manage the Emails Addresses of this domain on the server?" +msgstr "¿Administrar el DNS de este dominio?" + +#: ../admin/dom_edit.php:197 +msgid "" +"Warning: If you set this to 'no', all your email accounts and aliases on " +"this domain will be immediately deleted." +msgstr "" + +#: ../admin/dom_edit.php:199 +msgid "Submit the changes" +msgstr "Validar cambios" + +#: ../admin/dom_edit.php:204 +#, fuzzy +msgid "Domain removal" +msgstr "Nombre de dominio" + +#: ../admin/dom_edit.php:207 +#, php-format +msgid "help_domain_del %s" +msgstr "" +"Si quieres suprimir el dominio %s, presiona en el botón de aquí arriba. " +"¡Cuidado, esto suprimirá también todas las cuentas FTP, buzones correo, " +"listas de correos, etc de este dominio, así como todos los subdominios " +"relacionados!" + +#: ../admin/dom_edit.php:210 +#, php-format +msgid "Delete %s from this server" +msgstr "" + +#: ../admin/dom_subdel.php:48 +#, php-format +msgid "Deleting subdomain %s" +msgstr "Suprimir subdominio %s" + +#: ../admin/dom_subdel.php:67 +msgid "WARNING : Confirm the deletion of the subdomain" +msgstr "ADVERTENCIA : Confirma la supresión del subdominio siguiente" + +#: ../admin/dom_subdodel.php:50 +#, php-format +msgid "Deleting the subdomain %s:" +msgstr "Suprimesión del subdominio %s:" + +#: ../admin/dom_subdoedit.php:65 ../admin/dom_substatus.php:27 +msgid "The modifications will take effect at %time. Server time is %now." +msgstr "" +"Las modificaciones serán efectivas a las %time. La hora del servidor es " +"acutalmente %now." + +#: ../admin/dom_subedit.php:51 +#, fuzzy +msgid "Editing subdomain" +msgstr "Modificar dominio %s" + +#: ../admin/ftp_add.php:34 +msgid "You cannot add any new ftp account, your quota is over." +msgstr "Tu cuota de cuentas FTP alcanzó su limite, no se pueden crear más." + +#: ../admin/ftp_add.php:39 ../admin/ftp_list.php:57 ../admin/menu_ftp.php:44 +msgid "Create a new ftp account" +msgstr "Crear una nueva cuenta FTP" + +#: ../admin/ftp_add.php:67 +msgid "Create this new FTP account." +msgstr "Crear la cuenta FTP." + +#: ../admin/ftp_del.php:42 +#, php-format +msgid "The ftp account %s has been successfully deleted" +msgstr "La cuenta FTP %s fue borrada" + +#: ../admin/ftp_doadd.php:44 +msgid "The FTP account has been successfully created" +msgstr "Se creó correctamente la cuenta FTP" + +#: ../admin/ftp_doedit.php:33 ../admin/ftp_edit.php:39 +msgid "No account selected!" +msgstr "¡Ninguna cuenta seleccionada!" + +#: ../admin/ftp_doedit.php:47 +msgid "The ftp account has been successfully changed" +msgstr "La cuenta FTP fue modificada" + +#: ../admin/ftp_doedit.php:56 ../admin/ftp_edit.php:48 +msgid "Editing an FTP account" +msgstr "Modificación de una cuenta FTP" + +#: ../admin/ftp_edit.php:74 +msgid "Change this FTP account" +msgstr "Modificar cuenta FTP." + +#: ../admin/ftp_list.php:45 ../admin/menu_ftp.php:46 +msgid "FTP accounts list" +msgstr "Lista de cuentas FTP" + +#: ../admin/head.php:55 +msgid "" +"Administrator session. you may return to your " +"account or cancel this feature" +msgstr "" + +#: ../admin/hta_add.php:34 ../admin/hta_list.php:50 ../admin/hta_list.php:88 +#: ../admin/web_list.php:3 +msgid "Protect a folder" +msgstr "Proteger una carpeta" + +#: ../admin/hta_add.php:38 +msgid "" +"Enter the name of the folder you want to protect. It must already exists." +msgstr "" + +#: ../admin/hta_adduser.php:39 +#, php-format +msgid "Adding a username in %s" +msgstr "Añadir un usuario autorizado en %s" + +#: ../admin/hta_adduser.php:66 ../admin/hta_edit.php:115 +msgid "Add this user" +msgstr "Añadir el usuario" + +#: ../admin/hta_del.php:42 +#, php-format +msgid "The protected folder %s has been successfully unprotected" +msgstr "La carpeta protegida %s fue desprotegida" + +#: ../admin/hta_doadduser.php:39 +msgid "Please enter a password" +msgstr "Por favor, entra una contraseña" + +#: ../admin/hta_doedituser.php:51 +#, php-format +msgid "Change the user %s in the protected folder %s" +msgstr "Modificar usuario %s en la carpeta protegida %s" + +#: ../admin/hta_doedituser.php:59 +#, php-format +msgid "The password of the user %s has been successfully changed" +msgstr "La contraseña del usuario %s fue modificada con éxito" + +#: ../admin/hta_edit.php:39 +msgid "No folder selected!" +msgstr "¡Ninguna carpeta seleccionada!" + +#: ../admin/hta_edit.php:48 +#, php-format +msgid "List of authorized user in folder %s" +msgstr "Lista de los usuarios autorizados en la carpeta %s" + +#: ../admin/hta_edit.php:53 +#, php-format +msgid "No authorized user in %s" +msgstr "Ningún usuario autorizado en %s" + +#: ../admin/hta_edit.php:73 ../admin/sql_users_password.php:41 +#, fuzzy +msgid "Change this user's password" +msgstr "Modificar contraseña" + +#: ../admin/hta_edit.php:82 ../admin/sql_users_list.php:74 +msgid "Delete the checked users" +msgstr "Suprimir los usuarios marcados" + +#: ../admin/hta_edit.php:87 +msgid "Show this folder's content in the File Browser" +msgstr "" + +#: ../admin/hta_edit.php:93 +#, fuzzy +msgid "Adding an authorized user" +msgstr "Ningún usuario autorizado en %s" + +#: ../admin/hta_edituser.php:40 +#, php-format +msgid "Editing user %s in the protected folder %s" +msgstr "Modificar usuario %s en la carpeta protegida %s" + +#: ../admin/hta_edituser.php:53 ../admin/sql_users_list.php:52 +msgid "User" +msgstr "Usuario" + +#: ../admin/hta_edituser.php:54 ../admin/mem_param.php:64 +#: ../admin/mem_param.php:65 +msgid "New password" +msgstr "Nueva contraseña" + +#: ../admin/hta_edituser.php:56 ../admin/sql_passchg.php:56 +msgid "Change the password" +msgstr "Modificar contraseña" + +#: ../admin/hta_list.php:41 +msgid "Protected folders list" +msgstr "Lista de carpetas protegidas" + +#: ../admin/hta_list.php:60 +msgid "help_hta_list" +msgstr "He aquí está la lista de carpetas protegidas de tu cuenta" + +#: ../admin/hta_list.php:78 +#, fuzzy +msgid "Edit login and passwords" +msgstr "Contraseña inicial" + +#: ../admin/hta_list.php:87 +msgid "Unprotect the checked folders" +msgstr "Quitar protección a las carpetas marcadas" + +#: ../admin/index.php:57 +#, fuzzy +msgid "Web Hosting Control Panel" +msgstr "Panel Administrador" + +#: ../admin/index.php:71 +msgid "" +"To connect to the hosting control panel, enter your AlternC's login and " +"password in the following form and click 'Enter'" +msgstr "" + +#: ../admin/index.php:75 +#, fuzzy +msgid "AlternC access" +msgstr "Lista de cuentas FTP" + +#: ../admin/index.php:78 ../admin/index.php:95 +msgid "Enter" +msgstr "Entrar" + +#: ../admin/index.php:85 +msgid "" +"If you want to read your mail, enter your Email address and password in the " +"following form and click 'Enter'" +msgstr "" + +#: ../admin/index.php:91 +#, fuzzy +msgid "Webmail Access" +msgstr "Acceso Webmail" + +#: ../admin/index.php:92 +#, fuzzy +msgid "Email Address" +msgstr "Dirección de correo" + +#: ../admin/index.php:106 +msgid "You must accept the session cookie to log-in" +msgstr "Debe aceptar el cookie de sesión para poder conectarte" + +#: ../admin/mail_add.php:43 +#, php-format +msgid "Add a mail to the domain %s" +msgstr "Añadir una cuenta de correo para el dominio %s" + +#: ../admin/mail_add.php:62 ../admin/mail_edit.php:70 +#, fuzzy +msgid "Is it a POP/IMAP account?" +msgstr "¿Cuenta POP?" + +#: ../admin/mail_add.php:70 ../admin/mail_edit.php:78 +#, fuzzy +msgid "POP/IMAP password" +msgstr "Contraseña POP" + +#: ../admin/mail_add.php:76 ../admin/mail_edit.php:88 +#, fuzzy +msgid "Redirections
            Other recipients:" +msgstr "Otros destinatarios" + +#: ../admin/mail_add.php:76 ../admin/mail_edit.php:88 +#, fuzzy +msgid "one email per line" +msgstr "una cuenta de correo por línea" + +#: ../admin/mail_add.php:80 ../admin/mail_edit.php:91 +#, fuzzy +msgid "Is it a temporary mail account?" +msgstr "Modificar cuenta FTP." + +#: ../admin/mail_add.php:87 +#, fuzzy +msgid "Create this email address" +msgstr "Añadir este buzón" + +#: ../admin/mail_add.php:94 +msgid "help_mail_add" +msgstr "" +"- Para crear este buzón de correo
            Si quieres almacenar los mensajes " +"recibidos y acceder al buzón con un programa de corre o por webmail, marca " +"'Cuenta POP'. En este caso, tienes que ingresar una contraseña para la " +"cuenta POP.
            Si quieres redirigir esta dirección hacia otras, ingresa la " +"lista de las direcciones correspondientes, una dirección por línea (con el @ " +"en todo caso).
            Nota: tienes que escoger una de las dos cosas, o " +"ambas
            Para acceder a la lectura del correo, se debe usar la dirección " +"http://sudominio/webmail/ o un subdominio de tipo 'Acceso a Webmail'
            El " +"nombre de cada usuario es login_sudominio o su " +"login@sudominio y sa contraseña es la que acabas de ingesar en " +"este formulario." + +#: ../admin/mail_del.php:51 +#, fuzzy, php-format +msgid "The email address %s does not exist!" +msgstr "¡El buzón %s no existe!" + +#: ../admin/mail_del.php:53 +#, fuzzy, php-format +msgid "The email address %s has been deleted!" +msgstr "¡El buzón %s fue borrado!" + +#: ../admin/mail_del.php:63 +msgid "Deleting mail accounts" +msgstr "Supresión de buzones de correo" + +#: ../admin/mail_del.php:66 +msgid "Please confirm the deletion of the following mail accounts:" +msgstr "Confirmar la supresión de los buzones de correo siguientes:" + +#: ../admin/mail_del.php:82 +#, fuzzy +msgid "Confirm the deletion" +msgstr "Confirmar la supresión del dominio %s" + +#: ../admin/mail_del.php:82 +#, fuzzy +msgid "Don't delete anything and go back to the email list" +msgstr "No borrar nada, volver a la lista de buzones de correo" + +#: ../admin/mail_del.php:86 +msgid "" +"Warning: Deleting an email address will destroy all the messages it " +"contains! You will NOT be able to get it back!" +msgstr "" + +#: ../admin/mail_doadd.php:55 +#, fuzzy, php-format +msgid "The email address %s has been successfully created" +msgstr "El buzón %s fue creado con éxito" + +#: ../admin/mail_dodel.php:40 +#, php-format +msgid "The mailbox %s does not exist!" +msgstr "¡El buzón %s no existe!" + +#: ../admin/mail_dodel.php:43 +#, php-format +msgid "The mailbox %s has been deleted!" +msgstr "¡El buzón %s fue borrado!" + +#: ../admin/mail_doedit.php:60 +#, fuzzy, php-format +msgid "The email address %s has been successfully changed" +msgstr "Se modificó correctamente el buzón %s" + +#: ../admin/mail_edit.php:48 +#, fuzzy, php-format +msgid "Edit an email address of the domain %s" +msgstr "Modificar un buzón del dominio %s" + +#: ../admin/mail_edit.php:66 +#, fuzzy, php-format +msgid "Edit the email address %s" +msgstr "Modificar el buzón %s" + +#: ../admin/mail_edit.php:68 +msgid "This account is a temporary account.
            It will be delete on " +msgstr "" + +#: ../admin/mail_edit.php:84 +msgid "" +"WARNING: turning POP/IMAP off will DELETE the stored messages in this email " +"address. This email address will become a simple redirection." +msgstr "" + +#: ../admin/mail_edit.php:97 +#, fuzzy +msgid "Change this email address" +msgstr "Modificar este buzón" + +#: ../admin/mail_edit.php:104 +msgid "help_mail_edit" +msgstr "" +"- Para modificar este buzón de correo
            Si quieres almacenar los mensajes " +"recibidos y acceder al buzón con un programa de corre o por webmail, marca " +"'Cuenta POP'. En este caso, tienes que ingresar una contraseña para la " +"cuenta POP.
            Si quieres redirigir esta dirección hacia otras, ingresa la " +"lista de las direcciones correspondientes, una dirección por línea (con el @ " +"en todo caso).
            Nota: tienes que escoger una de las dos cosas, o " +"ambas
            Para acceder a la lectura del correo, se debe usar la dirección " +"http://sudominio/webmail/ o un subdominio de tipo 'Acceso a Webmail'
            El " +"nombre de cada usuario es login_sudominio o su " +"login@sudominio y sa contraseña es la que acabas de ingesar en " +"este formulario." + +#: ../admin/mail_list.php:49 ../admin/mail_list.php:68 +#, fuzzy, php-format +msgid "Email addresses of the domain %s" +msgstr "Lista de las buzones de correo del dominio %s" + +#: ../admin/mail_list.php:58 ../admin/mail_list.php:77 +#, php-format +msgid "Add a mailbox on %s" +msgstr "Añadir un buzón en %s" + +#: ../admin/mail_list.php:60 ../admin/mail_list.php:79 +#, php-format +msgid "Add many mailboxes on %s" +msgstr "Añadir varios buzones en %s" + +#: ../admin/mail_list.php:87 +msgid "Show only mail starting by:" +msgstr "" + +#: ../admin/mail_list.php:93 +#, php-format +msgid "All" +msgstr "Todo" + +#: ../admin/mail_list.php:127 +#, fuzzy +msgid "This account will be deleted on" +msgstr "no pudo ser borrado" + +#: ../admin/mail_list.php:136 +#, fuzzy +msgid "Delete the checked email addresses" +msgstr "Borrar las bases de datos seleccionadas" + +#: ../admin/main.php:38 +msgid "Last Login: " +msgstr "Última conexión: " + +#: ../admin/main.php:41 +#, php-format +msgid "from: %1$s " +msgstr "desde %1$s " + +#: ../admin/main.php:45 +#, php-format +msgid "%1$d login failed since last login" +msgstr "%1$d intentos fallidos desde la última conexión" + +#: ../admin/main.php:61 +msgid "Latest news" +msgstr "Últimas noticias" + +#: ../admin/main.php:78 +msgid "Expired or about to expire accounts" +msgstr "Cuentas que expiraron o que expiran pronto" + +#: ../admin/main.php:80 +msgid "uid" +msgstr "uid" + +#: ../admin/main.php:80 +msgid "Last name, surname" +msgstr "Nombre, Apellido" + +#: ../admin/mem_admin.php:40 +msgid "Your administrator preferences has been successfully changed." +msgstr "Tus preferencias de administrador fueron modificadas." + +#: ../admin/mem_admin.php:46 ../admin/mem_param.php:97 +msgid "Admin preferences" +msgstr "Preferencias de administrador" + +#: ../admin/mem_chgmail.php:44 ../admin/mem_cm2.php:40 ../admin/mem_cm.php:35 +#: ../admin/mem_cm.php:46 ../admin/mem_param.php:74 +msgid "Change the email of the account" +msgstr "Cambiar la dirección de correo de la cuenta" + +#: ../admin/mem_chgmail.php:51 +#, php-format +msgid "help_mem_chgmail %s" +msgstr "" +"Se mandó un mensaje a la dirección email %s para " +"confirmación.
            Este mensaje contiene un enlace que podrás visitar para " +"validar la modificación.
            Ahí se te pedirá la siguiente clave:
            " + +#: ../admin/mem_cm2.php:48 +msgid "The mailbox has been successfully changed." +msgstr "Se cambió con éxito la dirección de correo." + +#: ../admin/mem_cm.php:47 +msgid "" +"Enter the key you got when you requested the mailbox change, then click the " +"OK button." +msgstr "" +"Entra la clave que te fue enviada para confirmar el cambio de dirección de " +"correo y presiona en OK." + +#: ../admin/mem_cm.php:48 +msgid "Key" +msgstr "Clave" + +#: ../admin/mem_cm.php:49 +msgid "OK" +msgstr "OK" + +#: ../admin/mem_logout.php:38 ../admin/mem_logout.php:43 +msgid "Disconnected" +msgstr "Desconectado" + +#: ../admin/mem_logout.php:45 +msgid "You have been logged out of your administration desktop." +msgstr "Fuiste desconectado de la interfaz de administración." + +#: ../admin/mem_logout.php:46 +msgid "Click here to log in" +msgstr "Presiona aquí para volver a conectarte" + +#: ../admin/mem_param.php:36 +msgid "Your help setting has been updated." +msgstr "Los parámetros de ayuda han sido modificados." + +#: ../admin/mem_param.php:40 +msgid "Settings of your account" +msgstr "Parámetros de tu cuenta" + +#: ../admin/mem_param.php:50 ../admin/mem_passwd.php:41 +#: ../admin/sql_users_list.php:65 +msgid "Password change" +msgstr "Cambio de contraseña" + +#: ../admin/mem_param.php:54 +msgid "You cannot change your password" +msgstr "No estás autorizado a cambiar tu contraseña" + +#: ../admin/mem_param.php:59 +msgid "help_chg_passwd" +msgstr "" +"Aquí puedes modificar la contraseña que te permite acceder a la interfaz. " +"¡No la pierdas!
            Entra aquí la contraseña actual, y luego la nueva " +"contraseña (dos veces, por seguridad), y presiona en 'Cambiar la contraseña''" + +#: ../admin/mem_param.php:63 +msgid "Old password" +msgstr "Antigua contraseña" + +# msgid "New password" +# msgstr "Nueva contraseña" +#: ../admin/mem_param.php:66 +msgid "Change my password" +msgstr "Cambiar mi contraseña" + +#: ../admin/mem_param.php:75 +msgid "help_chg_mail" +msgstr "" +"Aquí puedes modificar la dirección de correo relacionada con tu cuenta.
            " +"Ingresa a continuación la nueva dirección. Un mensaje será enviado a esta " +"dirección para confirmación." + +#: ../admin/mem_param.php:76 +msgid "Current mailbox" +msgstr "Dirección actual" + +#: ../admin/mem_param.php:77 +msgid "New mailbox" +msgstr "Nueva dirección" + +#: ../admin/mem_param.php:78 +#, fuzzy +msgid "Change my email address" +msgstr "Cambiar mi dirección email" + +#: ../admin/mem_param.php:85 +msgid "Online help settings" +msgstr "Parámetros de la ayuda en línea" + +#: ../admin/mem_param.php:86 +msgid "help_help_settings" +msgstr "" +"Cada página de la interfaz presenta información de ayuda resumida, " +"acompañada por un enlace hacia la ayuda en línea
            Para ver esta ayuda de " +"manera automática, márcalo aquí." + +#: ../admin/mem_param.php:87 +msgid "Do you want to see the help texts and links on each page?" +msgstr "¿Quieres ver los textos de ayuda y los enlaces en cada página?" + +#: ../admin/mem_param.php:88 +msgid "Change these settings" +msgstr "Modificar estos parámetros" + +#: ../admin/mem_param.php:101 +msgid "Members list view" +msgstr "Vista de la lista de miembros" + +#: ../admin/mem_param.php:102 +msgid "Large view" +msgstr "Vista amplia" + +#: ../admin/mem_param.php:103 +msgid "Short view" +msgstr "Vista reducida" + +#: ../admin/mem_param.php:105 +msgid "Change my admin preferences" +msgstr "Modificar mis preferencias de administrador" + +#: ../admin/mem_passwd.php:35 ../admin/sql_pass.php:38 +msgid "Your password has been successfully changed." +msgstr "La contraseña fue cambiada." + +#: ../admin/menu_adm.php:38 +msgid "Administration" +msgstr "Administración" + +#: ../admin/menu_adm.php:41 +#, fuzzy +msgid "Manage the Alternc accounts" +msgstr "Cambiar la dirección de correo de la cuenta" + +#: ../admin/menu_adm.php:42 +#, fuzzy +msgid "User Quotas" +msgstr "Cuotas" + +#: ../admin/menu_adm.php:45 +#, fuzzy +msgid "General PhpMyAdmin" +msgstr "Admin SQL general" + +#: ../admin/menu_aide.php:32 +msgid "Online help" +msgstr "Ayuda en línea" + +#: ../admin/menu_dom.php:40 ../admin/quotas_oneuser.php:22 +#: ../admin/quotas_users.php:131 +msgid "Domains" +msgstr "Dominios" + +#: ../admin/menu_ftp.php:40 +msgid "FTP accounts" +msgstr "Cuentas FTP" + +#: ../admin/menu_lang.php:3 +#, fuzzy +msgid "Langues" +msgstr "Idiomas" + +#: ../admin/menu_mail.php:40 +#, fuzzy +msgid "Email Addresses" +msgstr "Dirección de correo" + +#: ../admin/menu_mem.php:32 +msgid "Settings" +msgstr "Configuración" + +#: ../admin/menu_mem.php:35 +msgid "Logout" +msgstr "Salir" + +#: ../admin/menu.php:36 +msgid "Home / Information" +msgstr "" + +#: ../admin/menu_quota.php:32 +msgid "Show my quotas" +msgstr "Mostrar cuotas" + +#: ../admin/menu_sql.php:38 +msgid "Databases" +msgstr "Bases de datos" + +# msgid "General SQL Admin" +# msgstr "Admin general SQL " +#: ../admin/menu_sql.php:39 ../admin/sql_users_list.php:37 +msgid "MySQL Users" +msgstr "Usuarios MySQL" + +#: ../admin/menu_sql.php:40 +msgid "PhpMyAdmin" +msgstr "" + +#: ../admin/menu_sta2.php:37 +msgid "Raw web statistics" +msgstr "Estadísticas web en bruto" + +#: ../admin/menu_web.php:34 +msgid "Protected folders" +msgstr "Carpetas protegidas" + +#: ../admin/quota_show.php:34 +msgid "Account's quotas" +msgstr "Cuotas de la cuenta" + +#: ../admin/quota_show.php:40 +msgid "No quotas for this account, or quotas currently unavailable!" +msgstr "¡No hay cuota para esta cuenta, o imposible obtener cuota!" + +#: ../admin/quotas_oneuser.php:13 +msgid "Web Space:" +msgstr "" + +#: ../admin/quotas_oneuser.php:14 ../admin/quotas_oneuser.php:53 +#: ../admin/quotas_oneuser.php:90 ../admin/quotas_oneuser.php:130 +#: ../admin/quotas_users.php:286 ../admin/quotas_users.php:322 +#: ../admin/quotas_users.php:342 ../admin/quotas_users.php:355 +msgid "MB" +msgstr "" + +#: ../admin/quotas_oneuser.php:23 +#, fuzzy +msgid "Emails" +msgstr "Dirección de correo" + +#: ../admin/quotas_oneuser.php:24 ../admin/quotas_oneuser.php:71 +#: ../admin/quotas_oneuser.php:112 ../admin/quotas_users.php:127 +#: ../admin/quotas_users.php:168 +msgid "Space" +msgstr "" + +#: ../admin/quotas_oneuser.php:70 ../admin/quotas_users.php:176 +msgid "DB" +msgstr "" + +#: ../admin/quotas_oneuser.php:111 ../admin/quotas_users.php:172 +#: ../admin/quotas_users.php:175 +msgid "Lists" +msgstr "" + +#: ../admin/quotas_users.php:26 +msgid "" +"This page shows the space and service count of your AlternC server and each " +"AlternC accounts." +msgstr "" + +#: ../admin/quotas_users.php:27 +#, php-format +msgid "Sizes are shown as %s" +msgstr "" + +#: ../admin/quotas_users.php:27 +msgid "MB." +msgstr "" + +#: ../admin/quotas_users.php:27 +#, php-format +msgid "% of the total." +msgstr "" + +#: ../admin/quotas_users.php:30 +msgid "Server-side view:" +msgstr "" + +#: ../admin/quotas_users.php:30 +msgid "Global" +msgstr "" + +#: ../admin/quotas_users.php:31 +msgid "Detailed view:" +msgstr "" + +#: ../admin/quotas_users.php:33 ../admin/quotas_users.php:40 +msgid "Percentage" +msgstr "" + +#: ../admin/quotas_users.php:34 ../admin/quotas_users.php:37 +msgid "Graphical" +msgstr "" + +#: ../admin/quotas_users.php:36 ../admin/quotas_users.php:39 +msgid "In MB" +msgstr "" + +#: ../admin/quotas_users.php:45 +#, fuzzy +msgid "Show the domain names" +msgstr "Nombre de dominio" + +#: ../admin/quotas_users.php:47 +#, fuzzy +msgid "Hide the domain names" +msgstr "Instalar el dominio login.%s" + +#: ../admin/quotas_users.php:50 +#, fuzzy +msgid "All accounts" +msgstr "%s cuentas" + +#: ../admin/quotas_users.php:127 ../admin/quotas_users.php:168 +msgid "Count" +msgstr "" + +#: ../admin/quotas_users.php:136 +#, fuzzy +msgid "Email addresses" +msgstr "Dirección de correo" + +#: ../admin/quotas_users.php:142 +msgid "Mailman lists" +msgstr "" + +# msgid "General SQL Admin" +# msgstr "Admin general SQL " +#: ../admin/quotas_users.php:148 ../admin/sql_bck.php:48 +#: ../admin/sql_del.php:63 ../admin/sql_dorestore.php:38 +#: ../admin/sql_getparam.php:38 ../admin/sql_list.php:36 +#: ../admin/sql_passchg.php:38 ../admin/sql_restore.php:43 +msgid "MySQL Databases" +msgstr "Base de datos MySQL" + +#: ../admin/quotas_users.php:170 +#, fuzzy +msgid "Dom" +msgstr "Dominio" + +#: ../admin/quotas_users.php:171 ../admin/quotas_users.php:174 +#, fuzzy +msgid "Mails" +msgstr "Buzones de correo" + +#: ../admin/quotas_users.php:173 +msgid "Web" +msgstr "" + +#: ../admin/sql_addmain.php:35 +msgid "Your database has been successfully created" +msgstr "Tu base de datos fue creada" + +#: ../admin/sql_add.php:34 ../admin/sql_doadd.php:34 +msgid "err_mysql_1" +msgstr "Alcanzaste tu cuota de bases MySQL, ya no puedes crear una más." + +# ################################################################# +#: ../admin/sql_add.php:39 ../admin/sql_list.php:81 +#, fuzzy +msgid "Create a new MySQL database" +msgstr "Crear una nueva base de datos" + +# msgid "General SQL Admin" +# msgstr "Admin general SQL " +#: ../admin/sql_add.php:51 +#, fuzzy +msgid "MySQL Database" +msgstr "Base de datos MySQL" + +#: ../admin/sql_add.php:56 +#, fuzzy +msgid "Create this new MySQL database." +msgstr "Crear esta nueva base de datos" + +#: ../admin/sql_admin.php:47 +msgid "SQL Admin" +msgstr "Admin SQL" + +#: ../admin/sql_bck.php:58 +#, php-format +msgid "Manage the SQL backup for database %s" +msgstr "Manejar el respaldo de la base %s" + +#: ../admin/sql_bck.php:63 +#, fuzzy +msgid "Do MySQL backup?" +msgstr "¿Respaldar la base SQL?" + +#: ../admin/sql_bck.php:66 +msgid "No backup" +msgstr "Sin respaldo" + +#: ../admin/sql_bck.php:67 +msgid "Weekly backup" +msgstr "Copia de respaldo semanal" + +#: ../admin/sql_bck.php:68 +msgid "Daily backup" +msgstr "Copia de respaldo diaria" + +#: ../admin/sql_bck.php:72 +#, fuzzy +msgid "How many backups should be kept?" +msgstr "¿Cuantas copias de respaldo hay que conservar?" + +#: ../admin/sql_bck.php:84 +msgid "Compress the backups? (gzip)" +msgstr "¿Comprimir las copias de respaldo? (gzip)" + +#: ../admin/sql_bck.php:93 +msgid "In which folder do you want to store the backups?" +msgstr "¿Dónde se almacenan las copias de respaldo?" + +#: ../admin/sql_bck.php:104 +#, fuzzy +msgid "Change the MySQL backup parameters" +msgstr "Cambiar los parámetros de resplados SQL" + +#: ../admin/sql_bck.php:113 ../admin/sql_dorestore.php:56 +#: ../admin/sql_restore.php:71 +msgid "You currently have no database defined" +msgstr "No tienes ninguna base de datos definida" + +#: ../admin/sql_del.php:42 +#, php-format +msgid "The database %s has been successfully deleted" +msgstr "Tu base de datos %s fue borrada" + +#: ../admin/sql_del.php:57 +msgid "Please check which databases you want to delete" +msgstr "" + +#: ../admin/sql_del.php:66 +msgid "Confirm the deletion of the following SQL databases" +msgstr "Confirmar la supresión de las bases de datos SQL siguientes" + +#: ../admin/sql_del.php:67 +msgid "This will delete all the tables currently in those db." +msgstr "Esto borrará todas las tablas contenidas dentro de estas bases." + +#: ../admin/sql_dobck.php:48 +msgid "Your backup parameters has been successfully changed." +msgstr "Tus parámetros de respaldos fueron cambiados." + +#: ../admin/sql_dorestore.php:44 +msgid "Restore a SQL backup" +msgstr "Restaurar una copia de resplado SQL" + +#: ../admin/sql_dorestore.php:50 +msgid "" +"Your database has been restored, check out the previous text for error " +"messages." +msgstr "Tu base fue restaurada, verifica los posibles errores en el texto." + +#: ../admin/sql_getparam.php:47 +msgid "Your current settings are" +msgstr "Los parámetros actuales son" + +#: ../admin/sql_getparam.php:58 +#, fuzzy +msgid "MySQL Server" +msgstr "Servidor SQL" + +#: ../admin/sql_getparam.php:62 +#, fuzzy +msgid "Main database" +msgstr "Crear mi base de datos principal" + +#: ../admin/sql_getparam.php:67 +#, fuzzy +msgid "Back to the MySQL database list" +msgstr "Regresar a la lista de cuentas" + +#: ../admin/sql_list.php:46 +msgid "help_sql_list_ok" +msgstr "" +"Tienes una o más bases de datos.
            Presiona en 'Admin SQL' en el menú para " +"administrarlas
            o utiliza el menú aquí abajo para administrar las copias " +"de respaldo,
            las restauraciones o para borrar las bases:" + +#: ../admin/sql_list.php:51 ../admin/sql_list.php:97 +#: ../admin/sql_passchg.php:54 +msgid "Database" +msgstr "Base de datos" + +#: ../admin/sql_list.php:51 ../admin/sql_list.php:63 +msgid "Backup" +msgstr "Respaldos" + +#: ../admin/sql_list.php:51 ../admin/sql_list.php:64 +msgid "Restore" +msgstr "Restauración" + +#: ../admin/sql_list.php:73 +msgid "Delete the checked databases" +msgstr "Borrar las bases de datos seleccionadas" + +#: ../admin/sql_list.php:83 +#, fuzzy +msgid "Change the MySQL password" +msgstr "Cambiar contraseña SQL" + +#: ../admin/sql_list.php:84 +#, fuzzy +msgid "Get the current MySQL parameters" +msgstr "Mostrar los parámetros SQL actuales" + +#: ../admin/sql_list.php:89 +msgid "help_sql_list_no" +msgstr "" +"Tu base de datos principal no existe, ingresa aquí una contraseña para " +"crearla" + +#: ../admin/sql_list.php:96 ../admin/sql_passchg.php:53 +msgid "SQL Server" +msgstr "Servidor SQL" + +#: ../admin/sql_list.php:98 +msgid "Create my main database" +msgstr "Crear mi base de datos principal" + +#: ../admin/sql_passchg.php:46 +#, fuzzy +msgid "" +"Enter the new password of your MySQL database and click 'change the " +"password' to change it" +msgstr "" +"Entra la nueva contraseña para la base de datos SQL y presiona en 'Cambiar " +"contraseña'" + +#: ../admin/sql_restore.php:53 +#, fuzzy, php-format +msgid "Restore a MySQL backup for database %s" +msgstr "Restaurar una copia de respaldo de la base de datos SQL %s" + +#: ../admin/sql_restore.php:56 +msgid "" +"Warning: Write the complete path and the filename.
            For example if your " +"backups are in the directory /Backups,
            write /Backups/file.sql.gz " +"(where file.sql.gz is the filename)." +msgstr "" + +#: ../admin/sql_restore.php:61 +#, fuzzy +msgid "" +"Please enter the path and the filename containing SQL data to be restored." +msgstr "" +"Entra el nombre del archivo que contiene los datos SQL por restaurar en la " +"base." + +#: ../admin/sql_restore.php:62 +msgid "Restore my database" +msgstr "Restaurar mi base de datos" + +#: ../admin/sql_restore.php:66 +msgid "Note: If the filename ends with .gz, it will be uncompressed before." +msgstr "" +"Nota: Si el nombre del archivo termina por .gz, primero será descomprimido." + +#: ../admin/sql_users_add.php:41 +#, fuzzy +msgid "err_mysql_13" +msgstr "Alcanzaste tu cuota de bases MySQL, ya no puedes crear una más." + +#: ../admin/sql_users_add.php:46 ../admin/sql_users_list.php:86 +msgid "Create a new MySQL user" +msgstr "Crear un nuevo usuario MySQL" + +#: ../admin/sql_users_add.php:77 +#, fuzzy +msgid "Create this new MySQL user" +msgstr "Crear un nuevo usuario MySQL" + +#: ../admin/sql_users_del.php:41 +#, php-format +msgid "The user %s has been successfully deleted" +msgstr "Tu usuario %s fue borrado" + +# msgid "General SQL Admin" +# msgstr "Admin general SQL " +#: ../admin/sql_users_del.php:52 +msgid "MySQL users" +msgstr "Usuarios MySQL" + +#: ../admin/sql_users_del.php:55 +msgid "Confirm the deletion of the following MySQL users" +msgstr "Confirmar la supresión de los usuarios MySQL siguientes" + +#: ../admin/sql_users_dorights.php:44 +msgid "The rights has been successfully applied to the user" +msgstr "Los derechos fueron correctamente aplicados al usuario" + +#: ../admin/sql_users_list.php:47 +msgid "help_sql_users_list_ok" +msgstr "Utiliza el cuadro aquí abajo para manejar tus usuarios MySQL:" + +#: ../admin/sql_users_list.php:52 +msgid "Rights" +msgstr "Derechos" + +#: ../admin/sql_users_list.php:64 +#, fuzzy +msgid "Manage the rights" +msgstr "Administrar miembros" + +#: ../admin/sql_users_password.php:64 +#, fuzzy +msgid "Change user password" +msgstr "Modificar contraseña" + +#: ../admin/sql_users_rights.php:41 +#, php-format +msgid "MySQL Rights for %s" +msgstr "Derechos MySQL para %s" + +#: ../admin/sql_users_rights.php:51 +msgid "help_sql_users_rights_ok" +msgstr "" +"Selecciona en cada base los derechos que quieres atribuirle al usuario:" + +#: ../admin/sql_users_rights.php:82 +msgid "Reverse selection" +msgstr "" + +#: ../admin/sql_users_rights.php:95 +msgid "Apply" +msgstr "Aplicar" + +#: ../admin/sta2_add_raw.php:33 +msgid "You cannot add any new statistics, your quota is over." +msgstr "No puedes crear más estadísticas, alcanzaste el limite de tu cuota." + +#: ../admin/sta2_add_raw.php:38 +msgid "New Raw Statistics (apache)" +msgstr "Nuevo juego de estadísticas en bruto (apache)" + +#: ../admin/sta2_add_raw.php:51 ../admin/sta2_edit_raw.php:57 +#, fuzzy +msgid "Domain name:" +msgstr "Nombre de dominio" + +#: ../admin/sta2_add_raw.php:54 ../admin/sta2_edit_raw.php:60 +msgid "Folder where we will put the log file:" +msgstr "" + +#: ../admin/sta2_add_raw.php:63 +msgid "Create those raw statistics" +msgstr "Crear estas estadísticas en bruto" + +#: ../admin/sta2_del_raw.php:42 +#, php-format +msgid "" +"The statistics %s has been successfully deleted (the stats files must be " +"manually deleted)" +msgstr "" +"El juego de estadísticas %s fue borrado (los archivos de estadísticas deben " +"ser borrados a mano)" + +#: ../admin/sta2_doadd_raw.php:44 +msgid "The statistics has been successfully created" +msgstr "El juego de estadísticas fue creado" + +#: ../admin/sta2_doedit_raw.php:33 ../admin/sta2_edit_raw.php:35 +msgid "No Statistics selected!" +msgstr "¡Ningún juego seleccionado!" + +#: ../admin/sta2_doedit_raw.php:41 +msgid "The Statistics has been successfully changed" +msgstr "El juego de estadísticas fue modificado" + +#: ../admin/sta2_edit_raw.php:44 +msgid "Change the Raw Statistics" +msgstr "Modificar estadísticas en bruto" + +#: ../admin/sta2_edit_raw.php:67 +msgid "Change those Raw Statistics." +msgstr "Modificar estas estadísticas en bruto." + +#: ../admin/sta2_list.php:35 +#, fuzzy +msgid "Raw Statistics List" +msgstr "Lista de juegos de estadísticas" + +#: ../admin/sta2_list.php:41 +msgid "Create new Raw Statistics (apache)" +msgstr "Crear un nuevo juego de estadísticas en bruto (apache)" + +#: ../admin/sta2_list.php:79 +msgid "Delete the checked Raw Statistics (apache)" +msgstr "Suprimir los juegos de estadísticas en bruto (apache) seleccionados" + +#: ../admin/stats_members.php:32 +#, fuzzy +msgid "" +"Image_Graph not installed. use 'aptitude install php-pear' then 'pear " +"install --alldeps Image_Graph-devel' to see the graph." +msgstr "" +"Image_Graph no está instalado. Ejecuta 'aptitude install php-pear' en un " +"terminal del servidor, y luego 'pear --alldeps install Image_Graph-devel' " +"para poder ver el gráfico." + +#: ../admin/stats_members.php:41 +msgid "Account creation per month" +msgstr "Cuentas creadas por mes" + +#: ../admin/stats_members.php:54 +msgid "before the month" +msgstr "antes de el mes" + +#: ../admin/stats_members.php:56 +msgid "during the month" +msgstr "durante el mes" + +#: ../admin/trash_dateselect.php:50 +#, fuzzy +msgid "You want it to be deleted in" +msgstr "no pudo ser borrado" + +#: ../admin/trash_dateselect.php:57 +msgid "Hours" +msgstr "" + +#: ../admin/trash_dateselect.php:58 +msgid "Days" +msgstr "" + +#: ../admin/trash_dateselect.php:59 +msgid "Weeks" +msgstr "" + +#: ../admin/trash_dateselect.php:66 +msgid "" +"Delete this email the following day,
            enter the date using DD/MM/YYYY " +"format" +msgstr "" + +#: ../admin/trash_dateselect.php:79 +msgid "All this account information will be deleted at expiration" +msgstr "" + +# Variables used in functions.php3 +#: ../class/functions.php:286 +msgid "Bytes" +msgstr "Octetos" + +#: ../class/functions.php:288 +msgid "Byte" +msgstr "Octeto" + +#: ../class/functions.php:293 +msgid "Kb" +msgstr "Kb" + +#: ../class/functions.php:297 +msgid "Mb" +msgstr "Mb" + +#: ../class/functions.php:301 +msgid "Gb" +msgstr "Gb" + +#: ../class/functions.php:303 +msgid "Tb" +msgstr "Tb" + +# Variables used in functions.php3 +#: ../class/functions.php:390 +msgid "years" +msgstr "años" + +#: ../class/functions.php:390 +msgid "year" +msgstr "año" + +#: ../class/functions.php:392 +msgid "months" +msgstr "meses" + +#: ../class/functions.php:392 +msgid "month" +msgstr "mes" + +#: ../class/functions.php:415 +msgid "Not managed" +msgstr "No manejado" + +# translation of messages.po to +# translation of admin2.po to +# Spanish AlternC Translation +# Copyright (c) 2002 the AlternC Development Team +# +# +# Bruno Marmier , 2003, 2004. +# Daniel Viñar Ulriksen , 2008. +#: ../class/lang_env.php:61 +msgid "" +msgstr "" +"Project-Id-Version: messages\n" +"Report-Msgid-Bugs-To: i18n@alternc.org\n" +"POT-Creation-Date: 2006-05-09 17:16+0200\n" +"PO-Revision-Date: 2008-09-05 16:50+0200\n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-1\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: KBabel 1.11.4\n" + +#: ../class/m_err.php:66 ../class/m_err.php:94 ../class/m_err.php:96 +msgid "err_" +msgstr "err_" + +#: ../class/mime.php:135 +msgid "CSS Stylesheet" +msgstr "Hoja de estilo CSS" + +#: ../class/mime.php:136 +msgid "Comma Separated Values data" +msgstr "Datos separados por una coma" + +#: ../class/mime.php:137 +msgid "DIA Diagram" +msgstr "Diagrama DIA" + +#: ../class/mime.php:138 +msgid "Word Document" +msgstr "Documento Word" + +#: ../class/mime.php:139 +msgid "Word Document Template" +msgstr "Modelo de documento Word" + +#: ../class/mime.php:140 +msgid "Encapsulated Postscript" +msgstr "Postscript encapsulado" + +#: ../class/mime.php:141 +msgid "GIF Image" +msgstr "Imagen GIF" + +#: ../class/mime.php:142 +msgid "Macintosh Executable" +msgstr "Ejecutable Macintosh" + +#: ../class/mime.php:143 ../class/mime.php:144 +msgid "HTML Document" +msgstr "Documento HTML" + +#: ../class/mime.php:145 ../class/mime.php:146 +msgid "JPEG Image" +msgstr "Imagen JPEG" + +#: ../class/mime.php:147 +msgid "Music Playlist" +msgstr "Lista de pistas musicales" + +#: ../class/mime.php:148 +msgid "MP3 Music File" +msgstr "Archivo de música MP3" + +#: ../class/mime.php:149 +msgid "Ogg Music File" +msgstr "Archivo de música Ogg" + +#: ../class/mime.php:150 +msgid "Acrobat PDF" +msgstr "Documento PDF" + +#: ../class/mime.php:151 +msgid "PHP Source" +msgstr "Fuente PHP" + +#: ../class/mime.php:152 +msgid "PNG Image" +msgstr "Imagen PNG" + +#: ../class/mime.php:153 ../class/mime.php:154 +msgid "Powerpoint Slideshow" +msgstr "Presentación Powerpoint" + +#: ../class/mime.php:155 +msgid "Postscript Document" +msgstr "Documento Postscript" + +#: ../class/mime.php:156 +msgid "Photoshop Image" +msgstr "Imagen Photoshop" + +#: ../class/mime.php:157 +msgid "Rar Compressed Files" +msgstr "Archivos comprimidos RAR" + +#: ../class/mime.php:158 +msgid "Rich Text Document" +msgstr "Documento enriquezido RTF" + +#: ../class/mime.php:159 +msgid "OpenOffice Spreadsheet" +msgstr "Hoja de cálculo OpenOffice" + +#: ../class/mime.php:160 +msgid "OpenOffice Drawing" +msgstr "Dibujo OpenOffice" + +#: ../class/mime.php:161 +msgid "OpenOffice Presentation" +msgstr "Presentación OpenOffice" + +#: ../class/mime.php:162 +msgid "OpenOffice Writer" +msgstr "Texto OpenOffice" + +#: ../class/mime.php:163 ../class/mime.php:164 +msgid "TIFF Image" +msgstr "Imagen TIFF" + +#: ../class/mime.php:165 +msgid "Text Document" +msgstr "Documento Texto" + +#: ../class/mime.php:166 ../class/mime.php:167 +msgid "Virtual Card" +msgstr "Tarjeta de visita" + +#: ../class/mime.php:168 +msgid "Gimp Image" +msgstr "Imagen GIMP" + +#: ../class/mime.php:169 +msgid "Excel Spreadsheet" +msgstr "Hoja de Cálculo Excel" + +#: ../class/mime.php:170 +msgid "Zip Compressed Files" +msgstr "Archivos comprimidos ZIP" + +#: ../class/mime.php:171 +msgid "Flash Animation" +msgstr "Animación Flash" + +#: ../class/mime.php:172 ../class/mime.php:173 ../class/mime.php:174 +msgid "Real Media File" +msgstr "Archivo Real Media" + +#: ../class/m_mem.php:497 +msgid "Help" +msgstr "Ayuda" + +#~ msgid "New member" +#~ msgstr "Añadir nuevo miembro" + +#~ msgid "Create the domain username.%s" +#~ msgstr "Instalar el dominio login.%s" + +#~ msgid "Create a new member" +#~ msgstr "Crear un nuevo miembro" + +#~ msgid "Member" +#~ msgstr "Miembro" + +#~ msgid "Account Enabled ?" +#~ msgstr "¿Cuenta activa?" + +#~ msgid "Reset quotas to default ?" +#~ msgstr "¿Reincializar las cuotas al valor por omisión?" + +#~ msgid "Back to the account list" +#~ msgstr "Regresar a la lista de cuentas" + +#~ msgid "Member list" +#~ msgstr "Lista de miembros" + +#~ msgid "Here is the list of hosted members" +#~ msgstr "He aquí la lista de miembros hospedados" + +#~ msgid "List all the accounts" +#~ msgstr "Listar todas las cuentas" + +#~ msgid "Last fail" +#~ msgstr "Último fracaso de conexión" + +#~ msgid "Locked Account" +#~ msgstr "Cuenta bloqueada" + +#~ msgid "AlternC Desktop" +#~ msgstr "Escritorio AlternC" + +#~ msgid "Show all quotas" +#~ msgstr "Mostrar todas las cuotas" + +#~ msgid "mode" +#~ msgstr "modo" + +#~ msgid "all/none" +#~ msgstr "todos/ninguno" + +#~ msgid "Import this file" +#~ msgstr "Importar este archivo" + +#~ msgid "Send" +#~ msgstr "Mandar" + +#~ msgid "There is an ftp account in this folder" +#~ msgstr "Existe una cuenta FTP en esta carpeta" + +#~ msgid "Click here to edit this ftp account." +#~ msgstr "Presiona aquí para modificar esta cuenta FTP." + +#~ msgid "Click here to create an ftp account in this folder." +#~ msgstr "Presiona aquí para crear una cuenta FTP en esta carpeta." + +#~ msgid "This folder has restricted access" +#~ msgstr "La carpeta está protegida" + +#~ msgid "Click here to protect this folder with login/password" +#~ msgstr "Presiona aquí para proteger esta carpeta con un login / contaseña" + +#~ msgid "Download" +#~ msgstr "Bajar" + +#~ msgid "this folder and its subfolders as a compressed file" +#~ msgstr "esta carpeta y sus sub-carpetas como archivo comprimido" + +#~ msgid "Configure the file browser" +#~ msgstr "Configurar el manejador de archivos" + +#~ msgid "File editor preferences" +#~ msgstr "Preferencias del editor de archivos" + +#~ msgid "Back to the file browser" +#~ msgstr "Regresar al manejador de archivos" + +#~ msgid "" +#~ "The domain %s has been changed. The modifications will take effect in 5 " +#~ "minutes." +#~ msgstr "" +#~ "Tu dominio %s fue modificado. Las modificaciones serán efectivas dentro " +#~ "de 5 minutos." + +#~ msgid "Subdomains" +#~ msgstr "Subdominios" + +#~ msgid "Add a subdomain" +#~ msgstr "Añadir un subdominio" + +#~ msgid "Locally managed" +#~ msgstr "Administrar localmente" + +#~ msgid "URL redirection" +#~ msgstr "Dirigir hacia una URL" + +#~ msgid "IP redirection" +#~ msgstr "Dirigir hacia una dirección IP" + +#~ msgid "Webmail access" +#~ msgstr "Acceso Webmail" + +#~ msgid "DNS parameters" +#~ msgstr "Parámetros DNS" + +#~ msgid "help_dns_mx %s %s" +#~ msgstr "" +#~ "Si este servidor maneja el DNS de este dominio:
            Si quieres, puedes " +#~ "manejar sus buzones de correo en otro lado (campo MX).
            Ingresa " +#~ "%s en este campo si tus buzones deben ser manejados " +#~ "por %s
            o ingresa la dirección IP o el nombre del servidor de mail " +#~ "utilizado para tus buzones Cuidado: si no pones nada en este " +#~ "campo, tus direcciones de correo estarán indisponibles." + +#~ msgid "MX Field" +#~ msgstr "Campo MX" + +#~ msgid "help_dns_mail" +#~ msgstr "" +#~ "Si este servidor no maneja el DNS de este dominio
            ¿maneja sus " +#~ "buzones de correo?" + +#~ msgid "Delete %s" +#~ msgstr "Borrar %s" + +#~ msgid "The modifications will take effect in 5 minutes." +#~ msgstr "Las modificaciones serán efectivas dentro de 5 minutos." + +#~ msgid "The folder must exists." +#~ msgstr "La carpeta debe existir." + +#~ msgid "Add a username" +#~ msgstr "Añadir un usuario" + +#~ msgid "Administration of" +#~ msgstr "Administración de" + +#~ msgid "Enter your username and password to connect to the virtual desktop" +#~ msgstr "" +#~ "Ingresa tu nombre de usuario y tu contraseña para conectarte a la " +#~ "interfaz de administración" + +#~ msgid "Restrict this session to my ip address" +#~ msgstr "Restringir esta sesión a mi dirección IP" + +#~ msgid "You can use a different language: " +#~ msgstr "Puedes utilizar un idioma diferente:" + +#~ msgid "AlternC, Opensource hosting control panel" +#~ msgstr "" +#~ "AlternC, software libre para un panel de control de hospedaje compartido" + +#~ msgid "Is it a POP account?" +#~ msgstr "¿Cuenta POP?" + +#~ msgid "POP password" +#~ msgstr "Contraseña POP" + +#~ msgid "Other recipients" +#~ msgstr "Otros destinatarios" + +#~ msgid "One email per line" +#~ msgstr "una cuenta de correo por línea" + +#~ msgid "Create this mailbox" +#~ msgstr "Añadir este buzón" + +#~ msgid "Delete the selected mailboxes" +#~ msgstr "Borrar los buzones de correo marcados" + +#~ msgid "Don't delete accounts and go back to the mail list" +#~ msgstr "No borrar nada, volver a la lista de buzones de correo" + +#~ msgid "The mailbox %s has been successfully created" +#~ msgstr "El buzón %s fue creado con éxito" + +#~ msgid "Back to the mail account list" +#~ msgstr "Regresar a la lista de buziones de correo" + +#~ msgid "The mailbox %s has been successfully changed" +#~ msgstr "Se modificó correctamente el buzón %s" + +#~ msgid "Edit a mailbox of the domain %s" +#~ msgstr "Modificar un buzón del dominio %s" + +#~ msgid "Edit the mailbox %s" +#~ msgstr "Modificar el buzón %s" + +#~ msgid "Change this mailbox" +#~ msgstr "Modificar este buzón" + +#~ msgid "Mailbox list of the domain %s" +#~ msgstr "Lista de las buzones de correo del dominio %s" + +#~ msgid "Change my mail" +#~ msgstr "Cambiar mi dirección email" + +#~ msgid "Manage the members" +#~ msgstr "Administrar miembros" + +#~ msgid "General SQL Admin" +#~ msgstr "Admin SQL general" + +#~ msgid "Mailboxes" +#~ msgstr "Buzones de correo" + +#~ msgid "Front page" +#~ msgstr "Portada" + +# ################################################################# +#~ msgid "Create a new database" +#~ msgstr "Crear una nueva base de datos" + +#~ msgid "Create this new database." +#~ msgstr "Crear esta nueva base de datos" + +#~ msgid "Do sql backup?" +#~ msgstr "¿Respaldar la base SQL?" + +#~ msgid "How many backup should be kept?" +#~ msgstr "¿Cuantas copias de respaldo hay que conservar?" + +#~ msgid "Change the SQL backup parameters" +#~ msgstr "Cambiar los parámetros de resplados SQL" + +#~ msgid "Change the SQL password" +#~ msgstr "Cambiar contraseña SQL" + +#~ msgid "Get the current SQL parameters" +#~ msgstr "Mostrar los parámetros SQL actuales" + +#~ msgid "" +#~ "Enter the new password of your SQL database and click 'change the " +#~ "password' to change it" +#~ msgstr "" +#~ "Entra la nueva contraseña para la base de datos SQL y presiona en " +#~ "'Cambiar contraseña'" + +#~ msgid "Restore a SQL backup for database %s" +#~ msgstr "Restaurar una copia de respaldo de la base de datos SQL %s" + +#~ msgid "Please enter the filename containing SQL data to be restored." +#~ msgstr "" +#~ "Entra el nombre del archivo que contiene los datos SQL por restaurar en " +#~ "la base." + +#~ msgid "err_mysql_20" +#~ msgstr "Alcanzaste tu cuota de usuarios MySQL, ya no puedes crear uno más." + +#~ msgid "Create this new user" +#~ msgstr "Crear este nuevo uruario" + +#~ msgid "Statistics List" +#~ msgstr "Lista de juegos de estadísticas" + +#~ msgid "This TLD is forbidden" +#~ msgstr "Este TLD está prohibido" + +#~ msgid "primary DNS is checked in WHOIS db" +#~ msgstr "verificar el DNS primario en la base WHOIS" + +#~ msgid "primary & secondary DNS are checked in WHOIS db" +#~ msgstr "verificar los DNS primario y segundario en la base WHOIS" + +#~ msgid "Domain must exist, but don't do any DNS check" +#~ msgstr "El dominio debe existir, pero no hacer ninguna verificación de DNS" + +#~ msgid "Domain can be installed, no check at all" +#~ msgstr "Se puede instalar el dominio, ninguna verificación" + +#~ msgid "Domain can be installed, force NO DNS hosting)" +#~ msgstr "El dominio puede ser instalado (pero no se maneja el DNS)" + +#~ msgid "_" +#~ msgstr "_" + +#~ msgid "Update this page" +#~ msgstr "Volver a cargar esta página" + +#~ msgid "Deactivate" +#~ msgstr "Desactivar" + +#~ msgid "WARNING : Confirm the deletion of this files" +#~ msgstr "ADVERTENCIA : Confirma la supresión de estos archivos" + +#~ msgid "Please choose the filename containing SQL data to be restored." +#~ msgstr "" +#~ "Elige el archivo que contiene los datos SQL por restaurar en la base." + +#~ msgid "OR" +#~ msgstr "O" + +#~ msgid "" +#~ "Image_Graph not installed. pear install Image_Graph-devel to see the " +#~ "graph." +#~ msgstr "" +#~ "Image_Graph no está instalado. pear install Image_Graph-devel es " +#~ "necesario para vr este gráfico." + +#~ msgid "Old Name:" +#~ msgstr "Antiguo nombre:" + +#~ msgid "New Name:" +#~ msgstr "Nuevo nombre:" + +#~ msgid "Move to" +#~ msgstr "Mover a" + +#~ msgid "" +#~ "The subdomain has been deleted. Changes will take place in 5 minutes." +#~ msgstr "" +#~ "El sub-dominio fue borrado, las modificaciones serán efectivas dentro de " +#~ "5 minutos." + +#~ msgid "" +#~ "Image_Graph not installed. use 'aptitude install php-pear' then 'pear --" +#~ "alldeps install Image_Graph-devel' to see the graph." +#~ msgstr "" +#~ "Image_Graph no está instalado. Ejecuta 'aptitude install php-pear' en un " +#~ "terminal del servidor, y luego 'pear --alldeps install Image_Graph-devel' " +#~ "para poder ver el gráfico." + +#~ msgid "Copy to" +#~ msgstr "Copiar a" + +#~ msgid "WARNING: turning POP off will DELETE the mailbox and its content" +#~ msgstr "" +#~ "CUIDADO: desactivar el POP BORRARÁ la casilla de correo y su contenido" + +#~ msgid "AlternC configuration" +#~ msgstr "Configuración del AlternC" + +#~ msgid "Files and directories" +#~ msgstr "Archivos y carpetas" + +#~ msgid "Languages" +#~ msgstr "Idiomas" + +#~ msgid "Other" +#~ msgstr "Otro" + +#~ msgid "Messages" +#~ msgstr "Mensajes " + +#~ msgid "Users" +#~ msgstr "Usuarios" + +#~ msgid "Web statistics" +#~ msgstr "Estadísticas Web" + +#, fuzzy +#~ msgid "Sub-domain" +#~ msgstr "Subdominios" + +#, fuzzy +#~ msgid "Validate this change" +#~ msgstr "Volver a cargar esta página" + +#, fuzzy +#~ msgid "Actions" +#~ msgstr "Acción" + +#, fuzzy +#~ msgid "Manage this temporary account" +#~ msgstr "Modificar cuenta FTP." + +#, fuzzy +#~ msgid "Create alias" +#~ msgstr "Crear" + +#, fuzzy +#~ msgid "Manage the Emails of this domain on the server ?" +#~ msgstr "¿Administrar el DNS de este dominio?" + +#~ msgid "Edition du sous-domaine" +#~ msgstr "Edición del sub-dominio" + +#~ msgid "Sous-domaine" +#~ msgstr "Sub-dominio" diff --git a/stable-1.0/bureau/locales/fr_FR/LC_MESSAGES/manual.po b/stable-1.0/bureau/locales/fr_FR/LC_MESSAGES/manual.po new file mode 100644 index 00000000..394587ac --- /dev/null +++ b/stable-1.0/bureau/locales/fr_FR/LC_MESSAGES/manual.po @@ -0,0 +1,857 @@ +# French AlternC Translation +# Copyright (c) 2002 the AlternC Development Team +# +# $Id: admin_manual.po,v 1.3 2006/02/09 20:12:23 benjamin Exp $ +#. Template for AlternC Translation +#. Copyright (c) 2002 the AlternC Development Team +#. +#. $Id: admin.po,v 1.4 2006/02/09 20:12:23 benjamin Exp $ +msgid "" +msgstr "" +"Project-Id-Version: $Id: admin_manual.po,v 1.3 2006/02/09 20:12:23 benjamin " +"Exp $\n" +"Report-Msgid-Bugs-To: i18n@alternc.org\n" +"POT-Creation-Date: 2004-05-24 19:34+0200\n" +"PO-Revision-Date: 2002-06-16 13:50CEST\n" +"Last-Translator: Benjamin Sonntag \n" +"Language-Team: French \n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Emacs 21\n" + +#. -- Only administrators can access this page !! -- +msgid "err_admin_1" +msgstr "-- Seuls les administrateurs ont accès à ces pages !! --" + +#. Account not found +msgid "err_admin_2" +msgstr "Membre introuvable" + +#. This login already exists +msgid "err_admin_3" +msgstr "Le login existe déjà !" + +#. -- I cannot create this account -- +msgid "err_admin_4" +msgstr "--Impossible de créer le compte--" + +#. Please enter a valid email address +msgid "err_admin_5" +msgstr "Veuillez entrer un email valide" + +#. All fields are mandatory +msgid "err_admin_6" +msgstr "Les champs login, pass et email sont obligatoires" + +#. You can ask for your password only once a day ! +msgid "err_admin_7" +msgstr "" +"Vous ne pouvez demander votre mot de passe qu'une seule fois par jour !" + +#. This account is ALREADY an administrator account +msgid "err_admin_8" +msgstr "L'utilisateur spécifié est DÉJÀ Administrateur !" + +#. This account is NOT an administrator account ! +msgid "err_admin_9" +msgstr "L'utilisateur spécifié n'est PAS Administrateur !" + +#. Login can only contains characters a-z, 0-9 and - +msgid "err_admin_10" +msgstr "Les seuls caractères autorisés pour le login sont a-z 0-9 et -" + +#. This TLD does not exist +msgid "err_admin_11" +msgstr "Ce TLD n'existe pas" + +#. This TLD already exists +msgid "err_admin_12" +msgstr "Ce TLD existe déjà" + +#. The login is too long (16 chars max) +msgid "err_admin_13" +msgstr "Le login est trop long (16 caractères maximum)" + +#. Domain names +msgid "quota_dom" +msgstr "Noms de domaines" + +#. Domain '%s' not found. +msgid "err_dom_1" +msgstr "Le domaine '%s' n'existe pas." + +#. The domaine '%s' does not belong to you. +msgid "err_dom_2" +msgstr "Le domaine '%s' ne vous appartient pas." + +#. --- Programm error --- No lock on the domains ! +msgid "err_dom_3" +msgstr "--- Erreur de programmation --- Aucun Lock sur les domaines !" + +#. The domain name is too long. +msgid "err_dom_4" +msgstr "Le nom de domaine est trop long." + +#. One of the domain name member is too long. +msgid "err_dom_5" +msgstr "L'un des membres du nom de domaine est trop long." + +#. There is some forbidden characters in the domain name (only A-Z 0-9 and - are allowed). +msgid "err_dom_6" +msgstr "" +"Il y a des caractères interdits dans le nom de domaine (seuls A-Z 0-9 et - " +"sont autorisés)." + +#. The last member of the domain name is incorrect or cannot be hosted in that server. +msgid "err_dom_7" +msgstr "" +"Le dernier membre du domaine est incorrect ou non hébergeable sur ce serveur." + +#. The domain already exists. +msgid "err_dom_8" +msgstr "Le domaine existe deja." + +#. The domain has been deleted less than 5 minutes ago, please try again later. +msgid "err_dom_9" +msgstr "" +"Le domaine a été effacé il y a moins de 5 minutes, réessayez ultérieurement." + +#. Your domain quota is over, you cannot create more domain names. +msgid "err_dom_10" +msgstr "" +"Vous avez atteint votre quota de domaines, vous ne pouvez plus en créer." + +#. The Whois database is unavailable, please try again later. +msgid "err_dom_11" +msgstr "Impossible de se connecter à la base Whois" + +#. The domain cannot be found in the whois database. +msgid "err_dom_12" +msgstr "Domaine introuvable dans la base Whois" + +#. The domain has been changed less than 5 minutes ago. Please try again in a few minutes. +msgid "err_dom_13" +msgstr "" +"Le domaine a été modifié il y a moins de 5 minutes, réessayez ultérieurement." + +#. The sub-domain does not exist. +msgid "err_dom_14" +msgstr "Le sous-domaine n'existe pas." + +#. No change has been requested... +msgid "err_dom_15" +msgstr "Aucune modification n'a été demandée ... " + +#. The sub-domain already exists. +msgid "err_dom_16" +msgstr "Le sous-domaine existe déjà." + +#. --- Programm error --- Lock already obtained ! +msgid "err_dom_17" +msgstr "--- Erreur de programmation --- Lock sur les domaines déjà obtenu !" + +#. This domain is the server's domain !!! You cannot host it on your account ! +msgid "err_dom_18" +msgstr "" +"Ce domaine est celui du serveur !!! Vous ne pouvez pas l'installer sur votre " +"compte." + +#. The IP address you entered is incorrect. +msgid "err_dom_19" +msgstr "L'adresse IP entrée est incorrecte." + +#. The URL you entered is incorrect. +msgid "err_dom_20" +msgstr "L'url entrée est incorrecte." + +#. The folder you entered is incorrect or does not exist. +msgid "err_dom_21" +msgstr "Le répertoire entré est incorrect ou n'existe pas." + +#. The requested domain is forbidden in this server, please contact the administrator +msgid "err_dom_22" +msgstr "" +"Le domaine demandé est interdit sur ce serveur, contactez l'administrateur" + +#. The DNS of this domain do not match the server's DNS. Please change your +#. domain's DNS (and eventually wait 1 day) before you install it again. +msgid "err_dom_23" +msgstr "" +"Les DNS de ce domaine ne correspondent pas à ceux du serveur.
            Vous " +"devez modifier les DNS du domaine (et, dans certains cas, attendre 24H)
            avant de pouvoir l'installer" + +#. There is some forbidden characters in the sub domain (only A-Z 0-9 and - are allowed). +msgid "err_dom_24" +msgstr "" +"Il y a des caractères interdits dans le sous domaine (seuls A-Z 0-9 et - " +"sont autorisés)." + +#. There is no MX record pointing to this server, and you are asking us to host the Mail here +msgid "err_dom_25" +msgstr "" +"Il n'y a pas de MX pointant vers ce serveur, alors que vous nous demandez " +"d'héberger le mail ici." + +#. - Entrez le nom du domaine que vous souhaitez héberger. Le nom de domaine +#. doit être complet, mais sans le www.
            IMPORTANT : Si vous voulez +#. un hébergement réel de domaine, il faut que les DNS de votre domaine +#. pointent vers nos serveurs DNS. Contacter votre hébergeur pour plus +#. d'information.
            Exemples : globenet.org / demo.com / test.eu.org etc. +#.
            Plus d'info sur la gestion des domaines dans l'aide en ligne +#. HELPID_200
            +msgid "hlp_add_domain" +msgstr "" +"- Entrez le nom du domaine que vous souhaitez héberger. Le nom de domaine " +"doit être complet, mais sans le www.
            IMPORTANT : Si vous voulez " +"un hébergement réel de domaine, il faut que les DNS de votre domaine " +"pointent vers nos serveurs DNS. Contacter votre hébergeur pour plus " +"d'information.
            Plus d'info sur la gestion des domaines dans l'aide en " +"ligne HELPID_200
            " + +#. Cliquez sur le lien ci-dessus. Vous pourrez ensuite accéder aux paremètres +#. du domaine dans le menu à gauche.2 liens vont apparaitre :
            - un +#. premier pour modifier les paramètres d'hébergement du domaine (sous- +#. domaines, redirections, hébergement mails ...)
            - un second pour gérer +#. les comptes emails du domaine (si vous souhaitez créer des boites aux +#. lettres).
            Plus d'info sur la gestion des domaines dans l'aide en ligne +#. HELPID_200
            +msgid "hlp_add_domain_2" +msgstr "" +"Cliquez sur le lien ci-dessus. Vous pourrez ensuite accéder aux paramètres " +"du domaine dans le menu à gauche. 2 liens vont apparaitre :
            - un " +"premier pour modifier les paramètres d'hébergement du domaine (sous-" +"domaines, redirections, hébergement mails ...)
            - un second pour gérer " +"les comptes emails du domaine (si vous souhaitez créer des boites aux " +"lettres).
            Plus d'info sur la gestion des domaines dans l'aide en ligne " +"HELPID_200
            " + +#. Le domaine a été effacé, mais les fichiers de votre site n'ont pas été +#. détruits.
            Si vous souhaitez détruire les fichiers du site web, utilisez +#. le Gestionnaire de Fichier
            Plus d'info sur la gestion des domaines dans +#. l'aide en ligne HELPID_200
            +msgid "hlp_del_domain" +msgstr "" +"Le domaine a été effacé, mais les fichiers de votre site n'ont pas été " +"détruits.
            Si vous souhaitez détruire les fichiers du site web, utilisez " +"le Gestionnaire de Fichiers ou un compte FTP
            Plus d'info sur la gestion " +"des domaines dans l'aide en ligne HELPID_200
            " + +#. Cette zone vous permet de modifier les paramètres de votre domaine, ainsi +#. que des sous-domaines installés
            Vous pouvez créer un nouveau sous- +#. domaine et choisir, soit de le rediriger vers votre espace disque, vers une +#. autre adresse Internet, ou vers une adresse IP (utilisateurs avancés)
            +#. Plus d'info sur la gestion des domaines dans l'aide en ligne HELPID_200
            +msgid "hlp_edit_domain" +msgstr "" +"Cette zone vous permet de modifier les paramètres de votre domaine, ainsi " +"que des sous-domaines installés
            Vous pouvez créer un nouveau sous-" +"domaine et choisir, soit de le rediriger vers votre espace disque, vers une " +"autre adresse Internet, ou vers une adresse IP (utilisateurs avancés)
            Vous pouvez aussi diriger un sous-domaine vers le webmail, vous permettant " +"de lire votre mail par le web.
            Plus d'info sur la gestion des domaines " +"dans l'aide en ligne HELPID_200
            " + +#. FTP Accounts +msgid "quota_ftp" +msgstr "Comptes FTP" + +#. No ftp account found +msgid "err_ftp_1" +msgstr "Aucun compte ftp de trouvé." + +#. This ftp account does not exist +msgid "err_ftp_2" +msgstr "Ce compte ftp n'existe pas." + +#. The chosen prefix is not allowed +msgid "err_ftp_3" +msgstr "Le préfixe choisi n'est pas autorisé" + +#. This ftp account already exists +msgid "err_ftp_4" +msgstr "Ce compte ftp existe déjà !" + +#. Your ftp account quota is over. You cannot create more ftp accounts. +msgid "err_ftp_5" +msgstr "" +"Vous avez atteint votre quota de comptes ftp, vous ne pouvez plus en créer." + +#. The directory cannot be created. +msgid "err_ftp_6" +msgstr "Impossible de créer le répertoire." + +#. Voici la liste des comptes ftp ayant accès à votre compte. Cliquez sur +#. 'Modifier' pour changer le nom d'utilisateur, le mot de passe, ou le dossier +#. racine.
            Pour supprimer un compte, cochez la case correspondante et +#. cliquez sur le bouton 'Supprimer les comptes cochés'
            Pour pouvoir +#. accéder à vos fichiers avec un logiciel de ftp, vous devez créer au moins un +#. compte. Chaque compte est associé à un dossier, et n'aura donc accès qu'aux +#. fichiers situés dans ce dossier ou en dessous.
            Plus d'info sur le FTP +#. dans l'aide en ligne HELPID_100
            +msgid "hlp_ftp_list" +msgstr "" +"Voici la liste des comptes ftp ayant accès à votre compte. Cliquez sur " +"'Modifier' pour changer le nom d'utilisateur, le mot de passe, ou le " +"répertoire racine.
            Pour supprimer un compte, cochez la case " +"correspondante et cliquez sur le bouton 'Supprimer les comptes cochés'
            Pour pouvoir accéder à vos fichiers avec un logiciel de ftp, vous devez " +"créer au moins un compte. Chaque compte est associé à un répertoire, et " +"n'aura donc accès qu'aux fichiers situés dans ce répertoire ou en dessous. " +"
            Plus d'info sur le FTP dans l'aide en ligne HELPID_100
            " + +#. Vous n'avez actuellement aucun Compte FTP de disponible. Cliquez sur +#. 'Création d'un compte ftp' pour en créer un.
            Pour pouvoir accéder à vos +#. fichiers avec un logiciel de ftp, vous devez créer au moins un compte. +#. Chaque compte est associé à un dossier, et n'aura donc accès qu'aux fichiers +#. situés dans ce dossier ou en dessous.
            Plus d'info sur le FTP dans +#. l'aide en ligne HELPID_100
            +msgid "hlp_ftp_list_no" +msgstr "" +"Vous n'avez actuellement aucun Compte FTP de disponible. Cliquez sur " +"'Création d'un compte FTP' pour en créer un.
            Pour pouvoir accéder à vos " +"fichiers avec un logiciel de FTP, vous devez créer au moins un compte. " +"Chaque compte est associé à un répertoire, et n'aura donc accès qu'aux " +"fichiers situés dans ce répertoire ou en dessous.
            Plus d'info sur le " +"FTP dans l'aide en ligne HELPID_100
            " + +#. Pour ajouter un compte ftp, vous devez choisir un Nom d'utilisateur, un mot +#. de passe, et un répertoire racine
            Le nom d'utilisateur commence +#. toujours par votre nom de login ou le nom d'un de vos domaines.
            Le +#. répertoire racine, s'il n'existe pas, sera créé automatiquement.
            Note : +#. Le compte que vous créez ainsi aura accès en lecture et en écriture aux +#. fichiers situés dans le répertoire et tous ses sous-répertoires.
            Plus +#. d'info sur le FTP dans l'aide en ligne HELPID_100
            +msgid "hlp_ftp_add" +msgstr "" +"Pour ajouter un compte ftp, vous devez choisir un Nom d'utilisateur, un mot " +"de passe, et un répertoire racine
            Le nom d'utilisateur commence " +"toujours par votre nom de login ou le nom d'un de vos domaines.
            Le " +"répertoire racine, s'il n'existe pas, sera créé automatiquement.
            Note : " +"Le compte que vous créez ainsi aura accès en lecture et en écriture aux " +"fichiers situés dans le répertoire et tous ses sous-répertoires.
            Plus " +"d'info sur le FTP dans l'aide en ligne HELPID_100
            " + +#. An incompatible .htaccess file exists in this folder. +msgid "err_hta_1" +msgstr "Un fichier .htaccess incompatible est présent dans le répertoire." + +#. .htaccess parsed and syntaxically correct, a .htpassword file has been created. +msgid "err_hta_2" +msgstr ".htaccess reconnu et syntaxe correcte, un .htpassword à été créé." + +#. .htaccess parsed and syntaxically correct, a .htpasswd already exist. +msgid "err_hta_3" +msgstr ".htaccess reconnu et syntaxe correcte, .htpasswd existant." + +#. No protected folder +msgid "err_hta_4" +msgstr "Aucun répertoire protégé" + +#. I cannot delete the file '%s'/.htaccess +msgid "err_hta_5" +msgstr "Impossible de supprimer le fichier '%s'/.htaccess" + +#. I cannot delete the file '%s'/.htpasswd +msgid "err_hta_6" +msgstr "Impossible de supprimer le fichier '%s'/.htpasswd" + +#. The file .htaccess does not exist +msgid "err_hta_7" +msgstr "Le fichier .htaccess n'existe pas" + +#. The folder '%s' does not exist +msgid "err_hta_8" +msgstr "Le répertoire '%s' n'existe pas" + +#. The file '%s' is not correct +msgid "err_hta_9" +msgstr "Le fichier '%s' n'est pas valide" + +#. The user '%s' already exist for this folder +msgid "err_hta_10" +msgstr "L'utilisateur '%s' existe déja pour ce répertoire" + +#. Please enter a valid username +msgid "err_hta_11" +msgstr "Veuillez saisir un nom d'utilisateur valide" + +#. Cannot write inside the requested folder. Please check your permissions +msgid "err_hta_12" +msgstr "Impossible d'écrire dans le dossier concerné. Vérifiez vos permissions." + +#. Email Accounts +msgid "quota_mail" +msgstr "Comptes emails" + +#. DB connection impossible, please try again later. +msgid "err_mail_1" +msgstr "Connexion à la base de données impossible. Réessayez plus tard." + +#. No email on domain '%s' +msgid "err_mail_2" +msgstr "Aucun email sur le domaine '%s'" + +#. The email '%s' does not exist +msgid "err_mail_3" +msgstr "L'email '%s' n'existe pas." + +#. Please check 'pop account' and choose a password pop, or enter some +#. redirections, or both +msgid "err_mail_4" +msgstr "" +"Veuillez cocher 'compte pop' et choisir un mot de passe pop ou entrer " +"des redirections ou les deux" + +#. -- Server error --- Parameter is incorrect (%s) +msgid "err_mail_5" +msgstr "-- Erreur Serveur --- Paramètre incorrect (%s)" + +#. The domain '%s' does not exist. +msgid "err_mail_6" +msgstr "Le domaine '%s' n'existe pas." + +#. The email '%s' already exists. +msgid "err_mail_7" +msgstr "Le mail '%s' existe déjà" + +#. Your mail account quota is over. You cannot create more email accounts. +msgid "err_mail_8" +msgstr "" +"Vous avez atteint votre quota de comptes email, vous ne pouvez plus en créer." + +#. The domain '%s' does not exist. +msgid "err_mail_9" +msgstr "Le domaine '%s' existe déjà." + +#. -- Programm error -- Mail quota does not exist +msgid "err_mail_10" +msgstr "-- Erreur de programmation -- Le quota Mail n'existe pas" + +#. Please enter an Email address +msgid "err_mail_11" +msgstr "Veuillez entrez un Email" + +#. Please enter a pop password +msgid "err_mail_12" +msgstr "Veuillez entrer un mot de passe pop" + +#. Please enter a valid email +msgid "err_mail_13" +msgstr "Veuillez entrer un Email valide" + +#. One or more email redirection are invalid +msgid "err_mail_14" +msgstr "Un ou plusieurs Email de redirection ne sont pas valides" + +#. This mail is not a pop account. It's impossible to change the password ! +msgid "err_mail_15" +msgstr "" +"Ce mail n'est pas un compte pop, il est impossible d'en changer le mot de " +"passe !" + +#. OK +msgid "err_err_0" +msgstr "OK" + +#. The error message does not exist (%s) +msgid "err_err_1" +msgstr "Le message d'erreur n'existe pas (%s)" + +#. This is a date representation : parameters are the date as follow : +#. $d,$m,$y,$h,$i,$hh,$am +#. 1 2 3 4 5 6 7 +#. hh is the hour in 12 hours format, and am is 'am' or 'pm'. +#. eg: english : %3$d/%1$d/%2$d, at %6$d:%5$d %7$s +msgid "the %3$d-%2$d-%1$d at %4$d:%5$d" +msgstr "le %1$d/%2$d/%3$d, à %4$dh%5$d" + +#. User or password incorrect +msgid "err_mem_1" +msgstr "Utilisateur ou mot de passe incorrect" + +#. This account is locked, contact the administrator +msgid "err_mem_2" +msgstr "Compte Verrouillé, contacter l'administrateur" + +#. Cookie incorrect, please accept the session cookie +msgid "err_mem_3" +msgstr "Cookie incorrect, acceptez les cookies" + +#. Session unknown, contact the administrator +msgid "err_mem_4" +msgstr "Session inexistante, contacter l'administrateur" + +#. IP address incorrect, please contact the administrator +msgid "err_mem_5" +msgstr "IP incorrecte, contacter l'administrateur" + +# PROBLEME : il y avait 2 fois le 5, les autres messages doivent surement etre décalés (TODO) +#. The old password is incorrect +#. PROBLEME : il y avait 2 fois le 5, les autres messages doivent surement etre décalés (TODO) +msgid "err_mem_6" +msgstr "L'ancien mot de passe est incorrect" + +#. The new passwords are differents, please retry +msgid "err_mem_7" +msgstr "Les deux nouveaux mots de passe sont différents" + +#. A password must be at least 3 characters long. +msgid "err_mem_8" +msgstr "Un mot de passe doit faire au moins 3 caractères" + +#. The information you entered is incorrect +msgid "err_mem_9" +msgstr "Les données entrées sont incorrectes" + +#. You are not allowed to change your password. +msgid "err_mem_11" +msgstr "Vous ne pouvez pas changer votre mot de passe" + +#. You must be a system administrator to do this +msgid "err_mem_12" +msgstr "" +"Vous devez être administrateur pour pouvoir modifier vos préférences " +"administrateur." + +# Please do NOT translate those strings to each language. Use the original language instead +#. Français (France) +#. Please do NOT translate those strings to each language. Use the original language instead +msgid "fr_FR" +msgstr "Français (France)" + +#. Français (Canada) +#. Please do NOT translate those strings to each language. Use the original language instead +msgid "fr_CA" +msgstr "Français (Canada)" + +#. English (United States) +#. Please do NOT translate those strings to each language. Use the original language instead +msgid "en_US" +msgstr "English (United States)" + +#. English (United Kingdom) +#. Please do NOT translate those strings to each language. Use the original language instead +msgid "en_UK" +msgstr "English (United Kingdom)" + +#. Deutsch (Germany) +#. Please do NOT translate those strings to each language. Use the original language instead +msgid "de_DE" +msgstr "Deutsch (Germany)" + +#. Español (Spania) +#. Please do NOT translate those strings to each language. Use the original language instead +msgid "es_ES" +msgstr "Español (Spania)" + +#. Español (Venezuela) +#. Please do NOT translate those strings to each language. Use the original language instead +msgid "es_VE" +msgstr "Español (Venezuela)" + +#. OK +msgid "err_quota_0" +msgstr "OK" + +#. Error writing the quota entry ! +msgid "err_quota_1" +msgstr "Les quotas disque ne sont pas activés sur le serveur" + +#. MySQL Databases +msgid "quota_mysql" +msgstr "Bases de données MySQL" + +#. MySQL Users +msgid "quota_mysql_users" +msgstr "Utilisateurs MySQL" + +#. Disk space +msgid "quota_web" +msgstr "Espace disque (Ko)" + +#. Data base name can contain only digits or lowercase alphabetic characters +msgid "err_mysql_2" +msgstr "" +"Le nom de la base de données ne peut contenir que des chiffres ou lettres " +"minuscules." + +#. The database does not exist, you'll get an access by creating it. +msgid "err_mysql_3" +msgstr "Cette base de données existe déjà, utilisez un autre nom." + +#. This database already exists! +msgid "err_mysql_4" +msgstr "Cette base de données n'existe pas." + +#. Your backup number is incorrect. +msgid "err_mysql_5" +msgstr "Le nombre de sauvegarde est incorrect." + +#. The folder is incorrect! +msgid "err_mysql_6" +msgstr "Le répertoire est incorrect !" + +#. The file name you chose does not exist or is incorrect. +msgid "err_mysql_7" +msgstr "Vous n'avez aucune base, vous ne pouvez pas changer le mot de passe" + +#. The password is too long (16 chars max) +msgid "err_mysql_8" +msgstr "Le mot de passe est trop long (16 caractères maximum)" + +#. The file is incorrect or does not exist. +msgid "err_mysql_9" +msgstr "Le fichier entré n'existe pas ou est incorect." + +#. Your cannot create your main database : you still have other dbs ! +msgid "err_mysql_10" +msgstr "" +"Erreur : vous ne pouvez créer votre base principale : il vous reste " +"d'autres bases !" + +#. You have no database, click on 'Databases' to create the first one +msgid "err_mysql_11" +msgstr "" +"Vous n'avez aucune base de données, cliquez sur 'Bases de données' pour en " +"créer une" + +#. The data base name is too long (64 chars max) +msgid "err_mysql_12" +msgstr "Le nom de la base de données est trop long (64 caractères maximum)" + +#. You cannot create more MySQL users +msgid "err_mysql_13" +msgstr "" +"Vous avez atteint votre quota d'utilisateurs MySQL, vous ne pouvez plus en " +"créer" + +#. MySQL users can only have a-z and 0-9 characters. +msgid "err_mysql_14" +msgstr "" +"Le nom d'utilisateur ne peut contenir que des chiffres et/ou lettres " +"minuscules" + +#. MySQL users must be less than 16 characters long. +msgid "err_mysql_15" +msgstr "Nom d'utilisateur trop long (16 caractères maximum)" + +#. This MySQL user already exists. +msgid "err_mysql_16" +msgstr "Un utilisateur du même nom existe déjà" + +#. Passwords do not match. +msgid "err_mysql_17" +msgstr "Les mot de passes ne correspondent pas" + +#. The requested MySQL user does not exist. +msgid "err_mysql_18" +msgstr "L'utilisateur n'existe pas" + +#. You have no MySQL users at the moment. +msgid "err_mysql_19" +msgstr "Aucun utilisateur n'est défini dans MySQL." + +#. Your MySQL backups are stored in the chosen folder from db.sql.1 to db.sql.19
            your database name replaces 'db'.
            WARNING: If you modify backup settings (backups, compression...) previous +#. backups may remain in the backup folder. Go to the file manager to delete +#. them. +msgid "hlp_sql_bck" +msgstr "" +"Les sauvegardes de votre base MySQL sont stockées dans le répertoire choisi " +"sous le nom db.sql.1 à db.sql.19
            où 'db' est " +"remplacé par le nom de la base de données.
            ATTENTION :
            - " +"Le répertoire doit déja exister, si ce n'est pas le cas créez le au " +"préalable
            - si vous modifiez les paramètres de la sauvegarde (nombre de " +"sauvegardes, compression ...) des vieilles sauvegardes peuvent rester dans " +"le répertoire concerné. Vous pouvez les effacer dans le gestionnaire de " +"fichiers." + +#. Web Statistics +msgid "quota_sta2" +msgstr "Statistiques Web Brutes" + +#. You cannot create more raw statistic set. +msgid "err_sta2_1" +msgstr "" +"Vous avez atteint votre quota de jeux de statistiques, vous ne pouvez plus " +"en créer." + +#. There is currently no raw statistic set. +msgid "err_sta2_2" +msgstr "Aucune jeu de statistiques brutes" + +#. The requested raw statistic set has not been found. +msgid "err_sta2_3" +msgstr "Jeu de statistiques brutes non trouvé" + +#. File or folder name is incorrect +msgid "err_bro_1" +msgstr "Répertoire ou fichier incorrect !" + +#. You cannot move or copy a file to the same folder +msgid "err_bro_2" +msgstr "Vous ne pouvez pas déplacer un fichier dans le même répertoire !" + +#. Cannot create the requested file. Please check permissions. +msgid "err_bro_3" +msgstr "Impossible de créer le fichier demandé. Vérifiez les permissions." + +#. Cannot create the requested directory. Please check permissions. +msgid "err_bro_4" +msgstr "Impossible de créer le répertoire demandé. Vérifiez les permissions." + +#. Cannot edit the requested file. Please check permissions. +msgid "err_bro_5" +msgstr "Impossible de modifier le fichier demandé. Vérifiez les permissions." + +#. Cannot read the requested file. Please check permissions. +msgid "err_bro_6" +msgstr "Impossible de lire le fichier demandé. Vérifiez les permissions." + +#. If we manage your DNS
            You can manage your mails elsewhere if you want +#. (MX field).
            Write %s in this field if your mail +#. must be managed by %s
            or put the IP address or name of the mail server +#. used to manage your mails.Warning : if you put nothing in this field, +#. your mails will be unavailable +msgid "help_dns_mx %s %s" +msgstr "" + +#. If we don't manage the DNS for this domain
            do we manage your mails? +msgid "help_dns_mail" +msgstr "" + +#. If you want to delete the domain %s, click the button below.Warning : this +#. delete all the ftp, mails, mailing-lists ... associated with thisdomain and +#. all its subdomains! +msgid "help_domain_del %s" +msgstr "" + +#. You can create various databases
            Click on 'SQL Admin' in the menu to +#. manage them
            or use the table below to backup, retrieve or delete them: +msgid "help_sql_list_ok" +msgstr "" + +#. Your haven't created your main database yet, please enter a password to create it. +msgid "help_sql_list_no" +msgstr "" + +# $d,$m,$y,$h,$i,$hh,$am +# 1 2 3 4 5 6 7 +#. This is a date representation : parameters are the date as follow : +#. $d,$m,$y,$h,$i,$hh,$am +#. 1 2 3 4 5 6 7 +#. hh is the hour in 12 hours format, and am is 'am' or 'pm'. +#. eg: english : %3$d/%1$d/%2$d, at %6$d:%5$d %7$s +msgid "%3$d-%2$d-%1$d %4$d:%5$d" +msgstr "%1$d/%2$d/%3$d %4$d:%5$d" + +msgid "1 column, detailed" +msgstr "1 colonne, détaillée" + +msgid "2 columns, short" +msgstr "2 colonnes, court" + +msgid "3 columns, short" +msgstr "3 colonnes, court" + +msgid "Go back to the file manager" +msgstr "Retourner au gestionnaire de fichiers" + +msgid "Edit the newly created file" +msgstr "Editer le nouveau fichier" + +msgid "hlp_login" +msgstr "" +"Vous pouvez aussi consulter l'aide en ligne sur l'accueil du panneau de " +"contrôle HELPID_300
            " + +msgid "err_admin_14" +msgstr "" +"La politique de mot de passe demandée n'a pas été trouvée, Ce password " +"est refusé (c'est une erreur de programmation ...)" + +msgid "err_admin_15" +msgstr "" +"Le mot de passe est trop court selon votre politique de mot de passe, " +"merci de vérifier" + +msgid "err_admin_16" +msgstr "" +"Le mot de passe est trop long selon votre politique de mot de passe, " +"merci de vérifier" + +msgid "err_admin_17" +msgstr "" +"Le mot de passe ne peut pas être le même que le nom d'utilisateur (ou " +"quelque chose de similaire) selon votre politique de mot de passe, merci " +"de vérifier" + +msgid "err_admin_18" +msgstr "" +"Le mot de passe doit contenir des caractères de %s classes différentes " +"selon votre politique de mot de passe (il n'en contient que %s), merci de " +"vérifier" + +msgid "err_mail_16" +msgstr "Ce compte esclave MX existe déjà" + +msgid "err_mysql_20" +msgstr "Le mot de passe est obligatoire" + +msgid "err_mysql_21" +msgstr "Le nom d'utilisateur ne peut pas être vide" + +# $d,$m,$y +# 1 2 3 +msgid "%3$d-%2$d-%1$d" +msgstr "%1$02d/%2$02d/%3$04d" + +msgid "AlternC's account password" +msgstr "Mots de passe des comptes AlternC" + +msgid "POP/IMAP account passwords" +msgstr "Mots de passe des comptes POP/IMAP" + +msgid "Protected folders passwords" +msgstr "Mots de passe des dossiers protégés" + +msgid "AlternC panel access" +msgstr "Accès au bureau AlternC" + +msgid "Locally hosted" +msgstr "Géré en local" + +msgid "URL redirection" +msgstr "Redirection vers une url" + +msgid "IPv4 redirect" +msgstr "Redirection vers une IPv4" + +msgid "Webmail access" +msgstr "Accès au webmail" + +msgid "IPv6 redirect" +msgstr "Redirection vers une IPv6" + +msgid "CNAME DNS entry" +msgstr "Entrée DNS CNAME" + +msgid "TXT DNS entry" +msgstr "Entrée DNS TXT" + +msgid "MX DNS entry" +msgstr "Entrée DNS MX" + +msgid "secondary MX DNS entry" +msgstr "Entrée DNS MX secondaire" + +msgid "Default mail server" +msgstr "Serveur de mail par défaut" + +msgid "Default backup mail server" +msgstr "Serveur de mail de secours" + diff --git a/stable-1.0/bureau/locales/fr_FR/LC_MESSAGES/messages.po b/stable-1.0/bureau/locales/fr_FR/LC_MESSAGES/messages.po new file mode 100644 index 00000000..33289130 --- /dev/null +++ b/stable-1.0/bureau/locales/fr_FR/LC_MESSAGES/messages.po @@ -0,0 +1,3357 @@ +# French AlternC Translation +# Copyright (c) 2002 the AlternC Development Team +# +# $Id: admin.po,v 1.10 2004/11/01 15:55:44 anonymous Exp $ +#: ../class/lang_env.php:61 +msgid "" +msgstr "" +"Project-Id-Version: $Id: admin.po,v 1.10 2004/11/01 15:55:44 anonymous Exp " +"$\n" +"Report-Msgid-Bugs-To: i18n@alternc.org\n" +"POT-Creation-Date: 2006-05-09 17:16+0200\n" +"PO-Revision-Date: 2002-06-16 13:50CEST\n" +"Last-Translator: Benjamin Sonntag \n" +"Language-Team: French \n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Emacs 21\n" + +#: ../admin/adm_add.php:36 ../admin/adm_deactivate.php:41 +#: ../admin/adm_defquotas.php:35 ../admin/adm_dnsweberror.php:33 +#: ../admin/adm_doadd.php:35 ../admin/adm_dodefquotas.php:35 +#: ../admin/adm_dodel.php:33 ../admin/adm_dodel.php:45 +#: ../admin/adm_doedit.php:35 ../admin/adm_doedit.php:42 +#: ../admin/adm_domlock.php:33 ../admin/adm_doms.php:33 +#: ../admin/adm_domstypedoedit.php:4 ../admin/adm_domstypeedit.php:32 +#: ../admin/adm_domstype.php:33 ../admin/adm_domstyperegenerate.php:4 +#: ../admin/adm_donosu.php:33 ../admin/adm_dorenew.php:34 +#: ../admin/adm_dorenew.php:38 ../admin/adm_dosu.php:33 +#: ../admin/adm_edit.php:36 ../admin/adm_edit.php:48 ../admin/adm_list.php:37 +#: ../admin/adm_list.php:58 ../admin/adm_login.php:74 +#: ../admin/adm_login.php:86 ../admin/adm_mxaccount.php:33 +#: ../admin/adm_panel.php:33 ../admin/adm_passpolicy.php:30 +#: ../admin/adm_quotadoedit.php:33 ../admin/adm_quotaedit.php:34 +#: ../admin/adm_slaveaccount.php:33 ../admin/adm_slaveip.php:33 +#: ../admin/adm_tldadd.php:33 ../admin/adm_tlddoadd.php:33 +#: ../admin/adm_tlddoedit.php:33 ../admin/adm_tldedit.php:33 +#: ../admin/adm_tld.php:33 ../admin/adm_variables.php:33 +#: ../admin/quotas_users.php:10 ../class/reset_stats_conf.php:6 +msgid "This page is restricted to authorized staff" +msgstr "Cette page est réservée aux administrateurs" + +#: ../admin/adm_add.php:46 +msgid "New AlternC account" +msgstr "Créer un compte AlternC" + +#: ../admin/adm_add.php:56 ../admin/adm_edit.php:69 +#: ../admin/adm_quotaedit.php:68 ../admin/ftp_add.php:54 +#: ../admin/ftp_edit.php:59 ../admin/ftp_list.php:72 +#: ../admin/hta_adduser.php:53 ../admin/hta_edit.php:62 +#: ../admin/hta_edit.php:102 ../admin/index.php:76 +#: ../admin/sql_getparam.php:50 ../admin/sql_list.php:94 +#: ../admin/sql_passchg.php:51 ../admin/sql_users_add.php:64 +msgid "Username" +msgstr "Utilisateur" + +#: ../admin/adm_add.php:60 +msgid "Initial password" +msgstr "Mot de passe initial" + +#: ../admin/adm_add.php:64 ../admin/adm_edit.php:89 ../admin/ftp_add.php:65 +#: ../admin/ftp_edit.php:71 ../admin/hta_adduser.php:61 +#: ../admin/hta_edit.php:110 ../admin/hta_edituser.php:55 +#: ../admin/mail_add.php:71 ../admin/mail_edit.php:79 +#: ../admin/sql_users_add.php:72 ../admin/sql_users_password.php:59 +msgid "Confirm password" +msgstr "Confirmer le mot de passe" + +#: ../admin/adm_add.php:68 ../admin/adm_edit.php:93 +msgid "Can he change its password" +msgstr "Peut-il changer son mot de passe ?" + +#: ../admin/adm_add.php:70 ../admin/adm_dodefquotas.php:73 +#: ../admin/adm_dodel.php:81 ../admin/adm_domstype.php:83 +#: ../admin/adm_domstype.php:84 ../admin/adm_domstype.php:85 +#: ../admin/adm_edit.php:78 ../admin/adm_edit.php:95 +#: ../admin/adm_passpolicy.php:112 ../admin/adm_passpolicy.php:158 +#: ../admin/bro_main.php:94 ../admin/dom_dodel.php:74 +#: ../admin/dom_edit.php:182 ../admin/dom_edit.php:194 +#: ../admin/dom_subdel.php:71 ../admin/mail_add.php:65 +#: ../admin/mail_edit.php:73 ../admin/sql_bck.php:87 ../admin/sql_del.php:81 +#: ../admin/sql_users_del.php:70 ../admin/trash_dateselect.php:39 +msgid "No" +msgstr "Non" + +#: ../admin/adm_add.php:71 ../admin/adm_dodefquotas.php:72 +#: ../admin/adm_dodel.php:80 ../admin/adm_domstype.php:83 +#: ../admin/adm_domstype.php:84 ../admin/adm_domstype.php:85 +#: ../admin/adm_edit.php:79 ../admin/adm_edit.php:96 +#: ../admin/adm_passpolicy.php:113 ../admin/adm_passpolicy.php:158 +#: ../admin/bro_main.php:93 ../admin/dom_dodel.php:74 +#: ../admin/dom_edit.php:181 ../admin/dom_edit.php:193 +#: ../admin/dom_subdel.php:70 ../admin/mail_add.php:66 +#: ../admin/mail_edit.php:74 ../admin/sql_bck.php:88 ../admin/sql_del.php:81 +#: ../admin/sql_users_del.php:70 ../admin/trash_dateselect.php:40 +msgid "Yes" +msgstr "Oui" + +#: ../admin/adm_add.php:75 ../admin/adm_edit.php:100 +msgid "Notes" +msgstr "Notes" + +#: ../admin/adm_add.php:79 ../admin/adm_edit.php:104 +msgid "Surname" +msgstr "Nom" + +#: ../admin/adm_add.php:79 ../admin/adm_edit.php:104 +msgid "First Name" +msgstr "Prénom" + +#: ../admin/adm_add.php:83 ../admin/adm_edit.php:108 ../admin/mail_add.php:60 +#: ../admin/mail_list.php:104 +msgid "Email address" +msgstr "Adresse Email" + +#: ../admin/adm_add.php:87 ../admin/adm_dodefquotas.php:43 +#: ../admin/adm_dodefquotas.php:45 ../admin/adm_dodefquotas.php:52 +#: ../admin/adm_dodefquotas.php:54 ../admin/adm_edit.php:112 +msgid "Account type" +msgstr "Type de compte" + +#: ../admin/adm_add.php:105 +#, php-format +msgid "Install the domain" +msgstr "Installer le domaine" + +#: ../admin/adm_add.php:121 +msgid "Create this AlternC account" +msgstr "Créer ce compte AlternC" + +#: ../admin/adm_add.php:122 ../admin/adm_deactivate.php:61 +#: ../admin/adm_domstypeedit.php:122 ../admin/adm_edit.php:131 +#: ../admin/adm_quotaedit.php:87 ../admin/adm_tldadd.php:65 +#: ../admin/adm_tldedit.php:70 ../admin/bro_pref.php:134 +#: ../admin/browseforfolder.php:136 ../admin/ftp_add.php:68 +#: ../admin/ftp_edit.php:75 ../admin/hta_adduser.php:67 +#: ../admin/mail_add.php:88 ../admin/mail_edit.php:98 ../admin/sql_bck.php:105 +#: ../admin/sql_passchg.php:57 ../admin/sql_users_add.php:78 +#: ../admin/sql_users_password.php:65 +msgid "Cancel" +msgstr "Annuler" + +#: ../admin/adm_deactivate.php:36 +msgid "Missing uid" +msgstr "Utilisateur manquant" + +#: ../admin/adm_deactivate.php:47 +msgid "User does not exist" +msgstr "L'utilisateur n'existe pas" + +#: ../admin/adm_deactivate.php:52 ../admin/adm_deactivate.php:60 +msgid "Confirm" +msgstr "Confirmer" + +#: ../admin/adm_deactivate.php:53 +msgid "WARNING: experimental feature, use at your own risk" +msgstr "" +"ATTENTION: fonctionalité expérimentale, utilisez à vos risques et périls" + +#: ../admin/adm_deactivate.php:54 +msgid "" +"The following domains will be deactivated and redirected to the URL entered " +"in the following box. A backup of the domain configuration will be displayed " +"as a serie of SQL request that you can run to restore the current " +"configuration if you want. Click confirm if you are sure you want to " +"deactivate all this user's domains." +msgstr "" +"Les domaines suivants vont être désactivés et redirigés vers l'URL entré " +"dans la boîte ci-bas. Une sauvegarde de votre configuration sera affichée " +"comme une série de requêtes SQL que vous pouvez recharger pour restaurer la " +"configuration actuelle. Cliquez confirmer si vous êtes certain que vous " +"voulez désactiver tous les domaines de cet utilisateur." + +#: ../admin/adm_deactivate.php:59 +msgid "Redirection URL:" +msgstr "Redirection vers l'URL : " + +#: ../admin/adm_deactivate.php:64 +msgid "Domains of user: " +msgstr "Domaines de l'utilisateur: " + +#: ../admin/adm_deactivate.php:67 +msgid "Missing redirect url." +msgstr "URL de redirection manquant." + +#: ../admin/adm_deactivate.php:87 +#, php-format +msgid "-- Redirecting all domains and subdomains of the user %s to %s\n" +msgstr "" +"-- Rediriger tous les domaines et sous-domaines de l'utilisateur %s vers %s\n" + +#: ../admin/adm_defquotas.php:42 ../admin/adm_panel.php:54 +msgid "Change the default quotas" +msgstr "Changer les quotas par défaut" + +#: ../admin/adm_defquotas.php:55 +msgid "Add account type" +msgstr "Ajouter ce type de compte" + +#: ../admin/adm_defquotas.php:70 +msgid "Delete account type" +msgstr "Effacer ce type de compte" + +#: ../admin/adm_defquotas.php:75 +msgid "" +"Here is the list of the quotas on the server for the new accounts. If you " +"want to change them, enter new values" +msgstr "" +"Voici la liste des quotas par défaut sur ce serveur pour les nouveaux " +"comptes." + +#: ../admin/adm_defquotas.php:89 +msgid "Accounts of type" +msgstr "Type de compte" + +#: ../admin/adm_defquotas.php:91 ../admin/adm_list.php:128 +#: ../admin/adm_list.php:173 ../admin/adm_list.php:193 +#: ../admin/menu_quota.php:52 +msgid "Quotas" +msgstr "Quotas" + +#: ../admin/adm_defquotas.php:91 +msgid "Default Value" +msgstr "Valeur par défaut" + +#: ../admin/adm_defquotas.php:109 +msgid "Edit the default quotas" +msgstr "Modifier les quotas par défaut" + +#: ../admin/adm_dnsweberror.php:40 +msgid "Domains and Websites having errors" +msgstr "Noms de domaines et sites en erreur" + +#: ../admin/adm_dnsweberror.php:50 +msgid "List of the websites having errors in the domain database." +msgstr "Liste des sites web en erreur dans la base des domaines." + +#: ../admin/adm_dnsweberror.php:54 ../admin/adm_dnsweberror.php:87 +msgid "Uid" +msgstr "Uid" + +#: ../admin/adm_dnsweberror.php:55 ../admin/adm_dnsweberror.php:88 +#: ../admin/adm_list.php:124 ../admin/adm_list.php:207 +#: ../admin/adm_list.php:208 ../admin/adm_list.php:209 +#: ../admin/quotas_oneuser.php:8 ../admin/quotas_users.php:168 +msgid "Account" +msgstr "Compte" + +#: ../admin/adm_dnsweberror.php:56 ../admin/adm_dnsweberror.php:89 +#: ../admin/dom_add.php:57 ../admin/sta2_list.php:58 +msgid "Domain name" +msgstr "Nom de domaine" + +#: ../admin/adm_dnsweberror.php:57 +msgid "FQDN" +msgstr "FQDN" + +#: ../admin/adm_dnsweberror.php:58 ../admin/adm_variables.php:57 +msgid "Value" +msgstr "Valeur" + +#: ../admin/adm_dnsweberror.php:59 ../admin/adm_domstypeedit.php:76 +#: ../admin/adm_domstype.php:59 +msgid "Description" +msgstr "Description" + +#: ../admin/adm_dnsweberror.php:60 +msgid "Web Result field" +msgstr "champ Web Result" + +#: ../admin/adm_dnsweberror.php:84 +msgid "List of the domain names having errors in the domain database." +msgstr "Liste des noms de domaines en erreur dans la base des domaines." + +#: ../admin/adm_dnsweberror.php:90 +msgid "DNS Result field" +msgstr "champ DNS Result" + +#: ../admin/adm_doadd.php:40 ../admin/adm_doedit.php:47 +#: ../admin/ftp_doadd.php:33 ../admin/ftp_doedit.php:36 +#: ../admin/hta_doadduser.php:33 ../admin/hta_doedituser.php:41 +#: ../admin/mail_doadd.php:44 ../admin/mail_doedit.php:49 +msgid "Passwords do not match" +msgstr "Les mots de passe ne correspondent pas" + +#: ../admin/adm_doadd.php:71 +msgid "The new member has been successfully created" +msgstr "Le compte AlternC a été ajouté avec succès" + +#: ../admin/adm_dodefquotas.php:43 +msgid "added" +msgstr "ajouté" + +#: ../admin/adm_dodefquotas.php:45 +msgid "could not be added" +msgstr "n'a pas pu être ajouté" + +#: ../admin/adm_dodefquotas.php:52 +msgid "deleted" +msgstr "effacé" + +#: ../admin/adm_dodefquotas.php:54 +msgid "could not be deleted" +msgstr "n'a pas pu être effacé" + +#: ../admin/adm_dodefquotas.php:63 +#, php-format +msgid "Deleting quota %s" +msgstr "Suppression du quota %s" + +#: ../admin/adm_dodefquotas.php:69 +msgid "WARNING : Confirm the deletion of the quota" +msgstr "ATTENTION : Etes-vous sur de vouloir supprimer le quota" + +#: ../admin/adm_dodefquotas.php:92 +msgid "Default quotas successfully changed" +msgstr "Les quotas par défaut ont été modifiés avec succès" + +#: ../admin/adm_dodefquotas.php:94 +msgid "Default quotas could not be set." +msgstr "Les quotas par défaut n'ont pas pu être modifiés" + +#: ../admin/adm_dodel.php:49 +#, php-format +msgid "Member '%s' does not exist" +msgstr "Le membre '%s' n'existe pas" + +#: ../admin/adm_dodel.php:51 +#, php-format +msgid "Member %s successfully deleted" +msgstr "Le compte AlternC '%s' a été effacé avec succès" + +#: ../admin/adm_dodel.php:58 +msgid "Please check the accounts you want to delete" +msgstr "Veuillez cocher les comptes que vous souhaitez effacer" + +#: ../admin/adm_dodel.php:66 +#, php-format +msgid "Deleting users" +msgstr "Supprimer un utilisateur" + +#: ../admin/adm_dodel.php:70 +msgid "WARNING : Confirm the deletion of the users" +msgstr "ATTENTION : Confirmez-vous la suppression de cette utilisateur" + +#: ../admin/adm_doedit.php:60 +msgid "The member has been successfully edited" +msgstr "Le compte AlternC a été modifié avec succès" + +#: ../admin/adm_doms.php:40 ../admin/adm_panel.php:53 +msgid "Manage installed domains" +msgstr "Liste des domaines installés" + +#: ../admin/adm_doms.php:53 +msgid "" +"Here is the list of the domains installed on this server. You can remove a " +"domain if it does not exist or does not point to our server anymore. You can " +"also set the 'Lock' flag on a domain so that the user will not be able to " +"change any DNS parameter or delete this domain from his account." +msgstr "" +"Voici la liste des domaines installés sur ce serveur. Vous pouvez Supprimer " +"un domaine s'il n'existe plus, ou s'il ne pointe plus vers ce serveur. Vous " +"pouvez aussi 'Verrouiller' un domaine afin que l'utilisateur ne puisse plus " +"modifier les paramètres DNS de ce domaine ou l'effacer." + +#: ../admin/adm_doms.php:56 +msgid "" +"The domain OK column are green when the domain exists in the worldwide " +"registry and has a proper NS,MX and IP depending on its configuration. It is " +"red if we have serious doubts about its NS, MX or IP configuration. Contact " +"the user of this domain or a system administrator." +msgstr "" +"La colonne OK? est verte quand le domaine existe dans le registre DNS " +"mondial et que sa configuration IP, NS et MX est correcte. Il est rouge " +"lorsque le serveur a de sérieux doutes sur sa configuration NS, MX ou IP. " +"Vérifiez auprès du propriétaire de ce domaine, et si besoin contactez un " +"administrateur système." + +#: ../admin/adm_doms.php:59 +msgid "If you want to force the check of NS, MX, IP on domains, click the link" +msgstr "" +"Si vous voulez forcer la vérification des NS, MX et IP des domaines, " +"cliquez le lien" + +#: ../admin/adm_doms.php:59 +msgid "Show domain list with refreshed checked NS, MX, IP information" +msgstr "" +"Afficher la liste des domaines avec des informations NS, MX et IP à jour." + +#: ../admin/adm_doms.php:63 ../admin/adm_mxaccount.php:81 +#: ../admin/adm_slaveaccount.php:80 ../admin/adm_slaveip.php:80 +msgid "Action" +msgstr "Action" + +#: ../admin/adm_doms.php:63 +msgid "Domain" +msgstr "Domaine" + +#: ../admin/adm_doms.php:63 +msgid "Creator" +msgstr "Créateur" + +#: ../admin/adm_doms.php:63 ../admin/adm_doms.php:81 ../admin/adm_list.php:166 +#: ../admin/adm_list.php:191 +msgid "Connect as" +msgstr "Se connecter" + +#: ../admin/adm_doms.php:63 +msgid "OK?" +msgstr "OK ?" + +#: ../admin/adm_doms.php:63 ../admin/dom_edit.php:97 +msgid "Status" +msgstr "État" + +#: ../admin/adm_doms.php:72 +msgid "Locked Domain" +msgstr "Domaine verrouillé" + +#: ../admin/adm_doms.php:75 +msgid "Unlock" +msgstr "Déverrouiller" + +#: ../admin/adm_doms.php:75 +msgid "Lock" +msgstr "Verrouiller" + +#: ../admin/adm_domstypeedit.php:58 +msgid "Edit a domain type" +msgstr "Modification d'un type de domaine" + +#: ../admin/adm_domstypeedit.php:72 ../admin/adm_domstype.php:58 +msgid "Name" +msgstr "Nom" + +#: ../admin/adm_domstypeedit.php:80 +msgid "Target type" +msgstr "Type de destination" + +#: ../admin/adm_domstypeedit.php:90 ../admin/adm_domstype.php:61 +msgid "Entry" +msgstr "Entrée" + +#: ../admin/adm_domstypeedit.php:94 +msgid "Compatibility" +msgstr "Compatibilité" + +#: ../admin/adm_domstypeedit.php:94 ../admin/adm_domstype.php:62 +msgid "Enter comma-separated name of other types" +msgstr "Entrez la liste séparée par des virgules des autres types" + +#: ../admin/adm_domstypeedit.php:98 ../admin/dom_edit.php:125 +msgid "Enabled" +msgstr "Actif" + +#: ../admin/adm_domstypeedit.php:108 +msgid "Do only a DNS entry" +msgstr "Crée seulement l'entrée DNS" + +#: ../admin/adm_domstypeedit.php:112 +msgid "Domain must have our DNS" +msgstr "Le domaine doit avoir nos DNS" + +#: ../admin/adm_domstypeedit.php:116 +msgid "Is it an advanced option?" +msgstr "Est-ce une option avancée ?" + +#: ../admin/adm_domstypeedit.php:121 +msgid "Change this domain type" +msgstr "Modifier ce type de domaine" + +#: ../admin/adm_domstype.php:40 ../admin/adm_panel.php:65 +msgid "Manage domains type" +msgstr "Gestion des types de domaines" + +#: ../admin/adm_domstype.php:42 +msgid "" +"If you don't know what this page is about, don't touch anything, and read " +"AlternC documentation about domain types" +msgstr "Si vous ne savez pas de quoi parle cette page, ne touchez à rien." +"et lisez la documentation d'AlternC sur les types de domaines" + +#: ../admin/adm_domstype.php:52 +msgid "Here is the list of domain types." +msgstr "Voici la liste des types de domaines." + +#: ../admin/adm_domstype.php:54 +msgid "Create a domain type" +msgstr "Création d'un type de domaine" + +#: ../admin/adm_domstype.php:60 +msgid "Target" +msgstr "Cible" + +#: ../admin/adm_domstype.php:62 +msgid "Compatible with" +msgstr "Compatible avec" + +#: ../admin/adm_domstype.php:63 +msgid "Enabled?" +msgstr "Actif ? " + +#: ../admin/adm_domstype.php:64 +msgid "Only DNS?" +msgstr "Ne créer que l'entrée DNS ?" + +#: ../admin/adm_domstype.php:65 +msgid "Need to be DNS?" +msgstr "Le domaine doit-il avoir nos DNS ?" + +#: ../admin/adm_domstype.php:66 +msgid "Advanced?" +msgstr "Est-ce une fonctionnalité avancée ?" + +#: ../admin/adm_domstype.php:75 ../admin/adm_list.php:170 +#: ../admin/adm_list.php:192 ../admin/adm_passpolicy.php:152 +#: ../admin/adm_tld.php:76 ../admin/dom_edit.php:106 ../admin/ftp_list.php:82 +#: ../admin/mail_list.php:113 ../admin/sta2_list.php:68 +msgid "Edit" +msgstr "Modifier" + +#: ../admin/adm_domstype.php:76 +msgid "Regenerate" +msgstr "Régénérer" + +#: ../admin/adm_donosu.php:45 +msgid "This account is now a normal account" +msgstr "Ce compte est maintenant un compte normal" + +#: ../admin/adm_dorenew.php:46 +msgid "The member has been successfully renewed" +msgstr "Le compte AlternC a été renouvelé avec succès" + +#: ../admin/adm_dosu.php:45 +msgid "This account is now an administrator account" +msgstr "Ce compte est maintenant un compte administrateur" + +#: ../admin/adm_edit.php:57 +msgid "Member Edition" +msgstr "Modification d'un compte AlternC" + +#: ../admin/adm_edit.php:73 +msgid "Account Enabled?" +msgstr "Compte Actif ? " + +#: ../admin/adm_edit.php:76 +msgid "You cannot disable your own account." +msgstr "Vous ne pouvez pas désactiver votre propre compte !" + +#: ../admin/adm_edit.php:85 ../admin/adm_mxaccount.php:81 +#: ../admin/adm_mxaccount.php:101 ../admin/adm_slaveaccount.php:80 +#: ../admin/adm_slaveaccount.php:100 ../admin/ftp_add.php:64 +#: ../admin/ftp_edit.php:70 ../admin/hta_adduser.php:57 +#: ../admin/hta_edit.php:106 ../admin/index.php:77 ../admin/index.php:94 +#: ../admin/sql_getparam.php:54 ../admin/sql_list.php:95 +#: ../admin/sql_passchg.php:52 ../admin/sql_users_add.php:68 +#: ../admin/sql_users_list.php:52 ../admin/sql_users_password.php:55 +msgid "Password" +msgstr "Mot de passe" + +#: ../admin/adm_edit.php:123 +msgid "Reset quotas to default?" +msgstr "Réinitialiser les quotas de ce compte ?" + +#: ../admin/adm_edit.php:126 +msgid "Period" +msgstr "Périodicité de facturation" + +#: ../admin/adm_edit.php:130 +msgid "Edit this account" +msgstr "Modifier ce compte" + +#: ../admin/adm_edit.php:143 +msgid "Renew for" +msgstr "Renouveler pour" + +#: ../admin/adm_edit.php:144 +msgid "period(s)" +msgstr "période(s)" + +#: ../admin/adm_edit.php:147 +msgid "Renew" +msgstr "Renouveler" + +#: ../admin/adm_edit.php:160 +msgid "This account is a super-admin account" +msgstr "Ce compte AlternC est un compte d'administrateur" + +#: ../admin/adm_edit.php:162 +msgid "" +"There is only one administrator account, you cannot turn this account back " +"to normal" +msgstr "" +"Il n'y a qu'un seul compte Administrateur, vous ne pouvez pas transformer ce " +"compte Administrateur en compte Normal" + +#: ../admin/adm_edit.php:165 +msgid "Turn this account back to normal" +msgstr "Transformer ce compte Administrateur en compte Normal" + +#: ../admin/adm_edit.php:168 +msgid "Make this account a super admin one" +msgstr "Transformer ce compte en compte Administrateur" + +#: ../admin/adm_edit.php:175 +#, php-format +msgid "Account created by %s" +msgstr "Compte créé par %s" + +#: ../admin/adm_list.php:66 +msgid "AlternC account list" +msgstr "Liste des comptes AlternC" + +#: ../admin/adm_list.php:75 +msgid "Here is the list of hosted AlternC accounts" +msgstr "Voici la liste des comptes AlternC hébergés" + +#: ../admin/adm_list.php:75 +#, php-format +msgid "%s accounts" +msgstr "%s comptes" + +#: ../admin/adm_list.php:79 +msgid "List all AlternC accounts" +msgstr "Liste de tous les comptes AlternC" + +#: ../admin/adm_list.php:89 +msgid "Or only the accounts of:" +msgstr "Ou seulement les comptes de :" + +#: ../admin/adm_list.php:94 +msgid "List only my accounts" +msgstr "Lister seulement mes comptes" + +#: ../admin/adm_list.php:96 +msgid "Create a new AlternC account" +msgstr "Créer un nouveau compte AlternC" + +#: ../admin/adm_list.php:100 +msgid "No account defined for now" +msgstr "Aucun compte n'existe pour l'instant" + +#: ../admin/adm_list.php:114 ../admin/adm_list.php:198 +#: ../admin/adm_list.php:281 ../admin/ftp_list.php:90 +msgid "Delete checked accounts" +msgstr "Supprimer les comptes AlternC cochés" + +#: ../admin/adm_list.php:118 ../admin/adm_list.php:202 +msgid "Minimal view" +msgstr "Affichage simplifié" + +#: ../admin/adm_list.php:119 ../admin/adm_list.php:203 +msgid "Complete view" +msgstr "Affichage détaillé" + +#: ../admin/adm_list.php:125 +msgid "Manager" +msgstr "Administrateur" + +#: ../admin/adm_list.php:126 +msgid "Created by" +msgstr "Créateur" + +#: ../admin/adm_list.php:127 +msgid "Created on" +msgstr "Créé le" + +#: ../admin/adm_list.php:129 +msgid "Last login" +msgstr "Dernière connexion" + +#: ../admin/adm_list.php:130 +msgid "Last ip" +msgstr "Dernière IP" + +#: ../admin/adm_list.php:131 +msgid "Fails" +msgstr "Échecs" + +#: ../admin/adm_list.php:132 ../admin/main.php:80 +msgid "Expiry" +msgstr "Expiration" + +#: ../admin/adm_list.php:177 ../admin/dom_edit.php:126 +msgid "Disable" +msgstr "Désactiver" + +#: ../admin/adm_list.php:191 ../admin/adm_list.php:229 +#: ../admin/adm_list.php:246 ../admin/adm_list.php:266 +msgid "C" +msgstr "C" + +#: ../admin/adm_list.php:192 ../admin/adm_list.php:230 +#: ../admin/adm_list.php:247 ../admin/adm_list.php:267 +msgid "E" +msgstr "M" + +#: ../admin/adm_list.php:193 ../admin/adm_list.php:232 +#: ../admin/adm_list.php:249 ../admin/adm_list.php:269 +msgid "Q" +msgstr "Q" + +#: ../admin/adm_login.php:45 ../admin/adm_login.php:52 +msgid "Your authentication information are incorrect" +msgstr "Vos informations d'identification sont incorrectes" + +#: ../admin/adm_login.php:111 +msgid "Member login" +msgstr "Nom d'utilisateur du compte AlternC" + +#: ../admin/adm_mxaccount.php:48 ../admin/adm_slaveaccount.php:48 +msgid "The requested account has been deleted. It is now denied." +msgstr "Le compte esclave a été effacé. Il est maintenant interdit." + +#: ../admin/adm_mxaccount.php:54 ../admin/adm_slaveaccount.php:54 +msgid "The requested account address has been created. It is now allowed." +msgstr "Le compte esclave a été créé. Il est maintenant autorisé." + +#: ../admin/adm_mxaccount.php:63 ../admin/adm_panel.php:63 +msgid "Manage allowed accounts for secondary mx" +msgstr "Gérer les comptes autorisés pour les mx secondaires" + +#: ../admin/adm_mxaccount.php:77 +msgid "" +"Here is the list of the allowed accounts for secondary mx management. You " +"can configure the alternc-secondarymx package on your secondary mx server " +"and give him the login/pass that will grant him access to your server's mx-" +"hosted domain list. " +msgstr "" +"Voici la liste des comptes ayant le droit de synchroniser la liste des " +"domaines dont on héberge le mail. Vous pouvez utiliser le paquet alternc-" +"secondarymx sur votre serveur mx secondaire en lui donnant le login/pass " +"pour lui donner accès à ce serveur." + +#: ../admin/adm_mxaccount.php:81 ../admin/adm_mxaccount.php:101 +#: ../admin/adm_slaveaccount.php:80 ../admin/adm_slaveaccount.php:100 +msgid "Login" +msgstr "Nom d'utilisateur" + +#: ../admin/adm_mxaccount.php:89 ../admin/adm_slaveaccount.php:88 +#: ../admin/adm_slaveip.php:88 ../admin/bro_main.php:269 +#: ../admin/dom_edit.php:109 +msgid "Delete" +msgstr "Effacer" + +#: ../admin/adm_mxaccount.php:98 +msgid "" +"If you want to allow a new server to access your mx-hosted domain list, give " +"him an account." +msgstr "" +"Si vous voulez autoriser un compte à synchroniser la liste des domaines dont " +"on héberge le mail, créez-lui un compte." + +#: ../admin/adm_mxaccount.php:107 ../admin/adm_slaveaccount.php:106 +msgid "Add this account to the allowed list" +msgstr "Ajouter ce compte à la liste des autorisés." + +#: ../admin/adm_panel.php:40 ../admin/menu_adm.php:44 +msgid "Admin Control Panel" +msgstr "Panneau Administrateur" + +#: ../admin/adm_panel.php:51 ../admin/adm_tldadd.php:40 +#: ../admin/adm_tldedit.php:52 ../admin/adm_tld.php:50 +msgid "Manage allowed domains (TLD)" +msgstr "Gestion des TLD autorisés" + +#: ../admin/adm_panel.php:52 +msgid "Password Policies" +msgstr "Politiques de mot de passe" + +#: ../admin/adm_panel.php:58 +msgid "Advanced features" +msgstr "Fonctionnalités avancées" + +#: ../admin/adm_panel.php:61 ../admin/adm_slaveip.php:62 +msgid "Manage allowed ip for slave zone transfers" +msgstr "Gérer les ip autorisés à faire des transferts de zone esclave DNS" + +#: ../admin/adm_panel.php:62 ../admin/adm_slaveaccount.php:62 +msgid "Manage allowed accounts for slave zone transfers" +msgstr "Gérer les comptes autorisés pour les transferts de zone esclave DNS" + +#: ../admin/adm_panel.php:64 ../admin/adm_variables.php:47 +msgid "Configure AlternC variables" +msgstr "Configurer les variables d'AlternC" + +#: ../admin/adm_panel.php:66 +msgid "DNS and website having errors" +msgstr "Sites et DNS en erreur" + +#: ../admin/adm_panel.php:67 +msgid "Account creation statistics" +msgstr "Statistiques de création des comptes" + +#: ../admin/adm_passpolicy.php:49 +msgid "Manage Password Policy" +msgstr "Gestion des politiques de mot de passe" + +#: ../admin/adm_passpolicy.php:62 ../admin/adm_passpolicy.php:77 +msgid "Policy not found" +msgstr "Politique non trouvée" + +#: ../admin/adm_passpolicy.php:66 +msgid "Policy changed" +msgstr "Politique de mot de passe modifiée" + +#: ../admin/adm_passpolicy.php:70 +msgid "Cannot edit the policy, an error occurred" +msgstr "" +"Impossible de modifier la politique de mot de passe, une erreur est apparue" + +#: ../admin/adm_passpolicy.php:81 +msgid "Please choose which policy you want to apply to this password kind:" +msgstr "" +"Merci de choisir la politique à appliquer à ce type de mot de passe :" + +#: ../admin/adm_passpolicy.php:89 +msgid "Minimum Password Size:" +msgstr "Taille minimale du mot de passe :" + +#: ../admin/adm_passpolicy.php:96 +msgid "Maximum Password Size:" +msgstr "Taille maximale du mot de passe :" + +#: ../admin/adm_passpolicy.php:103 +msgid "In how many classes of characters must be the password (at least):" +msgstr "" +"Dans combien de classes de caractères doit être ce mot de passe (au minimum)" +" :" + +#: ../admin/adm_passpolicy.php:110 +msgid "Do we allow the password to be like the login?" +msgstr "Autorise-t-on le mot de passe à ressembler au nom d'utilisateur ?" + +#: ../admin/adm_passpolicy.php:116 +msgid "Apply this password policy" +msgstr "Appliquer cette politique de mot de passe" + +#: ../admin/adm_passpolicy.php:117 +msgid "Cancel and go back to the policy list" +msgstr "Annuler et revenir à la liste des politiques de mots de passe" + +#: ../admin/adm_passpolicy.php:120 +msgid "" +"The classes of characters are :
            1. Low-case letters (a-z)
            2. " +"Upper-case letters (A-Z)
            3. Figures (0-9)
            4. Ascii symbols (!\"#$" +"%&'()*+,-./:;<=>?@[\\]^_`)
            5. Non-Ascii symbols (accents...)" +msgstr "" +"Les classes de caractère sont :
            1. Lettres minuscules (a-z)
            2. " +"Lettres majuscules (A-Z)
            3. Chiffres (0-9)
            4. Caractères Ascii (!" +"\"#$%&'()*+,-./:;<=>?@[\\]^_`)
            5. Caractères non-Ascii (accents...)" + +#: ../admin/adm_passpolicy.php:133 +msgid "" +"Here is the list of the password policies for each place a password may be " +"needed in AlternC's services. For each of those password kind, you can " +"choose which policy will be applied to passwords. A policy is a minimum and " +"maximum password size, and how many classes of characters must appear in the " +"password. You can also forbid (or not) to use the login or part of it as a " +"password." +msgstr "" +"Voici la liste de politiques de mot de passe pour chaque endroit où un mot " +"de passe est requis dans les service d'AlternC. Pour chaque type de mot de " +"passe, vous pouvez choisir quelle politique y sera appliquée. Une politique " +"consiste en une taille minimale et maximale pour le mot de passe, et combien " +"de classes de caractères différentes ce mot de passe doit contenir. Vous " +"pouvez aussi interdire (ou pas) que le mot de passe ressemble au nom " +"d'utilisateur." + +#: ../admin/adm_passpolicy.php:137 +msgid "Password Kind" +msgstr "Type de mot de passe" + +#: ../admin/adm_passpolicy.php:137 +msgid "Password Policy" +msgstr "Politique de mot de passe" + +#: ../admin/adm_passpolicy.php:139 +msgid "Min Size" +msgstr "Taille minimale" + +#: ../admin/adm_passpolicy.php:140 +msgid "Max Size" +msgstr "Taille maximale" + +#: ../admin/adm_passpolicy.php:141 +msgid "Complexity" +msgstr "Complexité" + +#: ../admin/adm_passpolicy.php:142 +msgid "Allow Password=Login?" +msgstr "Autorise Mot de passe=Login ?" + +#: ../admin/adm_quotadoedit.php:48 +msgid "The quotas has been successfully edited" +msgstr "Les quotas ont été modifiés avec succès" + +#: ../admin/adm_quotaedit.php:55 +msgid "Editing the quotas of a member" +msgstr "Modification des quotas d'un compte AlternC" + +#: ../admin/adm_quotaedit.php:69 ../admin/quota_show.php:42 +msgid "Quota" +msgstr "Quotas" + +#: ../admin/adm_quotaedit.php:69 ../admin/quota_show.php:42 +#: ../admin/quotas_users.php:153 ../admin/quotas_users.php:177 +msgid "Total" +msgstr "Total" + +#: ../admin/adm_quotaedit.php:69 ../admin/quota_show.php:42 +msgid "Used" +msgstr "Utilisé" + +#: ../admin/adm_quotaedit.php:77 ../class/m_quota.php:99 +#: ../class/m_quota.php:107 ../class/m_quota.php:111 +msgid "quota_" +msgstr "quota_" + +#: ../admin/adm_quotaedit.php:86 +msgid "Edit the quotas" +msgstr "Modifier les quotas" + +#: ../admin/adm_slaveaccount.php:76 +msgid "" +"Here is the list of the allowed accounts for slave dns synchronization. You " +"can configure the alternc-slavedns package on your slave server and give him " +"the login/pass that will grant him access to your server's domain list. " +msgstr "" +"Voici la liste des comptes ayant le droit de synchroniser la liste des " +"domaines hébergés. Vous pouvez utiliser le paquet alternc-slavedns sur votre " +"serveur esclave en lui donnant le login/pass pour lui donner accès à ce " +"serveur." + +#: ../admin/adm_slaveaccount.php:97 +msgid "" +"If you want to allow a new server to access your domain list, give him an " +"account." +msgstr "" +"Si vous voulez autoriser un compte à synchroniser la liste des domaines, " +"créez-lui un compte." + +#: ../admin/adm_slaveip.php:48 +msgid "" +"The requested ip address has been deleted. It will be denied in one hour." +msgstr "L'adresse ip a été supprimée. L'accès sera coupé sous une heure." + +#: ../admin/adm_slaveip.php:54 +msgid "" +"The requested ip address has been added to the list. It will be allowed in " +"one hour." +msgstr "L'adresse ip a été ajoutée. Son accès sera possible dans une heure." + +#: ../admin/adm_slaveip.php:76 +msgid "" +"Here is the list of the allowed ip or ip class for slave dns zone transfer " +"requests (AXFR). You must add the ip address of all the slave DNS you have " +"so that those slaves will be allowed to transfer the zone files. There is " +"also some defaults ip from DNS checks made by some third-party technical " +"offices such as afnic (for .fr domains)" +msgstr "" +"Voici la liste des ip ou classes d'ip autorisées à effectuer des transferts " +"de zone DNS (AXFR). Vous devez ajouter ici les adresses ip des esclaves DNS " +"afin que ceux-ci puissent synchroniser leurs zones. Il y a aussi quelques ip " +"par défaut correspondants à des organismes officiels ou des sociétés comme " +"l'Afnic (pour les .fr) ou Gandi" + +#: ../admin/adm_slaveip.php:80 ../admin/adm_slaveip.php:99 +msgid "IP Address" +msgstr "Adresse IP" + +#: ../admin/adm_slaveip.php:96 +msgid "" +"If you want to allow an ip address or class to connect to your dns server, " +"enter it here. Choose 32 as a prefix for single ip address." +msgstr "" +"Si vous voulez autoriser une adresse ip ou une classe d'adresses ip à se " +"connecter à votre serveur DNS, entrez-la ici. Choisissez 32 comme préfixe " +"s'il s'agit d'une adresse ip seule." + +#: ../admin/adm_slaveip.php:99 +msgid "Prefix" +msgstr "Préfixe" + +#: ../admin/adm_slaveip.php:105 +msgid "Add this ip to the slave list" +msgstr "Ajouter cette adresse/class à la liste des esclaves DNS." + +#: ../admin/adm_tldadd.php:50 ../admin/adm_tldadd.php:64 +#: ../admin/adm_tld.php:64 ../admin/adm_tld.php:87 +msgid "Add a new TLD" +msgstr "Créer un nouveau TLD" + +#: ../admin/adm_tldadd.php:52 +msgid "" +"Enter the new TLD (without the first dot) and choose what check should be " +"done." +msgstr "" +"Entrez le nouveau TLD (sans le point initial) et choisissez quel contrôle " +"doit être effectué." + +#: ../admin/adm_tldadd.php:53 +msgid "" +"Warning : only some final tld are known in the whois function of AlternC, " +"please check m_dom.php accordingly." +msgstr "" +"Attention : Seuls certains tld sont connus dans la fonction whois d'AlternC, " +"merci de vérifier le fichier m_dom.php." + +#: ../admin/adm_tldadd.php:59 ../admin/adm_tldedit.php:64 +#: ../admin/adm_tld.php:67 +msgid "TLD" +msgstr "TLD" + +#: ../admin/adm_tldadd.php:60 ../admin/adm_tldedit.php:65 +#: ../admin/adm_tld.php:67 +msgid "Allowed Mode" +msgstr "Contrôle effectué" + +#: ../admin/adm_tlddoadd.php:42 +msgid "The TLD has been successfully added" +msgstr "Le TLD a été ajouté avec succès" + +#: ../admin/adm_tlddoedit.php:42 +msgid "The TLD has been successfully edited" +msgstr "Le TLD a été modifié avec succès" + +#: ../admin/adm_tldedit.php:60 +msgid "Edit a TLD" +msgstr "Modification d'un TLD" + +#: ../admin/adm_tldedit.php:69 +msgid "Edit this TLD" +msgstr "Modifier ce TLD" + +#: ../admin/adm_tld.php:41 +msgid "Some TLD cannot be deleted..." +msgstr "Des TLD ne peuvent pas être effacés..." + +#: ../admin/adm_tld.php:44 +msgid "The requested TLD has been deleted" +msgstr "Les TLD ont été effacés avec succès" + +#: ../admin/adm_tld.php:62 +msgid "" +"Here is the list of the TLD allowed on this server. Each TLD can be allowed " +"or denied after some checks (whois, ns, domain exists...)" +msgstr "" +"Voici la liste des TLD autorisés sur le serveur. Chaque TLD peut être " +"autorisé ou interdit selon certains critères (whois, ns, domaine existe...)" + +#: ../admin/adm_tld.php:83 +msgid "Delete the checked TLD" +msgstr "Effacer les TLD cochés" + +#: ../admin/adm_variables.php:52 +msgid "Here are the internal AlternC variables that are currently being used." +msgstr "Voici les variables internes de configurables dans AlternC." + +#: ../admin/adm_variables.php:57 +msgid "Names" +msgstr "Noms" + +#: ../admin/adm_variables.php:57 +msgid "Comment" +msgstr "Commentaire" + +#: ../admin/adm_variables.php:74 +msgid "Save variables" +msgstr "Sauver la configuration" + +#: ../admin/bro_editor.php:44 ../admin/bro_editor.php:50 +#, php-format +msgid "Your file %s has been saved" +msgstr "Votre fichier %s a été enregistré" + +#: ../admin/bro_editor.php:58 +msgid "File editing" +msgstr "Edition de fichier" + +#: ../admin/bro_editor.php:63 +msgid "ctrl+click or shift+click and drag to resize the editing zone" +msgstr "" +"ctrl+clic ou shift+clic et déplacer pour redimensionner la zone d'édition" + +#: ../admin/bro_editor.php:67 +msgid "Save" +msgstr "Enregistrer" + +#: ../admin/bro_editor.php:68 +msgid "Save & Quit" +msgstr "Enregistrer et Fermer" + +#: ../admin/bro_editor.php:69 +msgid "Quit" +msgstr "Fermer" + +#: ../admin/bro_main.php:82 +#, php-format +msgid "Deleting files and/or directories" +msgstr "Effacer des fichiers ou des répertoires" + +#: ../admin/bro_main.php:87 +msgid "WARNING: Confirm the deletion of this files" +msgstr "ATTENTION : Confirmez la suppression de ces fichiers" + +#: ../admin/bro_main.php:133 +msgid "extracting..." +msgstr "extraction..." + +#: ../admin/bro_main.php:137 +msgid "failed" +msgstr "échec" + +#: ../admin/bro_main.php:140 +msgid "done" +msgstr "terminé" + +#: ../admin/bro_main.php:149 ../admin/menu_brouteur.php:34 +msgid "File browser" +msgstr "Gestionnaire de fichiers" + +#: ../admin/bro_main.php:157 +msgid "Path" +msgstr "Répertoire courant" + +#: ../admin/bro_main.php:169 +msgid "Send one file:" +msgstr "Envoyer un fichier :" + +#: ../admin/bro_main.php:173 +msgid "Send this file" +msgstr "Envoyer ce fichier" + +#: ../admin/bro_main.php:181 +msgid "New file or folder:" +msgstr "Créer un fichier ou un répertoire :" + +#: ../admin/bro_main.php:186 +msgid "Create" +msgstr "Créer" + +#: ../admin/bro_main.php:188 ../admin/bro_main.php:228 +msgid "File" +msgstr "Fichier" + +#: ../admin/bro_main.php:189 ../admin/bro_main.php:357 ../admin/ftp_add.php:57 +#: ../admin/ftp_edit.php:62 ../admin/ftp_list.php:72 ../admin/hta_add.php:50 +#: ../admin/hta_adduser.php:49 ../admin/hta_edit.php:98 +#: ../admin/hta_edituser.php:52 ../admin/hta_list.php:67 +#: ../admin/sta2_list.php:58 +msgid "Folder" +msgstr "Répertoire" + +#: ../admin/bro_main.php:206 ../admin/bro_main.php:212 +#: ../admin/bro_main.php:270 +msgid "Rename" +msgstr "Renommer" + +#: ../admin/bro_main.php:222 ../admin/bro_main.php:228 +#: ../admin/bro_main.php:271 +msgid "Permissions" +msgstr "Permissions" + +#: ../admin/bro_main.php:242 +msgid "write" +msgstr "écriture" + +#: ../admin/bro_main.php:250 +msgid "Change permissions" +msgstr "Modifier les permissions" + +#: ../admin/bro_main.php:273 +msgid "Copy" +msgstr "Copier Vers" + +#: ../admin/bro_main.php:274 +msgid "Move" +msgstr "Déplacer" + +#: ../admin/bro_main.php:275 +msgid "To" +msgstr "Vers" + +#: ../admin/bro_main.php:305 +msgid "Filename" +msgstr "Nom du fichier" + +#: ../admin/bro_main.php:306 ../admin/mail_list.php:104 +#: ../admin/sql_list.php:51 +msgid "Size" +msgstr "Taille" + +#: ../admin/bro_main.php:307 +msgid "Last modification" +msgstr "Dernière modification" + +#: ../admin/bro_main.php:309 +msgid "File Type" +msgstr "Type de fichier" + +#: ../admin/bro_main.php:334 ../admin/bro_main.php:512 +#: ../admin/sta2_list.php:58 ../admin/sta2_list.php:72 +msgid "View" +msgstr "Voir" + +#: ../admin/bro_main.php:341 +msgid "Extract" +msgstr "Extraire" + +#: ../admin/bro_main.php:384 ../admin/bro_main.php:414 +#: ../admin/bro_main.php:451 ../admin/bro_main.php:481 +msgid "V" +msgstr "V" + +#: ../admin/bro_main.php:538 +msgid "No files in this folder" +msgstr "Aucun fichier dans ce répertoire" + +#: ../admin/bro_main.php:548 +msgid "Show size of directories" +msgstr "Afficher la taille des répertoires" + +#: ../admin/bro_main.php:548 +msgid "(slow)" +msgstr "(lent)" + +#: ../admin/bro_main.php:552 +msgid "Edit this folder's protection" +msgstr "Modifier la protection de ce répertoire" + +#: ../admin/bro_main.php:555 ../admin/hta_add.php:61 +msgid "Protect this folder" +msgstr "Protéger ce répertoire" + +#: ../admin/bro_main.php:557 +msgid "with a login and a password" +msgstr "utilisant un nom d'utilisateur et un mot de passe" + +#: ../admin/bro_main.php:560 +msgid "Download this folder" +msgstr "Télécharger ce répertoire" + +#: ../admin/bro_main.php:562 +#, php-format +msgid "as a %s file" +msgstr "comme fichier %s" + +#: ../admin/bro_main.php:570 +msgid "Edit the ftp account" +msgstr "Modifier le compte FTP" + +#: ../admin/bro_main.php:571 +msgid "that exists in this folder" +msgstr "qui existe dans ce répertoire" + +#: ../admin/bro_main.php:577 +msgid "Create an ftp account in this folder" +msgstr "Créer un compte FTP dans ce répertoire" + +#: ../admin/bro_main.php:586 +msgid "Configure the file editor" +msgstr "Configurer le gestionnaire de fichiers" + +#: ../admin/bro_pref.php:34 +msgid "Your preferences have been updated." +msgstr "Vos préférences ont été mises à jour." + +#: ../admin/bro_pref.php:44 +msgid "File browser preferences" +msgstr "Préférences du gestionnaire de fichiers" + +#: ../admin/bro_pref.php:51 +msgid "Horizontal window size" +msgstr "Taille horizontale de la fenêtre" + +#: ../admin/bro_pref.php:59 +msgid "Vertical window size" +msgstr "Taille verticale de la fenêtre" + +#: ../admin/bro_pref.php:67 +msgid "File editor font name" +msgstr "Police de caractères de l'éditeur de fichiers" + +#: ../admin/bro_pref.php:75 +msgid "File editor font size" +msgstr "Taille de la police de l'éditeur de fichiers" + +#: ../admin/bro_pref.php:83 +msgid "File list view" +msgstr "Mode d'affichage des fichiers" + +#: ../admin/bro_pref.php:91 +msgid "Downloading file format" +msgstr "Format du téléchargement du site ? " + +#: ../admin/bro_pref.php:99 +msgid "What to do after creating a file" +msgstr "Que faire après la création d'un fichier" + +#: ../admin/bro_pref.php:107 +msgid "Show icons?" +msgstr "Afficher les icones ?" + +#: ../admin/bro_pref.php:115 +msgid "Show file types?" +msgstr "Affichage les types de fichier ?" + +#: ../admin/bro_pref.php:123 +msgid "Remember last visited directory?" +msgstr "Revenir au dernier répertoire visité ?" + +#: ../admin/bro_pref.php:133 +msgid "Change my settings" +msgstr "Modifier mes préférences" + +#: ../admin/browseforfolder.php:115 +msgid "Searching for a folder" +msgstr "Recherche d'un répertoire" + +#: ../admin/browseforfolder.php:121 +msgid "Error, cannot find this folder" +msgstr "Erreur, impossible de trouver ce répertoire" + +#: ../admin/browseforfolder.php:123 +msgid "Back to the root folder" +msgstr "Retour au répertoire racine" + +#: ../admin/browseforfolder.php:135 +msgid "Select" +msgstr "Sélectionner" + +#: ../admin/dom_add.php:45 +msgid "Domain hosting" +msgstr "Hébergement de domaine" + +#: ../admin/dom_add.php:49 +msgid "You cannot add any new domain, your quota is over." +msgstr "Vous ne pouvez plus héberger de domaine, votre quota est atteint." + +#: ../admin/dom_add.php:49 +msgid "Contact your administrator for more information." +msgstr "Contactez nous pour plus d'information." + +#: ../admin/dom_add.php:60 +msgid "host my dns here" +msgstr "Héberger le DNS sur le serveur" + +#: ../admin/dom_add.php:67 +msgid "" +"Do you want to point this domain to another domain already installed in your " +"account?" +msgstr "" +"Voulez-vous pointer ce domaine sur un autre déjà installé sur votre " +"compte ?" + +#: ../admin/dom_add.php:69 +msgid "No: This domain will have its own folder." +msgstr "Non : ce domaine aura son propre répertoire." + +#: ../admin/dom_add.php:71 +msgid "Yes, redirect this new domain to this one:" +msgstr "Oui, redirigez ce nouveau domaine vers ce domaine existant :" + +#: ../admin/dom_add.php:72 +msgid "-- Choose a domain --" +msgstr "-- Choisir un nom de domaine --" + +#: ../admin/dom_add.php:86 +msgid "Add this domain" +msgstr "Héberger ce nouveau domaine" + +#: ../admin/dom_add.php:91 +msgid "" +"If you don't want to host in our server the DNS of your domain, don't check " +"the box 'host my dns here'. If you don't know what it mean, leave it checked." +msgstr "" +"Si vous ne souhaitez pas que nous hébergions le DNS du domaine, décochez la " +"case 'Héberger le DNS sur le serveur'. Si vous ne comprenez pas, laissez la " +"case cochée." + +#: ../admin/dom_add.php:96 ../admin/dom_doadd.php:60 +msgid "Whois result on the domain" +msgstr "Résultat du Whois sur le domaine" + +#: ../admin/dom_doadd.php:52 ../admin/menu_dom.php:44 +msgid "Add a domain" +msgstr "Héberger un domaine" + +#: ../admin/dom_doadd.php:54 +#, php-format +msgid "Your new domain %s has been successfully installed" +msgstr "Votre nouveau domaine %s a été installé avec succès" + +#: ../admin/dom_doadd.php:55 ../admin/dom_dodel.php:56 +#: ../admin/dom_dodel.php:85 ../admin/dom_editdns.php:70 +#: ../admin/dom_subdodel.php:65 ../admin/hta_doedituser.php:61 +msgid "Click here to continue" +msgstr "Cliquez ici pour continuer" + +#: ../admin/dom_dodel.php:54 +msgid "Deletion have been successfully cancelled" +msgstr "La suppression a été annulée avec succès." + +#: ../admin/dom_dodel.php:64 ../admin/dom_dodel.php:67 +#, php-format +msgid "Confirm the deletion of domain %s" +msgstr "Confirmation d'effacement du domaine %s" + +#: ../admin/dom_dodel.php:67 ../admin/sql_del.php:66 +#: ../admin/sql_users_del.php:55 +msgid "WARNING" +msgstr "ATTENTION" + +#: ../admin/dom_dodel.php:69 +msgid "This will delete the related sub-domains too." +msgstr "Ceci va effacer tous les mails et les sous-domaines correspondants." + +#: ../admin/dom_dodel.php:80 +#, php-format +msgid "Domain %s deleted" +msgstr "Domaine %s effacé" + +#: ../admin/dom_dodel.php:84 +#, php-format +msgid "The domain %s has been successfully deleted." +msgstr "Le domaine %s a été effacé avec succès." + +#: ../admin/dom_editdns.php:60 +#, php-format +msgid "Editing domain %s" +msgstr "Edition du domaine %s" + +# ,php-format +#: ../admin/dom_editdns.php:65 +#, php-format +msgid "The domain %s has been changed." +msgstr "Le domaine %s a été modifié avec succès." + +#: ../admin/dom_editdns.php:68 ../admin/dom_subdodel.php:61 +msgid "The modifications will take effect at %time. Server time is %now." +msgstr "" +"Les modifications seront prises en comptes à %time. L'heure du serveur est " +"%now." + +#: ../admin/dom_edit.inc.php:40 +msgid "Edit a subdomain:" +msgstr "Modification d'un sous-domaine : " + +#: ../admin/dom_edit.inc.php:42 +msgid "Create a subdomain:" +msgstr "Création d'un sous-domaine : " + +#: ../admin/dom_edit.inc.php:63 +msgid "Show advanced options" +msgstr "Afficher les options avancées" + +#: ../admin/dom_edit.inc.php:64 +msgid "Hide advanced options" +msgstr "Cacher les options avancées" + +#: ../admin/dom_edit.inc.php:85 ../admin/ftp_add.php:60 +#: ../admin/ftp_edit.php:66 ../admin/hta_add.php:54 ../admin/sql_bck.php:97 +#: ../admin/sta2_add_raw.php:57 ../admin/sta2_edit_raw.php:63 +msgid "Choose a folder..." +msgstr "Choisir un répertoire ..." + +#: ../admin/dom_edit.inc.php:91 +msgid "(enter an URL here)" +msgstr "(entrez une URL ici)" + +#: ../admin/dom_edit.inc.php:95 +msgid "(enter an IPv4 address, for example 192.168.1.2)" +msgstr "(entrez une adresse IPv4, par exemple 192.168.1.2)" + +#: ../admin/dom_edit.inc.php:99 +msgid "(enter an IPv6 address, for example 2001:0910::0)" +msgstr "(entrez une adresse IPv6, par exemple 2001:0910::0)" + +#: ../admin/dom_edit.inc.php:103 +msgid "(enter a TXT informations for this domain)" +msgstr "(entrez une information TXT pour le domaine)" + +#: ../admin/dom_edit.inc.php:107 +msgid "(enter a domain name or subdomain)" +msgstr "(entrez un domaine ou sous-domaine)" + +#: ../admin/dom_edit.inc.php:117 +msgid "Edit this subdomain" +msgstr "Modifier ce sous-domaine" + +#: ../admin/dom_edit.inc.php:119 +msgid "Add this subdomain" +msgstr "Ajouter ce sous-domaine" + +#: ../admin/dom_edit.php:66 +#, php-format +msgid "Editing subdomains of %s" +msgstr "Edition des sous-domaines de %s" + +#: ../admin/dom_edit.php:76 +msgid "This domain have some DNS change pending. Please wait." +msgstr "Ce domaine a des modifications DNS en attente, merci de patienter." + +#: ../admin/dom_edit.php:79 +msgid "You requested deletion of this domain." +msgstr "Vous avez demandé la suppression du domaine %s" + +#: ../admin/dom_edit.php:97 +msgid "Subdomain" +msgstr "Sous-domaine" + +#: ../admin/dom_edit.php:97 +msgid "Type" +msgstr "Type" + +#: ../admin/dom_edit.php:129 +msgid "Activation pending" +msgstr "Activation en cours" + +#: ../admin/dom_edit.php:132 +msgid "Disabled" +msgstr "Désactivé" + +#: ../admin/dom_edit.php:133 +msgid "Enable" +msgstr "Activer" + +#: ../admin/dom_edit.php:136 +msgid "Desactivation pending" +msgstr "Désactivation en attente" + +#: ../admin/dom_edit.php:143 +msgid "Update pending" +msgstr "Mise à jour en attente" + +#: ../admin/dom_edit.php:146 +msgid "Deletion pending" +msgstr "Suppression en attente" + +#: ../admin/dom_edit.php:174 +msgid "DNS & Email parameters" +msgstr "Paramètres DNS & Email" + +#: ../admin/dom_edit.php:179 +msgid "Manage the DNS on the server ?" +msgstr "Gère-t-on le DNS de ce domaine ?" + +#: ../admin/dom_edit.php:190 +msgid "Manage the Emails Addresses of this domain on the server?" +msgstr "Gère-t-on les Adresses Emails de ce domaine sur le serveur ?" + +#: ../admin/dom_edit.php:197 +msgid "" +"Warning: If you set this to 'no', all your email accounts and aliases on " +"this domain will be immediately deleted." +msgstr "" +"Attention: Si vous mettez 'non' ici, toutes les adresses emails de ce " +"domaine et les messages qu'elles contiennent seront immédiatement détruits." + +#: ../admin/dom_edit.php:199 +msgid "Submit the changes" +msgstr "Valider les changements" + +#: ../admin/dom_edit.php:204 +msgid "Domain removal" +msgstr "Suppression du nom de domaine" + +#: ../admin/dom_edit.php:207 +#, php-format +msgid "help_domain_del %s" +msgstr "" +"Si vous voulez détruire le domaine %s, cliquez sur le bouton ci-dessous. " +"Attention, cela supprime aussi tous les comptes ftp, les adresses email, " +"les listes de diffusion etc... associés à ce domaine et à tous ses sous-" +"domaines !" + +#: ../admin/dom_edit.php:210 +#, php-format +msgid "Delete %s from this server" +msgstr "Effacer le domaine %s de ce serveur" + +#: ../admin/dom_subdel.php:48 +#, php-format +msgid "Deleting subdomain %s" +msgstr "Suppression du sous-domaine %s" + +#: ../admin/dom_subdel.php:67 +msgid "WARNING : Confirm the deletion of the subdomain" +msgstr "ATTENTION : Etes-vous sur de vouloir supprimer le sous-domaine suivant" + +#: ../admin/dom_subdodel.php:50 +#, php-format +msgid "Deleting the subdomain %s:" +msgstr "Effacement du sous-domaine %s : " + +#: ../admin/dom_subdoedit.php:65 ../admin/dom_substatus.php:27 +msgid "The modifications will take effect at %time. Server time is %now." +msgstr "" +"Les modifications seront prises en comptes à %time. L'heure du serveur est " +"%now." + +#: ../admin/dom_subedit.php:51 +msgid "Editing subdomain" +msgstr "Edition du sous-domaine" + +#: ../admin/ftp_add.php:34 +msgid "You cannot add any new ftp account, your quota is over." +msgstr "" +"Vous avez atteint votre quota de comptes ftp, vous ne pouvez plus en créer." + +#: ../admin/ftp_add.php:39 ../admin/ftp_list.php:57 ../admin/menu_ftp.php:44 +msgid "Create a new ftp account" +msgstr "Créer un compte ftp" + +#: ../admin/ftp_add.php:67 +msgid "Create this new FTP account." +msgstr "Créer le compte FTP." + +#: ../admin/ftp_del.php:42 +#, php-format +msgid "The ftp account %s has been successfully deleted" +msgstr "Le compte ftp %s a été supprimé avec succès" + +#: ../admin/ftp_doadd.php:44 +msgid "The FTP account has been successfully created" +msgstr "Le compte FTP a été créé avec succès" + +#: ../admin/ftp_doedit.php:33 ../admin/ftp_edit.php:39 +msgid "No account selected!" +msgstr "Aucun compte sélectionné !" + +#: ../admin/ftp_doedit.php:47 +msgid "The ftp account has been successfully changed" +msgstr "Le compte ftp a été modifié avec succès" + +#: ../admin/ftp_doedit.php:56 ../admin/ftp_edit.php:48 +msgid "Editing an FTP account" +msgstr "Modification d'un compte ftp" + +#: ../admin/ftp_edit.php:74 +msgid "Change this FTP account" +msgstr "Modifier le compte FTP." + +#: ../admin/ftp_list.php:45 ../admin/menu_ftp.php:46 +msgid "FTP accounts list" +msgstr "Liste des comptes ftp" + +#: ../admin/head.php:55 +msgid "" +"Administrator session. you may return to your " +"account or cancel this feature" +msgstr "" +"Session administrateur. Vous pouvez revenir à votre " +"compte ou annuler cette possibilité" + +#: ../admin/hta_add.php:34 ../admin/hta_list.php:50 ../admin/hta_list.php:88 +#: ../admin/web_list.php:3 +msgid "Protect a folder" +msgstr "Protéger un répertoire" + +#: ../admin/hta_add.php:38 +msgid "" +"Enter the name of the folder you want to protect. It must already exists." +msgstr "" +"Choisir le répertoire que vous souhaitez protéger. Ce répertoire doit " +"préexister." + +#: ../admin/hta_adduser.php:39 +#, php-format +msgid "Adding a username in %s" +msgstr "Ajout d'un utilisateur autorisé dans %s" + +#: ../admin/hta_adduser.php:66 ../admin/hta_edit.php:115 +msgid "Add this user" +msgstr "Ajouter l'utilisateur" + +#: ../admin/hta_del.php:42 +#, php-format +msgid "The protected folder %s has been successfully unprotected" +msgstr "Le répertoire protégé %s a été déprotégé avec succès" + +#: ../admin/hta_doadduser.php:39 +msgid "Please enter a password" +msgstr "Veuillez entrer un mot de passe" + +#: ../admin/hta_doedituser.php:51 +#, php-format +msgid "Change the user %s in the protected folder %s" +msgstr "Modification de l'utilisateur %s dans le répertoire protégé %s" + +#: ../admin/hta_doedituser.php:59 +#, php-format +msgid "The password of the user %s has been successfully changed" +msgstr "Le mot de passe de l'utilisateur %s à été modifié avec succés" + +#: ../admin/hta_edit.php:39 +msgid "No folder selected!" +msgstr "Aucun répertoire sélectionné !" + +#: ../admin/hta_edit.php:48 +#, php-format +msgid "List of authorized user in folder %s" +msgstr "Liste des utilisateurs autorisés dans %s" + +#: ../admin/hta_edit.php:53 +#, php-format +msgid "No authorized user in %s" +msgstr "Aucun utilisateur autorisé dans %s" + +#: ../admin/hta_edit.php:73 ../admin/sql_users_password.php:41 +msgid "Change this user's password" +msgstr "Changer le mot de passe de cet utilisateur" + +#: ../admin/hta_edit.php:82 ../admin/sql_users_list.php:74 +msgid "Delete the checked users" +msgstr "Supprimer les utilisateurs cochés" + +#: ../admin/hta_edit.php:87 +msgid "Show this folder's content in the File Browser" +msgstr "Afficher le contenu de ce répertoire dans le Gestionnaire de Fichiers" + +#: ../admin/hta_edit.php:93 +msgid "Adding an authorized user" +msgstr "Ajout d'un utilisateur autorisé" + +#: ../admin/hta_edituser.php:40 +#, php-format +msgid "Editing user %s in the protected folder %s" +msgstr "Modification de l'utilisateur %s dans le répertoire protégé %s" + +#: ../admin/hta_edituser.php:53 ../admin/sql_users_list.php:52 +msgid "User" +msgstr "Utilisateur" + +#: ../admin/hta_edituser.php:54 ../admin/mem_param.php:64 +#: ../admin/mem_param.php:65 +msgid "New password" +msgstr "Nouveau mot de passe" + +#: ../admin/hta_edituser.php:56 ../admin/sql_passchg.php:56 +msgid "Change the password" +msgstr "Modifier le mot de passe" + +#: ../admin/hta_list.php:41 +msgid "Protected folders list" +msgstr "Liste des répertoires protégés" + +#: ../admin/hta_list.php:60 +msgid "help_hta_list" +msgstr "Voici la liste des répertoires protégés de votre compte" + +#: ../admin/hta_list.php:78 +msgid "Edit login and passwords" +msgstr "Gérer les utilisateurs et mots de passe" + +#: ../admin/hta_list.php:87 +msgid "Unprotect the checked folders" +msgstr "Déprotéger les répertoires cochés" + +#: ../admin/index.php:57 +msgid "Web Hosting Control Panel" +msgstr "Panneau de contrôle d'hébergement" + +#: ../admin/index.php:71 +msgid "" +"To connect to the hosting control panel, enter your AlternC's login and " +"password in the following form and click 'Enter'" +msgstr "" +"Pour vous connecter au bureau de gestion de votre hébergement, entrez " +"votre nom d'utilisateur AlternC et votre mot de passe dans le formulaire ci-" +"contre et cliquez sur 'Entrer'" + +#: ../admin/index.php:75 +msgid "AlternC access" +msgstr "Accès à AlternC" + +#: ../admin/index.php:78 ../admin/index.php:95 +msgid "Enter" +msgstr "Entrer" + +#: ../admin/index.php:85 +msgid "" +"If you want to read your mail, enter your Email address and password in the " +"following form and click 'Enter'" +msgstr "" +"Si vous souhaitez accéder à votre messagerie en ligne, entrez votre " +"adresse email et votre mot de passe dans le formulaire ci-contre et cliquez " +"sur 'Entrer'" + +#: ../admin/index.php:91 +msgid "Webmail Access" +msgstr "Accès au webmail" + +#: ../admin/index.php:92 +msgid "Email Address" +msgstr "Adresse Email" + +#: ../admin/index.php:106 +msgid "You must accept the session cookie to log-in" +msgstr "Vous devez accepter le cookie de session pour pouvoir vous connecter" + +#: ../admin/mail_add.php:43 +#, php-format +msgid "Add a mail to the domain %s" +msgstr "Ajout d'un mail sur le domaine %s" + +#: ../admin/mail_add.php:62 ../admin/mail_edit.php:70 +msgid "Is it a POP/IMAP account?" +msgstr "Est-ce un compte POP/IMAP ?" + +#: ../admin/mail_add.php:70 ../admin/mail_edit.php:78 +msgid "POP/IMAP password" +msgstr "Mot de passe POP/IMAP" + +#: ../admin/mail_add.php:76 ../admin/mail_edit.php:88 +msgid "Redirections
            Other recipients:" +msgstr "Redirections/Autres destinataires :" + +#: ../admin/mail_add.php:76 ../admin/mail_edit.php:88 +msgid "one email per line" +msgstr "une adresse email par ligne" + +#: ../admin/mail_add.php:80 ../admin/mail_edit.php:91 +msgid "Is it a temporary mail account?" +msgstr "Souhaitez-vous que ce mail soit temporaire ?" + +#: ../admin/mail_add.php:87 +msgid "Create this email address" +msgstr "Ajouter cette adresse email" + +#: ../admin/mail_add.php:94 +msgid "help_mail_add" +msgstr "" +"- Pour créer cette adresse email
            * Si vous voulez stocker les messages " +"reçus et y accéder avec un logiciel de messagerie ou le webmail, cochez la " +"case 'Compte pop'. Dans ce cas, entrez un mot de passe pour le compte pop." +"
            * Si vous souhaitez rediriger ce mail vers d'autres, entrer la liste " +"des mails concernés, un mail par ligne (avec le @ dans tous les cas).
            " +"Note : il faut soit cocher la case 'Creer un compte pop' soit entrer une " +"redirection, soit les deux.
            * Pour accéder à la lecture du mail, " +"utiliser l'adresse http://'votredomaine'/webmail/ ou un sous-domaine de type " +"'Accès au Webmail'
            Le nom d'utilisateur est l'adresse email (par " +"exemple login@votredomaine.com) et le mot de passe est celui " +"que vous avez entré dans ce formulaire. " + +#: ../admin/mail_del.php:51 +#, php-format +msgid "The email address %s does not exist!" +msgstr "L'adresse email %s n'existe pas" + +#: ../admin/mail_del.php:53 +#, php-format +msgid "The email address %s has been deleted!" +msgstr "L'adresse email %s a été supprimée !" + +#: ../admin/mail_del.php:63 +msgid "Deleting mail accounts" +msgstr "Suppression des adresses email" + +#: ../admin/mail_del.php:66 +msgid "Please confirm the deletion of the following mail accounts:" +msgstr "Confirmez la suppression des adresses email suivantes :" + +#: ../admin/mail_del.php:82 +msgid "Confirm the deletion" +msgstr "Confirmer la suppression" + +#: ../admin/mail_del.php:82 +msgid "Don't delete anything and go back to the email list" +msgstr "Ne rien supprimer, revenir à la liste des adresses email" + +#: ../admin/mail_del.php:86 +msgid "" +"Warning: Deleting an email address will destroy all the messages it " +"contains! You will NOT be able to get it back!" +msgstr "" +"Attention: La suppression d'une adresse email détruit tous ses " +"messages ! Vous ne pourrez PLUS retrouver les messages ainsi " +"effacés !" + +#: ../admin/mail_doadd.php:55 +#, php-format +msgid "The email address %s has been successfully created" +msgstr "L'adresse email %s a été ajouté avec succès" + +#: ../admin/mail_dodel.php:40 +#, php-format +msgid "The mailbox %s does not exist!" +msgstr "L'adresse email %s n'existe pas !" + +#: ../admin/mail_dodel.php:43 +#, php-format +msgid "The mailbox %s has been deleted!" +msgstr "L'adresse email %s a été supprimée !" + +#: ../admin/mail_doedit.php:60 +#, php-format +msgid "The email address %s has been successfully changed" +msgstr "L'adresse email %s a été modifiée avec succès" + +#: ../admin/mail_edit.php:48 +#, php-format +msgid "Edit an email address of the domain %s" +msgstr "Modification d'une adresse email du domaine %s" + +#: ../admin/mail_edit.php:66 +#, php-format +msgid "Edit the email address %s" +msgstr "Modification de l'adresse email %s" + +#: ../admin/mail_edit.php:68 +msgid "This account is a temporary account.
            It will be delete on " +msgstr "Cette adresse email est temporaire
            Elle sera détruite le " + +#: ../admin/mail_edit.php:84 +msgid "" +"WARNING: turning POP/IMAP off will DELETE the stored messages in this email " +"address. This email address will become a simple redirection." +msgstr "" +"ATTENTION : Choisir 'Non' ici supprimera les messages stockés dans " +"cette adresse email. L'adresse email sera transformée en simple redirection." + +#: ../admin/mail_edit.php:97 +msgid "Change this email address" +msgstr "Modifier cette adresse email" + +#: ../admin/mail_edit.php:104 +msgid "help_mail_edit" +msgstr "" +"- Pour modifier cet email
            * Si vous voulez stocker les emails recus et " +"y accéder avec un logiciel de messagerie ou le webmail, cochez la case " +"'Compte pop'. Dans ce cas, entrez un mot de passe pour le compte pop.
            * Si vous souhaitez rediriger ce mail vers d'autres, entrer la liste des " +"mails concernés, un mail par ligne (avec le @ dans tous les cas).
            " +"Note : il faut soit cocher la case 'Creer un compte pop' soit entrer une " +"redirection, soit les deux.
            * Si vous ne mettez rien dans la zone 'Mot " +"de passe', celui-ci ne sera pas changé. Si vous voulez changer le mot de " +"passe, entrez le nouveau mot de passe
            * Pour accéder à la lecture du " +"mail, utiliser l'adresse http://'votredomaine'/webmail/ ou un sous-domaine " +"du type 'Accès au Webmail'
            Le nom d'utilisateur est votre adresse " +"email (par exemple login@votredomaine.com et le mot de passe " +"est celui que vous avez entré dans ce formulaire. " + +#: ../admin/mail_list.php:49 ../admin/mail_list.php:68 +#, php-format +msgid "Email addresses of the domain %s" +msgstr "Liste des adresses emails du domaine %s" + +#: ../admin/mail_list.php:58 ../admin/mail_list.php:77 +#, php-format +msgid "Add a mailbox on %s" +msgstr "Ajouter une adresse email sur %s" + +#: ../admin/mail_list.php:60 ../admin/mail_list.php:79 +#, php-format +msgid "Add many mailboxes on %s" +msgstr "Ajouter plusieurs adresses email sur %s" + +#: ../admin/mail_list.php:87 +msgid "Show only mail starting by:" +msgstr "Afficher seulement les adresses mails commençant par :" + +#: ../admin/mail_list.php:93 +#, php-format +msgid "All" +msgstr "Tous" + +#: ../admin/mail_list.php:127 +msgid "This account will be deleted on" +msgstr "Ce compte sera détruit le" + +#: ../admin/mail_list.php:136 +msgid "Delete the checked email addresses" +msgstr "Supprimer les adresses email cochées" + +#: ../admin/main.php:38 +msgid "Last Login: " +msgstr "Dernière connexion : " + +#: ../admin/main.php:41 +#, php-format +msgid "from: %1$s " +msgstr "depuis %1$s " + +#: ../admin/main.php:45 +#, php-format +msgid "%1$d login failed since last login" +msgstr "%1$d tentatives incorrectes depuis la dernière connexion" + +#: ../admin/main.php:61 +msgid "Latest news" +msgstr "Dernières nouvelles" + +#: ../admin/main.php:78 +msgid "Expired or about to expire accounts" +msgstr "Comptes expirés ou expirant bientôt" + +#: ../admin/main.php:80 +msgid "uid" +msgstr "uid" + +#: ../admin/main.php:80 +msgid "Last name, surname" +msgstr "Prénom, Nom" + +#: ../admin/mem_admin.php:40 +msgid "Your administrator preferences has been successfully changed." +msgstr "Vos préférences d'administrateurs ont été modifiées avec succès." + +#: ../admin/mem_admin.php:46 ../admin/mem_param.php:97 +msgid "Admin preferences" +msgstr "Préférences d'administration" + +#: ../admin/mem_chgmail.php:44 ../admin/mem_cm2.php:40 ../admin/mem_cm.php:35 +#: ../admin/mem_cm.php:46 ../admin/mem_param.php:74 +msgid "Change the email of the account" +msgstr "Changer l'adresse email du compte AlternC" + +#: ../admin/mem_chgmail.php:51 +#, php-format +msgid "help_mem_chgmail %s" +msgstr "" +"Un essage a été envoyé à l'adresse %s pour " +"confirmation.
            Ce message contient un lien où vous devrez vous rendre " +"pour valider la modification.
            A cette adresse, la clé suivante vous " +"sera demandée :
            " + +#: ../admin/mem_cm2.php:48 +msgid "The mailbox has been successfully changed." +msgstr "Le mail a été changé avec succès." + +#: ../admin/mem_cm.php:47 +msgid "" +"Enter the key you got when you requested the mailbox change, then click the " +"OK button." +msgstr "" +"Entrez la clé qui vous a été donnée lors de la demande de changement " +"d'adresse email, puis cliquez sur OK" + +#: ../admin/mem_cm.php:48 +msgid "Key" +msgstr "Clé" + +#: ../admin/mem_cm.php:49 +msgid "OK" +msgstr "OK" + +#: ../admin/mem_logout.php:38 ../admin/mem_logout.php:43 +msgid "Disconnected" +msgstr "Déconnexion" + +#: ../admin/mem_logout.php:45 +msgid "You have been logged out of your administration desktop." +msgstr "Vous avez été déconnecté de votre espace d'administration." + +#: ../admin/mem_logout.php:46 +msgid "Click here to log in" +msgstr "Cliquez ici pour vous reconnecter" + +#: ../admin/mem_param.php:36 +msgid "Your help setting has been updated." +msgstr "Vos paramètres d'aide ont été modifiés." + +#: ../admin/mem_param.php:40 +msgid "Settings of your account" +msgstr "Paramètres de votre compte AlternC" + +#: ../admin/mem_param.php:50 ../admin/mem_passwd.php:41 +#: ../admin/sql_users_list.php:65 +msgid "Password change" +msgstr "Changer le mot de passe" + +#: ../admin/mem_param.php:54 +msgid "You cannot change your password" +msgstr "Vous ne pouvez pas changer votre mot de passe" + +#: ../admin/mem_param.php:59 +msgid "help_chg_passwd" +msgstr "" +"Vous pouvez modifier ici le mot de passe vous permettant d'utiliser ce " +"bureau virtuel. Ne l'oubliez pas !
            Entrez ici votre mot de passe " +"actuel, puis un nouveau mot de passe (2 fois, par sécurité), puis cliquez " +"sur 'Changer mon mot de passe'" + +#: ../admin/mem_param.php:63 +msgid "Old password" +msgstr "Ancien mot de passe" + +#: ../admin/mem_param.php:66 +msgid "Change my password" +msgstr "Changer mon mot de passe" + +#: ../admin/mem_param.php:75 +msgid "help_chg_mail" +msgstr "" +"Vous pouvez modifier ici l'adresse email d'inscription correspondant à votre " +"compte AlternC.
            Entrez ici la nouvelle adresse email. Un message est " +"envoyé à cette adresse pour confirmation." + +#: ../admin/mem_param.php:76 +msgid "Current mailbox" +msgstr "Adresse email actuelle" + +#: ../admin/mem_param.php:77 +msgid "New mailbox" +msgstr "Nouvelle adresse email" + +#: ../admin/mem_param.php:78 +msgid "Change my email address" +msgstr "Changer mon adresse email" + +#: ../admin/mem_param.php:85 +msgid "Online help settings" +msgstr "Paramètres de l'aide en ligne" + +#: ../admin/mem_param.php:86 +msgid "help_help_settings" +msgstr "" +"Chaque page du bureau virtuel peut vous présenter une aide succinte, " +"accompagnée d'un lien vers l'aide en ligne
            Si vous voulez afficher " +"cette aide automatique, cochez la case ci-dessous." + +#: ../admin/mem_param.php:87 +msgid "Do you want to see the help texts and links on each page?" +msgstr "Voulez-vous voir les textes d'aide et les liens sur chaque page ?" + +#: ../admin/mem_param.php:88 +msgid "Change these settings" +msgstr "Modifier ce paramètre" + +#: ../admin/mem_param.php:101 +msgid "Members list view" +msgstr "Vue de la liste des membres" + +#: ../admin/mem_param.php:102 +msgid "Large view" +msgstr "Vue large" + +#: ../admin/mem_param.php:103 +msgid "Short view" +msgstr "Vue étroite" + +#: ../admin/mem_param.php:105 +msgid "Change my admin preferences" +msgstr "Modifier mes préférences d'administration" + +#: ../admin/mem_passwd.php:35 ../admin/sql_pass.php:38 +msgid "Your password has been successfully changed." +msgstr "Votre mot de passe a été changé avec succès." + +#: ../admin/menu_adm.php:38 +msgid "Administration" +msgstr "Administration" + +#: ../admin/menu_adm.php:41 +msgid "Manage the Alternc accounts" +msgstr "Gérer les comptes AlternC" + +#: ../admin/menu_adm.php:42 +msgid "User Quotas" +msgstr "Quotas Utilisateurs" + +#: ../admin/menu_adm.php:45 +msgid "General PhpMyAdmin" +msgstr "PhpMyAdmin Général" + +#: ../admin/menu_aide.php:32 +msgid "Online help" +msgstr "Aide en ligne" + +#: ../admin/menu_dom.php:40 ../admin/quotas_oneuser.php:22 +#: ../admin/quotas_users.php:131 +msgid "Domains" +msgstr "Domaines" + +#: ../admin/menu_ftp.php:40 +msgid "FTP accounts" +msgstr "Comptes FTP" + +#: ../admin/menu_lang.php:3 +msgid "Langues" +msgstr "Langues" + +#: ../admin/menu_mail.php:40 +msgid "Email Addresses" +msgstr "Adresses email" + +#: ../admin/menu_mem.php:32 +msgid "Settings" +msgstr "Configuration" + +#: ../admin/menu_mem.php:35 +msgid "Logout" +msgstr "Se déconnecter" + +#: ../admin/menu.php:36 +msgid "Home / Information" +msgstr "Accueil / Information" + +#: ../admin/menu_quota.php:32 +msgid "Show my quotas" +msgstr "Quotas du compte AlternC" + +#: ../admin/menu_sql.php:38 +msgid "Databases" +msgstr "Bases de données" + +#: ../admin/menu_sql.php:39 ../admin/sql_users_list.php:37 +msgid "MySQL Users" +msgstr "Utilisateurs MySQL" + +#: ../admin/menu_sql.php:40 +msgid "PhpMyAdmin" +msgstr "PhpMyAdmin" + +#: ../admin/menu_sta2.php:37 +msgid "Raw web statistics" +msgstr "Statistiques web brutes" + +#: ../admin/menu_web.php:34 +msgid "Protected folders" +msgstr "Répertoires protégés" + +#: ../admin/quota_show.php:34 +msgid "Account's quotas" +msgstr "Quotas du compte" + +#: ../admin/quota_show.php:40 +msgid "No quotas for this account, or quotas currently unavailable!" +msgstr "Aucun quota pour ce compte AlternC, ou quota impossible à obtenir !" + +#: ../admin/quotas_oneuser.php:13 +msgid "Web Space:" +msgstr "Espace Web :" + +#: ../admin/quotas_oneuser.php:14 ../admin/quotas_oneuser.php:53 +#: ../admin/quotas_oneuser.php:90 ../admin/quotas_oneuser.php:130 +#: ../admin/quotas_users.php:286 ../admin/quotas_users.php:322 +#: ../admin/quotas_users.php:342 ../admin/quotas_users.php:355 +msgid "MB" +msgstr "Mo" + +#: ../admin/quotas_oneuser.php:23 +msgid "Emails" +msgstr "Adresses email" + +#: ../admin/quotas_oneuser.php:24 ../admin/quotas_oneuser.php:71 +#: ../admin/quotas_oneuser.php:112 ../admin/quotas_users.php:127 +#: ../admin/quotas_users.php:168 +msgid "Space" +msgstr "Espace" + +#: ../admin/quotas_oneuser.php:70 ../admin/quotas_users.php:176 +msgid "DB" +msgstr "Bases" + +#: ../admin/quotas_oneuser.php:111 ../admin/quotas_users.php:172 +#: ../admin/quotas_users.php:175 +msgid "Lists" +msgstr "Listes" + +#: ../admin/quotas_users.php:26 +msgid "" +"This page shows the space and service count of your AlternC server and each " +"AlternC accounts." +msgstr "" +"Cette page montre l'espace et le nombre de service utilisé sur AlternC et " +"pour chaque compte." + +#: ../admin/quotas_users.php:27 +#, php-format +msgid "Sizes are shown as %s" +msgstr "Les tailles sont exprimées en %s" + +#: ../admin/quotas_users.php:27 +msgid "MB." +msgstr "Mo." + +#: ../admin/quotas_users.php:27 +#, php-format +msgid "% of the total." +msgstr "% du total." + +#: ../admin/quotas_users.php:30 +msgid "Server-side view:" +msgstr "Vue générale du serveur :" + +#: ../admin/quotas_users.php:30 +msgid "Global" +msgstr "Global" + +#: ../admin/quotas_users.php:31 +msgid "Detailed view:" +msgstr "Vue détaillée par compte :" + +#: ../admin/quotas_users.php:33 ../admin/quotas_users.php:40 +msgid "Percentage" +msgstr "En pourcentages" + +#: ../admin/quotas_users.php:34 ../admin/quotas_users.php:37 +msgid "Graphical" +msgstr "En graphique" + +#: ../admin/quotas_users.php:36 ../admin/quotas_users.php:39 +msgid "In MB" +msgstr "En Mo" + +#: ../admin/quotas_users.php:45 +msgid "Show the domain names" +msgstr "Afficher les domaines" + +#: ../admin/quotas_users.php:47 +msgid "Hide the domain names" +msgstr "Cacher les domaines" + +#: ../admin/quotas_users.php:50 +msgid "All accounts" +msgstr "Tous les comptes" + +#: ../admin/quotas_users.php:127 ../admin/quotas_users.php:168 +msgid "Count" +msgstr "Nombre" + +#: ../admin/quotas_users.php:136 +msgid "Email addresses" +msgstr "Adresses email" + +#: ../admin/quotas_users.php:142 +msgid "Mailman lists" +msgstr "Listes Mailman" + +#: ../admin/quotas_users.php:148 ../admin/sql_bck.php:48 +#: ../admin/sql_del.php:63 ../admin/sql_dorestore.php:38 +#: ../admin/sql_getparam.php:38 ../admin/sql_list.php:36 +#: ../admin/sql_passchg.php:38 ../admin/sql_restore.php:43 +msgid "MySQL Databases" +msgstr "Base de données MySQL" + +#: ../admin/quotas_users.php:170 +msgid "Dom" +msgstr "Domaines" + +#: ../admin/quotas_users.php:171 ../admin/quotas_users.php:174 +msgid "Mails" +msgstr "Adresses Email" + +#: ../admin/quotas_users.php:173 +msgid "Web" +msgstr "Espace Web" + +#: ../admin/sql_addmain.php:35 +msgid "Your database has been successfully created" +msgstr "Votre base de données a été créée avec succès" + +#: ../admin/sql_add.php:34 ../admin/sql_doadd.php:34 +msgid "err_mysql_1" +msgstr "Vous avez atteint votre quota de bases, vous ne pouvez plus en créer." + +#: ../admin/sql_add.php:39 ../admin/sql_list.php:81 +msgid "Create a new MySQL database" +msgstr "Créer une nouvelle base de données MySQL" + +#: ../admin/sql_add.php:51 +msgid "MySQL Database" +msgstr "Base de données MySQL" + +#: ../admin/sql_add.php:56 +msgid "Create this new MySQL database." +msgstr "Créer cette nouvelle base de données MySQL." + +#: ../admin/sql_admin.php:47 +msgid "SQL Admin" +msgstr "Administration SQL" + +#: ../admin/sql_bck.php:58 +#, php-format +msgid "Manage the SQL backup for database %s" +msgstr "Gérer la sauvegarde de la base %s" + +#: ../admin/sql_bck.php:63 +msgid "Do MySQL backup?" +msgstr "Sauvegarder la base MySQL ?" + +#: ../admin/sql_bck.php:66 +msgid "No backup" +msgstr "Pas de sauvegarde" + +#: ../admin/sql_bck.php:67 +msgid "Weekly backup" +msgstr "Sauvegarde hebdomadaire" + +#: ../admin/sql_bck.php:68 +msgid "Daily backup" +msgstr "Sauvegarde quotidienne" + +#: ../admin/sql_bck.php:72 +msgid "How many backups should be kept?" +msgstr "Combien de sauvegardes conserve-t-on ?" + +#: ../admin/sql_bck.php:84 +msgid "Compress the backups? (gzip)" +msgstr "Compresser les sauvegardes ? (gzip)" + +#: ../admin/sql_bck.php:93 +msgid "In which folder do you want to store the backups?" +msgstr "Où voulez-vous stocker les sauvegardes ?" + +#: ../admin/sql_bck.php:104 +msgid "Change the MySQL backup parameters" +msgstr "Changer les paramètres de sauvegarde MySQL" + +#: ../admin/sql_bck.php:113 ../admin/sql_dorestore.php:56 +#: ../admin/sql_restore.php:71 +msgid "You currently have no database defined" +msgstr "Vous n'avez pas de base de données de définie" + +#: ../admin/sql_del.php:42 +#, php-format +msgid "The database %s has been successfully deleted" +msgstr "La base de données %s a été effacée avec succès" + +#: ../admin/sql_del.php:57 +msgid "Please check which databases you want to delete" +msgstr "Vous devez cocher les bases de données que vous souhaitez effacer" + +#: ../admin/sql_del.php:66 +msgid "Confirm the deletion of the following SQL databases" +msgstr "Confirmez l'effacement des bases de données SQL suivantes" + +#: ../admin/sql_del.php:67 +msgid "This will delete all the tables currently in those db." +msgstr "Cela va effacer toutes les tables présentes dans ces bases." + +#: ../admin/sql_dobck.php:48 +msgid "Your backup parameters has been successfully changed." +msgstr "Vos paramètres de sauvegarde ont été modifiés avec succès" + +#: ../admin/sql_dorestore.php:44 +msgid "Restore a SQL backup" +msgstr "Restaurer une sauvegarde SQL" + +#: ../admin/sql_dorestore.php:50 +msgid "" +"Your database has been restored, check out the previous text for error " +"messages." +msgstr "" +"Votre base a été restaurée, vérifiez les erreurs éventuelles dans le texte " +"ci-dessus." + +#: ../admin/sql_getparam.php:47 +msgid "Your current settings are" +msgstr "Voici vos paramètres actuels" + +#: ../admin/sql_getparam.php:58 +msgid "MySQL Server" +msgstr "Serveur MySQL" + +#: ../admin/sql_getparam.php:62 +msgid "Main database" +msgstr "Base de données principale" + +#: ../admin/sql_getparam.php:67 +msgid "Back to the MySQL database list" +msgstr "Retour à la liste des bases MySQL" + +#: ../admin/sql_list.php:46 +msgid "help_sql_list_ok" +msgstr "" +"Vous disposez de une ou plusieurs bases de données
            Cliquez sur 'Admin " +"SQL' dans le menu pour les administrer
            Ou utilisez le tableau ci-" +"dessous pour gérer les sauvegardes / restaurations, effacer vos bases : " + +#: ../admin/sql_list.php:51 ../admin/sql_list.php:97 +#: ../admin/sql_passchg.php:54 +msgid "Database" +msgstr "Base de données" + +#: ../admin/sql_list.php:51 ../admin/sql_list.php:63 +msgid "Backup" +msgstr "Sauvegarde" + +#: ../admin/sql_list.php:51 ../admin/sql_list.php:64 +msgid "Restore" +msgstr "Restauration" + +#: ../admin/sql_list.php:73 +msgid "Delete the checked databases" +msgstr "Effacer les bases cochées" + +#: ../admin/sql_list.php:83 +msgid "Change the MySQL password" +msgstr "Changer le mot de passe MySQL" + +#: ../admin/sql_list.php:84 +msgid "Get the current MySQL parameters" +msgstr "Afficher les paramètres MySQL actuels" + +#: ../admin/sql_list.php:89 +msgid "help_sql_list_no" +msgstr "" +"Votre base de données principale n'existe pas, entrez ici un mot de passe " +"pour la créer" + +#: ../admin/sql_list.php:96 ../admin/sql_passchg.php:53 +msgid "SQL Server" +msgstr "Serveur MySQL" + +#: ../admin/sql_list.php:98 +msgid "Create my main database" +msgstr "Créer ma base de données principale" + +#: ../admin/sql_passchg.php:46 +msgid "" +"Enter the new password of your MySQL database and click 'change the " +"password' to change it" +msgstr "" +"Entrez le nouveau mot de passe de votre base de données MySQL et cliquez sur " +"'Changer le mot de passe'" + +#: ../admin/sql_restore.php:53 +#, php-format +msgid "Restore a MySQL backup for database %s" +msgstr "Restaurer la sauvegarde MySQL de la base %s" + +#: ../admin/sql_restore.php:56 +msgid "" +"Warning: Write the complete path and the filename.
            For example if your " +"backups are in the directory /Backups,
            write /Backups/file.sql.gz " +"(where file.sql.gz is the filename)." +msgstr "" +"Attention : Indiquez le chemin complet et le nom du fichier
            Par " +"exemple si vos sauvegardes sont dans le répertoire /Sauvegardes,
            écrivez /Sauvegardes/file.sql.gz (où file.sql.gz est le nom du fichier)." + +#: ../admin/sql_restore.php:61 +msgid "" +"Please enter the path and the filename containing SQL data to be restored." +msgstr "" +"Entrez le chemin complet et le nom du fichier contenant des données SQL à " +"restaurer dans la base." + +#: ../admin/sql_restore.php:62 +msgid "Restore my database" +msgstr "Restaurer ma base de données" + +#: ../admin/sql_restore.php:66 +msgid "Note: If the filename ends with .gz, it will be uncompressed before." +msgstr "" +"Note : Si le nom du fichier se termine par .gz, il sera décompressé avant." + +#: ../admin/sql_users_add.php:41 +msgid "err_mysql_13" +msgstr "" +"Vous avez atteint votre quota d'utilisateurs MySQL, vous ne pouvez plus en " +"créer" + +#: ../admin/sql_users_add.php:46 ../admin/sql_users_list.php:86 +msgid "Create a new MySQL user" +msgstr "Créer un nouvel utilisateur MySQL" + +#: ../admin/sql_users_add.php:77 +msgid "Create this new MySQL user" +msgstr "Créer ce nouvel utilisateur MySQL" + +#: ../admin/sql_users_del.php:41 +#, php-format +msgid "The user %s has been successfully deleted" +msgstr "L'utilisateur %s a été effacée avec succès" + +#: ../admin/sql_users_del.php:52 +msgid "MySQL users" +msgstr "Utilisateurs MySQL" + +#: ../admin/sql_users_del.php:55 +msgid "Confirm the deletion of the following MySQL users" +msgstr "Confirmez l'effacement des utilisateurs MySQL suivants" + +#: ../admin/sql_users_dorights.php:44 +msgid "The rights has been successfully applied to the user" +msgstr "La droits ont été appliqués avec succès à l'utilisateur" + +#: ../admin/sql_users_list.php:47 +msgid "help_sql_users_list_ok" +msgstr "Utilisez le tableau ci-dessous pour gérer vos utilisateurs MySQL : " + +#: ../admin/sql_users_list.php:52 +msgid "Rights" +msgstr "Droits" + +#: ../admin/sql_users_list.php:64 +msgid "Manage the rights" +msgstr "Gérer les droits" + +#: ../admin/sql_users_password.php:64 +msgid "Change user password" +msgstr "Modifier le mot de passe de l'utilisateur" + +#: ../admin/sql_users_rights.php:41 +#, php-format +msgid "MySQL Rights for %s" +msgstr "Droits MySQL pour %s" + +#: ../admin/sql_users_rights.php:51 +msgid "help_sql_users_rights_ok" +msgstr "" +"Cochez les droits sur les bases dont vous voulez fournir à l'utilisateur : " + +#: ../admin/sql_users_rights.php:82 +msgid "Reverse selection" +msgstr "Inverse la sélection" + +#: ../admin/sql_users_rights.php:95 +msgid "Apply" +msgstr "Appliquer" + +#: ../admin/sta2_add_raw.php:33 +msgid "You cannot add any new statistics, your quota is over." +msgstr "Vous ne pouvez plus créer de statistiques, votre quota est atteint." + +#: ../admin/sta2_add_raw.php:38 +msgid "New Raw Statistics (apache)" +msgstr "Nouvelles statistiques brutes (apache)" + +#: ../admin/sta2_add_raw.php:51 ../admin/sta2_edit_raw.php:57 +msgid "Domain name:" +msgstr "Nom de domaine :" + +#: ../admin/sta2_add_raw.php:54 ../admin/sta2_edit_raw.php:60 +msgid "Folder where we will put the log file:" +msgstr "Répertoire qui accueillera vos logs :" + +#: ../admin/sta2_add_raw.php:63 +msgid "Create those raw statistics" +msgstr "Créer ce jeu de statistiques brutes" + +#: ../admin/sta2_del_raw.php:42 +#, php-format +msgid "" +"The statistics %s has been successfully deleted (the stats files must be " +"manually deleted)" +msgstr "" +"Le jeu de statistiques %s a été supprimé avec succès (les fichiers de stats " +"doivent etre supprimés manuellement)" + +#: ../admin/sta2_doadd_raw.php:44 +msgid "The statistics has been successfully created" +msgstr "Le jeu de statistiques a été créé avec succès" + +#: ../admin/sta2_doedit_raw.php:33 ../admin/sta2_edit_raw.php:35 +msgid "No Statistics selected!" +msgstr "Aucun jeu de sélectionné !" + +#: ../admin/sta2_doedit_raw.php:41 +msgid "The Statistics has been successfully changed" +msgstr "Le jeu de statistiques a été modifié avec succès" + +#: ../admin/sta2_edit_raw.php:44 +msgid "Change the Raw Statistics" +msgstr "Modifier ce jeu de stats brutes." + +#: ../admin/sta2_edit_raw.php:67 +msgid "Change those Raw Statistics." +msgstr "Modifier ce jeu de stats brutes." + +#: ../admin/sta2_list.php:35 +msgid "Raw Statistics List" +msgstr "Liste des jeux de statistiques brutes" + +#: ../admin/sta2_list.php:41 +msgid "Create new Raw Statistics (apache)" +msgstr "Créer un nouveau jeu de statistiques brutes (apache)" + +#: ../admin/sta2_list.php:79 +msgid "Delete the checked Raw Statistics (apache)" +msgstr "Effacer les jeux de stats brutes cochees" + +#: ../admin/stats_members.php:32 +msgid "" +"Image_Graph not installed. use 'aptitude install php-pear' then 'pear " +"install --alldeps Image_Graph-devel' to see the graph." +msgstr "" +"Image_Graph n'est pas installée. Lancez 'aptitude install php-pear' puis " +"'pear --alldeps install Image_Graph-devel' pour voir le graphique." + +#: ../admin/stats_members.php:41 +msgid "Account creation per month" +msgstr "Comptes créés par mois" + +#: ../admin/stats_members.php:54 +msgid "before the month" +msgstr "avant le mois" + +#: ../admin/stats_members.php:56 +msgid "during the month" +msgstr "durant le mois" + +#: ../admin/trash_dateselect.php:50 +msgid "You want it to be deleted in" +msgstr "Vous souhaitez que cette adresse soit supprimée dans" + +#: ../admin/trash_dateselect.php:57 +msgid "Hours" +msgstr "Heures" + +#: ../admin/trash_dateselect.php:58 +msgid "Days" +msgstr "Jours" + +#: ../admin/trash_dateselect.php:59 +msgid "Weeks" +msgstr "Semaines" + +#: ../admin/trash_dateselect.php:66 +msgid "" +"Delete this email the following day,
            enter the date using DD/MM/YYYY " +"format" +msgstr "" +"Cette adresse doit être supprimée le jour suivant
            entrez la date sous " +"la forme JJ/MM/AAAA" + +#: ../admin/trash_dateselect.php:79 +msgid "All this account information will be deleted at expiration" +msgstr "L'adresse email sera détruite à la date d'expiration" + +# Variables used in functions.php3 +#: ../class/functions.php:286 +msgid "Bytes" +msgstr "Octets" + +# Variables used in functions.php3 +#: ../class/functions.php:288 +msgid "Byte" +msgstr "Octets" + +#: ../class/functions.php:293 +msgid "Kb" +msgstr "Ko" + +#: ../class/functions.php:297 +msgid "Mb" +msgstr "Mo" + +#: ../class/functions.php:301 +msgid "Gb" +msgstr "Go" + +#: ../class/functions.php:303 +msgid "Tb" +msgstr "To" + +#: ../class/functions.php:390 +msgid "years" +msgstr "ans" + +#: ../class/functions.php:390 +msgid "year" +msgstr "an" + +#: ../class/functions.php:392 +msgid "months" +msgstr "mois" + +#: ../class/functions.php:392 +msgid "month" +msgstr "mois" + +#: ../class/functions.php:415 +msgid "Not managed" +msgstr "Non géré" + +#: ../class/m_err.php:66 ../class/m_err.php:94 ../class/m_err.php:96 +msgid "err_" +msgstr "err_" + +#: ../class/mime.php:135 +msgid "CSS Stylesheet" +msgstr "Feuille de style CSS" + +#: ../class/mime.php:136 +msgid "Comma Separated Values data" +msgstr "Données à séparateur virgule" + +#: ../class/mime.php:137 +msgid "DIA Diagram" +msgstr "Diagramme DIA" + +#: ../class/mime.php:138 +msgid "Word Document" +msgstr "Document Word" + +#: ../class/mime.php:139 +msgid "Word Document Template" +msgstr "Modèle de document Word" + +#: ../class/mime.php:140 +msgid "Encapsulated Postscript" +msgstr "Postscript encapsulé" + +#: ../class/mime.php:141 +msgid "GIF Image" +msgstr "Image GIF" + +#: ../class/mime.php:142 +msgid "Macintosh Executable" +msgstr "Exécutable Macintosh" + +#: ../class/mime.php:143 ../class/mime.php:144 +msgid "HTML Document" +msgstr "Document HTML" + +#: ../class/mime.php:145 ../class/mime.php:146 +msgid "JPEG Image" +msgstr "Image JPEG" + +#: ../class/mime.php:147 +msgid "Music Playlist" +msgstr "Liste de pistes musicales" + +#: ../class/mime.php:148 +msgid "MP3 Music File" +msgstr "Fichier musique MP3" + +#: ../class/mime.php:149 +msgid "Ogg Music File" +msgstr "Fichier musique OGG" + +#: ../class/mime.php:150 +msgid "Acrobat PDF" +msgstr "Document PDF" + +#: ../class/mime.php:151 +msgid "PHP Source" +msgstr "Source PHP" + +#: ../class/mime.php:152 +msgid "PNG Image" +msgstr "Image PNG" + +#: ../class/mime.php:153 ../class/mime.php:154 +msgid "Powerpoint Slideshow" +msgstr "Diaporama Powerpoint" + +#: ../class/mime.php:155 +msgid "Postscript Document" +msgstr "Document Postscript" + +#: ../class/mime.php:156 +msgid "Photoshop Image" +msgstr "Image Photoshop" + +#: ../class/mime.php:157 +msgid "Rar Compressed Files" +msgstr "Fichiers compressés RAR" + +#: ../class/mime.php:158 +msgid "Rich Text Document" +msgstr "Document enrichi RTF" + +#: ../class/mime.php:159 +msgid "OpenOffice Spreadsheet" +msgstr "Feuille de calcul OpenOffice" + +#: ../class/mime.php:160 +msgid "OpenOffice Drawing" +msgstr "Dessin OpenOffice" + +#: ../class/mime.php:161 +msgid "OpenOffice Presentation" +msgstr "Présentation OpenOffice" + +#: ../class/mime.php:162 +msgid "OpenOffice Writer" +msgstr "Texte OpenOffice" + +#: ../class/mime.php:163 ../class/mime.php:164 +msgid "TIFF Image" +msgstr "Image TIFF" + +#: ../class/mime.php:165 +msgid "Text Document" +msgstr "Document Texte" + +#: ../class/mime.php:166 ../class/mime.php:167 +msgid "Virtual Card" +msgstr "Carte de visite" + +#: ../class/mime.php:168 +msgid "Gimp Image" +msgstr "Image GIMP" + +#: ../class/mime.php:169 +msgid "Excel Spreadsheet" +msgstr "Feuille de calcul Excel" + +#: ../class/mime.php:170 +msgid "Zip Compressed Files" +msgstr "Fichiers compressés ZIP" + +#: ../class/mime.php:171 +msgid "Flash Animation" +msgstr "Animation Flash" + +#: ../class/mime.php:172 ../class/mime.php:173 ../class/mime.php:174 +msgid "Real Media File" +msgstr "Fichier Real Media" + +#: ../class/m_mem.php:497 +msgid "Help" +msgstr "Aide" + +#~ msgid "New member" +#~ msgstr "Nouveau compte : " + +#~ msgid "Create the domain username.%s" +#~ msgstr "Installer le domaine login.%s" + +#~ msgid "Create a new member" +#~ msgstr "Créer un nouvel utilisateur" + +#~ msgid "Member" +#~ msgstr "Compte AlternC" + +#, fuzzy +#~ msgid "Account Enabled ?" +#~ msgstr "Compte Actif ? " + +#, fuzzy +#~ msgid "Reset quotas to default ?" +#~ msgstr "Réinitialiser les quotas de ce compte ?" + +#~ msgid "Back to the account list" +#~ msgstr "Retour à la liste des comptes AlternC" + +#~ msgid "Member list" +#~ msgstr "Liste des comptes" + +#~ msgid "Here is the list of hosted members" +#~ msgstr "Voici la liste des comptes AlternC hébergés" + +#~ msgid "List all the accounts" +#~ msgstr "Liste de tous les comptes AlternC" + +#~ msgid "Last fail" +#~ msgstr "Dernièr échec" + +#~ msgid "Locked Account" +#~ msgstr "Compte AlternC verrouillé" + +#~ msgid "AlternC Desktop" +#~ msgstr "Bureau AlternC" + +#~ msgid "Show all quotas" +#~ msgstr "Montrer tous les quotas" + +#~ msgid "mode" +#~ msgstr "mode" + +#~ msgid "all/none" +#~ msgstr "tous/aucun" + +#~ msgid "Import this file" +#~ msgstr "Importer ce fichier" + +#~ msgid "Send" +#~ msgstr "Envoyer" + +#~ msgid "There is an ftp account in this folder" +#~ msgstr "Il existe un compte ftp dans ce répertoire" + +#~ msgid "Click here to edit this ftp account." +#~ msgstr "Cliquez ici pour le modifier." + +#~ msgid "Click here to create an ftp account in this folder." +#~ msgstr "Cliquer ici pour créer un compte ftp dans ce répertoire." + +#~ msgid "This folder has restricted access" +#~ msgstr "Le répertoire est protégé" + +#~ msgid "Click here to protect this folder with login/password" +#~ msgstr "Cliquer ici pour protéger ce répertoire par un login / mot de passe" + +#~ msgid "Download" +#~ msgstr "Télécharger" + +#~ msgid "this folder and its subfolders as a compressed file" +#~ msgstr "ce répertoire dans un fichier compressé" + +#~ msgid "Configure the file browser" +#~ msgstr "Configurer le gestionnaire de fichiers" + +#~ msgid "File editor preferences" +#~ msgstr "Préférences du gestionnaire de fichiers" + +#~ msgid "Back to the file browser" +#~ msgstr "Retour au gestionnaire de fichiers" + +#~ msgid "" +#~ "The domain %s has been changed. The modifications will take effect in 5 " +#~ "minutes." +#~ msgstr "" +#~ "Votre domaine %s a été modifié. Les modifications prendront effet dans 5 " +#~ "minutes." + +#~ msgid "Subdomains" +#~ msgstr "Sous-domaines" + +#~ msgid "Add a subdomain" +#~ msgstr "Ajouter un sous-domaine" + +#, fuzzy +#~ msgid "Locally managed" +#~ msgstr "Non géré" + +#, fuzzy +#~ msgid "URL redirection" +#~ msgstr "Redirection vers l'URL : " + +#, fuzzy +#~ msgid "IP redirection" +#~ msgstr "Redirection vers l'URL : " + +#, fuzzy +#~ msgid "Webmail access" +#~ msgstr "Accès au webmail" + +#~ msgid "DNS parameters" +#~ msgstr "Paramètres DNS" + +#~ msgid "help_dns_mx %s %s" +#~ msgstr "" +#~ "Si l'on gère vos DNS :
            Vous pouvez choisir de faire gérer vos " +#~ "mails ailleurs (champ MX).
            Mettez %s dans ce " +#~ "champ pour gérer vos mails par %s
            Sinon mettez l'ip ou le nom du " +#~ "serveur que vous souhaitez utiliser pour gérer vos mails." +#~ "\tAttention : Si vous laissez ce champ vide, vous ne pourrez pas " +#~ "utiliser les mails de votre domaine !" + +#~ msgid "MX Field" +#~ msgstr "Champs MX" + +#~ msgid "help_dns_mail" +#~ msgstr "Si l'on ne gère pas vos DNS :
            gère-t-on vos mails ?" + +#~ msgid "Delete %s" +#~ msgstr "Effacer %s" + +#~ msgid "The modifications will take effect in 5 minutes." +#~ msgstr "Les modifications seront prises en comptes dans 5 minutes." + +#~ msgid "The folder must exists." +#~ msgstr "Le répertoire doit déjà exister." + +#~ msgid "Add a username" +#~ msgstr "Ajouter un utilisateur" + +#~ msgid "Administration of" +#~ msgstr "Administration de" + +#~ msgid "Enter your username and password to connect to the virtual desktop" +#~ msgstr "" +#~ "Entrez votre nom d'utilisateur et votre mot de passe pour vous connecter " +#~ "a l'interface d'administration" + +#~ msgid "Restrict this session to my ip address" +#~ msgstr "Restreindre cette session à mon adresse IP" + +#~ msgid "You can use a different language: " +#~ msgstr "Vous pouvez utiliser une langue différente : " + +#~ msgid "AlternC, Opensource hosting control panel" +#~ msgstr "AlternC, Panneau de contrôle d'hébergement mutualisé opensource" + +#~ msgid "Is it a POP account?" +#~ msgstr "Est-ce un compte POP/IMAP ?" + +#~ msgid "POP password" +#~ msgstr "Mot de passe POP" + +#~ msgid "Other recipients" +#~ msgstr "Autres destinataires" + +#~ msgid "One email per line" +#~ msgstr "une adresse email par ligne" + +#~ msgid "Create this mailbox" +#~ msgstr "Ajouter cette adresse email" + +#~ msgid "Delete the selected mailboxes" +#~ msgstr "Effacer les adresses email cochées" + +#~ msgid "Don't delete accounts and go back to the mail list" +#~ msgstr "Ne rien supprimer et revenir à la liste des adresses email" + +#~ msgid "The mailbox %s has been successfully created" +#~ msgstr "L'adresse email %s a été créée avec succès" + +#~ msgid "Back to the mail account list" +#~ msgstr "Retour à la liste des comptes AlternC" + +#~ msgid "The mailbox %s has been successfully changed" +#~ msgstr "L'adresse email %s a été modifiée avec succès" + +#~ msgid "Edit a mailbox of the domain %s" +#~ msgstr "Modification d'une adresse email sur le domaine %s" + +#~ msgid "Edit the mailbox %s" +#~ msgstr "Modifier l'adresse email %s" + +#~ msgid "Change this mailbox" +#~ msgstr "Modifier cette adresse email" + +#~ msgid "Mailbox list of the domain %s" +#~ msgstr "Liste des adresses emails du domaine %s" + +#~ msgid "Change my mail" +#~ msgstr "Changer mon adresse email" + +#~ msgid "Manage the members" +#~ msgstr "Gérer les comptes AlternC" + +#~ msgid "General SQL Admin" +#~ msgstr "PhpMyAdmin Général" + +#~ msgid "Mailboxes" +#~ msgstr "Adresses email" + +#~ msgid "Front page" +#~ msgstr "Accueil" + +#~ msgid "Create a new database" +#~ msgstr "Créer une nouvelle base de données" + +#~ msgid "Create this new database." +#~ msgstr "Créer cette nouvelle base de données MySQL." + +#~ msgid "Do sql backup?" +#~ msgstr "Sauvegarder la base MySQL ?" + +#~ msgid "How many backup should be kept?" +#~ msgstr "Combien de sauvegardes conserve-t-on ?" + +#~ msgid "Change the SQL backup parameters" +#~ msgstr "Changer les paramètres de sauvegarde MySQL" + +#~ msgid "Change the SQL password" +#~ msgstr "Changer le mot de passe MySQL" + +#~ msgid "Get the current SQL parameters" +#~ msgstr "Afficher les paramètres MySQL actuels" + +#~ msgid "" +#~ "Enter the new password of your SQL database and click 'change the " +#~ "password' to change it" +#~ msgstr "" +#~ "Entrez le nouveau mot de passe de votre base de données MySQL et cliquez " +#~ "sur 'Changer le mot de passe'" + +#~ msgid "Restore a SQL backup for database %s" +#~ msgstr "Restaurer la sauvegarde MySQL de la base %s" + +#~ msgid "Please enter the filename containing SQL data to be restored." +#~ msgstr "" +#~ "Choisissez le nom du fichier contenant des données SQL à restaurer dans " +#~ "la base." + +#~ msgid "err_mysql_20" +#~ msgstr "" +#~ "Vous avez atteint votre quota d'utilisateurs, vous ne pouvez plus en " +#~ "créer." + +#~ msgid "Create this new user" +#~ msgstr "Créer ce nouvel utilisateur" + +#~ msgid "Statistics List" +#~ msgstr "Liste des jeux de statistiques brutes" + +#~ msgid "This TLD is forbidden" +#~ msgstr "Ce TLD est interdit" + +#~ msgid "primary DNS is checked in WHOIS db" +#~ msgstr "vérifier le DNS primaire dans la base WHOIS" + +#~ msgid "primary & secondary DNS are checked in WHOIS db" +#~ msgstr "vérifier les dns primaires ET secondaires dans la base WHOIS" + +#~ msgid "Domain must exist, but don't do any DNS check" +#~ msgstr "Le domaine doit exister, mais ne vérifie pas les DNS" + +#~ msgid "Domain can be installed, no check at all" +#~ msgstr "Le domaine peut être installé sans aucun contrôle" + +#~ msgid "Domain can be installed, force NO DNS hosting)" +#~ msgstr "Le domaine peut être installé, (ne gère pas les DNS cependant)" + +#~ msgid "_" +#~ msgstr "_" + +#~ msgid "Update this page" +#~ msgstr "Recharger cette page" + +#~ msgid "Deactivate" +#~ msgstr "Désactiver" + +#~ msgid "WARNING : Confirm the deletion of this files" +#~ msgstr "ATTENTION : Confirmez-vous la suppression de ces fichiers" + +#~ msgid "Please choose the filename containing SQL data to be restored." +#~ msgstr "" +#~ "Choisissez le nom du fichier contenant des données SQL à restaurer dans " +#~ "la base." + +#~ msgid "OR" +#~ msgstr "OU" + +#~ msgid "" +#~ "Image_Graph not installed. pear install Image_Graph-devel to see the " +#~ "graph." +#~ msgstr "" +#~ "Image_Graph n'est pas installé. pear install Image_Graph-devel pour voir " +#~ "ce graphique." + +#~ msgid "Old Name:" +#~ msgstr "Ancien nom : " + +#~ msgid "New Name:" +#~ msgstr "Nouveau nom : " + +#~ msgid "Move to" +#~ msgstr "Déplacer vers" + +#~ msgid "" +#~ "The subdomain has been deleted. Changes will take place in 5 minutes." +#~ msgstr "" +#~ "Le sous-domaine a ete supprime, les modifications seront prises en " +#~ "comptes dans 5 minutes." + +#~ msgid "" +#~ "Image_Graph not installed. use 'aptitude install php-pear' then 'pear --" +#~ "alldeps install Image_Graph-devel' to see the graph." +#~ msgstr "" +#~ "Image_Graph n'est pas installée. Lancez 'aptitude install php-pear' puis " +#~ "'pear --alldeps install Image_Graph-devel' pour voir le graphique." + +#~ msgid "Copy to" +#~ msgstr "Copier vers" + +#~ msgid "WARNING: turning POP off will DELETE the mailbox and its content" +#~ msgstr "" +#~ "ATTENTION: décocher la case POP EFFACERA le contenu de l'adresse email" + +#~ msgid "AlternC configuration" +#~ msgstr "Configuration d'AlternC" + +#~ msgid "Files and directories" +#~ msgstr "Fichiers et répertoires" + +#~ msgid "Languages" +#~ msgstr "Langues" + +#~ msgid "Other" +#~ msgstr "Autre" + +#~ msgid "Messages" +#~ msgstr "Messages" + +#~ msgid "Users" +#~ msgstr "Utilisateurs" + +#~ msgid "Web statistics" +#~ msgstr "Statistiques web" + +#~ msgid "Show disk usage of directories (slow)" +#~ msgstr "Afficher la taille complète des répertoires (lent)" + +#~ msgid "Sub-domain" +#~ msgstr "Sous-domaine" + +#~ msgid "" +#~ "Warning: Deleting a mailbox will destroy all the emails it contains! You " +#~ "will NOT be able to get it back!" +#~ msgstr "" +#~ "Attention: La suppression d'une adresse email détruit tous ses " +#~ "messages ! Vous ne pourrez PLUS retrouver les messages ainsi " +#~ "effacés !" + +#~ msgid "Validate this change" +#~ msgstr "Valider les changements" + +#~ msgid "Actions" +#~ msgstr "Actions" + +#, fuzzy +#~ msgid "" +#~ "The classes of characters are :
            1. Low-case letters (a-z)
            2. " +#~ "Upper-case letters (A-Z)
            3. Figures (0-9)
            4. Ascii symbols (!\"#" +#~ "$%&'()*+,-./:;<=>?@[\\]^_`)
            5. Non-Ascii symbols (~...)" +#~ msgstr "" +#~ "Les classes de caractère sont :
            1. Lettres minuscules (a-z)
            2. " +#~ "Lettres majuscules (A-Z)
            3. Chiffres (0-9)
            4. Caractères Ascii " +#~ "(!\"#$%&'()*+,-./:;<=>?@[\\]^_`)
            5. Caractères non-Ascii (accents...)" + +#~ msgid "Place" +#~ msgstr "Emplacement" + +#~ msgid "Pending" +#~ msgstr "En cours" + +#~ msgid "Informations for temporary account" +#~ msgstr "Informations du compte temporaire" + +#, fuzzy +#~ msgid "All this account information will
            be deleted at expiration" +#~ msgstr "Cette adresse email sera supprimée
            à sa date d'expiration" + +#~ msgid "" +#~ "All this account information will
            be deleted at expiration time" +#~ msgstr "Cette adresse email sera supprimée
            à sa date d'expiration" + +#~ msgid "Manage this temporary account" +#~ msgstr "Gérer les adresses email temporaires" + +#~ msgid "Create alias" +#~ msgstr "Créer un alias" + +#~ msgid "No auto-deletion date" +#~ msgstr "Pas de date d'autosuppression" + +#~ msgid "Is it an advanced option ?" +#~ msgstr "Est-ce une option avancée ?" + +#~ msgid "Manage the Emails of this domain on the server ?" +#~ msgstr "Gère-t-on les Adresses Emails de ce domaine sur le serveur ?" + +#~ msgid "Back to the email address list" +#~ msgstr "Retour à la liste des adresses email" + +#~ msgid "If you want to use a different language, click on the flag below" +#~ msgstr "" +#~ "Si vous voulez utiliser une langue différente, cliquez l'un des drapeaux " +#~ "ci-dessous" + +#~ msgid "Subscribe this email to the list" +#~ msgstr "Ajouter cette adresse/class à la liste des esclaves DNS." + +#~ msgid "2 months" +#~ msgstr "2 mois" + +#~ msgid "3 months" +#~ msgstr "3 mois" + +#~ msgid "4 months" +#~ msgstr "4 mois" + +#~ msgid "<-No Password->" +#~ msgstr "<-Aucun mot de passe->" diff --git a/stable-1.0/bureau/locales/manual.pot b/stable-1.0/bureau/locales/manual.pot new file mode 100644 index 00000000..df0aafe0 --- /dev/null +++ b/stable-1.0/bureau/locales/manual.pot @@ -0,0 +1,710 @@ +#. Template for AlternC Translation +#. Copyright (c) 2002 the AlternC Development Team +#. +#. $Id: admin.po,v 1.4 2006/02/09 20:12:23 benjamin Exp $ +msgid "" +msgstr "" +"Project-Id-Version: $Id: admin.po,v 1.4 2006/02/09 20:12:23 benjamin Exp $\n" +"Report-Msgid-Bugs-To: i18n@alternc.org\n" +"POT-Creation-Date: 2004-05-24 19:34+0200\n" +"PO-Revision-Date: 2002-06-16 13:50CEST\n" +"Last-Translator: Benjamin Sonntag \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-1\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Emacs 21\n" + +#. -- Only administrators can access this page !! -- +msgid "err_admin_1" +msgstr "" + +#. Account not found +msgid "err_admin_2" +msgstr "" + +#. This login already exists +msgid "err_admin_3" +msgstr "" + +#. -- I cannot create this account -- +msgid "err_admin_4" +msgstr "" + +#. Please enter a valid email address +msgid "err_admin_5" +msgstr "" + +#. All fields are mandatory +msgid "err_admin_6" +msgstr "" + +#. You can ask for your password only once a day ! +msgid "err_admin_7" +msgstr "" + +#. This account is ALREADY an administrator account +msgid "err_admin_8" +msgstr "" + +#. This account is NOT an administrator account ! +msgid "err_admin_9" +msgstr "" + +#. Login can only contains characters a-z, 0-9 and - +msgid "err_admin_10" +msgstr "" + +#. This TLD does not exist +msgid "err_admin_11" +msgstr "" + +#. This TLD already exists +msgid "err_admin_12" +msgstr "" + +#. The login is too long (16 chars max) +msgid "err_admin_13" +msgstr "" + +#. Domain names +msgid "quota_dom" +msgstr "" + +#. Domain '%s' not found. +msgid "err_dom_1" +msgstr "" + +#. The domaine '%s' does not belong to you. +msgid "err_dom_2" +msgstr "" + +#. --- Programm error --- No lock on the domains ! +msgid "err_dom_3" +msgstr "" + +#. The domain name is too long. +msgid "err_dom_4" +msgstr "" + +#. One of the domain name member is too long. +msgid "err_dom_5" +msgstr "" + +#. There is some forbidden characters in the domain name (only A-Z 0-9 and - are allowed). +msgid "err_dom_6" +msgstr "" + +#. The last member of the domain name is incorrect or cannot be hosted in that server. +msgid "err_dom_7" +msgstr "" +"The last member of the domain name is incorrect or cannot be hosted in that " +"server." + +#. The domain already exists. +msgid "err_dom_8" +msgstr "" + +#. The domain has been deleted less than 5 minutes ago, please try again later. +msgid "err_dom_9" +msgstr "" +"The domain has been deleted less than 5 minutes ago, please try again later." + +#. Your domain quota is over, you cannot create more domain names. +msgid "err_dom_10" +msgstr "" + +#. The Whois database is unavailable, please try again later. +msgid "err_dom_11" +msgstr "" + +#. The domain cannot be found in the whois database. +msgid "err_dom_12" +msgstr "" + +#. The domain has been changed less than 5 minutes ago. Please try again in a few minutes. +msgid "err_dom_13" +msgstr "" + +#. The sub-domain does not exist. +msgid "err_dom_14" +msgstr "" + +#. No change has been requested... +msgid "err_dom_15" +msgstr "" + +#. The sub-domain already exists. +msgid "err_dom_16" +msgstr "" + +#. --- Programm error --- Lock already obtained ! +msgid "err_dom_17" +msgstr "" + +#. This domain is the server's domain !!! You cannot host it on your account ! +msgid "err_dom_18" +msgstr "" + +#. The IP address you entered is incorrect. +msgid "err_dom_19" +msgstr "" + +#. The URL you entered is incorrect. +msgid "err_dom_20" +msgstr "" + +#. The folder you entered is incorrect or does not exist. +msgid "err_dom_21" +msgstr "" + +#. The requested domain is forbidden in this server, please contact the administrator +msgid "err_dom_22" +msgstr "" + +#. The DNS of this domain do not match the server's DNS. Please change your +#. domain's DNS (and eventually wait 1 day) before you install it again. +msgid "err_dom_23" +msgstr "" + +#. There is some forbidden characters in the sub domain (only A-Z 0-9 and - are allowed). +msgid "err_dom_24" +msgstr "" + +#. There is no MX record pointing to this server, and you are asking us to host the Mail here +msgid "err_dom_25" +msgstr "" + +#. - Entrez le nom du domaine que vous souhaitez héberger. Le nom de domaine +#. doit être complet, mais sans le www.
            IMPORTANT : Si vous voulez +#. un hébergement réel de domaine, il faut que les DNS de votre domaine +#. pointent vers nos serveurs DNS. Contacter votre hébergeur pour plus +#. d'information.
            Exemples : globenet.org / demo.com / test.eu.org etc. +#.
            Plus d'info sur la gestion des domaines dans l'aide en ligne +#. HELPID_200
            +msgid "hlp_add_domain" +msgstr "" + +#. Cliquez sur le lien ci-dessus. Vous pourrez ensuite accéder aux paremètres +#. du domaine dans le menu à gauche.2 liens vont apparaitre :
            - un +#. premier pour modifier les paramètres d'hébergement du domaine (sous- +#. domaines, redirections, hébergement mails ...)
            - un second pour gérer +#. les comptes emails du domaine (si vous souhaitez créer des boites aux +#. lettres).
            Plus d'info sur la gestion des domaines dans l'aide en ligne +#. HELPID_200
            +msgid "hlp_add_domain_2" +msgstr "" + +#. Le domaine a été effacé, mais les fichiers de votre site n'ont pas été +#. détruits.
            Si vous souhaitez détruire les fichiers du site web, utilisez +#. le Gestionnaire de Fichier
            Plus d'info sur la gestion des domaines dans +#. l'aide en ligne HELPID_200
            +msgid "hlp_del_domain" +msgstr "" + +#. Cette zone vous permet de modifier les paramètres de votre domaine, ainsi +#. que des sous-domaines installés
            Vous pouvez créer un nouveau sous- +#. domaine et choisir, soit de le rediriger vers votre espace disque, vers une +#. autre adresse Internet, ou vers une adresse IP (utilisateurs avancés)
            +#. Plus d'info sur la gestion des domaines dans l'aide en ligne HELPID_200
            +msgid "hlp_edit_domain" +msgstr "" + +#. FTP Accounts +msgid "quota_ftp" +msgstr "" + +#. No ftp account found +msgid "err_ftp_1" +msgstr "" + +#. This ftp account does not exist +msgid "err_ftp_2" +msgstr "" + +#. The chosen prefix is not allowed +msgid "err_ftp_3" +msgstr "" + +#. This ftp account already exists +msgid "err_ftp_4" +msgstr "" + +#. Your ftp account quota is over. You cannot create more ftp accounts. +msgid "err_ftp_5" +msgstr "" + +#. The directory cannot be created. +msgid "err_ftp_6" +msgstr "" + +#. Voici la liste des comptes ftp ayant accès à votre compte. Cliquez sur +#. 'Modifier' pour changer le nom d'utilisateur, le mot de passe, ou le dossier +#. racine.
            Pour supprimer un compte, cochez la case correspondante et +#. cliquez sur le bouton 'Supprimer les comptes cochés'
            Pour pouvoir +#. accéder à vos fichiers avec un logiciel de ftp, vous devez créer au moins un +#. compte. Chaque compte est associé à un dossier, et n'aura donc accès qu'aux +#. fichiers situés dans ce dossier ou en dessous.
            Plus d'info sur le FTP +#. dans l'aide en ligne HELPID_100
            +msgid "hlp_ftp_list" +msgstr "" + +#. Vous n'avez actuellement aucun Compte FTP de disponible. Cliquez sur +#. 'Création d'un compte ftp' pour en créer un.
            Pour pouvoir accéder à vos +#. fichiers avec un logiciel de ftp, vous devez créer au moins un compte. +#. Chaque compte est associé à un dossier, et n'aura donc accès qu'aux fichiers +#. situés dans ce dossier ou en dessous.
            Plus d'info sur le FTP dans +#. l'aide en ligne HELPID_100
            +msgid "hlp_ftp_list_no" +msgstr "" + +#. Pour ajouter un compte ftp, vous devez choisir un Nom d'utilisateur, un mot +#. de passe, et un répertoire racine
            Le nom d'utilisateur commence +#. toujours par votre nom de login ou le nom d'un de vos domaines.
            Le +#. répertoire racine, s'il n'existe pas, sera créé automatiquement.
            Note : +#. Le compte que vous créez ainsi aura accès en lecture et en écriture aux +#. fichiers situés dans le répertoire et tous ses sous-répertoires.
            Plus +#. d'info sur le FTP dans l'aide en ligne HELPID_100
            +msgid "hlp_ftp_add" +msgstr "" + +#. An incompatible .htaccess file exists in this folder. +msgid "err_hta_1" +msgstr "" + +#. .htaccess parsed and syntaxically correct, a .htpassword file has been created. +msgid "err_hta_2" +msgstr "" + +#. .htaccess parsed and syntaxically correct, a .htpasswd already exist. +msgid "err_hta_3" +msgstr "" + +#. No protected folder +msgid "err_hta_4" +msgstr "" + +#. I cannot delete the file '%s'/.htaccess +msgid "err_hta_5" +msgstr "" + +#. I cannot delete the file '%s'/.htpasswd +msgid "err_hta_6" +msgstr "" + +#. The file .htaccess does not exist +msgid "err_hta_7" +msgstr "" + +#. The folder '%s' does not exist +msgid "err_hta_8" +msgstr "" + +#. The file '%s' is not correct +msgid "err_hta_9" +msgstr "" + +#. The user '%s' already exist for this folder +msgid "err_hta_10" +msgstr "" + +#. Please enter a valid username +msgid "err_hta_11" +msgstr "" + +#. Email Accounts +msgid "quota_mail" +msgstr "" + +#. DB connection impossible, please try again later. +msgid "err_mail_1" +msgstr "" + +#. No email on domain '%s' +msgid "err_mail_2" +msgstr "" + +#. The email '%s' does not exist +msgid "err_mail_3" +msgstr "" + +#. Please check 'pop account' and choose a password pop, or enter some +#. redirections, or both +msgid "err_mail_4" +msgstr "" + +#. -- Server error --- Parameter is incorrect (%s) +msgid "err_mail_5" +msgstr "" + +#. The domain '%s' does not exist. +msgid "err_mail_6" +msgstr "" + +#. The email '%s' already exists. +msgid "err_mail_7" +msgstr "" + +#. Your mail account quota is over. You cannot create more email accounts. +msgid "err_mail_8" +msgstr "" + +#. The domain '%s' does not exist. +msgid "err_mail_9" +msgstr "" + +#. -- Programm error -- Mail quota does not exist +msgid "err_mail_10" +msgstr "" + +#. Please enter an Email address +msgid "err_mail_11" +msgstr "" + +#. Please enter a pop password +msgid "err_mail_12" +msgstr "" + +#. Please enter a valid email +msgid "err_mail_13" +msgstr "" + +#. One or more email redirection are invalid +msgid "err_mail_14" +msgstr "" + +#. This mail is not a pop account. It's impossible to change the password ! +msgid "err_mail_15" +msgstr "" + +#. OK +msgid "err_err_0" +msgstr "" + +#. The error message does not exist (%s) +msgid "err_err_1" +msgstr "" + +#. This is a date representation : parameters are the date as follow : +#. $d,$m,$y,$h,$i,$hh,$am +#. 1 2 3 4 5 6 7 +#. hh is the hour in 12 hours format, and am is 'am' or 'pm'. +#. eg: english : %3$d/%1$d/%2$d, at %6$d:%5$d %7$s +msgid "the %3$d-%2$d-%1$d at %4$d:%5$d" +msgstr "" + +#. User or password incorrect +msgid "err_mem_1" +msgstr "" + +#. This account is locked, contact the administrator +msgid "err_mem_2" +msgstr "" + +#. Cookie incorrect, please accept the session cookie +msgid "err_mem_3" +msgstr "" + +#. Session unknown, contact the administrator +msgid "err_mem_4" +msgstr "" + +#. IP address incorrect, please contact the administrator +msgid "err_mem_5" +msgstr "" + +#. The old password is incorrect +#. PROBLEME : il y avait 2 fois le 5, les autres messages doivent surement etre décalés (TODO) +msgid "err_mem_6" +msgstr "" + +#. The new passwords are differents, please retry +msgid "err_mem_7" +msgstr "" + +#. A password must be at least 3 characters long. +msgid "err_mem_8" +msgstr "" + +#. The information you entered is incorrect +msgid "err_mem_9" +msgstr "" + +#. You are not allowed to change your password. +msgid "err_mem_11" +msgstr "" + +#. You must be a system administrator to do this +msgid "err_mem_12" +msgstr "" + +#. Français (France) +#. Please do NOT translate those strings to each language. Use the original language instead +msgid "fr_FR" +msgstr "" + +#. Français (Canada) +#. Please do NOT translate those strings to each language. Use the original language instead +msgid "fr_CA" +msgstr "" + +#. English (United States) +#. Please do NOT translate those strings to each language. Use the original language instead +msgid "en_US" +msgstr "" + +#. English (United Kingdom) +#. Please do NOT translate those strings to each language. Use the original language instead +msgid "en_UK" +msgstr "" + +#. Deutsch (Germany) +#. Please do NOT translate those strings to each language. Use the original language instead +msgid "de_DE" +msgstr "" + +#. Español (Spania) +#. Please do NOT translate those strings to each language. Use the original language instead +msgid "es_ES" +msgstr "" + +#. Español (Venezuela) +#. Please do NOT translate those strings to each language. Use the original language instead +msgid "es_VE" +msgstr "" + +#. OK +msgid "err_quota_0" +msgstr "" + +#. Error writing the quota entry ! +msgid "err_quota_1" +msgstr "" + +#. MySQL Databases +msgid "quota_mysql" +msgstr "" + +#. MySQL Users +msgid "quota_mysql_users" +msgstr "" + +#. Disk space +msgid "quota_web" +msgstr "" + +#. Data base name can contain only digits or lowercase alphabetic characters +msgid "err_mysql_2" +msgstr "" + +#. The database does not exist, you'll get an access by creating it. +msgid "err_mysql_3" +msgstr "" + +#. This database already exists! +msgid "err_mysql_4" +msgstr "" + +#. Your backup number is incorrect. +msgid "err_mysql_5" +msgstr "" + +#. The folder is incorrect! +msgid "err_mysql_6" +msgstr "" + +#. The file name you chose does not exist or is incorrect. +msgid "err_mysql_7" +msgstr "" + +#. The password is too long (16 chars max) +msgid "err_mysql_8" +msgstr "" + +#. The file is incorrect or does not exist. +msgid "err_mysql_9" +msgstr "" + +#. Your cannot create your main database : you still have other dbs ! +msgid "err_mysql_10" +msgstr "" + +#. You have no database, click on 'Databases' to create the first one +msgid "err_mysql_11" +msgstr "" + +#. The data base name is too long (64 chars max) +msgid "err_mysql_12" +msgstr "" + +#. You cannot create more MySQL users +msgid "err_mysql_13" +msgstr "" + +#. MySQL users can only have a-z and 0-9 characters. +msgid "err_mysql_14" +msgstr "" + +#. MySQL users must be less than 16 characters long. +msgid "err_mysql_15" +msgstr "" + +#. This MySQL user already exists. +msgid "err_mysql_16" +msgstr "" + +#. Passwords do not match. +msgid "err_mysql_17" +msgstr "" + +#. The requested MySQL user does not exist. +msgid "err_mysql_18" +msgstr "" + +#. You have no MySQL users at the moment. +msgid "err_mysql_19" +msgstr "" + +#. Your MySQL backups are stored in the chosen folder from db.sql.1 to db.sql.19
            your database name replaces 'db'.
            WARNING: If you modify backup settings (backups, compression...) previous +#. backups may remain in the backup folder. Go to the file manager to delete +#. them. +msgid "hlp_sql_bck" +msgstr "" + +#. Web Statistics +msgid "quota_sta2" +msgstr "" + +#. You cannot create more raw statistic set. +msgid "err_sta2_1" +msgstr "" + +#. There is currently no raw statistic set. +msgid "err_sta2_2" +msgstr "" + +#. The requested raw statistic set has not been found. +msgid "err_sta2_3" +msgstr "" + +#. File or folder name is incorrect +msgid "err_bro_1" +msgstr "" + +#. You cannot move or copy a file to the same folder +msgid "err_bro_2" +msgstr "" + +#. If we manage your DNS
            You can manage your mails elsewhere if you want +#. (MX field).
            Write %s in this field if your mail +#. must be managed by %s
            or put the IP address or name of the mail server +#. used to manage your mails.Warning : if you put nothing in this field, +#. your mails will be unavailable +msgid "help_dns_mx %s %s" +msgstr "" + +#. If we don't manage the DNS for this domain
            do we manage your mails? +msgid "help_dns_mail" +msgstr "" + +#. If you want to delete the domain %s, click the button below.Warning : this +#. delete all the ftp, mails, mailing-lists ... associated with thisdomain and +#. all its subdomains! +msgid "help_domain_del %s" +msgstr "" + +#. You can create various databases
            Click on 'SQL Admin' in the menu to +#. manage them
            or use the table below to backup, retrieve or delete them: +msgid "help_sql_list_ok" +msgstr "" + +#. Your haven't created your main database yet, please enter a password to create it. +msgid "help_sql_list_no" +msgstr "" + +#. This is a date representation : parameters are the date as follow : +#. $d,$m,$y,$h,$i,$hh,$am +#. 1 2 3 4 5 6 7 +#. hh is the hour in 12 hours format, and am is 'am' or 'pm'. +#. eg: english : %3$d/%1$d/%2$d, at %6$d:%5$d %7$s +msgid "%3$d-%2$d-%1$d %4$d:%5$d" +msgstr "" + + +msgid "1 column, detailed" +msgstr "" + +msgid "2 columns, short" +msgstr "" + +msgid "3 columns, short" +msgstr "" + +msgid "Go back to the file manager" +msgstr "" + +msgid "Edit the newly created file" +msgstr "" + +msgid "hlp_login" +msgstr "" + +msgid "err_admin_14" +msgstr "" +"La politique de mot de passe demandée n'a pas été trouvée, Ce password " +"est refusé (c'est une erreur de programmation ...)" + +msgid "err_admin_15" +msgstr "" +"Le mot de passe est trop court selon votre politique de mot de passe, " +"merci de vérifier" + +msgid "err_admin_16" +msgstr "" +"Le mot de passe est trop long selon votre politique de mot de passe, " +"merci de vérifier" + +msgid "err_admin_17" +msgstr "" +"Le mot de passe ne peut pas être le même que le nom d'utilisateur (ou " +"quelque chose de similaire) selon votre politique de mot de passe, merci " +"de vérifier" + +msgid "err_admin_18" +msgstr "" +"Le mot de passe doit contenir des caractères de %s classes différentes " +"selon votre politique de mot de passe (il n'en contient que %s), merci de " +"vérifier" + +msgid "err_hta_12" +msgstr "Le fichier .htpasswd n'existe pas" + +msgid "err_mail_16" +msgstr "Ce compte esclave MX existe déjà" + +msgid "err_mysql_20" +msgstr "Le mot de passe est obligatoire" + +msgid "err_mysql_21" +msgstr "Le nom d'utilisateur ne peut pas être vide" + +msgid "err_bro_3" +msgstr "" +"Vous n'avez pas le droit d'écrire dans ce répertoire. Vérifiez les droits " +"d'accès !" + +# $d,$m,$y +# 1 2 3 +msgid "%3$d-%2$d-%1$d" +msgstr "%1$02d/%2$02d/%3$04d" + +msgid "AlternC's account password" +msgstr "Mots de passe des comptes AlternC" + +msgid "POP/IMAP account passwords" +msgstr "Mots de passe des comptes POP/IMAP" + +msgid "Protected folders passwords" +msgstr "Mots de passe des dossiers protégés" + diff --git a/stable-1.0/bureau/locales/messages.pot b/stable-1.0/bureau/locales/messages.pot new file mode 100644 index 00000000..33d0bb28 --- /dev/null +++ b/stable-1.0/bureau/locales/messages.pot @@ -0,0 +1,2730 @@ +#: ../admin/adm_add.php:36 ../admin/adm_deactivate.php:41 +#: ../admin/adm_defquotas.php:35 ../admin/adm_dnsweberror.php:33 +#: ../admin/adm_doadd.php:35 ../admin/adm_dodefquotas.php:35 +#: ../admin/adm_dodel.php:33 ../admin/adm_dodel.php:45 +#: ../admin/adm_doedit.php:35 ../admin/adm_doedit.php:42 +#: ../admin/adm_domlock.php:33 ../admin/adm_doms.php:33 +#: ../admin/adm_domstypedoedit.php:4 ../admin/adm_domstypeedit.php:32 +#: ../admin/adm_domstype.php:33 ../admin/adm_domstyperegenerate.php:4 +#: ../admin/adm_donosu.php:33 ../admin/adm_dorenew.php:34 +#: ../admin/adm_dorenew.php:38 ../admin/adm_dosu.php:33 +#: ../admin/adm_edit.php:36 ../admin/adm_edit.php:48 ../admin/adm_list.php:37 +#: ../admin/adm_list.php:58 ../admin/adm_login.php:74 +#: ../admin/adm_login.php:86 ../admin/adm_mxaccount.php:33 +#: ../admin/adm_panel.php:33 ../admin/adm_passpolicy.php:30 +#: ../admin/adm_quotadoedit.php:33 ../admin/adm_quotaedit.php:34 +#: ../admin/adm_slaveaccount.php:33 ../admin/adm_slaveip.php:33 +#: ../admin/adm_tldadd.php:33 ../admin/adm_tlddoadd.php:33 +#: ../admin/adm_tlddoedit.php:33 ../admin/adm_tldedit.php:33 +#: ../admin/adm_tld.php:33 ../admin/adm_variables.php:33 +#: ../admin/quotas_users.php:10 ../class/reset_stats_conf.php:6 +msgid "This page is restricted to authorized staff" +msgstr "" + +#: ../admin/adm_add.php:46 +msgid "New AlternC account" +msgstr "" + +#: ../admin/adm_add.php:56 ../admin/adm_edit.php:69 +#: ../admin/adm_quotaedit.php:68 ../admin/ftp_add.php:54 +#: ../admin/ftp_edit.php:59 ../admin/ftp_list.php:72 +#: ../admin/hta_adduser.php:53 ../admin/hta_edit.php:62 +#: ../admin/hta_edit.php:102 ../admin/index.php:76 +#: ../admin/sql_getparam.php:50 ../admin/sql_list.php:94 +#: ../admin/sql_passchg.php:51 ../admin/sql_users_add.php:64 +msgid "Username" +msgstr "" + +#: ../admin/adm_add.php:60 +msgid "Initial password" +msgstr "" + +#: ../admin/adm_add.php:64 ../admin/adm_edit.php:89 ../admin/ftp_add.php:65 +#: ../admin/ftp_edit.php:71 ../admin/hta_adduser.php:61 +#: ../admin/hta_edit.php:110 ../admin/hta_edituser.php:55 +#: ../admin/mail_add.php:71 ../admin/mail_edit.php:79 +#: ../admin/sql_users_add.php:72 ../admin/sql_users_password.php:59 +msgid "Confirm password" +msgstr "" + +#: ../admin/adm_add.php:68 ../admin/adm_edit.php:93 +msgid "Can he change its password" +msgstr "" + +#: ../admin/adm_add.php:70 ../admin/adm_dodefquotas.php:73 +#: ../admin/adm_dodel.php:81 ../admin/adm_domstype.php:83 +#: ../admin/adm_domstype.php:84 ../admin/adm_domstype.php:85 +#: ../admin/adm_edit.php:78 ../admin/adm_edit.php:95 +#: ../admin/adm_passpolicy.php:112 ../admin/adm_passpolicy.php:158 +#: ../admin/bro_main.php:94 ../admin/dom_dodel.php:74 +#: ../admin/dom_edit.php:182 ../admin/dom_edit.php:194 +#: ../admin/dom_subdel.php:71 ../admin/mail_add.php:65 +#: ../admin/mail_edit.php:73 ../admin/sql_bck.php:87 ../admin/sql_del.php:81 +#: ../admin/sql_users_del.php:70 ../admin/trash_dateselect.php:39 +msgid "No" +msgstr "" + +#: ../admin/adm_add.php:71 ../admin/adm_dodefquotas.php:72 +#: ../admin/adm_dodel.php:80 ../admin/adm_domstype.php:83 +#: ../admin/adm_domstype.php:84 ../admin/adm_domstype.php:85 +#: ../admin/adm_edit.php:79 ../admin/adm_edit.php:96 +#: ../admin/adm_passpolicy.php:113 ../admin/adm_passpolicy.php:158 +#: ../admin/bro_main.php:93 ../admin/dom_dodel.php:74 +#: ../admin/dom_edit.php:181 ../admin/dom_edit.php:193 +#: ../admin/dom_subdel.php:70 ../admin/mail_add.php:66 +#: ../admin/mail_edit.php:74 ../admin/sql_bck.php:88 ../admin/sql_del.php:81 +#: ../admin/sql_users_del.php:70 ../admin/trash_dateselect.php:40 +msgid "Yes" +msgstr "" + +#: ../admin/adm_add.php:75 ../admin/adm_edit.php:100 +msgid "Notes" +msgstr "" + +#: ../admin/adm_add.php:79 ../admin/adm_edit.php:104 +msgid "Surname" +msgstr "" + +#: ../admin/adm_add.php:79 ../admin/adm_edit.php:104 +msgid "First Name" +msgstr "" + +#: ../admin/adm_add.php:83 ../admin/adm_edit.php:108 ../admin/mail_add.php:60 +#: ../admin/mail_list.php:104 +msgid "Email address" +msgstr "" + +#: ../admin/adm_add.php:87 ../admin/adm_dodefquotas.php:43 +#: ../admin/adm_dodefquotas.php:45 ../admin/adm_dodefquotas.php:52 +#: ../admin/adm_dodefquotas.php:54 ../admin/adm_edit.php:112 +msgid "Account type" +msgstr "" + +#: ../admin/adm_add.php:105 +#, php-format +msgid "Install the domain" +msgstr "" + +#: ../admin/adm_add.php:121 +msgid "Create this AlternC account" +msgstr "" + +#: ../admin/adm_add.php:122 ../admin/adm_deactivate.php:61 +#: ../admin/adm_domstypeedit.php:122 ../admin/adm_edit.php:131 +#: ../admin/adm_quotaedit.php:87 ../admin/adm_tldadd.php:65 +#: ../admin/adm_tldedit.php:70 ../admin/bro_pref.php:134 +#: ../admin/browseforfolder.php:136 ../admin/ftp_add.php:68 +#: ../admin/ftp_edit.php:75 ../admin/hta_adduser.php:67 +#: ../admin/mail_add.php:88 ../admin/mail_edit.php:98 ../admin/sql_bck.php:105 +#: ../admin/sql_passchg.php:57 ../admin/sql_users_add.php:78 +#: ../admin/sql_users_password.php:65 +msgid "Cancel" +msgstr "" + +#: ../admin/adm_deactivate.php:36 +msgid "Missing uid" +msgstr "" + +#: ../admin/adm_deactivate.php:47 +msgid "User does not exist" +msgstr "" + +#: ../admin/adm_deactivate.php:52 ../admin/adm_deactivate.php:60 +msgid "Confirm" +msgstr "" + +#: ../admin/adm_deactivate.php:53 +msgid "WARNING: experimental feature, use at your own risk" +msgstr "" + +#: ../admin/adm_deactivate.php:54 +msgid "" +"The following domains will be deactivated and redirected to the URL entered " +"in the following box. A backup of the domain configuration will be displayed " +"as a serie of SQL request that you can run to restore the current " +"configuration if you want. Click confirm if you are sure you want to " +"deactivate all this user's domains." +msgstr "" + +#: ../admin/adm_deactivate.php:59 +msgid "Redirection URL:" +msgstr "" + +#: ../admin/adm_deactivate.php:64 +msgid "Domains of user: " +msgstr "" + +#: ../admin/adm_deactivate.php:67 +msgid "Missing redirect url." +msgstr "" + +#: ../admin/adm_deactivate.php:87 +#, php-format +msgid "-- Redirecting all domains and subdomains of the user %s to %s\n" +msgstr "" + +#: ../admin/adm_defquotas.php:42 ../admin/adm_panel.php:54 +msgid "Change the default quotas" +msgstr "" + +#: ../admin/adm_defquotas.php:55 +msgid "Add account type" +msgstr "" + +#: ../admin/adm_defquotas.php:70 +msgid "Delete account type" +msgstr "" + +#: ../admin/adm_defquotas.php:75 +msgid "" +"Here is the list of the quotas on the server for the new accounts. If you " +"want to change them, enter new values" +msgstr "" + +#: ../admin/adm_defquotas.php:89 +msgid "Accounts of type" +msgstr "" + +#: ../admin/adm_defquotas.php:91 ../admin/adm_list.php:128 +#: ../admin/adm_list.php:173 ../admin/adm_list.php:193 +#: ../admin/menu_quota.php:52 +msgid "Quotas" +msgstr "" + +#: ../admin/adm_defquotas.php:91 +msgid "Default Value" +msgstr "" + +#: ../admin/adm_defquotas.php:109 +msgid "Edit the default quotas" +msgstr "" + +#: ../admin/adm_dnsweberror.php:40 +msgid "Domains and Websites having errors" +msgstr "" + +#: ../admin/adm_dnsweberror.php:50 +msgid "List of the websites having errors in the domain database." +msgstr "" + +#: ../admin/adm_dnsweberror.php:54 ../admin/adm_dnsweberror.php:87 +msgid "Uid" +msgstr "" + +#: ../admin/adm_dnsweberror.php:55 ../admin/adm_dnsweberror.php:88 +#: ../admin/adm_list.php:124 ../admin/adm_list.php:207 +#: ../admin/adm_list.php:208 ../admin/adm_list.php:209 +#: ../admin/quotas_oneuser.php:8 ../admin/quotas_users.php:168 +msgid "Account" +msgstr "" + +#: ../admin/adm_dnsweberror.php:56 ../admin/adm_dnsweberror.php:89 +#: ../admin/dom_add.php:57 ../admin/sta2_list.php:58 +msgid "Domain name" +msgstr "" + +#: ../admin/adm_dnsweberror.php:57 +msgid "FQDN" +msgstr "" + +#: ../admin/adm_dnsweberror.php:58 ../admin/adm_variables.php:57 +msgid "Value" +msgstr "" + +#: ../admin/adm_dnsweberror.php:59 ../admin/adm_domstypeedit.php:76 +#: ../admin/adm_domstype.php:59 +msgid "Description" +msgstr "" + +#: ../admin/adm_dnsweberror.php:60 +msgid "Web Result field" +msgstr "" + +#: ../admin/adm_dnsweberror.php:84 +msgid "List of the domain names having errors in the domain database." +msgstr "" + +#: ../admin/adm_dnsweberror.php:90 +msgid "DNS Result field" +msgstr "" + +#: ../admin/adm_doadd.php:40 ../admin/adm_doedit.php:47 +#: ../admin/ftp_doadd.php:33 ../admin/ftp_doedit.php:36 +#: ../admin/hta_doadduser.php:33 ../admin/hta_doedituser.php:41 +#: ../admin/mail_doadd.php:44 ../admin/mail_doedit.php:49 +msgid "Passwords do not match" +msgstr "" + +#: ../admin/adm_doadd.php:71 +msgid "The new member has been successfully created" +msgstr "" + +#: ../admin/adm_dodefquotas.php:43 +msgid "added" +msgstr "" + +#: ../admin/adm_dodefquotas.php:45 +msgid "could not be added" +msgstr "" + +#: ../admin/adm_dodefquotas.php:52 +msgid "deleted" +msgstr "" + +#: ../admin/adm_dodefquotas.php:54 +msgid "could not be deleted" +msgstr "" + +#: ../admin/adm_dodefquotas.php:63 +#, php-format +msgid "Deleting quota %s" +msgstr "" + +#: ../admin/adm_dodefquotas.php:69 +msgid "WARNING : Confirm the deletion of the quota" +msgstr "" + +#: ../admin/adm_dodefquotas.php:92 +msgid "Default quotas successfully changed" +msgstr "" + +#: ../admin/adm_dodefquotas.php:94 +msgid "Default quotas could not be set." +msgstr "" + +#: ../admin/adm_dodel.php:49 +#, php-format +msgid "Member '%s' does not exist" +msgstr "" + +#: ../admin/adm_dodel.php:51 +#, php-format +msgid "Member %s successfully deleted" +msgstr "" + +#: ../admin/adm_dodel.php:58 +msgid "Please check the accounts you want to delete" +msgstr "" + +#: ../admin/adm_dodel.php:66 +#, php-format +msgid "Deleting users" +msgstr "" + +#: ../admin/adm_dodel.php:70 +msgid "WARNING : Confirm the deletion of the users" +msgstr "" + +#: ../admin/adm_doedit.php:60 +msgid "The member has been successfully edited" +msgstr "" + +#: ../admin/adm_doms.php:40 ../admin/adm_panel.php:53 +msgid "Manage installed domains" +msgstr "" + +#: ../admin/adm_doms.php:53 +msgid "" +"Here is the list of the domains installed on this server. You can remove a " +"domain if it does not exist or does not point to our server anymore. You can " +"also set the 'Lock' flag on a domain so that the user will not be able to " +"change any DNS parameter or delete this domain from his account." +msgstr "" + +#: ../admin/adm_doms.php:56 +msgid "" +"The domain OK column are green when the domain exists in the worldwide " +"registry and has a proper NS,MX and IP depending on its configuration. It is " +"red if we have serious doubts about its NS, MX or IP configuration. Contact " +"the user of this domain or a system administrator." +msgstr "" + +#: ../admin/adm_doms.php:59 +msgid "If you want to force the check of NS, MX, IP on domains, click the link" +msgstr "" + +#: ../admin/adm_doms.php:59 +msgid "Show domain list with refreshed checked NS, MX, IP information" +msgstr "" + +#: ../admin/adm_doms.php:63 ../admin/adm_mxaccount.php:81 +#: ../admin/adm_slaveaccount.php:80 ../admin/adm_slaveip.php:80 +msgid "Action" +msgstr "" + +#: ../admin/adm_doms.php:63 +msgid "Domain" +msgstr "" + +#: ../admin/adm_doms.php:63 +msgid "Creator" +msgstr "" + +#: ../admin/adm_doms.php:63 ../admin/adm_doms.php:81 ../admin/adm_list.php:166 +#: ../admin/adm_list.php:191 +msgid "Connect as" +msgstr "" + +#: ../admin/adm_doms.php:63 +msgid "OK?" +msgstr "" + +#: ../admin/adm_doms.php:63 ../admin/dom_edit.php:97 +msgid "Status" +msgstr "" + +#: ../admin/adm_doms.php:72 +msgid "Locked Domain" +msgstr "" + +#: ../admin/adm_doms.php:75 +msgid "Unlock" +msgstr "" + +#: ../admin/adm_doms.php:75 +msgid "Lock" +msgstr "" + +#: ../admin/adm_domstypeedit.php:58 +msgid "Edit a domain type" +msgstr "" + +#: ../admin/adm_domstypeedit.php:72 ../admin/adm_domstype.php:58 +msgid "Name" +msgstr "" + +#: ../admin/adm_domstypeedit.php:80 +msgid "Target type" +msgstr "" + +#: ../admin/adm_domstypeedit.php:90 ../admin/adm_domstype.php:61 +msgid "Entry" +msgstr "" + +#: ../admin/adm_domstypeedit.php:94 +msgid "Compatibility" +msgstr "" + +#: ../admin/adm_domstypeedit.php:94 ../admin/adm_domstype.php:62 +msgid "Enter comma-separated name of other types" +msgstr "" + +#: ../admin/adm_domstypeedit.php:98 ../admin/dom_edit.php:125 +msgid "Enabled" +msgstr "" + +#: ../admin/adm_domstypeedit.php:108 +msgid "Do only a DNS entry" +msgstr "" + +#: ../admin/adm_domstypeedit.php:112 +msgid "Domain must have our DNS" +msgstr "" + +#: ../admin/adm_domstypeedit.php:116 +msgid "Is it an advanced option?" +msgstr "" + +#: ../admin/adm_domstypeedit.php:121 +msgid "Change this domain type" +msgstr "" + +#: ../admin/adm_domstype.php:40 ../admin/adm_panel.php:65 +msgid "Manage domains type" +msgstr "" + +#: ../admin/adm_domstype.php:42 +msgid "" +"If you don't know what this page is about, don't touch anything, and read " +"AlternC documentation about domain types" +msgstr "" + +#: ../admin/adm_domstype.php:52 +msgid "Here is the list of domain types." +msgstr "" + +#: ../admin/adm_domstype.php:54 +msgid "Create a domain type" +msgstr "" + +#: ../admin/adm_domstype.php:60 +msgid "Target" +msgstr "" + +#: ../admin/adm_domstype.php:62 +msgid "Compatible with" +msgstr "" + +#: ../admin/adm_domstype.php:63 +msgid "Enabled?" +msgstr "" + +#: ../admin/adm_domstype.php:64 +msgid "Only DNS?" +msgstr "" + +#: ../admin/adm_domstype.php:65 +msgid "Need to be DNS?" +msgstr "" + +#: ../admin/adm_domstype.php:66 +msgid "Advanced?" +msgstr "" + +#: ../admin/adm_domstype.php:75 ../admin/adm_list.php:170 +#: ../admin/adm_list.php:192 ../admin/adm_passpolicy.php:152 +#: ../admin/adm_tld.php:76 ../admin/dom_edit.php:106 ../admin/ftp_list.php:82 +#: ../admin/mail_list.php:113 ../admin/sta2_list.php:68 +msgid "Edit" +msgstr "" + +#: ../admin/adm_domstype.php:76 +msgid "Regenerate" +msgstr "" + +#: ../admin/adm_donosu.php:45 +msgid "This account is now a normal account" +msgstr "" + +#: ../admin/adm_dorenew.php:46 +msgid "The member has been successfully renewed" +msgstr "" + +#: ../admin/adm_dosu.php:45 +msgid "This account is now an administrator account" +msgstr "" + +#: ../admin/adm_edit.php:57 +msgid "Member Edition" +msgstr "" + +#: ../admin/adm_edit.php:73 +msgid "Account Enabled?" +msgstr "" + +#: ../admin/adm_edit.php:76 +msgid "You cannot disable your own account." +msgstr "" + +#: ../admin/adm_edit.php:85 ../admin/adm_mxaccount.php:81 +#: ../admin/adm_mxaccount.php:101 ../admin/adm_slaveaccount.php:80 +#: ../admin/adm_slaveaccount.php:100 ../admin/ftp_add.php:64 +#: ../admin/ftp_edit.php:70 ../admin/hta_adduser.php:57 +#: ../admin/hta_edit.php:106 ../admin/index.php:77 ../admin/index.php:94 +#: ../admin/sql_getparam.php:54 ../admin/sql_list.php:95 +#: ../admin/sql_passchg.php:52 ../admin/sql_users_add.php:68 +#: ../admin/sql_users_list.php:52 ../admin/sql_users_password.php:55 +msgid "Password" +msgstr "" + +#: ../admin/adm_edit.php:123 +msgid "Reset quotas to default?" +msgstr "" + +#: ../admin/adm_edit.php:126 +msgid "Period" +msgstr "" + +#: ../admin/adm_edit.php:130 +msgid "Edit this account" +msgstr "" + +#: ../admin/adm_edit.php:143 +msgid "Renew for" +msgstr "" + +#: ../admin/adm_edit.php:144 +msgid "period(s)" +msgstr "" + +#: ../admin/adm_edit.php:147 +msgid "Renew" +msgstr "" + +#: ../admin/adm_edit.php:160 +msgid "This account is a super-admin account" +msgstr "" + +#: ../admin/adm_edit.php:162 +msgid "" +"There is only one administrator account, you cannot turn this account back " +"to normal" +msgstr "" + +#: ../admin/adm_edit.php:165 +msgid "Turn this account back to normal" +msgstr "" + +#: ../admin/adm_edit.php:168 +msgid "Make this account a super admin one" +msgstr "" + +#: ../admin/adm_edit.php:175 +#, php-format +msgid "Account created by %s" +msgstr "" + +#: ../admin/adm_list.php:66 +msgid "AlternC account list" +msgstr "" + +#: ../admin/adm_list.php:75 +msgid "Here is the list of hosted AlternC accounts" +msgstr "" + +#: ../admin/adm_list.php:75 +#, php-format +msgid "%s accounts" +msgstr "" + +#: ../admin/adm_list.php:79 +msgid "List all AlternC accounts" +msgstr "" + +#: ../admin/adm_list.php:89 +msgid "Or only the accounts of:" +msgstr "" + +#: ../admin/adm_list.php:94 +msgid "List only my accounts" +msgstr "" + +#: ../admin/adm_list.php:96 +msgid "Create a new AlternC account" +msgstr "" + +#: ../admin/adm_list.php:100 +msgid "No account defined for now" +msgstr "" + +#: ../admin/adm_list.php:114 ../admin/adm_list.php:198 +#: ../admin/adm_list.php:281 ../admin/ftp_list.php:90 +msgid "Delete checked accounts" +msgstr "" + +#: ../admin/adm_list.php:118 ../admin/adm_list.php:202 +msgid "Minimal view" +msgstr "" + +#: ../admin/adm_list.php:119 ../admin/adm_list.php:203 +msgid "Complete view" +msgstr "" + +#: ../admin/adm_list.php:125 +msgid "Manager" +msgstr "" + +#: ../admin/adm_list.php:126 +msgid "Created by" +msgstr "" + +#: ../admin/adm_list.php:127 +msgid "Created on" +msgstr "" + +#: ../admin/adm_list.php:129 +msgid "Last login" +msgstr "" + +#: ../admin/adm_list.php:130 +msgid "Last ip" +msgstr "" + +#: ../admin/adm_list.php:131 +msgid "Fails" +msgstr "" + +#: ../admin/adm_list.php:132 ../admin/main.php:80 +msgid "Expiry" +msgstr "" + +#: ../admin/adm_list.php:177 ../admin/dom_edit.php:126 +msgid "Disable" +msgstr "" + +#: ../admin/adm_list.php:191 ../admin/adm_list.php:229 +#: ../admin/adm_list.php:246 ../admin/adm_list.php:266 +msgid "C" +msgstr "" + +#: ../admin/adm_list.php:192 ../admin/adm_list.php:230 +#: ../admin/adm_list.php:247 ../admin/adm_list.php:267 +msgid "E" +msgstr "" + +#: ../admin/adm_list.php:193 ../admin/adm_list.php:232 +#: ../admin/adm_list.php:249 ../admin/adm_list.php:269 +msgid "Q" +msgstr "" + +#: ../admin/adm_login.php:45 ../admin/adm_login.php:52 +msgid "Your authentication information are incorrect" +msgstr "" + +#: ../admin/adm_login.php:111 +msgid "Member login" +msgstr "" + +#: ../admin/adm_mxaccount.php:48 ../admin/adm_slaveaccount.php:48 +msgid "The requested account has been deleted. It is now denied." +msgstr "" + +#: ../admin/adm_mxaccount.php:54 ../admin/adm_slaveaccount.php:54 +msgid "The requested account address has been created. It is now allowed." +msgstr "" + +#: ../admin/adm_mxaccount.php:63 ../admin/adm_panel.php:63 +msgid "Manage allowed accounts for secondary mx" +msgstr "" + +#: ../admin/adm_mxaccount.php:77 +msgid "" +"Here is the list of the allowed accounts for secondary mx management. You " +"can configure the alternc-secondarymx package on your secondary mx server " +"and give him the login/pass that will grant him access to your server's mx-" +"hosted domain list. " +msgstr "" + +#: ../admin/adm_mxaccount.php:81 ../admin/adm_mxaccount.php:101 +#: ../admin/adm_slaveaccount.php:80 ../admin/adm_slaveaccount.php:100 +msgid "Login" +msgstr "" + +#: ../admin/adm_mxaccount.php:89 ../admin/adm_slaveaccount.php:88 +#: ../admin/adm_slaveip.php:88 ../admin/bro_main.php:269 +#: ../admin/dom_edit.php:109 +msgid "Delete" +msgstr "" + +#: ../admin/adm_mxaccount.php:98 +msgid "" +"If you want to allow a new server to access your mx-hosted domain list, give " +"him an account." +msgstr "" + +#: ../admin/adm_mxaccount.php:107 ../admin/adm_slaveaccount.php:106 +msgid "Add this account to the allowed list" +msgstr "" + +#: ../admin/adm_panel.php:40 ../admin/menu_adm.php:44 +msgid "Admin Control Panel" +msgstr "" + +#: ../admin/adm_panel.php:51 ../admin/adm_tldadd.php:40 +#: ../admin/adm_tldedit.php:52 ../admin/adm_tld.php:50 +msgid "Manage allowed domains (TLD)" +msgstr "" + +#: ../admin/adm_panel.php:52 +msgid "Password Policies" +msgstr "" + +#: ../admin/adm_panel.php:58 +msgid "Advanced features" +msgstr "" + +#: ../admin/adm_panel.php:61 ../admin/adm_slaveip.php:62 +msgid "Manage allowed ip for slave zone transfers" +msgstr "" + +#: ../admin/adm_panel.php:62 ../admin/adm_slaveaccount.php:62 +msgid "Manage allowed accounts for slave zone transfers" +msgstr "" + +#: ../admin/adm_panel.php:64 ../admin/adm_variables.php:47 +msgid "Configure AlternC variables" +msgstr "" + +#: ../admin/adm_panel.php:66 +msgid "DNS and website having errors" +msgstr "" + +#: ../admin/adm_panel.php:67 +msgid "Account creation statistics" +msgstr "" + +#: ../admin/adm_passpolicy.php:49 +msgid "Manage Password Policy" +msgstr "" + +#: ../admin/adm_passpolicy.php:62 ../admin/adm_passpolicy.php:77 +msgid "Policy not found" +msgstr "" + +#: ../admin/adm_passpolicy.php:66 +msgid "Policy changed" +msgstr "" + +#: ../admin/adm_passpolicy.php:70 +msgid "Cannot edit the policy, an error occurred" +msgstr "" + +#: ../admin/adm_passpolicy.php:81 +msgid "Please choose which policy you want to apply to this password kind:" +msgstr "" + +#: ../admin/adm_passpolicy.php:89 +msgid "Minimum Password Size:" +msgstr "" + +#: ../admin/adm_passpolicy.php:96 +msgid "Maximum Password Size:" +msgstr "" + +#: ../admin/adm_passpolicy.php:103 +msgid "In how many classes of characters must be the password (at least):" +msgstr "" + +#: ../admin/adm_passpolicy.php:110 +msgid "Do we allow the password to be like the login?" +msgstr "" + +#: ../admin/adm_passpolicy.php:116 +msgid "Apply this password policy" +msgstr "" + +#: ../admin/adm_passpolicy.php:117 +msgid "Cancel and go back to the policy list" +msgstr "" + +#: ../admin/adm_passpolicy.php:120 +msgid "" +"The classes of characters are :
            1. Low-case letters (a-z)
            2. " +"Upper-case letters (A-Z)
            3. Figures (0-9)
            4. Ascii symbols (!\"#$" +"%&'()*+,-./:;<=>?@[\\]^_`)
            5. Non-Ascii symbols (accents...)" +msgstr "" + +#: ../admin/adm_passpolicy.php:133 +msgid "" +"Here is the list of the password policies for each place a password may be " +"needed in AlternC's services. For each of those password kind, you can " +"choose which policy will be applied to passwords. A policy is a minimum and " +"maximum password size, and how many classes of characters must appear in the " +"password. You can also forbid (or not) to use the login or part of it as a " +"password." +msgstr "" + +#: ../admin/adm_passpolicy.php:137 +msgid "Password Kind" +msgstr "" + +#: ../admin/adm_passpolicy.php:137 +msgid "Password Policy" +msgstr "" + +#: ../admin/adm_passpolicy.php:139 +msgid "Min Size" +msgstr "" + +#: ../admin/adm_passpolicy.php:140 +msgid "Max Size" +msgstr "" + +#: ../admin/adm_passpolicy.php:141 +msgid "Complexity" +msgstr "" + +#: ../admin/adm_passpolicy.php:142 +msgid "Allow Password=Login?" +msgstr "" + +#: ../admin/adm_quotadoedit.php:48 +msgid "The quotas has been successfully edited" +msgstr "" + +#: ../admin/adm_quotaedit.php:55 +msgid "Editing the quotas of a member" +msgstr "" + +#: ../admin/adm_quotaedit.php:69 ../admin/quota_show.php:42 +msgid "Quota" +msgstr "" + +#: ../admin/adm_quotaedit.php:69 ../admin/quota_show.php:42 +#: ../admin/quotas_users.php:153 ../admin/quotas_users.php:177 +msgid "Total" +msgstr "" + +#: ../admin/adm_quotaedit.php:69 ../admin/quota_show.php:42 +msgid "Used" +msgstr "" + +#: ../admin/adm_quotaedit.php:77 ../class/m_quota.php:99 +#: ../class/m_quota.php:107 ../class/m_quota.php:111 +msgid "quota_" +msgstr "" + +#: ../admin/adm_quotaedit.php:86 +msgid "Edit the quotas" +msgstr "" + +#: ../admin/adm_slaveaccount.php:76 +msgid "" +"Here is the list of the allowed accounts for slave dns synchronization. You " +"can configure the alternc-slavedns package on your slave server and give him " +"the login/pass that will grant him access to your server's domain list. " +msgstr "" + +#: ../admin/adm_slaveaccount.php:97 +msgid "" +"If you want to allow a new server to access your domain list, give him an " +"account." +msgstr "" + +#: ../admin/adm_slaveip.php:48 +msgid "" +"The requested ip address has been deleted. It will be denied in one hour." +msgstr "" + +#: ../admin/adm_slaveip.php:54 +msgid "" +"The requested ip address has been added to the list. It will be allowed in " +"one hour." +msgstr "" + +#: ../admin/adm_slaveip.php:76 +msgid "" +"Here is the list of the allowed ip or ip class for slave dns zone transfer " +"requests (AXFR). You must add the ip address of all the slave DNS you have " +"so that those slaves will be allowed to transfer the zone files. There is " +"also some defaults ip from DNS checks made by some third-party technical " +"offices such as afnic (for .fr domains)" +msgstr "" + +#: ../admin/adm_slaveip.php:80 ../admin/adm_slaveip.php:99 +msgid "IP Address" +msgstr "" + +#: ../admin/adm_slaveip.php:96 +msgid "" +"If you want to allow an ip address or class to connect to your dns server, " +"enter it here. Choose 32 as a prefix for single ip address." +msgstr "" + +#: ../admin/adm_slaveip.php:99 +msgid "Prefix" +msgstr "" + +#: ../admin/adm_slaveip.php:105 +msgid "Add this ip to the slave list" +msgstr "" + +#: ../admin/adm_tldadd.php:50 ../admin/adm_tldadd.php:64 +#: ../admin/adm_tld.php:64 ../admin/adm_tld.php:87 +msgid "Add a new TLD" +msgstr "" + +#: ../admin/adm_tldadd.php:52 +msgid "" +"Enter the new TLD (without the first dot) and choose what check should be " +"done." +msgstr "" + +#: ../admin/adm_tldadd.php:53 +msgid "" +"Warning : only some final tld are known in the whois function of AlternC, " +"please check m_dom.php accordingly." +msgstr "" + +#: ../admin/adm_tldadd.php:59 ../admin/adm_tldedit.php:64 +#: ../admin/adm_tld.php:67 +msgid "TLD" +msgstr "" + +#: ../admin/adm_tldadd.php:60 ../admin/adm_tldedit.php:65 +#: ../admin/adm_tld.php:67 +msgid "Allowed Mode" +msgstr "" + +#: ../admin/adm_tlddoadd.php:42 +msgid "The TLD has been successfully added" +msgstr "" + +#: ../admin/adm_tlddoedit.php:42 +msgid "The TLD has been successfully edited" +msgstr "" + +#: ../admin/adm_tldedit.php:60 +msgid "Edit a TLD" +msgstr "" + +#: ../admin/adm_tldedit.php:69 +msgid "Edit this TLD" +msgstr "" + +#: ../admin/adm_tld.php:41 +msgid "Some TLD cannot be deleted..." +msgstr "" + +#: ../admin/adm_tld.php:44 +msgid "The requested TLD has been deleted" +msgstr "" + +#: ../admin/adm_tld.php:62 +msgid "" +"Here is the list of the TLD allowed on this server. Each TLD can be allowed " +"or denied after some checks (whois, ns, domain exists...)" +msgstr "" + +#: ../admin/adm_tld.php:83 +msgid "Delete the checked TLD" +msgstr "" + +#: ../admin/adm_variables.php:52 +msgid "Here are the internal AlternC variables that are currently being used." +msgstr "" + +#: ../admin/adm_variables.php:57 +msgid "Names" +msgstr "" + +#: ../admin/adm_variables.php:57 +msgid "Comment" +msgstr "" + +#: ../admin/adm_variables.php:74 +msgid "Save variables" +msgstr "" + +#: ../admin/bro_editor.php:44 ../admin/bro_editor.php:50 +#, php-format +msgid "Your file %s has been saved" +msgstr "" + +#: ../admin/bro_editor.php:58 +msgid "File editing" +msgstr "" + +#: ../admin/bro_editor.php:63 +msgid "ctrl+click or shift+click and drag to resize the editing zone" +msgstr "" + +#: ../admin/bro_editor.php:67 +msgid "Save" +msgstr "" + +#: ../admin/bro_editor.php:68 +msgid "Save & Quit" +msgstr "" + +#: ../admin/bro_editor.php:69 +msgid "Quit" +msgstr "" + +#: ../admin/bro_main.php:82 +#, php-format +msgid "Deleting files and/or directories" +msgstr "" + +#: ../admin/bro_main.php:87 +msgid "WARNING: Confirm the deletion of this files" +msgstr "" + +#: ../admin/bro_main.php:133 +msgid "extracting..." +msgstr "" + +#: ../admin/bro_main.php:137 +msgid "failed" +msgstr "" + +#: ../admin/bro_main.php:140 +msgid "done" +msgstr "" + +#: ../admin/bro_main.php:149 ../admin/menu_brouteur.php:34 +msgid "File browser" +msgstr "" + +#: ../admin/bro_main.php:157 +msgid "Path" +msgstr "" + +#: ../admin/bro_main.php:169 +msgid "Send one file:" +msgstr "" + +#: ../admin/bro_main.php:173 +msgid "Send this file" +msgstr "" + +#: ../admin/bro_main.php:181 +msgid "New file or folder:" +msgstr "" + +#: ../admin/bro_main.php:186 +msgid "Create" +msgstr "" + +#: ../admin/bro_main.php:188 ../admin/bro_main.php:228 +msgid "File" +msgstr "" + +#: ../admin/bro_main.php:189 ../admin/bro_main.php:357 ../admin/ftp_add.php:57 +#: ../admin/ftp_edit.php:62 ../admin/ftp_list.php:72 ../admin/hta_add.php:50 +#: ../admin/hta_adduser.php:49 ../admin/hta_edit.php:98 +#: ../admin/hta_edituser.php:52 ../admin/hta_list.php:67 +#: ../admin/sta2_list.php:58 +msgid "Folder" +msgstr "" + +#: ../admin/bro_main.php:206 ../admin/bro_main.php:212 +#: ../admin/bro_main.php:270 +msgid "Rename" +msgstr "" + +#: ../admin/bro_main.php:222 ../admin/bro_main.php:228 +#: ../admin/bro_main.php:271 +msgid "Permissions" +msgstr "" + +#: ../admin/bro_main.php:242 +msgid "write" +msgstr "" + +#: ../admin/bro_main.php:250 +msgid "Change permissions" +msgstr "" + +#: ../admin/bro_main.php:273 +msgid "Copy" +msgstr "" + +#: ../admin/bro_main.php:274 +msgid "Move" +msgstr "" + +#: ../admin/bro_main.php:275 +msgid "To" +msgstr "" + +#: ../admin/bro_main.php:305 +msgid "Filename" +msgstr "" + +#: ../admin/bro_main.php:306 ../admin/mail_list.php:104 +#: ../admin/sql_list.php:51 +msgid "Size" +msgstr "" + +#: ../admin/bro_main.php:307 +msgid "Last modification" +msgstr "" + +#: ../admin/bro_main.php:309 +msgid "File Type" +msgstr "" + +#: ../admin/bro_main.php:334 ../admin/bro_main.php:512 +#: ../admin/sta2_list.php:58 ../admin/sta2_list.php:72 +msgid "View" +msgstr "" + +#: ../admin/bro_main.php:341 +msgid "Extract" +msgstr "" + +#: ../admin/bro_main.php:384 ../admin/bro_main.php:414 +#: ../admin/bro_main.php:451 ../admin/bro_main.php:481 +msgid "V" +msgstr "" + +#: ../admin/bro_main.php:538 +msgid "No files in this folder" +msgstr "" + +#: ../admin/bro_main.php:548 +msgid "Show size of directories" +msgstr "" + +#: ../admin/bro_main.php:548 +msgid "(slow)" +msgstr "" + +#: ../admin/bro_main.php:552 +msgid "Edit this folder's protection" +msgstr "" + +#: ../admin/bro_main.php:555 ../admin/hta_add.php:61 +msgid "Protect this folder" +msgstr "" + +#: ../admin/bro_main.php:557 +msgid "with a login and a password" +msgstr "" + +#: ../admin/bro_main.php:560 +msgid "Download this folder" +msgstr "" + +#: ../admin/bro_main.php:562 +#, php-format +msgid "as a %s file" +msgstr "" + +#: ../admin/bro_main.php:570 +msgid "Edit the ftp account" +msgstr "" + +#: ../admin/bro_main.php:571 +msgid "that exists in this folder" +msgstr "" + +#: ../admin/bro_main.php:577 +msgid "Create an ftp account in this folder" +msgstr "" + +#: ../admin/bro_main.php:586 +msgid "Configure the file editor" +msgstr "" + +#: ../admin/bro_pref.php:34 +msgid "Your preferences have been updated." +msgstr "" + +#: ../admin/bro_pref.php:44 +msgid "File browser preferences" +msgstr "" + +#: ../admin/bro_pref.php:51 +msgid "Horizontal window size" +msgstr "" + +#: ../admin/bro_pref.php:59 +msgid "Vertical window size" +msgstr "" + +#: ../admin/bro_pref.php:67 +msgid "File editor font name" +msgstr "" + +#: ../admin/bro_pref.php:75 +msgid "File editor font size" +msgstr "" + +#: ../admin/bro_pref.php:83 +msgid "File list view" +msgstr "" + +#: ../admin/bro_pref.php:91 +msgid "Downloading file format" +msgstr "" + +#: ../admin/bro_pref.php:99 +msgid "What to do after creating a file" +msgstr "" + +#: ../admin/bro_pref.php:107 +msgid "Show icons?" +msgstr "" + +#: ../admin/bro_pref.php:115 +msgid "Show file types?" +msgstr "" + +#: ../admin/bro_pref.php:123 +msgid "Remember last visited directory?" +msgstr "" + +#: ../admin/bro_pref.php:133 +msgid "Change my settings" +msgstr "" + +#: ../admin/browseforfolder.php:115 +msgid "Searching for a folder" +msgstr "" + +#: ../admin/browseforfolder.php:121 +msgid "Error, cannot find this folder" +msgstr "" + +#: ../admin/browseforfolder.php:123 +msgid "Back to the root folder" +msgstr "" + +#: ../admin/browseforfolder.php:135 +msgid "Select" +msgstr "" + +#: ../admin/dom_add.php:45 +msgid "Domain hosting" +msgstr "" + +#: ../admin/dom_add.php:49 +msgid "You cannot add any new domain, your quota is over." +msgstr "" + +#: ../admin/dom_add.php:49 +msgid "Contact your administrator for more information." +msgstr "" + +#: ../admin/dom_add.php:60 +msgid "host my dns here" +msgstr "" + +#: ../admin/dom_add.php:67 +msgid "" +"Do you want to point this domain to another domain already installed in your " +"account?" +msgstr "" + +#: ../admin/dom_add.php:69 +msgid "No: This domain will have its own folder." +msgstr "" + +#: ../admin/dom_add.php:71 +msgid "Yes, redirect this new domain to this one:" +msgstr "" + +#: ../admin/dom_add.php:72 +msgid "-- Choose a domain --" +msgstr "" + +#: ../admin/dom_add.php:86 +msgid "Add this domain" +msgstr "" + +#: ../admin/dom_add.php:91 +msgid "" +"If you don't want to host in our server the DNS of your domain, don't check " +"the box 'host my dns here'. If you don't know what it mean, leave it checked." +msgstr "" + +#: ../admin/dom_add.php:96 ../admin/dom_doadd.php:60 +msgid "Whois result on the domain" +msgstr "" + +#: ../admin/dom_doadd.php:52 ../admin/menu_dom.php:44 +msgid "Add a domain" +msgstr "" + +#: ../admin/dom_doadd.php:54 +#, php-format +msgid "Your new domain %s has been successfully installed" +msgstr "" + +#: ../admin/dom_doadd.php:55 ../admin/dom_dodel.php:56 +#: ../admin/dom_dodel.php:85 ../admin/dom_editdns.php:70 +#: ../admin/dom_subdodel.php:65 ../admin/hta_doedituser.php:61 +msgid "Click here to continue" +msgstr "" + +#: ../admin/dom_dodel.php:54 +msgid "Deletion have been successfully cancelled" +msgstr "" + +#: ../admin/dom_dodel.php:64 ../admin/dom_dodel.php:67 +#, php-format +msgid "Confirm the deletion of domain %s" +msgstr "" + +#: ../admin/dom_dodel.php:67 ../admin/sql_del.php:66 +#: ../admin/sql_users_del.php:55 +msgid "WARNING" +msgstr "" + +#: ../admin/dom_dodel.php:69 +msgid "This will delete the related sub-domains too." +msgstr "" + +#: ../admin/dom_dodel.php:80 +#, php-format +msgid "Domain %s deleted" +msgstr "" + +#: ../admin/dom_dodel.php:84 +#, php-format +msgid "The domain %s has been successfully deleted." +msgstr "" + +#: ../admin/dom_editdns.php:60 +#, php-format +msgid "Editing domain %s" +msgstr "" + +#: ../admin/dom_editdns.php:65 +#, php-format +msgid "The domain %s has been changed." +msgstr "" + +#: ../admin/dom_editdns.php:68 ../admin/dom_subdodel.php:61 +msgid "The modifications will take effect at %time. Server time is %now." +msgstr "" + +#: ../admin/dom_edit.inc.php:40 +msgid "Edit a subdomain:" +msgstr "" + +#: ../admin/dom_edit.inc.php:42 +msgid "Create a subdomain:" +msgstr "" + +#: ../admin/dom_edit.inc.php:63 +msgid "Show advanced options" +msgstr "" + +#: ../admin/dom_edit.inc.php:64 +msgid "Hide advanced options" +msgstr "" + +#: ../admin/dom_edit.inc.php:85 ../admin/ftp_add.php:60 +#: ../admin/ftp_edit.php:66 ../admin/hta_add.php:54 ../admin/sql_bck.php:97 +#: ../admin/sta2_add_raw.php:57 ../admin/sta2_edit_raw.php:63 +msgid "Choose a folder..." +msgstr "" + +#: ../admin/dom_edit.inc.php:91 +msgid "(enter an URL here)" +msgstr "" + +#: ../admin/dom_edit.inc.php:95 +msgid "(enter an IPv4 address, for example 192.168.1.2)" +msgstr "" + +#: ../admin/dom_edit.inc.php:99 +msgid "(enter an IPv6 address, for example 2001:0910::0)" +msgstr "" + +#: ../admin/dom_edit.inc.php:103 +msgid "(enter a TXT informations for this domain)" +msgstr "" + +#: ../admin/dom_edit.inc.php:107 +msgid "(enter a domain name or subdomain)" +msgstr "" + +#: ../admin/dom_edit.inc.php:117 +msgid "Edit this subdomain" +msgstr "" + +#: ../admin/dom_edit.inc.php:119 +msgid "Add this subdomain" +msgstr "" + +#: ../admin/dom_edit.php:66 +#, php-format +msgid "Editing subdomains of %s" +msgstr "" + +#: ../admin/dom_edit.php:76 +msgid "This domain have some DNS change pending. Please wait." +msgstr "" + +#: ../admin/dom_edit.php:79 +msgid "You requested deletion of this domain." +msgstr "" + +#: ../admin/dom_edit.php:97 +msgid "Subdomain" +msgstr "" + +#: ../admin/dom_edit.php:97 +msgid "Type" +msgstr "" + +#: ../admin/dom_edit.php:129 +msgid "Activation pending" +msgstr "" + +#: ../admin/dom_edit.php:132 +msgid "Disabled" +msgstr "" + +#: ../admin/dom_edit.php:133 +msgid "Enable" +msgstr "" + +#: ../admin/dom_edit.php:136 +msgid "Desactivation pending" +msgstr "" + +#: ../admin/dom_edit.php:143 +msgid "Update pending" +msgstr "" + +#: ../admin/dom_edit.php:146 +msgid "Deletion pending" +msgstr "" + +#: ../admin/dom_edit.php:174 +msgid "DNS & Email parameters" +msgstr "" + +#: ../admin/dom_edit.php:179 +msgid "Manage the DNS on the server ?" +msgstr "" + +#: ../admin/dom_edit.php:190 +msgid "Manage the Emails Addresses of this domain on the server?" +msgstr "" + +#: ../admin/dom_edit.php:197 +msgid "" +"Warning: If you set this to 'no', all your email accounts and aliases on " +"this domain will be immediately deleted." +msgstr "" + +#: ../admin/dom_edit.php:199 +msgid "Submit the changes" +msgstr "" + +#: ../admin/dom_edit.php:204 +msgid "Domain removal" +msgstr "" + +#: ../admin/dom_edit.php:207 +#, php-format +msgid "help_domain_del %s" +msgstr "" + +#: ../admin/dom_edit.php:210 +#, php-format +msgid "Delete %s from this server" +msgstr "" + +#: ../admin/dom_subdel.php:48 +#, php-format +msgid "Deleting subdomain %s" +msgstr "" + +#: ../admin/dom_subdel.php:67 +msgid "WARNING : Confirm the deletion of the subdomain" +msgstr "" + +#: ../admin/dom_subdodel.php:50 +#, php-format +msgid "Deleting the subdomain %s:" +msgstr "" + +#: ../admin/dom_subdoedit.php:65 ../admin/dom_substatus.php:27 +msgid "The modifications will take effect at %time. Server time is %now." +msgstr "" + +#: ../admin/dom_subedit.php:51 +msgid "Editing subdomain" +msgstr "" + +#: ../admin/ftp_add.php:34 +msgid "You cannot add any new ftp account, your quota is over." +msgstr "" + +#: ../admin/ftp_add.php:39 ../admin/ftp_list.php:57 ../admin/menu_ftp.php:44 +msgid "Create a new ftp account" +msgstr "" + +#: ../admin/ftp_add.php:67 +msgid "Create this new FTP account." +msgstr "" + +#: ../admin/ftp_del.php:42 +#, php-format +msgid "The ftp account %s has been successfully deleted" +msgstr "" + +#: ../admin/ftp_doadd.php:44 +msgid "The FTP account has been successfully created" +msgstr "" + +#: ../admin/ftp_doedit.php:33 ../admin/ftp_edit.php:39 +msgid "No account selected!" +msgstr "" + +#: ../admin/ftp_doedit.php:47 +msgid "The ftp account has been successfully changed" +msgstr "" + +#: ../admin/ftp_doedit.php:56 ../admin/ftp_edit.php:48 +msgid "Editing an FTP account" +msgstr "" + +#: ../admin/ftp_edit.php:74 +msgid "Change this FTP account" +msgstr "" + +#: ../admin/ftp_list.php:45 ../admin/menu_ftp.php:46 +msgid "FTP accounts list" +msgstr "" + +#: ../admin/head.php:55 +msgid "" +"Administrator session. you may return to your " +"account or cancel this feature" +msgstr "" + +#: ../admin/hta_add.php:34 ../admin/hta_list.php:50 ../admin/hta_list.php:88 +#: ../admin/web_list.php:3 +msgid "Protect a folder" +msgstr "" + +#: ../admin/hta_add.php:38 +msgid "" +"Enter the name of the folder you want to protect. It must already exists." +msgstr "" + +#: ../admin/hta_adduser.php:39 +#, php-format +msgid "Adding a username in %s" +msgstr "" + +#: ../admin/hta_adduser.php:66 ../admin/hta_edit.php:115 +msgid "Add this user" +msgstr "" + +#: ../admin/hta_del.php:42 +#, php-format +msgid "The protected folder %s has been successfully unprotected" +msgstr "" + +#: ../admin/hta_doadduser.php:39 +msgid "Please enter a password" +msgstr "" + +#: ../admin/hta_doedituser.php:51 +#, php-format +msgid "Change the user %s in the protected folder %s" +msgstr "" + +#: ../admin/hta_doedituser.php:59 +#, php-format +msgid "The password of the user %s has been successfully changed" +msgstr "" + +#: ../admin/hta_edit.php:39 +msgid "No folder selected!" +msgstr "" + +#: ../admin/hta_edit.php:48 +#, php-format +msgid "List of authorized user in folder %s" +msgstr "" + +#: ../admin/hta_edit.php:53 +#, php-format +msgid "No authorized user in %s" +msgstr "" + +#: ../admin/hta_edit.php:73 ../admin/sql_users_password.php:41 +msgid "Change this user's password" +msgstr "" + +#: ../admin/hta_edit.php:82 ../admin/sql_users_list.php:74 +msgid "Delete the checked users" +msgstr "" + +#: ../admin/hta_edit.php:87 +msgid "Show this folder's content in the File Browser" +msgstr "" + +#: ../admin/hta_edit.php:93 +msgid "Adding an authorized user" +msgstr "" + +#: ../admin/hta_edituser.php:40 +#, php-format +msgid "Editing user %s in the protected folder %s" +msgstr "" + +#: ../admin/hta_edituser.php:53 ../admin/sql_users_list.php:52 +msgid "User" +msgstr "" + +#: ../admin/hta_edituser.php:54 ../admin/mem_param.php:64 +#: ../admin/mem_param.php:65 +msgid "New password" +msgstr "" + +#: ../admin/hta_edituser.php:56 ../admin/sql_passchg.php:56 +msgid "Change the password" +msgstr "" + +#: ../admin/hta_list.php:41 +msgid "Protected folders list" +msgstr "" + +#: ../admin/hta_list.php:60 +msgid "help_hta_list" +msgstr "" + +#: ../admin/hta_list.php:78 +msgid "Edit login and passwords" +msgstr "" + +#: ../admin/hta_list.php:87 +msgid "Unprotect the checked folders" +msgstr "" + +#: ../admin/index.php:57 +msgid "Web Hosting Control Panel" +msgstr "" + +#: ../admin/index.php:71 +msgid "" +"To connect to the hosting control panel, enter your AlternC's login and " +"password in the following form and click 'Enter'" +msgstr "" + +#: ../admin/index.php:75 +msgid "AlternC access" +msgstr "" + +#: ../admin/index.php:78 ../admin/index.php:95 +msgid "Enter" +msgstr "" + +#: ../admin/index.php:85 +msgid "" +"If you want to read your mail, enter your Email address and password in the " +"following form and click 'Enter'" +msgstr "" + +#: ../admin/index.php:91 +msgid "Webmail Access" +msgstr "" + +#: ../admin/index.php:92 +msgid "Email Address" +msgstr "" + +#: ../admin/index.php:106 +msgid "You must accept the session cookie to log-in" +msgstr "" + +#: ../admin/mail_add.php:43 +#, php-format +msgid "Add a mail to the domain %s" +msgstr "" + +#: ../admin/mail_add.php:62 ../admin/mail_edit.php:70 +msgid "Is it a POP/IMAP account?" +msgstr "" + +#: ../admin/mail_add.php:70 ../admin/mail_edit.php:78 +msgid "POP/IMAP password" +msgstr "" + +#: ../admin/mail_add.php:76 ../admin/mail_edit.php:88 +msgid "Redirections
            Other recipients:" +msgstr "" + +#: ../admin/mail_add.php:76 ../admin/mail_edit.php:88 +msgid "one email per line" +msgstr "" + +#: ../admin/mail_add.php:80 ../admin/mail_edit.php:91 +msgid "Is it a temporary mail account?" +msgstr "" + +#: ../admin/mail_add.php:87 +msgid "Create this email address" +msgstr "" + +#: ../admin/mail_add.php:94 +msgid "help_mail_add" +msgstr "" + +#: ../admin/mail_del.php:51 +#, php-format +msgid "The email address %s does not exist!" +msgstr "" + +#: ../admin/mail_del.php:53 +#, php-format +msgid "The email address %s has been deleted!" +msgstr "" + +#: ../admin/mail_del.php:63 +msgid "Deleting mail accounts" +msgstr "" + +#: ../admin/mail_del.php:66 +msgid "Please confirm the deletion of the following mail accounts:" +msgstr "" + +#: ../admin/mail_del.php:82 +msgid "Confirm the deletion" +msgstr "" + +#: ../admin/mail_del.php:82 +msgid "Don't delete anything and go back to the email list" +msgstr "" + +#: ../admin/mail_del.php:86 +msgid "" +"Warning: Deleting an email address will destroy all the messages it " +"contains! You will NOT be able to get it back!" +msgstr "" + +#: ../admin/mail_doadd.php:55 +#, php-format +msgid "The email address %s has been successfully created" +msgstr "" + +#: ../admin/mail_dodel.php:40 +#, php-format +msgid "The mailbox %s does not exist!" +msgstr "" + +#: ../admin/mail_dodel.php:43 +#, php-format +msgid "The mailbox %s has been deleted!" +msgstr "" + +#: ../admin/mail_doedit.php:60 +#, php-format +msgid "The email address %s has been successfully changed" +msgstr "" + +#: ../admin/mail_edit.php:48 +#, php-format +msgid "Edit an email address of the domain %s" +msgstr "" + +#: ../admin/mail_edit.php:66 +#, php-format +msgid "Edit the email address %s" +msgstr "" + +#: ../admin/mail_edit.php:68 +msgid "This account is a temporary account.
            It will be delete on " +msgstr "" + +#: ../admin/mail_edit.php:84 +msgid "" +"WARNING: turning POP/IMAP off will DELETE the stored messages in this email " +"address. This email address will become a simple redirection." +msgstr "" + +#: ../admin/mail_edit.php:97 +msgid "Change this email address" +msgstr "" + +#: ../admin/mail_edit.php:104 +msgid "help_mail_edit" +msgstr "" + +#: ../admin/mail_list.php:49 ../admin/mail_list.php:68 +#, php-format +msgid "Email addresses of the domain %s" +msgstr "" + +#: ../admin/mail_list.php:58 ../admin/mail_list.php:77 +#, php-format +msgid "Add a mailbox on %s" +msgstr "" + +#: ../admin/mail_list.php:60 ../admin/mail_list.php:79 +#, php-format +msgid "Add many mailboxes on %s" +msgstr "" + +#: ../admin/mail_list.php:87 +msgid "Show only mail starting by:" +msgstr "" + +#: ../admin/mail_list.php:93 +#, php-format +msgid "All" +msgstr "" + +#: ../admin/mail_list.php:127 +msgid "This account will be deleted on" +msgstr "" + +#: ../admin/mail_list.php:136 +msgid "Delete the checked email addresses" +msgstr "" + +#: ../admin/main.php:38 +msgid "Last Login: " +msgstr "" + +#: ../admin/main.php:41 +#, php-format +msgid "from: %1$s " +msgstr "" + +#: ../admin/main.php:45 +#, php-format +msgid "%1$d login failed since last login" +msgstr "" + +#: ../admin/main.php:61 +msgid "Latest news" +msgstr "" + +#: ../admin/main.php:78 +msgid "Expired or about to expire accounts" +msgstr "" + +#: ../admin/main.php:80 +msgid "uid" +msgstr "" + +#: ../admin/main.php:80 +msgid "Last name, surname" +msgstr "" + +#: ../admin/mem_admin.php:40 +msgid "Your administrator preferences has been successfully changed." +msgstr "" + +#: ../admin/mem_admin.php:46 ../admin/mem_param.php:97 +msgid "Admin preferences" +msgstr "" + +#: ../admin/mem_chgmail.php:44 ../admin/mem_cm2.php:40 ../admin/mem_cm.php:35 +#: ../admin/mem_cm.php:46 ../admin/mem_param.php:74 +msgid "Change the email of the account" +msgstr "" + +#: ../admin/mem_chgmail.php:51 +#, php-format +msgid "help_mem_chgmail %s" +msgstr "" + +#: ../admin/mem_cm2.php:48 +msgid "The mailbox has been successfully changed." +msgstr "" + +#: ../admin/mem_cm.php:47 +msgid "" +"Enter the key you got when you requested the mailbox change, then click the " +"OK button." +msgstr "" + +#: ../admin/mem_cm.php:48 +msgid "Key" +msgstr "" + +#: ../admin/mem_cm.php:49 +msgid "OK" +msgstr "" + +#: ../admin/mem_logout.php:38 ../admin/mem_logout.php:43 +msgid "Disconnected" +msgstr "" + +#: ../admin/mem_logout.php:45 +msgid "You have been logged out of your administration desktop." +msgstr "" + +#: ../admin/mem_logout.php:46 +msgid "Click here to log in" +msgstr "" + +#: ../admin/mem_param.php:36 +msgid "Your help setting has been updated." +msgstr "" + +#: ../admin/mem_param.php:40 +msgid "Settings of your account" +msgstr "" + +#: ../admin/mem_param.php:50 ../admin/mem_passwd.php:41 +#: ../admin/sql_users_list.php:65 +msgid "Password change" +msgstr "" + +#: ../admin/mem_param.php:54 +msgid "You cannot change your password" +msgstr "" + +#: ../admin/mem_param.php:59 +msgid "help_chg_passwd" +msgstr "" + +#: ../admin/mem_param.php:63 +msgid "Old password" +msgstr "" + +#: ../admin/mem_param.php:66 +msgid "Change my password" +msgstr "" + +#: ../admin/mem_param.php:75 +msgid "help_chg_mail" +msgstr "" + +#: ../admin/mem_param.php:76 +msgid "Current mailbox" +msgstr "" + +#: ../admin/mem_param.php:77 +msgid "New mailbox" +msgstr "" + +#: ../admin/mem_param.php:78 +msgid "Change my email address" +msgstr "" + +#: ../admin/mem_param.php:85 +msgid "Online help settings" +msgstr "" + +#: ../admin/mem_param.php:86 +msgid "help_help_settings" +msgstr "" + +#: ../admin/mem_param.php:87 +msgid "Do you want to see the help texts and links on each page?" +msgstr "" + +#: ../admin/mem_param.php:88 +msgid "Change these settings" +msgstr "" + +#: ../admin/mem_param.php:101 +msgid "Members list view" +msgstr "" + +#: ../admin/mem_param.php:102 +msgid "Large view" +msgstr "" + +#: ../admin/mem_param.php:103 +msgid "Short view" +msgstr "" + +#: ../admin/mem_param.php:105 +msgid "Change my admin preferences" +msgstr "" + +#: ../admin/mem_passwd.php:35 ../admin/sql_pass.php:38 +msgid "Your password has been successfully changed." +msgstr "" + +#: ../admin/menu_adm.php:38 +msgid "Administration" +msgstr "" + +#: ../admin/menu_adm.php:41 +msgid "Manage the Alternc accounts" +msgstr "" + +#: ../admin/menu_adm.php:42 +msgid "User Quotas" +msgstr "" + +#: ../admin/menu_adm.php:45 +msgid "General PhpMyAdmin" +msgstr "" + +#: ../admin/menu_aide.php:32 +msgid "Online help" +msgstr "" + +#: ../admin/menu_dom.php:40 ../admin/quotas_oneuser.php:22 +#: ../admin/quotas_users.php:131 +msgid "Domains" +msgstr "" + +#: ../admin/menu_ftp.php:40 +msgid "FTP accounts" +msgstr "" + +#: ../admin/menu_lang.php:3 +msgid "Langues" +msgstr "" + +#: ../admin/menu_mail.php:40 +msgid "Email Addresses" +msgstr "" + +#: ../admin/menu_mem.php:32 +msgid "Settings" +msgstr "" + +#: ../admin/menu_mem.php:35 +msgid "Logout" +msgstr "" + +#: ../admin/menu.php:36 +msgid "Home / Information" +msgstr "" + +#: ../admin/menu_quota.php:32 +msgid "Show my quotas" +msgstr "" + +#: ../admin/menu_sql.php:38 +msgid "Databases" +msgstr "" + +#: ../admin/menu_sql.php:39 ../admin/sql_users_list.php:37 +msgid "MySQL Users" +msgstr "" + +#: ../admin/menu_sql.php:40 +msgid "PhpMyAdmin" +msgstr "" + +#: ../admin/menu_sta2.php:37 +msgid "Raw web statistics" +msgstr "" + +#: ../admin/menu_web.php:34 +msgid "Protected folders" +msgstr "" + +#: ../admin/quota_show.php:34 +msgid "Account's quotas" +msgstr "" + +#: ../admin/quota_show.php:40 +msgid "No quotas for this account, or quotas currently unavailable!" +msgstr "" + +#: ../admin/quotas_oneuser.php:13 +msgid "Web Space:" +msgstr "" + +#: ../admin/quotas_oneuser.php:14 ../admin/quotas_oneuser.php:53 +#: ../admin/quotas_oneuser.php:90 ../admin/quotas_oneuser.php:130 +#: ../admin/quotas_users.php:286 ../admin/quotas_users.php:322 +#: ../admin/quotas_users.php:342 ../admin/quotas_users.php:355 +msgid "MB" +msgstr "" + +#: ../admin/quotas_oneuser.php:23 +msgid "Emails" +msgstr "" + +#: ../admin/quotas_oneuser.php:24 ../admin/quotas_oneuser.php:71 +#: ../admin/quotas_oneuser.php:112 ../admin/quotas_users.php:127 +#: ../admin/quotas_users.php:168 +msgid "Space" +msgstr "" + +#: ../admin/quotas_oneuser.php:70 ../admin/quotas_users.php:176 +msgid "DB" +msgstr "" + +#: ../admin/quotas_oneuser.php:111 ../admin/quotas_users.php:172 +#: ../admin/quotas_users.php:175 +msgid "Lists" +msgstr "" + +#: ../admin/quotas_users.php:26 +msgid "" +"This page shows the space and service count of your AlternC server and each " +"AlternC accounts." +msgstr "" + +#: ../admin/quotas_users.php:27 +#, php-format +msgid "Sizes are shown as %s" +msgstr "" + +#: ../admin/quotas_users.php:27 +msgid "MB." +msgstr "" + +#: ../admin/quotas_users.php:27 +#, php-format +msgid "% of the total." +msgstr "" + +#: ../admin/quotas_users.php:30 +msgid "Server-side view:" +msgstr "" + +#: ../admin/quotas_users.php:30 +msgid "Global" +msgstr "" + +#: ../admin/quotas_users.php:31 +msgid "Detailed view:" +msgstr "" + +#: ../admin/quotas_users.php:33 ../admin/quotas_users.php:40 +msgid "Percentage" +msgstr "" + +#: ../admin/quotas_users.php:34 ../admin/quotas_users.php:37 +msgid "Graphical" +msgstr "" + +#: ../admin/quotas_users.php:36 ../admin/quotas_users.php:39 +msgid "In MB" +msgstr "" + +#: ../admin/quotas_users.php:45 +msgid "Show the domain names" +msgstr "" + +#: ../admin/quotas_users.php:47 +msgid "Hide the domain names" +msgstr "" + +#: ../admin/quotas_users.php:50 +msgid "All accounts" +msgstr "" + +#: ../admin/quotas_users.php:127 ../admin/quotas_users.php:168 +msgid "Count" +msgstr "" + +#: ../admin/quotas_users.php:136 +msgid "Email addresses" +msgstr "" + +#: ../admin/quotas_users.php:142 +msgid "Mailman lists" +msgstr "" + +#: ../admin/quotas_users.php:148 ../admin/sql_bck.php:48 +#: ../admin/sql_del.php:63 ../admin/sql_dorestore.php:38 +#: ../admin/sql_getparam.php:38 ../admin/sql_list.php:36 +#: ../admin/sql_passchg.php:38 ../admin/sql_restore.php:43 +msgid "MySQL Databases" +msgstr "" + +#: ../admin/quotas_users.php:170 +msgid "Dom" +msgstr "" + +#: ../admin/quotas_users.php:171 ../admin/quotas_users.php:174 +msgid "Mails" +msgstr "" + +#: ../admin/quotas_users.php:173 +msgid "Web" +msgstr "" + +#: ../admin/sql_addmain.php:35 +msgid "Your database has been successfully created" +msgstr "" + +#: ../admin/sql_add.php:34 ../admin/sql_doadd.php:34 +msgid "err_mysql_1" +msgstr "" + +#: ../admin/sql_add.php:39 ../admin/sql_list.php:81 +msgid "Create a new MySQL database" +msgstr "" + +#: ../admin/sql_add.php:51 +msgid "MySQL Database" +msgstr "" + +#: ../admin/sql_add.php:56 +msgid "Create this new MySQL database." +msgstr "" + +#: ../admin/sql_admin.php:47 +msgid "SQL Admin" +msgstr "" + +#: ../admin/sql_bck.php:58 +#, php-format +msgid "Manage the SQL backup for database %s" +msgstr "" + +#: ../admin/sql_bck.php:63 +msgid "Do MySQL backup?" +msgstr "" + +#: ../admin/sql_bck.php:66 +msgid "No backup" +msgstr "" + +#: ../admin/sql_bck.php:67 +msgid "Weekly backup" +msgstr "" + +#: ../admin/sql_bck.php:68 +msgid "Daily backup" +msgstr "" + +#: ../admin/sql_bck.php:72 +msgid "How many backups should be kept?" +msgstr "" + +#: ../admin/sql_bck.php:84 +msgid "Compress the backups? (gzip)" +msgstr "" + +#: ../admin/sql_bck.php:93 +msgid "In which folder do you want to store the backups?" +msgstr "" + +#: ../admin/sql_bck.php:104 +msgid "Change the MySQL backup parameters" +msgstr "" + +#: ../admin/sql_bck.php:113 ../admin/sql_dorestore.php:56 +#: ../admin/sql_restore.php:71 +msgid "You currently have no database defined" +msgstr "" + +#: ../admin/sql_del.php:42 +#, php-format +msgid "The database %s has been successfully deleted" +msgstr "" + +#: ../admin/sql_del.php:57 +msgid "Please check which databases you want to delete" +msgstr "" + +#: ../admin/sql_del.php:66 +msgid "Confirm the deletion of the following SQL databases" +msgstr "" + +#: ../admin/sql_del.php:67 +msgid "This will delete all the tables currently in those db." +msgstr "" + +#: ../admin/sql_dobck.php:48 +msgid "Your backup parameters has been successfully changed." +msgstr "" + +#: ../admin/sql_dorestore.php:44 +msgid "Restore a SQL backup" +msgstr "" + +#: ../admin/sql_dorestore.php:50 +msgid "" +"Your database has been restored, check out the previous text for error " +"messages." +msgstr "" + +#: ../admin/sql_getparam.php:47 +msgid "Your current settings are" +msgstr "" + +#: ../admin/sql_getparam.php:58 +msgid "MySQL Server" +msgstr "" + +#: ../admin/sql_getparam.php:62 +msgid "Main database" +msgstr "" + +#: ../admin/sql_getparam.php:67 +msgid "Back to the MySQL database list" +msgstr "" + +#: ../admin/sql_list.php:46 +msgid "help_sql_list_ok" +msgstr "" + +#: ../admin/sql_list.php:51 ../admin/sql_list.php:97 +#: ../admin/sql_passchg.php:54 +msgid "Database" +msgstr "" + +#: ../admin/sql_list.php:51 ../admin/sql_list.php:63 +msgid "Backup" +msgstr "" + +#: ../admin/sql_list.php:51 ../admin/sql_list.php:64 +msgid "Restore" +msgstr "" + +#: ../admin/sql_list.php:73 +msgid "Delete the checked databases" +msgstr "" + +#: ../admin/sql_list.php:83 +msgid "Change the MySQL password" +msgstr "" + +#: ../admin/sql_list.php:84 +msgid "Get the current MySQL parameters" +msgstr "" + +#: ../admin/sql_list.php:89 +msgid "help_sql_list_no" +msgstr "" + +#: ../admin/sql_list.php:96 ../admin/sql_passchg.php:53 +msgid "SQL Server" +msgstr "" + +#: ../admin/sql_list.php:98 +msgid "Create my main database" +msgstr "" + +#: ../admin/sql_passchg.php:46 +msgid "" +"Enter the new password of your MySQL database and click 'change the " +"password' to change it" +msgstr "" + +#: ../admin/sql_restore.php:53 +#, php-format +msgid "Restore a MySQL backup for database %s" +msgstr "" + +#: ../admin/sql_restore.php:56 +msgid "" +"Warning: Write the complete path and the filename.
            For example if your " +"backups are in the directory /Backups,
            write /Backups/file.sql.gz " +"(where file.sql.gz is the filename)." +msgstr "" + +#: ../admin/sql_restore.php:61 +msgid "" +"Please enter the path and the filename containing SQL data to be restored." +msgstr "" + +#: ../admin/sql_restore.php:62 +msgid "Restore my database" +msgstr "" + +#: ../admin/sql_restore.php:66 +msgid "Note: If the filename ends with .gz, it will be uncompressed before." +msgstr "" + +#: ../admin/sql_users_add.php:41 +msgid "err_mysql_13" +msgstr "" + +#: ../admin/sql_users_add.php:46 ../admin/sql_users_list.php:86 +msgid "Create a new MySQL user" +msgstr "" + +#: ../admin/sql_users_add.php:77 +msgid "Create this new MySQL user" +msgstr "" + +#: ../admin/sql_users_del.php:41 +#, php-format +msgid "The user %s has been successfully deleted" +msgstr "" + +#: ../admin/sql_users_del.php:52 +msgid "MySQL users" +msgstr "" + +#: ../admin/sql_users_del.php:55 +msgid "Confirm the deletion of the following MySQL users" +msgstr "" + +#: ../admin/sql_users_dorights.php:44 +msgid "The rights has been successfully applied to the user" +msgstr "" + +#: ../admin/sql_users_list.php:47 +msgid "help_sql_users_list_ok" +msgstr "" + +#: ../admin/sql_users_list.php:52 +msgid "Rights" +msgstr "" + +#: ../admin/sql_users_list.php:64 +msgid "Manage the rights" +msgstr "" + +#: ../admin/sql_users_password.php:64 +msgid "Change user password" +msgstr "" + +#: ../admin/sql_users_rights.php:41 +#, php-format +msgid "MySQL Rights for %s" +msgstr "" + +#: ../admin/sql_users_rights.php:51 +msgid "help_sql_users_rights_ok" +msgstr "" + +#: ../admin/sql_users_rights.php:82 +msgid "Reverse selection" +msgstr "" + +#: ../admin/sql_users_rights.php:95 +msgid "Apply" +msgstr "" + +#: ../admin/sta2_add_raw.php:33 +msgid "You cannot add any new statistics, your quota is over." +msgstr "" + +#: ../admin/sta2_add_raw.php:38 +msgid "New Raw Statistics (apache)" +msgstr "" + +#: ../admin/sta2_add_raw.php:51 ../admin/sta2_edit_raw.php:57 +msgid "Domain name:" +msgstr "" + +#: ../admin/sta2_add_raw.php:54 ../admin/sta2_edit_raw.php:60 +msgid "Folder where we will put the log file:" +msgstr "" + +#: ../admin/sta2_add_raw.php:63 +msgid "Create those raw statistics" +msgstr "" + +#: ../admin/sta2_del_raw.php:42 +#, php-format +msgid "" +"The statistics %s has been successfully deleted (the stats files must be " +"manually deleted)" +msgstr "" + +#: ../admin/sta2_doadd_raw.php:44 +msgid "The statistics has been successfully created" +msgstr "" + +#: ../admin/sta2_doedit_raw.php:33 ../admin/sta2_edit_raw.php:35 +msgid "No Statistics selected!" +msgstr "" + +#: ../admin/sta2_doedit_raw.php:41 +msgid "The Statistics has been successfully changed" +msgstr "" + +#: ../admin/sta2_edit_raw.php:44 +msgid "Change the Raw Statistics" +msgstr "" + +#: ../admin/sta2_edit_raw.php:67 +msgid "Change those Raw Statistics." +msgstr "" + +#: ../admin/sta2_list.php:35 +msgid "Raw Statistics List" +msgstr "" + +#: ../admin/sta2_list.php:41 +msgid "Create new Raw Statistics (apache)" +msgstr "" + +#: ../admin/sta2_list.php:79 +msgid "Delete the checked Raw Statistics (apache)" +msgstr "" + +#: ../admin/stats_members.php:32 +msgid "" +"Image_Graph not installed. use 'aptitude install php-pear' then 'pear " +"install --alldeps Image_Graph-devel' to see the graph." +msgstr "" + +#: ../admin/stats_members.php:41 +msgid "Account creation per month" +msgstr "" + +#: ../admin/stats_members.php:54 +msgid "before the month" +msgstr "" + +#: ../admin/stats_members.php:56 +msgid "during the month" +msgstr "" + +#: ../admin/trash_dateselect.php:50 +msgid "You want it to be deleted in" +msgstr "" + +#: ../admin/trash_dateselect.php:57 +msgid "Hours" +msgstr "" + +#: ../admin/trash_dateselect.php:58 +msgid "Days" +msgstr "" + +#: ../admin/trash_dateselect.php:59 +msgid "Weeks" +msgstr "" + +#: ../admin/trash_dateselect.php:66 +msgid "" +"Delete this email the following day,
            enter the date using DD/MM/YYYY " +"format" +msgstr "" + +#: ../admin/trash_dateselect.php:79 +msgid "All this account information will be deleted at expiration" +msgstr "" + +#: ../class/functions.php:286 +msgid "Bytes" +msgstr "" + +#: ../class/functions.php:288 +msgid "Byte" +msgstr "" + +#: ../class/functions.php:293 +msgid "Kb" +msgstr "" + +#: ../class/functions.php:297 +msgid "Mb" +msgstr "" + +#: ../class/functions.php:301 +msgid "Gb" +msgstr "" + +#: ../class/functions.php:303 +msgid "Tb" +msgstr "" + +#: ../class/functions.php:390 +msgid "years" +msgstr "" + +#: ../class/functions.php:390 +msgid "year" +msgstr "" + +#: ../class/functions.php:392 +msgid "months" +msgstr "" + +#: ../class/functions.php:392 +msgid "month" +msgstr "" + +#: ../class/functions.php:415 +msgid "Not managed" +msgstr "" + +#: ../class/lang_env.php:61 +msgid "" +msgstr "" + +#: ../class/m_err.php:66 ../class/m_err.php:94 ../class/m_err.php:96 +msgid "err_" +msgstr "" + +#: ../class/mime.php:135 +msgid "CSS Stylesheet" +msgstr "" + +#: ../class/mime.php:136 +msgid "Comma Separated Values data" +msgstr "" + +#: ../class/mime.php:137 +msgid "DIA Diagram" +msgstr "" + +#: ../class/mime.php:138 +msgid "Word Document" +msgstr "" + +#: ../class/mime.php:139 +msgid "Word Document Template" +msgstr "" + +#: ../class/mime.php:140 +msgid "Encapsulated Postscript" +msgstr "" + +#: ../class/mime.php:141 +msgid "GIF Image" +msgstr "" + +#: ../class/mime.php:142 +msgid "Macintosh Executable" +msgstr "" + +#: ../class/mime.php:143 ../class/mime.php:144 +msgid "HTML Document" +msgstr "" + +#: ../class/mime.php:145 ../class/mime.php:146 +msgid "JPEG Image" +msgstr "" + +#: ../class/mime.php:147 +msgid "Music Playlist" +msgstr "" + +#: ../class/mime.php:148 +msgid "MP3 Music File" +msgstr "" + +#: ../class/mime.php:149 +msgid "Ogg Music File" +msgstr "" + +#: ../class/mime.php:150 +msgid "Acrobat PDF" +msgstr "" + +#: ../class/mime.php:151 +msgid "PHP Source" +msgstr "" + +#: ../class/mime.php:152 +msgid "PNG Image" +msgstr "" + +#: ../class/mime.php:153 ../class/mime.php:154 +msgid "Powerpoint Slideshow" +msgstr "" + +#: ../class/mime.php:155 +msgid "Postscript Document" +msgstr "" + +#: ../class/mime.php:156 +msgid "Photoshop Image" +msgstr "" + +#: ../class/mime.php:157 +msgid "Rar Compressed Files" +msgstr "" + +#: ../class/mime.php:158 +msgid "Rich Text Document" +msgstr "" + +#: ../class/mime.php:159 +msgid "OpenOffice Spreadsheet" +msgstr "" + +#: ../class/mime.php:160 +msgid "OpenOffice Drawing" +msgstr "" + +#: ../class/mime.php:161 +msgid "OpenOffice Presentation" +msgstr "" + +#: ../class/mime.php:162 +msgid "OpenOffice Writer" +msgstr "" + +#: ../class/mime.php:163 ../class/mime.php:164 +msgid "TIFF Image" +msgstr "" + +#: ../class/mime.php:165 +msgid "Text Document" +msgstr "" + +#: ../class/mime.php:166 ../class/mime.php:167 +msgid "Virtual Card" +msgstr "" + +#: ../class/mime.php:168 +msgid "Gimp Image" +msgstr "" + +#: ../class/mime.php:169 +msgid "Excel Spreadsheet" +msgstr "" + +#: ../class/mime.php:170 +msgid "Zip Compressed Files" +msgstr "" + +#: ../class/mime.php:171 +msgid "Flash Animation" +msgstr "" + +#: ../class/mime.php:172 ../class/mime.php:173 ../class/mime.php:174 +msgid "Real Media File" +msgstr "" + +#: ../class/m_mem.php:497 +msgid "Help" +msgstr "" diff --git a/stable-1.0/bureau/locales/pt_BR/LC_MESSAGES/messages.po b/stable-1.0/bureau/locales/pt_BR/LC_MESSAGES/messages.po new file mode 100644 index 00000000..3c8065ab --- /dev/null +++ b/stable-1.0/bureau/locales/pt_BR/LC_MESSAGES/messages.po @@ -0,0 +1,3756 @@ +#: ../admin/adm_add.php:36 ../admin/adm_deactivate.php:41 +#: ../admin/adm_defquotas.php:35 ../admin/adm_dnsweberror.php:33 +#: ../admin/adm_doadd.php:35 ../admin/adm_dodefquotas.php:35 +#: ../admin/adm_dodel.php:33 ../admin/adm_dodel.php:45 +#: ../admin/adm_doedit.php:35 ../admin/adm_doedit.php:42 +#: ../admin/adm_domlock.php:33 ../admin/adm_doms.php:33 +#: ../admin/adm_domstypedoedit.php:4 ../admin/adm_domstypeedit.php:32 +#: ../admin/adm_domstype.php:33 ../admin/adm_domstyperegenerate.php:4 +#: ../admin/adm_donosu.php:33 ../admin/adm_dorenew.php:34 +#: ../admin/adm_dorenew.php:38 ../admin/adm_dosu.php:33 +#: ../admin/adm_edit.php:36 ../admin/adm_edit.php:48 ../admin/adm_list.php:37 +#: ../admin/adm_list.php:58 ../admin/adm_login.php:74 +#: ../admin/adm_login.php:86 ../admin/adm_mxaccount.php:33 +#: ../admin/adm_panel.php:33 ../admin/adm_passpolicy.php:30 +#: ../admin/adm_quotadoedit.php:33 ../admin/adm_quotaedit.php:34 +#: ../admin/adm_slaveaccount.php:33 ../admin/adm_slaveip.php:33 +#: ../admin/adm_tldadd.php:33 ../admin/adm_tlddoadd.php:33 +#: ../admin/adm_tlddoedit.php:33 ../admin/adm_tldedit.php:33 +#: ../admin/adm_tld.php:33 ../admin/adm_variables.php:33 +#: ../admin/quotas_users.php:10 ../class/reset_stats_conf.php:6 +msgid "This page is restricted to authorized staff" +msgstr "Esta página é restringida à equipe de funcionários autorizada" + +#: ../admin/adm_add.php:46 +#, fuzzy +msgid "New AlternC account" +msgstr "Deletar as contas selecionadas" + +#: ../admin/adm_add.php:56 ../admin/adm_edit.php:69 +#: ../admin/adm_quotaedit.php:68 ../admin/ftp_add.php:54 +#: ../admin/ftp_edit.php:59 ../admin/ftp_list.php:72 +#: ../admin/hta_adduser.php:53 ../admin/hta_edit.php:62 +#: ../admin/hta_edit.php:102 ../admin/index.php:76 +#: ../admin/sql_getparam.php:50 ../admin/sql_list.php:94 +#: ../admin/sql_passchg.php:51 ../admin/sql_users_add.php:64 +#, fuzzy +msgid "Username" +msgstr "Nome de usúario" + +#: ../admin/adm_add.php:60 +msgid "Initial password" +msgstr "Senha inicial" + +#: ../admin/adm_add.php:64 ../admin/adm_edit.php:89 ../admin/ftp_add.php:65 +#: ../admin/ftp_edit.php:71 ../admin/hta_adduser.php:61 +#: ../admin/hta_edit.php:110 ../admin/hta_edituser.php:55 +#: ../admin/mail_add.php:71 ../admin/mail_edit.php:79 +#: ../admin/sql_users_add.php:72 ../admin/sql_users_password.php:59 +#, fuzzy +msgid "Confirm password" +msgstr "Senha inicial" + +#: ../admin/adm_add.php:68 ../admin/adm_edit.php:93 +msgid "Can he change its password" +msgstr "Pode mudar a senha" + +#: ../admin/adm_add.php:70 ../admin/adm_dodefquotas.php:73 +#: ../admin/adm_dodel.php:81 ../admin/adm_domstype.php:83 +#: ../admin/adm_domstype.php:84 ../admin/adm_domstype.php:85 +#: ../admin/adm_edit.php:78 ../admin/adm_edit.php:95 +#: ../admin/adm_passpolicy.php:112 ../admin/adm_passpolicy.php:158 +#: ../admin/bro_main.php:94 ../admin/dom_dodel.php:74 +#: ../admin/dom_edit.php:182 ../admin/dom_edit.php:194 +#: ../admin/dom_subdel.php:71 ../admin/mail_add.php:65 +#: ../admin/mail_edit.php:73 ../admin/sql_bck.php:87 ../admin/sql_del.php:81 +#: ../admin/sql_users_del.php:70 ../admin/trash_dateselect.php:39 +msgid "No" +msgstr "Não" + +#: ../admin/adm_add.php:71 ../admin/adm_dodefquotas.php:72 +#: ../admin/adm_dodel.php:80 ../admin/adm_domstype.php:83 +#: ../admin/adm_domstype.php:84 ../admin/adm_domstype.php:85 +#: ../admin/adm_edit.php:79 ../admin/adm_edit.php:96 +#: ../admin/adm_passpolicy.php:113 ../admin/adm_passpolicy.php:158 +#: ../admin/bro_main.php:93 ../admin/dom_dodel.php:74 +#: ../admin/dom_edit.php:181 ../admin/dom_edit.php:193 +#: ../admin/dom_subdel.php:70 ../admin/mail_add.php:66 +#: ../admin/mail_edit.php:74 ../admin/sql_bck.php:88 ../admin/sql_del.php:81 +#: ../admin/sql_users_del.php:70 ../admin/trash_dateselect.php:40 +msgid "Yes" +msgstr "Sim" + +#: ../admin/adm_add.php:75 ../admin/adm_edit.php:100 +msgid "Notes" +msgstr "" + +#: ../admin/adm_add.php:79 ../admin/adm_edit.php:104 +msgid "Surname" +msgstr "Sobrenome" + +#: ../admin/adm_add.php:79 ../admin/adm_edit.php:104 +msgid "First Name" +msgstr "Nome" + +#: ../admin/adm_add.php:83 ../admin/adm_edit.php:108 ../admin/mail_add.php:60 +#: ../admin/mail_list.php:104 +msgid "Email address" +msgstr "Endereço email" + +#: ../admin/adm_add.php:87 ../admin/adm_dodefquotas.php:43 +#: ../admin/adm_dodefquotas.php:45 ../admin/adm_dodefquotas.php:52 +#: ../admin/adm_dodefquotas.php:54 ../admin/adm_edit.php:112 +#, fuzzy +msgid "Account type" +msgstr "Conta Permitiu ?" + +#: ../admin/adm_add.php:105 +#, fuzzy, php-format +msgid "Install the domain" +msgstr "Controla domínios permitidos (TLD)" + +#: ../admin/adm_add.php:121 +#, fuzzy +msgid "Create this AlternC account" +msgstr "Criar está nova conta FTP." + +#: ../admin/adm_add.php:122 ../admin/adm_deactivate.php:61 +#: ../admin/adm_domstypeedit.php:122 ../admin/adm_edit.php:131 +#: ../admin/adm_quotaedit.php:87 ../admin/adm_tldadd.php:65 +#: ../admin/adm_tldedit.php:70 ../admin/bro_pref.php:134 +#: ../admin/browseforfolder.php:136 ../admin/ftp_add.php:68 +#: ../admin/ftp_edit.php:75 ../admin/hta_adduser.php:67 +#: ../admin/mail_add.php:88 ../admin/mail_edit.php:98 ../admin/sql_bck.php:105 +#: ../admin/sql_passchg.php:57 ../admin/sql_users_add.php:78 +#: ../admin/sql_users_password.php:65 +msgid "Cancel" +msgstr "" + +#: ../admin/adm_deactivate.php:36 +msgid "Missing uid" +msgstr "" + +#: ../admin/adm_deactivate.php:47 +#, fuzzy +msgid "User does not exist" +msgstr "Membro '%s' não existe" + +#: ../admin/adm_deactivate.php:52 ../admin/adm_deactivate.php:60 +msgid "Confirm" +msgstr "" + +#: ../admin/adm_deactivate.php:53 +msgid "WARNING: experimental feature, use at your own risk" +msgstr "" + +#: ../admin/adm_deactivate.php:54 +msgid "" +"The following domains will be deactivated and redirected to the URL entered " +"in the following box. A backup of the domain configuration will be displayed " +"as a serie of SQL request that you can run to restore the current " +"configuration if you want. Click confirm if you are sure you want to " +"deactivate all this user's domains." +msgstr "" + +#: ../admin/adm_deactivate.php:59 +#, fuzzy +msgid "Redirection URL:" +msgstr "Redireção URL" + +#: ../admin/adm_deactivate.php:64 +msgid "Domains of user: " +msgstr "" + +#: ../admin/adm_deactivate.php:67 +msgid "Missing redirect url." +msgstr "" + +#: ../admin/adm_deactivate.php:87 +#, php-format +msgid "-- Redirecting all domains and subdomains of the user %s to %s\n" +msgstr "" + +#: ../admin/adm_defquotas.php:42 ../admin/adm_panel.php:54 +msgid "Change the default quotas" +msgstr "Mudar os quotas padrões" + +#: ../admin/adm_defquotas.php:55 +#, fuzzy +msgid "Add account type" +msgstr "Nenhuma conta selecionada" + +#: ../admin/adm_defquotas.php:70 +#, fuzzy +msgid "Delete account type" +msgstr "Deletar as contas selecionadas" + +#: ../admin/adm_defquotas.php:75 +msgid "" +"Here is the list of the quotas on the server for the new accounts. If you " +"want to change them, enter new values" +msgstr "" + +#: ../admin/adm_defquotas.php:89 +msgid "Accounts of type" +msgstr "" + +#: ../admin/adm_defquotas.php:91 ../admin/adm_list.php:128 +#: ../admin/adm_list.php:173 ../admin/adm_list.php:193 +#: ../admin/menu_quota.php:52 +msgid "Quotas" +msgstr "Quotas" + +#: ../admin/adm_defquotas.php:91 +msgid "Default Value" +msgstr "" + +#: ../admin/adm_defquotas.php:109 +#, fuzzy +msgid "Edit the default quotas" +msgstr "Mudar os quotas padrões" + +#: ../admin/adm_dnsweberror.php:40 +msgid "Domains and Websites having errors" +msgstr "" + +#: ../admin/adm_dnsweberror.php:50 +msgid "List of the websites having errors in the domain database." +msgstr "" + +#: ../admin/adm_dnsweberror.php:54 ../admin/adm_dnsweberror.php:87 +msgid "Uid" +msgstr "" + +#: ../admin/adm_dnsweberror.php:55 ../admin/adm_dnsweberror.php:88 +#: ../admin/adm_list.php:124 ../admin/adm_list.php:207 +#: ../admin/adm_list.php:208 ../admin/adm_list.php:209 +#: ../admin/quotas_oneuser.php:8 ../admin/quotas_users.php:168 +#, fuzzy +msgid "Account" +msgstr "Conta Permitiu ?" + +#: ../admin/adm_dnsweberror.php:56 ../admin/adm_dnsweberror.php:89 +#: ../admin/dom_add.php:57 ../admin/sta2_list.php:58 +msgid "Domain name" +msgstr "Nome do Domínio" + +#: ../admin/adm_dnsweberror.php:57 +msgid "FQDN" +msgstr "" + +#: ../admin/adm_dnsweberror.php:58 ../admin/adm_variables.php:57 +msgid "Value" +msgstr "" + +#: ../admin/adm_dnsweberror.php:59 ../admin/adm_domstypeedit.php:76 +#: ../admin/adm_domstype.php:59 +msgid "Description" +msgstr "Descição" + +#: ../admin/adm_dnsweberror.php:60 +msgid "Web Result field" +msgstr "" + +#: ../admin/adm_dnsweberror.php:84 +msgid "List of the domain names having errors in the domain database." +msgstr "" + +#: ../admin/adm_dnsweberror.php:90 +msgid "DNS Result field" +msgstr "" + +#: ../admin/adm_doadd.php:40 ../admin/adm_doedit.php:47 +#: ../admin/ftp_doadd.php:33 ../admin/ftp_doedit.php:36 +#: ../admin/hta_doadduser.php:33 ../admin/hta_doedituser.php:41 +#: ../admin/mail_doadd.php:44 ../admin/mail_doedit.php:49 +msgid "Passwords do not match" +msgstr "" + +#: ../admin/adm_doadd.php:71 +msgid "The new member has been successfully created" +msgstr "O membro novo foi criado com sucesso" + +#: ../admin/adm_dodefquotas.php:43 +msgid "added" +msgstr "" + +#: ../admin/adm_dodefquotas.php:45 +msgid "could not be added" +msgstr "" + +#: ../admin/adm_dodefquotas.php:52 +#, fuzzy +msgid "deleted" +msgstr "Suprimir" + +#: ../admin/adm_dodefquotas.php:54 +#, fuzzy +msgid "could not be deleted" +msgstr "Algums TLD não pode ser suprimidos..." + +#: ../admin/adm_dodefquotas.php:63 +#, fuzzy, php-format +msgid "Deleting quota %s" +msgstr "Suprimando o secundário-domínio %s" + +#: ../admin/adm_dodefquotas.php:69 +#, fuzzy +msgid "WARNING : Confirm the deletion of the quota" +msgstr "AVISO : Confirmar o apagamento do secundário-domínio" + +#: ../admin/adm_dodefquotas.php:92 +msgid "Default quotas successfully changed" +msgstr "Quotas padrões foram mudados com sucesso" + +#: ../admin/adm_dodefquotas.php:94 +#, fuzzy +msgid "Default quotas could not be set." +msgstr "Quotas padrões foram mudados com sucesso" + +#: ../admin/adm_dodel.php:49 +#, php-format +msgid "Member '%s' does not exist" +msgstr "Membro '%s' não existe" + +#: ../admin/adm_dodel.php:51 +#, php-format +msgid "Member %s successfully deleted" +msgstr "Membro %s foi suprimido com sucesso" + +#: ../admin/adm_dodel.php:58 +#, fuzzy +msgid "Please check the accounts you want to delete" +msgstr "" +"Por favor entrar o nome de arquivo que contem os dados do SQL que precisam " +"restaurar." + +#: ../admin/adm_dodel.php:66 +#, fuzzy, php-format +msgid "Deleting users" +msgstr "Suprimando o secundário-domínio %s" + +#: ../admin/adm_dodel.php:70 +#, fuzzy +msgid "WARNING : Confirm the deletion of the users" +msgstr "AVISO : Confirmar o apagamento do secundário-domínio" + +#: ../admin/adm_doedit.php:60 +msgid "The member has been successfully edited" +msgstr "O membro foi editado com sucesso" + +#: ../admin/adm_doms.php:40 ../admin/adm_panel.php:53 +#, fuzzy +msgid "Manage installed domains" +msgstr "Controla domínios permitidos (TLD)" + +#: ../admin/adm_doms.php:53 +msgid "" +"Here is the list of the domains installed on this server. You can remove a " +"domain if it does not exist or does not point to our server anymore. You can " +"also set the 'Lock' flag on a domain so that the user will not be able to " +"change any DNS parameter or delete this domain from his account." +msgstr "" + +#: ../admin/adm_doms.php:56 +msgid "" +"The domain OK column are green when the domain exists in the worldwide " +"registry and has a proper NS,MX and IP depending on its configuration. It is " +"red if we have serious doubts about its NS, MX or IP configuration. Contact " +"the user of this domain or a system administrator." +msgstr "" + +#: ../admin/adm_doms.php:59 +msgid "If you want to force the check of NS, MX, IP on domains, click the link" +msgstr "" + +#: ../admin/adm_doms.php:59 +msgid "Show domain list with refreshed checked NS, MX, IP information" +msgstr "" + +#: ../admin/adm_doms.php:63 ../admin/adm_mxaccount.php:81 +#: ../admin/adm_slaveaccount.php:80 ../admin/adm_slaveip.php:80 +msgid "Action" +msgstr "Ação" + +#: ../admin/adm_doms.php:63 +#, fuzzy +msgid "Domain" +msgstr "Domínios" + +#: ../admin/adm_doms.php:63 +#, fuzzy +msgid "Creator" +msgstr "Criar" + +#: ../admin/adm_doms.php:63 ../admin/adm_doms.php:81 ../admin/adm_list.php:166 +#: ../admin/adm_list.php:191 +msgid "Connect as" +msgstr "Conectar como" + +#: ../admin/adm_doms.php:63 +msgid "OK?" +msgstr "" + +#: ../admin/adm_doms.php:63 ../admin/dom_edit.php:97 +msgid "Status" +msgstr "" + +#: ../admin/adm_doms.php:72 +#, fuzzy +msgid "Locked Domain" +msgstr "Conta Troncada" + +#: ../admin/adm_doms.php:75 +msgid "Unlock" +msgstr "" + +#: ../admin/adm_doms.php:75 +msgid "Lock" +msgstr "" + +#: ../admin/adm_domstypeedit.php:58 +#, fuzzy +msgid "Edit a domain type" +msgstr "Editando o domínio %s" + +#: ../admin/adm_domstypeedit.php:72 ../admin/adm_domstype.php:58 +#, fuzzy +msgid "Name" +msgstr "Membro novo" + +#: ../admin/adm_domstypeedit.php:80 +msgid "Target type" +msgstr "" + +#: ../admin/adm_domstypeedit.php:90 ../admin/adm_domstype.php:61 +msgid "Entry" +msgstr "" + +#: ../admin/adm_domstypeedit.php:94 +msgid "Compatibility" +msgstr "" + +#: ../admin/adm_domstypeedit.php:94 ../admin/adm_domstype.php:62 +msgid "Enter comma-separated name of other types" +msgstr "" + +#: ../admin/adm_domstypeedit.php:98 ../admin/dom_edit.php:125 +msgid "Enabled" +msgstr "" + +#: ../admin/adm_domstypeedit.php:108 +msgid "Do only a DNS entry" +msgstr "" + +#: ../admin/adm_domstypeedit.php:112 +msgid "Domain must have our DNS" +msgstr "" + +#: ../admin/adm_domstypeedit.php:116 +msgid "Is it an advanced option?" +msgstr "" + +#: ../admin/adm_domstypeedit.php:121 +#, fuzzy +msgid "Change this domain type" +msgstr "Mudar esta caixa de email" + +#: ../admin/adm_domstype.php:40 ../admin/adm_panel.php:65 +#, fuzzy +msgid "Manage domains type" +msgstr "Controla domínios permitidos (TLD)" + +#: ../admin/adm_domstype.php:42 +msgid "" +"If you don't know what this page is about, don't touch anything, and read " +"AlternC documentation about domain types" +msgstr "" + +#: ../admin/adm_domstype.php:52 +#, fuzzy +msgid "Here is the list of domain types." +msgstr "Aqui está a lista de membros hospedados" + +#: ../admin/adm_domstype.php:54 +#, fuzzy +msgid "Create a domain type" +msgstr "Adiçionar um secundário-domínio" + +#: ../admin/adm_domstype.php:60 +msgid "Target" +msgstr "" + +#: ../admin/adm_domstype.php:62 +msgid "Compatible with" +msgstr "" + +#: ../admin/adm_domstype.php:63 +#, fuzzy +msgid "Enabled?" +msgstr "Conta Permitiu ?" + +#: ../admin/adm_domstype.php:64 +msgid "Only DNS?" +msgstr "" + +#: ../admin/adm_domstype.php:65 +msgid "Need to be DNS?" +msgstr "" + +#: ../admin/adm_domstype.php:66 +msgid "Advanced?" +msgstr "" + +#: ../admin/adm_domstype.php:75 ../admin/adm_list.php:170 +#: ../admin/adm_list.php:192 ../admin/adm_passpolicy.php:152 +#: ../admin/adm_tld.php:76 ../admin/dom_edit.php:106 ../admin/ftp_list.php:82 +#: ../admin/mail_list.php:113 ../admin/sta2_list.php:68 +msgid "Edit" +msgstr "Editar" + +#: ../admin/adm_domstype.php:76 +msgid "Regenerate" +msgstr "" + +#: ../admin/adm_donosu.php:45 +#, fuzzy +msgid "This account is now a normal account" +msgstr "Esta conta é uma conta super-administrador" + +#: ../admin/adm_dorenew.php:46 +#, fuzzy +msgid "The member has been successfully renewed" +msgstr "O membro foi editado com sucesso" + +#: ../admin/adm_dosu.php:45 +#, fuzzy +msgid "This account is now an administrator account" +msgstr "Esta conta é uma conta super-administrador" + +#: ../admin/adm_edit.php:57 +msgid "Member Edition" +msgstr "Edição do Membro" + +#: ../admin/adm_edit.php:73 +#, fuzzy +msgid "Account Enabled?" +msgstr "Conta Permitiu ?" + +#: ../admin/adm_edit.php:76 +#, fuzzy +msgid "You cannot disable your own account." +msgstr "Você não pode mudar sua senha" + +#: ../admin/adm_edit.php:85 ../admin/adm_mxaccount.php:81 +#: ../admin/adm_mxaccount.php:101 ../admin/adm_slaveaccount.php:80 +#: ../admin/adm_slaveaccount.php:100 ../admin/ftp_add.php:64 +#: ../admin/ftp_edit.php:70 ../admin/hta_adduser.php:57 +#: ../admin/hta_edit.php:106 ../admin/index.php:77 ../admin/index.php:94 +#: ../admin/sql_getparam.php:54 ../admin/sql_list.php:95 +#: ../admin/sql_passchg.php:52 ../admin/sql_users_add.php:68 +#: ../admin/sql_users_list.php:52 ../admin/sql_users_password.php:55 +msgid "Password" +msgstr "Senha" + +#: ../admin/adm_edit.php:123 +msgid "Reset quotas to default?" +msgstr "" + +#: ../admin/adm_edit.php:126 +msgid "Period" +msgstr "" + +#: ../admin/adm_edit.php:130 +msgid "Edit this account" +msgstr "Editar esta conta" + +#: ../admin/adm_edit.php:143 +msgid "Renew for" +msgstr "" + +#: ../admin/adm_edit.php:144 +msgid "period(s)" +msgstr "" + +#: ../admin/adm_edit.php:147 +#, fuzzy +msgid "Renew" +msgstr "Rebatizar" + +#: ../admin/adm_edit.php:160 +msgid "This account is a super-admin account" +msgstr "Esta conta é uma conta super-administrador" + +# msgid "Disable the database" +# msgstr "Incapa +#: ../admin/adm_edit.php:162 +msgid "" +"There is only one administrator account, you cannot turn this account back " +"to normal" +msgstr "" +"Você pode ter somente uma conta do administrador, você não pode voltar esta " +"conta ao normal" + +#: ../admin/adm_edit.php:165 +msgid "Turn this account back to normal" +msgstr "Voltar esta conta à normal" + +#: ../admin/adm_edit.php:168 +msgid "Make this account a super admin one" +msgstr "Modificar esta conta à uma conta do super admin" + +#: ../admin/adm_edit.php:175 +#, php-format +msgid "Account created by %s" +msgstr "Conta foi criado por %s" + +#: ../admin/adm_list.php:66 +#, fuzzy +msgid "AlternC account list" +msgstr "Lista de contas FTP" + +#: ../admin/adm_list.php:75 +#, fuzzy +msgid "Here is the list of hosted AlternC accounts" +msgstr "Aqui está a lista de membros hospedados" + +#: ../admin/adm_list.php:75 +#, fuzzy, php-format +msgid "%s accounts" +msgstr "Contas FTP" + +#: ../admin/adm_list.php:79 +#, fuzzy +msgid "List all AlternC accounts" +msgstr "Editar esta conta" + +#: ../admin/adm_list.php:89 +#, fuzzy +msgid "Or only the accounts of:" +msgstr "Editar esta conta" + +#: ../admin/adm_list.php:94 +#, fuzzy +msgid "List only my accounts" +msgstr "Editar uma conta FTP" + +#: ../admin/adm_list.php:96 +#, fuzzy +msgid "Create a new AlternC account" +msgstr "Criar uma nova conta ftp" + +#: ../admin/adm_list.php:100 +#, fuzzy +msgid "No account defined for now" +msgstr "Nenhuma conta selecionada" + +#: ../admin/adm_list.php:114 ../admin/adm_list.php:198 +#: ../admin/adm_list.php:281 ../admin/ftp_list.php:90 +msgid "Delete checked accounts" +msgstr "Deletar as contas selecionadas" + +#: ../admin/adm_list.php:118 ../admin/adm_list.php:202 +msgid "Minimal view" +msgstr "" + +#: ../admin/adm_list.php:119 ../admin/adm_list.php:203 +msgid "Complete view" +msgstr "" + +#: ../admin/adm_list.php:125 +msgid "Manager" +msgstr "" + +#: ../admin/adm_list.php:126 +#, fuzzy +msgid "Created by" +msgstr "Criar" + +#: ../admin/adm_list.php:127 +#, fuzzy +msgid "Created on" +msgstr "Criar" + +#: ../admin/adm_list.php:129 +#, fuzzy +msgid "Last login" +msgstr "Último Login: " + +#: ../admin/adm_list.php:130 +#, fuzzy +msgid "Last ip" +msgstr "Último Login: " + +#: ../admin/adm_list.php:131 +msgid "Fails" +msgstr "" + +#: ../admin/adm_list.php:132 ../admin/main.php:80 +msgid "Expiry" +msgstr "" + +#: ../admin/adm_list.php:177 ../admin/dom_edit.php:126 +msgid "Disable" +msgstr "" + +#: ../admin/adm_list.php:191 ../admin/adm_list.php:229 +#: ../admin/adm_list.php:246 ../admin/adm_list.php:266 +msgid "C" +msgstr "" + +#: ../admin/adm_list.php:192 ../admin/adm_list.php:230 +#: ../admin/adm_list.php:247 ../admin/adm_list.php:267 +msgid "E" +msgstr "" + +#: ../admin/adm_list.php:193 ../admin/adm_list.php:232 +#: ../admin/adm_list.php:249 ../admin/adm_list.php:269 +msgid "Q" +msgstr "" + +#: ../admin/adm_login.php:45 ../admin/adm_login.php:52 +msgid "Your authentication information are incorrect" +msgstr "" + +#: ../admin/adm_login.php:111 +#, fuzzy +msgid "Member login" +msgstr "Lista dos membros" + +#: ../admin/adm_mxaccount.php:48 ../admin/adm_slaveaccount.php:48 +#, fuzzy +msgid "The requested account has been deleted. It is now denied." +msgstr "O TLD pedido foi suprimido" + +#: ../admin/adm_mxaccount.php:54 ../admin/adm_slaveaccount.php:54 +msgid "The requested account address has been created. It is now allowed." +msgstr "" + +#: ../admin/adm_mxaccount.php:63 ../admin/adm_panel.php:63 +msgid "Manage allowed accounts for secondary mx" +msgstr "" + +#: ../admin/adm_mxaccount.php:77 +msgid "" +"Here is the list of the allowed accounts for secondary mx management. You " +"can configure the alternc-secondarymx package on your secondary mx server " +"and give him the login/pass that will grant him access to your server's mx-" +"hosted domain list. " +msgstr "" + +#: ../admin/adm_mxaccount.php:81 ../admin/adm_mxaccount.php:101 +#: ../admin/adm_slaveaccount.php:80 ../admin/adm_slaveaccount.php:100 +msgid "Login" +msgstr "" + +#: ../admin/adm_mxaccount.php:89 ../admin/adm_slaveaccount.php:88 +#: ../admin/adm_slaveip.php:88 ../admin/bro_main.php:269 +#: ../admin/dom_edit.php:109 +msgid "Delete" +msgstr "Suprimir" + +#: ../admin/adm_mxaccount.php:98 +msgid "" +"If you want to allow a new server to access your mx-hosted domain list, give " +"him an account." +msgstr "" + +#: ../admin/adm_mxaccount.php:107 ../admin/adm_slaveaccount.php:106 +msgid "Add this account to the allowed list" +msgstr "" + +#: ../admin/adm_panel.php:40 ../admin/menu_adm.php:44 +msgid "Admin Control Panel" +msgstr "Painel de controle do Administrador" + +#: ../admin/adm_panel.php:51 ../admin/adm_tldadd.php:40 +#: ../admin/adm_tldedit.php:52 ../admin/adm_tld.php:50 +msgid "Manage allowed domains (TLD)" +msgstr "Controla domínios permitidos (TLD)" + +#: ../admin/adm_panel.php:52 +#, fuzzy +msgid "Password Policies" +msgstr "Senha" + +#: ../admin/adm_panel.php:58 +msgid "Advanced features" +msgstr "" + +#: ../admin/adm_panel.php:61 ../admin/adm_slaveip.php:62 +msgid "Manage allowed ip for slave zone transfers" +msgstr "" + +#: ../admin/adm_panel.php:62 ../admin/adm_slaveaccount.php:62 +msgid "Manage allowed accounts for slave zone transfers" +msgstr "" + +#: ../admin/adm_panel.php:64 ../admin/adm_variables.php:47 +#, fuzzy +msgid "Configure AlternC variables" +msgstr "Configurar o navegador de arquivo" + +#: ../admin/adm_panel.php:66 +msgid "DNS and website having errors" +msgstr "" + +#: ../admin/adm_panel.php:67 +#, fuzzy +msgid "Account creation statistics" +msgstr "Conta foi criado por %s" + +#: ../admin/adm_passpolicy.php:49 +#, fuzzy +msgid "Manage Password Policy" +msgstr "Mudança da senha SQL" + +#: ../admin/adm_passpolicy.php:62 ../admin/adm_passpolicy.php:77 +msgid "Policy not found" +msgstr "" + +#: ../admin/adm_passpolicy.php:66 +#, fuzzy +msgid "Policy changed" +msgstr "Senha" + +#: ../admin/adm_passpolicy.php:70 +msgid "Cannot edit the policy, an error occurred" +msgstr "" + +#: ../admin/adm_passpolicy.php:81 +msgid "Please choose which policy you want to apply to this password kind:" +msgstr "" + +#: ../admin/adm_passpolicy.php:89 +msgid "Minimum Password Size:" +msgstr "" + +#: ../admin/adm_passpolicy.php:96 +msgid "Maximum Password Size:" +msgstr "" + +#: ../admin/adm_passpolicy.php:103 +msgid "In how many classes of characters must be the password (at least):" +msgstr "" + +#: ../admin/adm_passpolicy.php:110 +msgid "Do we allow the password to be like the login?" +msgstr "" + +#: ../admin/adm_passpolicy.php:116 +msgid "Apply this password policy" +msgstr "" + +#: ../admin/adm_passpolicy.php:117 +msgid "Cancel and go back to the policy list" +msgstr "" + +#: ../admin/adm_passpolicy.php:120 +msgid "" +"The classes of characters are :
            1. Low-case letters (a-z)
            2. " +"Upper-case letters (A-Z)
            3. Figures (0-9)
            4. Ascii symbols (!\"#$" +"%&'()*+,-./:;<=>?@[\\]^_`)
            5. Non-Ascii symbols (accents...)" +msgstr "" + +#: ../admin/adm_passpolicy.php:133 +msgid "" +"Here is the list of the password policies for each place a password may be " +"needed in AlternC's services. For each of those password kind, you can " +"choose which policy will be applied to passwords. A policy is a minimum and " +"maximum password size, and how many classes of characters must appear in the " +"password. You can also forbid (or not) to use the login or part of it as a " +"password." +msgstr "" + +#: ../admin/adm_passpolicy.php:137 +#, fuzzy +msgid "Password Kind" +msgstr "Senha" + +#: ../admin/adm_passpolicy.php:137 +#, fuzzy +msgid "Password Policy" +msgstr "Senha" + +#: ../admin/adm_passpolicy.php:139 +#, fuzzy +msgid "Min Size" +msgstr "Tamanho" + +#: ../admin/adm_passpolicy.php:140 +#, fuzzy +msgid "Max Size" +msgstr "Tamanho" + +#: ../admin/adm_passpolicy.php:141 +msgid "Complexity" +msgstr "" + +#: ../admin/adm_passpolicy.php:142 +msgid "Allow Password=Login?" +msgstr "" + +#: ../admin/adm_quotadoedit.php:48 +msgid "The quotas has been successfully edited" +msgstr "Os quotas foram editados com sucesso" + +#: ../admin/adm_quotaedit.php:55 +msgid "Editing the quotas of a member" +msgstr "Editando os quotas do membro" + +#: ../admin/adm_quotaedit.php:69 ../admin/quota_show.php:42 +msgid "Quota" +msgstr "Quota" + +#: ../admin/adm_quotaedit.php:69 ../admin/quota_show.php:42 +#: ../admin/quotas_users.php:153 ../admin/quotas_users.php:177 +msgid "Total" +msgstr "Total" + +#: ../admin/adm_quotaedit.php:69 ../admin/quota_show.php:42 +msgid "Used" +msgstr "Usado(s)" + +#: ../admin/adm_quotaedit.php:77 ../class/m_quota.php:99 +#: ../class/m_quota.php:107 ../class/m_quota.php:111 +#, fuzzy +msgid "quota_" +msgstr "Espaço de Disco" + +#: ../admin/adm_quotaedit.php:86 +msgid "Edit the quotas" +msgstr "Editar os quotas" + +#: ../admin/adm_slaveaccount.php:76 +msgid "" +"Here is the list of the allowed accounts for slave dns synchronization. You " +"can configure the alternc-slavedns package on your slave server and give him " +"the login/pass that will grant him access to your server's domain list. " +msgstr "" + +#: ../admin/adm_slaveaccount.php:97 +msgid "" +"If you want to allow a new server to access your domain list, give him an " +"account." +msgstr "" + +#: ../admin/adm_slaveip.php:48 +msgid "" +"The requested ip address has been deleted. It will be denied in one hour." +msgstr "" + +#: ../admin/adm_slaveip.php:54 +msgid "" +"The requested ip address has been added to the list. It will be allowed in " +"one hour." +msgstr "" + +#: ../admin/adm_slaveip.php:76 +msgid "" +"Here is the list of the allowed ip or ip class for slave dns zone transfer " +"requests (AXFR). You must add the ip address of all the slave DNS you have " +"so that those slaves will be allowed to transfer the zone files. There is " +"also some defaults ip from DNS checks made by some third-party technical " +"offices such as afnic (for .fr domains)" +msgstr "" + +#: ../admin/adm_slaveip.php:80 ../admin/adm_slaveip.php:99 +#, fuzzy +msgid "IP Address" +msgstr "Endereço email" + +#: ../admin/adm_slaveip.php:96 +msgid "" +"If you want to allow an ip address or class to connect to your dns server, " +"enter it here. Choose 32 as a prefix for single ip address." +msgstr "" + +#: ../admin/adm_slaveip.php:99 +msgid "Prefix" +msgstr "" + +#: ../admin/adm_slaveip.php:105 +#, fuzzy +msgid "Add this ip to the slave list" +msgstr "Adiçionar um email ao domínio %s" + +#: ../admin/adm_tldadd.php:50 ../admin/adm_tldadd.php:64 +#: ../admin/adm_tld.php:64 ../admin/adm_tld.php:87 +msgid "Add a new TLD" +msgstr "Adicionar um novo TLD" + +#: ../admin/adm_tldadd.php:52 +msgid "" +"Enter the new TLD (without the first dot) and choose what check should be " +"done." +msgstr "" +"Entrar um novo TLD (sem o primeiro ponto) e escolher que verificação deve " +"ser feita." + +#: ../admin/adm_tldadd.php:53 +#, fuzzy +msgid "" +"Warning : only some final tld are known in the whois function of AlternC, " +"please check m_dom.php accordingly." +msgstr "" +"Aviso: somente algums tld estam conhecedos na função whois do AlternC, por " +"favor verificar em m_domains.php conformente." + +#: ../admin/adm_tldadd.php:59 ../admin/adm_tldedit.php:64 +#: ../admin/adm_tld.php:67 +msgid "TLD" +msgstr "TLD" + +#: ../admin/adm_tldadd.php:60 ../admin/adm_tldedit.php:65 +#: ../admin/adm_tld.php:67 +msgid "Allowed Mode" +msgstr "Modalidade Permitida" + +#: ../admin/adm_tlddoadd.php:42 +msgid "The TLD has been successfully added" +msgstr "O TLD foi adiçionado com sucesso" + +#: ../admin/adm_tlddoedit.php:42 +msgid "The TLD has been successfully edited" +msgstr "Este TLD foi editado com sucesso" + +#: ../admin/adm_tldedit.php:60 +msgid "Edit a TLD" +msgstr "Editar um TLD" + +#: ../admin/adm_tldedit.php:69 +msgid "Edit this TLD" +msgstr "Editar este TLD" + +#: ../admin/adm_tld.php:41 +msgid "Some TLD cannot be deleted..." +msgstr "Algums TLD não pode ser suprimidos..." + +#: ../admin/adm_tld.php:44 +msgid "The requested TLD has been deleted" +msgstr "O TLD pedido foi suprimido" + +#: ../admin/adm_tld.php:62 +msgid "" +"Here is the list of the TLD allowed on this server. Each TLD can be allowed " +"or denied after some checks (whois, ns, domain exists...)" +msgstr "" +"Aqui está a lista do TLD permitido neste servidor. Cada TLD pode ser " +"permitido ou negado após algumas verifcações (whois, ns, domínio existir) " + +#: ../admin/adm_tld.php:83 +msgid "Delete the checked TLD" +msgstr "Suprimir o TLD selecionado" + +#: ../admin/adm_variables.php:52 +msgid "Here are the internal AlternC variables that are currently being used." +msgstr "" + +#: ../admin/adm_variables.php:57 +msgid "Names" +msgstr "" + +#: ../admin/adm_variables.php:57 +msgid "Comment" +msgstr "" + +#: ../admin/adm_variables.php:74 +msgid "Save variables" +msgstr "" + +#: ../admin/bro_editor.php:44 ../admin/bro_editor.php:50 +#, php-format +msgid "Your file %s has been saved" +msgstr "Seu arquivo %s foi salvado com sucesso" + +#: ../admin/bro_editor.php:58 +msgid "File editing" +msgstr "Edição de arquivo" + +#: ../admin/bro_editor.php:63 +msgid "ctrl+click or shift+click and drag to resize the editing zone" +msgstr "" + +#: ../admin/bro_editor.php:67 +msgid "Save" +msgstr "Salvar" + +#: ../admin/bro_editor.php:68 +msgid "Save & Quit" +msgstr "Salva & Sair" + +#: ../admin/bro_editor.php:69 +msgid "Quit" +msgstr "Sair" + +#: ../admin/bro_main.php:82 +#, php-format +msgid "Deleting files and/or directories" +msgstr "" + +#: ../admin/bro_main.php:87 +#, fuzzy +msgid "WARNING: Confirm the deletion of this files" +msgstr "AVISO : Confirmar o apagamento do secundário-domínio" + +#: ../admin/bro_main.php:133 +msgid "extracting..." +msgstr "" + +#: ../admin/bro_main.php:137 +#, fuzzy +msgid "failed" +msgstr "Arquivo" + +#: ../admin/bro_main.php:140 +msgid "done" +msgstr "" + +#: ../admin/bro_main.php:149 ../admin/menu_brouteur.php:34 +msgid "File browser" +msgstr "Navegador de arquivos" + +#: ../admin/bro_main.php:157 +msgid "Path" +msgstr "" + +#: ../admin/bro_main.php:169 +msgid "Send one file:" +msgstr "" + +#: ../admin/bro_main.php:173 +#, fuzzy +msgid "Send this file" +msgstr "Importar este arquivo" + +#: ../admin/bro_main.php:181 +#, fuzzy +msgid "New file or folder:" +msgstr "Nenhum arquivo nesta pasta" + +#: ../admin/bro_main.php:186 +msgid "Create" +msgstr "Criar" + +#: ../admin/bro_main.php:188 ../admin/bro_main.php:228 +msgid "File" +msgstr "Arquivo" + +#: ../admin/bro_main.php:189 ../admin/bro_main.php:357 ../admin/ftp_add.php:57 +#: ../admin/ftp_edit.php:62 ../admin/ftp_list.php:72 ../admin/hta_add.php:50 +#: ../admin/hta_adduser.php:49 ../admin/hta_edit.php:98 +#: ../admin/hta_edituser.php:52 ../admin/hta_list.php:67 +#: ../admin/sta2_list.php:58 +msgid "Folder" +msgstr "Pasta" + +#: ../admin/bro_main.php:206 ../admin/bro_main.php:212 +#: ../admin/bro_main.php:270 +msgid "Rename" +msgstr "Rebatizar" + +#: ../admin/bro_main.php:222 ../admin/bro_main.php:228 +#: ../admin/bro_main.php:271 +msgid "Permissions" +msgstr "" + +#: ../admin/bro_main.php:242 +msgid "write" +msgstr "" + +#: ../admin/bro_main.php:250 +#, fuzzy +msgid "Change permissions" +msgstr "Mudar meus ajustes" + +#: ../admin/bro_main.php:273 +#, fuzzy +msgid "Copy" +msgstr "Copiar" + +#: ../admin/bro_main.php:274 +msgid "Move" +msgstr "Relocalizar" + +#: ../admin/bro_main.php:275 +msgid "To" +msgstr "" + +#: ../admin/bro_main.php:305 +#, fuzzy +msgid "Filename" +msgstr "Rebatizar" + +#: ../admin/bro_main.php:306 ../admin/mail_list.php:104 +#: ../admin/sql_list.php:51 +msgid "Size" +msgstr "Tamanho" + +#: ../admin/bro_main.php:307 +msgid "Last modification" +msgstr "" + +#: ../admin/bro_main.php:309 +#, fuzzy +msgid "File Type" +msgstr "Arquivo" + +#: ../admin/bro_main.php:334 ../admin/bro_main.php:512 +#: ../admin/sta2_list.php:58 ../admin/sta2_list.php:72 +msgid "View" +msgstr "Vista" + +#: ../admin/bro_main.php:341 +msgid "Extract" +msgstr "" + +#: ../admin/bro_main.php:384 ../admin/bro_main.php:414 +#: ../admin/bro_main.php:451 ../admin/bro_main.php:481 +msgid "V" +msgstr "V" + +#: ../admin/bro_main.php:538 +msgid "No files in this folder" +msgstr "Nenhum arquivo nesta pasta" + +#: ../admin/bro_main.php:548 +msgid "Show size of directories" +msgstr "" + +#: ../admin/bro_main.php:548 +msgid "(slow)" +msgstr "" + +#: ../admin/bro_main.php:552 +msgid "Edit this folder's protection" +msgstr "" + +#: ../admin/bro_main.php:555 ../admin/hta_add.php:61 +msgid "Protect this folder" +msgstr "Protect this folder" + +#: ../admin/bro_main.php:557 +#, fuzzy +msgid "with a login and a password" +msgstr "Senha inicial" + +#: ../admin/bro_main.php:560 +#, fuzzy +msgid "Download this folder" +msgstr "Protect this folder" + +#: ../admin/bro_main.php:562 +#, php-format +msgid "as a %s file" +msgstr "" + +#: ../admin/bro_main.php:570 +#, fuzzy +msgid "Edit the ftp account" +msgstr "Editar esta conta" + +#: ../admin/bro_main.php:571 +#, fuzzy +msgid "that exists in this folder" +msgstr "Nenhum arquivo nesta pasta" + +#: ../admin/bro_main.php:577 +#, fuzzy +msgid "Create an ftp account in this folder" +msgstr "Há uma conta ftp nesta pasta" + +#: ../admin/bro_main.php:586 +#, fuzzy +msgid "Configure the file editor" +msgstr "Configurar o navegador de arquivo" + +#: ../admin/bro_pref.php:34 +msgid "Your preferences have been updated." +msgstr "Suas preferências foram atualizadas." + +#: ../admin/bro_pref.php:44 +msgid "File browser preferences" +msgstr "Preferências do navegador de arquivos" + +#: ../admin/bro_pref.php:51 +msgid "Horizontal window size" +msgstr "Tamanho horizontal da janela" + +#: ../admin/bro_pref.php:59 +msgid "Vertical window size" +msgstr "Tamanho vertical da janela" + +#: ../admin/bro_pref.php:67 +msgid "File editor font name" +msgstr "Nome de fonte do navegador de arquivos" + +#: ../admin/bro_pref.php:75 +msgid "File editor font size" +msgstr "Tamanho de fonte do navegador de arquivos" + +#: ../admin/bro_pref.php:83 +msgid "File list view" +msgstr "Vista lista de arquivos" + +#: ../admin/bro_pref.php:91 +msgid "Downloading file format" +msgstr "Abaixando o formate de arquivo" + +#: ../admin/bro_pref.php:99 +msgid "What to do after creating a file" +msgstr "Que a fazer após ter criado um arquivo" + +#: ../admin/bro_pref.php:107 +msgid "Show icons?" +msgstr "Mostrar ícones?" + +#: ../admin/bro_pref.php:115 +msgid "Show file types?" +msgstr "Mostrar tipos e arquivos?" + +#: ../admin/bro_pref.php:123 +msgid "Remember last visited directory?" +msgstr "Recordar o último diretório visitado?" + +#: ../admin/bro_pref.php:133 +msgid "Change my settings" +msgstr "Mudar meus ajustes" + +#: ../admin/browseforfolder.php:115 +msgid "Searching for a folder" +msgstr "" + +#: ../admin/browseforfolder.php:121 +#, fuzzy +msgid "Error, cannot find this folder" +msgstr "Protect this folder" + +#: ../admin/browseforfolder.php:123 +#, fuzzy +msgid "Back to the root folder" +msgstr "Volta ao navegador de arquivos" + +#: ../admin/browseforfolder.php:135 +#, fuzzy +msgid "Select" +msgstr "Suprimir" + +#: ../admin/dom_add.php:45 +msgid "Domain hosting" +msgstr "Hospedagem do Domínio" + +#: ../admin/dom_add.php:49 +msgid "You cannot add any new domain, your quota is over." +msgstr "Você não pode adiçionr mais domínios, sua quota acabou." + +#: ../admin/dom_add.php:49 +msgid "Contact your administrator for more information." +msgstr "Contatar seu administrador para mais informação." + +#: ../admin/dom_add.php:60 +msgid "host my dns here" +msgstr "hospedar meu DNS aqui" + +#: ../admin/dom_add.php:67 +msgid "" +"Do you want to point this domain to another domain already installed in your " +"account?" +msgstr "" + +#: ../admin/dom_add.php:69 +msgid "No: This domain will have its own folder." +msgstr "" + +#: ../admin/dom_add.php:71 +msgid "Yes, redirect this new domain to this one:" +msgstr "" + +#: ../admin/dom_add.php:72 +msgid "-- Choose a domain --" +msgstr "" + +#: ../admin/dom_add.php:86 +msgid "Add this domain" +msgstr "Adiçionar este domínio" + +#: ../admin/dom_add.php:91 +msgid "" +"If you don't want to host in our server the DNS of your domain, don't check " +"the box 'host my dns here'. If you don't know what it mean, leave it checked." +msgstr "" +"Se você não quiser hospedar o DNS em nosso servidor, não seleciona a caixa " +"'hospedar meu DNS aqui'. Se você não sabe o que significa, deixá-lo " +"selecionado." + +#: ../admin/dom_add.php:96 ../admin/dom_doadd.php:60 +msgid "Whois result on the domain" +msgstr "Resultado Whois deste domínio" + +#: ../admin/dom_doadd.php:52 ../admin/menu_dom.php:44 +msgid "Add a domain" +msgstr "Adiçionar um domínio" + +#: ../admin/dom_doadd.php:54 +#, php-format +msgid "Your new domain %s has been successfully installed" +msgstr "Seu domínio %s foi instalado com sucesso" + +#: ../admin/dom_doadd.php:55 ../admin/dom_dodel.php:56 +#: ../admin/dom_dodel.php:85 ../admin/dom_editdns.php:70 +#: ../admin/dom_subdodel.php:65 ../admin/hta_doedituser.php:61 +msgid "Click here to continue" +msgstr "Clicar aqui para continuar" + +#: ../admin/dom_dodel.php:54 +#, fuzzy +msgid "Deletion have been successfully cancelled" +msgstr "A caixa de email %s foi mudado com sucesso" + +#: ../admin/dom_dodel.php:64 ../admin/dom_dodel.php:67 +#, php-format +msgid "Confirm the deletion of domain %s" +msgstr "Confirma o apagamento deste domínio %s" + +#: ../admin/dom_dodel.php:67 ../admin/sql_del.php:66 +#: ../admin/sql_users_del.php:55 +msgid "WARNING" +msgstr "AVISO" + +#: ../admin/dom_dodel.php:69 +msgid "This will delete the related sub-domains too." +msgstr "Isto suprimirá os secundário-domínios relacionados tambem." + +#: ../admin/dom_dodel.php:80 +#, php-format +msgid "Domain %s deleted" +msgstr "Domínio %s suprimido" + +#: ../admin/dom_dodel.php:84 +#, php-format +msgid "The domain %s has been successfully deleted." +msgstr "O domínio %s foi suprimido com sucesso." + +#: ../admin/dom_editdns.php:60 +#, php-format +msgid "Editing domain %s" +msgstr "Editando o domínio %s" + +#: ../admin/dom_editdns.php:65 +#, fuzzy, php-format +msgid "The domain %s has been changed." +msgstr "O domínio %s foi suprimido com sucesso." + +#: ../admin/dom_editdns.php:68 ../admin/dom_subdodel.php:61 +#, fuzzy +msgid "The modifications will take effect at %time. Server time is %now." +msgstr "As modificações estaram actualizadas em 5 minutos." + +#: ../admin/dom_edit.inc.php:40 +#, fuzzy +msgid "Edit a subdomain:" +msgstr "Editando o domínio %s" + +#: ../admin/dom_edit.inc.php:42 +#, fuzzy +msgid "Create a subdomain:" +msgstr "Adiçionar um secundário-domínio" + +#: ../admin/dom_edit.inc.php:63 +msgid "Show advanced options" +msgstr "" + +#: ../admin/dom_edit.inc.php:64 +msgid "Hide advanced options" +msgstr "" + +#: ../admin/dom_edit.inc.php:85 ../admin/ftp_add.php:60 +#: ../admin/ftp_edit.php:66 ../admin/hta_add.php:54 ../admin/sql_bck.php:97 +#: ../admin/sta2_add_raw.php:57 ../admin/sta2_edit_raw.php:63 +#, fuzzy +msgid "Choose a folder..." +msgstr "Protect a folder" + +#: ../admin/dom_edit.inc.php:91 +msgid "(enter an URL here)" +msgstr "" + +#: ../admin/dom_edit.inc.php:95 +msgid "(enter an IPv4 address, for example 192.168.1.2)" +msgstr "" + +#: ../admin/dom_edit.inc.php:99 +msgid "(enter an IPv6 address, for example 2001:0910::0)" +msgstr "" + +#: ../admin/dom_edit.inc.php:103 +msgid "(enter a TXT informations for this domain)" +msgstr "" + +#: ../admin/dom_edit.inc.php:107 +msgid "(enter a domain name or subdomain)" +msgstr "" + +#: ../admin/dom_edit.inc.php:117 +#, fuzzy +msgid "Edit this subdomain" +msgstr "Adiçionar este domínio" + +#: ../admin/dom_edit.inc.php:119 +#, fuzzy +msgid "Add this subdomain" +msgstr "Adiçionar este domínio" + +#: ../admin/dom_edit.php:66 +#, fuzzy, php-format +msgid "Editing subdomains of %s" +msgstr "Editando o domínio %s" + +#: ../admin/dom_edit.php:76 +msgid "This domain have some DNS change pending. Please wait." +msgstr "" + +#: ../admin/dom_edit.php:79 +#, fuzzy +msgid "You requested deletion of this domain." +msgstr "Confirma o apagamento deste domínio %s" + +#: ../admin/dom_edit.php:97 +#, fuzzy +msgid "Subdomain" +msgstr "Secundário-domínios" + +#: ../admin/dom_edit.php:97 +msgid "Type" +msgstr "" + +#: ../admin/dom_edit.php:129 +msgid "Activation pending" +msgstr "" + +#: ../admin/dom_edit.php:132 +msgid "Disabled" +msgstr "" + +#: ../admin/dom_edit.php:133 +msgid "Enable" +msgstr "" + +#: ../admin/dom_edit.php:136 +msgid "Desactivation pending" +msgstr "" + +#: ../admin/dom_edit.php:143 +msgid "Update pending" +msgstr "" + +#: ../admin/dom_edit.php:146 +#, fuzzy +msgid "Deletion pending" +msgstr "Suprimando o secundário-domínio %s" + +#: ../admin/dom_edit.php:174 +#, fuzzy +msgid "DNS & Email parameters" +msgstr "Parâmetros DNS" + +#: ../admin/dom_edit.php:179 +msgid "Manage the DNS on the server ?" +msgstr "Administrar o DNS neste servidor ?" + +#: ../admin/dom_edit.php:190 +#, fuzzy +msgid "Manage the Emails Addresses of this domain on the server?" +msgstr "Administrar o DNS neste servidor ?" + +#: ../admin/dom_edit.php:197 +msgid "" +"Warning: If you set this to 'no', all your email accounts and aliases on " +"this domain will be immediately deleted." +msgstr "" + +#: ../admin/dom_edit.php:199 +msgid "Submit the changes" +msgstr "Submeter as mudanças" + +#: ../admin/dom_edit.php:204 +#, fuzzy +msgid "Domain removal" +msgstr "Nome do Domínio" + +#: ../admin/dom_edit.php:207 +#, php-format +msgid "help_domain_del %s" +msgstr "" +"Se você quiser suprimir o domínio %s, clica a tecla abaixo.Aviso : isto " +"suprimirá todo o ftp, correios, envi-listas ... associadas com estedomínio e " +"os sécondarios domínios dele" + +#: ../admin/dom_edit.php:210 +#, php-format +msgid "Delete %s from this server" +msgstr "" + +#: ../admin/dom_subdel.php:48 +#, php-format +msgid "Deleting subdomain %s" +msgstr "Suprimando o secundário-domínio %s" + +#: ../admin/dom_subdel.php:67 +msgid "WARNING : Confirm the deletion of the subdomain" +msgstr "AVISO : Confirmar o apagamento do secundário-domínio" + +#: ../admin/dom_subdodel.php:50 +#, fuzzy, php-format +msgid "Deleting the subdomain %s:" +msgstr "Suprimando o secundário-domínio %s" + +#: ../admin/dom_subdoedit.php:65 ../admin/dom_substatus.php:27 +#, fuzzy +msgid "The modifications will take effect at %time. Server time is %now." +msgstr "As modificações estaram actualizadas em 5 minutos." + +#: ../admin/dom_subedit.php:51 +#, fuzzy +msgid "Editing subdomain" +msgstr "Editando o domínio %s" + +#: ../admin/ftp_add.php:34 +#, fuzzy +msgid "You cannot add any new ftp account, your quota is over." +msgstr "Você não pode adiçionr mais domínios, sua quota acabou." + +#: ../admin/ftp_add.php:39 ../admin/ftp_list.php:57 ../admin/menu_ftp.php:44 +msgid "Create a new ftp account" +msgstr "Criar uma nova conta ftp" + +#: ../admin/ftp_add.php:67 +msgid "Create this new FTP account." +msgstr "Criar está nova conta FTP." + +#: ../admin/ftp_del.php:42 +#, php-format +msgid "The ftp account %s has been successfully deleted" +msgstr "Esta conta ftp %s foi suprimado com sucesso" + +#: ../admin/ftp_doadd.php:44 +msgid "The FTP account has been successfully created" +msgstr "A conta FTP foi criado com sucesso" + +#: ../admin/ftp_doedit.php:33 ../admin/ftp_edit.php:39 +msgid "No account selected!" +msgstr "Nenhuma conta selecionada" + +#: ../admin/ftp_doedit.php:47 +msgid "The ftp account has been successfully changed" +msgstr "A conta ftp foi mudado com sucesso" + +#: ../admin/ftp_doedit.php:56 ../admin/ftp_edit.php:48 +msgid "Editing an FTP account" +msgstr "Editar uma conta FTP" + +#: ../admin/ftp_edit.php:74 +msgid "Change this FTP account" +msgstr "Mudar esta conta FTP" + +#: ../admin/ftp_list.php:45 ../admin/menu_ftp.php:46 +msgid "FTP accounts list" +msgstr "Lista de contas FTP" + +#: ../admin/head.php:55 +msgid "" +"Administrator session. you may return to your " +"account or cancel this feature" +msgstr "" + +#: ../admin/hta_add.php:34 ../admin/hta_list.php:50 ../admin/hta_list.php:88 +#: ../admin/web_list.php:3 +msgid "Protect a folder" +msgstr "Protect a folder" + +#: ../admin/hta_add.php:38 +msgid "" +"Enter the name of the folder you want to protect. It must already exists." +msgstr "" + +#: ../admin/hta_adduser.php:39 +#, php-format +msgid "Adding a username in %s" +msgstr "Adding a username in %s" + +#: ../admin/hta_adduser.php:66 ../admin/hta_edit.php:115 +msgid "Add this user" +msgstr "Add this user" + +#: ../admin/hta_del.php:42 +#, php-format +msgid "The protected folder %s has been successfully unprotected" +msgstr "The protected folder %s has been successfully unprotected" + +#: ../admin/hta_doadduser.php:39 +msgid "Please enter a password" +msgstr "Please enter a password" + +#: ../admin/hta_doedituser.php:51 +#, php-format +msgid "Change the user %s in the protected folder %s" +msgstr "Change the user %s in the protected folder %s" + +#: ../admin/hta_doedituser.php:59 +#, php-format +msgid "The password of the user %s has been successfully changed" +msgstr "The password of the user %s has been successfully changed" + +#: ../admin/hta_edit.php:39 +msgid "No folder selected!" +msgstr "No folder selected!" + +#: ../admin/hta_edit.php:48 +#, php-format +msgid "List of authorized user in folder %s" +msgstr "List of authorized user in folder %s" + +#: ../admin/hta_edit.php:53 +#, php-format +msgid "No authorized user in %s" +msgstr "No authorized user in %s" + +#: ../admin/hta_edit.php:73 ../admin/sql_users_password.php:41 +#, fuzzy +msgid "Change this user's password" +msgstr "Mudança da senha SQL" + +#: ../admin/hta_edit.php:82 ../admin/sql_users_list.php:74 +msgid "Delete the checked users" +msgstr "Delete the checked users" + +#: ../admin/hta_edit.php:87 +msgid "Show this folder's content in the File Browser" +msgstr "" + +#: ../admin/hta_edit.php:93 +#, fuzzy +msgid "Adding an authorized user" +msgstr "No authorized user in %s" + +#: ../admin/hta_edituser.php:40 +#, php-format +msgid "Editing user %s in the protected folder %s" +msgstr "Editing user %s in the protected folder %s" + +#: ../admin/hta_edituser.php:53 ../admin/sql_users_list.php:52 +#, fuzzy +msgid "User" +msgstr "Usado(s)" + +#: ../admin/hta_edituser.php:54 ../admin/mem_param.php:64 +#: ../admin/mem_param.php:65 +msgid "New password" +msgstr "New password" + +#: ../admin/hta_edituser.php:56 ../admin/sql_passchg.php:56 +#, fuzzy +msgid "Change the password" +msgstr "Mudança da senha SQL" + +#: ../admin/hta_list.php:41 +msgid "Protected folders list" +msgstr "Protected folders list" + +#: ../admin/hta_list.php:60 +msgid "help_hta_list" +msgstr "" + +#: ../admin/hta_list.php:78 +#, fuzzy +msgid "Edit login and passwords" +msgstr "Senha inicial" + +#: ../admin/hta_list.php:87 +msgid "Unprotect the checked folders" +msgstr "Unprotect the checked folders" + +#: ../admin/index.php:57 +#, fuzzy +msgid "Web Hosting Control Panel" +msgstr "Painel de controle do Administrador" + +#: ../admin/index.php:71 +msgid "" +"To connect to the hosting control panel, enter your AlternC's login and " +"password in the following form and click 'Enter'" +msgstr "" + +#: ../admin/index.php:75 +#, fuzzy +msgid "AlternC access" +msgstr "Lista de contas FTP" + +#: ../admin/index.php:78 ../admin/index.php:95 +msgid "Enter" +msgstr "" + +#: ../admin/index.php:85 +msgid "" +"If you want to read your mail, enter your Email address and password in the " +"following form and click 'Enter'" +msgstr "" + +#: ../admin/index.php:91 +#, fuzzy +msgid "Webmail Access" +msgstr "Acesso Webmail" + +#: ../admin/index.php:92 +#, fuzzy +msgid "Email Address" +msgstr "Endereço email" + +#: ../admin/index.php:106 +msgid "You must accept the session cookie to log-in" +msgstr "Você precisa aceitar o cookie da sessão para o login" + +#: ../admin/mail_add.php:43 +#, php-format +msgid "Add a mail to the domain %s" +msgstr "Adiçionar um email ao domínio %s" + +#: ../admin/mail_add.php:62 ../admin/mail_edit.php:70 +#, fuzzy +msgid "Is it a POP/IMAP account?" +msgstr "É uma conta POP?" + +#: ../admin/mail_add.php:70 ../admin/mail_edit.php:78 +#, fuzzy +msgid "POP/IMAP password" +msgstr "Senha POP" + +#: ../admin/mail_add.php:76 ../admin/mail_edit.php:88 +#, fuzzy +msgid "Redirections
            Other recipients:" +msgstr "Outros receptores" + +#: ../admin/mail_add.php:76 ../admin/mail_edit.php:88 +#, fuzzy +msgid "one email per line" +msgstr "Um email por linha" + +#: ../admin/mail_add.php:80 ../admin/mail_edit.php:91 +#, fuzzy +msgid "Is it a temporary mail account?" +msgstr "Mudar esta conta FTP" + +#: ../admin/mail_add.php:87 +#, fuzzy +msgid "Create this email address" +msgstr "Criar uma caixa de email" + +#: ../admin/mail_add.php:94 +msgid "help_mail_add" +msgstr "" + +#: ../admin/mail_del.php:51 +#, fuzzy, php-format +msgid "The email address %s does not exist!" +msgstr "A caixa de email %s não existe!" + +#: ../admin/mail_del.php:53 +#, fuzzy, php-format +msgid "The email address %s has been deleted!" +msgstr "A caixa de email %s foi criado com sucesso" + +#: ../admin/mail_del.php:63 +#, fuzzy +msgid "Deleting mail accounts" +msgstr "Suprimir uma conta FTP" + +#: ../admin/mail_del.php:66 +#, fuzzy +msgid "Please confirm the deletion of the following mail accounts:" +msgstr "Confirma o apagamento das bases de dados SQL seguintes" + +#: ../admin/mail_del.php:82 +#, fuzzy +msgid "Confirm the deletion" +msgstr "Confirma o apagamento deste domínio %s" + +#: ../admin/mail_del.php:82 +msgid "Don't delete anything and go back to the email list" +msgstr "" + +#: ../admin/mail_del.php:86 +msgid "" +"Warning: Deleting an email address will destroy all the messages it " +"contains! You will NOT be able to get it back!" +msgstr "" + +#: ../admin/mail_doadd.php:55 +#, fuzzy, php-format +msgid "The email address %s has been successfully created" +msgstr "A caixa de email %s foi criado com sucesso" + +#: ../admin/mail_dodel.php:40 +#, php-format +msgid "The mailbox %s does not exist!" +msgstr "A caixa de email %s não existe!" + +#: ../admin/mail_dodel.php:43 +#, fuzzy, php-format +msgid "The mailbox %s has been deleted!" +msgstr "A caixa de email %s foi criado com sucesso" + +#: ../admin/mail_doedit.php:60 +#, fuzzy, php-format +msgid "The email address %s has been successfully changed" +msgstr "A caixa de email %s foi mudado com sucesso" + +#: ../admin/mail_edit.php:48 +#, fuzzy, php-format +msgid "Edit an email address of the domain %s" +msgstr "Editar a caixa de email do domínio %s" + +#: ../admin/mail_edit.php:66 +#, fuzzy, php-format +msgid "Edit the email address %s" +msgstr "Editar a caixa e email %s" + +#: ../admin/mail_edit.php:68 +msgid "This account is a temporary account.
            It will be delete on " +msgstr "" + +#: ../admin/mail_edit.php:84 +msgid "" +"WARNING: turning POP/IMAP off will DELETE the stored messages in this email " +"address. This email address will become a simple redirection." +msgstr "" + +#: ../admin/mail_edit.php:97 +#, fuzzy +msgid "Change this email address" +msgstr "Mudar esta caixa de email" + +#: ../admin/mail_edit.php:104 +#, fuzzy +msgid "help_mail_edit" +msgstr "" +"Se nós não controlamos o DNS deste domínio
            controlamos seus correios?" + +#: ../admin/mail_list.php:49 ../admin/mail_list.php:68 +#, fuzzy, php-format +msgid "Email addresses of the domain %s" +msgstr "Lista de caixas de email do domínio %s" + +#: ../admin/mail_list.php:58 ../admin/mail_list.php:77 +#, php-format +msgid "Add a mailbox on %s" +msgstr "Adiçionar a caixa de email em %s" + +#: ../admin/mail_list.php:60 ../admin/mail_list.php:79 +#, fuzzy, php-format +msgid "Add many mailboxes on %s" +msgstr "Adiçionar a caixa de email em %s" + +#: ../admin/mail_list.php:87 +msgid "Show only mail starting by:" +msgstr "" + +#: ../admin/mail_list.php:93 +#, php-format +msgid "All" +msgstr "" + +#: ../admin/mail_list.php:127 +#, fuzzy +msgid "This account will be deleted on" +msgstr "Algums TLD não pode ser suprimidos..." + +#: ../admin/mail_list.php:136 +#, fuzzy +msgid "Delete the checked email addresses" +msgstr "Suprimir as bases selecionadas" + +#: ../admin/main.php:38 +msgid "Last Login: " +msgstr "Último Login: " + +#: ../admin/main.php:41 +#, php-format +msgid "from: %1$s " +msgstr "do: %1$s " + +#: ../admin/main.php:45 +#, php-format +msgid "%1$d login failed since last login" +msgstr "%1$d login falharam desde o último login" + +#: ../admin/main.php:61 +msgid "Latest news" +msgstr "" + +#: ../admin/main.php:78 +msgid "Expired or about to expire accounts" +msgstr "" + +#: ../admin/main.php:80 +msgid "uid" +msgstr "" + +#: ../admin/main.php:80 +msgid "Last name, surname" +msgstr "" + +#: ../admin/mem_admin.php:40 +#, fuzzy +msgid "Your administrator preferences has been successfully changed." +msgstr "Seus parâmetros de backup foram mudados com sucesso" + +#: ../admin/mem_admin.php:46 ../admin/mem_param.php:97 +#, fuzzy +msgid "Admin preferences" +msgstr "Preferências do editor de arquivos" + +#: ../admin/mem_chgmail.php:44 ../admin/mem_cm2.php:40 ../admin/mem_cm.php:35 +#: ../admin/mem_cm.php:46 ../admin/mem_param.php:74 +msgid "Change the email of the account" +msgstr "Mudar o email da sua conta" + +#: ../admin/mem_chgmail.php:51 +#, php-format +msgid "help_mem_chgmail %s" +msgstr "" + +#: ../admin/mem_cm2.php:48 +#, fuzzy +msgid "The mailbox has been successfully changed." +msgstr "A caixa de email %s foi mudado com sucesso" + +#: ../admin/mem_cm.php:47 +msgid "" +"Enter the key you got when you requested the mailbox change, then click the " +"OK button." +msgstr "" + +#: ../admin/mem_cm.php:48 +msgid "Key" +msgstr "" + +#: ../admin/mem_cm.php:49 +msgid "OK" +msgstr "" + +#: ../admin/mem_logout.php:38 ../admin/mem_logout.php:43 +msgid "Disconnected" +msgstr "" + +#: ../admin/mem_logout.php:45 +msgid "You have been logged out of your administration desktop." +msgstr "" + +#: ../admin/mem_logout.php:46 +#, fuzzy +msgid "Click here to log in" +msgstr "Clicar aqui para continuar" + +#: ../admin/mem_param.php:36 +#, fuzzy +msgid "Your help setting has been updated." +msgstr "Suas preferências foram atualizadas." + +#: ../admin/mem_param.php:40 +#, fuzzy +msgid "Settings of your account" +msgstr "Suprimir uma conta FTP" + +#: ../admin/mem_param.php:50 ../admin/mem_passwd.php:41 +#: ../admin/sql_users_list.php:65 +#, fuzzy +msgid "Password change" +msgstr "Senha" + +#: ../admin/mem_param.php:54 +msgid "You cannot change your password" +msgstr "Você não pode mudar sua senha" + +#: ../admin/mem_param.php:59 +msgid "help_chg_passwd" +msgstr "" + +#: ../admin/mem_param.php:63 +#, fuzzy +msgid "Old password" +msgstr "Senha POP" + +#: ../admin/mem_param.php:66 +#, fuzzy +msgid "Change my password" +msgstr "Mudança da senha SQL" + +#: ../admin/mem_param.php:75 +msgid "help_chg_mail" +msgstr "" + +#: ../admin/mem_param.php:76 +#, fuzzy +msgid "Current mailbox" +msgstr "Criar uma caixa de email" + +#: ../admin/mem_param.php:77 +#, fuzzy +msgid "New mailbox" +msgstr "Caixas e email" + +#: ../admin/mem_param.php:78 +#, fuzzy +msgid "Change my email address" +msgstr "Mudar esta caixa de email" + +#: ../admin/mem_param.php:85 +#, fuzzy +msgid "Online help settings" +msgstr "Ajuda online" + +#: ../admin/mem_param.php:86 +msgid "help_help_settings" +msgstr "" + +#: ../admin/mem_param.php:87 +msgid "Do you want to see the help texts and links on each page?" +msgstr "" + +#: ../admin/mem_param.php:88 +#, fuzzy +msgid "Change these settings" +msgstr "Mudar meus ajustes" + +#: ../admin/mem_param.php:101 +#, fuzzy +msgid "Members list view" +msgstr "Lista dos membros" + +#: ../admin/mem_param.php:102 +msgid "Large view" +msgstr "" + +#: ../admin/mem_param.php:103 +msgid "Short view" +msgstr "" + +#: ../admin/mem_param.php:105 +#, fuzzy +msgid "Change my admin preferences" +msgstr "Preferências do editor de arquivos" + +#: ../admin/mem_passwd.php:35 ../admin/sql_pass.php:38 +msgid "Your password has been successfully changed." +msgstr "Sua senha foi mudado com sucesso." + +#: ../admin/menu_adm.php:38 +#, fuzzy +msgid "Administration" +msgstr "Administração do" + +#: ../admin/menu_adm.php:41 +#, fuzzy +msgid "Manage the Alternc accounts" +msgstr "Mudar o email da sua conta" + +#: ../admin/menu_adm.php:42 +#, fuzzy +msgid "User Quotas" +msgstr "Quotas" + +#: ../admin/menu_adm.php:45 +#, fuzzy +msgid "General PhpMyAdmin" +msgstr "Admin do SQL Geral" + +#: ../admin/menu_aide.php:32 +msgid "Online help" +msgstr "Ajuda online" + +#: ../admin/menu_dom.php:40 ../admin/quotas_oneuser.php:22 +#: ../admin/quotas_users.php:131 +msgid "Domains" +msgstr "Domínios" + +#: ../admin/menu_ftp.php:40 +msgid "FTP accounts" +msgstr "Contas FTP" + +#: ../admin/menu_lang.php:3 +msgid "Langues" +msgstr "" + +#: ../admin/menu_mail.php:40 +#, fuzzy +msgid "Email Addresses" +msgstr "Endereço email" + +#: ../admin/menu_mem.php:32 +msgid "Settings" +msgstr "" + +#: ../admin/menu_mem.php:35 +msgid "Logout" +msgstr "" + +#: ../admin/menu.php:36 +msgid "Home / Information" +msgstr "" + +#: ../admin/menu_quota.php:32 +msgid "Show my quotas" +msgstr "" + +#: ../admin/menu_sql.php:38 +#, fuzzy +msgid "Databases" +msgstr "Bases de dados" + +#: ../admin/menu_sql.php:39 ../admin/sql_users_list.php:37 +#, fuzzy +msgid "MySQL Users" +msgstr "Bases de dados MySQL" + +#: ../admin/menu_sql.php:40 +msgid "PhpMyAdmin" +msgstr "" + +#: ../admin/menu_sta2.php:37 +#, fuzzy +msgid "Raw web statistics" +msgstr "Número de statisticas Web" + +#: ../admin/menu_web.php:34 +msgid "Protected folders" +msgstr "Protected folders" + +#: ../admin/quota_show.php:34 +msgid "Account's quotas" +msgstr "" + +#: ../admin/quota_show.php:40 +msgid "No quotas for this account, or quotas currently unavailable!" +msgstr "" + +#: ../admin/quotas_oneuser.php:13 +msgid "Web Space:" +msgstr "" + +#: ../admin/quotas_oneuser.php:14 ../admin/quotas_oneuser.php:53 +#: ../admin/quotas_oneuser.php:90 ../admin/quotas_oneuser.php:130 +#: ../admin/quotas_users.php:286 ../admin/quotas_users.php:322 +#: ../admin/quotas_users.php:342 ../admin/quotas_users.php:355 +msgid "MB" +msgstr "" + +#: ../admin/quotas_oneuser.php:23 +#, fuzzy +msgid "Emails" +msgstr "Endereço email" + +#: ../admin/quotas_oneuser.php:24 ../admin/quotas_oneuser.php:71 +#: ../admin/quotas_oneuser.php:112 ../admin/quotas_users.php:127 +#: ../admin/quotas_users.php:168 +msgid "Space" +msgstr "" + +#: ../admin/quotas_oneuser.php:70 ../admin/quotas_users.php:176 +msgid "DB" +msgstr "" + +#: ../admin/quotas_oneuser.php:111 ../admin/quotas_users.php:172 +#: ../admin/quotas_users.php:175 +msgid "Lists" +msgstr "" + +#: ../admin/quotas_users.php:26 +msgid "" +"This page shows the space and service count of your AlternC server and each " +"AlternC accounts." +msgstr "" + +#: ../admin/quotas_users.php:27 +#, php-format +msgid "Sizes are shown as %s" +msgstr "" + +#: ../admin/quotas_users.php:27 +msgid "MB." +msgstr "" + +#: ../admin/quotas_users.php:27 +#, php-format +msgid "% of the total." +msgstr "" + +#: ../admin/quotas_users.php:30 +msgid "Server-side view:" +msgstr "" + +#: ../admin/quotas_users.php:30 +msgid "Global" +msgstr "" + +#: ../admin/quotas_users.php:31 +msgid "Detailed view:" +msgstr "" + +#: ../admin/quotas_users.php:33 ../admin/quotas_users.php:40 +msgid "Percentage" +msgstr "" + +#: ../admin/quotas_users.php:34 ../admin/quotas_users.php:37 +msgid "Graphical" +msgstr "" + +#: ../admin/quotas_users.php:36 ../admin/quotas_users.php:39 +msgid "In MB" +msgstr "" + +#: ../admin/quotas_users.php:45 +#, fuzzy +msgid "Show the domain names" +msgstr "Nome do Domínio" + +#: ../admin/quotas_users.php:47 +#, fuzzy +msgid "Hide the domain names" +msgstr "Nome do Domínio" + +#: ../admin/quotas_users.php:50 +#, fuzzy +msgid "All accounts" +msgstr "Contas FTP" + +#: ../admin/quotas_users.php:127 ../admin/quotas_users.php:168 +msgid "Count" +msgstr "" + +#: ../admin/quotas_users.php:136 +#, fuzzy +msgid "Email addresses" +msgstr "Endereço email" + +#: ../admin/quotas_users.php:142 +msgid "Mailman lists" +msgstr "" + +#: ../admin/quotas_users.php:148 ../admin/sql_bck.php:48 +#: ../admin/sql_del.php:63 ../admin/sql_dorestore.php:38 +#: ../admin/sql_getparam.php:38 ../admin/sql_list.php:36 +#: ../admin/sql_passchg.php:38 ../admin/sql_restore.php:43 +#, fuzzy +msgid "MySQL Databases" +msgstr "Bases de dados MySQL" + +#: ../admin/quotas_users.php:170 +#, fuzzy +msgid "Dom" +msgstr "Domínios" + +#: ../admin/quotas_users.php:171 ../admin/quotas_users.php:174 +#, fuzzy +msgid "Mails" +msgstr "Caixas e email" + +#: ../admin/quotas_users.php:173 +msgid "Web" +msgstr "" + +#: ../admin/sql_addmain.php:35 +msgid "Your database has been successfully created" +msgstr "Sua base de dados foi criado com sucesso" + +#: ../admin/sql_add.php:34 ../admin/sql_doadd.php:34 +#, fuzzy +msgid "err_mysql_1" +msgstr "Sua quota está completo, você não pode criar mais bases de dados." + +#: ../admin/sql_add.php:39 ../admin/sql_list.php:81 +#, fuzzy +msgid "Create a new MySQL database" +msgstr "Criar uma nova base de dados" + +#: ../admin/sql_add.php:51 +#, fuzzy +msgid "MySQL Database" +msgstr "Bases de dados MySQL" + +#: ../admin/sql_add.php:56 +#, fuzzy +msgid "Create this new MySQL database." +msgstr "Criar esta nova base de dados." + +#: ../admin/sql_admin.php:47 +#, fuzzy +msgid "SQL Admin" +msgstr "Admin SQL" + +#: ../admin/sql_bck.php:58 +#, php-format +msgid "Manage the SQL backup for database %s" +msgstr "Administrar o backup SQL para a base de dados %s" + +#: ../admin/sql_bck.php:63 +#, fuzzy +msgid "Do MySQL backup?" +msgstr "Fazer backup SQL?" + +#: ../admin/sql_bck.php:66 +msgid "No backup" +msgstr "Nenhum backup" + +#: ../admin/sql_bck.php:67 +msgid "Weekly backup" +msgstr "Backup semanal" + +#: ../admin/sql_bck.php:68 +msgid "Daily backup" +msgstr "Backup diário" + +#: ../admin/sql_bck.php:72 +#, fuzzy +msgid "How many backups should be kept?" +msgstr "Quantos backups devem ser mantidos?" + +#: ../admin/sql_bck.php:84 +msgid "Compress the backups? (gzip)" +msgstr "Você quiser compresser os backups? (gzip)" + +#: ../admin/sql_bck.php:93 +msgid "In which folder do you want to store the backups?" +msgstr "Que pasta você quiser usar para salvar seus backups?" + +#: ../admin/sql_bck.php:104 +#, fuzzy +msgid "Change the MySQL backup parameters" +msgstr "Mudar os parâmetros SQL atuais" + +#: ../admin/sql_bck.php:113 ../admin/sql_dorestore.php:56 +#: ../admin/sql_restore.php:71 +#, fuzzy +msgid "You currently have no database defined" +msgstr "Você não tem nenhuma base de dados definida" + +#: ../admin/sql_del.php:42 +#, fuzzy, php-format +msgid "The database %s has been successfully deleted" +msgstr "A base de dados %s foi suprimido com sucesso" + +#: ../admin/sql_del.php:57 +msgid "Please check which databases you want to delete" +msgstr "" + +#: ../admin/sql_del.php:66 +#, fuzzy +msgid "Confirm the deletion of the following SQL databases" +msgstr "Confirma o apagamento das bases de dados SQL seguintes" + +#: ../admin/sql_del.php:67 +#, fuzzy +msgid "This will delete all the tables currently in those db." +msgstr "Isto suprimirá todas as tabelas atuais nestas bases de dados." + +#: ../admin/sql_dobck.php:48 +msgid "Your backup parameters has been successfully changed." +msgstr "Seus parâmetros de backup foram mudados com sucesso" + +#: ../admin/sql_dorestore.php:44 +msgid "Restore a SQL backup" +msgstr "Restaurar o backup SQL" + +#: ../admin/sql_dorestore.php:50 +msgid "" +"Your database has been restored, check out the previous text for error " +"messages." +msgstr "" +"Sua base de dados foi restaurado, verificar o texto precedente para ver se " +"há mensagens de erro." + +#: ../admin/sql_getparam.php:47 +#, fuzzy +msgid "Your current settings are" +msgstr "Aqui seus parâmetros atuaís" + +#: ../admin/sql_getparam.php:58 +#, fuzzy +msgid "MySQL Server" +msgstr "Servidor SQL" + +#: ../admin/sql_getparam.php:62 +#, fuzzy +msgid "Main database" +msgstr "Criar minha base de dados principal" + +#: ../admin/sql_getparam.php:67 +#, fuzzy +msgid "Back to the MySQL database list" +msgstr "Lista de contas FTP" + +#: ../admin/sql_list.php:46 +#, fuzzy +msgid "help_sql_list_ok" +msgstr "" +"Você coloca para fora uma ou algumas bases de dados
            Clica sobre 'Admin " +"SQL'no menu para administrá-los
            Ou usa a tabela abaixo para administrar " +"os backups / restaurações,suprimir suas bases :" + +#: ../admin/sql_list.php:51 ../admin/sql_list.php:97 +#: ../admin/sql_passchg.php:54 +msgid "Database" +msgstr "Base de dados" + +#: ../admin/sql_list.php:51 ../admin/sql_list.php:63 +msgid "Backup" +msgstr "Backup" + +#: ../admin/sql_list.php:51 ../admin/sql_list.php:64 +#, fuzzy +msgid "Restore" +msgstr "Restauração" + +#: ../admin/sql_list.php:73 +#, fuzzy +msgid "Delete the checked databases" +msgstr "Suprimir as bases selecionadas" + +#: ../admin/sql_list.php:83 +#, fuzzy +msgid "Change the MySQL password" +msgstr "Mudança de senha SQL" + +#: ../admin/sql_list.php:84 +#, fuzzy +msgid "Get the current MySQL parameters" +msgstr "Mostrar os parâmetros SQL atuaís" + +#: ../admin/sql_list.php:89 +#, fuzzy +msgid "help_sql_list_no" +msgstr "" +"Você ainda não criou sua base de dados principal, por favor entra a senha " +"para criá-la.\n" + +#: ../admin/sql_list.php:96 ../admin/sql_passchg.php:53 +msgid "SQL Server" +msgstr "Servidor SQL" + +#: ../admin/sql_list.php:98 +msgid "Create my main database" +msgstr "Criar minha base de dados principal" + +#: ../admin/sql_passchg.php:46 +#, fuzzy +msgid "" +"Enter the new password of your MySQL database and click 'change the " +"password' to change it" +msgstr "" +"Entrar sua nova senha de base de dados SQL e clica sobre 'Mudança de senha' " +"para a mudar" + +#: ../admin/sql_restore.php:53 +#, fuzzy, php-format +msgid "Restore a MySQL backup for database %s" +msgstr "Restaurar o backup SQL para a base de dados %s" + +#: ../admin/sql_restore.php:56 +msgid "" +"Warning: Write the complete path and the filename.
            For example if your " +"backups are in the directory /Backups,
            write /Backups/file.sql.gz " +"(where file.sql.gz is the filename)." +msgstr "" + +#: ../admin/sql_restore.php:61 +#, fuzzy +msgid "" +"Please enter the path and the filename containing SQL data to be restored." +msgstr "" +"Por favor entrar o nome de arquivo que contem os dados do SQL que precisam " +"restaurar." + +#: ../admin/sql_restore.php:62 +#, fuzzy +msgid "Restore my database" +msgstr "Restaurar a base de dados" + +#: ../admin/sql_restore.php:66 +msgid "Note: If the filename ends with .gz, it will be uncompressed before." +msgstr "" +"Nota: Se o nome de arquivo termina com .gz, primeiramente ele será de-" +"compressado." + +#: ../admin/sql_users_add.php:41 +#, fuzzy +msgid "err_mysql_13" +msgstr "Sua quota está completo, você não pode criar mais bases de dados." + +#: ../admin/sql_users_add.php:46 ../admin/sql_users_list.php:86 +#, fuzzy +msgid "Create a new MySQL user" +msgstr "Criar um membro novo" + +#: ../admin/sql_users_add.php:77 +#, fuzzy +msgid "Create this new MySQL user" +msgstr "Criar um membro novo" + +#: ../admin/sql_users_del.php:41 +#, fuzzy, php-format +msgid "The user %s has been successfully deleted" +msgstr "A base de dados %s foi suprimido com sucesso" + +#: ../admin/sql_users_del.php:52 +#, fuzzy +msgid "MySQL users" +msgstr "Bases de dados MySQL" + +#: ../admin/sql_users_del.php:55 +#, fuzzy +msgid "Confirm the deletion of the following MySQL users" +msgstr "Confirma o apagamento das bases de dados SQL seguintes" + +#: ../admin/sql_users_dorights.php:44 +#, fuzzy +msgid "The rights has been successfully applied to the user" +msgstr "Os quotas foram editados com sucesso" + +#: ../admin/sql_users_list.php:47 +#, fuzzy +msgid "help_sql_users_list_ok" +msgstr "" +"Você coloca para fora uma ou algumas bases de dados
            Clica sobre 'Admin " +"SQL'no menu para administrá-los
            Ou usa a tabela abaixo para administrar " +"os backups / restaurações,suprimir suas bases :" + +#: ../admin/sql_users_list.php:52 +msgid "Rights" +msgstr "" + +#: ../admin/sql_users_list.php:64 +#, fuzzy +msgid "Manage the rights" +msgstr "Controlar os membros" + +#: ../admin/sql_users_password.php:64 +#, fuzzy +msgid "Change user password" +msgstr "Mudança da senha SQL" + +#: ../admin/sql_users_rights.php:41 +#, php-format +msgid "MySQL Rights for %s" +msgstr "" + +#: ../admin/sql_users_rights.php:51 +#, fuzzy +msgid "help_sql_users_rights_ok" +msgstr "" +"Você coloca para fora uma ou algumas bases de dados
            Clica sobre 'Admin " +"SQL'no menu para administrá-los
            Ou usa a tabela abaixo para administrar " +"os backups / restaurações,suprimir suas bases :" + +#: ../admin/sql_users_rights.php:82 +msgid "Reverse selection" +msgstr "" + +#: ../admin/sql_users_rights.php:95 +msgid "Apply" +msgstr "" + +#: ../admin/sta2_add_raw.php:33 +#, fuzzy +msgid "You cannot add any new statistics, your quota is over." +msgstr "Você não pode adiçionr mais domínios, sua quota acabou." + +#: ../admin/sta2_add_raw.php:38 +msgid "New Raw Statistics (apache)" +msgstr "" + +#: ../admin/sta2_add_raw.php:51 ../admin/sta2_edit_raw.php:57 +#, fuzzy +msgid "Domain name:" +msgstr "Nome do Domínio" + +#: ../admin/sta2_add_raw.php:54 ../admin/sta2_edit_raw.php:60 +msgid "Folder where we will put the log file:" +msgstr "" + +#: ../admin/sta2_add_raw.php:63 +#, fuzzy +msgid "Create those raw statistics" +msgstr "Número de statisticas Web" + +#: ../admin/sta2_del_raw.php:42 +#, php-format +msgid "" +"The statistics %s has been successfully deleted (the stats files must be " +"manually deleted)" +msgstr "" + +#: ../admin/sta2_doadd_raw.php:44 +#, fuzzy +msgid "The statistics has been successfully created" +msgstr "Os quotas foram editados com sucesso" + +#: ../admin/sta2_doedit_raw.php:33 ../admin/sta2_edit_raw.php:35 +#, fuzzy +msgid "No Statistics selected!" +msgstr "Nenhuma conta selecionada" + +#: ../admin/sta2_doedit_raw.php:41 +#, fuzzy +msgid "The Statistics has been successfully changed" +msgstr "A caixa de email %s foi mudado com sucesso" + +#: ../admin/sta2_edit_raw.php:44 +#, fuzzy +msgid "Change the Raw Statistics" +msgstr "Mudar os quotas padrões" + +#: ../admin/sta2_edit_raw.php:67 +#, fuzzy +msgid "Change those Raw Statistics." +msgstr "Mudar os quotas padrões" + +#: ../admin/sta2_list.php:35 +#, fuzzy +msgid "Raw Statistics List" +msgstr "Número de statisticas Web" + +#: ../admin/sta2_list.php:41 +msgid "Create new Raw Statistics (apache)" +msgstr "" + +#: ../admin/sta2_list.php:79 +#, fuzzy +msgid "Delete the checked Raw Statistics (apache)" +msgstr "Suprimir as bases selecionadas" + +#: ../admin/stats_members.php:32 +msgid "" +"Image_Graph not installed. use 'aptitude install php-pear' then 'pear " +"install --alldeps Image_Graph-devel' to see the graph." +msgstr "" + +#: ../admin/stats_members.php:41 +#, fuzzy +msgid "Account creation per month" +msgstr "Conta foi criado por %s" + +#: ../admin/stats_members.php:54 +msgid "before the month" +msgstr "" + +#: ../admin/stats_members.php:56 +msgid "during the month" +msgstr "" + +#: ../admin/trash_dateselect.php:50 +#, fuzzy +msgid "You want it to be deleted in" +msgstr "Algums TLD não pode ser suprimidos..." + +#: ../admin/trash_dateselect.php:57 +msgid "Hours" +msgstr "" + +#: ../admin/trash_dateselect.php:58 +msgid "Days" +msgstr "" + +#: ../admin/trash_dateselect.php:59 +msgid "Weeks" +msgstr "" + +#: ../admin/trash_dateselect.php:66 +msgid "" +"Delete this email the following day,
            enter the date using DD/MM/YYYY " +"format" +msgstr "" + +#: ../admin/trash_dateselect.php:79 +msgid "All this account information will be deleted at expiration" +msgstr "" + +#: ../class/functions.php:286 +msgid "Bytes" +msgstr "" + +#: ../class/functions.php:288 +msgid "Byte" +msgstr "" + +#: ../class/functions.php:293 +msgid "Kb" +msgstr "" + +#: ../class/functions.php:297 +msgid "Mb" +msgstr "" + +#: ../class/functions.php:301 +msgid "Gb" +msgstr "" + +#: ../class/functions.php:303 +msgid "Tb" +msgstr "" + +#: ../class/functions.php:390 +msgid "years" +msgstr "" + +#: ../class/functions.php:390 +msgid "year" +msgstr "" + +#: ../class/functions.php:392 +msgid "months" +msgstr "" + +#: ../class/functions.php:392 +msgid "month" +msgstr "" + +#: ../class/functions.php:415 +#, fuzzy +msgid "Not managed" +msgstr "Controlado localemente" + +# Portugese AlternC Translation +# Copyright (c) 2007 the AlternC Development Team +# +# $Id: admin.po,v 1.2 2003/06/09 14:36:08 root Exp $ +#: ../class/lang_env.php:61 +msgid "" +msgstr "" +"Project-Id-Version: $Id: admin.po,v 1.2 2003/06/09 14:36:08 root Exp $\n" +"POT-Creation-Date: 2002-06-12 19:00CEST\n" +"PO-Revision-Date: 2007-10-25 23:50-0400\n" +"Last-Translator: Benjamin Sonntag \n" +"Language-Team: English \n" +"Language: en\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-1\n" +"Content-Transfer-Encoding: 8bit\n" +"X-Generator: Emacs 21\n" + +#: ../class/m_err.php:66 ../class/m_err.php:94 ../class/m_err.php:96 +#, fuzzy +msgid "err_" +msgstr "A informação entrada é incorreta" + +#: ../class/mime.php:135 +msgid "CSS Stylesheet" +msgstr "" + +#: ../class/mime.php:136 +msgid "Comma Separated Values data" +msgstr "" + +#: ../class/mime.php:137 +msgid "DIA Diagram" +msgstr "" + +#: ../class/mime.php:138 +msgid "Word Document" +msgstr "" + +#: ../class/mime.php:139 +msgid "Word Document Template" +msgstr "" + +#: ../class/mime.php:140 +msgid "Encapsulated Postscript" +msgstr "" + +#: ../class/mime.php:141 +msgid "GIF Image" +msgstr "" + +#: ../class/mime.php:142 +msgid "Macintosh Executable" +msgstr "" + +#: ../class/mime.php:143 ../class/mime.php:144 +msgid "HTML Document" +msgstr "" + +#: ../class/mime.php:145 ../class/mime.php:146 +msgid "JPEG Image" +msgstr "" + +#: ../class/mime.php:147 +msgid "Music Playlist" +msgstr "" + +#: ../class/mime.php:148 +msgid "MP3 Music File" +msgstr "" + +#: ../class/mime.php:149 +msgid "Ogg Music File" +msgstr "" + +#: ../class/mime.php:150 +msgid "Acrobat PDF" +msgstr "" + +#: ../class/mime.php:151 +msgid "PHP Source" +msgstr "" + +#: ../class/mime.php:152 +msgid "PNG Image" +msgstr "" + +#: ../class/mime.php:153 ../class/mime.php:154 +msgid "Powerpoint Slideshow" +msgstr "" + +#: ../class/mime.php:155 +msgid "Postscript Document" +msgstr "" + +#: ../class/mime.php:156 +msgid "Photoshop Image" +msgstr "" + +#: ../class/mime.php:157 +msgid "Rar Compressed Files" +msgstr "" + +#: ../class/mime.php:158 +msgid "Rich Text Document" +msgstr "" + +#: ../class/mime.php:159 +msgid "OpenOffice Spreadsheet" +msgstr "" + +#: ../class/mime.php:160 +msgid "OpenOffice Drawing" +msgstr "" + +#: ../class/mime.php:161 +msgid "OpenOffice Presentation" +msgstr "" + +#: ../class/mime.php:162 +msgid "OpenOffice Writer" +msgstr "" + +#: ../class/mime.php:163 ../class/mime.php:164 +msgid "TIFF Image" +msgstr "" + +#: ../class/mime.php:165 +msgid "Text Document" +msgstr "" + +#: ../class/mime.php:166 ../class/mime.php:167 +msgid "Virtual Card" +msgstr "" + +#: ../class/mime.php:168 +msgid "Gimp Image" +msgstr "" + +#: ../class/mime.php:169 +msgid "Excel Spreadsheet" +msgstr "" + +#: ../class/mime.php:170 +msgid "Zip Compressed Files" +msgstr "" + +#: ../class/mime.php:171 +msgid "Flash Animation" +msgstr "" + +#: ../class/mime.php:172 ../class/mime.php:173 ../class/mime.php:174 +msgid "Real Media File" +msgstr "" + +#: ../class/m_mem.php:497 +msgid "Help" +msgstr "Ajuda" + +#~ msgid "New member" +#~ msgstr "Membro novo" + +#~ msgid "Create a new member" +#~ msgstr "Criar um membro novo" + +#, fuzzy +#~ msgid "Member" +#~ msgstr "Lista dos membros" + +#~ msgid "Account Enabled ?" +#~ msgstr "Conta Permitiu ?" + +#, fuzzy +#~ msgid "Back to the account list" +#~ msgstr "Lista de contas FTP" + +#~ msgid "Member list" +#~ msgstr "Lista dos membros" + +#~ msgid "Here is the list of hosted members" +#~ msgstr "Aqui está a lista de membros hospedados" + +#, fuzzy +#~ msgid "List all the accounts" +#~ msgstr "Editar esta conta" + +#~ msgid "Locked Account" +#~ msgstr "Conta Troncada" + +#~ msgid "AlternC Desktop" +#~ msgstr "Desktop AlternC" + +#, fuzzy +#~ msgid "mode" +#~ msgstr "Pasta" + +#~ msgid "all/none" +#~ msgstr "tudo/nada" + +#~ msgid "Import this file" +#~ msgstr "Importar este arquivo" + +#~ msgid "Send" +#~ msgstr "Mandar" + +#~ msgid "There is an ftp account in this folder" +#~ msgstr "Há uma conta ftp nesta pasta" + +#, fuzzy +#~ msgid "Click here to edit this ftp account." +#~ msgstr "clica aqui para editar esta conta ftp" + +#, fuzzy +#~ msgid "Click here to create an ftp account in this folder." +#~ msgstr "clica aqui para criar uma conta ftp nesta pasta" + +#~ msgid "This folder has restricted access" +#~ msgstr "Esta pasta tem o acesso limitado" + +#~ msgid "Click here to protect this folder with login/password" +#~ msgstr "Clica aqui para proteger esta pasta com login/senha" + +#~ msgid "Download" +#~ msgstr "Abaixar" + +#~ msgid "this folder and its subfolders as a compressed file" +#~ msgstr "esta pasta e as secondárias-pastas como um arquivo comprimido" + +#~ msgid "Configure the file browser" +#~ msgstr "Configurar o navegador de arquivo" + +#~ msgid "File editor preferences" +#~ msgstr "Preferências do editor de arquivos" + +#~ msgid "Back to the file browser" +#~ msgstr "Volta ao navegador de arquivos" + +#~ msgid "" +#~ "The domain %s has been changed. The modifications will take effect in 5 " +#~ "minutes." +#~ msgstr "" +#~ "O domínio %s foi modificado. As modificações estarão atualizadas em 5 " +#~ "minutos." + +#~ msgid "Subdomains" +#~ msgstr "Secundário-domínios" + +#~ msgid "Add a subdomain" +#~ msgstr "Adiçionar um secundário-domínio" + +#~ msgid "Locally managed" +#~ msgstr "Controlado localemente" + +#~ msgid "URL redirection" +#~ msgstr "Redireção URL" + +#~ msgid "IP redirection" +#~ msgstr "Redireção IP" + +#~ msgid "Webmail access" +#~ msgstr "Acesso Webmail" + +#~ msgid "DNS parameters" +#~ msgstr "Parâmetros DNS" + +#~ msgid "help_dns_mx %s %s" +#~ msgstr "" +#~ "Se nós controlamos seu DNS
            Você pode controlar seu correios em " +#~ "outra parte se você quiser (campo MX).
            Escreve %s neste campo se seus correios devem ser controlados por %s
            ou " +#~ "coloca o endereço IP ou nome do servidor de email usado para controlar " +#~ "seus correios.Aviso: Se você não coloca nada neste campo, seus " +#~ "correios serão inacessívels" + +#~ msgid "MX Field" +#~ msgstr "Campo MX" + +#~ msgid "help_dns_mail" +#~ msgstr "" +#~ "Se nós não controlamos o DNS deste domínio
            controlamos seus " +#~ "correios?" + +#~ msgid "Delete %s" +#~ msgstr "Deleter %s" + +#~ msgid "The modifications will take effect in 5 minutes." +#~ msgstr "As modificações estaram actualizadas em 5 minutos." + +#~ msgid "The folder must exists." +#~ msgstr "The folder must exists." + +#~ msgid "Add a username" +#~ msgstr "Add a username" + +#~ msgid "Administration of" +#~ msgstr "Administração do" + +#, fuzzy +#~ msgid "Enter your username and password to connect to the virtual desktop" +#~ msgstr "" +#~ "Entrar seu nome do usúario e sua senha para conectar à interface desktop " +#~ "virtual" + +#, fuzzy +#~ msgid "You can use a different language: " +#~ msgstr "" +#~ "Se você quiser usar uma lingua diferente, clicar sobre a bandeira abaixo" + +#~ msgid "Is it a POP account?" +#~ msgstr "É uma conta POP?" + +#~ msgid "POP password" +#~ msgstr "Senha POP" + +#~ msgid "Other recipients" +#~ msgstr "Outros receptores" + +#~ msgid "One email per line" +#~ msgstr "Um email por linha" + +#~ msgid "Create this mailbox" +#~ msgstr "Criar uma caixa de email" + +#~ msgid "Delete the selected mailboxes" +#~ msgstr "Suprimir as caixas de email selecionados" + +#~ msgid "The mailbox %s has been successfully created" +#~ msgstr "A caixa de email %s foi criado com sucesso" + +#, fuzzy +#~ msgid "Back to the mail account list" +#~ msgstr "Volta ao navegador de arquivos" + +#~ msgid "The mailbox %s has been successfully changed" +#~ msgstr "A caixa de email %s foi mudado com sucesso" + +#~ msgid "Edit a mailbox of the domain %s" +#~ msgstr "Editar a caixa de email do domínio %s" + +#~ msgid "Edit the mailbox %s" +#~ msgstr "Editar a caixa e email %s" + +#~ msgid "Change this mailbox" +#~ msgstr "Mudar esta caixa de email" + +#~ msgid "Mailbox list of the domain %s" +#~ msgstr "Lista de caixas de email do domínio %s" + +#, fuzzy +#~ msgid "Change my mail" +#~ msgstr "Mudar esta caixa de email" + +#~ msgid "Manage the members" +#~ msgstr "Controlar os membros" + +#~ msgid "General SQL Admin" +#~ msgstr "Admin do SQL Geral" + +#~ msgid "Mailboxes" +#~ msgstr "Caixas e email" + +#, fuzzy +#~ msgid "Front page" +#~ msgstr "Nome" + +#, fuzzy +#~ msgid "Create a new database" +#~ msgstr "Criar uma nova base de dados" + +#, fuzzy +#~ msgid "Create this new database." +#~ msgstr "Criar esta nova base de dados." + +#, fuzzy +#~ msgid "Do sql backup?" +#~ msgstr "Fazer backup SQL?" + +#, fuzzy +#~ msgid "How many backup should be kept?" +#~ msgstr "Quantos backups devem ser mantidos?" + +#, fuzzy +#~ msgid "Change the SQL backup parameters" +#~ msgstr "Mudar os parâmetros SQL atuais" + +#, fuzzy +#~ msgid "Change the SQL password" +#~ msgstr "Mudança de senha SQL" + +#, fuzzy +#~ msgid "Get the current SQL parameters" +#~ msgstr "Mostrar os parâmetros SQL atuaís" + +#, fuzzy +#~ msgid "" +#~ "Enter the new password of your SQL database and click 'change the " +#~ "password' to change it" +#~ msgstr "" +#~ "Entrar sua nova senha de base de dados SQL e clica sobre 'Mudança de " +#~ "senha' para a mudar" + +#~ msgid "Restore a SQL backup for database %s" +#~ msgstr "Restaurar o backup SQL para a base de dados %s" + +#~ msgid "Please enter the filename containing SQL data to be restored." +#~ msgstr "" +#~ "Por favor entrar o nome de arquivo que contem os dados do SQL que " +#~ "precisam restaurar." + +#, fuzzy +#~ msgid "err_mysql_20" +#~ msgstr "Sua senha é demasiado longa (16 caráteres max)" + +#, fuzzy +#~ msgid "Create this new user" +#~ msgstr "Criar esta nova base de dados." + +#~ msgid "This TLD is forbidden" +#~ msgstr "Este TLD é proibido" + +#~ msgid "primary DNS is checked in WHOIS db" +#~ msgstr "O DNS preliminar está selecionado em db WHOIS" + +#~ msgid "primary & secondary DNS are checked in WHOIS db" +#~ msgstr "O DNS preliminar e secundário estam selecionados em db WHOIS" + +#~ msgid "Domain must exist, but don't do any DNS check" +#~ msgstr "O domínio deve existir, mais não faz a verificação DNS" + +#~ msgid "Domain can be installed, no check at all" +#~ msgstr "O domínio pode ser instalado, mas não faz nenhuma verificação" + +#, fuzzy +#~ msgid "Domain can be installed, force NO DNS hosting)" +#~ msgstr "O domínio pode ser instalado, forçã a hospedadem SEM DNS" + +#, fuzzy +#~ msgid "WARNING : Confirm the deletion of this files" +#~ msgstr "AVISO : Confirmar o apagamento do secundário-domínio" + +#, fuzzy +#~ msgid "Please choose the filename containing SQL data to be restored." +#~ msgstr "" +#~ "Por favor entrar o nome de arquivo que contem os dados do SQL que " +#~ "precisam restaurar." + +#, fuzzy +#~ msgid "New Name:" +#~ msgstr "Membro novo" + +#, fuzzy +#~ msgid "Move to" +#~ msgstr "Relocalizar" + +#, fuzzy +#~ msgid "" +#~ "The subdomain has been deleted. Changes will take place in 5 minutes." +#~ msgstr "" +#~ "O domínio %s foi modificado. As modificações estarão atualizadas em 5 " +#~ "minutos." + +#, fuzzy +#~ msgid "Copy to" +#~ msgstr "Copiar" + +#, fuzzy +#~ msgid "Users" +#~ msgstr "Usado(s)" + +#, fuzzy +#~ msgid "Web statistics" +#~ msgstr "Número de statisticas Web" + +#, fuzzy +#~ msgid "Sub-domain" +#~ msgstr "Secundário-domínios" + +#, fuzzy +#~ msgid "Validate this change" +#~ msgstr "Submeter as mudanças" + +#, fuzzy +#~ msgid "Actions" +#~ msgstr "Ação" + +#, fuzzy +#~ msgid "Manage this temporary account" +#~ msgstr "Mudar esta conta FTP" + +#, fuzzy +#~ msgid "Create alias" +#~ msgstr "Criar" + +#, fuzzy +#~ msgid "Manage the Emails of this domain on the server ?" +#~ msgstr "Administrar o DNS neste servidor ?" + +#, fuzzy +#~ msgid "Edition du sous-domaine" +#~ msgstr "Editando o secundário-domínio %s" + +#, fuzzy +#~ msgid "Sous-domaine" +#~ msgstr "Secundário-domínios" + +#~ msgid "Destroy my database" +#~ msgstr "Destruir minha base de dados" + +#~ msgid "Manage the SQL backup" +#~ msgstr "Administrar os backups SQL" + +#~ msgid "Delete my SQL database" +#~ msgstr "Suprimir minha base de dados SQL" + +#~ msgid "hlp_sql_bck" +#~ msgstr "" +#~ "Seu backup MySQL está salvado na pasta de db.sql.1 a " +#~ "db.sql.19
            seu nome da base de dados substitui 'db'.
            AVISO: Se você muda os ajustes backup (backups, compressão...) os " +#~ "backups antigos podem ficar na pasta backup.Usar a administração de " +#~ "arquivos para suprimi-los." + +#~ msgid "err_mysql_11" +#~ msgstr "" +#~ "Você não tem nenhuma base de dados, clica sobre 'Base de Dados' para " +#~ "criar a primeira" + +#~ msgid "err_mysql_10" +#~ msgstr "" +#~ "Você não pode criar sua base de dados principal : você ainda tem outras " +#~ "base de dados !" + +#~ msgid "err_mysql_9" +#~ msgstr "O arquivo é incorreto ou não existe." + +#~ msgid "err_mysql_8" +#~ msgstr "A senha é demasiado longa (16 caráteres max)" + +#~ msgid "err_mysql_7" +#~ msgstr "O nome de arquivo você escolheu não existe ou é incorreto." + +#~ msgid "err_mysql_6" +#~ msgstr "A pasta é incorreta!" + +#~ msgid "err_mysql_5" +#~ msgstr "seu número backup está incorreto." + +#~ msgid "err_mysql_4" +#~ msgstr "Esta base de dados jà existe!" + +#~ msgid "err_mysql_3" +#~ msgstr "" +#~ "Sua base de dados não existe, você pode começará um acesso criando o." + +#~ msgid "quota_mysql" +#~ msgstr "MySQL Base de Dados" + +#~ msgid "err_mem_8" +#~ msgstr "A senha deve ter pelo menos 3 caráteres" + +#~ msgid "err_mem_7" +#~ msgstr "As novas senhas são diferentes, por favor tentar de novo" + +# PROBLEME : il y avait 2 fois le 5, les autres messages doivent surement etre décalés (TODO) +#~ msgid "err_mem_6" +#~ msgstr "A senha antiga é incorreta" + +#~ msgid "err_mem_5" +#~ msgstr "Endereço IP incorreto, por favor contatar o administrador" + +#~ msgid "err_mem_4" +#~ msgstr "Sessão desconhecido, por favor contatar o administrador" + +#~ msgid "err_mem_3" +#~ msgstr "Cookie incorreto, por favor aceitar o cookie da sessão" + +#~ msgid "err_mem_2" +#~ msgstr "Esta conta está troncada, por favor chamar o administrador" + +#~ msgid "err_mem_1" +#~ msgstr "Usúario ou senha incorreto" + +#~ msgid "the %3$d-%2$d-%1$d at %4$d:%5$d" +#~ msgstr "%3$d/%1$d/%2$d, à %6$d:%5$d %7$s" + +#~ msgid "err_mail_15" +#~ msgstr "Este email não é uma conta pop. É impossível mudar a senha !" + +#~ msgid "err_mail_14" +#~ msgstr "Um ou mais redireções de email são invalidos" + +#~ msgid "err_mail_13" +#~ msgstr "Por favor entrar um email valido" + +#~ msgid "err_mail_12" +#~ msgstr "Por favor entrar uma senha pop" + +#~ msgid "err_mail_11" +#~ msgstr "Por favor entrar um endereço Email" + +#~ msgid "err_mail_10" +#~ msgstr "-- Erro de Programa -- Quota de Correios não existe" + +#~ msgid "err_mail_9" +#~ msgstr "O domínio '%s' não existe." + +#~ msgid "err_mail_8" +#~ msgstr "Sua quota email acabou. Você não pode criar mais contas de email." + +#~ msgid "err_mail_7" +#~ msgstr "O email '%s' jà existe." + +#~ msgid "err_mail_6" +#~ msgstr "O domínio '%s' não existe." + +#~ msgid "err_mail_5" +#~ msgstr "-- Erro de Servidor --- Parâmetro é incorreto (%s)" + +#~ msgid "err_mail_4" +#~ msgstr "" +#~ "Por favor escolha 'conta pop' e escholha a senha pop, ou entra algumas " +#~ "redireções, ou os dois" + +#~ msgid "err_mail_3" +#~ msgstr "Este email '%s' não existe" + +#~ msgid "err_mail_2" +#~ msgstr "Nenhum email no domínio '%s'" + +#~ msgid "err_mail_1" +#~ msgstr "conexão ldap impossível, por favor tenta mais tarde." + +#~ msgid "quota_mail" +#~ msgstr "Contas de Email" + +#~ msgid "Delete a protected folder" +#~ msgstr "Delete a protected folder" + +#~ msgid "err_hta_11" +#~ msgstr "Please enter a valid username" + +#~ msgid "err_hta_10" +#~ msgstr "The user '%s' already exist for this folder" + +#~ msgid "err_hta_9" +#~ msgstr "The file '%s' is not correct" + +#~ msgid "err_hta_8" +#~ msgstr "The folder '%s' does not exist" + +#~ msgid "err_hta_7" +#~ msgstr "The file .htaccess does not exist" + +#~ msgid "err_hta_6" +#~ msgstr "I cannot delete the file '%s'/.htpasswd" + +#~ msgid "err_hta_5" +#~ msgstr "I cannot delete the file '%s'/.htaccess" + +#~ msgid "err_hta_4" +#~ msgstr "No protected folder" + +#~ msgid "err_hta_3" +#~ msgstr "" +#~ ".htaccess parsed and syntaxically correct, a .htpasswd already exist." + +#~ msgid "err_hta_2" +#~ msgstr "" +#~ ".htaccess parsed and syntaxically correct, a .htpassword file has been " +#~ "created." + +#~ msgid "err_hta_1" +#~ msgstr "An incompatible .htaccess file exists in this folder." + +#~ msgid "<-No Password->" +#~ msgstr "<-Sem Senha->" + +#~ msgid "hlp_ftp_add" +#~ msgstr "Você não pode adiçionar uma nova conta ftp. Sua conta está cheia." + +#~ msgid "hlp_ftp_list_no" +#~ msgstr "" +#~ "Você não tem nenhuma conta FTP disponível. Clica sobre 'Criar uma conta " +#~ "ftp' para criar uma.
            Para poder acessar seus arquivos com um " +#~ "programa ftp, você deve criar pelo menos uma conta. Cada conta é " +#~ "associado com uma pasta, e não pode acessar nada fora os arquivos e " +#~ "pastas nesta pasta'
            Mais informação sobre o FTP em Ajuda Online " +#~ "HELPID_100
            " + +#~ msgid "hlp_ftp_list" +#~ msgstr "" +#~ "Aqui está a lista de contas ftp com acesso à sua conta.Clica sobre " +#~ "'Modifiçar' para mudar o nome do usúario, a senha ou o diretório de " +#~ "raizPara suprimir uma conta, seliciona a conta correspondante e clica " +#~ "sobre a tecla 'Suprimir as contas selecionadas'
            Para poder acessar " +#~ "seus arquivos com um programa ftp, você deve criar pelo menos uma conta. " +#~ "Cada conta é associado com uma pasta, e não pode acessar nada fora os " +#~ "arquivos e pastas nesta pasta'
            Mais informação sobre o FTP em Ajuda " +#~ "Online HELPID_100
            " + +#~ msgid "err_ftp_6" +#~ msgstr "Esta pasta não pode ser criada." + +#~ msgid "err_ftp_5" +#~ msgstr "" +#~ "Sua quota para a conta FTP está cheio. Você não pode criar mais contas " +#~ "FTPs." + +#~ msgid "err_ftp_4" +#~ msgstr "Esta conta FTP jà existe" + +#~ msgid "err_ftp_3" +#~ msgstr "O prefixo escolhido não é permitido" + +#~ msgid "err_ftp_2" +#~ msgstr "Esta conta FTP não existe" + +#~ msgid "err_ftp_1" +#~ msgstr "Nenhuma conta FTP achada" + +#~ msgid "quota_ftp" +#~ msgstr "Contas FTP" + +#~ msgid "err_err_1" +#~ msgstr "Esta mesagem do erro não existe (%s)" + +#~ msgid "err_err_0" +#~ msgstr "OK" + +#~ msgid "hlp_edit_domain" +#~ msgstr "" +#~ "Esta zona permite as modificações de parâmetros de seu domínio e dos " +#~ "secundários-domínios instalados
            Você pode criar um novo secundário-" +#~ "domínio e escholer de re-dirigir a seu espaço de disco, a um outro " +#~ "endereço Internet, o a um endereço IP (utilização advancado)
            Mais " +#~ "informação sobre a administração dos domínios na seção de ajuda online " +#~ "HELPID_200
            " + +#~ msgid "hlp_del_domain" +#~ msgstr "" +#~ "O domínio foi suprimido, mais os arquivos do seu web-site não foram " +#~ "destruídos.
            Se você quiser destruir os arquivos du web-site, usa a " +#~ "Administração de Arquivo
            Mais informação sobre a administração dos " +#~ "domínios na seção de ajuda online HELPID_200
            " + +#~ msgid "hlp_add_domain_2" +#~ msgstr "" +#~ "Clica sobre o link abaixo. Você pode acessar os parâmetros do domínio no " +#~ "menu à esquerda2 links aparecerão :
            - o primeiro para modificar os " +#~ "parâmetros de hospedagem do domínio (secondario-domínios, redireções, " +#~ "hospedagem do email ...)
            - o segundo para administrar as contas de " +#~ "email do domínio (se você quiser criar as caixas de email).
            Mais " +#~ "informação sobre a administração dos domínios na seção de ajuda online " +#~ "HELPID_200
            " + +#~ msgid "hlp_add_domain" +#~ msgstr "" +#~ " - Entrar o nome do domínio que você gostaria hospedar. O nome do domínio " +#~ "deve ser completo, mais sem o www.
            IMPORTANTE: Se você " +#~ "gostaria uma hospedagem actual do domínio, o DNS do seu domínio deve " +#~ "apontar para nossos servidors DNS. Contatar sua companhia de hospedagem " +#~ "para mais informação.
            Exemplos : globonet.org / demo.com / test.eu." +#~ "org etc.
            Mais informação sobre a administração dos domínios na seção " +#~ "da ajuda online HELPID_200
            " + +#~ msgid "" +#~ "err_dom_23DNS (and eventually wait 1 day) before you install it again." +#~ msgstr "" +#~ "O DNS deste domínio não combina o DNS do servidor. Por favor mudar o DNS " +#~ "do seu domínio (e esperar 1 dia) antes de instalar-lo de novo." + +#~ msgid "err_dom_22" +#~ msgstr "" +#~ "O domínio pedido é proibido neste servidor. Por favor contatar o " +#~ "administrador" + +#~ msgid "err_dom_21" +#~ msgstr "A pasta que você entrou é incorreta ou não existe." + +#~ msgid "err_dom_20" +#~ msgstr "O URL que você entrou é incorreto." + +#~ msgid "err_dom_19" +#~ msgstr "O endereço IP que você entrou é incorreto." + +#~ msgid "err_dom_18" +#~ msgstr "" +#~ "Este domínio é o do servidor !!! Você não pode hospedá-lo em sua conta !" + +#~ msgid "err_dom_17" +#~ msgstr "--- Erro de Programa --- Fechamento obtido já !" + +#~ msgid "err_dom_16" +#~ msgstr "O secundário-domínio jà existe." + +#~ msgid "err_dom_15" +#~ msgstr "Nenhuma mudança foi pedida..." + +#~ msgid "err_dom_14" +#~ msgstr "O secundário-domínio não existe." + +#~ msgid "err_dom_13" +#~ msgstr "" +#~ "O domínio mudou menos de 5 minutos há. Por favor tenta de novo em algums " +#~ "minutos." + +#~ msgid "err_dom_12" +#~ msgstr "O domínio não foi achado na base de dados Whois." + +#~ msgid "err_dom_11" +#~ msgstr "" +#~ "A base de dados Whois está inacessível, por favor tenta de novo mais " +#~ "tarde." + +#~ msgid "err_dom_10" +#~ msgstr "Sua quota do domínio jà acabou, você não pode criar mais domínios." + +#~ msgid "err_dom_9" +#~ msgstr "O domínio foi suprimido menos de 5 minutos há." + +#~ msgid "err_dom_8" +#~ msgstr "O domínio jà existe." + +#~ msgid "err_dom_7" +#~ msgstr "" +#~ "O ultímo membro do domínio é incorreto ou não pode ser hospidado neste " +#~ "servidor." + +#~ msgid "err_dom_6" +#~ msgstr "" +#~ "Há algums caráteres proibidos no nome domínio (somente A-Z 0-9 e - são " +#~ "permitidos)." + +#~ msgid "err_dom_5" +#~ msgstr "Um dos membros do domínio é demasiado longo." + +#~ msgid "err_dom_4" +#~ msgstr "O nome do domínio é demasiado longo" + +#~ msgid "err_dom_3" +#~ msgstr "--- Erro de program --- Falta o fechamento nos domínios !" + +#~ msgid "err_dom_2" +#~ msgstr "O Domínio '%s' não é o seu" + +#~ msgid "err_dom_1" +#~ msgstr "O Domínio '%s' não foi achado" + +#~ msgid "quota_dom" +#~ msgstr "Nome dos Domínios" + +#~ msgid "err_bro_2" +#~ msgstr "Você não pode relocalizar ou copiar o arquivo a mesma pasta" + +#~ msgid "err_bro_1" +#~ msgstr "Nome do arquivo ou a pasta é incorreto" + +#~ msgid "Edit the newly created file" +#~ msgstr "Editar o arquivo recentemente criada" + +#~ msgid "Go back to the file manager" +#~ msgstr "Volta ao navegador de arquivos" + +#~ msgid "3 columns, short" +#~ msgstr "3 colunas, condensado" + +#~ msgid "2 columns, short" +#~ msgstr "2 colunas, condensado" + +#~ msgid "1 column, detailed" +#~ msgstr "1 coluna, detalhado" + +#~ msgid "%3$d-%2$d-%1$d %4$d:%5$d" +#~ msgstr "%3$d/%1$d/%2$d %6$d:%5$d %7$s" + +#~ msgid "Number of FTP accounts" +#~ msgstr "Número de contas FTP" + +#~ msgid "Number of domains" +#~ msgstr "Número de domínios" + +#~ msgid "Number of mailing-lists" +#~ msgstr "Número de envi-listas" + +#~ msgid "Number of email accounts" +#~ msgstr "Número de contas do email" + +#~ msgid "Disk space (in KB)" +#~ msgstr "Espaco Disco (em KB)" + +#~ msgid "The user has a MySQL database" +#~ msgstr "O usuário tem uma base de dados MySQL" + +#~ msgid "Enable the database" +#~ msgstr "Permitir a base de dados" + +#~ msgid "The user has no database" +#~ msgstr "O usuário não tem nenhuma base de dados" + +#~ msgid "Recalculate the quotas of the account" +#~ msgstr "Recalcular os quotas da conta" + +#~ msgid "err_admin_12" +#~ msgstr "Este TLD jà existe" + +#~ msgid "err_admin_11" +#~ msgstr "Este TLD não existe" + +#~ msgid "err_admin_10" +#~ msgstr "Somente os carateres a-z, 0-9 e - são permitidos no Login" + +#~ msgid "err_admin_9" +#~ msgstr "Esta conta NÃO é uma conta administrativa" + +#~ msgid "err_admin_8" +#~ msgstr "Esta conta JÀ é uma conta administrativa" + +#~ msgid "err_admin_7" +#~ msgstr "Você pode me peder uma senha somente uma vez por dia !" + +#~ msgid "err_admin_6" +#~ msgstr "Todos os campos são obrigatórios" + +#~ msgid "err_admin_5" +#~ msgstr "Por favor entrar um endreço email válido" + +#~ msgid "err_admin_4" +#~ msgstr "-- Não posso criar esta conta --" + +#~ msgid "err_admin_3" +#~ msgstr "Este login jà existe" + +#~ msgid "err_admin_2" +#~ msgstr "Conta não foi achado" + +#~ msgid "err_admin_1" +#~ msgstr "-- Somente os administradores tem acceso à essas paginas !! --" diff --git a/stable-1.0/debian/.svnignore b/stable-1.0/debian/.svnignore new file mode 100644 index 00000000..32b97042 --- /dev/null +++ b/stable-1.0/debian/.svnignore @@ -0,0 +1,10 @@ +alternc +alternc-slave.substvars +files +alternc-slave.debhelper.log +alternc-slave.postrm.debhelper +alternc.substvars +.svnignore +alternc-slave +alternc.debhelper.log +alternc.postrm.debhelper diff --git a/stable-1.0/debian/NEWS b/stable-1.0/debian/NEWS new file mode 100644 index 00000000..36c1ee4e --- /dev/null +++ b/stable-1.0/debian/NEWS @@ -0,0 +1,43 @@ +alternc (0.9.10) stable; urgency=low + + * I have moved back the PHP sessions in the /var/alternc directory to + facilitate sharing sessions between NFS-mounted nodes. This overrides + the default /var/lib/php5 and adds a cronjob that replicates the + manual session garbage collection the PHP package is doing. + + Note that existing sessions are not migrated. + + -- Antoine Beaupré Fri, 31 Oct 2008 13:40:18 -0400 + +alternc (0.9.9) stable; urgency=low + + Starting with 0.9.9, we do not overwrite Postfix's main.cf directly + (#1029). However, some settings are directly overwritten, using + postconf -e (as per Debian Policy). Those settings are configured in + /etc/alternc/postfix.cf and are therefore managed as a configuration + file which means that your configuration changes will be preserved. + + Also, this is the last release that will overwrite the main Bind + configuration file (named.conf). All changes will be performed in + named.conf.options in the future. This release still installs a new + named.conf that will make sure that this transition functions + properly. See #1025 and #1104. + + We also got rid of the bind_internal parameter. This configuration is + not recommended as it allows recursive queries on an authoritative + nameserver. The 'internal' ACL can still be changed in a template if + required. Similarly, we now let the mynetworks configuration in + Postfix up to the administrator and do not prompt for it directly + through AlternC. + + We now support Apache2 out of the box, but it's not the default + platform deployed. To install AlternC with Apache2, you will need a + commandline like this: + + apt-get install apache2 libapache2-mod-php5 alternc + + Note, however, that this doesn't take care of removing the existing + apache1 installation. This is a more complex operation that must be + performed with a complete package manager like aptitude or synaptic. + + -- Antoine Beaupré Tue, 15 Apr 2008 11:52:56 -0400 diff --git a/stable-1.0/debian/README.Debian b/stable-1.0/debian/README.Debian new file mode 100644 index 00000000..a57ae913 --- /dev/null +++ b/stable-1.0/debian/README.Debian @@ -0,0 +1,9 @@ +alternc for Debian +------------------ + +This package is BETA version, and could be use for production purpose, but without any +warranty, as stated in the GPL + + -- Benjamin Sonntag , Tue, 09 Sep 2002 19:31:26 +0200 + + diff --git a/stable-1.0/debian/alternc-slave.config b/stable-1.0/debian/alternc-slave.config new file mode 100644 index 00000000..c230d90b --- /dev/null +++ b/stable-1.0/debian/alternc-slave.config @@ -0,0 +1,169 @@ +#! /bin/sh + +set -e + +# Source debconf library. +. /usr/share/debconf/confmodule +db_title AlternC + +db_input critical alternc-slave/welcomeconfirm || true + +db_go +# Check the answer. +db_get alternc-slave/welcomeconfirm || true + +if [ "$RET" = "false" ]; then + # reset the welcomeconfirm flag if user refuses so it gets asked again next time + db_reset alternc-slave/welcomeconfirm || true + db_fset alternc-slave/welcomeconfirm "seen" "false" || true + exit 1 +fi + +# default values for local.sh +MYSQL_HOST=127.0.0.1 +MYSQL_DATABASE=alternc +MYSQL_USER=sysusr +MYSQL_PASS="`perl -e 'print map{("a".."z","A".."Z",0..9)[int(rand(62))]}(1..10)' `" +MYSQL_CLIENT=localhost +FQDN="`cat /etc/mailname 2>/dev/null || hostname -f`" +INTERNAL_IP="`env LANG=C /sbin/ifconfig|grep inet | grep -v 127.0.0.1| head -1 | cut -d: -f2 | sed -e 's/\([0-9\.]*\).*$/\1/' 2>/dev/null || hostname -f`" +PUBLIC_IP="$INTERNAL_IP" +DEFAULT_MX="`cat /etc/mailname 2>/dev/null || hostname -f`" +ALTERNC_LOC=/var/alternc +NS1_HOSTNAME="$FQDN" +NS2_HOSTNAME="$FQDN" +HOSTING="AlternC" +SQLBACKUP_TYPE="rotate" +SQLBACKUP_OVERWRITE="no" + +if [ -r /etc/alternc/local.sh ]; then + # source the current config + . /etc/alternc/local.sh +fi +if [ -r /etc/alternc/my.cnf ]; then + # make mysql configuration available as shell variables + # to convert from .cnf to shell syntax, we: + # * match only lines with "equal" in them (/=/) + # * remove whitespace around the = and add a left quote operator ' (;s) + # * add a right quote operator at the end of line (;s) + # * convert mysql variables into our MYSQL_ naming convention (;s) + # * print the result (;p) + eval `sed -n -e "/=/{s/ *= *\"\?/='/;s/\"\?\$/'/;s/host/MYSQL_HOST/;s/user/MYSQL_USER/;s/password/MYSQL_PASS/;s/database/MYSQL_DATABASE/;p}" /etc/alternc/my.cnf` +fi + +# mettre les valeurs de local.sh comme "default" pour debconf +db_get alternc-slave/hostingname +if [ -z "$RET" ] + then + db_set alternc-slave/hostingname "$HOSTING" +fi + +db_get alternc-slave/desktopname +if [ -z "$RET" ] + then +db_set alternc-slave/desktopname "$FQDN" +fi + +db_get alternc-slave/public_ip +if [ -z "$RET" ] + then +db_set alternc-slave/public_ip "$PUBLIC_IP" +fi + +db_get alternc-slave/internal_ip +if [ -z "$RET" ] + then +db_set alternc-slave/internal_ip "$INTERNAL_IP" +fi + +db_get alternc-slave/monitor_ip +if [ -z "$RET" ] + then +db_set alternc-slave/monitor_ip "$MONITOR_IP" +fi + +db_get alternc-slave/ns1 +if [ -z "$RET" ] + then +db_set alternc-slave/ns1 "$NS1_HOSTNAME" +fi + +db_get alternc-slave/ns2 +if [ -z "$RET" ] + then +db_set alternc-slave/ns2 "$NS2_HOSTNAME" +fi + +db_get alternc-slave/default_mx +if [ -z "$RET" ] + then +db_set alternc-slave/default_mx "$DEFAULT_MX" +fi + +db_get alternc-slave/mysql/host +if [ -z "$RET" ] + then +db_set alternc-slave/mysql/host "$MYSQL_HOST" +fi + +db_get alternc-slave/mysql/db +if [ -z "$RET" ] + then +db_set alternc-slave/mysql/db "$MYSQL_DATABASE" +fi + +db_get alternc-slave/mysql/user +if [ -z "$RET" ] + then +db_set alternc-slave/mysql/user "$MYSQL_USER" +fi + +db_get alternc-slave/mysql/password +if [ -z "$RET" ] + then +db_set alternc-slave/mysql/password "$MYSQL_PASS" +fi + +db_get alternc-slave/mysql/client +if [ -z "$RET" ] + then +db_set alternc-slave/mysql/client "$MYSQL_CLIENT" +fi + +db_get alternc-slave/sql/backup_type +if [ -z "$RET" ] + then +db_set alternc-slave/sql/backup_type "$SQLBACKUP_TYPE" +fi + +db_get alternc-slave/sql/backup_overwrite +if [ -z "$RET" ] + then +db_set alternc-slave/sql/backup_overwrite "$SQLBACKUP_OVERWRITE" +fi + +db_get alternc-slave/alternc_location +if [ -z "$RET" ] + then +db_set alternc-slave/alternc_location "$ALTERNC_LOC" +fi + +db_input medium alternc-slave/desktopname || true +db_input medium alternc-slave/hostingname || true +db_input medium alternc-slave/internal_ip || true +db_input medium alternc-slave/public_ip || true +db_input medium alternc-slave/default_mx || true +db_input medium alternc-slave/ns1 || true +db_input medium alternc-slave/ns2 || true +db_input low alternc-slave/alternc_location || true +db_input low alternc-slave/mysql/host || true +db_input low alternc-slave/mysql/db || true +db_input low alternc-slave/mysql/user || true +db_input low alternc-slave/mysql/password || true +db_input low alternc-slave/mysql/client || true +db_input low alternc-slave/sql/backup_type || true +db_input low alternc-slave/sql/overwrite || true +db_input low alternc-slave/monitor_ip || true +db_go + +# vim: et sw=4 diff --git a/stable-1.0/debian/alternc-slave.dirs b/stable-1.0/debian/alternc-slave.dirs new file mode 100644 index 00000000..f9b3d65c --- /dev/null +++ b/stable-1.0/debian/alternc-slave.dirs @@ -0,0 +1,17 @@ +etc/alternc +etc/alternc/templates +etc/bind +etc/bind/templates +etc/courier +etc/phpmyadmin +etc/postfix +etc/squirrelmail +usr/bin +usr/lib/alternc +usr/sbin +usr/share/alternc/install +usr/share/locale/fr/LC_MESSAGES +usr/share/lintian/overrides/ +var/backups/alternc +var/log/alternc +var/run/alternc diff --git a/stable-1.0/debian/alternc-slave.install b/stable-1.0/debian/alternc-slave.install new file mode 100644 index 00000000..a755079d --- /dev/null +++ b/stable-1.0/debian/alternc-slave.install @@ -0,0 +1,9 @@ +etc/* +usr/bin/* +usr/lib/alternc/* +usr/share/lintian/overrides/* +usr/share/alternc/install/* +usr/share/doc/alternc/* +usr/share/locale/fr/LC_MESSAGES/alternc-admintools.mo +usr/share/man/fr/man8/* +usr/share/man/man8/* diff --git a/stable-1.0/debian/alternc-slave.links b/stable-1.0/debian/alternc-slave.links new file mode 100644 index 00000000..74c69167 --- /dev/null +++ b/stable-1.0/debian/alternc-slave.links @@ -0,0 +1 @@ +/usr/share/alternc/install/alternc.install usr/sbin/alternc.install diff --git a/stable-1.0/debian/alternc-slave.lintian b/stable-1.0/debian/alternc-slave.lintian new file mode 100644 index 00000000..bc75e0d4 --- /dev/null +++ b/stable-1.0/debian/alternc-slave.lintian @@ -0,0 +1,28 @@ +alternc-slave: setuid-binary usr/lib/alternc/du.pl 4750 root/www-data +alternc-slave: setuid-binary usr/lib/alternc/mail_add 4750 root/www-data +alternc-slave: setuid-binary usr/lib/alternc/mail_del 4750 root/www-data +alternc-slave: setuid-binary usr/lib/alternc/mem_add 4750 root/www-data +alternc-slave: setuid-binary usr/lib/alternc/mem_del 4750 root/www-data +alternc-slave: setuid-binary usr/lib/alternc/quota_edit 4750 root/www-data +alternc-slave: setuid-binary usr/lib/alternc/quota_get 4750 root/www-data +alternc-slave: executable-is-not-world-readable usr/lib/alternc/du.pl 4750 +alternc-slave: executable-is-not-world-readable usr/lib/alternc/fixperms.sh 0750 != 0755 +alternc-slave: executable-is-not-world-readable usr/lib/alternc/mail_add 4750 +alternc-slave: executable-is-not-world-readable usr/lib/alternc/mail_del 4750 +alternc-slave: executable-is-not-world-readable usr/lib/alternc/mem_add 4750 +alternc-slave: executable-is-not-world-readable usr/lib/alternc/mem_del 4750 +alternc-slave: executable-is-not-world-readable usr/lib/alternc/quota_delete 0750 != 0755 +alternc-slave: executable-is-not-world-readable usr/lib/alternc/quota_get 4750 +alternc-slave: executable-is-not-world-readable usr/lib/alternc/quota_edit 4750 +alternc-slave: executable-is-not-world-readable usr/lib/alternc/quota_edit.sh 0750 != 0755 +alternc-slave: executable-is-not-world-readable usr/lib/alternc/quota_get.sh 0750 != 0755 +alternc-slave: executable-is-not-world-readable usr/lib/alternc/quota_init 0750 != 0755 +alternc-slave: executable-is-not-world-readable usr/lib/alternc/rawstat.daily 0750 != 0755 +alternc-slave: executable-is-not-world-readable usr/lib/alternc/sendmail 0750 != 0755 +alternc-slave: executable-is-not-world-readable usr/lib/alternc/slave_dns 0750 != 0755 +alternc-slave: executable-is-not-world-readable usr/lib/alternc/spoolsize.php 0750 != 0755 +alternc-slave: executable-is-not-world-readable usr/lib/alternc/sqlbackup.sh 0750 != 0755 +alternc-slave: executable-is-not-world-readable usr/lib/alternc/update_domains.sh 0750 != 0755 +alternc-slave: executable-is-not-world-readable usr/lib/alternc/functions_hosting.sh 0750 != 0755 +alternc-slave: executable-is-not-world-readable usr/lib/alternc/functions_dns.sh 0750 != 0755 +alternc-slave: non-standard-dir-in-var var/backups/ diff --git a/stable-1.0/debian/alternc-slave.logrotate b/stable-1.0/debian/alternc-slave.logrotate new file mode 100644 index 00000000..acbaa5a1 --- /dev/null +++ b/stable-1.0/debian/alternc-slave.logrotate @@ -0,0 +1,32 @@ +# +# Logrotate.d script for AlternC +# $Id: alternc.logrotate,v 1.1 2004/05/25 02:35:38 anonymous Exp $ +# + +/var/log/alternc/bureau.log { + monthly + missingok + create 0640 www-data www-data + rotate 12 + compress + delaycompress +} + +/var/log/alternc/domaines.log { + monthly + missingok + create 0640 root root + rotate 12 + compress + delaycompress +} + +/var/log/alternc/sub_domaines.log { + monthly + missingok + create 0640 root root + rotate 12 + compress + delaycompress +} + diff --git a/stable-1.0/debian/alternc-slave.postinst b/stable-1.0/debian/alternc-slave.postinst new file mode 100644 index 00000000..ac68c89a --- /dev/null +++ b/stable-1.0/debian/alternc-slave.postinst @@ -0,0 +1,226 @@ +#!/bin/sh + +set -e + +# Source debconf library. +. /usr/share/debconf/confmodule + +CONFIGFILE="/etc/alternc/local.sh" + +update_var() { + local question + local var + question="$1" + var="$2" + db_get "$question" + if [ ! -z "$RET" ]; then + grep -Eq "^ *$var=" $CONFIGFILE || echo "$var=" >> $CONFIGFILE + SED_SCRIPT="$SED_SCRIPT;s\\^ *$var=.*\\$var=\"$RET\"\\" + fi +} + +# summary of how this script can be called: +# * `configure' +# * `abort-upgrade' +# * `abort-remove' `in-favour' +# +# * `abort-deconfigure' `in-favour' +# `removing' +# +# for details, see http://www.debian.org/doc/debian-policy/ or +# the debian-policy package +# +# quoting from the policy: +# Any necessary prompting should almost always be confined to the +# post-installation script, and should be protected with a conditional +# so that unnecessary prompting doesn't happen if a package's +# installation fails and the `postinst' is called with `abort-upgrade', +# `abort-remove' or `abort-deconfigure'. + +case "$1" in + configure) + + # ajoute l'user postfix au groupe sasl + adduser --quiet postfix sasl + + # corriger les permissions du chroot + mkdir -p /var/spool/postfix/var/run/saslauthd || true + dpkg-statoverride --quiet --update --add root sasl 710 /var/spool/postfix/var/run/saslauthd || true + + # build local.sh if it does not exist + if [ ! -f $CONFIGFILE ]; then + cat > $CONFIGFILE < $CONFIGFILE.tmp + mv -f $CONFIGFILE.tmp $CONFIGFILE + + # Setup grants + db_get "alternc-slave/mysql/host" + MYSQL_HOST="$RET" + if [ "$MYSQL_HOST" != "localhost" -o -e /usr/sbin/mysqld ]; then + # compatibility shims with my.cnf + host="$RET" + db_get "alternc-slave/mysql/db" + database="$RET" + db_get "alternc-slave/mysql/user" + user="$RET" + db_get "alternc-slave/mysql/password" + password="$RET" + + # we source (instead of forking) mysql.sh so that it gets the local environment above + . /usr/share/alternc/install/mysql.sh + fi + + # forget the password + db_reset alternc-slave/mysql/password || true + db_fset alternc-slave/mysql/password "seen" "false" || true + + if [ -e $CONFIGFILE ]; then + # source local.sh variables + . $CONFIGFILE + fi + + if grep -q alternc-mergelog /etc/passwd ; then + echo "Reusing the alternc-mergelog account as a generic alternc account" + # the uid is ugly. we should request allocation from + # base-passwd instead + usermod --uid 342 --shell /bin/rbash --login alternc alternc-mergelog + # this is a separate step otherwise usermod will look for + # files to chown in /var/alternc, which takes a long time + usermod --home $ALTERNC_LOC alternc + fi + if [ -d /var/run/alternc-mergelog/.ssh ]; then + echo "Cleaning up old alternc-mergelog home" + mv /var/run/alternc-mergelog/.ssh $ALTERNC_LOC/.ssh && rmdir /var/run/alternc-mergelog + fi + if ! grep -q alternc /etc/passwd ; then + echo "Creating alternc account" + # this uid is ugly. we should request allocation from + # base-password instead + adduser --quiet --system --uid 342 --home $ALTERNC_LOC --shell /bin/rbash --ingroup adm alternc + fi + + echo "config phpmyadmin" + include_str='include("/etc/alternc/phpmyadmin.inc.php")' + pma_config=/etc/phpmyadmin/config.inc.php + if ! grep -e "$include_str" $pma_config > /dev/null 2>&1; then + echo "" >> $pma_config + fi + + if ! grep -q '## ALTERNC START' /etc/sudoers; then + # XXX: this is not proper locking + if [ -e /etc/sudoers.tmp ]; then + echo "sudoers file being edited, aborting" + exit 1 + else + cp /etc/sudoers /etc/sudoers.tmp + cat >> /etc/sudoers.tmp <&2 + exit 1 + ;; + +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 + +# vim: et sw=4 diff --git a/stable-1.0/debian/alternc-slave.postrm b/stable-1.0/debian/alternc-slave.postrm new file mode 100644 index 00000000..6a5d52e1 --- /dev/null +++ b/stable-1.0/debian/alternc-slave.postrm @@ -0,0 +1,47 @@ +#! /bin/sh + +set -e + +. /usr/share/debconf/confmodule + +# * postrm remove +# * postrm purge +# * old-postrm upgrade new-version +# * new-postrm failed-upgrade old-version +# * new-postrm abort-install +# * new-postrm abort-install old-version +# * new-postrm abort-upgrade old-version +# * disappearer's-postrm disappear overwriter overwriter-version + +case "$1" in + purge) + rm -f /etc/alternc/local.sh /etc/alternc/my.cnf /etc/alternc/bureau.conf + rm -f /var/backups/alternc/etc-installed.tar.gz + + db_input high alternc/postrm_remove_datafiles || true + db_go + db_get alternc/postrm_remove_datafiles || true + if [ "$RET" = "true" ]; then + rm -rf /var/backups/alternc + fi + + rm -f /etc/apache/conf.d/override_php.conf /etc/apache/conf.d/alternc-ssl.conf /etc/apache/conf.d/alternc.conf + ;; + remove|upgrade|failed-upgrade|abort-install|abort-upgrade) + ;; + disappear) + ;; + *) + echo "postrm called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 + +# vim: et sw=4 diff --git a/stable-1.0/debian/alternc-slave.prerm b/stable-1.0/debian/alternc-slave.prerm new file mode 100644 index 00000000..bf6ba5db --- /dev/null +++ b/stable-1.0/debian/alternc-slave.prerm @@ -0,0 +1,27 @@ +#!/bin/sh -e + +# Debian alternc prerm +# Benjamin Sonntag + +case "$1" in +remove) + # remove postfix from the sasl group (might not be user will though...) + deluser --quiet postfix sasl || true + ;; + +upgrade) + ;; + +purge) + ;; + +failed-upgrade|abort-install|abort-upgrade|disappear) + ;; + +*) + echo "postrm called with unknown argument '$1'" >&2 + exit 1 + ;; +esac + +#DEBHELPER# diff --git a/stable-1.0/debian/alternc-slave.templates b/stable-1.0/debian/alternc-slave.templates new file mode 100644 index 00000000..bc1d0b7b --- /dev/null +++ b/stable-1.0/debian/alternc-slave.templates @@ -0,0 +1,178 @@ +Template:alternc-slave/welcomeconfirm +Type: boolean +Default: true +_Description: Do you REALLY want to install AlternC on this computer ? + You are currently trying to install AlternC on your computer. Be aware + that this package will overwrite critical system files, including but not + limited to the config files of bind, postfix, courier, squirrelmail and proftpd. + . + A backup of your old configuration will be stored in + "/var/backups/alternc/etc-original-`date`.tar.gz". + . + YOU HAVE BEEN WARNED. + +Template:alternc-slave/desktopname +Type: string +_Description: Fully qualified name of the desktop: + Please enter the fully qualified name of your server. This will be the + domain part of the url you will use to access the virtual managment + desktop. This (sub)domain MUST point to your server. + . + The default should be ok if your machine is correctly configured. + +Template:alternc-slave/hostingname +Type: string +_Description: Name of your hosting service: + Please enter the name of your hosting service. It may be your company's + name or your personnal name or whatever you want to ... + +Template:alternc-slave/ns1 +Type: string +_Description: Name of the primary domain name server: + Please enter the fully qualified name of your primary dns server. It can + be this server since bind is installed and configured by AlternC. Anyway, + if your hosting service is quite big, you may have an external primary + name server that keep in sync with your alternc's server(s). . The default + value should be good in most case. + +Template:alternc-slave/ns2 +Type: string +_Description: Name of the secondary domain name server: + Please enter the fully qualified name of your secondary dns server. It can + be this server since bind is installed and configured by AlternC. Anyway, + you should have 2 separate DNS servers if you want to provide a high + quality hosting service. + . + You may contact the AlternC's users mailing list if you want to exchange + dns service with other AlternC's users. + +Template:alternc-slave/mysql/host +Type: string +_Description: Name of the mysql server: + Please enter the fully qualified name of your mysql server host. On small + systems, it IS "localhost" since you may have installed a local mysql + server. If you are a bigger hosting service, you may put your mysql + service on a remote synchronized ring or equivalent. In that case, please + enter the hostname of your mysql server. This server MUST be able to + access the remote server at standard port (3306). It is recommended to use + "127.0.0.1" instead of "localhost" if your postfix installation is + configured in a chroot (which is the case, by default). + +Template:alternc-slave/mysql/db +Type: string +_Description: AlternC's mysql system database: + AlternC will create a mysql database to store it's system data. Please + choose the name of this database here. The default value should be good in + most case. + +Template:alternc-slave/mysql/user +Type: string +_Description: AlternC's mysql account: + AlternC will create a mysql administrator account. Please choose it's + username here. The default value should be good in most case. + +Template:alternc-slave/mysql/password +Type: password +_Description: Password of the AlternC's mysql account: + AlternC requires an administrator account on the mysql server. It will be + created automatically during the install process. Please choose a password + for this account. + . + Please choose a quite complex password since it will have full access to + the system database !!! + +Template:alternc-slave/mysql/client +Type: string +_Description: The server to GRANT permissions to: + AlternC and MySQL can be installed on different servers. In order to have + GRANT table properly created and manipulated, this parameter must be set + to the hostname or IP the Apache server will appear as connecting from to + the MySQL server. + +Template:alternc-slave/sql/backup_type +Type: select +Choices: rotate, date +_Description: The way backup rotation is executated + AlternC enables users to configure their own backups, on demand, with + automatic rotation. This option determines how the backups are rotated. + . + rotate - backup.sql, backup.sql.0, backup.sql.1 + date - backup.sql, backup.sql.20080709, backup.sql.20080708 + +Template:alternc-slave/sql/backup_overwrite +Type: select +Choices: no, rename, overwrite +_Description: Behavior of the backup script when it encounters a unmanaged file + The SQL backups can rename or overwrite existing files it doesn't know + about when doing backups. The default behavior is to skip those files + and ignore it. + +Template:alternc-slave/public_ip +Type: string +_Description: The primary IP of this server: + AlternC will default the A records for domains it hosts to this address. In + other words, this is the address everyone can reach to server at. + +Template:alternc-slave/internal_ip +Type: string +_Description: The internal IP of this server: + AlternC will configure Apache and other services to listen to this + address. This is usually the same as the primary IP of the server, unless + the server is sitting behind a NAT router. + . + In other words, this is the IP address of eth0. + +Template:alternc-slave/default_mx +Type: string +_Description: The default MX to assign to new domains: + AlternC will assign this hostname as the MX record for all the domains it + hosts. It is usually better be left alone. + +Template:alternc-slave/alternc_location +Type: string +_Description: The path where AlternC is installed: + Please enter the partition name where alternc is installed. This is used + mainly for disk quotas. + . + Warning : Be careful ! It can generate some problems. + +Template:alternc-slave/monitor_ip +Type: string +_Description: The monitoring server: + The IP address (or ip/prefix) of the server(s) which must be authorized to + ping us and access apache status pages. Completely optional. + +Template:alternc-slave/pop_before_smtp_warning +Type: note +_Description: POP Before SMTP deprecated + AlternC doesn't automatically configure the pop-before-smtp package + anymore, since it is correctly configured for SASL authentification these + days. If you wish to configure pop-before-smtp, simply find the lines + preceded by: + . + # For Courier-POP3 and Courier-IMAP: + . + in the /etc/pop-before-smtp/pop-before-smtp.conf and uncomment it. + hash:/var/lib/pop-before-smtp/hosts must also be added to the mynetworks + directive of /etc/postfix/main.cf + +Template:alternc-slave/postrm_remove_databases +Type: boolean +_Description: Should AlternC remove all databases (/var/lib/mysql/) ? + All users databases will be trashed + +Template:alternc-slave/postrm_remove_datafiles +Type: boolean +_Description: Should AlternC remove users datas ? + The files and apache redirections created by users will be trashed + +Template:alternc-slave/postrm_remove_bind +Type: boolean +_Description: Should AlternC remove bind zones ? + It will delete all bind zones created by AlternC + +Template:alternc-slave/postrm_remove_mailboxes +Type: boolean +_Description: Should AlternC remove bind mailboxes ? + If you accept all users e-mails will be deleted + diff --git a/stable-1.0/debian/alternc.config b/stable-1.0/debian/alternc.config new file mode 100644 index 00000000..ef8f4229 --- /dev/null +++ b/stable-1.0/debian/alternc.config @@ -0,0 +1,177 @@ +#! /bin/sh + +set -e + +# Source debconf library. +. /usr/share/debconf/confmodule +db_title AlternC + +db_input critical alternc/welcomeconfirm || true + +db_go +# Check the answer. +db_get alternc/welcomeconfirm || true + +if [ "$RET" = "false" ]; then + # reset the welcomeconfirm flag if user refuses so it gets asked again next time + db_reset alternc/welcomeconfirm || true + db_fset alternc/welcomeconfirm "seen" "false" || true + exit 1 +fi + +# default values for local.sh +MYSQL_HOST=127.0.0.1 +MYSQL_DATABASE=alternc +MYSQL_USER=sysusr +MYSQL_PASS="`perl -e 'print map{("a".."z","A".."Z",0..9)[int(rand(62))]}(1..10)' `" +MYSQL_CLIENT=localhost +FQDN="`cat /etc/mailname 2>/dev/null || hostname -f`" +INTERNAL_IP="`env LANG=C /sbin/ifconfig|grep inet | grep -v 127.0.0.1| head -1 | cut -d: -f2 | sed -e 's/\([0-9\.]*\).*$/\1/' 2>/dev/null || hostname -f`" +PUBLIC_IP="$INTERNAL_IP" +DEFAULT_MX="`cat /etc/mailname 2>/dev/null || hostname -f`" +ALTERNC_LOC=/var/alternc +NS1_HOSTNAME="$FQDN" +NS2_HOSTNAME="$FQDN" +HOSTING="AlternC" +SQLBACKUP_TYPE="rotate" +SQLBACKUP_OVERWRITE="no" + +if [ -r /etc/alternc/local.sh ]; then + # source the current config + . /etc/alternc/local.sh +fi +if [ -r /etc/alternc/my.cnf ]; then + # make mysql configuration available as shell variables + # to convert from .cnf to shell syntax, we: + # * match only lines with "equal" in them (/=/) + # * remove whitespace around the = and add a left quote operator ' (;s) + # * add a right quote operator at the end of line (;s) + # * convert mysql variables into our MYSQL_ naming convention (;s) + # * print the result (;p) + eval `sed -n -e "/=/{s/ *= *\"\?/='/;s/\"\?\$/'/;s/host/MYSQL_HOST/;s/user/MYSQL_USER/;s/password/MYSQL_PASS/;s/database/MYSQL_DATABASE/;p}" /etc/alternc/my.cnf` +fi + +# mettre les valeurs de local.sh comme "default" pour debconf +db_get alternc/hostingname +if [ -z "$RET" ] + then + db_set alternc/hostingname "$HOSTING" +fi + +db_get alternc/desktopname +if [ -z "$RET" ] + then +db_set alternc/desktopname "$FQDN" +fi + +db_get alternc/public_ip +if [ -z "$RET" ] + then +db_set alternc/public_ip "$PUBLIC_IP" +fi + +db_get alternc/internal_ip +if [ -z "$RET" ] + then +db_set alternc/internal_ip "$INTERNAL_IP" +fi + +db_get alternc/monitor_ip +if [ -z "$RET" ] + then +db_set alternc/monitor_ip "$MONITOR_IP" +fi + +db_get alternc/ns1 +if [ -z "$RET" ] + then +db_set alternc/ns1 "$NS1_HOSTNAME" +fi + +db_get alternc/ns2 +if [ -z "$RET" ] + then +db_set alternc/ns2 "$NS2_HOSTNAME" +fi + +db_get alternc/default_mx +if [ -z "$RET" ] + then +db_set alternc/default_mx "$DEFAULT_MX" +fi + +db_get alternc/default_mx2 +if [ -z "$RET" ] + then +db_set alternc/default_mx2 "$DEFAULT_SECONDARY_MX" +fi + +db_get alternc/mysql/host +if [ -z "$RET" ] + then +db_set alternc/mysql/host "$MYSQL_HOST" +fi + +db_get alternc/mysql/db +if [ -z "$RET" ] + then +db_set alternc/mysql/db "$MYSQL_DATABASE" +fi + +db_get alternc/mysql/user +if [ -z "$RET" ] + then +db_set alternc/mysql/user "$MYSQL_USER" +fi + +db_get alternc/mysql/password +if [ -z "$RET" ] + then +db_set alternc/mysql/password "$MYSQL_PASS" +fi + +db_get alternc/mysql/client +if [ -z "$RET" ] + then +db_set alternc/mysql/client "$MYSQL_CLIENT" +fi + +db_get alternc/sql/backup_type +if [ -z "$RET" ] + then +db_set alternc/sql/backup_type "$SQLBACKUP_TYPE" +fi + +db_get alternc/sql/backup_overwrite +if [ -z "$RET" ] + then +db_set alternc/sql/backup_overwrite "$SQLBACKUP_OVERWRITE" +fi + +db_get alternc/alternc_location +if [ -z "$RET" ] + then +db_set alternc/alternc_location "$ALTERNC_LOC" +fi + +db_input medium alternc/desktopname || true +db_input medium alternc/hostingname || true +db_input medium alternc/internal_ip || true +db_input medium alternc/public_ip || true +db_input medium alternc/default_mx || true +db_input medium alternc/ns1 || true +db_input medium alternc/ns2 || true +db_input low alternc/alternc_location || true +db_input low alternc/default_mx2 || true +db_input low alternc/mysql/host || true +db_input low alternc/mysql/db || true +db_input low alternc/mysql/user || true +db_input low alternc/mysql/password || true +db_input low alternc/mysql/client || true +db_input low alternc/sql/backup_type || true +db_input low alternc/sql/overwrite || true +db_input low alternc/monitor_ip || true +db_input low alternc/slaves || true +db_go + +# vim: et sw=4 diff --git a/stable-1.0/debian/alternc.cron.d b/stable-1.0/debian/alternc.cron.d new file mode 100644 index 00000000..93d8383a --- /dev/null +++ b/stable-1.0/debian/alternc.cron.d @@ -0,0 +1,19 @@ +# Every day at 4am, produce raw statistics +0 4 * * * root /usr/lib/alternc/rawstat.daily + +# Every day at 5am and every week at 4am, make requested SQL backups +0 5 * * * www-data /usr/lib/alternc/sqlbackup.sh -t daily +0 4 * * 0 www-data /usr/lib/alternc/sqlbackup.sh -t weekly + +# Every 5 minutes, spool waiting domain changes +*/5 * * * * root /usr/lib/alternc/update_domains.sh + +# Every hour, check for slave_dns refreshes +5 * * * * root /usr/lib/alternc/slave_dns + +# Every day at 2am, compute web, mail and db space usage per account. +# You may put this computing every week only or on your filer on busy services. +0 2 * * * www-data /usr/lib/alternc/spoolsize.php + +# Once a week at 7am, optimise the AlternC database +0 1 * * 7 root /usr/lib/alternc/alternc-dboptimize diff --git a/stable-1.0/debian/alternc.dirs b/stable-1.0/debian/alternc.dirs new file mode 100644 index 00000000..c8179b2e --- /dev/null +++ b/stable-1.0/debian/alternc.dirs @@ -0,0 +1,107 @@ +etc/alternc +etc/alternc/templates +etc/alternc/templates/apache2 +etc/alternc/functions_hosting +etc/bind +etc/bind/templates +etc/courier +etc/cron.d +etc/phpmyadmin +etc/postfix +etc/squirrelmail +usr/bin +usr/lib/alternc +usr/sbin +usr/share/alternc/install +usr/share/locale/fr/LC_MESSAGES +usr/share/lintian/overrides/ +var/alternc/apache-vhost +var/alternc/apacheconf +var/alternc/bind +var/alternc/bind/zones +var/alternc/bureau +var/alternc/cgi-bin +var/alternc/db +var/alternc/exec.usr +var/alternc/html +var/alternc/html/_ +var/alternc/html/0 +var/alternc/html/1 +var/alternc/html/2 +var/alternc/html/3 +var/alternc/html/4 +var/alternc/html/5 +var/alternc/html/6 +var/alternc/html/7 +var/alternc/html/8 +var/alternc/html/9 +var/alternc/html/a +var/alternc/html/b +var/alternc/html/c +var/alternc/html/d +var/alternc/html/e +var/alternc/html/f +var/alternc/html/g +var/alternc/html/h +var/alternc/html/i +var/alternc/html/j +var/alternc/html/k +var/alternc/html/l +var/alternc/html/m +var/alternc/html/n +var/alternc/html/o +var/alternc/html/p +var/alternc/html/q +var/alternc/html/r +var/alternc/html/s +var/alternc/html/t +var/alternc/html/u +var/alternc/html/v +var/alternc/html/w +var/alternc/html/x +var/alternc/html/y +var/alternc/html/z +var/alternc/mail +var/alternc/mail/_ +var/alternc/mail/0 +var/alternc/mail/1 +var/alternc/mail/2 +var/alternc/mail/3 +var/alternc/mail/4 +var/alternc/mail/5 +var/alternc/mail/6 +var/alternc/mail/7 +var/alternc/mail/8 +var/alternc/mail/9 +var/alternc/mail/a +var/alternc/mail/b +var/alternc/mail/c +var/alternc/mail/d +var/alternc/mail/e +var/alternc/mail/f +var/alternc/mail/g +var/alternc/mail/h +var/alternc/mail/i +var/alternc/mail/j +var/alternc/mail/k +var/alternc/mail/l +var/alternc/mail/m +var/alternc/mail/n +var/alternc/mail/o +var/alternc/mail/p +var/alternc/mail/q +var/alternc/mail/r +var/alternc/mail/s +var/alternc/mail/t +var/alternc/mail/u +var/alternc/mail/v +var/alternc/mail/w +var/alternc/mail/x +var/alternc/mail/y +var/alternc/mail/z +var/alternc/mla +var/alternc/sessions +var/alternc/tmp +var/backups/alternc +var/log/alternc +var/run/alternc diff --git a/stable-1.0/debian/alternc.links b/stable-1.0/debian/alternc.links new file mode 100644 index 00000000..366b9315 --- /dev/null +++ b/stable-1.0/debian/alternc.links @@ -0,0 +1,3 @@ +/usr/share/alternc/install/alternc.install usr/sbin/alternc.install +fr_FR var/alternc/bureau/locales/fr_CA +en_US var/alternc/bureau/locales/en_GB diff --git a/stable-1.0/debian/alternc.lintian b/stable-1.0/debian/alternc.lintian new file mode 100644 index 00000000..53374c80 --- /dev/null +++ b/stable-1.0/debian/alternc.lintian @@ -0,0 +1,45 @@ +alternc: non-standard-dir-in-var var/alternc/ +alternc: non-standard-dir-in-var var/backups/ +alternc: file-in-unusual-dir +alternc: setuid-binary usr/lib/alternc/mail_add 4750 root/www-data +alternc: setuid-binary usr/lib/alternc/mail_del 4750 root/www-data +alternc: setuid-binary usr/lib/alternc/quota_edit 4750 root/www-data +alternc: setuid-binary usr/lib/alternc/quota_get 4750 root/www-data +alternc: setuid-binary usr/lib/alternc/mem_add 4750 root/www-data +alternc: setuid-binary usr/lib/alternc/mem_del 4750 root/www-data +alternc: setuid-binary usr/lib/alternc/db_create 4750 root/www-data +alternc: setuid-binary usr/lib/alternc/du.pl 4750 root/www-data +alternc: non-standard-executable-perm usr/lib/alternc/quota_edit.sh 0750 != 0755 +alternc: non-standard-executable-perm usr/lib/alternc/quota_get.sh 0750 != 0755 +alternc: non-standard-executable-perm usr/lib/alternc/sqlbackup.sh 0750 != 0755 +alternc: non-standard-executable-perm usr/lib/alternc/rawstat.daily 0750 != 0755 +alternc: non-standard-executable-perm usr/lib/alternc/quota_init 0750 != 0755 +alternc: non-standard-executable-perm usr/lib/alternc/quota_delete 0750 != 0755 +alternc: non-standard-executable-perm usr/lib/alternc/update_domains.sh 0750 != 0755 +alternc: non-standard-executable-perm usr/lib/alternc/functions_hosting.sh 0750 != 0755 +alternc: non-standard-executable-perm usr/lib/alternc/functions_dns.sh 0750 != 0755 +alternc: non-standard-executable-perm usr/lib/alternc/slave_dns 0750 != 0755 +alternc: non-standard-executable-perm usr/lib/alternc/sendmail 0750 != 0755 +alternc: non-standard-executable-perm usr/lib/alternc/spoolsize.php 0750 != 0755 +alternc: non-standard-executable-perm usr/lib/alternc/fixperms.sh 0750 != 0755 +alternc: executable-is-not-world-readable usr/lib/alternc/sendmail 0750 != 0755 +alternc: executable-is-not-world-readable usr/lib/alternc/quota_edit.sh 0750 != 0755 +alternc: executable-is-not-world-readable usr/lib/alternc/fixperms.sh 0750 != 0755 +alternc: executable-is-not-world-readable usr/lib/alternc/quota_edit 4750 +alternc: executable-is-not-world-readable usr/lib/alternc/quota_get.sh 0750 != 0755 +alternc: executable-is-not-world-readable usr/lib/alternc/mail_add 4750 +alternc: executable-is-not-world-readable usr/lib/alternc/mail_del 4750 +alternc: executable-is-not-world-readable usr/lib/alternc/mem_del 4750 +alternc: executable-is-not-world-readable usr/lib/alternc/quota_delete 0750 != 0755 +alternc: executable-is-not-world-readable usr/lib/alternc/mem_add 4750 +alternc: executable-is-not-world-readable usr/lib/alternc/sqlbackup.sh 0750 != 0755 +alternc: executable-is-not-world-readable usr/lib/alternc/quota_get 4750 +alternc: executable-is-not-world-readable usr/lib/alternc/slave_dns 0750 != 0755 +alternc: executable-is-not-world-readable usr/lib/alternc/update_domains.sh 0750 != 0755 +alternc: executable-is-not-world-readable usr/lib/alternc/functions_hosting.sh 0750 != 0755 +alternc: executable-is-not-world-readable usr/lib/alternc/functions_dns.sh 0750 != 0755 +alternc: executable-is-not-world-readable usr/lib/alternc/du.pl 4750 +alternc: executable-is-not-world-readable usr/lib/alternc/quota_init 0750 != 0755 +alternc: executable-is-not-world-readable usr/lib/alternc/spoolsize.php 0750 != 0755 +alternc: executable-is-not-world-readable usr/lib/alternc/rawstat.daily 0750 != 0755 +alternc: using-first-person-in-templates alternc/monitor_ip diff --git a/stable-1.0/debian/alternc.logrotate b/stable-1.0/debian/alternc.logrotate new file mode 100644 index 00000000..acbaa5a1 --- /dev/null +++ b/stable-1.0/debian/alternc.logrotate @@ -0,0 +1,32 @@ +# +# Logrotate.d script for AlternC +# $Id: alternc.logrotate,v 1.1 2004/05/25 02:35:38 anonymous Exp $ +# + +/var/log/alternc/bureau.log { + monthly + missingok + create 0640 www-data www-data + rotate 12 + compress + delaycompress +} + +/var/log/alternc/domaines.log { + monthly + missingok + create 0640 root root + rotate 12 + compress + delaycompress +} + +/var/log/alternc/sub_domaines.log { + monthly + missingok + create 0640 root root + rotate 12 + compress + delaycompress +} + diff --git a/stable-1.0/debian/alternc.postinst b/stable-1.0/debian/alternc.postinst new file mode 100644 index 00000000..d4bbf344 --- /dev/null +++ b/stable-1.0/debian/alternc.postinst @@ -0,0 +1,254 @@ +#!/bin/sh + +set -e + +# Source debconf library. +. /usr/share/debconf/confmodule + +CONFIGFILE="/etc/alternc/local.sh" + +update_var() { + local question + local var + question="$1" + var="$2" + db_get "$question" + + grep -Eq "^ *$var=" $CONFIGFILE || echo "$var=" >> $CONFIGFILE + SED_SCRIPT="$SED_SCRIPT;s\\^ *$var=.*\\$var=\"$RET\"\\" +} + +# summary of how this script can be called: +# * `configure' +# * `abort-upgrade' +# * `abort-remove' `in-favour' +# +# * `abort-deconfigure' `in-favour' +# `removing' +# +# for details, see http://www.debian.org/doc/debian-policy/ or +# the debian-policy package +# +# quoting from the policy: +# Any necessary prompting should almost always be confined to the +# post-installation script, and should be protected with a conditional +# so that unnecessary prompting doesn't happen if a package's +# installation fails and the `postinst' is called with `abort-upgrade', +# `abort-remove' or `abort-deconfigure'. + +case "$1" in + configure) + + # ajoute l'user postfix au groupe sasl + adduser --quiet postfix sasl + + # corriger les permissions du chroot + mkdir -p /var/spool/postfix/var/run/saslauthd || true + dpkg-statoverride --quiet --update --add root sasl 710 /var/spool/postfix/var/run/saslauthd || true + + # build local.sh if it does not exist + if [ ! -f $CONFIGFILE ]; then + cat > $CONFIGFILE < $CONFIGFILE.tmp + mv -f $CONFIGFILE.tmp $CONFIGFILE + + # Setup grants + db_get "alternc/mysql/host" + MYSQL_HOST="$RET" + if [ "$MYSQL_HOST" != "localhost" -o -e /usr/sbin/mysqld ]; then + # compatibility shims with my.cnf + host="$RET" + db_get "alternc/mysql/db" + database="$RET" + db_get "alternc/mysql/user" + user="$RET" + db_get "alternc/mysql/password" + password="$RET" + + # we source (instead of forking) mysql.sh so that it gets the local environment above + . /usr/share/alternc/install/mysql.sh + fi + + if [ -e $CONFIGFILE ]; then + # source local.sh variables + . $CONFIGFILE + fi + + # multi-server configuration: we create an alternc account with + # authorized keys. since this is the master, we do not give him a + # valid shell, but we still need the user for proper perms + if [ ! -z "$ALTERNC_SLAVES" ] && [ "$ALTERNC_SLAVES" != "localhost" ] ; then + if ! grep -q alternc /etc/passwd ; then + echo "Creating alternc account" + adduser --quiet --system --uid 342 --home $ALTERNC_LOC --shell /bin/false --ingroup adm alternc + fi + chown alternc /var/alternc + if [ -r ~root/.ssh/id_dsa.pub ]; then + key=`cat ~root/.ssh/id_dsa.pub` + if ! grep -q "$key" $ALTERNC_LOC/.ssh/authorized_keys ; then + echo "Authorizing root ssh key to access the common alternc account" + mkdir -p $ALTERNC_LOC/.ssh + echo "$key" >> $ALTERNC_LOC/.ssh/authorized_keys + chown -R alternc:adm $ALTERNC_LOC/.ssh + chmod -R og-rwx $ALTERNC_LOC/.ssh + fi + else + echo "No SSH key in "~root/.ssh/id_dsa.pub + echo "create one and reconfigure alternc to propagate SSH keys" + fi + else + echo "AlternC slaves not configured ($ALTERNC_SLAVES)" + fi + + # /var/alternc/dns/d/www.example.com + FQDN_LETTER="`echo $FQDN | sed -e 's/.*\.\([^\.]\)[^\.]*\.[^\.]*$/\1/'`" + if [ "$FQDN_LETTER" = "$FQDN" ] + then + FQDN_LETTER="_" + fi + + # Erase all apacheconf file + # They will be regenerated without the bug by upgrade_check.sh below. + if dpkg --compare-versions "$2" le "0.9.3.9-globenet14"; then + rm -f /var/alternc/apacheconf/*/* + fi + + echo "checking for upgrades" + /usr/share/alternc/install/upgrade_check.sh $2 + + echo "config phpmyadmin" + # Mise à jour sur une configuration existante + # recherche la chaine include_str (avec les / echappées) et supprime les + # ${include_str//\//\\/}"'\) c'est uniquement BASH, on est en SH/DASH + include_str='include("/etc/alternc/phpmyadmin.inc.php")' + pma_config='/etc/phpmyadmin/config.inc.php' + bash -c "include_str='include(\"/etc/alternc/phpmyadmin.inc.php\")';pma_config='/etc/phpmyadmin/config.inc.php';sed 's//\1;/g' \$pma_config > \$pma_config'_2' && mv \$pma_config'_2' \$pma_config" + + # Sur une configuration vierge, inclure la configuration alternc + if ! grep -e "$include_str" $pma_config > /dev/null 2>&1; then + echo "$include_str;" >> $pma_config + fi + + #clean old access to the management panel + # We don't use this anymore : (FIXME : shall we remove /var/alternc/dns while upgrading ?) + #find /var/alternc/dns/ -type l -lname /var/alternc/bureau -exec rm {} \; + + # Bind stuff + touch /var/alternc/bind/automatic.conf /var/alternc/bind/slaveip.conf + chown root:bind /var/alternc/bind/automatic.conf /var/alternc/bind/slaveip.conf + chmod 640 /var/alternc/bind/automatic.conf /var/alternc/bind/slaveip.conf + touch /var/run/alternc/refresh_slave + /usr/lib/alternc/slave_dns + # Apache will not start without this file + touch /var/alternc/apache-vhost/vhosts_all.conf + + # Update l18n files + /usr/share/alternc/install/dopo.sh + + # important: postinst gele sans ca + db_stop + + echo "running alternc.install" + alternc.install + + ;; + + abort-upgrade|abort-remove|abort-deconfigure) + + ;; + + *) + echo "postinst called with unknown argument \`$1'" >&2 + exit 1 + ;; + +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 + +# vim: et sw=4 diff --git a/stable-1.0/debian/alternc.postrm b/stable-1.0/debian/alternc.postrm new file mode 100644 index 00000000..d72dcf64 --- /dev/null +++ b/stable-1.0/debian/alternc.postrm @@ -0,0 +1,74 @@ +#! /bin/sh + +set -e + +. /usr/share/debconf/confmodule + +# * postrm remove +# * postrm purge +# * old-postrm upgrade new-version +# * new-postrm failed-upgrade old-version +# * new-postrm abort-install +# * new-postrm abort-install old-version +# * new-postrm abort-upgrade old-version +# * disappearer's-postrm disappear overwriter overwriter-version + +case "$1" in + purge) + rm -f /etc/alternc/local.sh /etc/alternc/my.cnf /etc/alternc/bureau.conf + rm -f /var/backups/alternc/etc-installed.tar.gz + + # Purge database? + db_input high alternc/postrm_remove_databases || true + db_go + db_get alternc/postrm_remove_databases || true + if [ "$RET" = "true" ]; then + rm -rf /var/alternc/db + fi + + # Purge datafiles? + db_input high alternc/postrm_remove_datafiles || true + db_go + db_get alternc/postrm_remove_datafiles || true + if [ "$RET" = "true" ]; then + rm -rf /var/backups/alternc /var/alternc/dns /var/alternc/html /var/alternc/redir + fi + + # Purge bind zones + db_input high alternc/postrm_remove_bind || true + db_go + db_get alternc/postrm_remove_bind || true + if [ "$RET" = "true" ]; then + rm -rf /var/alternc/bind /etc/bind/templates + fi + + # Purge mailboxes + db_input high alternc/postrm_remove_mailboxes || true + db_go + db_get alternc/postrm_remove_mailboxes || true + if [ "$RET" = "true" ]; then + rm -rf /var/alternc/mail + fi + + rm -rf /var/alternc/apacheconf /var/alternc/cgi-bin /var/alternc/bureau /var/alternc/exec.usr /var/alternc/mla /var/alternc/redir /var/alternc/tmp /var/log/alternc + rm -f /etc/apache*/conf.d/override_php.conf /etc/apache*/conf.d/alternc-ssl.conf /etc/apache*/conf.d/alternc.conf + rm -f /etc/php*/conf.d/alternc.ini + ;; + remove|upgrade|failed-upgrade|abort-install|abort-upgrade) + ;; + disappear) + ;; + *) + echo "postrm called with unknown argument \`$1'" >&2 + exit 1 + ;; +esac + +# dh_installdeb will replace this with shell code automatically +# generated by other debhelper scripts. + +#DEBHELPER# + +exit 0 + +# vim: et sw=4 diff --git a/stable-1.0/debian/alternc.preinst b/stable-1.0/debian/alternc.preinst new file mode 100644 index 00000000..e9381271 --- /dev/null +++ b/stable-1.0/debian/alternc.preinst @@ -0,0 +1,79 @@ +#!/bin/sh + +set -e + +. /usr/share/debconf/confmodule + +case "$1" in + install) + ;; + + upgrade) + if dpkg --compare-versions "$2" lt "0.9.4"; then + echo "Upgrading bind configuration" + # Move /etc/bind files around + mkdir -p /var/alternc/bind + if [ ! -e /var/alternc/bind/automatic.conf -a \ + -f /etc/bind/automatic.conf ]; then + if [ ! -e /var/alternc/bind/zones ]; then + mkdir -p /var/alternc/bind/zones + fi + for zone in `sed -n -e 's,.*/etc/bind/master/\(.*\)".*,\1,p' \ + /etc/bind/automatic.conf`; do + if [ -f /etc/bind/master/$zone ]; then + mv /etc/bind/master/$zone /var/alternc/bind/zones + fi + done + cp -a -f /etc/bind/automatic.conf /var/alternc/bind/automatic.conf + sed -e 's,/etc/bind/master,/var/alternc/bind/zones,g' \ + < /etc/bind/automatic.conf > /var/alternc/bind/automatic.conf + rm /etc/bind/automatic.conf + fi + if [ ! -e /var/alternc/bind/slaveip.conf -a \ + -f /etc/bind/slaveip.conf ]; then + mv /etc/bind/slaveip.conf /var/alternc/bind/slaveip.conf + fi + if [ ! -e /etc/bind/templates ]; then + mkdir -p /etc/bind/templates + fi + if [ ! -e /etc/bind/templates/named.template -a \ + -f /etc/bind/domaines.template ]; then + mv /etc/bind/domaines.template /etc/bind/templates/named.template + fi + if [ ! -e /etc/bind/templates/zone.template -a \ + -f /etc/bind/master/domaines.template ]; then + mv /etc/bind/master/domaines.template \ + /etc/bind/templates/zone.template + fi + if [ -f /etc/bind/master/mx.template ]; then + rm /etc/bind/master/mx.template + fi + if [ -f /etc/bind/master/slave.template ]; then + rm /etc/bind/master/slave.template + fi + rmdir /etc/bind/master 2> /dev/null || + echo "/etc/bind/master was not empty. Please remove it manually." + fi + + if [ ! -e /etc/alternc/menulist.txt ]; then + if [ -f /var/alternc/bureau/admin/menulist.txt ]; then + mv -f /var/alternc/bureau/admin/menulist.txt \ + /etc/alternc/menulist.txt + fi + fi + + ;; + + abort-upgrade) + ;; + + *) + echo "preinst called with unknown argument '$1'" >&2 + exit 1 + ;; + +esac + +#DEBHELPER# + +# vim: et sw=4 diff --git a/stable-1.0/debian/alternc.prerm b/stable-1.0/debian/alternc.prerm new file mode 100644 index 00000000..b7a276b8 --- /dev/null +++ b/stable-1.0/debian/alternc.prerm @@ -0,0 +1,43 @@ +#!/bin/sh -e + +# Debian alternc prerm +# Benjamin Sonntag + +case "$1" in +remove) + # remove postfix from the sasl group (might not be user will though...) + deluser --quiet postfix sasl || true + + . /etc/alternc/local.sh + + FQDN_LETTER="`echo $FQDN | sed -e 's/.*\.\([^\.]\)[^\.]*\.[^\.]*$/\1/'`" + + rm -rf /var/alternc/bureau/locales || true + rmdir -p /var/alternc/bureau 2> /dev/null || true + rm -f /var/alternc/dns/bureau || true + rm -f /var/alternc/dns/$FQDN_LETTER/$FQDN || true + rmdir -p /var/alternc/html/a/admin 2> /dev/null || true + rmdir -p /var/alternc/html/r/root 2> /dev/null || true + ;; + +upgrade) + ;; + +purge) + find /var/alternc/bureau/locales -type f -name "alternc.mo" -exec rm {} \; + find /var/alternc/bureau/locales -type f -name "alternc" -exec rm {} \; + rm /var/alternc/bureau/class/local.php + rm -f /var/alternc/apacheconf/bureau + rm -f /var/alternc/apacheconf/$FQDN_LETTER/$FQDN + ;; + +failed-upgrade|abort-install|abort-upgrade|disappear) + ;; + +*) + echo "postrm called with unknown argument '$1'" >&2 + exit 1 + ;; +esac + +#DEBHELPER# diff --git a/stable-1.0/debian/changelog b/stable-1.0/debian/changelog new file mode 100644 index 00000000..72ab95d9 --- /dev/null +++ b/stable-1.0/debian/changelog @@ -0,0 +1,380 @@ +alternc (1.0) stable; urgency=low + * Major patch + * Web & DNS file generation rebuild from scratch + * Drop of apache 1 support + * Big changes in database schema (domaines, sub_domaines, *_standby removal) + * Major changes + * Drop mass virtual hosting, now use full vhost + * Panel URL do not need anymore /admin/ + * (you can still use it, we put a 301 redirection) + * JQuery is now used by AlternC (but not needed for any usual feature usage) + * New features + * Domains type are dynamic + * (the administrator can create domaine type with his own apache template) + * Advanced DNS options (ipv6, cname, txt, mx) + * Possibility to create a temporary mail (not yet shown, need cron) + * Admin can connect to other account and go back to their own + * Language link is back inside the menu + * MX and secondary MX are now available in debconf + * Bugfixes + * Too many to be listed (we change the historic update_domaines.sh) + * Dash compatibility + * Use iana.org to have whois server list up to date + * Preseeding compatibility : don't ask for questions when already set + + -- Benjamin Sonntag Sat, 04 Jun 2011 18:18:18 +0200 + +alternc (1.0~rc1) stable; urgency=low + + * Major patch + * Blue desktop using only css, no frameset etc + * Sanitizing of get/request/post parameters using getFields function. May allow alternc not to use register_globals some day ... + * security: passwords are now MANDATORY in MySQL class (whoosh...) + * security: now using htmlspecialchars on every form default values ... yes it's 2010 ;) + * i18n: charset is now variable depending on the current language + * new features: + * removed the dependency on postgrey, added dnsutils (for domain checks) + * added domain check (exists, ns, mx, ip) when listing domains in admin panel. + * bugfixes: + * fix a "already exist" error when creating a database containing an hyphen (-) + * #1163: fix sqlbackup script call routine to retain backwards + compatibility + * fix usage of ISO8859-15 charset (that may NOT be defined in locales...) + and add it to the correct url (%%fqdn_lettre%%...) + * major changes: + * PHP sessions are now stored in /var/alternc/sessions + * new features: + * add support for .cc and .re domains. + * when adding a new domain to an account, a directory "examplenet" + is automatically created and the domain points to it instead of /. + * add new field to member form: 'notes' which is just a text field + * send an email on new account creation. the actual email needs to be + configured through the AlternC variables for this to work. + * added the password policy management module : you can choose which + password complexity you want to force for each place a password is required. + * API changes + * m_mysql->get_db_list() doesn't include size anymore because this + is a major performance hit on MySQL < 5.1.22 if there are > 1000 + databases on the system. This speeds up the AlternC login by about + 30 seconds on Koumbit.org. + + -- Benjamin Sonntag Sat, 12 May 2009 17:55:30 +0200 + +alternc (0.9.9) stable; urgency=low + + * bugfixes: + * #1080: fix webmail redirection + * #1128, #1110: translation fixes + * fix WHOIS lookups for .ca, .com and .net + * fix ProFTPd TLS/SSL mode + * #708: remove '-' from the list of authorized usernames + * put the logout button at the end of the left menu + * #1124: fix database user configuration + * FTP/TLS is now working properly (config is RSA not DSA, and key AND + certif config must be BOTH populated) + * #1029: do not overwrite the main.cf from postfix + * #1129: remove 2GB quota limit + * #1017: fix apache2 configuration + * #1078: run upgrade scripts properly + * new features: + * start logging IP addresses in logs + * rework the sqlbackup script to allow for date-based backups instead of + log-like incremental backups + * #1131: allow admins to make all list URLs be based on the FQDN + * #1087: allow admins to create user subdomains according to hardcoded + value or available domains + * make a new alternc-slave package that eases installation on NFS-backed + frontend nodes + * builtin postgrey and Spamhaus blacklisting configuration + * #1017: complete apache2 support, although apache1 is still the "official" + platform for now + * FTP+SSL support + * other changes: + * deprecate the mynetwork modification in Postfix, this is now left to the + admin + * do not overwrite main.cf + * do not overwrite named.conf + + -- Antoine Beaupré Tue, 15 Apr 2008 11:52:56 -0400 + +alternc (0.9.8) stable; urgency=high + + This release is packed with minor enhancements and bugfixes. It also packages + security fixes. Not all targets of the milestone were accomplished but this + was released nevertheless because of the security issue. + + * security: + * move mysql configuration into a valid MySQL configuration file + (/etc/alternc/my.cnf). This fixes a serious security issue (#318) + where the MySQL root password was passed on the commandline and could + therefore be visible to local users (and hosted members that don't have + safe_mode controls or can access the process table in some way). + * disable the autocomplete on frontal user/login + * various bugfixes + * upgrade to Debian standard 3.7.3 (from 3.7.2.1) + * added missing dependency on mysql-client + * fix display of errors on directory creation + * from Trac: #1012, #1082, #1077, #1109 + * fix 0.9.7 regressions: #1079, #1080, #1099, #1076 + * new features: + * starting with this release, the old warning signal defaults to "YES" which + means that AlternC can be automatically installed without preseeding. + * crude implementation of a permission change interface in the file browser + (partial implementation of #267) + * standardisation of the web interface, along with some esthetic changes, by + Marc Angles, sponsored by Koumbit (partial implementation of #37) + * styles can now be changed locally in admin/styles/custom.css + * allow arbitrary error strings in error handlers + * copy and archive extraction in the file browser (#1043) + * display at which time the DNS changes will take effect (#231) + * use timestamp for sql backups rather than rotating the files (#1063) + * other simple additions: #1043, #1097 + + -- Antoine Beaupré Thu, 10 Apr 2008 13:56:22 -0400 + +alternc (0.9.7) stable; urgency=low + + * major release, closing more than 40 bugs, including... + * Fixing MX check when hosting a mail (#1706) + * Delete the zonefile properly when destroying a domain (#772) + * Choose english as default language, (#1047) + * Proper parameter checking in subdomain creation (#1037) + * Changing ownership of /var/alternc/tmp, makes file upload work again (#1058) + * Force the restart of apache & apache-ssl (#1000) + * Redirect are now done on http://$url$1 base, not $url/$1 (#1054) + * Patch to install properly apache and apache-ssl modules + * We copy /etc/squirrelmail/default_pref content for new accounts in _createpop (#1015) + * we configure postfix even if main.cf don't currently exist (#1009) + * Fixed the 'view' link issues (no urlencode) (#690) + * Change "move" to "move to" (ergonomic) (#787) + * Confirm file deletion in the browser (#659) + * fix dns install of internal hosting domains (#1056) + * fix proftpd and saslauthd configuration for Etch (#1046, #1069) + * fix .eu, .be, .name whois issue (#571) + * change apache log format to a working one (using host request), also fix awstats issues. + * fix modules manipulation rules (#1062) + * try to support apache2, at least with the right dependencies + * end explicit mysql-server dependencies, which switches to Recommends, + since we can now configure remote mysql servers properly (#1014) + * fix our phpmyadmin config for etch (#1052) + * add portuguese translation + * see subversion changelog for more details + + -- Antoine Beaupré Fri, 9 Nov 2007 18:40:50 -0500 + +alternc (0.9.6.3) stable; urgency=low + + * change dependency on courier-authmysql or courier-authlib-mysql for etch + * fix sql backups in case of missing target directory + * fix translations + * php5 compatibility + * fix checkmx (#1031) + * etch support + + -- Antoine Beaupré Fri, 11 May 2007 01:18:08 +0000 + +alternc (0.9.6.2) stable; urgency=high + + * repackage 0.9.6.1 properly: include all latest fixes, which didn't make it + to the package + * don't put postfix in pre-depends + * urgency=high because 0.9.6.1 doesn't include all the security fixes it + pretends + + -- Antoine Beaupré Wed, 17 Jan 2007 15:58:39 -0500 + +alternc (0.9.6.1) stable; urgency=high + + * Emergency release to fix issues with release 0.9.6. + * Fix a security issue with override_php.conf not being configured in apache, effectively disabling open_basedir restrictions. Closes: #1005 + * Show installation warning only once. Closes: #737 + * Make it possible to erase files and directories in file browser. Closes: #1002. + * Fix mail accounts creation. Closes: #1003. + * Fix a race condition in update_domains.sh which could allow users to + bypass openbasedir protection when creating domains. Reported by + Jerome Moinet. + + -- Antoine Beaupré Fri, 12 Jan 2007 15:59:42 -0500 + +alternc (0.9.6) stable; urgency=high + + * Replacing C setuid scripts by perl-suid one. AlternC is now arch-indep ! + * Do not overwrite httpd.conf anymore. Everything is now done through includes in the /etc/apache/conf.d/ directory + * Fix security issues with file browser and domain management that allowed an attacker to inspect the filesystem, create files in other accounts and perform cross site scripting javascript attacks. Credit: thabob. + * #563: do not overwrite php.ini anymore. Everything is configured in the + apache config. + * All other bugs are postponed to 0.9.7 because of the security issue (hence + urgency=high). See https://dev.alternc.org/trac/alternc/milestone/0.9.6 + for more information. + + -- Antoine Beaupré Mon, 27 Nov 2006 21:26:32 +0000 + +alternc (0.9.5) stable; urgency=low + + * maintenance release to fix packaging and security bugs + * see https://dev.alternc.org/trac/alternc/milestone/0.9.5 for milestone + * changelog at https://dev.alternc.org/trac/alternc/query?status=closed&milestone=0.9.5 + However, this version contains mainly : + * quota management fixes + * bind now forbid recursion and domain poisoning + * now using po-debconf + * mysql right management now included in the web desktop. + * .eu tld domain is now allowed. + * postfix is now using saslauthd with rimap for smtp sasl authentication + + -- Benjamin Sonntag Thu, 4 May 2006 03:55:30 +0200 + +alternc (0.9.4) stable; urgency=low + + * maintenance release to fix packaging and security bugs + * see https://dev.alternc.org/trac/alternc/milestone/0.9.4 for milestone + * changelog at https://dev.alternc.org/trac/alternc/query?status=closed&milestone=0.9.4 + However, this version contains mainly : + * Integration of Globenet patchs (replacement of do_domains.sh by update_domains.sh and others) + * Changing mysql database creation from uid to login name + * Major improvements in FHS compliance + * Major improvements in config file management and debconf idempotency + + -- Benjamin Sonntag Wed, 29 Mar 2006 19:34:41 +0200 + +alternc (0.9.3.1) testing; urgency=low + + * maintenance release to fix packaging and security bugs + * see http://mantis.alternc.org/view.php?id=436 for milestones + * full changelog at: http://mantis.alternc.org/changelog_page.php + * Arch: all to have this package available in all architectures + * take over maintainership + * release sponsored by Koumbit.net + + -- Antoine Beaupre Thu, 19 Jan 2006 20:48:45 +0000 + +alternc (0.9.3.9-globenet10) stable; urgency=low + + * Fix typo in sqlbackup.sh. + * Another fix for empty host in update_domains.sh. + * Fix database name spliting in the bureau. + * Fix zone reload and php overrides bugs in update_domains.sh. + * Don't try to generate php override file for IP hosts. + * Redirect apache reload output to the log file in update_domains.sh. + * Fix sendmail wrapper behaviour w.r.t. Sender header. + * Correct Section and Maintainer field for the Debian package. + + -- Lunar Sat, 15 Oct 2005 02:43:37 +0200 + +alternc (0.9.3.9-globenet9) unstable; urgency=low + + * Fix deletion of empty host in update_domains.sh. + * Fix DNS zone serial generation. + + -- Lunar Thu, 22 Sep 2005 00:26:15 +0200 + +alternc (0.9.3.9-globenet8) unstable; urgency=low + + * Finally fix empty host handling in update_domains.sh. + + -- Lunar Wed, 21 Sep 2005 23:45:06 +0200 + +alternc (0.9.3.9-globenet7) unstable; urgency=low + + * Fix menulist.txt symlink target. + + -- Lunar Wed, 21 Sep 2005 21:26:02 +0200 + +alternc (0.9.3.9-globenet6) unstable; urgency=low + + * Create menulist.txt symbolic link in debian/rules + * Make menulist.txt migration more likely to happen + + -- Lunar Wed, 21 Sep 2005 21:08:08 +0200 + +alternc (0.9.3.9-globenet5) unstable; urgency=low + + * Rewrite sqlbackup.sh, enabling non-local MySQL server + * allow mysql users connection from the web server (jonathan) + * Move menulist.txt to /etc/alternc + * Fix update_domains.sh not working with empty hostnames + + -- Lunar Wed, 21 Sep 2005 19:57:59 +0200 + +alternc (0.9.3.9-globenet4) unstable; urgency=low + + * named.template now points to the correct directory.. + + -- Lunar Thu, 15 Sep 2005 00:00:37 +0200 + +alternc (0.9.3.9-globenet3) unstable; urgency=low + + * Fix mail not sent from PHP scripts + * Actually exit update_domains.sh when killed + * Fix templates warning + * Fix reverse DNS test for BIND_INTERNAL + + -- Lunar Wed, 14 Sep 2005 23:54:23 +0200 + +alternc (0.9.3.9-globenet2) unstable; urgency=low + + * Fix alternc.install failling when unable to backup an unecessary file. + + -- Lunar Tue, 6 Sep 2005 23:18:56 +0200 + +alternc (0.9.3.9-globenet1) unstable; urgency=low + + * Major overhaul of configuration and install system: + - /etc/alternc/alternc.conf is no more and /etc/alternc/local.sh + is used by everyone else. + - alternc.install was rewritten. + - configuration templates now lies in /etc/alternc/templates, + tagged as conffiles. + - alternc.install will now check if you have changed a configuration + file without modifying the template and calling alternc.install + again. + - alternc.install now determines which configuration files it needs + based on what is currently installed, thus it's easier to build + custom Debian package with lower deps. + * BIND interaction mostly rewritten: + - do_domaines.sh is no more and replaced by update_domains.sh + - templates used to build automatic.conf and zone files are now in + /etc/bind/templates once installed + - automatic.conf and slaveip.conf are now generated in /var/alternc/bind + - zone files are now generated in /var/alternc/bind/zones. + - the secondary feature and /usr/lib/alternc/bind2 are gone + * Small things: + - Striped the second reject_unauth_destination from postfix main.cf. + - Fixed debconf dependency. + - Add support for quota on NFS partitions. + - Disk usage calculation disabled for directories in browser. + - bind_internal is now used in named.conf template. + - Fixed phpmyadmin server list bug. + + -- Lunar Tue, 6 Sep 2005 20:34:53 +0200 + +alternc (0.9.3) testing; urgency=low + + * Upstream update : many bugfixes, see the bugs related to + http://mantis.alternc.org/view.php?id=246 for details + + -- Benjamin Sonntag Wed, 10 Nov 2004 00:00:00 +0200 + +alternc (0.9.2-2) testing; urgency=low + + * Upstream update : many bugfixes (http://mantis.alternc.org) + + -- Benjamin Sonntag Wed, 09 Sep 2004 23:04:26 +0200 + +alternc (0.9.2-1) testing; urgency=low + + * Upstream update + + -- Benjamin Sonntag Fri, 27 Aug 2004 18:04:26 +0200 + +alternc (0.9.1-1) testing; urgency=low + + * Upstream update + + -- Benjamin Sonntag Fri, 04 Jun 2004 19:31:26 +0200 + +alternc (0.9-1) testing; urgency=low + + * Initial Release. + + -- Benjamin Sonntag Tue, 27 Aug 2002 19:31:26 +0200 diff --git a/stable-1.0/debian/compat b/stable-1.0/debian/compat new file mode 100644 index 00000000..7f8f011e --- /dev/null +++ b/stable-1.0/debian/compat @@ -0,0 +1 @@ +7 diff --git a/stable-1.0/debian/control b/stable-1.0/debian/control new file mode 100644 index 00000000..47b045de --- /dev/null +++ b/stable-1.0/debian/control @@ -0,0 +1,73 @@ +Source: alternc +Section: admin +Priority: optional +Maintainer: Benjamin Sonntag +Build-Depends-Indep: findutils (>= 4.1.7), gettext (>= 0.10.40-5) +Build-Depends: debhelper (>= 4.0.2), po-debconf +Standards-Version: 3.9.1 + +Package: alternc +Architecture: all +Pre-depends: debconf (>= 0.5.00) | debconf-2.0 +Depends: debianutils (>= 1.13.1), apache2-mpm-prefork, libapache2-mod-php5, courier-ssl, courier-imap-ssl, courier-pop-ssl, php5-mysql, phpmyadmin, postfix, proftpd-mod-mysql, proftpd-basic, squirrelmail, squirrelmail-locales, postfix-tls, bind9, wget, rsync, quota, courier-authmysql | courier-authlib-mysql, ca-certificates, locales, perl-suid, perl, postfix-mysql, wwwconfig-common, sasl2-bin, fam, libsasl2-modules, php5-cli, lockfile-progs (>= 0.1.9), gettext (>= 0.10.40-5), adduser, mysql-client, dnsutils, ${misc:Depends} +Recommends: mysql-server +Conflicts: alternc-admintools, alternc-awstats (<< 1.0), alternc-mailman (<< 2.0), alternc-procmail (<< 2.0), alternc-munin (<< 1.0), alternc-changepass (<< 1.0) +Provides: alternc-admintools +Replaces: alternc-admintools +Suggests: alternc-awstats, alternc-mailman, alternc-changepass, amavisd-new, clamav-daemon, spamassassin, pop-before-smtp, magpierss, zip, ncompress, bzip2 +Description: Hosting software managment suite for Debian + AlternC is a mutualized hosting software manager for Linux. + It allows you to manage your websites, domains, ftp, emails, aliases, + web statistics, mailing-lists, jabber accounts, etc. + . + AlternC is mainly a PHP based administration interface and some conf files + for the softwares used by it. + . + More information at http://www.alternc.com/ +Homepage: http://www.alternc.com/ +Description-fr.UTF-8: Suite logicielle d'hébergement mutualisé pour Debian + AlternC est un logiciel d'hébergement mutualisé pour serveur Linux. + Il permet de gérer les sites web, domaines, ftp, emails, alias, + statistiques web, listes de discussions, comptes jabber, etc. + . + AlternC est essentiellement une interface d'administration en PHP et + quelques fichiers de configuration pour les logiciels qu'il utilise. + . + Pour plus d'informations, consultez http://www.alternc.com/ + +Package: alternc-slave +Architecture: all +Pre-depends: debconf (>= 0.5.00) | debconf-2.0 +Depends: debianutils (>= 1.13.1), apache2-mpm-prefork, libapache2-mod-php5, courier-ssl, courier-imap-ssl, courier-pop-ssl, php5-mysql, phpmyadmin, postfix, proftpd-mod-mysql, proftpd-basic, squirrelmail, postfix-tls, bind9, wget, rsync, quota, courier-authmysql | courier-authlib-mysql, ca-certificates, locales, perl-suid, perl, postfix-mysql, wwwconfig-common, sasl2-bin, libsasl2-modules, php5-cli, lockfile-progs (>= 0.1.9), gettext (>= 0.10.40-5), adduser, mysql-client, sudo, ${misc:Depends} +Conflicts: alternc-admintools, alternc-awstats (<= 0.3.2), alternc-webalizer (<= 0.9.4), alternc +Provides: alternc +Replaces: alternc +Suggests: alternc-awstats, alternc-mailman, alternc-changepass, amavisd-new, clamav-daemon, spamassassin, pop-before-smtp, magpierss, zip, ncompress, bzip2 +Description: Hosting software managment suite for Debian + AlternC is a mutualized hosting software manager for Linux. + It allows you to manage your websites, domains, ftp, emails, aliases, + web statistics, mailing-lists, jabber accounts, etc. + . + AlternC is mainly a PHP based administration interface and some conf files + for the softwares used by it. + . + This package is designed for frontend nodes in a load balancing setup, where + the /var/alternc directory is not touched and managed over NFS. + . + More information at http://www.alternc.com/ +Homepage: http://www.alternc.com/ +Description-fr.UTF-8: Suite logicielle d'hébergement mutualisé pour Debian + AlternC est un logiciel d'hébergement mutualisé pour serveur Linux. + Il permet de gérer les sites web, domaines, ftp, emails, alias, + statistiques web, listes de discussions, comptes jabber, etc. + . + AlternC est essentiellement une interface d'administration en PHP et + quelques fichiers de configuration pour les logiciels qu'il utilise. + . + Ce paquet permet de construire un noeud frontal dans une configuration avec + répartiteur de charge, ou le dossier /var/alternc n'est pas modifié et géré + à travers NFS. + . + Pour plus d'informations, consultez http://www.alternc.com/ + + diff --git a/stable-1.0/debian/copyright b/stable-1.0/debian/copyright new file mode 100644 index 00000000..cfb35ebb --- /dev/null +++ b/stable-1.0/debian/copyright @@ -0,0 +1,25 @@ +This package was debianized by Benjamin Sonntag on +Tue, 27 Aug 2002 19:31:26 +0200. + +It was downloaded from http://alternc.org/ + +Upstream Authors: AlternC Development team + +Copyright (c) 2002-2008 AlternC Development team + + + LICENSE + + This program is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License (GPL) + as published by the Free Software Foundation; either version 2 + of the License, or (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + On Debian systems, the complete text of the GNU General Public + License can be found in /usr/share/common-licenses/GPL file. + diff --git a/stable-1.0/debian/docs b/stable-1.0/debian/docs new file mode 100644 index 00000000..5e692a04 --- /dev/null +++ b/stable-1.0/debian/docs @@ -0,0 +1,2 @@ +README.fr +README.en diff --git a/stable-1.0/debian/po/POTFILES.in b/stable-1.0/debian/po/POTFILES.in new file mode 100644 index 00000000..cef83a34 --- /dev/null +++ b/stable-1.0/debian/po/POTFILES.in @@ -0,0 +1 @@ +[type: gettext/rfc822deb] templates diff --git a/stable-1.0/debian/po/fr.po b/stable-1.0/debian/po/fr.po new file mode 100644 index 00000000..c9c7fadd --- /dev/null +++ b/stable-1.0/debian/po/fr.po @@ -0,0 +1,542 @@ +# +# Translators, if you are not familiar with the PO format, gettext +# documentation is worth reading, especially sections dedicated to +# this format, e.g. by running: +# info -n '(gettext)PO Files' +# info -n '(gettext)Header Entry' +# +# Some information specific to po-debconf are available at +# /usr/share/doc/po-debconf/README-trans +# or http://www.debian.org/intl/l10n/po-debconf/README-trans +# +# Developers do not need to manually edit POT or PO files. +# +msgid "" +msgstr "" +"Project-Id-Version: AlternC 0.9.5\n" +"Report-Msgid-Bugs-To: alternc@packages.debian.org\n" +"POT-Creation-Date: 2011-06-04 10:33+0200\n" +"PO-Revision-Date: 2006-04-26 11:16+0200\n" +"Last-Translator: Benjamin Sonntag \n" +"Language-Team: Team AlternC \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-15\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: boolean +#. Description +#: ../templates:1001 +msgid "Do you REALLY want to install AlternC on this computer ?" +msgstr "Etes-vous CERTAIN de vouloir installer AlternC sur cet ordinateur ?" + +#. Type: boolean +#. Description +#: ../templates:1001 +msgid "" +"You are currently trying to install AlternC on your computer. Be aware that " +"this package will overwrite critical system files, including but not limited " +"to the config files of bind, postfix, courier, squirrelmail and proftpd." +msgstr "" +"Vous êtes en train d'installer AlternC sur cet ordinateur. Comprenez que ce " +"paquetage va écraser plusieurs fichiers de configuration critiques, " +"incluant, sans se limiter à: postfix, bind, courier, squirrelmail, proftpd " +"et php." + +#. Type: boolean +#. Description +#: ../templates:1001 +msgid "" +"A backup of your old configuration will be stored in \"/var/backups/alternc/" +"etc-original-`date`.tar.gz\"." +msgstr "" +"Une sauvegarde de votre ancienne configuration sera stockée dans /usr/lib/" +"alternc/backups/system.`date +%Y%m%d-%H%M`." + +#. Type: boolean +#. Description +#: ../templates:1001 +msgid "YOU HAVE BEEN WARNED." +msgstr "VOUS AVEZ ETE PREVENU !" + +#. Type: string +#. Description +#: ../templates:2001 +msgid "Fully qualified name of the desktop:" +msgstr "Nom de domaine du bureau :" + +#. Type: string +#. Description +#: ../templates:2001 +msgid "" +"Please enter the fully qualified name of your server. This will be the " +"domain part of the url you will use to access the virtual managment desktop. " +"This (sub)domain MUST point to your server." +msgstr "" +"Entrez le nom de domaine de votre serveur. Cela correspondra à l'url qu'il " +"faudra saisir pour accéder au panneau d'administration. Ce (sous)domaine " +"DOIT pointer vers votre serveur." + +#. Type: string +#. Description +#: ../templates:2001 +msgid "The default should be ok if your machine is correctly configured." +msgstr "" +"La valeur par défaut doit convenir si votre machine est correctement " +"configurée." + +#. Type: string +#. Description +#: ../templates:3001 +msgid "Name of your hosting service:" +msgstr "Nom de votre service d'hébergement :" + +#. Type: string +#. Description +#: ../templates:3001 +msgid "" +"Please enter the name of your hosting service. It may be your company's name " +"or your personnal name or whatever you want to ..." +msgstr "" +"Entrez le nom de votre service d'hébergement. Cela peut être le nom de votre " +"entreprise ou votre nom de famille, ou tout ce que vous voulez ..." + +#. Type: string +#. Description +#: ../templates:4001 +msgid "Name of the primary domain name server:" +msgstr "Nom de domaine du serveur de dns primaire :" + +#. Type: string +#. Description +#: ../templates:4001 +msgid "" +"Please enter the fully qualified name of your primary dns server. It can be " +"this server since bind is installed and configured by AlternC. Anyway, if " +"your hosting service is quite big, you may have an external primary name " +"server that keep in sync with your alternc's server(s). . The default value " +"should be good in most case." +msgstr "" +"Entrez le nom de domaine de votre serveur de dns primaire. Cela peut être " +"votre serveur puisque bind est installé et configuré par AlternC. Cependant, " +"si votre service d'hébergement est gros, vous pouvez dispoer d'un serveur " +"dns primaire externe synchronisé avec vos serveurs sous AlternC. La valeur " +"par défaut devrait convenir dans la plupart des cas." + +#. Type: string +#. Description +#: ../templates:5001 +msgid "Name of the secondary domain name server:" +msgstr "Nom de domaine du serveur de dns secondaire :" + +#. Type: string +#. Description +#: ../templates:5001 +msgid "" +"Please enter the fully qualified name of your secondary dns server. It can " +"be this server since bind is installed and configured by AlternC. Anyway, " +"you should have 2 separate DNS servers if you want to provide a high quality " +"hosting service." +msgstr "" +"Entrez le nom de domaine de votre serveur de dns secondaire. Cela peut être " +"votre serveur puisque bind est installé et configuré par AlternC. Cependant, " +"vous devriez avoir 2 DNS séparés et indépendants si vous voulez fournir un " +"hébergement de qualité." + +#. Type: string +#. Description +#: ../templates:5001 +msgid "" +"You may contact the AlternC's users mailing list if you want to exchange dns " +"service with other AlternC's users." +msgstr "" +"N'hésitez pas à contacter la liste de diffusion des utilisateurs d'AlternC " +"si vous souhaitez échanger des serveurs dns primaires / secondaires avec " +"d'autres." + +#. Type: string +#. Description +#: ../templates:6001 +msgid "Name of the mysql server:" +msgstr "Nom de domaine du serveur mysql :" + +#. Type: string +#. Description +#: ../templates:6001 +msgid "" +"Please enter the fully qualified name of your mysql server host. On small " +"systems, it IS \"localhost\" since you may have installed a local mysql " +"server. If you are a bigger hosting service, you may put your mysql service " +"on a remote synchronized ring or equivalent. In that case, please enter the " +"hostname of your mysql server. This server MUST be able to access the remote " +"server at standard port (3306). It is recommended to use \"127.0.0.1\" " +"instead of \"localhost\" if your postfix installation is configured in a " +"chroot (which is the case, by default)." +msgstr "" +"Entrez le nom de domaine de votre serveur mysql. Sur des petits systèmes, " +"mettez \"localhost\" car vous avez surement un serveur mysql local " +"d'installé. Si vous êtes un plus gros fournisseur d'hébergement, vous " +"pourriez mettre votre service mysql sur un réseau synchronisé de serveurs. " +"Dans ce cas, mettez le nom de domaine de votre mysql distant. Ce serveur " +"DOIT pouvoir accéder à votre mysql par le port standard (3306). Il est " +"recommendé d'utiliser \"127.0.0.1\" au lieu de \"localhost\" si votre " +"postfix est configuré en \"chroot\" (ce qui est le cas par défaut)." + +#. Type: string +#. Description +#: ../templates:7001 +msgid "AlternC's mysql system database:" +msgstr "Base système mysql d'AlternC : " + +#. Type: string +#. Description +#: ../templates:7001 +msgid "" +"AlternC will create a mysql database to store it's system data. Please " +"choose the name of this database here. The default value should be good in " +"most case." +msgstr "" +"AlternC va créer une base de données pour stocker ses informations. Entrez " +"le nom de la base qui sera créée. La valeur par défaut convient dans la " +"plupart des cas." + +#. Type: string +#. Description +#: ../templates:8001 +msgid "AlternC's mysql account:" +msgstr "Compte mysql d'AlternC : " + +#. Type: string +#. Description +#: ../templates:8001 +msgid "" +"AlternC will create a mysql administrator account. Please choose it's " +"username here. The default value should be good in most case." +msgstr "" +"AlternC va créer un compte administrateur sur le serveur mysql. Entrez le " +"nom d'utilisateur qui sera créé. La valeur par défaut convient dans la " +"plupart des cas." + +#. Type: password +#. Description +#: ../templates:9001 +msgid "Password of the AlternC's mysql account:" +msgstr "Mot de passe du compte mysql : " + +#. Type: password +#. Description +#: ../templates:9001 +msgid "" +"AlternC requires an administrator account on the mysql server. It will be " +"created automatically during the install process. Please choose a password " +"for this account." +msgstr "" +"Entrez le mot de passe mysql du compte qui va être créé automatiquement." + +#. Type: password +#. Description +#: ../templates:9001 +msgid "" +"Please choose a quite complex password since it will have full access to the " +"system database !!!" +msgstr "" +"Merci de choisir un mot de passe complexe, car ce compte aura un accès " +"complet à toute la base système !!!" + +#. Type: string +#. Description +#: ../templates:10001 +msgid "The server to GRANT permissions to:" +msgstr "Le serveur SQL à qui autoriser les permissions:" + +#. Type: string +#. Description +#: ../templates:10001 +msgid "" +"AlternC and MySQL can be installed on different servers. In order to have " +"GRANT table properly created and manipulated, this parameter must be set to " +"the hostname or IP the Apache server will appear as connecting from to the " +"MySQL server." +msgstr "" + +#. Type: select +#. Description +#: ../templates:11001 +msgid "The way backup rotation is executed" +msgstr "De quelle façon sont tournés les backups" + +#. Type: select +#. Description +#: ../templates:11001 +msgid "" +"AlternC enables users to configure their own backups, on demand, with " +"automatic rotation. This option determines how the backups are rotated." +msgstr "AlternC permet aux utilisateurs de configurer leurs propres backups, à la demande, avec rotation automatique. Cette option détermine la manière dont les backups sont tournés." + +#. Type: select +#. Description +#: ../templates:11001 +msgid "" +"rotate - backup.sql, backup.sql.0, backup.sql.1 date - backup.sql, backup." +"sql.20080709, backup.sql.20080708" +msgstr "" + +#. Type: select +#. Description +#: ../templates:12001 +msgid "Behavior of the backup script when it encounters a unmanaged file" +msgstr "Comportement du script de backup quand il rencontre un fichier non géré" + +#. Type: select +#. Description +#: ../templates:12001 +msgid "" +"The SQL backups can rename or overwrite existing files it doesn't know about " +"when doing backups. The default behavior is to skip those files and ignore " +"it." +msgstr "" +"Le script de backup SQL peut renommer ou écraser un fichier préexistant." +"Le comportement par défaut est de passer ces fichiers et de les ignorer." + +#. Type: string +#. Description +#: ../templates:13001 +msgid "The primary IP of this server:" +msgstr "l'adresse IP principale de ce serveur : " + +#. Type: string +#. Description +#: ../templates:13001 +msgid "" +"AlternC will default the A records for domains it hosts to this address. In " +"other words, this is the address everyone can reach to server at." +msgstr "" +"AlternC va donner cette adresse par défaut aux domaines qu'il héberge. " +"Autrement dit, c'est l'adresse à laquelle tout le monde peut contacter le " +"serveur." + +#. Type: string +#. Description +#: ../templates:14001 +msgid "The internal IP of this server:" +msgstr "L'adresse IP interne du serveur : " + +#. Type: string +#. Description +#: ../templates:14001 +msgid "" +"AlternC will configure Apache and other services to listen to this address. " +"This is usually the same as the primary IP of the server, unless the server " +"is sitting behind a NAT router." +msgstr "" +"AlternC va configurer Apache et d'autres services pour écouter sur cette " +"adresse. Normalement, cette adresse est la même que l'adresse principale du " +"serveur, à moins que le serveur soit derrière un router NAT." + +#. Type: string +#. Description +#: ../templates:14001 +msgid "In other words, this is the IP address of eth0." +msgstr "En d'autres mots, ceci est l'adresse assignée à eth0." + +#. Type: string +#. Description +#: ../templates:15001 +msgid "The default MX to assign to new domains:" +msgstr "le MX à assigner aux nouveaux domaines : " + +#. Type: string +#. Description +#: ../templates:15001 +msgid "" +"AlternC will assign this hostname as the MX record for all the domains it " +"hosts. It is usually better be left alone." +msgstr "" +"AlternC va assigner ce nom de domaine comme enregistrement MX pour tous les " +"domaines qu'il héberge." + +#. Type: string +#. Description +#: ../templates:16001 +msgid "The default Backup MX to assign to new domains:" +msgstr "le MX de secours à assigner aux nouveaux domaines : " + +#. Type: string +#. Description +#: ../templates:16001 +msgid "" +"AlternC will assign this hostname as the Backup MX record for all the " +"domains it hosts. Don't set it if you don't know what it is about." +msgstr "" +"AlternC va assigner ce nom de domaine comme enregistrement MX de secours pour tous les " +"domaines qu'il héberge. Si vous ne savez pas de quoi il s'agit, laissez ce champ vide." + +#. Type: string +#. Description +#: ../templates:17001 +msgid "The path where AlternC is installed:" +msgstr "Emplacement d'AlternC : " + +#. Type: string +#. Description +#: ../templates:17001 +msgid "" +"Please enter the partition name where alternc is installed. This is used " +"mainly for disk quotas." +msgstr "" +"Entrez le nom du chemin où AlternC est installé. Cela est nécessaire pour la " +"gestion des quotas d'espace disque." + +#. Type: string +#. Description +#: ../templates:17001 +msgid "Warning : Be careful ! It can generate some problems." +msgstr "Attention : Prenez garde ! Cela peut entraîner quelques problèmes." + +#. Type: string +#. Description +#: ../templates:18001 +msgid "The monitoring server:" +msgstr "serveur de surveillance : " + +#. Type: string +#. Description +#: ../templates:18001 +msgid "" +"The IP address (or ip/prefix) of the server(s) which must be authorized to " +"ping us and access apache status pages. Completely optional." +msgstr "" +"Adresse IP (ou ip/prefixe) du(des) serveur(s) dont qui pourront pinguer et " +"accéder au status apache (pour le monitoring de serveur). Facultatif." + +#. Type: note +#. Description +#: ../templates:19001 +msgid "POP Before SMTP deprecated" +msgstr "POP Before SMTP déprécié" + +#. Type: note +#. Description +#: ../templates:19001 +msgid "" +"AlternC doesn't automatically configure the pop-before-smtp package anymore, " +"since it is correctly configured for SASL authentification these days. If " +"you wish to configure pop-before-smtp, simply find the lines preceded by:" +msgstr "" +"AlternC ne configure plus automatiquement le package pop-before-smtp. Au " +"lieu de cela, il configure correctement l'authentification SASL. Pour " +"configurer pop-before-smtp, trouvez les lignes précédées par:" + +#. Type: note +#. Description +#: ../templates:19001 +msgid "# For Courier-POP3 and Courier-IMAP:" +msgstr "# For Courier-POP3 and Courier-IMAP:" + +#. Type: note +#. Description +#: ../templates:19001 +msgid "" +"in the /etc/pop-before-smtp/pop-before-smtp.conf and uncomment it. hash:/var/" +"lib/pop-before-smtp/hosts must also be added to the mynetworks directive of /" +"etc/postfix/main.cf" +msgstr "" +"dans le fichier /etc/pop-before-smtp/pop-before-smtp.conf et commentez-les. " +"La chaîne hash:/var/lib/pop-before-smtp/hosts doit aussi être ajoutée à la " +"directive mynetworks dans /etc/postfix/main.cf." + +#. Type: boolean +#. Description +#: ../templates:20001 +msgid "Should AlternC remove all databases (/var/lib/mysql/) ?" +msgstr "Les bases de données doivent elles être supprimés (/var/lib/mysql) ?" + +#. Type: boolean +#. Description +#: ../templates:20001 +msgid "All users databases will be trashed" +msgstr "Toutes les bases de données des utilisateurs seront perdues" + +#. Type: boolean +#. Description +#: ../templates:21001 +msgid "Should AlternC remove users datas ?" +msgstr "Les données des utilisateurs doivent elles êtres supprimés ?" + +#. Type: boolean +#. Description +#: ../templates:21001 +msgid "The files and apache redirections created by users will be trashed" +msgstr "" +"Les fichiers et les redirections d'apache créés par les utilisateurs seront " +"perdus" + +#. Type: boolean +#. Description +#: ../templates:22001 +msgid "Should AlternC remove bind zones ?" +msgstr "Les zones de bind doivent elles être supprimées ?" + +#. Type: boolean +#. Description +#: ../templates:22001 +msgid "It will delete all bind zones created by AlternC" +msgstr "Cela supprimera toutes les zone de bind créées par AlternC" + +#. Type: boolean +#. Description +#: ../templates:23001 +msgid "Should AlternC remove mailboxes ?" +msgstr "Les boites mails doivent elles être supprimées ?" + +#. Type: boolean +#. Description +#: ../templates:23001 +msgid "If you accept all users e-mails will be deleted" +msgstr "" +"Si vous acceptez, toutes les e-mails des utilisateurs seront supprimées" + +#. Type: string +#. Description +#: ../templates:24001 +msgid "Slave servers" +msgstr "Serveurs esclaves" + +#. Type: string +#. Description +#: ../templates:24001 +msgid "" +"This is a space-separated list of servers that are \"slaves\" to the master " +"server (this server). When writing apache configuration files, the master " +"server will attempt to reload apache on those remote servers. The alternc-" +"slave package correctly configures those machines to allow login and reload." +msgstr "" +"Entre une liste séparée par des espaces des serveurs 'esclaves' du serveur " +"maître (qui est ce serveur). Lors de l'écriture de la configuration " +"d'Apache, ce maître tentera de recharger apache sur les serveurs distants. " +"le package alternc-slave configure ces machines comme il faut pour permettre " +"la connexion distante et le rechargement d'apache. " + +#~ msgid "trusted servers for bind:" +#~ msgstr "serveurs de confiance pour bind : " + +#~ msgid "" +#~ "IP address or prefix of trusted machines for DNS transfers, delimited by " +#~ "';', optional." +#~ msgstr "" +#~ "Adresse IP ou classe d'IP des machines autorisées à utiliser le serveur " +#~ "DNS, séparées par ';', facultatif." + +#~ msgid "SMTP authorized networks:" +#~ msgstr "réseaux autorisés en SMTP : " + +#~ msgid "IP addresses of the networks authorized in SMTP, space-delimited." +#~ msgstr "" +#~ "Adresses ip des reseaux autorisés en SMTP (ou ip/prefixe) séparés par " +#~ "espace." + +#~ msgid "" +#~ "If you still want to proceed with this installation, choose YES here, " +#~ "otherwise choose NO." +#~ msgstr "" +#~ "Si vous savez ce que vous faites, choisissez OUI, sinon, choisissez NON." diff --git a/stable-1.0/debian/po/templates.pot b/stable-1.0/debian/po/templates.pot new file mode 100644 index 00000000..bfca4fed --- /dev/null +++ b/stable-1.0/debian/po/templates.pot @@ -0,0 +1,439 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: alternc@packages.debian.org\n" +"POT-Creation-Date: 2011-06-04 11:34+0200\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#. Type: boolean +#. Description +#: ../templates:1001 +msgid "Do you REALLY want to install AlternC on this computer ?" +msgstr "" + +#. Type: boolean +#. Description +#: ../templates:1001 +msgid "" +"You are currently trying to install AlternC on your computer. Be aware that " +"this package will overwrite critical system files, including but not limited " +"to the config files of bind, postfix, courier, squirrelmail and proftpd." +msgstr "" + +#. Type: boolean +#. Description +#: ../templates:1001 +msgid "" +"A backup of your old configuration will be stored in \"/var/backups/alternc/" +"etc-original-`date`.tar.gz\"." +msgstr "" + +#. Type: boolean +#. Description +#: ../templates:1001 +msgid "YOU HAVE BEEN WARNED." +msgstr "" + +#. Type: string +#. Description +#: ../templates:2001 +msgid "Fully qualified name of the desktop:" +msgstr "" + +#. Type: string +#. Description +#: ../templates:2001 +msgid "" +"Please enter the fully qualified name of your server. This will be the " +"domain part of the url you will use to access the virtual managment desktop. " +"This (sub)domain MUST point to your server." +msgstr "" + +#. Type: string +#. Description +#: ../templates:2001 +msgid "The default should be ok if your machine is correctly configured." +msgstr "" + +#. Type: string +#. Description +#: ../templates:3001 +msgid "Name of your hosting service:" +msgstr "" + +#. Type: string +#. Description +#: ../templates:3001 +msgid "" +"Please enter the name of your hosting service. It may be your company's name " +"or your personnal name or whatever you want to ..." +msgstr "" + +#. Type: string +#. Description +#: ../templates:4001 +msgid "Name of the primary domain name server:" +msgstr "" + +#. Type: string +#. Description +#: ../templates:4001 +msgid "" +"Please enter the fully qualified name of your primary dns server. It can be " +"this server since bind is installed and configured by AlternC. Anyway, if " +"your hosting service is quite big, you may have an external primary name " +"server that keep in sync with your alternc's server(s). . The default value " +"should be good in most case." +msgstr "" + +#. Type: string +#. Description +#: ../templates:5001 +msgid "Name of the secondary domain name server:" +msgstr "" + +#. Type: string +#. Description +#: ../templates:5001 +msgid "" +"Please enter the fully qualified name of your secondary dns server. It can " +"be this server since bind is installed and configured by AlternC. Anyway, " +"you should have 2 separate DNS servers if you want to provide a high quality " +"hosting service." +msgstr "" + +#. Type: string +#. Description +#: ../templates:5001 +msgid "" +"You may contact the AlternC's users mailing list if you want to exchange dns " +"service with other AlternC's users." +msgstr "" + +#. Type: string +#. Description +#: ../templates:6001 +msgid "Name of the mysql server:" +msgstr "" + +#. Type: string +#. Description +#: ../templates:6001 +msgid "" +"Please enter the fully qualified name of your mysql server host. On small " +"systems, it IS \"localhost\" since you may have installed a local mysql " +"server. If you are a bigger hosting service, you may put your mysql service " +"on a remote synchronized ring or equivalent. In that case, please enter the " +"hostname of your mysql server. This server MUST be able to access the remote " +"server at standard port (3306). It is recommended to use \"127.0.0.1\" " +"instead of \"localhost\" if your postfix installation is configured in a " +"chroot (which is the case, by default)." +msgstr "" + +#. Type: string +#. Description +#: ../templates:7001 +msgid "AlternC's mysql system database:" +msgstr "" + +#. Type: string +#. Description +#: ../templates:7001 +msgid "" +"AlternC will create a mysql database to store it's system data. Please " +"choose the name of this database here. The default value should be good in " +"most case." +msgstr "" + +#. Type: string +#. Description +#: ../templates:8001 +msgid "AlternC's mysql account:" +msgstr "" + +#. Type: string +#. Description +#: ../templates:8001 +msgid "" +"AlternC will create a mysql administrator account. Please choose it's " +"username here. The default value should be good in most case." +msgstr "" + +#. Type: password +#. Description +#: ../templates:9001 +msgid "Password of the AlternC's mysql account:" +msgstr "" + +#. Type: password +#. Description +#: ../templates:9001 +msgid "" +"AlternC requires an administrator account on the mysql server. It will be " +"created automatically during the install process. Please choose a password " +"for this account." +msgstr "" + +#. Type: password +#. Description +#: ../templates:9001 +msgid "" +"Please choose a quite complex password since it will have full access to the " +"system database !!!" +msgstr "" + +#. Type: string +#. Description +#: ../templates:10001 +msgid "The server to GRANT permissions to:" +msgstr "" + +#. Type: string +#. Description +#: ../templates:10001 +msgid "" +"AlternC and MySQL can be installed on different servers. In order to have " +"GRANT table properly created and manipulated, this parameter must be set to " +"the hostname or IP the Apache server will appear as connecting from to the " +"MySQL server." +msgstr "" + +#. Type: select +#. Description +#: ../templates:11001 +msgid "The way backup rotation is executed" +msgstr "" + +#. Type: select +#. Description +#: ../templates:11001 +msgid "" +"AlternC enables users to configure their own backups, on demand, with " +"automatic rotation. This option determines how the backups are rotated." +msgstr "" + +#. Type: select +#. Description +#: ../templates:11001 +msgid "" +"rotate - backup.sql, backup.sql.0, backup.sql.1 date - backup.sql, backup." +"sql.20080709, backup.sql.20080708" +msgstr "" + +#. Type: select +#. Description +#: ../templates:12001 +msgid "Behavior of the backup script when it encounters a unmanaged file" +msgstr "" + +#. Type: select +#. Description +#: ../templates:12001 +msgid "" +"The SQL backups can rename or overwrite existing files it doesn't know about " +"when doing backups. The default behavior is to skip those files and ignore " +"it." +msgstr "" + +#. Type: string +#. Description +#: ../templates:13001 +msgid "The primary IP of this server:" +msgstr "" + +#. Type: string +#. Description +#: ../templates:13001 +msgid "" +"AlternC will default the A records for domains it hosts to this address. In " +"other words, this is the address everyone can reach to server at." +msgstr "" + +#. Type: string +#. Description +#: ../templates:14001 +msgid "The internal IP of this server:" +msgstr "" + +#. Type: string +#. Description +#: ../templates:14001 +msgid "" +"AlternC will configure Apache and other services to listen to this address. " +"This is usually the same as the primary IP of the server, unless the server " +"is sitting behind a NAT router." +msgstr "" + +#. Type: string +#. Description +#: ../templates:14001 +msgid "In other words, this is the IP address of eth0." +msgstr "" + +#. Type: string +#. Description +#: ../templates:15001 +msgid "The default MX to assign to new domains:" +msgstr "" + +#. Type: string +#. Description +#: ../templates:15001 +msgid "" +"AlternC will assign this hostname as the MX record for all the domains it " +"hosts. It is usually better be left alone." +msgstr "" + +#. Type: string +#. Description +#: ../templates:16001 +msgid "The default Backup MX to assign to new domains:" +msgstr "" + +#. Type: string +#. Description +#: ../templates:16001 +msgid "" +"AlternC will assign this hostname as the Backup MX record for all the " +"domains it hosts. Don't set it if you don't know what it is about." +msgstr "" + +#. Type: string +#. Description +#: ../templates:17001 +msgid "The path where AlternC is installed:" +msgstr "" + +#. Type: string +#. Description +#: ../templates:17001 +msgid "" +"Please enter the partition name where alternc is installed. This is used " +"mainly for disk quotas." +msgstr "" + +#. Type: string +#. Description +#: ../templates:17001 +msgid "Warning : Be careful ! It can generate some problems." +msgstr "" + +#. Type: string +#. Description +#: ../templates:18001 +msgid "The monitoring server:" +msgstr "" + +#. Type: string +#. Description +#: ../templates:18001 +msgid "" +"The IP address (or ip/prefix) of the server(s) which must be authorized to " +"ping us and access apache status pages. Completely optional." +msgstr "" + +#. Type: note +#. Description +#: ../templates:19001 +msgid "POP Before SMTP deprecated" +msgstr "" + +#. Type: note +#. Description +#: ../templates:19001 +msgid "" +"AlternC doesn't automatically configure the pop-before-smtp package anymore, " +"since it is correctly configured for SASL authentification these days. If " +"you wish to configure pop-before-smtp, simply find the lines preceded by:" +msgstr "" + +#. Type: note +#. Description +#: ../templates:19001 +msgid "# For Courier-POP3 and Courier-IMAP:" +msgstr "" + +#. Type: note +#. Description +#: ../templates:19001 +msgid "" +"in the /etc/pop-before-smtp/pop-before-smtp.conf and uncomment it. hash:/var/" +"lib/pop-before-smtp/hosts must also be added to the mynetworks directive of /" +"etc/postfix/main.cf" +msgstr "" + +#. Type: boolean +#. Description +#: ../templates:20001 +msgid "Should AlternC remove all databases (/var/lib/mysql/) ?" +msgstr "" + +#. Type: boolean +#. Description +#: ../templates:20001 +msgid "All users databases will be trashed" +msgstr "" + +#. Type: boolean +#. Description +#: ../templates:21001 +msgid "Should AlternC remove users datas ?" +msgstr "" + +#. Type: boolean +#. Description +#: ../templates:21001 +msgid "The files and apache redirections created by users will be trashed" +msgstr "" + +#. Type: boolean +#. Description +#: ../templates:22001 +msgid "Should AlternC remove bind zones ?" +msgstr "" + +#. Type: boolean +#. Description +#: ../templates:22001 +msgid "It will delete all bind zones created by AlternC" +msgstr "" + +#. Type: boolean +#. Description +#: ../templates:23001 +msgid "Should AlternC remove mailboxes ?" +msgstr "" + +#. Type: boolean +#. Description +#: ../templates:23001 +msgid "If you accept all users e-mails will be deleted" +msgstr "" + +#. Type: string +#. Description +#: ../templates:24001 +msgid "Slave servers" +msgstr "" + +#. Type: string +#. Description +#: ../templates:24001 +msgid "" +"This is a space-separated list of servers that are \"slaves\" to the master " +"server (this server). When writing apache configuration files, the master " +"server will attempt to reload apache on those remote servers. The alternc-" +"slave package correctly configures those machines to allow login and reload." +msgstr "" diff --git a/stable-1.0/debian/rules b/stable-1.0/debian/rules new file mode 100755 index 00000000..19a5386e --- /dev/null +++ b/stable-1.0/debian/rules @@ -0,0 +1,149 @@ +#!/usr/bin/make -f +# Sample debian/rules that uses debhelper. +# This file is public domain software, originally written by Joey Hess. +# +# This version is for a multibinary package. It also allows you to build any +# of the binary packages independantly, via binary- targets. + +# Uncomment this to turn on verbose mode. +export DH_VERBOSE=1 +MAJOR=$(shell sed -ne 's/^[^(]*(\([^)]*\)).*/\1/;1p' debian/changelog) +REV=$(shell svn up > /dev/null ; env LANG=C svn info --non-interactive | awk '/^Revision:/ { print $$2 }') +VERSION="${MAJOR}~svn${REV}" +export VERSION + +ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS))) + CFLAGS += -g +endif +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS))) + INSTALL_PROGRAM += -s +endif + +# This has to be exported to make some magic below work. +export DH_OPTIONS + +build: build-stamp +build-stamp: + dh_testdir + /usr/bin/msgfmt po/fr/LC_MESSAGES/alternc-admintools.po -o po/fr/LC_MESSAGES/alternc-admintools.mo + touch build-stamp + +clean: + dh_testdir + dh_testroot + rm -f build-stamp + debconf-updatepo + dh_prep + +install: DH_OPTIONS= +install: build + dh_testdir + dh_testroot + dh_clean -k + dh_installdirs + + # Install + cp -r etc/* debian/alternc/etc + cp -r install/* debian/alternc/usr/share/alternc/install + cp -r bureau/* debian/alternc/var/alternc/bureau + (cd src && $(MAKE) install DESTDIR=$(CURDIR)/debian/alternc) + + # we don't use the full VERSION intepreted but only what's in the changelog + sed -i -e "s/@@REPLACED_DURING_BUILD@@/${MAJOR}/" debian/alternc/var/alternc/bureau/class/local.php + + # Fix permisions + chmod 755 debian/alternc/etc/alternc + chmod 644 debian/alternc/etc/alternc/phpmyadmin.inc.php + chown -R root:www-data debian/alternc/var/alternc/bureau + chmod 1733 debian/alternc/var/alternc/sessions + chmod -R 644 debian/alternc/var/alternc/bureau + chmod -R a+X debian/alternc/var/alternc/bureau + chown -R www-data:www-data debian/alternc/var/alternc/html debian/alternc/var/run/alternc debian/alternc/var/log/alternc debian/alternc/var/alternc/tmp + chmod a+x debian/alternc/usr/share/alternc/install/alternc.install debian/alternc/usr/share/alternc/install/dopo.sh debian/alternc/usr/share/alternc/install/mysql.sh debian/alternc/usr/share/alternc/install/newone.php debian/alternc/usr/share/alternc/install/reset_root.php debian/alternc/usr/share/alternc/install/upgrade_check.sh debian/alternc/usr/share/alternc/install/upgrades/*.php debian/alternc/usr/share/alternc/install/upgrades/*.sh + + for sub in mail html ; do \ + for i in a b c d e f g h i j k l m n o p q r s t u v w x y z _ 0 1 2 3 4 5 6 7 8 9; do \ + mkdir -p debian/alternc/var/alternc/${sub}/${i} ;\ + chown www-data debian/alternc/var/alternc/${sub}/${i} ;\ + done ;\ + done + + # Ex old alternc-admintools + install tools/top_http_users debian/alternc/usr/bin + install tools/top_mysql_users debian/alternc/usr/bin + install tools/top_ftp_users debian/alternc/usr/bin + install tools/get_domains_by_account debian/alternc/usr/bin + install tools/get_account_by_domain debian/alternc/usr/bin + install tools/alternc_get_path debian/alternc/usr/bin + install src/alternc_reload debian/alternc/usr/bin + install -m 644 po/fr/LC_MESSAGES/alternc-admintools.mo debian/alternc/usr/share/locale/fr/LC_MESSAGES/ + + # Remove helpers files from l18n dir + find debian/alternc/var/alternc/bureau/locales/ \ + -maxdepth 1 -type f -exec rm -f {} \; + # Remove CVS directories + /usr/bin/find debian/alternc -depth -type d -name CVS -exec rm {} -rf \; + /usr/bin/find debian/alternc -depth -type d -name .svn -exec rm {} -rf \; + cp debian/alternc.lintian debian/alternc/usr/share/lintian/overrides/alternc + cp debian/alternc-slave.lintian debian/alternc/usr/share/lintian/overrides/alternc-slave + +# This single target is used to build all the packages, all at once, or +# one at a time. So keep in mind: any options passed to commands here will +# affect _all_ packages. Anything you want to only affect one package +# should be put in another target, such as the install target. + +binary-common: build install + dh_testdir + dh_testroot + dh_installchangelogs + dh_installdocs +# dh_installexamples +# dh_installmenu + dh_installdebconf + dh_installlogrotate +# dh_installemacsen +# dh_installpam +# dh_installmime +# dh_installinit + dh_installman man/* + dh_installcron +# dh_installinfo + dh_install -i --sourcedir=$(CURDIR)/debian/alternc + dh_strip + dh_link + dh_compress +#we handle our own perms +# dh_fixperms +# dh_makeshlibs + dh_installdeb + dh_perl + dh_shlibdeps + dh_gencontrol -- -cdebian/control + dh_md5sums + dh_builddeb + +# Build architecture independant packages using the common target. +binary-indep: build install binary-common +# (Uncomment this next line if you have such packages.) +# $(MAKE) -f debian/rules DH_OPTIONS=-i binary-common + +# Build architecture dependant packages using the common target. +binary-arch: build install binary-common +# $(MAKE) -f debian/rules DH_OPTIONS=-a binary-common + +# Any other binary targets build just one binary package at a time. +# binary-%: build install +# make -f debian/rules binary-common DH_OPTIONS=-p$* + +# binary: binary-indep binary-arch +# .PHONY: build clean binary-indep binary-arch binary install + +binary: binary-common + +.PHONY: build clean binary install + +build-snapshot: + @echo "building a package based on the current snapshot (${VERSION})" + svn update || true + svn export . ../alternc-${VERSION} + cd ../alternc-${VERSION} && sed -i -e '1s/)/~svn${REV})/' debian/changelog && debuild diff --git a/stable-1.0/debian/templates b/stable-1.0/debian/templates new file mode 100644 index 00000000..2a56fff6 --- /dev/null +++ b/stable-1.0/debian/templates @@ -0,0 +1,192 @@ +Template: alternc/welcomeconfirm +Type: boolean +Default: true +_Description: Do you REALLY want to install AlternC on this computer ? + You are currently trying to install AlternC on your computer. Be aware + that this package will overwrite critical system files, including but not + limited to the config files of bind, postfix, courier, squirrelmail and proftpd. + . + A backup of your old configuration will be stored in + "/var/backups/alternc/etc-original-`date`.tar.gz". + . + YOU HAVE BEEN WARNED. + +Template: alternc/desktopname +Type: string +_Description: Fully qualified name of the desktop: + Please enter the fully qualified name of your server. This will be the + domain part of the url you will use to access the virtual managment + desktop. This (sub)domain MUST point to your server. + . + The default should be ok if your machine is correctly configured. + +Template: alternc/hostingname +Type: string +_Description: Name of your hosting service: + Please enter the name of your hosting service. It may be your company's + name or your personnal name or whatever you want to ... + +Template: alternc/ns1 +Type: string +_Description: Name of the primary domain name server: + Please enter the fully qualified name of your primary dns server. It can + be this server since bind is installed and configured by AlternC. Anyway, + if your hosting service is quite big, you may have an external primary + name server that keep in sync with your alternc's server(s). . The default + value should be good in most case. + +Template: alternc/ns2 +Type: string +_Description: Name of the secondary domain name server: + Please enter the fully qualified name of your secondary dns server. It can + be this server since bind is installed and configured by AlternC. Anyway, + you should have 2 separate DNS servers if you want to provide a high + quality hosting service. + . + You may contact the AlternC's users mailing list if you want to exchange + dns service with other AlternC's users. + +Template: alternc/mysql/host +Type: string +_Description: Name of the mysql server: + Please enter the fully qualified name of your mysql server host. On small + systems, it IS "localhost" since you may have installed a local mysql + server. If you are a bigger hosting service, you may put your mysql + service on a remote synchronized ring or equivalent. In that case, please + enter the hostname of your mysql server. This server MUST be able to + access the remote server at standard port (3306). It is recommended to use + "127.0.0.1" instead of "localhost" if your postfix installation is + configured in a chroot (which is the case, by default). + +Template: alternc/mysql/db +Type: string +_Description: AlternC's mysql system database: + AlternC will create a mysql database to store it's system data. Please + choose the name of this database here. The default value should be good in + most case. + +Template: alternc/mysql/user +Type: string +_Description: AlternC's mysql account: + AlternC will create a mysql administrator account. Please choose it's + username here. The default value should be good in most case. + +Template: alternc/mysql/password +Type: password +_Description: Password of the AlternC's mysql account: + AlternC requires an administrator account on the mysql server. It will be + created automatically during the install process. Please choose a password + for this account. + . + Please choose a quite complex password since it will have full access to + the system database !!! + +Template: alternc/mysql/client +Type: string +_Description: The server to GRANT permissions to: + AlternC and MySQL can be installed on different servers. In order to have + GRANT table properly created and manipulated, this parameter must be set + to the hostname or IP the Apache server will appear as connecting from to + the MySQL server. + +Template: alternc/sql/backup_type +Type: select +Choices: rotate, date +_Description: The way backup rotation is executed + AlternC enables users to configure their own backups, on demand, with + automatic rotation. This option determines how the backups are rotated. + . + rotate - backup.sql, backup.sql.0, backup.sql.1 + date - backup.sql, backup.sql.20080709, backup.sql.20080708 + +Template: alternc/sql/backup_overwrite +Type: select +Choices: no, rename, overwrite +_Description: Behavior of the backup script when it encounters a unmanaged file + The SQL backups can rename or overwrite existing files it doesn't know + about when doing backups. The default behavior is to skip those files + and ignore it. + +Template: alternc/public_ip +Type: string +_Description: The primary IP of this server: + AlternC will default the A records for domains it hosts to this address. In + other words, this is the address everyone can reach to server at. + +Template: alternc/internal_ip +Type: string +_Description: The internal IP of this server: + AlternC will configure Apache and other services to listen to this + address. This is usually the same as the primary IP of the server, unless + the server is sitting behind a NAT router. + . + In other words, this is the IP address of eth0. + +Template: alternc/default_mx +Type: string +_Description: The default MX to assign to new domains: + AlternC will assign this hostname as the MX record for all + the domains it hosts. It is usually better be left alone. + +Template: alternc/default_mx2 +Type: string +_Description: The default Backup MX to assign to new domains: + AlternC will assign this hostname as the Backup MX record for all + the domains it hosts. Don't set it if you don't know what it is about. + +Template: alternc/alternc_location +Type: string +_Description: The path where AlternC is installed: + Please enter the partition name where alternc is installed. This is used + mainly for disk quotas. + . + Warning : Be careful ! It can generate some problems. + +Template: alternc/monitor_ip +Type: string +_Description: The monitoring server: + The IP address (or ip/prefix) of the server(s) which must be authorized to + ping us and access apache status pages. Completely optional. + +Template: alternc/pop_before_smtp_warning +Type: note +_Description: POP Before SMTP deprecated + AlternC doesn't automatically configure the pop-before-smtp package + anymore, since it is correctly configured for SASL authentification these + days. If you wish to configure pop-before-smtp, simply find the lines + preceded by: + . + # For Courier-POP3 and Courier-IMAP: + . + in the /etc/pop-before-smtp/pop-before-smtp.conf and uncomment it. + hash:/var/lib/pop-before-smtp/hosts must also be added to the mynetworks + directive of /etc/postfix/main.cf + +Template: alternc/postrm_remove_databases +Type: boolean +_Description: Should AlternC remove all databases (/var/lib/mysql/) ? + All users databases will be trashed + +Template: alternc/postrm_remove_datafiles +Type: boolean +_Description: Should AlternC remove users datas ? + The files and apache redirections created by users will be trashed + +Template: alternc/postrm_remove_bind +Type: boolean +_Description: Should AlternC remove bind zones ? + It will delete all bind zones created by AlternC + +Template: alternc/postrm_remove_mailboxes +Type: boolean +_Description: Should AlternC remove mailboxes ? + If you accept all users e-mails will be deleted + +Template: alternc/slaves +Type: string +_Description: Slave servers + This is a space-separated list of servers that are "slaves" to the + master server (this server). When writing apache configuration files, + the master server will attempt to reload apache on those remote + servers. The alternc-slave package correctly configures those machines + to allow login and reload. diff --git a/stable-1.0/etc/alternc/alternc.ini b/stable-1.0/etc/alternc/alternc.ini new file mode 100644 index 00000000..5ffc76ef --- /dev/null +++ b/stable-1.0/etc/alternc/alternc.ini @@ -0,0 +1,2 @@ +; alternc-slave specific configuration for shared sessions +session.save_path = /var/alternc/sessions diff --git a/stable-1.0/etc/alternc/apache2-ssl.conf b/stable-1.0/etc/alternc/apache2-ssl.conf new file mode 100644 index 00000000..36645f7a --- /dev/null +++ b/stable-1.0/etc/alternc/apache2-ssl.conf @@ -0,0 +1,10 @@ + + + Include /etc/alternc/bureau.conf + + SSLEngine on + SSLCertificateFile /etc/alternc/apache.pem + SSLCaCertificatePath /etc/ssl/certs + + + diff --git a/stable-1.0/etc/alternc/apache2.conf b/stable-1.0/etc/alternc/apache2.conf new file mode 100644 index 00000000..0b15bb82 --- /dev/null +++ b/stable-1.0/etc/alternc/apache2.conf @@ -0,0 +1,71 @@ +# This module is loaded in /etc/apache/modules, and enabled by apache-modconf +# LoadModule vhost_alias_module /usr/lib/apache/1.3/mod_vhost_alias.so + +ScriptAlias /cgi-bin/ /var/alternc/cgi-bin/ + +# Deny access to the root filesystem + + Options FollowSymLinks + AllowOverride None + Order allow,deny + Deny from all + +#### End security parameters + + + Options FollowSymLinks IncludesNOEXEC ExecCGI + AllowOverride None + Order allow,deny + Allow from all + AddHandler cgi-script .cgi + + + + Order allow,deny + Allow from all + + php_admin_flag safe_mode_gid off + php_admin_flag safe_mode off + php_admin_flag register_globals on + AddDefaultCharset UTF-8 +# modules such as mailman or awstats needs to write into other folders, we have to remove this : +# php_admin_value open_basedir /etc/alternc/:/var/run/alternc/:/var/alternc/bureau/:/var/alternc/html/:/var/alternc/tmp:/tmp:/usr/share/php/:/var/cache/alternc-webalizer/:/etc/locale.gen + + + + + + AllowOverride AuthConfig FileInfo Limit Options Indexes + Options Indexes Includes -FollowSymLinks MultiViews SymLinksIfOwnerMatch + Order allow,deny + Allow from all + php_admin_flag safe_mode_gid on + php_admin_flag safe_mode on + php_admin_value disable_functions chmod,chown,chgrp,link,symlink + php_admin_value safe_mode_exec_dir /var/alternc/exec.usr + php_admin_value disable_functions chgrp,link,symlink + + php_admin_flag enable_dl off + php_admin_value upload_tmp_dir /var/alternc/tmp + php_admin_value sendmail_path /usr/lib/alternc/sendmail + + + + AllowOverride AuthConfig Options FileInfo Limit Indexes + Options Indexes Includes FollowSymLinks MultiViews + Order allow,deny + Allow from all + + + AllowOverride AuthConfig Options FileInfo Limit Indexes + Options Indexes Includes FollowSymLinks MultiViews + Order allow,deny + Allow from all + + + + Include /etc/alternc/bureau.conf + + + +Include /var/alternc/apache-vhost/vhosts_all.conf diff --git a/stable-1.0/etc/alternc/functions_hosting/hosting_massvhost.sh b/stable-1.0/etc/alternc/functions_hosting/hosting_massvhost.sh new file mode 100755 index 00000000..2a59ce81 --- /dev/null +++ b/stable-1.0/etc/alternc/functions_hosting/hosting_massvhost.sh @@ -0,0 +1,56 @@ +#!/bin/bash + +ACTION=$1 +# $2 is the type +DOMAIN=$3 +TARGET=$4 + +# Load some librairies +. /etc/alternc/local.sh +. /usr/lib/alternc/functions.sh + +# To not be case-sensitive +ACTION="`echo $ACTION|tr '[:upper:]' '[:lower:]'`" +DOMAIN="`echo $DOMAIN|tr '[:upper:]' '[:lower:]'`" + +if [ -z $ACTION ] || [ -z $DOMAIN ] ; then + echo "Need at least 2 parameters ( action - fqdn )" +fi + +YOP="$ALTERNC_LOC/dns/$(print_domain_letter $DOMAIN)/$DOMAIN" + +case $ACTION in +"disable"|"delete") + if [ ! -e "$YOP" ] ; then + echo "Link do not exist. Nothing done" + exit 15 + fi + if [ ! -L "$YOP" ] ; then + echo "Seem not to be a link ($YOP). Abord" + exit 16 + fi + rm -f "$YOP" + ;; +"enable"|"create") + if [ -z "$TARGET" ] ; then + echo "Parameters target $TARGET missing" + exit 13 + fi + USER=$(get_account_by_domain "$DOMAIN") + if [ -z $USER ] ; then + echo "Unable to find account of $DOMAIN" + exit 17 + fi + TARGET="$ALTERNC_LOC/html/$(print_user_letter $USER)/$USER/$TARGET" + if [ ! -d "$TARGET" ] ; then + echo "Directory $TARGET missing" + exit 14 + fi + ln -snf "$TARGET" "$YOP" + ;; +*) + echo Error : $ACTION not an recognised action + exit 11 + ;; +esac + diff --git a/stable-1.0/etc/alternc/menulist.txt b/stable-1.0/etc/alternc/menulist.txt new file mode 100644 index 00000000..1efa9cc1 --- /dev/null +++ b/stable-1.0/etc/alternc/menulist.txt @@ -0,0 +1,12 @@ +menu_adm.php +menu_dom.php +menu_mail.php +menu_brouteur.php +menu_web.php +menu_ftp.php +menu_sta2.php +menu_sql.php +menu_quota.php +menu_aide.php +menu_lang.php +menu_mem.php diff --git a/stable-1.0/etc/alternc/phpmyadmin.inc.php b/stable-1.0/etc/alternc/phpmyadmin.inc.php new file mode 100644 index 00000000..5efc1df8 --- /dev/null +++ b/stable-1.0/etc/alternc/phpmyadmin.inc.php @@ -0,0 +1,35 @@ + diff --git a/stable-1.0/etc/alternc/postfix-slave.cf b/stable-1.0/etc/alternc/postfix-slave.cf new file mode 100644 index 00000000..76359407 --- /dev/null +++ b/stable-1.0/etc/alternc/postfix-slave.cf @@ -0,0 +1,36 @@ +home_mailbox = Maildir/ +smtpd_banner = $myhostname ESMTP +header_checks = regexp:/etc/postfix/header_checks +body_checks = regexp:/etc/postfix/body_checks +local_destination_concurrency_limit = 8 +default_destination_concurrency_limit = 10 +smtpd_use_tls = yes +smtpd_tls_dcert_file = /etc/courier/pop3d.pem +smtpd_tls_dkey_file = $smtpd_tls_dcert_file +smtpd_tls_CApath = /etc/ssl/certs/ +smtpd_tls_key_file = $smtpd_tls_dcert_file +smtpd_tls_cert_file = $smtpd_tls_dcert_file +smtpd_tls_loglevel = 0 +smtpd_tls_received_header = yes +smtpd_tls_session_cache_timeout = 3600s +smtp_use_tls = yes +smtp_tls_dcert_file = $smtpd_tls_dcert_file +smtp_tls_dkey_file = $smtpd_tls_dcert_file +smtp_tls_CApath = $smtpd_tls_CApath +smtpd_tls_auth_only = yes +smtpd_sasl_auth_enable = yes +smtpd_sasl_local_domain = postfix +smtpd_sasl_security_options = noanonymous +enable_sasl_authentification = yes +broken_sasl_auth_clients = yes +alias_maps = hash:/etc/aliases +virtual_maps = +virtual_mailbox_maps = +virtual_mailbox_base = +virtual_gid_maps = +virtual_uid_maps = +default_privs = nobody +transport_maps=proxy:mysql:/etc/postfix/myrelay.cf +relay_domains=proxy:mysql:/etc/postfix/myrelay.cf +relay_recipients_map=proxy:mysql:/etc/postfix/myvirtual.cf +smtpd_recipient_restrictions = reject_unlisted_recipient, permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_recipient, reject_unauth_destination, check_policy_service inet:127.0.0.1:60000, reject_rbl_client zen.spamhaus.org diff --git a/stable-1.0/etc/alternc/postfix.cf b/stable-1.0/etc/alternc/postfix.cf new file mode 100644 index 00000000..7abe2257 --- /dev/null +++ b/stable-1.0/etc/alternc/postfix.cf @@ -0,0 +1,34 @@ +home_mailbox = Maildir/ +smtpd_banner = $myhostname ESMTP +header_checks = regexp:/etc/postfix/header_checks +body_checks = regexp:/etc/postfix/body_checks +local_destination_concurrency_limit = 8 +default_destination_concurrency_limit = 10 +smtpd_use_tls = yes +smtpd_tls_dcert_file = /etc/courier/pop3d.pem +smtpd_tls_dkey_file = $smtpd_tls_dcert_file +smtpd_tls_CApath = /etc/ssl/certs/ +smtpd_tls_key_file = $smtpd_tls_dcert_file +smtpd_tls_cert_file = $smtpd_tls_dcert_file +smtpd_tls_loglevel = 0 +smtpd_tls_received_header = yes +smtpd_tls_session_cache_timeout = 3600s +smtp_use_tls = yes +smtp_tls_dcert_file = $smtpd_tls_dcert_file +smtp_tls_dkey_file = $smtpd_tls_dcert_file +smtp_tls_CApath = $smtpd_tls_CApath +smtpd_tls_auth_only = yes +smtpd_sasl_auth_enable = yes +smtpd_sasl_local_domain = postfix +smtpd_sasl_security_options = noanonymous +enable_sasl_authentification = yes +broken_sasl_auth_clients = yes +alias_maps = mysql:/etc/postfix/myalias.cf hash:/etc/aliases +virtual_maps = proxy:mysql:/etc/postfix/mydomain.cf +virtual_mailbox_maps = proxy:mysql:/etc/postfix/myvirtual.cf +virtual_mailbox_base = / +virtual_minimum_uid = 1000 +virtual_gid_maps = proxy:mysql:/etc/postfix/mygid.cf +virtual_uid_maps = static:33 +default_privs = www-data +smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_invalid_hostname, reject_non_fqdn_hostname, reject_non_fqdn_sender, reject_rbl_client zen.spamhaus.org, reject_non_fqdn_recipient, reject_unknown_sender_domain, reject_unknown_recipient_domain, reject_unauth_pipelining, reject_unlisted_recipient, reject_unauth_destination diff --git a/stable-1.0/etc/alternc/templates/alternc/bureau.conf b/stable-1.0/etc/alternc/templates/alternc/bureau.conf new file mode 100644 index 00000000..b1c1890e --- /dev/null +++ b/stable-1.0/etc/alternc/templates/alternc/bureau.conf @@ -0,0 +1,9 @@ + + DocumentRoot /var/alternc/bureau/admin + ServerName %%fqdn%% + RewriteEngine on + RewriteRule ^/admin/(.*) /$1 [R=301,L] + + alias /alternc-sql /usr/share/phpmyadmin + alias /webmail /usr/share/squirrelmail + diff --git a/stable-1.0/etc/alternc/templates/apache2/panel.conf b/stable-1.0/etc/alternc/templates/apache2/panel.conf new file mode 100644 index 00000000..636eede0 --- /dev/null +++ b/stable-1.0/etc/alternc/templates/apache2/panel.conf @@ -0,0 +1,12 @@ + + DocumentRoot /var/alternc/bureau/admin + ServerName %%fqdn%% + RewriteEngine on + RewriteRule ^/admin/(.*) /$1 + + alias /alternc-sql /usr/share/phpmyadmin + alias /webmail /usr/share/squirrelmail + + LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %T %{Host}i" alternc + CustomLog /var/log/apache2/access.log alternc + diff --git a/stable-1.0/etc/alternc/templates/apache2/url.conf b/stable-1.0/etc/alternc/templates/apache2/url.conf new file mode 100644 index 00000000..ab234c97 --- /dev/null +++ b/stable-1.0/etc/alternc/templates/apache2/url.conf @@ -0,0 +1,11 @@ + + ServerName %%fqdn%% + + KeepAlive Off + + RewriteEngine On + RewriteRule ^/(.*)$ %%redirect%%/$1 [R=301,L] + + LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %T %{Host}i" alternc + CustomLog /var/log/apache2/access.log alternc + diff --git a/stable-1.0/etc/alternc/templates/apache2/vhost.conf b/stable-1.0/etc/alternc/templates/apache2/vhost.conf new file mode 100644 index 00000000..918fa45b --- /dev/null +++ b/stable-1.0/etc/alternc/templates/apache2/vhost.conf @@ -0,0 +1,13 @@ + + ServerName %%fqdn%% + DocumentRoot "%%document_root%%" + + + php_admin_value open_basedir "%%document_root%%:/usr/share/php/:/var/alternc/tmp:/tmp" + Options +MultiViews -FollowSymLinks +SymLinksIfOwnerMatch + AllowOverride AuthConfig FileInfo Limit Options Indexes + + + LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %T %{Host}i" alternc + CustomLog /var/log/apache2/access.log alternc + diff --git a/stable-1.0/etc/alternc/templates/apache2/webmail.conf b/stable-1.0/etc/alternc/templates/apache2/webmail.conf new file mode 100644 index 00000000..1a50f948 --- /dev/null +++ b/stable-1.0/etc/alternc/templates/apache2/webmail.conf @@ -0,0 +1,14 @@ + + ServerName %%fqdn%% + DocumentRoot /usr/share/squirrelmail + + # php_value register_globals On # refer to Debian bug #128226 + php_flag register_globals on + php_value open_basedir /usr/share/squirrelmail:/etc/squirrelmail/:/var/lib/squirrelmail/data/ + php_admin_flag safe_mode off + Options Indexes FollowSymLinks + + + LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %T %{Host}i" alternc + CustomLog /var/log/apache2/access.log alternc + diff --git a/stable-1.0/etc/alternc/templates/bind/automatic.conf b/stable-1.0/etc/alternc/templates/bind/automatic.conf new file mode 100644 index 00000000..2cee3e3c --- /dev/null +++ b/stable-1.0/etc/alternc/templates/bind/automatic.conf @@ -0,0 +1 @@ +// %%warning_message%% diff --git a/stable-1.0/etc/alternc/templates/bind/named.conf.options b/stable-1.0/etc/alternc/templates/bind/named.conf.options new file mode 100644 index 00000000..bf078027 --- /dev/null +++ b/stable-1.0/etc/alternc/templates/bind/named.conf.options @@ -0,0 +1,30 @@ +// Bind configuration for AlternC +// +// This is mostly a non-recursive, authoritative DNS server configuration +options { + directory "/var/cache/bind"; + + // forwarders { + // 0.0.0.0; + // }; + version "Name Server Ready"; + + auth-nxdomain no; # conform to RFC1035 + allow-query { "internal"; }; + allow-transfer { "allslaves"; }; + recursion no; +}; + +acl "internal" { + { + 127.0.0.1; + }; +}; + +// the ip of the slaves generated by alternc +include "/var/alternc/bind/slaveip.conf"; + +include "/etc/bind/rndc.key"; + +// the zones generated by the users +include "/var/alternc/bind/automatic.conf"; \ No newline at end of file diff --git a/stable-1.0/etc/alternc/templates/bind/slaveip.conf b/stable-1.0/etc/alternc/templates/bind/slaveip.conf new file mode 100644 index 00000000..16b8ba5f --- /dev/null +++ b/stable-1.0/etc/alternc/templates/bind/slaveip.conf @@ -0,0 +1,8 @@ +// DO NOT EDIT THIS FILE, IT WILL BE OVERWRITTEN +// Use the AlternC managment console instead. + +acl "allslaves" { + { + 127.0.0.1; + }; +}; diff --git a/stable-1.0/etc/alternc/templates/bind/templates/mx.template b/stable-1.0/etc/alternc/templates/bind/templates/mx.template new file mode 100644 index 00000000..2c27486a --- /dev/null +++ b/stable-1.0/etc/alternc/templates/bind/templates/mx.template @@ -0,0 +1 @@ + IN MX 5 @@MX@@. diff --git a/stable-1.0/etc/alternc/templates/bind/templates/named.template b/stable-1.0/etc/alternc/templates/bind/templates/named.template new file mode 100644 index 00000000..9c7f7cff --- /dev/null +++ b/stable-1.0/etc/alternc/templates/bind/templates/named.template @@ -0,0 +1 @@ +zone "@@DOMAINE@@" { type master; file "@@ZONE_FILE@@"; allow-query { any; }; }; diff --git a/stable-1.0/etc/alternc/templates/bind/templates/slave.template b/stable-1.0/etc/alternc/templates/bind/templates/slave.template new file mode 100644 index 00000000..ce32bf06 --- /dev/null +++ b/stable-1.0/etc/alternc/templates/bind/templates/slave.template @@ -0,0 +1 @@ +zone "@@DOMAINE@@" { type slave; allow-query { any; }; file "@@DOMAINE@@"; masters { %%public_ip%%; }; }; diff --git a/stable-1.0/etc/alternc/templates/bind/templates/zone.template b/stable-1.0/etc/alternc/templates/bind/templates/zone.template new file mode 100644 index 00000000..0af009f6 --- /dev/null +++ b/stable-1.0/etc/alternc/templates/bind/templates/zone.template @@ -0,0 +1,18 @@ +$TTL 1D +; +; BIND data file for domain @@DOMAINE@@ +; +;; This file is automatically regenerate by Alternc +;; Please insert your manual entry after the last comment. +;; If you want to forbid automatic generation, change the LOCKED var +;; LOCKED:NO +; +@ IN SOA %%fqdn%%. root.%%fqdn%%. ( + @@SERIAL@@ ; serial + 21600 ; refresh (6h) + 3600 ; retry (1h) + 604800 ; expiry (7d) + 86400 ) ; RR TTL (24h) + + IN NS %%ns1%%. + IN NS %%ns2%%. diff --git a/stable-1.0/etc/alternc/templates/courier/authdaemonrc b/stable-1.0/etc/alternc/templates/courier/authdaemonrc new file mode 100644 index 00000000..1874e232 --- /dev/null +++ b/stable-1.0/etc/alternc/templates/courier/authdaemonrc @@ -0,0 +1,17 @@ +# +# Fichier de configuration de Courier-authdaemon pour AlternC +# $Id: authdaemonrc,v 1.3 2004/08/27 10:59:30 anonymous Exp $ +# +# %%warning_message%% +# + +authmodulelist="authmysql" +#authpam" + +authmodulelistorig="authcustom authcram authuserdb authldap authmysql authpam" + +daemons=5 + +version="" + +authdaemonvar=/var/run/courier/authdaemon diff --git a/stable-1.0/etc/alternc/templates/courier/authmysqlrc b/stable-1.0/etc/alternc/templates/courier/authmysqlrc new file mode 100644 index 00000000..6b330436 --- /dev/null +++ b/stable-1.0/etc/alternc/templates/courier/authmysqlrc @@ -0,0 +1,206 @@ +##VERSION: $Id: authmysqlrc,v 1.2 2004/08/27 10:59:30 anonymous Exp $ +# +# Copyright 2000 Double Precision, Inc. See COPYING for +# distribution information. +# +# Do not alter lines that begin with ##, they are used when upgrading +# this configuration. +# +# authmysqlrc created from authmysqlrc.dist by sysconftool +# +# DO NOT INSTALL THIS FILE with world read permissions. This file +# might contain the MySQL admin password! +# +# Each line in this file must follow the following format: +# +# field[spaces|tabs]value +# +# That is, the name of the field, followed by spaces or tabs, followed by +# field value. Trailing spaces are prohibited. +# +# %%warning_message%% + +##NAME: LOCATION:0 +# +# The server name, userid, and password used to log in. + +MYSQL_SERVER %%dbhost%% +MYSQL_USERNAME %%dbuser%% +MYSQL_PASSWORD %%dbpwd%% + +##NAME: MYSQL_SOCKET:0 +# +# MYSQL_SOCKET can be used with MySQL version 3.22 or later, it specifies the +# filesystem pipe used for the connection +# +# MYSQL_SOCKET /var/mysql/mysql.sock + +##NAME: MYSQL_PORT:0 +# +# MYSQL_PORT can be used with MySQL version 3.22 or later to specify a port to +# connect to. + +MYSQL_PORT 0 + +##NAME: MYSQL_OPT:0 +# +# Leave MYSQL_OPT as 0, unless you know what you're doing. + +MYSQL_OPT 0 + +##NAME: MYSQL_DATABASE:0 +# +# The name of the MySQL database we will open: + +MYSQL_DATABASE %%dbname%% + +##NAME: MYSQL_USER_TABLE:0 +# +# The name of the table containing your user data. See README.authmysqlrc +# for the required fields in this table. + +MYSQL_USER_TABLE mail_users + +##NAME: MYSQL_CRYPT_PWFIELD:0 +# +# Either MYSQL_CRYPT_PWFIELD or MYSQL_CLEAR_PWFIELD must be defined. Both +# are OK too. crypted passwords go into MYSQL_CRYPT_PWFIELD, cleartext +# passwords go into MYSQL_CLEAR_PWFIELD. Cleartext passwords allow +# CRAM-MD5 authentication to be implemented. + +MYSQL_CRYPT_PWFIELD password + +##NAME: MYSQL_CLEAR_PWFIELD:0 +# +# +# MYSQL_CLEAR_PWFIELD clear + +##NAME: MYSQL_DEFAULT_DOMAIN:0 +# +# If DEFAULT_DOMAIN is defined, and someone tries to log in as 'user', +# we will look up 'user@DEFAULT_DOMAIN' instead. +# +# +# DEFAULT_DOMAIN example.com + +##NAME: MYSQL_UID_FIELD:0 +# +# Other fields in the mysql table: +# +# MYSQL_UID_FIELD - contains the numerical userid of the account +# +MYSQL_UID_FIELD 33 + +##NAME: MYSQL_GID_FIELD:0 +# +# Numerical groupid of the account + +MYSQL_GID_FIELD uid + +##NAME: MYSQL_LOGIN_FIELD:0 +# +# The login id, default is id. Basically the query is: +# +# SELECT MYSQL_UID_FIELD, MYSQL_GID_FIELD, ... WHERE id='loginid' +# + +MYSQL_LOGIN_FIELD alias + +##NAME: MYSQL_HOME_FIELD:0 +# + +MYSQL_HOME_FIELD path + +##NAME: MYSQL_NAME_FIELD:0 +# +# The user's name (optional) + +# MYSQL_NAME_FIELD name + +##NAME: MYSQL_MAILDIR_FIELD:0 +# +# This is an optional field, and can be used to specify an arbitrary +# location of the maildir for the account, which normally defaults to +# $HOME/Maildir (where $HOME is read from MYSQL_HOME_FIELD). +# +# You still need to provide a MYSQL_HOME_FIELD, even if you uncomment this +# out. +# +# MYSQL_MAILDIR_FIELD maildir + +##NAME: MYSQL_QUOTA_FIELD:0 +# +# Define MYSQL_QUOTA_FIELD to be the name of the field that can optionally +# specify a maildir quota. See README.maildirquota for more information +# +# MYSQL_QUOTA_FIELD quota + +##NAME: MYSQL_WHERE_CLAUSE:0 +# +# This is optional, MYSQL_WHERE_CLAUSE can be basically set to an arbitrary +# fixed string that is appended to the WHERE clause of our query +# +# MYSQL_WHERE_CLAUSE server='mailhost.example.com' + +##NAME: MYSQL_SELECT_CLAUSE:0 +# +# (EXPERIMENTAL) +# This is optional, MYSQL_SELECT_CLAUSE can be set when you have a database, +# which is structuraly different from proposed. The fixed string will +# be used to do a SELECT operation on database, which should return fields +# in order specified bellow: +# +# username, cryptpw, uid, gid, clearpw, home, maildir, quota, fullname +# +# Enabling this option causes ignorance of any other field-related +# options, excluding default domain. +# +# There are two variables, which you can use. Substitution will be made +# for them, so you can put entered username (local part) and domain name +# in the right place of your query. These variables are: +# $(local_part) and $(domain) +# +# If a $(domain) is empty (not given by the remote user) the default domain +# name is used in its place. +# +# This example is a little bit modified adaptation of vmail-sql +# database scheme: +# +# MYSQL_SELECT_CLAUSE SELECT popbox.local_part, \ +# CONCAT('{MD5}', popbox.password_hash), \ +# domain.uid, \ +# domain.gid, \ +# popbox.clearpw, \ +# CONCAT(domain.path, '/', popbox.mbox_name), \ +# '', \ +# domain.quota, \ +# '', \ +# FROM popbox, domain \ +# WHERE popbox.local_part = '$(local_part)' \ +# AND popbox.domain_name = '$(domain)' \ +# AND popbox.domain_name = domain.domain_name +# +##NAME: MYSQL_CHPASS_CLAUSE:0 +# +# (EXPERIMENTAL) +# This is optional, MYSQL_CHPASS_CLAUSE can be set when you have a database, +# which is structuraly different from proposed. The fixed string will +# be used to do an UPDATE operation on database. In other words, it is +# used, when changing password. +# +# There are four variables, which you can use. Substitution will be made +# for them, so you can put entered username (local part) and domain name +# in the right place of your query. There variables are: +# $(local_part) , $(domain) , $(newpass) , $(newpass_crypt) +# +# If a $(domain) is empty (not given by the remote user) the default domain +# name is used in its place. +# $(newpass) contains plain password +# $(newpass_crypt) contains its crypted form +# +# MYSQL_CHPASS_CLAUSE UPDATE popbox \ +# SET clearpw='$(newpass)', \ +# password_hash='$(newpass_crypt)' \ +# WHERE local_part='$(local_part)' \ +# AND domain_name='$(domain)' +# diff --git a/stable-1.0/etc/alternc/templates/default/saslauthd b/stable-1.0/etc/alternc/templates/default/saslauthd new file mode 100644 index 00000000..b27bd38b --- /dev/null +++ b/stable-1.0/etc/alternc/templates/default/saslauthd @@ -0,0 +1,8 @@ +# %%warning_message%% + +START=yes +MECHANISMS="rimap" +PWDIR=/var/spool/postfix/var/run/saslauthd +PIDFILE="${PWDIR}/saslauthd.pid" +OPTIONS="-r -m /var/spool/postfix/var/run/saslauthd -O localhost -c" +NAME="saslauthd" diff --git a/stable-1.0/etc/alternc/templates/dovecot/dovecot-sql.conf b/stable-1.0/etc/alternc/templates/dovecot/dovecot-sql.conf new file mode 100644 index 00000000..f165ddbe --- /dev/null +++ b/stable-1.0/etc/alternc/templates/dovecot/dovecot-sql.conf @@ -0,0 +1,131 @@ +# This file is opened as root, so it should be owned by root and mode 0600. +# +# http://wiki.dovecot.org/AuthDatabase/SQL +# +# For the sql passdb module, you'll need a database with a table that +# contains fields for at least the username and password. If you want to +# use the user@domain syntax, you might want to have a separate domain +# field as well. +# +# If your users all have the same uig/gid, and have predictable home +# directories, you can use the static userdb module to generate the home +# dir based on the username and domain. In this case, you won't need fields +# for home, uid, or gid in the database. +# +# If you prefer to use the sql userdb module, you'll want to add fields +# for home, uid, and gid. Here is an example table: +# +# CREATE TABLE users ( +# username VARCHAR(128) NOT NULL, +# domain VARCHAR(128) NOT NULL, +# password VARCHAR(64) NOT NULL, +# home VARCHAR(255) NOT NULL, +# uid INTEGER NOT NULL, +# gid INTEGER NOT NULL, +# active CHAR(1) DEFAULT 'Y' NOT NULL +# ); + +# Database driver: mysql, pgsql, sqlite +driver = mysql + +# Database connection string. This is driver-specific setting. +# +# pgsql: +# For available options, see the PostgreSQL documention for the +# PQconnectdb function of libpq. +# +# mysql: +# Basic options emulate PostgreSQL option names: +# host, port, user, password, dbname +# +# But also adds some new settings: +# client_flags - See MySQL manual +# ssl_ca, ssl_ca_path - Set either one or both to enable SSL +# ssl_cert, ssl_key - For sending client-side certificates to server +# ssl_cipher - Set minimum allowed cipher security (default: HIGH) +# option_file - Read options from the given file instead of +# the default my.cnf location +# option_group - Read options from the given group (default: client) +# +# You can connect to UNIX sockets by using host: host=/var/run/mysqld/mysqld.sock +# Note that currently you can't use spaces in parameters. +# +# MySQL supports multiple host parameters for load balancing / HA. +# +# sqlite: +# The path to the database file. +# +# Examples: +# connect = host=192.168.1.1 dbname=users +# connect = host=sql.example.com dbname=virtual user=virtual password=blarg +# connect = /etc/dovecot/authdb.sqlite +# +connect = host=%%dbhost%% dbname=%%dbname%% user=%%dbuser%% password=%%dbpwd%% + +# Default password scheme. +# +# List of supported schemes is in +# http://wiki.dovecot.org/Authentication/PasswordSchemes +# +default_pass_scheme = MD5 + +# passdb query to retrieve the password. It can return fields: +# password - The user's password. This field must be returned. +# user - user@domain from the database. Needed with case-insensitive lookups. +# username and domain - An alternative way to represent the "user" field. +# +# The "user" field is often necessary with case-insensitive lookups to avoid +# e.g. "name" and "nAme" logins creating two different mail directories. If +# your user and domain names are in separate fields, you can return "username" +# and "domain" fields instead of "user". +# +# The query can also return other fields which have a special meaning, see +# http://wiki.dovecot.org/PasswordDatabase/ExtraFields +# +# Commonly used available substitutions (see http://wiki.dovecot.org/Variables +# for full list): +# %u = entire user@domain +# %n = user part of user@domain +# %d = domain part of user@domain +# +# Note that these can be used only as input to SQL query. If the query outputs +# any of these substitutions, they're not touched. Otherwise it would be +# difficult to have eg. usernames containing '%' characters. +# +# Example: +# password_query = SELECT userid AS user, pw AS password \ +# FROM users WHERE userid = '%u' AND active = 'Y' +# +#password_query = \ +# SELECT username, domain, password \ +# FROM users WHERE username = '%n' AND domain = '%d' + +# userdb query to retrieve the user information. It can return fields: +# uid - System UID (overrides mail_uid setting) +# gid - System GID (overrides mail_gid setting) +# home - Home directory +# mail - Mail location (overrides mail_location setting) +# +# None of these are strictly required. If you use a single UID and GID, and +# home or mail directory fits to a template string, you could use userdb static +# instead. For a list of all fields that can be returned, see +# http://wiki.dovecot.org/UserDatabase/ExtraFields +# +# Examples: +# user_query = SELECT home, uid, gid FROM users WHERE userid = '%u' +# user_query = SELECT dir AS home, user AS uid, group AS gid FROM users where userid = '%u' +# user_query = SELECT home, 501 AS uid, 501 AS gid FROM users WHERE userid = '%u' +# +user_query = \ + SELECT path AS home, 33 AS uid, mail_users.uid AS gid \ + FROM mail_users WHERE alias = '%u' + +# If you wish to avoid two SQL lookups (passdb + userdb), you can use +# userdb prefetch instead of userdb sql in dovecot.conf. In that case you'll +# also have to return userdb fields in password_query prefixed with "userdb_" +# string. For example: +password_query = \ + SELECT alias AS user, password, \ + path AS userdb_home, 33 AS userdb_uid, uid AS userdb_gid \ + FROM mail_users WHERE alias = '%u' + diff --git a/stable-1.0/etc/alternc/templates/dovecot/dovecot.conf b/stable-1.0/etc/alternc/templates/dovecot/dovecot.conf new file mode 100644 index 00000000..38a3d633 --- /dev/null +++ b/stable-1.0/etc/alternc/templates/dovecot/dovecot.conf @@ -0,0 +1,1285 @@ +## Dovecot configuration file + +# If you're in a hurry, see http://wiki.dovecot.org/QuickConfiguration + +# "dovecot -n" command gives a clean output of the changed settings. Use it +# instead of copy&pasting this file when posting to the Dovecot mailing list. + +# '#' character and everything after it is treated as comments. Extra spaces +# and tabs are ignored. If you want to use either of these explicitly, put the +# value inside quotes, eg.: key = "# char and trailing whitespace " + +# Default values are shown for each setting, it's not required to uncomment +# those. These are exceptions to this though: No sections (e.g. namespace {}) +# or plugin settings are added by default, they're listed only as examples. +# Paths are also just examples with the real defaults being based on configure +# options. The paths listed here are for configure --prefix=/usr +# --sysconfdir=/etc --localstatedir=/var --with-ssldir=/etc/ssl + +# Base directory where to store runtime data. +#base_dir = /var/run/dovecot + +# Protocols we want to be serving: imap imaps pop3 pop3s managesieve +# If you only want to use dovecot-auth, you can set this to "none". +protocols = imap imaps pop3 pop3s managesieve +#protocols = none + +# A space separated list of IP or host addresses where to listen in for +# connections. "*" listens in all IPv4 interfaces. "[::]" listens in all IPv6 +# interfaces. Use "*, [::]" for listening both IPv4 and IPv6. +# +# If you want to specify ports for each service, you will need to configure +# these settings inside the protocol imap/pop3/managesieve { ... } section, +# so you can specify different ports for IMAP/POP3/MANAGESIEVE. For example: +# protocol imap { +# listen = *:10143 +# ssl_listen = *:10943 +# .. +# } +# protocol pop3 { +# listen = *:10100 +# .. +# } +# protocol managesieve { +# listen = *:12000 +# .. +# } +#listen = * + +# Disable LOGIN command and all other plaintext authentications unless +# SSL/TLS is used (LOGINDISABLED capability). Note that if the remote IP +# matches the local IP (ie. you're connecting from the same computer), the +# connection is considered secure and plaintext authentication is allowed. +disable_plaintext_auth = no + +# Should all IMAP and POP3 processes be killed when Dovecot master process +# shuts down. Setting this to "no" means that Dovecot can be upgraded without +# forcing existing client connections to close (although that could also be +# a problem if the upgrade is eg. because of a security fix). This however +# means that after master process has died, the client processes can't write +# to log files anymore. +#shutdown_clients = yes + +## +## Logging +## + +# Log file to use for error messages, instead of sending them to syslog. +# /dev/stderr can be used to log into stderr. +#log_path = + +# Log file to use for informational and debug messages. +# Default is the same as log_path. +#info_log_path = + +# Prefix for each line written to log file. % codes are in strftime(3) +# format. +#log_timestamp = "%b %d %H:%M:%S " +log_timestamp = "%Y-%m-%d %H:%M:%S " + +# Syslog facility to use if you're logging to syslog. Usually if you don't +# want to use "mail", you'll use local0..local7. Also other standard +# facilities are supported. +#syslog_facility = mail + +## +## SSL settings +## + +# IP or host address where to listen in for SSL connections. Remember to also +# add imaps and/or pop3s to protocols setting. Defaults to same as "listen" +# setting if not specified. +#ssl_listen = + +# SSL/TLS support: yes, no, required. +#ssl = yes + +# PEM encoded X.509 SSL/TLS certificate and private key. They're opened before +# dropping root privileges, so keep the key file unreadable by anyone but +# root. +#ssl_cert_file = /etc/ssl/certs/dovecot.pem +ssl_cert_file = /etc/alternc/apache.pem +#ssl_key_file = /etc/ssl/private/dovecot.pem +ssl_key_file = /etc/alternc/apache.pem + +# If key file is password protected, give the password here. Alternatively +# give it when starting dovecot with -p parameter. Since this file is often +# world-readable, you may want to place this setting instead to a different +# root owned 0600 file by using !include_try . +#ssl_key_password = + +# File containing trusted SSL certificate authorities. Set this only if you +# intend to use ssl_verify_client_cert=yes. The CAfile should contain the +# CA-certificate(s) followed by the matching CRL(s). +#ssl_ca_file = + +# Request client to send a certificate. If you also want to require it, set +# ssl_require_client_cert=yes in auth section. +#ssl_verify_client_cert = no + +# Which field from certificate to use for username. commonName and +# x500UniqueIdentifier are the usual choices. You'll also need to set +# ssl_username_from_cert=yes. +#ssl_cert_username_field = commonName + +# How often to regenerate the SSL parameters file. Generation is quite CPU +# intensive operation. The value is in hours, 0 disables regeneration +# entirely. +#ssl_parameters_regenerate = 168 + +# SSL ciphers to use +#ssl_cipher_list = ALL:!LOW:!SSLv2 + +# Show protocol level SSL errors. +#verbose_ssl = no + +## +## Login processes +## + +# + +# Directory where authentication process places authentication UNIX sockets +# which login needs to be able to connect to. The sockets are created when +# running as root, so you don't have to worry about permissions. Note that +# everything in this directory is deleted when Dovecot is started. +#login_dir = /var/run/dovecot/login + +# chroot login process to the login_dir. Only reason not to do this is if you +# wish to run the whole Dovecot without roots. +#login_chroot = yes + +# User to use for the login process. Create a completely new user for this, +# and don't use it anywhere else. The user must also belong to a group where +# only it has access, it's used to control access for authentication process. +# Note that this user is NOT used to access mails. +#login_user = dovecot + +# Set max. process size in megabytes. If you don't use +# login_process_per_connection you might need to grow this. +#login_process_size = 64 + +# Should each login be processed in it's own process (yes), or should one +# login process be allowed to process multiple connections (no)? Yes is more +# secure, espcially with SSL/TLS enabled. No is faster since there's no need +# to create processes all the time. +#login_process_per_connection = yes + +# Number of login processes to keep for listening new connections. +#login_processes_count = 3 + +# Maximum number of login processes to create. The listening process count +# usually stays at login_processes_count, but when multiple users start logging +# in at the same time more extra processes are created. To prevent fork-bombing +# we check only once in a second if new processes should be created - if all +# of them are used at the time, we double their amount until the limit set by +# this setting is reached. +#login_max_processes_count = 128 + +# Maximum number of connections allowed per each login process. This setting +# is used only if login_process_per_connection=no. Once the limit is reached, +# the process notifies master so that it can create a new login process. +#login_max_connections = 256 + +# Greeting message for clients. +#login_greeting = Dovecot ready. + +# Space separated list of trusted network ranges. Connections from these +# IPs are allowed to override their IP addresses and ports (for logging and +# for authentication checks). disable_plaintext_auth is also ignored for +# these networks. Typically you'd specify your IMAP proxy servers here. +#login_trusted_networks = + +# Space-separated list of elements we want to log. The elements which have +# a non-empty variable value are joined together to form a comma-separated +# string. +#login_log_format_elements = user=<%u> method=%m rip=%r lip=%l %c + +# Login log format. %$ contains login_log_format_elements string, %s contains +# the data we want to log. +#login_log_format = %$: %s + +## +## Mailbox locations and namespaces +## + +# Location for users' mailboxes. This is the same as the old default_mail_env +# setting. The default is empty, which means that Dovecot tries to find the +# mailboxes automatically. This won't work if the user doesn't have any mail +# yet, so you should explicitly tell Dovecot the full location. +# +# If you're using mbox, giving a path to the INBOX file (eg. /var/mail/%u) +# isn't enough. You'll also need to tell Dovecot where the other mailboxes are +# kept. This is called the "root mail directory", and it must be the first +# path given in the mail_location setting. +# +# There are a few special variables you can use, eg.: +# +# %u - username +# %n - user part in user@domain, same as %u if there's no domain +# %d - domain part in user@domain, empty if there's no domain +# %h - home directory +# +# See for full list. +# Some examples: +# +# mail_location = maildir:~/Maildir +# mail_location = mbox:~/mail:INBOX=/var/mail/%u +# mail_location = mbox:/var/mail/%d/%1n/%n:INDEX=/var/indexes/%d/%1n/%n +# +# +# +mail_location = maildir:~/Maildir + +# If you need to set multiple mailbox locations or want to change default +# namespace settings, you can do it by defining namespace sections. +# +# You can have private, shared and public namespaces. Private namespaces +# are for user's personal mails. Shared namespaces are for accessing other +# users' mailboxes that have been shared. Public namespaces are for shared +# mailboxes that are managed by sysadmin. If you create any shared or public +# namespaces you'll typically want to enable ACL plugin also, otherwise all +# users can access all the shared mailboxes, assuming they have permissions +# on filesystem level to do so. +# +# REMEMBER: If you add any namespaces, the default namespace must be added +# explicitly, ie. mail_location does nothing unless you have a namespace +# without a location setting. Default namespace is simply done by having a +# namespace with empty prefix. +namespace private { + # Hierarchy separator to use. You should use the same separator for all + # namespaces or some clients get confused. '/' is usually a good one. + # The default however depends on the underlying mail storage format. + separator = . + + # Prefix required to access this namespace. This needs to be different for + # all namespaces. For example "Public/". + prefix = INBOX. + + # Physical location of the mailbox. This is in same format as + # mail_location, which is also the default for it. + #location = + + # There can be only one INBOX, and this setting defines which namespace + # has it. + inbox = yes + + # If namespace is hidden, it's not advertised to clients via NAMESPACE + # extension. You'll most likely also want to set list=no. This is mostly + # useful when converting from another server with different namespaces which + # you want to deprecate but still keep working. For example you can create + # hidden namespaces with prefixes "~/mail/", "~%u/mail/" and "mail/". + #hidden = yes + + # Show the mailboxes under this namespace with LIST command. This makes the + # namespace visible for clients that don't support NAMESPACE extension. + # "children" value lists child mailboxes, but hides the namespace prefix. + #list = yes + + # Namespace handles its own subscriptions. If set to "no", the parent + # namespace handles them (empty prefix should always have this as "yes") + #subscriptions = yes +} + +# Example shared namespace configuration +#namespace shared { + #separator = / + + # Mailboxes are visible under "shared/user@domain/" + # %%n, %%d and %%u are expanded to the destination user. + #prefix = shared/%%u/ + + # Mail location for other users' mailboxes. Note that %variables and ~/ + # expands to the logged in user's data. %%n, %%d, %%u and %%h expand to the + # destination user's data. + #location = maildir:%%h/Maildir:INDEX=~/Maildir/shared/%%u + + # Use the default namespace for saving subscriptions. + #subscriptions = no + + # List the shared/ namespace only if there are visible shared mailboxes. + #list = children +#} + +# System user and group used to access mails. If you use multiple, userdb +# can override these by returning uid or gid fields. You can use either numbers +# or names. +#mail_uid = +#mail_gid = + +# Group to enable temporarily for privileged operations. Currently this is +# used only with INBOX when either its initial creation or dotlocking fails. +# Typically this is set to "mail" to give access to /var/mail. +#mail_privileged_group = +mail_privileged_group = mail + +# Grant access to these supplementary groups for mail processes. Typically +# these are used to set up access to shared mailboxes. Note that it may be +# dangerous to set these if users can create symlinks (e.g. if "mail" group is +# set here, ln -s /var/mail ~/mail/var could allow a user to delete others' +# mailboxes, or ln -s /secret/shared/box ~/mail/mybox would allow reading it). +#mail_access_groups = + +# Allow full filesystem access to clients. There's no access checks other than +# what the operating system does for the active UID/GID. It works with both +# maildir and mboxes, allowing you to prefix mailboxes names with eg. /path/ +# or ~user/. +#mail_full_filesystem_access = no + +## +## Mail processes +## + +# Enable mail process debugging. This can help you figure out why Dovecot +# isn't finding your mails. +#mail_debug = no + +# Log prefix for mail processes. See +# for list of possible variables you can use. +#mail_log_prefix = "%Us(%u): " + +# Max. number of lines a mail process is allowed to log per second before it's +# throttled. 0 means unlimited. Typically there's no need to change this +# unless you're using mail_log plugin, which may log a lot. This setting is +# ignored while mail_debug=yes to avoid pointless throttling. +#mail_log_max_lines_per_sec = 10 + +# Don't use mmap() at all. This is required if you store indexes to shared +# filesystems (NFS or clustered filesystem). +#mmap_disable = no + +# Rely on O_EXCL to work when creating dotlock files. NFS supports O_EXCL +# since version 3, so this should be safe to use nowadays by default. +#dotlock_use_excl = yes + +# Don't use fsync() or fdatasync() calls. This makes the performance better +# at the cost of potential data loss if the server (or the file server) +# goes down. +#fsync_disable = no + +# Mail storage exists in NFS. Set this to yes to make Dovecot flush NFS caches +# whenever needed. If you're using only a single mail server this isn't needed. +#mail_nfs_storage = no +# Mail index files also exist in NFS. Setting this to yes requires +# mmap_disable=yes and fsync_disable=no. +#mail_nfs_index = no + +# Locking method for index files. Alternatives are fcntl, flock and dotlock. +# Dotlocking uses some tricks which may create more disk I/O than other locking +# methods. NFS users: flock doesn't work, remember to change mmap_disable. +#lock_method = fcntl + +# Drop all privileges before exec()ing the mail process. This is mostly +# meant for debugging, otherwise you don't get core dumps. It could be a small +# security risk if you use single UID for multiple users, as the users could +# ptrace() each others processes then. +#mail_drop_priv_before_exec = no + +# Show more verbose process titles (in ps). Currently shows user name and +# IP address. Useful for seeing who are actually using the IMAP processes +# (eg. shared mailboxes or if same uid is used for multiple accounts). +#verbose_proctitle = no + +# Valid UID range for users, defaults to 500 and above. This is mostly +# to make sure that users can't log in as daemons or other system users. +# Note that denying root logins is hardcoded to dovecot binary and can't +# be done even if first_valid_uid is set to 0. +first_valid_uid = 33 +last_valid_uid = 33 + +# Valid GID range for users, defaults to non-root/wheel. Users having +# non-valid GID as primary group ID aren't allowed to log in. If user +# belongs to supplementary groups with non-valid GIDs, those groups are +# not set. +#first_valid_gid = 1 +#last_valid_gid = 0 + +# Maximum number of running mail processes. When this limit is reached, +# new users aren't allowed to log in. +#max_mail_processes = 512 + +# Set max. process size in megabytes. Most of the memory goes to mmap()ing +# files, so it shouldn't harm much even if this limit is set pretty high. +#mail_process_size = 256 + +# Maximum allowed length for mail keyword name. It's only forced when trying +# to create new keywords. +#mail_max_keyword_length = 50 + +# ':' separated list of directories under which chrooting is allowed for mail +# processes (ie. /var/mail will allow chrooting to /var/mail/foo/bar too). +# This setting doesn't affect login_chroot, mail_chroot or auth chroot +# settings. If this setting is empty, "/./" in home dirs are ignored. +# WARNING: Never add directories here which local users can modify, that +# may lead to root exploit. Usually this should be done only if you don't +# allow shell access for users. +#valid_chroot_dirs = + +# Default chroot directory for mail processes. This can be overridden for +# specific users in user database by giving /./ in user's home directory +# (eg. /home/./user chroots into /home). Note that usually there is no real +# need to do chrooting, Dovecot doesn't allow users to access files outside +# their mail directory anyway. If your home directories are prefixed with +# the chroot directory, append "/." to mail_chroot. +#mail_chroot = + +## +## Mailbox handling optimizations +## + +# The minimum number of mails in a mailbox before updates are done to cache +# file. This allows optimizing Dovecot's behavior to do less disk writes at +# the cost of more disk reads. +#mail_cache_min_mail_count = 0 + +# When IDLE command is running, mailbox is checked once in a while to see if +# there are any new mails or other changes. This setting defines the minimum +# time in seconds to wait between those checks. Dovecot can also use dnotify, +# inotify and kqueue to find out immediately when changes occur. +#mailbox_idle_check_interval = 30 + +# Save mails with CR+LF instead of plain LF. This makes sending those mails +# take less CPU, especially with sendfile() syscall with Linux and FreeBSD. +# But it also creates a bit more disk I/O which may just make it slower. +# Also note that if other software reads the mboxes/maildirs, they may handle +# the extra CRs wrong and cause problems. +#mail_save_crlf = no + +## +## Maildir-specific settings +## + +# By default LIST command returns all entries in maildir beginning with a dot. +# Enabling this option makes Dovecot return only entries which are directories. +# This is done by stat()ing each entry, so it causes more disk I/O. +# (For systems setting struct dirent->d_type, this check is free and it's +# done always regardless of this setting) +#maildir_stat_dirs = no + +# When copying a message, do it with hard links whenever possible. This makes +# the performance much better, and it's unlikely to have any side effects. +#maildir_copy_with_hardlinks = yes + +# When copying a message, try to preserve the base filename. Only if the +# destination mailbox already contains the same name (ie. the mail is being +# copied there twice), a new name is given. The destination filename check is +# done only by looking at dovecot-uidlist file, so if something outside +# Dovecot does similar filename preserving copies, you may run into problems. +# NOTE: This setting requires maildir_copy_with_hardlinks = yes to work. +#maildir_copy_preserve_filename = no + +# Assume Dovecot is the only MUA accessing Maildir: Scan cur/ directory only +# when its mtime changes unexpectedly or when we can't find the mail otherwise. +#maildir_very_dirty_syncs = no + +## +## mbox-specific settings +## + +# Which locking methods to use for locking mbox. There are four available: +# dotlock: Create .lock file. This is the oldest and most NFS-safe +# solution. If you want to use /var/mail/ like directory, the users +# will need write access to that directory. +# dotlock_try: Same as dotlock, but if it fails because of permissions or +# because there isn't enough disk space, just skip it. +# fcntl : Use this if possible. Works with NFS too if lockd is used. +# flock : May not exist in all systems. Doesn't work with NFS. +# lockf : May not exist in all systems. Doesn't work with NFS. +# +# You can use multiple locking methods; if you do the order they're declared +# in is important to avoid deadlocks if other MTAs/MUAs are using multiple +# locking methods as well. Some operating systems don't allow using some of +# them simultaneously. +# +# The Debian value for mbox_write_locks differs from upstream Dovecot. It is +# changed to be compliant with Debian Policy (section 11.6) for NFS safety. +# Dovecot: mbox_write_locks = dotlock fcntl +# Debian: mbox_write_locks = fcntl dotlock +# +#mbox_read_locks = fcntl +#mbox_write_locks = fcntl dotlock + +# Maximum time in seconds to wait for lock (all of them) before aborting. +#mbox_lock_timeout = 300 + +# If dotlock exists but the mailbox isn't modified in any way, override the +# lock file after this many seconds. +#mbox_dotlock_change_timeout = 120 + +# When mbox changes unexpectedly we have to fully read it to find out what +# changed. If the mbox is large this can take a long time. Since the change +# is usually just a newly appended mail, it'd be faster to simply read the +# new mails. If this setting is enabled, Dovecot does this but still safely +# fallbacks to re-reading the whole mbox file whenever something in mbox isn't +# how it's expected to be. The only real downside to this setting is that if +# some other MUA changes message flags, Dovecot doesn't notice it immediately. +# Note that a full sync is done with SELECT, EXAMINE, EXPUNGE and CHECK +# commands. +#mbox_dirty_syncs = yes + +# Like mbox_dirty_syncs, but don't do full syncs even with SELECT, EXAMINE, +# EXPUNGE or CHECK commands. If this is set, mbox_dirty_syncs is ignored. +#mbox_very_dirty_syncs = no + +# Delay writing mbox headers until doing a full write sync (EXPUNGE and CHECK +# commands and when closing the mailbox). This is especially useful for POP3 +# where clients often delete all mails. The downside is that our changes +# aren't immediately visible to other MUAs. +#mbox_lazy_writes = yes + +# If mbox size is smaller than this (in kilobytes), don't write index files. +# If an index file already exists it's still read, just not updated. +#mbox_min_index_size = 0 + +## +## dbox-specific settings +## + +# Maximum dbox file size in kilobytes until it's rotated. +#dbox_rotate_size = 2048 + +# Minimum dbox file size in kilobytes before it's rotated +# (overrides dbox_rotate_days) +#dbox_rotate_min_size = 16 + +# Maximum dbox file age in days until it's rotated. Day always begins from +# midnight, so 1 = today, 2 = yesterday, etc. 0 = check disabled. +#dbox_rotate_days = 0 + +## +## IMAP specific settings +## + +protocol imap { + # Login executable location. + #login_executable = /usr/lib/dovecot/imap-login + + # IMAP executable location. Changing this allows you to execute other + # binaries before the imap process is executed. + # + # This would write rawlogs into user's ~/dovecot.rawlog/, if it exists: + # mail_executable = /usr/lib/dovecot/rawlog /usr/lib/dovecot/imap + # + # + # This would attach gdb into the imap process and write backtraces into + # /tmp/gdbhelper.* files: + # mail_executable = /usr/lib/dovecot/gdbhelper /usr/lib/dovecot/imap + # + #mail_executable = /usr/lib/dovecot/imap + + # Maximum IMAP command line length in bytes. Some clients generate very long + # command lines with huge mailboxes, so you may need to raise this if you get + # "Too long argument" or "IMAP command line too large" errors often. + #imap_max_line_length = 65536 + + # Maximum number of IMAP connections allowed for a user from each IP address. + # NOTE: The username is compared case-sensitively. + #mail_max_userip_connections = 10 + + # Support for dynamically loadable plugins. mail_plugins is a space separated + # list of plugins to load. + #mail_plugins = + #mail_plugin_dir = /usr/lib/dovecot/modules/imap + + # IMAP logout format string: + # %i - total number of bytes read from client + # %o - total number of bytes sent to client + #imap_logout_format = bytes=%i/%o + + # Override the IMAP CAPABILITY response. + #imap_capability = + + # How many seconds to wait between "OK Still here" notifications when + # client is IDLEing. + #imap_idle_notify_interval = 120 + + # ID field names and values to send to clients. Using * as the value makes + # Dovecot use the default value. The following fields have default values + # currently: name, version, os, os-version, support-url, support-email. + #imap_id_send = + + # ID fields sent by client to log. * means everything. + #imap_id_log = + + # Workarounds for various client bugs: + # delay-newmail: + # Send EXISTS/RECENT new mail notifications only when replying to NOOP + # and CHECK commands. Some clients ignore them otherwise, for example OSX + # Mail ( (e.g. %Uf for the + # filename in uppercase) + # + # %v - Mailbox's IMAP UIDVALIDITY + # %u - Mail's IMAP UID + # %m - MD5 sum of the mailbox headers in hex (mbox only) + # %f - filename (maildir only) + # + # If you want UIDL compatibility with other POP3 servers, use: + # UW's ipop3d : %08Xv%08Xu + # Courier : %f or %v-%u (both might be used simultaneosly) + # Cyrus (<= 2.1.3) : %u + # Cyrus (>= 2.1.4) : %v.%u + # Dovecot v0.99.x : %v.%u + # tpop3d : %Mf + # + # Note that Outlook 2003 seems to have problems with %v.%u format which was + # Dovecot's default, so if you're building a new server it would be a good + # idea to change this. %08Xu%08Xv should be pretty fail-safe. + # + pop3_uidl_format = %08Xu%08Xv + + # Permanently save UIDLs sent to POP3 clients, so pop3_uidl_format changes + # won't change those UIDLs. Currently this works only with Maildir. + #pop3_save_uidl = no + + # POP3 logout format string: + # %i - total number of bytes read from client + # %o - total number of bytes sent to client + # %t - number of TOP commands + # %p - number of bytes sent to client as a result of TOP command + # %r - number of RETR commands + # %b - number of bytes sent to client as a result of RETR command + # %d - number of deleted messages + # %m - number of messages (before deletion) + # %s - mailbox size in bytes (before deletion) + #pop3_logout_format = top=%t/%p, retr=%r/%b, del=%d/%m, size=%s + + # Maximum number of POP3 connections allowed for a user from each IP address. + # NOTE: The username is compared case-sensitively. + #mail_max_userip_connections = 3 + + # Support for dynamically loadable plugins. mail_plugins is a space separated + # list of plugins to load. + #mail_plugins = + #mail_plugin_dir = /usr/lib/dovecot/modules/pop3 + + # Workarounds for various client bugs: + # outlook-no-nuls: + # Outlook and Outlook Express hang if mails contain NUL characters. + # This setting replaces them with 0x80 character. + # oe-ns-eoh: + # Outlook Express and Netscape Mail breaks if end of headers-line is + # missing. This option simply sends it if it's missing. + # The list is space-separated. + #pop3_client_workarounds = +} + +## +## ManageSieve specific settings +## + +protocol managesieve { + # Login executable location. + #login_executable = /usr/lib/dovecot/managesieve-login + + # ManageSieve executable location. See IMAP's mail_executable above for + # examples how this could be changed. + #mail_executable = /usr/lib/dovecot/managesieve + + # Maximum ManageSieve command line length in bytes. This setting is + # directly borrowed from IMAP. But, since long command lines are very + # unlikely with ManageSieve, changing this will not be very useful. + #managesieve_max_line_length = 65536 + + # ManageSieve logout format string: + # %i - total number of bytes read from client + # %o - total number of bytes sent to client + #managesieve_logout_format = bytes=%i/%o + + # If, for some inobvious reason, the sieve_storage remains unset, the + # ManageSieve daemon uses the specification of the mail_location to find out + # where to store the sieve files (see explaination in README.managesieve). + # The example below, when uncommented, overrides any global mail_location + # specification and stores all the scripts in '~/mail/sieve' if sieve_storage + # is unset. However, you should always use the sieve_storage setting. + # mail_location = mbox:~/mail + + # To fool ManageSieve clients that are focused on timesieved you can + # specify the IMPLEMENTATION capability that the dovecot reports to clients + # (default: "dovecot"). + #managesieve_implementation_string = Cyrus timsieved v2.2.13 +} + +## +## LDA specific settings +## + +protocol lda { + # Address to use when sending rejection mails (e.g. postmaster@example.com). + postmaster_address = postmaster@lautre.net + + # Hostname to use in various parts of sent mails, eg. in Message-Id. + # Default is the system's real hostname. + #hostname = + + # Support for dynamically loadable plugins. mail_plugins is a space separated + # list of plugins to load. + mail_plugins = sieve + mail_plugin_dir = /usr/lib/dovecot/modules/lda + + # If user is over quota, return with temporary failure instead of + # bouncing the mail. + #quota_full_tempfail = no + + # Format to use for logging mail deliveries. You can use variables: + # %$ - Delivery status message (e.g. "saved to INBOX") + # %m - Message-ID + # %s - Subject + # %f - From address + #deliver_log_format = msgid=%m: %$ + + # Binary to use for sending mails. + sendmail_path = /usr/sbin/sendmail + + # Subject: header to use for rejection mails. You can use the same variables + # as for rejection_reason below. + #rejection_subject = Rejected: %s + + # Human readable error message for rejection mails. You can use variables: + # %n = CRLF, %r = reason, %s = original subject, %t = recipient + #rejection_reason = Your message to <%t> was automatically rejected:%n%r + + # UNIX socket path to master authentication server to find users. + auth_socket_path = /var/run/dovecot/auth-master +} + +## +## Authentication processes +## + +# Executable location +auth_executable = /usr/lib/dovecot/dovecot-auth + +# Set max. process size in megabytes. +#auth_process_size = 256 + +# Authentication cache size in kilobytes. 0 means it's disabled. +# Note that bsdauth, PAM and vpopmail require cache_key to be set for caching +# to be used. +#auth_cache_size = 0 +# Time to live in seconds for cached data. After this many seconds the cached +# record is no longer used, *except* if the main database lookup returns +# internal failure. We also try to handle password changes automatically: If +# user's previous authentication was successful, but this one wasn't, the +# cache isn't used. For now this works only with plaintext authentication. +#auth_cache_ttl = 3600 +# TTL for negative hits (user not found, password mismatch). +# 0 disables caching them completely. +#auth_cache_negative_ttl = 3600 + +# Space separated list of realms for SASL authentication mechanisms that need +# them. You can leave it empty if you don't want to support multiple realms. +# Many clients simply use the first one listed here, so keep the default realm +# first. +#auth_realms = + +# Default realm/domain to use if none was specified. This is used for both +# SASL realms and appending @domain to username in plaintext logins. +#auth_default_realm = + +# List of allowed characters in username. If the user-given username contains +# a character not listed in here, the login automatically fails. This is just +# an extra check to make sure user can't exploit any potential quote escaping +# vulnerabilities with SQL/LDAP databases. If you want to allow all characters, +# set this value to empty. +#auth_username_chars = abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@ + +# Username character translations before it's looked up from databases. The +# value contains series of from -> to characters. For example "#@/@" means +# that '#' and '/' characters are translated to '@'. +#auth_username_translation = + +# Username formatting before it's looked up from databases. You can use +# the standard variables here, eg. %Lu would lowercase the username, %n would +# drop away the domain if it was given, or "%n-AT-%d" would change the '@' into +# "-AT-". This translation is done after auth_username_translation changes. +#auth_username_format = + +# If you want to allow master users to log in by specifying the master +# username within the normal username string (ie. not using SASL mechanism's +# support for it), you can specify the separator character here. The format +# is then . UW-IMAP uses "*" as the +# separator, so that could be a good choice. +#auth_master_user_separator = + +# Username to use for users logging in with ANONYMOUS SASL mechanism +#auth_anonymous_username = anonymous + +# Log unsuccessful authentication attempts and the reasons why they failed. +#auth_verbose = no + +# Even more verbose logging for debugging purposes. Shows for example SQL +# queries. +#auth_debug = no + +# In case of password mismatches, log the passwords and used scheme so the +# problem can be debugged. Enabling this also enables auth_debug. +#auth_debug_passwords = no + +# Maximum number of dovecot-auth worker processes. They're used to execute +# blocking passdb and userdb queries (eg. MySQL and PAM). They're +# automatically created and destroyed as needed. +#auth_worker_max_count = 30 + +# Host name to use in GSSAPI principal names. The default is to use the +# name returned by gethostname(). Use "$ALL" to allow all keytab entries. +#auth_gssapi_hostname = + +# Kerberos keytab to use for the GSSAPI mechanism. Will use the system +# default (usually /etc/krb5.keytab) if not specified. +#auth_krb5_keytab = + +# Do NTLM and GSS-SPNEGO authentication using Samba's winbind daemon and +# ntlm_auth helper. +# +#auth_use_winbind = no + +# Path for Samba's ntlm_auth helper binary. +#auth_winbind_helper_path = /usr/bin/ntlm_auth + +# Number of seconds to delay before replying to failed authentications. +#auth_failure_delay = 2 + +auth default { + # Space separated list of wanted authentication mechanisms: + # plain login digest-md5 cram-md5 ntlm rpa apop anonymous gssapi otp skey + # gss-spnego + # NOTE: See also disable_plaintext_auth setting. + mechanisms = plain + + # + # Password database is used to verify user's password (and nothing more). + # You can have multiple passdbs and userdbs. This is useful if you want to + # allow both system users (/etc/passwd) and virtual users to login without + # duplicating the system users into virtual database. + # + # + # + # By adding master=yes setting inside a passdb you make the passdb a list + # of "master users", who can log in as anyone else. Unless you're using PAM, + # you probably still want the destination user to be looked up from passdb + # that it really exists. This can be done by adding pass=yes setting to the + # master passdb. + + # Users can be temporarily disabled by adding a passdb with deny=yes. + # If the user is found from that database, authentication will fail. + # The deny passdb should always be specified before others, so it gets + # checked first. Here's an example: + + #passdb passwd-file { + # File contains a list of usernames, one per line + #args = /etc/dovecot/dovecot.deny + #deny = yes + #} + + # PAM authentication. Preferred nowadays by most systems. + # Note that PAM can only be used to verify if user's password is correct, + # so it can't be used as userdb. If you don't want to use a separate user + # database (passwd usually), you can use static userdb. + # REMEMBER: You'll need /etc/pam.d/dovecot file created for PAM + # authentication to actually work. + #passdb pam { + # [session=yes] [setcred=yes] [failure_show_msg=yes] [max_requests=] + # [cache_key=] [] + # + # session=yes makes Dovecot open and immediately close PAM session. Some + # PAM plugins need this to work, such as pam_mkhomedir. + # + # setcred=yes makes Dovecot establish PAM credentials if some PAM plugins + # need that. They aren't ever deleted though, so this isn't enabled by + # default. + # + # max_requests specifies how many PAM lookups to do in one process before + # recreating the process. The default is 100, because many PAM plugins + # leak memory. + # + # cache_key can be used to enable authentication caching for PAM + # (auth_cache_size also needs to be set). It isn't enabled by default + # because PAM modules can do all kinds of checks besides checking password, + # such as checking IP address. Dovecot can't know about these checks + # without some help. cache_key is simply a list of variables (see + # /usr/share/doc/dovecot-common/wiki/Variables.txt) which must match + # for the cached data to be used. + # Here are some examples: + # %u - Username must match. Probably sufficient for most uses. + # %u%r - Username and remote IP address must match. + # %u%s - Username and service (ie. IMAP, POP3) must match. + # + # The service name can contain variables, for example %Ls expands to + # pop3 or imap. + # + # Some examples: + # args = session=yes %Ls + # args = cache_key=%u dovecot + #args = dovecot + #} + + # System users (NSS, /etc/passwd, or similiar) + # In many systems nowadays this uses Name Service Switch, which is + # configured in /etc/nsswitch.conf. + #passdb passwd { + # [blocking=yes] - See userdb passwd for explanation + #args = + #} + + # Shadow passwords for system users (NSS, /etc/shadow or similiar). + # Deprecated by PAM nowadays. + # + #passdb shadow { + # [blocking=yes] - See userdb passwd for explanation + #args = + #} + + # PAM-like authentication for OpenBSD. + # + #passdb bsdauth { + # [cache_key=] - See cache_key in PAM for explanation. + #args = + #} + + # passwd-like file with specified location + # + #passdb passwd-file { + # [scheme=] [username_format=] + # + #args = + #} + + # checkpassword executable authentication + # NOTE: You will probably want to use "userdb prefetch" with this. + # + #passdb checkpassword { + # Path for checkpassword binary + #args = + #} + + # SQL database + passdb sql { + # Path for SQL configuration file + args = /etc/dovecot/dovecot-sql.conf + } + + # LDAP database + #passdb ldap { + # Path for LDAP configuration file + #args = /etc/dovecot/dovecot-ldap.conf + #} + + # vpopmail authentication + #passdb vpopmail { + # [cache_key=] - See cache_key in PAM for explanation. + # [quota_template=